glimmervoid 0.44.0 → 0.44.1
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/dist/bin/glimmervoid.js +8 -8
- package/dist/chunks/{adapters-DjDtNufj.js → adapters-B2IgKmuZ.js} +1 -1
- package/dist/chunks/{adapters-CSRTLFiZ.js → adapters-BsoXEvlZ.js} +2 -2
- package/dist/chunks/{agent-api-cli-ep_5T7Hx.js → agent-api-cli-B-QxkZAQ.js} +1 -1
- package/dist/chunks/{agent-api-cli-CVgij_62.js → agent-api-cli-DIl92JjQ.js} +1 -1
- package/dist/chunks/{agent-api-core-DmPT6Hc_.js → agent-api-core-BCFplxXu.js} +1 -1
- package/dist/chunks/{config-CGRYpcBQ.js → config-Dh4e-Mkv.js} +6 -0
- package/dist/chunks/{config-store-B1u3WA5t.js → config-store-CEsetno2.js} +51 -7
- package/dist/chunks/config-store-DVwdcnub.js +1 -0
- package/dist/chunks/{contracts-Fup4hhP9.js → contracts-dj-GFptp.js} +30 -6
- package/dist/chunks/{main-DPtmg7Bn.js → main-CA3ONCUS.js} +147 -32
- package/dist/chunks/{pair-cli-BwOTWShx.js → pair-cli-CWHMbInF.js} +2 -2
- package/dist/chunks/{remote-config-DWWnz5dP.js → remote-config-CtcoO10O.js} +1 -1
- package/dist/chunks/{settings-cli-C_owm3rw.js → settings-cli-DGOkkmW-.js} +4 -4
- package/dist/chunks/{settings-readout-core-C_JzSeF7.js → settings-readout-core-BVb6tTLq.js} +1 -1
- package/dist/chunks/{ssh-sign-cli-CDjUtDKa.js → ssh-sign-cli-BdvvBKkj.js} +1 -1
- package/dist/client/assets/index-BR-wN5UF.js +177 -0
- package/dist/client/assets/{index-o9J4_Orv.css → index-QxVyoSUP.css} +1 -1
- package/dist/client/index.html +5 -4
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/config-store-D4vUBcUX.js +0 -1
- package/dist/client/assets/index-BedqDfKJ.js +0 -177
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import{_ as e,a as t,c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,v as _}from"./zod-BRLv4KqJ.js";import{n as v,r as y,t as b}from"./xterm-kR64YvZ-.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var x=g({attempt:c().int().positive(),limit:c().int().positive()}).refine(e=>e.attempt<=e.limit),S={error:l().nullable().optional(),lastRefreshedAt:c().finite().nonnegative().nullable().optional(),incident:l().nullable().optional(),nextAttemptAt:c().finite().nonnegative().nullable().optional(),retry:x.nullable().optional(),isRefreshing:t().optional(),refreshNotice:l().nullable().optional()},ee=f({lastRefreshedAt:c().finite().nonnegative().nullable(),error:l().nullable()}),te=g({lane:u([`my-prs`,`team-review`,`issues`])}),ne=g({ok:t(),error:l().optional(),freshness:ee.optional()}),re=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,C=/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/,ie=/^[A-Za-z0-9_=-]+$/;function ae(e){let t=e.split(`/`);return t.length!==2||!t.every(e=>re.test(e))?null:[t[0],t[1]]}var oe=7,se=/^[0-9a-f]{7,40}$/i,ce=/^[0-9a-f]{40}$/;function le(e,{chars:t=oe,validate:n=!1}={}){if(typeof e!=`string`||!e)return``;if(!n)return e.slice(0,t);let r=e.trim();return se.test(r)?r.slice(0,t).toLowerCase():``}var w=l().regex(ce),T=l().regex(/^[^/]+\/[^/]+$/);g({number:c().int().positive(),title:l(),body:l(),url:l(),author:g({login:l(),is_bot:t().optional()}).passthrough(),state:u([`OPEN`,`CLOSED`,`MERGED`]).optional(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),baseRefOid:w,headRefName:l().optional(),headRefOid:w,additions:c().int().nonnegative(),deletions:c().int().nonnegative(),files:p(g({path:l(),additions:c().int().nonnegative(),deletions:c().int().nonnegative()}).passthrough())}).passthrough();var ue=g({path:l(),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l()}),E=Object.freeze({STAMP:`APPROVE`,COMMENT:`APPROVE WITH NITS`,NEEDS_YOU:`REQUEST CHANGES`}),D=u([`APPROVE`,`APPROVE WITH NITS`,`REQUEST CHANGES`,`BLOCKED`]),de=r(e=>typeof e==`string`&&Object.hasOwn(E,e)?E[e]:e,D),fe=u([`CRITICAL`,`HIGH`,`MEDIUM`,`LOW`]),pe=ue.extend({severity:fe.optional()}),me=g({path:l().min(1),line:c().int().positive().nullable(),side:u([`RIGHT`,`LEFT`]),severity:fe,reviewer:l().min(1),disposition:u([`ACTIONABLE`,`NIT`,`AMBIGUOUS`]).nullable(),body:l().min(1)}),he=g({text:l().min(1),paths:p(l()),isFallback:t().default(!1)}),ge=g({goal:l().default(``),change:l(),checked:p(l()),gaps:p(l()),handChecks:p(he).default([])});g({verdict:D,head:w,summary:l(),assessment:ge.nullable(),findings:p(me)}),g({body:l(),commit_id:w,comments:p(g({path:l().min(1),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l().min(1)}))});var _e=u([`APPROVE`,`COMMENT`]),ve=u([`APPROVED`,`CHANGES_REQUESTED`,`COMMENTED`]),ye=new Set([`APPROVED`,`CHANGES_REQUESTED`]),be=u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]),xe=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]),Se={requestSource:u([`direct`,`team`]).default(`team`),isDraft:t().optional(),checksState:xe.nullable().optional()},Ce=g({login:l().min(1),state:ve,commit:w.nullable(),isViewer:t(),submittedAt:l().nullable().optional()});function we(e,t){return e||(t.includes(`CHANGES_REQUESTED`)?`CHANGES_REQUESTED`:t.includes(`APPROVED`)?`APPROVED`:`REVIEW_REQUIRED`)}function Te(e){return e.reviewDecision!==`APPROVED`||e.requeuedHead!==void 0&&e.requeuedHead===(e.liveHead??e.reviewedHead)?!1:(e.githubReviews??[]).some(e=>e.isViewer&&e.state===`APPROVED`)}var Ee=g({head:w,base:w.optional(),verdict:D,summary:l(),body:l(),comments:p(ue),wasPosted:t()}),De=Ee.pick({head:!0,verdict:!0,summary:!0,wasPosted:!0}).extend({comments:p(pe)}),Oe=l().min(1).max(256).regex(ie),ke=g({addressed:t(),reason:l().trim().min(1).max(4e3)}).strict(),Ae=g({id:Oe,path:l(),line:c().int().positive().nullable(),isResolved:t(),viewerCanResolve:t(),comments:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(g({body:l(),author:g({login:l()}).nullable(),viewerDidAuthor:t(),createdAt:l().datetime(),url:l().url(),originalCommit:g({oid:w}).nullable()}))})});g({data:g({node:g({comments:Ae.shape.comments}).nullable()}).nullable()}),g({pullRequest:g({reviewThreads:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(Ae)})}).nullable()}),g({data:g({resolveReviewThread:g({thread:g({id:Oe,isResolved:m(!0)})})}).nullable(),errors:p(e()).optional()});var je=g({id:Oe,path:l(),line:c().int().positive().nullable(),isResolved:t(),viewerCanResolve:t(),isNit:t(),url:l().url(),viewerComment:l().max(1500).optional(),lastReplyBody:l().max(1500).optional(),viewerCommentTruncated:t().optional(),lastReplyTruncated:t().optional(),lastReplyAuthor:l(),lastReplyAt:l().datetime(),judgement:ke.extend({head:w,judgedAt:c().finite(),lastReplyAt:l().datetime()}).optional(),resolveError:l().optional(),resolveAttemptReplyAt:l().optional(),judgeAttempt:g({head:w,lastReplyAt:l(),retryAt:c().finite()}).optional(),unjudgeable:g({head:w,lastReplyAt:l(),reason:l().min(1)}).optional()});g({merge_base_commit:g({sha:w}),files:p(g({filename:l(),previous_filename:l().optional(),patch:l().optional()})).max(300)});var Me=g({total:c().int().nonnegative(),resolved:c().int().nonnegative()}),Ne=g({...Se,key:l(),repo:T,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),reviewedHead:w,reviewedBase:w.optional(),verdict:de,summary:l(),assessment:ge.optional(),body:l(),comments:p(pe),status:u([`ready`,`stale`,`posted`,`discarded`,`error`]),error:l().optional(),threads:p(je).optional(),viewerThreads:Me.optional(),githubReviews:p(Ce).optional(),reviewDecision:be.nullable().optional(),liveHead:w.optional(),prCreatedAt:l().optional(),reviewedAt:c().finite().optional(),postedAt:c().finite().optional(),postedEvent:_e.optional(),priorReviewedHead:w.optional(),requeuedHead:w.optional(),earlierReview:De.optional()});function Pe(e){return e.status===`posted`&&e.postedEvent===`COMMENT`}var Fe=u([`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`]);function Ie(e){return e.action===`discard`||e.head!==void 0}var Le=g({key:l().min(1),head:w.optional(),action:Fe,threadId:Oe.optional(),body:l(),comments:p(ue)}).refine(e=>e.action!==`resolve-thread`||e.threadId!==void 0,{message:`resolve-thread requires threadId`,path:[`threadId`]}).refine(Ie,{message:`only discard may omit head`,path:[`head`]}),Re=g({key:l(),ok:t(),error:l().optional(),warning:l().optional()}),ze=g({sessionId:l().min(1),workDir:l().min(1),worktreePath:l().min(1),head:w,deadlineAt:c(),remainingAwakeMs:c().nonnegative().optional(),savedAt:c()}),Be=g({...Se,reviewDecision:be.nullable().optional(),key:l(),repo:T,number:c().int().positive(),title:l(),url:l(),author:l(),prCreatedAt:l().optional()}),Ve=g({draft:Ne.nullable(),reviewedHead:w.nullable(),inFlight:t(),skipReason:l().nullable(),handReview:Be.optional(),reviewAttempts:c().int().nonnegative().default(0),resumable:ze.nullable().optional(),reviewedAt:c().optional(),threads:p(je).optional(),viewerThreads:Me.optional(),autoResolvedThreadIds:p(Oe).optional(),githubReviews:p(Ce).optional(),reviewDecision:be.nullable().optional(),liveHead:w.optional(),requeuedHead:w.optional(),priorReview:Ee.optional(),discardedReviewHead:w.optional(),requestedAt:c().finite().optional(),updatedAt:c().finite()});i(l(),Ve);var He=u([`preparing`,`checkout`,`reviewing`]),Ue=g({at:c().finite(),tool:l(),detail:l()}),We=g({...Se,reviewDecision:be.nullable().optional(),key:l(),repo:T,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),head:w,phase:He,startedAt:c().finite(),deadlineAt:c().finite().nullable(),toolCalls:c().int().nonnegative(),recentSteps:p(Ue),prCreatedAt:l().optional(),priorReviewedHead:w.optional()}),Ge=g({...S,type:m(`team-review-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),drafts:p(Ne),inFlight:p(We),queued:p(Be).default([]),handReview:p(Be).default([]),team:g({org:l(),slug:l(),name:l(),avatarUrl:l()}).nullable().optional()}).passthrough(),Ke=u([`merged`,`draft`,`conflicts`,`behind`,`checks-failing`,`changes-requested`,`unresolved-threads`,`checks-pending`,`needs-approval`,`ready`,`unknown`]),qe=c().int().nonnegative(),Je=l().regex(C),Ye=l().regex(/^[1-9][0-9]*$/),Xe=o([Je,`#`,Ye]),Ze=o([Xe,`@`,w]),Qe=l().refine(e=>Xe.safeParse(e).success),$e=l().refine(e=>Ze.safeParse(e).success);d(`outcome`,[f({outcome:m(`pushed`)}),f({outcome:u([`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1)})]);var et=f({outcome:u([`pushed`,`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1).optional(),at:c().finite()}),tt=et.extend({key:Qe,headRefOid:w,baseRefOid:w,consecutiveAttempts:c().int().min(1).optional()});f({keepMergeableKeys:p(Qe),keepMergeableAttemptKeys:p($e),keepMergeableAttempts:p(tt).default([]),mergeQueueKeys:p(Qe).default([]),keepMergeablePushedHeadKeys:p($e).default([])});var nt=f({repo:Je,number:c().int().positive(),url:_(),source:u([`hook`,`sha`,`manual`]),linkedAt:c().finite()}),rt=f({links:p(nt).max(20),unlinkedKeys:p(Qe).default([])}),it=g({repo:Je,number:c().int().positive(),keepMergeable:t()}),at=g({key:l(),ok:t(),error:l().optional()}),ot=at,st=g({repo:Je,number:c().int().positive(),mergeWhenReady:t()}),ct=at,lt=u([`MERGE`,`SQUASH`,`REBASE`]),ut=g({path:l(),line:c().int().positive().nullable(),isOutdated:t(),url:_(),author:l().nullable(),excerpt:l(),commentCount:c().int().positive(),lastAuthor:l().nullable(),lastActivityAt:l()}),dt=g({reviewer:l().nullable(),state:l(),submittedAt:l().nullable()}),ft=g({outcome:u([`rebased`,`failed`]),at:c().finite(),message:l()}),pt=g({at:c().finite(),message:l()}),O=g({key:l(),repo:Je,number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:w,headRefName:l().min(1),isCrossRepository:t(),headRefOid:w,isInMergeQueue:t(),mergeMethod:lt,mergeable:u([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:l(),reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),checks:g({state:u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),failing:p(l()),pendingCount:qe}),unresolvedThreads:qe,threads:p(ut),behindBy:qe.nullable(),reviewRequests:p(g({name:l(),isTeam:t(),avatarUrl:l().nullable()})),approvals:qe,reviews:p(dt),stage:Ke,autoRebase:ft.optional(),keepMergeable:t().optional(),keepMergeableAttempt:et.optional(),isKeepMergeableFixInFlight:t().optional(),mergeQueuePosition:c().int().positive().nullable().optional(),isMergeQueueHeldForRepairPush:t().optional(),mergeQueueFailure:pt.optional()}).refine(e=>e.key===`${e.repo}#${e.number}`),mt=f({key:Qe,autoRebase:O.shape.autoRebase,keepMergeable:O.shape.keepMergeable,keepMergeableAttempt:O.shape.keepMergeableAttempt,isKeepMergeableFixInFlight:O.shape.isKeepMergeableFixInFlight,mergeQueuePosition:O.shape.mergeQueuePosition,isMergeQueueHeldForRepairPush:O.shape.isMergeQueueHeldForRepairPush,mergeQueueFailure:O.shape.mergeQueueFailure}),ht=g({...S,type:m(`my-prs-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),viewer:l().nullable(),prs:p(mt),truncatedNote:l().nullable().optional(),isKeepMergeableEnabled:t().optional(),isMergeQueueEnabled:t().optional()}).passthrough();ht.extend({prs:p(O)});var gt=g({repo:Je,number:c().int().positive(),headRefOid:w}),_t=u([`merged`,`queued`,`auto-merge`,`unconfirmed`]),vt=g({key:l(),ok:t(),kind:_t.optional(),error:l().optional()}),yt=g({__typename:m(`CheckRun`),name:l(),conclusion:l().nullable(),status:l(),startedAt:l().nullish(),checkSuite:g({app:g({databaseId:c().int().nullish()}).nullish(),workflowRun:g({workflow:g({databaseId:c().int().nullish()})}).nullish()}).nullish()}),bt=g({__typename:m(`StatusContext`),context:l(),state:l()}),xt=a([yt,bt]),St=g({hasNextPage:t(),endCursor:l().nullable()}),Ct=g({__typename:m(`PullRequest`),id:l().regex(ie),number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:w,headRefName:l().min(1),isCrossRepository:t(),headRefOid:w,isInMergeQueue:t(),mergeable:u([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:l(),reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),repository:g({nameWithOwner:Je,viewerDefaultMergeMethod:lt}),commits:g({nodes:p(g({commit:g({statusCheckRollup:g({id:l().regex(ie).optional(),state:u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),contexts:g({pageInfo:St.optional(),nodes:p(xt)})}).nullable()})}))}),reviewThreads:g({pageInfo:g({hasNextPage:t()}),nodes:p(g({isResolved:t()}))}),reviewRequests:g({nodes:p(g({requestedReviewer:d(`__typename`,[g({__typename:m(`User`),login:l()}),g({__typename:m(`Team`),slug:l(),avatarUrl:l().nullable(),organization:g({login:l()})}),g({__typename:u([`Bot`,`Mannequin`])})]).nullable()}))}),latestOpinionatedReviews:g({nodes:p(g({state:l()}))}),latestReviews:g({nodes:p(g({state:l(),submittedAt:l().nullable(),author:g({login:l()}).nullable()}))})}),wt=g({login:l()}).nullable();g({isResolved:t(),isOutdated:t(),path:l(),line:c().int().positive().nullable(),firstComment:g({totalCount:qe,nodes:p(g({author:wt,bodyText:l(),url:_(),createdAt:l()}))}),lastComment:g({nodes:p(g({author:wt,createdAt:l()}))})}),g({data:g({repository:g({pullRequest:g({reviewThreads:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable()}),nodes:p(e())})}).nullable()}).nullable()}),errors:p(e()).optional()}),g({data:g({node:g({contexts:g({pageInfo:St,nodes:p(e())}).nullable()}).nullable()}).nullable(),errors:p(e()).optional()}),g({data:g({repository:g({pullRequest:g({state:l(),isInMergeQueue:t(),autoMergeRequest:g({enabledAt:l().nullable()}).nullable()}).nullable()}).nullable()}),errors:p(e()).optional()}),g({data:g({open:g({issueCount:qe,nodes:p(e())}),merged:g({issueCount:qe,nodes:p(e())})}),errors:p(e()).optional()});var k=Object.freeze({min:0,exclusiveMin:!0,label:`a positive number`}),Tt=Object.freeze({min:0,label:`zero or more`}),Et=Object.freeze({min:0,max:300}),Dt=Object.freeze({min:1,max:60}),Ot=Object.freeze({min:.5,max:2}),kt=Object.freeze({flyingAnimalsMinGapSeconds:20,flyingAnimalsMaxGapSeconds:40,flyingAnimalsMinDurationSeconds:6.9,flyingAnimalsMaxDurationSeconds:11.5,flyingAnimalsScale:1,flyingAnimalsOnPhone:!0}),At=Object.freeze({min:64,max:16384}),jt=Object.freeze({min:0,max:65536}),Mt=Object.freeze({min:0,max:65535}),Nt=Object.freeze({min:0,exclusiveMin:!0,max:2147483647/1e3}),Pt=k,Ft=k,It=k,Lt=k,Rt=k,zt=Tt,Bt=k,Vt=k,Ht=k,Ut=k,Wt=k,Gt=k,Kt=k,qt=k,Jt=k,Yt=Object.freeze({min:60,max:21600,label:`between 60 and 21600`}),Xt=Object.freeze({min:1,label:`at least 1`}),Zt=Object.freeze({min:1,label:`at least 1`}),Qt=Tt,$t=Object.freeze({min:1,max:30,label:`between 1 and 30`}),en=Object.freeze({min:1,max:1440}),tn=Object.freeze({min:1,max:3650}),nn=Object.freeze({min:30,max:3650}),rn=Object.freeze({min:1,max:24}),an=k,on=Object.freeze({scanIntervalMinutes:en,retainDays:tn,warehouseRetainDays:nn,sessionBlockHours:rn}),sn=Object.freeze({min:5,max:120}),cn=Object.freeze({min:1,max:5}),ln=Object.freeze({min:1,max:50});Object.freeze({NON_NEGATIVE_NUMBER_RANGE:Tt,FLYING_ANIMALS_GAP_RANGE:Et,FLYING_ANIMALS_DURATION_RANGE:Dt,FLYING_ANIMALS_SCALE_RANGE:Ot,KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE:sn,PORT_RANGE:Mt,POSTHOG_ESCALATION_RANGE:Kt,POSTHOG_FIX_TIMEOUT_RANGE:Yt,POSTHOG_INTERVAL_RANGE:Ht,POSTHOG_INVESTIGATION_TIMEOUT_RANGE:Wt,POSTHOG_MAX_CONCURRENT_RANGE:Ut,POSTHOG_MIN_USERS_RANGE:Gt,POSTHOG_TRAFFIC_BASELINE_RANGE:$t,POSTHOG_TRAFFIC_COOLDOWN_RANGE:Qt,POSTHOG_TRAFFIC_MIN_USERS_RANGE:Zt,POSTHOG_TRAFFIC_MULTIPLIER_RANGE:Xt,REPLAY_BUFFER_KB_RANGE:At,MEMORY_RESERVE_MB_RANGE:jt,TASK_TITLE_TIMEOUT_RANGE:Nt,USAGE_BUDGET_RANGE:an,USAGE_RETAIN_DAYS_RANGE:tn,USAGE_SCAN_INTERVAL_RANGE:en,VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE:zt,VISIONS_COOLDOWN_MS_RANGE:Lt,VISIONS_DISPATCH_TIMEOUT_RANGE:Bt,VISIONS_INTENT_THREAD_TTL_MS_RANGE:Vt,VISIONS_MAX_PER_HOUR_RANGE:Rt,VISIONS_QUIET_MS_RANGE:It,WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE:ln,WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE:cn});var un=Object.freeze([`opened`,`checks-failed`,`review-requested`,`approved`,`commented`,`merged`]),dn=Object.freeze([`notify`,`spawn`,`label`,`comment`]),fn=2e4,pn=65536,mn=50,hn=/^[a-z0-9][a-z0-9-]{0,63}$/,gn=/[\x00-\x1f\x7f,]|^-/,_n=(e,t)=>{let n=`${e} must be an integer between ${t.min} and ${t.max}`;return c({error:n}).int({error:n}).min(t.min,{error:n}).max(t.max,{error:n})},vn=t({error:`workflows.enabled must be a boolean`}),yn=_n(`workflows.maxConcurrentSessions`,cn),bn=_n(`workflows.maxActionsPerPoll`,ln),xn=(e,t)=>p(t,{error:`${e} must be an array`}).min(1,{error:`${e} must list at least one entry when present`}),Sn=l({error:`a workflow label name must be a string`}).trim().min(1,{error:`a workflow label name must not be empty`}).max(mn,{error:`a workflow label name must be at most ${mn} characters`}).refine(e=>!gn.test(e),{error:`a workflow label name must not start with a dash or hold a comma or control character`}),Cn=l({error:`a workflow comment body must be a string`}).min(1,{error:`a workflow comment body must not be empty`}).max(pn,{error:`a workflow comment body must be at most ${pn} characters`}).refine(e=>e.trim().length>0,{error:`a workflow comment body must not be blank`}),wn=u(un,{error:`workflows.rules[].trigger must be one of ${un.join(`, `)}`}),Tn=d(`type`,[f({type:m(`notify`)}),f({type:m(`spawn`),promptTemplate:l({error:`a spawn action needs a promptTemplate string`}).min(1,{error:`a spawn action promptTemplate must not be empty`}).max(fn,{error:`a spawn action promptTemplate must be at most ${fn} characters`}).refine(e=>e.trim().length>0,{error:`a spawn action promptTemplate must not be blank`})}),f({type:m(`label`),name:Sn}),f({type:m(`comment`),body:Cn})],{error:`workflows.rules[].actions[].type must be one of ${dn.join(`, `)}`}),En=f({mine:t({error:`workflows.rules[].filters.mine must be a boolean`}).optional(),teamReviewRequested:t({error:`workflows.rules[].filters.teamReviewRequested must be a boolean`}).optional(),authors:xn(`workflows.rules[].filters.authors`,l({error:`workflows.rules[].filters.authors must hold GitHub logins`}).regex(re,{error:`workflows.rules[].filters.authors must hold GitHub logins`})).optional(),labels:xn(`workflows.rules[].filters.labels`,Sn).optional(),baseBranches:xn(`workflows.rules[].filters.baseBranches`,l({error:`workflows.rules[].filters.baseBranches must hold branch names`}).min(1,{error:`workflows.rules[].filters.baseBranches must hold branch names`})).optional()},{error:`workflows.rules[].filters must be an object`}),Dn=l({error:`workflows.rules[].id must be a string`}).regex(hn,{error:`workflows.rules[].id must be 1 to 64 lowercase letters, digits and dashes, starting with a letter or digit`}),On=t({error:`workflows.rules[].enabled must be a boolean`}),kn=f({id:Dn,name:l({error:`workflows.rules[].name must be a string`}).trim().min(1,{error:`workflows.rules[].name must not be empty`}).max(80,{error:`workflows.rules[].name must be at most 80 characters`}),enabled:On.default(!1),repos:xn(`workflows.rules[].repos`,Je),filters:En.default({}),trigger:wn,actions:xn(`workflows.rules[].actions`,Tn)},{error:`workflows.rules[] must be an object`}),An=f({enabled:vn.default(!0),maxConcurrentSessions:yn.default(2),maxActionsPerPoll:bn.default(20),rules:p(kn,{error:`workflows.rules must be an array`}).default([])},{error:`workflows must be an object`}).superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.rules.entries())n.has(i.id)?t.addIssue({code:`custom`,path:[`rules`,r,`id`],message:`workflows.rules[${r}].id "${i.id}" is declared more than once`}):n.add(i.id)}),jn=f({id:Dn,enabled:On},{error:`a dashboard update of workflows.rules[] carries only id and enabled`});f({enabled:vn.optional(),maxConcurrentSessions:yn.optional(),maxActionsPerPoll:bn.optional(),rules:p(jn,{error:`workflows.rules must be an array`}).optional()},{error:`a dashboard update of workflows carries only enabled, maxConcurrentSessions, maxActionsPerPoll and rule toggles`});var Mn=c().int().nonnegative(),Nn=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),Pn=Ct.extend({author:g({login:l()}).nullable(),labels:g({nodes:p(g({name:l()}))}),comments:g({totalCount:Mn})}),Fn=f({repo:Je,number:c().int().positive(),title:l(),url:_(),author:l().nullable(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),headRefName:l().min(1),headRefOid:w,labels:p(l()),commentCount:Mn,reviewRequests:p(l()),checksState:Nn,reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable()}),In=f({polledAtMs:Mn,prs:p(Fn)});f({repos:i(l().regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/),In)});var Ln=l().refine(e=>Xe.safeParse(e).success&&e===e.toLowerCase()&&Number.isSafeInteger(Number(e.slice(e.lastIndexOf(`#`)+1))));function Rn(e){return`${e.repo}#${e.number}`.toLowerCase()}g({repository:Ct.shape.repository.pick({nameWithOwner:!0}),number:Ct.shape.number,updatedAt:Ct.shape.updatedAt,headRefOid:Ct.shape.headRefOid,state:Ct.shape.state,commits:g({nodes:p(g({commit:g({statusCheckRollup:g({state:O.shape.checks.shape.state}).nullable()})}))}),reviewDecision:Ct.shape.reviewDecision,mergeable:Ct.shape.mergeable}),Ct.extend({author:Pn.shape.author.unwrap().extend({__typename:l().optional()}).nullable(),labels:Pn.shape.labels,comments:Pn.shape.comments,latestReviews:g({nodes:p(Ct.shape.latestReviews.shape.nodes.element.extend({commit:g({oid:l()}).nullable().optional()}))}),writerOpinionatedReviews:Ct.shape.latestOpinionatedReviews.optional()});var zn=f({key:Ln,id:Ct.shape.id,repo:O.shape.repo,number:O.shape.number,title:O.shape.title,url:O.shape.url,author:Fn.shape.author,isAuthorBot:t(),labels:Fn.shape.labels,commentCount:Fn.shape.commentCount,isDraft:O.shape.isDraft,state:O.shape.state,createdAt:O.shape.createdAt,mergedAt:O.shape.mergedAt,updatedAt:O.shape.updatedAt,baseRefName:O.shape.baseRefName,baseRefOid:O.shape.baseRefOid,headRefName:O.shape.headRefName,headRefOid:O.shape.headRefOid,isCrossRepository:O.shape.isCrossRepository,isInMergeQueue:O.shape.isInMergeQueue,mergeMethod:O.shape.mergeMethod,mergeable:O.shape.mergeable,mergeStateStatus:O.shape.mergeStateStatus,reviewDecision:be.nullable(),checks:O.shape.checks.strict(),rollupState:xe.nullable(),unresolvedThreads:O.shape.unresolvedThreads,threads:p(O.shape.threads.element.strict()),behindBy:O.shape.behindBy,reviewRequests:p(O.shape.reviewRequests.element.strict()),approvals:O.shape.approvals,reviews:p(O.shape.reviews.element.extend({commit:w.nullable()}).strict()),opinionatedWriterReviewStates:p(l())}).refine(e=>e.key===Rn(e)),Bn=n({type:m(`github-prs`),ts:c().finite().nonnegative(),prs:i(Ln,zn).refine(e=>Object.entries(e).every(([e,t])=>e===t.key)),freshness:ee}),Vn=new Map,Hn=new Set;function Un(e){let t=Bn.safeParse(e);if(t.success){Vn=new Map(Object.entries(t.data.prs));for(let e of Hn)e()}}function Wn(e){return Vn.get(e.toLowerCase())}function Gn(e){Hn.add(e)}function Kn(e){return e===`remote`?`remote`:`local`}function qn(e,t){return Kn(t)===`local`||e!==`shutdown`}var Jn=Object.freeze({setTimeoutFn:(e,t)=>setTimeout(e,t),clearTimeoutFn:e=>clearTimeout(e),setIntervalFn:(e,t)=>setInterval(e,t),clearIntervalFn:e=>clearInterval(e)});function Yn(e){return typeof e!=`object`||!e||!(`unref`in e)||typeof e.unref!=`function`||e.unref(),e}function Xn({mode:e,delayMs:t,run:n,setTimeoutFn:r=Jn.setTimeoutFn,clearTimeoutFn:i=Jn.clearTimeoutFn,unref:a=!0}){let o=null;function s(){o&&=(i(o),null)}function c(){e===`leading`&&o||(s(),o=r(()=>{o=null,n()},t),a&&Yn(o))}return{schedule:c,cancel:s,get isArmed(){return o!==null}}}var A=Object.freeze({DORMANT:`DORMANT`,INITIALIZING:`INITIALIZING`,STARTING:`STARTING`,RUNNING:`RUNNING`,WAITING:`WAITING`,IDLE:`IDLE`,COMPLETE:`COMPLETE`,DONE:`DONE`,FAILED:`FAILED`}),Zn=Object.freeze({[A.DORMANT]:`Dormant`,[A.INITIALIZING]:`Starting`,[A.STARTING]:`Starting`,[A.RUNNING]:`Working`,[A.WAITING]:`Needs Input`,[A.IDLE]:`Idle`,[A.COMPLETE]:`Complete`,[A.DONE]:`Exited`,[A.FAILED]:`Failed`}),Qn=Object.freeze([A.INITIALIZING,A.STARTING,A.RUNNING,A.WAITING,A.IDLE,A.COMPLETE]),$n=Object.freeze([A.DONE,A.FAILED]),er=Object.freeze([A.WAITING,A.IDLE,A.COMPLETE]);function tr(e){return`Git tracks an old Glimmervoid post-turn report in ${e===1?`1 repository`:`${e} repositories`}. Nothing reads it, so run this to stop git tracking it and commit the deletion git then shows. Glimmervoid deletes the file itself on its next start:`}var nr=Object.freeze({[A.DORMANT]:`not-started`,[A.INITIALIZING]:`starting`,[A.STARTING]:`starting`,[A.RUNNING]:`working`,[A.WAITING]:`needs-input`,[A.IDLE]:`idle`,[A.COMPLETE]:`complete`,[A.DONE]:`exited`,[A.FAILED]:`failed`}),rr=`monitoring`,ir=e=>({fill:`none`,stroke:`currentColor`,"stroke-width":e,"stroke-linecap":`round`,"stroke-linejoin":`round`}),ar={fill:`currentColor`},or=Object.freeze({"not-started":[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...ir(`1.6`),"stroke-linecap":`butt`,"stroke-dasharray":`2.6 2.1`}}],starting:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...ir(`1.8`),"stroke-opacity":`.25`}},{tag:`path`,attributes:{d:`M8 2a6 6 0 0 1 6 6`,...ir(`1.8`),class:`status-icon-spin`}}],working:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...ir(`1.4`),class:`status-icon-ping`}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...ar}}],monitoring:[{tag:`path`,attributes:{d:`M1.3 8S3.8 3.4 8 3.4 14.7 8 14.7 8 12.2 12.6 8 12.6 1.3 8 1.3 8z`,...ir(`1.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`2.2`,...ar}}],"needs-input":[{tag:`path`,attributes:{d:`M4.6 5.2a3.4 3.4 0 1 1 4.9 3.05c-1 .5-1.5 1.1-1.5 2.05v.6`,...ir(`2.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`14`,r:`1.55`,...ar}}],idle:[{tag:`rect`,attributes:{x:`3.6`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...ar}},{tag:`rect`,attributes:{x:`9.4`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...ar}}],complete:[{tag:`path`,attributes:{d:`M2.8 8.4l3.4 3.4 7-7.4`,...ir(`2.2`)}}],exited:[{tag:`rect`,attributes:{x:`3`,y:`3`,width:`10`,height:`10`,rx:`1.6`,...ar}}],failed:[{tag:`path`,attributes:{d:`M3.5 3.5l9 9M12.5 3.5l-9 9`,...ir(`2`)}}]});function sr(e,t){return!e||e.toLowerCase().endsWith(`[bot]`)?null:`https://avatars.githubusercontent.com/${encodeURIComponent(e)}?s=${t*2}`}function cr(e){return e.match(/[a-z0-9]/i)?.[0]?.toUpperCase()??`?`}function j(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function lr(e,t,n){let r=j(e,t);return r.innerHTML=n,r}function ur(e,t){for(let[n,r]of t)e.style.setProperty(n,r)}function dr({login:e,url:t,cssPx:n}){let r=j(`span`,`avatar`);r.style.width=`${n}px`,r.style.height=`${n}px`;let i=()=>j(`span`,`avatar-monogram`,cr(e)),a=t===void 0?sr(e,n):t;if(!a)return r.append(i()),r;let o=j(`img`);return o.src=a,o.width=n,o.height=n,o.loading=`lazy`,o.decoding=`async`,o.referrerPolicy=`no-referrer`,o.alt=``,o.addEventListener(`error`,()=>o.replaceWith(i()),{once:!0}),r.append(o),r}function fr(e,t){let n=j(`span`,`avatar-stack`);for(let r of e){let e=dr({login:r.login,url:r.url,cssPx:t});e.title=r.title,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,r.title);let i=j(`span`,`avatar-badge`);i.dataset.tone=r.tone,e.append(i),n.append(e)}return n}function M(e,t,n){let r=e.querySelector(t);if(!r||r.tagName.toLowerCase()!==n)throw Error(`${t} does not match a <${n}>`);return r}function N(e,t){let n=e.querySelector(t);if(!(n instanceof HTMLElement))throw Error(`${t} matches no element`);return n}function pr(e,t,n,r=t){if(!n){let n=j(`span`,e,t);return n.title=r,n}let i=j(`a`,e,t);return i.title=r,i.href=n,i.target=`_blank`,i.rel=`noopener`,i}function mr(e,t){return e===A.RUNNING&&t===!0}function hr(e,t=!1){let n=e,r=mr(e,t),i=r?`Monitoring`:Zn[n]||e;return{icon:r?rr:nr[n]??nr[A.DORMANT],label:i.toUpperCase(),isMonitoring:r}}function gr(e){if(!e)return;let t=null,n=()=>{t=null;let n=e.offsetHeight;n>0&&document.documentElement.style.setProperty(`--header-h`,`${n}px`)};new ResizeObserver(()=>{t===null&&(t=requestAnimationFrame(n))}).observe(e)}function _r(e,t,n){let r=j(`section`,`${e}-section`),i=j(`div`,`${e}-section-head`);return i.append(j(`h2`,`${e}-section-title`,t)),n&&i.append(j(`span`,`${e}-section-hint`,n)),r.append(i),r}function vr(e,t,n,r){let i=j(`span`,`${e}-stat`);return r&&(i.dataset.tone=r),i.append(j(`span`,`${e}-stat-value`,n),j(`span`,`${e}-stat-label`,t)),i}function yr(e){return Array.isArray(e?.projects)?e.projects:[]}function br(e){return!e||!!e.closest(`[hidden]`)}function xr(e){return navigator.clipboard?.writeText?navigator.clipboard.writeText(e):null}function Sr(e,t){e&&t&&e.parentElement!==t&&(e._adoptHome||={parent:e.parentElement,next:e.nextElementSibling},t.appendChild(e))}function Cr(e,t=null){let n=e?._adoptHome;n&&(delete e._adoptHome,n.parent?.isConnected?n.next&&n.next.parentElement===n.parent?n.parent.insertBefore(e,n.next):n.parent.appendChild(e):t&&t.appendChild(e))}var P=new Map;function wr(e){return e.card?.dataset.session||e.nameEl?.textContent||``}function Tr(e){return typeof e==`string`?e:String(e)}function F(e){return typeof e==`string`?P.get(e):void 0}var Er=document.getElementById(`sessions-container`),Dr=Object.freeze({layout:`desktop`,activeView:`focus`,phoneScreen:null,focusedSessionId:null,selectedSessionId:null,borrowedCardId:null}),Or=e=>e||null,kr=Object.freeze({setLayout:e=>({layout:e}),setActiveView:e=>({activeView:e}),setPhoneScreen:e=>({phoneScreen:Or(e)}),focusSession:e=>({focusedSessionId:Or(e)}),selectSession:e=>({selectedSessionId:Or(e)}),borrowCard:e=>({borrowedCardId:Or(e)})});function Ar(e){let t=Object.freeze({...Dr,...e}),n=new Set;function r(){return t}function i(e){return typeof e==`function`?(n.add(e),()=>n.delete(e)):()=>{}}function a(e){let n=[];for(let r of Object.keys(e)){if(!(r in Dr))throw Error(`ui-state: unknown key "${r}"`);Object.is(t[r],e[r])||n.push(r)}return n}function o(e,r){let i=kr[e];if(!i)throw Error(`ui-state: unknown action "${e}"`);let o=i(r),s=a(o);if(s.length===0)return t;let c=t;t=Object.freeze({...t,...o});for(let e of n)try{e(t,s,c)}catch{}return t}return{snapshot:r,subscribe:i,dispatch:o}}var jr=Ar(),Mr=()=>jr.snapshot().activeView;function Nr(){return jr.snapshot().borrowedCardId}function Pr(e,t,n,{className:r}={}){if(!e?.card||!n)return;let i=Nr();i&&i!==t&&Fr();let a=e.card;a._cardHostClass&&a._cardHostClass!==r&&a.classList.remove(a._cardHostClass),a._cardHostClass=r||``,r&&a.classList.add(r),Sr(a,n),jr.dispatch(`borrowCard`,t),e._ensureTerminalReady?.(),e._setBorrowed?.(!0),e._showPreferredFace?.()}function Fr(){let e=Nr();if(jr.dispatch(`borrowCard`,null),!e)return null;let t=P.get(e);t?._showTerminalFace?.(),t?._setBorrowed?.(!1),t?._setActiveViewer?.(!1);let n=t?.card;return n&&(n._cardHostClass&&n.classList.remove(n._cardHostClass),delete n._cardHostClass,Cr(n,Er)),e}var Ir=l().regex(C),Lr=l().regex(RegExp(`${C.source.slice(0,-1)}#[1-9][0-9]*$`)),Rr=g({number:c().int().positive(),url:l().url(),title:l(),state:u([`open`,`draft`,`merged`,`closed`])});g({issue:g({closedByPullRequestsReferences:g({nodes:p(g({number:Rr.shape.number,url:Rr.shape.url,title:Rr.shape.title,state:u([`OPEN`,`MERGED`,`CLOSED`]),isDraft:t()}).nullable()).max(5)})}).nullable()});function zr({state:e,isDraft:t}){return e===`OPEN`?t?`draft`:`open`:e===`MERGED`?`merged`:`closed`}var Br={key:l(),repo:Ir,number:c().int().positive(),title:l(),url:l().url(),labels:p(l()),assignees:p(l()),author:l(),comments:c().int().nonnegative(),createdAt:h(),updatedAt:h()},eee=u([`project`,`me`,`team`]),Vr={...Br,sources:p(eee).nonempty().refine(e=>new Set(e).size===e.length),teams:p(Ir),projectId:l().nullable(),pullRequests:p(Rr).max(5).default([])},tee=g(Vr).refine(e=>e.key===`${e.repo}#${e.number}`),nee=g({...Vr,sessionId:l().nullable().default(null)}).refine(e=>e.key===`${e.repo}#${e.number}`),Hr=g({...Br,state:u([`open`,`closed`])});g({number:Br.number,title:Br.title,html_url:Br.url,state:u([`open`,`closed`]),labels:p(a([l(),g({name:l()})])),assignees:p(g({login:l()})),user:g({login:l()}).nullable(),comments:Br.comments,created_at:Br.createdAt,updated_at:Br.updatedAt,repository_url:l().url().optional(),pull_request:e().optional()}),g({items:p(e()),total_count:c().int().nonnegative(),incomplete_results:t()}),g({ok:t(),items:p(Hr),isComplete:t(),error:l()}),g({issues:p(tee),lastSyncAt:c().finite().nonnegative().nullable(),perRepoSync:i(Ir,g({lastSyncAt:c().finite().nonnegative().nullable(),ticks:c().int().nonnegative(),needsFullReconcile:t()})),sessionLinks:i(Lr,l()).default({}),pullRequestsFetchedAt:i(Lr,h()).default({})});var Ur=g({type:m(`issues-status`),ts:c().finite(),configured:t(),reason:l().nullable(),lastSyncAt:c().finite().nonnegative().nullable(),issues:p(nee),...S}).passthrough(),Wr=2e4,Gr=4e3,Kr=524288,qr=1e4,Jr=`ExitPlanMode`,Yr=4096,Xr=/^ {0,3}(#{1,6})[ \t]+(.*)$/;function Zr(e){let t=e.trimEnd(),n=t.length;for(;n>0&&t[n-1]===`#`;)n--;if(n===t.length||n===0)return t;let r=t[n-1];return r!==` `&&r!==` `?t:t.slice(0,n).trimEnd()}function Qr(e,{overlongLine:t}){if(t===`reject`&&e.length>4096)return null;let n=Xr.exec(e.slice(0,Yr));return n?{level:n[1].length,text:Zr(n[2])}:null}var $r=g({plan:l().min(1),planFilePath:l().min(1),agent_id:l().min(1).optional(),agent_type:l().min(1).optional()}).passthrough();g({tool_name:m(Jr),tool_input:$r,agent_id:l().min(1).optional(),agent_type:l().min(1).optional()}).passthrough(),g({plan:l(),planFilePath:l(),agentId:l().nullable(),agentType:l().nullable()}).extend({sessionId:l().min(1),revision:c().int().positive(),receivedAt:c().finite()});var ei=Object.freeze([`open`,`released`,`decided`,`closed`]),ti=u(ei),ree=Object.freeze([`approve`,`approve-accept-edits`,`revise`,`terminal`]),ni=u(ree),iee=g({heading:l().max(Gr).nullable(),comment:l().min(1).max(Gr)}),ri=g({id:l().min(1),agentId:l().nullable(),revision:c().int().positive(),decision:ni,feedback:l().max(Wr).optional(),comments:p(iee).max(40).optional(),plan:l().min(1).max(Kr).optional()}),ii=g({revision:c().int().positive(),receivedAt:c().finite(),chars:c().int().nonnegative(),title:l()}),ai=g({revision:c().int().positive(),since:c().finite()}),oi=g({agentId:l().nullable(),agentType:l().nullable(),revisions:p(ii),state:ti,openRevision:ai.nullable(),approvedRevision:c().int().positive().nullable(),lastDecision:ni.nullable()});g({reviews:p(oi)});var si=g({agentId:l().nullable(),revision:c().int().nonnegative(),plan:l(),planFilePath:l(),receivedAt:c().finite()}),ci=g({id:l(),agentId:l().nullable(),agentType:l().nullable(),revision:c().int().positive(),receivedAt:c().finite(),state:ti,lastDecision:ni.nullable(),approvedRevision:c().int().positive().nullable(),chars:c().int().nonnegative(),title:l(),hasPlan:t()}),li=g({id:l(),agentId:l().nullable(),planFilePath:l(),changedAt:c().finite()}),ui=g({id:l(),reviews:p(oi),body:si.nullable()});Object.freeze([`file`,`subsystem`,`co-change`,`hotspot`,`blast`,`untested`,`collision`,`link`]);var di=l().min(1),fi=l().min(1),pi=c().int().nonnegative(),mi=p(fi).max(20),hi=u([`added`,`modified`,`deleted`,`renamed`,`untracked`]),gi=f({factId:di,path:fi,previousPath:fi.optional(),status:hi,isCommitted:t()}),_i=f({factId:di,agentsPath:fi,title:l(),paths:p(fi).min(1)}),vi=f({factId:di,path:fi,partner:fi,support:pi,confidence:c().min(0).max(1)}),yi=f({factId:di,path:fi,commitCount:pi,fixCommitCount:pi}),bi=f({factId:di,path:fi,directDependents:mi,directDependentCount:pi,transitiveDependentCount:pi,dependentTests:mi,dependentTestCount:pi}),xi=f({factId:di,path:fi}),Si=f({factId:di,path:fi,otherSessionId:l().min(1),otherSessionName:l()}),Ci=f({factId:di,providerRepo:l().min(1),packageName:l().min(1),packageDir:l(),consumerManifest:fi,versionSpec:l(),isLocalLink:t(),providerChangedPathCount:pi,importers:mi,importerCount:pi,changedImporterCount:pi}),wi=f({name:l().min(1),root:l().min(1),sessionPathPrefix:l(),base:l().nullable(),files:p(gi),subsystems:p(_i),coChangeGaps:p(vi),hotspots:p(yi),blastRadius:p(bi),untestedFiles:p(xi),collisions:p(Si),links:p(Ci),error:l().nullable()}),Ti=f({sessionId:l().min(1),sig:l().nullable(),generatedAt:c().finite(),repos:p(wi),error:l().min(1).optional()}),Ei=u([`decision`,`retraction`,`conjecture`,`resolution`,`dismissal`,`defect`,`experiment`,`close`,`unable`,`escalation`,`acknowledgement`,`enactment`]),Di={id:l().min(1),at:h(),session:l(),agent:l(),commit:l().nullable(),dirty:t(),binding:l()},Oi={of:l().min(1),because:l()},ki=n({id:l(),text:l()}),Ai=d(`kind`,[n({...Di,kind:m(`decision`),chose:l(),over:p(l()),because:l()}),n({...Di,kind:m(`retraction`),...Oi}),n({...Di,kind:m(`conjecture`),observation:l(),couldBe:p(l()),discriminatedBy:l()}),n({...Di,kind:m(`resolution`),...Oi,as:l().optional()}),n({...Di,kind:m(`dismissal`),...Oi}),n({...Di,kind:m(`defect`),what:l(),evidence:l(),files:p(l())}),n({...Di,kind:m(`experiment`),expectation:l(),context:p(l()),actions:p(ki),criteria:p(ki)}),n({...Di,kind:m(`close`),of:l(),outcome:u([`success`,`failure`,`inconclusive`]),results:i(l(),e())}),n({...Di,kind:m(`unable`),what:l(),because:l()}),n({...Di,kind:m(`escalation`),what:l(),because:l()}),n({...Di,kind:m(`acknowledgement`),...Oi}),n({...Di,kind:m(`enactment`),practice:l(),results:i(l(),e())})]),ji=a([Ai,g({id:l().min(1),kind:l().min(1).refine(e=>!Ei.safeParse(e).success)})]);n({branch:l().nullable(),escalations:p(e()),records:p(ji),citedBy:i(l(),p(e())),damaged:p(e())});var Mi=f({id:l().min(1),at:h().nullable(),kind:l().min(1),text:l().max(280),detail:l().max(280).nullable(),supersedes:l().nullable()}),Ni=d(`ok`,[f({ok:m(!0),latest:Mi.nullable()}),f({ok:m(!1),reason:l().min(1).max(200)})]),Pi=f({journal:Ni,updatedAt:c().finite()}),Fi=/^[a-zA-Z0-9_\-. ()]{1,64}$/,Ii=`Session name may only contain letters, numbers, spaces, dashes, dots, underscores, and parentheses (max 64 chars)`,Li=/[\x00-\x1f\x7f-\x9f]/,Ri=l().refine(e=>!Li.test(e)).trim().max(120);g({title:l().nullable(),name:l().nullable().optional()}).strict();var zi=u(A),Bi=u([`finished`,`failed`]),Vi=g({at:c().finite().nullable(),kind:l(),reason:l().nullable()}).passthrough(),Hi=4e3,Ui=1e3,Wi=2e3,Gi=g({question:l().min(1).max(Ui),header:l().max(100).default(``),options:p(g({label:l().min(1).max(200),description:l().max(Ui).default(``)})).min(1).max(8),multiSelect:t().default(!1)}),Ki=g({requestId:a([l().min(1).max(128),c().int()]),kind:u([`command`,`fileChange`,`permissions`,`tool`,`question`]),summary:l().max(Hi),isSummaryTruncated:t(),toolName:l().max(200).optional(),questions:p(Gi).min(1).max(4).optional(),alwaysAllowSummary:l().max(Hi).optional()}),qi=i(l().max(Ui),l().max(Wi)),Ji=u([`accept`,`acceptForSession`,`decline`]),Yi=80,Xi=Object.freeze({notInstalled:`not installed`,unsupportedVersion:`unsupported version`,codexHooksUntrusted:`Codex hooks need trust in /hooks`}),Zi=d(`active`,[g({active:m(!0)}).strict(),g({active:m(!1),reason:l().min(1).max(Yi),version:l().optional()}).strict()]),Qi=g({id:l(),name:l(),taskTitle:Ri.nullable().default(null),taskTitleIsCustom:t().default(!1),path:l(),agent:l(),state:zi,stateSince:c(),dangerouslySkipPermissions:t(),saneYolo:t().default(!1),ephemeral:t(),ownerId:l().nullable().optional(),isWorktree:t(),isWorkspace:t().default(!1),remoteWorkspace:l().nullable().default(null),isGuarded:t().default(!1),isGuardrailsReleased:t().default(!1),resumeSessionId:l().nullable(),activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),isCompacting:t().default(!1),isWaitingForMemory:t().default(!1),pendingWakeup:Vi.nullable(),pendingPromptKind:l().nullable(),conversationApproval:Ki.nullable().default(null),hasConversationBridge:t().default(!1),isConversationViewOn:t().default(!1),hasPlan:t().default(!1),mergeStatus:l().nullable(),mergeReason:l().nullable(),worktreeNotice:l().nullable(),failureReason:l().nullable().optional(),unseenOutcome:Bi.nullable().default(null),effectiveBase:l().nullable(),linkedPrs:p(nt).default([]),coherenceHooks:Zi.nullable().default(null),auditLog:p(e())}).passthrough();g({namespace:m(`git`,{error:`namespace must be git`}),publicKey:l({error:`publicKey must be a string`}).min(1,{error:`publicKey must not be empty`}).max(16384,{error:`publicKey must be at most 16384 characters`}),payload:s({error:`payload must be base64`})}).strict(),a([g({ok:m(!0),signature:l()}).strict(),g({ok:m(!1),error:l()}).strict()]);var $i=[`push`,`spawn`,`send`,`read`,`close`,`attention`,`board`,`edit`,`review`,`reviews`,`prs`,`link-pr`,`settings`];[...$i],g({prompt:l({error:`prompt must be a string`}).min(1,{error:`prompt must not be empty`}).max(2e4,{error:`prompt must be at most 20000 characters`}).refine(e=>!e.trimStart().startsWith(`-`),{message:`prompt must not start with a dash, which the agent CLI would read as an option`}),name:l({error:`name must be a string`}).min(1,{error:`name must not be empty`}).max(200,{error:`name must be at most 200 characters`}).optional(),agent:l({error:`agent must be a string`}).min(1,{error:`agent must not be empty`}).max(40,{error:`agent must be at most 40 characters`}).optional()}).strict();var ea=l({error:`the session must be a string`}).min(1,{error:`the session must not be empty`}).max(300,{error:`the session must be at most 300 characters`});g({words:p(l({error:`each word must be a string`}).max(2e4,{error:`each word must be at most 20000 characters`}),{error:`words must be a list`}).min(1,{error:`send needs text`}).max(5e3,{error:`send takes at most 5000 words`})}).strict(),g({child:ea.optional()}).strict(),g({child:ea,discard:t().optional()}).strict(),a([g({child:ea,answers:i(l(),l().min(1))}).strict(),g({child:ea,toOperator:m(!0)}).strict()]);var ta=g({from:u([`parent`,`child`,`glimmervoid`]),at:c().finite(),text:l()}).strict();g({ok:m(!0),channels:p(g({sessionId:l(),name:l(),entries:p(ta),dropped:c().int().nonnegative()}).strict())}).strict(),g({note:l({error:`note must be a string`}).min(1,{error:`note must not be empty`}).max(500,{error:`note must be at most 500 characters`})}).strict(),a([g({ok:m(!0),pending:t()}).strict(),g({ok:m(!1),error:l()}).strict()]),g({id:Qi.shape.id,name:Qi.shape.name,agent:Qi.shape.agent,state:Qi.shape.state,ephemeral:Qi.shape.ephemeral}).strict(),g({pr:l({error:`pr must be a string`}).min(1,{error:`pr must not be empty`}).max(300,{error:`pr must be at most 300 characters`})}).strict(),g({command:u([`list`,`get`],{error:`command must be list or get`}),path:l({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(200,{error:`path must be at most 200 characters`}).optional()}).strict(),a([g({ok:m(!0),text:l(),readout:e()}).strict(),g({ok:m(!1),error:l()}).strict()]);var na=Be.pick({key:!0,title:!0,url:!0,author:!0});g({ok:m(!0),configured:t(),reason:l().nullable(),reviewing:p(na.extend({phase:We.shape.phase})),queued:p(na),drafts:p(na.extend({status:Ne.shape.status,verdict:l(),summary:Ne.shape.summary,comments:c().int().nonnegative(),isOutOfDate:t()}))}).strict(),g({ok:m(!0),configured:t(),prs:p(g({key:O.shape.key,title:O.shape.title,url:O.shape.url,state:O.shape.state,isDraft:O.shape.isDraft,stage:O.shape.stage,reviewDecision:O.shape.reviewDecision,approvals:O.shape.approvals,unresolvedThreads:O.shape.unresolvedThreads,behindBy:O.shape.behindBy,mergeable:O.shape.mergeable,isInMergeQueue:O.shape.isInMergeQueue,checks:O.shape.checks.pick({state:!0,failing:!0})}).strict())}).strict();var ra=4096;g({path:l({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(ra,{error:`path must be at most ${ra} characters`})}).strict();var ia=g({path:l(),name:l(),surfacedAt:c().finite()}).strict();g({commands:p(g({name:u($i),answers:t(),reason:l().optional()}).strict()),guarded:t(),boundary:u([`os-sandbox`,`workspace`,`none`]),environment:g({name:l(),workspace:l(),state:l()}).strict().nullable(),deadEnds:p(g({blocked:l(),route:l()}).strict())}).strict().extend({ok:m(!0)}).strict();var aa=4e3,oa=g({ts:c().finite(),uuid:l().nullable(),parentUuid:l().nullable(),vendorSessionId:l().min(1),agentId:l().min(1).optional(),agentType:l().min(1).optional(),transcriptOffset:c().int().nonnegative().optional(),truncated:t().optional()}),sa=d(`kind`,[oa.extend({kind:m(`prompt`),text:l()}),oa.extend({kind:m(`expansion`),text:l(),toolUseId:l().min(1).optional()}),oa.extend({kind:m(`thinking`),text:l()}),oa.extend({kind:m(`assistant`),text:l()}),oa.extend({kind:m(`tool_call`),toolUseId:l().min(1),name:l().min(1),input:e()}),oa.extend({kind:m(`tool_result`),toolUseId:l().min(1),content:l(),isError:t(),truncated:t()}),oa.extend({kind:m(`session`),vendor:l().min(1),transcriptPath:l().min(1),reason:l().min(1).optional()}),oa.extend({kind:m(`notice`),text:l().max(aa)}),oa.extend({kind:m(`raw`),line:l().max(aa)})]);g({transcriptPath:l().min(1),vendorSessionId:l().min(1),offset:c().int().nonnegative(),ingestedSubagentPaths:p(l().min(1)),offsetByTranscriptPath:i(l().min(1),c().int().nonnegative()).default({}),subagentOffsetByPath:i(l().min(1),c().int().nonnegative()).default({})});var ca=l().max(16384),la=p(ca).max(4096),ua=g({model:ca.nullable(),mcpServers:la,plugins:p(g({name:ca,skills:la,agents:la})).max(4096),skills:la,agents:la,hookEvents:p(g({event:ca,runCount:c().int().nonnegative()})).max(4096),hookCommands:p(l().max(65536)).max(4096)}),da=u([`release`,`main`]),fa=u([`idle`,`running`,`staged`,`succeeded`,`failed`,`discarded`,`interrupted`]),pa=u([`fetch`,`stage`,`install`,`link-deps`,`build`]),ma=u([`pending`,`running`,`succeeded`,`failed`]),ha=g({id:pa,status:ma,startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),outputTail:p(l())}).strict(),ga=g({state:fa,fromSha:l().nullable(),toSha:l().nullable(),toVersion:l().nullable(),channel:da,steps:p(ha),activeStep:pa.nullable(),reason:l().nullable(),startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),failedAtHandOff:t().optional()}).strict(),_a=ga.pick({state:!0,activeStep:!0,reason:!0,startedAt:!0,finishedAt:!0}),va=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,ya=/^[A-Za-z_][A-Za-z0-9_]*$/,ba=l().regex(/^[^/\s]+\/[^/\s]+$/),xa=c().finite(),Sa=l().min(1),Ca=Object.freeze([`CLAUDE_CODE_OAUTH_TOKEN`]),I=l().regex(va);function wa(e){return new Set(e.map(e=>e.id)).size===e.length}var Ta=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-merged-prs`),repo:ba,minBodies:c().int().min(1),limit:c().int().min(1).max(500)})]),Ea=d(`kind`,[f({kind:m(`none`)}),f({kind:m(`pr-checkout`)})]),Da=u([`review-findings`,`json`]),Oa=f({promptTemplate:Sa,output:Da,timeoutSeconds:c().int().min(30).max(14400)}),ka=f({id:I,env:i(l().regex(ya),l()).refine(e=>Ca.every(t=>!Object.hasOwn(e,t)),{message:`arm env must not set ${Ca.join(`, `)}; Glimmervoid injects it per cell`}).optional(),extraArgs:p(l()).optional(),setup:f({command:p(Sa).min(1)}).optional()}),Aa=d(`kind`,[f({kind:m(`llm-judge-match`),model:Sa})]);f({id:I,title:Sa,caseSource:Ta,workspace:Ea,subject:Oa,arms:p(ka).min(2).refine(wa,{message:`arm ids must be unique`}),baselineArm:I,trials:c().int().min(1).max(20),scorer:Aa}).refine(e=>e.arms.some(t=>t.id===e.baselineArm),{message:`baselineArm must name one of the arms`,path:[`baselineArm`]});var ja=f({id:I,text:Sa,tags:p(I),path:Sa.optional(),line:c().int().positive().optional()}),Ma=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-pr`),repo:ba,number:c().int().positive(),url:Sa,minedAt:xa})]);f({id:I,input:i(l(),e()),references:p(ja).min(1).refine(wa,{message:`reference ids must be unique`}),source:Ma}),g({repo:ba,number:c().int().positive(),reviewedSha:w,baseSha:w,changedFiles:p(Sa)});var Na=u([`found`,`partial`,`missed`]),Pa=f({referenceId:I,verdict:Na,findingIndexes:p(c().int().nonnegative())}),Fa=u([`scored`,`invalid`,`error`]),Ia=f({caseId:I,armId:I,trial:c().int().min(1),status:Fa,startedAt:xa,finishedAt:xa,degradedReasons:p(Sa),findingCount:c().int().nonnegative(),judgements:p(Pa),costUsd:c().finite().nonnegative().nullable(),error:Sa.nullable()}),La=u([`running`,`completed`,`interrupted`,`failed`]);f({id:I,suiteId:I,status:La,startedAt:xa,finishedAt:xa.nullable(),error:Sa.nullable(),cells:p(Ia)});var Ra=c().min(0).max(1).nullable(),za=f({trials:c().int().nonnegative(),recall:Ra,recallByTag:i(I,Ra),degraded:c().int().nonnegative(),invalid:c().int().nonnegative(),costUsd:c().finite().nonnegative().nullable()}),Ba=f({caseId:I,arms:i(I,za),deltaVsBaseline:i(I,c().min(-1).max(1).nullable())}),Va=f({runId:I,suiteId:I,status:La,baselineArm:I,armIds:p(I),rows:p(Ba),totals:i(I,za)}),Ha=u([`mine`,`run`,`cancel`]),Ua=g({suiteId:I,action:Ha}),Wa=g({suiteId:I,action:Ha,ok:t(),error:l().optional(),runId:I.optional()}),Ga=u([`setup`,`preflight`,`workspace`,`subject`,`judge`]),Ka=g({suiteId:I,runId:I,caseId:I.nullable(),armId:I,trial:c().int().min(1),phase:Ga,cellIndex:c().int().nonnegative(),cellCount:c().int().positive(),startedAt:xa}),qa=g({id:I,title:l(),error:l().nullable(),caseCount:c().int().nonnegative(),candidateCount:c().int().nonnegative(),armIds:p(I),baselineArm:I.nullable(),latestReport:Va.nullable()}),Ja=g({type:m(`benchmark-status`),ts:xa,configured:t(),reason:l().nullable(),suites:p(qa),inFlight:Ka.nullable()}).passthrough(),Ya=g({__typename:l(),login:l()}).nullable();g({number:c().int().positive(),title:l(),url:Sa,mergedAt:l().nullable(),reviewThreads:g({totalCount:c().int().nonnegative()}),reviews:g({totalCount:c().int().nonnegative()})});var Xa=g({path:l(),line:c().int().positive().nullable(),originalLine:c().int().positive().nullable(),comments:g({nodes:p(g({databaseId:c().int().positive(),author:Ya,body:l(),createdAt:l(),originalCommit:g({oid:w}).nullable()}))})}),Za=g({databaseId:c().int().positive(),author:Ya,body:l(),submittedAt:l().nullable(),commit:g({oid:w}).nullable()}),Qa=d(`__typename`,[g({__typename:m(`BaseRefChangedEvent`),createdAt:l()}),g({__typename:m(`BaseRefForcePushedEvent`),createdAt:l(),beforeCommit:g({oid:w}).nullable()})]);g({author:Ya,baseRefOid:w,reviewThreads:g({pageInfo:g({hasNextPage:t()}),nodes:p(Xa)}),reviews:g({pageInfo:g({hasNextPage:t()}),nodes:p(Za)}),timelineItems:g({pageInfo:g({hasNextPage:t()}),nodes:p(Qa)})}),g({mergeBaseSha:w,changedFiles:p(Sa),isFileListComplete:t()});var L=l().nullable().optional(),R=l(),$a=g({path:l(),reason:l()}).strict(),eo=rt.shape.unlinkedKeys.unwrap().element,to=/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/([0-9]+)(?:[/?#].*)?$/i;function no(e){let t=e.trim(),n=to.exec(t),r=n?`${n[1]}#${n[2]}`:t,i=eo.safeParse(r);return i.success?i.data:null}function z(e,t){return n({type:m(e),...t})}function ro(e={}){return n(e)}var B=l().nullable(),V=c().finite(),io=V.optional(),ao=B.optional(),oo=ro(),so=p(e()),co=c().int().positive(),lo=l().min(1).max(ra),uo=p(a([ro({at:V,tool:l(),detail:l()}),ro({at:V,note:l()})]));g({id:l(),label:l(),command:l(),args:p(l()),resolvable:t().nullable()}).strict();var aee=g({name:l(),template:l(),parameters:i(l(),l()),hourlyCostUsd:c().nullable(),idleStopMinutes:c()}),oee=p(aee).nullable(),fo=u([`claude-code`,`codex`]),see=g({agent:fo,state:u([`signed-in`,`signed-out`,`connecting`,`failed`]),source:u([`host`,`glimmervoid`]).nullable(),verificationUrl:l().nullable(),userCode:l().nullable(),needsPastedCode:t(),reason:l().nullable()}).strict(),po=p(see),mo=g({setupWarning:B,lastFailure:g({message:l(),failedAt:V}).nullable()}),ho=g({id:R,session:l(),taskTitle:Ri.nullable().optional(),taskTitleIsCustom:t().optional(),path:l(),agent:l(),state:zi,stateSince:V,skipPerms:t(),saneYolo:t(),worktree:t(),workspace:t().optional(),remoteWorkspace:l().optional(),guarded:t().optional(),guardrailsReleased:t().optional(),resumeSessionId:B,ephemeral:t().optional(),ownerId:R.optional(),linkedPrs:p(nt).optional()}),go=4096,cee=go+2*(Kr+Wr+80*Gr),lee=g({reason:l(),message:l()}),uee=u([`npm-global`,`npx`,`clone`,`unknown`]),_o={updateAvailable:t(),current:B,latest:B,currentSha:B,latestSha:B,releaseUrl:B,command:l(),flavor:uee,platform:l(),installedBranch:B,upstream:B,isTreeClean:t().nullable(),lastCheckAt:V,channel:da,behindCount:c().int().nonnegative().nullable(),reason:B,deprecation:B,journalSummary:_a.nullable(),applyRefusal:lee.nullable()};g(_o);var vo=8192,yo=g({name:l().max(128),stack:l().max(vo)}).strict(),bo=Object.freeze([`view_shown`,`operator_action`,`onboarding_step`]);Object.freeze([`focus`,`zen`,`prs`,`issues`,`usage`,`radar`,`visions`,`hooks`,`trace`,`benchmarks`,`settings`]),Object.freeze({usage:[`sort`,`range`,`period`,`expand`,`refresh`],issues:[`scope`,`filter`,`search`,`filters-toggle`,`select`,`back`,`go-to-session`,`open-session`,`refresh`],radar:[`report`,`open-session`,`resolve`,`suppress`,`archive-investigation`],onboarding:[`rescan`,`add-root-typed`,`add-root-suggested`,`add-session`],reviews:[`open-session`,`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`,`merge`,`keep-mergeable`,`merge-when-ready`,`refresh`]}),Object.freeze([`agent`,`repo_roots`,`first_session`]),Object.freeze([`current`,`done`]),Object.freeze([`usage`,`issues`,`radar`,`onboarding`,`reviews`]);var xo=[`kill`,`start-session`,`merge-session`,`finish-session`,`merge-continue-session`,`discard-session-worktree`,`resolve-session-merge`,`request-session-diff`,`request-change-map`,`request-branch-sync`,`resync-branch`,`debug-state`];function So(t){return z(t,{id:R,force:e().optional()})}var Co=xo.map(So),wo={id:R,force:e().optional(),fresh:e().optional(),conversationId:l().optional()},To=[z(`restart`,wo),z(`force-restart`,wo),z(`add-session`,{name:l(),path:l(),repos:p(l()).optional(),agent:l().optional(),dangerouslySkipPermissions:t().optional(),unguarded:t().optional(),runInPlace:t().optional(),environment:l().optional(),requestId:L}),z(`remove-session`,{id:R,force:e().optional(),discardWork:t().optional(),confirmedKeptPaths:p(l()).optional(),requestId:L}),z(`list-conversations`,{id:R,requestId:L}),z(`resume-conversation`,{id:R,conversationId:l()}),z(`rename-session`,{id:R,newName:l()}),z(`get-workspace-repos`,{id:R,requestId:L}),z(`set-workspace-repos`,{id:R,repos:p(l()),requestId:L}),z(`set-session-title`,{id:R,title:Ri}),z(`link-session-pr`,{id:R,key:eo}),z(`unlink-session-pr`,{id:R,key:eo}),z(`ping`,{requestId:L}),z(`get-settings`,{requestId:L}),z(`get-agent-logins`,{requestId:L}),z(`start-remote-setup`,{agent:fo,requestId:L}),z(`agent-connect`,{agent:fo,action:u([`start`,`cancel`]),requestId:L}),z(`agent-connect-code`,{agent:fo,code:l(),requestId:L}),z(`update-settings`,{settings:i(l(),e()),requestId:L}),z(`scan-repo-roots`,{requestId:L,includeSuggestions:t().optional()}),z(`list-agents`,{requestId:L,rescan:t().optional()}),z(`get-radar-report`,{issueId:a([l(),c()]),requestId:L}),z(`radar-open-session`,{projectId:a([l(),c()]),issueId:a([l(),c()]),requestId:L}),z(`issue-detail`,{requestId:l().min(1),repo:Ir,issueNumber:c().int().positive()}),z(`open-issue-session`,{requestId:L,projectId:l(),repo:Ir,issueNumber:c().int().positive()}),z(`radar-issue-action`,{projectId:a([l(),c()]),issueId:a([l(),c()]),action:l(),requestId:L}),z(`open-team-review-session`,{requestId:L,key:eo}),z(`team-review-action`,{...Le.shape,requestId:L}).refine(Ie,{message:`only discard may omit head`,path:[`head`]}),z(`benchmark-action`,{...Ua.shape,requestId:L}),z(`my-pr-merge`,{...gt.shape,requestId:L}),z(`my-pr-keep-mergeable`,{...it.shape,requestId:L}),z(`my-pr-merge-when-ready`,{...st.shape,requestId:L}),z(`github-polling-refresh`,{...te.shape,requestId:L}),z(`radar-archive-investigation`,{id:e().optional(),requestId:L}),z(`telegram-test`,{requestId:L}),z(`request-usage-report`,{requestId:L,days:e().optional(),force:e().optional()}),z(`request-hooks-report`,{requestId:L}),z(`save-hook`,{hook:i(l(),e()),requestId:L}),z(`delete-hook`,{id:l(),requestId:L}),z(`shutdown`),z(`restart-server`),z(`focus-change`,{focused:t()}),z(`request-health-snapshot`),z(`request-telemetry-deletion`,{requestId:L}),z(`update-check`),z(`update-apply`),z(`session-trace`,{id:R,requestId:L,after:c().int().nonnegative().default(0),endingAt:a([c().int().nonnegative(),m(`tail`)]).optional()}),z(`session-plan`,{id:R,agentId:B,revision:co.optional(),draft:t().optional()}),z(`plan-decision`,ri.shape),z(`set-session-conversation-view`,{id:R,isOn:t()}),z(`set-session-guardrails`,{id:R,isOn:t()}),z(`conversation-approval`,{id:R,requestId:Ki.shape.requestId,decision:Ji,answers:qi.optional()}),z(`session-doc-read`,{id:R,path:lo,requestId:L}),z(`session-doc-save`,{id:R,path:lo,text:l(),baseHash:l().min(1),requestId:L}),z(`session-coherence-journal`,{id:R,requestId:L}),z(`session-setup`,{id:R,requestId:L}),z(`client-error`,yo.shape),z(`dashboard-telemetry`,{event:u(bo),properties:i(l(),e())}),z(`dismiss`,{id:R,force:e().optional(),expectedState:zi.optional()}),...Co];d(`type`,To),Object.freeze(`snapshot.hooks-report.save-hook-result.add-session-result.start-remote-setup-result.remove-session-result.agent-logins.delete-hook-result.workspace-repos.set-workspace-repos-result.hooks-updated.state-change.session-added.session-removed.session-renamed.session-title.session-prs.session-modified.session-git.session-coherence-hooks.session-agents.session-wakeup.session-prompt.session-conversation.session-merge-status.session-worktree-blocked.session-worktree-warning.session-worktree-ready.session-diff.session-diff-error.change-map.branch-sync-status.session-changed.post-turn-result.debug-state-response.session-trace-response.session-trace-changed.session-plan-changed.session-plan-draft.session-plan-response.session-docs-changed.session-docs-snapshot.session-doc-response.session-doc-save-result.session-coherence.session-coherence-snapshot.session-coherence-journal-response.session-setup-response.notify.update-status.update-progress.post-turn-leftovers.error.session-error.settings.settings-error.settings-updated.pong.agents-listed.repo-roots-scanned.conversations.resume-conversation-ack.health-snapshot.radar-status.radar-investigation-activity.radar-investigation-finished.radar-report.radar-open-session-result.issue-detail-result.open-issue-session-result.open-team-review-session-result.radar-issue-action-result.telemetry-deletion-result.team-review-action-result.benchmark-action-result.my-pr-merge-result.my-pr-keep-mergeable-result.my-pr-merge-when-ready-result.github-polling-refresh-result.radar-archive-investigation-result.team-review-status.benchmark-status.my-prs-status.issues-status.usage-sessions.usage-report.plan-limits.usage-budget-alert.visions-findings.visions-comments.visions-hand.visions-intent.visions-fix.visions-snapshot.ingest-activity.ingest-snapshot.client-trust.shutting-down.restarting`.split(`.`));var Eo=[z(`snapshot`,{sessions:p(Qi),serverBuild:B}),z(`hooks-report`,{requestId:L,ts:io,hooks:p(oo).optional(),builtin:p(oo).optional(),events:p(ro({name:l(),matcher:B,description:l(),http:t().optional()})).optional(),projects:p(ro({id:l(),name:l(),agent:l()})).optional(),limits:ro({maxTimeoutSec:c().int().positive()}).optional(),error:ao}),z(`save-hook-result`,{requestId:L,ok:t(),error:ao,hook:oo.optional()}),z(`add-session-result`,{requestId:L,ok:t(),error:ao,reason:u([`not-git`]).optional()}),z(`remove-session-result`,{requestId:L,ok:t(),error:ao,canDiscardWork:t().optional(),keptPaths:p($a).optional()}),z(`agent-logins`,{requestId:L,logins:po,error:ao}),z(`start-remote-setup-result`,{requestId:L,ok:t(),error:ao,sessionId:l().optional(),sessionName:l().optional()}),z(`delete-hook-result`,{requestId:L,ok:t(),error:ao,id:l().optional()}),z(`workspace-repos`,{requestId:L,id:R,ok:t(),repos:p(l()),error:ao}),z(`set-workspace-repos-result`,{requestId:L,id:R,ok:t(),error:ao}),z(`hooks-updated`,{count:c().int().nonnegative()}),z(`state-change`,{id:R,session:l(),from:zi,to:zi,event:l(),timestamp:V,skipPerms:t().optional(),saneYolo:t().optional(),failureReason:l().optional()}),z(`session-added`,ho.shape),z(`session-modified`,ho.shape),z(`session-removed`,{id:R,session:l()}),z(`session-renamed`,{id:R,oldName:l(),newName:l()}),z(`session-title`,{id:R,taskTitle:Ri.nullable(),isCustom:t()}),z(`session-prs`,{id:R,linkedPrs:p(nt)}),z(`session-git`,{id:R,worktree:t()}),z(`session-coherence-hooks`,{id:R,coherenceHooks:Zi.nullable()}),z(`session-agents`,{id:R,activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),timestamp:V}),z(`session-unseen`,{id:R,unseenOutcome:Bi.nullable(),timestamp:V}),z(`session-wakeup`,{id:R,pendingWakeup:Vi.nullable(),timestamp:V}),z(`session-prompt`,{isCompacting:t().optional(),id:R,pendingPromptKind:B,timestamp:V}),z(`session-conversation`,{id:R,hasConversationBridge:t(),isConversationViewOn:t(),conversationApproval:Ki.nullable()}),z(`session-merge-status`,{id:R,mergeStatus:l(),reason:B,parked:t(),timestamp:V}),z(`session-worktree-blocked`,{id:R,session:l(),branch:B,notice:B,timestamp:V}),z(`session-worktree-warning`,{id:R,session:l(),branch:B,notice:B,timestamp:V}),z(`session-worktree-ready`,{id:R,session:l(),branch:B,base:B,timestamp:V}),z(`session-diff`,{id:R,committed:ro({stat:l(),diff:l()}),uncommitted:ro({stat:l(),diff:l()}),hasCommits:t()}),z(`session-diff-error`,{id:R,message:l()}),z(`change-map`,{id:R,map:Ti}),z(`branch-sync-status`,{id:R,branch:B,upstream:B,state:l(),ahead:c().int().nonnegative(),behind:c().int().nonnegative(),fetched:t().nullable(),action:l().optional(),error:ao}),z(`session-changed`,{id:R}),z(`post-turn-result`,{id:R,mode:l(),skipped:B,filesFixed:c().int().nonnegative(),findings:p(ro({file:l(),rule:l(),count:c().int().nonnegative()})),timestamp:V}),z(`debug-state-response`,{id:R,payload:oo}),z(`session-trace-response`,{id:R,requestId:L,records:p(sa),start:c().int().nonnegative(),next:c().int().nonnegative(),reset:t(),path:l()}),z(`session-trace-changed`,{id:R}),z(`session-plan-changed`,ci.shape),z(`session-plan-draft`,li.shape),z(`session-plan-response`,ui.shape),z(`session-docs-changed`,{id:R,docs:p(ia)}),z(`session-docs-snapshot`,{sessions:i(l(),p(ia))}),z(`session-doc-response`,{requestId:L,id:R,path:l(),ok:t(),text:l().optional(),hash:l().optional(),error:ao}),z(`session-doc-save-result`,{requestId:L,id:R,path:l(),ok:t(),hash:l().optional(),conflict:t().optional(),error:ao}),z(`session-coherence`,{id:R,...Pi.shape}),z(`session-coherence-snapshot`,{sessions:i(l(),Pi)}),z(`session-coherence-journal-response`,{requestId:L,id:R,ok:t(),entries:p(Mi).max(200),error:ao}),z(`session-setup-response`,{requestId:L,id:R,ok:t(),setup:ua.optional(),error:ao}),z(`notify`,{session:l(),category:l(),message:l(),escalationCount:c().int().nonnegative(),kind:m(`plan`).optional()}),z(`update-status`,_o),z(`update-progress`,{journal:ga}),z(`post-turn-leftovers`,{repositories:p(l()),command:l()}),z(`error`,{id:R.optional(),message:l(),requestId:L,scope:l().optional()}),z(`session-error`,{id:R.optional(),session:l(),message:l(),scope:l().optional()}),z(`settings`,{settings:oo,requestId:L}),z(`settings-error`,{message:l(),requestId:L}),z(`settings-updated`,{settings:oo,requestId:L}),z(`pong`,{requestId:L}),z(`agents-listed`,{requestId:L,agents:p(ro({id:l(),label:l(),resolvable:t()}))}),z(`repo-roots-scanned`,{requestId:L,directories:p(ro({root:l(),projects:p(ro({name:l(),path:l(),isGit:t().optional()}))})),suggestions:p(ro({path:l(),label:l(),gitRepoCount:c().int().nonnegative()})).optional(),error:l().optional()}),z(`conversations`,{requestId:L,id:B,current:B.optional(),conversations:p(ro({id:l(),title:l(),cwd:l(),worktreePath:l(),worktreeName:l(),gitBranch:B,mtime:V})),error:l().optional()}),z(`resume-conversation-ack`,{id:R.optional(),resumeSessionId:B.optional(),ok:t(),error:l().optional(),requestId:L}),z(`health-snapshot`,{stats:oo}),z(`radar-status`,{ts:V,intervalMinutes:c(),projects:p(oo),investigations:p(oo)}),z(`radar-investigation-activity`,{projectId:a([l(),c()]),issueId:l(),inFlight:m(!0),startedAt:V.nullable(),trail:uo}),z(`radar-investigation-finished`,{projectId:a([l(),c()]),issueId:l(),verdict:l(),summaryLine:B,startedAt:V.nullable(),trail:uo}),z(`radar-report`,{requestId:L,ok:t(),found:t(),issueId:B,format:l().optional(),content:l().optional(),message:l().optional(),error:l().optional()}),z(`radar-open-session-result`,{requestId:L,ok:t(),error:ao,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional()}),z(`issue-detail-result`,{requestId:l().min(1),ok:t(),body:l().nullable(),error:l().nullable()}),z(`open-issue-session-result`,{requestId:L,ok:t(),error:ao,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),z(`open-team-review-session-result`,{requestId:L,ok:t(),error:ao,key:eo.optional(),sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),z(`radar-issue-action-result`,{requestId:L,ok:t(),error:ao,status:B.optional()}),z(`team-review-action-result`,{...Re.shape,requestId:L}),z(`telemetry-deletion-result`,{requestId:L,ok:t()}),z(`benchmark-action-result`,{...Wa.shape,requestId:L}),z(`my-pr-merge-result`,{...vt.shape,requestId:L}),z(`my-pr-keep-mergeable-result`,{...ot.shape,requestId:L}),z(`my-pr-merge-when-ready-result`,{...ct.shape,requestId:L}),z(`github-polling-refresh-result`,{...ne.shape,requestId:L}),z(`radar-archive-investigation-result`,{requestId:L,ok:t(),error:ao}),z(`telegram-test-result`,{requestId:L,ok:t(),error:ao,telegramDelivery:mo.nullable()}),Ge,Ja,ht,Bn,Ur,z(`usage-sessions`,{ts:V,pricingSource:B,sessions:p(ro({id:R,tokens:c(),costUSD:c(),officialCostUSD:c().nullable().optional()}))}),z(`usage-report`,{requestId:L,ts:io,tz:l().optional(),blockHours:c().optional(),totals:oo.optional(),daily:so.optional(),models:so.optional(),sessions:so.optional(),blocks:so.optional(),activeBlock:e().nullable().optional(),anomaly:e().nullable().optional(),byLane:e().optional(),planWindowLanes:e().nullable().optional(),budget:e().optional(),savings:e().optional(),tokenLimit:e().nullable().optional(),pricing:oo.optional(),scan:oo.optional(),warning:ao,error:ao}),z(`plan-limits`,{ts:V,fiveHour:e().nullable(),sevenDay:e().nullable(),source:l(),vendor:u([`claude`,`codex`]).optional()}),z(`usage-budget-alert`,{scope:l(),periodKey:l(),threshold:c(),text:l(),ts:V}),z(`visions-findings`,{uri:l(),diagnostics:so,ts:V}),z(`visions-comments`,{uri:l(),comments:so,ts:V}),z(`visions-hand`,{uri:l(),hand:B,ts:V}),z(`visions-intent`,{projectId:B,intent:oo,ts:V}),z(`visions-fix`,{uri:l(),fix:oo,ts:V}),z(`visions-snapshot`,{documents:p(oo),intent:oo,fixes:p(oo),ts:V}),z(`ingest-activity`,{events:p(oo),overflow:c().int().nonnegative(),ts:V}),z(`ingest-snapshot`,{events:p(oo),sources:e(),ts:V}),z(`client-trust`,{trust:u([`local`,`remote`])}),z(`shutting-down`),z(`restarting`)],Do=d(`type`,Eo),Oo=32,ko=/^\s*at .+:\d+:\d+\)?$|^[^@\s]*@.+:\d+:\d+$/;function Ao(e){let t=e.stack??``,n=String(e);return(t.startsWith(n)?t.slice(n.length):t).split(`
|
|
2
|
+
`).filter(e=>ko.test(e)).join(`
|
|
3
|
+
`)}function jo(e){return e==null?null:e instanceof Error?{name:(e.name||`Error`).slice(0,128),stack:Ao(e).slice(0,vo)}:{name:`NonError`,stack:``}}function Mo(e){let t=new Set;return n=>{let r=jo(n);if(!r)return;let i=`${r.name}\n${r.stack}`;t.has(i)||t.size>=Oo||e({type:`client-error`,...r})&&t.add(i)}}var No=[{name:`Nyan cat`,sprite:`is-cat`,trail:`is-rainbow`},{name:`Unicorn`,sprite:`is-unicorn`,trail:`is-sparkles`},{name:`Dragon`,sprite:`is-dragon`,trail:`is-embers`},{name:`Pig`,sprite:`is-pig`,trail:`is-hearts`},{name:`Whale`,sprite:`is-whale`,trail:`is-bubbles`},{name:`Fox`,sprite:`is-fox`,trail:`is-paws`},{name:`Frog`,sprite:`is-frog`,trail:`is-dust`},{name:`Penguin`,sprite:`is-penguin`,trail:`is-snow`},{name:`Bee`,sprite:`is-bee`,trail:`is-honey`},{name:`Owl`,sprite:`is-owl`,trail:`is-stars`},{name:`Cow`,sprite:`is-cow`,trail:`is-daisies`},{name:`Panda`,sprite:`is-panda`,trail:`is-bamboo`},{name:`Red panda`,sprite:`is-red-panda`,trail:`is-leaves`},{name:`Deer`,sprite:`is-deer`,trail:`is-acorns`},{name:`Horse`,sprite:`is-horse`,trail:`is-clover`},{name:`Sheep`,sprite:`is-sheep`,trail:`is-clouds`},{name:`Hamster`,sprite:`is-hamster`,trail:`is-seeds`},{name:`Giraffe`,sprite:`is-giraffe`,trail:`is-acacia`},{name:`Hedgehog`,sprite:`is-hedgehog`,trail:`is-logomarks`}],Po=1/25,Fo=3;function Io(e,t,n){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(n.max,Math.max(n.min,e))}function Lo(e){if(!Array.isArray(e))return[];let t=new Set(No.map(e=>e.sprite));return[...new Set(e.filter(e=>typeof e==`string`&&t.has(e)))]}function Ro(e={}){let t=kt,n=Et,r=Dt,i=Io(e.flyingAnimalsMinGapSeconds,t.flyingAnimalsMinGapSeconds,n),a=Io(e.flyingAnimalsMaxGapSeconds,t.flyingAnimalsMaxGapSeconds,n),o=Io(e.flyingAnimalsMinDurationSeconds,t.flyingAnimalsMinDurationSeconds,r),s=Io(e.flyingAnimalsMaxDurationSeconds,t.flyingAnimalsMaxDurationSeconds,r);return{flyingAnimalsMinGapSeconds:Math.min(i,a),flyingAnimalsMaxGapSeconds:Math.max(i,a),flyingAnimalsMinDurationSeconds:Math.min(o,s),flyingAnimalsMaxDurationSeconds:Math.max(o,s),flyingAnimalsScale:Io(e.flyingAnimalsScale,t.flyingAnimalsScale,Ot),flyingAnimalsOnPhone:typeof e.flyingAnimalsOnPhone==`boolean`?e.flyingAnimalsOnPhone:t.flyingAnimalsOnPhone,flyingAnimalsExcludedSprites:Lo(e.flyingAnimalsExcludedSprites)}}function zo(e){return No.some(t=>!e.includes(t.sprite))}function Bo(e,t=-1,n=Math.random){let r=No.flatMap((t,n)=>e.includes(t.sprite)?[]:[n]);if(r.length===0)return null;let i=r.length>1?r.filter(e=>e!==t):r,a=Math.min(1,Math.max(0,n()));return i[Math.min(i.length-1,Math.floor(a*i.length))]}function Vo(e,t,n=Math.random,r){let i=r===void 0?Bo(e.flyingAnimalsExcludedSprites,t,n):No.findIndex(e=>e.sprite===r);if(i===null||i<0)return null;let a=e.flyingAnimalsMinDurationSeconds+n()*(e.flyingAnimalsMaxDurationSeconds-e.flyingAnimalsMinDurationSeconds),o=1e3*(e.flyingAnimalsMinGapSeconds+n()*(e.flyingAnimalsMaxGapSeconds-e.flyingAnimalsMinGapSeconds)),s=n()*a,c=n(),l=n()<.5,u=n()<Po?Fo:1;return{animalIndex:i,durationSeconds:a,gapMs:o,firstDelaySeconds:s,verticalProgress:c,isRightToLeft:l,arcProgress:(n()*2-1)*u}}function Ho({isEnabled:e,hasReducedMotion:t,isPhone:n,options:r}){return t?`Flights are disabled because reduced motion is enabled.`:e?n&&!r.flyingAnimalsOnPhone?`Turn on Show on phone layout to use Fly now here.`:null:`Turn on flying animals to use Fly now.`}var Uo=68,Wo=42,Go=768,Ko=.68,qo=64,Jo=5,Yo=8,Xo=85;function Zo(e,t,n){return Math.min(Math.max(e,t),n)}function Qo({viewportWidthPx:e,viewportHeightPx:t,verticalProgress:n,isRightToLeft:r=!1,arcProgress:i=0}){let a=Zo(e/Go,Ko,1),o=(Jo+70*n*n)*t/100,s=Math.max(o,qo),c=Xo*t/100,l=Zo(i*Yo*t/100,qo-s,c-s),u=-.45*e,d=1.45*e;return{scale:a,spriteWidthPx:Uo,spriteHeightPx:Wo,topPx:s,startXpx:r?d:u,endXpx:r?u:d,facing:r?-1:1,arcPx:l}}function $o(e,t){let n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.round(e*n))/n}function es(e,t,n){let r=$o(e.scale*t,n);return[[`--nyan-top`,`${e.topPx}px`],[`--nyan-scale`,String(r)],[`--nyan-width`,`${e.spriteWidthPx}px`],[`--nyan-height`,`${e.spriteHeightPx}px`],[`--nyan-start-x`,`${e.startXpx}px`],[`--nyan-end-x`,`${e.endXpx}px`],[`--nyan-facing`,String(e.facing)],[`--nyan-arc`,`${e.arcPx}px`],[`--nyan-travel`,`${Math.abs(e.endXpx-e.startXpx)/r}px`]]}var ts=`chime`,ns=`custom:`,rs=`/custom-sounds`,is=Object.freeze({chime:{label:`Chime`,peakGain:.12,tones:[{frequency:659.25,startSeconds:0,durationSeconds:.35,waveform:`sine`},{frequency:987.77,startSeconds:.14,durationSeconds:.5,waveform:`sine`}]},ping:{label:`Soft ping`,peakGain:.08,tones:[{frequency:1046.5,startSeconds:0,durationSeconds:.12,waveform:`triangle`},{frequency:1046.5,startSeconds:.13,durationSeconds:.12,waveform:`triangle`},{frequency:1318.51,startSeconds:.26,durationSeconds:.2,waveform:`triangle`}]},beep:{label:`Beep`,peakGain:.15,tones:[{frequency:880,startSeconds:0,durationSeconds:.2,waveform:`sine`}]}}),as=Object.freeze(Object.entries(is).map(([e,t])=>({id:e,label:t.label})));function os(e){return`${ns}${e}`}function ss(e){return`${rs}/${encodeURIComponent(e)}`}function cs(e){return e.startsWith(ns)&&e.slice(7)||null}function ls(e){let t=(e??[]).map(e=>({id:os(e),label:e}));return[...as,...t]}function us(e,t){if(typeof e!=`string`)return ts;if(Object.hasOwn(is,e))return e;let n=cs(e);return n&&(t===null||t.includes(n))?e:ts}function ds(e){return typeof e!=`object`||!e||!(`sounds`in e)||!Array.isArray(e.sounds)?[]:e.sounds.filter(e=>typeof e==`string`&&e!==``)}function fs(e,t){try{let n=localStorage.getItem(e);return n===null?t:JSON.parse(n)}catch{return t}}function ps(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}var ms=`↑`,hs=`↓`,gs=`←`,_s=`→`,vs=`⌘`,ys=`⌥`,bs=Array.from({length:9},(e,t)=>[`Digit${t+1}`,t+1]),xs=`KeyJ`,Ss=new Map([[`Minus`,`-`],[`Equal`,`=`],[`BracketLeft`,`[`],[`BracketRight`,`]`],[`Semicolon`,`;`],[`Quote`,`'`],[`Comma`,`,`],[`Period`,`.`],[`Slash`,`/`],[`Backquote`,"`"],[`Backslash`,`\\`]]),Cs=new Set([`KeyQ`,`KeyW`,`KeyT`,`KeyN`,`KeyL`,`KeyR`]),ws=new Set([`KeyC`,`KeyV`,`KeyX`,`KeyA`,`KeyZ`]);function Ts(e){let t=/^(?:Key|Digit)([A-Z0-9])$/.exec(e);return t?t[1]:Ss.get(e)??null}function Es(e){return{action:`next-attention`,keyCaptions:[Ts(e)??e],label:`Jump to the next session needing you`,stepByCode:new Map([[e,0]])}}var Ds=[{action:`rail-step`,keyCaptions:[ms,hs],label:`Previous / next session in the rail`,stepByCode:new Map([[`ArrowUp`,-1],[`ArrowDown`,1]])},{action:`view-step`,keyCaptions:[gs,_s],label:`Previous / next view tab`,stepByCode:new Map([[`ArrowLeft`,-1],[`ArrowRight`,1]]),unavailablePlatform:`other`},{action:`view-step`,keyCaptions:[`PgUp`,`PgDn`],label:`Previous / next view tab`,stepByCode:new Map([[`PageUp`,-1],[`PageDown`,1]]),unavailablePlatform:`mac`},{action:`session-nth`,keyCaptions:[`1..9`],label:`Jump to session 1 to 9`,stepByCode:new Map(bs),isShellChord:!0,needsMacOption:!0},{action:`new-session`,keyCaptions:[`0`],label:`Add a session`,stepByCode:new Map([[`Digit0`,0]]),isShellChord:!0},{action:`merge`,keyCaptions:[`I`],label:`Merge the selected session`,stepByCode:new Map([[`KeyI`,0]])},{action:`resolve-or-resync`,keyCaptions:[`U`],label:`Resolve a parked merge, or resync the base branch`,stepByCode:new Map([[`KeyU`,0]]),isShellChord:!0},{action:`streamer-mode`,keyCaptions:[`\\`],label:`Turn streamer mode on or off`,stepByCode:new Map([[`Backslash`,0]]),isShellChord:!0}];function Os(e,t){return[Es(t),...Ds].filter(t=>t.unavailablePlatform!==e)}function ks(e){if(Ts(e)===null)return`Pick a letter, digit or punctuation key.`;if(Cs.has(e))return`The browser keeps that shortcut for itself.`;if(ws.has(e))return`That shortcut stays with copy, cut, paste, select all and undo.`;let t=Ds.find(t=>t.stepByCode.has(e));return t?`That key is already used to ${t.label.charAt(0).toLowerCase()}${t.label.slice(1)}.`:null}function As(e){return typeof e==`string`&&ks(e)===null}var js=new Set([`Meta`,`Alt`,`Control`,`Shift`,`OS`]);function Ms(e,t){if(e.key===`Escape`)return{kind:`cancelled`};if(js.has(e.key))return{kind:`ignored`};let n=t===`mac`?`Cmd`:`Alt`;if(!Ps(e,t,Es(e.code)))return{kind:`refused`,reason:`Hold ${n} alone while pressing the key.`};let r=ks(e.code);return r?{kind:`refused`,reason:r}:{kind:`recorded`,keyCode:e.code}}function Ns(e){return/Mac|iPhone|iPad/.test(e)?`mac`:`other`}function Ps(e,t,n){return e.ctrlKey||e.shiftKey?!1:t===`mac`?e.metaKey&&e.altKey===!!n.needsMacOption:e.altKey&&!e.metaKey}function Fs(e,t,n){return n.isTerminalFocused&&t!==`mac`&&!!e.isShellChord}var Is=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function Ls(e){return Is.has(e.key)?e.key:e.code}function Rs(e,t,n={isTerminalFocused:!1},r=xs){let i=Ls(e);for(let a of Os(t,r)){let r=a.stepByCode.get(i);if(r!==void 0)return!Ps(e,t,a)||Fs(a,t,n)?null:{action:a.action,step:r}}return null}function zs(e,t){return t===`focus`||t===`zen`&&e.action===`next-attention`}function Bs(e,t){return e===`mac`?t?.needsMacOption?`${vs}${ys}`:vs:`Alt`}function Vs(e,t,n){let r=Os(t,n).find(t=>t.action===e);if(!r)throw Error(`Unknown dashboard shortcut: ${e}`);return r}function Hs(e,t,n=xs){let r=Vs(e,t,n);return[Bs(t,r),r.keyCaptions.join(` `)]}function Us(e,t){let[n,r]=Hs(e,t);return t===`mac`?`${n}${r}`:`${n}+${r}`}function Ws(e){let t=e===`mac`?`Meta`:`Alt`;return`ArrowUp ArrowDown ${t}+ArrowUp ${t}+ArrowDown`}function Gs(e,t=xs){let n=e===`mac`?vs:`Ctrl`;return[{title:`Dashboard`,items:Os(e,t).map(t=>({combos:t.keyCaptions.map(n=>[Bs(e,t),n]),label:t.label}))},{title:`Navigation`,items:[{combos:[[ms],[hs]],label:`Move rail highlight (rail focused)`},{combos:[[gs],[_s]],label:`Switch view tab (tab focused)`}]},{title:`Terminal`,items:[{combos:[[n,`C`]],label:`Copy selection`},{combos:[[n,`V`]],label:`Paste`},{combos:[[n,`Backspace`]],label:`Delete previous word`}]},{title:`General`,items:[{combos:[[`Esc`]],label:`Close dialog / cancel rename`}]}]}var Ks=`glimmervoid-ui-prefs`,qs=`glimmervoid:sidebar-width`,Js=e=>t=>typeof t==`boolean`?t:e,Ys=e=>t=>typeof t==`string`?t:e,Xs=e=>typeof e==`string`&&e?e:null,Zs=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Qs=e=>t=>Zs(t)??e,$s=e=>Array.isArray(e)?[...new Set(e.filter(e=>typeof e==`string`&&e!==``))]:[],ec={soundEnabled:Js(!0),soundId:Ys(ts),themeId:Ys(`phyrexian`),flyingAnimalsEnabled:Js(!1),flyingAnimalsMinGapSeconds:Qs(kt.flyingAnimalsMinGapSeconds),flyingAnimalsMaxGapSeconds:Qs(kt.flyingAnimalsMaxGapSeconds),flyingAnimalsMinDurationSeconds:Qs(kt.flyingAnimalsMinDurationSeconds),flyingAnimalsMaxDurationSeconds:Qs(kt.flyingAnimalsMaxDurationSeconds),flyingAnimalsScale:Qs(kt.flyingAnimalsScale),flyingAnimalsOnPhone:Js(kt.flyingAnimalsOnPhone),flyingAnimalsExcludedSprites:Lo,notificationsEnabled:Js(!0),sessionUsageChips:Js(!1),phoneArrowPad:Js(!1),nextAttentionKeyCode:e=>As(e)?e:xs,activeView:Ys(`focus`),lastFocusedSessionId:Xs,railWidth:Zs,reviewSidebarExpanded:Js(!1),prsQueueWidth:Zs,prsQueueCollapsed:Js(!1),keptProjects:$s,traceHiddenKinds:$s,dismissedUpdate:Xs,telemetryNoticeDismissed:Js(!1),radarAttentionAck:Ys(``),prsAttentionAck:Ys(``),prsUnseenRows:Ys(``),usageAttentionAck:Ys(``),visionsAttentionAck:Ys(``)};function tc(e,t,n){e[t]=ec[t](n)}function nc(){let e=fs(Ks,{}),t={};for(let n of Object.keys(ec))tc(t,n,e?.[n]);return t}function rc(e){return nc()[e]}function ic(e,t){let n=nc();tc(n,e,t),ps(Ks,n)}var ac=()=>rc(`soundEnabled`),oc=e=>ic(`soundEnabled`,e),sc=()=>rc(`soundId`),cc=e=>ic(`soundId`,e),lc=()=>rc(`notificationsEnabled`),uc=e=>ic(`notificationsEnabled`,e),dc=()=>rc(`sessionUsageChips`),fc=e=>ic(`sessionUsageChips`,e),pc=()=>rc(`phoneArrowPad`),mc=e=>ic(`phoneArrowPad`,e),hc=()=>rc(`nextAttentionKeyCode`),gc=e=>ic(`nextAttentionKeyCode`,e),_c=()=>rc(`themeId`),vc=e=>ic(`themeId`,e),yc=()=>rc(`flyingAnimalsEnabled`),bc=e=>ic(`flyingAnimalsEnabled`,e),xc=()=>rc(`activeView`),Sc=e=>ic(`activeView`,e),Cc=()=>rc(`railWidth`),wc=e=>ic(`railWidth`,e),Tc=()=>rc(`reviewSidebarExpanded`),Ec=e=>ic(`reviewSidebarExpanded`,e),Dc=()=>rc(`prsQueueWidth`),Oc=e=>ic(`prsQueueWidth`,e),kc=()=>rc(`prsQueueCollapsed`),Ac=e=>ic(`prsQueueCollapsed`,e),jc=()=>rc(`keptProjects`),Mc=e=>ic(`keptProjects`,e),Nc=()=>rc(`traceHiddenKinds`),Pc=e=>ic(`traceHiddenKinds`,e),Fc=()=>rc(`dismissedUpdate`),Ic=e=>ic(`dismissedUpdate`,e),Lc=()=>rc(`telemetryNoticeDismissed`),Rc=e=>ic(`telemetryNoticeDismissed`,e),zc=()=>rc(`radarAttentionAck`),Bc=e=>ic(`radarAttentionAck`,e),Vc=()=>rc(`prsAttentionAck`),Hc=e=>ic(`prsAttentionAck`,e),Uc=()=>rc(`prsUnseenRows`),Wc=e=>ic(`prsUnseenRows`,e),Gc=()=>rc(`usageAttentionAck`),Kc=e=>ic(`usageAttentionAck`,e),qc=()=>rc(`visionsAttentionAck`),Jc=e=>ic(`visionsAttentionAck`,e),Yc=()=>rc(`lastFocusedSessionId`),Xc=e=>ic(`lastFocusedSessionId`,e),Zc=()=>Zs(fs(qs,null)),Qc=e=>ps(qs,Zs(e)),$c=e=>ic(`flyingAnimalsMinGapSeconds`,e),el=e=>ic(`flyingAnimalsMaxGapSeconds`,e),tl=e=>ic(`flyingAnimalsMinDurationSeconds`,e),nl=e=>ic(`flyingAnimalsMaxDurationSeconds`,e),rl=e=>ic(`flyingAnimalsScale`,e),il=e=>ic(`flyingAnimalsOnPhone`,e),al=e=>ic(`flyingAnimalsExcludedSprites`,e),ol=()=>Ro(nc()),sl=()=>{let e=nc();return Object.fromEntries(Object.keys(kt).map(t=>[t,e[t]]))},cl=()=>ps(Ks,{...nc(),...kt}),ll=Qo({viewportWidthPx:1440,viewportHeightPx:900,verticalProgress:0});function ul(e,t=``){let n=j(`div`,`flying-animal-preview ${t}`.trim());n.setAttribute(`aria-hidden`,`true`),n.style.setProperty(`--nyan-width`,`${ll.spriteWidthPx}px`),n.style.setProperty(`--nyan-height`,`${ll.spriteHeightPx}px`);let r=j(`div`,`flying-animal-preview-stage`);return r.append(j(`div`,`nyan-trail ${e.trail}`),j(`div`,`nyan-sprite ${e.sprite}`)),n.append(r),n}function dl(){let e=Bo(ol().flyingAnimalsExcludedSprites);return e===null?null:No[e]??null}var fl=6e4,pl=18e5,ml=20;function hl({attempt:e=1,baseMs:t=fl,maxMs:n=pl,retryAfterMs:r=null,random:i=Math.random,jitter:a=`full`}={}){if(typeof r==`number`&&Number.isFinite(r)&&r>0)return Math.min(r,n);let o=Math.max(0,Math.min(e,ml)-1),s=Math.min(n,t*2**o);return a===`none`?s:Math.round(a===`half`?s*(.5+.5*i()):i()*s)}var gl=500,_l=3e4;function vl(e,t=Math.random){return hl({attempt:(typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0)+1,baseMs:gl,maxMs:_l,random:t,jitter:`half`})}var yl=0,bl=1,xl=1e4;function dee({hasSocket:e,readyState:t,retryPending:n,connectingAgeMs:r=0}){return n?`retry-now`:e?t===yl?r>xl?`connect`:`wait`:t===bl?`probe`:`connect`:`connect`}function Sl(e){return e===`https:`?`wss:`:`ws:`}function Cl(e,t){return`${Sl(e?.protocol)}//${e.host}${t}`}var wl=``,Tl=null;function El(){return wl}function Dl(){return wl?Promise.resolve(wl):Tl||(Tl=fetch(`/control-token`,{credentials:`same-origin`,cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{let t=e?.token;return wl=typeof t==`string`?t:``,wl}).catch(()=>``).finally(()=>{Tl=null}),Tl)}function Ol(){wl=``}function kl(e){return wl?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(wl)}`:e}function H(e,t){return typeof e==`string`&&e.trim()?e.trim():t}function U(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}var Al=60,jl=3600,Ml=24,Nl=1024,Pl=Nl*1024,Fl=Pl*1024,Il={compact:{second:e=>`${e}s`,minute:e=>`${e}m`,hour:e=>`${e}h`,day:e=>`${e}d`},abbreviated:{second:e=>`${e} sec`,minute:e=>`${e} min`,hour:e=>`${e} hr`,day:e=>`${e} ${e===1?`day`:`days`}`},spelled:{second:e=>`${e} ${e===1?`second`:`seconds`}`,minute:e=>`${e} ${e===1?`minute`:`minutes`}`,hour:e=>`${e} ${e===1?`hour`:`hours`}`,day:e=>`${e} ${e===1?`day`:`days`}`}},Ll={rounding:`floor`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:0};function Rl(e){return String(e).padStart(2,`0`)}function zl(e,t){return Math.max(0,Math[t](e/1e3))}function Bl(e,t){let n=Il[t];if(e<Al)return n.second(e);let r=Math.floor(e/Al);if(r<60)return n.minute(r);let i=Math.floor(r/60);return i<Ml?n.hour(i):n.day(Math.floor(i/Ml))}function Vl(e,t){let n=zl(e,t.rounding);return n<t.justNowBelowSeconds?`just now`:`${Bl(n,t.wording)}${t.suffix}`}function Hl(e,{smallestUnit:t,dropsZeroRemainder:n}){let r=(e,t,r)=>n&&t===0?e:`${e} ${t}${r}`;if(t===`s`&&e<Al)return`${e}s`;if(t===`s`&&e<jl)return r(`${Math.floor(e/Al)}m`,e%Al,`s`);let i=Math.floor(e/Al);return i<60?`${i}m`:r(`${Math.floor(i/60)}h`,i%60,`m`)}function Ul(e,{rounding:t,showsHours:n}){let r=zl(e,t),i=Rl(r%Al),a=Math.floor(r/Al),o=Math.floor(r/jl);return!n||o===0?`${a}:${i}`:`${o}:${Rl(a%60)}:${i}`}function Wl(e,t){return e<Nl?`${e} B`:t===`KB`||e<Pl?`${(e/Nl).toFixed(1)} KB`:e<Fl?`${(e/Pl).toFixed(1)} MB`:`${(e/Fl).toFixed(2)} GB`}function Gl(e){let t=new Date(e);return`${t.getFullYear()}-${Rl(t.getMonth()+1)}-${Rl(t.getDate())}`}function Kl(e){return`${Rl(e.getHours())}:${Rl(e.getMinutes())}`}function ql(e){return e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function Jl(e){let t=(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`&&e!==``);return[...new Set(t)].sort().join(`|`)}function Yl(e,t){let n=typeof e==`string`?e:``,r=typeof t==`string`?t:``;return n===``?{shown:!1,acknowledged:``}:{shown:n!==r,acknowledged:r}}function Xl({getAck:e,setAck:t,signature:n,isLooking:r}){let i=e(),a=e=>{e!==i&&(i=e,t(e))};return{refresh(){let e=n(),t=Yl(e,r()?e:i);return a(t.acknowledged),t.shown},acknowledge(){a(n())}}}function Zl(e,{label:t}){if(!e)return`Waiting for ${t} status from the server.`;let n=typeof e.reason==`string`?e.reason.trim():``;return e.configured===!1&&n?`${t} is misconfigured: ${n}.`:e.configured===!1?`${t} is off.`:`${t} is on. Waiting for the first poll.`}var Ql=`machine-updates`,$l=`update-actions`,eu={spiking:0,regressed:1,worsened:2,new:3,quiet:4},tu={spiking:`crit`,regressed:`crit`,worsened:`warn`,new:`warn`,quiet:`dim`},nu=99,ru={ROOT_CAUSE:`root cause`,NEEDS_HUMAN:`needs you`,TRANSIENT:`transient`,FIXED:`fixed`,ERROR:`error`};function iu(e){return Array.isArray(e)?e.flatMap(e=>{let t=e,n=U(t?.at,0),r=H(t?.note,``);if(r)return[{at:n,note:r}];let i=H(t?.tool,``);return i?[{at:n,tool:i,detail:H(t?.detail,``)}]:[]}):[]}function au(e){return e.filter(e=>`tool`in e)}function ou(e){return e.detail?`${e.tool} ${e.detail}`:e.tool}function su(e){let t=iu(e?.trail),n=t.findLast(e=>`note`in e);if(n)return n.note;let r=au(t).at(-1);return r?ou(r):``}function cu(e){let t=[];for(let n of e){if(`note`in n){t.push({kind:`note`,at:n.at,text:n.note});continue}let e=t.at(-1);e?.kind===`work`?e.stepCount+=1:t.push({kind:`work`,at:n.at,stepCount:1})}return t}function lu(e){let t=H(e?.summaryLine,``);return e?.inFlight===!0&&su(e)||t}function uu(e){return{inFlight:e?.inFlight===!0,startedAt:U(e?.startedAt,null),steps:iu(e?.trail),verdict:H(e?.verdict,``),summaryLine:H(e?.summaryLine,``)}}function du(e,t,n){let r=String(t??``),i=String(n??``);if(!r||!i)return null;for(let t of Array.isArray(e?.projects)?e.projects:[])if(String(t?.projectId??``)===r){for(let e of Array.isArray(t.issues)?t.issues:[])if(String(e?.issueId??``)===i)return e}return null}function fu(e,t){let n=du(e,t?.projectId,t?.issueId);return n?(n.inFlight=!0,n.startedAt=U(t?.startedAt,null),n.trail=iu(t?.trail),!0):!1}function pu(e){return{inFlight:!1,startedAt:U(e?.startedAt,null),steps:iu(e?.trail),verdict:H(e?.verdict,``),summaryLine:H(e?.summaryLine,``)}}function mu(e,t){return!e||!t?!1:String(t.projectId??``)===e.projectId&&String(t.issueId??``)===e.issueId}function hu(e,t){let n=du(e,t?.projectId,t?.issueId);if(!n)return!1;let r=pu(t);return n.inFlight=!1,n.startedAt=r.startedAt,n.trail=r.steps,n.verdict=r.verdict,n.summaryLine=r.summaryLine,!0}function gu(e){return ru[typeof e==`string`?e.toUpperCase():``]||String(e??``).toLowerCase()}function _u(e){return Ul(e,{rounding:`round`,showsHours:!1})}function vu(e,t){return e==null?``:`+${_u(t-e)}`}function yu(e){let t=e.steps.at(-1),n=t&&`tool`in t?t.tool:t?.note??``;return[e.steps.length,t?.at??0,n].join(`::`)}function bu(e,t){if(e.inFlight){let n=au(e.steps).length,r=`${n} ${n===1?`step`:`steps`}`;return`investigating, ${e.startedAt?`started ${t}`:`starting`}, ${r}`}return e.verdict?`finished: ${gu(e.verdict)}`:`finished`}function xu(e){return Zl(e,{label:`PostHog monitoring`})}function Su(e){return U(e.intervalMinutes,null)!==null}function Cu(e,t){return e==null||e.configured===!1?`placeholder`:t>0?`ready`:Su(e)?`placeholder`:`pending`}function wu(e){return tu[e??``]||`dim`}function Tu(e){if(typeof e?.lastSeen!=`string`)return null;let t=Date.parse(e.lastSeen);return!Number.isFinite(t)||t<=0?null:t}function Eu(e){let t=H(e?.status,``).trim().toLowerCase();return!t||t===`active`?``:t}function Du(e){return Array.isArray(e)?e.map(e=>Number(e)).filter(e=>Number.isFinite(e)):[]}function Ou(e){return Array.isArray(e)?e.map(e=>typeof e==`number`?e:Number(e?.occurrences)).filter(e=>Number.isFinite(e)):[]}function ku(e,t=64,n=16){let r=Du(e);if(r.length<2)return``;let i=Math.max(...r),a=Math.min(...r),o=t/(r.length-1),s=n/2,c=i-a;return r.map((e,t)=>{let r=t*o,i=c===0?s:n-(e-a)/c*n;return`${Number(r.toFixed(2))},${Number(i.toFixed(2))}`}).join(` `)}function Au(e){if(e.length<4)return null;let t=Math.floor(e.length/2),n=e.slice(0,t).reduce((e,t)=>e+t,0);if(n===0)return null;let r=e.slice(-t).reduce((e,t)=>e+t,0),i=Math.round(Math.abs(r-n)/Math.abs(n)*100);return r>n?{direction:`up`,percent:i}:r<n?{direction:`down`,percent:i}:{direction:`flat`,percent:i}}function ju(e){return e.length===0?`0 polls, 0 to 0 occurrences`:`${e.length} polls, ${Math.min(...e)} to ${Math.max(...e)} occurrences`}function Mu(e){let t=Array.isArray(e)?e:[],n=0,r=0;for(let e of t)e?.change===`spiking`&&(n+=1),e?.verdict===`NEEDS_HUMAN`&&(r+=1);return{active:t.length,spiking:n,needsHuman:r}}var Nu=3e5;function Pu(e){let t=Number(e);return!Number.isFinite(t)||t<=0?Nu:t*2}function Fu(e){let t=e.split(/[\\/]+/).filter(Boolean);return t.length===0?``:t[t.length-1]}function Iu(e){let t=Fu(H(e?.name,``));if(t)return t;let n=e?.projectId;return n==null||n===``?`project`:String(n)}function Lu(e){let t=H(e,``);return t?(t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(`/`)[0].split(`@`).pop()??``).replace(/:\d+$/,``):``}function Ru(e){let t=new Set,n=Array.isArray(e)?e:[];for(let e of n){let n=Lu(e?.host);n&&t.add(n)}return t.size>1}function zu(e,t,n={}){let r=Mu(e?.issues),i=H(e?.error,``).slice(0,200),a=Number(t),o=Number(e?.lastTickAt),s=Number.isFinite(a)&&Number.isFinite(o)&&o>0?a-o:0,c=s>Pu(n.intervalMs)?s:0;return{loud:r.active>0||r.spiking>0||!!i||c>0,counts:r,error:i,staleMs:c}}function Bu(e,t,n={}){let r=[],i=[],a=Array.isArray(e)?e:[];for(let e of a){let a=zu(e,t,n),o={project:e,...a};a.loud?r.push(o):i.push(o)}return{loud:r,quiet:i}}function Vu(e,t=null){return(Array.isArray(e?.investigations)?e.investigations:[]).filter(e=>typeof e==`object`&&!!e).filter(e=>typeof e.id==`string`&&e.id!==``).filter(e=>e.archived!==!0).filter(e=>!t?.has(e.id)).map(e=>({id:e.id,issueId:H(e.issueId,``),projectId:e.projectId??null,projectLabel:H(e.projectName,``),title:H(e.title,`Untitled issue`),summaryLine:H(e.summaryLine,``),url:H(e.url,``),verdict:H(e.verdict,`ERROR`).toUpperCase(),mode:H(e.mode,`investigate`),prUrl:/^https:\/\/[^\s"'<>]{1,300}$/.test(H(e.prUrl,``))?H(e.prUrl,``):``,at:Number.isFinite(Number(e.at))?Number(e.at):0})).sort((e,t)=>t.at-e.at)}function Hu(e,t){if(!t||t.size===0)return t;let n=Array.isArray(e?.investigations)?e.investigations:[],r=new Set;for(let e of n){if(typeof e!=`object`||!e)continue;let{id:t}=e;typeof t==`string`&&r.add(t)}for(let e of[...t])r.has(e)||t.delete(e);return t}function Uu(e,t){let n=H(e,``);if(n)return/^\d/.test(n)?`v${n}`:n;let r=le(t,{validate:!0});return r?`commit ${r}`:``}function Wu(e){return`Update available: ${Uu(e?.current,e?.currentSha)} to ${Uu(e?.latest,e?.latestSha)}`}function Gu({posthog:e}={}){let t=[],n=Array.isArray(e?.projects)?e.projects:[];for(let e of n){let n=H(e?.projectId,H(e?.name,`project`)),r=Array.isArray(e?.issues)?e.issues:[];for(let e=0;e<r.length;e++){let i=r[e],a=H(i?.issueId,H(i?.title,`#${e}`));i?.change===`spiking`&&t.push(`issue:${n}/${a}:spiking`),i?.verdict===`NEEDS_HUMAN`&&t.push(`issue:${n}/${a}:needs-human`)}}return t}function Ku(e={}){return Jl(Gu(e))}function qu(e){return eu[e??``]??nu}function Ju(e){return Array.isArray(e)?e.map((e,t)=>({issue:e,index:t})).sort((e,t)=>{let n=qu(e.issue?.change)-qu(t.issue?.change);if(n!==0)return n;let r=U(t.issue?.users,0)-U(e.issue?.users,0);if(r!==0)return r;let i=U(t.issue?.occurrences,0)-U(e.issue?.occurrences,0);return i===0?e.index-t.index:i}).map(e=>e.issue):[]}var Yu=Object.freeze({fetch:`Fetch`,stage:`Stage`,install:`Install dependencies`,"link-deps":`Link dependencies`,build:`Build`}),Xu=Object.freeze({"branch-count-unavailable":`The last check could not compare the checked-out branch with its upstream.`,"branch-diverged":`The checked-out branch has diverged from its upstream.`,"fetch-failed":`The last update check could not fetch the upstream branch.`,"main-channel-requires-clone":`The main channel requires a clone install.`,"no-branch":`The last update check found no checked-out branch.`,"no-upstream":`The checked-out branch has no upstream.`,"release-check-failed":`The last release check failed.`,"remote-tip-unavailable":`The last update check could not resolve the upstream branch tip.`,"update-check-failed":`The last update check failed.`}),Zu=Object.freeze([`unsupported-flavor`,`unsupported-platform`]),W=`Not connected to the server. Reconnecting.`,Qu=Object.freeze({requested:!1,failure:null});function $u(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function ed(e,t,n=null){return t===`request-sent`?{requested:!0,failure:null}:t===`request-unsent`?{requested:!1,failure:W}:t===`progress-frame`?Qu:t===`error-frame`?e.requested?{requested:!1,failure:n}:e:e.failure===null?e:{requested:e.requested,failure:null}}function td(e,t){return t?.state?t.state:e?.journalSummary?.state}function nd(e,t=null,n=null){return{actions:e,note:t,command:n}}function rd(e){let t=e?.applyRefusal;return t?Zu.includes(t.reason):!1}function id({status:e,journal:t,request:n=Qu}){if(n.failure===`Not connected to the server. Reconnecting.`)return nd([],W);let r=ad(td(e,t),e,n.requested);return n.failure?{...r,note:n.failure}:r}function ad(e,t,n){if(e===`running`||n)return nd([]);if(e===`staged`||od(t))return nd([`restart`]);if(!t?.updateAvailable)return nd([`check`]);let r=t.applyRefusal;return r?rd(t)?nd([`check`],r.message,H(t.command,null)):nd([`check`],r.message):nd([`update`])}function od(e){return e?.applyRefusal?.reason===`target-already-checked-out`}function sd(e){return e?.journalSummary?.state===`staged`||od(e)}function cd(e){return Xu[e]??`The last update check failed: ${e}.`}function ld(e){let t=H(e?.deprecation,null);return t?`Security notice: ${Uu(e?.current,e?.currentSha)||`This version`} is marked unsafe. ${t}`:null}function ud(e){let t=Uu(e?.latest,e?.latestSha)||`A new version`;if(sd(e))return{mode:`restart`,text:`${t} is ready. Restart to update, or it installs on the next start.`};if(e?.journalSummary?.state===`running`)return{mode:`link`,text:`Downloading ${t} in the background.`};let n=Wu(e);return!e||e.applyRefusal===void 0||rd(e)?{mode:`command`,text:n}:{mode:`link`,text:n}}function dd(e){let t=ud(e),n=ld(e);return n?sd(e)||e?.journalSummary?.state===`running`?{mode:t.mode,tone:`security`,text:`${n} ${t.text}`}:{mode:`command`,tone:`security`,text:n}:{...t,tone:`update`}}function fd(e){let t=H(e,``);return t?`: ${t}`:``}var pd=new Set([`idle`,`staged`,`succeeded`,`discarded`]);function md(e){return e.state===`failed`?`Update failed${fd(e.reason)}.`:e.state===`interrupted`?`Update interrupted${fd(e.reason)}.`:null}function hd(e){return Yu[e]??e}function gd(e){let t=e.steps.find(t=>t.id===e.activeStep);if(t&&t.outputTail.length>0)return{stepId:t.id,lines:t.outputTail};let n=e.steps.findLast(e=>e.outputTail.length>0);return n?{stepId:n.id,lines:n.outputTail}:{stepId:null,lines:[]}}function _d(e){if(!e||pd.has(e.state))return null;let t=gd(e),n=t.stepId!==null&&t.stepId!==e.activeStep?t.stepId:null;return{state:e.state,terminalLine:md(e),steps:e.steps.map(e=>({id:e.id,label:hd(e.id),status:e.status})),outputTail:t.lines,outputStepId:t.stepId,outputStepLabel:n===null?null:hd(n)}}var vd=6e5;function yd(e){return e.channel!==`main`||!Number.isInteger(e.behindCount)?``:`${e.behindCount} ${e.behindCount===1?`commit`:`commits`} behind`}function bd(e,t){let n=td(e,t),r=Uu(t?.toVersion,t?.toSha)||Uu(e?.latest,e?.latestSha)||`the update`;if(n===`running`)return{tone:`running`,headline:`Downloading ${r} in the background. Glimmervoid keeps running.`};if(n===`staged`)return{tone:`staged`,headline:`${r} is ready. Restart to update now, or it installs on the next start.`};if(!e)return{tone:`unknown`,headline:`No update check has run yet.`};let i=ld(e);if(i)return{tone:`security`,headline:i};if(od(e))return{tone:`staged`,headline:`${Uu(e.latest,e.latestSha)||`The latest release`} is already checked out. Restart to run it.`};if(e.updateAvailable)return{tone:`available`,headline:`Update available.`};let a=H(e.reason,``);return a?{tone:`unknown`,headline:cd(a)}:{tone:`current`,headline:`Up to date.`}}function xd(e){return e?.updateAvailable===!0||od(e)}function Sd(e){if(!e)return`Update status unavailable.`;let t=Uu(e.current,null)||`Unknown version`,n=le(e.currentSha,{validate:!0}),r=H(e.installedBranch,``);return[t,[n?`commit ${n}`:``,r?`on ${r}`:``].filter(Boolean).join(` `),e.isTreeClean===!0?`clean checkout`:e.isTreeClean===!1?`uncommitted local changes`:``].filter(Boolean).join(`, `)}function Cd(e){return e?{label:Uu(e.latest,e.latestSha)||`Latest target unknown`,behind:yd(e),releaseUrl:H(e.releaseUrl,``)}:{label:`Update status unavailable.`,behind:``,releaseUrl:``}}function wd({status:e,checkForUpdates:t,now:n,lastAutoCheckAt:r}){if(t===!1||r!==null&&n-r<vd)return!1;let i=typeof e?.lastCheckAt==`number`?e.lastCheckAt:null;return i===null||n-i>=vd}function Td({status:e,checkForUpdates:t,relativeTime:n}){return t===!1?`Update checks are off.`:e?e.flavor===`unknown`?`The install flavor is unknown.`:n:`No update check has run.`}var Ed=null,Dd=null,Od=0,kd=new Map,Ad=null,jd=0,Md=!1,Nd=0,Pd=0,Fd=null,Id=null;function Ld(e){Id=e}function Rd(e){Fd=e}function G(e){return Ed?.readyState===WebSocket.OPEN&&(Ed.send(JSON.stringify(e)),!0)}function zd(e){return Pd+=1,`${e}-${Pd}`}function K(e,t,{timeoutMs:n=5e3}={}){let r=zd(e);return new Promise((i,a)=>{let o=setTimeout(()=>{kd.delete(r),a(Error(`Request timed out`))},n);kd.set(r,{resolve:i,reject:a,timer:o}),Ed?.readyState===WebSocket.OPEN?Ed.send(JSON.stringify({type:e,requestId:r,...t})):(clearTimeout(o),kd.delete(r),a(Error(W)))})}function Bd(e){if(typeof e!=`object`||!e||!(`requestId`in e))return;let t=e.requestId;if(typeof t!=`string`)return;let n=kd.get(t);n&&(clearTimeout(n.timer),kd.delete(t),n.reject(Error(`The server sent a reply this dashboard could not read. Reload the page to pick up the current version.`)))}function Vd(e){for(let t of kd.values())clearTimeout(t.timer),t.reject(Error(e));kd.clear()}function Hd(){let e=Ed;Ed=null,Vd(W),Id&&Id(`disconnected`,`Reconnecting`),e?.close(),Od=0,Ud()}function Ud(){if(Dd!==null&&(Dd!==null&&clearTimeout(Dd),Dd=null),!El()&&!Md){Md=!0,Dl().finally(()=>{Md=!1,Ud()});return}if(Md)return;let e=Nd>0?`?since=${Nd}`:``,t=Cl(location,kl(`/control${e}`)),n=new WebSocket(t);Ed=n,jd=Date.now();let r=!1;n.addEventListener(`open`,()=>{r=!0,Od=0,Id&&Id(`connected`,`Connected`)}),n.addEventListener(`message`,e=>{if(Ed!==n)return;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[control] Dropped malformed server JSON message`);return}let r=Do.safeParse(t);if(!r.success){console.warn(`[control] Dropped invalid server message: ${r.error.issues[0]?.message||`invalid payload`}`),Bd(t);return}let i=r.data;if(i.type===`snapshot`&&typeof i.seq!=`number`&&(Nd=0),typeof i.seq==`number`){if(i.seq<=Nd)return;Nd=i.seq}let a=typeof i.requestId==`string`?i.requestId:``,o=a?kd.get(a):void 0;o?(clearTimeout(o.timer),kd.delete(a),o.resolve(i)):Fd&&Fd(i)}),n.addEventListener(`close`,()=>{if(Ed!==n)return;Ed=null,Vd(W),r||Ol(),Id&&Id(`disconnected`,`Reconnecting`);let e=vl(Od);Od+=1,Dd=setTimeout(Ud,e)})}async function Wd(){if(Id&&Id(`connecting`,`Connecting`),Ad)return Ad;let e=dee({hasSocket:!!Ed,readyState:Ed?.readyState??null,retryPending:Dd!==null,connectingAgeMs:Date.now()-jd});if(e===`retry-now`)return Dd!==null&&clearTimeout(Dd),Dd=null,Od=0,Ud(),`reconnecting`;if(e===`connect`)return Hd(),`reconnecting`;if(e===`wait`)return`reconnecting`;let t=Ed;return Ad=K(`ping`,{}).then(()=>(Id&&Id(`verified`,`Connected`),`ok`)).catch(()=>(Ed===t&&t&&Hd(),`dead`)).finally(()=>{Ad=null}),Ad}var Gd=`<h2 class="dialog-title" id="add-session-title">Add Session</h2>
|
|
4
|
+
<fieldset class="dialog-mode-controls" aria-label="Session kind">
|
|
5
|
+
<button type="button" class="dialog-mode-button" id="add-session-single-mode" aria-pressed="true">Single repo</button>
|
|
6
|
+
<button type="button" class="dialog-mode-button" id="add-session-workspace-mode" aria-pressed="false">Workspace</button>
|
|
7
|
+
</fieldset>
|
|
8
|
+
<label class="dialog-label" id="add-session-picker-label">
|
|
9
|
+
Pick a project:
|
|
10
|
+
<select class="dialog-input project-picker" id="add-session-picker">
|
|
11
|
+
<option value="" disabled selected>Scanning...</option>
|
|
12
|
+
</select>
|
|
13
|
+
</label>
|
|
14
|
+
<fieldset class="dialog-workspace-list" id="add-session-workspace-list" aria-label="Workspace repositories" hidden></fieldset>
|
|
15
|
+
<div class="dialog-repo-roots" id="add-session-repo-roots" hidden>
|
|
16
|
+
<p class="dialog-repo-roots-title" id="add-session-repo-roots-title">No repository roots yet</p>
|
|
17
|
+
<p class="dialog-repo-roots-desc">Add the folder that holds your git checkouts. Its repos show up right here.</p>
|
|
18
|
+
</div>
|
|
19
|
+
<label class="dialog-label" id="add-session-agent-label" hidden>
|
|
20
|
+
Agent
|
|
21
|
+
<select class="dialog-input" id="add-session-agent"></select>
|
|
22
|
+
</label>
|
|
23
|
+
<label class="dialog-label" id="add-session-environment-label" hidden>
|
|
24
|
+
Environment
|
|
25
|
+
<select class="dialog-input" id="add-session-environment"></select>
|
|
26
|
+
<span class="dialog-hint" id="add-session-environment-hint" hidden></span>
|
|
27
|
+
</label>
|
|
28
|
+
<div class="dialog-label" id="add-session-agent-login" hidden>
|
|
29
|
+
<span class="dialog-hint" id="add-session-agent-login-text"></span>
|
|
30
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-agent-connect">Connect</button>
|
|
31
|
+
</div>
|
|
32
|
+
<button type="button" class="dialog-advanced-toggle" id="add-session-advanced-toggle" aria-controls="add-session-advanced">Run in a folder outside your repository roots</button>
|
|
33
|
+
<div class="dialog-advanced-panel" id="add-session-advanced" hidden>
|
|
34
|
+
<label class="dialog-label">
|
|
35
|
+
Name
|
|
36
|
+
<input type="text" class="dialog-input" id="add-session-name" placeholder="my-project" autocomplete="off" spellcheck="false">
|
|
37
|
+
</label>
|
|
38
|
+
<label class="dialog-label" id="add-session-path-label">
|
|
39
|
+
Path
|
|
40
|
+
<input type="text" class="dialog-input" id="add-session-path" placeholder="Full path to the project folder" autocomplete="off" spellcheck="false">
|
|
41
|
+
</label>
|
|
42
|
+
</div>
|
|
43
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-run-in-place-label" hidden>
|
|
44
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-run-in-place">
|
|
45
|
+
<span>Run in this folder, no worktree</span>
|
|
46
|
+
<span class="dialog-hint">This folder is not a git repository with a commit, so the session cannot get its own worktree. The agent changes the folder itself, and nothing keeps its edits apart from yours. Run git init in it and make a first commit to keep them apart.</span>
|
|
47
|
+
</label>
|
|
48
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-skip-perms-label">
|
|
49
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-skip-perms">
|
|
50
|
+
<span>Skip permission prompts</span>
|
|
51
|
+
<span class="dialog-hint">The agent edits files and runs shell commands without asking first, so a bad instruction or a hostile file in the repo can act on this machine unchecked. Leave this off unless you trust the repo and the task.</span>
|
|
52
|
+
</label>
|
|
53
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-unguarded-label">
|
|
54
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-unguarded">
|
|
55
|
+
<span>Run without guardrails</span>
|
|
56
|
+
<span class="dialog-hint">Claude Code sessions run with guardrails that block writes to credentials and Glimmervoid's own state and hide credentials and other agents' settings. Turn this on only for work the guardrails cannot serve.</span>
|
|
57
|
+
</label>
|
|
58
|
+
<div class="dialog-error" id="add-session-error"></div>
|
|
59
|
+
<div class="dialog-actions">
|
|
60
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-cancel">Cancel</button>
|
|
61
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="add-session-confirm">Add</button>
|
|
62
|
+
</div>
|
|
63
|
+
`,Kd=`<h2 class="dialog-title" id="agent-connect-title">Connect</h2>
|
|
64
|
+
<p class="dialog-hint" id="agent-connect-intro"></p>
|
|
65
|
+
<p class="dialog-label" id="agent-connect-state" role="status"></p>
|
|
66
|
+
<div class="dialog-label" id="agent-connect-steps" hidden>
|
|
67
|
+
<span>1. Open <a class="dialog-link" id="agent-connect-link" href="about:blank" target="_blank" rel="noopener noreferrer">the sign-in page</a> and sign in.</span>
|
|
68
|
+
<span id="agent-connect-code-row" hidden>2. Enter this code there: <code id="agent-connect-code"></code></span>
|
|
69
|
+
<label class="dialog-label" id="agent-connect-paste-label" hidden>
|
|
70
|
+
2. Paste the code the page shows
|
|
71
|
+
<input type="text" class="dialog-input" id="agent-connect-paste" autocomplete="off" spellcheck="false">
|
|
72
|
+
</label>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="dialog-error" id="agent-connect-error"></div>
|
|
75
|
+
<div class="dialog-actions">
|
|
76
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="agent-connect-close">Close</button>
|
|
77
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="agent-connect-stop" hidden>Stop sign-in</button>
|
|
78
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="agent-connect-submit" hidden>Submit code</button>
|
|
79
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="agent-connect-start">Start sign-in</button>
|
|
80
|
+
</div>
|
|
81
|
+
`,qd=`http://www.w3.org/2000/svg`;function Jd(e,t){let n=document.createElementNS(qd,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function Yd(e,t){let n=document.createElementNS(qd,`svg`);return n.setAttribute(`width`,String(e)),n.setAttribute(`height`,String(t)),n.setAttribute(`viewBox`,`0 0 ${e} ${t}`),n.setAttribute(`aria-hidden`,`true`),n}var Xd=`M4 4L12 12M12 4L4 12`,Zd=`M12 8a4 4 0 1 1-8 0a4 4 0 1 1 8 0M8 1.5v2.5M8 12v2.5M1.5 8h2.5M12 8h2.5M3.4 3.4l1.77 1.77M10.83 10.83l1.77 1.77M3.4 12.6l1.77-1.77M10.83 5.17l1.77-1.77`,Qd=`M3 4h10M3 8h10M3 12h10`,$d=`M3 8h0.01M8 8h0.01M13 8h0.01`,ef=`M8 2.5v6M5 5.5h6M5 12.5h6`,tf=`M4.5 12.5h7a3 3 0 0 0 0.4-5.97a4 4 0 0 0-7.7 0.57a2.7 2.7 0 0 0 0.3 5.4z`;function nf(e){let t=Yd(16,16);return t.classList.add(`line-icon`),t.append(Jd(`path`,{d:e,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),t}function rf(e,t){let{class:n,...r}=t,i=Yd(16,16);return n!==void 0&&i.classList.add(n),i.append(Jd(e,r)),i}function af(e){let t=document.createElement(`span`);t.className=`status-icon`,t.dataset.icon=e;for(let n of or[e])t.append(rf(n.tag,n.attributes));return t}function of(e,t){e.dataset.icon!==t&&(e.dataset.icon=t,e.replaceChildren(af(t)))}var sf={busy:`text-text-muted`,ok:`text-state-done`,error:`text-state-failed`},q=15e3,fee=`Something went wrong. Details are hidden in streamer mode.`;function cf(e,t){return e!==`error`||t.startsWith(`Not connected to the server. Reconnecting.`)?t:document.documentElement.hasAttribute(`data-streamer`)?fee:t}var pee={busy:`working`,ok:`complete`,error:`failed`};function mee(e){let t=e.querySelector(`:scope > .action-status-icon`),n=e.querySelector(`:scope > .action-status-text`);if(t&&n&&e.childNodes.length===2)return{iconElement:t,textElement:n};let r=j(`span`,`action-status-icon`);r.setAttribute(`aria-hidden`,`true`);let i=j(`span`,`action-status-text`);return e.replaceChildren(r,i),{iconElement:r,textElement:i}}function lf(e){e.replaceChildren(),delete e.dataset.tone}function uf(e,t,n){if(!n){lf(e);return}if(!t){lf(e),e.textContent=n;return}e.dataset.tone=t;let{iconElement:r,textElement:i}=mee(e);of(r,pee[t]),i.textContent=cf(t,n)}function df(e=`action-status`){let t=j(`p`,e);return t.setAttribute(`role`,`status`),t.hidden=!0,{element:t,show:(n,r)=>{t.className=`${e} text-xs ${sf[n]}`,uf(t,n,r),t.hidden=!r},clear:()=>{t.hidden=!0,lf(t)}}}function hee(e,t){return G(e)?!0:(t.show(`error`,W),!1)}function ff(e,t){let n=e instanceof Error?e.message:``;return n===`Request timed out`?`The server did not answer within ${Math.round(t/1e3)} s.`:n||`Not connected to the server. Reconnecting.`}async function pf(e,t,n,{busyText:r,timeoutMs:i=q}={}){r&&n.show(`busy`,r);try{let r=await K(e,t,{timeoutMs:i});return n.clear(),r}catch(e){return n.show(`error`,ff(e,i)),null}}var mf=null,gee=3e4,hf=null;function gf(){let e=document.getElementById(`header-status`),t=document.getElementById(`header-status-text`),n=document.getElementById(`header-status-age`),r=document.getElementById(`header-status-dismiss`);return!e||!t||!n||!r?null:(r.dataset.wired===void 0&&(r.dataset.wired=``,r.addEventListener(`click`,bf)),{line:e,text:t,age:n})}function _f(){let e=gf();if(!e||!mf)return;let t=Vl(Date.now()-mf.raisedAt,{...Ll,justNowBelowSeconds:60});e.age.textContent!==t&&(e.age.textContent=t)}function vf({source:e,sessionId:t,message:n,hidesInStreamerMode:r=!0}){let i=gf();if(!i)return;let a=r?cf(`error`,n):n,o=j(`strong`,`header-status-source`,e);i.text.replaceChildren(o,` ${a}`),i.text.title=`${e}: ${a}`,mf={source:e,sessionId:t??null,raisedAt:Date.now()},_f(),hf??=window.setInterval(_f,gee),i.line.hidden=!1}function yf(e,t){mf?.source===e&&(t===void 0||mf.sessionId===t)&&bf()}function _ee(e){mf?.sessionId===e&&bf()}function bf(){mf=null,hf!==null&&window.clearInterval(hf),hf=null;let e=gf();e&&(e.line.hidden=!0,e.text.replaceChildren(),e.text.title=``,e.age.textContent=``)}var xf=`claude-code`,vee=Object.freeze({"claude-code":``,codex:`Codex`,grok:`Grok`});function yee(e){if(typeof e!=`string`)return``;let t=e.trim();return!t||t===`claude-code`?``:vee[t]||t}function Sf(e,{defaultId:t=xf}={}){let n=(Array.isArray(e)?e:[]).filter(e=>e?.resolvable&&typeof e.id==`string`&&e.id).map(e=>{let t=String(e.id);return{id:t,label:typeof e.label==`string`&&e.label?e.label:t}}),r=n.some(e=>e.id===t)?t:n.length>0?n[0].id:t;return{show:n.length>1,options:n,selectedId:r}}var bee=`No supported agent CLI was found on the PATH Glimmervoid runs with. Install Claude Code (or another supported agent), make sure its command is on that PATH, then run glimmervoid doctor to confirm.`;function Cf(e){let t=typeof e==`object`&&e?e:null;return t===null||!Array.isArray(t.agents)||t.error||Sf(t.agents).options.length>0?{canSpawn:!0,guidance:``}:{canSpawn:!1,guidance:bee}}var xee={agent:`upcoming`,repoRoots:`upcoming`,firstSession:`upcoming`};function wf(e,t){return e<t?`done`:e===t?`current`:`upcoming`}function See({agentListing:e,repoRoots:t}){let n=Cf(e).canSpawn?t.length===0?2:3:1;return{agent:wf(1,n),repoRoots:wf(2,n),firstSession:wf(3,n)}}var Cee=[[`agent`,`agent`],[`repoRoots`,`repo_roots`],[`firstSession`,`first_session`]];function Tf({step:e,state:t}){return`${e}:${t}`}function Ef(e,t){let n=[];for(let[r,i]of Cee){let a=t[r];if(a===`upcoming`)continue;let o={step:i,state:a};e.has(Tf(o))||n.push(o)}return n}function Df(e){return Sf(typeof e==`object`&&e?e.agents:[]).options.map(e=>e.label).join(`, `)}function Of(e){return e===1?`1 git repo`:`${e} git repos`}function wee(e,t){let n=t.trim();return!n||e.includes(n)?null:[...e,n]}var kf=0,Af=`Could not read the current repository roots.`;function jf(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function Mf(e){let t=await K(`get-settings`,{});if(t.type!==`settings`)return Af;let n=t.settings.repoRoots;if(!jf(n))return Af;let r=wee(n,e);if(!r)return null;let i=await K(`update-settings`,{settings:{repoRoots:r}});return i.type===`settings-error`?i.message:null}function Nf({onAdded:e}){kf+=1;let t=`repo-roots-adder-path-${kf}`,n=j(`div`,`repo-roots-adder`),r=j(`div`,`repo-roots-adder-found`),i=j(`span`,`repo-roots-adder-label`,`FOUND ON THIS MACHINE`),a=j(`ul`,`repo-roots-adder-list`);r.append(i,a),r.hidden=!0;let o=j(`label`,`repo-roots-adder-label`,`TYPE A PATH`);o.htmlFor=t;let s=j(`div`,`repo-roots-adder-row`),c=j(`input`,`dialog-input repo-roots-adder-input`);c.id=t,c.type=`text`,c.placeholder=`~/src`,c.autocomplete=`off`,c.spellcheck=!1;let l=j(`button`,`btn-dialog btn-dialog-cancel`,`Add`);l.type=`button`,l.disabled=!0,s.append(c,l);let u=j(`p`,`repo-roots-adder-error`);u.setAttribute(`role`,`alert`),n.append(r,o,s,u);let d=!1;function f(e){d=e;for(let t of n.querySelectorAll(`button`))t.disabled=e;e||(l.disabled=c.value.trim()===``)}async function p(t,n){if(!d){f(!0),u.textContent=``;try{let r=await Mf(t);if(r){u.textContent=r;return}c.value=``,e(n)}catch(e){u.textContent=`Could not save the folder: ${e instanceof Error?e.message:String(e)}`}finally{f(!1)}}}c.addEventListener(`input`,()=>{l.disabled=d||c.value.trim()===``}),c.addEventListener(`keydown`,e=>{e.key===`Enter`&&c.value.trim()!==``&&(e.preventDefault(),p(c.value.trim(),`typed`))}),l.addEventListener(`click`,()=>{p(c.value.trim(),`typed`)});function m(e){a.textContent=``;for(let t of e){let e=j(`li`,`repo-roots-adder-suggestion`),n=j(`button`,`btn-dialog btn-dialog-cancel`,`Add`);n.type=`button`,n.setAttribute(`aria-label`,`Add ${t.label}`),n.addEventListener(`click`,()=>{p(t.path,`suggested`)}),e.append(j(`span`,`repo-roots-adder-path`,t.label),j(`span`,`repo-roots-adder-count`,Of(t.gitRepoCount)),n),a.append(e)}r.hidden=e.length===0,o.textContent=e.length>0?`OR TYPE A PATH`:`TYPE A PATH`}return{element:n,setSuggestions:m}}function Pf(e){return[...document.querySelectorAll(`.dialog-overlay`)].at(-1)===e}function Ff({dialogClass:e=`dialog`,closeOnBackdrop:t=!0,onEscape:n}={}){let r=document.activeElement,i=document.createElement(`div`);i.className=`dialog-overlay`;let a=document.createElement(`div`);a.className=e,i.appendChild(a),document.body.appendChild(i);function o(e){e.key===`Escape`&&(n?Pf(i)&&n():s())}document.addEventListener(`keydown`,o);function s(){i.remove(),document.removeEventListener(`keydown`,o),r instanceof HTMLElement&&r.focus()}return t&&i.addEventListener(`click`,e=>{e.target===i&&s()}),{overlay:i,dialog:a,close:s}}function If(e,t){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,t),zf(e)}function Lf({title:e,dialogClass:t=`dialog`,cancelLabel:n=`Cancel`}){let{overlay:r,dialog:i,close:a}=Ff({dialogClass:t}),o=`dialog-title-${Math.random().toString(36).slice(2)}`,s=j(`h3`,`dialog-title`,e);s.id=o;let c=j(`div`,`dialog-actions`),l=j(`button`,`btn-dialog btn-dialog-cancel`,n);return c.append(l),i.append(s),If(i,o),{overlay:r,dialog:i,close:a,titleEl:s,actions:c,btnCancel:l}}function Rf({title:e,message:t,confirmLabel:n=`Confirm`,danger:r=!1,onConfirm:i}){let{dialog:a,close:o,actions:s,btnCancel:c}=Lf({title:e}),l=j(`p`,`dialog-message`,t),u=j(`button`,r?`btn-dialog btn-dialog-confirm btn-dialog-danger`:`btn-dialog btn-dialog-confirm`,n);s.append(u),a.append(l,s),c.addEventListener(`click`,o),u.addEventListener(`click`,()=>{o(),i?.()}),requestAnimationFrame(()=>c.focus())}function zf(e){e.addEventListener(`keydown`,t=>{if(t.key!==`Tab`)return;let n=[...e.querySelectorAll(`button, input, select, textarea, [tabindex]:not([tabindex="-1"])`)];if(n.length===0)return;let r=n[0],i=n[n.length-1];t.shiftKey&&document.activeElement===r?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),r.focus())})}function Bf(e){return e instanceof Error?e.message:String(e)}function Vf(e,t,n=!1){let r=j(`label`,`dialog-checkbox-label`),i=j(`input`);return i.type=`checkbox`,i.className=`dialog-checkbox`,i.value=t,i.checked=n,r.append(i,j(`span`,null,e)),r}function Hf(e){return e.split(/[\\/]/).filter(Boolean).at(-1)??e}async function Uf(e){let[t,n]=await Promise.all([K(`get-workspace-repos`,{id:e}),K(`scan-repo-roots`,{}).catch(()=>null)]);if(t.type!==`workspace-repos`)throw Error(`Unexpected reply`);if(!t.ok)throw Error(t.error||`Could not read the workspace`);let r=t.repos.map(e=>({name:Hf(e),path:e,isMember:!0})),i=new Set(t.repos),a=n?.type===`repo-roots-scanned`?n.directories:[];for(let e of a.flatMap(e=>e.projects))i.has(e.path)||(i.add(e.path),r.push({name:e.name,path:e.path,isMember:!1}));return r}function Wf(e){let{overlay:t,dialog:n,close:r,actions:i,btnCancel:a}=Lf({title:`Workspace repositories`}),o=j(`p`,`dialog-message`,`Saving restarts the session and resumes its conversation. A removed repository keeps its workspace branch, so committed work survives.`),s=j(`fieldset`,`dialog-workspace-list`);s.setAttribute(`aria-label`,`Workspace repositories`),s.append(j(`div`,`dialog-hint`,`Loading repositories...`));let c=j(`div`,`dialog-hint`);c.setAttribute(`role`,`status`);let l=j(`div`,`dialog-error`),u=j(`button`,`btn-dialog btn-dialog-confirm`,`Save`);u.type=`button`,u.disabled=!0,i.append(u),n.append(o,s,c,l,i),a.addEventListener(`click`,r),requestAnimationFrame(()=>a.focus()),Uf(e).then(e=>{if(t.isConnected){s.textContent=``;for(let t of e)s.append(Vf(t.name,t.path,t.isMember));u.disabled=!1}}).catch(e=>{t.isConnected&&(s.textContent=``,l.textContent=`Could not load repositories: ${Bf(e)}`)}),u.addEventListener(`click`,()=>{let n=[...s.querySelectorAll(`input:checked`)].map(e=>e.value);n.length<2?l.textContent=`Select at least two repositories.`:(l.textContent=``,u.disabled=!0,c.textContent=`Saving`,K(`set-workspace-repos`,{id:e,repos:n}).then(e=>{if(!t.isConnected)return;if(e.type===`set-workspace-repos-result`&&e.ok){r();return}let n=e.type===`set-workspace-repos-result`?e.error:null;l.textContent=n||`Could not update the workspace.`}).catch(e=>{t.isConnected&&(l.textContent=`Could not update the workspace: ${Bf(e)}`)}).finally(()=>{c.textContent=``,u.disabled=!1}))})}function Gf(e,t){if(e===t)return!0;let n=`${t} (`;if(!e.startsWith(n)||!e.endsWith(`)`))return!1;let r=e.slice(n.length,-1);return/^\d+$/.test(r)}function Kf(e,t){let n=0;for(let r of t)Gf(r,e)&&n++;return n}function qf(e,t){let n=new Set(t);if(!n.has(e))return e;for(let t=2;t<1e3;t++){let r=`${e} (${t})`;if(!n.has(r))return r}return`${e} (${Date.now()})`}function Jf(){let e=[];for(let[,t]of P)e.push(t.card.dataset.session??``);return e}function Yf(e){return Kf(e,Jf())}function Xf(e){return qf(e??``,Jf())}var Zf=320,Qf=8e3,$f=new Set;function ep(e){$f.add(e)}var tp=(e,t)=>{for(let n of $f)n(e,t)},np=window.matchMedia?.(`(prefers-reduced-motion: reduce)`);function rp(e){np?.matches||document.hidden||e?.animate&&e.animate([{transform:`scale(1)`,opacity:.65},{transform:`scale(1.35)`,opacity:1,offset:.3},{transform:`scale(1)`,opacity:.9}],{duration:300,easing:`cubic-bezier(0.22, 1, 0.36, 1)`})}function Tee(e){if(!e||e.currentState!==A.RUNNING)return;let t=performance.now();e._lastOutputAt=t,!(t-(e._activityGate||0)<Zf)&&(e._activityGate=t,e._activity===`quiet`&&(e._activity=`active`,tp(e,`flag`)),tp(e,`beat`))}function Eee(e){if(!e||e.currentState!==A.RUNNING)return;let t=performance.now()-(e._lastOutputAt||0)>=Qf?`quiet`:`active`;e._activity!==t&&(e._activity=t,tp(e,`flag`))}function ip(e,t){e&&(t&&(e._lastOutputAt=performance.now(),e._activityGate=0,e._activity=`active`),t||(e._activity=void 0),tp(e,`flag`))}var ap=new Set([A.RUNNING,A.WAITING,A.STARTING,A.INITIALIZING]),op=e=>ap.has(e);function sp(e){return op(e.currentState)?Ul(Date.now()-(e.stateSince||Date.now()),{rounding:`floor`,showsHours:!0}):``}var cp=new Set;function lp(e){return cp.add(e),()=>cp.delete(e)}function up(){for(let[,e]of P)Eee(e);for(let e of cp)try{e()}catch{}}setInterval(()=>{document.hidden||up()},1e3),document.addEventListener(`visibilitychange`,()=>{document.hidden||up()});function dp(e){return Vl(Number(e)||0,{rounding:`round`,wording:`compact`,suffix:``,justNowBelowSeconds:0})}function fp(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?`never`:`${dp(Date.now()-e)} ago`}var pp=e=>`polled ${fp(e)}`;function mp(e){let t=[],n=[],r=null,i=e=>{let t=e.format(e.ts);e.el.textContent!==t&&(e.el.textContent=t)},a=()=>{let r=e();if(r&&!r.closest(`[hidden]`)){for(let e of t)i(e);for(let e of n)e()}};return{track(e,n,r=pp){let a={el:e,ts:n,format:r};i(a),t.push(a)},onTick(e){n.push(e)},reset(){t=[],n=[]},ensure(){r||=lp(a)}}}function hp(e,{value:t,disabled:n=!1,selected:r=!1}={}){let i=j(`option`,null,e);return t!=null&&(i.value=t),n&&(i.disabled=!0),r&&(i.selected=!0),i}function gp(e){return typeof e!=`object`||!e?!1:`skipPermissionsByDefault`in e&&e.skipPermissionsByDefault===!0}function _p(e){if(typeof e!=`object`||!e||!(`coderEnvironments`in e))return[];let t=oee.safeParse(e.coderEnvironments);return t.success&&t.data?t.data:[]}function vp(e){let t=Object.entries(e.parameters).map(([e,t])=>`${e}=${t}`).join(`, `);return[`Template ${e.template}.`,t?`Parameters: ${t}.`:``,e.hourlyCostUsd===null?``:`Costs $${e.hourlyCostUsd.toFixed(2)} an hour.`,`Stops after ${e.idleStopMinutes} idle minutes.`].filter(Boolean).join(` `)}var yp=Object.freeze({"claude-code":`Claude Code`,codex:`Codex`}),bp=[],xp=new Set;function Sp(e){let t=po.safeParse(e);if(t.success){bp=t.data;for(let e of xp)e()}}function Cp(e){return bp.find(t=>t.agent===e)??null}function wp(e){return xp.add(e),()=>{xp.delete(e)}}function Tp(e){let t=fo.safeParse(e);return t.success?t.data:null}function Ep(e,t){let n=yp[t];return e?e.state===`signed-in`&&e.source===`host`?`${n} uses the login already on this machine.`:e.state===`signed-in`?`${n} uses the login Glimmervoid connected.`:e.state===`connecting`?e.reason??`${n} sign-in is waiting for you.`:e.state===`failed`?e.reason??`${n} sign-in failed.`:`${n} has no login on this machine, so remote ${n} sessions cannot sign in.`:`Checking whether ${n} is signed in.`}function Dp(){K(`get-agent-logins`,{},{timeoutMs:q}).then(e=>{e.type===`agent-logins`&&Sp(e.logins)}).catch(()=>{})}function Op(e){let t=yp[e],{dialog:n,close:r}=Ff();n.innerHTML=Kd,If(n,`agent-connect-title`),N(n,`#agent-connect-title`).textContent=`Connect ${t}`,N(n,`#agent-connect-intro`).textContent=`Glimmervoid signs ${t} in for its own remote sessions and keeps that login in its own folder, apart from any login you already have on this machine. The sign-in runs here and is never recorded.`;let i=N(n,`#agent-connect-state`),a=N(n,`#agent-connect-steps`),o=M(n,`#agent-connect-link`,`a`),s=N(n,`#agent-connect-code-row`),c=N(n,`#agent-connect-code`),l=N(n,`#agent-connect-paste-label`),u=M(n,`#agent-connect-paste`,`input`),d=N(n,`#agent-connect-error`),f=M(n,`#agent-connect-close`,`button`),p=M(n,`#agent-connect-stop`,`button`),m=M(n,`#agent-connect-submit`,`button`),h=M(n,`#agent-connect-start`,`button`);function g(){if(!n.isConnected){v();return}let t=Cp(e),r=t?.state===`connecting`;i.textContent=Ep(t,e),h.hidden=r,p.hidden=!r;let u=r?t.verificationUrl:null;a.hidden=u===null,o.href=u??``,o.textContent=u??``,s.hidden=!t?.userCode,c.textContent=t?.userCode??``;let d=r&&t.needsPastedCode;l.hidden=!d,m.hidden=!d}async function _(t,n,r){r.disabled=!0,d.textContent=``;try{let r=await K(t,{agent:e,...n},{timeoutMs:q});if(r.type!==`agent-logins`)return;Sp(r.logins),r.error&&(d.textContent=r.error)}catch(e){d.textContent=`The server did not answer (${ff(e,q)}).`}finally{r.disabled=!1}}h.addEventListener(`click`,()=>{_(`agent-connect`,{action:`start`},h)}),p.addEventListener(`click`,()=>{_(`agent-connect`,{action:`cancel`},p)}),m.addEventListener(`click`,()=>{let e=u.value;u.value=``,_(`agent-connect-code`,{code:e},m)}),u.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),m.click())}),f.addEventListener(`click`,r);let v=wp(g);g(),Dp()}function Dee(){let{dialog:e,close:t,actions:n,btnCancel:r}=Lf({title:`Set up a remote host`}),i=j(`p`,`dialog-hint`,`The setup session runs outside the guardrails so it can use your ssh keys. It runs commands on the remote host over ssh and asks before each one. Glimmervoid deletes its working folder when the session ends.`),a=j(`p`,`dialog-label`,`Agent`),o=j(`div`,`hooks-type-row`);o.setAttribute(`role`,`radiogroup`);let s=df(),c=j(`button`,`btn-dialog btn-dialog-confirm`,`Start setup`);c.type=`button`,r.type=`button`,r.addEventListener(`click`,t),n.append(c),e.append(i,a,o,s.element,n);let l=null,u=!1;function d(){if(!e.isConnected){f();return}let t=fo.options.filter(e=>Cp(e)?.state===`signed-in`);(l===null||!t.includes(l))&&(l=t[0]??null),o.replaceChildren(...t.map(e=>{let t=j(`label`,`settings-view-toggle hooks-choice`),n=j(`input`,`settings-view-checkbox`);return n.type=`radio`,n.name=`remote-setup-agent`,n.checked=e===l,n.addEventListener(`change`,()=>{l=e}),t.append(n,j(`span`,null,yp[e])),t})),t.length===0&&o.append(j(`span`,``,`Sign in to Claude Code or Codex on this machine first.`)),c.disabled=u||l===null}c.addEventListener(`click`,async()=>{if(l!==null){u=!0,c.disabled=!0,s.show(`busy`,`Starting the setup session.`);try{let e=await K(`start-remote-setup`,{agent:l},{timeoutMs:q});if(e.type===`start-remote-setup-result`&&e.ok){t();return}s.show(`error`,e.type===`start-remote-setup-result`&&e.error?e.error:`The setup session did not start.`)}catch(e){s.show(`error`,`The server did not answer (${ff(e,q)}).`)}finally{u=!1,d()}}});let f=wp(d);d(),Dp()}function kp(e){return e.type===`add-session-result`&&e.error?e.error:e.type===`error`?e.message:`The session was not added.`}function Ap(){Mp(null)}function jp(e){Mp(e)}function Mp(e){let{dialog:t,close:n}=Ff();t.innerHTML=Gd,If(t,`add-session-title`);let r=M(t,`#add-session-picker`,`select`),i=N(t,`#add-session-picker-label`),a=N(t,`#add-session-workspace-list`),o=M(t,`#add-session-single-mode`,`button`),s=M(t,`#add-session-workspace-mode`,`button`),c=N(t,`#add-session-agent-label`),l=M(t,`#add-session-agent`,`select`),u=N(t,`#add-session-environment-label`),d=M(t,`#add-session-environment`,`select`),f=N(t,`#add-session-environment-hint`),p=N(t,`#add-session-agent-login`),m=N(t,`#add-session-agent-login-text`),h=M(t,`#add-session-agent-connect`,`button`),g=N(t,`#add-session-repo-roots`),_=N(t,`#add-session-repo-roots-title`),v=M(t,`#add-session-advanced-toggle`,`button`),y=N(t,`#add-session-advanced`),b=M(t,`#add-session-name`,`input`),x=M(t,`#add-session-path`,`input`),S=N(t,`#add-session-path-label`),ee=M(t,`#add-session-skip-perms`,`input`),te=M(t,`#add-session-unguarded`,`input`),ne=N(t,`#add-session-run-in-place-label`),re=M(t,`#add-session-run-in-place`,`input`),C=N(t,`#add-session-error`),ie=M(t,`#add-session-cancel`,`button`),ae=M(t,`#add-session-confirm`,`button`),oe=!1,se=[],ce=null,le=!1;function w(e){oe=e,o.setAttribute(`aria-pressed`,String(!e)),s.setAttribute(`aria-pressed`,String(e)),i.hidden=e,a.hidden=!e,v.hidden=e,v.setAttribute(`aria-expanded`,String(e)),y.hidden=!e,S.hidden=e,e&&requestAnimationFrame(()=>b.focus())}o.addEventListener(`click`,()=>w(!1)),s.addEventListener(`click`,()=>w(!0)),v.setAttribute(`aria-expanded`,`false`),v.addEventListener(`click`,()=>{let e=y.hidden;y.hidden=!e,v.setAttribute(`aria-expanded`,String(e)),e&&requestAnimationFrame(()=>b.focus())});let T=Nf({onAdded:pe});g.append(T.element);let ue=df(`dialog-hint`),E=j(`button`,`btn-dialog btn-dialog-cancel`,`Scan again`);E.type=`button`,E.hidden=!0,E.addEventListener(`click`,()=>{pe()});let D=j(`div`,`flex items-center gap-2`);D.append(ue.element,E),g.before(D);function de(e){r.textContent=``,r.appendChild(hp(`Scan failed`,{disabled:!0,selected:!0})),a.textContent=``,ue.show(`error`,`The project scan failed: ${e}`),E.hidden=!1,E.disabled=!1}function fe(e){let t=e.type===`repo-roots-scanned`;_.textContent=t&&e.directories.length>0?`No projects in your repository roots yet`:`No repository roots yet`,T.setSuggestions(t?e.suggestions??[]:[]),g.hidden=!1}function pe(){return E.disabled=!0,ue.show(`busy`,`Scanning your repository roots`),K(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q}).then(e=>{if(e.type===`repo-roots-scanned`&&e.error){de(e.error);return}ue.clear(),E.hidden=!0,r.textContent=``,a.textContent=``,g.hidden=!0,r.appendChild(hp(`-- Select a project --`,{value:``,disabled:!0,selected:!0}));let t=!1,n=e.type===`repo-roots-scanned`?e.directories:[];for(let e of n){if(e.projects.length===0)continue;let n=j(`optgroup`);n.label=e.root;for(let r of e.projects){let e=Yf(r.name),i=e>0?`${r.name} (${e} open)`:r.name,o=r.isGit===!1?`${i} (not a git repo)`:i;n.appendChild(hp(o,{value:JSON.stringify({name:r.name,path:r.path,isGit:r.isGit!==!1})})),a.appendChild(Vf(r.name,r.path)),t=!0}r.appendChild(n)}t||(r.textContent=``,r.appendChild(hp(`No projects yet`,{disabled:!0,selected:!0})),a.textContent=`No projects yet.`,fe(e))}).catch(e=>{de(ff(e,q))})}pe(),r.addEventListener(`change`,()=>{try{let e=JSON.parse(r.value);b.value=Xf(e.name),x.value=e.path,xe(!e.isGit)}catch{}});let me=xf,he=!1;function ge(e){let t=j(`p`,`dialog-hint dialog-hint-warning`,e);return t.setAttribute(`role`,`status`),C.before(t),t}function _e(e){he=!0,ae.disabled=!0,ge(e).id=`add-session-agent-guidance`}K(`list-agents`,{},{timeoutMs:q}).then(e=>{let t=Cf(e);t.canSpawn||_e(t.guidance);let n=Sf(e.type===`agents-listed`?e.agents:[]);if(me=n.selectedId,n.show){l.textContent=``;for(let e of n.options)l.appendChild(hp(e.label,{value:e.id,selected:e.id===n.selectedId}));c.hidden=!1}}).catch(e=>{ge(`Could not load the agent list (${ff(e,q)}), so the session uses the default agent.`)}),l.addEventListener(`change`,()=>{me=l.value,ve()});function ve(){if(!t.isConnected){ye();return}let e=Tp(me),n=e?Cp(e):null;p.hidden=ce===null||e===null||n===null||n.state===`signed-in`,m.textContent=e?Ep(n,e):``}h.addEventListener(`click`,()=>{let e=Tp(me);e&&Op(e)});let ye=wp(ve);Dp();let be=!1;ee.addEventListener(`change`,()=>{be=!0}),K(`get-settings`,{},{timeoutMs:q}).then(e=>{e.type===`settings-error`?ge(`Could not load your settings (${e.message}). Check Skip permissions yourself.`):(Se(_p(e.settings)),!be&&(ee.checked=gp(e.settings)))}).catch(e=>{ge(`Could not load your settings (${ff(e,q)}). Check Skip permissions yourself.`)});function xe(e){le=e,ne.hidden=!e||ce!==null,re.checked=!1}function Se(e){if(e.length!==0){se=e,d.textContent=``,d.appendChild(hp(`Local`,{value:``,selected:!0}));for(let t of e)d.appendChild(hp(t.name,{value:t.name}));u.hidden=!1}}d.addEventListener(`change`,()=>{ce=se.find(e=>e.name===d.value)??null,s.hidden=ce!==null,f.hidden=ce===null,f.textContent=ce?vp(ce):``,xe(le),ve(),ce!==null&&oe&&w(!1)}),b.addEventListener(`input`,()=>{r.selectedIndex=0}),x.addEventListener(`input`,()=>{r.selectedIndex=0,xe(!1)});function Ce(){if(he)return;let e=b.value.trim(),t=x.value.trim();if(oe){let t=[...a.querySelectorAll(`input:checked`)].map(e=>e.value);if(!e||t.length<2){C.textContent=`Enter a name and select at least two repositories.`;return}let n={name:Xf(e),path:t[0],repos:t,dangerouslySkipPermissions:ee.checked,unguarded:te.checked};me&&me!==`claude-code`&&(n.agent=me),we(n);return}if(!e||!t){C.textContent=`Both fields are required. Select a project or use Advanced options.`;return}let n={name:Xf(e),path:t,dangerouslySkipPermissions:ee.checked,unguarded:te.checked,runInPlace:re.checked};me&&me!==`claude-code`&&(n.agent=me),ce&&(n.environment=ce.name),we(n)}function we(e){ae.disabled=!0,C.textContent=``,K(`add-session`,e,{timeoutMs:q}).then(e=>{e.type===`add-session-result`&&e.ok?n():(C.textContent=kp(e),e.type===`add-session-result`&&e.reason===`not-git`&&(ne.hidden=!1))}).catch(e=>{C.textContent=`The session was not added: ${ff(e,q)}`}).finally(()=>{ae.disabled=he})}ie.addEventListener(`click`,n),ae.addEventListener(`click`,Ce),b.addEventListener(`keydown`,e=>{e.key===`Enter`&&(oe&&Ce(),oe||x.focus())}),x.addEventListener(`keydown`,e=>{e.key===`Enter`&&Ce()}),e?(y.hidden=!1,v.setAttribute(`aria-expanded`,`true`),b.value=e.name,x.value=e.path,xe(!0),requestAnimationFrame(()=>re.focus())):requestAnimationFrame(()=>r.focus())}function Np({issueId:e,issueTitle:t,format:n,content:r,message:i,error:a}){let{dialog:o,close:s,actions:c,btnCancel:l}=Lf({title:`Investigation report`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),u=j(`div`,`dialog-report-meta`,t||e||``),d=null;if(n===`html`&&!a&&!i){let e=j(`iframe`,`dialog-report-frame`);e.setAttribute(`sandbox`,``),e.srcdoc=r||``,d=e}d||=j(`pre`,a?`dialog-report-body dialog-report-error`:`dialog-report-body`,a||i||r||``),o.append(u,d,c),l.addEventListener(`click`,s),requestAnimationFrame(()=>l.focus())}function Pp({issueTitle:e,projectLabel:t,onOpenReport:n}){let{dialog:r,close:i,actions:a,btnCancel:o}=Lf({title:`Investigation`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),s=j(`div`,`dialog-report-meta`,t?`${t}: ${e}`:e),c=j(`p`,`dialog-trail-status`),l=j(`p`,`dialog-trail-summary`),u=j(`ol`,`dialog-trail-steps`),d=j(`p`,`dialog-trail-empty`,`No tool calls yet; the session is reading the issue.`),f=j(`button`,`btn-dialog btn-dialog-cancel`,`Open report`);f.type=`button`,f.hidden=!0,f.addEventListener(`click`,()=>{i(),n()}),a.prepend(f),r.append(s,c,l,u,d,a),o.addEventListener(`click`,i),requestAnimationFrame(()=>o.focus());let p=null,m=``;function h(e){let t=u.scrollHeight-u.scrollTop-u.clientHeight<24,n=yu(e);if(m!==n){u.textContent=``;for(let t of cu(e.steps)){let n=j(`li`,`dialog-trail-step dialog-trail-${t.kind}`),r=t.kind===`note`?t.text:`${t.stepCount} ${t.stepCount===1?`step`:`steps`}`;n.append(j(`span`,`dialog-trail-at`,vu(e.startedAt,t.at)),j(`span`,`dialog-trail-detail`,r)),u.append(n)}m=n}d.hidden=e.steps.length>0||!e.inFlight,u.hidden=e.steps.length===0,t&&(u.scrollTop=u.scrollHeight)}function g(e){c.textContent=bu(e,fp(e.startedAt))}function _(){p&&(g(p),c.dataset.tone=p.inFlight?`live`:`done`,l.textContent=p.summaryLine,l.hidden=!p.summaryLine,f.hidden=p.inFlight||!p.verdict,h(p))}let v=lp(()=>{r.isConnected?p?.inFlight&&g(p):v()});return{update(e){p=e,_()},isOpen:()=>r.isConnected,close:()=>{v(),i()}}}function Fp(e,t,n){return{body:String(n||`Session needs attention`),tag:`glimmervoid-${e||``}-${t||``}`,renotify:!0,silent:!0}}var Ip=4e3;function Lp(e,t){return`glimmervoid-notify-claim-${e||``}-${t||``}`}function Rp(e,t,n,r=Ip){try{let i=e.getItem(t);if(i){let e=Number(i);if(Number.isFinite(e)&&n-e<r)return!1}return e.setItem(t,String(n)),!0}catch{return!0}}var zp=`#plan/`;function Bp(e){return`${zp}${encodeURIComponent(e)}`}function Vp(e){if(!e.startsWith(zp))return null;let t=e.slice(6);if(!t||t.includes(`/`))return null;try{return decodeURIComponent(t)||null}catch{return null}}function Hp(){return typeof Notification>`u`?null:Notification}function Up(){return Hp()!==null}function Wp(){let e=Hp();return e?e.permission:`unavailable`}async function Gp(){let e=Hp();if(!e)return`denied`;if(e.permission!=="default")return e.permission;try{return await e.requestPermission()}catch{return e.permission}}function Kp(){return!Up()&&!window.isSecureContext?`Browsers allow desktop notifications only over HTTPS or on localhost, and this page is plain HTTP on another address. Open the dashboard on localhost, or use Telegram.`:Up()?Wp()===`denied`&&lc()?`Blocked by the browser. Allow notifications for this site in its site settings.`:null:`This browser does not support desktop notifications.`}function qp(){return lc()&&Wp()==="default"}function Jp(e=()=>{}){let t=j(`div`,`notification-permission`),n=()=>{let r=Kp();if(t.replaceChildren(),t.hidden=!r&&!qp(),r){t.append(j(`p`,`notification-permission-hint text-xs text-text-muted`,r));return}let i=j(`button`,`btn-dialog btn-dialog-cancel`,`Enable desktop notifications`);i.type=`button`,i.addEventListener(`click`,()=>{i.disabled=!0,Gp().then(()=>{n(),e()})}),t.append(i)};return n(),{element:t,refresh:n}}var Yp=`Notifications`,Xp=`Desktop notifications are blocked by the browser, so alerts show only in this tab. Allow notifications for this site to get them again.`,Zp=new Map,Qp=!1;function $p(){Qp||(Qp=!0,vf({source:Yp,message:Xp,hidesInStreamerMode:!1}))}function em(e,t){let n=Zp.get(e)??new Set;n.add(t),Zp.set(e,n),t.addEventListener(`close`,()=>n.delete(t))}function tm(e){let t=Zp.get(e);if(t){Zp.delete(e);for(let e of t)e.close()}}function nm({session:e,category:t,message:n,kind:r,ignoreFocus:i=!1}={}){let a=Hp();if(!a||!lc()||document.documentElement.hasAttribute(`data-streamer`)||!i&&typeof document<`u`&&typeof document.hasFocus==`function`&&document.hasFocus()||(a.permission===`denied`&&$p(),a.permission!==`granted`)||(yf(Yp),!Rp(window.localStorage,Lp(e,t),Date.now())))return;let o=typeof e==`string`?e:``,s=P.get(o),c=s?wr(s):``;try{let i=new a(c||`Glimmervoid`,Fp(e,t,n));i.onclick=()=>{window.focus(),r===`plan`&&o&&(window.location.hash=Bp(o)),i.close()},s&&em(o,i)}catch{}}function rm(e,t=null){return`#settings/${encodeURIComponent(e)}${t?`/${encodeURIComponent(t)}`:``}`}function im(e){return/^#settings(?:[/?]|$)/.test(e)}function am(e){let t=e.trim();return t?`#settings?q=${encodeURIComponent(t)}`:`#settings`}function om(e,t,n){let r=j(`a`,`settings-link`,n);return r.href=rm(e,t),r}var sm=Ns(navigator.userAgent),cm=`next-attention-keys`,lm=hc();function um(){return lm}function dm(e,t){t.forEach((t,n)=>{n>0&&e.appendChild(j(`span`,`shortcut-sep`,`+`)),e.appendChild(j(`kbd`,`kbd`,t))})}function fm(e){let t=j(`span`,`shortcut-keys`);return dm(t,e),t}function pm(){let e=fm(Hs(`next-attention`,sm,lm));return e.classList.add(cm),e}function mm(e){lm=e;let t=Hs(`next-attention`,sm,e);for(let e of document.querySelectorAll(`.${cm}`))e.replaceChildren(),dm(e,t)}var hm=`npm install -g @anthropic-ai/claude-code`,gm={done:`<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" role="img" aria-label="Done"><circle cx="12" cy="12" r="10"></circle><path d="M7.5 12.5l3 3 6-6.5"></path></svg>`,current:`<svg width="18" height="18" viewBox="0 0 24 24" role="img" aria-label="Needed"><path d="M12 3l9 9-9 9-9-9z" fill="currentColor"></path></svg>`,upcoming:`<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" role="img" aria-label="Not started"><circle cx="12" cy="12" r="10"></circle></svg>`},_m=null,vm=null,ym=null,bm=null,xm={steps:xee,agentSummary:``,repoRoots:[]},Sm=0,Cm=new Set,wm=df(`first-run-load-status`),Tm=Jp();function Em(e){G({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`onboarding`,action:e}})}function Dm(e){for(let t of Ef(Cm,e))G({type:`dashboard-telemetry`,event:`onboarding_step`,properties:t})&&Cm.add(Tf(t))}function Om({title:e,state:t,summary:n,badge:r,body:i}){let a=j(`li`,`first-run-step`);a.dataset.state=t,t===`current`&&a.setAttribute(`aria-current`,`step`);let o=j(`div`,`first-run-step-head`),s=j(`span`,`first-run-step-icon`);if(s.innerHTML=gm[t],o.append(s,j(`span`,`first-run-step-title`,e)),t===`done`&&n&&o.append(j(`span`,`first-run-step-summary`,n)),t===`current`&&r&&o.append(j(`span`,`first-run-step-badge`,r)),a.append(o),t!==`current`)return a;let c=j(`div`,`first-run-step-body`);return c.append(...i()),a.append(c),a}function km(){let e=j(`div`,`first-run-step-actions`);return ym=j(`button`,`btn-dialog btn-dialog-cancel`,`Rescan`),ym.type=`button`,ym.addEventListener(`click`,()=>{Em(`rescan`),Nm({rescanAgents:!0})}),e.append(ym,j(`span`,`first-run-step-hint`,`Any other terminal agent can be added under customAgents.`)),[j(`p`,`first-run-step-text`,`No supported agent is on PATH. Install Claude Code, Codex or Grok, then rescan. Rescan still finding nothing means the CLI went into a folder the server cannot see: restart Glimmervoid from a terminal where the command runs.`),j(`code`,`first-run-command`,hm),e]}function Am(){let e=bm??Nf({onAdded:e=>{Em(e===`typed`?`add-root-typed`:`add-root-suggested`),Nm({rescanAgents:!1})}});return bm=e,[j(`p`,`first-run-step-text`,`The folder that holds your git checkouts. Each subfolder becomes a project you can start a session in.`),e.element]}function jm(){let e=j(`div`,`first-run-step-actions`),t=j(`button`,`btn-dialog btn-dialog-confirm`,`+ Session`);t.type=`button`,t.addEventListener(`click`,()=>{Em(`add-session`),Ap()});let n=j(`span`,`first-run-step-hint`,`Folders and agents can change later in `);n.append(om(`machine-sessions`,`repository-roots`,`Settings > Sessions`),`.`),e.append(t,n);let r=j(`p`,`first-run-step-text`,`Run a few at once. When one needs you, `);return r.append(pm(),` jumps straight to it from any tab.`),[j(`p`,`first-run-step-text`,`Pick a project and an agent. The session runs in its own git worktree, so your checkout is never touched.`),r,e]}function Mm(){if(!vm)return;let{steps:e,agentSummary:t,repoRoots:n}=xm;vm.replaceChildren(Om({title:`1. Agent CLI`,state:e.agent,summary:t,badge:`MISSING`,body:km}),Om({title:`2. Repository roots`,state:e.repoRoots,summary:n.join(`, `),badge:`NEEDED`,body:Am}),Om({title:`3. First session`,state:e.firstSession,summary:``,badge:``,body:jm}))}async function Nm({rescanAgents:e}){Sm+=1;let t=Sm;ym&&(ym.disabled=!0);try{let[n,r]=await Promise.all([K(`list-agents`,e?{rescan:!0}:{},{timeoutMs:q}),K(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q})]);if(t!==Sm)return;let i=r.type===`repo-roots-scanned`,a=i?r.directories.map(e=>e.root):[];xm={steps:See({agentListing:n,repoRoots:a}),agentSummary:Df(n),repoRoots:a},wm.clear(),Mm(),Dm(xm.steps),bm?.setSuggestions(i?r.suggestions??[]:[])}catch(e){if(ym&&(ym.disabled=!1),t!==Sm)return;wm.show(`error`,`The checklist could not load: ${ff(e,q)} It loads again once the server answers. If it stays like this, check the terminal running Glimmervoid, or run glimmervoid doctor.`)}}function Pm(){if(_m)return _m;let e=j(`section`,`first-run-checklist`);e.setAttribute(`aria-labelledby`,`first-run-title`);let t=j(`h2`,`first-run-title`,`Get to your first session`);t.id=`first-run-title`,vm=j(`ol`,`first-run-steps`);let n=j(`p`,`first-run-footer`,`This list goes away once a session exists. Something off? Run `);return n.append(j(`code`,null,`glimmervoid doctor`),` in a terminal.`),e.append(j(`span`,`first-run-eyebrow`,`FIRST RUN`),t,j(`p`,`first-run-intro`,`Glimmervoid runs the agent CLIs you already have, inside the repositories you point it at. Two checks, then start.`),vm,wm.element,Tm.element,n),_m=e,Mm(),e}function Fm(e,t){if(!t){_m?.parentElement===e&&(_m.hidden=!0);return}let n=Pm(),r=!n.hidden&&n.parentElement===e;n.parentElement!==e&&e.append(n),n.hidden=!1,Tm.refresh(),r||Nm({rescanAgents:!1})}function Im(){_m&&!_m.hidden&&_m.isConnected&&Nm({rescanAgents:!1})}var Lm=new Set([`http:`,`https:`]);function Rm(e){let t;try{t=new URL(e)}catch{return null}return Lm.has(t.protocol)?t.href:null}var zm=2,Bm=8,Vm=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,Hm=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,Um=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,Wm=/^:?-{3,}:?$/,Gm=/^[A-Za-z0-9_+#.-]{1,32}$/;function Km(e){return Qr(e,{overlongLine:`reject`})}function qm(e){let t=e.trim().split(/\s+/)[0]??``;return Gm.test(t)?t:``}function Jm(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function Ym(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function Xm(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function Zm(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function Qm(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function $m(e,t){let n=1;for(let r=t;r<e.length;r++){let t=e[r];if(t===`(`&&n++,t===`)`&&n--,n===0)return r;if(n>zm)return-1}return-1}function eh(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=$m(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function th(e){let t=[],n=Qm(e,`]`),r=0;for(;r<e.length;){let i=eh(e,r,n);if(i){let e=Rm(i.target.trim());e&&t.push({type:`link`,href:e,children:th(i.label)}),e||Jm(t,i.label),r=i.end;continue}if(e.startsWith("`",r)){let n=Zm(e,"`",r+1);if(n!==-1){t.push({type:`code`,text:e.slice(r+1,n)}),r=n+1;continue}}let a=Ym(e,r);if(a){let n=Zm(e,a,r+a.length);if(n!==-1){t.push({type:`strong`,children:th(e.slice(r+a.length,n))}),r=n+a.length;continue}}let o=Xm(e,r);if(o){let n=Zm(e,o,r+1);if(n!==-1){t.push({type:`emphasis`,children:th(e.slice(r+1,n))}),r=n+1;continue}}Jm(t,e[r]),r++}return t}function nh(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:nh(e.children)).join(``)}var rh=`plan-h-`;function ih(e,t){let n=e.toLowerCase().normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`section`,r=(t.slugCounts.get(n)??0)+1;return t.slugCounts.set(n,r),`${rh}${r===1?n:`${n}-${r}`}`}function ah(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=oh(e);return t.length<2?!1:t.every(e=>Wm.test(e))}function oh(e){let t=e.trim();return t.startsWith(`|`)&&(t=t.slice(1)),t.endsWith(`|`)&&(t=t.slice(0,-1)),t.split(`|`).map(e=>e.trim())}function sh(e){let t=Hm.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function ch(e,t,n,r){let i=sh(e[t]);if(!i)return null;let a=[],o=i.ordered,s=i.indent,c=t;for(;c<e.length;){let t=sh(e[c]);if(!t||t.indent<s)break;if(t.indent>s){if(r>=Bm)break;let t=ch(e,c,n,r+1);if(!t||a.length===0)break;a.at(-1)?.children.push(t.block),c=t.next}else{if(t.ordered!==o)break;a.push({children:[{type:`paragraph`,children:th(t.content)}]}),c++}}return{block:{type:`list`,ordered:o,items:a},next:c}}function lh(e,t){let n=e[t]??``;return n.trim()===``||Km(n)||Vm.test(n)||Um.test(n)||sh(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&ah(e[t+1])}function uh(e,t,n){let r=[],i=0;for(;i<e.length;){let a=e[i];if(a.trim()===``){i++;continue}let o=Vm.exec(a);if(o){let t=[],n=o[1][0],a=o[1].length;for(i++;i<e.length;){let r=/^ {0,3}(`{3,}|~{3,})\s*$/.exec(e[i]);if(r&&r[1][0]===n&&r[1].length>=a)break;t.push(e[i]),i++}i<e.length&&i++,r.push({type:`code`,language:qm(o[2]),text:t.join(`
|
|
82
|
+
`)});continue}let s=Km(a);if(s){let e=th(s.text);r.push({type:`heading`,level:s.level,id:ih(nh(e),t),children:e}),i++;continue}if(Um.test(a)){r.push({type:`rule`}),i++;continue}if(i+1<e.length&&a.includes(`|`)&&ah(e[i+1])){let t=oh(a).map(th),n=[];for(i+=2;i<e.length&&e[i].includes(`|`)&&e[i].trim()!==``;)n.push(oh(e[i]).map(th)),i++;r.push({type:`table`,header:t,rows:n});continue}let c=ch(e,i,t,n);if(c){r.push(c.block),i=c.next;continue}if(n<Bm&&/^ {0,3}>/.test(a)){let a=[];for(;i<e.length&&/^ {0,3}>/.test(e[i]);)a.push(e[i].replace(/^ {0,3}> ?/,``)),i++;r.push({type:`blockquote`,blocks:uh(a,t,n+1)});continue}let l=[a.trim()];for(i++;i<e.length&&!lh(e,i);)l.push(e[i].trim()),i++;r.push({type:`paragraph`,children:th(l.join(` `))})}return r}function dh(e){return uh(e.replace(/\r\n?/g,`
|
|
83
|
+
`).split(`
|
|
84
|
+
`),{slugCounts:new Map},0)}function fh(e){let t=[],n={heading:null,id:null,level:0,blocks:[]},r=()=>{(n.heading!==null||n.blocks.length!==0)&&t.push(n)};for(let t of e)t.type===`heading`?(r(),n={heading:nh(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function ph(e,t){for(let n of t){if(n.type===`text`){e.append(document.createTextNode(n.text));continue}if(n.type===`code`){e.append(j(`code`,`plan-inline-code`,n.text));continue}if(n.type===`emphasis`){let t=j(`em`);ph(t,n.children),e.append(t);continue}if(n.type===`strong`){let t=j(`strong`);ph(t,n.children),e.append(t);continue}let t=j(`a`,`plan-link`);t.href=n.href,t.target=`_blank`,t.rel=`noopener noreferrer`,ph(t,n.children),e.append(t)}}function mh(e){let t=j(`li`);return hh(t,e.children),t}function hh(e,t){for(let n of t)if(n.type===`heading`){let t=j(`h${n.level}`,`plan-heading`);t.id=n.id,ph(t,n.children),e.append(t)}else if(n.type===`paragraph`){let t=j(`p`,`plan-paragraph`);ph(t,n.children),e.append(t)}else if(n.type===`list`){let t=n.ordered?j(`ol`,`plan-list`):j(`ul`,`plan-list`);t.append(...n.items.map(mh)),e.append(t)}else if(n.type===`code`){let t=j(`pre`,`plan-code`),r=j(`code`,n.language?`language-${n.language}`:null,n.text);t.append(r),e.append(t)}else if(n.type===`table`){let t=j(`div`,`plan-table-wrap`),r=j(`table`,`plan-table`),i=j(`thead`),a=j(`tr`);for(let e of n.header){let t=j(`th`);ph(t,e),a.append(t)}i.append(a);let o=j(`tbody`);for(let e of n.rows){let t=j(`tr`);for(let n of e){let e=j(`td`);ph(e,n),t.append(e)}o.append(t)}r.append(i,o),t.append(r),e.append(t)}else if(n.type===`blockquote`){let t=j(`blockquote`,`plan-blockquote`);hh(t,n.blocks),e.append(t)}else e.append(j(`hr`,`plan-rule`))}function gh(e){let t=j(`div`,`plan-document`);return hh(t,e),t}function _h(e,{hasComment:t,isComposing:n,onComment:r,attachmentFor:i}){let a=j(`div`,`plan-document`),o=[];for(let s of e){let e=j(`section`,`plan-section`);e.dataset.selected=`false`,e.addEventListener(`click`,()=>{for(let t of o)t.dataset.selected=String(t===e)}),o.push(e);let c=j(`div`,`plan-section-head`),l=s.blocks[0],u=l?.type===`heading`;if(u&&hh(c,[l]),u||(e.id=`plan-introduction`),!t(s)&&!n(s)){let e=j(`button`,`plan-section-comment`,`Comment`);e.type=`button`,e.setAttribute(`aria-label`,`Comment on ${s.heading??`Introduction`}`),e.addEventListener(`click`,()=>r(s)),c.append(e)}let d=j(`div`,`plan-section-body`);hh(d,u?s.blocks.slice(1):s.blocks),e.append(c,d);let f=i(s);f&&e.append(f),a.append(e)}return a}var vh={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function yh(e){let t=j(`div`,`plan-diff`);for(let n of e.lines){let e=j(`div`,`plan-diff-line plan-diff-${n.kind}`),r=j(`span`,`plan-diff-gutter`,vh[n.kind]);r.setAttribute(`aria-hidden`,`true`),e.append(r,j(`span`,`plan-diff-text`,n.text)),t.append(e)}return t}var bh=`glimmervoid-streamer-mode`,xh=new Set,Sh=fs(bh,!1)===!0,Ch=null;function wh(e){document.documentElement.toggleAttribute(`data-streamer`,e),Ch?.setAttribute(`aria-pressed`,String(e))}wh(Sh);function Th(){return Sh}function Eh(e){if(ps(bh,e),e!==Th()){Sh=e,wh(e);for(let t of xh)t(e)}}function Dh(e){return xh.add(e),()=>xh.delete(e)}async function Oh(e){try{let t=await K(`update-settings`,{settings:{streamerMode:e}},{timeoutMs:q});return t.type===`settings-error`?String(t.message):(Eh(e),``)}catch(e){return ff(e,q)}}var kh=`Streamer mode`;async function Ah(){let e=!Th();e&&Eh(!0);let t=await Oh(e);t?vf({source:kh,message:`${e?`Streamer mode is on in this browser only. The server did not save it`:`Streamer mode is still on. The server did not save the change`}: ${t} Toggle it again to retry.`,hidesInStreamerMode:!1}):yf(kh)}function jh(){Ah()}function Mh(e){Ch=e,wh(Th()),e.addEventListener(`click`,jh)}var Nh=new Map,Ph=null;function Fh(e){return Nh.get(e)??[]}function Ih(e){return Fh(e).length>0}function Lh(e){F(e)?.btnDocs.classList.toggle(`visible`,Ih(e))}function Rh(e){let t=Fh(e.sessionId);e.select.replaceChildren(...t.map(t=>{let n=j(`option`,null,t.name);return n.value=t.path,n.selected=t.path===e.docPath,n})),e.select.hidden=t.length<2,e.title.textContent=t.find(t=>t.path===e.docPath)?.name??e.title.textContent}function zh(e){let t=Fh(e.sessionId).some(t=>t.path===e.docPath);e.btnEdit.setAttribute(`aria-pressed`,String(e.mode===`edit`)),e.btnPreview.setAttribute(`aria-pressed`,String(e.mode===`preview`)),e.textarea.hidden=e.mode!==`edit`,e.preview.hidden=e.mode!==`preview`,e.select.disabled=e.isBusy,e.btnReload.disabled=e.isBusy||!t,e.btnSave.disabled=e.isBusy||!t||e.baseHash===null||!e.hasUnsavedChanges}function Bh(e,t,n=`quiet`){e.status.textContent=t,e.status.dataset.tone=n}function Vh(e){e.preview.replaceChildren(gh(dh(e.textarea.value)))}function Hh(e,t){Rf({title:e,message:`Your unsaved edits will be lost.`,confirmLabel:`Discard`,danger:!0,onConfirm:t})}function Uh(e,t,n){e.hasUnsavedChanges?Hh(t,n):n()}async function Wh(e,t){try{return{reply:await K(e,t,{timeoutMs:q}),failureText:null}}catch(e){return{reply:null,failureText:ff(e,q)}}}async function Gh(e,t){e.docPath=t,e.isBusy=!0,e.baseHash=null,e.textarea.readOnly=!0,Rh(e),Bh(e,`Loading`),zh(e);let{reply:n,failureText:r}=await Wh(`session-doc-read`,{id:e.sessionId,path:t});if(Ph!==e||e.docPath!==t)return;e.isBusy=!1,e.textarea.readOnly=!1;let i=n?.type===`session-doc-response`?n:null;!i?.ok||i.text===void 0||i.hash===void 0?(Bh(e,i?.error||r||`Could not open this doc`,`warn`),zh(e)):(e.textarea.value=i.text,e.baseHash=i.hash,e.hasUnsavedChanges=!1,e.mode===`preview`&&Vh(e),Bh(e,``),zh(e))}async function Kh(e){if(e.btnSave.disabled||e.baseHash===null)return;e.isBusy=!0,Bh(e,`Saving`),zh(e);let t=e.docPath,n=e.textarea.value,{reply:r,failureText:i}=await Wh(`session-doc-save`,{id:e.sessionId,path:t,text:n,baseHash:e.baseHash});if(Ph!==e||e.docPath!==t)return;e.isBusy=!1;let a=r?.type===`session-doc-save-result`?r:null;!a?.ok||a.hash===void 0?(Bh(e,a?.conflict?`The agent changed this file since you opened it. Reload to see its version.`:a?.error||i||`Save failed`,`warn`),zh(e)):(e.baseHash=a.hash,e.hasUnsavedChanges=e.textarea.value!==n,Bh(e,e.hasUnsavedChanges?`Unsaved changes`:`Saved`),zh(e))}function qh(e,t){e.mode=t,t===`preview`&&Vh(e),zh(e),t===`edit`&&e.textarea.focus()}function Jh(e,t){let n=j(`button`,`plan-control ${t}`,e);return n.type=`button`,n}function Oee(e){let t=Fh(e)[0];if(!t||Ph)return;let n=()=>Uh(y,`Close this doc?`,()=>y.close()),r=Ff({dialogClass:`doc-editor`,closeOnBackdrop:!1,onEscape:n}),i=`doc-editor-title-${e}`,a=j(`h3`,`doc-editor-title`,t.name);a.id=i;let o=j(`select`,`plan-control doc-editor-picker`);o.setAttribute(`aria-label`,`Doc`);let s=j(`span`,`doc-editor-status`);s.setAttribute(`role`,`status`);let c=Jh(`Edit`,`doc-editor-mode`),l=Jh(`Preview`,`doc-editor-mode`),u=Jh(`Reload`,`doc-editor-reload`),d=Jh(`Save`,`doc-editor-save`),f=Jh(`Close`,`doc-editor-close`),p=j(`div`,`doc-editor-modes`);p.append(c,l);let m=j(`div`,`doc-editor-actions`);m.append(s,u,d,f);let h=j(`div`,`doc-editor-header`);h.append(a,o,p,m);let g=j(`textarea`,`plan-editor doc-editor-text`);g.spellcheck=!0,g.setAttribute(`aria-labelledby`,i);let _=j(`div`,`doc-editor-preview`),v=j(`div`,`doc-editor-body`);v.append(g,_),r.dialog.append(h,v),If(r.dialog,i);let y={sessionId:e,docPath:t.path,baseHash:null,hasUnsavedChanges:!1,isBusy:!1,mode:Th()?`preview`:`edit`,title:a,select:o,textarea:g,preview:_,status:s,btnEdit:c,btnPreview:l,btnReload:u,btnSave:d,close:()=>{Ph=null,r.close()}};Ph=y,g.addEventListener(`input`,()=>{y.hasUnsavedChanges||(y.hasUnsavedChanges=!0,Bh(y,`Unsaved changes`),zh(y))}),g.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),Kh(y))}),o.addEventListener(`change`,()=>{let e=o.value;o.value=y.docPath,Uh(y,`Open another doc?`,()=>{Gh(y,e)})}),c.addEventListener(`click`,()=>qh(y,`edit`)),l.addEventListener(`click`,()=>qh(y,`preview`)),u.addEventListener(`click`,()=>{Uh(y,`Reload this doc?`,()=>{Gh(y,y.docPath)})}),d.addEventListener(`click`,()=>{Kh(y)}),f.addEventListener(`click`,n),Gh(y,t.path),y.mode===`edit`&&g.focus()}function Yh(e){Ph&&Ph.sessionId===e&&(Rh(Ph),zh(Ph),!Fh(e).some(e=>e.path===Ph?.docPath)&&Bh(Ph,`This doc is no longer surfaced, so it cannot be saved.`,`warn`))}function kee(e){Nh.set(e.id,e.docs),e.docs.length===0&&Nh.delete(e.id),Lh(e.id),Yh(e.id)}function Aee(e){let t=[...Nh.keys()];Nh.clear();for(let[t,n]of Object.entries(e.sessions))Nh.set(t,n);for(let e of new Set([...t,...Nh.keys()]))Lh(e),Yh(e)}function jee({dialogClass:e,titleText:t,titleId:n,body:r,onCloseRequest:i}){let a=Ff({dialogClass:e,closeOnBackdrop:!1,onEscape:i}),o=j(`div`,`coherence-journal-header`),s=j(`h3`,`dialog-title`,t);s.id=n;let c=j(`button`,`btn-dialog btn-dialog-cancel`,`Close`);return c.type=`button`,o.append(s,c),a.dialog.append(o,...r),If(a.dialog,s.id),c.addEventListener(`click`,i),a.overlay.addEventListener(`click`,e=>{e.target===a.overlay&&i()}),{close:a.close,focusClose:()=>c.focus()}}function Xh({requestPrefix:e,dialogClass:t,titleText:n,unavailableLabel:r,timeoutMs:i}){let a=null;function o(e){e.timer!==null&&clearTimeout(e.timer),e.timer=null,e.requestId=null}function s({sessionId:s,status:c,body:l,parts:u,paintBeforeRequest:d,buildRequest:f}){a?.close();let p=zd(e),m=jee({dialogClass:t,titleText:n,titleId:`${p}-title`,body:l,onCloseRequest:()=>h.close()}),h={sessionId:s,status:c,parts:u,requestId:p,timer:null,close:()=>{o(h),a===h&&(a=null),m.close()}};a=h,d?.(),m.focusClose(),G(f(p))?h.timer=setTimeout(()=>{h.requestId=null,h.timer=null,c.textContent=`${r}: request timed out`},i):(h.requestId=null,c.textContent=`${r}: not connected`)}function c(e){let t=a;return!t||t.sessionId!==e.id||t.requestId===null||t.requestId!==e.requestId?null:(o(t),t)}return{open:s,settleResponse:c,currentPanel:()=>a}}var Zh=2,Qh={needsYou:1,broken:2,askedOfYou:3,waiting:4,settled:5},Mee={danger:Qh.broken,warn:Qh.askedOfYou,wait:Qh.waiting,ok:Qh.settled,muted:Qh.settled};function $h(e){return e?Mee[e]:Qh.settled}function Nee(e){let t=[...e].sort((e,t)=>e.tier-t.tier),n=t.slice(Zh);return{visible:t.slice(0,Zh),overflowCount:n.length,overflowHoverText:n.map(e=>`${e.text} ${e.hoverText}`).join(`
|
|
85
|
+
`)}}function Pee(e){return e.map(e=>[e.key,e.text,e.hoverText,e.look?.icon,e.look?.tone,e.tier].join(`|`)).join(`
|
|
86
|
+
`)}var Fee={decision:`Decision`,retraction:`Retraction`,conjecture:`Conjecture`,resolution:`Resolution`,dismissal:`Dismissal`,defect:`Defect`,experiment:`Experiment`,close:`Close`,unable:`Unable`,escalation:`Escalation`,acknowledgement:`Acknowledgement`,enactment:`Enactment`};function Iee(e){return e?.active!==!1||e.reason===Xi.notInstalled?[]:[{key:`coherence-hooks`,text:`Hooks off`,hoverText:`Coherence hooks not active: ${e.reason}${e.version?` (${e.version})`:``}`,look:{icon:`failed`,tone:`danger`},tier:Qh.broken}]}function Lee(e){let t=Ei.safeParse(e.kind);return{heading:`${t.success?Fee[t.data]:e.kind} | ${e.at??`Unknown time`} | ${e.id}`,text:e.text,detail:e.detail,supersedes:e.supersedes?`Supersedes: ${e.supersedes}`:null}}function Ree(e,t){let n=[];return e?.active===!1&&n.push(`Coherence hooks not active: ${e.reason}${e.version?` (${e.version})`:``}`),t&&!t.journal.ok&&n.push(`Journal unavailable: ${t.journal.reason}`),{lines:n}}var eg=new Map,tg=new Map,ng=Xh({requestPrefix:`coherence-journal`,dialogClass:`dialog coherence-journal-drawer`,titleText:`Coherence journal`,unavailableLabel:`Journal unavailable`,timeoutMs:5e3});function rg(e,t){tg.delete(e),t&&tg.set(e,t),lg(e)}function ig(e){eg.delete(e),tg.delete(e);let t=ng.currentPanel();t?.sessionId===e&&t.close()}function ag(e){let t=eg.get(e.id);t&&t.updatedAt>e.updatedAt||(eg.set(e.id,e),lg(e.id))}function og(e){eg.clear();for(let[t,n]of Object.entries(e.sessions))eg.set(t,n);let t=ng.currentPanel();t&&lg(t.sessionId)}function sg(e){return Iee(tg.get(e)??null).map(t=>({...t,onActivate:()=>ug(e)}))}function cg(e){return eg.get(e)?.journal.ok===!0}function lg(e){let t=ng.currentPanel();if(!t||t.sessionId!==e)return;let n=Ree(tg.get(e)??null,eg.get(e)??null);t.parts.reading.replaceChildren(...n.lines.map(e=>j(`p`,null,e)))}function ug(e){let t=j(`div`,`coherence-journal-reading`),n=j(`p`,`coherence-journal-status`,`Loading journal`);n.setAttribute(`role`,`status`);let r=j(`div`,`coherence-journal-entries`);ng.open({sessionId:e,status:n,body:[t,n,r],parts:{reading:t,entries:r},paintBeforeRequest:()=>lg(e),buildRequest:t=>({type:`session-coherence-journal`,id:e,requestId:t})})}function dg(e){let t=ng.settleResponse(e);t&&(e.ok?(t.status.textContent=e.entries.length===0?`No journal entries`:`${e.entries.length} journal entries (up to 200)`,t.parts.entries.replaceChildren(...e.entries.map(e=>{let t=Lee(e),n=j(`article`,`coherence-journal-entry`);return n.append(j(`h4`,null,t.heading),j(`p`,null,t.text)),t.detail&&n.append(j(`p`,null,t.detail)),t.supersedes&&n.append(j(`p`,null,t.supersedes)),n}))):t.status.textContent=`Journal unavailable: ${e.error||`could not read journal`}`)}var fg=/\bElectron\/\d/,pg=new Set([`localhost`,`127.0.0.1`]);function mg(e){return fg.test(e)}function hg({userAgent:e,pageHostname:t}){return mg(e)&&pg.has(t)}function gg(e){return Rm(e)!==null}var _g=new Set([0,1]);function vg({button:e,opensInNewTab:t}){return t&&_g.has(e)}function yg(){return hg({userAgent:navigator.userAgent,pageHostname:location.hostname})}function bg(e){window.open(e,`_blank`,`noopener,noreferrer`)}async function xg(e){try{let t=await Dl();return(await fetch(`/open-external`,{method:`POST`,credentials:`same-origin`,cache:`no-store`,headers:{"content-type":`application/json`,"x-glimmervoid-page-token":t},body:JSON.stringify({url:e})})).ok}catch{return!1}}function Sg(e){!yg()||!gg(e)?bg(e):xg(e).then(t=>{t||bg(e)})}function Cg(e){if(e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;t instanceof HTMLAnchorElement&&vg({button:e.button,opensInNewTab:t.target===`_blank`})&&gg(t.href)&&(e.preventDefault(),Sg(t.href))}function wg(e){yg()&&(e.addEventListener(`click`,Cg,!0),e.addEventListener(`auxclick`,Cg,!0))}var Tg=new Map([[`plan`,`Plan ready`],[`permission`,`Needs permission`]]);function Eg(e){return Tg.get(e)??`Needs input`}function Dg({hasPlan:e,pendingPromptKind:t,hasOpenReview:n,hasApprovedReview:r=!1}){return e&&(n||t===`plan`&&!r)?`plan`:`terminal`}function Og({hasPlan:e,isBorrowed:t,face:n}){return!e||n===`plan`?`hidden`:t?`face`:`navigate`}var kg=new Map(Object.entries({WAITING:`now`,COMPLETE:`later`,FAILED:`resting`,IDLE:`resting`,RUNNING:`resting`,STARTING:`resting`,INITIALIZING:`resting`,DORMANT:`resting`,DONE:`resting`}));function Ag(e){return(typeof e.state==`string`?kg.get(e.state):void 0)??`resting`}function jg(e,t){return[...e].map(([e,n])=>{let r=n.currentState||A.DORMANT;return{id:e,ui:n,name:t(n),isDormant:r===A.DORMANT,state:r,unseenOutcome:n.unseenOutcome??null,ownerId:n.ownerId??null}})}function Mg(e){let t=new Set(e.map(({id:e})=>e)),n=e=>e.ownerId&&t.has(e.ownerId)?e.ownerId:null,r=new Map;for(let t of e){let e=n(t);e&&r.set(e,[...r.get(e)??[],t])}return e.flatMap(e=>n(e)?[]:[e,...r.get(e.id)??[]])}function Ng(e){return Mg([...e].sort((e,t)=>Number(e.isDormant===!0)-Number(t.isDormant===!0)))}function Pg({ownerName:e,ownedCount:t}){return e===null?t===1?`Owns 1 session`:t>1?`Owns ${t} sessions`:null:`Owned by ${e}`}function Fg(e,t){return e.length?e[((t==null?-1:e.indexOf(t))+1)%e.length]:null}function Ig(e,t){return t!==null&&e.includes(t)?t:e[0]??null}var Lg=new Map([[A.FAILED,`Failed`],[A.COMPLETE,`Finished`]]);function Rg(e,t){return Lg.get(e)??Eg(t??``)}function zg(e,t,n){if(!e.length)return null;let r=n<0?-1:1,i=t==null?-1:e.indexOf(t);return e[((i===-1?r===1?-1:0:i)+r+e.length)%e.length]}function Bg({state:e,unseenOutcome:t}){if(e===A.WAITING)return`waiting`;let n=Bi.safeParse(t);return n.success?n.data:null}function Vg(e={}){let t=Bg(e);return t!==null&&t!==`waiting`}function Hg(e={}){return Bg(e)!==null}var Ug=new Map([[`failed`,0],[`waiting`,1],[`finished`,2]]);function Wg(e){let t=Bg(e);return t===null?void 0:Ug.get(t)}function Gg(e){return e.filter(e=>Wg(e)!==void 0).sort((e,t)=>(Wg(e)??0)-(Wg(t)??0)).map(({id:e})=>e)}function Kg(e,t){let n=new Map(e.map(e=>[e.id,e]));return Gg(e).flatMap(e=>{let r=n.get(e),i=r?Bg(r):null;return!r||i===null||e===t?[]:[{id:e,kind:i,name:r.name??``}]})}var qg={headTile:32,tile:26,tileGap:4,overflowSlot:40};function Jg(e,t){if(t===0)return 0;let{headTile:n,tile:r,tileGap:i,overflowSlot:a}=qg,o=r+i;if(n+(t-1)*o<=e)return t;let s=e-a-i-n,c=Math.floor(s/o);return Math.max(1,Math.min(t-1,1+c))}function Yg(e){let t={waitingCount:0,finishedCount:0,failedCount:0};for(let n of e||[]){let e=Bg(n||{});e===`waiting`&&t.waitingCount++,e===`failed`&&t.failedCount++,e===`finished`&&t.finishedCount++}return t}function Xg({waitingCount:e,finishedCount:t,failedCount:n}){return e+n+t}function Zg({waitingCount:e,failedCount:t}){return e+t}function Qg({waitingCount:e,finishedCount:t,failedCount:n}){let r=[];return n>0&&r.push(`${n} FAILED`),e===1&&r.push(`1 NEEDS YOU`),e>1&&r.push(`${e} NEED YOU`),t>0&&r.push(`${t} FINISHED`),r.length===0?`ALL CLEAR`:r.join(`, `)}var $g=new Map([[`hand`,2]]),e_=1;function t_(e){return e?typeof e==`string`&&$g.get(e)||e_:0}function n_(e){let t=!1,n=0;for(let r of e||[]){let e=t_(r);e<=n||(t=typeof r!=`string`||r,n=e)}return t}var r_=`#c084fc`,i_=Object.freeze({failed:{icon:nr[A.FAILED],color:`#ef4444`},waiting:{icon:nr[A.WAITING],color:`#f59e0b`}});function a_(e){let{waitingCount:t,failedCount:n}=Yg(Array.isArray(e)?e:[]);return t>0?`waiting`:n>0?`failed`:`idle`}function o_(e){return or[e].map(({tag:e,attributes:t})=>`<${e} ${Object.entries(t).map(([e,t])=>`${e}="${t}"`).join(` `)}/>`).join(``)}function s_(e){if(e===`idle`)return`<path d="M10 8 L22 16 L10 24Z" fill="${r_}"/>`;let{icon:t,color:n}=i_[e];return`<g color="${n}" transform="translate(4 4) scale(1.5)">${o_(t)}</g>`}function c_(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="6" fill="#0a0810"/><rect x="1" y="1" width="30" height="30" rx="5" fill="none" stroke="#2a2440" stroke-width="1"/>${s_(e)}</svg>`}function l_(){let e=document.querySelector(`link[rel="icon"]`);if(e instanceof HTMLLinkElement)return e;let t=document.createElement(`link`);return t.rel=`icon`,t.type=`image/svg+xml`,document.head.append(t),t}var u_=l_(),d_=`idle`;function f_(e){let t=a_([...e.values()].map(({currentState:e,unseenOutcome:t})=>({state:e,unseenOutcome:t})));t!==d_&&(d_=t,u_.href=`data:image/svg+xml,${encodeURIComponent(c_(t))}`)}function p_(e,t){return Number.isFinite(e)?Math.round(Math.min(t.maxPx,Math.max(t.minPx,e))):null}function m_(e,t){return e===`ArrowRight`?t:e===`ArrowLeft`?-t:null}function h_({resizer:e,column:t,widthHost:n,widthProperty:r,bounds:i,keyStepPx:a,getStoredWidth:o,setStoredWidth:s,growsLeftward:c=!1}){let l=c?-1:1;e.setAttribute(`aria-valuemin`,String(i.minPx)),e.setAttribute(`aria-valuemax`,String(i.maxPx));let u=t=>{let a=p_(t,i);return a===null?null:(n.style.setProperty(r,`${a}px`),e.setAttribute(`aria-valuenow`,String(a)),a)},d=o();d!==null&&u(d);let f=0,p=0;e.addEventListener(`pointerdown`,n=>{n.button===0&&(f=n.clientX,p=t.getBoundingClientRect().width,e.setPointerCapture(n.pointerId),e.dataset.dragging=`true`,n.preventDefault())}),e.addEventListener(`pointermove`,t=>{e.hasPointerCapture(t.pointerId)&&u(p+l*(t.clientX-f))});let m=t=>{e.releasePointerCapture(t.pointerId),delete e.dataset.dragging};e.addEventListener(`pointerup`,t=>{e.hasPointerCapture(t.pointerId)&&(m(t),s(u(p+l*(t.clientX-f))))}),e.addEventListener(`pointercancel`,t=>{e.hasPointerCapture(t.pointerId)&&(m(t),u(p))}),e.addEventListener(`dblclick`,()=>{n.style.removeProperty(r),e.setAttribute(`aria-valuenow`,String(Math.round(t.getBoundingClientRect().width))),s(null)}),e.addEventListener(`keydown`,e=>{let n=m_(e.key,a);if(n===null)return;e.preventDefault();let r=u(t.getBoundingClientRect().width+l*n);r!==null&&s(r)})}function g_(e){return String(e).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function __(e,t,n){let r=j(`button`,`popup-menu-item ${n}`);return r.type=`button`,r.setAttribute(`role`,`menuitem`),r.setAttribute(`aria-label`,e),r.append(j(`span`,`popup-menu-item-label`,e),j(`span`,`popup-menu-item-hint`,t)),r}function v_(e){return e.key===`ArrowDown`||e.key===`ArrowUp`}function y_(e,t){let n=document.activeElement,r=n instanceof HTMLElement?e.indexOf(n):-1;e[((t.key===`ArrowDown`?r+1:r<0?e.length-1:r-1)+e.length)%e.length]?.focus()}var b_=new WeakMap;function x_(e){let t=b_.get(e);if(t?.element.parentElement===e.card)return t;let n=t??df(`session-action-status m-0 px-3 py-1`);return e.termWrap.before(n.element),b_.set(e,n),n}function S_(e,t){let n=x_(e);return hee(t,n)?(n.clear(),!0):!1}var C_=!1,w_=new Set;function T_(e){C_=!!e,iv();for(let e of w_)e(C_)}function E_(e){return w_.add(e),()=>w_.delete(e)}function D_(){return C_}var O_=null;function k_(e){O_=e}var A_=null;function j_(e){A_=e}var M_=null;function N_(e){M_=e}var P_=[{cls:`agent-badge`,title:`Agent CLI this session supervises`},{cls:`worktree-badge`,text:`worktree`,title:`Running in a linked git worktree`,ariaLabel:`Linked git worktree`},{cls:`cloud-badge`,text:`cloud`,ariaLabel:`Runs in a Coder workspace`},{cls:`guardrails-badge`,text:`guardrails`,title:`Guardrails on: credentials, Glimmervoid state and blocked folders are off-limits to this session`,ariaLabel:`Guardrails on`},{cls:`post-turn-badge`,ariaHidden:!0},{cls:`usage-badge`,title:`Tokens and estimated API list-price cost for this conversation`},{cls:`wakeup-badge`},{cls:`prompt-badge`,title:`Waiting on a permission or input prompt`}];function F_({cls:e,text:t=``,title:n,ariaLabel:r,ariaHidden:i}){let a=j(`span`,e,t);return n&&(a.title=n),r&&a.setAttribute(`aria-label`,r),i&&a.setAttribute(`aria-hidden`,`true`),a}function I_(e){return`Runs in Coder workspace ${e}`}function L_(e,t){e.textContent=t?`SANE YOLO`:`YOLO`,e.title=t?`Skips permission prompts; Sane YOLO blocks catastrophic commands`:`Running with --dangerously-skip-permissions`}function R_(e,t){t&&(e.dataset.saneYolo=``),t||delete e.dataset.saneYolo;let n=e.querySelector(`.perms-badge`);n&&L_(n,t)}function z_(e,t){let n=F(e);n&&R_(n.card,t)}function B_(e,t,n,r={}){let i=n||A.INITIALIZING,a=j(`div`,`session-card`);a.dataset.id=e,a.dataset.session=t,a.dataset.state=i,r.skipPerms&&(a.dataset.skipPerms=``),r.saneYolo&&(a.dataset.saneYolo=``),r.worktree&&(a.dataset.worktree=``),r.workspace&&(a.dataset.workspace=``),r.remoteWorkspace&&(a.dataset.remoteWorkspace=r.remoteWorkspace),r.guarded&&(a.dataset.guarded=``),r.guardrailsReleased&&(a.dataset.guardrailsReleased=``),r.ephemeral&&(a.dataset.ephemeral=``),r.path&&(a.dataset.path=String(r.path));let o=j(`div`,`session-card-header`),s=j(`span`,`session-name`,t);s.title=`Double-click or press F2 to rename`,s.tabIndex=0;let c=r.skipPerms?j(`span`,`perms-badge`):null;c&&L_(c,r.saneYolo===!0);let l=j(`span`,`session-task-title`);G_(l,r.taskTitle);let u=j(`div`,`session-actions`),d=j(`div`,`session-overflow`),f=j(`button`,`btn-action btn-session-menu visible`);f.append(nf($d)),f.type=`button`,f.title=`Session actions`,f.setAttribute(`aria-label`,`Session actions`),f.setAttribute(`aria-haspopup`,`menu`),f.setAttribute(`aria-expanded`,`false`);let p=j(`div`,`popup-menu session-overflow-menu`);p.id=`session-menu-${e}`,p.setAttribute(`role`,`menu`),f.setAttribute(`aria-controls`,p.id);let m=__(`Restart...`,`Into this conversation, a fresh one, or an earlier one`,`overflow-restart`);m.setAttribute(`aria-haspopup`,`dialog`);let h=__(`Edit repositories...`,`Add or remove repositories in this workspace`,`overflow-workspace-repos`),g=__(`Link pull request...`,`Link or unlink pull requests for this session`,`overflow-link-pr visible`),_=__(`Conversation view`,`Show this session as messages (experimental)`,`overflow-conversation-view`);_.setAttribute(`role`,`menuitemcheckbox`),_.setAttribute(`aria-checked`,`false`);let v=__(`Guardrails`,`Limit what this session can read, write and reach`,`overflow-guardrails`);v.setAttribute(`role`,`menuitemcheckbox`),V_(v,a),g.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),H_(e)};let y=__(`Coherence journal`,`Decisions and notes this session recorded`,`overflow-coherence-journal`);y.setAttribute(`aria-haspopup`,`dialog`);let b=()=>y.classList.toggle(`visible`,A_?.isReadable(e)===!0);f.onclick=b,f.onkeydown=b,y.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),A_?.open(e)};let x=__(`Session setup`,`MCP servers, plugins and hooks this session loaded`,`overflow-session-setup visible`);x.setAttribute(`aria-haspopup`,`dialog`),x.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),M_?.(e)},p.append(m,h,_,v,y,x,g),d.append(f,p);let S=j(`button`,`btn-action btn-debug`);S.append(nf(Zd)),S.title=`Debug state`,S.setAttribute(`aria-label`,`Debug session state`);let ee=j(`button`,`btn-action btn-trace`);ee.append(nf(Qd)),ee.type=`button`,ee.title=`Trace`,ee.setAttribute(`aria-label`,`Trace`);let te=j(`button`,`btn-action btn-remove visible`);te.append(nf(Xd)),te.type=`button`,te.title=`Remove session`,te.setAttribute(`aria-label`,`Remove session`);let ne=j(`button`,`btn-action btn-face-plan`,`Plan`);ne.type=`button`,ne.title=`Show plan`;let re=j(`button`,`btn-action btn-face-plan btn-docs`,`Docs`);re.type=`button`,re.title=`Open docs the agent surfaced`,u.append(re,ne,S,ee,d,te);let C=j(`div`,`session-card-tags`),ie=P_.map(e=>F_(e.cls===`cloud-badge`&&r.remoteWorkspace?{...e,title:I_(r.remoteWorkspace)}:e));c&&ie.push(c),C.append(...ie);let ae=j(`span`,`session-ownership`);ae.hidden=!0,o.append(s,l,ae,C,u);let oe=j(`div`,`terminal-wrap`);return a.append(o,oe),{card:a,header:o,nameEl:s,taskTitleEl:l,btnRestart:m,btnSessionMenu:f,btnWorkspaceRepos:h,btnConversationView:_,btnGuardrails:v,btnTrace:ee,btnRemove:te,btnPlan:ne,btnDocs:re,btnDebug:S,sessionMenu:p,termWrap:oe}}function V_(e,t){let n=t.dataset.guarded!==void 0,r=t.dataset.ephemeral===void 0&&(n||t.dataset.guardrailsReleased!==void 0);e.classList.toggle(`visible`,r),e.setAttribute(`aria-checked`,String(n))}function H_(e){let{dialog:t,close:n,actions:r,btnCancel:i}=Lf({title:`Link pull request`}),a=j(`p`,`dialog-message`,`Paste a GitHub pull request URL or owner/repo#number.`),o=j(`input`,`dialog-input`);o.type=`text`,o.placeholder=`owner/repo#123`,o.autocomplete=`off`,o.spellcheck=!1,o.setAttribute(`aria-label`,`Pull request URL or owner/repo#number`);let s=j(`div`,`dialog-error`);s.setAttribute(`role`,`alert`);let c=j(`div`,`session-pr-chips dialog-linked-prs`);c.hidden=!0,O_?.(c,e);let l=j(`button`,`btn-dialog btn-dialog-confirm`,`Link`);l.type=`button`,r.append(l),t.append(c,a,o,s,r);function u(){let t=no(o.value);t?G({type:`link-session-pr`,id:e,key:t})?n():s.textContent=W:s.textContent=`Enter a github.com pull request URL or owner/repo#number.`}i.addEventListener(`click`,n),l.addEventListener(`click`,u),o.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),u())}),requestAnimationFrame(()=>o.focus())}function U_(e,t){e.tabIndex=0,e.setAttribute(`role`,`button`),e.addEventListener(`click`,t),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t())})}function W_(e,t){let n=e.querySelector(`.session-ownership`);n&&(n.textContent=t??``,n.hidden=t===null)}function G_(e,t){e.title=t??``,t&&e.removeAttribute(`aria-label`),t||e.setAttribute(`aria-label`,`Describe the task`),!e.querySelector(`input`)&&(e.textContent=t??``)}function K_(e,t){let n=e.titleTargetEl?.isConnected?e.titleTargetEl:e.taskTitleEl;if(n.querySelector(`input`))return;let r=document.createElement(`input`);r.type=`text`,r.className=`session-title-input`,r.setAttribute(`aria-label`,`Task`),r.value=e.taskTitleIsCustom?e.taskTitle??``:``,r.placeholder=e.taskTitle??`What is this session working on?`,r.maxLength=120;let i=n.getAttribute(`role`),a=n.getAttribute(`tabindex`);n.removeAttribute(`role`),n.removeAttribute(`tabindex`),n.replaceChildren(r),r.focus(),r.select();function o(o){r.removeEventListener(`blur`,s),r.removeEventListener(`keydown`,c),o&&S_(e,{type:`set-session-title`,id:t,title:r.value.trim()}),n.replaceChildren(),i!==null&&n.setAttribute(`role`,i),a!==null&&n.setAttribute(`tabindex`,a),G_(n,e.taskTitle)}function s(){o(!0)}function c(e){e.stopPropagation(),e.key===`Enter`&&(e.preventDefault(),o(!0)),e.key===`Escape`&&(e.preventDefault(),o(!1))}r.addEventListener(`blur`,s),r.addEventListener(`keydown`,c)}var q_=`session-rename-input`;function J_(e){return!!e?.querySelector(`.${q_}`)}function Y_(e,t,{returnsFocusToTerminal:n=!0}={}){let r=e.renameTargetEl?.isConnected?e.renameTargetEl:e.nameEl;if(!r||J_(r))return;let i=e.card?.dataset.session??r.textContent??``,a=document.createElement(`input`);a.type=`text`,a.className=q_,a.value=i,a.maxLength=64,r.textContent=``,r.appendChild(a),a.focus(),a.select();let o=x_(e);function s(t){return e.card.dataset.ephemeral===void 0?Fi.test(t)?[...P.values()].some(n=>n!==e&&n.card.dataset.session===t)?`Session "${t}" already exists.`:``:Ii:`This session cannot be renamed`}function c(t=e.card?.dataset.session??i){r.textContent=t,e.nameEl&&e.nameEl!==r&&(e.nameEl.textContent=t),n&&e.term?.focus()}function l(){let e=a.value.trim(),t=e&&e!==i?s(e):``;t?(o.show(`error`,t),a.select()):u()}function u(){let n=a.value.trim();if(f(),!n||n===i){c();return}let r=s(n);r?(o.show(`error`,r),c()):S_(e,{type:`rename-session`,id:t,newName:n})?c(n):c()}function d(){f(),c()}function f(){a.removeEventListener(`blur`,u),a.removeEventListener(`keydown`,p)}function p(e){e.key===`Enter`&&(e.preventDefault(),l()),e.key===`Escape`&&(e.preventDefault(),d()),e.stopPropagation()}a.addEventListener(`blur`,u),a.addEventListener(`keydown`,p)}function X_(){let e=j(`button`,`debug-close`);return e.type=`button`,e.title=`Close`,e.setAttribute(`aria-label`,`Close debug overlay`),e.append(nf(Xd)),e}function Z_(e){return e?ql(new Date(e)):`-`}function Q_(e){return`${(Number(e||0)/1e3).toFixed(1)}s`}function $_(e){return e.decision===`gated`?`(${Number(e.active)||0} bg)`:e.decision===`wait`||e.decision===`release`?`(quiet ${Q_(e.quietMs)})`:``}function ev(e){let t=`<span class="debug-dim">${Z_(e.ts)}</span>`;if(e.kind===`signal`){let n=g_([e.signal,e.source].filter(Boolean).join(`/`));return e.action===`transition`?`${t} ${n} → <span class="debug-label">${g_(e.event||``)}</span>`:e.action===`gate-held`?`${t} ${n} → held <span class="debug-dim">(${Number(e.active)||0} bg)</span>`:`${t} ${n} → <span class="debug-dim">no-op</span>`}if(e.kind===`gate`){let n=(e.repeats??0)>1?` <span class="debug-dim">x${Number(e.repeats)}</span>`:``,r=$_(e),i=r?` <span class="debug-dim">${r}</span>`:``;return`${t} gate <span class="debug-label">${g_(e.decision||`?`)}</span>${i}${n}`}if(e.kind===`notify`){let n=g_(e.category||e.to||`?`);return e.category?`${t} notify <span class="debug-label">${n}</span>: fired`:`${t} notify ${n}: <span class="debug-dim">silent (${g_(e.reason||``)})</span>`}return e.kind===`notify-state`?`${t} notify ${g_(e.category||`?`)}: <span class="debug-dim">${g_(e.from||`?`)} → ${g_(e.to||`?`)}</span>`:`${t} <span class="debug-dim">${g_(e.kind||`decision`)}</span>`}function tv(e,t){if(!e.debugOverlay)return;let n=t,r=``;if(r+=`<div class="debug-section"><div class="debug-section-title">State</div>`,r+=`<div class="debug-field"><span class="debug-label">Current:</span> <span class="debug-value">${g_(n.state)}</span></div>`,r+=`</div>`,r+=`<div class="debug-section"><div class="debug-section-title">Transitions (last ${n.transitions.length})</div>`,n.transitions.length===0&&(r+=`<div class="debug-field debug-dim">No transitions recorded</div>`),n.transitions.length>0)for(let e of n.transitions){let t=e.detail&&typeof e.detail==`object`?e.detail:null,n=t?[t.signal,t.source,t.deferred?`deferred`:null].filter(Boolean):[],i=n.length>0?` <span class="debug-dim">${g_(n.join(`/`))}</span>`:``;r+=`<div class="debug-field"><span class="debug-dim">${Z_(e.timestamp)}</span> ${g_(e.from)} → ${g_(e.to)} <span class="debug-label">${g_(e.event)}</span>${i}</div>`}r+=`</div>`;let i=n.detection||{},a=i.lastSignal,o=i.titleState||{};r+=`<div class="debug-section"><div class="debug-section-title">Detection</div>`,r+=`<div class="debug-field"><span class="debug-label">Last signal:</span> <span class="debug-value">${a?`${g_(a.signal)} (${g_(a.source||`?`)}${a.confidence?`/${g_(a.confidence)}`:``})`:`none`}</span></div>`,r+=`<div class="debug-field"><span class="debug-label">Hooks injected:</span> <span class="debug-value">${i.hooksInjected?`yes`:`no`}</span></div>`,r+=`<div class="debug-field"><span class="debug-label">Hook seen:</span> <span class="debug-value">${i.hookSeen?`yes`:`no (degraded → title)`}</span></div>`,r+=`<div class="debug-field"><span class="debug-label">Title state:</span> <span class="debug-value">${g_(o.lastKind||`none`)}${o.hasSeenSpinner?` · spun`:``}</span></div>`,r+=`</div>`;let s=i.agents||{},c=i.gate;r+=`<div class="debug-section"><div class="debug-section-title">Agents</div>`,r+=`<div class="debug-field"><span class="debug-label">Active:</span> <span class="debug-value">${Number(s.active)||0} (counted ${Number(s.counted)||0}, declared ${Number(s.declared)||0})</span></div>`,r+=`<div class="debug-field"><span class="debug-label">Idle:</span> <span class="debug-value">${Number(s.idleNames)||0} names, ${Number(s.idleTasks)||0} tasks</span></div>`;let l=c?`held ${Q_(c.heldForMs)} (seq ${Number(c.seq)||0}, lastActivity ${Number(c.lastActivitySeq)||0})`:`none`;r+=`<div class="debug-field"><span class="debug-label">Gate:</span> <span class="debug-value">${g_(l)}</span></div>`,r+=`</div>`;let u=Array.isArray(n.decisions)?n.decisions:[];r+=`<div class="debug-section"><div class="debug-section-title">Decisions (last ${u.length})</div>`,u.length===0&&(r+=`<div class="debug-field debug-dim">No decisions recorded</div>`);for(let e of u)r+=`<div class="debug-field">${ev(e)}</div>`;r+=`</div>`,e.debugOverlay.innerHTML=r,e.debugOverlay.prepend(X_())}function nv(e,t){if(e.debugOpen){rv(e);return}let n=document.createElement(`div`);n.className=`debug-overlay`,n.innerHTML=`<div class="debug-field debug-dim">Loading...</div>`,n.prepend(X_()),e.card.appendChild(n),e.debugOverlay=n,e.debugOpen=!0,n.addEventListener(`click`,t=>{t.stopPropagation(),t.target instanceof Element&&t.target.closest(`.debug-close`)&&rv(e)}),G({type:`debug-state`,id:t})}function rv(e){e.debugOverlay&&=(e.debugOverlay.remove(),null),e.debugOpen=!1}function iv(){for(let[,e]of P)e.btnDebug.classList.toggle(`visible`,C_),e.btnTrace.classList.toggle(`visible`,C_),!C_&&e.debugOpen&&rv(e)}function av(e){let t=typeof e.id==`string`?P.get(e.id):void 0;t?.debugOpen&&tv(t,e.payload)}function ov(e){F(e)?.debugOpen&&G({type:`debug-state`,id:e})}var sv={merged:`M5.45 5.154A4.25 4.25 0 0 0 9.25 7.5h1.378a2.251 2.251 0 1 1 0 1.5H9.25A5.734 5.734 0 0 1 5 7.123v3.505a2.25 2.25 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.95-.218ZM4.25 13.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm8.5-4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5ZM5 3.25a.75.75 0 1 0 0 .005V3.25Z`,draft:`M3.25 1A2.25 2.25 0 0 1 4 5.372v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.251 2.251 0 0 1 3.25 1Zm9.5 14a2.25 2.25 0 1 1 0-4.5 2.25 2.25 0 0 1 0 4.5ZM2.5 3.25a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0ZM3.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm9.5 0a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM14 7.5a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Zm0-4.25a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z`,conflict:`M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z`,behind:`M13.03 8.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L3.47 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018l2.97 2.97V3.75a.75.75 0 0 1 1.5 0v7.44l2.97-2.97a.75.75 0 0 1 1.06 0Z`,failed:`M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z`,running:`M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z`,passed:`M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z`,ready:`M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16Zm3.78-9.72a.751.751 0 0 0-.018-1.042.751.751 0 0 0-1.042-.018L6.75 9.19 5.28 7.72a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042l2 2a.75.75 0 0 0 1.06 0Z`,"changes-requested":`M1 1.75C1 .784 1.784 0 2.75 0h7.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25V4.664a.25.25 0 0 0-.073-.177l-2.914-2.914a.25.25 0 0 0-.177-.073ZM8 3.25a.75.75 0 0 1 .75.75v1.5h1.5a.75.75 0 0 1 0 1.5h-1.5v1.5a.75.75 0 0 1-1.5 0V7h-1.5a.75.75 0 0 1 0-1.5h1.5V4A.75.75 0 0 1 8 3.25Zm-3 8a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Z`,thread:`M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z`,reviewer:`M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z`,"your-turn":`M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z`,queued:`M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7-3.25v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5a.75.75 0 0 1 1.5 0Z`,fork:`M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z`,discarded:`M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm9.78-2.22-5.5 5.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l5.5-5.5a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z`,stale:`M1.705 8.005a.75.75 0 0 1 .834.656 5.5 5.5 0 0 0 9.592 2.97l-1.204-1.204a.25.25 0 0 1 .177-.427h3.646a.25.25 0 0 1 .25.25v3.646a.25.25 0 0 1-.427.177l-1.38-1.38A7.002 7.002 0 0 1 1.05 8.84a.75.75 0 0 1 .656-.834ZM8 2.5a5.487 5.487 0 0 0-4.131 1.869l1.204 1.204A.25.25 0 0 1 4.896 6H1.25A.25.25 0 0 1 1 5.75V2.104a.25.25 0 0 1 .427-.177l1.38 1.38A7.002 7.002 0 0 1 14.95 7.16a.75.75 0 0 1-1.49.178A5.5 5.5 0 0 0 8 2.5Z`,unknown:`M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.756 2.756 0 0 1 1.637.525c.503.377.863.965.863 1.725 0 .448-.115.83-.329 1.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6.24 6.24 0 0 0-.26.16.952.952 0 0 0-.276.245.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661.103-.067.207-.132.313-.195l.007-.004c.1-.061.182-.11.258-.161a.969.969 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.612.612 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1.01 1.01 0 0 0-.34.398ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z`,none:`M2 7.75A.75.75 0 0 1 2.75 7h10a.75.75 0 0 1 0 1.5h-10A.75.75 0 0 1 2 7.75Z`};function cv(e,t){let n=Yd(16,16);return n.classList.add(`pr-status-icon`),t&&(n.dataset.tone=t),n.append(Jd(`path`,{d:sv[e],fill:`currentColor`})),n}function lv(e,{className:t=``,linkUrl:n,ariaLabel:r,onActivate:i}={}){let a=`signal ${t}`.trim(),o=n?pr(a,``,n,e.hoverText):j(`span`,a);return o.title=e.hoverText,r&&o.setAttribute(`aria-label`,r),e.look&&(o.dataset.tone=e.look.tone,o.append(cv(e.look.icon,e.look.tone))),o.append(e.text),i&&uv(o,i,!n),o}function uv(e,t,n){e.addEventListener(`click`,e=>{e.stopPropagation(),!e.defaultPrevented&&(e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),t()))}),n&&(e.tabIndex=0,e.setAttribute(`role`,`button`)),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.stopPropagation(),e.preventDefault(),t()))})}function dv(e){e.removeAttribute(`tabindex`),e.removeAttribute(`role`)}function fv(e,t){if(e.closest(`button, a[href]`))for(let e of t){dv(e);for(let t of e.querySelectorAll(`[role="button"]`))dv(t)}}function pv(e){if(e.overflowCount===0)return null;let t=j(`span`,`signal-overflow`,`+${e.overflowCount}`);return t.title=e.overflowHoverText,t}function mv(e,t,n=e=>lv(e,e)){let r=Pee(t);if(e.dataset.signalSignature===r)return;e.dataset.signalSignature=r;let i=Nee(t),a=i.visible.map(n),o=pv(i);o&&a.push(o),fv(e,a),e.hidden=a.length===0,e.replaceChildren(...a)}var hv=[],gv=`plan`,_v={parked:{text:`PARKED`,hoverText:`Merge parked`,look:{icon:`failed`,tone:`danger`},tier:Qh.broken},merging:{text:`MERGING`,hoverText:`Merging`,look:{icon:`queued`,tone:`wait`},tier:Qh.waiting}};function vv(e){hv.push(e)}function yv(e){let t=_v[e];return t?[{...t,key:`merge`}]:[]}function bv(e){let t=e.closest(`.session-row`),n=t?.dataset.id;t&&n&&mv(e,[...yv(t.dataset.merge??``),...hv.flatMap(e=>e(n))])}function xv(){for(let e of document.querySelectorAll(`.session-row-signals`))bv(e)}function Sv(e,t=``){let n=j(e,`session-row ${t}`.trim());return n.innerHTML=`<span class="session-row-glyph" aria-hidden="true"></span><span class="session-row-main"><span class="session-row-title"><span class="session-row-name"></span><span class="session-row-cloud" hidden></span></span><span class="session-row-task" hidden></span><span class="session-row-ownership" hidden></span><span class="session-row-meta"><span class="session-row-label"></span><span class="session-row-signals" hidden></span></span></span><span class="session-row-elapsed" aria-hidden="true"></span><span class="session-row-attention-tab" aria-hidden="true" hidden></span>`,{row:n,refs:{glyph:N(n,`.session-row-glyph`),label:N(n,`.session-row-label`),ownership:N(n,`.session-row-ownership`),name:N(n,`.session-row-name`),cloud:N(n,`.session-row-cloud`),task:N(n,`.session-row-task`),signals:N(n,`.session-row-signals`),elapsed:N(n,`.session-row-elapsed`),attentionTab:N(n,`.session-row-attention-tab`)}}}function Cv(e,t){let n=j(`div`,`session-row-item`),r=j(`button`,`session-row-remove`);return r.append(nf(Xd)),r.type=`button`,r.title=`Remove session`,r.setAttribute(`aria-label`,`Remove session`),r.addEventListener(`click`,e=>{e.stopPropagation(),t()}),n.append(e,r),{item:n,removeButton:r}}function wv(e,t,n,r=!1,i=null){e.dataset.state=n,e.dataset.prompt=i??``;let{icon:a,label:o,isMonitoring:s}=hr(n,r),c=i===gv?`Plan ready`:o;return e.toggleAttribute(`data-monitoring`,s),of(t.glyph,a),t.label.textContent=c,c}function Tv(e,t){return e.hidden=!t,t?(e.title=I_(t),e.firstChild||e.append(nf(tf)),e.title):null}function Ev(e){let t=e.ownerId?P.get(e.ownerId):void 0,n=t?wr(t):null,r=e.card.dataset.id,i=[...P.values()].filter(e=>e.ownerId===r).length;return Pg({ownerName:n,ownedCount:i})}function Dv(e,t,n){let r=Ev(n);return t.ownership.textContent=r??``,t.ownership.hidden=r===null,e.closest(`.session-row-item`)?.toggleAttribute(`data-owned`,n.ownerId!==null&&P.has(n.ownerId)),W_(n.card,r),r}function Ov(e){return e===null?null:e===1?`next up`:`#${e} in line`}function kv(e,t,n){t.hidden=n===null,t.textContent=n===null?``:String(n),e.toggleAttribute(`data-attention-head`,n===1)}function Av(e,t,{ui:n,state:r,name:i,mergeStatus:a,attentionPosition:o}){let s=wv(e,t,r,n.awaitingBackgroundTasks,n.pendingPromptKind);t.name.textContent=i;let c=Tv(t.cloud,n.card.dataset.remoteWorkspace);t.task.textContent=n.taskTitle,t.task.hidden=!n.taskTitle||n.taskTitle===i,e.dataset.merge=a,bv(t.signals),e.dataset.activity=n._activity||``,t.elapsed.textContent=sp(n);let l=Dv(e,t,n);kv(e,t.attentionTab,o);let u=[i,c,n.taskTitle,s,l,Ov(o)].filter(Boolean).join(`, `);return e.setAttribute(`aria-label`,u),e.title=u,s}var jv={ready:{label:`Ready`,meaning:`Ready to merge, or nothing left for you to do.`},passed:{label:`Passed`,meaning:`Checks passing, approved, or nothing open.`},failed:{label:`Failed`,meaning:`Checks failing, an automated review failed, or an auto-rebase failed.`},conflict:{label:`Conflict`,meaning:`Merge conflicts with the base branch.`},"your-turn":{label:`Your turn`,meaning:`Waiting on you: a review to give or a thread to answer.`},"changes-requested":{label:`Changes`,meaning:`A reviewer requested changes.`},thread:{label:`Threads`,meaning:`Unresolved review threads or comments.`},behind:{label:`Behind`,meaning:`The branch is behind its base.`},stale:{label:`Out of date`,meaning:`New commits landed since the automated review.`},fork:{label:`Fork`,meaning:`Opened from a fork, so it is reviewed by hand.`},running:{label:`Running`,meaning:`Checks or an automated review in progress.`},reviewer:{label:`Reviewer`,meaning:`Waiting on a reviewer.`},queued:{label:`Queued`,meaning:`Waiting for an automated review slot.`},draft:{label:`Draft`,meaning:`Still a draft.`},merged:{label:`Merged`,meaning:`Merged.`},discarded:{label:`Discarded`,meaning:`Review discarded or dismissed.`},unknown:{label:`Unknown`,meaning:`GitHub has not computed this yet.`},none:{label:`None`,meaning:`Nothing applies, such as no checks or no review requested.`}},Mv=(e,t,n=!1)=>({state:e,awaitingBackgroundTasks:n,label:n?`Monitoring`:Zn[e],meaning:t}),Nv=Object.freeze([Mv(A.DORMANT,`Not started yet.`),Mv(A.STARTING,`Setting up the worktree and booting the agent.`),Mv(A.RUNNING,`The agent is mid-turn.`),Mv(A.RUNNING,`The turn ended but background tasks or sub-agents are still running.`,!0),Mv(A.WAITING,`Waiting on a permission prompt or your answer.`),Mv(A.COMPLETE,`Finished a turn you have not looked at yet.`),Mv(A.IDLE,`Ready for the next prompt.`),Mv(A.DONE,`The agent process ended.`),Mv(A.FAILED,`The agent failed to start or crashed. A red line above the terminal says why it could not start; its terminal output shows a crash.`)]);function Pv(e,t){let n=j(`section`,`status-legend`),r=j(`dl`,`status-legend-rows`);return r.append(...t),n.append(j(`h2`,`status-legend-title`,e),r),n}function Fv(e,t){let n=j(`div`,`status-legend-row`);return n.append(e,j(`dd`,`status-legend-meaning`,t)),n}function Iv(){return Pv(`Status colors`,Nv.map(e=>{let t=j(`dt`,`status-legend-badge`),n=j(`span`,`status-legend-glyph`),r=j(`span`,`status-legend-name`);n.setAttribute(`aria-hidden`,`true`),t.append(n,r);let i=Fv(t,e.meaning);return wv(i,{glyph:n,label:r},e.state,e.awaitingBackgroundTasks),i}))}function Lv(){return Pv(`Pull request icons`,Object.keys(jv).map(e=>{let t=jv[e],n=j(`dt`,`status-legend-badge`);return n.append(cv(e),j(`span`,`status-legend-name`,t.label)),Fv(n,t.meaning)}))}var Rv=new Set(jc());function zv(){Mc([...Rv])}function Bv(e){if(!e)return;let t=String(e);Rv.has(t)||(Rv.add(t),zv())}function Vv(e,t){let n=new Set;for(let r of e||[]){let e=t(r);if(!e)continue;let i=String(e);n.add(i),Bv(i)}return[...Rv].filter(e=>!n.has(e))}function Hv(e){return!e||!Rv.delete(String(e))?!1:(zv(),!0)}function Uv(e,t=`explicit-state`){let n=t===`dormant-fallback`?e||A.DORMANT:e;return n===A.DORMANT?`start-session`:n===A.COMPLETE?`dismiss`:null}function Wv({previousState:e,nextState:t,isPhoneLayout:n,isDocumentVisible:r,isDocumentFocused:i,isActiveViewer:a,hasFocusInsideTerminal:o}){return t!==A.COMPLETE||!e||e===A.COMPLETE||!r?!1:n?a:i&&o}function Gv(e,t){if(!e)return null;let n=t.get(e);return!n||(n.currentState||A.DORMANT)===A.DORMANT?null:e}function Kv(){return jr.snapshot().selectedSessionId}function qv(e){jr.dispatch(`selectSession`,e)}function Jv(e){return jr.subscribe((t,n)=>{n.includes(`selectedSessionId`)&&e(t.selectedSessionId)})}function Yv(e,t=`explicit-state`){let n=P.get(e);if(!n)return null;let r=Uv(n.currentState,t);return r&&S_(n,{type:r,id:e}),n}function Xv(e,{rememberFocus:t=!0}={}){qv(e),t&&Xc(e)}function Zv(){return Gv(Yc(),P)}function Qv(e=wr){return jg([...P],e)}function $v(e,t){let n=P.get(e);return n?S_(n,t):G(t)?!0:(vf({source:`Session action`,sessionId:e,message:`${W} Try the action again once the header shows Connected.`}),!1)}async function ey(e,t){try{let n=Xf(t),r=await K(`add-session`,{name:n,path:e},{timeoutMs:q});if(r.type===`add-session-result`&&r.ok){yf(ry);return}if(r.type===`add-session-result`&&r.reason===`not-git`){jp({name:n,path:e});return}vf({source:ry,message:kp(r)})}catch(e){vf({source:ry,message:`The session was not added: ${ff(e,q)} Add it again once the server answers.`})}}function ty(e,t){e&&ey(e,t)}var ny=39e5,ry=`Add session`,iy=`Remove session`;function ay(e,t){if(!t.keptPaths?.length)return`${t.error}. Removing "${wr(e)}" deletes its Coder workspace and that work with it. Push it from the session first to keep it.`;let n=t.keptPaths.map(e=>`${e.path} (${e.reason})`).join(`; `);return`Removing "${wr(e)}" deletes work that is not saved: ${n}. Commit and push it from the session first to keep it.`}async function oy(e,t,n,r=[]){try{let i=await K(`remove-session`,{id:t,discardWork:n,confirmedKeptPaths:r},{timeoutMs:ny});if(i.type!==`remove-session-result`||i.ok)return;if(!i.canDiscardWork){vf({source:iy,sessionId:t,message:`"${wr(e)}" was not removed: ${i.error??`the server gave no reason`}. Try Remove again from its actions menu.`});return}Rf({title:`Work not saved`,message:ay(e,i),confirmLabel:`Discard work`,danger:!0,onConfirm:()=>{oy(e,t,!0,(i.keptPaths??[]).map(e=>e.path))}})}catch(n){vf({source:iy,sessionId:t,message:`"${wr(e)}" was not removed: ${ff(n,ny)} Try Remove again from its actions menu.`})}}function sy(e,t){let n=P.get(e);if(!n)return;let r=t||n.card?.dataset.merge||`none`,i=r===`pending-review`||r===`parked`,a=n.card?.dataset.remoteWorkspace!==void 0||n.card?.dataset.workspace!==void 0;Rf({title:`Remove Session`,message:i?`"${wr(n)}" has unmerged worktree changes that will be permanently discarded if you remove it. Merge or review them first to keep them. Remove anyway?`:`Remove session "${wr(n)}"?`,confirmLabel:`Remove`,danger:!0,onConfirm:()=>{a?oy(n,e,!1):S_(n,{type:`remove-session`,id:e})}})}var cy=Object.freeze({[A.IDLE]:`compaction_restore_idle`,[A.COMPLETE]:`compaction_restore_complete`,[A.WAITING]:`compaction_restore_waiting`});function ly(e){return Object.values(cy).some(t=>t===e)}var uy=new Set([`claude-code`,`codex`]),dy=`\x1B`,fy=`${dy}[200~`,py=`${dy}[201~`,my=400,hy=4e3,gy=/^\[Image: source: (.+)\]$/,_y=`uploads`,vy=new Set([`Agent`,`Task`]),yy=/^Async agent launched/,by=`<task-notification>`,xy=/<tool-use-id>([^<]+)<\/tool-use-id>/,Sy=/<task-id>([^<]+)<\/task-id>/,Cy=/agentId: ([\w-]+)/,wy=/<status>([^<]+)<\/status>/,Ty=6e5;function Ey(e){return typeof e==`string`&&uy.has(e)}function Dy(e,t){if(!Ey(e))return null;let n=t.replace(/\r\n?/g,`
|
|
87
|
+
`).trim();return n?[{data:n.includes(`
|
|
88
|
+
`)?`${fy}${n}${py}`:n,delayBeforeMs:0},{data:`\r`,delayBeforeMs:my}]:null}function Oy(e){return Ey(e)?[{data:`\r`,delayBeforeMs:0}]:null}function ky(e){return Ey(e)?[{data:dy,delayBeforeMs:0}]:null}function Ay(e,t){return e===A.WAITING&&typeof t==`string`&&t!==``}function jy(e,t){return e.uuid??`${e.kind}-${e.ts}-${t}`}function My(e){return typeof e.agentId==`string`}function Ny(e){let t=gy.exec(e.trim());if(!t)return null;let[n,r,i]=t[1].split(/[\\/]/).slice(-3);return n!==_y||!r||!i?null:`/upload/${encodeURIComponent(r)}/${encodeURIComponent(i)}`}function Py(e,t){let n=e[e.length-1];n?.kind===`user`&&n.imageUrls.push(t)}function Fy(e){if(!e||typeof e!=`object`)return`Agent`;let t=e.description;return typeof t==`string`&&t.trim()?t.trim():`Agent`}function Iy(e,t,n){if(!e)return;if(t.isError){e.state=`failed`;return}if(!yy.test(t.content)){e.state=`done`;return}let r=Cy.exec(t.content)?.[1];r&&n.set(r,e)}function Ly(e){return e.trimStart().startsWith(by)}function Ry(e,t,n){let r=xy.exec(e)?.[1];if(r)return t.get(r);let i=Sy.exec(e)?.[1];return i?n.get(i):void 0}function zy(e,t,n){let r=Ry(e,t,n);r?.state===`running`&&(r.state=wy.exec(e)?.[1]===`completed`?`done`:`failed`)}function By(e){let t=[],n=new Map,r=new Map,i=new Map,a=new Map,o=null;function s(){o&&t.push(o),o=null}function c(e,t){return o??={kind:`work`,key:e,steps:[],agentRuns:[],startedAt:t,endedAt:t},o.endedAt=Math.max(o.endedAt,t),o}return e.forEach((e,o)=>{let l=jy(e,o);if(!My(e)){if((e.kind===`prompt`||e.kind===`expansion`)&&Ly(e.text))zy(e.text,i,a);else if(e.kind===`prompt`)s(),t.push({kind:`user`,key:l,text:e.text,at:e.ts,imageUrls:[]});else if(e.kind===`expansion`)for(let n of e.text.split(`
|
|
89
|
+
`)){let e=Ny(n);e&&Py(t,e)}else if(e.kind===`assistant`){if(!e.text.trim())return;t.push({kind:`assistant`,key:l,text:e.text,at:e.ts})}else if(e.kind===`notice`)t.push({kind:`notice`,key:l,text:e.text,at:e.ts});else if(e.kind===`thinking`)c(l,e.ts);else if(e.kind===`tool_call`){let t=c(l,e.ts),a={isRunning:!0};if(t.steps.push(a),n.set(e.toolUseId,a),r.set(e.toolUseId,t),!vy.has(e.name))return;let o={key:l,description:Fy(e.input),state:`running`};t.agentRuns.push(o),i.set(e.toolUseId,o)}else if(e.kind===`tool_result`){let t=n.get(e.toolUseId),o=r.get(e.toolUseId);if(!t||!o)return;t.isRunning=!1,o.endedAt=Math.max(o.endedAt,e.ts),Iy(i.get(e.toolUseId),e,a)}}}),s(),t}function Vy(e){return e.flatMap(e=>e.kind===`work`?e.agentRuns.filter(e=>e.state===`running`):[])}function Hy(e){let t=e.at(-1);return t?.kind===`work`?t:null}function Uy(e){return new Set(e.flatMap(e=>e.kind===`user`?[e.key]:[]))}function Wy(e,t,n){if(n-e.sentAt>Ty)return!0;let r=e.text.trim();return t.some(t=>t.kind===`user`&&!e.userKeysAtSend.has(t.key)&&t.text.includes(r))}function Gy(e){return`${e} ${e===1?`agent`:`agents`}`}function Ky(e){let t=Math.max(1,Math.round(e/1e3)),n=Math.floor(t/60),r=t%60;return n===0?`${r}s`:r===0?`${n}m`:`${n}m ${r}s`}function qy(e){let t=e.agentRuns.length>0?`, ${Gy(e.agentRuns.length)}`:``;return`Worked ${Ky(e.endedAt-e.startedAt)}${t}`}function Jy(e,t){let n=t>0?`${Gy(t)} running`:``;return e===null?n:n?`Working ${Ky(e)}, ${n}`:`Working ${Ky(e)}`}function Yy(e){return e.length<=hy?e:e.slice(e.length-hy)}var Xy=`(max-width: 768px)`,Zy=`(pointer: coarse)`;function Qy({coarse:e,narrowWidth:t}={}){return e===!0&&t===!0?`phone`:`desktop`}var $y=window.matchMedia?.(Zy),eb=window.matchMedia?.(Xy);function tb(){return Qy({coarse:!!$y?.matches,narrowWidth:!!eb?.matches})}function nb(e){document.documentElement.dataset.layout!==e&&(document.documentElement.dataset.layout=e)}function rb(){jr.subscribe((e,t)=>{t.includes(`layout`)&&nb(e.layout)});let e=tb();nb(e),jr.dispatch(`setLayout`,e);let t=()=>jr.dispatch(`setLayout`,tb());return $y?.addEventListener?.(`change`,t),eb?.addEventListener?.(`change`,t),e}function ib(){return jr.snapshot().layout===`phone`}function ab(e){return jr.subscribe((t,n)=>{n.includes(`layout`)&&e(t.layout)})}var ob=`CommitMono`,sb=[400,700].map(e=>`${e} 14px ${ob}`),cb=`monospace`;function lb(e){return e.trim().replace(/^['"]|['"]$/g,``)}function ub(e,t){let n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),r=t?n:n.filter(e=>lb(e)!==ob);return r.length>0?r.join(`, `):cb}function db(e,t,n){return Promise.all(t.map(t=>e.load(t))).then(n,()=>void 0)}function fb(e,t){for(let n of e)n.term&&(n.term.options.fontFamily=t,n._syncGrid?.())}function zee(){return document.fonts?sb.every(e=>document.fonts.check(e)):!1}function pb(){return ub(getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`),zee())}function Bee(e){document.fonts&&db(document.fonts,sb,e)}var Vee=6,Hee=262144,mb=16384,Uee=()=>{};function hb(e,t){if(t.length<=mb)e.push(t);else for(let n=0;n<t.length;n+=mb)e.push(t.slice(n,n+mb))}function Wee({budget:e=Vee,maxChunkBytes:t=Hee,requestFrame:n,cancelFrame:r}={}){let i=n||(e=>requestAnimationFrame(e)),a=r||(e=>cancelAnimationFrame(e)),o=new Map,s=[],c=0,l=null;function u(){l===null&&(l=i(h))}function d(e){return e.readIdx<e.pending.length}function f(e){d(e)||(e.pending.length=0,e.readIdx=0,e.dirty=!1)}function p(e){return!!(e?.live&&e.dirty&&!e.inFlight&&d(e))}function m(){for(let e of o.values())if(p(e))return!0;return!1}function h(){l=null;let n=s.length,r=0;for(let i=0;i<n&&r<e;i++){let e=s[(c+i)%n],a=o.get(e);if(!p(a))continue;let l=[],m=0;for(;a.readIdx<a.pending.length;){let e=a.pending[a.readIdx];if(typeof e!=`string`){if(m>0)break;a.readIdx++,e.run();continue}let n=t-m;if(m+e.length<=t)hb(l,e),m+=e.length,a.readIdx++;else{m===0&&(hb(l,e.slice(0,n)),m+=n,a.pending[a.readIdx]=e.slice(n));break}}let h=l.pop();if(h===void 0)f(a),r++;else{f(a),d(a)&&a.readIdx>=64&&(a.pending.splice(0,a.readIdx),a.readIdx=0),a.inFlight=!0;for(let e of l)a.write(e,Uee);a.write(h,()=>{a.live&&(a.inFlight=!1,d(a)&&(a.dirty=!0,u()))}),r++}}n>0&&(c=(c+1)%n),m()&&u()}return{register(e,t){let n=o.get(e);n?(n.write=t,n.live=!0):(o.set(e,{write:t,pending:[],readIdx:0,inFlight:!1,dirty:!1,live:!0}),s.push(e))},unregister(e){let t=o.get(e);if(!t)return;t.live=!1,o.delete(e);let n=s.indexOf(e);n!==-1&&s.splice(n,1),c>=s.length&&(c=0)},enqueue(e,t){let n=o.get(e);n&&t&&(n.pending.push(t),n.dirty=!0,u())},enqueueAction(e,t){let n=o.get(e);n&&(n.pending.push({run:t}),n.dirty=!0,u())},has(e){return o.has(e)},size(){return o.size},running(){return l!==null},stop(){l!==null&&(a(l),l=null)}}}var gb=Wee(),Gee=.3,_b=null;function Kee(){return ls(_b)}function vb(e){return us(e,_b)}async function qee(){try{let e=await fetch(rs,{credentials:`same-origin`,cache:`no-store`});e.ok&&(_b=ds(await e.json()))}catch{}}function yb(){let e=new AudioContext;return e.state===`suspended`&&e.resume(),e}function bb(e,t){setTimeout(()=>e.close().catch(()=>{}),(t+.1)*1e3)}function xb(e){Sb(is[e]??is.chime)}function Sb(e){let t=yb(),n=t.createGain();n.gain.value=e.peakGain,n.connect(t.destination);let r=t.currentTime,i=0;for(let a of e.tones){let e=r+a.startSeconds,o=e+a.durationSeconds,s=t.createOscillator(),c=t.createGain();s.type=a.waveform,s.frequency.setValueAtTime(a.frequency,e),a.endFrequency&&s.frequency.exponentialRampToValueAtTime(a.endFrequency,o),c.gain.setValueAtTime(.001,e),c.gain.exponentialRampToValueAtTime(a.gain??1,e+.01),c.gain.exponentialRampToValueAtTime(.001,o),s.connect(c),c.connect(n),s.start(e),s.stop(o),i=Math.max(i,a.startSeconds+a.durationSeconds)}bb(t,i)}async function Jee(e){try{let t=await fetch(ss(e),{credentials:`same-origin`});return t.ok?await t.arrayBuffer():null}catch{return null}}async function Yee(e){let t=await Jee(e);if(!t)return!1;let n=yb();try{let e=await n.decodeAudioData(t),r=n.createGain();r.gain.value=Gee,r.connect(n.destination);let i=n.createBufferSource();return i.buffer=e,i.connect(r),i.start(),bb(n,e.duration),!0}catch{return n.close().catch(()=>{}),!1}}var Cb=[659.25,830.61,987.77,1108.73,987.77,830.61,739.99,659.25,739.99,830.61,987.77,1108.73,987.77,830.61];function Xee(){try{let e=new AudioContext;if(e.state===`suspended`&&e.resume(),e.state===`suspended`)return;let t=e.createGain();t.gain.value=.05,t.connect(e.destination);let n=.125,r=e.currentTime;for(let i=0;i<Cb.length;i++){let a=r+i*n,o=e.createOscillator(),s=e.createGain();o.type=`square`,o.frequency.value=Cb[i],s.gain.setValueAtTime(.001,a),s.gain.exponentialRampToValueAtTime(1,a+.01),s.gain.exponentialRampToValueAtTime(.001,a+n*.9),o.connect(s),s.connect(t),o.start(a),o.stop(a+n)}let i=r+Cb.length*n;t.gain.setValueAtTime(.05,i-.05),t.gain.exponentialRampToValueAtTime(.001,i),setTimeout(()=>e.close().catch(()=>{}),(i-r+.1)*1e3)}catch{}}function Zee(){try{xb(ts)}catch{}}function wb(e){try{let t=vb(e),n=cs(t);if(!n){xb(t);return}Yee(n).then(e=>{e||Zee()})}catch{}}var Tb={"--state-monitoring":`#22d3ee`,"--state-monitoring-bg":`rgba(34, 211, 238, 0.06)`,"--state-running":`#22c55e`,"--state-running-bg":`rgba(34, 197, 94, 0.06)`,"--state-waiting":`#f59e0b`,"--state-waiting-bg":`rgba(245, 158, 11, 0.08)`,"--state-failed":`#ef4444`,"--state-failed-bg":`rgba(239, 68, 68, 0.06)`,"--state-initializing":`#6b7280`,"--state-initializing-bg":`rgba(107, 114, 128, 0.06)`,"--state-idle":`#eab308`,"--state-idle-bg":`rgba(234, 179, 8, 0.06)`},Eb={background:`--bg-card`,cursor:`--accent`,cursorAccent:`--bg-card`,black:`--border`,brightBlack:`--text-muted`,red:`#ef4444`,brightRed:`#f87171`,green:`#22c55e`,brightGreen:`#4ade80`,yellow:`#eab308`,brightYellow:`#facc15`,cyan:`#06b6d4`,brightCyan:`#22d3ee`},Db={golgari:{label:`Golgari (Green/Black)`,colors:{"--bg":`#060b08`,"--bg-card":`#0a120e`,"--bg-header":`#081009`,"--bg-surface":`#0e1a12`,"--border":`#1a2e1f`,"--border-dim":`#122016`,"--border-hover":`#2a4a32`,"--text":`#b8ccbe`,"--text-dim":`#6a9070`,"--text-head":`#dceede`,"--text-muted":`#7a9a80`,"--accent":`#2dd4a0`,"--accent-dim":`#1a9a6e`,...Tb,"--state-monitoring":`#22d3ee`,"--state-monitoring-bg":`rgba(34, 211, 238, 0.08)`,"--state-done":`#94a3b8`,"--state-done-bg":`rgba(45, 212, 160, 0.06)`,"--state-starting":`#a78bfa`,"--state-starting-bg":`rgba(167, 139, 250, 0.06)`,"--state-complete":`#34d399`,"--state-complete-bg":`rgba(52, 211, 153, 0.06)`},terminal:{...Eb,foreground:`#c8dece`,blue:`--accent`,brightBlue:`#5ee8bc`,magenta:`#a855f7`,brightMagenta:`#c084fc`,white:`#c8dece`,brightWhite:`#e8f5ea`}},midnight:{label:`Midnight (Blue/Purple)`,colors:{"--bg":`#080816`,"--bg-card":`#0e0e20`,"--bg-header":`#0b0b1a`,"--bg-surface":`#131328`,"--border":`#1c1c38`,"--border-dim":`#141430`,"--border-hover":`#2a2a50`,"--text":`#b8b8d4`,"--text-dim":`#8585b3`,"--text-head":`#dcdcf0`,"--text-muted":`#7c7ca9`,"--accent":`#4f6ef7`,"--accent-dim":`#3a54c0`,...Tb,"--state-monitoring":`#22d3ee`,"--state-monitoring-bg":`rgba(34, 211, 238, 0.08)`,"--state-done":`#94a3b8`,"--state-done-bg":`rgba(59, 130, 246, 0.06)`,"--state-starting":`#a855f7`,"--state-starting-bg":`rgba(168, 85, 247, 0.06)`,"--state-complete":`#60a5fa`,"--state-complete-bg":`rgba(96, 165, 250, 0.06)`},terminal:{...Eb,foreground:`#c8c8e0`,blue:`--accent`,brightBlue:`#60a5fa`,magenta:`#a855f7`,brightMagenta:`#c084fc`,white:`#c8c8e0`,brightWhite:`#e8e8ff`}},phyrexian:{label:`Phyrexian (Iridescent)`,colors:{"--bg":`#0a0810`,"--bg-card":`#100e18`,"--bg-header":`#0c0a14`,"--bg-surface":`#16122a`,"--border":`#2a2440`,"--border-dim":`#1e1a32`,"--border-hover":`#3e3660`,"--text":`#c8c0e0`,"--text-dim":`#8d82b9`,"--text-head":`#e8e0ff`,"--text-muted":`#8579b1`,"--accent":`#c084fc`,"--accent-dim":`#9656d6`,...Tb,"--state-monitoring":`#60a5fa`,"--state-monitoring-bg":`rgba(96, 165, 250, 0.08)`,"--state-done":`#67e8f9`,"--state-done-bg":`rgba(103, 232, 249, 0.06)`,"--state-starting":`#f472b6`,"--state-starting-bg":`rgba(244, 114, 182, 0.06)`,"--state-complete":`#34d399`,"--state-complete-bg":`rgba(52, 211, 153, 0.06)`},terminal:{...Eb,foreground:`#c8c0e0`,blue:`#67e8f9`,brightBlue:`#a5f3fc`,magenta:`--accent`,brightMagenta:`#d8b4fe`,white:`#c8c0e0`,brightWhite:`#e8e0ff`}},compleated:{label:`Compleated (Light)`,colors:{"--bg":`#ece8e0`,"--bg-card":`#f7f4ee`,"--bg-header":`#f0ece4`,"--bg-surface":`#e4e0d6`,"--border":`#b8b0a0`,"--border-dim":`#ccc6b8`,"--border-hover":`#908878`,"--text":`#2a2622`,"--text-dim":`#5a5448`,"--text-head":`#0e0c0a`,"--text-muted":`#676157`,"--accent":`#0e0c0a`,"--accent-dim":`#2a2622`,"--state-running":`#16803c`,"--state-running-bg":`rgba(22, 128, 60, 0.08)`,"--state-waiting":`#b45309`,"--state-waiting-bg":`rgba(180, 83, 9, 0.08)`,"--state-failed":`#dc2626`,"--state-failed-bg":`rgba(220, 38, 38, 0.06)`,"--state-monitoring":`#0e7490`,"--state-monitoring-bg":`rgba(14, 116, 144, 0.08)`,"--state-done":`#64748b`,"--state-done-bg":`rgba(26, 24, 22, 0.06)`,"--state-initializing":`#6b7280`,"--state-initializing-bg":`rgba(107, 114, 128, 0.06)`,"--state-idle":`#a16207`,"--state-idle-bg":`rgba(161, 98, 7, 0.06)`,"--state-starting":`#7c3aed`,"--state-starting-bg":`rgba(124, 58, 237, 0.06)`,"--state-complete":`#059669`,"--state-complete-bg":`rgba(5, 150, 105, 0.06)`},terminal:{background:`#faf8f4`,foreground:`#1a1816`,cursor:`#1a1816`,cursorAccent:`#faf8f4`,black:`#1a1816`,brightBlack:`#5a5448`,red:`#b91c1c`,brightRed:`#dc2626`,green:`#15803d`,brightGreen:`#16a34a`,yellow:`#92400e`,brightYellow:`#a16207`,blue:`#1d4ed8`,brightBlue:`#2563eb`,magenta:`#6d28d9`,brightMagenta:`#7c3aed`,cyan:`#0e7490`,brightCyan:`#0891b2`,white:`#5a5448`,brightWhite:`#3a3630`}},unicorn:{label:`Rainbow Unicorns (Dark)`,colors:{"--bg":`#191022`,"--bg-card":`#201730`,"--bg-header":`#1c1329`,"--bg-surface":`#281c3c`,"--border":`#3a2c52`,"--border-dim":`#2a2040`,"--border-hover":`#55407a`,"--text":`#d4c8e6`,"--text-dim":`#9a88b8`,"--text-head":`#ede4fa`,"--text-muted":`#a897c4`,"--accent":`#e8a3c4`,"--accent-dim":`#c4739e`,"--state-running":`#42d780`,"--state-running-bg":`rgba(66, 215, 128, 0.10)`,"--state-waiting":`#f79f3b`,"--state-waiting-bg":`rgba(247, 159, 59, 0.10)`,"--state-failed":`#f05442`,"--state-failed-bg":`rgba(240, 84, 66, 0.13)`,"--state-monitoring":`#2dd4bf`,"--state-monitoring-bg":`rgba(45, 212, 191, 0.08)`,"--state-done":`#f04ca4`,"--state-done-bg":`rgba(240, 76, 164, 0.13)`,"--state-initializing":`#8f87a6`,"--state-initializing-bg":`rgba(143, 135, 166, 0.08)`,"--state-idle":`#bcb02f`,"--state-idle-bg":`rgba(188, 176, 47, 0.08)`,"--state-starting":`#a17ef1`,"--state-starting-bg":`rgba(161, 126, 241, 0.08)`,"--state-complete":`#34baf4`,"--state-complete-bg":`rgba(52, 186, 244, 0.14)`},terminal:{background:`#201730`,foreground:`#d4c8e6`,cursor:`--accent`,cursorAccent:`#201730`,black:`#8c7dab`,brightBlack:`#9c8fb5`,red:`#e8887e`,brightRed:`#f4a89f`,green:`#86e0ab`,brightGreen:`#a3edc0`,yellow:`#f0c674`,brightYellow:`#f5d896`,blue:`#9cb3f0`,brightBlue:`#b5c8f5`,magenta:`#dd8ecf`,brightMagenta:`#e6a8dc`,cyan:`#7fd4d0`,brightCyan:`#a0e6e2`,white:`#d4c8e6`,brightWhite:`#f4ecfc`}},"posthog-light":{label:`PostHog (Light)`,colors:{"--bg":`#eeefe9`,"--bg-card":`#fdfdf8`,"--bg-header":`#eeefe9`,"--bg-surface":`#e5e7e0`,"--border":`#bfc1b7`,"--border-dim":`#d2d3cc`,"--border-hover":`#9ea096`,"--text":`#23251d`,"--text-dim":`#65675e`,"--text-head":`#111111`,"--text-muted":`#73756b`,"--accent":`#c03300`,"--accent-dim":`#8e2600`,"--state-running":`#237a36`,"--state-running-bg":`rgba(77, 117, 51, 0.08)`,"--state-waiting":`#b17816`,"--state-waiting-bg":`rgba(177, 120, 22, 0.10)`,"--state-failed":`#8c0d3b`,"--state-failed-bg":`rgba(140, 13, 59, 0.07)`,"--state-monitoring":`#0e7490`,"--state-monitoring-bg":`rgba(14, 116, 144, 0.08)`,"--state-done":`#3e6b9e`,"--state-done-bg":`rgba(62, 107, 158, 0.08)`,"--state-initializing":`#73756b`,"--state-initializing-bg":`rgba(115, 117, 107, 0.07)`,"--state-idle":`#835c19`,"--state-idle-bg":`rgba(131, 92, 25, 0.07)`,"--state-starting":`#a621c8`,"--state-starting-bg":`rgba(166, 33, 200, 0.07)`,"--state-complete":`#34796f`,"--state-complete-bg":`rgba(52, 121, 111, 0.08)`},terminal:{background:`--bg-card`,foreground:`#23251d`,cursor:`--accent`,cursorAccent:`--bg-card`,black:`#23251d`,brightBlack:`#65675e`,red:`#c03300`,brightRed:`#df6133`,green:`#4d7533`,brightGreen:`#6aa84f`,yellow:`#835c19`,brightYellow:`#b17816`,blue:`#3e6b9e`,brightBlue:`#2f80fa`,magenta:`#74108d`,brightMagenta:`#a621c8`,cyan:`#34796f`,brightCyan:`#30abc6`,white:`#4d4f46`,brightWhite:`#23251d`}},"posthog-dark":{label:`PostHog (Dark)`,colors:{"--bg":`#1e1f23`,"--bg-card":`#25262b`,"--bg-header":`#232429`,"--bg-surface":`#2d2e37`,"--border":`#3e424f`,"--border-dim":`#32343f`,"--border-hover":`#626674`,"--text":`#edeef4`,"--text-dim":`#aeb3c2`,"--text-head":`#fafafa`,"--text-muted":`#9ea096`,"--accent":`#f87a4c`,"--accent-dim":`#f54e00`,"--state-running":`#36c46f`,"--state-running-bg":`rgba(54, 196, 111, 0.08)`,"--state-waiting":`#f7a501`,"--state-waiting-bg":`rgba(247, 165, 1, 0.09)`,"--state-failed":`#f35454`,"--state-failed-bg":`rgba(243, 84, 84, 0.09)`,"--state-monitoring":`#22d3ee`,"--state-monitoring-bg":`rgba(34, 211, 238, 0.08)`,"--state-done":`#589df8`,"--state-done-bg":`rgba(88, 157, 248, 0.08)`,"--state-initializing":`#8f8f8c`,"--state-initializing-bg":`rgba(143, 143, 140, 0.07)`,"--state-idle":`#ffce5c`,"--state-idle-bg":`rgba(255, 206, 92, 0.07)`,"--state-starting":`#8567ff`,"--state-starting-bg":`rgba(133, 103, 255, 0.09)`,"--state-complete":`#29dbbb`,"--state-complete-bg":`rgba(41, 219, 187, 0.08)`},terminal:{background:`--bg-card`,foreground:`#edeef4`,cursor:`--accent`,cursorAccent:`--bg-card`,black:`--border`,brightBlack:`--text-muted`,red:`#f35454`,brightRed:`#f87a4c`,green:`#36c46f`,brightGreen:`#96e5b6`,yellow:`#f7a501`,brightYellow:`#ffce5c`,blue:`#2f80fa`,brightBlue:`#9fc4ff`,magenta:`#8567ff`,brightMagenta:`#e2d6ff`,cyan:`#30abc6`,brightCyan:`#29dbbb`,white:`#aeb3c2`,brightWhite:`#fafafa`}}},Qee=`phyrexian`,Ob=null;function kb(e){let t=Db[e];if(!t)return;let n=Ob;Ob=e;let r=document.documentElement;r.dataset.theme=e;for(let[e,n]of Object.entries(t.colors))r.style.setProperty(e,n);e===`unicorn`&&n!==null&&n!==`unicorn`&&Xee()}function Ab(e){document.documentElement.toggleAttribute(`data-show-usage`,e)}function jb(e){document.documentElement.toggleAttribute(`data-arrow-pad`,e)}function $ee(){let e=Db[Ob||Qee];if(!e)return{};let t=getComputedStyle(document.documentElement),n={};for(let[r,i]of Object.entries(e.terminal))n[r]=i.startsWith(`--`)?t.getPropertyValue(i).trim():i;return n}function ete(){return Object.entries(Db).map(([e,t])=>({id:e,label:t.label}))}var Mb=c().int().min(1).max(500),Nb=c().int().min(1).max(200);d(`type`,[g({type:m(`input`),data:l()}),g({type:m(`claim`),cols:Mb,rows:Nb}),g({type:m(`unview`)}),g({type:m(`pause-output`)}),g({type:m(`resume-output`)})]);var Pb=g({type:m(`pty-size`),cols:Mb,rows:Nb,seq:c().int().nonnegative()}),Fb=`history`;u([`screen`,`deep`]);function Ib(e){try{return JSON.parse(e)}catch{return null}}function Lb(e){let t=Pb.safeParse(Ib(e));return t.success?t.data:null}function Rb(e,t){return!e||!t?!1:e.cols===t.cols&&e.rows===t.rows}function zb(e){return!e||!Number.isInteger(e.cols)||!Number.isInteger(e.rows)?!1:e.cols>0&&e.rows>0}function Bb(e){return{cols:Math.min(Math.max(e.cols,1),500),rows:Math.min(Math.max(e.rows,1),200)}}function Vb({authoritative:e,isActiveViewer:t,lastClaim:n}){return!(t&&Rb(e,n))}function Hb({isDocumentVisible:e,isDocumentFocused:t,hasFocusInsideCard:n,hasWindowBlurredSinceFocus:r,isPhoneLayout:i}){return e?i||t?!0:n&&!r:!1}function Ub({isBorrowedCard:e,isTerminalFaceShown:t}){return!e||!t}function Wb({viewportTopLine:e,scrollbackLineCount:t,isDeepHistoryLoadedOrPending:n}){return e===0&&t>0&&t<5e3&&!n}function Gb(e,t){let n=`/terminals/${encodeURIComponent(e)}`;return t?`${n}?${Fb}=deep`:n}function Kb({authoritative:e,isActiveViewer:t,isDocumentEngaged:n,isDataWsOpen:r,lastClaim:i}){return!t||!n||!r?`none`:Vb({authoritative:e,isActiveViewer:t,lastClaim:i})?`rebid`:`resync`}function qb({isActiveViewer:e,lastClaim:t,owedClaim:n}){return e?n??t:null}function Jb({authoritative:e,applied:t,proposal:n,isActiveViewer:r,isDataWsOpen:i,lastClaim:a}){let o=!!e&&!Rb(e,t),s=zb(n)?Bb(n):null,c=r&&!!s&&!Rb(s,a);return{resizeTo:o?e:null,owedClaim:c?s:null,keepsPendingSettle:r&&!s,sendUnview:!r&&i&&!!a,isFollowing:Vb({authoritative:e,isActiveViewer:r,lastClaim:a})}}function Yb(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?new TextDecoder().decode(e):null}function Xb(e){let t=Yb(e);return t===null?null:Lb(t)}function Zb(e,t){if(typeof e==`string`)return{kind:`bytes`,data:e};let n=Xb(e);return n?t.hasSeenSize?n.seq<=t.lastSeq?{kind:`stale`}:{kind:`size`,cols:n.cols,rows:n.rows,seq:n.seq}:{kind:`attach-size`,cols:n.cols,rows:n.rows,seq:n.seq}:{kind:`ignored`}}var Qb=``,$b=`\x1B`,ex=`\r`,tx=new Map([[`deleteContentBackward`,Qb],[`deleteByComposition`,Qb],[`deleteCompositionText`,Qb],[`deleteWordBackward`,$b],[`deleteSoftLineBackward`,$b],[`deleteHardLineBackward`,$b]]);function nx(e){return tx.get(e)??``}var rx=new Set([`insertFromPaste`,`insertFromPasteAsQuotation`,`insertFromDrop`,`insertFromYank`,`historyUndo`,`historyRedo`]);function ix(e){return typeof e!=`string`||e===``||!rx.has(e)}function ax(e){return e?e.keyCode===229||e.key===`Process`:!1}function ox(e,t){let n=Array.from(e??``),r=Array.from(t??``),i=Math.min(n.length,r.length),a=0;for(;a<i&&n[a]===r[a];)a++;return Qb.repeat(n.length-a)+r.slice(a).join(``).replace(/\r\n|\n|\r/g,ex)}var sx=/https?:\/\/[^\s<>"']+/g,cx=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`'`,`"`]),lx={")":`(`,"]":`[`,"}":`{`};function ux(e,t){let n=0;for(let r of e)r===t&&n++;return n}function dx(e){for(;;){let t=e[e.length-1];if(t===void 0)return e;if(cx.has(t)){e=e.slice(0,-1);continue}let n=lx[t];if(n&&ux(e,n)<ux(e,t))e=e.slice(0,-1);else return e}}function fx(e){let t=[];for(let n of e.matchAll(sx)){let e=dx(n[0]);e.length<=8||t.push({start:n.index,end:n.index+e.length,url:e})}return t}var px=50;function mx(){return{activate(e,t){Sg(t)},allowNonHttpProtocols:!1}}function hx(e,t){let n=t-1;for(;n>0&&e.getLine(n)?.isWrapped&&t-1-n<px;)n--;let r=t-1;for(;e.getLine(r+1)?.isWrapped&&r-(t-1)<px;)r++;let i=``,a=[];for(let t=n;t<=r;t++){let n=e.getLine(t);if(!n)break;for(let e=0;e<n.length;e++){let r=n.getCell(e);if(!r)break;if(r.getWidth()===0)continue;let o=r.getChars()||` `;for(let n=0;n<o.length;n++)i+=o[n],a.push({x:e+1,y:t+1})}}return{text:i,cellAt:a}}function gx(e){return e.registerLinkProvider({provideLinks(t,n){let r=e.buffer?.active;if(!r)return n(void 0);let{text:i,cellAt:a}=hx(r,t),o=[];for(let{start:e,end:t,url:n}of fx(i)){let r=a[e],i=a[t-1];r&&i&&o.push({range:{start:r,end:i},text:n,activate(e,t){Sg(t)}})}n(o.length?o:void 0)}})}var _x=`(?:password|passwd|pwd|token|api[_-]?key|secret|credential|auth[_-]?token|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|connection[_-]?string)`,vx=`(?:"[^"\\r\\n]*"|'[^'\\r\\n]*'|[^\\s\\r\\n]+)`,yx=`[^\\S\\r\\n]`,bx=`${_x}${yx}*(?:=>|[:=])${yx}*`,xx=`[?&][A-Za-z0-9_.-]*`,Sx=`[^\\r\\n;&|]{0,200}?`,Cx=`(?:mysql|mysqldump|mysqladmin|mysqlshow|mariadb|mariadb-dump)`,wx=RegExp(`(${bx})${vx}`,`gi`),Tx=RegExp(`(\\bBearer${yx}+)[A-Za-z0-9._~+/=-]{8,}`,`gi`),Ex=[/\bAKIA[0-9A-Z]{16}\b/g,/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g,/\bsk-ant-[A-Za-z0-9_-]{20,}/g,/\bsk-[A-Za-z0-9_-]{20,}/g,/\bph[cx]_[A-Za-z0-9]{20,}\b/g,/\bxox[abprs]-[A-Za-z0-9-]{10,}\b/g,/\beyJ[A-Za-z0-9_=-]{6,}\.[A-Za-z0-9_=-]{6,}\.[A-Za-z0-9_=-]{4,}/g,/-----BEGIN(?:[A-Z0-9 ]+)? PRIVATE KEY-----/g],Dx=[RegExp(`((?:^|\\s)--?${_x}${yx}+)${vx}`,`gi`),RegExp(`((?:^|\\s)-(?:pwd|pw)(?![a-z])${yx}*=?${yx}*)${vx}`,`g`),RegExp(`(-AsPlainText${yx}+)${vx}`,`gi`),RegExp(`((?:^|\\s)setx${yx}+[^\\s\\r\\n]*${_x}[^\\s\\r\\n]*${yx}+)${vx}`,`gi`)],Ox=[RegExp(`(\\bauthorization${yx}*:${yx}*Basic${yx}+)[A-Za-z0-9+/=_-]{8,}`,`gi`),RegExp(`(\\bdocker${yx}+login\\b${Sx}${yx}-p(?:${yx}+|=))${vx}`,`gi`),RegExp(`(\\bcurl\\b${Sx}${yx}(?:--user|-u)(?:${yx}+|=)[^\\s:\\r\\n]+:)${vx}`,`gi`),RegExp(`(\\b${Cx}\\b${Sx}${yx}-p)${vx}`,`g`),/\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)[^\s@/]+(?=@)/gi];[...Dx,...Ox];var kx=[/-----END(?:[A-Z0-9 ]+)? PRIVATE KEY-----/g,/^([^\S\r\n]*)(?=[A-Za-z0-9+/]*[g-zG-Z+/])(?=[A-Za-z0-9+/=]{60,76}[^\S\r\n]*$)[A-Za-z0-9+/]+={0,2}(?=[^\S\r\n]*$)/gm],Ax=RegExp(`(${xx}(?:${_x}|_key)=)[^&#\\s]+`,`gi`),jx=[wx,RegExp(`(\\b(?=[A-Z0-9_]*(?:SECRET|TOKEN|KEY|PASSWORD))[A-Z][A-Z0-9_]*=)${vx}`,`g`)],Mx=[Tx,...Dx,...Ox,...Ex,...kx];function Nx(e,t){return[...e.matchAll(t)].map(e=>({matchStart:e.index,valueStart:e.index+(e[1]??``).length,end:e.index+e[0].length}))}function Px(e,t){let n=0;return e.filter(e=>{for(;n<t.length&&t[n].end<=e.matchStart;)n+=1;let r=t.at(n);return!r||e.matchStart<r.matchStart})}function Fx(e){let t=[];for(let n of e.toSorted((e,t)=>e.start-t.start)){let e=t.at(-1);e&&n.start<=e.end?e.end=Math.max(e.end,n.end):t.push({...n})}return t}function Ix(e){let t=Nx(e,Ax);return Fx([...t,...jx.flatMap(n=>Px(Nx(e,n),t)),...Mx.flatMap(t=>Nx(e,t))].map(e=>({start:e.valueStart,end:e.end})))}var Lx=`#808080`,Rx=new WeakMap;function zx(e,t,n){return`${e}:${t}:${n}`}function Bx(e){return zx(e.marker.line,e.x,e.width)}function Vx(e,t){let n=t;for(;n>0&&t-n<63&&e.getLine(n)?.isWrapped;)n--;return n}function Hx(e,t){let n=t;for(;n-t<63&&e.getLine(n+1)?.isWrapped;)n++;return n}function Ux(e,t,n){let r=``;for(let i=t;i<=n;i++)r+=e.getLine(i)?.translateToString(!1)??``;return r}function Wx(e,t,n,r){let i=``,a=[];for(let o=t;o<=n;o++){let t=e.getLine(o);if(!t)break;for(let e=0;e<t.length;e++){let n=t.getCell(e,r);if(!n)break;let s=n.getWidth();if(s===0)continue;let c=n.getChars()||` `;for(let t=0;t<c.length;t++)i+=c[t],a.push({line:o,x:e,width:s})}}return{text:i,cellAt:a}}function Gx(e,t){let n=null;for(let r of t)n&&n.line===r.line?n.width=Math.max(n.width,r.x+r.width-n.x):(n={line:r.line,x:r.x,width:r.width},e.push(n))}function Kx(e,t,n,r){let i=[];if(Ix(Ux(e,t,n)).length===0)return i;let{text:a,cellAt:o}=Wx(e,t,n,r);for(let e of Ix(a))Gx(i,o.slice(e.start,e.end));return i}function qx(e,t){let n=e.getNullCell(),r=[],i=t;for(;i<e.length;){let t=Hx(e,i);r.push(...Kx(e,i,t,n)),i=t+1}return r}function Jx(){return{masks:[],watermark:null,isFullRescanOwed:!0}}function Yx(e){e.decoration.dispose(),e.marker.dispose()}function Xx(e){for(let t of e.masks)Yx(t);e.masks.length=0,e.watermark?.dispose(),e.watermark=null,e.isFullRescanOwed=!0}function Zx(e,t){let n=e.watermark;return e.isFullRescanOwed||!n||n.isDisposed?0:Math.min(n.line,t.baseY)}function Qx(e){let t=0;for(;t<e.masks.length&&e.masks[t].marker.isDisposed;)e.masks[t].decoration.dispose(),t++;t>0&&e.masks.splice(0,t)}function $x(e,t){let n=new Map,r=e.masks.at(-1);for(;r&&(r.marker.isDisposed||r.marker.line>=t);)e.masks.pop(),r.marker.isDisposed&&r.decoration.dispose(),r.marker.isDisposed||n.set(Bx(r),r),r=e.masks.at(-1);return Qx(e),n}function eS(e,t){let n={normal:Jx(),alternate:Jx()},r=e.cols;function i(t){return e.buffer.active.type===t}function a(t,n){if(!i(n)||t.isDisposed)return!1;let r=t.line-e.buffer.active.viewportY;return r>=0&&r<e.rows}function o(t,n,r){t.style.backgroundColor=e.options.theme?.foreground??Lx,t.style.pointerEvents=`none`,t.style.display=a(n,r)?`block`:`none`}function s(e){for(let t of n[e].masks){let n=t.decoration.element;n&&o(n,t.marker,e)}}function c(t,n){let r=e.registerMarker(t.line-(n.baseY+n.cursorY));if(!r)return null;let i=e.registerDecoration({marker:r,x:t.x,width:t.width,layer:`top`});if(!i)return r.dispose(),null;let a=n.type;return i.onRender(e=>o(e,r,a)),{marker:r,decoration:i,x:t.x,width:t.width}}function l(){if(!Th())return;let t=e.buffer.active,r=n[t.type],i=Vx(t,Zx(r,t)),a=$x(r,i);for(let e of qx(t,i)){let n=zx(e.line,e.x,e.width),i=a.get(n);a.delete(n);let o=i??c(e,t);o&&r.masks.push(o)}for(let e of a.values())Yx(e);r.watermark?.dispose(),r.watermark=e.registerMarker(-t.cursorY)??null,r.isFullRescanOwed=!1}function u(){Xx(n.normal),Xx(n.alternate)}function d(){u(),r=e.cols,l()}let f=[e.onWriteParsed(l),e.onResize(({cols:e})=>{e!==r&&(r=e,n.normal.isFullRescanOwed=!0,n.alternate.isFullRescanOwed=!0,l())}),e.buffer.onBufferChange(e=>{Xx(n.alternate),s(`normal`),e.type===`alternate`&&l()})],p=Dh(d);t.addEventListener(`abort`,()=>{p();for(let e of f)e.dispose();u(),Rx.delete(e)},{once:!0}),Rx.set(e,d)}function tS(e){Rx.get(e)?.()}function nS({hasTerminal:e,isSocketOpen:t,isInputHeld:n}){return e?n||!t?`connecting`:`live`:`none`}var rS=`Upload`;async function iS(e,t){return yf(rS,e),oS(e,t)}async function aS(e,t){yf(rS,e);for(let n of t)await oS(e,n)}async function oS(e,t){let n={"x-glimmervoid-upload-name":encodeURIComponent(t.name)};t.type&&(n[`content-type`]=t.type);try{let r=await fetch(`/upload/${encodeURIComponent(e)}`,{method:`POST`,body:t,headers:n});return r.ok?!0:(vf({source:rS,sessionId:e,message:await sS(r,t.name)}),!1)}catch{return vf({source:rS,sessionId:e,message:`${t.name} was not uploaded because the server did not answer. Check that Glimmervoid is running, then drop the file again.`}),!1}}async function sS(e,t){try{let n=await e.json();if(n&&typeof n.error==`string`)return`${t} was not uploaded: ${n.error.replace(/\.$/,``)}. Fix that, then drop the file again.`}catch{}return`${t} was not uploaded (HTTP ${e.status}). Drop the file again, or check the Glimmervoid terminal for errors.`}var cS=10,lS=1.2,uS=.005,dS=4,fS=.08,pS=5;function mS(e,t){let n=Math.abs(t);return n<cS?!1:n>Math.abs(e)*lS}function hS(e,t,n=1/0){if(!(t>0))return{scrollLines:0,remainderPx:e};let r=Math.trunc(e/t),i=Math.max(-n,Math.min(n,r));return{scrollLines:i===0?0:-i,remainderPx:e-i*t}}function gS(e,t,n){let r=e.length>=dS?e.slice(1):e.slice();return r.push({positionPx:t,timestampMs:n}),r}function _S(e){if(!e||e.length<2)return 0;let t=e[0],n=e[e.length-1],r=n.timestampMs-t.timestampMs;if(!(r>0))return 0;let i=(n.positionPx-t.positionPx)/r,a=Math.abs(i);if(!(a>=fS))return 0;let o=Math.min(a,pS);return i<0?-o:o}function vS({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:n,pendingPx:r=0}){return!e||!(n>0)?null:{velocityPxPerMs:e,lastMs:t,cellHeightPx:n,pendingPx:r}}function yS(e,t){if(!e)return{scrollLines:0,state:null};let n=t-e.lastMs;if(!(n>0))return{scrollLines:0,state:e};let r=Math.abs(e.velocityPxPerMs)-uS*n;if(!(r>0))return{scrollLines:0,state:null};let i=e.velocityPxPerMs<0?-1:1,a=i*r*n,{scrollLines:o,remainderPx:s}=hS(e.pendingPx+a,e.cellHeightPx);return{scrollLines:o,state:{velocityPxPerMs:i*r,lastMs:t,cellHeightPx:e.cellHeightPx,pendingPx:s}}}function bS(e,t){return e===`alternate`||!!t&&t!==`none`}function xS(e,t){return!(e>0)||!(t>0)?0:e/t}var SS=1;function CS(e){return typeof e._core?._viewport?.handleTouchScroll==`function`}function wS(e,t){for(let n of e)if(n.identifier===t)return n;return null}function TS(e,t){if(CS(t))return;let n=()=>document.documentElement.dataset.layout===`phone`,r=null,i=0,a=0,o=0,s=!1,c=0,l=[],u=null,d=null,f=()=>{d!==null&&cancelAnimationFrame(d),d=null,u=null},p=()=>bS(t.buffer?.active?.type,t.modes?.mouseTrackingMode),m=()=>{let e=t.element?.querySelector(`.xterm-screen`);return xS(e?.clientHeight||t.element?.clientHeight||0,t.rows)},h=()=>{r=null,s=!1,c=0,l=[]},g=(e,n,r)=>{let i=e<0?-1:1;for(let a=0;a<Math.abs(e);a++)t.element?.dispatchEvent(new WheelEvent(`wheel`,{deltaY:i,deltaMode:SS,clientX:n,clientY:r,bubbles:!0,cancelable:!0}))},_=()=>{if(d=null,!u)return;if(!e.isConnected||!n()||p()){f();return}let r=t.buffer?.active?.viewportY,{scrollLines:i,state:a}=yS(u,performance.now());u=a,i!==0&&t.scrollLines(i),u&&(i!==0&&t.buffer?.active?.viewportY===r?f():d=requestAnimationFrame(_))},v=(e,t,n)=>{u=vS({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:m(),pendingPx:n}),u&&(d=requestAnimationFrame(_))};e.addEventListener(`touchstart`,e=>{if(f(),!n()||e.touches.length!==1){h();return}let t=e.touches[0];r=t.identifier,i=t.clientX,a=t.clientY,o=t.clientY,s=!1,c=0,l=[]},{passive:!0}),e.addEventListener(`touchmove`,e=>{if(r===null||!n())return;let u=wS(e.touches,r);if(!u)return;if(!s){if(!mS(u.clientX-i,u.clientY-a))return;s=!0,o=u.clientY,c=0,l=gS([],u.clientY,e.timeStamp)}e.cancelable&&e.preventDefault(),c+=u.clientY-o,o=u.clientY,l=gS(l,u.clientY,e.timeStamp);let d=p(),{scrollLines:f,remainderPx:h}=hS(c,m(),d?8:void 0);c=h,f!==0&&(d?g(f,u.clientX,u.clientY):t.scrollLines(f))},{passive:!1}),e.addEventListener(`touchend`,e=>{if(!s||p()){h();return}l=gS(l,o,e.timeStamp);let t=_S(l),n=c;h(),t!==0&&v(t,performance.now(),n)},{passive:!0}),e.addEventListener(`touchcancel`,()=>{f(),h()},{passive:!0})}function ES(e){return e.needsReload?!0:e.wasAttachedWithoutLayout&&e.hasLayoutNow}function DS(e,t,n=[]){let r=new Set(Array.isArray(n)?n:[n]),i=[];for(let n of e)e.length-i.length>=t&&!r.has(n)&&i.push(n);return i}var OS=window.matchMedia?.(`(pointer: coarse)`).matches?4:12,kS=new Map;function AS(e){return e.clientWidth>0&&e.clientHeight>0}function jS(e){let t=e.webglAddon;if(!t)return;let n=[...e.term?.element?.querySelectorAll(`canvas`)??[]];e.webglAddon=null;try{t.dispose()}catch{}for(let e of n)e.getContext(`webgl2`)?.getExtension(`WEBGL_lose_context`)?.loseContext()}function MS(e){kS.delete(e),e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,jS(e)}function NS(e){let t=[e],n=jr.snapshot().borrowedCardId,r=n?P.get(n):void 0;r&&t.push(r);for(let e of DS([...kS.keys()],OS,t))MS(e),e.needsWebGLReload=!0}function PS(e){e?.term&&ES({needsReload:e.needsWebGLReload,wasAttachedWithoutLayout:e.webglAttachedWithoutLayout,hasLayoutNow:AS(e.termWrap)})&&zS(e,{isForced:!0})}function FS(){for(let e of kS.keys()){let t=e.term;if(e.webglAddon&&t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{MS(e),e.needsWebGLReload=!0}}}var IS=!1;function LS(){IS||(IS=!0,requestAnimationFrame(()=>{IS=!1,FS()}))}function RS(e){e?.addEventListener(`contextrestored`,LS)}function zS(e,t={}){try{if(e.webglAddon&&!e.needsWebGLReload&&!t.isForced){kS.delete(e),kS.set(e,!0);return}e.webglAddon&&(jS(e),kS.delete(e)),NS(e);let n=new b;n.onContextLoss(()=>{n.dispose(),e.webglAddon=null,kS.delete(e),e.needsWebGLReload=!0});let r=e.term;if(!r)throw Error(`webgl: the terminal was disposed before the addon loaded`);r.loadAddon(n),n.onChangeTextureAtlas(RS),n.onAddTextureAtlasCanvas(RS),RS(n.textureAtlas),e.webglAddon=n,e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!AS(e.termWrap),kS.set(e,!0),requestAnimationFrame(()=>{e.webglAddon===n&&e.term&&e.term.refresh(0,e.term.rows-1)})}catch{e.webglAddon=null,e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,kS.delete(e)}}function BS(e){let t=Rs(e,sm,{isTerminalFocused:!0},um());return t?zs(t,document.body.dataset.activeView):!1}var VS=1024,HS=250,US=`(max-width: 768px)`,WS=12,GS=14,KS=5e4,qS=!1;function JS(e){qS=e}var YS=!1;window.addEventListener(`blur`,()=>{YS=!0}),window.addEventListener(`focus`,()=>{YS=!1});function XS(e){let t=document.activeElement;return Hb({isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),hasFocusInsideCard:t instanceof Node&&e.contains(t),hasWindowBlurredSinceFocus:YS,isPhoneLayout:ib()})}function ZS(e,t){return Ub({isBorrowedCard:jr.snapshot().borrowedCardId===t,isTerminalFaceShown:e.face===`terminal`})}var QS=new WeakMap,$S=new WeakMap,eC=new WeakSet,tC=new WeakSet,nC=new WeakMap,rC=5e3,iC=15e3,aC=`Keys you type now are held and sent once the terminal reconnects.`,oC=`The terminal is still reconnecting and its key buffer is full, so new keys are dropped.`,sC=`The agent copied text. The browser needs a click before it can reach your clipboard.`,cC=`The clipboard is unavailable in this browser.`;function lC(e,t,n,r){let i=nC.get(e);i&&(i.clearTimerId!==null&&clearTimeout(i.clearTimerId),i.clearTimerId=null,i.shownKind=t,i.status.show(n,r),n!==`busy`&&(i.clearTimerId=setTimeout(()=>uC(e,t),n===`ok`?rC:iC)))}function uC(e,t){let n=nC.get(e);n&&n.shownKind===t&&(n.clearTimerId!==null&&clearTimeout(n.clearTimerId),n.clearTimerId=null,n.shownKind=null,n.status.clear())}function dC(e){let t=e.buffer.active;return t.viewportY<t.baseY}function fC(e,t,{hasNewOutput:n=!1}={}){let r=nC.get(e)?.jumpToLatestButton;if(!r)return;let i=dC(t);r.hidden=!i,i?n&&(r.dataset.hasNewOutput=`true`):delete r.dataset.hasNewOutput}function pC(e,t){if(QS.has(e)||!dC(t))return;let n=t.buffer.active,r=n.length-n.viewportY;eC.has(e)?QS.set(e,r):$S.set(e,r)}function mC(e,t,n){let r=e.term;r&&Wb({viewportTopLine:n,scrollbackLineCount:r.buffer.active.baseY,isDeepHistoryLoadedOrPending:eC.has(e)})&&(eC.add(e),tC.add(e),QS.set(e,r.buffer.active.length-n),RC(t))}function hC(e,t){e._hasMissedOutputWhileHidden&&(ZS(e,t)||(e._hasMissedOutputWhileHidden=!1,RC(t)))}function gC(e){if(e?.readyState!==WebSocket.OPEN)return;let t=document.visibilityState===`visible`?`resume-output`:`pause-output`;e.send(JSON.stringify({type:t}))}document.addEventListener(`visibilitychange`,()=>{for(let e of P.values())gC(e.dataWs)});function _C(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return new TextDecoder().decode(n)}function vC(e,t,n){let r=(n instanceof Error?n.message:``)||String(n);console.error(`[clipboard:${t}]`,n),lC(e,`clipboard`,`error`,`Clipboard ${t} failed: ${r}`)}function yC(e,t,n,r){let i=xr(t);i?i.then(()=>{r&&lC(e,`clipboard`,`ok`,r)}).catch(t=>vC(e,n,t)):lC(e,`clipboard`,`error`,cC)}function bC(e,t){let n=nC.get(e);n&&(n.pendingClipboardText=t,n.clipboardPrompt.hidden=!1)}function xC(e){let t=nC.get(e),n=t?.pendingClipboardText;t&&n!=null&&(t.pendingClipboardText=null,t.clipboardPrompt.hidden=!0,yC(e,n,`osc52 write`,`Copied to the clipboard.`))}function SC(e,t,n){let r=df(`terminal-notice`),i=j(`div`,`terminal-clipboard-prompt`);i.hidden=!0;let a=j(`button`,`btn-dialog btn-dialog-confirm`,`Copy to clipboard`);a.type=`button`,a.addEventListener(`click`,()=>xC(t)),i.append(j(`span`,`terminal-clipboard-prompt-text`,sC),a);let o=j(`div`,`terminal-notices`);o.append(i,r.element);let s=j(`button`,`terminal-jump-latest btn-dialog btn-dialog-ghost`,`Jump to latest`);s.type=`button`,s.hidden=!0,s.addEventListener(`click`,()=>{n.scrollToBottom(),n.focus()});let c=j(`div`,`terminal-drop-zone`);c.setAttribute(`aria-hidden`,`true`),c.append(j(`span`,`terminal-drop-zone-label`,`Drop to upload to this session`)),e.append(o,s,c),nC.set(t,{status:r,shownKind:null,clearTimerId:null,clipboardPrompt:i,pendingClipboardText:null,jumpToLatestButton:s})}function CC(e,t){return P.get(e)===t&&!t.dataWs}function wC(e){return e.querySelector(`:scope > .terminal-connecting`)}function TC(e){if(wC(e))return;let t=j(`div`,`terminal-connecting`);t.append(j(`span`,`terminal-connecting-label`,`Connecting`)),e.append(t)}function EC(e){let t=wC(e);if(!t)return;t.querySelector(`:scope > .terminal-connecting-animal`)?.remove();let n=dl();n&&t.prepend(ul(n,`terminal-connecting-animal`))}var DC=new Set;function OC(e){return DC.add(e),()=>DC.delete(e)}function kC(){let e=0;for(let t of P.values())t.card.dataset.link===`connecting`&&e++;return e}function AC(e){let t=nS({hasTerminal:e.term!==null,isSocketOpen:e.dataWs?.readyState===WebSocket.OPEN,isInputHeld:PC}),n=t===`connecting`&&!PC&&tC.has(e)?`live`:t;if(n===`none`){delete e.card.dataset.link,jC();return}let r=n===`connecting`&&e.card.dataset.link!==`connecting`;e.card.dataset.link=n,r&&EC(e.termWrap),jC()}function jC(){for(let e of DC)e()}function MC(e,t,n,r){pC(t,n),gb.unregister(e),t.dataWs=null,AC(t),t._resetGridClaim?.(),setTimeout(()=>{CC(e,t)&&Dl().catch(()=>{}).then(()=>{CC(e,t)&&NC(e,t,n)})},r)}function NC(e,t,n){let r=QS.get(t);QS.delete(t);let i=$S.get(t);$S.delete(t);let a=r!==void 0,o=r??i,s=!1,c=Cl(location,kl(Gb(e,a))),l=new WebSocket(c);l.binaryType=`arraybuffer`,t.dataWs=l,AC(t);let u=!1,d={hasSeenSize:!1,lastSeq:0};gb.register(e,(e,t)=>n.write(e,t)),l.addEventListener(`message`,r=>{if(t.dataWs!==l)return;let i=Zb(r.data,d);if(i.kind===`bytes`){Tee(t);let r=s;if(s=!1,ZS(t,e)){t._hasMissedOutputWhileHidden=!0;return}if(gb.enqueue(e,i.data),!r)return;let a=o??0;gb.enqueueAction(e,()=>{n.scrollToLine(Math.max(0,n.buffer.active.length-a))});return}if(i.kind===`attach-size`){t._hasMissedOutputWhileHidden=!1,s=o!==void 0,a||eC.delete(t),d.hasSeenSize=!0,d.lastSeq=i.seq,n.reset(),tS(n),t.ptySize={cols:i.cols,rows:i.rows},t._syncGrid?.();return}if(i.kind!==`size`)return;d.lastSeq=i.seq;let c={cols:i.cols,rows:i.rows};gb.enqueueAction(e,()=>{t.ptySize=c,t._syncGrid?.()})}),l.addEventListener(`close`,()=>{if(t.dataWs!==l)return;tC.delete(t),u||Ol();let r=vl(t._dataWsRetryAttempt||0);t._dataWsRetryAttempt=(t._dataWsRetryAttempt||0)+1,MC(e,t,n,r)}),l.addEventListener(`open`,()=>{u=!0,t._dataWsRetryAttempt=0,tC.delete(t),AC(t),document.visibilityState!==`visible`&&gC(l),t._syncGrid?.({isActivationEdge:!0}),t._retryOwedGridClaim?.(),t._inputQueue?.length&&setTimeout(()=>{t.dataWs===l&&FC(t)},50)})}var PC=!1;function FC(e){let t=e._inputQueue,n=e.dataWs;if(!PC&&t?.length&&n?.readyState===WebSocket.OPEN){for(let e of t)n.send(JSON.stringify({type:`input`,data:e}));t.length=0,uC(e,`keys`)}}function IC(){PC=!0;for(let e of P.values())AC(e)}function LC(){PC=!1;for(let e of P.values())AC(e),FC(e)}function RC(e){let t=F(e);if(typeof e!=`string`||!t?.term)return;let n=t.dataWs;t._dataWsRetryAttempt=0,MC(e,t,t.term,0),n?.close()}function zC(e,t){let n=e.dataWs;e.dataWs=null,gb.unregister(t),n&&n.readyState<=WebSocket.OPEN&&n.close()}function BC(e,t,n){if(!e||t==null||t===``)return!1;if(n?.fromSoftKeyboard||e._resetSoftKeyboardBuffer?.(),!PC&&!e._inputQueue?.length&&e.dataWs?.readyState===WebSocket.OPEN)return e.dataWs.send(JSON.stringify({type:`input`,data:t})),!0;if(!e._inputQueue)return!1;let r=e.dataWs?.readyState!==WebSocket.OPEN;return e._inputQueue.length>=VS?(lC(e,`keys`,`error`,oC),!1):(e._inputQueue.push(t),r&&lC(e,`keys`,`busy`,aC),!0)}function VC(e,t){let n=window.matchMedia?.(US).matches?WS:GS,r=new v({cursorBlink:qS,fontSize:n,fontFamily:pb(),theme:$ee(),scrollback:KS,allowProposedApi:!0,linkHandler:mx()}),i=new y;r.loadAddon(i),TC(e),r.open(e),SC(e,t,r),gx(r),eS(r,t.abortController.signal),t.term=r,t.fitAddon=i,MS(t);let a=null,o=null,s=!1,c=null,l=null;function u(){o!==null&&(clearTimeout(o),o=null)}function d(){if(!s)return null;let e=t.fitAddon;if(!e)return null;let n=e.proposeDimensions();return n?{cols:n.cols,rows:n.rows}:null}function f(e){if(!s||!XS(t.card)||t.dataWs?.readyState!==WebSocket.OPEN)return!1;t.dataWs.send(JSON.stringify({type:`claim`,cols:e.cols,rows:e.rows})),c=e,l=null;let n=Vb({authoritative:t.ptySize??null,isActiveViewer:s,lastClaim:c});return t.card.dataset.grid=n?`following`:`exact`,!0}function p(e){u(),l=e,o=setTimeout(()=>{o=null,f(e)},HS)}function m(){l&&o===null&&f(l)}function h({isActivationEdge:e=!1}={}){let n=t.term;if(!n)return;let r=Jb({authoritative:t.ptySize??null,applied:{cols:n.cols,rows:n.rows},proposal:d(),isActiveViewer:s,isDataWsOpen:t.dataWs?.readyState===WebSocket.OPEN,lastClaim:c});r.resizeTo&&n.resize(r.resizeTo.cols,r.resizeTo.rows),t.card.dataset.grid=r.isFollowing?`following`:`exact`,r.keepsPendingSettle||(u(),l=null),r.sendUnview?(c=null,t.dataWs?.send(JSON.stringify({type:`unview`}))):r.owedClaim&&(e&&f(r.owedClaim)||p(r.owedClaim))}function g(){let e=Kb({authoritative:t.ptySize??null,isActiveViewer:s,isDocumentEngaged:XS(t.card),isDataWsOpen:t.dataWs?.readyState===WebSocket.OPEN,lastClaim:c});e!==`none`&&(u(),e===`rebid`&&(c=null),h({isActivationEdge:!0}))}let _=new ResizeObserver(()=>{a===null&&(a=requestAnimationFrame(()=>{a=null,h()}))});_.observe(e),t.resizeObserver=_,t._syncGrid=h,t._resetGridClaim=()=>{u(),l=qb({isActiveViewer:s,lastClaim:c,owedClaim:l}),c=null},t._retryOwedGridClaim=m,t._syncGridOnEngagementEdge=g,t._isActiveViewer=()=>s,t._setActiveViewer=e=>{s!==e&&(s=e,u(),l=null,e&&PS(t),h({isActivationEdge:!0}))},t.card.addEventListener(`focusin`,()=>{YS=!1,g()},{signal:t.abortController.signal}),zS(t);let b=null;r.onScroll(()=>{b===null&&(b=requestAnimationFrame(()=>{b=null,t.term&&(t.term.refresh(0,t.term.rows-1),fC(t,t.term))}))}),r.onWriteParsed(()=>fC(t,r,{hasNewOutput:!0})),r.parser.registerOscHandler(52,e=>{let n=e.indexOf(`;`);if(n<0)return!0;let r=e.slice(n+1);if(r===``||r===`?`)return!0;let i;try{i=_C(r)}catch(e){return vC(t,`osc52 decode`,e),!0}return document.hasFocus()&&navigator.userActivation?.isActive!==!1?(yC(t,i,`osc52 write`),!0):(bC(t,i),!0)}),r.attachCustomKeyEventHandler(e=>{if(e.type!==`keydown`)return!0;if(BS(e))return!1;let n=e.ctrlKey||e.metaKey;if(n&&e.key===`c`&&r.hasSelection()){let e=r.getSelection();return r.clearSelection(),yC(t,e,`copy`),!1}return n&&e.key===`v`?!1:n&&e.key===`Backspace`?(BC(t,`\x1B`),!1):!0}),HC(e,r,t),TS(e,r)}function HC(e,t,n){let r=t.textarea;if(!r)return;let i=``,a=()=>{i=r.value},o=()=>{i=``,ib()&&r.value!==``&&(r.value=``)};n._resetSoftKeyboardBuffer=o;let s=()=>{let e=ox(i,r.value);return i=r.value,e!==``&&(BC(n,e,{fromSoftKeyboard:!0}),t.scrollToBottom(),!0)},c=(t,n)=>{e.addEventListener(t,e=>{ib()?n(e):a()},!0)};c(`keydown`,e=>{ax(e)?e.stopPropagation():(s(),queueMicrotask(o))}),c(`compositionstart`,e=>{e.stopPropagation()}),c(`compositionupdate`,e=>{e.stopPropagation()}),c(`compositionend`,e=>{e.stopPropagation(),setTimeout(s,0)}),c(`input`,e=>{if(!ix(e.inputType)){queueMicrotask(o);return}if(e.stopPropagation(),s())return;let r=nx(e.inputType);r!==``&&(BC(n,r,{fromSoftKeyboard:!0}),t.scrollToBottom())})}function UC(e,t){e._inputQueue=[];let n=e.term;n&&(n.onData(n=>{BC(e,n),e.unseenOutcome&&G({type:`dismiss`,id:t,expectedState:e.currentState})}),n.onScroll(n=>{mC(e,t,n)}),GC(e.termWrap,t,e.abortController.signal),NC(t,e,n))}function WC(e){return!!e&&Array.from(e.types).includes(`Files`)}function GC(e,t,n){e.addEventListener(`paste`,e=>{let n=e.clipboardData;n&&n.files.length!==0&&n.getData(`text/plain`)===``&&(e.preventDefault(),e.stopPropagation(),aS(t,Array.from(n.files)))},{capture:!0,signal:n}),e.addEventListener(`dragover`,t=>{WC(t.dataTransfer)&&(t.preventDefault(),t.dataTransfer.dropEffect=`copy`,e.dataset.dropTarget=`true`)},{signal:n}),e.addEventListener(`dragleave`,t=>{t.relatedTarget instanceof Node&&e.contains(t.relatedTarget)||delete e.dataset.dropTarget},{signal:n}),e.addEventListener(`drop`,n=>{delete e.dataset.dropTarget,WC(n.dataTransfer)&&(n.preventDefault(),n.stopPropagation(),aS(t,Array.from(n.dataTransfer.files)))},{capture:!0,signal:n})}function KC(e,t){e.term||(VC(e.termWrap,e),UC(e,t))}function qC(e){e?._syncGridOnEngagementEdge?.()}function JC(e,t){if(!e)return;KC(e,t),hC(e,t),PS(e);let n=e.term;n&&(n.refresh(0,n.rows-1),qC(e))}function YC(e,t,n){e&&(n&&KC(e,t),e._setActiveViewer?.(n))}var XC=`conversation:`,ZC=1e4,QC=48,$C=`, `,ew=`+`,tw=`■`,nw=`↑`,rw=1e3,iw={command:`Run command?`,fileChange:`Apply file changes?`,permissions:`Grant permissions?`},aw=1;function ow(e){e?.previewUrl&&URL.revokeObjectURL(e.previewUrl)}function sw(e,t,n){let r=j(`button`,`conversation-icon-button ${e}`,t);return r.type=`button`,r.title=n,r.setAttribute(`aria-label`,n),r}function cw(e){return e.conversationApproval!==null||Ay(e.currentState,e.pendingPromptKind)}function lw(e,t,n,r,i=0){let a=n[i];a?setTimeout(()=>{F(e)===t?i>0&&cw(t)?r(`stopped-by-prompt`):BC(t,a.data)?lw(e,t,n,r,i+1):r(`unreachable`):r(`unreachable`)},a.delayBeforeMs):r(`sent`)}function uw({signal:e,sendControl:t,showTerminal:n}){let r=j(`div`,`conversation-face`);r.hidden=!0;let i=j(`div`,`conversation-log`);i.setAttribute(`role`,`log`),i.setAttribute(`aria-live`,`polite`);let a=j(`p`,`conversation-empty`,`No conversation yet. Messages appear here as the agent works.`),o=j(`div`,`conversation-approval`);o.hidden=!0;let s=j(`p`,`conversation-bridge-note`,`Restart this Codex session to connect it to the conversation view. Until then, use the terminal.`);s.hidden=!0;let c=j(`p`,`conversation-bridge-note`,`The session trace is unavailable, so there is nothing to show here. Use the terminal.`);c.hidden=!0;let l=j(`details`,`conversation-working`),u=j(`summary`,`conversation-working-summary`);u.setAttribute(`role`,`status`);let d=j(`ul`,`conversation-agent-list`);l.append(u,d),l.hidden=!0;let f=j(`form`,`conversation-composer`),p=j(`p`,`conversation-status`);p.setAttribute(`role`,`status`);let m=j(`div`,`conversation-attachment`);m.hidden=!0;let h=j(`div`,`conversation-composer-row`),g=sw(`conversation-attach`,ew,`Attach a photo or file`),_=j(`input`,`conversation-file-picker`);_.type=`file`,_.hidden=!0;let v=j(`textarea`,`conversation-input`);v.dataset.dashboardShortcuts=`allowed`,v.rows=1,v.placeholder=`Message the agent`,v.setAttribute(`aria-label`,`Message the agent`);let y=sw(`conversation-stop`,tw,`Stop the current turn (Esc)`),b=sw(`conversation-send`,nw,`Send`);b.type=`submit`,h.append(g,v,y,b),f.append(p,m,h,_),r.append(i,l,c,s,o,f);let x=null,S=[],ee=0,te=!1,ne=null,re=!1,C=null,ie=!1,ae=[],oe=[],se=null,ce=!1,le=new Set;function w(){return x?F(x)??null:null}function T(e){p.textContent=e}function ue(){v.style.height=`auto`,v.style.height=`${v.scrollHeight+v.offsetHeight-v.clientHeight}px`}function E(){ne&&clearTimeout(ne.timeoutHandle),ne=null}function D(){if(!x||r.hidden||!c.hidden)return;if(ne){re=!0;return}let e=`${XC}${aw++}`,n=te?ee:null;t(n===null?{type:`session-trace`,id:x,requestId:e,endingAt:`tail`}:{type:`session-trace`,id:x,requestId:e,after:n})?(re=!1,ne={requestId:e,after:n,timeoutHandle:setTimeout(()=>{ne=null,D()},ZC)}):T(`Conversation unavailable while disconnected.`)}function de(){return i.scrollHeight-i.scrollTop-i.clientHeight<=QC}function fe(e){let t=j(`a`,`conversation-image-link`);t.href=e,t.target=`_blank`,t.rel=`noopener`;let n=j(`img`,`conversation-image`);return n.src=e,n.alt=`Attached image`,n.loading=`lazy`,n.addEventListener(`error`,()=>t.remove(),{once:!0}),t.append(n),t}function pe(e){let t=j(`article`,`conversation-message conversation-user is-pending`);return e.text&&t.append(j(`p`,`conversation-text`,e.text)),e.attachment?.previewUrl&&t.append(fe(e.attachment.previewUrl)),e.attachment&&!e.attachment.previewUrl&&t.append(j(`p`,`conversation-attachment-name`,e.attachment.name)),t}function me(e){let t=j(`article`,`conversation-message conversation-${e.kind}`);return e.kind===`assistant`?(t.append(gh(dh(e.text))),t):(t.append(j(`p`,`conversation-text`,e.text)),e.kind===`user`&&t.append(...e.imageUrls.map(fe)),t)}function he(e,t){e.replaceChildren(...t.map(e=>{let t=j(`li`,`conversation-agent is-${e.state}`);return t.append(j(`span`,`conversation-agent-name`,e.description),j(`span`,`conversation-agent-state`,e.state)),t}))}function ge(e){if(e.agentRuns.length===0)return j(`p`,`conversation-work`,qy(e));let t=j(`details`,`conversation-work`);t.open=le.has(e.key),t.addEventListener(`toggle`,()=>{t.open?le.add(e.key):le.delete(e.key)});let n=j(`ul`,`conversation-agent-list`);return he(n,e.agentRuns),t.append(j(`summary`,``,qy(e)),n),t}function _e(){return w()?.currentState===A.RUNNING}function ve(){let e=w(),t=Vy(oe),n=_e()?Hy(oe)?.agentRuns??[]:[],r=[...new Set([...n,...t])];if(l.hidden=!e||!_e()&&t.length===0,l.hidden||!e)return;let i=_e()?Math.max(0,Date.now()-e.stateSince):null;u.textContent=Jy(i,t.length),l.classList.toggle(`has-agents`,r.length>0),he(d,r)}function ye(){let e=!r.hidden&&_e();e&&!se&&(se=setInterval(ve,rw)),!e&&se&&(clearInterval(se),se=null),ve()}function be(){i.scrollTop=i.scrollHeight}function xe(){let e=ce||de();oe=By(S);let t=Date.now(),n=ae.filter(e=>Wy(e,oe,t));for(let e of n)ow(e.attachment);ae=ae.filter(e=>!n.includes(e));let r=[...(_e()&&Hy(oe)?oe.slice(0,-1):oe).map(e=>e.kind===`work`?ge(e):me(e)),...ae.map(pe)];i.replaceChildren(...r.length>0?r:[a]),ve(),e&&(be(),requestAnimationFrame(be),te&&(ce=!1))}function Se(){if(m.replaceChildren(),m.hidden=!C,C){if(C.previewUrl){let e=j(`img`,`conversation-attachment-thumbnail`);e.src=C.previewUrl,e.alt=``,m.append(e)}m.append(j(`span`,`conversation-attachment-name`,C.name))}}function Ce(e){C!==e&&ow(C),C=e,Se()}function we(e,t=()=>{}){let n=w();if(!n||!x||!e){T(`Unable to reach this session.`);return}T(``);let r={sent:``,unreachable:`Unable to reach this session.`,"stopped-by-prompt":`Not sent: a prompt appeared, so the message was typed but not submitted. Check the terminal.`};lw(x,n,e,e=>{T(r[e]),t(e)})}function Te(e,n,r){x&&T(t({type:`conversation-approval`,id:x,requestId:e.requestId,decision:n,...r?{answers:r}:{}})?``:`Unable to send the answer while disconnected.`)}function Ee(e,t){let n=j(`button`,`conversation-approval-action`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function De(e){return e.kind===`tool`?`Allow ${e.toolName??`this tool`}?`:iw[e.kind]??`Approve this request?`}function Oe(e){o.append(j(`p`,`conversation-approval-note`,`This request cannot be shown in full here. Read and answer it in the terminal.`));let t=j(`div`,`conversation-approval-actions`);t.append(Ee(`Open terminal`,()=>n()),Ee(`Decline`,()=>Te(e,`decline`))),o.append(t)}function ke(e){if(o.append(j(`p`,`conversation-approval-title`,De(e)),j(`pre`,`conversation-approval-summary`,e.summary)),e.isSummaryTruncated){Oe(e);return}let t=j(`div`,`conversation-approval-actions`);t.append(Ee(`Approve`,()=>Te(e,`accept`))),e.kind!==`tool`&&t.append(Ee(`Approve for session`,()=>Te(e,`acceptForSession`))),e.alwaysAllowSummary&&(o.append(j(`p`,`conversation-approval-note`,`Always allow adds, for this session only: ${e.alwaysAllowSummary}`)),t.append(Ee(`Always allow`,()=>Te(e,`acceptForSession`)))),t.append(Ee(`Decline`,()=>Te(e,`decline`))),o.append(t)}function Ae(e){let t=j(`p`,`conversation-approval-title`,e.question);return e.header&&t.prepend(j(`span`,`conversation-question-header`,e.header)),t}function je(e,t){o.append(Ae(t));let n=j(`div`,`conversation-question-options`);for(let r of t.options){let i=Ee(r.label,()=>Te(e,`accept`,{[t.question]:r.label}));r.description&&(i.title=r.description),n.append(i)}let r=j(`div`,`conversation-approval-actions`);r.append(Ee(`Decline`,()=>Te(e,`decline`))),o.append(n,r)}function Me(e,t){let n=j(`form`,`conversation-question-form`);t.forEach((e,t)=>{let r=j(`fieldset`,`conversation-question`),i=j(`legend`,`conversation-question-text`,e.question);e.header&&i.prepend(j(`span`,`conversation-question-header`,e.header)),r.append(i);for(let n of e.options){let i=j(`label`,`conversation-question-option`),a=j(`input`);a.type=e.multiSelect?`checkbox`:`radio`,a.name=`question-${t}`,a.value=n.label,i.append(a,j(`span`,``,n.label)),n.description&&(i.title=n.description),r.append(i)}n.append(r)});let r=j(`div`,`conversation-approval-actions`),i=j(`button`,`conversation-approval-action`,`Send answers`);i.type=`submit`,r.append(i,Ee(`Decline`,()=>Te(e,`decline`))),n.append(r),n.addEventListener(`submit`,r=>{r.preventDefault();let i={};t.forEach((e,t)=>{let r=[...n.querySelectorAll(`input[name="question-${t}"]:checked`)].map(e=>e.value);r.length>0&&(i[e.question]=r.join($C))}),Object.keys(i).length===t.length?Te(e,`accept`,i):T(`Answer every question first.`)}),o.append(n)}function Ne(e){let t=e.questions??[];if(e.isSummaryTruncated||t.length===0){o.append(j(`p`,`conversation-approval-title`,`Claude Code has a question`),j(`pre`,`conversation-approval-summary`,e.summary)),Oe(e);return}let[n]=t;t.length===1&&!n.multiSelect?je(e,n):Me(e,t)}function Pe(e){e.kind===`question`?Ne(e):ke(e)}function Fe(){o.append(j(`p`,`conversation-approval-title`,`The agent is waiting on a prompt`)),o.append(j(`p`,`conversation-approval-note`,`Read and answer it in the terminal.`));let e=j(`div`,`conversation-approval-actions`);e.append(Ee(`Open terminal`,()=>n())),o.append(e)}function Ie(){let e=w();o.replaceChildren();let t=e?.conversationApproval??null,n=e?Ay(e.currentState,e.pendingPromptKind):!1,r=e?.agent===`codex`&&!e.hasConversationBridge;s.hidden=!r,o.hidden=!t&&!n,b.disabled=!o.hidden||r,Le(),e&&(t?Pe(t):n&&Fe())}function Le(){g.disabled=b.disabled||ie}function Re(e){let t=Dy(e,v.value);return t||!C?t:Oy(e)}function ze(){let e=w();y.disabled=e?.currentState!==A.RUNNING,ye()}f.addEventListener(`submit`,e=>{if(e.preventDefault(),b.disabled)return;let t=Re(w()?.agent);if(!t)return;let n={text:v.value.trim(),attachment:C,sentAt:Date.now(),userKeysAtSend:Uy(oe)};v.value=``,ue(),C=null,Se(),ae.push(n),ce=!0,xe(),we(t,e=>{e!==`sent`&&(ow(n.attachment),ae=ae.filter(e=>e!==n),xe())})},{signal:e}),v.addEventListener(`input`,ue,{signal:e});let Be=0,Ve=new ResizeObserver(()=>{let e=i.clientHeight,t=Be===0;Be=e,t&&e!==0&&(ce=!0,be(),te&&(ce=!1))});Ve.observe(i),e?.addEventListener(`abort`,()=>{se&&clearInterval(se),Ve.disconnect()},{once:!0}),v.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||ib()||(e.preventDefault(),f.requestSubmit())},{signal:e}),y.addEventListener(`click`,()=>we(ky(w()?.agent)),{signal:e}),g.addEventListener(`click`,()=>_.click(),{signal:e}),_.addEventListener(`change`,()=>{let e=_.files?.[0];if(_.value=``,!e||!x)return;if(b.disabled){T(`Not attached: the agent is not ready for a message. Check the terminal.`);return}let t=x;ie=!0,Le(),iS(t,e).then(n=>{if(ie=!1,Le(),!n||x!==t)return;let r=e.type.startsWith(`image/`)?URL.createObjectURL(e):null;Ce({name:e.name,previewUrl:r})})},{signal:e});function He(e){if(x!==e){x=e,S=[],ee=0,te=!1,E(),Ce(null),le.clear();for(let e of ae)ow(e.attachment);ae=[],T(``)}r.hidden=!1,c.hidden=!0,ce=!0,xe(),We(),D()}function Ue(){r.hidden=!0,E(),ye()}function We(){r.hidden||(Ie(),ze(),xe())}function Ge(e){if(!ne||e.requestId!==ne.requestId)return!1;let t=ne;if(E(),e.id!==x)return!0;let n=t.after!==null&&e.start===t.after&&!e.reset;return t.after!==null&&!n?(te=!1,S=[],D(),!0):(S=Yy(t.after===null?[...e.records]:[...S,...e.records]),ee=e.next,te=!0,xe(),re&&D(),!0)}function Ke(e){return!ne||e.requestId!==ne.requestId?!1:(E(),re=!1,c.hidden=!1,!0)}function qe(e){e!==x||r.hidden||(c.hidden=!0,D())}return{el:r,show:He,hide:Ue,refresh:We,applyTraceResponse:Ge,applyTraceError:Ke,applyTraceChanged:qe}}function dw(e){if(!e)return 0;let t=0;return e.listenerMismatch&&t++,e.orphanPty&&t++,e.destroyedReachable&&t++,t}function fw(e,t){return e||dw(t)>0}var pw={DORMANT:`DOR`,INITIALIZING:`INI`,STARTING:`STA`,RUNNING:`RUN`,WAITING:`WAI`,IDLE:`IDL`,COMPLETE:`CMP`,DONE:`DON`,FAILED:`FAI`},mw=null,hw=!1,gw=!1,_w=null,vw=null,yw=null,bw=`—`;function xw(e){return e==null?bw:Wl(e,`GB`)}function Sw(e){return e==null?bw:Hl(e,{smallestUnit:`s`,dropsZeroRemainder:!1})}function Cw(e){return e==null?bw:`${Sw(Math.max(0,Math.round((Date.now()-e)/1e3)))} ago`}function ww(){let e=j(`div`,`health-footer`);e.dataset.expanded=`false`,e.hidden=!0;let t=j(`div`,`health-summary`),n=j(`button`,`health-toggle`);n.type=`button`,n.setAttribute(`aria-expanded`,`false`),n.setAttribute(`aria-controls`,`health-detail`);let r=j(`span`,`health-chev`,`▲`);r.setAttribute(`aria-hidden`,`true`),n.append(r,j(`span`,`health-toggle-label`,`Health`));let i=j(`div`,`health-stats`);t.append(n,i);let a=j(`div`,`health-detail`);return a.id=`health-detail`,a.hidden=!0,n.addEventListener(`click`,()=>{gw=!gw,e.dataset.expanded=String(gw),n.setAttribute(`aria-expanded`,String(gw)),a.hidden=!gw,gw&&(G({type:`request-health-snapshot`}),Ew())}),e.append(t,a),_w=e,vw=i,yw=a,e}function Tw(){if(!vw||!mw)return;let e=mw,t=dw(e.anomalies);vw.innerHTML=`
|
|
90
|
+
<span class="health-stat" title="V8 heap used"><span class="health-stat-label">Heap</span> ${xw(e.process.heapUsed)}</span>
|
|
91
|
+
<span class="health-stat" title="Resident set size (process memory)"><span class="health-stat-label">RSS</span> ${xw(e.process.rss)}</span>
|
|
92
|
+
<span class="health-stat" title="External buffers (PTY data lives here)"><span class="health-stat-label">Ext</span> ${xw(e.process.external)}</span>
|
|
93
|
+
<span class="health-stat" title="Active resources (handles + requests)"><span class="health-stat-label">Hdl</span> ${e.process.activeResources}</span>
|
|
94
|
+
<span class="health-stat" title="Memory headroom at the last start check, and starts held for memory"><span class="health-stat-label">Mem</span> ${xw(e.memoryGate?.headroomBytes)} / ${e.memoryGate?.heldStartCount??0} held</span>
|
|
95
|
+
<span class="health-stat" title="Sessions: alivePty / total"><span class="health-stat-label">Sess</span> ${e.sessions.alivePty}/${e.sessions.total}</span>
|
|
96
|
+
<span class="health-stat" title="WebSockets: control + data"><span class="health-stat-label">WS</span> ${e.websockets.control}+${e.websockets.data}</span>
|
|
97
|
+
<span class="health-stat" title="Server uptime"><span class="health-stat-label">Up</span> ${Sw(e.uptimeSeconds)}</span>
|
|
98
|
+
${t>0?`<span class="health-anomaly" title="${t} anomaly type(s), expand for details">⚠ ${t}</span>`:``}
|
|
99
|
+
`}function Ew(){if(!yw||!mw)return;let e=mw,t=e.process,n=e.websockets,r=e.sessions,i=e.anomalies,a=``;if(dw(i)>0){let e=[];i.listenerMismatch&&e.push(`Listener count mismatch: data WS listener leaked or missing`),i.orphanPty&&e.push(`Orphan PTY: session has live PTY but state is DONE/FAILED/DORMANT`),i.destroyedReachable&&e.push(`Destroyed session still reachable in sessions map`),a=`
|
|
100
|
+
<div class="health-section health-section-warn">
|
|
101
|
+
<div class="health-section-title">⚠ Anomalies</div>
|
|
102
|
+
${e.map(e=>`<div class="health-row">${e}</div>`).join(``)}
|
|
103
|
+
</div>
|
|
104
|
+
`}let o=r.list.map(e=>{let t=[];e.destroyed&&t.push(`destroyed`),e.pendingRestart&&t.push(`pendingRestart`);let n=Object.entries(e.timers).filter(([,e])=>e).map(([e])=>e).join(`,`)||`none`;return`
|
|
105
|
+
<tr>
|
|
106
|
+
<td>${g_(e.name)}</td>
|
|
107
|
+
<td class="health-mono">${pw[e.state]||e.state}</td>
|
|
108
|
+
<td class="health-mono">${e.hasPty?e.ptyPid:bw}</td>
|
|
109
|
+
<td class="health-mono">${xw(e.outputBufferBytes)}</td>
|
|
110
|
+
<td class="health-mono">${e.outputBufferEntries}</td>
|
|
111
|
+
<td class="health-mono">${e.dataListenerCount}</td>
|
|
112
|
+
<td class="health-mono health-dim">${n}</td>
|
|
113
|
+
<td class="health-mono health-dim">${t.join(` `)||``}</td>
|
|
114
|
+
</tr>
|
|
115
|
+
`}).join(``);yw.innerHTML=`
|
|
116
|
+
${a}
|
|
117
|
+
<div class="health-section">
|
|
118
|
+
<div class="health-section-title">Process</div>
|
|
119
|
+
<div class="health-grid">
|
|
120
|
+
<div class="health-row"><span class="health-label">Heap used</span><span class="health-mono">${xw(t.heapUsed)}</span></div>
|
|
121
|
+
<div class="health-row"><span class="health-label">Heap total</span><span class="health-mono">${xw(t.heapTotal)}</span></div>
|
|
122
|
+
<div class="health-row"><span class="health-label">RSS</span><span class="health-mono">${xw(t.rss)}</span></div>
|
|
123
|
+
<div class="health-row"><span class="health-label">External</span><span class="health-mono">${xw(t.external)}</span></div>
|
|
124
|
+
<div class="health-row"><span class="health-label">Array buffers</span><span class="health-mono">${xw(t.arrayBuffers)}</span></div>
|
|
125
|
+
<div class="health-row"><span class="health-label">Active resources</span><span class="health-mono">${t.activeResources}</span></div>
|
|
126
|
+
<div class="health-row"><span class="health-label">Uptime</span><span class="health-mono">${Sw(e.uptimeSeconds)}</span></div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<div class="health-section">
|
|
131
|
+
<div class="health-section-title">Memory gate</div>
|
|
132
|
+
<div class="health-grid">
|
|
133
|
+
<div class="health-row"><span class="health-label">Headroom</span><span class="health-mono">${xw(e.memoryGate?.headroomBytes)}</span></div>
|
|
134
|
+
<div class="health-row"><span class="health-label">Read</span><span class="health-mono">${Cw(e.memoryGate?.headroomReadAtMs)}</span></div>
|
|
135
|
+
<div class="health-row"><span class="health-label">Starts held</span><span class="health-mono">${e.memoryGate?.heldStartCount??0}</span></div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div class="health-section">
|
|
140
|
+
<div class="health-section-title">WebSockets</div>
|
|
141
|
+
<div class="health-grid">
|
|
142
|
+
<div class="health-row"><span class="health-label">Control clients</span><span class="health-mono">${n.control}</span></div>
|
|
143
|
+
<div class="health-row"><span class="health-label">Data clients</span><span class="health-mono">${n.data}</span></div>
|
|
144
|
+
<div class="health-row"><span class="health-label">Tracked per session</span><span class="health-mono">${n.dataPerSessionTotal}</span></div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<div class="health-section">
|
|
149
|
+
<div class="health-section-title">Sessions (${r.total} total · ${r.alivePty} alive PTY)</div>
|
|
150
|
+
<div class="health-row health-dim">Listeners ${r.totalDataListeners} · Output buffer ${xw(r.totalOutputBufferBytes)}</div>
|
|
151
|
+
<table class="health-table">
|
|
152
|
+
<thead>
|
|
153
|
+
<tr>
|
|
154
|
+
<th>Name</th><th>State</th><th>PID</th><th>Buffer</th><th>Entries</th><th>Listeners</th><th>Timers</th><th>Flags</th>
|
|
155
|
+
</tr>
|
|
156
|
+
</thead>
|
|
157
|
+
<tbody>${o||`<tr><td colspan="8" class="health-dim">No sessions</td></tr>`}</tbody>
|
|
158
|
+
</table>
|
|
159
|
+
</div>
|
|
160
|
+
`}function Dw(){if(!_w)return;let e=fw(hw,mw?.anomalies),t=_w.hidden;_w.hidden=!e,e&&t&&mw&&(Tw(),gw&&Ew())}function Ow(e){hw=e,Dw()}function kw(e){if(_w)return _w;let t=ww();return e.appendChild(t),Dw(),t}function Aw(e){mw=e,Dw(),_w&&!_w.hidden&&(Tw(),gw&&Ew())}var jw=2e3,Mw=3;function Nw(e){return e.replace(/\r\n?/g,`
|
|
161
|
+
`).split(`
|
|
162
|
+
`)}function Pw(e){return{kind:`unchanged`,text:e}}function Fw(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function Iw(e,t){return e.length<=7?e.map(t):[...e.slice(0,Mw).map(t),Fw(e.length-6),...e.slice(e.length-Mw).map(t)]}function Lw(e){return e}function Rw(e){let t=[],n=0;for(;n<e.length;){if(e[n].kind!==`unchanged`){t.push(e[n]),n++;continue}let r=n;for(;r<e.length&&e[r].kind===`unchanged`;)r++;t.push(...Iw(e.slice(n,r),Lw)),n=r}return t}function zw(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function Bw(e,t,n){let r=Math.min(e.length,t.length)-n,i=0;for(;i<r&&e[e.length-1-i]===t[t.length-1-i];)i++;return i}function Vw(e,t){let n=e.length,r=t.length;if(n===0)return t.map(e=>({kind:`added`,text:e}));if(r===0)return e.map(e=>({kind:`removed`,text:e}));let i=r+1,a=new Int32Array((n+1)*i);for(let o=n-1;o>=0;o--)for(let n=r-1;n>=0;n--){let r=o*i+n;a[r]=e[o]===t[n]?a[r+i+1]+1:Math.max(a[r+i],a[r+1])}let o=[],s=0,c=0;for(;s<n&&c<r;)e[s]===t[c]?(o.push(Pw(e[s])),s++,c++):a[(s+1)*i+c]>=a[s*i+c+1]?(o.push({kind:`removed`,text:e[s]}),s++):(o.push({kind:`added`,text:t[c]}),c++);for(;s<n;)o.push({kind:`removed`,text:e[s]}),s++;for(;c<r;)o.push({kind:`added`,text:t[c]}),c++;return o}function Hw(e,t){let n=Nw(e),r=Nw(t),i=zw(n,r),a=Bw(n,r,i),o=n.slice(i,n.length-a),s=r.slice(i,r.length-a);return o.length+s.length>jw?{lines:[],isTooLarge:!0}:{lines:Rw([...Iw(n.slice(0,i),Pw),...Vw(o,s),...Iw(n.slice(n.length-a),Pw)]),isTooLarge:!1}}var Uw=Object.freeze([{kind:`approve`,label:`Approve`},{kind:`revise`,label:`Send feedback`},{kind:`terminal`,label:`Answer in terminal`}]);function Ww(e){return e===`approve`||e===`approve-accept-edits`}function Gw(e){return(e.state===`decided`||e.state===`closed`)&&Ww(e.lastDecision)}function Kw(e,t){let n=e.reviews.find(e=>e.agentId===t);return n!==void 0&&Gw(n)}function qw(e,t){return e.reviews.find(e=>e.agentId===t)??e.reviews[0]??null}function Jw(e){let t=qw(e.state,e.selectedAgentId);return t?e.selectedRevision&&t.revisions.some(t=>t.revision===e.selectedRevision)?e.selectedRevision:t.revisions.at(-1)?.revision??null:null}function Yw(e,t){return qw(e,t)?.openRevision?.revision??null}function Xw(e,t,n){if(n===null)return null;let r=qw(e,t)?.revisions??[],i=r.findIndex(e=>e.revision===n);return i<=0?null:r[i-1].revision}function Zw(e,t){let n=t-e;return Number.isFinite(n)?Vl(n,{rounding:`floor`,wording:`abbreviated`,suffix:` ago`,justNowBelowSeconds:60}):`just now`}function Qw(e,t,n){return t!==null&&t.state===`open`&&t.openRevision!==null&&t.openRevision.revision===n&&e.body!==null&&e.isConnected&&e.isDraft!==!0&&!e.isDecisionInFlight}function $w(e,t,n){let r=Qw(e,t,n),i=(e.pendingCommentCount??0)>0,a=e.hasUnsavedComment!==!0;return Uw.map(({kind:e,label:t})=>({kind:e,label:t,enabled:r&&(e===`terminal`||a&&(e===`revise`?i:!i))}))}function eT(e,t){return e.openRevision===null?t!==null&&e.approvedRevision===t?`Approved`:e.state===`released`?`Answer in the terminal`:e.state===`decided`?e.lastDecision===`revise`?`Feedback sent, waiting for the next revision`:`Approved`:`Closed`:e.openRevision.revision===t?``:`Rev ${e.openRevision.revision} is the one open`}function tT(e){let t=0;for(let n of e.comments??[])t+=n.comment.trim().length+(n.heading?.length??0);return t}function nT(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength+go}function rT(e){let t=e.plan;if(t!==void 0&&t.length===0)return`the edited plan is empty, so nothing was sent`;if(t!==void 0&&new TextEncoder().encode(t).byteLength>524288)return`the edited plan is over the plan size cap, so nothing was sent`;let n=e.comments??[];return n.length>40?`more than 40 section comments are pending, so nothing was sent`:n.find(e=>e.comment.length>4e3||(e.heading?.length??0)>4e3)?`a section comment is over ${Gr} characters, so nothing was sent`:tT(e)>1e4?`the feedback composes more than the ${qr} characters the hook reply carries, so nothing was sent`:nT(e)>cee?`the decision is larger than one control frame carries, so nothing was sent`:null}function iT(e){return e?`, ${e}`:``}function aT(e,t,n){if(!e.isConnected)return`Disconnected`;if(!t||n===null)return`No plan revision selected`;if(e.isDecisionInFlight)return`Sending your decision`;if(e.body===null)return`Loading`;if(e.isDraft===!0)return`Draft`;let r=eT(t,n);if(r)return r;if(e.hasUnsavedComment===!0)return`Save or cancel the open comment first.`;let i=e.pendingCommentCount??0;return i<=0?``:i===1?`1 comment to send. Remove it to approve.`:`${i} comments to send. Remove them to approve.`}function oT(e,t,n){let r=aT(e,t,n);return r?`${r}${iT(e.problem)}`:e.problem??``}function sT(e){let t=qw(e.state,e.selectedAgentId),n=Jw(e);return{tabs:e.state.reviews.map(e=>({agentId:e.agentId,label:e.agentId===null?`Main`:e.agentType||`Agent`,selected:e===t})),revisions:(t?.revisions??[]).map(e=>({revision:e.revision,label:`Rev ${e.revision}`,isOpen:e.revision===t?.openRevision?.revision,receivedAt:e.receivedAt,selected:e.revision===n})),selectedAgentId:t?.agentId??null,selectedRevision:n,previousRevision:Xw(e.state,t?.agentId??null,n),status:oT(e,t,n),actions:$w(e,t,n),modes:[{kind:`read`,label:`Read`,enabled:!0},{kind:`changes`,label:`Changes`,enabled:Xw(e.state,t?.agentId??null,n)!==null&&e.isDraft!==!0},{kind:`edit`,label:`Edit`,enabled:Qw(e,t,n)}]}}function cT(e,t){let n=e.reviews.findIndex(e=>e.agentId===t.agentId),r=[...(n===-1?null:e.reviews[n])?.revisions??[]],i=r.findIndex(e=>e.revision===t.revision),a={revision:t.revision,receivedAt:t.receivedAt,chars:t.chars,title:t.title};r[i===-1?r.length:i]=a,r.sort((e,t)=>e.revision-t.revision);let o={agentId:t.agentId,agentType:t.agentType,revisions:r,state:t.state,openRevision:t.state===`open`?{revision:t.revision,since:t.receivedAt}:null,approvedRevision:t.approvedRevision,lastDecision:t.lastDecision},s=[...e.reviews];return s[n===-1?s.length:n]=o,{reviews:s}}function lT({headingOffsets:e,scrollTop:t,isScrolledToEnd:n,readingLineOffset:r}){if(e.length===0)return null;if(n)return e.length-1;let i=t+r,a=0;for(let t=0;t<e.length&&!(e[t]>i);t++)a=t;return a}var uT=12,dT=8,fT=``,pT=48,mT=new Map;function hT(e,t){return JSON.stringify([e,t])}function gT(e){return e.id??fT}function _T(e,t){let n=mT.get(e);n||(n=new Map,mT.set(e,n));let r=hT(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>uT;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function vT(e){mT.delete(e)}function yT(e,t,n){return!e||n===null?null:mT.get(e)?.get(hT(t,n))??null}function bT(e){let t=j(`section`,`plan-face`);t.hidden=!0;let n=j(`header`,`plan-head`),r=j(`select`,`plan-heading-picker`);r.setAttribute(`aria-label`,`Plan section`);let i=j(`div`,`plan-view-panel`),a=j(`div`,`plan-sheet-head`),o=j(`button`,`plan-control plan-sheet-close`,`×`);o.type=`button`,o.setAttribute(`aria-label`,`Close`),a.append(j(`span`,null,`View`),o);let s=j(`div`,`plan-view-group plan-author-group`),c=j(`div`,`plan-tabs`);c.setAttribute(`role`,`tablist`),c.setAttribute(`aria-label`,`Plan author`),s.append(j(`span`,`plan-sheet-label`,`Author`),c);let l=j(`div`,`plan-view-group plan-revision-group`),u=j(`div`,`plan-revision-stepper`),d=j(`button`,`plan-control plan-revision-previous`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Previous revision`);let f=j(`button`,`plan-control plan-revision-next`,`›`);f.type=`button`,f.setAttribute(`aria-label`,`Next revision`);let p=j(`span`,`plan-revision-label`),m=j(`span`,`plan-revision-age`);u.append(d,p,f,m);let h=j(`div`,`plan-revision-list`);h.setAttribute(`role`,`radiogroup`),h.setAttribute(`aria-label`,`Revision`),l.append(j(`span`,`plan-sheet-label`,`Revision`),u,h);let g=j(`div`,`plan-view-group plan-mode-group`),_=j(`div`,`plan-modes`);_.setAttribute(`role`,`radiogroup`),_.setAttribute(`aria-label`,`Show`),g.append(j(`span`,`plan-sheet-label`,`Show`),_);let v=j(`div`,`plan-head-spacer`),y=j(`div`,`plan-draft-notice`),b=j(`span`,`plan-draft-dot`);b.setAttribute(`aria-hidden`,`true`);let x=j(`button`,`plan-control plan-draft-chip`,`Peek draft`);x.type=`button`,y.append(b,x),i.append(a,s,l,g,v,y);let S=j(`button`,`plan-control plan-view-button`,`View`);S.type=`button`,S.setAttribute(`aria-haspopup`,`dialog`),S.setAttribute(`aria-expanded`,`false`);let ee=j(`button`,`plan-control plan-minimize-button`,`Minimize`);ee.type=`button`,ee.addEventListener(`click`,e.showTerminal),n.append(r,i,S,ee);let te=j(`div`,`plan-sheet-backdrop`),ne=j(`div`,`plan-body-layout`),re=j(`nav`,`plan-heading-rail`);re.setAttribute(`aria-label`,`Plan sections`);let C=j(`article`,`plan-reading-column`);ne.append(re,C);let ie=j(`textarea`,`plan-editor`);ie.setAttribute(`aria-label`,`Plan markdown`),ie.spellcheck=!1;let ae=j(`footer`,`plan-action-bar`),oe=j(`span`,`plan-status`);oe.setAttribute(`role`,`status`);let se=j(`div`,`plan-decision-slot`),ce=j(`label`,`plan-accept-edits`),le=j(`input`,`plan-accept-edits-checkbox`);le.type=`checkbox`,ce.append(le,j(`span`,null,`Accept edits`)),se.append(ce,oe),ae.append(se);let w=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let n=j(`button`,`plan-action`,t);n.type=`button`,n.dataset.decision=e,n.addEventListener(`click`,()=>{n.disabled||rt(e)}),w.set(e,n),ae.append(n)}t.append(n,ne,ae,te);let T=null,ue={reviews:[]},E=null,D=null,de=!0,fe=``,pe=``,me=``,he=``,ge=!1,_e=null,ve=!1,ye=null,be=!1,xe=!1,Se=null,Ce=[],we=null,Te=null,Ee=new Map,De=new Map,Oe=new Map,ke=[],Ae=!1,je=null,Me=!1;function Ne(e,t=!0){Me=e,i.replaceChildren(...e?[a,g,l,s,y,v]:[a,s,l,g,v,y]),c.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of c.querySelectorAll(`button`)){let n=t.getAttribute(`aria-selected`)===`true`||t.getAttribute(`aria-checked`)===`true`;t.setAttribute(`role`,e?`radio`:`tab`),t.removeAttribute(e?`aria-selected`:`aria-checked`),t.setAttribute(e?`aria-checked`:`aria-selected`,String(n))}i.dataset.open=String(e),te.dataset.open=String(e),S.setAttribute(`aria-expanded`,String(e)),ne.inert=e,ae.inert=e,r.inert=e,S.inert=e,ee.inert=e,e?(i.setAttribute(`role`,`dialog`),i.setAttribute(`aria-label`,`Plan view`),i.setAttribute(`aria-modal`,`true`),o.focus()):(i.removeAttribute(`role`),i.removeAttribute(`aria-modal`),t&&S.focus())}function Pe(e){e.addEventListener(`keydown`,t=>{let n={ArrowLeft:-1,ArrowUp:-1,ArrowRight:1,ArrowDown:1}[t.key];if(n===void 0&&t.key!==`Home`&&t.key!==`End`)return;let r=[...e.querySelectorAll(`button:not(:disabled)`)];if(r.length===0)return;t.preventDefault();let i=(r.indexOf(document.activeElement)+(n??0)+r.length)%r.length;t.key===`Home`&&(i=0),t.key===`End`&&(i=r.length-1);let a=Me;r[i].click(),!(a&&e!==_)&&(e===_||!Me)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Fe=jr.subscribe((e,t)=>{t.includes(`layout`)&&Me&&Ne(!1,!1)});e.signal?.addEventListener(`abort`,Fe,{once:!0}),Pe(_),Pe(c),Pe(h),S.addEventListener(`click`,()=>Ne(!Me)),o.addEventListener(`click`,()=>Ne(!1)),te.addEventListener(`click`,()=>Ne(!1)),i.addEventListener(`keydown`,e=>{if(!Me)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Ne(!1);return}if(e.key!==`Tab`)return;let t=[...i.querySelectorAll(`button:not(:disabled)`)].filter(e=>e.getClientRects().length>0&&e.tabIndex>=0),n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())});function Ie(e){C.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}r.addEventListener(`change`,()=>Ie(r.value));function Le(){Ae=!1;let e=ke.map(e=>C.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=C.getBoundingClientRect().top-C.scrollTop,n=lT({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:C.scrollTop,isScrolledToEnd:C.scrollTop>0&&C.scrollTop+C.clientHeight>=C.scrollHeight-2,readingLineOffset:pT}),i=n===null?null:e[n]?.id??null;for(let e of ke)e.dataset.headingId===i?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);i!==null&&(r.value=i)}function Re(){Ae||t.hidden||ke.length===0||(Ae=!0,requestAnimationFrame(Le))}C.addEventListener(`scroll`,Re,{passive:!0});function ze(){je=null,ve=!1,be=!1,xe=!1,Se=null}function Be(t){we=t,e.reportProblem(t),Et()}function Ve(e){D=e,we=null,ze(),Ne(!1,Me),Et()}function He(e){let t=ue.reviews.find(e=>e.agentId===E)?.revisions??[],n=t[t.findIndex(e=>e.revision===D)+e];n&&Ve(n.revision)}d.addEventListener(`click`,()=>He(-1)),f.addEventListener(`click`,()=>He(1));function Ue(e,t){return`${T??``}:${e??`main`}:${t??`latest`}`}function We(){return Ue(E,D)}function Ge(e,t,n){return`${e??``}:${hT(t,n??0)}`}function Ke(){return Ge(T,E,D)}function qe(){return De.get(Ke())??null}function Je(){return qe()?.size??0}function Ye(){if(je===null)return!1;let e=De.get(je.target.bucketKey)?.get(je.target.sectionSlot)??``;return je.field.value.trim()!==e}function Xe(e){let t=De.get(e);if(!t)return[];let n=[];for(let e of Ce){let r=t.get(gT(e));r&&n.push({heading:e.heading,comment:r})}return n}function Ze(e,t){let n=t.trim(),r=De.get(e.bucketKey)??new Map;De.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&De.delete(e.bucketKey),Et()}function Qe(e){if(xe||ge)return;let t={bucketKey:Ke(),sectionSlot:gT(e)},n=j(`div`,`plan-comment-composer`),r=j(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),i=j(`textarea`,`plan-comment-input`);i.maxLength=Gr,i.value=De.get(t.bucketKey)?.get(t.sectionSlot)??``,r.append(i);let a=j(`div`,`plan-comment-actions`),o=j(`button`,`plan-control plan-comment-cancel`,`Cancel`);o.type=`button`;let s=j(`button`,`plan-control plan-comment-save`,`Save comment`);s.type=`button`,a.append(o,s),n.append(r,a);let c={target:t,element:n,field:i};je=c,i.addEventListener(`input`,Tt),o.addEventListener(`click`,()=>{je===c&&(je=null,Et())}),s.addEventListener(`click`,()=>{je===c&&(je=null),Ze(t,i.value)}),Et(),i.focus()}function $e(e){let t={bucketKey:Ke(),sectionSlot:gT(e)};if(je?.target.bucketKey===t.bucketKey&&je.target.sectionSlot===t.sectionSlot)return je.element;let n=qe()?.get(t.sectionSlot);if(!n)return null;let r=j(`div`,`plan-comment-card`),i=j(`div`,`plan-comment-head`),a=j(`button`,`plan-control plan-comment-edit`,`Edit`);a.type=`button`,a.addEventListener(`click`,()=>Qe(e));let o=j(`button`,`plan-control plan-comment-remove`,`Remove`);return o.type=`button`,o.disabled=ge,a.disabled=ge,o.addEventListener(`click`,()=>Ze(t,``)),i.append(j(`span`,`plan-comment-label`,`Your comment`),a,o),r.append(i,j(`p`,`plan-comment-text`,n)),r}function et(t,n,r={}){if(!T||n.revision===null||ge)return!1;let i=rT(r);if(i!==null)return Be(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return e.sendDecision(T,a)?(we=null,ge=!0,_e=Ww(t)?n:null,Et(),!0):(Be(W),!1)}function tt(e){if(!ve)return{};let t=ie.value;return t===yT(T,e.agentId,e.revision)?{}:{plan:t}}function nt(e){let t=Ge(T,e.agentId,e.revision),n=Xe(t);n.length!==0&&et(`revise`,e,{comments:n})&&e.revision!==null&&(Te={bucketKey:t,agentId:e.agentId,revision:e.revision},Et())}function rt(e){let t={agentId:E,revision:D};e===`revise`?nt(t):et(e===`approve`&&!ce.hidden&&le.checked?`approve-accept-edits`:e,t,tt(t))}function it(e){je=null,ve=e===`edit`,be=e===`changes`,ve&&ye!==Ke()&&(ie.value=yT(T,E,D)??``,ye=Ke()),we=null,Et()}function at(e){return`${e.kind}:${Ue(e.agentId,e.revision)}`}function ot(e){for(Oe.set(at(e),e);Oe.size>dT;){let e=Oe.keys().next().value;if(typeof e!=`string`)break;Oe.delete(e)}}function st(e,t){return e.agentId===t.agentId?e.kind===`draft`?t.revision===0:t.revision===0?!1:e.revision===null||e.revision===t.revision:!1}function ct(e){for(let[t,n]of Oe)if(st(n,e))return Oe.delete(t),n;return null}function lt(){for(let[e,t]of Oe)if(t.kind===`draft`)return Oe.delete(e),t;return null}function ut(){if(Oe.size!==1)return null;let e=Oe.entries().next().value;return e?(Oe.delete(e[0]),e[1]):null}function dt(){if(!T)return;let t=We();fe!==t&&e.requestPlan(T,E,D??void 0)&&(fe=t,ot({kind:`selection`,agentId:E,revision:D}))}function ft(){t.hidden||dt()}function pt(){return Xw(ue,E,D)}function O(t){if(!T)return;let n=Ue(E,t);me!==n&&e.requestPlan(T,E,t)&&(me=n,ot({kind:`diff-base`,agentId:E,revision:t}))}function mt(){if(!T)return;let t=`${T}:${E??`main`}`;he!==t&&e.requestDraft(T,E)&&(he=t,ot({kind:`draft`,agentId:E,revision:null}))}function ht(e,t){return`${e??``}:${t??``}`}function gt(){return ue.reviews.find(e=>e.agentId===E)?.revisions.find(e=>e.revision===D)?.receivedAt??0}function _t(){let e=Ee.get(ht(T,E));return e!==void 0&&e>gt()}function vt(){xe?(ze(),Et()):(je=null,ve=!1,be=!1,mt(),Et())}x.addEventListener(`click`,vt);function yt(e){re.replaceChildren(),r.replaceChildren(),ke=[];for(let t of e){let e=t.id??`plan-introduction`,n=t.heading??`Introduction`,i=j(`button`,`plan-heading-link`,n);i.type=`button`,i.dataset.level=String(t.level),i.dataset.headingId=e,i.title=n,i.dataset.commented=String(qe()?.has(gT(t))===!0),ke.push(i),i.addEventListener(`click`,()=>Ie(e)),re.append(i);let a=j(`option`,null,n);a.value=e,r.append(a)}}function bt(e){let t=pt();if(t===null){C.append(j(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let n=yT(T,E,t);if(n===null){C.append(j(`p`,`plan-loading`,`Loading the previous revision`)),O(t);return}let r=Hw(n,e);r.isTooLarge?(C.append(j(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),C.append(gh(dh(e)))):C.append(yh(r))}function xt(e){if(C.replaceChildren(),ve){yt(Ce),C.append(ie);return}if(e===null){if(Ce=[],yt(Ce),pe===We()){C.append(j(`p`,`plan-loading`,`This plan revision could not be loaded`));return}C.append(j(`p`,`plan-loading`,`Loading plan`)),dt();return}let t=dh(e);if(Ce=fh(t),yt(Ce),be){bt(e);return}if(xe){C.append(gh(t));return}let n=qe();C.append(_h(Ce,{hasComment:e=>n?.has(gT(e))===!0,isComposing:e=>je?.target.bucketKey===Ke()&&je.target.sectionSlot===gT(e),onComment:Qe,attachmentFor:$e}))}function St(e){s.hidden=e.tabs.length<2,c.replaceChildren();for(let t of e.tabs){let e=j(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,Me?`radio`:`tab`),e.setAttribute(Me?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{E=t.agentId,D=null,we=null,fe=``,pe=``,me=``,he=``,ze(),Ne(!1,Me),Et()}),c.append(e)}}function Ct(){return xe?Se:yT(T,E,D)}function wt(e){return sT({state:ue,selectedAgentId:E,selectedRevision:D,body:e,isConnected:de,isDecisionInFlight:ge,isDraft:xe,pendingCommentCount:Je(),hasUnsavedComment:Ye(),problem:we})}function k(e){oe.textContent=e.status,oe.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);ce.hidden=!t,le.disabled=!t;for(let t of e.actions){let e=w.get(t.kind);e&&(e.disabled=!t.enabled)}}function Tt(){k(wt(Ct()))}function Et(){let e=Me&&i.contains(document.activeElement),t=sT({state:ue,selectedAgentId:E,selectedRevision:D,body:null,isConnected:de});(E!==t.selectedAgentId||D!==t.selectedRevision)&&ze(),E=t.selectedAgentId,D=t.selectedRevision,ye!==Ke()&&(ye=null);let n=Ct(),a=wt(n);St(a);let s=a.revisions.findIndex(e=>e.selected),c=a.revisions[s],l=Date.now();u.hidden=a.revisions.length<2,p.textContent=`Rev ${s+1} of ${a.revisions.length}`,m.textContent=c?Zw(c.receivedAt,l):``,d.disabled=s<=0,f.disabled=s<0||s>=a.revisions.length-1,h.replaceChildren();for(let e of[...a.revisions].reverse()){let t=j(`button`,`plan-revision-option`);t.type=`button`,t.dataset.revision=String(e.revision),t.setAttribute(`role`,`radio`),t.setAttribute(`aria-checked`,String(e.selected)),t.tabIndex=e.selected?0:-1,t.append(j(`span`,`plan-revision-name`,e.label),j(`span`,`plan-revision-age`,Zw(e.receivedAt,l))),e.isOpen&&t.append(j(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Ve(e.revision)),h.append(t)}_.replaceChildren();let g=ve?`edit`:be?`changes`:`read`,v=a.modes.find(e=>e.kind===g&&e.enabled)??a.modes[0];for(let e of a.modes){let t=j(`button`,`plan-control plan-mode`,e.label);t.type=`button`,t.dataset.mode=e.kind,t.disabled=!e.enabled,t.setAttribute(`role`,`radio`),t.setAttribute(`aria-checked`,String(e.kind===g)),t.tabIndex=e.kind===v.kind?0:-1,t.addEventListener(`click`,()=>{t.disabled||(it(e.kind),_.querySelector(`[aria-checked="true"]`)?.focus())}),_.append(t)}y.hidden=!_t()&&!xe,x.hidden=y.hidden,x.setAttribute(`aria-pressed`,String(xe)),k(a),xt(n),r.disabled=ke.length===0,Re(),e&&!i.contains(document.activeElement)&&o.focus()}function Dt(t){_e!==null&&Kw(t,_e.agentId)&&(_e=null,ye=null,e.showTerminal())}function Ot(e){je=null,e!==T&&(_e=null,ge=!1,we=null,Oe.clear()),Ne(!1,!1),T=e,t.hidden=!1,fe=``,pe=``,Et(),ft()}function kt(){je=null,Ne(!1,!1),t.hidden=!0}function At(e,t){return t.kind!==`selection`||e.agentId!==E?!1:t.revision===null?D===null||D===e.revision:t.revision===D}function jt(e){e.kind===`draft`?(he=``,Be(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?me=``:pe=Ue(e.agentId,e.revision)}function Mt(e){Te!==null&&Yw(e,Te.agentId)!==Te.revision&&(De.delete(Te.bucketKey),Te=null)}function Nt(e){ge=!1,Pt({reviews:e.reviews});let t=e.body;if(!t){let e=ut()??lt();e!==null&&jt(e);return}let n=ct(t);if(t.revision===0){if(he=``,n===null||t.agentId!==E)return;Se=t.plan,xe=!0}else _T(e.id,t),n!==null&&At(t,n)&&(E=t.agentId,D=t.revision,fe=``,pe=``)}function Pt(e){let t=Yw(e,E);t!==null&&t!==Yw(ue,E)&&(D=t,ze()),Mt(e),ue=e,ge=!1,Dt(e)}function Ft(e){let n=!1;e.state&&Pt(e.state),e.draft&&Ee.set(ht(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(_e=null,ge=!1,Te=null,e.refusalText&&(we=e.refusalText)),typeof e.isConnected==`boolean`&&(n=e.isConnected&&!de,de=e.isConnected,n&&(fe=``,pe=``,me=``,he=``,ge=!1)),e.requestFailed&&(pe=fe),e.response&&Nt(e.response),t.hidden||Et(),(n||e.decisionRefused)&&ft()}return{el:t,show:Ot,hide:kt,update:Ft}}var xT=10;function ST(e){let t=new Map;for(let n of e.files){let e=n.path.split(`/`);for(let r=0;r<e.length;r++){let i=e.slice(0,r).join(`/`),a=t.get(i);a!==void 0&&a.localeCompare(n.path)<=0||t.set(i,n.path)}}return t}function CT(e,t){let n=[],r=new Set(e.files.map(e=>e.path));for(let i of e.links){let a=t.get(i.providerRepo),o=a?.firstChangedPathByDirectory.get(i.packageDir),s=o??i.importers.find(e=>r.has(e))??i.importers[0]??i.consumerManifest,c=o&&a?a.repo:e,l=i.importerCount===1?`file`:`files`,u=i.providerChangedPathCount===1?`file`:`files`,d=i.changedImporterCount===1?`file`:`files`,f=i.isLocalLink?`Linked locally (${i.versionSpec}), so ${i.providerRepo} changes reach it now.`:`Uses ${i.versionSpec} from the registry, so ${i.providerRepo} changes reach it only after a publish.`;i.providerChangedPathCount>0&&(f+=` ${i.providerRepo} changed ${i.providerChangedPathCount} ${u} in ${i.packageDir||`the repository root`}.`),i.changedImporterCount>0&&(f+=` ${i.changedImporterCount} importing ${d} changed here.`),n.push({dedupeKey:`link:${i.providerRepo}:${i.packageName}:${e.name}`,kind:`link`,severity:6,path:s,openPath:`${c.sessionPathPrefix}${s}`,text:`${e.name} imports ${i.packageName} from ${i.providerRepo} in ${i.importerCount} ${l}`,detail:f})}for(let t of e.collisions)n.push({dedupeKey:`collision:${e.sessionPathPrefix}${t.path}:${t.otherSessionId}`,kind:`collision`,severity:5,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,text:`Also being changed in "${t.otherSessionName}"`,detail:`Another live session is changing this file, so the two may conflict.`});for(let t of e.coChangeGaps){let r=t.confidence>0?Math.round(t.support/t.confidence):0;n.push({dedupeKey:`co-change:${e.sessionPathPrefix}${t.path}:${t.partner}`,kind:`co-change`,severity:4,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,text:`Usually changes with ${t.partner}, which is not in this change`,detail:`${t.support} of the ${r} commits that touched it also touched ${t.partner}.`})}for(let t of e.untestedFiles)n.push({dedupeKey:`untested:${e.sessionPathPrefix}${t.path}`,kind:`untested`,severity:3,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,text:`No test reaches it`,detail:`No dependent test was found in the import graph.`});return n}function wT(e,t,n){let r=e.get(t)??[];r.push(n),e.set(t,r)}function TT(e,t){for(let n of e.hotspots)wT(t,`${e.sessionPathPrefix}${n.path}`,{text:`often fixed`,title:`${n.fixCommitCount} of its last ${n.commitCount} commits were fixes.`});for(let n of e.blastRadius)n.transitiveDependentCount<xT||wT(t,`${e.sessionPathPrefix}${n.path}`,{text:`${n.transitiveDependentCount} depend on it`,title:`${n.transitiveDependentCount} files depend on it: ${n.directDependentCount} directly, ${n.dependentTestCount} of them tests.`})}function ET(e,t){return t.severity-e.severity||e.openPath.localeCompare(t.openPath)||e.dedupeKey.localeCompare(t.dedupeKey)}function DT(e){let t=new Set(e.repos.flatMap(e=>e.links.map(e=>e.providerRepo))),n=new Map;for(let r of e.repos)t.has(r.name)&&!n.has(r.name)&&n.set(r.name,{repo:r,firstChangedPathByDirectory:ST(r)});let r=new Map,i=new Map,a=e.error?[e.error]:[];for(let t of e.repos){for(let e of CT(t,n))r.has(e.dedupeKey)||r.set(e.dedupeKey,e);TT(t,i),t.error&&a.push(e.repos.length>1?`${t.name}: ${t.error}`:t.error)}return{worthALook:[...r.values()].sort(ET),hintsByOpenPath:i,repos:e.repos.map(e=>({name:e.name,sessionPathPrefix:e.sessionPathPrefix})),errors:a}}function OT(e,t){let n=null;for(let r of e)t.startsWith(r.sessionPathPrefix)&&(n&&n.sessionPathPrefix.length>=r.sessionPathPrefix.length||(n=r));return n?.name??null}var kT=5;function AT(e,t){let n=j(`button`,`review-look-line`);return n.type=`button`,n.dataset.kind=e.kind,n.title=`${e.detail} Click to open ${e.path} below.`,n.append(j(`span`,`review-look-file`,e.path),j(`span`,`review-look-text`,e.text)),n.addEventListener(`click`,()=>t(e.openPath)),n}function jT(e,{isShowingAll:t,onShowAll:n,onOpenFile:r}){if(e.worthALook.length===0&&e.errors.length===0)return null;let i=j(`section`,`review-look`);if(i.append(j(`h3`,`review-group-label`,`Worth a look`)),e.errors.length>0){let t=j(`p`,`review-look-error`,`Could not check this change for anything worth a look.`);t.title=e.errors.join(`
|
|
163
|
+
`),i.append(t)}let a=t?e.worthALook:e.worthALook.slice(0,kT);if(a.length>0){let e=j(`div`,`review-look-list`);for(let t of a)e.append(AT(t,r));i.append(e)}let o=e.worthALook.length-a.length;if(o===0)return i;let s=j(`div`,`review-look-more`),c=j(`button`,`review-look-show-all`,`Show all`);return c.type=`button`,c.addEventListener(`click`,n),s.append(j(`span`,`review-look-more-count`,`+${o} more`),c),i.append(s),i}function MT(e){return(e??[]).map(e=>{let t=j(`span`,`review-file-hint`,e.text);return t.title=e.title,t})}function NT(e){let t=/^@@+ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(e);if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return!Number.isFinite(n)||!Number.isFinite(r)?null:{oldStart:n,newStart:r}}function PT(e){let t=[];if(!e)return t;let n=String(e).split(/\r?\n/),r=null,i=null,a=null,o=null,s=()=>{if(a===null)return null;let e=a;return a=e+1,e},c=()=>{if(o===null)return null;let e=o;return o=e+1,e},l=e=>{let n={path:``,oldPath:null,status:`modified`,added:0,removed:0,binary:!1,hunks:[]};t.push(n),i=null;let r=/^diff --git a\/(.+?) b\/(.+)$/.exec(e);return r&&(n.oldPath=r[1]??null,n.path=r[2]??``),n};for(let e of n)if(e.startsWith(`diff --git `))r=l(e);else{if(!r){if(!e.startsWith(`--- `)&&!e.startsWith(`@@`))continue;r=l(`diff --git a/ b/`)}if(r){if(e.startsWith(`new file mode`))r.status=`added`;else if(e.startsWith(`deleted file mode`))r.status=`deleted`;else if(e.startsWith(`rename from `))r.oldPath=e.slice(12),r.status=`renamed`;else if(e.startsWith(`rename to `))r.path=e.slice(10),r.status=`renamed`;else if(e.startsWith(`Binary files`))r.binary=!0;else if(!(e.startsWith(`index `)||e.startsWith(`similarity index`)||e.startsWith(`dissimilarity index`)||e.startsWith(`old mode`)||e.startsWith(`new mode`))){if(e.startsWith(`--- `)){if(e===`--- /dev/null`){r.status=`added`;continue}if(!r.path){let t=e.slice(4).replace(/^a\//,``);t&&t!==`/dev/null`&&(r.oldPath=r.oldPath||t)}}else if(e.startsWith(`+++ `)){if(e===`+++ /dev/null`){r.status=`deleted`;continue}if(!r.path){let t=e.slice(4).replace(/^b\//,``);t&&t!==`/dev/null`&&(r.path=t)}}else if(e.startsWith(`@@`)){i={header:e,lines:[]},r.hunks.push(i);let t=NT(e);a=t?t.oldStart:null,o=t?t.newStart:null}else if(i){if(e===``)continue;let t=e[0];if(t===`+`){i.lines.push({type:`add`,text:e.slice(1),oldLineNumber:null,newLineNumber:c()}),r.added++;continue}if(t===`-`){i.lines.push({type:`del`,text:e.slice(1),oldLineNumber:s(),newLineNumber:null}),r.removed++;continue}if(t===`\\`){i.lines.push({type:`meta`,text:e.slice(1).trim(),oldLineNumber:null,newLineNumber:null});continue}i.lines.push({type:`context`,text:t===` `?e.slice(1):e,oldLineNumber:s(),newLineNumber:c()})}}}}for(let e of t)e.path||=e.oldPath||`(unknown)`;return t}function FT(e,t){return t===`merged`||t===`none`||e===`parked`&&t===`pending-review`}function IT(e){let t=0,n=0;for(let r of e||[])t+=r.added||0,n+=r.removed||0;return{files:(e||[]).length,added:t,removed:n}}function LT({changedFileCount:e,hasCommits:t,canMerge:n,isWorkspace:r,live:i,effectiveBase:a}){let o=`${e} file${e===1?``:`s`} changed`,s=(t,n)=>e>0?`${o}, ${t}`:n;if(r)return{text:e>0?`${o} in this worktree`:`Changes in this worktree`,namesMergeTarget:!1};if(n){let e=VT(a);return{text:s(`ready to merge into ${e}`,`Ready to merge into ${e}`),namesMergeTarget:!0}}return i?t?{text:s(`not ready to merge`,`Not ready to merge`),namesMergeTarget:!1}:{text:s(`not committed yet`,`Not committed yet`),namesMergeTarget:!1}:{text:s(`session ended`,`Session ended`),namesMergeTarget:!1}}function RT({status:e,mergeReason:t,fetched:n,hasDiffError:r,hasChanges:i,hasCommits:a,canMerge:o,isWorkspace:s,live:c,effectiveBase:l,changedFileCount:u=0}){return e===`parked`&&t===`base-diverged`?{text:`Parked: base branch diverged`,namesMergeTarget:!1}:e===`parked`?{text:`Parked: merge conflict`,namesMergeTarget:!1}:e===`merging`?{text:`Merging`,namesMergeTarget:!1}:e===`merged`?{text:`Merged`,namesMergeTarget:!1}:r?{text:`Could not read changes`,namesMergeTarget:!1}:n?i?LT({changedFileCount:u,hasCommits:a,canMerge:o,isWorkspace:s,live:c,effectiveBase:l}):{text:`No changes yet`,namesMergeTarget:!1}:{text:`Checking for changes`,namesMergeTarget:!1}}function zT(e,t){return e.namesMergeTarget?null:`merges into ${VT(t)}`}function BT({status:e,mergeReason:t,live:n,isMergeRendered:r,hasChanges:i}){return e===`parked`&&n&&t!==`base-diverged`?`resolve`:!i&&e!==`parked`&&e!==`merging`?`none`:r?`merge`:`none`}function VT(e){return e||`base`}function HT(e,t){return`Merge into ${VT(e)}, push it, and rebase this worktree, then keep working (${t})`}function UT(e){return e===`base-diverged`?`Resync the base branch by hand, then Merge again.`:`Needs manual merge`}function WT(e,t,n){let r=e!==`parked`||e===`parked`&&t===`base-diverged`;return{isRendered:r,isEnabled:r&&e!==`merging`&&n}}function GT({status:e,hasCommits:t,live:n,state:r}){return e===`merging`?null:t?!n&&(e===`parked`||e===`merged`)?`Session ended.`:!n||e===`parked`?null:r===`INITIALIZING`||r===`STARTING`?`Starting up. Mergeable once the session is live.`:null:n?`Nothing is committed yet. Merge opens once the session commits.`:null}function KT({fetched:e,changedFileCount:t,hasCommits:n}){return!e||t>0||n}function qT(e){return e||`its upstream`}function JT(e){if(!e)return null;let t=e.branch||`Base branch`,{state:n,ahead:r,behind:i}=e,a=qT(e.upstream);return n===`no-upstream`?`${t}: no upstream`:n===`unknown`&&e.error&&e.action===void 0?`${t}: sync check failed: ${e.error}`:n===`unknown`?`${t}: sync state unknown vs ${a}`:n===`in-sync`?`${t}: in sync with ${a}`:n===`ahead`?`${t}: ${r} ahead of ${a}`:n===`behind`?`${t}: ${i} behind ${a}`:n===`diverged`?`${t}: ${r} ahead, ${i} behind ${a}`:null}function YT(e){return!e||e.fetched===!1?`recheck`:e.state===`ahead`||e.state===`behind`?`resync`:`recheck`}function XT(e,t,n){let r=n?` (${t})`:``;if(!e||YT(e)===`recheck`)return`Click to fetch and check again${r}`;let i=e.branch||`Base branch`,a=qT(e.upstream);return e.state===`behind`?`Click to fast-forward ${i} to ${a}${r}`:`Click to push ${i} to ${a}${r}`}function ZT(e){return e?.state!==`in-sync`||e.fetched===!1}function QT(e){if(e.error)return`Resync failed: ${e.error}`;let t=e.branch||`The base branch`,n=qT(e.upstream);return e.action===`fast-forwarded`?`Fast-forwarded ${t} to ${n}.`:e.action===`pushed`?`Pushed ${t} to ${n}.`:e.state===`diverged`?`${t} has diverged from ${n}. Resolve manually.`:e.state===`in-sync`?null:e.state===`no-upstream`?`${t} has no upstream to resync against.`:`Could not determine sync status.`}var $T=new Set([`pending-review`,`parked`]),eE=600,tE=Us(`merge`,sm),nE=Us(`resolve-or-resync`,sm),rE={minPx:260,maxPx:700},iE=16,aE=5e3,oE=new Map,sE=new Map,cE=new Map,lE=new Map,uE=new Map,dE=new Map,fE=new Set,pE=new WeakMap,mE=new WeakMap,hE=new Set,gE=new Set,_E=!1,vE=null,yE=null,bE=null,xE=null,SE=null,CE=null,wE=null,TE=null,EE=null,DE=!1,OE=null,kE=null,AE=null,jE=null,ME=new Map,NE=null,PE=null;function FE(e,t){let n=j(`button`,`review-icon-button`);return n.type=`button`,n.title=e,n.setAttribute(`aria-label`,e),n.append(nf(t)),n}function IE(){DE=!1,bE?.querySelector(`.review-more-menu`)?.remove(),bE?.querySelector(`.review-more-button`)?.setAttribute(`aria-expanded`,`false`)}function LE({panel:e}){if(yE=e,!yE)return;let t=yE,n=j(`div`,`review-sidebar-head`),r=j(`span`,`review-sidebar-title`,`Review`);EE=j(`span`,`review-sidebar-session`),r.append(EE);let i=e=>{t.toggleAttribute(`data-collapsed`,e),Ec(!e)},a=FE(`Close review`,`M6 3L11 8L6 13`);a.classList.add(`review-sidebar-close`),a.addEventListener(`click`,()=>i(!0)),n.append(r,a);let o=j(`div`,`review-sidebar-rail`),s=FE(`Open review`,`M10 3L5 8L10 13`);s.classList.add(`review-sidebar-open`),s.addEventListener(`click`,()=>i(!1)),CE=j(`div`,`review-rail-status`),wE=j(`span`,`review-rail-added`),TE=j(`span`,`review-rail-removed`),CE.append(wE,TE),SE=j(`span`,`review-rail-label`,`Review`),o.append(s,SE,CE),bE=j(`div`,`review-controls`),xE=j(`div`,`review-sidebar-body`);let c=j(`div`,`review-resize-handle`);c.setAttribute(`role`,`separator`),c.setAttribute(`aria-orientation`,`vertical`),c.setAttribute(`aria-label`,`Resize review sidebar`),c.tabIndex=0,t.append(o,n,bE,xE,c),t.toggleAttribute(`data-collapsed`,!Tc()),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&DE&&(e.preventDefault(),IE(),bE?.querySelector(`.review-more-button`)?.focus())}),document.addEventListener(`pointerdown`,e=>{DE&&e.target instanceof Element&&(bE?.contains(e.target)&&e.target.closest(`.review-more-button, .review-more-menu`)||IE())}),h_({resizer:c,column:t,widthHost:t,widthProperty:`--sidebar-width`,bounds:rE,keyStepPx:iE,getStoredWidth:Zc,setStoredWidth:Qc,growsLeftward:!0}),Jv(e=>{DE=!1,AE=null,hE.clear(),gE.clear(),_E=!1,vE=null,e&&dD(e),e&&!pD(e)&&mD(e),wD()}),wD()}function RE(e,t){let n=oE.get(e);oE.set(e,t),FT(n,t)&&(cE.delete(e),lE.delete(e),uE.delete(e),e===Kv()&&fD(e)),e===Kv()&&wD()}function zE(e){yE&&(e?Sr(yE,e):Cr(yE))}function BE(e,t,n=null){let r=t||`none`;sE.set(e,n);let i=ME.get(e);i!==void 0&&i!==r&&ME.delete(e),RE(e,r)}function VE(e){let t=Tr(e);t&&ME.delete(t)&&t===Kv()&&wD()}function HE(e,t,n=null){sE.set(e,n),ME.delete(e),RE(e,t||`none`)}function UE(e,t){cE.set(e,t),lE.delete(e),e===Kv()&&(vE&&bD(vE,t),wD(),xD())}function WE(e,t){let n=Tr(e);n&&(lE.set(n,t),n===Kv()&&wD())}function GE(e,t){let n=Tr(e);if(!n)return;let r=Ti.safeParse(t);r.success&&r.data.sessionId===n&&(uE.set(n,r.data),n===Kv()&&wD())}function KE(e,t){let n=Tr(e),r=t;dE.set(n,r),r&&r.action!==void 0&&qE(n,r),n===Kv()&&wD()}function qE(e,t){fE.delete(e),clearTimeout(PE??void 0),PE=null;let n=QT(t);NE=n?{forId:e,text:n,isError:!!t.error}:null,NE&&!NE.isError&&(PE=setTimeout(()=>{NE&&NE.forId===e&&(NE=null),wD()},5e3))}function JE(e){let t=Tr(e);t&&t===Kv()&&dD(t)}function YE(e){let t=Tr(e);if(t!==Kv())return;let n=!cE.has(t)||lE.has(t),r=!uE.has(t)||XE(uE.get(t));n&&dD(t),r&&!n&&fD(t),wD()}function XE(e){return e?!!e.error||e.repos.some(e=>e.error!==null):!1}function ZE(e){let t=Tr(e);oE.delete(t),sE.delete(t),cE.delete(t),lE.delete(t),uE.delete(t),dE.delete(t),fE.delete(t),NE&&NE.forId===t&&(clearTimeout(PE??void 0),NE=null),t===Kv()?qv(null):wD()}function QE(){let e=Kv(),t=e?P.get(e):null;if(!e||!t)return $E(null,`No session is open to merge.`);if(pD(e))return $E(e,`A workspace session has no worktree to merge.`);if(ME.has(e))return $E(e,`Merge is already on its way for "${yD(t,e)}".`);let n=oE.get(e)||`none`,r=!!cE.get(e)?.hasCommits,i=WT(n,sE.get(e)||null,sD(t.currentState,r));return BT({status:n,mergeReason:sE.get(e)||null,live:uD(t.currentState),isMergeRendered:i.isRendered,hasChanges:oD(e)})!==`merge`||!i.isEnabled?$E(e,GT({status:n,hasCommits:r,live:uD(t.currentState),state:t.currentState})??`Nothing to merge in "${yD(t,e)}" right now.`):(cD(e,t.currentState),!0)}function $E(e,t){return AE={forId:e,text:t},clearTimeout(jE??void 0),jE=setTimeout(()=>{AE=null,wD()},aE),wD(),!1}function eD(){let e=Kv();if(!e||pD(e))return!1;let t=P.get(e);if(!t)return!1;let n=oE.get(e)||`none`,r=sE.get(e)||null;return BT({status:n,mergeReason:r,live:uD(t.currentState),isMergeRendered:WT(n,r,!1).isRendered,hasChanges:oD(e)})!==`resolve`||tD(e)?!1:(nD(e),!0)}function tD(e){return OE?.forId===e&&!OE.isError}function nD(e){let t=G({type:`resolve-session-merge`,id:e});OE=t?{forId:e,text:`Resolve prompt sent`,isError:!1}:{forId:e,text:`Not connected. The resolve prompt was not sent.`,isError:!0},clearTimeout(kE??void 0),kE=setTimeout(()=>{OE=null,wD()},t?3e3:aE),wD()}function rD(){let e=Kv();return!e||!P.has(e)||pD(e)||gD(e)?!1:(_D(e),!0)}function iD(e){if(!e)return{committed:[],uncommitted:[]};let t=pE.get(e);if(t)return t;let n={committed:PT(e.committed?.diff||``),uncommitted:PT(e.uncommitted?.diff||``)};return pE.set(e,n),n}function aD(e){let t=mE.get(e);if(t)return t;let n=DT(e);return mE.set(e,n),n}function oD(e){let t=iD(cE.get(e)),n=[...t.committed,...t.uncommitted],r=cE.get(e)??null;return KT({fetched:cE.has(e),changedFileCount:IT(n).files,hasCommits:!!r?.hasCommits})}function sD(e,t){return(er.includes(e)||e===A.RUNNING)&&t}function cD(e,t){t===A.RUNNING?Rf({title:`Merge while working`,message:`This session still looks like it is working. Merging rebases its worktree under it. Merge anyway?`,confirmLabel:`Merge anyway`,onConfirm:()=>lD(e,!0)}):lD(e,!1)}function lD(e,t){ME.has(e)||(G(t?{type:`merge-continue-session`,id:e,force:!0}:{type:`merge-continue-session`,id:e})?(ME.set(e,oE.get(e)||`none`),e===Kv()&&wD()):$E(e,`Not connected. The merge was not sent.`))}function uD(e){return e!==A.DORMANT&&e!==A.DONE&&e!==A.FAILED}function dD(e){G({type:`request-session-diff`,id:e}),fD(e)}function fD(e){uE.has(e)||uE.set(e,null),G({type:`request-change-map`,id:e})}function pD(e){return P.get(e)?.card.dataset.workspace!==void 0}function mD(e){dE.set(e,null),G({type:`request-branch-sync`,id:e}),e===Kv()&&wD()}function hD(e){fE.add(e),clearTimeout(PE??void 0),NE&&NE.forId===e&&(NE=null),G({type:`resync-branch`,id:e}),e===Kv()&&wD()}function gD(e){return fE.has(e)||dE.get(e)===null}function _D(e){gD(e)||(YT(dE.get(e))===`resync`?hD(e):mD(e))}function vD(e,t){return t?{text:`Resyncing`,loading:!0,error:!1}:NE&&NE.forId===e?{text:NE.text,loading:!1,error:NE.isError}:null}function yD(e,t){return e?.card?.dataset.session||t}function bD(e,t){if(!t)return;let{committed:n,uncommitted:r}=iD(t);for(let t of n)(t.path===e||t.oldPath===e)&&hE.add(`committed:${t.path}`);for(let t of r)(t.path===e||t.oldPath===e)&&hE.add(`uncommitted:${t.path}`)}function xD(){if(!xE||!vE)return;let e=xE.querySelectorAll(`.review-file`);for(let t of e)if(t.dataset.path===vE||t.dataset.oldPath===vE){t.scrollIntoView({block:`nearest`}),vE=null;return}}function SD(e){vE=e,bD(e,cE.get(Kv()??``)),wD(),xD()}function CD(){_E=!0,wD()}function wD(){let e=xE?.scrollTop??0;TD(),xE&&(xE.scrollTop=e)}function TD(){if(!bE||!xE)return;bE.replaceChildren(),xE.replaceChildren(),SE&&(SE.hidden=!0),CE&&(CE.hidden=!0);let e=Kv(),t=e?P.get(e):null;if(DD(e,t),!e||!t){AE&&bE.append(ED(AE.text,!0)),OD(`No session selected`,`Click a session name to review its changes here.`);return}let n=pD(e),r=oE.get(e)||`none`,i=sE.get(e)||null,a=t.currentState,o=$T.has(r),s=cE.has(e),c=s?cE.get(e):null,l=lE.get(e)??null,{committed:u,uncommitted:d}=iD(c),f=!!c?.hasCommits,p=uD(a),m=WT(r,i,sD(a,f)),h=dE.get(e),g=fE.has(e),_=VT(t.effectiveBase),v=IT([...u,...d]),y=BT({status:r,mergeReason:i,live:p,hasChanges:KT({fetched:s,changedFileCount:v.files,hasCommits:f}),isMergeRendered:m.isRendered}),b=RT({status:r,mergeReason:i,fetched:s,hasDiffError:l!==null,hasChanges:v.files>0||f,hasCommits:f,canMerge:!n&&m.isEnabled,isWorkspace:n,live:p,effectiveBase:_,changedFileCount:v.files}),x=j(`div`,`review-status-headline`);if(x.append(j(`span`,`review-status-text`,b.text)),!n&&!ZT(h)){let t=JT(h);if(t){x.title=t;let n=FE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);n.classList.add(`review-branch-sync-refresh`),n.title=XT(h,nE,y!==`resolve`),n.disabled=gD(e),n.setAttribute(`aria-description`,t),n.addEventListener(`click`,()=>_D(e)),x.append(j(`span`,`sr-only`,t),n)}}bE.append(x);let S=j(`div`,`review-status-meta`);if(s&&v.files>0&&S.append(j(`span`,`review-status-added`,`+${v.added}`),j(`span`,`review-status-removed`,`-${v.removed}`),j(`span`,`review-status-spacer`)),!n&&ZT(h)){let t=kD(e,y!==`resolve`);t&&S.append(t)}S.childElementCount>0&&bE.append(S),r===`parked`&&bE.append(j(`div`,`review-status-explanation`,UT(i))),SE&&(SE.hidden=!1),CE&&(CE.hidden=!1,CE.setAttribute(`aria-label`,`${b.text}, +${v.added}, -${v.removed}`),CE.title=b.text),wE&&(wE.textContent=`+${v.added}`),TE&&(TE.textContent=`-${v.removed}`);let ee=n?null:PD(e,{status:r,reviewable:o,mergeAction:m,live:p,state:a,effectiveBase:_,primaryAction:y});ee&&bE.append(ee);let te=n?null:vD(e,g),ne=!n&&y===`merge`&&!m.isEnabled?GT({status:r,hasCommits:f,live:p,state:a}):null;if(ne){let e=j(`div`,`review-control-reason`,ne);e.id=`review-merge-reason`,bE.append(e),bE.querySelector(`#review-merge-btn`)?.setAttribute(`aria-describedby`,e.id)}if(te?.text){let e=j(`div`,te.loading?`review-control-reason review-loading`:`review-control-reason`,te.text);e.id=`review-resync-reason`,te.error&&e.classList.add(`review-control-reason-error`),e.setAttribute(`role`,`status`),S.append(e),S.isConnected||bE.insertBefore(S,x.nextSibling),bE.querySelector(`.review-branch-sync-button, .review-branch-sync-refresh`)?.setAttribute(`aria-describedby`,e.id)}if(OE?.forId===e&&bE.append(ED(OE.text,OE.isError)),AE&&(AE.forId===e||AE.forId===null)&&bE.append(ED(AE.text,!0)),l){xE.append(j(`p`,`review-diff-error`,l));return}let re=uE.get(e),C=re?aD(re):null,ie=C?jT(C,{isShowingAll:_E,onShowAll:CD,onOpenFile:SD}):null;ie&&xE.append(ie);let ae=u.length>0&&d.length>0;u.length>0&&xE.append(AD({kind:`committed`,label:ae?`Committed`:null,meaning:zT(b,_),files:u,changeMapView:C})),d.length>0&&xE.append(AD({kind:`uncommitted`,label:ae?`Not committed yet`:null,meaning:null,files:d,changeMapView:C}))}function ED(e,t){let n=j(`div`,t?`review-control-reason review-control-reason-error`:`review-resolve-sent`,e);return n.setAttribute(`role`,`status`),n}function DD(e,t){if(!EE)return;let n=e&&t?yD(t,e):``;EE.textContent=n,EE.hidden=!n,EE.title=n}function OD(e,t){if(!xE)return;let n=j(`div`,`review-empty`);n.append(j(`div`,`review-empty-title`,e),j(`div`,`review-empty-desc`,t)),xE.append(n)}function kD(e,t){let n=dE.get(e);if(n===void 0)return null;if(n===null)return j(`span`,`review-branch-sync-text review-loading`,`Checking branch sync...`);let r=JT(n)||`Base branch: sync state unknown`,i=j(`span`,`review-branch-sync-text`);n.state&&(i.dataset.syncState=n.state),n.fetched===!1&&(i.dataset.stale=`true`);let a=FE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);return a.classList.add(`review-branch-sync-button`),a.title=XT(n,nE,t),a.disabled=fE.has(e),a.addEventListener(`click`,()=>_D(e)),i.append(a,j(`span`,`review-branch-sync-label`,r)),i}function AD({kind:e,label:t,meaning:n,files:r,changeMapView:i}){let a=j(`div`,`review-section`);a.dataset.kind=e,t&&a.append(jD(t,n,r));let o=j(`div`,`review-diff`),s=i&&i.repos.length>1?i.repos:[],c=null;for(let t of r){let n=s.length>0?OT(s,t.path):null;n&&n!==c&&o.append(j(`div`,`review-repo-label`,n)),c=n,o.append(MD(t,e,i))}return a.append(o),a}function jD(e,t,n){let r=IT(n),i=j(`div`,`review-section-head`),a=j(`div`,`review-section-id`);a.append(j(`span`,`review-section-label`,e)),t&&a.append(j(`span`,`review-section-meaning`,t));let o=j(`div`,`review-section-stat`);return o.append(j(`span`,`review-stat-files`,`${r.files} file${r.files===1?``:`s`}`),j(`span`,`review-add`,`+${r.added}`),j(`span`,`review-del`,`-${r.removed}`)),i.append(a,o),i}function MD(e,t,n){let r=`${t}:${e.path}`,i=hE.has(r),a=j(`div`,`review-file`);a.dataset.path=e.path,e.oldPath&&(a.dataset.oldPath=e.oldPath),a.dataset.status=e.status,a.dataset.open=i?`true`:`false`;let o=j(`button`,`review-file-head`);o.type=`button`,o.setAttribute(`aria-expanded`,i?`true`:`false`);let s=j(`span`,`review-file-twisty`,i?`▾`:`▸`);s.setAttribute(`aria-hidden`,`true`);let c=j(`span`,`review-file-name`);c.append(j(`span`,`review-file-path`,e.path));let l=MT(n?.hintsByOpenPath.get(e.path));if(l.length>0){let e=j(`span`,`review-file-hints`);e.append(...l),c.append(e)}o.append(s,c);let u=j(`span`,`review-file-counts`);if(e.binary&&u.append(j(`span`,`review-bin`,`bin`)),e.binary||u.append(j(`span`,`review-add`,`+${e.added}`),j(`span`,`review-del`,`-${e.removed}`)),o.append(u),o.addEventListener(`click`,()=>{let e=hE.has(r);e&&hE.delete(r),e||hE.add(r),wD()}),a.append(o),!i)return a;let d=j(`div`,`review-file-body`);if(e.binary)return d.append(j(`div`,`review-file-binary`,`Binary file not shown`)),a.append(d),a;let f=0,p=!1;for(let t of e.hunks){if(f>=eE&&!gE.has(r)){p=!0;break}d.append(j(`div`,`review-hunk-head`,t.header));for(let e of t.lines){if(f>=eE&&!gE.has(r)){p=!0;break}let t=j(`div`,`review-line review-line-${e.type}`),n=e.type===`add`?`+`:e.type===`del`?`-`:e.type===`meta`?`\\`:` `;t.append(j(`span`,`review-line-gutter`,n)),t.append(j(`span`,`review-line-text`,e.text)),d.append(t),f++}if(p)break}if(p){let e=j(`button`,`review-expand`,`Show the rest of this file`);e.type=`button`,e.addEventListener(`click`,()=>{gE.add(r),wD()}),d.append(e)}return a.append(d),a}function ND({id:e,label:t,shortcut:n,title:r,disabled:i=!1,danger:a=!1,onClick:o}){let s=j(`button`,a?`review-btn review-btn-danger`:`review-btn review-btn-primary`);return s.type=`button`,e&&(s.id=e),r&&(s.title=r),s.disabled=i,s.innerHTML=n?`${t} <kbd class="review-shortcut" aria-hidden="true">${n}</kbd>`:t,s.addEventListener(`click`,o),s}function PD(e,{status:t,reviewable:n,mergeAction:r,live:i,state:a,effectiveBase:o,primaryAction:s}){let c=j(`div`,`review-actions`),l=s===`resolve`;s===`merge`&&c.append(ND({id:`review-merge-btn`,label:`Merge`,shortcut:tE,title:HT(o,tE),disabled:!r.isEnabled||ME.has(e),onClick:()=>cD(e,a)})),l&&c.append(ND({label:`Resolve`,shortcut:nE,title:`Paste a resolve prompt into this session so the agent can finish the merge (${nE})`,disabled:tD(e),onClick:()=>nD(e)}));let u=j(`div`,`review-action-controls`);if(u.append(c),!n||i)return c.childElementCount>0?u:null;let d=FE(`More review actions`,$d);if(d.classList.add(`review-more-button`),d.setAttribute(`aria-haspopup`,`menu`),d.setAttribute(`aria-expanded`,String(DE)),d.setAttribute(`aria-controls`,`review-more-menu`),d.addEventListener(`click`,()=>{DE=!DE,wD(),(bE?.querySelector(DE?`.review-more-menu button:not(:disabled)`:`.review-more-button`)??bE?.querySelector(`.review-more-button`))?.focus()}),c.append(d),!DE)return u;let f=j(`div`,`review-more-menu`);if(f.id=`review-more-menu`,f.setAttribute(`role`,`menu`),f.setAttribute(`aria-label`,`More review actions`),n&&!i){let n=ND({label:`Discard worktree`,danger:!0,disabled:t===`merging`,onClick:()=>{DE=!1,wD(),Rf({title:`Discard worktree`,message:`Throw away the worktree changes for "${yD(P.get(e),e)}"? This cannot be undone.`,confirmLabel:`Discard`,danger:!0,onConfirm:()=>G({type:`discard-session-worktree`,id:e})})}});n.setAttribute(`role`,`menuitem`),f.append(n)}return u.append(f),u}var FD=160,ID=Object.freeze({Bash:`command`,Read:`file_path`,Edit:`file_path`,MultiEdit:`file_path`,Write:`file_path`,NotebookEdit:`notebook_path`,Grep:`pattern`,Glob:`pattern`,WebFetch:`url`,WebSearch:`query`,Task:`description`,Agent:`description`,Skill:`skill`});function LD(e){let t=e.split(/\r?\n/,1)[0]?.trim()??``;return t.length<=FD?t:`${t.slice(0,157)}...`}function RD(e,t){let n=ID[e];if(!n||!t||typeof t!=`object`||Array.isArray(t))return``;let r=t[n];return typeof r==`string`?LD(r):``}var zD=5e3;function BD(e){let t=e.match(/<command-name>([^<]*)<\/command-name>/)?.[1];return t===void 0||/[\r\n]/.test(t)?null:t.trim()||null}function VD(e,t){if(!e.toolUseId)return BD(e.text)??`context`;let n=t.get(e.toolUseId);return n?RD(n.name,n.input)||n.name:`expansion`}function HD(e){return e.kind!==`expansion`||e.toolUseId?!1:BD(e.text)!==null}function UD(e){return e.kind===`prompt`||e.kind===`session`||HD(e)}function WD(e){return new TextEncoder().encode(e).byteLength}function GD(e){return e.kind===`prompt`||e.kind===`expansion`||e.kind===`thinking`||e.kind===`assistant`||e.kind===`notice`?e.text:e.kind===`tool_result`?e.content:e.kind===`raw`?e.line:e.kind===`tool_call`?JSON.stringify(e.input,null,2)??String(e.input??``):[`${e.vendor} ${e.vendorSessionId}`,e.transcriptPath,e.reason??``].filter(Boolean).join(`
|
|
164
|
+
`)}var KD={prompt:`PROMPT`,expansion:`EXPANSION`,thinking:`THINKING`,assistant:`ASSISTANT`,tool_call:`TOOL`,tool_result:`RESULT`,session:`SESSION`,notice:`NOTICE`,raw:`RAW`},qD=[{kind:`thinking`,label:`Thinking`},{kind:`tool_result`,label:`Tool result`},{kind:`raw`,label:`Raw`}];function JD(e,t){if(e.kind===`prompt`)return{prefix:`Prompt: `,text:LD(e.text)};if(e.kind===`thinking`)return{prefix:`Thinking: `,text:LD(e.text)};if(e.kind===`assistant`)return{prefix:`Assistant: `,text:LD(e.text)};if(e.kind===`notice`)return{prefix:`Notice: `,text:LD(e.text)};if(e.kind===`raw`)return{prefix:`Raw: `,text:LD(e.line)};if(e.kind===`session`)return{prefix:`Session: `,text:`${e.vendor} ${e.vendorSessionId}`};if(e.kind===`expansion`)return{prefix:`Expansion: `,text:VD(e,t)};if(e.kind===`tool_call`){let t=RD(e.name,e.input);return t?{prefix:`${e.name}: `,text:t}:{prefix:``,text:e.name}}return{prefix:`${t.get(e.toolUseId)?.name??`Tool`} result: `,text:`${WD(e.content)} bytes`}}function YD(e){if(!e.agentType)return``;let t=e.agentId?` ${e.agentId.slice(-6)}`:``;return`[${e.agentType}${t}] `}function XD(e,t){let n=JD(e,t),r=YD(e),i=e.kind===`tool_call`||e.kind===`tool_result`?`${n.prefix}${n.text}`:n.text,a=[],o=e.kind===`notice`?`muted`:`default`;if(e.kind===`tool_result`&&e.isError&&(o=`error`,a.push(`error`)),e.truncated===!0&&(o!==`error`&&(o=`muted`),a.push(`truncated`)),e.kind===`tool_result`){let n=t.get(e.toolUseId),r=n?e.ts-n.ts:NaN;Number.isFinite(r)&&r>=0&&a.push(r>1e3?`${(r/1e3).toFixed(1)}s`:`${Math.round(r)}ms`)}return{kind:e.kind,tag:KD[e.kind],text:`${r}${i}`,tone:o,badges:a}}function ZD(e,t){return{record:e,...XD(e,t)}}function QD(e){return e.kind!==`tool_result`&&e.kind!==`expansion`?null:e.toolUseId||null}function $D(e,t){let n=QD(e);return!n||t.has(n)?null:n}function eO(e,t,n=1){e.set(t,(e.get(t)??0)+n)}function tO(e,t){let n=(e.get(t)??0)-1;n>0?e.set(t,n):e.delete(t)}function nO(e,t){if(t.size!==0)for(let n of e.turns)for(let r=0;r<n.rows.length;r+=1){let i=n.rows[r],a=QD(i.record);a&&t.has(a)&&(n.rows[r]=ZD(i.record,e.toolCallByUseId))}}function rO(){return{turns:[],toolCallByUseId:new Map,unresolvedToolUseCounts:new Map}}function iO(e){if(e.startedAt===null)return 0;let t=e.head?.record.ts??e.startedAt;for(let n of e.rows)t=Math.max(t,n.record.ts);return Math.max(0,t-e.startedAt)}function aO(e){let{rowCount:t,toolCallCount:n,errorCount:r,resultBytes:i}=e.metrics;return`${`${t} ${t===1?`row`:`rows`}`}, ${`${n} ${n===1?`tool`:`tools`}`}, ${`${r} ${r===1?`error`:`errors`}`}, ${Wl(i,`KB`)}, ${_u(iO(e))}`}function oO(){return{rowCount:0,toolCallCount:0,errorCount:0,resultBytes:0}}function sO(e,t,n){e.metrics.rowCount+=n,t.record.kind===`tool_call`&&(e.metrics.toolCallCount+=n),t.record.kind===`tool_result`&&(e.metrics.resultBytes+=WD(t.record.content)*n,t.record.isError&&(e.metrics.errorCount+=n))}function cO(e,t){for(let n of t)n.kind===`tool_call`&&e.toolCallByUseId.set(n.toolUseId,n);let n=[],r=e.turns[e.turns.length-1]??null;for(let i of t){let t=$D(i,e.toolCallByUseId);t&&eO(e.unresolvedToolUseCounts,t);let a=ZD(i,e.toolCallByUseId);if(UD(i)){r={head:a,rows:[],hasTrimmedRows:!1,startedAt:i.ts,metrics:oO()},sO(r,a,1),e.turns.push(r),n.push({turnIndex:e.turns.length-1,isNewTurn:!0,head:a,rows:[]});continue}r||(r={head:null,rows:[],hasTrimmedRows:!1,startedAt:i.ts,metrics:oO()},e.turns.push(r),n.push({turnIndex:e.turns.length-1,isNewTurn:!0,head:null,rows:[]})),r.rows.push(a),sO(r,a,1);let o=e.turns.length-1,s=n[n.length-1];s&&s.turnIndex===o?s.rows.push(a):n.push({turnIndex:o,isNewTurn:!1,head:null,rows:[a]})}return n}function lO(e,t){let n=rO();cO(n,t);let r=new Set;for(let[t,i]of n.toolCallByUseId)e.toolCallByUseId.has(t)||(e.toolCallByUseId.set(t,i),r.add(t));let i=new Set;for(let t of r)e.unresolvedToolUseCounts.delete(t)&&i.add(t);for(let[t,r]of n.unresolvedToolUseCounts)e.toolCallByUseId.has(t)||eO(e.unresolvedToolUseCounts,t,r);let a=n.turns[n.turns.length-1],o=e.turns[0],s=!!a&&!!o&&!o.head,c=s?a.head:null,l=s?a.rows:[];if(s){n.turns.pop();let e=a.startedAt,t=o.startedAt;e!==null&&(t===null||e<t)&&(o.startedAt=a.startedAt),o.head=c,o.rows=[...l,...o.rows],o.metrics={rowCount:a.metrics.rowCount+o.metrics.rowCount,toolCallCount:a.metrics.toolCallCount+o.metrics.toolCallCount,errorCount:a.metrics.errorCount+o.metrics.errorCount,resultBytes:a.metrics.resultBytes+o.metrics.resultBytes}}return e.turns=[...n.turns,...e.turns],nO(e,i),{newTurns:n.turns,mergedHead:c,mergedRows:l,needsRerender:i.size>0}}function uO(e){return e.rows.length+ +!!e.head}function dO(e){let t=0;for(let n of e.turns)t+=uO(n);return t}function fO(e,t){for(let n of t){if(n.record.kind===`tool_call`){e.toolCallByUseId.delete(n.record.toolUseId);continue}let t=QD(n.record);t&&tO(e.unresolvedToolUseCounts,t)}}function pO(e,t){fO(e,t.head?[t.head,...t.rows]:t.rows)}function mO(e,t){let n=e.turns[0];if(!n)return 0;let r=Math.min(t,n.rows.length);if(r<=0)return 0;let i=n.rows.slice(0,r);fO(e,i);for(let e of i)sO(n,e,-1);return n.rows=n.rows.slice(r),n.hasTrimmedRows=!0,r}function hO(e,t=zD){let n=dO(e),r=0;for(;n>t&&r<e.turns.length-1;){let t=e.turns[r];if(!t)break;n-=uO(t),pO(e,t),r+=1}return r>0&&(e.turns=e.turns.slice(r)),n<=t?{droppedTurnCount:r,droppedRowCount:0}:{droppedTurnCount:r,droppedRowCount:mO(e,n-t)}}function gO(e){let t=[],n=new Set;for(let r of e)r.id&&r.name&&!n.has(r.id)&&(n.add(r.id),t.push({id:r.id,label:r.name}));return t}function _O(e,t,n,r=!0){return t&&e.some(e=>e.id===t)?t:n&&e.some(e=>e.id===n)?n:r?e[0]?.id??null:null}function vO(e){return!e.selectedSessionId||!e.isPanelVisible||e.hasPendingRequest?null:e.hasLoadedOnce?{id:e.selectedSessionId,direction:`forward`,after:e.nextOffset}:{id:e.selectedSessionId,direction:`tail`,after:0,endingAt:`tail`}}function yO(e,t=zD){return!e.selectedSessionId||!e.hasLoadedOnce||e.hasDroppedEarliestRows||e.residentRowCount>=t?!1:e.firstOffset>0}function bO(e,t=zD){return!yO(e,t)||e.hasPendingRequest||!e.selectedSessionId?null:{id:e.selectedSessionId,direction:`earlier`,after:0,endingAt:e.firstOffset}}function xO(e){let{pendingRequest:t,resident:n,reply:r}=e;return!t||t.id!==r.id?`ignore`:!n||n.sessionId!==r.id?`stale`:r.reset||r.next<r.start?`reset`:t.direction===`tail`?n.hasLoadedOnce?`stale`:`seed`:t.direction===`earlier`?n.firstOffset===t.endingAt?r.next===t.endingAt?`prepend`:`reset`:`stale`:n.nextOffset===t.after?r.start===t.after?`append`:`reset`:`stale`}function SO(e){return e.hasSelectionChanged||e.isRenderedTraceStale||!e.hasRenderedOnce}function CO(e,t,n){return e!==0||t?null:n?.startedAt??null}function wO(e,t){return TO(e,t)?e.filter(e=>e!==t):[...e,t]}function TO(e,t){return e.includes(t)}function EO(e){return e?`No trace has been recorded for ${e.label}.`:`No sessions are available.`}var DO=1e4,OO=null,kO=null,AO=null,jO=null,MO=[],NO=!1,PO=Nc(),FO=null,IO=null,LO=[],RO=null,zO=null,J=null,BO=null,VO=!1,HO=null;function UO(){return!!OO&&!br(OO)}function WO(){return LO.find(e=>e.id===RO)??null}function GO(){BO&&=(clearTimeout(BO.timeoutHandle),null)}function KO(){BO=null,HO=`The trace did not load within ${Math.round(DO/1e3)} s.`,gk()}function qO(e){GO(),VO=!1,HO=null,RO=e,J=e?{sessionId:e,grouping:rO(),firstOffset:0,nextOffset:0,hasDroppedEarliestRows:!1,filePath:``,hasLoadedOnce:!1}:null,NO=!0}function JO(e){let t=_O(LO,zO,RO,e);return zO&&t===zO&&(zO=null),t!==RO&&(qO(t),!0)}function YO(e){if(!FO)return;let t=e.endingAt===void 0?{type:`session-trace`,id:e.id,after:e.after}:{type:`session-trace`,id:e.id,endingAt:e.endingAt};FO(t)?BO={request:e,timeoutHandle:setTimeout(KO,DO)}:(HO=W,_k())}function XO(e=!1){if(!FO)return;let t=vO({selectedSessionId:RO,isPanelVisible:e||UO(),hasPendingRequest:!!BO,hasLoadedOnce:J?.hasLoadedOnce??!1,nextOffset:J?.nextOffset??0});t&&YO(t)}function ZO(){return{selectedSessionId:RO,hasPendingRequest:!!BO,hasLoadedOnce:J?.hasLoadedOnce??!1,hasDroppedEarliestRows:J?.hasDroppedEarliestRows??!1,firstOffset:J?.firstOffset??0,residentRowCount:J?dO(J.grouping):0}}function QO(){if(!FO)return;let e=bO(ZO());e&&YO(e)}function $O(e){LO.some(t=>t.id===e)&&e!==RO&&(zO=null,qO(e),XO(),gk())}function ek(){let e=j(`label`,`trace-session-field`),t=j(`span`,`trace-session-label`,`Session`),n=j(`select`,`trace-session-select`);n.disabled=LO.length===0;for(let e of LO){let t=j(`option`,null,e.label);t.value=e.id,t.selected=e.id===RO,n.append(t)}return n.addEventListener(`change`,()=>$O(n.value)),e.append(t,n),e}function tk(e){e.toggleAttribute(`data-hidden`,TO(PO,e.dataset.kind??``))}function nk(){if(AO)for(let e of AO.querySelectorAll(`.trace-row`))tk(e)}function rk(e){if(AO)for(let t of AO.querySelectorAll(`details`))t.open=e}function ik(){let e=j(`div`,`trace-filters`);for(let t of qD){let n=j(`button`,`trace-filter`,t.label);n.type=`button`;let r=()=>{n.setAttribute(`aria-pressed`,String(!TO(PO,t.kind)))};r(),n.addEventListener(`click`,()=>{PO=wO(PO,t.kind),Pc(PO),r(),nk()}),e.append(n)}for(let[t,n]of[[`Expand all`,!0],[`Collapse all`,!1]]){let r=j(`button`,`trace-expand-control`,t);r.type=`button`,r.addEventListener(`click`,()=>{rk(n)}),e.append(r)}return e}function ak(){let e=_r(`trace`,`Session trace`,`Bodies load from the local trace file only when requested.`),t=j(`div`,`trace-controls`);t.append(ek());let n=J?.filePath??``,r=j(`code`,`trace-path`,n);r.title=n,t.append(r);let i=J?CO(J.firstOffset,J.hasDroppedEarliestRows,J.grouping.turns[0]):null;if(i!==null&&t.append(j(`span`,`trace-session-start`,`Started ${new Date(i).toLocaleString()}`)),e.append(t,ik()),!HO)return e;let a=df(`trace-status`);return a.show(`error`,HO),e.append(a.element),e}function ok(e){let t=j(`div`,`trace-copy-wrap`),n=j(`button`,`trace-copy`,`Copy`);n.type=`button`;let r=j(`span`,`trace-copy-status`);return r.setAttribute(`role`,`status`),n.addEventListener(`click`,()=>{let t=xr(e);t?(t.then(()=>{r.textContent=`Copied`}).catch(()=>{r.textContent=`Copy failed`}),setTimeout(()=>{r.textContent=``},1600)):r.textContent=`Copy failed`}),t.append(n,r),t}function sk(){let e=j(`div`,`trace-earlier-wrap`),t=j(`button`,`trace-load-earlier`,`Load earlier`);return t.type=`button`,t.addEventListener(`click`,()=>{QO()}),e.append(t),e}function ck(e,t,n=``){let r=j(`details`,`trace-row${n?` ${n}`:``}`);r.dataset.kind=e.kind,r.dataset.tone=e.tone,tk(r);let i=j(`summary`,`trace-row-summary`);i.append(j(`span`,`trace-offset`,vu(t,e.record.ts)),j(`span`,`trace-kind`,e.tag),j(`span`,`trace-row-label`,e.text));for(let t of e.badges){let e=j(`span`,`trace-badge`,t);e.dataset.badge=t,i.append(e)}let a=j(`div`,`trace-row-body`);r.append(i,a);let o=!1;return r.addEventListener(`toggle`,()=>{if(!r.open||o)return;o=!0;let t=GD(e.record);a.append(ok(t),j(`pre`,`trace-row-pre`,t))}),r}function lk(e){return j(`span`,`trace-turn-metrics`,aO(e))}function uk(e,t){e&&t&&(t.textContent=aO(e))}function dk(e,t){let n=e.children,r=Math.min(t.rows.length,n.length);for(let e=0;e<r;e+=1){let r=n[e]?.querySelector(`.trace-offset`);r&&(r.textContent=vu(t.startedAt,t.rows[e].record.ts))}}function fk(e,t,n){let r=ck(t,e.startedAt,`trace-turn-head`);return N(r,`.trace-row-summary`).append(n),r}function pk(e){let t=j(`section`,`trace-turn`),n=lk(e);if(e.head&&t.append(fk(e,e.head,n)),!e.head){let e=j(`h2`,`trace-leading-title`);e.append(j(`span`,`trace-leading-label`,`Before first prompt`),n),t.append(e)}let r=j(`div`,`trace-rows`);for(let t of e.rows)r.append(ck(t,e.startedAt));return e.hasTrimmedRows&&t.append(j(`p`,`trace-trimmed`,`Earlier rows trimmed`)),t.append(r),{section:t,rowsElement:r,metricsElement:n}}function mk(e){return e?BO?.request.id===e.id&&!J?.hasLoadedOnce?`Loading trace.`:EO(e):EO(null)}function hk(){if(!OO)return;let e=j(`div`,`trace-content`);kO=ak(),e.append(kO),AO=null,jO=null,MO=[];let t=WO(),n=J?.grouping.turns??[];if(!t||n.length===0){e.append(j(`p`,`trace-empty`,mk(t))),OO.replaceChildren(e),NO=!1;return}yO(ZO())&&(jO=sk(),e.append(jO));let r=j(`div`,`trace-turns`);for(let e of n){let t=pk(e);MO.push(t),r.append(t.section)}AO=r,nk(),e.append(r),OO.replaceChildren(e),NO=!1}function gk(){OO&&(UO()?hk():NO=!0)}function _k(){if(!kO||!UO())return;let e=ak();kO.replaceWith(e),kO=e}function vk(e){if(!AO)return;let t=J?.grouping.turns[e.turnIndex];if(!t)return;if(e.isNewTurn){let e=pk(t);MO.push(e),AO.append(e.section);return}let n=MO[e.turnIndex];if(n){for(let r of e.rows)n.rowsElement.append(ck(r,t.startedAt));uk(t,n.metricsElement)}}function yk(e){let t=e.parentElement;t&&!t.querySelector(`.trace-trimmed`)&&t.insertBefore(j(`p`,`trace-trimmed`,`Earlier rows trimmed`),e)}function bk(){yO(ZO())?!jO&&AO?.parentElement&&(jO=sk(),AO.parentElement.insertBefore(jO,AO)):(jO?.remove(),jO=null)}function xk(){if(!J)return;let e=hO(J.grouping);if(!(e.droppedTurnCount>0||e.droppedRowCount>0)){bk();return}let t=!J.hasDroppedEarliestRows;if(J.hasDroppedEarliestRows=!0,MO=MO.slice(e.droppedTurnCount),AO)for(let t=0;t<e.droppedTurnCount;t+=1)AO.firstElementChild?.remove();let n=MO[0];if(n&&e.droppedRowCount>0){for(let t=0;t<e.droppedRowCount;t+=1)n.rowsElement.firstElementChild?.remove();yk(n.rowsElement),uk(J.grouping.turns[0],n.metricsElement)}t&&_k(),bk()}function Sk(e){if(!J)return;let t=cO(J.grouping,e);if(UO()&&!NO&&AO){for(let e of t)vk(e);xk()}else AO=null,xk(),UO()?hk():NO=!0}function Ck(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.id!=`string`||!Array.isArray(t.records)||typeof t.next!=`number`||typeof t.start!=`number`?null:{id:t.id,records:t.records,start:t.start,next:t.next,reset:t.reset===!0,path:typeof t.path==`string`?t.path:``}}function wk(){VO&&!BO&&(VO=!1,XO())}function Tk(e){if(!AO)return;let t=MO[0]??null,n=t?.rowsElement.parentElement??null,r=J?.grouping.turns[e.newTurns.length]??null;if((e.mergedHead||e.mergedRows.length>0)&&t&&n&&r){let i=t.rowsElement;if(e.mergedHead){n.querySelector(`.trace-leading-title`)?.remove();let a=lk(r),o=fk(r,e.mergedHead,a);n.insertBefore(o,i),t.metricsElement=a}e.mergedHead||uk(r,t.metricsElement);let a=document.createDocumentFragment();for(let t of e.mergedRows)a.append(ck(t,r.startedAt));i.prepend(a),dk(i,r)}let i=document.createDocumentFragment(),a=[];for(let t of e.newTurns){let e=pk(t);a.push(e),i.append(e.section)}AO.prepend(i),MO.unshift(...a)}function Ek(e){if(!J)return;let t=lO(J.grouping,e),n=UO()&&!NO&&!!AO&&!t.needsRerender,r=OO?.parentElement??null,i=r?.scrollHeight??0,a=r?.scrollTop??0;n&&Tk(t),xk(),n||gk(),n&&_k(),r&&(r.scrollTop=a+r.scrollHeight-i)}function Dk(e){OO||(OO=j(`div`,`trace-panel`),e.append(OO),hk())}function Ok(e){FO=e}function kk(e){IO=e}function Ak(e){zO=e,IO?.()}function jk(e){LO=gO(e);let t=JO(UO());t&&XO(),(t||!kO)&&gk(),!t&&kO&&_k()}function Mk(){if(!OO)return;let e=JO(!0);XO(!0),SO({hasSelectionChanged:e,isRenderedTraceStale:NO,hasRenderedOnce:!!kO})&&hk()}function Nk(e){let t=Ck(e);if(!t)return;let n=xO({pendingRequest:BO?.request??null,resident:J?{sessionId:J.sessionId,firstOffset:J.firstOffset,nextOffset:J.nextOffset,hasLoadedOnce:J.hasLoadedOnce}:null,reply:{id:t.id,start:t.start,next:t.next,reset:t.reset}});n===`ignore`?wk():(GO(),HO&&(HO=null,_k()),n===`stale`?wk():n===`reset`?(qO(t.id),J&&(J.filePath=t.path),XO(),gk(),wk()):J&&(J.filePath=t.path,n===`prepend`?(J.firstOffset=t.start,Ek(t.records),wk()):(n===`seed`&&(J.hasLoadedOnce=!0,J.firstOffset=t.start),J.nextOffset=t.next,Sk(t.records),wk())))}function Pk(e){let t=e?.id;typeof t==`string`&&t===RO&&UO()&&(BO?VO=!0:XO())}function Fk(e){let t=e?.id;if(typeof t!=`string`||BO?.request.id!==t)return!1;GO(),VO=!1;let n=e?.message;return HO=typeof n==`string`&&n?n:`The trace could not be read.`,gk(),!0}function Ik(e){GO(),VO=!1,HO=e?null:W,e?(_k(),XO()):gk()}var Lk=`Estimated list prices, not a bill.`,Rk=`Enable in Settings.`,zk=80,Bk=Object.freeze([{value:`7`,label:`Last 7 days`,days:7},{value:`30`,label:`Last 30 days`,days:30},{value:`90`,label:`Last 90 days`,days:90},{value:`all`,label:`All retained`,days:null}]),Vk=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Hk=/^(\d{4})-(\d{2})-(\d{2})$/,Uk=new Set([`day`,`model`,`label`]),Wk=new Set([`model`,`label`]);function Gk(e){return e.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function Kk(e){return e.includes(`.`)?e.replace(/0+$/,``).replace(/\.$/,``):e}function qk(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=Math.round(e);return`${t<0?`-`:``}${Gk(String(Math.abs(t)))}`}function Jk(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=Math.abs(e);if(t===0)return`$0.00`;let n=e<0?`-`:``;if(t<1e-4)return e<0?`above -$0.0001`:`<$0.0001`;if(t<.01)return`${n}$${t.toFixed(4)}`;let[r,i]=t.toFixed(2).split(`.`);return`${n}$${Gk(r)}.${i}`}function Yk(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=e<0?`-`:``,n=Math.abs(e);if(n<1e3){let e=Math.round(n);return`${e===0?``:t}${e}`}return n<999950?`${t}${Kk((n/1e3).toFixed(1))}k`:n<999995e3?`${t}${Kk((n/1e6).toFixed(2))}M`:`${t}${Kk((n/1e9).toFixed(2))}B`}function Xk(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${Kk(e.toFixed(1))}%`}function Zk(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function Qk(e){return e===`costUSD`?`share of cost`:`share of tokens`}function $k(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function eA(e){let t=Hk.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=Vk[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function tA(e){let t=nA(e);return t.length===0?``:t.length===1?eA(t[0]):`${eA(t[0])} to ${eA(t[t.length-1])}`}function nA(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>Hk.test(e)).sort()}function rA(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:iA(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function iA(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=aA(e,n);return Hk.test(r)?r:aA(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function aA(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function oA(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:Hl(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function sA(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=Vk[n.getMonth()];return r?`${r} ${n.getDate()} ${Kl(n)}`:`-`}function cA(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${Yk(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:Yk(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:Jk(e.costPerHour),sub:``}),t}function lA(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${Yk(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(Jk(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${oA(e.remainingMinutes)} left in this block`:``;if(t.length===0)return n;let r=`-> ${t.join(`, `)} by block end`;return n?`${r}, ${n}`:r}function uA(e,t=Date.now()){let n=Number(e?.startTs),r=Number(e?.endTs);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=n)return null;let i=(r-n)/6e4,a=Math.min(Math.max((t-n)/6e4,0),i);return{totalMinutes:i,elapsedMinutes:a,remainingMinutes:Math.max(i-a,0),pct:Math.round(a/i*100)}}function dA(e){return typeof e!=`number`||!Number.isFinite(e)?`ok`:e>=100?`crit`:e>=zk?`warn`:`ok`}function fA(e){let t=U(e?.max,null);return t===null||t<=0?null:t}function pA(e){let t=fA(e),n=U(e?.pct,null);return t===null||n===null?null:n*100}function mA(e,t){let n=fA(t),r=U(e?.projectedTokens,null);return n===null||r===null?null:r/n*100}function hA(e){let t=pA(e);return t===null?``:`${Math.round(t)}% of ${Yk(e?.max)} tokens, the largest completed block seen`}function gA(e,t){let n=mA(e,t);return n===null?``:n>=100?`On this burn rate the block ends past that reference, at ${Math.round(n)}% of it.`:`On this burn rate the block ends at ${Math.round(n)}% of that reference.`}var _A=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function vA(e){let t=_A.map(t=>{let n=Number(e?.[t.key]);return{spec:t,tokens:Number.isFinite(n)&&n>0?n:0}}),n=t.reduce((e,t)=>e+t.tokens,0);return n<=0?[]:t.map(e=>{let t=$k(e.tokens,n)??0,r=Yk(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${Xk(t)}`}})}var yA=Object.freeze({interactive:`Interactive`,"pr-review":`PR review`,"team-review":`PR reviews`,posthog:`PostHog`,"my-prs":`Keep mergeable`,workflows:`Workflows`,"change-map":`Change map`,visions:`Visions`,benchmark:`Benchmarks`,"agent-spawn":`Agent API`,"task-title":`Task titles`,other:`Other`}),bA=`Sessions spawned by Glimmervoid; terminal sessions count as other`,xA=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function SA(e){let t=H(e,``);return t?yA[t]||t:yA.other}function CA(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function wA(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function TA(e){return CA(e).some(e=>wA(e.lane))}var EA=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function DA(e,t,n){let r=Dj(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function OA(e,t,n,r){if(!Array.isArray(t))return null;let i=t.filter(e=>e&&typeof e.lane==`string`),a=i.reduce((e,t)=>e+U(t.costUSD,0),0),o=i.reduce((e,t)=>e+U(t.tokens,0),0),s=i.filter(e=>wA(e.lane)).map(e=>({lane:String(e.lane),label:SA(e.lane),tokens:U(e.tokens,0),costUSD:U(e.costUSD,0)})),c=s.reduce((e,t)=>e+t.costUSD,0),l=s.reduce((e,t)=>e+t.tokens,0),u=a>0?$k(c,a):$k(l,o),d=DA(n,e,r),f=u===null||d===null?null:u/100*d;return{key:e,label:EA[e],tokens:l,costUSD:c,sharePct:u,planPct:f,lanes:s}}function kA(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:Ej.map(e=>OA(e.key,r[e.key],t,n)).filter(e=>e!==null)}function AA(e){return e.planPct===null?``:`about ${Xk(e.planPct)} of plan`}function jA(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?Jk(e.costUSD):Yk(e.tokens)}`).join(`, `)}var MA=`team-review`;function NA(e){if(!Array.isArray(e?.byLane))return null;let t=CA(e).find(e=>e.lane===MA),n=U(t?.costUSD,0),r=U(t?.tokens,0),i=Zk(e?.totals),a=$k(i===`costUSD`?n:r,e?.totals?.[i]),o=a===null?``:`${Xk(a)} of range ${i===`costUSD`?`cost`:`tokens`}`,s=[Jk(n),o,PA(t?.sessions)].filter(Boolean).join(`, `);return{label:SA(MA),value:Yk(r),sub:s}}function PA(e){let t=U(e,null);return t===null||t<=0?``:`${qk(t)} ${t===1?`session`:`sessions`}`}function FA(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function IA(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function LA(e){return FA(e)!==null||IA(e)!==null}function RA(e){let t=FA(e);if(!t)return null;let n=U(t.commands,0),r=n===1?`command`:`commands`;return{value:`${Yk(U(t.savedTokens,0))} tokens`,sub:`${Xk(U(t.savingsPct,0))} avg across ${qk(n)} ${r}`}}function zA(e){let t=IA(e);if(!t)return null;let n=Yk(U(t.cacheReadTokens,0)),r=(Array.isArray(t.unpricedModels)?t.unpricedModels:[]).filter(e=>e),i=`${n} cache read tokens`;if(r.length===0)return{value:Jk(U(t.savedUSD,0)),sub:i};let a=r.length===1?`model`:`models`;return{value:Jk(U(t.savedUSD,0)),sub:`${i}, a floor (${r.length} unpriced ${a})`}}var BA=90;function VA(e){let t=e?.budget?.rows;return Array.isArray(t)?t.filter(e=>e&&U(e.budgetUsd,null)!==null):[]}function HA(e){return e===`monthly`?`this month`:`today`}function UA(e){return`${Jk(U(e?.spentUsd,0))} of ${Jk(U(e?.budgetUsd,0))}`}function WA(e){let t=U(e?.pct,null);return t===null?0:t}function GA(e){return`${HA(e?.scope)} spend against budget`}var KA=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function qA(e){let t=Hk.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function JA(e){let t=qA(e);if(!t)return``;let n=(t.getDay()+6)%7;return t.setDate(t.getDate()-n),Gl(t)}function YA(e){let t=Hk.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function XA(e){return{key:e,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0,days:0,sources:new Set,vendorSet:new Set,modelByName:new Map}}function ZA(e,t){e.tokens+=U(t?.tokens,0),e.costUSD+=U(t?.costUSD,0),e.input+=U(t?.input,0),e.output+=U(t?.output,0),e.cacheCreate+=U(t?.cacheCreate,0),e.cacheRead+=U(t?.cacheRead,0),e.days+=1,e.sources.add(t?.source===`history`?`history`:`live`);let n=Array.isArray(t?.vendors)?t.vendors:[];for(let t of n)e.vendorSet.add(t);let r=t?.models||[];for(let t of r){t?.vendor&&e.vendorSet.add(t.vendor);let n=Rj(t),r=e.modelByName.get(n)||{key:n,model:t?.model??n,vendor:t?.vendor,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0};r.tokens+=U(t?.tokens,0),r.costUSD+=U(t?.costUSD,0),r.input+=U(t?.input,0),r.output+=U(t?.output,0),r.cacheCreate+=U(t?.cacheCreate,0),r.cacheRead+=U(t?.cacheRead,0),e.modelByName.set(n,r)}}function QA(e){let{modelByName:t,sources:n,vendorSet:r,...i}=e,a={...i};return a.day=e.key,a.models=Array.from(t.values()).sort((e,t)=>t.tokens-e.tokens),a.source=n.has(`live`)?`live`:`history`,a.vendors=Array.from(r).sort(),a}function $A(e,t){let n=new Map,r=Array.isArray(e)?e:[];for(let e of r){let r=t(e?.day);if(!r)continue;let i=n.get(r)||XA(r);ZA(i,e),n.set(r,i)}return Array.from(n.values()).map(QA)}function ej(e){return $A(e,JA)}function tj(e){return $A(e,YA)}function nj(e,t){return t===`week`?ej(e):t===`month`?tj(e):Array.isArray(e)?[...e]:[]}var rj=/^(\d{4})-(\d{2})$/;function ij(e,t){if(t===`month`){let t=rj.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=Vk[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=eA(e);return t===`-`?t:`week of ${t}`}return eA(e)}function aj(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var oj=16,sj=Object.freeze([.05,.25,.5,.75]),cj=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function lj(e,t){let n=U(e,0),r=U(t,0);if(n<=0||r<=0)return 0;let i=n/r,a=1;for(let e=0;e<sj.length;e+=1)i>=sj[e]&&(a=e+1);return a}function uj(e,{weeks:t=oj,today:n=new Date}={}){let r=(Array.isArray(e)?e:[]).filter(e=>Hk.test(String(e?.day??``))),i=new Map(r.map(e=>[String(e.day),e])),a=n instanceof Date?n:new Date(n),o=Number.isFinite(a.getTime())?a:new Date,s=typeof n==`string`&&Hk.test(n)?n:Gl(o),c=qA(JA(s));if(!c)return{cells:[],max:0,weeks:0};let l=new Date(c.getFullYear(),c.getMonth(),c.getDate()-(t-1)*7,12),u=Gl(l),d=[],f=0,p=null;for(let e of r){let t=String(e.day);(p===null||t<p)&&(p=t),!(t<u||t>s)&&(f=Math.max(f,U(e.tokens,0)))}for(let e=0;e<t;e+=1)for(let t=0;t<7;t+=1){let n=Gl(new Date(l.getFullYear(),l.getMonth(),l.getDate()+e*7+t,12)),r=i.get(n)||null,a=n>s,o=p!==null&&n<p;d.push({day:n,week:e,weekday:t,tokens:U(r?.tokens,0),costUSD:U(r?.costUSD,0),source:r?.source===`history`?`history`:r?`live`:null,noData:a||o||!r&&p===null,tone:lj(r?.tokens,f)})}return{cells:d,max:f,weeks:t}}function dj(e){let t=eA(e?.day);if(e?.noData)return`${t}: no data`;let n=U(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${Yk(n)} tokens, ${Jk(U(e?.costUSD,0))}`}function fj(e){if(!e)return``;let t=U(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${_j(e.ratio)} the ${n} average: ${Jk(e.todayUsd)} against ${Jk(e.baselineUsd)}.`}function pj(e){return e?`This block is burning ${_j(e.ratio)} the usual rate: ${Yk(e.current)} tokens per minute against ${Yk(e.baseline)}.`:``}function mj(e){return[fj(e?.daily),pj(e?.burn)].filter(Boolean).join(` `)}function hj(e){return e?.daily||e?.burn?`warn`:`ok`}function gj(e){return!!(e?.daily||e?.burn)}function _j(e){let t=U(e,null);return t===null?`-`:`${Kk(t.toFixed(1))}x`}var vj=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function yj(e){let t=H(e,``);return t?vj[t]||t:vj.claude}function bj(e,t){return Sj(t)?yj(e?.vendor):``}function xj(e){let t=e?.byVendor;return!t||typeof t!=`object`?[]:Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`).sort((e,n)=>U(t[n]?.tokens,0)-U(t[e]?.tokens,0)).map(e=>({vendor:e,label:yj(e),tokens:U(t[e]?.tokens,0),costUSD:U(t[e]?.costUSD,0)}))}function Sj(e){let t=e?.byVendor;if(!t||typeof t!=`object`)return!1;let n=Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`);return n.length>1||n.length===1&&n[0]!==`claude`}var Cj=`Claude only`;function wj(e){return Sj(e)?Cj:``}var Tj=36e5,Ej=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]);function Dj(e,t){let n=e?.[t];if(!n||typeof n!=`object`)return null;let r=U(n.pct,null),i=U(n.resetsAtMs,null);return r===null&&i===null?null:{pct:r,resetsAtMs:i}}var Oj=Object.freeze([{vendor:`claude`,label:`Claude Code`},{vendor:`codex`,label:`Codex`}]);function kj(e){return e?.vendor===`codex`?`codex`:`claude`}function Aj(e,t){let n=`official, from ${Oj.filter(({vendor:t})=>e.includes(t)).map(({label:e})=>e).join(` and `)}`,r=e.length===1&&e[0]===`claude`?wj(t):``;return r?`${n}, ${r}`:n}function jj(e){return Ej.some(t=>Dj(e,t.key)!==null)}function tte(e){return Dj(e,`fiveHour`)?.pct??null}function nte(e){return e===`estimated`?`estimated from the largest completed block`:``}function Mj(e,t=null){let n=tte(t);if(n!==null)return dA(n);let r=dA(pA(e?.tokenLimit));return r===`ok`?dA(mA(e?.activeBlock?.projection,e?.tokenLimit)):r}function rte(e,t=null){let n=[],r=Mj(e,t);r!==`ok`&&n.push(`block:${r}`),e?.anomaly?.daily&&n.push(`anomaly:daily`),e?.anomaly?.burn&&n.push(`anomaly:burn`);for(let t of VA(e)){let e=WA(t);if(e<BA)continue;let r=typeof t?.scope==`string`&&t.scope?t.scope:`budget`;n.push(`budget:${r}:${e>=100?`over`:`near`}`)}return Jl(n)}function ite(e){let t=U(e?.pct,null);return t===null?`-`:`${Xk(t)} used`}function ate(e,t=Date.now()){let n=U(e,null);if(n===null||n<=0)return``;let r=(n-t)/6e4;return r<=0?`resetting now`:`resets in ${oA(r)}`}function Nj(e,t=Date.now()){let n=U(e,null);return n===null||n<=0?``:`${Math.max(0,Math.round((t-n)/6e4))}m old`}function ote(e,t=Date.now()){let n=U(e,null);return n===null||n<=0||t-n>Tj}function ste(e,t=Date.now()){if(!ote(e,t))return``;let n=Nj(e,t);return n?`showing last-known usage (${n})`:`showing last-known usage`}function cte(e,t=``){let n=e?.source;if(n===`fetched`){let e=H(t,``);return e?`Prices fetched from the public model price table, ${e}.`:`Prices fetched from the public model price table.`}if(n===`cache`){let e=H(t,``);return e?`Prices from the cached public model price table, ${e}.`:`Prices from the cached public model price table.`}return n===`snapshot`?`Prices from the price table bundled with this Glimmervoid build.`:n===`unavailable`?`Model prices could not be loaded, so every cost below counts as zero.`:`Pricing source not reported yet.`}function lte(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`string`)return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function ute(e){let t=(Array.isArray(e)?e:[]).map(e=>String(e)).filter(e=>e);if(t.length===0)return``;let n=t.length===1?`model`:`models`;return`No price for ${t.length} ${n}: ${t.join(`, `)}. Their cost counts as zero here.`}function dte(e){if(Array.isArray(e))return e.length;let t=Number(e);return Number.isFinite(t)?t:null}function fte(e){if(!e||typeof e!=`object`)return``;let t=[],n=dte(e.dirs);if(n!==null&&t.push(`${qk(n)} transcript ${n===1?`directory`:`directories`}`),Number.isFinite(e.files)&&t.push(`${qk(e.files)} files`),Number.isFinite(e.entries)&&t.push(`${qk(e.entries)} entries`),Number.isFinite(e.lastScanMs)&&t.push(`last pass ${qk(e.lastScanMs)}ms`),t.length===0)return``;let r=`Scanned ${t.join(`, `)}.`;return e.partial===!0?`${r} Some files were skipped this pass and will be re-read on the next one.`:r}function Pj(e){return H(e?.error,``)}function pte(e){let t=H(e?.warning,``);return t?`Glimmervoid could not read every transcript location: ${t}`:``}function Fj(e){return Pj(e)!==``}function mte(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return n==null||n===t}function hte(e){let t=String(e??``).trim();if(!t)return``;let n=t.split(/[\\/]+/).filter(e=>e);return n.length===0?t:n[n.length-1]}function Ij(e){return typeof e?.id==`string`&&e.id!==``}function Lj(e){let t=H(e?.label,``);return Ij(e)&&t?t:hte(e?.project)||t||`unknown project`}function Rj(e){return H(typeof e==`string`?e:e?.model,`unknown model`)}function zj(e){return String(e?.day??``)}function Bj(e,t,n){if(!Uk.has(t)){let n=Number(e?.[t]);return Number.isFinite(n)?n:0}return t===`day`?zj(e):n(e)}function Vj(e,t,n,r=Lj){let i=Array.isArray(e)?[...e]:[],a=n===`asc`?1:-1;return i.sort((e,n)=>{let i=Bj(e,t,r),o=Bj(n,t,r);if(typeof i==`string`||typeof o==`string`)return a*String(i).localeCompare(String(o));if(i!==o)return a*(i-o);let s=Number(e?.tokens),c=Number(n?.tokens),l=Number.isFinite(s)?s:0,u=Number.isFinite(c)?c:0;return l===u?r(e).localeCompare(r(n)):u-l})}function gte(e){return Wk.has(e)?`asc`:`desc`}function Hj(e,t){return e?.key===t?{key:t,dir:e.dir===`asc`?`desc`:`asc`}:{key:t,dir:gte(t)}}function _te(e,t){return e?.key===t?e.dir===`asc`?`ascending`:`descending`:`none`}var Uj=Object.freeze({key:`lastTs`,dir:`desc`}),Wj=Object.freeze({key:`tokens`,dir:`desc`}),Gj=Object.freeze({key:`day`,dir:`desc`});function vte(e,t=Uj){return Vj(e,t.key,t.dir,Lj)}function yte(e,t,n=10){if(!Array.isArray(e))return{rows:[],hiddenCount:0};let r=Number.isFinite(n)?Math.max(0,Math.floor(n)):10;return t||e.length<=r?{rows:e,hiddenCount:0}:{rows:e.slice(0,r),hiddenCount:e.length-r}}function bte(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:`${qk(t)} hidden`}function Kj(e,t=Wj){return Vj(e,t.key,t.dir,Rj)}function xte(e,t=Gj){return Vj(e,t.key,t.dir,zj)}function Ste(e,t){return(Array.isArray(e)?e:[]).find(e=>String(e?.day??``)===String(t??``))||null}function Cte(e,t=8){return(Array.isArray(e)?e:[]).filter(e=>e&&e.isGap!==!0).sort((e,t)=>(Number(t?.startTs)||0)-(Number(e?.startTs)||0)).slice(0,Math.max(0,t)).map(e=>({startTs:Number(e.startTs),tokens:typeof e.tokens==`number`&&Number.isFinite(e.tokens)?e.tokens:0,costUSD:typeof e.costUSD==`number`&&Number.isFinite(e.costUSD)?e.costUSD:0,isActive:e.isActive===!0}))}function qj(e){let t=U(e?.officialCostUSD,null);if(t!==null&&t>0)return{costUSD:t,source:`official`};let n=U(e?.costUSD,null);return n!==null&&n>0?{costUSD:n,source:`estimated`}:{costUSD:null,source:null}}function wte(e){let t=Number(e?.tokens);if(!Number.isFinite(t)||t<=0)return``;let{costUSD:n}=qj(e);return n===null?Yk(t):`${Yk(t)} ${Jk(n)}`}function Tte(e){let{source:t}=qj(e);return t===`official`?`Tokens counted from the transcript; cost reported by Claude Code for this conversation`:`Tokens and estimated API list-price cost for this conversation`}function Ete(e,t){return t===A.RUNNING?e===`restart-fresh`?{title:`Restart fresh`,message:`This agent is mid-turn. A fresh restart ends this conversation and starts a new one. Restart anyway?`,confirmLabel:`Restart fresh`,danger:!0}:e===`restart-into`?{title:`Restart`,message:`This agent is mid-turn. Restarting interrupts the current turn and switches to the earlier conversation you picked. Restart anyway?`,confirmLabel:`Restart`,danger:!0}:{title:`Restart`,message:`This agent is mid-turn. Restarting interrupts the current turn and keeps this conversation. Restart anyway?`,confirmLabel:`Restart`,danger:!1}:null}function Dte(e,t,n,r){let i=Qn.includes(t)?`force-restart`:`restart`;return e===`restart-fresh`?{type:i,id:n,fresh:!0}:e===`restart-into`?{type:i,id:n,conversationId:r}:{type:i,id:n}}function Ote(e,t,n,r=``){let i=()=>n.send(Dte(e,n.readState(),t,r)),a=Ete(e,n.readState());a?n.confirm({...a,onConfirm:i}):i()}var kte=`DORMANT`;function Ate(e){return e?Vl(Date.now()-e,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function jte(e){return[e.worktreeName,e.gitBranch?e.gitBranch.replace(/^refs\/heads\//,``):null,Ate(e.mtime)].filter(Boolean).join(` · `)}function Mte(e,t){let n=j(`button`,`resume-item`);return n.type=`button`,n.setAttribute(`role`,`option`),n.setAttribute(`aria-selected`,`false`),n.innerHTML=`<span class="resume-item-title">${g_(e)}</span><span class="resume-item-meta">${g_(t)}</span>`,n}async function Nte(e,t,n){if(t.kind===`this`)return!0;let r=await pf(`resume-conversation`,{id:e,conversationId:t.kind===`earlier`?t.conversationId:``},n);return r?r.type===`resume-conversation-ack`&&r.ok?!0:(n.show(`error`,r.type===`error`?r.message:`The conversation was not changed.`),!1):!1}var Pte={this:`restart`,fresh:`restart-fresh`,earlier:`restart-into`};function Fte(e,t,n,r){let i=n.kind===`earlier`?n.conversationId:``;Ote(Pte[n.kind],t,{readState:r,send:t=>{S_(e,t)},confirm:Rf},i)}function Ite(e,{readState:t,canListEarlier:n}){let{overlay:r,dialog:i,close:a,actions:o,btnCancel:s}=Lf({title:`Restart`,dialogClass:`dialog resume-dialog`}),c=j(`p`,`dialog-message`,n?`Restart into this conversation, a fresh one, or an earlier one from this repo (any worktree).`:`Restart into this conversation or a fresh one.`),l=j(`div`,`resume-list`);l.setAttribute(`role`,`listbox`),l.setAttribute(`aria-label`,`Conversation to restart into`);let u=j(`button`,`btn-dialog btn-dialog-confirm`,`Restart`);u.type=`button`,o.append(u);let d=df(`dialog-error`);i.append(c,l,d.element,o);let f={kind:`this`};function p(e,t){for(let e of l.querySelectorAll(`.resume-item`))e.classList.remove(`resume-item-current`),e.setAttribute(`aria-selected`,`false`);e.classList.add(`resume-item-current`),e.setAttribute(`aria-selected`,`true`),f=t}function m(e,t,n){let r=Mte(t,n);return r.addEventListener(`click`,()=>p(r,e)),l.append(r),r}p(m({kind:`this`},`This conversation`,`Keeps the current conversation`),{kind:`this`}),m({kind:`fresh`},`Fresh conversation`,`Ends this conversation and starts a new one`);async function h(t,n){i.dataset.applying=``;let r=await Nte(e,n,d);delete i.dataset.applying,r&&(a(),S_(t,{type:`start-session`,id:e}))}function g(){if(i.dataset.applying!==void 0)return;let n=P.get(e);n?t()===kte?h(n,f):(a(),Fte(n,e,f,t)):a()}if(s.addEventListener(`click`,a),u.addEventListener(`click`,g),requestAnimationFrame(()=>u.focus()),!n)return;let _=j(`div`,`resume-empty`,`Loading earlier conversations...`);l.append(_),K(`list-conversations`,{id:e},{timeoutMs:q}).then(e=>{if(!r.isConnected)return;if(e.error){_.textContent=`Could not list earlier conversations: ${e.error}`;return}let t=e.type===`conversations`?e.current??null:null,n=(e.type===`conversations`?e.conversations:[]).filter(e=>e.id!==t);if(n.length===0)_.textContent=`No earlier conversations found for this repo.`;else{_.remove();for(let e of n)m({kind:`earlier`,conversationId:e.id},e.title||e.id,jte(e))}}).catch(e=>{r.isConnected&&(_.textContent=`Could not list earlier conversations: ${ff(e,q)}`)})}var Jj=e=>e==null?``:String(e),Lte=e=>Qn.includes(e),Rte=e=>$n.includes(e),Yj=!1;function Xj(e){return Yj&&Ey(e.agent)&&e.card.dataset.ephemeral===void 0}function zte(e){return Xj(e)&&e.isConversationViewOn&&e.isBorrowed}function Bte(e){e.btnConversationView.classList.toggle(`visible`,Xj(e)),e.btnConversationView.setAttribute(`aria-checked`,String(e.isConversationViewOn))}function Vte(e){Yj=e;for(let t of P.values())!e&&t.face===`conversation`&&t._showTerminalFace?.(),$j(t)}function Zj(e){let t=F(e);return!t||!zte(t)?!1:(t.face=`conversation`,t.card.dataset.face=`conversation`,t.termWrap.hidden=!0,t.planFace.hide(),t.conversationFace.show(Tr(e)),$j(t),!0)}function Qj(e,t){let n=F(e);if(!n)return;let r=n.isConversationViewOn;n.hasConversationBridge=t.hasConversationBridge,n.conversationApproval=t.conversationApproval,n.isConversationViewOn=t.isConversationViewOn,$j(n),n.conversationFace.refresh(),r!==t.isConversationViewOn&&(t.isConversationViewOn?Zj(e):n.face===`conversation`&&n._showTerminalFace?.())}function Hte(e){return F(e.id)?.conversationFace.applyTraceResponse(e)===!0}function Ute(e){F(e.id)?.conversationFace.applyTraceError(e)}function Wte(e){F(e)?.conversationFace.applyTraceChanged(Tr(e))}function $j(e){Bte(e);let t=e.currentState;e.btnRestart.classList.toggle(`visible`,Lte(t)||Rte(t)||t===A.DORMANT),e.btnWorkspaceRepos.classList.toggle(`visible`,e.card.dataset.workspace!==void 0),e.btnTrace.classList.toggle(`visible`,D_()),e.btnPlan.classList.toggle(`visible`,Og(e)!==`hidden`),e.btnRemove.classList.add(`visible`)}function eM(e){e.sessionMenu.classList.remove(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`false`)}function Gte(e,t){U_(e.taskTitleEl,()=>K_(e,t)),e.nameEl.addEventListener(`dblclick`,n=>{n.preventDefault(),Y_(e,t)}),e.nameEl.addEventListener(`click`,()=>{J_(e.nameEl)||qv(t)}),e.nameEl.addEventListener(`keydown`,n=>{n.target===e.nameEl&&(n.key===`F2`||n.key===`Enter`)&&(n.preventDefault(),Y_(e,t))}),e.btnRestart.addEventListener(`click`,()=>{eM(e),Ite(t,{readState:()=>e.currentState,canListEarlier:e.card.dataset.ephemeral===void 0})}),e.btnWorkspaceRepos.addEventListener(`click`,()=>{eM(e),Wf(t)}),e.btnTrace.addEventListener(`click`,()=>{eM(e),Ak(t)}),e.btnDocs.addEventListener(`click`,()=>{eM(e),Oee(t)}),e.btnConversationView.addEventListener(`click`,()=>{eM(e),S_(e,{type:`set-session-conversation-view`,id:t,isOn:!e.isConversationViewOn})}),e.btnGuardrails.addEventListener(`click`,()=>{eM(e),e.btnSessionMenu.focus();let n=n=>()=>{S_(e,{type:`set-session-guardrails`,id:t,isOn:n})};e.card.dataset.guarded===void 0?Rf({title:`Restore guardrails`,message:`This session restarts with guardrails on, interrupting any turn in progress.`,confirmLabel:`Restore guardrails`,danger:!1,onConfirm:n(!0)}):Rf({title:`Release guardrails`,message:`This session restarts without guardrails, interrupting any turn in progress. It can then read, write and reach anything your account can, including credentials and Glimmervoid itself.`,confirmLabel:`Release guardrails`,danger:!0,onConfirm:n(!1)})}),e.btnPlan.addEventListener(`click`,()=>{let n=Og(e);n!==`hidden`&&(n===`face`?sM(t):location.hash=Bp(t))}),e.btnRemove.addEventListener(`click`,()=>{eM(e),sy(t)}),e.btnSessionMenu.addEventListener(`click`,t=>{t.stopPropagation();for(let[,t]of P)t!==e&&eM(t);let n=e.sessionMenu.classList.toggle(`open`);e.btnSessionMenu.setAttribute(`aria-expanded`,String(n))});function n(t){if(v_(t)){t.preventDefault(),t.stopPropagation();for(let[,t]of P)t!==e&&eM(t);e.sessionMenu.classList.add(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`true`),y_([...e.sessionMenu.querySelectorAll(`.popup-menu-item.visible`)],t)}}e.btnSessionMenu.addEventListener(`keydown`,n),e.sessionMenu.addEventListener(`keydown`,n),document.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.sessionMenu.classList.contains(`open`)&&(t.preventDefault(),eM(e),e.btnSessionMenu.focus())},{signal:e.abortController.signal}),document.addEventListener(`click`,t=>{let n=t.target instanceof Node?t.target:null;!e.sessionMenu.contains(n)&&n!==e.btnSessionMenu&&eM(e)},{signal:e.abortController.signal}),e.btnDebug.addEventListener(`click`,n=>{n.stopPropagation(),nv(e,t)}),document.addEventListener(`click`,t=>{let n=t.target instanceof Node?t.target:null;e.debugOpen&&!e.card.contains(n)&&rv(e)},{signal:e.abortController.signal})}function tM(e,t,n){let r=F(e);if(r){r.taskTitle=typeof t==`string`?t:null,r.taskTitleIsCustom=n===!0;for(let e of[r.taskTitleEl,r.titleTargetEl])e&&G_(e,r.taskTitle)}}function nM(e){return typeof e==`string`&&P.has(e)}function Kte(){return P.size}function qte(e){let t=e||{};t.cursorBlink!=null&&JS(t.cursorBlink),t.debugMode!=null&&(T_(t.debugMode),Ow(t.debugMode));for(let[,e]of P)e.term&&t.cursorBlink!=null&&(e.term.options.cursorBlink=t.cursorBlink)}function Jte(){fb(P.values(),pb())}function rM(){let e=Zg(Yg([...P.values()].map(e=>({state:e.currentState,unseenOutcome:e.unseenOutcome}))));document.title=e>0?`(${e}) Glimmervoid`:`Glimmervoid`}function iM(e,t,n,r={}){if(!Er)return;let i=Tr(e),a=Jj(n)||A.DORMANT,o=B_(i,Jj(t),a,r),s=a===A.DORMANT;Er.appendChild(o.card);let c;function l(){c.face=`terminal`,c.card.dataset.face=`terminal`,c.termWrap.hidden=!1,c.planFace.hide(),c.conversationFace.hide(),$j(c),JC(c,i)}function u(){Zj(i)||l()}let d=new AbortController,f=bT({signal:d.signal,requestPlan:(e,t,n)=>G({type:`session-plan`,id:e,agentId:t,revision:n}),requestDraft:(e,t)=>G({type:`session-plan`,id:e,agentId:t,draft:!0}),showTerminal:u,sendDecision:(e,t)=>G({type:`plan-decision`,id:e,...t}),reportProblem:e=>wM(i,e)}),p=uw({signal:d.signal,sendControl:e=>G(e),showTerminal:l});return c={term:null,fitAddon:null,webglAddon:null,needsWebGLReload:!1,webglAttachedWithoutLayout:!1,dataWs:null,card:o.card,nameEl:o.nameEl,taskTitleEl:o.taskTitleEl,taskTitle:r.taskTitle??null,taskTitleIsCustom:r.taskTitleIsCustom??!1,path:Jj(r.path),ownerId:r.ownerId??null,stateSince:typeof r.stateSince==`number`&&Number.isFinite(r.stateSince)?r.stateSince:Date.now(),sessionMenu:o.sessionMenu,termWrap:o.termWrap,btnDebug:o.btnDebug,btnRestart:o.btnRestart,btnSessionMenu:o.btnSessionMenu,btnWorkspaceRepos:o.btnWorkspaceRepos,btnConversationView:o.btnConversationView,btnGuardrails:o.btnGuardrails,btnTrace:o.btnTrace,btnPlan:o.btnPlan,btnDocs:o.btnDocs,btnRemove:o.btnRemove,debugOverlay:null,debugOpen:!1,abortController:d,currentState:a,face:`terminal`,isBorrowed:!1,hasPlan:!1,pendingPromptKind:null,planReviewState:{reviews:[]},planFace:f,conversationFace:p,conversationApproval:null,hasConversationBridge:!1,isConversationViewOn:!1},c._ensureTerminalReady=()=>JC(c,i),c._showTerminalFace=l,c._showPreferredFace=()=>{aM(c)===`plan`?sM(i):Zj(i)||l()},c._setBorrowed=e=>{c.isBorrowed=e,$j(c)},o.card.append(f.el,p.el),P.set(i,c),Gte(c,i),$j(c),c.btnDocs.classList.toggle(`visible`,Ih(i)),a===A.RUNNING&&ip(c,!0),s||(VC(o.termWrap,c),UC(c,i)),rM(),c}function aM(e){let t=e.planReviewState.reviews.some(e=>e.state===`open`),n=e.planReviewState.reviews.some(Gw);return Dg({hasPlan:e.hasPlan,pendingPromptKind:e.pendingPromptKind,hasOpenReview:t,hasApprovedReview:n})}function oM(e){let t=F(e);return!t?.isBorrowed||aM(t)!==`plan`?!1:sM(e)}function sM(e){let t=F(e);return!t?.isBorrowed||!t.hasPlan?!1:(t.face=`plan`,t.card.dataset.face=`plan`,t.termWrap.hidden=!0,t.conversationFace.hide(),t.planFace.show(Tr(e)),$j(t),!0)}function cM(e,t){let n=F(e);n&&(n.hasPlan=t===!0,$j(n),oM(e))}function Yte(e){let t=F(e.id);t&&(t.planReviewState=cT(t.planReviewState,e),t.hasPlan=e.hasPlan,t.planFace.update({state:t.planReviewState}),$j(t),oM(e.id))}function Xte(e){let t=F(e.id);t&&t.planFace.update({draft:e})}function Zte(e){let t=F(e.id);t&&(t.planReviewState={reviews:e.reviews},t.hasPlan=!0,t.planFace.update({response:e}),$j(t))}function lM(e){if(e.type!==`error`&&e.type!==`session-error`||e.scope!==`plan`&&e.scope!==`plan-decision`)return!1;let t=F(e.id);return t?e.scope===`plan`?(t.planFace.update({requestFailed:!0}),!0):(t.planFace.update({decisionRefused:!0,refusalText:e.message}),!0):!1}function Qte(e){for(let[,t]of P)t.planFace.update({isConnected:e})}function uM(e,t){let n=F(e);n&&(n.effectiveBase=typeof t==`string`?t:void 0)}function dM(e,t){let n=F(e);if(!n)return;n.agent=typeof t==`string`?t:null,$j(n);let r=yee(t);pM(n,`.agent-badge`,`agent`,{on:r!==``,value:r,text:r})}function $te(e,t){let n=F(e);n&&(t?n.card.dataset.worktree=``:delete n.card.dataset.worktree)}function ene(e,t,n){let r=F(e);r&&(fM(r.card,`guarded`,t),fM(r.card,`guardrailsReleased`,n),V_(r.btnGuardrails,r.card))}function fM(e,t,n){n?e.dataset[t]=``:delete e.dataset[t]}function pM(e,t,n,r){let{on:i,value:a=``,text:o,title:s}=r,c=e.card.querySelector(t);if(i)e.card.dataset[n]=a,c&&(o!==void 0&&(c.textContent=o),s!==void 0&&(c.title=s));else{if(delete e.card.dataset[n],!c)return;o!==void 0&&(c.textContent=``),s!==void 0&&c.removeAttribute(`title`)}}function mM(e,t,n=!1){let r=F(e);r&&(r.activeAgents=Math.max(0,Number(t)||0),r.awaitingBackgroundTasks=mr(r.currentState,n===!0),r.card.toggleAttribute(`data-monitoring`,r.awaitingBackgroundTasks))}function hM(e,t){let n=F(e);if(!n)return;let r=wte(t);pM(n,`.usage-badge`,`usage`,{on:!!r,text:r||``,title:r?Tte(t):void 0})}function tne(e,t,n){return t?{on:!0,value:`compacting`,title:`Context compaction in progress`,text:`compacting`}:e?{on:!0,value:Jj(e),title:`Waiting on a permission or input prompt`,text:Eg(Jj(e))}:n?{on:!0,value:`memory`,title:`Held until Glimmervoid has enough free memory to start it`,text:`Waiting for memory`}:{on:!1,title:``,text:``}}function gM(e,t,n=!1,r=!1){let i=F(e);i&&(i.pendingPromptKind=typeof t==`string`?t:null,pM(i,`.prompt-badge`,`prompt`,tne(t,n,r)),i.conversationFace.refresh(),!oM(e)&&(typeof t!=`string`||t===``)&&i.face===`terminal`&&Zj(e))}function _M(e,t){let n=F(e);n&&(n.unseenOutcome=t??null)}function nne(e){return e?`sleeping until ~${Kl(new Date(e))}`:`scheduled`}function vM(e,t){let n=F(e);n&&pM(n,`.wakeup-badge`,`wakeup`,{on:!!t,value:t?.kind||`wakeup`,text:nne(t?.at),title:t?.reason?`Scheduled revival: ${t.reason}`:`Scheduled revival pending`})}function rne(e,t){let n=F(e);if(!n)return;let r=Array.isArray(t.findings)?t.findings:[],i=t.filesFixed||0,a=null,o=0;!t.skipped&&t.mode===`fix`&&i>0&&(a=`fixed`,o=i),!t.skipped&&t.mode===`report`&&r.length>0&&(a=`flagged`,o=new Set(r.map(e=>e.file)).size);let s={};for(let e of r)s[e.rule]=(s[e.rule]||0)+(e.count||0);let c=Object.keys(s).map(e=>`${e}: ${s[e]}`).join(`, `),l=a===`fixed`?`auto-fixed`:`flagged`;pM(n,`.post-turn-badge`,`pt`,{on:!!a,value:a||void 0,text:`${a===`fixed`?`✓`:`⚠`} ${o}`,title:`Post-turn ${l} ${o} file(s)${c?` (${c})`:``}`})}function yM(e,t){t===`pending-review`||t===`parked`||t===`merging`?e.dataset.merge=t:delete e.dataset.merge}function ine(e,t,n=null){let r=F(e),i=Jj(t)||`none`;r&&yM(r.card,i),BE(Tr(e),i,Jj(n)||null)}function ane(e,t,n=null){let r=F(e),i=Jj(t)||`none`;r&&yM(r.card,i),HE(Tr(e),i,Jj(n)||null)}function bM(e,t){UE(Tr(e),t)}function xM(e,t){let n=F(e);if(!n)return;let r=Jj(t);n.card.dataset.session=r,n.nameEl.textContent=r}function SM(e){let t=F(e);t&&(rv(t),P.delete(Tr(e)),vT(Tr(e)),t.resizeObserver&&t.resizeObserver.disconnect(),t.abortController&&t.abortController.abort(),zC(t,Tr(e)),MS(t),t.term&&t.term.dispose(),t.term=null,t.fitAddon=null,t.card&&t.card.remove(),rM())}function CM(e,t,n){if(!t||!e.term)return;let r=n===A.DONE?`Session complete`:`Session failed`,i=n===A.DONE?`\x1B[34m`:`\x1B[31m`;e.term.write(`\r\n\r\n\x1b[2m${i} ${r}\x1b[0m\r\n\r\n\x1b[2m Open the session actions menu and choose Restart to start a new session.\x1b[0m\r\n`)}function wM(e,t){let n=F(e);n?x_(n).show(`error`,t):vf({source:`Session`,sessionId:typeof e==`string`?e:void 0,message:t})}function TM(e,t){let n=F(e);if(!n)return;let r=n.card.querySelector(`:scope > .session-failure-reason`);if(!(n.currentState===A.FAILED&&t)){r?.remove();return}let i=r??j(`p`,`session-failure-reason`);i.setAttribute(`role`,`status`),i.textContent=t,r||n.termWrap.before(i)}function EM(e,t){e.term&&(t===A.DONE||t===A.FAILED)&&(e.term.clear(),e.term.reset())}function DM(e){let t=P.get(e);t&&Hg({state:t.currentState,unseenOutcome:t.unseenOutcome})&&document.visibilityState===`visible`&&(ib()||document.hasFocus())&&G({type:`dismiss`,id:e,expectedState:t.currentState})}function OM(e,t,n){let r=document.activeElement;return Wv({previousState:t,nextState:n,isPhoneLayout:ib(),isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),isActiveViewer:e._isActiveViewer?.()===!0,hasFocusInsideTerminal:r instanceof Node&&e.termWrap.contains(r)})}function kM(e,t,n,r=``){let i=F(e);if(!i)return;let a=Jj(t),o=i.currentState;i.currentState=a,a!==A.RUNNING&&(i.awaitingBackgroundTasks=!1),i.conversationFace.refresh(),a!==o&&(i.stateSince=typeof n==`number`&&Number.isFinite(n)?n:Date.now(),ip(i,a===A.RUNNING)),o===A.DORMANT&&a!==A.DORMANT&&KC(i,Tr(e)),Ag({state:a})===`resting`&&tm(Tr(e)),i.card.dataset.state=a,i.card.toggleAttribute(`data-monitoring`,mr(a,i.awaitingBackgroundTasks)),$j(i),(a===A.WAITING&&o!==A.WAITING||a===A.COMPLETE&&o!==A.COMPLETE)&&!ly(r)&&ac()&&wb(sc()),OM(i,o,a)&&G({type:`dismiss`,id:Tr(e),expectedState:A.COMPLETE});let s=a===A.DONE||a===A.FAILED,c=o!==A.DONE&&o!==A.FAILED&&o!==A.INITIALIZING;s&&c&&(i.card.classList.remove(`completion-flash`),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.card.classList.add(`completion-flash`),i.card.addEventListener(`animationend`,()=>i.card.classList.remove(`completion-flash`),{once:!0})})}),ac()&&wb(sc())),(a===A.DONE||a===A.FAILED)&&CM(i,c,a),a===A.INITIALIZING&&EM(i,o),rM()}var AM=`(no path)`;function jM(e){if(!e)return AM;let t=String(e).replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return(n===-1?t:t.slice(n+1))||`(no path)`}function MM(e,t,n){let r=Array.isArray(e)?e:[],i=new Map;for(let e of r){let n=t(e),r=n?String(n):AM,a=i.get(r);a||(a={key:r,label:r===`(no path)`?AM:jM(r),title:r,rows:[]},i.set(r,a)),a.rows.push(e)}if(n)for(let e of n){if(!e)continue;let t=String(e);t===`(no path)`||i.has(t)||i.set(t,{key:t,label:jM(t),title:t,rows:[]})}let a=[...i.values()];return a.sort((e,t)=>e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:`base`})||e.key.localeCompare(t.key)),{flat:i.size<=1,order:a.map(e=>e.key),groups:a}}function NM(e,t){if(!e||!Array.isArray(e.groups))return[];let n=t||new Set,r=[];if(e.flat){for(let t of e.groups)for(let e of t.rows)r.push(e.id);return r}let i=new Map(e.groups.map(e=>[e.key,e]));for(let t of e.order){if(n.has(t))continue;let e=i.get(t);if(e)for(let t of e.rows)r.push(t.id)}return r}function PM({onAdd:e,onForget:t}){let n=j(`div`,`session-group-header`),r=j(`span`,`session-group-label`),i=j(`span`,`session-group-count`),a=j(`span`,`session-group-rule`);a.setAttribute(`aria-hidden`,`true`);let o=j(`button`,`session-group-add`,`+`);o.type=`button`,o.addEventListener(`click`,()=>e(n.dataset.path,n.dataset.label));let s=j(`button`,`session-group-forget`);return s.type=`button`,s.append(nf(Xd)),s.addEventListener(`click`,()=>t(n.dataset.path)),n.append(r,i,a,s,o),{header:n,label:r,count:i,addButton:o,forgetButton:s}}function FM(e,t,n){let{header:r,label:i,count:a,addButton:o,forgetButton:s}=e,c=t.key===AM,l=t.rows.length===0;r.dataset.path=t.key,r.dataset.label=t.label,r.title=t.title,r.toggleAttribute(`data-empty`,l),i.textContent=t.label,a.textContent=String(t.rows.length),a.title=`${t.rows.length} ${t.rows.length===1?`session`:`sessions`}`,o.hidden=c,s.hidden=c||!l,c||(o.title=`Add a session to ${t.label}`,o.setAttribute(`aria-label`,`Add a session to ${t.label}`)),!c&&l&&(s.title=`Remove ${t.label} from the ${n}`,s.setAttribute(`aria-label`,`Remove ${t.label} from the ${n}`))}var IM={waitingCount:0,finishedCount:0,failedCount:0},LM={failed:nr[A.FAILED],waiting:nr[A.WAITING],finished:nr[A.COMPLETE]},RM={failed:`failed`,waiting:`needs you`,finished:`finished`},zM=[`NI.`,`THIS QUEUE IS DECEASED`,`AND NOW, NOTHING AT ALL`,`TOUCH GRASS, BRIEFLY`,`GO STRETCH`,`THE AGENTS ARE COPING`,`MORALE IS ADEQUATE`,`REQUIESCAT`,`STANDARDS ARE BEING MET`,`THE AGENTS WANT SPACE`,`NO CAUSE FOR ALARM`,`KINDLY GO AWAY`,`THEY COPE WITHOUT YOU`,`PRESS HARDER, PERHAPS`,`OH, WELL DONE`,`THAT DID NOTHING. AGAIN.`,`WELL. YOU TRIED.`,`SUBJECT PRESSED BUTTON`,`THE BUTTON WORKS. YOU?`,`WE HAVE NO PROBLEMS`,`THE LAWYERS SAY RELAX`,`BRING A TOWEL`],BM=2500,VM=`cubic-bezier(0.16, 1, 0.3, 1)`,HM=`cubic-bezier(0.5, 0, 0.2, 1)`,UM=260,WM=200,GM=200,KM=300,qM=28,JM=360,YM=420,XM=200,ZM=3,QM=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),$M=new WeakMap;function eN(e){let t=$M.get(e);if(!t)throw Error(`attention banner was not built by buildAttentionBanner`);return t}function tN(e){return!document.hidden&&typeof e.animate==`function`&&e.getClientRects().length>0}function nN(){return QM?.matches??!1}function rN(e){return e.map(e=>({easing:VM,...e}))}function iN(e,t){let n=j(`div`,`attention-banner`);n.setAttribute(`role`,`status`),n.style.setProperty(`--attention-head-tile-px`,`${qg.headTile}px`),n.style.setProperty(`--attention-tile-px`,`${qg.tile}px`),n.style.setProperty(`--attention-tile-gap-px`,`${qg.tileGap}px`),n.style.setProperty(`--attention-overflow-px`,`${qg.overflowSlot}px`);let r=j(`span`,`attention-banner-chips`),i=j(`span`,`attention-tile-overflow`);i.setAttribute(`aria-hidden`,`true`),i.hidden=!0,r.append(i);let a=j(`span`,`attention-banner-line`);a.setAttribute(`aria-hidden`,`true`);let o=j(`span`,`attention-banner-status`);o.append(r,j(`span`,`attention-banner-count`),a);let s=j(`button`,`attention-banner-jump-row`);return s.type=`button`,s.append(o),t&&(t.classList.add(`attention-banner-jump`),s.append(t)),n.addEventListener(`click`,()=>e.onJump()),n.append(s),$M.set(n,{hooks:e,tiles:[],tileById:new Map,headId:null,flyingIds:new Set,tetheredId:null,tetheredRow:null,lastAllClearLine:null,allClearLineTimer:null,pressAnimations:[]}),typeof ResizeObserver==`function`&&new ResizeObserver(()=>oN(n)).observe(r),aN(n,IM,[]),n}function aN(e,t,n){let r=eN(e);r.tiles=n,N(e,`.attention-banner-count`).textContent=Qg(t);let i=n.length>0;e.toggleAttribute(`data-empty`,!i),e.toggleAttribute(`data-jumpable`,i),i&&SN(e,r),oN(e)}function oN(e){let t=eN(e),n=N(e,`.attention-banner-chips`),r=N(n,`.attention-tile-overflow`),i=tN(e),a=t.tiles.slice(0,Jg(n.clientWidth,t.tiles.length)),o=new Set(a.map(({id:e})=>e)),s=new Map;if(i)for(let[e,n]of t.tileById)s.set(e,n.getBoundingClientRect().left);let c=[...t.tileById].filter(([e])=>!o.has(e)),l=c.map(([,e])=>({left:e.offsetLeft,top:e.offsetTop}));c.forEach(([e,n],r)=>{t.tileById.delete(e),t.flyingIds.has(e)||!i?n.remove():uN(n,l[r])});let u=t.headId,d=[],f=null;a.forEach((i,a)=>{let o=t.tileById.get(i.id),s=o??cN(e,i.id);o||(t.tileById.set(i.id,s),d.push(s)),lN(s,i,a===0),(s.parentElement!==n||sN(s)!==f)&&n.insertBefore(s,r),f=s});let p=t.tiles.length-a.length;r.hidden=p===0,r.textContent=`+${p}`,r.title=`${p} more after these`,t.headId=a[0]?.id??null;let m=t.tiles[0]?.kind;if(m&&(e.dataset.headKind=m),m||delete e.dataset.headKind,t.tetheredId&&!o.has(t.tetheredId)&&mN(e,null),i){for(let e of d)dN(e);a.forEach(({id:e},n)=>{let r=t.tileById.get(e),i=s.get(e);if(!r||i===void 0)return;let a=i-r.getBoundingClientRect().left;e===t.headId&&e!==u?pN(r,a):a!==0&&fN(r,a,n)})}}function sN(e){let t=e.previousElementSibling;for(;t?.hasAttribute(`data-leaving`);)t=t.previousElementSibling;return t}function cN(e,t){let n=j(`span`,`attention-tile`);n.setAttribute(`role`,`img`),n.dataset.id=t;let r=j(`span`,`attention-tile-icon`);return r.setAttribute(`aria-hidden`,`true`),n.append(r),n.addEventListener(`pointerenter`,()=>mN(e,t)),n.addEventListener(`pointerleave`,()=>mN(e,null)),n}function lN(e,{kind:t,name:n},r){e.dataset.kind=t,e.toggleAttribute(`data-head`,r);let i=`${n}, ${RM[t]}`;e.title=i,e.setAttribute(`aria-label`,i),of(N(e,`.attention-tile-icon`),LM[t])}function uN(e,t){e.toggleAttribute(`data-leaving`,!0),e.style.left=`${t.left}px`,e.style.top=`${t.top}px`;let n=nN()?[{opacity:1},{opacity:0}]:rN([{transform:`none`,opacity:1},{transform:`scale(0.6)`,opacity:0}]),r=e.animate(n,{duration:GM,fill:`forwards`});r.onfinish=()=>e.remove(),r.oncancel=()=>e.remove()}function dN(e){let t=nN()?[{opacity:0},{opacity:1}]:rN([{transform:`scale(0.6)`,opacity:0},{transform:`none`,opacity:1}]);e.animate(t,{duration:WM})}function fN(e,t,n){nN()||e.animate(rN([{transform:`translateX(${t}px)`},{transform:`none`}]),{duration:KM,delay:n*qM,fill:`backwards`})}function pN(e,t){nN()?e.animate([{opacity:.35},{opacity:1}],{duration:JM,easing:VM}):e.animate(rN([{transform:`translateX(${t}px) scale(0.8)`,filter:`brightness(1.8)`},{transform:`scale(1.1)`,offset:.6},{transform:`none`,filter:`none`}]),{duration:JM})}function mN(e,t){let n=eN(e),r=t?n.tileById.get(t):void 0,i=r&&t?t:null;if(i===n.tetheredId||(n.tetheredId&&n.tileById.get(n.tetheredId)?.toggleAttribute(`data-tethered`,!1),n.tetheredRow?.toggleAttribute(`data-tethered`,!1),n.tetheredRow?.style.removeProperty(`--tether`),n.tetheredId=i,n.tetheredRow=null,!r||!i))return;r.toggleAttribute(`data-tethered`,!0);let a=n.hooks.rowFor(i);if(!a)return;let o=getComputedStyle(r).getPropertyValue(`--tile`).trim();o&&a.style.setProperty(`--tether`,o),a.toggleAttribute(`data-tethered`,!0),n.tetheredRow=a}function hN(e){return!e||e.getClientRects().length===0?null:e.getBoundingClientRect()}function gN(e,t,n){let r=eN(e);if(r.flyingIds.has(t))return;let i=r.tileById.get(t);if(!i||!tN(e)){n();return}mN(e,null),r.flyingIds.add(t);let a=r.hooks.rowFor(t),o=i.getBoundingClientRect(),s=hN(a?.querySelector(`.session-row-glyph`)??a),c=i.cloneNode(!0);if(!(c instanceof HTMLElement)){r.flyingIds.delete(t),n();return}c.classList.add(`attention-tile-ghost`),c.setAttribute(`aria-hidden`,`true`),c.removeAttribute(`aria-label`),c.tabIndex=-1,c.style.left=`${o.left}px`,c.style.top=`${o.top}px`,c.style.width=`${o.width}px`,c.style.height=`${o.height}px`,document.body.append(c),i.style.visibility=`hidden`;let l=c.animate(_N(o,s),vN(s)),u=()=>{c.remove(),r.flyingIds.delete(t),i.isConnected&&(i.style.visibility=``),n()};l.onfinish=u,l.oncancel=u}function _N(e,t){return!t||nN()?[{opacity:1},{opacity:0}]:[{transform:`none`,opacity:1},{transform:`translateY(-5px) scale(1.2)`,opacity:1,offset:.25},{transform:`translate(${t.left+t.width/2-(e.left+e.width/2)}px, ${t.top+t.height/2-(e.top+e.height/2)}px) scale(${Math.min(1,t.width/e.width)})`,opacity:.2}]}function vN(e){return!e||nN()?{duration:XM,fill:`forwards`}:{duration:YM,easing:HM,fill:`forwards`}}function yN(e){let t=eN(e);e.hasAttribute(`data-empty`)&&xN(e,t);for(let e of t.pressAnimations)e.cancel();if(t.pressAnimations=[],!tN(e))return;let n={duration:UM};if(t.pressAnimations.push(e.animate(rN([{opacity:0},{opacity:.07,offset:.3},{opacity:0}]),{...n,pseudoElement:`::after`})),!nN()){t.pressAnimations.push(e.animate(rN([{transform:`none`},{transform:`scale(0.97) translateY(1px)`,offset:.3},{transform:`none`}]),n));for(let r of e.querySelectorAll(`.attention-banner-jump .kbd`))t.pressAnimations.push(r.animate(rN([{transform:`none`},{transform:`translateY(${ZM}px)`,offset:.3},{transform:`none`}]),n),r.animate(rN([{transform:`none`},{transform:`translateY(-${ZM}px)`,offset:.3},{transform:`none`}]),{...n,pseudoElement:`::after`}))}}function bN(e){let t=zM.filter(t=>t!==e);return t[Math.floor(Math.random()*t.length)]??zM[0]}function xN(e,t){let n=bN(t.lastAllClearLine);t.lastAllClearLine=n,N(e,`.attention-banner-line`).textContent=n,e.toggleAttribute(`data-all-clear-line`,!0),t.allClearLineTimer!==null&&window.clearTimeout(t.allClearLineTimer),t.allClearLineTimer=window.setTimeout(()=>SN(e,t),BM)}function SN(e,t){t.allClearLineTimer!==null&&window.clearTimeout(t.allClearLineTimer),t.allClearLineTimer=null,e.toggleAttribute(`data-all-clear-line`,!1)}var CN=e=>e.ui.path,wN=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),TN=null,EN=null,DN=null,ON=null,kN=null,AN=null,jN=null,MN=!1,NN=!1,PN=new Map,FN=new Map,IN=new Map,LN=new Map,RN=null,zN=``,BN=[],VN=new Set;function HN(){return NM(WN($N()),VN)}function UN(e){let t=RN;if(RN=e||null,t&&t!==RN){let e=FN.get(t);e&&(e.tabIndex=-1,e.setAttribute(`aria-selected`,`false`))}if(RN){let e=FN.get(RN);e&&(e.tabIndex=0,e.setAttribute(`aria-selected`,`true`))}}function WN(e){return MM(e,CN,Vv(e,CN))}function GN(e){let t=LN.get(e.key),n=IN.get(e.key);return(!t||!n)&&(t=PM({onAdd:ty,onForget:e=>{Hv(e),aP()}}),n=j(`div`,`focus-rail-list`),n.setAttribute(`role`,`listbox`),LN.set(e.key,t),IN.set(e.key,n)),FM(t,e,`rail`),n.setAttribute(`aria-label`,`${e.label} sessions`),{header:t.header,list:n}}function KN(){return MN}function qN(){return jr.snapshot().focusedSessionId}function JN({rail:e,center:t,resizer:n}){if(TN=e,DN=t,!TN||!DN)return;let r=TN,i=DN;ZN(n),r.removeAttribute(`role`),r.removeAttribute(`aria-label`),r.setAttribute(`aria-keyshortcuts`,Ws(sm)),EN=iN({onJump:lP,rowFor:e=>FN.get(e)},pm());let a=j(`details`,`rail-status-key`);a.append(j(`summary`,`rail-status-key-summary`,`Status key`),Iv()),r.append(EN,a),kN=j(`div`,`focus-empty`),kN.innerHTML=`<p class="focus-empty-title"></p><p class="focus-empty-desc"></p>`,AN=kN.querySelector(`.focus-empty-title`),jN=kN.querySelector(`.focus-empty-desc`),ON=j(`div`,`focus-card-slot`),i.append(kN,ON),r.addEventListener(`keydown`,QN)}var YN={minPx:180,maxPx:480},XN=16;function ZN(e){e&&TN&&h_({resizer:e,column:TN,widthHost:TN,widthProperty:`--rail-width`,bounds:YN,keyStepPx:XN,getStoredWidth:Cc,setStoredWidth:wc})}function QN(e){if(e.key===`Delete`||e.key===`Backspace`){let t=e.target instanceof HTMLElement?e.target:null,n=t?.dataset.id;if(!n||FN.get(n)!==t)return;e.preventDefault(),sy(n,PN.get(n));return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`||e.altKey||e.metaKey||e.ctrlKey||e.shiftKey)return;let t=zg(HN(),RN,e.key===`ArrowDown`?1:-1);t!=null&&(e.preventDefault(),UN(t),FN.get(t)?.focus())}function $N(){return Ng(Qv(eP))}function eP(e){return e.nameEl?e.nameEl.textContent:e.card&&(e.card.dataset.session||e.card.dataset.id)||``}function tP(e){let{row:t,refs:n}=Sv(`button`);t.type=`button`,t.dataset.id=e,t.setAttribute(`role`,`option`),t.addEventListener(`click`,()=>nP(e)),t.addEventListener(`pointerenter`,()=>{EN&&mN(EN,e)}),t.addEventListener(`pointerleave`,()=>{EN&&mN(EN,null)});let{item:r,removeButton:i}=Cv(t,()=>sy(e,PN.get(e)));return r.setAttribute(`role`,`presentation`),i.tabIndex=-1,Object.assign(t,{_refs:n,_row:r})}function nP(e){let t=Yv(e);t&&(hP(e),dP(t,e))}function rP(e,{id:t,ui:n,state:r,name:i},a){let o=PN.get(t)||`none`;Av(e,e._refs,{ui:n,state:r,name:i??``,mergeStatus:o===`none`?``:o,attentionPosition:a}),e.classList.toggle(`focused`,t===qN());let s=t===RN;e.setAttribute(`aria-selected`,String(s)),e.tabIndex=s?0:-1}function iP(e,t){if(!MN)return;let n=e?.card?.dataset.id,r=n?FN.get(n):null;r&&(t===`flag`?r.dataset.activity=e._activity||``:rp(r._refs?.glyph))}ep(iP),lp(()=>{if(MN)for(let[e,t]of FN){let n=P.get(e);n&&(t._refs.elapsed.textContent=sp(n))}});function aP(){if(!MN)return;let e=TN;if(!e)return;let t=$N(),n=WN(t),r=new Set,i=Kg(t,qN()),a=new Map(i.map(({id:e},t)=>[e,t+1])),o=(e,t)=>{let n=e.map(e=>e.id).join(`,`),i=t._lastOrderKey===n&&t.childElementCount===e.length;for(let n of e){let{id:e}=n;r.add(e);let o=FN.get(e);o||(o=tP(e),FN.set(e,o)),rP(o,n,a.get(e)??null),i||t.appendChild(o._row)}t._lastOrderKey=n},s=new Set(n.order),c=n.groups.map(e=>e.key).join(`
|
|
165
|
+
`),l=c===zN;zN=c;for(let t of n.groups){let{header:n,list:r}=GN(t);l||e.append(n,r),o(t.rows,r)}for(let[e,t]of[...LN])s.has(e)||(t.header.remove(),IN.get(e)?.remove(),LN.delete(e),IN.delete(e));for(let[e,t]of FN)r.has(e)||(t._row.remove(),FN.delete(e),e===RN&&(RN=null));for(let e of[...PN.keys()])P.has(e)||PN.delete(e);let u=BN;BN=NM(n,VN);let d=qN();if(d&&!P.has(d)){jr.dispatch(`focusSession`,null),RN=null;let e=oP(u,d);if(e){let t=!document.activeElement||document.activeElement===document.body;hP(e),t&&dP(P.get(e),e);return}}gP();let f=qN();if(f){let e=P.get(f);e&&e.card.parentElement!==ON&&pP(e,f)}cP(t,i)}function oP(e,t){let n=e.filter(e=>e===t||P.has(e));return n.length<2?BN.find(e=>P.has(e))??null:zg(n,t,n.indexOf(t)===n.length-1?-1:1)}function sP(){return Kg($N(),qN())}function cP(e,t){EN&&aN(EN,Yg(e),t)}function lP(){if(!MN)return;EN&&yN(EN);let e=sP()[0]?.id;e&&uP(e)}function uP(e){if(!MN)return;FN.get(e)?.scrollIntoView({block:`nearest`}),EN&&gN(EN,e,()=>fP(e));let t=P.get(e);Yv(e),hP(e),dP(t,e)}function dP(e,t){e&&requestAnimationFrame(()=>requestAnimationFrame(()=>{MN&&qN()===t&&e.term?.focus()}))}function fP(e){if(wN?.matches||document.hidden)return;let t=FN.get(e);t?.animate&&(t.animate([{transform:`scale(1)`},{transform:`scale(1.045)`,offset:.3},{transform:`scale(1)`}],{duration:360,easing:`cubic-bezier(0.22, 1, 0.36, 1)`}),t._row.animate([{boxShadow:`0 0 0 3px var(--accent)`},{boxShadow:`0 0 0 3px transparent`}],{duration:700,easing:`ease-out`}));let n=P.get(e)?.card;n?.animate&&n.animate([{opacity:.8},{opacity:1}],{duration:240,easing:`ease-out`})}function pP(e,t){ON&&(Pr(e,t,ON,{className:`focus-centered`}),YC(e,t,!0))}function mP(){let e=qN();e&&(Nr()===e&&Fr(),jr.dispatch(`focusSession`,null))}function hP(e){MN&&P.has(e)&&(DM(e),e!==qN()&&(mP(),jr.dispatch(`focusSession`,e),RN=e,Xv(e),aP()))}function gP(){if(!kN||!AN||!jN)return;let e=qN(),t=!!(e&&P.has(e)),n=P.size>0;kN.hidden=t,Fm(kN,!n),AN.hidden=!n,jN.hidden=!n,!t&&n&&(AN.textContent=`No session selected`,jN.textContent=`Select a session from the rail on the left to focus it here.`)}function _P(e,t){PN.set(Tr(e),typeof t==`string`&&t?t:`none`),MN&&aP()}function vP(e){MN&&P.has(e)&&hP(e)}function yP(e){return!MN||!P.has(e)?!1:(hP(e),sM(e))}function bP(e){if(!MN)return;let t=HN()[e-1];t&&nP(t)}function xP(e){if(!MN)return;let t=zg(HN(),RN,e);t!=null&&(nP(t),FN.get(t)?.scrollIntoView({block:`nearest`}))}window.addEventListener(`focus`,()=>{let e=qN();MN&&e&&DM(e)});function SP(){TN&&(MN=!0,mP(),RN=null,aP(),NN&&sP().length>0?lP():(NN&&EN&&yN(EN),wP()))}function CP(e){NN=!0;try{e()}finally{NN=!1}}function wP(){if(!MN||qN())return;let e=Zv();e&&hP(e)}function TP(){MN&&=(mP(),RN=null,!1)}var EP=`t-[0-9a-f]{8}`,DP=`No findings. Open a markdown file in a connected editor.`,OP=`No intent yet. The visions proposes one after its first pass.`,kP=`Unowned`,AP=RegExp(`^${EP}$`);function jP(){return{byProject:{},unowned:[]}}function MP(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.text==`string`?t.text:``;if(!n)return null;let r=Number(t.ts),i=Number(t.hits);return{id:typeof t.id==`string`&&AP.test(t.id)?t.id:null,text:n,uris:Array.isArray(t.uris)?t.uris.filter(e=>typeof e==`string`&&e!==``):[],ts:Number.isFinite(r)&&r>0?r:0,hits:Number.isInteger(i)&&i>0?i:1}}function NP(e){if(Array.isArray(e))return e.map(MP).filter(e=>e!==null);let t=MP(e);return t?[t]:[]}function PP(e){let t=e?.intent;if(!t||typeof t!=`object`)return jP();let n=t;if(!(Object.hasOwn(n,`byProject`)||Object.hasOwn(n,`unowned`)||Object.hasOwn(n,`global`)))return{byProject:{},unowned:NP(n)};let r=n.byProject&&typeof n.byProject==`object`?n.byProject:{},i=[];for(let[e,t]of Object.entries(r)){let n=NP(t);n.length!==0&&e&&i.push([e,n])}return{byProject:Object.fromEntries(i),unowned:NP(Object.hasOwn(n,`unowned`)?n.unowned:n.global)}}function FP(e,t){let n=typeof t?.id==`string`?t.id:null;if(!n)return e;let r=e.findIndex(e=>e.id===n);return r<=0?e:[e[r],...e.slice(0,r),...e.slice(r+1)]}function IP(e,t){let n=e||jP(),r=t?.intent;if(!r||typeof r!=`object`)return n;let i=r,a=FP(Array.isArray(i.threads)?NP(i.threads):NP(i),i.active),o=typeof t?.projectId==`string`&&t.projectId?t.projectId:null;if(!o)return{byProject:{...n.byProject},unowned:a};let s={...n.byProject};return a.length===0&&delete s[o],a.length>0&&(s[o]=a),{byProject:s,unowned:n.unowned}}function LP(e,t=null){let n=t&&typeof t.get==`function`?t.get(e):null;return typeof n==`string`&&n?n:e}function RP(e,{key:t,label:n,now:r}){return e.map((e,i)=>({key:`${t}:${e.id||i}`,label:n,text:e.text,hasText:!0,active:i===0,meta:HP(e,r)}))}function zP(e,t=null,n=Date.now()){let r=e||jP(),i=Object.entries(r.byProject||{}).filter(([e,t])=>e&&Array.isArray(t)&&t.length>0).map(([e,n])=>({projectId:e,label:LP(e,t),threads:n})).sort((e,t)=>e.label.localeCompare(t.label)).flatMap(({projectId:e,label:t,threads:r})=>RP(r,{key:e,label:t,now:n})),a=RP(Array.isArray(r.unowned)?r.unowned:[],{key:`unowned`,label:kP,now:n});return i.length+a.length>0?[...a,...i]:[{key:`unowned`,label:kP,text:OP,hasText:!1,active:!1,meta:``}]}function BP(e){return e?.text?`proposed by visions`:``}function VP(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:Vl(Number(t)-n,{rounding:`floor`,wording:`spelled`,suffix:` ago`,justNowBelowSeconds:60})}function HP(e,t=Date.now()){let n=BP(e);if(!n)return``;let r=typeof e?.id==`string`&&e.id?`thread ${e.id}, `:``,i=VP(e?.ts,t);return i?`${r}${n}, ${i}`:`${r}${n}`}function UP(e){let t=Number(e?.range?.start?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function WP(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function GP(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function KP(e){let t=typeof e==`string`?e:``;if(!t)return``;let n=t.lastIndexOf(`/`),r=n===-1?t:t.slice(n+1);if(!r)return t;try{return decodeURIComponent(r)}catch{return r}}function qP(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function JP(e){let t=qP(e);return t===1?`1 finding`:`${t} findings`}function YP(e){let t=qP(e);return t===1?`1 comment`:`${t} comments`}function XP(e){let t=qP(e?.findings?.length),n=qP(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(JP(t)),n>0&&i.push(YP(n)),i.length>0?i.join(`, `):JP(0)}function ZP(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function QP(e){return(typeof e?.hand==`string`?e.hand.trim():``)||null}function $P(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=QP(t);return i?(n.set(r,i),n):(n.delete(r),n)}function eF(e){let t=new Map,n=Array.isArray(e?.documents)?e.documents:[];for(let e of n){let n=typeof e?.uri==`string`?e.uri:``,r=typeof e?.hand==`string`?e.hand.trim():``;n&&r&&t.set(n,r)}return t}var tF=`hand`,nF=`unseen`,rF=`
|
|
166
|
+
`;function iF(e){let t=2166136261,n=3266489909;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r);t=Math.imul(t^i,16777619)>>>0,n=Math.imul(n^i,2246822507)>>>0}return`${t.toString(36).padStart(7,`0`)}${n.toString(36).padStart(7,`0`)}`}function aF(e,t){return iF(JSON.stringify([e,...t]))}function oF(e,t){return aF(`finding`,[e,UP(t),String(t.code??``),String(t.message??``)])}function sF(e,t){return aF(`comment`,[e,fF(t),String(t.message??``)])}function cF(e){return aF(`fix`,[e.uri,wF(e),e.code,e.message,TF(e)])}function lF(e){return aF(`intent`,[e.key,e.text,e.active])}function uF(e,t,n,r=[],i=null){let a=[...n].map(([e,t])=>aF(`hand`,[e,t])).sort(),o=new Set;for(let r of[...e.keys(),...t.keys(),...n.keys()])o.add(aF(`document`,[r]));for(let[t,n]of e)for(let e of n)o.add(oF(t,e));for(let[e,n]of t)for(let t of n)o.add(sF(e,t));for(let e of r)o.add(cF(e));for(let e of zP(i,null,0))e.hasText&&o.add(lF(e));let s=[...o].sort();return{signature:[...a,...s].join(rF),handEntries:a,contentEntries:s}}function dF(e,t){let n=new Set(t.split(rF));return e.handEntries.some(e=>!n.has(e))?tF:e.contentEntries.some(e=>!n.has(e))?nF:null}function fF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<1?`L?`:`L${Math.floor(t)}`}function pF(e){return Array.isArray(e?.diagnostics)?e.diagnostics:[]}function mF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=pF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function hF(e){return Array.isArray(e?.comments)?e.comments:[]}function gF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=hF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function _F(e){let t=new Map,n=Array.isArray(e?.documents)?e.documents:[];for(let e of n){let n=typeof e?.uri==`string`?e.uri:``,r=Array.isArray(e?.diagnostics)?e.diagnostics:[];n&&r.length!==0&&t.set(n,r)}return t}function vF(e){let t=new Map,n=Array.isArray(e?.documents)?e.documents:[];for(let e of n){let n=typeof e?.uri==`string`?e.uri:``,r=Array.isArray(e?.comments)?e.comments:[];n&&r.length!==0&&t.set(n,r)}return t}function yF(e,t=new Map,n=new Map){let r=[],i=new Set([...e.keys(),...t.keys(),...n.keys()]);for(let a of i){let i=e.get(a),o=t.get(a),s=n.get(a)||null,c=Array.isArray(i)?i:[],l=Array.isArray(o)?o:[];(c.length!==0||l.length!==0||s)&&r.push({uri:a,name:KP(a)||a,hand:s,findings:[...c].sort((e,t)=>GP(e)-GP(t)||WP(e)-WP(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>bF(e.name,t.name)||bF(e.uri,t.uri)),r}function bF(e,t){return e<t?-1:+(e>t)}var xF=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`,SF=20;function CF(e){let t=qP(e);return t===1?`1 fix`:`${t} fixes`}function wF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function TF(e){return e?.applied===!0?`applied`:`refused`}function EF(e,{uri:t=``,ts:n=0}={}){if(!e||typeof e!=`object`)return null;let r=e,i=typeof r.message==`string`?r.message.trim():``;if(!i)return null;let a=Number(r.line),o=Number(r.ts??n);return{uri:typeof r.uri==`string`&&r.uri?r.uri:t,code:typeof r.code==`string`?r.code:``,line:Number.isFinite(a)&&a>0?Math.floor(a):0,message:i,applied:r.applied===!0,ts:Number.isFinite(o)&&o>0?o:0}}function DF(e){let t=typeof e?.uri==`string`?e.uri:``,n=Number(e?.ts);return EF(e?.fix,{uri:t,ts:Number.isFinite(n)?n:0})}function OF(e,t,{max:n=SF}={}){let r=DF(t);return r?[r,...e].slice(0,Math.max(0,Math.floor(n))):[...e]}function kF(e,{max:t=SF}={}){let n=Array.isArray(e?.fixes)?e.fixes:[],r=[];for(let e of n){let t=EF(e);t&&r.push(t)}return r.slice(0,Math.max(0,Math.floor(t)))}var AF=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,jF=100,MF={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function NF(e){let t=typeof e==`string`?e:``;return MF[t]||t||`source`}function PF(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:Vl(Number(t)-n,Ll)}function FF(e){if(!e||typeof e!=`object`)return null;let t=e,n=Number(t.seq);if(!Number.isFinite(n))return null;let r=typeof t.summary==`string`?t.summary.trim():``;if(!r)return null;let i=Number(t.ts),a=t.scope&&typeof t.scope==`object`?t.scope:{};return{seq:Math.floor(n),source:typeof t.source==`string`?t.source:``,kind:typeof t.kind==`string`?t.kind:``,ts:Number.isFinite(i)&&i>0?i:0,summary:r,root:typeof a.root==`string`&&a.root?a.root:null,sessionId:typeof a.sessionId==`string`&&a.sessionId?a.sessionId:null}}function IF(e){let t=Array.isArray(e?.events)?e.events:[],n=[];for(let e of t){let t=FF(e);t&&n.push(t)}return n}function LF(e){let t=Number(e?.overflow);return!Number.isFinite(t)||t<=0?0:Math.floor(t)}function RF(e){let t=qP(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function zF(e,t){return[...e].sort((e,t)=>t.seq-e.seq).slice(0,Math.max(0,Math.floor(t)))}function BF(e,t,{max:n=jF}={}){let r=IF(t);if(r.length===0)return zF(e,n);let i=new Map;for(let t of e)i.set(t.seq,t);for(let e of r)i.set(e.seq,e);return zF([...i.values()],n)}function VF(e,{max:t=jF}={}){return zF(IF(e),t)}function HF(e){let t=qP(e);return t===1?`1 event`:`${t} events`}function UF(e){if(!e?.root)return`machine`;let t=e.root.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return n===-1?t:t.slice(n+1)}var WF=new Map,GF=new Map,KF=new Map,qF=jP(),JF=new Map,YF=null,XF=null,ZF=null,QF=null,$F=null,eI=[],tI=0,nI=null,rI=[],iI=null,aI=uF(WF,GF,KF,rI,qF),oI=qc(),sI=Xl({getAck:()=>oI,setAck:e=>{oI=e,Jc(e)},signature:()=>aI.signature,isLooking:()=>!br(YF)});function cI(){let e=j(`section`,`visions-intent`);e.append(j(`h2`,`visions-intent-title`,`Intent`));let t=j(`div`,`visions-intent-list`);return e.append(t),ZF={list:t},e}function lI(e){let t=j(`div`,`visions-intent-item`),n=j(`div`,`visions-intent-head`);n.append(j(`span`,`visions-intent-scope`,e.label),j(`span`,`visions-intent-meta`,e.meta));let r=j(`p`,`visions-intent-text`,e.text);return r.classList.toggle(`visions-intent-none`,!e.hasText),t.classList.toggle(`visions-intent-active`,e.active===!0),t.append(n,r),t}function uI(){ZF&&ZF.list.replaceChildren(...zP(qF,JF).map(lI))}function dI(e){JF=e instanceof Map?e:new Map,uI()}function fI(e){let t=j(`section`,`visions-doc`),n=j(`div`,`visions-doc-head`),r=j(`h2`,`visions-doc-name`);if(r.textContent=e.name,r.title=e.uri,n.append(r,j(`span`,`visions-doc-count`,XP(e))),t.append(n),e.hand&&t.append(pI(e.hand)),e.findings.length>0){let n=j(`div`,`visions-findings`);for(let t of e.findings)n.append(hI(t));t.append(n)}if(e.comments.length>0){let n=j(`div`,`visions-comments`);for(let t of e.comments)n.append(mI(t));t.append(n)}return t}function pI(e){let t=j(`div`,`visions-hand`);return t.textContent=ZP(e),t}function mI(e){let t=j(`div`,`visions-comment`),n=j(`div`,`visions-comment-head`);n.append(j(`span`,`visions-comment-chip`,`visions`)),n.append(j(`span`,`visions-comment-line`,fF(e))),t.append(n);let r=j(`p`,`visions-comment-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function hI(e){let t=j(`div`,`visions-finding`);t.append(j(`span`,`visions-finding-line`,UP(e)));let n=e?.code==null?``:String(e.code);n&&t.append(j(`span`,`visions-finding-code`,n));let r=j(`span`,`visions-finding-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function gI({force:e=!1}={}){if(!XF||!e&&br(YF))return;XF.textContent=``;let t=yF(WF,GF,KF);if(t.length===0){let e=j(`p`,`visions-empty`,DP);if($F===!1){let t=om(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}XF.append(e)}else for(let e of t)XF.append(fI(e))}function _I(e){$F=e?.visions?.enabled===!0,gI()}function vI(){let e=j(`section`,`visions-activity`),t=j(`div`,`visions-activity-head`);t.append(j(`h2`,`visions-activity-title`,`Activity`));let n=j(`span`,`visions-activity-count`);t.append(n),e.append(t);let r=j(`div`,`visions-activity-list`);e.append(r);let i=j(`p`,`visions-activity-overflow`);return e.append(i),nI={count:n,list:r,overflow:i},e}function yI(e,t){let n=j(`div`,`visions-activity-row`);n.append(j(`span`,`visions-activity-source`,NF(e.source))),n.append(j(`span`,`visions-activity-age`,PF(e.ts,t))),n.append(j(`span`,`visions-activity-scope`,UF(e)));let r=j(`span`,`visions-activity-summary`);return r.textContent=e.summary,n.append(r),n}function bI({force:e=!1}={}){if(!nI||!e&&br(YF))return;let{count:t,list:n,overflow:r}=nI;if(t.textContent=HF(eI.length),n.textContent=``,eI.length===0){n.append(j(`p`,`visions-empty`,AF)),r.textContent=``;return}let i=Date.now();for(let e of eI)n.append(yI(e,i));r.textContent=RF(tI)}function xI(){let e=j(`section`,`visions-fixes`),t=j(`div`,`visions-fixes-head`);t.append(j(`h2`,`visions-fixes-title`,`Fixes`));let n=j(`span`,`visions-fixes-count`);t.append(n),e.append(t);let r=j(`div`,`visions-fixes-list`);return e.append(r),iI={count:n,list:r},e}function SI(e){let t=j(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=j(`span`,`visions-fix-file`);n.textContent=KP(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(j(`span`,`visions-fix-line`,wF(e))),t.append(j(`span`,`visions-fix-outcome`,TF(e))),t.append(j(`span`,`visions-fix-code`,e.code||``));let r=j(`span`,`visions-fix-message`);return r.textContent=e.message,t.append(r),t}function CI({force:e=!1}={}){if(!iI||!e&&br(YF))return;let{count:t,list:n}=iI;if(t.textContent=CF(rI.length),n.textContent=``,rI.length===0)n.append(j(`p`,`visions-empty`,xF));else for(let e of rI)n.append(SI(e))}function wI(){aI=uF(WF,GF,KF,rI,qF),aI.signature!==``&&sI.refresh(),QF&&QF(dF(aI,oI))}function TI(e){QF=e,wI()}var EI=df(`visions-connection-status`);function DI(e){e?EI.clear():EI.show(`error`,`${W} What you see below is from before the connection dropped.`)}function OI(e){if(YF)return YF;let t=j(`div`,`visions-content`);t.append(EI.element,cI());let n=j(`div`,`visions-feed`);return t.append(n),t.append(xI()),t.append(vI()),e.appendChild(t),YF=t,XF=n,uI(),gI({force:!0}),CI({force:!0}),bI({force:!0}),t}function kI(){uI(),gI({force:!0}),CI({force:!0}),bI({force:!0})}function AI(){aI.signature!==``&&sI.acknowledge(),wI()}function jI(e){rI=OF(rI,e),CI(),wI()}function MI(e){WF=mF(WF,e),gI(),wI()}function NI(e){GF=gF(GF,e),gI(),wI()}function PI(e){KF=$P(KF,e),gI(),wI()}function FI(e){qF=IP(qF,e),uI(),wI()}function II(e){eI=BF(eI,e),tI=LF(e),bI(),wI()}function LI(e){eI=VF(e),tI=0,bI(),wI()}function RI(e){WF=_F(e),GF=vF(e),KF=eF(e),qF=PP(e),rI=kF(e),uI(),gI(),CI(),wI()}var zI=i(l(),e());g({glimmervoidId:l().min(1),event:l().min(1),token:l().nullable().optional(),payload:zI}),g({id:l().min(1),name:l().min(1),event:l().min(1),matcher:l().optional(),type:u([`command`,`http`]),command:l().optional(),url:l().optional(),timeout:c().int().positive().optional(),enabled:t(),projects:p(l()).optional()}).passthrough();var BI=`Claude Code hooks injected into every session Glimmervoid spawns.`,VI=`Loading hooks`,HI=`No hooks yet. A hook runs a command, or calls a URL, when a Claude Code event fires in a Glimmervoid session. Start from one of these, or add your own.`,UI=`Start from`,WI=`Filter by name, event or command`,GI=`Nothing matches that filter.`,KI=`Preview`,qI=`The entry this becomes in the per-session settings file.`,JI=`Duplicate`,YI=`Discard changes`,XI=`Close the editor and lose the unsaved changes?`,ZI=`Esc cancels. Ctrl+Enter saves.`,QI=4,$I=`A change reaches a session at its next start or restart. Claude Code sessions only; Codex and Grok sessions do not read this file.`,eL=`Glimmervoid's own hooks`,tL=`Always present, read-only. Status detection depends on them.`,nL=`Your hooks`,rL=`New hook`,iL=`Edit hook`,aL=`Saved to config.json.`,oL=`All projects`,sL=`This event takes no matcher.`,cL=`Blank uses Claude Code's default for the event.`,lL=Object.freeze([{value:`command`,label:`Command`,hint:`Run a shell command. It receives the event JSON on stdin.`},{value:`http`,label:`HTTP`,hint:`POST the event JSON to a URL.`}]),uL=Object.freeze([{id:`lint`,label:`Lint after edits`,summary:`PostToolUse on Edit|Write`,draft:{name:`Lint after edits`,event:`PostToolUse`,matcher:`Edit|Write`,type:`command`,command:`npx biome check --write "$(jq -r .tool_input.file_path)"`}},{id:`notify`,label:`Notify on Stop`,summary:`Stop, command`,draft:{name:`Notify on Stop`,event:`Stop`,matcher:``,type:`command`,command:`command -v notify-send >/dev/null 2>&1 && notify-send "Claude finished a turn" || { command -v osascript >/dev/null 2>&1 && osascript -e 'display notification "Claude finished a turn" with title "Claude Code"'; }`}},{id:`guard`,label:`Guard destructive Bash`,summary:`PreToolUse on Bash, exit 2 blocks`,draft:{name:`Guard destructive Bash`,event:`PreToolUse`,matcher:`Bash`,type:`command`,command:`jq -r .tool_input.command | grep -Eq "rm -rf|git push --force" && exit 2 || exit 0`}},{id:`log`,label:`Log every prompt`,summary:`UserPromptSubmit, appends JSON`,draft:{name:`Log every prompt`,event:`UserPromptSubmit`,matcher:``,type:`command`,command:`cat >> ~/.claude/prompts.jsonl`}}]),dL=Object.freeze({hooks:[],builtin:[],events:[]});function fL(e){return!e||typeof e.error==`string`}function pL(e){return!e||typeof e.error!=`string`?``:e.error}function mL(e,t){let n=e?.[t];return Array.isArray(n)?n:dL[t]}var hL=e=>mL(e,`hooks`),gL=e=>mL(e,`builtin`),_L=e=>mL(e,`events`);function vL(e){let t=e?.limits?.maxTimeoutSec;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:600}function yL(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return typeof n!=`string`||!t||n===t}function bL(e){let t=hL(e),n=t.filter(e=>e.enabled!==!1).length;return[{label:`yours`,value:String(t.length),tone:null},{label:`enabled`,value:String(n),tone:t.length>0&&n===0?`warn`:null},{label:`built in`,value:String(gL(e).length),tone:null}]}function xL(e,t){let n=new Map(t.map((e,t)=>[e.name,t])),r=e=>n.get(e.event)??t.length;return[...e].sort((e,t)=>{let n=r(e)-r(t);return n===0?String(e.name).localeCompare(String(t.name)):n})}function SL(e,t){let n=String(t||``).trim().toLowerCase();return n?e.filter(e=>[e.name,e.event,e.matcher,e.command,e.url].some(e=>typeof e==`string`&&e.toLowerCase().includes(n))):e}function CL(e){return e.length>=QI}function wL(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.event===n.event?e.hooks.push(n):t.push({event:n.event,hooks:[n]})}return t}function TL(e){let t=e.type===`http`?{type:`http`,url:e.url||``}:{type:`command`,command:e.command||``};Number.isInteger(e.timeout)&&Number(e.timeout)>0&&(t.timeout=e.timeout);let n=e.matcher?{matcher:e.matcher,hooks:[t]}:{hooks:[t]};return JSON.stringify({hooks:{[e.event]:[n]}},null,2)}function EL(e){return`${e} copy`}function DL(e,t){return e.find(e=>e.name===t)||null}function OL(e,t){let n=DL(e,t);return n?n.matcher?`Matches ${n.matcher}. Blank matches every ${n.name}.`:sL:``}function kL(e){return e.type===`http`?e.url||``:e.command||``}function AL(e){let t=lL.find(t=>t.value===e);return t?t.label:String(e||``)}function jL(e){return!Number.isInteger(e.timeout)||Number(e.timeout)<=0?``:`${e.timeout}s timeout`}function ML(e,t){let n=Array.isArray(e.projects)?e.projects:[];return n.length===0?oL:n.map(e=>{let n=t.find(t=>t.id===e);return n?n.name:e}).join(`, `)}function NL(e){return e.matcher?`${e.event} / ${e.matcher}`:e.event}function PL(e){return NL(e)}function FL(e,t){let n=Array.isArray(e.projects)?e.projects:[],r=new Set(t.map(e=>e.id));return n.filter(e=>!r.has(e))}function IL(e){let t=e[0];return{id:null,name:``,event:t?t.name:``,matcher:``,type:`command`,command:``,url:``,timeout:``,enabled:!0,projects:[]}}function LL(e){return{id:e.id??null,name:e.name||``,event:e.event||``,matcher:e.matcher||``,type:e.type===`http`?`http`:`command`,command:e.command||``,url:e.url||``,timeout:Number.isInteger(e.timeout)?String(e.timeout):``,enabled:e.enabled!==!1,projects:Array.isArray(e.projects)?[...e.projects]:[]}}function RL(e,t,n=600){if(!e.name.trim())return`Give the hook a name.`;let r=DL(t,e.event);if(!r)return`Pick an event.`;if(e.matcher.trim()&&!r.matcher)return`${r.name} takes no matcher.`;if(e.type===`http`&&r.http===!1)return`${r.name} does not support HTTP hooks.`;if(e.type===`command`&&!e.command.trim())return`Enter the command to run.`;if(e.type===`http`&&!/^https?:\/\/\S+$/i.test(e.url.trim()))return`Enter a URL starting with http:// or https://.`;if(e.timeout.trim()!==``){let t=Number(e.timeout);if(!Number.isInteger(t)||t<1||t>n)return`Timeout must be a whole number of seconds from 1 to ${n}.`}return null}function zL(e){let t={name:e.name.trim(),event:e.event,type:e.type,enabled:e.enabled!==!1};return e.id&&(t.id=e.id),e.matcher.trim()&&(t.matcher=e.matcher.trim()),e.type===`command`&&(t.command=e.command.trim()),e.type===`http`&&(t.url=e.url.trim()),e.timeout.trim()!==``&&(t.timeout=Number(e.timeout)),e.projects.length>0&&(t.projects=[...e.projects]),t}function BL(e,t){let n={...IL(t),...e.draft};return DL(t,n.event)||(n.event=IL(t).event),n}function VL(e,t){return JSON.stringify(zL(e))!==JSON.stringify(t)}function HL(e){return{...e,enabled:e.enabled===!1}}function UL(e){return`Delete the hook "${e.name}"? Sessions already running keep it until they restart.`}var WL=null,GL=null,KL=null,qL=!1,JL=null,YL=null,XL=null,ZL=null,QL=null,$L=null,eR=!1,tR=``,nR=new Set,rR=new Set,iR=new Map,aR=!1,oR=(e,t)=>_r(`hooks`,e,t);function sR(e,t,n){let r=j(`p`,e,t);return n&&(r.dataset.tone=n),r}function cR(e,t,n,r){let i=j(`button`,e,t);return i.type=`button`,r&&i.setAttribute(`aria-label`,r),i.addEventListener(`click`,n),i}async function lR(e,t){try{let n=await K(e,t,{timeoutMs:q});if((n.type===`save-hook-result`||n.type===`delete-hook-result`)&&n.ok)return null;let r=e===`save-hook`?`Could not save the hook.`:`Could not delete the hook.`;return`error`in n&&typeof n.error==`string`&&n.error?n.error:r}catch(e){return ff(e,q)}}async function uR(e,t,n,r){rR.add(e),iR.set(e,{tone:`busy`,text:r}),PR({force:!0});let i=await lR(t,n);rR.delete(e),i&&iR.set(e,{tone:`error`,text:i}),i||iR.delete(e),PR({force:!0}),IR()}function dR(e,t,n){let r=j(`label`,`hooks-field`);return r.append(j(`span`,`hooks-field-label`,e),t),n&&r.append(j(`span`,`hooks-field-hint`,n)),r}function fR(e,t,n){let r=j(`input`,`settings-view-input`);return r.type=`text`,r.value=e,r.autocomplete=`off`,r.spellcheck=!1,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value)),r}function pR(e,t){let n=j(`textarea`,`settings-view-input hooks-command`);return n.rows=3,n.value=e,n.spellcheck=!1,n.addEventListener(`input`,()=>t(n.value)),n}function mR(e,t,n){let r=j(`select`,`settings-view-input hooks-select`);for(let n of t){let t=j(`option`,null,n.name);t.value=n.name,t.title=n.description,n.name===e.event&&(t.selected=!0),r.append(t)}return r.addEventListener(`change`,()=>n(r.value)),r}function hR(e,t){let n=j(`div`,`hooks-type-row`);n.setAttribute(`role`,`radiogroup`);for(let r of lL){let i=j(`label`,`settings-view-toggle hooks-choice`),a=j(`input`,`settings-view-checkbox`);a.type=`radio`,a.name=`hooks-type`,a.value=r.value,a.checked=e.type===r.value,a.title=r.hint,a.addEventListener(`change`,()=>{a.checked&&t(r.value)}),i.append(a,j(`span`,null,r.label)),n.append(i)}return n}function gR(e,t){let n=j(`div`,`hooks-projects`);if(t.length===0)return n.append(j(`span`,`hooks-field-hint`,oL)),n;let r=j(`label`,`settings-view-project-choice hooks-choice`),i=j(`input`,`settings-view-checkbox`);i.type=`checkbox`,i.checked=e.projects.length===0,r.append(i,j(`span`,null,oL)),n.append(r);let a=[];for(let r of t){let t=j(`label`,`settings-view-project-choice hooks-choice`),o=j(`input`,`settings-view-checkbox`);o.type=`checkbox`,o.value=r.id,o.checked=e.projects.includes(r.id),o.addEventListener(`change`,()=>{e.projects=a.filter(e=>e.checked).map(e=>e.value),i.checked=e.projects.length===0}),a.push(o),t.append(o,j(`span`,null,r.name)),r.agent!==`claude-code`&&(t.append(j(`span`,`hooks-choice-note`,r.agent)),t.title=`Not a Claude Code project: this hook will not reach its sessions.`),n.append(t)}return i.addEventListener(`change`,()=>{if(!i.checked)i.checked=e.projects.length===0;else{for(let e of a)e.checked=!1;e.projects=[]}}),n}function _R(e){let t=j(`div`,`hooks-templates`);t.append(j(`span`,`hooks-templates-label`,UI));for(let n of uL){let r=cR(`hooks-chip`,n.label,()=>bR(null,BL(n,e)));r.title=n.summary,t.append(r)}return t}function vR(e){QL&&(e?QL.show(`error`,e):QL.clear())}function yR(e){let t=_L(WL),n=yr(WL),r=oR(e.id?iL:rL,aL);r.classList.add(`hooks-editor`);let i=j(`form`,`hooks-form`);i.addEventListener(`submit`,e=>{e.preventDefault(),CR()}),i.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),SR()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),CR())}),e.id||i.append(_R(t));let a=j(`span`,`hooks-field-hint`,OL(t,e.event)),o=fR(e.matcher,``,t=>{e.matcher=t}),s=dR(`Command`,pR(e.command,t=>{e.command=t}),`Runs through the shell with the event JSON on stdin. Exit 2 blocks the action where the event allows it.`),c=dR(`URL`,fR(e.url,`http://127.0.0.1:8080/hook`,t=>{e.url=t}),`Claude Code POSTs the event JSON to it.`),l=()=>{s.hidden=e.type!==`command`,c.hidden=e.type!==`http`};l();let u=dR(`Matcher`,o,null);u.append(a);let d=()=>{let n=t.find(t=>t.name===e.event);a.textContent=OL(t,e.event),o.disabled=!!n&&!n.matcher,o.disabled&&(o.value=``,e.matcher=``)};d();let f=j(`input`,`settings-view-input hooks-timeout`);f.type=`number`,f.inputMode=`numeric`,f.min=`1`,f.max=String(vL(WL)),f.value=e.timeout,f.addEventListener(`input`,()=>{e.timeout=f.value});let p=j(`label`,`settings-view-toggle hooks-choice`),m=j(`input`,`settings-view-checkbox`);m.type=`checkbox`,m.checked=e.enabled,m.addEventListener(`change`,()=>{e.enabled=m.checked}),p.append(m,j(`span`,null,`Enabled`)),i.append(dR(`Name`,fR(e.name,`Lint after edits`,t=>{e.name=t}),null),dR(`Event`,mR(e,t,t=>{e.event=t,d()}),null),u,dR(`Type`,hR(e,t=>{e.type=t,l()}),null),s,c,dR(`Timeout (seconds)`,f,cL),dR(`Projects`,gR(e,n),null),dR(``,p,null)),QL=df(`hooks-editor-status`);let h=j(`div`,`hooks-editor-footer`),g=j(`span`,`hooks-editor-shortcut`,ZI),_=cR(`btn-dialog btn-dialog-cancel`,`Cancel`,SR),v=j(`button`,`btn-dialog btn-dialog-confirm`,e.id?`Save changes`:`Add hook`);return v.type=`submit`,$L=v,h.append(QL.element,g,_,v),i.append(h),r.append(i),r}function bR(e,t=null){YL=t||(e?LL(e):IL(_L(WL))),XL=zL(e?LL(e):IL(_L(WL))),ZL=yR(YL),PR({force:!0}),ZL.scrollIntoView({block:`nearest`});let n=ZL.querySelector(`input[type=text]`);n instanceof HTMLInputElement&&n.focus()}function xR(){YL=null,XL=null,ZL=null,QL=null,$L=null,eR=!1,aR=!0,PR({force:!0})}function SR(){!YL||!XL||!VL(YL,XL)?xR():Rf({title:YI,message:XI,confirmLabel:`Discard`,danger:!0,onConfirm:xR})}async function CR(){if(!YL||eR)return;let e=RL(YL,_L(WL),vL(WL));if(e){vR(e);return}let t=QL,n=$L;eR=!0,t?.show(`busy`,`Saving the hook.`),n&&(n.disabled=!0);let r=await lR(`save-hook`,{hook:zL(YL)});eR=!1,n&&(n.disabled=!1),t===QL&&(r?vR(r):(xR(),IR()))}function wR(e){let t=j(`details`,`hooks-preview`);t.open=nR.has(e.id),t.addEventListener(`toggle`,()=>{t.open?nR.add(e.id):nR.delete(e.id)});let n=j(`summary`,`hooks-preview-summary`,KI);n.title=qI;let r=j(`pre`,`hooks-preview-code`,TL(e));return t.append(n,r),t}function TR(e,{grouped:t=!1}={}){let n=yr(WL),r=j(`article`,`hooks-row`);r.setAttribute(`aria-label`,e.name),e.enabled===!1&&(r.dataset.state=`off`);let i=j(`div`,`hooks-row-main`),a=j(`div`,`hooks-row-head`);a.append(j(`span`,`hooks-row-name`,e.name));let o=t?e.matcher||``:NL(e);o&&a.append(j(`span`,`hooks-row-event`,o));let s=j(`code`,`hooks-row-target`,kL(e));s.title=kL(e);let c=j(`p`,`hooks-row-meta`,[AL(e.type),jL(e),ML(e,n)].filter(Boolean).join(` / `));i.append(a,s,c);let l=FL(e,n);l.length>0&&i.append(sR(`hooks-row-meta`,`Scoped to a project no longer in config: ${l.join(`, `)}`,`warn`)),i.append(wR(e));let u=iR.get(e.id);if(u){let e=df(`hooks-row-status`);e.show(u.tone,u.text),i.append(e.element)}let d=j(`div`,`hooks-row-actions`),f=j(`label`,`settings-view-toggle hooks-choice`),p=j(`input`,`settings-view-checkbox`);p.type=`checkbox`,p.checked=e.enabled!==!1,p.disabled=rR.has(e.id),p.setAttribute(`aria-label`,`${e.name} enabled`),p.addEventListener(`change`,()=>{uR(e.id,`save-hook`,{hook:HL(e)},p.checked?`Turning the hook on.`:`Turning the hook off.`)}),f.append(p,j(`span`,null,`On`));let m=cR(`hooks-btn`,`Edit`,()=>bR(e),`Edit ${e.name}`),h=cR(`hooks-btn`,JI,()=>{let t=LL({...e,name:EL(e.name)});t.id=null,bR(null,t)},`Duplicate ${e.name}`),g=cR(`hooks-btn hooks-btn-danger`,`Delete`,()=>{Rf({title:`Delete hook`,message:UL(e),confirmLabel:`Delete`,danger:!0,onConfirm:()=>{uR(e.id,`delete-hook`,{id:e.id},`Deleting the hook.`)}})},`Delete ${e.name}`);return g.disabled=rR.has(e.id),d.append(f,m,h,g),r.append(i,d),r}function ER(e){let t=j(`article`,`hooks-row hooks-row-builtin`),n=j(`div`,`hooks-row-main`);return n.append(j(`span`,`hooks-row-event`,PL(e)),j(`p`,`hooks-row-meta`,e.purpose)),t.append(n),t}function DR(){let e=oR(`Hooks`,BI),t=j(`div`,`hooks-stats`);for(let e of bL(WL))t.append(vr(`hooks`,e.label,e.value,e.tone));return e.append(t,sR(`hooks-meta`,$I)),e}function OR(){let e=j(`input`,`settings-view-input hooks-filter`);return e.type=`search`,e.value=tR,e.placeholder=WI,e.setAttribute(`aria-label`,WI),e.addEventListener(`input`,()=>{tR=e.value;let t=GL?.querySelector(`.hooks-list-yours`);t&&t.replaceWith(AR())}),e}function kR(){let e=j(`div`,`hooks-empty-state`);return e.append(sR(`hooks-empty`,HI),_R(_L(WL))),e}function AR(){let e=j(`div`,`hooks-list-yours`),t=hL(WL);if(t.length===0)return e.append(kR()),e;let n=SL(xL(t,_L(WL)),tR);if(n.length===0)return e.append(sR(`hooks-empty`,GI)),e;for(let t of wL(n)){let n=j(`div`,`hooks-group`);n.append(j(`h3`,`hooks-group-title`,t.event));let r=j(`div`,`hooks-list`);for(let e of t.hooks)r.append(TR(e,{grouped:!0}));n.append(r),e.append(n)}return e}function jR(){let e=oR(nL,null),t=cR(`hooks-btn hooks-btn-add`,`+ New hook`,()=>bR(null));t.disabled=!!YL;let n=e.querySelector(`.hooks-section-head`);return n&&n.append(t),CL(hL(WL))&&e.append(OR()),e.append(AR()),e}function MR(){let e=j(`details`,`hooks-builtin`),t=j(`summary`,`hooks-builtin-summary`);t.append(j(`span`,`hooks-section-title`,`${eL} (${gL(WL).length})`),j(`span`,`hooks-section-hint`,tL));let n=j(`div`,`hooks-list`);for(let e of gL(WL))n.append(ER(e));return e.append(t,n),e}function NR(){let e=j(`div`,`hooks-content`);return WL?fL(WL)?(e.append(sR(`hooks-warning`,pL(WL))),e):(e.append(DR()),ZL&&e.append(ZL),e.append(jR(),MR()),e):(e.append(qL?sR(`hooks-warning`,W):sR(`hooks-empty`,VI)),e)}function PR({force:e=!1}={}){if(!GL||!e&&br(GL)||(GL.replaceChildren(NR()),!aR))return;aR=!1;let t=GL.querySelector(`.hooks-btn-add`);t instanceof HTMLButtonElement&&t.focus()}function FR(e){KL=e}function IR(){if(!KL)return;JL=zd(`hooks-report`);let e=KL({type:`request-hooks-report`,requestId:JL});e!==!qL&&(qL=!e,PR())}function LR(e){GL||(GL=j(`div`,`hooks-panel`),e.append(GL),PR({force:!0}))}function RR(){PR({force:!0})}function zR(e){yL(e,JL)&&(WL=e,qL=!1,PR())}function BR(){IR()}function VR(e){return e.filter(e=>!e.hasOwnPhoneScreen).map(e=>{let t=e.label.trim();return{id:e.view,label:t,glyph:e.glyph||t.charAt(0).toUpperCase(),el:e.el}})}var HR=e=>e.ui.path;function UR({onSelectSession:e}){let t=j(`div`,`phone-board`),n=j(`header`,`phone-topbar`),r=iN({onJump:()=>{yN(r);let e=Kg(x(),null)[0]?.id;e&&a(e)},rowFor:e=>d.get(e)}),i=null;function a(e){i=e,d.get(e)?.scrollIntoView({block:`nearest`}),gN(r,e,()=>{i===e&&o(e)})}function o(t){i=null,e?.(t)}let s=j(`div`,`phone-board-list`),c=j(`div`,`phone-empty`),l=j(`p`,`phone-empty-title`,`No sessions`),u=j(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);c.append(l,u),t.append(n,s,c,r);let d=new Map,f=new Map,p=new WeakMap,m=new WeakMap,h=new WeakMap,g=0;gr(n);function _(e){let{row:t,refs:n}=Sv(`button`);t.type=`button`,t.dataset.id=e,t.addEventListener(`click`,()=>o(e));let{item:r}=Cv(t,()=>sy(e));return r.setAttribute(`role`,`listitem`),p.set(t,{refs:n,item:r}),t}function v(){let e=j(`section`,`phone-board-group`),t=PM({onAdd:ty,onForget:e=>{Hv(e),S()}}),n=j(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),m.set(e,{...t,rows:n}),e}function y(e,t,n){let r=p.get(e);if(!r)return;let{ui:i,state:a,name:o}=t;Av(e,r.refs,{ui:i,state:a,name:o,mergeStatus:i.card?.dataset.merge||``,attentionPosition:n})}function b(e,t){let n=m.get(e);n&&(FM(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function x(){return Ng(Qv())}function S(){let e=x(),t=MM(e,HR,Vv(e,HR)),n=Yg(e);g=Xg(n);let i=Kg(e,null),a=new Map(i.map(({id:e},t)=>[e,t+1]));aN(r,n,i);let o=new Set(t.order),S=t.order.join(`,`),ee=h.get(s)===S&&s.childElementCount===t.groups.length;for(let e of t.groups){let t=f.get(e.key);t||(t=v(),f.set(e.key,t)),b(t,e),ee||s.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=m.get(t);if(!r)continue;let i=h.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=d.get(t.id);e||(e=_(t.id),d.set(t.id,e)),y(e,t,a.get(t.id)??null);let n=p.get(e);n&&(i||r.rows.appendChild(n.item))}h.set(r.rows,n)}h.set(s,S);for(let[e,t]of[...f])o.has(e)||(t.remove(),f.delete(e));let te=new Set(NM(t));for(let[e,t]of[...d]){if(te.has(e))continue;let n=p.get(t);n&&n.item.remove(),d.delete(e)}let ne=t.groups.length>0,re=P.size===0;s.hidden=!ne,c.hidden=ne,Fm(c,re),l.hidden=re,u.hidden=re,r.hidden=re}function ee(e,t){let n=e.card?.dataset.id,r=n?d.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:rp(p.get(r)?.refs.glyph))}return lp(()=>{for(let[e,t]of d){let n=P.get(e),r=p.get(t);n&&r&&(r.refs.elapsed.textContent=sp(n))}}),{el:t,topBarEl:n,refresh:S,renderActivity:ee,getAttentionCount:()=>g}}var WR=`clipboard`,GR=`upload`,KR=24,qR=Object.freeze([Object.freeze({id:`esc`,label:`Esc`,bytes:`\x1B`,title:`Send Escape`}),Object.freeze({id:`tab`,label:`Tab`,bytes:` `,title:`Send Tab`}),Object.freeze({id:`left`,label:`←`,bytes:`\x1B[D`,isArrow:!0,title:`Arrow left`}),Object.freeze({id:`up`,label:`↑`,bytes:`\x1B[A`,isArrow:!0,title:`Arrow up`}),Object.freeze({id:`down`,label:`↓`,bytes:`\x1B[B`,isArrow:!0,title:`Arrow down`}),Object.freeze({id:`right`,label:`→`,bytes:`\x1B[C`,isArrow:!0,title:`Arrow right`}),Object.freeze({id:`paste`,label:`Paste`,bytes:null,action:WR,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:GR,title:`Upload a photo or file to this session`})]);function JR(e){let t=qR.find(t=>t.id===e);return t?t.bytes:null}function YR(e){return!!e&&e.action===WR}function XR(e){return!!e&&e.action===GR}function ZR(e,t,n=KR){let r=Math.abs(e)>=Math.abs(t),i=r?e:t;return Math.abs(i)<n?null:r?i>0?`right`:`left`:i>0?`down`:`up`}function QR(e,t,n=KR){let r=ZR(e,t,n);if(!r)return null;let i=r===`left`||r===`right`,a=i?e:t,o=Math.floor(Math.abs(a)/n),s=Math.sign(a)*o*n;return{arrowKeyId:r,stepCount:o,consumedX:i?s:e,consumedY:i?t:s}}var $R={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function ez(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):$R[e]??null}function tz({send:e,getSessionId:t,reportProblem:n}){let r=j(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,a=null,o=j(`button`,`phone-key phone-key-ctrl`,`Ctrl`);o.type=`button`,o.title=`Hold Ctrl for the next key you type`,o.setAttribute(`aria-pressed`,`false`),o.addEventListener(`pointerdown`,e=>e.preventDefault()),o.addEventListener(`click`,()=>c(!s())),r.appendChild(o);function s(){return o.getAttribute(`aria-pressed`)===`true`}function c(e){o.setAttribute(`aria-pressed`,String(e))}function l(){return s()?(c(!1),!0):!1}for(let t of qR){t.id===`left`&&r.appendChild(nz(e));let n=j(`button`,t.isArrow?`phone-key phone-key-arrow`:`phone-key`,t.label);n.type=`button`,n.dataset.key=t.id,n.title=t.title,t.isArrow&&n.setAttribute(`aria-label`,t.title),n.addEventListener(`pointerdown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>u(t,n)),r.appendChild(n)}function u(t,r){XR(t)?d(r):YR(t)?iz(e,n):e(JR(t.id))}function d(e){a=e,i||(i=j(`input`,`phone-file-picker`),i.type=`file`,i.hidden=!0,i.addEventListener(`change`,f),r.appendChild(i)),i.click()}function f(){let e=i;if(!e)return;let r=e.files?e.files[0]:null;if(e.value=``,!r)return;let o=t?.();o?p(o,r,a):n(`No session is open to upload to.`)}async function p(e,t,n){n&&(n.disabled=!0),await iS(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:l}}function nz(e){let t=j(`button`,`phone-key phone-arrow-pad`,`Arrows`);t.type=`button`,t.title=`Swipe to send arrow keys`;let n=null,r=null;t.addEventListener(`pointerdown`,e=>{e.preventDefault(),r===null&&(t.setPointerCapture(e.pointerId),r=e.pointerId,n={x:e.clientX,y:e.clientY})}),t.addEventListener(`pointermove`,t=>{if(t.pointerId!==r||!n)return;let i=QR(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(JR(i.arrowKeyId));n={x:n.x+i.consumedX,y:n.y+i.consumedY}}});let i=e=>{e.pointerId===r&&(r=null,n=null)};return t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i),t}var rz=`Paste needs clipboard permission.`;function iz(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(rz);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(rz)):t(`Paste is unavailable in this browser.`)}function az({onBack:e,onShowChanges:t}){let n=j(`div`,`phone-terminal`),r=j(`header`,`phone-topbar phone-terminal-bar`),i=j(`button`,`phone-back`,`‹`);i.type=`button`,i.setAttribute(`aria-label`,`Back to board`),i.addEventListener(`click`,()=>e?.());let a=j(`div`,`phone-terminal-identity`),o=j(`span`,`phone-terminal-name`);o.title=`Double-tap to rename`,o.addEventListener(`dblclick`,()=>ne());let s=j(`span`,`session-task-title phone-terminal-title`);U_(s,()=>re());let c=j(`span`,`phone-terminal-badge`);c.innerHTML=`<span class="phone-terminal-glyph" aria-hidden="true"></span><span class="phone-terminal-label"></span><span class="phone-terminal-elapsed" aria-hidden="true"></span>`;let l=M(c,`.phone-terminal-glyph`,`span`),u=M(c,`.phone-terminal-label`,`span`),d=M(c,`.phone-terminal-elapsed`,`span`);u.before(o),a.append(s,c);let f=j(`button`,`phone-changes`);f.append(nf(ef)),f.type=`button`,f.title=`Show this session's code changes`,f.setAttribute(`aria-label`,`Show this session's code changes`),f.addEventListener(`click`,()=>t?.());let p=j(`div`,`phone-terminal-actions`);r.append(i,a,f,p);let m=j(`div`,`phone-card-slot`),h=j(`div`,`phone-empty`);h.innerHTML=`<p class="phone-empty-title">No session selected</p><p class="phone-empty-desc">Select a session from the board to watch it here.</p>`;let g=df(`phone-key-status m-0 px-3 py-1`),{element:_,takeHeldControl:v}=tz({send:S,getSessionId:()=>y,reportProblem:e=>g.show(`error`,e)});n.append(r,m,h,g.element,_);let y=null,b=null,x=null;function S(e){let t=y?P.get(y):null;t&&(BC(t,e)?g.clear():g.show(`error`,W))}function ee(){let e=y?P.get(y):null;e?.term&&e.term.focus()}m.addEventListener(`click`,ee);function te(e){let t=ez(e);return!t||!v()?!1:(S(t),!0)}m.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||te(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),m.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&te(e.data.slice(-1))&&(e.stopPropagation(),(y?P.get(y):null)?._resetSoftKeyboardBuffer?.())},!0);function ne(){let e=y?P.get(y):null;e&&y&&Y_(e,y,{returnsFocusToTerminal:!1})}function re(){let e=y?P.get(y):null;e&&y&&K_(e,y)}function C(){let e=y?P.get(y):null,t=!!e;if(h.hidden=t,m.hidden=!t,_.hidden=!t,a.hidden=!t,f.hidden=!t,!t){r.removeAttribute(`data-state`),r.removeAttribute(`data-monitoring`),r.removeAttribute(`data-prompt`);return}let n=e.currentState||A.DORMANT;wv(r,{glyph:l,label:u},n,e.awaitingBackgroundTasks,e.pendingPromptKind);let i=e.card?.dataset.session||y;J_(o)||(o.textContent=i),s.dataset.sessionName=i??``,G_(s,e.taskTitle),d.textContent=sp(e)}function ie(){x&&=(delete x.renameTargetEl,delete x.titleTargetEl,null),o.replaceChildren(),b&&=(Cr(b),b.parentElement===p&&b.remove(),null)}function ae(e){let t=P.get(e);t&&(y===e&&Nr()===e&&t.card.parentElement===m||(ie(),y=e,Pr(t,e,m,{className:`phone-centered`}),b=M(t.card,`.session-actions`,`div`),Sr(b,p),t.renameTargetEl=o,t.titleTargetEl=s,x=t),C())}function oe(){ie(),Nr()===y&&Fr(),y=null,C()}function se(){if(!y){C();return}let e=P.get(y);e?e.card.parentElement===m?C():(ae(y),n.hidden||YC(e,y,!0)):oe()}function ce(){let e=y;e&&YC(P.get(e),e,!1)}function le(){se();let e=y;if(!e)return;let t=P.get(e);t&&(YC(t,e,!0),DM(e))}return lp(()=>{let e=y?P.get(y):null;e&&(d.textContent=sp(e))}),C(),{el:n,show:ae,clear:oe,refresh:se,reveal:le,unview:ce,getSessionId:()=>y}}var oz=`board`,sz=`terminal`,cz=`changes`,lz=Object.freeze({[cz]:sz}),uz=Object.freeze([{id:oz,label:`Focus`,glyph:`▤`},{id:sz,label:`Terminal`,glyph:`▸`}]),dz=[],fz=new Map,pz=null,mz=new Map,hz=new Map,gz=new Map,_z=null,vz=null,yz=null,bz=null,xz=null,Sz=new Map,Cz=new Set,wz={},Tz=!1,Ez=120,Dz=0,Oz=0,kz=0,Az=null;function jz(){Dz=0,Oz=0}function Mz(){let e=window.visualViewport;pz&&(!Tz||!e?pz.removeAttribute(`data-keyboard`):(pz.style.setProperty(`--phone-vh`,`${e.height}px`),pz.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==Oz&&(Oz=e.width,Dz=0),Dz=Math.max(Dz,e.height),Dz-e.height>Ez?pz.dataset.keyboard=`open`:pz.removeAttribute(`data-keyboard`)))}function Nz(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=j(`button`,n);i.type=`button`;let a=j(`span`,`phone-nav-glyph`,t);a.setAttribute(`aria-hidden`,`true`),i.append(a,j(`span`,`phone-nav-label`,e));let o=j(`span`,r);return o.setAttribute(`aria-hidden`,`true`),o.hidden=!0,i.appendChild(o),i}function Pz(e){return e?.querySelector(`.phone-nav-dot`)||null}function Fz(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function Iz(){let e=[];for(let t of dz){if(Cz.has(t.id))continue;let n=gz.get(t.id)||!1;e.push(n),Fz(Pz(Sz.get(t.id)),n)}Fz(Pz(bz),n_(e))}function Lz(){let e=j(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of dz){let n=Nz(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=Cz.has(t.id),n.addEventListener(`click`,()=>{Rz(!1),rB(t.id)}),Sz.set(t.id,n),e.appendChild(n)}return e}function Rz(e){xz&&bz&&(xz.hidden=!e,bz.setAttribute(`aria-expanded`,String(e)))}function zz(){return!!xz&&!xz.hidden}function Bz(){let e=j(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of uz){let n=Nz(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>rB(t.id)),mz.set(t.id,n),e.appendChild(n)}return bz=Nz(`More`,`⋯`),bz.setAttribute(`aria-expanded`,`false`),bz.addEventListener(`click`,()=>Rz(!zz())),e.appendChild(bz),xz=Lz(),e.appendChild(xz),e}function Vz(e,t,n){let r=j(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),hz.set(e,r),r}function Hz(){if(pz)return;_z=UR({onSelectSession:Wz}),ep((e,t)=>{Tz&&_z?.renderActivity(e,t)}),vz=az({onBack:()=>rB(oz),onShowChanges:()=>rB(cz)}),yz=j(`div`,`phone-review`);let e=j(`div`,`phone-screens`),t={[oz]:_z.el,[sz]:vz.el};for(let n of uz)e.appendChild(Vz(n.id,n.label,t[n.id]));e.appendChild(Vz(cz,`Changes`,Uz(yz)));for(let t of dz){let n=j(`div`,`phone-panel phone-${t.id}`);fz.set(t.id,n),e.appendChild(Vz(t.id,t.label,n))}pz=j(`div`,`phone-shell`),pz.id=`phone-shell`,pz.append(e,Bz()),document.body.appendChild(pz),Iz(),window.visualViewport?.addEventListener(`resize`,Mz),window.visualViewport?.addEventListener(`scroll`,Mz),window.addEventListener(`popstate`,$z),document.addEventListener(`click`,e=>{zz()&&xz&&bz&&e.target instanceof Node&&(xz.contains(e.target)||bz.contains(e.target)||Rz(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&zz()&&Rz(!1)})}function Uz(e){let t=j(`div`,`phone-changes-screen`),n=j(`header`,`phone-topbar phone-changes-bar`),r=j(`button`,`phone-back`,`‹`);return r.type=`button`,r.setAttribute(`aria-label`,`Back to terminal`),r.addEventListener(`click`,()=>rB(sz)),n.append(r,j(`span`,`phone-changes-title`,`Changes`)),t.append(n,e),t}function Wz(e){if(P.has(e)){if(!_z||!vz)throw Error(`Phone shell is not built`);Yv(e,`dormant-fallback`),Xv(e),vz.show(e),rB(sz)}}function Gz(e){return lz[e]??e}function Kz(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:Gz(e)}}function qz(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function Jz(e){return qz(e)?e.glimmervoidNested===!0?2:1:0}function Yz(e){return e===oz?0:lz[e]||wz.canGoBack?.(e)?2:1}function Xz(e,t){let n=t?e:Gz(e);return qz(history.state)===n&&Jz(history.state)===(t?2:1)}function Zz(){if(!Tz||Az!==null)return;let e=jr.snapshot().phoneScreen||oz,t=Yz(e);if(kz>t){Az=location.href,history.go(t-kz),kz=t;return}let n=kz===2;kz>0&&!Xz(e,n)&&history.replaceState(Kz(e,n),``),kz===0&&t>0&&(history.pushState(Kz(e,!1),``),kz=1),kz===1&&t===2&&(history.pushState(Kz(e,!0),``),kz=2)}function Qz(){let e=qz(history.state);return e&&nB(e)?(kz=Jz(history.state),e):(e&&history.replaceState(null,``),kz=0,oz)}function $z(e){if(!Tz)return;if(Az!==null){history.replaceState(history.state,``,Az),Az=null,Zz();return}let t=qz(e.state),n=t&&nB(t)?t:oz;kz=Jz(e.state);let r=jr.snapshot().phoneScreen;kz<2&&n===r&&wz.canGoBack?.(r)&&wz.onBack?.(r),tB(n),Zz()}function eB(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function tB(e){if(!bz||!vz)throw Error(`Phone shell is not built`);jr.dispatch(`setPhoneScreen`,e),Rz(!1);for(let[t,n]of hz)n.hidden=t!==e;wz.onScreenShown?.(e),eB(mz,Gz(e));let t=Sz.has(e);t&&bz.setAttribute(`aria-current`,`page`),t||bz.removeAttribute(`aria-current`),eB(Sz,e),e===sz?vz.reveal():vz.unview()}function nB(e){return hz.has(e)&&!Cz.has(e)}function rB(e){pz&&nB(e)&&(tB(e),Zz())}function iB(e){dz.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id)),xz?.append(...dz.flatMap(e=>Sz.get(e.id)??[]))}function aB(e){wz=e||{},dz=wz.panels||[]}function oB({sessionId:e,linkedScreenId:t}={}){if(Tz)return;if(Hz(),!pz||!_z||!vz)throw Error(`Phone shell is not built`);Tz=!0,pz.hidden=!1;for(let e of wz.headerControls||[])Sr(e,_z.topBarEl);zE(yz);for(let e of dz)Sr(e.el,fz.get(e.id)),e.el.hidden=!1;Mz(),e&&vz.show(e);let n=Qz();dB(),t&&nB(t)?rB(t):e&&n===oz?rB(sz):(tB(n),Zz())}function sB(){if(Tz){if(!pz||!vz)throw Error(`Phone shell is not built`);Tz=!1,vz.clear(),zE(null);for(let e of dz)Cr(e.el);for(let e of wz.headerControls||[])Cr(e);Rz(!1),pz.hidden=!0,pz.removeAttribute(`data-keyboard`),jz(),kz>0&&history.go(-kz),kz=0,Az=null}}function cB(e){return!Tz||!_z||!vz||!P.has(e)?!1:(Wz(e),sM(e))}function lB(){return Tz}function uB(){return Tz&&vz?vz.getSessionId():null}function dB(){if(!Tz)return;if(!_z||!vz)throw Error(`Phone shell is not built`);gB(),_z.refresh(),vz.refresh(),Gz(jr.snapshot().phoneScreen||oz)===sz&&!vz.getSessionId()&&rB(oz);let e=Pz(mz.get(oz));e&&(e.hidden=_z.getAttentionCount()===0)}function fB(e){return Tz?(Wz(e),!0):!1}function pB(e){return!Tz||!nB(e)?!1:(rB(e),!0)}function mB(e,t){t&&Cz.delete(e),t||Cz.add(e);let n=Sz.get(e);n&&(n.hidden=!t);let r=hz.get(e);r&&!t&&(r.hidden=!0),Iz(),!t&&Tz&&jr.snapshot().phoneScreen===e&&rB(oz)}function hB(e,t){gz.set(e,typeof t==`string`&&t?t:t===!0),Iz()}function gB(){if(!vz)throw Error(`Phone shell is not built`);if(vz.getSessionId())return;let e=Zv();e&&(vz.show(e),Xv(e,{rememberFocus:!1}))}var _B={MERGE:`a merge commit`,SQUASH:`squash and merge`,REBASE:`rebase and merge`},vB=new Set([`FAILURE`,`ERROR`]);function yB(e){return _B[e]}function bB(e){return e.state===`MERGED`?`Already merged`:e.state===`OPEN`?e.isDraft?`Drafts cannot be merged`:e.isInMergeQueue?`Already in the merge queue`:e.mergeable===`CONFLICTING`||e.mergeStateStatus===`DIRTY`?`Resolve the merge conflicts first`:e.checks.failing.length>0||e.checks.state!==null&&vB.has(e.checks.state)?`Checks are failing`:e.stage===`ready`?null:`Not ready to merge yet`:`Closed`}function xB(e){return e.state===`MERGED`?`merged`:e.isDraft?`draft`:e.mergeable===`CONFLICTING`||e.mergeStateStatus===`DIRTY`?`conflicts`:e.mergeStateStatus===`BEHIND`?`behind`:e.checks.state===`FAILURE`||e.checks.state===`ERROR`?`checks-failing`:e.reviewDecision===`CHANGES_REQUESTED`?`changes-requested`:e.unresolvedThreads>0?`unresolved-threads`:e.checks.state===`PENDING`||e.checks.state===`EXPECTED`?`checks-pending`:e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?`needs-approval`:e.mergeable===`MERGEABLE`&&[`CLEAN`,`HAS_HOOKS`,`UNSTABLE`].includes(e.mergeStateStatus)?`ready`:`unknown`}function SB(e){let t=O.parse({...e,key:`${e.repo}#${e.number}`,stage:`unknown`});return{...t,stage:xB(t)}}var CB=`> [!NOTE]
|
|
167
|
+
> Automated review. Not written by a human.`,wB=fe.options.join(`|`),TB=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${wB})\*\*`;function EB(e){return[...e.matchAll(new RegExp(TB,`g`))].flatMap(e=>{let t=fe.safeParse(e[2]);return t.success?[t.data]:[]})}function DB(e){let t=new RegExp(String.raw`^${TB}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=fe.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function OB(e){let t=e.trimStart();return t.startsWith(`> [!NOTE]
|
|
168
|
+
> Automated review. Not written by a human.`)?t.slice(53).trim():e.trim()}var kB=`(line not in the diff)`,AB=String.raw`- ${TB}`,jB=String.raw`\*\*\x60([^\x60\n]+)\x60\*\* ${kB.replace(/[()]/g,`\\$&`)}`,MB=new RegExp(String.raw`^(?:${AB}|${jB})`,`gm`),NB=new RegExp(String.raw`^${AB}\s*(?:\x60([^\x60\n]+)\x60:\s*)?`),PB=new RegExp(String.raw`^${jB}\s*`);function FB(e){return fe.options.find(t=>e.includes(t))??null}function IB(e){let t=NB.exec(e);if(t)return{severity:fe.parse(t[2]),location:t[3]??null,body:e.slice(t[0].length).trim(),markdown:e};let n=PB.exec(e),r=n?e.slice(n[0].length).trim():e;return{severity:FB(EB(r)),location:n?.[1]??null,body:r,markdown:e}}function LB(e){let t=OB(e),n=t.search(MB);return(n===-1?t:t.slice(0,n)).trim()}function RB(e){let t=OB(e),n=[...t.matchAll(MB)].map(e=>e.index);return n.map((e,r)=>t.slice(e,n[r+1]).trim()).filter(Boolean).map(IB)}function zB(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function BB(e,t){if(!e?.error)return null;let n=e.error.trim().replace(/[.!]+$/,``),r=e.incident?.trim().replace(/[.!]+$/,``),i=`Could not reach GitHub: ${n}.${r?` GitHub reports: ${r}.`:``}`;if(e.isRefreshing)return`${i} Refreshing.`;if(typeof e.nextAttemptAt!=`number`)return i;let a=Math.max(0,Math.ceil((e.nextAttemptAt-t)/1e3));return a===0?`${i} Retrying now.`:e.retry?`${i} Retrying in ${a}s (${e.retry.attempt} of ${e.retry.limit}).`:`${i} Next try in ${a>=60?`${Math.ceil(a/60)} min`:`${a}s`}.`}function VB(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}function HB(e,t){let n=e?.lastRefreshedAt??e?.lastSyncAt??null;if(n===null)return null;let r=Math.max(0,t-n);return!e?.error&&r<=3e5?null:r<6e4?`Last updated less than a minute ago.`:r<36e5?`Last updated ${Math.floor(r/6e4)} min ago.`:`Last updated ${Math.floor(r/36e5)} h ago.`}function UB(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i),tone:r?`error`:n?`busy`:null}}function WB(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=GB(e,!1,``,!0,n).statusText;if(e.isKeepMergeableFixInFlight)return{text:`Repairing`,tone:`warn`,title:r};let i=e.keepMergeableAttempt;return!i||i.outcome===`pushed`||i.outcome===`stopped`?null:{text:`Repair failed`,tone:`danger`,title:r}}function GB(e,t,n=``,r=!0,i=``){let a=e.keepMergeableAttempt,o=e.keepMergeable?`On`:`Off`;if(e.keepMergeable&&a&&a.outcome!==`pushed`&&a.outcome!==`stopped`){let e=i?` (${i})`:``;o=`Keep mergeable failed: ${a.reason??`The attempt produced no repair`}${e}`}return e.isKeepMergeableFixInFlight&&(o=`Keep mergeable is running`),UB(e,!!e.keepMergeable,t,n,o,r)}function KB(e){return e?.isKeepMergeableEnabled!==!1}function qB(e){return e?.isMergeQueueEnabled!==!1}function JB(e,t,n){return e?t?`Repair pushed, waiting for you`:n?`On, the last merge failed and retries an hour later once it is ready`:`On, merges as soon as it is ready`:`Not queued`}function YB(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return UB(e,i,t,n,JB(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}var XB=[`Needs you`,`Waiting`,`Ready to merge`,`Drafts`,`Merged today`],ZB=[`Ready to merge`,`Needs you`,`Waiting`,`Drafts`,`Merged today`],QB={conflicts:`Needs you`,behind:`Needs you`,"checks-failing":`Needs you`,"changes-requested":`Needs you`,"unresolved-threads":`Needs you`,"checks-pending":`Waiting`,"needs-approval":`Waiting`,unknown:`Waiting`,ready:`Ready to merge`,draft:`Drafts`,merged:`Merged today`},$B={merged:`Merged`,draft:`Draft`,conflicts:`Merge conflicts`,behind:`Behind base`,"checks-failing":`Checks failing`,"changes-requested":`Changes requested`,"unresolved-threads":`Unresolved threads`,"checks-pending":`Checks running`,"needs-approval":`Needs approval`,ready:`Ready to merge`,unknown:`Status unknown`},eV={merged:`muted`,draft:`muted`,conflicts:`danger`,behind:`warn`,"checks-failing":`danger`,"changes-requested":`warn`,"unresolved-threads":`warn`,"checks-pending":`wait`,"needs-approval":`wait`,ready:`ok`,unknown:`muted`},tV={merged:`merged`,draft:`draft`,conflicts:`conflict`,behind:`behind`,"checks-failing":`failed`,"changes-requested":`changes-requested`,"unresolved-threads":`thread`,"checks-pending":`running`,"needs-approval":`reviewer`,ready:`ready`,unknown:`unknown`};function nV(e){let t=ht.safeParse(e);return t.success?t.data:null}function rV(e){let t=e.filter(e=>e.state===`OPEN`&&!e.isCrossRepository),n=new Map(t.map(e=>[JSON.stringify([e.repo.toLowerCase(),e.headRefName]),e])),r=new Map,i=[];for(let t of e){let e=t.state===`OPEN`?n.get(JSON.stringify([t.repo.toLowerCase(),t.baseRefName])):void 0;if(!e||e.key===t.key){i.push(t);continue}let a=r.get(e.key)??[];a.push(t),r.set(e.key,a)}let a=[],o=new Set;for(let t of[...i,...e]){if(o.has(t.key))continue;let e=[],n=[{pr:t,parentKey:null,depth:0}];for(;n.length>0;){let t=n.pop();if(!t||o.has(t.pr.key))continue;o.add(t.pr.key),e.push(t);let i=r.get(t.pr.key)??[];for(let e=i.length-1;e>=0;--e)n.push({pr:i[e],parentKey:t.pr.key,depth:t.depth+1})}a.push({root:t,rows:e})}return a}function iV(e){return XB[e.rows.reduce((e,{pr:t})=>Math.min(e,XB.indexOf(QB[t.stage])),XB.length-1)]}function aV(e){let t=new Map(XB.map(e=>[e,{title:e,prs:[],rows:[]}]));for(let n of rV(e)){let e=t.get(iV(n));if(e)for(let t of n.rows)e.rows.push(t),e.prs.push(t.pr)}return ZB.flatMap(e=>t.get(e)??[])}function oV(e){return $B[e]}function sV(e){return eV[e]}function cV(e){return tV[e]}function lV(e){return e.checks.failing.length>0?{label:`Checks`,tone:`danger`,icon:`failed`,text:`${e.checks.failing.length} failing`,items:e.checks.failing}:e.checks.state===`FAILURE`||e.checks.state===`ERROR`?{label:`Checks`,tone:`danger`,icon:`failed`,text:`Failing`}:e.checks.pendingCount>0?{label:`Checks`,tone:`wait`,icon:`running`,text:`${e.checks.pendingCount} running`}:e.checks.state===`PENDING`||e.checks.state===`EXPECTED`?{label:`Checks`,tone:`wait`,icon:`running`,text:`Running`}:e.checks.state===`SUCCESS`?{label:`Checks`,tone:`ok`,icon:`passed`,text:`Passing`}:{label:`Checks`,tone:`muted`,icon:`none`,text:`No checks`}}function uV(e){return`${e} ${e===1?`approval`:`approvals`}`}function dV(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function fV(e){let t=e.reviewRequests.length>0?`Requested: ${dV(e)}`:`Approval required`;return e.approvals>0?`${t}, ${uV(e.approvals)}`:t}function pV(e){let t=e.approvals>0?uV(e.approvals):`Approved`;return e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`${t}, merge blocked`}:{label:`Review`,tone:`ok`,icon:`passed`,text:t}}function mV(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?pV(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:fV(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${dV(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function hV(e,t){return t?e.lastAuthor!==t:null}function gV(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function _V(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function vV(e,t){let n=hV(e,t);return n===null?null:n?{tone:`warn`,icon:`your-turn`,text:`Waiting on you`}:{tone:`wait`,icon:`reviewer`,text:`Waiting on reviewer`}}function yV(e,t){return[...e.threads].sort((e,n)=>{let r=Number(hV(n,t)===!0)-Number(hV(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:gV(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:_V(e),lastActivityAt:e.lastActivityAt,waiting:vV(e,t),isWaitingOnYou:hV(e,t)===!0}))}function bV(e,t){if(e.unresolvedThreads===0)return{label:`Threads`,tone:`ok`,icon:`passed`,text:`None open`};let n=`${e.unresolvedThreads} unresolved`;if(!t||e.threads.length===0)return{label:`Threads`,tone:`warn`,icon:`thread`,text:n};let r=e.threads.filter(e=>hV(e,t)).length;return r===0?{label:`Threads`,tone:`wait`,icon:`thread`,text:`${n}, all waiting on reviewers`}:{label:`Threads`,tone:`warn`,icon:`your-turn`,text:`${n}, ${r} waiting on you`}}function xV(e){return e.mergeable===`CONFLICTING`||e.mergeStateStatus===`DIRTY`?{label:`Conflicts`,tone:`danger`,icon:`conflict`,text:`Conflicts with ${e.baseRefName}`}:e.mergeable===`MERGEABLE`?{label:`Conflicts`,tone:`ok`,icon:`passed`,text:`None`}:{label:`Conflicts`,tone:`muted`,icon:`unknown`,text:`Not computed yet`}}function SV(e){let t=e.behindBy!==null&&e.behindBy>0;return e.mergeStateStatus===`BEHIND`?{label:`Base`,tone:`warn`,icon:`behind`,text:t?`${e.behindBy} behind ${e.baseRefName}`:`Behind ${e.baseRefName}`}:e.behindBy===null?{label:`Base`,tone:`muted`,icon:`unknown`,text:`Unknown`}:t?{label:`Base`,tone:`muted`,icon:`behind`,text:`${e.behindBy} behind ${e.baseRefName}, update not required`}:{label:`Base`,tone:`ok`,icon:`passed`,text:`Up to date with ${e.baseRefName}`}}var CV={APPROVED:{text:`Approved`,tone:`ok`,icon:`passed`},CHANGES_REQUESTED:{text:`Requested changes`,tone:`warn`,icon:`changes-requested`},COMMENTED:{text:`Commented`,tone:`muted`,icon:`thread`},DISMISSED:{text:`Dismissed`,tone:`muted`,icon:`discarded`},PENDING:{text:`Pending`,tone:`wait`,icon:`running`}};function wV(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=CV[e.state]??{text:e.state.toLowerCase().replaceAll(`_`,` `),tone:`muted`,icon:`unknown`};return{reviewer:e.reviewer??`a deleted account`,text:t.text,tone:t.tone,icon:t.icon,submittedAt:e.submittedAt}})}var TV={danger:0,warn:1,wait:2,muted:3,ok:4};function EV(e,t=null){if(e.state===`MERGED`)return[];let n=[lV(e),mV(e),bV(e,t),xV(e),SV(e)],r=e.autoRebase?[DV(e,e.autoRebase)]:[],i=e.mergeQueueFailure?[{label:`Merge when ready`,tone:`danger`,icon:`failed`,text:`Merge failed: ${e.mergeQueueFailure.message}`}]:[];return[...n,...r,...i].toSorted((e,t)=>TV[e.tone]-TV[t.tone])}function DV(e,t){return t.outcome===`rebased`?{label:`Auto-rebase`,tone:`ok`,icon:`passed`,text:t.message}:{label:`Auto-rebase`,tone:e.mergeStateStatus===`BEHIND`?`danger`:`warn`,icon:`failed`,text:t.message}}function OV(e){return e?e.configured?e.error&&e.prs.length===0?`Pull requests will show here once GitHub answers.`:`No open or recently merged pull requests found.`:`Enable Team review and set its GitHub organization in settings to see your pull requests.`:`Waiting for your pull requests.`}function kV(e,t=0){if(!e)return[];let n=BB(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}function AV(e,t){return e.flatMap(e=>{let n=t(e.key);if(!n)return[];let r=e.key.slice(0,e.key.lastIndexOf(`#`));return[{...SB({...n,repo:r}),...e}]})}function jV(e){let t=new Map;for(let n of e)for(let e of n.links){let r=Rn(e),i=t.get(r)??[];i.at(-1)?.id!==n.id&&(i.push({id:n.id,title:n.title}),t.set(r,i))}return t}function MV(e,t){if(!e)return[];let n=new Set(e.filter(e=>e.state===`OPEN`).map(e=>e.key));return t.filter(e=>e.state===`MERGED`&&n.has(e.key))}var NV=3;function PV(e){if(e.length===1)return{message:`Merged ${e[0].key}`,detailLines:[e[0].title]};let t=e.slice(0,NV).map(e=>`${e.key} ${e.title}`),n=e.length-t.length,r=n>0?[...t,`and ${n} more`]:t;return{message:`Merged ${e.length} pull requests`,detailLines:r}}var FV={isVisible:!1,isDisabled:!0,statusText:``,tone:null},IV={merged:{statusText:`Merged on GitHub. Refreshing the list.`,tone:`ok`},queued:{statusText:`Added to the merge queue. Refreshing the list.`,tone:`ok`},"auto-merge":{statusText:`Auto-merge enabled. GitHub merges it once its requirements pass.`,tone:`ok`},unconfirmed:{statusText:`GitHub accepted the request but did not confirm a merge. Check GitHub.`,tone:null}};function LV(e,t){if(e.state!==`OPEN`)return FV;let n=t?.head===e.headRefOid?t:void 0;if(n?.phase===`pending`)return{isVisible:!0,isDisabled:!0,statusText:`Merging on GitHub`,tone:`busy`};if(n&&n.phase!==`failed`)return{isVisible:!0,isDisabled:!0,...IV[n.phase]};let r=bB(e);return r?{isVisible:!0,isDisabled:!0,statusText:r,tone:null}:n?.phase===`failed`?{isVisible:!0,isDisabled:!1,statusText:n.text,tone:`error`}:{isVisible:!0,isDisabled:!1,statusText:`Merges into ${e.baseRefName} with ${yB(e.mergeMethod)}`,tone:null}}function RV(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${yB(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function zV(e){let t=vt.safeParse(e);if(!t.success)return null;let n=e&&typeof e==`object`&&`requestId`in e?e.requestId:null;return typeof n==`string`?{...t.data,requestId:n}:null}function BV(e,t){if(!e)return null;let n=e=>{let n=t(e.key);return n?{...e,checksState:n.rollupState,reviewDecision:we(n.reviewDecision,n.opinionatedWriterReviewStates),isDraft:n.isDraft,liveHead:n.headRefOid,prStage:SB(n).stage}:e};return{...e,drafts:e.drafts.map(n),inFlight:e.inFlight.map(n),queued:e.queued.map(n),handReview:e.handReview.map(n)}}var VV={"direct-request":`Needs you`,"team-request":`Ready`,"changes-requested":`Author to fix`,"checks-failing":`Checks failing`,"checks-pending":`Checks running`,draft:`Draft`,"review-available":`Ready`,approved:`Approved`};function HV(e){return e.isDraft?{band:`not-ready`,reason:`draft`}:e.reviewDecision===`CHANGES_REQUESTED`?{band:`waiting-on-author`,reason:`changes-requested`}:e.checksState===`FAILURE`||e.checksState===`ERROR`?{band:`waiting-on-author`,reason:`checks-failing`}:e.checksState===`PENDING`||e.checksState===`EXPECTED`?{band:`not-ready`,reason:`checks-pending`}:e.requestSource===`direct`&&e.reviewDecision===`REVIEW_REQUIRED`?{band:`blocking-others`,reason:`direct-request`}:e.reviewDecision===`APPROVED`?{band:`actionable`,reason:`approved`}:{band:`actionable`,reason:e.requestSource===`direct`?`review-available`:`team-request`}}var UV={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`}},WV={APPROVED:{label:`You approved`,tone:`ok`,icon:`passed`},CHANGES_REQUESTED:{label:`You requested changes`,tone:`wait`,icon:`changes-requested`},COMMENTED:{label:`You commented`,tone:`muted`,icon:`thread`}};function GV(e){let t=(e.githubReviews??[]).filter(e=>e.isViewer).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!e.postedEvent)return t?WV[t.state]:null;if(!t)return UV[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?UV[e.postedEvent]:WV[t.state]}var KV={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function qV(e){let{reason:t}=HV(e),n=KV[t];return n?{text:VV[t],icon:n}:null}function JV(e){return qV(e)?.text??null}var YV={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`},handReview:{tone:`warn`,icon:`fork`,meaning:`From a fork`}};function XV(e,t){let n=JV(t);return n?`${e}, ${n}`:e}function ZV(e){if(Te(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===wH(e))}var QV={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function $V(e,t){if(e.prStage)return{tone:sV(e.prStage),icon:cV(e.prStage),meaning:oV(e.prStage)};let n=YV[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:XV(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:XV(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=ZV(e)?GV(e):null;return t?{tone:t.tone,icon:t.icon,meaning:t.label}:{tone:`ok`,icon:`passed`,meaning:`Others reviewed`}}if(t===`posted`&&`reviewedHead`in e){let t=GV(e);return t?{tone:t.tone,icon:t.icon,meaning:t.label}:{tone:`muted`,icon:`none`,meaning:`Posted`}}if(t===`attention`&&`status`in e)return e.status===`error`?{tone:`danger`,icon:`failed`,meaning:`Review failed`}:{tone:`warn`,icon:`stale`,meaning:`Out of date`};let r=qV(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&nH(e)?QV:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function eH(e){let t=e.viewerThreads;return t!==void 0&&t.total>0&&t.resolved===t.total}function tH(e){return e.status===`posted`&&nH(e)}function nH(e){if(!eH(e)||Te(e))return!1;let t=wH(e);return e.status===`posted`&&e.postedEvent===`APPROVE`&&e.reviewedHead===t?!1:!(e.githubReviews??[]).some(e=>e.isViewer&&e.state===`APPROVED`&&e.commit===t)}function rH(e){return!e||e.total===0?null:e.total===1?e.resolved===1?`Your 1 comment resolved`:`Your 1 comment unresolved`:e.resolved===e.total?`All ${e.total} of your comments resolved`:`${e.resolved} of ${e.total} of your comments resolved`}function iH(e){return`${e} ${e===1?`comment`:`comments`}`}function aH(e,t,n){let r=[`${QH(e.repo,e.number)}: ${e.title}`],i=`reviewedHead`in e?e.assessment?.goal.trim():``;if(i&&r.push(i),r.push($V(e,t).meaning),n.opened&&r.push(`Opened ${n.opened}`),n.reviewed&&r.push(`Reviewed ${n.reviewed}`),n.posted&&r.push(`Posted ${n.posted}`),!(`reviewedHead`in e))return r.join(`
|
|
169
|
+
`);let a=rH(e.viewerThreads);a&&r.push(a);let o=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${gH(e.verdict)}, ${iH(o)}`);let s=MH(e);s&&r.push(`You ${vH[s.state]} at ${le(s.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(gU(e));let c=IH(e,{isViewerShown:t!==`posted`});for(let[e,t]of c.entries())r.push(FH(t.text,n.githubReviews?.[e]??null));return r.join(`
|
|
170
|
+
`)}function oH(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}var sH=new Set([`approve`,`approve-only`,`comment`]);function cH({action:e,outcomeText:t,pullRequest:n,warning:r,isActedSelected:i}){let a=`${n}: ${oH(t)}`;return r.trim()?{statusText:t,shouldAdvance:!1,notice:{text:`${a} ${oH(r)}`,tone:`error`}}:{statusText:t,shouldAdvance:i,notice:i&&sH.has(e)?{text:a,tone:`ok`}:null}}function lH(e,t,n){return n?QH(e,t):`#${t}`}var uH={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},dH={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},fH=`lanes-team-review`,pH=`team-review-enabled`,mH=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),hH={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function gH(e){return hH[e]}var _H=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),vH=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),yH=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),bH=Object.freeze({approve:`Approved on GitHub`,"approve-only":`Approved on GitHub`,comment:`Comment posted on GitHub`,discard:`Marked not mine. Not reviewed again until you re-run it.`,requeue:`Queued. The review starts as soon as a slot is free.`,"resolve-thread":`Thread resolved on GitHub`}),xH=Object.freeze({approve:`Posting the approval`,"approve-only":`Posting the approval`,comment:`Posting the comment`,discard:`Marking not mine`,requeue:`Queueing the review`,"resolve-thread":`Resolving thread`});function SH(e){let t={ready:[],noReviewNeeded:[],inReview:[],queued:[],handReview:[],attention:[],posted:[],discarded:[]};if(!e)return t;let n={"blocking-others":[],actionable:[],"waiting-on-author":[],"not-ready":[]},r={"blocking-others":[],actionable:[],"waiting-on-author":[],"not-ready":[]},i=[`blocking-others`,`actionable`,`waiting-on-author`,`not-ready`],a=new Set(e.inFlight.map(e=>e.key));t.inReview.push(...e.inFlight);let o=new Set(e.drafts.filter(e=>TH(e).length>0).map(e=>e.key));t.handReview.push(...e.handReview.filter(e=>!a.has(e.key)&&!o.has(e.key)));let s=new Set(t.handReview.map(e=>e.key));for(let t of e.queued)a.has(t.key)||s.has(t.key)||r[HV(t).band].push(t);for(let e of i)t.queued.push(...r[e]);let c=new Set(t.queued.map(e=>e.key));for(let r of e.drafts){if(a.has(r.key)||c.has(r.key)||s.has(r.key))continue;if(TH(r).length>0||tH(r)){n.actionable.push(r);continue}let e=(r.status===`ready`||r.status===`stale`||r.status===`error`)&&!AH(r);e&&t.noReviewNeeded.push(r),r.status===`ready`&&!e&&n[HV(r).band].push(r),(r.status===`stale`||r.status===`error`)&&!e&&t.attention.push(r),r.status===`posted`&&t.posted.push(r),r.status===`discarded`&&t.discarded.push(r)}for(let e of i)t.ready.push(...n[e]);return t}function CH(e,t){return e.commit===t?e.isViewer||ye.has(e.state):!1}function wH(e){return e.liveHead??e.reviewedHead}function TH(e){return(e.threads??[]).filter(e=>!e.isNit&&!e.isResolved)}function EH(e,t){if(e.isNit)return{label:`Automatic resolution failed`,reason:``,tone:`warn`};let n=e.judgement?.head===t&&e.judgement.lastReplyAt===e.lastReplyAt?e.judgement:void 0;if(n)return{label:n.addressed?`Addressed`:`Not addressed`,reason:n.reason,tone:n.addressed?`ok`:`warn`};let r=e.unjudgeable?.head===t&&e.unjudgeable.lastReplyAt===e.lastReplyAt?e.unjudgeable:void 0;return r?{label:`Auto-check skipped`,reason:r.reason,tone:`muted`}:{label:`Auto-check pending`,reason:``,tone:`muted`}}function DH(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=EH(t,wH(e));return{thread:t,location:t.line===null?t.path:`${t.path}:${t.line}`,judgementLabel:n.label,judgementReason:n.reason,judgementTone:n.tone,judgementText:n.reason?`${n.label}: ${n.reason}`:n.label,canResolve:t.viewerCanResolve}})}var OH=40;function kH(e,t){return e.split(`
|
|
171
|
+
`).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/OH)),0)>t}function AH(e){return TH(e).length>0?!0:Te(e)?!1:nH(e)?!0:!(e.githubReviews??[]).some(t=>CH(t,wH(e)))}function jH(e,t){let n=vH[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function MH(e){if(Te(e))return null;let t=(e.githubReviews??[]).filter(e=>e.isViewer&&ye.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!t?.commit||t.commit===wH(e)||t.state===`COMMENTED`)return null;let n=Date.parse(t.submittedAt??``);return e.reviewedAt!==void 0&&n>e.reviewedAt?null:{approvedCommit:t.commit,submittedAt:t.submittedAt,state:t.state,isReviewScopeSinceDecision:e.priorReviewedHead===t.commit}}function NH(e,t){let n=e.state===`APPROVED`?`approved this`:`requested changes`,r=e.state===`APPROVED`?`your approval`:`your request for changes`,i=`You ${n} at ${le(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${i}, so this review covers what changed after ${r}.`:`${i}.`}function PH(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function FH(e,t){return t?`${e}, ${t}`:e}function IH(e,{isViewerShown:t=!0}={}){return(e.githubReviews??[]).filter(e=>t||!e.isViewer).sort((e,t)=>Number(t.isViewer)-Number(e.isViewer)).map(t=>({login:t.login,tone:PH(t.state),text:jH(t,wH(e)),submittedAt:t.submittedAt}))}function LH(e){return uH[e]}function RH(e){return dH[e]}function zH(e){let t=EB(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function BH(e){return FB(zH(e))}function VH(e){return e!==`LOW`}function HH(e){return VH(BH(e))}var UH=new Set(`ts.tsx.js.jsx.mjs.cjs.json.jsonc.css.scss.less.html.md.mdx.py.go.rs.rb.java.kt.kts.swift.c.h.cc.cpp.hpp.cs.php.sh.bash.zsh.yml.yaml.toml.ini.sql.vue.svelte.astro.lock.txt.ex.exs.erl.scala.dart.lua.tf.proto.graphql.gql.xml.gradle`.split(`.`)),WH=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function GH(e){let t=WH.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:UH.has(n.slice(r+1).toLowerCase())}var KH=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function qH(e){let t=[],n=0;for(let r of e.matchAll(/`([^`\n]+)`/g)){let i=r.index??0;i>n&&t.push({text:e.slice(n,i),kind:`text`});let a=r[1]??``;t.push({text:a,kind:GH(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function JH(e){return e.split(/\r?\n\s*\r?\n/).filter(Boolean).map(e=>{let t=e.match(/^(Suggested fix:|Fix:|Open question[.,:])\s*/),n=t?.[1]??``;return{kind:`prose`,lead:n,leadKind:n.startsWith(`Open question`)?`question`:n?`fix`:null,segments:qH(e.slice(t?.[0].length??0))}})}function YH(e){let t=OB(e),n=DB(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(KH)){let t=e.index??0;i.push(...JH(r.slice(a,t).trim()));let n=(e[1]??``).trim().split(/\s+/)[0]||null;i.push({kind:`code`,language:n,code:(e[2]??``).replace(/\r?\n$/,``)}),a=t+e[0].length}return i.push(...JH(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function XH(e){let t=e.find(e=>e.kind===`prose`);if(!t)return`Open comment`;let n=`${t.lead} ${t.segments.map(e=>e.text).join(``)}`.trim(),r=n.search(/[.!?](?=\s|$)/);return(r<0?n:n.slice(0,r+1))||`Open comment`}function ZH(e){let t=[`Fetch the diff`,`Check out the head`,`Review`,`Draft ready`],n={preparing:0,checkout:1,reviewing:2}[e];return t.map((e,t)=>({label:e,state:t<n?`done`:t===n?`active`:`todo`}))}function QH(e,t){return`${e}#${t}`}function $H(e){return e===`full`?`full`:`light`}function eU(e){return e.priorReviewedHead?`${$H(e.tier)} review of changes since ${le(e.priorReviewedHead)}`:`${$H(e.tier)} review`}function tU(e){return e.reasons.join(`, `)}function nU(e){if(!e)return[];let t=[],n=e.goal.trim(),r=e.change.trim();return n&&t.push({kind:`goal`,text:n}),r&&t.push({kind:`change`,text:r}),t}var rU=`This review ran before plain summaries existed, so only its verdict and findings remain. Re-run review to get a plain summary.`,iU=new Set([`error`,`stale`,`discarded`,`posted`]);function aU(e){return iU.has(e)}function oU(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function sU(e){let t=oU(e);return t?`Reviewed at ${le(e.reviewedHead)}. The pull request is now at ${le(t)}.`:null}function cU(e){let t=oU(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function lU(e){let t=[`at ${le(e.head)}`,iH(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function uU(e){let t=dU(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function dU(e){return mH[e]??String(e).toLowerCase()}function fU(e){return _H[e]??`dim`}function pU(e){return yH[e]??e}function mU(e,t){return`${_u(t-e.startedAt)} elapsed`}function hU(e,t){let n=[mU(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${_u(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function gU(e){return e.status===`stale`&&e.earlierReview?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now and hands it these findings.`:e.status===`stale`?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now.`:e.status===`discarded`?`Marked not mine. Not reviewed again until you re-run it.`:e.error||e.summary||`The review failed.`}function _U(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function vU(e){return _U(e.path,e)}function yU(e){return _U(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function bU(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function xU(e){return{key:e,action:`discard`,body:``,comments:[]}}function SU(e,t,n,r,i){return t===`approve-only`?{key:e.key,head:e.reviewedHead,action:t,body:``,comments:[]}:{key:e.key,head:e.reviewedHead,action:t,body:n,...i?{threadId:i}:{},comments:r.map(({path:e,line:t,side:n,body:r})=>({path:e,line:t,side:n,body:r}))}}function CU(e){return e.note.trim()!==``||e.comments.length>0||e.generalFindings.length>0}function wU(e,t,n){return t===`approve`&&!CU(n)?SU(e,`approve-only`,``,[]):SU(e,t,bU(n.note,[CB,LB(e.body),...n.generalFindings.map(e=>e.markdown)].filter(Boolean).join(`
|
|
172
|
+
|
|
173
|
+
`)),n.comments)}function TU(e){let t=e.comments.length+e.generalFindings.length;return[e.note.trim()?`your note`:``,t?`${t} ${t===1?`finding`:`findings`}`:``].filter(Boolean).join(` and `)}function EU(e,t){let n=TU(t);return n?`Posts ${n}, labeled as an automated review, at ${le(e.reviewedHead)}.`:`Nothing ticked: Approve posts a bare approval, Comment needs a finding or a note.`}function DU(e,t){let n=TU(t);return e===`approve`&&n?`Approved on GitHub with ${n}`:e===`comment`&&n?`Commented on GitHub with ${n}`:MU(e)}var OU=Object.freeze({approve:`Approve`,"approve-only":`Approve`,comment:`Comment`,discard:`Not mine`,requeue:`Re-run review`,"resolve-thread":`Resolve`});function kU(e){return OU[e]}function AU(e){return e.status===`ready`?{primary:[`approve`,`comment`],secondary:[`requeue`,`discard`]}:Pe(e)?{primary:[`approve-only`],secondary:[`requeue`]}:e.status===`error`||e.status===`stale`?{primary:[`requeue`],secondary:[`discard`]}:aU(e.status)?{primary:[`requeue`],secondary:[]}:{primary:[],secondary:[]}}function jU(e){return xH[e]}function MU(e){return bH[e]}function NU(e){return e===0?`Picked for review. It starts on the next poll.`:`Waiting for a free review slot. It starts as soon as ${e===1?`the review`:`one of the ${e} reviews`} in progress finishes.`}function PU(e){return e?e.configured?e.error?`Review drafts will show here once GitHub answers.`:`No review drafts yet. New teammate pull requests show up here after the next poll.`:e.reason?`Team review is not running: ${e.reason}.`:`Team review is off.`:`Waiting for the team review lane.`}function FU(e){return e?.configured&&e.reason||null}function IU(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${IH(e).map(e=>e.text).join(`, `)}`}function LU(e){return`reviewedHead`in e?JSON.stringify([e.prCreatedAt,e.reviewedAt,e.postedAt,e.githubReviews,e.liveHead,e.priorReviewedHead,e.viewerThreads]):JSON.stringify([e.prCreatedAt,e.priorReviewedHead])}var RU=12e4,zU=`The server did not answer within ${RU/1e3} s. Check GitHub before trying again.`,BU=`${W} Check GitHub before trying again.`,VU=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,HU=`GitHub review`,UU=null,WU=null,GU=null,KU=null,qU=null,JU=null,YU=null,XU=null,ZU=null,QU=null,$U=null,eW=null,tW=new Map,nW=mp(()=>GU),rW=mp(()=>GU),iW=mp(()=>GU),aW=new WeakMap,oW=new Map,sW=new Map,cW=new Map;function lW(e){let t=LH(e),n=j(`span`,`pr-severity-meter`);if(n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,`${e.toLowerCase()} severity`),n.style.color=`var(${t.colorToken})`,e===`CRITICAL`){let e=Yd(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(Jd(`path`,{d:VU,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=Yd(9,11),i=e<t.filledCount;r.append(Jd(`path`,{d:VU,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function uW({verdict:e}){let t=j(`span`,`pr-verdict-seal`);t.dataset.tone=fU(e);let n=Yd(20,20),r=RH(e);return n.append(Jd(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(Jd(`path`,{d:`M6 10.5L8.7 13L14 7.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),r===`dot`&&n.append(Jd(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(Jd(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(Jd(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,j(`span`,null,uU(e))),t}function dW(){let e=Yd(16,16);return e.append(Jd(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(Jd(`path`,{d:`M6 6.2C6 4.9 7 4.2 8 4.2C9.1 4.2 10 5 10 6C10 7.4 8 7.4 8 9.2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})),e.append(Jd(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function fW(e){return pr(`pr-link`,QH(e.repo,e.number),e.url)}function pW(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function mW(e,t){let n=pW(t);if(n===null)return null;let r=j(`span`,null,`${e}${e?` `:``}${fp(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function hW(e){let t=aW.get(e);t&&(e.title=`${t()}${e.dataset.unseen?`
|
|
174
|
+
New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function gW(){iW.reset(),_W(GU)}Dh(gW);function _W(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))aW.has(t)&&(hW(t),iW.onTick(()=>hW(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=WU?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?MH(e):null;if(!n)continue;let r=()=>{t.textContent=NH(n,yW(n.submittedAt))};r(),iW.onTick(r)}for(let t of e.querySelectorAll(`[data-review-title]`)){let e=t.dataset.reviewTitle??``,n=t.dataset.ageAt===void 0?null:Number(t.dataset.ageAt),r=()=>{let r=n===null?null:fp(n),i=Th()?FH(HU,r):FH(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),iW.onTick(r)}for(let t of e.querySelectorAll(`[data-age-at]`)){if(t.dataset.reviewTitle!==void 0)continue;let e=Number(t.dataset.ageAt),n=t.dataset.ageLabel??``;iW.track(t,e,()=>`${n}${n?` `:``}${fp(e)}`)}}}function vW(e,t,n,r=!0){let i=IH(e,{isViewerShown:r});if(i.length===0)return null;let a=j(`span`,t),o=fr(i.map(e=>({login:e.login,tone:e.tone,title:FH(Th()?HU:e.text,yW(e.submittedAt))})),n);for(let[e,t]of i.entries()){let n=o.children[e];if(!(n instanceof HTMLElement))continue;n.dataset.reviewTitle=t.text;let r=pW(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(o),a}function yW(e){let t=pW(e);return t===null?null:fp(t)}function bW(e,t,n){let r=j(`span`,n);return r.append(dr({login:e,cssPx:t}),j(`span`,`pr-author-login`,e)),r}function xW(e,t){return`${QH(e.repo,e.number)}\n${$V(e,t).meaning}`}function SW(e,t,n){let r=j(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key;let i=`reviewedHead`in e?MH(e):null;aW.set(r,()=>Th()?xW(e,t):aH(e,t,{opened:yW(e.prCreatedAt),reviewed:`reviewedHead`in e?yW(e.reviewedAt):null,posted:`reviewedHead`in e?yW(e.postedAt):null,viewerApproval:yW(i?.submittedAt),githubReviews:`reviewedHead`in e?IH(e,{isViewerShown:t!==`posted`}).map(e=>yW(e.submittedAt)):[]})),hW(r);let a=wW(e,n);if(t===`inReview`){let t=e,n=j(`span`,`pr-queue-elapsed`);nW.track(n,t.startedAt,()=>mU(t,Date.now())),a.append(n)}if(t===`queued`){let t=mW(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=mW(``,t.reviewedAt)??mW(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),a.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(a),r;r.classList.remove(`pr-queue-row-quiet`);let o=$V(e,t),s=j(`span`,`pr-queue-glyph`);s.append(cv(o.icon,o.tone));let c=j(`span`,`pr-queue-bottom`);if(c.append(CW(o),bW(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=j(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(j(`span`,`pr-phase-label`,pU(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:vW(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),r}function CW(e){let t=j(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function wW(e,t){let n=j(`span`,`pr-queue-top`);return n.append(j(`strong`,`pr-queue-ref`,lH(e.repo,e.number,t)),j(`strong`,`pr-queue-ref-compact`,lH(e.repo,e.number,!1)),j(`span`,`pr-queue-title`,e.title)),n}function TW({title:e,detail:t}){let n=j(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=j(`strong`,`pr-caught-up-title`);return r.append(cv(`ready`,`ok`),j(`span`,null,e)),n.append(r,j(`p`,`pr-caught-up-detail`,t)),n}function EW(e){YU=e,XU&&(XU.hidden=e===null,uf(XU,e?.tone??null,e?.text??``))}var DW=`Open in session`,OW=`Preparing the branch and session.`;function kW(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;uf(r,n,t);let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function AW(e,t){let n=tW.get(e);n&&window.clearTimeout(n.timer),tW.set(e,{requestId:null,timer:0,text:t,tone:`error`}),kW(e,t,`error`)}function jW(e,t,n){if(tW.get(e)?.requestId)return;let r=zd(`open-team-review-session`);if(!G({type:`open-team-review-session`,requestId:r,key:e})){uf(n,`error`,W);return}let i=window.setTimeout(()=>AW(e,`The server did not answer within ${RU/1e3} s.`),RU);tW.set(e,{requestId:r,timer:i,text:OW,tone:`busy`}),t.disabled=!0,uf(n,`busy`,OW)}function MW(e){let t=j(`div`,`pr-session-open`),n=j(`button`,`pr-action pr-session-open-button`,DW);n.type=`button`;let r=tW.get(e.key);n.disabled=!!r?.requestId;let i=j(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&uf(i,r.tone,r.text),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>jW(e.key,n,i)),t.append(n,i),t}function NW(e){let t=j(`div`,`pr-detail-heading`);t.dataset.signature=LU(e);let n=j(`div`,`pr-detail-title`);n.append(fW(e),j(`h2`,null,e.title));let r=j(`div`,`pr-detail-meta`);r.append(bW(e.author,20,`pr-detail-author`));let i=j(`span`,null,eU(e));i.title=tU(e),r.append(i);let a=mW(`Opened`,e.prCreatedAt);if(a&&r.append(a),`reviewedHead`in e){let t=mW(`Reviewed`,e.reviewedAt);t&&r.append(t);let n=mW(`Posted`,e.postedAt);n&&r.append(n)}let o=`reviewedHead`in e?vW(e,`pr-detail-github`,20):null;if(o&&r.append(o),t.append(n,r,MW(e)),`reviewedHead`in e){let n=rH(e.viewerThreads);if(n){let r=j(`p`,`pr-viewer-threads`,n);eH(e)&&(r.dataset.state=`all-resolved`),t.append(r)}}let s=`reviewedHead`in e?MH(e):null;if(s){let n=j(`p`,`pr-rereview-notice`,NH(s,yW(s.submittedAt)));n.dataset.reviewKey=e.key,t.append(n)}return t}function PW(e,t){let n=e.querySelector(`:scope > .pr-detail-heading`);return!n||n.dataset.signature===LU(t)||n.replaceWith(NW(t)),e}function FW(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function IW(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(j(`code`,null,n.text));continue}let t=j(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function LW(e,t){return IW(e,qH(t))}function RW(e){let t=j(`ul`,`pr-assessment-list`);for(let n of e)t.append(LW(j(`li`,null),n));return t}function zW(e){let t=e.assessment?.handChecks??[];if(t.length===0)return[];let n=j(`section`,`pr-hand-checks`);n.setAttribute(`aria-label`,`Check by hand`),n.append(j(`h3`,`pr-assessment-title`,`Check by hand`));let r=t.map(e=>e.paths.length===0?e.text:`${e.text}: ${e.paths.map(e=>`\`${e}\``).join(`, `)}`);return n.append(RW(r)),[n]}function BW(e){let t=nU(e.assessment);if(t.length===0)return[];let n=j(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(j(`h3`,`pr-assessment-title`,`About this PR`));for(let e of t){let t=e.kind===`goal`?`pr-verdict-summary pr-about-goal`:`pr-verdict-summary`;n.append(LW(j(`p`,t),e.text))}return[n]}function VW(e){let t=j(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=j(`div`,`pr-verdict-line`);n.append(uW(e)),t.append(n);let{assessment:r}=e;if(!r)return t.append(j(`p`,`pr-verdict-legacy`,rU)),e.summary.trim()&&t.append(LW(j(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t;if(t.append(LW(j(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),r.gaps.length>0){let e=RW(r.gaps);e.classList.add(`pr-verdict-gaps`),e.setAttribute(`aria-label`,`Not covered`),t.append(e)}if(r.checked.length===0)return t;let i=j(`details`,`pr-verdict-checked`);return i.append(j(`summary`,null,`What it checked (${r.checked.length})`),RW(r.checked)),t.append(i),t}function HW(e){if(e.kind===`code`){let t=j(`pre`,`pr-comment-code`),n=j(`code`,null);return n.textContent=e.code,t.append(n),t}let t=j(`p`,`pr-comment-paragraph`);if(e.lead){let n=j(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(dW()),n.append(e.lead),t.append(n,` `)}return IW(t,e.segments)}function UW(e){return{body:e.body,severity:BH(e),location:yU(e),locationTitle:vU(e)}}function WW(e){let t=e.location??`Not on a changed line, posts in the review body`;return{body:e.body,severity:e.severity,location:e.location?.split(`/`).at(-1)??`general`,locationTitle:t}}function GW({body:e,severity:t,location:n,locationTitle:r}){let i=j(`details`,`pr-comment-content`),a=j(`summary`,`pr-comment-header`),o=YH(e);t&&a.append(lW(t));let s=j(`span`,`pr-comment-location`,n);s.title=r,a.append(s),a.append(j(`span`,`pr-comment-preview`,XH(o.paragraphs))),i.append(a);let c=j(`div`,`pr-comment-paragraphs`);for(let e of o.paragraphs)c.append(HW(e));return i.append(c),i.open=t===`HIGH`||t===`CRITICAL`,i}function KW(e,t){let n=j(`details`,`pr-disclosure pr-earlier-review`),r=j(`summary`,`pr-disclosure-summary`);r.append(j(`span`,`pr-disclosure-label`,`Earlier review`),j(`span`,`pr-disclosure-preview`,lU(e)));let i=j(`div`,`pr-earlier-review-body`),a=j(`div`,`pr-verdict-line`);a.append(uW(e)),i.append(a),e.summary.trim()&&i.append(LW(j(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=j(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(GW(UW(t))),i.append(e)}return n.append(r,i),n.open=t,n}function qW(e){let t=sU(e);if(!t)return[];let n=j(`p`,`pr-changed-since`,t);return n.append(` `,pr(`pr-changed-since-link`,`Compare changes`,cU(e),`Open the commits since this review on GitHub`)),[n]}function JW(e){let t=WU?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return QU=null,[];if(QU?.key===e.key&&QU.head===t.head)return[QU.element];let n=KW(t,!1);return QU={key:e.key,head:t.head,element:n},[n]}function YW(e,t,n,r){let i=j(`article`,`pr-comment-card`),a=j(`input`,`pr-comment-checkbox`);return a.type=`checkbox`,a.checked=t.has(n),a.setAttribute(`aria-label`,`Post finding on ${e.locationTitle}`),a.addEventListener(`change`,()=>{a.checked&&t.add(n),a.checked||t.delete(n),i.dataset.included=String(a.checked),r()}),i.dataset.included=String(a.checked),i.append(a,GW(e)),i}var XW=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function ZW(e,t,n,r,i=MU(n.action)){let a=$U?.captureTurnOrder()??[];EW(null);let o=zd(`team-review-action`);if(!G({type:`team-review-action`,requestId:o,...n}))return!1;let s=window.setTimeout(()=>{cW.delete(t.key),r(!1,zU)},RU);return cW.set(t.key,{requestId:o,action:n.action,outcomeText:i,origin:e,capturedOrder:a,pullRequest:QH(t.repo,t.number),timer:s,settle:r}),!0}function QW(e){let t=j(`footer`,`pr-footer`),n=$W(`discard`,()=>{cW.has(e.key)||(n.disabled=!0,uf(i,`busy`,jU(`discard`)),!ZW(`other`,e,xU(e.key),a)&&a(!1,W))}),r=cW.has(e.key);n.disabled=r;let i=j(`span`,`pr-action-status`);r&&uf(i,`busy`,jU(`discard`)),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(t,r)=>{n.disabled=t,uf(i,t?`ok`:`error`,r),t||EW({text:`${QH(e.repo,e.number)}: ${r}`,tone:`error`})};return t.append(n,i),t}function $W(e,t,n=!1){let r=j(`button`,n?`pr-action pr-action-ghost`:`pr-action`,kU(e));return r.type=`button`,r.dataset.action=e,r.addEventListener(`click`,()=>t(e)),r}function eG(e,t,n=``){let r=AU(e),i=j(`footer`,`pr-footer pr-decision-bar`),a=j(`span`,`pr-action-status`,n);a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`);let o=r.primary.map(e=>$W(e,t)),s=r.secondary.map(e=>$W(e,t,!0));return i.append(...o,j(`span`,`pr-decision-spacer`),...s,a),{footer:i,status:a,buttons:[...o,...s]}}var tG=0;function nG(e){let t=j(`section`,`pr-note`);tG+=1;let n=j(`textarea`,`pr-body-input pr-note-input`);n.id=`pr-note-${tG}`,n.rows=2,n.spellcheck=!0,n.placeholder=`Optional. Posts at the top of the review, above the automated-review label.`,n.addEventListener(`input`,e);let r=j(`label`,`pr-section-heading`,`Your note`);return r.htmlFor=n.id,t.append(r,n),{section:t,input:n}}function rG(e){let t=j(`article`,`pr-detail`),n=j(`div`);n.dataset.reviewThreads=``,t.append(NW(e),...BW(e)),e.earlierReview&&t.append(KW(e.earlierReview,!1)),t.append(n,VW(e),...zW(e)),sG(t,e);let r=RB(e.body),i=new Set(e.comments.flatMap((e,t)=>HH(e)?[t]:[])),a=new Set(r.flatMap((e,t)=>VH(e.severity)?[t]:[])),o=e.comments.length+r.length,s=j(`section`,`pr-posts`);s.setAttribute(`aria-label`,`Findings`);let c=j(`div`,`pr-posts-heading`),l=j(`span`,null);c.append(j(`h3`,null,`Findings`),l),s.append(c);let u=nG(()=>g()),d=()=>({note:u.input.value,comments:e.comments.filter((e,t)=>i.has(t)),generalFindings:r.filter((e,t)=>a.has(t))}),f=!1,p=eG(e,t=>{if(cW.has(e.key))return;let n=d(),r=t===`approve`||t===`comment`?wU(e,t,n):SU(e,t,``,[]);h(!0),uf(p.status,`busy`,jU(r.action)),!ZW(`ready`,e,r,_,DU(r.action,n))&&_(!1,W)});function m(){let e=CU(d());for(let t of p.buttons)t.disabled=f||t.dataset.action===`comment`&&!e;t.dataset.busy=String(f)}function h(e){f=e,m()}function g(){let t=d();l.textContent=`${t.comments.length+t.generalFindings.length} of ${o} will post. Low severity starts unticked.`,m(),!(cW.has(e.key)||p.status.dataset.tone===`ok`)&&uf(p.status,null,EU(e,t))}let _=(e,t)=>{h(e),uf(p.status,e?`ok`:`error`,t)};for(let[t,n]of e.comments.entries())s.append(YW(UW(n),i,t,g));for(let[e,t]of r.entries())s.append(YW(WW(t),a,e,g));return o>0&&t.append(s),t.append(u.section,p.footer),g(),{signature:IU(e),element:t,settle:_}}function iG(e){let t=oW.get(e.key);if(t&&(cW.has(e.key)||t.signature===IU(e)))return sG(t.element,e),PW(t.element,e);let n=rG(e);return oW.set(e.key,n),n.element}function aG(e,t){let n=j(`article`,`pr-detail`),r=j(`div`,`pr-detail-heading`),i=j(`div`,`pr-detail-title`);i.append(fW(e),j(`h2`,null,e.title));let a=j(`div`,`pr-detail-meta`);a.append(bW(e.author,20,`pr-detail-author`));let o=mW(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,MW(e)),n.append(r,j(`p`,`pr-attention-detail`,NU(t)),QW(e)),n}function oG(e){let t=j(`article`,`pr-detail`);t.append(NW(e));let n=j(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=j(`ol`,`pr-progress-tracker`);for(let t of ZH(e.phase)){let e=j(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(j(`span`,`pr-progress-bar`),j(`span`,null,t.label)),r.append(e)}let i=j(`div`,`pr-progress-text`);rW.track(i,e.startedAt,()=>hU(e,Date.now())),n.append(r,i),t.append(n);let a=j(`section`,`pr-steps`);a.append(j(`h3`,null,`Latest agent steps`));let o=j(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=j(`li`,`pr-step`),r=j(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(j(`span`,`pr-step-at`,vu(e.startedAt,t.at)),j(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...JW(e),QW(e)),t}function sG(e,t){if(cW.has(t.key))return;let n=e.querySelector(`:scope > [data-review-threads]`),r=JSON.stringify([t.liveHead,t.threads]);n&&n.dataset.reviewThreads!==r&&(n.replaceChildren(...lG(t)),n.dataset.reviewThreads=r)}function cG(e,t,n,r){let i=j(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(j(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!kH(e,t?3:8))return i;let a=j(`details`,`pr-thread-disclosure`);return a.append(j(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),j(`p`,`pr-thread-body`,e)),n&&a.append(pr(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function lG(e){let t=DH(e);if(t.length===0)return[];let n=j(`section`,`my-pr-threads-section`);n.append(j(`h3`,`pr-section-heading`,`Answered threads`));let r=j(`div`,`my-pr-threads`);for(let n of t){let t=j(`div`,`my-pr-thread pr-thread-card`),i=j(`div`,`my-pr-thread-heading pr-thread-heading`),a=j(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(pr(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(j(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(j(`div`,`my-pr-thread-meta`,`Your comment`),cG(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let o=j(`div`,`pr-detail-meta pr-thread-reply-meta`);o.append(j(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let s=mW(``,n.thread.lastReplyAt);s&&o.append(s);let c=j(`span`,`pr-action-status`);c.setAttribute(`role`,`status`);let l=j(`button`,`pr-action`,`Resolve`);l.type=`button`,l.disabled=!n.canResolve||cW.has(e.key);let u=(e,t)=>{l.disabled=e||!n.canResolve,uf(c,e?`ok`:`error`,t)};l.addEventListener(`click`,()=>{cW.has(e.key)||(l.disabled=!0,uf(c,`busy`,jU(`resolve-thread`)),!ZW(`other`,e,SU(e,`resolve-thread`,``,[],n.thread.id),u)&&u(!1,W))}),t.append(o),n.thread.lastReplyBody&&t.append(cG(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let d=j(`footer`,`pr-thread-footer`);d.append(c,l),t.append(d),n.thread.resolveError&&t.append(j(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function uG(e){let t=j(`article`,`pr-detail`);if(t.append(NW(e),...BW(e)),e.earlierReview&&t.append(KW(e.earlierReview,e.status===`stale`)),t.append(...lG(e)),e.status===`posted`&&t.append(VW(e)),e.status!==`posted`&&t.append(j(`p`,`pr-attention-detail`,gU(e))),e.status===`stale`&&t.append(...qW(e)),!aU(e.status))return sW.set(e.key,{signature:FW(e),element:t,settle:()=>{}}),t;let n=eG(e,t=>{if(!cW.has(e.key)){for(let e of n.buttons)e.disabled=!0;uf(n.status,`busy`,jU(t)),!ZW(`other`,e,SU(e,t,``,[]),r)&&r(!1,W)}},AU(e).primary.includes(`approve-only`)?XW:``),r=(e,t)=>{for(let t of n.buttons)t.disabled=e;uf(n.status,e?`ok`:`error`,t)};return t.append(n.footer),sW.set(e.key,{signature:FW(e),element:t,settle:r}),t}function dG(e){if(!aU(e.status)&&DH(e).length===0)return uG(e);let t=sW.get(e.key);return t&&(cW.has(e.key)||t.signature===FW(e))?PW(t.element,e):uG(e)}function fG(e){let t=j(`article`,`pr-detail`),n=j(`div`,`pr-detail-heading`),r=j(`div`,`pr-detail-title`);r.append(fW(e),j(`h2`,null,e.title));let i=j(`div`,`pr-detail-meta`);i.append(bW(e.author,20,`pr-detail-author`));let a=mW(`Opened`,e.prCreatedAt);a&&i.append(a),n.append(r,i);let o=j(`footer`,`pr-footer`);return o.append(pr(`pr-action`,`Review on GitHub`,e.url)),t.append(n,j(`p`,`pr-attention-detail`,pG),o),t}var pG=`From a fork, so the agent cannot check out its branch. Review it on GitHub.`;function mG(e){if(!qU||!JU)return;let t=e.ready.find(e=>e.key===JU&&(TH(e).length>0||tH(e)));if(t&&t.status!==`ready`){let e=`threads:${FW(t)}`,n=dG(t);if(ZU===e&&qU.firstElementChild===n)return;qU.replaceChildren(n),ZU=e;return}let n=[...e.ready,...e.noReviewNeeded].find(e=>e.key===JU&&e.status===`ready`);if(n){let e=`ready:${IU(n)}`,t=iG(n);if(ZU===e)return;qU.replaceChildren(t),ZU=e;return}let r=e.inReview.find(e=>e.key===JU);if(r){rW.reset(),qU.replaceChildren(oG(r)),ZU=`inReview:${r.key}`;return}let i=e.queued.find(e=>e.key===JU);if(i){let t=`queued:${i.key}:${e.inReview.length}`;if(ZU===t)return;qU.replaceChildren(aG(i,e.inReview.length)),ZU=t;return}let a=e.handReview.find(e=>e.key===JU);if(a){let e=`handReview:${a.key}`;if(ZU===e)return;qU.replaceChildren(fG(a)),ZU=e;return}let o=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===JU);o&&(qU.replaceChildren(dG(o)),ZU=`${o.status}:${o.key}`)}function hG(){let e=j(`p`,`pr-empty`,PU(WU));return WU&&!WU.configured&&e.append(` `,om(fH,pH,`Open Team review settings`)),e}function gG(){let e=FU(WU);return e?[j(`p`,`my-pr-note`,e)]:[]}function _G(e){for(let t of[...oW.keys()])e.has(t)||cW.has(t)||oW.delete(t);let t=new Set(WU?.drafts.filter(e=>aU(e.status)).map(e=>e.key)??[]);for(let e of sW.keys())t.has(e)||cW.has(e)||sW.delete(e)}function vG(){return SH(WU)}function yG(){return WU}function bG(){nW.reset()}function xG(){iW.reset(),_W(GU)}function SG(e){e===`clear`&&EW(null),JU=null}function CG(){return XU||(XU=j(`p`,`pr-action-status pr-action-notice`),XU.setAttribute(`role`,`status`),XU.setAttribute(`aria-live`,`polite`),EW(YU),XU)}function wG(e,t){t===`clear`&&EW(null),JU=e,mG(SH(WU)),xG()}function TG(e){_G(new Set([...e.ready,...e.noReviewNeeded].map(e=>e.key)))}function EG(){let e=SH(WU);TG(e),mG(e),$U?.onChange(),xG()}function DG(e,t,n){return eW=n?.openTerminal??eW,$U=t,GU=e,KU||(KU=j(`div`,`pr-detail-team`),qU=j(`div`,`pr-detail-body`),KU.append(qU),nW.ensure(),rW.ensure(),iW.ensure(),KU)}function OG(e){let t=Ge.safeParse(e);t.success&&(UU=t.data,WU=BV(UU,Wn),EG())}function kG(e){let t=e.key;if(!t)return;let n=tW.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?AW(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),tW.delete(t),kW(t,``,null),eW?.(e.sessionId)))}function AG(e){if(e)return;for(let[e,t]of tW)t.requestId&&AW(e,W);let t=[...cW.values()];cW.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,BU)}function jG(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=cW.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),cW.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:MU(n.action)),sW.delete(t.key),ZU=null,t.ok===!0&&EG();return}let r=(n.origin===`ready`?oW:sW).get(t.key);if(t.ok===!0){n.origin===`other`&&sW.delete(t.key);let e=cH({action:n.action,outcomeText:n.outcomeText,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:JU===t.key});if((r?.settle??n.settle)?.(!0,e.statusText),(e.notice||e.shouldAdvance)&&EW(e.notice),!e.shouldAdvance)return;TG(SH(WU)),$U?.onAdvance(t.key,n.capturedOrder)}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}Gn(()=>{WU=BV(UU,Wn),EG()});var MG=1.2,NG=1.55,PG=.12,FG=523.25,IG=2,LG=8,Y=(e,t,n)=>({semitone:e,startBeat:t,beats:n}),RG={melody:[Y(7,4,.5),Y(11,4.5,.5),Y(12,5,3)],bass:[Y(-5,4,1),Y(-12,5,3)]},zG=[{melody:[Y(0,0,1),Y(4,1,1),Y(7,2,1),Y(9,3,1)],bass:[Y(-12,0,2),Y(-8,2,2)]},{melody:[Y(7,0,.67),Y(7,.67,.67),Y(7,1.33,.67),Y(9,2,1),Y(5,3,1)],bass:[Y(-12,0,2),Y(-7,2,2)]},{melody:[Y(5,0,1),Y(9,1,1),Y(7,2,1),Y(4,3,1)],bass:[Y(-7,0,2),Y(-12,2,2)]},{melody:[Y(12,0,.5),Y(7,.5,.5),Y(12,1,.5),Y(16,1.5,.5),Y(16,2,1),Y(14,3,1)],bass:[Y(-12,0,2),Y(-3,2,2)]},{melody:[Y(4,0,1),Y(7,1,1),Y(4,2,.5),Y(5,2.5,.5),Y(7,3,.5),Y(4,3.5,.5)],bass:[Y(-8,0,2),Y(-12,2,2)]}].map(e=>({melody:[...e.melody,...RG.melody],bass:[...e.bass,...RG.bass]}));function BG(e,t){return FG*2**((e+t)/12)}function VG(e,t){let n=(e,n,r)=>e.map(e=>({frequency:BG(e.semitone,t),startSeconds:NG+e.startBeat*PG,durationSeconds:e.beats*PG,waveform:n,gain:r}));return[...n(e.melody,`square`,.2),...n(e.melody,`triangle`,.5),...n(e.bass,`triangle`,.6)]}var HG=[{frequency:220,endFrequency:880,startSeconds:0,durationSeconds:.32,waveform:`triangle`,gain:.25},{frequency:160,endFrequency:45,startSeconds:MG,durationSeconds:.28,waveform:`sine`,gain:1},{frequency:1400,endFrequency:380,startSeconds:MG,durationSeconds:.06,waveform:`square`,gain:.12}];function UG(e){let t=zG[e%zG.length],n=Math.min(e*IG,LG);return{peakGain:.1,tones:[...HG,...VG(t,n)]}}function WG(e){return Math.round(Math.sqrt(2*e/780)*1e3)}function GG(e,t,n=Math.random){return Math.round(e+n()*(t-e))}function KG(e,t=Math.random){let n=[...e];for(let e=n.length-1;e>0;--e){let r=Math.floor(t()*(e+1));[n[e],n[r]]=[n[r],n[e]]}return n}var qG=.6,JG=.25,YG=1.6;function XG(e){return Math.min(qG+e*JG,YG)}var ZG=[`var(--accent)`,`var(--state-running)`,`var(--state-idle)`,`var(--state-waiting)`,`var(--state-failed)`];function QG(e,t=Math.random){let n=GG(320,520,t),r=GG(1800,2800,t);return[[`--confetti-start-x`,`${GG(4,96,t)}%`],[`--confetti-x`,`${GG(-140,140,t)}px`],[`--confetti-rise`,`${-GG(20,55,t)}px`],[`--confetti-fall`,`${GG(45,70,t)}vh`],[`--confetti-rise-ms`,`${n}ms`],[`--confetti-fall-ms`,`${r}ms`],[`--confetti-flight-ms`,`${n+r}ms`],[`--confetti-tilt`,`${GG(0,180,t)}deg`],[`--confetti-spin`,`${GG(-360,360,t)}deg`],[`--confetti-flutter-ms`,`${GG(160,340,t)}ms`],[`--confetti-delay`,`${GG(0,160,t)}ms`],[`--confetti-color`,ZG[e%ZG.length]]]}var $G=`<svg viewBox="0 0 36 36" aria-hidden="true"><circle class="merge-bullseye-ring-light" cx="18" cy="18" r="17"/><circle class="merge-bullseye-ring-red" cx="18" cy="18" r="13"/><circle class="merge-bullseye-ring-light" cx="18" cy="18" r="9"/><circle class="merge-bullseye-ring-red" cx="18" cy="18" r="5"/></svg>`,eK=`<svg viewBox="0 0 26 8" aria-hidden="true"><path class="merge-bullseye-dart-flight" d="M0 0L7 3V5L0 8L2 4Z"/><rect class="merge-bullseye-dart-shaft" x="6" y="3.3" width="8" height="1.4"/><rect class="merge-bullseye-dart-barrel" x="13" y="2.5" width="7" height="3" rx="1"/><path class="merge-bullseye-dart-tip" d="M20 3L26 4L20 5Z"/></svg>`;function tK(){let e=lr(`div`,`merge-bullseye-target`,$G);return e.append(j(`span`,`merge-bullseye-ripple`)),e}function nK(){let e=j(`div`,`merge-bullseye-dart-drift`),t=j(`div`,`merge-bullseye-dart-arc`),n=j(`div`,`merge-bullseye-dart-aim`);return n.append(lr(`div`,`merge-bullseye-dart`,eK)),t.append(n),e.append(t),e}function rK(){let e=j(`div`,`merge-bullseye-range`),t=j(`div`,`merge-bullseye-track`);return t.append(nK()),e.append(tK(),t),e}var iK={title:`BULLSEYE!`,buildScene:rK},aK=6,oK=30,sK=-14,cK=16;function lK(e=Math.random){return[[`--crosshair-start-left`,`${GG(aK,oK,e)}%`],[`--crosshair-start-offset-y`,`${GG(sK,cK,e)}px`]]}var uK=`<svg viewBox="0 0 26 40" aria-hidden="true"><path class="merge-headshot-target-body" d="M9 13H17L18 16Q25 18 25 24V40H1V24Q1 18 8 16Z"/><circle class="merge-headshot-target-head" cx="13" cy="7" r="6"/><circle class="merge-headshot-target-ring" cx="13" cy="7" r="3"/><circle class="merge-headshot-target-ring" cx="13" cy="27" r="6"/><circle class="merge-headshot-target-ring" cx="13" cy="27" r="2.5"/></svg>`,dK=`<svg viewBox="0 0 22 22" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M11 0V5M11 17V22M0 11H5M17 11H22"/><circle class="merge-headshot-crosshair-dot" cx="11" cy="11" r="1"/></svg>`,fK=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 3L8 8M21 3L16 8M3 21L8 16M21 21L16 16"/></svg>`;function pK(){let e=j(`div`,`merge-headshot-sweep`);ur(e,lK());let t=j(`div`,`merge-headshot-aim`);t.append(lr(`div`,`merge-headshot-crosshair`,dK));let n=j(`div`,`merge-headshot-bob`);return n.append(t,lr(`div`,`merge-headshot-hitmarker`,fK)),e.append(n),e}function mK(){let e=j(`div`,`merge-headshot-range`),t=j(`div`,`merge-headshot-track`);return t.append(pK()),e.append(lr(`div`,`merge-headshot-target`,uK),t),e}var hK={title:`HEADSHOT!`,buildScene:mK},gK=[`10`,`J`,`Q`,`K`,`A`],_K=160,vK=19,yK=5,bK=9,xK=780,SK=70,CK=70,wK=35;function TK(e){let t=gK.length-1,n=e-t/2;return{offsetPx:n*vK,titleSpreadFraction:n/t,tiltDegrees:n*yK,bottomPx:bK-n**2,dealLeadMs:xK-e*SK,flipLeadMs:_K+(t-e)*CK,waveDelayMs:e*wK}}function EK(e){return[[`--card-offset`,`${e.offsetPx}px`],[`--card-title-spread`,String(e.titleSpreadFraction)],[`--card-tilt`,`${e.tiltDegrees}deg`],[`--card-bottom`,`${e.bottomPx}px`],[`--card-deal-lead-ms`,`${e.dealLeadMs}ms`],[`--card-flip-lead-ms`,`${e.flipLeadMs}ms`],[`--card-wave-delay-ms`,`${e.waveDelayMs}ms`]]}function DK(){return[[`--card-flip-ms`,`${_K}ms`]]}var OK=`<svg viewBox="0 0 10 9" aria-hidden="true"><path d="M5 8.5C5 8.5 0 5.3 0 2.6C0 1.1 1.2 0 2.6 0C3.6 0 4.5 .6 5 1.4C5.5 .6 6.4 0 7.4 0C8.8 0 10 1.1 10 2.6C10 5.3 5 8.5 5 8.5Z"/></svg>`;function kK(e,t){let n=j(`div`,`merge-flush-deal`);ur(n,EK(TK(t)));let r=j(`div`,`merge-flush-hop`),i=j(`div`,`merge-flush-card`),a=j(`div`,`merge-flush-face`);return a.append(j(`span`,`merge-flush-rank`,e)),a.insertAdjacentHTML(`beforeend`,OK),i.append(j(`div`,`merge-flush-back`),a),r.append(i),n.append(r),n}function AK(){let e=j(`div`,`merge-flush-table`);return ur(e,DK()),e.append(...gK.map(kK)),e}var jK={title:`ROYAL FLUSH!`,buildScene:AK},MK=[1,2,3,4],NK=14,PK=3,FK=3,IK=10,LK=20,RK=2,zK=28,BK=18,VK=.01,HK=1.5,UK=2200,WK=1,GK=120,KK=.35,qK=15,JK=105,YK=4,XK=65,ZK=145;function QK(e){return Math.round(e/(Math.PI*BK)*360)}function $K(e){return LK-e*RK}function eq(e){return e.rowIndex*NK+e.depthIndex*PK}function tq(e,t,n){return Array.from({length:n},(r,i)=>e+(t-e)*i/(n-1))}function nq(){return MK.flatMap((e,t)=>Array.from({length:e},(n,r)=>({rowIndex:t,depthIndex:e-1-r})))}function rq(e,t){let n=KG(tq(qK,JK,e),t),r=KG(tq(XK,ZK,e),t);return n.map((e,n)=>({angleDegrees:e+GG(-4,YK,t),depthScalePercent:Math.round(r[n])}))}function iq(e,t,n){let r=GG(240,380,n),i=t.angleDegrees*Math.PI/180,a=r*Math.cos(i),o=(r*Math.sin(i))**2/1560,s=GG(15,45,n),c=WG(o),l=WG(o+s),u=c+l,d=GG(540,1080,n),f=a>=0?1:-1,p=eq(e);return{depthIndex:e.depthIndex,launchAngleDegrees:t.angleDegrees,distanceFromHeadPinPx:p,layer:$K(e.depthIndex),flyXPx:Math.round(a*u/1e3),peakRisePx:Math.round(o),landingDropPx:s,riseMs:c,fallMs:l,flightMs:u,spinDegrees:Math.round(f*d*u/1e3),glintMs:Math.round(180/d*1e3),depthScalePercent:t.depthScalePercent,delayMs:Math.round(p/KK)}}function aq(e=Math.random){let t=nq(),n=rq(t.length,e);return t.map((t,r)=>iq(t,n[r],e))}function oq(e){return[[`--pin-left`,`${e.distanceFromHeadPinPx}px`],[`--pin-raise`,`${e.depthIndex*FK}px`],[`--pin-shade`,`${100-e.depthIndex*12}%`],[`--pin-fly-x`,`${e.flyXPx}px`],[`--pin-peak-y`,`${-e.peakRisePx}px`],[`--pin-land-y`,`${e.landingDropPx}px`],[`--pin-rise-ms`,`${e.riseMs}ms`],[`--pin-fall-ms`,`${e.fallMs}ms`],[`--pin-flight-ms`,`${e.flightMs}ms`],[`--pin-spin`,`${e.spinDegrees}deg`],[`--pin-glint-ms`,`${e.glintMs}ms`],[`--pin-depth-scale`,`${e.depthScalePercent}%`],[`--pin-depth-shade`,`${e.depthScalePercent-10}%`],[`--pin-delay`,`${e.delayMs}ms`],[`--pin-layer`,String(e.layer)]]}function sq(){return $K(HK)}function cq(){return Math.max(...nq().map(eq))+IK}function lq(){let e=cq(),t=zK+e+BK-WK;return[[`--ball-follow-px`,`${GK}px`],[`--ball-follow-ms`,`${Math.round(GK/KK)}ms`],[`--ball-follow-spin`,`${QK(GK)}deg`],[`--ball-size`,`${BK}px`],[`--ball-approach-spin`,`${UK}deg`],[`--ball-impact-inset`,`${t}px`],[`--ball-layer`,String(sq())],[`--rack-right`,`${zK}px`],[`--rack-width`,`${e}px`],[`--pin-width`,`${IK}px`]]}function uq(e=Math.random){return e()>=VK?null:No[Math.floor(e()*No.length)].sprite}var dq=`<svg viewBox="0 0 10 24" aria-hidden="true"><path class="merge-strike-pin-body" d="M5 0C7 0 7.6 2 7.2 4C6.9 5.6 6.3 6.6 6.4 8C6.6 10 9.6 12 9.6 16C9.6 19.5 8.4 22 7.6 24H2.4C1.6 22 .4 19.5 .4 16C.4 12 3.4 10 3.6 8C3.7 6.6 3.1 5.6 2.8 4C2.4 2 3 0 5 0Z"/><path class="merge-strike-pin-stripe" d="M3.1 5.2H6.9V6.2H3.1ZM3.4 7H6.6V8H3.4Z"/></svg>`;function fq(e){let t=j(`span`,`merge-strike-pin`);return t.append(lr(`span`,`merge-strike-pin-arc`,dq)),ur(t,oq(e)),t}function pq(){let e=uq();if(!e)return j(`span`,`merge-strike-ball`);let t=j(`span`,`merge-strike-ball is-animal`);return t.append(j(`span`,`nyan-sprite ${e}`)),t}function mq(){let e=j(`div`,`merge-strike-lane`);ur(e,lq());let t=j(`div`,`merge-strike-rack`);t.append(...aq().map(fq));let n=j(`div`,`merge-strike-track`);return n.append(pq()),e.append(t,n),e}var hq={title:`STRIKE!`,buildScene:mq},gq=20,_q=92,vq=23,yq=7,bq=-40;function xq(){let e=WG(72),t=WG(69),n=780*t/1e3;return{launchHeightPx:gq,peakHeightPx:_q,heightThroughRimPx:vq,heightLeavingNetPx:yq,heightOutOfCardPx:bq,riseMs:e,fallToRimMs:t,speedThroughRimPxPerSecond:n,netCatchMs:Math.round(32/n*1e3),dropMs:WG(47)}}function Sq(e=xq()){return[[`--ball-launch-y`,`${-e.launchHeightPx}px`],[`--ball-peak-y`,`${-e.peakHeightPx}px`],[`--ball-rim-y`,`${-e.heightThroughRimPx}px`],[`--ball-net-exit-y`,`${-e.heightLeavingNetPx}px`],[`--ball-drop-out-y`,`${-e.heightOutOfCardPx}px`],[`--ball-rise-ms`,`${e.riseMs}ms`],[`--ball-fall-to-rim-ms`,`${e.fallToRimMs}ms`],[`--ball-to-rim-ms`,`${e.riseMs+e.fallToRimMs}ms`],[`--ball-net-catch-ms`,`${e.netCatchMs}ms`],[`--ball-drop-ms`,`${e.dropMs}ms`]]}var Cq=`<svg viewBox="0 0 40 48" aria-hidden="true"><rect class="merge-swish-pole" x="36" y="28" width="2" height="20"/><rect class="merge-swish-backboard" x="35" y="2" width="3" height="26" rx="1"/><path class="merge-swish-rim" d="M31 18H35M7 18A12 2.5 0 0 1 31 18"/></svg>`,wq=`<svg viewBox="0 0 40 48" aria-hidden="true"><g class="merge-swish-net"><path d="M8 18L12 32M13.5 18L15.5 32M19 18V32M24.5 18L22.5 32M30 18L26 32M9.5 23Q19 25 28.5 23M11 28Q19 29.5 27 28"/></g><path class="merge-swish-rim" d="M7 18A12 2.5 0 0 0 31 18"/></svg>`;function Tq(){let e=j(`div`,`merge-swish-ball-drift`),t=j(`div`,`merge-swish-ball-arc`);return t.append(j(`span`,`merge-swish-ball`)),e.append(t),e}function Eq(){let e=j(`div`,`merge-swish-court`);ur(e,Sq());let t=j(`div`,`merge-swish-track`);return t.append(Tq()),e.append(lr(`div`,`merge-swish-hoop-back`,Cq),t,lr(`div`,`merge-swish-hoop-front`,wq)),e}var Dq=[hq,{title:`SWISH!`,buildScene:Eq},iK,hK,jK],Oq=48,kq=5600,Aq=20,jq=null,Mq=[],Nq=null,Pq=!1,Fq=0;function Iq(e){let t=j(`span`,`merge-confetti-piece`),n=j(`span`,`merge-confetti-arc`);return n.append(j(`span`,`merge-confetti-paper`)),t.append(n),ur(t,QG(e)),t}function Lq(e){let t=j(`p`,`merge-celebration-title`);return t.setAttribute(`aria-hidden`,`true`),Array.from(e).forEach((e,n)=>{let r=j(`span`,`merge-celebration-letter`,e);r.style.setProperty(`--letter-delay`,`${n*45}ms`),t.append(r)}),t}function Rq(e,t,n){let r=t.firstElementChild,i=t.lastElementChild;r instanceof HTMLElement&&i instanceof HTMLElement&&(e.style.setProperty(`--celebration-title-width`,`${i.offsetLeft+i.offsetWidth-r.offsetLeft}px`),e.style.setProperty(`--celebration-title-center-y`,`${t.offsetTop+t.offsetHeight/2-n.offsetTop}px`))}function zq(e){let t=j(`div`,`merge-celebration-scene`);return t.setAttribute(`aria-hidden`,`true`),t.append(e.buildScene()),t}function Bq(){return Dq[Math.floor(Math.random()*Dq.length)]}function Vq(e){if(ac())try{Sb(UG(e))}catch{}}function Hq(e){let t=j(`ul`,`merge-celebration-details`);for(let n of e)t.append(j(`li`,`merge-celebration-detail`,n));return t}function Uq(e,t,n){jq?.remove(),Vq(n);let r=j(`div`,`merge-celebration`);r.setAttribute(`role`,`status`);let i=j(`div`,`merge-celebration-card`),a=j(`div`,`merge-celebration-stage`),o=Lq(t.title),s=zq(t);a.append(o,j(`p`,`merge-celebration-message`,e.message),Hq(e.detailLines),s);let c=j(`div`,`merge-confetti`);c.style.setProperty(`--confetti-scale`,String(XG(n)));for(let e=0;e<Oq;e+=1)c.append(Iq(e));i.append(c,a),r.append(i),document.body.append(r),Rq(a,o,s),jq=r,window.setTimeout(()=>{r.remove(),jq===r&&(jq=null)},kq)}function Wq(e){return Pq?`playing`:e?`queued`:`empty`}function Gq(){if(!Nq)return;let e=Mq.length>0;Nq.tray.dataset.state=Wq(e),Nq.count.textContent=e?String(Mq.length):``,Nq.button.disabled=Pq||!e}function Kq(){let e=Mq.shift();Pq=e!==void 0,Gq(),e&&(Uq(e.text,e.scene,Fq),Fq+=1,window.setTimeout(Kq,kq))}function qq(e,t,n){Nq={tray:e,button:t,count:n},t.addEventListener(`click`,()=>{Fq=0,Kq()}),Gq()}function Jq(e,t=Bq()){Mq.push({text:e,scene:t}),Mq.length>Aq&&Mq.shift(),Gq()}var Yq=null,Xq=null,Zq=null,Qq=null,$q=null,eJ=new Map,tJ=new Set,nJ=new Map,rJ=new Map,iJ=!1,aJ=null,oJ={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>GB(e,t,n,r,fp(e.keepMergeableAttempt?.at)),isFeatureEnabled:KB,save:async(e,t)=>{let n=await K(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:q});if(n.type!==`my-pr-keep-mergeable-result`||n.key!==e.key)throw Error(`Unexpected keep mergeable reply.`);return n.ok?null:n.error??`Could not save Keep mergeable.`}},sJ={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:YB,isFeatureEnabled:qB,save:async(e,t)=>{let n=await K(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:q});if(n.type!==`my-pr-merge-when-ready-result`||n.key!==e.key)throw Error(`Unexpected merge when ready reply.`);return n.ok?null:n.error??`Could not save Merge when ready.`}},cJ=6e4,lJ=6e4,uJ=`The server did not answer within ${cJ/1e3} s. Check GitHub before trying again.`,dJ=`${W} Check GitHub before trying again.`;function fJ(e,t){let n=typeof e==`string`?[e]:e,r=j(`div`,`reviews-refresh-control`),i=j(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);i.type=`button`;let a=j(`span`,`reviews-refresh-status`);a.setAttribute(`role`,`status`);let o=j(`p`,`my-pr-error reviews-retry-notice`);r.append(i,a);let s=null,c=!1,l=``,u=null;function d(){let e=Date.now(),n=BB(s,e),r=HB(s,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!s?.error&&(o.hidden=!s?.error),a.textContent=VB(s,c,l)||(s?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!br(t)&&!document.hidden&&o.getClientRects().length>0&&zB(s,e);!i&&u!==null&&(window.clearInterval(u),u=null),i&&u===null&&(u=window.setInterval(d,1e3))}function f(e){e!==s&&(l=``),s=e,i.disabled=c||!!e?.isRefreshing||!e?.configured,d()}i.addEventListener(`click`,async()=>{if(!c){c=!0,l=``,f(s);try{let e=await Promise.all(n.map(e=>K(`github-polling-refresh`,{lane:e},{timeoutMs:lJ}))),t=e.find(e=>e.type===`github-polling-refresh-result`&&!e.ok);t?.type===`github-polling-refresh-result`&&(l=t.error??`Could not refresh from GitHub.`),!t&&e.some(e=>e.type===`github-polling-refresh-result`)&&(l=`Refreshed.`)}catch(e){l=ff(e,lJ)}finally{c=!1,f(s)}}});let p=new MutationObserver(d);p.observe(t,{attributes:!0,subtree:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});for(let e=t.parentElement;e;e=e.parentElement)p.observe(e,{attributes:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});return document.addEventListener(`visibilitychange`,d),{control:r,notice:o,update:f}}function pJ(e,t,n,r){eJ.set(e,{head:t,phase:n,text:r}),FJ()}function mJ(e){if(nJ.has(e.key))return;let t=zd(`my-pr-merge`);if(!G({type:`my-pr-merge`,requestId:t,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){pJ(e.key,e.headRefOid,`failed`,W);return}let n=window.setTimeout(()=>{nJ.delete(e.key),pJ(e.key,e.headRefOid,`failed`,uJ)},cJ);nJ.set(e.key,{requestId:t,head:e.headRefOid,timer:n}),eJ.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),FJ()}function hJ(e){let t=LV(e,eJ.get(e.key));if(!t.isVisible)return null;let n=j(`footer`,`pr-footer pr-decision-bar`),r=j(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=j(`span`,`pr-action-status`,t.statusText);return i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),uf(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{Rf({title:`Merge pull request`,message:RV(e),confirmLabel:`Merge`,onConfirm:()=>mJ(e)})}),n.append(r,i),n}function gJ(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(Zq));if(!n.isVisible)return null;let r=j(`div`,`my-pr-merge`),i=j(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=j(`span`,`pr-action-status`,n.statusText);return uf(a,n.tone,n.statusText),a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`),i.addEventListener(`click`,async()=>{if(!t.pendingKeys.has(e.key)){t.pendingKeys.add(e.key),t.errorsByKey.delete(e.key),FJ();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,ff(n,q))}finally{t.pendingKeys.delete(e.key),FJ()}}}),r.append(i,a),r}function _J(e,{hasGlyph:t}){let n=j(`span`,`my-pr-stage`);return n.dataset.tone=sV(e.stage),t&&n.append(cv(cV(e.stage),sV(e.stage))),n.append(oV(e.stage)),n}function vJ(e,t){let n=j(`span`,`my-pr-requested`);n.append(j(`span`,null,`Requested`));let r=j(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=dr({login:t.name,url:t.isTeam?t.avatarUrl:void 0,cssPx:16});e.title=t.name,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,t.name),r.append(e)}return n.append(r,j(`span`,`my-pr-requested-names`,t.slice(11))),n}function yJ(e){let t=j(`div`,`pr-detail-heading`),n=j(`div`,`pr-detail-title`);n.append(pr(`pr-link`,e.key,e.url),j(`h2`,null,e.title));let r=j(`p`,`pr-detail-meta`),i=e.state===`MERGED`?`Merged ${fp(Date.parse(e.mergedAt??``))}`:`Updated ${fp(Date.parse(e.updatedAt))}`;return r.append(j(`span`,`pr-queue-owner`,`Yours`),_J(e,{hasGlyph:!0}),j(`span`,null,`Opened ${fp(Date.parse(e.createdAt))}`),j(`span`,null,i)),t.append(n,r),t}function bJ(e){let t=EV(e,Zq?.viewer??null);if(t.length===0)return null;let n=j(`section`,`pr-readiness-section`);n.append(j(`h3`,`pr-section-heading`,`Merge readiness`));let r=j(`ul`,`pr-readiness`);for(let n of t){let t=j(`li`,`pr-readiness-row`);t.dataset.tone=n.tone;let i=j(`span`,`pr-readiness-value`);if(n.label===`Review`&&n.text.startsWith(`Requested: `)&&i.append(vJ(e,n.text)),i.childNodes.length===0&&(i.textContent=n.text),n.items){let e=j(`ul`,`my-pr-facts`);for(let t of n.items)e.append(j(`li`,null,t));i.append(e)}t.append(cv(n.icon,n.tone),j(`span`,`pr-readiness-label`,n.label),i),r.append(t)}return n.append(r),n}function xJ(e,t){if(t.length===0)return null;let n=j(`section`,`my-pr-threads-section`);n.append(j(`h3`,`pr-section-heading`,e));let r=j(`ul`,`my-pr-threads`);for(let e of t){let t=j(`li`,`my-pr-thread`),n=j(`div`,`my-pr-thread-heading`);if(n.append(pr(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=j(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(cv(e.waiting.icon,e.waiting.tone),e.waiting.text),n.append(t)}let i=j(`p`,`my-pr-thread-excerpt`);i.append(j(`strong`,null,e.author),` ${e.excerpt}`);let a=Date.parse(e.lastActivityAt),o=j(`p`,`my-pr-thread-meta`,Number.isFinite(a)?`${e.replySummary}, ${fp(a)}`:e.replySummary);t.append(n,i,o),r.append(t)}return n.append(r),n}function SJ(e){let t=wV(e);if(t.length===0)return null;let n=j(`section`,`pr-readiness-section`);n.append(j(`h3`,`pr-section-heading`,`Reviews`));let r=j(`ul`,`pr-readiness`);for(let e of t){let t=j(`li`,`pr-readiness-row`),n=Date.parse(e.submittedAt??``),i=Number.isFinite(n)?`${e.text} ${fp(n)}`:e.text,a=j(`span`,`my-pr-reviewer`);a.append(fr([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),j(`span`,null,e.reviewer)),t.append(cv(e.icon,e.tone),a,j(`span`,`pr-readiness-value`,i)),r.append(t)}return n.append(r),n}function CJ(e){let t=[oJ,sJ].map(t=>gJ(e,t)).filter(e=>e!==null);if(t.length===0)return null;let n=j(`section`,`my-pr-automation`);return n.append(j(`h3`,`pr-section-heading`,`Automation`),...t),n}function wJ(e){if(!Yq)return;if(!e){Yq.replaceChildren(j(`p`,`pr-empty`,OV(Zq)));return}let t=yV(e,Zq?.viewer??null),n=j(`article`,`pr-detail`),r=[bJ(e),xJ(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),xJ(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),SJ(e),CJ(e),hJ(e)];n.append(yJ(e),...r.filter(e=>e!==null)),Yq.replaceChildren(n)}function TJ(){return[...rJ].flatMap(([e,t])=>{let n=P.get(e);return!n||t.length===0?[]:[{id:e,title:wr(n)||e,links:t}]})}function EJ(e){let t=e.dataset.sessionId??``,n=P.get(t),r=N(e,`.session-row-name`);n&&(r.textContent=wr(n)||t);let i=wv(e,{glyph:N(e,`.session-row-glyph`),label:N(e,`.session-row-label`)},n?.currentState||A.DORMANT,n?.awaitingBackgroundTasks,n?.pendingPromptKind),a=`Focus session ${r.textContent}, ${i}`;e.title=a,e.setAttribute(`aria-label`,a)}function DJ(e){let{row:t,refs:n}=Sv(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,EJ(t),t.addEventListener(`click`,()=>aJ?.(e.id)),t}function OJ(e){if(!e||e.length===0)return null;let t=j(`div`,`my-pr-session-focus`);return t.append(...e.map(DJ)),t}function kJ(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))EJ(e)}function AJ(){iJ||(iJ=!0,queueMicrotask(()=>{iJ=!1,FJ()}))}function jJ(e){rJ=e,AJ()}function MJ(){return{prs:AV(Zq?.prs??[],Wn),status:Zq,sessionsByPrKey:jV(TJ())}}function NJ(e,t,n){let r=j(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${oV(e.stage)}`;let i=j(`span`,`pr-queue-glyph`);i.append(cv(cV(e.stage),sV(e.stage)));let a=j(`span`,`pr-queue-top`);a.append(j(`strong`,`pr-queue-ref`,e.key),j(`span`,`pr-queue-title`,e.title));let o=j(`span`,`pr-queue-bottom`);o.append(j(`span`,`pr-queue-owner`,`Yours`),_J(e,{hasGlyph:!1})),t&&o.append(j(`span`,`my-pr-stage`,`Stacked on ${t}`));let s=e.state===`MERGED`?e.mergedAt:null,c=s?`merged ${fp(Date.parse(s))}`:`opened ${fp(Date.parse(e.createdAt))}`;o.append(j(`span`,`pr-queue-elapsed`,c));let l=WB(e,oJ.isFeatureEnabled(Zq),fp(e.keepMergeableAttempt?.at));if(l){let e=j(`span`,`my-pr-stage`,l.text);e.dataset.tone=l.tone,e.title=l.title,o.append(e)}r.append(i,a,o);let u=j(`div`,`my-pr-row-group`);u.append(r);let d=OJ(n);return d&&u.append(d),{group:u,row:r}}function PJ(e){$q=e,wJ(MJ().prs.find(e=>e.key===$q))}function FJ(){let e=AV(Zq?.prs??[],Wn),t=MV(Qq,e);Qq=e,RJ(t),$q&&wJ(e.find(e=>e.key===$q)),Xq?.onChange()}function IJ(e,t){return aJ=t?.openTerminal??null,Xq=e,Yq||(Yq=j(`div`,`pr-detail-mine`),FJ(),Yq)}function LJ(e){let t=nV(e);t&&(Zq=t,FJ())}function RJ(e){let t=e.filter(e=>!tJ.has(e.key));if(t.length!==0){for(let e of t)tJ.add(e.key);Jq(PV(t))}}function zJ(e){if(!e){for(let[e,t]of nJ)window.clearTimeout(t.timer),eJ.set(e,{head:t.head,phase:`failed`,text:dJ});nJ.size!==0&&(nJ.clear(),FJ())}}function BJ(e){let t=zV(e);if(!t)return;let n=nJ.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),nJ.delete(t.key),!t.ok){pJ(t.key,n.head,`failed`,t.error||`The merge failed.`);return}if(pJ(t.key,n.head,t.kind??`unconfirmed`,``),t.kind!==`merged`)return;let r=AV(Zq?.prs??[],Wn).find(e=>e.key===t.key);r&&RJ([r])}Gn(AJ);var VJ={minPx:220,maxPx:720},HJ=16,UJ=new Set,WJ=0;function GJ(e){let t=kc();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=Dc();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function KJ(){for(let e of UJ)e.isConnected?GJ(e):UJ.delete(e)}function qJ(e,t){let n=j(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function JJ(e){let t=j(`div`,`pr-queue-foot`);return e&&t.append(e),t}function YJ({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=j(`div`,`pr-columns`),i=j(`div`,`pr-queue-pane`),a=j(`nav`,`pr-queue`);a.id=`pr-queue-${++WJ}`,a.setAttribute(`aria-label`,e);let o=j(`button`,`pr-queue-toggle`);o.type=`button`,o.setAttribute(`aria-label`,`Review queue`),o.setAttribute(`aria-controls`,a.id),o.title=`Collapse or expand the review queue`;let s=Yd(16,16);s.append(Jd(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),s.append(Jd(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let c=Jd(`path`,{d:`M11 6L9 8L11 10`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`,"stroke-linejoin":`round`});c.classList.add(`pr-queue-chevron`),s.append(c),o.append(s),o.addEventListener(`click`,()=>{Ac(!kc()),KJ()});let l=JJ(null);i.append(qJ(t,o),a,l);let u=j(`div`,`pr-queue-resizer`);u.setAttribute(`role`,`separator`),u.setAttribute(`aria-orientation`,`vertical`),u.setAttribute(`aria-label`,n),u.tabIndex=0;let d=j(`main`,`pr-detail-host`);return r.append(i,u,d),GJ(r),UJ.add(r),h_({resizer:u,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:VJ,keyStepPx:HJ,getStoredWidth:Dc,setStoredWidth:Oc}),{columns:r,queue:a,foot:l,detail:d}}function XJ({label:e,scopes:t,selected:n,onSelect:r}){let i=document.createElement(`div`);i.className=`pr-scope-tabs`,i.setAttribute(`role`,`tablist`),i.setAttribute(`aria-label`,e);let a=t.map(e=>{let t=document.createElement(`button`);return t.className=`pr-scope-tab`,t.type=`button`,t.dataset.scope=e.id,t.setAttribute(`role`,`tab`),t.textContent=e.label,t}),o=e=>{for(let[n,r]of a.entries()){let i=t[n].id===e;r.setAttribute(`aria-selected`,String(i)),r.tabIndex=i?0:-1}},s=(e,n)=>{let i=t[(e+t.length)%t.length];o(i.id),r(i.id),n&&a[(e+t.length)%t.length].focus()};for(let[e,t]of a.entries())t.addEventListener(`click`,()=>s(e,!1)),t.addEventListener(`keydown`,t=>{t.key===`ArrowLeft`?(t.preventDefault(),s(e-1,!0)):t.key===`ArrowRight`&&(t.preventDefault(),s(e+1,!0))});return i.append(...a),o(n),{element:i,select:o}}var ZJ=[{id:`all`,label:`All`},{id:`reviewing`,label:`Reviewing`},{id:`mine`,label:`Mine`}],QJ={turn:`Your turn`,working:`Agent working`,waiting:`Waiting on others`,aside:`Set aside`},$J=[`turn`,`working`,`waiting`,`aside`],eY={conflicts:`turn`,behind:`turn`,"checks-failing":`turn`,"changes-requested":`turn`,"unresolved-threads":`turn`,ready:`turn`,"checks-pending":`waiting`,"needs-approval":`waiting`,unknown:`waiting`,draft:`aside`,merged:`aside`},tY={directAsk:0,followUp:1,mineNeedsYou:2,teamReady:3,mineReady:4,failedReview:5,staleReview:6,fork:7};function nY(e,t){return{source:`team`,key:`team:${e.key}`,prKey:Rn(e),kind:t,review:e}}function rY(e){return e.status===`ready`?HV(e).band===`blocking-others`?tY.directAsk:tY.teamReady:tY.followUp}function iY(e){return[...e.ready.map(e=>({item:nY(e,`ready`),group:`turn`,turnRank:rY(e)})),...e.attention.map(e=>({item:nY(e,`attention`),group:`turn`,turnRank:e.status===`error`?tY.failedReview:tY.staleReview})),...e.handReview.map(e=>({item:nY(e,`handReview`),group:`turn`,turnRank:tY.fork})),...e.inReview.map(e=>({item:nY(e,`inReview`),group:`working`,turnRank:0})),...e.queued.map(e=>({item:nY(e,`queued`),group:`working`,turnRank:0})),...e.noReviewNeeded.map(e=>({item:nY(e,`settled`),group:`waiting`,turnRank:0})),...e.posted.map(e=>({item:nY(e,`posted`),group:`waiting`,turnRank:0})),...e.discarded.map(e=>({item:nY(e,`discarded`),group:`aside`,turnRank:0}))]}function aY(e,t){let n=eY[e.stage];return n===`turn`&&e.stage!==`ready`&&t.has(Rn(e))?`working`:n}function oY(e,t){return aV(e).flatMap(e=>e.rows).map(({pr:e,parentKey:n})=>({item:{source:`mine`,key:`mine:${e.key}`,prKey:Rn(e),pr:e,stackedOn:n},group:aY(e,t),turnRank:e.stage===`ready`?tY.mineReady:tY.mineNeedsYou}))}function sY(e,t,n){let r=[...iY(e),...oY(t,n)];return $J.map(e=>{let t=r.filter(t=>t.group===e),n=e===`turn`?t.toSorted((e,t)=>e.turnRank-t.turnRank):t;return{id:e,title:QJ[e],items:n.map(e=>e.item)}})}function cY(e,t){if(t===`all`)return[...e];let n=t===`reviewing`?`team`:`mine`;return e.map(e=>({...e,items:e.items.filter(e=>e.source===n)}))}function lY(e){return e.find(e=>e.id===`turn`)?.items??[]}function uY(e,t){return t?e.flatMap(e=>e.items).find(e=>e.key===t)??null:null}function dY(e,t){return uY(e,t)?t:e.flatMap(e=>e.items)[0]?.key??null}function fY(e){return e.source===`mine`?QH(e.pr.repo,e.pr.number):QH(e.review.repo,e.review.number)}function pY(e){return e.source===`team`?e.kind===`attention`&&`status`in e.review&&e.review.status===`error`?`failed`:`waiting`:e.pr.stage===`ready`?`finished`:e.pr.stage===`checks-failing`||e.pr.stage===`conflicts`?`failed`:`waiting`}function mY(e){return lY(e).map(e=>({id:e.key,kind:pY(e),name:fY(e)}))}function hY(e){return{waitingCount:e.filter(e=>e.kind===`waiting`).length,finishedCount:e.filter(e=>e.kind===`finished`).length,failedCount:e.filter(e=>e.kind===`failed`).length}}function gY(e,t){return mY(e).filter(e=>e.id!==t)}function _Y({capturedOrder:e,actedKey:t,groups:n}){let r=lY(n).map(e=>e.key).filter(e=>e!==t),i=new Set(r);return e.slice(e.indexOf(t)+1).find(e=>i.has(e))??e.find(e=>i.has(e))??r[0]??null}function vY(e,t){let n=lY(e).map(e=>e.key),r=t?n.indexOf(t):-1;return r===-1?``:`${r+1} of ${n.length} in Your turn`}function yY(e){return e.source===`mine`?`${e.key}@${e.pr.stage}`:`reviewedHead`in e.review?`${e.review.key}@${e.review.reviewedHead}`:`${e.review.key}@${e.kind}`}function bY(e){return lY(e).map(yY)}function xY({turnEntries:e,acknowledged:t,unseen:n,isLooking:r}){let i=new Set(e),a=new Set(t.split(`|`).filter(e=>i.has(e))),o=new Set(n.split(`|`).filter(e=>i.has(e))),s=[...i].filter(e=>!a.has(e));if(r)return{isShown:!1,acknowledged:Jl([...i]),unseen:Jl([...o])};for(let e of s)o.add(e);return{isShown:s.length>0,acknowledged:Jl([...a]),unseen:Jl([...o])}}function SY(e){let t=e.find(e=>e.id===`working`)?.items.length??0;return t===0?`Nothing needs you right now.`:`Nothing needs you right now. ${t} ${t===1?`pull request is`:`pull requests are`} with an agent.`}function CY(e){return new Set(e.flatMap(e=>e.items).map(e=>(e.source===`mine`?e.pr.repo:e.review.repo).toLowerCase())).size>1}function wY(e){let t=e.filter(e=>e?.configured===!0);if(t.length===0)return e.find(e=>e!==null)??null;let n=t.toSorted((e,t)=>(e.lastRefreshedAt??e.lastSyncAt??0)-(t.lastRefreshedAt??t.lastSyncAt??0));return{...t.find(e=>e.error)??n[0],isRefreshing:t.some(e=>e.isRefreshing)}}var TY=null,EY=null,DY=null,OY=null,kY=null,AY=!1,jY=new Set,MY=null,NY=null,PY=null,FY=null,IY=null,LY=null,RY=[],zY=`all`,BY=null,VY,HY=!1,UY=!1,WY=null,GY=!1,KY=null,qY=Vc(),JY=Uc(),YY=new Set(JY.split(`|`).filter(Boolean)),XY=new Map;function ZY(e){e!==qY&&(qY=e,Hc(e))}function QY(e){e!==JY&&(JY=e,YY=new Set(e.split(`|`).filter(Boolean)),Wc(e))}function $Y(){return yG()!==null&&MJ().status!==null}function eX(){if(!$Y())return;let e=xY({turnEntries:bY(RY),acknowledged:qY,unseen:JY,isLooking:!br(TY)});ZY(e.acknowledged),QY(e.unseen),KY?.(e.isShown)}function tX(){$Y()&&(ZY(Jl(bY(RY))),eX())}function nX(e){KY=e,eX()}function rX(e,t){let n=yY(e);YY.has(n)&&(QY(Jl([...YY].filter(e=>e!==n))),t.querySelector(`.pr-queue-unseen`)?.remove(),delete t.dataset.unseen,e.source===`team`&&hW(t))}function iX(e){if(TY&&(TY.dataset.detailOpen=String(e)),e!==AY){AY=e;for(let e of jY)e()}}function aX(e){jY.add(e)}function oX(){return document.documentElement.dataset.layout===`phone`&&AY}function sX(){oX()&&(iX(!1),BY&&XY.get(BY)?.focus({preventScroll:!0}))}function cX(){kY&&(kY.textContent=vY(RY,BY))}function lX(e){!DY||DY.childElementCount===1&&DY.firstElementChild===e||DY.replaceChildren(e)}function uX(){return lY(RY).length>0?TW({title:`New pull requests need you`,detail:`Pick one from the queue.`}):TW({title:`All caught up`,detail:SY(RY)})}function dX(e){let t=uY(RY,BY);VY=t?.key??null,t?t.source===`team`&&NY?(wG(t.review.key,e),lX(NY)):t.source===`mine`&&PY&&(SG(e),PJ(t.pr.key),lX(PY)):(SG(e),DY&&DY.replaceChildren(HY?uX():j(`p`,`pr-empty`,`Pick a pull request from the queue.`)))}function fX(e,{isFromQueue:t}){BY=e,HY=!1;for(let[t,n]of XY)n.setAttribute(`aria-current`,String(t===e));let n=uY(RY,e),r=XY.get(e);n&&r&&rX(n,r),dX(`clear`),pX(),iX(!0),t&&document.documentElement.dataset.layout===`phone`&&DY?.parentElement?.scrollIntoView({block:`start`})}function pX(){if(cX(),!OY)return;let e=gY(RY,BY);aN(OY,hY(mY(RY)),e)}function mX(){let e=gY(RY,BY)[0]?.id??null;return e?(hX(e),!0):!1}function hX(e){let t=uY(RY,e);if(!t)return;uY(cY(RY,zY),e)||(zY=`all`,FY?.select(zY)),RY.find(e=>e.items.includes(t))?.id===`aside`&&(UY=!0),BY=e,EX(),fX(e,{isFromQueue:!1});let n=XY.get(e);n?.focus({preventScroll:!0}),n?.scrollIntoView({block:`nearest`})}function gX(e){let t=RY.flatMap(e=>e.items).find(t=>t.prKey===e.toLowerCase());return!t||!LY?.openReviews()?!1:(hX(t.key),tX(),!0)}function _X(e,t){let n=_Y({capturedOrder:t,actedKey:`team:${e}`,groups:RY});if(BY=n,HY=n===null,WY=null,EX(),n)for(let[e,t]of XY)t.setAttribute(`aria-current`,String(e===n));dX(`keep`)}function vX(e,t,n){if(e.source===`team`){let n=SW(e.review,e.kind,t);return{container:n,row:n}}let r=NJ(e.pr,e.stackedOn,n.get(e.prKey));return{container:r.group,row:r.row}}function yX(e,t,n,r){let{container:i,row:a}=vX(e,n,r);a.dataset.queueKey=e.key,a.setAttribute(`aria-current`,String(e.key===BY));let o=yY(e);if(t&&YY.has(o)){let t=j(`span`,`tab-activity active pr-queue-unseen`);t.setAttribute(`aria-hidden`,`true`),a.dataset.unseen=o,a.append(t),e.source===`team`&&hW(a)}return a.addEventListener(`click`,()=>fX(e.key,{isFromQueue:!0})),XY.set(e.key,a),i}function bX(e){let t=j(`h3`,`pr-section-heading review-group-heading`),n=j(`span`,`review-group-count`,String(e.items.length));if(e.id!==`aside`)return t.append(j(`span`,null,e.title),n),t;let r=j(`button`,`review-group-toggle`),i=j(`span`,`review-group-chevron`,`▸`);return i.setAttribute(`aria-hidden`,`true`),r.append(i,e.title),r.type=`button`,r.setAttribute(`aria-expanded`,String(UY)),r.addEventListener(`click`,()=>{UY=!UY,WY=null,EX()}),t.append(r,n),t}function xX(e,t,n){let r=j(`section`,`pr-queue-section`);if(r.dataset.group=e.id,r.append(bX(e)),e.id===`aside`&&!UY)return r;for(let i of e.items)r.append(yX(i,e.id===`turn`,t,n));return r}function SX(){let e=kV(MJ().status,Date.now()).filter(e=>e.tone!==`error`).map(e=>j(`p`,`my-pr-note`,e.text));return[...IY?[IY.notice]:[],...gG(),...e]}function CX(){return RY.some(e=>e.items.length>0)?[j(`p`,`pr-empty`,`No pull requests match this filter.`)]:[hG(),j(`p`,`pr-empty`,OV(MJ().status))]}function wX(){if(!MY)return;let e=yG()?.team;if(!e){MY.replaceChildren();return}let t=j(`span`,`pr-team-chip`);t.append(dr({login:e.slug,url:e.avatarUrl,cssPx:16}),j(`span`,null,e.name)),MY.replaceChildren(t)}function TX(e,t){return JSON.stringify([e,[...t],BY,zY,UY,JY,SX().map(e=>e.textContent)],(e,t)=>e===`recentSteps`?void 0:t)}function EX(){if(!EY)return;let{prs:e,sessionsByPrKey:t,status:n}=MJ();RY=sY(vG(),e,new Set(t.keys())),eX(),wX(),IY?.update(wY([yG(),n]));let r=cY(RY,zY);HY||(BY=dY(r,BY)),pX();let i=TX(r,t);if(i!==WY){WY=i;let e=document.activeElement instanceof HTMLElement&&EY.contains(document.activeElement)?document.activeElement.dataset.queueKey:void 0;bG(),XY.clear();let n=CY(RY),a=r.filter(e=>e.items.length>0).map(e=>xX(e,n,t));EY.replaceChildren(...SX(),...a.length>0?a:CX()),e&&XY.get(e)?.focus({preventScroll:!0}),xG()}(BY!==VY||HY)&&dX(`keep`)}function DX(){GY||(GY=!0,queueMicrotask(()=>{GY=!1,EX()}))}function OX(e,t){if(LY=t??null,TY)return;TY=j(`div`,`pr-content review-queue`),e.append(TY),FY=XJ({label:`Show reviews`,scopes:ZJ,selected:zY,onSelect:e=>{zY=e,EX()}});let n=YJ({queueLabel:`Review queue`,scopeTabs:FY.element,resizerLabel:`Resize review queue`});EY=n.queue,DY=j(`div`,`review-queue-detail`);let r=j(`div`,`review-queue-phone-bar`),i=j(`button`,`pr-action pr-action-ghost review-queue-back`,`Back to queue`);i.type=`button`,i.addEventListener(`click`,sX),kY=j(`span`,`review-queue-position`),r.append(i,kY),n.detail.append(r,CG(),DY),OY=iN({onJump:()=>{mX()},rowFor:e=>XY.get(e)},pm()),OY.classList.add(`review-queue-banner`),n.queue.before(OY),IY=fJ([`team-review`,`my-prs`],TY),MY=j(`span`,`review-team-chip-slot`),n.foot.append(MY,IY.control),TY.append(n.columns),TY.dataset.detailOpen=`false`,NY=DG(TY,{onChange:DX,captureTurnOrder:()=>lY(RY).map(e=>e.key),onAdvance:_X},t),PY=IJ({onChange:DX},t),EX()}var kX={OPEN:0,MERGED:1,CLOSED:2};function AX(e){return e?kX[e.state]:kX.OPEN}function jX(e,t){let n=`${e.repo}#${e.number}`,r=`#${e.number}`;if(!t)return{key:n,text:r,url:e.url,hoverText:e.repo,look:null,tier:$h(void 0)};let i=sV(t.stage);return{key:n,text:r,url:t.url,hoverText:`${e.repo}: ${t.title} (${oV(t.stage)})`,look:{icon:cV(t.stage),tone:i},tier:$h(i)}}function MX(e,t){let n=e.map(e=>{let n=t(Rn(e));return{link:e,pr:n?SB(n):void 0}});return n.sort((e,t)=>AX(e.pr)-AX(t.pr)||t.link.linkedAt-e.link.linkedAt),n.map(({link:e,pr:t})=>jX(e,t))}var NX=new Map;function PX(e){return document.querySelectorAll(`[data-pr-chips-for="${CSS.escape(e)}"]`)}function FX(e){return MX(NX.get(e)??[],Wn).map(e=>({...e,className:`session-pr-chip`,linkUrl:e.url,ariaLabel:`Show pull request ${e.key} in Reviews`,hoverText:`${e.hoverText}. Show in Reviews; Cmd/Ctrl-click opens GitHub`,onActivate:()=>{gX(e.key)||Sg(e.url)}}))}function IX(e,t){let n=lv(e,e),r=j(`button`,`session-pr-chip-unlink`);r.append(nf(Xd)),r.type=`button`,r.title=`Unlink ${e.key} from this session`,r.setAttribute(`aria-label`,`Unlink pull request ${e.key}`),r.addEventListener(`click`,n=>{n.stopPropagation(),n.preventDefault(),Rf({title:`Unlink pull request`,message:`Unlink ${e.key} from this session? Its checks and reviews stop showing here until you link it again.`,confirmLabel:`Unlink`,danger:!0,onConfirm:()=>{$v(t,{type:`unlink-session-pr`,id:t,key:e.key})}})});let i=j(`span`,`session-pr-chip-item`);return i.append(n,r),i}function LX(e,t){e.dataset.prChipsFor=t,mv(e,FX(t),e=>IX(e,t))}function RX(e){for(let t of e){let e=t.dataset.prChipsFor;e&&LX(t,e)}xv()}function zX(e,t){let n=rt.shape.links.safeParse(t??[]);NX.set(e,n.success?n.data:[]),RX(PX(e)),jJ(NX)}function BX(e){NX.delete(e),jJ(NX)}Gn(()=>RX(document.querySelectorAll(`[data-pr-chips-for]`)));var VX=null,HX=new Set;function UX(){VX?.setAttribute(`aria-pressed`,String(!ac()))}function WX(e){oc(e),UX();for(let t of HX)t(e)}function GX(e){HX.add(e)}function KX(e){VX=e,UX(),e.addEventListener(`click`,()=>WX(!ac()))}var qX={mine:`Mine`,run:`Run`,cancel:`Cancel`},JX={mine:`Mining merged pull requests.`,run:`Starting the run.`,cancel:`Cancelling the run.`},YX=null,XX=null,ZX=null,QX=!0,$X=new Map,eZ=new Map;function tZ(e){return e===null?`n/a`:`${Math.round(e*100)}%`}function nZ(e){if(e===null)return`n/a`;let t=Math.round(e*100);return t>0?`+${t}`:String(t)}function rZ(e,t){ZX?.({type:`benchmark-action`,requestId:zd(`benchmark`),suiteId:e,action:t})===!0?($X.set(e,t),eZ.set(e,JX[t]),lZ()):(eZ.set(e,W),lZ())}function iZ(e,t,n){let r=j(`button`,`bench-action-button`,qX[t]);return r.type=`button`,r.disabled=n,r.addEventListener(`click`,()=>rZ(e.id,t)),r}function aZ(e){let t=XX?.inFlight;if(!t||t.suiteId!==e.id)return``;let n=t.caseId?`case ${t.caseId}, `:``;return`Cell ${t.cellIndex+1} of ${t.cellCount}: ${n}arm ${t.armId}, trial ${t.trial}, ${t.phase}.`}function oZ(e){let t=j(`td`,`bench-score`,tZ(e?.recall??null));return e&&e.invalid>0&&(t.title=`${e.invalid} invalid or failed cell(s)`),e&&e.degraded>0&&(t.dataset.degraded=`true`),t}function sZ(e){let t=e.armIds.filter(t=>t!==e.baselineArm),n=j(`table`,`bench-table`),r=j(`tr`);r.append(j(`th`,null,`Case`),...e.armIds.map(t=>j(`th`,null,t===e.baselineArm?`${t} (baseline)`:t))),r.append(...t.map(e=>j(`th`,null,`${e} vs baseline`))),n.append(r);for(let r of e.rows){let i=j(`tr`);i.append(j(`td`,`bench-case`,r.caseId),...e.armIds.map(e=>oZ(r.arms[e]))),i.append(...t.map(e=>j(`td`,`bench-delta`,nZ(r.deltaVsBaseline[e]??null)))),n.append(i)}let i=[...new Set(e.armIds.flatMap(t=>Object.keys(e.totals[t]?.recallByTag??{})))].sort(),a=j(`tr`,`bench-total`);a.append(j(`td`,`bench-case`,`Paired recall`),...e.armIds.map(t=>oZ(e.totals[t]))),n.append(a);for(let t of i){let r=j(`tr`,`bench-total`);r.append(j(`td`,`bench-case`,`Recall, ${t}`),...e.armIds.map(n=>j(`td`,`bench-score`,tZ(e.totals[n]?.recallByTag[t]??null)))),n.append(r)}return n}function cZ(e){let t=j(`div`,`bench-suite`),n=XX?.inFlight?.suiteId===e.id,r=!!XX?.inFlight&&!n,i=$X.has(e.id)||!QX,a=j(`div`,`bench-summary`);a.append(j(`span`,`bench-suite-title`,e.title),vr(`bench`,e.caseCount===1?`case`:`cases`,String(e.caseCount)),vr(`bench`,e.candidateCount===1?`candidate`:`candidates`,String(e.candidateCount)),vr(`bench`,`arms`,String(e.armIds.length))),t.append(a);let o=j(`div`,`bench-controls`),s=XX?.configured===!0&&e.error===null;o.append(iZ(e,`mine`,!s||i||n),iZ(e,`run`,!s||i||n||r||e.caseCount===0),iZ(e,`cancel`,i||!n));let c=j(`span`,`bench-status`,(QX?``:`Not connected to the server. Reconnecting.`)||aZ(e)||eZ.get(e.id)||``);if(c.setAttribute(`role`,`status`),o.append(c),t.append(o),e.error)return t.append(j(`p`,`bench-error`,e.error)),t;let l=e.latestReport;return l?(t.append(j(`p`,`bench-run-line`,`Latest run ${l.runId}: ${l.status}. Only cases every arm scored count toward paired recall.`)),l.rows.length>0&&t.append(sZ(l)),t):(t.append(j(`p`,`bench-empty`,e.caseCount===0?`Move approved candidates into the cases folder, then choose Run.`:`No run yet.`)),t)}function lZ(){if(!YX)return;YX.textContent=``;let e=_r(`bench`,`Benchmarks`,`Suites from the benchmarks folder of the Glimmervoid home, one run at a time.`);if(YX.append(e),!XX)YX.append(j(`p`,`bench-empty`,`Waiting for the server.`));else if(!XX.configured)YX.append(j(`p`,`bench-empty`,XX.reason||`Benchmarks are off.`));else if(XX.suites.length===0)YX.append(j(`p`,`bench-empty`,`No suites yet. Create a folder holding suite.json under benchmarks in the Glimmervoid home.`));else for(let e of XX.suites)YX.append(cZ(e))}function uZ(e){ZX=e}function dZ(e){return YX||(YX=j(`div`,`bench-content`),e.append(YX),lZ(),YX)}function fZ(e){if(QX=e,!e){for(let e of $X.keys())eZ.delete(e);$X.clear()}lZ()}function pZ(e){XX=e,lZ()}function mZ(e){$X.delete(e.suiteId);let t=XX?.suites.find(t=>t.id===e.suiteId)?.candidateCount??0,n={mine:`Mining finished. ${t} candidate${t===1?``:`s`} awaiting approval in the candidates folder.`,run:`Run ${e.runId??``} started.`,cancel:`Run cancelled.`};eZ.set(e.suiteId,e.ok?n[e.action]:e.error||`The server refused the action.`),lZ()}function hZ(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function gZ(e,t){return t===`all`||e.sources.includes(t)}function _Z(e){return{all:e.length,me:e.filter(e=>gZ(e,`me`)).length,team:e.filter(e=>gZ(e,`team`)).length,project:e.filter(e=>gZ(e,`project`)).length}}function vZ(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!gZ(e,t.scope)||t.repo&&e.repo!==t.repo||t.label&&!e.labels.includes(t.label)||t.hasSession&&(!e.sessionId||!n.has(e.sessionId))||t.hasPr&&e.pullRequests.length===0||t.isUnassignedOnly&&e.assignees.length>0)return!1;let i=[e.title,`#${e.number}`,e.repo,e.author,...e.labels,...e.assignees,...e.teams].join(` `).toLowerCase();return r.every(e=>i.includes(e))}),a=e=>Date.parse(e)||0,o=e=>t.sort===`comments`?e.comments:t.sort===`created`?a(e.createdAt):a(e.updatedAt);return i.sort((e,t)=>o(t)-o(e)||e.key.localeCompare(t.key))}function yZ(e){let t=new Map;for(let n of e){let e=t.get(n.repo)??[];e.push(n),t.set(n.repo,e)}return t}function bZ(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function xZ(e){let t=[e.query.trim()&&`search "${e.query.trim()}"`,e.repo,e.label,e.hasSession&&`has session`,e.hasPr&&`has PR`,e.isUnassignedOnly&&`unassigned`].filter(Boolean);return t.length===0?``:`Filtered by ${t.join(`, `)}.`}function SZ(e,t){let n=typeof e==`number`?e:Date.parse(e);if(!Number.isFinite(n))return`unknown`;let r=Math.round(Math.max(0,t-n)/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.round(r/60);return i<48?`${i}h`:`${Math.round(i/24)}d`}function CZ(e,t){let n=SZ(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function wZ(e,t){let n=no(e.url),r=n?t(n.toLowerCase()):void 0;return r?zr(r):e.state}var TZ=45e3,EZ=`The server did not answer within ${TZ/1e3} s.`,DZ=`Select the issue to load its description.`,OZ=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],kZ={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},AZ=null,jZ=null,MZ=null,NZ=null,PZ=null,FZ=null,IZ=null,LZ=null,RZ=null,zZ=null,BZ=new Map,VZ=!1,HZ=null,UZ=null,WZ=new Map,GZ=new Map,KZ=new Map,qZ=new Map,JZ=new Map;function YZ(e){return`${e.key}:${e.updatedAt}`}function XZ(e){return e.sessionId?P.get(e.sessionId):void 0}function ZZ(e,t,n){let r=XZ(t),i=r?.currentState??A.DORMANT,a=hr(i,r?.awaitingBackgroundTasks),o=r?`Session: ${a.label}`:`No session yet`,s=n?a.label:``;if(e.dataset.state===i&&e.title===o&&e.dataset.icon===a.icon&&e.textContent===s)return;e.dataset.state=i,e.dataset.icon=a.icon,e.title=o,e.setAttribute(`aria-label`,o);let c=j(`span`,`issues-state-icon`);of(c,a.icon),e.replaceChildren(c),n&&e.append(s)}function QZ(e,t=!1){let n=j(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return ZZ(n,e,t),n}function $Z(e){let t=XZ(e);return t?wr(t):`none yet`}function eQ(e){return[...WZ.values()].some(t=>t.issueKey===e.key)}function tQ(e){let t=WZ.get(e);t&&(WZ.delete(e),GZ.set(t.issueKey,{text:EZ,tone:`error`}),uQ())}function nQ(e){let t=WZ.get(e);return t?(clearTimeout(t.timeoutHandle),WZ.delete(e),t):null}function rQ(e){let t=YZ(e);if(qZ.has(t)||[...KZ.values()].some(e=>e.cacheKey===t))return;let n=zd(`issue-detail`);JZ.delete(t),UZ?.({type:`issue-detail`,requestId:n,repo:e.repo,issueNumber:e.number})?KZ.set(n,{cacheKey:t,timeoutHandle:setTimeout(()=>{KZ.delete(n),JZ.set(t,`${EZ} ${DZ}`),uQ()},TZ)}):JZ.set(t,`${W} ${DZ}`)}function iQ(e){let t=e.projectId;if(!t||XZ(e)||eQ(e))return;let n=zd(`open-issue-session`);UZ?.({type:`open-issue-session`,requestId:n,projectId:t,repo:e.repo,issueNumber:e.number})?(WZ.set(n,{issueKey:e.key,issueNumber:e.number,timeoutHandle:setTimeout(()=>tQ(n),TZ)}),GZ.set(e.key,{text:`Opening session.`,tone:`busy`}),uQ()):(GZ.set(e.key,{text:W,tone:`error`}),uQ())}function aQ(e){let t=j(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===RZ));let n=j(`span`,`pr-queue-top`);n.append(j(`span`,`pr-queue-ref`,`#${e.number}`),j(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=j(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(j(`span`,`issues-why`,`you`)),r.append(j(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=wZ(t,Wn),n=j(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let i=j(`span`,`pr-queue-elapsed`,SZ(e.updatedAt,Date.now()));return i.dataset.issueAge=e.updatedAt,r.append(i),t.append(QZ(e),n,r),t.addEventListener(`click`,()=>{gQ(`select`),RZ=e.key,AZ&&(AZ.dataset.detailOpen=`true`),rQ(e),fQ(),NZ&&(NZ.scrollTop=0)}),t}function oQ(e,t,n){let r=j(`dd`);r.append(...n),e.append(j(`dt`,null,t),r)}function sQ(e){let t=j(`footer`,`pr-footer issues-detail-footer`),n=XZ(e);if(n&&e.sessionId){let n=e.sessionId,r=j(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>{gQ(`go-to-session`),Xv(n)}),t.append(r)}if(e.projectId&&!n){let n=j(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=eQ(e),n.addEventListener(`click`,()=>iQ(e)),t.append(n)}t.append(pr(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let r=GZ.get(e.key),i=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,a=j(`span`,`pr-action-status issue-open-status`);return a.setAttribute(`role`,`status`),uf(a,r?.tone??null,r?.text??i),t.append(a),t}function cQ(e,t){let n=j(`span`,null,CZ(e,t));return n.dataset.issueAgo=e,n}function lQ(){let e=NZ?.querySelector(`.issues-detail`),t=RZ?BZ.get(RZ):void 0;if(!e||!t)return;let n=e.querySelector(`.issues-facts .issues-state`);n&&ZZ(n,t,!0);let r=e.querySelector(`.issues-session-name`),i=$Z(t);r&&r.textContent!==i&&(r.textContent=i);let a=String(!!XZ(t));e.dataset.hasLiveSession!==a&&(e.dataset.hasLiveSession=a,e.querySelector(`.issues-detail-footer`)?.replaceWith(sQ(t)))}function uQ(){if(!NZ)return;let e=zZ?.issues.find(e=>e.key===RZ);if(!e){NZ.replaceChildren(j(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let t=j(`article`,`pr-detail issues-detail`),n=j(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);n.type=`button`,n.addEventListener(`click`,()=>{gQ(`back`),AZ&&(AZ.dataset.detailOpen=`false`),[...MZ?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===RZ)?.focus({preventScroll:!0})});let r=j(`header`,`pr-detail-heading`),i=j(`div`,`pr-detail-title`);i.append(pr(`pr-link`,`${e.repo}#${e.number}`,e.url),j(`h2`,null,e.title||`Untitled issue`));let a=Date.now(),o=j(`div`,`pr-detail-meta`),s=j(`span`,null,`opened by ${e.author||`unknown`} `),c=j(`span`,null,`updated `);s.append(cQ(e.createdAt,a)),c.append(cQ(e.updatedAt,a)),o.append(s,c,j(`span`,null,`${e.comments} comments`)),e.sources.includes(`me`)&&o.append(j(`span`,`issues-why`,`assigned to you`));for(let t of e.teams)o.append(j(`span`,null,`mentions ${t}`));r.append(i,o);let l=j(`dl`,`issues-facts`);oQ(l,`Repository`,[e.repo]),oQ(l,`Labels`,[e.labels.join(`, `)||`none`]),oQ(l,`Assignees`,[e.assignees.join(`, `)||`unassigned`]),t.dataset.hasLiveSession=String(!!XZ(e)),oQ(l,`Session`,[QZ(e,!0),j(`span`,`issues-session-name`,$Z(e))]);let u=e.pullRequests.flatMap(e=>{let t=wZ(e,Wn),n=j(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,pr(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});oQ(l,`Pull request`,u.length>0?u:[`none linked`]);let d=j(`section`,`issues-body-section`),f=YZ(e),p=j(`div`,`issue-body`,qZ.get(f)??JZ.get(f)??`Loading description.`);qZ.get(f)===``&&(p.textContent=`No description.`),p.setAttribute(`role`,`status`),d.append(j(`h3`,`pr-section-heading`,`Description`),p),t.append(n,r,l,d,sQ(e)),NZ.replaceChildren(t)}function dQ(e,t,n,r){if(!e)return;let i=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...i].map(e=>{let n=j(`option`,null,e||t);return n.value=e,n})),e.value=r}function fQ(){VZ=!1,pQ(),uQ()}function pQ(){if(!AZ||!MZ||!jZ)return;let e=zZ?.issues??[],t=_Z(e);for(let e of OZ){jZ.querySelector(`[data-scope="${e.id}"]`)?.setAttribute(`aria-selected`,String(e.id===kZ.scope));let n=jZ.querySelector(`[data-scope-count="${e.id}"]`);n&&(n.textContent=String(t[e.id]))}let n=bZ(e);dQ(FZ,`All repos`,n.repos,kZ.repo),dQ(IZ,`All labels`,n.labels,kZ.label),PZ&&(PZ.textContent=xZ(kZ));let r=vZ(e,kZ,new Set(P.keys())),i=document.activeElement instanceof HTMLElement&&MZ.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,a=[...yZ(r)].map(([e,t])=>{let n=j(`section`,`pr-queue-section`),r=j(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(j(`span`,`issues-repo-note`,`view only`)),r.append(j(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(aQ)),n});MZ.replaceChildren(...a),r.length===0&&MZ.append(j(`p`,`pr-empty`,e.length>0?`No open issues match these filters. Clear the search or pick All.`:hZ(zZ))),i&&[...MZ.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===i)?.focus({preventScroll:!0}),RZ&&!e.some(e=>e.key===RZ)&&(RZ=null,AZ.dataset.detailOpen=`false`),HZ?.update(zZ),hQ()}function mQ(){let e=j(`div`,`issues-filters`),t=j(`div`,`issues-search-row`),n=j(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{kZ.query=n.value,fQ()}),n.addEventListener(`change`,()=>gQ(`search`));let r=j(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let i=j(`div`,`issues-filters-panel`);i.id=`issues-filters-panel`,i.hidden=!0,r.addEventListener(`click`,()=>{gQ(`filters-toggle`),i.hidden=!i.hidden,r.setAttribute(`aria-expanded`,String(!i.hidden))}),t.append(n,r);let a=j(`div`,`issues-filter-row`);function o(e){let t=j(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),a.append(t),t}FZ=o(`Repository`),FZ.addEventListener(`change`,()=>{gQ(`filter`),kZ.repo=FZ?.value??``,fQ()}),IZ=o(`Label`),IZ.addEventListener(`change`,()=>{gQ(`filter`),kZ.label=IZ?.value??``,fQ()});let s=o(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=j(`option`,null,t);n.value=e??``,s.append(n)}s.addEventListener(`change`,()=>{gQ(`filter`),kZ.sort=s.value,fQ()});let c=j(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=j(`label`,`issues-toggle`),r=j(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{gQ(`filter`),kZ[e]=r.checked,fQ()}),n.append(r,` ${t}`),c.append(n)}return PZ=j(`span`,`issues-filter-summary`),PZ.setAttribute(`role`,`status`),i.append(a,c),e.append(t,PZ,i),e}function hQ(){if(!AZ||AZ.closest(`[hidden]`)||document.hidden)return;let e=Date.now();LZ&&(LZ.textContent=zZ?.lastSyncAt?`Synced ${CZ(zZ.lastSyncAt,e)}.`:`Not synced yet.`);for(let t of AZ.querySelectorAll(`[data-issue-age]`))t.textContent=SZ(t.dataset.issueAge??``,e);for(let t of AZ.querySelectorAll(`[data-issue-ago]`))t.textContent=CZ(t.dataset.issueAgo??``,e)}function gQ(e){UZ?.({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`issues`,action:e}})}function _Q(e){UZ=e}function vQ(e){if(AZ)return AZ;AZ=j(`div`,`issues-content`),AZ.dataset.detailOpen=`false`,e.append(AZ),HZ=fJ(`issues`,AZ);let t=j(`div`,`pr-columns issues-columns`),n=j(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),jZ=j(`div`,`pr-scope-tabs issues-scope-tabs`),jZ.setAttribute(`role`,`tablist`),jZ.setAttribute(`aria-label`,`Issue scope`);for(let e of OZ){let t=j(`span`,`issues-scope`);t.setAttribute(`role`,`presentation`);let n=j(`button`,`pr-scope-tab`,e.label);n.type=`button`,n.dataset.scope=e.id,n.setAttribute(`role`,`tab`),n.addEventListener(`click`,()=>{gQ(`scope`),kZ.scope=e.id,fQ()});let r=j(`span`,`issues-scope-count`);r.dataset.scopeCount=e.id,t.append(n,r),jZ.append(t)}MZ=j(`nav`,`pr-queue`),MZ.setAttribute(`aria-label`,`Issues`);let r=JJ(HZ.control);return LZ=j(`span`,`issues-sync`),LZ.setAttribute(`role`,`status`),r.prepend(LZ),r.append(HZ.notice),n.append(qJ(jZ),mQ(),MZ,r),NZ=j(`section`,`pr-detail-host`),NZ.setAttribute(`aria-label`,`Issue detail`),t.append(n,NZ),AZ.append(t),window.setInterval(hQ,3e4),fQ(),AZ}function yQ(){VZ&&bQ(),hQ()}function bQ(){if(br(AZ))VZ=!0;else if(VZ=!1,lQ(),kZ.hasSession)pQ();else for(let e of MZ?.querySelectorAll(`[data-issue-key]`)??[]){let t=BZ.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&ZZ(n,t,!1)}}function xQ(e){if(!e){for(let e of WZ.values())clearTimeout(e.timeoutHandle),GZ.set(e.issueKey,{text:W,tone:`error`});WZ.clear();for(let e of KZ.values())clearTimeout(e.timeoutHandle),JZ.set(e.cacheKey,`${W} ${DZ}`);KZ.clear(),fQ()}}function SQ(e){let t=zZ?.issues.find(e=>e.key===RZ);zZ=e,BZ=new Map(e.issues.map(e=>[e.key,e]));let n=e.issues.find(e=>e.key===RZ);n&&n.updatedAt!==t?.updatedAt&&rQ(n),fQ()}function CQ(e){let t=KZ.get(e.requestId);t&&(clearTimeout(t.timeoutHandle),KZ.delete(e.requestId),e.ok&&e.body!==null&&qZ.set(t.cacheKey,e.body),(!e.ok||e.body===null)&&JZ.set(t.cacheKey,e.error||`Could not load description. Select the issue to try again.`),uQ())}function wQ(e){if(typeof e.requestId!=`string`)return;let t=nQ(e.requestId);if(!t)return;let n=t.issueKey;if(e.ok===!0){let r=typeof e.sessionName==`string`?e.sessionName:`issue #${t.issueNumber}`,i=e.pending===!0?` Prompt queued.`:``,a=e.existing===!0?`already open`:`created`;GZ.set(n,{text:`Session "${r}" ${a}.${i}`,tone:`ok`});let o=zZ?.issues.find(e=>e.key===n);o&&typeof e.sessionId==`string`&&(o.sessionId=e.sessionId),fQ();return}let r=typeof e.error==`string`&&e.error?e.error:`Could not open session.`;GZ.set(n,{text:r,tone:`error`}),uQ()}Gn(fQ);var TQ=4e3;function EQ({render:e,holdMs:t=TQ,setTimer:n=setTimeout,clearTimer:r=clearTimeout}){let i=new Set,a=!1,o=null;function s(e){(o===null||e)&&(o!==null&&r(o),o=n(c,t))}function c(){o=null,i.size>0?s(!1):a&&(a=!1,e())}return{begin(e){i.add(e)},settle(e){i.delete(e),s(!0)},request(){i.size===0&&o===null?e():(a=!0,s(!1))},_state(){return{pending:i.size,held:a,armed:o!==null}}}}var DQ=null,OQ=null,kQ=null,AQ=null,jQ=`http://www.w3.org/2000/svg`,MQ=Xl({getAck:zc,setAck:Bc,signature:()=>Ku({posthog:DQ}),isLooking:()=>!br(OQ)}),NQ=EQ({render:T$}),PQ=new Set,FQ=null,IQ=new Map,LQ=new WeakMap,RQ=`this issue`,zQ=mp(()=>OQ),BQ={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},VQ=[{columnId:`stripe`,headText:``,cellClass:`radar-stripe`,track:`auto`,phoneTrack:`auto`,isMagnitude:!1,startsActionCluster:!1},{columnId:`change`,headText:``,cellClass:`radar-change`,track:`auto`,phoneTrack:`minmax(68px, auto)`,isMagnitude:!1,startsActionCluster:!1},{columnId:`copy`,headText:``,cellClass:`radar-issue-copy`,track:`minmax(0, 1fr)`,phoneTrack:`minmax(0, 1fr)`,isMagnitude:!1,startsActionCluster:!0},{columnId:`occurrences`,headText:`Occurrences`,cellClass:`radar-metric`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1},{columnId:`users`,headText:`Users`,cellClass:`radar-metric`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1},{columnId:`trend`,headText:`Trend`,cellClass:`radar-issue-trend`,track:`max-content`,phoneTrack:``,isMagnitude:!0,startsActionCluster:!1}],HQ=VQ.map(e=>e.track).join(` `),UQ=VQ.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),WQ=VQ.findIndex(e=>e.startsActionCluster)+1,GQ=3e4;function KQ(e){let t=j(`div`,e);return t.style.setProperty(`--radar-issue-grid`,HQ),t.style.setProperty(`--radar-issue-grid-phone`,UQ),t.style.setProperty(`--radar-issue-actions-start`,String(WQ)),t}function qQ(e,t){let n=j(`span`,`radar-issue-magnitudes`),r=!1;for(let i of VQ){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function JQ(e){return Number.isFinite(e)?String(e):`0`}function YQ(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${dp(Date.now()-e)}`}function XQ(e){return typeof e?.issueId==`string`?e.issueId:``}function ZQ(e,t){return[String(e??``),String(t??``)].join(`::`)}function QQ(e,t,n){let r=IQ.get(ZQ(e,t));if(!r||!r.copy.isConnected)return!1;let i=lu(n);return i?(r.summary||(r.summary=j(`span`,`radar-issue-summary`),r.copy.insertBefore(r.summary,r.copy.querySelector(`.radar-issue-meta`))),r.summary.textContent=i,!0):(r.summary?.remove(),r.summary=null,!0)}function $Q(e,t,n){let r=XQ(e);if(!r)return;FQ?.dialog.close();let i=Pp({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>t$(e)});FQ={projectId:String(t??``),issueId:r,dialog:i},i.update(uu(e))}function e$(){if(!FQ)return;if(!FQ.dialog.isOpen()){FQ=null;return}let e=du(DQ,FQ.projectId,FQ.issueId);e&&FQ.dialog.update(uu(e))}function t$(e){let t=XQ(e);t&&K(`get-radar-report`,{issueId:t},{timeoutMs:q}).then(n=>{n.ok?n.found?Np({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):Np({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):Np({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{Np({issueId:t,issueTitle:String(e.title??``),error:ff(n,q)})})}function n$(){let e=j(`div`,`radar-issue-actions`),t=j(`span`,`radar-issue-action-status`);t.setAttribute(`role`,`status`),e.append(t);let n=[],r=null,i=()=>{r?.remove(),r=null},a=t=>{i(),r=t,e.append(t)},o=e=>{for(let t of n)t.disabled=e};return{addButton:(r,i,a)=>{let o=j(`button`,`radar-issue-action`,r);return o.type=`button`,o.title=i,o.addEventListener(`click`,e=>{e.stopPropagation(),a()}),n.push(o),e.insertBefore(o,t),o},request:(e,n,r,a,s,c=null)=>{NQ.begin(e),o(!0),i(),uf(t,`busy`,a);let l=(n,r)=>{o(!1),i(),uf(t,n,r),NQ.settle(e)};K(n,r,{timeoutMs:GQ}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,ff(e,GQ)))},showFollowUp:a,wrap:e}}function r$(e){let t=j(`button`,`radar-issue-action radar-open-trace`,`Open trace`);return t.type=`button`,t.title=`Open the session trace`,t.addEventListener(`click`,t=>{t.stopPropagation(),w$(e)}),t}function i$(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=n$(),s=(n,r,a,o,s=null)=>i(`${n}:${e.issueId}`,n,{projectId:t,issueId:e.issueId,...r},a,o,s);return e.inFlight&&r(`View investigation`,`Watch the running investigation`,()=>$Q(e,t,n)),!e.inFlight&&e.verdict&&XQ(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>t$(e)),e.inFlight||r(`Open session`,`Paste an investigation prompt into the mapped project session`,()=>{s(`radar-open-session`,{},`Opening session`,e=>e.pending?`Starting ${String(e.sessionName||`session`)}; the prompt lands when it is up`:`Prompt pasted into ${String(e.sessionName||`the session`)}; press Enter there`,e=>{typeof e.sessionId==`string`&&AQ&&a(r$(e.sessionId))})}),r(`Resolve`,`Mark this issue resolved in PostHog`,()=>{s(`radar-issue-action`,{action:`resolve`},`Resolving in PostHog`,()=>`Marked resolved`)}),r(`Suppress`,`Suppress this issue in PostHog`,()=>{Rf({title:`Suppress issue`,message:`This marks the issue suppressed in PostHog for everyone on the project.`,confirmLabel:`Suppress`,danger:!0,onConfirm:()=>s(`radar-issue-action`,{action:`suppress`},`Suppressing in PostHog`,()=>`Marked suppressed`)})}),o}function a$(e){return Th()?RQ:e}function o$(e){let t=LQ.get(e);t&&(e.title=t())}function s$(){if(OQ)for(let e of OQ.querySelectorAll(`.radar-issue-reportable`))o$(e)}Dh(s$);function c$(e,t,n){e.classList.add(`radar-issue-reportable`),LQ.set(e,t),o$(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function l$(e,t,n){let r=j(`div`,`radar-issue`);r.dataset.severity=wu(e.change);let i=j(`span`,`radar-stripe`);i.setAttribute(`aria-hidden`,`true`);let a=j(`span`,`radar-change`,BQ[e.change??``]||String(e.change||`unknown`)),o=pr(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),s=j(`span`,`radar-metric`);s.append(j(`span`,`radar-metric-value`,JQ(e.occurrences)),j(`span`,`radar-metric-label`,`occ`));let c=j(`span`,`radar-metric`);c.append(j(`span`,`radar-metric-value`,JQ(e.users)),j(`span`,`radar-metric-label`,`users`));let l=Ou(e.history),u=ku(l,64,16),d=u?document.createElementNS(jQ,`svg`):null;if(d){d.classList.add(`radar-sparkline`),d.setAttribute(`viewBox`,`0 0 64 16`),d.setAttribute(`width`,`64`),d.setAttribute(`height`,`16`),d.setAttribute(`role`,`img`),d.setAttribute(`focusable`,`false`);let e=document.createElementNS(jQ,`title`);e.textContent=ju(l);let t=document.createElementNS(jQ,`polyline`);t.setAttribute(`points`,u),d.append(e,t)}let f=lu(e),p=j(`span`,`radar-issue-copy`);p.append(o);let m=null;f&&(m=j(`span`,`radar-issue-summary`),m.textContent=f,p.append(m)),IQ.set(ZQ(t,e.issueId),{copy:p,summary:m});let h=j(`span`,`radar-issue-meta`),g=Tu(e);if(g!==null){let e=j(`span`,`radar-issue-seen`);e.title=new Date(g).toLocaleString(),zQ.track(e,g,fp),h.append(e)}let _=Eu(e);_&&h.append(j(`span`,`radar-issue-status`,_));let v=String(e.title||e.issueId);if(e.inFlight){let i=j(`span`,`radar-verdict`,`investigating`);i.dataset.verdict=`INVESTIGATING`,h.append(i);let a=typeof e.startedAt==`number`?e.startedAt:null;if(a!==null&&Number.isFinite(a)&&a>0){let e=j(`span`,`radar-issue-elapsed`);zQ.track(e,a,YQ),h.append(e)}XQ(e)&&c$(r,()=>`Watch the investigation of ${a$(v)}`,()=>$Q(e,t,n))}if(!e.inFlight&&e.verdict){let t=j(`span`,`radar-verdict`,gu(e.verdict));t.dataset.verdict=e.verdict,h.append(t),XQ(e)&&c$(r,()=>`View investigation report for ${a$(v)}`,()=>t$(e))}h.childElementCount>0&&p.append(h);let y=j(`span`,`radar-issue-trend`);d&&y.append(d);let b=Au(l);if(b){let e=j(`span`,`radar-delta`,`${b.direction===`up`?`+`:b.direction===`down`?`-`:`=`}${b.percent}%`);e.dataset.direction=b.direction,y.append(e)}let x={stripe:i,change:a,copy:p,occurrences:s,users:c,trend:y};return qQ(r,e=>x[e.columnId]),XQ(e)&&r.append(i$(e,t,n)),r}var u$=(e,t,n)=>vr(`radar`,e,t,n);function d$(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${dp(e.staleMs)}`:``}function f$(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=j(r,i,Iu(t));o.title=String(t.name||``),e.append(o);let s=n?Lu(t.host):``;s&&e.append(j(`span`,a,s))}function p$(){let e=KQ(`radar-column-heads`);for(let t of VQ){if(!t.headText){e.append(j(`span`));continue}let n=j(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function m$(e,t){let n=e.project,r=j(`div`,`radar-project`),i=Ju(n.issues),a=Mu(i),o=j(`div`,`radar-project-head`);f$(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=j(`div`,`radar-project-summary`);s.append(u$(a.active===1?`active issue`:`active issues`,JQ(a.active))),s.append(u$(`spiking`,JQ(a.spiking),a.spiking>0?`crit`:null)),s.append(u$(`needs you`,JQ(a.needsHuman),a.needsHuman>0?`warn`:null));let c=d$(e);if(c){let t=j(`span`,`radar-project-alert`,c);t.dataset.tone=e.error?`crit`:`warn`,s.append(t)}if(r.append(s),i.length===0)return r;r.append(p$());let l=KQ(`radar-issues`);for(let e of i)l.append(l$(e,n.projectId,Iu(n)));return r.append(l),r}function h$(e,t){let n=e.project,r=j(`div`,`radar-quiet-row`),i=j(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),f$(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(j(`span`,`radar-quiet-count`,`0 issues`)),r}var g$=(e,t)=>_r(`radar`,e,t);function _$(){let e=j(`div`,`radar-issue`);return e.dataset.skeleton=``,qQ(e,e=>j(`span`,e.cellClass)),e}function v$(){let e=KQ(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(_$());return e}function y$(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function b$(e,t=`ready`){let n=g$(`Errors`);if(t===`pending`)return n.append(v$()),n;if(t===`placeholder`||e.length===0){let e=j(`p`,`radar-unconfigured`,xu(DQ)),t=om(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=y$(DQ);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=j(`div`,`radar-global-tick`),i=Number(DQ?.intervalMinutes);zQ.track(r,DQ?.ts,e=>{let t=`polled ${fp(e)}`;return!Number.isFinite(i)||i<=0?t:`${t}, every ${i}m`}),n.append(r);let a=i>0?i*6e4:0,{loud:o,quiet:s}=Bu(e,Date.now(),{intervalMs:a}),c=Ru(e);for(let e of o)n.append(m$(e,c));if(s.length===0)return n;let l=j(`div`,`radar-quiet`);for(let e of s)l.append(h$(e,c));return n.append(l),n}function x$(e){let{addButton:t,request:n,wrap:r}=n$();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{t$({issueId:e.issueId,title:e.title})}),t(`Archive`,`Remove this investigation from the inbox`,()=>{n(`archive:${e.id}`,`radar-archive-investigation`,{id:e.id},`Archiving`,()=>`Archived`,()=>PQ.add(e.id))}),r}function S$(e){let t=j(`div`,`radar-investigation`),n=j(`span`,`radar-verdict`,gu(e.verdict));n.dataset.verdict=e.verdict;let r=pr(`radar-issue-title`,e.title,e.url),i=j(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=j(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=j(`a`,`radar-investigation-pr`,`fix PR`);t.href=e.prUrl,t.target=`_blank`,t.rel=`noopener`,t.title=e.prUrl,i.append(t)}if(t.append(n),e.mode===`fix`){let e=j(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=j(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=j(`span`,`radar-investigation-time`,fp(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(x$(e)),t}function C$(e){let t=g$(`Investigations`,`completed, not yet archived`),n=j(`div`,`radar-investigations`);for(let t of e)n.append(S$(t));return t.append(n),t}function w$(e){AQ&&AQ(e)}function T$(){if(!OQ)return;OQ.textContent=``,IQ.clear(),zQ.reset();let e=yr(DQ),t=Vu(DQ,PQ),n=Cu(DQ,e.length);OQ.append(b$(e,n)),t.length>0&&OQ.append(C$(t))}function E$(){NQ.request()}function D$(){kQ&&kQ(MQ.refresh())}function O$(){MQ.acknowledge(),D$()}function k$(e){kQ=e,D$()}function A$(e){AQ=e}function j$(e){if(OQ)return OQ;let t=j(`div`,`radar-content`);return e.appendChild(t),OQ=t,zQ.ensure(),T$(),t}function M$(e){DQ=e,Hu(DQ,PQ),E$(),D$(),e$()}function N$(e){let t=du(DQ,e.projectId,e.issueId)?.inFlight===!0;if(!fu(DQ,e))return;e$();let n=du(DQ,e.projectId,e.issueId);t&&QQ(e.projectId,e.issueId,n)||E$()}function P$(e){FQ?.dialog.isOpen()&&mu(FQ,e)&&FQ.dialog.update(pu(e))}function F$(e){hu(DQ,e)?(e$(),E$(),D$()):P$(e)}var I$=Xh({requestPrefix:`session-setup`,dialogClass:`dialog coherence-journal-drawer session-setup-dialog`,titleText:`Session setup`,unavailableLabel:`Session setup unavailable`,timeoutMs:15e3});function L$(e){let t=j(`ul`,`session-setup-list`);return t.append(...e.map(e=>j(`li`,null,e))),t}function R$(e,t){e.replaceChildren();function n(t,n){if(n.length===0)return;let r=_r(`session-setup`,t);r.append(...n),e.append(r)}n(`Model`,t.model?[j(`p`,null,t.model)]:[]),n(`Plugins`,t.plugins.map(e=>{let t=j(`div`,`session-setup-plugin`);return t.append(j(`h3`,null,e.name)),e.skills.length>0&&t.append(j(`p`,`session-setup-label`,`Skills`),L$(e.skills)),e.agents.length>0&&t.append(j(`p`,`session-setup-label`,`Agents`),L$(e.agents)),t})),n(`MCP servers`,t.mcpServers.length>0?[L$(t.mcpServers)]:[]),n(`Hooks`,[...t.hookEvents.map(e=>{let t=j(`p`,`session-setup-hook`);return t.append(j(`span`,null,e.event),j(`span`,`session-setup-label`,`${e.runCount} runs`)),t}),...t.hookCommands.map(e=>j(`pre`,`coherence-command`,e))]),n(`Skills`,t.skills.length>0?[L$(t.skills)]:[]),n(`Agents`,t.agents.length>0?[L$(t.agents)]:[])}function z$(e){let t=j(`p`,`coherence-journal-status`,`Loading session setup`);t.setAttribute(`role`,`status`);let n=j(`div`,`session-setup-sections`);I$.open({sessionId:e,status:t,body:[t,n],parts:{sections:n},buildRequest:t=>({type:`session-setup`,id:e,requestId:t})})}function B$(e){let t=I$.settleResponse(e);if(!t)return;if(!e.ok||!e.setup){t.status.textContent=e.error||`Could not read session setup`;return}let n=t.parts.sections;R$(n,e.setup),t.status.textContent=n.childElementCount>0?``:`No session setup recorded yet`,t.status.hidden=n.childElementCount>0}function V$(e){return{skipPerms:e.skipPerms??e.dangerouslySkipPermissions??!1,saneYolo:e.saneYolo===!0,worktree:e.worktree??e.isWorktree??!1,workspace:e.workspace??e.isWorkspace??!1,remoteWorkspace:e.remoteWorkspace??null,guarded:e.guarded??e.isGuarded??!1,guardrailsReleased:e.guardrailsReleased??e.isGuardrailsReleased??!1,ephemeral:e.ephemeral===!0,ownerId:e.ownerId??null,path:e.path,stateSince:e.stateSince,taskTitle:typeof e.taskTitle==`string`?e.taskTitle:null,taskTitleIsCustom:e.taskTitleIsCustom===!0}}var H$=null,U$=null,W$=null,G$=null,K$=null,q$=null,J$=-1,Y$=null,X$={isRightToLeft:!1,arcProgress:0},Z$=1,Q$=3;function $$(){if(!H$||Y$===null)return;let e=Qo({viewportWidthPx:document.documentElement.clientWidth,viewportHeightPx:document.documentElement.clientHeight,verticalProgress:Y$,...X$});ur(H$,es(e,Z$,window.devicePixelRatio))}function e1(){q$!==null&&(clearTimeout(q$),q$=null)}function t1(e=yc()){return Ho({isEnabled:e,hasReducedMotion:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,isPhone:ib(),options:ol()})}function n1(e){e.onanimationend=null,e.style.animation=`none`,G$&&(G$.style.animation=`none`),e.hidden=!0}function r1(e,t){if(!H$||!U$||!W$||!G$||t1())return;let n=ol();e1();let r=Vo(n,J$,Math.random,t);if(n1(H$),!r){q$=setTimeout(()=>r1(!1),1e3);return}Y$=r.verticalProgress,X$={isRightToLeft:r.isRightToLeft,arcProgress:r.arcProgress},Z$=n.flyingAnimalsScale,$$();let i=No[r.animalIndex];U$.className=`nyan-sprite ${i.sprite}`,W$.className=`nyan-trail ${i.trail}`,J$=r.animalIndex,K$?.classList.remove(`is-booped`),H$.hidden=!1,H$.offsetWidth,H$.style.animation=`nyan-fly ${r.durationSeconds}s linear`,G$.style.animation=`nyan-trail-hold ${r.durationSeconds}s linear`,e&&(H$.style.animationDelay=`-${r.firstDelaySeconds}s`,G$.style.animationDelay=`-${r.firstDelaySeconds}s`),H$.onanimationend=e=>{H$&&e.target===H$&&(n1(H$),q$=setTimeout(()=>r1(!1),r.gapMs))}}function i1(){if(H$&&G$&&K$){K$.classList.remove(`is-booped`),K$.offsetWidth,K$.classList.add(`is-booped`);for(let e of[...H$.getAnimations(),...G$.getAnimations()])e.playbackRate=Q$}}function a1(){if(H$||t1())return;H$=document.createElement(`div`),H$.className=`nyan-flight`,H$.setAttribute(`aria-hidden`,`true`);let e=document.createElement(`div`);e.className=`nyan-trail-window`,G$=document.createElement(`div`),G$.className=`nyan-trail-hold`,W$=document.createElement(`div`),G$.append(W$),e.append(G$),U$=document.createElement(`div`),K$=document.createElement(`div`),K$.className=`nyan-boop`,K$.append(U$),K$.addEventListener(`pointerdown`,i1),H$.append(e,K$),document.body.appendChild(H$),window.addEventListener(`resize`,$$),window.addEventListener(`orientationchange`,$$),r1(!0)}function o1(e){a1(),r1(!1,e)}function s1(){e1(),window.removeEventListener(`resize`,$$),window.removeEventListener(`orientationchange`,$$),H$?.remove(),H$=null,U$=null,W$=null,G$=null,K$=null,J$=-1,Y$=null}var c1=!1;function l1(e){let t=document.documentElement;if(c1||(c1=!0,ab(()=>l1(yc())),window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,()=>l1(yc()))),e){if(t.dataset.flyingAnimals=`true`,t1(e)){s1();return}a1()}else delete t.dataset.flyingAnimals,s1()}function u1(){let e=j(`div`),t=j(`p`,`flying-animals-status`);t.id=`flying-animals-gallery-status`,t.setAttribute(`role`,`status`);let n=j(`div`,`flying-animals-gallery`);n.setAttribute(`aria-label`,`Animal gallery`);let r=[],i=()=>{let e=t1(),n=zo(ol().flyingAnimalsExcludedSprites);t.textContent=[e,n?``:`No animals are included, so automatic flights are paused.`].filter(Boolean).join(` `);for(let t of r)t.disabled=e!==null},a=ol();for(let e of No){let o=j(`article`,`flying-animal-tile`),s=ul(e),c=j(`label`,`flying-animal-include`),l=j(`input`,`settings-view-checkbox`);l.type=`checkbox`,l.checked=!a.flyingAnimalsExcludedSprites.includes(e.sprite),l.setAttribute(`aria-label`,`Include ${e.name}`),l.addEventListener(`change`,()=>{let t=new Set(ol().flyingAnimalsExcludedSprites);l.checked&&t.delete(e.sprite),l.checked||t.add(e.sprite),al([...t]),l1(yc()),i()}),c.append(l,document.createTextNode(`Include`));let u=j(`button`,`btn-dialog btn-dialog-cancel`,`Fly now`);u.type=`button`,u.setAttribute(`aria-describedby`,t.id),u.addEventListener(`click`,()=>o1(e.sprite)),r.push(u),o.append(s,j(`h2`,`flying-animal-name`,e.name),c,u),n.append(o)}return i(),e.append(t,n),e}var d1=`johncwaters/glimmervoid`,f1={maxConcurrentInvestigations:Math.ceil,minUsersToInvestigate:Math.ceil,userEscalationThreshold:Math.ceil,trafficSpikeMinUsers:Math.ceil,trafficSpikeBaselineDays:Math.floor};[...Object.entries(f1).map(([e,t])=>({path:[`posthog`,e],min:1,round:t}))];var p1=Object.freeze([`auto`,`calculate`,`display`]),m1=Object.freeze([`codex`,`grok`]),h1=Object.freeze([`dailyUsd`,`monthlyUsd`]),g1=e=>t({error:`${e} must be a boolean`}).optional(),_1=(e,t=!1)=>{let n=l({error:`${e} must be a string`});return(t?n.transform(e=>e.trim()):n).optional()},v1=e=>e.label?e.label:e.max==null?e.exclusiveMin?`greater than ${e.min}`:`at least ${e.min}`:`between ${e.min} and ${e.max}`,y1=(e,t=k)=>c({error:`${e} must be ${v1(t)}`}).finite().refine(e=>!t.exclusiveMin||e>t.min,{message:`${e} must be ${v1(t)}`}).refine(e=>t.exclusiveMin||e>=t.min,{message:`${e} must be ${v1(t)}`}).refine(e=>t.max==null||e<=t.max,{message:`${e} must be ${v1(t)}`}).optional(),b1=(e,t)=>y1(e,t).unwrap().int({error:`${e} must be a whole number ${v1(t)}`}).optional(),x1=(e,t)=>c({error:`${e} must be an integer between ${t.min} and ${t.max}`}).int({error:`${e} must be an integer between ${t.min} and ${t.max}`}).min(t.min,{error:`${e} must be an integer between ${t.min} and ${t.max}`}).max(t.max,{error:`${e} must be an integer between ${t.min} and ${t.max}`}).optional(),S1=(e,t)=>g(t,{error:`${e} must be an object`}).nullable().optional(),C1=Object.freeze([`release`,`main`]),w1=Object.freeze([`report`,`fix`]);g({refiner:g({enabled:g1(`taskTitle.refiner.enabled`),model:_1(`taskTitle.refiner.model`,!0),minIntervalSeconds:y1(`taskTitle.refiner.minIntervalSeconds`,{min:0}),timeoutSeconds:y1(`taskTitle.refiner.timeoutSeconds`,Nt)},{error:`taskTitle.refiner must be an object`}).nullable().optional()},{error:`taskTitle must be an object`}).nullable().optional();var T1={enabled:g1(`branchGc.enabled`),worktrees:g1(`branchGc.worktrees`),prefixes:p(l({error:`branchGc.prefixes must be an array of strings`}).min(1,{error:`branchGc.prefixes entries must be non-empty strings`}),{error:`branchGc.prefixes must be an array of strings`}).optional(),dryRun:g1(`branchGc.dryRun`),staleDays:y1(`branchGc.staleDays`,Pt),deleteUnmerged:g1(`branchGc.deleteUnmerged`),intervalMs:y1(`branchGc.intervalMs`,Ft)},E1=g(T1,{error:`branchGc must be an object`});S1(`branchGc`,T1),E1.omit({prefixes:!0,dryRun:!0,worktrees:!0}).nullable().optional(),Object.freeze([`enabled`,`deleteUnmerged`]),Object.freeze([`staleDays`,`intervalMs`]),S1(`postTurnChecks`,{mode:u(w1,{error:`postTurnChecks.mode must be one of report, fix`}).optional()}),S1(`visions`,{enabled:g1(`visions.enabled`),autoFix:g1(`visions.autoFix`),projects:p(l({error:`visions.projects must be an array of strings`}),{error:`visions.projects must be an array of strings`}).optional(),dispatch:S1(`visions.dispatch`,{enabled:g1(`visions.dispatch.enabled`),model:_1(`visions.dispatch.model`,!0),quietMs:b1(`visions.dispatch.quietMs`,It),cooldownMs:b1(`visions.dispatch.cooldownMs`,Lt),maxPerHour:b1(`visions.dispatch.maxPerHour`,Rt),activityMaxPerHour:b1(`visions.dispatch.activityMaxPerHour`,zt),dispatchTimeoutSeconds:b1(`visions.dispatch.dispatchTimeoutSeconds`,Bt)}),intent:S1(`visions.intent`,{threadTtlMs:b1(`visions.intent.threadTtlMs`,Vt)})}),g({teams:p(l({error:`github.teams must be an array of org/slug strings`}).refine(e=>ae(e)!==null,{message:`github.teams entries must be org/slug with valid GitHub segments`}),{error:`github.teams must be an array of org/slug strings`}).optional()},{error:`github must be an object`}).nullable().optional(),S1(`teamReview`,{enabled:g1(`teamReview.enabled`),autoRebaseMyPrs:g1(`teamReview.autoRebaseMyPrs`),keepMergeableEnabled:g1(`teamReview.keepMergeableEnabled`),mergeQueueEnabled:g1(`teamReview.mergeQueueEnabled`),keepMergeableTimeoutMinutes:x1(`teamReview.keepMergeableTimeoutMinutes`,sn),org:_1(`teamReview.org`,!0),team:_1(`teamReview.team`,!0),skill:_1(`teamReview.skill`,!0),reReviewAfterHours:y1(`teamReview.reReviewAfterHours`),skipIdleAfterDays:y1(`teamReview.skipIdleAfterDays`)}),S1(`benchmarks`,{enabled:g1(`benchmarks.enabled`)}),S1(`coherence`,{enabled:g1(`coherence.enabled`)});var D1={intervalMinutes:Ht,maxConcurrentInvestigations:Ut,investigationTimeoutSeconds:Wt,fixTimeoutSeconds:Yt,minUsersToInvestigate:Gt,userEscalationThreshold:Kt,recurrenceWindowDays:qt,transientRecurrenceLimit:Jt,trafficSpikeMultiplier:Xt,trafficSpikeMinUsers:Zt,trafficSpikeCooldownMinutes:Qt,trafficSpikeBaselineDays:$t};S1(`posthog`,{enabled:g1(`posthog.enabled`),recurrenceDedupe:g1(`posthog.recurrenceDedupe`),trafficSpikeEnabled:g1(`posthog.trafficSpikeEnabled`),autoFix:g1(`posthog.autoFix`),host:_1(`posthog.host`,!0).refine(e=>e==null||!e||/^https?:\/\//i.test(e),{message:`posthog.host must be an http(s) URL`}),apiKey:_1(`posthog.apiKey`,!0),repoPath:_1(`posthog.repoPath`,!0),projects:a([m(`all`),p(c({error:`posthog.projects must be "all" or an array of positive integer project ids`}).int({error:`posthog.projects must be "all" or an array of positive integer project ids`}).positive({error:`posthog.projects must be "all" or an array of positive integer project ids`}),{error:`posthog.projects must be "all" or an array of positive integer project ids`})],{error:`posthog.projects must be "all" or an array of positive integer project ids`}).optional(),projectMap:i(l(),e(),{error:`posthog.projectMap must be an object`}).optional(),...Object.fromEntries(Object.entries(D1).map(([e,t])=>[e,Object.hasOwn(f1,e)?b1(`posthog.${e}`,t):y1(`posthog.${e}`,t)]))}),`${p1.join(`, `)}`,Object.fromEntries(m1.map(e=>[e,g1(`usage.vendors.${e}`)])),Object.fromEntries(h1.map(e=>[e,c({error:`usage.budget.${e} must be a positive number or null`}).positive({error:`usage.budget.${e} must be a positive number or null`}).nullable().optional()])),S1(`telegram`,{botToken:_1(`telegram.botToken`,!0),chatId:_1(`telegram.chatId`,!0)}),g({enabled:g1(`ingest.enabled`)},{error:`ingest must be an object`}).passthrough().optional(),g({enabled:g1(`trace.enabled`)},{error:`trace must be an object`}).optional(),g({enabled:g1(`planReview.enabled`)},{error:`planReview must be an object`}).optional();var O1=e=>p(l({error:`${e} must be an array of paths`}).trim().min(1,{error:`${e} must be an array of paths`}),{error:`${e} must be an array of paths`}).optional(),k1={unguardedRepos:O1(`guardrails.unguardedRepos`),blockedPaths:O1(`guardrails.blockedPaths`),unreadablePaths:O1(`guardrails.unreadablePaths`)};g(k1,{error:`guardrails must be an object`}).passthrough().optional();var A1={enabled:g1(`telemetry.enabled`)};g(A1,{error:`telemetry must be an object`}).strict().optional(),g(A1,{error:`telemetry must be an object`}).passthrough().optional();var j1={scope:`browser`,access:`editable`,takesEffect:`now`},M1={scope:`browser`,access:`advanced`,takesEffect:`now`},X={scope:`machine`,access:`editable`,takesEffect:`now`},N1={scope:`machine`,access:`editable`,takesEffect:`new-sessions`},P1={scope:`machine`,access:`readout`,takesEffect:`now`},Z={scope:`machine`,access:`file-only`},F1=1e3,I1=60,L1=60,R1=F1*I1,z1=R1*L1,B1=z1*24,V1={label:`investigations`,storedPerDisplay:1},H1={label:`sessions`,storedPerDisplay:1},U1={label:`recurrences`,storedPerDisplay:1},W1={label:`actions`,storedPerDisplay:1},G1={label:`seconds`,storedPerDisplay:1},K1={label:`minutes`,storedPerDisplay:1},q1={label:`hours`,storedPerDisplay:1},J1={label:`days`,storedPerDisplay:1},Y1={label:`seconds`,storedPerDisplay:F1,storedLabel:`ms`},X1={label:`minutes`,storedPerDisplay:R1,storedLabel:`ms`},Z1={label:`minutes`,storedPerDisplay:I1,storedLabel:`seconds`},Q1={label:`hours`,storedPerDisplay:z1,storedLabel:`ms`},$1={label:`hours`,storedPerDisplay:L1,storedLabel:`minutes`},e0={label:`days`,storedPerDisplay:B1,storedLabel:`ms`},t0={label:`USD`,storedPerDisplay:1},n0={label:`users`,storedPerDisplay:1},r0={label:`reviews per hour`,storedPerDisplay:1},i0={label:`times`,storedPerDisplay:1},Q=`A tuning knob kept out of the Settings view; the default suits almost every install.`,a0=`A diagnostic switch kept out of the Settings view; change it in config.json while investigating.`,o0=`Changes how the server process or its worktrees behave, so it is set in config.json with a restart or new sessions in mind.`,s0=`A structured value with no dashboard control; edit it in config.json.`,c0=`Never editable from the dashboard by rule; edit it in config.json.`;function l0(e){return e.map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}))}var u0=Object.freeze({"machine-terminal":{title:`Terminal`,description:`Terminal behavior shared by dashboard clients.`},"machine-detection-sessions":{title:`Detection and sessions`,description:`Config-file-only detection, timing, worktree and process settings.`},"lanes-ingest":{title:`Ingest`,description:`The machine-context sources behind Visions.`}}),d0=Object.freeze([{id:`browser-appearance`,level:`browser`,title:`Appearance`,description:`How this browser draws the dashboard.`,legacyIds:[`browser-flying-animals`,`animals`,`flying-animals`],settings:[{id:`theme`,path:`pref:themeId`,title:`Theme`,description:`Color scheme for the dashboard.`,control:`select`,optionsFrom:`themes`,keywords:[`color`,`palette`],defaultValue:`phyrexian`,...j1},{id:`session-usage-chips`,path:`pref:sessionUsageChips`,title:`Show usage on session cards`,description:`Shows each card's transcript token count and CLI-reported cost when available, otherwise a calculated API list-price estimate.`,control:`toggle`,keywords:[`usage`,`cost`,`tokens`,`card`,`price`],defaultValue:!1,...j1},{id:`phone-arrow-pad`,path:`pref:phoneArrowPad`,title:`Swipe arrow pad on phone (experimental)`,description:`Replace the four arrow keys above the phone keyboard with one pad: swipe on it to send arrow keys, one per short drag.`,control:`toggle`,keywords:[`experimental`,`mobile`,`keys`,`arrows`,`swipe`,`gesture`],defaultValue:!1,...j1},{id:`flying-animals`,path:`pref:flyingAnimalsEnabled`,title:`Flying animals`,description:`Show animated animals flying across the dashboard.`,control:`toggle`,keywords:[`animation`,`motion`,`animals`],defaultValue:!1,...j1},{id:`animals-min-gap`,path:`pref:flyingAnimalsMinGapSeconds`,title:`Time between flights: minimum`,description:`Shortest pause between flights.`,control:`number`,integer:!1,step:.1,range:Et,unit:G1,maximumSettingId:`animals-max-gap`,keywords:[`animals`,`frequency`],defaultValue:kt.flyingAnimalsMinGapSeconds,...M1},{id:`animals-max-gap`,path:`pref:flyingAnimalsMaxGapSeconds`,title:`Time between flights: maximum`,description:`Longest pause between flights.`,control:`number`,integer:!1,step:.1,range:Et,unit:G1,keywords:[`animals`,`frequency`],defaultValue:kt.flyingAnimalsMaxGapSeconds,...M1},{id:`animals-min-duration`,path:`pref:flyingAnimalsMinDurationSeconds`,title:`Flight duration: minimum`,description:`Shortest flight, for faster animals.`,control:`number`,integer:!1,step:.1,range:Dt,unit:G1,maximumSettingId:`animals-max-duration`,keywords:[`animals`,`speed`],defaultValue:kt.flyingAnimalsMinDurationSeconds,...M1},{id:`animals-max-duration`,path:`pref:flyingAnimalsMaxDurationSeconds`,title:`Flight duration: maximum`,description:`Longest flight, for slower animals.`,control:`number`,integer:!1,step:.1,range:Dt,unit:G1,keywords:[`animals`,`speed`],defaultValue:kt.flyingAnimalsMaxDurationSeconds,...M1},{id:`animals-scale`,path:`pref:flyingAnimalsScale`,title:`Size multiplier`,description:`Scale applied on top of the viewport size.`,control:`number`,integer:!1,step:.1,range:Ot,unit:i0,keywords:[`animals`,`size`],defaultValue:kt.flyingAnimalsScale,...M1},{id:`animals-on-phone`,path:`pref:flyingAnimalsOnPhone`,title:`Show on phone layout`,description:`Allow flights on the phone layout.`,control:`toggle`,keywords:[`animals`,`mobile`],defaultValue:kt.flyingAnimalsOnPhone,...M1}]},{id:`browser-notifications`,level:`browser`,title:`Notifications`,description:`How this browser, and the Telegram bot shared by every lane, get your attention.`,settings:[{id:`alert-sounds-enabled`,path:`pref:soundEnabled`,title:`Alert sounds`,legacyIds:[{sectionId:`browser-appearance`,settingId:`alert-sounds-enabled`}],description:`Play sounds when a session needs attention and when a merge celebration plays. The same switch as the note button in the desktop header.`,control:`toggle`,keywords:[`audio`,`mute`,`sound`,`notification`],defaultValue:!0,...j1},{id:`alert-sound`,path:`pref:soundId`,title:`Alert sound`,legacyIds:[{sectionId:`browser-appearance`,settingId:`alert-sound`}],description:`Sound played when a session needs attention. Your own .ogg, .mp3, .wav, .m4a or .webm files dropped into the sounds folder of the Glimmervoid home (~/.glimmervoid/sounds/, or $GLIMMERVOID_HOME/sounds/) are listed after the built-in sounds. Glimmervoid never creates that folder, so make it yourself; new files show up the next time Settings opens.`,control:`select`,optionsFrom:`sounds`,keywords:[`audio`,`notification`,`custom`],defaultValue:`chime`,...j1},{id:`desktop-notifications`,path:`pref:notificationsEnabled`,title:`Desktop notifications`,legacyIds:[{sectionId:`browser-appearance`,settingId:`desktop-notifications`}],description:`Raise a browser notification when a session needs attention while this dashboard is in the background.`,control:`toggle`,keywords:[`browser`,`attention`],defaultValue:!0,...j1}]},{id:`machine-telegram`,level:`machine`,parent:`browser-notifications`,title:`Telegram`,description:`One bot shared by session, PR review and PostHog notifications.`,legacyIds:[`telegram`,`notifications`],settings:[{id:`telegram-bot-token`,path:`telegram.botToken`,title:`Bot token`,description:`Credential used by the shared Telegram bot. Create a bot by messaging @BotFather in Telegram and sending /newbot; it replies with this token. When GLIMMERVOID_TELEGRAM_BOT_TOKEN supplies it, this field is read-only.`,control:`password`,keywords:[`credential`,`api`],defaultValue:``,...X},{id:`telegram-chat-id`,path:`telegram.chatId`,title:`Chat id`,description:`Destination chat for enabled Telegram lanes. Send your bot any message, then open https://api.telegram.org/bot<token>/getUpdates in a browser and copy the number under message.chat.id.`,control:`text`,keywords:[`destination`,`channel`],defaultValue:``,...X},{id:`telegram-session-notifications`,path:`telegramNotifications`,title:`Send session notifications`,description:`Send session completion, input and failure alerts when no dashboard is open. Unacknowledged alerts also escalate after the phone escalation delay while a dashboard remains open.`,control:`toggle`,keywords:[`phone`,`off dashboard`,`test`],defaultValue:!1,status:`telegram-delivery`,...X}]},{id:`machine-sessions`,level:`machine`,title:`Sessions`,description:`How sessions start, where projects are found, and what the dashboard shows for them.`,legacyIds:[`machine-general`,`general`,`machine-repositories`,`repos`,`repositories`],settings:[{id:`auto-resume`,path:`autoResume`,title:`Auto-resume sessions on startup`,description:`Resume conversations that were live when Glimmervoid last shut down or crashed, and tell sessions that were mid-turn, or had a background agent, monitor or scheduled wakeup in flight, to continue.`,control:`toggle`,keywords:[`startup`,`conversation`],defaultValue:!0,...X},{id:`conversation-view`,path:`conversationView`,title:`Conversation view (experimental)`,description:`Let each Claude Code and Codex session turn on a Conversation face from its card menu, which renders the transcript as messages, approvals and a composer. Sessions stay on the terminal until you turn it on for them. A Claude Code session started while this is on can answer its permission prompts and questions there. A Codex session connects on its next start, through a local app-server so approvals can be answered from the dashboard; guarded Codex sessions and those that bypass Codex hook trust keep the terminal only.`,control:`toggle`,keywords:[`experimental`,`transcript`,`chat`,`codex`,`claude`],defaultValue:!1,...X},{id:`zen-view`,path:`zenView`,title:`Zen view (experimental)`,description:`Add a Zen tab that shows no terminal until a session needs you, then shows only that session and what it needs.`,control:`toggle`,keywords:[`experimental`,`calm`,`focus`,`attention`,`needs you`],defaultValue:!1,...X},{id:`tab-order`,path:`viewTabOrder`,title:`Tab order`,description:`The order of the dashboard tabs in every browser: the header on desktop and the More menu on a phone. You can also drag a tab in the desktop header.`,control:`tab-order`,keywords:[`tabs`,`order`,`rearrange`,`reorder`,`header`,`more`,`menu`],defaultValue:[],...X},{id:`remote-sessions`,path:`remoteSessions`,title:`Remote Coder sessions (experimental)`,description:`Offer the Coder environments in config.json when adding a session, so the session runs in its own Coder workspace instead of on this machine. Off refuses new remote sessions; ones already running keep working until closed.`,control:`toggle`,keywords:[`experimental`,`coder`,`remote`,`workspace`,`cloud`],defaultValue:!1,...X},{id:`streamer-mode`,path:`streamerMode`,title:`Streamer mode`,description:`Hide sensitive details in the dashboard while screen sharing or streaming.`,control:`toggle`,keywords:[`streaming`,`screen share`,`privacy`],defaultValue:!1,...X},{id:`repository-roots`,path:`repoRoots`,title:`Repository roots`,description:`Directories scanned for projects when adding sessions.`,control:`list`,keywords:[`folders`,`project discovery`],defaultValue:[],listPlaceholder:`Repository root path`,listEmptyText:`No repository roots configured.`,...X},{id:`custom-agents`,path:`status:custom-agents`,title:`Custom agents`,description:`Extra agent CLIs a session can be spawned with, declared under customAgents in config.json.`,control:`readonly`,keywords:[`adapters`,`cli`],status:`custom-agents`,...P1},{id:`agent-logins`,path:`status:agent-logins`,title:`Agent logins`,description:`How Claude Code and Codex sign in inside a Coder workspace. Each uses the login already on this machine; Connect signs one in for Glimmervoid alone when there is none.`,control:`readonly`,keywords:[`claude`,`codex`,`sign in`,`login`,`coder`,`remote`],status:`agent-logins`,...P1},{id:`remote-setup`,path:`status:remote-setup`,title:`Remote host setup`,description:`Start a session that walks you through running Glimmervoid on another Linux machine you reach by ssh, as a service you open from your laptop and phone.`,control:`readonly`,keywords:[`remote`,`ssh`,`server`,`devbox`,`tailscale`,`pair`,`host`],status:`remote-setup`,...P1}]},{id:`machine-guardrails`,level:`machine`,title:`Guardrails and unattended`,description:`What a guarded session may touch, and which unattended actions automated work may take. Claude Code sessions on Linux and macOS write anywhere this account can, except credentials, Glimmervoid's own state and the blocked folders here.`,legacyIds:[`lanes-unattended`,`unattended`],settings:[{id:`skip-permissions-by-default`,path:`skipPermissionsByDefault`,title:`Skip permission prompts by default`,description:`Start sessions whose project sets no permission choice with the agent CLI permission bypass flag.`,control:`toggle`,keywords:[`permissions`,`yolo`,`dangerously`],danger:!0,warning:`Enabling this control lets agents edit files and run shell commands without asking, and restarts running sessions that inherit it.`,defaultValue:!1,...X},{id:`sane-yolo`,path:`saneYolo`,title:`Sane YOLO`,description:`Block catastrophic commands in sessions that skip permission prompts when the cc-safety-net executable is available and trusted hooks are installed. Missing or untrusted hooks leave a session unprotected.`,control:`toggle`,keywords:[`permissions`,`yolo`,`safety`],defaultValue:!0,...N1},{id:`rtk-compression`,path:`rtk`,title:`rtk output compression`,description:`Compress Bash output with the rtk executable.`,control:`toggle`,keywords:[`bash`,`tokens`],danger:!0,status:`rtk-install`,warning:`Enabling this control permits Glimmervoid to install the pinned rtk executable automatically.`,defaultValue:!1,...N1},{id:`post-turn-checks-mode`,path:`postTurnChecks.mode`,title:`Post-turn checks mode`,description:`Default mode for post-turn checks. Project and individual rule modes override it, so Report can still allow file fixes.`,control:`select`,options:l0(w1),keywords:[`quality`,`fixes`],defaultValue:`report`,...X},{id:`branch-gc-delete-unmerged`,path:`branchGc.deleteUnmerged`,title:`Delete unmerged branches`,description:`Also delete stale remote branches with no merge proof. Off keeps every unmerged branch.`,control:`toggle`,keywords:[`git`,`cleanup`,`orphan`],danger:!0,warning:`Enabling this control lets branch cleanup delete stale remote branches without merge proof.`,defaultValue:!1,...X},{id:`guardrails-unguarded-repos`,path:`guardrails.unguardedRepos`,title:`Unguarded repositories`,description:`Folders whose sessions run without guardrails. A session started in one of these folders, or below it, is not guarded.`,control:`list`,keywords:[`guardrails`,`opt out`,`dotfiles`],danger:!0,warning:`A session without guardrails can read credentials and write anywhere this account can.`,defaultValue:[],listPlaceholder:`Folder path`,listEmptyText:`Every repository is guarded.`,...N1},{id:`guardrails-blocked-paths`,path:`guardrails.blockedPaths`,title:`Blocked folders`,description:`Extra folders and files a guarded session cannot write, on top of credentials and Glimmervoid's own state. A leading ~ means the home folder.`,control:`list`,keywords:[`guardrails`,`block`,`protect`],defaultValue:[],listPlaceholder:`~/folder`,listEmptyText:`Only the built-in list is blocked.`,...N1},{id:`guardrails-unreadable-paths`,path:`guardrails.unreadablePaths`,title:`Unreadable folders`,description:`Extra folders and files a guarded session cannot read, on top of the built-in credential list. A leading ~ means the home folder.`,control:`list`,keywords:[`guardrails`,`secrets`,`credentials`],defaultValue:[],listPlaceholder:`~/folder`,listEmptyText:`Only the built-in credential list is unreadable.`,...N1}]},{id:`machine-updates`,level:`machine`,title:`Updates`,description:`See which Glimmervoid version is running, which one is newest, and update in one step.`,legacyIds:[`updates`],settings:[{id:`update-actions`,path:`status:update-actions`,title:`Status and actions`,legacyIds:[`update-summary`,`update-installed`,`update-latest`,`update-last-checked`].map(e=>({sectionId:`machine-updates`,settingId:e})),description:`Whether this install is up to date, the running and newest versions, the last check, and the update and restart actions.`,control:`readonly`,keywords:[`version`,`available`,`current`,`check`,`restart`,`commit`,`installed`,`release`,`failure`],status:`update-actions`,...P1},{id:`update-channel`,path:`updateChannel`,title:`Channel`,description:`Track tagged releases or the upstream of the checked-out branch.`,control:`select`,options:l0(C1),keywords:[`release`,`branch`],defaultValue:`release`,...X},{id:`check-updates`,path:`checkForUpdates`,title:`Check for updates automatically`,description:`Check for a newer Glimmervoid at launch, while a dashboard is connected, and when this page opens.`,control:`toggle`,keywords:[`release`,`github`],defaultValue:!0,...X}]},{id:`machine-usage`,level:`machine`,title:`Usage`,description:`Local transcript accounting and estimated-cost budgets.`,legacyIds:[`usage`],settings:[{id:`usage-enabled`,path:`usage.enabled`,title:`Track token usage`,description:`Read local CLI transcripts and roll them into the Usage view and session chips.`,control:`toggle`,keywords:[`tokens`,`cost`],defaultValue:!0,status:`usage-last-report`,...X},{id:`usage-retain-days`,path:`usage.retainDays`,title:`Retain transcript detail`,description:`How long live transcript detail stays available. A monthly budget keeps detail from the start of the current month when that is longer.`,control:`number`,range:tn,unit:J1,keywords:[`history`,`retention`],defaultValue:90,...X},{id:`usage-daily-budget`,path:`usage.budget.dailyUsd`,title:`Daily budget`,description:`Estimated daily spend alert threshold. Alerts at 50%, 75% and 100% do not stop spending. Zero or below disables the threshold.`,control:`number`,range:an,unit:t0,keywords:[`spend`,`alert`],defaultValue:null,integer:!1,nullable:!0,zeroIsNull:!0,step:.01,...X},{id:`usage-monthly-budget`,path:`usage.budget.monthlyUsd`,title:`Monthly budget`,description:`Estimated monthly spend alert threshold. Alerts at 50%, 75% and 100% do not stop spending. Zero or below disables the threshold.`,control:`number`,range:an,unit:t0,keywords:[`spend`,`alert`],defaultValue:null,integer:!1,nullable:!0,zeroIsNull:!0,step:.01,...X}]},{id:`lanes-visions`,level:`lanes`,title:`Visions`,description:`Editor-buffer findings, bounded model comments, and the machine-context ingest behind them.`,legacyIds:[`lanes`,`visions`,`lanes-ingest`,`ingest`],settings:[{id:`visions-enabled`,path:`visions.enabled`,title:`Enable Visions`,description:`Set up supported editors detected on this machine, then show their buffer findings in the Visions view.`,control:`toggle`,keywords:[`editor`,`findings`,`lsp`],defaultValue:!1,...X},{id:`visions-dispatch-enabled`,path:`visions.dispatch.enabled`,title:`Enable model comments`,description:`Start bounded review sessions for local editor buffers.`,control:`toggle`,keywords:[`review`,`dispatch`],defaultValue:!1,...X},{id:`visions-max-per-hour`,path:`visions.dispatch.maxPerHour`,title:`Max per hour`,description:`Maximum review sessions dispatched per hour. One slot is reserved for edit reviews; activity-driven reviews take the rest, up to the activity cap set by visions.dispatch.activityMaxPerHour.`,control:`number`,range:k,unit:r0,keywords:[`rate limit`,`reviews`],defaultValue:6,...X},{id:`visions-model`,path:`visions.dispatch.model`,title:`Model override`,description:`Leave blank to use the opus model alias.`,control:`text`,keywords:[`claude`,`override`],defaultValue:``,...X},{id:`visions-projects`,path:`visions.projects`,title:`Projects`,description:`Clear every selection, including unavailable projects, to accept buffers from every configured project.`,control:`projects`,keywords:[`repositories`,`filter`],defaultValue:[],...X},{id:`visions-auto-fix`,path:`visions.autoFix`,title:`Apply tier 1 fixes`,description:`Allow Visions to edit eligible open Markdown buffers, including inactive buffers, without asking.`,control:`toggle`,keywords:[`automatic`,`edits`],danger:!0,warning:`Enabling this control lets Visions edit eligible buffers without a carbon unit present.`,defaultValue:!1,...X},{id:`ingest-enabled`,path:`ingest.enabled`,title:`Enable machine context ingest`,description:`Enable the local activity feed behind Visions. Turning Visions on enables ingest unless ingest.enabled is explicitly false.`,control:`toggle`,keywords:[`events`,`activity`,`ingest`],defaultValue:!1,...X}]},{id:`lanes-posthog`,level:`lanes`,title:`PostHog`,description:`Error monitoring, investigations and traffic-spike alerts.`,legacyIds:[`posthog`],settings:[{id:`posthog-enabled`,path:`posthog.enabled`,title:`Enable PostHog monitoring`,description:`Poll PostHog error tracking and investigate issues that move.`,control:`toggle`,keywords:[`errors`,`monitoring`],defaultValue:!1,...X},{id:`posthog-host`,path:`posthog.host`,title:`Host`,description:`PostHog cloud or self-hosted HTTP URL.`,control:`text`,keywords:[`url`,`server`],defaultValue:`https://us.posthog.com`,...X},{id:`posthog-api-key`,path:`posthog.apiKey`,title:`Personal API key`,description:`Credential with read access to PostHog projects. When GLIMMERVOID_POSTHOG_API_KEY supplies it, this field is read-only.`,control:`password`,keywords:[`credential`,`token`],defaultValue:``,...X},{id:`posthog-projects`,path:`posthog.projects`,title:`Projects`,description:`PostHog project ids to monitor. config.json holds "all" or an array of ids, and an empty array monitors no project. In Settings that empty array shows as none, and an empty list saves "all".`,control:`list`,keywords:[`project ids`,`filter`],defaultValue:`all`,valueKind:`posthog-projects`,listPlaceholder:`Project id`,listEmptyText:`Every project the key can read.`,...X},{id:`posthog-interval`,path:`posthog.intervalMinutes`,title:`Poll interval`,description:`Delay between PostHog polling passes.`,control:`number`,integer:!1,step:`any`,range:k,unit:K1,keywords:[`refresh`,`schedule`],defaultValue:15,...X},{id:`posthog-max-investigations`,path:`posthog.maxConcurrentInvestigations`,title:`Max concurrent investigations`,description:`Maximum investigation sessions running together.`,control:`number`,range:k,unit:V1,keywords:[`parallel`,`workers`],defaultValue:2,...X},{id:`posthog-min-users`,path:`posthog.minUsersToInvestigate`,title:`Min users to investigate`,description:`Minimum affected users for a new issue investigation. Regressions, worsening issues and eligible error spikes bypass this minimum.`,control:`number`,range:k,unit:n0,keywords:[`threshold`,`affected`],defaultValue:1,...X},{id:`posthog-traffic-enabled`,path:`posthog.trafficSpikeEnabled`,title:`Traffic spike alerts`,description:`Ping when recent unique users exceed a project baseline.`,control:`toggle`,keywords:[`analytics`,`alert`],defaultValue:!0,...X},{id:`posthog-auto-fix`,path:`posthog.autoFix`,title:`Attempt fixes for major issues`,description:`Allow an isolated agent to fix an issue, push a branch and open a pull request.`,control:`toggle`,keywords:[`automatic`,`pull request`],danger:!0,warning:`Enabling this control lets PostHog fixes commit, push and open pull requests automatically.`,defaultValue:!1,...X}]},{id:`lanes-team-review`,level:`lanes`,title:`Team review`,description:`Draft reviews of teammates' pull requests for you to post from the Reviews tab.`,legacyIds:[`team-review`,`reviews`],settings:[{id:`team-review-enabled`,path:`teamReview.enabled`,title:`Enable team review`,description:`Poll open pull requests from the team and draft a review of each one. Nothing is posted until you choose Approve or Comment.`,control:`toggle`,keywords:[`pull requests`,`github`],defaultValue:!1,...X},{id:`github-teams`,path:`github.teams`,title:`GitHub teams`,description:`Teams to search for review requests and members, one org/slug per entry. Leave empty to fall back to the legacy teamReview.org and teamReview.team keys in config.json.`,control:`list`,keywords:[`github`,`teams`,`review requests`],defaultValue:[],listPlaceholder:`org/team-slug`,listEmptyText:`No GitHub teams configured.`,...X},{id:`team-review-re-review-after-hours`,path:`teamReview.reReviewAfterHours`,title:`Re-review after`,description:`When a reviewed PR has a new head, review it again after this long since its last review. Re-run review runs it at any time.`,control:`number`,range:k,unit:q1,keywords:[`review`,`delay`],defaultValue:24,integer:!1,step:.5,...X},{id:`team-review-skip-idle-after-days`,path:`teamReview.skipIdleAfterDays`,title:`Skip PRs idle for`,description:`Leave pull requests without GitHub activity for this long out of automatic review.`,control:`number`,range:k,unit:J1,keywords:[`idle`,`activity`],defaultValue:14,integer:!1,step:.5,...X},{id:`team-review-skill`,path:`teamReview.skill`,title:`Review skill`,description:`Name of a Claude Code skill installed for the review agent, for example your own PR review skill. Leave empty to let the agent review with whatever skills it has.`,control:`text`,keywords:[`skill`,`claude code`,`pr review`],defaultValue:``,...X},{id:`team-review-auto-rebase-my-prs`,path:`teamReview.autoRebaseMyPrs`,title:`Keep my pull requests rebased`,description:`On each poll, rebase your open, non-draft pull requests that are behind their base branch. A pull request with conflicts or checks still running is left alone, and a failed rebase is not retried until you push again.`,control:`toggle`,keywords:[`rebase`,`update branch`,`behind`,`my prs`],danger:!0,warning:`Enabling this control rewrites your pull request branches on GitHub. Pull before you push from a local checkout of one.`,defaultValue:!1,...X},{id:`team-review-keep-mergeable-enabled`,path:`teamReview.keepMergeableEnabled`,title:`Keep mergeable`,description:`Offer Keep mergeable on your pull requests: a guarded agent repairs conflicts and failing checks and pushes the repair. Off hides the control and starts no repair; the pull requests you chose stay chosen for when you turn it back on.`,control:`toggle`,keywords:[`repair`,`conflicts`,`my prs`],defaultValue:!0,...X},{id:`team-review-keep-mergeable-timeout`,path:`teamReview.keepMergeableTimeoutMinutes`,title:`Keep mergeable deadline`,description:`Longest a Keep mergeable repair session may run before it is stopped and nothing is pushed.`,control:`number`,range:sn,unit:K1,keywords:[`timeout`,`repair`],defaultValue:30,...X},{id:`team-review-merge-queue-enabled`,path:`teamReview.mergeQueueEnabled`,title:`Merge when ready`,description:`Offer Merge when ready on your pull requests: queued pull requests are rebased when behind and merged once ready, one per repository per poll. Off hides the control and merges nothing; the queue is kept for when you turn it back on.`,control:`toggle`,keywords:[`merge queue`,`auto merge`,`my prs`],defaultValue:!0,...X}]},{id:`lanes-workflows`,level:`lanes`,title:`Workflows`,description:`Rules that act on pull request events in the repositories you choose.`,legacyIds:[`workflows`],settings:[{id:`workflows-enabled`,path:`workflows.enabled`,title:`Run workflows`,description:`Poll the repositories your enabled rules watch and run their actions. Off stops polling and every action, whatever each rule says.`,control:`toggle`,keywords:[`pull requests`,`automation`,`master switch`],defaultValue:!0,...X},{id:`workflows-max-concurrent-sessions`,path:`workflows.maxConcurrentSessions`,title:`Concurrent agent sessions`,description:`Most workflow agent sessions running at once. Up to twenty later spawns wait for a free slot; additional spawns are dropped and logged.`,control:`number`,range:cn,unit:H1,keywords:[`parallel`,`spawn`],defaultValue:2,...X},{id:`workflows-rules`,path:`status:workflow-rules`,title:`Workflow rules`,description:`Each rule watches repositories for one pull request event (opened, checks-failed, review-requested, approved, commented or merged), narrows it by author, labels, base branch, your own pull requests or a review request to your team, and then notifies you, labels or comments on the pull request, or starts a guarded agent session that pushes nothing. Rules start disabled. Turn each rule on or off here; everything else about a rule is set in config.json under workflows.rules.`,control:`readonly`,keywords:[`pull requests`,`automation`,`github`,`rules`],status:`workflows`,...P1}]},{id:`lanes-benchmarks`,level:`lanes`,title:`Benchmarks`,description:`Compare agent setups on frozen cases from the suites in the benchmarks folder of the Glimmervoid home.`,legacyIds:[`benchmarks`],settings:[{id:`benchmarks-enabled`,path:`benchmarks.enabled`,title:`Enable benchmarks`,description:`Show the Bench tab. Nothing runs until you choose Mine or Run there.`,control:`toggle`,keywords:[`eval`,`arms`,`recall`,`compare`],defaultValue:!1,...X}]},{id:`lanes-coherence`,level:`lanes`,title:`Coherence (experimental)`,description:`Per-session Coherence hook status and decision journal for agent sessions.`,settings:[{id:`coherence-enabled`,path:`coherence.enabled`,title:`Show session Coherence`,description:`Shows each session's Coherence hook status and decision journal when the repository installed @posthog/coherence 1.8 or newer. Off by default.`,control:`toggle`,keywords:[`experimental`,`coherence`,`journal`,`decisions`],defaultValue:!1,...X}]},{id:`machine-privacy`,level:`machine`,title:`Privacy`,description:`What Glimmervoid sends about itself.`,legacyIds:[`privacy`,`telemetry`],settings:[{id:`telemetry-enabled`,path:`telemetry.enabled`,title:`Send usage data`,description:`Helps us improve Glimmervoid. Sent under a random install id: version, platform, app starts, daily activity, session starts and ends with agent kind, exit kind and duration, errors as their type, error code and scrubbed stack frames, per session token counts, models and estimated costs from the usage scan, and a salted one-way hash of your Claude and Codex account ids so installs of one account count together. Never prompts, project information, error messages, paths, repository or branch names, objectives, terminal output, emails or names. Delete my data asks for everything sent under this install to be erased and starts a new install id. GLIMMERVOID_TELEMETRY=0, DO_NOT_TRACK=1 or CI=true turn it off regardless.`,control:`toggle`,keywords:[`telemetry`,`analytics`,`tracking`,`opt out`],defaultValue:!0,...X}]},{id:`browser-shortcuts`,level:`browser`,title:`Shortcuts and about`,description:`Keyboard shortcuts, their reference and build information.`,legacyIds:[`shortcuts`],settings:[{id:`next-attention-key`,path:`pref:nextAttentionKeyCode`,title:`Jump to the next session needing you`,description:`The key held with Cmd on a Mac, or Alt elsewhere, that jumps to the next session needing you. Record a new one by pressing the whole shortcut.`,control:`shortcut-key`,keywords:[`shortcut`,`keyboard`,`hotkey`,`jump`,`next`,`attention`],defaultValue:`KeyJ`,...j1}]}]),f0=Object.freeze([{id:`file-debug-mode`,path:`debugMode`,title:`Debug mode`,group:`machine-sessions`,description:`Show session-card diagnostics for state, transitions and detection signals.`,control:`toggle`,keywords:[`diagnostics`,`state`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:a0,...Z},{id:`file-replay-buffer`,path:`replayBufferKB`,title:`Replay buffer`,group:`machine-terminal`,description:`PTY output retained for clients that reconnect or join late.`,control:`number`,range:At,unit:{label:`KB`,storedPerDisplay:1},keywords:[`history`,`backfill`],defaultValue:512,takesEffect:`new-sessions`,fileOnlyReason:Q,...Z},{id:`file-session-memory-reserve`,path:`sessionMemoryReserveMB`,title:`Session memory reserve`,group:`machine-sessions`,description:`Free memory an automatic session start waits for; 0 starts sessions without checking.`,control:`number`,range:jt,unit:{label:`MB`,storedPerDisplay:1},keywords:[`memory`,`headroom`],defaultValue:600,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-cursor-blink`,path:`cursorBlink`,title:`Cursor blink`,group:`machine-terminal`,description:`Blink the cursor in every terminal.`,control:`toggle`,keywords:[`caret`,`terminal`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-detect-background-agents`,path:`detectBackgroundAgents`,title:`Detect background agents`,group:`machine-detection-sessions`,description:`Hold completion while tracked background work is active.`,control:`toggle`,keywords:[`subagents`,`completion`],defaultValue:!0,takesEffect:`new-sessions`,fileOnlyReason:a0,...Z},{id:`file-record-signals`,path:`recordSignals`,title:`Record structural signals`,group:`machine-detection-sessions`,description:`Keep forensic status and hook recordings for each session. Full capture (capture.enabled) records these signals even when this is off.`,control:`toggle`,keywords:[`recordings`,`diagnostics`],defaultValue:!0,takesEffect:`new-sessions`,fileOnlyReason:a0,...Z},{id:`file-trace-enabled`,path:`trace.enabled`,title:`Capture session traces`,group:`machine-detection-sessions`,description:`Keep normalized Claude transcript traces for session debugging.`,control:`toggle`,keywords:[`transcripts`,`diagnostics`],defaultValue:!0,takesEffect:`restart`,fileOnlyReason:a0,...Z},{id:`file-detect-scheduled-wakeups`,path:`detectScheduledWakeups`,title:`Detect scheduled wakeups`,group:`machine-detection-sessions`,description:`Surface advisory wakeup timing for scheduled sessions.`,control:`toggle`,keywords:[`schedule`,`sleep`],defaultValue:!0,takesEffect:`restart`,fileOnlyReason:a0,...Z},{id:`file-worktree-auto-rebase`,path:`worktreeAutoRebase`,title:`Worktree auto-rebase`,group:`machine-detection-sessions`,description:`Rebase eligible session worktrees when the integration branch moves.`,control:`toggle`,keywords:[`git`,`branch`],defaultValue:!0,takesEffect:`new-sessions`,fileOnlyReason:o0,...Z},{id:`file-worktree-sync-on-start`,path:`worktreeSyncOnStart`,title:`Worktree sync on start`,group:`machine-detection-sessions`,description:`Fetch origin and fast-forward the local integration branch before a session starts its worktree.`,control:`toggle`,keywords:[`git`,`fetch`,`fast-forward`],defaultValue:!0,takesEffect:`new-sessions`,fileOnlyReason:o0,...Z},{id:`file-worktree-rerere`,path:`worktreeRerere`,title:`Worktree rerere`,group:`machine-detection-sessions`,description:`Reuse recorded Git conflict resolutions.`,control:`toggle`,keywords:[`git`,`conflicts`],defaultValue:!0,takesEffect:`restart`,fileOnlyReason:o0,...Z},{id:`file-integration-branch`,path:`integrationBranch`,title:`Integration branch`,group:`machine-detection-sessions`,description:`Base branch for session worktrees. Empty = each repo's default branch. Existing sessions are never retargeted.`,control:`text`,nullable:!0,keywords:[`git`,`merge`],defaultValue:null,takesEffect:`new-sessions`,fileOnlyReason:o0,...Z},{id:`file-worktree-root`,path:`worktreeRoot`,title:`Worktree root`,group:`machine-detection-sessions`,description:`Directory that contains session worktrees. Existing worktrees are never relocated.`,control:`text`,keywords:[`git`,`directory`],defaultValue:``,takesEffect:`new-sessions`,fileOnlyReason:o0,...Z},{id:`file-worktree-share`,path:`worktreeShare`,title:`Shared worktree paths`,group:`machine-detection-sessions`,description:`Local paths copied or linked during worktree preparation.`,control:`list`,keywords:[`files`,`context`],defaultValue:[`node_modules`,`.env`,`.env.local`,`.claude`],takesEffect:`new-sessions`,fileOnlyReason:c0,...Z},{id:`file-port`,path:`port`,title:`Local port`,group:`machine-detection-sessions`,description:`Port used by the local dashboard listener.`,control:`number`,range:Mt,unit:{label:`port`,storedPerDisplay:1},keywords:[`server`,`listener`],defaultValue:3e3,takesEffect:`restart`,fileOnlyReason:c0,...Z},{id:`file-notify-debounce-ms`,path:`notifyDebounceMs`,title:`Notification debounce`,group:`machine-detection-sessions`,description:`Delay used to coalesce notification state changes.`,control:`number`,integer:!1,step:`any`,range:k,unit:Y1,keywords:[`timer`,`alerts`],defaultValue:3e3,takesEffect:`new-sessions`,fileOnlyReason:Q,...Z},{id:`file-phone-escalation-ms`,path:`phoneEscalationMs`,title:`Phone escalation delay`,group:`machine-detection-sessions`,description:`Delay before off-dashboard escalation.`,control:`number`,integer:!1,step:`any`,range:k,unit:X1,keywords:[`timer`,`telegram`],defaultValue:3e5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-post-turn-checks`,path:`postTurnChecks`,title:`Post-turn checks`,group:`machine-detection-sessions`,description:`Deterministic checks run after eligible turns. The global mode is a default; project and individual rule modes can select fixes even when the global mode is report.`,control:`json`,keywords:[`quality`,`fixes`],defaultValue:{enabled:!0,mode:`report`,rules:{trailingWs:!0,finalNewline:!0,bom:!0,slop:!1}},takesEffect:`now`,fileOnlyReason:s0,...Z},{id:`file-branch-gc-enabled`,path:`branchGc.enabled`,title:`Branch cleanup`,group:`machine-detection-sessions`,description:`Enable cleanup of eligible session branches.`,control:`toggle`,keywords:[`git`,`cleanup`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:o0,...Z},{id:`file-branch-gc-worktrees`,path:`branchGc.worktrees`,title:`Local worktree cleanup`,group:`machine-detection-sessions`,description:`Enable cleanup of eligible local worktrees.`,control:`toggle`,keywords:[`git`,`worktree`,`cleanup`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:o0,...Z},{id:`file-branch-gc-prefixes`,path:`branchGc.prefixes`,title:`Branch cleanup prefixes`,group:`machine-detection-sessions`,description:`Branch prefixes that filter both remote branch cleanup and local worktree cleanup.`,control:`list`,keywords:[`git`,`branch`],defaultValue:[`glimmervoid/session/`,`worktree-agent-`],takesEffect:`now`,fileOnlyReason:o0,...Z},{id:`file-branch-gc-dry-run`,path:`branchGc.dryRun`,title:`Branch cleanup dry run`,group:`machine-detection-sessions`,description:`Report planned cleanup without deleting remote branches.`,control:`toggle`,keywords:[`git`,`safety`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:o0,...Z},{id:`file-branch-gc-stale-days`,path:`branchGc.staleDays`,title:`Branch stale days`,group:`machine-detection-sessions`,description:`Age threshold for orphan branch cleanup when unmerged deletion is on.`,control:`number`,integer:!1,step:`any`,range:k,unit:J1,keywords:[`git`,`retention`],defaultValue:14,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-branch-gc-interval-ms`,path:`branchGc.intervalMs`,title:`Branch cleanup interval`,group:`machine-detection-sessions`,description:`Delay between branch cleanup passes.`,control:`number`,integer:!1,step:`any`,range:k,unit:Q1,keywords:[`git`,`schedule`],defaultValue:216e5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-custom-agents`,path:`customAgents`,title:`Custom agents`,group:`machine-detection-sessions`,description:`Extra agent CLIs a session can be spawned with. The Sessions section lists the declared agents and whether each command resolves.`,control:`json`,keywords:[`adapters`,`cli`],defaultValue:[],takesEffect:`new-sessions`,fileOnlyReason:c0,...Z},{id:`file-task-title-refiner-enabled`,path:`taskTitle.refiner.enabled`,title:`Refine task titles`,group:`machine-detection-sessions`,description:`Keep session card titles useful when prompts change topic by asking a model for a short title.`,control:`toggle`,keywords:[`title`,`refiner`,`card`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-task-title-refiner-model`,path:`taskTitle.refiner.model`,title:`Task title model`,group:`machine-detection-sessions`,description:`Claude model alias the title refiner asks.`,control:`text`,keywords:[`title`,`refiner`,`model`],defaultValue:`haiku`,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-task-title-refiner-min-interval`,path:`taskTitle.refiner.minIntervalSeconds`,title:`Task title refresh interval`,group:`machine-detection-sessions`,description:`Shortest pause between two title refinements of one session.`,control:`number`,integer:!1,step:`any`,range:Tt,unit:G1,keywords:[`title`,`refiner`,`interval`],defaultValue:60,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-task-title-refiner-timeout`,path:`taskTitle.refiner.timeoutSeconds`,title:`Task title timeout`,group:`machine-detection-sessions`,description:`Maximum time allowed for one title refinement.`,control:`number`,integer:!1,step:`any`,range:Nt,unit:G1,keywords:[`title`,`refiner`,`deadline`],defaultValue:60,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-codex`,path:`usage.vendors.codex`,title:`Track Codex usage`,group:`machine-usage`,description:`Include local Codex CLI transcripts in usage reports.`,control:`toggle`,keywords:[`openai`,`vendor`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-grok`,path:`usage.vendors.grok`,title:`Track Grok usage`,group:`machine-usage`,description:`Include local Grok CLI transcripts in usage reports.`,control:`toggle`,keywords:[`xai`,`vendor`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-fetch-pricing`,path:`usage.fetchPricing`,title:`Fetch current model prices`,group:`machine-usage`,description:`Load public model prices when usage tracking starts, using a cached table for up to one day. Falls back to cached or bundled prices if the fetch fails; no daily refresh runs while tracking continues.`,control:`toggle`,keywords:[`rates`,`models`],defaultValue:!0,takesEffect:`restart`,fileOnlyReason:Q,...Z},{id:`file-usage-plan-limits`,path:`usage.planLimits`,title:`Show plan limits`,group:`machine-usage`,description:`Read the Claude plan limit the CLI reports and show it beside usage.`,control:`toggle`,keywords:[`plan`,`limits`,`quota`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-rtk-savings`,path:`usage.rtkSavings`,title:`Estimate rtk savings`,group:`machine-usage`,description:`Estimate the tokens rtk output compression saved and show it in the Usage view.`,control:`toggle`,keywords:[`rtk`,`savings`,`tokens`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-scan-interval`,path:`usage.scanIntervalMinutes`,title:`Scan interval`,group:`machine-usage`,description:`Periodic transcript polling interval. Session activity can also trigger scans between timer ticks.`,control:`number`,range:en,unit:K1,keywords:[`poll`,`refresh`],defaultValue:5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-warehouse-retain-days`,path:`usage.warehouseRetainDays`,title:`Retain usage history`,group:`machine-usage`,description:`How long the daily usage warehouse keeps rolled-up totals after transcript detail expires.`,control:`number`,range:on.warehouseRetainDays,unit:J1,keywords:[`history`,`warehouse`,`retention`],defaultValue:365,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-session-block-hours`,path:`usage.sessionBlockHours`,title:`Session block length`,group:`machine-usage`,description:`Length of the rolling block the Usage view groups activity into.`,control:`number`,range:on.sessionBlockHours,unit:q1,keywords:[`block`,`window`,`hours`],defaultValue:5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-cost-mode`,path:`usage.costMode`,title:`Cost mode`,group:`machine-usage`,description:`Choose whether recorded costs, calculated costs or both can appear.`,control:`select`,options:l0(p1),keywords:[`pricing`,`estimate`],defaultValue:`auto`,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-extra-projects-dirs`,path:`usage.extraProjectsDirs`,title:`Extra transcript folders`,group:`machine-usage`,description:`Absolute paths of additional Claude projects folders the usage scan reads.`,control:`list`,keywords:[`transcripts`,`folders`,`scan`],defaultValue:[],takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-quiet-delay`,path:`visions.dispatch.quietMs`,title:`Quiet delay`,group:`lanes-visions`,description:`Editor quiet time before a scheduled review. Saves and blank-line boundaries can dispatch immediately, subject to the other review limits.`,control:`number`,range:k,unit:Y1,keywords:[`debounce`,`idle`],defaultValue:3e4,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-cooldown`,path:`visions.dispatch.cooldownMs`,title:`Cooldown`,group:`lanes-visions`,description:`Minimum delay between reviews of the same document. Initial orientation reviews bypass this delay.`,control:`number`,range:k,unit:X1,keywords:[`rate limit`,`delay`],defaultValue:3e5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-activity-max-per-hour`,path:`visions.dispatch.activityMaxPerHour`,title:`Activity max per hour`,group:`lanes-visions`,description:`Maximum activity-driven reviews dispatched per hour, capped at the overall hourly limit minus one to reserve an edit-review slot.`,control:`number`,range:Tt,unit:r0,keywords:[`rate limit`,`events`],defaultValue:2,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-dispatch-timeout`,path:`visions.dispatch.dispatchTimeoutSeconds`,title:`Dispatch timeout`,group:`lanes-visions`,description:`Maximum time allowed for one review session.`,control:`number`,range:k,unit:Z1,keywords:[`deadline`,`review`],defaultValue:180,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-intent-thread-ttl`,path:`visions.intent.threadTtlMs`,title:`Intent thread lifetime`,group:`lanes-visions`,description:`How long an intent thread nobody advanced stays live before it retires.`,control:`number`,range:k,unit:e0,keywords:[`intent`,`decay`,`thread`],defaultValue:2592e5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-terminal`,path:`ingest.sources.terminal.enabled`,title:`Terminal output source`,group:`lanes-ingest`,description:`Include terminal output in the ingest feed.`,control:`toggle`,keywords:[`pty`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-agent-logs`,path:`ingest.sources.agentLogs.enabled`,title:`Agent logs source`,group:`lanes-ingest`,description:`Include local agent logs in the ingest feed.`,control:`toggle`,keywords:[`transcript`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-git`,path:`ingest.sources.git.enabled`,title:`Git activity source`,group:`lanes-ingest`,description:`Include local Git activity in the ingest feed.`,control:`toggle`,keywords:[`commits`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-fs`,path:`ingest.sources.fs.enabled`,title:`File changes source`,group:`lanes-ingest`,description:`Include watched file changes in the ingest feed.`,control:`toggle`,keywords:[`filesystem`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-shell-history`,path:`ingest.sources.shellHistory.enabled`,title:`Shell history source`,group:`lanes-ingest`,description:`Include local shell history in the ingest feed.`,control:`toggle`,keywords:[`commands`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-editor`,path:`ingest.sources.editor.enabled`,title:`Editor events source`,group:`lanes-ingest`,description:`Include local editor events in the ingest feed.`,control:`toggle`,keywords:[`buffers`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-investigation-timeout`,path:`posthog.investigationTimeoutSeconds`,title:`Investigation timeout`,group:`lanes-posthog`,description:`Maximum time allowed for one investigation.`,control:`number`,integer:!1,step:`any`,range:k,unit:Z1,keywords:[`deadline`,`session`],defaultValue:900,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-escalation`,path:`posthog.userEscalationThreshold`,title:`Escalation threshold`,group:`lanes-posthog`,description:`Affected-user count that escalates an issue.`,control:`number`,range:k,unit:n0,keywords:[`threshold`,`severity`],defaultValue:25,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-fix-timeout`,path:`posthog.fixTimeoutSeconds`,title:`Fix timeout`,group:`lanes-posthog`,description:`Maximum time allowed for one fix session.`,control:`number`,integer:!1,step:`any`,range:Yt,unit:Z1,keywords:[`deadline`,`repair`],defaultValue:1800,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-traffic-multiplier`,path:`posthog.trafficSpikeMultiplier`,title:`Spike multiplier`,group:`lanes-posthog`,description:`Baseline multiplier required to classify a traffic spike.`,control:`number`,integer:!1,step:`any`,range:Xt,unit:i0,keywords:[`baseline`,`ratio`],defaultValue:3,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-traffic-min-users`,path:`posthog.trafficSpikeMinUsers`,title:`Min users to alert`,group:`lanes-posthog`,description:`Minimum recent unique users for an initial traffic-spike alert. Escalation and recovery alerts bypass this minimum.`,control:`number`,range:Zt,unit:n0,keywords:[`threshold`,`analytics`],defaultValue:10,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-traffic-cooldown`,path:`posthog.trafficSpikeCooldownMinutes`,title:`Spike cooldown`,group:`lanes-posthog`,description:`Cooldown for new traffic spikes. Escalation and recovery alerts bypass it. Zero removes the time delay; repeated active-spike alerts are still suppressed.`,control:`number`,integer:!1,step:`any`,range:Tt,unit:$1,keywords:[`silence`,`delay`],defaultValue:360,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-traffic-baseline`,path:`posthog.trafficSpikeBaselineDays`,title:`Baseline window`,group:`lanes-posthog`,description:`Historical window used to calculate normal hourly traffic.`,control:`number`,range:$t,unit:J1,keywords:[`history`,`analytics`],defaultValue:7,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-recurrence-dedupe`,path:`posthog.recurrenceDedupe`,title:`Deduplicate recurring issues`,group:`lanes-posthog`,description:`Treat an issue seen again inside the recurrence window as the same investigation instead of opening a new one.`,control:`toggle`,keywords:[`recurrence`,`dedupe`,`issues`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-recurrence-window-days`,path:`posthog.recurrenceWindowDays`,title:`Recurrence window`,group:`lanes-posthog`,description:`How far back an issue counts as a recurrence of an investigated one.`,control:`number`,integer:!1,step:`any`,range:k,unit:J1,keywords:[`recurrence`,`window`],defaultValue:7,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-transient-recurrence-limit`,path:`posthog.transientRecurrenceLimit`,title:`Transient recurrence limit`,group:`lanes-posthog`,description:`How many times a transient issue may recur before it is investigated again.`,control:`number`,integer:!1,step:`any`,range:k,unit:U1,keywords:[`recurrence`,`transient`,`limit`],defaultValue:3,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-repo-path`,path:`posthog.repoPath`,title:`Repository path`,group:`lanes-posthog`,description:`Absolute path of the local checkout investigations read and fixes branch from, for every project the project map does not name.`,control:`text`,keywords:[`repository`,`checkout`,`path`],defaultValue:``,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-project-map`,path:`posthog.projectMap`,title:`Project map`,group:`lanes-posthog`,description:`PostHog project id to a label: the name shown for that project, and, when it is an absolute path to a checkout, the repository its issues are investigated in.`,control:`json`,keywords:[`projects`,`repositories`,`map`],defaultValue:{},takesEffect:`now`,fileOnlyReason:s0,...Z},{id:`file-team-review-org`,path:`teamReview.org`,title:`GitHub organization (legacy)`,group:`lanes-team-review`,description:`Organization login that owns the team, for example PostHog. Read only when github.teams is empty.`,control:`text`,keywords:[`github`,`owner`,`legacy`],defaultValue:``,takesEffect:`now`,fileOnlyReason:`A legacy key: github.teams names teams as org/slug entries and wins whenever it is set.`,...Z},{id:`file-team-review-team`,path:`teamReview.team`,title:`GitHub team (legacy)`,group:`lanes-team-review`,description:`Team slug whose members and review requests are polled. Read only when github.teams is empty.`,control:`text`,keywords:[`github`,`slug`,`legacy`],defaultValue:``,takesEffect:`now`,fileOnlyReason:`A legacy key: github.teams names teams as org/slug entries and wins whenever it is set.`,...Z},{id:`file-workflows-max-actions-per-poll`,path:`workflows.maxActionsPerPoll`,title:`Actions per poll`,group:`lanes-workflows`,description:`Most actions run in one poll. The rest are dropped and logged.`,control:`number`,range:ln,unit:W1,keywords:[`cap`,`rate limit`],defaultValue:20,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-workflows-rules`,path:`workflows.rules`,title:`Workflow rule definitions`,group:`lanes-workflows`,description:`The rules the Workflows section switches on and off: each names its repositories, one pull request event, its filters and its actions.`,control:`json`,keywords:[`pull requests`,`automation`,`rules`],defaultValue:[],takesEffect:`now`,fileOnlyReason:`Rule definitions are written in config.json; the Workflows section only switches each rule on or off.`,...Z}]),p0=Object.freeze({sections:d0,fileOnly:f0}),m0=Object.freeze(Object.fromEntries(d0.flatMap(e=>(e.legacyIds??[]).map(t=>[t,e.id])))),h0=Object.freeze(d0.reduce((e,t)=>{for(let n of t.settings)for(let r of n.legacyIds??[])e[r.sectionId]={...e[r.sectionId],[r.settingId]:t.id};return e},{}));function g0(e){let t=[],n=e=>{if(!e||typeof e!=`object`)return e;let n=Array.isArray(e)?[]:{};return t.push([e,n]),n},r=n(e);for(let e=t.pop();e;e=t.pop()){let[t,r]=e;for(let[e,i]of Object.entries(t))Object.defineProperty(r,e,{value:n(i),writable:!0,enumerable:!0,configurable:!0})}return r}function _0(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function v0(e,t){let n=t.split(`.`),r=e;for(let e of n.slice(0,-1)){if(!r||typeof r!=`object`)return;r=r[e]}r&&typeof r==`object`&&delete r[n.at(-1)]}function y0(e,t,n){let r=t.split(`.`),i=e;for(let e of r.slice(0,-1))(!i[e]||typeof i[e]!=`object`||Array.isArray(i[e]))&&(i[e]={}),i=i[e];i[r.at(-1)]=g0(n)}function b0(e){return e.flatMap(e=>e.settings)}function x0(e){return e.access===`file-only`||e.control===`readonly`}function S0(e){let t=String(e??``).trim().toLowerCase();if(!t||t===`all`)return`all`;if(t===`none`)return[];let n=t.split(`,`).map(e=>e.trim());return n.every(e=>/^\d+$/.test(e)&&Number.isSafeInteger(Number(e))&&Number(e)>0)?n.map(Number):null}var C0=6;function w0(e,t){return e.control===`number`&&typeof t==`number`?t/(e.unit?.storedPerDisplay??1):e.valueKind===`posthog-projects`?Array.isArray(t)?t.length===0?[`none`]:t.map(String):[]:g0(t)}function T0(e){return e.control===`number`&&(e.unit?.storedPerDisplay??1)!==1}function E0(e){return String(Number(e.toFixed(C0)))}function D0(e,t){let n=w0(e,t);return e.valueKind===`posthog-projects`&&Array.isArray(n)?n.join(`, `)||`all`:typeof n==`number`&&e.unit?`${E0(n)} ${e.unit.label}`:JSON.stringify(n??null)}function O0(e,t){if(e.control===`number`){if(e.nullable&&(t==null||String(t).trim()===``))return null;let n=Number(t);if(e.zeroIsNull&&n<=0)return null;let r=n*(e.unit?.storedPerDisplay??1);return e.integer===!1?r:Math.round(r)}if(e.valueKind===`posthog-projects`)return S0(Array.isArray(t)?t.join(`,`):t);if(e.control===`text`||e.control===`password`){let n=String(t??``).trim();return e.nullable&&!n?null:n}return g0(t)}function k0(e){return String(e||``).toLowerCase().match(/[a-z0-9]+/g)||[]}var A0=3,j0=2,M0=1,N0=3,P0=30,F0=16;function I0(e,t){return e===t?A0:e.startsWith(t)?j0:t.length>=N0&&e.includes(t)?M0:0}function L0(e,t,n){let r=0;for(let n of t){let t=Math.max(0,...e.map(e=>I0(e,n)));if(t===0)return 0;r+=t}return r*n}function R0(e){return e.options?.map(e=>e.label).join(`, `)??``}function z0(e){return q0(e.group??``)?.title??``}function B0(e,t,n){let r=L0(k0(e.title),n,1e3),i=L0(k0(e.keywords.join(` `)),n,100),a=L0(t,n,10),o=L0(k0(e.path),n,10),s=L0(k0(R0(e)),n,10),c=L0(k0(e.description),n,1);return r+i+a+o+s+c}function V0(e){return e.section?.title??``}function H0(e,t){return Number(e.section===null)-Number(t.section===null)}function U0(e,t,n){return[[`title`,e.title],[`keywords`,e.keywords.join(` `)],[`section`,t?.title??z0(e)],[`description`,e.description],[`path`,e.path],[`options`,R0(e)]].flatMap(([e,t])=>{let r=[];for(let e of t.matchAll(/[a-z0-9]+/gi)){let t=e[0].toLowerCase();for(let i of n){if(I0(t,i)===0)continue;let n=e.index+t.indexOf(i);r.push({start:n,end:n+i.length})}}let i=[];for(let e of r.sort((e,t)=>e.start-t.start||e.end-t.end)){let t=i.at(-1);t&&e.start<=t.end?t.end=Math.max(t.end,e.end):i.push({...e})}return i.length?[{field:e,text:t,spans:i}]:[]})}function W0(e,t,n=[]){let r=k0(t).slice(0,F0);if(r.length===0)return[];let i=[];for(let t of e){let e=k0(t.title);for(let n of t.settings){let a=B0(n,e,r);a!==0&&i.push({section:t,setting:n,score:a,matches:U0(n,t,r)})}}for(let e of n){let t=B0(e,k0(z0(e)),r);t!==0&&i.push({section:null,setting:e,score:t,matches:U0(e,null,r)})}return i.sort((e,t)=>t.score-e.score||H0(e,t)||V0(e).localeCompare(V0(t))||e.setting.title.localeCompare(t.setting.title)).slice(0,P0)}function G0(e,t,n={},r={}){let i=/^#settings\/([^/]+)(?:\/([^/]+))?$/.exec(String(e||``));if(!i)return null;let a,o;try{a=decodeURIComponent(i[1]),o=i[2]?decodeURIComponent(i[2]):null}catch{return null}let s=n[a]||a,c=(o?r[s]?.[o]:void 0)||s,l=t.find(e=>e.id===c);if(!l)return null;let u=o?l.settings.find(e=>e.id===o||e.legacyIds?.some(e=>e.settingId===o&&e.sectionId===s)):null;return o&&!u?null:{sectionId:c,settingId:u?.id||null,hash:`#settings/${c}${u?`/${u.id}`:``}`}}function K0(e){let t=new Map,n=new Map;for(let r of[...b0(e.sections),...e.fileOnly])t.set(r.id,r),n.set(r.path,r);return{byId:t,byPath:n}}K0(p0);function q0(e,t=p0){let n=t.sections.find(t=>t.id===e);return n?{title:n.title,description:n.description}:u0[e]??null}function J0({checked:e=[],stored:t=[],rendered:n=[]}={}){let r=new Set(n),i=[...e];for(let e of t)typeof e==`string`&&e.trim()&&(r.has(e)||i.includes(e)||i.push(e));return i}function Y0(e,t){let n=new Set(e.map(e=>e.id)),r=[...new Set(t)].filter(e=>!n.has(e));return[...e,...r.map(e=>({id:e,name:`Unavailable project (${e})`}))]}var X0=new WeakMap,Z0=`Configured`,Q0=`•`.repeat(12),$0=`Each line must be a positive whole-number PostHog project id, or the one word none.`,e2=3,t2=200,n2=new Set([`customAgents`]),r2=1e-9,i2=`Lanes`,a2=Object.freeze({now:`Applies now`,"new-sessions":`New sessions`,restart:`After restart`}),o2=Object.freeze({browser:`This browser`,machine:`This machine`});function s2(e,t){let n=t.secretSources;if(!n||typeof n!=`object`)return null;let r=n[e.path];return typeof r==`string`?r:null}function c2(e){let t=e.rtkInstall;return t?.status===`installing`?`No rtk binary found. Glimmervoid is installing it into ~/.glimmervoid/bin now.`:e.rtkInstallSupported===!1?`No rtk binary found. Automatic installation is unavailable on this server platform; install a compatible binary manually.`:t?.status===`failed`?`No rtk binary found. The last install attempt failed: ${t.reason||`unknown reason`}. A save can retry after the ten-minute failure cooldown; saves during the cooldown skip installation.`:`No rtk binary found. Saving requests installation into ~/.glimmervoid/bin on supported server platforms, subject to installer eligibility.`}function l2(e){return e.control===`password`}function u2(e){return`${e.path}${Z0}`}function d2(e,t){if(Object.is(e,t))return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((e,n)=>d2(e,t[n]));if(!e||!t||typeof e!=`object`||typeof t!=`object`)return!1;let n=Object.keys(e),r=Object.keys(t);return n.length===r.length&&n.every(n=>Object.hasOwn(t,n)&&d2(e[n],t[n]))}function f2(e){return X0.get(e)||null}function p2(e){return Array.isArray(e)?e.map(e=>String(e)):[]}function m2(e){return e.split(`
|
|
175
|
+
`).map(e=>e.trim()).filter(e=>e!==``)}function h2(e){let t=e.range;if(!t)return null;let n={min:Number(w0(e,t.min))};return t.max!=null&&(n.max=Number(w0(e,t.max))),t.exclusiveMin&&(n.exclusiveMin=!0),n}function g2(e){let t=`Default ${D0(e,e.defaultValue)}`;return T0(e)?`${t}, stored as ${JSON.stringify(e.defaultValue)} ${e.unit?.storedLabel??``}`.trimEnd():t}function _2(e,t){let n=g2(e),r=n2.has(e.path)?void 0:_0(t,e.path);if(r===void 0)return{currentText:null,defaultText:n,jsonFragment:null};let i={};return y0(i,e.path,r),{currentText:`Current ${D0(e,r)}`,defaultText:n,jsonFragment:JSON.stringify(i,null,2)}}function v2(e,t,n){let r=t??e.find(e=>e.id===n.group);if(!r)return q0(n.group??``)?.title??`config.json`;let i=e.find(e=>e.id===r.parent);return i?`${i.title} / ${r.title}`:r.level===`lanes`?`${i2} / ${r.title}`:r.title}function y2(e){let t=/^#settings(?:\?(.*))?$/.exec(String(e??``));if(!t)return null;let n=new URLSearchParams(t[1]??``).get(`q`)??``;return{query:Array.from(n.trim()).slice(0,t2).join(``).trim()}}function b2(e,t){return e.filter(e=>e.parent===t)}function x2(e,t){let n=e.find(e=>e.id===t);return n?n.parent?e.find(e=>e.id===n.parent)??n:n:null}function S2(e){return e.filter(e=>!e.parent)}function C2(e){let t=e.filter(e=>e.level===`lanes`);return[{heading:null,sections:e.filter(e=>e.level!==`lanes`)},{heading:i2,sections:t}].filter(e=>e.sections.length>0)}function w2(e,t,n,r){return r?`hidden`:n.trim()?`search`:t&&x2(e,t)?`section`:`list`}function T2(e,t={}){let n={};for(let r of b0(e)){if(x0(r))continue;if(r.path.startsWith(`pref:`)){let e=r.path.slice(5),i=t.prefs?.[e]??t[r.path];n[r.path]=w0(r,i??r.defaultValue);continue}if(l2(r)){let e=_0(t,u2(r))===!0;n[r.path]=e?Q0:``;continue}let e=_0(t,r.path);n[r.path]=w0(r,e??r.defaultValue)}return X0.set(n,g0(t)),n}function E2(e,t,n){let r=b0(e).filter(e=>x0(e)||e.path.startsWith(`pref:`)||s2(e,f2(t)||{})||l2(e)&&n[e.path]===Q0?!1:!d2(t[e.path],n[e.path]));if(r.length===0)return{};let i=f2(t)||{},a=(Array.isArray(i.projectChoices)?i.projectChoices:[]).map(e=>e.id).filter(e=>typeof e==`string`),o={},s=new Set;for(let e of r){let[r]=e.path.split(`.`);if(!e.path.includes(`.`)){o[r]=O0(e,n[e.path]);continue}if(!s.has(r)){let e=i[r];o[r]=e&&typeof e==`object`&&!Array.isArray(e)?g0(e):{},s.add(r)}let c=O0(e,n[e.path]);if(e.control===`projects`){let n=t[e.path];c=J0({checked:Array.isArray(c)?c:[],stored:Array.isArray(n)?n:[],rendered:Y0(a.map(e=>({id:e,name:e})),Array.isArray(n)?n:[]).map(e=>e.id)})}y0(o,e.path,c)}for(let t of b0(e))l2(t)&&v0(o,u2(t));return delete o.secretSources,o}function D2(e,t,n,r){return r4(E2(e,t,{...t,[n.path]:r}))}function O2(e){let t=e.unit?.label;return t?` of ${t}`:``}function k2(e){let t=h2(e);if(!t)return`Allowed range is unavailable.`;let n=`${e.integer!==!1&&!T0(e)?`whole number`:`number`}${O2(e)}`;return t.exclusiveMin&&t.min===0?`Must be a positive ${n}.`:t.max==null?`Must be a ${n} ${t.exclusiveMin?`above`:`of at least`} ${E0(t.min)}.`:`Must be a ${n} between ${E0(t.min)} and ${E0(t.max)}.`}function A2(e){return`Must be a multiple of ${D0(e,1)}.`}function j2(e){return Math.abs(e-Math.round(e))<r2&&Number.isSafeInteger(Math.round(e))}function M2(e,t){return Number(O0({...e,integer:!1,nullable:!1,zeroIsNull:!1},t))}function N2(e,t){if(e.nullable&&(t==null||String(t).trim()===``))return null;let n=e.range;if(!n)return`Allowed range is unavailable.`;if(t==null||String(t).trim()===``)return k2(e);let r=Number(t);if(!Number.isFinite(r))return k2(e);if(e.zeroIsNull&&r<=0)return null;let i=M2(e,r);if(e.integer!==!1&&!j2(i))return T0(e)?A2(e):k2(e);let a=Number(O0(e,r));return n.exclusiveMin&&a<=n.min||!n.exclusiveMin&&a<n.min||n.max!=null&&a>n.max?k2(e):null}function P2(e,t,n=!1){return n?k2(e):N2(e,t.trim())}function F2(e,t){let n=t.trim();if(e.nullable&&n===``)return null;let r=Number(n);return e.zeroIsNull&&r<=0?null:r}function I2(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?E0(t):String(e)}function L2(e,t){return Array.isArray(t)?e.valueKind===`posthog-projects`&&O0(e,t)===null?$0:null:`Must be a list.`}function R2(e,t){let n={};for(let r of b0(e)){if(x0(r))continue;let e=null;r.control===`number`&&(e=N2(r,t[r.path])),r.control===`list`&&(e=L2(r,t[r.path])),r.control===`select`&&r.options&&!r.options.some(e=>e.value===t[r.path])&&(e=`Choose one of the available options.`),e&&(n[r.id]=e)}return z2(b0(e),t,n),n}function z2(e,t,n){for(let r of e){let i=e.find(e=>e.id===r.maximumSettingId);if(!i||n[r.id]||n[i.id])continue;let a=t[r.path],o=t[i.path];Number(O0(r,a))>Number(O0(i,o))&&(n[r.id]=`Minimum must not exceed the maximum (${I2(o)}).`,n[i.id]=`Maximum must not be below the minimum (${I2(a)}).`)}}function B2(e,t){return b0(e).find(e=>e.id===t.maximumSettingId||e.maximumSettingId===t.id)}function V2(e,t,n){let r=B2(e,t);return R2([{id:`scoped`,level:`machine`,title:``,description:``,settings:r?[t,r]:[t]}],n)[t.id]??null}function H2(e,t){return e.control===`number`?F2(e,t):e.control===`list`?m2(t):t}function U2(e,t){return O0(e,e.control===`list`?p2(t):t)}function W2(e){return e?.isDirty===!0}function G2(e,t,n,r,i,a=!1){if(!W2(n))return{kind:`unchanged`};let o=t.control===`number`?P2(t,r,a):null;if(o)return{kind:`invalid`,error:o};let s=H2(t,r);if(d2(O0(t,s),U2(t,n.base)))return{kind:`unchanged`};let c=V2(e,t,{...i,[t.path]:s});return c?{kind:`invalid`,error:c}:{kind:`changed`,value:s}}function K2(e){return l2(e)?``:w0(e,e.defaultValue)}function q2(e,t){return d2(t,K2(e))}function J2(e){return e.presentation?e.presentation:(e.options?.length??0)<=e2?`segmented`:`select`}function Y2(e){return Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:e===!0}function X2(e,t){return e.danger===!0&&!!e.warning&&Y2(t)}function Z2(e,t){return X2(e,t)}function Q2(e){return e.title.charAt(0).toLowerCase()+e.title.slice(1)}function $2(e){return l2(e)?`Reset removes the stored ${Q2(e)}. Anything that relies on it stops until a new one is saved.`:Z2(e,K2(e))?e.warning??``:null}function e4(e){return[e.repos.join(`, `),e.trigger,e.actions.map(e=>e.type).join(`, `)].join(` `)}function t4(e){if(e==null)return[`No rules. Add workflows.rules to config.json.`];let t=An.safeParse(e);return t.success?t.data.rules.length===0?[`No rules. Add workflows.rules to config.json.`]:t.data.rules.map(e=>[e.name,e.enabled?`enabled`:`disabled`,e4(e)].join(` `)):[`The workflows block is invalid, so no rule runs: ${t.error.issues[0]?.message??`unknown problem`}`]}function n4(e){let t=An.safeParse(e??{});return t.success?t.data.rules.map(e=>({id:e.id,name:e.name,isEnabled:e.enabled,summary:e4(e)})):[]}function r4(e){let t=e.workflows;return typeof t!=`object`||!t||Array.isArray(t)?e:{...e,workflows:Object.fromEntries(Object.entries(t).filter(([e])=>e!==`rules`))}}var i4={teamReview:e=>e?.teamReview?.enabled===!0,posthog:e=>e?.posthog?.enabled===!0,visions:e=>e?.visions?.enabled===!0,usage:e=>e?.usage?.enabled!==!1,benchmarks:e=>e?.benchmarks?.enabled===!0,zenView:e=>e?.zenView===!0},a4=[{rule:`teamReview`,sectionId:`lanes-team-review`,settingId:`team-review-enabled`},{rule:`usage`,sectionId:`machine-usage`,settingId:`usage-enabled`},{rule:`posthog`,sectionId:`lanes-posthog`,settingId:`posthog-enabled`},{rule:`visions`,sectionId:`lanes-visions`,settingId:`visions-enabled`},{rule:`benchmarks`,sectionId:`lanes-benchmarks`,settingId:`benchmarks-enabled`},{rule:`zenView`,sectionId:`machine-sessions`,settingId:`zen-view`}];function o4(e,t){return t.isPhoneShellActive?t.phoneScreen===e:t.activeView===e}function s4(e,t){return e.flatMap(e=>!e.gate||!(`fromSettings`in e.gate)?[]:[{view:e,isAvailable:e.gate.fromSettings(t)}])}function c4(e,t){let n=new Set(e),r=[...new Set((t??[]).filter(e=>n.has(e)))];return[...r,...e.filter(e=>!r.includes(e))]}function l4(e,t,n){let r=e.filter(e=>e!==t);if(r.length===e.length)return[...e];let i=Math.max(0,Math.min(n,r.length));return[...r.slice(0,i),t,...r.slice(i)]}function u4(e){return{isActive:e===!0||typeof e==`string`,level:typeof e==`string`?e:null}}function d4(e,t){e?.refreshOn?.includes(t)&&e.refresh?.(t)}function f4(e,t,n){for(let r of e)o4(r.view,t)&&d4(r,n)}var p4=2e4,$=null,m4=null,h4={claude:null,codex:null},g4=null,_4=null,v4=null,y4=null,b4=`all`,x4=!1,S4=null,C4=null,w4=!0,T4=Gj,E4=Wj,D4=Uj,O4=!1,k4=null,A4=`day`,j4=new Set,M4=Xl({getAck:Gc,setAck:Kc,signature:()=>rte($,h4.claude),isLooking:()=>!br(g4)}),N4=null,P4=null,F4=null,I4=null,L4=null,R4=null,z4=null,B4=mp(()=>g4),V4=(e,t)=>_r(`usage`,e,t);function H4(e,t,n,r){let i=j(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=j(`span`,`usage-tile-value`,t);i.append(a,j(`span`,`usage-tile-label`,e));let o=n?j(`span`,`usage-tile-sub`,n):null;return o&&i.append(o),{tile:i,valueEl:a,subEl:o}}function U4(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function W4(e,t,n){let r=j(`div`,`usage-meter`);r.dataset.tone=String(t),r.setAttribute(`role`,`progressbar`),r.setAttribute(`aria-valuemin`,`0`),r.setAttribute(`aria-valuemax`,`100`),r.setAttribute(`aria-label`,n);let i=j(`span`,`usage-meter-fill`);return r.append(i),G4(r,e),r}function G4(e,t){if(!e)return;let n=U4(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function K4(e,t,n,r){let i=j(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=j(`table`,`usage-table`),o=j(`thead`),s=j(`tr`);for(let i of e){let e=j(`th`,i.numeric?`usage-num`:null);if(e.scope=`col`,!i.key){e.textContent=i.label,s.append(e);continue}let a=i.key;e.setAttribute(`aria-sort`,_te(t,a));let o=j(`button`,`usage-sort`,i.label);o.type=`button`,o.dataset.sortKey=a,o.addEventListener(`click`,()=>{I3(`sort`),k4={kind:`sort`,table:r,key:a},n(a)}),e.append(o),s.append(e)}o.append(s);let c=j(`tbody`);return a.append(o,c),i.append(a),{wrap:i,body:c}}function q4(e,t){for(let n of t){let t=j(`td`,n.numeric?`usage-num`:n.className||null,n.node?null:n.text);n.node&&t.append(n.node),n.title&&(t.title=n.title),n.span&&(t.colSpan=n.span),e.append(t)}}function J4(e){let t=j(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(j(`span`,`usage-share-text`,Xk(e))),t;let n=j(`span`,`usage-share-bar`),r=j(`span`,`usage-share-fill`);return r.style.width=`${U4(e)}%`,n.append(r),t.append(n,j(`span`,`usage-share-text`,Xk(e))),t}function Y4(){if(!N4?.isConnected)return;let e=Number($?.ts);N4.textContent=Number.isFinite(e)&&e>0?`Report ${fp(e)}`:``}function X4(){if(!P4?.isConnected)return;let e=Number(m4?.ts);P4.textContent=Number.isFinite(e)&&e>0?`Sessions ${fp(e)}`:``}function Z4(){let e=uA($?.activeBlock);e&&(F4?.isConnected&&(F4.textContent=`${e.pct}%`),I4?.isConnected&&(I4.textContent=`${oA(e.remainingMinutes)} left`),L4?.isConnected&&G4(L4,e.pct))}function Q4(e){let t=Bk.find(t=>t.value===e);return t?t.days:null}function $4(){let e=j(`div`,`usage-controls`),t=j(`label`,`usage-control`);t.append(j(`span`,`usage-control-label`,`Range`));let n=j(`select`,`usage-select`);for(let e of Bk){let t=j(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=b4,n.addEventListener(`change`,()=>{I3(`range`),b4=n.value,R3()}),t.append(n);let r=j(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>{I3(`refresh`),R3({force:!0})});let i=j(`span`,`usage-refresh-status`,``);return R4=r,z4=i,N3(),e.append(t,r,i),e}function e3(){let e=V4(`Usage`,tA($?.daily||[]));e.append($4()),N4=j(`p`,`usage-meta`,``),e.append(N4),Y4(),B4.onTick(Y4);let t=pte($);t&&e.append(j(`p`,`usage-warning`,t));let n=ute($?.pricing?.missing);return n&&e.append(j(`p`,`usage-warning`,n)),e}function t3(){let e=Oj.filter(({vendor:e})=>jj(h4[e]));if(e.length===0)return null;let t=V4(`Plan limits`,Aj(e.map(({vendor:e})=>e),$?.totals)),n=e.length>1,r=j(`div`,`usage-plan-vendors`);for(let{vendor:t,label:i}of e)r.append(n3(h4[t],n?i:null));return t.append(r),t}function n3(e,t){let n=j(`div`,`usage-plan-vendor`);t&&n.append(j(`p`,`usage-plan-vendor-label`,t));let r=ste(e?.ts);if(r){let e=j(`p`,`usage-meta`,r);e.dataset.tone=`warn`,n.append(e)}let i=j(`div`,`usage-plan`);for(let t of Ej){let n=Dj(e,t.key);n&&i.append(r3(t,n))}let a=j(`p`,`usage-meta`,``);n.append(i,a);let o=()=>{if(!a.isConnected)return;let t=Nj(e?.ts);a.textContent=t?`Plan ${t}`:``};return o(),B4.onTick(o),n}function r3(e,t){let n=j(`div`,`usage-plan-window`),r=j(`div`,`usage-plan-head`);r.append(j(`span`,`usage-plan-label`,e.label)),r.append(j(`span`,`usage-plan-used`,ite(t)));let i=j(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(W4(t.pct,dA(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=ate(t.resetsAtMs))};return a(),B4.onTick(a),n}function i3(){let e=kA($,h4.claude),t=a3();if(e.length===0&&!t)return null;let n=V4(`Glimmervoid overhead`,e.length>0?xA:null);if(e.length>0){let t=j(`div`,`usage-tiles`);for(let n of e){let e=[AA(n),Jk(n.costUSD)].filter(Boolean).join(`, `);t.append(H4(`${n.label}, share of Claude use`,Xk(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=jA(t);e&&n.append(j(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(j(`p`,`usage-meta`,`Selected range by lane. ${bA}`)),n.append(t)),n}function a3(){if(!TA($))return null;let e=CA($),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=K4([{label:`Lane`},{label:`Cost`,numeric:!0},{label:`Tokens`,numeric:!0},{label:`Sessions`,numeric:!0},{label:`Share`,numeric:!0}],null,()=>{},`lane`);for(let n of e){let e=j(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),q4(e,[{text:SA(n.lane),className:`usage-lane-cell`},{text:Jk(n.costUSD),numeric:!0},{text:Yk(n.tokens),numeric:!0},{text:PA(n.sessions),numeric:!0},{node:J4($k(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function o3(){let e=$?.activeBlock,t=$?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=wj($?.totals),i=V4(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(j(`p`,`usage-empty`,`No active block.`));let e=s3();return e&&i.append(e),i}let a=Mj($,h4.claude),o=j(`div`,`usage-tiles`);o.append(H4(`block tokens`,Yk(e.tokens??0),Jk(e.costUSD??0),a).tile);for(let t of cA(e.burn))o.append(H4(t.label,t.value,t.sub,a).tile);let s=uA(e);if(s){let e=H4(`elapsed`,`${s.pct}%`,`${oA(s.remainingMinutes)} left`);F4=e.valueEl,I4=e.subEl,o.append(e.tile)}i.append(o),s&&(L4=W4(s.pct,`ok`,`Elapsed share of the current block window`),i.append(L4),B4.onTick(Z4));let c=lA(e.projection);if(c){let e=j(`p`,`usage-projection`,c);e.dataset.tone=a,i.append(e)}let l=s3();l&&i.append(l);let u=hA($?.tokenLimit);if(!u)return i;let d=pA($?.tokenLimit),f=Mj($);i.append(W4(d,f,`Share of the largest completed block seen, estimated`));let p=j(`p`,`usage-meta`,u);p.dataset.tone=f,i.append(p),i.append(j(`p`,`usage-provenance`,nte(`estimated`)));let m=gA(e.projection,$?.tokenLimit);if(m){let e=j(`p`,`usage-meta`,m);e.dataset.tone=f,i.append(e)}return i}function s3(){let e=$?.anomaly;if(!gj(e))return null;let t=j(`p`,`usage-meta`,mj(e));return t.dataset.tone=hj(e),t}function c3(){let e=Cte($?.blocks);if(e.length===0)return null;let t=wj($?.totals),n=V4(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=j(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=j(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(j(`span`,`usage-block-label`,sA(t.startTs)));let n=j(`span`,`usage-block-bar`),a=j(`span`,`usage-block-fill`);a.style.width=`${U4($k(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(j(`span`,`usage-block-value`,`${Yk(t.tokens)} ${Jk(t.costUSD)}`)),r.append(e)}return n.append(r),n}function l3(){let e=$?.totals||{},t=Ste($?.daily,rA($)),n=V4(`Totals`,[Lk,$?.tz?`TZ ${$.tz}`:``].filter(Boolean).join(` `)),r=Mj($,h4.claude),i=j(`div`,`usage-tiles`);i.append(H4(`today`,Yk(t?.tokens??0),Jk(t?.costUSD??0),r).tile),i.append(H4(`range total`,Yk(e.tokens??0),Jk(e.costUSD??0)).tile);let a=NA($);a&&i.append(H4(a.label,a.value,a.sub).tile),n.append(i);let o=u3(e);o&&n.append(o);let s=Sj(e)?xj(e):[];if(s.length>0){let e=j(`div`,`usage-tiles usage-vendor-tiles`);for(let t of s)e.append(H4(t.label,Yk(t.tokens),Jk(t.costUSD)).tile);n.append(e)}return P4=j(`p`,`usage-meta`,``),n.append(P4),X4(),B4.onTick(X4),n}function u3(e){let t=vA(e);if(t.length===0)return null;let n=j(`div`,`usage-compo`),r=j(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=j(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=j(`div`,`usage-compo-legend`);for(let e of t){let t=j(`span`,`usage-compo-item`),n=j(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,j(`span`,`usage-compo-label`,e.label),j(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function d3(){let e=$?.savings;if(!LA(e))return null;let t=V4(`Savings`,``),n=j(`div`,`usage-tiles`),r=RA(e);r&&n.append(H4(`rtk compression`,r.value,r.sub).tile);let i=zA(e);return i&&n.append(H4(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function f3(){let e=VA($);if(e.length===0)return null;let t=V4(`Budgets`,`your own ceilings`),n=j(`div`,`usage-budgets`),r=om(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=j(`div`,`usage-budget`),r=j(`div`,`usage-budget-head`);r.append(j(`span`,`usage-budget-label`,HA(t.scope))),r.append(j(`span`,`usage-budget-value`,UA(t))),r.append(j(`span`,`usage-budget-pct`,Xk(WA(t)))),e.append(r),e.append(W4(WA(t),t.tone,GA(t))),n.append(e)}return t.append(n),t}function p3(){let e=$?.daily||[],t=A4,n=xte(nj(e,t),T4),r=KA.find(e=>e.value===t)?.label||`Day`,i=V4(`Over time`,[aj(e)].filter(Boolean).join(`, `));if(i.append(m3()),n.length===0)return i.append(j(`p`,`usage-empty`,`No usage.`)),i;let a=g3(e);a&&i.append(a);let{wrap:o,body:s}=K4([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],T4,e=>{T4=Hj(T4,e),T3()},`day`);for(let e of n){let n=String(e.day??``),r=j(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=Kj(e.models),a=`${t}:${n}`,o=_3(a,i.length);q4(r,[{node:h3(e,t),title:n},{text:Yk(e.tokens),numeric:!0},{text:Jk(e.costUSD),numeric:!0},{node:o,className:`usage-toggle-cell`}]),s.append(r),i.length!==0&&j4.has(a)&&s.append(v3(i))}return i.append(o),i}function m3(){let e=j(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of KA){let n=j(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===A4?`true`:`false`),n.addEventListener(`click`,()=>{A4!==t.value&&(I3(`period`),A4=t.value,k4={kind:`period`,view:t.value},T3())}),e.append(n)}return e}function h3(e,t){let n=j(`span`,`usage-period-cell`);return n.append(j(`span`,null,ij(e.day,t))),e.source===`history`&&n.append(j(`span`,`usage-history-tag`,`history`)),n}function g3(e){let{cells:t,max:n}=uj(e,{today:rA($)});if(t.length===0||n<=0)return null;let r=j(`div`,`usage-heatmap-scroll`),i=j(`div`,`usage-heatmap`);i.setAttribute(`role`,`img`),i.setAttribute(`aria-label`,`Daily usage for the trailing ${Math.max(...t.map(e=>e.week))+1} weeks`);let a=j(`div`,`usage-heatmap-days`);for(let e of cj)a.append(j(`span`,`usage-heatmap-day`,e));for(let e of t){let t=j(`span`,`usage-heatmap-cell`);t.dataset.tone=String(e.tone),e.noData&&(t.dataset.noData=`true`),e.source===`history`&&(t.dataset.source=`history`),t.style.gridColumn=String(e.week+1),t.style.gridRow=String(e.weekday+1),t.title=dj(e),i.append(t)}return r.append(a,i),r}function _3(e,t){if(t===0)return null;let n=j(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,j4.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{I3(`expand`),k4={kind:`day`,day:e},j4.has(e)?(j4.delete(e),T3()):(j4.add(e),T3())}),n}function v3(e){let t=j(`tr`,`usage-row-breakdown`),n=j(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=j(`span`,`usage-model-chip`);e.append(j(`span`,`usage-model-name`,Rj(t)),j(`span`,`usage-model-value`,`${Yk(t.tokens)} ${Jk(t.costUSD)}`)),n.append(e)}return t.append(n),t}function y3(e,t){let n=j(`span`,`usage-model-name-wrap`),r=bj(e,t);return r&&n.append(j(`span`,`usage-vendor-tag`,r)),n.append(j(`span`,null,Rj(e))),n}function b3(){let e=Kj($?.models,E4),t=$?.totals||{},n=Zk(t),r=V4(`By model`,Qk(n));if(e.length===0)return r.append(j(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=K4([{label:`Model`,key:`model`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Share`,numeric:!0},{label:`Input`,numeric:!0,key:`input`},{label:`Output`,numeric:!0,key:`output`},{label:`Cache write`,numeric:!0,key:`cacheCreate`},{label:`Cache read`,numeric:!0,key:`cacheRead`}],E4,e=>{E4=Hj(E4,e),T3()},`model`);for(let r of e){let e=j(`tr`,`usage-row`);q4(e,[{node:y3(r,t),className:`usage-model-cell`,title:Rj(r)},{text:Yk(r.tokens),numeric:!0},{text:Jk(r.costUSD),numeric:!0},{node:J4($k(r[n],t[n])),className:`usage-share-cell`},{text:Yk(r.input),numeric:!0},{text:Yk(r.output),numeric:!0},{text:Yk(r.cacheCreate),numeric:!0},{text:Yk(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function x3(){let e=vte($?.sessions,D4),t=yte(e,O4),n=$?.totals||{},r=Zk(n),i=V4(`By session`,Qk(r));if(e.length===0)return i.append(j(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:o}=K4([{label:`Session`,key:`label`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Share`,numeric:!0},{label:`Last activity`,numeric:!0,key:`lastTs`}],D4,e=>{D4=Hj(D4,e),T3()},`session`);for(let e of t.rows){let t=j(`tr`,`usage-row`);Ij(e)&&(t.dataset.managed=`true`);let i=Lj(e),a=j(`span`,`usage-ago`,``);q4(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:Yk(e.tokens),numeric:!0},{text:Jk(e.costUSD),numeric:!0},{node:J4($k(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),B4.track(a,Number(e.lastTs),fp),o.append(t)}return i.append(a),e.length>10&&i.append(S3(t.hiddenCount)),i}function S3(e){let t=j(`div`,`usage-overflow`),n=bte(e);n&&t.append(j(`p`,`usage-meta`,n));let r=j(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,O4?`true`:`false`),r.addEventListener(`click`,()=>{I3(`expand`),k4={kind:`sessions-toggle`},O4=!O4,T3()}),t.append(r),t}function C3(){let e=V4(`Not available`,``);return e.append(j(`p`,`usage-empty`,Pj($))),e.append(j(`p`,`usage-empty`,Rk)),e}function w3(){N4=null,P4=null,F4=null,I4=null,L4=null,R4=null,z4=null}function T3({force:e=!1}={}){if(!g4||!e&&br(g4))return;let t=g4.parentElement,n=t?t.scrollTop:0;B4.reset(),w3(),g4.textContent=``,O3(),t&&(t.scrollTop=n),E3()}function E3(){let e=k4;if(k4=null,!e)return;let t=D3(e);if(!t||!g4)return;let n=g4.querySelector(t);n instanceof HTMLElement&&n.focus()}function D3(e){return e.kind===`day`?`.usage-toggle[data-usage-day="${CSS.escape(e.day)}"]`:e.kind===`period`?`.usage-period-button[data-period-view="${CSS.escape(e.view)}"]`:e.kind===`sessions-toggle`?`.usage-toggle[data-usage-sessions-toggle="true"]`:e.kind===`sort`?`[data-usage-table="${CSS.escape(e.table)}"] .usage-sort[data-sort-key="${CSS.escape(e.key)}"]`:null}function O3(){if(!g4)return;g4.append(e3());let e=t3();if(Fj($)){e&&g4.append(e),g4.append(C3());return}if(!$){e&&g4.append(e),g4.append(j(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,f3()].filter(e=>e!==null);g4.append(k3(`usage-band-now`,o3(),t,{sideFirst:!0}));let n=[d3()].filter(e=>e!==null);g4.append(k3(`usage-band-spend`,l3(),n));let r=[c3()].filter(e=>e!==null);g4.append(k3(`usage-band-trend`,p3(),r));let i=i3();i&&g4.append(i),g4.append(b3(),x3())}function k3(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=j(`div`,`usage-band ${e}`),a=j(`div`,`usage-band-col`);for(let e of n)a.append(e);return r?(i.append(a,t),i):(i.append(t,a),i)}function A3(){_4&&_4(M4.refresh())}function j3(){M4.acknowledge(),A3()}function M3(){return w4?x4?`Refreshing`:C4??``:$?`${W} The figures below are from before the connection dropped.`:W}function N3(){R4&&(R4.disabled=x4),z4&&(z4.textContent=M3(),!w4||!x4&&C4!==null?z4.dataset.tone=`error`:delete z4.dataset.tone)}function P3(e){x4=e,N3(),S4&&=(clearTimeout(S4),null),e&&(S4=setTimeout(()=>{S4=null,x4=!1,C4=`Usage did not answer within ${Math.round(p4/1e3)} s. Refresh to try again.`,N3()},p4))}function F3(e){_4=e,A3()}function I3(e){v4?.({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`usage`,action:e}})}function L3(e){v4=e}function R3({force:e=!1}={}){if(!v4)return;y4=zd(`usage`);let t={type:`request-usage-report`,requestId:y4};e&&(t.force=!0);let n=Q4(b4);n!==null&&(t.days=n),C4=null,P3(!0),!v4(t)&&(C4=W,P3(!1))}function z3(e){w4=e,N3()}function B3(e){if(g4)return g4;let t=j(`div`,`usage-content`);return e.appendChild(t),g4=t,B4.ensure(),T3({force:!0}),t}function V3(){T3({force:!0})}function H3(e){m4=e,$&&!Fj($)&&P4?.isConnected?X4():T3()}function U3(e){let t=e;h4={...h4,[kj(t)]:t},T3(),A3()}function W3(e){mte(e,y4)&&(C4=null,P3(!1),$=e,T3(),A3())}function G3(){let e=$?.pricing||(m4?{source:m4.pricingSource}:null),t=lte(e?.fetchedAt),n=[cte(e,t!==null&&t>0?fp(t):``)],r=Pj($);r&&n.push(r);let i=fte($?.scan);return i&&n.push(i),n}var K3=Object.freeze({sounds:()=>Kee(),themes:ete}),q3=2200,J3=1600,Y3=15e3,X3=`https://glimmervoid.dev`,Z3=`browser-appearance`,Q3=`browser-shortcuts`,$3=`lanes-features`,e6=Object.freeze({id:$3,level:`lanes`,title:`Features`,description:`Optional tabs, each hidden until its own toggle is on.`,settings:[]}),t6=`flying-animals`,n6=Object.freeze({ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1});function r6(e){if(!e.optionsFrom)return e;let t=K3[e.optionsFrom]?.()??[];return{...e,options:t.map(e=>({value:e.id,label:e.label}))}}function i6(){let e=p0.sections.map(e=>({...e,settings:e.settings.map(r6)})),t=e.findIndex(e=>e.level===`lanes`);return Object.freeze([...e.slice(0,t),e6,...e.slice(t)])}var a6=i6(),o6=!1,s6=null,c6=null,l6=null,u6=null,d6=null,f6=null,p6=null,m6=null,h6=a6[0],g6={},_6={},v6=new Map,y6=new Map,b6=new Map,x6=new WeakMap,S6=Promise.resolve(),C6=new Map,w6=``,T6=null,E6=null,D6=Qu,O6=()=>{},k6=null,A6=!1,j6=!1,M6=null,N6=new Set,P6=new Map;function F6(){return{themeId:_c(),flyingAnimalsEnabled:yc(),...sl(),soundEnabled:ac(),soundId:vb(sc()),notificationsEnabled:lc(),sessionUsageChips:dc(),phoneArrowPad:pc(),nextAttentionKeyCode:hc()}}function I6(e){_6=T2(a6,{...e,prefs:F6()}),Sp(e.agentLogins)}function L6(e){return b6.has(e.id)?b6.get(e.id):_6[e.path]}function R6(e){return[e,...b2(a6,e.id)]}function z6(e){return R6(e).flatMap(e=>e.settings)}function B6(e){return a6.find(t=>t.settings.some(t=>t.id===e.id))??h6}function V6(e,t=null){history.replaceState(history.state,``,rm(e,t))}function H6(e){requestAnimationFrame(()=>{let t=document.getElementById(e),n=t?.closest(`.settings-view-advanced-panel`);n&&(o6=!0,n.hidden=!1,m6?.querySelector(`.settings-view-advanced-toggle`)?.setAttribute(`aria-expanded`,`true`));let r=t?.closest(`.settings-view-setting`);r&&(r.scrollIntoView({block:`center`}),r.classList.remove(`settings-view-setting-flash`),requestAnimationFrame(()=>r.classList.add(`settings-view-setting-flash`)))})}function U6(e){e.replaceChildren();for(let t of Gs(sm,um())){let n=j(`div`,`shortcut-group`);n.appendChild(j(`div`,`shortcut-group-title`,t.title));let r=j(`dl`,`shortcut-rows`);for(let e of t.items){let t=j(`dt`,`shortcut-keys`);e.combos.forEach((e,n)=>{n>0&&t.appendChild(j(`span`,`shortcut-sep`,`/`)),dm(t,e)}),r.append(t,j(`dd`,`shortcut-label`,e.label))}n.appendChild(r),e.appendChild(n)}}var W6=[];function G6(e){W6=[...e]}function K6(e){return W6.find(t=>t.gate!==void 0&&`fromSettings`in t.gate&&t.gate.fromSettings===e)?.label}function q6(e){let t=j(`ul`,`settings-view-stack settings-features`);for(let e of a4){let n=a6.find(t=>t.id===e.sectionId),r=Z6(e.settingId),i=K6(i4[e.rule]);if(!n||!r||!i)continue;let a=L6(r)===!0,o=j(`li`,`settings-feature`),s=j(`div`,`settings-feature-head`);s.append(j(`span`,`settings-feature-name`,i),u5(`feature`,a?`On`:`Off`)),o.append(s,j(`p`,`settings-view-section-description`,n.description),om(e.sectionId,e.settingId,r.title)),t.appendChild(o)}e.appendChild(t)}function J6(e){let t=new URL(e,X3),{telemetryInstallId:n}=g6;return typeof n==`string`&&n&&t.searchParams.set(`gv`,n),t.href}function Y6(e,t){let n=j(`a`,`settings-about-link`,e);return n.href=t,n.target=`_blank`,n.rel=`noopener`,n}function X6(e){let t=j(`div`,`settings-about`),n=j(`span`,`settings-about-version`,`GLIMMERVOID `);n.appendChild(j(`span`,`settings-about-v`,`v0.44.1`));let r=j(`span`,`settings-about-links`);r.append(Y6(`GitHub`,`https://github.com/${d1}`),Y6(`Changelog`,`https://github.com/${d1}/blob/main/CHANGELOG.md`),Y6(`Website`,J6(`/`))),t.append(n,r),e.appendChild(t)}function Z6(e){return a6.flatMap(e=>e.settings).find(t=>t.id===e)??null}function Q6(e){if(_6[`pref:soundEnabled`]===e)return;_6[`pref:soundEnabled`]=e;let t=Z6(`alert-sounds-enabled`);t&&C5(t)}var $6={"pref:flyingAnimalsMinGapSeconds":e=>$c(Number(e)),"pref:flyingAnimalsMaxGapSeconds":e=>el(Number(e)),"pref:flyingAnimalsMinDurationSeconds":e=>tl(Number(e)),"pref:flyingAnimalsMaxDurationSeconds":e=>nl(Number(e)),"pref:flyingAnimalsScale":e=>rl(Number(e)),"pref:flyingAnimalsOnPhone":e=>il(e===!0)};function e8(e,t){if(e.path===`pref:sessionUsageChips`){fc(t===!0),Ab(t===!0);return}if(e.path===`pref:phoneArrowPad`){mc(t===!0),jb(t===!0);return}if(e.path===`pref:nextAttentionKeyCode`){gc(String(t)),mm(hc());let e=m6?.querySelector(`.settings-view-shortcuts`);e&&U6(e);return}if(e.path===`pref:themeId`){vc(String(t)),kb(String(t));return}if(e.path===`pref:flyingAnimalsEnabled`){bc(t===!0),l1(t===!0);return}let n=$6[e.path];n?(n(t),l1(yc())):e.path===`pref:soundEnabled`?WX(t===!0):e.path===`pref:soundId`?(cc(String(t)),wb(String(t))):e.path===`pref:notificationsEnabled`&&(uc(t===!0),t===!0&&Gp().then(()=>C5(e,{force:!0})))}function t8(e,t){let n=y6.get(e.id);n!==void 0&&clearTimeout(n),y6.delete(e.id),t&&v6.set(e.id,t),t||v6.delete(e.id),w5(e)}function n8(e){t8(e,{tone:`saved`,text:`Saved`}),y6.set(e.id,window.setTimeout(()=>t8(e,null),q3))}function r8(e,t){C6.delete(e.id),e.path.startsWith(`pref:`)?(_6[e.path]=t,e8(e,t),C5(e),n8(e)):b6.has(e.id)&&JSON.stringify(b6.get(e.id))===JSON.stringify(t)||(b6.set(e.id,t),t8(e,{tone:`saving`,text:`Saving`}),S6=S6.then(()=>i8(e,t)))}async function i8(e,t){let n=D2(a6,_6,e,t);if(Object.keys(n).length===0)b6.delete(e.id),t8(e,null),C5(e);else{t8(e,{tone:`saving`,text:`Saving`});try{let r=await K(`update-settings`,{settings:n});if(b6.get(e.id)===t&&b6.delete(e.id),r.type===`settings-error`){t8(e,{tone:`error`,text:String(r.message)}),C5(e,{force:!0});return}if(r.type!==`settings-updated`){t8(e,{tone:`error`,text:`The server did not confirm the save.`}),C5(e,{force:!0});return}e7(r.settings),n8(e)}catch(n){b6.get(e.id)===t&&b6.delete(e.id),t8(e,{tone:`error`,text:n?.message||`Failed to save the setting.`}),C5(e,{force:!0})}}}function a8(e,t){t&&C6.set(e.id,t),t||C6.delete(e.id),w5(e)}function o8(e,t){if(!t.exclusiveMin)return t.min;if(e.integer!==!1)return t.min+1}function s8(e){return e?`On`:`Off`}function c8(e){let t=j(`div`,`settings-view-toggle-wrap`),n=j(`label`,`settings-view-toggle`),r=j(`input`,`settings-view-checkbox`);r.type=`checkbox`,r.checked=L6(e)===!0,e.id===`desktop-notifications`&&!Up()&&(r.checked=!1,r.disabled=!0),r.setAttribute(`aria-labelledby`,e.id);let i=j(`span`,`settings-view-toggle-state`,s8(r.checked));return r.addEventListener(`change`,()=>{let t=r.checked;Z2(e,t)?(r.checked=!1,i.textContent=s8(!1),Rf({title:e.title,message:e.warning??``,confirmLabel:`Turn on`,danger:!0,onConfirm:()=>r8(e,!0)})):(i.textContent=s8(t),r8(e,t))}),n.append(r,i),t.appendChild(n),t}function l8(e){let t=j(`div`,`settings-view-shortcut-key`),n=fm(Hs(`next-attention`,sm,String(L6(e)))),r=j(`button`,`btn-dialog btn-dialog-cancel`,`Record`);r.type=`button`;let i=j(`span`,`settings-view-shortcut-key-prompt`);return i.setAttribute(`role`,`status`),r.addEventListener(`click`,()=>u8(e,t,r,i)),t.append(n,r,i),t}function u8(e,t,n,r){let i=()=>{window.removeEventListener(`keydown`,o,!0),window.removeEventListener(`pointerdown`,a,!0),window.removeEventListener(`focusin`,a,!0),n.disabled=!1,r.textContent=``},a=e=>{e.target instanceof Node&&t.contains(e.target)||i()},o=t=>{if(!n.isConnected||!n.checkVisibility()){i();return}t.preventDefault(),t.stopImmediatePropagation();let r=Ms(t,sm);r.kind!==`ignored`&&(r.kind===`refused`?a8(e,r.reason):(i(),a8(e,null),n.focus(),r.kind===`recorded`&&r8(e,r.keyCode)))};a8(e,null),n.disabled=!0,r.textContent=`Press the new shortcut, or Esc to cancel.`,window.addEventListener(`keydown`,o,!0),window.addEventListener(`pointerdown`,a,!0),window.addEventListener(`focusin`,a,!0)}function d8(e,t,n){e.addEventListener(`blur`,t),e.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),t()):e.key===`Escape`&&(e.preventDefault(),n())})}function f8(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&[`text`,`number`,`password`].includes(e.type)}function p8(e,t){x6.set(t,{base:L6(e),isDirty:!1}),t.addEventListener(`input`,()=>{let e=x6.get(t);e&&(e.isDirty=!0)})}function m8(e,t,n){t.value!==n&&(t.value=n),x6.set(t,{base:L6(e),isDirty:!1}),a8(e,null)}function h8(e,t,n,r=!1){let i=x6.get(t);if(!i)return;let a=G2(a6,e,i,t.value,_6,r);a.kind===`invalid`?a8(e,a.error):a.kind===`unchanged`?m8(e,t,n):Z2(e,a.value)?(m8(e,t,n),Rf({title:e.title,message:e.warning??``,confirmLabel:`Save`,danger:!0,onConfirm:()=>r8(e,a.value)})):(x6.set(t,{base:a.value,isDirty:!1}),r8(e,a.value))}function g8(e){let t=j(`input`,`settings-view-input`);t.type=e.control===`password`?`password`:`text`;let n=()=>String(L6(e)??``);t.value=n(),e.control===`password`&&(t.value=``,t.placeholder=n()?`Configured`:`Not configured`);let r=s2(e,g6);return r&&(t.disabled=!0,t.setAttribute(`aria-description`,`Supplied by ${r}`)),t.autocomplete=`off`,t.spellcheck=!1,t.setAttribute(`aria-labelledby`,e.id),p8(e,t),d8(t,()=>{if(e.control===`password`){let n=t.value;if(n===``)return;m8(e,t,``),r8(e,n)}else h8(e,t,n())},()=>m8(e,t,e.control===`password`?``:n())),t}function _8(e){let t=j(`input`,`settings-view-input`),n=h2(e);t.type=`number`;let r=()=>I2(L6(e));t.value=r(),t.step=e.integer===!1?String(e.step??`any`):`1`;let i=n?o8(e,n):void 0;i!=null&&(t.min=String(i)),n?.max!=null&&(t.max=String(n.max)),t.autocomplete=`off`,t.setAttribute(`aria-labelledby`,e.id),p8(e,t),d8(t,()=>h8(e,t,r(),t.validity.badInput),()=>m8(e,t,r()));let a=e.unit?.label;if(!a)return t;let o=j(`div`,`settings-view-number`),s=j(`span`,`settings-view-unit`,a);return s.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-description`,a),o.append(t,s),o}function v8(e,t){let n=[...e.querySelectorAll(`[role="radio"]`)],r=n.some(e=>e.dataset.value===t);for(let[e,i]of n.entries()){let n=i.dataset.value===t;i.setAttribute(`aria-checked`,String(n)),i.tabIndex=n||!r&&e===0?0:-1}}function y8(e,t,n){n!==String(L6(e))&&(v8(t,n),r8(e,n),v8(t,String(L6(e))))}function b8(e){let t=j(`div`,`settings-view-segmented`);t.setAttribute(`role`,`radiogroup`),t.setAttribute(`aria-labelledby`,e.id);let n=e.options??[];for(let r of n){let n=j(`button`,`settings-view-segment`,r.label);n.type=`button`,n.dataset.value=r.value,n.setAttribute(`role`,`radio`),n.addEventListener(`click`,()=>y8(e,t,r.value)),t.appendChild(n)}return t.addEventListener(`keydown`,r=>{let i=n6[r.key];if(!i||n.length===0)return;r.preventDefault();let a=Math.max(0,n.findIndex(t=>t.value===String(L6(e)))),o=n[(a+i+n.length)%n.length];y8(e,t,o.value),t.querySelector(`[data-value="${CSS.escape(o.value)}"]`)?.focus()}),v8(t,String(L6(e))),t}function x8(e){let t=j(`select`,`settings-view-input`);t.setAttribute(`aria-labelledby`,e.id);for(let n of e.options??[]){let e=j(`option`,null,n.label);e.value=n.value,t.appendChild(e)}return t.value=String(L6(e)),t.addEventListener(`change`,()=>r8(e,t.value)),t}function S8(e,t){let n=e.valueKind===`posthog-projects`?`One project id per line, or none for no project. Shift+Enter adds a line.`:`One entry per line. Shift+Enter adds a line.`;return t.length>0||!e.listEmptyText?n:`${e.listEmptyText} ${n}`}function C8(e){let t=j(`textarea`,`settings-view-input settings-view-list-input`),n=()=>p2(L6(e)),r=()=>n().join(`
|
|
176
|
+
`);t.rows=3,t.value=r(),t.autocomplete=`off`,t.spellcheck=!1,t.placeholder=e.listPlaceholder??``,t.setAttribute(`aria-labelledby`,e.id),p8(e,t),t.addEventListener(`blur`,()=>h8(e,t,r())),t.addEventListener(`keydown`,n=>{n.key===`Escape`?(n.preventDefault(),m8(e,t,r())):n.key!==`Enter`||n.shiftKey||(n.preventDefault(),h8(e,t,r()))});let i=j(`div`,`settings-view-list`);return i.append(t,j(`span`,`settings-view-list-hint`,S8(e,n()))),i}var w8=null;function T8(e){let t=c4(W6.map(e=>e.view),p2(L6(e))),n=j(`ol`,`settings-view-tab-order`);n.setAttribute(`aria-labelledby`,e.id);for(let[r,i]of t.entries()){let a=W6.find(e=>e.view===i)?.label??i,o=j(`li`,`settings-view-tab-order-item`);o.append(j(`span`,`settings-view-tab-order-label`,a),E8(e,t,i,r-1,`Move up`,`Move ${a} up`),E8(e,t,i,r+1,`Move down`,`Move ${a} down`)),n.append(o)}return n}function E8(e,t,n,r,i,a){let o=`${n}:${i}`,s=j(`button`,`btn-dialog btn-dialog-cancel`,i);return s.type=`button`,s.setAttribute(`aria-label`,a),s.disabled=r<0||r>=t.length,o===w8&&(s.dataset.restoresFocus=`true`),s.addEventListener(`click`,()=>{w8=o,r8(e,l4(t,n,r))}),s}function D8(e){let t=j(`div`,`settings-view-projects`),n=L6(e),r=new Set(Array.isArray(n)?n:[]),i=Array.isArray(g6.projectChoices)?g6.projectChoices:[];i.length===0&&t.appendChild(j(`div`,`settings-empty`,`No configured projects are available.`));for(let n of Y0(i,[...r])){let i=j(`label`,`settings-view-project-choice`),a=j(`input`,`settings-view-checkbox`);a.type=`checkbox`,a.checked=r.has(n.id),a.addEventListener(`change`,()=>{let t=L6(e),r=new Set(Array.isArray(t)?t:[]);a.checked&&r.add(n.id),a.checked||r.delete(n.id),r8(e,[...r])}),i.append(a,document.createTextNode(n.name)),t.appendChild(i)}return t}function O8(e,t,{isPrimary:n=!1,isEnabled:r=!0}={}){let i=j(`button`,`btn-dialog ${n?`btn-dialog-confirm`:`btn-dialog-cancel`} settings-update-button`,e);return i.type=`button`,i.disabled=!r,i.addEventListener(`click`,t),i}function k8(e){let t=j(`span`,`settings-update-action-status`,e??``);return t.setAttribute(`role`,`status`),t}function A8(e){let t=ed(D6,e);t!==D6&&(D6=t,n7())}function j8(){A8(G({type:`update-apply`})?`request-sent`:`request-unsent`)}function M8(){k6=Date.now();let e=G({type:`update-check`});j6=e,M6=e?null:W,n7()}function N8(){return j6?`Checking for updates.`:M6}function P8(){T6?(A6=!1,wd({status:T6,checkForUpdates:g6.checkForUpdates,now:Date.now(),lastAutoCheckAt:k6})&&M8()):A6=!0}function F8(e){return e===`update`?O8(`Update`,j8,{isPrimary:!0}):e===`restart`?O8(`Restart`,O6,{isPrimary:!0}):O8(`Check for updates`,M8,{isEnabled:!j6})}function I8(){let e=id({status:T6,journal:E6,request:D6}),t=j(`div`,`settings-update-actions`);if(e.actions.length>0){let n=j(`div`,`settings-update-buttons`);n.append(...e.actions.map(F8)),t.appendChild(n)}let n=N8();return n&&t.appendChild(k8(n)),e.note&&t.appendChild(k8(e.note)),e.command&&t.appendChild(j(`code`,`settings-update-command`,e.command)),t}function L8(e,...t){let n=j(`div`,`settings-update-fact`);return n.append(j(`span`,`settings-update-fact-label`,e),...t),n}function R8(){let e=_d(E6);if(!e)return null;let t=j(`div`,`settings-update-progress`);t.dataset.state=e.state,t.setAttribute(`role`,`status`),e.terminalLine&&t.appendChild(j(`div`,`settings-update-terminal`,e.terminalLine));let n=j(`ol`,`settings-update-steps`);for(let t of e.steps){let e=j(`li`,`settings-update-step`);e.dataset.status=t.status,e.append(j(`span`,`settings-update-step-state`,t.status),j(`span`,`settings-update-step-label`,t.label)),n.appendChild(e)}if(t.appendChild(n),e.outputTail.length===0)return t;let r=j(`pre`,`settings-update-output`,e.outputTail.join(`
|
|
177
|
+
`));if(e.outputStepId&&(r.dataset.step=e.outputStepId),!e.outputStepLabel)return t.appendChild(r),t;let i=`Output from ${e.outputStepLabel}`;return r.setAttribute(`aria-label`,i),t.append(j(`div`,`settings-update-output-label`,i),r),t}function z8(){let e=Cd(T6),t=[e.label];if(e.behind&&t.push(j(`span`,`settings-update-behind`,e.behind)),e.releaseUrl){let n=j(`a`,`settings-link`,`View release`);n.href=e.releaseUrl,n.target=`_blank`,n.rel=`noopener noreferrer`,t.push(n)}return L8(`Latest`,...t)}function B8(){let e=j(`div`,`settings-view-status-block settings-update-status`),t=bd(T6,E6),n=j(`div`,`settings-update-summary`,t.headline);n.dataset.tone=t.tone,e.appendChild(n),e.appendChild(L8(`Running`,Sd(T6))),xd(T6)&&e.appendChild(z8());let r=typeof T6?.lastCheckAt==`number`?T6.lastCheckAt:null,i=L8(`Last checked`,Td({status:T6,checkForUpdates:g6.checkForUpdates,relativeTime:fp(r)}));r&&(i.title=new Date(r).toLocaleString()),e.appendChild(i),e.appendChild(I8());let a=R8();return a&&e.appendChild(a),e}function V8(e){return e===null?`not probed yet`:e?`resolved`:`not found on PATH`}function H8(){let e=Array.isArray(g6.customAgents)?g6.customAgents:[];return e.length===0?[`None declared. Add customAgents to config.json.`]:e.map(e=>{let t=e.args.length>0?`${e.command} ${e.args.join(` `)}`:e.command;return`${e.id} ${e.label} ${t} ${V8(e.resolvable)}`})}function U8(){let e=j(`div`,`settings-view-status-block`);e.appendChild(j(`div`,`settings-section-title`,`Declared agents`));for(let t of H8())e.appendChild(j(`div`,`settings-readonly`,t));return e}function W8(e){P6.set(e,{tone:`ok`,text:`Saved`}),window.setTimeout(()=>{P6.get(e)?.tone===`ok`&&(P6.delete(e),t7())},q3)}async function G8(e,t){N6.add(e.id),P6.delete(e.id),t7();try{let n=await K(`update-settings`,{settings:{workflows:{rules:[{id:e.id,enabled:t}]}}},{timeoutMs:q});if(N6.delete(e.id),n.type===`settings-error`&&P6.set(e.id,{tone:`error`,text:String(n.message)}),n.type===`settings-updated`){W8(e.id),e7(n.settings);return}}catch(t){P6.set(e.id,{tone:`error`,text:ff(t,q)})}N6.delete(e.id),t7()}function K8(e){let t=df(`settings-workflow-rule-status`);if(N6.has(e.id))return t.show(`busy`,`Saving`),t.element;let n=P6.get(e.id);return n&&t.show(n.tone,n.text),t.element}function q8(e){let t=j(`div`,`settings-view-toggle-wrap`),n=j(`label`,`settings-view-toggle`),r=j(`input`,`settings-view-checkbox`);return r.type=`checkbox`,r.checked=e.isEnabled,r.disabled=N6.has(e.id),r.setAttribute(`aria-label`,`Run rule ${e.name}`),r.addEventListener(`change`,()=>{G8(e,r.checked)}),n.append(r,j(`span`,`settings-view-toggle-state`,s8(e.isEnabled)),j(`span`,`settings-readonly`,`${e.name} ${e.summary}`)),t.append(n,K8(e)),t}function J8(){let e=j(`div`,`settings-view-status-block`);e.appendChild(j(`div`,`settings-section-title`,`Rules`));let t=n4(g6.workflows);if(t.length>0){for(let n of t)e.appendChild(q8(n));return e}for(let t of t4(g6.workflows))e.appendChild(j(`div`,`settings-readonly`,t));return e}function Y8(){let e=j(`div`,`settings-view-status-block`);e.appendChild(j(`div`,`settings-section-title`,`Last report`));for(let t of G3())e.appendChild(j(`div`,`settings-readonly`,t));return e}function X8(){let e=j(`div`,`settings-view-status-block`);if((b6.get(`remote-sessions`)??_6.remoteSessions)!==!0)return e.appendChild(j(`div`,`settings-readonly`,`Turn on Remote Coder sessions (experimental) to connect agent logins for them.`)),e;for(let t of[`claude-code`,`codex`]){let n=j(`div`,`settings-telegram-test`),r=j(`button`,`btn-dialog btn-dialog-cancel`,`Connect`);r.type=`button`,r.addEventListener(`click`,()=>Op(t)),n.append(j(`div`,`settings-readonly`,Ep(Cp(t),t)),r),e.appendChild(n)}return e}function Z8(){let e=j(`div`,`settings-view-status-block`),t=j(`button`,`btn-dialog btn-dialog-cancel`,`Set up remote host`);return t.type=`button`,t.addEventListener(`click`,Dee),e.appendChild(t),e}function Q8(e){return e.status===`agent-logins`?X8():e.status===`remote-setup`?Z8():e.status===`update-actions`?B8():e.status===`custom-agents`?U8():e.status===`workflows`?J8():j(`div`,`settings-readonly`,`Not available`)}function $8(e){return e.control===`readonly`?Q8(e):e.control===`toggle`?c8(e):e.control===`number`?_8(e):e.control===`select`?J2(e)===`segmented`?b8(e):x8(e):e.control===`list`?C8(e):e.control===`projects`?D8(e):e.control===`shortcut-key`?l8(e):e.control===`tab-order`?T8(e):g8(e)}function e5(e){let t=s2(e,g6);return t?`Supplied by ${t}. Change the server environment and restart to replace this credential.`:e.status!==`rtk-install`||L6(e)!==!0||g6.rtkAvailable?``:c2(g6)}function t5(e){if(e.control===`readonly`)return null;if(e.status===`usage-last-report`){let e=Y8();return e.classList.add(`settings-view-status-slot`),e}if(e.id===`desktop-notifications`)return l5(e);if(e.id===`telemetry-enabled`)return c5();if(e.status===`telegram-delivery`)return i5();let t=e5(e);return t?j(`div`,`settings-view-warning settings-view-status-slot`,t):null}function n5(){let e=mo.safeParse(g6.telegramDelivery);if(!e.success)return[];let{setupWarning:t,lastFailure:n}=e.data,r=t?[t]:[];return n&&r.push(`The last Telegram send failed at ${new Date(n.failedAt).toLocaleString()}: ${n.message}`),r}function r5(e){e.replaceChildren(...n5().map(e=>j(`p`,`settings-view-warning`,e)))}function i5(){let e=j(`div`,`settings-view-status-slot settings-telegram-delivery`),t=j(`div`,`settings-telegram-delivery-lines`);r5(t);let n=j(`button`,`btn-dialog btn-dialog-cancel`,`Send test message`);n.type=`button`;let r=df(`settings-telegram-test-status`);n.addEventListener(`click`,async()=>{n.disabled=!0;let e=await pf(`telegram-test`,{},r,{busyText:`Sending a test message to Telegram.`});n.disabled=!1,e?.type===`telegram-test-result`&&(g6={...g6,telegramDelivery:e.telegramDelivery},r5(t),e.ok?r.show(`ok`,`Sent. Check the Telegram chat for the test message.`):r.show(`error`,`Not sent: ${e.error??`Telegram refused the message.`}`))});let i=j(`div`,`settings-telegram-test`);return i.append(n,r.element),e.append(t,i),e}async function a5(){o5.disabled=!0;let e=await pf(`request-telemetry-deletion`,{},s5,{busyText:`Sending the deletion request.`,timeoutMs:Y3});o5.disabled=!1,e?.type===`telemetry-deletion-result`&&(e.ok?s5.show(`ok`,`Deletion requested. New usage starts under a new id.`):s5.show(`error`,`Not sent: PostHog did not take the request. Try again later.`))}var o5=j(`button`,`btn-dialog btn-dialog-cancel`,`Delete my data`);o5.type=`button`,o5.addEventListener(`click`,()=>{Rf({title:`Delete your usage data?`,message:`We delete everything collected under this install. New usage starts under a new id.`,confirmLabel:`Delete my data`,danger:!0,onConfirm:()=>{a5()}})});var s5=df(`settings-telemetry-deletion-status`);function c5(){let e=j(`div`,`settings-view-status-slot settings-telemetry-data`);return e.append(Y6(`Privacy details`,J6(`/privacy`)),o5,s5.element),e}function l5(e){let t=Jp(()=>C5(e,{force:!0}));return t.element.hidden?null:(t.element.classList.add(`settings-view-status-slot`),t.element)}function u5(e,t){let n=j(`span`,`settings-view-chip`,t);return n.dataset.chip=e,n}function d5(e,t){let n=xr(e);return n?n.then(()=>t,()=>`Copy failed`):Promise.resolve(`Copy failed`)}function f5(e,t,{copiedText:n,textToCopy:r}){let i=j(`span`,`settings-view-copy-status`);i.setAttribute(`role`,`status`),t.type=`button`,t.addEventListener(`click`,async()=>{i.textContent=await d5(r(),n),setTimeout(()=>{i.textContent=``},J3)}),e.append(t,i)}function p5(e){let t=j(`div`,`settings-view-setting-heading`),n=B6(e),r=j(`h2`,`settings-view-setting-title`,e.title);r.id=e.id,r.addEventListener(`click`,()=>V6(n.id,e.id));let i=j(`button`,`settings-view-copy-link`,`#`);return i.setAttribute(`aria-label`,`Copy link`),t.appendChild(r),f5(t,i,{copiedText:`Link copied`,textToCopy:()=>new URL(rm(n.id,e.id),location.href).href}),t}function m5(e){let t=j(`div`,`settings-view-chips`);return t.append(u5(`scope`,o2[e.scope]),u5(`effect`,a2[e.takesEffect])),t}function h5(e){return e.control===`readonly`||s2(e,g6)?!1:!q2(e,L6(e))}function g5(e){let t=j(`div`,`settings-view-control-foot`),n=j(`span`,`settings-view-save-status`);n.setAttribute(`role`,`status`);let r=j(`button`,`settings-view-reset`,`Reset`);return r.type=`button`,r.title=`Reset to the default value`,r.addEventListener(`click`,()=>{let t=K2(e),n=$2(e);n===null?r8(e,t):Rf({title:e.title,message:n,confirmLabel:`Reset`,danger:!0,onConfirm:()=>r8(e,t)})}),t.append(n,r),t}function _5(e,t){let n=e.querySelector(`.settings-view-save-status`),r=v6.get(t.id);n&&(n.textContent=r?.text??``,r&&(n.dataset.tone=r.tone),r||delete n.dataset.tone);let i=e.querySelector(`.settings-view-reset`);i&&(i.disabled=!h5(t));let a=e.querySelector(`.settings-view-field-error`),o=C6.get(t.id);a&&!o&&a.remove(),a&&o&&(a.textContent=o),!a&&o&&e.querySelector(`.settings-view-setting-control`)?.appendChild(j(`div`,`settings-view-field-error`,o))}function v5(e){let t=j(`article`,`settings-view-setting`);t.dataset.settingId=e.id,e.control===`readonly`&&(t.dataset.readout=`true`);let n=j(`div`,`settings-view-setting-text`);n.append(p5(e),j(`p`,`settings-view-setting-description`,e.description),m5(e));let r=j(`div`,`settings-view-setting-control`);r.appendChild($8(e)),e.control!==`readonly`&&r.appendChild(g5(e)),t.append(n,r),X2(e,L6(e))&&t.appendChild(j(`div`,`settings-view-warning settings-warning`,e.warning));let i=t5(e);return i&&t.appendChild(i),_5(t,e),t}function y5(e){return m6?.querySelector(`[data-setting-id="${e.id}"]`)??null}function b5(e){let t=e.querySelector(`.settings-view-setting-control`);t&&(t.querySelector(`[data-restores-focus="true"]:not([disabled])`)??t.querySelector(`[role="radio"][aria-checked="true"]`)??t.querySelector(`input:not([disabled]), textarea:not([disabled]), select:not([disabled]), button:not([disabled])`))?.focus()}function x5(e,t){if(!f8(e)||!f8(t))return;e.disabled=t.disabled,e.placeholder=t.placeholder;let n=x6.get(t);n&&!W2(x6.get(e))&&(x6.set(e,{base:n.base,isDirty:!1}),e.value!==t.value&&(e.value=t.value))}function S5(e,t,n){if(e===n){x5(e,t);return}let r=[...e.children],i=[...t.children];for(let[t,a]of i.entries()){let i=r[t];i?i.contains(n)?S5(i,a,n):i.replaceWith(a):e.appendChild(a)}for(let e of r.slice(i.length))e.remove()}function C5(e,{force:t=!1}={}){let n=y5(e);if(!n)return;let r=document.activeElement,i=n.contains(r),a=i&&!t&&f8(r)?r:null;(!a||!W2(x6.get(a)))&&C6.delete(e.id);let o=v5(e);a?S5(n,o,a):(n.replaceWith(o),i&&b5(o))}function w5(e){let t=y5(e);t&&_5(t,e)}function T5(e){y5(e)?.querySelector(`.settings-view-setting-control`)?.replaceChildren(Q8(e))}function E5(){for(let e of z6(h6))e.control===`readonly`?T5(e):C5(e)}function D5(){let e=j(`button`,`btn-dialog btn-dialog-cancel`,`Reset all to defaults`);return e.type=`button`,e.addEventListener(`click`,()=>{cl(),I6(g6),l1(yc()),M5()}),e}function O5(e){let t=j(`div`,`settings-view-advanced`),n=j(`button`,`dialog-advanced-toggle settings-view-advanced-toggle`,`Advanced`);n.type=`button`,n.setAttribute(`aria-expanded`,String(o6)),n.setAttribute(`aria-controls`,`settings-view-advanced-panel`);let r=j(`div`,`dialog-advanced-panel settings-view-advanced-panel`);r.id=`settings-view-advanced-panel`,r.hidden=!o6,n.addEventListener(`click`,()=>{o6=!o6,r.hidden=!o6,n.setAttribute(`aria-expanded`,String(o6))});for(let t of e)r.append(v5(t));return h6.id===Z3&&r.append(D5()),t.append(n,r),t}function k5(e){let t=j(`div`,`settings-view-streamer-placeholder`),n=j(`button`,`btn-dialog btn-dialog-confirm`,`Turn off streamer mode`);n.type=`button`;let r=j(`span`,`settings-view-copy-status`,``);r.setAttribute(`role`,`status`),n.addEventListener(`click`,async()=>{n.disabled=!0,r.textContent=``;let e=await Oh(!1);n.disabled=!1,r.textContent=e}),t.append(j(`p`,`settings-view-section-description`,`Settings are hidden in streamer mode.`),n,r),e.appendChild(t)}Dh(()=>M5());function A5(e){let t=j(`header`,`settings-view-subsection`),n=j(`h2`,`settings-view-subsection-title`,e.title);return n.addEventListener(`click`,()=>V6(e.id)),t.append(n,j(`p`,`settings-view-section-description`,e.description)),t}function j5(e,t){for(let n of t.settings.filter(e=>e.access!==`advanced`))e.appendChild(v5(n)),n.id===t6&&e.appendChild(u1());let n=t.settings.filter(e=>e.access===`advanced`);n.length>0&&e.append(O5(n))}function M5(){if(W5(),w6){B5();return}if(!m6)return;if(m6.textContent=``,Th()){k5(m6);return}let e=j(`header`,`settings-view-section-header`),t=j(`h1`,`settings-view-section-title`,h6.title);if(t.tabIndex=-1,t.addEventListener(`click`,()=>V6(h6.id)),e.append(t,j(`p`,`settings-view-section-description`,h6.description)),m6.appendChild(e),h6.id===Q3){let e=j(`div`,`settings-view-stack`);j5(e,h6),m6.appendChild(e);let t=j(`div`,`shortcut-groups settings-view-shortcuts`);U6(t),m6.appendChild(t),m6.appendChild(Iv()),m6.appendChild(Lv()),X6(m6);return}if(h6.id===$3){q6(m6);return}let n=j(`div`,`settings-view-stack`);for(let e of R6(h6))e.id!==h6.id&&n.appendChild(A5(e)),j5(n,e);m6.appendChild(n)}function N5(e,{focusContent:t=!1,settingId:n=null,updateHash:r=!0,openPhoneSection:i=!0}={}){r&&w6&&(w6=``,d6&&(d6.value=``));let a=x2(a6,e)??h6;h6.id!==a.id&&(o6=!1),h6=a;let o=a6.find(t=>t.id===e)??a;P5(u6),i&&ib()&&(f6=o.id),M5(),Z5(h6)&&X5(),h6.id===`machine-updates`&&P8(),r&&V6(o.id,n),n&&H6(n),t&&m6?.querySelector(`h1`)?.focus()}function P5(e){for(let t of e?.querySelectorAll(`[data-settings-section]`)||[]){let e=t.dataset.settingsSection===h6.id;t.setAttribute(`aria-current`,e?`page`:`false`)}}function F5(e){return e.section!==null}function I5(e){d6&&(d6.value=``,w6=``,q5(),N5(e.section.id,{settingId:e.setting.id}))}function L5(e){return W0(p0.sections,e,p0.fileOnly)}function R5(e,t,n,r,i){let a=j(e,t),o=r.matches.find(e=>e.field===i),s=o?n.indexOf(o.text):-1;if(!o||s<0)return a.textContent=n,a;let c=0;for(let e of o.spans)a.append(n.slice(c,s+e.start),j(`mark`,`settings-view-search-highlight`,n.slice(s+e.start,s+e.end))),c=s+e.end;return a.append(n.slice(c)),a}function z5(e,t){let{currentText:n,defaultText:r,jsonFragment:i}=_2(t.setting,g6);if(n!==null&&e.appendChild(j(`span`,`settings-view-search-current`,n)),e.append(j(`span`,`settings-view-search-default`,r),m5(t.setting),j(`p`,`settings-view-list-hint`,`Edit in config.json or with glimmervoid settings set.`)),i===null)return;let a=j(`div`,`settings-view-control-foot`);f5(a,j(`button`,`settings-view-copy-json`,`Copy as JSON`),{copiedText:`JSON copied`,textToCopy:()=>i}),e.appendChild(a)}function B5(){if(!m6)return;if(m6.textContent=``,Th()){k5(m6);return}let e=L5(w6),t=j(`div`,`settings-view-section-header`);if(t.append(j(`h1`,`settings-view-section-title`,`Settings search`),j(`p`,`settings-view-section-description`,`${e.length} ${e.length===1?`result`:`results`} for "${w6}"`)),m6.appendChild(t),e.length===0){m6.appendChild(j(`p`,`settings-empty settings-view-search-empty`,`No settings found.`));return}let n=j(`ol`,`settings-view-search-results`);n.setAttribute(`aria-label`,`Settings search results`);for(let t of e){let e=j(`li`,`settings-view-search-result`);e.tabIndex=-1;let r=v2(a6,t.section,t.setting);e.appendChild(R5(`p`,`settings-view-search-breadcrumb`,r,t,`section`));let i=R5(`span`,`settings-view-setting-title`,t.setting.title,t,`title`);if(F5(t)){let n=j(`button`,`settings-view-search-open`);n.type=`button`,n.appendChild(i),n.addEventListener(`click`,()=>I5(t)),e.appendChild(n)}F5(t)||(e.classList.add(`settings-view-search-file-only`),e.appendChild(i)),e.append(R5(`p`,`settings-view-setting-description`,t.setting.description,t,`description`),R5(`code`,`settings-view-key-path`,t.setting.path,t,`path`));let a=new Set([`title`,`description`,`path`,`section`]);if(!t.matches.some(e=>a.has(e.field))){let n=t.matches.find(e=>e.field===`options`)??t.matches.find(e=>e.field===`keywords`);n&&e.appendChild(R5(`p`,`settings-view-list-hint`,n.text,t,n.field))}F5(t)||z5(e,t),n.appendChild(e)}m6.appendChild(n)}function V5(){return w2(a6,f6,w6,Th())}var H5=new Set;function U5(e){H5.add(e)}function W5(){if(!l6)return;let e=V5(),t=l6.dataset.settingsScreen!==e;if(l6.dataset.settingsScreen=e,p6&&(p6.hidden=e!==`section`),t)for(let e of H5)e()}function G5(){return ib()&&V5()===`section`}function K5(){if(!G5())return;let e=h6.id;J5(``),u6?.querySelector(`[data-settings-section="${e}"]`)?.focus()}function q5(){if(u6&&l6){u6.textContent=``;for(let e of C2(S2(a6))){let t=j(`div`,`settings-view-nav-group`);e.heading&&t.appendChild(j(`div`,`settings-view-nav-heading`,e.heading));for(let n of e.sections){let e=j(`button`,`settings-view-nav-item`,n.title);e.type=`button`,e.dataset.settingsSection=n.id,e.addEventListener(`click`,()=>N5(n.id,{focusContent:ib()})),t.appendChild(e)}u6.appendChild(t)}w6?(W5(),B5()):N5(h6.id,{updateHash:!1,openPhoneSection:!1})}}function J5(e,{updateHash:t=!0}={}){w6=e.trim(),d6&&(d6.value=e),f6=null,t&&history.replaceState(history.state,``,am(w6)),q5()}function Y5(e){if(w6&&e.key===`Enter`&&e.target===d6){let t=L5(w6).find(F5);if(!t)return;e.preventDefault(),I5(t);return}if(e.key===`Escape`&&w6){if(!d6)return;e.preventDefault(),J5(``),d6.focus();return}if(e.key!==`ArrowUp`&&e.key!==`ArrowDown`||!u6)return;let t=[...u6.querySelectorAll(`[data-settings-section]`)].filter(e=>e instanceof HTMLElement),n=document.activeElement;if(!(n instanceof HTMLElement))return;let r=t.indexOf(n);r<0||(e.preventDefault(),t[(r+(e.key===`ArrowDown`?1:-1)+t.length)%t.length].focus())}function one(e,{onRestart:t=()=>{}}={}){O6=t,GX(Q6),s6=e,s6.textContent=``,l6=j(`div`,`settings-view-shell`);let n=j(`div`,`settings-view-sidebar`);d6=j(`input`,`settings-view-search`),d6.type=`search`,d6.placeholder=`Search settings`,d6.setAttribute(`aria-label`,`Search settings`),u6=j(`nav`,`settings-view-nav`),u6.setAttribute(`role`,`navigation`),u6.setAttribute(`aria-label`,`Settings sections`),p6=j(`button`,`settings-view-back`,`Back`),p6.type=`button`,p6.hidden=!0,p6.setAttribute(`aria-label`,`Back to settings sections`),p6.addEventListener(`click`,K5),m6=j(`div`,`settings-view-content`),m6.setAttribute(`aria-live`,`polite`),d6.addEventListener(`input`,()=>{let e=d6;e&&J5(e.value)}),d6.addEventListener(`keydown`,Y5),u6.addEventListener(`keydown`,Y5),n.append(d6,p6,u6),l6.append(n,m6),s6.appendChild(l6),I6(g6),q5(),X5(),c6?.disconnect(),c6=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&X5()}),c6.observe(s6)}function X5(){qee().then(sne)}function Z5(e){return z6(e).some(e=>e.path===`pref:soundId`)}function sne(){if(a6=i6(),h6=x2(a6,h6.id)??a6[0],_6[`pref:soundId`]=vb(sc()),w6){B5();return}let e=Z6(`alert-sound`);e&&Z5(h6)&&C5(e)}function Q5(e=null,t=null){let n=y2(e??location.hash);n?J5(n.query):(J5(``,{updateHash:!1}),ib()&&!e?history.replaceState(history.state,``,am(``)):N5(e||h6.id,{settingId:t}))}function $5(e){let t=y2(e);if(t){let e=am(t.query);return{sectionId:e,settingId:null,hash:e}}return G0(e,a6,m0,h0)}function e7(e){e&&(g6=e,I6(g6),w6?B5():E5())}function cne(e){t7()}function lne(e,t){let n=t.querySelector(`.settings-view-status-slot`),r=t5(e);n&&r&&n.replaceWith(r),n&&!r&&n.remove(),!n&&r&&t.appendChild(r)}function t7(){for(let e of z6(h6)){if(!e.status)continue;let t=y5(e);t&&(e.control===`readonly`?T5(e):lne(e,t))}}function n7(){if(h6.id!==`machine-updates`)return;let e=Z6(`update-actions`);e&&T5(e)}function une(e){T6=e,j6=!1,M6=null,D6=ed(D6,`status-frame`),n7(),A6&&h6.id===`machine-updates`&&P8()}function dne(e){E6=e,D6=ed(D6,`progress-frame`),n7()}function fne(e){if(e.scope!==`update`)return!1;let t=$u(e.message),n=D6.requested;return D6=ed(D6,`error-frame`,t),j6=!1,n||(M6=t),n7(),!0}function r7(){h6.id===Z3&&M5()}window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,r7),ab(()=>{f6=null,W5(),r7()}),wp(t7);function pne(e,t){return typeof t!=`string`||t===``?{knownBuild:e,reload:!1}:e==null?{knownBuild:t,reload:!1}:e===t?{knownBuild:e,reload:!1}:{knownBuild:t,reload:!0}}var mne=`•`.repeat(8),i7=`[^/\\\\\\s"'\`<>:]+`,hne=RegExp(`(?<![\\w./\\\\-])(?:/home/${i7}|/Users/${i7}|[A-Za-z]:[\\\\/]Users[\\\\/]${i7}|/root(?![\\w.-]))`,`g`);function gne(e){let t=Ix(e);if(t.length===0)return e;let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+mne,r=i.end;return n+e.slice(r)}function _ne(e){return e.replace(hne,`~`)}function vne(e){return _ne(gne(e))}var a7=`.xterm, input, textarea, script, style, [contenteditable]:not([contenteditable="false"])`,o7=[`title`,`label`],s7=new WeakMap,c7=new WeakMap,l7=null;function u7(e){let t=e instanceof Element?e:e.parentElement;return!t||t.closest(a7)!==null}function yne(e){let t=e.parentElement?.closest(`option`);return t!=null&&!t.hasAttribute(`value`)}function d7(e,t){if(t&&e===t.masked)return t;let n=vne(e);return n===e?null:{original:e,masked:n}}function f7(e){let t=yne(e)?null:d7(e.data,s7.get(e));t?(s7.set(e,t),e.data!==t.masked&&(e.data=t.masked)):s7.delete(e)}function bne(e,t){let n=e.getAttribute(t),r=c7.get(e),i=n===null?null:d7(n,r?.get(t));if(!i){r?.delete(t);return}let a=r??new Map;a.set(t,i),c7.set(e,a),n!==i.masked&&e.setAttribute(t,i.masked)}function p7(e){for(let t of o7)bne(e,t)}function xne(e){return e instanceof Element&&e.matches(a7)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function m7(e){p7(e);let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,xne);for(let e=t.nextNode();e;e=t.nextNode())e instanceof Text&&f7(e),e instanceof Element&&p7(e)}function Sne(e){u7(e)||(e instanceof Text&&f7(e),e instanceof Element&&m7(e))}function Cne(e){e instanceof Element&&!u7(e)&&p7(e)}function wne(e){let t=new Set,n=new Set;for(let r of e){if(r.type===`childList`)for(let e of r.addedNodes)t.add(e);r.type===`characterData`&&t.add(r.target),r.type===`attributes`&&n.add(r.target)}for(let e of t)e.isConnected&&Sne(e);for(let e of n)e.isConnected&&Cne(e)}function Tne(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);h7(e);for(let e=t.nextNode();e;e=t.nextNode())h7(e)}function h7(e){if(e instanceof Text){let t=s7.get(e);t&&e.data===t.masked&&(e.data=t.original);return}if(!(e instanceof Element))return;let t=c7.get(e);if(t)for(let[n,r]of t)e.getAttribute(n)===r.masked&&e.setAttribute(n,r.original)}function Ene(){if(l7)return;let e=new MutationObserver(t=>{wne(t),e.takeRecords()});m7(document.body),e.observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:o7}),l7=e}function Dne(){l7&&(l7.disconnect(),l7=null,Tne(document.body),s7=new WeakMap,c7=new WeakMap)}function g7(e){e?Ene():Dne()}function One(){g7(Th()),Dh(g7)}function kne(e){if(typeof e!=`object`||!e||!(`telemetry`in e))return!1;let{telemetry:t}=e;return typeof t!=`object`||!t||!(`enabled`in t)?!1:t.enabled===!0}function Ane(e){return typeof e!=`object`||!e||!(`telemetryForcedOff`in e)?!1:e.telemetryForcedOff===!0}function jne(e,t){return t||Ane(e)?!1:kne(e)}var Mne=2500;function Nne({hasSnapshot:e,connectingTerminalCount:t,msSinceConnected:n}){return n<2500&&(!e||t>0)?`wait`:`reveal`}var Pne=2166136261,Fne=16777619;function _7(e){let t=Pne;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,Fne)>>>0;return t}var Ine=18e4,Lne=2**32,Rne=new Set([A.INITIALIZING,A.STARTING,A.RUNNING,A.WAITING,A.IDLE,A.COMPLETE,A.FAILED]),zne=new Map([[A.INITIALIZING,Zn.INITIALIZING],[A.STARTING,Zn.STARTING],[A.RUNNING,Zn.RUNNING],[A.IDLE,Zn.IDLE]]),Bne=new Map([[A.INITIALIZING,`resting`],[A.STARTING,`resting`],[A.WAITING,`alert`],[A.FAILED,`alert`],[A.COMPLETE,`sitting`],[A.IDLE,`asleep`]]);function v7(e){return Rne.has(e)}function Vne(e,t){let n=_7(e)/Lne,r=Bo(t,-1,()=>n);return r===null?null:No[r]??null}function Hne(e){let t=_7(`${e}#spot`);return{leftPercent:6+t%78,topPercent:12+(t>>>8)%62,ambleDistancePx:24+(t>>>16)%64,ambleSeconds:9+(t>>>24)%9}}function Une({state:e,activity:t,lastOutputAtMs:n,nowMs:r}){return e===A.RUNNING?n!==void 0&&r-n>=Ine?`asleep`:t===`quiet`?`resting`:`ambling`:Bne.get(e)??`asleep`}function Wne({state:e,unseenOutcome:t}){return e===A.WAITING?nr.WAITING:e===A.FAILED&&t===`failed`?nr.FAILED:null}function y7(e,t){return zne.get(e)??Rg(e,t)}var Gne=new Set([A.RUNNING,A.STARTING,A.INITIALIZING]),Kne=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),b7=null,x7=!1,S7=null,C7=null,w7=new Map;function qne(e){let t=j(`div`,`zen-calm`),n=j(`div`,`zen-status-line`);n.setAttribute(`role`,`status`);let r=j(`span`,`zen-working-count`);n.append(j(`h2`,`zen-all-clear`,`ALL CLEAR`),r);let i=j(`div`,`zen-meadow`);i.setAttribute(`aria-label`,`Sessions`),t.append(n,i);let a=j(`div`,`zen-stage`),o=j(`div`,`zen-reason-line`);o.setAttribute(`role`,`status`);let s=j(`span`,`zen-staged-need`),c=j(`span`,`zen-queued-behind`);o.append(s,c);let l=j(`div`,`zen-pet-strip`);l.setAttribute(`aria-label`,`Other sessions`);let u=j(`button`,`btn-dialog`,`Next`);u.type=`button`,u.addEventListener(`click`,E7);let d=j(`div`,`zen-stage-bar`);d.append(o,l,u,pm());let f=j(`div`,`zen-card-slot`);a.append(d,f),a.hidden=!0,e.append(t,a),b7={calm:t,workingCount:r,meadow:i,stage:a,stagedNeed:s,queuedBehind:c,petStrip:l,cardSlot:f}}function Jne(){return x7}function Yne(){if(b7){x7=!0;for(let e of w7.values())e.root.remove();w7.clear(),T7()}}function Xne(){x7&&=(A7(),C7=null,!1)}function T7(){if(!x7)return;let e=O7();C7!==null&&!D7(C7)&&(C7=null),k7(C7??Ig(e,S7),e)}function E7(){if(!x7)return;C7=null;let e=S7,t=e===null?void 0:P.get(e),n=t!==void 0&&Vg({state:t.currentState,unseenOutcome:t.unseenOutcome});e!==null&&n&&DM(e);let r=O7().filter(t=>!n||t!==e);k7(Fg(r,e),r)}function Zne(e){x7&&D7(e)&&(C7=e,k7(e,O7()))}function D7(e){let t=P.get(e);return t!==void 0&&v7(t.currentState)}function O7(){return Gg(Ng(Qv()))}function k7(e,t){if(!b7)return;let n=e===null?void 0:P.get(e);if(e===null||!n){A7(),$ne(b7);return}let r=S7!==e;S7=e,b7.calm.hidden=!0,b7.stage.hidden=!1,Qne(b7,n,t.filter(t=>t!==e).length),j7(b7.petStrip,e),(Nr()!==e||n.card.parentElement!==b7.cardSlot)&&(Pr(n,e,b7.cardSlot,{className:`zen-staged`}),YC(n,e,!0),r&&ire(n,e))}function A7(){S7!==null&&Nr()===S7&&Fr(),S7=null}function Qne(e,t,n){e.stagedNeed.textContent=y7(t.currentState,t.pendingPromptKind),e.stagedNeed.dataset.state=t.currentState,e.queuedBehind.textContent=`${n} more waiting`,e.queuedBehind.hidden=n===0}function $ne(e){e.stage.hidden=!0,e.calm.hidden=!1;let t=Qv().filter(e=>Gne.has(e.state)).length;e.workingCount.textContent=`${t} working`,j7(e.meadow,null)}function j7(e,t){let n=Ng(Qv()).filter(e=>v7(e.state)&&e.id!==t),r=new Set(n.map(e=>e.id));for(let[e,t]of w7)r.has(e)||(t.root.remove(),P.has(e)||w7.delete(e));for(let t of n){let n=w7.get(t.id)??ere(t.id);n.root.parentElement!==e&&e.append(n.root),tre(n,t.ui,t.name)}}function ere(e){let t=j(`button`,`zen-pet`);t.type=`button`,t.dataset.sessionId=e;let n=Hne(e);t.style.setProperty(`--zen-pet-left`,`${n.leftPercent}%`),t.style.setProperty(`--zen-pet-top`,`${n.topPercent}%`),t.style.setProperty(`--zen-pet-amble-distance`,`${n.ambleDistancePx}px`),t.style.setProperty(`--zen-pet-amble-duration`,`${n.ambleSeconds}s`),t.addEventListener(`click`,()=>Zne(e));let r=j(`span`,`zen-pet-walker`),i=j(`span`,`zen-pet-bubble`);i.setAttribute(`aria-hidden`,`true`);let a=j(`span`,`zen-pet-facing`),o=j(`span`,`zen-pet-hopper`),s=Vne(e,ol().flyingAnimalsExcludedSprites);o.append(s?ul(s,`zen-pet-sprite`):j(`span`,`zen-pet-dot`)),a.append(o);let c=j(`span`,`zen-pet-zzz`,`zzz`);c.setAttribute(`aria-hidden`,`true`);let l=j(`span`,`zen-pet-name`);r.append(i,a,c,l),t.append(r);let u={root:t,hopper:o,bubble:i,name:l};return w7.set(e,u),u}function tre(e,t,n){M7(e,t,performance.now()),e.root.dataset.state=t.currentState,e.name.textContent!==n&&(e.name.textContent=n),e.root.setAttribute(`aria-label`,n),e.root.title=`${jM(t.path)}: ${y7(t.currentState,t.pendingPromptKind)}`;let r=Wne({state:t.currentState,unseenOutcome:t.unseenOutcome});e.bubble.hidden=r===null,r!==null&&of(e.bubble,r)}function nre(e){Kne?.matches||document.hidden||!e.hopper.animate||e.hopper.animate([{transform:`translateY(0)`},{transform:`translateY(-6px)`,offset:.4},{transform:`translateY(0)`}],{duration:320,easing:`cubic-bezier(0.22, 1, 0.36, 1)`})}function M7(e,t,n){e.root.dataset.mood=Une({state:t.currentState,activity:t._activity,lastOutputAtMs:t._lastOutputAt,nowMs:n})}function rre(e,t){if(!x7)return;let n=e.card?.dataset.id,r=n?w7.get(n):void 0;r?.root.isConnected&&(M7(r,e,performance.now()),t===`beat`&&nre(r))}ep(rre),lp(()=>{if(!x7)return;let e=performance.now();for(let[t,n]of w7){let r=P.get(t);r&&n.root.isConnected&&M7(n,r,e)}});function ire(e,t){requestAnimationFrame(()=>requestAnimationFrame(()=>{x7&&S7===t&&!document.hidden&&document.hasFocus()&&e.term?.focus()}))}function are(e){let t=[{view:`focus`,label:`Focus`,panelClass:`focus-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,hasReviewSidebar:!0,mount:()=>JN({rail:document.getElementById(`focus-rail`),center:document.getElementById(`focus-center`),resizer:document.getElementById(`focus-rail-resizer`)}),activate:SP,deactivate:TP},{view:`zen`,label:`Zen`,panelClass:`zen-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,gate:{fromSettings:i4.zenView},mount:qne,activate:Yne,deactivate:Xne},{view:`prs`,label:`Reviews`,glyph:`⇅`,panelClass:`pr-view`,gate:{fromSettings:i4.teamReview},mount:t=>OX(t,{openTerminal:e.openTerminal,openReviews:e.openReviews}),attention:{subscribe:nX,acknowledge:tX},onConnectionChange:e=>{zJ(e),AG(e)}},{view:`issues`,label:`Issues`,glyph:`#`,panelClass:`issues-view`,mount:vQ,refreshOn:[`shown`],refresh:yQ,onConnectionChange:xQ},{view:`usage`,label:`Usage`,glyph:`◔`,panelClass:`usage-view`,gate:{fromSettings:i4.usage},mount:B3,attention:{subscribe:F3,acknowledge:j3},onConnectionChange:z3,refreshOn:[`shown`,`connected`,`usage-sessions`],refresh:e=>{e===`shown`&&V3(),R3()}},{view:`radar`,label:`Radar`,glyph:`◎`,panelClass:`radar-view`,gate:{fromSettings:i4.posthog},mount:j$,attention:{subscribe:k$,acknowledge:O$}},{view:`visions`,label:`Visions`,glyph:`◇`,panelClass:`visions-view`,gate:{fromSettings:i4.visions},mount:OI,attention:{subscribe:TI,acknowledge:()=>{AI(),kI()}},onConnectionChange:DI},{view:`hooks`,label:`Hooks`,glyph:`◈`,panelClass:`hooks-view`,mount:LR,refreshOn:[`shown`,`connected`,`hooks-updated`],refresh:e=>{e===`shown`&&RR(),IR()}},{view:`trace`,label:`Trace`,panelClass:`trace-view`,gate:{subscribe:E_},mount:Dk,refreshOn:[`shown`],refresh:Mk,onAvailabilityChange:e=>A$(e?Ak:null),onConnectionChange:Ik},{view:`benchmarks`,label:`Bench`,panelClass:`bench-view`,gate:{fromSettings:i4.benchmarks},mount:dZ,onConnectionChange:fZ},{view:`settings`,label:`Settings`,glyph:`@`,panelClass:`settings-view`,hasPanelChrome:!1,mount:t=>one(t,{onRestart:e.onRestart})}],n=M(document,`#app-main`,`main`),r=t.map(t=>{let r=j(`button`,`header-tab`,t.label);r.id=`tab-${t.view}`,r.type=`button`,r.draggable=!0;let i=`view-${t.view}`;r.setAttribute(`role`,`tab`),r.setAttribute(`aria-controls`,i);let a=t.view===`focus`;r.setAttribute(`aria-selected`,String(a)),r.tabIndex=a?0:-1,t.glyph&&(r.dataset.phoneGlyph=t.glyph);let o=document.getElementById(i)??j(`section`);if(o.classList.add(t.panelClass),o.id=i,o.setAttribute(`role`,`tabpanel`),o.setAttribute(`aria-labelledby`,r.id),o.hidden=!0,o.parentElement||n.append(o),r.hidden=t.gate!==void 0,o.classList.toggle(`view-panel`,t.hasPanelChrome!==!1),t.attention){let n=j(`span`,`tab-activity`);n.id=`tab-${t.view}-activity`,n.setAttribute(`aria-hidden`,`true`),r.append(n),t.attention.subscribe(r=>{let{isActive:i,level:a}=u4(r);n.classList.toggle(`active`,i),a===null&&n.removeAttribute(`data-attention`),a!==null&&n.setAttribute(`data-attention`,a),e.setPhoneAttention(t.view,r)})}return{...t,tab:r,el:o}});return M(document,`#header-tabs`,`div`).replaceChildren(...r.map(e=>e.tab)),r}kb(_c()),Ab(dc()),jb(pc()),l1(yc()),rb(),wg(document);var N7=M(document,`#connection-status`,`span`),P7=M(N7,`.connection-label`,`span`),F7=M(document,`#loading-screen`,`div`),I7=M(document,`#loading-status`,`div`),L7=M(document,`#loading-detail`,`div`),R7=M(document,`#shutdown-screen`,`div`),z7=M(document,`#shutdown-status`,`div`),B7=!1,V7=null,H7=!1;function ore(){let e=dl(),t=F7.querySelector(`.loading-spinner`);e&&t&&t.replaceWith(ul(e,`loading-animal`))}ore();function U7(){B7||V7===null||Nne({hasSnapshot:H7,connectingTerminalCount:kC(),msSinceConnected:performance.now()-V7})===`reveal`&&W7()}OC(U7);function W7(){if(B7)return;B7=!0,F7.classList.add(`fade-out`);let e=()=>F7.remove();F7.addEventListener(`transitionend`,e,{once:!0}),setTimeout(e,1e3)}function G7(e,t){N7.dataset.state=`shutdown`,P7.textContent=e,N7.title=e,_9.disabled=!0,z7.textContent=t,R7.classList.add(`active`)}var sre=new Set([`disconnected`,`connecting`]);function K7(e,t,n){N7.dataset.state=e,N7.toggleAttribute(`data-reconnected`,n),P7.textContent=t,N7.title=t}function cre(e,t){K7(e,t,e===`connected`&&sre.has(N7.dataset.state??``))}function lre(e,t){N7.dataset.state!==`shutdown`&&K7(e===`verified`?`connected`:e,t,!1)}var ure=1e4,q7=`Server`,J7=`Worktree`,dre=`Worktree warning`,fre=`The server is not answering. Check the terminal running Glimmervoid for errors, or start it again with glimmervoid. This page reconnects on its own.`,pre=`Server not answering. Check the Glimmervoid terminal for errors, or run glimmervoid. This page retries on its own.`,Y7=null,X7=!1;function Z7(){I7.textContent=`Reconnecting to server...`,L7.textContent=pre,L7.hidden=!X7}function mre(){Y7=null,X7=!0,B7?vf({source:q7,message:fre,hidesInStreamerMode:!1}):Z7()}function Q7(){Y7!==null||X7||(Y7=window.setTimeout(mre,ure))}function hre(){Y7!==null&&window.clearTimeout(Y7),Y7=null,X7=!1,L7.hidden=!0,yf(q7)}Ld((e,t)=>{if(e===`connecting`||e===`verified`)lre(e,t);else{cre(e,t),Qte(e===`connected`);for(let t of T9)t.onConnectionChange?.(e===`connected`);if(e===`connected`){if(hre(),M9&&N9(M9),R7.classList.contains(`active`)){location.reload();return}Im(),document.body.classList.add(`app-ready`),!B7&&V7===null&&(V7=performance.now(),I7.textContent=`Connecting to sessions...`,setTimeout(W7,Mne)),U7(),J9(),o9(`connected`),K(`get-settings`,{}).then(e=>{e.settings&&(R9(e.settings),Mr()===`settings`&&b9(location.hash))}).catch(()=>{})}else e===`disconnected`&&R7.classList.contains(`active`)?z7.textContent=`Waiting for server...`:(Q7(),B7||Z7())}});function $7(){T7(),bQ(),kJ(),dB()}function e9(){aP(),$7()}var t9=null;function gre(e){let t=pne(t9,e);t9=t.knownBuild,t.reload&&location.reload()}function _re(e){dI(new Map(e.filter(e=>!e.ephemeral).map(e=>[e.id,e.name]))),cne(e.filter(e=>!e.ephemeral).map(e=>({id:e.id,name:e.name,agent:e.agent,permissionMode:e.dangerouslySkipPermissions?`Skip permissions`:`Default`})));for(let t of e){rg(t.id,t.coherenceHooks),t.ephemeral||Bv(t.path),zX(t.id,t.linkedPrs);let e=nM(t.id);e&&kM(t.id,t.state,t.stateSince),e&&z_(t.id,!!t.saneYolo),e&&ene(t.id,t.isGuarded,t.isGuardrailsReleased),e||iM(t.id,t.name,t.state,V$(t)),TM(t.id,t.failureReason),tM(t.id,t.taskTitle,t.taskTitleIsCustom),dM(t.id,t.agent),ane(t.id,t.mergeStatus,t.mergeReason),uM(t.id,t.effectiveBase),mM(t.id,t.activeAgents,t.awaitingBackgroundTasks),vM(t.id,t.pendingWakeup),gM(t.id,t.pendingPromptKind,t.isCompacting,t.isWaitingForMemory),_M(t.id,t.unseenOutcome),Qj(t.id,t),cM(t.id,t.hasPlan),a9(t.id)}rM(),f_(P),aP(),wP(),$7(),n9(),C9(location.hash),Y9(),H7=!0,U7()}function n9(){jk([...P].map(([e,t])=>({id:e,name:wr(t)||e})))}function r9(e,t){cM(e,t?.hasPlan===!0),_M(e,t?.unseenOutcome),a9(e)}function vre(e){if(!nM(e.id))iM(e.id,e.session,e.to,V$({skipPerms:e.skipPerms,saneYolo:e.saneYolo,stateSince:e.timestamp})),f_(P),bQ();else if(e.to===A.DORMANT&&e.from!==A.DORMANT){let t=P.get(String(e.id)),n=document.querySelector(`.session-card[data-id="${CSS.escape(String(e.id))}"]`),r=n instanceof HTMLElement?n:null,i=r?r.dataset.skipPerms!==void 0:!1,a=e.saneYolo??(r?r.dataset.saneYolo!==void 0:!1),o=r?r.dataset.path:void 0;SM(e.id),iM(e.id,e.session,A.DORMANT,V$({skipPerms:i,saneYolo:a,worktree:r?.dataset.worktree!==void 0,workspace:r?.dataset.workspace!==void 0,remoteWorkspace:r?.dataset.remoteWorkspace??null,guarded:r?.dataset.guarded!==void 0,guardrailsReleased:r?.dataset.guardrailsReleased!==void 0,ephemeral:r?.dataset.ephemeral!==void 0,path:o,stateSince:e.timestamp,taskTitle:t?.taskTitle,taskTitleIsCustom:t?.taskTitleIsCustom})),dM(e.id,t?.agent),r9(e.id,t),e9(),YE(e.id),f_(P)}else kM(e.id,e.to,e.timestamp,e.event),TM(e.id,e.failureReason),e.saneYolo!==void 0&&z_(e.id,e.saneYolo),f_(P),YE(e.id),e9(),ov(e.id),e.to===A.INITIALIZING&&(e.from===A.DONE||e.from===A.FAILED)&&RC(e.id)}var i9=new Map;function yre(e){let t=new Set;for(let n of e){if(!n?.id)continue;t.add(n.id);let e={tokens:n.tokens,costUSD:n.costUSD,officialCostUSD:n.officialCostUSD};i9.set(n.id,e),hM(n.id,e)}for(let e of[...i9.keys()])t.has(e)||(i9.delete(e),hM(e,null))}function a9(e){let t=i9.get(e);t&&hM(e,t)}L3(G),FR(G),Ok(G),_Q(G),uZ(G),k_(LX),vv(sg),vv(FX),j_({isReadable:cg,open:ug}),N_(z$);function o9(e){f4(T9,{isPhoneShellActive:lB(),activeView:Mr(),phoneScreen:jr.snapshot().phoneScreen},e)}Dh(()=>o9(`settings-updated`));var bre={snapshot:e=>{gre(e.serverBuild),_re(e.sessions)},"hooks-report":e=>zR(e),"save-hook-result":()=>BR(),"delete-hook-result":()=>BR(),"state-change":e=>vre(e),"session-added":e=>{e.ephemeral||Bv(e.path),zX(e.id,e.linkedPrs),nM(e.id)||(iM(e.id,e.session,e.state,V$(e)),dM(e.id,e.agent),a9(e.id)),f_(P),e9(),n9()},"session-removed":e=>{_ee(e.id),SM(e.id),ig(e.id),ZE(e.id),BX(e.id),f_(P),e9(),n9()},"session-title":e=>{tM(e.id,e.taskTitle,e.isCustom),e9()},"session-prs":e=>zX(e.id,e.linkedPrs),"session-renamed":e=>{xM(e.id,e.newName),e9(),n9()},"session-modified":e=>{e.ephemeral||Bv(e.path);let t=P.get(String(e.id));rg(e.id,null),SM(e.id),ZE(e.id),zX(e.id,e.linkedPrs),iM(e.id,e.session,e.state,V$(e)),dM(e.id,e.agent),r9(e.id,t),f_(P),e9(),n9()},"session-git":e=>$te(e.id,!!e.worktree),"session-agents":e=>{mM(e.id,e.activeAgents,e.awaitingBackgroundTasks),e9(),ov(e.id)},"session-wakeup":e=>vM(e.id,e.pendingWakeup),"session-unseen":e=>{_M(e.id,e.unseenOutcome),rM(),f_(P),e9()},"session-prompt":e=>{gM(e.id,e.pendingPromptKind,e.isCompacting===!0,e.isWaitingForMemory===!0),$7()},"session-merge-status":e=>{ine(e.id,e.mergeStatus,e.reason),_P(e.id,e.mergeStatus),$7()},"session-worktree-blocked":e=>{vf({source:J7,sessionId:e.id,message:`${e.session}: ${e.notice||`The integration branch was not found. Check the integration branch in Settings, then restart the session.`}`})},"session-worktree-warning":e=>{vf({source:dre,sessionId:e.id,message:`${e.session}: ${e.notice||`The base branch could not be synced. The session keeps working on its current base.`}`})},"session-worktree-ready":e=>{yf(J7,e.id),uM(e.id,e.base)},"session-diff":e=>{bM(e.id,{committed:e.committed,uncommitted:e.uncommitted,hasCommits:e.hasCommits})},"session-diff-error":e=>{WE(e.id,e.message)},"change-map":e=>GE(e.id,e.map),"branch-sync-status":e=>KE(e.id,e),"session-changed":e=>JE(e.id),"post-turn-result":e=>rne(e.id,e),"debug-state-response":e=>av(e),"session-trace-response":e=>{Hte(e)||Nk(e)},"session-trace-changed":e=>{Wte(e.id),Pk(e)},"session-conversation":e=>{Qj(e.id,e),$7()},"session-plan-changed":e=>{Yte(e),$7()},"session-plan-draft":e=>{Xte(e)},"session-plan-response":e=>{Zte(e)},"session-docs-changed":e=>kee(e),"session-docs-snapshot":e=>Aee(e),"session-coherence-hooks":e=>{rg(e.id,e.coherenceHooks),e9()},"session-coherence":e=>{ag(e),e9()},"session-coherence-snapshot":e=>{og(e),e9()},"session-coherence-journal-response":e=>dg(e),"session-setup-response":e=>B$(e),notify:e=>{nm(e),ov(e.session)},"update-status":e=>{wre(e),une(e)},"update-progress":e=>dne(e.journal),"post-turn-leftovers":e=>Tre(e),error:e=>{let t=fne(e),n=Fk(e);Ute(e);let r=lM(e);t||n||r||(e.id?wM(e.id,e.message):vf({source:q7,message:e.message}))},"session-error":e=>{VE(e.id),!lM(e)&&wM(e.id,e.message)},"settings-updated":e=>{e.settings&&R9(e.settings),Im()},"agent-logins":e=>Sp(e.logins),"health-snapshot":e=>{e.stats&&Aw(e.stats)},"radar-status":e=>M$(e),"radar-investigation-activity":e=>N$(e),"radar-investigation-finished":e=>F$(e),"team-review-status":e=>OG(e),"github-prs":e=>Un(e),"my-prs-status":LJ,"benchmark-status":e=>pZ(e),"benchmark-action-result":e=>mZ(e),"my-pr-merge-result":e=>BJ(e),"team-review-action-result":e=>jG(e),"open-team-review-session-result":e=>kG(e),"issues-status":e=>SQ(e),"issue-detail-result":e=>CQ(e),"open-issue-session-result":e=>wQ(e),"usage-sessions":e=>{yre(e.sessions),H3(e)},"usage-report":e=>{W3(e),t7()},"plan-limits":e=>U3(e),"usage-budget-alert":e=>nm({session:`budget-${e.scope}-${e.periodKey}`,category:`threshold-${e.threshold}`,message:e.text,ignoreFocus:!0}),"visions-findings":e=>MI(e),"visions-comments":e=>NI(e),"visions-hand":e=>PI(e),"visions-intent":e=>FI(e),"visions-fix":e=>jI(e),"visions-snapshot":e=>RI(e),"ingest-activity":e=>II(e),"ingest-snapshot":e=>LI(e),"client-trust":e=>Pre(e.trust),"shutting-down":()=>G7(`Shutting down...`,`Shutting down sessions...`),restarting:()=>G7(`Restarting...`,`Restarting server...`)};function xre(e){let t=bre[e.type];t&&t(e)}Rd(e=>{xre(e),o9(e.type)});var s9,c9=null;function l9(e,t,n){e.onclick=()=>{let e=xr(n);e?e.then(()=>{t.textContent=`Copied`}).catch(()=>{t.textContent=`Copy failed`}):t.textContent=`Copy failed`}}var Sre=om(Ql,$l,`Update`).href;function Cre(e){let{latestSha:t,latest:n}=e;return typeof n==`string`&&n?n:typeof t==`string`&&t?t:null}function wre(e){let t=M(document,`#update-banner`,`div`),{mode:n,tone:r,text:i}=dd(e),a=r===`security`;if(!e.updateAvailable&&!a){t.hidden=!0;return}let o=Cre(e),s=o&&n===`restart`?`${o}:ready`:o;if(a&&i===c9||!a&&s9!==void 0&&s===s9||!a&&s&&Fc()===s)return;t.classList.toggle(`update-banner-security`,a);let c=String(e.command??``);M(document,`#update-banner-text`,`span`).textContent=i,M(document,`#update-banner-cmd`,`code`).textContent=c;let l=M(document,`#update-banner-update`,`a`);l.href=Sre,l.hidden=n!==`link`;let u=M(document,`#update-banner-restart`,`button`);u.hidden=n!==`restart`,u.onclick=q9;let d=M(document,`#update-banner-cmd`,`code`);d.hidden=n!==`command`;let f=M(document,`#update-banner-copy`,`button`);f.hidden=n!==`command`;let p=M(document,`#update-banner-copy-status`,`span`);p.hidden=n!==`command`,p.textContent=``;let m=M(document,`#update-banner-link`,`a`);m.hidden=!e.releaseUrl,m.href=typeof e.releaseUrl==`string`?e.releaseUrl:``,t.hidden=!1,l9(f,p,c),M(document,`#update-banner-dismiss`,`button`).onclick=()=>{t.hidden=!0,a?c9=i:(s9=s,Ic(s))}}var u9=!1;function Tre({repositories:e,command:t}){let n=M(document,`#post-turn-leftovers-banner`,`div`);if(e.length===0){n.hidden=!0;return}if(u9)return;let r=M(document,`#post-turn-leftovers-copy-status`,`span`);M(document,`#post-turn-leftovers-text`,`span`).textContent=tr(e.length),M(document,`#post-turn-leftovers-cmd`,`code`).textContent=t,r.textContent=``,n.hidden=!1,l9(M(document,`#post-turn-leftovers-copy`,`button`),r,t),M(document,`#post-turn-leftovers-dismiss`,`button`).onclick=()=>{u9=!0,n.hidden=!0}}var d9=M(document,`#telemetry-banner`,`div`);function f9(){Rc(!0),d9.hidden=!0}function Ere(e){d9.hidden=!jne(e,Lc())}var p9=M(document,`#telemetry-banner-settings`,`a`);p9.href=om(`privacy`,`telemetry-enabled`,`What's collected`).href,p9.addEventListener(`click`,f9),M(document,`#telemetry-banner-dismiss`,`button`).addEventListener(`click`,f9),M(document,`#btn-add-session-header`,`button`).addEventListener(`click`,Ap);var m9=M(document,`#btn-mute`,`button`);KX(m9);var h9=M(document,`#btn-streamer`,`button`);Mh(h9),One();var g9=M(document,`#power-menu`,`div`),_9=M(document,`#btn-power`,`button`);function v9(){_9.setAttribute(`aria-expanded`,g9.classList.contains(`open`)?`true`:`false`)}_9.addEventListener(`click`,e=>{e.stopPropagation(),g9.classList.toggle(`open`),v9()}),document.addEventListener(`click`,e=>{e.target instanceof Node&&(g9.contains(e.target)||(g9.classList.remove(`open`),v9()))}),gr(document.querySelector(`.header`));function Dre(e){e&&Q5(e),!pB(`settings`)&&F9(`settings`,{section:e})}function y9(){im(location.hash)&&history.replaceState(history.state,``,`${location.pathname}${location.search}`)}function Ore(e){return e?(Q5(e.sectionId,e.settingId),pB(`settings`)||F9(`settings`,{section:e.sectionId,setting:e.settingId,persist:!1}),!0):!1}function b9(e){return Ore($5(e))}var x9=`No plan is stored for this session yet. It appears here once the agent writes one.`,S9=`Plan`;function C9(e){let t=Vp(e);return t?!nM(t)||(history.replaceState(history.state,``,`${location.pathname}${location.search}`),lB()?(cB(t)||vf({source:S9,sessionId:t,message:x9}),!0):(F9(`focus`,{persist:!1}),yP(t)||vf({source:S9,sessionId:t,message:x9}),!0)):!1}function w9(e){return C9(e)?!0:b9(e)}function kre(e){e.newURL===location.href&&w9(location.hash)}document.addEventListener(`click`,e=>{if(!lB()||e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href^="#"]`):null;t instanceof HTMLAnchorElement&&w9(t.hash)&&e.preventDefault()}),qq(M(document,`#celebration-tray`,`div`),M(document,`#btn-celebrations`,`button`),M(document,`#celebration-tray-count`,`span`)),M(document,`#btn-help`,`button`).addEventListener(`click`,()=>{Dre(`browser-shortcuts`)});var T9=are({onRestart:q9,openTerminal:e=>{fB(e)||(F9(`focus`),vP(e))},openPlan:e=>{F9(`focus`),yP(e)},openReviews:()=>O9(`prs`)?(pB(`prs`)||F9(`prs`),!0):!1,setPhoneAttention:hB});function E9(){return T9.map(e=>e.view)}var Are=E9();G6(T9),LE({panel:document.getElementById(`review-sidebar`)});for(let e of T9)e.mount(e.el);function D9(e){return T9.find(t=>t.view===e)}function O9(e){return T9.some(t=>t.view===e&&!t.tab.hidden)}var k9=!0,A9=null;function j9(e){D9(e)?.attention?.acknowledge()}var M9=null;function N9(e){M9=G({type:`dashboard-telemetry`,event:`view_shown`,properties:{view:e}})?null:e}function P9(e){let t=D9(e);d4(t,`shown`),t&&N9(e)}function F9(e,{section:t,setting:n,persist:r=!0}={}){if(!O9(e))return;let i=Mr();jr.dispatch(`setActiveView`,e),k9=r,r&&(A9=null),document.body.dataset.activeView=e,document.body.dataset.reviewSidebarHidden=String(D9(e)?.hasReviewSidebar!==!0),r&&Sc(e);for(let t of T9){let n=t.view===e;t.el&&(t.el.hidden=!n),t.tab.setAttribute(`aria-selected`,String(n)),t.tab.tabIndex=n?0:-1}i!==e&&D9(i)?.deactivate?.(),D9(e)?.activate?.(),P9(e),i===`settings`&&e!==`settings`&&y9(),e===`settings`&&t&&Q5(t,n??null),j9(e)}function I9(e,t){let{view:n}=e;e.tab.hidden=!t,mB(n,t),e.onAvailabilityChange?.(t),!lB()&&(!t&&Mr()===n&&F9(`focus`),t&&A9===n&&F9(n))}function jre(e){for(let{view:t,isAvailable:n}of s4(T9,e))I9(t,n)}function L9(e){let t=c4(Are,e);T9.every((e,n)=>e.view===t[n])||(T9.sort((e,n)=>t.indexOf(e.view)-t.indexOf(n.view)),M(document,`#header-tabs`,`div`).append(...T9.map(e=>e.tab)),iB(t))}function R9(e){qte(e),e7(e),_I(e),jre(e),Ere(e),L9(e.viewTabOrder),Eh(e.streamerMode===!0),Vte(e.conversationView===!0)}for(let e of T9)e.gate&&(I9(e,!1),`subscribe`in e.gate&&e.gate.subscribe(t=>I9(e,t)));kk(()=>{O9(`trace`)&&(pB(`trace`)||F9(`trace`))});function z9(e,t){let n=T9.filter(e=>!e.tab.hidden),r=n[(n.findIndex(t=>t.view===e)+t+n.length)%n.length];return F9(r.view),r.tab}function Mre(e){T9.some(e=>e.tab===document.activeElement)&&e.focus()}var B9=null;function V9(e){let t=E9();L9(e),K(`update-settings`,{settings:{viewTabOrder:e}}).then(e=>{e.type===`settings-error`&&L9(t)}).catch(()=>L9(t))}function Nre(e){let t=B9;if(B9=null,!t||t===e)return;let n=E9();V9(l4(n,t,n.indexOf(e)))}for(let e=0;e<T9.length;e++){let{view:t,tab:n}=T9[e];n.addEventListener(`click`,()=>F9(t)),n.addEventListener(`dragstart`,e=>{B9=t,e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}),n.addEventListener(`dragover`,e=>{B9&&B9!==t&&(e.preventDefault(),n.dataset.dropTarget=`true`)}),n.addEventListener(`dragleave`,()=>delete n.dataset.dropTarget),n.addEventListener(`drop`,e=>{e.preventDefault(),delete n.dataset.dropTarget,Nre(t)}),n.addEventListener(`dragend`,()=>{B9=null}),n.addEventListener(`keydown`,e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),z9(Mr(),e.key===`ArrowRight`?1:-1).focus()))})}var H9=xc(),U9=$5(location.hash),W9=Vp(location.hash);if(U9&&F9(`settings`,{section:U9.sectionId,setting:U9.settingId,persist:!1}),W9&&F9(`focus`,{persist:!1}),!U9&&!W9){let e=O9(H9);e||(A9=H9),F9(e?H9:`focus`,{persist:e})}aB({panels:VR(T9),onScreenShown:e=>{P9(e),e!==`settings`&&y9(),e===`settings`&&!im(location.hash)&&Q5(),j9(e)},canGoBack:e=>e===`settings`&&G5()||e===`prs`&&oX(),onBack:e=>{e===`settings`&&K5(),e===`prs`&&sX()},headerControls:[M(document,`.header-title`,`h1`),M(document,`#status-indicator`,`div`),M(document,`#celebration-tray`,`div`),M(document,`#btn-add-session-header`,`button`),M(document,`#btn-help`,`button`),m9,h9,g9]}),U5(Zz),aX(Zz);function G9(e){if(e===`phone`){let e=qN();for(let e of T9)e.deactivate?.();let t=$5(location.hash);oB({sessionId:e??void 0,linkedScreenId:t?`settings`:void 0}),t&&Q5(t.sectionId,t.settingId);return}let t=uB();sB();let n=Mr();F9(O9(n)?n:`focus`,{persist:k9}),t&&vP(t)}ib()&&G9(`phone`),ab(G9),window.addEventListener(`hashchange`,kre);function K9({type:e,title:t,confirmLabel:n,danger:r,idleMessage:i,actionAfterKillingSessions:a}){g9.classList.remove(`open`),v9();let o=Kte();Rf({title:t,message:o>0?`Kill ${o} session${o>1?`s`:``} and ${a}?`:i,confirmLabel:n,danger:r||o>0,onConfirm:()=>G({type:e})})}function q9(){K9({type:`restart-server`,title:`Restart Server`,confirmLabel:`Restart`,danger:!1,idleMessage:`Restart the server?`,actionAfterKillingSessions:`restart the server`})}M(document,`#btn-restart`,`button`).addEventListener(`click`,q9);function Pre(e){let t=qn(`shutdown`,e);M(document,`#btn-shutdown`,`button`).hidden=!t,M(document,`#menu-divider-shutdown`,`div`).hidden=!t}M(document,`#btn-shutdown`,`button`).addEventListener(`click`,()=>{K9({type:`shutdown`,title:`Shut Down Server`,confirmLabel:`Shut Down`,danger:!0,idleMessage:`Shut down the server?`,actionAfterKillingSessions:`shut down the server`})});var Fre=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function Ire(e,t){return e.value!==``&&Fre.has(t.key)}function Lre(e){let t=document.activeElement;return t instanceof HTMLElement?t.isContentEditable?!0:t instanceof HTMLTextAreaElement&&t.dataset.dashboardShortcuts===`allowed`?Ire(t,e):(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)&&!t.classList.contains(`xterm-helper-textarea`):!1}function Rre({action:e,step:t}){switch(e){case`merge`:return QE(),!0;case`resolve-or-resync`:return eD()||rD(),!0;case`new-session`:return document.getElementById(`btn-add-session-header`)?.click(),!0;case`next-attention`:return ib()?!1:Jne()?(E7(),!0):KN()?(lP(),!0):(Mr()===`prs`&&mX()||CP(()=>F9(`focus`)),!0);case`rail-step`:return KN()?(xP(t),!0):!1;case`view-step`:return!ib()&&(Mre(z9(Mr(),t)),!0);case`session-nth`:return KN()?(bP(t),!0):!1;case`streamer-mode`:return jh(),!0}}document.addEventListener(`keydown`,e=>{if(e.repeat||Lre(e))return;let t=Rs(e,sm,{isTerminalFocused:document.activeElement?.classList.contains(`xterm-helper-textarea`)??!1},um());t&&Rre(t)&&e.preventDefault()});var zre=Xn({mode:`trailing`,delayMs:150,run:()=>{G({type:`focus-change`,focused:document.hasFocus()})}});function J9(){zre.schedule()}function Y9(){let e=uB();e&&F(e)?._isActiveViewer?.()===!0&&DM(e)}function X9(){J9(),qC(F(Nr())),Y9()}window.addEventListener(`focus`,X9),window.addEventListener(`blur`,X9),document.addEventListener(`visibilitychange`,X9);var Z9=!1;async function Q9(){if(!Z9){Z9=!0,IC();try{if(await Wd()===`ok`)return;for(let e of P.keys())RC(e)}finally{LC(),Z9=!1}}}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&(FS(),Q9())}),window.addEventListener(`online`,Q9);var $9=Mo(G);window.addEventListener(`error`,e=>$9(e.error)),window.addEventListener(`unhandledrejection`,e=>$9(e.reason)),window.addEventListener(`pageshow`,e=>{e.persisted&&(FS(),Q9())}),kw(M(document,`#health-footer-mount`,`div`)),Bee(Jte),Q7(),Ud();
|