glimmervoid 0.40.1 → 0.41.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 +18 -18
- package/dist/chunks/{adapters-D86Do-kG.js → adapters-CyDflXHy.js} +316 -23
- package/dist/chunks/{adapters-CTm8gTiM.js → adapters-D8BJffFW.js} +1 -1
- package/dist/chunks/{agent-api-cli-Cj73fMC7.js → agent-api-cli-B7-ToJul.js} +12 -3
- package/dist/chunks/{agent-api-cli-CS62LiST.js → agent-api-cli-CvCov9_e.js} +1 -1
- package/dist/chunks/{agent-api-core-Cf70N-eJ.js → agent-api-core-CLxZAole.js} +22 -4
- package/dist/chunks/{agent-setup-cli-BffFfN-1.js → agent-setup-cli-py1gUMvJ.js} +1 -1
- package/dist/chunks/child-process-safe-CjVtRjDD.js +1 -0
- package/dist/chunks/{child-process-safe-CbQnyh7D.js → child-process-safe-D4hyVIXj.js} +4 -1
- package/dist/chunks/{config-store-BSk1Ai2Z.js → config-store-CxYqTNbe.js} +38 -2
- package/dist/chunks/config-store-DcVWBJOV.js +1 -0
- package/dist/chunks/{contracts-CLBzEau4.js → contracts-C9Jj9iDo.js} +167 -6
- package/dist/chunks/{control-messages-CMIEvS1e.js → control-messages-C6JGCTuy.js} +112 -3
- package/dist/chunks/{git-version-B3CmEw-k.js → git-version-D_iXgYTZ.js} +2 -2
- package/dist/chunks/{grok-mti-4OsU.js → grok-BUGgQVE3.js} +1 -1
- package/dist/chunks/{guardrails-deps-CLxK4J-g.js → guardrails-deps-BjPzk1rE.js} +1 -1
- package/dist/chunks/{main-Dyr9DbUw.js → main-CRU5ahjl.js} +8581 -5772
- package/dist/chunks/{pair-cli-D754Z91h.js → pair-cli-CL1D9xc7.js} +2 -2
- package/dist/chunks/{remote-config-CLI_gHAh.js → remote-config-CaW0mpwr.js} +1 -1
- package/dist/chunks/{rtk-resolver-BgoPsEhT.js → rtk-resolver-BDHi6RMv.js} +1 -1
- package/dist/chunks/rtk-resolver-Dr4iJsiS.js +1 -0
- package/dist/chunks/{session-BmjBq2rH.js → session-C8IpFmGQ.js} +38 -2
- package/dist/chunks/{session-routes-Dv0vvLc6.js → session-routes-nySS7DUE.js} +36 -2
- package/dist/chunks/{settings-cli-CsDruT8O.js → settings-cli-Duculey3.js} +5 -5
- package/dist/chunks/{settings-readout-core-CPm5ONXm.js → settings-readout-core-CX7DmEuG.js} +2 -2
- package/dist/chunks/{ssh-sign-cli-BG29CY0B.js → ssh-sign-cli-BEAAFjXg.js} +3 -3
- package/dist/chunks/{visions-cli-CYujESdJ.js → visions-cli-CVRB9IWA.js} +1 -1
- package/dist/chunks/{visions-setup-B-ZeRdsi.js → visions-setup-DB2P8JUL.js} +1 -1
- package/dist/client/assets/index-CBjFGcSs.js +176 -0
- package/dist/client/assets/index-Cbb5NKHK.css +2 -0
- package/dist/client/index.html +2 -2
- package/dist/scripts/postinstall-path-check.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/session/guardrails-open-launcher.js +1 -1
- package/dist/session/hook-tool-relay.js +1 -1
- package/dist/session/statusline-relay.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/child-process-safe-ChRmWAJP.js +0 -1
- package/dist/chunks/config-store-B67fnqQ1.js +0 -1
- package/dist/chunks/rtk-resolver-BGE6Hd_L.js +0 -1
- package/dist/client/assets/index-B-19NksJ.js +0 -148
- package/dist/client/assets/index-Dp9irA7v.css +0 -2
|
@@ -1,148 +0,0 @@
|
|
|
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(),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`])}),C=g({ok:t(),error:l().optional(),freshness:ee.optional()}),ne=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,w=/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/,re=/^[A-Za-z0-9_=-]+$/;function ie(e){let t=e.split(`/`);return t.length!==2||!t.every(e=>ne.test(e))?null:[t[0],t[1]]}var ae=/^[0-9a-f]{7,40}$/i,oe=/^[0-9a-f]{40}$/;function se(e,{chars:t=7,validate:n=!1}={}){if(typeof e!=`string`||!e)return``;if(!n)return e.slice(0,t);let r=e.trim();return ae.test(r)?r.slice(0,t).toLowerCase():``}var T=l().regex(oe),ce=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:T,headRefName:l().optional(),headRefOid:T,additions:c().int().nonnegative(),deletions:c().int().nonnegative(),files:p(g({path:l(),additions:c().int().nonnegative(),deletions:c().int().nonnegative()}).passthrough())}).passthrough();var E=g({path:l(),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l()}),le=Object.freeze({STAMP:`APPROVE`,COMMENT:`APPROVE WITH NITS`,NEEDS_YOU:`REQUEST CHANGES`}),D=u([`APPROVE`,`APPROVE WITH NITS`,`REQUEST CHANGES`,`BLOCKED`]),O=r(e=>typeof e==`string`&&Object.hasOwn(le,e)?le[e]:e,D),ue=u([`CRITICAL`,`HIGH`,`MEDIUM`,`LOW`]),de=E.extend({severity:ue.optional()}),fe=g({path:l().min(1),line:c().int().positive().nullable(),side:u([`RIGHT`,`LEFT`]),severity:ue,reviewer:l().min(1),disposition:u([`ACTIONABLE`,`NIT`,`AMBIGUOUS`]).nullable(),body:l().min(1)}),pe=g({goal:l().default(``),change:l(),checked:p(l()),gaps:p(l())});g({verdict:D,head:T,summary:l(),assessment:pe.nullable(),findings:p(fe)}),g({body:l(),commit_id:T,comments:p(g({path:l().min(1),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l().min(1)}))});var me=u([`APPROVE`,`COMMENT`]),he=u([`APPROVED`,`CHANGES_REQUESTED`,`COMMENTED`]),ge=new Set([`APPROVED`,`CHANGES_REQUESTED`]),_e=u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]),ve=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]),ye={requestSource:u([`direct`,`team`]).default(`team`),isDraft:t().optional(),checksState:ve.nullable().optional()},be=g({login:l().min(1),state:he,commit:T.nullable(),isViewer:t(),submittedAt:l().nullable().optional()});function xe(e,t){return e||(t.includes(`CHANGES_REQUESTED`)?`CHANGES_REQUESTED`:t.includes(`APPROVED`)?`APPROVED`:`REVIEW_REQUIRED`)}function Se(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 Ce=g({head:T,base:T.optional(),verdict:D,summary:l(),body:l(),comments:p(E),wasPosted:t()}),we=Ce.pick({head:!0,verdict:!0,summary:!0,wasPosted:!0}).extend({comments:p(de)}),Te=l().min(1).max(256).regex(re),Ee=g({addressed:t(),reason:l().trim().min(1).max(4e3)}).strict(),De=g({id:Te,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:T}).nullable()}))})});g({data:g({node:g({comments:De.shape.comments}).nullable()}).nullable()}),g({pullRequest:g({reviewThreads:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(De)})}).nullable()}),g({data:g({resolveReviewThread:g({thread:g({id:Te,isResolved:m(!0)})})}).nullable(),errors:p(e()).optional()});var Oe=g({id:Te,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:Ee.extend({head:T,judgedAt:c().finite(),lastReplyAt:l().datetime()}).optional(),resolveError:l().optional(),resolveAttemptReplyAt:l().optional(),judgeAttempt:g({head:T,lastReplyAt:l(),retryAt:c().finite()}).optional(),unjudgeable:g({head:T,lastReplyAt:l(),reason:l().min(1)}).optional()});g({merge_base_commit:g({sha:T}),files:p(g({filename:l(),previous_filename:l().optional(),patch:l().optional()})).max(300)});var ke=g({total:c().int().nonnegative(),resolved:c().int().nonnegative()}),Ae=g({...ye,key:l(),repo:ce,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),reviewedHead:T,reviewedBase:T.optional(),verdict:O,summary:l(),assessment:pe.optional(),body:l(),comments:p(de),status:u([`ready`,`stale`,`posted`,`discarded`,`error`]),error:l().optional(),threads:p(Oe).optional(),viewerThreads:ke.optional(),githubReviews:p(be).optional(),reviewDecision:_e.nullable().optional(),liveHead:T.optional(),prCreatedAt:l().optional(),reviewedAt:c().finite().optional(),postedAt:c().finite().optional(),postedEvent:me.optional(),priorReviewedHead:T.optional(),requeuedHead:T.optional(),earlierReview:we.optional()});function je(e){return e.status===`posted`&&e.postedEvent===`COMMENT`}var Me=u([`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`]);function Ne(e){return e.action===`discard`||e.head!==void 0}var Pe=g({key:l().min(1),head:T.optional(),action:Me,threadId:Te.optional(),body:l(),comments:p(E)}).refine(e=>e.action!==`resolve-thread`||e.threadId!==void 0,{message:`resolve-thread requires threadId`,path:[`threadId`]}).refine(Ne,{message:`only discard may omit head`,path:[`head`]}),Fe=g({key:l(),ok:t(),error:l().optional(),warning:l().optional()}),Ie=g({sessionId:l().min(1),workDir:l().min(1),worktreePath:l().min(1),head:T,deadlineAt:c(),remainingAwakeMs:c().nonnegative().optional(),savedAt:c()}),Le=g({...ye,reviewDecision:_e.nullable().optional(),key:l(),repo:ce,number:c().int().positive(),title:l(),url:l(),author:l(),prCreatedAt:l().optional()}),Re=g({draft:Ae.nullable(),reviewedHead:T.nullable(),inFlight:t(),skipReason:l().nullable(),handReview:Le.optional(),reviewAttempts:c().int().nonnegative().default(0),resumable:Ie.nullable().optional(),reviewedAt:c().optional(),threads:p(Oe).optional(),viewerThreads:ke.optional(),autoResolvedThreadIds:p(Te).optional(),githubReviews:p(be).optional(),reviewDecision:_e.nullable().optional(),liveHead:T.optional(),requeuedHead:T.optional(),priorReview:Ce.optional(),discardedReviewHead:T.optional(),requestedAt:c().finite().optional(),updatedAt:c().finite()});i(l(),Re);var ze=u([`preparing`,`checkout`,`reviewing`]),Be=g({at:c().finite(),tool:l(),detail:l()}),Ve=g({...ye,reviewDecision:_e.nullable().optional(),key:l(),repo:ce,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),head:T,phase:ze,startedAt:c().finite(),deadlineAt:c().finite().nullable(),toolCalls:c().int().nonnegative(),recentSteps:p(Be),prCreatedAt:l().optional(),priorReviewedHead:T.optional()}),He=g({...S,type:m(`team-review-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),drafts:p(Ae),inFlight:p(Ve),queued:p(Le).default([]),handReview:p(Le).default([]),team:g({org:l(),slug:l(),name:l(),avatarUrl:l()}).nullable().optional()}).passthrough(),Ue=u([`merged`,`draft`,`conflicts`,`behind`,`checks-failing`,`changes-requested`,`unresolved-threads`,`checks-pending`,`needs-approval`,`ready`,`unknown`]),We=c().int().nonnegative(),Ge=l().regex(w),Ke=l().regex(/^[1-9][0-9]*$/),qe=o([Ge,`#`,Ke]),Je=o([qe,`@`,T]),Ye=l().refine(e=>qe.safeParse(e).success),Xe=l().refine(e=>Je.safeParse(e).success);d(`outcome`,[f({outcome:m(`pushed`)}),f({outcome:u([`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1)})]);var Ze=f({outcome:u([`pushed`,`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1).optional(),at:c().finite()}),Qe=Ze.extend({key:Ye,headRefOid:T,baseRefOid:T,consecutiveAttempts:c().int().min(1).optional()});f({keepMergeableKeys:p(Ye),keepMergeableAttemptKeys:p(Xe),keepMergeableAttempts:p(Qe).default([]),mergeQueueKeys:p(Ye).default([]),keepMergeablePushedHeadKeys:p(Xe).default([])});var $e=f({repo:Ge,number:c().int().positive(),url:_(),source:u([`hook`,`sha`,`manual`]),linkedAt:c().finite()}),et=f({links:p($e).max(20),unlinkedKeys:p(Ye).default([])}),tt=g({repo:Ge,number:c().int().positive(),keepMergeable:t()}),nt=g({key:l(),ok:t(),error:l().optional()}),rt=nt,it=g({repo:Ge,number:c().int().positive(),mergeWhenReady:t()}),at=nt,ot=u([`MERGE`,`SQUASH`,`REBASE`]),st=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()}),ct=g({reviewer:l().nullable(),state:l(),submittedAt:l().nullable()}),lt=g({outcome:u([`rebased`,`failed`]),at:c().finite(),message:l()}),ut=g({at:c().finite(),message:l()}),k=g({key:l(),repo:Ge,number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:T,headRefName:l().min(1),isCrossRepository:t(),headRefOid:T,isInMergeQueue:t(),mergeMethod:ot,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:We}),unresolvedThreads:We,threads:p(st),behindBy:We.nullable(),reviewRequests:p(g({name:l(),isTeam:t(),avatarUrl:l().nullable()})),approvals:We,reviews:p(ct),stage:Ue,autoRebase:lt.optional(),keepMergeable:t().optional(),keepMergeableAttempt:Ze.optional(),isKeepMergeableFixInFlight:t().optional(),mergeQueuePosition:c().int().positive().nullable().optional(),isMergeQueueHeldForRepairPush:t().optional(),mergeQueueFailure:ut.optional()}).refine(e=>e.key===`${e.repo}#${e.number}`),dt=f({key:Ye,autoRebase:k.shape.autoRebase,keepMergeable:k.shape.keepMergeable,keepMergeableAttempt:k.shape.keepMergeableAttempt,isKeepMergeableFixInFlight:k.shape.isKeepMergeableFixInFlight,mergeQueuePosition:k.shape.mergeQueuePosition,isMergeQueueHeldForRepairPush:k.shape.isMergeQueueHeldForRepairPush,mergeQueueFailure:k.shape.mergeQueueFailure}),ft=g({...S,type:m(`my-prs-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),viewer:l().nullable(),prs:p(dt),truncatedNote:l().nullable().optional(),isKeepMergeableEnabled:t().optional(),isMergeQueueEnabled:t().optional()}).passthrough();ft.extend({prs:p(k)});var pt=g({repo:Ge,number:c().int().positive(),headRefOid:T}),mt=u([`merged`,`queued`,`auto-merge`,`unconfirmed`]),ht=g({key:l(),ok:t(),kind:mt.optional(),error:l().optional()}),gt=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()}),_t=g({__typename:m(`StatusContext`),context:l(),state:l()}),vt=a([gt,_t]),yt=g({hasNextPage:t(),endCursor:l().nullable()}),bt=g({__typename:m(`PullRequest`),id:l().regex(re),number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:T,headRefName:l().min(1),isCrossRepository:t(),headRefOid:T,isInMergeQueue:t(),mergeable:u([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:l(),reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),repository:g({nameWithOwner:Ge,viewerDefaultMergeMethod:ot}),commits:g({nodes:p(g({commit:g({statusCheckRollup:g({id:l().regex(re).optional(),state:u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),contexts:g({pageInfo:yt.optional(),nodes:p(vt)})}).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()}))})}),xt=g({login:l()}).nullable();g({isResolved:t(),isOutdated:t(),path:l(),line:c().int().positive().nullable(),firstComment:g({totalCount:We,nodes:p(g({author:xt,bodyText:l(),url:_(),createdAt:l()}))}),lastComment:g({nodes:p(g({author:xt,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:yt,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:We,nodes:p(e())}),merged:g({issueCount:We,nodes:p(e())})}),errors:p(e()).optional()});var A=Object.freeze({min:0,exclusiveMin:!0,label:`a positive number`}),St=Object.freeze({min:0,label:`zero or more`}),Ct=Object.freeze({min:0,max:300}),wt=Object.freeze({min:1,max:60}),Tt=Object.freeze({min:.5,max:2}),Et=Object.freeze({flyingAnimalsMinGapSeconds:20,flyingAnimalsMaxGapSeconds:40,flyingAnimalsMinDurationSeconds:6.9,flyingAnimalsMaxDurationSeconds:11.5,flyingAnimalsScale:1,flyingAnimalsOnPhone:!0}),Dt=Object.freeze({min:64,max:16384}),Ot=Object.freeze({min:0,max:65536}),kt=Object.freeze({min:0,max:65535}),At=Object.freeze({min:0,exclusiveMin:!0,max:2147483647/1e3}),jt=A,Mt=A,Nt=A,Pt=A,Ft=A,It=St,Lt=A,Rt=A,zt=A,Bt=A,Vt=A,Ht=A,Ut=A,Wt=A,Gt=A,Kt=Object.freeze({min:60,max:21600,label:`between 60 and 21600`}),qt=Object.freeze({min:1,label:`at least 1`}),Jt=Object.freeze({min:1,label:`at least 1`}),Yt=St,Xt=Object.freeze({min:1,max:30,label:`between 1 and 30`}),Zt=Object.freeze({min:1,max:1440}),Qt=Object.freeze({min:1,max:3650}),$t=Object.freeze({min:30,max:3650}),en=Object.freeze({min:1,max:24}),tn=A,nn=Object.freeze({scanIntervalMinutes:Zt,retainDays:Qt,warehouseRetainDays:$t,sessionBlockHours:en}),rn=Object.freeze({min:15,max:600}),an=Object.freeze({min:5,max:120}),on=Object.freeze({min:1,max:5}),sn=Object.freeze({min:1,max:50});Object.freeze({NON_NEGATIVE_NUMBER_RANGE:St,FLYING_ANIMALS_GAP_RANGE:Ct,FLYING_ANIMALS_DURATION_RANGE:wt,FLYING_ANIMALS_SCALE_RANGE:Tt,CHANGE_MAP_NARRATOR_TIMEOUT_RANGE:rn,KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE:an,PORT_RANGE:kt,POSTHOG_ESCALATION_RANGE:Ut,POSTHOG_FIX_TIMEOUT_RANGE:Kt,POSTHOG_INTERVAL_RANGE:zt,POSTHOG_INVESTIGATION_TIMEOUT_RANGE:Vt,POSTHOG_MAX_CONCURRENT_RANGE:Bt,POSTHOG_MIN_USERS_RANGE:Ht,POSTHOG_TRAFFIC_BASELINE_RANGE:Xt,POSTHOG_TRAFFIC_COOLDOWN_RANGE:Yt,POSTHOG_TRAFFIC_MIN_USERS_RANGE:Jt,POSTHOG_TRAFFIC_MULTIPLIER_RANGE:qt,REPLAY_BUFFER_KB_RANGE:Dt,MEMORY_RESERVE_MB_RANGE:Ot,TASK_TITLE_TIMEOUT_RANGE:At,USAGE_BUDGET_RANGE:tn,USAGE_RETAIN_DAYS_RANGE:Qt,USAGE_SCAN_INTERVAL_RANGE:Zt,VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE:It,VISIONS_COOLDOWN_MS_RANGE:Pt,VISIONS_DISPATCH_TIMEOUT_RANGE:Lt,VISIONS_INTENT_THREAD_TTL_MS_RANGE:Rt,VISIONS_MAX_PER_HOUR_RANGE:Ft,VISIONS_QUIET_MS_RANGE:Nt,WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE:sn,WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE:on});var cn=Object.freeze([`opened`,`checks-failed`,`review-requested`,`approved`,`commented`,`merged`]),ln=Object.freeze([`notify`,`spawn`,`label`,`comment`]),un=2e4,dn=65536,fn=50,pn=/^[a-z0-9][a-z0-9-]{0,63}$/,mn=/[\x00-\x1f\x7f,]|^-/,hn=(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})},gn=t({error:`workflows.enabled must be a boolean`}),_n=hn(`workflows.maxConcurrentSessions`,on),vn=hn(`workflows.maxActionsPerPoll`,sn),yn=(e,t)=>p(t,{error:`${e} must be an array`}).min(1,{error:`${e} must list at least one entry when present`}),bn=l({error:`a workflow label name must be a string`}).trim().min(1,{error:`a workflow label name must not be empty`}).max(fn,{error:`a workflow label name must be at most ${fn} characters`}).refine(e=>!mn.test(e),{error:`a workflow label name must not start with a dash or hold a comma or control character`}),xn=l({error:`a workflow comment body must be a string`}).min(1,{error:`a workflow comment body must not be empty`}).max(dn,{error:`a workflow comment body must be at most ${dn} characters`}).refine(e=>e.trim().length>0,{error:`a workflow comment body must not be blank`}),Sn=u(cn,{error:`workflows.rules[].trigger must be one of ${cn.join(`, `)}`}),Cn=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(un,{error:`a spawn action promptTemplate must be at most ${un} characters`}).refine(e=>e.trim().length>0,{error:`a spawn action promptTemplate must not be blank`})}),f({type:m(`label`),name:bn}),f({type:m(`comment`),body:xn})],{error:`workflows.rules[].actions[].type must be one of ${ln.join(`, `)}`}),wn=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:yn(`workflows.rules[].filters.authors`,l({error:`workflows.rules[].filters.authors must hold GitHub logins`}).regex(ne,{error:`workflows.rules[].filters.authors must hold GitHub logins`})).optional(),labels:yn(`workflows.rules[].filters.labels`,bn).optional(),baseBranches:yn(`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`}),Tn=l({error:`workflows.rules[].id must be a string`}).regex(pn,{error:`workflows.rules[].id must be 1 to 64 lowercase letters, digits and dashes, starting with a letter or digit`}),En=t({error:`workflows.rules[].enabled must be a boolean`}),Dn=f({id:Tn,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:En.default(!1),repos:yn(`workflows.rules[].repos`,Ge),filters:wn.default({}),trigger:Sn,actions:yn(`workflows.rules[].actions`,Cn)},{error:`workflows.rules[] must be an object`}),On=f({enabled:gn.default(!0),maxConcurrentSessions:_n.default(2),maxActionsPerPoll:vn.default(20),rules:p(Dn,{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)}),kn=f({id:Tn,enabled:En},{error:`a dashboard update of workflows.rules[] carries only id and enabled`});f({enabled:gn.optional(),maxConcurrentSessions:_n.optional(),maxActionsPerPoll:vn.optional(),rules:p(kn,{error:`workflows.rules must be an array`}).optional()},{error:`a dashboard update of workflows carries only enabled, maxConcurrentSessions, maxActionsPerPoll and rule toggles`});var An=c().int().nonnegative(),jn=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),Mn=bt.extend({author:g({login:l()}).nullable(),labels:g({nodes:p(g({name:l()}))}),comments:g({totalCount:An})}),Nn=f({repo:Ge,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:T,labels:p(l()),commentCount:An,reviewRequests:p(l()),checksState:jn,reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable()}),Pn=f({polledAtMs:An,prs:p(Nn)});f({repos:i(l().regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/),Pn)});var Fn=l().refine(e=>qe.safeParse(e).success&&e===e.toLowerCase()&&Number.isSafeInteger(Number(e.slice(e.lastIndexOf(`#`)+1))));function In(e){return`${e.repo}#${e.number}`.toLowerCase()}g({repository:bt.shape.repository.pick({nameWithOwner:!0}),number:bt.shape.number,updatedAt:bt.shape.updatedAt,headRefOid:bt.shape.headRefOid,state:bt.shape.state,commits:g({nodes:p(g({commit:g({statusCheckRollup:g({state:k.shape.checks.shape.state}).nullable()})}))}),reviewDecision:bt.shape.reviewDecision,mergeable:bt.shape.mergeable}),bt.extend({author:Mn.shape.author.unwrap().extend({__typename:l().optional()}).nullable(),labels:Mn.shape.labels,comments:Mn.shape.comments,latestReviews:g({nodes:p(bt.shape.latestReviews.shape.nodes.element.extend({commit:g({oid:l()}).nullable().optional()}))}),writerOpinionatedReviews:bt.shape.latestOpinionatedReviews.optional()});var Ln=f({key:Fn,id:bt.shape.id,repo:k.shape.repo,number:k.shape.number,title:k.shape.title,url:k.shape.url,author:Nn.shape.author,isAuthorBot:t(),labels:Nn.shape.labels,commentCount:Nn.shape.commentCount,isDraft:k.shape.isDraft,state:k.shape.state,createdAt:k.shape.createdAt,mergedAt:k.shape.mergedAt,updatedAt:k.shape.updatedAt,baseRefName:k.shape.baseRefName,baseRefOid:k.shape.baseRefOid,headRefName:k.shape.headRefName,headRefOid:k.shape.headRefOid,isCrossRepository:k.shape.isCrossRepository,isInMergeQueue:k.shape.isInMergeQueue,mergeMethod:k.shape.mergeMethod,mergeable:k.shape.mergeable,mergeStateStatus:k.shape.mergeStateStatus,reviewDecision:_e.nullable(),checks:k.shape.checks.strict(),rollupState:ve.nullable(),unresolvedThreads:k.shape.unresolvedThreads,threads:p(k.shape.threads.element.strict()),behindBy:k.shape.behindBy,reviewRequests:p(k.shape.reviewRequests.element.strict()),approvals:k.shape.approvals,reviews:p(k.shape.reviews.element.extend({commit:T.nullable()}).strict()),opinionatedWriterReviewStates:p(l())}).refine(e=>e.key===In(e)),Rn=n({type:m(`github-prs`),ts:c().finite().nonnegative(),prs:i(Fn,Ln).refine(e=>Object.entries(e).every(([e,t])=>e===t.key)),freshness:ee}),zn=new Map,Bn=new Set;function Vn(e){let t=Rn.safeParse(e);if(t.success){zn=new Map(Object.entries(t.data.prs));for(let e of Bn)e()}}function Hn(e){return zn.get(e.toLowerCase())}function Un(e){Bn.add(e)}function Wn(e){return e===`remote`?`remote`:`local`}function Gn(e,t){return Wn(t)===`local`||e!==`shutdown`}var Kn=Object.freeze({setTimeoutFn:(e,t)=>setTimeout(e,t),clearTimeoutFn:e=>clearTimeout(e),setIntervalFn:(e,t)=>setInterval(e,t),clearIntervalFn:e=>clearInterval(e)});function qn(e){return typeof e!=`object`||!e||!(`unref`in e)||typeof e.unref!=`function`||e.unref(),e}function Jn({mode:e,delayMs:t,run:n,setTimeoutFn:r=Kn.setTimeoutFn,clearTimeoutFn:i=Kn.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&&qn(o))}return{schedule:c,cancel:s,get isArmed(){return o!==null}}}var j=Object.freeze({DORMANT:`DORMANT`,INITIALIZING:`INITIALIZING`,STARTING:`STARTING`,RUNNING:`RUNNING`,WAITING:`WAITING`,IDLE:`IDLE`,COMPLETE:`COMPLETE`,DONE:`DONE`,FAILED:`FAILED`}),Yn=Object.freeze({[j.DORMANT]:`Dormant`,[j.INITIALIZING]:`Starting`,[j.STARTING]:`Starting`,[j.RUNNING]:`Working`,[j.WAITING]:`Needs Input`,[j.IDLE]:`Idle`,[j.COMPLETE]:`Complete`,[j.DONE]:`Exited`,[j.FAILED]:`Failed`}),Xn=Object.freeze([j.INITIALIZING,j.STARTING,j.RUNNING,j.WAITING,j.IDLE,j.COMPLETE]),Zn=Object.freeze([j.DONE,j.FAILED]),Qn=Object.freeze([j.WAITING,j.IDLE,j.COMPLETE]);function $n(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 er=Object.freeze({[j.DORMANT]:`not-started`,[j.INITIALIZING]:`starting`,[j.STARTING]:`starting`,[j.RUNNING]:`working`,[j.WAITING]:`needs-input`,[j.IDLE]:`idle`,[j.COMPLETE]:`complete`,[j.DONE]:`exited`,[j.FAILED]:`failed`}),tr=`monitoring`,nr=e=>({fill:`none`,stroke:`currentColor`,"stroke-width":e,"stroke-linecap":`round`,"stroke-linejoin":`round`}),rr={fill:`currentColor`},ir=Object.freeze({"not-started":[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...nr(`1.6`),"stroke-linecap":`butt`,"stroke-dasharray":`2.6 2.1`}}],starting:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...nr(`1.8`),"stroke-opacity":`.25`}},{tag:`path`,attributes:{d:`M8 2a6 6 0 0 1 6 6`,...nr(`1.8`),class:`status-icon-spin`}}],working:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...nr(`1.4`),class:`status-icon-ping`}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...rr}}],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`,...nr(`1.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`2.2`,...rr}}],"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`,...nr(`2.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`14`,r:`1.55`,...rr}}],idle:[{tag:`rect`,attributes:{x:`3.6`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...rr}},{tag:`rect`,attributes:{x:`9.4`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...rr}}],complete:[{tag:`path`,attributes:{d:`M2.8 8.4l3.4 3.4 7-7.4`,...nr(`2.2`)}}],exited:[{tag:`rect`,attributes:{x:`3`,y:`3`,width:`10`,height:`10`,rx:`1.6`,...rr}}],failed:[{tag:`path`,attributes:{d:`M3.5 3.5l9 9M12.5 3.5l-9 9`,...nr(`2`)}}]});function ar(e,t){return!e||e.toLowerCase().endsWith(`[bot]`)?null:`https://avatars.githubusercontent.com/${encodeURIComponent(e)}?s=${t*2}`}function or(e){return e.match(/[a-z0-9]/i)?.[0]?.toUpperCase()??`?`}function M(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function sr(e,t,n){let r=M(e,t);return r.innerHTML=n,r}function cr(e,t){for(let[n,r]of t)e.style.setProperty(n,r)}function lr({login:e,url:t,cssPx:n}){let r=M(`span`,`avatar`);r.style.width=`${n}px`,r.style.height=`${n}px`;let i=()=>M(`span`,`avatar-monogram`,or(e)),a=t===void 0?ar(e,n):t;if(!a)return r.append(i()),r;let o=M(`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 ur(e,t){let n=M(`span`,`avatar-stack`);for(let r of e){let e=lr({login:r.login,url:r.url,cssPx:t});e.title=r.title,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,r.title);let i=M(`span`,`avatar-badge`);i.dataset.tone=r.tone,e.append(i),n.append(e)}return n}function N(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 dr(e,t){let n=e.querySelector(t);if(!(n instanceof HTMLElement))throw Error(`${t} matches no element`);return n}function fr(e,t,n,r=t){if(!n){let n=M(`span`,e,t);return n.title=r,n}let i=M(`a`,e,t);return i.title=r,i.href=n,i.target=`_blank`,i.rel=`noopener`,i}function pr(e,t){return e===j.RUNNING&&t===!0}function mr(e,t=!1){let n=e,r=pr(e,t),i=r?`Monitoring`:Yn[n]||e;return{icon:r?tr:er[n]??er[j.DORMANT],label:i.toUpperCase(),isMonitoring:r}}function hr(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 gr(e,t,n){let r=M(`section`,`${e}-section`),i=M(`div`,`${e}-section-head`);return i.append(M(`h2`,`${e}-section-title`,t)),n&&i.append(M(`span`,`${e}-section-hint`,n)),r.append(i),r}function _r(e,t,n,r){let i=M(`span`,`${e}-stat`);return r&&(i.dataset.tone=r),i.append(M(`span`,`${e}-stat-value`,n),M(`span`,`${e}-stat-label`,t)),i}function vr(e){return Array.isArray(e?.projects)?e.projects:[]}function yr(e){return!e||!!e.closest(`[hidden]`)}function br(e){return navigator.clipboard?.writeText?navigator.clipboard.writeText(e):null}function xr(e,t){e&&t&&e.parentElement!==t&&(e._adoptHome||={parent:e.parentElement,next:e.nextElementSibling},t.appendChild(e))}function Sr(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 Cr(e){return e.card?.dataset.session||e.nameEl?.textContent||``}function wr(e){return typeof e==`string`?e:String(e)}function F(e){return typeof e==`string`?P.get(e):void 0}var Tr=document.getElementById(`sessions-container`),Er=Object.freeze({layout:`desktop`,activeView:`focus`,phoneScreen:null,focusedSessionId:null,selectedSessionId:null,borrowedCardId:null}),Dr=e=>e||null,Or=Object.freeze({setLayout:e=>({layout:e}),setActiveView:e=>({activeView:e}),setPhoneScreen:e=>({phoneScreen:Dr(e)}),focusSession:e=>({focusedSessionId:Dr(e)}),selectSession:e=>({selectedSessionId:Dr(e)}),borrowCard:e=>({borrowedCardId:Dr(e)})});function kr(e){let t=Object.freeze({...Er,...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 Er))throw Error(`ui-state: unknown key "${r}"`);Object.is(t[r],e[r])||n.push(r)}return n}function o(e,r){let i=Or[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 Ar=kr(),jr=()=>Ar.snapshot().activeView;function Mr(){return Ar.snapshot().borrowedCardId}function Nr(e,t,n,{className:r}={}){if(!e?.card||!n)return;let i=Mr();i&&i!==t&&Pr();let a=e.card;a._cardHostClass&&a._cardHostClass!==r&&a.classList.remove(a._cardHostClass),a._cardHostClass=r||``,r&&a.classList.add(r),xr(a,n),Ar.dispatch(`borrowCard`,t),e._ensureTerminalReady?.(),e._setBorrowed?.(!0),e._showPreferredFace?.()}function Pr(){let e=Mr();if(Ar.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,Sr(n,Tr)),e}var Fr=l().regex(w),Ir=l().regex(RegExp(`${w.source.slice(0,-1)}#[1-9][0-9]*$`)),Lr=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:Lr.shape.number,url:Lr.shape.url,title:Lr.shape.title,state:u([`OPEN`,`MERGED`,`CLOSED`]),isDraft:t()}).nullable()).max(5)})}).nullable()});function Rr({state:e,isDraft:t}){return e===`OPEN`?t?`draft`:`open`:e===`MERGED`?`merged`:`closed`}var zr={key:l(),repo:Fr,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()},Br=u([`project`,`me`,`team`]),Vr={...zr,sources:p(Br).nonempty().refine(e=>new Set(e).size===e.length),teams:p(Fr),projectId:l().nullable(),pullRequests:p(Lr).max(5).default([])},Hr=g(Vr).refine(e=>e.key===`${e.repo}#${e.number}`),Ur=g({...Vr,sessionId:l().nullable().default(null)}).refine(e=>e.key===`${e.repo}#${e.number}`),Wr=g({...zr,state:u([`open`,`closed`])});g({number:zr.number,title:zr.title,html_url:zr.url,state:u([`open`,`closed`]),labels:p(a([l(),g({name:l()})])),assignees:p(g({login:l()})),user:g({login:l()}).nullable(),comments:zr.comments,created_at:zr.createdAt,updated_at:zr.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(Wr),isComplete:t(),error:l()}),g({issues:p(Hr),lastSyncAt:c().finite().nonnegative().nullable(),perRepoSync:i(Fr,g({lastSyncAt:c().finite().nonnegative().nullable(),ticks:c().int().nonnegative(),needsFullReconcile:t()})),sessionLinks:i(Ir,l()).default({}),pullRequestsFetchedAt:i(Ir,h()).default({})});var Gr=g({type:m(`issues-status`),ts:c().finite(),configured:t(),reason:l().nullable(),lastSyncAt:c().finite().nonnegative().nullable(),issues:p(Ur),...S}).passthrough(),Kr=2e4,qr=4e3,Jr=524288,Yr=1e4,Xr=`ExitPlanMode`,Zr=4096,Qr=/^ {0,3}(#{1,6})[ \t]+(.*)$/;function $r(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 ei(e,{overlongLine:t}){if(t===`reject`&&e.length>4096)return null;let n=Qr.exec(e.slice(0,Zr));return n?{level:n[1].length,text:$r(n[2])}:null}var ti=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(Xr),tool_input:ti,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 ni=Object.freeze([`open`,`released`,`decided`,`closed`]),ri=u(ni),ii=Object.freeze([`approve`,`approve-accept-edits`,`revise`,`terminal`]),ai=u(ii),oi=g({heading:l().max(qr).nullable(),comment:l().min(1).max(qr)}),si=g({id:l().min(1),agentId:l().nullable(),revision:c().int().positive(),decision:ai,feedback:l().max(Kr).optional(),comments:p(oi).max(40).optional(),plan:l().min(1).max(Jr).optional()}),ci=g({revision:c().int().positive(),receivedAt:c().finite(),chars:c().int().nonnegative(),title:l()}),li=g({revision:c().int().positive(),since:c().finite()}),ui=g({agentId:l().nullable(),agentType:l().nullable(),revisions:p(ci),state:ri,openRevision:li.nullable(),approvedRevision:c().int().positive().nullable(),lastDecision:ai.nullable()});g({reviews:p(ui)});var di=g({agentId:l().nullable(),revision:c().int().nonnegative(),plan:l(),planFilePath:l(),receivedAt:c().finite()}),fi=g({id:l(),agentId:l().nullable(),agentType:l().nullable(),revision:c().int().positive(),receivedAt:c().finite(),state:ri,lastDecision:ai.nullable(),approvedRevision:c().int().positive().nullable(),chars:c().int().nonnegative(),title:l(),hasPlan:t()}),pi=g({id:l(),agentId:l().nullable(),planFilePath:l(),changedAt:c().finite()}),mi=g({id:l(),reviews:p(ui),body:di.nullable()});Object.freeze([`file`,`subsystem`,`co-change`,`hotspot`,`blast`,`untested`,`collision`,`link`]);var hi=l().min(1),gi=l().min(1),_i=c().int().nonnegative(),vi=p(gi).max(20),yi=u([`added`,`modified`,`deleted`,`renamed`,`untracked`]),bi=f({factId:hi,path:gi,previousPath:gi.optional(),status:yi,isCommitted:t()}),xi=f({factId:hi,agentsPath:gi,title:l(),paths:p(gi).min(1)}),Si=f({factId:hi,path:gi,partner:gi,support:_i,confidence:c().min(0).max(1)}),Ci=f({factId:hi,path:gi,commitCount:_i,fixCommitCount:_i}),wi=f({factId:hi,path:gi,directDependents:vi,directDependentCount:_i,transitiveDependentCount:_i,dependentTests:vi,dependentTestCount:_i}),Ti=f({factId:hi,path:gi}),Ei=f({factId:hi,path:gi,otherSessionId:l().min(1),otherSessionName:l()}),Di=f({factId:hi,providerRepo:l().min(1),packageName:l().min(1),packageDir:l(),consumerManifest:gi,versionSpec:l(),isLocalLink:t(),providerChangedPathCount:_i,importers:vi,importerCount:_i,changedImporterCount:_i}),Oi=f({name:l().min(1),root:l().min(1),sessionPathPrefix:l(),base:l().nullable(),files:p(bi),subsystems:p(xi),coChangeGaps:p(Si),hotspots:p(Ci),blastRadius:p(wi),untestedFiles:p(Ti),collisions:p(Ei),links:p(Di),error:l().nullable()}),ki=f({text:l().min(1).max(600),factIds:p(hi).min(1)}),Ai=f({factsHash:l().min(1),model:l().nullable(),claims:p(ki).max(12)}),ji=u([`disabled`,`pending`,`ready`,`failed`]),Mi=f({sessionId:l().min(1),sig:l().nullable(),generatedAt:c().finite(),repos:p(Oi),narrative:Ai.nullable(),narratorState:ji,error:l().min(1).optional()}),Ni=u([`decision`,`retraction`,`conjecture`,`resolution`,`dismissal`,`defect`,`experiment`,`close`,`unable`,`escalation`,`acknowledgement`,`enactment`]),Pi={id:l().min(1),at:h(),session:l(),agent:l(),commit:l().nullable(),dirty:t(),binding:l()},Fi={of:l().min(1),because:l()},Ii=n({id:l(),text:l()}),Li=d(`kind`,[n({...Pi,kind:m(`decision`),chose:l(),over:p(l()),because:l()}),n({...Pi,kind:m(`retraction`),...Fi}),n({...Pi,kind:m(`conjecture`),observation:l(),couldBe:p(l()),discriminatedBy:l()}),n({...Pi,kind:m(`resolution`),...Fi,as:l().optional()}),n({...Pi,kind:m(`dismissal`),...Fi}),n({...Pi,kind:m(`defect`),what:l(),evidence:l(),files:p(l())}),n({...Pi,kind:m(`experiment`),expectation:l(),context:p(l()),actions:p(Ii),criteria:p(Ii)}),n({...Pi,kind:m(`close`),of:l(),outcome:u([`success`,`failure`,`inconclusive`]),results:i(l(),e())}),n({...Pi,kind:m(`unable`),what:l(),because:l()}),n({...Pi,kind:m(`escalation`),what:l(),because:l()}),n({...Pi,kind:m(`acknowledgement`),...Fi}),n({...Pi,kind:m(`enactment`),practice:l(),results:i(l(),e())})]),Ri=a([Li,g({id:l().min(1),kind:l().min(1).refine(e=>!Ni.safeParse(e).success)})]);n({branch:l().nullable(),escalations:p(e()),records:p(Ri),citedBy:i(l(),p(e())),damaged:p(e())});var zi=f({id:l().min(1),at:h().nullable(),kind:l().min(1),text:l().max(280),detail:l().max(280).nullable(),supersedes:l().nullable()}),Bi=d(`ok`,[f({ok:m(!0),latest:zi.nullable()}),f({ok:m(!1),reason:l().min(1).max(200)})]),Vi=f({journal:Bi,updatedAt:c().finite()}),Hi=/^[a-zA-Z0-9_\-. ()]{1,64}$/,Ui=`Session name may only contain letters, numbers, spaces, dashes, dots, underscores, and parentheses (max 64 chars)`,Wi=/[\x00-\x1f\x7f-\x9f]/,Gi=l().refine(e=>!Wi.test(e)).trim().max(120);g({title:l().nullable(),name:l().nullable().optional()}).strict();var Ki=u(j),qi=g({at:c().finite().nullable(),kind:l(),reason:l().nullable()}).passthrough(),Ji=4e3,Yi=1e3,Xi=2e3,Zi=g({question:l().min(1).max(Yi),header:l().max(100).default(``),options:p(g({label:l().min(1).max(200),description:l().max(Yi).default(``)})).min(1).max(8),multiSelect:t().default(!1)}),Qi=g({requestId:a([l().min(1).max(128),c().int()]),kind:u([`command`,`fileChange`,`permissions`,`tool`,`question`]),summary:l().max(Ji),isSummaryTruncated:t(),toolName:l().max(200).optional(),questions:p(Zi).min(1).max(4).optional(),alwaysAllowSummary:l().max(Ji).optional()}),$i=i(l().max(Yi),l().max(Xi)),ea=u([`accept`,`acceptForSession`,`decline`]),ta=80,na=Object.freeze({notInstalled:`not installed`,unsupportedVersion:`unsupported version`,codexHooksUntrusted:`Codex hooks need trust in /hooks`}),ra=d(`active`,[g({active:m(!0)}).strict(),g({active:m(!1),reason:l().min(1).max(ta),version:l().optional()}).strict()]),ia=g({id:l(),name:l(),taskTitle:Gi.nullable().default(null),taskTitleIsCustom:t().default(!1),path:l(),agent:l(),state:Ki,stateSince:c(),dangerouslySkipPermissions:t(),saneYolo:t().default(!1),ephemeral:t(),isWorktree:t(),isWorkspace:t().default(!1),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:qi.nullable(),pendingPromptKind:l().nullable(),conversationApproval:Qi.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(),effectiveBase:l().nullable(),linkedPrs:p($e).default([]),coherenceHooks:ra.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 aa=[`push`,`spawn`,`attention`,`board`,`edit`,`review`,`reviews`,`prs`,`link-pr`,`settings`];[...aa],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(),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:ia.shape.id,name:ia.shape.name,agent:ia.shape.agent,state:ia.shape.state,ephemeral:ia.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 oa=Le.pick({key:!0,title:!0,url:!0,author:!0});g({ok:m(!0),configured:t(),reason:l().nullable(),reviewing:p(oa.extend({phase:Ve.shape.phase})),queued:p(oa),drafts:p(oa.extend({status:Ae.shape.status,verdict:l(),summary:Ae.shape.summary,comments:c().int().nonnegative(),isOutOfDate:t()}))}).strict(),g({ok:m(!0),configured:t(),prs:p(g({key:k.shape.key,title:k.shape.title,url:k.shape.url,state:k.shape.state,isDraft:k.shape.isDraft,stage:k.shape.stage,reviewDecision:k.shape.reviewDecision,approvals:k.shape.approvals,unresolvedThreads:k.shape.unresolvedThreads,behindBy:k.shape.behindBy,mergeable:k.shape.mergeable,isInMergeQueue:k.shape.isInMergeQueue,checks:k.shape.checks.pick({state:!0,failing:!0})}).strict())}).strict();var sa=4096;g({path:l({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(sa,{error:`path must be at most ${sa} characters`})}).strict();var ca=g({path:l(),name:l(),surfacedAt:c().finite()}).strict();g({commands:p(g({name:u(aa),answers:t(),reason:l().optional()}).strict()),guarded:t(),deadEnds:p(g({blocked:l(),route:l()}).strict())}).strict().extend({ok:m(!0)}).strict();var la=4e3,ua=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()}),da=d(`kind`,[ua.extend({kind:m(`prompt`),text:l()}),ua.extend({kind:m(`expansion`),text:l(),toolUseId:l().min(1).optional()}),ua.extend({kind:m(`thinking`),text:l()}),ua.extend({kind:m(`assistant`),text:l()}),ua.extend({kind:m(`tool_call`),toolUseId:l().min(1),name:l().min(1),input:e()}),ua.extend({kind:m(`tool_result`),toolUseId:l().min(1),content:l(),isError:t(),truncated:t()}),ua.extend({kind:m(`session`),vendor:l().min(1),transcriptPath:l().min(1),reason:l().min(1).optional()}),ua.extend({kind:m(`notice`),text:l().max(la)}),ua.extend({kind:m(`raw`),line:l().max(la)})]);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 fa=l().max(16384),pa=p(fa).max(4096),ma=g({model:fa.nullable(),mcpServers:pa,plugins:p(g({name:fa,skills:pa,agents:pa})).max(4096),skills:pa,agents:pa,hookEvents:p(g({event:fa,runCount:c().int().nonnegative()})).max(4096),hookCommands:p(l().max(65536)).max(4096)}),ha=u([`release`,`main`]),ga=u([`idle`,`running`,`staged`,`succeeded`,`failed`,`discarded`,`interrupted`]),_a=u([`fetch`,`stage`,`install`,`link-deps`,`build`]),va=u([`pending`,`running`,`succeeded`,`failed`]),ya=g({id:_a,status:va,startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),outputTail:p(l())}).strict(),ba=g({state:ga,fromSha:l().nullable(),toSha:l().nullable(),toVersion:l().nullable(),channel:ha,steps:p(ya),activeStep:_a.nullable(),reason:l().nullable(),startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),failedAtHandOff:t().optional()}).strict(),xa=ba.pick({state:!0,activeStep:!0,reason:!0,startedAt:!0,finishedAt:!0}),Sa=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Ca=/^[A-Za-z_][A-Za-z0-9_]*$/,wa=l().regex(/^[^/\s]+\/[^/\s]+$/),Ta=c().finite(),Ea=l().min(1),Da=Object.freeze([`CLAUDE_CODE_OAUTH_TOKEN`]),I=l().regex(Sa);function Oa(e){return new Set(e.map(e=>e.id)).size===e.length}var ka=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-merged-prs`),repo:wa,minBodies:c().int().min(1),limit:c().int().min(1).max(500)})]),Aa=d(`kind`,[f({kind:m(`none`)}),f({kind:m(`pr-checkout`)})]),ja=u([`review-findings`,`json`]),Ma=f({promptTemplate:Ea,output:ja,timeoutSeconds:c().int().min(30).max(14400)}),Na=f({id:I,env:i(l().regex(Ca),l()).refine(e=>Da.every(t=>!Object.hasOwn(e,t)),{message:`arm env must not set ${Da.join(`, `)}; Glimmervoid injects it per cell`}).optional(),extraArgs:p(l()).optional(),setup:f({command:p(Ea).min(1)}).optional()}),Pa=d(`kind`,[f({kind:m(`llm-judge-match`),model:Ea})]);f({id:I,title:Ea,caseSource:ka,workspace:Aa,subject:Ma,arms:p(Na).min(2).refine(Oa,{message:`arm ids must be unique`}),baselineArm:I,trials:c().int().min(1).max(20),scorer:Pa}).refine(e=>e.arms.some(t=>t.id===e.baselineArm),{message:`baselineArm must name one of the arms`,path:[`baselineArm`]});var Fa=f({id:I,text:Ea,tags:p(I),path:Ea.optional(),line:c().int().positive().optional()}),Ia=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-pr`),repo:wa,number:c().int().positive(),url:Ea,minedAt:Ta})]);f({id:I,input:i(l(),e()),references:p(Fa).min(1).refine(Oa,{message:`reference ids must be unique`}),source:Ia}),g({repo:wa,number:c().int().positive(),reviewedSha:T,baseSha:T,changedFiles:p(Ea)});var La=u([`found`,`partial`,`missed`]),Ra=f({referenceId:I,verdict:La,findingIndexes:p(c().int().nonnegative())}),za=u([`scored`,`invalid`,`error`]),Ba=f({caseId:I,armId:I,trial:c().int().min(1),status:za,startedAt:Ta,finishedAt:Ta,degradedReasons:p(Ea),findingCount:c().int().nonnegative(),judgements:p(Ra),costUsd:c().finite().nonnegative().nullable(),error:Ea.nullable()}),Va=u([`running`,`completed`,`interrupted`,`failed`]);f({id:I,suiteId:I,status:Va,startedAt:Ta,finishedAt:Ta.nullable(),error:Ea.nullable(),cells:p(Ba)});var Ha=c().min(0).max(1).nullable(),Ua=f({trials:c().int().nonnegative(),recall:Ha,recallByTag:i(I,Ha),degraded:c().int().nonnegative(),invalid:c().int().nonnegative(),costUsd:c().finite().nonnegative().nullable()}),Wa=f({caseId:I,arms:i(I,Ua),deltaVsBaseline:i(I,c().min(-1).max(1).nullable())}),Ga=f({runId:I,suiteId:I,status:Va,baselineArm:I,armIds:p(I),rows:p(Wa),totals:i(I,Ua)}),Ka=u([`mine`,`run`,`cancel`]),qa=g({suiteId:I,action:Ka}),Ja=g({suiteId:I,action:Ka,ok:t(),error:l().optional(),runId:I.optional()}),Ya=u([`setup`,`preflight`,`workspace`,`subject`,`judge`]),Xa=g({suiteId:I,runId:I,caseId:I.nullable(),armId:I,trial:c().int().min(1),phase:Ya,cellIndex:c().int().nonnegative(),cellCount:c().int().positive(),startedAt:Ta}),Za=g({id:I,title:l(),error:l().nullable(),caseCount:c().int().nonnegative(),candidateCount:c().int().nonnegative(),armIds:p(I),baselineArm:I.nullable(),latestReport:Ga.nullable()}),Qa=g({type:m(`benchmark-status`),ts:Ta,configured:t(),reason:l().nullable(),suites:p(Za),inFlight:Xa.nullable()}).passthrough(),$a=g({__typename:l(),login:l()}).nullable();g({number:c().int().positive(),title:l(),url:Ea,mergedAt:l().nullable(),reviewThreads:g({totalCount:c().int().nonnegative()}),reviews:g({totalCount:c().int().nonnegative()})});var eo=g({path:l(),line:c().int().positive().nullable(),originalLine:c().int().positive().nullable(),comments:g({nodes:p(g({databaseId:c().int().positive(),author:$a,body:l(),createdAt:l(),originalCommit:g({oid:T}).nullable()}))})}),to=g({databaseId:c().int().positive(),author:$a,body:l(),submittedAt:l().nullable(),commit:g({oid:T}).nullable()}),no=d(`__typename`,[g({__typename:m(`BaseRefChangedEvent`),createdAt:l()}),g({__typename:m(`BaseRefForcePushedEvent`),createdAt:l(),beforeCommit:g({oid:T}).nullable()})]);g({author:$a,baseRefOid:T,reviewThreads:g({pageInfo:g({hasNextPage:t()}),nodes:p(eo)}),reviews:g({pageInfo:g({hasNextPage:t()}),nodes:p(to)}),timelineItems:g({pageInfo:g({hasNextPage:t()}),nodes:p(no)})}),g({mergeBaseSha:T,changedFiles:p(Ea),isFileListComplete:t()});var L=l().nullable().optional(),R=l(),ro=et.shape.unlinkedKeys.unwrap().element,io=/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/([0-9]+)(?:[/?#].*)?$/i;function ao(e){let t=e.trim(),n=io.exec(t),r=n?`${n[1]}#${n[2]}`:t,i=ro.safeParse(r);return i.success?i.data:null}function z(e,t){return n({type:m(e),...t})}function oo(e={}){return n(e)}var B=l().nullable(),V=c().finite(),so=V.optional(),co=B.optional(),lo=oo(),uo=p(e()),fo=c().int().positive(),po=l().min(1).max(sa),mo=p(a([oo({at:V,tool:l(),detail:l()}),oo({at:V,note:l()})]));g({id:l(),label:l(),command:l(),args:p(l()),resolvable:t().nullable()}).strict();var ho=g({setupWarning:B,lastFailure:g({message:l(),failedAt:V}).nullable()}),go=g({id:R,session:l(),taskTitle:Gi.nullable().optional(),taskTitleIsCustom:t().optional(),path:l(),agent:l(),state:Ki,stateSince:V,skipPerms:t(),saneYolo:t(),worktree:t(),workspace:t().optional(),guarded:t().optional(),guardrailsReleased:t().optional(),resumeSessionId:B,ephemeral:t().optional(),linkedPrs:p($e).optional()}),_o=1e3,vo=RegExp(`^[^\0--]+$`),yo=f({section:u([`committed`,`uncommitted`]),path:l().min(1).max(400).regex(vo),line:c().int().positive(),side:u([`old`,`new`]),note:l().min(1).max(_o)}),bo=4096,xo=bo+2*(Jr+Kr+80*qr),So=g({reason:l(),message:l()}),Co=u([`npm-global`,`npx`,`clone`,`unknown`]),wo={updateAvailable:t(),current:B,latest:B,currentSha:B,latestSha:B,releaseUrl:B,command:l(),flavor:Co,platform:l(),installedBranch:B,upstream:B,isTreeClean:t().nullable(),lastCheckAt:V,channel:ha,behindCount:c().int().nonnegative().nullable(),reason:B,journalSummary:xa.nullable(),applyRefusal:So.nullable()};g(wo);var To=8192,Eo=g({name:l().max(128),stack:l().max(To)}).strict(),Do=[`remove-session`,`kill`,`start-session`,`restart`,`force-restart`,`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 Oo(t){return z(t,{id:R,force:e().optional()})}var ko=Do.map(Oo),Ao=[z(`add-session`,{name:l(),path:l(),repos:p(l()).optional(),agent:l().optional(),dangerouslySkipPermissions:t().optional(),unguarded:t().optional(),runInPlace:t().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:Gi}),z(`link-session-pr`,{id:R,key:ro}),z(`unlink-session-pr`,{id:R,key:ro}),z(`ping`,{requestId:L}),z(`get-settings`,{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:Fr,issueNumber:c().int().positive()}),z(`open-issue-session`,{requestId:L,projectId:l(),repo:Fr,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:ro}),z(`team-review-action`,{...Pe.shape,requestId:L}).refine(Ne,{message:`only discard may omit head`,path:[`head`]}),z(`benchmark-action`,{...qa.shape,requestId:L}),z(`my-pr-merge`,{...pt.shape,requestId:L}),z(`my-pr-keep-mergeable`,{...tt.shape,requestId:L}),z(`my-pr-merge-when-ready`,{...it.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(`send-diff-annotations`,{id:R,annotations:p(yo).min(1).max(50),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(`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:fo.optional(),draft:t().optional()}),z(`plan-decision`,si.shape),z(`set-session-conversation-view`,{id:R,isOn:t()}),z(`set-session-guardrails`,{id:R,isOn:t()}),z(`conversation-approval`,{id:R,requestId:Qi.shape.requestId,decision:ea,answers:$i.optional()}),z(`session-doc-read`,{id:R,path:po,requestId:L}),z(`session-doc-save`,{id:R,path:po,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`,Eo.shape),z(`dismiss`,{id:R,force:e().optional(),expectedState:Ki.optional()}),...ko];d(`type`,Ao),Object.freeze(`snapshot.hooks-report.save-hook-result.add-session-result.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.send-diff-annotations-result.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.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 jo=[z(`snapshot`,{sessions:p(ia),serverBuild:B}),z(`hooks-report`,{requestId:L,ts:so,hooks:p(lo).optional(),builtin:p(lo).optional(),events:p(oo({name:l(),matcher:B,description:l(),http:t().optional()})).optional(),projects:p(oo({id:l(),name:l(),agent:l()})).optional(),limits:oo({maxTimeoutSec:c().int().positive()}).optional(),error:co}),z(`save-hook-result`,{requestId:L,ok:t(),error:co,hook:lo.optional()}),z(`add-session-result`,{requestId:L,ok:t(),error:co,reason:u([`not-git`]).optional()}),z(`delete-hook-result`,{requestId:L,ok:t(),error:co,id:l().optional()}),z(`workspace-repos`,{requestId:L,id:R,ok:t(),repos:p(l()),error:co}),z(`set-workspace-repos-result`,{requestId:L,id:R,ok:t(),error:co}),z(`hooks-updated`,{count:c().int().nonnegative()}),z(`state-change`,{id:R,session:l(),from:Ki,to:Ki,event:l(),timestamp:V,skipPerms:t().optional(),saneYolo:t().optional(),failureReason:l().optional()}),z(`session-added`,go.shape),z(`session-modified`,go.shape),z(`session-removed`,{id:R,session:l()}),z(`session-renamed`,{id:R,oldName:l(),newName:l()}),z(`session-title`,{id:R,taskTitle:Gi.nullable(),isCustom:t()}),z(`session-prs`,{id:R,linkedPrs:p($e)}),z(`session-git`,{id:R,worktree:t()}),z(`session-coherence-hooks`,{id:R,coherenceHooks:ra.nullable()}),z(`session-agents`,{id:R,activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),timestamp:V}),z(`session-wakeup`,{id:R,pendingWakeup:qi.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:Qi.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:oo({stat:l(),diff:l()}),uncommitted:oo({stat:l(),diff:l()}),hasCommits:t()}),z(`session-diff-error`,{id:R,message:l()}),z(`change-map`,{id:R,map:Mi}),z(`send-diff-annotations-result`,{requestId:L,ok:t(),error:co,pending:t().optional()}),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:co}),z(`session-changed`,{id:R}),z(`post-turn-result`,{id:R,mode:l(),skipped:B,filesFixed:c().int().nonnegative(),findings:p(oo({file:l(),rule:l(),count:c().int().nonnegative()})),timestamp:V}),z(`debug-state-response`,{id:R,payload:lo}),z(`session-trace-response`,{id:R,requestId:L,records:p(da),start:c().int().nonnegative(),next:c().int().nonnegative(),reset:t(),path:l()}),z(`session-trace-changed`,{id:R}),z(`session-plan-changed`,fi.shape),z(`session-plan-draft`,pi.shape),z(`session-plan-response`,mi.shape),z(`session-docs-changed`,{id:R,docs:p(ca)}),z(`session-docs-snapshot`,{sessions:i(l(),p(ca))}),z(`session-doc-response`,{requestId:L,id:R,path:l(),ok:t(),text:l().optional(),hash:l().optional(),error:co}),z(`session-doc-save-result`,{requestId:L,id:R,path:l(),ok:t(),hash:l().optional(),conflict:t().optional(),error:co}),z(`session-coherence`,{id:R,...Vi.shape}),z(`session-coherence-snapshot`,{sessions:i(l(),Vi)}),z(`session-coherence-journal-response`,{requestId:L,id:R,ok:t(),entries:p(zi).max(200),error:co}),z(`session-setup-response`,{requestId:L,id:R,ok:t(),setup:ma.optional(),error:co}),z(`notify`,{session:l(),category:l(),message:l(),escalationCount:c().int().nonnegative(),kind:m(`plan`).optional()}),z(`update-status`,wo),z(`update-progress`,{journal:ba}),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:lo,requestId:L}),z(`settings-error`,{message:l(),requestId:L}),z(`settings-updated`,{settings:lo,requestId:L}),z(`pong`,{requestId:L}),z(`agents-listed`,{requestId:L,agents:p(oo({id:l(),label:l(),resolvable:t()}))}),z(`repo-roots-scanned`,{requestId:L,directories:p(oo({root:l(),projects:p(oo({name:l(),path:l(),isGit:t().optional()}))})),suggestions:p(oo({path:l(),label:l(),gitRepoCount:c().int().nonnegative()})).optional(),error:l().optional()}),z(`conversations`,{requestId:L,id:B,current:B.optional(),conversations:p(oo({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:lo}),z(`radar-status`,{ts:V,intervalMinutes:c(),projects:p(lo),investigations:p(lo)}),z(`radar-investigation-activity`,{projectId:a([l(),c()]),issueId:l(),inFlight:m(!0),startedAt:V.nullable(),trail:mo}),z(`radar-investigation-finished`,{projectId:a([l(),c()]),issueId:l(),verdict:l(),summaryLine:B,startedAt:V.nullable(),trail:mo}),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:co,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:co,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),z(`open-team-review-session-result`,{requestId:L,ok:t(),error:co,key:ro.optional(),sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),z(`radar-issue-action-result`,{requestId:L,ok:t(),error:co,status:B.optional()}),z(`team-review-action-result`,{...Fe.shape,requestId:L}),z(`benchmark-action-result`,{...Ja.shape,requestId:L}),z(`my-pr-merge-result`,{...ht.shape,requestId:L}),z(`my-pr-keep-mergeable-result`,{...rt.shape,requestId:L}),z(`my-pr-merge-when-ready-result`,{...at.shape,requestId:L}),z(`github-polling-refresh-result`,{...C.shape,requestId:L}),z(`radar-archive-investigation-result`,{requestId:L,ok:t(),error:co}),z(`telegram-test-result`,{requestId:L,ok:t(),error:co,telegramDelivery:ho.nullable()}),He,Qa,ft,Rn,Gr,z(`usage-sessions`,{ts:V,pricingSource:B,sessions:p(oo({id:R,tokens:c(),costUSD:c(),officialCostUSD:c().nullable().optional()}))}),z(`usage-report`,{requestId:L,ts:so,tz:l().optional(),blockHours:c().optional(),totals:lo.optional(),daily:uo.optional(),models:uo.optional(),sessions:uo.optional(),blocks:uo.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:lo.optional(),scan:lo.optional(),warning:co,error:co}),z(`plan-limits`,{ts:V,fiveHour:e().nullable(),sevenDay:e().nullable(),source:l()}),z(`usage-budget-alert`,{scope:l(),periodKey:l(),threshold:c(),text:l(),ts:V}),z(`visions-findings`,{uri:l(),diagnostics:uo,ts:V}),z(`visions-comments`,{uri:l(),comments:uo,ts:V}),z(`visions-hand`,{uri:l(),hand:B,ts:V}),z(`visions-intent`,{projectId:B,intent:lo,ts:V}),z(`visions-fix`,{uri:l(),fix:lo,ts:V}),z(`visions-snapshot`,{documents:p(lo),intent:lo,fixes:p(lo),ts:V}),z(`ingest-activity`,{events:p(lo),overflow:c().int().nonnegative(),ts:V}),z(`ingest-snapshot`,{events:p(lo),sources:e(),ts:V}),z(`client-trust`,{trust:u([`local`,`remote`])}),z(`shutting-down`),z(`restarting`)],Mo=d(`type`,jo),No=/^\s*at .+:\d+:\d+\)?$|^[^@\s]*@.+:\d+:\d+$/;function Po(e){let t=e.stack??``,n=String(e);return(t.startsWith(n)?t.slice(n.length):t).split(`
|
|
2
|
-
`).filter(e=>No.test(e)).join(`
|
|
3
|
-
`)}function Fo(e){return e==null?null:e instanceof Error?{name:(e.name||`Error`).slice(0,128),stack:Po(e).slice(0,To)}:{name:`NonError`,stack:``}}function Io(e){let t=new Set;return n=>{let r=Fo(n);if(!r)return;let i=`${r.name}\n${r.stack}`;t.has(i)||t.size>=32||e({type:`client-error`,...r})&&t.add(i)}}var Lo=[{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`}],Ro=1/25,zo=3;function Bo(e,t,n){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(n.max,Math.max(n.min,e))}function Vo(e){if(!Array.isArray(e))return[];let t=new Set(Lo.map(e=>e.sprite));return[...new Set(e.filter(e=>typeof e==`string`&&t.has(e)))]}function Ho(e={}){let t=Et,n=Ct,r=wt,i=Bo(e.flyingAnimalsMinGapSeconds,t.flyingAnimalsMinGapSeconds,n),a=Bo(e.flyingAnimalsMaxGapSeconds,t.flyingAnimalsMaxGapSeconds,n),o=Bo(e.flyingAnimalsMinDurationSeconds,t.flyingAnimalsMinDurationSeconds,r),s=Bo(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:Bo(e.flyingAnimalsScale,t.flyingAnimalsScale,Tt),flyingAnimalsOnPhone:typeof e.flyingAnimalsOnPhone==`boolean`?e.flyingAnimalsOnPhone:t.flyingAnimalsOnPhone,flyingAnimalsExcludedSprites:Vo(e.flyingAnimalsExcludedSprites)}}function Uo(e){return Lo.some(t=>!e.includes(t.sprite))}function Wo(e,t=-1,n=Math.random){let r=Lo.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 Go(e,t,n=Math.random,r){let i=r===void 0?Wo(e.flyingAnimalsExcludedSprites,t,n):Lo.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()<Ro?zo:1;return{animalIndex:i,durationSeconds:a,gapMs:o,firstDelaySeconds:s,verticalProgress:c,isRightToLeft:l,arcProgress:(n()*2-1)*u}}function Ko({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 qo=68,Jo=42,Yo=768,Xo=.68,Zo=64,Qo=5,$o=8,es=85;function ts(e,t,n){return Math.min(Math.max(e,t),n)}function ns({viewportWidthPx:e,viewportHeightPx:t,verticalProgress:n,isRightToLeft:r=!1,arcProgress:i=0}){let a=ts(e/Yo,Xo,1),o=(Qo+70*n*n)*t/100,s=Math.max(o,Zo),c=es*t/100,l=ts(i*$o*t/100,Zo-s,c-s),u=-.45*e,d=1.45*e;return{scale:a,spriteWidthPx:qo,spriteHeightPx:Jo,topPx:s,startXpx:r?d:u,endXpx:r?u:d,facing:r?-1:1,arcPx:l}}function rs(e,t){let n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.round(e*n))/n}function is(e,t,n){let r=rs(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 as=`chime`,os=`custom:`,ss=`/custom-sounds`,cs=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`}]}}),ls=Object.freeze(Object.entries(cs).map(([e,t])=>({id:e,label:t.label})));function us(e){return`${os}${e}`}function ds(e){return`${ss}/${encodeURIComponent(e)}`}function fs(e){return e.startsWith(os)&&e.slice(7)||null}function ps(e){let t=(e??[]).map(e=>({id:us(e),label:e}));return[...ls,...t]}function ms(e,t){if(typeof e!=`string`)return as;if(Object.hasOwn(cs,e))return e;let n=fs(e);return n&&(t===null||t.includes(n))?e:as}function hs(e){return typeof e!=`object`||!e||!(`sounds`in e)||!Array.isArray(e.sounds)?[]:e.sounds.filter(e=>typeof e==`string`&&e!==``)}function gs(e,t){try{let n=localStorage.getItem(e);return n===null?t:JSON.parse(n)}catch{return t}}function _s(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}var vs=`glimmervoid-ui-prefs`,ys=`glimmervoid:sidebar-width`,bs=e=>t=>typeof t==`boolean`?t:e,xs=e=>t=>typeof t==`string`?t:e,Ss=e=>typeof e==`string`&&e?e:null,Cs=e=>typeof e==`number`&&Number.isFinite(e)?e:null,ws=e=>t=>Cs(t)??e,Ts=e=>Array.isArray(e)?[...new Set(e.filter(e=>typeof e==`string`&&e!==``))]:[],Es={soundEnabled:bs(!0),soundId:xs(as),themeId:xs(`phyrexian`),flyingAnimalsEnabled:bs(!1),flyingAnimalsMinGapSeconds:ws(Et.flyingAnimalsMinGapSeconds),flyingAnimalsMaxGapSeconds:ws(Et.flyingAnimalsMaxGapSeconds),flyingAnimalsMinDurationSeconds:ws(Et.flyingAnimalsMinDurationSeconds),flyingAnimalsMaxDurationSeconds:ws(Et.flyingAnimalsMaxDurationSeconds),flyingAnimalsScale:ws(Et.flyingAnimalsScale),flyingAnimalsOnPhone:bs(Et.flyingAnimalsOnPhone),flyingAnimalsExcludedSprites:Vo,notificationsEnabled:bs(!0),sessionUsageChips:bs(!1),phoneArrowPad:bs(!1),activeView:xs(`focus`),lastFocusedSessionId:Ss,railWidth:Cs,reviewSidebarExpanded:bs(!1),reviewSidebarView:e=>e===`map`||e===`notes`?e:`diff`,prsQueueWidth:Cs,prsQueueCollapsed:bs(!1),prsMode:e=>e===`mine`?`mine`:`team`,keptProjects:Ts,traceHiddenKinds:Ts,dismissedUpdate:Ss,telemetryNoticeDismissed:bs(!1),radarAttentionAck:xs(``),prsAttentionAck:xs(``),usageAttentionAck:xs(``),visionsAttentionAck:xs(``)};function Ds(e,t,n){e[t]=Es[t](n)}function Os(){let e=gs(vs,{}),t={};for(let n of Object.keys(Es))Ds(t,n,e?.[n]);return t}function ks(e){return Os()[e]}function H(e,t){let n=Os();Ds(n,e,t),_s(vs,n)}var As=()=>ks(`soundEnabled`),js=e=>H(`soundEnabled`,e),Ms=()=>ks(`soundId`),Ns=e=>H(`soundId`,e),Ps=()=>ks(`notificationsEnabled`),Fs=e=>H(`notificationsEnabled`,e),Is=()=>ks(`sessionUsageChips`),Ls=e=>H(`sessionUsageChips`,e),Rs=()=>ks(`phoneArrowPad`),zs=e=>H(`phoneArrowPad`,e),Bs=()=>ks(`themeId`),Vs=e=>H(`themeId`,e),Hs=()=>ks(`flyingAnimalsEnabled`),Us=e=>H(`flyingAnimalsEnabled`,e),Ws=()=>ks(`activeView`),Gs=e=>H(`activeView`,e),Ks=()=>ks(`railWidth`),qs=e=>H(`railWidth`,e),Js=()=>ks(`reviewSidebarExpanded`),Ys=e=>H(`reviewSidebarExpanded`,e),Xs=()=>ks(`reviewSidebarView`),Zs=e=>H(`reviewSidebarView`,e),Qs=()=>ks(`prsQueueWidth`),$s=e=>H(`prsQueueWidth`,e),ec=()=>ks(`prsQueueCollapsed`),tc=e=>H(`prsQueueCollapsed`,e),nc=()=>ks(`prsMode`),rc=e=>H(`prsMode`,e),ic=()=>ks(`keptProjects`),ac=e=>H(`keptProjects`,e),oc=()=>ks(`traceHiddenKinds`),sc=e=>H(`traceHiddenKinds`,e),cc=()=>ks(`dismissedUpdate`),lc=e=>H(`dismissedUpdate`,e),uc=()=>ks(`telemetryNoticeDismissed`),dc=e=>H(`telemetryNoticeDismissed`,e),fc=()=>ks(`radarAttentionAck`),pc=e=>H(`radarAttentionAck`,e),mc=()=>ks(`prsAttentionAck`),hc=e=>H(`prsAttentionAck`,e),gc=()=>ks(`usageAttentionAck`),_c=e=>H(`usageAttentionAck`,e),vc=()=>ks(`visionsAttentionAck`),yc=e=>H(`visionsAttentionAck`,e),bc=()=>ks(`lastFocusedSessionId`),xc=e=>H(`lastFocusedSessionId`,e),Sc=()=>Cs(gs(ys,null)),Cc=e=>_s(ys,Cs(e)),wc=e=>H(`flyingAnimalsMinGapSeconds`,e),Tc=e=>H(`flyingAnimalsMaxGapSeconds`,e),Ec=e=>H(`flyingAnimalsMinDurationSeconds`,e),Dc=e=>H(`flyingAnimalsMaxDurationSeconds`,e),Oc=e=>H(`flyingAnimalsScale`,e),kc=e=>H(`flyingAnimalsOnPhone`,e),Ac=e=>H(`flyingAnimalsExcludedSprites`,e),jc=()=>Ho(Os()),Mc=()=>{let e=Os();return Object.fromEntries(Object.keys(Et).map(t=>[t,e[t]]))},Nc=()=>_s(vs,{...Os(),...Et}),Pc=ns({viewportWidthPx:1440,viewportHeightPx:900,verticalProgress:0});function Fc(e,t=``){let n=M(`div`,`flying-animal-preview ${t}`.trim());n.setAttribute(`aria-hidden`,`true`),n.style.setProperty(`--nyan-width`,`${Pc.spriteWidthPx}px`),n.style.setProperty(`--nyan-height`,`${Pc.spriteHeightPx}px`);let r=M(`div`,`flying-animal-preview-stage`);return r.append(M(`div`,`nyan-trail ${e.trail}`),M(`div`,`nyan-sprite ${e.sprite}`)),n.append(r),n}function Ic(){let e=Wo(jc().flyingAnimalsExcludedSprites);return e===null?null:Lo[e]??null}var Lc=6e4,Rc=18e5,zc=20;function Bc({attempt:e=1,baseMs:t=Lc,maxMs:n=Rc,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,zc)-1),s=Math.min(n,t*2**o);return a===`none`?s:Math.round(a===`half`?s*(.5+.5*i()):i()*s)}var Vc=3e4;function Hc(e,t=Math.random){return Bc({attempt:(typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0)+1,baseMs:500,maxMs:Vc,random:t,jitter:`half`})}var Uc=0,Wc=1;function Gc({hasSocket:e,readyState:t,retryPending:n,connectingAgeMs:r=0}){return n?`retry-now`:e?t===Uc?r>1e4?`connect`:`wait`:t===Wc?`probe`:`connect`:`connect`}function Kc(e){return e===`https:`?`wss:`:`ws:`}function qc(e,t){return`${Kc(e?.protocol)}//${e.host}${t}`}var Jc=``,Yc=null;function Xc(){return Jc}function Zc(){return Jc?Promise.resolve(Jc):Yc||(Yc=fetch(`/control-token`,{credentials:`same-origin`,cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{let t=e?.token;return Jc=typeof t==`string`?t:``,Jc}).catch(()=>``).finally(()=>{Yc=null}),Yc)}function Qc(){Jc=``}function $c(e){return Jc?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(Jc)}`:e}function U(e,t){return typeof e==`string`&&e.trim()?e.trim():t}function W(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}var el=60,tl=3600,nl=24,rl=1024,il=rl*1024,al=il*1024,ol={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`}`}},sl={rounding:`floor`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:0};function cl(e){return String(e).padStart(2,`0`)}function ll(e,t){return Math.max(0,Math[t](e/1e3))}function ul(e,t){let n=ol[t];if(e<el)return n.second(e);let r=Math.floor(e/el);if(r<60)return n.minute(r);let i=Math.floor(r/60);return i<nl?n.hour(i):n.day(Math.floor(i/nl))}function dl(e,t){let n=ll(e,t.rounding);return n<t.justNowBelowSeconds?`just now`:`${ul(n,t.wording)}${t.suffix}`}function fl(e,{smallestUnit:t,dropsZeroRemainder:n}){let r=(e,t,r)=>n&&t===0?e:`${e} ${t}${r}`;if(t===`s`&&e<el)return`${e}s`;if(t===`s`&&e<tl)return r(`${Math.floor(e/el)}m`,e%el,`s`);let i=Math.floor(e/el);return i<60?`${i}m`:r(`${Math.floor(i/60)}h`,i%60,`m`)}function pl(e,{rounding:t,showsHours:n}){let r=ll(e,t),i=cl(r%el),a=Math.floor(r/el),o=Math.floor(r/tl);return!n||o===0?`${a}:${i}`:`${o}:${cl(a%60)}:${i}`}function ml(e,t){return e<rl?`${e} B`:t===`KB`||e<il?`${(e/rl).toFixed(1)} KB`:e<al?`${(e/il).toFixed(1)} MB`:`${(e/al).toFixed(2)} GB`}function hl(e){let t=new Date(e);return`${t.getFullYear()}-${cl(t.getMonth()+1)}-${cl(t.getDate())}`}function gl(e){return`${cl(e.getHours())}:${cl(e.getMinutes())}`}function _l(e){return e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function vl(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 bl({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 xl(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 Sl=`machine-updates`,Cl=`update-actions`,wl={spiking:0,regressed:1,worsened:2,new:3,quiet:4},Tl={spiking:`crit`,regressed:`crit`,worsened:`warn`,new:`warn`,quiet:`dim`},El=99,Dl={ROOT_CAUSE:`root cause`,NEEDS_HUMAN:`needs you`,TRANSIENT:`transient`,FIXED:`fixed`,ERROR:`error`};function Ol(e){return Array.isArray(e)?e.flatMap(e=>{let t=e,n=W(t?.at,0),r=U(t?.note,``);if(r)return[{at:n,note:r}];let i=U(t?.tool,``);return i?[{at:n,tool:i,detail:U(t?.detail,``)}]:[]}):[]}function kl(e){return e.filter(e=>`tool`in e)}function Al(e){return e.detail?`${e.tool} ${e.detail}`:e.tool}function jl(e){let t=Ol(e?.trail),n=t.findLast(e=>`note`in e);if(n)return n.note;let r=kl(t).at(-1);return r?Al(r):``}function Ml(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 Nl(e){let t=U(e?.summaryLine,``);return e?.inFlight===!0&&jl(e)||t}function Pl(e){return{inFlight:e?.inFlight===!0,startedAt:W(e?.startedAt,null),steps:Ol(e?.trail),verdict:U(e?.verdict,``),summaryLine:U(e?.summaryLine,``)}}function Fl(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 Il(e,t){let n=Fl(e,t?.projectId,t?.issueId);return n?(n.inFlight=!0,n.startedAt=W(t?.startedAt,null),n.trail=Ol(t?.trail),!0):!1}function Ll(e){return{inFlight:!1,startedAt:W(e?.startedAt,null),steps:Ol(e?.trail),verdict:U(e?.verdict,``),summaryLine:U(e?.summaryLine,``)}}function Rl(e,t){return!e||!t?!1:String(t.projectId??``)===e.projectId&&String(t.issueId??``)===e.issueId}function zl(e,t){let n=Fl(e,t?.projectId,t?.issueId);if(!n)return!1;let r=Ll(t);return n.inFlight=!1,n.startedAt=r.startedAt,n.trail=r.steps,n.verdict=r.verdict,n.summaryLine=r.summaryLine,!0}function Bl(e){return Dl[typeof e==`string`?e.toUpperCase():``]||String(e??``).toLowerCase()}function Vl(e){return pl(e,{rounding:`round`,showsHours:!1})}function Hl(e,t){return e==null?``:`+${Vl(t-e)}`}function Ul(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 Wl(e,t){if(e.inFlight){let n=kl(e.steps).length,r=`${n} ${n===1?`step`:`steps`}`;return`investigating, ${e.startedAt?`started ${t}`:`starting`}, ${r}`}return e.verdict?`finished: ${Bl(e.verdict)}`:`finished`}function Gl(e){return xl(e,{label:`PostHog monitoring`})}function Kl(e){return W(e.intervalMinutes,null)!==null}function ql(e,t){return e==null||e.configured===!1?`placeholder`:t>0?`ready`:Kl(e)?`placeholder`:`pending`}function Jl(e){return Tl[e??``]||`dim`}function Yl(e){if(typeof e?.lastSeen!=`string`)return null;let t=Date.parse(e.lastSeen);return!Number.isFinite(t)||t<=0?null:t}function Xl(e){let t=U(e?.status,``).trim().toLowerCase();return!t||t===`active`?``:t}function Zl(e){return Array.isArray(e)?e.map(e=>Number(e)).filter(e=>Number.isFinite(e)):[]}function Ql(e){return Array.isArray(e)?e.map(e=>typeof e==`number`?e:Number(e?.occurrences)).filter(e=>Number.isFinite(e)):[]}function $l(e,t=64,n=16){let r=Zl(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 eu(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 tu(e){return e.length===0?`0 polls, 0 to 0 occurrences`:`${e.length} polls, ${Math.min(...e)} to ${Math.max(...e)} occurrences`}function nu(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 ru=3e5;function iu(e){let t=Number(e);return!Number.isFinite(t)||t<=0?ru:t*2}function au(e){let t=e.split(/[\\/]+/).filter(Boolean);return t.length===0?``:t[t.length-1]}function ou(e){let t=au(U(e?.name,``));if(t)return t;let n=e?.projectId;return n==null||n===``?`project`:String(n)}function su(e){let t=U(e,``);return t?(t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(`/`)[0].split(`@`).pop()??``).replace(/:\d+$/,``):``}function cu(e){let t=new Set,n=Array.isArray(e)?e:[];for(let e of n){let n=su(e?.host);n&&t.add(n)}return t.size>1}function lu(e,t,n={}){let r=nu(e?.issues),i=U(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>iu(n.intervalMs)?s:0;return{loud:r.active>0||r.spiking>0||!!i||c>0,counts:r,error:i,staleMs:c}}function uu(e,t,n={}){let r=[],i=[],a=Array.isArray(e)?e:[];for(let e of a){let a=lu(e,t,n),o={project:e,...a};a.loud?r.push(o):i.push(o)}return{loud:r,quiet:i}}function du(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:U(e.issueId,``),projectId:e.projectId??null,projectLabel:U(e.projectName,``),title:U(e.title,`Untitled issue`),summaryLine:U(e.summaryLine,``),url:U(e.url,``),verdict:U(e.verdict,`ERROR`).toUpperCase(),mode:U(e.mode,`investigate`),prUrl:/^https:\/\/[^\s"'<>]{1,300}$/.test(U(e.prUrl,``))?U(e.prUrl,``):``,at:Number.isFinite(Number(e.at))?Number(e.at):0})).sort((e,t)=>t.at-e.at)}function fu(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 pu(e,t){let n=U(e,``);if(n)return/^\d/.test(n)?`v${n}`:n;let r=se(t,{validate:!0});return r?`commit ${r}`:``}function mu(e){return`Update available: ${pu(e?.current,e?.currentSha)} to ${pu(e?.latest,e?.latestSha)}`}function hu({posthog:e}={}){let t=[],n=Array.isArray(e?.projects)?e.projects:[];for(let e of n){let n=U(e?.projectId,U(e?.name,`project`)),r=Array.isArray(e?.issues)?e.issues:[];for(let e=0;e<r.length;e++){let i=r[e],a=U(i?.issueId,U(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 gu(e={}){return vl(hu(e))}function _u(e){return wl[e??``]??El}function vu(e){return Array.isArray(e)?e.map((e,t)=>({issue:e,index:t})).sort((e,t)=>{let n=_u(e.issue?.change)-_u(t.issue?.change);if(n!==0)return n;let r=W(t.issue?.users,0)-W(e.issue?.users,0);if(r!==0)return r;let i=W(t.issue?.occurrences,0)-W(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`}),bu=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-already-checked-out":`The checkout already contains the latest release. Restart to run it.`,"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.`}),xu=Object.freeze([`unsupported-flavor`,`unsupported-platform`]),G=`Not connected to the server. Reconnecting.`,Su=Object.freeze({requested:!1,failure:null});function Cu(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function wu(e,t,n=null){return t===`request-sent`?{requested:!0,failure:null}:t===`request-unsent`?{requested:!1,failure:G}:t===`progress-frame`?Su:t===`error-frame`?e.requested?{requested:!1,failure:n}:e:e.failure===null?e:{requested:e.requested,failure:null}}function Tu(e,t){return t?.state?t.state:e?.journalSummary?.state}function Eu(e,t=null,n=null){return{actions:e,note:t,command:n}}function Du(e){let t=e?.applyRefusal;return t?xu.includes(t.reason):!1}function Ou({status:e,journal:t,request:n=Su}){if(n.failure===`Not connected to the server. Reconnecting.`)return Eu([],G);let r=ku(Tu(e,t),e,n.requested);return n.failure?{...r,note:n.failure}:r}function ku(e,t,n){if(e===`running`||n)return Eu([]);if(e===`staged`)return Eu([`restart`]);if(!t?.updateAvailable)return Eu([`check`]);let r=t.applyRefusal;return r?r.reason===`target-already-checked-out`?Eu([`restart`],r.message):Du(t)?Eu([`check`],r.message,U(t.command,null)):Eu([`check`],r.message):Eu([`update`])}function Au(e){return e?.journalSummary?.state===`staged`||e?.applyRefusal?.reason===`target-already-checked-out`}function ju(e){let t=pu(e?.latest,e?.latestSha)||`A new version`;if(Au(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=mu(e);return!e||e.applyRefusal===void 0||Du(e)?{mode:`command`,text:n}:{mode:`link`,text:n}}function Mu(e){let t=U(e,``);return t?`: ${t}`:``}var Nu=new Set([`idle`,`staged`,`succeeded`,`discarded`]);function Pu(e){return e.state===`failed`?`Update failed${Mu(e.reason)}.`:e.state===`interrupted`?`Update interrupted${Mu(e.reason)}.`:null}function Fu(e){return yu[e]??e}function Iu(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 Lu(e){if(!e||Nu.has(e.state))return null;let t=Iu(e),n=t.stepId!==null&&t.stepId!==e.activeStep?t.stepId:null;return{state:e.state,terminalLine:Pu(e),steps:e.steps.map(e=>({id:e.id,label:Fu(e.id),status:e.status})),outputTail:t.lines,outputStepId:t.stepId,outputStepLabel:n===null?null:Fu(n)}}var Ru=6e5;function zu(e){return e.channel!==`main`||!Number.isInteger(e.behindCount)?``:`${e.behindCount} ${e.behindCount===1?`commit`:`commits`} behind`}function Bu(e,t){let n=Tu(e,t),r=pu(t?.toVersion,t?.toSha)||pu(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=pu(e.current,e.currentSha)||`an unknown version`;if(e.updateAvailable){let t=pu(e.latest,e.latestSha)||`a newer build`,n=zu(e);return{tone:`available`,headline:`Update available: ${i} to ${t}${n?` (${n})`:``}.`}}return U(e.reason,``)?{tone:`unknown`,headline:`Running ${i}. The last check did not finish.`}:{tone:`current`,headline:`Up to date. Running ${i}.`}}function Vu(e){if(!e)return`Update status unavailable.`;let t=pu(e.current,null)||`Unknown version`,n=se(e.currentSha,{validate:!0}),r=U(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 Hu(e){return e?{label:pu(e.latest,e.latestSha)||`Latest target unknown`,behind:zu(e),releaseUrl:U(e.releaseUrl,``)}:{label:`Update status unavailable.`,behind:``,releaseUrl:``}}function Uu({status:e,checkForUpdates:t,now:n,lastAutoCheckAt:r}){if(t===!1||r!==null&&n-r<Ru)return!1;let i=typeof e?.lastCheckAt==`number`?e.lastCheckAt:null;return i===null||n-i>=Ru}function Wu({status:e,checkForUpdates:t,relativeTime:n}){if(t===!1)return`Update checks are off.`;if(!e)return`No update check has run.`;let r=U(e.reason,``);return r?bu[r]??`The last update check failed: ${r}.`:e.flavor===`unknown`?`The install flavor is unknown.`:n}var Gu=null,Ku=null,qu=0,Ju=new Map,Yu=null,Xu=0,Zu=!1,Qu=0,$u=0,ed=null,td=null;function nd(e){td=e}function rd(e){ed=e}function K(e){return Gu?.readyState===WebSocket.OPEN&&(Gu.send(JSON.stringify(e)),!0)}function id(e){return $u+=1,`${e}-${$u}`}function ad(e,t,{timeoutMs:n=5e3}={}){let r=id(e);return new Promise((i,a)=>{let o=setTimeout(()=>{Ju.delete(r),a(Error(`Request timed out`))},n);Ju.set(r,{resolve:i,reject:a,timer:o}),Gu?.readyState===WebSocket.OPEN?Gu.send(JSON.stringify({type:e,requestId:r,...t})):(clearTimeout(o),Ju.delete(r),a(Error(G)))})}function od(e){if(typeof e!=`object`||!e||!(`requestId`in e))return;let t=e.requestId;if(typeof t!=`string`)return;let n=Ju.get(t);n&&(clearTimeout(n.timer),Ju.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 sd(e){for(let t of Ju.values())clearTimeout(t.timer),t.reject(Error(e));Ju.clear()}function cd(){let e=Gu;Gu=null,sd(G),td&&td(`disconnected`,`Reconnecting`),e?.close(),qu=0,ld()}function ld(){if(Ku!==null&&(Ku!==null&&clearTimeout(Ku),Ku=null),!Xc()&&!Zu){Zu=!0,Zc().finally(()=>{Zu=!1,ld()});return}if(Zu)return;let e=Qu>0?`?since=${Qu}`:``,t=qc(location,$c(`/control${e}`)),n=new WebSocket(t);Gu=n,Xu=Date.now();let r=!1;n.addEventListener(`open`,()=>{r=!0,qu=0,td&&td(`connected`,`Connected`)}),n.addEventListener(`message`,e=>{if(Gu!==n)return;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[control] Dropped malformed server JSON message`);return}let r=Mo.safeParse(t);if(!r.success){console.warn(`[control] Dropped invalid server message: ${r.error.issues[0]?.message||`invalid payload`}`),od(t);return}let i=r.data;if(i.type===`snapshot`&&typeof i.seq!=`number`&&(Qu=0),typeof i.seq==`number`){if(i.seq<=Qu)return;Qu=i.seq}let a=typeof i.requestId==`string`?i.requestId:``,o=a?Ju.get(a):void 0;o?(clearTimeout(o.timer),Ju.delete(a),o.resolve(i)):ed&&ed(i)}),n.addEventListener(`close`,()=>{if(Gu!==n)return;Gu=null,sd(G),r||Qc(),td&&td(`disconnected`,`Reconnecting`);let e=Hc(qu);qu+=1,Ku=setTimeout(ld,e)})}async function ud(){if(td&&td(`connecting`,`Connecting`),Yu)return Yu;let e=Gc({hasSocket:!!Gu,readyState:Gu?.readyState??null,retryPending:Ku!==null,connectingAgeMs:Date.now()-Xu});if(e===`retry-now`)return Ku!==null&&clearTimeout(Ku),Ku=null,qu=0,ld(),`reconnecting`;if(e===`connect`)return cd(),`reconnecting`;if(e===`wait`)return`reconnecting`;let t=Gu;return Yu=ad(`ping`,{}).then(()=>(td&&td(`verified`,`Connected`),`ok`)).catch(()=>(Gu===t&&t&&cd(),`dead`)).finally(()=>{Yu=null}),Yu}var dd=`<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
|
-
<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>
|
|
24
|
-
<div class="dialog-advanced-panel" id="add-session-advanced" hidden>
|
|
25
|
-
<label class="dialog-label">
|
|
26
|
-
Name
|
|
27
|
-
<input type="text" class="dialog-input" id="add-session-name" placeholder="my-project" autocomplete="off" spellcheck="false">
|
|
28
|
-
</label>
|
|
29
|
-
<label class="dialog-label" id="add-session-path-label">
|
|
30
|
-
Path
|
|
31
|
-
<input type="text" class="dialog-input" id="add-session-path" placeholder="Full path to the project folder" autocomplete="off" spellcheck="false">
|
|
32
|
-
</label>
|
|
33
|
-
</div>
|
|
34
|
-
<label class="dialog-label dialog-checkbox-label" id="add-session-run-in-place-label" hidden>
|
|
35
|
-
<input type="checkbox" class="dialog-checkbox" id="add-session-run-in-place">
|
|
36
|
-
<span>Run in this folder, no worktree</span>
|
|
37
|
-
<span class="dialog-hint">This folder is not a git repository, 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>
|
|
38
|
-
</label>
|
|
39
|
-
<label class="dialog-label dialog-checkbox-label" id="add-session-skip-perms-label">
|
|
40
|
-
<input type="checkbox" class="dialog-checkbox" id="add-session-skip-perms">
|
|
41
|
-
<span>Skip permission prompts</span>
|
|
42
|
-
<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>
|
|
43
|
-
</label>
|
|
44
|
-
<label class="dialog-label dialog-checkbox-label" id="add-session-unguarded-label">
|
|
45
|
-
<input type="checkbox" class="dialog-checkbox" id="add-session-unguarded">
|
|
46
|
-
<span>Run without guardrails</span>
|
|
47
|
-
<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>
|
|
48
|
-
</label>
|
|
49
|
-
<div class="dialog-error" id="add-session-error"></div>
|
|
50
|
-
<div class="dialog-actions">
|
|
51
|
-
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-cancel">Cancel</button>
|
|
52
|
-
<button type="button" class="btn-dialog btn-dialog-confirm" id="add-session-confirm">Add</button>
|
|
53
|
-
</div>
|
|
54
|
-
`,fd={busy:`text-text-muted`,ok:`text-state-done`,error:`text-state-failed`},q=15e3,pd=`Something went wrong. Details are hidden in streamer mode.`;function md(e,t){return e!==`error`||t.startsWith(`Not connected to the server. Reconnecting.`)?t:document.documentElement.hasAttribute(`data-streamer`)?pd:t}function hd(e=`action-status`){let t=M(`p`,e);return t.setAttribute(`role`,`status`),t.hidden=!0,{element:t,show:(n,r)=>{t.className=`${e} text-xs ${fd[n]}`,t.dataset.tone=n,t.textContent=md(n,r),t.hidden=!1},clear:()=>{t.hidden=!0,t.textContent=``,delete t.dataset.tone}}}function gd(e,t){return K(e)?!0:(t.show(`error`,G),!1)}function _d(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 vd(e,t,n,{busyText:r,timeoutMs:i=q}={}){r&&n.show(`busy`,r);try{let r=await ad(e,t,{timeoutMs:i});return n.clear(),r}catch(e){return n.show(`error`,_d(e,i)),null}}function yd(){let e=document.getElementById(`header-status`),t=document.getElementById(`header-status-text`),n=document.getElementById(`header-status-dismiss`);return!e||!t||!n?null:(n.dataset.wired===void 0&&(n.dataset.wired=``,n.addEventListener(`click`,Sd)),{line:e,text:t})}function bd(e,{hidesInStreamerMode:t=!0}={}){let n=yd();n&&(n.text.textContent=t?md(`error`,e):e,n.line.hidden=!1)}function xd(e){let t=yd();t&&t.text.textContent===e&&Sd()}function Sd(){let e=yd();e&&(e.line.hidden=!0,e.text.textContent=``)}var Cd=`claude-code`,wd=Object.freeze({"claude-code":``,codex:`Codex`,grok:`Grok`});function Td(e){if(typeof e!=`string`)return``;let t=e.trim();return!t||t===`claude-code`?``:wd[t]||t}function Ed(e,{defaultId:t=Cd}={}){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 Dd=`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 Od(e){let t=typeof e==`object`&&e?e:null;return t===null||!Array.isArray(t.agents)||t.error||Ed(t.agents).options.length>0?{canSpawn:!0,guidance:``}:{canSpawn:!1,guidance:Dd}}var kd={agent:`upcoming`,repoRoots:`upcoming`,firstSession:`upcoming`};function Ad(e,t){return e<t?`done`:e===t?`current`:`upcoming`}function jd({agentListing:e,repoRoots:t}){let n=Od(e).canSpawn?t.length===0?2:3:1;return{agent:Ad(1,n),repoRoots:Ad(2,n),firstSession:Ad(3,n)}}function Md(e){return Ed(typeof e==`object`&&e?e.agents:[]).options.map(e=>e.label).join(`, `)}function Nd(e){return e===1?`1 git repo`:`${e} git repos`}function Pd(e,t){let n=t.trim();return!n||e.includes(n)?null:[...e,n]}var Fd=0,Id=`Could not read the current repository roots.`;function Ld(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function Rd(e){let t=await ad(`get-settings`,{});if(t.type!==`settings`)return Id;let n=t.settings.repoRoots;if(!Ld(n))return Id;let r=Pd(n,e);if(!r)return null;let i=await ad(`update-settings`,{settings:{repoRoots:r}});return i.type===`settings-error`?i.message:null}function zd({onAdded:e}){Fd+=1;let t=`repo-roots-adder-path-${Fd}`,n=M(`div`,`repo-roots-adder`),r=M(`div`,`repo-roots-adder-found`),i=M(`span`,`repo-roots-adder-label`,`FOUND ON THIS MACHINE`),a=M(`ul`,`repo-roots-adder-list`);r.append(i,a),r.hidden=!0;let o=M(`label`,`repo-roots-adder-label`,`TYPE A PATH`);o.htmlFor=t;let s=M(`div`,`repo-roots-adder-row`),c=M(`input`,`dialog-input repo-roots-adder-input`);c.id=t,c.type=`text`,c.placeholder=`~/src`,c.autocomplete=`off`,c.spellcheck=!1;let l=M(`button`,`btn-dialog btn-dialog-cancel`,`Add`);l.type=`button`,l.disabled=!0,s.append(c,l);let u=M(`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){if(!d){f(!0),u.textContent=``;try{let n=await Rd(t);if(n){u.textContent=n;return}c.value=``,e()}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()))}),l.addEventListener(`click`,()=>{p(c.value.trim())});function m(e){a.textContent=``;for(let t of e){let e=M(`li`,`repo-roots-adder-suggestion`),n=M(`button`,`btn-dialog btn-dialog-cancel`,`Add`);n.type=`button`,n.setAttribute(`aria-label`,`Add ${t.label}`),n.addEventListener(`click`,()=>{p(t.path)}),e.append(M(`span`,`repo-roots-adder-path`,t.label),M(`span`,`repo-roots-adder-count`,Nd(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 Bd(e){return[...document.querySelectorAll(`.dialog-overlay`)].at(-1)===e}function Vd({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?Bd(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 Hd(e,t){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,t),Gd(e)}function Ud({title:e,dialogClass:t=`dialog`,cancelLabel:n=`Cancel`}){let{overlay:r,dialog:i,close:a}=Vd({dialogClass:t}),o=`dialog-title-${Math.random().toString(36).slice(2)}`,s=M(`h3`,`dialog-title`,e);s.id=o;let c=M(`div`,`dialog-actions`),l=M(`button`,`btn-dialog btn-dialog-cancel`,n);return c.append(l),i.append(s),Hd(i,o),{overlay:r,dialog:i,close:a,titleEl:s,actions:c,btnCancel:l}}function Wd({title:e,message:t,confirmLabel:n=`Confirm`,danger:r=!1,onConfirm:i}){let{dialog:a,close:o,actions:s,btnCancel:c}=Ud({title:e}),l=M(`p`,`dialog-message`,t),u=M(`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 Gd(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 Kd(e){return e instanceof Error?e.message:String(e)}function qd(e,t,n=!1){let r=M(`label`,`dialog-checkbox-label`),i=M(`input`);return i.type=`checkbox`,i.className=`dialog-checkbox`,i.value=t,i.checked=n,r.append(i,M(`span`,null,e)),r}function Jd(e){return e.split(/[\\/]/).filter(Boolean).at(-1)??e}async function Yd(e){let[t,n]=await Promise.all([ad(`get-workspace-repos`,{id:e}),ad(`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:Jd(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 Xd(e){let{overlay:t,dialog:n,close:r,actions:i,btnCancel:a}=Ud({title:`Workspace repositories`}),o=M(`p`,`dialog-message`,`Saving restarts the session and resumes its conversation. A removed repository keeps its workspace branch, so committed work survives.`),s=M(`fieldset`,`dialog-workspace-list`);s.setAttribute(`aria-label`,`Workspace repositories`),s.append(M(`div`,`dialog-hint`,`Loading repositories...`));let c=M(`div`,`dialog-hint`);c.setAttribute(`role`,`status`);let l=M(`div`,`dialog-error`),u=M(`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()),Yd(e).then(e=>{if(t.isConnected){s.textContent=``;for(let t of e)s.append(qd(t.name,t.path,t.isMember));u.disabled=!1}}).catch(e=>{t.isConnected&&(s.textContent=``,l.textContent=`Could not load repositories: ${Kd(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`,ad(`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: ${Kd(e)}`)}).finally(()=>{c.textContent=``,u.disabled=!1}))})}function Zd(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 Qd(e,t){let n=0;for(let r of t)Zd(r,e)&&n++;return n}function $d(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 ef(){let e=[];for(let[,t]of P)e.push(t.card.dataset.session??``);return e}function tf(e){return Qd(e,ef())}function nf(e){return $d(e??``,ef())}var rf=320,af=8e3,of=new Set;function sf(e){of.add(e)}var cf=(e,t)=>{for(let n of of)n(e,t)},lf=window.matchMedia?.(`(prefers-reduced-motion: reduce)`);function uf(e){lf?.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 df(e){if(!e||e.currentState!==j.RUNNING)return;let t=performance.now();e._lastOutputAt=t,!(t-(e._activityGate||0)<rf)&&(e._activityGate=t,e._activity===`quiet`&&(e._activity=`active`,cf(e,`flag`)),cf(e,`beat`))}function ff(e){if(!e||e.currentState!==j.RUNNING)return;let t=performance.now()-(e._lastOutputAt||0)>=af?`quiet`:`active`;e._activity!==t&&(e._activity=t,cf(e,`flag`))}function pf(e,t){e&&(t&&(e._lastOutputAt=performance.now(),e._activityGate=0,e._activity=`active`),t||(e._activity=void 0),cf(e,`flag`))}var mf=new Set([j.RUNNING,j.WAITING,j.STARTING,j.INITIALIZING]),hf=e=>mf.has(e);function gf(e){return hf(e.currentState)?pl(Date.now()-(e.stateSince||Date.now()),{rounding:`floor`,showsHours:!0}):``}var _f=new Set;function vf(e){return _f.add(e),()=>_f.delete(e)}function yf(){for(let[,e]of P)ff(e);for(let e of _f)try{e()}catch{}}setInterval(()=>{document.hidden||yf()},1e3),document.addEventListener(`visibilitychange`,()=>{document.hidden||yf()});function bf(e){return dl(Number(e)||0,{rounding:`round`,wording:`compact`,suffix:``,justNowBelowSeconds:0})}function xf(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?`never`:`${bf(Date.now()-e)} ago`}var Sf=e=>`polled ${xf(e)}`;function Cf(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=Sf){let a={el:e,ts:n,format:r};i(a),t.push(a)},onTick(e){n.push(e)},reset(){t=[],n=[]},ensure(){r||=vf(a)}}}function wf(e,{value:t,disabled:n=!1,selected:r=!1}={}){let i=M(`option`,null,e);return t!=null&&(i.value=t),n&&(i.disabled=!0),r&&(i.selected=!0),i}function Tf(e){return typeof e!=`object`||!e?!1:`skipPermissionsByDefault`in e&&e.skipPermissionsByDefault===!0}function Ef(e){return e.type===`add-session-result`&&e.error?e.error:e.type===`error`?e.message:`The session was not added.`}function Df(){let{dialog:e,close:t}=Vd();e.innerHTML=dd,Hd(e,`add-session-title`);let n=N(e,`#add-session-picker`,`select`),r=dr(e,`#add-session-picker-label`),i=dr(e,`#add-session-workspace-list`),a=N(e,`#add-session-single-mode`,`button`),o=N(e,`#add-session-workspace-mode`,`button`),s=dr(e,`#add-session-agent-label`),c=N(e,`#add-session-agent`,`select`),l=dr(e,`#add-session-repo-roots`),u=dr(e,`#add-session-repo-roots-title`),d=N(e,`#add-session-advanced-toggle`,`button`),f=dr(e,`#add-session-advanced`),p=N(e,`#add-session-name`,`input`),m=N(e,`#add-session-path`,`input`),h=dr(e,`#add-session-path-label`),g=N(e,`#add-session-skip-perms`,`input`),_=N(e,`#add-session-unguarded`,`input`),v=dr(e,`#add-session-run-in-place-label`),y=N(e,`#add-session-run-in-place`,`input`),b=dr(e,`#add-session-error`),x=N(e,`#add-session-cancel`,`button`),S=N(e,`#add-session-confirm`,`button`),ee=!1;function te(e){ee=e,a.setAttribute(`aria-pressed`,String(!e)),o.setAttribute(`aria-pressed`,String(e)),r.hidden=e,i.hidden=!e,d.hidden=e,d.setAttribute(`aria-expanded`,String(e)),f.hidden=!e,h.hidden=e,e&&requestAnimationFrame(()=>p.focus())}a.addEventListener(`click`,()=>te(!1)),o.addEventListener(`click`,()=>te(!0)),d.setAttribute(`aria-expanded`,`false`),d.addEventListener(`click`,()=>{let e=f.hidden;f.hidden=!e,d.setAttribute(`aria-expanded`,String(e)),e&&requestAnimationFrame(()=>p.focus())});let C=zd({onAdded:oe});l.append(C.element);let ne=hd(`dialog-hint`),w=M(`button`,`btn-dialog btn-dialog-cancel`,`Scan again`);w.type=`button`,w.hidden=!0,w.addEventListener(`click`,()=>{oe()});let re=M(`div`,`flex items-center gap-2`);re.append(ne.element,w),l.before(re);function ie(e){n.textContent=``,n.appendChild(wf(`Scan failed`,{disabled:!0,selected:!0})),i.textContent=``,ne.show(`error`,`The project scan failed: ${e}`),w.hidden=!1,w.disabled=!1}function ae(e){let t=e.type===`repo-roots-scanned`;u.textContent=t&&e.directories.length>0?`No projects in your repository roots yet`:`No repository roots yet`,C.setSuggestions(t?e.suggestions??[]:[]),l.hidden=!1}function oe(){return w.disabled=!0,ne.show(`busy`,`Scanning your repository roots`),ad(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q}).then(e=>{if(e.type===`repo-roots-scanned`&&e.error){ie(e.error);return}ne.clear(),w.hidden=!0,n.textContent=``,i.textContent=``,l.hidden=!0,n.appendChild(wf(`-- Select a project --`,{value:``,disabled:!0,selected:!0}));let t=!1,r=e.type===`repo-roots-scanned`?e.directories:[];for(let e of r){if(e.projects.length===0)continue;let r=M(`optgroup`);r.label=e.root;for(let n of e.projects){let e=tf(n.name),a=e>0?`${n.name} (${e} open)`:n.name,o=n.isGit===!1?`${a} (not a git repo)`:a;r.appendChild(wf(o,{value:JSON.stringify({name:n.name,path:n.path,isGit:n.isGit!==!1})})),i.appendChild(qd(n.name,n.path)),t=!0}n.appendChild(r)}t||(n.textContent=``,n.appendChild(wf(`No projects yet`,{disabled:!0,selected:!0})),i.textContent=`No projects yet.`,ae(e))}).catch(e=>{ie(_d(e,q))})}oe(),n.addEventListener(`change`,()=>{try{let e=JSON.parse(n.value);p.value=nf(e.name),m.value=e.path,D(!e.isGit)}catch{}});let se=Cd,T=!1;function ce(e){let t=M(`p`,`dialog-hint dialog-hint-warning`,e);return t.setAttribute(`role`,`status`),b.before(t),t}function E(e){T=!0,S.disabled=!0,ce(e).id=`add-session-agent-guidance`}ad(`list-agents`,{},{timeoutMs:q}).then(e=>{let t=Od(e);t.canSpawn||E(t.guidance);let n=Ed(e.type===`agents-listed`?e.agents:[]);if(se=n.selectedId,n.show){c.textContent=``;for(let e of n.options)c.appendChild(wf(e.label,{value:e.id,selected:e.id===n.selectedId}));s.hidden=!1}}).catch(e=>{ce(`Could not load the agent list (${_d(e,q)}), so the session uses the default agent.`)}),c.addEventListener(`change`,()=>{se=c.value});let le=!1;g.addEventListener(`change`,()=>{le=!0}),ad(`get-settings`,{},{timeoutMs:q}).then(e=>{e.type===`settings-error`?ce(`Could not load your settings (${e.message}). Check Skip permissions yourself.`):le||(g.checked=Tf(e.settings))}).catch(e=>{ce(`Could not load your settings (${_d(e,q)}). Check Skip permissions yourself.`)});function D(e){v.hidden=!e,y.checked=!1}p.addEventListener(`input`,()=>{n.selectedIndex=0}),m.addEventListener(`input`,()=>{n.selectedIndex=0,D(!1)});function O(){if(T)return;let e=p.value.trim(),t=m.value.trim();if(ee){let t=[...i.querySelectorAll(`input:checked`)].map(e=>e.value);if(!e||t.length<2){b.textContent=`Enter a name and select at least two repositories.`;return}let n={name:nf(e),path:t[0],repos:t,dangerouslySkipPermissions:g.checked,unguarded:_.checked};se&&se!==`claude-code`&&(n.agent=se),ue(n);return}if(!e||!t){b.textContent=`Both fields are required. Select a project or use Advanced options.`;return}let n={name:nf(e),path:t,dangerouslySkipPermissions:g.checked,unguarded:_.checked,runInPlace:y.checked};se&&se!==`claude-code`&&(n.agent=se),ue(n)}function ue(e){S.disabled=!0,b.textContent=``,ad(`add-session`,e,{timeoutMs:q}).then(e=>{e.type===`add-session-result`&&e.ok?t():(b.textContent=Ef(e),e.type===`add-session-result`&&e.reason===`not-git`&&(v.hidden=!1))}).catch(e=>{b.textContent=`The session was not added: ${_d(e,q)}`}).finally(()=>{S.disabled=T})}x.addEventListener(`click`,t),S.addEventListener(`click`,O),p.addEventListener(`keydown`,e=>{e.key===`Enter`&&(ee&&O(),ee||m.focus())}),m.addEventListener(`keydown`,e=>{e.key===`Enter`&&O()}),requestAnimationFrame(()=>n.focus())}function Of({issueId:e,issueTitle:t,format:n,content:r,message:i,error:a}){let{dialog:o,close:s,actions:c,btnCancel:l}=Ud({title:`Investigation report`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),u=M(`div`,`dialog-report-meta`,t||e||``),d=null;if(n===`html`&&!a&&!i){let e=M(`iframe`,`dialog-report-frame`);e.setAttribute(`sandbox`,``),e.srcdoc=r||``,d=e}d||=M(`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 kf({issueTitle:e,projectLabel:t,onOpenReport:n}){let{dialog:r,close:i,actions:a,btnCancel:o}=Ud({title:`Investigation`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),s=M(`div`,`dialog-report-meta`,t?`${t}: ${e}`:e),c=M(`p`,`dialog-trail-status`),l=M(`p`,`dialog-trail-summary`),u=M(`ol`,`dialog-trail-steps`),d=M(`p`,`dialog-trail-empty`,`No tool calls yet; the session is reading the issue.`),f=M(`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=Ul(e);if(m!==n){u.textContent=``;for(let t of Ml(e.steps)){let n=M(`li`,`dialog-trail-step dialog-trail-${t.kind}`),r=t.kind===`note`?t.text:`${t.stepCount} ${t.stepCount===1?`step`:`steps`}`;n.append(M(`span`,`dialog-trail-at`,Hl(e.startedAt,t.at)),M(`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=Wl(e,xf(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=vf(()=>{r.isConnected?p?.inFlight&&g(p):v()});return{update(e){p=e,_()},isOpen:()=>r.isConnected,close:()=>{v(),i()}}}function Af(e,t,n){return{body:String(n||`Session needs attention`),tag:`glimmervoid-${e||``}-${t||``}`,renotify:!0,silent:!0}}var jf=4e3;function Mf(e,t){return`glimmervoid-notify-claim-${e||``}-${t||``}`}function Nf(e,t,n,r=jf){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 Pf=`#plan/`;function Ff(e){return`${Pf}${encodeURIComponent(e)}`}function If(e){if(!e.startsWith(Pf))return null;let t=e.slice(6);if(!t||t.includes(`/`))return null;try{return decodeURIComponent(t)||null}catch{return null}}function Lf(){return typeof Notification>`u`?null:Notification}function Rf(){return Lf()!==null}function zf(){let e=Lf();return e?e.permission:`unavailable`}async function Bf(){let e=Lf();if(!e)return`denied`;if(e.permission!=="default")return e.permission;try{return await e.requestPermission()}catch{return e.permission}}function Vf(){return!Rf()&&!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.`:Rf()?zf()===`denied`&&Ps()?`Blocked by the browser. Allow notifications for this site in its site settings.`:null:`This browser does not support desktop notifications.`}function Hf(){return Ps()&&zf()==="default"}function Uf(e=()=>{}){let t=M(`div`,`notification-permission`),n=()=>{let r=Vf();if(t.replaceChildren(),t.hidden=!r&&!Hf(),r){t.append(M(`p`,`notification-permission-hint text-xs text-text-muted`,r));return}let i=M(`button`,`btn-dialog btn-dialog-cancel`,`Enable desktop notifications`);i.type=`button`,i.addEventListener(`click`,()=>{i.disabled=!0,Bf().then(()=>{n(),e()})}),t.append(i)};return n(),{element:t,refresh:n}}var Wf=`Desktop notifications are blocked by the browser, so alerts show only in this tab. Allow notifications for this site to get them again.`,Gf=new Map,Kf=!1;function qf(){Kf||(Kf=!0,bd(Wf,{hidesInStreamerMode:!1}))}function Jf(e,t){let n=Gf.get(e)??new Set;n.add(t),Gf.set(e,n),t.addEventListener(`close`,()=>n.delete(t))}function Yf(e){let t=Gf.get(e);if(t){Gf.delete(e);for(let e of t)e.close()}}function Xf({session:e,category:t,message:n,kind:r,ignoreFocus:i=!1}={}){let a=Lf();if(!a||!Ps()||document.documentElement.hasAttribute(`data-streamer`)||!i&&typeof document<`u`&&typeof document.hasFocus==`function`&&document.hasFocus()||(a.permission===`denied`&&qf(),a.permission!==`granted`)||!Nf(window.localStorage,Mf(e,t),Date.now()))return;let o=typeof e==`string`?e:``,s=P.get(o),c=s?Cr(s):``;try{let i=new a(c||`Glimmervoid`,Af(e,t,n));i.onclick=()=>{window.focus(),r===`plan`&&o&&(window.location.hash=Ff(o)),i.close()},s&&Jf(o,i)}catch{}}function Zf(e,t=null){return`#settings/${encodeURIComponent(e)}${t?`/${encodeURIComponent(t)}`:``}`}function Qf(e){return/^#settings(?:[/?]|$)/.test(e)}function $f(e){let t=e.trim();return t?`#settings?q=${encodeURIComponent(t)}`:`#settings`}function ep(e,t,n){let r=M(`a`,`settings-link`,n);return r.href=Zf(e,t),r}var tp=`↑`,np=`↓`,rp=`←`,ip=`→`,ap=`⌘`,op=`⌥`,sp=Array.from({length:9},(e,t)=>[`Digit${t+1}`,t+1]),cp=[{action:`next-attention`,keyCaptions:[`J`],label:`Jump to the next session needing you`,stepByCode:new Map([[`KeyJ`,0]])},{action:`rail-step`,keyCaptions:[tp,np],label:`Previous / next session in the rail`,stepByCode:new Map([[`ArrowUp`,-1],[`ArrowDown`,1]])},{action:`view-step`,keyCaptions:[rp,ip],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(sp),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 lp(e){return cp.filter(t=>t.unavailablePlatform!==e)}function up(e){return/Mac|iPhone|iPad/.test(e)?`mac`:`other`}function dp(e,t,n){return e.ctrlKey||e.shiftKey?!1:t===`mac`?e.metaKey&&e.altKey===!!n.needsMacOption:e.altKey&&!e.metaKey}function fp(e,t,n){return n.isTerminalFocused&&t!==`mac`&&!!e.isShellChord}var pp=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function mp(e){return pp.has(e.key)?e.key:e.code}function hp(e,t,n={isTerminalFocused:!1}){let r=mp(e);for(let i of lp(t)){let a=i.stepByCode.get(r);if(a!==void 0)return!dp(e,t,i)||fp(i,t,n)?null:{action:i.action,step:a}}return null}function gp(e,t){return t===`focus`||t===`zen`&&e.action===`next-attention`}function _p(e,t){return e===`mac`?t?.needsMacOption?`${ap}${op}`:ap:`Alt`}function vp(e,t){let n=lp(t).find(t=>t.action===e);if(!n)throw Error(`Unknown dashboard shortcut: ${e}`);return n}function yp(e,t){let n=vp(e,t);return[_p(t,n),n.keyCaptions.join(` `)]}function bp(e,t){let[n,r]=yp(e,t);return t===`mac`?`${n}${r}`:`${n}+${r}`}function xp(e){let t=e===`mac`?`Meta`:`Alt`;return`ArrowUp ArrowDown ${t}+ArrowUp ${t}+ArrowDown`}function Sp(e){let t=e===`mac`?ap:`Ctrl`;return[{title:`Dashboard`,items:lp(e).map(t=>({combos:t.keyCaptions.map(n=>[_p(e,t),n]),label:t.label}))},{title:`Navigation`,items:[{combos:[[tp],[np]],label:`Move rail highlight (rail focused)`},{combos:[[rp],[ip]],label:`Switch view tab (tab focused)`}]},{title:`Terminal`,items:[{combos:[[t,`C`]],label:`Copy selection`},{combos:[[t,`V`]],label:`Paste`},{combos:[[t,`Backspace`]],label:`Delete previous word`}]},{title:`General`,items:[{combos:[[`Esc`]],label:`Close dialog / cancel rename`}]}]}var Cp=up(navigator.userAgent);function wp(e,t){t.forEach((t,n)=>{n>0&&e.appendChild(M(`span`,`shortcut-sep`,`+`)),e.appendChild(M(`kbd`,`kbd`,t))})}function Tp(e){let t=M(`span`,`shortcut-keys`);return wp(t,e),t}var Ep=`npm install -g @anthropic-ai/claude-code`,Dp={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>`},Op=null,kp=null,Ap=null,jp=null,Mp={steps:kd,agentSummary:``,repoRoots:[]},Np=0,Pp=hd(`first-run-load-status`),Fp=Uf();function Ip({title:e,state:t,summary:n,badge:r,body:i}){let a=M(`li`,`first-run-step`);a.dataset.state=t,t===`current`&&a.setAttribute(`aria-current`,`step`);let o=M(`div`,`first-run-step-head`),s=M(`span`,`first-run-step-icon`);if(s.innerHTML=Dp[t],o.append(s,M(`span`,`first-run-step-title`,e)),t===`done`&&n&&o.append(M(`span`,`first-run-step-summary`,n)),t===`current`&&r&&o.append(M(`span`,`first-run-step-badge`,r)),a.append(o),t!==`current`)return a;let c=M(`div`,`first-run-step-body`);return c.append(...i()),a.append(c),a}function Lp(){let e=M(`div`,`first-run-step-actions`);return Ap=M(`button`,`btn-dialog btn-dialog-cancel`,`Rescan`),Ap.type=`button`,Ap.addEventListener(`click`,()=>{Vp({rescanAgents:!0})}),e.append(Ap,M(`span`,`first-run-step-hint`,`Any other terminal agent can be added under customAgents.`)),[M(`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.`),M(`code`,`first-run-command`,Ep),e]}function Rp(){let e=jp??zd({onAdded:()=>{Vp({rescanAgents:!1})}});return jp=e,[M(`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 zp(){let e=M(`div`,`first-run-step-actions`),t=M(`button`,`btn-dialog btn-dialog-confirm`,`+ Session`);t.type=`button`,t.addEventListener(`click`,Df);let n=M(`span`,`first-run-step-hint`,`Folders and agents can change later in `);n.append(ep(`machine-sessions`,`repository-roots`,`Settings > Sessions`),`.`),e.append(t,n);let r=M(`p`,`first-run-step-text`,`Run a few at once. When one needs you, `);return r.append(Tp(yp(`next-attention`,Cp)),` jumps straight to it from any tab.`),[M(`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 Bp(){if(!kp)return;let{steps:e,agentSummary:t,repoRoots:n}=Mp;kp.replaceChildren(Ip({title:`1. Agent CLI`,state:e.agent,summary:t,badge:`MISSING`,body:Lp}),Ip({title:`2. Repository roots`,state:e.repoRoots,summary:n.join(`, `),badge:`NEEDED`,body:Rp}),Ip({title:`3. First session`,state:e.firstSession,summary:``,badge:``,body:zp}))}async function Vp({rescanAgents:e}){Np+=1;let t=Np;Ap&&(Ap.disabled=!0);try{let[n,r]=await Promise.all([ad(`list-agents`,e?{rescan:!0}:{},{timeoutMs:q}),ad(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q})]);if(t!==Np)return;let i=r.type===`repo-roots-scanned`,a=i?r.directories.map(e=>e.root):[];Mp={steps:jd({agentListing:n,repoRoots:a}),agentSummary:Md(n),repoRoots:a},Pp.clear(),Bp(),jp?.setSuggestions(i?r.suggestions??[]:[])}catch(e){if(Ap&&(Ap.disabled=!1),t!==Np)return;Pp.show(`error`,`The checklist could not load: ${_d(e,q)} It loads again once the server answers. If it stays like this, check the terminal running Glimmervoid, or run glimmervoid doctor.`)}}function Hp(){if(Op)return Op;let e=M(`section`,`first-run-checklist`);e.setAttribute(`aria-labelledby`,`first-run-title`);let t=M(`h2`,`first-run-title`,`Get to your first session`);t.id=`first-run-title`,kp=M(`ol`,`first-run-steps`);let n=M(`p`,`first-run-footer`,`This list goes away once a session exists. Something off? Run `);return n.append(M(`code`,null,`glimmervoid doctor`),` in a terminal.`),e.append(M(`span`,`first-run-eyebrow`,`FIRST RUN`),t,M(`p`,`first-run-intro`,`Glimmervoid runs the agent CLIs you already have, inside the repositories you point it at. Two checks, then start.`),kp,Pp.element,Fp.element,n),Op=e,Bp(),e}function Up(e,t){if(!t){Op?.parentElement===e&&(Op.hidden=!0);return}let n=Hp(),r=!n.hidden&&n.parentElement===e;n.parentElement!==e&&e.append(n),n.hidden=!1,Fp.refresh(),r||Vp({rescanAgents:!1})}function Wp(){Op&&!Op.hidden&&Op.isConnected&&Vp({rescanAgents:!1})}var Gp=new Set([`http:`,`https:`]);function Kp(e){let t;try{t=new URL(e)}catch{return null}return Gp.has(t.protocol)?t.href:null}var qp=2,Jp=8,Yp=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,Xp=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,Zp=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,Qp=/^:?-{3,}:?$/,$p=/^[A-Za-z0-9_+#.-]{1,32}$/;function em(e){return ei(e,{overlongLine:`reject`})}function tm(e){let t=e.trim().split(/\s+/)[0]??``;return $p.test(t)?t:``}function nm(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function rm(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function im(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function am(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function om(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function sm(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>qp)return-1}return-1}function cm(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=sm(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function lm(e){let t=[],n=om(e,`]`),r=0;for(;r<e.length;){let i=cm(e,r,n);if(i){let e=Kp(i.target.trim());e&&t.push({type:`link`,href:e,children:lm(i.label)}),e||nm(t,i.label),r=i.end;continue}if(e.startsWith("`",r)){let n=am(e,"`",r+1);if(n!==-1){t.push({type:`code`,text:e.slice(r+1,n)}),r=n+1;continue}}let a=rm(e,r);if(a){let n=am(e,a,r+a.length);if(n!==-1){t.push({type:`strong`,children:lm(e.slice(r+a.length,n))}),r=n+a.length;continue}}let o=im(e,r);if(o){let n=am(e,o,r+1);if(n!==-1){t.push({type:`emphasis`,children:lm(e.slice(r+1,n))}),r=n+1;continue}}nm(t,e[r]),r++}return t}function um(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:um(e.children)).join(``)}var dm=`plan-h-`;function fm(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),`${dm}${r===1?n:`${n}-${r}`}`}function pm(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=mm(e);return t.length<2?!1:t.every(e=>Qp.test(e))}function mm(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 hm(e){let t=Xp.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function gm(e,t,n,r){let i=hm(e[t]);if(!i)return null;let a=[],o=i.ordered,s=i.indent,c=t;for(;c<e.length;){let t=hm(e[c]);if(!t||t.indent<s)break;if(t.indent>s){if(r>=Jp)break;let t=gm(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:lm(t.content)}]}),c++}}return{block:{type:`list`,ordered:o,items:a},next:c}}function _m(e,t){let n=e[t]??``;return n.trim()===``||em(n)||Yp.test(n)||Zp.test(n)||hm(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&pm(e[t+1])}function vm(e,t,n){let r=[],i=0;for(;i<e.length;){let a=e[i];if(a.trim()===``){i++;continue}let o=Yp.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:tm(o[2]),text:t.join(`
|
|
55
|
-
`)});continue}let s=em(a);if(s){let e=lm(s.text);r.push({type:`heading`,level:s.level,id:fm(um(e),t),children:e}),i++;continue}if(Zp.test(a)){r.push({type:`rule`}),i++;continue}if(i+1<e.length&&a.includes(`|`)&&pm(e[i+1])){let t=mm(a).map(lm),n=[];for(i+=2;i<e.length&&e[i].includes(`|`)&&e[i].trim()!==``;)n.push(mm(e[i]).map(lm)),i++;r.push({type:`table`,header:t,rows:n});continue}let c=gm(e,i,t,n);if(c){r.push(c.block),i=c.next;continue}if(n<Jp&&/^ {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:vm(a,t,n+1)});continue}let l=[a.trim()];for(i++;i<e.length&&!_m(e,i);)l.push(e[i].trim()),i++;r.push({type:`paragraph`,children:lm(l.join(` `))})}return r}function ym(e){return vm(e.replace(/\r\n?/g,`
|
|
56
|
-
`).split(`
|
|
57
|
-
`),{slugCounts:new Map},0)}function bm(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:um(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function xm(e,t){for(let n of t){if(n.type===`text`){e.append(document.createTextNode(n.text));continue}if(n.type===`code`){e.append(M(`code`,`plan-inline-code`,n.text));continue}if(n.type===`emphasis`){let t=M(`em`);xm(t,n.children),e.append(t);continue}if(n.type===`strong`){let t=M(`strong`);xm(t,n.children),e.append(t);continue}let t=M(`a`,`plan-link`);t.href=n.href,t.target=`_blank`,t.rel=`noopener noreferrer`,xm(t,n.children),e.append(t)}}function Sm(e){let t=M(`li`);return Cm(t,e.children),t}function Cm(e,t){for(let n of t)if(n.type===`heading`){let t=M(`h${n.level}`,`plan-heading`);t.id=n.id,xm(t,n.children),e.append(t)}else if(n.type===`paragraph`){let t=M(`p`,`plan-paragraph`);xm(t,n.children),e.append(t)}else if(n.type===`list`){let t=n.ordered?M(`ol`,`plan-list`):M(`ul`,`plan-list`);t.append(...n.items.map(Sm)),e.append(t)}else if(n.type===`code`){let t=M(`pre`,`plan-code`),r=M(`code`,n.language?`language-${n.language}`:null,n.text);t.append(r),e.append(t)}else if(n.type===`table`){let t=M(`div`,`plan-table-wrap`),r=M(`table`,`plan-table`),i=M(`thead`),a=M(`tr`);for(let e of n.header){let t=M(`th`);xm(t,e),a.append(t)}i.append(a);let o=M(`tbody`);for(let e of n.rows){let t=M(`tr`);for(let n of e){let e=M(`td`);xm(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=M(`blockquote`,`plan-blockquote`);Cm(t,n.blocks),e.append(t)}else e.append(M(`hr`,`plan-rule`))}function wm(e){let t=M(`div`,`plan-document`);return Cm(t,e),t}function Tm(e,{hasComment:t,isComposing:n,onComment:r,attachmentFor:i}){let a=M(`div`,`plan-document`),o=[];for(let s of e){let e=M(`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=M(`div`,`plan-section-head`),l=s.blocks[0],u=l?.type===`heading`;if(u&&Cm(c,[l]),u||(e.id=`plan-introduction`),!t(s)&&!n(s)){let e=M(`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=M(`div`,`plan-section-body`);Cm(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 Em={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function Dm(e){let t=M(`div`,`plan-diff`);for(let n of e.lines){let e=M(`div`,`plan-diff-line plan-diff-${n.kind}`),r=M(`span`,`plan-diff-gutter`,Em[n.kind]);r.setAttribute(`aria-hidden`,`true`),e.append(r,M(`span`,`plan-diff-text`,n.text)),t.append(e)}return t}var Om=`glimmervoid-streamer-mode`,km=new Set,Am=gs(Om,!1)===!0,jm=null;function Mm(e){document.documentElement.toggleAttribute(`data-streamer`,e),jm?.setAttribute(`aria-pressed`,String(e))}Mm(Am);function Nm(){return Am}function Pm(e){if(_s(Om,e),e!==Nm()){Am=e,Mm(e);for(let t of km)t(e)}}function Fm(e){return km.add(e),()=>km.delete(e)}async function Im(e){try{let t=await ad(`update-settings`,{settings:{streamerMode:e}},{timeoutMs:q});return t.type===`settings-error`?String(t.message):(Pm(e),``)}catch(e){return _d(e,q)}}async function Lm(){let e=!Nm();e&&Pm(!0);let t=await Im(e);t&&bd(`${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}`,{hidesInStreamerMode:!1})}function Rm(){Lm()}function zm(e){jm=e,Mm(Nm()),e.addEventListener(`click`,Rm)}var Bm=new Map,Vm=null;function Hm(e){return Bm.get(e)??[]}function Um(e){return Hm(e).length>0}function Wm(e){F(e)?.btnDocs.classList.toggle(`visible`,Um(e))}function Gm(e){let t=Hm(e.sessionId);e.select.replaceChildren(...t.map(t=>{let n=M(`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 Km(e){let t=Hm(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 qm(e,t,n=`quiet`){e.status.textContent=t,e.status.dataset.tone=n}function Jm(e){e.preview.replaceChildren(wm(ym(e.textarea.value)))}function Ym(e,t){Wd({title:e,message:`Your unsaved edits will be lost.`,confirmLabel:`Discard`,danger:!0,onConfirm:t})}function Xm(e,t,n){e.hasUnsavedChanges?Ym(t,n):n()}async function Zm(e,t){try{return{reply:await ad(e,t,{timeoutMs:q}),failureText:null}}catch(e){return{reply:null,failureText:_d(e,q)}}}async function Qm(e,t){e.docPath=t,e.isBusy=!0,e.baseHash=null,e.textarea.readOnly=!0,Gm(e),qm(e,`Loading`),Km(e);let{reply:n,failureText:r}=await Zm(`session-doc-read`,{id:e.sessionId,path:t});if(Vm!==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?(qm(e,i?.error||r||`Could not open this doc`,`warn`),Km(e)):(e.textarea.value=i.text,e.baseHash=i.hash,e.hasUnsavedChanges=!1,e.mode===`preview`&&Jm(e),qm(e,``),Km(e))}async function $m(e){if(e.btnSave.disabled||e.baseHash===null)return;e.isBusy=!0,qm(e,`Saving`),Km(e);let t=e.docPath,n=e.textarea.value,{reply:r,failureText:i}=await Zm(`session-doc-save`,{id:e.sessionId,path:t,text:n,baseHash:e.baseHash});if(Vm!==e||e.docPath!==t)return;e.isBusy=!1;let a=r?.type===`session-doc-save-result`?r:null;!a?.ok||a.hash===void 0?(qm(e,a?.conflict?`The agent changed this file since you opened it. Reload to see its version.`:a?.error||i||`Save failed`,`warn`),Km(e)):(e.baseHash=a.hash,e.hasUnsavedChanges=e.textarea.value!==n,qm(e,e.hasUnsavedChanges?`Unsaved changes`:`Saved`),Km(e))}function eh(e,t){e.mode=t,t===`preview`&&Jm(e),Km(e),t===`edit`&&e.textarea.focus()}function th(e,t){let n=M(`button`,`plan-control ${t}`,e);return n.type=`button`,n}function nh(e){let t=Hm(e)[0];if(!t||Vm)return;let n=()=>Xm(y,`Close this doc?`,()=>y.close()),r=Vd({dialogClass:`doc-editor`,closeOnBackdrop:!1,onEscape:n}),i=`doc-editor-title-${e}`,a=M(`h3`,`doc-editor-title`,t.name);a.id=i;let o=M(`select`,`plan-control doc-editor-picker`);o.setAttribute(`aria-label`,`Doc`);let s=M(`span`,`doc-editor-status`);s.setAttribute(`role`,`status`);let c=th(`Edit`,`doc-editor-mode`),l=th(`Preview`,`doc-editor-mode`),u=th(`Reload`,`doc-editor-reload`),d=th(`Save`,`doc-editor-save`),f=th(`Close`,`doc-editor-close`),p=M(`div`,`doc-editor-modes`);p.append(c,l);let m=M(`div`,`doc-editor-actions`);m.append(s,u,d,f);let h=M(`div`,`doc-editor-header`);h.append(a,o,p,m);let g=M(`textarea`,`plan-editor doc-editor-text`);g.spellcheck=!0,g.setAttribute(`aria-labelledby`,i);let _=M(`div`,`doc-editor-preview`),v=M(`div`,`doc-editor-body`);v.append(g,_),r.dialog.append(h,v),Hd(r.dialog,i);let y={sessionId:e,docPath:t.path,baseHash:null,hasUnsavedChanges:!1,isBusy:!1,mode:Nm()?`preview`:`edit`,title:a,select:o,textarea:g,preview:_,status:s,btnEdit:c,btnPreview:l,btnReload:u,btnSave:d,close:()=>{Vm=null,r.close()}};Vm=y,g.addEventListener(`input`,()=>{y.hasUnsavedChanges||(y.hasUnsavedChanges=!0,qm(y,`Unsaved changes`),Km(y))}),g.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),$m(y))}),o.addEventListener(`change`,()=>{let e=o.value;o.value=y.docPath,Xm(y,`Open another doc?`,()=>{Qm(y,e)})}),c.addEventListener(`click`,()=>eh(y,`edit`)),l.addEventListener(`click`,()=>eh(y,`preview`)),u.addEventListener(`click`,()=>{Xm(y,`Reload this doc?`,()=>{Qm(y,y.docPath)})}),d.addEventListener(`click`,()=>{$m(y)}),f.addEventListener(`click`,n),Qm(y,t.path),y.mode===`edit`&&g.focus()}function rh(e){Vm&&Vm.sessionId===e&&(Gm(Vm),Km(Vm),!Hm(e).some(e=>e.path===Vm?.docPath)&&qm(Vm,`This doc is no longer surfaced, so it cannot be saved.`,`warn`))}function ih(e){Bm.set(e.id,e.docs),e.docs.length===0&&Bm.delete(e.id),Wm(e.id),rh(e.id)}function ah(e){let t=[...Bm.keys()];Bm.clear();for(let[t,n]of Object.entries(e.sessions))Bm.set(t,n);for(let e of new Set([...t,...Bm.keys()]))Wm(e),rh(e)}function oh({dialogClass:e,titleText:t,titleId:n,body:r,onCloseRequest:i}){let a=Vd({dialogClass:e,closeOnBackdrop:!1,onEscape:i}),o=M(`div`,`coherence-journal-header`),s=M(`h3`,`dialog-title`,t);s.id=n;let c=M(`button`,`btn-dialog btn-dialog-cancel`,`Close`);return c.type=`button`,o.append(s,c),a.dialog.append(o,...r),Hd(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 sh({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=id(e),m=oh({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(),K(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 ch=2,lh={needsYou:1,broken:2,askedOfYou:3,waiting:4,settled:5},uh={danger:lh.broken,warn:lh.askedOfYou,wait:lh.waiting,ok:lh.settled,muted:lh.settled};function dh(e){return e?uh[e]:lh.settled}function fh(e){let t=[...e].sort((e,t)=>e.tier-t.tier),n=t.slice(ch);return{visible:t.slice(0,ch),overflowCount:n.length,overflowHoverText:n.map(e=>`${e.text} ${e.hoverText}`).join(`
|
|
58
|
-
`)}}function ph(e){return e.map(e=>[e.key,e.text,e.hoverText,e.look?.icon,e.look?.tone,e.tier].join(`|`)).join(`
|
|
59
|
-
`)}var mh={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 hh(e){return e?.active!==!1||e.reason===na.notInstalled?[]:[{key:`coherence-hooks`,text:`Hooks off`,hoverText:`Coherence hooks not active: ${e.reason}${e.version?` (${e.version})`:``}`,look:{icon:`failed`,tone:`danger`},tier:lh.broken}]}function gh(e){let t=Ni.safeParse(e.kind);return{heading:`${t.success?mh[t.data]:e.kind} | ${e.at??`Unknown time`} | ${e.id}`,text:e.text,detail:e.detail,supersedes:e.supersedes?`Supersedes: ${e.supersedes}`:null}}function _h(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 vh=new Map,yh=new Map,bh=sh({requestPrefix:`coherence-journal`,dialogClass:`dialog coherence-journal-drawer`,titleText:`Coherence journal`,unavailableLabel:`Journal unavailable`,timeoutMs:5e3});function xh(e,t){yh.delete(e),t&&yh.set(e,t),Dh(e)}function Sh(e){vh.delete(e),yh.delete(e);let t=bh.currentPanel();t?.sessionId===e&&t.close()}function Ch(e){let t=vh.get(e.id);t&&t.updatedAt>e.updatedAt||(vh.set(e.id,e),Dh(e.id))}function wh(e){vh.clear();for(let[t,n]of Object.entries(e.sessions))vh.set(t,n);let t=bh.currentPanel();t&&Dh(t.sessionId)}function Th(e){return hh(yh.get(e)??null).map(t=>({...t,onActivate:()=>Oh(e)}))}function Eh(e){return vh.get(e)?.journal.ok===!0}function Dh(e){let t=bh.currentPanel();if(!t||t.sessionId!==e)return;let n=_h(yh.get(e)??null,vh.get(e)??null);t.parts.reading.replaceChildren(...n.lines.map(e=>M(`p`,null,e)))}function Oh(e){let t=M(`div`,`coherence-journal-reading`),n=M(`p`,`coherence-journal-status`,`Loading journal`);n.setAttribute(`role`,`status`);let r=M(`div`,`coherence-journal-entries`);bh.open({sessionId:e,status:n,body:[t,n,r],parts:{reading:t,entries:r},paintBeforeRequest:()=>Dh(e),buildRequest:t=>({type:`session-coherence-journal`,id:e,requestId:t})})}function kh(e){let t=bh.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=gh(e),n=M(`article`,`coherence-journal-entry`);return n.append(M(`h4`,null,t.heading),M(`p`,null,t.text)),t.detail&&n.append(M(`p`,null,t.detail)),t.supersedes&&n.append(M(`p`,null,t.supersedes)),n}))):t.status.textContent=`Journal unavailable: ${e.error||`could not read journal`}`)}var Ah=/\bElectron\/\d/,jh=new Set([`localhost`,`127.0.0.1`]);function Mh(e){return Ah.test(e)}function Nh({userAgent:e,pageHostname:t}){return Mh(e)&&jh.has(t)}function Ph(e){return Kp(e)!==null}var Fh=new Set([0,1]);function Ih({button:e,opensInNewTab:t}){return t&&Fh.has(e)}function Lh(){return Nh({userAgent:navigator.userAgent,pageHostname:location.hostname})}function Rh(e){window.open(e,`_blank`,`noopener,noreferrer`)}async function zh(e){try{let t=await Zc();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 Bh(e){!Lh()||!Ph(e)?Rh(e):zh(e).then(t=>{t||Rh(e)})}function Vh(e){if(e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;t instanceof HTMLAnchorElement&&Ih({button:e.button,opensInNewTab:t.target===`_blank`})&&Ph(t.href)&&(e.preventDefault(),Bh(t.href))}function Hh(e){Lh()&&(e.addEventListener(`click`,Vh,!0),e.addEventListener(`auxclick`,Vh,!0))}var Uh=new Map([[`plan`,`Plan ready`],[`permission`,`Needs permission`]]);function Wh(e){return Uh.get(e)??`Needs input`}function Gh({hasPlan:e,pendingPromptKind:t,hasOpenReview:n,hasApprovedReview:r=!1}){return e&&(n||t===`plan`&&!r)?`plan`:`terminal`}function Kh({hasPlan:e,isBorrowed:t,face:n}){return!e||n===`plan`?`hidden`:t?`face`:`navigate`}var qh=new Map(Object.entries({WAITING:`now`,COMPLETE:`later`,FAILED:`resting`,IDLE:`resting`,RUNNING:`resting`,STARTING:`resting`,INITIALIZING:`resting`,DORMANT:`resting`,DONE:`resting`}));function Jh(e){return(typeof e.state==`string`?qh.get(e.state):void 0)??`resting`}function Yh(e,t){return[...e].map(([e,n])=>{let r=n.currentState||j.DORMANT;return{id:e,ui:n,name:t(n),isDormant:r===j.DORMANT,state:r}})}function Xh(e){return[...e].sort((e,t)=>Number(e.isDormant===!0)-Number(t.isDormant===!0))}function Zh(e,t){return e.length?e[((t==null?-1:e.indexOf(t))+1)%e.length]:null}function Qh(e,t){return t!==null&&e.includes(t)?t:e[0]??null}var $h=new Map([[j.FAILED,`Failed`],[j.COMPLETE,`Finished`]]);function eg(e,t){return $h.get(e)??Wh(t??``)}function tg(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 ng({state:e}={}){return Jh({state:e})!==`resting`}var rg=new Map([[j.WAITING,0],[j.FAILED,1],[j.COMPLETE,2]]);function ig({state:e}){return typeof e==`string`?rg.get(e):void 0}function ag(e){return e.filter(e=>ig(e)!==void 0).sort((e,t)=>(ig(e)??0)-(ig(t)??0)).map(({id:e})=>e)}function og(e){let t={waitingCount:0,finishedCount:0,failedCount:0};for(let n of e||[])n?.state===j.FAILED?t.failedCount++:ng(n||{})&&(n?.state===j.COMPLETE?t.finishedCount++:t.waitingCount++);return t}function sg({waitingCount:e,finishedCount:t,failedCount:n}){return e+n+t}function cg({waitingCount:e,failedCount:t}){return e+t}function lg(e){return sg(e)>0}function ug({waitingCount:e,finishedCount:t,failedCount:n}){let r=[];return e===1&&r.push(`1 NEEDS YOU`),e>1&&r.push(`${e} NEED YOU`),n>0&&r.push(`${n} FAILED`),t>0&&r.push(`${t} FINISHED`),r.length===0?`ALL CLEAR`:r.join(`, `)}var dg=new Map([[`hand`,2]]),fg=1;function pg(e){return e?typeof e==`string`&&dg.get(e)||fg:0}function mg(e){let t=!1,n=0;for(let r of e||[]){let e=pg(r);e<=n||(t=typeof r!=`string`||r,n=e)}return t}var hg=`#c084fc`,gg=Object.freeze({failed:{icon:er[j.FAILED],color:`#ef4444`},waiting:{icon:er[j.WAITING],color:`#f59e0b`}});function _g(e){let{waitingCount:t,failedCount:n}=og(Array.isArray(e)?e:[]);return t>0?`waiting`:n>0?`failed`:`idle`}function vg(e){return ir[e].map(({tag:e,attributes:t})=>`<${e} ${Object.entries(t).map(([e,t])=>`${e}="${t}"`).join(` `)}/>`).join(``)}function yg(e){if(e===`idle`)return`<path d="M10 8 L22 16 L10 24Z" fill="${hg}"/>`;let{icon:t,color:n}=gg[e];return`<g color="${n}" transform="translate(4 4) scale(1.5)">${vg(t)}</g>`}function bg(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"/>${yg(e)}</svg>`}function xg(){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 Sg=xg(),Cg=`idle`;function wg(e){let t=_g([...e.values()].map(({currentState:e})=>({state:e})));t!==Cg&&(Cg=t,Sg.href=`data:image/svg+xml,${encodeURIComponent(bg(t))}`)}function Tg(e,t){return Number.isFinite(e)?Math.round(Math.min(t.maxPx,Math.max(t.minPx,e))):null}function Eg(e,t){return e===`ArrowRight`?t:e===`ArrowLeft`?-t:null}function Dg({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=Tg(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=Eg(e.key,a);if(n===null)return;e.preventDefault();let r=u(t.getBoundingClientRect().width+l*n);r!==null&&s(r)})}var Og=`http://www.w3.org/2000/svg`;function kg(e,t){let n=document.createElementNS(Og,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function Ag(e,t){let n=document.createElementNS(Og,`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 jg=`M4 4L12 12M12 4L4 12`,Mg=`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`,Ng=`M3 4h10M3 8h10M3 12h10`,Pg=`M3 8h0.01M8 8h0.01M13 8h0.01`;function Fg(e){let t=Ag(16,16);return t.classList.add(`line-icon`),t.append(kg(`path`,{d:e,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),t}function Ig(e){let t=Ag(16,16);t.classList.add(`status-icon`),t.dataset.icon=e;for(let n of ir[e])t.append(kg(n.tag,n.attributes));return t}function Lg(e,t){e.dataset.icon!==t&&(e.dataset.icon=t,e.replaceChildren(Ig(t)))}var Rg={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 zg(e,t){let n=Ag(16,16);return n.classList.add(`pr-status-icon`),t&&(n.dataset.tone=t),n.append(kg(`path`,{d:Rg[e],fill:`currentColor`})),n}function Bg(e,{className:t=``,linkUrl:n,ariaLabel:r,onActivate:i}={}){let a=`signal ${t}`.trim(),o=n?fr(a,``,n,e.hoverText):M(`span`,a);return o.title=e.hoverText,r&&o.setAttribute(`aria-label`,r),e.look&&(o.dataset.tone=e.look.tone,o.append(zg(e.look.icon,e.look.tone))),o.append(e.text),i&&Vg(o,i,!n),o}function Vg(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 Hg(e){e.removeAttribute(`tabindex`),e.removeAttribute(`role`)}function Ug(e,t){if(e.closest(`button, a[href]`))for(let e of t){Hg(e);for(let t of e.querySelectorAll(`[role="button"]`))Hg(t)}}function Wg(e){if(e.overflowCount===0)return null;let t=M(`span`,`signal-overflow`,`+${e.overflowCount}`);return t.title=e.overflowHoverText,t}function Gg(e,t,n=e=>Bg(e,e)){let r=ph(t);if(e.dataset.signalSignature===r)return;e.dataset.signalSignature=r;let i=fh(t),a=i.visible.map(n),o=Wg(i);o&&a.push(o),Ug(e,a),e.hidden=a.length===0,e.replaceChildren(...a)}var Kg=[],qg=`plan`,Jg={parked:{text:`PARKED`,hoverText:`Merge parked`,look:{icon:`failed`,tone:`danger`},tier:lh.broken},merging:{text:`MERGING`,hoverText:`Merging`,look:{icon:`queued`,tone:`wait`},tier:lh.waiting}};function Yg(e){Kg.push(e)}function Xg(e){let t=Jg[e];return t?[{...t,key:`merge`}]:[]}function Zg(e){let t=e.closest(`.session-row`),n=t?.dataset.id;t&&n&&Gg(e,[...Xg(t.dataset.merge??``),...Kg.flatMap(e=>e(n))])}function Qg(){for(let e of document.querySelectorAll(`.session-row-signals`))Zg(e)}function $g(e,t=``){let n=M(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-name"></span><span class="session-row-task" 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>`,{row:n,refs:{glyph:dr(n,`.session-row-glyph`),label:dr(n,`.session-row-label`),name:dr(n,`.session-row-name`),task:dr(n,`.session-row-task`),signals:dr(n,`.session-row-signals`),elapsed:dr(n,`.session-row-elapsed`)}}}function e_(e,t){let n=M(`div`,`session-row-item`),r=M(`button`,`session-row-remove`);return r.append(Fg(jg)),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 t_(e,t,n,r=!1,i=null){e.dataset.state=n,e.dataset.prompt=i??``;let{icon:a,label:o,isMonitoring:s}=mr(n,r),c=i===qg?`Plan ready`:o;return e.toggleAttribute(`data-monitoring`,s),Lg(t.glyph,a),t.label.textContent=c,c}function n_(e,t,{ui:n,state:r,name:i,mergeStatus:a}){let o=t_(e,t,r,n.awaitingBackgroundTasks,n.pendingPromptKind);t.name.textContent=i,t.task.textContent=n.taskTitle,t.task.hidden=!n.taskTitle||n.taskTitle===i,e.dataset.merge=a,Zg(t.signals),e.dataset.activity=n._activity||``,t.elapsed.textContent=gf(n);let s=[i,n.taskTitle,o].filter(Boolean).join(`, `);return e.setAttribute(`aria-label`,s),e.title=s,o}var r_={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.`}},i_=(e,t,n=!1)=>({state:e,awaitingBackgroundTasks:n,label:n?`Monitoring`:Yn[e],meaning:t}),a_=Object.freeze([i_(j.DORMANT,`Not started yet.`),i_(j.STARTING,`Setting up the worktree and booting the agent.`),i_(j.RUNNING,`The agent is mid-turn.`),i_(j.RUNNING,`The turn ended but background tasks or sub-agents are still running.`,!0),i_(j.WAITING,`Waiting on a permission prompt or your answer.`),i_(j.COMPLETE,`Finished a turn you have not looked at yet.`),i_(j.IDLE,`Ready for the next prompt.`),i_(j.DONE,`The agent process ended.`),i_(j.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 o_(e,t){let n=M(`section`,`status-legend`),r=M(`dl`,`status-legend-rows`);return r.append(...t),n.append(M(`h2`,`status-legend-title`,e),r),n}function s_(e,t){let n=M(`div`,`status-legend-row`);return n.append(e,M(`dd`,`status-legend-meaning`,t)),n}function c_(){return o_(`Status colors`,a_.map(e=>{let t=M(`dt`,`status-legend-badge`),n=M(`span`,`status-legend-glyph`),r=M(`span`,`status-legend-name`);n.setAttribute(`aria-hidden`,`true`),t.append(n,r);let i=s_(t,e.meaning);return t_(i,{glyph:n,label:r},e.state,e.awaitingBackgroundTasks),i}))}function l_(){return o_(`Pull request icons`,Object.keys(r_).map(e=>{let t=r_[e],n=M(`dt`,`status-legend-badge`);return n.append(zg(e),M(`span`,`status-legend-name`,t.label)),s_(n,t.meaning)}))}var u_=new Set(ic());function d_(){ac([...u_])}function f_(e){if(!e)return;let t=String(e);u_.has(t)||(u_.add(t),d_())}function p_(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),f_(i)}return[...u_].filter(e=>!n.has(e))}function m_(e){return!e||!u_.delete(String(e))?!1:(d_(),!0)}function h_(e,t=`explicit-state`){let n=t===`dormant-fallback`?e||j.DORMANT:e;return n===j.DORMANT?`start-session`:n===j.COMPLETE?`dismiss`:null}function g_({previousState:e,nextState:t,isPhoneLayout:n,isDocumentVisible:r,isDocumentFocused:i,isActiveViewer:a,hasFocusInsideTerminal:o}){return t!==j.COMPLETE||!e||e===j.COMPLETE||!r?!1:n?a:i&&o}function __(e,t){if(!e)return null;let n=t.get(e);return!n||(n.currentState||j.DORMANT)===j.DORMANT?null:e}function v_(e){return String(e).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function y_(e,t,n){let r=M(`button`,`popup-menu-item ${n}`);return r.type=`button`,r.setAttribute(`role`,`menuitem`),r.setAttribute(`aria-label`,e),r.append(M(`span`,`popup-menu-item-label`,e),M(`span`,`popup-menu-item-hint`,t)),r}function b_(e){return e.key===`ArrowDown`||e.key===`ArrowUp`}function x_(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 S_=new WeakMap;function C_(e){let t=S_.get(e);if(t?.element.parentElement===e.card)return t;let n=t??hd(`session-action-status m-0 px-3 py-1`);return e.termWrap.before(n.element),S_.set(e,n),n}function w_(e,t){let n=C_(e);return gd(t,n)?(n.clear(),!0):!1}var T_=!1,E_=new Set;function D_(e){T_=!!e,iv();for(let e of E_)e(T_)}function O_(e){return E_.add(e),()=>E_.delete(e)}function k_(){return T_}var A_=null;function j_(e){A_=e}var M_=null;function N_(e){M_=e}var P_=null;function F_(e){P_=e}var I_=[{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:`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 L_({cls:e,text:t=``,title:n,ariaLabel:r,ariaHidden:i}){let a=M(`span`,e,t);return n&&(a.title=n),r&&a.setAttribute(`aria-label`,r),i&&a.setAttribute(`aria-hidden`,`true`),a}function R_(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 z_(e,t){t&&(e.dataset.saneYolo=``),t||delete e.dataset.saneYolo;let n=e.querySelector(`.perms-badge`);n&&R_(n,t)}function B_(e,t){let n=F(e);n&&z_(n.card,t)}function V_(e,t,n,r={}){let i=n||j.INITIALIZING,a=M(`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.guarded&&(a.dataset.guarded=``),r.guardrailsReleased&&(a.dataset.guardrailsReleased=``),r.ephemeral&&(a.dataset.ephemeral=``),r.path&&(a.dataset.path=String(r.path));let o=M(`div`,`session-card-header`),s=M(`span`,`session-name`,t);s.title=`Double-click or press F2 to rename`,s.tabIndex=0;let c=r.skipPerms?M(`span`,`perms-badge`):null;c&&R_(c,r.saneYolo===!0);let l=M(`span`,`session-task-title`);G_(l,r.taskTitle);let u=M(`div`,`session-actions`),d=M(`div`,`session-overflow`),f=M(`button`,`btn-action btn-session-menu visible`);f.append(Fg(Pg)),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=M(`div`,`popup-menu session-overflow-menu`);p.id=`session-menu-${e}`,p.setAttribute(`role`,`menu`),f.setAttribute(`aria-controls`,p.id);let m=y_(`Restart`,`Keeps this conversation`,`overflow-restart`),h=y_(`Restart fresh`,`Ends this conversation and starts a new one`,`overflow-restart-fresh`),g=y_(`Resume conversation...`,`Pick an earlier conversation`,`overflow-resume`),_=y_(`Edit repositories...`,`Add or remove repositories in this workspace`,`overflow-workspace-repos`),v=y_(`Link pull request...`,`Link or unlink pull requests for this session`,`overflow-link-pr visible`),y=y_(`Conversation view`,`Show this session as messages (experimental)`,`overflow-conversation-view`);y.setAttribute(`role`,`menuitemcheckbox`),y.setAttribute(`aria-checked`,`false`);let b=y_(`Guardrails`,`Limit what this session can read, write and reach`,`overflow-guardrails`);b.setAttribute(`role`,`menuitemcheckbox`),H_(b,a),v.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),U_(e)};let x=y_(`Coherence journal`,`Decisions and notes this session recorded`,`overflow-coherence-journal`);x.setAttribute(`aria-haspopup`,`dialog`);let S=()=>x.classList.toggle(`visible`,M_?.isReadable(e)===!0);f.onclick=S,f.onkeydown=S,x.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),M_?.open(e)};let ee=y_(`Session setup`,`MCP servers, plugins and hooks this session loaded`,`overflow-session-setup visible`);ee.setAttribute(`aria-haspopup`,`dialog`),ee.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),P_?.(e)},p.append(m,h,g,_,y,b,x,ee,v),d.append(f,p);let te=M(`button`,`btn-action btn-debug`);te.append(Fg(Mg)),te.title=`Debug state`,te.setAttribute(`aria-label`,`Debug session state`);let C=M(`button`,`btn-action btn-trace`);C.append(Fg(Ng)),C.type=`button`,C.title=`Trace`,C.setAttribute(`aria-label`,`Trace`);let ne=M(`button`,`btn-action btn-remove visible`);ne.append(Fg(jg)),ne.type=`button`,ne.title=`Remove session`,ne.setAttribute(`aria-label`,`Remove session`);let w=M(`button`,`btn-action btn-face-plan`,`Plan`);w.type=`button`,w.title=`Show plan`;let re=M(`button`,`btn-action btn-face-plan btn-docs`,`Docs`);re.type=`button`,re.title=`Open docs the agent surfaced`,u.append(re,w,te,C,d,ne);let ie=M(`div`,`session-card-tags`),ae=I_.map(e=>L_(e));c&&ae.push(c),ie.append(...ae),o.append(s,l,ie,u);let oe=M(`div`,`terminal-wrap`);return a.append(o,oe),{card:a,header:o,nameEl:s,taskTitleEl:l,btnRestart:m,btnRestartFresh:h,btnSessionMenu:f,btnResume:g,btnWorkspaceRepos:_,btnConversationView:y,btnGuardrails:b,btnTrace:C,btnRemove:ne,btnPlan:w,btnDocs:re,btnDebug:te,sessionMenu:p,termWrap:oe}}function H_(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 U_(e){let{dialog:t,close:n,actions:r,btnCancel:i}=Ud({title:`Link pull request`}),a=M(`p`,`dialog-message`,`Paste a GitHub pull request URL or owner/repo#number.`),o=M(`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=M(`div`,`dialog-error`);s.setAttribute(`role`,`alert`);let c=M(`div`,`session-pr-chips dialog-linked-prs`);c.hidden=!0,A_?.(c,e);let l=M(`button`,`btn-dialog btn-dialog-confirm`,`Link`);l.type=`button`,r.append(l),t.append(c,a,o,s,r);function u(){let t=ao(o.value);t?K({type:`link-session-pr`,id:e,key:t})?n():s.textContent=G: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 W_(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 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&&w_(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=C_(e);function s(t){return e.card.dataset.ephemeral===void 0?Hi.test(t)?[...P.values()].some(n=>n!==e&&n.card.dataset.session===t)?`Session "${t}" already exists.`:``:Ui:`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()):w_(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=M(`button`,`debug-close`);return e.type=`button`,e.title=`Close`,e.setAttribute(`aria-label`,`Close debug overlay`),e.append(Fg(jg)),e}function Z_(e){return e?_l(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=v_([e.signal,e.source].filter(Boolean).join(`/`));return e.action===`transition`?`${t} ${n} → <span class="debug-label">${v_(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">${v_(e.decision||`?`)}</span>${i}${n}`}if(e.kind===`notify`){let n=v_(e.category||e.to||`?`);return e.category?`${t} notify <span class="debug-label">${n}</span>: fired`:`${t} notify ${n}: <span class="debug-dim">silent (${v_(e.reason||``)})</span>`}return e.kind===`notify-state`?`${t} notify ${v_(e.category||`?`)}: <span class="debug-dim">${v_(e.from||`?`)} → ${v_(e.to||`?`)}</span>`:`${t} <span class="debug-dim">${v_(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">${v_(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">${v_(n.join(`/`))}</span>`:``;r+=`<div class="debug-field"><span class="debug-dim">${Z_(e.timestamp)}</span> ${v_(e.from)} → ${v_(e.to)} <span class="debug-label">${v_(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?`${v_(a.signal)} (${v_(a.source||`?`)}${a.confidence?`/${v_(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">${v_(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">${v_(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)}),K({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`,T_),e.btnTrace.classList.toggle(`visible`,T_),!T_&&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&&K({type:`debug-state`,id:e})}function sv(){return Ar.snapshot().selectedSessionId}function cv(e){Ar.dispatch(`selectSession`,e)}function lv(e){return Ar.subscribe((t,n)=>{n.includes(`selectedSessionId`)&&e(t.selectedSessionId)})}function uv(e,t=`explicit-state`){let n=P.get(e);if(!n)return null;let r=h_(n.currentState,t);return r&&w_(n,{type:r,id:e}),n}function dv(e,{rememberFocus:t=!0}={}){cv(e),t&&xc(e)}function fv(){return __(bc(),P)}function pv(e=Cr){return Yh([...P],e)}function mv(e,t){let n=P.get(e);return n?w_(n,t):K(t)?!0:(bd(G),!1)}async function hv(e,t){try{let n=await ad(`add-session`,{name:nf(t),path:e},{timeoutMs:q});if(n.type===`add-session-result`&&n.ok)return;bd(Ef(n))}catch(e){bd(`The session was not added: ${_d(e,q)}`)}}function gv(e,t){e&&hv(e,t)}function _v(e,t){let n=P.get(e);if(!n)return;let r=t||n.card?.dataset.merge||`none`,i=r===`pending-review`||r===`parked`;Wd({title:`Remove Session`,message:i?`"${Cr(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 "${Cr(n)}"?`,confirmLabel:i?`Discard & Remove`:`Remove`,danger:!0,onConfirm:()=>{w_(n,{type:`remove-session`,id:e})}})}var vv=Object.freeze({[j.IDLE]:`compaction_restore_idle`,[j.COMPLETE]:`compaction_restore_complete`,[j.WAITING]:`compaction_restore_waiting`});function yv(e){return Object.values(vv).some(t=>t===e)}var bv=new Set([`claude-code`,`codex`]),xv=`\x1B`,Sv=`${xv}[200~`,Cv=`${xv}[201~`,wv=400,Tv=4e3,Ev=/^\[Image: source: (.+)\]$/,Dv=`uploads`,Ov=new Set([`Agent`,`Task`]),kv=/^Async agent launched/,Av=`<task-notification>`,jv=/<tool-use-id>([^<]+)<\/tool-use-id>/,Mv=/<task-id>([^<]+)<\/task-id>/,Nv=/agentId: ([\w-]+)/,Pv=/<status>([^<]+)<\/status>/,Fv=6e5;function Iv(e){return typeof e==`string`&&bv.has(e)}function Lv(e,t){if(!Iv(e))return null;let n=t.replace(/\r\n?/g,`
|
|
60
|
-
`).trim();return n?[{data:n.includes(`
|
|
61
|
-
`)?`${Sv}${n}${Cv}`:n,delayBeforeMs:0},{data:`\r`,delayBeforeMs:wv}]:null}function Rv(e){return Iv(e)?[{data:`\r`,delayBeforeMs:0}]:null}function zv(e){return Iv(e)?[{data:xv,delayBeforeMs:0}]:null}function Bv(e,t){return e===j.WAITING&&typeof t==`string`&&t!==``}function Vv(e,t){return e.uuid??`${e.kind}-${e.ts}-${t}`}function Hv(e){return typeof e.agentId==`string`}function Uv(e){let t=Ev.exec(e.trim());if(!t)return null;let[n,r,i]=t[1].split(/[\\/]/).slice(-3);return n!==Dv||!r||!i?null:`/upload/${encodeURIComponent(r)}/${encodeURIComponent(i)}`}function Wv(e,t){let n=e[e.length-1];n?.kind===`user`&&n.imageUrls.push(t)}function Gv(e){if(!e||typeof e!=`object`)return`Agent`;let t=e.description;return typeof t==`string`&&t.trim()?t.trim():`Agent`}function Kv(e,t,n){if(!e)return;if(t.isError){e.state=`failed`;return}if(!kv.test(t.content)){e.state=`done`;return}let r=Nv.exec(t.content)?.[1];r&&n.set(r,e)}function qv(e){return e.trimStart().startsWith(Av)}function Jv(e,t,n){let r=jv.exec(e)?.[1];if(r)return t.get(r);let i=Mv.exec(e)?.[1];return i?n.get(i):void 0}function Yv(e,t,n){let r=Jv(e,t,n);r?.state===`running`&&(r.state=Pv.exec(e)?.[1]===`completed`?`done`:`failed`)}function Xv(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=Vv(e,o);if(!Hv(e)){if((e.kind===`prompt`||e.kind===`expansion`)&&qv(e.text))Yv(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(`
|
|
62
|
-
`)){let e=Uv(n);e&&Wv(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),!Ov.has(e.name))return;let o={key:l,description:Gv(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),Kv(i.get(e.toolUseId),e,a)}}}),s(),t}function Zv(e){return e.flatMap(e=>e.kind===`work`?e.agentRuns.filter(e=>e.state===`running`):[])}function Qv(e){let t=e.at(-1);return t?.kind===`work`?t:null}function $v(e){return new Set(e.flatMap(e=>e.kind===`user`?[e.key]:[]))}function ey(e,t,n){if(n-e.sentAt>Fv)return!0;let r=e.text.trim();return t.some(t=>t.kind===`user`&&!e.userKeysAtSend.has(t.key)&&t.text.includes(r))}function ty(e){return`${e} ${e===1?`agent`:`agents`}`}function ny(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 ry(e){let t=e.agentRuns.length>0?`, ${ty(e.agentRuns.length)}`:``;return`Worked ${ny(e.endedAt-e.startedAt)}${t}`}function iy(e,t){let n=t>0?`${ty(t)} running`:``;return e===null?n:n?`Working ${ny(e)}, ${n}`:`Working ${ny(e)}`}function ay(e){return e.length<=Tv?e:e.slice(e.length-Tv)}var oy=`(max-width: 768px)`,sy=`(pointer: coarse)`;function cy({coarse:e,narrowWidth:t}={}){return e===!0&&t===!0?`phone`:`desktop`}var ly=window.matchMedia?.(sy),uy=window.matchMedia?.(oy);function dy(){return cy({coarse:!!ly?.matches,narrowWidth:!!uy?.matches})}function fy(e){document.documentElement.dataset.layout!==e&&(document.documentElement.dataset.layout=e)}function py(){Ar.subscribe((e,t)=>{t.includes(`layout`)&&fy(e.layout)});let e=dy();fy(e),Ar.dispatch(`setLayout`,e);let t=()=>Ar.dispatch(`setLayout`,dy());return ly?.addEventListener?.(`change`,t),uy?.addEventListener?.(`change`,t),e}function my(){return Ar.snapshot().layout===`phone`}function hy(e){return Ar.subscribe((t,n)=>{n.includes(`layout`)&&e(t.layout)})}var gy=`CommitMono`,_y=[400,700].map(e=>`${e} 14px ${gy}`),vy=`monospace`;function yy(e){return e.trim().replace(/^['"]|['"]$/g,``)}function by(e,t){let n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),r=t?n:n.filter(e=>yy(e)!==gy);return r.length>0?r.join(`, `):vy}function xy(e,t,n){return Promise.all(t.map(t=>e.load(t))).then(n,()=>void 0)}function Sy(e,t){for(let n of e)n.term&&(n.term.options.fontFamily=t,n._syncGrid?.())}function Cy(){return document.fonts?_y.every(e=>document.fonts.check(e)):!1}function wy(){return by(getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`),Cy())}function Ty(e){document.fonts&&xy(document.fonts,_y,e)}var Ey=6,Dy=262144,Oy=16384,ky=()=>{};function Ay(e,t){if(t.length<=Oy)e.push(t);else for(let n=0;n<t.length;n+=Oy)e.push(t.slice(n,n+Oy))}function jy({budget:e=Ey,maxChunkBytes:t=Dy,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)Ay(l,e),m+=e.length,a.readIdx++;else{m===0&&(Ay(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,ky);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 My=jy(),Ny=.3,Py=null;function Fy(){return ps(Py)}function Iy(e){return ms(e,Py)}async function Ly(){try{let e=await fetch(ss,{credentials:`same-origin`,cache:`no-store`});e.ok&&(Py=hs(await e.json()))}catch{}}function Ry(){let e=new AudioContext;return e.state===`suspended`&&e.resume(),e}function zy(e,t){setTimeout(()=>e.close().catch(()=>{}),(t+.1)*1e3)}function By(e){Vy(cs[e]??cs.chime)}function Vy(e){let t=Ry(),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)}zy(t,i)}async function Hy(e){try{let t=await fetch(ds(e),{credentials:`same-origin`});return t.ok?await t.arrayBuffer():null}catch{return null}}async function Uy(e){let t=await Hy(e);if(!t)return!1;let n=Ry();try{let e=await n.decodeAudioData(t),r=n.createGain();r.gain.value=Ny,r.connect(n.destination);let i=n.createBufferSource();return i.buffer=e,i.connect(r),i.start(),zy(n,e.duration),!0}catch{return n.close().catch(()=>{}),!1}}var Wy=[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 Gy(){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<Wy.length;i++){let a=r+i*n,o=e.createOscillator(),s=e.createGain();o.type=`square`,o.frequency.value=Wy[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+Wy.length*n;t.gain.setValueAtTime(.05,i-.05),t.gain.exponentialRampToValueAtTime(.001,i),setTimeout(()=>e.close().catch(()=>{}),(i-r+.1)*1e3)}catch{}}function Ky(){try{By(as)}catch{}}function qy(e){try{let t=Iy(e),n=fs(t);if(!n){By(t);return}Uy(n).then(e=>{e||Ky()})}catch{}}var Jy={"--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)`},Yy={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`},Xy={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`,...Jy,"--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:{...Yy,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`,...Jy,"--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:{...Yy,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`,...Jy,"--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:{...Yy,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`}}},Zy=`phyrexian`,Qy=null;function $y(e){let t=Xy[e];if(!t)return;let n=Qy;Qy=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`&&Gy()}function eb(e){document.documentElement.toggleAttribute(`data-show-usage`,e)}function tb(e){document.documentElement.toggleAttribute(`data-arrow-pad`,e)}function nb(){let e=Xy[Qy||Zy];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 rb(){return Object.entries(Xy).map(([e,t])=>({id:e,label:t.label}))}var ib=c().int().min(1).max(500),ab=c().int().min(1).max(200);d(`type`,[g({type:m(`input`),data:l()}),g({type:m(`claim`),cols:ib,rows:ab}),g({type:m(`unview`)})]);var ob=g({type:m(`pty-size`),cols:ib,rows:ab,seq:c().int().nonnegative()}),sb=`history`;u([`screen`,`deep`]);function cb(e){try{return JSON.parse(e)}catch{return null}}function lb(e){let t=ob.safeParse(cb(e));return t.success?t.data:null}function ub(e,t){return!e||!t?!1:e.cols===t.cols&&e.rows===t.rows}function db(e){return!e||!Number.isInteger(e.cols)||!Number.isInteger(e.rows)?!1:e.cols>0&&e.rows>0}function fb(e){return{cols:Math.min(Math.max(e.cols,1),500),rows:Math.min(Math.max(e.rows,1),200)}}function pb({authoritative:e,isActiveViewer:t,lastClaim:n}){return!(t&&ub(e,n))}function mb({isDocumentVisible:e,isDocumentFocused:t,hasFocusInsideCard:n,hasWindowBlurredSinceFocus:r,isPhoneLayout:i}){return e?i||t?!0:n&&!r:!1}function hb({isDocumentVisible:e,isBorrowedCard:t,isTerminalFaceShown:n}){return!e||!t||!n}function gb({viewportTopLine:e,scrollbackLineCount:t,isDeepHistoryLoadedOrPending:n}){return e===0&&t>0&&t<5e3&&!n}function _b(e,t){let n=`/terminals/${encodeURIComponent(e)}`;return t?`${n}?${sb}=deep`:n}function vb({authoritative:e,isActiveViewer:t,isDocumentEngaged:n,isDataWsOpen:r,lastClaim:i}){return!t||!n||!r?`none`:pb({authoritative:e,isActiveViewer:t,lastClaim:i})?`rebid`:`resync`}function yb({isActiveViewer:e,lastClaim:t,owedClaim:n}){return e?n??t:null}function bb({authoritative:e,applied:t,proposal:n,isActiveViewer:r,isDataWsOpen:i,lastClaim:a}){let o=!!e&&!ub(e,t),s=db(n)?fb(n):null,c=r&&!!s&&!ub(s,a);return{resizeTo:o?e:null,owedClaim:c?s:null,keepsPendingSettle:r&&!s,sendUnview:!r&&i&&!!a,isFollowing:pb({authoritative:e,isActiveViewer:r,lastClaim:a})}}function xb(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?new TextDecoder().decode(e):null}function Sb(e){let t=xb(e);return t===null?null:lb(t)}function Cb(e,t){if(typeof e==`string`)return{kind:`bytes`,data:e};let n=Sb(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 wb=``,Tb=`\x1B`,Eb=`\r`,Db=new Map([[`deleteContentBackward`,wb],[`deleteByComposition`,wb],[`deleteCompositionText`,wb],[`deleteWordBackward`,Tb],[`deleteSoftLineBackward`,Tb],[`deleteHardLineBackward`,Tb]]);function Ob(e){return Db.get(e)??``}var kb=new Set([`insertFromPaste`,`insertFromPasteAsQuotation`,`insertFromDrop`,`insertFromYank`,`historyUndo`,`historyRedo`]);function Ab(e){return typeof e!=`string`||e===``||!kb.has(e)}function jb(e){return e?e.keyCode===229||e.key===`Process`:!1}function Mb(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 wb.repeat(n.length-a)+r.slice(a).join(``).replace(/\r\n|\n|\r/g,Eb)}var Nb=/https?:\/\/[^\s<>"']+/g,Pb=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`'`,`"`]),Fb={")":`(`,"]":`[`,"}":`{`};function Ib(e,t){let n=0;for(let r of e)r===t&&n++;return n}function Lb(e){for(;;){let t=e[e.length-1];if(t===void 0)return e;if(Pb.has(t)){e=e.slice(0,-1);continue}let n=Fb[t];if(n&&Ib(e,n)<Ib(e,t))e=e.slice(0,-1);else return e}}function Rb(e){let t=[];for(let n of e.matchAll(Nb)){let e=Lb(n[0]);e.length<=8||t.push({start:n.index,end:n.index+e.length,url:e})}return t}var zb=50;function Bb(){return{activate(e,t){Bh(t)},allowNonHttpProtocols:!1}}function Vb(e,t){let n=t-1;for(;n>0&&e.getLine(n)?.isWrapped&&t-1-n<zb;)n--;let r=t-1;for(;e.getLine(r+1)?.isWrapped&&r-(t-1)<zb;)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 Hb(e){return e.registerLinkProvider({provideLinks(t,n){let r=e.buffer?.active;if(!r)return n(void 0);let{text:i,cellAt:a}=Vb(r,t),o=[];for(let{start:e,end:t,url:n}of Rb(i)){let r=a[e],i=a[t-1];r&&i&&o.push({range:{start:r,end:i},text:n,activate(e,t){Bh(t)}})}n(o.length?o:void 0)}})}var Ub=`(?:password|passwd|pwd|token|api[_-]?key|secret|credential|auth[_-]?token|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|connection[_-]?string)`,Wb=`(?:"[^"\\r\\n]*"|'[^'\\r\\n]*'|[^\\s\\r\\n]+)`,Gb=`[^\\S\\r\\n]`,Kb=`${Ub}${Gb}*(?:=>|[:=])${Gb}*`,qb=`[?&][A-Za-z0-9_.-]*`,Jb=`[^\\r\\n;&|]{0,200}?`,Yb=`(?:mysql|mysqldump|mysqladmin|mysqlshow|mariadb|mariadb-dump)`,Xb=RegExp(`(${Kb})${Wb}`,`gi`),Zb=RegExp(`(\\bBearer${Gb}+)[A-Za-z0-9._~+/=-]{8,}`,`gi`),Qb=[/\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],$b=[RegExp(`((?:^|\\s)--?${Ub}${Gb}+)${Wb}`,`gi`),RegExp(`((?:^|\\s)-(?:pwd|pw)(?![a-z])${Gb}*=?${Gb}*)${Wb}`,`g`),RegExp(`(-AsPlainText${Gb}+)${Wb}`,`gi`),RegExp(`((?:^|\\s)setx${Gb}+[^\\s\\r\\n]*${Ub}[^\\s\\r\\n]*${Gb}+)${Wb}`,`gi`)],ex=[RegExp(`(\\bauthorization${Gb}*:${Gb}*Basic${Gb}+)[A-Za-z0-9+/=_-]{8,}`,`gi`),RegExp(`(\\bdocker${Gb}+login\\b${Jb}${Gb}-p(?:${Gb}+|=))${Wb}`,`gi`),RegExp(`(\\bcurl\\b${Jb}${Gb}(?:--user|-u)(?:${Gb}+|=)[^\\s:\\r\\n]+:)${Wb}`,`gi`),RegExp(`(\\b${Yb}\\b${Jb}${Gb}-p)${Wb}`,`g`),/\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)[^\s@/]+(?=@)/gi];[...$b,...ex];var tx=[/-----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],nx=RegExp(`(${qb}(?:${Ub}|_key)=)[^&#\\s]+`,`gi`),rx=[Xb,RegExp(`(\\b(?=[A-Z0-9_]*(?:SECRET|TOKEN|KEY|PASSWORD))[A-Z][A-Z0-9_]*=)${Wb}`,`g`)],ix=[Zb,...$b,...ex,...Qb,...tx];function ax(e,t){return[...e.matchAll(t)].map(e=>({matchStart:e.index,valueStart:e.index+(e[1]??``).length,end:e.index+e[0].length}))}function ox(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 sx(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 cx(e){let t=ax(e,nx);return sx([...t,...rx.flatMap(n=>ox(ax(e,n),t)),...ix.flatMap(t=>ax(e,t))].map(e=>({start:e.valueStart,end:e.end})))}var lx=`#808080`,ux=new WeakMap;function dx(e,t,n){return`${e}:${t}:${n}`}function fx(e){return dx(e.marker.line,e.x,e.width)}function px(e,t){let n=t;for(;n>0&&t-n<63&&e.getLine(n)?.isWrapped;)n--;return n}function mx(e,t){let n=t;for(;n-t<63&&e.getLine(n+1)?.isWrapped;)n++;return n}function hx(e,t,n){let r=``;for(let i=t;i<=n;i++)r+=e.getLine(i)?.translateToString(!1)??``;return r}function gx(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 _x(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 vx(e,t,n,r){let i=[];if(cx(hx(e,t,n)).length===0)return i;let{text:a,cellAt:o}=gx(e,t,n,r);for(let e of cx(a))_x(i,o.slice(e.start,e.end));return i}function yx(e,t){let n=e.getNullCell(),r=[],i=t;for(;i<e.length;){let t=mx(e,i);r.push(...vx(e,i,t,n)),i=t+1}return r}function bx(){return{masks:[],watermark:null,isFullRescanOwed:!0}}function xx(e){e.decoration.dispose(),e.marker.dispose()}function Sx(e){for(let t of e.masks)xx(t);e.masks.length=0,e.watermark?.dispose(),e.watermark=null,e.isFullRescanOwed=!0}function Cx(e,t){let n=e.watermark;return e.isFullRescanOwed||!n||n.isDisposed?0:Math.min(n.line,t.baseY)}function wx(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 Tx(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(fx(r),r),r=e.masks.at(-1);return wx(e),n}function Ex(e,t){let n={normal:bx(),alternate:bx()},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(!Nm())return;let t=e.buffer.active,r=n[t.type],i=px(t,Cx(r,t)),a=Tx(r,i);for(let e of yx(t,i)){let n=dx(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())xx(e);r.watermark?.dispose(),r.watermark=e.registerMarker(-t.cursorY)??null,r.isFullRescanOwed=!1}function u(){Sx(n.normal),Sx(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=>{Sx(n.alternate),s(`normal`),e.type===`alternate`&&l()})],p=Fm(d);t.addEventListener(`abort`,()=>{p();for(let e of f)e.dispose();u(),ux.delete(e)},{once:!0}),ux.set(e,d)}function Dx(e){ux.get(e)?.()}function Ox({hasTerminal:e,isSocketOpen:t,isInputHeld:n}){return e?n||!t?`connecting`:`live`:`none`}async function kx(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:(bd(await jx(r)),!1)}catch{return bd(`Upload failed`),!1}}async function Ax(e,t){for(let n of t)await kx(e,n)}async function jx(e){try{let t=await e.json();if(t&&typeof t.error==`string`)return`Upload failed: ${t.error}`}catch{}return`Upload failed`}var Mx=1.2,Nx=.005;function Px(e,t){let n=Math.abs(t);return n<10?!1:n>Math.abs(e)*Mx}function Fx(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 Ix(e,t,n){let r=e.length>=4?e.slice(1):e.slice();return r.push({positionPx:t,timestampMs:n}),r}function Lx(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>=.08))return 0;let o=Math.min(a,5);return i<0?-o:o}function Rx({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:n,pendingPx:r=0}){return!e||!(n>0)?null:{velocityPxPerMs:e,lastMs:t,cellHeightPx:n,pendingPx:r}}function zx(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)-Nx*n;if(!(r>0))return{scrollLines:0,state:null};let i=e.velocityPxPerMs<0?-1:1,a=i*r*n,{scrollLines:o,remainderPx:s}=Fx(e.pendingPx+a,e.cellHeightPx);return{scrollLines:o,state:{velocityPxPerMs:i*r,lastMs:t,cellHeightPx:e.cellHeightPx,pendingPx:s}}}function Bx(e,t){return e===`alternate`||!!t&&t!==`none`}function Vx(e,t){return!(e>0)||!(t>0)?0:e/t}var Hx=1;function Ux(e){return typeof e._core?._viewport?.handleTouchScroll==`function`}function Wx(e,t){for(let n of e)if(n.identifier===t)return n;return null}function Gx(e,t){if(Ux(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=()=>Bx(t.buffer?.active?.type,t.modes?.mouseTrackingMode),m=()=>{let e=t.element?.querySelector(`.xterm-screen`);return Vx(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:Hx,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}=zx(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=Rx({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=Wx(e.touches,r);if(!u)return;if(!s){if(!Px(u.clientX-i,u.clientY-a))return;s=!0,o=u.clientY,c=0,l=Ix([],u.clientY,e.timeStamp)}e.cancelable&&e.preventDefault(),c+=u.clientY-o,o=u.clientY,l=Ix(l,u.clientY,e.timeStamp);let d=p(),{scrollLines:f,remainderPx:h}=Fx(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=Ix(l,o,e.timeStamp);let t=Lx(l),n=c;h(),t!==0&&v(t,performance.now(),n)},{passive:!0}),e.addEventListener(`touchcancel`,()=>{f(),h()},{passive:!0})}function Kx(e){return e.needsReload?!0:e.wasAttachedWithoutLayout&&e.hasLayoutNow}function qx(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 Jx=window.matchMedia?.(`(pointer: coarse)`).matches?4:12,Yx=new Map;function Xx(e){return e.clientWidth>0&&e.clientHeight>0}function Zx(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 Qx(e){Yx.delete(e),e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,Zx(e)}function $x(e){let t=[e],n=Ar.snapshot().borrowedCardId,r=n?P.get(n):void 0;r&&t.push(r);for(let e of qx([...Yx.keys()],Jx,t))Qx(e),e.needsWebGLReload=!0}function eS(e){e?.term&&Kx({needsReload:e.needsWebGLReload,wasAttachedWithoutLayout:e.webglAttachedWithoutLayout,hasLayoutNow:Xx(e.termWrap)})&&nS(e,{isForced:!0})}function tS(){for(let e of Yx.keys()){let t=e.term;if(e.webglAddon&&t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{Qx(e),e.needsWebGLReload=!0}}}function nS(e,t={}){try{if(e.webglAddon&&!e.needsWebGLReload&&!t.isForced){Yx.delete(e),Yx.set(e,!0);return}e.webglAddon&&(Zx(e),Yx.delete(e)),$x(e);let n=new b;n.onContextLoss(()=>{n.dispose(),e.webglAddon=null,Yx.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),e.webglAddon=n,e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!Xx(e.termWrap),Yx.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,Yx.delete(e)}}function rS(e){let t=hp(e,Cp,{isTerminalFocused:!0});return t?gp(t,document.body.dataset.activeView):!1}var iS=1024,aS=250,oS=`(max-width: 768px)`,sS=12,cS=14,lS=5e4,uS=!1;function dS(e){uS=e}var fS=!1;window.addEventListener(`blur`,()=>{fS=!0}),window.addEventListener(`focus`,()=>{fS=!1});function pS(e){let t=document.activeElement;return mb({isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),hasFocusInsideCard:t instanceof Node&&e.contains(t),hasWindowBlurredSinceFocus:fS,isPhoneLayout:my()})}function mS(e,t){return hb({isDocumentVisible:document.visibilityState===`visible`,isBorrowedCard:Ar.snapshot().borrowedCardId===t,isTerminalFaceShown:e.face===`terminal`})}var hS=new WeakMap,gS=new WeakMap,_S=new WeakSet,vS=new WeakSet,yS=new WeakMap,bS=5e3,xS=15e3,SS=`Keys you type now are held and sent once the terminal reconnects.`,CS=`The terminal is still reconnecting and its key buffer is full, so new keys are dropped.`,wS=`The agent copied text. The browser needs a click before it can reach your clipboard.`,TS=`The clipboard is unavailable in this browser.`;function ES(e,t,n,r){let i=yS.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(()=>DS(e,t),n===`ok`?bS:xS)))}function DS(e,t){let n=yS.get(e);n&&n.shownKind===t&&(n.clearTimerId!==null&&clearTimeout(n.clearTimerId),n.clearTimerId=null,n.shownKind=null,n.status.clear())}function OS(e){let t=e.buffer.active;return t.viewportY<t.baseY}function kS(e,t,{hasNewOutput:n=!1}={}){let r=yS.get(e)?.jumpToLatestButton;if(!r)return;let i=OS(t);r.hidden=!i,i?n&&(r.dataset.hasNewOutput=`true`):delete r.dataset.hasNewOutput}function AS(e,t){if(hS.has(e)||!OS(t))return;let n=t.buffer.active,r=n.length-n.viewportY;_S.has(e)?hS.set(e,r):gS.set(e,r)}function jS(e,t,n){let r=e.term;r&&gb({viewportTopLine:n,scrollbackLineCount:r.buffer.active.baseY,isDeepHistoryLoadedOrPending:_S.has(e)})&&(_S.add(e),vS.add(e),hS.set(e,r.buffer.active.length-n),eC(t))}function MS(e,t){e._hasMissedOutputWhileHidden&&(mS(e,t)||(e._hasMissedOutputWhileHidden=!1,eC(t)))}document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState!==`visible`)return;let e=Ar.snapshot().borrowedCardId;if(!e)return;let t=P.get(e);t&&MS(t,e)});function NS(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 PS(e,t,n){let r=(n instanceof Error?n.message:``)||String(n);console.error(`[clipboard:${t}]`,n),ES(e,`clipboard`,`error`,`Clipboard ${t} failed: ${r}`)}function FS(e,t,n,r){let i=br(t);i?i.then(()=>{r&&ES(e,`clipboard`,`ok`,r)}).catch(t=>PS(e,n,t)):ES(e,`clipboard`,`error`,TS)}function IS(e,t){let n=yS.get(e);n&&(n.pendingClipboardText=t,n.clipboardPrompt.hidden=!1)}function LS(e){let t=yS.get(e),n=t?.pendingClipboardText;t&&n!=null&&(t.pendingClipboardText=null,t.clipboardPrompt.hidden=!0,FS(e,n,`osc52 write`,`Copied to the clipboard.`))}function RS(e,t,n){let r=hd(`terminal-notice`),i=M(`div`,`terminal-clipboard-prompt`);i.hidden=!0;let a=M(`button`,`btn-dialog btn-dialog-confirm`,`Copy to clipboard`);a.type=`button`,a.addEventListener(`click`,()=>LS(t)),i.append(M(`span`,`terminal-clipboard-prompt-text`,wS),a);let o=M(`div`,`terminal-notices`);o.append(i,r.element);let s=M(`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=M(`div`,`terminal-drop-zone`);c.setAttribute(`aria-hidden`,`true`),c.append(M(`span`,`terminal-drop-zone-label`,`Drop to upload to this session`)),e.append(o,s,c),yS.set(t,{status:r,shownKind:null,clearTimerId:null,clipboardPrompt:i,pendingClipboardText:null,jumpToLatestButton:s})}function zS(e,t){return P.get(e)===t&&!t.dataWs}function BS(e){return e.querySelector(`:scope > .terminal-connecting`)}function VS(e){if(BS(e))return;let t=M(`div`,`terminal-connecting`);t.append(M(`span`,`terminal-connecting-label`,`Connecting`)),e.append(t)}function HS(e){let t=BS(e);if(!t)return;t.querySelector(`:scope > .terminal-connecting-animal`)?.remove();let n=Ic();n&&t.prepend(Fc(n,`terminal-connecting-animal`))}var US=new Set;function WS(e){return US.add(e),()=>US.delete(e)}function GS(){let e=0;for(let t of P.values())t.card.dataset.link===`connecting`&&e++;return e}function KS(e){let t=Ox({hasTerminal:e.term!==null,isSocketOpen:e.dataWs?.readyState===WebSocket.OPEN,isInputHeld:XS}),n=t===`connecting`&&!XS&&vS.has(e)?`live`:t;if(n===`none`){delete e.card.dataset.link,qS();return}let r=n===`connecting`&&e.card.dataset.link!==`connecting`;e.card.dataset.link=n,r&&HS(e.termWrap),qS()}function qS(){for(let e of US)e()}function JS(e,t,n,r){AS(t,n),My.unregister(e),t.dataWs=null,KS(t),t._resetGridClaim?.(),setTimeout(()=>{zS(e,t)&&Zc().catch(()=>{}).then(()=>{zS(e,t)&&YS(e,t,n)})},r)}function YS(e,t,n){let r=hS.get(t);hS.delete(t);let i=gS.get(t);gS.delete(t);let a=r!==void 0,o=r??i,s=!1,c=qc(location,$c(_b(e,a))),l=new WebSocket(c);l.binaryType=`arraybuffer`,t.dataWs=l,KS(t);let u=!1,d={hasSeenSize:!1,lastSeq:0};My.register(e,(e,t)=>n.write(e,t)),l.addEventListener(`message`,r=>{if(t.dataWs!==l)return;let i=Cb(r.data,d);if(i.kind===`bytes`){df(t);let r=s;if(s=!1,mS(t,e)){t._hasMissedOutputWhileHidden=!0;return}if(My.enqueue(e,i.data),!r)return;let a=o??0;My.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||_S.delete(t),d.hasSeenSize=!0,d.lastSeq=i.seq,n.reset(),Dx(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};My.enqueueAction(e,()=>{t.ptySize=c,t._syncGrid?.()})}),l.addEventListener(`close`,()=>{if(t.dataWs!==l)return;vS.delete(t),u||Qc();let r=Hc(t._dataWsRetryAttempt||0);t._dataWsRetryAttempt=(t._dataWsRetryAttempt||0)+1,JS(e,t,n,r)}),l.addEventListener(`open`,()=>{u=!0,t._dataWsRetryAttempt=0,vS.delete(t),KS(t),t._syncGrid?.({isActivationEdge:!0}),t._retryOwedGridClaim?.(),t._inputQueue?.length&&setTimeout(()=>{t.dataWs===l&&ZS(t)},50)})}var XS=!1;function ZS(e){let t=e._inputQueue,n=e.dataWs;if(!XS&&t?.length&&n?.readyState===WebSocket.OPEN){for(let e of t)n.send(JSON.stringify({type:`input`,data:e}));t.length=0,DS(e,`keys`)}}function QS(){XS=!0;for(let e of P.values())KS(e)}function $S(){XS=!1;for(let e of P.values())KS(e),ZS(e)}function eC(e){let t=F(e);if(typeof e!=`string`||!t?.term)return;let n=t.dataWs;t._dataWsRetryAttempt=0,JS(e,t,t.term,0),n?.close()}function tC(e,t){let n=e.dataWs;e.dataWs=null,My.unregister(t),n&&n.readyState<=WebSocket.OPEN&&n.close()}function nC(e,t,n){if(!e||t==null||t===``)return!1;if(n?.fromSoftKeyboard||e._resetSoftKeyboardBuffer?.(),!XS&&!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>=iS?(ES(e,`keys`,`error`,CS),!1):(e._inputQueue.push(t),r&&ES(e,`keys`,`busy`,SS),!0)}function rC(e,t){let n=window.matchMedia?.(oS).matches?sS:cS,r=new v({cursorBlink:uS,fontSize:n,fontFamily:wy(),theme:nb(),scrollback:lS,allowProposedApi:!0,linkHandler:Bb()}),i=new y;r.loadAddon(i),VS(e),r.open(e),RS(e,t,r),Hb(r),Ex(r,t.abortController.signal),t.term=r,t.fitAddon=i,Qx(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||!pS(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=pb({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)},aS)}function m(){l&&o===null&&f(l)}function h({isActivationEdge:e=!1}={}){let n=t.term;if(!n)return;let r=bb({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=vb({authoritative:t.ptySize??null,isActiveViewer:s,isDocumentEngaged:pS(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=yb({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&&eS(t),h({isActivationEdge:!0}))},t.card.addEventListener(`focusin`,()=>{fS=!1,g()},{signal:t.abortController.signal}),nS(t);let b=null;r.onScroll(()=>{b===null&&(b=requestAnimationFrame(()=>{b=null,t.term&&(t.term.refresh(0,t.term.rows-1),kS(t,t.term))}))}),r.onWriteParsed(()=>kS(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=NS(r)}catch(e){return PS(t,`osc52 decode`,e),!0}return document.hasFocus()&&navigator.userActivation?.isActive!==!1?(FS(t,i,`osc52 write`),!0):(IS(t,i),!0)}),r.attachCustomKeyEventHandler(e=>{if(e.type!==`keydown`)return!0;if(rS(e))return!1;let n=e.ctrlKey||e.metaKey;if(n&&e.key===`c`&&r.hasSelection()){let e=r.getSelection();return r.clearSelection(),FS(t,e,`copy`),!1}return n&&e.key===`v`?!1:n&&e.key===`Backspace`?(nC(t,`\x1B`),!1):!0}),iC(e,r,t),Gx(e,r)}function iC(e,t,n){let r=t.textarea;if(!r)return;let i=``,a=()=>{i=r.value},o=()=>{i=``,my()&&r.value!==``&&(r.value=``)};n._resetSoftKeyboardBuffer=o;let s=()=>{let e=Mb(i,r.value);return i=r.value,e!==``&&(nC(n,e,{fromSoftKeyboard:!0}),t.scrollToBottom(),!0)},c=(t,n)=>{e.addEventListener(t,e=>{my()?n(e):a()},!0)};c(`keydown`,e=>{jb(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(!Ab(e.inputType)){queueMicrotask(o);return}if(e.stopPropagation(),s())return;let r=Ob(e.inputType);r!==``&&(nC(n,r,{fromSoftKeyboard:!0}),t.scrollToBottom())})}function aC(e,t){e._inputQueue=[];let n=e.term;n&&(n.onData(t=>{nC(e,t)}),n.onScroll(n=>{jS(e,t,n)}),sC(e.termWrap,t,e.abortController.signal),YS(t,e,n))}function oC(e){return!!e&&Array.from(e.types).includes(`Files`)}function sC(e,t,n){e.addEventListener(`paste`,e=>{let n=e.clipboardData;n&&n.files.length!==0&&n.getData(`text/plain`)===``&&(e.preventDefault(),e.stopPropagation(),Ax(t,Array.from(n.files)))},{capture:!0,signal:n}),e.addEventListener(`dragover`,t=>{oC(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,oC(n.dataTransfer)&&(n.preventDefault(),n.stopPropagation(),Ax(t,Array.from(n.dataTransfer.files)))},{capture:!0,signal:n})}function cC(e,t){e.term||(rC(e.termWrap,e),aC(e,t))}function lC(e){e?._syncGridOnEngagementEdge?.()}function uC(e,t){if(!e)return;cC(e,t),MS(e,t),eS(e);let n=e.term;n&&(n.refresh(0,n.rows-1),lC(e))}function dC(e,t,n){e&&(n&&cC(e,t),e._setActiveViewer?.(n))}var fC=`conversation:`,pC=1e4,mC=48,hC=`, `,gC=`+`,_C=`■`,vC=`↑`,yC=1e3,bC={command:`Run command?`,fileChange:`Apply file changes?`,permissions:`Grant permissions?`},xC=1;function SC(e){e?.previewUrl&&URL.revokeObjectURL(e.previewUrl)}function CC(e,t,n){let r=M(`button`,`conversation-icon-button ${e}`,t);return r.type=`button`,r.title=n,r.setAttribute(`aria-label`,n),r}function wC(e){return e.conversationApproval!==null||Bv(e.currentState,e.pendingPromptKind)}function TC(e,t,n,r,i=0){let a=n[i];a?setTimeout(()=>{F(e)===t?i>0&&wC(t)?r(`stopped-by-prompt`):nC(t,a.data)?TC(e,t,n,r,i+1):r(`unreachable`):r(`unreachable`)},a.delayBeforeMs):r(`sent`)}function EC({signal:e,sendControl:t,showTerminal:n}){let r=M(`div`,`conversation-face`);r.hidden=!0;let i=M(`div`,`conversation-log`);i.setAttribute(`role`,`log`),i.setAttribute(`aria-live`,`polite`);let a=M(`p`,`conversation-empty`,`No conversation yet. Messages appear here as the agent works.`),o=M(`div`,`conversation-approval`);o.hidden=!0;let s=M(`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=M(`p`,`conversation-bridge-note`,`The session trace is unavailable, so there is nothing to show here. Use the terminal.`);c.hidden=!0;let l=M(`details`,`conversation-working`),u=M(`summary`,`conversation-working-summary`);u.setAttribute(`role`,`status`);let d=M(`ul`,`conversation-agent-list`);l.append(u,d),l.hidden=!0;let f=M(`form`,`conversation-composer`),p=M(`p`,`conversation-status`);p.setAttribute(`role`,`status`);let m=M(`div`,`conversation-attachment`);m.hidden=!0;let h=M(`div`,`conversation-composer-row`),g=CC(`conversation-attach`,gC,`Attach a photo or file`),_=M(`input`,`conversation-file-picker`);_.type=`file`,_.hidden=!0;let v=M(`textarea`,`conversation-input`);v.dataset.dashboardShortcuts=`allowed`,v.rows=1,v.placeholder=`Message the agent`,v.setAttribute(`aria-label`,`Message the agent`);let y=CC(`conversation-stop`,_C,`Stop the current turn (Esc)`),b=CC(`conversation-send`,vC,`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,C=null,ne=!1,w=null,re=!1,ie=[],ae=[],oe=null,se=!1,T=new Set;function ce(){return x?F(x)??null:null}function E(e){p.textContent=e}function le(){v.style.height=`auto`,v.style.height=`${v.scrollHeight+v.offsetHeight-v.clientHeight}px`}function D(){C&&clearTimeout(C.timeoutHandle),C=null}function O(){if(!x||r.hidden||!c.hidden)return;if(C){ne=!0;return}let e=`${fC}${xC++}`,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})?(ne=!1,C={requestId:e,after:n,timeoutHandle:setTimeout(()=>{C=null,O()},pC)}):E(`Conversation unavailable while disconnected.`)}function ue(){return i.scrollHeight-i.scrollTop-i.clientHeight<=mC}function de(e){let t=M(`a`,`conversation-image-link`);t.href=e,t.target=`_blank`,t.rel=`noopener`;let n=M(`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 fe(e){let t=M(`article`,`conversation-message conversation-user is-pending`);return e.text&&t.append(M(`p`,`conversation-text`,e.text)),e.attachment?.previewUrl&&t.append(de(e.attachment.previewUrl)),e.attachment&&!e.attachment.previewUrl&&t.append(M(`p`,`conversation-attachment-name`,e.attachment.name)),t}function pe(e){let t=M(`article`,`conversation-message conversation-${e.kind}`);return e.kind===`assistant`?(t.append(wm(ym(e.text))),t):(t.append(M(`p`,`conversation-text`,e.text)),e.kind===`user`&&t.append(...e.imageUrls.map(de)),t)}function me(e,t){e.replaceChildren(...t.map(e=>{let t=M(`li`,`conversation-agent is-${e.state}`);return t.append(M(`span`,`conversation-agent-name`,e.description),M(`span`,`conversation-agent-state`,e.state)),t}))}function he(e){if(e.agentRuns.length===0)return M(`p`,`conversation-work`,ry(e));let t=M(`details`,`conversation-work`);t.open=T.has(e.key),t.addEventListener(`toggle`,()=>{t.open?T.add(e.key):T.delete(e.key)});let n=M(`ul`,`conversation-agent-list`);return me(n,e.agentRuns),t.append(M(`summary`,``,ry(e)),n),t}function ge(){return ce()?.currentState===j.RUNNING}function _e(){let e=ce(),t=Zv(ae),n=ge()?Qv(ae)?.agentRuns??[]:[],r=[...new Set([...n,...t])];if(l.hidden=!e||!ge()&&t.length===0,l.hidden||!e)return;let i=ge()?Math.max(0,Date.now()-e.stateSince):null;u.textContent=iy(i,t.length),l.classList.toggle(`has-agents`,r.length>0),me(d,r)}function ve(){let e=!r.hidden&&ge();e&&!oe&&(oe=setInterval(_e,yC)),!e&&oe&&(clearInterval(oe),oe=null),_e()}function ye(){i.scrollTop=i.scrollHeight}function be(){let e=se||ue();ae=Xv(S);let t=Date.now(),n=ie.filter(e=>ey(e,ae,t));for(let e of n)SC(e.attachment);ie=ie.filter(e=>!n.includes(e));let r=[...(ge()&&Qv(ae)?ae.slice(0,-1):ae).map(e=>e.kind===`work`?he(e):pe(e)),...ie.map(fe)];i.replaceChildren(...r.length>0?r:[a]),_e(),e&&(ye(),requestAnimationFrame(ye),te&&(se=!1))}function xe(){if(m.replaceChildren(),m.hidden=!w,w){if(w.previewUrl){let e=M(`img`,`conversation-attachment-thumbnail`);e.src=w.previewUrl,e.alt=``,m.append(e)}m.append(M(`span`,`conversation-attachment-name`,w.name))}}function Se(e){w!==e&&SC(w),w=e,xe()}function Ce(e,t=()=>{}){let n=ce();if(!n||!x||!e){E(`Unable to reach this session.`);return}E(``);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.`};TC(x,n,e,e=>{E(r[e]),t(e)})}function we(e,n,r){x&&E(t({type:`conversation-approval`,id:x,requestId:e.requestId,decision:n,...r?{answers:r}:{}})?``:`Unable to send the answer while disconnected.`)}function Te(e,t){let n=M(`button`,`conversation-approval-action`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function Ee(e){return e.kind===`tool`?`Allow ${e.toolName??`this tool`}?`:bC[e.kind]??`Approve this request?`}function De(e){o.append(M(`p`,`conversation-approval-note`,`This request cannot be shown in full here. Read and answer it in the terminal.`));let t=M(`div`,`conversation-approval-actions`);t.append(Te(`Open terminal`,()=>n()),Te(`Decline`,()=>we(e,`decline`))),o.append(t)}function Oe(e){if(o.append(M(`p`,`conversation-approval-title`,Ee(e)),M(`pre`,`conversation-approval-summary`,e.summary)),e.isSummaryTruncated){De(e);return}let t=M(`div`,`conversation-approval-actions`);t.append(Te(`Approve`,()=>we(e,`accept`))),e.kind!==`tool`&&t.append(Te(`Approve for session`,()=>we(e,`acceptForSession`))),e.alwaysAllowSummary&&(o.append(M(`p`,`conversation-approval-note`,`Always allow adds, for this session only: ${e.alwaysAllowSummary}`)),t.append(Te(`Always allow`,()=>we(e,`acceptForSession`)))),t.append(Te(`Decline`,()=>we(e,`decline`))),o.append(t)}function ke(e){let t=M(`p`,`conversation-approval-title`,e.question);return e.header&&t.prepend(M(`span`,`conversation-question-header`,e.header)),t}function Ae(e,t){o.append(ke(t));let n=M(`div`,`conversation-question-options`);for(let r of t.options){let i=Te(r.label,()=>we(e,`accept`,{[t.question]:r.label}));r.description&&(i.title=r.description),n.append(i)}let r=M(`div`,`conversation-approval-actions`);r.append(Te(`Decline`,()=>we(e,`decline`))),o.append(n,r)}function je(e,t){let n=M(`form`,`conversation-question-form`);t.forEach((e,t)=>{let r=M(`fieldset`,`conversation-question`),i=M(`legend`,`conversation-question-text`,e.question);e.header&&i.prepend(M(`span`,`conversation-question-header`,e.header)),r.append(i);for(let n of e.options){let i=M(`label`,`conversation-question-option`),a=M(`input`);a.type=e.multiSelect?`checkbox`:`radio`,a.name=`question-${t}`,a.value=n.label,i.append(a,M(`span`,``,n.label)),n.description&&(i.title=n.description),r.append(i)}n.append(r)});let r=M(`div`,`conversation-approval-actions`),i=M(`button`,`conversation-approval-action`,`Send answers`);i.type=`submit`,r.append(i,Te(`Decline`,()=>we(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(hC))}),Object.keys(i).length===t.length?we(e,`accept`,i):E(`Answer every question first.`)}),o.append(n)}function Me(e){let t=e.questions??[];if(e.isSummaryTruncated||t.length===0){o.append(M(`p`,`conversation-approval-title`,`Claude Code has a question`),M(`pre`,`conversation-approval-summary`,e.summary)),De(e);return}let[n]=t;t.length===1&&!n.multiSelect?Ae(e,n):je(e,t)}function Ne(e){e.kind===`question`?Me(e):Oe(e)}function Pe(){o.append(M(`p`,`conversation-approval-title`,`The agent is waiting on a prompt`)),o.append(M(`p`,`conversation-approval-note`,`Read and answer it in the terminal.`));let e=M(`div`,`conversation-approval-actions`);e.append(Te(`Open terminal`,()=>n())),o.append(e)}function Fe(){let e=ce();o.replaceChildren();let t=e?.conversationApproval??null,n=e?Bv(e.currentState,e.pendingPromptKind):!1,r=e?.agent===`codex`&&!e.hasConversationBridge;s.hidden=!r,o.hidden=!t&&!n,b.disabled=!o.hidden||r,Ie(),e&&(t?Ne(t):n&&Pe())}function Ie(){g.disabled=b.disabled||re}function Le(e){let t=Lv(e,v.value);return t||!w?t:Rv(e)}function Re(){let e=ce();y.disabled=e?.currentState!==j.RUNNING,ve()}f.addEventListener(`submit`,e=>{if(e.preventDefault(),b.disabled)return;let t=Le(ce()?.agent);if(!t)return;let n={text:v.value.trim(),attachment:w,sentAt:Date.now(),userKeysAtSend:$v(ae)};v.value=``,le(),w=null,xe(),ie.push(n),se=!0,be(),Ce(t,e=>{e!==`sent`&&(SC(n.attachment),ie=ie.filter(e=>e!==n),be())})},{signal:e}),v.addEventListener(`input`,le,{signal:e});let ze=0,Be=new ResizeObserver(()=>{let e=i.clientHeight,t=ze===0;ze=e,t&&e!==0&&(se=!0,ye(),te&&(se=!1))});Be.observe(i),e?.addEventListener(`abort`,()=>{oe&&clearInterval(oe),Be.disconnect()},{once:!0}),v.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||my()||(e.preventDefault(),f.requestSubmit())},{signal:e}),y.addEventListener(`click`,()=>Ce(zv(ce()?.agent)),{signal:e}),g.addEventListener(`click`,()=>_.click(),{signal:e}),_.addEventListener(`change`,()=>{let e=_.files?.[0];if(_.value=``,!e||!x)return;if(b.disabled){E(`Not attached: the agent is not ready for a message. Check the terminal.`);return}let t=x;re=!0,Ie(),kx(t,e).then(n=>{if(re=!1,Ie(),!n||x!==t)return;let r=e.type.startsWith(`image/`)?URL.createObjectURL(e):null;Se({name:e.name,previewUrl:r})})},{signal:e});function Ve(e){if(x!==e){x=e,S=[],ee=0,te=!1,D(),Se(null),T.clear();for(let e of ie)SC(e.attachment);ie=[],E(``)}r.hidden=!1,c.hidden=!0,se=!0,be(),Ue(),O()}function He(){r.hidden=!0,D(),ve()}function Ue(){r.hidden||(Fe(),Re(),be())}function We(e){if(!C||e.requestId!==C.requestId)return!1;let t=C;if(D(),e.id!==x)return!0;let n=t.after!==null&&e.start===t.after&&!e.reset;return t.after!==null&&!n?(te=!1,S=[],O(),!0):(S=ay(t.after===null?[...e.records]:[...S,...e.records]),ee=e.next,te=!0,be(),ne&&O(),!0)}function Ge(e){return!C||e.requestId!==C.requestId?!1:(D(),ne=!1,c.hidden=!1,!0)}function Ke(e){e!==x||r.hidden||(c.hidden=!0,O())}return{el:r,show:Ve,hide:He,refresh:Ue,applyTraceResponse:We,applyTraceError:Ge,applyTraceChanged:Ke}}function DC(e){if(!e)return 0;let t=0;return e.listenerMismatch&&t++,e.orphanPty&&t++,e.destroyedReachable&&t++,t}function OC(e,t){return e||DC(t)>0}var kC={DORMANT:`DOR`,INITIALIZING:`INI`,STARTING:`STA`,RUNNING:`RUN`,WAITING:`WAI`,IDLE:`IDL`,COMPLETE:`CMP`,DONE:`DON`,FAILED:`FAI`},AC=null,jC=!1,MC=!1,NC=null,PC=null,FC=null,IC=`—`;function LC(e){return e==null?IC:ml(e,`GB`)}function RC(e){return e==null?IC:fl(e,{smallestUnit:`s`,dropsZeroRemainder:!1})}function zC(e){return e==null?IC:`${RC(Math.max(0,Math.round((Date.now()-e)/1e3)))} ago`}function BC(){let e=M(`div`,`health-footer`);e.dataset.expanded=`false`,e.hidden=!0;let t=M(`div`,`health-summary`),n=M(`button`,`health-toggle`);n.type=`button`,n.setAttribute(`aria-expanded`,`false`),n.setAttribute(`aria-controls`,`health-detail`);let r=M(`span`,`health-chev`,`▲`);r.setAttribute(`aria-hidden`,`true`),n.append(r,M(`span`,`health-toggle-label`,`Health`));let i=M(`div`,`health-stats`);t.append(n,i);let a=M(`div`,`health-detail`);return a.id=`health-detail`,a.hidden=!0,n.addEventListener(`click`,()=>{MC=!MC,e.dataset.expanded=String(MC),n.setAttribute(`aria-expanded`,String(MC)),a.hidden=!MC,MC&&(K({type:`request-health-snapshot`}),HC())}),e.append(t,a),NC=e,PC=i,FC=a,e}function VC(){if(!PC||!AC)return;let e=AC,t=DC(e.anomalies);PC.innerHTML=`
|
|
63
|
-
<span class="health-stat" title="V8 heap used"><span class="health-stat-label">Heap</span> ${LC(e.process.heapUsed)}</span>
|
|
64
|
-
<span class="health-stat" title="Resident set size (process memory)"><span class="health-stat-label">RSS</span> ${LC(e.process.rss)}</span>
|
|
65
|
-
<span class="health-stat" title="External buffers (PTY data lives here)"><span class="health-stat-label">Ext</span> ${LC(e.process.external)}</span>
|
|
66
|
-
<span class="health-stat" title="Active resources (handles + requests)"><span class="health-stat-label">Hdl</span> ${e.process.activeResources}</span>
|
|
67
|
-
<span class="health-stat" title="Memory headroom at the last start check, and starts held for memory"><span class="health-stat-label">Mem</span> ${LC(e.memoryGate?.headroomBytes)} / ${e.memoryGate?.heldStartCount??0} held</span>
|
|
68
|
-
<span class="health-stat" title="Sessions: alivePty / total"><span class="health-stat-label">Sess</span> ${e.sessions.alivePty}/${e.sessions.total}</span>
|
|
69
|
-
<span class="health-stat" title="WebSockets: control + data"><span class="health-stat-label">WS</span> ${e.websockets.control}+${e.websockets.data}</span>
|
|
70
|
-
<span class="health-stat" title="Server uptime"><span class="health-stat-label">Up</span> ${RC(e.uptimeSeconds)}</span>
|
|
71
|
-
${t>0?`<span class="health-anomaly" title="${t} anomaly type(s), expand for details">⚠ ${t}</span>`:``}
|
|
72
|
-
`}function HC(){if(!FC||!AC)return;let e=AC,t=e.process,n=e.websockets,r=e.sessions,i=e.anomalies,a=``;if(DC(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=`
|
|
73
|
-
<div class="health-section health-section-warn">
|
|
74
|
-
<div class="health-section-title">⚠ Anomalies</div>
|
|
75
|
-
${e.map(e=>`<div class="health-row">${e}</div>`).join(``)}
|
|
76
|
-
</div>
|
|
77
|
-
`}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`
|
|
78
|
-
<tr>
|
|
79
|
-
<td>${v_(e.name)}</td>
|
|
80
|
-
<td class="health-mono">${kC[e.state]||e.state}</td>
|
|
81
|
-
<td class="health-mono">${e.hasPty?e.ptyPid:IC}</td>
|
|
82
|
-
<td class="health-mono">${LC(e.outputBufferBytes)}</td>
|
|
83
|
-
<td class="health-mono">${e.outputBufferEntries}</td>
|
|
84
|
-
<td class="health-mono">${e.dataListenerCount}</td>
|
|
85
|
-
<td class="health-mono health-dim">${n}</td>
|
|
86
|
-
<td class="health-mono health-dim">${t.join(` `)||``}</td>
|
|
87
|
-
</tr>
|
|
88
|
-
`}).join(``);FC.innerHTML=`
|
|
89
|
-
${a}
|
|
90
|
-
<div class="health-section">
|
|
91
|
-
<div class="health-section-title">Process</div>
|
|
92
|
-
<div class="health-grid">
|
|
93
|
-
<div class="health-row"><span class="health-label">Heap used</span><span class="health-mono">${LC(t.heapUsed)}</span></div>
|
|
94
|
-
<div class="health-row"><span class="health-label">Heap total</span><span class="health-mono">${LC(t.heapTotal)}</span></div>
|
|
95
|
-
<div class="health-row"><span class="health-label">RSS</span><span class="health-mono">${LC(t.rss)}</span></div>
|
|
96
|
-
<div class="health-row"><span class="health-label">External</span><span class="health-mono">${LC(t.external)}</span></div>
|
|
97
|
-
<div class="health-row"><span class="health-label">Array buffers</span><span class="health-mono">${LC(t.arrayBuffers)}</span></div>
|
|
98
|
-
<div class="health-row"><span class="health-label">Active resources</span><span class="health-mono">${t.activeResources}</span></div>
|
|
99
|
-
<div class="health-row"><span class="health-label">Uptime</span><span class="health-mono">${RC(e.uptimeSeconds)}</span></div>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
|
|
103
|
-
<div class="health-section">
|
|
104
|
-
<div class="health-section-title">Memory gate</div>
|
|
105
|
-
<div class="health-grid">
|
|
106
|
-
<div class="health-row"><span class="health-label">Headroom</span><span class="health-mono">${LC(e.memoryGate?.headroomBytes)}</span></div>
|
|
107
|
-
<div class="health-row"><span class="health-label">Read</span><span class="health-mono">${zC(e.memoryGate?.headroomReadAtMs)}</span></div>
|
|
108
|
-
<div class="health-row"><span class="health-label">Starts held</span><span class="health-mono">${e.memoryGate?.heldStartCount??0}</span></div>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
|
|
112
|
-
<div class="health-section">
|
|
113
|
-
<div class="health-section-title">WebSockets</div>
|
|
114
|
-
<div class="health-grid">
|
|
115
|
-
<div class="health-row"><span class="health-label">Control clients</span><span class="health-mono">${n.control}</span></div>
|
|
116
|
-
<div class="health-row"><span class="health-label">Data clients</span><span class="health-mono">${n.data}</span></div>
|
|
117
|
-
<div class="health-row"><span class="health-label">Tracked per session</span><span class="health-mono">${n.dataPerSessionTotal}</span></div>
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
120
|
-
|
|
121
|
-
<div class="health-section">
|
|
122
|
-
<div class="health-section-title">Sessions (${r.total} total · ${r.alivePty} alive PTY)</div>
|
|
123
|
-
<div class="health-row health-dim">Listeners ${r.totalDataListeners} · Output buffer ${LC(r.totalOutputBufferBytes)}</div>
|
|
124
|
-
<table class="health-table">
|
|
125
|
-
<thead>
|
|
126
|
-
<tr>
|
|
127
|
-
<th>Name</th><th>State</th><th>PID</th><th>Buffer</th><th>Entries</th><th>Listeners</th><th>Timers</th><th>Flags</th>
|
|
128
|
-
</tr>
|
|
129
|
-
</thead>
|
|
130
|
-
<tbody>${o||`<tr><td colspan="8" class="health-dim">No sessions</td></tr>`}</tbody>
|
|
131
|
-
</table>
|
|
132
|
-
</div>
|
|
133
|
-
`}function UC(){if(!NC)return;let e=OC(jC,AC?.anomalies),t=NC.hidden;NC.hidden=!e,e&&t&&AC&&(VC(),MC&&HC())}function WC(e){jC=e,UC()}function GC(e){if(NC)return NC;let t=BC();return e.appendChild(t),UC(),t}function KC(e){AC=e,UC(),NC&&!NC.hidden&&(VC(),MC&&HC())}function qC(e){return e.replace(/\r\n?/g,`
|
|
134
|
-
`).split(`
|
|
135
|
-
`)}function JC(e){return{kind:`unchanged`,text:e}}function YC(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function XC(e,t){return e.length<=7?e.map(t):[...e.slice(0,3).map(t),YC(e.length-6),...e.slice(e.length-3).map(t)]}function ZC(e){return e}function QC(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(...XC(e.slice(n,r),ZC)),n=r}return t}function $C(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function ew(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 tw(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(JC(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 nw(e,t){let n=qC(e),r=qC(t),i=$C(n,r),a=ew(n,r,i),o=n.slice(i,n.length-a),s=r.slice(i,r.length-a);return o.length+s.length>2e3?{lines:[],isTooLarge:!0}:{lines:QC([...XC(n.slice(0,i),JC),...tw(o,s),...XC(n.slice(n.length-a),JC)]),isTooLarge:!1}}var rw=Object.freeze([{kind:`approve`,label:`Approve`},{kind:`revise`,label:`Send feedback`},{kind:`terminal`,label:`Answer in terminal`}]);function iw(e){return e===`approve`||e===`approve-accept-edits`}function aw(e){return(e.state===`decided`||e.state===`closed`)&&iw(e.lastDecision)}function ow(e,t){let n=e.reviews.find(e=>e.agentId===t);return n!==void 0&&aw(n)}function sw(e,t){return e.reviews.find(e=>e.agentId===t)??e.reviews[0]??null}function cw(e){let t=sw(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 lw(e,t){return sw(e,t)?.openRevision?.revision??null}function uw(e,t,n){if(n===null)return null;let r=sw(e,t)?.revisions??[],i=r.findIndex(e=>e.revision===n);return i<=0?null:r[i-1].revision}function dw(e,t){let n=t-e;return Number.isFinite(n)?dl(n,{rounding:`floor`,wording:`abbreviated`,suffix:` ago`,justNowBelowSeconds:60}):`just now`}function fw(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 pw(e,t,n){let r=fw(e,t,n),i=(e.pendingCommentCount??0)>0,a=e.hasUnsavedComment!==!0;return rw.map(({kind:e,label:t})=>({kind:e,label:t,enabled:r&&(e===`terminal`||a&&(e===`revise`?i:!i))}))}function mw(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 hw(e){let t=0;for(let n of e.comments??[])t+=n.comment.trim().length+(n.heading?.length??0);return t}function gw(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength+bo}function _w(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 ${qr} characters, so nothing was sent`:hw(e)>1e4?`the feedback composes more than the ${Yr} characters the hook reply carries, so nothing was sent`:gw(e)>xo?`the decision is larger than one control frame carries, so nothing was sent`:null}function vw(e){return e?`, ${e}`:``}function yw(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=mw(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 bw(e,t,n){let r=yw(e,t,n);return r?`${r}${vw(e.problem)}`:e.problem??``}function xw(e){let t=sw(e.state,e.selectedAgentId),n=cw(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:uw(e.state,t?.agentId??null,n),status:bw(e,t,n),actions:pw(e,t,n),modes:[{kind:`read`,label:`Read`,enabled:!0},{kind:`changes`,label:`Changes`,enabled:uw(e.state,t?.agentId??null,n)!==null&&e.isDraft!==!0},{kind:`edit`,label:`Edit`,enabled:fw(e,t,n)}]}}function Sw(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 Cw({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 ww=12,Tw=8,Ew=``,Dw=48,Ow=new Map;function kw(e,t){return JSON.stringify([e,t])}function Aw(e){return e.id??Ew}function jw(e,t){let n=Ow.get(e);n||(n=new Map,Ow.set(e,n));let r=kw(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>ww;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function Mw(e){Ow.delete(e)}function Nw(e,t,n){return!e||n===null?null:Ow.get(e)?.get(kw(t,n))??null}function Pw(e){let t=M(`section`,`plan-face`);t.hidden=!0;let n=M(`header`,`plan-head`),r=M(`select`,`plan-heading-picker`);r.setAttribute(`aria-label`,`Plan section`);let i=M(`div`,`plan-view-panel`),a=M(`div`,`plan-sheet-head`),o=M(`button`,`plan-control plan-sheet-close`,`×`);o.type=`button`,o.setAttribute(`aria-label`,`Close`),a.append(M(`span`,null,`View`),o);let s=M(`div`,`plan-view-group plan-author-group`),c=M(`div`,`plan-tabs`);c.setAttribute(`role`,`tablist`),c.setAttribute(`aria-label`,`Plan author`),s.append(M(`span`,`plan-sheet-label`,`Author`),c);let l=M(`div`,`plan-view-group plan-revision-group`),u=M(`div`,`plan-revision-stepper`),d=M(`button`,`plan-control plan-revision-previous`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Previous revision`);let f=M(`button`,`plan-control plan-revision-next`,`›`);f.type=`button`,f.setAttribute(`aria-label`,`Next revision`);let p=M(`span`,`plan-revision-label`),m=M(`span`,`plan-revision-age`);u.append(d,p,f,m);let h=M(`div`,`plan-revision-list`);h.setAttribute(`role`,`radiogroup`),h.setAttribute(`aria-label`,`Revision`),l.append(M(`span`,`plan-sheet-label`,`Revision`),u,h);let g=M(`div`,`plan-view-group plan-mode-group`),_=M(`div`,`plan-modes`);_.setAttribute(`role`,`radiogroup`),_.setAttribute(`aria-label`,`Show`),g.append(M(`span`,`plan-sheet-label`,`Show`),_);let v=M(`div`,`plan-head-spacer`),y=M(`div`,`plan-draft-notice`),b=M(`span`,`plan-draft-dot`);b.setAttribute(`aria-hidden`,`true`);let x=M(`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=M(`button`,`plan-control plan-view-button`,`View`);S.type=`button`,S.setAttribute(`aria-haspopup`,`dialog`),S.setAttribute(`aria-expanded`,`false`);let ee=M(`button`,`plan-control plan-minimize-button`,`Minimize`);ee.type=`button`,ee.addEventListener(`click`,e.showTerminal),n.append(r,i,S,ee);let te=M(`div`,`plan-sheet-backdrop`),C=M(`div`,`plan-body-layout`),ne=M(`nav`,`plan-heading-rail`);ne.setAttribute(`aria-label`,`Plan sections`);let w=M(`article`,`plan-reading-column`);C.append(ne,w);let re=M(`textarea`,`plan-editor`);re.setAttribute(`aria-label`,`Plan markdown`),re.spellcheck=!1;let ie=M(`footer`,`plan-action-bar`),ae=M(`span`,`plan-status`);ae.setAttribute(`role`,`status`);let oe=M(`div`,`plan-decision-slot`),se=M(`label`,`plan-accept-edits`),T=M(`input`,`plan-accept-edits-checkbox`);T.type=`checkbox`,se.append(T,M(`span`,null,`Accept edits`)),oe.append(se,ae),ie.append(oe);let ce=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let n=M(`button`,`plan-action`,t);n.type=`button`,n.dataset.decision=e,n.addEventListener(`click`,()=>{n.disabled||nt(e)}),ce.set(e,n),ie.append(n)}t.append(n,C,ie,te);let E=null,le={reviews:[]},D=null,O=null,ue=!0,de=``,fe=``,pe=``,me=``,he=!1,ge=null,_e=!1,ve=null,ye=!1,be=!1,xe=null,Se=[],Ce=null,we=null,Te=new Map,Ee=new Map,De=new Map,Oe=[],ke=!1,Ae=null,je=!1;function Me(e,t=!0){je=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)),C.inert=e,ie.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 Ne(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=je;r[i].click(),!(a&&e!==_)&&(e===_||!je)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Pe=Ar.subscribe((e,t)=>{t.includes(`layout`)&&je&&Me(!1,!1)});e.signal?.addEventListener(`abort`,Pe,{once:!0}),Ne(_),Ne(c),Ne(h),S.addEventListener(`click`,()=>Me(!je)),o.addEventListener(`click`,()=>Me(!1)),te.addEventListener(`click`,()=>Me(!1)),i.addEventListener(`keydown`,e=>{if(!je)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Me(!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 Fe(e){w.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}r.addEventListener(`change`,()=>Fe(r.value));function Ie(){ke=!1;let e=Oe.map(e=>w.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=w.getBoundingClientRect().top-w.scrollTop,n=Cw({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:w.scrollTop,isScrolledToEnd:w.scrollTop>0&&w.scrollTop+w.clientHeight>=w.scrollHeight-2,readingLineOffset:Dw}),i=n===null?null:e[n]?.id??null;for(let e of Oe)e.dataset.headingId===i?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);i!==null&&(r.value=i)}function Le(){ke||t.hidden||Oe.length===0||(ke=!0,requestAnimationFrame(Ie))}w.addEventListener(`scroll`,Le,{passive:!0});function Re(){Ae=null,_e=!1,ye=!1,be=!1,xe=null}function ze(t){Ce=t,e.reportProblem(t),Tt()}function Be(e){O=e,Ce=null,Re(),Me(!1,je),Tt()}function Ve(e){let t=le.reviews.find(e=>e.agentId===D)?.revisions??[],n=t[t.findIndex(e=>e.revision===O)+e];n&&Be(n.revision)}d.addEventListener(`click`,()=>Ve(-1)),f.addEventListener(`click`,()=>Ve(1));function He(e,t){return`${E??``}:${e??`main`}:${t??`latest`}`}function Ue(){return He(D,O)}function We(e,t,n){return`${e??``}:${kw(t,n??0)}`}function Ge(){return We(E,D,O)}function Ke(){return Ee.get(Ge())??null}function qe(){return Ke()?.size??0}function Je(){if(Ae===null)return!1;let e=Ee.get(Ae.target.bucketKey)?.get(Ae.target.sectionSlot)??``;return Ae.field.value.trim()!==e}function Ye(e){let t=Ee.get(e);if(!t)return[];let n=[];for(let e of Se){let r=t.get(Aw(e));r&&n.push({heading:e.heading,comment:r})}return n}function Xe(e,t){let n=t.trim(),r=Ee.get(e.bucketKey)??new Map;Ee.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&Ee.delete(e.bucketKey),Tt()}function Ze(e){if(be||he)return;let t={bucketKey:Ge(),sectionSlot:Aw(e)},n=M(`div`,`plan-comment-composer`),r=M(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),i=M(`textarea`,`plan-comment-input`);i.maxLength=qr,i.value=Ee.get(t.bucketKey)?.get(t.sectionSlot)??``,r.append(i);let a=M(`div`,`plan-comment-actions`),o=M(`button`,`plan-control plan-comment-cancel`,`Cancel`);o.type=`button`;let s=M(`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};Ae=c,i.addEventListener(`input`,wt),o.addEventListener(`click`,()=>{Ae===c&&(Ae=null,Tt())}),s.addEventListener(`click`,()=>{Ae===c&&(Ae=null),Xe(t,i.value)}),Tt(),i.focus()}function Qe(e){let t={bucketKey:Ge(),sectionSlot:Aw(e)};if(Ae?.target.bucketKey===t.bucketKey&&Ae.target.sectionSlot===t.sectionSlot)return Ae.element;let n=Ke()?.get(t.sectionSlot);if(!n)return null;let r=M(`div`,`plan-comment-card`),i=M(`div`,`plan-comment-head`),a=M(`button`,`plan-control plan-comment-edit`,`Edit`);a.type=`button`,a.addEventListener(`click`,()=>Ze(e));let o=M(`button`,`plan-control plan-comment-remove`,`Remove`);return o.type=`button`,o.disabled=he,a.disabled=he,o.addEventListener(`click`,()=>Xe(t,``)),i.append(M(`span`,`plan-comment-label`,`Your comment`),a,o),r.append(i,M(`p`,`plan-comment-text`,n)),r}function $e(t,n,r={}){if(!E||n.revision===null||he)return!1;let i=_w(r);if(i!==null)return ze(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return e.sendDecision(E,a)?(Ce=null,he=!0,ge=iw(t)?n:null,Tt(),!0):(ze(G),!1)}function et(e){if(!_e)return{};let t=re.value;return t===Nw(E,e.agentId,e.revision)?{}:{plan:t}}function tt(e){let t=We(E,e.agentId,e.revision),n=Ye(t);n.length!==0&&$e(`revise`,e,{comments:n})&&e.revision!==null&&(we={bucketKey:t,agentId:e.agentId,revision:e.revision},Tt())}function nt(e){let t={agentId:D,revision:O};e===`revise`?tt(t):$e(e===`approve`&&!se.hidden&&T.checked?`approve-accept-edits`:e,t,et(t))}function rt(e){Ae=null,_e=e===`edit`,ye=e===`changes`,_e&&ve!==Ge()&&(re.value=Nw(E,D,O)??``,ve=Ge()),Ce=null,Tt()}function it(e){return`${e.kind}:${He(e.agentId,e.revision)}`}function at(e){for(De.set(it(e),e);De.size>Tw;){let e=De.keys().next().value;if(typeof e!=`string`)break;De.delete(e)}}function ot(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 st(e){for(let[t,n]of De)if(ot(n,e))return De.delete(t),n;return null}function ct(){for(let[e,t]of De)if(t.kind===`draft`)return De.delete(e),t;return null}function lt(){if(De.size!==1)return null;let e=De.entries().next().value;return e?(De.delete(e[0]),e[1]):null}function ut(){if(!E)return;let t=Ue();de!==t&&e.requestPlan(E,D,O??void 0)&&(de=t,at({kind:`selection`,agentId:D,revision:O}))}function k(){t.hidden||ut()}function dt(){return uw(le,D,O)}function ft(t){if(!E)return;let n=He(D,t);pe!==n&&e.requestPlan(E,D,t)&&(pe=n,at({kind:`diff-base`,agentId:D,revision:t}))}function pt(){if(!E)return;let t=`${E}:${D??`main`}`;me!==t&&e.requestDraft(E,D)&&(me=t,at({kind:`draft`,agentId:D,revision:null}))}function mt(e,t){return`${e??``}:${t??``}`}function ht(){return le.reviews.find(e=>e.agentId===D)?.revisions.find(e=>e.revision===O)?.receivedAt??0}function gt(){let e=Te.get(mt(E,D));return e!==void 0&&e>ht()}function _t(){be?(Re(),Tt()):(Ae=null,_e=!1,ye=!1,pt(),Tt())}x.addEventListener(`click`,_t);function vt(e){ne.replaceChildren(),r.replaceChildren(),Oe=[];for(let t of e){let e=t.id??`plan-introduction`,n=t.heading??`Introduction`,i=M(`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(Ke()?.has(Aw(t))===!0),Oe.push(i),i.addEventListener(`click`,()=>Fe(e)),ne.append(i);let a=M(`option`,null,n);a.value=e,r.append(a)}}function yt(e){let t=dt();if(t===null){w.append(M(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let n=Nw(E,D,t);if(n===null){w.append(M(`p`,`plan-loading`,`Loading the previous revision`)),ft(t);return}let r=nw(n,e);r.isTooLarge?(w.append(M(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),w.append(wm(ym(e)))):w.append(Dm(r))}function bt(e){if(w.replaceChildren(),_e){vt(Se),w.append(re);return}if(e===null){if(Se=[],vt(Se),fe===Ue()){w.append(M(`p`,`plan-loading`,`This plan revision could not be loaded`));return}w.append(M(`p`,`plan-loading`,`Loading plan`)),ut();return}let t=ym(e);if(Se=bm(t),vt(Se),ye){yt(e);return}if(be){w.append(wm(t));return}let n=Ke();w.append(Tm(Se,{hasComment:e=>n?.has(Aw(e))===!0,isComposing:e=>Ae?.target.bucketKey===Ge()&&Ae.target.sectionSlot===Aw(e),onComment:Ze,attachmentFor:Qe}))}function xt(e){s.hidden=e.tabs.length<2,c.replaceChildren();for(let t of e.tabs){let e=M(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,je?`radio`:`tab`),e.setAttribute(je?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{D=t.agentId,O=null,Ce=null,de=``,fe=``,pe=``,me=``,Re(),Me(!1,je),Tt()}),c.append(e)}}function A(){return be?xe:Nw(E,D,O)}function St(e){return xw({state:le,selectedAgentId:D,selectedRevision:O,body:e,isConnected:ue,isDecisionInFlight:he,isDraft:be,pendingCommentCount:qe(),hasUnsavedComment:Je(),problem:Ce})}function Ct(e){ae.textContent=e.status,ae.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);se.hidden=!t,T.disabled=!t;for(let t of e.actions){let e=ce.get(t.kind);e&&(e.disabled=!t.enabled)}}function wt(){Ct(St(A()))}function Tt(){let e=je&&i.contains(document.activeElement),t=xw({state:le,selectedAgentId:D,selectedRevision:O,body:null,isConnected:ue});(D!==t.selectedAgentId||O!==t.selectedRevision)&&Re(),D=t.selectedAgentId,O=t.selectedRevision,ve!==Ge()&&(ve=null);let n=A(),a=St(n);xt(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?dw(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=M(`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(M(`span`,`plan-revision-name`,e.label),M(`span`,`plan-revision-age`,dw(e.receivedAt,l))),e.isOpen&&t.append(M(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Be(e.revision)),h.append(t)}_.replaceChildren();let g=_e?`edit`:ye?`changes`:`read`,v=a.modes.find(e=>e.kind===g&&e.enabled)??a.modes[0];for(let e of a.modes){let t=M(`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||(rt(e.kind),_.querySelector(`[aria-checked="true"]`)?.focus())}),_.append(t)}y.hidden=!gt()&&!be,x.hidden=y.hidden,x.setAttribute(`aria-pressed`,String(be)),Ct(a),bt(n),r.disabled=Oe.length===0,Le(),e&&!i.contains(document.activeElement)&&o.focus()}function Et(t){ge!==null&&ow(t,ge.agentId)&&(ge=null,ve=null,e.showTerminal())}function Dt(e){Ae=null,e!==E&&(ge=null,he=!1,Ce=null,De.clear()),Me(!1,!1),E=e,t.hidden=!1,de=``,fe=``,Tt(),k()}function Ot(){Ae=null,Me(!1,!1),t.hidden=!0}function kt(e,t){return t.kind!==`selection`||e.agentId!==D?!1:t.revision===null?O===null||O===e.revision:t.revision===O}function At(e){e.kind===`draft`?(me=``,ze(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?pe=``:fe=He(e.agentId,e.revision)}function jt(e){we!==null&&lw(e,we.agentId)!==we.revision&&(Ee.delete(we.bucketKey),we=null)}function Mt(e){he=!1,Nt({reviews:e.reviews});let t=e.body;if(!t){let e=lt()??ct();e!==null&&At(e);return}let n=st(t);if(t.revision===0){if(me=``,n===null||t.agentId!==D)return;xe=t.plan,be=!0}else jw(e.id,t),n!==null&&kt(t,n)&&(D=t.agentId,O=t.revision,de=``,fe=``)}function Nt(e){let t=lw(e,D);t!==null&&t!==lw(le,D)&&(O=t,Re()),jt(e),le=e,he=!1,Et(e)}function Pt(e){let n=!1;e.state&&Nt(e.state),e.draft&&Te.set(mt(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(ge=null,he=!1,we=null,e.refusalText&&(Ce=e.refusalText)),typeof e.isConnected==`boolean`&&(n=e.isConnected&&!ue,ue=e.isConnected,n&&(de=``,fe=``,pe=``,me=``,he=!1)),e.requestFailed&&(fe=de),e.response&&Mt(e.response),t.hidden||Tt(),(n||e.decisionRefused)&&k()}return{el:t,show:Dt,hide:Ot,update:Pt}}function Fw(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 Iw(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({factId:i.factId,kind:`link`,severity:6,path:s,openPath:`${c.sessionPathPrefix}${s}`,headline:`${e.name} imports ${i.packageName} from ${i.providerRepo} in ${i.importerCount} ${l}`,detail:f})}for(let t of e.collisions)n.push({factId:t.factId,kind:`collision`,severity:5,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`${t.path} is also changed in "${t.otherSessionName}"`,detail:`Another live session is changing this file.`});for(let t of e.coChangeGaps){let r=t.confidence>0?Math.round(t.support/t.confidence):0;n.push({factId:t.factId,kind:`co-change`,severity:4,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`Usually changes with ${t.partner} (${t.support} of ${r} commits)`,detail:`${t.partner} is absent from these changes.`})}for(let t of e.untestedFiles)n.push({factId:t.factId,kind:`untested`,severity:3,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`No test reaches ${t.path}`,detail:`No dependent test was found in the import graph.`});for(let t of e.hotspots)n.push({factId:t.factId,kind:`hotspot`,severity:2,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`${t.path} is a hotspot`,detail:`${t.fixCommitCount} of its last ${t.commitCount} commits were fixes.`});for(let t of e.blastRadius)t.transitiveDependentCount<10||n.push({factId:t.factId,kind:`blast`,severity:1,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`Wide blast radius: ${t.transitiveDependentCount} files depend on ${t.path}`,detail:`${t.directDependentCount} direct dependents; ${t.dependentTestCount} dependent tests.`});return n.sort((e,t)=>t.severity-e.severity||e.path.localeCompare(t.path)||e.factId.localeCompare(t.factId))}function Lw(e,t){let n=new Map(e.blastRadius.map(e=>[e.path,e])),r=e.files.filter(e=>e.isCommitted).length;return{header:{name:e.name,fileCount:e.files.length,committedCount:r,uncommittedCount:e.files.length-r,base:e.base},subsystems:e.subsystems.map(e=>({title:e.title,fileCount:e.paths.length})),warnings:Iw(e,t),files:e.files.map(t=>({path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,status:t.status,isCommitted:t.isCommitted,dependentCount:n.get(t.path)?.transitiveDependentCount??0,testCount:n.get(t.path)?.dependentTestCount??0})),error:e.error}}function Rw(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:Fw(r)});let r=e.repos.map(e=>Lw(e,n));return{repos:!e.error&&r.every(e=>e.header.fileCount===0&&e.warnings.length===0&&!e.error)?[]:r,narrative:{state:e.narratorState,claims:e.narratorState===`ready`?e.narrative?.claims.map(e=>({text:e.text,factIds:e.factIds}))??[]:[],status:{disabled:null,pending:`Narrative is being prepared.`,ready:null,failed:`Narrative could not be prepared.`}[e.narratorState]},error:e.error??null}}function zw(e,t,n,r){let i=M(`button`,n);return i.type=`button`,i.title=`Open ${e} in the diff`,i.addEventListener(`click`,()=>r(t)),i}function Bw(e,t){let n=M(`section`,`review-map-repo`),r=M(`div`,`review-map-repo-head`);r.append(M(`strong`,`review-map-repo-name`,e.header.name)),n.append(r);let i=M(`div`,`review-map-summary`);if(i.append(M(`span`,``,`${e.header.committedCount} committed`)),i.append(M(`span`,``,`${e.header.uncommittedCount} uncommitted`)),i.append(M(`span`,``,`Base: ${se(e.header.base,{chars:8})||`unknown`}`)),n.append(i),e.error&&n.append(M(`p`,`review-map-error`,e.error)),e.subsystems.length>0){let t=M(`div`,`review-map-subsystems`);for(let n of e.subsystems)t.append(M(`span`,`review-map-chip`,`${n.title} (${n.fileCount})`));n.append(t)}if(e.warnings.length>0){n.append(M(`h3`,`review-map-label`,`Signals`));let r=M(`div`,`review-map-warnings`);for(let n of e.warnings){let e=zw(n.path,n.openPath,`review-map-warning`,t);e.dataset.severity=String(n.severity),e.dataset.kind=n.kind,e.append(M(`span`,`review-map-warning-headline`,n.headline)),e.append(M(`span`,`review-map-detail`,n.detail)),r.append(e)}n.append(r)}if(e.files.length>0){n.append(M(`h3`,`review-map-label`,`Files`));let r=M(`div`,`review-map-files`);for(let n of e.files){let e=zw(n.path,n.openPath,`review-map-file`,t);e.dataset.status=n.status,e.append(M(`span`,`review-map-file-path`,n.path)),e.append(M(`span`,`review-map-file-meta`,`${n.status} · ${n.isCommitted?`committed`:`uncommitted`} · ${n.dependentCount} dependents · ${n.testCount} tests`)),r.append(e)}n.append(r)}return n}function Vw(e,t){let n=M(`div`,`review-map`);if(e.error&&n.append(M(`p`,`review-map-error`,e.error)),e.narrative.status&&n.append(M(`p`,`review-map-narrative-status`,e.narrative.status)),e.narrative.claims.length>0){let t=M(`section`,`review-map-narrative`);t.append(M(`h3`,`review-map-label`,`Narrative`));for(let n of e.narrative.claims){let e=M(`p`,`review-map-claim`,n.text);e.dataset.factIds=n.factIds.join(` `),t.append(e)}n.append(t)}for(let r of e.repos)n.append(Bw(r,t));return n}function Hw(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 Uw(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=Hw(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 Ww(e,t,n,r){return`${e}:${r}:${n}:${t}`}function Gw(e,t,n){if(!e)return[];let r=new Set;if(e.committed!==t.committed&&r.add(`committed`),e.uncommitted!==t.uncommitted&&r.add(`uncommitted`),r.size===0)return[];let i=[];for(let e of n)r.has(e.slice(0,e.indexOf(`:`)))&&i.push(e);return i}function Kw(e,t){return t.type===`del`?t.oldLineNumber===null?null:{path:e.path,line:t.oldLineNumber,side:`old`}:t.newLineNumber===null?null:{path:e.path,line:t.newLineNumber,side:`new`}}function qw(e,t){return t===`merged`||t===`none`||e===`parked`&&t===`pending-review`}function Jw(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 Yw({status:e,mergeReason:t,fetched:n,hasDiffError:r,hasChanges:i,hasCommits:a,canMerge:o,isWorkspace:s,live:c,effectiveBase:l}){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?s?{text:`Changes in this worktree`,namesMergeTarget:!1}:o?{text:`Ready to merge into ${Qw(l)}`,namesMergeTarget:!0}:c?a?{text:`Not ready to merge`,namesMergeTarget:!1}:{text:`Uncommitted changes`,namesMergeTarget:!1}:{text:`Session ended`,namesMergeTarget:!1}:{text:`No changes yet`,namesMergeTarget:!1}:{text:`Checking for changes`,namesMergeTarget:!1}}function Xw(e,t){return e.namesMergeTarget?null:`merges into ${Qw(t)}`}function Zw({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 Qw(e){return e||`base`}function $w(e,t){return`Merge into ${Qw(e)}, push it, and rebase this worktree, then keep working (${t})`}function eT(e){return e===`base-diverged`?`Resync the base branch by hand, then Merge again.`:`Needs manual merge`}function tT(e,t,n){let r=e!==`parked`||e===`parked`&&t===`base-diverged`;return{isRendered:r,isEnabled:r&&e!==`merging`&&n}}function nT({status:e,hasCommits:t,live:n,state:r}){return e===`merging`||!t?null:!n&&(e===`parked`||e===`merged`)?`Session ended.`:!n||e===`parked`?null:r===`INITIALIZING`||r===`STARTING`?`Starting up. Mergeable once the session is live.`:null}function rT({fetched:e,changedFileCount:t,hasCommits:n}){return!e||t>0||n}function iT(e){return e||`its upstream`}function aT(e){if(!e)return null;let t=e.branch||`Base branch`,{state:n,ahead:r,behind:i}=e,a=iT(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 oT(e){return!e||e.fetched===!1?`recheck`:e.state===`ahead`||e.state===`behind`?`resync`:`recheck`}function sT(e,t,n){let r=n?` (${t})`:``;if(!e||oT(e)===`recheck`)return`Click to fetch and check again${r}`;let i=e.branch||`Base branch`,a=iT(e.upstream);return e.state===`behind`?`Click to fast-forward ${i} to ${a}${r}`:`Click to push ${i} to ${a}${r}`}function cT(e){return e?.state!==`in-sync`||e.fetched===!1}function lT({fetched:e,changedFileCount:t,view:n}){return!e||t===0?!1:n!==`diff`}function uT(e){if(e.error)return`Resync failed: ${e.error}`;let t=e.branch||`The base branch`,n=iT(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 dT=new Set([`pending-review`,`parked`]),fT=600,pT=bp(`merge`,Cp),mT=bp(`resolve-or-resync`,Cp),hT={minPx:260,maxPx:700},gT=16,_T=5e3,vT=new Map,yT=new Map,bT=new Map,xT=new Map,ST=new Map,CT=new Map,wT=new Set,TT=new Set,ET=new Set,DT=Xs(),OT=null,kT=null,AT=null,jT=null,MT=new Map,NT=null,PT=null,FT=null,IT=null,LT=null,RT=null,zT=!1,BT=null,VT=null,HT=null,UT=null,WT=new Map,GT=null,KT=null,qT=new Map,JT=null,YT=null,XT=null,ZT=null,QT=null,$T=new Map,eE=new Map,tE=0,nE=null,rE=!1,iE=null;function aE(e,t){let n=M(`button`,`review-icon-button`);return n.type=`button`,n.title=e,n.setAttribute(`aria-label`,e),n.append(Fg(t)),n}function oE(){zT=!1,AT?.querySelector(`.review-more-menu`)?.remove(),AT?.querySelector(`.review-more-button`)?.setAttribute(`aria-expanded`,`false`)}function sE({panel:e}){if(kT=e,!kT)return;let t=kT,n=M(`div`,`review-sidebar-head`),r=M(`span`,`review-sidebar-title`,`Review`);RT=M(`span`,`review-sidebar-session`),r.append(RT);let i=e=>{t.toggleAttribute(`data-collapsed`,e),Ys(!e)},a=M(`div`,`review-header-tabs`);a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,`Review view`);for(let[e,t]of[[`map`,`Map`],[`diff`,`Diff`],[`notes`,`Notes`]]){let n=M(`button`,`review-header-tab`,t);n.type=`button`,n.addEventListener(`click`,()=>mD(e)),MT.set(e,n),a.append(n)}NT=M(`span`,`review-notes-count`),a.append(NT);let o=aE(`Close review`,`M6 3L11 8L6 13`);o.classList.add(`review-sidebar-close`),o.addEventListener(`click`,()=>i(!0)),n.append(r,a,o);let s=M(`div`,`review-sidebar-rail`),c=aE(`Open review`,`M10 3L5 8L10 13`);c.classList.add(`review-sidebar-open`),c.addEventListener(`click`,()=>i(!1)),FT=M(`div`,`review-rail-status`),IT=M(`span`,`review-rail-added`),LT=M(`span`,`review-rail-removed`),FT.append(IT,LT),PT=M(`span`,`review-rail-label`,`Review`),s.append(c,PT,FT),AT=M(`div`,`review-controls`),jT=M(`div`,`review-sidebar-body`),JT=M(`div`,`review-notes-footer`),YT=M(`button`,`review-btn review-btn-primary`,`Send notes`),YT.type=`button`,YT.title=`Paste the drafted review notes into this session as one message`,YT.addEventListener(`click`,$E),XT=M(`div`,`review-notes-status`),JT.append(XT,YT),QT=M(`div`,`review-notes-list`),ZT=M(`div`,`review-notes-outcome`),ZT.setAttribute(`role`,`status`);let l=M(`div`,`review-resize-handle`);l.setAttribute(`role`,`separator`),l.setAttribute(`aria-orientation`,`vertical`),l.setAttribute(`aria-label`,`Resize review sidebar`),l.tabIndex=0,t.append(s,n,AT,jT,ZT,JT,l),t.toggleAttribute(`data-collapsed`,!Js()),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&zT&&(e.preventDefault(),oE(),AT?.querySelector(`.review-more-button`)?.focus())}),document.addEventListener(`pointerdown`,e=>{zT&&e.target instanceof Element&&(AT?.contains(e.target)&&e.target.closest(`.review-more-button, .review-more-menu`)||oE())}),Dg({resizer:l,column:t,widthHost:t,widthProperty:`--sidebar-width`,bounds:hT,keyStepPx:gT,getStoredWidth:Sc,setStoredWidth:Cc,growsLeftward:!0}),lv(e=>{zT=!1,HT=null,TT.clear(),ET.clear(),OT=null,KE(),e&&LE(e),e&&!zE(e)&&BE(e),bD()}),bD()}function cE(e){kT&&(e?xr(kT,e):Sr(kT))}function lE(e,t){let n=vT.get(e);vT.set(e,t),qw(n,t)&&(bT.delete(e),xT.delete(e),ST.delete(e),e===sv()&&RE(e)),e===sv()&&bD()}function uE(e,t,n=null){let r=t||`none`;yT.set(e,n);let i=WT.get(e);i!==void 0&&i!==r&&WT.delete(e),lE(e,r)}function dE(e){let t=wr(e);t&&WT.delete(t)&&t===sv()&&bD()}function fE(e,t,n=null){yT.set(e,n),WT.delete(e),lE(e,t||`none`)}function pE(e,t){let n=bT.get(e)??null;bT.set(e,t),xT.delete(e),e===sv()&&(_E(n,t),OT&&hD(OT,t),bD(),gD())}function mE(e,t){let n=wr(e);n&&(xT.set(n,t),n===sv()&&bD())}function hE(e,t){let n=wr(e);if(!n)return;let r=Mi.safeParse(t);r.success&&r.data.sessionId===n&&(ST.set(n,r.data),n===sv()&&bD())}function gE(e){return{committed:e?.committed?.diff||``,uncommitted:e?.uncommitted?.diff||``}}function _E(e,t){if(!e)return;let n=nE===null?[...$T.keys()]:[...$T.keys(),nE];if(n.length===0)return;let r=new Set(Gw(gE(e),gE(t),n));if(r.size===0)return;nE!==null&&r.has(nE)&&vE(nE);for(let e of r){let t=$T.get(e);t&&yE(t),$T.delete(e)}let i=eE.size;iE=i===0?null:`The diff changed under ${i} note${i===1?``:`s`}. ${i===1?`It is`:`They are`} kept under Notes as no longer attached and will not be sent.`}function vE(e){nE=null;let t=qT.get(e),n=jT?.querySelector(`[data-editor-for="${CSS.escape(e)}"] input`)?.value.trim()??``;t&&n&&$T.get(e)?.note!==n&&yE({...t.target,section:t.section,note:n})}function yE(e){eE.set(`orphan:${tE}`,e),tE+=1}function bE(e,t){let n=wr(e),r=t;CT.set(n,r),r&&r.action!==void 0&&xE(n,r),n===sv()&&bD()}function xE(e,t){wT.delete(e),clearTimeout(KT??void 0),KT=null;let n=uT(t);GT=n?{forId:e,text:n,isError:!!t.error}:null,GT&&!GT.isError&&(KT=setTimeout(()=>{GT&>.forId===e&&(GT=null),bD()},5e3))}function SE(e){let t=wr(e);t&&t===sv()&&LE(t)}function CE(e){let t=wr(e);if(t!==sv())return;let n=!bT.has(t)||xT.has(t),r=!ST.has(t)||wE(ST.get(t));n&&LE(t),r&&!n&&RE(t),bD()}function wE(e){return e?!!e.error||e.repos.some(e=>e.error!==null):!1}function TE(e){let t=wr(e);vT.delete(t),yT.delete(t),bT.delete(t),xT.delete(t),ST.delete(t),CT.delete(t),wT.delete(t),GT&>.forId===t&&(clearTimeout(KT??void 0),GT=null),t===sv()?cv(null):bD()}function EE(){let e=sv(),t=e?P.get(e):null;if(!e||!t)return DE(null,`No session is open to merge.`);if(zE(e))return DE(e,`A workspace session has no worktree to merge.`);if(WT.has(e))return DE(e,`Merge is already on its way for "${GE(t,e)}".`);let n=vT.get(e)||`none`,r=!!bT.get(e)?.hasCommits,i=tT(n,yT.get(e)||null,NE(t.currentState,r));return Zw({status:n,mergeReason:yT.get(e)||null,live:IE(t.currentState),isMergeRendered:i.isRendered,hasChanges:ME(e)})!==`merge`||!i.isEnabled?DE(e,nT({status:n,hasCommits:r,live:IE(t.currentState),state:t.currentState})??`Nothing to merge in "${GE(t,e)}" right now.`):(PE(e,t.currentState),!0)}function DE(e,t){return HT={forId:e,text:t},clearTimeout(UT??void 0),UT=setTimeout(()=>{HT=null,bD()},_T),bD(),!1}function OE(){let e=sv();if(!e||zE(e))return!1;let t=P.get(e);if(!t)return!1;let n=vT.get(e)||`none`,r=yT.get(e)||null;return Zw({status:n,mergeReason:r,live:IE(t.currentState),isMergeRendered:tT(n,r,!1).isRendered,hasChanges:ME(e)})!==`resolve`||kE(e)?!1:(AE(e),!0)}function kE(e){return BT?.forId===e&&!BT.isError}function AE(e){let t=K({type:`resolve-session-merge`,id:e});BT=t?{forId:e,text:`Resolve prompt sent`,isError:!1}:{forId:e,text:`Not connected. The resolve prompt was not sent.`,isError:!0},clearTimeout(VT??void 0),VT=setTimeout(()=>{BT=null,bD()},t?3e3:_T),bD()}function jE(){let e=sv();return!e||!P.has(e)||zE(e)||HE(e)?!1:(UE(e),!0)}function ME(e){let t=bT.get(e)??null,n=[...Uw(t?.committed?.diff||``),...Uw(t?.uncommitted?.diff||``)];return rT({fetched:bT.has(e),changedFileCount:Jw(n).files,hasCommits:!!t?.hasCommits})}function NE(e,t){return(Qn.includes(e)||e===j.RUNNING)&&t}function PE(e,t){t===j.RUNNING?Wd({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:()=>FE(e,!0)}):FE(e,!1)}function FE(e,t){WT.has(e)||(K(t?{type:`merge-continue-session`,id:e,force:!0}:{type:`merge-continue-session`,id:e})?(WT.set(e,vT.get(e)||`none`),e===sv()&&bD()):DE(e,`Not connected. The merge was not sent.`))}function IE(e){return e!==j.DORMANT&&e!==j.DONE&&e!==j.FAILED}function LE(e){K({type:`request-session-diff`,id:e}),RE(e)}function RE(e){ST.has(e)||ST.set(e,null),K({type:`request-change-map`,id:e})}function zE(e){return P.get(e)?.card.dataset.workspace!==void 0}function BE(e){CT.set(e,null),K({type:`request-branch-sync`,id:e}),e===sv()&&bD()}function VE(e){wT.add(e),clearTimeout(KT??void 0),GT&>.forId===e&&(GT=null),K({type:`resync-branch`,id:e}),e===sv()&&bD()}function HE(e){return wT.has(e)||CT.get(e)===null}function UE(e){HE(e)||(oT(CT.get(e))===`resync`?VE(e):BE(e))}function WE(e,t){return t?{text:`Resyncing`,loading:!0,error:!1}:GT&>.forId===e?{text:GT.text,loading:!1,error:GT.isError}:null}function GE(e,t){return e?.card?.dataset.session||t}function KE(){$T.clear(),eE.clear(),nE=null,iE=null,rE=!1}function qE(e){return $T.get(e)??null}function JE(){return`${$T.size} note${$T.size===1?``:`s`} drafted`}function YE(e,t,n){let r=M(`div`,`review-notes-entry`),i=t.side===`old`?` (removed line)`:``,a=n?`, no longer attached: the diff changed, not sent`:``;r.append(M(`span`,`review-notes-entry-where`,`${t.section} ${t.path}:${t.line}${i}${a}`)),r.append(M(`span`,`review-notes-entry-note`,t.note));let o=M(`button`,`review-note-remove`,`Remove`);return o.type=`button`,o.title=`Drop this note`,o.addEventListener(`click`,()=>n?fD(e):pD(e)),r.append(o),r}function XE(){if(QT){QT.replaceChildren(),QT.hidden=$T.size===0&&eE.size===0;for(let[e,t]of $T)QT.append(YE(e,t,!1));for(let[e,t]of eE)QT.append(YE(e,t,!0))}}function ZE(){if(!JT||!YT||!XT)return;let e=sv(),t=!!e&&P.has(e);JT.hidden=!t||DT===`map`||$T.size===0,YT.disabled=rE||$T.size===0,XT.textContent=JE(),NT&&(NT.hidden=$T.size===0,NT.textContent=String($T.size),NT.setAttribute(`aria-label`,JE())),ZT&&(ZT.textContent=rE?`Sending notes...`:iE,ZT.hidden=!t||DT===`map`||!ZT.textContent),XE(),DT===`notes`&&t&&QE()}function QE(){jT&&QT&&(jT.replaceChildren(),$T.size===0&&eE.size===0?wD(`No notes yet`,`Open the Diff tab and press note on a line to draft one.`):jT.append(QT))}function $E(){let e=sv();e&&!rE&&$T.size!==0&&(rE=!0,iE=null,ZE(),ad(`send-diff-annotations`,{id:e,annotations:[...$T.values()]}).then(nD,eD))}function eD(e){rE=!1;let t=e instanceof Error?e.message:``;iE=t?`Could not send the notes: ${t}.`:`Could not send the notes.`,ZE()}function tD(e){return e.type===`send-diff-annotations-result`&&typeof e.error==`string`&&e.error?e.error:e.type===`error`&&typeof e.message==`string`&&e.message?e.message:`Could not send the notes.`}function nD(e){rE=!1,e.type!==`send-diff-annotations-result`||e.ok!==!0?(iE=tD(e),ZE()):e.pending===!0?(iE=`Notes queued until the session wakes. They stay drafted here, and pressing Send notes again re-sends them.`,ZE()):(iE=`Notes sent.`,$T.clear(),nE=null,bD())}function rD(e,t){let n=M(`div`,`review-note`);n.dataset.noteFor=e,n.append(M(`span`,`review-note-text`,t));let r=M(`button`,`review-note-remove`,`Remove`);return r.type=`button`,r.title=`Drop this note`,r.addEventListener(`click`,()=>pD(e)),n.append(r),n}function iD(e,t){let n=M(`div`,`review-note-editor`);n.dataset.editorFor=e;let r=M(`input`,`review-note-input`);r.type=`text`,r.value=t,r.maxLength=_o,r.placeholder=`Note for this line`,r.addEventListener(`keydown`,t=>{t.key===`Enter`?(t.preventDefault(),dD(e,r.value)):t.key===`Escape`&&(t.preventDefault(),uD())});let i=M(`button`,`review-note-save`,`Save`);i.type=`button`,i.addEventListener(`click`,()=>dD(e,r.value));let a=M(`button`,`review-note-cancel`,`Cancel`);return a.type=`button`,a.addEventListener(`click`,uD),n.append(r,i,a),n}function aD(e){let t=[],n=qE(e);return nE===e&&t.push(iD(e,n?n.note:``)),n&&t.push(rD(e,n.note)),t}function oD(e,t){let n=aD(t);return e.after(...n),n}function sD(e){let t=e.nextElementSibling;for(;t instanceof HTMLElement&&(t.dataset.noteFor!==void 0||t.dataset.editorFor!==void 0);){let e=t.nextElementSibling;t.remove(),t=e}}function cD(e){let t=qT.get(e);if(!t)return;let n=null;for(let r of t.rows){sD(r);let t=oD(r,e);for(let e of t){let t=e.querySelector(`input`);!n&&t instanceof HTMLInputElement&&(n=t)}}n&&(n.focus(),n.select())}function lD(e){let t=nE;nE=e,t&&t!==e&&cD(t),cD(e)}function uD(){let e=nE;e&&(nE=null,cD(e))}function dD(e,t){let n=qT.get(e);if(!n)return;let r=t.trim();r&&($T.size>=50&&!$T.has(e)?(iE=`Only 50 notes can be sent at once.`,ZE()):($T.set(e,{...n.target,section:n.section,note:r}),iE=null,nE=null,cD(e),ZE()))}function fD(e){eE.delete(e),iE=null,ZE()}function pD(e){$T.delete(e),iE=null,cD(e),ZE()}function mD(e){DT=e,e!==`diff`&&(OT=null),Zs(e),bD()}function hD(e,t){if(!t)return;let n=Uw(t.committed?.diff),r=Uw(t.uncommitted?.diff);for(let t of n)(t.path===e||t.oldPath===e)&&TT.add(`committed:${t.path}`);for(let t of r)(t.path===e||t.oldPath===e)&&TT.add(`uncommitted:${t.path}`)}function gD(){if(!jT||!OT)return;let e=jT.querySelectorAll(`.review-file`);for(let t of e)if(t.dataset.path===OT||t.dataset.oldPath===OT){t.scrollIntoView({block:`nearest`}),OT=null;return}}function _D(e){OT=e,hD(e,bT.get(sv()??``)),mD(`diff`),gD()}function vD(){if(nE===null||!jT)return null;let e=jT.querySelector(`[data-editor-for="${CSS.escape(nE)}"] input`);return e?{noteKey:nE,text:e.value,selectionStart:e.selectionStart,selectionEnd:e.selectionEnd,hadFocus:document.activeElement===e}:null}function yD(e){if(!e||e.noteKey!==nE||!jT)return;let t=jT.querySelector(`[data-editor-for="${CSS.escape(e.noteKey)}"] input`);t&&(t.value=e.text,e.hadFocus&&(t.focus({preventScroll:!0}),t.setSelectionRange(e.selectionStart,e.selectionEnd)))}function bD(){let e=vD(),t=jT?.scrollTop??0;xD(),yD(e),jT&&(jT.scrollTop=t)}function xD(){if(!AT||!jT)return;AT.replaceChildren(),jT.replaceChildren();for(let[e,t]of MT)t.setAttribute(`aria-pressed`,String(DT===e));qT.clear(),ZE(),PT&&(PT.hidden=!0),FT&&(FT.hidden=!0);let e=sv(),t=e?P.get(e):null;if(CD(e,t),!e||!t){HT&&AT.append(SD(HT.text,!0)),wD(`No session selected`,`Click a session name to review its changes here.`);return}let n=zE(e),r=vT.get(e)||`none`,i=yT.get(e)||null,a=t.currentState,o=dT.has(r),s=bT.has(e),c=s?bT.get(e):null,l=xT.get(e)??null,u=c?Uw(c.committed?.diff||``):[],d=c?Uw(c.uncommitted?.diff||``):[],f=!!c?.hasCommits,p=IE(a),m=tT(r,i,NE(a,f)),h=CT.get(e),g=wT.has(e),_=Qw(t.effectiveBase),v=Jw([...u,...d]),y=Zw({status:r,mergeReason:i,live:p,hasChanges:rT({fetched:s,changedFileCount:v.files,hasCommits:f}),isMergeRendered:m.isRendered}),b=Yw({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:_}),x=M(`div`,`review-status-headline`);if(x.append(M(`span`,`review-status-text`,b.text)),!n&&!cT(h)){let t=aT(h);if(t){x.title=t;let n=aE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);n.classList.add(`review-branch-sync-refresh`),n.title=sT(h,mT,y!==`resolve`),n.disabled=HE(e),n.setAttribute(`aria-description`,t),n.addEventListener(`click`,()=>UE(e)),x.append(M(`span`,`sr-only`,t),n)}}AT.append(x);let S=M(`div`,`review-status-meta`);if(lT({fetched:s,changedFileCount:v.files,view:DT})&&S.append(M(`span`,`review-status-files`,`${v.files} file${v.files===1?``:`s`}`),M(`span`,`review-status-added`,`+${v.added}`),M(`span`,`review-status-removed`,`-${v.removed}`),M(`span`,`review-status-spacer`)),!n&&cT(h)){let t=TD(e,y!==`resolve`);t&&S.append(t)}S.childElementCount>0&&AT.append(S),r===`parked`&&AT.append(M(`div`,`review-status-explanation`,eT(i))),PT&&(PT.hidden=!1),FT&&(FT.hidden=!1,FT.setAttribute(`aria-label`,`${b.text}, +${v.added}, -${v.removed}`),FT.title=b.text),IT&&(IT.textContent=`+${v.added}`),LT&&(LT.textContent=`-${v.removed}`);let ee=n?null:kD(e,{status:r,reviewable:o,mergeAction:m,live:p,state:a,effectiveBase:_,primaryAction:y});ee&&AT.append(ee);let te=n?null:WE(e,g),C=!n&&y===`merge`&&!m.isEnabled?nT({status:r,hasCommits:f,live:p,state:a}):null;if(C){let e=M(`div`,`review-control-reason`,C);e.id=`review-merge-reason`,AT.append(e),AT.querySelector(`#review-merge-btn`)?.setAttribute(`aria-describedby`,e.id)}if(te?.text){let e=M(`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||AT.insertBefore(S,x.nextSibling),AT.querySelector(`.review-branch-sync-button, .review-branch-sync-refresh`)?.setAttribute(`aria-describedby`,e.id)}if(BT?.forId===e&&AT.append(SD(BT.text,BT.isError)),HT&&(HT.forId===e||HT.forId===null)&&AT.append(SD(HT.text,!0)),DT!==`notes`){if(DT===`map`){let t=ST.get(e);if(!t){jT.append(M(`div`,`review-nochanges review-loading`,`Loading map...`));return}jT.append(Vw(Rw(t),_D))}else l?jT.append(M(`p`,`review-diff-error`,l)):(u.length>0&&jT.append(ED(`committed`,`Committed`,Xw(b,_),u)),d.length>0&&jT.append(ED(`uncommitted`,`Uncommitted`,null,d)))}}function SD(e,t){let n=M(`div`,t?`review-control-reason review-control-reason-error`:`review-resolve-sent`,e);return n.setAttribute(`role`,`status`),n}function CD(e,t){if(!RT)return;let n=e&&t?GE(t,e):``;RT.textContent=n,RT.hidden=!n,RT.title=n}function wD(e,t){if(!jT)return;let n=M(`div`,`review-empty`);n.append(M(`div`,`review-empty-title`,e),M(`div`,`review-empty-desc`,t)),jT.append(n)}function TD(e,t){let n=CT.get(e);if(n===void 0)return null;if(n===null)return M(`span`,`review-branch-sync-text review-loading`,`Checking branch sync...`);let r=aT(n)||`Base branch: sync state unknown`,i=M(`span`,`review-branch-sync-text`);n.state&&(i.dataset.syncState=n.state),n.fetched===!1&&(i.dataset.stale=`true`);let a=aE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);return a.classList.add(`review-branch-sync-button`),a.title=sT(n,mT,t),a.disabled=wT.has(e),a.addEventListener(`click`,()=>UE(e)),i.append(a,M(`span`,`review-branch-sync-label`,r)),i}function ED(e,t,n,r){let i=M(`div`,`review-section`);i.dataset.kind=e;let a=Jw(r),o=M(`div`,`review-section-head`),s=M(`div`,`review-section-id`);s.append(M(`span`,`review-section-label`,t)),n&&s.append(M(`span`,`review-section-meaning`,n)),o.append(s);let c=M(`div`,`review-section-stat`);c.append(M(`span`,`review-stat-files`,`${a.files} file${a.files===1?``:`s`}`)),c.append(M(`span`,`review-add`,`+${a.added}`),M(`span`,`review-del`,`-${a.removed}`)),o.append(c),i.append(o);let l=M(`div`,`review-diff`);for(let t of r)l.append(DD(t,e));return i.append(l),i}function DD(e,t){let n=`${t}:${e.path}`,r=TT.has(n),i=M(`div`,`review-file`);i.dataset.path=e.path,e.oldPath&&(i.dataset.oldPath=e.oldPath),i.dataset.status=e.status,i.dataset.open=r?`true`:`false`;let a=M(`button`,`review-file-head`);a.type=`button`,a.setAttribute(`aria-expanded`,r?`true`:`false`);let o=M(`span`,`review-file-twisty`,r?`▾`:`▸`);o.setAttribute(`aria-hidden`,`true`),a.append(o,M(`span`,`review-file-path`,e.path));let s=M(`span`,`review-file-counts`);if(e.binary&&s.append(M(`span`,`review-bin`,`bin`)),e.binary||s.append(M(`span`,`review-add`,`+${e.added}`),M(`span`,`review-del`,`-${e.removed}`)),a.append(s),a.addEventListener(`click`,()=>{let e=TT.has(n);e&&TT.delete(n),e||TT.add(n),bD()}),i.append(a),!r)return i;let c=M(`div`,`review-file-body`);if(e.binary)return c.append(M(`div`,`review-file-binary`,`Binary file not shown`)),i.append(c),i;let l=0,u=!1;for(let r of e.hunks){if(l>=fT&&!ET.has(n)){u=!0;break}c.append(M(`div`,`review-hunk-head`,r.header));for(let i of r.lines){if(l>=fT&&!ET.has(n)){u=!0;break}let r=M(`div`,`review-line review-line-${i.type}`),a=i.type===`add`?`+`:i.type===`del`?`-`:i.type===`meta`?`\\`:` `;r.append(M(`span`,`review-line-gutter`,a)),r.append(M(`span`,`review-line-text`,i.text));let o=Kw(e,i);if(c.append(r),l++,!o)continue;let s=Ww(t,o.path,o.line,o.side),d=qT.get(s)??{target:o,section:t,rows:[]};d.rows.push(r),qT.set(s,d),r.dataset.noteKey=s;let f=M(`button`,`review-annotate`,`note`);f.type=`button`,f.title=`Note on ${o.path}:${o.line}`,f.addEventListener(`click`,()=>lD(s)),r.append(f),oD(r,s)}if(u)break}if(u){let e=M(`button`,`review-expand`,`Show the rest of this file`);e.type=`button`,e.addEventListener(`click`,()=>{ET.add(n),bD()}),c.append(e)}return i.append(c),i}function OD({id:e,label:t,shortcut:n,title:r,disabled:i=!1,danger:a=!1,onClick:o}){let s=M(`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 kD(e,{status:t,reviewable:n,mergeAction:r,live:i,state:a,effectiveBase:o,primaryAction:s}){let c=M(`div`,`review-actions`),l=s===`resolve`;s===`merge`&&c.append(OD({id:`review-merge-btn`,label:`Merge`,shortcut:pT,title:$w(o,pT),disabled:!r.isEnabled||WT.has(e),onClick:()=>PE(e,a)})),l&&c.append(OD({label:`Resolve`,shortcut:mT,title:`Paste a resolve prompt into this session so the agent can finish the merge (${mT})`,disabled:kE(e),onClick:()=>AE(e)}));let u=M(`div`,`review-action-controls`);if(u.append(c),!n||i)return c.childElementCount>0?u:null;let d=aE(`More review actions`,Pg);if(d.classList.add(`review-more-button`),d.setAttribute(`aria-haspopup`,`menu`),d.setAttribute(`aria-expanded`,String(zT)),d.setAttribute(`aria-controls`,`review-more-menu`),d.addEventListener(`click`,()=>{zT=!zT,bD(),(AT?.querySelector(zT?`.review-more-menu button:not(:disabled)`:`.review-more-button`)??AT?.querySelector(`.review-more-button`))?.focus()}),c.append(d),!zT)return u;let f=M(`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=OD({label:`Discard worktree`,danger:!0,disabled:t===`merging`,onClick:()=>{zT=!1,bD(),Wd({title:`Discard worktree`,message:`Throw away the worktree changes for "${GE(P.get(e),e)}"? This cannot be undone.`,confirmLabel:`Discard`,danger:!0,onConfirm:()=>K({type:`discard-session-worktree`,id:e})})}});n.setAttribute(`role`,`menuitem`),f.append(n)}return u.append(f),u}var AD=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 jD(e){let t=e.split(/\r?\n/,1)[0]?.trim()??``;return t.length<=160?t:`${t.slice(0,157)}...`}function MD(e,t){let n=AD[e];if(!n||!t||typeof t!=`object`||Array.isArray(t))return``;let r=t[n];return typeof r==`string`?jD(r):``}var ND=5e3;function PD(e){let t=e.match(/<command-name>([^<]*)<\/command-name>/)?.[1];return t===void 0||/[\r\n]/.test(t)?null:t.trim()||null}function FD(e,t){if(!e.toolUseId)return PD(e.text)??`context`;let n=t.get(e.toolUseId);return n?MD(n.name,n.input)||n.name:`expansion`}function ID(e){return e.kind!==`expansion`||e.toolUseId?!1:PD(e.text)!==null}function LD(e){return e.kind===`prompt`||e.kind===`session`||ID(e)}function RD(e){return new TextEncoder().encode(e).byteLength}function zD(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(`
|
|
136
|
-
`)}var BD={prompt:`PROMPT`,expansion:`EXPANSION`,thinking:`THINKING`,assistant:`ASSISTANT`,tool_call:`TOOL`,tool_result:`RESULT`,session:`SESSION`,notice:`NOTICE`,raw:`RAW`},VD=[{kind:`thinking`,label:`Thinking`},{kind:`tool_result`,label:`Tool result`},{kind:`raw`,label:`Raw`}];function HD(e,t){if(e.kind===`prompt`)return{prefix:`Prompt: `,text:jD(e.text)};if(e.kind===`thinking`)return{prefix:`Thinking: `,text:jD(e.text)};if(e.kind===`assistant`)return{prefix:`Assistant: `,text:jD(e.text)};if(e.kind===`notice`)return{prefix:`Notice: `,text:jD(e.text)};if(e.kind===`raw`)return{prefix:`Raw: `,text:jD(e.line)};if(e.kind===`session`)return{prefix:`Session: `,text:`${e.vendor} ${e.vendorSessionId}`};if(e.kind===`expansion`)return{prefix:`Expansion: `,text:FD(e,t)};if(e.kind===`tool_call`){let t=MD(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:`${RD(e.content)} bytes`}}function UD(e){if(!e.agentType)return``;let t=e.agentId?` ${e.agentId.slice(-6)}`:``;return`[${e.agentType}${t}] `}function WD(e,t){let n=HD(e,t),r=UD(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:BD[e.kind],text:`${r}${i}`,tone:o,badges:a}}function GD(e,t){return{record:e,...WD(e,t)}}function KD(e){return e.kind!==`tool_result`&&e.kind!==`expansion`?null:e.toolUseId||null}function qD(e,t){let n=KD(e);return!n||t.has(n)?null:n}function JD(e,t,n=1){e.set(t,(e.get(t)??0)+n)}function YD(e,t){let n=(e.get(t)??0)-1;n>0?e.set(t,n):e.delete(t)}function XD(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=KD(i.record);a&&t.has(a)&&(n.rows[r]=GD(i.record,e.toolCallByUseId))}}function ZD(){return{turns:[],toolCallByUseId:new Map,unresolvedToolUseCounts:new Map}}function QD(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 $D(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`}`}, ${ml(i,`KB`)}, ${Vl(QD(e))}`}function eO(){return{rowCount:0,toolCallCount:0,errorCount:0,resultBytes:0}}function tO(e,t,n){e.metrics.rowCount+=n,t.record.kind===`tool_call`&&(e.metrics.toolCallCount+=n),t.record.kind===`tool_result`&&(e.metrics.resultBytes+=RD(t.record.content)*n,t.record.isError&&(e.metrics.errorCount+=n))}function nO(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=qD(i,e.toolCallByUseId);t&&JD(e.unresolvedToolUseCounts,t);let a=GD(i,e.toolCallByUseId);if(LD(i)){r={head:a,rows:[],hasTrimmedRows:!1,startedAt:i.ts,metrics:eO()},tO(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:eO()},e.turns.push(r),n.push({turnIndex:e.turns.length-1,isNewTurn:!0,head:null,rows:[]})),r.rows.push(a),tO(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 rO(e,t){let n=ZD();nO(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)||JD(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],XD(e,i),{newTurns:n.turns,mergedHead:c,mergedRows:l,needsRerender:i.size>0}}function iO(e){return e.rows.length+ +!!e.head}function aO(e){let t=0;for(let n of e.turns)t+=iO(n);return t}function oO(e,t){for(let n of t){if(n.record.kind===`tool_call`){e.toolCallByUseId.delete(n.record.toolUseId);continue}let t=KD(n.record);t&&YD(e.unresolvedToolUseCounts,t)}}function sO(e,t){oO(e,t.head?[t.head,...t.rows]:t.rows)}function cO(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);oO(e,i);for(let e of i)tO(n,e,-1);return n.rows=n.rows.slice(r),n.hasTrimmedRows=!0,r}function lO(e,t=ND){let n=aO(e),r=0;for(;n>t&&r<e.turns.length-1;){let t=e.turns[r];if(!t)break;n-=iO(t),sO(e,t),r+=1}return r>0&&(e.turns=e.turns.slice(r)),n<=t?{droppedTurnCount:r,droppedRowCount:0}:{droppedTurnCount:r,droppedRowCount:cO(e,n-t)}}function uO(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 dO(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 fO(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 pO(e,t=ND){return!e.selectedSessionId||!e.hasLoadedOnce||e.hasDroppedEarliestRows||e.residentRowCount>=t?!1:e.firstOffset>0}function mO(e,t=ND){return!pO(e,t)||e.hasPendingRequest||!e.selectedSessionId?null:{id:e.selectedSessionId,direction:`earlier`,after:0,endingAt:e.firstOffset}}function hO(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 gO(e){return e.hasSelectionChanged||e.isRenderedTraceStale||!e.hasRenderedOnce}function _O(e,t,n){return e!==0||t?null:n?.startedAt??null}function vO(e,t){return yO(e,t)?e.filter(e=>e!==t):[...e,t]}function yO(e,t){return e.includes(t)}function bO(e){return e?`No trace has been recorded for ${e.label}.`:`No sessions are available.`}var xO=1e4,SO=null,CO=null,wO=null,TO=null,EO=[],DO=!1,OO=oc(),kO=null,AO=null,jO=[],MO=null,NO=null,J=null,PO=null,FO=!1,IO=null;function LO(){return!!SO&&!yr(SO)}function RO(){return jO.find(e=>e.id===MO)??null}function zO(){PO&&=(clearTimeout(PO.timeoutHandle),null)}function BO(){PO=null,IO=`The trace did not load within ${Math.round(xO/1e3)} s.`,uk()}function VO(e){zO(),FO=!1,IO=null,MO=e,J=e?{sessionId:e,grouping:ZD(),firstOffset:0,nextOffset:0,hasDroppedEarliestRows:!1,filePath:``,hasLoadedOnce:!1}:null,DO=!0}function HO(e){let t=dO(jO,NO,MO,e);return NO&&t===NO&&(NO=null),t!==MO&&(VO(t),!0)}function UO(e){if(!kO)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};kO(t)?PO={request:e,timeoutHandle:setTimeout(BO,xO)}:(IO=G,dk())}function WO(e=!1){if(!kO)return;let t=fO({selectedSessionId:MO,isPanelVisible:e||LO(),hasPendingRequest:!!PO,hasLoadedOnce:J?.hasLoadedOnce??!1,nextOffset:J?.nextOffset??0});t&&UO(t)}function GO(){return{selectedSessionId:MO,hasPendingRequest:!!PO,hasLoadedOnce:J?.hasLoadedOnce??!1,hasDroppedEarliestRows:J?.hasDroppedEarliestRows??!1,firstOffset:J?.firstOffset??0,residentRowCount:J?aO(J.grouping):0}}function KO(){if(!kO)return;let e=mO(GO());e&&UO(e)}function qO(e){jO.some(t=>t.id===e)&&e!==MO&&(NO=null,VO(e),WO(),uk())}function JO(){let e=M(`label`,`trace-session-field`),t=M(`span`,`trace-session-label`,`Session`),n=M(`select`,`trace-session-select`);n.disabled=jO.length===0;for(let e of jO){let t=M(`option`,null,e.label);t.value=e.id,t.selected=e.id===MO,n.append(t)}return n.addEventListener(`change`,()=>qO(n.value)),e.append(t,n),e}function YO(e){e.toggleAttribute(`data-hidden`,yO(OO,e.dataset.kind??``))}function XO(){if(wO)for(let e of wO.querySelectorAll(`.trace-row`))YO(e)}function ZO(e){if(wO)for(let t of wO.querySelectorAll(`details`))t.open=e}function QO(){let e=M(`div`,`trace-filters`);for(let t of VD){let n=M(`button`,`trace-filter`,t.label);n.type=`button`;let r=()=>{n.setAttribute(`aria-pressed`,String(!yO(OO,t.kind)))};r(),n.addEventListener(`click`,()=>{OO=vO(OO,t.kind),sc(OO),r(),XO()}),e.append(n)}for(let[t,n]of[[`Expand all`,!0],[`Collapse all`,!1]]){let r=M(`button`,`trace-expand-control`,t);r.type=`button`,r.addEventListener(`click`,()=>{ZO(n)}),e.append(r)}return e}function $O(){let e=gr(`trace`,`Session trace`,`Bodies load from the local trace file only when requested.`),t=M(`div`,`trace-controls`);t.append(JO());let n=J?.filePath??``,r=M(`code`,`trace-path`,n);r.title=n,t.append(r);let i=J?_O(J.firstOffset,J.hasDroppedEarliestRows,J.grouping.turns[0]):null;if(i!==null&&t.append(M(`span`,`trace-session-start`,`Started ${new Date(i).toLocaleString()}`)),e.append(t,QO()),!IO)return e;let a=hd(`trace-status`);return a.show(`error`,IO),e.append(a.element),e}function ek(e){let t=M(`div`,`trace-copy-wrap`),n=M(`button`,`trace-copy`,`Copy`);n.type=`button`;let r=M(`span`,`trace-copy-status`);return r.setAttribute(`role`,`status`),n.addEventListener(`click`,()=>{let t=br(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 tk(){let e=M(`div`,`trace-earlier-wrap`),t=M(`button`,`trace-load-earlier`,`Load earlier`);return t.type=`button`,t.addEventListener(`click`,()=>{KO()}),e.append(t),e}function nk(e,t,n=``){let r=M(`details`,`trace-row${n?` ${n}`:``}`);r.dataset.kind=e.kind,r.dataset.tone=e.tone,YO(r);let i=M(`summary`,`trace-row-summary`);i.append(M(`span`,`trace-offset`,Hl(t,e.record.ts)),M(`span`,`trace-kind`,e.tag),M(`span`,`trace-row-label`,e.text));for(let t of e.badges){let e=M(`span`,`trace-badge`,t);e.dataset.badge=t,i.append(e)}let a=M(`div`,`trace-row-body`);r.append(i,a);let o=!1;return r.addEventListener(`toggle`,()=>{if(!r.open||o)return;o=!0;let t=zD(e.record);a.append(ek(t),M(`pre`,`trace-row-pre`,t))}),r}function rk(e){return M(`span`,`trace-turn-metrics`,$D(e))}function ik(e,t){e&&t&&(t.textContent=$D(e))}function ak(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=Hl(t.startedAt,t.rows[e].record.ts))}}function ok(e,t,n){let r=nk(t,e.startedAt,`trace-turn-head`);return dr(r,`.trace-row-summary`).append(n),r}function sk(e){let t=M(`section`,`trace-turn`),n=rk(e);if(e.head&&t.append(ok(e,e.head,n)),!e.head){let e=M(`h2`,`trace-leading-title`);e.append(M(`span`,`trace-leading-label`,`Before first prompt`),n),t.append(e)}let r=M(`div`,`trace-rows`);for(let t of e.rows)r.append(nk(t,e.startedAt));return e.hasTrimmedRows&&t.append(M(`p`,`trace-trimmed`,`Earlier rows trimmed`)),t.append(r),{section:t,rowsElement:r,metricsElement:n}}function ck(e){return e?PO?.request.id===e.id&&!J?.hasLoadedOnce?`Loading trace.`:bO(e):bO(null)}function lk(){if(!SO)return;let e=M(`div`,`trace-content`);CO=$O(),e.append(CO),wO=null,TO=null,EO=[];let t=RO(),n=J?.grouping.turns??[];if(!t||n.length===0){e.append(M(`p`,`trace-empty`,ck(t))),SO.replaceChildren(e),DO=!1;return}pO(GO())&&(TO=tk(),e.append(TO));let r=M(`div`,`trace-turns`);for(let e of n){let t=sk(e);EO.push(t),r.append(t.section)}wO=r,XO(),e.append(r),SO.replaceChildren(e),DO=!1}function uk(){SO&&(LO()?lk():DO=!0)}function dk(){if(!CO||!LO())return;let e=$O();CO.replaceWith(e),CO=e}function fk(e){if(!wO)return;let t=J?.grouping.turns[e.turnIndex];if(!t)return;if(e.isNewTurn){let e=sk(t);EO.push(e),wO.append(e.section);return}let n=EO[e.turnIndex];if(n){for(let r of e.rows)n.rowsElement.append(nk(r,t.startedAt));ik(t,n.metricsElement)}}function pk(e){let t=e.parentElement;t&&!t.querySelector(`.trace-trimmed`)&&t.insertBefore(M(`p`,`trace-trimmed`,`Earlier rows trimmed`),e)}function mk(){pO(GO())?!TO&&wO?.parentElement&&(TO=tk(),wO.parentElement.insertBefore(TO,wO)):(TO?.remove(),TO=null)}function hk(){if(!J)return;let e=lO(J.grouping);if(!(e.droppedTurnCount>0||e.droppedRowCount>0)){mk();return}let t=!J.hasDroppedEarliestRows;if(J.hasDroppedEarliestRows=!0,EO=EO.slice(e.droppedTurnCount),wO)for(let t=0;t<e.droppedTurnCount;t+=1)wO.firstElementChild?.remove();let n=EO[0];if(n&&e.droppedRowCount>0){for(let t=0;t<e.droppedRowCount;t+=1)n.rowsElement.firstElementChild?.remove();pk(n.rowsElement),ik(J.grouping.turns[0],n.metricsElement)}t&&dk(),mk()}function gk(e){if(!J)return;let t=nO(J.grouping,e);if(LO()&&!DO&&wO){for(let e of t)fk(e);hk()}else wO=null,hk(),LO()?lk():DO=!0}function _k(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 vk(){FO&&!PO&&(FO=!1,WO())}function yk(e){if(!wO)return;let t=EO[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=rk(r),o=ok(r,e.mergedHead,a);n.insertBefore(o,i),t.metricsElement=a}e.mergedHead||ik(r,t.metricsElement);let a=document.createDocumentFragment();for(let t of e.mergedRows)a.append(nk(t,r.startedAt));i.prepend(a),ak(i,r)}let i=document.createDocumentFragment(),a=[];for(let t of e.newTurns){let e=sk(t);a.push(e),i.append(e.section)}wO.prepend(i),EO.unshift(...a)}function bk(e){if(!J)return;let t=rO(J.grouping,e),n=LO()&&!DO&&!!wO&&!t.needsRerender,r=SO?.parentElement??null,i=r?.scrollHeight??0,a=r?.scrollTop??0;n&&yk(t),hk(),n||uk(),n&&dk(),r&&(r.scrollTop=a+r.scrollHeight-i)}function xk(e){SO||(SO=M(`div`,`trace-panel`),e.append(SO),lk())}function Sk(e){kO=e}function Ck(e){AO=e}function wk(e){NO=e,AO?.()}function Tk(e){jO=uO(e);let t=HO(LO());t&&WO(),(t||!CO)&&uk(),!t&&CO&&dk()}function Ek(){if(!SO)return;let e=HO(!0);WO(!0),gO({hasSelectionChanged:e,isRenderedTraceStale:DO,hasRenderedOnce:!!CO})&&lk()}function Dk(e){let t=_k(e);if(!t)return;let n=hO({pendingRequest:PO?.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`?vk():(zO(),IO&&(IO=null,dk()),n===`stale`?vk():n===`reset`?(VO(t.id),J&&(J.filePath=t.path),WO(),uk(),vk()):J&&(J.filePath=t.path,n===`prepend`?(J.firstOffset=t.start,bk(t.records),vk()):(n===`seed`&&(J.hasLoadedOnce=!0,J.firstOffset=t.start),J.nextOffset=t.next,gk(t.records),vk())))}function Ok(e){let t=e?.id;typeof t==`string`&&t===MO&&LO()&&(PO?FO=!0:WO())}function kk(e){let t=e?.id;if(typeof t!=`string`||PO?.request.id!==t)return!1;zO(),FO=!1;let n=e?.message;return IO=typeof n==`string`&&n?n:`The trace could not be read.`,uk(),!0}function Ak(e){zO(),FO=!1,IO=e?null:G,e?(dk(),WO()):uk()}var jk=`Estimated list prices, not a bill.`,Mk=`Enable in Settings.`,Nk=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}]),Pk=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Fk=/^(\d{4})-(\d{2})-(\d{2})$/,Ik=new Set([`day`,`model`,`label`]),Lk=new Set([`model`,`label`]);function Rk(e){return e.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function zk(e){return e.includes(`.`)?e.replace(/0+$/,``).replace(/\.$/,``):e}function Bk(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=Math.round(e);return`${t<0?`-`:``}${Rk(String(Math.abs(t)))}`}function Vk(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}$${Rk(r)}.${i}`}function Hk(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}${zk((n/1e3).toFixed(1))}k`:n<999995e3?`${t}${zk((n/1e6).toFixed(2))}M`:`${t}${zk((n/1e9).toFixed(2))}B`}function Uk(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${zk(e.toFixed(1))}%`}function Wk(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function Gk(e){return e===`costUSD`?`share of cost`:`share of tokens`}function Kk(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function qk(e){let t=Fk.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=Pk[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function Jk(e){let t=Yk(e);return t.length===0?``:t.length===1?qk(t[0]):`${qk(t[0])} to ${qk(t[t.length-1])}`}function Yk(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>Fk.test(e)).sort()}function Xk(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:Zk(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function Zk(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=Qk(e,n);return Fk.test(r)?r:Qk(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function Qk(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function $k(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:fl(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function eA(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=Pk[n.getMonth()];return r?`${r} ${n.getDate()} ${gl(n)}`:`-`}function tA(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${Hk(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:Hk(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:Vk(e.costPerHour),sub:``}),t}function nA(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${Hk(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(Vk(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${$k(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 rA(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 iA(e){return typeof e!=`number`||!Number.isFinite(e)?`ok`:e>=100?`crit`:e>=80?`warn`:`ok`}function aA(e){let t=W(e?.max,null);return t===null||t<=0?null:t}function oA(e){let t=aA(e),n=W(e?.pct,null);return t===null||n===null?null:n*100}function sA(e,t){let n=aA(t),r=W(e?.projectedTokens,null);return n===null||r===null?null:r/n*100}function cA(e){let t=oA(e);return t===null?``:`${Math.round(t)}% of ${Hk(e?.max)} tokens, the largest completed block seen`}function lA(e,t){let n=sA(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 uA=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function dA(e){let t=uA.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=Kk(e.tokens,n)??0,r=Hk(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${Uk(t)}`}})}var fA=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`}),pA=`Sessions spawned by Glimmervoid; terminal sessions count as other`,mA=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function hA(e){let t=U(e,``);return t?fA[t]||t:fA.other}function gA(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function _A(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function vA(e){return gA(e).some(e=>_A(e.lane))}var yA=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function bA(e,t,n){let r=vj(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function xA(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+W(t.costUSD,0),0),o=i.reduce((e,t)=>e+W(t.tokens,0),0),s=i.filter(e=>_A(e.lane)).map(e=>({lane:String(e.lane),label:hA(e.lane),tokens:W(e.tokens,0),costUSD:W(e.costUSD,0)})),c=s.reduce((e,t)=>e+t.costUSD,0),l=s.reduce((e,t)=>e+t.tokens,0),u=a>0?Kk(c,a):Kk(l,o),d=bA(n,e,r),f=u===null||d===null?null:u/100*d;return{key:e,label:yA[e],tokens:l,costUSD:c,sharePct:u,planPct:f,lanes:s}}function SA(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:_j.map(e=>xA(e.key,r[e.key],t,n)).filter(e=>e!==null)}function CA(e){return e.planPct===null?``:`about ${Uk(e.planPct)} of plan`}function wA(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?Vk(e.costUSD):Hk(e.tokens)}`).join(`, `)}var TA=`team-review`;function EA(e){if(!Array.isArray(e?.byLane))return null;let t=gA(e).find(e=>e.lane===TA),n=W(t?.costUSD,0),r=W(t?.tokens,0),i=Wk(e?.totals),a=Kk(i===`costUSD`?n:r,e?.totals?.[i]),o=a===null?``:`${Uk(a)} of range ${i===`costUSD`?`cost`:`tokens`}`,s=[Vk(n),o,DA(t?.sessions)].filter(Boolean).join(`, `);return{label:hA(TA),value:Hk(r),sub:s}}function DA(e){let t=W(e,null);return t===null||t<=0?``:`${Bk(t)} ${t===1?`session`:`sessions`}`}function OA(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function kA(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function AA(e){return OA(e)!==null||kA(e)!==null}function jA(e){let t=OA(e);if(!t)return null;let n=W(t.commands,0),r=n===1?`command`:`commands`;return{value:`${Hk(W(t.savedTokens,0))} tokens`,sub:`${Uk(W(t.savingsPct,0))} avg across ${Bk(n)} ${r}`}}function MA(e){let t=kA(e);if(!t)return null;let n=Hk(W(t.cacheReadTokens,0)),r=(Array.isArray(t.unpricedModels)?t.unpricedModels:[]).filter(e=>e),i=`${n} cache read tokens`;if(r.length===0)return{value:Vk(W(t.savedUSD,0)),sub:i};let a=r.length===1?`model`:`models`;return{value:Vk(W(t.savedUSD,0)),sub:`${i}, a floor (${r.length} unpriced ${a})`}}function NA(e){let t=e?.budget?.rows;return Array.isArray(t)?t.filter(e=>e&&W(e.budgetUsd,null)!==null):[]}function PA(e){return e===`monthly`?`this month`:`today`}function FA(e){return`${Vk(W(e?.spentUsd,0))} of ${Vk(W(e?.budgetUsd,0))}`}function IA(e){let t=W(e?.pct,null);return t===null?0:t}function LA(e){return`${PA(e?.scope)} spend against budget`}var RA=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function zA(e){let t=Fk.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function BA(e){let t=zA(e);if(!t)return``;let n=(t.getDay()+6)%7;return t.setDate(t.getDate()-n),hl(t)}function VA(e){let t=Fk.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function HA(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 UA(e,t){e.tokens+=W(t?.tokens,0),e.costUSD+=W(t?.costUSD,0),e.input+=W(t?.input,0),e.output+=W(t?.output,0),e.cacheCreate+=W(t?.cacheCreate,0),e.cacheRead+=W(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=Vj(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+=W(t?.tokens,0),r.costUSD+=W(t?.costUSD,0),r.input+=W(t?.input,0),r.output+=W(t?.output,0),r.cacheCreate+=W(t?.cacheCreate,0),r.cacheRead+=W(t?.cacheRead,0),e.modelByName.set(n,r)}}function WA(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 GA(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)||HA(r);UA(i,e),n.set(r,i)}return Array.from(n.values()).map(WA)}function KA(e){return GA(e,BA)}function qA(e){return GA(e,VA)}function JA(e,t){return t===`week`?KA(e):t===`month`?qA(e):Array.isArray(e)?[...e]:[]}var YA=/^(\d{4})-(\d{2})$/;function XA(e,t){if(t===`month`){let t=YA.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=Pk[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=qk(e);return t===`-`?t:`week of ${t}`}return qk(e)}function ZA(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var QA=Object.freeze([.05,.25,.5,.75]),$A=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function ej(e,t){let n=W(e,0),r=W(t,0);if(n<=0||r<=0)return 0;let i=n/r,a=1;for(let e=0;e<QA.length;e+=1)i>=QA[e]&&(a=e+1);return a}function tj(e,{weeks:t=16,today:n=new Date}={}){let r=(Array.isArray(e)?e:[]).filter(e=>Fk.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`&&Fk.test(n)?n:hl(o),c=zA(BA(s));if(!c)return{cells:[],max:0,weeks:0};let l=new Date(c.getFullYear(),c.getMonth(),c.getDate()-(t-1)*7,12),u=hl(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,W(e.tokens,0)))}for(let e=0;e<t;e+=1)for(let t=0;t<7;t+=1){let n=hl(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:W(r?.tokens,0),costUSD:W(r?.costUSD,0),source:r?.source===`history`?`history`:r?`live`:null,noData:a||o||!r&&p===null,tone:ej(r?.tokens,f)})}return{cells:d,max:f,weeks:t}}function nj(e){let t=qk(e?.day);if(e?.noData)return`${t}: no data`;let n=W(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${Hk(n)} tokens, ${Vk(W(e?.costUSD,0))}`}function rj(e){if(!e)return``;let t=W(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${cj(e.ratio)} the ${n} average: ${Vk(e.todayUsd)} against ${Vk(e.baselineUsd)}.`}function ij(e){return e?`This block is burning ${cj(e.ratio)} the usual rate: ${Hk(e.current)} tokens per minute against ${Hk(e.baseline)}.`:``}function aj(e){return[rj(e?.daily),ij(e?.burn)].filter(Boolean).join(` `)}function oj(e){return e?.daily||e?.burn?`warn`:`ok`}function sj(e){return!!(e?.daily||e?.burn)}function cj(e){let t=W(e,null);return t===null?`-`:`${zk(t.toFixed(1))}x`}var lj=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function uj(e){let t=U(e,``);return t?lj[t]||t:lj.claude}function dj(e,t){return pj(t)?uj(e?.vendor):``}function fj(e){let t=e?.byVendor;return!t||typeof t!=`object`?[]:Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`).sort((e,n)=>W(t[n]?.tokens,0)-W(t[e]?.tokens,0)).map(e=>({vendor:e,label:uj(e),tokens:W(t[e]?.tokens,0),costUSD:W(t[e]?.costUSD,0)}))}function pj(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 mj=`Claude only`;function hj(e){return pj(e)?mj:``}var gj=36e5,_j=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]);function vj(e,t){let n=e?.[t];if(!n||typeof n!=`object`)return null;let r=W(n.pct,null),i=W(n.resetsAtMs,null);return r===null&&i===null?null:{pct:r,resetsAtMs:i}}function yj(e){return _j.some(t=>vj(e,t.key)!==null)}function bj(e){return vj(e,`fiveHour`)?.pct??null}function xj(e){return e===`official`?`official, from Claude Code`:e===`estimated`?`estimated from the largest completed block`:``}function Sj(e,t=null){let n=bj(t);if(n!==null)return iA(n);let r=iA(oA(e?.tokenLimit));return r===`ok`?iA(sA(e?.activeBlock?.projection,e?.tokenLimit)):r}function Cj(e,t=null){let n=[],r=Sj(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 NA(e)){let e=IA(t);if(e<90)continue;let r=typeof t?.scope==`string`&&t.scope?t.scope:`budget`;n.push(`budget:${r}:${e>=100?`over`:`near`}`)}return vl(n)}function wj(e){let t=W(e?.pct,null);return t===null?`-`:`${Uk(t)} used`}function Tj(e,t=Date.now()){let n=W(e,null);if(n===null||n<=0)return``;let r=(n-t)/6e4;return r<=0?`resetting now`:`resets in ${$k(r)}`}function Ej(e,t=Date.now()){let n=W(e,null);return n===null||n<=0?``:`${Math.max(0,Math.round((t-n)/6e4))}m old`}function Dj(e,t=Date.now()){let n=W(e,null);return n===null||n<=0||t-n>gj}function Oj(e,t=Date.now()){if(!Dj(e,t))return``;let n=Ej(e,t);return n?`showing last-known usage (${n})`:`showing last-known usage`}function kj(e,t=``){let n=e?.source;if(n===`fetched`){let e=U(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=U(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 Aj(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 jj(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 Mj(e){if(Array.isArray(e))return e.length;let t=Number(e);return Number.isFinite(t)?t:null}function Nj(e){if(!e||typeof e!=`object`)return``;let t=[],n=Mj(e.dirs);if(n!==null&&t.push(`${Bk(n)} transcript ${n===1?`directory`:`directories`}`),Number.isFinite(e.files)&&t.push(`${Bk(e.files)} files`),Number.isFinite(e.entries)&&t.push(`${Bk(e.entries)} entries`),Number.isFinite(e.lastScanMs)&&t.push(`last pass ${Bk(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 U(e?.error,``)}function Fj(e){let t=U(e?.warning,``);return t?`Glimmervoid could not read every transcript location: ${t}`:``}function Ij(e){return Pj(e)!==``}function Lj(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return n==null||n===t}function Rj(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 zj(e){return typeof e?.id==`string`&&e.id!==``}function Bj(e){let t=U(e?.label,``);return zj(e)&&t?t:Rj(e?.project)||t||`unknown project`}function Vj(e){return U(typeof e==`string`?e:e?.model,`unknown model`)}function Hj(e){return String(e?.day??``)}function Uj(e,t,n){if(!Ik.has(t)){let n=Number(e?.[t]);return Number.isFinite(n)?n:0}return t===`day`?Hj(e):n(e)}function Wj(e,t,n,r=Bj){let i=Array.isArray(e)?[...e]:[],a=n===`asc`?1:-1;return i.sort((e,n)=>{let i=Uj(e,t,r),o=Uj(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 Gj(e){return Lk.has(e)?`asc`:`desc`}function Kj(e,t){return e?.key===t?{key:t,dir:e.dir===`asc`?`desc`:`asc`}:{key:t,dir:Gj(t)}}function qj(e,t){return e?.key===t?e.dir===`asc`?`ascending`:`descending`:`none`}var Jj=Object.freeze({key:`lastTs`,dir:`desc`}),Yj=Object.freeze({key:`tokens`,dir:`desc`}),Xj=Object.freeze({key:`day`,dir:`desc`});function Zj(e,t=Jj){return Wj(e,t.key,t.dir,Bj)}function Qj(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 $j(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:`${Bk(t)} hidden`}function eM(e,t=Yj){return Wj(e,t.key,t.dir,Vj)}function tM(e,t=Xj){return Wj(e,t.key,t.dir,Hj)}function nM(e,t){return(Array.isArray(e)?e:[]).find(e=>String(e?.day??``)===String(t??``))||null}function rM(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 iM(e){let t=W(e?.officialCostUSD,null);if(t!==null&&t>0)return{costUSD:t,source:`official`};let n=W(e?.costUSD,null);return n!==null&&n>0?{costUSD:n,source:`estimated`}:{costUSD:null,source:null}}function aM(e){let t=Number(e?.tokens);if(!Number.isFinite(t)||t<=0)return``;let{costUSD:n}=iM(e);return n===null?Hk(t):`${Hk(t)} ${Vk(n)}`}function oM(e){let{source:t}=iM(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 sM(e,t){return t===j.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}:{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 cM(e,t,n){let r=Xn.includes(t)?`force-restart`:`restart`;return e===`restart-fresh`?{type:r,id:n,fresh:!0}:{type:r,id:n}}function lM(e,t,n){let r=()=>n.send(cM(e,n.readState(),t)),i=sM(e,n.readState());i?n.confirm({...i,onConfirm:r}):r()}var uM=`DORMANT`;function dM(e){return e?dl(Date.now()-e,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function fM(e,t,n){let r=M(`button`,`resume-item`);r.type=`button`,r.setAttribute(`role`,`option`),e.id===t&&r.classList.add(`resume-item-current`);let i=[e.worktreeName,e.gitBranch?e.gitBranch.replace(/^refs\/heads\//,``):null,dM(e.mtime)].filter(Boolean).join(` · `);return r.innerHTML=`<span class="resume-item-title">${v_(e.title||e.id)}</span><span class="resume-item-meta">${v_(i)}${e.id===t?` · current`:``}</span>`,r.addEventListener(`click`,()=>n(e.id)),r}function pM(e,t={}){let n=(t.currentState||``)===uM,{overlay:r,dialog:i,close:a,actions:o,btnCancel:s}=Ud({title:`Resume a conversation`,dialogClass:`dialog resume-dialog`}),c=M(`p`,`dialog-message`,`Pick a Claude conversation from this repo (any worktree) to continue in this card.`),l=M(`div`,`resume-list`);l.setAttribute(`role`,`listbox`),l.setAttribute(`aria-label`,`Resumable conversations`),l.append(M(`div`,`resume-empty`,`Loading conversations...`));let u=M(`button`,`btn-dialog btn-dialog-cancel`,`Start fresh`);u.title=`Clear any resume binding so this card starts a new conversation`,o.prepend(u);let d=hd(`dialog-error`);i.append(c,l,d.element,o);async function f(t){if(i.dataset.applying!==void 0)return;i.dataset.applying=``;let r=await vd(`resume-conversation`,{id:e,conversationId:t||``},d);if(delete i.dataset.applying,!r)return;if(r.type!==`resume-conversation-ack`||!r.ok){d.show(`error`,r.type===`error`?r.message:`The conversation was not changed.`);return}a();let o=P.get(e);t&&o&&(n?w_(o,{type:`start-session`,id:e}):C_(o).show(`ok`,`Conversation will resume on this session's next restart.`))}s.addEventListener(`click`,a),u.addEventListener(`click`,()=>{f(null)}),requestAnimationFrame(()=>s.focus()),ad(`list-conversations`,{id:e},{timeoutMs:q}).then(e=>{if(!r.isConnected)return;let t=e.type===`conversations`?e.conversations:[];if(l.innerHTML=``,e.error){l.append(M(`div`,`resume-empty`,`Could not list conversations: ${e.error}`));return}if(t.length===0){l.append(M(`div`,`resume-empty`,`No prior conversations found for this repo.`));return}let n=e.type===`conversations`?e.current??null:null;for(let e of t)l.append(fM(e,n,e=>{f(e)}))}).catch(e=>{r.isConnected&&(l.innerHTML=``,l.append(M(`div`,`resume-empty`,`Could not list conversations: ${_d(e,q)}`)))})}var mM=e=>e==null?``:String(e),hM=e=>Xn.includes(e),gM=e=>Zn.includes(e),_M=!1;function vM(e){return _M&&Iv(e.agent)&&e.card.dataset.ephemeral===void 0}function yM(e){return vM(e)&&e.isConversationViewOn&&e.isBorrowed}function bM(e){e.btnConversationView.classList.toggle(`visible`,vM(e)),e.btnConversationView.setAttribute(`aria-checked`,String(e.isConversationViewOn))}function xM(e){_M=e;for(let t of P.values())!e&&t.face===`conversation`&&t._showTerminalFace?.(),DM(t)}function SM(e){let t=F(e);return!t||!yM(t)?!1:(t.face=`conversation`,t.card.dataset.face=`conversation`,t.termWrap.hidden=!0,t.planFace.hide(),t.conversationFace.show(wr(e)),DM(t),!0)}function CM(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,DM(n),n.conversationFace.refresh(),r!==t.isConversationViewOn&&(t.isConversationViewOn?SM(e):n.face===`conversation`&&n._showTerminalFace?.())}function wM(e){return F(e.id)?.conversationFace.applyTraceResponse(e)===!0}function TM(e){F(e.id)?.conversationFace.applyTraceError(e)}function EM(e){F(e)?.conversationFace.applyTraceChanged(wr(e))}function DM(e){bM(e);let t=e.currentState,n=hM(t)||gM(t);e.btnRestart.classList.toggle(`visible`,n),e.btnRestartFresh.classList.toggle(`visible`,n),e.btnResume.classList.toggle(`visible`,e.card.dataset.ephemeral===void 0),e.btnWorkspaceRepos.classList.toggle(`visible`,e.card.dataset.workspace!==void 0),e.btnTrace.classList.toggle(`visible`,k_()),e.btnPlan.classList.toggle(`visible`,Kh(e)!==`hidden`),e.btnRemove.classList.add(`visible`)}function OM(e){e.sessionMenu.classList.remove(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`false`)}function kM(e,t){W_(e.taskTitleEl,()=>K_(e,t)),e.nameEl.addEventListener(`dblclick`,n=>{n.preventDefault(),Y_(e,t)}),e.nameEl.addEventListener(`click`,()=>{J_(e.nameEl)||cv(t)}),e.nameEl.addEventListener(`keydown`,n=>{n.target===e.nameEl&&(n.key===`F2`||n.key===`Enter`)&&(n.preventDefault(),Y_(e,t))});function n(n){OM(e),e.btnSessionMenu.focus(),lM(n,t,{readState:()=>e.currentState,send:t=>{w_(e,t)},confirm:Wd})}e.btnRestart.addEventListener(`click`,()=>n(`restart`)),e.btnRestartFresh.addEventListener(`click`,()=>n(`restart-fresh`)),e.btnResume.addEventListener(`click`,()=>{OM(e),pM(t,{currentState:e.currentState})}),e.btnWorkspaceRepos.addEventListener(`click`,()=>{OM(e),Xd(t)}),e.btnTrace.addEventListener(`click`,()=>{OM(e),wk(t)}),e.btnDocs.addEventListener(`click`,()=>{OM(e),nh(t)}),e.btnConversationView.addEventListener(`click`,()=>{OM(e),w_(e,{type:`set-session-conversation-view`,id:t,isOn:!e.isConversationViewOn})}),e.btnGuardrails.addEventListener(`click`,()=>{OM(e),e.btnSessionMenu.focus();let n=n=>()=>{w_(e,{type:`set-session-guardrails`,id:t,isOn:n})};e.card.dataset.guarded===void 0?Wd({title:`Restore guardrails`,message:`This session restarts with guardrails on, interrupting any turn in progress.`,confirmLabel:`Restore guardrails`,danger:!1,onConfirm:n(!0)}):Wd({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=Kh(e);n!==`hidden`&&(n===`face`?zM(t):location.hash=Ff(t))}),e.btnRemove.addEventListener(`click`,()=>{OM(e),_v(t)}),e.btnSessionMenu.addEventListener(`click`,t=>{t.stopPropagation();for(let[,t]of P)t!==e&&OM(t);let n=e.sessionMenu.classList.toggle(`open`);e.btnSessionMenu.setAttribute(`aria-expanded`,String(n))});function r(t){if(b_(t)){t.preventDefault(),t.stopPropagation();for(let[,t]of P)t!==e&&OM(t);e.sessionMenu.classList.add(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`true`),x_([...e.sessionMenu.querySelectorAll(`.popup-menu-item.visible`)],t)}}e.btnSessionMenu.addEventListener(`keydown`,r),e.sessionMenu.addEventListener(`keydown`,r),document.addEventListener(`keydown`,t=>{t.key===`Escape`&&e.sessionMenu.classList.contains(`open`)&&(t.preventDefault(),OM(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&&OM(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 AM(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 jM(e){return typeof e==`string`&&P.has(e)}function MM(){return P.size}function NM(e){let t=e||{};t.cursorBlink!=null&&dS(t.cursorBlink),t.debugMode!=null&&(D_(t.debugMode),WC(t.debugMode));for(let[,e]of P)e.term&&t.cursorBlink!=null&&(e.term.options.cursorBlink=t.cursorBlink)}function PM(){Sy(P.values(),wy())}function FM(){let e=cg(og([...P.values()].map(e=>({state:e.currentState}))));document.title=e>0?`(${e}) Glimmervoid`:`Glimmervoid`}function IM(e,t,n,r={}){if(!Tr)return;let i=wr(e),a=mM(n)||j.DORMANT,o=V_(i,mM(t),a,r),s=a===j.DORMANT;Tr.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(),DM(c),uC(c,i)}function u(){SM(i)||l()}let d=new AbortController,f=Pw({signal:d.signal,requestPlan:(e,t,n)=>K({type:`session-plan`,id:e,agentId:t,revision:n}),requestDraft:(e,t)=>K({type:`session-plan`,id:e,agentId:t,draft:!0}),showTerminal:u,sendDecision:(e,t)=>K({type:`plan-decision`,id:e,...t}),reportProblem:e=>fN(i,e)}),p=EC({signal:d.signal,sendControl:e=>K(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:mM(r.path),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,btnRestartFresh:o.btnRestartFresh,btnSessionMenu:o.btnSessionMenu,btnResume:o.btnResume,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=()=>uC(c,i),c._showTerminalFace=l,c._showPreferredFace=()=>{LM(c)===`plan`?zM(i):SM(i)||l()},c._setBorrowed=e=>{c.isBorrowed=e,DM(c)},o.card.append(f.el,p.el),P.set(i,c),kM(c,i),DM(c),c.btnDocs.classList.toggle(`visible`,Um(i)),a===j.RUNNING&&pf(c,!0),s||(rC(o.termWrap,c),aC(c,i)),FM(),c}function LM(e){let t=e.planReviewState.reviews.some(e=>e.state===`open`),n=e.planReviewState.reviews.some(aw);return Gh({hasPlan:e.hasPlan,pendingPromptKind:e.pendingPromptKind,hasOpenReview:t,hasApprovedReview:n})}function RM(e){let t=F(e);return!t?.isBorrowed||LM(t)!==`plan`?!1:zM(e)}function zM(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(wr(e)),DM(t),!0)}function BM(e,t){let n=F(e);n&&(n.hasPlan=t===!0,DM(n),RM(e))}function VM(e){let t=F(e.id);t&&(t.planReviewState=Sw(t.planReviewState,e),t.hasPlan=e.hasPlan,t.planFace.update({state:t.planReviewState}),DM(t),RM(e.id))}function HM(e){let t=F(e.id);t&&t.planFace.update({draft:e})}function UM(e){let t=F(e.id);t&&(t.planReviewState={reviews:e.reviews},t.hasPlan=!0,t.planFace.update({response:e}),DM(t))}function WM(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 GM(e){for(let[,t]of P)t.planFace.update({isConnected:e})}function KM(e,t){let n=F(e);n&&(n.effectiveBase=typeof t==`string`?t:void 0)}function qM(e,t){let n=F(e);if(!n)return;n.agent=typeof t==`string`?t:null,DM(n);let r=Td(t);ZM(n,`.agent-badge`,`agent`,{on:r!==``,value:r,text:r})}function JM(e,t){let n=F(e);n&&(t?n.card.dataset.worktree=``:delete n.card.dataset.worktree)}function YM(e,t,n){let r=F(e);r&&(XM(r.card,`guarded`,t),XM(r.card,`guardrailsReleased`,n),H_(r.btnGuardrails,r.card))}function XM(e,t,n){n?e.dataset[t]=``:delete e.dataset[t]}function ZM(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 QM(e,t,n=!1){let r=F(e);r&&(r.activeAgents=Math.max(0,Number(t)||0),r.awaitingBackgroundTasks=pr(r.currentState,n===!0),r.card.toggleAttribute(`data-monitoring`,r.awaitingBackgroundTasks))}function $M(e,t){let n=F(e);if(!n)return;let r=aM(t);ZM(n,`.usage-badge`,`usage`,{on:!!r,text:r||``,title:r?oM(t):void 0})}function eN(e,t,n){return t?{on:!0,value:`compacting`,title:`Context compaction in progress`,text:`compacting`}:e?{on:!0,value:mM(e),title:`Waiting on a permission or input prompt`,text:Wh(mM(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 tN(e,t,n=!1,r=!1){let i=F(e);i&&(i.pendingPromptKind=typeof t==`string`?t:null,ZM(i,`.prompt-badge`,`prompt`,eN(t,n,r)),i.conversationFace.refresh(),!RM(e)&&(typeof t!=`string`||t===``)&&i.face===`terminal`&&SM(e))}function nN(e){return e?`sleeping until ~${gl(new Date(e))}`:`scheduled`}function rN(e,t){let n=F(e);n&&ZM(n,`.wakeup-badge`,`wakeup`,{on:!!t,value:t?.kind||`wakeup`,text:nN(t?.at),title:t?.reason?`Scheduled revival: ${t.reason}`:`Scheduled revival pending`})}function iN(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`;ZM(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 aN(e,t){t===`pending-review`||t===`parked`||t===`merging`?e.dataset.merge=t:delete e.dataset.merge}function oN(e,t,n=null){let r=F(e),i=mM(t)||`none`;r&&aN(r.card,i),uE(wr(e),i,mM(n)||null)}function sN(e,t,n=null){let r=F(e),i=mM(t)||`none`;r&&aN(r.card,i),fE(wr(e),i,mM(n)||null)}function cN(e,t){pE(wr(e),t)}function lN(e,t){let n=F(e);if(!n)return;let r=mM(t);n.card.dataset.session=r,n.nameEl.textContent=r}function uN(e){let t=F(e);t&&(rv(t),P.delete(wr(e)),Mw(wr(e)),t.resizeObserver&&t.resizeObserver.disconnect(),t.abortController&&t.abortController.abort(),tC(t,wr(e)),Qx(t),t.term&&t.term.dispose(),t.term=null,t.fitAddon=null,t.card&&t.card.remove(),FM())}function dN(e,t,n){if(!t||!e.term)return;let r=n===j.DONE?`Session complete`:`Session failed`,i=n===j.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 fN(e,t){let n=F(e);n?C_(n).show(`error`,t):bd(t)}function pN(e,t){let n=F(e);if(!n)return;let r=n.card.querySelector(`:scope > .session-failure-reason`);if(!(n.currentState===j.FAILED&&t)){r?.remove();return}let i=r??M(`p`,`session-failure-reason`);i.setAttribute(`role`,`status`),i.textContent=t,r||n.termWrap.before(i)}function mN(e,t){e.term&&(t===j.DONE||t===j.FAILED)&&(e.term.clear(),e.term.reset())}function hN(e){let t=P.get(e);t&&ng({state:t.currentState})&&document.visibilityState===`visible`&&document.hasFocus()&&K({type:`dismiss`,id:e,expectedState:t.currentState})}function gN(e,t,n){let r=document.activeElement;return g_({previousState:t,nextState:n,isPhoneLayout:my(),isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),isActiveViewer:e._isActiveViewer?.()===!0,hasFocusInsideTerminal:r instanceof Node&&e.termWrap.contains(r)})}function _N(e,t,n,r=``){let i=F(e);if(!i)return;let a=mM(t),o=i.currentState;i.currentState=a,a!==j.RUNNING&&(i.awaitingBackgroundTasks=!1),i.conversationFace.refresh(),a!==o&&(i.stateSince=typeof n==`number`&&Number.isFinite(n)?n:Date.now(),pf(i,a===j.RUNNING)),o===j.DORMANT&&a!==j.DORMANT&&cC(i,wr(e)),ng({state:a})||Yf(wr(e)),i.card.dataset.state=a,i.card.toggleAttribute(`data-monitoring`,pr(a,i.awaitingBackgroundTasks)),DM(i),(a===j.WAITING&&o!==j.WAITING||a===j.COMPLETE&&o!==j.COMPLETE)&&!yv(r)&&As()&&qy(Ms()),gN(i,o,a)&&K({type:`dismiss`,id:wr(e),expectedState:j.COMPLETE});let s=a===j.DONE||a===j.FAILED,c=o!==j.DONE&&o!==j.FAILED&&o!==j.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})})}),As()&&qy(Ms())),(a===j.DONE||a===j.FAILED)&&dN(i,c,a),a===j.INITIALIZING&&mN(i,o),FM()}var vN=`(no path)`;function yN(e){if(!e)return vN;let t=String(e).replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return(n===-1?t:t.slice(n+1))||`(no path)`}function bN(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):vN,a=i.get(r);a||(a={key:r,label:r===`(no path)`?vN:yN(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:yN(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 xN(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 SN({onAdd:e,onForget:t}){let n=M(`div`,`session-group-header`),r=M(`span`,`session-group-label`),i=M(`span`,`session-group-count`),a=M(`span`,`session-group-rule`);a.setAttribute(`aria-hidden`,`true`);let o=M(`button`,`session-group-add`,`+`);o.type=`button`,o.addEventListener(`click`,()=>e(n.dataset.path,n.dataset.label));let s=M(`button`,`session-group-forget`);return s.type=`button`,s.append(Fg(jg)),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 CN(e,t,n){let{header:r,label:i,count:a,addButton:o,forgetButton:s}=e,c=t.key===vN,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 wN={waitingCount:0,finishedCount:0,failedCount:0};function TN(e){let t=M(`div`,`attention-banner`);return t.setAttribute(`role`,`status`),e.classList.add(`attention-banner-jump`),t.append(M(`span`,`attention-banner-count`),e),EN(t,wN),t}function EN(e,t){dr(e,`.attention-banner-count`).textContent=ug(t),e.toggleAttribute(`data-empty`,!lg(t)),e.toggleAttribute(`data-jumpable`,sg(t)>0)}var DN=e=>e.ui.path,ON=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),kN=null,AN=null,jN=null,MN=null,NN=null,PN=null,FN=null,IN=!1,LN=null,RN=!1,zN=new Map,BN=new Map,VN=new Map,HN=new Map,UN=null,WN=``,GN=[],KN=new Set;function qN(){return xN(YN(iP()),KN)}function JN(e){let t=UN;if(UN=e||null,t&&t!==UN){let e=BN.get(t);e&&(e.tabIndex=-1,e.setAttribute(`aria-selected`,`false`))}if(UN){let e=BN.get(UN);e&&(e.tabIndex=0,e.setAttribute(`aria-selected`,`true`))}}function YN(e){return bN(e,DN,p_(e,DN))}function XN(e){let t=HN.get(e.key),n=VN.get(e.key);return(!t||!n)&&(t=SN({onAdd:gv,onForget:e=>{m_(e),uP()}}),n=M(`div`,`focus-rail-list`),n.setAttribute(`role`,`listbox`),HN.set(e.key,t),VN.set(e.key,n)),CN(t,e,`rail`),n.setAttribute(`aria-label`,`${e.label} sessions`),{header:t.header,list:n}}function ZN(){return IN}function QN(){return Ar.snapshot().focusedSessionId}function $N({rail:e,center:t,resizer:n}){if(kN=e,jN=t,!kN||!jN)return;let r=kN,i=jN;nP(n),r.removeAttribute(`role`),r.removeAttribute(`aria-label`),r.setAttribute(`aria-keyshortcuts`,xp(Cp)),AN=TN(Tp(yp(`next-attention`,Cp)));let a=M(`details`,`rail-status-key`);a.append(M(`summary`,`rail-status-key-summary`,`Status key`),c_()),r.append(AN,a),NN=M(`div`,`focus-empty`),NN.innerHTML=`<p class="focus-empty-title"></p><p class="focus-empty-desc"></p>`,PN=NN.querySelector(`.focus-empty-title`),FN=NN.querySelector(`.focus-empty-desc`),MN=M(`div`,`focus-card-slot`),i.append(NN,MN),r.addEventListener(`keydown`,rP)}var eP={minPx:180,maxPx:480},tP=16;function nP(e){e&&kN&&Dg({resizer:e,column:kN,widthHost:kN,widthProperty:`--rail-width`,bounds:eP,keyStepPx:tP,getStoredWidth:Ks,setStoredWidth:qs})}function rP(e){if(e.key===`Delete`||e.key===`Backspace`){let t=e.target instanceof HTMLElement?e.target:null,n=t?.dataset.id;if(!n||BN.get(n)!==t)return;e.preventDefault(),_v(n,zN.get(n));return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`||e.altKey||e.metaKey||e.ctrlKey||e.shiftKey)return;let t=tg(qN(),UN,e.key===`ArrowDown`?1:-1);t!=null&&(e.preventDefault(),JN(t),BN.get(t)?.focus())}function iP(){return Xh(pv(aP))}function aP(e){return e.nameEl?e.nameEl.textContent:e.card&&(e.card.dataset.session||e.card.dataset.id)||``}function oP(e){let{row:t,refs:n}=$g(`button`);t.type=`button`,t.dataset.id=e,t.setAttribute(`role`,`option`),t.addEventListener(`click`,()=>sP(e));let{item:r,removeButton:i}=e_(t,()=>_v(e,zN.get(e)));return r.setAttribute(`role`,`presentation`),i.tabIndex=-1,Object.assign(t,{_refs:n,_row:r})}function sP(e){let t=uv(e);t&&(yP(e),hP(t,e))}function cP(e,{id:t,ui:n,state:r,name:i}){let a=zN.get(t)||`none`;n_(e,e._refs,{ui:n,state:r,name:i??``,mergeStatus:a===`none`?``:a}),e.classList.toggle(`focused`,t===QN());let o=t===UN;e.setAttribute(`aria-selected`,String(o)),e.tabIndex=o?0:-1}function lP(e,t){if(!IN)return;let n=e?.card?.dataset.id,r=n?BN.get(n):null;r&&(t===`flag`?r.dataset.activity=e._activity||``:uf(r._refs?.glyph))}sf(lP),vf(()=>{if(IN)for(let[e,t]of BN){let n=P.get(e);n&&(t._refs.elapsed.textContent=gf(n))}});function uP(){if(!IN)return;let e=kN;if(!e)return;let t=YN(iP()),n=new Set,r=(e,t)=>{let r=e.map(e=>e.id).join(`,`),i=t._lastOrderKey===r&&t.childElementCount===e.length;for(let r of e){let{id:e}=r;n.add(e);let a=BN.get(e);a||(a=oP(e),BN.set(e,a)),cP(a,r),i||t.appendChild(a._row)}t._lastOrderKey=r},i=new Set(t.order),a=t.groups.map(e=>e.key).join(`
|
|
137
|
-
`),o=a===WN;WN=a;for(let n of t.groups){let{header:t,list:i}=XN(n);o||e.append(t,i),r(n.rows,i)}for(let[e,t]of[...HN])i.has(e)||(t.header.remove(),VN.get(e)?.remove(),HN.delete(e),VN.delete(e));for(let[e,t]of BN)n.has(e)||(t._row.remove(),BN.delete(e),e===UN&&(UN=null));for(let e of[...zN.keys()])P.has(e)||zN.delete(e);let s=GN;GN=xN(t,KN);let c=QN();if(c&&!P.has(c)){Ar.dispatch(`focusSession`,null),UN=null;let e=dP(s,c);if(e){let t=!document.activeElement||document.activeElement===document.body;yP(e),t&&hP(P.get(e),e);return}}bP();let l=QN();if(l){let e=P.get(l);e&&e.card.parentElement!==MN&&_P(e,l)}pP()}function dP(e,t){let n=e.filter(e=>e===t||P.has(e));return n.length<2?GN.find(e=>P.has(e))??null:tg(n,t,n.indexOf(t)===n.length-1?-1:1)}function fP(){return ag(iP())}function pP(){AN&&EN(AN,og(iP()))}function mP(){if(!IN)return;let e=fP();if(!e.length)return;let t=Zh(e,LN);if(!t)return;LN=t;let n=P.get(t),r=t===QN();uv(t),yP(t),BN.get(t)?.scrollIntoView({block:`nearest`}),r&&gP(t),hP(n,t)}function hP(e,t){e&&requestAnimationFrame(()=>requestAnimationFrame(()=>{IN&&QN()===t&&e.term?.focus()}))}function gP(e){if(ON?.matches||document.hidden)return;let t=BN.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)`});let n=P.get(e)?.card;n?.animate&&n.animate([{opacity:.8},{opacity:1}],{duration:240,easing:`ease-out`})}function _P(e,t){MN&&(Nr(e,t,MN,{className:`focus-centered`}),dC(e,t,!0))}function vP(){let e=QN();e&&(Mr()===e&&Pr(),Ar.dispatch(`focusSession`,null))}function yP(e){IN&&P.has(e)&&(hN(e),e!==QN()&&(vP(),Ar.dispatch(`focusSession`,e),UN=e,dv(e),uP()))}function bP(){if(!NN||!PN||!FN)return;let e=QN(),t=!!(e&&P.has(e)),n=P.size>0;NN.hidden=t,Up(NN,!n),PN.hidden=!n,FN.hidden=!n,!t&&n&&(PN.textContent=`No session selected`,FN.textContent=`Select a session from the rail on the left to focus it here.`)}function xP(e,t){zN.set(wr(e),typeof t==`string`&&t?t:`none`),IN&&uP()}function SP(e){IN&&P.has(e)&&yP(e)}function CP(e){return!IN||!P.has(e)?!1:(yP(e),zM(e))}function wP(e){if(!IN)return;let t=qN()[e-1];t&&sP(t)}function TP(e){if(!IN)return;let t=tg(qN(),UN,e);t!=null&&(sP(t),BN.get(t)?.scrollIntoView({block:`nearest`}))}window.addEventListener(`focus`,()=>{let e=QN();IN&&e&&hN(e)});function EP(){kN&&(IN=!0,vP(),UN=null,uP(),RN&&fP().length>0?mP():OP())}function DP(e){RN=!0;try{e()}finally{RN=!1}}function OP(){if(!IN||QN())return;let e=fv();e&&yP(e)}function kP(){IN&&=(vP(),UN=null,!1)}var AP=`t-[0-9a-f]{8}`,jP=`No findings. Open a markdown file in a connected editor.`,MP=`No intent yet. The visions proposes one after its first pass.`,NP=`Unowned`,PP=RegExp(`^${AP}$`);function FP(){return{byProject:{},unowned:[]}}function IP(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`&&PP.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 LP(e){if(Array.isArray(e))return e.map(IP).filter(e=>e!==null);let t=IP(e);return t?[t]:[]}function RP(e){let t=e?.intent;if(!t||typeof t!=`object`)return FP();let n=t;if(!(Object.hasOwn(n,`byProject`)||Object.hasOwn(n,`unowned`)||Object.hasOwn(n,`global`)))return{byProject:{},unowned:LP(n)};let r=n.byProject&&typeof n.byProject==`object`?n.byProject:{},i=[];for(let[e,t]of Object.entries(r)){let n=LP(t);n.length!==0&&e&&i.push([e,n])}return{byProject:Object.fromEntries(i),unowned:LP(Object.hasOwn(n,`unowned`)?n.unowned:n.global)}}function zP(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 BP(e,t){let n=e||FP(),r=t?.intent;if(!r||typeof r!=`object`)return n;let i=r,a=zP(Array.isArray(i.threads)?LP(i.threads):LP(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 VP(e,t=null){let n=t&&typeof t.get==`function`?t.get(e):null;return typeof n==`string`&&n?n:e}function HP(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:KP(e,r)}))}function UP(e,t=null,n=Date.now()){let r=e||FP(),i=Object.entries(r.byProject||{}).filter(([e,t])=>e&&Array.isArray(t)&&t.length>0).map(([e,n])=>({projectId:e,label:VP(e,t),threads:n})).sort((e,t)=>e.label.localeCompare(t.label)).flatMap(({projectId:e,label:t,threads:r})=>HP(r,{key:e,label:t,now:n})),a=HP(Array.isArray(r.unowned)?r.unowned:[],{key:`unowned`,label:NP,now:n});return i.length+a.length>0?[...a,...i]:[{key:`unowned`,label:NP,text:MP,hasText:!1,active:!1,meta:``}]}function WP(e){return e?.text?`proposed by visions`:``}function GP(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:dl(Number(t)-n,{rounding:`floor`,wording:`spelled`,suffix:` ago`,justNowBelowSeconds:60})}function KP(e,t=Date.now()){let n=WP(e);if(!n)return``;let r=typeof e?.id==`string`&&e.id?`thread ${e.id}, `:``,i=GP(e?.ts,t);return i?`${r}${n}, ${i}`:`${r}${n}`}function qP(e){let t=Number(e?.range?.start?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function JP(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function YP(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function XP(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 ZP(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function QP(e){let t=ZP(e);return t===1?`1 finding`:`${t} findings`}function $P(e){let t=ZP(e);return t===1?`1 comment`:`${t} comments`}function eF(e){let t=ZP(e?.findings?.length),n=ZP(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(QP(t)),n>0&&i.push($P(n)),i.length>0?i.join(`, `):QP(0)}function tF(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function nF(e){return(typeof e?.hand==`string`?e.hand.trim():``)||null}function rF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=nF(t);return i?(n.set(r,i),n):(n.delete(r),n)}function iF(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 aF=`hand`,oF=`unseen`,sF=`
|
|
138
|
-
`;function cF(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 lF(e,t){return cF(JSON.stringify([e,...t]))}function uF(e,t){return lF(`finding`,[e,qP(t),String(t.code??``),String(t.message??``)])}function dF(e,t){return lF(`comment`,[e,gF(t),String(t.message??``)])}function fF(e){return lF(`fix`,[e.uri,DF(e),e.code,e.message,OF(e)])}function pF(e){return lF(`intent`,[e.key,e.text,e.active])}function mF(e,t,n,r=[],i=null){let a=[...n].map(([e,t])=>lF(`hand`,[e,t])).sort(),o=new Set;for(let r of[...e.keys(),...t.keys(),...n.keys()])o.add(lF(`document`,[r]));for(let[t,n]of e)for(let e of n)o.add(uF(t,e));for(let[e,n]of t)for(let t of n)o.add(dF(e,t));for(let e of r)o.add(fF(e));for(let e of UP(i,null,0))e.hasText&&o.add(pF(e));let s=[...o].sort();return{signature:[...a,...s].join(sF),handEntries:a,contentEntries:s}}function hF(e,t){let n=new Set(t.split(sF));return e.handEntries.some(e=>!n.has(e))?aF:e.contentEntries.some(e=>!n.has(e))?oF:null}function gF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<1?`L?`:`L${Math.floor(t)}`}function _F(e){return Array.isArray(e?.diagnostics)?e.diagnostics:[]}function vF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=_F(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function yF(e){return Array.isArray(e?.comments)?e.comments:[]}function bF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=yF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function xF(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 SF(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 CF(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:XP(a)||a,hand:s,findings:[...c].sort((e,t)=>YP(e)-YP(t)||JP(e)-JP(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>wF(e.name,t.name)||wF(e.uri,t.uri)),r}function wF(e,t){return e<t?-1:+(e>t)}var TF=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`;function EF(e){let t=ZP(e);return t===1?`1 fix`:`${t} fixes`}function DF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function OF(e){return e?.applied===!0?`applied`:`refused`}function kF(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 AF(e){let t=typeof e?.uri==`string`?e.uri:``,n=Number(e?.ts);return kF(e?.fix,{uri:t,ts:Number.isFinite(n)?n:0})}function jF(e,t,{max:n=20}={}){let r=AF(t);return r?[r,...e].slice(0,Math.max(0,Math.floor(n))):[...e]}function MF(e,{max:t=20}={}){let n=Array.isArray(e?.fixes)?e.fixes:[],r=[];for(let e of n){let t=kF(e);t&&r.push(t)}return r.slice(0,Math.max(0,Math.floor(t)))}var NF=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,PF={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function FF(e){let t=typeof e==`string`?e:``;return PF[t]||t||`source`}function IF(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:dl(Number(t)-n,sl)}function LF(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 RF(e){let t=Array.isArray(e?.events)?e.events:[],n=[];for(let e of t){let t=LF(e);t&&n.push(t)}return n}function zF(e){let t=Number(e?.overflow);return!Number.isFinite(t)||t<=0?0:Math.floor(t)}function BF(e){let t=ZP(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function VF(e,t){return[...e].sort((e,t)=>t.seq-e.seq).slice(0,Math.max(0,Math.floor(t)))}function HF(e,t,{max:n=100}={}){let r=RF(t);if(r.length===0)return VF(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 VF([...i.values()],n)}function UF(e,{max:t=100}={}){return VF(RF(e),t)}function WF(e){let t=ZP(e);return t===1?`1 event`:`${t} events`}function GF(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 KF=new Map,qF=new Map,JF=new Map,YF=FP(),XF=new Map,ZF=null,QF=null,$F=null,eI=null,tI=null,nI=[],rI=0,iI=null,aI=[],oI=null,sI=mF(KF,qF,JF,aI,YF),cI=vc(),lI=bl({getAck:()=>cI,setAck:e=>{cI=e,yc(e)},signature:()=>sI.signature,isLooking:()=>!yr(ZF)});function uI(){let e=M(`section`,`visions-intent`);e.append(M(`h2`,`visions-intent-title`,`Intent`));let t=M(`div`,`visions-intent-list`);return e.append(t),$F={list:t},e}function dI(e){let t=M(`div`,`visions-intent-item`),n=M(`div`,`visions-intent-head`);n.append(M(`span`,`visions-intent-scope`,e.label),M(`span`,`visions-intent-meta`,e.meta));let r=M(`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 fI(){$F&&$F.list.replaceChildren(...UP(YF,XF).map(dI))}function pI(e){XF=e instanceof Map?e:new Map,fI()}function mI(e){let t=M(`section`,`visions-doc`),n=M(`div`,`visions-doc-head`),r=M(`h2`,`visions-doc-name`);if(r.textContent=e.name,r.title=e.uri,n.append(r,M(`span`,`visions-doc-count`,eF(e))),t.append(n),e.hand&&t.append(hI(e.hand)),e.findings.length>0){let n=M(`div`,`visions-findings`);for(let t of e.findings)n.append(_I(t));t.append(n)}if(e.comments.length>0){let n=M(`div`,`visions-comments`);for(let t of e.comments)n.append(gI(t));t.append(n)}return t}function hI(e){let t=M(`div`,`visions-hand`);return t.textContent=tF(e),t}function gI(e){let t=M(`div`,`visions-comment`),n=M(`div`,`visions-comment-head`);n.append(M(`span`,`visions-comment-chip`,`visions`)),n.append(M(`span`,`visions-comment-line`,gF(e))),t.append(n);let r=M(`p`,`visions-comment-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function _I(e){let t=M(`div`,`visions-finding`);t.append(M(`span`,`visions-finding-line`,qP(e)));let n=e?.code==null?``:String(e.code);n&&t.append(M(`span`,`visions-finding-code`,n));let r=M(`span`,`visions-finding-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function vI({force:e=!1}={}){if(!QF||!e&&yr(ZF))return;QF.textContent=``;let t=CF(KF,qF,JF);if(t.length===0){let e=M(`p`,`visions-empty`,jP);if(tI===!1){let t=ep(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}QF.append(e)}else for(let e of t)QF.append(mI(e))}function yI(e){tI=e?.visions?.enabled===!0,vI()}function bI(){let e=M(`section`,`visions-activity`),t=M(`div`,`visions-activity-head`);t.append(M(`h2`,`visions-activity-title`,`Activity`));let n=M(`span`,`visions-activity-count`);t.append(n),e.append(t);let r=M(`div`,`visions-activity-list`);e.append(r);let i=M(`p`,`visions-activity-overflow`);return e.append(i),iI={count:n,list:r,overflow:i},e}function xI(e,t){let n=M(`div`,`visions-activity-row`);n.append(M(`span`,`visions-activity-source`,FF(e.source))),n.append(M(`span`,`visions-activity-age`,IF(e.ts,t))),n.append(M(`span`,`visions-activity-scope`,GF(e)));let r=M(`span`,`visions-activity-summary`);return r.textContent=e.summary,n.append(r),n}function SI({force:e=!1}={}){if(!iI||!e&&yr(ZF))return;let{count:t,list:n,overflow:r}=iI;if(t.textContent=WF(nI.length),n.textContent=``,nI.length===0){n.append(M(`p`,`visions-empty`,NF)),r.textContent=``;return}let i=Date.now();for(let e of nI)n.append(xI(e,i));r.textContent=BF(rI)}function CI(){let e=M(`section`,`visions-fixes`),t=M(`div`,`visions-fixes-head`);t.append(M(`h2`,`visions-fixes-title`,`Fixes`));let n=M(`span`,`visions-fixes-count`);t.append(n),e.append(t);let r=M(`div`,`visions-fixes-list`);return e.append(r),oI={count:n,list:r},e}function wI(e){let t=M(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=M(`span`,`visions-fix-file`);n.textContent=XP(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(M(`span`,`visions-fix-line`,DF(e))),t.append(M(`span`,`visions-fix-outcome`,OF(e))),t.append(M(`span`,`visions-fix-code`,e.code||``));let r=M(`span`,`visions-fix-message`);return r.textContent=e.message,t.append(r),t}function TI({force:e=!1}={}){if(!oI||!e&&yr(ZF))return;let{count:t,list:n}=oI;if(t.textContent=EF(aI.length),n.textContent=``,aI.length===0)n.append(M(`p`,`visions-empty`,TF));else for(let e of aI)n.append(wI(e))}function EI(){sI=mF(KF,qF,JF,aI,YF),sI.signature!==``&&lI.refresh(),eI&&eI(hF(sI,cI))}function DI(e){eI=e,EI()}var OI=hd(`visions-connection-status`);function kI(e){e?OI.clear():OI.show(`error`,`${G} What you see below is from before the connection dropped.`)}function AI(e){if(ZF)return ZF;let t=M(`div`,`visions-content`);t.append(OI.element,uI());let n=M(`div`,`visions-feed`);return t.append(n),t.append(CI()),t.append(bI()),e.appendChild(t),ZF=t,QF=n,fI(),vI({force:!0}),TI({force:!0}),SI({force:!0}),t}function jI(){fI(),vI({force:!0}),TI({force:!0}),SI({force:!0})}function MI(){sI.signature!==``&&lI.acknowledge(),EI()}function NI(e){aI=jF(aI,e),TI(),EI()}function PI(e){KF=vF(KF,e),vI(),EI()}function FI(e){qF=bF(qF,e),vI(),EI()}function II(e){JF=rF(JF,e),vI(),EI()}function LI(e){YF=BP(YF,e),fI(),EI()}function RI(e){nI=HF(nI,e),rI=zF(e),SI(),EI()}function zI(e){nI=UF(e),rI=0,SI(),EI()}function BI(e){KF=xF(e),qF=SF(e),JF=iF(e),YF=RP(e),aI=MF(e),fI(),vI(),TI(),EI()}var VI=i(l(),e());g({glimmervoidId:l().min(1),event:l().min(1),token:l().nullable().optional(),payload:VI}),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 HI=`Claude Code hooks injected into every session Glimmervoid spawns.`,UI=`Loading hooks`,WI=`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.`,GI=`Start from`,KI=`Filter by name, event or command`,qI=`Nothing matches that filter.`,JI=`Preview`,YI=`The entry this becomes in the per-session settings file.`,XI=`Duplicate`,ZI=`Discard changes`,QI=`Close the editor and lose the unsaved changes?`,$I=`Esc cancels. Ctrl+Enter saves.`,eL=`A change reaches a session at its next start or restart. Claude Code sessions only; Codex and Grok sessions do not read this file.`,tL=`Glimmervoid's own hooks`,nL=`Always present, read-only. Status detection depends on them.`,rL=`Your hooks`,iL=`New hook`,aL=`Edit hook`,oL=`Saved to config.json.`,sL=`All projects`,cL=`This event takes no matcher.`,lL=`Blank uses Claude Code's default for the event.`,uL=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.`}]),dL=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`}}]),fL=Object.freeze({hooks:[],builtin:[],events:[]});function pL(e){return!e||typeof e.error==`string`}function mL(e){return!e||typeof e.error!=`string`?``:e.error}function hL(e,t){let n=e?.[t];return Array.isArray(n)?n:fL[t]}var gL=e=>hL(e,`hooks`),_L=e=>hL(e,`builtin`),vL=e=>hL(e,`events`);function yL(e){let t=e?.limits?.maxTimeoutSec;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:600}function bL(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return typeof n!=`string`||!t||n===t}function xL(e){let t=gL(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(_L(e).length),tone:null}]}function SL(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 CL(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 wL(e){return e.length>=4}function TL(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 EL(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 DL(e){return`${e} copy`}function OL(e,t){return e.find(e=>e.name===t)||null}function kL(e,t){let n=OL(e,t);return n?n.matcher?`Matches ${n.matcher}. Blank matches every ${n.name}.`:cL:``}function AL(e){return e.type===`http`?e.url||``:e.command||``}function jL(e){let t=uL.find(t=>t.value===e);return t?t.label:String(e||``)}function ML(e){return!Number.isInteger(e.timeout)||Number(e.timeout)<=0?``:`${e.timeout}s timeout`}function NL(e,t){let n=Array.isArray(e.projects)?e.projects:[];return n.length===0?sL:n.map(e=>{let n=t.find(t=>t.id===e);return n?n.name:e}).join(`, `)}function PL(e){return e.matcher?`${e.event} / ${e.matcher}`:e.event}function FL(e){return PL(e)}function IL(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 LL(e){let t=e[0];return{id:null,name:``,event:t?t.name:``,matcher:``,type:`command`,command:``,url:``,timeout:``,enabled:!0,projects:[]}}function RL(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 zL(e,t,n=600){if(!e.name.trim())return`Give the hook a name.`;let r=OL(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 BL(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 VL(e,t){let n={...LL(t),...e.draft};return OL(t,n.event)||(n.event=LL(t).event),n}function HL(e,t){return JSON.stringify(BL(e))!==JSON.stringify(t)}function UL(e){return{...e,enabled:e.enabled===!1}}function WL(e){return`Delete the hook "${e.name}"? Sessions already running keep it until they restart.`}var GL=null,KL=null,qL=null,JL=!1,YL=null,XL=null,ZL=null,QL=null,$L=null,eR=null,tR=!1,nR=``,rR=new Set,iR=new Set,aR=new Map,oR=!1,sR=(e,t)=>gr(`hooks`,e,t);function cR(e,t,n){let r=M(`p`,e,t);return n&&(r.dataset.tone=n),r}function lR(e,t,n,r){let i=M(`button`,e,t);return i.type=`button`,r&&i.setAttribute(`aria-label`,r),i.addEventListener(`click`,n),i}async function uR(e,t){try{let n=await ad(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 _d(e,q)}}async function dR(e,t,n,r){iR.add(e),aR.set(e,{tone:`busy`,text:r}),FR({force:!0});let i=await uR(t,n);iR.delete(e),i&&aR.set(e,{tone:`error`,text:i}),i||aR.delete(e),FR({force:!0}),LR()}function fR(e,t,n){let r=M(`label`,`hooks-field`);return r.append(M(`span`,`hooks-field-label`,e),t),n&&r.append(M(`span`,`hooks-field-hint`,n)),r}function pR(e,t,n){let r=M(`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 mR(e,t){let n=M(`textarea`,`settings-view-input hooks-command`);return n.rows=3,n.value=e,n.spellcheck=!1,n.addEventListener(`input`,()=>t(n.value)),n}function hR(e,t,n){let r=M(`select`,`settings-view-input hooks-select`);for(let n of t){let t=M(`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 gR(e,t){let n=M(`div`,`hooks-type-row`);n.setAttribute(`role`,`radiogroup`);for(let r of uL){let i=M(`label`,`settings-view-toggle hooks-choice`),a=M(`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,M(`span`,null,r.label)),n.append(i)}return n}function _R(e,t){let n=M(`div`,`hooks-projects`);if(t.length===0)return n.append(M(`span`,`hooks-field-hint`,sL)),n;let r=M(`label`,`settings-view-project-choice hooks-choice`),i=M(`input`,`settings-view-checkbox`);i.type=`checkbox`,i.checked=e.projects.length===0,r.append(i,M(`span`,null,sL)),n.append(r);let a=[];for(let r of t){let t=M(`label`,`settings-view-project-choice hooks-choice`),o=M(`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,M(`span`,null,r.name)),r.agent!==`claude-code`&&(t.append(M(`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 vR(e){let t=M(`div`,`hooks-templates`);t.append(M(`span`,`hooks-templates-label`,GI));for(let n of dL){let r=lR(`hooks-chip`,n.label,()=>xR(null,VL(n,e)));r.title=n.summary,t.append(r)}return t}function yR(e){$L&&(e?$L.show(`error`,e):$L.clear())}function bR(e){let t=vL(GL),n=vr(GL),r=sR(e.id?aL:iL,oL);r.classList.add(`hooks-editor`);let i=M(`form`,`hooks-form`);i.addEventListener(`submit`,e=>{e.preventDefault(),wR()}),i.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),CR()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),wR())}),e.id||i.append(vR(t));let a=M(`span`,`hooks-field-hint`,kL(t,e.event)),o=pR(e.matcher,``,t=>{e.matcher=t}),s=fR(`Command`,mR(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=fR(`URL`,pR(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=fR(`Matcher`,o,null);u.append(a);let d=()=>{let n=t.find(t=>t.name===e.event);a.textContent=kL(t,e.event),o.disabled=!!n&&!n.matcher,o.disabled&&(o.value=``,e.matcher=``)};d();let f=M(`input`,`settings-view-input hooks-timeout`);f.type=`number`,f.inputMode=`numeric`,f.min=`1`,f.max=String(yL(GL)),f.value=e.timeout,f.addEventListener(`input`,()=>{e.timeout=f.value});let p=M(`label`,`settings-view-toggle hooks-choice`),m=M(`input`,`settings-view-checkbox`);m.type=`checkbox`,m.checked=e.enabled,m.addEventListener(`change`,()=>{e.enabled=m.checked}),p.append(m,M(`span`,null,`Enabled`)),i.append(fR(`Name`,pR(e.name,`Lint after edits`,t=>{e.name=t}),null),fR(`Event`,hR(e,t,t=>{e.event=t,d()}),null),u,fR(`Type`,gR(e,t=>{e.type=t,l()}),null),s,c,fR(`Timeout (seconds)`,f,lL),fR(`Projects`,_R(e,n),null),fR(``,p,null)),$L=hd(`hooks-editor-status`);let h=M(`div`,`hooks-editor-footer`),g=M(`span`,`hooks-editor-shortcut`,$I),_=lR(`btn-dialog btn-dialog-cancel`,`Cancel`,CR),v=M(`button`,`btn-dialog btn-dialog-confirm`,e.id?`Save changes`:`Add hook`);return v.type=`submit`,eR=v,h.append($L.element,g,_,v),i.append(h),r.append(i),r}function xR(e,t=null){XL=t||(e?RL(e):LL(vL(GL))),ZL=BL(e?RL(e):LL(vL(GL))),QL=bR(XL),FR({force:!0}),QL.scrollIntoView({block:`nearest`});let n=QL.querySelector(`input[type=text]`);n instanceof HTMLInputElement&&n.focus()}function SR(){XL=null,ZL=null,QL=null,$L=null,eR=null,tR=!1,oR=!0,FR({force:!0})}function CR(){!XL||!ZL||!HL(XL,ZL)?SR():Wd({title:ZI,message:QI,confirmLabel:`Discard`,danger:!0,onConfirm:SR})}async function wR(){if(!XL||tR)return;let e=zL(XL,vL(GL),yL(GL));if(e){yR(e);return}let t=$L,n=eR;tR=!0,t?.show(`busy`,`Saving the hook.`),n&&(n.disabled=!0);let r=await uR(`save-hook`,{hook:BL(XL)});tR=!1,n&&(n.disabled=!1),t===$L&&(r?yR(r):(SR(),LR()))}function TR(e){let t=M(`details`,`hooks-preview`);t.open=rR.has(e.id),t.addEventListener(`toggle`,()=>{t.open?rR.add(e.id):rR.delete(e.id)});let n=M(`summary`,`hooks-preview-summary`,JI);n.title=YI;let r=M(`pre`,`hooks-preview-code`,EL(e));return t.append(n,r),t}function ER(e,{grouped:t=!1}={}){let n=vr(GL),r=M(`article`,`hooks-row`);r.setAttribute(`aria-label`,e.name),e.enabled===!1&&(r.dataset.state=`off`);let i=M(`div`,`hooks-row-main`),a=M(`div`,`hooks-row-head`);a.append(M(`span`,`hooks-row-name`,e.name));let o=t?e.matcher||``:PL(e);o&&a.append(M(`span`,`hooks-row-event`,o));let s=M(`code`,`hooks-row-target`,AL(e));s.title=AL(e);let c=M(`p`,`hooks-row-meta`,[jL(e.type),ML(e),NL(e,n)].filter(Boolean).join(` / `));i.append(a,s,c);let l=IL(e,n);l.length>0&&i.append(cR(`hooks-row-meta`,`Scoped to a project no longer in config: ${l.join(`, `)}`,`warn`)),i.append(TR(e));let u=aR.get(e.id);if(u){let e=hd(`hooks-row-status`);e.show(u.tone,u.text),i.append(e.element)}let d=M(`div`,`hooks-row-actions`),f=M(`label`,`settings-view-toggle hooks-choice`),p=M(`input`,`settings-view-checkbox`);p.type=`checkbox`,p.checked=e.enabled!==!1,p.disabled=iR.has(e.id),p.setAttribute(`aria-label`,`${e.name} enabled`),p.addEventListener(`change`,()=>{dR(e.id,`save-hook`,{hook:UL(e)},p.checked?`Turning the hook on.`:`Turning the hook off.`)}),f.append(p,M(`span`,null,`On`));let m=lR(`hooks-btn`,`Edit`,()=>xR(e),`Edit ${e.name}`),h=lR(`hooks-btn`,XI,()=>{let t=RL({...e,name:DL(e.name)});t.id=null,xR(null,t)},`Duplicate ${e.name}`),g=lR(`hooks-btn hooks-btn-danger`,`Delete`,()=>{Wd({title:`Delete hook`,message:WL(e),confirmLabel:`Delete`,danger:!0,onConfirm:()=>{dR(e.id,`delete-hook`,{id:e.id},`Deleting the hook.`)}})},`Delete ${e.name}`);return g.disabled=iR.has(e.id),d.append(f,m,h,g),r.append(i,d),r}function DR(e){let t=M(`article`,`hooks-row hooks-row-builtin`),n=M(`div`,`hooks-row-main`);return n.append(M(`span`,`hooks-row-event`,FL(e)),M(`p`,`hooks-row-meta`,e.purpose)),t.append(n),t}function OR(){let e=sR(`Hooks`,HI),t=M(`div`,`hooks-stats`);for(let e of xL(GL))t.append(_r(`hooks`,e.label,e.value,e.tone));return e.append(t,cR(`hooks-meta`,eL)),e}function kR(){let e=M(`input`,`settings-view-input hooks-filter`);return e.type=`search`,e.value=nR,e.placeholder=KI,e.setAttribute(`aria-label`,KI),e.addEventListener(`input`,()=>{nR=e.value;let t=KL?.querySelector(`.hooks-list-yours`);t&&t.replaceWith(jR())}),e}function AR(){let e=M(`div`,`hooks-empty-state`);return e.append(cR(`hooks-empty`,WI),vR(vL(GL))),e}function jR(){let e=M(`div`,`hooks-list-yours`),t=gL(GL);if(t.length===0)return e.append(AR()),e;let n=CL(SL(t,vL(GL)),nR);if(n.length===0)return e.append(cR(`hooks-empty`,qI)),e;for(let t of TL(n)){let n=M(`div`,`hooks-group`);n.append(M(`h3`,`hooks-group-title`,t.event));let r=M(`div`,`hooks-list`);for(let e of t.hooks)r.append(ER(e,{grouped:!0}));n.append(r),e.append(n)}return e}function MR(){let e=sR(rL,null),t=lR(`hooks-btn hooks-btn-add`,`+ New hook`,()=>xR(null));t.disabled=!!XL;let n=e.querySelector(`.hooks-section-head`);return n&&n.append(t),wL(gL(GL))&&e.append(kR()),e.append(jR()),e}function NR(){let e=M(`details`,`hooks-builtin`),t=M(`summary`,`hooks-builtin-summary`);t.append(M(`span`,`hooks-section-title`,`${tL} (${_L(GL).length})`),M(`span`,`hooks-section-hint`,nL));let n=M(`div`,`hooks-list`);for(let e of _L(GL))n.append(DR(e));return e.append(t,n),e}function PR(){let e=M(`div`,`hooks-content`);return GL?pL(GL)?(e.append(cR(`hooks-warning`,mL(GL))),e):(e.append(OR()),QL&&e.append(QL),e.append(MR(),NR()),e):(e.append(JL?cR(`hooks-warning`,G):cR(`hooks-empty`,UI)),e)}function FR({force:e=!1}={}){if(!KL||!e&&yr(KL)||(KL.replaceChildren(PR()),!oR))return;oR=!1;let t=KL.querySelector(`.hooks-btn-add`);t instanceof HTMLButtonElement&&t.focus()}function IR(e){qL=e}function LR(){if(!qL)return;YL=id(`hooks-report`);let e=qL({type:`request-hooks-report`,requestId:YL});e!==!JL&&(JL=!e,FR())}function RR(e){KL||(KL=M(`div`,`hooks-panel`),e.append(KL),FR({force:!0}))}function zR(){FR({force:!0})}function BR(e){bL(e,YL)&&(GL=e,JL=!1,FR())}function VR(){LR()}function HR(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 UR=e=>e.ui.path;function WR({onSelectSession:e}){let t=M(`div`,`phone-board`),n=M(`header`,`phone-topbar`),r=null,i=M(`button`,`btn-dialog`,`Next`);i.type=`button`,i.addEventListener(`click`,()=>{let t=Zh(ag(b()),r);t&&(r=t,e?.(t))});let a=TN(i),o=M(`div`,`phone-board-list`),s=M(`div`,`phone-empty`),c=M(`p`,`phone-empty-title`,`No sessions`),l=M(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);s.append(c,l),t.append(n,a,o,s);let u=new Map,d=new Map,f=new WeakMap,p=new WeakMap,m=new WeakMap,h=0;hr(n);function g(t){let{row:n,refs:r}=$g(`button`);n.type=`button`,n.dataset.id=t,n.addEventListener(`click`,()=>e?.(t));let{item:i}=e_(n,()=>_v(t));return i.setAttribute(`role`,`listitem`),f.set(n,{refs:r,item:i}),n}function _(){let e=M(`section`,`phone-board-group`),t=SN({onAdd:gv,onForget:e=>{m_(e),x()}}),n=M(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),p.set(e,{...t,rows:n}),e}function v(e,t){let n=f.get(e);if(!n)return;let{ui:r,state:i,name:a}=t;n_(e,n.refs,{ui:r,state:i,name:a,mergeStatus:r.card?.dataset.merge||``})}function y(e,t){let n=p.get(e);n&&(CN(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function b(){return Xh(pv())}function x(){let e=b(),t=bN(e,UR,p_(e,UR)),n=og(e);h=sg(n),EN(a,n);let r=new Set(t.order),i=t.order.join(`,`),x=m.get(o)===i&&o.childElementCount===t.groups.length;for(let e of t.groups){let t=d.get(e.key);t||(t=_(),d.set(e.key,t)),y(t,e),x||o.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=p.get(t);if(!r)continue;let i=m.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=u.get(t.id);e||(e=g(t.id),u.set(t.id,e)),v(e,t);let n=f.get(e);n&&(i||r.rows.appendChild(n.item))}m.set(r.rows,n)}m.set(o,i);for(let[e,t]of[...d])r.has(e)||(t.remove(),d.delete(e));let S=new Set(xN(t));for(let[e,t]of[...u]){if(S.has(e))continue;let n=f.get(t);n&&n.item.remove(),u.delete(e)}let ee=t.groups.length>0,te=P.size===0;o.hidden=!ee,s.hidden=ee,Up(s,te),c.hidden=te,l.hidden=te}function S(e,t){let n=e.card?.dataset.id,r=n?u.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:uf(f.get(r)?.refs.glyph))}return vf(()=>{for(let[e,t]of u){let n=P.get(e),r=f.get(t);n&&r&&(r.refs.elapsed.textContent=gf(n))}}),{el:t,topBarEl:n,refresh:x,renderActivity:S,getAttentionCount:()=>h}}var GR=`clipboard`,KR=`upload`,qR=24,JR=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:GR,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:KR,title:`Upload a photo or file to this session`})]);function YR(e){let t=JR.find(t=>t.id===e);return t?t.bytes:null}function XR(e){return!!e&&e.action===GR}function ZR(e){return!!e&&e.action===`upload`}function QR(e,t,n=qR){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 $R(e,t,n=qR){let r=QR(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 ez={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function tz(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):ez[e]??null}function nz({send:e,getSessionId:t,reportProblem:n}){let r=M(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,a=null,o=M(`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 JR){t.id===`left`&&r.appendChild(rz(e));let n=M(`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){ZR(t)?d(r):XR(t)?az(e,n):e(YR(t.id))}function d(e){a=e,i||(i=M(`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 kx(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:l}}function rz(e){let t=M(`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=$R(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(YR(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 iz=`Paste needs clipboard permission.`;function az(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(iz);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(iz)):t(`Paste is unavailable in this browser.`)}var oz=`‹`;function sz({onBack:e}){let t=M(`div`,`phone-terminal`),n=M(`header`,`phone-topbar phone-terminal-bar`),r=M(`button`,`phone-back`,oz);r.type=`button`,r.setAttribute(`aria-label`,`Back to board`),r.addEventListener(`click`,()=>e?.());let i=M(`div`,`phone-terminal-identity`),a=M(`span`,`phone-terminal-name`);a.title=`Double-tap to rename`,a.addEventListener(`dblclick`,()=>ee());let o=M(`span`,`session-task-title phone-terminal-title`);W_(o,()=>te());let s=M(`span`,`phone-terminal-badge`);s.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 c=N(s,`.phone-terminal-glyph`,`span`),l=N(s,`.phone-terminal-label`,`span`),u=N(s,`.phone-terminal-elapsed`,`span`);l.before(a),i.append(o,s);let d=M(`div`,`phone-terminal-actions`);n.append(r,i,d);let f=M(`div`,`phone-card-slot`),p=M(`div`,`phone-empty`);p.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 m=hd(`phone-key-status m-0 px-3 py-1`),{element:h,takeHeldControl:g}=nz({send:b,getSessionId:()=>_,reportProblem:e=>m.show(`error`,e)});t.append(n,f,p,m.element,h);let _=null,v=null,y=null;function b(e){let t=_?P.get(_):null;t&&(nC(t,e)?m.clear():m.show(`error`,G))}function x(){let e=_?P.get(_):null;e?.term&&e.term.focus()}f.addEventListener(`click`,x);function S(e){let t=tz(e);return!t||!g()?!1:(b(t),!0)}f.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||S(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),f.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&S(e.data.slice(-1))&&(e.stopPropagation(),(_?P.get(_):null)?._resetSoftKeyboardBuffer?.())},!0);function ee(){let e=_?P.get(_):null;e&&_&&Y_(e,_,{returnsFocusToTerminal:!1})}function te(){let e=_?P.get(_):null;e&&_&&K_(e,_)}function C(){let e=_?P.get(_):null,t=!!e;if(p.hidden=t,f.hidden=!t,h.hidden=!t,i.hidden=!t,!t){n.removeAttribute(`data-state`),n.removeAttribute(`data-monitoring`),n.removeAttribute(`data-prompt`);return}let r=e.currentState||j.DORMANT;t_(n,{glyph:c,label:l},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let s=e.card?.dataset.session||_;J_(a)||(a.textContent=s),o.dataset.sessionName=s??``,G_(o,e.taskTitle),u.textContent=gf(e)}function ne(){y&&=(delete y.renameTargetEl,delete y.titleTargetEl,null),a.replaceChildren(),v&&=(Sr(v),v.parentElement===d&&v.remove(),null)}function w(e){let t=P.get(e);t&&(_===e&&Mr()===e&&t.card.parentElement===f||(ne(),_=e,Nr(t,e,f,{className:`phone-centered`}),v=N(t.card,`.session-actions`,`div`),xr(v,d),t.renameTargetEl=a,t.titleTargetEl=o,y=t),C())}function re(){ne(),Mr()===_&&Pr(),_=null,C()}function ie(){if(!_){C();return}let e=P.get(_);e?e.card.parentElement===f?C():(w(_),t.hidden||dC(e,_,!0)):re()}function ae(){let e=_;e&&dC(P.get(e),e,!1)}function oe(){ie();let e=_;if(!e)return;let t=P.get(e);t&&(dC(t,e,!0),hN(e))}return vf(()=>{let e=_?P.get(_):null;e&&(u.textContent=gf(e))}),C(),{el:t,show:w,clear:re,refresh:ie,reveal:oe,unview:ae,getSessionId:()=>_}}var cz=`board`,lz=Object.freeze([{id:cz,label:`Board`,glyph:`▤`},{id:`terminal`,label:`Terminal`,glyph:`▸`},{id:`review`,label:`Review`,glyph:`◫`}]),uz=[],dz=new Map,fz=null,pz=new Map,mz=new Map,hz=new Map,gz=null,_z=null,vz=null,yz=null,bz=null,xz=new Map,Sz=new Set,Cz={},wz=!1,Tz=120,Ez=0,Dz=0,Oz=0,kz=null;function Az(){Ez=0,Dz=0}function jz(){let e=window.visualViewport;fz&&(!wz||!e?fz.removeAttribute(`data-keyboard`):(fz.style.setProperty(`--phone-vh`,`${e.height}px`),fz.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==Dz&&(Dz=e.width,Ez=0),Ez=Math.max(Ez,e.height),Ez-e.height>Tz?fz.dataset.keyboard=`open`:fz.removeAttribute(`data-keyboard`)))}function Mz(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=M(`button`,n);i.type=`button`;let a=M(`span`,`phone-nav-glyph`,t);a.setAttribute(`aria-hidden`,`true`),i.append(a,M(`span`,`phone-nav-label`,e));let o=M(`span`,r);return o.setAttribute(`aria-hidden`,`true`),o.hidden=!0,i.appendChild(o),i}function Nz(e){return e?.querySelector(`.phone-nav-dot`)||null}function Pz(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function Fz(){let e=[];for(let t of uz){if(Sz.has(t.id))continue;let n=hz.get(t.id)||!1;e.push(n),Pz(Nz(xz.get(t.id)),n)}Pz(Nz(yz),mg(e))}function Iz(){let e=M(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of uz){let n=Mz(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=Sz.has(t.id),n.addEventListener(`click`,()=>{Lz(!1),eB(t.id)}),xz.set(t.id,n),e.appendChild(n)}return e}function Lz(e){bz&&yz&&(bz.hidden=!e,yz.setAttribute(`aria-expanded`,String(e)))}function Rz(){return!!bz&&!bz.hidden}function zz(){let e=M(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of lz){let n=Mz(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>eB(t.id)),pz.set(t.id,n),e.appendChild(n)}return yz=Mz(`More`,`⋯`),yz.setAttribute(`aria-expanded`,`false`),yz.addEventListener(`click`,()=>Lz(!Rz())),e.appendChild(yz),bz=Iz(),e.appendChild(bz),e}function Bz(e,t,n){let r=M(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),mz.set(e,r),r}function Vz(){if(fz)return;gz=WR({onSelectSession:Hz}),sf((e,t)=>{wz&&gz?.renderActivity(e,t)}),_z=sz({onBack:()=>eB(cz)}),vz=M(`div`,`phone-review`);let e=M(`div`,`phone-screens`),t={[cz]:gz.el,terminal:_z.el,review:vz};for(let n of lz)e.appendChild(Bz(n.id,n.label,t[n.id]));for(let t of uz){let n=M(`div`,`phone-panel phone-${t.id}`);dz.set(t.id,n),e.appendChild(Bz(t.id,t.label,n))}fz=M(`div`,`phone-shell`),fz.id=`phone-shell`,fz.append(e,zz()),document.body.appendChild(fz),Fz(),window.visualViewport?.addEventListener(`resize`,jz),window.visualViewport?.addEventListener(`scroll`,jz),window.addEventListener(`popstate`,Xz),document.addEventListener(`click`,e=>{Rz()&&bz&&yz&&e.target instanceof Node&&(bz.contains(e.target)||yz.contains(e.target)||Lz(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&Rz()&&Lz(!1)})}function Hz(e){if(P.has(e)){if(!gz||!_z)throw Error(`Phone shell is not built`);uv(e,`dormant-fallback`),dv(e),_z.show(e),eB(`terminal`)}}function Uz(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:e}}function Wz(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function Gz(e){return Wz(e)?e.glimmervoidNested===!0?2:1:0}function Kz(e){return e===cz?0:Cz.canGoBack?.(e)?2:1}function qz(e,t){return Wz(history.state)===e&&Gz(history.state)===(t?2:1)}function Jz(){if(!wz||kz!==null)return;let e=Ar.snapshot().phoneScreen||cz,t=Kz(e);if(Oz>t){kz=location.href,history.go(t-Oz),Oz=t;return}let n=Oz===2;Oz>0&&!qz(e,n)&&history.replaceState(Uz(e,n),``),Oz===0&&t>0&&(history.pushState(Uz(e,!1),``),Oz=1),Oz===1&&t===2&&(history.pushState(Uz(e,!0),``),Oz=2)}function Yz(){let e=Wz(history.state);return e&&$z(e)?(Oz=Gz(history.state),e):(e&&history.replaceState(null,``),Oz=0,cz)}function Xz(e){if(!wz)return;if(kz!==null){history.replaceState(history.state,``,kz),kz=null,Jz();return}let t=Wz(e.state),n=t&&$z(t)?t:cz;Oz=Gz(e.state);let r=Ar.snapshot().phoneScreen;Oz<2&&n===r&&Cz.canGoBack?.(r)&&Cz.onBack?.(r),Qz(n),Jz()}function Zz(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function Qz(e){if(!yz||!_z)throw Error(`Phone shell is not built`);Ar.dispatch(`setPhoneScreen`,e),Lz(!1);for(let[t,n]of mz)n.hidden=t!==e;Cz.onScreenShown?.(e),Zz(pz,e);let t=xz.has(e);t&&yz.setAttribute(`aria-current`,`page`),t||yz.removeAttribute(`aria-current`),Zz(xz,e),e===`terminal`?_z.reveal():_z.unview()}function $z(e){return mz.has(e)&&!Sz.has(e)}function eB(e){fz&&$z(e)&&(Qz(e),Jz())}function tB(e){Cz=e||{},uz=Cz.panels||[]}function nB({sessionId:e,linkedScreenId:t}={}){if(wz)return;if(Vz(),!fz||!gz||!_z)throw Error(`Phone shell is not built`);wz=!0,fz.hidden=!1;for(let e of Cz.headerControls||[])xr(e,gz.topBarEl);cE(vz);for(let e of uz)xr(e.el,dz.get(e.id)),e.el.hidden=!1;jz(),e&&_z.show(e);let n=Yz();sB(),t&&$z(t)?eB(t):e&&n===cz?eB(`terminal`):(Qz(n),Jz())}function rB(){if(wz){if(!fz||!_z)throw Error(`Phone shell is not built`);wz=!1,_z.clear(),cE(null);for(let e of uz)Sr(e.el);for(let e of Cz.headerControls||[])Sr(e);Lz(!1),fz.hidden=!0,fz.removeAttribute(`data-keyboard`),Az(),Oz>0&&history.go(-Oz),Oz=0,kz=null}}function iB(e){return!wz||!gz||!_z||!P.has(e)?!1:(Hz(e),zM(e))}function aB(){return wz}function oB(){return wz&&_z?_z.getSessionId():null}function sB(){if(!wz)return;if(!gz||!_z)throw Error(`Phone shell is not built`);fB(),gz.refresh(),_z.refresh(),Ar.snapshot().phoneScreen===`terminal`&&!_z.getSessionId()&&eB(cz);let e=Nz(pz.get(cz));e&&(e.hidden=gz.getAttentionCount()===0)}function cB(e){return wz?(Hz(e),!0):!1}function lB(e){return!wz||!$z(e)?!1:(eB(e),!0)}function uB(e,t){t&&Sz.delete(e),t||Sz.add(e);let n=xz.get(e);n&&(n.hidden=!t);let r=mz.get(e);r&&!t&&(r.hidden=!0),Fz(),!t&&wz&&Ar.snapshot().phoneScreen===e&&eB(cz)}function dB(e,t){hz.set(e,typeof t==`string`&&t?t:t===!0),Fz()}function fB(){if(!_z)throw Error(`Phone shell is not built`);if(_z.getSessionId())return;let e=fv();e&&(_z.show(e),dv(e,{rememberFocus:!1}))}function pB(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function mB(e,t){if(!e?.error)return null;let n=`Could not reach GitHub: ${e.error.trim().replace(/[.!]+$/,``)}.`;if(e.isRefreshing)return`${n} Refreshing.`;if(typeof e.nextAttemptAt!=`number`)return n;let r=Math.max(0,Math.ceil((e.nextAttemptAt-t)/1e3));return r===0?`${n} Retrying now.`:e.retry?`${n} Retrying in ${r}s (${e.retry.attempt} of ${e.retry.limit}).`:`${n} Next try in ${r>=60?`${Math.ceil(r/60)} min`:`${r}s`}.`}function hB(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}var gB={minPx:220,maxPx:720},_B=16,vB=new Set,yB=0;function bB(e){let t=ec();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=Qs();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function xB(){for(let e of vB)e.isConnected?bB(e):vB.delete(e)}function SB(e,t){let n=M(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function CB(e){let t=M(`div`,`pr-queue-foot`);return e&&t.append(e),t}function wB({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=M(`div`,`pr-columns`),i=M(`div`,`pr-queue-pane`),a=M(`nav`,`pr-queue`);a.id=`pr-queue-${++yB}`,a.setAttribute(`aria-label`,e);let o=M(`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=Ag(16,16);s.append(kg(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),s.append(kg(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let c=kg(`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`,()=>{tc(!ec()),xB()});let l=CB(null);i.append(SB(t,o),a,l);let u=M(`div`,`pr-queue-resizer`);u.setAttribute(`role`,`separator`),u.setAttribute(`aria-orientation`,`vertical`),u.setAttribute(`aria-label`,n),u.tabIndex=0;let d=M(`main`,`pr-detail-host`);return r.append(i,u,d),bB(r),vB.add(r),Dg({resizer:u,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:gB,keyStepPx:_B,getStoredWidth:Qs,setStoredWidth:$s}),{columns:r,queue:a,foot:l,detail:d}}var TB=1.2,EB=1.55,DB=.12,OB=523.25,kB=2,AB=8,Y=(e,t,n)=>({semitone:e,startBeat:t,beats:n}),jB={melody:[Y(7,4,.5),Y(11,4.5,.5),Y(12,5,3)],bass:[Y(-5,4,1),Y(-12,5,3)]},MB=[{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,...jB.melody],bass:[...e.bass,...jB.bass]}));function NB(e,t){return OB*2**((e+t)/12)}function PB(e,t){let n=(e,n,r)=>e.map(e=>({frequency:NB(e.semitone,t),startSeconds:EB+e.startBeat*DB,durationSeconds:e.beats*DB,waveform:n,gain:r}));return[...n(e.melody,`square`,.2),...n(e.melody,`triangle`,.5),...n(e.bass,`triangle`,.6)]}var FB=[{frequency:220,endFrequency:880,startSeconds:0,durationSeconds:.32,waveform:`triangle`,gain:.25},{frequency:160,endFrequency:45,startSeconds:TB,durationSeconds:.28,waveform:`sine`,gain:1},{frequency:1400,endFrequency:380,startSeconds:TB,durationSeconds:.06,waveform:`square`,gain:.12}];function IB(e){let t=MB[e%MB.length],n=Math.min(e*kB,AB);return{peakGain:.1,tones:[...FB,...PB(t,n)]}}function LB(e){return Math.round(Math.sqrt(2*e/780)*1e3)}function RB(e,t,n=Math.random){return Math.round(e+n()*(t-e))}function zB(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 BB=.6,VB=.25,HB=1.6;function UB(e){return Math.min(BB+e*VB,HB)}var WB=[`var(--accent)`,`var(--state-running)`,`var(--state-idle)`,`var(--state-waiting)`,`var(--state-failed)`];function GB(e,t=Math.random){let n=RB(320,520,t),r=RB(1800,2800,t);return[[`--confetti-start-x`,`${RB(4,96,t)}%`],[`--confetti-x`,`${RB(-140,140,t)}px`],[`--confetti-rise`,`${-RB(20,55,t)}px`],[`--confetti-fall`,`${RB(45,70,t)}vh`],[`--confetti-rise-ms`,`${n}ms`],[`--confetti-fall-ms`,`${r}ms`],[`--confetti-flight-ms`,`${n+r}ms`],[`--confetti-tilt`,`${RB(0,180,t)}deg`],[`--confetti-spin`,`${RB(-360,360,t)}deg`],[`--confetti-flutter-ms`,`${RB(160,340,t)}ms`],[`--confetti-delay`,`${RB(0,160,t)}ms`],[`--confetti-color`,WB[e%WB.length]]]}var KB=`<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>`,qB=`<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 JB(){let e=sr(`div`,`merge-bullseye-target`,KB);return e.append(M(`span`,`merge-bullseye-ripple`)),e}function YB(){let e=M(`div`,`merge-bullseye-dart-drift`),t=M(`div`,`merge-bullseye-dart-arc`),n=M(`div`,`merge-bullseye-dart-aim`);return n.append(sr(`div`,`merge-bullseye-dart`,qB)),t.append(n),e.append(t),e}function XB(){let e=M(`div`,`merge-bullseye-range`),t=M(`div`,`merge-bullseye-track`);return t.append(YB()),e.append(JB(),t),e}var ZB={title:`BULLSEYE!`,buildScene:XB},QB=6,$B=30,eV=-14,tV=16;function nV(e=Math.random){return[[`--crosshair-start-left`,`${RB(QB,$B,e)}%`],[`--crosshair-start-offset-y`,`${RB(eV,tV,e)}px`]]}var rV=`<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>`,iV=`<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>`,aV=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 3L8 8M21 3L16 8M3 21L8 16M21 21L16 16"/></svg>`;function oV(){let e=M(`div`,`merge-headshot-sweep`);cr(e,nV());let t=M(`div`,`merge-headshot-aim`);t.append(sr(`div`,`merge-headshot-crosshair`,iV));let n=M(`div`,`merge-headshot-bob`);return n.append(t,sr(`div`,`merge-headshot-hitmarker`,aV)),e.append(n),e}function sV(){let e=M(`div`,`merge-headshot-range`),t=M(`div`,`merge-headshot-track`);return t.append(oV()),e.append(sr(`div`,`merge-headshot-target`,rV),t),e}var cV={title:`HEADSHOT!`,buildScene:sV},lV=[`10`,`J`,`Q`,`K`,`A`],uV=19,dV=5,fV=9,pV=780,mV=70,hV=70,gV=35;function _V(e){let t=lV.length-1,n=e-t/2;return{offsetPx:n*uV,titleSpreadFraction:n/t,tiltDegrees:n*dV,bottomPx:fV-n**2,dealLeadMs:pV-e*mV,flipLeadMs:160+(t-e)*hV,waveDelayMs:e*gV}}function vV(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 yV(){return[[`--card-flip-ms`,`160ms`]]}var bV=`<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 xV(e,t){let n=M(`div`,`merge-flush-deal`);cr(n,vV(_V(t)));let r=M(`div`,`merge-flush-hop`),i=M(`div`,`merge-flush-card`),a=M(`div`,`merge-flush-face`);return a.append(M(`span`,`merge-flush-rank`,e)),a.insertAdjacentHTML(`beforeend`,bV),i.append(M(`div`,`merge-flush-back`),a),r.append(i),n.append(r),n}function SV(){let e=M(`div`,`merge-flush-table`);return cr(e,yV()),e.append(...lV.map(xV)),e}var CV={title:`ROYAL FLUSH!`,buildScene:SV},wV=[1,2,3,4],TV=14,EV=3,DV=3,OV=10,kV=20,AV=2,jV=28,MV=18,NV=.01,PV=1.5,FV=2200,IV=1,LV=120,RV=.35,zV=4,BV=65,VV=145;function HV(e){return Math.round(e/(Math.PI*MV)*360)}function UV(e){return kV-e*AV}function WV(e){return e.rowIndex*TV+e.depthIndex*EV}function GV(e,t,n){return Array.from({length:n},(r,i)=>e+(t-e)*i/(n-1))}function KV(){return wV.flatMap((e,t)=>Array.from({length:e},(n,r)=>({rowIndex:t,depthIndex:e-1-r})))}function qV(e,t){let n=zB(GV(15,105,e),t),r=zB(GV(BV,VV,e),t);return n.map((e,n)=>({angleDegrees:e+RB(-4,zV,t),depthScalePercent:Math.round(r[n])}))}function JV(e,t,n){let r=RB(240,380,n),i=t.angleDegrees*Math.PI/180,a=r*Math.cos(i),o=(r*Math.sin(i))**2/1560,s=RB(15,45,n),c=LB(o),l=LB(o+s),u=c+l,d=RB(540,1080,n),f=a>=0?1:-1,p=WV(e);return{depthIndex:e.depthIndex,launchAngleDegrees:t.angleDegrees,distanceFromHeadPinPx:p,layer:UV(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/RV)}}function YV(e=Math.random){let t=KV(),n=qV(t.length,e);return t.map((t,r)=>JV(t,n[r],e))}function XV(e){return[[`--pin-left`,`${e.distanceFromHeadPinPx}px`],[`--pin-raise`,`${e.depthIndex*DV}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 ZV(){return UV(PV)}function QV(){return Math.max(...KV().map(WV))+OV}function $V(){let e=QV(),t=jV+e+MV-IV;return[[`--ball-follow-px`,`${LV}px`],[`--ball-follow-ms`,`${Math.round(LV/RV)}ms`],[`--ball-follow-spin`,`${HV(LV)}deg`],[`--ball-size`,`${MV}px`],[`--ball-approach-spin`,`${FV}deg`],[`--ball-impact-inset`,`${t}px`],[`--ball-layer`,String(ZV())],[`--rack-right`,`${jV}px`],[`--rack-width`,`${e}px`],[`--pin-width`,`${OV}px`]]}function eH(e=Math.random){return e()>=NV?null:Lo[Math.floor(e()*Lo.length)].sprite}var tH=`<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 nH(e){let t=M(`span`,`merge-strike-pin`);return t.append(sr(`span`,`merge-strike-pin-arc`,tH)),cr(t,XV(e)),t}function rH(){let e=eH();if(!e)return M(`span`,`merge-strike-ball`);let t=M(`span`,`merge-strike-ball is-animal`);return t.append(M(`span`,`nyan-sprite ${e}`)),t}function iH(){let e=M(`div`,`merge-strike-lane`);cr(e,$V());let t=M(`div`,`merge-strike-rack`);t.append(...YV().map(nH));let n=M(`div`,`merge-strike-track`);return n.append(rH()),e.append(t,n),e}var aH={title:`STRIKE!`,buildScene:iH},oH=20,sH=92,cH=23,lH=7,uH=-40;function dH(){let e=LB(72),t=LB(69),n=780*t/1e3;return{launchHeightPx:oH,peakHeightPx:sH,heightThroughRimPx:cH,heightLeavingNetPx:lH,heightOutOfCardPx:uH,riseMs:e,fallToRimMs:t,speedThroughRimPxPerSecond:n,netCatchMs:Math.round(32/n*1e3),dropMs:LB(47)}}function fH(e=dH()){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 pH=`<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>`,mH=`<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 hH(){let e=M(`div`,`merge-swish-ball-drift`),t=M(`div`,`merge-swish-ball-arc`);return t.append(M(`span`,`merge-swish-ball`)),e.append(t),e}function gH(){let e=M(`div`,`merge-swish-court`);cr(e,fH());let t=M(`div`,`merge-swish-track`);return t.append(hH()),e.append(sr(`div`,`merge-swish-hoop-back`,pH),t,sr(`div`,`merge-swish-hoop-front`,mH)),e}var _H=[aH,{title:`SWISH!`,buildScene:gH},ZB,cV,CV],vH=48,yH=5600,bH=20,xH=null,SH=[],CH=null,wH=!1,TH=0;function EH(e){let t=M(`span`,`merge-confetti-piece`),n=M(`span`,`merge-confetti-arc`);return n.append(M(`span`,`merge-confetti-paper`)),t.append(n),cr(t,GB(e)),t}function DH(e){let t=M(`p`,`merge-celebration-title`);return t.setAttribute(`aria-hidden`,`true`),Array.from(e).forEach((e,n)=>{let r=M(`span`,`merge-celebration-letter`,e);r.style.setProperty(`--letter-delay`,`${n*45}ms`),t.append(r)}),t}function OH(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 kH(e){let t=M(`div`,`merge-celebration-scene`);return t.setAttribute(`aria-hidden`,`true`),t.append(e.buildScene()),t}function AH(){return _H[Math.floor(Math.random()*_H.length)]}function jH(e){if(As())try{Vy(IB(e))}catch{}}function MH(e){let t=M(`ul`,`merge-celebration-details`);for(let n of e)t.append(M(`li`,`merge-celebration-detail`,n));return t}function NH(e,t,n){xH?.remove(),jH(n);let r=M(`div`,`merge-celebration`);r.setAttribute(`role`,`status`);let i=M(`div`,`merge-celebration-card`),a=M(`div`,`merge-celebration-stage`),o=DH(t.title),s=kH(t);a.append(o,M(`p`,`merge-celebration-message`,e.message),MH(e.detailLines),s);let c=M(`div`,`merge-confetti`);c.style.setProperty(`--confetti-scale`,String(UB(n)));for(let e=0;e<vH;e+=1)c.append(EH(e));i.append(c,a),r.append(i),document.body.append(r),OH(a,o,s),xH=r,window.setTimeout(()=>{r.remove(),xH===r&&(xH=null)},yH)}function PH(e){return wH?`playing`:e?`queued`:`empty`}function FH(){if(!CH)return;let e=SH.length>0;CH.tray.dataset.state=PH(e),CH.count.textContent=e?String(SH.length):``,CH.button.disabled=wH||!e}function IH(){let e=SH.shift();wH=e!==void 0,FH(),e&&(NH(e.text,e.scene,TH),TH+=1,window.setTimeout(IH,yH))}function LH(e,t,n){CH={tray:e,button:t,count:n},t.addEventListener(`click`,()=>{TH=0,IH()}),FH()}function RH(e,t=AH()){SH.push({text:e,scene:t}),SH.length>bH&&SH.shift(),FH()}var zH={MERGE:`a merge commit`,SQUASH:`squash and merge`,REBASE:`rebase and merge`},BH=new Set([`FAILURE`,`ERROR`]);function VH(e){return zH[e]}function HH(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&&BH.has(e.checks.state)?`Checks are failing`:e.stage===`ready`?null:`Not ready to merge yet`:`Closed`}function UH(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 WH(e){let t=k.parse({...e,key:`${e.repo}#${e.number}`,stage:`unknown`});return{...t,stage:UH(t)}}function GH(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i)}}function KH(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=qH(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 qH(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`),GH(e,!!e.keepMergeable,t,n,o,r)}function JH(e){return e?.isKeepMergeableEnabled!==!1}function YH(e){return e?.isMergeQueueEnabled!==!1}var XH={one:`st`,two:`nd`,few:`rd`,other:`th`},ZH=new Intl.PluralRules(`en-US`,{type:`ordinal`});function QH(e){return`${e}${XH[ZH.select(e)]??`th`}`}function $H(e,t,n){return e===null?`Not queued`:t?`Repair pushed, waiting for you`:n?`Queued, the last merge failed and retries an hour later once it is ready`:`Queued, ${QH(e)} in line for this repository`}function eU(e,t,n=``,r=!0){let i=e.mergeQueuePosition??null;return GH(e,i!==null,t,n,$H(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}var tU=[`Needs you`,`Waiting`,`Ready to merge`,`Drafts`,`Merged today`],nU=[`Ready to merge`,`Needs you`,`Waiting`,`Drafts`,`Merged today`],rU={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`},iU={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`},aU={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`},oU={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 sU(e){let t=ft.safeParse(e);return t.success?t.data:null}function cU(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 lU(e){return tU[e.rows.reduce((e,{pr:t})=>Math.min(e,tU.indexOf(rU[t.stage])),tU.length-1)]}function uU(e){let t=new Map(tU.map(e=>[e,{title:e,prs:[],rows:[]}]));for(let n of cU(e)){let e=t.get(lU(n));if(e)for(let t of n.rows)e.rows.push(t),e.prs.push(t.pr)}return nU.flatMap(e=>t.get(e)??[])}function dU(e){return iU[e]}function fU(e){return aU[e]}function pU(e){return oU[e]}function mU(e){if(e.checks.failing.length>0){let t=e.checks.failing.length-3;return{label:`Checks`,tone:`danger`,icon:`failed`,text:`${e.checks.failing.length} failing: ${e.checks.failing.slice(0,3).join(`, `)}${t>0?` and ${t} more`:``}`}}return 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 hU(e){return`${e} ${e===1?`approval`:`approvals`}`}function gU(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function _U(e){let t=e.reviewRequests.length>0?`Requested: ${gU(e)}`:`Approval required`;return e.approvals>0?`${t}, ${hU(e.approvals)}`:t}function vU(e){let t=e.approvals>0?hU(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 yU(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?vU(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:_U(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${gU(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function bU(e,t){return t?e.lastAuthor!==t:null}function xU(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function SU(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function CU(e,t){let n=bU(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 wU(e,t){return[...e.threads].sort((e,n)=>{let r=Number(bU(n,t)===!0)-Number(bU(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:xU(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:SU(e),lastActivityAt:e.lastActivityAt,waiting:CU(e,t)}))}function TU(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=>bU(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 EU(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 DU(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 OU={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 kU(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=OU[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}})}function AU(e,t=null){if(e.state===`MERGED`)return[];let n=[mU(e),yU(e),TU(e,t),EU(e),DU(e)],r=e.autoRebase?[jU(e,e.autoRebase)]:[],i=e.mergeQueueFailure?[{label:`Merge when ready`,tone:`danger`,icon:`failed`,text:`Merge failed: ${e.mergeQueueFailure.message}`}]:[];return[...n,...r,...i]}function jU(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 MU(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 NU(e,t=0){if(!e)return[];let n=mB(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}function PU(e,t){return e.flatMap(e=>{let n=t(e.key);if(!n)return[];let r=e.key.slice(0,e.key.lastIndexOf(`#`));return[{...WH({...n,repo:r}),...e}]})}function FU(e){let t=new Map;for(let n of e)for(let e of n.links){let r=In(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 IU(e,t){let n=e.flatMap(e=>e.prs);return t&&n.some(e=>e.key===t)?t:n[0]?.key??null}function LU(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 RU=3;function zU(e){if(e.length===1)return{message:`Merged ${e[0].key}`,detailLines:[e[0].title]};let t=e.slice(0,RU).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 BU={isVisible:!1,isDisabled:!0,statusText:``,tone:null},VU={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 HU(e,t){if(e.state!==`OPEN`)return BU;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,...VU[n.phase]};let r=HH(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 ${VH(e.mergeMethod)}`,tone:null}}function UU(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${VH(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function WU(e){let t=ht.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}var GU=null,KU=null,qU=null,JU=null,YU=null,XU=null,ZU=null,QU=null,$U=new Map,eW=new Set,tW=new Map,nW=new Map,rW=!1,iW=null,aW={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>qH(e,t,n,r,xf(e.keepMergeableAttempt?.at)),isFeatureEnabled:JH,save:async(e,t)=>{let n=await ad(`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.`}},oW={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:eU,isFeatureEnabled:YH,save:async(e,t)=>{let n=await ad(`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.`}},sW=6e4,cW=6e4,lW=`The server did not answer within ${sW/1e3} s. Check GitHub before trying again.`,uW=`${G} Check GitHub before trying again.`;function dW(e,t){let n=M(`div`,`reviews-refresh-control`),r=M(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);r.type=`button`;let i=M(`span`,`reviews-refresh-status`);i.setAttribute(`role`,`status`);let a=M(`p`,`my-pr-error reviews-retry-notice`);n.append(r,i);let o=null,s=!1,c=``,l=null;function u(){a.textContent=mB(o,Date.now()),a.hidden!==!o?.error&&(a.hidden=!o?.error);let e=a.isConnected&&!yr(t)&&!document.hidden&&a.getClientRects().length>0&&pB(o,Date.now());!e&&l!==null&&(window.clearInterval(l),l=null),e&&l===null&&(l=window.setInterval(u,1e3))}function d(e){e!==o&&(c=``),o=e,r.disabled=s||!!e?.isRefreshing||!e?.configured,i.textContent=hB(e,s,c),i.hidden=!i.textContent,u()}r.addEventListener(`click`,async()=>{if(!s){s=!0,c=``,d(o);try{let t=await ad(`github-polling-refresh`,{lane:e},{timeoutMs:cW});t.type===`github-polling-refresh-result`&&(c=t.ok?`Refreshed.`:t.error??`Could not refresh from GitHub.`)}catch(e){c=_d(e,cW)}finally{s=!1,d(o)}}});let f=new MutationObserver(u);f.observe(t,{attributes:!0,subtree:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});for(let e=t.parentElement;e;e=e.parentElement)f.observe(e,{attributes:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});return document.addEventListener(`visibilitychange`,u),{control:n,notice:a,update:d}}function fW(e,t,n,r){$U.set(e,{head:t,phase:n,text:r}),kW()}function pW(e){if(tW.has(e.key))return;let t=id(`my-pr-merge`);if(!K({type:`my-pr-merge`,requestId:t,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){fW(e.key,e.headRefOid,`failed`,G);return}let n=window.setTimeout(()=>{tW.delete(e.key),fW(e.key,e.headRefOid,`failed`,lW)},sW);tW.set(e.key,{requestId:t,head:e.headRefOid,timer:n}),$U.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),kW()}function mW(e){let t=HU(e,$U.get(e.key));if(!t.isVisible)return null;let n=M(`div`,`my-pr-merge`),r=M(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=M(`span`,`pr-action-status`,t.statusText);return i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),t.tone&&(i.dataset.tone=t.tone),r.addEventListener(`click`,()=>{Wd({title:`Merge pull request`,message:UU(e),confirmLabel:`Merge`,onConfirm:()=>pW(e)})}),n.append(r,i),n}function hW(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(YU));if(!n.isVisible)return null;let r=M(`div`,`my-pr-merge`),i=M(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=M(`span`,`pr-action-status`,n.statusText);return 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),kW();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,_d(n,q))}finally{t.pendingKeys.delete(e.key),kW()}}}),r.append(i,a),r}function gW(e,{hasGlyph:t}){let n=M(`span`,`my-pr-stage`);return n.dataset.tone=fU(e.stage),t&&n.append(zg(pU(e.stage),fU(e.stage))),n.append(dU(e.stage)),n}function _W(e,t){let n=M(`span`,`my-pr-requested`);n.append(M(`span`,null,`Requested`));let r=M(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=lr({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,M(`span`,`my-pr-requested-names`,t.slice(11))),n}function vW(){if(!GU||!KU||qU?.isConnected)return;let e=wB({queueLabel:`My pull requests`,scopeTabs:KU,resizerLabel:`Resize pull request list`});qU=e.queue,JU=e.detail,GU.replaceChildren(e.columns),QU&&e.foot.append(QU.control)}function yW(e){if(!JU)return;if(!e){JU.replaceChildren(M(`p`,`pr-empty`,MU(YU)));return}let t=M(`article`,`pr-detail`),n=M(`div`,`pr-detail-heading`),r=M(`div`,`pr-detail-title`);r.append(fr(`pr-link`,e.key,e.url),M(`h2`,null,e.title)),n.append(r,gW(e,{hasGlyph:!0})),t.append(n);for(let n of[aW,oW]){let r=hW(e,n);r&&t.append(r)}let i=AU(e,YU?.viewer??null);if(i.length>0){let n=M(`section`,`pr-readiness-section`);n.append(M(`h3`,`pr-section-heading`,`Merge readiness`));let r=M(`ul`,`pr-readiness`);for(let t of i){let n=M(`li`,`pr-readiness-row`),i=M(`span`,`pr-readiness-value`);t.label===`Review`&&t.text.startsWith(`Requested: `)&&i.append(_W(e,t.text)),i.childNodes.length===0&&(i.textContent=t.text),n.append(zg(t.icon,t.tone),M(`span`,`pr-readiness-label`,t.label),i),r.append(n)}n.append(r);let a=mW(e);a&&n.append(a),t.append(n)}if(e.checks.failing.length>0){let n=M(`section`,`my-pr-failures`);n.append(M(`h3`,`pr-section-heading`,`Failing checks`));let r=M(`ul`,`my-pr-facts`);for(let t of e.checks.failing)r.append(M(`li`,null,t));n.append(r),t.append(n)}let a=kU(e);if(a.length>0){let e=M(`section`,`pr-readiness-section`);e.append(M(`h3`,`pr-section-heading`,`Reviews`));let n=M(`ul`,`pr-readiness`);for(let e of a){let t=M(`li`,`pr-readiness-row`),r=Date.parse(e.submittedAt??``),i=Number.isFinite(r)?`${e.text} ${xf(r)}`:e.text,a=M(`span`,`my-pr-reviewer`);a.append(ur([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),M(`span`,null,e.reviewer)),t.append(zg(e.icon,e.tone),a,M(`span`,`pr-readiness-value`,i)),n.append(t)}e.append(n),t.append(e)}let o=wU(e,YU?.viewer??null);if(o.length>0){let e=M(`section`,`my-pr-threads-section`);e.append(M(`h3`,`pr-section-heading`,`Unresolved threads`));let n=M(`ul`,`my-pr-threads`);for(let e of o){let t=M(`li`,`my-pr-thread`),r=M(`div`,`my-pr-thread-heading`);if(r.append(fr(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=M(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(zg(e.waiting.icon,e.waiting.tone),e.waiting.text),r.append(t)}let i=M(`p`,`my-pr-thread-excerpt`);i.append(M(`strong`,null,e.author),` ${e.excerpt}`);let a=Date.parse(e.lastActivityAt),o=M(`p`,`my-pr-thread-meta`,Number.isFinite(a)?`${e.replySummary}, ${xf(a)}`:e.replySummary);t.append(r,i,o),n.append(t)}e.append(n),t.append(e)}let s=M(`p`,`pr-detail-meta`);s.append(M(`span`,null,`Opened ${xf(Date.parse(e.createdAt))}`),M(`span`,null,`${e.state===`MERGED`?`Merged`:`Updated`} ${xf(Date.parse(e.state===`MERGED`?e.mergedAt??``:e.updatedAt))}`)),t.append(s),JU.replaceChildren(t)}function bW(){return[...nW].flatMap(([e,t])=>{let n=P.get(e);return!n||t.length===0?[]:[{id:e,title:Cr(n)||e,links:t}]})}function xW(e){let t=e.dataset.sessionId??``,n=P.get(t),r=dr(e,`.session-row-name`);n&&(r.textContent=Cr(n)||t);let i=t_(e,{glyph:dr(e,`.session-row-glyph`),label:dr(e,`.session-row-label`)},n?.currentState||j.DORMANT,n?.awaitingBackgroundTasks,n?.pendingPromptKind),a=`Focus session ${r.textContent}, ${i}`;e.title=a,e.setAttribute(`aria-label`,a)}function SW(e){let{row:t,refs:n}=$g(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,xW(t),t.addEventListener(`click`,()=>iW?.(e.id)),t}function CW(e){if(!e||e.length===0)return null;let t=M(`div`,`my-pr-session-focus`);return t.append(...e.map(SW)),t}function wW(){for(let e of qU?.querySelectorAll(`.my-pr-session-pill`)??[])xW(e)}function TW(){rW||(rW=!0,queueMicrotask(()=>{rW=!1,kW()}))}function EW(e){nW=e,TW()}function DW(e){let t=PU(YU?.prs??[],Hn).find(t=>In(t)===e.toLowerCase());return t?OW(t.key):null}function OW(e){return qU?[...qU.querySelectorAll(`button[data-pr-key]`)].find(t=>t.dataset.prKey===e)??null:null}function kW(){let e=PU(YU?.prs??[],Hn),t=LU(XU,e);if(XU=e,MW(t),vW(),!qU)return;let n=uU(e);ZU=IU(n,ZU);let r=document.activeElement instanceof HTMLElement&&qU.contains(document.activeElement)?document.activeElement.dataset.prKey:null,i=FU(bW()),a=n.filter(e=>e.rows.length>0).map(e=>{let t=M(`section`,`pr-queue-section`);t.append(M(`h3`,`pr-section-heading`,`${e.title} ${e.rows.length}`));for(let{pr:n,parentKey:r,depth:a}of e.rows){let e=M(`button`,`pr-queue-row`);e.type=`button`,e.dataset.prKey=n.key,r&&(e.style.paddingInlineStart=`${12+Math.min(a,6)*16}px`),e.setAttribute(`aria-current`,String(n.key===ZU)),e.title=`${n.key}: ${dU(n.stage)}`;let o=M(`span`,`pr-queue-glyph`);o.append(zg(pU(n.stage),fU(n.stage)));let s=M(`span`,`pr-queue-top`);s.append(M(`strong`,`pr-queue-ref`,n.key),M(`span`,`pr-queue-title`,n.title));let c=M(`span`,`pr-queue-bottom`);r&&c.append(M(`span`,`my-pr-stage`,`Stacked on ${r}`));let l=n.state===`MERGED`?n.mergedAt:null,u=l?`merged ${xf(Date.parse(l))}`:`opened ${xf(Date.parse(n.createdAt))}`;c.append(gW(n,{hasGlyph:!1}),M(`span`,`pr-queue-elapsed`,u));let d=KH(n,aW.isFeatureEnabled(YU),xf(n.keepMergeableAttempt?.at));if(d){let e=M(`span`,`my-pr-stage`,d.text);e.dataset.tone=d.tone,e.title=d.title,c.append(e)}e.append(o,s,c),e.addEventListener(`click`,()=>{ZU=n.key;for(let e of qU?.querySelectorAll(`button[data-pr-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.prKey===ZU));yW(n),document.documentElement.dataset.layout===`phone`&&JU?.scrollIntoView({block:`start`,behavior:`smooth`})});let f=M(`div`,`my-pr-row-group`);f.append(e),t.append(f);let p=CW(i.get(In(n)));p&&(r&&(p.style.paddingInlineStart=`${36+Math.min(a,6)*16}px`),f.append(p))}return t});if(a.length===0&&qU.replaceChildren(M(`p`,`pr-empty`,MU(YU))),a.length>0){let e=NU(YU,Date.now()).filter(e=>e.tone!==`error`).map(e=>M(`p`,e.tone===`error`?`my-pr-error`:`my-pr-note`,e.text));qU.replaceChildren(...e,...a)}QU&&(qU.prepend(QU.notice),QU.update(YU)),r&&OW(r)?.focus({preventScroll:!0}),yW(e.find(e=>e.key===ZU))}function AW(e,t,n){return iW=n?.openTerminal??null,GU||(KU=t,GU=M(`div`,`pr-content`),e.append(GU),QU=dW(`my-prs`,GU),kW(),GU)}function jW(e){let t=sU(e);t&&(YU=t,kW())}function MW(e){let t=e.filter(e=>!eW.has(e.key));if(t.length!==0){for(let e of t)eW.add(e.key);RH(zU(t))}}function NW(e){if(!e){for(let[e,t]of tW)window.clearTimeout(t.timer),$U.set(e,{head:t.head,phase:`failed`,text:uW});tW.size!==0&&(tW.clear(),kW())}}function PW(e){let t=WU(e);if(!t)return;let n=tW.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),tW.delete(t.key),!t.ok){fW(t.key,n.head,`failed`,t.error||`The merge failed.`);return}if(fW(t.key,n.head,t.kind??`unconfirmed`,``),t.kind!==`merged`)return;let r=PU(YU?.prs??[],Hn).find(e=>e.key===t.key);r&&MW([r])}Un(TW);var FW=ue.options.join(`|`),IW=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${FW})\*\*`;function LW(e){return[...e.matchAll(new RegExp(IW,`g`))].flatMap(e=>{let t=ue.safeParse(e[2]);return t.success?[t.data]:[]})}function RW(e){let t=new RegExp(String.raw`^${IW}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=ue.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function zW(e){let t=e.trimStart();return t.startsWith(`> [!NOTE]
|
|
139
|
-
> Automated review. Not written by a human.`)?t.slice(53).trim():e.trim()}function BW(e,t){if(!e)return null;let n=e=>{let n=t(e.key);return n?{...e,checksState:n.rollupState,reviewDecision:xe(n.reviewDecision,n.opinionatedWriterReviewStates),isDraft:n.isDraft,liveHead:n.headRefOid,prStage:WH(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 VW={"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 HW(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 UW={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`}},WW={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 GW(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?WW[t.state]:null;if(!t)return UW[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?UW[e.postedEvent]:WW[t.state]}var KW={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function qW(e){let{reason:t}=HW(e),n=KW[t];return n?{text:VW[t],icon:n}:null}function JW(e){return qW(e)?.text??null}var YW={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`},handReview:{tone:`warn`,icon:`fork`,meaning:`From a fork`}};function XW(e,t){let n=JW(t);return n?`${e}, ${n}`:e}function ZW(e){if(Se(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===EG(e))}var QW={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function $W(e,t){if(e.prStage)return{tone:fU(e.prStage),icon:pU(e.prStage),meaning:dU(e.prStage)};let n=YW[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:XW(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:XW(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=ZW(e)?GW(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=GW(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=qW(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&nG(e)?QW:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function eG(e){let t=e.viewerThreads;return t!==void 0&&t.total>0&&t.resolved===t.total}function tG(e){return e.status===`posted`&&nG(e)}function nG(e){if(!eG(e)||Se(e))return!1;let t=EG(e);return!(e.githubReviews??[]).some(e=>e.isViewer&&e.state===`APPROVED`&&e.commit===t)}function rG(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 iG(e){return`${e} ${e===1?`comment`:`comments`}`}function aG(e,t,n){let r=[`${rK(e.repo,e.number)}: ${e.title}`],i=`reviewedHead`in e?e.assessment?.goal.trim():``;if(i&&r.push(i),r.push($W(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(`
|
|
140
|
-
`);let a=rG(e.viewerThreads);a&&r.push(a);let o=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${vG(e.verdict)}, ${iG(o)}`);let s=PG(e);s&&r.push(`You ${bG[s.state]} at ${se(s.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(CK(e));let c=RG(e,{isViewerShown:t!==`posted`});for(let[e,t]of c.entries())r.push(LG(t.text,n.githubReviews?.[e]??null));return r.join(`
|
|
141
|
-
`)}function oG(e){if(e.ready.length+e.attention.length+e.handReview.length>0)return null;let t=e.inReview.length+e.queued.length;return t===0?`Nothing needs you right now.`:`Nothing needs you right now. ${t} ${t===1?`review is`:`reviews are`} still running.`}function sG(e,t){if([...e.ready,...e.attention].filter(e=>e.key!==t).length>0)return{title:`New pull requests need you`,detail:`Pick one from the queue.`};let n=e.handReview.length;return n>0?{title:`Drafts all handled`,detail:`${n} ${n===1?`pull request needs`:`pull requests need`} review by hand.`}:{title:`All caught up`,detail:oG({...e,ready:[],attention:[]})??``}}function cG(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}function lG({action:e,pullRequest:t,warning:n,isActedSelected:r}){let i=PK(e),a=`${t}: ${cG(i)}`;return n.trim()?{statusText:i,shouldAdvance:!1,notice:{text:`${a} ${cG(n)}`,tone:`error`}}:{statusText:i,shouldAdvance:r,notice:null}}function uG(e){let t=[...e.ready,...e.noReviewNeeded,...e.inReview,...e.queued,...e.handReview,...e.attention,...e.posted,...e.discarded];return new Set(t.map(e=>e.repo)).size>1}function dG(e,t,n){return n?rK(e,t):`#${t}`}var fG={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},pG={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},mG=`lanes-team-review`,hG=`team-review-enabled`,gG=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),_G={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function vG(e){return _G[e]}var yG=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),bG=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),xG=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),SG=Object.freeze({approve:`Approved on GitHub`,"approve-only":`Approved on GitHub`,comment:`Comment posted on GitHub`,discard:`Marked not mine. Not reviewed again until queued.`,requeue:`Queued. The review starts as soon as a slot is free.`,"resolve-thread":`Thread resolved on GitHub`}),CG=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 wG(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=>DG(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[HW(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(DG(r).length>0||tG(r)){n.actionable.push(r);continue}let e=(r.status===`ready`||r.status===`stale`||r.status===`error`)&&!MG(r);e&&t.noReviewNeeded.push(r),r.status===`ready`&&!e&&n[HW(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 TG(e,t){return e.commit===t?e.isViewer||ge.has(e.state):!1}function EG(e){return e.liveHead??e.reviewedHead}function DG(e){return(e.threads??[]).filter(e=>!e.isNit&&!e.isResolved)}function OG(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 kG(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=OG(t,EG(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 AG=40;function jG(e,t){return e.split(`
|
|
142
|
-
`).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/AG)),0)>t}function MG(e){return DG(e).length>0?!0:Se(e)?!1:nG(e)?!0:!(e.githubReviews??[]).some(t=>TG(t,EG(e)))}function NG(e,t){let n=bG[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function PG(e){if(Se(e))return null;let t=(e.githubReviews??[]).filter(e=>e.isViewer&&ge.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!t?.commit||t.commit===EG(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 FG(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 ${se(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${i}, so this review covers what changed after ${r}.`:`${i}.`}function IG(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function LG(e,t){return t?`${e}, ${t}`:e}function RG(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:IG(t.state),text:NG(t,EG(e)),submittedAt:t.submittedAt}))}function zG(e){return e.ready.length+e.noReviewNeeded.length+e.inReview.length+e.queued.length+e.handReview.length+e.attention.length+e.posted.length+e.discarded.length>0}function BG(e){return[...e.ready,...e.attention].map(e=>e.key)}function VG({capturedOrder:e,actedKey:t,groups:n}){let r=BG(n).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 HG(e,t,n=!1){if(n&&t===null)return null;let r=[...e.ready,...e.inReview,...e.queued,...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded];return t&&r.some(e=>e.key===t)?t:r[0]?.key??null}function UG(e){return fG[e]}function WG(e){return pG[e]}function GG(e){let t=LW(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function KG(e){let t=GG(e);return ue.options.find(e=>t.includes(e))??null}function qG(e){return KG(e)!==`LOW`}var JG=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(`.`)),YG=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function XG(e){let t=YG.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:JG.has(n.slice(r+1).toLowerCase())}var ZG=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function QG(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:XG(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function $G(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:QG(e.slice(t?.[0].length??0))}})}function eK(e){let t=zW(e),n=RW(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(ZG)){let t=e.index??0;i.push(...$G(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(...$G(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function tK(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 nK(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 rK(e,t){return`${e}#${t}`}function iK(e){return e===`full`?`full`:`light`}function aK(e){return e.priorReviewedHead?`${iK(e.tier)} review of changes since ${se(e.priorReviewedHead)}`:`${iK(e.tier)} review`}function oK(e){return e.reasons.join(`, `)}function sK(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}function cK(e){if(!e)return`No coverage notes`;let t=e.checked.length,n=e.gaps.length,r=[];return t>0&&r.push(`${t} ${t===1?`check`:`checks`}`),n>0&&r.push(`${n} not covered`),r.join(`, `)||`No coverage notes`}function lK(e){return e?{label:`Coverage`,preview:cK(e)}:{label:`Review audit`,preview:``}}var uK=`This review ran before plain summaries existed, so only its verdict and findings remain. The audit log shows what it checked. Queue review to get a plain summary.`,dK=new Set([`error`,`stale`,`discarded`,`posted`]);function fK(e){return dK.has(e)}function pK(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function mK(e){let t=pK(e);return t?`Reviewed at ${se(e.reviewedHead)}. The pull request is now at ${se(t)}.`:null}function hK(e){let t=pK(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function gK(e){let t=[`at ${se(e.head)}`,iG(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function _K(e){let t=vK(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function vK(e){return gG[e]??String(e).toLowerCase()}function yK(e){return yG[e]??`dim`}function bK(e){return xG[e]??e}function xK(e,t){return`${Vl(t-e.startedAt)} elapsed`}function SK(e,t){let n=[xK(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${Vl(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function CK(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; Queue 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; Queue review starts it now.`:e.status===`discarded`?`Marked not mine. Not reviewed again until queued.`:e.error||e.summary||`The review failed.`}function wK(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function TK(e){return wK(e.path,e)}function EK(e){return wK(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function DK(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function OK(e){return{key:e,action:`discard`,body:``,comments:[]}}function kK(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}))}}var AK=Object.freeze({approve:`Approve and comment`,"approve-only":`Approve`,comment:`Comment`,discard:`Not mine`,requeue:`Queue review`,"resolve-thread":`Resolve`});function jK(e){return AK[e]}function MK(e){return e.status===`ready`?{footer:[`comment`,`approve-only`,`approve`],more:[`requeue`,`discard`]}:je(e)?{footer:[`approve-only`],more:[`requeue`]}:e.status===`error`||e.status===`stale`?{footer:[`requeue`],more:[`discard`]}:fK(e.status)?{footer:[`requeue`],more:[]}:{footer:[],more:[]}}function NK(e){return CG[e]}function PK(e){return SG[e]}function FK(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 IK(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 LK(e){return e?.configured&&e.reason||null}function RK(e){return vl(wG(e).ready.map(e=>`${e.key}@${e.reviewedHead}`))}function zK(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${RG(e).map(e=>e.text).join(`, `)}`}function BK(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])}function VK(e,t){return!e||e.error!==t.error||e.nextAttemptAt!==t.nextAttemptAt||JSON.stringify(e.retry)!==JSON.stringify(t.retry)||e.isRefreshing!==t.isRefreshing||e.refreshNotice!==t.refreshNotice||JSON.stringify(e.team)!==JSON.stringify(t.team)||e.configured!==t.configured||e.reason!==t.reason||e.inFlight.map(e=>e.key).join(`
|
|
143
|
-
`)!==t.inFlight.map(e=>e.key).join(`
|
|
144
|
-
`)||JSON.stringify(e.handReview)!==JSON.stringify(t.handReview)||JSON.stringify(e.queued)!==JSON.stringify(t.queued)?!1:JSON.stringify(e.drafts)===JSON.stringify(t.drafts)}var HK=12e4,UK=`The server did not answer within ${HK/1e3} s. Check GitHub before trying again.`,WK=`${G} Check GitHub before trying again.`,GK=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,KK=`GitHub review`,qK=null,JK=null,YK=null,XK=null,ZK=null,QK=null,$K=null,eq=null,tq=null,nq=null,rq=null,iq=null,aq=null,oq=null,sq=null,cq=null,lq=null,uq=new Map,dq=Cf(()=>YK),fq=Cf(()=>YK),pq=Cf(()=>YK),mq=new WeakMap,hq=new Map,gq=new Map,_q=new Map,vq=bl({getAck:mc,setAck:hc,signature:()=>RK(JK),isLooking:()=>!yr(YK)});function yq(e){let t=UG(e),n=M(`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=Ag(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(kg(`path`,{d:GK,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=Ag(9,11),i=e<t.filledCount;r.append(kg(`path`,{d:GK,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function bq({verdict:e}){let t=M(`span`,`pr-verdict-seal`);t.dataset.tone=yK(e);let n=Ag(20,20),r=WG(e);return n.append(kg(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(kg(`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(kg(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(kg(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(kg(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,M(`span`,null,_K(e))),t}function xq(){let e=Ag(16,16);return e.append(kg(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(kg(`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(kg(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function Sq(e){return fr(`pr-link`,rK(e.repo,e.number),e.url)}function Cq(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function wq(e,t){let n=Cq(t);if(n===null)return null;let r=M(`span`,null,`${e}${e?` `:``}${xf(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function Tq(e){let t=mq.get(e);t&&(e.title=t(),e.setAttribute(`aria-label`,e.title))}function Eq(){pq.reset(),Dq(YK)}Fm(Eq);function Dq(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))mq.has(t)&&(Tq(t),pq.onTick(()=>Tq(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=JK?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?PG(e):null;if(!n)continue;let r=()=>{t.textContent=FG(n,kq(n.submittedAt))};r(),pq.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:xf(n),i=Nm()?LG(KK,r):LG(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),pq.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??``;pq.track(t,e,()=>`${n}${n?` `:``}${xf(e)}`)}}}function Oq(e,t,n,r=!0){let i=RG(e,{isViewerShown:r});if(i.length===0)return null;let a=M(`span`,t),o=ur(i.map(e=>({login:e.login,tone:e.tone,title:LG(Nm()?KK:e.text,kq(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=Cq(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(o),a}function kq(e){let t=Cq(e);return t===null?null:xf(t)}function Aq(e,t,n){let r=M(`span`,n);return r.append(lr({login:e,cssPx:t}),M(`span`,`pr-author-login`,e)),r}function jq(e,t){return`${rK(e.repo,e.number)}\n${$W(e,t).meaning}`}function Mq(e,t,n){let r=M(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key,r.setAttribute(`aria-current`,String(e.key===nq));let i=`reviewedHead`in e?PG(e):null;mq.set(r,()=>Nm()?jq(e,t):aG(e,t,{opened:kq(e.prCreatedAt),reviewed:`reviewedHead`in e?kq(e.reviewedAt):null,posted:`reviewedHead`in e?kq(e.postedAt):null,viewerApproval:kq(i?.submittedAt),githubReviews:`reviewedHead`in e?RG(e,{isViewerShown:t!==`posted`}).map(e=>kq(e.submittedAt)):[]})),Tq(r);let a=Lq(e,n);if(t===`inReview`){let t=e,n=M(`span`,`pr-queue-elapsed`);dq.track(n,t.startedAt,()=>xK(t,Date.now())),a.append(n)}if(t===`queued`){let t=wq(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=wq(``,t.reviewedAt)??wq(``,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),Nq(r,e.key),r;r.classList.remove(`pr-queue-row-quiet`);let o=$W(e,t),s=M(`span`,`pr-queue-glyph`);s.append(zg(o.icon,o.tone));let c=M(`span`,`pr-queue-bottom`);if(c.append(Iq(o),Aq(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=M(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(M(`span`,`pr-phase-label`,bK(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:Oq(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),Nq(r,e.key),r}function Nq(e,t){e.addEventListener(`click`,()=>{nq=t,rq=null,Bq(null);for(let e of QK?.querySelectorAll(`button[data-review-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.reviewKey===nq));DJ(wG(JK)),pq.reset(),Dq(YK),document.documentElement.dataset.layout===`phone`&&eq?.scrollIntoView({block:`start`,behavior:`smooth`})})}function Pq(e){let t=Object.values(wG(JK)).flat().find(t=>In(t)===e.toLowerCase());return t?Fq(t.key):null}function Fq(e){return QK?[...QK.querySelectorAll(`button[data-review-key]`)].find(t=>t.dataset.reviewKey===e)??null:null}function Iq(e){let t=M(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function Lq(e,t){let n=M(`span`,`pr-queue-top`);return n.append(M(`strong`,`pr-queue-ref`,dG(e.repo,e.number,t)),M(`strong`,`pr-queue-ref-compact`,dG(e.repo,e.number,!1)),M(`span`,`pr-queue-title`,e.title)),n}function Rq(e,t){let n=M(`section`,`pr-queue-section`);n.append(M(`h3`,`pr-section-heading`,`Review by hand ${e.length}`));for(let r of e){let e=fr(`pr-queue-row`,``,r.url);mq.set(e,()=>Nm()?jq(r,`handReview`):aG(r,`handReview`,{opened:kq(r.prCreatedAt)})),Tq(e);let i=$W(r,`handReview`),a=M(`span`,`pr-queue-glyph`);a.append(zg(i.icon,i.tone));let o=M(`span`,`pr-queue-bottom`);o.append(Iq(i),Aq(r.author,16,`pr-queue-author`)),e.append(a,Lq(r,t),o),n.append(e)}return n}function zq({title:e,detail:t}){let n=M(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=M(`strong`,`pr-caught-up-title`);return r.append(zg(`ready`,`ok`),M(`span`,null,e)),n.append(r,M(`p`,`pr-caught-up-detail`,t)),n}function Bq(e){iq=e,aq&&(aq.hidden=e===null,aq.textContent=e?.text??``,e&&(aq.dataset.tone=e.tone))}function Vq(e,t,n,r){let i=M(`section`,`pr-queue-section`);i.append(M(`h3`,`pr-section-heading`,`${e} ${t.length}`));for(let e of t)i.append(Mq(e,n,r));return i}var Hq=`Open in session`,Uq=`Preparing the branch and session.`;function Wq(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;r.textContent=t,n&&(r.dataset.tone=n),n||delete r.dataset.tone;let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function Gq(e,t){let n=uq.get(e);n&&window.clearTimeout(n.timer),uq.set(e,{requestId:null,timer:0,text:t,tone:`error`}),Wq(e,t,`error`)}function Kq(e,t,n){if(uq.get(e)?.requestId)return;let r=id(`open-team-review-session`);if(!K({type:`open-team-review-session`,requestId:r,key:e})){n.dataset.tone=`error`,n.textContent=G;return}let i=window.setTimeout(()=>Gq(e,`The server did not answer within ${HK/1e3} s.`),HK);uq.set(e,{requestId:r,timer:i,text:Uq,tone:`busy`}),t.disabled=!0,n.dataset.tone=`busy`,n.textContent=Uq}function qq(e){let t=M(`div`,`pr-session-open`),n=M(`button`,`pr-action pr-session-open-button`,Hq);n.type=`button`;let r=uq.get(e.key);n.disabled=!!r?.requestId;let i=M(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&(i.dataset.tone=r.tone),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>Kq(e.key,n,i)),t.append(n,i),t}function Jq(e){let t=M(`div`,`pr-detail-heading`);t.dataset.signature=BK(e);let n=M(`div`,`pr-detail-title`);n.append(Sq(e),M(`h2`,null,e.title));let r=M(`div`,`pr-detail-meta`);r.append(Aq(e.author,20,`pr-detail-author`));let i=M(`span`,null,aK(e));i.title=oK(e),r.append(i);let a=wq(`Opened`,e.prCreatedAt);if(a&&r.append(a),`reviewedHead`in e){let t=wq(`Reviewed`,e.reviewedAt);t&&r.append(t);let n=wq(`Posted`,e.postedAt);n&&r.append(n)}let o=`reviewedHead`in e?Oq(e,`pr-detail-github`,20):null;if(o&&r.append(o),t.append(n,r,qq(e)),`reviewedHead`in e){let n=rG(e.viewerThreads);if(n){let r=M(`p`,`pr-viewer-threads`,n);eG(e)&&(r.dataset.state=`all-resolved`),t.append(r)}}let s=`reviewedHead`in e?PG(e):null;if(s){let n=M(`p`,`pr-rereview-notice`,FG(s,kq(s.submittedAt)));n.dataset.reviewKey=e.key,t.append(n)}return t}function Yq(e,t){let n=e.querySelector(`:scope > .pr-detail-heading`);if(!n||n.dataset.signature===BK(t))return e;let r=Jq(t),i=n.querySelector(`:scope > .pr-detail-title > .pr-detail-more`);return i&&r.querySelector(`:scope > .pr-detail-title`)?.append(i),n.replaceWith(r),e}function Xq(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function Zq(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(M(`code`,null,n.text));continue}let t=M(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function Qq(e,t){return Zq(e,QG(t))}function $q(e,t,n){let r=M(`div`,`pr-assessment-part`);return n&&(r.dataset.tone=n),r.append(M(`h4`,`pr-assessment-title`,e),t),r}function eJ(e){let t=M(`ul`,`pr-assessment-list`);for(let n of e)t.append(Qq(M(`li`,null),n));return t}function tJ(e){let t=sK(e.assessment);if(t.length===0)return[];let n=M(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(M(`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(Qq(M(`p`,t),e.text))}return[n]}function nJ(e){let t=M(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=M(`div`,`pr-verdict-line`);return n.append(bq(e)),t.append(n),e.assessment?(t.append(Qq(M(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t):(t.append(M(`p`,`pr-verdict-legacy`,uK)),t)}function rJ(e){let t=M(`details`,`pr-disclosure pr-coverage`),n=M(`summary`,`pr-disclosure-summary`),r=lK(e.assessment);n.append(M(`span`,`pr-disclosure-label`,r.label),M(`span`,`pr-disclosure-preview`,r.preview)),t.append(n);let{assessment:i}=e;return i?(i.checked.length>0&&t.append($q(`What the review checked`,eJ(i.checked))),i.gaps.length>0&&t.append($q(`Not covered`,eJ(i.gaps),`warning`)),t):(t.append(Qq(M(`p`,`pr-verdict-summary`),e.summary)),t)}function iJ(e){if(e.kind===`code`){let t=M(`pre`,`pr-comment-code`),n=M(`code`,null);return n.textContent=e.code,t.append(n),t}let t=M(`p`,`pr-comment-paragraph`);if(e.lead){let n=M(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(xq()),n.append(e.lead),t.append(n,` `)}return Zq(t,e.segments)}function aJ(e){let t=M(`details`,`pr-comment-content`),n=M(`summary`,`pr-comment-header`),r=eK(e.body),i=KG(e);i&&n.append(yq(i));let a=M(`span`,`pr-comment-location`,EK(e));a.title=TK(e),n.append(a),n.append(M(`span`,`pr-comment-preview`,tK(r.paragraphs))),t.append(n);let o=M(`div`,`pr-comment-paragraphs`);for(let e of r.paragraphs)o.append(iJ(e));return t.append(o),t.open=i===`HIGH`||i===`CRITICAL`,t}function oJ(e,t){let n=M(`details`,`pr-disclosure pr-earlier-review`),r=M(`summary`,`pr-disclosure-summary`);r.append(M(`span`,`pr-disclosure-label`,`Earlier review`),M(`span`,`pr-disclosure-preview`,gK(e)));let i=M(`div`,`pr-earlier-review-body`),a=M(`div`,`pr-verdict-line`);a.append(bq(e)),i.append(a),e.summary.trim()&&i.append(Qq(M(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=M(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(aJ(t)),i.append(e)}return n.append(r,i),n.open=t,n}function sJ(e){let t=mK(e);if(!t)return[];let n=M(`p`,`pr-changed-since`,t);return n.append(` `,fr(`pr-changed-since-link`,`Compare changes`,hK(e),`Open the commits since this review on GitHub`)),[n]}function cJ(e){let t=JK?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return sq=null,[];if(sq?.key===e.key&&sq.head===t.head)return[sq.element];let n=oJ(t,!1);return sq={key:e.key,head:t.head,element:n},[n]}function lJ(e,t,n,r){let i=M(`article`,`pr-comment-card`),a=M(`input`,`pr-comment-checkbox`);return a.type=`checkbox`,a.checked=n.has(t),a.setAttribute(`aria-label`,`Include comment on ${TK(e)}`),a.addEventListener(`change`,()=>{a.checked&&n.add(t),a.checked||n.delete(t),i.dataset.included=String(a.checked),r()}),i.dataset.included=String(a.checked),i.append(a,aJ(e)),i}var uJ=`More review actions`,dJ=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function fJ(e,t,n,r){let i=BG(wG(JK));Bq(null);let a=id(`team-review-action`);if(!K({type:`team-review-action`,requestId:a,...n}))return!1;let o=window.setTimeout(()=>{_q.delete(t.key),r(!1,UK)},HK);return _q.set(t.key,{requestId:a,action:n.action,origin:e,capturedOrder:i,pullRequest:rK(t.repo,t.number),timer:o,settle:r}),!0}function pJ(e){let t=M(`footer`,`pr-footer`),n=gJ(`discard`,()=>{_q.has(e.key)||(n.disabled=!0,i.dataset.tone=`busy`,i.textContent=NK(`discard`),!fJ(`other`,e,OK(e.key),a)&&a(!1,G))}),r=_q.has(e.key);n.disabled=r;let i=M(`span`,`pr-action-status`,r?NK(`discard`):``);i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(t,r)=>{n.disabled=t,i.dataset.tone=t?`ok`:`error`,i.textContent=r,t||Bq({text:`${rK(e.repo,e.number)}: ${r}`,tone:`error`})};return t.append(n,i),t}var mJ=0;function hJ(e,t){let n=M(`div`,`pr-detail-more`),r=M(`button`,`review-icon-button review-more-button`);r.type=`button`,r.title=uJ,r.setAttribute(`aria-label`,uJ),r.setAttribute(`aria-haspopup`,`menu`),r.setAttribute(`aria-expanded`,`false`),r.append(Fg(Pg)),mJ+=1;let i=M(`div`,`review-more-menu`);i.id=`pr-more-menu-${mJ}`,i.setAttribute(`role`,`menu`),i.setAttribute(`aria-label`,uJ),i.hidden=!0,r.setAttribute(`aria-controls`,i.id);let a=e=>{e.key===`Escape`&&(e.preventDefault(),s(),r.focus())},o=e=>{e.target instanceof Node&&n.contains(e.target)||s()};function s(){i.hidden=!0,r.setAttribute(`aria-expanded`,`false`),document.removeEventListener(`keydown`,a),document.removeEventListener(`pointerdown`,o)}let c=()=>{i.hidden=!1,r.setAttribute(`aria-expanded`,`true`),document.addEventListener(`keydown`,a),document.addEventListener(`pointerdown`,o),i.querySelector(`button:not(:disabled)`)?.focus()};r.addEventListener(`click`,()=>{i.hidden?c():s()});let l=[r];for(let n of e){let e=M(`button`,`review-btn`,jK(n));e.type=`button`,e.dataset.action=n,e.setAttribute(`role`,`menuitem`),e.addEventListener(`click`,()=>{s(),t(n)}),l.push(e),i.append(e)}return n.append(r,i),{element:n,controls:l}}function gJ(e,t){let n=M(`button`,`pr-action`,jK(e));return n.type=`button`,n.dataset.action=e,n.addEventListener(`click`,()=>t(e)),n}function _J(e,t){e.querySelector(`:scope > .pr-detail-heading > .pr-detail-title`)?.append(t)}function vJ(e){let t=M(`article`,`pr-detail`),n=M(`div`);n.dataset.reviewThreads=``,t.append(Jq(e),...tJ(e),n,nJ(e)),SJ(t,e);let r=M(`section`,`pr-posts`);r.setAttribute(`aria-label`,`Inline comments`);let i=M(`div`,`pr-posts-heading`);i.append(M(`h3`,null,`Inline comments`),M(`span`,null,String(e.comments.length))),r.append(i);let a=M(`details`,`pr-disclosure`),o=M(`summary`,`pr-disclosure-summary`),s=M(`span`,`pr-disclosure-preview`);o.append(M(`span`,`pr-disclosure-label`,`Review body`),s),a.append(o);let c=M(`textarea`,`pr-body-input`);c.setAttribute(`aria-label`,`Review body`),c.value=e.body,c.rows=Math.min(10,Math.max(3,e.body.split(`
|
|
145
|
-
`).length+1)),c.spellcheck=!0;let l=()=>{s.textContent=zW(c.value).split(/\r?\n/).map(e=>e.trim()).find(Boolean)||`No review body`};c.addEventListener(`input`,l),l(),a.append(c);let u=M(`details`,`pr-disclosure`);u.append(M(`summary`,`pr-disclosure-summary`,`Add a note`));let d=M(`textarea`,`pr-body-input pr-note-input`);d.setAttribute(`aria-label`,`Your note`),d.rows=2,d.spellcheck=!0,d.placeholder=`Posts above the automated-review note`,u.append(d);let f=new Set(e.comments.flatMap((e,t)=>qG(e)?[t]:[])),p=M(`footer`,`pr-footer`),m=M(`span`,`pr-action-status`);m.setAttribute(`role`,`status`),m.setAttribute(`aria-live`,`polite`);let h=()=>{_q.has(e.key)||m.dataset.tone===`ok`||(m.textContent=``,delete m.dataset.tone)};for(let[t,n]of e.comments.entries())r.append(lJ(n,t,f,h));t.append(r,a,u,rJ(e)),e.earlierReview&&t.append(oJ(e.earlierReview,!1));let g=[],_=e=>{for(let t of g)t.disabled=e;t.dataset.busy=String(e)},v=(e,t)=>{_(e),m.dataset.tone=e?`ok`:`error`,m.textContent=t},y=t=>{if(_q.has(e.key))return;_(!0),m.dataset.tone=`busy`,m.textContent=NK(t);let n=e.comments.filter((e,t)=>f.has(t));fJ(`ready`,e,kK(e,t,DK(d.value,c.value),n),v)||v(!1,G)},b=MK(e),x=b.footer.map(e=>gJ(e,y)),S=hJ(b.more,y);return g.push(...x,...S.controls),_J(t,S.element),p.append(...x,m),t.append(p),{signature:zK(e),element:t,settle:v}}function yJ(e){let t=hq.get(e.key);if(t&&(_q.has(e.key)||t.signature===zK(e)))return SJ(t.element,e),Yq(t.element,e);let n=vJ(e);return hq.set(e.key,n),n.element}function bJ(e,t){let n=M(`article`,`pr-detail`),r=M(`div`,`pr-detail-heading`),i=M(`div`,`pr-detail-title`);i.append(Sq(e),M(`h2`,null,e.title));let a=M(`div`,`pr-detail-meta`);a.append(Aq(e.author,20,`pr-detail-author`));let o=wq(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,qq(e)),n.append(r,M(`p`,`pr-attention-detail`,FK(t)),pJ(e)),n}function xJ(e){let t=M(`article`,`pr-detail`);t.append(Jq(e));let n=M(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=M(`ol`,`pr-progress-tracker`);for(let t of nK(e.phase)){let e=M(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(M(`span`,`pr-progress-bar`),M(`span`,null,t.label)),r.append(e)}let i=M(`div`,`pr-progress-text`);fq.track(i,e.startedAt,()=>SK(e,Date.now())),n.append(r,i),t.append(n);let a=M(`section`,`pr-steps`);a.append(M(`h3`,null,`Latest agent steps`));let o=M(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=M(`li`,`pr-step`),r=M(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(M(`span`,`pr-step-at`,Hl(e.startedAt,t.at)),M(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...cJ(e),pJ(e)),t}function SJ(e,t){if(_q.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(...wJ(t)),n.dataset.reviewThreads=r)}function CJ(e,t,n,r){let i=M(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(M(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!jG(e,t?3:8))return i;let a=M(`details`,`pr-thread-disclosure`);return a.append(M(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),M(`p`,`pr-thread-body`,e)),n&&a.append(fr(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function wJ(e){let t=kG(e);if(t.length===0)return[];let n=M(`section`,`my-pr-threads-section`);n.append(M(`h3`,`pr-section-heading`,`Answered threads`));let r=M(`div`,`my-pr-threads`);for(let n of t){let t=M(`div`,`my-pr-thread pr-thread-card`),i=M(`div`,`my-pr-thread-heading pr-thread-heading`),a=M(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(fr(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(M(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(M(`div`,`my-pr-thread-meta`,`Your comment`),CJ(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let o=M(`div`,`pr-detail-meta pr-thread-reply-meta`);o.append(M(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let s=wq(``,n.thread.lastReplyAt);s&&o.append(s);let c=M(`span`,`pr-action-status`);c.setAttribute(`role`,`status`);let l=M(`button`,`pr-action`,`Resolve`);l.type=`button`,l.disabled=!n.canResolve||_q.has(e.key);let u=(e,t)=>{l.disabled=e||!n.canResolve,c.textContent=t,c.dataset.tone=e?`ok`:`error`};l.addEventListener(`click`,()=>{_q.has(e.key)||(l.disabled=!0,c.textContent=NK(`resolve-thread`),!fJ(`other`,e,kK(e,`resolve-thread`,``,[],n.thread.id),u)&&u(!1,G))}),t.append(o),n.thread.lastReplyBody&&t.append(CJ(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let d=M(`footer`,`pr-thread-footer`);d.append(c,l),t.append(d),n.thread.resolveError&&t.append(M(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function TJ(e){let t=M(`article`,`pr-detail`);if(t.append(Jq(e),...tJ(e),...wJ(e)),e.status===`posted`&&t.append(nJ(e),rJ(e)),e.status!==`posted`&&t.append(M(`p`,`pr-attention-detail`,CK(e))),e.status===`stale`&&t.append(...sJ(e)),e.earlierReview&&t.append(oJ(e.earlierReview,e.status===`stale`)),!fK(e.status))return gq.set(e.key,{signature:Xq(e),element:t,settle:()=>{}}),t;let n=M(`footer`,`pr-footer`),r=MK(e),i=M(`span`,`pr-action-status`,r.footer.includes(`approve-only`)?dJ:``);i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=[],o=(e,t)=>{for(let t of a)t.disabled=e;i.dataset.tone=e?`ok`:`error`,i.textContent=t},s=t=>{if(!_q.has(e.key)){for(let e of a)e.disabled=!0;i.dataset.tone=`busy`,i.textContent=NK(t),!fJ(`other`,e,kK(e,t,``,[]),o)&&o(!1,G)}},c=r.footer.map(e=>gJ(e,s));if(a.push(...c),r.more.length>0){let e=hJ(r.more,s);a.push(...e.controls),_J(t,e.element)}return n.append(...c,i),t.append(n),gq.set(e.key,{signature:Xq(e),element:t,settle:o}),t}function EJ(e){if(!fK(e.status)&&kG(e).length===0)return TJ(e);let t=gq.get(e.key);return t&&(_q.has(e.key)||t.signature===Xq(e))?Yq(t.element,e):TJ(e)}function DJ(e){if(!eq)return;if(nq=HG(e,nq,rq!==null),!nq){if(rq!==null){let t=rq.actedKey;t&&![...e.ready,...e.attention].some(e=>e.key===t)&&(rq={actedKey:null}),eq.replaceChildren(zq(sG(e,rq.actedKey))),oq=null;return}eq.replaceChildren(),oq=null;return}let t=e.ready.find(e=>e.key===nq&&(DG(e).length>0||tG(e)));if(t&&t.status!==`ready`){let e=`threads:${Xq(t)}`,n=EJ(t);if(oq===e&&eq.firstElementChild===n)return;eq.replaceChildren(n),oq=e;return}let n=[...e.ready,...e.noReviewNeeded].find(e=>e.key===nq&&e.status===`ready`);if(n){let e=`ready:${zK(n)}`,t=yJ(n);if(oq===e)return;eq.replaceChildren(t),oq=e;return}let r=e.inReview.find(e=>e.key===nq);if(r){fq.reset(),eq.replaceChildren(xJ(r)),oq=`inReview:${r.key}`;return}let i=e.queued.find(e=>e.key===nq);if(i){let t=`queued:${i.key}:${e.inReview.length}`;if(oq===t)return;eq.replaceChildren(bJ(i,e.inReview.length)),oq=t;return}let a=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===nq);a&&(eq.replaceChildren(EJ(a)),oq=`${a.status}:${a.key}`)}function OJ(){let e=M(`p`,`pr-empty`,IK(JK));return JK&&!JK.configured&&e.append(` `,ep(mG,hG,`Open Team review settings`)),e}function kJ(){let e=LK(JK);return e?[M(`p`,`my-pr-note`,e)]:[]}function AJ(e){for(let t of[...hq.keys()])e.has(t)||_q.has(t)||hq.delete(t);let t=new Set(JK?.drafts.filter(e=>fK(e.status)).map(e=>e.key)??[]);for(let e of gq.keys())t.has(e)||_q.has(e)||gq.delete(e)}function jJ(){if(!YK||!XK||QK?.isConnected)return;let e=wB({queueLabel:`Review queue`,scopeTabs:XK,resizerLabel:`Resize review queue`});QK=e.queue,aq=M(`p`,`pr-action-status pr-action-notice`),aq.setAttribute(`role`,`status`),aq.setAttribute(`aria-live`,`polite`),eq=M(`div`,`pr-detail-body`),e.detail.append(aq,eq),Bq(iq),ZK&&e.foot.append(ZK.control),YK.replaceChildren(e.columns),oq=null,$K=null}function MJ(e){if(!e)return;e.querySelector(`.pr-team-chip`)?.remove();let t=JK?.team;if(!t)return;let n=M(`span`,`pr-team-chip`);n.append(lr({login:t.slug,url:t.avatarUrl,cssPx:16}),M(`span`,null,t.name)),e.insertBefore(n,e.querySelector(`.pr-queue-toggle`))}function NJ(){let e=document.activeElement;return!(e instanceof HTMLElement)||!QK?.contains(e)?null:e.dataset.reviewKey??null}function PJ(e){e&&Fq(e)?.focus({preventScroll:!0})}function FJ(){if(!YK)return;let e=NJ(),t=wG(JK);if(AJ(new Set([...t.ready,...t.noReviewNeeded].map(e=>e.key))),pq.reset(),!JK?.configured||!zG(t)&&rq===null){dq.reset(),fq.reset();let e=SB(XK);MJ(e),YK.replaceChildren(e,...ZK?[ZK.notice]:[],...kJ(),OJ(),CB(ZK?.control??null)),ZK?.update(JK),QK=null,$K=null,eq=null,aq=null,tq=null,oq=null;return}if(jJ(),!QK)return;MJ(YK.querySelector(`.pr-queue-head`)),nq=HG(t,nq,rq!==null);let n=uG(t),r=JSON.stringify([t,n,nq,LK(JK)]);if(r===$K){ZK?.update(JK),DJ(t),Dq(YK);return}$K=r,dq.reset();let i=[],a=oG(t);a&&i.push(zq({title:`All caught up`,detail:a})),t.ready.length&&i.push(Vq(`Ready`,t.ready,`ready`,n)),t.inReview.length&&(tq=Vq(`In review`,t.inReview,`inReview`,n),i.push(tq)),t.queued.length&&i.push(Vq(`Queued`,t.queued,`queued`,n)),t.noReviewNeeded.length&&i.push(Vq(`Already reviewed`,t.noReviewNeeded,`settled`,n)),t.handReview.length&&i.push(Rq(t.handReview,n)),t.attention.length&&i.push(Vq(`Needs attention`,t.attention,`attention`,n)),t.posted.length&&i.push(Vq(`Waiting on author`,t.posted,`posted`,n)),t.discarded.length&&i.push(Vq(`Not mine`,t.discarded,`discarded`,n)),QK.replaceChildren(...ZK?[ZK.notice]:[],...kJ(),...i),ZK?.update(JK),PJ(e),DJ(t),Dq(YK)}function IJ(){cq&&cq(vq.refresh())}function LJ(){vq.acknowledge(),IJ()}function RJ(e){cq=e,IJ()}function zJ(e,t,n){return lq=n?.openTerminal??lq,YK||(XK=t,YK=M(`div`,`pr-content`),e.append(YK),ZK=dW(`team-review`,YK),dq.ensure(),fq.ensure(),pq.ensure(),FJ(),YK)}function BJ(e){let t=He.safeParse(e);if(!t.success)return;let n=JK;qK=t.data,JK=BW(qK,Hn),!(JK&&VK(n,JK)&&VJ())&&(FJ(),IJ())}function VJ(){if(!JK||!tq?.isConnected)return!1;dq.reset(),pq.reset();let e=NJ(),t=wG(JK),n=Vq(`In review`,t.inReview,`inReview`,uG(t));return tq.replaceWith(n),tq=n,PJ(e),t.inReview.some(e=>e.key===nq)&&DJ(t),Dq(YK),!0}function HJ(e){let t=e.key;if(!t)return;let n=uq.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?Gq(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),uq.delete(t),Wq(t,``,null),lq?.(e.sessionId)))}function UJ(e){if(e)return;for(let[e,t]of uq)t.requestId&&Gq(e,G);let t=[..._q.values()];_q.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,WK)}function WJ(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=_q.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),_q.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:PK(n.action)),gq.delete(t.key),oq=null,t.ok===!0&&FJ();return}let r=(n.origin===`ready`?hq:gq).get(t.key);if(t.ok===!0){n.origin===`other`&&gq.delete(t.key);let e=lG({action:n.action,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:nq===t.key});if((r?.settle??n.settle)?.(!0,e.statusText),(e.notice||e.shouldAdvance)&&Bq(e.notice),!e.shouldAdvance)return;nq=VG({capturedOrder:n.capturedOrder,actedKey:t.key,groups:wG(JK)}),nq===null&&(rq={actedKey:t.key}),FJ()}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}Un(()=>{JK=BW(qK,Hn),FJ(),IJ()});function GJ(e,t){let n=document.createElement(`div`);n.className=`pr-scope-tabs`,n.setAttribute(`role`,`tablist`),n.setAttribute(`aria-label`,`Reviews scope`);let r=[`team`,`mine`];for(let i of r){let a=document.createElement(`button`);a.className=`pr-scope-tab`,a.type=`button`,a.setAttribute(`role`,`tab`),a.setAttribute(`aria-selected`,String(i===e)),a.tabIndex=i===e?0:-1,a.textContent=i===`team`?`Team`:`Mine`,a.addEventListener(`click`,()=>t(i,!1)),a.addEventListener(`keydown`,e=>{e.key===`ArrowLeft`?(e.preventDefault(),t(r[(r.indexOf(i)+r.length-1)%r.length],!0)):e.key===`ArrowRight`&&(e.preventDefault(),t(r[(r.indexOf(i)+1)%r.length],!0))}),n.append(a)}return n}var KJ=null;function qJ(e){return KJ?.(e)??!1}function JJ(){nc()===`team`&&LJ()}function YJ(e,t){let n=(e,t)=>{if(s(e),JJ(),!t)return;let n=(e===`team`?r:i).querySelector(`[aria-selected="true"]`);n&&n.getClientRects().length>0?n.focus():(e===`team`?a:o).querySelector(`.pr-queue-toggle`)?.focus()},r=GJ(`team`,n),i=GJ(`mine`,n),a=document.createElement(`div`);a.className=`pr-mode-root`;let o=document.createElement(`div`);o.className=`pr-mode-root`,e.append(a,o),zJ(a,r,t),AW(o,i,t);function s(e){xB(),a.hidden=e!==`team`,o.hidden=e!==`mine`,rc(e)}KJ=e=>{let n=DW(e),r=n??Pq(e);return!r||!t?.openReviews()?!1:(s(n?`mine`:`team`),r.click(),r.focus({preventScroll:!0}),r.scrollIntoView({block:`nearest`}),JJ(),!0)},s(nc())}var XJ={OPEN:0,MERGED:1,CLOSED:2};function ZJ(e){return e?XJ[e.state]:XJ.OPEN}function QJ(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:dh(void 0)};let i=fU(t.stage);return{key:n,text:r,url:t.url,hoverText:`${e.repo}: ${t.title} (${dU(t.stage)})`,look:{icon:pU(t.stage),tone:i},tier:dh(i)}}function $J(e,t){let n=e.map(e=>{let n=t(In(e));return{link:e,pr:n?WH(n):void 0}});return n.sort((e,t)=>ZJ(e.pr)-ZJ(t.pr)||t.link.linkedAt-e.link.linkedAt),n.map(({link:e,pr:t})=>QJ(e,t))}var eY=new Map;function tY(e){return document.querySelectorAll(`[data-pr-chips-for="${CSS.escape(e)}"]`)}function nY(e){return $J(eY.get(e)??[],Hn).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:()=>{qJ(e.key)||Bh(e.url)}}))}function rY(e,t){let n=Bg(e,e),r=M(`button`,`session-pr-chip-unlink`);r.append(Fg(jg)),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(),Wd({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:()=>{mv(t,{type:`unlink-session-pr`,id:t,key:e.key})}})});let i=M(`span`,`session-pr-chip-item`);return i.append(n,r),i}function iY(e,t){e.dataset.prChipsFor=t,Gg(e,nY(t),e=>rY(e,t))}function aY(e){for(let t of e){let e=t.dataset.prChipsFor;e&&iY(t,e)}Qg()}function oY(e,t){let n=et.shape.links.safeParse(t??[]);eY.set(e,n.success?n.data:[]),aY(tY(e)),EW(eY)}function sY(e){eY.delete(e),EW(eY)}Un(()=>aY(document.querySelectorAll(`[data-pr-chips-for]`)));var cY=null,lY=new Set;function uY(){cY?.setAttribute(`aria-pressed`,String(!As()))}function dY(e){js(e),uY();for(let t of lY)t(e)}function fY(e){lY.add(e)}function pY(e){cY=e,uY(),e.addEventListener(`click`,()=>dY(!As()))}var mY={mine:`Mine`,run:`Run`,cancel:`Cancel`},hY={mine:`Mining merged pull requests.`,run:`Starting the run.`,cancel:`Cancelling the run.`},gY=null,_Y=null,vY=null,yY=!0,bY=new Map,xY=new Map;function SY(e){return e===null?`n/a`:`${Math.round(e*100)}%`}function CY(e){if(e===null)return`n/a`;let t=Math.round(e*100);return t>0?`+${t}`:String(t)}function wY(e,t){vY?.({type:`benchmark-action`,requestId:id(`benchmark`),suiteId:e,action:t})===!0?(bY.set(e,t),xY.set(e,hY[t]),AY()):(xY.set(e,G),AY())}function TY(e,t,n){let r=M(`button`,`bench-action-button`,mY[t]);return r.type=`button`,r.disabled=n,r.addEventListener(`click`,()=>wY(e.id,t)),r}function EY(e){let t=_Y?.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 DY(e){let t=M(`td`,`bench-score`,SY(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 OY(e){let t=e.armIds.filter(t=>t!==e.baselineArm),n=M(`table`,`bench-table`),r=M(`tr`);r.append(M(`th`,null,`Case`),...e.armIds.map(t=>M(`th`,null,t===e.baselineArm?`${t} (baseline)`:t))),r.append(...t.map(e=>M(`th`,null,`${e} vs baseline`))),n.append(r);for(let r of e.rows){let i=M(`tr`);i.append(M(`td`,`bench-case`,r.caseId),...e.armIds.map(e=>DY(r.arms[e]))),i.append(...t.map(e=>M(`td`,`bench-delta`,CY(r.deltaVsBaseline[e]??null)))),n.append(i)}let i=[...new Set(e.armIds.flatMap(t=>Object.keys(e.totals[t]?.recallByTag??{})))].sort(),a=M(`tr`,`bench-total`);a.append(M(`td`,`bench-case`,`Paired recall`),...e.armIds.map(t=>DY(e.totals[t]))),n.append(a);for(let t of i){let r=M(`tr`,`bench-total`);r.append(M(`td`,`bench-case`,`Recall, ${t}`),...e.armIds.map(n=>M(`td`,`bench-score`,SY(e.totals[n]?.recallByTag[t]??null)))),n.append(r)}return n}function kY(e){let t=M(`div`,`bench-suite`),n=_Y?.inFlight?.suiteId===e.id,r=!!_Y?.inFlight&&!n,i=bY.has(e.id)||!yY,a=M(`div`,`bench-summary`);a.append(M(`span`,`bench-suite-title`,e.title),_r(`bench`,e.caseCount===1?`case`:`cases`,String(e.caseCount)),_r(`bench`,e.candidateCount===1?`candidate`:`candidates`,String(e.candidateCount)),_r(`bench`,`arms`,String(e.armIds.length))),t.append(a);let o=M(`div`,`bench-controls`),s=_Y?.configured===!0&&e.error===null;o.append(TY(e,`mine`,!s||i||n),TY(e,`run`,!s||i||n||r||e.caseCount===0),TY(e,`cancel`,i||!n));let c=M(`span`,`bench-status`,(yY?``:`Not connected to the server. Reconnecting.`)||EY(e)||xY.get(e.id)||``);if(c.setAttribute(`role`,`status`),o.append(c),t.append(o),e.error)return t.append(M(`p`,`bench-error`,e.error)),t;let l=e.latestReport;return l?(t.append(M(`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(OY(l)),t):(t.append(M(`p`,`bench-empty`,e.caseCount===0?`Move approved candidates into the cases folder, then choose Run.`:`No run yet.`)),t)}function AY(){if(!gY)return;gY.textContent=``;let e=gr(`bench`,`Benchmarks`,`Suites from the benchmarks folder of the Glimmervoid home, one run at a time.`);if(gY.append(e),!_Y)gY.append(M(`p`,`bench-empty`,`Waiting for the server.`));else if(!_Y.configured)gY.append(M(`p`,`bench-empty`,_Y.reason||`Benchmarks are off.`));else if(_Y.suites.length===0)gY.append(M(`p`,`bench-empty`,`No suites yet. Create a folder holding suite.json under benchmarks in the Glimmervoid home.`));else for(let e of _Y.suites)gY.append(kY(e))}function jY(e){vY=e}function MY(e){return gY||(gY=M(`div`,`bench-content`),e.append(gY),AY(),gY)}function NY(e){if(yY=e,!e){for(let e of bY.keys())xY.delete(e);bY.clear()}AY()}function PY(e){_Y=e,AY()}function FY(e){bY.delete(e.suiteId);let t=_Y?.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.`};xY.set(e.suiteId,e.ok?n[e.action]:e.error||`The server refused the action.`),AY()}function IY(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function LY(e,t){return t===`all`||e.sources.includes(t)}function RY(e){return{all:e.length,me:e.filter(e=>LY(e,`me`)).length,team:e.filter(e=>LY(e,`team`)).length,project:e.filter(e=>LY(e,`project`)).length}}function zY(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!LY(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 BY(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 VY(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function HY(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 UY(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 WY(e,t){let n=UY(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function GY(e,t){let n=ao(e.url),r=n?t(n.toLowerCase()):void 0;return r?Rr(r):e.state}var KY=45e3,qY=`The server did not answer within ${KY/1e3} s.`,JY=`Select the issue to load its description.`,YY=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],XY={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},ZY=null,QY=null,$Y=null,eX=null,tX=null,nX=null,rX=null,iX=null,aX=null,oX=null,sX=new Map,cX=!1,lX=null,uX=null,dX=new Map,fX=new Map,pX=new Map,mX=new Map,hX=new Map;function gX(e){return`${e.key}:${e.updatedAt}`}function _X(e){return e.sessionId?P.get(e.sessionId):void 0}function vX(e,t,n){let r=_X(t),i=r?.currentState??j.DORMANT,a=mr(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=M(`span`,`issues-state-icon`);Lg(c,a.icon),e.replaceChildren(c),n&&e.append(s)}function yX(e,t=!1){let n=M(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return vX(n,e,t),n}function bX(e){let t=_X(e);return t?Cr(t):`none yet`}function xX(e){return[...dX.values()].some(t=>t.issueKey===e.key)}function SX(e){let t=dX.get(e);t&&(dX.delete(e),fX.set(t.issueKey,qY),jX())}function CX(e){let t=dX.get(e);return t?(clearTimeout(t.timeoutHandle),dX.delete(e),t):null}function wX(e){let t=gX(e);if(mX.has(t)||[...pX.values()].some(e=>e.cacheKey===t))return;let n=id(`issue-detail`);hX.delete(t),uX?.({type:`issue-detail`,requestId:n,repo:e.repo,issueNumber:e.number})?pX.set(n,{cacheKey:t,timeoutHandle:setTimeout(()=>{pX.delete(n),hX.set(t,`${qY} ${JY}`),jX()},KY)}):hX.set(t,`${G} ${JY}`)}function TX(e){let t=e.projectId;if(!t||_X(e)||xX(e))return;let n=id(`open-issue-session`);uX?.({type:`open-issue-session`,requestId:n,projectId:t,repo:e.repo,issueNumber:e.number})?(dX.set(n,{issueKey:e.key,issueNumber:e.number,timeoutHandle:setTimeout(()=>SX(n),KY)}),fX.set(e.key,`Opening session.`),jX()):(fX.set(e.key,G),jX())}function EX(e){let t=M(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===aX));let n=M(`span`,`pr-queue-top`);n.append(M(`span`,`pr-queue-ref`,`#${e.number}`),M(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=M(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(M(`span`,`issues-why`,`you`)),r.append(M(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=GY(t,Hn),n=M(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let i=M(`span`,`pr-queue-elapsed`,UY(e.updatedAt,Date.now()));return i.dataset.issueAge=e.updatedAt,r.append(i),t.append(yX(e),n,r),t.addEventListener(`click`,()=>{aX=e.key,ZY&&(ZY.dataset.detailOpen=`true`),wX(e),NX(),eX&&(eX.scrollTop=0)}),t}function DX(e,t,n){let r=M(`dd`);r.append(...n),e.append(M(`dt`,null,t),r)}function OX(e){let t=M(`footer`,`pr-footer issues-detail-footer`),n=_X(e);if(n&&e.sessionId){let n=e.sessionId,r=M(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>dv(n)),t.append(r)}if(e.projectId&&!n){let n=M(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=xX(e),n.addEventListener(`click`,()=>TX(e)),t.append(n)}t.append(fr(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let r=fX.get(e.key),i=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,a=M(`span`,`pr-action-status issue-open-status`,r??i);return a.setAttribute(`role`,`status`),xX(e)&&a.prepend(M(`span`,`issues-spinner`)),t.append(a),t}function kX(e,t){let n=M(`span`,null,WY(e,t));return n.dataset.issueAgo=e,n}function AX(){let e=eX?.querySelector(`.issues-detail`),t=aX?sX.get(aX):void 0;if(!e||!t)return;let n=e.querySelector(`.issues-facts .issues-state`);n&&vX(n,t,!0);let r=e.querySelector(`.issues-session-name`),i=bX(t);r&&r.textContent!==i&&(r.textContent=i);let a=String(!!_X(t));e.dataset.hasLiveSession!==a&&(e.dataset.hasLiveSession=a,e.querySelector(`.issues-detail-footer`)?.replaceWith(OX(t)))}function jX(){if(!eX)return;let e=oX?.issues.find(e=>e.key===aX);if(!e){eX.replaceChildren(M(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let t=M(`article`,`pr-detail issues-detail`),n=M(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);n.type=`button`,n.addEventListener(`click`,()=>{ZY&&(ZY.dataset.detailOpen=`false`),[...$Y?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===aX)?.focus({preventScroll:!0})});let r=M(`header`,`pr-detail-heading`),i=M(`div`,`pr-detail-title`);i.append(fr(`pr-link`,`${e.repo}#${e.number}`,e.url),M(`h2`,null,e.title||`Untitled issue`));let a=Date.now(),o=M(`div`,`pr-detail-meta`),s=M(`span`,null,`opened by ${e.author||`unknown`} `),c=M(`span`,null,`updated `);s.append(kX(e.createdAt,a)),c.append(kX(e.updatedAt,a)),o.append(s,c,M(`span`,null,`${e.comments} comments`)),e.sources.includes(`me`)&&o.append(M(`span`,`issues-why`,`assigned to you`));for(let t of e.teams)o.append(M(`span`,null,`mentions ${t}`));r.append(i,o);let l=M(`dl`,`issues-facts`);DX(l,`Repository`,[e.repo]),DX(l,`Labels`,[e.labels.join(`, `)||`none`]),DX(l,`Assignees`,[e.assignees.join(`, `)||`unassigned`]),t.dataset.hasLiveSession=String(!!_X(e)),DX(l,`Session`,[yX(e,!0),M(`span`,`issues-session-name`,bX(e))]);let u=e.pullRequests.flatMap(e=>{let t=GY(e,Hn),n=M(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,fr(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});DX(l,`Pull request`,u.length>0?u:[`none linked`]);let d=M(`section`,`issues-body-section`),f=gX(e),p=M(`div`,`issue-body`,mX.get(f)??hX.get(f)??`Loading description.`);mX.get(f)===``&&(p.textContent=`No description.`),p.setAttribute(`role`,`status`),d.append(M(`h3`,`pr-section-heading`,`Description`),p),t.append(n,r,l,d,OX(e)),eX.replaceChildren(t)}function MX(e,t,n,r){if(!e)return;let i=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...i].map(e=>{let n=M(`option`,null,e||t);return n.value=e,n})),e.value=r}function NX(){cX=!1,PX(),jX()}function PX(){if(!ZY||!$Y||!QY)return;let e=oX?.issues??[],t=RY(e);for(let e of YY){QY.querySelector(`[data-scope="${e.id}"]`)?.setAttribute(`aria-selected`,String(e.id===XY.scope));let n=QY.querySelector(`[data-scope-count="${e.id}"]`);n&&(n.textContent=String(t[e.id]))}let n=VY(e);MX(nX,`All repos`,n.repos,XY.repo),MX(rX,`All labels`,n.labels,XY.label),tX&&(tX.textContent=HY(XY));let r=zY(e,XY,new Set(P.keys())),i=document.activeElement instanceof HTMLElement&&$Y.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,a=[...BY(r)].map(([e,t])=>{let n=M(`section`,`pr-queue-section`),r=M(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(M(`span`,`issues-repo-note`,`view only`)),r.append(M(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(EX)),n});$Y.replaceChildren(...a),r.length===0&&$Y.append(M(`p`,`pr-empty`,e.length>0?`No open issues match these filters. Clear the search or pick All.`:IY(oX))),i&&[...$Y.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===i)?.focus({preventScroll:!0}),aX&&!e.some(e=>e.key===aX)&&(aX=null,ZY.dataset.detailOpen=`false`),lX?.update(oX),IX()}function FX(){let e=M(`div`,`issues-filters`),t=M(`div`,`issues-search-row`),n=M(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{XY.query=n.value,NX()});let r=M(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let i=M(`div`,`issues-filters-panel`);i.id=`issues-filters-panel`,i.hidden=!0,r.addEventListener(`click`,()=>{i.hidden=!i.hidden,r.setAttribute(`aria-expanded`,String(!i.hidden))}),t.append(n,r);let a=M(`div`,`issues-filter-row`);function o(e){let t=M(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),a.append(t),t}nX=o(`Repository`),nX.addEventListener(`change`,()=>{XY.repo=nX?.value??``,NX()}),rX=o(`Label`),rX.addEventListener(`change`,()=>{XY.label=rX?.value??``,NX()});let s=o(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=M(`option`,null,t);n.value=e??``,s.append(n)}s.addEventListener(`change`,()=>{XY.sort=s.value,NX()});let c=M(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=M(`label`,`issues-toggle`),r=M(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{XY[e]=r.checked,NX()}),n.append(r,` ${t}`),c.append(n)}return tX=M(`span`,`issues-filter-summary`),tX.setAttribute(`role`,`status`),i.append(a,c),e.append(t,tX,i),e}function IX(){if(!ZY||ZY.closest(`[hidden]`)||document.hidden)return;let e=Date.now();iX&&(iX.textContent=oX?.lastSyncAt?`Synced ${WY(oX.lastSyncAt,e)}.`:`Not synced yet.`);for(let t of ZY.querySelectorAll(`[data-issue-age]`))t.textContent=UY(t.dataset.issueAge??``,e);for(let t of ZY.querySelectorAll(`[data-issue-ago]`))t.textContent=WY(t.dataset.issueAgo??``,e)}function LX(e){uX=e}function RX(e){if(ZY)return ZY;ZY=M(`div`,`issues-content`),ZY.dataset.detailOpen=`false`,e.append(ZY),lX=dW(`issues`,ZY);let t=M(`div`,`pr-columns issues-columns`),n=M(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),QY=M(`div`,`pr-scope-tabs issues-scope-tabs`),QY.setAttribute(`role`,`tablist`),QY.setAttribute(`aria-label`,`Issue scope`);for(let e of YY){let t=M(`span`,`issues-scope`);t.setAttribute(`role`,`presentation`);let n=M(`button`,`pr-scope-tab`,e.label);n.type=`button`,n.dataset.scope=e.id,n.setAttribute(`role`,`tab`),n.addEventListener(`click`,()=>{XY.scope=e.id,NX()});let r=M(`span`,`issues-scope-count`);r.dataset.scopeCount=e.id,t.append(n,r),QY.append(t)}$Y=M(`nav`,`pr-queue`),$Y.setAttribute(`aria-label`,`Issues`);let r=CB(lX.control);return iX=M(`span`,`issues-sync`),iX.setAttribute(`role`,`status`),r.prepend(iX),r.append(lX.notice),n.append(SB(QY),FX(),$Y,r),eX=M(`section`,`pr-detail-host`),eX.setAttribute(`aria-label`,`Issue detail`),t.append(n,eX),ZY.append(t),window.setInterval(IX,3e4),NX(),ZY}function zX(){cX&&BX(),IX()}function BX(){if(yr(ZY))cX=!0;else if(cX=!1,AX(),XY.hasSession)PX();else for(let e of $Y?.querySelectorAll(`[data-issue-key]`)??[]){let t=sX.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&vX(n,t,!1)}}function VX(e){if(!e){for(let e of dX.values())clearTimeout(e.timeoutHandle),fX.set(e.issueKey,G);dX.clear();for(let e of pX.values())clearTimeout(e.timeoutHandle),hX.set(e.cacheKey,`${G} ${JY}`);pX.clear(),NX()}}function HX(e){let t=oX?.issues.find(e=>e.key===aX);oX=e,sX=new Map(e.issues.map(e=>[e.key,e]));let n=e.issues.find(e=>e.key===aX);n&&n.updatedAt!==t?.updatedAt&&wX(n),NX()}function UX(e){let t=pX.get(e.requestId);t&&(clearTimeout(t.timeoutHandle),pX.delete(e.requestId),e.ok&&e.body!==null&&mX.set(t.cacheKey,e.body),(!e.ok||e.body===null)&&hX.set(t.cacheKey,e.error||`Could not load description. Select the issue to try again.`),jX())}function WX(e){if(typeof e.requestId!=`string`)return;let t=CX(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`;fX.set(n,`Session "${r}" ${a}.${i}`);let o=oX?.issues.find(e=>e.key===n);o&&typeof e.sessionId==`string`&&(o.sessionId=e.sessionId),NX();return}let r=typeof e.error==`string`&&e.error?e.error:`Could not open session.`;fX.set(n,r),jX()}Un(NX);var GX=4e3;function KX({render:e,holdMs:t=GX,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 qX=null,JX=null,YX=null,XX=null,ZX=`http://www.w3.org/2000/svg`,QX=bl({getAck:fc,setAck:pc,signature:()=>gu({posthog:qX}),isLooking:()=>!yr(JX)}),$X=KX({render:GZ}),eZ=new Set,tZ=null,nZ=new Map,rZ=new WeakMap,iZ=`this issue`,aZ=Cf(()=>JX),oZ={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},sZ=[{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}],cZ=sZ.map(e=>e.track).join(` `),lZ=sZ.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),uZ=sZ.findIndex(e=>e.startsActionCluster)+1,dZ=3e4;function fZ(e){let t=M(`div`,e);return t.style.setProperty(`--radar-issue-grid`,cZ),t.style.setProperty(`--radar-issue-grid-phone`,lZ),t.style.setProperty(`--radar-issue-actions-start`,String(uZ)),t}function pZ(e,t){let n=M(`span`,`radar-issue-magnitudes`),r=!1;for(let i of sZ){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function mZ(e){return Number.isFinite(e)?String(e):`0`}function hZ(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${bf(Date.now()-e)}`}function gZ(e){return typeof e?.issueId==`string`?e.issueId:``}function _Z(e,t){return[String(e??``),String(t??``)].join(`::`)}function vZ(e,t,n){let r=nZ.get(_Z(e,t));if(!r||!r.copy.isConnected)return!1;let i=Nl(n);return i?(r.summary||(r.summary=M(`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 yZ(e,t,n){let r=gZ(e);if(!r)return;tZ?.dialog.close();let i=kf({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>xZ(e)});tZ={projectId:String(t??``),issueId:r,dialog:i},i.update(Pl(e))}function bZ(){if(!tZ)return;if(!tZ.dialog.isOpen()){tZ=null;return}let e=Fl(qX,tZ.projectId,tZ.issueId);e&&tZ.dialog.update(Pl(e))}function xZ(e){let t=gZ(e);t&&ad(`get-radar-report`,{issueId:t},{timeoutMs:q}).then(n=>{n.ok?n.found?Of({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):Of({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):Of({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{Of({issueId:t,issueTitle:String(e.title??``),error:_d(n,q)})})}function SZ(){let e=M(`div`,`radar-issue-actions`),t=M(`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=M(`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)=>{$X.begin(e),o(!0),i(),t.dataset.tone=`busy`,t.textContent=a;let l=(n,r)=>{o(!1),i(),t.dataset.tone=n,t.textContent=r,$X.settle(e)};ad(n,r,{timeoutMs:dZ}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,_d(e,dZ)))},showFollowUp:a,wrap:e}}function CZ(e){let t=M(`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(),WZ(e)}),t}function wZ(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=SZ(),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`,()=>yZ(e,t,n)),!e.inFlight&&e.verdict&&gZ(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>xZ(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`&&XX&&a(CZ(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`,()=>{Wd({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 TZ(e){return Nm()?iZ:e}function EZ(e){let t=rZ.get(e);t&&(e.title=t())}function DZ(){if(JX)for(let e of JX.querySelectorAll(`.radar-issue-reportable`))EZ(e)}Fm(DZ);function OZ(e,t,n){e.classList.add(`radar-issue-reportable`),rZ.set(e,t),EZ(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function kZ(e,t,n){let r=M(`div`,`radar-issue`);r.dataset.severity=Jl(e.change);let i=M(`span`,`radar-stripe`);i.setAttribute(`aria-hidden`,`true`);let a=M(`span`,`radar-change`,oZ[e.change??``]||String(e.change||`unknown`)),o=fr(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),s=M(`span`,`radar-metric`);s.append(M(`span`,`radar-metric-value`,mZ(e.occurrences)),M(`span`,`radar-metric-label`,`occ`));let c=M(`span`,`radar-metric`);c.append(M(`span`,`radar-metric-value`,mZ(e.users)),M(`span`,`radar-metric-label`,`users`));let l=Ql(e.history),u=$l(l,64,16),d=u?document.createElementNS(ZX,`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(ZX,`title`);e.textContent=tu(l);let t=document.createElementNS(ZX,`polyline`);t.setAttribute(`points`,u),d.append(e,t)}let f=Nl(e),p=M(`span`,`radar-issue-copy`);p.append(o);let m=null;f&&(m=M(`span`,`radar-issue-summary`),m.textContent=f,p.append(m)),nZ.set(_Z(t,e.issueId),{copy:p,summary:m});let h=M(`span`,`radar-issue-meta`),g=Yl(e);if(g!==null){let e=M(`span`,`radar-issue-seen`);e.title=new Date(g).toLocaleString(),aZ.track(e,g,xf),h.append(e)}let _=Xl(e);_&&h.append(M(`span`,`radar-issue-status`,_));let v=String(e.title||e.issueId);if(e.inFlight){let i=M(`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=M(`span`,`radar-issue-elapsed`);aZ.track(e,a,hZ),h.append(e)}gZ(e)&&OZ(r,()=>`Watch the investigation of ${TZ(v)}`,()=>yZ(e,t,n))}if(!e.inFlight&&e.verdict){let t=M(`span`,`radar-verdict`,Bl(e.verdict));t.dataset.verdict=e.verdict,h.append(t),gZ(e)&&OZ(r,()=>`View investigation report for ${TZ(v)}`,()=>xZ(e))}h.childElementCount>0&&p.append(h);let y=M(`span`,`radar-issue-trend`);d&&y.append(d);let b=eu(l);if(b){let e=M(`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 pZ(r,e=>x[e.columnId]),gZ(e)&&r.append(wZ(e,t,n)),r}var AZ=(e,t,n)=>_r(`radar`,e,t,n);function jZ(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${bf(e.staleMs)}`:``}function MZ(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=M(r,i,ou(t));o.title=String(t.name||``),e.append(o);let s=n?su(t.host):``;s&&e.append(M(`span`,a,s))}function NZ(){let e=fZ(`radar-column-heads`);for(let t of sZ){if(!t.headText){e.append(M(`span`));continue}let n=M(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function PZ(e,t){let n=e.project,r=M(`div`,`radar-project`),i=vu(n.issues),a=nu(i),o=M(`div`,`radar-project-head`);MZ(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=M(`div`,`radar-project-summary`);s.append(AZ(a.active===1?`active issue`:`active issues`,mZ(a.active))),s.append(AZ(`spiking`,mZ(a.spiking),a.spiking>0?`crit`:null)),s.append(AZ(`needs you`,mZ(a.needsHuman),a.needsHuman>0?`warn`:null));let c=jZ(e);if(c){let t=M(`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(NZ());let l=fZ(`radar-issues`);for(let e of i)l.append(kZ(e,n.projectId,ou(n)));return r.append(l),r}function FZ(e,t){let n=e.project,r=M(`div`,`radar-quiet-row`),i=M(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),MZ(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(M(`span`,`radar-quiet-count`,`0 issues`)),r}var IZ=(e,t)=>gr(`radar`,e,t);function LZ(){let e=M(`div`,`radar-issue`);return e.dataset.skeleton=``,pZ(e,e=>M(`span`,e.cellClass)),e}function RZ(){let e=fZ(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(LZ());return e}function zZ(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function BZ(e,t=`ready`){let n=IZ(`Errors`);if(t===`pending`)return n.append(RZ()),n;if(t===`placeholder`||e.length===0){let e=M(`p`,`radar-unconfigured`,Gl(qX)),t=ep(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=zZ(qX);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=M(`div`,`radar-global-tick`),i=Number(qX?.intervalMinutes);aZ.track(r,qX?.ts,e=>{let t=`polled ${xf(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}=uu(e,Date.now(),{intervalMs:a}),c=cu(e);for(let e of o)n.append(PZ(e,c));if(s.length===0)return n;let l=M(`div`,`radar-quiet`);for(let e of s)l.append(FZ(e,c));return n.append(l),n}function VZ(e){let{addButton:t,request:n,wrap:r}=SZ();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{xZ({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`,()=>eZ.add(e.id))}),r}function HZ(e){let t=M(`div`,`radar-investigation`),n=M(`span`,`radar-verdict`,Bl(e.verdict));n.dataset.verdict=e.verdict;let r=fr(`radar-issue-title`,e.title,e.url),i=M(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=M(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=M(`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=M(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=M(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=M(`span`,`radar-investigation-time`,xf(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(VZ(e)),t}function UZ(e){let t=IZ(`Investigations`,`completed, not yet archived`),n=M(`div`,`radar-investigations`);for(let t of e)n.append(HZ(t));return t.append(n),t}function WZ(e){XX&&XX(e)}function GZ(){if(!JX)return;JX.textContent=``,nZ.clear(),aZ.reset();let e=vr(qX),t=du(qX,eZ),n=ql(qX,e.length);JX.append(BZ(e,n)),t.length>0&&JX.append(UZ(t))}function KZ(){$X.request()}function qZ(){YX&&YX(QX.refresh())}function JZ(){QX.acknowledge(),qZ()}function YZ(e){YX=e,qZ()}function XZ(e){XX=e}function ZZ(e){if(JX)return JX;let t=M(`div`,`radar-content`);return e.appendChild(t),JX=t,aZ.ensure(),GZ(),t}function QZ(e){qX=e,fu(qX,eZ),KZ(),qZ(),bZ()}function $Z(e){let t=Fl(qX,e.projectId,e.issueId)?.inFlight===!0;if(!Il(qX,e))return;bZ();let n=Fl(qX,e.projectId,e.issueId);t&&vZ(e.projectId,e.issueId,n)||KZ()}function eQ(e){tZ?.dialog.isOpen()&&Rl(tZ,e)&&tZ.dialog.update(Ll(e))}function tQ(e){zl(qX,e)?(bZ(),KZ(),qZ()):eQ(e)}var nQ=sh({requestPrefix:`session-setup`,dialogClass:`dialog coherence-journal-drawer session-setup-dialog`,titleText:`Session setup`,unavailableLabel:`Session setup unavailable`,timeoutMs:15e3});function rQ(e){let t=M(`ul`,`session-setup-list`);return t.append(...e.map(e=>M(`li`,null,e))),t}function iQ(e,t){e.replaceChildren();function n(t,n){if(n.length===0)return;let r=gr(`session-setup`,t);r.append(...n),e.append(r)}n(`Model`,t.model?[M(`p`,null,t.model)]:[]),n(`Plugins`,t.plugins.map(e=>{let t=M(`div`,`session-setup-plugin`);return t.append(M(`h3`,null,e.name)),e.skills.length>0&&t.append(M(`p`,`session-setup-label`,`Skills`),rQ(e.skills)),e.agents.length>0&&t.append(M(`p`,`session-setup-label`,`Agents`),rQ(e.agents)),t})),n(`MCP servers`,t.mcpServers.length>0?[rQ(t.mcpServers)]:[]),n(`Hooks`,[...t.hookEvents.map(e=>{let t=M(`p`,`session-setup-hook`);return t.append(M(`span`,null,e.event),M(`span`,`session-setup-label`,`${e.runCount} runs`)),t}),...t.hookCommands.map(e=>M(`pre`,`coherence-command`,e))]),n(`Skills`,t.skills.length>0?[rQ(t.skills)]:[]),n(`Agents`,t.agents.length>0?[rQ(t.agents)]:[])}function aQ(e){let t=M(`p`,`coherence-journal-status`,`Loading session setup`);t.setAttribute(`role`,`status`);let n=M(`div`,`session-setup-sections`);nQ.open({sessionId:e,status:t,body:[t,n],parts:{sections:n},buildRequest:t=>({type:`session-setup`,id:e,requestId:t})})}function oQ(e){let t=nQ.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;iQ(n,e.setup),t.status.textContent=n.childElementCount>0?``:`No session setup recorded yet`,t.status.hidden=n.childElementCount>0}function sQ(e){return{skipPerms:e.skipPerms??e.dangerouslySkipPermissions??!1,saneYolo:e.saneYolo===!0,worktree:e.worktree??e.isWorktree??!1,workspace:e.workspace??e.isWorkspace??!1,guarded:e.guarded??e.isGuarded??!1,guardrailsReleased:e.guardrailsReleased??e.isGuardrailsReleased??!1,ephemeral:e.ephemeral===!0,path:e.path,stateSince:e.stateSince,taskTitle:typeof e.taskTitle==`string`?e.taskTitle:null,taskTitleIsCustom:e.taskTitleIsCustom===!0}}var cQ=null,lQ=null,uQ=null,dQ=null,fQ=null,pQ=null,mQ=-1,hQ=null,gQ={isRightToLeft:!1,arcProgress:0},_Q=1,vQ=3;function yQ(){if(!cQ||hQ===null)return;let e=ns({viewportWidthPx:document.documentElement.clientWidth,viewportHeightPx:document.documentElement.clientHeight,verticalProgress:hQ,...gQ});cr(cQ,is(e,_Q,window.devicePixelRatio))}function bQ(){pQ!==null&&(clearTimeout(pQ),pQ=null)}function xQ(e=Hs()){return Ko({isEnabled:e,hasReducedMotion:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,isPhone:my(),options:jc()})}function SQ(e){e.onanimationend=null,e.style.animation=`none`,dQ&&(dQ.style.animation=`none`),e.hidden=!0}function CQ(e,t){if(!cQ||!lQ||!uQ||!dQ||xQ())return;let n=jc();bQ();let r=Go(n,mQ,Math.random,t);if(SQ(cQ),!r){pQ=setTimeout(()=>CQ(!1),1e3);return}hQ=r.verticalProgress,gQ={isRightToLeft:r.isRightToLeft,arcProgress:r.arcProgress},_Q=n.flyingAnimalsScale,yQ();let i=Lo[r.animalIndex];lQ.className=`nyan-sprite ${i.sprite}`,uQ.className=`nyan-trail ${i.trail}`,mQ=r.animalIndex,fQ?.classList.remove(`is-booped`),cQ.hidden=!1,cQ.offsetWidth,cQ.style.animation=`nyan-fly ${r.durationSeconds}s linear`,dQ.style.animation=`nyan-trail-hold ${r.durationSeconds}s linear`,e&&(cQ.style.animationDelay=`-${r.firstDelaySeconds}s`,dQ.style.animationDelay=`-${r.firstDelaySeconds}s`),cQ.onanimationend=e=>{cQ&&e.target===cQ&&(SQ(cQ),pQ=setTimeout(()=>CQ(!1),r.gapMs))}}function wQ(){if(cQ&&dQ&&fQ){fQ.classList.remove(`is-booped`),fQ.offsetWidth,fQ.classList.add(`is-booped`);for(let e of[...cQ.getAnimations(),...dQ.getAnimations()])e.playbackRate=vQ}}function TQ(){if(cQ||xQ())return;cQ=document.createElement(`div`),cQ.className=`nyan-flight`,cQ.setAttribute(`aria-hidden`,`true`);let e=document.createElement(`div`);e.className=`nyan-trail-window`,dQ=document.createElement(`div`),dQ.className=`nyan-trail-hold`,uQ=document.createElement(`div`),dQ.append(uQ),e.append(dQ),lQ=document.createElement(`div`),fQ=document.createElement(`div`),fQ.className=`nyan-boop`,fQ.append(lQ),fQ.addEventListener(`pointerdown`,wQ),cQ.append(e,fQ),document.body.appendChild(cQ),window.addEventListener(`resize`,yQ),window.addEventListener(`orientationchange`,yQ),CQ(!0)}function EQ(e){TQ(),CQ(!1,e)}function DQ(){bQ(),window.removeEventListener(`resize`,yQ),window.removeEventListener(`orientationchange`,yQ),cQ?.remove(),cQ=null,lQ=null,uQ=null,dQ=null,fQ=null,mQ=-1,hQ=null}var OQ=!1;function kQ(e){let t=document.documentElement;if(OQ||(OQ=!0,hy(()=>kQ(Hs())),window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,()=>kQ(Hs()))),e){if(t.dataset.flyingAnimals=`true`,xQ(e)){DQ();return}TQ()}else delete t.dataset.flyingAnimals,DQ()}function AQ(){let e=M(`div`),t=M(`p`,`flying-animals-status`);t.id=`flying-animals-gallery-status`,t.setAttribute(`role`,`status`);let n=M(`div`,`flying-animals-gallery`);n.setAttribute(`aria-label`,`Animal gallery`);let r=[],i=()=>{let e=xQ(),n=Uo(jc().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=jc();for(let e of Lo){let o=M(`article`,`flying-animal-tile`),s=Fc(e),c=M(`label`,`flying-animal-include`),l=M(`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(jc().flyingAnimalsExcludedSprites);l.checked&&t.delete(e.sprite),l.checked||t.add(e.sprite),Ac([...t]),kQ(Hs()),i()}),c.append(l,document.createTextNode(`Include`));let u=M(`button`,`btn-dialog btn-dialog-cancel`,`Fly now`);u.type=`button`,u.setAttribute(`aria-describedby`,t.id),u.addEventListener(`click`,()=>EQ(e.sprite)),r.push(u),o.append(s,M(`h2`,`flying-animal-name`,e.name),c,u),n.append(o)}return i(),e.append(t,n),e}var jQ=`johncwaters/glimmervoid`,MQ={maxConcurrentInvestigations:Math.ceil,minUsersToInvestigate:Math.ceil,userEscalationThreshold:Math.ceil,trafficSpikeMinUsers:Math.ceil,trafficSpikeBaselineDays:Math.floor};[...Object.entries(MQ).map(([e,t])=>({path:[`posthog`,e],min:1,round:t}))];var NQ=Object.freeze([`auto`,`calculate`,`display`]),PQ=Object.freeze([`codex`,`grok`]),FQ=Object.freeze([`dailyUsd`,`monthlyUsd`]),IQ=e=>t({error:`${e} must be a boolean`}).optional(),LQ=(e,t=!1)=>{let n=l({error:`${e} must be a string`});return(t?n.transform(e=>e.trim()):n).optional()},RQ=e=>e.label?e.label:e.max==null?e.exclusiveMin?`greater than ${e.min}`:`at least ${e.min}`:`between ${e.min} and ${e.max}`,zQ=(e,t=A)=>c({error:`${e} must be ${RQ(t)}`}).finite().refine(e=>!t.exclusiveMin||e>t.min,{message:`${e} must be ${RQ(t)}`}).refine(e=>t.exclusiveMin||e>=t.min,{message:`${e} must be ${RQ(t)}`}).refine(e=>t.max==null||e<=t.max,{message:`${e} must be ${RQ(t)}`}).optional(),BQ=(e,t)=>zQ(e,t).unwrap().int({error:`${e} must be a whole number ${RQ(t)}`}).optional(),VQ=(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(),HQ=(e,t)=>g(t,{error:`${e} must be an object`}).nullable().optional(),UQ=Object.freeze([`claude`,`codex`]),WQ=Object.freeze([`release`,`main`]),GQ=Object.freeze([`report`,`fix`]);HQ(`changeMap`,{narrator:HQ(`changeMap.narrator`,{enabled:IQ(`changeMap.narrator.enabled`),engine:u(UQ,{error:`changeMap.narrator.engine must be one of ${UQ.join(`, `)}`}).optional(),model:LQ(`changeMap.narrator.model`,!0),timeoutSeconds:VQ(`changeMap.narrator.timeoutSeconds`,rn)})}),g({refiner:g({enabled:IQ(`taskTitle.refiner.enabled`),model:LQ(`taskTitle.refiner.model`,!0),minIntervalSeconds:zQ(`taskTitle.refiner.minIntervalSeconds`,{min:0}),timeoutSeconds:zQ(`taskTitle.refiner.timeoutSeconds`,At)},{error:`taskTitle.refiner must be an object`}).nullable().optional()},{error:`taskTitle must be an object`}).nullable().optional();var KQ={enabled:IQ(`branchGc.enabled`),worktrees:IQ(`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:IQ(`branchGc.dryRun`),staleDays:zQ(`branchGc.staleDays`,jt),deleteUnmerged:IQ(`branchGc.deleteUnmerged`),intervalMs:zQ(`branchGc.intervalMs`,Mt)},qQ=g(KQ,{error:`branchGc must be an object`});HQ(`branchGc`,KQ),qQ.omit({prefixes:!0,dryRun:!0,worktrees:!0}).nullable().optional(),Object.freeze([`enabled`,`deleteUnmerged`]),Object.freeze([`staleDays`,`intervalMs`]),HQ(`postTurnChecks`,{mode:u(GQ,{error:`postTurnChecks.mode must be one of report, fix`}).optional()}),HQ(`visions`,{enabled:IQ(`visions.enabled`),autoFix:IQ(`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:HQ(`visions.dispatch`,{enabled:IQ(`visions.dispatch.enabled`),model:LQ(`visions.dispatch.model`,!0),quietMs:BQ(`visions.dispatch.quietMs`,Nt),cooldownMs:BQ(`visions.dispatch.cooldownMs`,Pt),maxPerHour:BQ(`visions.dispatch.maxPerHour`,Ft),activityMaxPerHour:BQ(`visions.dispatch.activityMaxPerHour`,It),dispatchTimeoutSeconds:BQ(`visions.dispatch.dispatchTimeoutSeconds`,Lt)}),intent:HQ(`visions.intent`,{threadTtlMs:BQ(`visions.intent.threadTtlMs`,Rt)})}),g({teams:p(l({error:`github.teams must be an array of org/slug strings`}).refine(e=>ie(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(),HQ(`teamReview`,{enabled:IQ(`teamReview.enabled`),autoRebaseMyPrs:IQ(`teamReview.autoRebaseMyPrs`),keepMergeableEnabled:IQ(`teamReview.keepMergeableEnabled`),mergeQueueEnabled:IQ(`teamReview.mergeQueueEnabled`),keepMergeableTimeoutMinutes:VQ(`teamReview.keepMergeableTimeoutMinutes`,an),org:LQ(`teamReview.org`,!0),team:LQ(`teamReview.team`,!0),skill:LQ(`teamReview.skill`,!0),reReviewAfterHours:zQ(`teamReview.reReviewAfterHours`),skipIdleAfterDays:zQ(`teamReview.skipIdleAfterDays`)}),HQ(`benchmarks`,{enabled:IQ(`benchmarks.enabled`)}),HQ(`coherence`,{enabled:IQ(`coherence.enabled`)});var JQ={intervalMinutes:zt,maxConcurrentInvestigations:Bt,investigationTimeoutSeconds:Vt,fixTimeoutSeconds:Kt,minUsersToInvestigate:Ht,userEscalationThreshold:Ut,recurrenceWindowDays:Wt,transientRecurrenceLimit:Gt,trafficSpikeMultiplier:qt,trafficSpikeMinUsers:Jt,trafficSpikeCooldownMinutes:Yt,trafficSpikeBaselineDays:Xt};HQ(`posthog`,{enabled:IQ(`posthog.enabled`),recurrenceDedupe:IQ(`posthog.recurrenceDedupe`),trafficSpikeEnabled:IQ(`posthog.trafficSpikeEnabled`),autoFix:IQ(`posthog.autoFix`),host:LQ(`posthog.host`,!0).refine(e=>e==null||!e||/^https?:\/\//i.test(e),{message:`posthog.host must be an http(s) URL`}),apiKey:LQ(`posthog.apiKey`,!0),repoPath:LQ(`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(JQ).map(([e,t])=>[e,Object.hasOwn(MQ,e)?BQ(`posthog.${e}`,t):zQ(`posthog.${e}`,t)]))}),`${NQ.join(`, `)}`,Object.fromEntries(PQ.map(e=>[e,IQ(`usage.vendors.${e}`)])),Object.fromEntries(FQ.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()])),HQ(`telegram`,{botToken:LQ(`telegram.botToken`,!0),chatId:LQ(`telegram.chatId`,!0)}),g({enabled:IQ(`ingest.enabled`)},{error:`ingest must be an object`}).passthrough().optional(),g({enabled:IQ(`trace.enabled`)},{error:`trace must be an object`}).optional(),g({enabled:IQ(`planReview.enabled`)},{error:`planReview must be an object`}).optional();var YQ=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(),XQ={unguardedRepos:YQ(`guardrails.unguardedRepos`),blockedPaths:YQ(`guardrails.blockedPaths`),unreadablePaths:YQ(`guardrails.unreadablePaths`)};g(XQ,{error:`guardrails must be an object`}).passthrough().optional();var ZQ={enabled:IQ(`telemetry.enabled`)};g(ZQ,{error:`telemetry must be an object`}).strict().optional(),g(ZQ,{error:`telemetry must be an object`}).passthrough().optional();var QQ={scope:`browser`,access:`editable`,takesEffect:`now`},$Q={scope:`browser`,access:`advanced`,takesEffect:`now`},X={scope:`machine`,access:`editable`,takesEffect:`now`},e$={scope:`machine`,access:`editable`,takesEffect:`new-sessions`},t$={scope:`machine`,access:`readout`,takesEffect:`now`},Z={scope:`machine`,access:`file-only`},n$=1e3,r$=60,i$=60,a$=n$*r$,o$=a$*i$,s$=o$*24,c$={label:`investigations`,storedPerDisplay:1},l$={label:`sessions`,storedPerDisplay:1},u$={label:`recurrences`,storedPerDisplay:1},d$={label:`actions`,storedPerDisplay:1},f$={label:`seconds`,storedPerDisplay:1},p$={label:`minutes`,storedPerDisplay:1},m$={label:`hours`,storedPerDisplay:1},h$={label:`days`,storedPerDisplay:1},g$={label:`seconds`,storedPerDisplay:n$,storedLabel:`ms`},_$={label:`minutes`,storedPerDisplay:a$,storedLabel:`ms`},v$={label:`minutes`,storedPerDisplay:r$,storedLabel:`seconds`},y$={label:`hours`,storedPerDisplay:o$,storedLabel:`ms`},b$={label:`hours`,storedPerDisplay:i$,storedLabel:`minutes`},x$={label:`days`,storedPerDisplay:s$,storedLabel:`ms`},S$={label:`USD`,storedPerDisplay:1},C$={label:`users`,storedPerDisplay:1},w$={label:`reviews per hour`,storedPerDisplay:1},T$={label:`times`,storedPerDisplay:1},Q=`A tuning knob kept out of the Settings view; the default suits almost every install.`,E$=`A diagnostic switch kept out of the Settings view; change it in config.json while investigating.`,D$=`Changes how the server process or its worktrees behave, so it is set in config.json with a restart or new sessions in mind.`,O$=`A structured value with no dashboard control; edit it in config.json.`,k$=`Never editable from the dashboard by rule; edit it in config.json.`;function A$(e){return e.map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}))}var j$=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.`}}),M$=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`,...QQ},{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,...QQ},{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,...QQ},{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,...QQ},{id:`animals-min-gap`,path:`pref:flyingAnimalsMinGapSeconds`,title:`Time between flights: minimum`,description:`Shortest pause between flights.`,control:`number`,integer:!1,step:.1,range:Ct,unit:f$,maximumSettingId:`animals-max-gap`,keywords:[`animals`,`frequency`],defaultValue:Et.flyingAnimalsMinGapSeconds,...$Q},{id:`animals-max-gap`,path:`pref:flyingAnimalsMaxGapSeconds`,title:`Time between flights: maximum`,description:`Longest pause between flights.`,control:`number`,integer:!1,step:.1,range:Ct,unit:f$,keywords:[`animals`,`frequency`],defaultValue:Et.flyingAnimalsMaxGapSeconds,...$Q},{id:`animals-min-duration`,path:`pref:flyingAnimalsMinDurationSeconds`,title:`Flight duration: minimum`,description:`Shortest flight, for faster animals.`,control:`number`,integer:!1,step:.1,range:wt,unit:f$,maximumSettingId:`animals-max-duration`,keywords:[`animals`,`speed`],defaultValue:Et.flyingAnimalsMinDurationSeconds,...$Q},{id:`animals-max-duration`,path:`pref:flyingAnimalsMaxDurationSeconds`,title:`Flight duration: maximum`,description:`Longest flight, for slower animals.`,control:`number`,integer:!1,step:.1,range:wt,unit:f$,keywords:[`animals`,`speed`],defaultValue:Et.flyingAnimalsMaxDurationSeconds,...$Q},{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:Tt,unit:T$,keywords:[`animals`,`size`],defaultValue:Et.flyingAnimalsScale,...$Q},{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:Et.flyingAnimalsOnPhone,...$Q}]},{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,...QQ},{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`,...QQ},{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,...QQ}]},{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:`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`,...t$}]},{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,...e$},{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,...e$},{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:A$(GQ),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.`,...e$},{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.`,...e$},{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.`,...e$}]},{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`,...t$},{id:`update-channel`,path:`updateChannel`,title:`Channel`,description:`Track tagged releases or the upstream of the checked-out branch.`,control:`select`,options:A$(WQ),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:Qt,unit:h$,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:tn,unit:S$,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:tn,unit:S$,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:A,unit:w$,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:A,unit:p$,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:A,unit:c$,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:A,unit:C$,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. Queue review runs it at any time.`,control:`number`,range:A,unit:m$,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:A,unit:h$,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:an,unit:p$,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:on,unit:l$,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`,...t$}]},{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:`lanes-change-map`,level:`lanes`,title:`Change map`,description:`Optional model narration for deterministic change facts.`,legacyIds:[`change-map`],settings:[{id:`change-map-narrator-enabled`,path:`changeMap.narrator.enabled`,title:`Enable narration`,description:`Add cited model claims to the change map.`,control:`toggle`,keywords:[`review`,`claims`],defaultValue:!1,...X},{id:`change-map-narrator-engine`,path:`changeMap.narrator.engine`,title:`Narrator engine`,description:`CLI used to generate change map claims.`,control:`select`,options:A$(UQ),keywords:[`claude`,`codex`],defaultValue:`claude`,...X},{id:`change-map-narrator-model`,path:`changeMap.narrator.model`,title:`Narrator model`,description:`Blank uses the engine default: haiku for Claude, the configured Codex model for Codex.`,control:`text`,keywords:[`claude`,`codex`,`haiku`],defaultValue:``,...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 anonymous usage and error data`,description:`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, under a random install id. Never error messages, paths, repository or branch names, prompts, objectives or terminal output. 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 reference and build information.`,legacyIds:[`shortcuts`],settings:[]}]),N$=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:E$,...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:Dt,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:Ot,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:E$,...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:E$,...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:E$,...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:E$,...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:D$,...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:D$,...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:D$,...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:D$,...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:D$,...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:k$,...Z},{id:`file-port`,path:`port`,title:`Local port`,group:`machine-detection-sessions`,description:`Port used by the local dashboard listener.`,control:`number`,range:kt,unit:{label:`port`,storedPerDisplay:1},keywords:[`server`,`listener`],defaultValue:3e3,takesEffect:`restart`,fileOnlyReason:k$,...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:A,unit:g$,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:A,unit:_$,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:O$,...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:D$,...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:D$,...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:D$,...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:D$,...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:A,unit:h$,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:A,unit:y$,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:k$,...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:St,unit:f$,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:At,unit:f$,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:Zt,unit:p$,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:nn.warehouseRetainDays,unit:h$,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:nn.sessionBlockHours,unit:m$,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:A$(NQ),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-change-map-narrator-timeout`,path:`changeMap.narrator.timeoutSeconds`,title:`Narrator timeout`,group:`lanes-change-map`,description:`Maximum time allowed for one narration.`,control:`number`,range:rn,unit:f$,keywords:[`deadline`,`narration`],defaultValue:90,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:A,unit:g$,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:A,unit:_$,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:St,unit:w$,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:A,unit:v$,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:A,unit:x$,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:A,unit:v$,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:A,unit:C$,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:Kt,unit:v$,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:qt,unit:T$,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:Jt,unit:C$,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:St,unit:b$,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:Xt,unit:h$,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:A,unit:h$,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:A,unit:u$,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:O$,...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:sn,unit:d$,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}]),P$=Object.freeze({sections:M$,fileOnly:N$}),F$=Object.freeze(Object.fromEntries(M$.flatMap(e=>(e.legacyIds??[]).map(t=>[t,e.id])))),I$=Object.freeze(M$.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 L$(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 R$(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function z$(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 B$(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)]=L$(n)}function V$(e){return e.flatMap(e=>e.settings)}function H$(e){return e.access===`file-only`||e.control===`readonly`}function U$(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 W$=6;function G$(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):[]:L$(t)}function K$(e){return e.control===`number`&&(e.unit?.storedPerDisplay??1)!==1}function q$(e){return String(Number(e.toFixed(W$)))}function J$(e,t){let n=G$(e,t);return e.valueKind===`posthog-projects`&&Array.isArray(n)?n.join(`, `)||`all`:typeof n==`number`&&e.unit?`${q$(n)} ${e.unit.label}`:JSON.stringify(n??null)}function Y$(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 U$(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 L$(t)}function X$(e){return String(e||``).toLowerCase().match(/[a-z0-9]+/g)||[]}var Z$=3,Q$=2,$$=1,e1=3,t1=30,n1=16;function r1(e,t){return e===t?Z$:e.startsWith(t)?Q$:t.length>=e1&&e.includes(t)?$$:0}function i1(e,t,n){let r=0;for(let n of t){let t=Math.max(0,...e.map(e=>r1(e,n)));if(t===0)return 0;r+=t}return r*n}function a1(e){return e.options?.map(e=>e.label).join(`, `)??``}function o1(e){return m1(e.group??``)?.title??``}function s1(e,t,n){let r=i1(X$(e.title),n,1e3),i=i1(X$(e.keywords.join(` `)),n,100),a=i1(t,n,10),o=i1(X$(e.path),n,10),s=i1(X$(a1(e)),n,10),c=i1(X$(e.description),n,1);return r+i+a+o+s+c}function c1(e){return e.section?.title??``}function l1(e,t){return Number(e.section===null)-Number(t.section===null)}function u1(e,t,n){return[[`title`,e.title],[`keywords`,e.keywords.join(` `)],[`section`,t?.title??o1(e)],[`description`,e.description],[`path`,e.path],[`options`,a1(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(r1(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 d1(e,t,n=[]){let r=X$(t).slice(0,n1);if(r.length===0)return[];let i=[];for(let t of e){let e=X$(t.title);for(let n of t.settings){let a=s1(n,e,r);a!==0&&i.push({section:t,setting:n,score:a,matches:u1(n,t,r)})}}for(let e of n){let t=s1(e,X$(o1(e)),r);t!==0&&i.push({section:null,setting:e,score:t,matches:u1(e,null,r)})}return i.sort((e,t)=>t.score-e.score||l1(e,t)||c1(e).localeCompare(c1(t))||e.setting.title.localeCompare(t.setting.title)).slice(0,t1)}function f1(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 p1(e){let t=new Map,n=new Map;for(let r of[...V$(e.sections),...e.fileOnly])t.set(r.id,r),n.set(r.path,r);return{byId:t,byPath:n}}p1(P$);function m1(e,t=P$){let n=t.sections.find(t=>t.id===e);return n?{title:n.title,description:n.description}:j$[e]??null}function h1({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 g1(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 _1=new WeakMap,v1=`Configured`,y1=`•`.repeat(12),b1=`Each line must be a positive whole-number PostHog project id, or the one word none.`,x1=3,S1=200,C1=new Set([`customAgents`]),w1=1e-9,T1=`Lanes`,E1=Object.freeze({now:`Applies now`,"new-sessions":`New sessions`,restart:`After restart`}),D1=Object.freeze({browser:`This browser`,machine:`This machine`});function O1(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 k1(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 A1(e){return e.control===`password`}function j1(e){return`${e.path}${v1}`}function M1(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)=>M1(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)&&M1(e[n],t[n]))}function N1(e){return _1.get(e)||null}function P1(e){return Array.isArray(e)?e.map(e=>String(e)):[]}function F1(e){return e.split(`
|
|
146
|
-
`).map(e=>e.trim()).filter(e=>e!==``)}function I1(e){let t=e.range;if(!t)return null;let n={min:Number(G$(e,t.min))};return t.max!=null&&(n.max=Number(G$(e,t.max))),t.exclusiveMin&&(n.exclusiveMin=!0),n}function L1(e){let t=`Default ${J$(e,e.defaultValue)}`;return K$(e)?`${t}, stored as ${JSON.stringify(e.defaultValue)} ${e.unit?.storedLabel??``}`.trimEnd():t}function R1(e,t){let n=L1(e),r=C1.has(e.path)?void 0:R$(t,e.path);if(r===void 0)return{currentText:null,defaultText:n,jsonFragment:null};let i={};return B$(i,e.path,r),{currentText:`Current ${J$(e,r)}`,defaultText:n,jsonFragment:JSON.stringify(i,null,2)}}function z1(e,t,n){let r=t??e.find(e=>e.id===n.group);if(!r)return m1(n.group??``)?.title??`config.json`;let i=e.find(e=>e.id===r.parent);return i?`${i.title} / ${r.title}`:r.level===`lanes`?`${T1} / ${r.title}`:r.title}function B1(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,S1).join(``).trim()}}function V1(e,t){return e.filter(e=>e.parent===t)}function H1(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 U1(e){return e.filter(e=>!e.parent)}function W1(e){let t=e.filter(e=>e.level===`lanes`);return[{heading:null,sections:e.filter(e=>e.level!==`lanes`)},{heading:T1,sections:t}].filter(e=>e.sections.length>0)}function G1(e,t,n,r){return r?`hidden`:n.trim()?`search`:t&&H1(e,t)?`section`:`list`}function K1(e,t={}){let n={};for(let r of V$(e)){if(H$(r))continue;if(r.path.startsWith(`pref:`)){let e=r.path.slice(5),i=t.prefs?.[e]??t[r.path];n[r.path]=G$(r,i??r.defaultValue);continue}if(A1(r)){let e=R$(t,j1(r))===!0;n[r.path]=e?y1:``;continue}let e=R$(t,r.path);n[r.path]=G$(r,e??r.defaultValue)}return _1.set(n,L$(t)),n}function q1(e,t,n){let r=V$(e).filter(e=>H$(e)||e.path.startsWith(`pref:`)||O1(e,N1(t)||{})||A1(e)&&n[e.path]===y1?!1:!M1(t[e.path],n[e.path]));if(r.length===0)return{};let i=N1(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]=Y$(e,n[e.path]);continue}if(!s.has(r)){let e=i[r];o[r]=e&&typeof e==`object`&&!Array.isArray(e)?L$(e):{},s.add(r)}let c=Y$(e,n[e.path]);if(e.control===`projects`){let n=t[e.path];c=h1({checked:Array.isArray(c)?c:[],stored:Array.isArray(n)?n:[],rendered:g1(a.map(e=>({id:e,name:e})),Array.isArray(n)?n:[]).map(e=>e.id)})}B$(o,e.path,c)}for(let t of V$(e))A1(t)&&z$(o,j1(t));return delete o.secretSources,o}function J1(e,t,n,r){return w0(q1(e,t,{...t,[n.path]:r}))}function Y1(e){let t=e.unit?.label;return t?` of ${t}`:``}function X1(e){let t=I1(e);if(!t)return`Allowed range is unavailable.`;let n=`${e.integer!==!1&&!K$(e)?`whole number`:`number`}${Y1(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`} ${q$(t.min)}.`:`Must be a ${n} between ${q$(t.min)} and ${q$(t.max)}.`}function Z1(e){return`Must be a multiple of ${J$(e,1)}.`}function Q1(e){return Math.abs(e-Math.round(e))<w1&&Number.isSafeInteger(Math.round(e))}function $1(e,t){return Number(Y$({...e,integer:!1,nullable:!1,zeroIsNull:!1},t))}function e0(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 X1(e);let r=Number(t);if(!Number.isFinite(r))return X1(e);if(e.zeroIsNull&&r<=0)return null;let i=$1(e,r);if(e.integer!==!1&&!Q1(i))return K$(e)?Z1(e):X1(e);let a=Number(Y$(e,r));return n.exclusiveMin&&a<=n.min||!n.exclusiveMin&&a<n.min||n.max!=null&&a>n.max?X1(e):null}function t0(e,t,n=!1){return n?X1(e):e0(e,t.trim())}function n0(e,t){let n=t.trim();if(e.nullable&&n===``)return null;let r=Number(n);return e.zeroIsNull&&r<=0?null:r}function r0(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?q$(t):String(e)}function i0(e,t){return Array.isArray(t)?e.valueKind===`posthog-projects`&&Y$(e,t)===null?b1:null:`Must be a list.`}function a0(e,t){let n={};for(let r of V$(e)){if(H$(r))continue;let e=null;r.control===`number`&&(e=e0(r,t[r.path])),r.control===`list`&&(e=i0(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 o0(V$(e),t,n),n}function o0(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(Y$(r,a))>Number(Y$(i,o))&&(n[r.id]=`Minimum must not exceed the maximum (${r0(o)}).`,n[i.id]=`Maximum must not be below the minimum (${r0(a)}).`)}}function s0(e,t){return V$(e).find(e=>e.id===t.maximumSettingId||e.maximumSettingId===t.id)}function c0(e,t,n){let r=s0(e,t);return a0([{id:`scoped`,level:`machine`,title:``,description:``,settings:r?[t,r]:[t]}],n)[t.id]??null}function l0(e,t){return e.control===`number`?n0(e,t):e.control===`list`?F1(t):t}function u0(e,t){return Y$(e,e.control===`list`?P1(t):t)}function d0(e){return e?.isDirty===!0}function f0(e,t,n,r,i,a=!1){if(!d0(n))return{kind:`unchanged`};let o=t.control===`number`?t0(t,r,a):null;if(o)return{kind:`invalid`,error:o};let s=l0(t,r);if(M1(Y$(t,s),u0(t,n.base)))return{kind:`unchanged`};let c=c0(e,t,{...i,[t.path]:s});return c?{kind:`invalid`,error:c}:{kind:`changed`,value:s}}function p0(e){return A1(e)?``:G$(e,e.defaultValue)}function m0(e,t){return M1(t,p0(e))}function h0(e){return e.presentation?e.presentation:(e.options?.length??0)<=x1?`segmented`:`select`}function g0(e){return Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:e===!0}function _0(e,t){return e.danger===!0&&!!e.warning&&g0(t)}function v0(e,t){return _0(e,t)}function y0(e){return e.title.charAt(0).toLowerCase()+e.title.slice(1)}function b0(e){return A1(e)?`Reset removes the stored ${y0(e)}. Anything that relies on it stops until a new one is saved.`:v0(e,p0(e))?e.warning??``:null}function x0(e){return[e.repos.join(`, `),e.trigger,e.actions.map(e=>e.type).join(`, `)].join(` `)}function S0(e){if(e==null)return[`No rules. Add workflows.rules to config.json.`];let t=On.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`,x0(e)].join(` `)):[`The workflows block is invalid, so no rule runs: ${t.error.issues[0]?.message??`unknown problem`}`]}function C0(e){let t=On.safeParse(e??{});return t.success?t.data.rules.map(e=>({id:e.id,name:e.name,isEnabled:e.enabled,summary:x0(e)})):[]}function w0(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 T0={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},E0=[{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`}],D0=2e4,$=null,O0=null,k0=null,A0=null,j0=null,M0=null,N0=null,P0=`all`,F0=!1,I0=null,L0=null,R0=!0,z0=Xj,B0=Yj,V0=Jj,H0=!1,U0=null,W0=`day`,G0=new Set,K0=bl({getAck:gc,setAck:_c,signature:()=>Cj($,k0),isLooking:()=>!yr(A0)}),q0=null,J0=null,Y0=null,X0=null,Z0=null,Q0=null,$0=null,e2=null,t2=Cf(()=>A0),n2=(e,t)=>gr(`usage`,e,t);function r2(e,t,n,r){let i=M(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=M(`span`,`usage-tile-value`,t);i.append(a,M(`span`,`usage-tile-label`,e));let o=n?M(`span`,`usage-tile-sub`,n):null;return o&&i.append(o),{tile:i,valueEl:a,subEl:o}}function i2(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function a2(e,t,n){let r=M(`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=M(`span`,`usage-meter-fill`);return r.append(i),o2(r,e),r}function o2(e,t){if(!e)return;let n=i2(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function s2(e,t,n,r){let i=M(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=M(`table`,`usage-table`),o=M(`thead`),s=M(`tr`);for(let i of e){let e=M(`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`,qj(t,a));let o=M(`button`,`usage-sort`,i.label);o.type=`button`,o.dataset.sortKey=a,o.addEventListener(`click`,()=>{U0={kind:`sort`,table:r,key:a},n(a)}),e.append(o),s.append(e)}o.append(s);let c=M(`tbody`);return a.append(o,c),i.append(a),{wrap:i,body:c}}function c2(e,t){for(let n of t){let t=M(`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 l2(e){let t=M(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(M(`span`,`usage-share-text`,Uk(e))),t;let n=M(`span`,`usage-share-bar`),r=M(`span`,`usage-share-fill`);return r.style.width=`${i2(e)}%`,n.append(r),t.append(n,M(`span`,`usage-share-text`,Uk(e))),t}function u2(){if(!q0?.isConnected)return;let e=Number($?.ts);q0.textContent=Number.isFinite(e)&&e>0?`Report ${xf(e)}`:``}function d2(){if(!J0?.isConnected)return;let e=Number(O0?.ts);J0.textContent=Number.isFinite(e)&&e>0?`Sessions ${xf(e)}`:``}function f2(){let e=rA($?.activeBlock);e&&(X0?.isConnected&&(X0.textContent=`${e.pct}%`),Z0?.isConnected&&(Z0.textContent=`${$k(e.remainingMinutes)} left`),Q0?.isConnected&&o2(Q0,e.pct))}function p2(e){let t=Nk.find(t=>t.value===e);return t?t.days:null}function m2(){let e=M(`div`,`usage-controls`),t=M(`label`,`usage-control`);t.append(M(`span`,`usage-control-label`,`Range`));let n=M(`select`,`usage-select`);for(let e of Nk){let t=M(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=P0,n.addEventListener(`change`,()=>{P0=n.value,Q2()}),t.append(n);let r=M(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>Q2({force:!0}));let i=M(`span`,`usage-refresh-status`,``);return $0=r,e2=i,J2(),e.append(t,r,i),e}function h2(){let e=n2(`Usage`,Jk($?.daily||[]));e.append(m2()),q0=M(`p`,`usage-meta`,``),e.append(q0),u2(),t2.onTick(u2);let t=Fj($);t&&e.append(M(`p`,`usage-warning`,t));let n=jj($?.pricing?.missing);return n&&e.append(M(`p`,`usage-warning`,n)),e}function g2(){if(!yj(k0))return null;let e=hj($?.totals),t=n2(`Plan limits`,e?`${xj(`official`)}, ${e}`:xj(`official`)),n=Oj(k0?.ts);if(n){let e=M(`p`,`usage-meta`,n);e.dataset.tone=`warn`,t.append(e)}let r=M(`div`,`usage-plan`);for(let e of _j){let t=vj(k0,e.key);t&&r.append(_2(e,t))}return t.append(r),Y0=M(`p`,`usage-meta`,``),t.append(Y0),v2(),t2.onTick(v2),t}function _2(e,t){let n=M(`div`,`usage-plan-window`),r=M(`div`,`usage-plan-head`);r.append(M(`span`,`usage-plan-label`,e.label)),r.append(M(`span`,`usage-plan-used`,wj(t)));let i=M(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(a2(t.pct,iA(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=Tj(t.resetsAtMs))};return a(),t2.onTick(a),n}function v2(){if(!Y0?.isConnected)return;let e=Ej(k0?.ts);Y0.textContent=e?`Plan ${e}`:``}function y2(){let e=SA($,k0),t=b2();if(e.length===0&&!t)return null;let n=n2(`Glimmervoid overhead`,e.length>0?mA:null);if(e.length>0){let t=M(`div`,`usage-tiles`);for(let n of e){let e=[CA(n),Vk(n.costUSD)].filter(Boolean).join(`, `);t.append(r2(`${n.label}, share of Claude use`,Uk(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=wA(t);e&&n.append(M(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(M(`p`,`usage-meta`,`Selected range by lane. ${pA}`)),n.append(t)),n}function b2(){if(!vA($))return null;let e=gA($),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=s2([{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=M(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),c2(e,[{text:hA(n.lane),className:`usage-lane-cell`},{text:Vk(n.costUSD),numeric:!0},{text:Hk(n.tokens),numeric:!0},{text:DA(n.sessions),numeric:!0},{node:l2(Kk(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function x2(){let e=$?.activeBlock,t=$?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=hj($?.totals),i=n2(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(M(`p`,`usage-empty`,`No active block.`));let e=S2();return e&&i.append(e),i}let a=Sj($,k0),o=M(`div`,`usage-tiles`);o.append(r2(`block tokens`,Hk(e.tokens??0),Vk(e.costUSD??0),a).tile);for(let t of tA(e.burn))o.append(r2(t.label,t.value,t.sub,a).tile);let s=rA(e);if(s){let e=r2(`elapsed`,`${s.pct}%`,`${$k(s.remainingMinutes)} left`);X0=e.valueEl,Z0=e.subEl,o.append(e.tile)}i.append(o),s&&(Q0=a2(s.pct,`ok`,`Elapsed share of the current block window`),i.append(Q0),t2.onTick(f2));let c=nA(e.projection);if(c){let e=M(`p`,`usage-projection`,c);e.dataset.tone=a,i.append(e)}let l=S2();l&&i.append(l);let u=cA($?.tokenLimit);if(!u)return i;let d=oA($?.tokenLimit),f=Sj($);i.append(a2(d,f,`Share of the largest completed block seen, estimated`));let p=M(`p`,`usage-meta`,u);p.dataset.tone=f,i.append(p),i.append(M(`p`,`usage-provenance`,xj(`estimated`)));let m=lA(e.projection,$?.tokenLimit);if(m){let e=M(`p`,`usage-meta`,m);e.dataset.tone=f,i.append(e)}return i}function S2(){let e=$?.anomaly;if(!sj(e))return null;let t=M(`p`,`usage-meta`,aj(e));return t.dataset.tone=oj(e),t}function C2(){let e=rM($?.blocks);if(e.length===0)return null;let t=hj($?.totals),n=n2(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=M(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=M(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(M(`span`,`usage-block-label`,eA(t.startTs)));let n=M(`span`,`usage-block-bar`),a=M(`span`,`usage-block-fill`);a.style.width=`${i2(Kk(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(M(`span`,`usage-block-value`,`${Hk(t.tokens)} ${Vk(t.costUSD)}`)),r.append(e)}return n.append(r),n}function w2(){let e=$?.totals||{},t=nM($?.daily,Xk($)),n=n2(`Totals`,[jk,$?.tz?`TZ ${$.tz}`:``].filter(Boolean).join(` `)),r=Sj($,k0),i=M(`div`,`usage-tiles`);i.append(r2(`today`,Hk(t?.tokens??0),Vk(t?.costUSD??0),r).tile),i.append(r2(`range total`,Hk(e.tokens??0),Vk(e.costUSD??0)).tile);let a=EA($);a&&i.append(r2(a.label,a.value,a.sub).tile),n.append(i);let o=T2(e);o&&n.append(o);let s=pj(e)?fj(e):[];if(s.length>0){let e=M(`div`,`usage-tiles usage-vendor-tiles`);for(let t of s)e.append(r2(t.label,Hk(t.tokens),Vk(t.costUSD)).tile);n.append(e)}return J0=M(`p`,`usage-meta`,``),n.append(J0),d2(),t2.onTick(d2),n}function T2(e){let t=dA(e);if(t.length===0)return null;let n=M(`div`,`usage-compo`),r=M(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=M(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=M(`div`,`usage-compo-legend`);for(let e of t){let t=M(`span`,`usage-compo-item`),n=M(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,M(`span`,`usage-compo-label`,e.label),M(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function E2(){let e=$?.savings;if(!AA(e))return null;let t=n2(`Savings`,``),n=M(`div`,`usage-tiles`),r=jA(e);r&&n.append(r2(`rtk compression`,r.value,r.sub).tile);let i=MA(e);return i&&n.append(r2(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function D2(){let e=NA($);if(e.length===0)return null;let t=n2(`Budgets`,`your own ceilings`),n=M(`div`,`usage-budgets`),r=ep(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=M(`div`,`usage-budget`),r=M(`div`,`usage-budget-head`);r.append(M(`span`,`usage-budget-label`,PA(t.scope))),r.append(M(`span`,`usage-budget-value`,FA(t))),r.append(M(`span`,`usage-budget-pct`,Uk(IA(t)))),e.append(r),e.append(a2(IA(t),t.tone,LA(t))),n.append(e)}return t.append(n),t}function O2(){let e=$?.daily||[],t=W0,n=tM(JA(e,t),z0),r=RA.find(e=>e.value===t)?.label||`Day`,i=n2(`Over time`,[ZA(e)].filter(Boolean).join(`, `));if(i.append(k2()),n.length===0)return i.append(M(`p`,`usage-empty`,`No usage.`)),i;let a=j2(e);a&&i.append(a);let{wrap:o,body:s}=s2([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],z0,e=>{z0=Kj(z0,e),B2()},`day`);for(let e of n){let n=String(e.day??``),r=M(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=eM(e.models),a=`${t}:${n}`,o=M2(a,i.length);c2(r,[{node:A2(e,t),title:n},{text:Hk(e.tokens),numeric:!0},{text:Vk(e.costUSD),numeric:!0},{node:o,className:`usage-toggle-cell`}]),s.append(r),i.length!==0&&G0.has(a)&&s.append(N2(i))}return i.append(o),i}function k2(){let e=M(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of RA){let n=M(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===W0?`true`:`false`),n.addEventListener(`click`,()=>{W0!==t.value&&(W0=t.value,U0={kind:`period`,view:t.value},B2())}),e.append(n)}return e}function A2(e,t){let n=M(`span`,`usage-period-cell`);return n.append(M(`span`,null,XA(e.day,t))),e.source===`history`&&n.append(M(`span`,`usage-history-tag`,`history`)),n}function j2(e){let{cells:t,max:n}=tj(e,{today:Xk($)});if(t.length===0||n<=0)return null;let r=M(`div`,`usage-heatmap-scroll`),i=M(`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=M(`div`,`usage-heatmap-days`);for(let e of $A)a.append(M(`span`,`usage-heatmap-day`,e));for(let e of t){let t=M(`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=nj(e),i.append(t)}return r.append(a,i),r}function M2(e,t){if(t===0)return null;let n=M(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,G0.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{U0={kind:`day`,day:e},G0.has(e)?(G0.delete(e),B2()):(G0.add(e),B2())}),n}function N2(e){let t=M(`tr`,`usage-row-breakdown`),n=M(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=M(`span`,`usage-model-chip`);e.append(M(`span`,`usage-model-name`,Vj(t)),M(`span`,`usage-model-value`,`${Hk(t.tokens)} ${Vk(t.costUSD)}`)),n.append(e)}return t.append(n),t}function P2(e,t){let n=M(`span`,`usage-model-name-wrap`),r=dj(e,t);return r&&n.append(M(`span`,`usage-vendor-tag`,r)),n.append(M(`span`,null,Vj(e))),n}function F2(){let e=eM($?.models,B0),t=$?.totals||{},n=Wk(t),r=n2(`By model`,Gk(n));if(e.length===0)return r.append(M(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=s2([{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`}],B0,e=>{B0=Kj(B0,e),B2()},`model`);for(let r of e){let e=M(`tr`,`usage-row`);c2(e,[{node:P2(r,t),className:`usage-model-cell`,title:Vj(r)},{text:Hk(r.tokens),numeric:!0},{text:Vk(r.costUSD),numeric:!0},{node:l2(Kk(r[n],t[n])),className:`usage-share-cell`},{text:Hk(r.input),numeric:!0},{text:Hk(r.output),numeric:!0},{text:Hk(r.cacheCreate),numeric:!0},{text:Hk(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function I2(){let e=Zj($?.sessions,V0),t=Qj(e,H0),n=$?.totals||{},r=Wk(n),i=n2(`By session`,Gk(r));if(e.length===0)return i.append(M(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:o}=s2([{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`}],V0,e=>{V0=Kj(V0,e),B2()},`session`);for(let e of t.rows){let t=M(`tr`,`usage-row`);zj(e)&&(t.dataset.managed=`true`);let i=Bj(e),a=M(`span`,`usage-ago`,``);c2(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:Hk(e.tokens),numeric:!0},{text:Vk(e.costUSD),numeric:!0},{node:l2(Kk(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),t2.track(a,Number(e.lastTs),xf),o.append(t)}return i.append(a),e.length>10&&i.append(L2(t.hiddenCount)),i}function L2(e){let t=M(`div`,`usage-overflow`),n=$j(e);n&&t.append(M(`p`,`usage-meta`,n));let r=M(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,H0?`true`:`false`),r.addEventListener(`click`,()=>{U0={kind:`sessions-toggle`},H0=!H0,B2()}),t.append(r),t}function R2(){let e=n2(`Not available`,``);return e.append(M(`p`,`usage-empty`,Pj($))),e.append(M(`p`,`usage-empty`,Mk)),e}function z2(){q0=null,J0=null,Y0=null,X0=null,Z0=null,Q0=null,$0=null,e2=null}function B2({force:e=!1}={}){if(!A0||!e&&yr(A0))return;let t=A0.parentElement,n=t?t.scrollTop:0;t2.reset(),z2(),A0.textContent=``,U2(),t&&(t.scrollTop=n),V2()}function V2(){let e=U0;if(U0=null,!e)return;let t=H2(e);if(!t||!A0)return;let n=A0.querySelector(t);n instanceof HTMLElement&&n.focus()}function H2(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 U2(){if(!A0)return;A0.append(h2());let e=g2();if(Ij($)){e&&A0.append(e),A0.append(R2());return}if(!$){e&&A0.append(e),A0.append(M(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,D2()].filter(e=>e!==null);A0.append(W2(`usage-band-now`,x2(),t,{sideFirst:!0}));let n=[E2()].filter(e=>e!==null);A0.append(W2(`usage-band-spend`,w2(),n));let r=[C2()].filter(e=>e!==null);A0.append(W2(`usage-band-trend`,O2(),r));let i=y2();i&&A0.append(i),A0.append(F2(),I2())}function W2(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=M(`div`,`usage-band ${e}`),a=M(`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 G2(){j0&&j0(K0.refresh())}function K2(){K0.acknowledge(),G2()}function q2(){return R0?F0?`Refreshing`:L0??``:$?`${G} The figures below are from before the connection dropped.`:G}function J2(){$0&&($0.disabled=F0),e2&&(e2.textContent=q2(),!R0||!F0&&L0!==null?e2.dataset.tone=`error`:delete e2.dataset.tone)}function Y2(e){F0=e,J2(),I0&&=(clearTimeout(I0),null),e&&(I0=setTimeout(()=>{I0=null,F0=!1,L0=`Usage did not answer within ${Math.round(D0/1e3)} s. Refresh to try again.`,J2()},D0))}function X2(e){j0=e,G2()}function Z2(e){M0=e}function Q2({force:e=!1}={}){if(!M0)return;N0=id(`usage`);let t={type:`request-usage-report`,requestId:N0};e&&(t.force=!0);let n=p2(P0);n!==null&&(t.days=n),L0=null,Y2(!0),!M0(t)&&(L0=G,Y2(!1))}function $2(e){R0=e,J2()}function e4(e){if(A0)return A0;let t=M(`div`,`usage-content`);return e.appendChild(t),A0=t,t2.ensure(),B2({force:!0}),t}function t4(){B2({force:!0})}function n4(e){O0=e,$&&!Ij($)&&J0?.isConnected?d2():B2()}function r4(e){k0=e,B2(),G2()}function i4(e){Lj(e,N0)&&(L0=null,Y2(!1),$=e,B2(),G2())}function a4(){let e=$?.pricing||(O0?{source:O0.pricingSource}:null),t=Aj(e?.fetchedAt),n=[kj(e,t!==null&&t>0?xf(t):``)],r=Pj($);r&&n.push(r);let i=Nj($?.scan);return i&&n.push(i),n}var o4=Object.freeze({sounds:()=>Fy(),themes:rb}),s4=2200,c4=1600,l4=`browser-appearance`,u4=`browser-shortcuts`,d4=`lanes-features`,f4=Object.freeze({id:d4,level:`lanes`,title:`Features`,description:`Optional tabs, each hidden until its own toggle is on.`,settings:[]}),p4=`flying-animals`,m4=Object.freeze({ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1});function h4(e){if(!e.optionsFrom)return e;let t=o4[e.optionsFrom]?.()??[];return{...e,options:t.map(e=>({value:e.id,label:e.label}))}}function g4(){let e=P$.sections.map(e=>({...e,settings:e.settings.map(h4)})),t=e.findIndex(e=>e.level===`lanes`);return Object.freeze([...e.slice(0,t),f4,...e.slice(t)])}var _4=g4(),v4=!1,y4=null,b4=null,x4=null,S4=null,C4=null,w4=null,T4=null,E4=null,D4=_4[0],O4={},k4={},A4=new Map,j4=new Map,M4=new Map,N4=new WeakMap,P4=Promise.resolve(),F4=new Map,I4=``,L4=null,R4=null,z4=Su,B4=()=>{},V4=null,H4=!1,U4=!1,W4=null,G4=new Set,K4=new Map;function q4(){return{themeId:Bs(),flyingAnimalsEnabled:Hs(),...Mc(),soundEnabled:As(),soundId:Iy(Ms()),notificationsEnabled:Ps(),sessionUsageChips:Is(),phoneArrowPad:Rs()}}function J4(e){k4=K1(_4,{...e,prefs:q4()})}function Y4(e){return M4.has(e.id)?M4.get(e.id):k4[e.path]}function X4(e){return[e,...V1(_4,e.id)]}function Z4(e){return X4(e).flatMap(e=>e.settings)}function Q4(e){return _4.find(t=>t.settings.some(t=>t.id===e.id))??D4}function $4(e,t=null){history.replaceState(history.state,``,Zf(e,t))}function e3(e){requestAnimationFrame(()=>{let t=document.getElementById(e),n=t?.closest(`.settings-view-advanced-panel`);n&&(v4=!0,n.hidden=!1,E4?.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 t3(e){for(let t of Sp(Cp)){let n=M(`div`,`shortcut-group`);n.appendChild(M(`div`,`shortcut-group-title`,t.title));let r=M(`dl`,`shortcut-rows`);for(let e of t.items){let t=M(`dt`,`shortcut-keys`);e.combos.forEach((e,n)=>{n>0&&t.appendChild(M(`span`,`shortcut-sep`,`/`)),wp(t,e)}),r.append(t,M(`dd`,`shortcut-label`,e.label))}n.appendChild(r),e.appendChild(n)}}var n3=[];function r3(e){n3=e}function i3(e){return n3.find(t=>t.gate!==void 0&&`fromSettings`in t.gate&&t.gate.fromSettings===e)?.label}function a3(e){let t=M(`ul`,`settings-view-stack settings-features`);for(let e of E0){let n=_4.find(t=>t.id===e.sectionId),r=s3(e.settingId),i=i3(T0[e.rule]);if(!n||!r||!i)continue;let a=Y4(r)===!0,o=M(`li`,`settings-feature`),s=M(`div`,`settings-feature-head`);s.append(M(`span`,`settings-feature-name`,i),l6(`feature`,a?`On`:`Off`)),o.append(s,M(`p`,`settings-view-section-description`,n.description),ep(e.sectionId,e.settingId,r.title)),t.appendChild(o)}e.appendChild(t)}function o3(e){let t=M(`div`,`settings-about`),n=M(`span`,`settings-about-version`,`GLIMMERVOID `);n.appendChild(M(`span`,`settings-about-v`,`v0.40.1`));let r=M(`span`,`settings-about-links`),i=M(`a`,`settings-about-link`,`GitHub`);i.href=`https://github.com/${jQ}`,i.target=`_blank`,i.rel=`noopener`;let a=M(`a`,`settings-about-link`,`Changelog`);a.href=`https://github.com/${jQ}/blob/main/CHANGELOG.md`,a.target=`_blank`,a.rel=`noopener`,r.append(i,a),t.append(n,r),e.appendChild(t)}function s3(e){return _4.flatMap(e=>e.settings).find(t=>t.id===e)??null}function c3(e){if(k4[`pref:soundEnabled`]===e)return;k4[`pref:soundEnabled`]=e;let t=s3(`alert-sounds-enabled`);t&&S6(t)}var l3={"pref:flyingAnimalsMinGapSeconds":e=>wc(Number(e)),"pref:flyingAnimalsMaxGapSeconds":e=>Tc(Number(e)),"pref:flyingAnimalsMinDurationSeconds":e=>Ec(Number(e)),"pref:flyingAnimalsMaxDurationSeconds":e=>Dc(Number(e)),"pref:flyingAnimalsScale":e=>Oc(Number(e)),"pref:flyingAnimalsOnPhone":e=>kc(e===!0)};function u3(e,t){if(e.path===`pref:sessionUsageChips`){Ls(t===!0),eb(t===!0);return}if(e.path===`pref:phoneArrowPad`){zs(t===!0),tb(t===!0);return}if(e.path===`pref:themeId`){Vs(String(t)),$y(String(t));return}if(e.path===`pref:flyingAnimalsEnabled`){Us(t===!0),kQ(t===!0);return}let n=l3[e.path];n?(n(t),kQ(Hs())):e.path===`pref:soundEnabled`?dY(t===!0):e.path===`pref:soundId`?(Ns(String(t)),qy(String(t))):e.path===`pref:notificationsEnabled`&&(Fs(t===!0),t===!0&&Bf().then(()=>S6(e,{force:!0})))}function d3(e,t){let n=j4.get(e.id);n!==void 0&&clearTimeout(n),j4.delete(e.id),t&&A4.set(e.id,t),t||A4.delete(e.id),C6(e)}function f3(e){d3(e,{tone:`saved`,text:`Saved`}),j4.set(e.id,window.setTimeout(()=>d3(e,null),s4))}function p3(e,t){F4.delete(e.id),e.path.startsWith(`pref:`)?(k4[e.path]=t,u3(e,t),S6(e),f3(e)):M4.has(e.id)&&JSON.stringify(M4.get(e.id))===JSON.stringify(t)||(M4.set(e.id,t),d3(e,{tone:`saving`,text:`Saving`}),P4=P4.then(()=>m3(e,t)))}async function m3(e,t){let n=J1(_4,k4,e,t);if(Object.keys(n).length===0)M4.delete(e.id),d3(e,null),S6(e);else{d3(e,{tone:`saving`,text:`Saving`});try{let r=await ad(`update-settings`,{settings:n});if(M4.get(e.id)===t&&M4.delete(e.id),r.type===`settings-error`){d3(e,{tone:`error`,text:String(r.message)}),S6(e,{force:!0});return}if(r.type!==`settings-updated`){d3(e,{tone:`error`,text:`The server did not confirm the save.`}),S6(e,{force:!0});return}t8(r.settings),f3(e)}catch(n){M4.get(e.id)===t&&M4.delete(e.id),d3(e,{tone:`error`,text:n?.message||`Failed to save the setting.`}),S6(e,{force:!0})}}}function h3(e,t){t&&F4.set(e.id,t),t||F4.delete(e.id),C6(e)}function g3(e,t){if(!t.exclusiveMin)return t.min;if(e.integer!==!1)return t.min+1}function _3(e){return e?`On`:`Off`}function v3(e){let t=M(`div`,`settings-view-toggle-wrap`),n=M(`label`,`settings-view-toggle`),r=M(`input`,`settings-view-checkbox`);r.type=`checkbox`,r.checked=Y4(e)===!0,e.id===`desktop-notifications`&&!Rf()&&(r.checked=!1,r.disabled=!0),r.setAttribute(`aria-labelledby`,e.id);let i=M(`span`,`settings-view-toggle-state`,_3(r.checked));return r.addEventListener(`change`,()=>{let t=r.checked;v0(e,t)?(r.checked=!1,i.textContent=_3(!1),Wd({title:e.title,message:e.warning??``,confirmLabel:`Turn on`,danger:!0,onConfirm:()=>p3(e,!0)})):(i.textContent=_3(t),p3(e,t))}),n.append(r,i),t.appendChild(n),t}function y3(e,t,n){e.addEventListener(`blur`,t),e.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),t()):e.key===`Escape`&&(e.preventDefault(),n())})}function b3(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&[`text`,`number`,`password`].includes(e.type)}function x3(e,t){N4.set(t,{base:Y4(e),isDirty:!1}),t.addEventListener(`input`,()=>{let e=N4.get(t);e&&(e.isDirty=!0)})}function S3(e,t,n){t.value!==n&&(t.value=n),N4.set(t,{base:Y4(e),isDirty:!1}),h3(e,null)}function C3(e,t,n,r=!1){let i=N4.get(t);if(!i)return;let a=f0(_4,e,i,t.value,k4,r);a.kind===`invalid`?h3(e,a.error):a.kind===`unchanged`?S3(e,t,n):v0(e,a.value)?(S3(e,t,n),Wd({title:e.title,message:e.warning??``,confirmLabel:`Save`,danger:!0,onConfirm:()=>p3(e,a.value)})):(N4.set(t,{base:a.value,isDirty:!1}),p3(e,a.value))}function w3(e){let t=M(`input`,`settings-view-input`);t.type=e.control===`password`?`password`:`text`;let n=()=>String(Y4(e)??``);t.value=n(),e.control===`password`&&(t.value=``,t.placeholder=n()?`Configured`:`Not configured`);let r=O1(e,O4);return r&&(t.disabled=!0,t.setAttribute(`aria-description`,`Supplied by ${r}`)),t.autocomplete=`off`,t.spellcheck=!1,t.setAttribute(`aria-labelledby`,e.id),x3(e,t),y3(t,()=>{if(e.control===`password`){let n=t.value;if(n===``)return;S3(e,t,``),p3(e,n)}else C3(e,t,n())},()=>S3(e,t,e.control===`password`?``:n())),t}function T3(e){let t=M(`input`,`settings-view-input`),n=I1(e);t.type=`number`;let r=()=>r0(Y4(e));t.value=r(),t.step=e.integer===!1?String(e.step??`any`):`1`;let i=n?g3(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),x3(e,t),y3(t,()=>C3(e,t,r(),t.validity.badInput),()=>S3(e,t,r()));let a=e.unit?.label;if(!a)return t;let o=M(`div`,`settings-view-number`),s=M(`span`,`settings-view-unit`,a);return s.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-description`,a),o.append(t,s),o}function E3(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 D3(e,t,n){n!==String(Y4(e))&&(E3(t,n),p3(e,n),E3(t,String(Y4(e))))}function O3(e){let t=M(`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=M(`button`,`settings-view-segment`,r.label);n.type=`button`,n.dataset.value=r.value,n.setAttribute(`role`,`radio`),n.addEventListener(`click`,()=>D3(e,t,r.value)),t.appendChild(n)}return t.addEventListener(`keydown`,r=>{let i=m4[r.key];if(!i||n.length===0)return;r.preventDefault();let a=Math.max(0,n.findIndex(t=>t.value===String(Y4(e)))),o=n[(a+i+n.length)%n.length];D3(e,t,o.value),t.querySelector(`[data-value="${CSS.escape(o.value)}"]`)?.focus()}),E3(t,String(Y4(e))),t}function k3(e){let t=M(`select`,`settings-view-input`);t.setAttribute(`aria-labelledby`,e.id);for(let n of e.options??[]){let e=M(`option`,null,n.label);e.value=n.value,t.appendChild(e)}return t.value=String(Y4(e)),t.addEventListener(`change`,()=>p3(e,t.value)),t}function A3(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 j3(e){let t=M(`textarea`,`settings-view-input settings-view-list-input`),n=()=>P1(Y4(e)),r=()=>n().join(`
|
|
147
|
-
`);t.rows=3,t.value=r(),t.autocomplete=`off`,t.spellcheck=!1,t.placeholder=e.listPlaceholder??``,t.setAttribute(`aria-labelledby`,e.id),x3(e,t),t.addEventListener(`blur`,()=>C3(e,t,r())),t.addEventListener(`keydown`,n=>{n.key===`Escape`?(n.preventDefault(),S3(e,t,r())):n.key!==`Enter`||n.shiftKey||(n.preventDefault(),C3(e,t,r()))});let i=M(`div`,`settings-view-list`);return i.append(t,M(`span`,`settings-view-list-hint`,A3(e,n()))),i}function M3(e){let t=M(`div`,`settings-view-projects`),n=Y4(e),r=new Set(Array.isArray(n)?n:[]),i=Array.isArray(O4.projectChoices)?O4.projectChoices:[];i.length===0&&t.appendChild(M(`div`,`settings-empty`,`No configured projects are available.`));for(let n of g1(i,[...r])){let i=M(`label`,`settings-view-project-choice`),a=M(`input`,`settings-view-checkbox`);a.type=`checkbox`,a.checked=r.has(n.id),a.addEventListener(`change`,()=>{let t=Y4(e),r=new Set(Array.isArray(t)?t:[]);a.checked&&r.add(n.id),a.checked||r.delete(n.id),p3(e,[...r])}),i.append(a,document.createTextNode(n.name)),t.appendChild(i)}return t}function N3(e,t,{isPrimary:n=!1,isEnabled:r=!0}={}){let i=M(`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 P3(e){let t=M(`span`,`settings-update-action-status`,e??``);return t.setAttribute(`role`,`status`),t}function F3(e){let t=wu(z4,e);t!==z4&&(z4=t,a8())}function I3(){F3(K({type:`update-apply`})?`request-sent`:`request-unsent`)}function L3(){V4=Date.now();let e=K({type:`update-check`});U4=e,W4=e?null:G,a8()}function R3(){return U4?`Checking for updates.`:W4}function z3(){L4?(H4=!1,Uu({status:L4,checkForUpdates:O4.checkForUpdates,now:Date.now(),lastAutoCheckAt:V4})&&L3()):H4=!0}function B3(e){return e===`update`?N3(`Update`,I3,{isPrimary:!0}):e===`restart`?N3(`Restart`,B4,{isPrimary:!0}):N3(`Check for updates`,L3,{isEnabled:!U4})}function V3(){let e=Ou({status:L4,journal:R4,request:z4}),t=M(`div`,`settings-update-actions`);if(e.actions.length>0){let n=M(`div`,`settings-update-buttons`);n.append(...e.actions.map(B3)),t.appendChild(n)}let n=R3();return n&&t.appendChild(P3(n)),e.note&&t.appendChild(P3(e.note)),e.command&&t.appendChild(M(`code`,`settings-update-command`,e.command)),t}function H3(e,...t){let n=M(`div`,`settings-update-fact`);return n.append(M(`span`,`settings-update-fact-label`,e),...t),n}function U3(){let e=Lu(R4);if(!e)return null;let t=M(`div`,`settings-update-progress`);t.dataset.state=e.state,t.setAttribute(`role`,`status`),e.terminalLine&&t.appendChild(M(`div`,`settings-update-terminal`,e.terminalLine));let n=M(`ol`,`settings-update-steps`);for(let t of e.steps){let e=M(`li`,`settings-update-step`);e.dataset.status=t.status,e.append(M(`span`,`settings-update-step-state`,t.status),M(`span`,`settings-update-step-label`,t.label)),n.appendChild(e)}if(t.appendChild(n),e.outputTail.length===0)return t;let r=M(`pre`,`settings-update-output`,e.outputTail.join(`
|
|
148
|
-
`));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(M(`div`,`settings-update-output-label`,i),r),t}function W3(){let e=Hu(L4),t=[e.label];if(e.behind&&t.push(M(`span`,`settings-update-behind`,e.behind)),e.releaseUrl){let n=M(`a`,`settings-link`,`View release`);n.href=e.releaseUrl,n.target=`_blank`,n.rel=`noopener noreferrer`,t.push(n)}return H3(`Latest`,...t)}function G3(){let e=M(`div`,`settings-view-status-block settings-update-status`),t=Bu(L4,R4),n=M(`div`,`settings-update-summary`,t.headline);n.dataset.tone=t.tone,e.appendChild(n),e.appendChild(H3(`Running`,Vu(L4))),L4?.updateAvailable&&e.appendChild(W3());let r=typeof L4?.lastCheckAt==`number`?L4.lastCheckAt:null,i=H3(`Last checked`,Wu({status:L4,checkForUpdates:O4.checkForUpdates,relativeTime:xf(r)}));r&&(i.title=new Date(r).toLocaleString()),e.appendChild(i),e.appendChild(V3());let a=U3();return a&&e.appendChild(a),e}function K3(e){return e===null?`not probed yet`:e?`resolved`:`not found on PATH`}function q3(){let e=Array.isArray(O4.customAgents)?O4.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} ${K3(e.resolvable)}`})}function J3(){let e=M(`div`,`settings-view-status-block`);e.appendChild(M(`div`,`settings-section-title`,`Declared agents`));for(let t of q3())e.appendChild(M(`div`,`settings-readonly`,t));return e}function Y3(e){K4.set(e,{tone:`ok`,text:`Saved`}),window.setTimeout(()=>{K4.get(e)?.tone===`ok`&&(K4.delete(e),i8())},s4)}async function X3(e,t){G4.add(e.id),K4.delete(e.id),i8();try{let n=await ad(`update-settings`,{settings:{workflows:{rules:[{id:e.id,enabled:t}]}}},{timeoutMs:q});if(G4.delete(e.id),n.type===`settings-error`&&K4.set(e.id,{tone:`error`,text:String(n.message)}),n.type===`settings-updated`){Y3(e.id),t8(n.settings);return}}catch(t){K4.set(e.id,{tone:`error`,text:_d(t,q)})}G4.delete(e.id),i8()}function Z3(e){let t=hd(`settings-workflow-rule-status`);if(G4.has(e.id))return t.show(`busy`,`Saving`),t.element;let n=K4.get(e.id);return n&&t.show(n.tone,n.text),t.element}function Q3(e){let t=M(`div`,`settings-view-toggle-wrap`),n=M(`label`,`settings-view-toggle`),r=M(`input`,`settings-view-checkbox`);return r.type=`checkbox`,r.checked=e.isEnabled,r.disabled=G4.has(e.id),r.setAttribute(`aria-label`,`Run rule ${e.name}`),r.addEventListener(`change`,()=>{X3(e,r.checked)}),n.append(r,M(`span`,`settings-view-toggle-state`,_3(e.isEnabled)),M(`span`,`settings-readonly`,`${e.name} ${e.summary}`)),t.append(n,Z3(e)),t}function $3(){let e=M(`div`,`settings-view-status-block`);e.appendChild(M(`div`,`settings-section-title`,`Rules`));let t=C0(O4.workflows);if(t.length>0){for(let n of t)e.appendChild(Q3(n));return e}for(let t of S0(O4.workflows))e.appendChild(M(`div`,`settings-readonly`,t));return e}function e6(){let e=M(`div`,`settings-view-status-block`);e.appendChild(M(`div`,`settings-section-title`,`Last report`));for(let t of a4())e.appendChild(M(`div`,`settings-readonly`,t));return e}function t6(e){return e.status===`update-actions`?G3():e.status===`custom-agents`?J3():e.status===`workflows`?$3():M(`div`,`settings-readonly`,`Not available`)}function n6(e){return e.control===`readonly`?t6(e):e.control===`toggle`?v3(e):e.control===`number`?T3(e):e.control===`select`?h0(e)===`segmented`?O3(e):k3(e):e.control===`list`?j3(e):e.control===`projects`?M3(e):w3(e)}function r6(e){let t=O1(e,O4);return t?`Supplied by ${t}. Change the server environment and restart to replace this credential.`:e.status!==`rtk-install`||Y4(e)!==!0||O4.rtkAvailable?``:k1(O4)}function i6(e){if(e.control===`readonly`)return null;if(e.status===`usage-last-report`){let e=e6();return e.classList.add(`settings-view-status-slot`),e}if(e.id===`desktop-notifications`)return c6(e);if(e.status===`telegram-delivery`)return s6();let t=r6(e);return t?M(`div`,`settings-view-warning settings-view-status-slot`,t):null}function a6(){let e=ho.safeParse(O4.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 o6(e){e.replaceChildren(...a6().map(e=>M(`p`,`settings-view-warning`,e)))}function s6(){let e=M(`div`,`settings-view-status-slot settings-telegram-delivery`),t=M(`div`,`settings-telegram-delivery-lines`);o6(t);let n=M(`button`,`btn-dialog btn-dialog-cancel`,`Send test message`);n.type=`button`;let r=hd(`settings-telegram-test-status`);n.addEventListener(`click`,async()=>{n.disabled=!0;let e=await vd(`telegram-test`,{},r,{busyText:`Sending a test message to Telegram.`});n.disabled=!1,e?.type===`telegram-test-result`&&(O4={...O4,telegramDelivery:e.telegramDelivery},o6(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=M(`div`,`settings-telegram-test`);return i.append(n,r.element),e.append(t,i),e}function c6(e){let t=Uf(()=>S6(e,{force:!0}));return t.element.hidden?null:(t.element.classList.add(`settings-view-status-slot`),t.element)}function l6(e,t){let n=M(`span`,`settings-view-chip`,t);return n.dataset.chip=e,n}function u6(e,t){let n=br(e);return n?n.then(()=>t,()=>`Copy failed`):Promise.resolve(`Copy failed`)}function d6(e,t,{copiedText:n,textToCopy:r}){let i=M(`span`,`settings-view-copy-status`);i.setAttribute(`role`,`status`),t.type=`button`,t.addEventListener(`click`,async()=>{i.textContent=await u6(r(),n),setTimeout(()=>{i.textContent=``},c4)}),e.append(t,i)}function f6(e){let t=M(`div`,`settings-view-setting-heading`),n=Q4(e),r=M(`h2`,`settings-view-setting-title`,e.title);r.id=e.id,r.addEventListener(`click`,()=>$4(n.id,e.id));let i=M(`button`,`settings-view-copy-link`,`#`);return i.setAttribute(`aria-label`,`Copy link`),t.appendChild(r),d6(t,i,{copiedText:`Link copied`,textToCopy:()=>new URL(Zf(n.id,e.id),location.href).href}),t}function p6(e){let t=M(`div`,`settings-view-chips`);return t.append(l6(`scope`,D1[e.scope]),l6(`effect`,E1[e.takesEffect])),t}function m6(e){return e.control===`readonly`||O1(e,O4)?!1:!m0(e,Y4(e))}function h6(e){let t=M(`div`,`settings-view-control-foot`),n=M(`span`,`settings-view-save-status`);n.setAttribute(`role`,`status`);let r=M(`button`,`settings-view-reset`,`Reset`);return r.type=`button`,r.title=`Reset to the default value`,r.addEventListener(`click`,()=>{let t=p0(e),n=b0(e);n===null?p3(e,t):Wd({title:e.title,message:n,confirmLabel:`Reset`,danger:!0,onConfirm:()=>p3(e,t)})}),t.append(n,r),t}function g6(e,t){let n=e.querySelector(`.settings-view-save-status`),r=A4.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=!m6(t));let a=e.querySelector(`.settings-view-field-error`),o=F4.get(t.id);a&&!o&&a.remove(),a&&o&&(a.textContent=o),!a&&o&&e.querySelector(`.settings-view-setting-control`)?.appendChild(M(`div`,`settings-view-field-error`,o))}function _6(e){let t=M(`article`,`settings-view-setting`);t.dataset.settingId=e.id,e.control===`readonly`&&(t.dataset.readout=`true`);let n=M(`div`,`settings-view-setting-text`);n.append(f6(e),M(`p`,`settings-view-setting-description`,e.description),p6(e));let r=M(`div`,`settings-view-setting-control`);r.appendChild(n6(e)),e.control!==`readonly`&&r.appendChild(h6(e)),t.append(n,r),_0(e,Y4(e))&&t.appendChild(M(`div`,`settings-view-warning settings-warning`,e.warning));let i=i6(e);return i&&t.appendChild(i),g6(t,e),t}function v6(e){return E4?.querySelector(`[data-setting-id="${e.id}"]`)??null}function y6(e){let t=e.querySelector(`.settings-view-setting-control`);t&&(t.querySelector(`[role="radio"][aria-checked="true"]`)??t.querySelector(`input:not([disabled]), textarea:not([disabled]), select:not([disabled]), button:not([disabled])`))?.focus()}function b6(e,t){if(!b3(e)||!b3(t))return;e.disabled=t.disabled,e.placeholder=t.placeholder;let n=N4.get(t);n&&!d0(N4.get(e))&&(N4.set(e,{base:n.base,isDirty:!1}),e.value!==t.value&&(e.value=t.value))}function x6(e,t,n){if(e===n){b6(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)?x6(i,a,n):i.replaceWith(a):e.appendChild(a)}for(let e of r.slice(i.length))e.remove()}function S6(e,{force:t=!1}={}){let n=v6(e);if(!n)return;let r=document.activeElement,i=n.contains(r),a=i&&!t&&b3(r)?r:null;(!a||!d0(N4.get(a)))&&F4.delete(e.id);let o=_6(e);a?x6(n,o,a):(n.replaceWith(o),i&&y6(o))}function C6(e){let t=v6(e);t&&g6(t,e)}function w6(e){v6(e)?.querySelector(`.settings-view-setting-control`)?.replaceChildren(t6(e))}function T6(){for(let e of Z4(D4))e.control===`readonly`?w6(e):S6(e)}function E6(){let e=M(`button`,`btn-dialog btn-dialog-cancel`,`Reset all to defaults`);return e.type=`button`,e.addEventListener(`click`,()=>{Nc(),J4(O4),kQ(Hs()),j6()}),e}function D6(e){let t=M(`div`,`settings-view-advanced`),n=M(`button`,`dialog-advanced-toggle settings-view-advanced-toggle`,`Advanced`);n.type=`button`,n.setAttribute(`aria-expanded`,String(v4)),n.setAttribute(`aria-controls`,`settings-view-advanced-panel`);let r=M(`div`,`dialog-advanced-panel settings-view-advanced-panel`);r.id=`settings-view-advanced-panel`,r.hidden=!v4,n.addEventListener(`click`,()=>{v4=!v4,r.hidden=!v4,n.setAttribute(`aria-expanded`,String(v4))});for(let t of e)r.append(_6(t));return D4.id===l4&&r.append(E6()),t.append(n,r),t}function O6(e){let t=M(`div`,`settings-view-streamer-placeholder`),n=M(`button`,`btn-dialog btn-dialog-confirm`,`Turn off streamer mode`);n.type=`button`;let r=M(`span`,`settings-view-copy-status`,``);r.setAttribute(`role`,`status`),n.addEventListener(`click`,async()=>{n.disabled=!0,r.textContent=``;let e=await Im(!1);n.disabled=!1,r.textContent=e}),t.append(M(`p`,`settings-view-section-description`,`Settings are hidden in streamer mode.`),n,r),e.appendChild(t)}Fm(()=>j6());function k6(e){let t=M(`header`,`settings-view-subsection`),n=M(`h2`,`settings-view-subsection-title`,e.title);return n.addEventListener(`click`,()=>$4(e.id)),t.append(n,M(`p`,`settings-view-section-description`,e.description)),t}function A6(e,t){for(let n of t.settings.filter(e=>e.access!==`advanced`))e.appendChild(_6(n)),n.id===p4&&e.appendChild(AQ());let n=t.settings.filter(e=>e.access===`advanced`);n.length>0&&e.append(D6(n))}function j6(){if(U6(),I4){z6();return}if(!E4)return;if(E4.textContent=``,Nm()){O6(E4);return}let e=M(`header`,`settings-view-section-header`),t=M(`h1`,`settings-view-section-title`,D4.title);if(t.tabIndex=-1,t.addEventListener(`click`,()=>$4(D4.id)),e.append(t,M(`p`,`settings-view-section-description`,D4.description)),E4.appendChild(e),D4.id===u4){let e=M(`div`,`shortcut-groups settings-view-shortcuts`);t3(e),E4.appendChild(e),E4.appendChild(c_()),E4.appendChild(l_()),o3(E4);return}if(D4.id===d4){a3(E4);return}let n=M(`div`,`settings-view-stack`);for(let e of X4(D4))e.id!==D4.id&&n.appendChild(k6(e)),A6(n,e);E4.appendChild(n)}function M6(e,{focusContent:t=!1,settingId:n=null,updateHash:r=!0,openPhoneSection:i=!0}={}){r&&I4&&(I4=``,C4&&(C4.value=``));let a=H1(_4,e)??D4;D4.id!==a.id&&(v4=!1),D4=a;let o=_4.find(t=>t.id===e)??a;N6(S4),i&&my()&&(w4=o.id),j6(),Z6(D4)&&X6(),D4.id===`machine-updates`&&z3(),r&&$4(o.id,n),n&&e3(n),t&&E4?.querySelector(`h1`)?.focus()}function N6(e){for(let t of e?.querySelectorAll(`[data-settings-section]`)||[]){let e=t.dataset.settingsSection===D4.id;t.setAttribute(`aria-current`,e?`page`:`false`)}}function P6(e){return e.section!==null}function F6(e){C4&&(C4.value=``,I4=``,K6(),M6(e.section.id,{settingId:e.setting.id}))}function I6(e){return d1(P$.sections,e,P$.fileOnly)}function L6(e,t,n,r,i){let a=M(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),M(`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 R6(e,t){let{currentText:n,defaultText:r,jsonFragment:i}=R1(t.setting,O4);if(n!==null&&e.appendChild(M(`span`,`settings-view-search-current`,n)),e.append(M(`span`,`settings-view-search-default`,r),p6(t.setting),M(`p`,`settings-view-list-hint`,`Edit in config.json or with glimmervoid settings set.`)),i===null)return;let a=M(`div`,`settings-view-control-foot`);d6(a,M(`button`,`settings-view-copy-json`,`Copy as JSON`),{copiedText:`JSON copied`,textToCopy:()=>i}),e.appendChild(a)}function z6(){if(!E4)return;if(E4.textContent=``,Nm()){O6(E4);return}let e=I6(I4),t=M(`div`,`settings-view-section-header`);if(t.append(M(`h1`,`settings-view-section-title`,`Settings search`),M(`p`,`settings-view-section-description`,`${e.length} ${e.length===1?`result`:`results`} for "${I4}"`)),E4.appendChild(t),e.length===0){E4.appendChild(M(`p`,`settings-empty settings-view-search-empty`,`No settings found.`));return}let n=M(`ol`,`settings-view-search-results`);n.setAttribute(`aria-label`,`Settings search results`);for(let t of e){let e=M(`li`,`settings-view-search-result`);e.tabIndex=-1;let r=z1(_4,t.section,t.setting);e.appendChild(L6(`p`,`settings-view-search-breadcrumb`,r,t,`section`));let i=L6(`span`,`settings-view-setting-title`,t.setting.title,t,`title`);if(P6(t)){let n=M(`button`,`settings-view-search-open`);n.type=`button`,n.appendChild(i),n.addEventListener(`click`,()=>F6(t)),e.appendChild(n)}P6(t)||(e.classList.add(`settings-view-search-file-only`),e.appendChild(i)),e.append(L6(`p`,`settings-view-setting-description`,t.setting.description,t,`description`),L6(`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(L6(`p`,`settings-view-list-hint`,n.text,t,n.field))}P6(t)||R6(e,t),n.appendChild(e)}E4.appendChild(n)}function B6(){return G1(_4,w4,I4,Nm())}var V6=new Set;function H6(e){V6.add(e)}function U6(){if(!x4)return;let e=B6(),t=x4.dataset.settingsScreen!==e;if(x4.dataset.settingsScreen=e,T4&&(T4.hidden=e!==`section`),t)for(let e of V6)e()}function W6(){return my()&&B6()===`section`}function G6(){if(!W6())return;let e=D4.id;q6(``),S4?.querySelector(`[data-settings-section="${e}"]`)?.focus()}function K6(){if(S4&&x4){S4.textContent=``;for(let e of W1(U1(_4))){let t=M(`div`,`settings-view-nav-group`);e.heading&&t.appendChild(M(`div`,`settings-view-nav-heading`,e.heading));for(let n of e.sections){let e=M(`button`,`settings-view-nav-item`,n.title);e.type=`button`,e.dataset.settingsSection=n.id,e.addEventListener(`click`,()=>M6(n.id,{focusContent:my()})),t.appendChild(e)}S4.appendChild(t)}I4?(U6(),z6()):M6(D4.id,{updateHash:!1,openPhoneSection:!1})}}function q6(e,{updateHash:t=!0}={}){I4=e.trim(),C4&&(C4.value=e),w4=null,t&&history.replaceState(history.state,``,$f(I4)),K6()}function J6(e){if(I4&&e.key===`Enter`&&e.target===C4){let t=I6(I4).find(P6);if(!t)return;e.preventDefault(),F6(t);return}if(e.key===`Escape`&&I4){if(!C4)return;e.preventDefault(),q6(``),C4.focus();return}if(e.key!==`ArrowUp`&&e.key!==`ArrowDown`||!S4)return;let t=[...S4.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 Y6(e,{onRestart:t=()=>{}}={}){B4=t,fY(c3),y4=e,y4.textContent=``,x4=M(`div`,`settings-view-shell`);let n=M(`div`,`settings-view-sidebar`);C4=M(`input`,`settings-view-search`),C4.type=`search`,C4.placeholder=`Search settings`,C4.setAttribute(`aria-label`,`Search settings`),S4=M(`nav`,`settings-view-nav`),S4.setAttribute(`role`,`navigation`),S4.setAttribute(`aria-label`,`Settings sections`),T4=M(`button`,`settings-view-back`,`Back`),T4.type=`button`,T4.hidden=!0,T4.setAttribute(`aria-label`,`Back to settings sections`),T4.addEventListener(`click`,G6),E4=M(`div`,`settings-view-content`),E4.setAttribute(`aria-live`,`polite`),C4.addEventListener(`input`,()=>{let e=C4;e&&q6(e.value)}),C4.addEventListener(`keydown`,J6),S4.addEventListener(`keydown`,J6),n.append(C4,T4,S4),x4.append(n,E4),y4.appendChild(x4),J4(O4),K6(),X6(),b4?.disconnect(),b4=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&X6()}),b4.observe(y4)}function X6(){Ly().then(Q6)}function Z6(e){return Z4(e).some(e=>e.path===`pref:soundId`)}function Q6(){if(_4=g4(),D4=H1(_4,D4.id)??_4[0],k4[`pref:soundId`]=Iy(Ms()),I4){z6();return}let e=s3(`alert-sound`);e&&Z6(D4)&&S6(e)}function $6(e=null,t=null){let n=B1(e??location.hash);n?q6(n.query):(q6(``,{updateHash:!1}),my()&&!e?history.replaceState(history.state,``,$f(``)):M6(e||D4.id,{settingId:t}))}function e8(e){let t=B1(e);if(t){let e=$f(t.query);return{sectionId:e,settingId:null,hash:e}}return f1(e,_4,F$,I$)}function t8(e){e&&(O4=e,J4(O4),I4?z6():T6())}function n8(e){i8()}function r8(e,t){let n=t.querySelector(`.settings-view-status-slot`),r=i6(e);n&&r&&n.replaceWith(r),n&&!r&&n.remove(),!n&&r&&t.appendChild(r)}function i8(){for(let e of Z4(D4)){if(!e.status)continue;let t=v6(e);t&&(e.control===`readonly`?w6(e):r8(e,t))}}function a8(){if(D4.id!==`machine-updates`)return;let e=s3(`update-actions`);e&&w6(e)}function o8(e){L4=e,U4=!1,W4=null,z4=wu(z4,`status-frame`),a8(),H4&&D4.id===`machine-updates`&&z3()}function s8(e){R4=e,z4=wu(z4,`progress-frame`),a8()}function c8(e){if(e.scope!==`update`)return!1;let t=Cu(e.message),n=z4.requested;return z4=wu(z4,`error-frame`,t),U4=!1,n||(W4=t),a8(),!0}function l8(){D4.id===l4&&j6()}window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,l8),hy(()=>{w4=null,U6(),l8()});function u8(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 d8=`•`.repeat(8),f8=`[^/\\\\\\s"'\`<>:]+`,p8=RegExp(`(?<![\\w./\\\\-])(?:/home/${f8}|/Users/${f8}|[A-Za-z]:[\\\\/]Users[\\\\/]${f8}|/root(?![\\w.-]))`,`g`);function m8(e){let t=cx(e);if(t.length===0)return e;let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+d8,r=i.end;return n+e.slice(r)}function h8(e){return e.replace(p8,`~`)}function g8(e){return h8(m8(e))}var _8=`.xterm, input, textarea, script, style, [contenteditable]:not([contenteditable="false"])`,v8=[`title`,`label`],y8=new WeakMap,b8=new WeakMap,x8=null;function S8(e){let t=e instanceof Element?e:e.parentElement;return!t||t.closest(_8)!==null}function C8(e){let t=e.parentElement?.closest(`option`);return t!=null&&!t.hasAttribute(`value`)}function w8(e,t){if(t&&e===t.masked)return t;let n=g8(e);return n===e?null:{original:e,masked:n}}function T8(e){let t=C8(e)?null:w8(e.data,y8.get(e));t?(y8.set(e,t),e.data!==t.masked&&(e.data=t.masked)):y8.delete(e)}function E8(e,t){let n=e.getAttribute(t),r=b8.get(e),i=n===null?null:w8(n,r?.get(t));if(!i){r?.delete(t);return}let a=r??new Map;a.set(t,i),b8.set(e,a),n!==i.masked&&e.setAttribute(t,i.masked)}function D8(e){for(let t of v8)E8(e,t)}function O8(e){return e instanceof Element&&e.matches(_8)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function k8(e){D8(e);let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,O8);for(let e=t.nextNode();e;e=t.nextNode())e instanceof Text&&T8(e),e instanceof Element&&D8(e)}function A8(e){S8(e)||(e instanceof Text&&T8(e),e instanceof Element&&k8(e))}function j8(e){e instanceof Element&&!S8(e)&&D8(e)}function M8(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&&A8(e);for(let e of n)e.isConnected&&j8(e)}function N8(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);P8(e);for(let e=t.nextNode();e;e=t.nextNode())P8(e)}function P8(e){if(e instanceof Text){let t=y8.get(e);t&&e.data===t.masked&&(e.data=t.original);return}if(!(e instanceof Element))return;let t=b8.get(e);if(t)for(let[n,r]of t)e.getAttribute(n)===r.masked&&e.setAttribute(n,r.original)}function F8(){if(x8)return;let e=new MutationObserver(t=>{M8(t),e.takeRecords()});k8(document.body),e.observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:v8}),x8=e}function I8(){x8&&(x8.disconnect(),x8=null,N8(document.body),y8=new WeakMap,b8=new WeakMap)}function L8(e){e?F8():I8()}function R8(){L8(Nm()),Fm(L8)}function z8(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 B8(e){return typeof e!=`object`||!e||!(`telemetryForcedOff`in e)?!1:e.telemetryForcedOff===!0}function V8(e,t){return t||B8(e)?!1:z8(e)}var H8=2500;function U8({hasSnapshot:e,connectingTerminalCount:t,msSinceConnected:n}){return n<2500&&(!e||t>0)?`wait`:`reveal`}var W8=new Set([j.RUNNING,j.STARTING,j.INITIALIZING]),G8=null,K8=!1,q8=null;function J8(e){let t=M(`div`,`zen-calm`),n=M(`div`,`zen-status-line`);n.setAttribute(`role`,`status`);let r=M(`span`,`zen-working-count`);n.append(M(`h2`,`zen-all-clear`,`ALL CLEAR`),r);let i=M(`ul`,`zen-working-list`);i.setAttribute(`aria-label`,`Working sessions`),t.append(n,i);let a=M(`div`,`zen-stage`),o=M(`div`,`zen-reason-line`);o.setAttribute(`role`,`status`);let s=M(`span`,`zen-staged-need`),c=M(`span`,`zen-queued-behind`);o.append(s,c);let l=M(`button`,`btn-dialog`,`Next`);l.type=`button`,l.addEventListener(`click`,$8);let u=M(`div`,`zen-stage-bar`);u.append(o,l,Tp(yp(`next-attention`,Cp)));let d=M(`div`,`zen-card-slot`);a.append(u,d),a.hidden=!0,e.append(t,a),G8={calm:t,workingCount:r,workingList:i,stage:a,stagedNeed:s,queuedBehind:c,cardSlot:d}}function Y8(){return K8}function X8(){G8&&(K8=!0,Q8())}function Z8(){K8&&=(n5(),!1)}function Q8(){if(!K8)return;let e=e5();t5(Qh(e,q8),e)}function $8(){if(!K8)return;let e=q8,t=e!==null&&P.get(e)?.currentState===j.COMPLETE;e!==null&&t&&hN(e);let n=e5().filter(n=>!t||n!==e);t5(Zh(n,e),n)}function e5(){return ag(Xh(pv()))}function t5(e,t){if(!G8)return;let n=e===null?void 0:P.get(e);if(e===null||!n){n5(),i5(G8);return}let r=q8!==e;q8=e,G8.calm.hidden=!0,G8.stage.hidden=!1,r5(G8,n,t.filter(t=>t!==e).length),(Mr()!==e||n.card.parentElement!==G8.cardSlot)&&(Nr(n,e,G8.cardSlot,{className:`zen-staged`}),dC(n,e,!0),r&&a5(n,e))}function n5(){q8!==null&&Mr()===q8&&Pr(),q8=null}function r5(e,t,n){e.stagedNeed.textContent=eg(t.currentState,t.pendingPromptKind),e.stagedNeed.dataset.state=t.currentState,e.queuedBehind.textContent=`${n} more waiting`,e.queuedBehind.hidden=n===0}function i5(e){e.stage.hidden=!0,e.calm.hidden=!1;let t=Xh(pv()).filter(e=>W8.has(e.state));e.workingCount.textContent=`${t.length} working`,e.workingList.replaceChildren(...t.map(e=>{let t=M(`li`,`zen-working-session`),n=M(`span`,`zen-working-dot`);return n.setAttribute(`aria-hidden`,`true`),t.append(n,M(`span`,`zen-working-name`,e.name),M(`span`,`zen-working-project`,yN(e.ui.path))),t}))}function a5(e,t){requestAnimationFrame(()=>requestAnimationFrame(()=>{K8&&q8===t&&!document.hidden&&document.hasFocus()&&e.term?.focus()}))}function o5(e,t){return t.isPhoneShellActive?t.phoneScreen===e:t.activeView===e}function s5(e,t){return e.flatMap(e=>!e.gate||!(`fromSettings`in e.gate)?[]:[{view:e,isAvailable:e.gate.fromSettings(t)}])}function c5(e){return{isActive:e===!0||typeof e==`string`,level:typeof e==`string`?e:null}}function l5(e,t){e?.refreshOn?.includes(t)&&e.refresh?.(t)}function u5(e,t,n){for(let r of e)o5(r.view,t)&&l5(r,n)}function d5(e){let t=[{view:`focus`,label:`Focus`,panelClass:`focus-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,hasReviewSidebar:!0,mount:()=>$N({rail:document.getElementById(`focus-rail`),center:document.getElementById(`focus-center`),resizer:document.getElementById(`focus-rail-resizer`)}),activate:EP,deactivate:kP},{view:`zen`,label:`Zen`,panelClass:`zen-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,gate:{fromSettings:T0.zenView},mount:J8,activate:X8,deactivate:Z8},{view:`prs`,label:`Reviews`,glyph:`⇅`,panelClass:`pr-view`,gate:{fromSettings:T0.teamReview},mount:t=>YJ(t,{openTerminal:e.openTerminal,openReviews:e.openReviews}),attention:{subscribe:RJ,acknowledge:JJ},onConnectionChange:e=>{NW(e),UJ(e)}},{view:`issues`,label:`Issues`,glyph:`#`,panelClass:`issues-view`,mount:RX,refreshOn:[`shown`],refresh:zX,onConnectionChange:VX},{view:`usage`,label:`Usage`,glyph:`◔`,panelClass:`usage-view`,gate:{fromSettings:T0.usage},mount:e4,attention:{subscribe:X2,acknowledge:K2},onConnectionChange:$2,refreshOn:[`shown`,`connected`,`usage-sessions`],refresh:e=>{e===`shown`&&t4(),Q2()}},{view:`radar`,label:`Radar`,glyph:`◎`,panelClass:`radar-view`,gate:{fromSettings:T0.posthog},mount:ZZ,attention:{subscribe:YZ,acknowledge:JZ}},{view:`visions`,label:`Visions`,glyph:`◇`,panelClass:`visions-view`,gate:{fromSettings:T0.visions},mount:AI,attention:{subscribe:DI,acknowledge:()=>{MI(),jI()}},onConnectionChange:kI},{view:`hooks`,label:`Hooks`,glyph:`◈`,panelClass:`hooks-view`,mount:RR,refreshOn:[`shown`,`connected`,`hooks-updated`],refresh:e=>{e===`shown`&&zR(),LR()}},{view:`trace`,label:`Trace`,panelClass:`trace-view`,gate:{subscribe:O_},mount:xk,refreshOn:[`shown`],refresh:Ek,onAvailabilityChange:e=>XZ(e?wk:null),onConnectionChange:Ak},{view:`benchmarks`,label:`Bench`,panelClass:`bench-view`,gate:{fromSettings:T0.benchmarks},mount:MY,onConnectionChange:NY},{view:`settings`,label:`Settings`,glyph:`@`,panelClass:`settings-view`,hasPanelChrome:!1,mount:t=>Y6(t,{onRestart:e.onRestart})}],n=N(document,`#app-main`,`main`),r=t.map(t=>{let r=M(`button`,`header-tab`,t.label);r.id=`tab-${t.view}`,r.type=`button`;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)??M(`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=M(`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}=c5(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 N(document,`#header-tabs`,`div`).replaceChildren(...r.map(e=>e.tab)),r}$y(Bs()),eb(Is()),tb(Rs()),kQ(Hs()),py(),Hh(document);var f5=N(document,`#connection-status`,`span`),p5=N(f5,`.connection-label`,`span`),m5=N(document,`#loading-screen`,`div`),h5=N(document,`#loading-status`,`div`),g5=N(document,`#loading-detail`,`div`),_5=N(document,`#shutdown-screen`,`div`),v5=N(document,`#shutdown-status`,`div`),y5=!1,b5=null,x5=!1;function S5(){let e=Ic(),t=m5.querySelector(`.loading-spinner`);e&&t&&t.replaceWith(Fc(e,`loading-animal`))}S5();function C5(){y5||b5===null||U8({hasSnapshot:x5,connectingTerminalCount:GS(),msSinceConnected:performance.now()-b5})===`reveal`&&w5()}WS(C5);function w5(){if(y5)return;y5=!0,m5.classList.add(`fade-out`);let e=()=>m5.remove();m5.addEventListener(`transitionend`,e,{once:!0}),setTimeout(e,1e3)}function T5(e,t){f5.dataset.state=`shutdown`,p5.textContent=e,f5.title=e,p7.disabled=!0,v5.textContent=t,_5.classList.add(`active`)}var E5=new Set([`disconnected`,`connecting`]);function D5(e,t,n){f5.dataset.state=e,f5.toggleAttribute(`data-reconnected`,n),p5.textContent=t,f5.title=t}function O5(e,t){D5(e,t,e===`connected`&&E5.has(f5.dataset.state??``))}function k5(e,t){f5.dataset.state!==`shutdown`&&D5(e===`verified`?`connected`:e,t,!1)}var A5=1e4,j5=`The server is not answering. Check the terminal running Glimmervoid for errors, or start it again with glimmervoid. This page reconnects on its own.`,M5=`Server not answering. Check the Glimmervoid terminal for errors, or run glimmervoid. This page retries on its own.`,N5=null,P5=!1;function F5(){h5.textContent=`Reconnecting to server...`,g5.textContent=M5,g5.hidden=!P5}function I5(){N5=null,P5=!0,y5?bd(j5,{hidesInStreamerMode:!1}):F5()}function L5(){N5!==null||P5||(N5=window.setTimeout(I5,A5))}function R5(){N5!==null&&window.clearTimeout(N5),N5=null,P5=!1,g5.hidden=!0,xd(j5)}nd((e,t)=>{if(e===`connecting`||e===`verified`)k5(e,t);else{O5(e,t),GM(e===`connected`);for(let t of C7)t.onConnectionChange?.(e===`connected`);if(e===`connected`){if(R5(),_5.classList.contains(`active`)){location.reload();return}Wp(),document.body.classList.add(`app-ready`),!y5&&b5===null&&(b5=performance.now(),h5.textContent=`Connecting to sessions...`,setTimeout(w5,H8)),C5(),J7(),X5(`connected`),ad(`get-settings`,{}).then(e=>{e.settings&&(N7(e.settings),jr()===`settings`&&v7(location.hash))}).catch(()=>{})}else e===`disconnected`&&_5.classList.contains(`active`)?v5.textContent=`Waiting for server...`:(L5(),y5||F5())}});function z5(){Q8(),BX(),wW(),sB()}function B5(){uP(),z5()}var V5=null;function H5(e){let t=u8(V5,e);V5=t.knownBuild,t.reload&&location.reload()}function U5(e){pI(new Map(e.filter(e=>!e.ephemeral).map(e=>[e.id,e.name]))),n8(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){xh(t.id,t.coherenceHooks),t.ephemeral||f_(t.path),oY(t.id,t.linkedPrs);let e=jM(t.id);e&&_N(t.id,t.state,t.stateSince),e&&B_(t.id,!!t.saneYolo),e&&YM(t.id,t.isGuarded,t.isGuardrailsReleased),e||IM(t.id,t.name,t.state,sQ(t)),pN(t.id,t.failureReason),AM(t.id,t.taskTitle,t.taskTitleIsCustom),qM(t.id,t.agent),sN(t.id,t.mergeStatus,t.mergeReason),KM(t.id,t.effectiveBase),QM(t.id,t.activeAgents,t.awaitingBackgroundTasks),rN(t.id,t.pendingWakeup),tN(t.id,t.pendingPromptKind,t.isCompacting,t.isWaitingForMemory),CM(t.id,t),BM(t.id,t.hasPlan),Y5(t.id)}FM(),wg(P),uP(),OP(),z5(),W5(),b7(location.hash),x5=!0,C5()}function W5(){Tk([...P].map(([e,t])=>({id:e,name:Cr(t)||e})))}function G5(e,t){BM(e,t?.hasPlan===!0),Y5(e)}function K5(e){if(!jM(e.id))IM(e.id,e.session,e.to,sQ({skipPerms:e.skipPerms,saneYolo:e.saneYolo,stateSince:e.timestamp})),wg(P),BX();else if(e.to===j.DORMANT&&e.from!==j.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;uN(e.id),IM(e.id,e.session,j.DORMANT,sQ({skipPerms:i,saneYolo:a,worktree:r?.dataset.worktree!==void 0,workspace:r?.dataset.workspace!==void 0,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})),qM(e.id,t?.agent),G5(e.id,t),B5(),CE(e.id),wg(P)}else _N(e.id,e.to,e.timestamp,e.event),pN(e.id,e.failureReason),e.saneYolo!==void 0&&B_(e.id,e.saneYolo),wg(P),CE(e.id),B5(),ov(e.id),e.to===j.INITIALIZING&&(e.from===j.DONE||e.from===j.FAILED)&&eC(e.id)}var q5=new Map;function J5(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};q5.set(n.id,e),$M(n.id,e)}for(let e of[...q5.keys()])t.has(e)||(q5.delete(e),$M(e,null))}function Y5(e){let t=q5.get(e);t&&$M(e,t)}Z2(K),IR(K),Sk(K),LX(K),jY(K),j_(iY),Yg(Th),Yg(nY),N_({isReadable:Eh,open:Oh}),F_(aQ);function X5(e){u5(C7,{isPhoneShellActive:aB(),activeView:jr(),phoneScreen:Ar.snapshot().phoneScreen},e)}Fm(()=>X5(`settings-updated`));var Z5={snapshot:e=>{H5(e.serverBuild),U5(e.sessions)},"hooks-report":e=>BR(e),"save-hook-result":()=>VR(),"delete-hook-result":()=>VR(),"state-change":e=>K5(e),"session-added":e=>{e.ephemeral||f_(e.path),oY(e.id,e.linkedPrs),jM(e.id)||(IM(e.id,e.session,e.state,sQ(e)),qM(e.id,e.agent),Y5(e.id)),wg(P),B5(),W5()},"session-removed":e=>{uN(e.id),Sh(e.id),TE(e.id),sY(e.id),wg(P),B5(),W5()},"session-title":e=>{AM(e.id,e.taskTitle,e.isCustom),B5()},"session-prs":e=>oY(e.id,e.linkedPrs),"session-renamed":e=>{lN(e.id,e.newName),B5(),W5()},"session-modified":e=>{e.ephemeral||f_(e.path);let t=P.get(String(e.id));xh(e.id,null),uN(e.id),TE(e.id),oY(e.id,e.linkedPrs),IM(e.id,e.session,e.state,sQ(e)),qM(e.id,e.agent),G5(e.id,t),wg(P),B5(),W5()},"session-git":e=>JM(e.id,!!e.worktree),"session-agents":e=>{QM(e.id,e.activeAgents,e.awaitingBackgroundTasks),B5(),ov(e.id)},"session-wakeup":e=>rN(e.id,e.pendingWakeup),"session-prompt":e=>{tN(e.id,e.pendingPromptKind,e.isCompacting===!0,e.isWaitingForMemory===!0),z5()},"session-merge-status":e=>{oN(e.id,e.mergeStatus,e.reason),xP(e.id,e.mergeStatus),z5()},"session-worktree-blocked":e=>{bd(`${e.session}: ${e.notice||`integration branch not found`}`)},"session-worktree-warning":e=>{bd(`${e.session}: ${e.notice||`base branch warning`}`)},"session-worktree-ready":e=>{KM(e.id,e.base)},"session-diff":e=>{cN(e.id,{committed:e.committed,uncommitted:e.uncommitted,hasCommits:e.hasCommits})},"session-diff-error":e=>{mE(e.id,e.message)},"change-map":e=>hE(e.id,e.map),"branch-sync-status":e=>bE(e.id,e),"session-changed":e=>SE(e.id),"post-turn-result":e=>iN(e.id,e),"debug-state-response":e=>av(e),"session-trace-response":e=>{wM(e)||Dk(e)},"session-trace-changed":e=>{EM(e.id),Ok(e)},"session-conversation":e=>{CM(e.id,e),z5()},"session-plan-changed":e=>{VM(e),z5()},"session-plan-draft":e=>{HM(e)},"session-plan-response":e=>{UM(e)},"session-docs-changed":e=>ih(e),"session-docs-snapshot":e=>ah(e),"session-coherence-hooks":e=>{xh(e.id,e.coherenceHooks),B5()},"session-coherence":e=>{Ch(e),B5()},"session-coherence-snapshot":e=>{wh(e),B5()},"session-coherence-journal-response":e=>kh(e),"session-setup-response":e=>oQ(e),notify:e=>{Xf(e),ov(e.session)},"update-status":e=>{r7(e),o8(e)},"update-progress":e=>s8(e.journal),"post-turn-leftovers":e=>a7(e),error:e=>{let t=c8(e),n=kk(e);TM(e);let r=WM(e);t||n||r||bd(e.message)},"session-error":e=>{dE(e.id),!WM(e)&&fN(e.id,e.message)},"settings-updated":e=>{e.settings&&N7(e.settings),Wp()},"health-snapshot":e=>{e.stats&&KC(e.stats)},"radar-status":e=>QZ(e),"radar-investigation-activity":e=>$Z(e),"radar-investigation-finished":e=>tQ(e),"team-review-status":e=>BJ(e),"github-prs":e=>Vn(e),"my-prs-status":jW,"benchmark-status":e=>PY(e),"benchmark-action-result":e=>FY(e),"my-pr-merge-result":e=>PW(e),"team-review-action-result":e=>WJ(e),"open-team-review-session-result":e=>HJ(e),"issues-status":e=>HX(e),"issue-detail-result":e=>UX(e),"open-issue-session-result":e=>WX(e),"usage-sessions":e=>{J5(e.sessions),n4(e)},"usage-report":e=>{i4(e),i8()},"plan-limits":e=>r4(e),"usage-budget-alert":e=>Xf({session:`budget-${e.scope}-${e.periodKey}`,category:`threshold-${e.threshold}`,message:e.text,ignoreFocus:!0}),"visions-findings":e=>PI(e),"visions-comments":e=>FI(e),"visions-hand":e=>II(e),"visions-intent":e=>LI(e),"visions-fix":e=>NI(e),"visions-snapshot":e=>BI(e),"ingest-activity":e=>RI(e),"ingest-snapshot":e=>zI(e),"client-trust":e=>H7(e.trust),"shutting-down":()=>T5(`Shutting down...`,`Shutting down sessions...`),restarting:()=>T5(`Restarting...`,`Restarting server...`)};function Q5(e){let t=Z5[e.type];t&&t(e)}rd(e=>{Q5(e),X5(e.type)});var $5;function e7(e,t,n){e.onclick=()=>{let e=br(n);e?e.then(()=>{t.textContent=`Copied`}).catch(()=>{t.textContent=`Copy failed`}):t.textContent=`Copy failed`}}var t7=ep(Sl,Cl,`Update`).href;function n7(e){let{latestSha:t,latest:n}=e;return typeof n==`string`&&n?n:typeof t==`string`&&t?t:null}function r7(e){let t=N(document,`#update-banner`,`div`);if(!e.updateAvailable){t.hidden=!0;return}let{mode:n,text:r}=ju(e),i=n7(e),a=i&&n===`restart`?`${i}:ready`:i;if($5!==void 0&&a===$5||a&&cc()===a)return;let o=String(e.command??``);N(document,`#update-banner-text`,`span`).textContent=r,N(document,`#update-banner-cmd`,`code`).textContent=o;let s=N(document,`#update-banner-update`,`a`);s.href=t7,s.hidden=n!==`link`;let c=N(document,`#update-banner-restart`,`button`);c.hidden=n!==`restart`,c.onclick=V7;let l=N(document,`#update-banner-cmd`,`code`);l.hidden=n!==`command`;let u=N(document,`#update-banner-copy`,`button`);u.hidden=n!==`command`;let d=N(document,`#update-banner-copy-status`,`span`);d.hidden=n!==`command`,d.textContent=``;let f=N(document,`#update-banner-link`,`a`);f.hidden=!e.releaseUrl,f.href=typeof e.releaseUrl==`string`?e.releaseUrl:``,t.hidden=!1,e7(u,d,o),N(document,`#update-banner-dismiss`,`button`).onclick=()=>{$5=a,lc(a),t.hidden=!0}}var i7=!1;function a7({repositories:e,command:t}){let n=N(document,`#post-turn-leftovers-banner`,`div`);if(e.length===0){n.hidden=!0;return}if(i7)return;let r=N(document,`#post-turn-leftovers-copy-status`,`span`);N(document,`#post-turn-leftovers-text`,`span`).textContent=$n(e.length),N(document,`#post-turn-leftovers-cmd`,`code`).textContent=t,r.textContent=``,n.hidden=!1,e7(N(document,`#post-turn-leftovers-copy`,`button`),r,t),N(document,`#post-turn-leftovers-dismiss`,`button`).onclick=()=>{i7=!0,n.hidden=!0}}var o7=N(document,`#telemetry-banner`,`div`);function s7(){dc(!0),o7.hidden=!0}function c7(e){o7.hidden=!V8(e,uc())}var l7=N(document,`#telemetry-banner-settings`,`a`);l7.href=ep(`privacy`,`telemetry-enabled`,`Open settings`).href,l7.addEventListener(`click`,s7),N(document,`#telemetry-banner-dismiss`,`button`).addEventListener(`click`,s7),N(document,`#btn-add-session-header`,`button`).addEventListener(`click`,Df);var u7=N(document,`#btn-mute`,`button`);pY(u7);var d7=N(document,`#btn-streamer`,`button`);zm(d7),R8();var f7=N(document,`#power-menu`,`div`),p7=N(document,`#btn-power`,`button`);function m7(){p7.setAttribute(`aria-expanded`,f7.classList.contains(`open`)?`true`:`false`)}p7.addEventListener(`click`,e=>{e.stopPropagation(),f7.classList.toggle(`open`),m7()}),document.addEventListener(`click`,e=>{e.target instanceof Node&&(f7.contains(e.target)||(f7.classList.remove(`open`),m7()))}),hr(document.querySelector(`.header`));function h7(e){e&&$6(e),!lB(`settings`)&&A7(`settings`,{section:e})}function g7(){Qf(location.hash)&&history.replaceState(history.state,``,`${location.pathname}${location.search}`)}function _7(e){return e?($6(e.sectionId,e.settingId),lB(`settings`)||A7(`settings`,{section:e.sectionId,setting:e.settingId,persist:!1}),!0):!1}function v7(e){return _7(e8(e))}var y7=`No plan is stored for this session yet.`;function b7(e){let t=If(e);return t?!jM(t)||(history.replaceState(history.state,``,`${location.pathname}${location.search}`),aB()?(iB(t)||bd(y7),!0):(A7(`focus`,{persist:!1}),CP(t)||bd(y7),!0)):!1}function x7(e){return b7(e)?!0:v7(e)}function S7(e){e.newURL===location.href&&x7(location.hash)}document.addEventListener(`click`,e=>{if(!aB()||e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href^="#"]`):null;t instanceof HTMLAnchorElement&&x7(t.hash)&&e.preventDefault()}),LH(N(document,`#celebration-tray`,`div`),N(document,`#btn-celebrations`,`button`),N(document,`#celebration-tray-count`,`span`)),N(document,`#btn-help`,`button`).addEventListener(`click`,()=>{h7(`browser-shortcuts`)});var C7=d5({onRestart:V7,openTerminal:e=>{cB(e)||(A7(`focus`),SP(e))},openPlan:e=>{A7(`focus`),CP(e)},openReviews:()=>T7(`prs`)?(lB(`prs`)||A7(`prs`),!0):!1,setPhoneAttention:dB});r3(C7),sE({panel:document.getElementById(`review-sidebar`)});for(let e of C7)e.mount(e.el);function w7(e){return C7.find(t=>t.view===e)}function T7(e){return C7.some(t=>t.view===e&&!t.tab.hidden)}var E7=!0,D7=null;function O7(e){w7(e)?.attention?.acknowledge()}function k7(e){l5(w7(e),`shown`)}function A7(e,{section:t,setting:n,persist:r=!0}={}){if(!T7(e))return;let i=jr();Ar.dispatch(`setActiveView`,e),E7=r,r&&(D7=null),document.body.dataset.activeView=e,document.body.dataset.reviewSidebarHidden=String(w7(e)?.hasReviewSidebar!==!0),r&&Gs(e);for(let t of C7){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&&w7(i)?.deactivate?.(),w7(e)?.activate?.(),k7(e),i===`settings`&&e!==`settings`&&g7(),e===`settings`&&t&&$6(t,n??null),O7(e)}function j7(e,t){let{view:n}=e;e.tab.hidden=!t,uB(n,t),e.onAvailabilityChange?.(t),!aB()&&(!t&&jr()===n&&A7(`focus`),t&&D7===n&&A7(n))}function M7(e){for(let{view:t,isAvailable:n}of s5(C7,e))j7(t,n)}function N7(e){NM(e),t8(e),yI(e),M7(e),c7(e),Pm(e.streamerMode===!0),xM(e.conversationView===!0)}for(let e of C7)e.gate&&(j7(e,!1),`subscribe`in e.gate&&e.gate.subscribe(t=>j7(e,t)));Ck(()=>{T7(`trace`)&&(lB(`trace`)||A7(`trace`))});function P7(e,t){let n=C7.filter(e=>!e.tab.hidden),r=n[(n.findIndex(t=>t.view===e)+t+n.length)%n.length];return A7(r.view),r.tab}function F7(e){C7.some(e=>e.tab===document.activeElement)&&e.focus()}for(let e=0;e<C7.length;e++){let{view:t,tab:n}=C7[e];n.addEventListener(`click`,()=>A7(t)),n.addEventListener(`keydown`,e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),P7(jr(),e.key===`ArrowRight`?1:-1).focus()))})}var I7=Ws(),L7=e8(location.hash),R7=If(location.hash);if(L7&&A7(`settings`,{section:L7.sectionId,setting:L7.settingId,persist:!1}),R7&&A7(`focus`,{persist:!1}),!L7&&!R7){let e=T7(I7);e||(D7=I7),A7(e?I7:`focus`,{persist:e})}tB({panels:HR(C7),onScreenShown:e=>{k7(e),e!==`settings`&&g7(),e===`settings`&&!Qf(location.hash)&&$6(),O7(e)},canGoBack:e=>e===`settings`&&W6(),onBack:e=>{e===`settings`&&G6()},headerControls:[N(document,`.header-title`,`h1`),N(document,`#status-indicator`,`div`),N(document,`#celebration-tray`,`div`),N(document,`#btn-add-session-header`,`button`),N(document,`#btn-help`,`button`),u7,N(document,`#streamer-badge`,`span`),d7,f7]}),H6(Jz);function z7(e){if(e===`phone`){let e=QN();for(let e of C7)e.deactivate?.();let t=e8(location.hash);nB({sessionId:e??void 0,linkedScreenId:t?`settings`:void 0}),t&&$6(t.sectionId,t.settingId);return}let t=oB();rB();let n=jr();A7(T7(n)?n:`focus`,{persist:E7}),t&&SP(t)}my()&&z7(`phone`),hy(z7),window.addEventListener(`hashchange`,S7);function B7({type:e,title:t,confirmLabel:n,danger:r,idleMessage:i,actionAfterKillingSessions:a}){f7.classList.remove(`open`),m7();let o=MM();Wd({title:t,message:o>0?`Kill ${o} session${o>1?`s`:``} and ${a}?`:i,confirmLabel:n,danger:r||o>0,onConfirm:()=>K({type:e})})}function V7(){B7({type:`restart-server`,title:`Restart Server`,confirmLabel:`Restart`,danger:!1,idleMessage:`Restart the server?`,actionAfterKillingSessions:`restart the server`})}N(document,`#btn-restart`,`button`).addEventListener(`click`,V7);function H7(e){let t=Gn(`shutdown`,e);N(document,`#btn-shutdown`,`button`).hidden=!t,N(document,`#menu-divider-shutdown`,`div`).hidden=!t}N(document,`#btn-shutdown`,`button`).addEventListener(`click`,()=>{B7({type:`shutdown`,title:`Shut Down Server`,confirmLabel:`Shut Down`,danger:!0,idleMessage:`Shut down the server?`,actionAfterKillingSessions:`shut down the server`})});var U7=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function W7(e,t){return e.value!==``&&U7.has(t.key)}function G7(e){let t=document.activeElement;return t instanceof HTMLElement?t.isContentEditable?!0:t instanceof HTMLTextAreaElement&&t.dataset.dashboardShortcuts===`allowed`?W7(t,e):(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)&&!t.classList.contains(`xterm-helper-textarea`):!1}function K7({action:e,step:t}){switch(e){case`merge`:return EE(),!0;case`resolve-or-resync`:return OE()||jE(),!0;case`new-session`:return document.getElementById(`btn-add-session-header`)?.click(),!0;case`next-attention`:return my()?!1:Y8()?($8(),!0):ZN()?(mP(),!0):(DP(()=>A7(`focus`)),!0);case`rail-step`:return ZN()?(TP(t),!0):!1;case`view-step`:return!my()&&(F7(P7(jr(),t)),!0);case`session-nth`:return ZN()?(wP(t),!0):!1;case`streamer-mode`:return Rm(),!0}}document.addEventListener(`keydown`,e=>{if(e.repeat||G7(e))return;let t=hp(e,Cp,{isTerminalFocused:document.activeElement?.classList.contains(`xterm-helper-textarea`)??!1});t&&K7(t)&&e.preventDefault()});var q7=Jn({mode:`trailing`,delayMs:150,run:()=>{K({type:`focus-change`,focused:document.hasFocus()})}});function J7(){q7.schedule()}function Y7(){J7(),lC(F(Mr()))}window.addEventListener(`focus`,Y7),window.addEventListener(`blur`,Y7),document.addEventListener(`visibilitychange`,Y7);var X7=!1;async function Z7(){if(!X7){X7=!0,QS();try{if(await ud()===`ok`)return;for(let e of P.keys())eC(e)}finally{$S(),X7=!1}}}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&(tS(),Z7())}),window.addEventListener(`online`,Z7);var Q7=Io(K);window.addEventListener(`error`,e=>Q7(e.error)),window.addEventListener(`unhandledrejection`,e=>Q7(e.reason)),window.addEventListener(`pageshow`,e=>{e.persisted&&(tS(),Z7())}),GC(N(document,`#health-footer-mount`,`div`)),Ty(PM),L5(),ld();
|