glimmervoid 0.43.2 → 0.43.4
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 +14 -14
- package/dist/chunks/{adapters-Ce0I__TH.js → adapters-C7wGqlhU.js} +1 -1
- package/dist/chunks/{adapters-CjtgWEdg.js → adapters-Du4HJLMG.js} +16 -10
- package/dist/chunks/{agent-api-cli-DYwXyAmN.js → agent-api-cli-BC2i4XNI.js} +1 -1
- package/dist/chunks/{agent-api-cli-B0fpc41n.js → agent-api-cli-DRTVOR2W.js} +2 -2
- package/dist/chunks/agent-api-core-9mdbvlfc.js +782 -0
- package/dist/chunks/{agent-setup-cli-NfJQxNdp.js → agent-setup-cli-DAPHGpRA.js} +1 -1
- package/dist/chunks/{control-messages-CD99vE0V.js → config-D0YwCXFd.js} +557 -2
- package/dist/chunks/{config-store-2noiIsTg.js → config-store-BpsH_oWP.js} +59 -5
- package/dist/chunks/config-store-DcJKvInM.js +1 -0
- package/dist/chunks/contracts-Dxc9Gp0Y.js +295 -0
- package/dist/chunks/{grok-DPmX1ozS.js → grok-2z-LqPHN.js} +2 -2
- package/dist/chunks/{main-BGJ7PAA2.js → main-Bzy6xXUF.js} +248 -468
- package/dist/chunks/{pair-cli-CPv7mDTg.js → pair-cli-DSZFFEkT.js} +2 -2
- package/dist/chunks/{remote-config-DZWZ5fVJ.js → remote-config-Cd_FC7bd.js} +1 -1
- package/dist/chunks/runtime-paths-Cc0_ZR6V.js +1 -0
- package/dist/chunks/{runtime-paths-BkeftE60.js → runtime-paths-ghcH9CeW.js} +1 -1
- package/dist/chunks/{session-routes-DdeSkLqC.js → session-routes-BQPy81dm.js} +6 -3
- package/dist/chunks/{settings-cli-4fX1olS3.js → settings-cli-DOpMn6-A.js} +5 -5
- package/dist/chunks/{settings-readout-core-NoTHBGL6.js → settings-readout-core-D1ZP4UIs.js} +1 -1
- package/dist/chunks/{ssh-sign-cli-CvqtQNQe.js → ssh-sign-cli-ynkhYkLs.js} +1 -1
- package/dist/chunks/{visions-cli-CVRB9IWA.js → visions-cli-COYRIdXy.js} +1 -1
- package/dist/chunks/{visions-setup-DB2P8JUL.js → visions-setup-VMMyqOpl.js} +2 -2
- package/dist/client/assets/{index-DEbBUagP.css → index-583DiM8X.css} +1 -1
- package/dist/client/assets/index-CsyFNXR2.js +177 -0
- package/dist/client/index.html +2 -2
- package/dist/server/index.js +2 -2
- package/dist/session/remote-setup/SKILL.md +120 -0
- package/dist/session/remote-setup/glimmervoid.service +20 -0
- package/dist/session/statusline-relay.js +1 -1
- package/dist/session/visions-relay.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/agent-api-core-BeSecYrA.js +0 -336
- package/dist/chunks/config-store-DW0ONWV5.js +0 -1
- package/dist/chunks/contracts-CFm0dprb.js +0 -835
- package/dist/chunks/runtime-paths-DSmormp7.js +0 -1
- package/dist/client/assets/index-CNDdyYn0.js +0 -177
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import{_ as e,a as t,c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,v as _}from"./zod-BRLv4KqJ.js";import{n as v,r as y,t as b}from"./xterm-kR64YvZ-.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var x=g({attempt:c().int().positive(),limit:c().int().positive()}).refine(e=>e.attempt<=e.limit),S={error:l().nullable().optional(),lastRefreshedAt:c().finite().nonnegative().nullable().optional(),incident:l().nullable().optional(),nextAttemptAt:c().finite().nonnegative().nullable().optional(),retry:x.nullable().optional(),isRefreshing:t().optional(),refreshNotice:l().nullable().optional()},ee=f({lastRefreshedAt:c().finite().nonnegative().nullable(),error:l().nullable()}),te=g({lane:u([`my-prs`,`team-review`,`issues`])}),ne=g({ok:t(),error:l().optional(),freshness:ee.optional()}),re=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,C=/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/,ie=/^[A-Za-z0-9_=-]+$/;function ae(e){let t=e.split(`/`);return t.length!==2||!t.every(e=>re.test(e))?null:[t[0],t[1]]}var oe=/^[0-9a-f]{7,40}$/i,se=/^[0-9a-f]{40}$/;function ce(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 oe.test(r)?r.slice(0,t).toLowerCase():``}var w=l().regex(se),le=l().regex(/^[^/]+\/[^/]+$/);g({number:c().int().positive(),title:l(),body:l(),url:l(),author:g({login:l(),is_bot:t().optional()}).passthrough(),state:u([`OPEN`,`CLOSED`,`MERGED`]).optional(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),baseRefOid:w,headRefName:l().optional(),headRefOid:w,additions:c().int().nonnegative(),deletions:c().int().nonnegative(),files:p(g({path:l(),additions:c().int().nonnegative(),deletions:c().int().nonnegative()}).passthrough())}).passthrough();var T=g({path:l(),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l()}),ue=Object.freeze({STAMP:`APPROVE`,COMMENT:`APPROVE WITH NITS`,NEEDS_YOU:`REQUEST CHANGES`}),E=u([`APPROVE`,`APPROVE WITH NITS`,`REQUEST CHANGES`,`BLOCKED`]),de=r(e=>typeof e==`string`&&Object.hasOwn(ue,e)?ue[e]:e,E),fe=u([`CRITICAL`,`HIGH`,`MEDIUM`,`LOW`]),pe=T.extend({severity:fe.optional()}),me=g({path:l().min(1),line:c().int().positive().nullable(),side:u([`RIGHT`,`LEFT`]),severity:fe,reviewer:l().min(1),disposition:u([`ACTIONABLE`,`NIT`,`AMBIGUOUS`]).nullable(),body:l().min(1)}),he=g({goal:l().default(``),change:l(),checked:p(l()),gaps:p(l())});g({verdict:E,head:w,summary:l(),assessment:he.nullable(),findings:p(me)}),g({body:l(),commit_id:w,comments:p(g({path:l().min(1),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l().min(1)}))});var ge=u([`APPROVE`,`COMMENT`]),_e=u([`APPROVED`,`CHANGES_REQUESTED`,`COMMENTED`]),ve=new Set([`APPROVED`,`CHANGES_REQUESTED`]),ye=u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]),be=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]),xe={requestSource:u([`direct`,`team`]).default(`team`),isDraft:t().optional(),checksState:be.nullable().optional()},Se=g({login:l().min(1),state:_e,commit:w.nullable(),isViewer:t(),submittedAt:l().nullable().optional()});function Ce(e,t){return e||(t.includes(`CHANGES_REQUESTED`)?`CHANGES_REQUESTED`:t.includes(`APPROVED`)?`APPROVED`:`REVIEW_REQUIRED`)}function we(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 Te=g({head:w,base:w.optional(),verdict:E,summary:l(),body:l(),comments:p(T),wasPosted:t()}),Ee=Te.pick({head:!0,verdict:!0,summary:!0,wasPosted:!0}).extend({comments:p(pe)}),De=l().min(1).max(256).regex(ie),Oe=g({addressed:t(),reason:l().trim().min(1).max(4e3)}).strict(),ke=g({id:De,path:l(),line:c().int().positive().nullable(),isResolved:t(),viewerCanResolve:t(),comments:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(g({body:l(),author:g({login:l()}).nullable(),viewerDidAuthor:t(),createdAt:l().datetime(),url:l().url(),originalCommit:g({oid:w}).nullable()}))})});g({data:g({node:g({comments:ke.shape.comments}).nullable()}).nullable()}),g({pullRequest:g({reviewThreads:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(ke)})}).nullable()}),g({data:g({resolveReviewThread:g({thread:g({id:De,isResolved:m(!0)})})}).nullable(),errors:p(e()).optional()});var Ae=g({id:De,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:Oe.extend({head:w,judgedAt:c().finite(),lastReplyAt:l().datetime()}).optional(),resolveError:l().optional(),resolveAttemptReplyAt:l().optional(),judgeAttempt:g({head:w,lastReplyAt:l(),retryAt:c().finite()}).optional(),unjudgeable:g({head:w,lastReplyAt:l(),reason:l().min(1)}).optional()});g({merge_base_commit:g({sha:w}),files:p(g({filename:l(),previous_filename:l().optional(),patch:l().optional()})).max(300)});var je=g({total:c().int().nonnegative(),resolved:c().int().nonnegative()}),Me=g({...xe,key:l(),repo:le,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),reviewedHead:w,reviewedBase:w.optional(),verdict:de,summary:l(),assessment:he.optional(),body:l(),comments:p(pe),status:u([`ready`,`stale`,`posted`,`discarded`,`error`]),error:l().optional(),threads:p(Ae).optional(),viewerThreads:je.optional(),githubReviews:p(Se).optional(),reviewDecision:ye.nullable().optional(),liveHead:w.optional(),prCreatedAt:l().optional(),reviewedAt:c().finite().optional(),postedAt:c().finite().optional(),postedEvent:ge.optional(),priorReviewedHead:w.optional(),requeuedHead:w.optional(),earlierReview:Ee.optional()});function Ne(e){return e.status===`posted`&&e.postedEvent===`COMMENT`}var Pe=u([`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`]);function Fe(e){return e.action===`discard`||e.head!==void 0}var Ie=g({key:l().min(1),head:w.optional(),action:Pe,threadId:De.optional(),body:l(),comments:p(T)}).refine(e=>e.action!==`resolve-thread`||e.threadId!==void 0,{message:`resolve-thread requires threadId`,path:[`threadId`]}).refine(Fe,{message:`only discard may omit head`,path:[`head`]}),Le=g({key:l(),ok:t(),error:l().optional(),warning:l().optional()}),Re=g({sessionId:l().min(1),workDir:l().min(1),worktreePath:l().min(1),head:w,deadlineAt:c(),remainingAwakeMs:c().nonnegative().optional(),savedAt:c()}),ze=g({...xe,reviewDecision:ye.nullable().optional(),key:l(),repo:le,number:c().int().positive(),title:l(),url:l(),author:l(),prCreatedAt:l().optional()}),Be=g({draft:Me.nullable(),reviewedHead:w.nullable(),inFlight:t(),skipReason:l().nullable(),handReview:ze.optional(),reviewAttempts:c().int().nonnegative().default(0),resumable:Re.nullable().optional(),reviewedAt:c().optional(),threads:p(Ae).optional(),viewerThreads:je.optional(),autoResolvedThreadIds:p(De).optional(),githubReviews:p(Se).optional(),reviewDecision:ye.nullable().optional(),liveHead:w.optional(),requeuedHead:w.optional(),priorReview:Te.optional(),discardedReviewHead:w.optional(),requestedAt:c().finite().optional(),updatedAt:c().finite()});i(l(),Be);var Ve=u([`preparing`,`checkout`,`reviewing`]),He=g({at:c().finite(),tool:l(),detail:l()}),Ue=g({...xe,reviewDecision:ye.nullable().optional(),key:l(),repo:le,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),head:w,phase:Ve,startedAt:c().finite(),deadlineAt:c().finite().nullable(),toolCalls:c().int().nonnegative(),recentSteps:p(He),prCreatedAt:l().optional(),priorReviewedHead:w.optional()}),We=g({...S,type:m(`team-review-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),drafts:p(Me),inFlight:p(Ue),queued:p(ze).default([]),handReview:p(ze).default([]),team:g({org:l(),slug:l(),name:l(),avatarUrl:l()}).nullable().optional()}).passthrough(),Ge=u([`merged`,`draft`,`conflicts`,`behind`,`checks-failing`,`changes-requested`,`unresolved-threads`,`checks-pending`,`needs-approval`,`ready`,`unknown`]),Ke=c().int().nonnegative(),qe=l().regex(C),Je=l().regex(/^[1-9][0-9]*$/),Ye=o([qe,`#`,Je]),Xe=o([Ye,`@`,w]),Ze=l().refine(e=>Ye.safeParse(e).success),Qe=l().refine(e=>Xe.safeParse(e).success);d(`outcome`,[f({outcome:m(`pushed`)}),f({outcome:u([`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1)})]);var $e=f({outcome:u([`pushed`,`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1).optional(),at:c().finite()}),et=$e.extend({key:Ze,headRefOid:w,baseRefOid:w,consecutiveAttempts:c().int().min(1).optional()});f({keepMergeableKeys:p(Ze),keepMergeableAttemptKeys:p(Qe),keepMergeableAttempts:p(et).default([]),mergeQueueKeys:p(Ze).default([]),keepMergeablePushedHeadKeys:p(Qe).default([])});var tt=f({repo:qe,number:c().int().positive(),url:_(),source:u([`hook`,`sha`,`manual`]),linkedAt:c().finite()}),nt=f({links:p(tt).max(20),unlinkedKeys:p(Ze).default([])}),rt=g({repo:qe,number:c().int().positive(),keepMergeable:t()}),it=g({key:l(),ok:t(),error:l().optional()}),at=it,ot=g({repo:qe,number:c().int().positive(),mergeWhenReady:t()}),st=it,ct=u([`MERGE`,`SQUASH`,`REBASE`]),lt=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()}),ut=g({reviewer:l().nullable(),state:l(),submittedAt:l().nullable()}),dt=g({outcome:u([`rebased`,`failed`]),at:c().finite(),message:l()}),ft=g({at:c().finite(),message:l()}),D=g({key:l(),repo:qe,number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:w,headRefName:l().min(1),isCrossRepository:t(),headRefOid:w,isInMergeQueue:t(),mergeMethod:ct,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:Ke}),unresolvedThreads:Ke,threads:p(lt),behindBy:Ke.nullable(),reviewRequests:p(g({name:l(),isTeam:t(),avatarUrl:l().nullable()})),approvals:Ke,reviews:p(ut),stage:Ge,autoRebase:dt.optional(),keepMergeable:t().optional(),keepMergeableAttempt:$e.optional(),isKeepMergeableFixInFlight:t().optional(),mergeQueuePosition:c().int().positive().nullable().optional(),isMergeQueueHeldForRepairPush:t().optional(),mergeQueueFailure:ft.optional()}).refine(e=>e.key===`${e.repo}#${e.number}`),pt=f({key:Ze,autoRebase:D.shape.autoRebase,keepMergeable:D.shape.keepMergeable,keepMergeableAttempt:D.shape.keepMergeableAttempt,isKeepMergeableFixInFlight:D.shape.isKeepMergeableFixInFlight,mergeQueuePosition:D.shape.mergeQueuePosition,isMergeQueueHeldForRepairPush:D.shape.isMergeQueueHeldForRepairPush,mergeQueueFailure:D.shape.mergeQueueFailure}),mt=g({...S,type:m(`my-prs-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),viewer:l().nullable(),prs:p(pt),truncatedNote:l().nullable().optional(),isKeepMergeableEnabled:t().optional(),isMergeQueueEnabled:t().optional()}).passthrough();mt.extend({prs:p(D)});var ht=g({repo:qe,number:c().int().positive(),headRefOid:w}),gt=u([`merged`,`queued`,`auto-merge`,`unconfirmed`]),_t=g({key:l(),ok:t(),kind:gt.optional(),error:l().optional()}),vt=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()}),yt=g({__typename:m(`StatusContext`),context:l(),state:l()}),bt=a([vt,yt]),xt=g({hasNextPage:t(),endCursor:l().nullable()}),St=g({__typename:m(`PullRequest`),id:l().regex(ie),number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:w,headRefName:l().min(1),isCrossRepository:t(),headRefOid:w,isInMergeQueue:t(),mergeable:u([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:l(),reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),repository:g({nameWithOwner:qe,viewerDefaultMergeMethod:ct}),commits:g({nodes:p(g({commit:g({statusCheckRollup:g({id:l().regex(ie).optional(),state:u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),contexts:g({pageInfo:xt.optional(),nodes:p(bt)})}).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()}))})}),Ct=g({login:l()}).nullable();g({isResolved:t(),isOutdated:t(),path:l(),line:c().int().positive().nullable(),firstComment:g({totalCount:Ke,nodes:p(g({author:Ct,bodyText:l(),url:_(),createdAt:l()}))}),lastComment:g({nodes:p(g({author:Ct,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:xt,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:Ke,nodes:p(e())}),merged:g({issueCount:Ke,nodes:p(e())})}),errors:p(e()).optional()});var O=Object.freeze({min:0,exclusiveMin:!0,label:`a positive number`}),wt=Object.freeze({min:0,label:`zero or more`}),Tt=Object.freeze({min:0,max:300}),Et=Object.freeze({min:1,max:60}),Dt=Object.freeze({min:.5,max:2}),Ot=Object.freeze({flyingAnimalsMinGapSeconds:20,flyingAnimalsMaxGapSeconds:40,flyingAnimalsMinDurationSeconds:6.9,flyingAnimalsMaxDurationSeconds:11.5,flyingAnimalsScale:1,flyingAnimalsOnPhone:!0}),kt=Object.freeze({min:64,max:16384}),At=Object.freeze({min:0,max:65536}),jt=Object.freeze({min:0,max:65535}),Mt=Object.freeze({min:0,exclusiveMin:!0,max:2147483647/1e3}),Nt=O,Pt=O,Ft=O,It=O,Lt=O,Rt=wt,zt=O,Bt=O,Vt=O,Ht=O,Ut=O,Wt=O,Gt=O,Kt=O,qt=O,Jt=Object.freeze({min:60,max:21600,label:`between 60 and 21600`}),Yt=Object.freeze({min:1,label:`at least 1`}),Xt=Object.freeze({min:1,label:`at least 1`}),Zt=wt,Qt=Object.freeze({min:1,max:30,label:`between 1 and 30`}),$t=Object.freeze({min:1,max:1440}),en=Object.freeze({min:1,max:3650}),tn=Object.freeze({min:30,max:3650}),nn=Object.freeze({min:1,max:24}),rn=O,an=Object.freeze({scanIntervalMinutes:$t,retainDays:en,warehouseRetainDays:tn,sessionBlockHours:nn}),on=Object.freeze({min:5,max:120}),sn=Object.freeze({min:1,max:5}),cn=Object.freeze({min:1,max:50});Object.freeze({NON_NEGATIVE_NUMBER_RANGE:wt,FLYING_ANIMALS_GAP_RANGE:Tt,FLYING_ANIMALS_DURATION_RANGE:Et,FLYING_ANIMALS_SCALE_RANGE:Dt,KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE:on,PORT_RANGE:jt,POSTHOG_ESCALATION_RANGE:Gt,POSTHOG_FIX_TIMEOUT_RANGE:Jt,POSTHOG_INTERVAL_RANGE:Vt,POSTHOG_INVESTIGATION_TIMEOUT_RANGE:Ut,POSTHOG_MAX_CONCURRENT_RANGE:Ht,POSTHOG_MIN_USERS_RANGE:Wt,POSTHOG_TRAFFIC_BASELINE_RANGE:Qt,POSTHOG_TRAFFIC_COOLDOWN_RANGE:Zt,POSTHOG_TRAFFIC_MIN_USERS_RANGE:Xt,POSTHOG_TRAFFIC_MULTIPLIER_RANGE:Yt,REPLAY_BUFFER_KB_RANGE:kt,MEMORY_RESERVE_MB_RANGE:At,TASK_TITLE_TIMEOUT_RANGE:Mt,USAGE_BUDGET_RANGE:rn,USAGE_RETAIN_DAYS_RANGE:en,USAGE_SCAN_INTERVAL_RANGE:$t,VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE:Rt,VISIONS_COOLDOWN_MS_RANGE:It,VISIONS_DISPATCH_TIMEOUT_RANGE:zt,VISIONS_INTENT_THREAD_TTL_MS_RANGE:Bt,VISIONS_MAX_PER_HOUR_RANGE:Lt,VISIONS_QUIET_MS_RANGE:Ft,WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE:cn,WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE:sn});var ln=Object.freeze([`opened`,`checks-failed`,`review-requested`,`approved`,`commented`,`merged`]),un=Object.freeze([`notify`,`spawn`,`label`,`comment`]),dn=2e4,fn=65536,pn=50,mn=/^[a-z0-9][a-z0-9-]{0,63}$/,hn=/[\x00-\x1f\x7f,]|^-/,gn=(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})},_n=t({error:`workflows.enabled must be a boolean`}),vn=gn(`workflows.maxConcurrentSessions`,sn),yn=gn(`workflows.maxActionsPerPoll`,cn),bn=(e,t)=>p(t,{error:`${e} must be an array`}).min(1,{error:`${e} must list at least one entry when present`}),xn=l({error:`a workflow label name must be a string`}).trim().min(1,{error:`a workflow label name must not be empty`}).max(pn,{error:`a workflow label name must be at most ${pn} characters`}).refine(e=>!hn.test(e),{error:`a workflow label name must not start with a dash or hold a comma or control character`}),Sn=l({error:`a workflow comment body must be a string`}).min(1,{error:`a workflow comment body must not be empty`}).max(fn,{error:`a workflow comment body must be at most ${fn} characters`}).refine(e=>e.trim().length>0,{error:`a workflow comment body must not be blank`}),Cn=u(ln,{error:`workflows.rules[].trigger must be one of ${ln.join(`, `)}`}),wn=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(dn,{error:`a spawn action promptTemplate must be at most ${dn} characters`}).refine(e=>e.trim().length>0,{error:`a spawn action promptTemplate must not be blank`})}),f({type:m(`label`),name:xn}),f({type:m(`comment`),body:Sn})],{error:`workflows.rules[].actions[].type must be one of ${un.join(`, `)}`}),Tn=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:bn(`workflows.rules[].filters.authors`,l({error:`workflows.rules[].filters.authors must hold GitHub logins`}).regex(re,{error:`workflows.rules[].filters.authors must hold GitHub logins`})).optional(),labels:bn(`workflows.rules[].filters.labels`,xn).optional(),baseBranches:bn(`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`}),En=l({error:`workflows.rules[].id must be a string`}).regex(mn,{error:`workflows.rules[].id must be 1 to 64 lowercase letters, digits and dashes, starting with a letter or digit`}),Dn=t({error:`workflows.rules[].enabled must be a boolean`}),On=f({id:En,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:Dn.default(!1),repos:bn(`workflows.rules[].repos`,qe),filters:Tn.default({}),trigger:Cn,actions:bn(`workflows.rules[].actions`,wn)},{error:`workflows.rules[] must be an object`}),kn=f({enabled:_n.default(!0),maxConcurrentSessions:vn.default(2),maxActionsPerPoll:yn.default(20),rules:p(On,{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)}),An=f({id:En,enabled:Dn},{error:`a dashboard update of workflows.rules[] carries only id and enabled`});f({enabled:_n.optional(),maxConcurrentSessions:vn.optional(),maxActionsPerPoll:yn.optional(),rules:p(An,{error:`workflows.rules must be an array`}).optional()},{error:`a dashboard update of workflows carries only enabled, maxConcurrentSessions, maxActionsPerPoll and rule toggles`});var jn=c().int().nonnegative(),Mn=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),Nn=St.extend({author:g({login:l()}).nullable(),labels:g({nodes:p(g({name:l()}))}),comments:g({totalCount:jn})}),Pn=f({repo:qe,number:c().int().positive(),title:l(),url:_(),author:l().nullable(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),headRefName:l().min(1),headRefOid:w,labels:p(l()),commentCount:jn,reviewRequests:p(l()),checksState:Mn,reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable()}),Fn=f({polledAtMs:jn,prs:p(Pn)});f({repos:i(l().regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/),Fn)});var In=l().refine(e=>Ye.safeParse(e).success&&e===e.toLowerCase()&&Number.isSafeInteger(Number(e.slice(e.lastIndexOf(`#`)+1))));function Ln(e){return`${e.repo}#${e.number}`.toLowerCase()}g({repository:St.shape.repository.pick({nameWithOwner:!0}),number:St.shape.number,updatedAt:St.shape.updatedAt,headRefOid:St.shape.headRefOid,state:St.shape.state,commits:g({nodes:p(g({commit:g({statusCheckRollup:g({state:D.shape.checks.shape.state}).nullable()})}))}),reviewDecision:St.shape.reviewDecision,mergeable:St.shape.mergeable}),St.extend({author:Nn.shape.author.unwrap().extend({__typename:l().optional()}).nullable(),labels:Nn.shape.labels,comments:Nn.shape.comments,latestReviews:g({nodes:p(St.shape.latestReviews.shape.nodes.element.extend({commit:g({oid:l()}).nullable().optional()}))}),writerOpinionatedReviews:St.shape.latestOpinionatedReviews.optional()});var Rn=f({key:In,id:St.shape.id,repo:D.shape.repo,number:D.shape.number,title:D.shape.title,url:D.shape.url,author:Pn.shape.author,isAuthorBot:t(),labels:Pn.shape.labels,commentCount:Pn.shape.commentCount,isDraft:D.shape.isDraft,state:D.shape.state,createdAt:D.shape.createdAt,mergedAt:D.shape.mergedAt,updatedAt:D.shape.updatedAt,baseRefName:D.shape.baseRefName,baseRefOid:D.shape.baseRefOid,headRefName:D.shape.headRefName,headRefOid:D.shape.headRefOid,isCrossRepository:D.shape.isCrossRepository,isInMergeQueue:D.shape.isInMergeQueue,mergeMethod:D.shape.mergeMethod,mergeable:D.shape.mergeable,mergeStateStatus:D.shape.mergeStateStatus,reviewDecision:ye.nullable(),checks:D.shape.checks.strict(),rollupState:be.nullable(),unresolvedThreads:D.shape.unresolvedThreads,threads:p(D.shape.threads.element.strict()),behindBy:D.shape.behindBy,reviewRequests:p(D.shape.reviewRequests.element.strict()),approvals:D.shape.approvals,reviews:p(D.shape.reviews.element.extend({commit:w.nullable()}).strict()),opinionatedWriterReviewStates:p(l())}).refine(e=>e.key===Ln(e)),zn=n({type:m(`github-prs`),ts:c().finite().nonnegative(),prs:i(In,Rn).refine(e=>Object.entries(e).every(([e,t])=>e===t.key)),freshness:ee}),Bn=new Map,Vn=new Set;function Hn(e){let t=zn.safeParse(e);if(t.success){Bn=new Map(Object.entries(t.data.prs));for(let e of Vn)e()}}function Un(e){return Bn.get(e.toLowerCase())}function Wn(e){Vn.add(e)}function eee(e){return e===`remote`?`remote`:`local`}function tee(e,t){return eee(t)===`local`||e!==`shutdown`}var Gn=Object.freeze({setTimeoutFn:(e,t)=>setTimeout(e,t),clearTimeoutFn:e=>clearTimeout(e),setIntervalFn:(e,t)=>setInterval(e,t),clearIntervalFn:e=>clearInterval(e)});function Kn(e){return typeof e!=`object`||!e||!(`unref`in e)||typeof e.unref!=`function`||e.unref(),e}function qn({mode:e,delayMs:t,run:n,setTimeoutFn:r=Gn.setTimeoutFn,clearTimeoutFn:i=Gn.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&&Kn(o))}return{schedule:c,cancel:s,get isArmed(){return o!==null}}}var k=Object.freeze({DORMANT:`DORMANT`,INITIALIZING:`INITIALIZING`,STARTING:`STARTING`,RUNNING:`RUNNING`,WAITING:`WAITING`,IDLE:`IDLE`,COMPLETE:`COMPLETE`,DONE:`DONE`,FAILED:`FAILED`}),Jn=Object.freeze({[k.DORMANT]:`Dormant`,[k.INITIALIZING]:`Starting`,[k.STARTING]:`Starting`,[k.RUNNING]:`Working`,[k.WAITING]:`Needs Input`,[k.IDLE]:`Idle`,[k.COMPLETE]:`Complete`,[k.DONE]:`Exited`,[k.FAILED]:`Failed`}),Yn=Object.freeze([k.INITIALIZING,k.STARTING,k.RUNNING,k.WAITING,k.IDLE,k.COMPLETE]),Xn=Object.freeze([k.DONE,k.FAILED]),Zn=Object.freeze([k.WAITING,k.IDLE,k.COMPLETE]);function Qn(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 $n=Object.freeze({[k.DORMANT]:`not-started`,[k.INITIALIZING]:`starting`,[k.STARTING]:`starting`,[k.RUNNING]:`working`,[k.WAITING]:`needs-input`,[k.IDLE]:`idle`,[k.COMPLETE]:`complete`,[k.DONE]:`exited`,[k.FAILED]:`failed`}),er=`monitoring`,tr=e=>({fill:`none`,stroke:`currentColor`,"stroke-width":e,"stroke-linecap":`round`,"stroke-linejoin":`round`}),nr={fill:`currentColor`},rr=Object.freeze({"not-started":[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...tr(`1.6`),"stroke-linecap":`butt`,"stroke-dasharray":`2.6 2.1`}}],starting:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...tr(`1.8`),"stroke-opacity":`.25`}},{tag:`path`,attributes:{d:`M8 2a6 6 0 0 1 6 6`,...tr(`1.8`),class:`status-icon-spin`}}],working:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...tr(`1.4`),class:`status-icon-ping`}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...nr}}],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`,...tr(`1.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`2.2`,...nr}}],"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`,...tr(`2.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`14`,r:`1.55`,...nr}}],idle:[{tag:`rect`,attributes:{x:`3.6`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...nr}},{tag:`rect`,attributes:{x:`9.4`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...nr}}],complete:[{tag:`path`,attributes:{d:`M2.8 8.4l3.4 3.4 7-7.4`,...tr(`2.2`)}}],exited:[{tag:`rect`,attributes:{x:`3`,y:`3`,width:`10`,height:`10`,rx:`1.6`,...nr}}],failed:[{tag:`path`,attributes:{d:`M3.5 3.5l9 9M12.5 3.5l-9 9`,...tr(`2`)}}]});function ir(e,t){return!e||e.toLowerCase().endsWith(`[bot]`)?null:`https://avatars.githubusercontent.com/${encodeURIComponent(e)}?s=${t*2}`}function ar(e){return e.match(/[a-z0-9]/i)?.[0]?.toUpperCase()??`?`}function A(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function or(e,t,n){let r=A(e,t);return r.innerHTML=n,r}function sr(e,t){for(let[n,r]of t)e.style.setProperty(n,r)}function cr({login:e,url:t,cssPx:n}){let r=A(`span`,`avatar`);r.style.width=`${n}px`,r.style.height=`${n}px`;let i=()=>A(`span`,`avatar-monogram`,ar(e)),a=t===void 0?ir(e,n):t;if(!a)return r.append(i()),r;let o=A(`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 lr(e,t){let n=A(`span`,`avatar-stack`);for(let r of e){let e=cr({login:r.login,url:r.url,cssPx:t});e.title=r.title,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,r.title);let i=A(`span`,`avatar-badge`);i.dataset.tone=r.tone,e.append(i),n.append(e)}return n}function j(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 M(e,t){let n=e.querySelector(t);if(!(n instanceof HTMLElement))throw Error(`${t} matches no element`);return n}function ur(e,t,n,r=t){if(!n){let n=A(`span`,e,t);return n.title=r,n}let i=A(`a`,e,t);return i.title=r,i.href=n,i.target=`_blank`,i.rel=`noopener`,i}function dr(e,t){return e===k.RUNNING&&t===!0}function fr(e,t=!1){let n=e,r=dr(e,t),i=r?`Monitoring`:Jn[n]||e;return{icon:r?er:$n[n]??$n[k.DORMANT],label:i.toUpperCase(),isMonitoring:r}}function pr(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 mr(e,t,n){let r=A(`section`,`${e}-section`),i=A(`div`,`${e}-section-head`);return i.append(A(`h2`,`${e}-section-title`,t)),n&&i.append(A(`span`,`${e}-section-hint`,n)),r.append(i),r}function hr(e,t,n,r){let i=A(`span`,`${e}-stat`);return r&&(i.dataset.tone=r),i.append(A(`span`,`${e}-stat-value`,n),A(`span`,`${e}-stat-label`,t)),i}function gr(e){return Array.isArray(e?.projects)?e.projects:[]}function _r(e){return!e||!!e.closest(`[hidden]`)}function vr(e){return navigator.clipboard?.writeText?navigator.clipboard.writeText(e):null}function yr(e,t){e&&t&&e.parentElement!==t&&(e._adoptHome||={parent:e.parentElement,next:e.nextElementSibling},t.appendChild(e))}function br(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 N=new Map;function xr(e){return e.card?.dataset.session||e.nameEl?.textContent||``}function Sr(e){return typeof e==`string`?e:String(e)}function P(e){return typeof e==`string`?N.get(e):void 0}var Cr=document.getElementById(`sessions-container`),wr=Object.freeze({layout:`desktop`,activeView:`focus`,phoneScreen:null,focusedSessionId:null,selectedSessionId:null,borrowedCardId:null}),Tr=e=>e||null,Er=Object.freeze({setLayout:e=>({layout:e}),setActiveView:e=>({activeView:e}),setPhoneScreen:e=>({phoneScreen:Tr(e)}),focusSession:e=>({focusedSessionId:Tr(e)}),selectSession:e=>({selectedSessionId:Tr(e)}),borrowCard:e=>({borrowedCardId:Tr(e)})});function Dr(e){let t=Object.freeze({...wr,...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 wr))throw Error(`ui-state: unknown key "${r}"`);Object.is(t[r],e[r])||n.push(r)}return n}function o(e,r){let i=Er[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 Or=Dr(),kr=()=>Or.snapshot().activeView;function Ar(){return Or.snapshot().borrowedCardId}function jr(e,t,n,{className:r}={}){if(!e?.card||!n)return;let i=Ar();i&&i!==t&&Mr();let a=e.card;a._cardHostClass&&a._cardHostClass!==r&&a.classList.remove(a._cardHostClass),a._cardHostClass=r||``,r&&a.classList.add(r),yr(a,n),Or.dispatch(`borrowCard`,t),e._ensureTerminalReady?.(),e._setBorrowed?.(!0),e._showPreferredFace?.()}function Mr(){let e=Ar();if(Or.dispatch(`borrowCard`,null),!e)return null;let t=N.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,br(n,Cr)),e}var Nr=l().regex(C),Pr=l().regex(RegExp(`${C.source.slice(0,-1)}#[1-9][0-9]*$`)),Fr=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:Fr.shape.number,url:Fr.shape.url,title:Fr.shape.title,state:u([`OPEN`,`MERGED`,`CLOSED`]),isDraft:t()}).nullable()).max(5)})}).nullable()});function Ir({state:e,isDraft:t}){return e===`OPEN`?t?`draft`:`open`:e===`MERGED`?`merged`:`closed`}var Lr={key:l(),repo:Nr,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()},Rr=u([`project`,`me`,`team`]),zr={...Lr,sources:p(Rr).nonempty().refine(e=>new Set(e).size===e.length),teams:p(Nr),projectId:l().nullable(),pullRequests:p(Fr).max(5).default([])},Br=g(zr).refine(e=>e.key===`${e.repo}#${e.number}`),Vr=g({...zr,sessionId:l().nullable().default(null)}).refine(e=>e.key===`${e.repo}#${e.number}`),Hr=g({...Lr,state:u([`open`,`closed`])});g({number:Lr.number,title:Lr.title,html_url:Lr.url,state:u([`open`,`closed`]),labels:p(a([l(),g({name:l()})])),assignees:p(g({login:l()})),user:g({login:l()}).nullable(),comments:Lr.comments,created_at:Lr.createdAt,updated_at:Lr.updatedAt,repository_url:l().url().optional(),pull_request:e().optional()}),g({items:p(e()),total_count:c().int().nonnegative(),incomplete_results:t()}),g({ok:t(),items:p(Hr),isComplete:t(),error:l()}),g({issues:p(Br),lastSyncAt:c().finite().nonnegative().nullable(),perRepoSync:i(Nr,g({lastSyncAt:c().finite().nonnegative().nullable(),ticks:c().int().nonnegative(),needsFullReconcile:t()})),sessionLinks:i(Pr,l()).default({}),pullRequestsFetchedAt:i(Pr,h()).default({})});var Ur=g({type:m(`issues-status`),ts:c().finite(),configured:t(),reason:l().nullable(),lastSyncAt:c().finite().nonnegative().nullable(),issues:p(Vr),...S}).passthrough(),Wr=2e4,Gr=4e3,Kr=524288,qr=1e4,Jr=`ExitPlanMode`,Yr=4096,Xr=/^ {0,3}(#{1,6})[ \t]+(.*)$/;function Zr(e){let t=e.trimEnd(),n=t.length;for(;n>0&&t[n-1]===`#`;)n--;if(n===t.length||n===0)return t;let r=t[n-1];return r!==` `&&r!==` `?t:t.slice(0,n).trimEnd()}function Qr(e,{overlongLine:t}){if(t===`reject`&&e.length>4096)return null;let n=Xr.exec(e.slice(0,Yr));return n?{level:n[1].length,text:Zr(n[2])}:null}var $r=g({plan:l().min(1),planFilePath:l().min(1),agent_id:l().min(1).optional(),agent_type:l().min(1).optional()}).passthrough();g({tool_name:m(Jr),tool_input:$r,agent_id:l().min(1).optional(),agent_type:l().min(1).optional()}).passthrough(),g({plan:l(),planFilePath:l(),agentId:l().nullable(),agentType:l().nullable()}).extend({sessionId:l().min(1),revision:c().int().positive(),receivedAt:c().finite()});var ei=Object.freeze([`open`,`released`,`decided`,`closed`]),ti=u(ei),ni=Object.freeze([`approve`,`approve-accept-edits`,`revise`,`terminal`]),ri=u(ni),ii=g({heading:l().max(Gr).nullable(),comment:l().min(1).max(Gr)}),ai=g({id:l().min(1),agentId:l().nullable(),revision:c().int().positive(),decision:ri,feedback:l().max(Wr).optional(),comments:p(ii).max(40).optional(),plan:l().min(1).max(Kr).optional()}),oi=g({revision:c().int().positive(),receivedAt:c().finite(),chars:c().int().nonnegative(),title:l()}),si=g({revision:c().int().positive(),since:c().finite()}),ci=g({agentId:l().nullable(),agentType:l().nullable(),revisions:p(oi),state:ti,openRevision:si.nullable(),approvedRevision:c().int().positive().nullable(),lastDecision:ri.nullable()});g({reviews:p(ci)});var li=g({agentId:l().nullable(),revision:c().int().nonnegative(),plan:l(),planFilePath:l(),receivedAt:c().finite()}),ui=g({id:l(),agentId:l().nullable(),agentType:l().nullable(),revision:c().int().positive(),receivedAt:c().finite(),state:ti,lastDecision:ri.nullable(),approvedRevision:c().int().positive().nullable(),chars:c().int().nonnegative(),title:l(),hasPlan:t()}),di=g({id:l(),agentId:l().nullable(),planFilePath:l(),changedAt:c().finite()}),fi=g({id:l(),reviews:p(ci),body:li.nullable()});Object.freeze([`file`,`subsystem`,`co-change`,`hotspot`,`blast`,`untested`,`collision`,`link`]);var pi=l().min(1),mi=l().min(1),hi=c().int().nonnegative(),gi=p(mi).max(20),_i=u([`added`,`modified`,`deleted`,`renamed`,`untracked`]),vi=f({factId:pi,path:mi,previousPath:mi.optional(),status:_i,isCommitted:t()}),yi=f({factId:pi,agentsPath:mi,title:l(),paths:p(mi).min(1)}),bi=f({factId:pi,path:mi,partner:mi,support:hi,confidence:c().min(0).max(1)}),xi=f({factId:pi,path:mi,commitCount:hi,fixCommitCount:hi}),Si=f({factId:pi,path:mi,directDependents:gi,directDependentCount:hi,transitiveDependentCount:hi,dependentTests:gi,dependentTestCount:hi}),Ci=f({factId:pi,path:mi}),wi=f({factId:pi,path:mi,otherSessionId:l().min(1),otherSessionName:l()}),Ti=f({factId:pi,providerRepo:l().min(1),packageName:l().min(1),packageDir:l(),consumerManifest:mi,versionSpec:l(),isLocalLink:t(),providerChangedPathCount:hi,importers:gi,importerCount:hi,changedImporterCount:hi}),Ei=f({name:l().min(1),root:l().min(1),sessionPathPrefix:l(),base:l().nullable(),files:p(vi),subsystems:p(yi),coChangeGaps:p(bi),hotspots:p(xi),blastRadius:p(Si),untestedFiles:p(Ci),collisions:p(wi),links:p(Ti),error:l().nullable()}),Di=f({sessionId:l().min(1),sig:l().nullable(),generatedAt:c().finite(),repos:p(Ei),error:l().min(1).optional()}),Oi=u([`decision`,`retraction`,`conjecture`,`resolution`,`dismissal`,`defect`,`experiment`,`close`,`unable`,`escalation`,`acknowledgement`,`enactment`]),ki={id:l().min(1),at:h(),session:l(),agent:l(),commit:l().nullable(),dirty:t(),binding:l()},Ai={of:l().min(1),because:l()},ji=n({id:l(),text:l()}),Mi=d(`kind`,[n({...ki,kind:m(`decision`),chose:l(),over:p(l()),because:l()}),n({...ki,kind:m(`retraction`),...Ai}),n({...ki,kind:m(`conjecture`),observation:l(),couldBe:p(l()),discriminatedBy:l()}),n({...ki,kind:m(`resolution`),...Ai,as:l().optional()}),n({...ki,kind:m(`dismissal`),...Ai}),n({...ki,kind:m(`defect`),what:l(),evidence:l(),files:p(l())}),n({...ki,kind:m(`experiment`),expectation:l(),context:p(l()),actions:p(ji),criteria:p(ji)}),n({...ki,kind:m(`close`),of:l(),outcome:u([`success`,`failure`,`inconclusive`]),results:i(l(),e())}),n({...ki,kind:m(`unable`),what:l(),because:l()}),n({...ki,kind:m(`escalation`),what:l(),because:l()}),n({...ki,kind:m(`acknowledgement`),...Ai}),n({...ki,kind:m(`enactment`),practice:l(),results:i(l(),e())})]),Ni=a([Mi,g({id:l().min(1),kind:l().min(1).refine(e=>!Oi.safeParse(e).success)})]);n({branch:l().nullable(),escalations:p(e()),records:p(Ni),citedBy:i(l(),p(e())),damaged:p(e())});var Pi=f({id:l().min(1),at:h().nullable(),kind:l().min(1),text:l().max(280),detail:l().max(280).nullable(),supersedes:l().nullable()}),Fi=d(`ok`,[f({ok:m(!0),latest:Pi.nullable()}),f({ok:m(!1),reason:l().min(1).max(200)})]),Ii=f({journal:Fi,updatedAt:c().finite()}),Li=/^[a-zA-Z0-9_\-. ()]{1,64}$/,Ri=`Session name may only contain letters, numbers, spaces, dashes, dots, underscores, and parentheses (max 64 chars)`,zi=/[\x00-\x1f\x7f-\x9f]/,Bi=l().refine(e=>!zi.test(e)).trim().max(120);g({title:l().nullable(),name:l().nullable().optional()}).strict();var Vi=u(k),Hi=u([`finished`,`failed`]),Ui=g({at:c().finite().nullable(),kind:l(),reason:l().nullable()}).passthrough(),Wi=4e3,Gi=1e3,Ki=2e3,qi=g({question:l().min(1).max(Gi),header:l().max(100).default(``),options:p(g({label:l().min(1).max(200),description:l().max(Gi).default(``)})).min(1).max(8),multiSelect:t().default(!1)}),Ji=g({requestId:a([l().min(1).max(128),c().int()]),kind:u([`command`,`fileChange`,`permissions`,`tool`,`question`]),summary:l().max(Wi),isSummaryTruncated:t(),toolName:l().max(200).optional(),questions:p(qi).min(1).max(4).optional(),alwaysAllowSummary:l().max(Wi).optional()}),Yi=i(l().max(Gi),l().max(Ki)),Xi=u([`accept`,`acceptForSession`,`decline`]),Zi=80,Qi=Object.freeze({notInstalled:`not installed`,unsupportedVersion:`unsupported version`,codexHooksUntrusted:`Codex hooks need trust in /hooks`}),$i=d(`active`,[g({active:m(!0)}).strict(),g({active:m(!1),reason:l().min(1).max(Zi),version:l().optional()}).strict()]),ea=g({id:l(),name:l(),taskTitle:Bi.nullable().default(null),taskTitleIsCustom:t().default(!1),path:l(),agent:l(),state:Vi,stateSince:c(),dangerouslySkipPermissions:t(),saneYolo:t().default(!1),ephemeral:t(),ownerId:l().nullable().optional(),isWorktree:t(),isWorkspace:t().default(!1),remoteWorkspace:l().nullable().default(null),isGuarded:t().default(!1),isGuardrailsReleased:t().default(!1),resumeSessionId:l().nullable(),activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),isCompacting:t().default(!1),isWaitingForMemory:t().default(!1),pendingWakeup:Ui.nullable(),pendingPromptKind:l().nullable(),conversationApproval:Ji.nullable().default(null),hasConversationBridge:t().default(!1),isConversationViewOn:t().default(!1),hasPlan:t().default(!1),mergeStatus:l().nullable(),mergeReason:l().nullable(),worktreeNotice:l().nullable(),failureReason:l().nullable().optional(),unseenOutcome:Hi.nullable().default(null),effectiveBase:l().nullable(),linkedPrs:p(tt).default([]),coherenceHooks:$i.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 ta=[`push`,`spawn`,`send`,`read`,`close`,`attention`,`board`,`edit`,`review`,`reviews`,`prs`,`link-pr`,`settings`];[...ta],g({prompt:l({error:`prompt must be a string`}).min(1,{error:`prompt must not be empty`}).max(2e4,{error:`prompt must be at most 20000 characters`}).refine(e=>!e.trimStart().startsWith(`-`),{message:`prompt must not start with a dash, which the agent CLI would read as an option`}),name:l({error:`name must be a string`}).min(1,{error:`name must not be empty`}).max(200,{error:`name must be at most 200 characters`}).optional(),agent:l({error:`agent must be a string`}).min(1,{error:`agent must not be empty`}).max(40,{error:`agent must be at most 40 characters`}).optional()}).strict();var na=l({error:`the session must be a string`}).min(1,{error:`the session must not be empty`}).max(300,{error:`the session must be at most 300 characters`});g({words:p(l({error:`each word must be a string`}).max(2e4,{error:`each word must be at most 20000 characters`}),{error:`words must be a list`}).min(1,{error:`send needs text`}).max(5e3,{error:`send takes at most 5000 words`})}).strict(),g({child:na.optional()}).strict(),g({child:na,discard:t().optional()}).strict();var ra=g({from:u([`parent`,`child`,`glimmervoid`]),at:c().finite(),text:l()}).strict();g({ok:m(!0),channels:p(g({sessionId:l(),name:l(),entries:p(ra),dropped:c().int().nonnegative()}).strict())}).strict(),g({note:l({error:`note must be a string`}).min(1,{error:`note must not be empty`}).max(500,{error:`note must be at most 500 characters`})}).strict(),a([g({ok:m(!0),pending:t()}).strict(),g({ok:m(!1),error:l()}).strict()]),g({id:ea.shape.id,name:ea.shape.name,agent:ea.shape.agent,state:ea.shape.state,ephemeral:ea.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 ia=ze.pick({key:!0,title:!0,url:!0,author:!0});g({ok:m(!0),configured:t(),reason:l().nullable(),reviewing:p(ia.extend({phase:Ue.shape.phase})),queued:p(ia),drafts:p(ia.extend({status:Me.shape.status,verdict:l(),summary:Me.shape.summary,comments:c().int().nonnegative(),isOutOfDate:t()}))}).strict(),g({ok:m(!0),configured:t(),prs:p(g({key:D.shape.key,title:D.shape.title,url:D.shape.url,state:D.shape.state,isDraft:D.shape.isDraft,stage:D.shape.stage,reviewDecision:D.shape.reviewDecision,approvals:D.shape.approvals,unresolvedThreads:D.shape.unresolvedThreads,behindBy:D.shape.behindBy,mergeable:D.shape.mergeable,isInMergeQueue:D.shape.isInMergeQueue,checks:D.shape.checks.pick({state:!0,failing:!0})}).strict())}).strict();var aa=4096;g({path:l({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(aa,{error:`path must be at most ${aa} characters`})}).strict();var oa=g({path:l(),name:l(),surfacedAt:c().finite()}).strict();g({commands:p(g({name:u(ta),answers:t(),reason:l().optional()}).strict()),guarded:t(),boundary:u([`os-sandbox`,`workspace`,`none`]),environment:g({name:l(),workspace:l(),state:l()}).strict().nullable(),deadEnds:p(g({blocked:l(),route:l()}).strict())}).strict().extend({ok:m(!0)}).strict();var sa=4e3,ca=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()}),la=d(`kind`,[ca.extend({kind:m(`prompt`),text:l()}),ca.extend({kind:m(`expansion`),text:l(),toolUseId:l().min(1).optional()}),ca.extend({kind:m(`thinking`),text:l()}),ca.extend({kind:m(`assistant`),text:l()}),ca.extend({kind:m(`tool_call`),toolUseId:l().min(1),name:l().min(1),input:e()}),ca.extend({kind:m(`tool_result`),toolUseId:l().min(1),content:l(),isError:t(),truncated:t()}),ca.extend({kind:m(`session`),vendor:l().min(1),transcriptPath:l().min(1),reason:l().min(1).optional()}),ca.extend({kind:m(`notice`),text:l().max(sa)}),ca.extend({kind:m(`raw`),line:l().max(sa)})]);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 ua=l().max(16384),da=p(ua).max(4096),fa=g({model:ua.nullable(),mcpServers:da,plugins:p(g({name:ua,skills:da,agents:da})).max(4096),skills:da,agents:da,hookEvents:p(g({event:ua,runCount:c().int().nonnegative()})).max(4096),hookCommands:p(l().max(65536)).max(4096)}),pa=u([`release`,`main`]),ma=u([`idle`,`running`,`staged`,`succeeded`,`failed`,`discarded`,`interrupted`]),ha=u([`fetch`,`stage`,`install`,`link-deps`,`build`]),ga=u([`pending`,`running`,`succeeded`,`failed`]),_a=g({id:ha,status:ga,startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),outputTail:p(l())}).strict(),va=g({state:ma,fromSha:l().nullable(),toSha:l().nullable(),toVersion:l().nullable(),channel:pa,steps:p(_a),activeStep:ha.nullable(),reason:l().nullable(),startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),failedAtHandOff:t().optional()}).strict(),ya=va.pick({state:!0,activeStep:!0,reason:!0,startedAt:!0,finishedAt:!0}),ba=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,xa=/^[A-Za-z_][A-Za-z0-9_]*$/,Sa=l().regex(/^[^/\s]+\/[^/\s]+$/),Ca=c().finite(),wa=l().min(1),Ta=Object.freeze([`CLAUDE_CODE_OAUTH_TOKEN`]),F=l().regex(ba);function Ea(e){return new Set(e.map(e=>e.id)).size===e.length}var Da=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-merged-prs`),repo:Sa,minBodies:c().int().min(1),limit:c().int().min(1).max(500)})]),Oa=d(`kind`,[f({kind:m(`none`)}),f({kind:m(`pr-checkout`)})]),ka=u([`review-findings`,`json`]),Aa=f({promptTemplate:wa,output:ka,timeoutSeconds:c().int().min(30).max(14400)}),ja=f({id:F,env:i(l().regex(xa),l()).refine(e=>Ta.every(t=>!Object.hasOwn(e,t)),{message:`arm env must not set ${Ta.join(`, `)}; Glimmervoid injects it per cell`}).optional(),extraArgs:p(l()).optional(),setup:f({command:p(wa).min(1)}).optional()}),Ma=d(`kind`,[f({kind:m(`llm-judge-match`),model:wa})]);f({id:F,title:wa,caseSource:Da,workspace:Oa,subject:Aa,arms:p(ja).min(2).refine(Ea,{message:`arm ids must be unique`}),baselineArm:F,trials:c().int().min(1).max(20),scorer:Ma}).refine(e=>e.arms.some(t=>t.id===e.baselineArm),{message:`baselineArm must name one of the arms`,path:[`baselineArm`]});var Na=f({id:F,text:wa,tags:p(F),path:wa.optional(),line:c().int().positive().optional()}),Pa=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-pr`),repo:Sa,number:c().int().positive(),url:wa,minedAt:Ca})]);f({id:F,input:i(l(),e()),references:p(Na).min(1).refine(Ea,{message:`reference ids must be unique`}),source:Pa}),g({repo:Sa,number:c().int().positive(),reviewedSha:w,baseSha:w,changedFiles:p(wa)});var Fa=u([`found`,`partial`,`missed`]),Ia=f({referenceId:F,verdict:Fa,findingIndexes:p(c().int().nonnegative())}),La=u([`scored`,`invalid`,`error`]),Ra=f({caseId:F,armId:F,trial:c().int().min(1),status:La,startedAt:Ca,finishedAt:Ca,degradedReasons:p(wa),findingCount:c().int().nonnegative(),judgements:p(Ia),costUsd:c().finite().nonnegative().nullable(),error:wa.nullable()}),za=u([`running`,`completed`,`interrupted`,`failed`]);f({id:F,suiteId:F,status:za,startedAt:Ca,finishedAt:Ca.nullable(),error:wa.nullable(),cells:p(Ra)});var Ba=c().min(0).max(1).nullable(),Va=f({trials:c().int().nonnegative(),recall:Ba,recallByTag:i(F,Ba),degraded:c().int().nonnegative(),invalid:c().int().nonnegative(),costUsd:c().finite().nonnegative().nullable()}),Ha=f({caseId:F,arms:i(F,Va),deltaVsBaseline:i(F,c().min(-1).max(1).nullable())}),Ua=f({runId:F,suiteId:F,status:za,baselineArm:F,armIds:p(F),rows:p(Ha),totals:i(F,Va)}),Wa=u([`mine`,`run`,`cancel`]),Ga=g({suiteId:F,action:Wa}),Ka=g({suiteId:F,action:Wa,ok:t(),error:l().optional(),runId:F.optional()}),qa=u([`setup`,`preflight`,`workspace`,`subject`,`judge`]),Ja=g({suiteId:F,runId:F,caseId:F.nullable(),armId:F,trial:c().int().min(1),phase:qa,cellIndex:c().int().nonnegative(),cellCount:c().int().positive(),startedAt:Ca}),Ya=g({id:F,title:l(),error:l().nullable(),caseCount:c().int().nonnegative(),candidateCount:c().int().nonnegative(),armIds:p(F),baselineArm:F.nullable(),latestReport:Ua.nullable()}),Xa=g({type:m(`benchmark-status`),ts:Ca,configured:t(),reason:l().nullable(),suites:p(Ya),inFlight:Ja.nullable()}).passthrough(),Za=g({__typename:l(),login:l()}).nullable();g({number:c().int().positive(),title:l(),url:wa,mergedAt:l().nullable(),reviewThreads:g({totalCount:c().int().nonnegative()}),reviews:g({totalCount:c().int().nonnegative()})});var Qa=g({path:l(),line:c().int().positive().nullable(),originalLine:c().int().positive().nullable(),comments:g({nodes:p(g({databaseId:c().int().positive(),author:Za,body:l(),createdAt:l(),originalCommit:g({oid:w}).nullable()}))})}),$a=g({databaseId:c().int().positive(),author:Za,body:l(),submittedAt:l().nullable(),commit:g({oid:w}).nullable()}),eo=d(`__typename`,[g({__typename:m(`BaseRefChangedEvent`),createdAt:l()}),g({__typename:m(`BaseRefForcePushedEvent`),createdAt:l(),beforeCommit:g({oid:w}).nullable()})]);g({author:Za,baseRefOid:w,reviewThreads:g({pageInfo:g({hasNextPage:t()}),nodes:p(Qa)}),reviews:g({pageInfo:g({hasNextPage:t()}),nodes:p($a)}),timelineItems:g({pageInfo:g({hasNextPage:t()}),nodes:p(eo)})}),g({mergeBaseSha:w,changedFiles:p(wa),isFileListComplete:t()});var I=l().nullable().optional(),L=l(),nee=g({path:l(),reason:l()}).strict(),to=nt.shape.unlinkedKeys.unwrap().element,no=/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/([0-9]+)(?:[/?#].*)?$/i;function ro(e){let t=e.trim(),n=no.exec(t),r=n?`${n[1]}#${n[2]}`:t,i=to.safeParse(r);return i.success?i.data:null}function R(e,t){return n({type:m(e),...t})}function io(e={}){return n(e)}var z=l().nullable(),B=c().finite(),ao=B.optional(),oo=z.optional(),so=io(),co=p(e()),lo=c().int().positive(),uo=l().min(1).max(aa),fo=p(a([io({at:B,tool:l(),detail:l()}),io({at:B,note:l()})]));g({id:l(),label:l(),command:l(),args:p(l()),resolvable:t().nullable()}).strict();var po=g({name:l(),template:l(),parameters:i(l(),l()),hourlyCostUsd:c().nullable(),idleStopMinutes:c()}),mo=p(po).nullable(),ho=u([`claude-code`,`codex`]),go=g({agent:ho,state:u([`signed-in`,`signed-out`,`connecting`,`failed`]),source:u([`host`,`glimmervoid`]).nullable(),verificationUrl:l().nullable(),userCode:l().nullable(),needsPastedCode:t(),reason:l().nullable()}).strict(),_o=p(go),vo=g({setupWarning:z,lastFailure:g({message:l(),failedAt:B}).nullable()}),yo=g({id:L,session:l(),taskTitle:Bi.nullable().optional(),taskTitleIsCustom:t().optional(),path:l(),agent:l(),state:Vi,stateSince:B,skipPerms:t(),saneYolo:t(),worktree:t(),workspace:t().optional(),remoteWorkspace:l().optional(),guarded:t().optional(),guardrailsReleased:t().optional(),resumeSessionId:z,ephemeral:t().optional(),ownerId:L.optional(),linkedPrs:p(tt).optional()}),bo=4096,xo=bo+2*(Kr+Wr+80*Gr),So=g({reason:l(),message:l()}),Co=u([`npm-global`,`npx`,`clone`,`unknown`]),wo={updateAvailable:t(),current:z,latest:z,currentSha:z,latestSha:z,releaseUrl:z,command:l(),flavor:Co,platform:l(),installedBranch:z,upstream:z,isTreeClean:t().nullable(),lastCheckAt:B,channel:pa,behindCount:c().int().nonnegative().nullable(),reason:z,deprecation:z,journalSummary:ya.nullable(),applyRefusal:So.nullable()};g(wo);var To=8192,Eo=g({name:l().max(128),stack:l().max(To)}).strict(),Do=Object.freeze([`view_shown`,`operator_action`]);Object.freeze([`focus`,`zen`,`prs`,`issues`,`usage`,`radar`,`visions`,`hooks`,`trace`,`benchmarks`,`settings`]),Object.freeze({usage:[`sort`,`range`,`period`,`expand`,`refresh`],issues:[`scope`,`filter`,`search`,`filters-toggle`,`select`,`back`,`go-to-session`,`open-session`,`refresh`],radar:[`report`,`open-session`,`resolve`,`suppress`,`archive-investigation`],reviews:[`open-session`,`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`,`merge`,`keep-mergeable`,`merge-when-ready`,`refresh`]}),Object.freeze([`usage`,`issues`,`radar`,`reviews`]);var Oo=[`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 ko(t){return R(t,{id:L,force:e().optional()})}var Ao=Oo.map(ko),jo=[R(`add-session`,{name:l(),path:l(),repos:p(l()).optional(),agent:l().optional(),dangerouslySkipPermissions:t().optional(),unguarded:t().optional(),runInPlace:t().optional(),environment:l().optional(),requestId:I}),R(`remove-session`,{id:L,force:e().optional(),discardWork:t().optional(),confirmedKeptPaths:p(l()).optional(),requestId:I}),R(`list-conversations`,{id:L,requestId:I}),R(`resume-conversation`,{id:L,conversationId:l()}),R(`rename-session`,{id:L,newName:l()}),R(`get-workspace-repos`,{id:L,requestId:I}),R(`set-workspace-repos`,{id:L,repos:p(l()),requestId:I}),R(`set-session-title`,{id:L,title:Bi}),R(`link-session-pr`,{id:L,key:to}),R(`unlink-session-pr`,{id:L,key:to}),R(`ping`,{requestId:I}),R(`get-settings`,{requestId:I}),R(`get-agent-logins`,{requestId:I}),R(`start-remote-setup`,{agent:ho,requestId:I}),R(`agent-connect`,{agent:ho,action:u([`start`,`cancel`]),requestId:I}),R(`agent-connect-code`,{agent:ho,code:l(),requestId:I}),R(`update-settings`,{settings:i(l(),e()),requestId:I}),R(`scan-repo-roots`,{requestId:I,includeSuggestions:t().optional()}),R(`list-agents`,{requestId:I,rescan:t().optional()}),R(`get-radar-report`,{issueId:a([l(),c()]),requestId:I}),R(`radar-open-session`,{projectId:a([l(),c()]),issueId:a([l(),c()]),requestId:I}),R(`issue-detail`,{requestId:l().min(1),repo:Nr,issueNumber:c().int().positive()}),R(`open-issue-session`,{requestId:I,projectId:l(),repo:Nr,issueNumber:c().int().positive()}),R(`radar-issue-action`,{projectId:a([l(),c()]),issueId:a([l(),c()]),action:l(),requestId:I}),R(`open-team-review-session`,{requestId:I,key:to}),R(`team-review-action`,{...Ie.shape,requestId:I}).refine(Fe,{message:`only discard may omit head`,path:[`head`]}),R(`benchmark-action`,{...Ga.shape,requestId:I}),R(`my-pr-merge`,{...ht.shape,requestId:I}),R(`my-pr-keep-mergeable`,{...rt.shape,requestId:I}),R(`my-pr-merge-when-ready`,{...ot.shape,requestId:I}),R(`github-polling-refresh`,{...te.shape,requestId:I}),R(`radar-archive-investigation`,{id:e().optional(),requestId:I}),R(`telegram-test`,{requestId:I}),R(`request-usage-report`,{requestId:I,days:e().optional(),force:e().optional()}),R(`request-hooks-report`,{requestId:I}),R(`save-hook`,{hook:i(l(),e()),requestId:I}),R(`delete-hook`,{id:l(),requestId:I}),R(`shutdown`),R(`restart-server`),R(`focus-change`,{focused:t()}),R(`request-health-snapshot`),R(`update-check`),R(`update-apply`),R(`session-trace`,{id:L,requestId:I,after:c().int().nonnegative().default(0),endingAt:a([c().int().nonnegative(),m(`tail`)]).optional()}),R(`session-plan`,{id:L,agentId:z,revision:lo.optional(),draft:t().optional()}),R(`plan-decision`,ai.shape),R(`set-session-conversation-view`,{id:L,isOn:t()}),R(`set-session-guardrails`,{id:L,isOn:t()}),R(`conversation-approval`,{id:L,requestId:Ji.shape.requestId,decision:Xi,answers:Yi.optional()}),R(`session-doc-read`,{id:L,path:uo,requestId:I}),R(`session-doc-save`,{id:L,path:uo,text:l(),baseHash:l().min(1),requestId:I}),R(`session-coherence-journal`,{id:L,requestId:I}),R(`session-setup`,{id:L,requestId:I}),R(`client-error`,Eo.shape),R(`dashboard-telemetry`,{event:u(Do),properties:i(l(),e())}),R(`dismiss`,{id:L,force:e().optional(),expectedState:Vi.optional()}),...Ao];d(`type`,jo),Object.freeze(`snapshot.hooks-report.save-hook-result.add-session-result.start-remote-setup-result.remove-session-result.agent-logins.delete-hook-result.workspace-repos.set-workspace-repos-result.hooks-updated.state-change.session-added.session-removed.session-renamed.session-title.session-prs.session-modified.session-git.session-coherence-hooks.session-agents.session-wakeup.session-prompt.session-conversation.session-merge-status.session-worktree-blocked.session-worktree-warning.session-worktree-ready.session-diff.session-diff-error.change-map.branch-sync-status.session-changed.post-turn-result.debug-state-response.session-trace-response.session-trace-changed.session-plan-changed.session-plan-draft.session-plan-response.session-docs-changed.session-docs-snapshot.session-doc-response.session-doc-save-result.session-coherence.session-coherence-snapshot.session-coherence-journal-response.session-setup-response.notify.update-status.update-progress.post-turn-leftovers.error.session-error.settings.settings-error.settings-updated.pong.agents-listed.repo-roots-scanned.conversations.resume-conversation-ack.health-snapshot.radar-status.radar-investigation-activity.radar-investigation-finished.radar-report.radar-open-session-result.issue-detail-result.open-issue-session-result.open-team-review-session-result.radar-issue-action-result.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 Mo=[R(`snapshot`,{sessions:p(ea),serverBuild:z}),R(`hooks-report`,{requestId:I,ts:ao,hooks:p(so).optional(),builtin:p(so).optional(),events:p(io({name:l(),matcher:z,description:l(),http:t().optional()})).optional(),projects:p(io({id:l(),name:l(),agent:l()})).optional(),limits:io({maxTimeoutSec:c().int().positive()}).optional(),error:oo}),R(`save-hook-result`,{requestId:I,ok:t(),error:oo,hook:so.optional()}),R(`add-session-result`,{requestId:I,ok:t(),error:oo,reason:u([`not-git`]).optional()}),R(`remove-session-result`,{requestId:I,ok:t(),error:oo,canDiscardWork:t().optional(),keptPaths:p(nee).optional()}),R(`agent-logins`,{requestId:I,logins:_o,error:oo}),R(`start-remote-setup-result`,{requestId:I,ok:t(),error:oo,sessionId:l().optional(),sessionName:l().optional()}),R(`delete-hook-result`,{requestId:I,ok:t(),error:oo,id:l().optional()}),R(`workspace-repos`,{requestId:I,id:L,ok:t(),repos:p(l()),error:oo}),R(`set-workspace-repos-result`,{requestId:I,id:L,ok:t(),error:oo}),R(`hooks-updated`,{count:c().int().nonnegative()}),R(`state-change`,{id:L,session:l(),from:Vi,to:Vi,event:l(),timestamp:B,skipPerms:t().optional(),saneYolo:t().optional(),failureReason:l().optional()}),R(`session-added`,yo.shape),R(`session-modified`,yo.shape),R(`session-removed`,{id:L,session:l()}),R(`session-renamed`,{id:L,oldName:l(),newName:l()}),R(`session-title`,{id:L,taskTitle:Bi.nullable(),isCustom:t()}),R(`session-prs`,{id:L,linkedPrs:p(tt)}),R(`session-git`,{id:L,worktree:t()}),R(`session-coherence-hooks`,{id:L,coherenceHooks:$i.nullable()}),R(`session-agents`,{id:L,activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),timestamp:B}),R(`session-unseen`,{id:L,unseenOutcome:Hi.nullable(),timestamp:B}),R(`session-wakeup`,{id:L,pendingWakeup:Ui.nullable(),timestamp:B}),R(`session-prompt`,{isCompacting:t().optional(),id:L,pendingPromptKind:z,timestamp:B}),R(`session-conversation`,{id:L,hasConversationBridge:t(),isConversationViewOn:t(),conversationApproval:Ji.nullable()}),R(`session-merge-status`,{id:L,mergeStatus:l(),reason:z,parked:t(),timestamp:B}),R(`session-worktree-blocked`,{id:L,session:l(),branch:z,notice:z,timestamp:B}),R(`session-worktree-warning`,{id:L,session:l(),branch:z,notice:z,timestamp:B}),R(`session-worktree-ready`,{id:L,session:l(),branch:z,base:z,timestamp:B}),R(`session-diff`,{id:L,committed:io({stat:l(),diff:l()}),uncommitted:io({stat:l(),diff:l()}),hasCommits:t()}),R(`session-diff-error`,{id:L,message:l()}),R(`change-map`,{id:L,map:Di}),R(`branch-sync-status`,{id:L,branch:z,upstream:z,state:l(),ahead:c().int().nonnegative(),behind:c().int().nonnegative(),fetched:t().nullable(),action:l().optional(),error:oo}),R(`session-changed`,{id:L}),R(`post-turn-result`,{id:L,mode:l(),skipped:z,filesFixed:c().int().nonnegative(),findings:p(io({file:l(),rule:l(),count:c().int().nonnegative()})),timestamp:B}),R(`debug-state-response`,{id:L,payload:so}),R(`session-trace-response`,{id:L,requestId:I,records:p(la),start:c().int().nonnegative(),next:c().int().nonnegative(),reset:t(),path:l()}),R(`session-trace-changed`,{id:L}),R(`session-plan-changed`,ui.shape),R(`session-plan-draft`,di.shape),R(`session-plan-response`,fi.shape),R(`session-docs-changed`,{id:L,docs:p(oa)}),R(`session-docs-snapshot`,{sessions:i(l(),p(oa))}),R(`session-doc-response`,{requestId:I,id:L,path:l(),ok:t(),text:l().optional(),hash:l().optional(),error:oo}),R(`session-doc-save-result`,{requestId:I,id:L,path:l(),ok:t(),hash:l().optional(),conflict:t().optional(),error:oo}),R(`session-coherence`,{id:L,...Ii.shape}),R(`session-coherence-snapshot`,{sessions:i(l(),Ii)}),R(`session-coherence-journal-response`,{requestId:I,id:L,ok:t(),entries:p(Pi).max(200),error:oo}),R(`session-setup-response`,{requestId:I,id:L,ok:t(),setup:fa.optional(),error:oo}),R(`notify`,{session:l(),category:l(),message:l(),escalationCount:c().int().nonnegative(),kind:m(`plan`).optional()}),R(`update-status`,wo),R(`update-progress`,{journal:va}),R(`post-turn-leftovers`,{repositories:p(l()),command:l()}),R(`error`,{id:L.optional(),message:l(),requestId:I,scope:l().optional()}),R(`session-error`,{id:L.optional(),session:l(),message:l(),scope:l().optional()}),R(`settings`,{settings:so,requestId:I}),R(`settings-error`,{message:l(),requestId:I}),R(`settings-updated`,{settings:so,requestId:I}),R(`pong`,{requestId:I}),R(`agents-listed`,{requestId:I,agents:p(io({id:l(),label:l(),resolvable:t()}))}),R(`repo-roots-scanned`,{requestId:I,directories:p(io({root:l(),projects:p(io({name:l(),path:l(),isGit:t().optional()}))})),suggestions:p(io({path:l(),label:l(),gitRepoCount:c().int().nonnegative()})).optional(),error:l().optional()}),R(`conversations`,{requestId:I,id:z,current:z.optional(),conversations:p(io({id:l(),title:l(),cwd:l(),worktreePath:l(),worktreeName:l(),gitBranch:z,mtime:B})),error:l().optional()}),R(`resume-conversation-ack`,{id:L.optional(),resumeSessionId:z.optional(),ok:t(),error:l().optional(),requestId:I}),R(`health-snapshot`,{stats:so}),R(`radar-status`,{ts:B,intervalMinutes:c(),projects:p(so),investigations:p(so)}),R(`radar-investigation-activity`,{projectId:a([l(),c()]),issueId:l(),inFlight:m(!0),startedAt:B.nullable(),trail:fo}),R(`radar-investigation-finished`,{projectId:a([l(),c()]),issueId:l(),verdict:l(),summaryLine:z,startedAt:B.nullable(),trail:fo}),R(`radar-report`,{requestId:I,ok:t(),found:t(),issueId:z,format:l().optional(),content:l().optional(),message:l().optional(),error:l().optional()}),R(`radar-open-session-result`,{requestId:I,ok:t(),error:oo,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional()}),R(`issue-detail-result`,{requestId:l().min(1),ok:t(),body:l().nullable(),error:l().nullable()}),R(`open-issue-session-result`,{requestId:I,ok:t(),error:oo,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),R(`open-team-review-session-result`,{requestId:I,ok:t(),error:oo,key:to.optional(),sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),R(`radar-issue-action-result`,{requestId:I,ok:t(),error:oo,status:z.optional()}),R(`team-review-action-result`,{...Le.shape,requestId:I}),R(`benchmark-action-result`,{...Ka.shape,requestId:I}),R(`my-pr-merge-result`,{..._t.shape,requestId:I}),R(`my-pr-keep-mergeable-result`,{...at.shape,requestId:I}),R(`my-pr-merge-when-ready-result`,{...st.shape,requestId:I}),R(`github-polling-refresh-result`,{...ne.shape,requestId:I}),R(`radar-archive-investigation-result`,{requestId:I,ok:t(),error:oo}),R(`telegram-test-result`,{requestId:I,ok:t(),error:oo,telegramDelivery:vo.nullable()}),We,Xa,mt,zn,Ur,R(`usage-sessions`,{ts:B,pricingSource:z,sessions:p(io({id:L,tokens:c(),costUSD:c(),officialCostUSD:c().nullable().optional()}))}),R(`usage-report`,{requestId:I,ts:ao,tz:l().optional(),blockHours:c().optional(),totals:so.optional(),daily:co.optional(),models:co.optional(),sessions:co.optional(),blocks:co.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:so.optional(),scan:so.optional(),warning:oo,error:oo}),R(`plan-limits`,{ts:B,fiveHour:e().nullable(),sevenDay:e().nullable(),source:l(),vendor:u([`claude`,`codex`]).optional()}),R(`usage-budget-alert`,{scope:l(),periodKey:l(),threshold:c(),text:l(),ts:B}),R(`visions-findings`,{uri:l(),diagnostics:co,ts:B}),R(`visions-comments`,{uri:l(),comments:co,ts:B}),R(`visions-hand`,{uri:l(),hand:z,ts:B}),R(`visions-intent`,{projectId:z,intent:so,ts:B}),R(`visions-fix`,{uri:l(),fix:so,ts:B}),R(`visions-snapshot`,{documents:p(so),intent:so,fixes:p(so),ts:B}),R(`ingest-activity`,{events:p(so),overflow:c().int().nonnegative(),ts:B}),R(`ingest-snapshot`,{events:p(so),sources:e(),ts:B}),R(`client-trust`,{trust:u([`local`,`remote`])}),R(`shutting-down`),R(`restarting`)],No=d(`type`,Mo),Po=/^\s*at .+:\d+:\d+\)?$|^[^@\s]*@.+:\d+:\d+$/;function Fo(e){let t=e.stack??``,n=String(e);return(t.startsWith(n)?t.slice(n.length):t).split(`
|
|
2
|
+
`).filter(e=>Po.test(e)).join(`
|
|
3
|
+
`)}function Io(e){return e==null?null:e instanceof Error?{name:(e.name||`Error`).slice(0,128),stack:Fo(e).slice(0,To)}:{name:`NonError`,stack:``}}function Lo(e){let t=new Set;return n=>{let r=Io(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 Ro=[{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`}],ree=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(Ro.map(e=>e.sprite));return[...new Set(e.filter(e=>typeof e==`string`&&t.has(e)))]}function Ho(e={}){let t=Ot,n=Tt,r=Et,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,Dt),flyingAnimalsOnPhone:typeof e.flyingAnimalsOnPhone==`boolean`?e.flyingAnimalsOnPhone:t.flyingAnimalsOnPhone,flyingAnimalsExcludedSprites:Vo(e.flyingAnimalsExcludedSprites)}}function Uo(e){return Ro.some(t=>!e.includes(t.sprite))}function Wo(e,t=-1,n=Math.random){let r=Ro.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):Ro.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()<ree?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=`↑`,ys=`↓`,bs=`←`,xs=`→`,Ss=`⌘`,Cs=`⌥`,ws=Array.from({length:9},(e,t)=>[`Digit${t+1}`,t+1]),Ts=`KeyJ`,Es=new Map([[`Minus`,`-`],[`Equal`,`=`],[`BracketLeft`,`[`],[`BracketRight`,`]`],[`Semicolon`,`;`],[`Quote`,`'`],[`Comma`,`,`],[`Period`,`.`],[`Slash`,`/`],[`Backquote`,"`"],[`Backslash`,`\\`]]),Ds=new Set([`KeyQ`,`KeyW`,`KeyT`,`KeyN`,`KeyL`,`KeyR`]),Os=new Set([`KeyC`,`KeyV`,`KeyX`,`KeyA`,`KeyZ`]);function ks(e){let t=/^(?:Key|Digit)([A-Z0-9])$/.exec(e);return t?t[1]:Es.get(e)??null}function As(e){return{action:`next-attention`,keyCaptions:[ks(e)??e],label:`Jump to the next session needing you`,stepByCode:new Map([[e,0]])}}var js=[{action:`rail-step`,keyCaptions:[vs,ys],label:`Previous / next session in the rail`,stepByCode:new Map([[`ArrowUp`,-1],[`ArrowDown`,1]])},{action:`view-step`,keyCaptions:[bs,xs],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(ws),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 Ms(e,t){return[As(t),...js].filter(t=>t.unavailablePlatform!==e)}function Ns(e){if(ks(e)===null)return`Pick a letter, digit or punctuation key.`;if(Ds.has(e))return`The browser keeps that shortcut for itself.`;if(Os.has(e))return`That shortcut stays with copy, cut, paste, select all and undo.`;let t=js.find(t=>t.stepByCode.has(e));return t?`That key is already used to ${t.label.charAt(0).toLowerCase()}${t.label.slice(1)}.`:null}function Ps(e){return typeof e==`string`&&Ns(e)===null}var Fs=new Set([`Meta`,`Alt`,`Control`,`Shift`,`OS`]);function Is(e,t){if(e.key===`Escape`)return{kind:`cancelled`};if(Fs.has(e.key))return{kind:`ignored`};let n=t===`mac`?`Cmd`:`Alt`;if(!Rs(e,t,As(e.code)))return{kind:`refused`,reason:`Hold ${n} alone while pressing the key.`};let r=Ns(e.code);return r?{kind:`refused`,reason:r}:{kind:`recorded`,keyCode:e.code}}function Ls(e){return/Mac|iPhone|iPad/.test(e)?`mac`:`other`}function Rs(e,t,n){return e.ctrlKey||e.shiftKey?!1:t===`mac`?e.metaKey&&e.altKey===!!n.needsMacOption:e.altKey&&!e.metaKey}function zs(e,t,n){return n.isTerminalFocused&&t!==`mac`&&!!e.isShellChord}var Bs=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function Vs(e){return Bs.has(e.key)?e.key:e.code}function Hs(e,t,n={isTerminalFocused:!1},r=Ts){let i=Vs(e);for(let a of Ms(t,r)){let r=a.stepByCode.get(i);if(r!==void 0)return!Rs(e,t,a)||zs(a,t,n)?null:{action:a.action,step:r}}return null}function Us(e,t){return t===`focus`||t===`zen`&&e.action===`next-attention`}function Ws(e,t){return e===`mac`?t?.needsMacOption?`${Ss}${Cs}`:Ss:`Alt`}function Gs(e,t,n){let r=Ms(t,n).find(t=>t.action===e);if(!r)throw Error(`Unknown dashboard shortcut: ${e}`);return r}function Ks(e,t,n=Ts){let r=Gs(e,t,n);return[Ws(t,r),r.keyCaptions.join(` `)]}function qs(e,t){let[n,r]=Ks(e,t);return t===`mac`?`${n}${r}`:`${n}+${r}`}function Js(e){let t=e===`mac`?`Meta`:`Alt`;return`ArrowUp ArrowDown ${t}+ArrowUp ${t}+ArrowDown`}function Ys(e,t=Ts){let n=e===`mac`?Ss:`Ctrl`;return[{title:`Dashboard`,items:Ms(e,t).map(t=>({combos:t.keyCaptions.map(n=>[Ws(e,t),n]),label:t.label}))},{title:`Navigation`,items:[{combos:[[vs],[ys]],label:`Move rail highlight (rail focused)`},{combos:[[bs],[xs]],label:`Switch view tab (tab focused)`}]},{title:`Terminal`,items:[{combos:[[n,`C`]],label:`Copy selection`},{combos:[[n,`V`]],label:`Paste`},{combos:[[n,`Backspace`]],label:`Delete previous word`}]},{title:`General`,items:[{combos:[[`Esc`]],label:`Close dialog / cancel rename`}]}]}var Xs=`glimmervoid-ui-prefs`,Zs=`glimmervoid:sidebar-width`,Qs=e=>t=>typeof t==`boolean`?t:e,$s=e=>t=>typeof t==`string`?t:e,ec=e=>typeof e==`string`&&e?e:null,tc=e=>typeof e==`number`&&Number.isFinite(e)?e:null,nc=e=>t=>tc(t)??e,rc=e=>Array.isArray(e)?[...new Set(e.filter(e=>typeof e==`string`&&e!==``))]:[],ic={soundEnabled:Qs(!0),soundId:$s(as),themeId:$s(`phyrexian`),flyingAnimalsEnabled:Qs(!1),flyingAnimalsMinGapSeconds:nc(Ot.flyingAnimalsMinGapSeconds),flyingAnimalsMaxGapSeconds:nc(Ot.flyingAnimalsMaxGapSeconds),flyingAnimalsMinDurationSeconds:nc(Ot.flyingAnimalsMinDurationSeconds),flyingAnimalsMaxDurationSeconds:nc(Ot.flyingAnimalsMaxDurationSeconds),flyingAnimalsScale:nc(Ot.flyingAnimalsScale),flyingAnimalsOnPhone:Qs(Ot.flyingAnimalsOnPhone),flyingAnimalsExcludedSprites:Vo,notificationsEnabled:Qs(!0),sessionUsageChips:Qs(!1),phoneArrowPad:Qs(!1),nextAttentionKeyCode:e=>Ps(e)?e:Ts,activeView:$s(`focus`),lastFocusedSessionId:ec,railWidth:tc,reviewSidebarExpanded:Qs(!1),prsQueueWidth:tc,prsQueueCollapsed:Qs(!1),prsMode:e=>e===`mine`?`mine`:`team`,keptProjects:rc,traceHiddenKinds:rc,dismissedUpdate:ec,telemetryNoticeDismissed:Qs(!1),radarAttentionAck:$s(``),prsAttentionAck:$s(``),prsUnseenRows:$s(``),usageAttentionAck:$s(``),visionsAttentionAck:$s(``)};function ac(e,t,n){e[t]=ic[t](n)}function oc(){let e=gs(Xs,{}),t={};for(let n of Object.keys(ic))ac(t,n,e?.[n]);return t}function sc(e){return oc()[e]}function V(e,t){let n=oc();ac(n,e,t),_s(Xs,n)}var cc=()=>sc(`soundEnabled`),lc=e=>V(`soundEnabled`,e),uc=()=>sc(`soundId`),dc=e=>V(`soundId`,e),fc=()=>sc(`notificationsEnabled`),pc=e=>V(`notificationsEnabled`,e),mc=()=>sc(`sessionUsageChips`),hc=e=>V(`sessionUsageChips`,e),gc=()=>sc(`phoneArrowPad`),_c=e=>V(`phoneArrowPad`,e),vc=()=>sc(`nextAttentionKeyCode`),yc=e=>V(`nextAttentionKeyCode`,e),bc=()=>sc(`themeId`),xc=e=>V(`themeId`,e),Sc=()=>sc(`flyingAnimalsEnabled`),Cc=e=>V(`flyingAnimalsEnabled`,e),wc=()=>sc(`activeView`),Tc=e=>V(`activeView`,e),Ec=()=>sc(`railWidth`),Dc=e=>V(`railWidth`,e),Oc=()=>sc(`reviewSidebarExpanded`),kc=e=>V(`reviewSidebarExpanded`,e),Ac=()=>sc(`prsQueueWidth`),jc=e=>V(`prsQueueWidth`,e),Mc=()=>sc(`prsQueueCollapsed`),Nc=e=>V(`prsQueueCollapsed`,e),Pc=()=>sc(`prsMode`),Fc=e=>V(`prsMode`,e),Ic=()=>sc(`keptProjects`),Lc=e=>V(`keptProjects`,e),Rc=()=>sc(`traceHiddenKinds`),zc=e=>V(`traceHiddenKinds`,e),Bc=()=>sc(`dismissedUpdate`),Vc=e=>V(`dismissedUpdate`,e),Hc=()=>sc(`telemetryNoticeDismissed`),Uc=e=>V(`telemetryNoticeDismissed`,e),Wc=()=>sc(`radarAttentionAck`),Gc=e=>V(`radarAttentionAck`,e),Kc=()=>sc(`prsAttentionAck`),qc=e=>V(`prsAttentionAck`,e),Jc=()=>sc(`prsUnseenRows`),Yc=e=>V(`prsUnseenRows`,e),Xc=()=>sc(`usageAttentionAck`),Zc=e=>V(`usageAttentionAck`,e),Qc=()=>sc(`visionsAttentionAck`),$c=e=>V(`visionsAttentionAck`,e),el=()=>sc(`lastFocusedSessionId`),tl=e=>V(`lastFocusedSessionId`,e),nl=()=>tc(gs(Zs,null)),rl=e=>_s(Zs,tc(e)),il=e=>V(`flyingAnimalsMinGapSeconds`,e),al=e=>V(`flyingAnimalsMaxGapSeconds`,e),ol=e=>V(`flyingAnimalsMinDurationSeconds`,e),sl=e=>V(`flyingAnimalsMaxDurationSeconds`,e),cl=e=>V(`flyingAnimalsScale`,e),ll=e=>V(`flyingAnimalsOnPhone`,e),ul=e=>V(`flyingAnimalsExcludedSprites`,e),dl=()=>Ho(oc()),fl=()=>{let e=oc();return Object.fromEntries(Object.keys(Ot).map(t=>[t,e[t]]))},pl=()=>_s(Xs,{...oc(),...Ot}),ml=ns({viewportWidthPx:1440,viewportHeightPx:900,verticalProgress:0});function hl(e,t=``){let n=A(`div`,`flying-animal-preview ${t}`.trim());n.setAttribute(`aria-hidden`,`true`),n.style.setProperty(`--nyan-width`,`${ml.spriteWidthPx}px`),n.style.setProperty(`--nyan-height`,`${ml.spriteHeightPx}px`);let r=A(`div`,`flying-animal-preview-stage`);return r.append(A(`div`,`nyan-trail ${e.trail}`),A(`div`,`nyan-sprite ${e.sprite}`)),n.append(r),n}function gl(){let e=Wo(dl().flyingAnimalsExcludedSprites);return e===null?null:Ro[e]??null}var iee=6e4,aee=18e5,oee=20;function see({attempt:e=1,baseMs:t=iee,maxMs:n=aee,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,oee)-1),s=Math.min(n,t*2**o);return a===`none`?s:Math.round(a===`half`?s*(.5+.5*i()):i()*s)}var cee=3e4;function _l(e,t=Math.random){return see({attempt:(typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0)+1,baseMs:500,maxMs:cee,random:t,jitter:`half`})}var lee=0,uee=1;function dee({hasSocket:e,readyState:t,retryPending:n,connectingAgeMs:r=0}){return n?`retry-now`:e?t===lee?r>1e4?`connect`:`wait`:t===uee?`probe`:`connect`:`connect`}function vl(e){return e===`https:`?`wss:`:`ws:`}function yl(e,t){return`${vl(e?.protocol)}//${e.host}${t}`}var bl=``,xl=null;function Sl(){return bl}function Cl(){return bl?Promise.resolve(bl):xl||(xl=fetch(`/control-token`,{credentials:`same-origin`,cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{let t=e?.token;return bl=typeof t==`string`?t:``,bl}).catch(()=>``).finally(()=>{xl=null}),xl)}function wl(){bl=``}function Tl(e){return bl?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(bl)}`:e}function H(e,t){return typeof e==`string`&&e.trim()?e.trim():t}function U(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}var El=60,Dl=3600,Ol=24,kl=1024,Al=kl*1024,jl=Al*1024,Ml={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`}`}},Nl={rounding:`floor`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:0};function Pl(e){return String(e).padStart(2,`0`)}function Fl(e,t){return Math.max(0,Math[t](e/1e3))}function Il(e,t){let n=Ml[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<Ol?n.hour(i):n.day(Math.floor(i/Ol))}function Ll(e,t){let n=Fl(e,t.rounding);return n<t.justNowBelowSeconds?`just now`:`${Il(n,t.wording)}${t.suffix}`}function Rl(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<Dl)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 zl(e,{rounding:t,showsHours:n}){let r=Fl(e,t),i=Pl(r%El),a=Math.floor(r/El),o=Math.floor(r/Dl);return!n||o===0?`${a}:${i}`:`${o}:${Pl(a%60)}:${i}`}function Bl(e,t){return e<kl?`${e} B`:t===`KB`||e<Al?`${(e/kl).toFixed(1)} KB`:e<jl?`${(e/Al).toFixed(1)} MB`:`${(e/jl).toFixed(2)} GB`}function Vl(e){let t=new Date(e);return`${t.getFullYear()}-${Pl(t.getMonth()+1)}-${Pl(t.getDate())}`}function Hl(e){return`${Pl(e.getHours())}:${Pl(e.getMinutes())}`}function Ul(e){return e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function Wl(e){let t=(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`&&e!==``);return[...new Set(t)].sort().join(`|`)}function Gl(e,t){let n=typeof e==`string`?e:``,r=typeof t==`string`?t:``;return n===``?{shown:!1,acknowledged:``}:{shown:n!==r,acknowledged:r}}function Kl({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=Gl(e,r()?e:i);return a(t.acknowledged),t.shown},acknowledge(){a(n())}}}function ql(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 Jl=`machine-updates`,Yl=`update-actions`,Xl={spiking:0,regressed:1,worsened:2,new:3,quiet:4},Zl={spiking:`crit`,regressed:`crit`,worsened:`warn`,new:`warn`,quiet:`dim`},Ql=99,$l={ROOT_CAUSE:`root cause`,NEEDS_HUMAN:`needs you`,TRANSIENT:`transient`,FIXED:`fixed`,ERROR:`error`};function eu(e){return Array.isArray(e)?e.flatMap(e=>{let t=e,n=U(t?.at,0),r=H(t?.note,``);if(r)return[{at:n,note:r}];let i=H(t?.tool,``);return i?[{at:n,tool:i,detail:H(t?.detail,``)}]:[]}):[]}function tu(e){return e.filter(e=>`tool`in e)}function nu(e){return e.detail?`${e.tool} ${e.detail}`:e.tool}function ru(e){let t=eu(e?.trail),n=t.findLast(e=>`note`in e);if(n)return n.note;let r=tu(t).at(-1);return r?nu(r):``}function iu(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 au(e){let t=H(e?.summaryLine,``);return e?.inFlight===!0&&ru(e)||t}function ou(e){return{inFlight:e?.inFlight===!0,startedAt:U(e?.startedAt,null),steps:eu(e?.trail),verdict:H(e?.verdict,``),summaryLine:H(e?.summaryLine,``)}}function su(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 cu(e,t){let n=su(e,t?.projectId,t?.issueId);return n?(n.inFlight=!0,n.startedAt=U(t?.startedAt,null),n.trail=eu(t?.trail),!0):!1}function lu(e){return{inFlight:!1,startedAt:U(e?.startedAt,null),steps:eu(e?.trail),verdict:H(e?.verdict,``),summaryLine:H(e?.summaryLine,``)}}function uu(e,t){return!e||!t?!1:String(t.projectId??``)===e.projectId&&String(t.issueId??``)===e.issueId}function du(e,t){let n=su(e,t?.projectId,t?.issueId);if(!n)return!1;let r=lu(t);return n.inFlight=!1,n.startedAt=r.startedAt,n.trail=r.steps,n.verdict=r.verdict,n.summaryLine=r.summaryLine,!0}function fu(e){return $l[typeof e==`string`?e.toUpperCase():``]||String(e??``).toLowerCase()}function pu(e){return zl(e,{rounding:`round`,showsHours:!1})}function mu(e,t){return e==null?``:`+${pu(t-e)}`}function hu(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 gu(e,t){if(e.inFlight){let n=tu(e.steps).length,r=`${n} ${n===1?`step`:`steps`}`;return`investigating, ${e.startedAt?`started ${t}`:`starting`}, ${r}`}return e.verdict?`finished: ${fu(e.verdict)}`:`finished`}function _u(e){return ql(e,{label:`PostHog monitoring`})}function vu(e){return U(e.intervalMinutes,null)!==null}function yu(e,t){return e==null||e.configured===!1?`placeholder`:t>0?`ready`:vu(e)?`placeholder`:`pending`}function bu(e){return Zl[e??``]||`dim`}function xu(e){if(typeof e?.lastSeen!=`string`)return null;let t=Date.parse(e.lastSeen);return!Number.isFinite(t)||t<=0?null:t}function Su(e){let t=H(e?.status,``).trim().toLowerCase();return!t||t===`active`?``:t}function Cu(e){return Array.isArray(e)?e.map(e=>Number(e)).filter(e=>Number.isFinite(e)):[]}function wu(e){return Array.isArray(e)?e.map(e=>typeof e==`number`?e:Number(e?.occurrences)).filter(e=>Number.isFinite(e)):[]}function Tu(e,t=64,n=16){let r=Cu(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 Du(e){return e.length===0?`0 polls, 0 to 0 occurrences`:`${e.length} polls, ${Math.min(...e)} to ${Math.max(...e)} occurrences`}function Ou(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 ku=3e5;function Au(e){let t=Number(e);return!Number.isFinite(t)||t<=0?ku:t*2}function ju(e){let t=e.split(/[\\/]+/).filter(Boolean);return t.length===0?``:t[t.length-1]}function Mu(e){let t=ju(H(e?.name,``));if(t)return t;let n=e?.projectId;return n==null||n===``?`project`:String(n)}function Nu(e){let t=H(e,``);return t?(t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(`/`)[0].split(`@`).pop()??``).replace(/:\d+$/,``):``}function Pu(e){let t=new Set,n=Array.isArray(e)?e:[];for(let e of n){let n=Nu(e?.host);n&&t.add(n)}return t.size>1}function Fu(e,t,n={}){let r=Ou(e?.issues),i=H(e?.error,``).slice(0,200),a=Number(t),o=Number(e?.lastTickAt),s=Number.isFinite(a)&&Number.isFinite(o)&&o>0?a-o:0,c=s>Au(n.intervalMs)?s:0;return{loud:r.active>0||r.spiking>0||!!i||c>0,counts:r,error:i,staleMs:c}}function Iu(e,t,n={}){let r=[],i=[],a=Array.isArray(e)?e:[];for(let e of a){let a=Fu(e,t,n),o={project:e,...a};a.loud?r.push(o):i.push(o)}return{loud:r,quiet:i}}function Lu(e,t=null){return(Array.isArray(e?.investigations)?e.investigations:[]).filter(e=>typeof e==`object`&&!!e).filter(e=>typeof e.id==`string`&&e.id!==``).filter(e=>e.archived!==!0).filter(e=>!t?.has(e.id)).map(e=>({id:e.id,issueId:H(e.issueId,``),projectId:e.projectId??null,projectLabel:H(e.projectName,``),title:H(e.title,`Untitled issue`),summaryLine:H(e.summaryLine,``),url:H(e.url,``),verdict:H(e.verdict,`ERROR`).toUpperCase(),mode:H(e.mode,`investigate`),prUrl:/^https:\/\/[^\s"'<>]{1,300}$/.test(H(e.prUrl,``))?H(e.prUrl,``):``,at:Number.isFinite(Number(e.at))?Number(e.at):0})).sort((e,t)=>t.at-e.at)}function Ru(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 zu(e,t){let n=H(e,``);if(n)return/^\d/.test(n)?`v${n}`:n;let r=ce(t,{validate:!0});return r?`commit ${r}`:``}function Bu(e){return`Update available: ${zu(e?.current,e?.currentSha)} to ${zu(e?.latest,e?.latestSha)}`}function Vu({posthog:e}={}){let t=[],n=Array.isArray(e?.projects)?e.projects:[];for(let e of n){let n=H(e?.projectId,H(e?.name,`project`)),r=Array.isArray(e?.issues)?e.issues:[];for(let e=0;e<r.length;e++){let i=r[e],a=H(i?.issueId,H(i?.title,`#${e}`));i?.change===`spiking`&&t.push(`issue:${n}/${a}:spiking`),i?.verdict===`NEEDS_HUMAN`&&t.push(`issue:${n}/${a}:needs-human`)}}return t}function Hu(e={}){return Wl(Vu(e))}function Uu(e){return Xl[e??``]??Ql}function Wu(e){return Array.isArray(e)?e.map((e,t)=>({issue:e,index:t})).sort((e,t)=>{let n=Uu(e.issue?.change)-Uu(t.issue?.change);if(n!==0)return n;let r=U(t.issue?.users,0)-U(e.issue?.users,0);if(r!==0)return r;let i=U(t.issue?.occurrences,0)-U(e.issue?.occurrences,0);return i===0?e.index-t.index:i}).map(e=>e.issue):[]}var Gu=Object.freeze({fetch:`Fetch`,stage:`Stage`,install:`Install dependencies`,"link-deps":`Link dependencies`,build:`Build`}),Ku=Object.freeze({"branch-count-unavailable":`The last check could not compare the checked-out branch with its upstream.`,"branch-diverged":`The checked-out branch has diverged from its upstream.`,"fetch-failed":`The last update check could not fetch the upstream branch.`,"main-channel-requires-clone":`The main channel requires a clone install.`,"no-branch":`The last update check found no checked-out branch.`,"no-upstream":`The checked-out branch has no upstream.`,"release-check-failed":`The last release check failed.`,"remote-tip-unavailable":`The last update check could not resolve the upstream branch tip.`,"update-check-failed":`The last update check failed.`}),qu=Object.freeze([`unsupported-flavor`,`unsupported-platform`]),W=`Not connected to the server. Reconnecting.`,Ju=Object.freeze({requested:!1,failure:null});function Yu(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function Xu(e,t,n=null){return t===`request-sent`?{requested:!0,failure:null}:t===`request-unsent`?{requested:!1,failure:W}:t===`progress-frame`?Ju:t===`error-frame`?e.requested?{requested:!1,failure:n}:e:e.failure===null?e:{requested:e.requested,failure:null}}function Zu(e,t){return t?.state?t.state:e?.journalSummary?.state}function Qu(e,t=null,n=null){return{actions:e,note:t,command:n}}function $u(e){let t=e?.applyRefusal;return t?qu.includes(t.reason):!1}function ed({status:e,journal:t,request:n=Ju}){if(n.failure===`Not connected to the server. Reconnecting.`)return Qu([],W);let r=td(Zu(e,t),e,n.requested);return n.failure?{...r,note:n.failure}:r}function td(e,t,n){if(e===`running`||n)return Qu([]);if(e===`staged`||nd(t))return Qu([`restart`]);if(!t?.updateAvailable)return Qu([`check`]);let r=t.applyRefusal;return r?$u(t)?Qu([`check`],r.message,H(t.command,null)):Qu([`check`],r.message):Qu([`update`])}function nd(e){return e?.applyRefusal?.reason===`target-already-checked-out`}function rd(e){return e?.journalSummary?.state===`staged`||nd(e)}function id(e){return Ku[e]??`The last update check failed: ${e}.`}function ad(e){let t=H(e?.deprecation,null);return t?`Security notice: ${zu(e?.current,e?.currentSha)||`This version`} is marked unsafe. ${t}`:null}function od(e){let t=zu(e?.latest,e?.latestSha)||`A new version`;if(rd(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=Bu(e);return!e||e.applyRefusal===void 0||$u(e)?{mode:`command`,text:n}:{mode:`link`,text:n}}function sd(e){let t=od(e),n=ad(e);return n?rd(e)||e?.journalSummary?.state===`running`?{mode:t.mode,tone:`security`,text:`${n} ${t.text}`}:{mode:`command`,tone:`security`,text:n}:{...t,tone:`update`}}function cd(e){let t=H(e,``);return t?`: ${t}`:``}var ld=new Set([`idle`,`staged`,`succeeded`,`discarded`]);function ud(e){return e.state===`failed`?`Update failed${cd(e.reason)}.`:e.state===`interrupted`?`Update interrupted${cd(e.reason)}.`:null}function dd(e){return Gu[e]??e}function fd(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 pd(e){if(!e||ld.has(e.state))return null;let t=fd(e),n=t.stepId!==null&&t.stepId!==e.activeStep?t.stepId:null;return{state:e.state,terminalLine:ud(e),steps:e.steps.map(e=>({id:e.id,label:dd(e.id),status:e.status})),outputTail:t.lines,outputStepId:t.stepId,outputStepLabel:n===null?null:dd(n)}}var md=6e5;function hd(e){return e.channel!==`main`||!Number.isInteger(e.behindCount)?``:`${e.behindCount} ${e.behindCount===1?`commit`:`commits`} behind`}function gd(e,t){let n=Zu(e,t),r=zu(t?.toVersion,t?.toSha)||zu(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=ad(e);if(i)return{tone:`security`,headline:i};if(nd(e))return{tone:`staged`,headline:`${zu(e.latest,e.latestSha)||`The latest release`} is already checked out. Restart to run it.`};if(e.updateAvailable)return{tone:`available`,headline:`Update available.`};let a=H(e.reason,``);return a?{tone:`unknown`,headline:id(a)}:{tone:`current`,headline:`Up to date.`}}function _d(e){return e?.updateAvailable===!0||nd(e)}function vd(e){if(!e)return`Update status unavailable.`;let t=zu(e.current,null)||`Unknown version`,n=ce(e.currentSha,{validate:!0}),r=H(e.installedBranch,``);return[t,[n?`commit ${n}`:``,r?`on ${r}`:``].filter(Boolean).join(` `),e.isTreeClean===!0?`clean checkout`:e.isTreeClean===!1?`uncommitted local changes`:``].filter(Boolean).join(`, `)}function yd(e){return e?{label:zu(e.latest,e.latestSha)||`Latest target unknown`,behind:hd(e),releaseUrl:H(e.releaseUrl,``)}:{label:`Update status unavailable.`,behind:``,releaseUrl:``}}function bd({status:e,checkForUpdates:t,now:n,lastAutoCheckAt:r}){if(t===!1||r!==null&&n-r<md)return!1;let i=typeof e?.lastCheckAt==`number`?e.lastCheckAt:null;return i===null||n-i>=md}function xd({status:e,checkForUpdates:t,relativeTime:n}){return t===!1?`Update checks are off.`:e?e.flavor===`unknown`?`The install flavor is unknown.`:n:`No update check has run.`}var Sd=null,Cd=null,wd=0,Td=new Map,Ed=null,Dd=0,Od=!1,kd=0,Ad=0,jd=null,Md=null;function Nd(e){Md=e}function Pd(e){jd=e}function G(e){return Sd?.readyState===WebSocket.OPEN&&(Sd.send(JSON.stringify(e)),!0)}function Fd(e){return Ad+=1,`${e}-${Ad}`}function K(e,t,{timeoutMs:n=5e3}={}){let r=Fd(e);return new Promise((i,a)=>{let o=setTimeout(()=>{Td.delete(r),a(Error(`Request timed out`))},n);Td.set(r,{resolve:i,reject:a,timer:o}),Sd?.readyState===WebSocket.OPEN?Sd.send(JSON.stringify({type:e,requestId:r,...t})):(clearTimeout(o),Td.delete(r),a(Error(W)))})}function Id(e){if(typeof e!=`object`||!e||!(`requestId`in e))return;let t=e.requestId;if(typeof t!=`string`)return;let n=Td.get(t);n&&(clearTimeout(n.timer),Td.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 Ld(e){for(let t of Td.values())clearTimeout(t.timer),t.reject(Error(e));Td.clear()}function Rd(){let e=Sd;Sd=null,Ld(W),Md&&Md(`disconnected`,`Reconnecting`),e?.close(),wd=0,zd()}function zd(){if(Cd!==null&&(Cd!==null&&clearTimeout(Cd),Cd=null),!Sl()&&!Od){Od=!0,Cl().finally(()=>{Od=!1,zd()});return}if(Od)return;let e=kd>0?`?since=${kd}`:``,t=yl(location,Tl(`/control${e}`)),n=new WebSocket(t);Sd=n,Dd=Date.now();let r=!1;n.addEventListener(`open`,()=>{r=!0,wd=0,Md&&Md(`connected`,`Connected`)}),n.addEventListener(`message`,e=>{if(Sd!==n)return;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[control] Dropped malformed server JSON message`);return}let r=No.safeParse(t);if(!r.success){console.warn(`[control] Dropped invalid server message: ${r.error.issues[0]?.message||`invalid payload`}`),Id(t);return}let i=r.data;if(i.type===`snapshot`&&typeof i.seq!=`number`&&(kd=0),typeof i.seq==`number`){if(i.seq<=kd)return;kd=i.seq}let a=typeof i.requestId==`string`?i.requestId:``,o=a?Td.get(a):void 0;o?(clearTimeout(o.timer),Td.delete(a),o.resolve(i)):jd&&jd(i)}),n.addEventListener(`close`,()=>{if(Sd!==n)return;Sd=null,Ld(W),r||wl(),Md&&Md(`disconnected`,`Reconnecting`);let e=_l(wd);wd+=1,Cd=setTimeout(zd,e)})}async function Bd(){if(Md&&Md(`connecting`,`Connecting`),Ed)return Ed;let e=dee({hasSocket:!!Sd,readyState:Sd?.readyState??null,retryPending:Cd!==null,connectingAgeMs:Date.now()-Dd});if(e===`retry-now`)return Cd!==null&&clearTimeout(Cd),Cd=null,wd=0,zd(),`reconnecting`;if(e===`connect`)return Rd(),`reconnecting`;if(e===`wait`)return`reconnecting`;let t=Sd;return Ed=K(`ping`,{}).then(()=>(Md&&Md(`verified`,`Connected`),`ok`)).catch(()=>(Sd===t&&t&&Rd(),`dead`)).finally(()=>{Ed=null}),Ed}var Vd=`<h2 class="dialog-title" id="add-session-title">Add Session</h2>
|
|
4
|
+
<fieldset class="dialog-mode-controls" aria-label="Session kind">
|
|
5
|
+
<button type="button" class="dialog-mode-button" id="add-session-single-mode" aria-pressed="true">Single repo</button>
|
|
6
|
+
<button type="button" class="dialog-mode-button" id="add-session-workspace-mode" aria-pressed="false">Workspace</button>
|
|
7
|
+
</fieldset>
|
|
8
|
+
<label class="dialog-label" id="add-session-picker-label">
|
|
9
|
+
Pick a project:
|
|
10
|
+
<select class="dialog-input project-picker" id="add-session-picker">
|
|
11
|
+
<option value="" disabled selected>Scanning...</option>
|
|
12
|
+
</select>
|
|
13
|
+
</label>
|
|
14
|
+
<fieldset class="dialog-workspace-list" id="add-session-workspace-list" aria-label="Workspace repositories" hidden></fieldset>
|
|
15
|
+
<div class="dialog-repo-roots" id="add-session-repo-roots" hidden>
|
|
16
|
+
<p class="dialog-repo-roots-title" id="add-session-repo-roots-title">No repository roots yet</p>
|
|
17
|
+
<p class="dialog-repo-roots-desc">Add the folder that holds your git checkouts. Its repos show up right here.</p>
|
|
18
|
+
</div>
|
|
19
|
+
<label class="dialog-label" id="add-session-agent-label" hidden>
|
|
20
|
+
Agent
|
|
21
|
+
<select class="dialog-input" id="add-session-agent"></select>
|
|
22
|
+
</label>
|
|
23
|
+
<label class="dialog-label" id="add-session-environment-label" hidden>
|
|
24
|
+
Environment
|
|
25
|
+
<select class="dialog-input" id="add-session-environment"></select>
|
|
26
|
+
<span class="dialog-hint" id="add-session-environment-hint" hidden></span>
|
|
27
|
+
</label>
|
|
28
|
+
<div class="dialog-label" id="add-session-agent-login" hidden>
|
|
29
|
+
<span class="dialog-hint" id="add-session-agent-login-text"></span>
|
|
30
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-agent-connect">Connect</button>
|
|
31
|
+
</div>
|
|
32
|
+
<button type="button" class="dialog-advanced-toggle" id="add-session-advanced-toggle" aria-controls="add-session-advanced">Run in a folder outside your repository roots</button>
|
|
33
|
+
<div class="dialog-advanced-panel" id="add-session-advanced" hidden>
|
|
34
|
+
<label class="dialog-label">
|
|
35
|
+
Name
|
|
36
|
+
<input type="text" class="dialog-input" id="add-session-name" placeholder="my-project" autocomplete="off" spellcheck="false">
|
|
37
|
+
</label>
|
|
38
|
+
<label class="dialog-label" id="add-session-path-label">
|
|
39
|
+
Path
|
|
40
|
+
<input type="text" class="dialog-input" id="add-session-path" placeholder="Full path to the project folder" autocomplete="off" spellcheck="false">
|
|
41
|
+
</label>
|
|
42
|
+
</div>
|
|
43
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-run-in-place-label" hidden>
|
|
44
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-run-in-place">
|
|
45
|
+
<span>Run in this folder, no worktree</span>
|
|
46
|
+
<span class="dialog-hint">This folder is not a git repository with a commit, so the session cannot get its own worktree. The agent changes the folder itself, and nothing keeps its edits apart from yours. Run git init in it and make a first commit to keep them apart.</span>
|
|
47
|
+
</label>
|
|
48
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-skip-perms-label">
|
|
49
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-skip-perms">
|
|
50
|
+
<span>Skip permission prompts</span>
|
|
51
|
+
<span class="dialog-hint">The agent edits files and runs shell commands without asking first, so a bad instruction or a hostile file in the repo can act on this machine unchecked. Leave this off unless you trust the repo and the task.</span>
|
|
52
|
+
</label>
|
|
53
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-unguarded-label">
|
|
54
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-unguarded">
|
|
55
|
+
<span>Run without guardrails</span>
|
|
56
|
+
<span class="dialog-hint">Claude Code sessions run with guardrails that block writes to credentials and Glimmervoid's own state and hide credentials and other agents' settings. Turn this on only for work the guardrails cannot serve.</span>
|
|
57
|
+
</label>
|
|
58
|
+
<div class="dialog-error" id="add-session-error"></div>
|
|
59
|
+
<div class="dialog-actions">
|
|
60
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-cancel">Cancel</button>
|
|
61
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="add-session-confirm">Add</button>
|
|
62
|
+
</div>
|
|
63
|
+
`,Hd=`<h2 class="dialog-title" id="agent-connect-title">Connect</h2>
|
|
64
|
+
<p class="dialog-hint" id="agent-connect-intro"></p>
|
|
65
|
+
<p class="dialog-label" id="agent-connect-state" role="status"></p>
|
|
66
|
+
<div class="dialog-label" id="agent-connect-steps" hidden>
|
|
67
|
+
<span>1. Open <a class="dialog-link" id="agent-connect-link" href="about:blank" target="_blank" rel="noopener noreferrer">the sign-in page</a> and sign in.</span>
|
|
68
|
+
<span id="agent-connect-code-row" hidden>2. Enter this code there: <code id="agent-connect-code"></code></span>
|
|
69
|
+
<label class="dialog-label" id="agent-connect-paste-label" hidden>
|
|
70
|
+
2. Paste the code the page shows
|
|
71
|
+
<input type="text" class="dialog-input" id="agent-connect-paste" autocomplete="off" spellcheck="false">
|
|
72
|
+
</label>
|
|
73
|
+
</div>
|
|
74
|
+
<div class="dialog-error" id="agent-connect-error"></div>
|
|
75
|
+
<div class="dialog-actions">
|
|
76
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="agent-connect-close">Close</button>
|
|
77
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="agent-connect-stop" hidden>Stop sign-in</button>
|
|
78
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="agent-connect-submit" hidden>Submit code</button>
|
|
79
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="agent-connect-start">Start sign-in</button>
|
|
80
|
+
</div>
|
|
81
|
+
`,Ud=`http://www.w3.org/2000/svg`;function Wd(e,t){let n=document.createElementNS(Ud,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function Gd(e,t){let n=document.createElementNS(Ud,`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 Kd=`M4 4L12 12M12 4L4 12`,qd=`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`,Jd=`M3 4h10M3 8h10M3 12h10`,Yd=`M3 8h0.01M8 8h0.01M13 8h0.01`,Xd=`M4.5 12.5h7a3 3 0 0 0 0.4-5.97a4 4 0 0 0-7.7 0.57a2.7 2.7 0 0 0 0.3 5.4z`;function Zd(e){let t=Gd(16,16);return t.classList.add(`line-icon`),t.append(Wd(`path`,{d:e,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),t}function Qd(e,t){let{class:n,...r}=t,i=Gd(16,16);return n!==void 0&&i.classList.add(n),i.append(Wd(e,r)),i}function $d(e){let t=document.createElement(`span`);t.className=`status-icon`,t.dataset.icon=e;for(let n of rr[e])t.append(Qd(n.tag,n.attributes));return t}function ef(e,t){e.dataset.icon!==t&&(e.dataset.icon=t,e.replaceChildren($d(t)))}var tf={busy:`text-text-muted`,ok:`text-state-done`,error:`text-state-failed`},q=15e3,nf=`Something went wrong. Details are hidden in streamer mode.`;function rf(e,t){return e!==`error`||t.startsWith(`Not connected to the server. Reconnecting.`)?t:document.documentElement.hasAttribute(`data-streamer`)?nf:t}var af={busy:`working`,ok:`complete`,error:`failed`};function of(e){let t=e.querySelector(`:scope > .action-status-icon`),n=e.querySelector(`:scope > .action-status-text`);if(t&&n&&e.childNodes.length===2)return{iconElement:t,textElement:n};let r=A(`span`,`action-status-icon`);r.setAttribute(`aria-hidden`,`true`);let i=A(`span`,`action-status-text`);return e.replaceChildren(r,i),{iconElement:r,textElement:i}}function sf(e){e.replaceChildren(),delete e.dataset.tone}function cf(e,t,n){if(!n){sf(e);return}if(!t){sf(e),e.textContent=n;return}e.dataset.tone=t;let{iconElement:r,textElement:i}=of(e);ef(r,af[t]),i.textContent=rf(t,n)}function lf(e=`action-status`){let t=A(`p`,e);return t.setAttribute(`role`,`status`),t.hidden=!0,{element:t,show:(n,r)=>{t.className=`${e} text-xs ${tf[n]}`,cf(t,n,r),t.hidden=!r},clear:()=>{t.hidden=!0,sf(t)}}}function uf(e,t){return G(e)?!0:(t.show(`error`,W),!1)}function df(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 ff(e,t,n,{busyText:r,timeoutMs:i=q}={}){r&&n.show(`busy`,r);try{let r=await K(e,t,{timeoutMs:i});return n.clear(),r}catch(e){return n.show(`error`,df(e,i)),null}}function pf(){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`,gf)),{line:e,text:t})}function mf(e,{hidesInStreamerMode:t=!0}={}){let n=pf();if(!n)return;let r=t?rf(`error`,e):e;n.text.textContent=r,n.text.title=r,n.line.hidden=!1}function hf(e){let t=pf();t&&t.text.textContent===e&&gf()}function gf(){let e=pf();e&&(e.line.hidden=!0,e.text.textContent=``,e.text.title=``)}var _f=`claude-code`,vf=Object.freeze({"claude-code":``,codex:`Codex`,grok:`Grok`});function yf(e){if(typeof e!=`string`)return``;let t=e.trim();return!t||t===`claude-code`?``:vf[t]||t}function bf(e,{defaultId:t=_f}={}){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 xf=`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 Sf(e){let t=typeof e==`object`&&e?e:null;return t===null||!Array.isArray(t.agents)||t.error||bf(t.agents).options.length>0?{canSpawn:!0,guidance:``}:{canSpawn:!1,guidance:xf}}var Cf={agent:`upcoming`,repoRoots:`upcoming`,firstSession:`upcoming`};function wf(e,t){return e<t?`done`:e===t?`current`:`upcoming`}function Tf({agentListing:e,repoRoots:t}){let n=Sf(e).canSpawn?t.length===0?2:3:1;return{agent:wf(1,n),repoRoots:wf(2,n),firstSession:wf(3,n)}}function Ef(e){return bf(typeof e==`object`&&e?e.agents:[]).options.map(e=>e.label).join(`, `)}function Df(e){return e===1?`1 git repo`:`${e} git repos`}function Of(e,t){let n=t.trim();return!n||e.includes(n)?null:[...e,n]}var kf=0,Af=`Could not read the current repository roots.`;function jf(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function Mf(e){let t=await K(`get-settings`,{});if(t.type!==`settings`)return Af;let n=t.settings.repoRoots;if(!jf(n))return Af;let r=Of(n,e);if(!r)return null;let i=await K(`update-settings`,{settings:{repoRoots:r}});return i.type===`settings-error`?i.message:null}function Nf({onAdded:e}){kf+=1;let t=`repo-roots-adder-path-${kf}`,n=A(`div`,`repo-roots-adder`),r=A(`div`,`repo-roots-adder-found`),i=A(`span`,`repo-roots-adder-label`,`FOUND ON THIS MACHINE`),a=A(`ul`,`repo-roots-adder-list`);r.append(i,a),r.hidden=!0;let o=A(`label`,`repo-roots-adder-label`,`TYPE A PATH`);o.htmlFor=t;let s=A(`div`,`repo-roots-adder-row`),c=A(`input`,`dialog-input repo-roots-adder-input`);c.id=t,c.type=`text`,c.placeholder=`~/src`,c.autocomplete=`off`,c.spellcheck=!1;let l=A(`button`,`btn-dialog btn-dialog-cancel`,`Add`);l.type=`button`,l.disabled=!0,s.append(c,l);let u=A(`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 Mf(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=A(`li`,`repo-roots-adder-suggestion`),n=A(`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(A(`span`,`repo-roots-adder-path`,t.label),A(`span`,`repo-roots-adder-count`,Df(t.gitRepoCount)),n),a.append(e)}r.hidden=e.length===0,o.textContent=e.length>0?`OR TYPE A PATH`:`TYPE A PATH`}return{element:n,setSuggestions:m}}function Pf(e){return[...document.querySelectorAll(`.dialog-overlay`)].at(-1)===e}function Ff({dialogClass:e=`dialog`,closeOnBackdrop:t=!0,onEscape:n}={}){let r=document.activeElement,i=document.createElement(`div`);i.className=`dialog-overlay`;let a=document.createElement(`div`);a.className=e,i.appendChild(a),document.body.appendChild(i);function o(e){e.key===`Escape`&&(n?Pf(i)&&n():s())}document.addEventListener(`keydown`,o);function s(){i.remove(),document.removeEventListener(`keydown`,o),r instanceof HTMLElement&&r.focus()}return t&&i.addEventListener(`click`,e=>{e.target===i&&s()}),{overlay:i,dialog:a,close:s}}function If(e,t){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,t),zf(e)}function Lf({title:e,dialogClass:t=`dialog`,cancelLabel:n=`Cancel`}){let{overlay:r,dialog:i,close:a}=Ff({dialogClass:t}),o=`dialog-title-${Math.random().toString(36).slice(2)}`,s=A(`h3`,`dialog-title`,e);s.id=o;let c=A(`div`,`dialog-actions`),l=A(`button`,`btn-dialog btn-dialog-cancel`,n);return c.append(l),i.append(s),If(i,o),{overlay:r,dialog:i,close:a,titleEl:s,actions:c,btnCancel:l}}function Rf({title:e,message:t,confirmLabel:n=`Confirm`,danger:r=!1,onConfirm:i}){let{dialog:a,close:o,actions:s,btnCancel:c}=Lf({title:e}),l=A(`p`,`dialog-message`,t),u=A(`button`,r?`btn-dialog btn-dialog-confirm btn-dialog-danger`:`btn-dialog btn-dialog-confirm`,n);s.append(u),a.append(l,s),c.addEventListener(`click`,o),u.addEventListener(`click`,()=>{o(),i?.()}),requestAnimationFrame(()=>c.focus())}function zf(e){e.addEventListener(`keydown`,t=>{if(t.key!==`Tab`)return;let n=[...e.querySelectorAll(`button, input, select, textarea, [tabindex]:not([tabindex="-1"])`)];if(n.length===0)return;let r=n[0],i=n[n.length-1];t.shiftKey&&document.activeElement===r?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),r.focus())})}function Bf(e){return e instanceof Error?e.message:String(e)}function Vf(e,t,n=!1){let r=A(`label`,`dialog-checkbox-label`),i=A(`input`);return i.type=`checkbox`,i.className=`dialog-checkbox`,i.value=t,i.checked=n,r.append(i,A(`span`,null,e)),r}function Hf(e){return e.split(/[\\/]/).filter(Boolean).at(-1)??e}async function Uf(e){let[t,n]=await Promise.all([K(`get-workspace-repos`,{id:e}),K(`scan-repo-roots`,{}).catch(()=>null)]);if(t.type!==`workspace-repos`)throw Error(`Unexpected reply`);if(!t.ok)throw Error(t.error||`Could not read the workspace`);let r=t.repos.map(e=>({name:Hf(e),path:e,isMember:!0})),i=new Set(t.repos),a=n?.type===`repo-roots-scanned`?n.directories:[];for(let e of a.flatMap(e=>e.projects))i.has(e.path)||(i.add(e.path),r.push({name:e.name,path:e.path,isMember:!1}));return r}function Wf(e){let{overlay:t,dialog:n,close:r,actions:i,btnCancel:a}=Lf({title:`Workspace repositories`}),o=A(`p`,`dialog-message`,`Saving restarts the session and resumes its conversation. A removed repository keeps its workspace branch, so committed work survives.`),s=A(`fieldset`,`dialog-workspace-list`);s.setAttribute(`aria-label`,`Workspace repositories`),s.append(A(`div`,`dialog-hint`,`Loading repositories...`));let c=A(`div`,`dialog-hint`);c.setAttribute(`role`,`status`);let l=A(`div`,`dialog-error`),u=A(`button`,`btn-dialog btn-dialog-confirm`,`Save`);u.type=`button`,u.disabled=!0,i.append(u),n.append(o,s,c,l,i),a.addEventListener(`click`,r),requestAnimationFrame(()=>a.focus()),Uf(e).then(e=>{if(t.isConnected){s.textContent=``;for(let t of e)s.append(Vf(t.name,t.path,t.isMember));u.disabled=!1}}).catch(e=>{t.isConnected&&(s.textContent=``,l.textContent=`Could not load repositories: ${Bf(e)}`)}),u.addEventListener(`click`,()=>{let n=[...s.querySelectorAll(`input:checked`)].map(e=>e.value);n.length<2?l.textContent=`Select at least two repositories.`:(l.textContent=``,u.disabled=!0,c.textContent=`Saving`,K(`set-workspace-repos`,{id:e,repos:n}).then(e=>{if(!t.isConnected)return;if(e.type===`set-workspace-repos-result`&&e.ok){r();return}let n=e.type===`set-workspace-repos-result`?e.error:null;l.textContent=n||`Could not update the workspace.`}).catch(e=>{t.isConnected&&(l.textContent=`Could not update the workspace: ${Bf(e)}`)}).finally(()=>{c.textContent=``,u.disabled=!1}))})}function Gf(e,t){if(e===t)return!0;let n=`${t} (`;if(!e.startsWith(n)||!e.endsWith(`)`))return!1;let r=e.slice(n.length,-1);return/^\d+$/.test(r)}function Kf(e,t){let n=0;for(let r of t)Gf(r,e)&&n++;return n}function qf(e,t){let n=new Set(t);if(!n.has(e))return e;for(let t=2;t<1e3;t++){let r=`${e} (${t})`;if(!n.has(r))return r}return`${e} (${Date.now()})`}function Jf(){let e=[];for(let[,t]of N)e.push(t.card.dataset.session??``);return e}function Yf(e){return Kf(e,Jf())}function Xf(e){return qf(e??``,Jf())}var Zf=320,Qf=8e3,$f=new Set;function ep(e){$f.add(e)}var tp=(e,t)=>{for(let n of $f)n(e,t)},np=window.matchMedia?.(`(prefers-reduced-motion: reduce)`);function rp(e){np?.matches||document.hidden||e?.animate&&e.animate([{transform:`scale(1)`,opacity:.65},{transform:`scale(1.35)`,opacity:1,offset:.3},{transform:`scale(1)`,opacity:.9}],{duration:300,easing:`cubic-bezier(0.22, 1, 0.36, 1)`})}function ip(e){if(!e||e.currentState!==k.RUNNING)return;let t=performance.now();e._lastOutputAt=t,!(t-(e._activityGate||0)<Zf)&&(e._activityGate=t,e._activity===`quiet`&&(e._activity=`active`,tp(e,`flag`)),tp(e,`beat`))}function ap(e){if(!e||e.currentState!==k.RUNNING)return;let t=performance.now()-(e._lastOutputAt||0)>=Qf?`quiet`:`active`;e._activity!==t&&(e._activity=t,tp(e,`flag`))}function op(e,t){e&&(t&&(e._lastOutputAt=performance.now(),e._activityGate=0,e._activity=`active`),t||(e._activity=void 0),tp(e,`flag`))}var sp=new Set([k.RUNNING,k.WAITING,k.STARTING,k.INITIALIZING]),cp=e=>sp.has(e);function lp(e){return cp(e.currentState)?zl(Date.now()-(e.stateSince||Date.now()),{rounding:`floor`,showsHours:!0}):``}var up=new Set;function dp(e){return up.add(e),()=>up.delete(e)}function fp(){for(let[,e]of N)ap(e);for(let e of up)try{e()}catch{}}setInterval(()=>{document.hidden||fp()},1e3),document.addEventListener(`visibilitychange`,()=>{document.hidden||fp()});function pp(e){return Ll(Number(e)||0,{rounding:`round`,wording:`compact`,suffix:``,justNowBelowSeconds:0})}function mp(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?`never`:`${pp(Date.now()-e)} ago`}var hp=e=>`polled ${mp(e)}`;function gp(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=hp){let a={el:e,ts:n,format:r};i(a),t.push(a)},onTick(e){n.push(e)},reset(){t=[],n=[]},ensure(){r||=dp(a)}}}function _p(e,{value:t,disabled:n=!1,selected:r=!1}={}){let i=A(`option`,null,e);return t!=null&&(i.value=t),n&&(i.disabled=!0),r&&(i.selected=!0),i}function vp(e){return typeof e!=`object`||!e?!1:`skipPermissionsByDefault`in e&&e.skipPermissionsByDefault===!0}function yp(e){if(typeof e!=`object`||!e||!(`coderEnvironments`in e))return[];let t=mo.safeParse(e.coderEnvironments);return t.success&&t.data?t.data:[]}function bp(e){let t=Object.entries(e.parameters).map(([e,t])=>`${e}=${t}`).join(`, `);return[`Template ${e.template}.`,t?`Parameters: ${t}.`:``,e.hourlyCostUsd===null?``:`Costs $${e.hourlyCostUsd.toFixed(2)} an hour.`,`Stops after ${e.idleStopMinutes} idle minutes.`].filter(Boolean).join(` `)}var xp=Object.freeze({"claude-code":`Claude Code`,codex:`Codex`}),Sp=[],Cp=new Set;function wp(e){let t=_o.safeParse(e);if(t.success){Sp=t.data;for(let e of Cp)e()}}function Tp(e){return Sp.find(t=>t.agent===e)??null}function Ep(e){return Cp.add(e),()=>{Cp.delete(e)}}function Dp(e){let t=ho.safeParse(e);return t.success?t.data:null}function Op(e,t){let n=xp[t];return e?e.state===`signed-in`&&e.source===`host`?`${n} uses the login already on this machine.`:e.state===`signed-in`?`${n} uses the login Glimmervoid connected.`:e.state===`connecting`?e.reason??`${n} sign-in is waiting for you.`:e.state===`failed`?e.reason??`${n} sign-in failed.`:`${n} has no login on this machine, so remote ${n} sessions cannot sign in.`:`Checking whether ${n} is signed in.`}function kp(){K(`get-agent-logins`,{},{timeoutMs:q}).then(e=>{e.type===`agent-logins`&&wp(e.logins)}).catch(()=>{})}function Ap(e){let t=xp[e],{dialog:n,close:r}=Ff();n.innerHTML=Hd,If(n,`agent-connect-title`),M(n,`#agent-connect-title`).textContent=`Connect ${t}`,M(n,`#agent-connect-intro`).textContent=`Glimmervoid signs ${t} in for its own remote sessions and keeps that login in its own folder, apart from any login you already have on this machine. The sign-in runs here and is never recorded.`;let i=M(n,`#agent-connect-state`),a=M(n,`#agent-connect-steps`),o=j(n,`#agent-connect-link`,`a`),s=M(n,`#agent-connect-code-row`),c=M(n,`#agent-connect-code`),l=M(n,`#agent-connect-paste-label`),u=j(n,`#agent-connect-paste`,`input`),d=M(n,`#agent-connect-error`),f=j(n,`#agent-connect-close`,`button`),p=j(n,`#agent-connect-stop`,`button`),m=j(n,`#agent-connect-submit`,`button`),h=j(n,`#agent-connect-start`,`button`);function g(){if(!n.isConnected){v();return}let t=Tp(e),r=t?.state===`connecting`;i.textContent=Op(t,e),h.hidden=r,p.hidden=!r;let u=r?t.verificationUrl:null;a.hidden=u===null,o.href=u??``,o.textContent=u??``,s.hidden=!t?.userCode,c.textContent=t?.userCode??``;let d=r&&t.needsPastedCode;l.hidden=!d,m.hidden=!d}async function _(t,n,r){r.disabled=!0,d.textContent=``;try{let r=await K(t,{agent:e,...n},{timeoutMs:q});if(r.type!==`agent-logins`)return;wp(r.logins),r.error&&(d.textContent=r.error)}catch(e){d.textContent=`The server did not answer (${df(e,q)}).`}finally{r.disabled=!1}}h.addEventListener(`click`,()=>{_(`agent-connect`,{action:`start`},h)}),p.addEventListener(`click`,()=>{_(`agent-connect`,{action:`cancel`},p)}),m.addEventListener(`click`,()=>{let e=u.value;u.value=``,_(`agent-connect-code`,{code:e},m)}),u.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),m.click())}),f.addEventListener(`click`,r);let v=Ep(g);g(),kp()}function jp(){let{dialog:e,close:t,actions:n,btnCancel:r}=Lf({title:`Set up a remote host`}),i=A(`p`,`dialog-hint`,`The setup session runs outside the guardrails so it can use your ssh keys. It runs commands on the remote host over ssh and asks before each one. Glimmervoid deletes its working folder when the session ends.`),a=A(`p`,`dialog-label`,`Agent`),o=A(`div`,`hooks-type-row`);o.setAttribute(`role`,`radiogroup`);let s=lf(),c=A(`button`,`btn-dialog btn-dialog-confirm`,`Start setup`);c.type=`button`,r.type=`button`,r.addEventListener(`click`,t),n.append(c),e.append(i,a,o,s.element,n);let l=null,u=!1;function d(){if(!e.isConnected){f();return}let t=ho.options.filter(e=>Tp(e)?.state===`signed-in`);(l===null||!t.includes(l))&&(l=t[0]??null),o.replaceChildren(...t.map(e=>{let t=A(`label`,`settings-view-toggle hooks-choice`),n=A(`input`,`settings-view-checkbox`);return n.type=`radio`,n.name=`remote-setup-agent`,n.checked=e===l,n.addEventListener(`change`,()=>{l=e}),t.append(n,A(`span`,null,xp[e])),t})),t.length===0&&o.append(A(`span`,``,`Sign in to Claude Code or Codex on this machine first.`)),c.disabled=u||l===null}c.addEventListener(`click`,async()=>{if(l!==null){u=!0,c.disabled=!0,s.show(`busy`,`Starting the setup session.`);try{let e=await K(`start-remote-setup`,{agent:l},{timeoutMs:q});if(e.type===`start-remote-setup-result`&&e.ok){t();return}s.show(`error`,e.type===`start-remote-setup-result`&&e.error?e.error:`The setup session did not start.`)}catch(e){s.show(`error`,`The server did not answer (${df(e,q)}).`)}finally{u=!1,d()}}});let f=Ep(d);d(),kp()}function Mp(e){return e.type===`add-session-result`&&e.error?e.error:e.type===`error`?e.message:`The session was not added.`}function Np(){Fp(null)}function Pp(e){Fp(e)}function Fp(e){let{dialog:t,close:n}=Ff();t.innerHTML=Vd,If(t,`add-session-title`);let r=j(t,`#add-session-picker`,`select`),i=M(t,`#add-session-picker-label`),a=M(t,`#add-session-workspace-list`),o=j(t,`#add-session-single-mode`,`button`),s=j(t,`#add-session-workspace-mode`,`button`),c=M(t,`#add-session-agent-label`),l=j(t,`#add-session-agent`,`select`),u=M(t,`#add-session-environment-label`),d=j(t,`#add-session-environment`,`select`),f=M(t,`#add-session-environment-hint`),p=M(t,`#add-session-agent-login`),m=M(t,`#add-session-agent-login-text`),h=j(t,`#add-session-agent-connect`,`button`),g=M(t,`#add-session-repo-roots`),_=M(t,`#add-session-repo-roots-title`),v=j(t,`#add-session-advanced-toggle`,`button`),y=M(t,`#add-session-advanced`),b=j(t,`#add-session-name`,`input`),x=j(t,`#add-session-path`,`input`),S=M(t,`#add-session-path-label`),ee=j(t,`#add-session-skip-perms`,`input`),te=j(t,`#add-session-unguarded`,`input`),ne=M(t,`#add-session-run-in-place-label`),re=j(t,`#add-session-run-in-place`,`input`),C=M(t,`#add-session-error`),ie=j(t,`#add-session-cancel`,`button`),ae=j(t,`#add-session-confirm`,`button`),oe=!1,se=[],ce=null,w=!1;function le(e){oe=e,o.setAttribute(`aria-pressed`,String(!e)),s.setAttribute(`aria-pressed`,String(e)),i.hidden=e,a.hidden=!e,v.hidden=e,v.setAttribute(`aria-expanded`,String(e)),y.hidden=!e,S.hidden=e,e&&requestAnimationFrame(()=>b.focus())}o.addEventListener(`click`,()=>le(!1)),s.addEventListener(`click`,()=>le(!0)),v.setAttribute(`aria-expanded`,`false`),v.addEventListener(`click`,()=>{let e=y.hidden;y.hidden=!e,v.setAttribute(`aria-expanded`,String(e)),e&&requestAnimationFrame(()=>b.focus())});let T=Nf({onAdded:me});g.append(T.element);let ue=lf(`dialog-hint`),E=A(`button`,`btn-dialog btn-dialog-cancel`,`Scan again`);E.type=`button`,E.hidden=!0,E.addEventListener(`click`,()=>{me()});let de=A(`div`,`flex items-center gap-2`);de.append(ue.element,E),g.before(de);function fe(e){r.textContent=``,r.appendChild(_p(`Scan failed`,{disabled:!0,selected:!0})),a.textContent=``,ue.show(`error`,`The project scan failed: ${e}`),E.hidden=!1,E.disabled=!1}function pe(e){let t=e.type===`repo-roots-scanned`;_.textContent=t&&e.directories.length>0?`No projects in your repository roots yet`:`No repository roots yet`,T.setSuggestions(t?e.suggestions??[]:[]),g.hidden=!1}function me(){return E.disabled=!0,ue.show(`busy`,`Scanning your repository roots`),K(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q}).then(e=>{if(e.type===`repo-roots-scanned`&&e.error){fe(e.error);return}ue.clear(),E.hidden=!0,r.textContent=``,a.textContent=``,g.hidden=!0,r.appendChild(_p(`-- Select a project --`,{value:``,disabled:!0,selected:!0}));let t=!1,n=e.type===`repo-roots-scanned`?e.directories:[];for(let e of n){if(e.projects.length===0)continue;let n=A(`optgroup`);n.label=e.root;for(let r of e.projects){let e=Yf(r.name),i=e>0?`${r.name} (${e} open)`:r.name,o=r.isGit===!1?`${i} (not a git repo)`:i;n.appendChild(_p(o,{value:JSON.stringify({name:r.name,path:r.path,isGit:r.isGit!==!1})})),a.appendChild(Vf(r.name,r.path)),t=!0}r.appendChild(n)}t||(r.textContent=``,r.appendChild(_p(`No projects yet`,{disabled:!0,selected:!0})),a.textContent=`No projects yet.`,pe(e))}).catch(e=>{fe(df(e,q))})}me(),r.addEventListener(`change`,()=>{try{let e=JSON.parse(r.value);b.value=Xf(e.name),x.value=e.path,Se(!e.isGit)}catch{}});let he=_f,ge=!1;function _e(e){let t=A(`p`,`dialog-hint dialog-hint-warning`,e);return t.setAttribute(`role`,`status`),C.before(t),t}function ve(e){ge=!0,ae.disabled=!0,_e(e).id=`add-session-agent-guidance`}K(`list-agents`,{},{timeoutMs:q}).then(e=>{let t=Sf(e);t.canSpawn||ve(t.guidance);let n=bf(e.type===`agents-listed`?e.agents:[]);if(he=n.selectedId,n.show){l.textContent=``;for(let e of n.options)l.appendChild(_p(e.label,{value:e.id,selected:e.id===n.selectedId}));c.hidden=!1}}).catch(e=>{_e(`Could not load the agent list (${df(e,q)}), so the session uses the default agent.`)}),l.addEventListener(`change`,()=>{he=l.value,ye()});function ye(){if(!t.isConnected){be();return}let e=Dp(he),n=e?Tp(e):null;p.hidden=ce===null||e===null||n===null||n.state===`signed-in`,m.textContent=e?Op(n,e):``}h.addEventListener(`click`,()=>{let e=Dp(he);e&&Ap(e)});let be=Ep(ye);kp();let xe=!1;ee.addEventListener(`change`,()=>{xe=!0}),K(`get-settings`,{},{timeoutMs:q}).then(e=>{e.type===`settings-error`?_e(`Could not load your settings (${e.message}). Check Skip permissions yourself.`):(Ce(yp(e.settings)),!xe&&(ee.checked=vp(e.settings)))}).catch(e=>{_e(`Could not load your settings (${df(e,q)}). Check Skip permissions yourself.`)});function Se(e){w=e,ne.hidden=!e||ce!==null,re.checked=!1}function Ce(e){if(e.length!==0){se=e,d.textContent=``,d.appendChild(_p(`Local`,{value:``,selected:!0}));for(let t of e)d.appendChild(_p(t.name,{value:t.name}));u.hidden=!1}}d.addEventListener(`change`,()=>{ce=se.find(e=>e.name===d.value)??null,s.hidden=ce!==null,f.hidden=ce===null,f.textContent=ce?bp(ce):``,Se(w),ye(),ce!==null&&oe&&le(!1)}),b.addEventListener(`input`,()=>{r.selectedIndex=0}),x.addEventListener(`input`,()=>{r.selectedIndex=0,Se(!1)});function we(){if(ge)return;let e=b.value.trim(),t=x.value.trim();if(oe){let t=[...a.querySelectorAll(`input:checked`)].map(e=>e.value);if(!e||t.length<2){C.textContent=`Enter a name and select at least two repositories.`;return}let n={name:Xf(e),path:t[0],repos:t,dangerouslySkipPermissions:ee.checked,unguarded:te.checked};he&&he!==`claude-code`&&(n.agent=he),Te(n);return}if(!e||!t){C.textContent=`Both fields are required. Select a project or use Advanced options.`;return}let n={name:Xf(e),path:t,dangerouslySkipPermissions:ee.checked,unguarded:te.checked,runInPlace:re.checked};he&&he!==`claude-code`&&(n.agent=he),ce&&(n.environment=ce.name),Te(n)}function Te(e){ae.disabled=!0,C.textContent=``,K(`add-session`,e,{timeoutMs:q}).then(e=>{e.type===`add-session-result`&&e.ok?n():(C.textContent=Mp(e),e.type===`add-session-result`&&e.reason===`not-git`&&(ne.hidden=!1))}).catch(e=>{C.textContent=`The session was not added: ${df(e,q)}`}).finally(()=>{ae.disabled=ge})}ie.addEventListener(`click`,n),ae.addEventListener(`click`,we),b.addEventListener(`keydown`,e=>{e.key===`Enter`&&(oe&&we(),oe||x.focus())}),x.addEventListener(`keydown`,e=>{e.key===`Enter`&&we()}),e?(y.hidden=!1,v.setAttribute(`aria-expanded`,`true`),b.value=e.name,x.value=e.path,Se(!0),requestAnimationFrame(()=>re.focus())):requestAnimationFrame(()=>r.focus())}function Ip({issueId:e,issueTitle:t,format:n,content:r,message:i,error:a}){let{dialog:o,close:s,actions:c,btnCancel:l}=Lf({title:`Investigation report`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),u=A(`div`,`dialog-report-meta`,t||e||``),d=null;if(n===`html`&&!a&&!i){let e=A(`iframe`,`dialog-report-frame`);e.setAttribute(`sandbox`,``),e.srcdoc=r||``,d=e}d||=A(`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 Lp({issueTitle:e,projectLabel:t,onOpenReport:n}){let{dialog:r,close:i,actions:a,btnCancel:o}=Lf({title:`Investigation`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),s=A(`div`,`dialog-report-meta`,t?`${t}: ${e}`:e),c=A(`p`,`dialog-trail-status`),l=A(`p`,`dialog-trail-summary`),u=A(`ol`,`dialog-trail-steps`),d=A(`p`,`dialog-trail-empty`,`No tool calls yet; the session is reading the issue.`),f=A(`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=hu(e);if(m!==n){u.textContent=``;for(let t of iu(e.steps)){let n=A(`li`,`dialog-trail-step dialog-trail-${t.kind}`),r=t.kind===`note`?t.text:`${t.stepCount} ${t.stepCount===1?`step`:`steps`}`;n.append(A(`span`,`dialog-trail-at`,mu(e.startedAt,t.at)),A(`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=gu(e,mp(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=dp(()=>{r.isConnected?p?.inFlight&&g(p):v()});return{update(e){p=e,_()},isOpen:()=>r.isConnected,close:()=>{v(),i()}}}function Rp(e,t,n){return{body:String(n||`Session needs attention`),tag:`glimmervoid-${e||``}-${t||``}`,renotify:!0,silent:!0}}var zp=4e3;function Bp(e,t){return`glimmervoid-notify-claim-${e||``}-${t||``}`}function Vp(e,t,n,r=zp){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 Hp=`#plan/`;function Up(e){return`${Hp}${encodeURIComponent(e)}`}function Wp(e){if(!e.startsWith(Hp))return null;let t=e.slice(6);if(!t||t.includes(`/`))return null;try{return decodeURIComponent(t)||null}catch{return null}}function Gp(){return typeof Notification>`u`?null:Notification}function Kp(){return Gp()!==null}function qp(){let e=Gp();return e?e.permission:`unavailable`}async function Jp(){let e=Gp();if(!e)return`denied`;if(e.permission!=="default")return e.permission;try{return await e.requestPermission()}catch{return e.permission}}function Yp(){return!Kp()&&!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.`:Kp()?qp()===`denied`&&fc()?`Blocked by the browser. Allow notifications for this site in its site settings.`:null:`This browser does not support desktop notifications.`}function Xp(){return fc()&&qp()==="default"}function Zp(e=()=>{}){let t=A(`div`,`notification-permission`),n=()=>{let r=Yp();if(t.replaceChildren(),t.hidden=!r&&!Xp(),r){t.append(A(`p`,`notification-permission-hint text-xs text-text-muted`,r));return}let i=A(`button`,`btn-dialog btn-dialog-cancel`,`Enable desktop notifications`);i.type=`button`,i.addEventListener(`click`,()=>{i.disabled=!0,Jp().then(()=>{n(),e()})}),t.append(i)};return n(),{element:t,refresh:n}}var Qp=`Desktop notifications are blocked by the browser, so alerts show only in this tab. Allow notifications for this site to get them again.`,$p=new Map,em=!1;function tm(){em||(em=!0,mf(Qp,{hidesInStreamerMode:!1}))}function nm(e,t){let n=$p.get(e)??new Set;n.add(t),$p.set(e,n),t.addEventListener(`close`,()=>n.delete(t))}function rm(e){let t=$p.get(e);if(t){$p.delete(e);for(let e of t)e.close()}}function im({session:e,category:t,message:n,kind:r,ignoreFocus:i=!1}={}){let a=Gp();if(!a||!fc()||document.documentElement.hasAttribute(`data-streamer`)||!i&&typeof document<`u`&&typeof document.hasFocus==`function`&&document.hasFocus()||(a.permission===`denied`&&tm(),a.permission!==`granted`)||!Vp(window.localStorage,Bp(e,t),Date.now()))return;let o=typeof e==`string`?e:``,s=N.get(o),c=s?xr(s):``;try{let i=new a(c||`Glimmervoid`,Rp(e,t,n));i.onclick=()=>{window.focus(),r===`plan`&&o&&(window.location.hash=Up(o)),i.close()},s&&nm(o,i)}catch{}}function am(e,t=null){return`#settings/${encodeURIComponent(e)}${t?`/${encodeURIComponent(t)}`:``}`}function om(e){return/^#settings(?:[/?]|$)/.test(e)}function sm(e){let t=e.trim();return t?`#settings?q=${encodeURIComponent(t)}`:`#settings`}function cm(e,t,n){let r=A(`a`,`settings-link`,n);return r.href=am(e,t),r}var lm=Ls(navigator.userAgent),um=`next-attention-keys`,dm=vc();function fm(){return dm}function pm(e,t){t.forEach((t,n)=>{n>0&&e.appendChild(A(`span`,`shortcut-sep`,`+`)),e.appendChild(A(`kbd`,`kbd`,t))})}function mm(e){let t=A(`span`,`shortcut-keys`);return pm(t,e),t}function hm(){let e=mm(Ks(`next-attention`,lm,dm));return e.classList.add(um),e}function gm(e){dm=e;let t=Ks(`next-attention`,lm,e);for(let e of document.querySelectorAll(`.${um}`))e.replaceChildren(),pm(e,t)}var _m=`npm install -g @anthropic-ai/claude-code`,vm={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>`},ym=null,bm=null,xm=null,Sm=null,Cm={steps:Cf,agentSummary:``,repoRoots:[]},wm=0,Tm=lf(`first-run-load-status`),Em=Zp();function Dm({title:e,state:t,summary:n,badge:r,body:i}){let a=A(`li`,`first-run-step`);a.dataset.state=t,t===`current`&&a.setAttribute(`aria-current`,`step`);let o=A(`div`,`first-run-step-head`),s=A(`span`,`first-run-step-icon`);if(s.innerHTML=vm[t],o.append(s,A(`span`,`first-run-step-title`,e)),t===`done`&&n&&o.append(A(`span`,`first-run-step-summary`,n)),t===`current`&&r&&o.append(A(`span`,`first-run-step-badge`,r)),a.append(o),t!==`current`)return a;let c=A(`div`,`first-run-step-body`);return c.append(...i()),a.append(c),a}function Om(){let e=A(`div`,`first-run-step-actions`);return xm=A(`button`,`btn-dialog btn-dialog-cancel`,`Rescan`),xm.type=`button`,xm.addEventListener(`click`,()=>{Mm({rescanAgents:!0})}),e.append(xm,A(`span`,`first-run-step-hint`,`Any other terminal agent can be added under customAgents.`)),[A(`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.`),A(`code`,`first-run-command`,_m),e]}function km(){let e=Sm??Nf({onAdded:()=>{Mm({rescanAgents:!1})}});return Sm=e,[A(`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 Am(){let e=A(`div`,`first-run-step-actions`),t=A(`button`,`btn-dialog btn-dialog-confirm`,`+ Session`);t.type=`button`,t.addEventListener(`click`,Np);let n=A(`span`,`first-run-step-hint`,`Folders and agents can change later in `);n.append(cm(`machine-sessions`,`repository-roots`,`Settings > Sessions`),`.`),e.append(t,n);let r=A(`p`,`first-run-step-text`,`Run a few at once. When one needs you, `);return r.append(hm(),` jumps straight to it from any tab.`),[A(`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 jm(){if(!bm)return;let{steps:e,agentSummary:t,repoRoots:n}=Cm;bm.replaceChildren(Dm({title:`1. Agent CLI`,state:e.agent,summary:t,badge:`MISSING`,body:Om}),Dm({title:`2. Repository roots`,state:e.repoRoots,summary:n.join(`, `),badge:`NEEDED`,body:km}),Dm({title:`3. First session`,state:e.firstSession,summary:``,badge:``,body:Am}))}async function Mm({rescanAgents:e}){wm+=1;let t=wm;xm&&(xm.disabled=!0);try{let[n,r]=await Promise.all([K(`list-agents`,e?{rescan:!0}:{},{timeoutMs:q}),K(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q})]);if(t!==wm)return;let i=r.type===`repo-roots-scanned`,a=i?r.directories.map(e=>e.root):[];Cm={steps:Tf({agentListing:n,repoRoots:a}),agentSummary:Ef(n),repoRoots:a},Tm.clear(),jm(),Sm?.setSuggestions(i?r.suggestions??[]:[])}catch(e){if(xm&&(xm.disabled=!1),t!==wm)return;Tm.show(`error`,`The checklist could not load: ${df(e,q)} It loads again once the server answers. If it stays like this, check the terminal running Glimmervoid, or run glimmervoid doctor.`)}}function Nm(){if(ym)return ym;let e=A(`section`,`first-run-checklist`);e.setAttribute(`aria-labelledby`,`first-run-title`);let t=A(`h2`,`first-run-title`,`Get to your first session`);t.id=`first-run-title`,bm=A(`ol`,`first-run-steps`);let n=A(`p`,`first-run-footer`,`This list goes away once a session exists. Something off? Run `);return n.append(A(`code`,null,`glimmervoid doctor`),` in a terminal.`),e.append(A(`span`,`first-run-eyebrow`,`FIRST RUN`),t,A(`p`,`first-run-intro`,`Glimmervoid runs the agent CLIs you already have, inside the repositories you point it at. Two checks, then start.`),bm,Tm.element,Em.element,n),ym=e,jm(),e}function Pm(e,t){if(!t){ym?.parentElement===e&&(ym.hidden=!0);return}let n=Nm(),r=!n.hidden&&n.parentElement===e;n.parentElement!==e&&e.append(n),n.hidden=!1,Em.refresh(),r||Mm({rescanAgents:!1})}function Fm(){ym&&!ym.hidden&&ym.isConnected&&Mm({rescanAgents:!1})}var Im=new Set([`http:`,`https:`]);function Lm(e){let t;try{t=new URL(e)}catch{return null}return Im.has(t.protocol)?t.href:null}var Rm=2,zm=8,Bm=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,Vm=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,Hm=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,Um=/^:?-{3,}:?$/,Wm=/^[A-Za-z0-9_+#.-]{1,32}$/;function Gm(e){return Qr(e,{overlongLine:`reject`})}function Km(e){let t=e.trim().split(/\s+/)[0]??``;return Wm.test(t)?t:``}function qm(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function Jm(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function Ym(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function Xm(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function Zm(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function Qm(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>Rm)return-1}return-1}function $m(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=Qm(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function eh(e){let t=[],n=Zm(e,`]`),r=0;for(;r<e.length;){let i=$m(e,r,n);if(i){let e=Lm(i.target.trim());e&&t.push({type:`link`,href:e,children:eh(i.label)}),e||qm(t,i.label),r=i.end;continue}if(e.startsWith("`",r)){let n=Xm(e,"`",r+1);if(n!==-1){t.push({type:`code`,text:e.slice(r+1,n)}),r=n+1;continue}}let a=Jm(e,r);if(a){let n=Xm(e,a,r+a.length);if(n!==-1){t.push({type:`strong`,children:eh(e.slice(r+a.length,n))}),r=n+a.length;continue}}let o=Ym(e,r);if(o){let n=Xm(e,o,r+1);if(n!==-1){t.push({type:`emphasis`,children:eh(e.slice(r+1,n))}),r=n+1;continue}}qm(t,e[r]),r++}return t}function th(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:th(e.children)).join(``)}var nh=`plan-h-`;function rh(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),`${nh}${r===1?n:`${n}-${r}`}`}function ih(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=ah(e);return t.length<2?!1:t.every(e=>Um.test(e))}function ah(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 oh(e){let t=Vm.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function sh(e,t,n,r){let i=oh(e[t]);if(!i)return null;let a=[],o=i.ordered,s=i.indent,c=t;for(;c<e.length;){let t=oh(e[c]);if(!t||t.indent<s)break;if(t.indent>s){if(r>=zm)break;let t=sh(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:eh(t.content)}]}),c++}}return{block:{type:`list`,ordered:o,items:a},next:c}}function ch(e,t){let n=e[t]??``;return n.trim()===``||Gm(n)||Bm.test(n)||Hm.test(n)||oh(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&ih(e[t+1])}function lh(e,t,n){let r=[],i=0;for(;i<e.length;){let a=e[i];if(a.trim()===``){i++;continue}let o=Bm.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:Km(o[2]),text:t.join(`
|
|
82
|
+
`)});continue}let s=Gm(a);if(s){let e=eh(s.text);r.push({type:`heading`,level:s.level,id:rh(th(e),t),children:e}),i++;continue}if(Hm.test(a)){r.push({type:`rule`}),i++;continue}if(i+1<e.length&&a.includes(`|`)&&ih(e[i+1])){let t=ah(a).map(eh),n=[];for(i+=2;i<e.length&&e[i].includes(`|`)&&e[i].trim()!==``;)n.push(ah(e[i]).map(eh)),i++;r.push({type:`table`,header:t,rows:n});continue}let c=sh(e,i,t,n);if(c){r.push(c.block),i=c.next;continue}if(n<zm&&/^ {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:lh(a,t,n+1)});continue}let l=[a.trim()];for(i++;i<e.length&&!ch(e,i);)l.push(e[i].trim()),i++;r.push({type:`paragraph`,children:eh(l.join(` `))})}return r}function uh(e){return lh(e.replace(/\r\n?/g,`
|
|
83
|
+
`).split(`
|
|
84
|
+
`),{slugCounts:new Map},0)}function dh(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:th(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function fh(e,t){for(let n of t){if(n.type===`text`){e.append(document.createTextNode(n.text));continue}if(n.type===`code`){e.append(A(`code`,`plan-inline-code`,n.text));continue}if(n.type===`emphasis`){let t=A(`em`);fh(t,n.children),e.append(t);continue}if(n.type===`strong`){let t=A(`strong`);fh(t,n.children),e.append(t);continue}let t=A(`a`,`plan-link`);t.href=n.href,t.target=`_blank`,t.rel=`noopener noreferrer`,fh(t,n.children),e.append(t)}}function ph(e){let t=A(`li`);return mh(t,e.children),t}function mh(e,t){for(let n of t)if(n.type===`heading`){let t=A(`h${n.level}`,`plan-heading`);t.id=n.id,fh(t,n.children),e.append(t)}else if(n.type===`paragraph`){let t=A(`p`,`plan-paragraph`);fh(t,n.children),e.append(t)}else if(n.type===`list`){let t=n.ordered?A(`ol`,`plan-list`):A(`ul`,`plan-list`);t.append(...n.items.map(ph)),e.append(t)}else if(n.type===`code`){let t=A(`pre`,`plan-code`),r=A(`code`,n.language?`language-${n.language}`:null,n.text);t.append(r),e.append(t)}else if(n.type===`table`){let t=A(`div`,`plan-table-wrap`),r=A(`table`,`plan-table`),i=A(`thead`),a=A(`tr`);for(let e of n.header){let t=A(`th`);fh(t,e),a.append(t)}i.append(a);let o=A(`tbody`);for(let e of n.rows){let t=A(`tr`);for(let n of e){let e=A(`td`);fh(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=A(`blockquote`,`plan-blockquote`);mh(t,n.blocks),e.append(t)}else e.append(A(`hr`,`plan-rule`))}function hh(e){let t=A(`div`,`plan-document`);return mh(t,e),t}function gh(e,{hasComment:t,isComposing:n,onComment:r,attachmentFor:i}){let a=A(`div`,`plan-document`),o=[];for(let s of e){let e=A(`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=A(`div`,`plan-section-head`),l=s.blocks[0],u=l?.type===`heading`;if(u&&mh(c,[l]),u||(e.id=`plan-introduction`),!t(s)&&!n(s)){let e=A(`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=A(`div`,`plan-section-body`);mh(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 _h={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function vh(e){let t=A(`div`,`plan-diff`);for(let n of e.lines){let e=A(`div`,`plan-diff-line plan-diff-${n.kind}`),r=A(`span`,`plan-diff-gutter`,_h[n.kind]);r.setAttribute(`aria-hidden`,`true`),e.append(r,A(`span`,`plan-diff-text`,n.text)),t.append(e)}return t}var yh=`glimmervoid-streamer-mode`,bh=new Set,xh=gs(yh,!1)===!0,Sh=null;function Ch(e){document.documentElement.toggleAttribute(`data-streamer`,e),Sh?.setAttribute(`aria-pressed`,String(e))}Ch(xh);function wh(){return xh}function Th(e){if(_s(yh,e),e!==wh()){xh=e,Ch(e);for(let t of bh)t(e)}}function Eh(e){return bh.add(e),()=>bh.delete(e)}async function Dh(e){try{let t=await K(`update-settings`,{settings:{streamerMode:e}},{timeoutMs:q});return t.type===`settings-error`?String(t.message):(Th(e),``)}catch(e){return df(e,q)}}async function Oh(){let e=!wh();e&&Th(!0);let t=await Dh(e);t&&mf(`${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 kh(){Oh()}function Ah(e){Sh=e,Ch(wh()),e.addEventListener(`click`,kh)}var jh=new Map,Mh=null;function Nh(e){return jh.get(e)??[]}function Ph(e){return Nh(e).length>0}function Fh(e){P(e)?.btnDocs.classList.toggle(`visible`,Ph(e))}function Ih(e){let t=Nh(e.sessionId);e.select.replaceChildren(...t.map(t=>{let n=A(`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 Lh(e){let t=Nh(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 Rh(e,t,n=`quiet`){e.status.textContent=t,e.status.dataset.tone=n}function zh(e){e.preview.replaceChildren(hh(uh(e.textarea.value)))}function Bh(e,t){Rf({title:e,message:`Your unsaved edits will be lost.`,confirmLabel:`Discard`,danger:!0,onConfirm:t})}function Vh(e,t,n){e.hasUnsavedChanges?Bh(t,n):n()}async function Hh(e,t){try{return{reply:await K(e,t,{timeoutMs:q}),failureText:null}}catch(e){return{reply:null,failureText:df(e,q)}}}async function Uh(e,t){e.docPath=t,e.isBusy=!0,e.baseHash=null,e.textarea.readOnly=!0,Ih(e),Rh(e,`Loading`),Lh(e);let{reply:n,failureText:r}=await Hh(`session-doc-read`,{id:e.sessionId,path:t});if(Mh!==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?(Rh(e,i?.error||r||`Could not open this doc`,`warn`),Lh(e)):(e.textarea.value=i.text,e.baseHash=i.hash,e.hasUnsavedChanges=!1,e.mode===`preview`&&zh(e),Rh(e,``),Lh(e))}async function Wh(e){if(e.btnSave.disabled||e.baseHash===null)return;e.isBusy=!0,Rh(e,`Saving`),Lh(e);let t=e.docPath,n=e.textarea.value,{reply:r,failureText:i}=await Hh(`session-doc-save`,{id:e.sessionId,path:t,text:n,baseHash:e.baseHash});if(Mh!==e||e.docPath!==t)return;e.isBusy=!1;let a=r?.type===`session-doc-save-result`?r:null;!a?.ok||a.hash===void 0?(Rh(e,a?.conflict?`The agent changed this file since you opened it. Reload to see its version.`:a?.error||i||`Save failed`,`warn`),Lh(e)):(e.baseHash=a.hash,e.hasUnsavedChanges=e.textarea.value!==n,Rh(e,e.hasUnsavedChanges?`Unsaved changes`:`Saved`),Lh(e))}function Gh(e,t){e.mode=t,t===`preview`&&zh(e),Lh(e),t===`edit`&&e.textarea.focus()}function Kh(e,t){let n=A(`button`,`plan-control ${t}`,e);return n.type=`button`,n}function qh(e){let t=Nh(e)[0];if(!t||Mh)return;let n=()=>Vh(y,`Close this doc?`,()=>y.close()),r=Ff({dialogClass:`doc-editor`,closeOnBackdrop:!1,onEscape:n}),i=`doc-editor-title-${e}`,a=A(`h3`,`doc-editor-title`,t.name);a.id=i;let o=A(`select`,`plan-control doc-editor-picker`);o.setAttribute(`aria-label`,`Doc`);let s=A(`span`,`doc-editor-status`);s.setAttribute(`role`,`status`);let c=Kh(`Edit`,`doc-editor-mode`),l=Kh(`Preview`,`doc-editor-mode`),u=Kh(`Reload`,`doc-editor-reload`),d=Kh(`Save`,`doc-editor-save`),f=Kh(`Close`,`doc-editor-close`),p=A(`div`,`doc-editor-modes`);p.append(c,l);let m=A(`div`,`doc-editor-actions`);m.append(s,u,d,f);let h=A(`div`,`doc-editor-header`);h.append(a,o,p,m);let g=A(`textarea`,`plan-editor doc-editor-text`);g.spellcheck=!0,g.setAttribute(`aria-labelledby`,i);let _=A(`div`,`doc-editor-preview`),v=A(`div`,`doc-editor-body`);v.append(g,_),r.dialog.append(h,v),If(r.dialog,i);let y={sessionId:e,docPath:t.path,baseHash:null,hasUnsavedChanges:!1,isBusy:!1,mode:wh()?`preview`:`edit`,title:a,select:o,textarea:g,preview:_,status:s,btnEdit:c,btnPreview:l,btnReload:u,btnSave:d,close:()=>{Mh=null,r.close()}};Mh=y,g.addEventListener(`input`,()=>{y.hasUnsavedChanges||(y.hasUnsavedChanges=!0,Rh(y,`Unsaved changes`),Lh(y))}),g.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),Wh(y))}),o.addEventListener(`change`,()=>{let e=o.value;o.value=y.docPath,Vh(y,`Open another doc?`,()=>{Uh(y,e)})}),c.addEventListener(`click`,()=>Gh(y,`edit`)),l.addEventListener(`click`,()=>Gh(y,`preview`)),u.addEventListener(`click`,()=>{Vh(y,`Reload this doc?`,()=>{Uh(y,y.docPath)})}),d.addEventListener(`click`,()=>{Wh(y)}),f.addEventListener(`click`,n),Uh(y,t.path),y.mode===`edit`&&g.focus()}function Jh(e){Mh&&Mh.sessionId===e&&(Ih(Mh),Lh(Mh),!Nh(e).some(e=>e.path===Mh?.docPath)&&Rh(Mh,`This doc is no longer surfaced, so it cannot be saved.`,`warn`))}function Yh(e){jh.set(e.id,e.docs),e.docs.length===0&&jh.delete(e.id),Fh(e.id),Jh(e.id)}function Xh(e){let t=[...jh.keys()];jh.clear();for(let[t,n]of Object.entries(e.sessions))jh.set(t,n);for(let e of new Set([...t,...jh.keys()]))Fh(e),Jh(e)}function Zh({dialogClass:e,titleText:t,titleId:n,body:r,onCloseRequest:i}){let a=Ff({dialogClass:e,closeOnBackdrop:!1,onEscape:i}),o=A(`div`,`coherence-journal-header`),s=A(`h3`,`dialog-title`,t);s.id=n;let c=A(`button`,`btn-dialog btn-dialog-cancel`,`Close`);return c.type=`button`,o.append(s,c),a.dialog.append(o,...r),If(a.dialog,s.id),c.addEventListener(`click`,i),a.overlay.addEventListener(`click`,e=>{e.target===a.overlay&&i()}),{close:a.close,focusClose:()=>c.focus()}}function Qh({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=Fd(e),m=Zh({dialogClass:t,titleText:n,titleId:`${p}-title`,body:l,onCloseRequest:()=>h.close()}),h={sessionId:s,status:c,parts:u,requestId:p,timer:null,close:()=>{o(h),a===h&&(a=null),m.close()}};a=h,d?.(),m.focusClose(),G(f(p))?h.timer=setTimeout(()=>{h.requestId=null,h.timer=null,c.textContent=`${r}: request timed out`},i):(h.requestId=null,c.textContent=`${r}: not connected`)}function c(e){let t=a;return!t||t.sessionId!==e.id||t.requestId===null||t.requestId!==e.requestId?null:(o(t),t)}return{open:s,settleResponse:c,currentPanel:()=>a}}var $h=2,eg={needsYou:1,broken:2,askedOfYou:3,waiting:4,settled:5},tg={danger:eg.broken,warn:eg.askedOfYou,wait:eg.waiting,ok:eg.settled,muted:eg.settled};function ng(e){return e?tg[e]:eg.settled}function rg(e){let t=[...e].sort((e,t)=>e.tier-t.tier),n=t.slice($h);return{visible:t.slice(0,$h),overflowCount:n.length,overflowHoverText:n.map(e=>`${e.text} ${e.hoverText}`).join(`
|
|
85
|
+
`)}}function ig(e){return e.map(e=>[e.key,e.text,e.hoverText,e.look?.icon,e.look?.tone,e.tier].join(`|`)).join(`
|
|
86
|
+
`)}var ag={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 og(e){return e?.active!==!1||e.reason===Qi.notInstalled?[]:[{key:`coherence-hooks`,text:`Hooks off`,hoverText:`Coherence hooks not active: ${e.reason}${e.version?` (${e.version})`:``}`,look:{icon:`failed`,tone:`danger`},tier:eg.broken}]}function sg(e){let t=Oi.safeParse(e.kind);return{heading:`${t.success?ag[t.data]:e.kind} | ${e.at??`Unknown time`} | ${e.id}`,text:e.text,detail:e.detail,supersedes:e.supersedes?`Supersedes: ${e.supersedes}`:null}}function cg(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 lg=new Map,ug=new Map,dg=Qh({requestPrefix:`coherence-journal`,dialogClass:`dialog coherence-journal-drawer`,titleText:`Coherence journal`,unavailableLabel:`Journal unavailable`,timeoutMs:5e3});function fg(e,t){ug.delete(e),t&&ug.set(e,t),vg(e)}function pg(e){lg.delete(e),ug.delete(e);let t=dg.currentPanel();t?.sessionId===e&&t.close()}function mg(e){let t=lg.get(e.id);t&&t.updatedAt>e.updatedAt||(lg.set(e.id,e),vg(e.id))}function hg(e){lg.clear();for(let[t,n]of Object.entries(e.sessions))lg.set(t,n);let t=dg.currentPanel();t&&vg(t.sessionId)}function gg(e){return og(ug.get(e)??null).map(t=>({...t,onActivate:()=>yg(e)}))}function _g(e){return lg.get(e)?.journal.ok===!0}function vg(e){let t=dg.currentPanel();if(!t||t.sessionId!==e)return;let n=cg(ug.get(e)??null,lg.get(e)??null);t.parts.reading.replaceChildren(...n.lines.map(e=>A(`p`,null,e)))}function yg(e){let t=A(`div`,`coherence-journal-reading`),n=A(`p`,`coherence-journal-status`,`Loading journal`);n.setAttribute(`role`,`status`);let r=A(`div`,`coherence-journal-entries`);dg.open({sessionId:e,status:n,body:[t,n,r],parts:{reading:t,entries:r},paintBeforeRequest:()=>vg(e),buildRequest:t=>({type:`session-coherence-journal`,id:e,requestId:t})})}function bg(e){let t=dg.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=sg(e),n=A(`article`,`coherence-journal-entry`);return n.append(A(`h4`,null,t.heading),A(`p`,null,t.text)),t.detail&&n.append(A(`p`,null,t.detail)),t.supersedes&&n.append(A(`p`,null,t.supersedes)),n}))):t.status.textContent=`Journal unavailable: ${e.error||`could not read journal`}`)}var xg=/\bElectron\/\d/,Sg=new Set([`localhost`,`127.0.0.1`]);function Cg(e){return xg.test(e)}function wg({userAgent:e,pageHostname:t}){return Cg(e)&&Sg.has(t)}function Tg(e){return Lm(e)!==null}var Eg=new Set([0,1]);function Dg({button:e,opensInNewTab:t}){return t&&Eg.has(e)}function Og(){return wg({userAgent:navigator.userAgent,pageHostname:location.hostname})}function kg(e){window.open(e,`_blank`,`noopener,noreferrer`)}async function Ag(e){try{let t=await Cl();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 jg(e){!Og()||!Tg(e)?kg(e):Ag(e).then(t=>{t||kg(e)})}function Mg(e){if(e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;t instanceof HTMLAnchorElement&&Dg({button:e.button,opensInNewTab:t.target===`_blank`})&&Tg(t.href)&&(e.preventDefault(),jg(t.href))}function Ng(e){Og()&&(e.addEventListener(`click`,Mg,!0),e.addEventListener(`auxclick`,Mg,!0))}var Pg=new Map([[`plan`,`Plan ready`],[`permission`,`Needs permission`]]);function Fg(e){return Pg.get(e)??`Needs input`}function Ig({hasPlan:e,pendingPromptKind:t,hasOpenReview:n,hasApprovedReview:r=!1}){return e&&(n||t===`plan`&&!r)?`plan`:`terminal`}function Lg({hasPlan:e,isBorrowed:t,face:n}){return!e||n===`plan`?`hidden`:t?`face`:`navigate`}var Rg=new Map(Object.entries({WAITING:`now`,COMPLETE:`later`,FAILED:`resting`,IDLE:`resting`,RUNNING:`resting`,STARTING:`resting`,INITIALIZING:`resting`,DORMANT:`resting`,DONE:`resting`}));function zg(e){return(typeof e.state==`string`?Rg.get(e.state):void 0)??`resting`}function Bg(e,t){return[...e].map(([e,n])=>{let r=n.currentState||k.DORMANT;return{id:e,ui:n,name:t(n),isDormant:r===k.DORMANT,state:r,unseenOutcome:n.unseenOutcome??null,ownerId:n.ownerId??null}})}function Vg(e){let t=new Set(e.map(({id:e})=>e)),n=e=>e.ownerId&&t.has(e.ownerId)?e.ownerId:null,r=new Map;for(let t of e){let e=n(t);e&&r.set(e,[...r.get(e)??[],t])}return e.flatMap(e=>n(e)?[]:[e,...r.get(e.id)??[]])}function Hg(e){return Vg([...e].sort((e,t)=>Number(e.isDormant===!0)-Number(t.isDormant===!0)))}function Ug({ownerName:e,ownedCount:t}){return e===null?t===1?`Owns 1 session`:t>1?`Owns ${t} sessions`:null:`Owned by ${e}`}function Wg(e,t){return e.length?e[((t==null?-1:e.indexOf(t))+1)%e.length]:null}function Gg(e,t){return t!==null&&e.includes(t)?t:e[0]??null}var Kg=new Map([[k.FAILED,`Failed`],[k.COMPLETE,`Finished`]]);function qg(e,t){return Kg.get(e)??Fg(t??``)}function Jg(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 Yg({state:e,unseenOutcome:t}){if(e===k.WAITING)return`waiting`;let n=Hi.safeParse(t);return n.success?n.data:null}function Xg(e={}){let t=Yg(e);return t!==null&&t!==`waiting`}function Zg(e={}){return Yg(e)!==null}var Qg=new Map([[`failed`,0],[`waiting`,1],[`finished`,2]]);function $g(e){let t=Yg(e);return t===null?void 0:Qg.get(t)}function e_(e){return e.filter(e=>$g(e)!==void 0).sort((e,t)=>($g(e)??0)-($g(t)??0)).map(({id:e})=>e)}function t_(e,t){let n=new Map(e.map(e=>[e.id,e]));return e_(e).flatMap(e=>{let r=n.get(e),i=r?Yg(r):null;return!r||i===null||e===t?[]:[{id:e,kind:i,name:r.name??``}]})}var n_={headTile:32,tile:26,tileGap:4,overflowSlot:40};function r_(e,t){if(t===0)return 0;let{headTile:n,tile:r,tileGap:i,overflowSlot:a}=n_,o=r+i;if(n+(t-1)*o<=e)return t;let s=e-a-i-n,c=Math.floor(s/o);return Math.max(1,Math.min(t-1,1+c))}function i_(e){let t={waitingCount:0,finishedCount:0,failedCount:0};for(let n of e||[]){let e=Yg(n||{});e===`waiting`&&t.waitingCount++,e===`failed`&&t.failedCount++,e===`finished`&&t.finishedCount++}return t}function a_({waitingCount:e,finishedCount:t,failedCount:n}){return e+n+t}function o_({waitingCount:e,failedCount:t}){return e+t}function s_({waitingCount:e,finishedCount:t,failedCount:n}){let r=[];return n>0&&r.push(`${n} FAILED`),e===1&&r.push(`1 NEEDS YOU`),e>1&&r.push(`${e} NEED YOU`),t>0&&r.push(`${t} FINISHED`),r.length===0?`ALL CLEAR`:r.join(`, `)}var c_=new Map([[`hand`,2]]),l_=1;function u_(e){return e?typeof e==`string`&&c_.get(e)||l_:0}function d_(e){let t=!1,n=0;for(let r of e||[]){let e=u_(r);e<=n||(t=typeof r!=`string`||r,n=e)}return t}var f_=`#c084fc`,p_=Object.freeze({failed:{icon:$n[k.FAILED],color:`#ef4444`},waiting:{icon:$n[k.WAITING],color:`#f59e0b`}});function m_(e){let{waitingCount:t,failedCount:n}=i_(Array.isArray(e)?e:[]);return t>0?`waiting`:n>0?`failed`:`idle`}function h_(e){return rr[e].map(({tag:e,attributes:t})=>`<${e} ${Object.entries(t).map(([e,t])=>`${e}="${t}"`).join(` `)}/>`).join(``)}function g_(e){if(e===`idle`)return`<path d="M10 8 L22 16 L10 24Z" fill="${f_}"/>`;let{icon:t,color:n}=p_[e];return`<g color="${n}" transform="translate(4 4) scale(1.5)">${h_(t)}</g>`}function __(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"/>${g_(e)}</svg>`}function v_(){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 y_=v_(),b_=`idle`;function x_(e){let t=m_([...e.values()].map(({currentState:e,unseenOutcome:t})=>({state:e,unseenOutcome:t})));t!==b_&&(b_=t,y_.href=`data:image/svg+xml,${encodeURIComponent(__(t))}`)}function S_(e,t){return Number.isFinite(e)?Math.round(Math.min(t.maxPx,Math.max(t.minPx,e))):null}function C_(e,t){return e===`ArrowRight`?t:e===`ArrowLeft`?-t:null}function w_({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=S_(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=C_(e.key,a);if(n===null)return;e.preventDefault();let r=u(t.getBoundingClientRect().width+l*n);r!==null&&s(r)})}function T_(e){return String(e).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function E_(e,t,n){let r=A(`button`,`popup-menu-item ${n}`);return r.type=`button`,r.setAttribute(`role`,`menuitem`),r.setAttribute(`aria-label`,e),r.append(A(`span`,`popup-menu-item-label`,e),A(`span`,`popup-menu-item-hint`,t)),r}function D_(e){return e.key===`ArrowDown`||e.key===`ArrowUp`}function O_(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 k_=new WeakMap;function A_(e){let t=k_.get(e);if(t?.element.parentElement===e.card)return t;let n=t??lf(`session-action-status m-0 px-3 py-1`);return e.termWrap.before(n.element),k_.set(e,n),n}function j_(e,t){let n=A_(e);return uf(t,n)?(n.clear(),!0):!1}var M_=!1,N_=new Set;function P_(e){M_=!!e,fee();for(let e of N_)e(M_)}function F_(e){return N_.add(e),()=>N_.delete(e)}function I_(){return M_}var L_=null;function R_(e){L_=e}var z_=null;function B_(e){z_=e}var V_=null;function H_(e){V_=e}var U_=[{cls:`agent-badge`,title:`Agent CLI this session supervises`},{cls:`worktree-badge`,text:`worktree`,title:`Running in a linked git worktree`,ariaLabel:`Linked git worktree`},{cls:`cloud-badge`,text:`cloud`,ariaLabel:`Runs in a Coder workspace`},{cls:`guardrails-badge`,text:`guardrails`,title:`Guardrails on: credentials, Glimmervoid state and blocked folders are off-limits to this session`,ariaLabel:`Guardrails on`},{cls:`post-turn-badge`,ariaHidden:!0},{cls:`usage-badge`,title:`Tokens and estimated API list-price cost for this conversation`},{cls:`wakeup-badge`},{cls:`prompt-badge`,title:`Waiting on a permission or input prompt`}];function W_({cls:e,text:t=``,title:n,ariaLabel:r,ariaHidden:i}){let a=A(`span`,e,t);return n&&(a.title=n),r&&a.setAttribute(`aria-label`,r),i&&a.setAttribute(`aria-hidden`,`true`),a}function G_(e){return`Runs in Coder workspace ${e}`}function K_(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 q_(e,t){t&&(e.dataset.saneYolo=``),t||delete e.dataset.saneYolo;let n=e.querySelector(`.perms-badge`);n&&K_(n,t)}function J_(e,t){let n=P(e);n&&q_(n.card,t)}function Y_(e,t,n,r={}){let i=n||k.INITIALIZING,a=A(`div`,`session-card`);a.dataset.id=e,a.dataset.session=t,a.dataset.state=i,r.skipPerms&&(a.dataset.skipPerms=``),r.saneYolo&&(a.dataset.saneYolo=``),r.worktree&&(a.dataset.worktree=``),r.workspace&&(a.dataset.workspace=``),r.remoteWorkspace&&(a.dataset.remoteWorkspace=r.remoteWorkspace),r.guarded&&(a.dataset.guarded=``),r.guardrailsReleased&&(a.dataset.guardrailsReleased=``),r.ephemeral&&(a.dataset.ephemeral=``),r.path&&(a.dataset.path=String(r.path));let o=A(`div`,`session-card-header`),s=A(`span`,`session-name`,t);s.title=`Double-click or press F2 to rename`,s.tabIndex=0;let c=r.skipPerms?A(`span`,`perms-badge`):null;c&&K_(c,r.saneYolo===!0);let l=A(`span`,`session-task-title`);ev(l,r.taskTitle);let u=A(`div`,`session-actions`),d=A(`div`,`session-overflow`),f=A(`button`,`btn-action btn-session-menu visible`);f.append(Zd(Yd)),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=A(`div`,`popup-menu session-overflow-menu`);p.id=`session-menu-${e}`,p.setAttribute(`role`,`menu`),f.setAttribute(`aria-controls`,p.id);let m=E_(`Restart`,`Keeps this conversation`,`overflow-restart`),h=E_(`Restart fresh`,`Ends this conversation and starts a new one`,`overflow-restart-fresh`),g=E_(`Resume conversation...`,`Pick an earlier conversation`,`overflow-resume`),_=E_(`Edit repositories...`,`Add or remove repositories in this workspace`,`overflow-workspace-repos`),v=E_(`Link pull request...`,`Link or unlink pull requests for this session`,`overflow-link-pr visible`),y=E_(`Conversation view`,`Show this session as messages (experimental)`,`overflow-conversation-view`);y.setAttribute(`role`,`menuitemcheckbox`),y.setAttribute(`aria-checked`,`false`);let b=E_(`Guardrails`,`Limit what this session can read, write and reach`,`overflow-guardrails`);b.setAttribute(`role`,`menuitemcheckbox`),X_(b,a),v.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),Z_(e)};let x=E_(`Coherence journal`,`Decisions and notes this session recorded`,`overflow-coherence-journal`);x.setAttribute(`aria-haspopup`,`dialog`);let S=()=>x.classList.toggle(`visible`,z_?.isReadable(e)===!0);f.onclick=S,f.onkeydown=S,x.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),z_?.open(e)};let ee=E_(`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`),V_?.(e)},p.append(m,h,g,_,y,b,x,ee,v),d.append(f,p);let te=A(`button`,`btn-action btn-debug`);te.append(Zd(qd)),te.title=`Debug state`,te.setAttribute(`aria-label`,`Debug session state`);let ne=A(`button`,`btn-action btn-trace`);ne.append(Zd(Jd)),ne.type=`button`,ne.title=`Trace`,ne.setAttribute(`aria-label`,`Trace`);let re=A(`button`,`btn-action btn-remove visible`);re.append(Zd(Kd)),re.type=`button`,re.title=`Remove session`,re.setAttribute(`aria-label`,`Remove session`);let C=A(`button`,`btn-action btn-face-plan`,`Plan`);C.type=`button`,C.title=`Show plan`;let ie=A(`button`,`btn-action btn-face-plan btn-docs`,`Docs`);ie.type=`button`,ie.title=`Open docs the agent surfaced`,u.append(ie,C,te,ne,d,re);let ae=A(`div`,`session-card-tags`),oe=U_.map(e=>W_(e.cls===`cloud-badge`&&r.remoteWorkspace?{...e,title:G_(r.remoteWorkspace)}:e));c&&oe.push(c),ae.append(...oe);let se=A(`span`,`session-ownership`);se.hidden=!0,o.append(s,l,se,ae,u);let ce=A(`div`,`terminal-wrap`);return a.append(o,ce),{card:a,header:o,nameEl:s,taskTitleEl:l,btnRestart:m,btnRestartFresh:h,btnSessionMenu:f,btnResume:g,btnWorkspaceRepos:_,btnConversationView:y,btnGuardrails:b,btnTrace:ne,btnRemove:re,btnPlan:C,btnDocs:ie,btnDebug:te,sessionMenu:p,termWrap:ce}}function X_(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 Z_(e){let{dialog:t,close:n,actions:r,btnCancel:i}=Lf({title:`Link pull request`}),a=A(`p`,`dialog-message`,`Paste a GitHub pull request URL or owner/repo#number.`),o=A(`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=A(`div`,`dialog-error`);s.setAttribute(`role`,`alert`);let c=A(`div`,`session-pr-chips dialog-linked-prs`);c.hidden=!0,L_?.(c,e);let l=A(`button`,`btn-dialog btn-dialog-confirm`,`Link`);l.type=`button`,r.append(l),t.append(c,a,o,s,r);function u(){let t=ro(o.value);t?G({type:`link-session-pr`,id:e,key:t})?n():s.textContent=W:s.textContent=`Enter a github.com pull request URL or owner/repo#number.`}i.addEventListener(`click`,n),l.addEventListener(`click`,u),o.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),u())}),requestAnimationFrame(()=>o.focus())}function Q_(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 $_(e,t){let n=e.querySelector(`.session-ownership`);n&&(n.textContent=t??``,n.hidden=t===null)}function ev(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 tv(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&&j_(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),ev(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 nv=`session-rename-input`;function rv(e){return!!e?.querySelector(`.${nv}`)}function iv(e,t,{returnsFocusToTerminal:n=!0}={}){let r=e.renameTargetEl?.isConnected?e.renameTargetEl:e.nameEl;if(!r||rv(r))return;let i=e.card?.dataset.session??r.textContent??``,a=document.createElement(`input`);a.type=`text`,a.className=nv,a.value=i,a.maxLength=64,r.textContent=``,r.appendChild(a),a.focus(),a.select();let o=A_(e);function s(t){return e.card.dataset.ephemeral===void 0?Li.test(t)?[...N.values()].some(n=>n!==e&&n.card.dataset.session===t)?`Session "${t}" already exists.`:``:Ri:`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()):j_(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 av(){let e=A(`button`,`debug-close`);return e.type=`button`,e.title=`Close`,e.setAttribute(`aria-label`,`Close debug overlay`),e.append(Zd(Kd)),e}function ov(e){return e?Ul(new Date(e)):`-`}function sv(e){return`${(Number(e||0)/1e3).toFixed(1)}s`}function cv(e){return e.decision===`gated`?`(${Number(e.active)||0} bg)`:e.decision===`wait`||e.decision===`release`?`(quiet ${sv(e.quietMs)})`:``}function lv(e){let t=`<span class="debug-dim">${ov(e.ts)}</span>`;if(e.kind===`signal`){let n=T_([e.signal,e.source].filter(Boolean).join(`/`));return e.action===`transition`?`${t} ${n} → <span class="debug-label">${T_(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=cv(e),i=r?` <span class="debug-dim">${r}</span>`:``;return`${t} gate <span class="debug-label">${T_(e.decision||`?`)}</span>${i}${n}`}if(e.kind===`notify`){let n=T_(e.category||e.to||`?`);return e.category?`${t} notify <span class="debug-label">${n}</span>: fired`:`${t} notify ${n}: <span class="debug-dim">silent (${T_(e.reason||``)})</span>`}return e.kind===`notify-state`?`${t} notify ${T_(e.category||`?`)}: <span class="debug-dim">${T_(e.from||`?`)} → ${T_(e.to||`?`)}</span>`:`${t} <span class="debug-dim">${T_(e.kind||`decision`)}</span>`}function uv(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">${T_(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">${T_(n.join(`/`))}</span>`:``;r+=`<div class="debug-field"><span class="debug-dim">${ov(e.timestamp)}</span> ${T_(e.from)} → ${T_(e.to)} <span class="debug-label">${T_(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?`${T_(a.signal)} (${T_(a.source||`?`)}${a.confidence?`/${T_(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">${T_(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 ${sv(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">${T_(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">${lv(e)}</div>`;r+=`</div>`,e.debugOverlay.innerHTML=r,e.debugOverlay.prepend(av())}function dv(e,t){if(e.debugOpen){fv(e);return}let n=document.createElement(`div`);n.className=`debug-overlay`,n.innerHTML=`<div class="debug-field debug-dim">Loading...</div>`,n.prepend(av()),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`)&&fv(e)}),G({type:`debug-state`,id:t})}function fv(e){e.debugOverlay&&=(e.debugOverlay.remove(),null),e.debugOpen=!1}function fee(){for(let[,e]of N)e.btnDebug.classList.toggle(`visible`,M_),e.btnTrace.classList.toggle(`visible`,M_),!M_&&e.debugOpen&&fv(e)}function pee(e){let t=typeof e.id==`string`?N.get(e.id):void 0;t?.debugOpen&&uv(t,e.payload)}function pv(e){P(e)?.debugOpen&&G({type:`debug-state`,id:e})}var mee={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 mv(e,t){let n=Gd(16,16);return n.classList.add(`pr-status-icon`),t&&(n.dataset.tone=t),n.append(Wd(`path`,{d:mee[e],fill:`currentColor`})),n}function hv(e,{className:t=``,linkUrl:n,ariaLabel:r,onActivate:i}={}){let a=`signal ${t}`.trim(),o=n?ur(a,``,n,e.hoverText):A(`span`,a);return o.title=e.hoverText,r&&o.setAttribute(`aria-label`,r),e.look&&(o.dataset.tone=e.look.tone,o.append(mv(e.look.icon,e.look.tone))),o.append(e.text),i&&hee(o,i,!n),o}function hee(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 gv(e){e.removeAttribute(`tabindex`),e.removeAttribute(`role`)}function gee(e,t){if(e.closest(`button, a[href]`))for(let e of t){gv(e);for(let t of e.querySelectorAll(`[role="button"]`))gv(t)}}function _ee(e){if(e.overflowCount===0)return null;let t=A(`span`,`signal-overflow`,`+${e.overflowCount}`);return t.title=e.overflowHoverText,t}function _v(e,t,n=e=>hv(e,e)){let r=ig(t);if(e.dataset.signalSignature===r)return;e.dataset.signalSignature=r;let i=rg(t),a=i.visible.map(n),o=_ee(i);o&&a.push(o),gee(e,a),e.hidden=a.length===0,e.replaceChildren(...a)}var vv=[],vee=`plan`,yee={parked:{text:`PARKED`,hoverText:`Merge parked`,look:{icon:`failed`,tone:`danger`},tier:eg.broken},merging:{text:`MERGING`,hoverText:`Merging`,look:{icon:`queued`,tone:`wait`},tier:eg.waiting}};function yv(e){vv.push(e)}function bee(e){let t=yee[e];return t?[{...t,key:`merge`}]:[]}function bv(e){let t=e.closest(`.session-row`),n=t?.dataset.id;t&&n&&_v(e,[...bee(t.dataset.merge??``),...vv.flatMap(e=>e(n))])}function xee(){for(let e of document.querySelectorAll(`.session-row-signals`))bv(e)}function xv(e,t=``){let n=A(e,`session-row ${t}`.trim());return n.innerHTML=`<span class="session-row-glyph" aria-hidden="true"></span><span class="session-row-main"><span class="session-row-title"><span class="session-row-name"></span><span class="session-row-cloud" hidden></span></span><span class="session-row-task" hidden></span><span class="session-row-ownership" hidden></span><span class="session-row-meta"><span class="session-row-label"></span><span class="session-row-signals" hidden></span></span></span><span class="session-row-elapsed" aria-hidden="true"></span>`,{row:n,refs:{glyph:M(n,`.session-row-glyph`),label:M(n,`.session-row-label`),ownership:M(n,`.session-row-ownership`),name:M(n,`.session-row-name`),cloud:M(n,`.session-row-cloud`),task:M(n,`.session-row-task`),signals:M(n,`.session-row-signals`),elapsed:M(n,`.session-row-elapsed`)}}}function Sv(e,t){let n=A(`div`,`session-row-item`),r=A(`button`,`session-row-remove`);return r.append(Zd(Kd)),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 Cv(e,t,n,r=!1,i=null){e.dataset.state=n,e.dataset.prompt=i??``;let{icon:a,label:o,isMonitoring:s}=fr(n,r),c=i===vee?`Plan ready`:o;return e.toggleAttribute(`data-monitoring`,s),ef(t.glyph,a),t.label.textContent=c,c}function wv(e,t){return e.hidden=!t,t?(e.title=G_(t),e.firstChild||e.append(Zd(Xd)),e.title):null}function Tv(e){let t=e.ownerId?N.get(e.ownerId):void 0,n=t?xr(t):null,r=e.card.dataset.id,i=[...N.values()].filter(e=>e.ownerId===r).length;return Ug({ownerName:n,ownedCount:i})}function Ev(e,t,n){let r=Tv(n);return t.ownership.textContent=r??``,t.ownership.hidden=r===null,e.closest(`.session-row-item`)?.toggleAttribute(`data-owned`,n.ownerId!==null&&N.has(n.ownerId)),$_(n.card,r),r}function Dv(e,t,{ui:n,state:r,name:i,mergeStatus:a}){let o=Cv(e,t,r,n.awaitingBackgroundTasks,n.pendingPromptKind);t.name.textContent=i;let s=wv(t.cloud,n.card.dataset.remoteWorkspace);t.task.textContent=n.taskTitle,t.task.hidden=!n.taskTitle||n.taskTitle===i,e.dataset.merge=a,bv(t.signals),e.dataset.activity=n._activity||``,t.elapsed.textContent=lp(n);let c=Ev(e,t,n),l=[i,s,n.taskTitle,o,c].filter(Boolean).join(`, `);return e.setAttribute(`aria-label`,l),e.title=l,o}var Ov={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.`}},kv=(e,t,n=!1)=>({state:e,awaitingBackgroundTasks:n,label:n?`Monitoring`:Jn[e],meaning:t}),Av=Object.freeze([kv(k.DORMANT,`Not started yet.`),kv(k.STARTING,`Setting up the worktree and booting the agent.`),kv(k.RUNNING,`The agent is mid-turn.`),kv(k.RUNNING,`The turn ended but background tasks or sub-agents are still running.`,!0),kv(k.WAITING,`Waiting on a permission prompt or your answer.`),kv(k.COMPLETE,`Finished a turn you have not looked at yet.`),kv(k.IDLE,`Ready for the next prompt.`),kv(k.DONE,`The agent process ended.`),kv(k.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 jv(e,t){let n=A(`section`,`status-legend`),r=A(`dl`,`status-legend-rows`);return r.append(...t),n.append(A(`h2`,`status-legend-title`,e),r),n}function Mv(e,t){let n=A(`div`,`status-legend-row`);return n.append(e,A(`dd`,`status-legend-meaning`,t)),n}function Nv(){return jv(`Status colors`,Av.map(e=>{let t=A(`dt`,`status-legend-badge`),n=A(`span`,`status-legend-glyph`),r=A(`span`,`status-legend-name`);n.setAttribute(`aria-hidden`,`true`),t.append(n,r);let i=Mv(t,e.meaning);return Cv(i,{glyph:n,label:r},e.state,e.awaitingBackgroundTasks),i}))}function Pv(){return jv(`Pull request icons`,Object.keys(Ov).map(e=>{let t=Ov[e],n=A(`dt`,`status-legend-badge`);return n.append(mv(e),A(`span`,`status-legend-name`,t.label)),Mv(n,t.meaning)}))}var Fv=new Set(Ic());function Iv(){Lc([...Fv])}function Lv(e){if(!e)return;let t=String(e);Fv.has(t)||(Fv.add(t),Iv())}function Rv(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),Lv(i)}return[...Fv].filter(e=>!n.has(e))}function zv(e){return!e||!Fv.delete(String(e))?!1:(Iv(),!0)}function Bv(e,t=`explicit-state`){let n=t===`dormant-fallback`?e||k.DORMANT:e;return n===k.DORMANT?`start-session`:n===k.COMPLETE?`dismiss`:null}function Vv({previousState:e,nextState:t,isPhoneLayout:n,isDocumentVisible:r,isDocumentFocused:i,isActiveViewer:a,hasFocusInsideTerminal:o}){return t!==k.COMPLETE||!e||e===k.COMPLETE||!r?!1:n?a:i&&o}function Hv(e,t){if(!e)return null;let n=t.get(e);return!n||(n.currentState||k.DORMANT)===k.DORMANT?null:e}function Uv(){return Or.snapshot().selectedSessionId}function Wv(e){Or.dispatch(`selectSession`,e)}function Gv(e){return Or.subscribe((t,n)=>{n.includes(`selectedSessionId`)&&e(t.selectedSessionId)})}function Kv(e,t=`explicit-state`){let n=N.get(e);if(!n)return null;let r=Bv(n.currentState,t);return r&&j_(n,{type:r,id:e}),n}function qv(e,{rememberFocus:t=!0}={}){Wv(e),t&&tl(e)}function Jv(){return Hv(el(),N)}function Yv(e=xr){return Bg([...N],e)}function Xv(e,t){let n=N.get(e);return n?j_(n,t):G(t)?!0:(mf(W),!1)}async function Zv(e,t){try{let n=Xf(t),r=await K(`add-session`,{name:n,path:e},{timeoutMs:q});if(r.type===`add-session-result`&&r.ok)return;if(r.type===`add-session-result`&&r.reason===`not-git`){Pp({name:n,path:e});return}mf(Mp(r))}catch(e){mf(`The session was not added: ${df(e,q)}`)}}function Qv(e,t){e&&Zv(e,t)}var $v=39e5;function ey(e,t){if(!t.keptPaths?.length)return`${t.error}. Removing "${xr(e)}" deletes its Coder workspace and that work with it. Push it from the session first to keep it.`;let n=t.keptPaths.map(e=>`${e.path} (${e.reason})`).join(`; `);return`Removing "${xr(e)}" deletes work that is not saved: ${n}. Commit and push it from the session first to keep it.`}async function ty(e,t,n,r=[]){try{let i=await K(`remove-session`,{id:t,discardWork:n,confirmedKeptPaths:r},{timeoutMs:$v});if(i.type!==`remove-session-result`||i.ok)return;if(!i.canDiscardWork){mf(`The session was not removed: ${i.error??`unknown error`}`);return}Rf({title:`Work not saved`,message:ey(e,i),confirmLabel:`Discard work`,danger:!0,onConfirm:()=>{ty(e,t,!0,(i.keptPaths??[]).map(e=>e.path))}})}catch(e){mf(`The session was not removed: ${df(e,$v)}`)}}function ny(e,t){let n=N.get(e);if(!n)return;let r=t||n.card?.dataset.merge||`none`,i=r===`pending-review`||r===`parked`,a=n.card?.dataset.remoteWorkspace!==void 0||n.card?.dataset.workspace!==void 0;Rf({title:`Remove Session`,message:i?`"${xr(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 "${xr(n)}"?`,confirmLabel:`Remove`,danger:!0,onConfirm:()=>{a?ty(n,e,!1):j_(n,{type:`remove-session`,id:e})}})}var ry=Object.freeze({[k.IDLE]:`compaction_restore_idle`,[k.COMPLETE]:`compaction_restore_complete`,[k.WAITING]:`compaction_restore_waiting`});function iy(e){return Object.values(ry).some(t=>t===e)}var ay=new Set([`claude-code`,`codex`]),oy=`\x1B`,sy=`${oy}[200~`,cy=`${oy}[201~`,ly=400,uy=4e3,dy=/^\[Image: source: (.+)\]$/,fy=`uploads`,py=new Set([`Agent`,`Task`]),my=/^Async agent launched/,hy=`<task-notification>`,gy=/<tool-use-id>([^<]+)<\/tool-use-id>/,_y=/<task-id>([^<]+)<\/task-id>/,vy=/agentId: ([\w-]+)/,yy=/<status>([^<]+)<\/status>/,by=6e5;function xy(e){return typeof e==`string`&&ay.has(e)}function Sy(e,t){if(!xy(e))return null;let n=t.replace(/\r\n?/g,`
|
|
87
|
+
`).trim();return n?[{data:n.includes(`
|
|
88
|
+
`)?`${sy}${n}${cy}`:n,delayBeforeMs:0},{data:`\r`,delayBeforeMs:ly}]:null}function Cy(e){return xy(e)?[{data:`\r`,delayBeforeMs:0}]:null}function wy(e){return xy(e)?[{data:oy,delayBeforeMs:0}]:null}function Ty(e,t){return e===k.WAITING&&typeof t==`string`&&t!==``}function Ey(e,t){return e.uuid??`${e.kind}-${e.ts}-${t}`}function Dy(e){return typeof e.agentId==`string`}function See(e){let t=dy.exec(e.trim());if(!t)return null;let[n,r,i]=t[1].split(/[\\/]/).slice(-3);return n!==fy||!r||!i?null:`/upload/${encodeURIComponent(r)}/${encodeURIComponent(i)}`}function Cee(e,t){let n=e[e.length-1];n?.kind===`user`&&n.imageUrls.push(t)}function wee(e){if(!e||typeof e!=`object`)return`Agent`;let t=e.description;return typeof t==`string`&&t.trim()?t.trim():`Agent`}function Oy(e,t,n){if(!e)return;if(t.isError){e.state=`failed`;return}if(!my.test(t.content)){e.state=`done`;return}let r=vy.exec(t.content)?.[1];r&&n.set(r,e)}function ky(e){return e.trimStart().startsWith(hy)}function Ay(e,t,n){let r=gy.exec(e)?.[1];if(r)return t.get(r);let i=_y.exec(e)?.[1];return i?n.get(i):void 0}function jy(e,t,n){let r=Ay(e,t,n);r?.state===`running`&&(r.state=yy.exec(e)?.[1]===`completed`?`done`:`failed`)}function My(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=Ey(e,o);if(!Dy(e)){if((e.kind===`prompt`||e.kind===`expansion`)&&ky(e.text))jy(e.text,i,a);else if(e.kind===`prompt`)s(),t.push({kind:`user`,key:l,text:e.text,at:e.ts,imageUrls:[]});else if(e.kind===`expansion`)for(let n of e.text.split(`
|
|
89
|
+
`)){let e=See(n);e&&Cee(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),!py.has(e.name))return;let o={key:l,description:wee(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),Oy(i.get(e.toolUseId),e,a)}}}),s(),t}function Ny(e){return e.flatMap(e=>e.kind===`work`?e.agentRuns.filter(e=>e.state===`running`):[])}function Py(e){let t=e.at(-1);return t?.kind===`work`?t:null}function Fy(e){return new Set(e.flatMap(e=>e.kind===`user`?[e.key]:[]))}function Iy(e,t,n){if(n-e.sentAt>by)return!0;let r=e.text.trim();return t.some(t=>t.kind===`user`&&!e.userKeysAtSend.has(t.key)&&t.text.includes(r))}function Ly(e){return`${e} ${e===1?`agent`:`agents`}`}function Ry(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 zy(e){let t=e.agentRuns.length>0?`, ${Ly(e.agentRuns.length)}`:``;return`Worked ${Ry(e.endedAt-e.startedAt)}${t}`}function By(e,t){let n=t>0?`${Ly(t)} running`:``;return e===null?n:n?`Working ${Ry(e)}, ${n}`:`Working ${Ry(e)}`}function Vy(e){return e.length<=uy?e:e.slice(e.length-uy)}var Hy=`(max-width: 768px)`,Uy=`(pointer: coarse)`;function Wy({coarse:e,narrowWidth:t}={}){return e===!0&&t===!0?`phone`:`desktop`}var Gy=window.matchMedia?.(Uy),Ky=window.matchMedia?.(Hy);function qy(){return Wy({coarse:!!Gy?.matches,narrowWidth:!!Ky?.matches})}function Jy(e){document.documentElement.dataset.layout!==e&&(document.documentElement.dataset.layout=e)}function Yy(){Or.subscribe((e,t)=>{t.includes(`layout`)&&Jy(e.layout)});let e=qy();Jy(e),Or.dispatch(`setLayout`,e);let t=()=>Or.dispatch(`setLayout`,qy());return Gy?.addEventListener?.(`change`,t),Ky?.addEventListener?.(`change`,t),e}function Xy(){return Or.snapshot().layout===`phone`}function Zy(e){return Or.subscribe((t,n)=>{n.includes(`layout`)&&e(t.layout)})}var Qy=`CommitMono`,$y=[400,700].map(e=>`${e} 14px ${Qy}`),eb=`monospace`;function tb(e){return e.trim().replace(/^['"]|['"]$/g,``)}function nb(e,t){let n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),r=t?n:n.filter(e=>tb(e)!==Qy);return r.length>0?r.join(`, `):eb}function rb(e,t,n){return Promise.all(t.map(t=>e.load(t))).then(n,()=>void 0)}function ib(e,t){for(let n of e)n.term&&(n.term.options.fontFamily=t,n._syncGrid?.())}function ab(){return document.fonts?$y.every(e=>document.fonts.check(e)):!1}function ob(){return nb(getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`),ab())}function sb(e){document.fonts&&rb(document.fonts,$y,e)}var cb=6,lb=262144,ub=16384,db=()=>{};function fb(e,t){if(t.length<=ub)e.push(t);else for(let n=0;n<t.length;n+=ub)e.push(t.slice(n,n+ub))}function pb({budget:e=cb,maxChunkBytes:t=lb,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)fb(l,e),m+=e.length,a.readIdx++;else{m===0&&(fb(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,db);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 mb=pb(),hb=.3,gb=null;function _b(){return ps(gb)}function vb(e){return ms(e,gb)}async function yb(){try{let e=await fetch(ss,{credentials:`same-origin`,cache:`no-store`});e.ok&&(gb=hs(await e.json()))}catch{}}function bb(){let e=new AudioContext;return e.state===`suspended`&&e.resume(),e}function xb(e,t){setTimeout(()=>e.close().catch(()=>{}),(t+.1)*1e3)}function Sb(e){Cb(cs[e]??cs.chime)}function Cb(e){let t=bb(),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)}xb(t,i)}async function wb(e){try{let t=await fetch(ds(e),{credentials:`same-origin`});return t.ok?await t.arrayBuffer():null}catch{return null}}async function Tb(e){let t=await wb(e);if(!t)return!1;let n=bb();try{let e=await n.decodeAudioData(t),r=n.createGain();r.gain.value=hb,r.connect(n.destination);let i=n.createBufferSource();return i.buffer=e,i.connect(r),i.start(),xb(n,e.duration),!0}catch{return n.close().catch(()=>{}),!1}}var Eb=[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 Db(){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<Eb.length;i++){let a=r+i*n,o=e.createOscillator(),s=e.createGain();o.type=`square`,o.frequency.value=Eb[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+Eb.length*n;t.gain.setValueAtTime(.05,i-.05),t.gain.exponentialRampToValueAtTime(.001,i),setTimeout(()=>e.close().catch(()=>{}),(i-r+.1)*1e3)}catch{}}function Ob(){try{Sb(as)}catch{}}function kb(e){try{let t=vb(e),n=fs(t);if(!n){Sb(t);return}Tb(n).then(e=>{e||Ob()})}catch{}}var Ab={"--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)`},jb={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`},Mb={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`,...Ab,"--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:{...jb,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`,...Ab,"--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:{...jb,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`,...Ab,"--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:{...jb,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`}}},Nb=`phyrexian`,Pb=null;function Fb(e){let t=Mb[e];if(!t)return;let n=Pb;Pb=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`&&Db()}function Ib(e){document.documentElement.toggleAttribute(`data-show-usage`,e)}function Lb(e){document.documentElement.toggleAttribute(`data-arrow-pad`,e)}function Rb(){let e=Mb[Pb||Nb];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 zb(){return Object.entries(Mb).map(([e,t])=>({id:e,label:t.label}))}var Bb=c().int().min(1).max(500),Vb=c().int().min(1).max(200);d(`type`,[g({type:m(`input`),data:l()}),g({type:m(`claim`),cols:Bb,rows:Vb}),g({type:m(`unview`)}),g({type:m(`pause-output`)}),g({type:m(`resume-output`)})]);var Hb=g({type:m(`pty-size`),cols:Bb,rows:Vb,seq:c().int().nonnegative()}),Ub=`history`;u([`screen`,`deep`]);function Wb(e){try{return JSON.parse(e)}catch{return null}}function Gb(e){let t=Hb.safeParse(Wb(e));return t.success?t.data:null}function Kb(e,t){return!e||!t?!1:e.cols===t.cols&&e.rows===t.rows}function qb(e){return!e||!Number.isInteger(e.cols)||!Number.isInteger(e.rows)?!1:e.cols>0&&e.rows>0}function Jb(e){return{cols:Math.min(Math.max(e.cols,1),500),rows:Math.min(Math.max(e.rows,1),200)}}function Yb({authoritative:e,isActiveViewer:t,lastClaim:n}){return!(t&&Kb(e,n))}function Xb({isDocumentVisible:e,isDocumentFocused:t,hasFocusInsideCard:n,hasWindowBlurredSinceFocus:r,isPhoneLayout:i}){return e?i||t?!0:n&&!r:!1}function Zb({isBorrowedCard:e,isTerminalFaceShown:t}){return!e||!t}function Qb({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}?${Ub}=deep`:n}function ex({authoritative:e,isActiveViewer:t,isDocumentEngaged:n,isDataWsOpen:r,lastClaim:i}){return!t||!n||!r?`none`:Yb({authoritative:e,isActiveViewer:t,lastClaim:i})?`rebid`:`resync`}function tx({isActiveViewer:e,lastClaim:t,owedClaim:n}){return e?n??t:null}function nx({authoritative:e,applied:t,proposal:n,isActiveViewer:r,isDataWsOpen:i,lastClaim:a}){let o=!!e&&!Kb(e,t),s=qb(n)?Jb(n):null,c=r&&!!s&&!Kb(s,a);return{resizeTo:o?e:null,owedClaim:c?s:null,keepsPendingSettle:r&&!s,sendUnview:!r&&i&&!!a,isFollowing:Yb({authoritative:e,isActiveViewer:r,lastClaim:a})}}function rx(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?new TextDecoder().decode(e):null}function ix(e){let t=rx(e);return t===null?null:Gb(t)}function ax(e,t){if(typeof e==`string`)return{kind:`bytes`,data:e};let n=ix(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 ox=``,sx=`\x1B`,cx=`\r`,lx=new Map([[`deleteContentBackward`,ox],[`deleteByComposition`,ox],[`deleteCompositionText`,ox],[`deleteWordBackward`,sx],[`deleteSoftLineBackward`,sx],[`deleteHardLineBackward`,sx]]);function ux(e){return lx.get(e)??``}var dx=new Set([`insertFromPaste`,`insertFromPasteAsQuotation`,`insertFromDrop`,`insertFromYank`,`historyUndo`,`historyRedo`]);function fx(e){return typeof e!=`string`||e===``||!dx.has(e)}function px(e){return e?e.keyCode===229||e.key===`Process`:!1}function mx(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 ox.repeat(n.length-a)+r.slice(a).join(``).replace(/\r\n|\n|\r/g,cx)}var hx=/https?:\/\/[^\s<>"']+/g,gx=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`'`,`"`]),_x={")":`(`,"]":`[`,"}":`{`};function vx(e,t){let n=0;for(let r of e)r===t&&n++;return n}function yx(e){for(;;){let t=e[e.length-1];if(t===void 0)return e;if(gx.has(t)){e=e.slice(0,-1);continue}let n=_x[t];if(n&&vx(e,n)<vx(e,t))e=e.slice(0,-1);else return e}}function bx(e){let t=[];for(let n of e.matchAll(hx)){let e=yx(n[0]);e.length<=8||t.push({start:n.index,end:n.index+e.length,url:e})}return t}var xx=50;function Sx(){return{activate(e,t){jg(t)},allowNonHttpProtocols:!1}}function Cx(e,t){let n=t-1;for(;n>0&&e.getLine(n)?.isWrapped&&t-1-n<xx;)n--;let r=t-1;for(;e.getLine(r+1)?.isWrapped&&r-(t-1)<xx;)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 wx(e){return e.registerLinkProvider({provideLinks(t,n){let r=e.buffer?.active;if(!r)return n(void 0);let{text:i,cellAt:a}=Cx(r,t),o=[];for(let{start:e,end:t,url:n}of bx(i)){let r=a[e],i=a[t-1];r&&i&&o.push({range:{start:r,end:i},text:n,activate(e,t){jg(t)}})}n(o.length?o:void 0)}})}var Tx=`(?:password|passwd|pwd|token|api[_-]?key|secret|credential|auth[_-]?token|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|connection[_-]?string)`,Ex=`(?:"[^"\\r\\n]*"|'[^'\\r\\n]*'|[^\\s\\r\\n]+)`,Dx=`[^\\S\\r\\n]`,Ox=`${Tx}${Dx}*(?:=>|[:=])${Dx}*`,kx=`[?&][A-Za-z0-9_.-]*`,Ax=`[^\\r\\n;&|]{0,200}?`,jx=`(?:mysql|mysqldump|mysqladmin|mysqlshow|mariadb|mariadb-dump)`,Mx=RegExp(`(${Ox})${Ex}`,`gi`),Nx=RegExp(`(\\bBearer${Dx}+)[A-Za-z0-9._~+/=-]{8,}`,`gi`),Px=[/\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],Fx=[RegExp(`((?:^|\\s)--?${Tx}${Dx}+)${Ex}`,`gi`),RegExp(`((?:^|\\s)-(?:pwd|pw)(?![a-z])${Dx}*=?${Dx}*)${Ex}`,`g`),RegExp(`(-AsPlainText${Dx}+)${Ex}`,`gi`),RegExp(`((?:^|\\s)setx${Dx}+[^\\s\\r\\n]*${Tx}[^\\s\\r\\n]*${Dx}+)${Ex}`,`gi`)],Ix=[RegExp(`(\\bauthorization${Dx}*:${Dx}*Basic${Dx}+)[A-Za-z0-9+/=_-]{8,}`,`gi`),RegExp(`(\\bdocker${Dx}+login\\b${Ax}${Dx}-p(?:${Dx}+|=))${Ex}`,`gi`),RegExp(`(\\bcurl\\b${Ax}${Dx}(?:--user|-u)(?:${Dx}+|=)[^\\s:\\r\\n]+:)${Ex}`,`gi`),RegExp(`(\\b${jx}\\b${Ax}${Dx}-p)${Ex}`,`g`),/\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)[^\s@/]+(?=@)/gi];[...Fx,...Ix];var Lx=[/-----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],Rx=RegExp(`(${kx}(?:${Tx}|_key)=)[^&#\\s]+`,`gi`),zx=[Mx,RegExp(`(\\b(?=[A-Z0-9_]*(?:SECRET|TOKEN|KEY|PASSWORD))[A-Z][A-Z0-9_]*=)${Ex}`,`g`)],Bx=[Nx,...Fx,...Ix,...Px,...Lx];function Vx(e,t){return[...e.matchAll(t)].map(e=>({matchStart:e.index,valueStart:e.index+(e[1]??``).length,end:e.index+e[0].length}))}function Hx(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 Ux(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 Wx(e){let t=Vx(e,Rx);return Ux([...t,...zx.flatMap(n=>Hx(Vx(e,n),t)),...Bx.flatMap(t=>Vx(e,t))].map(e=>({start:e.valueStart,end:e.end})))}var Gx=`#808080`,Kx=new WeakMap;function qx(e,t,n){return`${e}:${t}:${n}`}function Jx(e){return qx(e.marker.line,e.x,e.width)}function Yx(e,t){let n=t;for(;n>0&&t-n<63&&e.getLine(n)?.isWrapped;)n--;return n}function Xx(e,t){let n=t;for(;n-t<63&&e.getLine(n+1)?.isWrapped;)n++;return n}function Zx(e,t,n){let r=``;for(let i=t;i<=n;i++)r+=e.getLine(i)?.translateToString(!1)??``;return r}function Qx(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 eS(e,t,n,r){let i=[];if(Wx(Zx(e,t,n)).length===0)return i;let{text:a,cellAt:o}=Qx(e,t,n,r);for(let e of Wx(a))$x(i,o.slice(e.start,e.end));return i}function tS(e,t){let n=e.getNullCell(),r=[],i=t;for(;i<e.length;){let t=Xx(e,i);r.push(...eS(e,i,t,n)),i=t+1}return r}function nS(){return{masks:[],watermark:null,isFullRescanOwed:!0}}function rS(e){e.decoration.dispose(),e.marker.dispose()}function iS(e){for(let t of e.masks)rS(t);e.masks.length=0,e.watermark?.dispose(),e.watermark=null,e.isFullRescanOwed=!0}function aS(e,t){let n=e.watermark;return e.isFullRescanOwed||!n||n.isDisposed?0:Math.min(n.line,t.baseY)}function oS(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 sS(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(Jx(r),r),r=e.masks.at(-1);return oS(e),n}function cS(e,t){let n={normal:nS(),alternate:nS()},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??Gx,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(!wh())return;let t=e.buffer.active,r=n[t.type],i=Yx(t,aS(r,t)),a=sS(r,i);for(let e of tS(t,i)){let n=qx(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())rS(e);r.watermark?.dispose(),r.watermark=e.registerMarker(-t.cursorY)??null,r.isFullRescanOwed=!1}function u(){iS(n.normal),iS(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=>{iS(n.alternate),s(`normal`),e.type===`alternate`&&l()})],p=Eh(d);t.addEventListener(`abort`,()=>{p();for(let e of f)e.dispose();u(),Kx.delete(e)},{once:!0}),Kx.set(e,d)}function lS(e){Kx.get(e)?.()}function uS({hasTerminal:e,isSocketOpen:t,isInputHeld:n}){return e?n||!t?`connecting`:`live`:`none`}async function dS(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:(mf(await pS(r)),!1)}catch{return mf(`Upload failed`),!1}}async function fS(e,t){for(let n of t)await dS(e,n)}async function pS(e){try{let t=await e.json();if(t&&typeof t.error==`string`)return`Upload failed: ${t.error}`}catch{}return`Upload failed`}var mS=1.2,hS=.005;function gS(e,t){let n=Math.abs(t);return n<10?!1:n>Math.abs(e)*mS}function _S(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 vS(e,t,n){let r=e.length>=4?e.slice(1):e.slice();return r.push({positionPx:t,timestampMs:n}),r}function yS(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 bS({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:n,pendingPx:r=0}){return!e||!(n>0)?null:{velocityPxPerMs:e,lastMs:t,cellHeightPx:n,pendingPx:r}}function xS(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)-hS*n;if(!(r>0))return{scrollLines:0,state:null};let i=e.velocityPxPerMs<0?-1:1,a=i*r*n,{scrollLines:o,remainderPx:s}=_S(e.pendingPx+a,e.cellHeightPx);return{scrollLines:o,state:{velocityPxPerMs:i*r,lastMs:t,cellHeightPx:e.cellHeightPx,pendingPx:s}}}function SS(e,t){return e===`alternate`||!!t&&t!==`none`}function CS(e,t){return!(e>0)||!(t>0)?0:e/t}var wS=1;function TS(e){return typeof e._core?._viewport?.handleTouchScroll==`function`}function ES(e,t){for(let n of e)if(n.identifier===t)return n;return null}function DS(e,t){if(TS(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=()=>SS(t.buffer?.active?.type,t.modes?.mouseTrackingMode),m=()=>{let e=t.element?.querySelector(`.xterm-screen`);return CS(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:wS,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}=xS(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=bS({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=ES(e.touches,r);if(!u)return;if(!s){if(!gS(u.clientX-i,u.clientY-a))return;s=!0,o=u.clientY,c=0,l=vS([],u.clientY,e.timeStamp)}e.cancelable&&e.preventDefault(),c+=u.clientY-o,o=u.clientY,l=vS(l,u.clientY,e.timeStamp);let d=p(),{scrollLines:f,remainderPx:h}=_S(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=vS(l,o,e.timeStamp);let t=yS(l),n=c;h(),t!==0&&v(t,performance.now(),n)},{passive:!0}),e.addEventListener(`touchcancel`,()=>{f(),h()},{passive:!0})}function OS(e){return e.needsReload?!0:e.wasAttachedWithoutLayout&&e.hasLayoutNow}function kS(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 AS=window.matchMedia?.(`(pointer: coarse)`).matches?4:12,jS=new Map;function MS(e){return e.clientWidth>0&&e.clientHeight>0}function NS(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 PS(e){jS.delete(e),e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,NS(e)}function Tee(e){let t=[e],n=Or.snapshot().borrowedCardId,r=n?N.get(n):void 0;r&&t.push(r);for(let e of kS([...jS.keys()],AS,t))PS(e),e.needsWebGLReload=!0}function FS(e){e?.term&&OS({needsReload:e.needsWebGLReload,wasAttachedWithoutLayout:e.webglAttachedWithoutLayout,hasLayoutNow:MS(e.termWrap)})&&LS(e,{isForced:!0})}function IS(){for(let e of jS.keys()){let t=e.term;if(e.webglAddon&&t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{PS(e),e.needsWebGLReload=!0}}}function LS(e,t={}){try{if(e.webglAddon&&!e.needsWebGLReload&&!t.isForced){jS.delete(e),jS.set(e,!0);return}e.webglAddon&&(NS(e),jS.delete(e)),Tee(e);let n=new b;n.onContextLoss(()=>{n.dispose(),e.webglAddon=null,jS.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=!MS(e.termWrap),jS.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,jS.delete(e)}}function Eee(e){let t=Hs(e,lm,{isTerminalFocused:!0},fm());return t?Us(t,document.body.dataset.activeView):!1}var Dee=1024,RS=250,zS=`(max-width: 768px)`,BS=12,VS=14,HS=5e4,US=!1;function WS(e){US=e}var GS=!1;window.addEventListener(`blur`,()=>{GS=!0}),window.addEventListener(`focus`,()=>{GS=!1});function KS(e){let t=document.activeElement;return Xb({isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),hasFocusInsideCard:t instanceof Node&&e.contains(t),hasWindowBlurredSinceFocus:GS,isPhoneLayout:Xy()})}function qS(e,t){return Zb({isBorrowedCard:Or.snapshot().borrowedCardId===t,isTerminalFaceShown:e.face===`terminal`})}var JS=new WeakMap,YS=new WeakMap,XS=new WeakSet,ZS=new WeakSet,QS=new WeakMap,$S=5e3,eC=15e3,tC=`Keys you type now are held and sent once the terminal reconnects.`,nC=`The terminal is still reconnecting and its key buffer is full, so new keys are dropped.`,rC=`The agent copied text. The browser needs a click before it can reach your clipboard.`,iC=`The clipboard is unavailable in this browser.`;function aC(e,t,n,r){let i=QS.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(()=>oC(e,t),n===`ok`?$S:eC)))}function oC(e,t){let n=QS.get(e);n&&n.shownKind===t&&(n.clearTimerId!==null&&clearTimeout(n.clearTimerId),n.clearTimerId=null,n.shownKind=null,n.status.clear())}function sC(e){let t=e.buffer.active;return t.viewportY<t.baseY}function cC(e,t,{hasNewOutput:n=!1}={}){let r=QS.get(e)?.jumpToLatestButton;if(!r)return;let i=sC(t);r.hidden=!i,i?n&&(r.dataset.hasNewOutput=`true`):delete r.dataset.hasNewOutput}function lC(e,t){if(JS.has(e)||!sC(t))return;let n=t.buffer.active,r=n.length-n.viewportY;XS.has(e)?JS.set(e,r):YS.set(e,r)}function uC(e,t,n){let r=e.term;r&&Qb({viewportTopLine:n,scrollbackLineCount:r.buffer.active.baseY,isDeepHistoryLoadedOrPending:XS.has(e)})&&(XS.add(e),ZS.add(e),JS.set(e,r.buffer.active.length-n),PC(t))}function dC(e,t){e._hasMissedOutputWhileHidden&&(qS(e,t)||(e._hasMissedOutputWhileHidden=!1,PC(t)))}function fC(e){if(e?.readyState!==WebSocket.OPEN)return;let t=document.visibilityState===`visible`?`resume-output`:`pause-output`;e.send(JSON.stringify({type:t}))}document.addEventListener(`visibilitychange`,()=>{for(let e of N.values())fC(e.dataWs)});function pC(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 mC(e,t,n){let r=(n instanceof Error?n.message:``)||String(n);console.error(`[clipboard:${t}]`,n),aC(e,`clipboard`,`error`,`Clipboard ${t} failed: ${r}`)}function hC(e,t,n,r){let i=vr(t);i?i.then(()=>{r&&aC(e,`clipboard`,`ok`,r)}).catch(t=>mC(e,n,t)):aC(e,`clipboard`,`error`,iC)}function gC(e,t){let n=QS.get(e);n&&(n.pendingClipboardText=t,n.clipboardPrompt.hidden=!1)}function _C(e){let t=QS.get(e),n=t?.pendingClipboardText;t&&n!=null&&(t.pendingClipboardText=null,t.clipboardPrompt.hidden=!0,hC(e,n,`osc52 write`,`Copied to the clipboard.`))}function vC(e,t,n){let r=lf(`terminal-notice`),i=A(`div`,`terminal-clipboard-prompt`);i.hidden=!0;let a=A(`button`,`btn-dialog btn-dialog-confirm`,`Copy to clipboard`);a.type=`button`,a.addEventListener(`click`,()=>_C(t)),i.append(A(`span`,`terminal-clipboard-prompt-text`,rC),a);let o=A(`div`,`terminal-notices`);o.append(i,r.element);let s=A(`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=A(`div`,`terminal-drop-zone`);c.setAttribute(`aria-hidden`,`true`),c.append(A(`span`,`terminal-drop-zone-label`,`Drop to upload to this session`)),e.append(o,s,c),QS.set(t,{status:r,shownKind:null,clearTimerId:null,clipboardPrompt:i,pendingClipboardText:null,jumpToLatestButton:s})}function yC(e,t){return N.get(e)===t&&!t.dataWs}function bC(e){return e.querySelector(`:scope > .terminal-connecting`)}function xC(e){if(bC(e))return;let t=A(`div`,`terminal-connecting`);t.append(A(`span`,`terminal-connecting-label`,`Connecting`)),e.append(t)}function SC(e){let t=bC(e);if(!t)return;t.querySelector(`:scope > .terminal-connecting-animal`)?.remove();let n=gl();n&&t.prepend(hl(n,`terminal-connecting-animal`))}var CC=new Set;function wC(e){return CC.add(e),()=>CC.delete(e)}function TC(){let e=0;for(let t of N.values())t.card.dataset.link===`connecting`&&e++;return e}function EC(e){let t=uS({hasTerminal:e.term!==null,isSocketOpen:e.dataWs?.readyState===WebSocket.OPEN,isInputHeld:AC}),n=t===`connecting`&&!AC&&ZS.has(e)?`live`:t;if(n===`none`){delete e.card.dataset.link,DC();return}let r=n===`connecting`&&e.card.dataset.link!==`connecting`;e.card.dataset.link=n,r&&SC(e.termWrap),DC()}function DC(){for(let e of CC)e()}function OC(e,t,n,r){lC(t,n),mb.unregister(e),t.dataWs=null,EC(t),t._resetGridClaim?.(),setTimeout(()=>{yC(e,t)&&Cl().catch(()=>{}).then(()=>{yC(e,t)&&kC(e,t,n)})},r)}function kC(e,t,n){let r=JS.get(t);JS.delete(t);let i=YS.get(t);YS.delete(t);let a=r!==void 0,o=r??i,s=!1,c=yl(location,Tl($b(e,a))),l=new WebSocket(c);l.binaryType=`arraybuffer`,t.dataWs=l,EC(t);let u=!1,d={hasSeenSize:!1,lastSeq:0};mb.register(e,(e,t)=>n.write(e,t)),l.addEventListener(`message`,r=>{if(t.dataWs!==l)return;let i=ax(r.data,d);if(i.kind===`bytes`){ip(t);let r=s;if(s=!1,qS(t,e)){t._hasMissedOutputWhileHidden=!0;return}if(mb.enqueue(e,i.data),!r)return;let a=o??0;mb.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||XS.delete(t),d.hasSeenSize=!0,d.lastSeq=i.seq,n.reset(),lS(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};mb.enqueueAction(e,()=>{t.ptySize=c,t._syncGrid?.()})}),l.addEventListener(`close`,()=>{if(t.dataWs!==l)return;ZS.delete(t),u||wl();let r=_l(t._dataWsRetryAttempt||0);t._dataWsRetryAttempt=(t._dataWsRetryAttempt||0)+1,OC(e,t,n,r)}),l.addEventListener(`open`,()=>{u=!0,t._dataWsRetryAttempt=0,ZS.delete(t),EC(t),document.visibilityState!==`visible`&&fC(l),t._syncGrid?.({isActivationEdge:!0}),t._retryOwedGridClaim?.(),t._inputQueue?.length&&setTimeout(()=>{t.dataWs===l&&jC(t)},50)})}var AC=!1;function jC(e){let t=e._inputQueue,n=e.dataWs;if(!AC&&t?.length&&n?.readyState===WebSocket.OPEN){for(let e of t)n.send(JSON.stringify({type:`input`,data:e}));t.length=0,oC(e,`keys`)}}function MC(){AC=!0;for(let e of N.values())EC(e)}function NC(){AC=!1;for(let e of N.values())EC(e),jC(e)}function PC(e){let t=P(e);if(typeof e!=`string`||!t?.term)return;let n=t.dataWs;t._dataWsRetryAttempt=0,OC(e,t,t.term,0),n?.close()}function FC(e,t){let n=e.dataWs;e.dataWs=null,mb.unregister(t),n&&n.readyState<=WebSocket.OPEN&&n.close()}function IC(e,t,n){if(!e||t==null||t===``)return!1;if(n?.fromSoftKeyboard||e._resetSoftKeyboardBuffer?.(),!AC&&!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>=Dee?(aC(e,`keys`,`error`,nC),!1):(e._inputQueue.push(t),r&&aC(e,`keys`,`busy`,tC),!0)}function LC(e,t){let n=window.matchMedia?.(zS).matches?BS:VS,r=new v({cursorBlink:US,fontSize:n,fontFamily:ob(),theme:Rb(),scrollback:HS,allowProposedApi:!0,linkHandler:Sx()}),i=new y;r.loadAddon(i),xC(e),r.open(e),vC(e,t,r),wx(r),cS(r,t.abortController.signal),t.term=r,t.fitAddon=i,PS(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||!KS(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=Yb({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)},RS)}function m(){l&&o===null&&f(l)}function h({isActivationEdge:e=!1}={}){let n=t.term;if(!n)return;let r=nx({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=ex({authoritative:t.ptySize??null,isActiveViewer:s,isDocumentEngaged:KS(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=tx({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&&FS(t),h({isActivationEdge:!0}))},t.card.addEventListener(`focusin`,()=>{GS=!1,g()},{signal:t.abortController.signal}),LS(t);let b=null;r.onScroll(()=>{b===null&&(b=requestAnimationFrame(()=>{b=null,t.term&&(t.term.refresh(0,t.term.rows-1),cC(t,t.term))}))}),r.onWriteParsed(()=>cC(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=pC(r)}catch(e){return mC(t,`osc52 decode`,e),!0}return document.hasFocus()&&navigator.userActivation?.isActive!==!1?(hC(t,i,`osc52 write`),!0):(gC(t,i),!0)}),r.attachCustomKeyEventHandler(e=>{if(e.type!==`keydown`)return!0;if(Eee(e))return!1;let n=e.ctrlKey||e.metaKey;if(n&&e.key===`c`&&r.hasSelection()){let e=r.getSelection();return r.clearSelection(),hC(t,e,`copy`),!1}return n&&e.key===`v`?!1:n&&e.key===`Backspace`?(IC(t,`\x1B`),!1):!0}),RC(e,r,t),DS(e,r)}function RC(e,t,n){let r=t.textarea;if(!r)return;let i=``,a=()=>{i=r.value},o=()=>{i=``,Xy()&&r.value!==``&&(r.value=``)};n._resetSoftKeyboardBuffer=o;let s=()=>{let e=mx(i,r.value);return i=r.value,e!==``&&(IC(n,e,{fromSoftKeyboard:!0}),t.scrollToBottom(),!0)},c=(t,n)=>{e.addEventListener(t,e=>{Xy()?n(e):a()},!0)};c(`keydown`,e=>{px(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(!fx(e.inputType)){queueMicrotask(o);return}if(e.stopPropagation(),s())return;let r=ux(e.inputType);r!==``&&(IC(n,r,{fromSoftKeyboard:!0}),t.scrollToBottom())})}function zC(e,t){e._inputQueue=[];let n=e.term;n&&(n.onData(n=>{IC(e,n),e.unseenOutcome&&G({type:`dismiss`,id:t,expectedState:e.currentState})}),n.onScroll(n=>{uC(e,t,n)}),VC(e.termWrap,t,e.abortController.signal),kC(t,e,n))}function BC(e){return!!e&&Array.from(e.types).includes(`Files`)}function VC(e,t,n){e.addEventListener(`paste`,e=>{let n=e.clipboardData;n&&n.files.length!==0&&n.getData(`text/plain`)===``&&(e.preventDefault(),e.stopPropagation(),fS(t,Array.from(n.files)))},{capture:!0,signal:n}),e.addEventListener(`dragover`,t=>{BC(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,BC(n.dataTransfer)&&(n.preventDefault(),n.stopPropagation(),fS(t,Array.from(n.dataTransfer.files)))},{capture:!0,signal:n})}function HC(e,t){e.term||(LC(e.termWrap,e),zC(e,t))}function UC(e){e?._syncGridOnEngagementEdge?.()}function WC(e,t){if(!e)return;HC(e,t),dC(e,t),FS(e);let n=e.term;n&&(n.refresh(0,n.rows-1),UC(e))}function GC(e,t,n){e&&(n&&HC(e,t),e._setActiveViewer?.(n))}var KC=`conversation:`,qC=1e4,JC=48,YC=`, `,XC=`+`,ZC=`■`,QC=`↑`,$C=1e3,ew={command:`Run command?`,fileChange:`Apply file changes?`,permissions:`Grant permissions?`},tw=1;function nw(e){e?.previewUrl&&URL.revokeObjectURL(e.previewUrl)}function rw(e,t,n){let r=A(`button`,`conversation-icon-button ${e}`,t);return r.type=`button`,r.title=n,r.setAttribute(`aria-label`,n),r}function iw(e){return e.conversationApproval!==null||Ty(e.currentState,e.pendingPromptKind)}function aw(e,t,n,r,i=0){let a=n[i];a?setTimeout(()=>{P(e)===t?i>0&&iw(t)?r(`stopped-by-prompt`):IC(t,a.data)?aw(e,t,n,r,i+1):r(`unreachable`):r(`unreachable`)},a.delayBeforeMs):r(`sent`)}function ow({signal:e,sendControl:t,showTerminal:n}){let r=A(`div`,`conversation-face`);r.hidden=!0;let i=A(`div`,`conversation-log`);i.setAttribute(`role`,`log`),i.setAttribute(`aria-live`,`polite`);let a=A(`p`,`conversation-empty`,`No conversation yet. Messages appear here as the agent works.`),o=A(`div`,`conversation-approval`);o.hidden=!0;let s=A(`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=A(`p`,`conversation-bridge-note`,`The session trace is unavailable, so there is nothing to show here. Use the terminal.`);c.hidden=!0;let l=A(`details`,`conversation-working`),u=A(`summary`,`conversation-working-summary`);u.setAttribute(`role`,`status`);let d=A(`ul`,`conversation-agent-list`);l.append(u,d),l.hidden=!0;let f=A(`form`,`conversation-composer`),p=A(`p`,`conversation-status`);p.setAttribute(`role`,`status`);let m=A(`div`,`conversation-attachment`);m.hidden=!0;let h=A(`div`,`conversation-composer-row`),g=rw(`conversation-attach`,XC,`Attach a photo or file`),_=A(`input`,`conversation-file-picker`);_.type=`file`,_.hidden=!0;let v=A(`textarea`,`conversation-input`);v.dataset.dashboardShortcuts=`allowed`,v.rows=1,v.placeholder=`Message the agent`,v.setAttribute(`aria-label`,`Message the agent`);let y=rw(`conversation-stop`,ZC,`Stop the current turn (Esc)`),b=rw(`conversation-send`,QC,`Send`);b.type=`submit`,h.append(g,v,y,b),f.append(p,m,h,_),r.append(i,l,c,s,o,f);let x=null,S=[],ee=0,te=!1,ne=null,re=!1,C=null,ie=!1,ae=[],oe=[],se=null,ce=!1,w=new Set;function le(){return x?P(x)??null:null}function T(e){p.textContent=e}function ue(){v.style.height=`auto`,v.style.height=`${v.scrollHeight+v.offsetHeight-v.clientHeight}px`}function E(){ne&&clearTimeout(ne.timeoutHandle),ne=null}function de(){if(!x||r.hidden||!c.hidden)return;if(ne){re=!0;return}let e=`${KC}${tw++}`,n=te?ee:null;t(n===null?{type:`session-trace`,id:x,requestId:e,endingAt:`tail`}:{type:`session-trace`,id:x,requestId:e,after:n})?(re=!1,ne={requestId:e,after:n,timeoutHandle:setTimeout(()=>{ne=null,de()},qC)}):T(`Conversation unavailable while disconnected.`)}function fe(){return i.scrollHeight-i.scrollTop-i.clientHeight<=JC}function pe(e){let t=A(`a`,`conversation-image-link`);t.href=e,t.target=`_blank`,t.rel=`noopener`;let n=A(`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 me(e){let t=A(`article`,`conversation-message conversation-user is-pending`);return e.text&&t.append(A(`p`,`conversation-text`,e.text)),e.attachment?.previewUrl&&t.append(pe(e.attachment.previewUrl)),e.attachment&&!e.attachment.previewUrl&&t.append(A(`p`,`conversation-attachment-name`,e.attachment.name)),t}function he(e){let t=A(`article`,`conversation-message conversation-${e.kind}`);return e.kind===`assistant`?(t.append(hh(uh(e.text))),t):(t.append(A(`p`,`conversation-text`,e.text)),e.kind===`user`&&t.append(...e.imageUrls.map(pe)),t)}function ge(e,t){e.replaceChildren(...t.map(e=>{let t=A(`li`,`conversation-agent is-${e.state}`);return t.append(A(`span`,`conversation-agent-name`,e.description),A(`span`,`conversation-agent-state`,e.state)),t}))}function _e(e){if(e.agentRuns.length===0)return A(`p`,`conversation-work`,zy(e));let t=A(`details`,`conversation-work`);t.open=w.has(e.key),t.addEventListener(`toggle`,()=>{t.open?w.add(e.key):w.delete(e.key)});let n=A(`ul`,`conversation-agent-list`);return ge(n,e.agentRuns),t.append(A(`summary`,``,zy(e)),n),t}function ve(){return le()?.currentState===k.RUNNING}function ye(){let e=le(),t=Ny(oe),n=ve()?Py(oe)?.agentRuns??[]:[],r=[...new Set([...n,...t])];if(l.hidden=!e||!ve()&&t.length===0,l.hidden||!e)return;let i=ve()?Math.max(0,Date.now()-e.stateSince):null;u.textContent=By(i,t.length),l.classList.toggle(`has-agents`,r.length>0),ge(d,r)}function be(){let e=!r.hidden&&ve();e&&!se&&(se=setInterval(ye,$C)),!e&&se&&(clearInterval(se),se=null),ye()}function xe(){i.scrollTop=i.scrollHeight}function Se(){let e=ce||fe();oe=My(S);let t=Date.now(),n=ae.filter(e=>Iy(e,oe,t));for(let e of n)nw(e.attachment);ae=ae.filter(e=>!n.includes(e));let r=[...(ve()&&Py(oe)?oe.slice(0,-1):oe).map(e=>e.kind===`work`?_e(e):he(e)),...ae.map(me)];i.replaceChildren(...r.length>0?r:[a]),ye(),e&&(xe(),requestAnimationFrame(xe),te&&(ce=!1))}function Ce(){if(m.replaceChildren(),m.hidden=!C,C){if(C.previewUrl){let e=A(`img`,`conversation-attachment-thumbnail`);e.src=C.previewUrl,e.alt=``,m.append(e)}m.append(A(`span`,`conversation-attachment-name`,C.name))}}function we(e){C!==e&&nw(C),C=e,Ce()}function Te(e,t=()=>{}){let n=le();if(!n||!x||!e){T(`Unable to reach this session.`);return}T(``);let r={sent:``,unreachable:`Unable to reach this session.`,"stopped-by-prompt":`Not sent: a prompt appeared, so the message was typed but not submitted. Check the terminal.`};aw(x,n,e,e=>{T(r[e]),t(e)})}function Ee(e,n,r){x&&T(t({type:`conversation-approval`,id:x,requestId:e.requestId,decision:n,...r?{answers:r}:{}})?``:`Unable to send the answer while disconnected.`)}function De(e,t){let n=A(`button`,`conversation-approval-action`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function Oe(e){return e.kind===`tool`?`Allow ${e.toolName??`this tool`}?`:ew[e.kind]??`Approve this request?`}function ke(e){o.append(A(`p`,`conversation-approval-note`,`This request cannot be shown in full here. Read and answer it in the terminal.`));let t=A(`div`,`conversation-approval-actions`);t.append(De(`Open terminal`,()=>n()),De(`Decline`,()=>Ee(e,`decline`))),o.append(t)}function Ae(e){if(o.append(A(`p`,`conversation-approval-title`,Oe(e)),A(`pre`,`conversation-approval-summary`,e.summary)),e.isSummaryTruncated){ke(e);return}let t=A(`div`,`conversation-approval-actions`);t.append(De(`Approve`,()=>Ee(e,`accept`))),e.kind!==`tool`&&t.append(De(`Approve for session`,()=>Ee(e,`acceptForSession`))),e.alwaysAllowSummary&&(o.append(A(`p`,`conversation-approval-note`,`Always allow adds, for this session only: ${e.alwaysAllowSummary}`)),t.append(De(`Always allow`,()=>Ee(e,`acceptForSession`)))),t.append(De(`Decline`,()=>Ee(e,`decline`))),o.append(t)}function je(e){let t=A(`p`,`conversation-approval-title`,e.question);return e.header&&t.prepend(A(`span`,`conversation-question-header`,e.header)),t}function Me(e,t){o.append(je(t));let n=A(`div`,`conversation-question-options`);for(let r of t.options){let i=De(r.label,()=>Ee(e,`accept`,{[t.question]:r.label}));r.description&&(i.title=r.description),n.append(i)}let r=A(`div`,`conversation-approval-actions`);r.append(De(`Decline`,()=>Ee(e,`decline`))),o.append(n,r)}function Ne(e,t){let n=A(`form`,`conversation-question-form`);t.forEach((e,t)=>{let r=A(`fieldset`,`conversation-question`),i=A(`legend`,`conversation-question-text`,e.question);e.header&&i.prepend(A(`span`,`conversation-question-header`,e.header)),r.append(i);for(let n of e.options){let i=A(`label`,`conversation-question-option`),a=A(`input`);a.type=e.multiSelect?`checkbox`:`radio`,a.name=`question-${t}`,a.value=n.label,i.append(a,A(`span`,``,n.label)),n.description&&(i.title=n.description),r.append(i)}n.append(r)});let r=A(`div`,`conversation-approval-actions`),i=A(`button`,`conversation-approval-action`,`Send answers`);i.type=`submit`,r.append(i,De(`Decline`,()=>Ee(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(YC))}),Object.keys(i).length===t.length?Ee(e,`accept`,i):T(`Answer every question first.`)}),o.append(n)}function Pe(e){let t=e.questions??[];if(e.isSummaryTruncated||t.length===0){o.append(A(`p`,`conversation-approval-title`,`Claude Code has a question`),A(`pre`,`conversation-approval-summary`,e.summary)),ke(e);return}let[n]=t;t.length===1&&!n.multiSelect?Me(e,n):Ne(e,t)}function Fe(e){e.kind===`question`?Pe(e):Ae(e)}function Ie(){o.append(A(`p`,`conversation-approval-title`,`The agent is waiting on a prompt`)),o.append(A(`p`,`conversation-approval-note`,`Read and answer it in the terminal.`));let e=A(`div`,`conversation-approval-actions`);e.append(De(`Open terminal`,()=>n())),o.append(e)}function Le(){let e=le();o.replaceChildren();let t=e?.conversationApproval??null,n=e?Ty(e.currentState,e.pendingPromptKind):!1,r=e?.agent===`codex`&&!e.hasConversationBridge;s.hidden=!r,o.hidden=!t&&!n,b.disabled=!o.hidden||r,Re(),e&&(t?Fe(t):n&&Ie())}function Re(){g.disabled=b.disabled||ie}function ze(e){let t=Sy(e,v.value);return t||!C?t:Cy(e)}function Be(){let e=le();y.disabled=e?.currentState!==k.RUNNING,be()}f.addEventListener(`submit`,e=>{if(e.preventDefault(),b.disabled)return;let t=ze(le()?.agent);if(!t)return;let n={text:v.value.trim(),attachment:C,sentAt:Date.now(),userKeysAtSend:Fy(oe)};v.value=``,ue(),C=null,Ce(),ae.push(n),ce=!0,Se(),Te(t,e=>{e!==`sent`&&(nw(n.attachment),ae=ae.filter(e=>e!==n),Se())})},{signal:e}),v.addEventListener(`input`,ue,{signal:e});let Ve=0,He=new ResizeObserver(()=>{let e=i.clientHeight,t=Ve===0;Ve=e,t&&e!==0&&(ce=!0,xe(),te&&(ce=!1))});He.observe(i),e?.addEventListener(`abort`,()=>{se&&clearInterval(se),He.disconnect()},{once:!0}),v.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||Xy()||(e.preventDefault(),f.requestSubmit())},{signal:e}),y.addEventListener(`click`,()=>Te(wy(le()?.agent)),{signal:e}),g.addEventListener(`click`,()=>_.click(),{signal:e}),_.addEventListener(`change`,()=>{let e=_.files?.[0];if(_.value=``,!e||!x)return;if(b.disabled){T(`Not attached: the agent is not ready for a message. Check the terminal.`);return}let t=x;ie=!0,Re(),dS(t,e).then(n=>{if(ie=!1,Re(),!n||x!==t)return;let r=e.type.startsWith(`image/`)?URL.createObjectURL(e):null;we({name:e.name,previewUrl:r})})},{signal:e});function Ue(e){if(x!==e){x=e,S=[],ee=0,te=!1,E(),we(null),w.clear();for(let e of ae)nw(e.attachment);ae=[],T(``)}r.hidden=!1,c.hidden=!0,ce=!0,Se(),Ge(),de()}function We(){r.hidden=!0,E(),be()}function Ge(){r.hidden||(Le(),Be(),Se())}function Ke(e){if(!ne||e.requestId!==ne.requestId)return!1;let t=ne;if(E(),e.id!==x)return!0;let n=t.after!==null&&e.start===t.after&&!e.reset;return t.after!==null&&!n?(te=!1,S=[],de(),!0):(S=Vy(t.after===null?[...e.records]:[...S,...e.records]),ee=e.next,te=!0,Se(),re&&de(),!0)}function qe(e){return!ne||e.requestId!==ne.requestId?!1:(E(),re=!1,c.hidden=!1,!0)}function Je(e){e!==x||r.hidden||(c.hidden=!0,de())}return{el:r,show:Ue,hide:We,refresh:Ge,applyTraceResponse:Ke,applyTraceError:qe,applyTraceChanged:Je}}function sw(e){if(!e)return 0;let t=0;return e.listenerMismatch&&t++,e.orphanPty&&t++,e.destroyedReachable&&t++,t}function cw(e,t){return e||sw(t)>0}var lw={DORMANT:`DOR`,INITIALIZING:`INI`,STARTING:`STA`,RUNNING:`RUN`,WAITING:`WAI`,IDLE:`IDL`,COMPLETE:`CMP`,DONE:`DON`,FAILED:`FAI`},uw=null,dw=!1,fw=!1,pw=null,mw=null,hw=null,gw=`—`;function _w(e){return e==null?gw:Bl(e,`GB`)}function vw(e){return e==null?gw:Rl(e,{smallestUnit:`s`,dropsZeroRemainder:!1})}function yw(e){return e==null?gw:`${vw(Math.max(0,Math.round((Date.now()-e)/1e3)))} ago`}function bw(){let e=A(`div`,`health-footer`);e.dataset.expanded=`false`,e.hidden=!0;let t=A(`div`,`health-summary`),n=A(`button`,`health-toggle`);n.type=`button`,n.setAttribute(`aria-expanded`,`false`),n.setAttribute(`aria-controls`,`health-detail`);let r=A(`span`,`health-chev`,`▲`);r.setAttribute(`aria-hidden`,`true`),n.append(r,A(`span`,`health-toggle-label`,`Health`));let i=A(`div`,`health-stats`);t.append(n,i);let a=A(`div`,`health-detail`);return a.id=`health-detail`,a.hidden=!0,n.addEventListener(`click`,()=>{fw=!fw,e.dataset.expanded=String(fw),n.setAttribute(`aria-expanded`,String(fw)),a.hidden=!fw,fw&&(G({type:`request-health-snapshot`}),Sw())}),e.append(t,a),pw=e,mw=i,hw=a,e}function xw(){if(!mw||!uw)return;let e=uw,t=sw(e.anomalies);mw.innerHTML=`
|
|
90
|
+
<span class="health-stat" title="V8 heap used"><span class="health-stat-label">Heap</span> ${_w(e.process.heapUsed)}</span>
|
|
91
|
+
<span class="health-stat" title="Resident set size (process memory)"><span class="health-stat-label">RSS</span> ${_w(e.process.rss)}</span>
|
|
92
|
+
<span class="health-stat" title="External buffers (PTY data lives here)"><span class="health-stat-label">Ext</span> ${_w(e.process.external)}</span>
|
|
93
|
+
<span class="health-stat" title="Active resources (handles + requests)"><span class="health-stat-label">Hdl</span> ${e.process.activeResources}</span>
|
|
94
|
+
<span class="health-stat" title="Memory headroom at the last start check, and starts held for memory"><span class="health-stat-label">Mem</span> ${_w(e.memoryGate?.headroomBytes)} / ${e.memoryGate?.heldStartCount??0} held</span>
|
|
95
|
+
<span class="health-stat" title="Sessions: alivePty / total"><span class="health-stat-label">Sess</span> ${e.sessions.alivePty}/${e.sessions.total}</span>
|
|
96
|
+
<span class="health-stat" title="WebSockets: control + data"><span class="health-stat-label">WS</span> ${e.websockets.control}+${e.websockets.data}</span>
|
|
97
|
+
<span class="health-stat" title="Server uptime"><span class="health-stat-label">Up</span> ${vw(e.uptimeSeconds)}</span>
|
|
98
|
+
${t>0?`<span class="health-anomaly" title="${t} anomaly type(s), expand for details">⚠ ${t}</span>`:``}
|
|
99
|
+
`}function Sw(){if(!hw||!uw)return;let e=uw,t=e.process,n=e.websockets,r=e.sessions,i=e.anomalies,a=``;if(sw(i)>0){let e=[];i.listenerMismatch&&e.push(`Listener count mismatch: data WS listener leaked or missing`),i.orphanPty&&e.push(`Orphan PTY: session has live PTY but state is DONE/FAILED/DORMANT`),i.destroyedReachable&&e.push(`Destroyed session still reachable in sessions map`),a=`
|
|
100
|
+
<div class="health-section health-section-warn">
|
|
101
|
+
<div class="health-section-title">⚠ Anomalies</div>
|
|
102
|
+
${e.map(e=>`<div class="health-row">${e}</div>`).join(``)}
|
|
103
|
+
</div>
|
|
104
|
+
`}let o=r.list.map(e=>{let t=[];e.destroyed&&t.push(`destroyed`),e.pendingRestart&&t.push(`pendingRestart`);let n=Object.entries(e.timers).filter(([,e])=>e).map(([e])=>e).join(`,`)||`none`;return`
|
|
105
|
+
<tr>
|
|
106
|
+
<td>${T_(e.name)}</td>
|
|
107
|
+
<td class="health-mono">${lw[e.state]||e.state}</td>
|
|
108
|
+
<td class="health-mono">${e.hasPty?e.ptyPid:gw}</td>
|
|
109
|
+
<td class="health-mono">${_w(e.outputBufferBytes)}</td>
|
|
110
|
+
<td class="health-mono">${e.outputBufferEntries}</td>
|
|
111
|
+
<td class="health-mono">${e.dataListenerCount}</td>
|
|
112
|
+
<td class="health-mono health-dim">${n}</td>
|
|
113
|
+
<td class="health-mono health-dim">${t.join(` `)||``}</td>
|
|
114
|
+
</tr>
|
|
115
|
+
`}).join(``);hw.innerHTML=`
|
|
116
|
+
${a}
|
|
117
|
+
<div class="health-section">
|
|
118
|
+
<div class="health-section-title">Process</div>
|
|
119
|
+
<div class="health-grid">
|
|
120
|
+
<div class="health-row"><span class="health-label">Heap used</span><span class="health-mono">${_w(t.heapUsed)}</span></div>
|
|
121
|
+
<div class="health-row"><span class="health-label">Heap total</span><span class="health-mono">${_w(t.heapTotal)}</span></div>
|
|
122
|
+
<div class="health-row"><span class="health-label">RSS</span><span class="health-mono">${_w(t.rss)}</span></div>
|
|
123
|
+
<div class="health-row"><span class="health-label">External</span><span class="health-mono">${_w(t.external)}</span></div>
|
|
124
|
+
<div class="health-row"><span class="health-label">Array buffers</span><span class="health-mono">${_w(t.arrayBuffers)}</span></div>
|
|
125
|
+
<div class="health-row"><span class="health-label">Active resources</span><span class="health-mono">${t.activeResources}</span></div>
|
|
126
|
+
<div class="health-row"><span class="health-label">Uptime</span><span class="health-mono">${vw(e.uptimeSeconds)}</span></div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<div class="health-section">
|
|
131
|
+
<div class="health-section-title">Memory gate</div>
|
|
132
|
+
<div class="health-grid">
|
|
133
|
+
<div class="health-row"><span class="health-label">Headroom</span><span class="health-mono">${_w(e.memoryGate?.headroomBytes)}</span></div>
|
|
134
|
+
<div class="health-row"><span class="health-label">Read</span><span class="health-mono">${yw(e.memoryGate?.headroomReadAtMs)}</span></div>
|
|
135
|
+
<div class="health-row"><span class="health-label">Starts held</span><span class="health-mono">${e.memoryGate?.heldStartCount??0}</span></div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div class="health-section">
|
|
140
|
+
<div class="health-section-title">WebSockets</div>
|
|
141
|
+
<div class="health-grid">
|
|
142
|
+
<div class="health-row"><span class="health-label">Control clients</span><span class="health-mono">${n.control}</span></div>
|
|
143
|
+
<div class="health-row"><span class="health-label">Data clients</span><span class="health-mono">${n.data}</span></div>
|
|
144
|
+
<div class="health-row"><span class="health-label">Tracked per session</span><span class="health-mono">${n.dataPerSessionTotal}</span></div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<div class="health-section">
|
|
149
|
+
<div class="health-section-title">Sessions (${r.total} total · ${r.alivePty} alive PTY)</div>
|
|
150
|
+
<div class="health-row health-dim">Listeners ${r.totalDataListeners} · Output buffer ${_w(r.totalOutputBufferBytes)}</div>
|
|
151
|
+
<table class="health-table">
|
|
152
|
+
<thead>
|
|
153
|
+
<tr>
|
|
154
|
+
<th>Name</th><th>State</th><th>PID</th><th>Buffer</th><th>Entries</th><th>Listeners</th><th>Timers</th><th>Flags</th>
|
|
155
|
+
</tr>
|
|
156
|
+
</thead>
|
|
157
|
+
<tbody>${o||`<tr><td colspan="8" class="health-dim">No sessions</td></tr>`}</tbody>
|
|
158
|
+
</table>
|
|
159
|
+
</div>
|
|
160
|
+
`}function Cw(){if(!pw)return;let e=cw(dw,uw?.anomalies),t=pw.hidden;pw.hidden=!e,e&&t&&uw&&(xw(),fw&&Sw())}function ww(e){dw=e,Cw()}function Tw(e){if(pw)return pw;let t=bw();return e.appendChild(t),Cw(),t}function Ew(e){uw=e,Cw(),pw&&!pw.hidden&&(xw(),fw&&Sw())}function Dw(e){return e.replace(/\r\n?/g,`
|
|
161
|
+
`).split(`
|
|
162
|
+
`)}function Ow(e){return{kind:`unchanged`,text:e}}function kw(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function Aw(e,t){return e.length<=7?e.map(t):[...e.slice(0,3).map(t),kw(e.length-6),...e.slice(e.length-3).map(t)]}function jw(e){return e}function Mw(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(...Aw(e.slice(n,r),jw)),n=r}return t}function Nw(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function Pw(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 Fw(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(Ow(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 Iw(e,t){let n=Dw(e),r=Dw(t),i=Nw(n,r),a=Pw(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:Mw([...Aw(n.slice(0,i),Ow),...Fw(o,s),...Aw(n.slice(n.length-a),Ow)]),isTooLarge:!1}}var Lw=Object.freeze([{kind:`approve`,label:`Approve`},{kind:`revise`,label:`Send feedback`},{kind:`terminal`,label:`Answer in terminal`}]);function Rw(e){return e===`approve`||e===`approve-accept-edits`}function zw(e){return(e.state===`decided`||e.state===`closed`)&&Rw(e.lastDecision)}function Bw(e,t){let n=e.reviews.find(e=>e.agentId===t);return n!==void 0&&zw(n)}function Vw(e,t){return e.reviews.find(e=>e.agentId===t)??e.reviews[0]??null}function Hw(e){let t=Vw(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 Uw(e,t){return Vw(e,t)?.openRevision?.revision??null}function Ww(e,t,n){if(n===null)return null;let r=Vw(e,t)?.revisions??[],i=r.findIndex(e=>e.revision===n);return i<=0?null:r[i-1].revision}function Gw(e,t){let n=t-e;return Number.isFinite(n)?Ll(n,{rounding:`floor`,wording:`abbreviated`,suffix:` ago`,justNowBelowSeconds:60}):`just now`}function Kw(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 qw(e,t,n){let r=Kw(e,t,n),i=(e.pendingCommentCount??0)>0,a=e.hasUnsavedComment!==!0;return Lw.map(({kind:e,label:t})=>({kind:e,label:t,enabled:r&&(e===`terminal`||a&&(e===`revise`?i:!i))}))}function Jw(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 Yw(e){let t=0;for(let n of e.comments??[])t+=n.comment.trim().length+(n.heading?.length??0);return t}function Xw(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength+bo}function Zw(e){let t=e.plan;if(t!==void 0&&t.length===0)return`the edited plan is empty, so nothing was sent`;if(t!==void 0&&new TextEncoder().encode(t).byteLength>524288)return`the edited plan is over the plan size cap, so nothing was sent`;let n=e.comments??[];return n.length>40?`more than 40 section comments are pending, so nothing was sent`:n.find(e=>e.comment.length>4e3||(e.heading?.length??0)>4e3)?`a section comment is over ${Gr} characters, so nothing was sent`:Yw(e)>1e4?`the feedback composes more than the ${qr} characters the hook reply carries, so nothing was sent`:Xw(e)>xo?`the decision is larger than one control frame carries, so nothing was sent`:null}function Qw(e){return e?`, ${e}`:``}function $w(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=Jw(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 eT(e,t,n){let r=$w(e,t,n);return r?`${r}${Qw(e.problem)}`:e.problem??``}function tT(e){let t=Vw(e.state,e.selectedAgentId),n=Hw(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:Ww(e.state,t?.agentId??null,n),status:eT(e,t,n),actions:qw(e,t,n),modes:[{kind:`read`,label:`Read`,enabled:!0},{kind:`changes`,label:`Changes`,enabled:Ww(e.state,t?.agentId??null,n)!==null&&e.isDraft!==!0},{kind:`edit`,label:`Edit`,enabled:Kw(e,t,n)}]}}function nT(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 rT({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 iT=12,aT=8,oT=``,sT=48,cT=new Map;function lT(e,t){return JSON.stringify([e,t])}function uT(e){return e.id??oT}function dT(e,t){let n=cT.get(e);n||(n=new Map,cT.set(e,n));let r=lT(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>iT;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function fT(e){cT.delete(e)}function pT(e,t,n){return!e||n===null?null:cT.get(e)?.get(lT(t,n))??null}function mT(e){let t=A(`section`,`plan-face`);t.hidden=!0;let n=A(`header`,`plan-head`),r=A(`select`,`plan-heading-picker`);r.setAttribute(`aria-label`,`Plan section`);let i=A(`div`,`plan-view-panel`),a=A(`div`,`plan-sheet-head`),o=A(`button`,`plan-control plan-sheet-close`,`×`);o.type=`button`,o.setAttribute(`aria-label`,`Close`),a.append(A(`span`,null,`View`),o);let s=A(`div`,`plan-view-group plan-author-group`),c=A(`div`,`plan-tabs`);c.setAttribute(`role`,`tablist`),c.setAttribute(`aria-label`,`Plan author`),s.append(A(`span`,`plan-sheet-label`,`Author`),c);let l=A(`div`,`plan-view-group plan-revision-group`),u=A(`div`,`plan-revision-stepper`),d=A(`button`,`plan-control plan-revision-previous`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Previous revision`);let f=A(`button`,`plan-control plan-revision-next`,`›`);f.type=`button`,f.setAttribute(`aria-label`,`Next revision`);let p=A(`span`,`plan-revision-label`),m=A(`span`,`plan-revision-age`);u.append(d,p,f,m);let h=A(`div`,`plan-revision-list`);h.setAttribute(`role`,`radiogroup`),h.setAttribute(`aria-label`,`Revision`),l.append(A(`span`,`plan-sheet-label`,`Revision`),u,h);let g=A(`div`,`plan-view-group plan-mode-group`),_=A(`div`,`plan-modes`);_.setAttribute(`role`,`radiogroup`),_.setAttribute(`aria-label`,`Show`),g.append(A(`span`,`plan-sheet-label`,`Show`),_);let v=A(`div`,`plan-head-spacer`),y=A(`div`,`plan-draft-notice`),b=A(`span`,`plan-draft-dot`);b.setAttribute(`aria-hidden`,`true`);let x=A(`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=A(`button`,`plan-control plan-view-button`,`View`);S.type=`button`,S.setAttribute(`aria-haspopup`,`dialog`),S.setAttribute(`aria-expanded`,`false`);let ee=A(`button`,`plan-control plan-minimize-button`,`Minimize`);ee.type=`button`,ee.addEventListener(`click`,e.showTerminal),n.append(r,i,S,ee);let te=A(`div`,`plan-sheet-backdrop`),ne=A(`div`,`plan-body-layout`),re=A(`nav`,`plan-heading-rail`);re.setAttribute(`aria-label`,`Plan sections`);let C=A(`article`,`plan-reading-column`);ne.append(re,C);let ie=A(`textarea`,`plan-editor`);ie.setAttribute(`aria-label`,`Plan markdown`),ie.spellcheck=!1;let ae=A(`footer`,`plan-action-bar`),oe=A(`span`,`plan-status`);oe.setAttribute(`role`,`status`);let se=A(`div`,`plan-decision-slot`),ce=A(`label`,`plan-accept-edits`),w=A(`input`,`plan-accept-edits-checkbox`);w.type=`checkbox`,ce.append(w,A(`span`,null,`Accept edits`)),se.append(ce,oe),ae.append(se);let le=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let n=A(`button`,`plan-action`,t);n.type=`button`,n.dataset.decision=e,n.addEventListener(`click`,()=>{n.disabled||it(e)}),le.set(e,n),ae.append(n)}t.append(n,ne,ae,te);let T=null,ue={reviews:[]},E=null,de=null,fe=!0,pe=``,me=``,he=``,ge=``,_e=!1,ve=null,ye=!1,be=null,xe=!1,Se=!1,Ce=null,we=[],Te=null,Ee=null,De=new Map,Oe=new Map,ke=new Map,Ae=[],je=!1,Me=null,Ne=!1;function Pe(e,t=!0){Ne=e,i.replaceChildren(...e?[a,g,l,s,y,v]:[a,s,l,g,v,y]),c.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of c.querySelectorAll(`button`)){let n=t.getAttribute(`aria-selected`)===`true`||t.getAttribute(`aria-checked`)===`true`;t.setAttribute(`role`,e?`radio`:`tab`),t.removeAttribute(e?`aria-selected`:`aria-checked`),t.setAttribute(e?`aria-checked`:`aria-selected`,String(n))}i.dataset.open=String(e),te.dataset.open=String(e),S.setAttribute(`aria-expanded`,String(e)),ne.inert=e,ae.inert=e,r.inert=e,S.inert=e,ee.inert=e,e?(i.setAttribute(`role`,`dialog`),i.setAttribute(`aria-label`,`Plan view`),i.setAttribute(`aria-modal`,`true`),o.focus()):(i.removeAttribute(`role`),i.removeAttribute(`aria-modal`),t&&S.focus())}function Fe(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=Ne;r[i].click(),!(a&&e!==_)&&(e===_||!Ne)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Ie=Or.subscribe((e,t)=>{t.includes(`layout`)&&Ne&&Pe(!1,!1)});e.signal?.addEventListener(`abort`,Ie,{once:!0}),Fe(_),Fe(c),Fe(h),S.addEventListener(`click`,()=>Pe(!Ne)),o.addEventListener(`click`,()=>Pe(!1)),te.addEventListener(`click`,()=>Pe(!1)),i.addEventListener(`keydown`,e=>{if(!Ne)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Pe(!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 Le(e){C.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}r.addEventListener(`change`,()=>Le(r.value));function Re(){je=!1;let e=Ae.map(e=>C.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=C.getBoundingClientRect().top-C.scrollTop,n=rT({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:C.scrollTop,isScrolledToEnd:C.scrollTop>0&&C.scrollTop+C.clientHeight>=C.scrollHeight-2,readingLineOffset:sT}),i=n===null?null:e[n]?.id??null;for(let e of Ae)e.dataset.headingId===i?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);i!==null&&(r.value=i)}function ze(){je||t.hidden||Ae.length===0||(je=!0,requestAnimationFrame(Re))}C.addEventListener(`scroll`,ze,{passive:!0});function Be(){Me=null,ye=!1,xe=!1,Se=!1,Ce=null}function Ve(t){Te=t,e.reportProblem(t),Dt()}function He(e){de=e,Te=null,Be(),Pe(!1,Ne),Dt()}function Ue(e){let t=ue.reviews.find(e=>e.agentId===E)?.revisions??[],n=t[t.findIndex(e=>e.revision===de)+e];n&&He(n.revision)}d.addEventListener(`click`,()=>Ue(-1)),f.addEventListener(`click`,()=>Ue(1));function We(e,t){return`${T??``}:${e??`main`}:${t??`latest`}`}function Ge(){return We(E,de)}function Ke(e,t,n){return`${e??``}:${lT(t,n??0)}`}function qe(){return Ke(T,E,de)}function Je(){return Oe.get(qe())??null}function Ye(){return Je()?.size??0}function Xe(){if(Me===null)return!1;let e=Oe.get(Me.target.bucketKey)?.get(Me.target.sectionSlot)??``;return Me.field.value.trim()!==e}function Ze(e){let t=Oe.get(e);if(!t)return[];let n=[];for(let e of we){let r=t.get(uT(e));r&&n.push({heading:e.heading,comment:r})}return n}function Qe(e,t){let n=t.trim(),r=Oe.get(e.bucketKey)??new Map;Oe.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&Oe.delete(e.bucketKey),Dt()}function $e(e){if(Se||_e)return;let t={bucketKey:qe(),sectionSlot:uT(e)},n=A(`div`,`plan-comment-composer`),r=A(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),i=A(`textarea`,`plan-comment-input`);i.maxLength=Gr,i.value=Oe.get(t.bucketKey)?.get(t.sectionSlot)??``,r.append(i);let a=A(`div`,`plan-comment-actions`),o=A(`button`,`plan-control plan-comment-cancel`,`Cancel`);o.type=`button`;let s=A(`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};Me=c,i.addEventListener(`input`,Et),o.addEventListener(`click`,()=>{Me===c&&(Me=null,Dt())}),s.addEventListener(`click`,()=>{Me===c&&(Me=null),Qe(t,i.value)}),Dt(),i.focus()}function et(e){let t={bucketKey:qe(),sectionSlot:uT(e)};if(Me?.target.bucketKey===t.bucketKey&&Me.target.sectionSlot===t.sectionSlot)return Me.element;let n=Je()?.get(t.sectionSlot);if(!n)return null;let r=A(`div`,`plan-comment-card`),i=A(`div`,`plan-comment-head`),a=A(`button`,`plan-control plan-comment-edit`,`Edit`);a.type=`button`,a.addEventListener(`click`,()=>$e(e));let o=A(`button`,`plan-control plan-comment-remove`,`Remove`);return o.type=`button`,o.disabled=_e,a.disabled=_e,o.addEventListener(`click`,()=>Qe(t,``)),i.append(A(`span`,`plan-comment-label`,`Your comment`),a,o),r.append(i,A(`p`,`plan-comment-text`,n)),r}function tt(t,n,r={}){if(!T||n.revision===null||_e)return!1;let i=Zw(r);if(i!==null)return Ve(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return e.sendDecision(T,a)?(Te=null,_e=!0,ve=Rw(t)?n:null,Dt(),!0):(Ve(W),!1)}function nt(e){if(!ye)return{};let t=ie.value;return t===pT(T,e.agentId,e.revision)?{}:{plan:t}}function rt(e){let t=Ke(T,e.agentId,e.revision),n=Ze(t);n.length!==0&&tt(`revise`,e,{comments:n})&&e.revision!==null&&(Ee={bucketKey:t,agentId:e.agentId,revision:e.revision},Dt())}function it(e){let t={agentId:E,revision:de};e===`revise`?rt(t):tt(e===`approve`&&!ce.hidden&&w.checked?`approve-accept-edits`:e,t,nt(t))}function at(e){Me=null,ye=e===`edit`,xe=e===`changes`,ye&&be!==qe()&&(ie.value=pT(T,E,de)??``,be=qe()),Te=null,Dt()}function ot(e){return`${e.kind}:${We(e.agentId,e.revision)}`}function st(e){for(ke.set(ot(e),e);ke.size>aT;){let e=ke.keys().next().value;if(typeof e!=`string`)break;ke.delete(e)}}function ct(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 lt(e){for(let[t,n]of ke)if(ct(n,e))return ke.delete(t),n;return null}function ut(){for(let[e,t]of ke)if(t.kind===`draft`)return ke.delete(e),t;return null}function dt(){if(ke.size!==1)return null;let e=ke.entries().next().value;return e?(ke.delete(e[0]),e[1]):null}function ft(){if(!T)return;let t=Ge();pe!==t&&e.requestPlan(T,E,de??void 0)&&(pe=t,st({kind:`selection`,agentId:E,revision:de}))}function D(){t.hidden||ft()}function pt(){return Ww(ue,E,de)}function mt(t){if(!T)return;let n=We(E,t);he!==n&&e.requestPlan(T,E,t)&&(he=n,st({kind:`diff-base`,agentId:E,revision:t}))}function ht(){if(!T)return;let t=`${T}:${E??`main`}`;ge!==t&&e.requestDraft(T,E)&&(ge=t,st({kind:`draft`,agentId:E,revision:null}))}function gt(e,t){return`${e??``}:${t??``}`}function _t(){return ue.reviews.find(e=>e.agentId===E)?.revisions.find(e=>e.revision===de)?.receivedAt??0}function vt(){let e=De.get(gt(T,E));return e!==void 0&&e>_t()}function yt(){Se?(Be(),Dt()):(Me=null,ye=!1,xe=!1,ht(),Dt())}x.addEventListener(`click`,yt);function bt(e){re.replaceChildren(),r.replaceChildren(),Ae=[];for(let t of e){let e=t.id??`plan-introduction`,n=t.heading??`Introduction`,i=A(`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(Je()?.has(uT(t))===!0),Ae.push(i),i.addEventListener(`click`,()=>Le(e)),re.append(i);let a=A(`option`,null,n);a.value=e,r.append(a)}}function xt(e){let t=pt();if(t===null){C.append(A(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let n=pT(T,E,t);if(n===null){C.append(A(`p`,`plan-loading`,`Loading the previous revision`)),mt(t);return}let r=Iw(n,e);r.isTooLarge?(C.append(A(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),C.append(hh(uh(e)))):C.append(vh(r))}function St(e){if(C.replaceChildren(),ye){bt(we),C.append(ie);return}if(e===null){if(we=[],bt(we),me===Ge()){C.append(A(`p`,`plan-loading`,`This plan revision could not be loaded`));return}C.append(A(`p`,`plan-loading`,`Loading plan`)),ft();return}let t=uh(e);if(we=dh(t),bt(we),xe){xt(e);return}if(Se){C.append(hh(t));return}let n=Je();C.append(gh(we,{hasComment:e=>n?.has(uT(e))===!0,isComposing:e=>Me?.target.bucketKey===qe()&&Me.target.sectionSlot===uT(e),onComment:$e,attachmentFor:et}))}function Ct(e){s.hidden=e.tabs.length<2,c.replaceChildren();for(let t of e.tabs){let e=A(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,Ne?`radio`:`tab`),e.setAttribute(Ne?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{E=t.agentId,de=null,Te=null,pe=``,me=``,he=``,ge=``,Be(),Pe(!1,Ne),Dt()}),c.append(e)}}function O(){return Se?Ce:pT(T,E,de)}function wt(e){return tT({state:ue,selectedAgentId:E,selectedRevision:de,body:e,isConnected:fe,isDecisionInFlight:_e,isDraft:Se,pendingCommentCount:Ye(),hasUnsavedComment:Xe(),problem:Te})}function Tt(e){oe.textContent=e.status,oe.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);ce.hidden=!t,w.disabled=!t;for(let t of e.actions){let e=le.get(t.kind);e&&(e.disabled=!t.enabled)}}function Et(){Tt(wt(O()))}function Dt(){let e=Ne&&i.contains(document.activeElement),t=tT({state:ue,selectedAgentId:E,selectedRevision:de,body:null,isConnected:fe});(E!==t.selectedAgentId||de!==t.selectedRevision)&&Be(),E=t.selectedAgentId,de=t.selectedRevision,be!==qe()&&(be=null);let n=O(),a=wt(n);Ct(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?Gw(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=A(`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(A(`span`,`plan-revision-name`,e.label),A(`span`,`plan-revision-age`,Gw(e.receivedAt,l))),e.isOpen&&t.append(A(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>He(e.revision)),h.append(t)}_.replaceChildren();let g=ye?`edit`:xe?`changes`:`read`,v=a.modes.find(e=>e.kind===g&&e.enabled)??a.modes[0];for(let e of a.modes){let t=A(`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||(at(e.kind),_.querySelector(`[aria-checked="true"]`)?.focus())}),_.append(t)}y.hidden=!vt()&&!Se,x.hidden=y.hidden,x.setAttribute(`aria-pressed`,String(Se)),Tt(a),St(n),r.disabled=Ae.length===0,ze(),e&&!i.contains(document.activeElement)&&o.focus()}function Ot(t){ve!==null&&Bw(t,ve.agentId)&&(ve=null,be=null,e.showTerminal())}function kt(e){Me=null,e!==T&&(ve=null,_e=!1,Te=null,ke.clear()),Pe(!1,!1),T=e,t.hidden=!1,pe=``,me=``,Dt(),D()}function At(){Me=null,Pe(!1,!1),t.hidden=!0}function jt(e,t){return t.kind!==`selection`||e.agentId!==E?!1:t.revision===null?de===null||de===e.revision:t.revision===de}function Mt(e){e.kind===`draft`?(ge=``,Ve(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?he=``:me=We(e.agentId,e.revision)}function Nt(e){Ee!==null&&Uw(e,Ee.agentId)!==Ee.revision&&(Oe.delete(Ee.bucketKey),Ee=null)}function Pt(e){_e=!1,Ft({reviews:e.reviews});let t=e.body;if(!t){let e=dt()??ut();e!==null&&Mt(e);return}let n=lt(t);if(t.revision===0){if(ge=``,n===null||t.agentId!==E)return;Ce=t.plan,Se=!0}else dT(e.id,t),n!==null&&jt(t,n)&&(E=t.agentId,de=t.revision,pe=``,me=``)}function Ft(e){let t=Uw(e,E);t!==null&&t!==Uw(ue,E)&&(de=t,Be()),Nt(e),ue=e,_e=!1,Ot(e)}function It(e){let n=!1;e.state&&Ft(e.state),e.draft&&De.set(gt(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(ve=null,_e=!1,Ee=null,e.refusalText&&(Te=e.refusalText)),typeof e.isConnected==`boolean`&&(n=e.isConnected&&!fe,fe=e.isConnected,n&&(pe=``,me=``,he=``,ge=``,_e=!1)),e.requestFailed&&(me=pe),e.response&&Pt(e.response),t.hidden||Dt(),(n||e.decisionRefused)&&D()}return{el:t,show:kt,hide:At,update:It}}var hT=10;function gT(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 _T(e,t){let n=[],r=new Set(e.files.map(e=>e.path));for(let i of e.links){let a=t.get(i.providerRepo),o=a?.firstChangedPathByDirectory.get(i.packageDir),s=o??i.importers.find(e=>r.has(e))??i.importers[0]??i.consumerManifest,c=o&&a?a.repo:e,l=i.importerCount===1?`file`:`files`,u=i.providerChangedPathCount===1?`file`:`files`,d=i.changedImporterCount===1?`file`:`files`,f=i.isLocalLink?`Linked locally (${i.versionSpec}), so ${i.providerRepo} changes reach it now.`:`Uses ${i.versionSpec} from the registry, so ${i.providerRepo} changes reach it only after a publish.`;i.providerChangedPathCount>0&&(f+=` ${i.providerRepo} changed ${i.providerChangedPathCount} ${u} in ${i.packageDir||`the repository root`}.`),i.changedImporterCount>0&&(f+=` ${i.changedImporterCount} importing ${d} changed here.`),n.push({dedupeKey:`link:${i.providerRepo}:${i.packageName}:${e.name}`,kind:`link`,severity:6,path:s,openPath:`${c.sessionPathPrefix}${s}`,text:`${e.name} imports ${i.packageName} from ${i.providerRepo} in ${i.importerCount} ${l}`,detail:f})}for(let t of e.collisions)n.push({dedupeKey:`collision:${e.sessionPathPrefix}${t.path}:${t.otherSessionId}`,kind:`collision`,severity:5,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,text:`Also being changed in "${t.otherSessionName}"`,detail:`Another live session is changing this file, so the two may conflict.`});for(let t of e.coChangeGaps){let r=t.confidence>0?Math.round(t.support/t.confidence):0;n.push({dedupeKey:`co-change:${e.sessionPathPrefix}${t.path}:${t.partner}`,kind:`co-change`,severity:4,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,text:`Usually changes with ${t.partner}, which is not in this change`,detail:`${t.support} of the ${r} commits that touched it also touched ${t.partner}.`})}for(let t of e.untestedFiles)n.push({dedupeKey:`untested:${e.sessionPathPrefix}${t.path}`,kind:`untested`,severity:3,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,text:`No test reaches it`,detail:`No dependent test was found in the import graph.`});return n}function vT(e,t,n){let r=e.get(t)??[];r.push(n),e.set(t,r)}function yT(e,t){for(let n of e.hotspots)vT(t,`${e.sessionPathPrefix}${n.path}`,{text:`often fixed`,title:`${n.fixCommitCount} of its last ${n.commitCount} commits were fixes.`});for(let n of e.blastRadius)n.transitiveDependentCount<hT||vT(t,`${e.sessionPathPrefix}${n.path}`,{text:`${n.transitiveDependentCount} depend on it`,title:`${n.transitiveDependentCount} files depend on it: ${n.directDependentCount} directly, ${n.dependentTestCount} of them tests.`})}function bT(e,t){return t.severity-e.severity||e.openPath.localeCompare(t.openPath)||e.dedupeKey.localeCompare(t.dedupeKey)}function xT(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:gT(r)});let r=new Map,i=new Map,a=e.error?[e.error]:[];for(let t of e.repos){for(let e of _T(t,n))r.has(e.dedupeKey)||r.set(e.dedupeKey,e);yT(t,i),t.error&&a.push(e.repos.length>1?`${t.name}: ${t.error}`:t.error)}return{worthALook:[...r.values()].sort(bT),hintsByOpenPath:i,repos:e.repos.map(e=>({name:e.name,sessionPathPrefix:e.sessionPathPrefix})),errors:a}}function ST(e,t){let n=null;for(let r of e)t.startsWith(r.sessionPathPrefix)&&(n&&n.sessionPathPrefix.length>=r.sessionPathPrefix.length||(n=r));return n?.name??null}var CT=5;function wT(e,t){let n=A(`button`,`review-look-line`);return n.type=`button`,n.dataset.kind=e.kind,n.title=`${e.detail} Click to open ${e.path} below.`,n.append(A(`span`,`review-look-file`,e.path),A(`span`,`review-look-text`,e.text)),n.addEventListener(`click`,()=>t(e.openPath)),n}function TT(e,{isShowingAll:t,onShowAll:n,onOpenFile:r}){if(e.worthALook.length===0&&e.errors.length===0)return null;let i=A(`section`,`review-look`);if(i.append(A(`h3`,`review-group-label`,`Worth a look`)),e.errors.length>0){let t=A(`p`,`review-look-error`,`Could not check this change for anything worth a look.`);t.title=e.errors.join(`
|
|
163
|
+
`),i.append(t)}let a=t?e.worthALook:e.worthALook.slice(0,CT);if(a.length>0){let e=A(`div`,`review-look-list`);for(let t of a)e.append(wT(t,r));i.append(e)}let o=e.worthALook.length-a.length;if(o===0)return i;let s=A(`div`,`review-look-more`),c=A(`button`,`review-look-show-all`,`Show all`);return c.type=`button`,c.addEventListener(`click`,n),s.append(A(`span`,`review-look-more-count`,`+${o} more`),c),i.append(s),i}function ET(e){return(e??[]).map(e=>{let t=A(`span`,`review-file-hint`,e.text);return t.title=e.title,t})}function DT(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 OT(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=DT(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 kT(e,t){return t===`merged`||t===`none`||e===`parked`&&t===`pending-review`}function AT(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 jT({changedFileCount:e,hasCommits:t,canMerge:n,isWorkspace:r,live:i,effectiveBase:a}){let o=`${e} file${e===1?``:`s`} changed`,s=(t,n)=>e>0?`${o}, ${t}`:n;if(r)return{text:e>0?`${o} in this worktree`:`Changes in this worktree`,namesMergeTarget:!1};if(n){let e=FT(a);return{text:s(`ready to merge into ${e}`,`Ready to merge into ${e}`),namesMergeTarget:!0}}return i?t?{text:s(`not ready to merge`,`Not ready to merge`),namesMergeTarget:!1}:{text:s(`not committed yet`,`Not committed yet`),namesMergeTarget:!1}:{text:s(`session ended`,`Session ended`),namesMergeTarget:!1}}function MT({status:e,mergeReason:t,fetched:n,hasDiffError:r,hasChanges:i,hasCommits:a,canMerge:o,isWorkspace:s,live:c,effectiveBase:l,changedFileCount:u=0}){return e===`parked`&&t===`base-diverged`?{text:`Parked: base branch diverged`,namesMergeTarget:!1}:e===`parked`?{text:`Parked: merge conflict`,namesMergeTarget:!1}:e===`merging`?{text:`Merging`,namesMergeTarget:!1}:e===`merged`?{text:`Merged`,namesMergeTarget:!1}:r?{text:`Could not read changes`,namesMergeTarget:!1}:n?i?jT({changedFileCount:u,hasCommits:a,canMerge:o,isWorkspace:s,live:c,effectiveBase:l}):{text:`No changes yet`,namesMergeTarget:!1}:{text:`Checking for changes`,namesMergeTarget:!1}}function NT(e,t){return e.namesMergeTarget?null:`merges into ${FT(t)}`}function PT({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 FT(e){return e||`base`}function IT(e,t){return`Merge into ${FT(e)}, push it, and rebase this worktree, then keep working (${t})`}function LT(e){return e===`base-diverged`?`Resync the base branch by hand, then Merge again.`:`Needs manual merge`}function RT(e,t,n){let r=e!==`parked`||e===`parked`&&t===`base-diverged`;return{isRendered:r,isEnabled:r&&e!==`merging`&&n}}function zT({status:e,hasCommits:t,live:n,state:r}){return e===`merging`?null:t?!n&&(e===`parked`||e===`merged`)?`Session ended.`:!n||e===`parked`?null:r===`INITIALIZING`||r===`STARTING`?`Starting up. Mergeable once the session is live.`:null:n?`Nothing is committed yet. Merge opens once the session commits.`:null}function BT({fetched:e,changedFileCount:t,hasCommits:n}){return!e||t>0||n}function VT(e){return e||`its upstream`}function HT(e){if(!e)return null;let t=e.branch||`Base branch`,{state:n,ahead:r,behind:i}=e,a=VT(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 UT(e){return!e||e.fetched===!1?`recheck`:e.state===`ahead`||e.state===`behind`?`resync`:`recheck`}function WT(e,t,n){let r=n?` (${t})`:``;if(!e||UT(e)===`recheck`)return`Click to fetch and check again${r}`;let i=e.branch||`Base branch`,a=VT(e.upstream);return e.state===`behind`?`Click to fast-forward ${i} to ${a}${r}`:`Click to push ${i} to ${a}${r}`}function GT(e){return e?.state!==`in-sync`||e.fetched===!1}function KT(e){if(e.error)return`Resync failed: ${e.error}`;let t=e.branch||`The base branch`,n=VT(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 qT=new Set([`pending-review`,`parked`]),JT=600,YT=qs(`merge`,lm),XT=qs(`resolve-or-resync`,lm),ZT={minPx:260,maxPx:700},QT=16,$T=5e3,eE=new Map,tE=new Map,nE=new Map,rE=new Map,iE=new Map,aE=new Map,oE=new Set,sE=new WeakMap,cE=new WeakMap,lE=new Set,uE=new Set,dE=!1,fE=null,pE=null,mE=null,hE=null,gE=null,_E=null,vE=null,yE=null,bE=null,xE=!1,SE=null,CE=null,wE=null,TE=null,EE=new Map,DE=null,OE=null;function kE(e,t){let n=A(`button`,`review-icon-button`);return n.type=`button`,n.title=e,n.setAttribute(`aria-label`,e),n.append(Zd(t)),n}function AE(){xE=!1,mE?.querySelector(`.review-more-menu`)?.remove(),mE?.querySelector(`.review-more-button`)?.setAttribute(`aria-expanded`,`false`)}function jE({panel:e}){if(pE=e,!pE)return;let t=pE,n=A(`div`,`review-sidebar-head`),r=A(`span`,`review-sidebar-title`,`Review`);bE=A(`span`,`review-sidebar-session`),r.append(bE);let i=e=>{t.toggleAttribute(`data-collapsed`,e),kc(!e)},a=kE(`Close review`,`M6 3L11 8L6 13`);a.classList.add(`review-sidebar-close`),a.addEventListener(`click`,()=>i(!0)),n.append(r,a);let o=A(`div`,`review-sidebar-rail`),s=kE(`Open review`,`M10 3L5 8L10 13`);s.classList.add(`review-sidebar-open`),s.addEventListener(`click`,()=>i(!1)),_E=A(`div`,`review-rail-status`),vE=A(`span`,`review-rail-added`),yE=A(`span`,`review-rail-removed`),_E.append(vE,yE),gE=A(`span`,`review-rail-label`,`Review`),o.append(s,gE,_E),mE=A(`div`,`review-controls`),hE=A(`div`,`review-sidebar-body`);let c=A(`div`,`review-resize-handle`);c.setAttribute(`role`,`separator`),c.setAttribute(`aria-orientation`,`vertical`),c.setAttribute(`aria-label`,`Resize review sidebar`),c.tabIndex=0,t.append(o,n,mE,hE,c),t.toggleAttribute(`data-collapsed`,!Oc()),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&xE&&(e.preventDefault(),AE(),mE?.querySelector(`.review-more-button`)?.focus())}),document.addEventListener(`pointerdown`,e=>{xE&&e.target instanceof Element&&(mE?.contains(e.target)&&e.target.closest(`.review-more-button, .review-more-menu`)||AE())}),w_({resizer:c,column:t,widthHost:t,widthProperty:`--sidebar-width`,bounds:ZT,keyStepPx:QT,getStoredWidth:nl,setStoredWidth:rl,growsLeftward:!0}),Gv(e=>{xE=!1,wE=null,lE.clear(),uE.clear(),dE=!1,fE=null,e&&iD(e),e&&!oD(e)&&sD(e),_D()}),_D()}function ME(e,t){let n=eE.get(e);eE.set(e,t),kT(n,t)&&(nE.delete(e),rE.delete(e),iE.delete(e),e===Uv()&&aD(e)),e===Uv()&&_D()}function NE(e,t,n=null){let r=t||`none`;tE.set(e,n);let i=EE.get(e);i!==void 0&&i!==r&&EE.delete(e),ME(e,r)}function PE(e){let t=Sr(e);t&&EE.delete(t)&&t===Uv()&&_D()}function FE(e,t,n=null){tE.set(e,n),EE.delete(e),ME(e,t||`none`)}function IE(e,t){nE.set(e,t),rE.delete(e),e===Uv()&&(fE&&pD(fE,t),_D(),mD())}function LE(e,t){let n=Sr(e);n&&(rE.set(n,t),n===Uv()&&_D())}function RE(e,t){let n=Sr(e);if(!n)return;let r=Di.safeParse(t);r.success&&r.data.sessionId===n&&(iE.set(n,r.data),n===Uv()&&_D())}function zE(e,t){let n=Sr(e),r=t;aE.set(n,r),r&&r.action!==void 0&&BE(n,r),n===Uv()&&_D()}function BE(e,t){oE.delete(e),clearTimeout(OE??void 0),OE=null;let n=KT(t);DE=n?{forId:e,text:n,isError:!!t.error}:null,DE&&!DE.isError&&(OE=setTimeout(()=>{DE&&DE.forId===e&&(DE=null),_D()},5e3))}function VE(e){let t=Sr(e);t&&t===Uv()&&iD(t)}function HE(e){let t=Sr(e);if(t!==Uv())return;let n=!nE.has(t)||rE.has(t),r=!iE.has(t)||UE(iE.get(t));n&&iD(t),r&&!n&&aD(t),_D()}function UE(e){return e?!!e.error||e.repos.some(e=>e.error!==null):!1}function WE(e){let t=Sr(e);eE.delete(t),tE.delete(t),nE.delete(t),rE.delete(t),iE.delete(t),aE.delete(t),oE.delete(t),DE&&DE.forId===t&&(clearTimeout(OE??void 0),DE=null),t===Uv()?Wv(null):_D()}function GE(){let e=Uv(),t=e?N.get(e):null;if(!e||!t)return KE(null,`No session is open to merge.`);if(oD(e))return KE(e,`A workspace session has no worktree to merge.`);if(EE.has(e))return KE(e,`Merge is already on its way for "${fD(t,e)}".`);let n=eE.get(e)||`none`,r=!!nE.get(e)?.hasCommits,i=RT(n,tE.get(e)||null,eD(t.currentState,r));return PT({status:n,mergeReason:tE.get(e)||null,live:rD(t.currentState),isMergeRendered:i.isRendered,hasChanges:$E(e)})!==`merge`||!i.isEnabled?KE(e,zT({status:n,hasCommits:r,live:rD(t.currentState),state:t.currentState})??`Nothing to merge in "${fD(t,e)}" right now.`):(tD(e,t.currentState),!0)}function KE(e,t){return wE={forId:e,text:t},clearTimeout(TE??void 0),TE=setTimeout(()=>{wE=null,_D()},$T),_D(),!1}function qE(){let e=Uv();if(!e||oD(e))return!1;let t=N.get(e);if(!t)return!1;let n=eE.get(e)||`none`,r=tE.get(e)||null;return PT({status:n,mergeReason:r,live:rD(t.currentState),isMergeRendered:RT(n,r,!1).isRendered,hasChanges:$E(e)})!==`resolve`||JE(e)?!1:(YE(e),!0)}function JE(e){return SE?.forId===e&&!SE.isError}function YE(e){let t=G({type:`resolve-session-merge`,id:e});SE=t?{forId:e,text:`Resolve prompt sent`,isError:!1}:{forId:e,text:`Not connected. The resolve prompt was not sent.`,isError:!0},clearTimeout(CE??void 0),CE=setTimeout(()=>{SE=null,_D()},t?3e3:$T),_D()}function XE(){let e=Uv();return!e||!N.has(e)||oD(e)||lD(e)?!1:(uD(e),!0)}function ZE(e){if(!e)return{committed:[],uncommitted:[]};let t=sE.get(e);if(t)return t;let n={committed:OT(e.committed?.diff||``),uncommitted:OT(e.uncommitted?.diff||``)};return sE.set(e,n),n}function QE(e){let t=cE.get(e);if(t)return t;let n=xT(e);return cE.set(e,n),n}function $E(e){let t=ZE(nE.get(e)),n=[...t.committed,...t.uncommitted],r=nE.get(e)??null;return BT({fetched:nE.has(e),changedFileCount:AT(n).files,hasCommits:!!r?.hasCommits})}function eD(e,t){return(Zn.includes(e)||e===k.RUNNING)&&t}function tD(e,t){t===k.RUNNING?Rf({title:`Merge while working`,message:`This session still looks like it is working. Merging rebases its worktree under it. Merge anyway?`,confirmLabel:`Merge anyway`,onConfirm:()=>nD(e,!0)}):nD(e,!1)}function nD(e,t){EE.has(e)||(G(t?{type:`merge-continue-session`,id:e,force:!0}:{type:`merge-continue-session`,id:e})?(EE.set(e,eE.get(e)||`none`),e===Uv()&&_D()):KE(e,`Not connected. The merge was not sent.`))}function rD(e){return e!==k.DORMANT&&e!==k.DONE&&e!==k.FAILED}function iD(e){G({type:`request-session-diff`,id:e}),aD(e)}function aD(e){iE.has(e)||iE.set(e,null),G({type:`request-change-map`,id:e})}function oD(e){return N.get(e)?.card.dataset.workspace!==void 0}function sD(e){aE.set(e,null),G({type:`request-branch-sync`,id:e}),e===Uv()&&_D()}function cD(e){oE.add(e),clearTimeout(OE??void 0),DE&&DE.forId===e&&(DE=null),G({type:`resync-branch`,id:e}),e===Uv()&&_D()}function lD(e){return oE.has(e)||aE.get(e)===null}function uD(e){lD(e)||(UT(aE.get(e))===`resync`?cD(e):sD(e))}function dD(e,t){return t?{text:`Resyncing`,loading:!0,error:!1}:DE&&DE.forId===e?{text:DE.text,loading:!1,error:DE.isError}:null}function fD(e,t){return e?.card?.dataset.session||t}function pD(e,t){if(!t)return;let{committed:n,uncommitted:r}=ZE(t);for(let t of n)(t.path===e||t.oldPath===e)&&lE.add(`committed:${t.path}`);for(let t of r)(t.path===e||t.oldPath===e)&&lE.add(`uncommitted:${t.path}`)}function mD(){if(!hE||!fE)return;let e=hE.querySelectorAll(`.review-file`);for(let t of e)if(t.dataset.path===fE||t.dataset.oldPath===fE){t.scrollIntoView({block:`nearest`}),fE=null;return}}function hD(e){fE=e,pD(e,nE.get(Uv()??``)),_D(),mD()}function gD(){dE=!0,_D()}function _D(){let e=hE?.scrollTop??0;vD(),hE&&(hE.scrollTop=e)}function vD(){if(!mE||!hE)return;mE.replaceChildren(),hE.replaceChildren(),gE&&(gE.hidden=!0),_E&&(_E.hidden=!0);let e=Uv(),t=e?N.get(e):null;if(bD(e,t),!e||!t){wE&&mE.append(yD(wE.text,!0)),xD(`No session selected`,`Click a session name to review its changes here.`);return}let n=oD(e),r=eE.get(e)||`none`,i=tE.get(e)||null,a=t.currentState,o=qT.has(r),s=nE.has(e),c=s?nE.get(e):null,l=rE.get(e)??null,{committed:u,uncommitted:d}=ZE(c),f=!!c?.hasCommits,p=rD(a),m=RT(r,i,eD(a,f)),h=aE.get(e),g=oE.has(e),_=FT(t.effectiveBase),v=AT([...u,...d]),y=PT({status:r,mergeReason:i,live:p,hasChanges:BT({fetched:s,changedFileCount:v.files,hasCommits:f}),isMergeRendered:m.isRendered}),b=MT({status:r,mergeReason:i,fetched:s,hasDiffError:l!==null,hasChanges:v.files>0||f,hasCommits:f,canMerge:!n&&m.isEnabled,isWorkspace:n,live:p,effectiveBase:_,changedFileCount:v.files}),x=A(`div`,`review-status-headline`);if(x.append(A(`span`,`review-status-text`,b.text)),!n&&!GT(h)){let t=HT(h);if(t){x.title=t;let n=kE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);n.classList.add(`review-branch-sync-refresh`),n.title=WT(h,XT,y!==`resolve`),n.disabled=lD(e),n.setAttribute(`aria-description`,t),n.addEventListener(`click`,()=>uD(e)),x.append(A(`span`,`sr-only`,t),n)}}mE.append(x);let S=A(`div`,`review-status-meta`);if(s&&v.files>0&&S.append(A(`span`,`review-status-added`,`+${v.added}`),A(`span`,`review-status-removed`,`-${v.removed}`),A(`span`,`review-status-spacer`)),!n&>(h)){let t=SD(e,y!==`resolve`);t&&S.append(t)}S.childElementCount>0&&mE.append(S),r===`parked`&&mE.append(A(`div`,`review-status-explanation`,LT(i))),gE&&(gE.hidden=!1),_E&&(_E.hidden=!1,_E.setAttribute(`aria-label`,`${b.text}, +${v.added}, -${v.removed}`),_E.title=b.text),vE&&(vE.textContent=`+${v.added}`),yE&&(yE.textContent=`-${v.removed}`);let ee=n?null:DD(e,{status:r,reviewable:o,mergeAction:m,live:p,state:a,effectiveBase:_,primaryAction:y});ee&&mE.append(ee);let te=n?null:dD(e,g),ne=!n&&y===`merge`&&!m.isEnabled?zT({status:r,hasCommits:f,live:p,state:a}):null;if(ne){let e=A(`div`,`review-control-reason`,ne);e.id=`review-merge-reason`,mE.append(e),mE.querySelector(`#review-merge-btn`)?.setAttribute(`aria-describedby`,e.id)}if(te?.text){let e=A(`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||mE.insertBefore(S,x.nextSibling),mE.querySelector(`.review-branch-sync-button, .review-branch-sync-refresh`)?.setAttribute(`aria-describedby`,e.id)}if(SE?.forId===e&&mE.append(yD(SE.text,SE.isError)),wE&&(wE.forId===e||wE.forId===null)&&mE.append(yD(wE.text,!0)),l){hE.append(A(`p`,`review-diff-error`,l));return}let re=iE.get(e),C=re?QE(re):null,ie=C?TT(C,{isShowingAll:dE,onShowAll:gD,onOpenFile:hD}):null;ie&&hE.append(ie);let ae=u.length>0&&d.length>0;u.length>0&&hE.append(CD({kind:`committed`,label:ae?`Committed`:null,meaning:NT(b,_),files:u,changeMapView:C})),d.length>0&&hE.append(CD({kind:`uncommitted`,label:ae?`Not committed yet`:null,meaning:null,files:d,changeMapView:C}))}function yD(e,t){let n=A(`div`,t?`review-control-reason review-control-reason-error`:`review-resolve-sent`,e);return n.setAttribute(`role`,`status`),n}function bD(e,t){if(!bE)return;let n=e&&t?fD(t,e):``;bE.textContent=n,bE.hidden=!n,bE.title=n}function xD(e,t){if(!hE)return;let n=A(`div`,`review-empty`);n.append(A(`div`,`review-empty-title`,e),A(`div`,`review-empty-desc`,t)),hE.append(n)}function SD(e,t){let n=aE.get(e);if(n===void 0)return null;if(n===null)return A(`span`,`review-branch-sync-text review-loading`,`Checking branch sync...`);let r=HT(n)||`Base branch: sync state unknown`,i=A(`span`,`review-branch-sync-text`);n.state&&(i.dataset.syncState=n.state),n.fetched===!1&&(i.dataset.stale=`true`);let a=kE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);return a.classList.add(`review-branch-sync-button`),a.title=WT(n,XT,t),a.disabled=oE.has(e),a.addEventListener(`click`,()=>uD(e)),i.append(a,A(`span`,`review-branch-sync-label`,r)),i}function CD({kind:e,label:t,meaning:n,files:r,changeMapView:i}){let a=A(`div`,`review-section`);a.dataset.kind=e,t&&a.append(wD(t,n,r));let o=A(`div`,`review-diff`),s=i&&i.repos.length>1?i.repos:[],c=null;for(let t of r){let n=s.length>0?ST(s,t.path):null;n&&n!==c&&o.append(A(`div`,`review-repo-label`,n)),c=n,o.append(TD(t,e,i))}return a.append(o),a}function wD(e,t,n){let r=AT(n),i=A(`div`,`review-section-head`),a=A(`div`,`review-section-id`);a.append(A(`span`,`review-section-label`,e)),t&&a.append(A(`span`,`review-section-meaning`,t));let o=A(`div`,`review-section-stat`);return o.append(A(`span`,`review-stat-files`,`${r.files} file${r.files===1?``:`s`}`),A(`span`,`review-add`,`+${r.added}`),A(`span`,`review-del`,`-${r.removed}`)),i.append(a,o),i}function TD(e,t,n){let r=`${t}:${e.path}`,i=lE.has(r),a=A(`div`,`review-file`);a.dataset.path=e.path,e.oldPath&&(a.dataset.oldPath=e.oldPath),a.dataset.status=e.status,a.dataset.open=i?`true`:`false`;let o=A(`button`,`review-file-head`);o.type=`button`,o.setAttribute(`aria-expanded`,i?`true`:`false`);let s=A(`span`,`review-file-twisty`,i?`▾`:`▸`);s.setAttribute(`aria-hidden`,`true`);let c=A(`span`,`review-file-name`);c.append(A(`span`,`review-file-path`,e.path));let l=ET(n?.hintsByOpenPath.get(e.path));if(l.length>0){let e=A(`span`,`review-file-hints`);e.append(...l),c.append(e)}o.append(s,c);let u=A(`span`,`review-file-counts`);if(e.binary&&u.append(A(`span`,`review-bin`,`bin`)),e.binary||u.append(A(`span`,`review-add`,`+${e.added}`),A(`span`,`review-del`,`-${e.removed}`)),o.append(u),o.addEventListener(`click`,()=>{let e=lE.has(r);e&&lE.delete(r),e||lE.add(r),_D()}),a.append(o),!i)return a;let d=A(`div`,`review-file-body`);if(e.binary)return d.append(A(`div`,`review-file-binary`,`Binary file not shown`)),a.append(d),a;let f=0,p=!1;for(let t of e.hunks){if(f>=JT&&!uE.has(r)){p=!0;break}d.append(A(`div`,`review-hunk-head`,t.header));for(let e of t.lines){if(f>=JT&&!uE.has(r)){p=!0;break}let t=A(`div`,`review-line review-line-${e.type}`),n=e.type===`add`?`+`:e.type===`del`?`-`:e.type===`meta`?`\\`:` `;t.append(A(`span`,`review-line-gutter`,n)),t.append(A(`span`,`review-line-text`,e.text)),d.append(t),f++}if(p)break}if(p){let e=A(`button`,`review-expand`,`Show the rest of this file`);e.type=`button`,e.addEventListener(`click`,()=>{uE.add(r),_D()}),d.append(e)}return a.append(d),a}function ED({id:e,label:t,shortcut:n,title:r,disabled:i=!1,danger:a=!1,onClick:o}){let s=A(`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 DD(e,{status:t,reviewable:n,mergeAction:r,live:i,state:a,effectiveBase:o,primaryAction:s}){let c=A(`div`,`review-actions`),l=s===`resolve`;s===`merge`&&c.append(ED({id:`review-merge-btn`,label:`Merge`,shortcut:YT,title:IT(o,YT),disabled:!r.isEnabled||EE.has(e),onClick:()=>tD(e,a)})),l&&c.append(ED({label:`Resolve`,shortcut:XT,title:`Paste a resolve prompt into this session so the agent can finish the merge (${XT})`,disabled:JE(e),onClick:()=>YE(e)}));let u=A(`div`,`review-action-controls`);if(u.append(c),!n||i)return c.childElementCount>0?u:null;let d=kE(`More review actions`,Yd);if(d.classList.add(`review-more-button`),d.setAttribute(`aria-haspopup`,`menu`),d.setAttribute(`aria-expanded`,String(xE)),d.setAttribute(`aria-controls`,`review-more-menu`),d.addEventListener(`click`,()=>{xE=!xE,_D(),(mE?.querySelector(xE?`.review-more-menu button:not(:disabled)`:`.review-more-button`)??mE?.querySelector(`.review-more-button`))?.focus()}),c.append(d),!xE)return u;let f=A(`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=ED({label:`Discard worktree`,danger:!0,disabled:t===`merging`,onClick:()=>{xE=!1,_D(),Rf({title:`Discard worktree`,message:`Throw away the worktree changes for "${fD(N.get(e),e)}"? This cannot be undone.`,confirmLabel:`Discard`,danger:!0,onConfirm:()=>G({type:`discard-session-worktree`,id:e})})}});n.setAttribute(`role`,`menuitem`),f.append(n)}return u.append(f),u}var OD=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 kD(e){let t=e.split(/\r?\n/,1)[0]?.trim()??``;return t.length<=160?t:`${t.slice(0,157)}...`}function AD(e,t){let n=OD[e];if(!n||!t||typeof t!=`object`||Array.isArray(t))return``;let r=t[n];return typeof r==`string`?kD(r):``}var jD=5e3;function MD(e){let t=e.match(/<command-name>([^<]*)<\/command-name>/)?.[1];return t===void 0||/[\r\n]/.test(t)?null:t.trim()||null}function ND(e,t){if(!e.toolUseId)return MD(e.text)??`context`;let n=t.get(e.toolUseId);return n?AD(n.name,n.input)||n.name:`expansion`}function PD(e){return e.kind!==`expansion`||e.toolUseId?!1:MD(e.text)!==null}function FD(e){return e.kind===`prompt`||e.kind===`session`||PD(e)}function ID(e){return new TextEncoder().encode(e).byteLength}function LD(e){return e.kind===`prompt`||e.kind===`expansion`||e.kind===`thinking`||e.kind===`assistant`||e.kind===`notice`?e.text:e.kind===`tool_result`?e.content:e.kind===`raw`?e.line:e.kind===`tool_call`?JSON.stringify(e.input,null,2)??String(e.input??``):[`${e.vendor} ${e.vendorSessionId}`,e.transcriptPath,e.reason??``].filter(Boolean).join(`
|
|
164
|
+
`)}var RD={prompt:`PROMPT`,expansion:`EXPANSION`,thinking:`THINKING`,assistant:`ASSISTANT`,tool_call:`TOOL`,tool_result:`RESULT`,session:`SESSION`,notice:`NOTICE`,raw:`RAW`},zD=[{kind:`thinking`,label:`Thinking`},{kind:`tool_result`,label:`Tool result`},{kind:`raw`,label:`Raw`}];function BD(e,t){if(e.kind===`prompt`)return{prefix:`Prompt: `,text:kD(e.text)};if(e.kind===`thinking`)return{prefix:`Thinking: `,text:kD(e.text)};if(e.kind===`assistant`)return{prefix:`Assistant: `,text:kD(e.text)};if(e.kind===`notice`)return{prefix:`Notice: `,text:kD(e.text)};if(e.kind===`raw`)return{prefix:`Raw: `,text:kD(e.line)};if(e.kind===`session`)return{prefix:`Session: `,text:`${e.vendor} ${e.vendorSessionId}`};if(e.kind===`expansion`)return{prefix:`Expansion: `,text:ND(e,t)};if(e.kind===`tool_call`){let t=AD(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:`${ID(e.content)} bytes`}}function VD(e){if(!e.agentType)return``;let t=e.agentId?` ${e.agentId.slice(-6)}`:``;return`[${e.agentType}${t}] `}function HD(e,t){let n=BD(e,t),r=VD(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:RD[e.kind],text:`${r}${i}`,tone:o,badges:a}}function UD(e,t){return{record:e,...HD(e,t)}}function WD(e){return e.kind!==`tool_result`&&e.kind!==`expansion`?null:e.toolUseId||null}function GD(e,t){let n=WD(e);return!n||t.has(n)?null:n}function KD(e,t,n=1){e.set(t,(e.get(t)??0)+n)}function qD(e,t){let n=(e.get(t)??0)-1;n>0?e.set(t,n):e.delete(t)}function JD(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=WD(i.record);a&&t.has(a)&&(n.rows[r]=UD(i.record,e.toolCallByUseId))}}function YD(){return{turns:[],toolCallByUseId:new Map,unresolvedToolUseCounts:new Map}}function XD(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 ZD(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`}`}, ${Bl(i,`KB`)}, ${pu(XD(e))}`}function QD(){return{rowCount:0,toolCallCount:0,errorCount:0,resultBytes:0}}function $D(e,t,n){e.metrics.rowCount+=n,t.record.kind===`tool_call`&&(e.metrics.toolCallCount+=n),t.record.kind===`tool_result`&&(e.metrics.resultBytes+=ID(t.record.content)*n,t.record.isError&&(e.metrics.errorCount+=n))}function eO(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=GD(i,e.toolCallByUseId);t&&KD(e.unresolvedToolUseCounts,t);let a=UD(i,e.toolCallByUseId);if(FD(i)){r={head:a,rows:[],hasTrimmedRows:!1,startedAt:i.ts,metrics:QD()},$D(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:QD()},e.turns.push(r),n.push({turnIndex:e.turns.length-1,isNewTurn:!0,head:null,rows:[]})),r.rows.push(a),$D(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 tO(e,t){let n=YD();eO(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)||KD(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],JD(e,i),{newTurns:n.turns,mergedHead:c,mergedRows:l,needsRerender:i.size>0}}function nO(e){return e.rows.length+ +!!e.head}function rO(e){let t=0;for(let n of e.turns)t+=nO(n);return t}function iO(e,t){for(let n of t){if(n.record.kind===`tool_call`){e.toolCallByUseId.delete(n.record.toolUseId);continue}let t=WD(n.record);t&&qD(e.unresolvedToolUseCounts,t)}}function aO(e,t){iO(e,t.head?[t.head,...t.rows]:t.rows)}function Oee(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);iO(e,i);for(let e of i)$D(n,e,-1);return n.rows=n.rows.slice(r),n.hasTrimmedRows=!0,r}function oO(e,t=jD){let n=rO(e),r=0;for(;n>t&&r<e.turns.length-1;){let t=e.turns[r];if(!t)break;n-=nO(t),aO(e,t),r+=1}return r>0&&(e.turns=e.turns.slice(r)),n<=t?{droppedTurnCount:r,droppedRowCount:0}:{droppedTurnCount:r,droppedRowCount:Oee(e,n-t)}}function sO(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 cO(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 lO(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 uO(e,t=jD){return!e.selectedSessionId||!e.hasLoadedOnce||e.hasDroppedEarliestRows||e.residentRowCount>=t?!1:e.firstOffset>0}function dO(e,t=jD){return!uO(e,t)||e.hasPendingRequest||!e.selectedSessionId?null:{id:e.selectedSessionId,direction:`earlier`,after:0,endingAt:e.firstOffset}}function fO(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 pO(e){return e.hasSelectionChanged||e.isRenderedTraceStale||!e.hasRenderedOnce}function mO(e,t,n){return e!==0||t?null:n?.startedAt??null}function hO(e,t){return gO(e,t)?e.filter(e=>e!==t):[...e,t]}function gO(e,t){return e.includes(t)}function _O(e){return e?`No trace has been recorded for ${e.label}.`:`No sessions are available.`}var vO=1e4,yO=null,bO=null,xO=null,SO=null,CO=[],wO=!1,TO=Rc(),EO=null,DO=null,OO=[],kO=null,AO=null,J=null,jO=null,MO=!1,NO=null;function PO(){return!!yO&&!_r(yO)}function FO(){return OO.find(e=>e.id===kO)??null}function IO(){jO&&=(clearTimeout(jO.timeoutHandle),null)}function LO(){jO=null,NO=`The trace did not load within ${Math.round(vO/1e3)} s.`,sk()}function RO(e){IO(),MO=!1,NO=null,kO=e,J=e?{sessionId:e,grouping:YD(),firstOffset:0,nextOffset:0,hasDroppedEarliestRows:!1,filePath:``,hasLoadedOnce:!1}:null,wO=!0}function zO(e){let t=cO(OO,AO,kO,e);return AO&&t===AO&&(AO=null),t!==kO&&(RO(t),!0)}function BO(e){if(!EO)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};EO(t)?jO={request:e,timeoutHandle:setTimeout(LO,vO)}:(NO=W,ck())}function VO(e=!1){if(!EO)return;let t=lO({selectedSessionId:kO,isPanelVisible:e||PO(),hasPendingRequest:!!jO,hasLoadedOnce:J?.hasLoadedOnce??!1,nextOffset:J?.nextOffset??0});t&&BO(t)}function HO(){return{selectedSessionId:kO,hasPendingRequest:!!jO,hasLoadedOnce:J?.hasLoadedOnce??!1,hasDroppedEarliestRows:J?.hasDroppedEarliestRows??!1,firstOffset:J?.firstOffset??0,residentRowCount:J?rO(J.grouping):0}}function UO(){if(!EO)return;let e=dO(HO());e&&BO(e)}function WO(e){OO.some(t=>t.id===e)&&e!==kO&&(AO=null,RO(e),VO(),sk())}function GO(){let e=A(`label`,`trace-session-field`),t=A(`span`,`trace-session-label`,`Session`),n=A(`select`,`trace-session-select`);n.disabled=OO.length===0;for(let e of OO){let t=A(`option`,null,e.label);t.value=e.id,t.selected=e.id===kO,n.append(t)}return n.addEventListener(`change`,()=>WO(n.value)),e.append(t,n),e}function KO(e){e.toggleAttribute(`data-hidden`,gO(TO,e.dataset.kind??``))}function qO(){if(xO)for(let e of xO.querySelectorAll(`.trace-row`))KO(e)}function JO(e){if(xO)for(let t of xO.querySelectorAll(`details`))t.open=e}function YO(){let e=A(`div`,`trace-filters`);for(let t of zD){let n=A(`button`,`trace-filter`,t.label);n.type=`button`;let r=()=>{n.setAttribute(`aria-pressed`,String(!gO(TO,t.kind)))};r(),n.addEventListener(`click`,()=>{TO=hO(TO,t.kind),zc(TO),r(),qO()}),e.append(n)}for(let[t,n]of[[`Expand all`,!0],[`Collapse all`,!1]]){let r=A(`button`,`trace-expand-control`,t);r.type=`button`,r.addEventListener(`click`,()=>{JO(n)}),e.append(r)}return e}function XO(){let e=mr(`trace`,`Session trace`,`Bodies load from the local trace file only when requested.`),t=A(`div`,`trace-controls`);t.append(GO());let n=J?.filePath??``,r=A(`code`,`trace-path`,n);r.title=n,t.append(r);let i=J?mO(J.firstOffset,J.hasDroppedEarliestRows,J.grouping.turns[0]):null;if(i!==null&&t.append(A(`span`,`trace-session-start`,`Started ${new Date(i).toLocaleString()}`)),e.append(t,YO()),!NO)return e;let a=lf(`trace-status`);return a.show(`error`,NO),e.append(a.element),e}function ZO(e){let t=A(`div`,`trace-copy-wrap`),n=A(`button`,`trace-copy`,`Copy`);n.type=`button`;let r=A(`span`,`trace-copy-status`);return r.setAttribute(`role`,`status`),n.addEventListener(`click`,()=>{let t=vr(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 QO(){let e=A(`div`,`trace-earlier-wrap`),t=A(`button`,`trace-load-earlier`,`Load earlier`);return t.type=`button`,t.addEventListener(`click`,()=>{UO()}),e.append(t),e}function $O(e,t,n=``){let r=A(`details`,`trace-row${n?` ${n}`:``}`);r.dataset.kind=e.kind,r.dataset.tone=e.tone,KO(r);let i=A(`summary`,`trace-row-summary`);i.append(A(`span`,`trace-offset`,mu(t,e.record.ts)),A(`span`,`trace-kind`,e.tag),A(`span`,`trace-row-label`,e.text));for(let t of e.badges){let e=A(`span`,`trace-badge`,t);e.dataset.badge=t,i.append(e)}let a=A(`div`,`trace-row-body`);r.append(i,a);let o=!1;return r.addEventListener(`toggle`,()=>{if(!r.open||o)return;o=!0;let t=LD(e.record);a.append(ZO(t),A(`pre`,`trace-row-pre`,t))}),r}function ek(e){return A(`span`,`trace-turn-metrics`,ZD(e))}function tk(e,t){e&&t&&(t.textContent=ZD(e))}function nk(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=mu(t.startedAt,t.rows[e].record.ts))}}function rk(e,t,n){let r=$O(t,e.startedAt,`trace-turn-head`);return M(r,`.trace-row-summary`).append(n),r}function ik(e){let t=A(`section`,`trace-turn`),n=ek(e);if(e.head&&t.append(rk(e,e.head,n)),!e.head){let e=A(`h2`,`trace-leading-title`);e.append(A(`span`,`trace-leading-label`,`Before first prompt`),n),t.append(e)}let r=A(`div`,`trace-rows`);for(let t of e.rows)r.append($O(t,e.startedAt));return e.hasTrimmedRows&&t.append(A(`p`,`trace-trimmed`,`Earlier rows trimmed`)),t.append(r),{section:t,rowsElement:r,metricsElement:n}}function ak(e){return e?jO?.request.id===e.id&&!J?.hasLoadedOnce?`Loading trace.`:_O(e):_O(null)}function ok(){if(!yO)return;let e=A(`div`,`trace-content`);bO=XO(),e.append(bO),xO=null,SO=null,CO=[];let t=FO(),n=J?.grouping.turns??[];if(!t||n.length===0){e.append(A(`p`,`trace-empty`,ak(t))),yO.replaceChildren(e),wO=!1;return}uO(HO())&&(SO=QO(),e.append(SO));let r=A(`div`,`trace-turns`);for(let e of n){let t=ik(e);CO.push(t),r.append(t.section)}xO=r,qO(),e.append(r),yO.replaceChildren(e),wO=!1}function sk(){yO&&(PO()?ok():wO=!0)}function ck(){if(!bO||!PO())return;let e=XO();bO.replaceWith(e),bO=e}function lk(e){if(!xO)return;let t=J?.grouping.turns[e.turnIndex];if(!t)return;if(e.isNewTurn){let e=ik(t);CO.push(e),xO.append(e.section);return}let n=CO[e.turnIndex];if(n){for(let r of e.rows)n.rowsElement.append($O(r,t.startedAt));tk(t,n.metricsElement)}}function uk(e){let t=e.parentElement;t&&!t.querySelector(`.trace-trimmed`)&&t.insertBefore(A(`p`,`trace-trimmed`,`Earlier rows trimmed`),e)}function dk(){uO(HO())?!SO&&xO?.parentElement&&(SO=QO(),xO.parentElement.insertBefore(SO,xO)):(SO?.remove(),SO=null)}function fk(){if(!J)return;let e=oO(J.grouping);if(!(e.droppedTurnCount>0||e.droppedRowCount>0)){dk();return}let t=!J.hasDroppedEarliestRows;if(J.hasDroppedEarliestRows=!0,CO=CO.slice(e.droppedTurnCount),xO)for(let t=0;t<e.droppedTurnCount;t+=1)xO.firstElementChild?.remove();let n=CO[0];if(n&&e.droppedRowCount>0){for(let t=0;t<e.droppedRowCount;t+=1)n.rowsElement.firstElementChild?.remove();uk(n.rowsElement),tk(J.grouping.turns[0],n.metricsElement)}t&&ck(),dk()}function pk(e){if(!J)return;let t=eO(J.grouping,e);if(PO()&&!wO&&xO){for(let e of t)lk(e);fk()}else xO=null,fk(),PO()?ok():wO=!0}function mk(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 hk(){MO&&!jO&&(MO=!1,VO())}function gk(e){if(!xO)return;let t=CO[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=ek(r),o=rk(r,e.mergedHead,a);n.insertBefore(o,i),t.metricsElement=a}e.mergedHead||tk(r,t.metricsElement);let a=document.createDocumentFragment();for(let t of e.mergedRows)a.append($O(t,r.startedAt));i.prepend(a),nk(i,r)}let i=document.createDocumentFragment(),a=[];for(let t of e.newTurns){let e=ik(t);a.push(e),i.append(e.section)}xO.prepend(i),CO.unshift(...a)}function _k(e){if(!J)return;let t=tO(J.grouping,e),n=PO()&&!wO&&!!xO&&!t.needsRerender,r=yO?.parentElement??null,i=r?.scrollHeight??0,a=r?.scrollTop??0;n&&gk(t),fk(),n||sk(),n&&ck(),r&&(r.scrollTop=a+r.scrollHeight-i)}function vk(e){yO||(yO=A(`div`,`trace-panel`),e.append(yO),ok())}function yk(e){EO=e}function bk(e){DO=e}function xk(e){AO=e,DO?.()}function Sk(e){OO=sO(e);let t=zO(PO());t&&VO(),(t||!bO)&&sk(),!t&&bO&&ck()}function Ck(){if(!yO)return;let e=zO(!0);VO(!0),pO({hasSelectionChanged:e,isRenderedTraceStale:wO,hasRenderedOnce:!!bO})&&ok()}function wk(e){let t=mk(e);if(!t)return;let n=fO({pendingRequest:jO?.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`?hk():(IO(),NO&&(NO=null,ck()),n===`stale`?hk():n===`reset`?(RO(t.id),J&&(J.filePath=t.path),VO(),sk(),hk()):J&&(J.filePath=t.path,n===`prepend`?(J.firstOffset=t.start,_k(t.records),hk()):(n===`seed`&&(J.hasLoadedOnce=!0,J.firstOffset=t.start),J.nextOffset=t.next,pk(t.records),hk())))}function Tk(e){let t=e?.id;typeof t==`string`&&t===kO&&PO()&&(jO?MO=!0:VO())}function Ek(e){let t=e?.id;if(typeof t!=`string`||jO?.request.id!==t)return!1;IO(),MO=!1;let n=e?.message;return NO=typeof n==`string`&&n?n:`The trace could not be read.`,sk(),!0}function Dk(e){IO(),MO=!1,NO=e?null:W,e?(ck(),VO()):sk()}var Ok=`Estimated list prices, not a bill.`,kk=`Enable in Settings.`,Ak=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}]),jk=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],Mk=/^(\d{4})-(\d{2})-(\d{2})$/,Nk=new Set([`day`,`model`,`label`]),Pk=new Set([`model`,`label`]);function Fk(e){return e.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function Ik(e){return e.includes(`.`)?e.replace(/0+$/,``).replace(/\.$/,``):e}function Lk(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=Math.round(e);return`${t<0?`-`:``}${Fk(String(Math.abs(t)))}`}function Rk(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}$${Fk(r)}.${i}`}function zk(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}${Ik((n/1e3).toFixed(1))}k`:n<999995e3?`${t}${Ik((n/1e6).toFixed(2))}M`:`${t}${Ik((n/1e9).toFixed(2))}B`}function Bk(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${Ik(e.toFixed(1))}%`}function Vk(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function Hk(e){return e===`costUSD`?`share of cost`:`share of tokens`}function Uk(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function Wk(e){let t=Mk.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=jk[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function Gk(e){let t=Kk(e);return t.length===0?``:t.length===1?Wk(t[0]):`${Wk(t[0])} to ${Wk(t[t.length-1])}`}function Kk(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>Mk.test(e)).sort()}function qk(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:Jk(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function Jk(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=Yk(e,n);return Mk.test(r)?r:Yk(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function Yk(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function Xk(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:Rl(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function Zk(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=jk[n.getMonth()];return r?`${r} ${n.getDate()} ${Hl(n)}`:`-`}function Qk(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${zk(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:zk(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:Rk(e.costPerHour),sub:``}),t}function $k(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${zk(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(Rk(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${Xk(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 eA(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 tA(e){return typeof e!=`number`||!Number.isFinite(e)?`ok`:e>=100?`crit`:e>=80?`warn`:`ok`}function nA(e){let t=U(e?.max,null);return t===null||t<=0?null:t}function rA(e){let t=nA(e),n=U(e?.pct,null);return t===null||n===null?null:n*100}function iA(e,t){let n=nA(t),r=U(e?.projectedTokens,null);return n===null||r===null?null:r/n*100}function aA(e){let t=rA(e);return t===null?``:`${Math.round(t)}% of ${zk(e?.max)} tokens, the largest completed block seen`}function oA(e,t){let n=iA(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 sA=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function cA(e){let t=sA.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=Uk(e.tokens,n)??0,r=zk(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${Bk(t)}`}})}var lA=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`}),uA=`Sessions spawned by Glimmervoid; terminal sessions count as other`,dA=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function fA(e){let t=H(e,``);return t?lA[t]||t:lA.other}function pA(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function mA(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function hA(e){return pA(e).some(e=>mA(e.lane))}var gA=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function _A(e,t,n){let r=hj(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function vA(e,t,n,r){if(!Array.isArray(t))return null;let i=t.filter(e=>e&&typeof e.lane==`string`),a=i.reduce((e,t)=>e+U(t.costUSD,0),0),o=i.reduce((e,t)=>e+U(t.tokens,0),0),s=i.filter(e=>mA(e.lane)).map(e=>({lane:String(e.lane),label:fA(e.lane),tokens:U(e.tokens,0),costUSD:U(e.costUSD,0)})),c=s.reduce((e,t)=>e+t.costUSD,0),l=s.reduce((e,t)=>e+t.tokens,0),u=a>0?Uk(c,a):Uk(l,o),d=_A(n,e,r),f=u===null||d===null?null:u/100*d;return{key:e,label:gA[e],tokens:l,costUSD:c,sharePct:u,planPct:f,lanes:s}}function yA(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:mj.map(e=>vA(e.key,r[e.key],t,n)).filter(e=>e!==null)}function bA(e){return e.planPct===null?``:`about ${Bk(e.planPct)} of plan`}function xA(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?Rk(e.costUSD):zk(e.tokens)}`).join(`, `)}var SA=`team-review`;function CA(e){if(!Array.isArray(e?.byLane))return null;let t=pA(e).find(e=>e.lane===SA),n=U(t?.costUSD,0),r=U(t?.tokens,0),i=Vk(e?.totals),a=Uk(i===`costUSD`?n:r,e?.totals?.[i]),o=a===null?``:`${Bk(a)} of range ${i===`costUSD`?`cost`:`tokens`}`,s=[Rk(n),o,wA(t?.sessions)].filter(Boolean).join(`, `);return{label:fA(SA),value:zk(r),sub:s}}function wA(e){let t=U(e,null);return t===null||t<=0?``:`${Lk(t)} ${t===1?`session`:`sessions`}`}function TA(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function EA(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function DA(e){return TA(e)!==null||EA(e)!==null}function OA(e){let t=TA(e);if(!t)return null;let n=U(t.commands,0),r=n===1?`command`:`commands`;return{value:`${zk(U(t.savedTokens,0))} tokens`,sub:`${Bk(U(t.savingsPct,0))} avg across ${Lk(n)} ${r}`}}function kA(e){let t=EA(e);if(!t)return null;let n=zk(U(t.cacheReadTokens,0)),r=(Array.isArray(t.unpricedModels)?t.unpricedModels:[]).filter(e=>e),i=`${n} cache read tokens`;if(r.length===0)return{value:Rk(U(t.savedUSD,0)),sub:i};let a=r.length===1?`model`:`models`;return{value:Rk(U(t.savedUSD,0)),sub:`${i}, a floor (${r.length} unpriced ${a})`}}function AA(e){let t=e?.budget?.rows;return Array.isArray(t)?t.filter(e=>e&&U(e.budgetUsd,null)!==null):[]}function jA(e){return e===`monthly`?`this month`:`today`}function MA(e){return`${Rk(U(e?.spentUsd,0))} of ${Rk(U(e?.budgetUsd,0))}`}function NA(e){let t=U(e?.pct,null);return t===null?0:t}function PA(e){return`${jA(e?.scope)} spend against budget`}var FA=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function IA(e){let t=Mk.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function LA(e){let t=IA(e);if(!t)return``;let n=(t.getDay()+6)%7;return t.setDate(t.getDate()-n),Vl(t)}function RA(e){let t=Mk.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function zA(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 BA(e,t){e.tokens+=U(t?.tokens,0),e.costUSD+=U(t?.costUSD,0),e.input+=U(t?.input,0),e.output+=U(t?.output,0),e.cacheCreate+=U(t?.cacheCreate,0),e.cacheRead+=U(t?.cacheRead,0),e.days+=1,e.sources.add(t?.source===`history`?`history`:`live`);let n=Array.isArray(t?.vendors)?t.vendors:[];for(let t of n)e.vendorSet.add(t);let r=t?.models||[];for(let t of r){t?.vendor&&e.vendorSet.add(t.vendor);let n=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+=U(t?.tokens,0),r.costUSD+=U(t?.costUSD,0),r.input+=U(t?.input,0),r.output+=U(t?.output,0),r.cacheCreate+=U(t?.cacheCreate,0),r.cacheRead+=U(t?.cacheRead,0),e.modelByName.set(n,r)}}function VA(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 HA(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)||zA(r);BA(i,e),n.set(r,i)}return Array.from(n.values()).map(VA)}function UA(e){return HA(e,LA)}function WA(e){return HA(e,RA)}function GA(e,t){return t===`week`?UA(e):t===`month`?WA(e):Array.isArray(e)?[...e]:[]}var KA=/^(\d{4})-(\d{2})$/;function qA(e,t){if(t===`month`){let t=KA.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=jk[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=Wk(e);return t===`-`?t:`week of ${t}`}return Wk(e)}function JA(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var YA=Object.freeze([.05,.25,.5,.75]),XA=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function ZA(e,t){let n=U(e,0),r=U(t,0);if(n<=0||r<=0)return 0;let i=n/r,a=1;for(let e=0;e<YA.length;e+=1)i>=YA[e]&&(a=e+1);return a}function QA(e,{weeks:t=16,today:n=new Date}={}){let r=(Array.isArray(e)?e:[]).filter(e=>Mk.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`&&Mk.test(n)?n:Vl(o),c=IA(LA(s));if(!c)return{cells:[],max:0,weeks:0};let l=new Date(c.getFullYear(),c.getMonth(),c.getDate()-(t-1)*7,12),u=Vl(l),d=[],f=0,p=null;for(let e of r){let t=String(e.day);(p===null||t<p)&&(p=t),!(t<u||t>s)&&(f=Math.max(f,U(e.tokens,0)))}for(let e=0;e<t;e+=1)for(let t=0;t<7;t+=1){let n=Vl(new Date(l.getFullYear(),l.getMonth(),l.getDate()+e*7+t,12)),r=i.get(n)||null,a=n>s,o=p!==null&&n<p;d.push({day:n,week:e,weekday:t,tokens:U(r?.tokens,0),costUSD:U(r?.costUSD,0),source:r?.source===`history`?`history`:r?`live`:null,noData:a||o||!r&&p===null,tone:ZA(r?.tokens,f)})}return{cells:d,max:f,weeks:t}}function $A(e){let t=Wk(e?.day);if(e?.noData)return`${t}: no data`;let n=U(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${zk(n)} tokens, ${Rk(U(e?.costUSD,0))}`}function ej(e){if(!e)return``;let t=U(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${aj(e.ratio)} the ${n} average: ${Rk(e.todayUsd)} against ${Rk(e.baselineUsd)}.`}function tj(e){return e?`This block is burning ${aj(e.ratio)} the usual rate: ${zk(e.current)} tokens per minute against ${zk(e.baseline)}.`:``}function nj(e){return[ej(e?.daily),tj(e?.burn)].filter(Boolean).join(` `)}function rj(e){return e?.daily||e?.burn?`warn`:`ok`}function ij(e){return!!(e?.daily||e?.burn)}function aj(e){let t=U(e,null);return t===null?`-`:`${Ik(t.toFixed(1))}x`}var oj=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function sj(e){let t=H(e,``);return t?oj[t]||t:oj.claude}function cj(e,t){return uj(t)?sj(e?.vendor):``}function lj(e){let t=e?.byVendor;return!t||typeof t!=`object`?[]:Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`).sort((e,n)=>U(t[n]?.tokens,0)-U(t[e]?.tokens,0)).map(e=>({vendor:e,label:sj(e),tokens:U(t[e]?.tokens,0),costUSD:U(t[e]?.costUSD,0)}))}function uj(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 dj=`Claude only`;function fj(e){return uj(e)?dj:``}var pj=36e5,mj=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]);function hj(e,t){let n=e?.[t];if(!n||typeof n!=`object`)return null;let r=U(n.pct,null),i=U(n.resetsAtMs,null);return r===null&&i===null?null:{pct:r,resetsAtMs:i}}var gj=Object.freeze([{vendor:`claude`,label:`Claude Code`},{vendor:`codex`,label:`Codex`}]);function _j(e){return e?.vendor===`codex`?`codex`:`claude`}function vj(e,t){let n=`official, from ${gj.filter(({vendor:t})=>e.includes(t)).map(({label:e})=>e).join(` and `)}`,r=e.length===1&&e[0]===`claude`?fj(t):``;return r?`${n}, ${r}`:n}function yj(e){return mj.some(t=>hj(e,t.key)!==null)}function bj(e){return hj(e,`fiveHour`)?.pct??null}function xj(e){return e===`estimated`?`estimated from the largest completed block`:``}function Sj(e,t=null){let n=bj(t);if(n!==null)return tA(n);let r=tA(rA(e?.tokenLimit));return r===`ok`?tA(iA(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 AA(e)){let e=NA(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 Wl(n)}function wj(e){let t=U(e?.pct,null);return t===null?`-`:`${Bk(t)} used`}function Tj(e,t=Date.now()){let n=U(e,null);if(n===null||n<=0)return``;let r=(n-t)/6e4;return r<=0?`resetting now`:`resets in ${Xk(r)}`}function Ej(e,t=Date.now()){let n=U(e,null);return n===null||n<=0?``:`${Math.max(0,Math.round((t-n)/6e4))}m old`}function Dj(e,t=Date.now()){let n=U(e,null);return n===null||n<=0||t-n>pj}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=H(t,``);return e?`Prices fetched from the public model price table, ${e}.`:`Prices fetched from the public model price table.`}if(n===`cache`){let e=H(t,``);return e?`Prices from the cached public model price table, ${e}.`:`Prices from the cached public model price table.`}return n===`snapshot`?`Prices from the price table bundled with this Glimmervoid build.`:n===`unavailable`?`Model prices could not be loaded, so every cost below counts as zero.`:`Pricing source not reported yet.`}function 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(`${Lk(n)} transcript ${n===1?`directory`:`directories`}`),Number.isFinite(e.files)&&t.push(`${Lk(e.files)} files`),Number.isFinite(e.entries)&&t.push(`${Lk(e.entries)} entries`),Number.isFinite(e.lastScanMs)&&t.push(`last pass ${Lk(e.lastScanMs)}ms`),t.length===0)return``;let r=`Scanned ${t.join(`, `)}.`;return e.partial===!0?`${r} Some files were skipped this pass and will be re-read on the next one.`:r}function Pj(e){return H(e?.error,``)}function Fj(e){let t=H(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=H(e?.label,``);return zj(e)&&t?t:Rj(e?.project)||t||`unknown project`}function Vj(e){return H(typeof e==`string`?e:e?.model,`unknown model`)}function Hj(e){return String(e?.day??``)}function Uj(e,t,n){if(!Nk.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 Pk.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?``:`${Lk(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=U(e?.officialCostUSD,null);if(t!==null&&t>0)return{costUSD:t,source:`official`};let n=U(e?.costUSD,null);return n!==null&&n>0?{costUSD:n,source:`estimated`}:{costUSD:null,source:null}}function aM(e){let t=Number(e?.tokens);if(!Number.isFinite(t)||t<=0)return``;let{costUSD:n}=iM(e);return n===null?zk(t):`${zk(t)} ${Rk(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===k.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=Yn.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?Ll(Date.now()-e,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function fM(e,t,n){let r=A(`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">${T_(e.title||e.id)}</span><span class="resume-item-meta">${T_(i)}${e.id===t?` · current`:``}</span>`,r.addEventListener(`click`,()=>n(e.id)),r}function kee(e,t={}){let n=(t.currentState||``)===uM,{overlay:r,dialog:i,close:a,actions:o,btnCancel:s}=Lf({title:`Resume a conversation`,dialogClass:`dialog resume-dialog`}),c=A(`p`,`dialog-message`,`Pick a Claude conversation from this repo (any worktree) to continue in this card.`),l=A(`div`,`resume-list`);l.setAttribute(`role`,`listbox`),l.setAttribute(`aria-label`,`Resumable conversations`),l.append(A(`div`,`resume-empty`,`Loading conversations...`));let u=A(`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=lf(`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 ff(`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=N.get(e);t&&o&&(n?j_(o,{type:`start-session`,id:e}):A_(o).show(`ok`,`Conversation will resume on this session's next restart.`))}s.addEventListener(`click`,a),u.addEventListener(`click`,()=>{f(null)}),requestAnimationFrame(()=>s.focus()),K(`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(A(`div`,`resume-empty`,`Could not list conversations: ${e.error}`));return}if(t.length===0){l.append(A(`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(A(`div`,`resume-empty`,`Could not list conversations: ${df(e,q)}`)))})}var pM=e=>e==null?``:String(e),Aee=e=>Yn.includes(e),jee=e=>Xn.includes(e),mM=!1;function hM(e){return mM&&xy(e.agent)&&e.card.dataset.ephemeral===void 0}function Mee(e){return hM(e)&&e.isConversationViewOn&&e.isBorrowed}function Nee(e){e.btnConversationView.classList.toggle(`visible`,hM(e)),e.btnConversationView.setAttribute(`aria-checked`,String(e.isConversationViewOn))}function Pee(e){mM=e;for(let t of N.values())!e&&t.face===`conversation`&&t._showTerminalFace?.(),vM(t)}function gM(e){let t=P(e);return!t||!Mee(t)?!1:(t.face=`conversation`,t.card.dataset.face=`conversation`,t.termWrap.hidden=!0,t.planFace.hide(),t.conversationFace.show(Sr(e)),vM(t),!0)}function _M(e,t){let n=P(e);if(!n)return;let r=n.isConversationViewOn;n.hasConversationBridge=t.hasConversationBridge,n.conversationApproval=t.conversationApproval,n.isConversationViewOn=t.isConversationViewOn,vM(n),n.conversationFace.refresh(),r!==t.isConversationViewOn&&(t.isConversationViewOn?gM(e):n.face===`conversation`&&n._showTerminalFace?.())}function Fee(e){return P(e.id)?.conversationFace.applyTraceResponse(e)===!0}function Iee(e){P(e.id)?.conversationFace.applyTraceError(e)}function Lee(e){P(e)?.conversationFace.applyTraceChanged(Sr(e))}function vM(e){Nee(e);let t=e.currentState,n=Aee(t)||jee(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`,I_()),e.btnPlan.classList.toggle(`visible`,Lg(e)!==`hidden`),e.btnRemove.classList.add(`visible`)}function yM(e){e.sessionMenu.classList.remove(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`false`)}function Ree(e,t){Q_(e.taskTitleEl,()=>tv(e,t)),e.nameEl.addEventListener(`dblclick`,n=>{n.preventDefault(),iv(e,t)}),e.nameEl.addEventListener(`click`,()=>{rv(e.nameEl)||Wv(t)}),e.nameEl.addEventListener(`keydown`,n=>{n.target===e.nameEl&&(n.key===`F2`||n.key===`Enter`)&&(n.preventDefault(),iv(e,t))});function n(n){yM(e),e.btnSessionMenu.focus(),lM(n,t,{readState:()=>e.currentState,send:t=>{j_(e,t)},confirm:Rf})}e.btnRestart.addEventListener(`click`,()=>n(`restart`)),e.btnRestartFresh.addEventListener(`click`,()=>n(`restart-fresh`)),e.btnResume.addEventListener(`click`,()=>{yM(e),kee(t,{currentState:e.currentState})}),e.btnWorkspaceRepos.addEventListener(`click`,()=>{yM(e),Wf(t)}),e.btnTrace.addEventListener(`click`,()=>{yM(e),xk(t)}),e.btnDocs.addEventListener(`click`,()=>{yM(e),qh(t)}),e.btnConversationView.addEventListener(`click`,()=>{yM(e),j_(e,{type:`set-session-conversation-view`,id:t,isOn:!e.isConversationViewOn})}),e.btnGuardrails.addEventListener(`click`,()=>{yM(e),e.btnSessionMenu.focus();let n=n=>()=>{j_(e,{type:`set-session-guardrails`,id:t,isOn:n})};e.card.dataset.guarded===void 0?Rf({title:`Restore guardrails`,message:`This session restarts with guardrails on, interrupting any turn in progress.`,confirmLabel:`Restore guardrails`,danger:!1,onConfirm:n(!0)}):Rf({title:`Release guardrails`,message:`This session restarts without guardrails, interrupting any turn in progress. It can then read, write and reach anything your account can, including credentials and Glimmervoid itself.`,confirmLabel:`Release guardrails`,danger:!0,onConfirm:n(!1)})}),e.btnPlan.addEventListener(`click`,()=>{let n=Lg(e);n!==`hidden`&&(n===`face`?EM(t):location.hash=Up(t))}),e.btnRemove.addEventListener(`click`,()=>{yM(e),ny(t)}),e.btnSessionMenu.addEventListener(`click`,t=>{t.stopPropagation();for(let[,t]of N)t!==e&&yM(t);let n=e.sessionMenu.classList.toggle(`open`);e.btnSessionMenu.setAttribute(`aria-expanded`,String(n))});function r(t){if(D_(t)){t.preventDefault(),t.stopPropagation();for(let[,t]of N)t!==e&&yM(t);e.sessionMenu.classList.add(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`true`),O_([...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(),yM(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&&yM(e)},{signal:e.abortController.signal}),e.btnDebug.addEventListener(`click`,n=>{n.stopPropagation(),dv(e,t)}),document.addEventListener(`click`,t=>{let n=t.target instanceof Node?t.target:null;e.debugOpen&&!e.card.contains(n)&&fv(e)},{signal:e.abortController.signal})}function bM(e,t,n){let r=P(e);if(r){r.taskTitle=typeof t==`string`?t:null,r.taskTitleIsCustom=n===!0;for(let e of[r.taskTitleEl,r.titleTargetEl])e&&ev(e,r.taskTitle)}}function xM(e){return typeof e==`string`&&N.has(e)}function zee(){return N.size}function Bee(e){let t=e||{};t.cursorBlink!=null&&WS(t.cursorBlink),t.debugMode!=null&&(P_(t.debugMode),ww(t.debugMode));for(let[,e]of N)e.term&&t.cursorBlink!=null&&(e.term.options.cursorBlink=t.cursorBlink)}function Vee(){ib(N.values(),ob())}function SM(){let e=o_(i_([...N.values()].map(e=>({state:e.currentState,unseenOutcome:e.unseenOutcome}))));document.title=e>0?`(${e}) Glimmervoid`:`Glimmervoid`}function CM(e,t,n,r={}){if(!Cr)return;let i=Sr(e),a=pM(n)||k.DORMANT,o=Y_(i,pM(t),a,r),s=a===k.DORMANT;Cr.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(),vM(c),WC(c,i)}function u(){gM(i)||l()}let d=new AbortController,f=mT({signal:d.signal,requestPlan:(e,t,n)=>G({type:`session-plan`,id:e,agentId:t,revision:n}),requestDraft:(e,t)=>G({type:`session-plan`,id:e,agentId:t,draft:!0}),showTerminal:u,sendDecision:(e,t)=>G({type:`plan-decision`,id:e,...t}),reportProblem:e=>$M(i,e)}),p=ow({signal:d.signal,sendControl:e=>G(e),showTerminal:l});return c={term:null,fitAddon:null,webglAddon:null,needsWebGLReload:!1,webglAttachedWithoutLayout:!1,dataWs:null,card:o.card,nameEl:o.nameEl,taskTitleEl:o.taskTitleEl,taskTitle:r.taskTitle??null,taskTitleIsCustom:r.taskTitleIsCustom??!1,path:pM(r.path),ownerId:r.ownerId??null,stateSince:typeof r.stateSince==`number`&&Number.isFinite(r.stateSince)?r.stateSince:Date.now(),sessionMenu:o.sessionMenu,termWrap:o.termWrap,btnDebug:o.btnDebug,btnRestart:o.btnRestart,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=()=>WC(c,i),c._showTerminalFace=l,c._showPreferredFace=()=>{wM(c)===`plan`?EM(i):gM(i)||l()},c._setBorrowed=e=>{c.isBorrowed=e,vM(c)},o.card.append(f.el,p.el),N.set(i,c),Ree(c,i),vM(c),c.btnDocs.classList.toggle(`visible`,Ph(i)),a===k.RUNNING&&op(c,!0),s||(LC(o.termWrap,c),zC(c,i)),SM(),c}function wM(e){let t=e.planReviewState.reviews.some(e=>e.state===`open`),n=e.planReviewState.reviews.some(zw);return Ig({hasPlan:e.hasPlan,pendingPromptKind:e.pendingPromptKind,hasOpenReview:t,hasApprovedReview:n})}function TM(e){let t=P(e);return!t?.isBorrowed||wM(t)!==`plan`?!1:EM(e)}function EM(e){let t=P(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(Sr(e)),vM(t),!0)}function DM(e,t){let n=P(e);n&&(n.hasPlan=t===!0,vM(n),TM(e))}function Hee(e){let t=P(e.id);t&&(t.planReviewState=nT(t.planReviewState,e),t.hasPlan=e.hasPlan,t.planFace.update({state:t.planReviewState}),vM(t),TM(e.id))}function OM(e){let t=P(e.id);t&&t.planFace.update({draft:e})}function kM(e){let t=P(e.id);t&&(t.planReviewState={reviews:e.reviews},t.hasPlan=!0,t.planFace.update({response:e}),vM(t))}function AM(e){if(e.type!==`error`&&e.type!==`session-error`||e.scope!==`plan`&&e.scope!==`plan-decision`)return!1;let t=P(e.id);return t?e.scope===`plan`?(t.planFace.update({requestFailed:!0}),!0):(t.planFace.update({decisionRefused:!0,refusalText:e.message}),!0):!1}function jM(e){for(let[,t]of N)t.planFace.update({isConnected:e})}function MM(e,t){let n=P(e);n&&(n.effectiveBase=typeof t==`string`?t:void 0)}function NM(e,t){let n=P(e);if(!n)return;n.agent=typeof t==`string`?t:null,vM(n);let r=yf(t);LM(n,`.agent-badge`,`agent`,{on:r!==``,value:r,text:r})}function PM(e,t){let n=P(e);n&&(t?n.card.dataset.worktree=``:delete n.card.dataset.worktree)}function FM(e,t,n){let r=P(e);r&&(IM(r.card,`guarded`,t),IM(r.card,`guardrailsReleased`,n),X_(r.btnGuardrails,r.card))}function IM(e,t,n){n?e.dataset[t]=``:delete e.dataset[t]}function LM(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 RM(e,t,n=!1){let r=P(e);r&&(r.activeAgents=Math.max(0,Number(t)||0),r.awaitingBackgroundTasks=dr(r.currentState,n===!0),r.card.toggleAttribute(`data-monitoring`,r.awaitingBackgroundTasks))}function zM(e,t){let n=P(e);if(!n)return;let r=aM(t);LM(n,`.usage-badge`,`usage`,{on:!!r,text:r||``,title:r?oM(t):void 0})}function BM(e,t,n){return t?{on:!0,value:`compacting`,title:`Context compaction in progress`,text:`compacting`}:e?{on:!0,value:pM(e),title:`Waiting on a permission or input prompt`,text:Fg(pM(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 VM(e,t,n=!1,r=!1){let i=P(e);i&&(i.pendingPromptKind=typeof t==`string`?t:null,LM(i,`.prompt-badge`,`prompt`,BM(t,n,r)),i.conversationFace.refresh(),!TM(e)&&(typeof t!=`string`||t===``)&&i.face===`terminal`&&gM(e))}function HM(e,t){let n=P(e);n&&(n.unseenOutcome=t??null)}function UM(e){return e?`sleeping until ~${Hl(new Date(e))}`:`scheduled`}function WM(e,t){let n=P(e);n&&LM(n,`.wakeup-badge`,`wakeup`,{on:!!t,value:t?.kind||`wakeup`,text:UM(t?.at),title:t?.reason?`Scheduled revival: ${t.reason}`:`Scheduled revival pending`})}function GM(e,t){let n=P(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`;LM(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 KM(e,t){t===`pending-review`||t===`parked`||t===`merging`?e.dataset.merge=t:delete e.dataset.merge}function qM(e,t,n=null){let r=P(e),i=pM(t)||`none`;r&&KM(r.card,i),NE(Sr(e),i,pM(n)||null)}function JM(e,t,n=null){let r=P(e),i=pM(t)||`none`;r&&KM(r.card,i),FE(Sr(e),i,pM(n)||null)}function YM(e,t){IE(Sr(e),t)}function XM(e,t){let n=P(e);if(!n)return;let r=pM(t);n.card.dataset.session=r,n.nameEl.textContent=r}function ZM(e){let t=P(e);t&&(fv(t),N.delete(Sr(e)),fT(Sr(e)),t.resizeObserver&&t.resizeObserver.disconnect(),t.abortController&&t.abortController.abort(),FC(t,Sr(e)),PS(t),t.term&&t.term.dispose(),t.term=null,t.fitAddon=null,t.card&&t.card.remove(),SM())}function QM(e,t,n){if(!t||!e.term)return;let r=n===k.DONE?`Session complete`:`Session failed`,i=n===k.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 $M(e,t){let n=P(e);n?A_(n).show(`error`,t):mf(t)}function eN(e,t){let n=P(e);if(!n)return;let r=n.card.querySelector(`:scope > .session-failure-reason`);if(!(n.currentState===k.FAILED&&t)){r?.remove();return}let i=r??A(`p`,`session-failure-reason`);i.setAttribute(`role`,`status`),i.textContent=t,r||n.termWrap.before(i)}function tN(e,t){e.term&&(t===k.DONE||t===k.FAILED)&&(e.term.clear(),e.term.reset())}function nN(e){let t=N.get(e);t&&Zg({state:t.currentState,unseenOutcome:t.unseenOutcome})&&document.visibilityState===`visible`&&document.hasFocus()&&G({type:`dismiss`,id:e,expectedState:t.currentState})}function rN(e,t,n){let r=document.activeElement;return Vv({previousState:t,nextState:n,isPhoneLayout:Xy(),isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),isActiveViewer:e._isActiveViewer?.()===!0,hasFocusInsideTerminal:r instanceof Node&&e.termWrap.contains(r)})}function iN(e,t,n,r=``){let i=P(e);if(!i)return;let a=pM(t),o=i.currentState;i.currentState=a,a!==k.RUNNING&&(i.awaitingBackgroundTasks=!1),i.conversationFace.refresh(),a!==o&&(i.stateSince=typeof n==`number`&&Number.isFinite(n)?n:Date.now(),op(i,a===k.RUNNING)),o===k.DORMANT&&a!==k.DORMANT&&HC(i,Sr(e)),zg({state:a})===`resting`&&rm(Sr(e)),i.card.dataset.state=a,i.card.toggleAttribute(`data-monitoring`,dr(a,i.awaitingBackgroundTasks)),vM(i),(a===k.WAITING&&o!==k.WAITING||a===k.COMPLETE&&o!==k.COMPLETE)&&!iy(r)&&cc()&&kb(uc()),rN(i,o,a)&&G({type:`dismiss`,id:Sr(e),expectedState:k.COMPLETE});let s=a===k.DONE||a===k.FAILED,c=o!==k.DONE&&o!==k.FAILED&&o!==k.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})})}),cc()&&kb(uc())),(a===k.DONE||a===k.FAILED)&&QM(i,c,a),a===k.INITIALIZING&&tN(i,o),SM()}var aN=`(no path)`;function oN(e){if(!e)return aN;let t=String(e).replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return(n===-1?t:t.slice(n+1))||`(no path)`}function sN(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):aN,a=i.get(r);a||(a={key:r,label:r===`(no path)`?aN:oN(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:oN(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 cN(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 lN({onAdd:e,onForget:t}){let n=A(`div`,`session-group-header`),r=A(`span`,`session-group-label`),i=A(`span`,`session-group-count`),a=A(`span`,`session-group-rule`);a.setAttribute(`aria-hidden`,`true`);let o=A(`button`,`session-group-add`,`+`);o.type=`button`,o.addEventListener(`click`,()=>e(n.dataset.path,n.dataset.label));let s=A(`button`,`session-group-forget`);return s.type=`button`,s.append(Zd(Kd)),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 uN(e,t,n){let{header:r,label:i,count:a,addButton:o,forgetButton:s}=e,c=t.key===aN,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 dN={waitingCount:0,finishedCount:0,failedCount:0},fN={failed:$n[k.FAILED],waiting:$n[k.WAITING],finished:$n[k.COMPLETE]},pN={failed:`failed`,waiting:`needs you`,finished:`finished`},mN=[`NI.`,`THIS QUEUE IS DECEASED`,`AND NOW, NOTHING AT ALL`,`TOUCH GRASS, BRIEFLY`,`GO STRETCH`,`THE AGENTS ARE COPING`,`MORALE IS ADEQUATE`,`REQUIESCAT`,`STANDARDS ARE BEING MET`,`THE AGENTS WANT SPACE`,`NO CAUSE FOR ALARM`,`KINDLY GO AWAY`,`THEY COPE WITHOUT YOU`,`PRESS HARDER, PERHAPS`,`OH, WELL DONE`,`THAT DID NOTHING. AGAIN.`,`WELL. YOU TRIED.`,`SUBJECT PRESSED BUTTON`,`THE BUTTON WORKS. YOU?`,`WE HAVE NO PROBLEMS`,`THE LAWYERS SAY RELAX`,`BRING A TOWEL`],hN=2500,gN=`cubic-bezier(0.16, 1, 0.3, 1)`,_N=`cubic-bezier(0.5, 0, 0.2, 1)`,vN=260,yN=200,bN=200,xN=300,SN=28,CN=360,wN=420,TN=200,EN=3,DN=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),ON=new WeakMap;function kN(e){let t=ON.get(e);if(!t)throw Error(`attention banner was not built by buildAttentionBanner`);return t}function AN(e){return!document.hidden&&typeof e.animate==`function`&&e.getClientRects().length>0}function jN(){return DN?.matches??!1}function MN(e){return e.map(e=>({easing:gN,...e}))}function NN(e,t){let n=A(`div`,`attention-banner`);n.setAttribute(`role`,`status`),n.style.setProperty(`--attention-head-tile-px`,`${n_.headTile}px`),n.style.setProperty(`--attention-tile-px`,`${n_.tile}px`),n.style.setProperty(`--attention-tile-gap-px`,`${n_.tileGap}px`),n.style.setProperty(`--attention-overflow-px`,`${n_.overflowSlot}px`);let r=A(`span`,`attention-banner-chips`),i=A(`span`,`attention-tile-overflow`);i.setAttribute(`aria-hidden`,`true`),i.hidden=!0,r.append(i);let a=A(`span`,`attention-banner-line`);a.setAttribute(`aria-hidden`,`true`);let o=A(`div`,`attention-banner-status`);o.append(r,A(`span`,`attention-banner-count`),a);let s=A(`button`,`attention-banner-jump-row`);return s.type=`button`,s.append(A(`span`,`attention-banner-jump-caption`,`Next session`)),t&&(t.classList.add(`attention-banner-jump`),s.append(t)),n.addEventListener(`click`,()=>e.onJump()),n.append(o,s),ON.set(n,{hooks:e,tiles:[],tileById:new Map,headId:null,flyingIds:new Set,tetheredId:null,tetheredRow:null,lastAllClearLine:null,allClearLineTimer:null,pressAnimations:[]}),typeof ResizeObserver==`function`&&new ResizeObserver(()=>FN(n)).observe(r),PN(n,dN,[]),n}function PN(e,t,n){let r=kN(e);r.tiles=n,M(e,`.attention-banner-count`).textContent=s_(t);let i=n.length>0;e.toggleAttribute(`data-empty`,!i),e.toggleAttribute(`data-jumpable`,i),i&&ZN(e,r),FN(e)}function FN(e){let t=kN(e),n=M(e,`.attention-banner-chips`),r=M(n,`.attention-tile-overflow`),i=AN(e),a=t.tiles.slice(0,r_(n.clientWidth,t.tiles.length)),o=new Set(a.map(({id:e})=>e)),s=new Map;if(i)for(let[e,n]of t.tileById)s.set(e,n.getBoundingClientRect().left);let c=[...t.tileById].filter(([e])=>!o.has(e)),l=c.map(([,e])=>({left:e.offsetLeft,top:e.offsetTop}));c.forEach(([e,n],r)=>{t.tileById.delete(e),t.flyingIds.has(e)||!i?n.remove():zN(n,l[r])});let u=t.headId,d=[],f=null;a.forEach((i,a)=>{let o=t.tileById.get(i.id),s=o??LN(e,i.id);o||(t.tileById.set(i.id,s),d.push(s)),RN(s,i,a===0),(s.parentElement!==n||IN(s)!==f)&&n.insertBefore(s,r),f=s});let p=t.tiles.length-a.length;r.hidden=p===0,r.textContent=`+${p}`,r.title=`${p} more after these`,t.headId=a[0]?.id??null;let m=t.tiles[0]?.kind;if(m&&(e.dataset.headKind=m),m||delete e.dataset.headKind,t.tetheredId&&!o.has(t.tetheredId)&&UN(e,null),i){for(let e of d)BN(e);a.forEach(({id:e},n)=>{let r=t.tileById.get(e),i=s.get(e);if(!r||i===void 0)return;let a=i-r.getBoundingClientRect().left;e===t.headId&&e!==u?HN(r,a):a!==0&&VN(r,a,n)})}}function IN(e){let t=e.previousElementSibling;for(;t?.hasAttribute(`data-leaving`);)t=t.previousElementSibling;return t}function LN(e,t){let n=A(`span`,`attention-tile`);n.setAttribute(`role`,`img`),n.dataset.id=t;let r=A(`span`,`attention-tile-icon`);return r.setAttribute(`aria-hidden`,`true`),n.append(r),n.addEventListener(`pointerenter`,()=>UN(e,t)),n.addEventListener(`pointerleave`,()=>UN(e,null)),n}function RN(e,{kind:t,name:n},r){e.dataset.kind=t,e.toggleAttribute(`data-head`,r);let i=`${n}, ${pN[t]}`;e.title=i,e.setAttribute(`aria-label`,i),ef(M(e,`.attention-tile-icon`),fN[t])}function zN(e,t){e.toggleAttribute(`data-leaving`,!0),e.style.left=`${t.left}px`,e.style.top=`${t.top}px`;let n=jN()?[{opacity:1},{opacity:0}]:MN([{transform:`none`,opacity:1},{transform:`scale(0.6)`,opacity:0}]),r=e.animate(n,{duration:bN,fill:`forwards`});r.onfinish=()=>e.remove(),r.oncancel=()=>e.remove()}function BN(e){let t=jN()?[{opacity:0},{opacity:1}]:MN([{transform:`scale(0.6)`,opacity:0},{transform:`none`,opacity:1}]);e.animate(t,{duration:yN})}function VN(e,t,n){jN()||e.animate(MN([{transform:`translateX(${t}px)`},{transform:`none`}]),{duration:xN,delay:n*SN,fill:`backwards`})}function HN(e,t){jN()?e.animate([{opacity:.35},{opacity:1}],{duration:CN,easing:gN}):e.animate(MN([{transform:`translateX(${t}px) scale(0.8)`,filter:`brightness(1.8)`},{transform:`scale(1.1)`,offset:.6},{transform:`none`,filter:`none`}]),{duration:CN})}function UN(e,t){let n=kN(e),r=t?n.tileById.get(t):void 0,i=r&&t?t:null;if(i===n.tetheredId||(n.tetheredId&&n.tileById.get(n.tetheredId)?.toggleAttribute(`data-tethered`,!1),n.tetheredRow?.toggleAttribute(`data-tethered`,!1),n.tetheredRow?.style.removeProperty(`--tether`),n.tetheredId=i,n.tetheredRow=null,!r||!i))return;r.toggleAttribute(`data-tethered`,!0);let a=n.hooks.rowFor(i);if(!a)return;let o=getComputedStyle(r).getPropertyValue(`--tile`).trim();o&&a.style.setProperty(`--tether`,o),a.toggleAttribute(`data-tethered`,!0),n.tetheredRow=a}function WN(e){return!e||e.getClientRects().length===0?null:e.getBoundingClientRect()}function GN(e,t,n){let r=kN(e);if(r.flyingIds.has(t))return;let i=r.tileById.get(t);if(!i||!AN(e)){n();return}UN(e,null),r.flyingIds.add(t);let a=r.hooks.rowFor(t),o=i.getBoundingClientRect(),s=WN(a?.querySelector(`.session-row-glyph`)??a),c=i.cloneNode(!0);if(!(c instanceof HTMLElement)){r.flyingIds.delete(t),n();return}c.classList.add(`attention-tile-ghost`),c.setAttribute(`aria-hidden`,`true`),c.removeAttribute(`aria-label`),c.tabIndex=-1,c.style.left=`${o.left}px`,c.style.top=`${o.top}px`,c.style.width=`${o.width}px`,c.style.height=`${o.height}px`,document.body.append(c),i.style.visibility=`hidden`;let l=c.animate(KN(o,s),qN(s)),u=()=>{c.remove(),r.flyingIds.delete(t),i.isConnected&&(i.style.visibility=``),n()};l.onfinish=u,l.oncancel=u}function KN(e,t){return!t||jN()?[{opacity:1},{opacity:0}]:[{transform:`none`,opacity:1},{transform:`translateY(-5px) scale(1.2)`,opacity:1,offset:.25},{transform:`translate(${t.left+t.width/2-(e.left+e.width/2)}px, ${t.top+t.height/2-(e.top+e.height/2)}px) scale(${Math.min(1,t.width/e.width)})`,opacity:.2}]}function qN(e){return!e||jN()?{duration:TN,fill:`forwards`}:{duration:wN,easing:_N,fill:`forwards`}}function JN(e){let t=kN(e);e.hasAttribute(`data-empty`)&&XN(e,t);for(let e of t.pressAnimations)e.cancel();if(t.pressAnimations=[],!AN(e))return;let n={duration:vN};if(t.pressAnimations.push(e.animate(MN([{opacity:0},{opacity:.07,offset:.3},{opacity:0}]),{...n,pseudoElement:`::after`})),!jN()){t.pressAnimations.push(e.animate(MN([{transform:`none`},{transform:`scale(0.97) translateY(1px)`,offset:.3},{transform:`none`}]),n));for(let r of e.querySelectorAll(`.attention-banner-jump .kbd`))t.pressAnimations.push(r.animate(MN([{transform:`none`},{transform:`translateY(${EN}px)`,offset:.3},{transform:`none`}]),n),r.animate(MN([{transform:`none`},{transform:`translateY(-${EN}px)`,offset:.3},{transform:`none`}]),{...n,pseudoElement:`::after`}))}}function YN(e){let t=mN.filter(t=>t!==e);return t[Math.floor(Math.random()*t.length)]??mN[0]}function XN(e,t){let n=YN(t.lastAllClearLine);t.lastAllClearLine=n,M(e,`.attention-banner-line`).textContent=n,e.toggleAttribute(`data-all-clear-line`,!0),t.allClearLineTimer!==null&&window.clearTimeout(t.allClearLineTimer),t.allClearLineTimer=window.setTimeout(()=>ZN(e,t),hN)}function ZN(e,t){t.allClearLineTimer!==null&&window.clearTimeout(t.allClearLineTimer),t.allClearLineTimer=null,e.toggleAttribute(`data-all-clear-line`,!1)}var QN=e=>e.ui.path,$N=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),eP=null,tP=null,nP=null,rP=null,iP=null,aP=null,oP=null,sP=!1,cP=!1,lP=new Map,uP=new Map,dP=new Map,fP=new Map,pP=null,mP=``,hP=[],gP=new Set;function _P(){return cN(yP(OP()),gP)}function vP(e){let t=pP;if(pP=e||null,t&&t!==pP){let e=uP.get(t);e&&(e.tabIndex=-1,e.setAttribute(`aria-selected`,`false`))}if(pP){let e=uP.get(pP);e&&(e.tabIndex=0,e.setAttribute(`aria-selected`,`true`))}}function yP(e){return sN(e,QN,Rv(e,QN))}function bP(e){let t=fP.get(e.key),n=dP.get(e.key);return(!t||!n)&&(t=lN({onAdd:Qv,onForget:e=>{zv(e),PP()}}),n=A(`div`,`focus-rail-list`),n.setAttribute(`role`,`listbox`),fP.set(e.key,t),dP.set(e.key,n)),uN(t,e,`rail`),n.setAttribute(`aria-label`,`${e.label} sessions`),{header:t.header,list:n}}function xP(){return sP}function SP(){return Or.snapshot().focusedSessionId}function CP({rail:e,center:t,resizer:n}){if(eP=e,nP=t,!eP||!nP)return;let r=eP,i=nP;EP(n),r.removeAttribute(`role`),r.removeAttribute(`aria-label`),r.setAttribute(`aria-keyshortcuts`,Js(lm)),tP=NN({onJump:RP,rowFor:e=>uP.get(e)},hm());let a=A(`details`,`rail-status-key`);a.append(A(`summary`,`rail-status-key-summary`,`Status key`),Nv()),r.append(tP,a),iP=A(`div`,`focus-empty`),iP.innerHTML=`<p class="focus-empty-title"></p><p class="focus-empty-desc"></p>`,aP=iP.querySelector(`.focus-empty-title`),oP=iP.querySelector(`.focus-empty-desc`),rP=A(`div`,`focus-card-slot`),i.append(iP,rP),r.addEventListener(`keydown`,DP)}var wP={minPx:180,maxPx:480},TP=16;function EP(e){e&&eP&&w_({resizer:e,column:eP,widthHost:eP,widthProperty:`--rail-width`,bounds:wP,keyStepPx:TP,getStoredWidth:Ec,setStoredWidth:Dc})}function DP(e){if(e.key===`Delete`||e.key===`Backspace`){let t=e.target instanceof HTMLElement?e.target:null,n=t?.dataset.id;if(!n||uP.get(n)!==t)return;e.preventDefault(),ny(n,lP.get(n));return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`||e.altKey||e.metaKey||e.ctrlKey||e.shiftKey)return;let t=Jg(_P(),pP,e.key===`ArrowDown`?1:-1);t!=null&&(e.preventDefault(),vP(t),uP.get(t)?.focus())}function OP(){return Hg(Yv(kP))}function kP(e){return e.nameEl?e.nameEl.textContent:e.card&&(e.card.dataset.session||e.card.dataset.id)||``}function AP(e){let{row:t,refs:n}=xv(`button`);t.type=`button`,t.dataset.id=e,t.setAttribute(`role`,`option`),t.addEventListener(`click`,()=>jP(e)),t.addEventListener(`pointerenter`,()=>{tP&&UN(tP,e)}),t.addEventListener(`pointerleave`,()=>{tP&&UN(tP,null)});let{item:r,removeButton:i}=Sv(t,()=>ny(e,lP.get(e)));return r.setAttribute(`role`,`presentation`),i.tabIndex=-1,Object.assign(t,{_refs:n,_row:r})}function jP(e){let t=Kv(e);t&&(WP(e),BP(t,e))}function MP(e,{id:t,ui:n,state:r,name:i}){let a=lP.get(t)||`none`;Dv(e,e._refs,{ui:n,state:r,name:i??``,mergeStatus:a===`none`?``:a}),e.classList.toggle(`focused`,t===SP());let o=t===pP;e.setAttribute(`aria-selected`,String(o)),e.tabIndex=o?0:-1}function NP(e,t){if(!sP)return;let n=e?.card?.dataset.id,r=n?uP.get(n):null;r&&(t===`flag`?r.dataset.activity=e._activity||``:rp(r._refs?.glyph))}ep(NP),dp(()=>{if(sP)for(let[e,t]of uP){let n=N.get(e);n&&(t._refs.elapsed.textContent=lp(n))}});function PP(){if(!sP)return;let e=eP;if(!e)return;let t=yP(OP()),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=uP.get(e);a||(a=AP(e),uP.set(e,a)),MP(a,r),i||t.appendChild(a._row)}t._lastOrderKey=r},i=new Set(t.order),a=t.groups.map(e=>e.key).join(`
|
|
165
|
+
`),o=a===mP;mP=a;for(let n of t.groups){let{header:t,list:i}=bP(n);o||e.append(t,i),r(n.rows,i)}for(let[e,t]of[...fP])i.has(e)||(t.header.remove(),dP.get(e)?.remove(),fP.delete(e),dP.delete(e));for(let[e,t]of uP)n.has(e)||(t._row.remove(),uP.delete(e),e===pP&&(pP=null));for(let e of[...lP.keys()])N.has(e)||lP.delete(e);let s=hP;hP=cN(t,gP);let c=SP();if(c&&!N.has(c)){Or.dispatch(`focusSession`,null),pP=null;let e=FP(s,c);if(e){let t=!document.activeElement||document.activeElement===document.body;WP(e),t&&BP(N.get(e),e);return}}GP();let l=SP();if(l){let e=N.get(l);e&&e.card.parentElement!==rP&&HP(e,l)}LP()}function FP(e,t){let n=e.filter(e=>e===t||N.has(e));return n.length<2?hP.find(e=>N.has(e))??null:Jg(n,t,n.indexOf(t)===n.length-1?-1:1)}function IP(){return t_(OP(),SP())}function LP(){if(!tP)return;let e=OP();PN(tP,i_(e),t_(e,SP()))}function RP(){if(!sP)return;tP&&JN(tP);let e=IP()[0]?.id;e&&zP(e)}function zP(e){if(!sP)return;uP.get(e)?.scrollIntoView({block:`nearest`}),tP&&GN(tP,e,()=>VP(e));let t=N.get(e);Kv(e),WP(e),BP(t,e)}function BP(e,t){e&&requestAnimationFrame(()=>requestAnimationFrame(()=>{sP&&SP()===t&&e.term?.focus()}))}function VP(e){if($N?.matches||document.hidden)return;let t=uP.get(e);t?.animate&&(t.animate([{transform:`scale(1)`},{transform:`scale(1.045)`,offset:.3},{transform:`scale(1)`}],{duration:360,easing:`cubic-bezier(0.22, 1, 0.36, 1)`}),t._row.animate([{boxShadow:`0 0 0 3px var(--accent)`},{boxShadow:`0 0 0 3px transparent`}],{duration:700,easing:`ease-out`}));let n=N.get(e)?.card;n?.animate&&n.animate([{opacity:.8},{opacity:1}],{duration:240,easing:`ease-out`})}function HP(e,t){rP&&(jr(e,t,rP,{className:`focus-centered`}),GC(e,t,!0))}function UP(){let e=SP();e&&(Ar()===e&&Mr(),Or.dispatch(`focusSession`,null))}function WP(e){sP&&N.has(e)&&(nN(e),e!==SP()&&(UP(),Or.dispatch(`focusSession`,e),pP=e,qv(e),PP()))}function GP(){if(!iP||!aP||!oP)return;let e=SP(),t=!!(e&&N.has(e)),n=N.size>0;iP.hidden=t,Pm(iP,!n),aP.hidden=!n,oP.hidden=!n,!t&&n&&(aP.textContent=`No session selected`,oP.textContent=`Select a session from the rail on the left to focus it here.`)}function KP(e,t){lP.set(Sr(e),typeof t==`string`&&t?t:`none`),sP&&PP()}function qP(e){sP&&N.has(e)&&WP(e)}function JP(e){return!sP||!N.has(e)?!1:(WP(e),EM(e))}function YP(e){if(!sP)return;let t=_P()[e-1];t&&jP(t)}function XP(e){if(!sP)return;let t=Jg(_P(),pP,e);t!=null&&(jP(t),uP.get(t)?.scrollIntoView({block:`nearest`}))}window.addEventListener(`focus`,()=>{let e=SP();sP&&e&&nN(e)});function ZP(){eP&&(sP=!0,UP(),pP=null,PP(),cP&&IP().length>0?RP():(cP&&tP&&JN(tP),$P()))}function QP(e){cP=!0;try{e()}finally{cP=!1}}function $P(){if(!sP||SP())return;let e=Jv();e&&WP(e)}function eF(){sP&&=(UP(),pP=null,!1)}var tF=`t-[0-9a-f]{8}`,nF=`No findings. Open a markdown file in a connected editor.`,rF=`No intent yet. The visions proposes one after its first pass.`,iF=`Unowned`,aF=RegExp(`^${tF}$`);function oF(){return{byProject:{},unowned:[]}}function sF(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`&&aF.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 cF(e){if(Array.isArray(e))return e.map(sF).filter(e=>e!==null);let t=sF(e);return t?[t]:[]}function lF(e){let t=e?.intent;if(!t||typeof t!=`object`)return oF();let n=t;if(!(Object.hasOwn(n,`byProject`)||Object.hasOwn(n,`unowned`)||Object.hasOwn(n,`global`)))return{byProject:{},unowned:cF(n)};let r=n.byProject&&typeof n.byProject==`object`?n.byProject:{},i=[];for(let[e,t]of Object.entries(r)){let n=cF(t);n.length!==0&&e&&i.push([e,n])}return{byProject:Object.fromEntries(i),unowned:cF(Object.hasOwn(n,`unowned`)?n.unowned:n.global)}}function uF(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 dF(e,t){let n=e||oF(),r=t?.intent;if(!r||typeof r!=`object`)return n;let i=r,a=uF(Array.isArray(i.threads)?cF(i.threads):cF(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 fF(e,t=null){let n=t&&typeof t.get==`function`?t.get(e):null;return typeof n==`string`&&n?n:e}function pF(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:_F(e,r)}))}function mF(e,t=null,n=Date.now()){let r=e||oF(),i=Object.entries(r.byProject||{}).filter(([e,t])=>e&&Array.isArray(t)&&t.length>0).map(([e,n])=>({projectId:e,label:fF(e,t),threads:n})).sort((e,t)=>e.label.localeCompare(t.label)).flatMap(({projectId:e,label:t,threads:r})=>pF(r,{key:e,label:t,now:n})),a=pF(Array.isArray(r.unowned)?r.unowned:[],{key:`unowned`,label:iF,now:n});return i.length+a.length>0?[...a,...i]:[{key:`unowned`,label:iF,text:rF,hasText:!1,active:!1,meta:``}]}function hF(e){return e?.text?`proposed by visions`:``}function gF(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:Ll(Number(t)-n,{rounding:`floor`,wording:`spelled`,suffix:` ago`,justNowBelowSeconds:60})}function _F(e,t=Date.now()){let n=hF(e);if(!n)return``;let r=typeof e?.id==`string`&&e.id?`thread ${e.id}, `:``,i=gF(e?.ts,t);return i?`${r}${n}, ${i}`:`${r}${n}`}function vF(e){let t=Number(e?.range?.start?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function yF(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function bF(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function xF(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 SF(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function CF(e){let t=SF(e);return t===1?`1 finding`:`${t} findings`}function wF(e){let t=SF(e);return t===1?`1 comment`:`${t} comments`}function TF(e){let t=SF(e?.findings?.length),n=SF(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(CF(t)),n>0&&i.push(wF(n)),i.length>0?i.join(`, `):CF(0)}function EF(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function DF(e){return(typeof e?.hand==`string`?e.hand.trim():``)||null}function OF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=DF(t);return i?(n.set(r,i),n):(n.delete(r),n)}function kF(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`,jF=`unseen`,MF=`
|
|
166
|
+
`;function NF(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 PF(e,t){return NF(JSON.stringify([e,...t]))}function FF(e,t){return PF(`finding`,[e,vF(t),String(t.code??``),String(t.message??``)])}function IF(e,t){return PF(`comment`,[e,VF(t),String(t.message??``)])}function LF(e){return PF(`fix`,[e.uri,QF(e),e.code,e.message,$F(e)])}function RF(e){return PF(`intent`,[e.key,e.text,e.active])}function zF(e,t,n,r=[],i=null){let a=[...n].map(([e,t])=>PF(`hand`,[e,t])).sort(),o=new Set;for(let r of[...e.keys(),...t.keys(),...n.keys()])o.add(PF(`document`,[r]));for(let[t,n]of e)for(let e of n)o.add(FF(t,e));for(let[e,n]of t)for(let t of n)o.add(IF(e,t));for(let e of r)o.add(LF(e));for(let e of mF(i,null,0))e.hasText&&o.add(RF(e));let s=[...o].sort();return{signature:[...a,...s].join(MF),handEntries:a,contentEntries:s}}function BF(e,t){let n=new Set(t.split(MF));return e.handEntries.some(e=>!n.has(e))?AF:e.contentEntries.some(e=>!n.has(e))?jF:null}function VF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<1?`L?`:`L${Math.floor(t)}`}function HF(e){return Array.isArray(e?.diagnostics)?e.diagnostics:[]}function UF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=HF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function WF(e){return Array.isArray(e?.comments)?e.comments:[]}function GF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=WF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function KF(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 qF(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 JF(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:xF(a)||a,hand:s,findings:[...c].sort((e,t)=>bF(e)-bF(t)||yF(e)-yF(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>YF(e.name,t.name)||YF(e.uri,t.uri)),r}function YF(e,t){return e<t?-1:+(e>t)}var XF=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`;function ZF(e){let t=SF(e);return t===1?`1 fix`:`${t} fixes`}function QF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function $F(e){return e?.applied===!0?`applied`:`refused`}function eI(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 tI(e){let t=typeof e?.uri==`string`?e.uri:``,n=Number(e?.ts);return eI(e?.fix,{uri:t,ts:Number.isFinite(n)?n:0})}function nI(e,t,{max:n=20}={}){let r=tI(t);return r?[r,...e].slice(0,Math.max(0,Math.floor(n))):[...e]}function rI(e,{max:t=20}={}){let n=Array.isArray(e?.fixes)?e.fixes:[],r=[];for(let e of n){let t=eI(e);t&&r.push(t)}return r.slice(0,Math.max(0,Math.floor(t)))}var iI=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,aI={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function oI(e){let t=typeof e==`string`?e:``;return aI[t]||t||`source`}function sI(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:Ll(Number(t)-n,Nl)}function cI(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 lI(e){let t=Array.isArray(e?.events)?e.events:[],n=[];for(let e of t){let t=cI(e);t&&n.push(t)}return n}function uI(e){let t=Number(e?.overflow);return!Number.isFinite(t)||t<=0?0:Math.floor(t)}function dI(e){let t=SF(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function fI(e,t){return[...e].sort((e,t)=>t.seq-e.seq).slice(0,Math.max(0,Math.floor(t)))}function pI(e,t,{max:n=100}={}){let r=lI(t);if(r.length===0)return fI(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 fI([...i.values()],n)}function mI(e,{max:t=100}={}){return fI(lI(e),t)}function hI(e){let t=SF(e);return t===1?`1 event`:`${t} events`}function gI(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 _I=new Map,vI=new Map,yI=new Map,bI=oF(),xI=new Map,SI=null,CI=null,wI=null,TI=null,EI=null,DI=[],OI=0,kI=null,AI=[],jI=null,MI=zF(_I,vI,yI,AI,bI),NI=Qc(),PI=Kl({getAck:()=>NI,setAck:e=>{NI=e,$c(e)},signature:()=>MI.signature,isLooking:()=>!_r(SI)});function FI(){let e=A(`section`,`visions-intent`);e.append(A(`h2`,`visions-intent-title`,`Intent`));let t=A(`div`,`visions-intent-list`);return e.append(t),wI={list:t},e}function II(e){let t=A(`div`,`visions-intent-item`),n=A(`div`,`visions-intent-head`);n.append(A(`span`,`visions-intent-scope`,e.label),A(`span`,`visions-intent-meta`,e.meta));let r=A(`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 LI(){wI&&wI.list.replaceChildren(...mF(bI,xI).map(II))}function RI(e){xI=e instanceof Map?e:new Map,LI()}function zI(e){let t=A(`section`,`visions-doc`),n=A(`div`,`visions-doc-head`),r=A(`h2`,`visions-doc-name`);if(r.textContent=e.name,r.title=e.uri,n.append(r,A(`span`,`visions-doc-count`,TF(e))),t.append(n),e.hand&&t.append(BI(e.hand)),e.findings.length>0){let n=A(`div`,`visions-findings`);for(let t of e.findings)n.append(HI(t));t.append(n)}if(e.comments.length>0){let n=A(`div`,`visions-comments`);for(let t of e.comments)n.append(VI(t));t.append(n)}return t}function BI(e){let t=A(`div`,`visions-hand`);return t.textContent=EF(e),t}function VI(e){let t=A(`div`,`visions-comment`),n=A(`div`,`visions-comment-head`);n.append(A(`span`,`visions-comment-chip`,`visions`)),n.append(A(`span`,`visions-comment-line`,VF(e))),t.append(n);let r=A(`p`,`visions-comment-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function HI(e){let t=A(`div`,`visions-finding`);t.append(A(`span`,`visions-finding-line`,vF(e)));let n=e?.code==null?``:String(e.code);n&&t.append(A(`span`,`visions-finding-code`,n));let r=A(`span`,`visions-finding-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function UI({force:e=!1}={}){if(!CI||!e&&_r(SI))return;CI.textContent=``;let t=JF(_I,vI,yI);if(t.length===0){let e=A(`p`,`visions-empty`,nF);if(EI===!1){let t=cm(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}CI.append(e)}else for(let e of t)CI.append(zI(e))}function WI(e){EI=e?.visions?.enabled===!0,UI()}function GI(){let e=A(`section`,`visions-activity`),t=A(`div`,`visions-activity-head`);t.append(A(`h2`,`visions-activity-title`,`Activity`));let n=A(`span`,`visions-activity-count`);t.append(n),e.append(t);let r=A(`div`,`visions-activity-list`);e.append(r);let i=A(`p`,`visions-activity-overflow`);return e.append(i),kI={count:n,list:r,overflow:i},e}function KI(e,t){let n=A(`div`,`visions-activity-row`);n.append(A(`span`,`visions-activity-source`,oI(e.source))),n.append(A(`span`,`visions-activity-age`,sI(e.ts,t))),n.append(A(`span`,`visions-activity-scope`,gI(e)));let r=A(`span`,`visions-activity-summary`);return r.textContent=e.summary,n.append(r),n}function qI({force:e=!1}={}){if(!kI||!e&&_r(SI))return;let{count:t,list:n,overflow:r}=kI;if(t.textContent=hI(DI.length),n.textContent=``,DI.length===0){n.append(A(`p`,`visions-empty`,iI)),r.textContent=``;return}let i=Date.now();for(let e of DI)n.append(KI(e,i));r.textContent=dI(OI)}function JI(){let e=A(`section`,`visions-fixes`),t=A(`div`,`visions-fixes-head`);t.append(A(`h2`,`visions-fixes-title`,`Fixes`));let n=A(`span`,`visions-fixes-count`);t.append(n),e.append(t);let r=A(`div`,`visions-fixes-list`);return e.append(r),jI={count:n,list:r},e}function YI(e){let t=A(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=A(`span`,`visions-fix-file`);n.textContent=xF(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(A(`span`,`visions-fix-line`,QF(e))),t.append(A(`span`,`visions-fix-outcome`,$F(e))),t.append(A(`span`,`visions-fix-code`,e.code||``));let r=A(`span`,`visions-fix-message`);return r.textContent=e.message,t.append(r),t}function XI({force:e=!1}={}){if(!jI||!e&&_r(SI))return;let{count:t,list:n}=jI;if(t.textContent=ZF(AI.length),n.textContent=``,AI.length===0)n.append(A(`p`,`visions-empty`,XF));else for(let e of AI)n.append(YI(e))}function ZI(){MI=zF(_I,vI,yI,AI,bI),MI.signature!==``&&PI.refresh(),TI&&TI(BF(MI,NI))}function QI(e){TI=e,ZI()}var $I=lf(`visions-connection-status`);function eL(e){e?$I.clear():$I.show(`error`,`${W} What you see below is from before the connection dropped.`)}function tL(e){if(SI)return SI;let t=A(`div`,`visions-content`);t.append($I.element,FI());let n=A(`div`,`visions-feed`);return t.append(n),t.append(JI()),t.append(GI()),e.appendChild(t),SI=t,CI=n,LI(),UI({force:!0}),XI({force:!0}),qI({force:!0}),t}function nL(){LI(),UI({force:!0}),XI({force:!0}),qI({force:!0})}function rL(){MI.signature!==``&&PI.acknowledge(),ZI()}function iL(e){AI=nI(AI,e),XI(),ZI()}function aL(e){_I=UF(_I,e),UI(),ZI()}function oL(e){vI=GF(vI,e),UI(),ZI()}function sL(e){yI=OF(yI,e),UI(),ZI()}function cL(e){bI=dF(bI,e),LI(),ZI()}function lL(e){DI=pI(DI,e),OI=uI(e),qI(),ZI()}function uL(e){DI=mI(e),OI=0,qI(),ZI()}function dL(e){_I=KF(e),vI=qF(e),yI=kF(e),bI=lF(e),AI=rI(e),LI(),UI(),XI(),ZI()}var fL=i(l(),e());g({glimmervoidId:l().min(1),event:l().min(1),token:l().nullable().optional(),payload:fL}),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 pL=`Claude Code hooks injected into every session Glimmervoid spawns.`,mL=`Loading hooks`,hL=`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.`,gL=`Start from`,_L=`Filter by name, event or command`,vL=`Nothing matches that filter.`,yL=`Preview`,bL=`The entry this becomes in the per-session settings file.`,xL=`Duplicate`,SL=`Discard changes`,CL=`Close the editor and lose the unsaved changes?`,wL=`Esc cancels. Ctrl+Enter saves.`,TL=`A change reaches a session at its next start or restart. Claude Code sessions only; Codex and Grok sessions do not read this file.`,EL=`Glimmervoid's own hooks`,DL=`Always present, read-only. Status detection depends on them.`,OL=`Your hooks`,kL=`New hook`,AL=`Edit hook`,jL=`Saved to config.json.`,ML=`All projects`,NL=`This event takes no matcher.`,PL=`Blank uses Claude Code's default for the event.`,FL=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.`}]),IL=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`}}]),LL=Object.freeze({hooks:[],builtin:[],events:[]});function RL(e){return!e||typeof e.error==`string`}function zL(e){return!e||typeof e.error!=`string`?``:e.error}function BL(e,t){let n=e?.[t];return Array.isArray(n)?n:LL[t]}var VL=e=>BL(e,`hooks`),HL=e=>BL(e,`builtin`),UL=e=>BL(e,`events`);function WL(e){let t=e?.limits?.maxTimeoutSec;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:600}function GL(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return typeof n!=`string`||!t||n===t}function KL(e){let t=VL(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(HL(e).length),tone:null}]}function qL(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 JL(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 YL(e){return e.length>=4}function XL(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 ZL(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 QL(e){return`${e} copy`}function $L(e,t){return e.find(e=>e.name===t)||null}function eR(e,t){let n=$L(e,t);return n?n.matcher?`Matches ${n.matcher}. Blank matches every ${n.name}.`:NL:``}function tR(e){return e.type===`http`?e.url||``:e.command||``}function nR(e){let t=FL.find(t=>t.value===e);return t?t.label:String(e||``)}function rR(e){return!Number.isInteger(e.timeout)||Number(e.timeout)<=0?``:`${e.timeout}s timeout`}function iR(e,t){let n=Array.isArray(e.projects)?e.projects:[];return n.length===0?ML:n.map(e=>{let n=t.find(t=>t.id===e);return n?n.name:e}).join(`, `)}function aR(e){return e.matcher?`${e.event} / ${e.matcher}`:e.event}function oR(e){return aR(e)}function sR(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 cR(e){let t=e[0];return{id:null,name:``,event:t?t.name:``,matcher:``,type:`command`,command:``,url:``,timeout:``,enabled:!0,projects:[]}}function lR(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 uR(e,t,n=600){if(!e.name.trim())return`Give the hook a name.`;let r=$L(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 dR(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 fR(e,t){let n={...cR(t),...e.draft};return $L(t,n.event)||(n.event=cR(t).event),n}function pR(e,t){return JSON.stringify(dR(e))!==JSON.stringify(t)}function mR(e){return{...e,enabled:e.enabled===!1}}function hR(e){return`Delete the hook "${e.name}"? Sessions already running keep it until they restart.`}var gR=null,_R=null,vR=null,yR=!1,bR=null,xR=null,SR=null,CR=null,wR=null,TR=null,ER=!1,DR=``,OR=new Set,kR=new Set,AR=new Map,jR=!1,MR=(e,t)=>mr(`hooks`,e,t);function NR(e,t,n){let r=A(`p`,e,t);return n&&(r.dataset.tone=n),r}function PR(e,t,n,r){let i=A(`button`,e,t);return i.type=`button`,r&&i.setAttribute(`aria-label`,r),i.addEventListener(`click`,n),i}async function FR(e,t){try{let n=await K(e,t,{timeoutMs:q});if((n.type===`save-hook-result`||n.type===`delete-hook-result`)&&n.ok)return null;let r=e===`save-hook`?`Could not save the hook.`:`Could not delete the hook.`;return`error`in n&&typeof n.error==`string`&&n.error?n.error:r}catch(e){return df(e,q)}}async function IR(e,t,n,r){kR.add(e),AR.set(e,{tone:`busy`,text:r}),oz({force:!0});let i=await FR(t,n);kR.delete(e),i&&AR.set(e,{tone:`error`,text:i}),i||AR.delete(e),oz({force:!0}),cz()}function LR(e,t,n){let r=A(`label`,`hooks-field`);return r.append(A(`span`,`hooks-field-label`,e),t),n&&r.append(A(`span`,`hooks-field-hint`,n)),r}function RR(e,t,n){let r=A(`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 zR(e,t){let n=A(`textarea`,`settings-view-input hooks-command`);return n.rows=3,n.value=e,n.spellcheck=!1,n.addEventListener(`input`,()=>t(n.value)),n}function BR(e,t,n){let r=A(`select`,`settings-view-input hooks-select`);for(let n of t){let t=A(`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 VR(e,t){let n=A(`div`,`hooks-type-row`);n.setAttribute(`role`,`radiogroup`);for(let r of FL){let i=A(`label`,`settings-view-toggle hooks-choice`),a=A(`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,A(`span`,null,r.label)),n.append(i)}return n}function HR(e,t){let n=A(`div`,`hooks-projects`);if(t.length===0)return n.append(A(`span`,`hooks-field-hint`,ML)),n;let r=A(`label`,`settings-view-project-choice hooks-choice`),i=A(`input`,`settings-view-checkbox`);i.type=`checkbox`,i.checked=e.projects.length===0,r.append(i,A(`span`,null,ML)),n.append(r);let a=[];for(let r of t){let t=A(`label`,`settings-view-project-choice hooks-choice`),o=A(`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,A(`span`,null,r.name)),r.agent!==`claude-code`&&(t.append(A(`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 UR(e){let t=A(`div`,`hooks-templates`);t.append(A(`span`,`hooks-templates-label`,gL));for(let n of IL){let r=PR(`hooks-chip`,n.label,()=>KR(null,fR(n,e)));r.title=n.summary,t.append(r)}return t}function WR(e){wR&&(e?wR.show(`error`,e):wR.clear())}function GR(e){let t=UL(gR),n=gr(gR),r=MR(e.id?AL:kL,jL);r.classList.add(`hooks-editor`);let i=A(`form`,`hooks-form`);i.addEventListener(`submit`,e=>{e.preventDefault(),YR()}),i.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),JR()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),YR())}),e.id||i.append(UR(t));let a=A(`span`,`hooks-field-hint`,eR(t,e.event)),o=RR(e.matcher,``,t=>{e.matcher=t}),s=LR(`Command`,zR(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=LR(`URL`,RR(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=LR(`Matcher`,o,null);u.append(a);let d=()=>{let n=t.find(t=>t.name===e.event);a.textContent=eR(t,e.event),o.disabled=!!n&&!n.matcher,o.disabled&&(o.value=``,e.matcher=``)};d();let f=A(`input`,`settings-view-input hooks-timeout`);f.type=`number`,f.inputMode=`numeric`,f.min=`1`,f.max=String(WL(gR)),f.value=e.timeout,f.addEventListener(`input`,()=>{e.timeout=f.value});let p=A(`label`,`settings-view-toggle hooks-choice`),m=A(`input`,`settings-view-checkbox`);m.type=`checkbox`,m.checked=e.enabled,m.addEventListener(`change`,()=>{e.enabled=m.checked}),p.append(m,A(`span`,null,`Enabled`)),i.append(LR(`Name`,RR(e.name,`Lint after edits`,t=>{e.name=t}),null),LR(`Event`,BR(e,t,t=>{e.event=t,d()}),null),u,LR(`Type`,VR(e,t=>{e.type=t,l()}),null),s,c,LR(`Timeout (seconds)`,f,PL),LR(`Projects`,HR(e,n),null),LR(``,p,null)),wR=lf(`hooks-editor-status`);let h=A(`div`,`hooks-editor-footer`),g=A(`span`,`hooks-editor-shortcut`,wL),_=PR(`btn-dialog btn-dialog-cancel`,`Cancel`,JR),v=A(`button`,`btn-dialog btn-dialog-confirm`,e.id?`Save changes`:`Add hook`);return v.type=`submit`,TR=v,h.append(wR.element,g,_,v),i.append(h),r.append(i),r}function KR(e,t=null){xR=t||(e?lR(e):cR(UL(gR))),SR=dR(e?lR(e):cR(UL(gR))),CR=GR(xR),oz({force:!0}),CR.scrollIntoView({block:`nearest`});let n=CR.querySelector(`input[type=text]`);n instanceof HTMLInputElement&&n.focus()}function qR(){xR=null,SR=null,CR=null,wR=null,TR=null,ER=!1,jR=!0,oz({force:!0})}function JR(){!xR||!SR||!pR(xR,SR)?qR():Rf({title:SL,message:CL,confirmLabel:`Discard`,danger:!0,onConfirm:qR})}async function YR(){if(!xR||ER)return;let e=uR(xR,UL(gR),WL(gR));if(e){WR(e);return}let t=wR,n=TR;ER=!0,t?.show(`busy`,`Saving the hook.`),n&&(n.disabled=!0);let r=await FR(`save-hook`,{hook:dR(xR)});ER=!1,n&&(n.disabled=!1),t===wR&&(r?WR(r):(qR(),cz()))}function XR(e){let t=A(`details`,`hooks-preview`);t.open=OR.has(e.id),t.addEventListener(`toggle`,()=>{t.open?OR.add(e.id):OR.delete(e.id)});let n=A(`summary`,`hooks-preview-summary`,yL);n.title=bL;let r=A(`pre`,`hooks-preview-code`,ZL(e));return t.append(n,r),t}function ZR(e,{grouped:t=!1}={}){let n=gr(gR),r=A(`article`,`hooks-row`);r.setAttribute(`aria-label`,e.name),e.enabled===!1&&(r.dataset.state=`off`);let i=A(`div`,`hooks-row-main`),a=A(`div`,`hooks-row-head`);a.append(A(`span`,`hooks-row-name`,e.name));let o=t?e.matcher||``:aR(e);o&&a.append(A(`span`,`hooks-row-event`,o));let s=A(`code`,`hooks-row-target`,tR(e));s.title=tR(e);let c=A(`p`,`hooks-row-meta`,[nR(e.type),rR(e),iR(e,n)].filter(Boolean).join(` / `));i.append(a,s,c);let l=sR(e,n);l.length>0&&i.append(NR(`hooks-row-meta`,`Scoped to a project no longer in config: ${l.join(`, `)}`,`warn`)),i.append(XR(e));let u=AR.get(e.id);if(u){let e=lf(`hooks-row-status`);e.show(u.tone,u.text),i.append(e.element)}let d=A(`div`,`hooks-row-actions`),f=A(`label`,`settings-view-toggle hooks-choice`),p=A(`input`,`settings-view-checkbox`);p.type=`checkbox`,p.checked=e.enabled!==!1,p.disabled=kR.has(e.id),p.setAttribute(`aria-label`,`${e.name} enabled`),p.addEventListener(`change`,()=>{IR(e.id,`save-hook`,{hook:mR(e)},p.checked?`Turning the hook on.`:`Turning the hook off.`)}),f.append(p,A(`span`,null,`On`));let m=PR(`hooks-btn`,`Edit`,()=>KR(e),`Edit ${e.name}`),h=PR(`hooks-btn`,xL,()=>{let t=lR({...e,name:QL(e.name)});t.id=null,KR(null,t)},`Duplicate ${e.name}`),g=PR(`hooks-btn hooks-btn-danger`,`Delete`,()=>{Rf({title:`Delete hook`,message:hR(e),confirmLabel:`Delete`,danger:!0,onConfirm:()=>{IR(e.id,`delete-hook`,{id:e.id},`Deleting the hook.`)}})},`Delete ${e.name}`);return g.disabled=kR.has(e.id),d.append(f,m,h,g),r.append(i,d),r}function QR(e){let t=A(`article`,`hooks-row hooks-row-builtin`),n=A(`div`,`hooks-row-main`);return n.append(A(`span`,`hooks-row-event`,oR(e)),A(`p`,`hooks-row-meta`,e.purpose)),t.append(n),t}function $R(){let e=MR(`Hooks`,pL),t=A(`div`,`hooks-stats`);for(let e of KL(gR))t.append(hr(`hooks`,e.label,e.value,e.tone));return e.append(t,NR(`hooks-meta`,TL)),e}function ez(){let e=A(`input`,`settings-view-input hooks-filter`);return e.type=`search`,e.value=DR,e.placeholder=_L,e.setAttribute(`aria-label`,_L),e.addEventListener(`input`,()=>{DR=e.value;let t=_R?.querySelector(`.hooks-list-yours`);t&&t.replaceWith(nz())}),e}function tz(){let e=A(`div`,`hooks-empty-state`);return e.append(NR(`hooks-empty`,hL),UR(UL(gR))),e}function nz(){let e=A(`div`,`hooks-list-yours`),t=VL(gR);if(t.length===0)return e.append(tz()),e;let n=JL(qL(t,UL(gR)),DR);if(n.length===0)return e.append(NR(`hooks-empty`,vL)),e;for(let t of XL(n)){let n=A(`div`,`hooks-group`);n.append(A(`h3`,`hooks-group-title`,t.event));let r=A(`div`,`hooks-list`);for(let e of t.hooks)r.append(ZR(e,{grouped:!0}));n.append(r),e.append(n)}return e}function rz(){let e=MR(OL,null),t=PR(`hooks-btn hooks-btn-add`,`+ New hook`,()=>KR(null));t.disabled=!!xR;let n=e.querySelector(`.hooks-section-head`);return n&&n.append(t),YL(VL(gR))&&e.append(ez()),e.append(nz()),e}function iz(){let e=A(`details`,`hooks-builtin`),t=A(`summary`,`hooks-builtin-summary`);t.append(A(`span`,`hooks-section-title`,`${EL} (${HL(gR).length})`),A(`span`,`hooks-section-hint`,DL));let n=A(`div`,`hooks-list`);for(let e of HL(gR))n.append(QR(e));return e.append(t,n),e}function az(){let e=A(`div`,`hooks-content`);return gR?RL(gR)?(e.append(NR(`hooks-warning`,zL(gR))),e):(e.append($R()),CR&&e.append(CR),e.append(rz(),iz()),e):(e.append(yR?NR(`hooks-warning`,W):NR(`hooks-empty`,mL)),e)}function oz({force:e=!1}={}){if(!_R||!e&&_r(_R)||(_R.replaceChildren(az()),!jR))return;jR=!1;let t=_R.querySelector(`.hooks-btn-add`);t instanceof HTMLButtonElement&&t.focus()}function sz(e){vR=e}function cz(){if(!vR)return;bR=Fd(`hooks-report`);let e=vR({type:`request-hooks-report`,requestId:bR});e!==!yR&&(yR=!e,oz())}function lz(e){_R||(_R=A(`div`,`hooks-panel`),e.append(_R),oz({force:!0}))}function uz(){oz({force:!0})}function dz(e){GL(e,bR)&&(gR=e,yR=!1,oz())}function fz(){cz()}function pz(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 mz=e=>e.ui.path;function hz({onSelectSession:e}){let t=A(`div`,`phone-board`),n=A(`header`,`phone-topbar`),r=NN({onJump:()=>{JN(r);let e=t_(x(),null)[0]?.id;e&&a(e)},rowFor:e=>d.get(e)}),i=null;function a(e){i=e,d.get(e)?.scrollIntoView({block:`nearest`}),GN(r,e,()=>{i===e&&o(e)})}function o(t){i=null,e?.(t)}let s=A(`div`,`phone-board-list`),c=A(`div`,`phone-empty`),l=A(`p`,`phone-empty-title`,`No sessions`),u=A(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);c.append(l,u),t.append(n,s,c,r);let d=new Map,f=new Map,p=new WeakMap,m=new WeakMap,h=new WeakMap,g=0;pr(n);function _(e){let{row:t,refs:n}=xv(`button`);t.type=`button`,t.dataset.id=e,t.addEventListener(`click`,()=>o(e));let{item:r}=Sv(t,()=>ny(e));return r.setAttribute(`role`,`listitem`),p.set(t,{refs:n,item:r}),t}function v(){let e=A(`section`,`phone-board-group`),t=lN({onAdd:Qv,onForget:e=>{zv(e),S()}}),n=A(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),m.set(e,{...t,rows:n}),e}function y(e,t){let n=p.get(e);if(!n)return;let{ui:r,state:i,name:a}=t;Dv(e,n.refs,{ui:r,state:i,name:a,mergeStatus:r.card?.dataset.merge||``})}function b(e,t){let n=m.get(e);n&&(uN(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function x(){return Hg(Yv())}function S(){let e=x(),t=sN(e,mz,Rv(e,mz)),n=i_(e);g=a_(n),PN(r,n,t_(e,null));let i=new Set(t.order),a=t.order.join(`,`),o=h.get(s)===a&&s.childElementCount===t.groups.length;for(let e of t.groups){let t=f.get(e.key);t||(t=v(),f.set(e.key,t)),b(t,e),o||s.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=m.get(t);if(!r)continue;let i=h.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=d.get(t.id);e||(e=_(t.id),d.set(t.id,e)),y(e,t);let n=p.get(e);n&&(i||r.rows.appendChild(n.item))}h.set(r.rows,n)}h.set(s,a);for(let[e,t]of[...f])i.has(e)||(t.remove(),f.delete(e));let S=new Set(cN(t));for(let[e,t]of[...d]){if(S.has(e))continue;let n=p.get(t);n&&n.item.remove(),d.delete(e)}let ee=t.groups.length>0,te=N.size===0;s.hidden=!ee,c.hidden=ee,Pm(c,te),l.hidden=te,u.hidden=te}function ee(e,t){let n=e.card?.dataset.id,r=n?d.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:rp(p.get(r)?.refs.glyph))}return dp(()=>{for(let[e,t]of d){let n=N.get(e),r=p.get(t);n&&r&&(r.refs.elapsed.textContent=lp(n))}}),{el:t,topBarEl:n,refresh:S,renderActivity:ee,getAttentionCount:()=>g}}var gz=`clipboard`,_z=`upload`,vz=24,yz=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:gz,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:_z,title:`Upload a photo or file to this session`})]);function bz(e){let t=yz.find(t=>t.id===e);return t?t.bytes:null}function xz(e){return!!e&&e.action===gz}function Sz(e){return!!e&&e.action===`upload`}function Cz(e,t,n=vz){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 wz(e,t,n=vz){let r=Cz(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 Tz={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function Ez(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):Tz[e]??null}function Dz({send:e,getSessionId:t,reportProblem:n}){let r=A(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,a=null,o=A(`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 yz){t.id===`left`&&r.appendChild(Oz(e));let n=A(`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){Sz(t)?d(r):xz(t)?Az(e,n):e(bz(t.id))}function d(e){a=e,i||(i=A(`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 dS(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:l}}function Oz(e){let t=A(`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=wz(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(bz(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 kz=`Paste needs clipboard permission.`;function Az(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(kz);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(kz)):t(`Paste is unavailable in this browser.`)}var jz=`‹`;function Mz({onBack:e}){let t=A(`div`,`phone-terminal`),n=A(`header`,`phone-topbar phone-terminal-bar`),r=A(`button`,`phone-back`,jz);r.type=`button`,r.setAttribute(`aria-label`,`Back to board`),r.addEventListener(`click`,()=>e?.());let i=A(`div`,`phone-terminal-identity`),a=A(`span`,`phone-terminal-name`);a.title=`Double-tap to rename`,a.addEventListener(`dblclick`,()=>ee());let o=A(`span`,`session-task-title phone-terminal-title`);Q_(o,()=>te());let s=A(`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=j(s,`.phone-terminal-glyph`,`span`),l=j(s,`.phone-terminal-label`,`span`),u=j(s,`.phone-terminal-elapsed`,`span`);l.before(a),i.append(o,s);let d=A(`div`,`phone-terminal-actions`);n.append(r,i,d);let f=A(`div`,`phone-card-slot`),p=A(`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=lf(`phone-key-status m-0 px-3 py-1`),{element:h,takeHeldControl:g}=Dz({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=_?N.get(_):null;t&&(IC(t,e)?m.clear():m.show(`error`,W))}function x(){let e=_?N.get(_):null;e?.term&&e.term.focus()}f.addEventListener(`click`,x);function S(e){let t=Ez(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(),(_?N.get(_):null)?._resetSoftKeyboardBuffer?.())},!0);function ee(){let e=_?N.get(_):null;e&&_&&iv(e,_,{returnsFocusToTerminal:!1})}function te(){let e=_?N.get(_):null;e&&_&&tv(e,_)}function ne(){let e=_?N.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||k.DORMANT;Cv(n,{glyph:c,label:l},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let s=e.card?.dataset.session||_;rv(a)||(a.textContent=s),o.dataset.sessionName=s??``,ev(o,e.taskTitle),u.textContent=lp(e)}function re(){y&&=(delete y.renameTargetEl,delete y.titleTargetEl,null),a.replaceChildren(),v&&=(br(v),v.parentElement===d&&v.remove(),null)}function C(e){let t=N.get(e);t&&(_===e&&Ar()===e&&t.card.parentElement===f||(re(),_=e,jr(t,e,f,{className:`phone-centered`}),v=j(t.card,`.session-actions`,`div`),yr(v,d),t.renameTargetEl=a,t.titleTargetEl=o,y=t),ne())}function ie(){re(),Ar()===_&&Mr(),_=null,ne()}function ae(){if(!_){ne();return}let e=N.get(_);e?e.card.parentElement===f?ne():(C(_),t.hidden||GC(e,_,!0)):ie()}function oe(){let e=_;e&&GC(N.get(e),e,!1)}function se(){ae();let e=_;if(!e)return;let t=N.get(e);t&&(GC(t,e,!0),nN(e))}return dp(()=>{let e=_?N.get(_):null;e&&(u.textContent=lp(e))}),ne(),{el:t,show:C,clear:ie,refresh:ae,reveal:se,unview:oe,getSessionId:()=>_}}var Nz=`board`,Pz=Object.freeze([{id:Nz,label:`Focus`,glyph:`▤`},{id:`terminal`,label:`Terminal`,glyph:`▸`}]),Fz=[],Iz=new Map,Lz=null,Rz=new Map,zz=new Map,Bz=new Map,Vz=null,Hz=null,Uz=null,Wz=null,Gz=new Map,Kz=new Set,qz={},Jz=!1,Yz=120,Xz=0,Zz=0,Qz=0,$z=null;function eB(){Xz=0,Zz=0}function tB(){let e=window.visualViewport;Lz&&(!Jz||!e?Lz.removeAttribute(`data-keyboard`):(Lz.style.setProperty(`--phone-vh`,`${e.height}px`),Lz.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==Zz&&(Zz=e.width,Xz=0),Xz=Math.max(Xz,e.height),Xz-e.height>Yz?Lz.dataset.keyboard=`open`:Lz.removeAttribute(`data-keyboard`)))}function nB(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=A(`button`,n);i.type=`button`;let a=A(`span`,`phone-nav-glyph`,t);a.setAttribute(`aria-hidden`,`true`),i.append(a,A(`span`,`phone-nav-label`,e));let o=A(`span`,r);return o.setAttribute(`aria-hidden`,`true`),o.hidden=!0,i.appendChild(o),i}function rB(e){return e?.querySelector(`.phone-nav-dot`)||null}function iB(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function aB(){let e=[];for(let t of Fz){if(Kz.has(t.id))continue;let n=Bz.get(t.id)||!1;e.push(n),iB(rB(Gz.get(t.id)),n)}iB(rB(Uz),d_(e))}function oB(){let e=A(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of Fz){let n=nB(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=Kz.has(t.id),n.addEventListener(`click`,()=>{sB(!1),wB(t.id)}),Gz.set(t.id,n),e.appendChild(n)}return e}function sB(e){Wz&&Uz&&(Wz.hidden=!e,Uz.setAttribute(`aria-expanded`,String(e)))}function cB(){return!!Wz&&!Wz.hidden}function lB(){let e=A(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of Pz){let n=nB(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>wB(t.id)),Rz.set(t.id,n),e.appendChild(n)}return Uz=nB(`More`,`⋯`),Uz.setAttribute(`aria-expanded`,`false`),Uz.addEventListener(`click`,()=>sB(!cB())),e.appendChild(Uz),Wz=oB(),e.appendChild(Wz),e}function uB(e,t,n){let r=A(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),zz.set(e,r),r}function dB(){if(Lz)return;Vz=hz({onSelectSession:fB}),ep((e,t)=>{Jz&&Vz?.renderActivity(e,t)}),Hz=Mz({onBack:()=>wB(Nz)});let e=A(`div`,`phone-screens`),t={[Nz]:Vz.el,terminal:Hz.el};for(let n of Pz)e.appendChild(uB(n.id,n.label,t[n.id]));for(let t of Fz){let n=A(`div`,`phone-panel phone-${t.id}`);Iz.set(t.id,n),e.appendChild(uB(t.id,t.label,n))}Lz=A(`div`,`phone-shell`),Lz.id=`phone-shell`,Lz.append(e,lB()),document.body.appendChild(Lz),aB(),window.visualViewport?.addEventListener(`resize`,tB),window.visualViewport?.addEventListener(`scroll`,tB),window.addEventListener(`popstate`,bB),document.addEventListener(`click`,e=>{cB()&&Wz&&Uz&&e.target instanceof Node&&(Wz.contains(e.target)||Uz.contains(e.target)||sB(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&cB()&&sB(!1)})}function fB(e){if(N.has(e)){if(!Vz||!Hz)throw Error(`Phone shell is not built`);Kv(e,`dormant-fallback`),qv(e),Hz.show(e),wB(`terminal`)}}function pB(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:e}}function mB(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function hB(e){return mB(e)?e.glimmervoidNested===!0?2:1:0}function gB(e){return e===Nz?0:qz.canGoBack?.(e)?2:1}function _B(e,t){return mB(history.state)===e&&hB(history.state)===(t?2:1)}function vB(){if(!Jz||$z!==null)return;let e=Or.snapshot().phoneScreen||Nz,t=gB(e);if(Qz>t){$z=location.href,history.go(t-Qz),Qz=t;return}let n=Qz===2;Qz>0&&!_B(e,n)&&history.replaceState(pB(e,n),``),Qz===0&&t>0&&(history.pushState(pB(e,!1),``),Qz=1),Qz===1&&t===2&&(history.pushState(pB(e,!0),``),Qz=2)}function yB(){let e=mB(history.state);return e&&CB(e)?(Qz=hB(history.state),e):(e&&history.replaceState(null,``),Qz=0,Nz)}function bB(e){if(!Jz)return;if($z!==null){history.replaceState(history.state,``,$z),$z=null,vB();return}let t=mB(e.state),n=t&&CB(t)?t:Nz;Qz=hB(e.state);let r=Or.snapshot().phoneScreen;Qz<2&&n===r&&qz.canGoBack?.(r)&&qz.onBack?.(r),SB(n),vB()}function xB(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function SB(e){if(!Uz||!Hz)throw Error(`Phone shell is not built`);Or.dispatch(`setPhoneScreen`,e),sB(!1);for(let[t,n]of zz)n.hidden=t!==e;qz.onScreenShown?.(e),xB(Rz,e);let t=Gz.has(e);t&&Uz.setAttribute(`aria-current`,`page`),t||Uz.removeAttribute(`aria-current`),xB(Gz,e),e===`terminal`?Hz.reveal():Hz.unview()}function CB(e){return zz.has(e)&&!Kz.has(e)}function wB(e){Lz&&CB(e)&&(SB(e),vB())}function TB(e){Fz.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id)),Wz?.append(...Fz.flatMap(e=>Gz.get(e.id)??[]))}function EB(e){qz=e||{},Fz=qz.panels||[]}function DB({sessionId:e,linkedScreenId:t}={}){if(Jz)return;if(dB(),!Lz||!Vz||!Hz)throw Error(`Phone shell is not built`);Jz=!0,Lz.hidden=!1;for(let e of qz.headerControls||[])yr(e,Vz.topBarEl);for(let e of Fz)yr(e.el,Iz.get(e.id)),e.el.hidden=!1;tB(),e&&Hz.show(e);let n=yB();MB(),t&&CB(t)?wB(t):e&&n===Nz?wB(`terminal`):(SB(n),vB())}function OB(){if(Jz){if(!Lz||!Hz)throw Error(`Phone shell is not built`);Jz=!1,Hz.clear();for(let e of Fz)br(e.el);for(let e of qz.headerControls||[])br(e);sB(!1),Lz.hidden=!0,Lz.removeAttribute(`data-keyboard`),eB(),Qz>0&&history.go(-Qz),Qz=0,$z=null}}function kB(e){return!Jz||!Vz||!Hz||!N.has(e)?!1:(fB(e),EM(e))}function AB(){return Jz}function jB(){return Jz&&Hz?Hz.getSessionId():null}function MB(){if(!Jz)return;if(!Vz||!Hz)throw Error(`Phone shell is not built`);LB(),Vz.refresh(),Hz.refresh(),Or.snapshot().phoneScreen===`terminal`&&!Hz.getSessionId()&&wB(Nz);let e=rB(Rz.get(Nz));e&&(e.hidden=Vz.getAttentionCount()===0)}function NB(e){return Jz?(fB(e),!0):!1}function PB(e){return!Jz||!CB(e)?!1:(wB(e),!0)}function FB(e,t){t&&Kz.delete(e),t||Kz.add(e);let n=Gz.get(e);n&&(n.hidden=!t);let r=zz.get(e);r&&!t&&(r.hidden=!0),aB(),!t&&Jz&&Or.snapshot().phoneScreen===e&&wB(Nz)}function IB(e,t){Bz.set(e,typeof t==`string`&&t?t:t===!0),aB()}function LB(){if(!Hz)throw Error(`Phone shell is not built`);if(Hz.getSessionId())return;let e=Jv();e&&(Hz.show(e),qv(e,{rememberFocus:!1}))}function RB(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function zB(e,t){if(!e?.error)return null;let n=e.error.trim().replace(/[.!]+$/,``),r=e.incident?.trim().replace(/[.!]+$/,``),i=`Could not reach GitHub: ${n}.${r?` GitHub reports: ${r}.`:``}`;if(e.isRefreshing)return`${i} Refreshing.`;if(typeof e.nextAttemptAt!=`number`)return i;let a=Math.max(0,Math.ceil((e.nextAttemptAt-t)/1e3));return a===0?`${i} Retrying now.`:e.retry?`${i} Retrying in ${a}s (${e.retry.attempt} of ${e.retry.limit}).`:`${i} Next try in ${a>=60?`${Math.ceil(a/60)} min`:`${a}s`}.`}function BB(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}function VB(e,t){let n=e?.lastRefreshedAt??e?.lastSyncAt??null;if(n===null)return null;let r=Math.max(0,t-n);return!e?.error&&r<=3e5?null:r<6e4?`Last updated less than a minute ago.`:r<36e5?`Last updated ${Math.floor(r/6e4)} min ago.`:`Last updated ${Math.floor(r/36e5)} h ago.`}var HB={minPx:220,maxPx:720},UB=16,WB=new Set,GB=0;function KB(e){let t=Mc();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=Ac();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function qB(){for(let e of WB)e.isConnected?KB(e):WB.delete(e)}function JB(e,t){let n=A(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function YB(e){let t=A(`div`,`pr-queue-foot`);return e&&t.append(e),t}function XB({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=A(`div`,`pr-columns`),i=A(`div`,`pr-queue-pane`),a=A(`nav`,`pr-queue`);a.id=`pr-queue-${++GB}`,a.setAttribute(`aria-label`,e);let o=A(`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=Gd(16,16);s.append(Wd(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),s.append(Wd(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let c=Wd(`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`,()=>{Nc(!Mc()),qB()});let l=YB(null);i.append(JB(t,o),a,l);let u=A(`div`,`pr-queue-resizer`);u.setAttribute(`role`,`separator`),u.setAttribute(`aria-orientation`,`vertical`),u.setAttribute(`aria-label`,n),u.tabIndex=0;let d=A(`main`,`pr-detail-host`);return r.append(i,u,d),KB(r),WB.add(r),w_({resizer:u,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:HB,keyStepPx:UB,getStoredWidth:Ac,setStoredWidth:jc}),{columns:r,queue:a,foot:l,detail:d}}var ZB=1.2,QB=1.55,$B=.12,eV=523.25,tV=2,nV=8,Y=(e,t,n)=>({semitone:e,startBeat:t,beats:n}),rV={melody:[Y(7,4,.5),Y(11,4.5,.5),Y(12,5,3)],bass:[Y(-5,4,1),Y(-12,5,3)]},iV=[{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,...rV.melody],bass:[...e.bass,...rV.bass]}));function aV(e,t){return eV*2**((e+t)/12)}function oV(e,t){let n=(e,n,r)=>e.map(e=>({frequency:aV(e.semitone,t),startSeconds:QB+e.startBeat*$B,durationSeconds:e.beats*$B,waveform:n,gain:r}));return[...n(e.melody,`square`,.2),...n(e.melody,`triangle`,.5),...n(e.bass,`triangle`,.6)]}var sV=[{frequency:220,endFrequency:880,startSeconds:0,durationSeconds:.32,waveform:`triangle`,gain:.25},{frequency:160,endFrequency:45,startSeconds:ZB,durationSeconds:.28,waveform:`sine`,gain:1},{frequency:1400,endFrequency:380,startSeconds:ZB,durationSeconds:.06,waveform:`square`,gain:.12}];function cV(e){let t=iV[e%iV.length],n=Math.min(e*tV,nV);return{peakGain:.1,tones:[...sV,...oV(t,n)]}}function lV(e){return Math.round(Math.sqrt(2*e/780)*1e3)}function uV(e,t,n=Math.random){return Math.round(e+n()*(t-e))}function dV(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 fV=.6,pV=.25,mV=1.6;function hV(e){return Math.min(fV+e*pV,mV)}var gV=[`var(--accent)`,`var(--state-running)`,`var(--state-idle)`,`var(--state-waiting)`,`var(--state-failed)`];function _V(e,t=Math.random){let n=uV(320,520,t),r=uV(1800,2800,t);return[[`--confetti-start-x`,`${uV(4,96,t)}%`],[`--confetti-x`,`${uV(-140,140,t)}px`],[`--confetti-rise`,`${-uV(20,55,t)}px`],[`--confetti-fall`,`${uV(45,70,t)}vh`],[`--confetti-rise-ms`,`${n}ms`],[`--confetti-fall-ms`,`${r}ms`],[`--confetti-flight-ms`,`${n+r}ms`],[`--confetti-tilt`,`${uV(0,180,t)}deg`],[`--confetti-spin`,`${uV(-360,360,t)}deg`],[`--confetti-flutter-ms`,`${uV(160,340,t)}ms`],[`--confetti-delay`,`${uV(0,160,t)}ms`],[`--confetti-color`,gV[e%gV.length]]]}var vV=`<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>`,yV=`<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 bV(){let e=or(`div`,`merge-bullseye-target`,vV);return e.append(A(`span`,`merge-bullseye-ripple`)),e}function xV(){let e=A(`div`,`merge-bullseye-dart-drift`),t=A(`div`,`merge-bullseye-dart-arc`),n=A(`div`,`merge-bullseye-dart-aim`);return n.append(or(`div`,`merge-bullseye-dart`,yV)),t.append(n),e.append(t),e}function SV(){let e=A(`div`,`merge-bullseye-range`),t=A(`div`,`merge-bullseye-track`);return t.append(xV()),e.append(bV(),t),e}var CV={title:`BULLSEYE!`,buildScene:SV},wV=6,TV=30,EV=-14,DV=16;function OV(e=Math.random){return[[`--crosshair-start-left`,`${uV(wV,TV,e)}%`],[`--crosshair-start-offset-y`,`${uV(EV,DV,e)}px`]]}var kV=`<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>`,AV=`<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>`,jV=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 3L8 8M21 3L16 8M3 21L8 16M21 21L16 16"/></svg>`;function MV(){let e=A(`div`,`merge-headshot-sweep`);sr(e,OV());let t=A(`div`,`merge-headshot-aim`);t.append(or(`div`,`merge-headshot-crosshair`,AV));let n=A(`div`,`merge-headshot-bob`);return n.append(t,or(`div`,`merge-headshot-hitmarker`,jV)),e.append(n),e}function NV(){let e=A(`div`,`merge-headshot-range`),t=A(`div`,`merge-headshot-track`);return t.append(MV()),e.append(or(`div`,`merge-headshot-target`,kV),t),e}var PV={title:`HEADSHOT!`,buildScene:NV},FV=[`10`,`J`,`Q`,`K`,`A`],IV=19,LV=5,RV=9,zV=780,BV=70,VV=70,HV=35;function UV(e){let t=FV.length-1,n=e-t/2;return{offsetPx:n*IV,titleSpreadFraction:n/t,tiltDegrees:n*LV,bottomPx:RV-n**2,dealLeadMs:zV-e*BV,flipLeadMs:160+(t-e)*VV,waveDelayMs:e*HV}}function WV(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 GV(){return[[`--card-flip-ms`,`160ms`]]}var KV=`<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 qV(e,t){let n=A(`div`,`merge-flush-deal`);sr(n,WV(UV(t)));let r=A(`div`,`merge-flush-hop`),i=A(`div`,`merge-flush-card`),a=A(`div`,`merge-flush-face`);return a.append(A(`span`,`merge-flush-rank`,e)),a.insertAdjacentHTML(`beforeend`,KV),i.append(A(`div`,`merge-flush-back`),a),r.append(i),n.append(r),n}function JV(){let e=A(`div`,`merge-flush-table`);return sr(e,GV()),e.append(...FV.map(qV)),e}var YV={title:`ROYAL FLUSH!`,buildScene:JV},XV=[1,2,3,4],ZV=14,QV=3,$V=3,eH=10,tH=20,nH=2,rH=28,iH=18,aH=.01,oH=1.5,sH=2200,cH=1,lH=120,uH=.35,dH=4,fH=65,pH=145;function mH(e){return Math.round(e/(Math.PI*iH)*360)}function hH(e){return tH-e*nH}function gH(e){return e.rowIndex*ZV+e.depthIndex*QV}function _H(e,t,n){return Array.from({length:n},(r,i)=>e+(t-e)*i/(n-1))}function vH(){return XV.flatMap((e,t)=>Array.from({length:e},(n,r)=>({rowIndex:t,depthIndex:e-1-r})))}function yH(e,t){let n=dV(_H(15,105,e),t),r=dV(_H(fH,pH,e),t);return n.map((e,n)=>({angleDegrees:e+uV(-4,dH,t),depthScalePercent:Math.round(r[n])}))}function bH(e,t,n){let r=uV(240,380,n),i=t.angleDegrees*Math.PI/180,a=r*Math.cos(i),o=(r*Math.sin(i))**2/1560,s=uV(15,45,n),c=lV(o),l=lV(o+s),u=c+l,d=uV(540,1080,n),f=a>=0?1:-1,p=gH(e);return{depthIndex:e.depthIndex,launchAngleDegrees:t.angleDegrees,distanceFromHeadPinPx:p,layer:hH(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/uH)}}function xH(e=Math.random){let t=vH(),n=yH(t.length,e);return t.map((t,r)=>bH(t,n[r],e))}function SH(e){return[[`--pin-left`,`${e.distanceFromHeadPinPx}px`],[`--pin-raise`,`${e.depthIndex*$V}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 CH(){return hH(oH)}function wH(){return Math.max(...vH().map(gH))+eH}function TH(){let e=wH(),t=rH+e+iH-cH;return[[`--ball-follow-px`,`${lH}px`],[`--ball-follow-ms`,`${Math.round(lH/uH)}ms`],[`--ball-follow-spin`,`${mH(lH)}deg`],[`--ball-size`,`${iH}px`],[`--ball-approach-spin`,`${sH}deg`],[`--ball-impact-inset`,`${t}px`],[`--ball-layer`,String(CH())],[`--rack-right`,`${rH}px`],[`--rack-width`,`${e}px`],[`--pin-width`,`${eH}px`]]}function EH(e=Math.random){return e()>=aH?null:Ro[Math.floor(e()*Ro.length)].sprite}var DH=`<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 OH(e){let t=A(`span`,`merge-strike-pin`);return t.append(or(`span`,`merge-strike-pin-arc`,DH)),sr(t,SH(e)),t}function kH(){let e=EH();if(!e)return A(`span`,`merge-strike-ball`);let t=A(`span`,`merge-strike-ball is-animal`);return t.append(A(`span`,`nyan-sprite ${e}`)),t}function AH(){let e=A(`div`,`merge-strike-lane`);sr(e,TH());let t=A(`div`,`merge-strike-rack`);t.append(...xH().map(OH));let n=A(`div`,`merge-strike-track`);return n.append(kH()),e.append(t,n),e}var jH={title:`STRIKE!`,buildScene:AH},MH=20,NH=92,PH=23,FH=7,IH=-40;function LH(){let e=lV(72),t=lV(69),n=780*t/1e3;return{launchHeightPx:MH,peakHeightPx:NH,heightThroughRimPx:PH,heightLeavingNetPx:FH,heightOutOfCardPx:IH,riseMs:e,fallToRimMs:t,speedThroughRimPxPerSecond:n,netCatchMs:Math.round(32/n*1e3),dropMs:lV(47)}}function RH(e=LH()){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 zH=`<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>`,BH=`<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 VH(){let e=A(`div`,`merge-swish-ball-drift`),t=A(`div`,`merge-swish-ball-arc`);return t.append(A(`span`,`merge-swish-ball`)),e.append(t),e}function HH(){let e=A(`div`,`merge-swish-court`);sr(e,RH());let t=A(`div`,`merge-swish-track`);return t.append(VH()),e.append(or(`div`,`merge-swish-hoop-back`,zH),t,or(`div`,`merge-swish-hoop-front`,BH)),e}var UH=[jH,{title:`SWISH!`,buildScene:HH},CV,PV,YV],WH=48,GH=5600,KH=20,qH=null,JH=[],YH=null,XH=!1,ZH=0;function QH(e){let t=A(`span`,`merge-confetti-piece`),n=A(`span`,`merge-confetti-arc`);return n.append(A(`span`,`merge-confetti-paper`)),t.append(n),sr(t,_V(e)),t}function $H(e){let t=A(`p`,`merge-celebration-title`);return t.setAttribute(`aria-hidden`,`true`),Array.from(e).forEach((e,n)=>{let r=A(`span`,`merge-celebration-letter`,e);r.style.setProperty(`--letter-delay`,`${n*45}ms`),t.append(r)}),t}function eU(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 tU(e){let t=A(`div`,`merge-celebration-scene`);return t.setAttribute(`aria-hidden`,`true`),t.append(e.buildScene()),t}function nU(){return UH[Math.floor(Math.random()*UH.length)]}function rU(e){if(cc())try{Cb(cV(e))}catch{}}function iU(e){let t=A(`ul`,`merge-celebration-details`);for(let n of e)t.append(A(`li`,`merge-celebration-detail`,n));return t}function aU(e,t,n){qH?.remove(),rU(n);let r=A(`div`,`merge-celebration`);r.setAttribute(`role`,`status`);let i=A(`div`,`merge-celebration-card`),a=A(`div`,`merge-celebration-stage`),o=$H(t.title),s=tU(t);a.append(o,A(`p`,`merge-celebration-message`,e.message),iU(e.detailLines),s);let c=A(`div`,`merge-confetti`);c.style.setProperty(`--confetti-scale`,String(hV(n)));for(let e=0;e<WH;e+=1)c.append(QH(e));i.append(c,a),r.append(i),document.body.append(r),eU(a,o,s),qH=r,window.setTimeout(()=>{r.remove(),qH===r&&(qH=null)},GH)}function oU(e){return XH?`playing`:e?`queued`:`empty`}function sU(){if(!YH)return;let e=JH.length>0;YH.tray.dataset.state=oU(e),YH.count.textContent=e?String(JH.length):``,YH.button.disabled=XH||!e}function cU(){let e=JH.shift();XH=e!==void 0,sU(),e&&(aU(e.text,e.scene,ZH),ZH+=1,window.setTimeout(cU,GH))}function lU(e,t,n){YH={tray:e,button:t,count:n},t.addEventListener(`click`,()=>{ZH=0,cU()}),sU()}function uU(e,t=nU()){JH.push({text:e,scene:t}),JH.length>KH&&JH.shift(),sU()}var dU={MERGE:`a merge commit`,SQUASH:`squash and merge`,REBASE:`rebase and merge`},fU=new Set([`FAILURE`,`ERROR`]);function pU(e){return dU[e]}function mU(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&&fU.has(e.checks.state)?`Checks are failing`:e.stage===`ready`?null:`Not ready to merge yet`:`Closed`}function hU(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 gU(e){let t=D.parse({...e,key:`${e.repo}#${e.number}`,stage:`unknown`});return{...t,stage:hU(t)}}function _U(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i),tone:r?`error`:n?`busy`:null}}function vU(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=yU(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 yU(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`),_U(e,!!e.keepMergeable,t,n,o,r)}function bU(e){return e?.isKeepMergeableEnabled!==!1}function xU(e){return e?.isMergeQueueEnabled!==!1}function SU(e,t,n){return e?t?`Repair pushed, waiting for you`:n?`On, the last merge failed and retries an hour later once it is ready`:`On, merges as soon as it is ready`:`Not queued`}function CU(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return _U(e,i,t,n,SU(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}var wU=[`Needs you`,`Waiting`,`Ready to merge`,`Drafts`,`Merged today`],TU=[`Ready to merge`,`Needs you`,`Waiting`,`Drafts`,`Merged today`],EU={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`},DU={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`},OU={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`},kU={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 AU(e){let t=mt.safeParse(e);return t.success?t.data:null}function jU(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 MU(e){return wU[e.rows.reduce((e,{pr:t})=>Math.min(e,wU.indexOf(EU[t.stage])),wU.length-1)]}function NU(e){let t=new Map(wU.map(e=>[e,{title:e,prs:[],rows:[]}]));for(let n of jU(e)){let e=t.get(MU(n));if(e)for(let t of n.rows)e.rows.push(t),e.prs.push(t.pr)}return TU.flatMap(e=>t.get(e)??[])}function PU(e){return DU[e]}function FU(e){return OU[e]}function IU(e){return kU[e]}function LU(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 RU(e){return`${e} ${e===1?`approval`:`approvals`}`}function zU(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function BU(e){let t=e.reviewRequests.length>0?`Requested: ${zU(e)}`:`Approval required`;return e.approvals>0?`${t}, ${RU(e.approvals)}`:t}function VU(e){let t=e.approvals>0?RU(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 HU(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:BU(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${zU(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function UU(e,t){return t?e.lastAuthor!==t:null}function WU(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function GU(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function KU(e,t){let n=UU(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 qU(e,t){return[...e.threads].sort((e,n)=>{let r=Number(UU(n,t)===!0)-Number(UU(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:WU(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:GU(e),lastActivityAt:e.lastActivityAt,waiting:KU(e,t)}))}function JU(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=>UU(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 YU(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 XU(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 ZU={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 QU(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=ZU[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 $U(e,t=null){if(e.state===`MERGED`)return[];let n=[LU(e),HU(e),JU(e,t),YU(e),XU(e)],r=e.autoRebase?[eW(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 eW(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 tW(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 nW(e,t=0){if(!e)return[];let n=zB(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}function rW(e,t){return e.flatMap(e=>{let n=t(e.key);if(!n)return[];let r=e.key.slice(0,e.key.lastIndexOf(`#`));return[{...gU({...n,repo:r}),...e}]})}function iW(e){let t=new Map;for(let n of e)for(let e of n.links){let r=Ln(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 aW(e,t){let n=e.flatMap(e=>e.prs);return t&&n.some(e=>e.key===t)?t:n[0]?.key??null}function oW(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 sW=3;function cW(e){if(e.length===1)return{message:`Merged ${e[0].key}`,detailLines:[e[0].title]};let t=e.slice(0,sW).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 lW={isVisible:!1,isDisabled:!0,statusText:``,tone:null},uW={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 dW(e,t){if(e.state!==`OPEN`)return lW;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,...uW[n.phase]};let r=mU(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 ${pU(e.mergeMethod)}`,tone:null}}function fW(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${pU(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function pW(e){let t=_t.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 mW=null,hW=null,gW=null,_W=null,vW=null,yW=null,bW=null,xW=null,SW=new Map,CW=new Set,wW=new Map,TW=new Map,EW=!1,DW=null,OW={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>yU(e,t,n,r,mp(e.keepMergeableAttempt?.at)),isFeatureEnabled:bU,save:async(e,t)=>{let n=await K(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:q});if(n.type!==`my-pr-keep-mergeable-result`||n.key!==e.key)throw Error(`Unexpected keep mergeable reply.`);return n.ok?null:n.error??`Could not save Keep mergeable.`}},kW={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:CU,isFeatureEnabled:xU,save:async(e,t)=>{let n=await K(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:q});if(n.type!==`my-pr-merge-when-ready-result`||n.key!==e.key)throw Error(`Unexpected merge when ready reply.`);return n.ok?null:n.error??`Could not save Merge when ready.`}},AW=6e4,jW=6e4,MW=`The server did not answer within ${AW/1e3} s. Check GitHub before trying again.`,NW=`${W} Check GitHub before trying again.`;function PW(e,t){let n=A(`div`,`reviews-refresh-control`),r=A(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);r.type=`button`;let i=A(`span`,`reviews-refresh-status`);i.setAttribute(`role`,`status`);let a=A(`p`,`my-pr-error reviews-retry-notice`);n.append(r,i);let o=null,s=!1,c=``,l=null;function u(){let e=Date.now(),n=zB(o,e),r=VB(o,e);a.textContent=n?[n,r].filter(Boolean).join(` `):``,a.hidden!==!o?.error&&(a.hidden=!o?.error),i.textContent=BB(o,s,c)||(o?.error?``:r)||``,i.hidden!==!i.textContent&&(i.hidden=!i.textContent);let d=a.isConnected&&!_r(t)&&!document.hidden&&a.getClientRects().length>0&&RB(o,e);!d&&l!==null&&(window.clearInterval(l),l=null),d&&l===null&&(l=window.setInterval(u,1e3))}function d(e){e!==o&&(c=``),o=e,r.disabled=s||!!e?.isRefreshing||!e?.configured,u()}r.addEventListener(`click`,async()=>{if(!s){s=!0,c=``,d(o);try{let t=await K(`github-polling-refresh`,{lane:e},{timeoutMs:jW});t.type===`github-polling-refresh-result`&&(c=t.ok?`Refreshed.`:t.error??`Could not refresh from GitHub.`)}catch(e){c=df(e,jW)}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){SW.set(e,{head:t,phase:n,text:r}),QW()}function IW(e){if(wW.has(e.key))return;let t=Fd(`my-pr-merge`);if(!G({type:`my-pr-merge`,requestId:t,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){FW(e.key,e.headRefOid,`failed`,W);return}let n=window.setTimeout(()=>{wW.delete(e.key),FW(e.key,e.headRefOid,`failed`,MW)},AW);wW.set(e.key,{requestId:t,head:e.headRefOid,timer:n}),SW.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),QW()}function LW(e){let t=dW(e,SW.get(e.key));if(!t.isVisible)return null;let n=A(`div`,`my-pr-merge`),r=A(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=A(`span`,`pr-action-status`,t.statusText);return i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),cf(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{Rf({title:`Merge pull request`,message:fW(e),confirmLabel:`Merge`,onConfirm:()=>IW(e)})}),n.append(r,i),n}function RW(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(vW));if(!n.isVisible)return null;let r=A(`div`,`my-pr-merge`),i=A(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=A(`span`,`pr-action-status`,n.statusText);return cf(a,n.tone,n.statusText),a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`),i.addEventListener(`click`,async()=>{if(!t.pendingKeys.has(e.key)){t.pendingKeys.add(e.key),t.errorsByKey.delete(e.key),QW();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,df(n,q))}finally{t.pendingKeys.delete(e.key),QW()}}}),r.append(i,a),r}function zW(e,{hasGlyph:t}){let n=A(`span`,`my-pr-stage`);return n.dataset.tone=FU(e.stage),t&&n.append(mv(IU(e.stage),FU(e.stage))),n.append(PU(e.stage)),n}function BW(e,t){let n=A(`span`,`my-pr-requested`);n.append(A(`span`,null,`Requested`));let r=A(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=cr({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,A(`span`,`my-pr-requested-names`,t.slice(11))),n}function VW(){if(!mW||!hW||gW?.isConnected)return;let e=XB({queueLabel:`My pull requests`,scopeTabs:hW,resizerLabel:`Resize pull request list`});gW=e.queue,_W=e.detail,mW.replaceChildren(e.columns),xW&&e.foot.append(xW.control)}function HW(e){if(!_W)return;if(!e){_W.replaceChildren(A(`p`,`pr-empty`,tW(vW)));return}let t=A(`article`,`pr-detail`),n=A(`div`,`pr-detail-heading`),r=A(`div`,`pr-detail-title`);r.append(ur(`pr-link`,e.key,e.url),A(`h2`,null,e.title)),n.append(r,zW(e,{hasGlyph:!0})),t.append(n);for(let n of[OW,kW]){let r=RW(e,n);r&&t.append(r)}let i=$U(e,vW?.viewer??null);if(i.length>0){let n=A(`section`,`pr-readiness-section`);n.append(A(`h3`,`pr-section-heading`,`Merge readiness`));let r=A(`ul`,`pr-readiness`);for(let t of i){let n=A(`li`,`pr-readiness-row`),i=A(`span`,`pr-readiness-value`);t.label===`Review`&&t.text.startsWith(`Requested: `)&&i.append(BW(e,t.text)),i.childNodes.length===0&&(i.textContent=t.text),n.append(mv(t.icon,t.tone),A(`span`,`pr-readiness-label`,t.label),i),r.append(n)}n.append(r);let a=LW(e);a&&n.append(a),t.append(n)}if(e.checks.failing.length>0){let n=A(`section`,`my-pr-failures`);n.append(A(`h3`,`pr-section-heading`,`Failing checks`));let r=A(`ul`,`my-pr-facts`);for(let t of e.checks.failing)r.append(A(`li`,null,t));n.append(r),t.append(n)}let a=QU(e);if(a.length>0){let e=A(`section`,`pr-readiness-section`);e.append(A(`h3`,`pr-section-heading`,`Reviews`));let n=A(`ul`,`pr-readiness`);for(let e of a){let t=A(`li`,`pr-readiness-row`),r=Date.parse(e.submittedAt??``),i=Number.isFinite(r)?`${e.text} ${mp(r)}`:e.text,a=A(`span`,`my-pr-reviewer`);a.append(lr([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),A(`span`,null,e.reviewer)),t.append(mv(e.icon,e.tone),a,A(`span`,`pr-readiness-value`,i)),n.append(t)}e.append(n),t.append(e)}let o=qU(e,vW?.viewer??null);if(o.length>0){let e=A(`section`,`my-pr-threads-section`);e.append(A(`h3`,`pr-section-heading`,`Unresolved threads`));let n=A(`ul`,`my-pr-threads`);for(let e of o){let t=A(`li`,`my-pr-thread`),r=A(`div`,`my-pr-thread-heading`);if(r.append(ur(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=A(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(mv(e.waiting.icon,e.waiting.tone),e.waiting.text),r.append(t)}let i=A(`p`,`my-pr-thread-excerpt`);i.append(A(`strong`,null,e.author),` ${e.excerpt}`);let a=Date.parse(e.lastActivityAt),o=A(`p`,`my-pr-thread-meta`,Number.isFinite(a)?`${e.replySummary}, ${mp(a)}`:e.replySummary);t.append(r,i,o),n.append(t)}e.append(n),t.append(e)}let s=A(`p`,`pr-detail-meta`);s.append(A(`span`,null,`Opened ${mp(Date.parse(e.createdAt))}`),A(`span`,null,`${e.state===`MERGED`?`Merged`:`Updated`} ${mp(Date.parse(e.state===`MERGED`?e.mergedAt??``:e.updatedAt))}`)),t.append(s),_W.replaceChildren(t)}function UW(){return[...TW].flatMap(([e,t])=>{let n=N.get(e);return!n||t.length===0?[]:[{id:e,title:xr(n)||e,links:t}]})}function WW(e){let t=e.dataset.sessionId??``,n=N.get(t),r=M(e,`.session-row-name`);n&&(r.textContent=xr(n)||t);let i=Cv(e,{glyph:M(e,`.session-row-glyph`),label:M(e,`.session-row-label`)},n?.currentState||k.DORMANT,n?.awaitingBackgroundTasks,n?.pendingPromptKind),a=`Focus session ${r.textContent}, ${i}`;e.title=a,e.setAttribute(`aria-label`,a)}function GW(e){let{row:t,refs:n}=xv(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,WW(t),t.addEventListener(`click`,()=>DW?.(e.id)),t}function KW(e){if(!e||e.length===0)return null;let t=A(`div`,`my-pr-session-focus`);return t.append(...e.map(GW)),t}function qW(){for(let e of gW?.querySelectorAll(`.my-pr-session-pill`)??[])WW(e)}function JW(){EW||(EW=!0,queueMicrotask(()=>{EW=!1,QW()}))}function YW(e){TW=e,JW()}function XW(e){let t=rW(vW?.prs??[],Un).find(t=>Ln(t)===e.toLowerCase());return t?ZW(t.key):null}function ZW(e){return gW?[...gW.querySelectorAll(`button[data-pr-key]`)].find(t=>t.dataset.prKey===e)??null:null}function QW(){let e=rW(vW?.prs??[],Un),t=oW(yW,e);if(yW=e,tG(t),VW(),!gW)return;let n=NU(e);bW=aW(n,bW);let r=document.activeElement instanceof HTMLElement&&gW.contains(document.activeElement)?document.activeElement.dataset.prKey:null,i=iW(UW()),a=n.filter(e=>e.rows.length>0).map(e=>{let t=A(`section`,`pr-queue-section`);t.append(A(`h3`,`pr-section-heading`,`${e.title} ${e.rows.length}`));for(let{pr:n,parentKey:r,depth:a}of e.rows){let e=A(`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===bW)),e.title=`${n.key}: ${PU(n.stage)}`;let o=A(`span`,`pr-queue-glyph`);o.append(mv(IU(n.stage),FU(n.stage)));let s=A(`span`,`pr-queue-top`);s.append(A(`strong`,`pr-queue-ref`,n.key),A(`span`,`pr-queue-title`,n.title));let c=A(`span`,`pr-queue-bottom`);r&&c.append(A(`span`,`my-pr-stage`,`Stacked on ${r}`));let l=n.state===`MERGED`?n.mergedAt:null,u=l?`merged ${mp(Date.parse(l))}`:`opened ${mp(Date.parse(n.createdAt))}`;c.append(zW(n,{hasGlyph:!1}),A(`span`,`pr-queue-elapsed`,u));let d=vU(n,OW.isFeatureEnabled(vW),mp(n.keepMergeableAttempt?.at));if(d){let e=A(`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`,()=>{bW=n.key;for(let e of gW?.querySelectorAll(`button[data-pr-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.prKey===bW));HW(n),document.documentElement.dataset.layout===`phone`&&_W?.scrollIntoView({block:`start`,behavior:`smooth`})});let f=A(`div`,`my-pr-row-group`);f.append(e),t.append(f);let p=KW(i.get(Ln(n)));p&&(r&&(p.style.paddingInlineStart=`${36+Math.min(a,6)*16}px`),f.append(p))}return t});if(a.length===0&&gW.replaceChildren(A(`p`,`pr-empty`,tW(vW))),a.length>0){let e=nW(vW,Date.now()).filter(e=>e.tone!==`error`).map(e=>A(`p`,e.tone===`error`?`my-pr-error`:`my-pr-note`,e.text));gW.replaceChildren(...e,...a)}xW&&(gW.prepend(xW.notice),xW.update(vW)),r&&ZW(r)?.focus({preventScroll:!0}),HW(e.find(e=>e.key===bW))}function $W(e,t,n){return DW=n?.openTerminal??null,mW||(hW=t,mW=A(`div`,`pr-content`),e.append(mW),xW=PW(`my-prs`,mW),QW(),mW)}function eG(e){let t=AU(e);t&&(vW=t,QW())}function tG(e){let t=e.filter(e=>!CW.has(e.key));if(t.length!==0){for(let e of t)CW.add(e.key);uU(cW(t))}}function nG(e){if(!e){for(let[e,t]of wW)window.clearTimeout(t.timer),SW.set(e,{head:t.head,phase:`failed`,text:NW});wW.size!==0&&(wW.clear(),QW())}}function rG(e){let t=pW(e);if(!t)return;let n=wW.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),wW.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=rW(vW?.prs??[],Un).find(e=>e.key===t.key);r&&tG([r])}Wn(JW);var iG=fe.options.join(`|`),aG=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${iG})\*\*`;function oG(e){return[...e.matchAll(new RegExp(aG,`g`))].flatMap(e=>{let t=fe.safeParse(e[2]);return t.success?[t.data]:[]})}function sG(e){let t=new RegExp(String.raw`^${aG}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=fe.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function cG(e){let t=e.trimStart();return t.startsWith(`> [!NOTE]
|
|
167
|
+
> Automated review. Not written by a human.`)?t.slice(53).trim():e.trim()}function lG(e,t){if(!e)return null;let n=e=>{let n=t(e.key);return n?{...e,checksState:n.rollupState,reviewDecision:Ce(n.reviewDecision,n.opinionatedWriterReviewStates),isDraft:n.isDraft,liveHead:n.headRefOid,prStage:gU(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 uG={"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 dG(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 fG={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`}},pG={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 mG(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?pG[t.state]:null;if(!t)return fG[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?fG[e.postedEvent]:pG[t.state]}var hG={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function gG(e){let{reason:t}=dG(e),n=hG[t];return n?{text:uG[t],icon:n}:null}function _G(e){return gG(e)?.text??null}var vG={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`},handReview:{tone:`warn`,icon:`fork`,meaning:`From a fork`}};function yG(e,t){let n=_G(t);return n?`${e}, ${n}`:e}function bG(e){if(we(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===XG(e))}var xG={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function SG(e,t){if(e.prStage)return{tone:FU(e.prStage),icon:IU(e.prStage),meaning:PU(e.prStage)};let n=vG[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:yG(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:yG(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=bG(e)?mG(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=mG(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=gG(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&TG(e)?xG:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function CG(e){let t=e.viewerThreads;return t!==void 0&&t.total>0&&t.resolved===t.total}function wG(e){return e.status===`posted`&&TG(e)}function TG(e){if(!CG(e)||we(e))return!1;let t=XG(e);return e.status===`posted`&&e.postedEvent===`APPROVE`&&e.reviewedHead===t?!1:!(e.githubReviews??[]).some(e=>e.isViewer&&e.state===`APPROVED`&&e.commit===t)}function EG(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 DG(e){return`${e} ${e===1?`comment`:`comments`}`}function OG(e,t,n){let r=[`${DK(e.repo,e.number)}: ${e.title}`],i=`reviewedHead`in e?e.assessment?.goal.trim():``;if(i&&r.push(i),r.push(SG(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(`
|
|
168
|
+
`);let a=EG(e.viewerThreads);a&&r.push(a);let o=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${HG(e.verdict)}, ${DG(o)}`);let s=iK(e);s&&r.push(`You ${WG[s.state]} at ${ce(s.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(qK(e));let c=cK(e,{isViewerShown:t!==`posted`});for(let[e,t]of c.entries())r.push(sK(t.text,n.githubReviews?.[e]??null));return r.join(`
|
|
169
|
+
`)}function kG(e){let t=e.inReview.length+e.queued.length;return t===0?``:` ${t} ${t===1?`review is`:`reviews are`} still running.`}function AG(e){return e.ready.length+e.attention.length+e.handReview.length>0?null:`Nothing needs you right now.${kG(e)}`}function jG(e,t){return[...e.ready,...e.attention].filter(e=>e.key!==t).length>0?{kind:`banner`,title:`New pull requests need you`,detail:`Pick one from the queue.`}:e.handReview.length>0?{kind:`handReview`,detail:`From a fork, so the agent cannot check out its branch. Review on GitHub.${kG(e)}`}:{kind:`banner`,title:`All caught up`,detail:AG({...e,ready:[],attention:[]})??``}}function MG(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}function NG({action:e,pullRequest:t,warning:n,isActedSelected:r}){let i=iq(e),a=`${t}: ${MG(i)}`;return n.trim()?{statusText:i,shouldAdvance:!1,notice:{text:`${a} ${MG(n)}`,tone:`error`}}:{statusText:i,shouldAdvance:r,notice:null}}function PG(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 FG(e,t,n){return n?DK(e,t):`#${t}`}var IG={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},LG={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},RG=`lanes-team-review`,zG=`team-review-enabled`,BG=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),VG={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function HG(e){return VG[e]}var UG=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),WG=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),GG=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),KG=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`}),qG=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 JG(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=>ZG(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[dG(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(ZG(r).length>0||wG(r)){n.actionable.push(r);continue}let e=(r.status===`ready`||r.status===`stale`||r.status===`error`)&&!nK(r);e&&t.noReviewNeeded.push(r),r.status===`ready`&&!e&&n[dG(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 YG(e,t){return e.commit===t?e.isViewer||ve.has(e.state):!1}function XG(e){return e.liveHead??e.reviewedHead}function ZG(e){return(e.threads??[]).filter(e=>!e.isNit&&!e.isResolved)}function QG(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 $G(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=QG(t,XG(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 eK=40;function tK(e,t){return e.split(`
|
|
170
|
+
`).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/eK)),0)>t}function nK(e){return ZG(e).length>0?!0:we(e)?!1:TG(e)?!0:!(e.githubReviews??[]).some(t=>YG(t,XG(e)))}function rK(e,t){let n=WG[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function iK(e){if(we(e))return null;let t=(e.githubReviews??[]).filter(e=>e.isViewer&&ve.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!t?.commit||t.commit===XG(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 aK(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 ${ce(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${i}, so this review covers what changed after ${r}.`:`${i}.`}function oK(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function sK(e,t){return t?`${e}, ${t}`:e}function cK(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:oK(t.state),text:rK(t,XG(e)),submittedAt:t.submittedAt}))}function lK(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 uK(e){return[...e.ready,...e.attention].map(e=>e.key)}function dK({capturedOrder:e,actedKey:t,groups:n}){let r=uK(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 fK(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 pK(e){return IG[e]}function mK(e){return LG[e]}function hK(e){let t=oG(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function gK(e){let t=hK(e);return fe.options.find(e=>t.includes(e))??null}function _K(e){return gK(e)!==`LOW`}var vK=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(`.`)),yK=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function bK(e){let t=yK.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:vK.has(n.slice(r+1).toLowerCase())}var xK=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function SK(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:bK(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function CK(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:SK(e.slice(t?.[0].length??0))}})}function wK(e){let t=cG(e),n=sG(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(xK)){let t=e.index??0;i.push(...CK(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(...CK(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 EK(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 DK(e,t){return`${e}#${t}`}function OK(e){return e===`full`?`full`:`light`}function kK(e){return e.priorReviewedHead?`${OK(e.tier)} review of changes since ${ce(e.priorReviewedHead)}`:`${OK(e.tier)} review`}function AK(e){return e.reasons.join(`, `)}function jK(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 MK(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 NK(e){return e?{label:`Coverage`,preview:MK(e)}:{label:`Review audit`,preview:``}}var PK=`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.`,FK=new Set([`error`,`stale`,`discarded`,`posted`]);function IK(e){return FK.has(e)}function LK(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function RK(e){let t=LK(e);return t?`Reviewed at ${ce(e.reviewedHead)}. The pull request is now at ${ce(t)}.`:null}function zK(e){let t=LK(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function BK(e){let t=[`at ${ce(e.head)}`,DG(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function VK(e){let t=HK(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function HK(e){return BG[e]??String(e).toLowerCase()}function UK(e){return UG[e]??`dim`}function WK(e){return GG[e]??e}function GK(e,t){return`${pu(t-e.startedAt)} elapsed`}function KK(e,t){let n=[GK(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${pu(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function qK(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 JK(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function YK(e){return JK(e.path,e)}function XK(e){return JK(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function ZK(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function QK(e){return{key:e,action:`discard`,body:``,comments:[]}}function $K(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 eq=Object.freeze({approve:`Approve and comment`,"approve-only":`Approve`,comment:`Comment`,discard:`Not mine`,requeue:`Queue review`,"resolve-thread":`Resolve`});function tq(e){return eq[e]}function nq(e){return e.status===`ready`?{footer:[`comment`,`approve-only`,`approve`],more:[`requeue`,`discard`]}:Ne(e)?{footer:[`approve-only`],more:[`requeue`]}:e.status===`error`||e.status===`stale`?{footer:[`requeue`],more:[`discard`]}:IK(e.status)?{footer:[`requeue`],more:[]}:{footer:[],more:[]}}function rq(e){return qG[e]}function iq(e){return KG[e]}function aq(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 oq(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 sq(e){return e?.configured&&e.reason||null}function cq(e){return JG(e).ready.map(e=>`${e.key}@${e.reviewedHead}`)}function lq(e){return Wl(cq(e))}function uq({readyEntries:e,acknowledged:t,unseen:n,isLooking:r}){let i=new Set(e),a=new Set(t.split(`|`).filter(e=>i.has(e))),o=new Set(n.split(`|`).filter(e=>i.has(e))),s=[...i].filter(e=>!a.has(e));if(r)return{isShown:!1,acknowledged:Wl([...i]),unseen:Wl([...o])};for(let e of s)o.add(e);return{isShown:s.length>0,acknowledged:Wl([...a]),unseen:Wl([...o])}}function dq(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${cK(e).map(e=>e.text).join(`, `)}`}function fq(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 pq(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(`
|
|
171
|
+
`)!==t.inFlight.map(e=>e.key).join(`
|
|
172
|
+
`)||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 mq=12e4,hq=`The server did not answer within ${mq/1e3} s. Check GitHub before trying again.`,gq=`${W} Check GitHub before trying again.`,_q=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,vq=`GitHub review`,yq=null,bq=null,xq=null,Sq=null,Cq=null,wq=null,Tq=null,Eq=null,Dq=null,Oq=null,kq=null,Aq=null,jq=null,Mq=null,Nq=null,Pq=null,Fq=null,Iq=new Map,Lq=gp(()=>xq),Rq=gp(()=>xq),zq=gp(()=>xq),Bq=new WeakMap,Vq=new Map,Hq=new Map,Uq=new Map,Wq=Kc(),Gq=Jc(),Kq=new Set(Gq.split(`|`).filter(Boolean));function qq(e){let t=pK(e),n=A(`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=Gd(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(Wd(`path`,{d:_q,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=Gd(9,11),i=e<t.filledCount;r.append(Wd(`path`,{d:_q,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function Jq({verdict:e}){let t=A(`span`,`pr-verdict-seal`);t.dataset.tone=UK(e);let n=Gd(20,20),r=mK(e);return n.append(Wd(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(Wd(`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(Wd(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(Wd(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(Wd(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,A(`span`,null,VK(e))),t}function Yq(){let e=Gd(16,16);return e.append(Wd(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(Wd(`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(Wd(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function Xq(e){return ur(`pr-link`,DK(e.repo,e.number),e.url)}function Zq(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function Qq(e,t){let n=Zq(t);if(n===null)return null;let r=A(`span`,null,`${e}${e?` `:``}${mp(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function $q(e){let t=Bq.get(e);t&&(e.title=`${t()}${e.dataset.unseen?`
|
|
173
|
+
New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function eJ(){zq.reset(),tJ(xq)}Eh(eJ);function tJ(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))Bq.has(t)&&($q(t),zq.onTick(()=>$q(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=bq?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?iK(e):null;if(!n)continue;let r=()=>{t.textContent=aK(n,rJ(n.submittedAt))};r(),zq.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:mp(n),i=wh()?sK(vq,r):sK(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),zq.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??``;zq.track(t,e,()=>`${n}${n?` `:``}${mp(e)}`)}}}function nJ(e,t,n,r=!0){let i=cK(e,{isViewerShown:r});if(i.length===0)return null;let a=A(`span`,t),o=lr(i.map(e=>({login:e.login,tone:e.tone,title:sK(wh()?vq:e.text,rJ(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=Zq(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(o),a}function rJ(e){let t=Zq(e);return t===null?null:mp(t)}function iJ(e,t,n){let r=A(`span`,n);return r.append(cr({login:e,cssPx:t}),A(`span`,`pr-author-login`,e)),r}function aJ(e,t){return`${DK(e.repo,e.number)}\n${SG(e,t).meaning}`}function oJ(e,t,n){let r=A(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key;let i=t===`ready`&&`reviewedHead`in e?`${e.key}@${e.reviewedHead}`:null;if(i&&Kq.has(i)){let e=A(`span`,`tab-activity active pr-queue-unseen`);e.setAttribute(`aria-hidden`,`true`),r.dataset.unseen=i,r.append(e)}r.setAttribute(`aria-current`,String(e.key===Oq));let a=`reviewedHead`in e?iK(e):null;Bq.set(r,()=>wh()?aJ(e,t):OG(e,t,{opened:rJ(e.prCreatedAt),reviewed:`reviewedHead`in e?rJ(e.reviewedAt):null,posted:`reviewedHead`in e?rJ(e.postedAt):null,viewerApproval:rJ(a?.submittedAt),githubReviews:`reviewedHead`in e?cK(e,{isViewerShown:t!==`posted`}).map(e=>rJ(e.submittedAt)):[]})),$q(r);let o=dJ(e,n);if(t===`inReview`){let t=e,n=A(`span`,`pr-queue-elapsed`);Lq.track(n,t.startedAt,()=>GK(t,Date.now())),o.append(n)}if(t===`queued`){let t=Qq(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),o.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=Qq(``,t.reviewedAt)??Qq(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),o.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(o),sJ(r,e.key,i),r;r.classList.remove(`pr-queue-row-quiet`);let s=SG(e,t),c=A(`span`,`pr-queue-glyph`);c.append(mv(s.icon,s.tone));let l=A(`span`,`pr-queue-bottom`);if(l.append(uJ(s),iJ(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=A(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,l.append(e)}t===`inReview`&&l.append(A(`span`,`pr-phase-label`,WK(e.phase))),r.append(c,o,l);let u=t===`inReview`||t===`queued`?null:nJ(e,`pr-queue-reviewers`,16,t!==`posted`);return u&&l.append(u),sJ(r,e.key,i),r}function sJ(e,t,n){e.addEventListener(`click`,()=>{n&&Kq.delete(n)&&(fY(Wl([...Kq])),e.querySelector(`.pr-queue-unseen`)?.remove(),delete e.dataset.unseen,$q(e)),Oq=t,kq=null,hJ(null);for(let e of wq?.querySelectorAll(`button[data-review-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.reviewKey===Oq));nY(JG(bq)),zq.reset(),tJ(xq),document.documentElement.dataset.layout===`phone`&&Eq?.scrollIntoView({block:`start`,behavior:`smooth`})})}function cJ(e){let t=Object.values(JG(bq)).flat().find(t=>Ln(t)===e.toLowerCase());return t?lJ(t.key):null}function lJ(e){return wq?[...wq.querySelectorAll(`button[data-review-key]`)].find(t=>t.dataset.reviewKey===e)??null:null}function uJ(e){let t=A(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function dJ(e,t){let n=A(`span`,`pr-queue-top`);return n.append(A(`strong`,`pr-queue-ref`,FG(e.repo,e.number,t)),A(`strong`,`pr-queue-ref-compact`,FG(e.repo,e.number,!1)),A(`span`,`pr-queue-title`,e.title)),n}function fJ(e,t){let n=A(`section`,`pr-queue-section`);n.append(A(`h3`,`pr-section-heading`,`Review by hand ${e.length}`));for(let r of e){let e=ur(`pr-queue-row`,``,r.url);Bq.set(e,()=>wh()?aJ(r,`handReview`):OG(r,`handReview`,{opened:rJ(r.prCreatedAt)})),$q(e);let i=SG(r,`handReview`),a=A(`span`,`pr-queue-glyph`);a.append(mv(i.icon,i.tone));let o=A(`span`,`pr-queue-bottom`);o.append(uJ(i),iJ(r.author,16,`pr-queue-author`)),e.append(a,dJ(r,t),o),n.append(e)}return n}function pJ({title:e,detail:t}){let n=A(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=A(`strong`,`pr-caught-up-title`);return r.append(mv(`ready`,`ok`),A(`span`,null,e)),n.append(r,A(`p`,`pr-caught-up-detail`,t)),n}function mJ(e,t){return e.kind===`banner`?[pJ(e)]:[A(`p`,`my-pr-note`,e.detail),fJ(t.handReview,PG(t))]}function hJ(e){Aq=e,jq&&(jq.hidden=e===null,cf(jq,e?.tone??null,e?.text??``))}function gJ(e,t,n,r){let i=A(`section`,`pr-queue-section`);i.append(A(`h3`,`pr-section-heading`,`${e} ${t.length}`));for(let e of t)i.append(oJ(e,n,r));return i}var _J=`Open in session`,vJ=`Preparing the branch and session.`;function yJ(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;cf(r,n,t);let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function bJ(e,t){let n=Iq.get(e);n&&window.clearTimeout(n.timer),Iq.set(e,{requestId:null,timer:0,text:t,tone:`error`}),yJ(e,t,`error`)}function xJ(e,t,n){if(Iq.get(e)?.requestId)return;let r=Fd(`open-team-review-session`);if(!G({type:`open-team-review-session`,requestId:r,key:e})){cf(n,`error`,W);return}let i=window.setTimeout(()=>bJ(e,`The server did not answer within ${mq/1e3} s.`),mq);Iq.set(e,{requestId:r,timer:i,text:vJ,tone:`busy`}),t.disabled=!0,cf(n,`busy`,vJ)}function SJ(e){let t=A(`div`,`pr-session-open`),n=A(`button`,`pr-action pr-session-open-button`,_J);n.type=`button`;let r=Iq.get(e.key);n.disabled=!!r?.requestId;let i=A(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&cf(i,r.tone,r.text),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>xJ(e.key,n,i)),t.append(n,i),t}function CJ(e){let t=A(`div`,`pr-detail-heading`);t.dataset.signature=fq(e);let n=A(`div`,`pr-detail-title`);n.append(Xq(e),A(`h2`,null,e.title));let r=A(`div`,`pr-detail-meta`);r.append(iJ(e.author,20,`pr-detail-author`));let i=A(`span`,null,kK(e));i.title=AK(e),r.append(i);let a=Qq(`Opened`,e.prCreatedAt);if(a&&r.append(a),`reviewedHead`in e){let t=Qq(`Reviewed`,e.reviewedAt);t&&r.append(t);let n=Qq(`Posted`,e.postedAt);n&&r.append(n)}let o=`reviewedHead`in e?nJ(e,`pr-detail-github`,20):null;if(o&&r.append(o),t.append(n,r,SJ(e)),`reviewedHead`in e){let n=EG(e.viewerThreads);if(n){let r=A(`p`,`pr-viewer-threads`,n);CG(e)&&(r.dataset.state=`all-resolved`),t.append(r)}}let s=`reviewedHead`in e?iK(e):null;if(s){let n=A(`p`,`pr-rereview-notice`,aK(s,rJ(s.submittedAt)));n.dataset.reviewKey=e.key,t.append(n)}return t}function wJ(e,t){let n=e.querySelector(`:scope > .pr-detail-heading`);if(!n||n.dataset.signature===fq(t))return e;let r=CJ(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 TJ(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function EJ(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(A(`code`,null,n.text));continue}let t=A(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function DJ(e,t){return EJ(e,SK(t))}function OJ(e,t,n){let r=A(`div`,`pr-assessment-part`);return n&&(r.dataset.tone=n),r.append(A(`h4`,`pr-assessment-title`,e),t),r}function kJ(e){let t=A(`ul`,`pr-assessment-list`);for(let n of e)t.append(DJ(A(`li`,null),n));return t}function AJ(e){let t=jK(e.assessment);if(t.length===0)return[];let n=A(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(A(`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(DJ(A(`p`,t),e.text))}return[n]}function jJ(e){let t=A(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=A(`div`,`pr-verdict-line`);return n.append(Jq(e)),t.append(n),e.assessment?(t.append(DJ(A(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t):(t.append(A(`p`,`pr-verdict-legacy`,PK)),t)}function MJ(e){let t=A(`details`,`pr-disclosure pr-coverage`),n=A(`summary`,`pr-disclosure-summary`),r=NK(e.assessment);n.append(A(`span`,`pr-disclosure-label`,r.label),A(`span`,`pr-disclosure-preview`,r.preview)),t.append(n);let{assessment:i}=e;return i?(i.checked.length>0&&t.append(OJ(`What the review checked`,kJ(i.checked))),i.gaps.length>0&&t.append(OJ(`Not covered`,kJ(i.gaps),`warning`)),t):(t.append(DJ(A(`p`,`pr-verdict-summary`),e.summary)),t)}function NJ(e){if(e.kind===`code`){let t=A(`pre`,`pr-comment-code`),n=A(`code`,null);return n.textContent=e.code,t.append(n),t}let t=A(`p`,`pr-comment-paragraph`);if(e.lead){let n=A(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(Yq()),n.append(e.lead),t.append(n,` `)}return EJ(t,e.segments)}function PJ(e){let t=A(`details`,`pr-comment-content`),n=A(`summary`,`pr-comment-header`),r=wK(e.body),i=gK(e);i&&n.append(qq(i));let a=A(`span`,`pr-comment-location`,XK(e));a.title=YK(e),n.append(a),n.append(A(`span`,`pr-comment-preview`,TK(r.paragraphs))),t.append(n);let o=A(`div`,`pr-comment-paragraphs`);for(let e of r.paragraphs)o.append(NJ(e));return t.append(o),t.open=i===`HIGH`||i===`CRITICAL`,t}function FJ(e,t){let n=A(`details`,`pr-disclosure pr-earlier-review`),r=A(`summary`,`pr-disclosure-summary`);r.append(A(`span`,`pr-disclosure-label`,`Earlier review`),A(`span`,`pr-disclosure-preview`,BK(e)));let i=A(`div`,`pr-earlier-review-body`),a=A(`div`,`pr-verdict-line`);a.append(Jq(e)),i.append(a),e.summary.trim()&&i.append(DJ(A(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=A(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(PJ(t)),i.append(e)}return n.append(r,i),n.open=t,n}function IJ(e){let t=RK(e);if(!t)return[];let n=A(`p`,`pr-changed-since`,t);return n.append(` `,ur(`pr-changed-since-link`,`Compare changes`,zK(e),`Open the commits since this review on GitHub`)),[n]}function LJ(e){let t=bq?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return Nq=null,[];if(Nq?.key===e.key&&Nq.head===t.head)return[Nq.element];let n=FJ(t,!1);return Nq={key:e.key,head:t.head,element:n},[n]}function RJ(e,t,n,r){let i=A(`article`,`pr-comment-card`),a=A(`input`,`pr-comment-checkbox`);return a.type=`checkbox`,a.checked=n.has(t),a.setAttribute(`aria-label`,`Include comment on ${YK(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,PJ(e)),i}var zJ=`More review actions`,BJ=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function VJ(e,t,n,r){let i=uK(JG(bq));hJ(null);let a=Fd(`team-review-action`);if(!G({type:`team-review-action`,requestId:a,...n}))return!1;let o=window.setTimeout(()=>{Uq.delete(t.key),r(!1,hq)},mq);return Uq.set(t.key,{requestId:a,action:n.action,origin:e,capturedOrder:i,pullRequest:DK(t.repo,t.number),timer:o,settle:r}),!0}function HJ(e){let t=A(`footer`,`pr-footer`),n=GJ(`discard`,()=>{Uq.has(e.key)||(n.disabled=!0,cf(i,`busy`,rq(`discard`)),!VJ(`other`,e,QK(e.key),a)&&a(!1,W))}),r=Uq.has(e.key);n.disabled=r;let i=A(`span`,`pr-action-status`);r&&cf(i,`busy`,rq(`discard`)),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(t,r)=>{n.disabled=t,cf(i,t?`ok`:`error`,r),t||hJ({text:`${DK(e.repo,e.number)}: ${r}`,tone:`error`})};return t.append(n,i),t}var UJ=0;function WJ(e,t){let n=A(`div`,`pr-detail-more`),r=A(`button`,`review-icon-button review-more-button`);r.type=`button`,r.title=zJ,r.setAttribute(`aria-label`,zJ),r.setAttribute(`aria-haspopup`,`menu`),r.setAttribute(`aria-expanded`,`false`),r.append(Zd(Yd)),UJ+=1;let i=A(`div`,`review-more-menu`);i.id=`pr-more-menu-${UJ}`,i.setAttribute(`role`,`menu`),i.setAttribute(`aria-label`,zJ),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=A(`button`,`review-btn`,tq(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=A(`button`,`pr-action`,tq(e));return n.type=`button`,n.dataset.action=e,n.addEventListener(`click`,()=>t(e)),n}function KJ(e,t){e.querySelector(`:scope > .pr-detail-heading > .pr-detail-title`)?.append(t)}function qJ(e){let t=A(`article`,`pr-detail`),n=A(`div`);n.dataset.reviewThreads=``,t.append(CJ(e),...AJ(e),n,jJ(e)),ZJ(t,e);let r=A(`section`,`pr-posts`);r.setAttribute(`aria-label`,`Inline comments`);let i=A(`div`,`pr-posts-heading`);i.append(A(`h3`,null,`Inline comments`),A(`span`,null,String(e.comments.length))),r.append(i);let a=A(`details`,`pr-disclosure`),o=A(`summary`,`pr-disclosure-summary`),s=A(`span`,`pr-disclosure-preview`);o.append(A(`span`,`pr-disclosure-label`,`Review body`),s),a.append(o);let c=A(`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(`
|
|
174
|
+
`).length+1)),c.spellcheck=!0;let l=()=>{s.textContent=cG(c.value).split(/\r?\n/).map(e=>e.trim()).find(Boolean)||`No review body`};c.addEventListener(`input`,l),l(),a.append(c);let u=A(`details`,`pr-disclosure`);u.append(A(`summary`,`pr-disclosure-summary`,`Add a note`));let d=A(`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)=>_K(e)?[t]:[])),p=A(`footer`,`pr-footer`),m=A(`span`,`pr-action-status`);m.setAttribute(`role`,`status`),m.setAttribute(`aria-live`,`polite`);let h=()=>{Uq.has(e.key)||m.dataset.tone===`ok`||sf(m)};for(let[t,n]of e.comments.entries())r.append(RJ(n,t,f,h));t.append(r,a,u,MJ(e)),e.earlierReview&&t.append(FJ(e.earlierReview,!1));let g=[],_=e=>{for(let t of g)t.disabled=e;t.dataset.busy=String(e)},v=(e,t)=>{_(e),cf(m,e?`ok`:`error`,t)},y=t=>{if(Uq.has(e.key))return;_(!0),cf(m,`busy`,rq(t));let n=e.comments.filter((e,t)=>f.has(t));VJ(`ready`,e,$K(e,t,ZK(d.value,c.value),n),v)||v(!1,W)},b=nq(e),x=b.footer.map(e=>GJ(e,y)),S=WJ(b.more,y);return g.push(...x,...S.controls),KJ(t,S.element),p.append(...x,m),t.append(p),{signature:dq(e),element:t,settle:v}}function JJ(e){let t=Vq.get(e.key);if(t&&(Uq.has(e.key)||t.signature===dq(e)))return ZJ(t.element,e),wJ(t.element,e);let n=qJ(e);return Vq.set(e.key,n),n.element}function YJ(e,t){let n=A(`article`,`pr-detail`),r=A(`div`,`pr-detail-heading`),i=A(`div`,`pr-detail-title`);i.append(Xq(e),A(`h2`,null,e.title));let a=A(`div`,`pr-detail-meta`);a.append(iJ(e.author,20,`pr-detail-author`));let o=Qq(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,SJ(e)),n.append(r,A(`p`,`pr-attention-detail`,aq(t)),HJ(e)),n}function XJ(e){let t=A(`article`,`pr-detail`);t.append(CJ(e));let n=A(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=A(`ol`,`pr-progress-tracker`);for(let t of EK(e.phase)){let e=A(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(A(`span`,`pr-progress-bar`),A(`span`,null,t.label)),r.append(e)}let i=A(`div`,`pr-progress-text`);Rq.track(i,e.startedAt,()=>KK(e,Date.now())),n.append(r,i),t.append(n);let a=A(`section`,`pr-steps`);a.append(A(`h3`,null,`Latest agent steps`));let o=A(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=A(`li`,`pr-step`),r=A(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(A(`span`,`pr-step-at`,mu(e.startedAt,t.at)),A(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...LJ(e),HJ(e)),t}function ZJ(e,t){if(Uq.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(...$J(t)),n.dataset.reviewThreads=r)}function QJ(e,t,n,r){let i=A(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(A(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!tK(e,t?3:8))return i;let a=A(`details`,`pr-thread-disclosure`);return a.append(A(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),A(`p`,`pr-thread-body`,e)),n&&a.append(ur(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function $J(e){let t=$G(e);if(t.length===0)return[];let n=A(`section`,`my-pr-threads-section`);n.append(A(`h3`,`pr-section-heading`,`Answered threads`));let r=A(`div`,`my-pr-threads`);for(let n of t){let t=A(`div`,`my-pr-thread pr-thread-card`),i=A(`div`,`my-pr-thread-heading pr-thread-heading`),a=A(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(ur(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(A(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(A(`div`,`my-pr-thread-meta`,`Your comment`),QJ(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let o=A(`div`,`pr-detail-meta pr-thread-reply-meta`);o.append(A(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let s=Qq(``,n.thread.lastReplyAt);s&&o.append(s);let c=A(`span`,`pr-action-status`);c.setAttribute(`role`,`status`);let l=A(`button`,`pr-action`,`Resolve`);l.type=`button`,l.disabled=!n.canResolve||Uq.has(e.key);let u=(e,t)=>{l.disabled=e||!n.canResolve,cf(c,e?`ok`:`error`,t)};l.addEventListener(`click`,()=>{Uq.has(e.key)||(l.disabled=!0,cf(c,`busy`,rq(`resolve-thread`)),!VJ(`other`,e,$K(e,`resolve-thread`,``,[],n.thread.id),u)&&u(!1,W))}),t.append(o),n.thread.lastReplyBody&&t.append(QJ(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let d=A(`footer`,`pr-thread-footer`);d.append(c,l),t.append(d),n.thread.resolveError&&t.append(A(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function eY(e){let t=A(`article`,`pr-detail`);if(t.append(CJ(e),...AJ(e),...$J(e)),e.status===`posted`&&t.append(jJ(e),MJ(e)),e.status!==`posted`&&t.append(A(`p`,`pr-attention-detail`,qK(e))),e.status===`stale`&&t.append(...IJ(e)),e.earlierReview&&t.append(FJ(e.earlierReview,e.status===`stale`)),!IK(e.status))return Hq.set(e.key,{signature:TJ(e),element:t,settle:()=>{}}),t;let n=A(`footer`,`pr-footer`),r=nq(e),i=A(`span`,`pr-action-status`,r.footer.includes(`approve-only`)?BJ:``);i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=[],o=(e,t)=>{for(let t of a)t.disabled=e;cf(i,e?`ok`:`error`,t)},s=t=>{if(!Uq.has(e.key)){for(let e of a)e.disabled=!0;cf(i,`busy`,rq(t)),!VJ(`other`,e,$K(e,t,``,[]),o)&&o(!1,W)}},c=r.footer.map(e=>GJ(e,s));if(a.push(...c),r.more.length>0){let e=WJ(r.more,s);a.push(...e.controls),KJ(t,e.element)}return n.append(...c,i),t.append(n),Hq.set(e.key,{signature:TJ(e),element:t,settle:o}),t}function tY(e){if(!IK(e.status)&&$G(e).length===0)return eY(e);let t=Hq.get(e.key);return t&&(Uq.has(e.key)||t.signature===TJ(e))?wJ(t.element,e):eY(e)}function nY(e){if(!Eq)return;if(Oq=fK(e,Oq,kq!==null),!Oq){let t=kq?.actedKey??null,n=t&&[...e.ready,...e.attention].some(e=>e.key===t)?t:null;kq&&={actedKey:n},Eq.replaceChildren(...mJ(jG(e,n),e)),Mq=null;return}let t=e.ready.find(e=>e.key===Oq&&(ZG(e).length>0||wG(e)));if(t&&t.status!==`ready`){let e=`threads:${TJ(t)}`,n=tY(t);if(Mq===e&&Eq.firstElementChild===n)return;Eq.replaceChildren(n),Mq=e;return}let n=[...e.ready,...e.noReviewNeeded].find(e=>e.key===Oq&&e.status===`ready`);if(n){let e=`ready:${dq(n)}`,t=JJ(n);if(Mq===e)return;Eq.replaceChildren(t),Mq=e;return}let r=e.inReview.find(e=>e.key===Oq);if(r){Rq.reset(),Eq.replaceChildren(XJ(r)),Mq=`inReview:${r.key}`;return}let i=e.queued.find(e=>e.key===Oq);if(i){let t=`queued:${i.key}:${e.inReview.length}`;if(Mq===t)return;Eq.replaceChildren(YJ(i,e.inReview.length)),Mq=t;return}let a=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===Oq);a&&(Eq.replaceChildren(tY(a)),Mq=`${a.status}:${a.key}`)}function rY(){let e=A(`p`,`pr-empty`,oq(bq));return bq&&!bq.configured&&e.append(` `,cm(RG,zG,`Open Team review settings`)),e}function iY(){let e=sq(bq);return e?[A(`p`,`my-pr-note`,e)]:[]}function aY(e){for(let t of[...Vq.keys()])e.has(t)||Uq.has(t)||Vq.delete(t);let t=new Set(bq?.drafts.filter(e=>IK(e.status)).map(e=>e.key)??[]);for(let e of Hq.keys())t.has(e)||Uq.has(e)||Hq.delete(e)}function oY(){if(!xq||!Sq||wq?.isConnected)return;let e=XB({queueLabel:`Review queue`,scopeTabs:Sq,resizerLabel:`Resize review queue`});wq=e.queue,jq=A(`p`,`pr-action-status pr-action-notice`),jq.setAttribute(`role`,`status`),jq.setAttribute(`aria-live`,`polite`),Eq=A(`div`,`pr-detail-body`),e.detail.append(jq,Eq),hJ(Aq),Cq&&e.foot.append(Cq.control),xq.replaceChildren(e.columns),Mq=null,Tq=null}function sY(e){if(!e)return;e.querySelector(`.pr-team-chip`)?.remove();let t=bq?.team;if(!t)return;let n=A(`span`,`pr-team-chip`);n.append(cr({login:t.slug,url:t.avatarUrl,cssPx:16}),A(`span`,null,t.name)),e.insertBefore(n,e.querySelector(`.pr-queue-toggle`))}function cY(){let e=document.activeElement;return!(e instanceof HTMLElement)||!wq?.contains(e)?null:e.dataset.reviewKey??null}function lY(e){e&&lJ(e)?.focus({preventScroll:!0})}function uY(){if(!xq)return;let e=cY(),t=JG(bq);if(aY(new Set([...t.ready,...t.noReviewNeeded].map(e=>e.key))),zq.reset(),!bq?.configured||!lK(t)&&kq===null){Lq.reset(),Rq.reset();let e=JB(Sq);sY(e),xq.replaceChildren(e,...Cq?[Cq.notice]:[],...iY(),rY(),YB(Cq?.control??null)),Cq?.update(bq),wq=null,Tq=null,Eq=null,jq=null,Dq=null,Mq=null;return}if(oY(),!wq)return;sY(xq.querySelector(`.pr-queue-head`)),Oq=fK(t,Oq,kq!==null);let n=PG(t),r=JSON.stringify([t,n,Oq,sq(bq)]);if(r===Tq){Cq?.update(bq),nY(t),tJ(xq);return}Tq=r,Lq.reset();let i=[],a=AG(t);a&&i.push(pJ({title:`All caught up`,detail:a})),t.ready.length&&i.push(gJ(`Ready`,t.ready,`ready`,n)),t.inReview.length&&(Dq=gJ(`In review`,t.inReview,`inReview`,n),i.push(Dq)),t.queued.length&&i.push(gJ(`Queued`,t.queued,`queued`,n)),t.noReviewNeeded.length&&i.push(gJ(`Already reviewed`,t.noReviewNeeded,`settled`,n)),t.handReview.length&&i.push(fJ(t.handReview,n)),t.attention.length&&i.push(gJ(`Needs attention`,t.attention,`attention`,n)),t.posted.length&&i.push(gJ(`Waiting on author`,t.posted,`posted`,n)),t.discarded.length&&i.push(gJ(`Not mine`,t.discarded,`discarded`,n)),wq.replaceChildren(...Cq?[Cq.notice]:[],...iY(),...i),Cq?.update(bq),lY(e),nY(t),tJ(xq)}function dY(e){e!==Wq&&(Wq=e,qc(e))}function fY(e){e!==Gq&&(Gq=e,Yc(e))}function pY(){if(!bq)return;let e=uq({readyEntries:cq(bq),acknowledged:Wq,unseen:Gq,isLooking:!_r(xq)});dY(e.acknowledged),fY(e.unseen),Kq=new Set(e.unseen.split(`|`).filter(Boolean)),Pq?.(e.isShown);for(let t of document.querySelectorAll(`.pr-scope-tab[data-scope="team"] .tab-activity`))t.classList.toggle(`active`,e.isShown)}function mY(){bq&&(dY(lq(bq)),pY())}function hY(e){Pq=e,pY()}function gY(e,t,n){return Fq=n?.openTerminal??Fq,xq||(Sq=t,xq=A(`div`,`pr-content`),e.append(xq),Cq=PW(`team-review`,xq),Lq.ensure(),Rq.ensure(),zq.ensure(),uY(),xq)}function _Y(e){let t=We.safeParse(e);if(!t.success)return;let n=bq;yq=t.data,bq=lG(yq,Un),pY(),!(bq&&pq(n,bq)&&vY())&&uY()}function vY(){if(!bq||!Dq?.isConnected)return!1;Lq.reset(),zq.reset();let e=cY(),t=JG(bq),n=gJ(`In review`,t.inReview,`inReview`,PG(t));return Dq.replaceWith(n),Dq=n,lY(e),t.inReview.some(e=>e.key===Oq)&&nY(t),tJ(xq),!0}function yY(e){let t=e.key;if(!t)return;let n=Iq.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?bJ(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),Iq.delete(t),yJ(t,``,null),Fq?.(e.sessionId)))}function bY(e){if(e)return;for(let[e,t]of Iq)t.requestId&&bJ(e,W);let t=[...Uq.values()];Uq.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,gq)}function xY(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=Uq.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),Uq.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:iq(n.action)),Hq.delete(t.key),Mq=null,t.ok===!0&&uY();return}let r=(n.origin===`ready`?Vq:Hq).get(t.key);if(t.ok===!0){n.origin===`other`&&Hq.delete(t.key);let e=NG({action:n.action,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:Oq===t.key});if((r?.settle??n.settle)?.(!0,e.statusText),(e.notice||e.shouldAdvance)&&hJ(e.notice),!e.shouldAdvance)return;Oq=dK({capturedOrder:n.capturedOrder,actedKey:t.key,groups:JG(bq)}),Oq===null&&(kq={actedKey:t.key}),uY()}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}Wn(()=>{bq=lG(yq,Un),pY(),uY()});function SY(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`);if(a.className=`pr-scope-tab`,a.type=`button`,a.dataset.scope=i,a.setAttribute(`role`,`tab`),a.setAttribute(`aria-selected`,String(i===e)),a.tabIndex=i===e?0:-1,a.textContent=i===`team`?`Team`:`Mine`,i===`team`){let e=document.createElement(`span`);e.className=`tab-activity`,e.setAttribute(`aria-hidden`,`true`),a.append(e)}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 CY=null;function wY(e){return CY?.(e)??!1}function TY(){Pc()===`team`&&mY()}function EY(e,t){let n=(e,t)=>{if(s(e),TY(),!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=SY(`team`,n),i=SY(`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),gY(a,r,t),$W(o,i,t);function s(e){qB(),a.hidden=e!==`team`,o.hidden=e!==`mine`,Fc(e)}CY=e=>{let n=XW(e),r=n??cJ(e);return!r||!t?.openReviews()?!1:(s(n?`mine`:`team`),r.click(),r.focus({preventScroll:!0}),r.scrollIntoView({block:`nearest`}),TY(),!0)},s(Pc())}var DY={OPEN:0,MERGED:1,CLOSED:2};function OY(e){return e?DY[e.state]:DY.OPEN}function kY(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:ng(void 0)};let i=FU(t.stage);return{key:n,text:r,url:t.url,hoverText:`${e.repo}: ${t.title} (${PU(t.stage)})`,look:{icon:IU(t.stage),tone:i},tier:ng(i)}}function AY(e,t){let n=e.map(e=>{let n=t(Ln(e));return{link:e,pr:n?gU(n):void 0}});return n.sort((e,t)=>OY(e.pr)-OY(t.pr)||t.link.linkedAt-e.link.linkedAt),n.map(({link:e,pr:t})=>kY(e,t))}var jY=new Map;function MY(e){return document.querySelectorAll(`[data-pr-chips-for="${CSS.escape(e)}"]`)}function NY(e){return AY(jY.get(e)??[],Un).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:()=>{wY(e.key)||jg(e.url)}}))}function PY(e,t){let n=hv(e,e),r=A(`button`,`session-pr-chip-unlink`);r.append(Zd(Kd)),r.type=`button`,r.title=`Unlink ${e.key} from this session`,r.setAttribute(`aria-label`,`Unlink pull request ${e.key}`),r.addEventListener(`click`,n=>{n.stopPropagation(),n.preventDefault(),Rf({title:`Unlink pull request`,message:`Unlink ${e.key} from this session? Its checks and reviews stop showing here until you link it again.`,confirmLabel:`Unlink`,danger:!0,onConfirm:()=>{Xv(t,{type:`unlink-session-pr`,id:t,key:e.key})}})});let i=A(`span`,`session-pr-chip-item`);return i.append(n,r),i}function FY(e,t){e.dataset.prChipsFor=t,_v(e,NY(t),e=>PY(e,t))}function IY(e){for(let t of e){let e=t.dataset.prChipsFor;e&&FY(t,e)}xee()}function LY(e,t){let n=nt.shape.links.safeParse(t??[]);jY.set(e,n.success?n.data:[]),IY(MY(e)),YW(jY)}function RY(e){jY.delete(e),YW(jY)}Wn(()=>IY(document.querySelectorAll(`[data-pr-chips-for]`)));var zY=null,BY=new Set;function VY(){zY?.setAttribute(`aria-pressed`,String(!cc()))}function HY(e){lc(e),VY();for(let t of BY)t(e)}function UY(e){BY.add(e)}function WY(e){zY=e,VY(),e.addEventListener(`click`,()=>HY(!cc()))}var GY={mine:`Mine`,run:`Run`,cancel:`Cancel`},KY={mine:`Mining merged pull requests.`,run:`Starting the run.`,cancel:`Cancelling the run.`},qY=null,JY=null,YY=null,XY=!0,ZY=new Map,QY=new Map;function $Y(e){return e===null?`n/a`:`${Math.round(e*100)}%`}function eX(e){if(e===null)return`n/a`;let t=Math.round(e*100);return t>0?`+${t}`:String(t)}function tX(e,t){YY?.({type:`benchmark-action`,requestId:Fd(`benchmark`),suiteId:e,action:t})===!0?(ZY.set(e,t),QY.set(e,KY[t]),sX()):(QY.set(e,W),sX())}function nX(e,t,n){let r=A(`button`,`bench-action-button`,GY[t]);return r.type=`button`,r.disabled=n,r.addEventListener(`click`,()=>tX(e.id,t)),r}function rX(e){let t=JY?.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 iX(e){let t=A(`td`,`bench-score`,$Y(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 aX(e){let t=e.armIds.filter(t=>t!==e.baselineArm),n=A(`table`,`bench-table`),r=A(`tr`);r.append(A(`th`,null,`Case`),...e.armIds.map(t=>A(`th`,null,t===e.baselineArm?`${t} (baseline)`:t))),r.append(...t.map(e=>A(`th`,null,`${e} vs baseline`))),n.append(r);for(let r of e.rows){let i=A(`tr`);i.append(A(`td`,`bench-case`,r.caseId),...e.armIds.map(e=>iX(r.arms[e]))),i.append(...t.map(e=>A(`td`,`bench-delta`,eX(r.deltaVsBaseline[e]??null)))),n.append(i)}let i=[...new Set(e.armIds.flatMap(t=>Object.keys(e.totals[t]?.recallByTag??{})))].sort(),a=A(`tr`,`bench-total`);a.append(A(`td`,`bench-case`,`Paired recall`),...e.armIds.map(t=>iX(e.totals[t]))),n.append(a);for(let t of i){let r=A(`tr`,`bench-total`);r.append(A(`td`,`bench-case`,`Recall, ${t}`),...e.armIds.map(n=>A(`td`,`bench-score`,$Y(e.totals[n]?.recallByTag[t]??null)))),n.append(r)}return n}function oX(e){let t=A(`div`,`bench-suite`),n=JY?.inFlight?.suiteId===e.id,r=!!JY?.inFlight&&!n,i=ZY.has(e.id)||!XY,a=A(`div`,`bench-summary`);a.append(A(`span`,`bench-suite-title`,e.title),hr(`bench`,e.caseCount===1?`case`:`cases`,String(e.caseCount)),hr(`bench`,e.candidateCount===1?`candidate`:`candidates`,String(e.candidateCount)),hr(`bench`,`arms`,String(e.armIds.length))),t.append(a);let o=A(`div`,`bench-controls`),s=JY?.configured===!0&&e.error===null;o.append(nX(e,`mine`,!s||i||n),nX(e,`run`,!s||i||n||r||e.caseCount===0),nX(e,`cancel`,i||!n));let c=A(`span`,`bench-status`,(XY?``:`Not connected to the server. Reconnecting.`)||rX(e)||QY.get(e.id)||``);if(c.setAttribute(`role`,`status`),o.append(c),t.append(o),e.error)return t.append(A(`p`,`bench-error`,e.error)),t;let l=e.latestReport;return l?(t.append(A(`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(aX(l)),t):(t.append(A(`p`,`bench-empty`,e.caseCount===0?`Move approved candidates into the cases folder, then choose Run.`:`No run yet.`)),t)}function sX(){if(!qY)return;qY.textContent=``;let e=mr(`bench`,`Benchmarks`,`Suites from the benchmarks folder of the Glimmervoid home, one run at a time.`);if(qY.append(e),!JY)qY.append(A(`p`,`bench-empty`,`Waiting for the server.`));else if(!JY.configured)qY.append(A(`p`,`bench-empty`,JY.reason||`Benchmarks are off.`));else if(JY.suites.length===0)qY.append(A(`p`,`bench-empty`,`No suites yet. Create a folder holding suite.json under benchmarks in the Glimmervoid home.`));else for(let e of JY.suites)qY.append(oX(e))}function cX(e){YY=e}function lX(e){return qY||(qY=A(`div`,`bench-content`),e.append(qY),sX(),qY)}function uX(e){if(XY=e,!e){for(let e of ZY.keys())QY.delete(e);ZY.clear()}sX()}function dX(e){JY=e,sX()}function fX(e){ZY.delete(e.suiteId);let t=JY?.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.`};QY.set(e.suiteId,e.ok?n[e.action]:e.error||`The server refused the action.`),sX()}function pX(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function mX(e,t){return t===`all`||e.sources.includes(t)}function hX(e){return{all:e.length,me:e.filter(e=>mX(e,`me`)).length,team:e.filter(e=>mX(e,`team`)).length,project:e.filter(e=>mX(e,`project`)).length}}function gX(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!mX(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 _X(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 vX(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function yX(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 bX(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 xX(e,t){let n=bX(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function SX(e,t){let n=ro(e.url),r=n?t(n.toLowerCase()):void 0;return r?Ir(r):e.state}var CX=45e3,wX=`The server did not answer within ${CX/1e3} s.`,TX=`Select the issue to load its description.`,EX=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],DX={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},OX=null,kX=null,AX=null,jX=null,MX=null,NX=null,PX=null,FX=null,IX=null,LX=null,RX=new Map,zX=!1,BX=null,VX=null,HX=new Map,UX=new Map,WX=new Map,GX=new Map,KX=new Map;function qX(e){return`${e.key}:${e.updatedAt}`}function JX(e){return e.sessionId?N.get(e.sessionId):void 0}function YX(e,t,n){let r=JX(t),i=r?.currentState??k.DORMANT,a=fr(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=A(`span`,`issues-state-icon`);ef(c,a.icon),e.replaceChildren(c),n&&e.append(s)}function XX(e,t=!1){let n=A(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return YX(n,e,t),n}function ZX(e){let t=JX(e);return t?xr(t):`none yet`}function QX(e){return[...HX.values()].some(t=>t.issueKey===e.key)}function $X(e){let t=HX.get(e);t&&(HX.delete(e),UX.set(t.issueKey,{text:wX,tone:`error`}),cZ())}function eZ(e){let t=HX.get(e);return t?(clearTimeout(t.timeoutHandle),HX.delete(e),t):null}function tZ(e){let t=qX(e);if(GX.has(t)||[...WX.values()].some(e=>e.cacheKey===t))return;let n=Fd(`issue-detail`);KX.delete(t),VX?.({type:`issue-detail`,requestId:n,repo:e.repo,issueNumber:e.number})?WX.set(n,{cacheKey:t,timeoutHandle:setTimeout(()=>{WX.delete(n),KX.set(t,`${wX} ${TX}`),cZ()},CX)}):KX.set(t,`${W} ${TX}`)}function nZ(e){let t=e.projectId;if(!t||JX(e)||QX(e))return;let n=Fd(`open-issue-session`);VX?.({type:`open-issue-session`,requestId:n,projectId:t,repo:e.repo,issueNumber:e.number})?(HX.set(n,{issueKey:e.key,issueNumber:e.number,timeoutHandle:setTimeout(()=>$X(n),CX)}),UX.set(e.key,{text:`Opening session.`,tone:`busy`}),cZ()):(UX.set(e.key,{text:W,tone:`error`}),cZ())}function rZ(e){let t=A(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===IX));let n=A(`span`,`pr-queue-top`);n.append(A(`span`,`pr-queue-ref`,`#${e.number}`),A(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=A(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(A(`span`,`issues-why`,`you`)),r.append(A(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=SX(t,Un),n=A(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let i=A(`span`,`pr-queue-elapsed`,bX(e.updatedAt,Date.now()));return i.dataset.issueAge=e.updatedAt,r.append(i),t.append(XX(e),n,r),t.addEventListener(`click`,()=>{mZ(`select`),IX=e.key,OX&&(OX.dataset.detailOpen=`true`),tZ(e),uZ(),jX&&(jX.scrollTop=0)}),t}function iZ(e,t,n){let r=A(`dd`);r.append(...n),e.append(A(`dt`,null,t),r)}function aZ(e){let t=A(`footer`,`pr-footer issues-detail-footer`),n=JX(e);if(n&&e.sessionId){let n=e.sessionId,r=A(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>{mZ(`go-to-session`),qv(n)}),t.append(r)}if(e.projectId&&!n){let n=A(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=QX(e),n.addEventListener(`click`,()=>nZ(e)),t.append(n)}t.append(ur(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let r=UX.get(e.key),i=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,a=A(`span`,`pr-action-status issue-open-status`);return a.setAttribute(`role`,`status`),cf(a,r?.tone??null,r?.text??i),t.append(a),t}function oZ(e,t){let n=A(`span`,null,xX(e,t));return n.dataset.issueAgo=e,n}function sZ(){let e=jX?.querySelector(`.issues-detail`),t=IX?RX.get(IX):void 0;if(!e||!t)return;let n=e.querySelector(`.issues-facts .issues-state`);n&&YX(n,t,!0);let r=e.querySelector(`.issues-session-name`),i=ZX(t);r&&r.textContent!==i&&(r.textContent=i);let a=String(!!JX(t));e.dataset.hasLiveSession!==a&&(e.dataset.hasLiveSession=a,e.querySelector(`.issues-detail-footer`)?.replaceWith(aZ(t)))}function cZ(){if(!jX)return;let e=LX?.issues.find(e=>e.key===IX);if(!e){jX.replaceChildren(A(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let t=A(`article`,`pr-detail issues-detail`),n=A(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);n.type=`button`,n.addEventListener(`click`,()=>{mZ(`back`),OX&&(OX.dataset.detailOpen=`false`),[...AX?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===IX)?.focus({preventScroll:!0})});let r=A(`header`,`pr-detail-heading`),i=A(`div`,`pr-detail-title`);i.append(ur(`pr-link`,`${e.repo}#${e.number}`,e.url),A(`h2`,null,e.title||`Untitled issue`));let a=Date.now(),o=A(`div`,`pr-detail-meta`),s=A(`span`,null,`opened by ${e.author||`unknown`} `),c=A(`span`,null,`updated `);s.append(oZ(e.createdAt,a)),c.append(oZ(e.updatedAt,a)),o.append(s,c,A(`span`,null,`${e.comments} comments`)),e.sources.includes(`me`)&&o.append(A(`span`,`issues-why`,`assigned to you`));for(let t of e.teams)o.append(A(`span`,null,`mentions ${t}`));r.append(i,o);let l=A(`dl`,`issues-facts`);iZ(l,`Repository`,[e.repo]),iZ(l,`Labels`,[e.labels.join(`, `)||`none`]),iZ(l,`Assignees`,[e.assignees.join(`, `)||`unassigned`]),t.dataset.hasLiveSession=String(!!JX(e)),iZ(l,`Session`,[XX(e,!0),A(`span`,`issues-session-name`,ZX(e))]);let u=e.pullRequests.flatMap(e=>{let t=SX(e,Un),n=A(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,ur(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});iZ(l,`Pull request`,u.length>0?u:[`none linked`]);let d=A(`section`,`issues-body-section`),f=qX(e),p=A(`div`,`issue-body`,GX.get(f)??KX.get(f)??`Loading description.`);GX.get(f)===``&&(p.textContent=`No description.`),p.setAttribute(`role`,`status`),d.append(A(`h3`,`pr-section-heading`,`Description`),p),t.append(n,r,l,d,aZ(e)),jX.replaceChildren(t)}function lZ(e,t,n,r){if(!e)return;let i=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...i].map(e=>{let n=A(`option`,null,e||t);return n.value=e,n})),e.value=r}function uZ(){zX=!1,dZ(),cZ()}function dZ(){if(!OX||!AX||!kX)return;let e=LX?.issues??[],t=hX(e);for(let e of EX){kX.querySelector(`[data-scope="${e.id}"]`)?.setAttribute(`aria-selected`,String(e.id===DX.scope));let n=kX.querySelector(`[data-scope-count="${e.id}"]`);n&&(n.textContent=String(t[e.id]))}let n=vX(e);lZ(NX,`All repos`,n.repos,DX.repo),lZ(PX,`All labels`,n.labels,DX.label),MX&&(MX.textContent=yX(DX));let r=gX(e,DX,new Set(N.keys())),i=document.activeElement instanceof HTMLElement&&AX.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,a=[..._X(r)].map(([e,t])=>{let n=A(`section`,`pr-queue-section`),r=A(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(A(`span`,`issues-repo-note`,`view only`)),r.append(A(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(rZ)),n});AX.replaceChildren(...a),r.length===0&&AX.append(A(`p`,`pr-empty`,e.length>0?`No open issues match these filters. Clear the search or pick All.`:pX(LX))),i&&[...AX.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===i)?.focus({preventScroll:!0}),IX&&!e.some(e=>e.key===IX)&&(IX=null,OX.dataset.detailOpen=`false`),BX?.update(LX),pZ()}function fZ(){let e=A(`div`,`issues-filters`),t=A(`div`,`issues-search-row`),n=A(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{DX.query=n.value,uZ()}),n.addEventListener(`change`,()=>mZ(`search`));let r=A(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let i=A(`div`,`issues-filters-panel`);i.id=`issues-filters-panel`,i.hidden=!0,r.addEventListener(`click`,()=>{mZ(`filters-toggle`),i.hidden=!i.hidden,r.setAttribute(`aria-expanded`,String(!i.hidden))}),t.append(n,r);let a=A(`div`,`issues-filter-row`);function o(e){let t=A(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),a.append(t),t}NX=o(`Repository`),NX.addEventListener(`change`,()=>{mZ(`filter`),DX.repo=NX?.value??``,uZ()}),PX=o(`Label`),PX.addEventListener(`change`,()=>{mZ(`filter`),DX.label=PX?.value??``,uZ()});let s=o(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=A(`option`,null,t);n.value=e??``,s.append(n)}s.addEventListener(`change`,()=>{mZ(`filter`),DX.sort=s.value,uZ()});let c=A(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=A(`label`,`issues-toggle`),r=A(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{mZ(`filter`),DX[e]=r.checked,uZ()}),n.append(r,` ${t}`),c.append(n)}return MX=A(`span`,`issues-filter-summary`),MX.setAttribute(`role`,`status`),i.append(a,c),e.append(t,MX,i),e}function pZ(){if(!OX||OX.closest(`[hidden]`)||document.hidden)return;let e=Date.now();FX&&(FX.textContent=LX?.lastSyncAt?`Synced ${xX(LX.lastSyncAt,e)}.`:`Not synced yet.`);for(let t of OX.querySelectorAll(`[data-issue-age]`))t.textContent=bX(t.dataset.issueAge??``,e);for(let t of OX.querySelectorAll(`[data-issue-ago]`))t.textContent=xX(t.dataset.issueAgo??``,e)}function mZ(e){VX?.({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`issues`,action:e}})}function hZ(e){VX=e}function gZ(e){if(OX)return OX;OX=A(`div`,`issues-content`),OX.dataset.detailOpen=`false`,e.append(OX),BX=PW(`issues`,OX);let t=A(`div`,`pr-columns issues-columns`),n=A(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),kX=A(`div`,`pr-scope-tabs issues-scope-tabs`),kX.setAttribute(`role`,`tablist`),kX.setAttribute(`aria-label`,`Issue scope`);for(let e of EX){let t=A(`span`,`issues-scope`);t.setAttribute(`role`,`presentation`);let n=A(`button`,`pr-scope-tab`,e.label);n.type=`button`,n.dataset.scope=e.id,n.setAttribute(`role`,`tab`),n.addEventListener(`click`,()=>{mZ(`scope`),DX.scope=e.id,uZ()});let r=A(`span`,`issues-scope-count`);r.dataset.scopeCount=e.id,t.append(n,r),kX.append(t)}AX=A(`nav`,`pr-queue`),AX.setAttribute(`aria-label`,`Issues`);let r=YB(BX.control);return FX=A(`span`,`issues-sync`),FX.setAttribute(`role`,`status`),r.prepend(FX),r.append(BX.notice),n.append(JB(kX),fZ(),AX,r),jX=A(`section`,`pr-detail-host`),jX.setAttribute(`aria-label`,`Issue detail`),t.append(n,jX),OX.append(t),window.setInterval(pZ,3e4),uZ(),OX}function _Z(){zX&&vZ(),pZ()}function vZ(){if(_r(OX))zX=!0;else if(zX=!1,sZ(),DX.hasSession)dZ();else for(let e of AX?.querySelectorAll(`[data-issue-key]`)??[]){let t=RX.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&YX(n,t,!1)}}function yZ(e){if(!e){for(let e of HX.values())clearTimeout(e.timeoutHandle),UX.set(e.issueKey,{text:W,tone:`error`});HX.clear();for(let e of WX.values())clearTimeout(e.timeoutHandle),KX.set(e.cacheKey,`${W} ${TX}`);WX.clear(),uZ()}}function bZ(e){let t=LX?.issues.find(e=>e.key===IX);LX=e,RX=new Map(e.issues.map(e=>[e.key,e]));let n=e.issues.find(e=>e.key===IX);n&&n.updatedAt!==t?.updatedAt&&tZ(n),uZ()}function xZ(e){let t=WX.get(e.requestId);t&&(clearTimeout(t.timeoutHandle),WX.delete(e.requestId),e.ok&&e.body!==null&&GX.set(t.cacheKey,e.body),(!e.ok||e.body===null)&&KX.set(t.cacheKey,e.error||`Could not load description. Select the issue to try again.`),cZ())}function SZ(e){if(typeof e.requestId!=`string`)return;let t=eZ(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`;UX.set(n,{text:`Session "${r}" ${a}.${i}`,tone:`ok`});let o=LX?.issues.find(e=>e.key===n);o&&typeof e.sessionId==`string`&&(o.sessionId=e.sessionId),uZ();return}let r=typeof e.error==`string`&&e.error?e.error:`Could not open session.`;UX.set(n,{text:r,tone:`error`}),cZ()}Wn(uZ);var CZ=4e3;function wZ({render:e,holdMs:t=CZ,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 TZ=null,EZ=null,DZ=null,OZ=null,kZ=`http://www.w3.org/2000/svg`,AZ=Kl({getAck:Wc,setAck:Gc,signature:()=>Hu({posthog:TZ}),isLooking:()=>!_r(EZ)}),jZ=wZ({render:CQ}),MZ=new Set,NZ=null,PZ=new Map,FZ=new WeakMap,IZ=`this issue`,LZ=gp(()=>EZ),RZ={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},zZ=[{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}],BZ=zZ.map(e=>e.track).join(` `),VZ=zZ.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),HZ=zZ.findIndex(e=>e.startsActionCluster)+1,UZ=3e4;function WZ(e){let t=A(`div`,e);return t.style.setProperty(`--radar-issue-grid`,BZ),t.style.setProperty(`--radar-issue-grid-phone`,VZ),t.style.setProperty(`--radar-issue-actions-start`,String(HZ)),t}function GZ(e,t){let n=A(`span`,`radar-issue-magnitudes`),r=!1;for(let i of zZ){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function KZ(e){return Number.isFinite(e)?String(e):`0`}function qZ(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${pp(Date.now()-e)}`}function JZ(e){return typeof e?.issueId==`string`?e.issueId:``}function YZ(e,t){return[String(e??``),String(t??``)].join(`::`)}function XZ(e,t,n){let r=PZ.get(YZ(e,t));if(!r||!r.copy.isConnected)return!1;let i=au(n);return i?(r.summary||(r.summary=A(`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 ZZ(e,t,n){let r=JZ(e);if(!r)return;NZ?.dialog.close();let i=Lp({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>$Z(e)});NZ={projectId:String(t??``),issueId:r,dialog:i},i.update(ou(e))}function QZ(){if(!NZ)return;if(!NZ.dialog.isOpen()){NZ=null;return}let e=su(TZ,NZ.projectId,NZ.issueId);e&&NZ.dialog.update(ou(e))}function $Z(e){let t=JZ(e);t&&K(`get-radar-report`,{issueId:t},{timeoutMs:q}).then(n=>{n.ok?n.found?Ip({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):Ip({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):Ip({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{Ip({issueId:t,issueTitle:String(e.title??``),error:df(n,q)})})}function eQ(){let e=A(`div`,`radar-issue-actions`),t=A(`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=A(`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)=>{jZ.begin(e),o(!0),i(),cf(t,`busy`,a);let l=(n,r)=>{o(!1),i(),cf(t,n,r),jZ.settle(e)};K(n,r,{timeoutMs:UZ}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,df(e,UZ)))},showFollowUp:a,wrap:e}}function tQ(e){let t=A(`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(),SQ(e)}),t}function nQ(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=eQ(),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`,()=>ZZ(e,t,n)),!e.inFlight&&e.verdict&&JZ(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>$Z(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`&&OZ&&a(tQ(e.sessionId))})}),r(`Resolve`,`Mark this issue resolved in PostHog`,()=>{s(`radar-issue-action`,{action:`resolve`},`Resolving in PostHog`,()=>`Marked resolved`)}),r(`Suppress`,`Suppress this issue in PostHog`,()=>{Rf({title:`Suppress issue`,message:`This marks the issue suppressed in PostHog for everyone on the project.`,confirmLabel:`Suppress`,danger:!0,onConfirm:()=>s(`radar-issue-action`,{action:`suppress`},`Suppressing in PostHog`,()=>`Marked suppressed`)})}),o}function rQ(e){return wh()?IZ:e}function iQ(e){let t=FZ.get(e);t&&(e.title=t())}function aQ(){if(EZ)for(let e of EZ.querySelectorAll(`.radar-issue-reportable`))iQ(e)}Eh(aQ);function oQ(e,t,n){e.classList.add(`radar-issue-reportable`),FZ.set(e,t),iQ(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function sQ(e,t,n){let r=A(`div`,`radar-issue`);r.dataset.severity=bu(e.change);let i=A(`span`,`radar-stripe`);i.setAttribute(`aria-hidden`,`true`);let a=A(`span`,`radar-change`,RZ[e.change??``]||String(e.change||`unknown`)),o=ur(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),s=A(`span`,`radar-metric`);s.append(A(`span`,`radar-metric-value`,KZ(e.occurrences)),A(`span`,`radar-metric-label`,`occ`));let c=A(`span`,`radar-metric`);c.append(A(`span`,`radar-metric-value`,KZ(e.users)),A(`span`,`radar-metric-label`,`users`));let l=wu(e.history),u=Tu(l,64,16),d=u?document.createElementNS(kZ,`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(kZ,`title`);e.textContent=Du(l);let t=document.createElementNS(kZ,`polyline`);t.setAttribute(`points`,u),d.append(e,t)}let f=au(e),p=A(`span`,`radar-issue-copy`);p.append(o);let m=null;f&&(m=A(`span`,`radar-issue-summary`),m.textContent=f,p.append(m)),PZ.set(YZ(t,e.issueId),{copy:p,summary:m});let h=A(`span`,`radar-issue-meta`),g=xu(e);if(g!==null){let e=A(`span`,`radar-issue-seen`);e.title=new Date(g).toLocaleString(),LZ.track(e,g,mp),h.append(e)}let _=Su(e);_&&h.append(A(`span`,`radar-issue-status`,_));let v=String(e.title||e.issueId);if(e.inFlight){let i=A(`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=A(`span`,`radar-issue-elapsed`);LZ.track(e,a,qZ),h.append(e)}JZ(e)&&oQ(r,()=>`Watch the investigation of ${rQ(v)}`,()=>ZZ(e,t,n))}if(!e.inFlight&&e.verdict){let t=A(`span`,`radar-verdict`,fu(e.verdict));t.dataset.verdict=e.verdict,h.append(t),JZ(e)&&oQ(r,()=>`View investigation report for ${rQ(v)}`,()=>$Z(e))}h.childElementCount>0&&p.append(h);let y=A(`span`,`radar-issue-trend`);d&&y.append(d);let b=Eu(l);if(b){let e=A(`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 GZ(r,e=>x[e.columnId]),JZ(e)&&r.append(nQ(e,t,n)),r}var cQ=(e,t,n)=>hr(`radar`,e,t,n);function lQ(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${pp(e.staleMs)}`:``}function uQ(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=A(r,i,Mu(t));o.title=String(t.name||``),e.append(o);let s=n?Nu(t.host):``;s&&e.append(A(`span`,a,s))}function dQ(){let e=WZ(`radar-column-heads`);for(let t of zZ){if(!t.headText){e.append(A(`span`));continue}let n=A(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function fQ(e,t){let n=e.project,r=A(`div`,`radar-project`),i=Wu(n.issues),a=Ou(i),o=A(`div`,`radar-project-head`);uQ(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=A(`div`,`radar-project-summary`);s.append(cQ(a.active===1?`active issue`:`active issues`,KZ(a.active))),s.append(cQ(`spiking`,KZ(a.spiking),a.spiking>0?`crit`:null)),s.append(cQ(`needs you`,KZ(a.needsHuman),a.needsHuman>0?`warn`:null));let c=lQ(e);if(c){let t=A(`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(dQ());let l=WZ(`radar-issues`);for(let e of i)l.append(sQ(e,n.projectId,Mu(n)));return r.append(l),r}function pQ(e,t){let n=e.project,r=A(`div`,`radar-quiet-row`),i=A(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),uQ(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(A(`span`,`radar-quiet-count`,`0 issues`)),r}var mQ=(e,t)=>mr(`radar`,e,t);function hQ(){let e=A(`div`,`radar-issue`);return e.dataset.skeleton=``,GZ(e,e=>A(`span`,e.cellClass)),e}function gQ(){let e=WZ(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(hQ());return e}function _Q(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function vQ(e,t=`ready`){let n=mQ(`Errors`);if(t===`pending`)return n.append(gQ()),n;if(t===`placeholder`||e.length===0){let e=A(`p`,`radar-unconfigured`,_u(TZ)),t=cm(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=_Q(TZ);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=A(`div`,`radar-global-tick`),i=Number(TZ?.intervalMinutes);LZ.track(r,TZ?.ts,e=>{let t=`polled ${mp(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}=Iu(e,Date.now(),{intervalMs:a}),c=Pu(e);for(let e of o)n.append(fQ(e,c));if(s.length===0)return n;let l=A(`div`,`radar-quiet`);for(let e of s)l.append(pQ(e,c));return n.append(l),n}function yQ(e){let{addButton:t,request:n,wrap:r}=eQ();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{$Z({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`,()=>MZ.add(e.id))}),r}function bQ(e){let t=A(`div`,`radar-investigation`),n=A(`span`,`radar-verdict`,fu(e.verdict));n.dataset.verdict=e.verdict;let r=ur(`radar-issue-title`,e.title,e.url),i=A(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=A(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=A(`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=A(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=A(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=A(`span`,`radar-investigation-time`,mp(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(yQ(e)),t}function xQ(e){let t=mQ(`Investigations`,`completed, not yet archived`),n=A(`div`,`radar-investigations`);for(let t of e)n.append(bQ(t));return t.append(n),t}function SQ(e){OZ&&OZ(e)}function CQ(){if(!EZ)return;EZ.textContent=``,PZ.clear(),LZ.reset();let e=gr(TZ),t=Lu(TZ,MZ),n=yu(TZ,e.length);EZ.append(vQ(e,n)),t.length>0&&EZ.append(xQ(t))}function wQ(){jZ.request()}function TQ(){DZ&&DZ(AZ.refresh())}function EQ(){AZ.acknowledge(),TQ()}function DQ(e){DZ=e,TQ()}function OQ(e){OZ=e}function kQ(e){if(EZ)return EZ;let t=A(`div`,`radar-content`);return e.appendChild(t),EZ=t,LZ.ensure(),CQ(),t}function AQ(e){TZ=e,Ru(TZ,MZ),wQ(),TQ(),QZ()}function jQ(e){let t=su(TZ,e.projectId,e.issueId)?.inFlight===!0;if(!cu(TZ,e))return;QZ();let n=su(TZ,e.projectId,e.issueId);t&&XZ(e.projectId,e.issueId,n)||wQ()}function MQ(e){NZ?.dialog.isOpen()&&uu(NZ,e)&&NZ.dialog.update(lu(e))}function NQ(e){du(TZ,e)?(QZ(),wQ(),TQ()):MQ(e)}var PQ=Qh({requestPrefix:`session-setup`,dialogClass:`dialog coherence-journal-drawer session-setup-dialog`,titleText:`Session setup`,unavailableLabel:`Session setup unavailable`,timeoutMs:15e3});function FQ(e){let t=A(`ul`,`session-setup-list`);return t.append(...e.map(e=>A(`li`,null,e))),t}function IQ(e,t){e.replaceChildren();function n(t,n){if(n.length===0)return;let r=mr(`session-setup`,t);r.append(...n),e.append(r)}n(`Model`,t.model?[A(`p`,null,t.model)]:[]),n(`Plugins`,t.plugins.map(e=>{let t=A(`div`,`session-setup-plugin`);return t.append(A(`h3`,null,e.name)),e.skills.length>0&&t.append(A(`p`,`session-setup-label`,`Skills`),FQ(e.skills)),e.agents.length>0&&t.append(A(`p`,`session-setup-label`,`Agents`),FQ(e.agents)),t})),n(`MCP servers`,t.mcpServers.length>0?[FQ(t.mcpServers)]:[]),n(`Hooks`,[...t.hookEvents.map(e=>{let t=A(`p`,`session-setup-hook`);return t.append(A(`span`,null,e.event),A(`span`,`session-setup-label`,`${e.runCount} runs`)),t}),...t.hookCommands.map(e=>A(`pre`,`coherence-command`,e))]),n(`Skills`,t.skills.length>0?[FQ(t.skills)]:[]),n(`Agents`,t.agents.length>0?[FQ(t.agents)]:[])}function LQ(e){let t=A(`p`,`coherence-journal-status`,`Loading session setup`);t.setAttribute(`role`,`status`);let n=A(`div`,`session-setup-sections`);PQ.open({sessionId:e,status:t,body:[t,n],parts:{sections:n},buildRequest:t=>({type:`session-setup`,id:e,requestId:t})})}function RQ(e){let t=PQ.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 zQ(e){return{skipPerms:e.skipPerms??e.dangerouslySkipPermissions??!1,saneYolo:e.saneYolo===!0,worktree:e.worktree??e.isWorktree??!1,workspace:e.workspace??e.isWorkspace??!1,remoteWorkspace:e.remoteWorkspace??null,guarded:e.guarded??e.isGuarded??!1,guardrailsReleased:e.guardrailsReleased??e.isGuardrailsReleased??!1,ephemeral:e.ephemeral===!0,ownerId:e.ownerId??null,path:e.path,stateSince:e.stateSince,taskTitle:typeof e.taskTitle==`string`?e.taskTitle:null,taskTitleIsCustom:e.taskTitleIsCustom===!0}}var BQ=null,VQ=null,HQ=null,UQ=null,WQ=null,GQ=null,KQ=-1,qQ=null,JQ={isRightToLeft:!1,arcProgress:0},YQ=1,XQ=3;function ZQ(){if(!BQ||qQ===null)return;let e=ns({viewportWidthPx:document.documentElement.clientWidth,viewportHeightPx:document.documentElement.clientHeight,verticalProgress:qQ,...JQ});sr(BQ,is(e,YQ,window.devicePixelRatio))}function QQ(){GQ!==null&&(clearTimeout(GQ),GQ=null)}function $Q(e=Sc()){return Ko({isEnabled:e,hasReducedMotion:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,isPhone:Xy(),options:dl()})}function e$(e){e.onanimationend=null,e.style.animation=`none`,UQ&&(UQ.style.animation=`none`),e.hidden=!0}function t$(e,t){if(!BQ||!VQ||!HQ||!UQ||$Q())return;let n=dl();QQ();let r=Go(n,KQ,Math.random,t);if(e$(BQ),!r){GQ=setTimeout(()=>t$(!1),1e3);return}qQ=r.verticalProgress,JQ={isRightToLeft:r.isRightToLeft,arcProgress:r.arcProgress},YQ=n.flyingAnimalsScale,ZQ();let i=Ro[r.animalIndex];VQ.className=`nyan-sprite ${i.sprite}`,HQ.className=`nyan-trail ${i.trail}`,KQ=r.animalIndex,WQ?.classList.remove(`is-booped`),BQ.hidden=!1,BQ.offsetWidth,BQ.style.animation=`nyan-fly ${r.durationSeconds}s linear`,UQ.style.animation=`nyan-trail-hold ${r.durationSeconds}s linear`,e&&(BQ.style.animationDelay=`-${r.firstDelaySeconds}s`,UQ.style.animationDelay=`-${r.firstDelaySeconds}s`),BQ.onanimationend=e=>{BQ&&e.target===BQ&&(e$(BQ),GQ=setTimeout(()=>t$(!1),r.gapMs))}}function n$(){if(BQ&&UQ&&WQ){WQ.classList.remove(`is-booped`),WQ.offsetWidth,WQ.classList.add(`is-booped`);for(let e of[...BQ.getAnimations(),...UQ.getAnimations()])e.playbackRate=XQ}}function r$(){if(BQ||$Q())return;BQ=document.createElement(`div`),BQ.className=`nyan-flight`,BQ.setAttribute(`aria-hidden`,`true`);let e=document.createElement(`div`);e.className=`nyan-trail-window`,UQ=document.createElement(`div`),UQ.className=`nyan-trail-hold`,HQ=document.createElement(`div`),UQ.append(HQ),e.append(UQ),VQ=document.createElement(`div`),WQ=document.createElement(`div`),WQ.className=`nyan-boop`,WQ.append(VQ),WQ.addEventListener(`pointerdown`,n$),BQ.append(e,WQ),document.body.appendChild(BQ),window.addEventListener(`resize`,ZQ),window.addEventListener(`orientationchange`,ZQ),t$(!0)}function i$(e){r$(),t$(!1,e)}function a$(){QQ(),window.removeEventListener(`resize`,ZQ),window.removeEventListener(`orientationchange`,ZQ),BQ?.remove(),BQ=null,VQ=null,HQ=null,UQ=null,WQ=null,KQ=-1,qQ=null}var o$=!1;function s$(e){let t=document.documentElement;if(o$||(o$=!0,Zy(()=>s$(Sc())),window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,()=>s$(Sc()))),e){if(t.dataset.flyingAnimals=`true`,$Q(e)){a$();return}r$()}else delete t.dataset.flyingAnimals,a$()}function c$(){let e=A(`div`),t=A(`p`,`flying-animals-status`);t.id=`flying-animals-gallery-status`,t.setAttribute(`role`,`status`);let n=A(`div`,`flying-animals-gallery`);n.setAttribute(`aria-label`,`Animal gallery`);let r=[],i=()=>{let e=$Q(),n=Uo(dl().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=dl();for(let e of Ro){let o=A(`article`,`flying-animal-tile`),s=hl(e),c=A(`label`,`flying-animal-include`),l=A(`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(dl().flyingAnimalsExcludedSprites);l.checked&&t.delete(e.sprite),l.checked||t.add(e.sprite),ul([...t]),s$(Sc()),i()}),c.append(l,document.createTextNode(`Include`));let u=A(`button`,`btn-dialog btn-dialog-cancel`,`Fly now`);u.type=`button`,u.setAttribute(`aria-describedby`,t.id),u.addEventListener(`click`,()=>i$(e.sprite)),r.push(u),o.append(s,A(`h2`,`flying-animal-name`,e.name),c,u),n.append(o)}return i(),e.append(t,n),e}var l$=`johncwaters/glimmervoid`,u$={maxConcurrentInvestigations:Math.ceil,minUsersToInvestigate:Math.ceil,userEscalationThreshold:Math.ceil,trafficSpikeMinUsers:Math.ceil,trafficSpikeBaselineDays:Math.floor};[...Object.entries(u$).map(([e,t])=>({path:[`posthog`,e],min:1,round:t}))];var d$=Object.freeze([`auto`,`calculate`,`display`]),f$=Object.freeze([`codex`,`grok`]),p$=Object.freeze([`dailyUsd`,`monthlyUsd`]),m$=e=>t({error:`${e} must be a boolean`}).optional(),h$=(e,t=!1)=>{let n=l({error:`${e} must be a string`});return(t?n.transform(e=>e.trim()):n).optional()},g$=e=>e.label?e.label:e.max==null?e.exclusiveMin?`greater than ${e.min}`:`at least ${e.min}`:`between ${e.min} and ${e.max}`,_$=(e,t=O)=>c({error:`${e} must be ${g$(t)}`}).finite().refine(e=>!t.exclusiveMin||e>t.min,{message:`${e} must be ${g$(t)}`}).refine(e=>t.exclusiveMin||e>=t.min,{message:`${e} must be ${g$(t)}`}).refine(e=>t.max==null||e<=t.max,{message:`${e} must be ${g$(t)}`}).optional(),v$=(e,t)=>_$(e,t).unwrap().int({error:`${e} must be a whole number ${g$(t)}`}).optional(),y$=(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(),b$=(e,t)=>g(t,{error:`${e} must be an object`}).nullable().optional(),x$=Object.freeze([`release`,`main`]),S$=Object.freeze([`report`,`fix`]);g({refiner:g({enabled:m$(`taskTitle.refiner.enabled`),model:h$(`taskTitle.refiner.model`,!0),minIntervalSeconds:_$(`taskTitle.refiner.minIntervalSeconds`,{min:0}),timeoutSeconds:_$(`taskTitle.refiner.timeoutSeconds`,Mt)},{error:`taskTitle.refiner must be an object`}).nullable().optional()},{error:`taskTitle must be an object`}).nullable().optional();var C$={enabled:m$(`branchGc.enabled`),worktrees:m$(`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:m$(`branchGc.dryRun`),staleDays:_$(`branchGc.staleDays`,Nt),deleteUnmerged:m$(`branchGc.deleteUnmerged`),intervalMs:_$(`branchGc.intervalMs`,Pt)},w$=g(C$,{error:`branchGc must be an object`});b$(`branchGc`,C$),w$.omit({prefixes:!0,dryRun:!0,worktrees:!0}).nullable().optional(),Object.freeze([`enabled`,`deleteUnmerged`]),Object.freeze([`staleDays`,`intervalMs`]),b$(`postTurnChecks`,{mode:u(S$,{error:`postTurnChecks.mode must be one of report, fix`}).optional()}),b$(`visions`,{enabled:m$(`visions.enabled`),autoFix:m$(`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:b$(`visions.dispatch`,{enabled:m$(`visions.dispatch.enabled`),model:h$(`visions.dispatch.model`,!0),quietMs:v$(`visions.dispatch.quietMs`,Ft),cooldownMs:v$(`visions.dispatch.cooldownMs`,It),maxPerHour:v$(`visions.dispatch.maxPerHour`,Lt),activityMaxPerHour:v$(`visions.dispatch.activityMaxPerHour`,Rt),dispatchTimeoutSeconds:v$(`visions.dispatch.dispatchTimeoutSeconds`,zt)}),intent:b$(`visions.intent`,{threadTtlMs:v$(`visions.intent.threadTtlMs`,Bt)})}),g({teams:p(l({error:`github.teams must be an array of org/slug strings`}).refine(e=>ae(e)!==null,{message:`github.teams entries must be org/slug with valid GitHub segments`}),{error:`github.teams must be an array of org/slug strings`}).optional()},{error:`github must be an object`}).nullable().optional(),b$(`teamReview`,{enabled:m$(`teamReview.enabled`),autoRebaseMyPrs:m$(`teamReview.autoRebaseMyPrs`),keepMergeableEnabled:m$(`teamReview.keepMergeableEnabled`),mergeQueueEnabled:m$(`teamReview.mergeQueueEnabled`),keepMergeableTimeoutMinutes:y$(`teamReview.keepMergeableTimeoutMinutes`,on),org:h$(`teamReview.org`,!0),team:h$(`teamReview.team`,!0),skill:h$(`teamReview.skill`,!0),reReviewAfterHours:_$(`teamReview.reReviewAfterHours`),skipIdleAfterDays:_$(`teamReview.skipIdleAfterDays`)}),b$(`benchmarks`,{enabled:m$(`benchmarks.enabled`)}),b$(`coherence`,{enabled:m$(`coherence.enabled`)});var T$={intervalMinutes:Vt,maxConcurrentInvestigations:Ht,investigationTimeoutSeconds:Ut,fixTimeoutSeconds:Jt,minUsersToInvestigate:Wt,userEscalationThreshold:Gt,recurrenceWindowDays:Kt,transientRecurrenceLimit:qt,trafficSpikeMultiplier:Yt,trafficSpikeMinUsers:Xt,trafficSpikeCooldownMinutes:Zt,trafficSpikeBaselineDays:Qt};b$(`posthog`,{enabled:m$(`posthog.enabled`),recurrenceDedupe:m$(`posthog.recurrenceDedupe`),trafficSpikeEnabled:m$(`posthog.trafficSpikeEnabled`),autoFix:m$(`posthog.autoFix`),host:h$(`posthog.host`,!0).refine(e=>e==null||!e||/^https?:\/\//i.test(e),{message:`posthog.host must be an http(s) URL`}),apiKey:h$(`posthog.apiKey`,!0),repoPath:h$(`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(T$).map(([e,t])=>[e,Object.hasOwn(u$,e)?v$(`posthog.${e}`,t):_$(`posthog.${e}`,t)]))}),`${d$.join(`, `)}`,Object.fromEntries(f$.map(e=>[e,m$(`usage.vendors.${e}`)])),Object.fromEntries(p$.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()])),b$(`telegram`,{botToken:h$(`telegram.botToken`,!0),chatId:h$(`telegram.chatId`,!0)}),g({enabled:m$(`ingest.enabled`)},{error:`ingest must be an object`}).passthrough().optional(),g({enabled:m$(`trace.enabled`)},{error:`trace must be an object`}).optional(),g({enabled:m$(`planReview.enabled`)},{error:`planReview must be an object`}).optional();var E$=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(),D$={unguardedRepos:E$(`guardrails.unguardedRepos`),blockedPaths:E$(`guardrails.blockedPaths`),unreadablePaths:E$(`guardrails.unreadablePaths`)};g(D$,{error:`guardrails must be an object`}).passthrough().optional();var O$={enabled:m$(`telemetry.enabled`)};g(O$,{error:`telemetry must be an object`}).strict().optional(),g(O$,{error:`telemetry must be an object`}).passthrough().optional();var k$={scope:`browser`,access:`editable`,takesEffect:`now`},A$={scope:`browser`,access:`advanced`,takesEffect:`now`},X={scope:`machine`,access:`editable`,takesEffect:`now`},j$={scope:`machine`,access:`editable`,takesEffect:`new-sessions`},M$={scope:`machine`,access:`readout`,takesEffect:`now`},Z={scope:`machine`,access:`file-only`},N$=1e3,P$=60,F$=60,I$=N$*P$,L$=I$*F$,R$=L$*24,z$={label:`investigations`,storedPerDisplay:1},B$={label:`sessions`,storedPerDisplay:1},V$={label:`recurrences`,storedPerDisplay:1},H$={label:`actions`,storedPerDisplay:1},U$={label:`seconds`,storedPerDisplay:1},W$={label:`minutes`,storedPerDisplay:1},G$={label:`hours`,storedPerDisplay:1},K$={label:`days`,storedPerDisplay:1},q$={label:`seconds`,storedPerDisplay:N$,storedLabel:`ms`},J$={label:`minutes`,storedPerDisplay:I$,storedLabel:`ms`},Y$={label:`minutes`,storedPerDisplay:P$,storedLabel:`seconds`},X$={label:`hours`,storedPerDisplay:L$,storedLabel:`ms`},Z$={label:`hours`,storedPerDisplay:F$,storedLabel:`minutes`},Q$={label:`days`,storedPerDisplay:R$,storedLabel:`ms`},$$={label:`USD`,storedPerDisplay:1},e1={label:`users`,storedPerDisplay:1},t1={label:`reviews per hour`,storedPerDisplay:1},n1={label:`times`,storedPerDisplay:1},Q=`A tuning knob kept out of the Settings view; the default suits almost every install.`,r1=`A diagnostic switch kept out of the Settings view; change it in config.json while investigating.`,i1=`Changes how the server process or its worktrees behave, so it is set in config.json with a restart or new sessions in mind.`,a1=`A structured value with no dashboard control; edit it in config.json.`,o1=`Never editable from the dashboard by rule; edit it in config.json.`;function s1(e){return e.map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}))}var c1=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.`}}),l1=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`,...k$},{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,...k$},{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,...k$},{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,...k$},{id:`animals-min-gap`,path:`pref:flyingAnimalsMinGapSeconds`,title:`Time between flights: minimum`,description:`Shortest pause between flights.`,control:`number`,integer:!1,step:.1,range:Tt,unit:U$,maximumSettingId:`animals-max-gap`,keywords:[`animals`,`frequency`],defaultValue:Ot.flyingAnimalsMinGapSeconds,...A$},{id:`animals-max-gap`,path:`pref:flyingAnimalsMaxGapSeconds`,title:`Time between flights: maximum`,description:`Longest pause between flights.`,control:`number`,integer:!1,step:.1,range:Tt,unit:U$,keywords:[`animals`,`frequency`],defaultValue:Ot.flyingAnimalsMaxGapSeconds,...A$},{id:`animals-min-duration`,path:`pref:flyingAnimalsMinDurationSeconds`,title:`Flight duration: minimum`,description:`Shortest flight, for faster animals.`,control:`number`,integer:!1,step:.1,range:Et,unit:U$,maximumSettingId:`animals-max-duration`,keywords:[`animals`,`speed`],defaultValue:Ot.flyingAnimalsMinDurationSeconds,...A$},{id:`animals-max-duration`,path:`pref:flyingAnimalsMaxDurationSeconds`,title:`Flight duration: maximum`,description:`Longest flight, for slower animals.`,control:`number`,integer:!1,step:.1,range:Et,unit:U$,keywords:[`animals`,`speed`],defaultValue:Ot.flyingAnimalsMaxDurationSeconds,...A$},{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:Dt,unit:n1,keywords:[`animals`,`size`],defaultValue:Ot.flyingAnimalsScale,...A$},{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:Ot.flyingAnimalsOnPhone,...A$}]},{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,...k$},{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`,...k$},{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,...k$}]},{id:`machine-telegram`,level:`machine`,parent:`browser-notifications`,title:`Telegram`,description:`One bot shared by session, PR review and PostHog notifications.`,legacyIds:[`telegram`,`notifications`],settings:[{id:`telegram-bot-token`,path:`telegram.botToken`,title:`Bot token`,description:`Credential used by the shared Telegram bot. Create a bot by messaging @BotFather in Telegram and sending /newbot; it replies with this token. When GLIMMERVOID_TELEGRAM_BOT_TOKEN supplies it, this field is read-only.`,control:`password`,keywords:[`credential`,`api`],defaultValue:``,...X},{id:`telegram-chat-id`,path:`telegram.chatId`,title:`Chat id`,description:`Destination chat for enabled Telegram lanes. Send your bot any message, then open https://api.telegram.org/bot<token>/getUpdates in a browser and copy the number under message.chat.id.`,control:`text`,keywords:[`destination`,`channel`],defaultValue:``,...X},{id:`telegram-session-notifications`,path:`telegramNotifications`,title:`Send session notifications`,description:`Send session completion, input and failure alerts when no dashboard is open. Unacknowledged alerts also escalate after the phone escalation delay while a dashboard remains open.`,control:`toggle`,keywords:[`phone`,`off dashboard`,`test`],defaultValue:!1,status:`telegram-delivery`,...X}]},{id:`machine-sessions`,level:`machine`,title:`Sessions`,description:`How sessions start, where projects are found, and what the dashboard shows for them.`,legacyIds:[`machine-general`,`general`,`machine-repositories`,`repos`,`repositories`],settings:[{id:`auto-resume`,path:`autoResume`,title:`Auto-resume sessions on startup`,description:`Resume conversations that were live when Glimmervoid last shut down or crashed, and tell sessions that were mid-turn, or had a background agent, monitor or scheduled wakeup in flight, to continue.`,control:`toggle`,keywords:[`startup`,`conversation`],defaultValue:!0,...X},{id:`conversation-view`,path:`conversationView`,title:`Conversation view (experimental)`,description:`Let each Claude Code and Codex session turn on a Conversation face from its card menu, which renders the transcript as messages, approvals and a composer. Sessions stay on the terminal until you turn it on for them. A Claude Code session started while this is on can answer its permission prompts and questions there. A Codex session connects on its next start, through a local app-server so approvals can be answered from the dashboard; guarded Codex sessions and those that bypass Codex hook trust keep the terminal only.`,control:`toggle`,keywords:[`experimental`,`transcript`,`chat`,`codex`,`claude`],defaultValue:!1,...X},{id:`zen-view`,path:`zenView`,title:`Zen view (experimental)`,description:`Add a Zen tab that shows no terminal until a session needs you, then shows only that session and what it needs.`,control:`toggle`,keywords:[`experimental`,`calm`,`focus`,`attention`,`needs you`],defaultValue:!1,...X},{id:`tab-order`,path:`viewTabOrder`,title:`Tab order`,description:`The order of the dashboard tabs in every browser: the header on desktop and the More menu on a phone. You can also drag a tab in the desktop header.`,control:`tab-order`,keywords:[`tabs`,`order`,`rearrange`,`reorder`,`header`,`more`,`menu`],defaultValue:[],...X},{id:`remote-sessions`,path:`remoteSessions`,title:`Remote Coder sessions (experimental)`,description:`Offer the Coder environments in config.json when adding a session, so the session runs in its own Coder workspace instead of on this machine. Off refuses new remote sessions; ones already running keep working until closed.`,control:`toggle`,keywords:[`experimental`,`coder`,`remote`,`workspace`,`cloud`],defaultValue:!1,...X},{id:`streamer-mode`,path:`streamerMode`,title:`Streamer mode`,description:`Hide sensitive details in the dashboard while screen sharing or streaming.`,control:`toggle`,keywords:[`streaming`,`screen share`,`privacy`],defaultValue:!1,...X},{id:`repository-roots`,path:`repoRoots`,title:`Repository roots`,description:`Directories scanned for projects when adding sessions.`,control:`list`,keywords:[`folders`,`project discovery`],defaultValue:[],listPlaceholder:`Repository root path`,listEmptyText:`No repository roots configured.`,...X},{id:`custom-agents`,path:`status:custom-agents`,title:`Custom agents`,description:`Extra agent CLIs a session can be spawned with, declared under customAgents in config.json.`,control:`readonly`,keywords:[`adapters`,`cli`],status:`custom-agents`,...M$},{id:`agent-logins`,path:`status:agent-logins`,title:`Agent logins`,description:`How Claude Code and Codex sign in inside a Coder workspace. Each uses the login already on this machine; Connect signs one in for Glimmervoid alone when there is none.`,control:`readonly`,keywords:[`claude`,`codex`,`sign in`,`login`,`coder`,`remote`],status:`agent-logins`,...M$},{id:`remote-setup`,path:`status:remote-setup`,title:`Remote host setup`,description:`Start a session that walks you through running Glimmervoid on another Linux machine you reach by ssh, as a service you open from your laptop and phone.`,control:`readonly`,keywords:[`remote`,`ssh`,`server`,`devbox`,`tailscale`,`pair`,`host`],status:`remote-setup`,...M$}]},{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,...j$},{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,...j$},{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:s1(S$),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.`,...j$},{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.`,...j$},{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.`,...j$}]},{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`,...M$},{id:`update-channel`,path:`updateChannel`,title:`Channel`,description:`Track tagged releases or the upstream of the checked-out branch.`,control:`select`,options:s1(x$),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:en,unit:K$,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:rn,unit:$$,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:rn,unit:$$,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:O,unit:t1,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:O,unit:W$,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:O,unit:z$,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:O,unit:e1,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:O,unit:G$,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:O,unit:K$,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:on,unit:W$,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:sn,unit:B$,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`,...M$}]},{id:`lanes-benchmarks`,level:`lanes`,title:`Benchmarks`,description:`Compare agent setups on frozen cases from the suites in the benchmarks folder of the Glimmervoid home.`,legacyIds:[`benchmarks`],settings:[{id:`benchmarks-enabled`,path:`benchmarks.enabled`,title:`Enable benchmarks`,description:`Show the Bench tab. Nothing runs until you choose Mine or Run there.`,control:`toggle`,keywords:[`eval`,`arms`,`recall`,`compare`],defaultValue:!1,...X}]},{id:`lanes-coherence`,level:`lanes`,title:`Coherence (experimental)`,description:`Per-session Coherence hook status and decision journal for agent sessions.`,settings:[{id:`coherence-enabled`,path:`coherence.enabled`,title:`Show session Coherence`,description:`Shows each session's Coherence hook status and decision journal when the repository installed @posthog/coherence 1.8 or newer. Off by default.`,control:`toggle`,keywords:[`experimental`,`coherence`,`journal`,`decisions`],defaultValue:!1,...X}]},{id:`machine-privacy`,level:`machine`,title:`Privacy`,description:`What Glimmervoid sends about itself.`,legacyIds:[`privacy`,`telemetry`],settings:[{id:`telemetry-enabled`,path:`telemetry.enabled`,title:`Send 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 shortcuts, their reference and build information.`,legacyIds:[`shortcuts`],settings:[{id:`next-attention-key`,path:`pref:nextAttentionKeyCode`,title:`Jump to the next session needing you`,description:`The key held with Cmd on a Mac, or Alt elsewhere, that jumps to the next session needing you. Record a new one by pressing the whole shortcut.`,control:`shortcut-key`,keywords:[`shortcut`,`keyboard`,`hotkey`,`jump`,`next`,`attention`],defaultValue:`KeyJ`,...k$}]}]),u1=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:r1,...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:kt,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:At,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:r1,...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:r1,...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:r1,...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:r1,...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:i1,...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:i1,...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:i1,...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:i1,...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:i1,...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:o1,...Z},{id:`file-port`,path:`port`,title:`Local port`,group:`machine-detection-sessions`,description:`Port used by the local dashboard listener.`,control:`number`,range:jt,unit:{label:`port`,storedPerDisplay:1},keywords:[`server`,`listener`],defaultValue:3e3,takesEffect:`restart`,fileOnlyReason:o1,...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:O,unit:q$,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:O,unit:J$,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:a1,...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:i1,...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:i1,...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:i1,...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:i1,...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:O,unit:K$,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:O,unit:X$,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:o1,...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:wt,unit:U$,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:Mt,unit:U$,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:$t,unit:W$,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:an.warehouseRetainDays,unit:K$,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:an.sessionBlockHours,unit:G$,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:s1(d$),keywords:[`pricing`,`estimate`],defaultValue:`auto`,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-extra-projects-dirs`,path:`usage.extraProjectsDirs`,title:`Extra transcript folders`,group:`machine-usage`,description:`Absolute paths of additional Claude projects folders the usage scan reads.`,control:`list`,keywords:[`transcripts`,`folders`,`scan`],defaultValue:[],takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-quiet-delay`,path:`visions.dispatch.quietMs`,title:`Quiet delay`,group:`lanes-visions`,description:`Editor quiet time before a scheduled review. Saves and blank-line boundaries can dispatch immediately, subject to the other review limits.`,control:`number`,range:O,unit:q$,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:O,unit:J$,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:wt,unit:t1,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:O,unit:Y$,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:O,unit:Q$,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:O,unit:Y$,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:O,unit:e1,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:Jt,unit:Y$,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:Yt,unit:n1,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:Xt,unit:e1,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:wt,unit:Z$,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:Qt,unit:K$,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:O,unit:K$,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:O,unit:V$,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:a1,...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:cn,unit:H$,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}]),d1=Object.freeze({sections:l1,fileOnly:u1}),f1=Object.freeze(Object.fromEntries(l1.flatMap(e=>(e.legacyIds??[]).map(t=>[t,e.id])))),p1=Object.freeze(l1.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 m1(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 h1(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function g1(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 _1(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)]=m1(n)}function v1(e){return e.flatMap(e=>e.settings)}function y1(e){return e.access===`file-only`||e.control===`readonly`}function b1(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 x1=6;function S1(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):[]:m1(t)}function C1(e){return e.control===`number`&&(e.unit?.storedPerDisplay??1)!==1}function w1(e){return String(Number(e.toFixed(x1)))}function T1(e,t){let n=S1(e,t);return e.valueKind===`posthog-projects`&&Array.isArray(n)?n.join(`, `)||`all`:typeof n==`number`&&e.unit?`${w1(n)} ${e.unit.label}`:JSON.stringify(n??null)}function E1(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 b1(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 m1(t)}function D1(e){return String(e||``).toLowerCase().match(/[a-z0-9]+/g)||[]}var O1=3,k1=2,A1=1,j1=3,M1=30,N1=16;function P1(e,t){return e===t?O1:e.startsWith(t)?k1:t.length>=j1&&e.includes(t)?A1:0}function F1(e,t,n){let r=0;for(let n of t){let t=Math.max(0,...e.map(e=>P1(e,n)));if(t===0)return 0;r+=t}return r*n}function I1(e){return e.options?.map(e=>e.label).join(`, `)??``}function L1(e){return G1(e.group??``)?.title??``}function R1(e,t,n){let r=F1(D1(e.title),n,1e3),i=F1(D1(e.keywords.join(` `)),n,100),a=F1(t,n,10),o=F1(D1(e.path),n,10),s=F1(D1(I1(e)),n,10),c=F1(D1(e.description),n,1);return r+i+a+o+s+c}function z1(e){return e.section?.title??``}function B1(e,t){return Number(e.section===null)-Number(t.section===null)}function V1(e,t,n){return[[`title`,e.title],[`keywords`,e.keywords.join(` `)],[`section`,t?.title??L1(e)],[`description`,e.description],[`path`,e.path],[`options`,I1(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(P1(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 H1(e,t,n=[]){let r=D1(t).slice(0,N1);if(r.length===0)return[];let i=[];for(let t of e){let e=D1(t.title);for(let n of t.settings){let a=R1(n,e,r);a!==0&&i.push({section:t,setting:n,score:a,matches:V1(n,t,r)})}}for(let e of n){let t=R1(e,D1(L1(e)),r);t!==0&&i.push({section:null,setting:e,score:t,matches:V1(e,null,r)})}return i.sort((e,t)=>t.score-e.score||B1(e,t)||z1(e).localeCompare(z1(t))||e.setting.title.localeCompare(t.setting.title)).slice(0,M1)}function U1(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 W1(e){let t=new Map,n=new Map;for(let r of[...v1(e.sections),...e.fileOnly])t.set(r.id,r),n.set(r.path,r);return{byId:t,byPath:n}}W1(d1);function G1(e,t=d1){let n=t.sections.find(t=>t.id===e);return n?{title:n.title,description:n.description}:c1[e]??null}function K1({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 q1(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 J1=new WeakMap,Y1=`Configured`,X1=`•`.repeat(12),Z1=`Each line must be a positive whole-number PostHog project id, or the one word none.`,Q1=3,$1=200,e0=new Set([`customAgents`]),t0=1e-9,n0=`Lanes`,r0=Object.freeze({now:`Applies now`,"new-sessions":`New sessions`,restart:`After restart`}),i0=Object.freeze({browser:`This browser`,machine:`This machine`});function a0(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 o0(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 s0(e){return e.control===`password`}function c0(e){return`${e.path}${Y1}`}function l0(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)=>l0(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)&&l0(e[n],t[n]))}function u0(e){return J1.get(e)||null}function d0(e){return Array.isArray(e)?e.map(e=>String(e)):[]}function f0(e){return e.split(`
|
|
175
|
+
`).map(e=>e.trim()).filter(e=>e!==``)}function p0(e){let t=e.range;if(!t)return null;let n={min:Number(S1(e,t.min))};return t.max!=null&&(n.max=Number(S1(e,t.max))),t.exclusiveMin&&(n.exclusiveMin=!0),n}function m0(e){let t=`Default ${T1(e,e.defaultValue)}`;return C1(e)?`${t}, stored as ${JSON.stringify(e.defaultValue)} ${e.unit?.storedLabel??``}`.trimEnd():t}function h0(e,t){let n=m0(e),r=e0.has(e.path)?void 0:h1(t,e.path);if(r===void 0)return{currentText:null,defaultText:n,jsonFragment:null};let i={};return _1(i,e.path,r),{currentText:`Current ${T1(e,r)}`,defaultText:n,jsonFragment:JSON.stringify(i,null,2)}}function g0(e,t,n){let r=t??e.find(e=>e.id===n.group);if(!r)return G1(n.group??``)?.title??`config.json`;let i=e.find(e=>e.id===r.parent);return i?`${i.title} / ${r.title}`:r.level===`lanes`?`${n0} / ${r.title}`:r.title}function _0(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,$1).join(``).trim()}}function v0(e,t){return e.filter(e=>e.parent===t)}function y0(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 b0(e){return e.filter(e=>!e.parent)}function x0(e){let t=e.filter(e=>e.level===`lanes`);return[{heading:null,sections:e.filter(e=>e.level!==`lanes`)},{heading:n0,sections:t}].filter(e=>e.sections.length>0)}function S0(e,t,n,r){return r?`hidden`:n.trim()?`search`:t&&y0(e,t)?`section`:`list`}function C0(e,t={}){let n={};for(let r of v1(e)){if(y1(r))continue;if(r.path.startsWith(`pref:`)){let e=r.path.slice(5),i=t.prefs?.[e]??t[r.path];n[r.path]=S1(r,i??r.defaultValue);continue}if(s0(r)){let e=h1(t,c0(r))===!0;n[r.path]=e?X1:``;continue}let e=h1(t,r.path);n[r.path]=S1(r,e??r.defaultValue)}return J1.set(n,m1(t)),n}function w0(e,t,n){let r=v1(e).filter(e=>y1(e)||e.path.startsWith(`pref:`)||a0(e,u0(t)||{})||s0(e)&&n[e.path]===X1?!1:!l0(t[e.path],n[e.path]));if(r.length===0)return{};let i=u0(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]=E1(e,n[e.path]);continue}if(!s.has(r)){let e=i[r];o[r]=e&&typeof e==`object`&&!Array.isArray(e)?m1(e):{},s.add(r)}let c=E1(e,n[e.path]);if(e.control===`projects`){let n=t[e.path];c=K1({checked:Array.isArray(c)?c:[],stored:Array.isArray(n)?n:[],rendered:q1(a.map(e=>({id:e,name:e})),Array.isArray(n)?n:[]).map(e=>e.id)})}_1(o,e.path,c)}for(let t of v1(e))s0(t)&&g1(o,c0(t));return delete o.secretSources,o}function T0(e,t,n,r){return t2(w0(e,t,{...t,[n.path]:r}))}function E0(e){let t=e.unit?.label;return t?` of ${t}`:``}function D0(e){let t=p0(e);if(!t)return`Allowed range is unavailable.`;let n=`${e.integer!==!1&&!C1(e)?`whole number`:`number`}${E0(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`} ${w1(t.min)}.`:`Must be a ${n} between ${w1(t.min)} and ${w1(t.max)}.`}function O0(e){return`Must be a multiple of ${T1(e,1)}.`}function k0(e){return Math.abs(e-Math.round(e))<t0&&Number.isSafeInteger(Math.round(e))}function A0(e,t){return Number(E1({...e,integer:!1,nullable:!1,zeroIsNull:!1},t))}function j0(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 D0(e);let r=Number(t);if(!Number.isFinite(r))return D0(e);if(e.zeroIsNull&&r<=0)return null;let i=A0(e,r);if(e.integer!==!1&&!k0(i))return C1(e)?O0(e):D0(e);let a=Number(E1(e,r));return n.exclusiveMin&&a<=n.min||!n.exclusiveMin&&a<n.min||n.max!=null&&a>n.max?D0(e):null}function M0(e,t,n=!1){return n?D0(e):j0(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 P0(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?w1(t):String(e)}function F0(e,t){return Array.isArray(t)?e.valueKind===`posthog-projects`&&E1(e,t)===null?Z1:null:`Must be a list.`}function I0(e,t){let n={};for(let r of v1(e)){if(y1(r))continue;let e=null;r.control===`number`&&(e=j0(r,t[r.path])),r.control===`list`&&(e=F0(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 L0(v1(e),t,n),n}function L0(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(E1(r,a))>Number(E1(i,o))&&(n[r.id]=`Minimum must not exceed the maximum (${P0(o)}).`,n[i.id]=`Maximum must not be below the minimum (${P0(a)}).`)}}function R0(e,t){return v1(e).find(e=>e.id===t.maximumSettingId||e.maximumSettingId===t.id)}function z0(e,t,n){let r=R0(e,t);return I0([{id:`scoped`,level:`machine`,title:``,description:``,settings:r?[t,r]:[t]}],n)[t.id]??null}function B0(e,t){return e.control===`number`?N0(e,t):e.control===`list`?f0(t):t}function V0(e,t){return E1(e,e.control===`list`?d0(t):t)}function H0(e){return e?.isDirty===!0}function U0(e,t,n,r,i,a=!1){if(!H0(n))return{kind:`unchanged`};let o=t.control===`number`?M0(t,r,a):null;if(o)return{kind:`invalid`,error:o};let s=B0(t,r);if(l0(E1(t,s),V0(t,n.base)))return{kind:`unchanged`};let c=z0(e,t,{...i,[t.path]:s});return c?{kind:`invalid`,error:c}:{kind:`changed`,value:s}}function W0(e){return s0(e)?``:S1(e,e.defaultValue)}function G0(e,t){return l0(t,W0(e))}function K0(e){return e.presentation?e.presentation:(e.options?.length??0)<=Q1?`segmented`:`select`}function q0(e){return Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:e===!0}function J0(e,t){return e.danger===!0&&!!e.warning&&q0(t)}function Y0(e,t){return J0(e,t)}function X0(e){return e.title.charAt(0).toLowerCase()+e.title.slice(1)}function Z0(e){return s0(e)?`Reset removes the stored ${X0(e)}. Anything that relies on it stops until a new one is saved.`:Y0(e,W0(e))?e.warning??``:null}function Q0(e){return[e.repos.join(`, `),e.trigger,e.actions.map(e=>e.type).join(`, `)].join(` `)}function $0(e){if(e==null)return[`No rules. Add workflows.rules to config.json.`];let t=kn.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`,Q0(e)].join(` `)):[`The workflows block is invalid, so no rule runs: ${t.error.issues[0]?.message??`unknown problem`}`]}function e2(e){let t=kn.safeParse(e??{});return t.success?t.data.rules.map(e=>({id:e.id,name:e.name,isEnabled:e.enabled,summary:Q0(e)})):[]}function t2(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 n2={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},r2=[{rule:`teamReview`,sectionId:`lanes-team-review`,settingId:`team-review-enabled`},{rule:`usage`,sectionId:`machine-usage`,settingId:`usage-enabled`},{rule:`posthog`,sectionId:`lanes-posthog`,settingId:`posthog-enabled`},{rule:`visions`,sectionId:`lanes-visions`,settingId:`visions-enabled`},{rule:`benchmarks`,sectionId:`lanes-benchmarks`,settingId:`benchmarks-enabled`},{rule:`zenView`,sectionId:`machine-sessions`,settingId:`zen-view`}];function i2(e,t){return t.isPhoneShellActive?t.phoneScreen===e:t.activeView===e}function a2(e,t){return e.flatMap(e=>!e.gate||!(`fromSettings`in e.gate)?[]:[{view:e,isAvailable:e.gate.fromSettings(t)}])}function o2(e,t){let n=new Set(e),r=[...new Set((t??[]).filter(e=>n.has(e)))];return[...r,...e.filter(e=>!r.includes(e))]}function s2(e,t,n){let r=e.filter(e=>e!==t);if(r.length===e.length)return[...e];let i=Math.max(0,Math.min(n,r.length));return[...r.slice(0,i),t,...r.slice(i)]}function c2(e){return{isActive:e===!0||typeof e==`string`,level:typeof e==`string`?e:null}}function l2(e,t){e?.refreshOn?.includes(t)&&e.refresh?.(t)}function u2(e,t,n){for(let r of e)i2(r.view,t)&&l2(r,n)}var d2=2e4,$=null,f2=null,p2={claude:null,codex:null},m2=null,h2=null,g2=null,_2=null,v2=`all`,y2=!1,b2=null,x2=null,S2=!0,C2=Xj,w2=Yj,T2=Jj,E2=!1,D2=null,O2=`day`,k2=new Set,A2=Kl({getAck:Xc,setAck:Zc,signature:()=>Cj($,p2.claude),isLooking:()=>!_r(m2)}),j2=null,M2=null,N2=null,P2=null,F2=null,I2=null,L2=null,R2=gp(()=>m2),z2=(e,t)=>mr(`usage`,e,t);function B2(e,t,n,r){let i=A(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=A(`span`,`usage-tile-value`,t);i.append(a,A(`span`,`usage-tile-label`,e));let o=n?A(`span`,`usage-tile-sub`,n):null;return o&&i.append(o),{tile:i,valueEl:a,subEl:o}}function V2(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function H2(e,t,n){let r=A(`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=A(`span`,`usage-meter-fill`);return r.append(i),U2(r,e),r}function U2(e,t){if(!e)return;let n=V2(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function W2(e,t,n,r){let i=A(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=A(`table`,`usage-table`),o=A(`thead`),s=A(`tr`);for(let i of e){let e=A(`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=A(`button`,`usage-sort`,i.label);o.type=`button`,o.dataset.sortKey=a,o.addEventListener(`click`,()=>{P4(`sort`),D2={kind:`sort`,table:r,key:a},n(a)}),e.append(o),s.append(e)}o.append(s);let c=A(`tbody`);return a.append(o,c),i.append(a),{wrap:i,body:c}}function G2(e,t){for(let n of t){let t=A(`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 K2(e){let t=A(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(A(`span`,`usage-share-text`,Bk(e))),t;let n=A(`span`,`usage-share-bar`),r=A(`span`,`usage-share-fill`);return r.style.width=`${V2(e)}%`,n.append(r),t.append(n,A(`span`,`usage-share-text`,Bk(e))),t}function q2(){if(!j2?.isConnected)return;let e=Number($?.ts);j2.textContent=Number.isFinite(e)&&e>0?`Report ${mp(e)}`:``}function J2(){if(!M2?.isConnected)return;let e=Number(f2?.ts);M2.textContent=Number.isFinite(e)&&e>0?`Sessions ${mp(e)}`:``}function Y2(){let e=eA($?.activeBlock);e&&(N2?.isConnected&&(N2.textContent=`${e.pct}%`),P2?.isConnected&&(P2.textContent=`${Xk(e.remainingMinutes)} left`),F2?.isConnected&&U2(F2,e.pct))}function X2(e){let t=Ak.find(t=>t.value===e);return t?t.days:null}function Z2(){let e=A(`div`,`usage-controls`),t=A(`label`,`usage-control`);t.append(A(`span`,`usage-control-label`,`Range`));let n=A(`select`,`usage-select`);for(let e of Ak){let t=A(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=v2,n.addEventListener(`change`,()=>{P4(`range`),v2=n.value,I4()}),t.append(n);let r=A(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>{P4(`refresh`),I4({force:!0})});let i=A(`span`,`usage-refresh-status`,``);return I2=r,L2=i,j4(),e.append(t,r,i),e}function Q2(){let e=z2(`Usage`,Gk($?.daily||[]));e.append(Z2()),j2=A(`p`,`usage-meta`,``),e.append(j2),q2(),R2.onTick(q2);let t=Fj($);t&&e.append(A(`p`,`usage-warning`,t));let n=jj($?.pricing?.missing);return n&&e.append(A(`p`,`usage-warning`,n)),e}function $2(){let e=gj.filter(({vendor:e})=>yj(p2[e]));if(e.length===0)return null;let t=z2(`Plan limits`,vj(e.map(({vendor:e})=>e),$?.totals)),n=e.length>1,r=A(`div`,`usage-plan-vendors`);for(let{vendor:t,label:i}of e)r.append(e4(p2[t],n?i:null));return t.append(r),t}function e4(e,t){let n=A(`div`,`usage-plan-vendor`);t&&n.append(A(`p`,`usage-plan-vendor-label`,t));let r=Oj(e?.ts);if(r){let e=A(`p`,`usage-meta`,r);e.dataset.tone=`warn`,n.append(e)}let i=A(`div`,`usage-plan`);for(let t of mj){let n=hj(e,t.key);n&&i.append(t4(t,n))}let a=A(`p`,`usage-meta`,``);n.append(i,a);let o=()=>{if(!a.isConnected)return;let t=Ej(e?.ts);a.textContent=t?`Plan ${t}`:``};return o(),R2.onTick(o),n}function t4(e,t){let n=A(`div`,`usage-plan-window`),r=A(`div`,`usage-plan-head`);r.append(A(`span`,`usage-plan-label`,e.label)),r.append(A(`span`,`usage-plan-used`,wj(t)));let i=A(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(H2(t.pct,tA(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=Tj(t.resetsAtMs))};return a(),R2.onTick(a),n}function n4(){let e=yA($,p2.claude),t=r4();if(e.length===0&&!t)return null;let n=z2(`Glimmervoid overhead`,e.length>0?dA:null);if(e.length>0){let t=A(`div`,`usage-tiles`);for(let n of e){let e=[bA(n),Rk(n.costUSD)].filter(Boolean).join(`, `);t.append(B2(`${n.label}, share of Claude use`,Bk(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=xA(t);e&&n.append(A(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(A(`p`,`usage-meta`,`Selected range by lane. ${uA}`)),n.append(t)),n}function r4(){if(!hA($))return null;let e=pA($),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=W2([{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=A(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),G2(e,[{text:fA(n.lane),className:`usage-lane-cell`},{text:Rk(n.costUSD),numeric:!0},{text:zk(n.tokens),numeric:!0},{text:wA(n.sessions),numeric:!0},{node:K2(Uk(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function i4(){let e=$?.activeBlock,t=$?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=fj($?.totals),i=z2(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(A(`p`,`usage-empty`,`No active block.`));let e=a4();return e&&i.append(e),i}let a=Sj($,p2.claude),o=A(`div`,`usage-tiles`);o.append(B2(`block tokens`,zk(e.tokens??0),Rk(e.costUSD??0),a).tile);for(let t of Qk(e.burn))o.append(B2(t.label,t.value,t.sub,a).tile);let s=eA(e);if(s){let e=B2(`elapsed`,`${s.pct}%`,`${Xk(s.remainingMinutes)} left`);N2=e.valueEl,P2=e.subEl,o.append(e.tile)}i.append(o),s&&(F2=H2(s.pct,`ok`,`Elapsed share of the current block window`),i.append(F2),R2.onTick(Y2));let c=$k(e.projection);if(c){let e=A(`p`,`usage-projection`,c);e.dataset.tone=a,i.append(e)}let l=a4();l&&i.append(l);let u=aA($?.tokenLimit);if(!u)return i;let d=rA($?.tokenLimit),f=Sj($);i.append(H2(d,f,`Share of the largest completed block seen, estimated`));let p=A(`p`,`usage-meta`,u);p.dataset.tone=f,i.append(p),i.append(A(`p`,`usage-provenance`,xj(`estimated`)));let m=oA(e.projection,$?.tokenLimit);if(m){let e=A(`p`,`usage-meta`,m);e.dataset.tone=f,i.append(e)}return i}function a4(){let e=$?.anomaly;if(!ij(e))return null;let t=A(`p`,`usage-meta`,nj(e));return t.dataset.tone=rj(e),t}function o4(){let e=rM($?.blocks);if(e.length===0)return null;let t=fj($?.totals),n=z2(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=A(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=A(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(A(`span`,`usage-block-label`,Zk(t.startTs)));let n=A(`span`,`usage-block-bar`),a=A(`span`,`usage-block-fill`);a.style.width=`${V2(Uk(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(A(`span`,`usage-block-value`,`${zk(t.tokens)} ${Rk(t.costUSD)}`)),r.append(e)}return n.append(r),n}function s4(){let e=$?.totals||{},t=nM($?.daily,qk($)),n=z2(`Totals`,[Ok,$?.tz?`TZ ${$.tz}`:``].filter(Boolean).join(` `)),r=Sj($,p2.claude),i=A(`div`,`usage-tiles`);i.append(B2(`today`,zk(t?.tokens??0),Rk(t?.costUSD??0),r).tile),i.append(B2(`range total`,zk(e.tokens??0),Rk(e.costUSD??0)).tile);let a=CA($);a&&i.append(B2(a.label,a.value,a.sub).tile),n.append(i);let o=c4(e);o&&n.append(o);let s=uj(e)?lj(e):[];if(s.length>0){let e=A(`div`,`usage-tiles usage-vendor-tiles`);for(let t of s)e.append(B2(t.label,zk(t.tokens),Rk(t.costUSD)).tile);n.append(e)}return M2=A(`p`,`usage-meta`,``),n.append(M2),J2(),R2.onTick(J2),n}function c4(e){let t=cA(e);if(t.length===0)return null;let n=A(`div`,`usage-compo`),r=A(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=A(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=A(`div`,`usage-compo-legend`);for(let e of t){let t=A(`span`,`usage-compo-item`),n=A(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,A(`span`,`usage-compo-label`,e.label),A(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function l4(){let e=$?.savings;if(!DA(e))return null;let t=z2(`Savings`,``),n=A(`div`,`usage-tiles`),r=OA(e);r&&n.append(B2(`rtk compression`,r.value,r.sub).tile);let i=kA(e);return i&&n.append(B2(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function u4(){let e=AA($);if(e.length===0)return null;let t=z2(`Budgets`,`your own ceilings`),n=A(`div`,`usage-budgets`),r=cm(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=A(`div`,`usage-budget`),r=A(`div`,`usage-budget-head`);r.append(A(`span`,`usage-budget-label`,jA(t.scope))),r.append(A(`span`,`usage-budget-value`,MA(t))),r.append(A(`span`,`usage-budget-pct`,Bk(NA(t)))),e.append(r),e.append(H2(NA(t),t.tone,PA(t))),n.append(e)}return t.append(n),t}function d4(){let e=$?.daily||[],t=O2,n=tM(GA(e,t),C2),r=FA.find(e=>e.value===t)?.label||`Day`,i=z2(`Over time`,[JA(e)].filter(Boolean).join(`, `));if(i.append(f4()),n.length===0)return i.append(A(`p`,`usage-empty`,`No usage.`)),i;let a=m4(e);a&&i.append(a);let{wrap:o,body:s}=W2([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],C2,e=>{C2=Kj(C2,e),C4()},`day`);for(let e of n){let n=String(e.day??``),r=A(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=eM(e.models),a=`${t}:${n}`,o=h4(a,i.length);G2(r,[{node:p4(e,t),title:n},{text:zk(e.tokens),numeric:!0},{text:Rk(e.costUSD),numeric:!0},{node:o,className:`usage-toggle-cell`}]),s.append(r),i.length!==0&&k2.has(a)&&s.append(g4(i))}return i.append(o),i}function f4(){let e=A(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of FA){let n=A(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===O2?`true`:`false`),n.addEventListener(`click`,()=>{O2!==t.value&&(P4(`period`),O2=t.value,D2={kind:`period`,view:t.value},C4())}),e.append(n)}return e}function p4(e,t){let n=A(`span`,`usage-period-cell`);return n.append(A(`span`,null,qA(e.day,t))),e.source===`history`&&n.append(A(`span`,`usage-history-tag`,`history`)),n}function m4(e){let{cells:t,max:n}=QA(e,{today:qk($)});if(t.length===0||n<=0)return null;let r=A(`div`,`usage-heatmap-scroll`),i=A(`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=A(`div`,`usage-heatmap-days`);for(let e of XA)a.append(A(`span`,`usage-heatmap-day`,e));for(let e of t){let t=A(`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=$A(e),i.append(t)}return r.append(a,i),r}function h4(e,t){if(t===0)return null;let n=A(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,k2.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{P4(`expand`),D2={kind:`day`,day:e},k2.has(e)?(k2.delete(e),C4()):(k2.add(e),C4())}),n}function g4(e){let t=A(`tr`,`usage-row-breakdown`),n=A(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=A(`span`,`usage-model-chip`);e.append(A(`span`,`usage-model-name`,Vj(t)),A(`span`,`usage-model-value`,`${zk(t.tokens)} ${Rk(t.costUSD)}`)),n.append(e)}return t.append(n),t}function _4(e,t){let n=A(`span`,`usage-model-name-wrap`),r=cj(e,t);return r&&n.append(A(`span`,`usage-vendor-tag`,r)),n.append(A(`span`,null,Vj(e))),n}function v4(){let e=eM($?.models,w2),t=$?.totals||{},n=Vk(t),r=z2(`By model`,Hk(n));if(e.length===0)return r.append(A(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=W2([{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`}],w2,e=>{w2=Kj(w2,e),C4()},`model`);for(let r of e){let e=A(`tr`,`usage-row`);G2(e,[{node:_4(r,t),className:`usage-model-cell`,title:Vj(r)},{text:zk(r.tokens),numeric:!0},{text:Rk(r.costUSD),numeric:!0},{node:K2(Uk(r[n],t[n])),className:`usage-share-cell`},{text:zk(r.input),numeric:!0},{text:zk(r.output),numeric:!0},{text:zk(r.cacheCreate),numeric:!0},{text:zk(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function y4(){let e=Zj($?.sessions,T2),t=Qj(e,E2),n=$?.totals||{},r=Vk(n),i=z2(`By session`,Hk(r));if(e.length===0)return i.append(A(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:o}=W2([{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`}],T2,e=>{T2=Kj(T2,e),C4()},`session`);for(let e of t.rows){let t=A(`tr`,`usage-row`);zj(e)&&(t.dataset.managed=`true`);let i=Bj(e),a=A(`span`,`usage-ago`,``);G2(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:zk(e.tokens),numeric:!0},{text:Rk(e.costUSD),numeric:!0},{node:K2(Uk(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),R2.track(a,Number(e.lastTs),mp),o.append(t)}return i.append(a),e.length>10&&i.append(b4(t.hiddenCount)),i}function b4(e){let t=A(`div`,`usage-overflow`),n=$j(e);n&&t.append(A(`p`,`usage-meta`,n));let r=A(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,E2?`true`:`false`),r.addEventListener(`click`,()=>{P4(`expand`),D2={kind:`sessions-toggle`},E2=!E2,C4()}),t.append(r),t}function x4(){let e=z2(`Not available`,``);return e.append(A(`p`,`usage-empty`,Pj($))),e.append(A(`p`,`usage-empty`,kk)),e}function S4(){j2=null,M2=null,N2=null,P2=null,F2=null,I2=null,L2=null}function C4({force:e=!1}={}){if(!m2||!e&&_r(m2))return;let t=m2.parentElement,n=t?t.scrollTop:0;R2.reset(),S4(),m2.textContent=``,E4(),t&&(t.scrollTop=n),w4()}function w4(){let e=D2;if(D2=null,!e)return;let t=T4(e);if(!t||!m2)return;let n=m2.querySelector(t);n instanceof HTMLElement&&n.focus()}function T4(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 E4(){if(!m2)return;m2.append(Q2());let e=$2();if(Ij($)){e&&m2.append(e),m2.append(x4());return}if(!$){e&&m2.append(e),m2.append(A(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,u4()].filter(e=>e!==null);m2.append(D4(`usage-band-now`,i4(),t,{sideFirst:!0}));let n=[l4()].filter(e=>e!==null);m2.append(D4(`usage-band-spend`,s4(),n));let r=[o4()].filter(e=>e!==null);m2.append(D4(`usage-band-trend`,d4(),r));let i=n4();i&&m2.append(i),m2.append(v4(),y4())}function D4(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=A(`div`,`usage-band ${e}`),a=A(`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 O4(){h2&&h2(A2.refresh())}function k4(){A2.acknowledge(),O4()}function A4(){return S2?y2?`Refreshing`:x2??``:$?`${W} The figures below are from before the connection dropped.`:W}function j4(){I2&&(I2.disabled=y2),L2&&(L2.textContent=A4(),!S2||!y2&&x2!==null?L2.dataset.tone=`error`:delete L2.dataset.tone)}function M4(e){y2=e,j4(),b2&&=(clearTimeout(b2),null),e&&(b2=setTimeout(()=>{b2=null,y2=!1,x2=`Usage did not answer within ${Math.round(d2/1e3)} s. Refresh to try again.`,j4()},d2))}function N4(e){h2=e,O4()}function P4(e){g2?.({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`usage`,action:e}})}function F4(e){g2=e}function I4({force:e=!1}={}){if(!g2)return;_2=Fd(`usage`);let t={type:`request-usage-report`,requestId:_2};e&&(t.force=!0);let n=X2(v2);n!==null&&(t.days=n),x2=null,M4(!0),!g2(t)&&(x2=W,M4(!1))}function L4(e){S2=e,j4()}function R4(e){if(m2)return m2;let t=A(`div`,`usage-content`);return e.appendChild(t),m2=t,R2.ensure(),C4({force:!0}),t}function z4(){C4({force:!0})}function B4(e){f2=e,$&&!Ij($)&&M2?.isConnected?J2():C4()}function V4(e){let t=e;p2={...p2,[_j(t)]:t},C4(),O4()}function H4(e){Lj(e,_2)&&(x2=null,M4(!1),$=e,C4(),O4())}function U4(){let e=$?.pricing||(f2?{source:f2.pricingSource}:null),t=Aj(e?.fetchedAt),n=[kj(e,t!==null&&t>0?mp(t):``)],r=Pj($);r&&n.push(r);let i=Nj($?.scan);return i&&n.push(i),n}var W4=Object.freeze({sounds:()=>_b(),themes:zb}),G4=2200,K4=1600,q4=`browser-appearance`,J4=`browser-shortcuts`,Y4=`lanes-features`,X4=Object.freeze({id:Y4,level:`lanes`,title:`Features`,description:`Optional tabs, each hidden until its own toggle is on.`,settings:[]}),Z4=`flying-animals`,Q4=Object.freeze({ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1});function $4(e){if(!e.optionsFrom)return e;let t=W4[e.optionsFrom]?.()??[];return{...e,options:t.map(e=>({value:e.id,label:e.label}))}}function e3(){let e=d1.sections.map(e=>({...e,settings:e.settings.map($4)})),t=e.findIndex(e=>e.level===`lanes`);return Object.freeze([...e.slice(0,t),X4,...e.slice(t)])}var t3=e3(),n3=!1,r3=null,i3=null,a3=null,o3=null,s3=null,c3=null,l3=null,u3=null,d3=t3[0],f3={},p3={},m3=new Map,h3=new Map,g3=new Map,_3=new WeakMap,v3=Promise.resolve(),y3=new Map,b3=``,x3=null,S3=null,C3=Ju,w3=()=>{},T3=null,E3=!1,D3=!1,O3=null,k3=new Set,A3=new Map;function j3(){return{themeId:bc(),flyingAnimalsEnabled:Sc(),...fl(),soundEnabled:cc(),soundId:vb(uc()),notificationsEnabled:fc(),sessionUsageChips:mc(),phoneArrowPad:gc(),nextAttentionKeyCode:vc()}}function M3(e){p3=C0(t3,{...e,prefs:j3()}),wp(e.agentLogins)}function N3(e){return g3.has(e.id)?g3.get(e.id):p3[e.path]}function P3(e){return[e,...v0(t3,e.id)]}function F3(e){return P3(e).flatMap(e=>e.settings)}function I3(e){return t3.find(t=>t.settings.some(t=>t.id===e.id))??d3}function L3(e,t=null){history.replaceState(history.state,``,am(e,t))}function R3(e){requestAnimationFrame(()=>{let t=document.getElementById(e),n=t?.closest(`.settings-view-advanced-panel`);n&&(n3=!0,n.hidden=!1,u3?.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 z3(e){e.replaceChildren();for(let t of Ys(lm,fm())){let n=A(`div`,`shortcut-group`);n.appendChild(A(`div`,`shortcut-group-title`,t.title));let r=A(`dl`,`shortcut-rows`);for(let e of t.items){let t=A(`dt`,`shortcut-keys`);e.combos.forEach((e,n)=>{n>0&&t.appendChild(A(`span`,`shortcut-sep`,`/`)),pm(t,e)}),r.append(t,A(`dd`,`shortcut-label`,e.label))}n.appendChild(r),e.appendChild(n)}}var B3=[];function V3(e){B3=[...e]}function H3(e){return B3.find(t=>t.gate!==void 0&&`fromSettings`in t.gate&&t.gate.fromSettings===e)?.label}function U3(e){let t=A(`ul`,`settings-view-stack settings-features`);for(let e of r2){let n=t3.find(t=>t.id===e.sectionId),r=G3(e.settingId),i=H3(n2[e.rule]);if(!n||!r||!i)continue;let a=N3(r)===!0,o=A(`li`,`settings-feature`),s=A(`div`,`settings-feature-head`);s.append(A(`span`,`settings-feature-name`,i),e8(`feature`,a?`On`:`Off`)),o.append(s,A(`p`,`settings-view-section-description`,n.description),cm(e.sectionId,e.settingId,r.title)),t.appendChild(o)}e.appendChild(t)}function W3(e){let t=A(`div`,`settings-about`),n=A(`span`,`settings-about-version`,`GLIMMERVOID `);n.appendChild(A(`span`,`settings-about-v`,`v0.43.4`));let r=A(`span`,`settings-about-links`),i=A(`a`,`settings-about-link`,`GitHub`);i.href=`https://github.com/${l$}`,i.target=`_blank`,i.rel=`noopener`;let a=A(`a`,`settings-about-link`,`Changelog`);a.href=`https://github.com/${l$}/blob/main/CHANGELOG.md`,a.target=`_blank`,a.rel=`noopener`,r.append(i,a),t.append(n,r),e.appendChild(t)}function G3(e){return t3.flatMap(e=>e.settings).find(t=>t.id===e)??null}function K3(e){if(p3[`pref:soundEnabled`]===e)return;p3[`pref:soundEnabled`]=e;let t=G3(`alert-sounds-enabled`);t&&p8(t)}var q3={"pref:flyingAnimalsMinGapSeconds":e=>il(Number(e)),"pref:flyingAnimalsMaxGapSeconds":e=>al(Number(e)),"pref:flyingAnimalsMinDurationSeconds":e=>ol(Number(e)),"pref:flyingAnimalsMaxDurationSeconds":e=>sl(Number(e)),"pref:flyingAnimalsScale":e=>cl(Number(e)),"pref:flyingAnimalsOnPhone":e=>ll(e===!0)};function J3(e,t){if(e.path===`pref:sessionUsageChips`){hc(t===!0),Ib(t===!0);return}if(e.path===`pref:phoneArrowPad`){_c(t===!0),Lb(t===!0);return}if(e.path===`pref:nextAttentionKeyCode`){yc(String(t)),gm(vc());let e=u3?.querySelector(`.settings-view-shortcuts`);e&&z3(e);return}if(e.path===`pref:themeId`){xc(String(t)),Fb(String(t));return}if(e.path===`pref:flyingAnimalsEnabled`){Cc(t===!0),s$(t===!0);return}let n=q3[e.path];n?(n(t),s$(Sc())):e.path===`pref:soundEnabled`?HY(t===!0):e.path===`pref:soundId`?(dc(String(t)),kb(String(t))):e.path===`pref:notificationsEnabled`&&(pc(t===!0),t===!0&&Jp().then(()=>p8(e,{force:!0})))}function Y3(e,t){let n=h3.get(e.id);n!==void 0&&clearTimeout(n),h3.delete(e.id),t&&m3.set(e.id,t),t||m3.delete(e.id),m8(e)}function X3(e){Y3(e,{tone:`saved`,text:`Saved`}),h3.set(e.id,window.setTimeout(()=>Y3(e,null),G4))}function Z3(e,t){y3.delete(e.id),e.path.startsWith(`pref:`)?(p3[e.path]=t,J3(e,t),p8(e),X3(e)):g3.has(e.id)&&JSON.stringify(g3.get(e.id))===JSON.stringify(t)||(g3.set(e.id,t),Y3(e,{tone:`saving`,text:`Saving`}),v3=v3.then(()=>Q3(e,t)))}async function Q3(e,t){let n=T0(t3,p3,e,t);if(Object.keys(n).length===0)g3.delete(e.id),Y3(e,null),p8(e);else{Y3(e,{tone:`saving`,text:`Saving`});try{let r=await K(`update-settings`,{settings:n});if(g3.get(e.id)===t&&g3.delete(e.id),r.type===`settings-error`){Y3(e,{tone:`error`,text:String(r.message)}),p8(e,{force:!0});return}if(r.type!==`settings-updated`){Y3(e,{tone:`error`,text:`The server did not confirm the save.`}),p8(e,{force:!0});return}K8(r.settings),X3(e)}catch(n){g3.get(e.id)===t&&g3.delete(e.id),Y3(e,{tone:`error`,text:n?.message||`Failed to save the setting.`}),p8(e,{force:!0})}}}function $3(e,t){t&&y3.set(e.id,t),t||y3.delete(e.id),m8(e)}function e6(e,t){if(!t.exclusiveMin)return t.min;if(e.integer!==!1)return t.min+1}function t6(e){return e?`On`:`Off`}function n6(e){let t=A(`div`,`settings-view-toggle-wrap`),n=A(`label`,`settings-view-toggle`),r=A(`input`,`settings-view-checkbox`);r.type=`checkbox`,r.checked=N3(e)===!0,e.id===`desktop-notifications`&&!Kp()&&(r.checked=!1,r.disabled=!0),r.setAttribute(`aria-labelledby`,e.id);let i=A(`span`,`settings-view-toggle-state`,t6(r.checked));return r.addEventListener(`change`,()=>{let t=r.checked;Y0(e,t)?(r.checked=!1,i.textContent=t6(!1),Rf({title:e.title,message:e.warning??``,confirmLabel:`Turn on`,danger:!0,onConfirm:()=>Z3(e,!0)})):(i.textContent=t6(t),Z3(e,t))}),n.append(r,i),t.appendChild(n),t}function r6(e){let t=A(`div`,`settings-view-shortcut-key`),n=mm(Ks(`next-attention`,lm,String(N3(e)))),r=A(`button`,`btn-dialog btn-dialog-cancel`,`Record`);r.type=`button`;let i=A(`span`,`settings-view-shortcut-key-prompt`);return i.setAttribute(`role`,`status`),r.addEventListener(`click`,()=>i6(e,t,r,i)),t.append(n,r,i),t}function i6(e,t,n,r){let i=()=>{window.removeEventListener(`keydown`,o,!0),window.removeEventListener(`pointerdown`,a,!0),window.removeEventListener(`focusin`,a,!0),n.disabled=!1,r.textContent=``},a=e=>{e.target instanceof Node&&t.contains(e.target)||i()},o=t=>{if(!n.isConnected||!n.checkVisibility()){i();return}t.preventDefault(),t.stopImmediatePropagation();let r=Is(t,lm);r.kind!==`ignored`&&(r.kind===`refused`?$3(e,r.reason):(i(),$3(e,null),n.focus(),r.kind===`recorded`&&Z3(e,r.keyCode)))};$3(e,null),n.disabled=!0,r.textContent=`Press the new shortcut, or Esc to cancel.`,window.addEventListener(`keydown`,o,!0),window.addEventListener(`pointerdown`,a,!0),window.addEventListener(`focusin`,a,!0)}function a6(e,t,n){e.addEventListener(`blur`,t),e.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),t()):e.key===`Escape`&&(e.preventDefault(),n())})}function o6(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&[`text`,`number`,`password`].includes(e.type)}function s6(e,t){_3.set(t,{base:N3(e),isDirty:!1}),t.addEventListener(`input`,()=>{let e=_3.get(t);e&&(e.isDirty=!0)})}function c6(e,t,n){t.value!==n&&(t.value=n),_3.set(t,{base:N3(e),isDirty:!1}),$3(e,null)}function l6(e,t,n,r=!1){let i=_3.get(t);if(!i)return;let a=U0(t3,e,i,t.value,p3,r);a.kind===`invalid`?$3(e,a.error):a.kind===`unchanged`?c6(e,t,n):Y0(e,a.value)?(c6(e,t,n),Rf({title:e.title,message:e.warning??``,confirmLabel:`Save`,danger:!0,onConfirm:()=>Z3(e,a.value)})):(_3.set(t,{base:a.value,isDirty:!1}),Z3(e,a.value))}function u6(e){let t=A(`input`,`settings-view-input`);t.type=e.control===`password`?`password`:`text`;let n=()=>String(N3(e)??``);t.value=n(),e.control===`password`&&(t.value=``,t.placeholder=n()?`Configured`:`Not configured`);let r=a0(e,f3);return r&&(t.disabled=!0,t.setAttribute(`aria-description`,`Supplied by ${r}`)),t.autocomplete=`off`,t.spellcheck=!1,t.setAttribute(`aria-labelledby`,e.id),s6(e,t),a6(t,()=>{if(e.control===`password`){let n=t.value;if(n===``)return;c6(e,t,``),Z3(e,n)}else l6(e,t,n())},()=>c6(e,t,e.control===`password`?``:n())),t}function d6(e){let t=A(`input`,`settings-view-input`),n=p0(e);t.type=`number`;let r=()=>P0(N3(e));t.value=r(),t.step=e.integer===!1?String(e.step??`any`):`1`;let i=n?e6(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),s6(e,t),a6(t,()=>l6(e,t,r(),t.validity.badInput),()=>c6(e,t,r()));let a=e.unit?.label;if(!a)return t;let o=A(`div`,`settings-view-number`),s=A(`span`,`settings-view-unit`,a);return s.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-description`,a),o.append(t,s),o}function f6(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 p6(e,t,n){n!==String(N3(e))&&(f6(t,n),Z3(e,n),f6(t,String(N3(e))))}function m6(e){let t=A(`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=A(`button`,`settings-view-segment`,r.label);n.type=`button`,n.dataset.value=r.value,n.setAttribute(`role`,`radio`),n.addEventListener(`click`,()=>p6(e,t,r.value)),t.appendChild(n)}return t.addEventListener(`keydown`,r=>{let i=Q4[r.key];if(!i||n.length===0)return;r.preventDefault();let a=Math.max(0,n.findIndex(t=>t.value===String(N3(e)))),o=n[(a+i+n.length)%n.length];p6(e,t,o.value),t.querySelector(`[data-value="${CSS.escape(o.value)}"]`)?.focus()}),f6(t,String(N3(e))),t}function h6(e){let t=A(`select`,`settings-view-input`);t.setAttribute(`aria-labelledby`,e.id);for(let n of e.options??[]){let e=A(`option`,null,n.label);e.value=n.value,t.appendChild(e)}return t.value=String(N3(e)),t.addEventListener(`change`,()=>Z3(e,t.value)),t}function g6(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 _6(e){let t=A(`textarea`,`settings-view-input settings-view-list-input`),n=()=>d0(N3(e)),r=()=>n().join(`
|
|
176
|
+
`);t.rows=3,t.value=r(),t.autocomplete=`off`,t.spellcheck=!1,t.placeholder=e.listPlaceholder??``,t.setAttribute(`aria-labelledby`,e.id),s6(e,t),t.addEventListener(`blur`,()=>l6(e,t,r())),t.addEventListener(`keydown`,n=>{n.key===`Escape`?(n.preventDefault(),c6(e,t,r())):n.key!==`Enter`||n.shiftKey||(n.preventDefault(),l6(e,t,r()))});let i=A(`div`,`settings-view-list`);return i.append(t,A(`span`,`settings-view-list-hint`,g6(e,n()))),i}var v6=null;function y6(e){let t=o2(B3.map(e=>e.view),d0(N3(e))),n=A(`ol`,`settings-view-tab-order`);n.setAttribute(`aria-labelledby`,e.id);for(let[r,i]of t.entries()){let a=B3.find(e=>e.view===i)?.label??i,o=A(`li`,`settings-view-tab-order-item`);o.append(A(`span`,`settings-view-tab-order-label`,a),b6(e,t,i,r-1,`Move up`,`Move ${a} up`),b6(e,t,i,r+1,`Move down`,`Move ${a} down`)),n.append(o)}return n}function b6(e,t,n,r,i,a){let o=`${n}:${i}`,s=A(`button`,`btn-dialog btn-dialog-cancel`,i);return s.type=`button`,s.setAttribute(`aria-label`,a),s.disabled=r<0||r>=t.length,o===v6&&(s.dataset.restoresFocus=`true`),s.addEventListener(`click`,()=>{v6=o,Z3(e,s2(t,n,r))}),s}function x6(e){let t=A(`div`,`settings-view-projects`),n=N3(e),r=new Set(Array.isArray(n)?n:[]),i=Array.isArray(f3.projectChoices)?f3.projectChoices:[];i.length===0&&t.appendChild(A(`div`,`settings-empty`,`No configured projects are available.`));for(let n of q1(i,[...r])){let i=A(`label`,`settings-view-project-choice`),a=A(`input`,`settings-view-checkbox`);a.type=`checkbox`,a.checked=r.has(n.id),a.addEventListener(`change`,()=>{let t=N3(e),r=new Set(Array.isArray(t)?t:[]);a.checked&&r.add(n.id),a.checked||r.delete(n.id),Z3(e,[...r])}),i.append(a,document.createTextNode(n.name)),t.appendChild(i)}return t}function S6(e,t,{isPrimary:n=!1,isEnabled:r=!0}={}){let i=A(`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 C6(e){let t=A(`span`,`settings-update-action-status`,e??``);return t.setAttribute(`role`,`status`),t}function w6(e){let t=Xu(C3,e);t!==C3&&(C3=t,X8())}function T6(){w6(G({type:`update-apply`})?`request-sent`:`request-unsent`)}function E6(){T3=Date.now();let e=G({type:`update-check`});D3=e,O3=e?null:W,X8()}function D6(){return D3?`Checking for updates.`:O3}function O6(){x3?(E3=!1,bd({status:x3,checkForUpdates:f3.checkForUpdates,now:Date.now(),lastAutoCheckAt:T3})&&E6()):E3=!0}function k6(e){return e===`update`?S6(`Update`,T6,{isPrimary:!0}):e===`restart`?S6(`Restart`,w3,{isPrimary:!0}):S6(`Check for updates`,E6,{isEnabled:!D3})}function A6(){let e=ed({status:x3,journal:S3,request:C3}),t=A(`div`,`settings-update-actions`);if(e.actions.length>0){let n=A(`div`,`settings-update-buttons`);n.append(...e.actions.map(k6)),t.appendChild(n)}let n=D6();return n&&t.appendChild(C6(n)),e.note&&t.appendChild(C6(e.note)),e.command&&t.appendChild(A(`code`,`settings-update-command`,e.command)),t}function j6(e,...t){let n=A(`div`,`settings-update-fact`);return n.append(A(`span`,`settings-update-fact-label`,e),...t),n}function M6(){let e=pd(S3);if(!e)return null;let t=A(`div`,`settings-update-progress`);t.dataset.state=e.state,t.setAttribute(`role`,`status`),e.terminalLine&&t.appendChild(A(`div`,`settings-update-terminal`,e.terminalLine));let n=A(`ol`,`settings-update-steps`);for(let t of e.steps){let e=A(`li`,`settings-update-step`);e.dataset.status=t.status,e.append(A(`span`,`settings-update-step-state`,t.status),A(`span`,`settings-update-step-label`,t.label)),n.appendChild(e)}if(t.appendChild(n),e.outputTail.length===0)return t;let r=A(`pre`,`settings-update-output`,e.outputTail.join(`
|
|
177
|
+
`));if(e.outputStepId&&(r.dataset.step=e.outputStepId),!e.outputStepLabel)return t.appendChild(r),t;let i=`Output from ${e.outputStepLabel}`;return r.setAttribute(`aria-label`,i),t.append(A(`div`,`settings-update-output-label`,i),r),t}function N6(){let e=yd(x3),t=[e.label];if(e.behind&&t.push(A(`span`,`settings-update-behind`,e.behind)),e.releaseUrl){let n=A(`a`,`settings-link`,`View release`);n.href=e.releaseUrl,n.target=`_blank`,n.rel=`noopener noreferrer`,t.push(n)}return j6(`Latest`,...t)}function P6(){let e=A(`div`,`settings-view-status-block settings-update-status`),t=gd(x3,S3),n=A(`div`,`settings-update-summary`,t.headline);n.dataset.tone=t.tone,e.appendChild(n),e.appendChild(j6(`Running`,vd(x3))),_d(x3)&&e.appendChild(N6());let r=typeof x3?.lastCheckAt==`number`?x3.lastCheckAt:null,i=j6(`Last checked`,xd({status:x3,checkForUpdates:f3.checkForUpdates,relativeTime:mp(r)}));r&&(i.title=new Date(r).toLocaleString()),e.appendChild(i),e.appendChild(A6());let a=M6();return a&&e.appendChild(a),e}function F6(e){return e===null?`not probed yet`:e?`resolved`:`not found on PATH`}function I6(){let e=Array.isArray(f3.customAgents)?f3.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} ${F6(e.resolvable)}`})}function L6(){let e=A(`div`,`settings-view-status-block`);e.appendChild(A(`div`,`settings-section-title`,`Declared agents`));for(let t of I6())e.appendChild(A(`div`,`settings-readonly`,t));return e}function R6(e){A3.set(e,{tone:`ok`,text:`Saved`}),window.setTimeout(()=>{A3.get(e)?.tone===`ok`&&(A3.delete(e),Y8())},G4)}async function z6(e,t){k3.add(e.id),A3.delete(e.id),Y8();try{let n=await K(`update-settings`,{settings:{workflows:{rules:[{id:e.id,enabled:t}]}}},{timeoutMs:q});if(k3.delete(e.id),n.type===`settings-error`&&A3.set(e.id,{tone:`error`,text:String(n.message)}),n.type===`settings-updated`){R6(e.id),K8(n.settings);return}}catch(t){A3.set(e.id,{tone:`error`,text:df(t,q)})}k3.delete(e.id),Y8()}function B6(e){let t=lf(`settings-workflow-rule-status`);if(k3.has(e.id))return t.show(`busy`,`Saving`),t.element;let n=A3.get(e.id);return n&&t.show(n.tone,n.text),t.element}function V6(e){let t=A(`div`,`settings-view-toggle-wrap`),n=A(`label`,`settings-view-toggle`),r=A(`input`,`settings-view-checkbox`);return r.type=`checkbox`,r.checked=e.isEnabled,r.disabled=k3.has(e.id),r.setAttribute(`aria-label`,`Run rule ${e.name}`),r.addEventListener(`change`,()=>{z6(e,r.checked)}),n.append(r,A(`span`,`settings-view-toggle-state`,t6(e.isEnabled)),A(`span`,`settings-readonly`,`${e.name} ${e.summary}`)),t.append(n,B6(e)),t}function H6(){let e=A(`div`,`settings-view-status-block`);e.appendChild(A(`div`,`settings-section-title`,`Rules`));let t=e2(f3.workflows);if(t.length>0){for(let n of t)e.appendChild(V6(n));return e}for(let t of $0(f3.workflows))e.appendChild(A(`div`,`settings-readonly`,t));return e}function U6(){let e=A(`div`,`settings-view-status-block`);e.appendChild(A(`div`,`settings-section-title`,`Last report`));for(let t of U4())e.appendChild(A(`div`,`settings-readonly`,t));return e}function W6(){let e=A(`div`,`settings-view-status-block`);if((g3.get(`remote-sessions`)??p3.remoteSessions)!==!0)return e.appendChild(A(`div`,`settings-readonly`,`Turn on Remote Coder sessions (experimental) to connect agent logins for them.`)),e;for(let t of[`claude-code`,`codex`]){let n=A(`div`,`settings-telegram-test`),r=A(`button`,`btn-dialog btn-dialog-cancel`,`Connect`);r.type=`button`,r.addEventListener(`click`,()=>Ap(t)),n.append(A(`div`,`settings-readonly`,Op(Tp(t),t)),r),e.appendChild(n)}return e}function G6(){let e=A(`div`,`settings-view-status-block`),t=A(`button`,`btn-dialog btn-dialog-cancel`,`Set up remote host`);return t.type=`button`,t.addEventListener(`click`,jp),e.appendChild(t),e}function K6(e){return e.status===`agent-logins`?W6():e.status===`remote-setup`?G6():e.status===`update-actions`?P6():e.status===`custom-agents`?L6():e.status===`workflows`?H6():A(`div`,`settings-readonly`,`Not available`)}function q6(e){return e.control===`readonly`?K6(e):e.control===`toggle`?n6(e):e.control===`number`?d6(e):e.control===`select`?K0(e)===`segmented`?m6(e):h6(e):e.control===`list`?_6(e):e.control===`projects`?x6(e):e.control===`shortcut-key`?r6(e):e.control===`tab-order`?y6(e):u6(e)}function J6(e){let t=a0(e,f3);return t?`Supplied by ${t}. Change the server environment and restart to replace this credential.`:e.status!==`rtk-install`||N3(e)!==!0||f3.rtkAvailable?``:o0(f3)}function Y6(e){if(e.control===`readonly`)return null;if(e.status===`usage-last-report`){let e=U6();return e.classList.add(`settings-view-status-slot`),e}if(e.id===`desktop-notifications`)return $6(e);if(e.status===`telegram-delivery`)return Q6();let t=J6(e);return t?A(`div`,`settings-view-warning settings-view-status-slot`,t):null}function X6(){let e=vo.safeParse(f3.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 Z6(e){e.replaceChildren(...X6().map(e=>A(`p`,`settings-view-warning`,e)))}function Q6(){let e=A(`div`,`settings-view-status-slot settings-telegram-delivery`),t=A(`div`,`settings-telegram-delivery-lines`);Z6(t);let n=A(`button`,`btn-dialog btn-dialog-cancel`,`Send test message`);n.type=`button`;let r=lf(`settings-telegram-test-status`);n.addEventListener(`click`,async()=>{n.disabled=!0;let e=await ff(`telegram-test`,{},r,{busyText:`Sending a test message to Telegram.`});n.disabled=!1,e?.type===`telegram-test-result`&&(f3={...f3,telegramDelivery:e.telegramDelivery},Z6(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=A(`div`,`settings-telegram-test`);return i.append(n,r.element),e.append(t,i),e}function $6(e){let t=Zp(()=>p8(e,{force:!0}));return t.element.hidden?null:(t.element.classList.add(`settings-view-status-slot`),t.element)}function e8(e,t){let n=A(`span`,`settings-view-chip`,t);return n.dataset.chip=e,n}function t8(e,t){let n=vr(e);return n?n.then(()=>t,()=>`Copy failed`):Promise.resolve(`Copy failed`)}function n8(e,t,{copiedText:n,textToCopy:r}){let i=A(`span`,`settings-view-copy-status`);i.setAttribute(`role`,`status`),t.type=`button`,t.addEventListener(`click`,async()=>{i.textContent=await t8(r(),n),setTimeout(()=>{i.textContent=``},K4)}),e.append(t,i)}function r8(e){let t=A(`div`,`settings-view-setting-heading`),n=I3(e),r=A(`h2`,`settings-view-setting-title`,e.title);r.id=e.id,r.addEventListener(`click`,()=>L3(n.id,e.id));let i=A(`button`,`settings-view-copy-link`,`#`);return i.setAttribute(`aria-label`,`Copy link`),t.appendChild(r),n8(t,i,{copiedText:`Link copied`,textToCopy:()=>new URL(am(n.id,e.id),location.href).href}),t}function i8(e){let t=A(`div`,`settings-view-chips`);return t.append(e8(`scope`,i0[e.scope]),e8(`effect`,r0[e.takesEffect])),t}function a8(e){return e.control===`readonly`||a0(e,f3)?!1:!G0(e,N3(e))}function o8(e){let t=A(`div`,`settings-view-control-foot`),n=A(`span`,`settings-view-save-status`);n.setAttribute(`role`,`status`);let r=A(`button`,`settings-view-reset`,`Reset`);return r.type=`button`,r.title=`Reset to the default value`,r.addEventListener(`click`,()=>{let t=W0(e),n=Z0(e);n===null?Z3(e,t):Rf({title:e.title,message:n,confirmLabel:`Reset`,danger:!0,onConfirm:()=>Z3(e,t)})}),t.append(n,r),t}function s8(e,t){let n=e.querySelector(`.settings-view-save-status`),r=m3.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=!a8(t));let a=e.querySelector(`.settings-view-field-error`),o=y3.get(t.id);a&&!o&&a.remove(),a&&o&&(a.textContent=o),!a&&o&&e.querySelector(`.settings-view-setting-control`)?.appendChild(A(`div`,`settings-view-field-error`,o))}function c8(e){let t=A(`article`,`settings-view-setting`);t.dataset.settingId=e.id,e.control===`readonly`&&(t.dataset.readout=`true`);let n=A(`div`,`settings-view-setting-text`);n.append(r8(e),A(`p`,`settings-view-setting-description`,e.description),i8(e));let r=A(`div`,`settings-view-setting-control`);r.appendChild(q6(e)),e.control!==`readonly`&&r.appendChild(o8(e)),t.append(n,r),J0(e,N3(e))&&t.appendChild(A(`div`,`settings-view-warning settings-warning`,e.warning));let i=Y6(e);return i&&t.appendChild(i),s8(t,e),t}function l8(e){return u3?.querySelector(`[data-setting-id="${e.id}"]`)??null}function u8(e){let t=e.querySelector(`.settings-view-setting-control`);t&&(t.querySelector(`[data-restores-focus="true"]:not([disabled])`)??t.querySelector(`[role="radio"][aria-checked="true"]`)??t.querySelector(`input:not([disabled]), textarea:not([disabled]), select:not([disabled]), button:not([disabled])`))?.focus()}function d8(e,t){if(!o6(e)||!o6(t))return;e.disabled=t.disabled,e.placeholder=t.placeholder;let n=_3.get(t);n&&!H0(_3.get(e))&&(_3.set(e,{base:n.base,isDirty:!1}),e.value!==t.value&&(e.value=t.value))}function f8(e,t,n){if(e===n){d8(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)?f8(i,a,n):i.replaceWith(a):e.appendChild(a)}for(let e of r.slice(i.length))e.remove()}function p8(e,{force:t=!1}={}){let n=l8(e);if(!n)return;let r=document.activeElement,i=n.contains(r),a=i&&!t&&o6(r)?r:null;(!a||!H0(_3.get(a)))&&y3.delete(e.id);let o=c8(e);a?f8(n,o,a):(n.replaceWith(o),i&&u8(o))}function m8(e){let t=l8(e);t&&s8(t,e)}function h8(e){l8(e)?.querySelector(`.settings-view-setting-control`)?.replaceChildren(K6(e))}function g8(){for(let e of F3(d3))e.control===`readonly`?h8(e):p8(e)}function _8(){let e=A(`button`,`btn-dialog btn-dialog-cancel`,`Reset all to defaults`);return e.type=`button`,e.addEventListener(`click`,()=>{pl(),M3(f3),s$(Sc()),S8()}),e}function v8(e){let t=A(`div`,`settings-view-advanced`),n=A(`button`,`dialog-advanced-toggle settings-view-advanced-toggle`,`Advanced`);n.type=`button`,n.setAttribute(`aria-expanded`,String(n3)),n.setAttribute(`aria-controls`,`settings-view-advanced-panel`);let r=A(`div`,`dialog-advanced-panel settings-view-advanced-panel`);r.id=`settings-view-advanced-panel`,r.hidden=!n3,n.addEventListener(`click`,()=>{n3=!n3,r.hidden=!n3,n.setAttribute(`aria-expanded`,String(n3))});for(let t of e)r.append(c8(t));return d3.id===q4&&r.append(_8()),t.append(n,r),t}function y8(e){let t=A(`div`,`settings-view-streamer-placeholder`),n=A(`button`,`btn-dialog btn-dialog-confirm`,`Turn off streamer mode`);n.type=`button`;let r=A(`span`,`settings-view-copy-status`,``);r.setAttribute(`role`,`status`),n.addEventListener(`click`,async()=>{n.disabled=!0,r.textContent=``;let e=await Dh(!1);n.disabled=!1,r.textContent=e}),t.append(A(`p`,`settings-view-section-description`,`Settings are hidden in streamer mode.`),n,r),e.appendChild(t)}Eh(()=>S8());function b8(e){let t=A(`header`,`settings-view-subsection`),n=A(`h2`,`settings-view-subsection-title`,e.title);return n.addEventListener(`click`,()=>L3(e.id)),t.append(n,A(`p`,`settings-view-section-description`,e.description)),t}function x8(e,t){for(let n of t.settings.filter(e=>e.access!==`advanced`))e.appendChild(c8(n)),n.id===Z4&&e.appendChild(c$());let n=t.settings.filter(e=>e.access===`advanced`);n.length>0&&e.append(v8(n))}function S8(){if(P8(),b3){A8();return}if(!u3)return;if(u3.textContent=``,wh()){y8(u3);return}let e=A(`header`,`settings-view-section-header`),t=A(`h1`,`settings-view-section-title`,d3.title);if(t.tabIndex=-1,t.addEventListener(`click`,()=>L3(d3.id)),e.append(t,A(`p`,`settings-view-section-description`,d3.description)),u3.appendChild(e),d3.id===J4){let e=A(`div`,`settings-view-stack`);x8(e,d3),u3.appendChild(e);let t=A(`div`,`shortcut-groups settings-view-shortcuts`);z3(t),u3.appendChild(t),u3.appendChild(Nv()),u3.appendChild(Pv()),W3(u3);return}if(d3.id===Y4){U3(u3);return}let n=A(`div`,`settings-view-stack`);for(let e of P3(d3))e.id!==d3.id&&n.appendChild(b8(e)),x8(n,e);u3.appendChild(n)}function C8(e,{focusContent:t=!1,settingId:n=null,updateHash:r=!0,openPhoneSection:i=!0}={}){r&&b3&&(b3=``,s3&&(s3.value=``));let a=y0(t3,e)??d3;d3.id!==a.id&&(n3=!1),d3=a;let o=t3.find(t=>t.id===e)??a;w8(o3),i&&Xy()&&(c3=o.id),S8(),H8(d3)&&V8(),d3.id===`machine-updates`&&O6(),r&&L3(o.id,n),n&&R3(n),t&&u3?.querySelector(`h1`)?.focus()}function w8(e){for(let t of e?.querySelectorAll(`[data-settings-section]`)||[]){let e=t.dataset.settingsSection===d3.id;t.setAttribute(`aria-current`,e?`page`:`false`)}}function T8(e){return e.section!==null}function E8(e){s3&&(s3.value=``,b3=``,L8(),C8(e.section.id,{settingId:e.setting.id}))}function D8(e){return H1(d1.sections,e,d1.fileOnly)}function O8(e,t,n,r,i){let a=A(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),A(`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 k8(e,t){let{currentText:n,defaultText:r,jsonFragment:i}=h0(t.setting,f3);if(n!==null&&e.appendChild(A(`span`,`settings-view-search-current`,n)),e.append(A(`span`,`settings-view-search-default`,r),i8(t.setting),A(`p`,`settings-view-list-hint`,`Edit in config.json or with glimmervoid settings set.`)),i===null)return;let a=A(`div`,`settings-view-control-foot`);n8(a,A(`button`,`settings-view-copy-json`,`Copy as JSON`),{copiedText:`JSON copied`,textToCopy:()=>i}),e.appendChild(a)}function A8(){if(!u3)return;if(u3.textContent=``,wh()){y8(u3);return}let e=D8(b3),t=A(`div`,`settings-view-section-header`);if(t.append(A(`h1`,`settings-view-section-title`,`Settings search`),A(`p`,`settings-view-section-description`,`${e.length} ${e.length===1?`result`:`results`} for "${b3}"`)),u3.appendChild(t),e.length===0){u3.appendChild(A(`p`,`settings-empty settings-view-search-empty`,`No settings found.`));return}let n=A(`ol`,`settings-view-search-results`);n.setAttribute(`aria-label`,`Settings search results`);for(let t of e){let e=A(`li`,`settings-view-search-result`);e.tabIndex=-1;let r=g0(t3,t.section,t.setting);e.appendChild(O8(`p`,`settings-view-search-breadcrumb`,r,t,`section`));let i=O8(`span`,`settings-view-setting-title`,t.setting.title,t,`title`);if(T8(t)){let n=A(`button`,`settings-view-search-open`);n.type=`button`,n.appendChild(i),n.addEventListener(`click`,()=>E8(t)),e.appendChild(n)}T8(t)||(e.classList.add(`settings-view-search-file-only`),e.appendChild(i)),e.append(O8(`p`,`settings-view-setting-description`,t.setting.description,t,`description`),O8(`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(O8(`p`,`settings-view-list-hint`,n.text,t,n.field))}T8(t)||k8(e,t),n.appendChild(e)}u3.appendChild(n)}function j8(){return S0(t3,c3,b3,wh())}var M8=new Set;function N8(e){M8.add(e)}function P8(){if(!a3)return;let e=j8(),t=a3.dataset.settingsScreen!==e;if(a3.dataset.settingsScreen=e,l3&&(l3.hidden=e!==`section`),t)for(let e of M8)e()}function F8(){return Xy()&&j8()===`section`}function I8(){if(!F8())return;let e=d3.id;R8(``),o3?.querySelector(`[data-settings-section="${e}"]`)?.focus()}function L8(){if(o3&&a3){o3.textContent=``;for(let e of x0(b0(t3))){let t=A(`div`,`settings-view-nav-group`);e.heading&&t.appendChild(A(`div`,`settings-view-nav-heading`,e.heading));for(let n of e.sections){let e=A(`button`,`settings-view-nav-item`,n.title);e.type=`button`,e.dataset.settingsSection=n.id,e.addEventListener(`click`,()=>C8(n.id,{focusContent:Xy()})),t.appendChild(e)}o3.appendChild(t)}b3?(P8(),A8()):C8(d3.id,{updateHash:!1,openPhoneSection:!1})}}function R8(e,{updateHash:t=!0}={}){b3=e.trim(),s3&&(s3.value=e),c3=null,t&&history.replaceState(history.state,``,sm(b3)),L8()}function z8(e){if(b3&&e.key===`Enter`&&e.target===s3){let t=D8(b3).find(T8);if(!t)return;e.preventDefault(),E8(t);return}if(e.key===`Escape`&&b3){if(!s3)return;e.preventDefault(),R8(``),s3.focus();return}if(e.key!==`ArrowUp`&&e.key!==`ArrowDown`||!o3)return;let t=[...o3.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 B8(e,{onRestart:t=()=>{}}={}){w3=t,UY(K3),r3=e,r3.textContent=``,a3=A(`div`,`settings-view-shell`);let n=A(`div`,`settings-view-sidebar`);s3=A(`input`,`settings-view-search`),s3.type=`search`,s3.placeholder=`Search settings`,s3.setAttribute(`aria-label`,`Search settings`),o3=A(`nav`,`settings-view-nav`),o3.setAttribute(`role`,`navigation`),o3.setAttribute(`aria-label`,`Settings sections`),l3=A(`button`,`settings-view-back`,`Back`),l3.type=`button`,l3.hidden=!0,l3.setAttribute(`aria-label`,`Back to settings sections`),l3.addEventListener(`click`,I8),u3=A(`div`,`settings-view-content`),u3.setAttribute(`aria-live`,`polite`),s3.addEventListener(`input`,()=>{let e=s3;e&&R8(e.value)}),s3.addEventListener(`keydown`,z8),o3.addEventListener(`keydown`,z8),n.append(s3,l3,o3),a3.append(n,u3),r3.appendChild(a3),M3(f3),L8(),V8(),i3?.disconnect(),i3=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&V8()}),i3.observe(r3)}function V8(){yb().then(U8)}function H8(e){return F3(e).some(e=>e.path===`pref:soundId`)}function U8(){if(t3=e3(),d3=y0(t3,d3.id)??t3[0],p3[`pref:soundId`]=vb(uc()),b3){A8();return}let e=G3(`alert-sound`);e&&H8(d3)&&p8(e)}function W8(e=null,t=null){let n=_0(e??location.hash);n?R8(n.query):(R8(``,{updateHash:!1}),Xy()&&!e?history.replaceState(history.state,``,sm(``)):C8(e||d3.id,{settingId:t}))}function G8(e){let t=_0(e);if(t){let e=sm(t.query);return{sectionId:e,settingId:null,hash:e}}return U1(e,t3,f1,p1)}function K8(e){e&&(f3=e,M3(f3),b3?A8():g8())}function q8(e){Y8()}function J8(e,t){let n=t.querySelector(`.settings-view-status-slot`),r=Y6(e);n&&r&&n.replaceWith(r),n&&!r&&n.remove(),!n&&r&&t.appendChild(r)}function Y8(){for(let e of F3(d3)){if(!e.status)continue;let t=l8(e);t&&(e.control===`readonly`?h8(e):J8(e,t))}}function X8(){if(d3.id!==`machine-updates`)return;let e=G3(`update-actions`);e&&h8(e)}function Z8(e){x3=e,D3=!1,O3=null,C3=Xu(C3,`status-frame`),X8(),E3&&d3.id===`machine-updates`&&O6()}function Q8(e){S3=e,C3=Xu(C3,`progress-frame`),X8()}function $8(e){if(e.scope!==`update`)return!1;let t=Yu(e.message),n=C3.requested;return C3=Xu(C3,`error-frame`,t),D3=!1,n||(O3=t),X8(),!0}function e5(){d3.id===q4&&S8()}window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,e5),Zy(()=>{c3=null,P8(),e5()}),Ep(Y8);function t5(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 n5=`•`.repeat(8),r5=`[^/\\\\\\s"'\`<>:]+`,i5=RegExp(`(?<![\\w./\\\\-])(?:/home/${r5}|/Users/${r5}|[A-Za-z]:[\\\\/]Users[\\\\/]${r5}|/root(?![\\w.-]))`,`g`);function a5(e){let t=Wx(e);if(t.length===0)return e;let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+n5,r=i.end;return n+e.slice(r)}function o5(e){return e.replace(i5,`~`)}function s5(e){return o5(a5(e))}var c5=`.xterm, input, textarea, script, style, [contenteditable]:not([contenteditable="false"])`,l5=[`title`,`label`],u5=new WeakMap,d5=new WeakMap,f5=null;function p5(e){let t=e instanceof Element?e:e.parentElement;return!t||t.closest(c5)!==null}function m5(e){let t=e.parentElement?.closest(`option`);return t!=null&&!t.hasAttribute(`value`)}function h5(e,t){if(t&&e===t.masked)return t;let n=s5(e);return n===e?null:{original:e,masked:n}}function g5(e){let t=m5(e)?null:h5(e.data,u5.get(e));t?(u5.set(e,t),e.data!==t.masked&&(e.data=t.masked)):u5.delete(e)}function _5(e,t){let n=e.getAttribute(t),r=d5.get(e),i=n===null?null:h5(n,r?.get(t));if(!i){r?.delete(t);return}let a=r??new Map;a.set(t,i),d5.set(e,a),n!==i.masked&&e.setAttribute(t,i.masked)}function v5(e){for(let t of l5)_5(e,t)}function y5(e){return e instanceof Element&&e.matches(c5)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function b5(e){v5(e);let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,y5);for(let e=t.nextNode();e;e=t.nextNode())e instanceof Text&&g5(e),e instanceof Element&&v5(e)}function x5(e){p5(e)||(e instanceof Text&&g5(e),e instanceof Element&&b5(e))}function S5(e){e instanceof Element&&!p5(e)&&v5(e)}function C5(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&&x5(e);for(let e of n)e.isConnected&&S5(e)}function w5(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);T5(e);for(let e=t.nextNode();e;e=t.nextNode())T5(e)}function T5(e){if(e instanceof Text){let t=u5.get(e);t&&e.data===t.masked&&(e.data=t.original);return}if(!(e instanceof Element))return;let t=d5.get(e);if(t)for(let[n,r]of t)e.getAttribute(n)===r.masked&&e.setAttribute(n,r.original)}function E5(){if(f5)return;let e=new MutationObserver(t=>{C5(t),e.takeRecords()});b5(document.body),e.observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:l5}),f5=e}function D5(){f5&&(f5.disconnect(),f5=null,w5(document.body),u5=new WeakMap,d5=new WeakMap)}function O5(e){e?E5():D5()}function k5(){O5(wh()),Eh(O5)}function A5(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 j5(e){return typeof e!=`object`||!e||!(`telemetryForcedOff`in e)?!1:e.telemetryForcedOff===!0}function M5(e,t){return t||j5(e)?!1:A5(e)}var N5=2500;function P5({hasSnapshot:e,connectingTerminalCount:t,msSinceConnected:n}){return n<2500&&(!e||t>0)?`wait`:`reveal`}var F5=2166136261,I5=16777619;function L5(e){let t=F5;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,I5)>>>0;return t}var R5=18e4,z5=2**32,B5=new Set([k.INITIALIZING,k.STARTING,k.RUNNING,k.WAITING,k.IDLE,k.COMPLETE,k.FAILED]),V5=new Map([[k.INITIALIZING,Jn.INITIALIZING],[k.STARTING,Jn.STARTING],[k.RUNNING,Jn.RUNNING],[k.IDLE,Jn.IDLE]]),H5=new Map([[k.INITIALIZING,`resting`],[k.STARTING,`resting`],[k.WAITING,`alert`],[k.FAILED,`alert`],[k.COMPLETE,`sitting`],[k.IDLE,`asleep`]]);function U5(e){return B5.has(e)}function W5(e,t){let n=L5(e)/z5,r=Wo(t,-1,()=>n);return r===null?null:Ro[r]??null}function G5(e){let t=L5(`${e}#spot`);return{leftPercent:6+t%78,topPercent:12+(t>>>8)%62,ambleDistancePx:24+(t>>>16)%64,ambleSeconds:9+(t>>>24)%9}}function K5({state:e,activity:t,lastOutputAtMs:n,nowMs:r}){return e===k.RUNNING?n!==void 0&&r-n>=R5?`asleep`:t===`quiet`?`resting`:`ambling`:H5.get(e)??`asleep`}function q5({state:e,unseenOutcome:t}){return e===k.WAITING?$n.WAITING:e===k.FAILED&&t===`failed`?$n.FAILED:null}function J5(e,t){return V5.get(e)??qg(e,t)}var Y5=new Set([k.RUNNING,k.STARTING,k.INITIALIZING]),X5=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),Z5=null,Q5=!1,$5=null,e7=null,t7=new Map;function n7(e){let t=A(`div`,`zen-calm`),n=A(`div`,`zen-status-line`);n.setAttribute(`role`,`status`);let r=A(`span`,`zen-working-count`);n.append(A(`h2`,`zen-all-clear`,`ALL CLEAR`),r);let i=A(`div`,`zen-meadow`);i.setAttribute(`aria-label`,`Sessions`),t.append(n,i);let a=A(`div`,`zen-stage`),o=A(`div`,`zen-reason-line`);o.setAttribute(`role`,`status`);let s=A(`span`,`zen-staged-need`),c=A(`span`,`zen-queued-behind`);o.append(s,c);let l=A(`div`,`zen-pet-strip`);l.setAttribute(`aria-label`,`Other sessions`);let u=A(`button`,`btn-dialog`,`Next`);u.type=`button`,u.addEventListener(`click`,s7);let d=A(`div`,`zen-stage-bar`);d.append(o,l,u,hm());let f=A(`div`,`zen-card-slot`);a.append(d,f),a.hidden=!0,e.append(t,a),Z5={calm:t,workingCount:r,meadow:i,stage:a,stagedNeed:s,queuedBehind:c,petStrip:l,cardSlot:f}}function r7(){return Q5}function i7(){if(Z5){Q5=!0;for(let e of t7.values())e.root.remove();t7.clear(),o7()}}function a7(){Q5&&=(f7(),e7=null,!1)}function o7(){if(!Q5)return;let e=u7();e7!==null&&!l7(e7)&&(e7=null),d7(e7??Gg(e,$5),e)}function s7(){if(!Q5)return;e7=null;let e=$5,t=e===null?void 0:N.get(e),n=t!==void 0&&Xg({state:t.currentState,unseenOutcome:t.unseenOutcome});e!==null&&n&&nN(e);let r=u7().filter(t=>!n||t!==e);d7(Wg(r,e),r)}function c7(e){Q5&&l7(e)&&(e7=e,d7(e,u7()))}function l7(e){let t=N.get(e);return t!==void 0&&U5(t.currentState)}function u7(){return e_(Hg(Yv()))}function d7(e,t){if(!Z5)return;let n=e===null?void 0:N.get(e);if(e===null||!n){f7(),m7(Z5);return}let r=$5!==e;$5=e,Z5.calm.hidden=!0,Z5.stage.hidden=!1,p7(Z5,n,t.filter(t=>t!==e).length),h7(Z5.petStrip,e),(Ar()!==e||n.card.parentElement!==Z5.cardSlot)&&(jr(n,e,Z5.cardSlot,{className:`zen-staged`}),GC(n,e,!0),r&&x7(n,e))}function f7(){$5!==null&&Ar()===$5&&Mr(),$5=null}function p7(e,t,n){e.stagedNeed.textContent=J5(t.currentState,t.pendingPromptKind),e.stagedNeed.dataset.state=t.currentState,e.queuedBehind.textContent=`${n} more waiting`,e.queuedBehind.hidden=n===0}function m7(e){e.stage.hidden=!0,e.calm.hidden=!1;let t=Yv().filter(e=>Y5.has(e.state)).length;e.workingCount.textContent=`${t} working`,h7(e.meadow,null)}function h7(e,t){let n=Hg(Yv()).filter(e=>U5(e.state)&&e.id!==t),r=new Set(n.map(e=>e.id));for(let[e,t]of t7)r.has(e)||(t.root.remove(),N.has(e)||t7.delete(e));for(let t of n){let n=t7.get(t.id)??g7(t.id);n.root.parentElement!==e&&e.append(n.root),_7(n,t.ui,t.name)}}function g7(e){let t=A(`button`,`zen-pet`);t.type=`button`,t.dataset.sessionId=e;let n=G5(e);t.style.setProperty(`--zen-pet-left`,`${n.leftPercent}%`),t.style.setProperty(`--zen-pet-top`,`${n.topPercent}%`),t.style.setProperty(`--zen-pet-amble-distance`,`${n.ambleDistancePx}px`),t.style.setProperty(`--zen-pet-amble-duration`,`${n.ambleSeconds}s`),t.addEventListener(`click`,()=>c7(e));let r=A(`span`,`zen-pet-walker`),i=A(`span`,`zen-pet-bubble`);i.setAttribute(`aria-hidden`,`true`);let a=A(`span`,`zen-pet-facing`),o=A(`span`,`zen-pet-hopper`),s=W5(e,dl().flyingAnimalsExcludedSprites);o.append(s?hl(s,`zen-pet-sprite`):A(`span`,`zen-pet-dot`)),a.append(o);let c=A(`span`,`zen-pet-zzz`,`zzz`);c.setAttribute(`aria-hidden`,`true`);let l=A(`span`,`zen-pet-name`);r.append(i,a,c,l),t.append(r);let u={root:t,hopper:o,bubble:i,name:l};return t7.set(e,u),u}function _7(e,t,n){y7(e,t,performance.now()),e.root.dataset.state=t.currentState,e.name.textContent!==n&&(e.name.textContent=n),e.root.setAttribute(`aria-label`,n),e.root.title=`${oN(t.path)}: ${J5(t.currentState,t.pendingPromptKind)}`;let r=q5({state:t.currentState,unseenOutcome:t.unseenOutcome});e.bubble.hidden=r===null,r!==null&&ef(e.bubble,r)}function v7(e){X5?.matches||document.hidden||!e.hopper.animate||e.hopper.animate([{transform:`translateY(0)`},{transform:`translateY(-6px)`,offset:.4},{transform:`translateY(0)`}],{duration:320,easing:`cubic-bezier(0.22, 1, 0.36, 1)`})}function y7(e,t,n){e.root.dataset.mood=K5({state:t.currentState,activity:t._activity,lastOutputAtMs:t._lastOutputAt,nowMs:n})}function b7(e,t){if(!Q5)return;let n=e.card?.dataset.id,r=n?t7.get(n):void 0;r?.root.isConnected&&(y7(r,e,performance.now()),t===`beat`&&v7(r))}ep(b7),dp(()=>{if(!Q5)return;let e=performance.now();for(let[t,n]of t7){let r=N.get(t);r&&n.root.isConnected&&y7(n,r,e)}});function x7(e,t){requestAnimationFrame(()=>requestAnimationFrame(()=>{Q5&&$5===t&&!document.hidden&&document.hasFocus()&&e.term?.focus()}))}function S7(e){let t=[{view:`focus`,label:`Focus`,panelClass:`focus-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,hasReviewSidebar:!0,mount:()=>CP({rail:document.getElementById(`focus-rail`),center:document.getElementById(`focus-center`),resizer:document.getElementById(`focus-rail-resizer`)}),activate:ZP,deactivate:eF},{view:`zen`,label:`Zen`,panelClass:`zen-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,gate:{fromSettings:n2.zenView},mount:n7,activate:i7,deactivate:a7},{view:`prs`,label:`Reviews`,glyph:`⇅`,panelClass:`pr-view`,gate:{fromSettings:n2.teamReview},mount:t=>EY(t,{openTerminal:e.openTerminal,openReviews:e.openReviews}),attention:{subscribe:hY,acknowledge:TY},onConnectionChange:e=>{nG(e),bY(e)}},{view:`issues`,label:`Issues`,glyph:`#`,panelClass:`issues-view`,mount:gZ,refreshOn:[`shown`],refresh:_Z,onConnectionChange:yZ},{view:`usage`,label:`Usage`,glyph:`◔`,panelClass:`usage-view`,gate:{fromSettings:n2.usage},mount:R4,attention:{subscribe:N4,acknowledge:k4},onConnectionChange:L4,refreshOn:[`shown`,`connected`,`usage-sessions`],refresh:e=>{e===`shown`&&z4(),I4()}},{view:`radar`,label:`Radar`,glyph:`◎`,panelClass:`radar-view`,gate:{fromSettings:n2.posthog},mount:kQ,attention:{subscribe:DQ,acknowledge:EQ}},{view:`visions`,label:`Visions`,glyph:`◇`,panelClass:`visions-view`,gate:{fromSettings:n2.visions},mount:tL,attention:{subscribe:QI,acknowledge:()=>{rL(),nL()}},onConnectionChange:eL},{view:`hooks`,label:`Hooks`,glyph:`◈`,panelClass:`hooks-view`,mount:lz,refreshOn:[`shown`,`connected`,`hooks-updated`],refresh:e=>{e===`shown`&&uz(),cz()}},{view:`trace`,label:`Trace`,panelClass:`trace-view`,gate:{subscribe:F_},mount:vk,refreshOn:[`shown`],refresh:Ck,onAvailabilityChange:e=>OQ(e?xk:null),onConnectionChange:Dk},{view:`benchmarks`,label:`Bench`,panelClass:`bench-view`,gate:{fromSettings:n2.benchmarks},mount:lX,onConnectionChange:uX},{view:`settings`,label:`Settings`,glyph:`@`,panelClass:`settings-view`,hasPanelChrome:!1,mount:t=>B8(t,{onRestart:e.onRestart})}],n=j(document,`#app-main`,`main`),r=t.map(t=>{let r=A(`button`,`header-tab`,t.label);r.id=`tab-${t.view}`,r.type=`button`,r.draggable=!0;let i=`view-${t.view}`;r.setAttribute(`role`,`tab`),r.setAttribute(`aria-controls`,i);let a=t.view===`focus`;r.setAttribute(`aria-selected`,String(a)),r.tabIndex=a?0:-1,t.glyph&&(r.dataset.phoneGlyph=t.glyph);let o=document.getElementById(i)??A(`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=A(`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}=c2(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 j(document,`#header-tabs`,`div`).replaceChildren(...r.map(e=>e.tab)),r}Fb(bc()),Ib(mc()),Lb(gc()),s$(Sc()),Yy(),Ng(document);var C7=j(document,`#connection-status`,`span`),w7=j(C7,`.connection-label`,`span`),T7=j(document,`#loading-screen`,`div`),E7=j(document,`#loading-status`,`div`),D7=j(document,`#loading-detail`,`div`),O7=j(document,`#shutdown-screen`,`div`),k7=j(document,`#shutdown-status`,`div`),A7=!1,j7=null,M7=!1;function N7(){let e=gl(),t=T7.querySelector(`.loading-spinner`);e&&t&&t.replaceWith(hl(e,`loading-animal`))}N7();function P7(){A7||j7===null||P5({hasSnapshot:M7,connectingTerminalCount:TC(),msSinceConnected:performance.now()-j7})===`reveal`&&F7()}wC(P7);function F7(){if(A7)return;A7=!0,T7.classList.add(`fade-out`);let e=()=>T7.remove();T7.addEventListener(`transitionend`,e,{once:!0}),setTimeout(e,1e3)}function I7(e,t){C7.dataset.state=`shutdown`,w7.textContent=e,C7.title=e,b9.disabled=!0,k7.textContent=t,O7.classList.add(`active`)}var L7=new Set([`disconnected`,`connecting`]);function R7(e,t,n){C7.dataset.state=e,C7.toggleAttribute(`data-reconnected`,n),w7.textContent=t,C7.title=t}function z7(e,t){R7(e,t,e===`connected`&&L7.has(C7.dataset.state??``))}function B7(e,t){C7.dataset.state!==`shutdown`&&R7(e===`verified`?`connected`:e,t,!1)}var V7=1e4,H7=`The server is not answering. Check the terminal running Glimmervoid for errors, or start it again with glimmervoid. This page reconnects on its own.`,U7=`Server not answering. Check the Glimmervoid terminal for errors, or run glimmervoid. This page retries on its own.`,W7=null,G7=!1;function K7(){E7.textContent=`Reconnecting to server...`,D7.textContent=U7,D7.hidden=!G7}function q7(){W7=null,G7=!0,A7?mf(H7,{hidesInStreamerMode:!1}):K7()}function J7(){W7!==null||G7||(W7=window.setTimeout(q7,V7))}function Y7(){W7!==null&&window.clearTimeout(W7),W7=null,G7=!1,D7.hidden=!0,hf(H7)}Nd((e,t)=>{if(e===`connecting`||e===`verified`)B7(e,t);else{z7(e,t),jM(e===`connected`);for(let t of D9)t.onConnectionChange?.(e===`connected`);if(e===`connected`){if(Y7(),P9&&F9(P9),O7.classList.contains(`active`)){location.reload();return}Fm(),document.body.classList.add(`app-ready`),!A7&&j7===null&&(j7=performance.now(),E7.textContent=`Connecting to sessions...`,setTimeout(F7,N5)),P7(),Y9(),s9(`connected`),K(`get-settings`,{}).then(e=>{e.settings&&(B9(e.settings),kr()===`settings`&&C9(location.hash))}).catch(()=>{})}else e===`disconnected`&&O7.classList.contains(`active`)?k7.textContent=`Waiting for server...`:(J7(),A7||K7())}});function X7(){o7(),vZ(),qW(),MB()}function Z7(){PP(),X7()}var Q7=null;function $7(e){let t=t5(Q7,e);Q7=t.knownBuild,t.reload&&location.reload()}function e9(e){RI(new Map(e.filter(e=>!e.ephemeral).map(e=>[e.id,e.name]))),q8(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){fg(t.id,t.coherenceHooks),t.ephemeral||Lv(t.path),LY(t.id,t.linkedPrs);let e=xM(t.id);e&&iN(t.id,t.state,t.stateSince),e&&J_(t.id,!!t.saneYolo),e&&FM(t.id,t.isGuarded,t.isGuardrailsReleased),e||CM(t.id,t.name,t.state,zQ(t)),eN(t.id,t.failureReason),bM(t.id,t.taskTitle,t.taskTitleIsCustom),NM(t.id,t.agent),JM(t.id,t.mergeStatus,t.mergeReason),MM(t.id,t.effectiveBase),RM(t.id,t.activeAgents,t.awaitingBackgroundTasks),WM(t.id,t.pendingWakeup),VM(t.id,t.pendingPromptKind,t.isCompacting,t.isWaitingForMemory),HM(t.id,t.unseenOutcome),_M(t.id,t),DM(t.id,t.hasPlan),o9(t.id)}SM(),x_(N),PP(),$P(),X7(),t9(),T9(location.hash),M7=!0,P7()}function t9(){Sk([...N].map(([e,t])=>({id:e,name:xr(t)||e})))}function n9(e,t){DM(e,t?.hasPlan===!0),HM(e,t?.unseenOutcome),o9(e)}function r9(e){if(!xM(e.id))CM(e.id,e.session,e.to,zQ({skipPerms:e.skipPerms,saneYolo:e.saneYolo,stateSince:e.timestamp})),x_(N),vZ();else if(e.to===k.DORMANT&&e.from!==k.DORMANT){let t=N.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;ZM(e.id),CM(e.id,e.session,k.DORMANT,zQ({skipPerms:i,saneYolo:a,worktree:r?.dataset.worktree!==void 0,workspace:r?.dataset.workspace!==void 0,remoteWorkspace:r?.dataset.remoteWorkspace??null,guarded:r?.dataset.guarded!==void 0,guardrailsReleased:r?.dataset.guardrailsReleased!==void 0,ephemeral:r?.dataset.ephemeral!==void 0,path:o,stateSince:e.timestamp,taskTitle:t?.taskTitle,taskTitleIsCustom:t?.taskTitleIsCustom})),NM(e.id,t?.agent),n9(e.id,t),Z7(),HE(e.id),x_(N)}else iN(e.id,e.to,e.timestamp,e.event),eN(e.id,e.failureReason),e.saneYolo!==void 0&&J_(e.id,e.saneYolo),x_(N),HE(e.id),Z7(),pv(e.id),e.to===k.INITIALIZING&&(e.from===k.DONE||e.from===k.FAILED)&&PC(e.id)}var i9=new Map;function a9(e){let t=new Set;for(let n of e){if(!n?.id)continue;t.add(n.id);let e={tokens:n.tokens,costUSD:n.costUSD,officialCostUSD:n.officialCostUSD};i9.set(n.id,e),zM(n.id,e)}for(let e of[...i9.keys()])t.has(e)||(i9.delete(e),zM(e,null))}function o9(e){let t=i9.get(e);t&&zM(e,t)}F4(G),sz(G),yk(G),hZ(G),cX(G),R_(FY),yv(gg),yv(NY),B_({isReadable:_g,open:yg}),H_(LQ);function s9(e){u2(D9,{isPhoneShellActive:AB(),activeView:kr(),phoneScreen:Or.snapshot().phoneScreen},e)}Eh(()=>s9(`settings-updated`));var c9={snapshot:e=>{$7(e.serverBuild),e9(e.sessions)},"hooks-report":e=>dz(e),"save-hook-result":()=>fz(),"delete-hook-result":()=>fz(),"state-change":e=>r9(e),"session-added":e=>{e.ephemeral||Lv(e.path),LY(e.id,e.linkedPrs),xM(e.id)||(CM(e.id,e.session,e.state,zQ(e)),NM(e.id,e.agent),o9(e.id)),x_(N),Z7(),t9()},"session-removed":e=>{ZM(e.id),pg(e.id),WE(e.id),RY(e.id),x_(N),Z7(),t9()},"session-title":e=>{bM(e.id,e.taskTitle,e.isCustom),Z7()},"session-prs":e=>LY(e.id,e.linkedPrs),"session-renamed":e=>{XM(e.id,e.newName),Z7(),t9()},"session-modified":e=>{e.ephemeral||Lv(e.path);let t=N.get(String(e.id));fg(e.id,null),ZM(e.id),WE(e.id),LY(e.id,e.linkedPrs),CM(e.id,e.session,e.state,zQ(e)),NM(e.id,e.agent),n9(e.id,t),x_(N),Z7(),t9()},"session-git":e=>PM(e.id,!!e.worktree),"session-agents":e=>{RM(e.id,e.activeAgents,e.awaitingBackgroundTasks),Z7(),pv(e.id)},"session-wakeup":e=>WM(e.id,e.pendingWakeup),"session-unseen":e=>{HM(e.id,e.unseenOutcome),SM(),x_(N),Z7()},"session-prompt":e=>{VM(e.id,e.pendingPromptKind,e.isCompacting===!0,e.isWaitingForMemory===!0),X7()},"session-merge-status":e=>{qM(e.id,e.mergeStatus,e.reason),KP(e.id,e.mergeStatus),X7()},"session-worktree-blocked":e=>{mf(`${e.session}: ${e.notice||`integration branch not found`}`)},"session-worktree-warning":e=>{mf(`${e.session}: ${e.notice||`base branch warning`}`)},"session-worktree-ready":e=>{MM(e.id,e.base)},"session-diff":e=>{YM(e.id,{committed:e.committed,uncommitted:e.uncommitted,hasCommits:e.hasCommits})},"session-diff-error":e=>{LE(e.id,e.message)},"change-map":e=>RE(e.id,e.map),"branch-sync-status":e=>zE(e.id,e),"session-changed":e=>VE(e.id),"post-turn-result":e=>GM(e.id,e),"debug-state-response":e=>pee(e),"session-trace-response":e=>{Fee(e)||wk(e)},"session-trace-changed":e=>{Lee(e.id),Tk(e)},"session-conversation":e=>{_M(e.id,e),X7()},"session-plan-changed":e=>{Hee(e),X7()},"session-plan-draft":e=>{OM(e)},"session-plan-response":e=>{kM(e)},"session-docs-changed":e=>Yh(e),"session-docs-snapshot":e=>Xh(e),"session-coherence-hooks":e=>{fg(e.id,e.coherenceHooks),Z7()},"session-coherence":e=>{mg(e),Z7()},"session-coherence-snapshot":e=>{hg(e),Z7()},"session-coherence-journal-response":e=>bg(e),"session-setup-response":e=>RQ(e),notify:e=>{im(e),pv(e.session)},"update-status":e=>{Gee(e),Z8(e)},"update-progress":e=>Q8(e.journal),"post-turn-leftovers":e=>Kee(e),error:e=>{let t=$8(e),n=Ek(e);Iee(e);let r=AM(e);t||n||r||mf(e.message)},"session-error":e=>{PE(e.id),!AM(e)&&$M(e.id,e.message)},"settings-updated":e=>{e.settings&&B9(e.settings),Fm()},"agent-logins":e=>wp(e.logins),"health-snapshot":e=>{e.stats&&Ew(e.stats)},"radar-status":e=>AQ(e),"radar-investigation-activity":e=>jQ(e),"radar-investigation-finished":e=>NQ(e),"team-review-status":e=>_Y(e),"github-prs":e=>Hn(e),"my-prs-status":eG,"benchmark-status":e=>dX(e),"benchmark-action-result":e=>fX(e),"my-pr-merge-result":e=>rG(e),"team-review-action-result":e=>xY(e),"open-team-review-session-result":e=>yY(e),"issues-status":e=>bZ(e),"issue-detail-result":e=>xZ(e),"open-issue-session-result":e=>SZ(e),"usage-sessions":e=>{a9(e.sessions),B4(e)},"usage-report":e=>{H4(e),Y8()},"plan-limits":e=>V4(e),"usage-budget-alert":e=>im({session:`budget-${e.scope}-${e.periodKey}`,category:`threshold-${e.threshold}`,message:e.text,ignoreFocus:!0}),"visions-findings":e=>aL(e),"visions-comments":e=>oL(e),"visions-hand":e=>sL(e),"visions-intent":e=>cL(e),"visions-fix":e=>iL(e),"visions-snapshot":e=>dL(e),"ingest-activity":e=>lL(e),"ingest-snapshot":e=>uL(e),"client-trust":e=>nte(e.trust),"shutting-down":()=>I7(`Shutting down...`,`Shutting down sessions...`),restarting:()=>I7(`Restarting...`,`Restarting server...`)};function l9(e){let t=c9[e.type];t&&t(e)}Pd(e=>{l9(e),s9(e.type)});var u9,d9=null;function f9(e,t,n){e.onclick=()=>{let e=vr(n);e?e.then(()=>{t.textContent=`Copied`}).catch(()=>{t.textContent=`Copy failed`}):t.textContent=`Copy failed`}}var Uee=cm(Jl,Yl,`Update`).href;function Wee(e){let{latestSha:t,latest:n}=e;return typeof n==`string`&&n?n:typeof t==`string`&&t?t:null}function Gee(e){let t=j(document,`#update-banner`,`div`),{mode:n,tone:r,text:i}=sd(e),a=r===`security`;if(!e.updateAvailable&&!a){t.hidden=!0;return}let o=Wee(e),s=o&&n===`restart`?`${o}:ready`:o;if(a&&i===d9||!a&&u9!==void 0&&s===u9||!a&&s&&Bc()===s)return;t.classList.toggle(`update-banner-security`,a);let c=String(e.command??``);j(document,`#update-banner-text`,`span`).textContent=i,j(document,`#update-banner-cmd`,`code`).textContent=c;let l=j(document,`#update-banner-update`,`a`);l.href=Uee,l.hidden=n!==`link`;let u=j(document,`#update-banner-restart`,`button`);u.hidden=n!==`restart`,u.onclick=J9;let d=j(document,`#update-banner-cmd`,`code`);d.hidden=n!==`command`;let f=j(document,`#update-banner-copy`,`button`);f.hidden=n!==`command`;let p=j(document,`#update-banner-copy-status`,`span`);p.hidden=n!==`command`,p.textContent=``;let m=j(document,`#update-banner-link`,`a`);m.hidden=!e.releaseUrl,m.href=typeof e.releaseUrl==`string`?e.releaseUrl:``,t.hidden=!1,f9(f,p,c),j(document,`#update-banner-dismiss`,`button`).onclick=()=>{t.hidden=!0,a?d9=i:(u9=s,Vc(s))}}var p9=!1;function Kee({repositories:e,command:t}){let n=j(document,`#post-turn-leftovers-banner`,`div`);if(e.length===0){n.hidden=!0;return}if(p9)return;let r=j(document,`#post-turn-leftovers-copy-status`,`span`);j(document,`#post-turn-leftovers-text`,`span`).textContent=Qn(e.length),j(document,`#post-turn-leftovers-cmd`,`code`).textContent=t,r.textContent=``,n.hidden=!1,f9(j(document,`#post-turn-leftovers-copy`,`button`),r,t),j(document,`#post-turn-leftovers-dismiss`,`button`).onclick=()=>{p9=!0,n.hidden=!0}}var m9=j(document,`#telemetry-banner`,`div`);function h9(){Uc(!0),m9.hidden=!0}function qee(e){m9.hidden=!M5(e,Hc())}var g9=j(document,`#telemetry-banner-settings`,`a`);g9.href=cm(`privacy`,`telemetry-enabled`,`Open settings`).href,g9.addEventListener(`click`,h9),j(document,`#telemetry-banner-dismiss`,`button`).addEventListener(`click`,h9),j(document,`#btn-add-session-header`,`button`).addEventListener(`click`,Np);var _9=j(document,`#btn-mute`,`button`);WY(_9);var v9=j(document,`#btn-streamer`,`button`);Ah(v9),k5();var y9=j(document,`#power-menu`,`div`),b9=j(document,`#btn-power`,`button`);function x9(){b9.setAttribute(`aria-expanded`,y9.classList.contains(`open`)?`true`:`false`)}b9.addEventListener(`click`,e=>{e.stopPropagation(),y9.classList.toggle(`open`),x9()}),document.addEventListener(`click`,e=>{e.target instanceof Node&&(y9.contains(e.target)||(y9.classList.remove(`open`),x9()))}),pr(document.querySelector(`.header`));function Jee(e){e&&W8(e),!PB(`settings`)&&L9(`settings`,{section:e})}function S9(){om(location.hash)&&history.replaceState(history.state,``,`${location.pathname}${location.search}`)}function Yee(e){return e?(W8(e.sectionId,e.settingId),PB(`settings`)||L9(`settings`,{section:e.sectionId,setting:e.settingId,persist:!1}),!0):!1}function C9(e){return Yee(G8(e))}var w9=`No plan is stored for this session yet.`;function T9(e){let t=Wp(e);return t?!xM(t)||(history.replaceState(history.state,``,`${location.pathname}${location.search}`),AB()?(kB(t)||mf(w9),!0):(L9(`focus`,{persist:!1}),JP(t)||mf(w9),!0)):!1}function E9(e){return T9(e)?!0:C9(e)}function Xee(e){e.newURL===location.href&&E9(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&&E9(t.hash)&&e.preventDefault()}),lU(j(document,`#celebration-tray`,`div`),j(document,`#btn-celebrations`,`button`),j(document,`#celebration-tray-count`,`span`)),j(document,`#btn-help`,`button`).addEventListener(`click`,()=>{Jee(`browser-shortcuts`)});var D9=S7({onRestart:J9,openTerminal:e=>{NB(e)||(L9(`focus`),qP(e))},openPlan:e=>{L9(`focus`),JP(e)},openReviews:()=>A9(`prs`)?(PB(`prs`)||L9(`prs`),!0):!1,setPhoneAttention:IB});function O9(){return D9.map(e=>e.view)}var Zee=O9();V3(D9),jE({panel:document.getElementById(`review-sidebar`)});for(let e of D9)e.mount(e.el);function k9(e){return D9.find(t=>t.view===e)}function A9(e){return D9.some(t=>t.view===e&&!t.tab.hidden)}var j9=!0,M9=null;function N9(e){k9(e)?.attention?.acknowledge()}var P9=null;function F9(e){P9=G({type:`dashboard-telemetry`,event:`view_shown`,properties:{view:e}})?null:e}function I9(e){let t=k9(e);l2(t,`shown`),t&&F9(e)}function L9(e,{section:t,setting:n,persist:r=!0}={}){if(!A9(e))return;let i=kr();Or.dispatch(`setActiveView`,e),j9=r,r&&(M9=null),document.body.dataset.activeView=e,document.body.dataset.reviewSidebarHidden=String(k9(e)?.hasReviewSidebar!==!0),r&&Tc(e);for(let t of D9){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&&k9(i)?.deactivate?.(),k9(e)?.activate?.(),I9(e),i===`settings`&&e!==`settings`&&S9(),e===`settings`&&t&&W8(t,n??null),N9(e)}function R9(e,t){let{view:n}=e;e.tab.hidden=!t,FB(n,t),e.onAvailabilityChange?.(t),!AB()&&(!t&&kr()===n&&L9(`focus`),t&&M9===n&&L9(n))}function Qee(e){for(let{view:t,isAvailable:n}of a2(D9,e))R9(t,n)}function z9(e){let t=o2(Zee,e);D9.every((e,n)=>e.view===t[n])||(D9.sort((e,n)=>t.indexOf(e.view)-t.indexOf(n.view)),j(document,`#header-tabs`,`div`).append(...D9.map(e=>e.tab)),TB(t))}function B9(e){Bee(e),K8(e),WI(e),Qee(e),qee(e),z9(e.viewTabOrder),Th(e.streamerMode===!0),Pee(e.conversationView===!0)}for(let e of D9)e.gate&&(R9(e,!1),`subscribe`in e.gate&&e.gate.subscribe(t=>R9(e,t)));bk(()=>{A9(`trace`)&&(PB(`trace`)||L9(`trace`))});function V9(e,t){let n=D9.filter(e=>!e.tab.hidden),r=n[(n.findIndex(t=>t.view===e)+t+n.length)%n.length];return L9(r.view),r.tab}function $ee(e){D9.some(e=>e.tab===document.activeElement)&&e.focus()}var H9=null;function ete(e){let t=O9();z9(e),K(`update-settings`,{settings:{viewTabOrder:e}}).then(e=>{e.type===`settings-error`&&z9(t)}).catch(()=>z9(t))}function tte(e){let t=H9;if(H9=null,!t||t===e)return;let n=O9();ete(s2(n,t,n.indexOf(e)))}for(let e=0;e<D9.length;e++){let{view:t,tab:n}=D9[e];n.addEventListener(`click`,()=>L9(t)),n.addEventListener(`dragstart`,e=>{H9=t,e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}),n.addEventListener(`dragover`,e=>{H9&&H9!==t&&(e.preventDefault(),n.dataset.dropTarget=`true`)}),n.addEventListener(`dragleave`,()=>delete n.dataset.dropTarget),n.addEventListener(`drop`,e=>{e.preventDefault(),delete n.dataset.dropTarget,tte(t)}),n.addEventListener(`dragend`,()=>{H9=null}),n.addEventListener(`keydown`,e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),V9(kr(),e.key===`ArrowRight`?1:-1).focus()))})}var U9=wc(),W9=G8(location.hash),G9=Wp(location.hash);if(W9&&L9(`settings`,{section:W9.sectionId,setting:W9.settingId,persist:!1}),G9&&L9(`focus`,{persist:!1}),!W9&&!G9){let e=A9(U9);e||(M9=U9),L9(e?U9:`focus`,{persist:e})}EB({panels:pz(D9),onScreenShown:e=>{I9(e),e!==`settings`&&S9(),e===`settings`&&!om(location.hash)&&W8(),N9(e)},canGoBack:e=>e===`settings`&&F8(),onBack:e=>{e===`settings`&&I8()},headerControls:[j(document,`.header-title`,`h1`),j(document,`#status-indicator`,`div`),j(document,`#celebration-tray`,`div`),j(document,`#btn-add-session-header`,`button`),j(document,`#btn-help`,`button`),_9,v9,y9]}),N8(vB);function K9(e){if(e===`phone`){let e=SP();for(let e of D9)e.deactivate?.();let t=G8(location.hash);DB({sessionId:e??void 0,linkedScreenId:t?`settings`:void 0}),t&&W8(t.sectionId,t.settingId);return}let t=jB();OB();let n=kr();L9(A9(n)?n:`focus`,{persist:j9}),t&&qP(t)}Xy()&&K9(`phone`),Zy(K9),window.addEventListener(`hashchange`,Xee);function q9({type:e,title:t,confirmLabel:n,danger:r,idleMessage:i,actionAfterKillingSessions:a}){y9.classList.remove(`open`),x9();let o=zee();Rf({title:t,message:o>0?`Kill ${o} session${o>1?`s`:``} and ${a}?`:i,confirmLabel:n,danger:r||o>0,onConfirm:()=>G({type:e})})}function J9(){q9({type:`restart-server`,title:`Restart Server`,confirmLabel:`Restart`,danger:!1,idleMessage:`Restart the server?`,actionAfterKillingSessions:`restart the server`})}j(document,`#btn-restart`,`button`).addEventListener(`click`,J9);function nte(e){let t=tee(`shutdown`,e);j(document,`#btn-shutdown`,`button`).hidden=!t,j(document,`#menu-divider-shutdown`,`div`).hidden=!t}j(document,`#btn-shutdown`,`button`).addEventListener(`click`,()=>{q9({type:`shutdown`,title:`Shut Down Server`,confirmLabel:`Shut Down`,danger:!0,idleMessage:`Shut down the server?`,actionAfterKillingSessions:`shut down the server`})});var rte=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function ite(e,t){return e.value!==``&&rte.has(t.key)}function ate(e){let t=document.activeElement;return t instanceof HTMLElement?t.isContentEditable?!0:t instanceof HTMLTextAreaElement&&t.dataset.dashboardShortcuts===`allowed`?ite(t,e):(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)&&!t.classList.contains(`xterm-helper-textarea`):!1}function ote({action:e,step:t}){switch(e){case`merge`:return GE(),!0;case`resolve-or-resync`:return qE()||XE(),!0;case`new-session`:return document.getElementById(`btn-add-session-header`)?.click(),!0;case`next-attention`:return Xy()?!1:r7()?(s7(),!0):xP()?(RP(),!0):(QP(()=>L9(`focus`)),!0);case`rail-step`:return xP()?(XP(t),!0):!1;case`view-step`:return!Xy()&&($ee(V9(kr(),t)),!0);case`session-nth`:return xP()?(YP(t),!0):!1;case`streamer-mode`:return kh(),!0}}document.addEventListener(`keydown`,e=>{if(e.repeat||ate(e))return;let t=Hs(e,lm,{isTerminalFocused:document.activeElement?.classList.contains(`xterm-helper-textarea`)??!1},fm());t&&ote(t)&&e.preventDefault()});var ste=qn({mode:`trailing`,delayMs:150,run:()=>{G({type:`focus-change`,focused:document.hasFocus()})}});function Y9(){ste.schedule()}function X9(){Y9(),UC(P(Ar()))}window.addEventListener(`focus`,X9),window.addEventListener(`blur`,X9),document.addEventListener(`visibilitychange`,X9);var Z9=!1;async function Q9(){if(!Z9){Z9=!0,MC();try{if(await Bd()===`ok`)return;for(let e of N.keys())PC(e)}finally{NC(),Z9=!1}}}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&(IS(),Q9())}),window.addEventListener(`online`,Q9);var $9=Lo(G);window.addEventListener(`error`,e=>$9(e.error)),window.addEventListener(`unhandledrejection`,e=>$9(e.reason)),window.addEventListener(`pageshow`,e=>{e.persisted&&(IS(),Q9())}),Tw(j(document,`#health-footer-mount`,`div`)),sb(Vee),J7(),zd();
|