glimmervoid 0.41.0 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/bin/glimmervoid.js +13 -13
  2. package/dist/chunks/{adapters-JDV45XpZ.js → adapters-C8GfnK2r.js} +1 -1
  3. package/dist/chunks/{adapters-yVOK5me4.js → adapters-D2u85MEH.js} +30 -15
  4. package/dist/chunks/{agent-api-cli-BSY2jR0P.js → agent-api-cli-B-1MqjKc.js} +1 -1
  5. package/dist/chunks/{agent-api-cli-1xk9WryE.js → agent-api-cli-D7JPxNso.js} +10 -5
  6. package/dist/chunks/{agent-api-core-syEPHs7j.js → agent-api-core-PwO7fPoc.js} +19 -5
  7. package/dist/chunks/{agent-setup-cli-py1gUMvJ.js → agent-setup-cli-C9qDV2g5.js} +1 -1
  8. package/dist/chunks/config-store-BL8LDBuM.js +1 -0
  9. package/dist/chunks/{config-store-BEaaXTd5.js → config-store-BxCW2IwK.js} +2 -2
  10. package/dist/chunks/{contracts-V_hfT23R.js → contracts-LXlDbl4R.js} +2 -2
  11. package/dist/chunks/{control-messages-Ci4g6gD1.js → control-messages-88sdxt-U.js} +9 -2
  12. package/dist/chunks/{git-version-D_iXgYTZ.js → git-version-DqagvnAZ.js} +1 -1
  13. package/dist/chunks/{grok-BUGgQVE3.js → grok-DwrAcNHC.js} +1 -1
  14. package/dist/chunks/{main-Bbh8ky2x.js → main-DZzDU4Q4.js} +403 -123
  15. package/dist/chunks/{pair-cli-DkItUGpT.js → pair-cli-3KKNhZ22.js} +2 -2
  16. package/dist/chunks/{remote-config-DFwmHWed.js → remote-config-Ce5nN0zL.js} +1 -1
  17. package/dist/chunks/{session-C8IpFmGQ.js → session-3eSP3t1i.js} +8 -2
  18. package/dist/chunks/{session-routes-nySS7DUE.js → session-routes-B2oSzmQn.js} +1 -1
  19. package/dist/chunks/{settings-cli-CaYd3bUH.js → settings-cli-BYY991YC.js} +5 -5
  20. package/dist/chunks/{settings-readout-core-Du7n-zyD.js → settings-readout-core-CWAhwZKN.js} +2 -2
  21. package/dist/chunks/{ssh-sign-cli-BLzmQ3Vh.js → ssh-sign-cli-BbqYIPwh.js} +2 -2
  22. package/dist/client/assets/index-C9wfiVqt.js +176 -0
  23. package/dist/client/assets/index-PnaYWtoe.css +2 -0
  24. package/dist/client/index.html +2 -2
  25. package/dist/server/index.js +1 -1
  26. package/package.json +1 -1
  27. package/dist/chunks/config-store-DE_r4DP8.js +0 -1
  28. package/dist/client/assets/index-D7QFo-gy.js +0 -176
  29. package/dist/client/assets/index-DKnOk67Z.css +0 -2
@@ -0,0 +1,176 @@
1
+ import{_ as e,a as t,c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,n as u,o as d,p as f,r as p,s as m,t as h,u as g,v as _}from"./zod-BRLv4KqJ.js";import{n as v,r as y,t as b}from"./xterm-kR64YvZ-.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var x=g({attempt:c().int().positive(),limit:c().int().positive()}).refine(e=>e.attempt<=e.limit),S={error:l().nullable().optional(),nextAttemptAt:c().finite().nonnegative().nullable().optional(),retry:x.nullable().optional(),isRefreshing:t().optional(),refreshNotice:l().nullable().optional()},ee=f({lastRefreshedAt:c().finite().nonnegative().nullable(),error:l().nullable()}),te=g({lane:u([`my-prs`,`team-review`,`issues`])}),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 w(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 T=l().regex(se),ce=l().regex(/^[^/]+\/[^/]+$/);g({number:c().int().positive(),title:l(),body:l(),url:l(),author:g({login:l(),is_bot:t().optional()}).passthrough(),state:u([`OPEN`,`CLOSED`,`MERGED`]).optional(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),baseRefOid:T,headRefName:l().optional(),headRefOid:T,additions:c().int().nonnegative(),deletions:c().int().nonnegative(),files:p(g({path:l(),additions:c().int().nonnegative(),deletions:c().int().nonnegative()}).passthrough())}).passthrough();var E=g({path:l(),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l()}),le=Object.freeze({STAMP:`APPROVE`,COMMENT:`APPROVE WITH NITS`,NEEDS_YOU:`REQUEST CHANGES`}),D=u([`APPROVE`,`APPROVE WITH NITS`,`REQUEST CHANGES`,`BLOCKED`]),ue=r(e=>typeof e==`string`&&Object.hasOwn(le,e)?le[e]:e,D),de=u([`CRITICAL`,`HIGH`,`MEDIUM`,`LOW`]),fe=E.extend({severity:de.optional()}),pe=g({path:l().min(1),line:c().int().positive().nullable(),side:u([`RIGHT`,`LEFT`]),severity:de,reviewer:l().min(1),disposition:u([`ACTIONABLE`,`NIT`,`AMBIGUOUS`]).nullable(),body:l().min(1)}),me=g({goal:l().default(``),change:l(),checked:p(l()),gaps:p(l())});g({verdict:D,head:T,summary:l(),assessment:me.nullable(),findings:p(pe)}),g({body:l(),commit_id:T,comments:p(g({path:l().min(1),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l().min(1)}))});var he=u([`APPROVE`,`COMMENT`]),ge=u([`APPROVED`,`CHANGES_REQUESTED`,`COMMENTED`]),_e=new Set([`APPROVED`,`CHANGES_REQUESTED`]),ve=u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]),ye=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]),be={requestSource:u([`direct`,`team`]).default(`team`),isDraft:t().optional(),checksState:ye.nullable().optional()},xe=g({login:l().min(1),state:ge,commit:T.nullable(),isViewer:t(),submittedAt:l().nullable().optional()});function Se(e,t){return e||(t.includes(`CHANGES_REQUESTED`)?`CHANGES_REQUESTED`:t.includes(`APPROVED`)?`APPROVED`:`REVIEW_REQUIRED`)}function Ce(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 we=g({head:T,base:T.optional(),verdict:D,summary:l(),body:l(),comments:p(E),wasPosted:t()}),Te=we.pick({head:!0,verdict:!0,summary:!0,wasPosted:!0}).extend({comments:p(fe)}),Ee=l().min(1).max(256).regex(ie),De=g({addressed:t(),reason:l().trim().min(1).max(4e3)}).strict(),Oe=g({id:Ee,path:l(),line:c().int().positive().nullable(),isResolved:t(),viewerCanResolve:t(),comments:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(g({body:l(),author:g({login:l()}).nullable(),viewerDidAuthor:t(),createdAt:l().datetime(),url:l().url(),originalCommit:g({oid:T}).nullable()}))})});g({data:g({node:g({comments:Oe.shape.comments}).nullable()}).nullable()}),g({pullRequest:g({reviewThreads:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(Oe)})}).nullable()}),g({data:g({resolveReviewThread:g({thread:g({id:Ee,isResolved:m(!0)})})}).nullable(),errors:p(e()).optional()});var ke=g({id:Ee,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:De.extend({head:T,judgedAt:c().finite(),lastReplyAt:l().datetime()}).optional(),resolveError:l().optional(),resolveAttemptReplyAt:l().optional(),judgeAttempt:g({head:T,lastReplyAt:l(),retryAt:c().finite()}).optional(),unjudgeable:g({head:T,lastReplyAt:l(),reason:l().min(1)}).optional()});g({merge_base_commit:g({sha:T}),files:p(g({filename:l(),previous_filename:l().optional(),patch:l().optional()})).max(300)});var Ae=g({total:c().int().nonnegative(),resolved:c().int().nonnegative()}),je=g({...be,key:l(),repo:ce,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),reviewedHead:T,reviewedBase:T.optional(),verdict:ue,summary:l(),assessment:me.optional(),body:l(),comments:p(fe),status:u([`ready`,`stale`,`posted`,`discarded`,`error`]),error:l().optional(),threads:p(ke).optional(),viewerThreads:Ae.optional(),githubReviews:p(xe).optional(),reviewDecision:ve.nullable().optional(),liveHead:T.optional(),prCreatedAt:l().optional(),reviewedAt:c().finite().optional(),postedAt:c().finite().optional(),postedEvent:he.optional(),priorReviewedHead:T.optional(),requeuedHead:T.optional(),earlierReview:Te.optional()});function Me(e){return e.status===`posted`&&e.postedEvent===`COMMENT`}var Ne=u([`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`]);function Pe(e){return e.action===`discard`||e.head!==void 0}var Fe=g({key:l().min(1),head:T.optional(),action:Ne,threadId:Ee.optional(),body:l(),comments:p(E)}).refine(e=>e.action!==`resolve-thread`||e.threadId!==void 0,{message:`resolve-thread requires threadId`,path:[`threadId`]}).refine(Pe,{message:`only discard may omit head`,path:[`head`]}),Ie=g({key:l(),ok:t(),error:l().optional(),warning:l().optional()}),Le=g({sessionId:l().min(1),workDir:l().min(1),worktreePath:l().min(1),head:T,deadlineAt:c(),remainingAwakeMs:c().nonnegative().optional(),savedAt:c()}),Re=g({...be,reviewDecision:ve.nullable().optional(),key:l(),repo:ce,number:c().int().positive(),title:l(),url:l(),author:l(),prCreatedAt:l().optional()}),ze=g({draft:je.nullable(),reviewedHead:T.nullable(),inFlight:t(),skipReason:l().nullable(),handReview:Re.optional(),reviewAttempts:c().int().nonnegative().default(0),resumable:Le.nullable().optional(),reviewedAt:c().optional(),threads:p(ke).optional(),viewerThreads:Ae.optional(),autoResolvedThreadIds:p(Ee).optional(),githubReviews:p(xe).optional(),reviewDecision:ve.nullable().optional(),liveHead:T.optional(),requeuedHead:T.optional(),priorReview:we.optional(),discardedReviewHead:T.optional(),requestedAt:c().finite().optional(),updatedAt:c().finite()});i(l(),ze);var Be=u([`preparing`,`checkout`,`reviewing`]),Ve=g({at:c().finite(),tool:l(),detail:l()}),He=g({...be,reviewDecision:ve.nullable().optional(),key:l(),repo:ce,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),head:T,phase:Be,startedAt:c().finite(),deadlineAt:c().finite().nullable(),toolCalls:c().int().nonnegative(),recentSteps:p(Ve),prCreatedAt:l().optional(),priorReviewedHead:T.optional()}),Ue=g({...S,type:m(`team-review-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),drafts:p(je),inFlight:p(He),queued:p(Re).default([]),handReview:p(Re).default([]),team:g({org:l(),slug:l(),name:l(),avatarUrl:l()}).nullable().optional()}).passthrough(),We=u([`merged`,`draft`,`conflicts`,`behind`,`checks-failing`,`changes-requested`,`unresolved-threads`,`checks-pending`,`needs-approval`,`ready`,`unknown`]),Ge=c().int().nonnegative(),Ke=l().regex(C),qe=l().regex(/^[1-9][0-9]*$/),Je=o([Ke,`#`,qe]),Ye=o([Je,`@`,T]),Xe=l().refine(e=>Je.safeParse(e).success),Ze=l().refine(e=>Ye.safeParse(e).success);d(`outcome`,[f({outcome:m(`pushed`)}),f({outcome:u([`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1)})]);var Qe=f({outcome:u([`pushed`,`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1).optional(),at:c().finite()}),$e=Qe.extend({key:Xe,headRefOid:T,baseRefOid:T,consecutiveAttempts:c().int().min(1).optional()});f({keepMergeableKeys:p(Xe),keepMergeableAttemptKeys:p(Ze),keepMergeableAttempts:p($e).default([]),mergeQueueKeys:p(Xe).default([]),keepMergeablePushedHeadKeys:p(Ze).default([])});var et=f({repo:Ke,number:c().int().positive(),url:_(),source:u([`hook`,`sha`,`manual`]),linkedAt:c().finite()}),tt=f({links:p(et).max(20),unlinkedKeys:p(Xe).default([])}),nt=g({repo:Ke,number:c().int().positive(),keepMergeable:t()}),rt=g({key:l(),ok:t(),error:l().optional()}),it=rt,at=g({repo:Ke,number:c().int().positive(),mergeWhenReady:t()}),ot=rt,st=u([`MERGE`,`SQUASH`,`REBASE`]),ct=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()}),lt=g({reviewer:l().nullable(),state:l(),submittedAt:l().nullable()}),ut=g({outcome:u([`rebased`,`failed`]),at:c().finite(),message:l()}),dt=g({at:c().finite(),message:l()}),O=g({key:l(),repo:Ke,number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:T,headRefName:l().min(1),isCrossRepository:t(),headRefOid:T,isInMergeQueue:t(),mergeMethod:st,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:Ge}),unresolvedThreads:Ge,threads:p(ct),behindBy:Ge.nullable(),reviewRequests:p(g({name:l(),isTeam:t(),avatarUrl:l().nullable()})),approvals:Ge,reviews:p(lt),stage:We,autoRebase:ut.optional(),keepMergeable:t().optional(),keepMergeableAttempt:Qe.optional(),isKeepMergeableFixInFlight:t().optional(),mergeQueuePosition:c().int().positive().nullable().optional(),isMergeQueueHeldForRepairPush:t().optional(),mergeQueueFailure:dt.optional()}).refine(e=>e.key===`${e.repo}#${e.number}`),ft=f({key:Xe,autoRebase:O.shape.autoRebase,keepMergeable:O.shape.keepMergeable,keepMergeableAttempt:O.shape.keepMergeableAttempt,isKeepMergeableFixInFlight:O.shape.isKeepMergeableFixInFlight,mergeQueuePosition:O.shape.mergeQueuePosition,isMergeQueueHeldForRepairPush:O.shape.isMergeQueueHeldForRepairPush,mergeQueueFailure:O.shape.mergeQueueFailure}),pt=g({...S,type:m(`my-prs-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),viewer:l().nullable(),prs:p(ft),truncatedNote:l().nullable().optional(),isKeepMergeableEnabled:t().optional(),isMergeQueueEnabled:t().optional()}).passthrough();pt.extend({prs:p(O)});var mt=g({repo:Ke,number:c().int().positive(),headRefOid:T}),ht=u([`merged`,`queued`,`auto-merge`,`unconfirmed`]),gt=g({key:l(),ok:t(),kind:ht.optional(),error:l().optional()}),_t=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()}),vt=g({__typename:m(`StatusContext`),context:l(),state:l()}),yt=a([_t,vt]),bt=g({hasNextPage:t(),endCursor:l().nullable()}),xt=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:T,headRefName:l().min(1),isCrossRepository:t(),headRefOid:T,isInMergeQueue:t(),mergeable:u([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:l(),reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),repository:g({nameWithOwner:Ke,viewerDefaultMergeMethod:st}),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:bt.optional(),nodes:p(yt)})}).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()}))})}),St=g({login:l()}).nullable();g({isResolved:t(),isOutdated:t(),path:l(),line:c().int().positive().nullable(),firstComment:g({totalCount:Ge,nodes:p(g({author:St,bodyText:l(),url:_(),createdAt:l()}))}),lastComment:g({nodes:p(g({author:St,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:bt,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:Ge,nodes:p(e())}),merged:g({issueCount:Ge,nodes:p(e())})}),errors:p(e()).optional()});var k=Object.freeze({min:0,exclusiveMin:!0,label:`a positive number`}),Ct=Object.freeze({min:0,label:`zero or more`}),wt=Object.freeze({min:0,max:300}),Tt=Object.freeze({min:1,max:60}),Et=Object.freeze({min:.5,max:2}),Dt=Object.freeze({flyingAnimalsMinGapSeconds:20,flyingAnimalsMaxGapSeconds:40,flyingAnimalsMinDurationSeconds:6.9,flyingAnimalsMaxDurationSeconds:11.5,flyingAnimalsScale:1,flyingAnimalsOnPhone:!0}),Ot=Object.freeze({min:64,max:16384}),kt=Object.freeze({min:0,max:65536}),At=Object.freeze({min:0,max:65535}),jt=Object.freeze({min:0,exclusiveMin:!0,max:2147483647/1e3}),Mt=k,Nt=k,Pt=k,Ft=k,It=k,Lt=Ct,Rt=k,zt=k,Bt=k,Vt=k,Ht=k,Ut=k,Wt=k,Gt=k,Kt=k,qt=Object.freeze({min:60,max:21600,label:`between 60 and 21600`}),Jt=Object.freeze({min:1,label:`at least 1`}),Yt=Object.freeze({min:1,label:`at least 1`}),Xt=Ct,Zt=Object.freeze({min:1,max:30,label:`between 1 and 30`}),Qt=Object.freeze({min:1,max:1440}),$t=Object.freeze({min:1,max:3650}),en=Object.freeze({min:30,max:3650}),tn=Object.freeze({min:1,max:24}),nn=k,rn=Object.freeze({scanIntervalMinutes:Qt,retainDays:$t,warehouseRetainDays:en,sessionBlockHours:tn}),an=Object.freeze({min:15,max:600}),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:Ct,FLYING_ANIMALS_GAP_RANGE:wt,FLYING_ANIMALS_DURATION_RANGE:Tt,FLYING_ANIMALS_SCALE_RANGE:Et,CHANGE_MAP_NARRATOR_TIMEOUT_RANGE:an,KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE:on,PORT_RANGE:At,POSTHOG_ESCALATION_RANGE:Wt,POSTHOG_FIX_TIMEOUT_RANGE:qt,POSTHOG_INTERVAL_RANGE:Bt,POSTHOG_INVESTIGATION_TIMEOUT_RANGE:Ht,POSTHOG_MAX_CONCURRENT_RANGE:Vt,POSTHOG_MIN_USERS_RANGE:Ut,POSTHOG_TRAFFIC_BASELINE_RANGE:Zt,POSTHOG_TRAFFIC_COOLDOWN_RANGE:Xt,POSTHOG_TRAFFIC_MIN_USERS_RANGE:Yt,POSTHOG_TRAFFIC_MULTIPLIER_RANGE:Jt,REPLAY_BUFFER_KB_RANGE:Ot,MEMORY_RESERVE_MB_RANGE:kt,TASK_TITLE_TIMEOUT_RANGE:jt,USAGE_BUDGET_RANGE:nn,USAGE_RETAIN_DAYS_RANGE:$t,USAGE_SCAN_INTERVAL_RANGE:Qt,VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE:Lt,VISIONS_COOLDOWN_MS_RANGE:Ft,VISIONS_DISPATCH_TIMEOUT_RANGE:Rt,VISIONS_INTENT_THREAD_TTL_MS_RANGE:zt,VISIONS_MAX_PER_HOUR_RANGE:It,VISIONS_QUIET_MS_RANGE:Pt,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`,Ke),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=xt.extend({author:g({login:l()}).nullable(),labels:g({nodes:p(g({name:l()}))}),comments:g({totalCount:jn})}),Pn=f({repo:Ke,number:c().int().positive(),title:l(),url:_(),author:l().nullable(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),headRefName:l().min(1),headRefOid:T,labels:p(l()),commentCount: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=>Je.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:xt.shape.repository.pick({nameWithOwner:!0}),number:xt.shape.number,updatedAt:xt.shape.updatedAt,headRefOid:xt.shape.headRefOid,state:xt.shape.state,commits:g({nodes:p(g({commit:g({statusCheckRollup:g({state:O.shape.checks.shape.state}).nullable()})}))}),reviewDecision:xt.shape.reviewDecision,mergeable:xt.shape.mergeable}),xt.extend({author:Nn.shape.author.unwrap().extend({__typename:l().optional()}).nullable(),labels:Nn.shape.labels,comments:Nn.shape.comments,latestReviews:g({nodes:p(xt.shape.latestReviews.shape.nodes.element.extend({commit:g({oid:l()}).nullable().optional()}))}),writerOpinionatedReviews:xt.shape.latestOpinionatedReviews.optional()});var Rn=f({key:In,id:xt.shape.id,repo:O.shape.repo,number:O.shape.number,title:O.shape.title,url:O.shape.url,author:Pn.shape.author,isAuthorBot:t(),labels:Pn.shape.labels,commentCount:Pn.shape.commentCount,isDraft:O.shape.isDraft,state:O.shape.state,createdAt:O.shape.createdAt,mergedAt:O.shape.mergedAt,updatedAt:O.shape.updatedAt,baseRefName:O.shape.baseRefName,baseRefOid:O.shape.baseRefOid,headRefName:O.shape.headRefName,headRefOid:O.shape.headRefOid,isCrossRepository:O.shape.isCrossRepository,isInMergeQueue:O.shape.isInMergeQueue,mergeMethod:O.shape.mergeMethod,mergeable:O.shape.mergeable,mergeStateStatus:O.shape.mergeStateStatus,reviewDecision:ve.nullable(),checks:O.shape.checks.strict(),rollupState:ye.nullable(),unresolvedThreads:O.shape.unresolvedThreads,threads:p(O.shape.threads.element.strict()),behindBy:O.shape.behindBy,reviewRequests:p(O.shape.reviewRequests.element.strict()),approvals:O.shape.approvals,reviews:p(O.shape.reviews.element.extend({commit:T.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 Gn(e){return e===`remote`?`remote`:`local`}function Kn(e,t){return Gn(t)===`local`||e!==`shutdown`}var qn=Object.freeze({setTimeoutFn:(e,t)=>setTimeout(e,t),clearTimeoutFn:e=>clearTimeout(e),setIntervalFn:(e,t)=>setInterval(e,t),clearIntervalFn:e=>clearInterval(e)});function Jn(e){return typeof e!=`object`||!e||!(`unref`in e)||typeof e.unref!=`function`||e.unref(),e}function Yn({mode:e,delayMs:t,run:n,setTimeoutFn:r=qn.setTimeoutFn,clearTimeoutFn:i=qn.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&&Jn(o))}return{schedule:c,cancel:s,get isArmed(){return o!==null}}}var A=Object.freeze({DORMANT:`DORMANT`,INITIALIZING:`INITIALIZING`,STARTING:`STARTING`,RUNNING:`RUNNING`,WAITING:`WAITING`,IDLE:`IDLE`,COMPLETE:`COMPLETE`,DONE:`DONE`,FAILED:`FAILED`}),Xn=Object.freeze({[A.DORMANT]:`Dormant`,[A.INITIALIZING]:`Starting`,[A.STARTING]:`Starting`,[A.RUNNING]:`Working`,[A.WAITING]:`Needs Input`,[A.IDLE]:`Idle`,[A.COMPLETE]:`Complete`,[A.DONE]:`Exited`,[A.FAILED]:`Failed`}),Zn=Object.freeze([A.INITIALIZING,A.STARTING,A.RUNNING,A.WAITING,A.IDLE,A.COMPLETE]),Qn=Object.freeze([A.DONE,A.FAILED]),$n=Object.freeze([A.WAITING,A.IDLE,A.COMPLETE]);function er(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 tr=Object.freeze({[A.DORMANT]:`not-started`,[A.INITIALIZING]:`starting`,[A.STARTING]:`starting`,[A.RUNNING]:`working`,[A.WAITING]:`needs-input`,[A.IDLE]:`idle`,[A.COMPLETE]:`complete`,[A.DONE]:`exited`,[A.FAILED]:`failed`}),nr=`monitoring`,rr=e=>({fill:`none`,stroke:`currentColor`,"stroke-width":e,"stroke-linecap":`round`,"stroke-linejoin":`round`}),ir={fill:`currentColor`},ar=Object.freeze({"not-started":[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...rr(`1.6`),"stroke-linecap":`butt`,"stroke-dasharray":`2.6 2.1`}}],starting:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...rr(`1.8`),"stroke-opacity":`.25`}},{tag:`path`,attributes:{d:`M8 2a6 6 0 0 1 6 6`,...rr(`1.8`),class:`status-icon-spin`}}],working:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...rr(`1.4`),class:`status-icon-ping`}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...ir}}],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`,...rr(`1.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`2.2`,...ir}}],"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`,...rr(`2.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`14`,r:`1.55`,...ir}}],idle:[{tag:`rect`,attributes:{x:`3.6`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...ir}},{tag:`rect`,attributes:{x:`9.4`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...ir}}],complete:[{tag:`path`,attributes:{d:`M2.8 8.4l3.4 3.4 7-7.4`,...rr(`2.2`)}}],exited:[{tag:`rect`,attributes:{x:`3`,y:`3`,width:`10`,height:`10`,rx:`1.6`,...ir}}],failed:[{tag:`path`,attributes:{d:`M3.5 3.5l9 9M12.5 3.5l-9 9`,...rr(`2`)}}]});function or(e,t){return!e||e.toLowerCase().endsWith(`[bot]`)?null:`https://avatars.githubusercontent.com/${encodeURIComponent(e)}?s=${t*2}`}function sr(e){return e.match(/[a-z0-9]/i)?.[0]?.toUpperCase()??`?`}function j(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function cr(e,t,n){let r=j(e,t);return r.innerHTML=n,r}function lr(e,t){for(let[n,r]of t)e.style.setProperty(n,r)}function ur({login:e,url:t,cssPx:n}){let r=j(`span`,`avatar`);r.style.width=`${n}px`,r.style.height=`${n}px`;let i=()=>j(`span`,`avatar-monogram`,sr(e)),a=t===void 0?or(e,n):t;if(!a)return r.append(i()),r;let o=j(`img`);return o.src=a,o.width=n,o.height=n,o.loading=`lazy`,o.decoding=`async`,o.referrerPolicy=`no-referrer`,o.alt=``,o.addEventListener(`error`,()=>o.replaceWith(i()),{once:!0}),r.append(o),r}function dr(e,t){let n=j(`span`,`avatar-stack`);for(let r of e){let e=ur({login:r.login,url:r.url,cssPx:t});e.title=r.title,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,r.title);let i=j(`span`,`avatar-badge`);i.dataset.tone=r.tone,e.append(i),n.append(e)}return n}function M(e,t,n){let r=e.querySelector(t);if(!r||r.tagName.toLowerCase()!==n)throw Error(`${t} does not match a <${n}>`);return r}function N(e,t){let n=e.querySelector(t);if(!(n instanceof HTMLElement))throw Error(`${t} matches no element`);return n}function fr(e,t,n,r=t){if(!n){let n=j(`span`,e,t);return n.title=r,n}let i=j(`a`,e,t);return i.title=r,i.href=n,i.target=`_blank`,i.rel=`noopener`,i}function pr(e,t){return e===A.RUNNING&&t===!0}function mr(e,t=!1){let n=e,r=pr(e,t),i=r?`Monitoring`:Xn[n]||e;return{icon:r?nr:tr[n]??tr[A.DORMANT],label:i.toUpperCase(),isMonitoring:r}}function hr(e){if(!e)return;let t=null,n=()=>{t=null;let n=e.offsetHeight;n>0&&document.documentElement.style.setProperty(`--header-h`,`${n}px`)};new ResizeObserver(()=>{t===null&&(t=requestAnimationFrame(n))}).observe(e)}function gr(e,t,n){let r=j(`section`,`${e}-section`),i=j(`div`,`${e}-section-head`);return i.append(j(`h2`,`${e}-section-title`,t)),n&&i.append(j(`span`,`${e}-section-hint`,n)),r.append(i),r}function _r(e,t,n,r){let i=j(`span`,`${e}-stat`);return r&&(i.dataset.tone=r),i.append(j(`span`,`${e}-stat-value`,n),j(`span`,`${e}-stat-label`,t)),i}function vr(e){return Array.isArray(e?.projects)?e.projects:[]}function yr(e){return!e||!!e.closest(`[hidden]`)}function br(e){return navigator.clipboard?.writeText?navigator.clipboard.writeText(e):null}function xr(e,t){e&&t&&e.parentElement!==t&&(e._adoptHome||={parent:e.parentElement,next:e.nextElementSibling},t.appendChild(e))}function Sr(e,t=null){let n=e?._adoptHome;n&&(delete e._adoptHome,n.parent?.isConnected?n.next&&n.next.parentElement===n.parent?n.parent.insertBefore(e,n.next):n.parent.appendChild(e):t&&t.appendChild(e))}var P=new Map;function Cr(e){return e.card?.dataset.session||e.nameEl?.textContent||``}function wr(e){return typeof e==`string`?e:String(e)}function F(e){return typeof e==`string`?P.get(e):void 0}var Tr=document.getElementById(`sessions-container`),Er=Object.freeze({layout:`desktop`,activeView:`focus`,phoneScreen:null,focusedSessionId:null,selectedSessionId:null,borrowedCardId:null}),Dr=e=>e||null,Or=Object.freeze({setLayout:e=>({layout:e}),setActiveView:e=>({activeView:e}),setPhoneScreen:e=>({phoneScreen:Dr(e)}),focusSession:e=>({focusedSessionId:Dr(e)}),selectSession:e=>({selectedSessionId:Dr(e)}),borrowCard:e=>({borrowedCardId:Dr(e)})});function kr(e){let t=Object.freeze({...Er,...e}),n=new Set;function r(){return t}function i(e){return typeof e==`function`?(n.add(e),()=>n.delete(e)):()=>{}}function a(e){let n=[];for(let r of Object.keys(e)){if(!(r in Er))throw Error(`ui-state: unknown key "${r}"`);Object.is(t[r],e[r])||n.push(r)}return n}function o(e,r){let i=Or[e];if(!i)throw Error(`ui-state: unknown action "${e}"`);let o=i(r),s=a(o);if(s.length===0)return t;let c=t;t=Object.freeze({...t,...o});for(let e of n)try{e(t,s,c)}catch{}return t}return{snapshot:r,subscribe:i,dispatch:o}}var Ar=kr(),jr=()=>Ar.snapshot().activeView;function Mr(){return Ar.snapshot().borrowedCardId}function Nr(e,t,n,{className:r}={}){if(!e?.card||!n)return;let i=Mr();i&&i!==t&&Pr();let a=e.card;a._cardHostClass&&a._cardHostClass!==r&&a.classList.remove(a._cardHostClass),a._cardHostClass=r||``,r&&a.classList.add(r),xr(a,n),Ar.dispatch(`borrowCard`,t),e._ensureTerminalReady?.(),e._setBorrowed?.(!0),e._showPreferredFace?.()}function Pr(){let e=Mr();if(Ar.dispatch(`borrowCard`,null),!e)return null;let t=P.get(e);t?._showTerminalFace?.(),t?._setBorrowed?.(!1),t?._setActiveViewer?.(!1);let n=t?.card;return n&&(n._cardHostClass&&n.classList.remove(n._cardHostClass),delete n._cardHostClass,Sr(n,Tr)),e}var Fr=l().regex(C),Ir=l().regex(RegExp(`${C.source.slice(0,-1)}#[1-9][0-9]*$`)),Lr=g({number:c().int().positive(),url:l().url(),title:l(),state:u([`open`,`draft`,`merged`,`closed`])});g({issue:g({closedByPullRequestsReferences:g({nodes:p(g({number:Lr.shape.number,url:Lr.shape.url,title:Lr.shape.title,state:u([`OPEN`,`MERGED`,`CLOSED`]),isDraft:t()}).nullable()).max(5)})}).nullable()});function Rr({state:e,isDraft:t}){return e===`OPEN`?t?`draft`:`open`:e===`MERGED`?`merged`:`closed`}var zr={key:l(),repo:Fr,number:c().int().positive(),title:l(),url:l().url(),labels:p(l()),assignees:p(l()),author:l(),comments:c().int().nonnegative(),createdAt:h(),updatedAt:h()},Br=u([`project`,`me`,`team`]),Vr={...zr,sources:p(Br).nonempty().refine(e=>new Set(e).size===e.length),teams:p(Fr),projectId:l().nullable(),pullRequests:p(Lr).max(5).default([])},Hr=g(Vr).refine(e=>e.key===`${e.repo}#${e.number}`),Ur=g({...Vr,sessionId:l().nullable().default(null)}).refine(e=>e.key===`${e.repo}#${e.number}`),Wr=g({...zr,state:u([`open`,`closed`])});g({number:zr.number,title:zr.title,html_url:zr.url,state:u([`open`,`closed`]),labels:p(a([l(),g({name:l()})])),assignees:p(g({login:l()})),user:g({login:l()}).nullable(),comments:zr.comments,created_at:zr.createdAt,updated_at:zr.updatedAt,repository_url:l().url().optional(),pull_request:e().optional()}),g({items:p(e()),total_count:c().int().nonnegative(),incomplete_results:t()}),g({ok:t(),items:p(Wr),isComplete:t(),error:l()}),g({issues:p(Hr),lastSyncAt:c().finite().nonnegative().nullable(),perRepoSync:i(Fr,g({lastSyncAt:c().finite().nonnegative().nullable(),ticks:c().int().nonnegative(),needsFullReconcile:t()})),sessionLinks:i(Ir,l()).default({}),pullRequestsFetchedAt:i(Ir,h()).default({})});var Gr=g({type:m(`issues-status`),ts:c().finite(),configured:t(),reason:l().nullable(),lastSyncAt:c().finite().nonnegative().nullable(),issues:p(Ur),...S}).passthrough(),Kr=2e4,qr=4e3,Jr=524288,Yr=1e4,Xr=`ExitPlanMode`,Zr=4096,Qr=/^ {0,3}(#{1,6})[ \t]+(.*)$/;function $r(e){let t=e.trimEnd(),n=t.length;for(;n>0&&t[n-1]===`#`;)n--;if(n===t.length||n===0)return t;let r=t[n-1];return r!==` `&&r!==` `?t:t.slice(0,n).trimEnd()}function ei(e,{overlongLine:t}){if(t===`reject`&&e.length>4096)return null;let n=Qr.exec(e.slice(0,Zr));return n?{level:n[1].length,text:$r(n[2])}:null}var ti=g({plan:l().min(1),planFilePath:l().min(1),agent_id:l().min(1).optional(),agent_type:l().min(1).optional()}).passthrough();g({tool_name:m(Xr),tool_input:ti,agent_id:l().min(1).optional(),agent_type:l().min(1).optional()}).passthrough(),g({plan:l(),planFilePath:l(),agentId:l().nullable(),agentType:l().nullable()}).extend({sessionId:l().min(1),revision:c().int().positive(),receivedAt:c().finite()});var ni=Object.freeze([`open`,`released`,`decided`,`closed`]),ri=u(ni),ii=Object.freeze([`approve`,`approve-accept-edits`,`revise`,`terminal`]),ai=u(ii),oi=g({heading:l().max(qr).nullable(),comment:l().min(1).max(qr)}),si=g({id:l().min(1),agentId:l().nullable(),revision:c().int().positive(),decision:ai,feedback:l().max(Kr).optional(),comments:p(oi).max(40).optional(),plan:l().min(1).max(Jr).optional()}),ci=g({revision:c().int().positive(),receivedAt:c().finite(),chars:c().int().nonnegative(),title:l()}),li=g({revision:c().int().positive(),since:c().finite()}),ui=g({agentId:l().nullable(),agentType:l().nullable(),revisions:p(ci),state:ri,openRevision:li.nullable(),approvedRevision:c().int().positive().nullable(),lastDecision:ai.nullable()});g({reviews:p(ui)});var di=g({agentId:l().nullable(),revision:c().int().nonnegative(),plan:l(),planFilePath:l(),receivedAt:c().finite()}),fi=g({id:l(),agentId:l().nullable(),agentType:l().nullable(),revision:c().int().positive(),receivedAt:c().finite(),state:ri,lastDecision:ai.nullable(),approvedRevision:c().int().positive().nullable(),chars:c().int().nonnegative(),title:l(),hasPlan:t()}),pi=g({id:l(),agentId:l().nullable(),planFilePath:l(),changedAt:c().finite()}),mi=g({id:l(),reviews:p(ui),body:di.nullable()});Object.freeze([`file`,`subsystem`,`co-change`,`hotspot`,`blast`,`untested`,`collision`,`link`]);var hi=l().min(1),gi=l().min(1),_i=c().int().nonnegative(),vi=p(gi).max(20),yi=u([`added`,`modified`,`deleted`,`renamed`,`untracked`]),bi=f({factId:hi,path:gi,previousPath:gi.optional(),status:yi,isCommitted:t()}),xi=f({factId:hi,agentsPath:gi,title:l(),paths:p(gi).min(1)}),Si=f({factId:hi,path:gi,partner:gi,support:_i,confidence:c().min(0).max(1)}),Ci=f({factId:hi,path:gi,commitCount:_i,fixCommitCount:_i}),wi=f({factId:hi,path:gi,directDependents:vi,directDependentCount:_i,transitiveDependentCount:_i,dependentTests:vi,dependentTestCount:_i}),Ti=f({factId:hi,path:gi}),Ei=f({factId:hi,path:gi,otherSessionId:l().min(1),otherSessionName:l()}),Di=f({factId:hi,providerRepo:l().min(1),packageName:l().min(1),packageDir:l(),consumerManifest:gi,versionSpec:l(),isLocalLink:t(),providerChangedPathCount:_i,importers:vi,importerCount:_i,changedImporterCount:_i}),Oi=f({name:l().min(1),root:l().min(1),sessionPathPrefix:l(),base:l().nullable(),files:p(bi),subsystems:p(xi),coChangeGaps:p(Si),hotspots:p(Ci),blastRadius:p(wi),untestedFiles:p(Ti),collisions:p(Ei),links:p(Di),error:l().nullable()}),ki=f({text:l().min(1).max(600),factIds:p(hi).min(1)}),Ai=f({factsHash:l().min(1),model:l().nullable(),claims:p(ki).max(12)}),ji=u([`disabled`,`pending`,`ready`,`failed`]),Mi=f({sessionId:l().min(1),sig:l().nullable(),generatedAt:c().finite(),repos:p(Oi),narrative:Ai.nullable(),narratorState:ji,error:l().min(1).optional()}),Ni=u([`decision`,`retraction`,`conjecture`,`resolution`,`dismissal`,`defect`,`experiment`,`close`,`unable`,`escalation`,`acknowledgement`,`enactment`]),Pi={id:l().min(1),at:h(),session:l(),agent:l(),commit:l().nullable(),dirty:t(),binding:l()},Fi={of:l().min(1),because:l()},Ii=n({id:l(),text:l()}),Li=d(`kind`,[n({...Pi,kind:m(`decision`),chose:l(),over:p(l()),because:l()}),n({...Pi,kind:m(`retraction`),...Fi}),n({...Pi,kind:m(`conjecture`),observation:l(),couldBe:p(l()),discriminatedBy:l()}),n({...Pi,kind:m(`resolution`),...Fi,as:l().optional()}),n({...Pi,kind:m(`dismissal`),...Fi}),n({...Pi,kind:m(`defect`),what:l(),evidence:l(),files:p(l())}),n({...Pi,kind:m(`experiment`),expectation:l(),context:p(l()),actions:p(Ii),criteria:p(Ii)}),n({...Pi,kind:m(`close`),of:l(),outcome:u([`success`,`failure`,`inconclusive`]),results:i(l(),e())}),n({...Pi,kind:m(`unable`),what:l(),because:l()}),n({...Pi,kind:m(`escalation`),what:l(),because:l()}),n({...Pi,kind:m(`acknowledgement`),...Fi}),n({...Pi,kind:m(`enactment`),practice:l(),results:i(l(),e())})]),Ri=a([Li,g({id:l().min(1),kind:l().min(1).refine(e=>!Ni.safeParse(e).success)})]);n({branch:l().nullable(),escalations:p(e()),records:p(Ri),citedBy:i(l(),p(e())),damaged:p(e())});var zi=f({id:l().min(1),at:h().nullable(),kind:l().min(1),text:l().max(280),detail:l().max(280).nullable(),supersedes:l().nullable()}),Bi=d(`ok`,[f({ok:m(!0),latest:zi.nullable()}),f({ok:m(!1),reason:l().min(1).max(200)})]),Vi=f({journal:Bi,updatedAt:c().finite()}),Hi=/^[a-zA-Z0-9_\-. ()]{1,64}$/,Ui=`Session name may only contain letters, numbers, spaces, dashes, dots, underscores, and parentheses (max 64 chars)`,Wi=/[\x00-\x1f\x7f-\x9f]/,Gi=l().refine(e=>!Wi.test(e)).trim().max(120);g({title:l().nullable(),name:l().nullable().optional()}).strict();var Ki=u(A),qi=u([`finished`,`failed`]),Ji=g({at:c().finite().nullable(),kind:l(),reason:l().nullable()}).passthrough(),Yi=4e3,Xi=1e3,Zi=2e3,Qi=g({question:l().min(1).max(Xi),header:l().max(100).default(``),options:p(g({label:l().min(1).max(200),description:l().max(Xi).default(``)})).min(1).max(8),multiSelect:t().default(!1)}),$i=g({requestId:a([l().min(1).max(128),c().int()]),kind:u([`command`,`fileChange`,`permissions`,`tool`,`question`]),summary:l().max(Yi),isSummaryTruncated:t(),toolName:l().max(200).optional(),questions:p(Qi).min(1).max(4).optional(),alwaysAllowSummary:l().max(Yi).optional()}),ea=i(l().max(Xi),l().max(Zi)),ta=u([`accept`,`acceptForSession`,`decline`]),na=80,ra=Object.freeze({notInstalled:`not installed`,unsupportedVersion:`unsupported version`,codexHooksUntrusted:`Codex hooks need trust in /hooks`}),ia=d(`active`,[g({active:m(!0)}).strict(),g({active:m(!1),reason:l().min(1).max(na),version:l().optional()}).strict()]),aa=g({id:l(),name:l(),taskTitle:Gi.nullable().default(null),taskTitleIsCustom:t().default(!1),path:l(),agent:l(),state:Ki,stateSince:c(),dangerouslySkipPermissions:t(),saneYolo:t().default(!1),ephemeral:t(),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:Ji.nullable(),pendingPromptKind:l().nullable(),conversationApproval:$i.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:qi.nullable().default(null),effectiveBase:l().nullable(),linkedPrs:p(et).default([]),coherenceHooks:ia.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 oa=[`push`,`spawn`,`send`,`read`,`close`,`attention`,`board`,`edit`,`review`,`reviews`,`prs`,`link-pr`,`settings`];[...oa],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 sa=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:sa.optional()}).strict(),g({child:sa,discard:t().optional()}).strict();var ca=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(ca),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:aa.shape.id,name:aa.shape.name,agent:aa.shape.agent,state:aa.shape.state,ephemeral:aa.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 la=Re.pick({key:!0,title:!0,url:!0,author:!0});g({ok:m(!0),configured:t(),reason:l().nullable(),reviewing:p(la.extend({phase:He.shape.phase})),queued:p(la),drafts:p(la.extend({status:je.shape.status,verdict:l(),summary:je.shape.summary,comments:c().int().nonnegative(),isOutOfDate:t()}))}).strict(),g({ok:m(!0),configured:t(),prs:p(g({key:O.shape.key,title:O.shape.title,url:O.shape.url,state:O.shape.state,isDraft:O.shape.isDraft,stage:O.shape.stage,reviewDecision:O.shape.reviewDecision,approvals:O.shape.approvals,unresolvedThreads:O.shape.unresolvedThreads,behindBy:O.shape.behindBy,mergeable:O.shape.mergeable,isInMergeQueue:O.shape.isInMergeQueue,checks:O.shape.checks.pick({state:!0,failing:!0})}).strict())}).strict();var ua=4096;g({path:l({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(ua,{error:`path must be at most ${ua} characters`})}).strict();var da=g({path:l(),name:l(),surfacedAt:c().finite()}).strict();g({commands:p(g({name:u(oa),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 fa=4e3,pa=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()}),ma=d(`kind`,[pa.extend({kind:m(`prompt`),text:l()}),pa.extend({kind:m(`expansion`),text:l(),toolUseId:l().min(1).optional()}),pa.extend({kind:m(`thinking`),text:l()}),pa.extend({kind:m(`assistant`),text:l()}),pa.extend({kind:m(`tool_call`),toolUseId:l().min(1),name:l().min(1),input:e()}),pa.extend({kind:m(`tool_result`),toolUseId:l().min(1),content:l(),isError:t(),truncated:t()}),pa.extend({kind:m(`session`),vendor:l().min(1),transcriptPath:l().min(1),reason:l().min(1).optional()}),pa.extend({kind:m(`notice`),text:l().max(fa)}),pa.extend({kind:m(`raw`),line:l().max(fa)})]);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 ha=l().max(16384),ga=p(ha).max(4096),_a=g({model:ha.nullable(),mcpServers:ga,plugins:p(g({name:ha,skills:ga,agents:ga})).max(4096),skills:ga,agents:ga,hookEvents:p(g({event:ha,runCount:c().int().nonnegative()})).max(4096),hookCommands:p(l().max(65536)).max(4096)}),va=u([`release`,`main`]),ya=u([`idle`,`running`,`staged`,`succeeded`,`failed`,`discarded`,`interrupted`]),ba=u([`fetch`,`stage`,`install`,`link-deps`,`build`]),xa=u([`pending`,`running`,`succeeded`,`failed`]),Sa=g({id:ba,status:xa,startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),outputTail:p(l())}).strict(),Ca=g({state:ya,fromSha:l().nullable(),toSha:l().nullable(),toVersion:l().nullable(),channel:va,steps:p(Sa),activeStep:ba.nullable(),reason:l().nullable(),startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),failedAtHandOff:t().optional()}).strict(),wa=Ca.pick({state:!0,activeStep:!0,reason:!0,startedAt:!0,finishedAt:!0}),Ta=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Ea=/^[A-Za-z_][A-Za-z0-9_]*$/,Da=l().regex(/^[^/\s]+\/[^/\s]+$/),Oa=c().finite(),ka=l().min(1),Aa=Object.freeze([`CLAUDE_CODE_OAUTH_TOKEN`]),I=l().regex(Ta);function ja(e){return new Set(e.map(e=>e.id)).size===e.length}var Ma=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-merged-prs`),repo:Da,minBodies:c().int().min(1),limit:c().int().min(1).max(500)})]),Na=d(`kind`,[f({kind:m(`none`)}),f({kind:m(`pr-checkout`)})]),Pa=u([`review-findings`,`json`]),Fa=f({promptTemplate:ka,output:Pa,timeoutSeconds:c().int().min(30).max(14400)}),Ia=f({id:I,env:i(l().regex(Ea),l()).refine(e=>Aa.every(t=>!Object.hasOwn(e,t)),{message:`arm env must not set ${Aa.join(`, `)}; Glimmervoid injects it per cell`}).optional(),extraArgs:p(l()).optional(),setup:f({command:p(ka).min(1)}).optional()}),La=d(`kind`,[f({kind:m(`llm-judge-match`),model:ka})]);f({id:I,title:ka,caseSource:Ma,workspace:Na,subject:Fa,arms:p(Ia).min(2).refine(ja,{message:`arm ids must be unique`}),baselineArm:I,trials:c().int().min(1).max(20),scorer:La}).refine(e=>e.arms.some(t=>t.id===e.baselineArm),{message:`baselineArm must name one of the arms`,path:[`baselineArm`]});var Ra=f({id:I,text:ka,tags:p(I),path:ka.optional(),line:c().int().positive().optional()}),za=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-pr`),repo:Da,number:c().int().positive(),url:ka,minedAt:Oa})]);f({id:I,input:i(l(),e()),references:p(Ra).min(1).refine(ja,{message:`reference ids must be unique`}),source:za}),g({repo:Da,number:c().int().positive(),reviewedSha:T,baseSha:T,changedFiles:p(ka)});var Ba=u([`found`,`partial`,`missed`]),Va=f({referenceId:I,verdict:Ba,findingIndexes:p(c().int().nonnegative())}),Ha=u([`scored`,`invalid`,`error`]),Ua=f({caseId:I,armId:I,trial:c().int().min(1),status:Ha,startedAt:Oa,finishedAt:Oa,degradedReasons:p(ka),findingCount:c().int().nonnegative(),judgements:p(Va),costUsd:c().finite().nonnegative().nullable(),error:ka.nullable()}),Wa=u([`running`,`completed`,`interrupted`,`failed`]);f({id:I,suiteId:I,status:Wa,startedAt:Oa,finishedAt:Oa.nullable(),error:ka.nullable(),cells:p(Ua)});var Ga=c().min(0).max(1).nullable(),Ka=f({trials:c().int().nonnegative(),recall:Ga,recallByTag:i(I,Ga),degraded:c().int().nonnegative(),invalid:c().int().nonnegative(),costUsd:c().finite().nonnegative().nullable()}),qa=f({caseId:I,arms:i(I,Ka),deltaVsBaseline:i(I,c().min(-1).max(1).nullable())}),Ja=f({runId:I,suiteId:I,status:Wa,baselineArm:I,armIds:p(I),rows:p(qa),totals:i(I,Ka)}),Ya=u([`mine`,`run`,`cancel`]),Xa=g({suiteId:I,action:Ya}),Za=g({suiteId:I,action:Ya,ok:t(),error:l().optional(),runId:I.optional()}),eee=u([`setup`,`preflight`,`workspace`,`subject`,`judge`]),tee=g({suiteId:I,runId:I,caseId:I.nullable(),armId:I,trial:c().int().min(1),phase:eee,cellIndex:c().int().nonnegative(),cellCount:c().int().positive(),startedAt:Oa}),Qa=g({id:I,title:l(),error:l().nullable(),caseCount:c().int().nonnegative(),candidateCount:c().int().nonnegative(),armIds:p(I),baselineArm:I.nullable(),latestReport:Ja.nullable()}),$a=g({type:m(`benchmark-status`),ts:Oa,configured:t(),reason:l().nullable(),suites:p(Qa),inFlight:tee.nullable()}).passthrough(),eo=g({__typename:l(),login:l()}).nullable();g({number:c().int().positive(),title:l(),url:ka,mergedAt:l().nullable(),reviewThreads:g({totalCount:c().int().nonnegative()}),reviews:g({totalCount:c().int().nonnegative()})});var to=g({path:l(),line:c().int().positive().nullable(),originalLine:c().int().positive().nullable(),comments:g({nodes:p(g({databaseId:c().int().positive(),author:eo,body:l(),createdAt:l(),originalCommit:g({oid:T}).nullable()}))})}),no=g({databaseId:c().int().positive(),author:eo,body:l(),submittedAt:l().nullable(),commit:g({oid:T}).nullable()}),ro=d(`__typename`,[g({__typename:m(`BaseRefChangedEvent`),createdAt:l()}),g({__typename:m(`BaseRefForcePushedEvent`),createdAt:l(),beforeCommit:g({oid:T}).nullable()})]);g({author:eo,baseRefOid:T,reviewThreads:g({pageInfo:g({hasNextPage:t()}),nodes:p(to)}),reviews:g({pageInfo:g({hasNextPage:t()}),nodes:p(no)}),timelineItems:g({pageInfo:g({hasNextPage:t()}),nodes:p(ro)})}),g({mergeBaseSha:T,changedFiles:p(ka),isFileListComplete:t()});var L=l().nullable().optional(),R=l(),io=tt.shape.unlinkedKeys.unwrap().element,ao=/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/([0-9]+)(?:[/?#].*)?$/i;function oo(e){let t=e.trim(),n=ao.exec(t),r=n?`${n[1]}#${n[2]}`:t,i=io.safeParse(r);return i.success?i.data:null}function z(e,t){return n({type:m(e),...t})}function so(e={}){return n(e)}var B=l().nullable(),V=c().finite(),co=V.optional(),lo=B.optional(),uo=so(),fo=p(e()),po=c().int().positive(),mo=l().min(1).max(ua),ho=p(a([so({at:V,tool:l(),detail:l()}),so({at:V,note:l()})]));g({id:l(),label:l(),command:l(),args:p(l()),resolvable:t().nullable()}).strict();var go=g({name:l(),template:l(),parameters:i(l(),l()),hourlyCostUsd:c().nullable(),idleStopMinutes:c()}),_o=p(go).nullable(),vo=u([`claude-code`,`codex`]),yo=g({agent:vo,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(),bo=p(yo),xo=g({setupWarning:B,lastFailure:g({message:l(),failedAt:V}).nullable()}),So=g({id:R,session:l(),taskTitle:Gi.nullable().optional(),taskTitleIsCustom:t().optional(),path:l(),agent:l(),state:Ki,stateSince:V,skipPerms:t(),saneYolo:t(),worktree:t(),workspace:t().optional(),remoteWorkspace:l().optional(),guarded:t().optional(),guardrailsReleased:t().optional(),resumeSessionId:B,ephemeral:t().optional(),ownerId:R.optional(),linkedPrs:p(et).optional()}),Co=1e3,wo=RegExp(`^[^\0--Ÿ]+$`),To=f({section:u([`committed`,`uncommitted`]),path:l().min(1).max(400).regex(wo),line:c().int().positive(),side:u([`old`,`new`]),note:l().min(1).max(Co)}),Eo=4096,Do=Eo+2*(Jr+Kr+80*qr),Oo=g({reason:l(),message:l()}),ko=u([`npm-global`,`npx`,`clone`,`unknown`]),Ao={updateAvailable:t(),current:B,latest:B,currentSha:B,latestSha:B,releaseUrl:B,command:l(),flavor:ko,platform:l(),installedBranch:B,upstream:B,isTreeClean:t().nullable(),lastCheckAt:V,channel:va,behindCount:c().int().nonnegative().nullable(),reason:B,deprecation:B,journalSummary:wa.nullable(),applyRefusal:Oo.nullable()};g(Ao);var jo=8192,Mo=g({name:l().max(128),stack:l().max(jo)}).strict(),No=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 Po=[`remove-session`,`kill`,`start-session`,`restart`,`force-restart`,`merge-session`,`finish-session`,`merge-continue-session`,`discard-session-worktree`,`resolve-session-merge`,`request-session-diff`,`request-change-map`,`request-branch-sync`,`resync-branch`,`debug-state`];function Fo(t){return z(t,{id:R,force:e().optional()})}var Io=Po.map(Fo),Lo=[z(`add-session`,{name:l(),path:l(),repos:p(l()).optional(),agent:l().optional(),dangerouslySkipPermissions:t().optional(),unguarded:t().optional(),runInPlace:t().optional(),environment:l().optional(),requestId:L}),z(`list-conversations`,{id:R,requestId:L}),z(`resume-conversation`,{id:R,conversationId:l()}),z(`rename-session`,{id:R,newName:l()}),z(`get-workspace-repos`,{id:R,requestId:L}),z(`set-workspace-repos`,{id:R,repos:p(l()),requestId:L}),z(`set-session-title`,{id:R,title:Gi}),z(`link-session-pr`,{id:R,key:io}),z(`unlink-session-pr`,{id:R,key:io}),z(`ping`,{requestId:L}),z(`get-settings`,{requestId:L}),z(`get-agent-logins`,{requestId:L}),z(`agent-connect`,{agent:vo,action:u([`start`,`cancel`]),requestId:L}),z(`agent-connect-code`,{agent:vo,code:l(),requestId:L}),z(`update-settings`,{settings:i(l(),e()),requestId:L}),z(`scan-repo-roots`,{requestId:L,includeSuggestions:t().optional()}),z(`list-agents`,{requestId:L,rescan:t().optional()}),z(`get-radar-report`,{issueId:a([l(),c()]),requestId:L}),z(`radar-open-session`,{projectId:a([l(),c()]),issueId:a([l(),c()]),requestId:L}),z(`issue-detail`,{requestId:l().min(1),repo:Fr,issueNumber:c().int().positive()}),z(`open-issue-session`,{requestId:L,projectId:l(),repo:Fr,issueNumber:c().int().positive()}),z(`radar-issue-action`,{projectId:a([l(),c()]),issueId:a([l(),c()]),action:l(),requestId:L}),z(`open-team-review-session`,{requestId:L,key:io}),z(`team-review-action`,{...Fe.shape,requestId:L}).refine(Pe,{message:`only discard may omit head`,path:[`head`]}),z(`benchmark-action`,{...Xa.shape,requestId:L}),z(`my-pr-merge`,{...mt.shape,requestId:L}),z(`my-pr-keep-mergeable`,{...nt.shape,requestId:L}),z(`my-pr-merge-when-ready`,{...at.shape,requestId:L}),z(`github-polling-refresh`,{...te.shape,requestId:L}),z(`radar-archive-investigation`,{id:e().optional(),requestId:L}),z(`telegram-test`,{requestId:L}),z(`request-usage-report`,{requestId:L,days:e().optional(),force:e().optional()}),z(`request-hooks-report`,{requestId:L}),z(`send-diff-annotations`,{id:R,annotations:p(To).min(1).max(50),requestId:L}),z(`save-hook`,{hook:i(l(),e()),requestId:L}),z(`delete-hook`,{id:l(),requestId:L}),z(`shutdown`),z(`restart-server`),z(`focus-change`,{focused:t()}),z(`request-health-snapshot`),z(`update-check`),z(`update-apply`),z(`session-trace`,{id:R,requestId:L,after:c().int().nonnegative().default(0),endingAt:a([c().int().nonnegative(),m(`tail`)]).optional()}),z(`session-plan`,{id:R,agentId:B,revision:po.optional(),draft:t().optional()}),z(`plan-decision`,si.shape),z(`set-session-conversation-view`,{id:R,isOn:t()}),z(`set-session-guardrails`,{id:R,isOn:t()}),z(`conversation-approval`,{id:R,requestId:$i.shape.requestId,decision:ta,answers:ea.optional()}),z(`session-doc-read`,{id:R,path:mo,requestId:L}),z(`session-doc-save`,{id:R,path:mo,text:l(),baseHash:l().min(1),requestId:L}),z(`session-coherence-journal`,{id:R,requestId:L}),z(`session-setup`,{id:R,requestId:L}),z(`client-error`,Mo.shape),z(`dashboard-telemetry`,{event:u(No),properties:i(l(),e())}),z(`dismiss`,{id:R,force:e().optional(),expectedState:Ki.optional()}),...Io];d(`type`,Lo),Object.freeze(`snapshot.hooks-report.save-hook-result.add-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.send-diff-annotations-result.branch-sync-status.session-changed.post-turn-result.debug-state-response.session-trace-response.session-trace-changed.session-plan-changed.session-plan-draft.session-plan-response.session-docs-changed.session-docs-snapshot.session-doc-response.session-doc-save-result.session-coherence.session-coherence-snapshot.session-coherence-journal-response.session-setup-response.notify.update-status.update-progress.post-turn-leftovers.error.session-error.settings.settings-error.settings-updated.pong.agents-listed.repo-roots-scanned.conversations.resume-conversation-ack.health-snapshot.radar-status.radar-investigation-activity.radar-investigation-finished.radar-report.radar-open-session-result.issue-detail-result.open-issue-session-result.open-team-review-session-result.radar-issue-action-result.team-review-action-result.benchmark-action-result.my-pr-merge-result.my-pr-keep-mergeable-result.my-pr-merge-when-ready-result.github-polling-refresh-result.radar-archive-investigation-result.team-review-status.benchmark-status.my-prs-status.issues-status.usage-sessions.usage-report.plan-limits.usage-budget-alert.visions-findings.visions-comments.visions-hand.visions-intent.visions-fix.visions-snapshot.ingest-activity.ingest-snapshot.client-trust.shutting-down.restarting`.split(`.`));var Ro=[z(`snapshot`,{sessions:p(aa),serverBuild:B}),z(`hooks-report`,{requestId:L,ts:co,hooks:p(uo).optional(),builtin:p(uo).optional(),events:p(so({name:l(),matcher:B,description:l(),http:t().optional()})).optional(),projects:p(so({id:l(),name:l(),agent:l()})).optional(),limits:so({maxTimeoutSec:c().int().positive()}).optional(),error:lo}),z(`save-hook-result`,{requestId:L,ok:t(),error:lo,hook:uo.optional()}),z(`add-session-result`,{requestId:L,ok:t(),error:lo,reason:u([`not-git`]).optional()}),z(`agent-logins`,{requestId:L,logins:bo,error:lo}),z(`delete-hook-result`,{requestId:L,ok:t(),error:lo,id:l().optional()}),z(`workspace-repos`,{requestId:L,id:R,ok:t(),repos:p(l()),error:lo}),z(`set-workspace-repos-result`,{requestId:L,id:R,ok:t(),error:lo}),z(`hooks-updated`,{count:c().int().nonnegative()}),z(`state-change`,{id:R,session:l(),from:Ki,to:Ki,event:l(),timestamp:V,skipPerms:t().optional(),saneYolo:t().optional(),failureReason:l().optional()}),z(`session-added`,So.shape),z(`session-modified`,So.shape),z(`session-removed`,{id:R,session:l()}),z(`session-renamed`,{id:R,oldName:l(),newName:l()}),z(`session-title`,{id:R,taskTitle:Gi.nullable(),isCustom:t()}),z(`session-prs`,{id:R,linkedPrs:p(et)}),z(`session-git`,{id:R,worktree:t()}),z(`session-coherence-hooks`,{id:R,coherenceHooks:ia.nullable()}),z(`session-agents`,{id:R,activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),timestamp:V}),z(`session-unseen`,{id:R,unseenOutcome:qi.nullable(),timestamp:V}),z(`session-wakeup`,{id:R,pendingWakeup:Ji.nullable(),timestamp:V}),z(`session-prompt`,{isCompacting:t().optional(),id:R,pendingPromptKind:B,timestamp:V}),z(`session-conversation`,{id:R,hasConversationBridge:t(),isConversationViewOn:t(),conversationApproval:$i.nullable()}),z(`session-merge-status`,{id:R,mergeStatus:l(),reason:B,parked:t(),timestamp:V}),z(`session-worktree-blocked`,{id:R,session:l(),branch:B,notice:B,timestamp:V}),z(`session-worktree-warning`,{id:R,session:l(),branch:B,notice:B,timestamp:V}),z(`session-worktree-ready`,{id:R,session:l(),branch:B,base:B,timestamp:V}),z(`session-diff`,{id:R,committed:so({stat:l(),diff:l()}),uncommitted:so({stat:l(),diff:l()}),hasCommits:t()}),z(`session-diff-error`,{id:R,message:l()}),z(`change-map`,{id:R,map:Mi}),z(`send-diff-annotations-result`,{requestId:L,ok:t(),error:lo,pending:t().optional()}),z(`branch-sync-status`,{id:R,branch:B,upstream:B,state:l(),ahead:c().int().nonnegative(),behind:c().int().nonnegative(),fetched:t().nullable(),action:l().optional(),error:lo}),z(`session-changed`,{id:R}),z(`post-turn-result`,{id:R,mode:l(),skipped:B,filesFixed:c().int().nonnegative(),findings:p(so({file:l(),rule:l(),count:c().int().nonnegative()})),timestamp:V}),z(`debug-state-response`,{id:R,payload:uo}),z(`session-trace-response`,{id:R,requestId:L,records:p(ma),start:c().int().nonnegative(),next:c().int().nonnegative(),reset:t(),path:l()}),z(`session-trace-changed`,{id:R}),z(`session-plan-changed`,fi.shape),z(`session-plan-draft`,pi.shape),z(`session-plan-response`,mi.shape),z(`session-docs-changed`,{id:R,docs:p(da)}),z(`session-docs-snapshot`,{sessions:i(l(),p(da))}),z(`session-doc-response`,{requestId:L,id:R,path:l(),ok:t(),text:l().optional(),hash:l().optional(),error:lo}),z(`session-doc-save-result`,{requestId:L,id:R,path:l(),ok:t(),hash:l().optional(),conflict:t().optional(),error:lo}),z(`session-coherence`,{id:R,...Vi.shape}),z(`session-coherence-snapshot`,{sessions:i(l(),Vi)}),z(`session-coherence-journal-response`,{requestId:L,id:R,ok:t(),entries:p(zi).max(200),error:lo}),z(`session-setup-response`,{requestId:L,id:R,ok:t(),setup:_a.optional(),error:lo}),z(`notify`,{session:l(),category:l(),message:l(),escalationCount:c().int().nonnegative(),kind:m(`plan`).optional()}),z(`update-status`,Ao),z(`update-progress`,{journal:Ca}),z(`post-turn-leftovers`,{repositories:p(l()),command:l()}),z(`error`,{id:R.optional(),message:l(),requestId:L,scope:l().optional()}),z(`session-error`,{id:R.optional(),session:l(),message:l(),scope:l().optional()}),z(`settings`,{settings:uo,requestId:L}),z(`settings-error`,{message:l(),requestId:L}),z(`settings-updated`,{settings:uo,requestId:L}),z(`pong`,{requestId:L}),z(`agents-listed`,{requestId:L,agents:p(so({id:l(),label:l(),resolvable:t()}))}),z(`repo-roots-scanned`,{requestId:L,directories:p(so({root:l(),projects:p(so({name:l(),path:l(),isGit:t().optional()}))})),suggestions:p(so({path:l(),label:l(),gitRepoCount:c().int().nonnegative()})).optional(),error:l().optional()}),z(`conversations`,{requestId:L,id:B,current:B.optional(),conversations:p(so({id:l(),title:l(),cwd:l(),worktreePath:l(),worktreeName:l(),gitBranch:B,mtime:V})),error:l().optional()}),z(`resume-conversation-ack`,{id:R.optional(),resumeSessionId:B.optional(),ok:t(),error:l().optional(),requestId:L}),z(`health-snapshot`,{stats:uo}),z(`radar-status`,{ts:V,intervalMinutes:c(),projects:p(uo),investigations:p(uo)}),z(`radar-investigation-activity`,{projectId:a([l(),c()]),issueId:l(),inFlight:m(!0),startedAt:V.nullable(),trail:ho}),z(`radar-investigation-finished`,{projectId:a([l(),c()]),issueId:l(),verdict:l(),summaryLine:B,startedAt:V.nullable(),trail:ho}),z(`radar-report`,{requestId:L,ok:t(),found:t(),issueId:B,format:l().optional(),content:l().optional(),message:l().optional(),error:l().optional()}),z(`radar-open-session-result`,{requestId:L,ok:t(),error:lo,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional()}),z(`issue-detail-result`,{requestId:l().min(1),ok:t(),body:l().nullable(),error:l().nullable()}),z(`open-issue-session-result`,{requestId:L,ok:t(),error:lo,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),z(`open-team-review-session-result`,{requestId:L,ok:t(),error:lo,key:io.optional(),sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),z(`radar-issue-action-result`,{requestId:L,ok:t(),error:lo,status:B.optional()}),z(`team-review-action-result`,{...Ie.shape,requestId:L}),z(`benchmark-action-result`,{...Za.shape,requestId:L}),z(`my-pr-merge-result`,{...gt.shape,requestId:L}),z(`my-pr-keep-mergeable-result`,{...it.shape,requestId:L}),z(`my-pr-merge-when-ready-result`,{...ot.shape,requestId:L}),z(`github-polling-refresh-result`,{...ne.shape,requestId:L}),z(`radar-archive-investigation-result`,{requestId:L,ok:t(),error:lo}),z(`telegram-test-result`,{requestId:L,ok:t(),error:lo,telegramDelivery:xo.nullable()}),Ue,$a,pt,zn,Gr,z(`usage-sessions`,{ts:V,pricingSource:B,sessions:p(so({id:R,tokens:c(),costUSD:c(),officialCostUSD:c().nullable().optional()}))}),z(`usage-report`,{requestId:L,ts:co,tz:l().optional(),blockHours:c().optional(),totals:uo.optional(),daily:fo.optional(),models:fo.optional(),sessions:fo.optional(),blocks:fo.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:uo.optional(),scan:uo.optional(),warning:lo,error:lo}),z(`plan-limits`,{ts:V,fiveHour:e().nullable(),sevenDay:e().nullable(),source:l(),vendor:u([`claude`,`codex`]).optional()}),z(`usage-budget-alert`,{scope:l(),periodKey:l(),threshold:c(),text:l(),ts:V}),z(`visions-findings`,{uri:l(),diagnostics:fo,ts:V}),z(`visions-comments`,{uri:l(),comments:fo,ts:V}),z(`visions-hand`,{uri:l(),hand:B,ts:V}),z(`visions-intent`,{projectId:B,intent:uo,ts:V}),z(`visions-fix`,{uri:l(),fix:uo,ts:V}),z(`visions-snapshot`,{documents:p(uo),intent:uo,fixes:p(uo),ts:V}),z(`ingest-activity`,{events:p(uo),overflow:c().int().nonnegative(),ts:V}),z(`ingest-snapshot`,{events:p(uo),sources:e(),ts:V}),z(`client-trust`,{trust:u([`local`,`remote`])}),z(`shutting-down`),z(`restarting`)],zo=d(`type`,Ro),Bo=/^\s*at .+:\d+:\d+\)?$|^[^@\s]*@.+:\d+:\d+$/;function Vo(e){let t=e.stack??``,n=String(e);return(t.startsWith(n)?t.slice(n.length):t).split(`
2
+ `).filter(e=>Bo.test(e)).join(`
3
+ `)}function Ho(e){return e==null?null:e instanceof Error?{name:(e.name||`Error`).slice(0,128),stack:Vo(e).slice(0,jo)}:{name:`NonError`,stack:``}}function Uo(e){let t=new Set;return n=>{let r=Ho(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 Wo=[{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`}],Go=1/25,Ko=3;function qo(e,t,n){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(n.max,Math.max(n.min,e))}function Jo(e){if(!Array.isArray(e))return[];let t=new Set(Wo.map(e=>e.sprite));return[...new Set(e.filter(e=>typeof e==`string`&&t.has(e)))]}function Yo(e={}){let t=Dt,n=wt,r=Tt,i=qo(e.flyingAnimalsMinGapSeconds,t.flyingAnimalsMinGapSeconds,n),a=qo(e.flyingAnimalsMaxGapSeconds,t.flyingAnimalsMaxGapSeconds,n),o=qo(e.flyingAnimalsMinDurationSeconds,t.flyingAnimalsMinDurationSeconds,r),s=qo(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:qo(e.flyingAnimalsScale,t.flyingAnimalsScale,Et),flyingAnimalsOnPhone:typeof e.flyingAnimalsOnPhone==`boolean`?e.flyingAnimalsOnPhone:t.flyingAnimalsOnPhone,flyingAnimalsExcludedSprites:Jo(e.flyingAnimalsExcludedSprites)}}function Xo(e){return Wo.some(t=>!e.includes(t.sprite))}function Zo(e,t=-1,n=Math.random){let r=Wo.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 Qo(e,t,n=Math.random,r){let i=r===void 0?Zo(e.flyingAnimalsExcludedSprites,t,n):Wo.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()<Go?Ko:1;return{animalIndex:i,durationSeconds:a,gapMs:o,firstDelaySeconds:s,verticalProgress:c,isRightToLeft:l,arcProgress:(n()*2-1)*u}}function $o({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 es=68,ts=42,ns=768,rs=.68,is=64,as=5,os=8,ss=85;function cs(e,t,n){return Math.min(Math.max(e,t),n)}function ls({viewportWidthPx:e,viewportHeightPx:t,verticalProgress:n,isRightToLeft:r=!1,arcProgress:i=0}){let a=cs(e/ns,rs,1),o=(as+70*n*n)*t/100,s=Math.max(o,is),c=ss*t/100,l=cs(i*os*t/100,is-s,c-s),u=-.45*e,d=1.45*e;return{scale:a,spriteWidthPx:es,spriteHeightPx:ts,topPx:s,startXpx:r?d:u,endXpx:r?u:d,facing:r?-1:1,arcPx:l}}function us(e,t){let n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.round(e*n))/n}function ds(e,t,n){let r=us(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 fs=`chime`,ps=`custom:`,ms=`/custom-sounds`,hs=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`}]}}),gs=Object.freeze(Object.entries(hs).map(([e,t])=>({id:e,label:t.label})));function _s(e){return`${ps}${e}`}function vs(e){return`${ms}/${encodeURIComponent(e)}`}function ys(e){return e.startsWith(ps)&&e.slice(7)||null}function bs(e){let t=(e??[]).map(e=>({id:_s(e),label:e}));return[...gs,...t]}function xs(e,t){if(typeof e!=`string`)return fs;if(Object.hasOwn(hs,e))return e;let n=ys(e);return n&&(t===null||t.includes(n))?e:fs}function Ss(e){return typeof e!=`object`||!e||!(`sounds`in e)||!Array.isArray(e.sounds)?[]:e.sounds.filter(e=>typeof e==`string`&&e!==``)}function Cs(e,t){try{let n=localStorage.getItem(e);return n===null?t:JSON.parse(n)}catch{return t}}function ws(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}var Ts=`glimmervoid-ui-prefs`,Es=`glimmervoid:sidebar-width`,Ds=e=>t=>typeof t==`boolean`?t:e,Os=e=>t=>typeof t==`string`?t:e,ks=e=>typeof e==`string`&&e?e:null,As=e=>typeof e==`number`&&Number.isFinite(e)?e:null,js=e=>t=>As(t)??e,Ms=e=>Array.isArray(e)?[...new Set(e.filter(e=>typeof e==`string`&&e!==``))]:[],Ns={soundEnabled:Ds(!0),soundId:Os(fs),themeId:Os(`phyrexian`),flyingAnimalsEnabled:Ds(!1),flyingAnimalsMinGapSeconds:js(Dt.flyingAnimalsMinGapSeconds),flyingAnimalsMaxGapSeconds:js(Dt.flyingAnimalsMaxGapSeconds),flyingAnimalsMinDurationSeconds:js(Dt.flyingAnimalsMinDurationSeconds),flyingAnimalsMaxDurationSeconds:js(Dt.flyingAnimalsMaxDurationSeconds),flyingAnimalsScale:js(Dt.flyingAnimalsScale),flyingAnimalsOnPhone:Ds(Dt.flyingAnimalsOnPhone),flyingAnimalsExcludedSprites:Jo,notificationsEnabled:Ds(!0),sessionUsageChips:Ds(!1),phoneArrowPad:Ds(!1),activeView:Os(`focus`),lastFocusedSessionId:ks,railWidth:As,reviewSidebarExpanded:Ds(!1),reviewSidebarView:e=>e===`map`||e===`notes`?e:`diff`,prsQueueWidth:As,prsQueueCollapsed:Ds(!1),prsMode:e=>e===`mine`?`mine`:`team`,keptProjects:Ms,traceHiddenKinds:Ms,dismissedUpdate:ks,telemetryNoticeDismissed:Ds(!1),radarAttentionAck:Os(``),prsAttentionAck:Os(``),prsUnseenRows:Os(``),usageAttentionAck:Os(``),visionsAttentionAck:Os(``)};function Ps(e,t,n){e[t]=Ns[t](n)}function Fs(){let e=Cs(Ts,{}),t={};for(let n of Object.keys(Ns))Ps(t,n,e?.[n]);return t}function Is(e){return Fs()[e]}function H(e,t){let n=Fs();Ps(n,e,t),ws(Ts,n)}var Ls=()=>Is(`soundEnabled`),Rs=e=>H(`soundEnabled`,e),zs=()=>Is(`soundId`),Bs=e=>H(`soundId`,e),Vs=()=>Is(`notificationsEnabled`),Hs=e=>H(`notificationsEnabled`,e),Us=()=>Is(`sessionUsageChips`),Ws=e=>H(`sessionUsageChips`,e),Gs=()=>Is(`phoneArrowPad`),Ks=e=>H(`phoneArrowPad`,e),qs=()=>Is(`themeId`),Js=e=>H(`themeId`,e),Ys=()=>Is(`flyingAnimalsEnabled`),Xs=e=>H(`flyingAnimalsEnabled`,e),Zs=()=>Is(`activeView`),Qs=e=>H(`activeView`,e),$s=()=>Is(`railWidth`),ec=e=>H(`railWidth`,e),tc=()=>Is(`reviewSidebarExpanded`),nc=e=>H(`reviewSidebarExpanded`,e),rc=()=>Is(`reviewSidebarView`),ic=e=>H(`reviewSidebarView`,e),ac=()=>Is(`prsQueueWidth`),oc=e=>H(`prsQueueWidth`,e),sc=()=>Is(`prsQueueCollapsed`),cc=e=>H(`prsQueueCollapsed`,e),lc=()=>Is(`prsMode`),uc=e=>H(`prsMode`,e),dc=()=>Is(`keptProjects`),fc=e=>H(`keptProjects`,e),pc=()=>Is(`traceHiddenKinds`),mc=e=>H(`traceHiddenKinds`,e),hc=()=>Is(`dismissedUpdate`),gc=e=>H(`dismissedUpdate`,e),_c=()=>Is(`telemetryNoticeDismissed`),vc=e=>H(`telemetryNoticeDismissed`,e),nee=()=>Is(`radarAttentionAck`),yc=e=>H(`radarAttentionAck`,e),bc=()=>Is(`prsAttentionAck`),xc=e=>H(`prsAttentionAck`,e),Sc=()=>Is(`prsUnseenRows`),Cc=e=>H(`prsUnseenRows`,e),wc=()=>Is(`usageAttentionAck`),Tc=e=>H(`usageAttentionAck`,e),Ec=()=>Is(`visionsAttentionAck`),Dc=e=>H(`visionsAttentionAck`,e),Oc=()=>Is(`lastFocusedSessionId`),kc=e=>H(`lastFocusedSessionId`,e),Ac=()=>As(Cs(Es,null)),jc=e=>ws(Es,As(e)),Mc=e=>H(`flyingAnimalsMinGapSeconds`,e),Nc=e=>H(`flyingAnimalsMaxGapSeconds`,e),Pc=e=>H(`flyingAnimalsMinDurationSeconds`,e),Fc=e=>H(`flyingAnimalsMaxDurationSeconds`,e),Ic=e=>H(`flyingAnimalsScale`,e),Lc=e=>H(`flyingAnimalsOnPhone`,e),Rc=e=>H(`flyingAnimalsExcludedSprites`,e),zc=()=>Yo(Fs()),Bc=()=>{let e=Fs();return Object.fromEntries(Object.keys(Dt).map(t=>[t,e[t]]))},Vc=()=>ws(Ts,{...Fs(),...Dt}),Hc=ls({viewportWidthPx:1440,viewportHeightPx:900,verticalProgress:0});function Uc(e,t=``){let n=j(`div`,`flying-animal-preview ${t}`.trim());n.setAttribute(`aria-hidden`,`true`),n.style.setProperty(`--nyan-width`,`${Hc.spriteWidthPx}px`),n.style.setProperty(`--nyan-height`,`${Hc.spriteHeightPx}px`);let r=j(`div`,`flying-animal-preview-stage`);return r.append(j(`div`,`nyan-trail ${e.trail}`),j(`div`,`nyan-sprite ${e.sprite}`)),n.append(r),n}function Wc(){let e=Zo(zc().flyingAnimalsExcludedSprites);return e===null?null:Wo[e]??null}var Gc=6e4,Kc=18e5,qc=20;function Jc({attempt:e=1,baseMs:t=Gc,maxMs:n=Kc,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,qc)-1),s=Math.min(n,t*2**o);return a===`none`?s:Math.round(a===`half`?s*(.5+.5*i()):i()*s)}var Yc=3e4;function Xc(e,t=Math.random){return Jc({attempt:(typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0)+1,baseMs:500,maxMs:Yc,random:t,jitter:`half`})}var Zc=0,Qc=1;function $c({hasSocket:e,readyState:t,retryPending:n,connectingAgeMs:r=0}){return n?`retry-now`:e?t===Zc?r>1e4?`connect`:`wait`:t===Qc?`probe`:`connect`:`connect`}function el(e){return e===`https:`?`wss:`:`ws:`}function tl(e,t){return`${el(e?.protocol)}//${e.host}${t}`}var nl=``,rl=null;function il(){return nl}function al(){return nl?Promise.resolve(nl):rl||(rl=fetch(`/control-token`,{credentials:`same-origin`,cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{let t=e?.token;return nl=typeof t==`string`?t:``,nl}).catch(()=>``).finally(()=>{rl=null}),rl)}function ol(){nl=``}function sl(e){return nl?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(nl)}`:e}function U(e,t){return typeof e==`string`&&e.trim()?e.trim():t}function W(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}var cl=60,ll=3600,ul=24,dl=1024,fl=dl*1024,pl=fl*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`}`}},hl={rounding:`floor`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:0};function gl(e){return String(e).padStart(2,`0`)}function _l(e,t){return Math.max(0,Math[t](e/1e3))}function vl(e,t){let n=ml[t];if(e<cl)return n.second(e);let r=Math.floor(e/cl);if(r<60)return n.minute(r);let i=Math.floor(r/60);return i<ul?n.hour(i):n.day(Math.floor(i/ul))}function yl(e,t){let n=_l(e,t.rounding);return n<t.justNowBelowSeconds?`just now`:`${vl(n,t.wording)}${t.suffix}`}function bl(e,{smallestUnit:t,dropsZeroRemainder:n}){let r=(e,t,r)=>n&&t===0?e:`${e} ${t}${r}`;if(t===`s`&&e<cl)return`${e}s`;if(t===`s`&&e<ll)return r(`${Math.floor(e/cl)}m`,e%cl,`s`);let i=Math.floor(e/cl);return i<60?`${i}m`:r(`${Math.floor(i/60)}h`,i%60,`m`)}function xl(e,{rounding:t,showsHours:n}){let r=_l(e,t),i=gl(r%cl),a=Math.floor(r/cl),o=Math.floor(r/ll);return!n||o===0?`${a}:${i}`:`${o}:${gl(a%60)}:${i}`}function Sl(e,t){return e<dl?`${e} B`:t===`KB`||e<fl?`${(e/dl).toFixed(1)} KB`:e<pl?`${(e/fl).toFixed(1)} MB`:`${(e/pl).toFixed(2)} GB`}function Cl(e){let t=new Date(e);return`${t.getFullYear()}-${gl(t.getMonth()+1)}-${gl(t.getDate())}`}function wl(e){return`${gl(e.getHours())}:${gl(e.getMinutes())}`}function Tl(e){return e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function El(e){let t=(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`&&e!==``);return[...new Set(t)].sort().join(`|`)}function Dl(e,t){let n=typeof e==`string`?e:``,r=typeof t==`string`?t:``;return n===``?{shown:!1,acknowledged:``}:{shown:n!==r,acknowledged:r}}function Ol({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=Dl(e,r()?e:i);return a(t.acknowledged),t.shown},acknowledge(){a(n())}}}function kl(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 Al=`machine-updates`,jl=`update-actions`,Ml={spiking:0,regressed:1,worsened:2,new:3,quiet:4},Nl={spiking:`crit`,regressed:`crit`,worsened:`warn`,new:`warn`,quiet:`dim`},Pl=99,Fl={ROOT_CAUSE:`root cause`,NEEDS_HUMAN:`needs you`,TRANSIENT:`transient`,FIXED:`fixed`,ERROR:`error`};function Il(e){return Array.isArray(e)?e.flatMap(e=>{let t=e,n=W(t?.at,0),r=U(t?.note,``);if(r)return[{at:n,note:r}];let i=U(t?.tool,``);return i?[{at:n,tool:i,detail:U(t?.detail,``)}]:[]}):[]}function Ll(e){return e.filter(e=>`tool`in e)}function Rl(e){return e.detail?`${e.tool} ${e.detail}`:e.tool}function zl(e){let t=Il(e?.trail),n=t.findLast(e=>`note`in e);if(n)return n.note;let r=Ll(t).at(-1);return r?Rl(r):``}function Bl(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 Vl(e){let t=U(e?.summaryLine,``);return e?.inFlight===!0&&zl(e)||t}function Hl(e){return{inFlight:e?.inFlight===!0,startedAt:W(e?.startedAt,null),steps:Il(e?.trail),verdict:U(e?.verdict,``),summaryLine:U(e?.summaryLine,``)}}function Ul(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 Wl(e,t){let n=Ul(e,t?.projectId,t?.issueId);return n?(n.inFlight=!0,n.startedAt=W(t?.startedAt,null),n.trail=Il(t?.trail),!0):!1}function Gl(e){return{inFlight:!1,startedAt:W(e?.startedAt,null),steps:Il(e?.trail),verdict:U(e?.verdict,``),summaryLine:U(e?.summaryLine,``)}}function Kl(e,t){return!e||!t?!1:String(t.projectId??``)===e.projectId&&String(t.issueId??``)===e.issueId}function ql(e,t){let n=Ul(e,t?.projectId,t?.issueId);if(!n)return!1;let r=Gl(t);return n.inFlight=!1,n.startedAt=r.startedAt,n.trail=r.steps,n.verdict=r.verdict,n.summaryLine=r.summaryLine,!0}function Jl(e){return Fl[typeof e==`string`?e.toUpperCase():``]||String(e??``).toLowerCase()}function Yl(e){return xl(e,{rounding:`round`,showsHours:!1})}function Xl(e,t){return e==null?``:`+${Yl(t-e)}`}function Zl(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 Ql(e,t){if(e.inFlight){let n=Ll(e.steps).length,r=`${n} ${n===1?`step`:`steps`}`;return`investigating, ${e.startedAt?`started ${t}`:`starting`}, ${r}`}return e.verdict?`finished: ${Jl(e.verdict)}`:`finished`}function $l(e){return kl(e,{label:`PostHog monitoring`})}function eu(e){return W(e.intervalMinutes,null)!==null}function tu(e,t){return e==null||e.configured===!1?`placeholder`:t>0?`ready`:eu(e)?`placeholder`:`pending`}function nu(e){return Nl[e??``]||`dim`}function ru(e){if(typeof e?.lastSeen!=`string`)return null;let t=Date.parse(e.lastSeen);return!Number.isFinite(t)||t<=0?null:t}function iu(e){let t=U(e?.status,``).trim().toLowerCase();return!t||t===`active`?``:t}function au(e){return Array.isArray(e)?e.map(e=>Number(e)).filter(e=>Number.isFinite(e)):[]}function ou(e){return Array.isArray(e)?e.map(e=>typeof e==`number`?e:Number(e?.occurrences)).filter(e=>Number.isFinite(e)):[]}function su(e,t=64,n=16){let r=au(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 cu(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 lu(e){return e.length===0?`0 polls, 0 to 0 occurrences`:`${e.length} polls, ${Math.min(...e)} to ${Math.max(...e)} occurrences`}function uu(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 du=3e5;function fu(e){let t=Number(e);return!Number.isFinite(t)||t<=0?du:t*2}function pu(e){let t=e.split(/[\\/]+/).filter(Boolean);return t.length===0?``:t[t.length-1]}function mu(e){let t=pu(U(e?.name,``));if(t)return t;let n=e?.projectId;return n==null||n===``?`project`:String(n)}function hu(e){let t=U(e,``);return t?(t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(`/`)[0].split(`@`).pop()??``).replace(/:\d+$/,``):``}function gu(e){let t=new Set,n=Array.isArray(e)?e:[];for(let e of n){let n=hu(e?.host);n&&t.add(n)}return t.size>1}function _u(e,t,n={}){let r=uu(e?.issues),i=U(e?.error,``).slice(0,200),a=Number(t),o=Number(e?.lastTickAt),s=Number.isFinite(a)&&Number.isFinite(o)&&o>0?a-o:0,c=s>fu(n.intervalMs)?s:0;return{loud:r.active>0||r.spiking>0||!!i||c>0,counts:r,error:i,staleMs:c}}function vu(e,t,n={}){let r=[],i=[],a=Array.isArray(e)?e:[];for(let e of a){let a=_u(e,t,n),o={project:e,...a};a.loud?r.push(o):i.push(o)}return{loud:r,quiet:i}}function yu(e,t=null){return(Array.isArray(e?.investigations)?e.investigations:[]).filter(e=>typeof e==`object`&&!!e).filter(e=>typeof e.id==`string`&&e.id!==``).filter(e=>e.archived!==!0).filter(e=>!t?.has(e.id)).map(e=>({id:e.id,issueId:U(e.issueId,``),projectId:e.projectId??null,projectLabel:U(e.projectName,``),title:U(e.title,`Untitled issue`),summaryLine:U(e.summaryLine,``),url:U(e.url,``),verdict:U(e.verdict,`ERROR`).toUpperCase(),mode:U(e.mode,`investigate`),prUrl:/^https:\/\/[^\s"'<>]{1,300}$/.test(U(e.prUrl,``))?U(e.prUrl,``):``,at:Number.isFinite(Number(e.at))?Number(e.at):0})).sort((e,t)=>t.at-e.at)}function bu(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 xu(e,t){let n=U(e,``);if(n)return/^\d/.test(n)?`v${n}`:n;let r=w(t,{validate:!0});return r?`commit ${r}`:``}function Su(e){return`Update available: ${xu(e?.current,e?.currentSha)} to ${xu(e?.latest,e?.latestSha)}`}function Cu({posthog:e}={}){let t=[],n=Array.isArray(e?.projects)?e.projects:[];for(let e of n){let n=U(e?.projectId,U(e?.name,`project`)),r=Array.isArray(e?.issues)?e.issues:[];for(let e=0;e<r.length;e++){let i=r[e],a=U(i?.issueId,U(i?.title,`#${e}`));i?.change===`spiking`&&t.push(`issue:${n}/${a}:spiking`),i?.verdict===`NEEDS_HUMAN`&&t.push(`issue:${n}/${a}:needs-human`)}}return t}function wu(e={}){return El(Cu(e))}function Tu(e){return Ml[e??``]??Pl}function Eu(e){return Array.isArray(e)?e.map((e,t)=>({issue:e,index:t})).sort((e,t)=>{let n=Tu(e.issue?.change)-Tu(t.issue?.change);if(n!==0)return n;let r=W(t.issue?.users,0)-W(e.issue?.users,0);if(r!==0)return r;let i=W(t.issue?.occurrences,0)-W(e.issue?.occurrences,0);return i===0?e.index-t.index:i}).map(e=>e.issue):[]}var Du=Object.freeze({fetch:`Fetch`,stage:`Stage`,install:`Install dependencies`,"link-deps":`Link dependencies`,build:`Build`}),Ou=Object.freeze({"branch-count-unavailable":`The last check could not compare the checked-out branch with its upstream.`,"branch-diverged":`The checked-out branch has diverged from its upstream.`,"fetch-failed":`The last update check could not fetch the upstream branch.`,"main-channel-requires-clone":`The main channel requires a clone install.`,"no-branch":`The last update check found no checked-out branch.`,"no-upstream":`The checked-out branch has no upstream.`,"release-already-checked-out":`The checkout already contains the latest release. Restart to run it.`,"release-check-failed":`The last release check failed.`,"remote-tip-unavailable":`The last update check could not resolve the upstream branch tip.`,"update-check-failed":`The last update check failed.`}),ku=Object.freeze([`unsupported-flavor`,`unsupported-platform`]),G=`Not connected to the server. Reconnecting.`,Au=Object.freeze({requested:!1,failure:null});function ju(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function Mu(e,t,n=null){return t===`request-sent`?{requested:!0,failure:null}:t===`request-unsent`?{requested:!1,failure:G}:t===`progress-frame`?Au:t===`error-frame`?e.requested?{requested:!1,failure:n}:e:e.failure===null?e:{requested:e.requested,failure:null}}function Nu(e,t){return t?.state?t.state:e?.journalSummary?.state}function Pu(e,t=null,n=null){return{actions:e,note:t,command:n}}function Fu(e){let t=e?.applyRefusal;return t?ku.includes(t.reason):!1}function Iu({status:e,journal:t,request:n=Au}){if(n.failure===`Not connected to the server. Reconnecting.`)return Pu([],G);let r=Lu(Nu(e,t),e,n.requested);return n.failure?{...r,note:n.failure}:r}function Lu(e,t,n){if(e===`running`||n)return Pu([]);if(e===`staged`)return Pu([`restart`]);if(!t?.updateAvailable)return Pu([`check`]);let r=t.applyRefusal;return r?r.reason===`target-already-checked-out`?Pu([`restart`],r.message):Fu(t)?Pu([`check`],r.message,U(t.command,null)):Pu([`check`],r.message):Pu([`update`])}function Ru(e){return e?.journalSummary?.state===`staged`||e?.applyRefusal?.reason===`target-already-checked-out`}function zu(e){let t=U(e?.deprecation,null);return t?`Security notice: ${xu(e?.current,e?.currentSha)||`This version`} is marked unsafe. ${t}`:null}function Bu(e){let t=xu(e?.latest,e?.latestSha)||`A new version`;if(Ru(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=Su(e);return!e||e.applyRefusal===void 0||Fu(e)?{mode:`command`,text:n}:{mode:`link`,text:n}}function Vu(e){let t=Bu(e),n=zu(e);return n?Ru(e)||e?.journalSummary?.state===`running`?{mode:t.mode,tone:`security`,text:`${n} ${t.text}`}:{mode:`command`,tone:`security`,text:n}:{...t,tone:`update`}}function Hu(e){let t=U(e,``);return t?`: ${t}`:``}var Uu=new Set([`idle`,`staged`,`succeeded`,`discarded`]);function Wu(e){return e.state===`failed`?`Update failed${Hu(e.reason)}.`:e.state===`interrupted`?`Update interrupted${Hu(e.reason)}.`:null}function Gu(e){return Du[e]??e}function Ku(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 qu(e){if(!e||Uu.has(e.state))return null;let t=Ku(e),n=t.stepId!==null&&t.stepId!==e.activeStep?t.stepId:null;return{state:e.state,terminalLine:Wu(e),steps:e.steps.map(e=>({id:e.id,label:Gu(e.id),status:e.status})),outputTail:t.lines,outputStepId:t.stepId,outputStepLabel:n===null?null:Gu(n)}}var Ju=6e5;function Yu(e){return e.channel!==`main`||!Number.isInteger(e.behindCount)?``:`${e.behindCount} ${e.behindCount===1?`commit`:`commits`} behind`}function Xu(e,t){let n=Nu(e,t),r=xu(t?.toVersion,t?.toSha)||xu(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=zu(e);if(i)return{tone:`security`,headline:i};let a=xu(e.current,e.currentSha)||`an unknown version`;if(e.updateAvailable){let t=xu(e.latest,e.latestSha)||`a newer build`,n=Yu(e);return{tone:`available`,headline:`Update available: ${a} to ${t}${n?` (${n})`:``}.`}}return U(e.reason,``)?{tone:`unknown`,headline:`Running ${a}. The last check did not finish.`}:{tone:`current`,headline:`Up to date. Running ${a}.`}}function Zu(e){if(!e)return`Update status unavailable.`;let t=xu(e.current,null)||`Unknown version`,n=w(e.currentSha,{validate:!0}),r=U(e.installedBranch,``);return[t,[n?`commit ${n}`:``,r?`on ${r}`:``].filter(Boolean).join(` `),e.isTreeClean===!0?`clean checkout`:e.isTreeClean===!1?`uncommitted local changes`:``].filter(Boolean).join(`, `)}function Qu(e){return e?{label:xu(e.latest,e.latestSha)||`Latest target unknown`,behind:Yu(e),releaseUrl:U(e.releaseUrl,``)}:{label:`Update status unavailable.`,behind:``,releaseUrl:``}}function $u({status:e,checkForUpdates:t,now:n,lastAutoCheckAt:r}){if(t===!1||r!==null&&n-r<Ju)return!1;let i=typeof e?.lastCheckAt==`number`?e.lastCheckAt:null;return i===null||n-i>=Ju}function ed({status:e,checkForUpdates:t,relativeTime:n}){if(t===!1)return`Update checks are off.`;if(!e)return`No update check has run.`;let r=U(e.reason,``);return r?Ou[r]??`The last update check failed: ${r}.`:e.flavor===`unknown`?`The install flavor is unknown.`:n}var td=null,nd=null,rd=0,id=new Map,ad=null,od=0,sd=!1,cd=0,ld=0,ud=null,dd=null;function fd(e){dd=e}function pd(e){ud=e}function K(e){return td?.readyState===WebSocket.OPEN&&(td.send(JSON.stringify(e)),!0)}function md(e){return ld+=1,`${e}-${ld}`}function hd(e,t,{timeoutMs:n=5e3}={}){let r=md(e);return new Promise((i,a)=>{let o=setTimeout(()=>{id.delete(r),a(Error(`Request timed out`))},n);id.set(r,{resolve:i,reject:a,timer:o}),td?.readyState===WebSocket.OPEN?td.send(JSON.stringify({type:e,requestId:r,...t})):(clearTimeout(o),id.delete(r),a(Error(G)))})}function gd(e){if(typeof e!=`object`||!e||!(`requestId`in e))return;let t=e.requestId;if(typeof t!=`string`)return;let n=id.get(t);n&&(clearTimeout(n.timer),id.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 _d(e){for(let t of id.values())clearTimeout(t.timer),t.reject(Error(e));id.clear()}function vd(){let e=td;td=null,_d(G),dd&&dd(`disconnected`,`Reconnecting`),e?.close(),rd=0,yd()}function yd(){if(nd!==null&&(nd!==null&&clearTimeout(nd),nd=null),!il()&&!sd){sd=!0,al().finally(()=>{sd=!1,yd()});return}if(sd)return;let e=cd>0?`?since=${cd}`:``,t=tl(location,sl(`/control${e}`)),n=new WebSocket(t);td=n,od=Date.now();let r=!1;n.addEventListener(`open`,()=>{r=!0,rd=0,dd&&dd(`connected`,`Connected`)}),n.addEventListener(`message`,e=>{if(td!==n)return;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[control] Dropped malformed server JSON message`);return}let r=zo.safeParse(t);if(!r.success){console.warn(`[control] Dropped invalid server message: ${r.error.issues[0]?.message||`invalid payload`}`),gd(t);return}let i=r.data;if(i.type===`snapshot`&&typeof i.seq!=`number`&&(cd=0),typeof i.seq==`number`){if(i.seq<=cd)return;cd=i.seq}let a=typeof i.requestId==`string`?i.requestId:``,o=a?id.get(a):void 0;o?(clearTimeout(o.timer),id.delete(a),o.resolve(i)):ud&&ud(i)}),n.addEventListener(`close`,()=>{if(td!==n)return;td=null,_d(G),r||ol(),dd&&dd(`disconnected`,`Reconnecting`);let e=Xc(rd);rd+=1,nd=setTimeout(yd,e)})}async function bd(){if(dd&&dd(`connecting`,`Connecting`),ad)return ad;let e=$c({hasSocket:!!td,readyState:td?.readyState??null,retryPending:nd!==null,connectingAgeMs:Date.now()-od});if(e===`retry-now`)return nd!==null&&clearTimeout(nd),nd=null,rd=0,yd(),`reconnecting`;if(e===`connect`)return vd(),`reconnecting`;if(e===`wait`)return`reconnecting`;let t=td;return ad=hd(`ping`,{}).then(()=>(dd&&dd(`verified`,`Connected`),`ok`)).catch(()=>(td===t&&t&&vd(),`dead`)).finally(()=>{ad=null}),ad}var xd=`<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
+ `,Sd=`<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
+ `,Cd={busy:`text-text-muted`,ok:`text-state-done`,error:`text-state-failed`},q=15e3,wd=`Something went wrong. Details are hidden in streamer mode.`;function Td(e,t){return e!==`error`||t.startsWith(`Not connected to the server. Reconnecting.`)?t:document.documentElement.hasAttribute(`data-streamer`)?wd:t}function Ed(e=`action-status`){let t=j(`p`,e);return t.setAttribute(`role`,`status`),t.hidden=!0,{element:t,show:(n,r)=>{t.className=`${e} text-xs ${Cd[n]}`,t.dataset.tone=n,t.textContent=Td(n,r),t.hidden=!1},clear:()=>{t.hidden=!0,t.textContent=``,delete t.dataset.tone}}}function Dd(e,t){return K(e)?!0:(t.show(`error`,G),!1)}function Od(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 kd(e,t,n,{busyText:r,timeoutMs:i=q}={}){r&&n.show(`busy`,r);try{let r=await hd(e,t,{timeoutMs:i});return n.clear(),r}catch(e){return n.show(`error`,Od(e,i)),null}}function Ad(){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`,Nd)),{line:e,text:t})}function jd(e,{hidesInStreamerMode:t=!0}={}){let n=Ad();if(!n)return;let r=t?Td(`error`,e):e;n.text.textContent=r,n.text.title=r,n.line.hidden=!1}function Md(e){let t=Ad();t&&t.text.textContent===e&&Nd()}function Nd(){let e=Ad();e&&(e.line.hidden=!0,e.text.textContent=``,e.text.title=``)}var Pd=`claude-code`,Fd=Object.freeze({"claude-code":``,codex:`Codex`,grok:`Grok`});function Id(e){if(typeof e!=`string`)return``;let t=e.trim();return!t||t===`claude-code`?``:Fd[t]||t}function Ld(e,{defaultId:t=Pd}={}){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 Rd=`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 zd(e){let t=typeof e==`object`&&e?e:null;return t===null||!Array.isArray(t.agents)||t.error||Ld(t.agents).options.length>0?{canSpawn:!0,guidance:``}:{canSpawn:!1,guidance:Rd}}var Bd={agent:`upcoming`,repoRoots:`upcoming`,firstSession:`upcoming`};function Vd(e,t){return e<t?`done`:e===t?`current`:`upcoming`}function Hd({agentListing:e,repoRoots:t}){let n=zd(e).canSpawn?t.length===0?2:3:1;return{agent:Vd(1,n),repoRoots:Vd(2,n),firstSession:Vd(3,n)}}function Ud(e){return Ld(typeof e==`object`&&e?e.agents:[]).options.map(e=>e.label).join(`, `)}function Wd(e){return e===1?`1 git repo`:`${e} git repos`}function Gd(e,t){let n=t.trim();return!n||e.includes(n)?null:[...e,n]}var Kd=0,qd=`Could not read the current repository roots.`;function Jd(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function Yd(e){let t=await hd(`get-settings`,{});if(t.type!==`settings`)return qd;let n=t.settings.repoRoots;if(!Jd(n))return qd;let r=Gd(n,e);if(!r)return null;let i=await hd(`update-settings`,{settings:{repoRoots:r}});return i.type===`settings-error`?i.message:null}function Xd({onAdded:e}){Kd+=1;let t=`repo-roots-adder-path-${Kd}`,n=j(`div`,`repo-roots-adder`),r=j(`div`,`repo-roots-adder-found`),i=j(`span`,`repo-roots-adder-label`,`FOUND ON THIS MACHINE`),a=j(`ul`,`repo-roots-adder-list`);r.append(i,a),r.hidden=!0;let o=j(`label`,`repo-roots-adder-label`,`TYPE A PATH`);o.htmlFor=t;let s=j(`div`,`repo-roots-adder-row`),c=j(`input`,`dialog-input repo-roots-adder-input`);c.id=t,c.type=`text`,c.placeholder=`~/src`,c.autocomplete=`off`,c.spellcheck=!1;let l=j(`button`,`btn-dialog btn-dialog-cancel`,`Add`);l.type=`button`,l.disabled=!0,s.append(c,l);let u=j(`p`,`repo-roots-adder-error`);u.setAttribute(`role`,`alert`),n.append(r,o,s,u);let d=!1;function f(e){d=e;for(let t of n.querySelectorAll(`button`))t.disabled=e;e||(l.disabled=c.value.trim()===``)}async function p(t){if(!d){f(!0),u.textContent=``;try{let n=await Yd(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=j(`li`,`repo-roots-adder-suggestion`),n=j(`button`,`btn-dialog btn-dialog-cancel`,`Add`);n.type=`button`,n.setAttribute(`aria-label`,`Add ${t.label}`),n.addEventListener(`click`,()=>{p(t.path)}),e.append(j(`span`,`repo-roots-adder-path`,t.label),j(`span`,`repo-roots-adder-count`,Wd(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 Zd(e){return[...document.querySelectorAll(`.dialog-overlay`)].at(-1)===e}function Qd({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?Zd(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 $d(e,t){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,t),nf(e)}function ef({title:e,dialogClass:t=`dialog`,cancelLabel:n=`Cancel`}){let{overlay:r,dialog:i,close:a}=Qd({dialogClass:t}),o=`dialog-title-${Math.random().toString(36).slice(2)}`,s=j(`h3`,`dialog-title`,e);s.id=o;let c=j(`div`,`dialog-actions`),l=j(`button`,`btn-dialog btn-dialog-cancel`,n);return c.append(l),i.append(s),$d(i,o),{overlay:r,dialog:i,close:a,titleEl:s,actions:c,btnCancel:l}}function tf({title:e,message:t,confirmLabel:n=`Confirm`,danger:r=!1,onConfirm:i}){let{dialog:a,close:o,actions:s,btnCancel:c}=ef({title:e}),l=j(`p`,`dialog-message`,t),u=j(`button`,r?`btn-dialog btn-dialog-confirm btn-dialog-danger`:`btn-dialog btn-dialog-confirm`,n);s.append(u),a.append(l,s),c.addEventListener(`click`,o),u.addEventListener(`click`,()=>{o(),i?.()}),requestAnimationFrame(()=>c.focus())}function nf(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 rf(e){return e instanceof Error?e.message:String(e)}function af(e,t,n=!1){let r=j(`label`,`dialog-checkbox-label`),i=j(`input`);return i.type=`checkbox`,i.className=`dialog-checkbox`,i.value=t,i.checked=n,r.append(i,j(`span`,null,e)),r}function of(e){return e.split(/[\\/]/).filter(Boolean).at(-1)??e}async function sf(e){let[t,n]=await Promise.all([hd(`get-workspace-repos`,{id:e}),hd(`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:of(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 cf(e){let{overlay:t,dialog:n,close:r,actions:i,btnCancel:a}=ef({title:`Workspace repositories`}),o=j(`p`,`dialog-message`,`Saving restarts the session and resumes its conversation. A removed repository keeps its workspace branch, so committed work survives.`),s=j(`fieldset`,`dialog-workspace-list`);s.setAttribute(`aria-label`,`Workspace repositories`),s.append(j(`div`,`dialog-hint`,`Loading repositories...`));let c=j(`div`,`dialog-hint`);c.setAttribute(`role`,`status`);let l=j(`div`,`dialog-error`),u=j(`button`,`btn-dialog btn-dialog-confirm`,`Save`);u.type=`button`,u.disabled=!0,i.append(u),n.append(o,s,c,l,i),a.addEventListener(`click`,r),requestAnimationFrame(()=>a.focus()),sf(e).then(e=>{if(t.isConnected){s.textContent=``;for(let t of e)s.append(af(t.name,t.path,t.isMember));u.disabled=!1}}).catch(e=>{t.isConnected&&(s.textContent=``,l.textContent=`Could not load repositories: ${rf(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`,hd(`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: ${rf(e)}`)}).finally(()=>{c.textContent=``,u.disabled=!1}))})}function lf(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 uf(e,t){let n=0;for(let r of t)lf(r,e)&&n++;return n}function df(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 ff(){let e=[];for(let[,t]of P)e.push(t.card.dataset.session??``);return e}function pf(e){return uf(e,ff())}function mf(e){return df(e??``,ff())}var hf=320,gf=8e3,_f=new Set;function vf(e){_f.add(e)}var yf=(e,t)=>{for(let n of _f)n(e,t)},bf=window.matchMedia?.(`(prefers-reduced-motion: reduce)`);function xf(e){bf?.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 Sf(e){if(!e||e.currentState!==A.RUNNING)return;let t=performance.now();e._lastOutputAt=t,!(t-(e._activityGate||0)<hf)&&(e._activityGate=t,e._activity===`quiet`&&(e._activity=`active`,yf(e,`flag`)),yf(e,`beat`))}function Cf(e){if(!e||e.currentState!==A.RUNNING)return;let t=performance.now()-(e._lastOutputAt||0)>=gf?`quiet`:`active`;e._activity!==t&&(e._activity=t,yf(e,`flag`))}function wf(e,t){e&&(t&&(e._lastOutputAt=performance.now(),e._activityGate=0,e._activity=`active`),t||(e._activity=void 0),yf(e,`flag`))}var Tf=new Set([A.RUNNING,A.WAITING,A.STARTING,A.INITIALIZING]),Ef=e=>Tf.has(e);function Df(e){return Ef(e.currentState)?xl(Date.now()-(e.stateSince||Date.now()),{rounding:`floor`,showsHours:!0}):``}var Of=new Set;function kf(e){return Of.add(e),()=>Of.delete(e)}function Af(){for(let[,e]of P)Cf(e);for(let e of Of)try{e()}catch{}}setInterval(()=>{document.hidden||Af()},1e3),document.addEventListener(`visibilitychange`,()=>{document.hidden||Af()});function jf(e){return yl(Number(e)||0,{rounding:`round`,wording:`compact`,suffix:``,justNowBelowSeconds:0})}function Mf(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?`never`:`${jf(Date.now()-e)} ago`}var Nf=e=>`polled ${Mf(e)}`;function Pf(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=Nf){let a={el:e,ts:n,format:r};i(a),t.push(a)},onTick(e){n.push(e)},reset(){t=[],n=[]},ensure(){r||=kf(a)}}}function Ff(e,{value:t,disabled:n=!1,selected:r=!1}={}){let i=j(`option`,null,e);return t!=null&&(i.value=t),n&&(i.disabled=!0),r&&(i.selected=!0),i}function If(e){return typeof e!=`object`||!e?!1:`skipPermissionsByDefault`in e&&e.skipPermissionsByDefault===!0}function Lf(e){if(typeof e!=`object`||!e||!(`coderEnvironments`in e))return[];let t=_o.safeParse(e.coderEnvironments);return t.success&&t.data?t.data:[]}function Rf(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 zf=Object.freeze({"claude-code":`Claude Code`,codex:`Codex`}),Bf=[],Vf=new Set;function Hf(e){let t=bo.safeParse(e);if(t.success){Bf=t.data;for(let e of Vf)e()}}function Uf(e){return Bf.find(t=>t.agent===e)??null}function Wf(e){return Vf.add(e),()=>{Vf.delete(e)}}function Gf(e){let t=vo.safeParse(e);return t.success?t.data:null}function Kf(e,t){let n=zf[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 qf(){hd(`get-agent-logins`,{},{timeoutMs:q}).then(e=>{e.type===`agent-logins`&&Hf(e.logins)}).catch(()=>{})}function Jf(e){let t=zf[e],{dialog:n,close:r}=Qd();n.innerHTML=Sd,$d(n,`agent-connect-title`),N(n,`#agent-connect-title`).textContent=`Connect ${t}`,N(n,`#agent-connect-intro`).textContent=`Glimmervoid signs ${t} in for its own remote sessions and keeps that login in its own folder, apart from any login you already have on this machine. The sign-in runs here and is never recorded.`;let i=N(n,`#agent-connect-state`),a=N(n,`#agent-connect-steps`),o=M(n,`#agent-connect-link`,`a`),s=N(n,`#agent-connect-code-row`),c=N(n,`#agent-connect-code`),l=N(n,`#agent-connect-paste-label`),u=M(n,`#agent-connect-paste`,`input`),d=N(n,`#agent-connect-error`),f=M(n,`#agent-connect-close`,`button`),p=M(n,`#agent-connect-stop`,`button`),m=M(n,`#agent-connect-submit`,`button`),h=M(n,`#agent-connect-start`,`button`);function g(){if(!n.isConnected){v();return}let t=Uf(e),r=t?.state===`connecting`;i.textContent=Kf(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 hd(t,{agent:e,...n},{timeoutMs:q});if(r.type!==`agent-logins`)return;Hf(r.logins),r.error&&(d.textContent=r.error)}catch(e){d.textContent=`The server did not answer (${Od(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=Wf(g);g(),qf()}function Yf(e){return e.type===`add-session-result`&&e.error?e.error:e.type===`error`?e.message:`The session was not added.`}function Xf(){Qf(null)}function Zf(e){Qf(e)}function Qf(e){let{dialog:t,close:n}=Qd();t.innerHTML=xd,$d(t,`add-session-title`);let r=M(t,`#add-session-picker`,`select`),i=N(t,`#add-session-picker-label`),a=N(t,`#add-session-workspace-list`),o=M(t,`#add-session-single-mode`,`button`),s=M(t,`#add-session-workspace-mode`,`button`),c=N(t,`#add-session-agent-label`),l=M(t,`#add-session-agent`,`select`),u=N(t,`#add-session-environment-label`),d=M(t,`#add-session-environment`,`select`),f=N(t,`#add-session-environment-hint`),p=N(t,`#add-session-agent-login`),m=N(t,`#add-session-agent-login-text`),h=M(t,`#add-session-agent-connect`,`button`),g=N(t,`#add-session-repo-roots`),_=N(t,`#add-session-repo-roots-title`),v=M(t,`#add-session-advanced-toggle`,`button`),y=N(t,`#add-session-advanced`),b=M(t,`#add-session-name`,`input`),x=M(t,`#add-session-path`,`input`),S=N(t,`#add-session-path-label`),ee=M(t,`#add-session-skip-perms`,`input`),te=M(t,`#add-session-unguarded`,`input`),ne=N(t,`#add-session-run-in-place-label`),re=M(t,`#add-session-run-in-place`,`input`),C=N(t,`#add-session-error`),ie=M(t,`#add-session-cancel`,`button`),ae=M(t,`#add-session-confirm`,`button`),oe=!1,se=[],w=null,T=!1;function ce(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`,()=>ce(!1)),s.addEventListener(`click`,()=>ce(!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 E=Xd({onAdded:pe});g.append(E.element);let le=Ed(`dialog-hint`),D=j(`button`,`btn-dialog btn-dialog-cancel`,`Scan again`);D.type=`button`,D.hidden=!0,D.addEventListener(`click`,()=>{pe()});let ue=j(`div`,`flex items-center gap-2`);ue.append(le.element,D),g.before(ue);function de(e){r.textContent=``,r.appendChild(Ff(`Scan failed`,{disabled:!0,selected:!0})),a.textContent=``,le.show(`error`,`The project scan failed: ${e}`),D.hidden=!1,D.disabled=!1}function fe(e){let t=e.type===`repo-roots-scanned`;_.textContent=t&&e.directories.length>0?`No projects in your repository roots yet`:`No repository roots yet`,E.setSuggestions(t?e.suggestions??[]:[]),g.hidden=!1}function pe(){return D.disabled=!0,le.show(`busy`,`Scanning your repository roots`),hd(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q}).then(e=>{if(e.type===`repo-roots-scanned`&&e.error){de(e.error);return}le.clear(),D.hidden=!0,r.textContent=``,a.textContent=``,g.hidden=!0,r.appendChild(Ff(`-- Select a project --`,{value:``,disabled:!0,selected:!0}));let t=!1,n=e.type===`repo-roots-scanned`?e.directories:[];for(let e of n){if(e.projects.length===0)continue;let n=j(`optgroup`);n.label=e.root;for(let r of e.projects){let e=pf(r.name),i=e>0?`${r.name} (${e} open)`:r.name,o=r.isGit===!1?`${i} (not a git repo)`:i;n.appendChild(Ff(o,{value:JSON.stringify({name:r.name,path:r.path,isGit:r.isGit!==!1})})),a.appendChild(af(r.name,r.path)),t=!0}r.appendChild(n)}t||(r.textContent=``,r.appendChild(Ff(`No projects yet`,{disabled:!0,selected:!0})),a.textContent=`No projects yet.`,fe(e))}).catch(e=>{de(Od(e,q))})}pe(),r.addEventListener(`change`,()=>{try{let e=JSON.parse(r.value);b.value=mf(e.name),x.value=e.path,xe(!e.isGit)}catch{}});let me=Pd,he=!1;function ge(e){let t=j(`p`,`dialog-hint dialog-hint-warning`,e);return t.setAttribute(`role`,`status`),C.before(t),t}function _e(e){he=!0,ae.disabled=!0,ge(e).id=`add-session-agent-guidance`}hd(`list-agents`,{},{timeoutMs:q}).then(e=>{let t=zd(e);t.canSpawn||_e(t.guidance);let n=Ld(e.type===`agents-listed`?e.agents:[]);if(me=n.selectedId,n.show){l.textContent=``;for(let e of n.options)l.appendChild(Ff(e.label,{value:e.id,selected:e.id===n.selectedId}));c.hidden=!1}}).catch(e=>{ge(`Could not load the agent list (${Od(e,q)}), so the session uses the default agent.`)}),l.addEventListener(`change`,()=>{me=l.value,ve()});function ve(){if(!t.isConnected){ye();return}let e=Gf(me),n=e?Uf(e):null;p.hidden=w===null||e===null||n===null||n.state===`signed-in`,m.textContent=e?Kf(n,e):``}h.addEventListener(`click`,()=>{let e=Gf(me);e&&Jf(e)});let ye=Wf(ve);qf();let be=!1;ee.addEventListener(`change`,()=>{be=!0}),hd(`get-settings`,{},{timeoutMs:q}).then(e=>{e.type===`settings-error`?ge(`Could not load your settings (${e.message}). Check Skip permissions yourself.`):(Se(Lf(e.settings)),!be&&(ee.checked=If(e.settings)))}).catch(e=>{ge(`Could not load your settings (${Od(e,q)}). Check Skip permissions yourself.`)});function xe(e){T=e,ne.hidden=!e||w!==null,re.checked=!1}function Se(e){if(e.length!==0){se=e,d.textContent=``,d.appendChild(Ff(`Local`,{value:``,selected:!0}));for(let t of e)d.appendChild(Ff(t.name,{value:t.name}));u.hidden=!1}}d.addEventListener(`change`,()=>{w=se.find(e=>e.name===d.value)??null,s.hidden=w!==null,f.hidden=w===null,f.textContent=w?Rf(w):``,xe(T),ve(),w!==null&&oe&&ce(!1)}),b.addEventListener(`input`,()=>{r.selectedIndex=0}),x.addEventListener(`input`,()=>{r.selectedIndex=0,xe(!1)});function Ce(){if(he)return;let e=b.value.trim(),t=x.value.trim();if(oe){let t=[...a.querySelectorAll(`input:checked`)].map(e=>e.value);if(!e||t.length<2){C.textContent=`Enter a name and select at least two repositories.`;return}let n={name:mf(e),path:t[0],repos:t,dangerouslySkipPermissions:ee.checked,unguarded:te.checked};me&&me!==`claude-code`&&(n.agent=me),we(n);return}if(!e||!t){C.textContent=`Both fields are required. Select a project or use Advanced options.`;return}let n={name:mf(e),path:t,dangerouslySkipPermissions:ee.checked,unguarded:te.checked,runInPlace:re.checked};me&&me!==`claude-code`&&(n.agent=me),w&&(n.environment=w.name),we(n)}function we(e){ae.disabled=!0,C.textContent=``,hd(`add-session`,e,{timeoutMs:q}).then(e=>{e.type===`add-session-result`&&e.ok?n():(C.textContent=Yf(e),e.type===`add-session-result`&&e.reason===`not-git`&&(ne.hidden=!1))}).catch(e=>{C.textContent=`The session was not added: ${Od(e,q)}`}).finally(()=>{ae.disabled=he})}ie.addEventListener(`click`,n),ae.addEventListener(`click`,Ce),b.addEventListener(`keydown`,e=>{e.key===`Enter`&&(oe&&Ce(),oe||x.focus())}),x.addEventListener(`keydown`,e=>{e.key===`Enter`&&Ce()}),e?(y.hidden=!1,v.setAttribute(`aria-expanded`,`true`),b.value=e.name,x.value=e.path,xe(!0),requestAnimationFrame(()=>re.focus())):requestAnimationFrame(()=>r.focus())}function $f({issueId:e,issueTitle:t,format:n,content:r,message:i,error:a}){let{dialog:o,close:s,actions:c,btnCancel:l}=ef({title:`Investigation report`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),u=j(`div`,`dialog-report-meta`,t||e||``),d=null;if(n===`html`&&!a&&!i){let e=j(`iframe`,`dialog-report-frame`);e.setAttribute(`sandbox`,``),e.srcdoc=r||``,d=e}d||=j(`pre`,a?`dialog-report-body dialog-report-error`:`dialog-report-body`,a||i||r||``),o.append(u,d,c),l.addEventListener(`click`,s),requestAnimationFrame(()=>l.focus())}function ep({issueTitle:e,projectLabel:t,onOpenReport:n}){let{dialog:r,close:i,actions:a,btnCancel:o}=ef({title:`Investigation`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),s=j(`div`,`dialog-report-meta`,t?`${t}: ${e}`:e),c=j(`p`,`dialog-trail-status`),l=j(`p`,`dialog-trail-summary`),u=j(`ol`,`dialog-trail-steps`),d=j(`p`,`dialog-trail-empty`,`No tool calls yet; the session is reading the issue.`),f=j(`button`,`btn-dialog btn-dialog-cancel`,`Open report`);f.type=`button`,f.hidden=!0,f.addEventListener(`click`,()=>{i(),n()}),a.prepend(f),r.append(s,c,l,u,d,a),o.addEventListener(`click`,i),requestAnimationFrame(()=>o.focus());let p=null,m=``;function h(e){let t=u.scrollHeight-u.scrollTop-u.clientHeight<24,n=Zl(e);if(m!==n){u.textContent=``;for(let t of Bl(e.steps)){let n=j(`li`,`dialog-trail-step dialog-trail-${t.kind}`),r=t.kind===`note`?t.text:`${t.stepCount} ${t.stepCount===1?`step`:`steps`}`;n.append(j(`span`,`dialog-trail-at`,Xl(e.startedAt,t.at)),j(`span`,`dialog-trail-detail`,r)),u.append(n)}m=n}d.hidden=e.steps.length>0||!e.inFlight,u.hidden=e.steps.length===0,t&&(u.scrollTop=u.scrollHeight)}function g(e){c.textContent=Ql(e,Mf(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=kf(()=>{r.isConnected?p?.inFlight&&g(p):v()});return{update(e){p=e,_()},isOpen:()=>r.isConnected,close:()=>{v(),i()}}}function tp(e,t,n){return{body:String(n||`Session needs attention`),tag:`glimmervoid-${e||``}-${t||``}`,renotify:!0,silent:!0}}var np=4e3;function rp(e,t){return`glimmervoid-notify-claim-${e||``}-${t||``}`}function ip(e,t,n,r=np){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 ap=`#plan/`;function op(e){return`${ap}${encodeURIComponent(e)}`}function sp(e){if(!e.startsWith(ap))return null;let t=e.slice(6);if(!t||t.includes(`/`))return null;try{return decodeURIComponent(t)||null}catch{return null}}function cp(){return typeof Notification>`u`?null:Notification}function lp(){return cp()!==null}function up(){let e=cp();return e?e.permission:`unavailable`}async function dp(){let e=cp();if(!e)return`denied`;if(e.permission!=="default")return e.permission;try{return await e.requestPermission()}catch{return e.permission}}function fp(){return!lp()&&!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.`:lp()?up()===`denied`&&Vs()?`Blocked by the browser. Allow notifications for this site in its site settings.`:null:`This browser does not support desktop notifications.`}function pp(){return Vs()&&up()==="default"}function mp(e=()=>{}){let t=j(`div`,`notification-permission`),n=()=>{let r=fp();if(t.replaceChildren(),t.hidden=!r&&!pp(),r){t.append(j(`p`,`notification-permission-hint text-xs text-text-muted`,r));return}let i=j(`button`,`btn-dialog btn-dialog-cancel`,`Enable desktop notifications`);i.type=`button`,i.addEventListener(`click`,()=>{i.disabled=!0,dp().then(()=>{n(),e()})}),t.append(i)};return n(),{element:t,refresh:n}}var hp=`Desktop notifications are blocked by the browser, so alerts show only in this tab. Allow notifications for this site to get them again.`,gp=new Map,_p=!1;function vp(){_p||(_p=!0,jd(hp,{hidesInStreamerMode:!1}))}function yp(e,t){let n=gp.get(e)??new Set;n.add(t),gp.set(e,n),t.addEventListener(`close`,()=>n.delete(t))}function bp(e){let t=gp.get(e);if(t){gp.delete(e);for(let e of t)e.close()}}function xp({session:e,category:t,message:n,kind:r,ignoreFocus:i=!1}={}){let a=cp();if(!a||!Vs()||document.documentElement.hasAttribute(`data-streamer`)||!i&&typeof document<`u`&&typeof document.hasFocus==`function`&&document.hasFocus()||(a.permission===`denied`&&vp(),a.permission!==`granted`)||!ip(window.localStorage,rp(e,t),Date.now()))return;let o=typeof e==`string`?e:``,s=P.get(o),c=s?Cr(s):``;try{let i=new a(c||`Glimmervoid`,tp(e,t,n));i.onclick=()=>{window.focus(),r===`plan`&&o&&(window.location.hash=op(o)),i.close()},s&&yp(o,i)}catch{}}function Sp(e,t=null){return`#settings/${encodeURIComponent(e)}${t?`/${encodeURIComponent(t)}`:``}`}function Cp(e){return/^#settings(?:[/?]|$)/.test(e)}function wp(e){let t=e.trim();return t?`#settings?q=${encodeURIComponent(t)}`:`#settings`}function Tp(e,t,n){let r=j(`a`,`settings-link`,n);return r.href=Sp(e,t),r}var Ep=`↑`,Dp=`↓`,Op=`←`,kp=`→`,Ap=`⌘`,jp=`⌥`,Mp=Array.from({length:9},(e,t)=>[`Digit${t+1}`,t+1]),Np=[{action:`next-attention`,keyCaptions:[`J`],label:`Jump to the next session needing you`,stepByCode:new Map([[`KeyJ`,0]])},{action:`rail-step`,keyCaptions:[Ep,Dp],label:`Previous / next session in the rail`,stepByCode:new Map([[`ArrowUp`,-1],[`ArrowDown`,1]])},{action:`view-step`,keyCaptions:[Op,kp],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(Mp),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 Pp(e){return Np.filter(t=>t.unavailablePlatform!==e)}function Fp(e){return/Mac|iPhone|iPad/.test(e)?`mac`:`other`}function Ip(e,t,n){return e.ctrlKey||e.shiftKey?!1:t===`mac`?e.metaKey&&e.altKey===!!n.needsMacOption:e.altKey&&!e.metaKey}function Lp(e,t,n){return n.isTerminalFocused&&t!==`mac`&&!!e.isShellChord}var Rp=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function zp(e){return Rp.has(e.key)?e.key:e.code}function Bp(e,t,n={isTerminalFocused:!1}){let r=zp(e);for(let i of Pp(t)){let a=i.stepByCode.get(r);if(a!==void 0)return!Ip(e,t,i)||Lp(i,t,n)?null:{action:i.action,step:a}}return null}function Vp(e,t){return t===`focus`||t===`zen`&&e.action===`next-attention`}function Hp(e,t){return e===`mac`?t?.needsMacOption?`${Ap}${jp}`:Ap:`Alt`}function Up(e,t){let n=Pp(t).find(t=>t.action===e);if(!n)throw Error(`Unknown dashboard shortcut: ${e}`);return n}function Wp(e,t){let n=Up(e,t);return[Hp(t,n),n.keyCaptions.join(` `)]}function Gp(e,t){let[n,r]=Wp(e,t);return t===`mac`?`${n}${r}`:`${n}+${r}`}function Kp(e){let t=e===`mac`?`Meta`:`Alt`;return`ArrowUp ArrowDown ${t}+ArrowUp ${t}+ArrowDown`}function qp(e){let t=e===`mac`?Ap:`Ctrl`;return[{title:`Dashboard`,items:Pp(e).map(t=>({combos:t.keyCaptions.map(n=>[Hp(e,t),n]),label:t.label}))},{title:`Navigation`,items:[{combos:[[Ep],[Dp]],label:`Move rail highlight (rail focused)`},{combos:[[Op],[kp]],label:`Switch view tab (tab focused)`}]},{title:`Terminal`,items:[{combos:[[t,`C`]],label:`Copy selection`},{combos:[[t,`V`]],label:`Paste`},{combos:[[t,`Backspace`]],label:`Delete previous word`}]},{title:`General`,items:[{combos:[[`Esc`]],label:`Close dialog / cancel rename`}]}]}var Jp=Fp(navigator.userAgent);function Yp(e,t){t.forEach((t,n)=>{n>0&&e.appendChild(j(`span`,`shortcut-sep`,`+`)),e.appendChild(j(`kbd`,`kbd`,t))})}function Xp(e){let t=j(`span`,`shortcut-keys`);return Yp(t,e),t}var Zp=`npm install -g @anthropic-ai/claude-code`,Qp={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>`},$p=null,em=null,tm=null,nm=null,rm={steps:Bd,agentSummary:``,repoRoots:[]},im=0,am=Ed(`first-run-load-status`),om=mp();function sm({title:e,state:t,summary:n,badge:r,body:i}){let a=j(`li`,`first-run-step`);a.dataset.state=t,t===`current`&&a.setAttribute(`aria-current`,`step`);let o=j(`div`,`first-run-step-head`),s=j(`span`,`first-run-step-icon`);if(s.innerHTML=Qp[t],o.append(s,j(`span`,`first-run-step-title`,e)),t===`done`&&n&&o.append(j(`span`,`first-run-step-summary`,n)),t===`current`&&r&&o.append(j(`span`,`first-run-step-badge`,r)),a.append(o),t!==`current`)return a;let c=j(`div`,`first-run-step-body`);return c.append(...i()),a.append(c),a}function cm(){let e=j(`div`,`first-run-step-actions`);return tm=j(`button`,`btn-dialog btn-dialog-cancel`,`Rescan`),tm.type=`button`,tm.addEventListener(`click`,()=>{fm({rescanAgents:!0})}),e.append(tm,j(`span`,`first-run-step-hint`,`Any other terminal agent can be added under customAgents.`)),[j(`p`,`first-run-step-text`,`No supported agent is on PATH. Install Claude Code, Codex or Grok, then rescan. Rescan still finding nothing means the CLI went into a folder the server cannot see: restart Glimmervoid from a terminal where the command runs.`),j(`code`,`first-run-command`,Zp),e]}function lm(){let e=nm??Xd({onAdded:()=>{fm({rescanAgents:!1})}});return nm=e,[j(`p`,`first-run-step-text`,`The folder that holds your git checkouts. Each subfolder becomes a project you can start a session in.`),e.element]}function um(){let e=j(`div`,`first-run-step-actions`),t=j(`button`,`btn-dialog btn-dialog-confirm`,`+ Session`);t.type=`button`,t.addEventListener(`click`,Xf);let n=j(`span`,`first-run-step-hint`,`Folders and agents can change later in `);n.append(Tp(`machine-sessions`,`repository-roots`,`Settings > Sessions`),`.`),e.append(t,n);let r=j(`p`,`first-run-step-text`,`Run a few at once. When one needs you, `);return r.append(Xp(Wp(`next-attention`,Jp)),` jumps straight to it from any tab.`),[j(`p`,`first-run-step-text`,`Pick a project and an agent. The session runs in its own git worktree, so your checkout is never touched.`),r,e]}function dm(){if(!em)return;let{steps:e,agentSummary:t,repoRoots:n}=rm;em.replaceChildren(sm({title:`1. Agent CLI`,state:e.agent,summary:t,badge:`MISSING`,body:cm}),sm({title:`2. Repository roots`,state:e.repoRoots,summary:n.join(`, `),badge:`NEEDED`,body:lm}),sm({title:`3. First session`,state:e.firstSession,summary:``,badge:``,body:um}))}async function fm({rescanAgents:e}){im+=1;let t=im;tm&&(tm.disabled=!0);try{let[n,r]=await Promise.all([hd(`list-agents`,e?{rescan:!0}:{},{timeoutMs:q}),hd(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q})]);if(t!==im)return;let i=r.type===`repo-roots-scanned`,a=i?r.directories.map(e=>e.root):[];rm={steps:Hd({agentListing:n,repoRoots:a}),agentSummary:Ud(n),repoRoots:a},am.clear(),dm(),nm?.setSuggestions(i?r.suggestions??[]:[])}catch(e){if(tm&&(tm.disabled=!1),t!==im)return;am.show(`error`,`The checklist could not load: ${Od(e,q)} It loads again once the server answers. If it stays like this, check the terminal running Glimmervoid, or run glimmervoid doctor.`)}}function pm(){if($p)return $p;let e=j(`section`,`first-run-checklist`);e.setAttribute(`aria-labelledby`,`first-run-title`);let t=j(`h2`,`first-run-title`,`Get to your first session`);t.id=`first-run-title`,em=j(`ol`,`first-run-steps`);let n=j(`p`,`first-run-footer`,`This list goes away once a session exists. Something off? Run `);return n.append(j(`code`,null,`glimmervoid doctor`),` in a terminal.`),e.append(j(`span`,`first-run-eyebrow`,`FIRST RUN`),t,j(`p`,`first-run-intro`,`Glimmervoid runs the agent CLIs you already have, inside the repositories you point it at. Two checks, then start.`),em,am.element,om.element,n),$p=e,dm(),e}function mm(e,t){if(!t){$p?.parentElement===e&&($p.hidden=!0);return}let n=pm(),r=!n.hidden&&n.parentElement===e;n.parentElement!==e&&e.append(n),n.hidden=!1,om.refresh(),r||fm({rescanAgents:!1})}function hm(){$p&&!$p.hidden&&$p.isConnected&&fm({rescanAgents:!1})}var gm=new Set([`http:`,`https:`]);function _m(e){let t;try{t=new URL(e)}catch{return null}return gm.has(t.protocol)?t.href:null}var vm=2,ym=8,bm=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,xm=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,Sm=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,Cm=/^:?-{3,}:?$/,wm=/^[A-Za-z0-9_+#.-]{1,32}$/;function Tm(e){return ei(e,{overlongLine:`reject`})}function Em(e){let t=e.trim().split(/\s+/)[0]??``;return wm.test(t)?t:``}function Dm(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function Om(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function km(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function Am(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function jm(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function Mm(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>vm)return-1}return-1}function Nm(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=Mm(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function Pm(e){let t=[],n=jm(e,`]`),r=0;for(;r<e.length;){let i=Nm(e,r,n);if(i){let e=_m(i.target.trim());e&&t.push({type:`link`,href:e,children:Pm(i.label)}),e||Dm(t,i.label),r=i.end;continue}if(e.startsWith("`",r)){let n=Am(e,"`",r+1);if(n!==-1){t.push({type:`code`,text:e.slice(r+1,n)}),r=n+1;continue}}let a=Om(e,r);if(a){let n=Am(e,a,r+a.length);if(n!==-1){t.push({type:`strong`,children:Pm(e.slice(r+a.length,n))}),r=n+a.length;continue}}let o=km(e,r);if(o){let n=Am(e,o,r+1);if(n!==-1){t.push({type:`emphasis`,children:Pm(e.slice(r+1,n))}),r=n+1;continue}}Dm(t,e[r]),r++}return t}function Fm(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:Fm(e.children)).join(``)}var Im=`plan-h-`;function Lm(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),`${Im}${r===1?n:`${n}-${r}`}`}function Rm(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=zm(e);return t.length<2?!1:t.every(e=>Cm.test(e))}function zm(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 Bm(e){let t=xm.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function Vm(e,t,n,r){let i=Bm(e[t]);if(!i)return null;let a=[],o=i.ordered,s=i.indent,c=t;for(;c<e.length;){let t=Bm(e[c]);if(!t||t.indent<s)break;if(t.indent>s){if(r>=ym)break;let t=Vm(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:Pm(t.content)}]}),c++}}return{block:{type:`list`,ordered:o,items:a},next:c}}function Hm(e,t){let n=e[t]??``;return n.trim()===``||Tm(n)||bm.test(n)||Sm.test(n)||Bm(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&Rm(e[t+1])}function Um(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:Em(o[2]),text:t.join(`
82
+ `)});continue}let s=Tm(a);if(s){let e=Pm(s.text);r.push({type:`heading`,level:s.level,id:Lm(Fm(e),t),children:e}),i++;continue}if(Sm.test(a)){r.push({type:`rule`}),i++;continue}if(i+1<e.length&&a.includes(`|`)&&Rm(e[i+1])){let t=zm(a).map(Pm),n=[];for(i+=2;i<e.length&&e[i].includes(`|`)&&e[i].trim()!==``;)n.push(zm(e[i]).map(Pm)),i++;r.push({type:`table`,header:t,rows:n});continue}let c=Vm(e,i,t,n);if(c){r.push(c.block),i=c.next;continue}if(n<ym&&/^ {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:Um(a,t,n+1)});continue}let l=[a.trim()];for(i++;i<e.length&&!Hm(e,i);)l.push(e[i].trim()),i++;r.push({type:`paragraph`,children:Pm(l.join(` `))})}return r}function Wm(e){return Um(e.replace(/\r\n?/g,`
83
+ `).split(`
84
+ `),{slugCounts:new Map},0)}function Gm(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:Fm(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function Km(e,t){for(let n of t){if(n.type===`text`){e.append(document.createTextNode(n.text));continue}if(n.type===`code`){e.append(j(`code`,`plan-inline-code`,n.text));continue}if(n.type===`emphasis`){let t=j(`em`);Km(t,n.children),e.append(t);continue}if(n.type===`strong`){let t=j(`strong`);Km(t,n.children),e.append(t);continue}let t=j(`a`,`plan-link`);t.href=n.href,t.target=`_blank`,t.rel=`noopener noreferrer`,Km(t,n.children),e.append(t)}}function qm(e){let t=j(`li`);return Jm(t,e.children),t}function Jm(e,t){for(let n of t)if(n.type===`heading`){let t=j(`h${n.level}`,`plan-heading`);t.id=n.id,Km(t,n.children),e.append(t)}else if(n.type===`paragraph`){let t=j(`p`,`plan-paragraph`);Km(t,n.children),e.append(t)}else if(n.type===`list`){let t=n.ordered?j(`ol`,`plan-list`):j(`ul`,`plan-list`);t.append(...n.items.map(qm)),e.append(t)}else if(n.type===`code`){let t=j(`pre`,`plan-code`),r=j(`code`,n.language?`language-${n.language}`:null,n.text);t.append(r),e.append(t)}else if(n.type===`table`){let t=j(`div`,`plan-table-wrap`),r=j(`table`,`plan-table`),i=j(`thead`),a=j(`tr`);for(let e of n.header){let t=j(`th`);Km(t,e),a.append(t)}i.append(a);let o=j(`tbody`);for(let e of n.rows){let t=j(`tr`);for(let n of e){let e=j(`td`);Km(e,n),t.append(e)}o.append(t)}r.append(i,o),t.append(r),e.append(t)}else if(n.type===`blockquote`){let t=j(`blockquote`,`plan-blockquote`);Jm(t,n.blocks),e.append(t)}else e.append(j(`hr`,`plan-rule`))}function Ym(e){let t=j(`div`,`plan-document`);return Jm(t,e),t}function Xm(e,{hasComment:t,isComposing:n,onComment:r,attachmentFor:i}){let a=j(`div`,`plan-document`),o=[];for(let s of e){let e=j(`section`,`plan-section`);e.dataset.selected=`false`,e.addEventListener(`click`,()=>{for(let t of o)t.dataset.selected=String(t===e)}),o.push(e);let c=j(`div`,`plan-section-head`),l=s.blocks[0],u=l?.type===`heading`;if(u&&Jm(c,[l]),u||(e.id=`plan-introduction`),!t(s)&&!n(s)){let e=j(`button`,`plan-section-comment`,`Comment`);e.type=`button`,e.setAttribute(`aria-label`,`Comment on ${s.heading??`Introduction`}`),e.addEventListener(`click`,()=>r(s)),c.append(e)}let d=j(`div`,`plan-section-body`);Jm(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 Zm={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function Qm(e){let t=j(`div`,`plan-diff`);for(let n of e.lines){let e=j(`div`,`plan-diff-line plan-diff-${n.kind}`),r=j(`span`,`plan-diff-gutter`,Zm[n.kind]);r.setAttribute(`aria-hidden`,`true`),e.append(r,j(`span`,`plan-diff-text`,n.text)),t.append(e)}return t}var $m=`glimmervoid-streamer-mode`,eh=new Set,th=Cs($m,!1)===!0,nh=null;function rh(e){document.documentElement.toggleAttribute(`data-streamer`,e),nh?.setAttribute(`aria-pressed`,String(e))}rh(th);function ih(){return th}function ah(e){if(ws($m,e),e!==ih()){th=e,rh(e);for(let t of eh)t(e)}}function oh(e){return eh.add(e),()=>eh.delete(e)}async function sh(e){try{let t=await hd(`update-settings`,{settings:{streamerMode:e}},{timeoutMs:q});return t.type===`settings-error`?String(t.message):(ah(e),``)}catch(e){return Od(e,q)}}async function ch(){let e=!ih();e&&ah(!0);let t=await sh(e);t&&jd(`${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 lh(){ch()}function uh(e){nh=e,rh(ih()),e.addEventListener(`click`,lh)}var dh=new Map,fh=null;function ph(e){return dh.get(e)??[]}function mh(e){return ph(e).length>0}function hh(e){F(e)?.btnDocs.classList.toggle(`visible`,mh(e))}function gh(e){let t=ph(e.sessionId);e.select.replaceChildren(...t.map(t=>{let n=j(`option`,null,t.name);return n.value=t.path,n.selected=t.path===e.docPath,n})),e.select.hidden=t.length<2,e.title.textContent=t.find(t=>t.path===e.docPath)?.name??e.title.textContent}function _h(e){let t=ph(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 vh(e,t,n=`quiet`){e.status.textContent=t,e.status.dataset.tone=n}function yh(e){e.preview.replaceChildren(Ym(Wm(e.textarea.value)))}function bh(e,t){tf({title:e,message:`Your unsaved edits will be lost.`,confirmLabel:`Discard`,danger:!0,onConfirm:t})}function xh(e,t,n){e.hasUnsavedChanges?bh(t,n):n()}async function Sh(e,t){try{return{reply:await hd(e,t,{timeoutMs:q}),failureText:null}}catch(e){return{reply:null,failureText:Od(e,q)}}}async function Ch(e,t){e.docPath=t,e.isBusy=!0,e.baseHash=null,e.textarea.readOnly=!0,gh(e),vh(e,`Loading`),_h(e);let{reply:n,failureText:r}=await Sh(`session-doc-read`,{id:e.sessionId,path:t});if(fh!==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?(vh(e,i?.error||r||`Could not open this doc`,`warn`),_h(e)):(e.textarea.value=i.text,e.baseHash=i.hash,e.hasUnsavedChanges=!1,e.mode===`preview`&&yh(e),vh(e,``),_h(e))}async function wh(e){if(e.btnSave.disabled||e.baseHash===null)return;e.isBusy=!0,vh(e,`Saving`),_h(e);let t=e.docPath,n=e.textarea.value,{reply:r,failureText:i}=await Sh(`session-doc-save`,{id:e.sessionId,path:t,text:n,baseHash:e.baseHash});if(fh!==e||e.docPath!==t)return;e.isBusy=!1;let a=r?.type===`session-doc-save-result`?r:null;!a?.ok||a.hash===void 0?(vh(e,a?.conflict?`The agent changed this file since you opened it. Reload to see its version.`:a?.error||i||`Save failed`,`warn`),_h(e)):(e.baseHash=a.hash,e.hasUnsavedChanges=e.textarea.value!==n,vh(e,e.hasUnsavedChanges?`Unsaved changes`:`Saved`),_h(e))}function Th(e,t){e.mode=t,t===`preview`&&yh(e),_h(e),t===`edit`&&e.textarea.focus()}function Eh(e,t){let n=j(`button`,`plan-control ${t}`,e);return n.type=`button`,n}function Dh(e){let t=ph(e)[0];if(!t||fh)return;let n=()=>xh(y,`Close this doc?`,()=>y.close()),r=Qd({dialogClass:`doc-editor`,closeOnBackdrop:!1,onEscape:n}),i=`doc-editor-title-${e}`,a=j(`h3`,`doc-editor-title`,t.name);a.id=i;let o=j(`select`,`plan-control doc-editor-picker`);o.setAttribute(`aria-label`,`Doc`);let s=j(`span`,`doc-editor-status`);s.setAttribute(`role`,`status`);let c=Eh(`Edit`,`doc-editor-mode`),l=Eh(`Preview`,`doc-editor-mode`),u=Eh(`Reload`,`doc-editor-reload`),d=Eh(`Save`,`doc-editor-save`),f=Eh(`Close`,`doc-editor-close`),p=j(`div`,`doc-editor-modes`);p.append(c,l);let m=j(`div`,`doc-editor-actions`);m.append(s,u,d,f);let h=j(`div`,`doc-editor-header`);h.append(a,o,p,m);let g=j(`textarea`,`plan-editor doc-editor-text`);g.spellcheck=!0,g.setAttribute(`aria-labelledby`,i);let _=j(`div`,`doc-editor-preview`),v=j(`div`,`doc-editor-body`);v.append(g,_),r.dialog.append(h,v),$d(r.dialog,i);let y={sessionId:e,docPath:t.path,baseHash:null,hasUnsavedChanges:!1,isBusy:!1,mode:ih()?`preview`:`edit`,title:a,select:o,textarea:g,preview:_,status:s,btnEdit:c,btnPreview:l,btnReload:u,btnSave:d,close:()=>{fh=null,r.close()}};fh=y,g.addEventListener(`input`,()=>{y.hasUnsavedChanges||(y.hasUnsavedChanges=!0,vh(y,`Unsaved changes`),_h(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,xh(y,`Open another doc?`,()=>{Ch(y,e)})}),c.addEventListener(`click`,()=>Th(y,`edit`)),l.addEventListener(`click`,()=>Th(y,`preview`)),u.addEventListener(`click`,()=>{xh(y,`Reload this doc?`,()=>{Ch(y,y.docPath)})}),d.addEventListener(`click`,()=>{wh(y)}),f.addEventListener(`click`,n),Ch(y,t.path),y.mode===`edit`&&g.focus()}function Oh(e){fh&&fh.sessionId===e&&(gh(fh),_h(fh),!ph(e).some(e=>e.path===fh?.docPath)&&vh(fh,`This doc is no longer surfaced, so it cannot be saved.`,`warn`))}function kh(e){dh.set(e.id,e.docs),e.docs.length===0&&dh.delete(e.id),hh(e.id),Oh(e.id)}function Ah(e){let t=[...dh.keys()];dh.clear();for(let[t,n]of Object.entries(e.sessions))dh.set(t,n);for(let e of new Set([...t,...dh.keys()]))hh(e),Oh(e)}function jh({dialogClass:e,titleText:t,titleId:n,body:r,onCloseRequest:i}){let a=Qd({dialogClass:e,closeOnBackdrop:!1,onEscape:i}),o=j(`div`,`coherence-journal-header`),s=j(`h3`,`dialog-title`,t);s.id=n;let c=j(`button`,`btn-dialog btn-dialog-cancel`,`Close`);return c.type=`button`,o.append(s,c),a.dialog.append(o,...r),$d(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 Mh({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=md(e),m=jh({dialogClass:t,titleText:n,titleId:`${p}-title`,body:l,onCloseRequest:()=>h.close()}),h={sessionId:s,status:c,parts:u,requestId:p,timer:null,close:()=>{o(h),a===h&&(a=null),m.close()}};a=h,d?.(),m.focusClose(),K(f(p))?h.timer=setTimeout(()=>{h.requestId=null,h.timer=null,c.textContent=`${r}: request timed out`},i):(h.requestId=null,c.textContent=`${r}: not connected`)}function c(e){let t=a;return!t||t.sessionId!==e.id||t.requestId===null||t.requestId!==e.requestId?null:(o(t),t)}return{open:s,settleResponse:c,currentPanel:()=>a}}var Nh=2,Ph={needsYou:1,broken:2,askedOfYou:3,waiting:4,settled:5},Fh={danger:Ph.broken,warn:Ph.askedOfYou,wait:Ph.waiting,ok:Ph.settled,muted:Ph.settled};function Ih(e){return e?Fh[e]:Ph.settled}function Lh(e){let t=[...e].sort((e,t)=>e.tier-t.tier),n=t.slice(Nh);return{visible:t.slice(0,Nh),overflowCount:n.length,overflowHoverText:n.map(e=>`${e.text} ${e.hoverText}`).join(`
85
+ `)}}function Rh(e){return e.map(e=>[e.key,e.text,e.hoverText,e.look?.icon,e.look?.tone,e.tier].join(`|`)).join(`
86
+ `)}var zh={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 Bh(e){return e?.active!==!1||e.reason===ra.notInstalled?[]:[{key:`coherence-hooks`,text:`Hooks off`,hoverText:`Coherence hooks not active: ${e.reason}${e.version?` (${e.version})`:``}`,look:{icon:`failed`,tone:`danger`},tier:Ph.broken}]}function Vh(e){let t=Ni.safeParse(e.kind);return{heading:`${t.success?zh[t.data]:e.kind} | ${e.at??`Unknown time`} | ${e.id}`,text:e.text,detail:e.detail,supersedes:e.supersedes?`Supersedes: ${e.supersedes}`:null}}function Hh(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 Uh=new Map,Wh=new Map,Gh=Mh({requestPrefix:`coherence-journal`,dialogClass:`dialog coherence-journal-drawer`,titleText:`Coherence journal`,unavailableLabel:`Journal unavailable`,timeoutMs:5e3});function Kh(e,t){Wh.delete(e),t&&Wh.set(e,t),Qh(e)}function qh(e){Uh.delete(e),Wh.delete(e);let t=Gh.currentPanel();t?.sessionId===e&&t.close()}function Jh(e){let t=Uh.get(e.id);t&&t.updatedAt>e.updatedAt||(Uh.set(e.id,e),Qh(e.id))}function Yh(e){Uh.clear();for(let[t,n]of Object.entries(e.sessions))Uh.set(t,n);let t=Gh.currentPanel();t&&Qh(t.sessionId)}function Xh(e){return Bh(Wh.get(e)??null).map(t=>({...t,onActivate:()=>$h(e)}))}function Zh(e){return Uh.get(e)?.journal.ok===!0}function Qh(e){let t=Gh.currentPanel();if(!t||t.sessionId!==e)return;let n=Hh(Wh.get(e)??null,Uh.get(e)??null);t.parts.reading.replaceChildren(...n.lines.map(e=>j(`p`,null,e)))}function $h(e){let t=j(`div`,`coherence-journal-reading`),n=j(`p`,`coherence-journal-status`,`Loading journal`);n.setAttribute(`role`,`status`);let r=j(`div`,`coherence-journal-entries`);Gh.open({sessionId:e,status:n,body:[t,n,r],parts:{reading:t,entries:r},paintBeforeRequest:()=>Qh(e),buildRequest:t=>({type:`session-coherence-journal`,id:e,requestId:t})})}function eg(e){let t=Gh.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=Vh(e),n=j(`article`,`coherence-journal-entry`);return n.append(j(`h4`,null,t.heading),j(`p`,null,t.text)),t.detail&&n.append(j(`p`,null,t.detail)),t.supersedes&&n.append(j(`p`,null,t.supersedes)),n}))):t.status.textContent=`Journal unavailable: ${e.error||`could not read journal`}`)}var tg=/\bElectron\/\d/,ng=new Set([`localhost`,`127.0.0.1`]);function rg(e){return tg.test(e)}function ig({userAgent:e,pageHostname:t}){return rg(e)&&ng.has(t)}function ag(e){return _m(e)!==null}var og=new Set([0,1]);function sg({button:e,opensInNewTab:t}){return t&&og.has(e)}function cg(){return ig({userAgent:navigator.userAgent,pageHostname:location.hostname})}function lg(e){window.open(e,`_blank`,`noopener,noreferrer`)}async function ug(e){try{let t=await al();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 dg(e){!cg()||!ag(e)?lg(e):ug(e).then(t=>{t||lg(e)})}function fg(e){if(e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;t instanceof HTMLAnchorElement&&sg({button:e.button,opensInNewTab:t.target===`_blank`})&&ag(t.href)&&(e.preventDefault(),dg(t.href))}function pg(e){cg()&&(e.addEventListener(`click`,fg,!0),e.addEventListener(`auxclick`,fg,!0))}var mg=new Map([[`plan`,`Plan ready`],[`permission`,`Needs permission`]]);function hg(e){return mg.get(e)??`Needs input`}function gg({hasPlan:e,pendingPromptKind:t,hasOpenReview:n,hasApprovedReview:r=!1}){return e&&(n||t===`plan`&&!r)?`plan`:`terminal`}function _g({hasPlan:e,isBorrowed:t,face:n}){return!e||n===`plan`?`hidden`:t?`face`:`navigate`}var vg=new Map(Object.entries({WAITING:`now`,COMPLETE:`later`,FAILED:`resting`,IDLE:`resting`,RUNNING:`resting`,STARTING:`resting`,INITIALIZING:`resting`,DORMANT:`resting`,DONE:`resting`}));function yg(e){return(typeof e.state==`string`?vg.get(e.state):void 0)??`resting`}function bg(e,t){return[...e].map(([e,n])=>{let r=n.currentState||A.DORMANT;return{id:e,ui:n,name:t(n),isDormant:r===A.DORMANT,state:r,unseenOutcome:n.unseenOutcome??null,ownerId:n.ownerId??null}})}function xg(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 Sg(e){return xg([...e].sort((e,t)=>Number(e.isDormant===!0)-Number(t.isDormant===!0)))}function Cg({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 Tg(e,t){return t!==null&&e.includes(t)?t:e[0]??null}var Eg=new Map([[A.FAILED,`Failed`],[A.COMPLETE,`Finished`]]);function Dg(e,t){return Eg.get(e)??hg(t??``)}function Og(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 kg({state:e,unseenOutcome:t}){if(e===A.WAITING)return`waiting`;let n=qi.safeParse(t);return n.success?n.data:null}function Ag(e={}){let t=kg(e);return t!==null&&t!==`waiting`}function jg(e={}){return kg(e)!==null}var Mg=new Map([[`waiting`,0],[`failed`,1],[`finished`,2]]);function Ng(e){let t=kg(e);return t===null?void 0:Mg.get(t)}function Pg(e){return e.filter(e=>Ng(e)!==void 0).sort((e,t)=>(Ng(e)??0)-(Ng(t)??0)).map(({id:e})=>e)}function Fg(e){let t={waitingCount:0,finishedCount:0,failedCount:0};for(let n of e||[]){let e=kg(n||{});e===`waiting`&&t.waitingCount++,e===`failed`&&t.failedCount++,e===`finished`&&t.finishedCount++}return t}function Ig({waitingCount:e,finishedCount:t,failedCount:n}){return e+n+t}function Lg({waitingCount:e,failedCount:t}){return e+t}function Rg(e){return Ig(e)>0}function zg({waitingCount:e,finishedCount:t,failedCount:n}){let r=[];return e===1&&r.push(`1 NEEDS YOU`),e>1&&r.push(`${e} NEED YOU`),n>0&&r.push(`${n} FAILED`),t>0&&r.push(`${t} FINISHED`),r.length===0?`ALL CLEAR`:r.join(`, `)}var Bg=new Map([[`hand`,2]]),Vg=1;function Hg(e){return e?typeof e==`string`&&Bg.get(e)||Vg:0}function Ug(e){let t=!1,n=0;for(let r of e||[]){let e=Hg(r);e<=n||(t=typeof r!=`string`||r,n=e)}return t}var Wg=`#c084fc`,Gg=Object.freeze({failed:{icon:tr[A.FAILED],color:`#ef4444`},waiting:{icon:tr[A.WAITING],color:`#f59e0b`}});function Kg(e){let{waitingCount:t,failedCount:n}=Fg(Array.isArray(e)?e:[]);return t>0?`waiting`:n>0?`failed`:`idle`}function qg(e){return ar[e].map(({tag:e,attributes:t})=>`<${e} ${Object.entries(t).map(([e,t])=>`${e}="${t}"`).join(` `)}/>`).join(``)}function Jg(e){if(e===`idle`)return`<path d="M10 8 L22 16 L10 24Z" fill="${Wg}"/>`;let{icon:t,color:n}=Gg[e];return`<g color="${n}" transform="translate(4 4) scale(1.5)">${qg(t)}</g>`}function Yg(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"/>${Jg(e)}</svg>`}function Xg(){let e=document.querySelector(`link[rel="icon"]`);if(e instanceof HTMLLinkElement)return e;let t=document.createElement(`link`);return t.rel=`icon`,t.type=`image/svg+xml`,document.head.append(t),t}var Zg=Xg(),Qg=`idle`;function $g(e){let t=Kg([...e.values()].map(({currentState:e,unseenOutcome:t})=>({state:e,unseenOutcome:t})));t!==Qg&&(Qg=t,Zg.href=`data:image/svg+xml,${encodeURIComponent(Yg(t))}`)}function e_(e,t){return Number.isFinite(e)?Math.round(Math.min(t.maxPx,Math.max(t.minPx,e))):null}function t_(e,t){return e===`ArrowRight`?t:e===`ArrowLeft`?-t:null}function n_({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=e_(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=t_(e.key,a);if(n===null)return;e.preventDefault();let r=u(t.getBoundingClientRect().width+l*n);r!==null&&s(r)})}function r_(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function i_(e,t,n){let r=j(`button`,`popup-menu-item ${n}`);return r.type=`button`,r.setAttribute(`role`,`menuitem`),r.setAttribute(`aria-label`,e),r.append(j(`span`,`popup-menu-item-label`,e),j(`span`,`popup-menu-item-hint`,t)),r}function a_(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 s_=`http://www.w3.org/2000/svg`;function c_(e,t){let n=document.createElementNS(s_,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function l_(e,t){let n=document.createElementNS(s_,`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 u_=`M4 4L12 12M12 4L4 12`,d_=`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`,f_=`M3 4h10M3 8h10M3 12h10`,p_=`M3 8h0.01M8 8h0.01M13 8h0.01`,m_=`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 h_(e){let t=l_(16,16);return t.classList.add(`line-icon`),t.append(c_(`path`,{d:e,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),t}var g_=new WeakMap;function __(e){let t=g_.get(e);if(t?.element.parentElement===e.card)return t;let n=t??Ed(`session-action-status m-0 px-3 py-1`);return e.termWrap.before(n.element),g_.set(e,n),n}function v_(e,t){let n=__(e);return Dd(t,n)?(n.clear(),!0):!1}var y_=!1,b_=new Set;function x_(e){y_=!!e,ev();for(let e of b_)e(y_)}function S_(e){return b_.add(e),()=>b_.delete(e)}function C_(){return y_}var w_=null;function T_(e){w_=e}var E_=null;function D_(e){E_=e}var O_=null;function k_(e){O_=e}var A_=[{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 j_({cls:e,text:t=``,title:n,ariaLabel:r,ariaHidden:i}){let a=j(`span`,e,t);return n&&(a.title=n),r&&a.setAttribute(`aria-label`,r),i&&a.setAttribute(`aria-hidden`,`true`),a}function M_(e){return`Runs in Coder workspace ${e}`}function N_(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 P_(e,t){t&&(e.dataset.saneYolo=``),t||delete e.dataset.saneYolo;let n=e.querySelector(`.perms-badge`);n&&N_(n,t)}function F_(e,t){let n=F(e);n&&P_(n.card,t)}function I_(e,t,n,r={}){let i=n||A.INITIALIZING,a=j(`div`,`session-card`);a.dataset.id=e,a.dataset.session=t,a.dataset.state=i,r.skipPerms&&(a.dataset.skipPerms=``),r.saneYolo&&(a.dataset.saneYolo=``),r.worktree&&(a.dataset.worktree=``),r.workspace&&(a.dataset.workspace=``),r.remoteWorkspace&&(a.dataset.remoteWorkspace=r.remoteWorkspace),r.guarded&&(a.dataset.guarded=``),r.guardrailsReleased&&(a.dataset.guardrailsReleased=``),r.ephemeral&&(a.dataset.ephemeral=``),r.path&&(a.dataset.path=String(r.path));let o=j(`div`,`session-card-header`),s=j(`span`,`session-name`,t);s.title=`Double-click or press F2 to rename`,s.tabIndex=0;let c=r.skipPerms?j(`span`,`perms-badge`):null;c&&N_(c,r.saneYolo===!0);let l=j(`span`,`session-task-title`);V_(l,r.taskTitle);let u=j(`div`,`session-actions`),d=j(`div`,`session-overflow`),f=j(`button`,`btn-action btn-session-menu visible`);f.append(h_(p_)),f.type=`button`,f.title=`Session actions`,f.setAttribute(`aria-label`,`Session actions`),f.setAttribute(`aria-haspopup`,`menu`),f.setAttribute(`aria-expanded`,`false`);let p=j(`div`,`popup-menu session-overflow-menu`);p.id=`session-menu-${e}`,p.setAttribute(`role`,`menu`),f.setAttribute(`aria-controls`,p.id);let m=i_(`Restart`,`Keeps this conversation`,`overflow-restart`),h=i_(`Restart fresh`,`Ends this conversation and starts a new one`,`overflow-restart-fresh`),g=i_(`Resume conversation...`,`Pick an earlier conversation`,`overflow-resume`),_=i_(`Edit repositories...`,`Add or remove repositories in this workspace`,`overflow-workspace-repos`),v=i_(`Link pull request...`,`Link or unlink pull requests for this session`,`overflow-link-pr visible`),y=i_(`Conversation view`,`Show this session as messages (experimental)`,`overflow-conversation-view`);y.setAttribute(`role`,`menuitemcheckbox`),y.setAttribute(`aria-checked`,`false`);let b=i_(`Guardrails`,`Limit what this session can read, write and reach`,`overflow-guardrails`);b.setAttribute(`role`,`menuitemcheckbox`),L_(b,a),v.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),R_(e)};let x=i_(`Coherence journal`,`Decisions and notes this session recorded`,`overflow-coherence-journal`);x.setAttribute(`aria-haspopup`,`dialog`);let S=()=>x.classList.toggle(`visible`,E_?.isReadable(e)===!0);f.onclick=S,f.onkeydown=S,x.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),E_?.open(e)};let ee=i_(`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`),O_?.(e)},p.append(m,h,g,_,y,b,x,ee,v),d.append(f,p);let te=j(`button`,`btn-action btn-debug`);te.append(h_(d_)),te.title=`Debug state`,te.setAttribute(`aria-label`,`Debug session state`);let ne=j(`button`,`btn-action btn-trace`);ne.append(h_(f_)),ne.type=`button`,ne.title=`Trace`,ne.setAttribute(`aria-label`,`Trace`);let re=j(`button`,`btn-action btn-remove visible`);re.append(h_(u_)),re.type=`button`,re.title=`Remove session`,re.setAttribute(`aria-label`,`Remove session`);let C=j(`button`,`btn-action btn-face-plan`,`Plan`);C.type=`button`,C.title=`Show plan`;let ie=j(`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=j(`div`,`session-card-tags`),oe=A_.map(e=>j_(e.cls===`cloud-badge`&&r.remoteWorkspace?{...e,title:M_(r.remoteWorkspace)}:e));c&&oe.push(c),ae.append(...oe);let se=j(`span`,`session-ownership`);se.hidden=!0,o.append(s,l,se,ae,u);let w=j(`div`,`terminal-wrap`);return a.append(o,w),{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:w}}function L_(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 R_(e){let{dialog:t,close:n,actions:r,btnCancel:i}=ef({title:`Link pull request`}),a=j(`p`,`dialog-message`,`Paste a GitHub pull request URL or owner/repo#number.`),o=j(`input`,`dialog-input`);o.type=`text`,o.placeholder=`owner/repo#123`,o.autocomplete=`off`,o.spellcheck=!1,o.setAttribute(`aria-label`,`Pull request URL or owner/repo#number`);let s=j(`div`,`dialog-error`);s.setAttribute(`role`,`alert`);let c=j(`div`,`session-pr-chips dialog-linked-prs`);c.hidden=!0,w_?.(c,e);let l=j(`button`,`btn-dialog btn-dialog-confirm`,`Link`);l.type=`button`,r.append(l),t.append(c,a,o,s,r);function u(){let t=oo(o.value);t?K({type:`link-session-pr`,id:e,key:t})?n():s.textContent=G:s.textContent=`Enter a github.com pull request URL or owner/repo#number.`}i.addEventListener(`click`,n),l.addEventListener(`click`,u),o.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),u())}),requestAnimationFrame(()=>o.focus())}function z_(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 B_(e,t){let n=e.querySelector(`.session-ownership`);n&&(n.textContent=t??``,n.hidden=t===null)}function V_(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 H_(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&&v_(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),V_(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 U_=`session-rename-input`;function W_(e){return!!e?.querySelector(`.${U_}`)}function G_(e,t,{returnsFocusToTerminal:n=!0}={}){let r=e.renameTargetEl?.isConnected?e.renameTargetEl:e.nameEl;if(!r||W_(r))return;let i=e.card?.dataset.session??r.textContent??``,a=document.createElement(`input`);a.type=`text`,a.className=U_,a.value=i,a.maxLength=64,r.textContent=``,r.appendChild(a),a.focus(),a.select();let o=__(e);function s(t){return e.card.dataset.ephemeral===void 0?Hi.test(t)?[...P.values()].some(n=>n!==e&&n.card.dataset.session===t)?`Session "${t}" already exists.`:``:Ui:`This session cannot be renamed`}function c(t=e.card?.dataset.session??i){r.textContent=t,e.nameEl&&e.nameEl!==r&&(e.nameEl.textContent=t),n&&e.term?.focus()}function l(){let e=a.value.trim(),t=e&&e!==i?s(e):``;t?(o.show(`error`,t),a.select()):u()}function u(){let n=a.value.trim();if(f(),!n||n===i){c();return}let r=s(n);r?(o.show(`error`,r),c()):v_(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 K_(){let e=j(`button`,`debug-close`);return e.type=`button`,e.title=`Close`,e.setAttribute(`aria-label`,`Close debug overlay`),e.append(h_(u_)),e}function q_(e){return e?Tl(new Date(e)):`-`}function J_(e){return`${(Number(e||0)/1e3).toFixed(1)}s`}function Y_(e){return e.decision===`gated`?`(${Number(e.active)||0} bg)`:e.decision===`wait`||e.decision===`release`?`(quiet ${J_(e.quietMs)})`:``}function X_(e){let t=`<span class="debug-dim">${q_(e.ts)}</span>`;if(e.kind===`signal`){let n=r_([e.signal,e.source].filter(Boolean).join(`/`));return e.action===`transition`?`${t} ${n} → <span class="debug-label">${r_(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=Y_(e),i=r?` <span class="debug-dim">${r}</span>`:``;return`${t} gate <span class="debug-label">${r_(e.decision||`?`)}</span>${i}${n}`}if(e.kind===`notify`){let n=r_(e.category||e.to||`?`);return e.category?`${t} notify <span class="debug-label">${n}</span>: fired`:`${t} notify ${n}: <span class="debug-dim">silent (${r_(e.reason||``)})</span>`}return e.kind===`notify-state`?`${t} notify ${r_(e.category||`?`)}: <span class="debug-dim">${r_(e.from||`?`)} → ${r_(e.to||`?`)}</span>`:`${t} <span class="debug-dim">${r_(e.kind||`decision`)}</span>`}function Z_(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">${r_(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">${r_(n.join(`/`))}</span>`:``;r+=`<div class="debug-field"><span class="debug-dim">${q_(e.timestamp)}</span> ${r_(e.from)} → ${r_(e.to)} <span class="debug-label">${r_(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?`${r_(a.signal)} (${r_(a.source||`?`)}${a.confidence?`/${r_(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">${r_(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 ${J_(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">${r_(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">${X_(e)}</div>`;r+=`</div>`,e.debugOverlay.innerHTML=r,e.debugOverlay.prepend(K_())}function Q_(e,t){if(e.debugOpen){$_(e);return}let n=document.createElement(`div`);n.className=`debug-overlay`,n.innerHTML=`<div class="debug-field debug-dim">Loading...</div>`,n.prepend(K_()),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`)&&$_(e)}),K({type:`debug-state`,id:t})}function $_(e){e.debugOverlay&&=(e.debugOverlay.remove(),null),e.debugOpen=!1}function ev(){for(let[,e]of P)e.btnDebug.classList.toggle(`visible`,y_),e.btnTrace.classList.toggle(`visible`,y_),!y_&&e.debugOpen&&$_(e)}function tv(e){let t=typeof e.id==`string`?P.get(e.id):void 0;t?.debugOpen&&Z_(t,e.payload)}function nv(e){F(e)?.debugOpen&&K({type:`debug-state`,id:e})}function rv(e){let t=l_(16,16);t.classList.add(`status-icon`),t.dataset.icon=e;for(let n of ar[e])t.append(c_(n.tag,n.attributes));return t}function iv(e,t){e.dataset.icon!==t&&(e.dataset.icon=t,e.replaceChildren(rv(t)))}var av={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 ov(e,t){let n=l_(16,16);return n.classList.add(`pr-status-icon`),t&&(n.dataset.tone=t),n.append(c_(`path`,{d:av[e],fill:`currentColor`})),n}function sv(e,{className:t=``,linkUrl:n,ariaLabel:r,onActivate:i}={}){let a=`signal ${t}`.trim(),o=n?fr(a,``,n,e.hoverText):j(`span`,a);return o.title=e.hoverText,r&&o.setAttribute(`aria-label`,r),e.look&&(o.dataset.tone=e.look.tone,o.append(ov(e.look.icon,e.look.tone))),o.append(e.text),i&&cv(o,i,!n),o}function cv(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 lv(e){e.removeAttribute(`tabindex`),e.removeAttribute(`role`)}function uv(e,t){if(e.closest(`button, a[href]`))for(let e of t){lv(e);for(let t of e.querySelectorAll(`[role="button"]`))lv(t)}}function dv(e){if(e.overflowCount===0)return null;let t=j(`span`,`signal-overflow`,`+${e.overflowCount}`);return t.title=e.overflowHoverText,t}function fv(e,t,n=e=>sv(e,e)){let r=Rh(t);if(e.dataset.signalSignature===r)return;e.dataset.signalSignature=r;let i=Lh(t),a=i.visible.map(n),o=dv(i);o&&a.push(o),uv(e,a),e.hidden=a.length===0,e.replaceChildren(...a)}var pv=[],mv=`plan`,hv={parked:{text:`PARKED`,hoverText:`Merge parked`,look:{icon:`failed`,tone:`danger`},tier:Ph.broken},merging:{text:`MERGING`,hoverText:`Merging`,look:{icon:`queued`,tone:`wait`},tier:Ph.waiting}};function gv(e){pv.push(e)}function _v(e){let t=hv[e];return t?[{...t,key:`merge`}]:[]}function vv(e){let t=e.closest(`.session-row`),n=t?.dataset.id;t&&n&&fv(e,[..._v(t.dataset.merge??``),...pv.flatMap(e=>e(n))])}function yv(){for(let e of document.querySelectorAll(`.session-row-signals`))vv(e)}function bv(e,t=``){let n=j(e,`session-row ${t}`.trim());return n.innerHTML=`<span class="session-row-glyph" aria-hidden="true"></span><span class="session-row-main"><span class="session-row-title"><span class="session-row-name"></span><span class="session-row-cloud" hidden></span></span><span class="session-row-task" hidden></span><span class="session-row-ownership" hidden></span><span class="session-row-meta"><span class="session-row-label"></span><span class="session-row-signals" hidden></span></span></span><span class="session-row-elapsed" aria-hidden="true"></span>`,{row:n,refs:{glyph:N(n,`.session-row-glyph`),label:N(n,`.session-row-label`),ownership:N(n,`.session-row-ownership`),name:N(n,`.session-row-name`),cloud:N(n,`.session-row-cloud`),task:N(n,`.session-row-task`),signals:N(n,`.session-row-signals`),elapsed:N(n,`.session-row-elapsed`)}}}function xv(e,t){let n=j(`div`,`session-row-item`),r=j(`button`,`session-row-remove`);return r.append(h_(u_)),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 Sv(e,t,n,r=!1,i=null){e.dataset.state=n,e.dataset.prompt=i??``;let{icon:a,label:o,isMonitoring:s}=mr(n,r),c=i===mv?`Plan ready`:o;return e.toggleAttribute(`data-monitoring`,s),iv(t.glyph,a),t.label.textContent=c,c}function Cv(e,t){return e.hidden=!t,t?(e.title=M_(t),e.firstChild||e.append(h_(m_)),e.title):null}function wv(e){let t=e.ownerId?P.get(e.ownerId):void 0,n=t?Cr(t):null,r=e.card.dataset.id,i=[...P.values()].filter(e=>e.ownerId===r).length;return Cg({ownerName:n,ownedCount:i})}function Tv(e,t,n){let r=wv(n);return t.ownership.textContent=r??``,t.ownership.hidden=r===null,e.closest(`.session-row-item`)?.toggleAttribute(`data-owned`,n.ownerId!==null&&P.has(n.ownerId)),B_(n.card,r),r}function Ev(e,t,{ui:n,state:r,name:i,mergeStatus:a}){let o=Sv(e,t,r,n.awaitingBackgroundTasks,n.pendingPromptKind);t.name.textContent=i;let s=Cv(t.cloud,n.card.dataset.remoteWorkspace);t.task.textContent=n.taskTitle,t.task.hidden=!n.taskTitle||n.taskTitle===i,e.dataset.merge=a,vv(t.signals),e.dataset.activity=n._activity||``,t.elapsed.textContent=Df(n);let c=Tv(e,t,n),l=[i,s,n.taskTitle,o,c].filter(Boolean).join(`, `);return e.setAttribute(`aria-label`,l),e.title=l,o}var Dv={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.`}},Ov=(e,t,n=!1)=>({state:e,awaitingBackgroundTasks:n,label:n?`Monitoring`:Xn[e],meaning:t}),kv=Object.freeze([Ov(A.DORMANT,`Not started yet.`),Ov(A.STARTING,`Setting up the worktree and booting the agent.`),Ov(A.RUNNING,`The agent is mid-turn.`),Ov(A.RUNNING,`The turn ended but background tasks or sub-agents are still running.`,!0),Ov(A.WAITING,`Waiting on a permission prompt or your answer.`),Ov(A.COMPLETE,`Finished a turn you have not looked at yet.`),Ov(A.IDLE,`Ready for the next prompt.`),Ov(A.DONE,`The agent process ended.`),Ov(A.FAILED,`The agent failed to start or crashed. A red line above the terminal says why it could not start; its terminal output shows a crash.`)]);function Av(e,t){let n=j(`section`,`status-legend`),r=j(`dl`,`status-legend-rows`);return r.append(...t),n.append(j(`h2`,`status-legend-title`,e),r),n}function jv(e,t){let n=j(`div`,`status-legend-row`);return n.append(e,j(`dd`,`status-legend-meaning`,t)),n}function Mv(){return Av(`Status colors`,kv.map(e=>{let t=j(`dt`,`status-legend-badge`),n=j(`span`,`status-legend-glyph`),r=j(`span`,`status-legend-name`);n.setAttribute(`aria-hidden`,`true`),t.append(n,r);let i=jv(t,e.meaning);return Sv(i,{glyph:n,label:r},e.state,e.awaitingBackgroundTasks),i}))}function ree(){return Av(`Pull request icons`,Object.keys(Dv).map(e=>{let t=Dv[e],n=j(`dt`,`status-legend-badge`);return n.append(ov(e),j(`span`,`status-legend-name`,t.label)),jv(n,t.meaning)}))}var Nv=new Set(dc());function Pv(){fc([...Nv])}function Fv(e){if(!e)return;let t=String(e);Nv.has(t)||(Nv.add(t),Pv())}function Iv(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),Fv(i)}return[...Nv].filter(e=>!n.has(e))}function Lv(e){return!e||!Nv.delete(String(e))?!1:(Pv(),!0)}function Rv(e,t=`explicit-state`){let n=t===`dormant-fallback`?e||A.DORMANT:e;return n===A.DORMANT?`start-session`:n===A.COMPLETE?`dismiss`:null}function zv({previousState:e,nextState:t,isPhoneLayout:n,isDocumentVisible:r,isDocumentFocused:i,isActiveViewer:a,hasFocusInsideTerminal:o}){return t!==A.COMPLETE||!e||e===A.COMPLETE||!r?!1:n?a:i&&o}function Bv(e,t){if(!e)return null;let n=t.get(e);return!n||(n.currentState||A.DORMANT)===A.DORMANT?null:e}function Vv(){return Ar.snapshot().selectedSessionId}function Hv(e){Ar.dispatch(`selectSession`,e)}function Uv(e){return Ar.subscribe((t,n)=>{n.includes(`selectedSessionId`)&&e(t.selectedSessionId)})}function Wv(e,t=`explicit-state`){let n=P.get(e);if(!n)return null;let r=Rv(n.currentState,t);return r&&v_(n,{type:r,id:e}),n}function Gv(e,{rememberFocus:t=!0}={}){Hv(e),t&&kc(e)}function Kv(){return Bv(Oc(),P)}function qv(e=Cr){return bg([...P],e)}function Jv(e,t){let n=P.get(e);return n?v_(n,t):K(t)?!0:(jd(G),!1)}async function Yv(e,t){try{let n=mf(t),r=await hd(`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`){Zf({name:n,path:e});return}jd(Yf(r))}catch(e){jd(`The session was not added: ${Od(e,q)}`)}}function Xv(e,t){e&&Yv(e,t)}function Zv(e,t){let n=P.get(e);if(!n)return;let r=t||n.card?.dataset.merge||`none`,i=r===`pending-review`||r===`parked`;tf({title:`Remove Session`,message:i?`"${Cr(n)}" has unmerged worktree changes that will be permanently discarded if you remove it. Merge or review them first to keep them. Remove anyway?`:`Remove session "${Cr(n)}"?`,confirmLabel:i?`Discard & Remove`:`Remove`,danger:!0,onConfirm:()=>{v_(n,{type:`remove-session`,id:e})}})}var Qv=Object.freeze({[A.IDLE]:`compaction_restore_idle`,[A.COMPLETE]:`compaction_restore_complete`,[A.WAITING]:`compaction_restore_waiting`});function $v(e){return Object.values(Qv).some(t=>t===e)}var ey=new Set([`claude-code`,`codex`]),ty=`\x1B`,ny=`${ty}[200~`,ry=`${ty}[201~`,iy=400,ay=4e3,oy=/^\[Image: source: (.+)\]$/,sy=`uploads`,cy=new Set([`Agent`,`Task`]),ly=/^Async agent launched/,uy=`<task-notification>`,dy=/<tool-use-id>([^<]+)<\/tool-use-id>/,fy=/<task-id>([^<]+)<\/task-id>/,py=/agentId: ([\w-]+)/,my=/<status>([^<]+)<\/status>/,hy=6e5;function gy(e){return typeof e==`string`&&ey.has(e)}function _y(e,t){if(!gy(e))return null;let n=t.replace(/\r\n?/g,`
87
+ `).trim();return n?[{data:n.includes(`
88
+ `)?`${ny}${n}${ry}`:n,delayBeforeMs:0},{data:`\r`,delayBeforeMs:iy}]:null}function vy(e){return gy(e)?[{data:`\r`,delayBeforeMs:0}]:null}function yy(e){return gy(e)?[{data:ty,delayBeforeMs:0}]:null}function by(e,t){return e===A.WAITING&&typeof t==`string`&&t!==``}function xy(e,t){return e.uuid??`${e.kind}-${e.ts}-${t}`}function Sy(e){return typeof e.agentId==`string`}function Cy(e){let t=oy.exec(e.trim());if(!t)return null;let[n,r,i]=t[1].split(/[\\/]/).slice(-3);return n!==sy||!r||!i?null:`/upload/${encodeURIComponent(r)}/${encodeURIComponent(i)}`}function wy(e,t){let n=e[e.length-1];n?.kind===`user`&&n.imageUrls.push(t)}function Ty(e){if(!e||typeof e!=`object`)return`Agent`;let t=e.description;return typeof t==`string`&&t.trim()?t.trim():`Agent`}function Ey(e,t,n){if(!e)return;if(t.isError){e.state=`failed`;return}if(!ly.test(t.content)){e.state=`done`;return}let r=py.exec(t.content)?.[1];r&&n.set(r,e)}function Dy(e){return e.trimStart().startsWith(uy)}function Oy(e,t,n){let r=dy.exec(e)?.[1];if(r)return t.get(r);let i=fy.exec(e)?.[1];return i?n.get(i):void 0}function ky(e,t,n){let r=Oy(e,t,n);r?.state===`running`&&(r.state=my.exec(e)?.[1]===`completed`?`done`:`failed`)}function Ay(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=xy(e,o);if(!Sy(e)){if((e.kind===`prompt`||e.kind===`expansion`)&&Dy(e.text))ky(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=Cy(n);e&&wy(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),!cy.has(e.name))return;let o={key:l,description:Ty(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),Ey(i.get(e.toolUseId),e,a)}}}),s(),t}function jy(e){return e.flatMap(e=>e.kind===`work`?e.agentRuns.filter(e=>e.state===`running`):[])}function My(e){let t=e.at(-1);return t?.kind===`work`?t:null}function Ny(e){return new Set(e.flatMap(e=>e.kind===`user`?[e.key]:[]))}function Py(e,t,n){if(n-e.sentAt>hy)return!0;let r=e.text.trim();return t.some(t=>t.kind===`user`&&!e.userKeysAtSend.has(t.key)&&t.text.includes(r))}function Fy(e){return`${e} ${e===1?`agent`:`agents`}`}function Iy(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 Ly(e){let t=e.agentRuns.length>0?`, ${Fy(e.agentRuns.length)}`:``;return`Worked ${Iy(e.endedAt-e.startedAt)}${t}`}function Ry(e,t){let n=t>0?`${Fy(t)} running`:``;return e===null?n:n?`Working ${Iy(e)}, ${n}`:`Working ${Iy(e)}`}function zy(e){return e.length<=ay?e:e.slice(e.length-ay)}var By=`(max-width: 768px)`,Vy=`(pointer: coarse)`;function Hy({coarse:e,narrowWidth:t}={}){return e===!0&&t===!0?`phone`:`desktop`}var Uy=window.matchMedia?.(Vy),Wy=window.matchMedia?.(By);function Gy(){return Hy({coarse:!!Uy?.matches,narrowWidth:!!Wy?.matches})}function Ky(e){document.documentElement.dataset.layout!==e&&(document.documentElement.dataset.layout=e)}function qy(){Ar.subscribe((e,t)=>{t.includes(`layout`)&&Ky(e.layout)});let e=Gy();Ky(e),Ar.dispatch(`setLayout`,e);let t=()=>Ar.dispatch(`setLayout`,Gy());return Uy?.addEventListener?.(`change`,t),Wy?.addEventListener?.(`change`,t),e}function Jy(){return Ar.snapshot().layout===`phone`}function Yy(e){return Ar.subscribe((t,n)=>{n.includes(`layout`)&&e(t.layout)})}var Xy=`CommitMono`,Zy=[400,700].map(e=>`${e} 14px ${Xy}`),Qy=`monospace`;function $y(e){return e.trim().replace(/^['"]|['"]$/g,``)}function eb(e,t){let n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),r=t?n:n.filter(e=>$y(e)!==Xy);return r.length>0?r.join(`, `):Qy}function tb(e,t,n){return Promise.all(t.map(t=>e.load(t))).then(n,()=>void 0)}function nb(e,t){for(let n of e)n.term&&(n.term.options.fontFamily=t,n._syncGrid?.())}function rb(){return document.fonts?Zy.every(e=>document.fonts.check(e)):!1}function ib(){return eb(getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`),rb())}function ab(e){document.fonts&&tb(document.fonts,Zy,e)}var ob=6,sb=262144,cb=16384,lb=()=>{};function ub(e,t){if(t.length<=cb)e.push(t);else for(let n=0;n<t.length;n+=cb)e.push(t.slice(n,n+cb))}function db({budget:e=ob,maxChunkBytes:t=sb,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)ub(l,e),m+=e.length,a.readIdx++;else{m===0&&(ub(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,lb);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 fb=db(),pb=.3,mb=null;function hb(){return bs(mb)}function gb(e){return xs(e,mb)}async function _b(){try{let e=await fetch(ms,{credentials:`same-origin`,cache:`no-store`});e.ok&&(mb=Ss(await e.json()))}catch{}}function vb(){let e=new AudioContext;return e.state===`suspended`&&e.resume(),e}function yb(e,t){setTimeout(()=>e.close().catch(()=>{}),(t+.1)*1e3)}function bb(e){xb(hs[e]??hs.chime)}function xb(e){let t=vb(),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)}yb(t,i)}async function Sb(e){try{let t=await fetch(vs(e),{credentials:`same-origin`});return t.ok?await t.arrayBuffer():null}catch{return null}}async function Cb(e){let t=await Sb(e);if(!t)return!1;let n=vb();try{let e=await n.decodeAudioData(t),r=n.createGain();r.gain.value=pb,r.connect(n.destination);let i=n.createBufferSource();return i.buffer=e,i.connect(r),i.start(),yb(n,e.duration),!0}catch{return n.close().catch(()=>{}),!1}}var wb=[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 Tb(){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<wb.length;i++){let a=r+i*n,o=e.createOscillator(),s=e.createGain();o.type=`square`,o.frequency.value=wb[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+wb.length*n;t.gain.setValueAtTime(.05,i-.05),t.gain.exponentialRampToValueAtTime(.001,i),setTimeout(()=>e.close().catch(()=>{}),(i-r+.1)*1e3)}catch{}}function Eb(){try{bb(fs)}catch{}}function Db(e){try{let t=gb(e),n=ys(t);if(!n){bb(t);return}Cb(n).then(e=>{e||Eb()})}catch{}}var Ob={"--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)`},kb={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`},Ab={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`,...Ob,"--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:{...kb,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`,...Ob,"--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:{...kb,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`,...Ob,"--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:{...kb,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`}}},jb=`phyrexian`,Mb=null;function Nb(e){let t=Ab[e];if(!t)return;let n=Mb;Mb=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`&&Tb()}function Pb(e){document.documentElement.toggleAttribute(`data-show-usage`,e)}function Fb(e){document.documentElement.toggleAttribute(`data-arrow-pad`,e)}function Ib(){let e=Ab[Mb||jb];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 Lb(){return Object.entries(Ab).map(([e,t])=>({id:e,label:t.label}))}var Rb=c().int().min(1).max(500),zb=c().int().min(1).max(200);d(`type`,[g({type:m(`input`),data:l()}),g({type:m(`claim`),cols:Rb,rows:zb}),g({type:m(`unview`)})]);var Bb=g({type:m(`pty-size`),cols:Rb,rows:zb,seq:c().int().nonnegative()}),Vb=`history`;u([`screen`,`deep`]);function Hb(e){try{return JSON.parse(e)}catch{return null}}function Ub(e){let t=Bb.safeParse(Hb(e));return t.success?t.data:null}function Wb(e,t){return!e||!t?!1:e.cols===t.cols&&e.rows===t.rows}function Gb(e){return!e||!Number.isInteger(e.cols)||!Number.isInteger(e.rows)?!1:e.cols>0&&e.rows>0}function Kb(e){return{cols:Math.min(Math.max(e.cols,1),500),rows:Math.min(Math.max(e.rows,1),200)}}function qb({authoritative:e,isActiveViewer:t,lastClaim:n}){return!(t&&Wb(e,n))}function Jb({isDocumentVisible:e,isDocumentFocused:t,hasFocusInsideCard:n,hasWindowBlurredSinceFocus:r,isPhoneLayout:i}){return e?i||t?!0:n&&!r:!1}function Yb({isDocumentVisible:e,isBorrowedCard:t,isTerminalFaceShown:n}){return!e||!t||!n}function Xb({viewportTopLine:e,scrollbackLineCount:t,isDeepHistoryLoadedOrPending:n}){return e===0&&t>0&&t<5e3&&!n}function Zb(e,t){let n=`/terminals/${encodeURIComponent(e)}`;return t?`${n}?${Vb}=deep`:n}function Qb({authoritative:e,isActiveViewer:t,isDocumentEngaged:n,isDataWsOpen:r,lastClaim:i}){return!t||!n||!r?`none`:qb({authoritative:e,isActiveViewer:t,lastClaim:i})?`rebid`:`resync`}function $b({isActiveViewer:e,lastClaim:t,owedClaim:n}){return e?n??t:null}function ex({authoritative:e,applied:t,proposal:n,isActiveViewer:r,isDataWsOpen:i,lastClaim:a}){let o=!!e&&!Wb(e,t),s=Gb(n)?Kb(n):null,c=r&&!!s&&!Wb(s,a);return{resizeTo:o?e:null,owedClaim:c?s:null,keepsPendingSettle:r&&!s,sendUnview:!r&&i&&!!a,isFollowing:qb({authoritative:e,isActiveViewer:r,lastClaim:a})}}function tx(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?new TextDecoder().decode(e):null}function nx(e){let t=tx(e);return t===null?null:Ub(t)}function rx(e,t){if(typeof e==`string`)return{kind:`bytes`,data:e};let n=nx(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 ix=``,ax=`\x1B`,ox=`\r`,sx=new Map([[`deleteContentBackward`,ix],[`deleteByComposition`,ix],[`deleteCompositionText`,ix],[`deleteWordBackward`,ax],[`deleteSoftLineBackward`,ax],[`deleteHardLineBackward`,ax]]);function cx(e){return sx.get(e)??``}var lx=new Set([`insertFromPaste`,`insertFromPasteAsQuotation`,`insertFromDrop`,`insertFromYank`,`historyUndo`,`historyRedo`]);function ux(e){return typeof e!=`string`||e===``||!lx.has(e)}function dx(e){return e?e.keyCode===229||e.key===`Process`:!1}function fx(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 ix.repeat(n.length-a)+r.slice(a).join(``).replace(/\r\n|\n|\r/g,ox)}var px=/https?:\/\/[^\s<>"']+/g,mx=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`'`,`"`]),hx={")":`(`,"]":`[`,"}":`{`};function gx(e,t){let n=0;for(let r of e)r===t&&n++;return n}function _x(e){for(;;){let t=e[e.length-1];if(t===void 0)return e;if(mx.has(t)){e=e.slice(0,-1);continue}let n=hx[t];if(n&&gx(e,n)<gx(e,t))e=e.slice(0,-1);else return e}}function vx(e){let t=[];for(let n of e.matchAll(px)){let e=_x(n[0]);e.length<=8||t.push({start:n.index,end:n.index+e.length,url:e})}return t}var yx=50;function bx(){return{activate(e,t){dg(t)},allowNonHttpProtocols:!1}}function xx(e,t){let n=t-1;for(;n>0&&e.getLine(n)?.isWrapped&&t-1-n<yx;)n--;let r=t-1;for(;e.getLine(r+1)?.isWrapped&&r-(t-1)<yx;)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 Sx(e){return e.registerLinkProvider({provideLinks(t,n){let r=e.buffer?.active;if(!r)return n(void 0);let{text:i,cellAt:a}=xx(r,t),o=[];for(let{start:e,end:t,url:n}of vx(i)){let r=a[e],i=a[t-1];r&&i&&o.push({range:{start:r,end:i},text:n,activate(e,t){dg(t)}})}n(o.length?o:void 0)}})}var Cx=`(?:password|passwd|pwd|token|api[_-]?key|secret|credential|auth[_-]?token|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|connection[_-]?string)`,wx=`(?:"[^"\\r\\n]*"|'[^'\\r\\n]*'|[^\\s\\r\\n]+)`,Tx=`[^\\S\\r\\n]`,Ex=`${Cx}${Tx}*(?:=>|[:=])${Tx}*`,Dx=`[?&][A-Za-z0-9_.-]*`,Ox=`[^\\r\\n;&|]{0,200}?`,kx=`(?:mysql|mysqldump|mysqladmin|mysqlshow|mariadb|mariadb-dump)`,Ax=RegExp(`(${Ex})${wx}`,`gi`),jx=RegExp(`(\\bBearer${Tx}+)[A-Za-z0-9._~+/=-]{8,}`,`gi`),Mx=[/\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],Nx=[RegExp(`((?:^|\\s)--?${Cx}${Tx}+)${wx}`,`gi`),RegExp(`((?:^|\\s)-(?:pwd|pw)(?![a-z])${Tx}*=?${Tx}*)${wx}`,`g`),RegExp(`(-AsPlainText${Tx}+)${wx}`,`gi`),RegExp(`((?:^|\\s)setx${Tx}+[^\\s\\r\\n]*${Cx}[^\\s\\r\\n]*${Tx}+)${wx}`,`gi`)],Px=[RegExp(`(\\bauthorization${Tx}*:${Tx}*Basic${Tx}+)[A-Za-z0-9+/=_-]{8,}`,`gi`),RegExp(`(\\bdocker${Tx}+login\\b${Ox}${Tx}-p(?:${Tx}+|=))${wx}`,`gi`),RegExp(`(\\bcurl\\b${Ox}${Tx}(?:--user|-u)(?:${Tx}+|=)[^\\s:\\r\\n]+:)${wx}`,`gi`),RegExp(`(\\b${kx}\\b${Ox}${Tx}-p)${wx}`,`g`),/\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)[^\s@/]+(?=@)/gi];[...Nx,...Px];var Fx=[/-----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],Ix=RegExp(`(${Dx}(?:${Cx}|_key)=)[^&#\\s]+`,`gi`),Lx=[Ax,RegExp(`(\\b(?=[A-Z0-9_]*(?:SECRET|TOKEN|KEY|PASSWORD))[A-Z][A-Z0-9_]*=)${wx}`,`g`)],Rx=[jx,...Nx,...Px,...Mx,...Fx];function zx(e,t){return[...e.matchAll(t)].map(e=>({matchStart:e.index,valueStart:e.index+(e[1]??``).length,end:e.index+e[0].length}))}function Bx(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 Vx(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 Hx(e){let t=zx(e,Ix);return Vx([...t,...Lx.flatMap(n=>Bx(zx(e,n),t)),...Rx.flatMap(t=>zx(e,t))].map(e=>({start:e.valueStart,end:e.end})))}var Ux=`#808080`,Wx=new WeakMap;function Gx(e,t,n){return`${e}:${t}:${n}`}function Kx(e){return Gx(e.marker.line,e.x,e.width)}function qx(e,t){let n=t;for(;n>0&&t-n<63&&e.getLine(n)?.isWrapped;)n--;return n}function Jx(e,t){let n=t;for(;n-t<63&&e.getLine(n+1)?.isWrapped;)n++;return n}function Yx(e,t,n){let r=``;for(let i=t;i<=n;i++)r+=e.getLine(i)?.translateToString(!1)??``;return r}function Xx(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 Zx(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 Qx(e,t,n,r){let i=[];if(Hx(Yx(e,t,n)).length===0)return i;let{text:a,cellAt:o}=Xx(e,t,n,r);for(let e of Hx(a))Zx(i,o.slice(e.start,e.end));return i}function $x(e,t){let n=e.getNullCell(),r=[],i=t;for(;i<e.length;){let t=Jx(e,i);r.push(...Qx(e,i,t,n)),i=t+1}return r}function eS(){return{masks:[],watermark:null,isFullRescanOwed:!0}}function tS(e){e.decoration.dispose(),e.marker.dispose()}function nS(e){for(let t of e.masks)tS(t);e.masks.length=0,e.watermark?.dispose(),e.watermark=null,e.isFullRescanOwed=!0}function rS(e,t){let n=e.watermark;return e.isFullRescanOwed||!n||n.isDisposed?0:Math.min(n.line,t.baseY)}function iS(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 aS(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(Kx(r),r),r=e.masks.at(-1);return iS(e),n}function oS(e,t){let n={normal:eS(),alternate:eS()},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??Ux,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(!ih())return;let t=e.buffer.active,r=n[t.type],i=qx(t,rS(r,t)),a=aS(r,i);for(let e of $x(t,i)){let n=Gx(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())tS(e);r.watermark?.dispose(),r.watermark=e.registerMarker(-t.cursorY)??null,r.isFullRescanOwed=!1}function u(){nS(n.normal),nS(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=>{nS(n.alternate),s(`normal`),e.type===`alternate`&&l()})],p=oh(d);t.addEventListener(`abort`,()=>{p();for(let e of f)e.dispose();u(),Wx.delete(e)},{once:!0}),Wx.set(e,d)}function sS(e){Wx.get(e)?.()}function cS({hasTerminal:e,isSocketOpen:t,isInputHeld:n}){return e?n||!t?`connecting`:`live`:`none`}async function lS(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:(jd(await dS(r)),!1)}catch{return jd(`Upload failed`),!1}}async function uS(e,t){for(let n of t)await lS(e,n)}async function dS(e){try{let t=await e.json();if(t&&typeof t.error==`string`)return`Upload failed: ${t.error}`}catch{}return`Upload failed`}var fS=1.2,pS=.005;function mS(e,t){let n=Math.abs(t);return n<10?!1:n>Math.abs(e)*fS}function hS(e,t,n=1/0){if(!(t>0))return{scrollLines:0,remainderPx:e};let r=Math.trunc(e/t),i=Math.max(-n,Math.min(n,r));return{scrollLines:i===0?0:-i,remainderPx:e-i*t}}function gS(e,t,n){let r=e.length>=4?e.slice(1):e.slice();return r.push({positionPx:t,timestampMs:n}),r}function _S(e){if(!e||e.length<2)return 0;let t=e[0],n=e[e.length-1],r=n.timestampMs-t.timestampMs;if(!(r>0))return 0;let i=(n.positionPx-t.positionPx)/r,a=Math.abs(i);if(!(a>=.08))return 0;let o=Math.min(a,5);return i<0?-o:o}function vS({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:n,pendingPx:r=0}){return!e||!(n>0)?null:{velocityPxPerMs:e,lastMs:t,cellHeightPx:n,pendingPx:r}}function yS(e,t){if(!e)return{scrollLines:0,state:null};let n=t-e.lastMs;if(!(n>0))return{scrollLines:0,state:e};let r=Math.abs(e.velocityPxPerMs)-pS*n;if(!(r>0))return{scrollLines:0,state:null};let i=e.velocityPxPerMs<0?-1:1,a=i*r*n,{scrollLines:o,remainderPx:s}=hS(e.pendingPx+a,e.cellHeightPx);return{scrollLines:o,state:{velocityPxPerMs:i*r,lastMs:t,cellHeightPx:e.cellHeightPx,pendingPx:s}}}function bS(e,t){return e===`alternate`||!!t&&t!==`none`}function xS(e,t){return!(e>0)||!(t>0)?0:e/t}var SS=1;function CS(e){return typeof e._core?._viewport?.handleTouchScroll==`function`}function wS(e,t){for(let n of e)if(n.identifier===t)return n;return null}function TS(e,t){if(CS(t))return;let n=()=>document.documentElement.dataset.layout===`phone`,r=null,i=0,a=0,o=0,s=!1,c=0,l=[],u=null,d=null,f=()=>{d!==null&&cancelAnimationFrame(d),d=null,u=null},p=()=>bS(t.buffer?.active?.type,t.modes?.mouseTrackingMode),m=()=>{let e=t.element?.querySelector(`.xterm-screen`);return xS(e?.clientHeight||t.element?.clientHeight||0,t.rows)},h=()=>{r=null,s=!1,c=0,l=[]},g=(e,n,r)=>{let i=e<0?-1:1;for(let a=0;a<Math.abs(e);a++)t.element?.dispatchEvent(new WheelEvent(`wheel`,{deltaY:i,deltaMode:SS,clientX:n,clientY:r,bubbles:!0,cancelable:!0}))},_=()=>{if(d=null,!u)return;if(!e.isConnected||!n()||p()){f();return}let r=t.buffer?.active?.viewportY,{scrollLines:i,state:a}=yS(u,performance.now());u=a,i!==0&&t.scrollLines(i),u&&(i!==0&&t.buffer?.active?.viewportY===r?f():d=requestAnimationFrame(_))},v=(e,t,n)=>{u=vS({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:m(),pendingPx:n}),u&&(d=requestAnimationFrame(_))};e.addEventListener(`touchstart`,e=>{if(f(),!n()||e.touches.length!==1){h();return}let t=e.touches[0];r=t.identifier,i=t.clientX,a=t.clientY,o=t.clientY,s=!1,c=0,l=[]},{passive:!0}),e.addEventListener(`touchmove`,e=>{if(r===null||!n())return;let u=wS(e.touches,r);if(!u)return;if(!s){if(!mS(u.clientX-i,u.clientY-a))return;s=!0,o=u.clientY,c=0,l=gS([],u.clientY,e.timeStamp)}e.cancelable&&e.preventDefault(),c+=u.clientY-o,o=u.clientY,l=gS(l,u.clientY,e.timeStamp);let d=p(),{scrollLines:f,remainderPx:h}=hS(c,m(),d?8:void 0);c=h,f!==0&&(d?g(f,u.clientX,u.clientY):t.scrollLines(f))},{passive:!1}),e.addEventListener(`touchend`,e=>{if(!s||p()){h();return}l=gS(l,o,e.timeStamp);let t=_S(l),n=c;h(),t!==0&&v(t,performance.now(),n)},{passive:!0}),e.addEventListener(`touchcancel`,()=>{f(),h()},{passive:!0})}function ES(e){return e.needsReload?!0:e.wasAttachedWithoutLayout&&e.hasLayoutNow}function DS(e,t,n=[]){let r=new Set(Array.isArray(n)?n:[n]),i=[];for(let n of e)e.length-i.length>=t&&!r.has(n)&&i.push(n);return i}var OS=window.matchMedia?.(`(pointer: coarse)`).matches?4:12,kS=new Map;function AS(e){return e.clientWidth>0&&e.clientHeight>0}function jS(e){let t=e.webglAddon;if(!t)return;let n=[...e.term?.element?.querySelectorAll(`canvas`)??[]];e.webglAddon=null;try{t.dispose()}catch{}for(let e of n)e.getContext(`webgl2`)?.getExtension(`WEBGL_lose_context`)?.loseContext()}function MS(e){kS.delete(e),e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,jS(e)}function NS(e){let t=[e],n=Ar.snapshot().borrowedCardId,r=n?P.get(n):void 0;r&&t.push(r);for(let e of DS([...kS.keys()],OS,t))MS(e),e.needsWebGLReload=!0}function PS(e){e?.term&&ES({needsReload:e.needsWebGLReload,wasAttachedWithoutLayout:e.webglAttachedWithoutLayout,hasLayoutNow:AS(e.termWrap)})&&IS(e,{isForced:!0})}function FS(){for(let e of kS.keys()){let t=e.term;if(e.webglAddon&&t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{MS(e),e.needsWebGLReload=!0}}}function IS(e,t={}){try{if(e.webglAddon&&!e.needsWebGLReload&&!t.isForced){kS.delete(e),kS.set(e,!0);return}e.webglAddon&&(jS(e),kS.delete(e)),NS(e);let n=new b;n.onContextLoss(()=>{n.dispose(),e.webglAddon=null,kS.delete(e),e.needsWebGLReload=!0});let r=e.term;if(!r)throw Error(`webgl: the terminal was disposed before the addon loaded`);r.loadAddon(n),e.webglAddon=n,e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!AS(e.termWrap),kS.set(e,!0),requestAnimationFrame(()=>{e.webglAddon===n&&e.term&&e.term.refresh(0,e.term.rows-1)})}catch{e.webglAddon=null,e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,kS.delete(e)}}function LS(e){let t=Bp(e,Jp,{isTerminalFocused:!0});return t?Vp(t,document.body.dataset.activeView):!1}var RS=1024,zS=250,BS=`(max-width: 768px)`,VS=12,HS=14,US=5e4,WS=!1;function GS(e){WS=e}var KS=!1;window.addEventListener(`blur`,()=>{KS=!0}),window.addEventListener(`focus`,()=>{KS=!1});function qS(e){let t=document.activeElement;return Jb({isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),hasFocusInsideCard:t instanceof Node&&e.contains(t),hasWindowBlurredSinceFocus:KS,isPhoneLayout:Jy()})}function JS(e,t){return Yb({isDocumentVisible:document.visibilityState===`visible`,isBorrowedCard:Ar.snapshot().borrowedCardId===t,isTerminalFaceShown:e.face===`terminal`})}var YS=new WeakMap,XS=new WeakMap,ZS=new WeakSet,QS=new WeakSet,$S=new WeakMap,iee=5e3,aee=15e3,oee=`Keys you type now are held and sent once the terminal reconnects.`,see=`The terminal is still reconnecting and its key buffer is full, so new keys are dropped.`,eC=`The agent copied text. The browser needs a click before it can reach your clipboard.`,tC=`The clipboard is unavailable in this browser.`;function nC(e,t,n,r){let i=$S.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(()=>rC(e,t),n===`ok`?iee:aee)))}function rC(e,t){let n=$S.get(e);n&&n.shownKind===t&&(n.clearTimerId!==null&&clearTimeout(n.clearTimerId),n.clearTimerId=null,n.shownKind=null,n.status.clear())}function iC(e){let t=e.buffer.active;return t.viewportY<t.baseY}function aC(e,t,{hasNewOutput:n=!1}={}){let r=$S.get(e)?.jumpToLatestButton;if(!r)return;let i=iC(t);r.hidden=!i,i?n&&(r.dataset.hasNewOutput=`true`):delete r.dataset.hasNewOutput}function oC(e,t){if(YS.has(e)||!iC(t))return;let n=t.buffer.active,r=n.length-n.viewportY;ZS.has(e)?YS.set(e,r):XS.set(e,r)}function sC(e,t,n){let r=e.term;r&&Xb({viewportTopLine:n,scrollbackLineCount:r.buffer.active.baseY,isDeepHistoryLoadedOrPending:ZS.has(e)})&&(ZS.add(e),QS.add(e),YS.set(e,r.buffer.active.length-n),AC(t))}function cC(e,t){e._hasMissedOutputWhileHidden&&(JS(e,t)||(e._hasMissedOutputWhileHidden=!1,AC(t)))}document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState!==`visible`)return;let e=Ar.snapshot().borrowedCardId;if(!e)return;let t=P.get(e);t&&cC(t,e)});function lC(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 uC(e,t,n){let r=(n instanceof Error?n.message:``)||String(n);console.error(`[clipboard:${t}]`,n),nC(e,`clipboard`,`error`,`Clipboard ${t} failed: ${r}`)}function dC(e,t,n,r){let i=br(t);i?i.then(()=>{r&&nC(e,`clipboard`,`ok`,r)}).catch(t=>uC(e,n,t)):nC(e,`clipboard`,`error`,tC)}function fC(e,t){let n=$S.get(e);n&&(n.pendingClipboardText=t,n.clipboardPrompt.hidden=!1)}function pC(e){let t=$S.get(e),n=t?.pendingClipboardText;t&&n!=null&&(t.pendingClipboardText=null,t.clipboardPrompt.hidden=!0,dC(e,n,`osc52 write`,`Copied to the clipboard.`))}function mC(e,t,n){let r=Ed(`terminal-notice`),i=j(`div`,`terminal-clipboard-prompt`);i.hidden=!0;let a=j(`button`,`btn-dialog btn-dialog-confirm`,`Copy to clipboard`);a.type=`button`,a.addEventListener(`click`,()=>pC(t)),i.append(j(`span`,`terminal-clipboard-prompt-text`,eC),a);let o=j(`div`,`terminal-notices`);o.append(i,r.element);let s=j(`button`,`terminal-jump-latest btn-dialog btn-dialog-ghost`,`Jump to latest`);s.type=`button`,s.hidden=!0,s.addEventListener(`click`,()=>{n.scrollToBottom(),n.focus()});let c=j(`div`,`terminal-drop-zone`);c.setAttribute(`aria-hidden`,`true`),c.append(j(`span`,`terminal-drop-zone-label`,`Drop to upload to this session`)),e.append(o,s,c),$S.set(t,{status:r,shownKind:null,clearTimerId:null,clipboardPrompt:i,pendingClipboardText:null,jumpToLatestButton:s})}function hC(e,t){return P.get(e)===t&&!t.dataWs}function gC(e){return e.querySelector(`:scope > .terminal-connecting`)}function _C(e){if(gC(e))return;let t=j(`div`,`terminal-connecting`);t.append(j(`span`,`terminal-connecting-label`,`Connecting`)),e.append(t)}function vC(e){let t=gC(e);if(!t)return;t.querySelector(`:scope > .terminal-connecting-animal`)?.remove();let n=Wc();n&&t.prepend(Uc(n,`terminal-connecting-animal`))}var yC=new Set;function bC(e){return yC.add(e),()=>yC.delete(e)}function xC(){let e=0;for(let t of P.values())t.card.dataset.link===`connecting`&&e++;return e}function SC(e){let t=cS({hasTerminal:e.term!==null,isSocketOpen:e.dataWs?.readyState===WebSocket.OPEN,isInputHeld:EC}),n=t===`connecting`&&!EC&&QS.has(e)?`live`:t;if(n===`none`){delete e.card.dataset.link,CC();return}let r=n===`connecting`&&e.card.dataset.link!==`connecting`;e.card.dataset.link=n,r&&vC(e.termWrap),CC()}function CC(){for(let e of yC)e()}function wC(e,t,n,r){oC(t,n),fb.unregister(e),t.dataWs=null,SC(t),t._resetGridClaim?.(),setTimeout(()=>{hC(e,t)&&al().catch(()=>{}).then(()=>{hC(e,t)&&TC(e,t,n)})},r)}function TC(e,t,n){let r=YS.get(t);YS.delete(t);let i=XS.get(t);XS.delete(t);let a=r!==void 0,o=r??i,s=!1,c=tl(location,sl(Zb(e,a))),l=new WebSocket(c);l.binaryType=`arraybuffer`,t.dataWs=l,SC(t);let u=!1,d={hasSeenSize:!1,lastSeq:0};fb.register(e,(e,t)=>n.write(e,t)),l.addEventListener(`message`,r=>{if(t.dataWs!==l)return;let i=rx(r.data,d);if(i.kind===`bytes`){Sf(t);let r=s;if(s=!1,JS(t,e)){t._hasMissedOutputWhileHidden=!0;return}if(fb.enqueue(e,i.data),!r)return;let a=o??0;fb.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||ZS.delete(t),d.hasSeenSize=!0,d.lastSeq=i.seq,n.reset(),sS(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};fb.enqueueAction(e,()=>{t.ptySize=c,t._syncGrid?.()})}),l.addEventListener(`close`,()=>{if(t.dataWs!==l)return;QS.delete(t),u||ol();let r=Xc(t._dataWsRetryAttempt||0);t._dataWsRetryAttempt=(t._dataWsRetryAttempt||0)+1,wC(e,t,n,r)}),l.addEventListener(`open`,()=>{u=!0,t._dataWsRetryAttempt=0,QS.delete(t),SC(t),t._syncGrid?.({isActivationEdge:!0}),t._retryOwedGridClaim?.(),t._inputQueue?.length&&setTimeout(()=>{t.dataWs===l&&DC(t)},50)})}var EC=!1;function DC(e){let t=e._inputQueue,n=e.dataWs;if(!EC&&t?.length&&n?.readyState===WebSocket.OPEN){for(let e of t)n.send(JSON.stringify({type:`input`,data:e}));t.length=0,rC(e,`keys`)}}function OC(){EC=!0;for(let e of P.values())SC(e)}function kC(){EC=!1;for(let e of P.values())SC(e),DC(e)}function AC(e){let t=F(e);if(typeof e!=`string`||!t?.term)return;let n=t.dataWs;t._dataWsRetryAttempt=0,wC(e,t,t.term,0),n?.close()}function jC(e,t){let n=e.dataWs;e.dataWs=null,fb.unregister(t),n&&n.readyState<=WebSocket.OPEN&&n.close()}function MC(e,t,n){if(!e||t==null||t===``)return!1;if(n?.fromSoftKeyboard||e._resetSoftKeyboardBuffer?.(),!EC&&!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>=RS?(nC(e,`keys`,`error`,see),!1):(e._inputQueue.push(t),r&&nC(e,`keys`,`busy`,oee),!0)}function NC(e,t){let n=window.matchMedia?.(BS).matches?VS:HS,r=new v({cursorBlink:WS,fontSize:n,fontFamily:ib(),theme:Ib(),scrollback:US,allowProposedApi:!0,linkHandler:bx()}),i=new y;r.loadAddon(i),_C(e),r.open(e),mC(e,t,r),Sx(r),oS(r,t.abortController.signal),t.term=r,t.fitAddon=i,MS(t);let a=null,o=null,s=!1,c=null,l=null;function u(){o!==null&&(clearTimeout(o),o=null)}function d(){if(!s)return null;let e=t.fitAddon;if(!e)return null;let n=e.proposeDimensions();return n?{cols:n.cols,rows:n.rows}:null}function f(e){if(!s||!qS(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=qb({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)},zS)}function m(){l&&o===null&&f(l)}function h({isActivationEdge:e=!1}={}){let n=t.term;if(!n)return;let r=ex({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=Qb({authoritative:t.ptySize??null,isActiveViewer:s,isDocumentEngaged:qS(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=$b({isActiveViewer:s,lastClaim:c,owedClaim:l}),c=null},t._retryOwedGridClaim=m,t._syncGridOnEngagementEdge=g,t._isActiveViewer=()=>s,t._setActiveViewer=e=>{s!==e&&(s=e,u(),l=null,e&&PS(t),h({isActivationEdge:!0}))},t.card.addEventListener(`focusin`,()=>{KS=!1,g()},{signal:t.abortController.signal}),IS(t);let b=null;r.onScroll(()=>{b===null&&(b=requestAnimationFrame(()=>{b=null,t.term&&(t.term.refresh(0,t.term.rows-1),aC(t,t.term))}))}),r.onWriteParsed(()=>aC(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=lC(r)}catch(e){return uC(t,`osc52 decode`,e),!0}return document.hasFocus()&&navigator.userActivation?.isActive!==!1?(dC(t,i,`osc52 write`),!0):(fC(t,i),!0)}),r.attachCustomKeyEventHandler(e=>{if(e.type!==`keydown`)return!0;if(LS(e))return!1;let n=e.ctrlKey||e.metaKey;if(n&&e.key===`c`&&r.hasSelection()){let e=r.getSelection();return r.clearSelection(),dC(t,e,`copy`),!1}return n&&e.key===`v`?!1:n&&e.key===`Backspace`?(MC(t,`\x1B`),!1):!0}),PC(e,r,t),TS(e,r)}function PC(e,t,n){let r=t.textarea;if(!r)return;let i=``,a=()=>{i=r.value},o=()=>{i=``,Jy()&&r.value!==``&&(r.value=``)};n._resetSoftKeyboardBuffer=o;let s=()=>{let e=fx(i,r.value);return i=r.value,e!==``&&(MC(n,e,{fromSoftKeyboard:!0}),t.scrollToBottom(),!0)},c=(t,n)=>{e.addEventListener(t,e=>{Jy()?n(e):a()},!0)};c(`keydown`,e=>{dx(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(!ux(e.inputType)){queueMicrotask(o);return}if(e.stopPropagation(),s())return;let r=cx(e.inputType);r!==``&&(MC(n,r,{fromSoftKeyboard:!0}),t.scrollToBottom())})}function FC(e,t){e._inputQueue=[];let n=e.term;n&&(n.onData(n=>{MC(e,n),e.unseenOutcome&&K({type:`dismiss`,id:t,expectedState:e.currentState})}),n.onScroll(n=>{sC(e,t,n)}),LC(e.termWrap,t,e.abortController.signal),TC(t,e,n))}function IC(e){return!!e&&Array.from(e.types).includes(`Files`)}function LC(e,t,n){e.addEventListener(`paste`,e=>{let n=e.clipboardData;n&&n.files.length!==0&&n.getData(`text/plain`)===``&&(e.preventDefault(),e.stopPropagation(),uS(t,Array.from(n.files)))},{capture:!0,signal:n}),e.addEventListener(`dragover`,t=>{IC(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,IC(n.dataTransfer)&&(n.preventDefault(),n.stopPropagation(),uS(t,Array.from(n.dataTransfer.files)))},{capture:!0,signal:n})}function RC(e,t){e.term||(NC(e.termWrap,e),FC(e,t))}function zC(e){e?._syncGridOnEngagementEdge?.()}function BC(e,t){if(!e)return;RC(e,t),cC(e,t),PS(e);let n=e.term;n&&(n.refresh(0,n.rows-1),zC(e))}function VC(e,t,n){e&&(n&&RC(e,t),e._setActiveViewer?.(n))}var HC=`conversation:`,UC=1e4,WC=48,GC=`, `,KC=`+`,qC=`■`,JC=`↑`,YC=1e3,XC={command:`Run command?`,fileChange:`Apply file changes?`,permissions:`Grant permissions?`},ZC=1;function QC(e){e?.previewUrl&&URL.revokeObjectURL(e.previewUrl)}function $C(e,t,n){let r=j(`button`,`conversation-icon-button ${e}`,t);return r.type=`button`,r.title=n,r.setAttribute(`aria-label`,n),r}function ew(e){return e.conversationApproval!==null||by(e.currentState,e.pendingPromptKind)}function tw(e,t,n,r,i=0){let a=n[i];a?setTimeout(()=>{F(e)===t?i>0&&ew(t)?r(`stopped-by-prompt`):MC(t,a.data)?tw(e,t,n,r,i+1):r(`unreachable`):r(`unreachable`)},a.delayBeforeMs):r(`sent`)}function nw({signal:e,sendControl:t,showTerminal:n}){let r=j(`div`,`conversation-face`);r.hidden=!0;let i=j(`div`,`conversation-log`);i.setAttribute(`role`,`log`),i.setAttribute(`aria-live`,`polite`);let a=j(`p`,`conversation-empty`,`No conversation yet. Messages appear here as the agent works.`),o=j(`div`,`conversation-approval`);o.hidden=!0;let s=j(`p`,`conversation-bridge-note`,`Restart this Codex session to connect it to the conversation view. Until then, use the terminal.`);s.hidden=!0;let c=j(`p`,`conversation-bridge-note`,`The session trace is unavailable, so there is nothing to show here. Use the terminal.`);c.hidden=!0;let l=j(`details`,`conversation-working`),u=j(`summary`,`conversation-working-summary`);u.setAttribute(`role`,`status`);let d=j(`ul`,`conversation-agent-list`);l.append(u,d),l.hidden=!0;let f=j(`form`,`conversation-composer`),p=j(`p`,`conversation-status`);p.setAttribute(`role`,`status`);let m=j(`div`,`conversation-attachment`);m.hidden=!0;let h=j(`div`,`conversation-composer-row`),g=$C(`conversation-attach`,KC,`Attach a photo or file`),_=j(`input`,`conversation-file-picker`);_.type=`file`,_.hidden=!0;let v=j(`textarea`,`conversation-input`);v.dataset.dashboardShortcuts=`allowed`,v.rows=1,v.placeholder=`Message the agent`,v.setAttribute(`aria-label`,`Message the agent`);let y=$C(`conversation-stop`,qC,`Stop the current turn (Esc)`),b=$C(`conversation-send`,JC,`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,w=!1,T=new Set;function ce(){return x?F(x)??null:null}function E(e){p.textContent=e}function le(){v.style.height=`auto`,v.style.height=`${v.scrollHeight+v.offsetHeight-v.clientHeight}px`}function D(){ne&&clearTimeout(ne.timeoutHandle),ne=null}function ue(){if(!x||r.hidden||!c.hidden)return;if(ne){re=!0;return}let e=`${HC}${ZC++}`,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,ue()},UC)}):E(`Conversation unavailable while disconnected.`)}function de(){return i.scrollHeight-i.scrollTop-i.clientHeight<=WC}function fe(e){let t=j(`a`,`conversation-image-link`);t.href=e,t.target=`_blank`,t.rel=`noopener`;let n=j(`img`,`conversation-image`);return n.src=e,n.alt=`Attached image`,n.loading=`lazy`,n.addEventListener(`error`,()=>t.remove(),{once:!0}),t.append(n),t}function pe(e){let t=j(`article`,`conversation-message conversation-user is-pending`);return e.text&&t.append(j(`p`,`conversation-text`,e.text)),e.attachment?.previewUrl&&t.append(fe(e.attachment.previewUrl)),e.attachment&&!e.attachment.previewUrl&&t.append(j(`p`,`conversation-attachment-name`,e.attachment.name)),t}function me(e){let t=j(`article`,`conversation-message conversation-${e.kind}`);return e.kind===`assistant`?(t.append(Ym(Wm(e.text))),t):(t.append(j(`p`,`conversation-text`,e.text)),e.kind===`user`&&t.append(...e.imageUrls.map(fe)),t)}function he(e,t){e.replaceChildren(...t.map(e=>{let t=j(`li`,`conversation-agent is-${e.state}`);return t.append(j(`span`,`conversation-agent-name`,e.description),j(`span`,`conversation-agent-state`,e.state)),t}))}function ge(e){if(e.agentRuns.length===0)return j(`p`,`conversation-work`,Ly(e));let t=j(`details`,`conversation-work`);t.open=T.has(e.key),t.addEventListener(`toggle`,()=>{t.open?T.add(e.key):T.delete(e.key)});let n=j(`ul`,`conversation-agent-list`);return he(n,e.agentRuns),t.append(j(`summary`,``,Ly(e)),n),t}function _e(){return ce()?.currentState===A.RUNNING}function ve(){let e=ce(),t=jy(oe),n=_e()?My(oe)?.agentRuns??[]:[],r=[...new Set([...n,...t])];if(l.hidden=!e||!_e()&&t.length===0,l.hidden||!e)return;let i=_e()?Math.max(0,Date.now()-e.stateSince):null;u.textContent=Ry(i,t.length),l.classList.toggle(`has-agents`,r.length>0),he(d,r)}function ye(){let e=!r.hidden&&_e();e&&!se&&(se=setInterval(ve,YC)),!e&&se&&(clearInterval(se),se=null),ve()}function be(){i.scrollTop=i.scrollHeight}function xe(){let e=w||de();oe=Ay(S);let t=Date.now(),n=ae.filter(e=>Py(e,oe,t));for(let e of n)QC(e.attachment);ae=ae.filter(e=>!n.includes(e));let r=[...(_e()&&My(oe)?oe.slice(0,-1):oe).map(e=>e.kind===`work`?ge(e):me(e)),...ae.map(pe)];i.replaceChildren(...r.length>0?r:[a]),ve(),e&&(be(),requestAnimationFrame(be),te&&(w=!1))}function Se(){if(m.replaceChildren(),m.hidden=!C,C){if(C.previewUrl){let e=j(`img`,`conversation-attachment-thumbnail`);e.src=C.previewUrl,e.alt=``,m.append(e)}m.append(j(`span`,`conversation-attachment-name`,C.name))}}function Ce(e){C!==e&&QC(C),C=e,Se()}function we(e,t=()=>{}){let n=ce();if(!n||!x||!e){E(`Unable to reach this session.`);return}E(``);let r={sent:``,unreachable:`Unable to reach this session.`,"stopped-by-prompt":`Not sent: a prompt appeared, so the message was typed but not submitted. Check the terminal.`};tw(x,n,e,e=>{E(r[e]),t(e)})}function Te(e,n,r){x&&E(t({type:`conversation-approval`,id:x,requestId:e.requestId,decision:n,...r?{answers:r}:{}})?``:`Unable to send the answer while disconnected.`)}function Ee(e,t){let n=j(`button`,`conversation-approval-action`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function De(e){return e.kind===`tool`?`Allow ${e.toolName??`this tool`}?`:XC[e.kind]??`Approve this request?`}function Oe(e){o.append(j(`p`,`conversation-approval-note`,`This request cannot be shown in full here. Read and answer it in the terminal.`));let t=j(`div`,`conversation-approval-actions`);t.append(Ee(`Open terminal`,()=>n()),Ee(`Decline`,()=>Te(e,`decline`))),o.append(t)}function ke(e){if(o.append(j(`p`,`conversation-approval-title`,De(e)),j(`pre`,`conversation-approval-summary`,e.summary)),e.isSummaryTruncated){Oe(e);return}let t=j(`div`,`conversation-approval-actions`);t.append(Ee(`Approve`,()=>Te(e,`accept`))),e.kind!==`tool`&&t.append(Ee(`Approve for session`,()=>Te(e,`acceptForSession`))),e.alwaysAllowSummary&&(o.append(j(`p`,`conversation-approval-note`,`Always allow adds, for this session only: ${e.alwaysAllowSummary}`)),t.append(Ee(`Always allow`,()=>Te(e,`acceptForSession`)))),t.append(Ee(`Decline`,()=>Te(e,`decline`))),o.append(t)}function Ae(e){let t=j(`p`,`conversation-approval-title`,e.question);return e.header&&t.prepend(j(`span`,`conversation-question-header`,e.header)),t}function je(e,t){o.append(Ae(t));let n=j(`div`,`conversation-question-options`);for(let r of t.options){let i=Ee(r.label,()=>Te(e,`accept`,{[t.question]:r.label}));r.description&&(i.title=r.description),n.append(i)}let r=j(`div`,`conversation-approval-actions`);r.append(Ee(`Decline`,()=>Te(e,`decline`))),o.append(n,r)}function Me(e,t){let n=j(`form`,`conversation-question-form`);t.forEach((e,t)=>{let r=j(`fieldset`,`conversation-question`),i=j(`legend`,`conversation-question-text`,e.question);e.header&&i.prepend(j(`span`,`conversation-question-header`,e.header)),r.append(i);for(let n of e.options){let i=j(`label`,`conversation-question-option`),a=j(`input`);a.type=e.multiSelect?`checkbox`:`radio`,a.name=`question-${t}`,a.value=n.label,i.append(a,j(`span`,``,n.label)),n.description&&(i.title=n.description),r.append(i)}n.append(r)});let r=j(`div`,`conversation-approval-actions`),i=j(`button`,`conversation-approval-action`,`Send answers`);i.type=`submit`,r.append(i,Ee(`Decline`,()=>Te(e,`decline`))),n.append(r),n.addEventListener(`submit`,r=>{r.preventDefault();let i={};t.forEach((e,t)=>{let r=[...n.querySelectorAll(`input[name="question-${t}"]:checked`)].map(e=>e.value);r.length>0&&(i[e.question]=r.join(GC))}),Object.keys(i).length===t.length?Te(e,`accept`,i):E(`Answer every question first.`)}),o.append(n)}function Ne(e){let t=e.questions??[];if(e.isSummaryTruncated||t.length===0){o.append(j(`p`,`conversation-approval-title`,`Claude Code has a question`),j(`pre`,`conversation-approval-summary`,e.summary)),Oe(e);return}let[n]=t;t.length===1&&!n.multiSelect?je(e,n):Me(e,t)}function Pe(e){e.kind===`question`?Ne(e):ke(e)}function Fe(){o.append(j(`p`,`conversation-approval-title`,`The agent is waiting on a prompt`)),o.append(j(`p`,`conversation-approval-note`,`Read and answer it in the terminal.`));let e=j(`div`,`conversation-approval-actions`);e.append(Ee(`Open terminal`,()=>n())),o.append(e)}function Ie(){let e=ce();o.replaceChildren();let t=e?.conversationApproval??null,n=e?by(e.currentState,e.pendingPromptKind):!1,r=e?.agent===`codex`&&!e.hasConversationBridge;s.hidden=!r,o.hidden=!t&&!n,b.disabled=!o.hidden||r,Le(),e&&(t?Pe(t):n&&Fe())}function Le(){g.disabled=b.disabled||ie}function Re(e){let t=_y(e,v.value);return t||!C?t:vy(e)}function ze(){let e=ce();y.disabled=e?.currentState!==A.RUNNING,ye()}f.addEventListener(`submit`,e=>{if(e.preventDefault(),b.disabled)return;let t=Re(ce()?.agent);if(!t)return;let n={text:v.value.trim(),attachment:C,sentAt:Date.now(),userKeysAtSend:Ny(oe)};v.value=``,le(),C=null,Se(),ae.push(n),w=!0,xe(),we(t,e=>{e!==`sent`&&(QC(n.attachment),ae=ae.filter(e=>e!==n),xe())})},{signal:e}),v.addEventListener(`input`,le,{signal:e});let Be=0,Ve=new ResizeObserver(()=>{let e=i.clientHeight,t=Be===0;Be=e,t&&e!==0&&(w=!0,be(),te&&(w=!1))});Ve.observe(i),e?.addEventListener(`abort`,()=>{se&&clearInterval(se),Ve.disconnect()},{once:!0}),v.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||Jy()||(e.preventDefault(),f.requestSubmit())},{signal:e}),y.addEventListener(`click`,()=>we(yy(ce()?.agent)),{signal:e}),g.addEventListener(`click`,()=>_.click(),{signal:e}),_.addEventListener(`change`,()=>{let e=_.files?.[0];if(_.value=``,!e||!x)return;if(b.disabled){E(`Not attached: the agent is not ready for a message. Check the terminal.`);return}let t=x;ie=!0,Le(),lS(t,e).then(n=>{if(ie=!1,Le(),!n||x!==t)return;let r=e.type.startsWith(`image/`)?URL.createObjectURL(e):null;Ce({name:e.name,previewUrl:r})})},{signal:e});function He(e){if(x!==e){x=e,S=[],ee=0,te=!1,D(),Ce(null),T.clear();for(let e of ae)QC(e.attachment);ae=[],E(``)}r.hidden=!1,c.hidden=!0,w=!0,xe(),We(),ue()}function Ue(){r.hidden=!0,D(),ye()}function We(){r.hidden||(Ie(),ze(),xe())}function Ge(e){if(!ne||e.requestId!==ne.requestId)return!1;let t=ne;if(D(),e.id!==x)return!0;let n=t.after!==null&&e.start===t.after&&!e.reset;return t.after!==null&&!n?(te=!1,S=[],ue(),!0):(S=zy(t.after===null?[...e.records]:[...S,...e.records]),ee=e.next,te=!0,xe(),re&&ue(),!0)}function Ke(e){return!ne||e.requestId!==ne.requestId?!1:(D(),re=!1,c.hidden=!1,!0)}function qe(e){e!==x||r.hidden||(c.hidden=!0,ue())}return{el:r,show:He,hide:Ue,refresh:We,applyTraceResponse:Ge,applyTraceError:Ke,applyTraceChanged:qe}}function rw(e){if(!e)return 0;let t=0;return e.listenerMismatch&&t++,e.orphanPty&&t++,e.destroyedReachable&&t++,t}function iw(e,t){return e||rw(t)>0}var aw={DORMANT:`DOR`,INITIALIZING:`INI`,STARTING:`STA`,RUNNING:`RUN`,WAITING:`WAI`,IDLE:`IDL`,COMPLETE:`CMP`,DONE:`DON`,FAILED:`FAI`},ow=null,sw=!1,cw=!1,lw=null,uw=null,dw=null,fw=`—`;function pw(e){return e==null?fw:Sl(e,`GB`)}function mw(e){return e==null?fw:bl(e,{smallestUnit:`s`,dropsZeroRemainder:!1})}function hw(e){return e==null?fw:`${mw(Math.max(0,Math.round((Date.now()-e)/1e3)))} ago`}function gw(){let e=j(`div`,`health-footer`);e.dataset.expanded=`false`,e.hidden=!0;let t=j(`div`,`health-summary`),n=j(`button`,`health-toggle`);n.type=`button`,n.setAttribute(`aria-expanded`,`false`),n.setAttribute(`aria-controls`,`health-detail`);let r=j(`span`,`health-chev`,`▲`);r.setAttribute(`aria-hidden`,`true`),n.append(r,j(`span`,`health-toggle-label`,`Health`));let i=j(`div`,`health-stats`);t.append(n,i);let a=j(`div`,`health-detail`);return a.id=`health-detail`,a.hidden=!0,n.addEventListener(`click`,()=>{cw=!cw,e.dataset.expanded=String(cw),n.setAttribute(`aria-expanded`,String(cw)),a.hidden=!cw,cw&&(K({type:`request-health-snapshot`}),vw())}),e.append(t,a),lw=e,uw=i,dw=a,e}function _w(){if(!uw||!ow)return;let e=ow,t=rw(e.anomalies);uw.innerHTML=`
90
+ <span class="health-stat" title="V8 heap used"><span class="health-stat-label">Heap</span> ${pw(e.process.heapUsed)}</span>
91
+ <span class="health-stat" title="Resident set size (process memory)"><span class="health-stat-label">RSS</span> ${pw(e.process.rss)}</span>
92
+ <span class="health-stat" title="External buffers (PTY data lives here)"><span class="health-stat-label">Ext</span> ${pw(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> ${pw(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> ${mw(e.uptimeSeconds)}</span>
98
+ ${t>0?`<span class="health-anomaly" title="${t} anomaly type(s), expand for details">⚠ ${t}</span>`:``}
99
+ `}function vw(){if(!dw||!ow)return;let e=ow,t=e.process,n=e.websockets,r=e.sessions,i=e.anomalies,a=``;if(rw(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>${r_(e.name)}</td>
107
+ <td class="health-mono">${aw[e.state]||e.state}</td>
108
+ <td class="health-mono">${e.hasPty?e.ptyPid:fw}</td>
109
+ <td class="health-mono">${pw(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(``);dw.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">${pw(t.heapUsed)}</span></div>
121
+ <div class="health-row"><span class="health-label">Heap total</span><span class="health-mono">${pw(t.heapTotal)}</span></div>
122
+ <div class="health-row"><span class="health-label">RSS</span><span class="health-mono">${pw(t.rss)}</span></div>
123
+ <div class="health-row"><span class="health-label">External</span><span class="health-mono">${pw(t.external)}</span></div>
124
+ <div class="health-row"><span class="health-label">Array buffers</span><span class="health-mono">${pw(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">${mw(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">${pw(e.memoryGate?.headroomBytes)}</span></div>
134
+ <div class="health-row"><span class="health-label">Read</span><span class="health-mono">${hw(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 ${pw(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 yw(){if(!lw)return;let e=iw(sw,ow?.anomalies),t=lw.hidden;lw.hidden=!e,e&&t&&ow&&(_w(),cw&&vw())}function bw(e){sw=e,yw()}function xw(e){if(lw)return lw;let t=gw();return e.appendChild(t),yw(),t}function Sw(e){ow=e,yw(),lw&&!lw.hidden&&(_w(),cw&&vw())}function Cw(e){return e.replace(/\r\n?/g,`
161
+ `).split(`
162
+ `)}function ww(e){return{kind:`unchanged`,text:e}}function Tw(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function Ew(e,t){return e.length<=7?e.map(t):[...e.slice(0,3).map(t),Tw(e.length-6),...e.slice(e.length-3).map(t)]}function Dw(e){return e}function Ow(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(...Ew(e.slice(n,r),Dw)),n=r}return t}function kw(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function Aw(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 jw(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(ww(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 Mw(e,t){let n=Cw(e),r=Cw(t),i=kw(n,r),a=Aw(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:Ow([...Ew(n.slice(0,i),ww),...jw(o,s),...Ew(n.slice(n.length-a),ww)]),isTooLarge:!1}}var Nw=Object.freeze([{kind:`approve`,label:`Approve`},{kind:`revise`,label:`Send feedback`},{kind:`terminal`,label:`Answer in terminal`}]);function Pw(e){return e===`approve`||e===`approve-accept-edits`}function Fw(e){return(e.state===`decided`||e.state===`closed`)&&Pw(e.lastDecision)}function Iw(e,t){let n=e.reviews.find(e=>e.agentId===t);return n!==void 0&&Fw(n)}function Lw(e,t){return e.reviews.find(e=>e.agentId===t)??e.reviews[0]??null}function Rw(e){let t=Lw(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 zw(e,t){return Lw(e,t)?.openRevision?.revision??null}function Bw(e,t,n){if(n===null)return null;let r=Lw(e,t)?.revisions??[],i=r.findIndex(e=>e.revision===n);return i<=0?null:r[i-1].revision}function Vw(e,t){let n=t-e;return Number.isFinite(n)?yl(n,{rounding:`floor`,wording:`abbreviated`,suffix:` ago`,justNowBelowSeconds:60}):`just now`}function Hw(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 Uw(e,t,n){let r=Hw(e,t,n),i=(e.pendingCommentCount??0)>0,a=e.hasUnsavedComment!==!0;return Nw.map(({kind:e,label:t})=>({kind:e,label:t,enabled:r&&(e===`terminal`||a&&(e===`revise`?i:!i))}))}function Ww(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 Gw(e){let t=0;for(let n of e.comments??[])t+=n.comment.trim().length+(n.heading?.length??0);return t}function Kw(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength+Eo}function qw(e){let t=e.plan;if(t!==void 0&&t.length===0)return`the edited plan is empty, so nothing was sent`;if(t!==void 0&&new TextEncoder().encode(t).byteLength>524288)return`the edited plan is over the plan size cap, so nothing was sent`;let n=e.comments??[];return n.length>40?`more than 40 section comments are pending, so nothing was sent`:n.find(e=>e.comment.length>4e3||(e.heading?.length??0)>4e3)?`a section comment is over ${qr} characters, so nothing was sent`:Gw(e)>1e4?`the feedback composes more than the ${Yr} characters the hook reply carries, so nothing was sent`:Kw(e)>Do?`the decision is larger than one control frame carries, so nothing was sent`:null}function Jw(e){return e?`, ${e}`:``}function Yw(e,t,n){if(!e.isConnected)return`Disconnected`;if(!t||n===null)return`No plan revision selected`;if(e.isDecisionInFlight)return`Sending your decision`;if(e.body===null)return`Loading`;if(e.isDraft===!0)return`Draft`;let r=Ww(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 Xw(e,t,n){let r=Yw(e,t,n);return r?`${r}${Jw(e.problem)}`:e.problem??``}function Zw(e){let t=Lw(e.state,e.selectedAgentId),n=Rw(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:Bw(e.state,t?.agentId??null,n),status:Xw(e,t,n),actions:Uw(e,t,n),modes:[{kind:`read`,label:`Read`,enabled:!0},{kind:`changes`,label:`Changes`,enabled:Bw(e.state,t?.agentId??null,n)!==null&&e.isDraft!==!0},{kind:`edit`,label:`Edit`,enabled:Hw(e,t,n)}]}}function Qw(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 $w({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 eT=12,tT=8,nT=``,rT=48,iT=new Map;function aT(e,t){return JSON.stringify([e,t])}function oT(e){return e.id??nT}function sT(e,t){let n=iT.get(e);n||(n=new Map,iT.set(e,n));let r=aT(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>eT;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function cT(e){iT.delete(e)}function lT(e,t,n){return!e||n===null?null:iT.get(e)?.get(aT(t,n))??null}function uT(e){let t=j(`section`,`plan-face`);t.hidden=!0;let n=j(`header`,`plan-head`),r=j(`select`,`plan-heading-picker`);r.setAttribute(`aria-label`,`Plan section`);let i=j(`div`,`plan-view-panel`),a=j(`div`,`plan-sheet-head`),o=j(`button`,`plan-control plan-sheet-close`,`×`);o.type=`button`,o.setAttribute(`aria-label`,`Close`),a.append(j(`span`,null,`View`),o);let s=j(`div`,`plan-view-group plan-author-group`),c=j(`div`,`plan-tabs`);c.setAttribute(`role`,`tablist`),c.setAttribute(`aria-label`,`Plan author`),s.append(j(`span`,`plan-sheet-label`,`Author`),c);let l=j(`div`,`plan-view-group plan-revision-group`),u=j(`div`,`plan-revision-stepper`),d=j(`button`,`plan-control plan-revision-previous`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Previous revision`);let f=j(`button`,`plan-control plan-revision-next`,`›`);f.type=`button`,f.setAttribute(`aria-label`,`Next revision`);let p=j(`span`,`plan-revision-label`),m=j(`span`,`plan-revision-age`);u.append(d,p,f,m);let h=j(`div`,`plan-revision-list`);h.setAttribute(`role`,`radiogroup`),h.setAttribute(`aria-label`,`Revision`),l.append(j(`span`,`plan-sheet-label`,`Revision`),u,h);let g=j(`div`,`plan-view-group plan-mode-group`),_=j(`div`,`plan-modes`);_.setAttribute(`role`,`radiogroup`),_.setAttribute(`aria-label`,`Show`),g.append(j(`span`,`plan-sheet-label`,`Show`),_);let v=j(`div`,`plan-head-spacer`),y=j(`div`,`plan-draft-notice`),b=j(`span`,`plan-draft-dot`);b.setAttribute(`aria-hidden`,`true`);let x=j(`button`,`plan-control plan-draft-chip`,`Peek draft`);x.type=`button`,y.append(b,x),i.append(a,s,l,g,v,y);let S=j(`button`,`plan-control plan-view-button`,`View`);S.type=`button`,S.setAttribute(`aria-haspopup`,`dialog`),S.setAttribute(`aria-expanded`,`false`);let ee=j(`button`,`plan-control plan-minimize-button`,`Minimize`);ee.type=`button`,ee.addEventListener(`click`,e.showTerminal),n.append(r,i,S,ee);let te=j(`div`,`plan-sheet-backdrop`),ne=j(`div`,`plan-body-layout`),re=j(`nav`,`plan-heading-rail`);re.setAttribute(`aria-label`,`Plan sections`);let C=j(`article`,`plan-reading-column`);ne.append(re,C);let ie=j(`textarea`,`plan-editor`);ie.setAttribute(`aria-label`,`Plan markdown`),ie.spellcheck=!1;let ae=j(`footer`,`plan-action-bar`),oe=j(`span`,`plan-status`);oe.setAttribute(`role`,`status`);let se=j(`div`,`plan-decision-slot`),w=j(`label`,`plan-accept-edits`),T=j(`input`,`plan-accept-edits-checkbox`);T.type=`checkbox`,w.append(T,j(`span`,null,`Accept edits`)),se.append(w,oe),ae.append(se);let ce=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let n=j(`button`,`plan-action`,t);n.type=`button`,n.dataset.decision=e,n.addEventListener(`click`,()=>{n.disabled||rt(e)}),ce.set(e,n),ae.append(n)}t.append(n,ne,ae,te);let E=null,le={reviews:[]},D=null,ue=null,de=!0,fe=``,pe=``,me=``,he=``,ge=!1,_e=null,ve=!1,ye=null,be=!1,xe=!1,Se=null,Ce=[],we=null,Te=null,Ee=new Map,De=new Map,Oe=new Map,ke=[],Ae=!1,je=null,Me=!1;function Ne(e,t=!0){Me=e,i.replaceChildren(...e?[a,g,l,s,y,v]:[a,s,l,g,v,y]),c.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of c.querySelectorAll(`button`)){let n=t.getAttribute(`aria-selected`)===`true`||t.getAttribute(`aria-checked`)===`true`;t.setAttribute(`role`,e?`radio`:`tab`),t.removeAttribute(e?`aria-selected`:`aria-checked`),t.setAttribute(e?`aria-checked`:`aria-selected`,String(n))}i.dataset.open=String(e),te.dataset.open=String(e),S.setAttribute(`aria-expanded`,String(e)),ne.inert=e,ae.inert=e,r.inert=e,S.inert=e,ee.inert=e,e?(i.setAttribute(`role`,`dialog`),i.setAttribute(`aria-label`,`Plan view`),i.setAttribute(`aria-modal`,`true`),o.focus()):(i.removeAttribute(`role`),i.removeAttribute(`aria-modal`),t&&S.focus())}function Pe(e){e.addEventListener(`keydown`,t=>{let n={ArrowLeft:-1,ArrowUp:-1,ArrowRight:1,ArrowDown:1}[t.key];if(n===void 0&&t.key!==`Home`&&t.key!==`End`)return;let r=[...e.querySelectorAll(`button:not(:disabled)`)];if(r.length===0)return;t.preventDefault();let i=(r.indexOf(document.activeElement)+(n??0)+r.length)%r.length;t.key===`Home`&&(i=0),t.key===`End`&&(i=r.length-1);let a=Me;r[i].click(),!(a&&e!==_)&&(e===_||!Me)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Fe=Ar.subscribe((e,t)=>{t.includes(`layout`)&&Me&&Ne(!1,!1)});e.signal?.addEventListener(`abort`,Fe,{once:!0}),Pe(_),Pe(c),Pe(h),S.addEventListener(`click`,()=>Ne(!Me)),o.addEventListener(`click`,()=>Ne(!1)),te.addEventListener(`click`,()=>Ne(!1)),i.addEventListener(`keydown`,e=>{if(!Me)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Ne(!1);return}if(e.key!==`Tab`)return;let t=[...i.querySelectorAll(`button:not(:disabled)`)].filter(e=>e.getClientRects().length>0&&e.tabIndex>=0),n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())});function Ie(e){C.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}r.addEventListener(`change`,()=>Ie(r.value));function Le(){Ae=!1;let e=ke.map(e=>C.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=C.getBoundingClientRect().top-C.scrollTop,n=$w({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:C.scrollTop,isScrolledToEnd:C.scrollTop>0&&C.scrollTop+C.clientHeight>=C.scrollHeight-2,readingLineOffset:rT}),i=n===null?null:e[n]?.id??null;for(let e of ke)e.dataset.headingId===i?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);i!==null&&(r.value=i)}function Re(){Ae||t.hidden||ke.length===0||(Ae=!0,requestAnimationFrame(Le))}C.addEventListener(`scroll`,Re,{passive:!0});function ze(){je=null,ve=!1,be=!1,xe=!1,Se=null}function Be(t){we=t,e.reportProblem(t),Et()}function Ve(e){ue=e,we=null,ze(),Ne(!1,Me),Et()}function He(e){let t=le.reviews.find(e=>e.agentId===D)?.revisions??[],n=t[t.findIndex(e=>e.revision===ue)+e];n&&Ve(n.revision)}d.addEventListener(`click`,()=>He(-1)),f.addEventListener(`click`,()=>He(1));function Ue(e,t){return`${E??``}:${e??`main`}:${t??`latest`}`}function We(){return Ue(D,ue)}function Ge(e,t,n){return`${e??``}:${aT(t,n??0)}`}function Ke(){return Ge(E,D,ue)}function qe(){return De.get(Ke())??null}function Je(){return qe()?.size??0}function Ye(){if(je===null)return!1;let e=De.get(je.target.bucketKey)?.get(je.target.sectionSlot)??``;return je.field.value.trim()!==e}function Xe(e){let t=De.get(e);if(!t)return[];let n=[];for(let e of Ce){let r=t.get(oT(e));r&&n.push({heading:e.heading,comment:r})}return n}function Ze(e,t){let n=t.trim(),r=De.get(e.bucketKey)??new Map;De.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&De.delete(e.bucketKey),Et()}function Qe(e){if(xe||ge)return;let t={bucketKey:Ke(),sectionSlot:oT(e)},n=j(`div`,`plan-comment-composer`),r=j(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),i=j(`textarea`,`plan-comment-input`);i.maxLength=qr,i.value=De.get(t.bucketKey)?.get(t.sectionSlot)??``,r.append(i);let a=j(`div`,`plan-comment-actions`),o=j(`button`,`plan-control plan-comment-cancel`,`Cancel`);o.type=`button`;let s=j(`button`,`plan-control plan-comment-save`,`Save comment`);s.type=`button`,a.append(o,s),n.append(r,a);let c={target:t,element:n,field:i};je=c,i.addEventListener(`input`,Tt),o.addEventListener(`click`,()=>{je===c&&(je=null,Et())}),s.addEventListener(`click`,()=>{je===c&&(je=null),Ze(t,i.value)}),Et(),i.focus()}function $e(e){let t={bucketKey:Ke(),sectionSlot:oT(e)};if(je?.target.bucketKey===t.bucketKey&&je.target.sectionSlot===t.sectionSlot)return je.element;let n=qe()?.get(t.sectionSlot);if(!n)return null;let r=j(`div`,`plan-comment-card`),i=j(`div`,`plan-comment-head`),a=j(`button`,`plan-control plan-comment-edit`,`Edit`);a.type=`button`,a.addEventListener(`click`,()=>Qe(e));let o=j(`button`,`plan-control plan-comment-remove`,`Remove`);return o.type=`button`,o.disabled=ge,a.disabled=ge,o.addEventListener(`click`,()=>Ze(t,``)),i.append(j(`span`,`plan-comment-label`,`Your comment`),a,o),r.append(i,j(`p`,`plan-comment-text`,n)),r}function et(t,n,r={}){if(!E||n.revision===null||ge)return!1;let i=qw(r);if(i!==null)return Be(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return e.sendDecision(E,a)?(we=null,ge=!0,_e=Pw(t)?n:null,Et(),!0):(Be(G),!1)}function tt(e){if(!ve)return{};let t=ie.value;return t===lT(E,e.agentId,e.revision)?{}:{plan:t}}function nt(e){let t=Ge(E,e.agentId,e.revision),n=Xe(t);n.length!==0&&et(`revise`,e,{comments:n})&&e.revision!==null&&(Te={bucketKey:t,agentId:e.agentId,revision:e.revision},Et())}function rt(e){let t={agentId:D,revision:ue};e===`revise`?nt(t):et(e===`approve`&&!w.hidden&&T.checked?`approve-accept-edits`:e,t,tt(t))}function it(e){je=null,ve=e===`edit`,be=e===`changes`,ve&&ye!==Ke()&&(ie.value=lT(E,D,ue)??``,ye=Ke()),we=null,Et()}function at(e){return`${e.kind}:${Ue(e.agentId,e.revision)}`}function ot(e){for(Oe.set(at(e),e);Oe.size>tT;){let e=Oe.keys().next().value;if(typeof e!=`string`)break;Oe.delete(e)}}function st(e,t){return e.agentId===t.agentId?e.kind===`draft`?t.revision===0:t.revision===0?!1:e.revision===null||e.revision===t.revision:!1}function ct(e){for(let[t,n]of Oe)if(st(n,e))return Oe.delete(t),n;return null}function lt(){for(let[e,t]of Oe)if(t.kind===`draft`)return Oe.delete(e),t;return null}function ut(){if(Oe.size!==1)return null;let e=Oe.entries().next().value;return e?(Oe.delete(e[0]),e[1]):null}function dt(){if(!E)return;let t=We();fe!==t&&e.requestPlan(E,D,ue??void 0)&&(fe=t,ot({kind:`selection`,agentId:D,revision:ue}))}function O(){t.hidden||dt()}function ft(){return Bw(le,D,ue)}function pt(t){if(!E)return;let n=Ue(D,t);me!==n&&e.requestPlan(E,D,t)&&(me=n,ot({kind:`diff-base`,agentId:D,revision:t}))}function mt(){if(!E)return;let t=`${E}:${D??`main`}`;he!==t&&e.requestDraft(E,D)&&(he=t,ot({kind:`draft`,agentId:D,revision:null}))}function ht(e,t){return`${e??``}:${t??``}`}function gt(){return le.reviews.find(e=>e.agentId===D)?.revisions.find(e=>e.revision===ue)?.receivedAt??0}function _t(){let e=Ee.get(ht(E,D));return e!==void 0&&e>gt()}function vt(){xe?(ze(),Et()):(je=null,ve=!1,be=!1,mt(),Et())}x.addEventListener(`click`,vt);function yt(e){re.replaceChildren(),r.replaceChildren(),ke=[];for(let t of e){let e=t.id??`plan-introduction`,n=t.heading??`Introduction`,i=j(`button`,`plan-heading-link`,n);i.type=`button`,i.dataset.level=String(t.level),i.dataset.headingId=e,i.title=n,i.dataset.commented=String(qe()?.has(oT(t))===!0),ke.push(i),i.addEventListener(`click`,()=>Ie(e)),re.append(i);let a=j(`option`,null,n);a.value=e,r.append(a)}}function bt(e){let t=ft();if(t===null){C.append(j(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let n=lT(E,D,t);if(n===null){C.append(j(`p`,`plan-loading`,`Loading the previous revision`)),pt(t);return}let r=Mw(n,e);r.isTooLarge?(C.append(j(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),C.append(Ym(Wm(e)))):C.append(Qm(r))}function xt(e){if(C.replaceChildren(),ve){yt(Ce),C.append(ie);return}if(e===null){if(Ce=[],yt(Ce),pe===We()){C.append(j(`p`,`plan-loading`,`This plan revision could not be loaded`));return}C.append(j(`p`,`plan-loading`,`Loading plan`)),dt();return}let t=Wm(e);if(Ce=Gm(t),yt(Ce),be){bt(e);return}if(xe){C.append(Ym(t));return}let n=qe();C.append(Xm(Ce,{hasComment:e=>n?.has(oT(e))===!0,isComposing:e=>je?.target.bucketKey===Ke()&&je.target.sectionSlot===oT(e),onComment:Qe,attachmentFor:$e}))}function St(e){s.hidden=e.tabs.length<2,c.replaceChildren();for(let t of e.tabs){let e=j(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,Me?`radio`:`tab`),e.setAttribute(Me?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{D=t.agentId,ue=null,we=null,fe=``,pe=``,me=``,he=``,ze(),Ne(!1,Me),Et()}),c.append(e)}}function k(){return xe?Se:lT(E,D,ue)}function Ct(e){return Zw({state:le,selectedAgentId:D,selectedRevision:ue,body:e,isConnected:de,isDecisionInFlight:ge,isDraft:xe,pendingCommentCount:Je(),hasUnsavedComment:Ye(),problem:we})}function wt(e){oe.textContent=e.status,oe.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);w.hidden=!t,T.disabled=!t;for(let t of e.actions){let e=ce.get(t.kind);e&&(e.disabled=!t.enabled)}}function Tt(){wt(Ct(k()))}function Et(){let e=Me&&i.contains(document.activeElement),t=Zw({state:le,selectedAgentId:D,selectedRevision:ue,body:null,isConnected:de});(D!==t.selectedAgentId||ue!==t.selectedRevision)&&ze(),D=t.selectedAgentId,ue=t.selectedRevision,ye!==Ke()&&(ye=null);let n=k(),a=Ct(n);St(a);let s=a.revisions.findIndex(e=>e.selected),c=a.revisions[s],l=Date.now();u.hidden=a.revisions.length<2,p.textContent=`Rev ${s+1} of ${a.revisions.length}`,m.textContent=c?Vw(c.receivedAt,l):``,d.disabled=s<=0,f.disabled=s<0||s>=a.revisions.length-1,h.replaceChildren();for(let e of[...a.revisions].reverse()){let t=j(`button`,`plan-revision-option`);t.type=`button`,t.dataset.revision=String(e.revision),t.setAttribute(`role`,`radio`),t.setAttribute(`aria-checked`,String(e.selected)),t.tabIndex=e.selected?0:-1,t.append(j(`span`,`plan-revision-name`,e.label),j(`span`,`plan-revision-age`,Vw(e.receivedAt,l))),e.isOpen&&t.append(j(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Ve(e.revision)),h.append(t)}_.replaceChildren();let g=ve?`edit`:be?`changes`:`read`,v=a.modes.find(e=>e.kind===g&&e.enabled)??a.modes[0];for(let e of a.modes){let t=j(`button`,`plan-control plan-mode`,e.label);t.type=`button`,t.dataset.mode=e.kind,t.disabled=!e.enabled,t.setAttribute(`role`,`radio`),t.setAttribute(`aria-checked`,String(e.kind===g)),t.tabIndex=e.kind===v.kind?0:-1,t.addEventListener(`click`,()=>{t.disabled||(it(e.kind),_.querySelector(`[aria-checked="true"]`)?.focus())}),_.append(t)}y.hidden=!_t()&&!xe,x.hidden=y.hidden,x.setAttribute(`aria-pressed`,String(xe)),wt(a),xt(n),r.disabled=ke.length===0,Re(),e&&!i.contains(document.activeElement)&&o.focus()}function Dt(t){_e!==null&&Iw(t,_e.agentId)&&(_e=null,ye=null,e.showTerminal())}function Ot(e){je=null,e!==E&&(_e=null,ge=!1,we=null,Oe.clear()),Ne(!1,!1),E=e,t.hidden=!1,fe=``,pe=``,Et(),O()}function kt(){je=null,Ne(!1,!1),t.hidden=!0}function At(e,t){return t.kind!==`selection`||e.agentId!==D?!1:t.revision===null?ue===null||ue===e.revision:t.revision===ue}function jt(e){e.kind===`draft`?(he=``,Be(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?me=``:pe=Ue(e.agentId,e.revision)}function Mt(e){Te!==null&&zw(e,Te.agentId)!==Te.revision&&(De.delete(Te.bucketKey),Te=null)}function Nt(e){ge=!1,Pt({reviews:e.reviews});let t=e.body;if(!t){let e=ut()??lt();e!==null&&jt(e);return}let n=ct(t);if(t.revision===0){if(he=``,n===null||t.agentId!==D)return;Se=t.plan,xe=!0}else sT(e.id,t),n!==null&&At(t,n)&&(D=t.agentId,ue=t.revision,fe=``,pe=``)}function Pt(e){let t=zw(e,D);t!==null&&t!==zw(le,D)&&(ue=t,ze()),Mt(e),le=e,ge=!1,Dt(e)}function Ft(e){let n=!1;e.state&&Pt(e.state),e.draft&&Ee.set(ht(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(_e=null,ge=!1,Te=null,e.refusalText&&(we=e.refusalText)),typeof e.isConnected==`boolean`&&(n=e.isConnected&&!de,de=e.isConnected,n&&(fe=``,pe=``,me=``,he=``,ge=!1)),e.requestFailed&&(pe=fe),e.response&&Nt(e.response),t.hidden||Et(),(n||e.decisionRefused)&&O()}return{el:t,show:Ot,hide:kt,update:Ft}}function dT(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 fT(e,t){let n=[],r=new Set(e.files.map(e=>e.path));for(let i of e.links){let a=t.get(i.providerRepo),o=a?.firstChangedPathByDirectory.get(i.packageDir),s=o??i.importers.find(e=>r.has(e))??i.importers[0]??i.consumerManifest,c=o&&a?a.repo:e,l=i.importerCount===1?`file`:`files`,u=i.providerChangedPathCount===1?`file`:`files`,d=i.changedImporterCount===1?`file`:`files`,f=i.isLocalLink?`Linked locally (${i.versionSpec}), so ${i.providerRepo} changes reach it now.`:`Uses ${i.versionSpec} from the registry, so ${i.providerRepo} changes reach it only after a publish.`;i.providerChangedPathCount>0&&(f+=` ${i.providerRepo} changed ${i.providerChangedPathCount} ${u} in ${i.packageDir||`the repository root`}.`),i.changedImporterCount>0&&(f+=` ${i.changedImporterCount} importing ${d} changed here.`),n.push({factId:i.factId,kind:`link`,severity:6,path:s,openPath:`${c.sessionPathPrefix}${s}`,headline:`${e.name} imports ${i.packageName} from ${i.providerRepo} in ${i.importerCount} ${l}`,detail:f})}for(let t of e.collisions)n.push({factId:t.factId,kind:`collision`,severity:5,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`${t.path} is also changed in "${t.otherSessionName}"`,detail:`Another live session is changing this file.`});for(let t of e.coChangeGaps){let r=t.confidence>0?Math.round(t.support/t.confidence):0;n.push({factId:t.factId,kind:`co-change`,severity:4,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`Usually changes with ${t.partner} (${t.support} of ${r} commits)`,detail:`${t.partner} is absent from these changes.`})}for(let t of e.untestedFiles)n.push({factId:t.factId,kind:`untested`,severity:3,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`No test reaches ${t.path}`,detail:`No dependent test was found in the import graph.`});for(let t of e.hotspots)n.push({factId:t.factId,kind:`hotspot`,severity:2,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`${t.path} is a hotspot`,detail:`${t.fixCommitCount} of its last ${t.commitCount} commits were fixes.`});for(let t of e.blastRadius)t.transitiveDependentCount<10||n.push({factId:t.factId,kind:`blast`,severity:1,path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,headline:`Wide blast radius: ${t.transitiveDependentCount} files depend on ${t.path}`,detail:`${t.directDependentCount} direct dependents; ${t.dependentTestCount} dependent tests.`});return n.sort((e,t)=>t.severity-e.severity||e.path.localeCompare(t.path)||e.factId.localeCompare(t.factId))}function pT(e,t){let n=new Map(e.blastRadius.map(e=>[e.path,e])),r=e.files.filter(e=>e.isCommitted).length;return{header:{name:e.name,fileCount:e.files.length,committedCount:r,uncommittedCount:e.files.length-r,base:e.base},subsystems:e.subsystems.map(e=>({title:e.title,fileCount:e.paths.length})),warnings:fT(e,t),files:e.files.map(t=>({path:t.path,openPath:`${e.sessionPathPrefix}${t.path}`,status:t.status,isCommitted:t.isCommitted,dependentCount:n.get(t.path)?.transitiveDependentCount??0,testCount:n.get(t.path)?.dependentTestCount??0})),error:e.error}}function mT(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:dT(r)});let r=e.repos.map(e=>pT(e,n));return{repos:!e.error&&r.every(e=>e.header.fileCount===0&&e.warnings.length===0&&!e.error)?[]:r,narrative:{state:e.narratorState,claims:e.narratorState===`ready`?e.narrative?.claims.map(e=>({text:e.text,factIds:e.factIds}))??[]:[],status:{disabled:null,pending:`Narrative is being prepared.`,ready:null,failed:`Narrative could not be prepared.`}[e.narratorState]},error:e.error??null}}function hT(e,t,n,r){let i=j(`button`,n);return i.type=`button`,i.title=`Open ${e} in the diff`,i.addEventListener(`click`,()=>r(t)),i}function gT(e,t){let n=j(`section`,`review-map-repo`),r=j(`div`,`review-map-repo-head`);r.append(j(`strong`,`review-map-repo-name`,e.header.name)),n.append(r);let i=j(`div`,`review-map-summary`);if(i.append(j(`span`,``,`${e.header.committedCount} committed`)),i.append(j(`span`,``,`${e.header.uncommittedCount} uncommitted`)),i.append(j(`span`,``,`Base: ${w(e.header.base,{chars:8})||`unknown`}`)),n.append(i),e.error&&n.append(j(`p`,`review-map-error`,e.error)),e.subsystems.length>0){let t=j(`div`,`review-map-subsystems`);for(let n of e.subsystems)t.append(j(`span`,`review-map-chip`,`${n.title} (${n.fileCount})`));n.append(t)}if(e.warnings.length>0){n.append(j(`h3`,`review-map-label`,`Signals`));let r=j(`div`,`review-map-warnings`);for(let n of e.warnings){let e=hT(n.path,n.openPath,`review-map-warning`,t);e.dataset.severity=String(n.severity),e.dataset.kind=n.kind,e.append(j(`span`,`review-map-warning-headline`,n.headline)),e.append(j(`span`,`review-map-detail`,n.detail)),r.append(e)}n.append(r)}if(e.files.length>0){n.append(j(`h3`,`review-map-label`,`Files`));let r=j(`div`,`review-map-files`);for(let n of e.files){let e=hT(n.path,n.openPath,`review-map-file`,t);e.dataset.status=n.status,e.append(j(`span`,`review-map-file-path`,n.path)),e.append(j(`span`,`review-map-file-meta`,`${n.status} · ${n.isCommitted?`committed`:`uncommitted`} · ${n.dependentCount} dependents · ${n.testCount} tests`)),r.append(e)}n.append(r)}return n}function _T(e,t){let n=j(`div`,`review-map`);if(e.error&&n.append(j(`p`,`review-map-error`,e.error)),e.narrative.status&&n.append(j(`p`,`review-map-narrative-status`,e.narrative.status)),e.narrative.claims.length>0){let t=j(`section`,`review-map-narrative`);t.append(j(`h3`,`review-map-label`,`Narrative`));for(let n of e.narrative.claims){let e=j(`p`,`review-map-claim`,n.text);e.dataset.factIds=n.factIds.join(` `),t.append(e)}n.append(t)}for(let r of e.repos)n.append(gT(r,t));return n}function vT(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 yT(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=vT(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 bT(e,t,n,r){return`${e}:${r}:${n}:${t}`}function xT(e,t,n){if(!e)return[];let r=new Set;if(e.committed!==t.committed&&r.add(`committed`),e.uncommitted!==t.uncommitted&&r.add(`uncommitted`),r.size===0)return[];let i=[];for(let e of n)r.has(e.slice(0,e.indexOf(`:`)))&&i.push(e);return i}function ST(e,t){return t.type===`del`?t.oldLineNumber===null?null:{path:e.path,line:t.oldLineNumber,side:`old`}:t.newLineNumber===null?null:{path:e.path,line:t.newLineNumber,side:`new`}}function CT(e,t){return t===`merged`||t===`none`||e===`parked`&&t===`pending-review`}function wT(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 TT({status:e,mergeReason:t,fetched:n,hasDiffError:r,hasChanges:i,hasCommits:a,canMerge:o,isWorkspace:s,live:c,effectiveBase:l}){return e===`parked`&&t===`base-diverged`?{text:`Parked: base branch diverged`,namesMergeTarget:!1}:e===`parked`?{text:`Parked: merge conflict`,namesMergeTarget:!1}:e===`merging`?{text:`Merging`,namesMergeTarget:!1}:e===`merged`?{text:`Merged`,namesMergeTarget:!1}:r?{text:`Could not read changes`,namesMergeTarget:!1}:n?i?s?{text:`Changes in this worktree`,namesMergeTarget:!1}:o?{text:`Ready to merge into ${OT(l)}`,namesMergeTarget:!0}:c?a?{text:`Not ready to merge`,namesMergeTarget:!1}:{text:`Uncommitted changes`,namesMergeTarget:!1}:{text:`Session ended`,namesMergeTarget:!1}:{text:`No changes yet`,namesMergeTarget:!1}:{text:`Checking for changes`,namesMergeTarget:!1}}function ET(e,t){return e.namesMergeTarget?null:`merges into ${OT(t)}`}function DT({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 OT(e){return e||`base`}function kT(e,t){return`Merge into ${OT(e)}, push it, and rebase this worktree, then keep working (${t})`}function AT(e){return e===`base-diverged`?`Resync the base branch by hand, then Merge again.`:`Needs manual merge`}function jT(e,t,n){let r=e!==`parked`||e===`parked`&&t===`base-diverged`;return{isRendered:r,isEnabled:r&&e!==`merging`&&n}}function MT({status:e,hasCommits:t,live:n,state:r}){return e===`merging`||!t?null:!n&&(e===`parked`||e===`merged`)?`Session ended.`:!n||e===`parked`?null:r===`INITIALIZING`||r===`STARTING`?`Starting up. Mergeable once the session is live.`:null}function NT({fetched:e,changedFileCount:t,hasCommits:n}){return!e||t>0||n}function PT(e){return e||`its upstream`}function FT(e){if(!e)return null;let t=e.branch||`Base branch`,{state:n,ahead:r,behind:i}=e,a=PT(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 IT(e){return!e||e.fetched===!1?`recheck`:e.state===`ahead`||e.state===`behind`?`resync`:`recheck`}function LT(e,t,n){let r=n?` (${t})`:``;if(!e||IT(e)===`recheck`)return`Click to fetch and check again${r}`;let i=e.branch||`Base branch`,a=PT(e.upstream);return e.state===`behind`?`Click to fast-forward ${i} to ${a}${r}`:`Click to push ${i} to ${a}${r}`}function RT(e){return e?.state!==`in-sync`||e.fetched===!1}function zT({fetched:e,changedFileCount:t,view:n}){return!e||t===0?!1:n!==`diff`}function BT(e){if(e.error)return`Resync failed: ${e.error}`;let t=e.branch||`The base branch`,n=PT(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 VT=new Set([`pending-review`,`parked`]),HT=600,UT=Gp(`merge`,Jp),WT=Gp(`resolve-or-resync`,Jp),GT={minPx:260,maxPx:700},KT=16,qT=5e3,JT=new Map,YT=new Map,XT=new Map,ZT=new Map,QT=new Map,$T=new Map,eE=new Set,tE=new Set,nE=new Set,rE=rc(),iE=null,aE=null,oE=null,sE=null,cE=new Map,lE=null,uE=null,dE=null,fE=null,pE=null,mE=null,hE=!1,gE=null,_E=null,vE=null,yE=null,bE=new Map,xE=null,SE=null,CE=new Map,wE=null,TE=null,EE=null,DE=null,OE=null,kE=new Map,AE=new Map,jE=0,ME=null,NE=!1,PE=null;function FE(e,t){let n=j(`button`,`review-icon-button`);return n.type=`button`,n.title=e,n.setAttribute(`aria-label`,e),n.append(h_(t)),n}function IE(){hE=!1,oE?.querySelector(`.review-more-menu`)?.remove(),oE?.querySelector(`.review-more-button`)?.setAttribute(`aria-expanded`,`false`)}function LE({panel:e}){if(aE=e,!aE)return;let t=aE,n=j(`div`,`review-sidebar-head`),r=j(`span`,`review-sidebar-title`,`Review`);mE=j(`span`,`review-sidebar-session`),r.append(mE);let i=e=>{t.toggleAttribute(`data-collapsed`,e),nc(!e)},a=j(`div`,`review-header-tabs`);a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,`Review view`);for(let[e,t]of[[`map`,`Map`],[`diff`,`Diff`],[`notes`,`Notes`]]){let n=j(`button`,`review-header-tab`,t);n.type=`button`,n.addEventListener(`click`,()=>WD(e)),cE.set(e,n),a.append(n)}lE=j(`span`,`review-notes-count`),a.append(lE);let o=FE(`Close review`,`M6 3L11 8L6 13`);o.classList.add(`review-sidebar-close`),o.addEventListener(`click`,()=>i(!0)),n.append(r,a,o);let s=j(`div`,`review-sidebar-rail`),c=FE(`Open review`,`M10 3L5 8L10 13`);c.classList.add(`review-sidebar-open`),c.addEventListener(`click`,()=>i(!1)),dE=j(`div`,`review-rail-status`),fE=j(`span`,`review-rail-added`),pE=j(`span`,`review-rail-removed`),dE.append(fE,pE),uE=j(`span`,`review-rail-label`,`Review`),s.append(c,uE,dE),oE=j(`div`,`review-controls`),sE=j(`div`,`review-sidebar-body`),wE=j(`div`,`review-notes-footer`),TE=j(`button`,`review-btn review-btn-primary`,`Send notes`),TE.type=`button`,TE.title=`Paste the drafted review notes into this session as one message`,TE.addEventListener(`click`,kD),EE=j(`div`,`review-notes-status`),wE.append(EE,TE),OE=j(`div`,`review-notes-list`),DE=j(`div`,`review-notes-outcome`),DE.setAttribute(`role`,`status`);let l=j(`div`,`review-resize-handle`);l.setAttribute(`role`,`separator`),l.setAttribute(`aria-orientation`,`vertical`),l.setAttribute(`aria-label`,`Resize review sidebar`),l.tabIndex=0,t.append(s,n,oE,sE,DE,wE,l),t.toggleAttribute(`data-collapsed`,!tc()),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&hE&&(e.preventDefault(),IE(),oE?.querySelector(`.review-more-button`)?.focus())}),document.addEventListener(`pointerdown`,e=>{hE&&e.target instanceof Element&&(oE?.contains(e.target)&&e.target.closest(`.review-more-button, .review-more-menu`)||IE())}),n_({resizer:l,column:t,widthHost:t,widthProperty:`--sidebar-width`,bounds:GT,keyStepPx:KT,getStoredWidth:Ac,setStoredWidth:jc,growsLeftward:!0}),Uv(e=>{hE=!1,vE=null,tE.clear(),nE.clear(),iE=null,SD(),e&&pD(e),e&&!hD(e)&&gD(e),XD()}),XD()}function RE(e){aE&&(e?xr(aE,e):Sr(aE))}function zE(e,t){let n=JT.get(e);JT.set(e,t),CT(n,t)&&(XT.delete(e),ZT.delete(e),QT.delete(e),e===Vv()&&mD(e)),e===Vv()&&XD()}function BE(e,t,n=null){let r=t||`none`;YT.set(e,n);let i=bE.get(e);i!==void 0&&i!==r&&bE.delete(e),zE(e,r)}function VE(e){let t=wr(e);t&&bE.delete(t)&&t===Vv()&&XD()}function HE(e,t,n=null){YT.set(e,n),bE.delete(e),zE(e,t||`none`)}function UE(e,t){let n=XT.get(e)??null;XT.set(e,t),ZT.delete(e),e===Vv()&&(qE(n,t),iE&&GD(iE,t),XD(),KD())}function WE(e,t){let n=wr(e);n&&(ZT.set(n,t),n===Vv()&&XD())}function GE(e,t){let n=wr(e);if(!n)return;let r=Mi.safeParse(t);r.success&&r.data.sessionId===n&&(QT.set(n,r.data),n===Vv()&&XD())}function KE(e){return{committed:e?.committed?.diff||``,uncommitted:e?.uncommitted?.diff||``}}function qE(e,t){if(!e)return;let n=ME===null?[...kE.keys()]:[...kE.keys(),ME];if(n.length===0)return;let r=new Set(xT(KE(e),KE(t),n));if(r.size===0)return;ME!==null&&r.has(ME)&&JE(ME);for(let e of r){let t=kE.get(e);t&&YE(t),kE.delete(e)}let i=AE.size;PE=i===0?null:`The diff changed under ${i} note${i===1?``:`s`}. ${i===1?`It is`:`They are`} kept under Notes as no longer attached and will not be sent.`}function JE(e){ME=null;let t=CE.get(e),n=sE?.querySelector(`[data-editor-for="${CSS.escape(e)}"] input`)?.value.trim()??``;t&&n&&kE.get(e)?.note!==n&&YE({...t.target,section:t.section,note:n})}function YE(e){AE.set(`orphan:${jE}`,e),jE+=1}function XE(e,t){let n=wr(e),r=t;$T.set(n,r),r&&r.action!==void 0&&ZE(n,r),n===Vv()&&XD()}function ZE(e,t){eE.delete(e),clearTimeout(SE??void 0),SE=null;let n=BT(t);xE=n?{forId:e,text:n,isError:!!t.error}:null,xE&&!xE.isError&&(SE=setTimeout(()=>{xE&&xE.forId===e&&(xE=null),XD()},5e3))}function QE(e){let t=wr(e);t&&t===Vv()&&pD(t)}function $E(e){let t=wr(e);if(t!==Vv())return;let n=!XT.has(t)||ZT.has(t),r=!QT.has(t)||eD(QT.get(t));n&&pD(t),r&&!n&&mD(t),XD()}function eD(e){return e?!!e.error||e.repos.some(e=>e.error!==null):!1}function tD(e){let t=wr(e);JT.delete(t),YT.delete(t),XT.delete(t),ZT.delete(t),QT.delete(t),$T.delete(t),eE.delete(t),xE&&xE.forId===t&&(clearTimeout(SE??void 0),xE=null),t===Vv()?Hv(null):XD()}function nD(){let e=Vv(),t=e?P.get(e):null;if(!e||!t)return rD(null,`No session is open to merge.`);if(hD(e))return rD(e,`A workspace session has no worktree to merge.`);if(bE.has(e))return rD(e,`Merge is already on its way for "${xD(t,e)}".`);let n=JT.get(e)||`none`,r=!!XT.get(e)?.hasCommits,i=jT(n,YT.get(e)||null,lD(t.currentState,r));return DT({status:n,mergeReason:YT.get(e)||null,live:fD(t.currentState),isMergeRendered:i.isRendered,hasChanges:cD(e)})!==`merge`||!i.isEnabled?rD(e,MT({status:n,hasCommits:r,live:fD(t.currentState),state:t.currentState})??`Nothing to merge in "${xD(t,e)}" right now.`):(uD(e,t.currentState),!0)}function rD(e,t){return vE={forId:e,text:t},clearTimeout(yE??void 0),yE=setTimeout(()=>{vE=null,XD()},qT),XD(),!1}function iD(){let e=Vv();if(!e||hD(e))return!1;let t=P.get(e);if(!t)return!1;let n=JT.get(e)||`none`,r=YT.get(e)||null;return DT({status:n,mergeReason:r,live:fD(t.currentState),isMergeRendered:jT(n,r,!1).isRendered,hasChanges:cD(e)})!==`resolve`||aD(e)?!1:(oD(e),!0)}function aD(e){return gE?.forId===e&&!gE.isError}function oD(e){let t=K({type:`resolve-session-merge`,id:e});gE=t?{forId:e,text:`Resolve prompt sent`,isError:!1}:{forId:e,text:`Not connected. The resolve prompt was not sent.`,isError:!0},clearTimeout(_E??void 0),_E=setTimeout(()=>{gE=null,XD()},t?3e3:qT),XD()}function sD(){let e=Vv();return!e||!P.has(e)||hD(e)||vD(e)?!1:(yD(e),!0)}function cD(e){let t=XT.get(e)??null,n=[...yT(t?.committed?.diff||``),...yT(t?.uncommitted?.diff||``)];return NT({fetched:XT.has(e),changedFileCount:wT(n).files,hasCommits:!!t?.hasCommits})}function lD(e,t){return($n.includes(e)||e===A.RUNNING)&&t}function uD(e,t){t===A.RUNNING?tf({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:()=>dD(e,!0)}):dD(e,!1)}function dD(e,t){bE.has(e)||(K(t?{type:`merge-continue-session`,id:e,force:!0}:{type:`merge-continue-session`,id:e})?(bE.set(e,JT.get(e)||`none`),e===Vv()&&XD()):rD(e,`Not connected. The merge was not sent.`))}function fD(e){return e!==A.DORMANT&&e!==A.DONE&&e!==A.FAILED}function pD(e){K({type:`request-session-diff`,id:e}),mD(e)}function mD(e){QT.has(e)||QT.set(e,null),K({type:`request-change-map`,id:e})}function hD(e){return P.get(e)?.card.dataset.workspace!==void 0}function gD(e){$T.set(e,null),K({type:`request-branch-sync`,id:e}),e===Vv()&&XD()}function _D(e){eE.add(e),clearTimeout(SE??void 0),xE&&xE.forId===e&&(xE=null),K({type:`resync-branch`,id:e}),e===Vv()&&XD()}function vD(e){return eE.has(e)||$T.get(e)===null}function yD(e){vD(e)||(IT($T.get(e))===`resync`?_D(e):gD(e))}function bD(e,t){return t?{text:`Resyncing`,loading:!0,error:!1}:xE&&xE.forId===e?{text:xE.text,loading:!1,error:xE.isError}:null}function xD(e,t){return e?.card?.dataset.session||t}function SD(){kE.clear(),AE.clear(),ME=null,PE=null,NE=!1}function CD(e){return kE.get(e)??null}function wD(){return`${kE.size} note${kE.size===1?``:`s`} drafted`}function TD(e,t,n){let r=j(`div`,`review-notes-entry`),i=t.side===`old`?` (removed line)`:``,a=n?`, no longer attached: the diff changed, not sent`:``;r.append(j(`span`,`review-notes-entry-where`,`${t.section} ${t.path}:${t.line}${i}${a}`)),r.append(j(`span`,`review-notes-entry-note`,t.note));let o=j(`button`,`review-note-remove`,`Remove`);return o.type=`button`,o.title=`Drop this note`,o.addEventListener(`click`,()=>n?HD(e):UD(e)),r.append(o),r}function ED(){if(OE){OE.replaceChildren(),OE.hidden=kE.size===0&&AE.size===0;for(let[e,t]of kE)OE.append(TD(e,t,!1));for(let[e,t]of AE)OE.append(TD(e,t,!0))}}function DD(){if(!wE||!TE||!EE)return;let e=Vv(),t=!!e&&P.has(e);wE.hidden=!t||rE===`map`||kE.size===0,TE.disabled=NE||kE.size===0,EE.textContent=wD(),lE&&(lE.hidden=kE.size===0,lE.textContent=String(kE.size),lE.setAttribute(`aria-label`,wD())),DE&&(DE.textContent=NE?`Sending notes...`:PE,DE.hidden=!t||rE===`map`||!DE.textContent),ED(),rE===`notes`&&t&&OD()}function OD(){sE&&OE&&(sE.replaceChildren(),kE.size===0&&AE.size===0?eO(`No notes yet`,`Open the Diff tab and press note on a line to draft one.`):sE.append(OE))}function kD(){let e=Vv();e&&!NE&&kE.size!==0&&(NE=!0,PE=null,DD(),hd(`send-diff-annotations`,{id:e,annotations:[...kE.values()]}).then(MD,AD))}function AD(e){NE=!1;let t=e instanceof Error?e.message:``;PE=t?`Could not send the notes: ${t}.`:`Could not send the notes.`,DD()}function jD(e){return e.type===`send-diff-annotations-result`&&typeof e.error==`string`&&e.error?e.error:e.type===`error`&&typeof e.message==`string`&&e.message?e.message:`Could not send the notes.`}function MD(e){NE=!1,e.type!==`send-diff-annotations-result`||e.ok!==!0?(PE=jD(e),DD()):e.pending===!0?(PE=`Notes queued until the session wakes. They stay drafted here, and pressing Send notes again re-sends them.`,DD()):(PE=`Notes sent.`,kE.clear(),ME=null,XD())}function ND(e,t){let n=j(`div`,`review-note`);n.dataset.noteFor=e,n.append(j(`span`,`review-note-text`,t));let r=j(`button`,`review-note-remove`,`Remove`);return r.type=`button`,r.title=`Drop this note`,r.addEventListener(`click`,()=>UD(e)),n.append(r),n}function PD(e,t){let n=j(`div`,`review-note-editor`);n.dataset.editorFor=e;let r=j(`input`,`review-note-input`);r.type=`text`,r.value=t,r.maxLength=Co,r.placeholder=`Note for this line`,r.addEventListener(`keydown`,t=>{t.key===`Enter`?(t.preventDefault(),VD(e,r.value)):t.key===`Escape`&&(t.preventDefault(),BD())});let i=j(`button`,`review-note-save`,`Save`);i.type=`button`,i.addEventListener(`click`,()=>VD(e,r.value));let a=j(`button`,`review-note-cancel`,`Cancel`);return a.type=`button`,a.addEventListener(`click`,BD),n.append(r,i,a),n}function FD(e){let t=[],n=CD(e);return ME===e&&t.push(PD(e,n?n.note:``)),n&&t.push(ND(e,n.note)),t}function ID(e,t){let n=FD(t);return e.after(...n),n}function LD(e){let t=e.nextElementSibling;for(;t instanceof HTMLElement&&(t.dataset.noteFor!==void 0||t.dataset.editorFor!==void 0);){let e=t.nextElementSibling;t.remove(),t=e}}function RD(e){let t=CE.get(e);if(!t)return;let n=null;for(let r of t.rows){LD(r);let t=ID(r,e);for(let e of t){let t=e.querySelector(`input`);!n&&t instanceof HTMLInputElement&&(n=t)}}n&&(n.focus(),n.select())}function zD(e){let t=ME;ME=e,t&&t!==e&&RD(t),RD(e)}function BD(){let e=ME;e&&(ME=null,RD(e))}function VD(e,t){let n=CE.get(e);if(!n)return;let r=t.trim();r&&(kE.size>=50&&!kE.has(e)?(PE=`Only 50 notes can be sent at once.`,DD()):(kE.set(e,{...n.target,section:n.section,note:r}),PE=null,ME=null,RD(e),DD()))}function HD(e){AE.delete(e),PE=null,DD()}function UD(e){kE.delete(e),PE=null,RD(e),DD()}function WD(e){rE=e,e!==`diff`&&(iE=null),ic(e),XD()}function GD(e,t){if(!t)return;let n=yT(t.committed?.diff),r=yT(t.uncommitted?.diff);for(let t of n)(t.path===e||t.oldPath===e)&&tE.add(`committed:${t.path}`);for(let t of r)(t.path===e||t.oldPath===e)&&tE.add(`uncommitted:${t.path}`)}function KD(){if(!sE||!iE)return;let e=sE.querySelectorAll(`.review-file`);for(let t of e)if(t.dataset.path===iE||t.dataset.oldPath===iE){t.scrollIntoView({block:`nearest`}),iE=null;return}}function qD(e){iE=e,GD(e,XT.get(Vv()??``)),WD(`diff`),KD()}function JD(){if(ME===null||!sE)return null;let e=sE.querySelector(`[data-editor-for="${CSS.escape(ME)}"] input`);return e?{noteKey:ME,text:e.value,selectionStart:e.selectionStart,selectionEnd:e.selectionEnd,hadFocus:document.activeElement===e}:null}function YD(e){if(!e||e.noteKey!==ME||!sE)return;let t=sE.querySelector(`[data-editor-for="${CSS.escape(e.noteKey)}"] input`);t&&(t.value=e.text,e.hadFocus&&(t.focus({preventScroll:!0}),t.setSelectionRange(e.selectionStart,e.selectionEnd)))}function XD(){let e=JD(),t=sE?.scrollTop??0;ZD(),YD(e),sE&&(sE.scrollTop=t)}function ZD(){if(!oE||!sE)return;oE.replaceChildren(),sE.replaceChildren();for(let[e,t]of cE)t.setAttribute(`aria-pressed`,String(rE===e));CE.clear(),DD(),uE&&(uE.hidden=!0),dE&&(dE.hidden=!0);let e=Vv(),t=e?P.get(e):null;if($D(e,t),!e||!t){vE&&oE.append(QD(vE.text,!0)),eO(`No session selected`,`Click a session name to review its changes here.`);return}let n=hD(e),r=JT.get(e)||`none`,i=YT.get(e)||null,a=t.currentState,o=VT.has(r),s=XT.has(e),c=s?XT.get(e):null,l=ZT.get(e)??null,u=c?yT(c.committed?.diff||``):[],d=c?yT(c.uncommitted?.diff||``):[],f=!!c?.hasCommits,p=fD(a),m=jT(r,i,lD(a,f)),h=$T.get(e),g=eE.has(e),_=OT(t.effectiveBase),v=wT([...u,...d]),y=DT({status:r,mergeReason:i,live:p,hasChanges:NT({fetched:s,changedFileCount:v.files,hasCommits:f}),isMergeRendered:m.isRendered}),b=TT({status:r,mergeReason:i,fetched:s,hasDiffError:l!==null,hasChanges:v.files>0||f,hasCommits:f,canMerge:!n&&m.isEnabled,isWorkspace:n,live:p,effectiveBase:_}),x=j(`div`,`review-status-headline`);if(x.append(j(`span`,`review-status-text`,b.text)),!n&&!RT(h)){let t=FT(h);if(t){x.title=t;let n=FE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);n.classList.add(`review-branch-sync-refresh`),n.title=LT(h,WT,y!==`resolve`),n.disabled=vD(e),n.setAttribute(`aria-description`,t),n.addEventListener(`click`,()=>yD(e)),x.append(j(`span`,`sr-only`,t),n)}}oE.append(x);let S=j(`div`,`review-status-meta`);if(zT({fetched:s,changedFileCount:v.files,view:rE})&&S.append(j(`span`,`review-status-files`,`${v.files} file${v.files===1?``:`s`}`),j(`span`,`review-status-added`,`+${v.added}`),j(`span`,`review-status-removed`,`-${v.removed}`),j(`span`,`review-status-spacer`)),!n&&RT(h)){let t=tO(e,y!==`resolve`);t&&S.append(t)}S.childElementCount>0&&oE.append(S),r===`parked`&&oE.append(j(`div`,`review-status-explanation`,AT(i))),uE&&(uE.hidden=!1),dE&&(dE.hidden=!1,dE.setAttribute(`aria-label`,`${b.text}, +${v.added}, -${v.removed}`),dE.title=b.text),fE&&(fE.textContent=`+${v.added}`),pE&&(pE.textContent=`-${v.removed}`);let ee=n?null:aO(e,{status:r,reviewable:o,mergeAction:m,live:p,state:a,effectiveBase:_,primaryAction:y});ee&&oE.append(ee);let te=n?null:bD(e,g),ne=!n&&y===`merge`&&!m.isEnabled?MT({status:r,hasCommits:f,live:p,state:a}):null;if(ne){let e=j(`div`,`review-control-reason`,ne);e.id=`review-merge-reason`,oE.append(e),oE.querySelector(`#review-merge-btn`)?.setAttribute(`aria-describedby`,e.id)}if(te?.text){let e=j(`div`,te.loading?`review-control-reason review-loading`:`review-control-reason`,te.text);e.id=`review-resync-reason`,te.error&&e.classList.add(`review-control-reason-error`),e.setAttribute(`role`,`status`),S.append(e),S.isConnected||oE.insertBefore(S,x.nextSibling),oE.querySelector(`.review-branch-sync-button, .review-branch-sync-refresh`)?.setAttribute(`aria-describedby`,e.id)}if(gE?.forId===e&&oE.append(QD(gE.text,gE.isError)),vE&&(vE.forId===e||vE.forId===null)&&oE.append(QD(vE.text,!0)),rE!==`notes`){if(rE===`map`){let t=QT.get(e);if(!t){sE.append(j(`div`,`review-nochanges review-loading`,`Loading map...`));return}sE.append(_T(mT(t),qD))}else l?sE.append(j(`p`,`review-diff-error`,l)):(u.length>0&&sE.append(nO(`committed`,`Committed`,ET(b,_),u)),d.length>0&&sE.append(nO(`uncommitted`,`Uncommitted`,null,d)))}}function QD(e,t){let n=j(`div`,t?`review-control-reason review-control-reason-error`:`review-resolve-sent`,e);return n.setAttribute(`role`,`status`),n}function $D(e,t){if(!mE)return;let n=e&&t?xD(t,e):``;mE.textContent=n,mE.hidden=!n,mE.title=n}function eO(e,t){if(!sE)return;let n=j(`div`,`review-empty`);n.append(j(`div`,`review-empty-title`,e),j(`div`,`review-empty-desc`,t)),sE.append(n)}function tO(e,t){let n=$T.get(e);if(n===void 0)return null;if(n===null)return j(`span`,`review-branch-sync-text review-loading`,`Checking branch sync...`);let r=FT(n)||`Base branch: sync state unknown`,i=j(`span`,`review-branch-sync-text`);n.state&&(i.dataset.syncState=n.state),n.fetched===!1&&(i.dataset.stale=`true`);let a=FE(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);return a.classList.add(`review-branch-sync-button`),a.title=LT(n,WT,t),a.disabled=eE.has(e),a.addEventListener(`click`,()=>yD(e)),i.append(a,j(`span`,`review-branch-sync-label`,r)),i}function nO(e,t,n,r){let i=j(`div`,`review-section`);i.dataset.kind=e;let a=wT(r),o=j(`div`,`review-section-head`),s=j(`div`,`review-section-id`);s.append(j(`span`,`review-section-label`,t)),n&&s.append(j(`span`,`review-section-meaning`,n)),o.append(s);let c=j(`div`,`review-section-stat`);c.append(j(`span`,`review-stat-files`,`${a.files} file${a.files===1?``:`s`}`)),c.append(j(`span`,`review-add`,`+${a.added}`),j(`span`,`review-del`,`-${a.removed}`)),o.append(c),i.append(o);let l=j(`div`,`review-diff`);for(let t of r)l.append(rO(t,e));return i.append(l),i}function rO(e,t){let n=`${t}:${e.path}`,r=tE.has(n),i=j(`div`,`review-file`);i.dataset.path=e.path,e.oldPath&&(i.dataset.oldPath=e.oldPath),i.dataset.status=e.status,i.dataset.open=r?`true`:`false`;let a=j(`button`,`review-file-head`);a.type=`button`,a.setAttribute(`aria-expanded`,r?`true`:`false`);let o=j(`span`,`review-file-twisty`,r?`▾`:`▸`);o.setAttribute(`aria-hidden`,`true`),a.append(o,j(`span`,`review-file-path`,e.path));let s=j(`span`,`review-file-counts`);if(e.binary&&s.append(j(`span`,`review-bin`,`bin`)),e.binary||s.append(j(`span`,`review-add`,`+${e.added}`),j(`span`,`review-del`,`-${e.removed}`)),a.append(s),a.addEventListener(`click`,()=>{let e=tE.has(n);e&&tE.delete(n),e||tE.add(n),XD()}),i.append(a),!r)return i;let c=j(`div`,`review-file-body`);if(e.binary)return c.append(j(`div`,`review-file-binary`,`Binary file not shown`)),i.append(c),i;let l=0,u=!1;for(let r of e.hunks){if(l>=HT&&!nE.has(n)){u=!0;break}c.append(j(`div`,`review-hunk-head`,r.header));for(let i of r.lines){if(l>=HT&&!nE.has(n)){u=!0;break}let r=j(`div`,`review-line review-line-${i.type}`),a=i.type===`add`?`+`:i.type===`del`?`-`:i.type===`meta`?`\\`:` `;r.append(j(`span`,`review-line-gutter`,a)),r.append(j(`span`,`review-line-text`,i.text));let o=ST(e,i);if(c.append(r),l++,!o)continue;let s=bT(t,o.path,o.line,o.side),d=CE.get(s)??{target:o,section:t,rows:[]};d.rows.push(r),CE.set(s,d),r.dataset.noteKey=s;let f=j(`button`,`review-annotate`,`note`);f.type=`button`,f.title=`Note on ${o.path}:${o.line}`,f.addEventListener(`click`,()=>zD(s)),r.append(f),ID(r,s)}if(u)break}if(u){let e=j(`button`,`review-expand`,`Show the rest of this file`);e.type=`button`,e.addEventListener(`click`,()=>{nE.add(n),XD()}),c.append(e)}return i.append(c),i}function iO({id:e,label:t,shortcut:n,title:r,disabled:i=!1,danger:a=!1,onClick:o}){let s=j(`button`,a?`review-btn review-btn-danger`:`review-btn review-btn-primary`);return s.type=`button`,e&&(s.id=e),r&&(s.title=r),s.disabled=i,s.innerHTML=n?`${t} <kbd class="review-shortcut" aria-hidden="true">${n}</kbd>`:t,s.addEventListener(`click`,o),s}function aO(e,{status:t,reviewable:n,mergeAction:r,live:i,state:a,effectiveBase:o,primaryAction:s}){let c=j(`div`,`review-actions`),l=s===`resolve`;s===`merge`&&c.append(iO({id:`review-merge-btn`,label:`Merge`,shortcut:UT,title:kT(o,UT),disabled:!r.isEnabled||bE.has(e),onClick:()=>uD(e,a)})),l&&c.append(iO({label:`Resolve`,shortcut:WT,title:`Paste a resolve prompt into this session so the agent can finish the merge (${WT})`,disabled:aD(e),onClick:()=>oD(e)}));let u=j(`div`,`review-action-controls`);if(u.append(c),!n||i)return c.childElementCount>0?u:null;let d=FE(`More review actions`,p_);if(d.classList.add(`review-more-button`),d.setAttribute(`aria-haspopup`,`menu`),d.setAttribute(`aria-expanded`,String(hE)),d.setAttribute(`aria-controls`,`review-more-menu`),d.addEventListener(`click`,()=>{hE=!hE,XD(),(oE?.querySelector(hE?`.review-more-menu button:not(:disabled)`:`.review-more-button`)??oE?.querySelector(`.review-more-button`))?.focus()}),c.append(d),!hE)return u;let f=j(`div`,`review-more-menu`);if(f.id=`review-more-menu`,f.setAttribute(`role`,`menu`),f.setAttribute(`aria-label`,`More review actions`),n&&!i){let n=iO({label:`Discard worktree`,danger:!0,disabled:t===`merging`,onClick:()=>{hE=!1,XD(),tf({title:`Discard worktree`,message:`Throw away the worktree changes for "${xD(P.get(e),e)}"? This cannot be undone.`,confirmLabel:`Discard`,danger:!0,onConfirm:()=>K({type:`discard-session-worktree`,id:e})})}});n.setAttribute(`role`,`menuitem`),f.append(n)}return u.append(f),u}var oO=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 sO(e){let t=e.split(/\r?\n/,1)[0]?.trim()??``;return t.length<=160?t:`${t.slice(0,157)}...`}function cO(e,t){let n=oO[e];if(!n||!t||typeof t!=`object`||Array.isArray(t))return``;let r=t[n];return typeof r==`string`?sO(r):``}var lO=5e3;function uO(e){let t=e.match(/<command-name>([^<]*)<\/command-name>/)?.[1];return t===void 0||/[\r\n]/.test(t)?null:t.trim()||null}function dO(e,t){if(!e.toolUseId)return uO(e.text)??`context`;let n=t.get(e.toolUseId);return n?cO(n.name,n.input)||n.name:`expansion`}function fO(e){return e.kind!==`expansion`||e.toolUseId?!1:uO(e.text)!==null}function pO(e){return e.kind===`prompt`||e.kind===`session`||fO(e)}function mO(e){return new TextEncoder().encode(e).byteLength}function hO(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(`
163
+ `)}var gO={prompt:`PROMPT`,expansion:`EXPANSION`,thinking:`THINKING`,assistant:`ASSISTANT`,tool_call:`TOOL`,tool_result:`RESULT`,session:`SESSION`,notice:`NOTICE`,raw:`RAW`},_O=[{kind:`thinking`,label:`Thinking`},{kind:`tool_result`,label:`Tool result`},{kind:`raw`,label:`Raw`}];function vO(e,t){if(e.kind===`prompt`)return{prefix:`Prompt: `,text:sO(e.text)};if(e.kind===`thinking`)return{prefix:`Thinking: `,text:sO(e.text)};if(e.kind===`assistant`)return{prefix:`Assistant: `,text:sO(e.text)};if(e.kind===`notice`)return{prefix:`Notice: `,text:sO(e.text)};if(e.kind===`raw`)return{prefix:`Raw: `,text:sO(e.line)};if(e.kind===`session`)return{prefix:`Session: `,text:`${e.vendor} ${e.vendorSessionId}`};if(e.kind===`expansion`)return{prefix:`Expansion: `,text:dO(e,t)};if(e.kind===`tool_call`){let t=cO(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:`${mO(e.content)} bytes`}}function yO(e){if(!e.agentType)return``;let t=e.agentId?` ${e.agentId.slice(-6)}`:``;return`[${e.agentType}${t}] `}function bO(e,t){let n=vO(e,t),r=yO(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:gO[e.kind],text:`${r}${i}`,tone:o,badges:a}}function xO(e,t){return{record:e,...bO(e,t)}}function SO(e){return e.kind!==`tool_result`&&e.kind!==`expansion`?null:e.toolUseId||null}function CO(e,t){let n=SO(e);return!n||t.has(n)?null:n}function wO(e,t,n=1){e.set(t,(e.get(t)??0)+n)}function TO(e,t){let n=(e.get(t)??0)-1;n>0?e.set(t,n):e.delete(t)}function EO(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=SO(i.record);a&&t.has(a)&&(n.rows[r]=xO(i.record,e.toolCallByUseId))}}function DO(){return{turns:[],toolCallByUseId:new Map,unresolvedToolUseCounts:new Map}}function OO(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 kO(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`}`}, ${Sl(i,`KB`)}, ${Yl(OO(e))}`}function AO(){return{rowCount:0,toolCallCount:0,errorCount:0,resultBytes:0}}function jO(e,t,n){e.metrics.rowCount+=n,t.record.kind===`tool_call`&&(e.metrics.toolCallCount+=n),t.record.kind===`tool_result`&&(e.metrics.resultBytes+=mO(t.record.content)*n,t.record.isError&&(e.metrics.errorCount+=n))}function MO(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=CO(i,e.toolCallByUseId);t&&wO(e.unresolvedToolUseCounts,t);let a=xO(i,e.toolCallByUseId);if(pO(i)){r={head:a,rows:[],hasTrimmedRows:!1,startedAt:i.ts,metrics:AO()},jO(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:AO()},e.turns.push(r),n.push({turnIndex:e.turns.length-1,isNewTurn:!0,head:null,rows:[]})),r.rows.push(a),jO(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 NO(e,t){let n=DO();MO(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)||wO(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],EO(e,i),{newTurns:n.turns,mergedHead:c,mergedRows:l,needsRerender:i.size>0}}function PO(e){return e.rows.length+ +!!e.head}function FO(e){let t=0;for(let n of e.turns)t+=PO(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=SO(n.record);t&&TO(e.unresolvedToolUseCounts,t)}}function LO(e,t){IO(e,t.head?[t.head,...t.rows]:t.rows)}function RO(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)jO(n,e,-1);return n.rows=n.rows.slice(r),n.hasTrimmedRows=!0,r}function zO(e,t=lO){let n=FO(e),r=0;for(;n>t&&r<e.turns.length-1;){let t=e.turns[r];if(!t)break;n-=PO(t),LO(e,t),r+=1}return r>0&&(e.turns=e.turns.slice(r)),n<=t?{droppedTurnCount:r,droppedRowCount:0}:{droppedTurnCount:r,droppedRowCount:RO(e,n-t)}}function BO(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 VO(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 HO(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=lO){return!e.selectedSessionId||!e.hasLoadedOnce||e.hasDroppedEarliestRows||e.residentRowCount>=t?!1:e.firstOffset>0}function WO(e,t=lO){return!UO(e,t)||e.hasPendingRequest||!e.selectedSessionId?null:{id:e.selectedSessionId,direction:`earlier`,after:0,endingAt:e.firstOffset}}function GO(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 KO(e){return e.hasSelectionChanged||e.isRenderedTraceStale||!e.hasRenderedOnce}function qO(e,t,n){return e!==0||t?null:n?.startedAt??null}function JO(e,t){return YO(e,t)?e.filter(e=>e!==t):[...e,t]}function YO(e,t){return e.includes(t)}function XO(e){return e?`No trace has been recorded for ${e.label}.`:`No sessions are available.`}var ZO=1e4,QO=null,$O=null,ek=null,tk=null,nk=[],rk=!1,ik=pc(),ak=null,ok=null,sk=[],ck=null,lk=null,J=null,uk=null,dk=!1,fk=null;function pk(){return!!QO&&!yr(QO)}function mk(){return sk.find(e=>e.id===ck)??null}function hk(){uk&&=(clearTimeout(uk.timeoutHandle),null)}function gk(){uk=null,fk=`The trace did not load within ${Math.round(ZO/1e3)} s.`,Bk()}function _k(e){hk(),dk=!1,fk=null,ck=e,J=e?{sessionId:e,grouping:DO(),firstOffset:0,nextOffset:0,hasDroppedEarliestRows:!1,filePath:``,hasLoadedOnce:!1}:null,rk=!0}function vk(e){let t=VO(sk,lk,ck,e);return lk&&t===lk&&(lk=null),t!==ck&&(_k(t),!0)}function yk(e){if(!ak)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};ak(t)?uk={request:e,timeoutHandle:setTimeout(gk,ZO)}:(fk=G,Vk())}function bk(e=!1){if(!ak)return;let t=HO({selectedSessionId:ck,isPanelVisible:e||pk(),hasPendingRequest:!!uk,hasLoadedOnce:J?.hasLoadedOnce??!1,nextOffset:J?.nextOffset??0});t&&yk(t)}function xk(){return{selectedSessionId:ck,hasPendingRequest:!!uk,hasLoadedOnce:J?.hasLoadedOnce??!1,hasDroppedEarliestRows:J?.hasDroppedEarliestRows??!1,firstOffset:J?.firstOffset??0,residentRowCount:J?FO(J.grouping):0}}function Sk(){if(!ak)return;let e=WO(xk());e&&yk(e)}function Ck(e){sk.some(t=>t.id===e)&&e!==ck&&(lk=null,_k(e),bk(),Bk())}function wk(){let e=j(`label`,`trace-session-field`),t=j(`span`,`trace-session-label`,`Session`),n=j(`select`,`trace-session-select`);n.disabled=sk.length===0;for(let e of sk){let t=j(`option`,null,e.label);t.value=e.id,t.selected=e.id===ck,n.append(t)}return n.addEventListener(`change`,()=>Ck(n.value)),e.append(t,n),e}function Tk(e){e.toggleAttribute(`data-hidden`,YO(ik,e.dataset.kind??``))}function Ek(){if(ek)for(let e of ek.querySelectorAll(`.trace-row`))Tk(e)}function Dk(e){if(ek)for(let t of ek.querySelectorAll(`details`))t.open=e}function Ok(){let e=j(`div`,`trace-filters`);for(let t of _O){let n=j(`button`,`trace-filter`,t.label);n.type=`button`;let r=()=>{n.setAttribute(`aria-pressed`,String(!YO(ik,t.kind)))};r(),n.addEventListener(`click`,()=>{ik=JO(ik,t.kind),mc(ik),r(),Ek()}),e.append(n)}for(let[t,n]of[[`Expand all`,!0],[`Collapse all`,!1]]){let r=j(`button`,`trace-expand-control`,t);r.type=`button`,r.addEventListener(`click`,()=>{Dk(n)}),e.append(r)}return e}function kk(){let e=gr(`trace`,`Session trace`,`Bodies load from the local trace file only when requested.`),t=j(`div`,`trace-controls`);t.append(wk());let n=J?.filePath??``,r=j(`code`,`trace-path`,n);r.title=n,t.append(r);let i=J?qO(J.firstOffset,J.hasDroppedEarliestRows,J.grouping.turns[0]):null;if(i!==null&&t.append(j(`span`,`trace-session-start`,`Started ${new Date(i).toLocaleString()}`)),e.append(t,Ok()),!fk)return e;let a=Ed(`trace-status`);return a.show(`error`,fk),e.append(a.element),e}function Ak(e){let t=j(`div`,`trace-copy-wrap`),n=j(`button`,`trace-copy`,`Copy`);n.type=`button`;let r=j(`span`,`trace-copy-status`);return r.setAttribute(`role`,`status`),n.addEventListener(`click`,()=>{let t=br(e);t?(t.then(()=>{r.textContent=`Copied`}).catch(()=>{r.textContent=`Copy failed`}),setTimeout(()=>{r.textContent=``},1600)):r.textContent=`Copy failed`}),t.append(n,r),t}function jk(){let e=j(`div`,`trace-earlier-wrap`),t=j(`button`,`trace-load-earlier`,`Load earlier`);return t.type=`button`,t.addEventListener(`click`,()=>{Sk()}),e.append(t),e}function Mk(e,t,n=``){let r=j(`details`,`trace-row${n?` ${n}`:``}`);r.dataset.kind=e.kind,r.dataset.tone=e.tone,Tk(r);let i=j(`summary`,`trace-row-summary`);i.append(j(`span`,`trace-offset`,Xl(t,e.record.ts)),j(`span`,`trace-kind`,e.tag),j(`span`,`trace-row-label`,e.text));for(let t of e.badges){let e=j(`span`,`trace-badge`,t);e.dataset.badge=t,i.append(e)}let a=j(`div`,`trace-row-body`);r.append(i,a);let o=!1;return r.addEventListener(`toggle`,()=>{if(!r.open||o)return;o=!0;let t=hO(e.record);a.append(Ak(t),j(`pre`,`trace-row-pre`,t))}),r}function Nk(e){return j(`span`,`trace-turn-metrics`,kO(e))}function Pk(e,t){e&&t&&(t.textContent=kO(e))}function Fk(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=Xl(t.startedAt,t.rows[e].record.ts))}}function Ik(e,t,n){let r=Mk(t,e.startedAt,`trace-turn-head`);return N(r,`.trace-row-summary`).append(n),r}function Lk(e){let t=j(`section`,`trace-turn`),n=Nk(e);if(e.head&&t.append(Ik(e,e.head,n)),!e.head){let e=j(`h2`,`trace-leading-title`);e.append(j(`span`,`trace-leading-label`,`Before first prompt`),n),t.append(e)}let r=j(`div`,`trace-rows`);for(let t of e.rows)r.append(Mk(t,e.startedAt));return e.hasTrimmedRows&&t.append(j(`p`,`trace-trimmed`,`Earlier rows trimmed`)),t.append(r),{section:t,rowsElement:r,metricsElement:n}}function Rk(e){return e?uk?.request.id===e.id&&!J?.hasLoadedOnce?`Loading trace.`:XO(e):XO(null)}function zk(){if(!QO)return;let e=j(`div`,`trace-content`);$O=kk(),e.append($O),ek=null,tk=null,nk=[];let t=mk(),n=J?.grouping.turns??[];if(!t||n.length===0){e.append(j(`p`,`trace-empty`,Rk(t))),QO.replaceChildren(e),rk=!1;return}UO(xk())&&(tk=jk(),e.append(tk));let r=j(`div`,`trace-turns`);for(let e of n){let t=Lk(e);nk.push(t),r.append(t.section)}ek=r,Ek(),e.append(r),QO.replaceChildren(e),rk=!1}function Bk(){QO&&(pk()?zk():rk=!0)}function Vk(){if(!$O||!pk())return;let e=kk();$O.replaceWith(e),$O=e}function Hk(e){if(!ek)return;let t=J?.grouping.turns[e.turnIndex];if(!t)return;if(e.isNewTurn){let e=Lk(t);nk.push(e),ek.append(e.section);return}let n=nk[e.turnIndex];if(n){for(let r of e.rows)n.rowsElement.append(Mk(r,t.startedAt));Pk(t,n.metricsElement)}}function Uk(e){let t=e.parentElement;t&&!t.querySelector(`.trace-trimmed`)&&t.insertBefore(j(`p`,`trace-trimmed`,`Earlier rows trimmed`),e)}function Wk(){UO(xk())?!tk&&ek?.parentElement&&(tk=jk(),ek.parentElement.insertBefore(tk,ek)):(tk?.remove(),tk=null)}function Gk(){if(!J)return;let e=zO(J.grouping);if(!(e.droppedTurnCount>0||e.droppedRowCount>0)){Wk();return}let t=!J.hasDroppedEarliestRows;if(J.hasDroppedEarliestRows=!0,nk=nk.slice(e.droppedTurnCount),ek)for(let t=0;t<e.droppedTurnCount;t+=1)ek.firstElementChild?.remove();let n=nk[0];if(n&&e.droppedRowCount>0){for(let t=0;t<e.droppedRowCount;t+=1)n.rowsElement.firstElementChild?.remove();Uk(n.rowsElement),Pk(J.grouping.turns[0],n.metricsElement)}t&&Vk(),Wk()}function Kk(e){if(!J)return;let t=MO(J.grouping,e);if(pk()&&!rk&&ek){for(let e of t)Hk(e);Gk()}else ek=null,Gk(),pk()?zk():rk=!0}function qk(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 Jk(){dk&&!uk&&(dk=!1,bk())}function Yk(e){if(!ek)return;let t=nk[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=Nk(r),o=Ik(r,e.mergedHead,a);n.insertBefore(o,i),t.metricsElement=a}e.mergedHead||Pk(r,t.metricsElement);let a=document.createDocumentFragment();for(let t of e.mergedRows)a.append(Mk(t,r.startedAt));i.prepend(a),Fk(i,r)}let i=document.createDocumentFragment(),a=[];for(let t of e.newTurns){let e=Lk(t);a.push(e),i.append(e.section)}ek.prepend(i),nk.unshift(...a)}function Xk(e){if(!J)return;let t=NO(J.grouping,e),n=pk()&&!rk&&!!ek&&!t.needsRerender,r=QO?.parentElement??null,i=r?.scrollHeight??0,a=r?.scrollTop??0;n&&Yk(t),Gk(),n||Bk(),n&&Vk(),r&&(r.scrollTop=a+r.scrollHeight-i)}function Zk(e){QO||(QO=j(`div`,`trace-panel`),e.append(QO),zk())}function Qk(e){ak=e}function $k(e){ok=e}function eA(e){lk=e,ok?.()}function tA(e){sk=BO(e);let t=vk(pk());t&&bk(),(t||!$O)&&Bk(),!t&&$O&&Vk()}function nA(){if(!QO)return;let e=vk(!0);bk(!0),KO({hasSelectionChanged:e,isRenderedTraceStale:rk,hasRenderedOnce:!!$O})&&zk()}function rA(e){let t=qk(e);if(!t)return;let n=GO({pendingRequest:uk?.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`?Jk():(hk(),fk&&(fk=null,Vk()),n===`stale`?Jk():n===`reset`?(_k(t.id),J&&(J.filePath=t.path),bk(),Bk(),Jk()):J&&(J.filePath=t.path,n===`prepend`?(J.firstOffset=t.start,Xk(t.records),Jk()):(n===`seed`&&(J.hasLoadedOnce=!0,J.firstOffset=t.start),J.nextOffset=t.next,Kk(t.records),Jk())))}function iA(e){let t=e?.id;typeof t==`string`&&t===ck&&pk()&&(uk?dk=!0:bk())}function aA(e){let t=e?.id;if(typeof t!=`string`||uk?.request.id!==t)return!1;hk(),dk=!1;let n=e?.message;return fk=typeof n==`string`&&n?n:`The trace could not be read.`,Bk(),!0}function oA(e){hk(),dk=!1,fk=e?null:G,e?(Vk(),bk()):Bk()}var sA=`Estimated list prices, not a bill.`,cA=`Enable in Settings.`,lA=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}]),uA=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],dA=/^(\d{4})-(\d{2})-(\d{2})$/,fA=new Set([`day`,`model`,`label`]),pA=new Set([`model`,`label`]);function mA(e){return e.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function hA(e){return e.includes(`.`)?e.replace(/0+$/,``).replace(/\.$/,``):e}function gA(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=Math.round(e);return`${t<0?`-`:``}${mA(String(Math.abs(t)))}`}function _A(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}$${mA(r)}.${i}`}function vA(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}${hA((n/1e3).toFixed(1))}k`:n<999995e3?`${t}${hA((n/1e6).toFixed(2))}M`:`${t}${hA((n/1e9).toFixed(2))}B`}function yA(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${hA(e.toFixed(1))}%`}function bA(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function xA(e){return e===`costUSD`?`share of cost`:`share of tokens`}function SA(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function CA(e){let t=dA.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=uA[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function wA(e){let t=TA(e);return t.length===0?``:t.length===1?CA(t[0]):`${CA(t[0])} to ${CA(t[t.length-1])}`}function TA(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>dA.test(e)).sort()}function EA(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:DA(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function DA(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=OA(e,n);return dA.test(r)?r:OA(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function OA(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function kA(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:bl(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function AA(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=uA[n.getMonth()];return r?`${r} ${n.getDate()} ${wl(n)}`:`-`}function jA(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${vA(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:vA(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:_A(e.costPerHour),sub:``}),t}function MA(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${vA(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(_A(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${kA(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 NA(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 PA(e){return typeof e!=`number`||!Number.isFinite(e)?`ok`:e>=100?`crit`:e>=80?`warn`:`ok`}function FA(e){let t=W(e?.max,null);return t===null||t<=0?null:t}function IA(e){let t=FA(e),n=W(e?.pct,null);return t===null||n===null?null:n*100}function LA(e,t){let n=FA(t),r=W(e?.projectedTokens,null);return n===null||r===null?null:r/n*100}function RA(e){let t=IA(e);return t===null?``:`${Math.round(t)}% of ${vA(e?.max)} tokens, the largest completed block seen`}function zA(e,t){let n=LA(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 BA=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function VA(e){let t=BA.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=SA(e.tokens,n)??0,r=vA(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${yA(t)}`}})}var HA=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`,WA=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function GA(e){let t=U(e,``);return t?HA[t]||t:HA.other}function KA(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function qA(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function JA(e){return KA(e).some(e=>qA(e.lane))}var YA=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function XA(e,t,n){let r=Jj(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function ZA(e,t,n,r){if(!Array.isArray(t))return null;let i=t.filter(e=>e&&typeof e.lane==`string`),a=i.reduce((e,t)=>e+W(t.costUSD,0),0),o=i.reduce((e,t)=>e+W(t.tokens,0),0),s=i.filter(e=>qA(e.lane)).map(e=>({lane:String(e.lane),label:GA(e.lane),tokens:W(e.tokens,0),costUSD:W(e.costUSD,0)})),c=s.reduce((e,t)=>e+t.costUSD,0),l=s.reduce((e,t)=>e+t.tokens,0),u=a>0?SA(c,a):SA(l,o),d=XA(n,e,r),f=u===null||d===null?null:u/100*d;return{key:e,label:YA[e],tokens:l,costUSD:c,sharePct:u,planPct:f,lanes:s}}function QA(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:qj.map(e=>ZA(e.key,r[e.key],t,n)).filter(e=>e!==null)}function $A(e){return e.planPct===null?``:`about ${yA(e.planPct)} of plan`}function ej(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?_A(e.costUSD):vA(e.tokens)}`).join(`, `)}var tj=`team-review`;function nj(e){if(!Array.isArray(e?.byLane))return null;let t=KA(e).find(e=>e.lane===tj),n=W(t?.costUSD,0),r=W(t?.tokens,0),i=bA(e?.totals),a=SA(i===`costUSD`?n:r,e?.totals?.[i]),o=a===null?``:`${yA(a)} of range ${i===`costUSD`?`cost`:`tokens`}`,s=[_A(n),o,rj(t?.sessions)].filter(Boolean).join(`, `);return{label:GA(tj),value:vA(r),sub:s}}function rj(e){let t=W(e,null);return t===null||t<=0?``:`${gA(t)} ${t===1?`session`:`sessions`}`}function ij(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function aj(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function oj(e){return ij(e)!==null||aj(e)!==null}function sj(e){let t=ij(e);if(!t)return null;let n=W(t.commands,0),r=n===1?`command`:`commands`;return{value:`${vA(W(t.savedTokens,0))} tokens`,sub:`${yA(W(t.savingsPct,0))} avg across ${gA(n)} ${r}`}}function cj(e){let t=aj(e);if(!t)return null;let n=vA(W(t.cacheReadTokens,0)),r=(Array.isArray(t.unpricedModels)?t.unpricedModels:[]).filter(e=>e),i=`${n} cache read tokens`;if(r.length===0)return{value:_A(W(t.savedUSD,0)),sub:i};let a=r.length===1?`model`:`models`;return{value:_A(W(t.savedUSD,0)),sub:`${i}, a floor (${r.length} unpriced ${a})`}}function lj(e){let t=e?.budget?.rows;return Array.isArray(t)?t.filter(e=>e&&W(e.budgetUsd,null)!==null):[]}function uj(e){return e===`monthly`?`this month`:`today`}function dj(e){return`${_A(W(e?.spentUsd,0))} of ${_A(W(e?.budgetUsd,0))}`}function fj(e){let t=W(e?.pct,null);return t===null?0:t}function pj(e){return`${uj(e?.scope)} spend against budget`}var mj=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function hj(e){let t=dA.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function gj(e){let t=hj(e);if(!t)return``;let n=(t.getDay()+6)%7;return t.setDate(t.getDate()-n),Cl(t)}function _j(e){let t=dA.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function vj(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 yj(e,t){e.tokens+=W(t?.tokens,0),e.costUSD+=W(t?.costUSD,0),e.input+=W(t?.input,0),e.output+=W(t?.output,0),e.cacheCreate+=W(t?.cacheCreate,0),e.cacheRead+=W(t?.cacheRead,0),e.days+=1,e.sources.add(t?.source===`history`?`history`:`live`);let n=Array.isArray(t?.vendors)?t.vendors:[];for(let t of n)e.vendorSet.add(t);let r=t?.models||[];for(let t of r){t?.vendor&&e.vendorSet.add(t.vendor);let n=bM(t),r=e.modelByName.get(n)||{key:n,model:t?.model??n,vendor:t?.vendor,tokens:0,costUSD:0,input:0,output:0,cacheCreate:0,cacheRead:0};r.tokens+=W(t?.tokens,0),r.costUSD+=W(t?.costUSD,0),r.input+=W(t?.input,0),r.output+=W(t?.output,0),r.cacheCreate+=W(t?.cacheCreate,0),r.cacheRead+=W(t?.cacheRead,0),e.modelByName.set(n,r)}}function bj(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 xj(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)||vj(r);yj(i,e),n.set(r,i)}return Array.from(n.values()).map(bj)}function Sj(e){return xj(e,gj)}function Cj(e){return xj(e,_j)}function wj(e,t){return t===`week`?Sj(e):t===`month`?Cj(e):Array.isArray(e)?[...e]:[]}var Tj=/^(\d{4})-(\d{2})$/;function Ej(e,t){if(t===`month`){let t=Tj.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=uA[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=CA(e);return t===`-`?t:`week of ${t}`}return CA(e)}function Dj(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var Oj=Object.freeze([.05,.25,.5,.75]),kj=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function Aj(e,t){let n=W(e,0),r=W(t,0);if(n<=0||r<=0)return 0;let i=n/r,a=1;for(let e=0;e<Oj.length;e+=1)i>=Oj[e]&&(a=e+1);return a}function jj(e,{weeks:t=16,today:n=new Date}={}){let r=(Array.isArray(e)?e:[]).filter(e=>dA.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`&&dA.test(n)?n:Cl(o),c=hj(gj(s));if(!c)return{cells:[],max:0,weeks:0};let l=new Date(c.getFullYear(),c.getMonth(),c.getDate()-(t-1)*7,12),u=Cl(l),d=[],f=0,p=null;for(let e of r){let t=String(e.day);(p===null||t<p)&&(p=t),!(t<u||t>s)&&(f=Math.max(f,W(e.tokens,0)))}for(let e=0;e<t;e+=1)for(let t=0;t<7;t+=1){let n=Cl(new Date(l.getFullYear(),l.getMonth(),l.getDate()+e*7+t,12)),r=i.get(n)||null,a=n>s,o=p!==null&&n<p;d.push({day:n,week:e,weekday:t,tokens:W(r?.tokens,0),costUSD:W(r?.costUSD,0),source:r?.source===`history`?`history`:r?`live`:null,noData:a||o||!r&&p===null,tone:Aj(r?.tokens,f)})}return{cells:d,max:f,weeks:t}}function Mj(e){let t=CA(e?.day);if(e?.noData)return`${t}: no data`;let n=W(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${vA(n)} tokens, ${_A(W(e?.costUSD,0))}`}function Nj(e){if(!e)return``;let t=W(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${Rj(e.ratio)} the ${n} average: ${_A(e.todayUsd)} against ${_A(e.baselineUsd)}.`}function Pj(e){return e?`This block is burning ${Rj(e.ratio)} the usual rate: ${vA(e.current)} tokens per minute against ${vA(e.baseline)}.`:``}function Fj(e){return[Nj(e?.daily),Pj(e?.burn)].filter(Boolean).join(` `)}function Ij(e){return e?.daily||e?.burn?`warn`:`ok`}function Lj(e){return!!(e?.daily||e?.burn)}function Rj(e){let t=W(e,null);return t===null?`-`:`${hA(t.toFixed(1))}x`}var zj=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function Bj(e){let t=U(e,``);return t?zj[t]||t:zj.claude}function Vj(e,t){return Uj(t)?Bj(e?.vendor):``}function Hj(e){let t=e?.byVendor;return!t||typeof t!=`object`?[]:Object.keys(t).filter(e=>t[e]&&typeof t[e]==`object`).sort((e,n)=>W(t[n]?.tokens,0)-W(t[e]?.tokens,0)).map(e=>({vendor:e,label:Bj(e),tokens:W(t[e]?.tokens,0),costUSD:W(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 Wj=`Claude only`;function Gj(e){return Uj(e)?Wj:``}var Kj=36e5,qj=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]);function Jj(e,t){let n=e?.[t];if(!n||typeof n!=`object`)return null;let r=W(n.pct,null),i=W(n.resetsAtMs,null);return r===null&&i===null?null:{pct:r,resetsAtMs:i}}var Yj=Object.freeze([{vendor:`claude`,label:`Claude Code`},{vendor:`codex`,label:`Codex`}]);function Xj(e){return e?.vendor===`codex`?`codex`:`claude`}function Zj(e,t){let n=`official, from ${Yj.filter(({vendor:t})=>e.includes(t)).map(({label:e})=>e).join(` and `)}`,r=e.length===1&&e[0]===`claude`?Gj(t):``;return r?`${n}, ${r}`:n}function Qj(e){return qj.some(t=>Jj(e,t.key)!==null)}function $j(e){return Jj(e,`fiveHour`)?.pct??null}function eM(e){return e===`estimated`?`estimated from the largest completed block`:``}function tM(e,t=null){let n=$j(t);if(n!==null)return PA(n);let r=PA(IA(e?.tokenLimit));return r===`ok`?PA(LA(e?.activeBlock?.projection,e?.tokenLimit)):r}function nM(e,t=null){let n=[],r=tM(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 lj(e)){let e=fj(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 El(n)}function rM(e){let t=W(e?.pct,null);return t===null?`-`:`${yA(t)} used`}function iM(e,t=Date.now()){let n=W(e,null);if(n===null||n<=0)return``;let r=(n-t)/6e4;return r<=0?`resetting now`:`resets in ${kA(r)}`}function aM(e,t=Date.now()){let n=W(e,null);return n===null||n<=0?``:`${Math.max(0,Math.round((t-n)/6e4))}m old`}function oM(e,t=Date.now()){let n=W(e,null);return n===null||n<=0||t-n>Kj}function sM(e,t=Date.now()){if(!oM(e,t))return``;let n=aM(e,t);return n?`showing last-known usage (${n})`:`showing last-known usage`}function cM(e,t=``){let n=e?.source;if(n===`fetched`){let e=U(t,``);return e?`Prices fetched from the public model price table, ${e}.`:`Prices fetched from the public model price table.`}if(n===`cache`){let e=U(t,``);return e?`Prices from the cached public model price table, ${e}.`:`Prices from the cached public model price table.`}return n===`snapshot`?`Prices from the price table bundled with this Glimmervoid build.`:n===`unavailable`?`Model prices could not be loaded, so every cost below counts as zero.`:`Pricing source not reported yet.`}function lM(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 uM(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 dM(e){if(Array.isArray(e))return e.length;let t=Number(e);return Number.isFinite(t)?t:null}function fM(e){if(!e||typeof e!=`object`)return``;let t=[],n=dM(e.dirs);if(n!==null&&t.push(`${gA(n)} transcript ${n===1?`directory`:`directories`}`),Number.isFinite(e.files)&&t.push(`${gA(e.files)} files`),Number.isFinite(e.entries)&&t.push(`${gA(e.entries)} entries`),Number.isFinite(e.lastScanMs)&&t.push(`last pass ${gA(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 pM(e){return U(e?.error,``)}function mM(e){let t=U(e?.warning,``);return t?`Glimmervoid could not read every transcript location: ${t}`:``}function hM(e){return pM(e)!==``}function gM(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return n==null||n===t}function _M(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 vM(e){return typeof e?.id==`string`&&e.id!==``}function yM(e){let t=U(e?.label,``);return vM(e)&&t?t:_M(e?.project)||t||`unknown project`}function bM(e){return U(typeof e==`string`?e:e?.model,`unknown model`)}function xM(e){return String(e?.day??``)}function SM(e,t,n){if(!fA.has(t)){let n=Number(e?.[t]);return Number.isFinite(n)?n:0}return t===`day`?xM(e):n(e)}function CM(e,t,n,r=yM){let i=Array.isArray(e)?[...e]:[],a=n===`asc`?1:-1;return i.sort((e,n)=>{let i=SM(e,t,r),o=SM(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 wM(e){return pA.has(e)?`asc`:`desc`}function TM(e,t){return e?.key===t?{key:t,dir:e.dir===`asc`?`desc`:`asc`}:{key:t,dir:wM(t)}}function EM(e,t){return e?.key===t?e.dir===`asc`?`ascending`:`descending`:`none`}var DM=Object.freeze({key:`lastTs`,dir:`desc`}),OM=Object.freeze({key:`tokens`,dir:`desc`}),kM=Object.freeze({key:`day`,dir:`desc`});function AM(e,t=DM){return CM(e,t.key,t.dir,yM)}function jM(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 MM(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:`${gA(t)} hidden`}function NM(e,t=OM){return CM(e,t.key,t.dir,bM)}function PM(e,t=kM){return CM(e,t.key,t.dir,xM)}function FM(e,t){return(Array.isArray(e)?e:[]).find(e=>String(e?.day??``)===String(t??``))||null}function IM(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 LM(e){let t=W(e?.officialCostUSD,null);if(t!==null&&t>0)return{costUSD:t,source:`official`};let n=W(e?.costUSD,null);return n!==null&&n>0?{costUSD:n,source:`estimated`}:{costUSD:null,source:null}}function RM(e){let t=Number(e?.tokens);if(!Number.isFinite(t)||t<=0)return``;let{costUSD:n}=LM(e);return n===null?vA(t):`${vA(t)} ${_A(n)}`}function zM(e){let{source:t}=LM(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 BM(e,t){return t===A.RUNNING?e===`restart-fresh`?{title:`Restart fresh`,message:`This agent is mid-turn. A fresh restart ends this conversation and starts a new one. Restart anyway?`,confirmLabel:`Restart fresh`,danger:!0}:{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 VM(e,t,n){let r=Zn.includes(t)?`force-restart`:`restart`;return e===`restart-fresh`?{type:r,id:n,fresh:!0}:{type:r,id:n}}function HM(e,t,n){let r=()=>n.send(VM(e,n.readState(),t)),i=BM(e,n.readState());i?n.confirm({...i,onConfirm:r}):r()}var UM=`DORMANT`;function WM(e){return e?yl(Date.now()-e,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function GM(e,t,n){let r=j(`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,WM(e.mtime)].filter(Boolean).join(` · `);return r.innerHTML=`<span class="resume-item-title">${r_(e.title||e.id)}</span><span class="resume-item-meta">${r_(i)}${e.id===t?` · current`:``}</span>`,r.addEventListener(`click`,()=>n(e.id)),r}function cee(e,t={}){let n=(t.currentState||``)===UM,{overlay:r,dialog:i,close:a,actions:o,btnCancel:s}=ef({title:`Resume a conversation`,dialogClass:`dialog resume-dialog`}),c=j(`p`,`dialog-message`,`Pick a Claude conversation from this repo (any worktree) to continue in this card.`),l=j(`div`,`resume-list`);l.setAttribute(`role`,`listbox`),l.setAttribute(`aria-label`,`Resumable conversations`),l.append(j(`div`,`resume-empty`,`Loading conversations...`));let u=j(`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=Ed(`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 kd(`resume-conversation`,{id:e,conversationId:t||``},d);if(delete i.dataset.applying,!r)return;if(r.type!==`resume-conversation-ack`||!r.ok){d.show(`error`,r.type===`error`?r.message:`The conversation was not changed.`);return}a();let o=P.get(e);t&&o&&(n?v_(o,{type:`start-session`,id:e}):__(o).show(`ok`,`Conversation will resume on this session's next restart.`))}s.addEventListener(`click`,a),u.addEventListener(`click`,()=>{f(null)}),requestAnimationFrame(()=>s.focus()),hd(`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(j(`div`,`resume-empty`,`Could not list conversations: ${e.error}`));return}if(t.length===0){l.append(j(`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(GM(e,n,e=>{f(e)}))}).catch(e=>{r.isConnected&&(l.innerHTML=``,l.append(j(`div`,`resume-empty`,`Could not list conversations: ${Od(e,q)}`)))})}var KM=e=>e==null?``:String(e),lee=e=>Zn.includes(e),uee=e=>Qn.includes(e),qM=!1;function JM(e){return qM&&gy(e.agent)&&e.card.dataset.ephemeral===void 0}function dee(e){return JM(e)&&e.isConversationViewOn&&e.isBorrowed}function fee(e){e.btnConversationView.classList.toggle(`visible`,JM(e)),e.btnConversationView.setAttribute(`aria-checked`,String(e.isConversationViewOn))}function pee(e){qM=e;for(let t of P.values())!e&&t.face===`conversation`&&t._showTerminalFace?.(),eN(t)}function YM(e){let t=F(e);return!t||!dee(t)?!1:(t.face=`conversation`,t.card.dataset.face=`conversation`,t.termWrap.hidden=!0,t.planFace.hide(),t.conversationFace.show(wr(e)),eN(t),!0)}function XM(e,t){let n=F(e);if(!n)return;let r=n.isConversationViewOn;n.hasConversationBridge=t.hasConversationBridge,n.conversationApproval=t.conversationApproval,n.isConversationViewOn=t.isConversationViewOn,eN(n),n.conversationFace.refresh(),r!==t.isConversationViewOn&&(t.isConversationViewOn?YM(e):n.face===`conversation`&&n._showTerminalFace?.())}function ZM(e){return F(e.id)?.conversationFace.applyTraceResponse(e)===!0}function QM(e){F(e.id)?.conversationFace.applyTraceError(e)}function $M(e){F(e)?.conversationFace.applyTraceChanged(wr(e))}function eN(e){fee(e);let t=e.currentState,n=lee(t)||uee(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`,C_()),e.btnPlan.classList.toggle(`visible`,_g(e)!==`hidden`),e.btnRemove.classList.add(`visible`)}function tN(e){e.sessionMenu.classList.remove(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`false`)}function nN(e,t){z_(e.taskTitleEl,()=>H_(e,t)),e.nameEl.addEventListener(`dblclick`,n=>{n.preventDefault(),G_(e,t)}),e.nameEl.addEventListener(`click`,()=>{W_(e.nameEl)||Hv(t)}),e.nameEl.addEventListener(`keydown`,n=>{n.target===e.nameEl&&(n.key===`F2`||n.key===`Enter`)&&(n.preventDefault(),G_(e,t))});function n(n){tN(e),e.btnSessionMenu.focus(),HM(n,t,{readState:()=>e.currentState,send:t=>{v_(e,t)},confirm:tf})}e.btnRestart.addEventListener(`click`,()=>n(`restart`)),e.btnRestartFresh.addEventListener(`click`,()=>n(`restart-fresh`)),e.btnResume.addEventListener(`click`,()=>{tN(e),cee(t,{currentState:e.currentState})}),e.btnWorkspaceRepos.addEventListener(`click`,()=>{tN(e),cf(t)}),e.btnTrace.addEventListener(`click`,()=>{tN(e),eA(t)}),e.btnDocs.addEventListener(`click`,()=>{tN(e),Dh(t)}),e.btnConversationView.addEventListener(`click`,()=>{tN(e),v_(e,{type:`set-session-conversation-view`,id:t,isOn:!e.isConversationViewOn})}),e.btnGuardrails.addEventListener(`click`,()=>{tN(e),e.btnSessionMenu.focus();let n=n=>()=>{v_(e,{type:`set-session-guardrails`,id:t,isOn:n})};e.card.dataset.guarded===void 0?tf({title:`Restore guardrails`,message:`This session restarts with guardrails on, interrupting any turn in progress.`,confirmLabel:`Restore guardrails`,danger:!1,onConfirm:n(!0)}):tf({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=_g(e);n!==`hidden`&&(n===`face`?fN(t):location.hash=op(t))}),e.btnRemove.addEventListener(`click`,()=>{tN(e),Zv(t)}),e.btnSessionMenu.addEventListener(`click`,t=>{t.stopPropagation();for(let[,t]of P)t!==e&&tN(t);let n=e.sessionMenu.classList.toggle(`open`);e.btnSessionMenu.setAttribute(`aria-expanded`,String(n))});function r(t){if(a_(t)){t.preventDefault(),t.stopPropagation();for(let[,t]of P)t!==e&&tN(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(),tN(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&&tN(e)},{signal:e.abortController.signal}),e.btnDebug.addEventListener(`click`,n=>{n.stopPropagation(),Q_(e,t)}),document.addEventListener(`click`,t=>{let n=t.target instanceof Node?t.target:null;e.debugOpen&&!e.card.contains(n)&&$_(e)},{signal:e.abortController.signal})}function rN(e,t,n){let r=F(e);if(r){r.taskTitle=typeof t==`string`?t:null,r.taskTitleIsCustom=n===!0;for(let e of[r.taskTitleEl,r.titleTargetEl])e&&V_(e,r.taskTitle)}}function iN(e){return typeof e==`string`&&P.has(e)}function aN(){return P.size}function oN(e){let t=e||{};t.cursorBlink!=null&&GS(t.cursorBlink),t.debugMode!=null&&(x_(t.debugMode),bw(t.debugMode));for(let[,e]of P)e.term&&t.cursorBlink!=null&&(e.term.options.cursorBlink=t.cursorBlink)}function sN(){nb(P.values(),ib())}function cN(){let e=Lg(Fg([...P.values()].map(e=>({state:e.currentState,unseenOutcome:e.unseenOutcome}))));document.title=e>0?`(${e}) Glimmervoid`:`Glimmervoid`}function lN(e,t,n,r={}){if(!Tr)return;let i=wr(e),a=KM(n)||A.DORMANT,o=I_(i,KM(t),a,r),s=a===A.DORMANT;Tr.appendChild(o.card);let c;function l(){c.face=`terminal`,c.card.dataset.face=`terminal`,c.termWrap.hidden=!1,c.planFace.hide(),c.conversationFace.hide(),eN(c),BC(c,i)}function u(){YM(i)||l()}let d=new AbortController,f=uT({signal:d.signal,requestPlan:(e,t,n)=>K({type:`session-plan`,id:e,agentId:t,revision:n}),requestDraft:(e,t)=>K({type:`session-plan`,id:e,agentId:t,draft:!0}),showTerminal:u,sendDecision:(e,t)=>K({type:`plan-decision`,id:e,...t}),reportProblem:e=>BN(i,e)}),p=nw({signal:d.signal,sendControl:e=>K(e),showTerminal:l});return c={term:null,fitAddon:null,webglAddon:null,needsWebGLReload:!1,webglAttachedWithoutLayout:!1,dataWs:null,card:o.card,nameEl:o.nameEl,taskTitleEl:o.taskTitleEl,taskTitle:r.taskTitle??null,taskTitleIsCustom:r.taskTitleIsCustom??!1,path:KM(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=()=>BC(c,i),c._showTerminalFace=l,c._showPreferredFace=()=>{uN(c)===`plan`?fN(i):YM(i)||l()},c._setBorrowed=e=>{c.isBorrowed=e,eN(c)},o.card.append(f.el,p.el),P.set(i,c),nN(c,i),eN(c),c.btnDocs.classList.toggle(`visible`,mh(i)),a===A.RUNNING&&wf(c,!0),s||(NC(o.termWrap,c),FC(c,i)),cN(),c}function uN(e){let t=e.planReviewState.reviews.some(e=>e.state===`open`),n=e.planReviewState.reviews.some(Fw);return gg({hasPlan:e.hasPlan,pendingPromptKind:e.pendingPromptKind,hasOpenReview:t,hasApprovedReview:n})}function dN(e){let t=F(e);return!t?.isBorrowed||uN(t)!==`plan`?!1:fN(e)}function fN(e){let t=F(e);return!t?.isBorrowed||!t.hasPlan?!1:(t.face=`plan`,t.card.dataset.face=`plan`,t.termWrap.hidden=!0,t.conversationFace.hide(),t.planFace.show(wr(e)),eN(t),!0)}function pN(e,t){let n=F(e);n&&(n.hasPlan=t===!0,eN(n),dN(e))}function mN(e){let t=F(e.id);t&&(t.planReviewState=Qw(t.planReviewState,e),t.hasPlan=e.hasPlan,t.planFace.update({state:t.planReviewState}),eN(t),dN(e.id))}function hN(e){let t=F(e.id);t&&t.planFace.update({draft:e})}function gN(e){let t=F(e.id);t&&(t.planReviewState={reviews:e.reviews},t.hasPlan=!0,t.planFace.update({response:e}),eN(t))}function _N(e){if(e.type!==`error`&&e.type!==`session-error`||e.scope!==`plan`&&e.scope!==`plan-decision`)return!1;let t=F(e.id);return t?e.scope===`plan`?(t.planFace.update({requestFailed:!0}),!0):(t.planFace.update({decisionRefused:!0,refusalText:e.message}),!0):!1}function vN(e){for(let[,t]of P)t.planFace.update({isConnected:e})}function yN(e,t){let n=F(e);n&&(n.effectiveBase=typeof t==`string`?t:void 0)}function bN(e,t){let n=F(e);if(!n)return;n.agent=typeof t==`string`?t:null,eN(n);let r=Id(t);wN(n,`.agent-badge`,`agent`,{on:r!==``,value:r,text:r})}function xN(e,t){let n=F(e);n&&(t?n.card.dataset.worktree=``:delete n.card.dataset.worktree)}function SN(e,t,n){let r=F(e);r&&(CN(r.card,`guarded`,t),CN(r.card,`guardrailsReleased`,n),L_(r.btnGuardrails,r.card))}function CN(e,t,n){n?e.dataset[t]=``:delete e.dataset[t]}function wN(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 TN(e,t,n=!1){let r=F(e);r&&(r.activeAgents=Math.max(0,Number(t)||0),r.awaitingBackgroundTasks=pr(r.currentState,n===!0),r.card.toggleAttribute(`data-monitoring`,r.awaitingBackgroundTasks))}function EN(e,t){let n=F(e);if(!n)return;let r=RM(t);wN(n,`.usage-badge`,`usage`,{on:!!r,text:r||``,title:r?zM(t):void 0})}function DN(e,t,n){return t?{on:!0,value:`compacting`,title:`Context compaction in progress`,text:`compacting`}:e?{on:!0,value:KM(e),title:`Waiting on a permission or input prompt`,text:hg(KM(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 ON(e,t,n=!1,r=!1){let i=F(e);i&&(i.pendingPromptKind=typeof t==`string`?t:null,wN(i,`.prompt-badge`,`prompt`,DN(t,n,r)),i.conversationFace.refresh(),!dN(e)&&(typeof t!=`string`||t===``)&&i.face===`terminal`&&YM(e))}function kN(e,t){let n=F(e);n&&(n.unseenOutcome=t??null)}function AN(e){return e?`sleeping until ~${wl(new Date(e))}`:`scheduled`}function jN(e,t){let n=F(e);n&&wN(n,`.wakeup-badge`,`wakeup`,{on:!!t,value:t?.kind||`wakeup`,text:AN(t?.at),title:t?.reason?`Scheduled revival: ${t.reason}`:`Scheduled revival pending`})}function MN(e,t){let n=F(e);if(!n)return;let r=Array.isArray(t.findings)?t.findings:[],i=t.filesFixed||0,a=null,o=0;!t.skipped&&t.mode===`fix`&&i>0&&(a=`fixed`,o=i),!t.skipped&&t.mode===`report`&&r.length>0&&(a=`flagged`,o=new Set(r.map(e=>e.file)).size);let s={};for(let e of r)s[e.rule]=(s[e.rule]||0)+(e.count||0);let c=Object.keys(s).map(e=>`${e}: ${s[e]}`).join(`, `),l=a===`fixed`?`auto-fixed`:`flagged`;wN(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 NN(e,t){t===`pending-review`||t===`parked`||t===`merging`?e.dataset.merge=t:delete e.dataset.merge}function PN(e,t,n=null){let r=F(e),i=KM(t)||`none`;r&&NN(r.card,i),BE(wr(e),i,KM(n)||null)}function FN(e,t,n=null){let r=F(e),i=KM(t)||`none`;r&&NN(r.card,i),HE(wr(e),i,KM(n)||null)}function IN(e,t){UE(wr(e),t)}function LN(e,t){let n=F(e);if(!n)return;let r=KM(t);n.card.dataset.session=r,n.nameEl.textContent=r}function RN(e){let t=F(e);t&&($_(t),P.delete(wr(e)),cT(wr(e)),t.resizeObserver&&t.resizeObserver.disconnect(),t.abortController&&t.abortController.abort(),jC(t,wr(e)),MS(t),t.term&&t.term.dispose(),t.term=null,t.fitAddon=null,t.card&&t.card.remove(),cN())}function zN(e,t,n){if(!t||!e.term)return;let r=n===A.DONE?`Session complete`:`Session failed`,i=n===A.DONE?`\x1B[34m`:`\x1B[31m`;e.term.write(`\r\n\r\n\x1b[2m${i} ${r}\x1b[0m\r\n\r\n\x1b[2m Open the session actions menu and choose Restart to start a new session.\x1b[0m\r\n`)}function BN(e,t){let n=F(e);n?__(n).show(`error`,t):jd(t)}function VN(e,t){let n=F(e);if(!n)return;let r=n.card.querySelector(`:scope > .session-failure-reason`);if(!(n.currentState===A.FAILED&&t)){r?.remove();return}let i=r??j(`p`,`session-failure-reason`);i.setAttribute(`role`,`status`),i.textContent=t,r||n.termWrap.before(i)}function HN(e,t){e.term&&(t===A.DONE||t===A.FAILED)&&(e.term.clear(),e.term.reset())}function UN(e){let t=P.get(e);t&&jg({state:t.currentState,unseenOutcome:t.unseenOutcome})&&document.visibilityState===`visible`&&document.hasFocus()&&K({type:`dismiss`,id:e,expectedState:t.currentState})}function WN(e,t,n){let r=document.activeElement;return zv({previousState:t,nextState:n,isPhoneLayout:Jy(),isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),isActiveViewer:e._isActiveViewer?.()===!0,hasFocusInsideTerminal:r instanceof Node&&e.termWrap.contains(r)})}function GN(e,t,n,r=``){let i=F(e);if(!i)return;let a=KM(t),o=i.currentState;i.currentState=a,a!==A.RUNNING&&(i.awaitingBackgroundTasks=!1),i.conversationFace.refresh(),a!==o&&(i.stateSince=typeof n==`number`&&Number.isFinite(n)?n:Date.now(),wf(i,a===A.RUNNING)),o===A.DORMANT&&a!==A.DORMANT&&RC(i,wr(e)),yg({state:a})===`resting`&&bp(wr(e)),i.card.dataset.state=a,i.card.toggleAttribute(`data-monitoring`,pr(a,i.awaitingBackgroundTasks)),eN(i),(a===A.WAITING&&o!==A.WAITING||a===A.COMPLETE&&o!==A.COMPLETE)&&!$v(r)&&Ls()&&Db(zs()),WN(i,o,a)&&K({type:`dismiss`,id:wr(e),expectedState:A.COMPLETE});let s=a===A.DONE||a===A.FAILED,c=o!==A.DONE&&o!==A.FAILED&&o!==A.INITIALIZING;s&&c&&(i.card.classList.remove(`completion-flash`),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.card.classList.add(`completion-flash`),i.card.addEventListener(`animationend`,()=>i.card.classList.remove(`completion-flash`),{once:!0})})}),Ls()&&Db(zs())),(a===A.DONE||a===A.FAILED)&&zN(i,c,a),a===A.INITIALIZING&&HN(i,o),cN()}var KN=`(no path)`;function qN(e){if(!e)return KN;let t=String(e).replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return(n===-1?t:t.slice(n+1))||`(no path)`}function JN(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):KN,a=i.get(r);a||(a={key:r,label:r===`(no path)`?KN:qN(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:qN(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 YN(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 XN({onAdd:e,onForget:t}){let n=j(`div`,`session-group-header`),r=j(`span`,`session-group-label`),i=j(`span`,`session-group-count`),a=j(`span`,`session-group-rule`);a.setAttribute(`aria-hidden`,`true`);let o=j(`button`,`session-group-add`,`+`);o.type=`button`,o.addEventListener(`click`,()=>e(n.dataset.path,n.dataset.label));let s=j(`button`,`session-group-forget`);return s.type=`button`,s.append(h_(u_)),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 ZN(e,t,n){let{header:r,label:i,count:a,addButton:o,forgetButton:s}=e,c=t.key===KN,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 QN={waitingCount:0,finishedCount:0,failedCount:0};function $N(e){let t=j(`div`,`attention-banner`);return t.setAttribute(`role`,`status`),e.classList.add(`attention-banner-jump`),t.append(j(`span`,`attention-banner-count`),e),eP(t,QN),t}function eP(e,t){N(e,`.attention-banner-count`).textContent=zg(t),e.toggleAttribute(`data-empty`,!Rg(t)),e.toggleAttribute(`data-jumpable`,Ig(t)>0)}var tP=e=>e.ui.path,nP=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),rP=null,iP=null,aP=null,oP=null,sP=null,cP=null,lP=null,uP=!1,dP=null,fP=!1,pP=new Map,mP=new Map,hP=new Map,gP=new Map,_P=null,vP=``,yP=[],bP=new Set;function xP(){return YN(CP(MP()),bP)}function SP(e){let t=_P;if(_P=e||null,t&&t!==_P){let e=mP.get(t);e&&(e.tabIndex=-1,e.setAttribute(`aria-selected`,`false`))}if(_P){let e=mP.get(_P);e&&(e.tabIndex=0,e.setAttribute(`aria-selected`,`true`))}}function CP(e){return JN(e,tP,Iv(e,tP))}function wP(e){let t=gP.get(e.key),n=hP.get(e.key);return(!t||!n)&&(t=XN({onAdd:Xv,onForget:e=>{Lv(e),RP()}}),n=j(`div`,`focus-rail-list`),n.setAttribute(`role`,`listbox`),gP.set(e.key,t),hP.set(e.key,n)),ZN(t,e,`rail`),n.setAttribute(`aria-label`,`${e.label} sessions`),{header:t.header,list:n}}function TP(){return uP}function EP(){return Ar.snapshot().focusedSessionId}function DP({rail:e,center:t,resizer:n}){if(rP=e,aP=t,!rP||!aP)return;let r=rP,i=aP;AP(n),r.removeAttribute(`role`),r.removeAttribute(`aria-label`),r.setAttribute(`aria-keyshortcuts`,Kp(Jp)),iP=$N(Xp(Wp(`next-attention`,Jp)));let a=j(`details`,`rail-status-key`);a.append(j(`summary`,`rail-status-key-summary`,`Status key`),Mv()),r.append(iP,a),sP=j(`div`,`focus-empty`),sP.innerHTML=`<p class="focus-empty-title"></p><p class="focus-empty-desc"></p>`,cP=sP.querySelector(`.focus-empty-title`),lP=sP.querySelector(`.focus-empty-desc`),oP=j(`div`,`focus-card-slot`),i.append(sP,oP),r.addEventListener(`keydown`,jP)}var OP={minPx:180,maxPx:480},kP=16;function AP(e){e&&rP&&n_({resizer:e,column:rP,widthHost:rP,widthProperty:`--rail-width`,bounds:OP,keyStepPx:kP,getStoredWidth:$s,setStoredWidth:ec})}function jP(e){if(e.key===`Delete`||e.key===`Backspace`){let t=e.target instanceof HTMLElement?e.target:null,n=t?.dataset.id;if(!n||mP.get(n)!==t)return;e.preventDefault(),Zv(n,pP.get(n));return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`||e.altKey||e.metaKey||e.ctrlKey||e.shiftKey)return;let t=Og(xP(),_P,e.key===`ArrowDown`?1:-1);t!=null&&(e.preventDefault(),SP(t),mP.get(t)?.focus())}function MP(){return Sg(qv(NP))}function NP(e){return e.nameEl?e.nameEl.textContent:e.card&&(e.card.dataset.session||e.card.dataset.id)||``}function PP(e){let{row:t,refs:n}=bv(`button`);t.type=`button`,t.dataset.id=e,t.setAttribute(`role`,`option`),t.addEventListener(`click`,()=>FP(e));let{item:r,removeButton:i}=xv(t,()=>Zv(e,pP.get(e)));return r.setAttribute(`role`,`presentation`),i.tabIndex=-1,Object.assign(t,{_refs:n,_row:r})}function FP(e){let t=Wv(e);t&&(qP(e),UP(t,e))}function IP(e,{id:t,ui:n,state:r,name:i}){let a=pP.get(t)||`none`;Ev(e,e._refs,{ui:n,state:r,name:i??``,mergeStatus:a===`none`?``:a}),e.classList.toggle(`focused`,t===EP());let o=t===_P;e.setAttribute(`aria-selected`,String(o)),e.tabIndex=o?0:-1}function LP(e,t){if(!uP)return;let n=e?.card?.dataset.id,r=n?mP.get(n):null;r&&(t===`flag`?r.dataset.activity=e._activity||``:xf(r._refs?.glyph))}vf(LP),kf(()=>{if(uP)for(let[e,t]of mP){let n=P.get(e);n&&(t._refs.elapsed.textContent=Df(n))}});function RP(){if(!uP)return;let e=rP;if(!e)return;let t=CP(MP()),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=mP.get(e);a||(a=PP(e),mP.set(e,a)),IP(a,r),i||t.appendChild(a._row)}t._lastOrderKey=r},i=new Set(t.order),a=t.groups.map(e=>e.key).join(`
164
+ `),o=a===vP;vP=a;for(let n of t.groups){let{header:t,list:i}=wP(n);o||e.append(t,i),r(n.rows,i)}for(let[e,t]of[...gP])i.has(e)||(t.header.remove(),hP.get(e)?.remove(),gP.delete(e),hP.delete(e));for(let[e,t]of mP)n.has(e)||(t._row.remove(),mP.delete(e),e===_P&&(_P=null));for(let e of[...pP.keys()])P.has(e)||pP.delete(e);let s=yP;yP=YN(t,bP);let c=EP();if(c&&!P.has(c)){Ar.dispatch(`focusSession`,null),_P=null;let e=zP(s,c);if(e){let t=!document.activeElement||document.activeElement===document.body;qP(e),t&&UP(P.get(e),e);return}}JP();let l=EP();if(l){let e=P.get(l);e&&e.card.parentElement!==oP&&GP(e,l)}VP()}function zP(e,t){let n=e.filter(e=>e===t||P.has(e));return n.length<2?yP.find(e=>P.has(e))??null:Og(n,t,n.indexOf(t)===n.length-1?-1:1)}function BP(){return Pg(MP())}function VP(){iP&&eP(iP,Fg(MP()))}function HP(){if(!uP)return;let e=BP();if(!e.length)return;let t=wg(e,dP);if(!t)return;dP=t;let n=P.get(t),r=t===EP();Wv(t),qP(t),mP.get(t)?.scrollIntoView({block:`nearest`}),r&&WP(t),UP(n,t)}function UP(e,t){e&&requestAnimationFrame(()=>requestAnimationFrame(()=>{uP&&EP()===t&&e.term?.focus()}))}function WP(e){if(nP?.matches||document.hidden)return;let t=mP.get(e);t?.animate&&t.animate([{transform:`scale(1)`},{transform:`scale(1.045)`,offset:.3},{transform:`scale(1)`}],{duration:360,easing:`cubic-bezier(0.22, 1, 0.36, 1)`});let n=P.get(e)?.card;n?.animate&&n.animate([{opacity:.8},{opacity:1}],{duration:240,easing:`ease-out`})}function GP(e,t){oP&&(Nr(e,t,oP,{className:`focus-centered`}),VC(e,t,!0))}function KP(){let e=EP();e&&(Mr()===e&&Pr(),Ar.dispatch(`focusSession`,null))}function qP(e){uP&&P.has(e)&&(UN(e),e!==EP()&&(KP(),Ar.dispatch(`focusSession`,e),_P=e,Gv(e),RP()))}function JP(){if(!sP||!cP||!lP)return;let e=EP(),t=!!(e&&P.has(e)),n=P.size>0;sP.hidden=t,mm(sP,!n),cP.hidden=!n,lP.hidden=!n,!t&&n&&(cP.textContent=`No session selected`,lP.textContent=`Select a session from the rail on the left to focus it here.`)}function YP(e,t){pP.set(wr(e),typeof t==`string`&&t?t:`none`),uP&&RP()}function XP(e){uP&&P.has(e)&&qP(e)}function ZP(e){return!uP||!P.has(e)?!1:(qP(e),fN(e))}function QP(e){if(!uP)return;let t=xP()[e-1];t&&FP(t)}function $P(e){if(!uP)return;let t=Og(xP(),_P,e);t!=null&&(FP(t),mP.get(t)?.scrollIntoView({block:`nearest`}))}window.addEventListener(`focus`,()=>{let e=EP();uP&&e&&UN(e)});function eF(){rP&&(uP=!0,KP(),_P=null,RP(),fP&&BP().length>0?HP():nF())}function tF(e){fP=!0;try{e()}finally{fP=!1}}function nF(){if(!uP||EP())return;let e=Kv();e&&qP(e)}function rF(){uP&&=(KP(),_P=null,!1)}var iF=`t-[0-9a-f]{8}`,aF=`No findings. Open a markdown file in a connected editor.`,oF=`No intent yet. The visions proposes one after its first pass.`,sF=`Unowned`,cF=RegExp(`^${iF}$`);function lF(){return{byProject:{},unowned:[]}}function uF(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`&&cF.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 dF(e){if(Array.isArray(e))return e.map(uF).filter(e=>e!==null);let t=uF(e);return t?[t]:[]}function fF(e){let t=e?.intent;if(!t||typeof t!=`object`)return lF();let n=t;if(!(Object.hasOwn(n,`byProject`)||Object.hasOwn(n,`unowned`)||Object.hasOwn(n,`global`)))return{byProject:{},unowned:dF(n)};let r=n.byProject&&typeof n.byProject==`object`?n.byProject:{},i=[];for(let[e,t]of Object.entries(r)){let n=dF(t);n.length!==0&&e&&i.push([e,n])}return{byProject:Object.fromEntries(i),unowned:dF(Object.hasOwn(n,`unowned`)?n.unowned:n.global)}}function pF(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 mF(e,t){let n=e||lF(),r=t?.intent;if(!r||typeof r!=`object`)return n;let i=r,a=pF(Array.isArray(i.threads)?dF(i.threads):dF(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 hF(e,t=null){let n=t&&typeof t.get==`function`?t.get(e):null;return typeof n==`string`&&n?n:e}function gF(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:bF(e,r)}))}function _F(e,t=null,n=Date.now()){let r=e||lF(),i=Object.entries(r.byProject||{}).filter(([e,t])=>e&&Array.isArray(t)&&t.length>0).map(([e,n])=>({projectId:e,label:hF(e,t),threads:n})).sort((e,t)=>e.label.localeCompare(t.label)).flatMap(({projectId:e,label:t,threads:r})=>gF(r,{key:e,label:t,now:n})),a=gF(Array.isArray(r.unowned)?r.unowned:[],{key:`unowned`,label:sF,now:n});return i.length+a.length>0?[...a,...i]:[{key:`unowned`,label:sF,text:oF,hasText:!1,active:!1,meta:``}]}function vF(e){return e?.text?`proposed by visions`:``}function yF(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:yl(Number(t)-n,{rounding:`floor`,wording:`spelled`,suffix:` ago`,justNowBelowSeconds:60})}function bF(e,t=Date.now()){let n=vF(e);if(!n)return``;let r=typeof e?.id==`string`&&e.id?`thread ${e.id}, `:``,i=yF(e?.ts,t);return i?`${r}${n}, ${i}`:`${r}${n}`}function xF(e){let t=Number(e?.range?.start?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function SF(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function CF(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function wF(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 TF(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function EF(e){let t=TF(e);return t===1?`1 finding`:`${t} findings`}function DF(e){let t=TF(e);return t===1?`1 comment`:`${t} comments`}function OF(e){let t=TF(e?.findings?.length),n=TF(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(EF(t)),n>0&&i.push(DF(n)),i.length>0?i.join(`, `):EF(0)}function kF(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function AF(e){return(typeof e?.hand==`string`?e.hand.trim():``)||null}function jF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=AF(t);return i?(n.set(r,i),n):(n.delete(r),n)}function MF(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 NF=`hand`,PF=`unseen`,FF=`
165
+ `;function IF(e){let t=2166136261,n=3266489909;for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r);t=Math.imul(t^i,16777619)>>>0,n=Math.imul(n^i,2246822507)>>>0}return`${t.toString(36).padStart(7,`0`)}${n.toString(36).padStart(7,`0`)}`}function LF(e,t){return IF(JSON.stringify([e,...t]))}function RF(e,t){return LF(`finding`,[e,xF(t),String(t.code??``),String(t.message??``)])}function zF(e,t){return LF(`comment`,[e,WF(t),String(t.message??``)])}function BF(e){return LF(`fix`,[e.uri,tI(e),e.code,e.message,nI(e)])}function VF(e){return LF(`intent`,[e.key,e.text,e.active])}function HF(e,t,n,r=[],i=null){let a=[...n].map(([e,t])=>LF(`hand`,[e,t])).sort(),o=new Set;for(let r of[...e.keys(),...t.keys(),...n.keys()])o.add(LF(`document`,[r]));for(let[t,n]of e)for(let e of n)o.add(RF(t,e));for(let[e,n]of t)for(let t of n)o.add(zF(e,t));for(let e of r)o.add(BF(e));for(let e of _F(i,null,0))e.hasText&&o.add(VF(e));let s=[...o].sort();return{signature:[...a,...s].join(FF),handEntries:a,contentEntries:s}}function UF(e,t){let n=new Set(t.split(FF));return e.handEntries.some(e=>!n.has(e))?NF:e.contentEntries.some(e=>!n.has(e))?PF:null}function WF(e){let t=Number(e?.line);return!Number.isFinite(t)||t<1?`L?`:`L${Math.floor(t)}`}function GF(e){return Array.isArray(e?.diagnostics)?e.diagnostics:[]}function KF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=GF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function qF(e){return Array.isArray(e?.comments)?e.comments:[]}function JF(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=qF(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function YF(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 XF(e){let t=new Map,n=Array.isArray(e?.documents)?e.documents:[];for(let e of n){let n=typeof e?.uri==`string`?e.uri:``,r=Array.isArray(e?.comments)?e.comments:[];n&&r.length!==0&&t.set(n,r)}return t}function ZF(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:wF(a)||a,hand:s,findings:[...c].sort((e,t)=>CF(e)-CF(t)||SF(e)-SF(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>QF(e.name,t.name)||QF(e.uri,t.uri)),r}function QF(e,t){return e<t?-1:+(e>t)}var $F=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`;function eI(e){let t=TF(e);return t===1?`1 fix`:`${t} fixes`}function tI(e){let t=Number(e?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function nI(e){return e?.applied===!0?`applied`:`refused`}function rI(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 iI(e){let t=typeof e?.uri==`string`?e.uri:``,n=Number(e?.ts);return rI(e?.fix,{uri:t,ts:Number.isFinite(n)?n:0})}function aI(e,t,{max:n=20}={}){let r=iI(t);return r?[r,...e].slice(0,Math.max(0,Math.floor(n))):[...e]}function oI(e,{max:t=20}={}){let n=Array.isArray(e?.fixes)?e.fixes:[],r=[];for(let e of n){let t=rI(e);t&&r.push(t)}return r.slice(0,Math.max(0,Math.floor(t)))}var sI=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,cI={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function lI(e){let t=typeof e==`string`?e:``;return cI[t]||t||`source`}function uI(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:yl(Number(t)-n,hl)}function dI(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 fI(e){let t=Array.isArray(e?.events)?e.events:[],n=[];for(let e of t){let t=dI(e);t&&n.push(t)}return n}function pI(e){let t=Number(e?.overflow);return!Number.isFinite(t)||t<=0?0:Math.floor(t)}function mI(e){let t=TF(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function hI(e,t){return[...e].sort((e,t)=>t.seq-e.seq).slice(0,Math.max(0,Math.floor(t)))}function gI(e,t,{max:n=100}={}){let r=fI(t);if(r.length===0)return hI(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 hI([...i.values()],n)}function _I(e,{max:t=100}={}){return hI(fI(e),t)}function vI(e){let t=TF(e);return t===1?`1 event`:`${t} events`}function yI(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 bI=new Map,xI=new Map,SI=new Map,CI=lF(),wI=new Map,TI=null,EI=null,DI=null,OI=null,kI=null,AI=[],jI=0,MI=null,NI=[],PI=null,FI=HF(bI,xI,SI,NI,CI),II=Ec(),LI=Ol({getAck:()=>II,setAck:e=>{II=e,Dc(e)},signature:()=>FI.signature,isLooking:()=>!yr(TI)});function RI(){let e=j(`section`,`visions-intent`);e.append(j(`h2`,`visions-intent-title`,`Intent`));let t=j(`div`,`visions-intent-list`);return e.append(t),DI={list:t},e}function zI(e){let t=j(`div`,`visions-intent-item`),n=j(`div`,`visions-intent-head`);n.append(j(`span`,`visions-intent-scope`,e.label),j(`span`,`visions-intent-meta`,e.meta));let r=j(`p`,`visions-intent-text`,e.text);return r.classList.toggle(`visions-intent-none`,!e.hasText),t.classList.toggle(`visions-intent-active`,e.active===!0),t.append(n,r),t}function BI(){DI&&DI.list.replaceChildren(..._F(CI,wI).map(zI))}function VI(e){wI=e instanceof Map?e:new Map,BI()}function HI(e){let t=j(`section`,`visions-doc`),n=j(`div`,`visions-doc-head`),r=j(`h2`,`visions-doc-name`);if(r.textContent=e.name,r.title=e.uri,n.append(r,j(`span`,`visions-doc-count`,OF(e))),t.append(n),e.hand&&t.append(UI(e.hand)),e.findings.length>0){let n=j(`div`,`visions-findings`);for(let t of e.findings)n.append(GI(t));t.append(n)}if(e.comments.length>0){let n=j(`div`,`visions-comments`);for(let t of e.comments)n.append(WI(t));t.append(n)}return t}function UI(e){let t=j(`div`,`visions-hand`);return t.textContent=kF(e),t}function WI(e){let t=j(`div`,`visions-comment`),n=j(`div`,`visions-comment-head`);n.append(j(`span`,`visions-comment-chip`,`visions`)),n.append(j(`span`,`visions-comment-line`,WF(e))),t.append(n);let r=j(`p`,`visions-comment-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function GI(e){let t=j(`div`,`visions-finding`);t.append(j(`span`,`visions-finding-line`,xF(e)));let n=e?.code==null?``:String(e.code);n&&t.append(j(`span`,`visions-finding-code`,n));let r=j(`span`,`visions-finding-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function KI({force:e=!1}={}){if(!EI||!e&&yr(TI))return;EI.textContent=``;let t=ZF(bI,xI,SI);if(t.length===0){let e=j(`p`,`visions-empty`,aF);if(kI===!1){let t=Tp(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}EI.append(e)}else for(let e of t)EI.append(HI(e))}function qI(e){kI=e?.visions?.enabled===!0,KI()}function JI(){let e=j(`section`,`visions-activity`),t=j(`div`,`visions-activity-head`);t.append(j(`h2`,`visions-activity-title`,`Activity`));let n=j(`span`,`visions-activity-count`);t.append(n),e.append(t);let r=j(`div`,`visions-activity-list`);e.append(r);let i=j(`p`,`visions-activity-overflow`);return e.append(i),MI={count:n,list:r,overflow:i},e}function YI(e,t){let n=j(`div`,`visions-activity-row`);n.append(j(`span`,`visions-activity-source`,lI(e.source))),n.append(j(`span`,`visions-activity-age`,uI(e.ts,t))),n.append(j(`span`,`visions-activity-scope`,yI(e)));let r=j(`span`,`visions-activity-summary`);return r.textContent=e.summary,n.append(r),n}function XI({force:e=!1}={}){if(!MI||!e&&yr(TI))return;let{count:t,list:n,overflow:r}=MI;if(t.textContent=vI(AI.length),n.textContent=``,AI.length===0){n.append(j(`p`,`visions-empty`,sI)),r.textContent=``;return}let i=Date.now();for(let e of AI)n.append(YI(e,i));r.textContent=mI(jI)}function ZI(){let e=j(`section`,`visions-fixes`),t=j(`div`,`visions-fixes-head`);t.append(j(`h2`,`visions-fixes-title`,`Fixes`));let n=j(`span`,`visions-fixes-count`);t.append(n),e.append(t);let r=j(`div`,`visions-fixes-list`);return e.append(r),PI={count:n,list:r},e}function QI(e){let t=j(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=j(`span`,`visions-fix-file`);n.textContent=wF(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(j(`span`,`visions-fix-line`,tI(e))),t.append(j(`span`,`visions-fix-outcome`,nI(e))),t.append(j(`span`,`visions-fix-code`,e.code||``));let r=j(`span`,`visions-fix-message`);return r.textContent=e.message,t.append(r),t}function $I({force:e=!1}={}){if(!PI||!e&&yr(TI))return;let{count:t,list:n}=PI;if(t.textContent=eI(NI.length),n.textContent=``,NI.length===0)n.append(j(`p`,`visions-empty`,$F));else for(let e of NI)n.append(QI(e))}function eL(){FI=HF(bI,xI,SI,NI,CI),FI.signature!==``&&LI.refresh(),OI&&OI(UF(FI,II))}function tL(e){OI=e,eL()}var nL=Ed(`visions-connection-status`);function rL(e){e?nL.clear():nL.show(`error`,`${G} What you see below is from before the connection dropped.`)}function iL(e){if(TI)return TI;let t=j(`div`,`visions-content`);t.append(nL.element,RI());let n=j(`div`,`visions-feed`);return t.append(n),t.append(ZI()),t.append(JI()),e.appendChild(t),TI=t,EI=n,BI(),KI({force:!0}),$I({force:!0}),XI({force:!0}),t}function aL(){BI(),KI({force:!0}),$I({force:!0}),XI({force:!0})}function oL(){FI.signature!==``&&LI.acknowledge(),eL()}function sL(e){NI=aI(NI,e),$I(),eL()}function cL(e){bI=KF(bI,e),KI(),eL()}function lL(e){xI=JF(xI,e),KI(),eL()}function uL(e){SI=jF(SI,e),KI(),eL()}function dL(e){CI=mF(CI,e),BI(),eL()}function fL(e){AI=gI(AI,e),jI=pI(e),XI(),eL()}function pL(e){AI=_I(e),jI=0,XI(),eL()}function mL(e){bI=YF(e),xI=XF(e),SI=MF(e),CI=fF(e),NI=oI(e),BI(),KI(),$I(),eL()}var hL=i(l(),e());g({glimmervoidId:l().min(1),event:l().min(1),token:l().nullable().optional(),payload:hL}),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 gL=`Claude Code hooks injected into every session Glimmervoid spawns.`,_L=`Loading hooks`,vL=`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.`,yL=`Start from`,bL=`Filter by name, event or command`,xL=`Nothing matches that filter.`,SL=`Preview`,CL=`The entry this becomes in the per-session settings file.`,wL=`Duplicate`,TL=`Discard changes`,EL=`Close the editor and lose the unsaved changes?`,DL=`Esc cancels. Ctrl+Enter saves.`,OL=`A change reaches a session at its next start or restart. Claude Code sessions only; Codex and Grok sessions do not read this file.`,kL=`Glimmervoid's own hooks`,AL=`Always present, read-only. Status detection depends on them.`,jL=`Your hooks`,ML=`New hook`,NL=`Edit hook`,PL=`Saved to config.json.`,FL=`All projects`,IL=`This event takes no matcher.`,LL=`Blank uses Claude Code's default for the event.`,RL=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.`}]),zL=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`}}]),BL=Object.freeze({hooks:[],builtin:[],events:[]});function VL(e){return!e||typeof e.error==`string`}function HL(e){return!e||typeof e.error!=`string`?``:e.error}function UL(e,t){let n=e?.[t];return Array.isArray(n)?n:BL[t]}var WL=e=>UL(e,`hooks`),GL=e=>UL(e,`builtin`),KL=e=>UL(e,`events`);function qL(e){let t=e?.limits?.maxTimeoutSec;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:600}function JL(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return typeof n!=`string`||!t||n===t}function YL(e){let t=WL(e),n=t.filter(e=>e.enabled!==!1).length;return[{label:`yours`,value:String(t.length),tone:null},{label:`enabled`,value:String(n),tone:t.length>0&&n===0?`warn`:null},{label:`built in`,value:String(GL(e).length),tone:null}]}function XL(e,t){let n=new Map(t.map((e,t)=>[e.name,t])),r=e=>n.get(e.event)??t.length;return[...e].sort((e,t)=>{let n=r(e)-r(t);return n===0?String(e.name).localeCompare(String(t.name)):n})}function ZL(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 QL(e){return e.length>=4}function $L(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 eR(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 tR(e){return`${e} copy`}function nR(e,t){return e.find(e=>e.name===t)||null}function rR(e,t){let n=nR(e,t);return n?n.matcher?`Matches ${n.matcher}. Blank matches every ${n.name}.`:IL:``}function iR(e){return e.type===`http`?e.url||``:e.command||``}function aR(e){let t=RL.find(t=>t.value===e);return t?t.label:String(e||``)}function oR(e){return!Number.isInteger(e.timeout)||Number(e.timeout)<=0?``:`${e.timeout}s timeout`}function sR(e,t){let n=Array.isArray(e.projects)?e.projects:[];return n.length===0?FL:n.map(e=>{let n=t.find(t=>t.id===e);return n?n.name:e}).join(`, `)}function cR(e){return e.matcher?`${e.event} / ${e.matcher}`:e.event}function lR(e){return cR(e)}function uR(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 dR(e){let t=e[0];return{id:null,name:``,event:t?t.name:``,matcher:``,type:`command`,command:``,url:``,timeout:``,enabled:!0,projects:[]}}function fR(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 pR(e,t,n=600){if(!e.name.trim())return`Give the hook a name.`;let r=nR(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 mR(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 hR(e,t){let n={...dR(t),...e.draft};return nR(t,n.event)||(n.event=dR(t).event),n}function gR(e,t){return JSON.stringify(mR(e))!==JSON.stringify(t)}function _R(e){return{...e,enabled:e.enabled===!1}}function vR(e){return`Delete the hook "${e.name}"? Sessions already running keep it until they restart.`}var yR=null,bR=null,xR=null,SR=!1,CR=null,wR=null,TR=null,ER=null,DR=null,OR=null,kR=!1,AR=``,jR=new Set,MR=new Set,NR=new Map,PR=!1,FR=(e,t)=>gr(`hooks`,e,t);function IR(e,t,n){let r=j(`p`,e,t);return n&&(r.dataset.tone=n),r}function LR(e,t,n,r){let i=j(`button`,e,t);return i.type=`button`,r&&i.setAttribute(`aria-label`,r),i.addEventListener(`click`,n),i}async function RR(e,t){try{let n=await hd(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 Od(e,q)}}async function zR(e,t,n,r){MR.add(e),NR.set(e,{tone:`busy`,text:r}),lz({force:!0});let i=await RR(t,n);MR.delete(e),i&&NR.set(e,{tone:`error`,text:i}),i||NR.delete(e),lz({force:!0}),dz()}function BR(e,t,n){let r=j(`label`,`hooks-field`);return r.append(j(`span`,`hooks-field-label`,e),t),n&&r.append(j(`span`,`hooks-field-hint`,n)),r}function VR(e,t,n){let r=j(`input`,`settings-view-input`);return r.type=`text`,r.value=e,r.autocomplete=`off`,r.spellcheck=!1,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value)),r}function HR(e,t){let n=j(`textarea`,`settings-view-input hooks-command`);return n.rows=3,n.value=e,n.spellcheck=!1,n.addEventListener(`input`,()=>t(n.value)),n}function UR(e,t,n){let r=j(`select`,`settings-view-input hooks-select`);for(let n of t){let t=j(`option`,null,n.name);t.value=n.name,t.title=n.description,n.name===e.event&&(t.selected=!0),r.append(t)}return r.addEventListener(`change`,()=>n(r.value)),r}function WR(e,t){let n=j(`div`,`hooks-type-row`);n.setAttribute(`role`,`radiogroup`);for(let r of RL){let i=j(`label`,`settings-view-toggle hooks-choice`),a=j(`input`,`settings-view-checkbox`);a.type=`radio`,a.name=`hooks-type`,a.value=r.value,a.checked=e.type===r.value,a.title=r.hint,a.addEventListener(`change`,()=>{a.checked&&t(r.value)}),i.append(a,j(`span`,null,r.label)),n.append(i)}return n}function GR(e,t){let n=j(`div`,`hooks-projects`);if(t.length===0)return n.append(j(`span`,`hooks-field-hint`,FL)),n;let r=j(`label`,`settings-view-project-choice hooks-choice`),i=j(`input`,`settings-view-checkbox`);i.type=`checkbox`,i.checked=e.projects.length===0,r.append(i,j(`span`,null,FL)),n.append(r);let a=[];for(let r of t){let t=j(`label`,`settings-view-project-choice hooks-choice`),o=j(`input`,`settings-view-checkbox`);o.type=`checkbox`,o.value=r.id,o.checked=e.projects.includes(r.id),o.addEventListener(`change`,()=>{e.projects=a.filter(e=>e.checked).map(e=>e.value),i.checked=e.projects.length===0}),a.push(o),t.append(o,j(`span`,null,r.name)),r.agent!==`claude-code`&&(t.append(j(`span`,`hooks-choice-note`,r.agent)),t.title=`Not a Claude Code project: this hook will not reach its sessions.`),n.append(t)}return i.addEventListener(`change`,()=>{if(!i.checked)i.checked=e.projects.length===0;else{for(let e of a)e.checked=!1;e.projects=[]}}),n}function KR(e){let t=j(`div`,`hooks-templates`);t.append(j(`span`,`hooks-templates-label`,yL));for(let n of zL){let r=LR(`hooks-chip`,n.label,()=>YR(null,hR(n,e)));r.title=n.summary,t.append(r)}return t}function qR(e){DR&&(e?DR.show(`error`,e):DR.clear())}function JR(e){let t=KL(yR),n=vr(yR),r=FR(e.id?NL:ML,PL);r.classList.add(`hooks-editor`);let i=j(`form`,`hooks-form`);i.addEventListener(`submit`,e=>{e.preventDefault(),QR()}),i.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),ZR()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),QR())}),e.id||i.append(KR(t));let a=j(`span`,`hooks-field-hint`,rR(t,e.event)),o=VR(e.matcher,``,t=>{e.matcher=t}),s=BR(`Command`,HR(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=BR(`URL`,VR(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=BR(`Matcher`,o,null);u.append(a);let d=()=>{let n=t.find(t=>t.name===e.event);a.textContent=rR(t,e.event),o.disabled=!!n&&!n.matcher,o.disabled&&(o.value=``,e.matcher=``)};d();let f=j(`input`,`settings-view-input hooks-timeout`);f.type=`number`,f.inputMode=`numeric`,f.min=`1`,f.max=String(qL(yR)),f.value=e.timeout,f.addEventListener(`input`,()=>{e.timeout=f.value});let p=j(`label`,`settings-view-toggle hooks-choice`),m=j(`input`,`settings-view-checkbox`);m.type=`checkbox`,m.checked=e.enabled,m.addEventListener(`change`,()=>{e.enabled=m.checked}),p.append(m,j(`span`,null,`Enabled`)),i.append(BR(`Name`,VR(e.name,`Lint after edits`,t=>{e.name=t}),null),BR(`Event`,UR(e,t,t=>{e.event=t,d()}),null),u,BR(`Type`,WR(e,t=>{e.type=t,l()}),null),s,c,BR(`Timeout (seconds)`,f,LL),BR(`Projects`,GR(e,n),null),BR(``,p,null)),DR=Ed(`hooks-editor-status`);let h=j(`div`,`hooks-editor-footer`),g=j(`span`,`hooks-editor-shortcut`,DL),_=LR(`btn-dialog btn-dialog-cancel`,`Cancel`,ZR),v=j(`button`,`btn-dialog btn-dialog-confirm`,e.id?`Save changes`:`Add hook`);return v.type=`submit`,OR=v,h.append(DR.element,g,_,v),i.append(h),r.append(i),r}function YR(e,t=null){wR=t||(e?fR(e):dR(KL(yR))),TR=mR(e?fR(e):dR(KL(yR))),ER=JR(wR),lz({force:!0}),ER.scrollIntoView({block:`nearest`});let n=ER.querySelector(`input[type=text]`);n instanceof HTMLInputElement&&n.focus()}function XR(){wR=null,TR=null,ER=null,DR=null,OR=null,kR=!1,PR=!0,lz({force:!0})}function ZR(){!wR||!TR||!gR(wR,TR)?XR():tf({title:TL,message:EL,confirmLabel:`Discard`,danger:!0,onConfirm:XR})}async function QR(){if(!wR||kR)return;let e=pR(wR,KL(yR),qL(yR));if(e){qR(e);return}let t=DR,n=OR;kR=!0,t?.show(`busy`,`Saving the hook.`),n&&(n.disabled=!0);let r=await RR(`save-hook`,{hook:mR(wR)});kR=!1,n&&(n.disabled=!1),t===DR&&(r?qR(r):(XR(),dz()))}function $R(e){let t=j(`details`,`hooks-preview`);t.open=jR.has(e.id),t.addEventListener(`toggle`,()=>{t.open?jR.add(e.id):jR.delete(e.id)});let n=j(`summary`,`hooks-preview-summary`,SL);n.title=CL;let r=j(`pre`,`hooks-preview-code`,eR(e));return t.append(n,r),t}function ez(e,{grouped:t=!1}={}){let n=vr(yR),r=j(`article`,`hooks-row`);r.setAttribute(`aria-label`,e.name),e.enabled===!1&&(r.dataset.state=`off`);let i=j(`div`,`hooks-row-main`),a=j(`div`,`hooks-row-head`);a.append(j(`span`,`hooks-row-name`,e.name));let o=t?e.matcher||``:cR(e);o&&a.append(j(`span`,`hooks-row-event`,o));let s=j(`code`,`hooks-row-target`,iR(e));s.title=iR(e);let c=j(`p`,`hooks-row-meta`,[aR(e.type),oR(e),sR(e,n)].filter(Boolean).join(` / `));i.append(a,s,c);let l=uR(e,n);l.length>0&&i.append(IR(`hooks-row-meta`,`Scoped to a project no longer in config: ${l.join(`, `)}`,`warn`)),i.append($R(e));let u=NR.get(e.id);if(u){let e=Ed(`hooks-row-status`);e.show(u.tone,u.text),i.append(e.element)}let d=j(`div`,`hooks-row-actions`),f=j(`label`,`settings-view-toggle hooks-choice`),p=j(`input`,`settings-view-checkbox`);p.type=`checkbox`,p.checked=e.enabled!==!1,p.disabled=MR.has(e.id),p.setAttribute(`aria-label`,`${e.name} enabled`),p.addEventListener(`change`,()=>{zR(e.id,`save-hook`,{hook:_R(e)},p.checked?`Turning the hook on.`:`Turning the hook off.`)}),f.append(p,j(`span`,null,`On`));let m=LR(`hooks-btn`,`Edit`,()=>YR(e),`Edit ${e.name}`),h=LR(`hooks-btn`,wL,()=>{let t=fR({...e,name:tR(e.name)});t.id=null,YR(null,t)},`Duplicate ${e.name}`),g=LR(`hooks-btn hooks-btn-danger`,`Delete`,()=>{tf({title:`Delete hook`,message:vR(e),confirmLabel:`Delete`,danger:!0,onConfirm:()=>{zR(e.id,`delete-hook`,{id:e.id},`Deleting the hook.`)}})},`Delete ${e.name}`);return g.disabled=MR.has(e.id),d.append(f,m,h,g),r.append(i,d),r}function tz(e){let t=j(`article`,`hooks-row hooks-row-builtin`),n=j(`div`,`hooks-row-main`);return n.append(j(`span`,`hooks-row-event`,lR(e)),j(`p`,`hooks-row-meta`,e.purpose)),t.append(n),t}function nz(){let e=FR(`Hooks`,gL),t=j(`div`,`hooks-stats`);for(let e of YL(yR))t.append(_r(`hooks`,e.label,e.value,e.tone));return e.append(t,IR(`hooks-meta`,OL)),e}function rz(){let e=j(`input`,`settings-view-input hooks-filter`);return e.type=`search`,e.value=AR,e.placeholder=bL,e.setAttribute(`aria-label`,bL),e.addEventListener(`input`,()=>{AR=e.value;let t=bR?.querySelector(`.hooks-list-yours`);t&&t.replaceWith(az())}),e}function iz(){let e=j(`div`,`hooks-empty-state`);return e.append(IR(`hooks-empty`,vL),KR(KL(yR))),e}function az(){let e=j(`div`,`hooks-list-yours`),t=WL(yR);if(t.length===0)return e.append(iz()),e;let n=ZL(XL(t,KL(yR)),AR);if(n.length===0)return e.append(IR(`hooks-empty`,xL)),e;for(let t of $L(n)){let n=j(`div`,`hooks-group`);n.append(j(`h3`,`hooks-group-title`,t.event));let r=j(`div`,`hooks-list`);for(let e of t.hooks)r.append(ez(e,{grouped:!0}));n.append(r),e.append(n)}return e}function oz(){let e=FR(jL,null),t=LR(`hooks-btn hooks-btn-add`,`+ New hook`,()=>YR(null));t.disabled=!!wR;let n=e.querySelector(`.hooks-section-head`);return n&&n.append(t),QL(WL(yR))&&e.append(rz()),e.append(az()),e}function sz(){let e=j(`details`,`hooks-builtin`),t=j(`summary`,`hooks-builtin-summary`);t.append(j(`span`,`hooks-section-title`,`${kL} (${GL(yR).length})`),j(`span`,`hooks-section-hint`,AL));let n=j(`div`,`hooks-list`);for(let e of GL(yR))n.append(tz(e));return e.append(t,n),e}function cz(){let e=j(`div`,`hooks-content`);return yR?VL(yR)?(e.append(IR(`hooks-warning`,HL(yR))),e):(e.append(nz()),ER&&e.append(ER),e.append(oz(),sz()),e):(e.append(SR?IR(`hooks-warning`,G):IR(`hooks-empty`,_L)),e)}function lz({force:e=!1}={}){if(!bR||!e&&yr(bR)||(bR.replaceChildren(cz()),!PR))return;PR=!1;let t=bR.querySelector(`.hooks-btn-add`);t instanceof HTMLButtonElement&&t.focus()}function uz(e){xR=e}function dz(){if(!xR)return;CR=md(`hooks-report`);let e=xR({type:`request-hooks-report`,requestId:CR});e!==!SR&&(SR=!e,lz())}function fz(e){bR||(bR=j(`div`,`hooks-panel`),e.append(bR),lz({force:!0}))}function pz(){lz({force:!0})}function mz(e){JL(e,CR)&&(yR=e,SR=!1,lz())}function hz(){dz()}function gz(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 _z=e=>e.ui.path;function vz({onSelectSession:e}){let t=j(`div`,`phone-board`),n=j(`header`,`phone-topbar`),r=null,i=j(`button`,`btn-dialog`,`Next`);i.type=`button`,i.addEventListener(`click`,()=>{let t=wg(Pg(b()),r);t&&(r=t,e?.(t))});let a=$N(i),o=j(`div`,`phone-board-list`),s=j(`div`,`phone-empty`),c=j(`p`,`phone-empty-title`,`No sessions`),l=j(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);s.append(c,l),t.append(n,a,o,s);let u=new Map,d=new Map,f=new WeakMap,p=new WeakMap,m=new WeakMap,h=0;hr(n);function g(t){let{row:n,refs:r}=bv(`button`);n.type=`button`,n.dataset.id=t,n.addEventListener(`click`,()=>e?.(t));let{item:i}=xv(n,()=>Zv(t));return i.setAttribute(`role`,`listitem`),f.set(n,{refs:r,item:i}),n}function _(){let e=j(`section`,`phone-board-group`),t=XN({onAdd:Xv,onForget:e=>{Lv(e),x()}}),n=j(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),p.set(e,{...t,rows:n}),e}function v(e,t){let n=f.get(e);if(!n)return;let{ui:r,state:i,name:a}=t;Ev(e,n.refs,{ui:r,state:i,name:a,mergeStatus:r.card?.dataset.merge||``})}function y(e,t){let n=p.get(e);n&&(ZN(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function b(){return Sg(qv())}function x(){let e=b(),t=JN(e,_z,Iv(e,_z)),n=Fg(e);h=Ig(n),eP(a,n);let r=new Set(t.order),i=t.order.join(`,`),x=m.get(o)===i&&o.childElementCount===t.groups.length;for(let e of t.groups){let t=d.get(e.key);t||(t=_(),d.set(e.key,t)),y(t,e),x||o.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=p.get(t);if(!r)continue;let i=m.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=u.get(t.id);e||(e=g(t.id),u.set(t.id,e)),v(e,t);let n=f.get(e);n&&(i||r.rows.appendChild(n.item))}m.set(r.rows,n)}m.set(o,i);for(let[e,t]of[...d])r.has(e)||(t.remove(),d.delete(e));let S=new Set(YN(t));for(let[e,t]of[...u]){if(S.has(e))continue;let n=f.get(t);n&&n.item.remove(),u.delete(e)}let ee=t.groups.length>0,te=P.size===0;o.hidden=!ee,s.hidden=ee,mm(s,te),c.hidden=te,l.hidden=te}function S(e,t){let n=e.card?.dataset.id,r=n?u.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:xf(f.get(r)?.refs.glyph))}return kf(()=>{for(let[e,t]of u){let n=P.get(e),r=f.get(t);n&&r&&(r.refs.elapsed.textContent=Df(n))}}),{el:t,topBarEl:n,refresh:x,renderActivity:S,getAttentionCount:()=>h}}var yz=`clipboard`,bz=`upload`,xz=24,Sz=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:yz,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:bz,title:`Upload a photo or file to this session`})]);function Cz(e){let t=Sz.find(t=>t.id===e);return t?t.bytes:null}function wz(e){return!!e&&e.action===yz}function Tz(e){return!!e&&e.action===`upload`}function Ez(e,t,n=xz){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 Dz(e,t,n=xz){let r=Ez(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 Oz={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function kz(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):Oz[e]??null}function Az({send:e,getSessionId:t,reportProblem:n}){let r=j(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,a=null,o=j(`button`,`phone-key phone-key-ctrl`,`Ctrl`);o.type=`button`,o.title=`Hold Ctrl for the next key you type`,o.setAttribute(`aria-pressed`,`false`),o.addEventListener(`pointerdown`,e=>e.preventDefault()),o.addEventListener(`click`,()=>c(!s())),r.appendChild(o);function s(){return o.getAttribute(`aria-pressed`)===`true`}function c(e){o.setAttribute(`aria-pressed`,String(e))}function l(){return s()?(c(!1),!0):!1}for(let t of Sz){t.id===`left`&&r.appendChild(jz(e));let n=j(`button`,t.isArrow?`phone-key phone-key-arrow`:`phone-key`,t.label);n.type=`button`,n.dataset.key=t.id,n.title=t.title,t.isArrow&&n.setAttribute(`aria-label`,t.title),n.addEventListener(`pointerdown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>u(t,n)),r.appendChild(n)}function u(t,r){Tz(t)?d(r):wz(t)?Nz(e,n):e(Cz(t.id))}function d(e){a=e,i||(i=j(`input`,`phone-file-picker`),i.type=`file`,i.hidden=!0,i.addEventListener(`change`,f),r.appendChild(i)),i.click()}function f(){let e=i;if(!e)return;let r=e.files?e.files[0]:null;if(e.value=``,!r)return;let o=t?.();o?p(o,r,a):n(`No session is open to upload to.`)}async function p(e,t,n){n&&(n.disabled=!0),await lS(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:l}}function jz(e){let t=j(`button`,`phone-key phone-arrow-pad`,`Arrows`);t.type=`button`,t.title=`Swipe to send arrow keys`;let n=null,r=null;t.addEventListener(`pointerdown`,e=>{e.preventDefault(),r===null&&(t.setPointerCapture(e.pointerId),r=e.pointerId,n={x:e.clientX,y:e.clientY})}),t.addEventListener(`pointermove`,t=>{if(t.pointerId!==r||!n)return;let i=Dz(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(Cz(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 Mz=`Paste needs clipboard permission.`;function Nz(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(Mz);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(Mz)):t(`Paste is unavailable in this browser.`)}var Pz=`‹`;function Fz({onBack:e}){let t=j(`div`,`phone-terminal`),n=j(`header`,`phone-topbar phone-terminal-bar`),r=j(`button`,`phone-back`,Pz);r.type=`button`,r.setAttribute(`aria-label`,`Back to board`),r.addEventListener(`click`,()=>e?.());let i=j(`div`,`phone-terminal-identity`),a=j(`span`,`phone-terminal-name`);a.title=`Double-tap to rename`,a.addEventListener(`dblclick`,()=>ee());let o=j(`span`,`session-task-title phone-terminal-title`);z_(o,()=>te());let s=j(`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=M(s,`.phone-terminal-glyph`,`span`),l=M(s,`.phone-terminal-label`,`span`),u=M(s,`.phone-terminal-elapsed`,`span`);l.before(a),i.append(o,s);let d=j(`div`,`phone-terminal-actions`);n.append(r,i,d);let f=j(`div`,`phone-card-slot`),p=j(`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=Ed(`phone-key-status m-0 px-3 py-1`),{element:h,takeHeldControl:g}=Az({send:b,getSessionId:()=>_,reportProblem:e=>m.show(`error`,e)});t.append(n,f,p,m.element,h);let _=null,v=null,y=null;function b(e){let t=_?P.get(_):null;t&&(MC(t,e)?m.clear():m.show(`error`,G))}function x(){let e=_?P.get(_):null;e?.term&&e.term.focus()}f.addEventListener(`click`,x);function S(e){let t=kz(e);return!t||!g()?!1:(b(t),!0)}f.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||S(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),f.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&S(e.data.slice(-1))&&(e.stopPropagation(),(_?P.get(_):null)?._resetSoftKeyboardBuffer?.())},!0);function ee(){let e=_?P.get(_):null;e&&_&&G_(e,_,{returnsFocusToTerminal:!1})}function te(){let e=_?P.get(_):null;e&&_&&H_(e,_)}function ne(){let e=_?P.get(_):null,t=!!e;if(p.hidden=t,f.hidden=!t,h.hidden=!t,i.hidden=!t,!t){n.removeAttribute(`data-state`),n.removeAttribute(`data-monitoring`),n.removeAttribute(`data-prompt`);return}let r=e.currentState||A.DORMANT;Sv(n,{glyph:c,label:l},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let s=e.card?.dataset.session||_;W_(a)||(a.textContent=s),o.dataset.sessionName=s??``,V_(o,e.taskTitle),u.textContent=Df(e)}function re(){y&&=(delete y.renameTargetEl,delete y.titleTargetEl,null),a.replaceChildren(),v&&=(Sr(v),v.parentElement===d&&v.remove(),null)}function C(e){let t=P.get(e);t&&(_===e&&Mr()===e&&t.card.parentElement===f||(re(),_=e,Nr(t,e,f,{className:`phone-centered`}),v=M(t.card,`.session-actions`,`div`),xr(v,d),t.renameTargetEl=a,t.titleTargetEl=o,y=t),ne())}function ie(){re(),Mr()===_&&Pr(),_=null,ne()}function ae(){if(!_){ne();return}let e=P.get(_);e?e.card.parentElement===f?ne():(C(_),t.hidden||VC(e,_,!0)):ie()}function oe(){let e=_;e&&VC(P.get(e),e,!1)}function se(){ae();let e=_;if(!e)return;let t=P.get(e);t&&(VC(t,e,!0),UN(e))}return kf(()=>{let e=_?P.get(_):null;e&&(u.textContent=Df(e))}),ne(),{el:t,show:C,clear:ie,refresh:ae,reveal:se,unview:oe,getSessionId:()=>_}}var Iz=`board`,Lz=Object.freeze([{id:Iz,label:`Board`,glyph:`▤`},{id:`terminal`,label:`Terminal`,glyph:`▸`},{id:`review`,label:`Review`,glyph:`◫`}]),Rz=[],zz=new Map,Bz=null,Vz=new Map,Hz=new Map,Uz=new Map,Wz=null,Gz=null,Kz=null,qz=null,Jz=null,Yz=new Map,Xz=new Set,Zz={},Qz=!1,$z=120,eB=0,tB=0,nB=0,rB=null;function iB(){eB=0,tB=0}function aB(){let e=window.visualViewport;Bz&&(!Qz||!e?Bz.removeAttribute(`data-keyboard`):(Bz.style.setProperty(`--phone-vh`,`${e.height}px`),Bz.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==tB&&(tB=e.width,eB=0),eB=Math.max(eB,e.height),eB-e.height>$z?Bz.dataset.keyboard=`open`:Bz.removeAttribute(`data-keyboard`)))}function oB(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=j(`button`,n);i.type=`button`;let a=j(`span`,`phone-nav-glyph`,t);a.setAttribute(`aria-hidden`,`true`),i.append(a,j(`span`,`phone-nav-label`,e));let o=j(`span`,r);return o.setAttribute(`aria-hidden`,`true`),o.hidden=!0,i.appendChild(o),i}function sB(e){return e?.querySelector(`.phone-nav-dot`)||null}function cB(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function lB(){let e=[];for(let t of Rz){if(Xz.has(t.id))continue;let n=Uz.get(t.id)||!1;e.push(n),cB(sB(Yz.get(t.id)),n)}cB(sB(qz),Ug(e))}function uB(){let e=j(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of Rz){let n=oB(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=Xz.has(t.id),n.addEventListener(`click`,()=>{dB(!1),OB(t.id)}),Yz.set(t.id,n),e.appendChild(n)}return e}function dB(e){Jz&&qz&&(Jz.hidden=!e,qz.setAttribute(`aria-expanded`,String(e)))}function fB(){return!!Jz&&!Jz.hidden}function pB(){let e=j(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of Lz){let n=oB(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>OB(t.id)),Vz.set(t.id,n),e.appendChild(n)}return qz=oB(`More`,`⋯`),qz.setAttribute(`aria-expanded`,`false`),qz.addEventListener(`click`,()=>dB(!fB())),e.appendChild(qz),Jz=uB(),e.appendChild(Jz),e}function mB(e,t,n){let r=j(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),Hz.set(e,r),r}function hB(){if(Bz)return;Wz=vz({onSelectSession:gB}),vf((e,t)=>{Qz&&Wz?.renderActivity(e,t)}),Gz=Fz({onBack:()=>OB(Iz)}),Kz=j(`div`,`phone-review`);let e=j(`div`,`phone-screens`),t={[Iz]:Wz.el,terminal:Gz.el,review:Kz};for(let n of Lz)e.appendChild(mB(n.id,n.label,t[n.id]));for(let t of Rz){let n=j(`div`,`phone-panel phone-${t.id}`);zz.set(t.id,n),e.appendChild(mB(t.id,t.label,n))}Bz=j(`div`,`phone-shell`),Bz.id=`phone-shell`,Bz.append(e,pB()),document.body.appendChild(Bz),lB(),window.visualViewport?.addEventListener(`resize`,aB),window.visualViewport?.addEventListener(`scroll`,aB),window.addEventListener(`popstate`,wB),document.addEventListener(`click`,e=>{fB()&&Jz&&qz&&e.target instanceof Node&&(Jz.contains(e.target)||qz.contains(e.target)||dB(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&fB()&&dB(!1)})}function gB(e){if(P.has(e)){if(!Wz||!Gz)throw Error(`Phone shell is not built`);Wv(e,`dormant-fallback`),Gv(e),Gz.show(e),OB(`terminal`)}}function _B(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:e}}function vB(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function yB(e){return vB(e)?e.glimmervoidNested===!0?2:1:0}function bB(e){return e===Iz?0:Zz.canGoBack?.(e)?2:1}function xB(e,t){return vB(history.state)===e&&yB(history.state)===(t?2:1)}function SB(){if(!Qz||rB!==null)return;let e=Ar.snapshot().phoneScreen||Iz,t=bB(e);if(nB>t){rB=location.href,history.go(t-nB),nB=t;return}let n=nB===2;nB>0&&!xB(e,n)&&history.replaceState(_B(e,n),``),nB===0&&t>0&&(history.pushState(_B(e,!1),``),nB=1),nB===1&&t===2&&(history.pushState(_B(e,!0),``),nB=2)}function CB(){let e=vB(history.state);return e&&DB(e)?(nB=yB(history.state),e):(e&&history.replaceState(null,``),nB=0,Iz)}function wB(e){if(!Qz)return;if(rB!==null){history.replaceState(history.state,``,rB),rB=null,SB();return}let t=vB(e.state),n=t&&DB(t)?t:Iz;nB=yB(e.state);let r=Ar.snapshot().phoneScreen;nB<2&&n===r&&Zz.canGoBack?.(r)&&Zz.onBack?.(r),EB(n),SB()}function TB(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function EB(e){if(!qz||!Gz)throw Error(`Phone shell is not built`);Ar.dispatch(`setPhoneScreen`,e),dB(!1);for(let[t,n]of Hz)n.hidden=t!==e;Zz.onScreenShown?.(e),TB(Vz,e);let t=Yz.has(e);t&&qz.setAttribute(`aria-current`,`page`),t||qz.removeAttribute(`aria-current`),TB(Yz,e),e===`terminal`?Gz.reveal():Gz.unview()}function DB(e){return Hz.has(e)&&!Xz.has(e)}function OB(e){Bz&&DB(e)&&(EB(e),SB())}function kB(e){Zz=e||{},Rz=Zz.panels||[]}function AB({sessionId:e,linkedScreenId:t}={}){if(Qz)return;if(hB(),!Bz||!Wz||!Gz)throw Error(`Phone shell is not built`);Qz=!0,Bz.hidden=!1;for(let e of Zz.headerControls||[])xr(e,Wz.topBarEl);RE(Kz);for(let e of Rz)xr(e.el,zz.get(e.id)),e.el.hidden=!1;aB(),e&&Gz.show(e);let n=CB();FB(),t&&DB(t)?OB(t):e&&n===Iz?OB(`terminal`):(EB(n),SB())}function jB(){if(Qz){if(!Bz||!Gz)throw Error(`Phone shell is not built`);Qz=!1,Gz.clear(),RE(null);for(let e of Rz)Sr(e.el);for(let e of Zz.headerControls||[])Sr(e);dB(!1),Bz.hidden=!0,Bz.removeAttribute(`data-keyboard`),iB(),nB>0&&history.go(-nB),nB=0,rB=null}}function MB(e){return!Qz||!Wz||!Gz||!P.has(e)?!1:(gB(e),fN(e))}function NB(){return Qz}function PB(){return Qz&&Gz?Gz.getSessionId():null}function FB(){if(!Qz)return;if(!Wz||!Gz)throw Error(`Phone shell is not built`);BB(),Wz.refresh(),Gz.refresh(),Ar.snapshot().phoneScreen===`terminal`&&!Gz.getSessionId()&&OB(Iz);let e=sB(Vz.get(Iz));e&&(e.hidden=Wz.getAttentionCount()===0)}function IB(e){return Qz?(gB(e),!0):!1}function LB(e){return!Qz||!DB(e)?!1:(OB(e),!0)}function RB(e,t){t&&Xz.delete(e),t||Xz.add(e);let n=Yz.get(e);n&&(n.hidden=!t);let r=Hz.get(e);r&&!t&&(r.hidden=!0),lB(),!t&&Qz&&Ar.snapshot().phoneScreen===e&&OB(Iz)}function zB(e,t){Uz.set(e,typeof t==`string`&&t?t:t===!0),lB()}function BB(){if(!Gz)throw Error(`Phone shell is not built`);if(Gz.getSessionId())return;let e=Kv();e&&(Gz.show(e),Gv(e,{rememberFocus:!1}))}function VB(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function HB(e,t){if(!e?.error)return null;let n=`Could not reach GitHub: ${e.error.trim().replace(/[.!]+$/,``)}.`;if(e.isRefreshing)return`${n} Refreshing.`;if(typeof e.nextAttemptAt!=`number`)return n;let r=Math.max(0,Math.ceil((e.nextAttemptAt-t)/1e3));return r===0?`${n} Retrying now.`:e.retry?`${n} Retrying in ${r}s (${e.retry.attempt} of ${e.retry.limit}).`:`${n} Next try in ${r>=60?`${Math.ceil(r/60)} min`:`${r}s`}.`}function UB(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}var WB={minPx:220,maxPx:720},GB=16,KB=new Set,qB=0;function JB(e){let t=sc();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 YB(){for(let e of KB)e.isConnected?JB(e):KB.delete(e)}function XB(e,t){let n=j(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function ZB(e){let t=j(`div`,`pr-queue-foot`);return e&&t.append(e),t}function QB({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=j(`div`,`pr-columns`),i=j(`div`,`pr-queue-pane`),a=j(`nav`,`pr-queue`);a.id=`pr-queue-${++qB}`,a.setAttribute(`aria-label`,e);let o=j(`button`,`pr-queue-toggle`);o.type=`button`,o.setAttribute(`aria-label`,`Review queue`),o.setAttribute(`aria-controls`,a.id),o.title=`Collapse or expand the review queue`;let s=l_(16,16);s.append(c_(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),s.append(c_(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let c=c_(`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`,()=>{cc(!sc()),YB()});let l=ZB(null);i.append(XB(t,o),a,l);let u=j(`div`,`pr-queue-resizer`);u.setAttribute(`role`,`separator`),u.setAttribute(`aria-orientation`,`vertical`),u.setAttribute(`aria-label`,n),u.tabIndex=0;let d=j(`main`,`pr-detail-host`);return r.append(i,u,d),JB(r),KB.add(r),n_({resizer:u,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:WB,keyStepPx:GB,getStoredWidth:ac,setStoredWidth:oc}),{columns:r,queue:a,foot:l,detail:d}}var $B=1.2,eV=1.55,tV=.12,nV=523.25,rV=2,iV=8,Y=(e,t,n)=>({semitone:e,startBeat:t,beats:n}),aV={melody:[Y(7,4,.5),Y(11,4.5,.5),Y(12,5,3)],bass:[Y(-5,4,1),Y(-12,5,3)]},oV=[{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,...aV.melody],bass:[...e.bass,...aV.bass]}));function sV(e,t){return nV*2**((e+t)/12)}function cV(e,t){let n=(e,n,r)=>e.map(e=>({frequency:sV(e.semitone,t),startSeconds:eV+e.startBeat*tV,durationSeconds:e.beats*tV,waveform:n,gain:r}));return[...n(e.melody,`square`,.2),...n(e.melody,`triangle`,.5),...n(e.bass,`triangle`,.6)]}var lV=[{frequency:220,endFrequency:880,startSeconds:0,durationSeconds:.32,waveform:`triangle`,gain:.25},{frequency:160,endFrequency:45,startSeconds:$B,durationSeconds:.28,waveform:`sine`,gain:1},{frequency:1400,endFrequency:380,startSeconds:$B,durationSeconds:.06,waveform:`square`,gain:.12}];function uV(e){let t=oV[e%oV.length],n=Math.min(e*rV,iV);return{peakGain:.1,tones:[...lV,...cV(t,n)]}}function dV(e){return Math.round(Math.sqrt(2*e/780)*1e3)}function fV(e,t,n=Math.random){return Math.round(e+n()*(t-e))}function pV(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 mV=.6,hV=.25,gV=1.6;function _V(e){return Math.min(mV+e*hV,gV)}var vV=[`var(--accent)`,`var(--state-running)`,`var(--state-idle)`,`var(--state-waiting)`,`var(--state-failed)`];function yV(e,t=Math.random){let n=fV(320,520,t),r=fV(1800,2800,t);return[[`--confetti-start-x`,`${fV(4,96,t)}%`],[`--confetti-x`,`${fV(-140,140,t)}px`],[`--confetti-rise`,`${-fV(20,55,t)}px`],[`--confetti-fall`,`${fV(45,70,t)}vh`],[`--confetti-rise-ms`,`${n}ms`],[`--confetti-fall-ms`,`${r}ms`],[`--confetti-flight-ms`,`${n+r}ms`],[`--confetti-tilt`,`${fV(0,180,t)}deg`],[`--confetti-spin`,`${fV(-360,360,t)}deg`],[`--confetti-flutter-ms`,`${fV(160,340,t)}ms`],[`--confetti-delay`,`${fV(0,160,t)}ms`],[`--confetti-color`,vV[e%vV.length]]]}var bV=`<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>`,xV=`<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 SV(){let e=cr(`div`,`merge-bullseye-target`,bV);return e.append(j(`span`,`merge-bullseye-ripple`)),e}function CV(){let e=j(`div`,`merge-bullseye-dart-drift`),t=j(`div`,`merge-bullseye-dart-arc`),n=j(`div`,`merge-bullseye-dart-aim`);return n.append(cr(`div`,`merge-bullseye-dart`,xV)),t.append(n),e.append(t),e}function wV(){let e=j(`div`,`merge-bullseye-range`),t=j(`div`,`merge-bullseye-track`);return t.append(CV()),e.append(SV(),t),e}var TV={title:`BULLSEYE!`,buildScene:wV},EV=6,DV=30,OV=-14,kV=16;function AV(e=Math.random){return[[`--crosshair-start-left`,`${fV(EV,DV,e)}%`],[`--crosshair-start-offset-y`,`${fV(OV,kV,e)}px`]]}var jV=`<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>`,MV=`<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>`,NV=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 3L8 8M21 3L16 8M3 21L8 16M21 21L16 16"/></svg>`;function PV(){let e=j(`div`,`merge-headshot-sweep`);lr(e,AV());let t=j(`div`,`merge-headshot-aim`);t.append(cr(`div`,`merge-headshot-crosshair`,MV));let n=j(`div`,`merge-headshot-bob`);return n.append(t,cr(`div`,`merge-headshot-hitmarker`,NV)),e.append(n),e}function FV(){let e=j(`div`,`merge-headshot-range`),t=j(`div`,`merge-headshot-track`);return t.append(PV()),e.append(cr(`div`,`merge-headshot-target`,jV),t),e}var IV={title:`HEADSHOT!`,buildScene:FV},LV=[`10`,`J`,`Q`,`K`,`A`],RV=19,zV=5,BV=9,VV=780,HV=70,UV=70,WV=35;function GV(e){let t=LV.length-1,n=e-t/2;return{offsetPx:n*RV,titleSpreadFraction:n/t,tiltDegrees:n*zV,bottomPx:BV-n**2,dealLeadMs:VV-e*HV,flipLeadMs:160+(t-e)*UV,waveDelayMs:e*WV}}function KV(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 qV(){return[[`--card-flip-ms`,`160ms`]]}var JV=`<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 YV(e,t){let n=j(`div`,`merge-flush-deal`);lr(n,KV(GV(t)));let r=j(`div`,`merge-flush-hop`),i=j(`div`,`merge-flush-card`),a=j(`div`,`merge-flush-face`);return a.append(j(`span`,`merge-flush-rank`,e)),a.insertAdjacentHTML(`beforeend`,JV),i.append(j(`div`,`merge-flush-back`),a),r.append(i),n.append(r),n}function XV(){let e=j(`div`,`merge-flush-table`);return lr(e,qV()),e.append(...LV.map(YV)),e}var ZV={title:`ROYAL FLUSH!`,buildScene:XV},QV=[1,2,3,4],$V=14,eH=3,tH=3,nH=10,rH=20,iH=2,aH=28,oH=18,sH=.01,cH=1.5,lH=2200,uH=1,dH=120,fH=.35,pH=4,mH=65,hH=145;function gH(e){return Math.round(e/(Math.PI*oH)*360)}function _H(e){return rH-e*iH}function vH(e){return e.rowIndex*$V+e.depthIndex*eH}function yH(e,t,n){return Array.from({length:n},(r,i)=>e+(t-e)*i/(n-1))}function bH(){return QV.flatMap((e,t)=>Array.from({length:e},(n,r)=>({rowIndex:t,depthIndex:e-1-r})))}function xH(e,t){let n=pV(yH(15,105,e),t),r=pV(yH(mH,hH,e),t);return n.map((e,n)=>({angleDegrees:e+fV(-4,pH,t),depthScalePercent:Math.round(r[n])}))}function SH(e,t,n){let r=fV(240,380,n),i=t.angleDegrees*Math.PI/180,a=r*Math.cos(i),o=(r*Math.sin(i))**2/1560,s=fV(15,45,n),c=dV(o),l=dV(o+s),u=c+l,d=fV(540,1080,n),f=a>=0?1:-1,p=vH(e);return{depthIndex:e.depthIndex,launchAngleDegrees:t.angleDegrees,distanceFromHeadPinPx:p,layer:_H(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/fH)}}function CH(e=Math.random){let t=bH(),n=xH(t.length,e);return t.map((t,r)=>SH(t,n[r],e))}function wH(e){return[[`--pin-left`,`${e.distanceFromHeadPinPx}px`],[`--pin-raise`,`${e.depthIndex*tH}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 TH(){return _H(cH)}function EH(){return Math.max(...bH().map(vH))+nH}function DH(){let e=EH(),t=aH+e+oH-uH;return[[`--ball-follow-px`,`${dH}px`],[`--ball-follow-ms`,`${Math.round(dH/fH)}ms`],[`--ball-follow-spin`,`${gH(dH)}deg`],[`--ball-size`,`${oH}px`],[`--ball-approach-spin`,`${lH}deg`],[`--ball-impact-inset`,`${t}px`],[`--ball-layer`,String(TH())],[`--rack-right`,`${aH}px`],[`--rack-width`,`${e}px`],[`--pin-width`,`${nH}px`]]}function OH(e=Math.random){return e()>=sH?null:Wo[Math.floor(e()*Wo.length)].sprite}var kH=`<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 AH(e){let t=j(`span`,`merge-strike-pin`);return t.append(cr(`span`,`merge-strike-pin-arc`,kH)),lr(t,wH(e)),t}function jH(){let e=OH();if(!e)return j(`span`,`merge-strike-ball`);let t=j(`span`,`merge-strike-ball is-animal`);return t.append(j(`span`,`nyan-sprite ${e}`)),t}function MH(){let e=j(`div`,`merge-strike-lane`);lr(e,DH());let t=j(`div`,`merge-strike-rack`);t.append(...CH().map(AH));let n=j(`div`,`merge-strike-track`);return n.append(jH()),e.append(t,n),e}var NH={title:`STRIKE!`,buildScene:MH},PH=20,FH=92,IH=23,LH=7,RH=-40;function zH(){let e=dV(72),t=dV(69),n=780*t/1e3;return{launchHeightPx:PH,peakHeightPx:FH,heightThroughRimPx:IH,heightLeavingNetPx:LH,heightOutOfCardPx:RH,riseMs:e,fallToRimMs:t,speedThroughRimPxPerSecond:n,netCatchMs:Math.round(32/n*1e3),dropMs:dV(47)}}function BH(e=zH()){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 VH=`<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>`,HH=`<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 UH(){let e=j(`div`,`merge-swish-ball-drift`),t=j(`div`,`merge-swish-ball-arc`);return t.append(j(`span`,`merge-swish-ball`)),e.append(t),e}function WH(){let e=j(`div`,`merge-swish-court`);lr(e,BH());let t=j(`div`,`merge-swish-track`);return t.append(UH()),e.append(cr(`div`,`merge-swish-hoop-back`,VH),t,cr(`div`,`merge-swish-hoop-front`,HH)),e}var GH=[NH,{title:`SWISH!`,buildScene:WH},TV,IV,ZV],KH=48,qH=5600,JH=20,YH=null,XH=[],ZH=null,QH=!1,$H=0;function eU(e){let t=j(`span`,`merge-confetti-piece`),n=j(`span`,`merge-confetti-arc`);return n.append(j(`span`,`merge-confetti-paper`)),t.append(n),lr(t,yV(e)),t}function tU(e){let t=j(`p`,`merge-celebration-title`);return t.setAttribute(`aria-hidden`,`true`),Array.from(e).forEach((e,n)=>{let r=j(`span`,`merge-celebration-letter`,e);r.style.setProperty(`--letter-delay`,`${n*45}ms`),t.append(r)}),t}function nU(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 rU(e){let t=j(`div`,`merge-celebration-scene`);return t.setAttribute(`aria-hidden`,`true`),t.append(e.buildScene()),t}function iU(){return GH[Math.floor(Math.random()*GH.length)]}function aU(e){if(Ls())try{xb(uV(e))}catch{}}function oU(e){let t=j(`ul`,`merge-celebration-details`);for(let n of e)t.append(j(`li`,`merge-celebration-detail`,n));return t}function sU(e,t,n){YH?.remove(),aU(n);let r=j(`div`,`merge-celebration`);r.setAttribute(`role`,`status`);let i=j(`div`,`merge-celebration-card`),a=j(`div`,`merge-celebration-stage`),o=tU(t.title),s=rU(t);a.append(o,j(`p`,`merge-celebration-message`,e.message),oU(e.detailLines),s);let c=j(`div`,`merge-confetti`);c.style.setProperty(`--confetti-scale`,String(_V(n)));for(let e=0;e<KH;e+=1)c.append(eU(e));i.append(c,a),r.append(i),document.body.append(r),nU(a,o,s),YH=r,window.setTimeout(()=>{r.remove(),YH===r&&(YH=null)},qH)}function cU(e){return QH?`playing`:e?`queued`:`empty`}function lU(){if(!ZH)return;let e=XH.length>0;ZH.tray.dataset.state=cU(e),ZH.count.textContent=e?String(XH.length):``,ZH.button.disabled=QH||!e}function uU(){let e=XH.shift();QH=e!==void 0,lU(),e&&(sU(e.text,e.scene,$H),$H+=1,window.setTimeout(uU,qH))}function dU(e,t,n){ZH={tray:e,button:t,count:n},t.addEventListener(`click`,()=>{$H=0,uU()}),lU()}function fU(e,t=iU()){XH.push({text:e,scene:t}),XH.length>JH&&XH.shift(),lU()}var pU={MERGE:`a merge commit`,SQUASH:`squash and merge`,REBASE:`rebase and merge`},mU=new Set([`FAILURE`,`ERROR`]);function hU(e){return pU[e]}function gU(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&&mU.has(e.checks.state)?`Checks are failing`:e.stage===`ready`?null:`Not ready to merge yet`:`Closed`}function _U(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 vU(e){let t=O.parse({...e,key:`${e.repo}#${e.number}`,stage:`unknown`});return{...t,stage:_U(t)}}function yU(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i)}}function bU(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=xU(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 xU(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`),yU(e,!!e.keepMergeable,t,n,o,r)}function SU(e){return e?.isKeepMergeableEnabled!==!1}function CU(e){return e?.isMergeQueueEnabled!==!1}function wU(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 TU(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return yU(e,i,t,n,wU(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}var EU=[`Needs you`,`Waiting`,`Ready to merge`,`Drafts`,`Merged today`],DU=[`Ready to merge`,`Needs you`,`Waiting`,`Drafts`,`Merged today`],OU={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`},kU={merged:`Merged`,draft:`Draft`,conflicts:`Merge conflicts`,behind:`Behind base`,"checks-failing":`Checks failing`,"changes-requested":`Changes requested`,"unresolved-threads":`Unresolved threads`,"checks-pending":`Checks running`,"needs-approval":`Needs approval`,ready:`Ready to merge`,unknown:`Status unknown`},AU={merged:`muted`,draft:`muted`,conflicts:`danger`,behind:`warn`,"checks-failing":`danger`,"changes-requested":`warn`,"unresolved-threads":`warn`,"checks-pending":`wait`,"needs-approval":`wait`,ready:`ok`,unknown:`muted`},jU={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 MU(e){let t=pt.safeParse(e);return t.success?t.data:null}function NU(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 PU(e){return EU[e.rows.reduce((e,{pr:t})=>Math.min(e,EU.indexOf(OU[t.stage])),EU.length-1)]}function FU(e){let t=new Map(EU.map(e=>[e,{title:e,prs:[],rows:[]}]));for(let n of NU(e)){let e=t.get(PU(n));if(e)for(let t of n.rows)e.rows.push(t),e.prs.push(t.pr)}return DU.flatMap(e=>t.get(e)??[])}function IU(e){return kU[e]}function LU(e){return AU[e]}function RU(e){return jU[e]}function zU(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 BU(e){return`${e} ${e===1?`approval`:`approvals`}`}function VU(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function HU(e){let t=e.reviewRequests.length>0?`Requested: ${VU(e)}`:`Approval required`;return e.approvals>0?`${t}, ${BU(e.approvals)}`:t}function UU(e){let t=e.approvals>0?BU(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 WU(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?UU(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:HU(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${VU(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function GU(e,t){return t?e.lastAuthor!==t:null}function KU(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function qU(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function JU(e,t){let n=GU(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 YU(e,t){return[...e.threads].sort((e,n)=>{let r=Number(GU(n,t)===!0)-Number(GU(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:KU(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:qU(e),lastActivityAt:e.lastActivityAt,waiting:JU(e,t)}))}function XU(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=>GU(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 ZU(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 QU(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 $U={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 eW(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=$U[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 tW(e,t=null){if(e.state===`MERGED`)return[];let n=[zU(e),WU(e),XU(e,t),ZU(e),QU(e)],r=e.autoRebase?[nW(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 nW(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 rW(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 iW(e,t=0){if(!e)return[];let n=HB(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}function aW(e,t){return e.flatMap(e=>{let n=t(e.key);if(!n)return[];let r=e.key.slice(0,e.key.lastIndexOf(`#`));return[{...vU({...n,repo:r}),...e}]})}function oW(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 sW(e,t){let n=e.flatMap(e=>e.prs);return t&&n.some(e=>e.key===t)?t:n[0]?.key??null}function cW(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 lW=3;function uW(e){if(e.length===1)return{message:`Merged ${e[0].key}`,detailLines:[e[0].title]};let t=e.slice(0,lW).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 dW={isVisible:!1,isDisabled:!0,statusText:``,tone:null},fW={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 pW(e,t){if(e.state!==`OPEN`)return dW;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,...fW[n.phase]};let r=gU(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 ${hU(e.mergeMethod)}`,tone:null}}function mW(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${hU(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function hW(e){let t=gt.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 gW=null,_W=null,vW=null,yW=null,bW=null,xW=null,SW=null,CW=null,wW=new Map,TW=new Set,EW=new Map,DW=new Map,OW=!1,kW=null,AW={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>xU(e,t,n,r,Mf(e.keepMergeableAttempt?.at)),isFeatureEnabled:SU,save:async(e,t)=>{let n=await hd(`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.`}},jW={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:TU,isFeatureEnabled:CU,save:async(e,t)=>{let n=await hd(`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.`}},MW=6e4,NW=6e4,PW=`The server did not answer within ${MW/1e3} s. Check GitHub before trying again.`,FW=`${G} Check GitHub before trying again.`;function IW(e,t){let n=j(`div`,`reviews-refresh-control`),r=j(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);r.type=`button`;let i=j(`span`,`reviews-refresh-status`);i.setAttribute(`role`,`status`);let a=j(`p`,`my-pr-error reviews-retry-notice`);n.append(r,i);let o=null,s=!1,c=``,l=null;function u(){a.textContent=HB(o,Date.now()),a.hidden!==!o?.error&&(a.hidden=!o?.error);let e=a.isConnected&&!yr(t)&&!document.hidden&&a.getClientRects().length>0&&VB(o,Date.now());!e&&l!==null&&(window.clearInterval(l),l=null),e&&l===null&&(l=window.setInterval(u,1e3))}function d(e){e!==o&&(c=``),o=e,r.disabled=s||!!e?.isRefreshing||!e?.configured,i.textContent=UB(e,s,c),i.hidden=!i.textContent,u()}r.addEventListener(`click`,async()=>{if(!s){s=!0,c=``,d(o);try{let t=await hd(`github-polling-refresh`,{lane:e},{timeoutMs:NW});t.type===`github-polling-refresh-result`&&(c=t.ok?`Refreshed.`:t.error??`Could not refresh from GitHub.`)}catch(e){c=Od(e,NW)}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 LW(e,t,n,r){wW.set(e,{head:t,phase:n,text:r}),eG()}function RW(e){if(EW.has(e.key))return;let t=md(`my-pr-merge`);if(!K({type:`my-pr-merge`,requestId:t,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){LW(e.key,e.headRefOid,`failed`,G);return}let n=window.setTimeout(()=>{EW.delete(e.key),LW(e.key,e.headRefOid,`failed`,PW)},MW);EW.set(e.key,{requestId:t,head:e.headRefOid,timer:n}),wW.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),eG()}function zW(e){let t=pW(e,wW.get(e.key));if(!t.isVisible)return null;let n=j(`div`,`my-pr-merge`),r=j(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=j(`span`,`pr-action-status`,t.statusText);return i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),t.tone&&(i.dataset.tone=t.tone),r.addEventListener(`click`,()=>{tf({title:`Merge pull request`,message:mW(e),confirmLabel:`Merge`,onConfirm:()=>RW(e)})}),n.append(r,i),n}function BW(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(bW));if(!n.isVisible)return null;let r=j(`div`,`my-pr-merge`),i=j(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=j(`span`,`pr-action-status`,n.statusText);return 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),eG();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,Od(n,q))}finally{t.pendingKeys.delete(e.key),eG()}}}),r.append(i,a),r}function VW(e,{hasGlyph:t}){let n=j(`span`,`my-pr-stage`);return n.dataset.tone=LU(e.stage),t&&n.append(ov(RU(e.stage),LU(e.stage))),n.append(IU(e.stage)),n}function HW(e,t){let n=j(`span`,`my-pr-requested`);n.append(j(`span`,null,`Requested`));let r=j(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=ur({login:t.name,url:t.isTeam?t.avatarUrl:void 0,cssPx:16});e.title=t.name,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,t.name),r.append(e)}return n.append(r,j(`span`,`my-pr-requested-names`,t.slice(11))),n}function UW(){if(!gW||!_W||vW?.isConnected)return;let e=QB({queueLabel:`My pull requests`,scopeTabs:_W,resizerLabel:`Resize pull request list`});vW=e.queue,yW=e.detail,gW.replaceChildren(e.columns),CW&&e.foot.append(CW.control)}function WW(e){if(!yW)return;if(!e){yW.replaceChildren(j(`p`,`pr-empty`,rW(bW)));return}let t=j(`article`,`pr-detail`),n=j(`div`,`pr-detail-heading`),r=j(`div`,`pr-detail-title`);r.append(fr(`pr-link`,e.key,e.url),j(`h2`,null,e.title)),n.append(r,VW(e,{hasGlyph:!0})),t.append(n);for(let n of[AW,jW]){let r=BW(e,n);r&&t.append(r)}let i=tW(e,bW?.viewer??null);if(i.length>0){let n=j(`section`,`pr-readiness-section`);n.append(j(`h3`,`pr-section-heading`,`Merge readiness`));let r=j(`ul`,`pr-readiness`);for(let t of i){let n=j(`li`,`pr-readiness-row`),i=j(`span`,`pr-readiness-value`);t.label===`Review`&&t.text.startsWith(`Requested: `)&&i.append(HW(e,t.text)),i.childNodes.length===0&&(i.textContent=t.text),n.append(ov(t.icon,t.tone),j(`span`,`pr-readiness-label`,t.label),i),r.append(n)}n.append(r);let a=zW(e);a&&n.append(a),t.append(n)}if(e.checks.failing.length>0){let n=j(`section`,`my-pr-failures`);n.append(j(`h3`,`pr-section-heading`,`Failing checks`));let r=j(`ul`,`my-pr-facts`);for(let t of e.checks.failing)r.append(j(`li`,null,t));n.append(r),t.append(n)}let a=eW(e);if(a.length>0){let e=j(`section`,`pr-readiness-section`);e.append(j(`h3`,`pr-section-heading`,`Reviews`));let n=j(`ul`,`pr-readiness`);for(let e of a){let t=j(`li`,`pr-readiness-row`),r=Date.parse(e.submittedAt??``),i=Number.isFinite(r)?`${e.text} ${Mf(r)}`:e.text,a=j(`span`,`my-pr-reviewer`);a.append(dr([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),j(`span`,null,e.reviewer)),t.append(ov(e.icon,e.tone),a,j(`span`,`pr-readiness-value`,i)),n.append(t)}e.append(n),t.append(e)}let o=YU(e,bW?.viewer??null);if(o.length>0){let e=j(`section`,`my-pr-threads-section`);e.append(j(`h3`,`pr-section-heading`,`Unresolved threads`));let n=j(`ul`,`my-pr-threads`);for(let e of o){let t=j(`li`,`my-pr-thread`),r=j(`div`,`my-pr-thread-heading`);if(r.append(fr(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=j(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(ov(e.waiting.icon,e.waiting.tone),e.waiting.text),r.append(t)}let i=j(`p`,`my-pr-thread-excerpt`);i.append(j(`strong`,null,e.author),` ${e.excerpt}`);let a=Date.parse(e.lastActivityAt),o=j(`p`,`my-pr-thread-meta`,Number.isFinite(a)?`${e.replySummary}, ${Mf(a)}`:e.replySummary);t.append(r,i,o),n.append(t)}e.append(n),t.append(e)}let s=j(`p`,`pr-detail-meta`);s.append(j(`span`,null,`Opened ${Mf(Date.parse(e.createdAt))}`),j(`span`,null,`${e.state===`MERGED`?`Merged`:`Updated`} ${Mf(Date.parse(e.state===`MERGED`?e.mergedAt??``:e.updatedAt))}`)),t.append(s),yW.replaceChildren(t)}function GW(){return[...DW].flatMap(([e,t])=>{let n=P.get(e);return!n||t.length===0?[]:[{id:e,title:Cr(n)||e,links:t}]})}function KW(e){let t=e.dataset.sessionId??``,n=P.get(t),r=N(e,`.session-row-name`);n&&(r.textContent=Cr(n)||t);let i=Sv(e,{glyph:N(e,`.session-row-glyph`),label:N(e,`.session-row-label`)},n?.currentState||A.DORMANT,n?.awaitingBackgroundTasks,n?.pendingPromptKind),a=`Focus session ${r.textContent}, ${i}`;e.title=a,e.setAttribute(`aria-label`,a)}function qW(e){let{row:t,refs:n}=bv(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,KW(t),t.addEventListener(`click`,()=>kW?.(e.id)),t}function JW(e){if(!e||e.length===0)return null;let t=j(`div`,`my-pr-session-focus`);return t.append(...e.map(qW)),t}function YW(){for(let e of vW?.querySelectorAll(`.my-pr-session-pill`)??[])KW(e)}function XW(){OW||(OW=!0,queueMicrotask(()=>{OW=!1,eG()}))}function ZW(e){DW=e,XW()}function QW(e){let t=aW(bW?.prs??[],Un).find(t=>Ln(t)===e.toLowerCase());return t?$W(t.key):null}function $W(e){return vW?[...vW.querySelectorAll(`button[data-pr-key]`)].find(t=>t.dataset.prKey===e)??null:null}function eG(){let e=aW(bW?.prs??[],Un),t=cW(xW,e);if(xW=e,rG(t),UW(),!vW)return;let n=FU(e);SW=sW(n,SW);let r=document.activeElement instanceof HTMLElement&&vW.contains(document.activeElement)?document.activeElement.dataset.prKey:null,i=oW(GW()),a=n.filter(e=>e.rows.length>0).map(e=>{let t=j(`section`,`pr-queue-section`);t.append(j(`h3`,`pr-section-heading`,`${e.title} ${e.rows.length}`));for(let{pr:n,parentKey:r,depth:a}of e.rows){let e=j(`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===SW)),e.title=`${n.key}: ${IU(n.stage)}`;let o=j(`span`,`pr-queue-glyph`);o.append(ov(RU(n.stage),LU(n.stage)));let s=j(`span`,`pr-queue-top`);s.append(j(`strong`,`pr-queue-ref`,n.key),j(`span`,`pr-queue-title`,n.title));let c=j(`span`,`pr-queue-bottom`);r&&c.append(j(`span`,`my-pr-stage`,`Stacked on ${r}`));let l=n.state===`MERGED`?n.mergedAt:null,u=l?`merged ${Mf(Date.parse(l))}`:`opened ${Mf(Date.parse(n.createdAt))}`;c.append(VW(n,{hasGlyph:!1}),j(`span`,`pr-queue-elapsed`,u));let d=bU(n,AW.isFeatureEnabled(bW),Mf(n.keepMergeableAttempt?.at));if(d){let e=j(`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`,()=>{SW=n.key;for(let e of vW?.querySelectorAll(`button[data-pr-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.prKey===SW));WW(n),document.documentElement.dataset.layout===`phone`&&yW?.scrollIntoView({block:`start`,behavior:`smooth`})});let f=j(`div`,`my-pr-row-group`);f.append(e),t.append(f);let p=JW(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&&vW.replaceChildren(j(`p`,`pr-empty`,rW(bW))),a.length>0){let e=iW(bW,Date.now()).filter(e=>e.tone!==`error`).map(e=>j(`p`,e.tone===`error`?`my-pr-error`:`my-pr-note`,e.text));vW.replaceChildren(...e,...a)}CW&&(vW.prepend(CW.notice),CW.update(bW)),r&&$W(r)?.focus({preventScroll:!0}),WW(e.find(e=>e.key===SW))}function tG(e,t,n){return kW=n?.openTerminal??null,gW||(_W=t,gW=j(`div`,`pr-content`),e.append(gW),CW=IW(`my-prs`,gW),eG(),gW)}function nG(e){let t=MU(e);t&&(bW=t,eG())}function rG(e){let t=e.filter(e=>!TW.has(e.key));if(t.length!==0){for(let e of t)TW.add(e.key);fU(uW(t))}}function iG(e){if(!e){for(let[e,t]of EW)window.clearTimeout(t.timer),wW.set(e,{head:t.head,phase:`failed`,text:FW});EW.size!==0&&(EW.clear(),eG())}}function aG(e){let t=hW(e);if(!t)return;let n=EW.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),EW.delete(t.key),!t.ok){LW(t.key,n.head,`failed`,t.error||`The merge failed.`);return}if(LW(t.key,n.head,t.kind??`unconfirmed`,``),t.kind!==`merged`)return;let r=aW(bW?.prs??[],Un).find(e=>e.key===t.key);r&&rG([r])}Wn(XW);var oG=de.options.join(`|`),sG=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${oG})\*\*`;function cG(e){return[...e.matchAll(new RegExp(sG,`g`))].flatMap(e=>{let t=de.safeParse(e[2]);return t.success?[t.data]:[]})}function lG(e){let t=new RegExp(String.raw`^${sG}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=de.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function uG(e){let t=e.trimStart();return t.startsWith(`> [!NOTE]
166
+ > Automated review. Not written by a human.`)?t.slice(53).trim():e.trim()}function dG(e,t){if(!e)return null;let n=e=>{let n=t(e.key);return n?{...e,checksState:n.rollupState,reviewDecision:Se(n.reviewDecision,n.opinionatedWriterReviewStates),isDraft:n.isDraft,liveHead:n.headRefOid,prStage:vU(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 fG={"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 pG(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 mG={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`}},hG={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 gG(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?hG[t.state]:null;if(!t)return mG[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?mG[e.postedEvent]:hG[t.state]}var _G={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function vG(e){let{reason:t}=pG(e),n=_G[t];return n?{text:fG[t],icon:n}:null}function yG(e){return vG(e)?.text??null}var bG={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`},handReview:{tone:`warn`,icon:`fork`,meaning:`From a fork`}};function xG(e,t){let n=yG(t);return n?`${e}, ${n}`:e}function SG(e){if(Ce(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===QG(e))}var CG={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function wG(e,t){if(e.prStage)return{tone:LU(e.prStage),icon:RU(e.prStage),meaning:IU(e.prStage)};let n=bG[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:xG(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:xG(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=SG(e)?gG(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=gG(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=vG(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&DG(e)?CG:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function TG(e){let t=e.viewerThreads;return t!==void 0&&t.total>0&&t.resolved===t.total}function EG(e){return e.status===`posted`&&DG(e)}function DG(e){if(!TG(e)||Ce(e))return!1;let t=QG(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 OG(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 kG(e){return`${e} ${e===1?`comment`:`comments`}`}function AG(e,t,n){let r=[`${kK(e.repo,e.number)}: ${e.title}`],i=`reviewedHead`in e?e.assessment?.goal.trim():``;if(i&&r.push(i),r.push(wG(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(`
167
+ `);let a=OG(e.viewerThreads);a&&r.push(a);let o=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${WG(e.verdict)}, ${kG(o)}`);let s=oK(e);s&&r.push(`You ${KG[s.state]} at ${w(s.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(YK(e));let c=uK(e,{isViewerShown:t!==`posted`});for(let[e,t]of c.entries())r.push(lK(t.text,n.githubReviews?.[e]??null));return r.join(`
168
+ `)}function jG(e){let t=e.inReview.length+e.queued.length;return t===0?``:` ${t} ${t===1?`review is`:`reviews are`} still running.`}function MG(e){return e.ready.length+e.attention.length+e.handReview.length>0?null:`Nothing needs you right now.${jG(e)}`}function NG(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.${jG(e)}`}:{kind:`banner`,title:`All caught up`,detail:MG({...e,ready:[],attention:[]})??``}}function PG(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}function FG({action:e,pullRequest:t,warning:n,isActedSelected:r}){let i=oq(e),a=`${t}: ${PG(i)}`;return n.trim()?{statusText:i,shouldAdvance:!1,notice:{text:`${a} ${PG(n)}`,tone:`error`}}:{statusText:i,shouldAdvance:r,notice:null}}function IG(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 LG(e,t,n){return n?kK(e,t):`#${t}`}var RG={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},zG={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},BG=`lanes-team-review`,VG=`team-review-enabled`,HG=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),UG={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function WG(e){return UG[e]}var GG=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),KG=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),qG=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),JG=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`}),YG=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 XG(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=>$G(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[pG(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($G(r).length>0||EG(r)){n.actionable.push(r);continue}let e=(r.status===`ready`||r.status===`stale`||r.status===`error`)&&!iK(r);e&&t.noReviewNeeded.push(r),r.status===`ready`&&!e&&n[pG(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 ZG(e,t){return e.commit===t?e.isViewer||_e.has(e.state):!1}function QG(e){return e.liveHead??e.reviewedHead}function $G(e){return(e.threads??[]).filter(e=>!e.isNit&&!e.isResolved)}function eK(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 tK(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=eK(t,QG(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 nK=40;function rK(e,t){return e.split(`
169
+ `).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/nK)),0)>t}function iK(e){return $G(e).length>0?!0:Ce(e)?!1:DG(e)?!0:!(e.githubReviews??[]).some(t=>ZG(t,QG(e)))}function aK(e,t){let n=KG[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function oK(e){if(Ce(e))return null;let t=(e.githubReviews??[]).filter(e=>e.isViewer&&_e.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!t?.commit||t.commit===QG(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 sK(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 ${w(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${i}, so this review covers what changed after ${r}.`:`${i}.`}function cK(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function lK(e,t){return t?`${e}, ${t}`:e}function uK(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:cK(t.state),text:aK(t,QG(e)),submittedAt:t.submittedAt}))}function dK(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 fK(e){return[...e.ready,...e.attention].map(e=>e.key)}function pK({capturedOrder:e,actedKey:t,groups:n}){let r=fK(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 mK(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 hK(e){return RG[e]}function gK(e){return zG[e]}function _K(e){let t=cG(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function vK(e){let t=_K(e);return de.options.find(e=>t.includes(e))??null}function yK(e){return vK(e)!==`LOW`}var bK=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(`.`)),xK=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function SK(e){let t=xK.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:bK.has(n.slice(r+1).toLowerCase())}var CK=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function wK(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:SK(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function TK(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:wK(e.slice(t?.[0].length??0))}})}function EK(e){let t=uG(e),n=lG(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(CK)){let t=e.index??0;i.push(...TK(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(...TK(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function DK(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 OK(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 kK(e,t){return`${e}#${t}`}function AK(e){return e===`full`?`full`:`light`}function jK(e){return e.priorReviewedHead?`${AK(e.tier)} review of changes since ${w(e.priorReviewedHead)}`:`${AK(e.tier)} review`}function MK(e){return e.reasons.join(`, `)}function NK(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 PK(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 FK(e){return e?{label:`Coverage`,preview:PK(e)}:{label:`Review audit`,preview:``}}var IK=`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.`,LK=new Set([`error`,`stale`,`discarded`,`posted`]);function RK(e){return LK.has(e)}function zK(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function BK(e){let t=zK(e);return t?`Reviewed at ${w(e.reviewedHead)}. The pull request is now at ${w(t)}.`:null}function VK(e){let t=zK(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function HK(e){let t=[`at ${w(e.head)}`,kG(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function UK(e){let t=WK(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function WK(e){return HG[e]??String(e).toLowerCase()}function GK(e){return GG[e]??`dim`}function KK(e){return qG[e]??e}function qK(e,t){return`${Yl(t-e.startedAt)} elapsed`}function JK(e,t){let n=[qK(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${Yl(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function YK(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 XK(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function ZK(e){return XK(e.path,e)}function QK(e){return XK(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function $K(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function eq(e){return{key:e,action:`discard`,body:``,comments:[]}}function tq(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 nq=Object.freeze({approve:`Approve and comment`,"approve-only":`Approve`,comment:`Comment`,discard:`Not mine`,requeue:`Queue review`,"resolve-thread":`Resolve`});function rq(e){return nq[e]}function iq(e){return e.status===`ready`?{footer:[`comment`,`approve-only`,`approve`],more:[`requeue`,`discard`]}:Me(e)?{footer:[`approve-only`],more:[`requeue`]}:e.status===`error`||e.status===`stale`?{footer:[`requeue`],more:[`discard`]}:RK(e.status)?{footer:[`requeue`],more:[]}:{footer:[],more:[]}}function aq(e){return YG[e]}function oq(e){return JG[e]}function sq(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 cq(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 lq(e){return e?.configured&&e.reason||null}function uq(e){return XG(e).ready.map(e=>`${e.key}@${e.reviewedHead}`)}function dq(e){return El(uq(e))}function fq({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:El([...i]),unseen:El([...o])};for(let e of s)o.add(e);return{isShown:s.length>0,acknowledged:El([...a]),unseen:El([...o])}}function pq(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${uK(e).map(e=>e.text).join(`, `)}`}function mq(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 hq(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(`
170
+ `)!==t.inFlight.map(e=>e.key).join(`
171
+ `)||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 gq=12e4,_q=`The server did not answer within ${gq/1e3} s. Check GitHub before trying again.`,vq=`${G} Check GitHub before trying again.`,yq=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,bq=`GitHub review`,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=null,Lq=null,Rq=new Map,zq=Pf(()=>Cq),Bq=Pf(()=>Cq),Vq=Pf(()=>Cq),Hq=new WeakMap,Uq=new Map,Wq=new Map,Gq=new Map,Kq=bc(),qq=Sc(),Jq=new Set(qq.split(`|`).filter(Boolean));function Yq(e){let t=hK(e),n=j(`span`,`pr-severity-meter`);if(n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,`${e.toLowerCase()} severity`),n.style.color=`var(${t.colorToken})`,e===`CRITICAL`){let e=l_(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(c_(`path`,{d:yq,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=l_(9,11),i=e<t.filledCount;r.append(c_(`path`,{d:yq,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function Xq({verdict:e}){let t=j(`span`,`pr-verdict-seal`);t.dataset.tone=GK(e);let n=l_(20,20),r=gK(e);return n.append(c_(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(c_(`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(c_(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(c_(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(c_(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,j(`span`,null,UK(e))),t}function Zq(){let e=l_(16,16);return e.append(c_(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(c_(`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(c_(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function Qq(e){return fr(`pr-link`,kK(e.repo,e.number),e.url)}function $q(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function eJ(e,t){let n=$q(t);if(n===null)return null;let r=j(`span`,null,`${e}${e?` `:``}${Mf(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function tJ(e){let t=Hq.get(e);t&&(e.title=`${t()}${e.dataset.unseen?`
172
+ New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function nJ(){Vq.reset(),rJ(Cq)}oh(nJ);function rJ(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))Hq.has(t)&&(tJ(t),Vq.onTick(()=>tJ(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=Sq?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?oK(e):null;if(!n)continue;let r=()=>{t.textContent=sK(n,aJ(n.submittedAt))};r(),Vq.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:Mf(n),i=ih()?lK(bq,r):lK(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),Vq.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??``;Vq.track(t,e,()=>`${n}${n?` `:``}${Mf(e)}`)}}}function iJ(e,t,n,r=!0){let i=uK(e,{isViewerShown:r});if(i.length===0)return null;let a=j(`span`,t),o=dr(i.map(e=>({login:e.login,tone:e.tone,title:lK(ih()?bq:e.text,aJ(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=$q(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(o),a}function aJ(e){let t=$q(e);return t===null?null:Mf(t)}function oJ(e,t,n){let r=j(`span`,n);return r.append(ur({login:e,cssPx:t}),j(`span`,`pr-author-login`,e)),r}function sJ(e,t){return`${kK(e.repo,e.number)}\n${wG(e,t).meaning}`}function cJ(e,t,n){let r=j(`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&&Jq.has(i)){let e=j(`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===Aq));let a=`reviewedHead`in e?oK(e):null;Hq.set(r,()=>ih()?sJ(e,t):AG(e,t,{opened:aJ(e.prCreatedAt),reviewed:`reviewedHead`in e?aJ(e.reviewedAt):null,posted:`reviewedHead`in e?aJ(e.postedAt):null,viewerApproval:aJ(a?.submittedAt),githubReviews:`reviewedHead`in e?uK(e,{isViewerShown:t!==`posted`}).map(e=>aJ(e.submittedAt)):[]})),tJ(r);let o=pJ(e,n);if(t===`inReview`){let t=e,n=j(`span`,`pr-queue-elapsed`);zq.track(n,t.startedAt,()=>qK(t,Date.now())),o.append(n)}if(t===`queued`){let t=eJ(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),o.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=eJ(``,t.reviewedAt)??eJ(``,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),lJ(r,e.key,i),r;r.classList.remove(`pr-queue-row-quiet`);let s=wG(e,t),c=j(`span`,`pr-queue-glyph`);c.append(ov(s.icon,s.tone));let l=j(`span`,`pr-queue-bottom`);if(l.append(fJ(s),oJ(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=j(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,l.append(e)}t===`inReview`&&l.append(j(`span`,`pr-phase-label`,KK(e.phase))),r.append(c,o,l);let u=t===`inReview`||t===`queued`?null:iJ(e,`pr-queue-reviewers`,16,t!==`posted`);return u&&l.append(u),lJ(r,e.key,i),r}function lJ(e,t,n){e.addEventListener(`click`,()=>{n&&Jq.delete(n)&&(mY(El([...Jq])),e.querySelector(`.pr-queue-unseen`)?.remove(),delete e.dataset.unseen,tJ(e)),Aq=t,jq=null,_J(null);for(let e of Eq?.querySelectorAll(`button[data-review-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.reviewKey===Aq));iY(XG(Sq)),Vq.reset(),rJ(Cq),document.documentElement.dataset.layout===`phone`&&Oq?.scrollIntoView({block:`start`,behavior:`smooth`})})}function uJ(e){let t=Object.values(XG(Sq)).flat().find(t=>Ln(t)===e.toLowerCase());return t?dJ(t.key):null}function dJ(e){return Eq?[...Eq.querySelectorAll(`button[data-review-key]`)].find(t=>t.dataset.reviewKey===e)??null:null}function fJ(e){let t=j(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function pJ(e,t){let n=j(`span`,`pr-queue-top`);return n.append(j(`strong`,`pr-queue-ref`,LG(e.repo,e.number,t)),j(`strong`,`pr-queue-ref-compact`,LG(e.repo,e.number,!1)),j(`span`,`pr-queue-title`,e.title)),n}function mJ(e,t){let n=j(`section`,`pr-queue-section`);n.append(j(`h3`,`pr-section-heading`,`Review by hand ${e.length}`));for(let r of e){let e=fr(`pr-queue-row`,``,r.url);Hq.set(e,()=>ih()?sJ(r,`handReview`):AG(r,`handReview`,{opened:aJ(r.prCreatedAt)})),tJ(e);let i=wG(r,`handReview`),a=j(`span`,`pr-queue-glyph`);a.append(ov(i.icon,i.tone));let o=j(`span`,`pr-queue-bottom`);o.append(fJ(i),oJ(r.author,16,`pr-queue-author`)),e.append(a,pJ(r,t),o),n.append(e)}return n}function hJ({title:e,detail:t}){let n=j(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=j(`strong`,`pr-caught-up-title`);return r.append(ov(`ready`,`ok`),j(`span`,null,e)),n.append(r,j(`p`,`pr-caught-up-detail`,t)),n}function gJ(e,t){return e.kind===`banner`?[hJ(e)]:[j(`p`,`my-pr-note`,e.detail),mJ(t.handReview,IG(t))]}function _J(e){Mq=e,Nq&&(Nq.hidden=e===null,Nq.textContent=e?.text??``,e&&(Nq.dataset.tone=e.tone))}function vJ(e,t,n,r){let i=j(`section`,`pr-queue-section`);i.append(j(`h3`,`pr-section-heading`,`${e} ${t.length}`));for(let e of t)i.append(cJ(e,n,r));return i}var yJ=`Open in session`,bJ=`Preparing the branch and session.`;function xJ(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;r.textContent=t,n&&(r.dataset.tone=n),n||delete r.dataset.tone;let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function SJ(e,t){let n=Rq.get(e);n&&window.clearTimeout(n.timer),Rq.set(e,{requestId:null,timer:0,text:t,tone:`error`}),xJ(e,t,`error`)}function CJ(e,t,n){if(Rq.get(e)?.requestId)return;let r=md(`open-team-review-session`);if(!K({type:`open-team-review-session`,requestId:r,key:e})){n.dataset.tone=`error`,n.textContent=G;return}let i=window.setTimeout(()=>SJ(e,`The server did not answer within ${gq/1e3} s.`),gq);Rq.set(e,{requestId:r,timer:i,text:bJ,tone:`busy`}),t.disabled=!0,n.dataset.tone=`busy`,n.textContent=bJ}function wJ(e){let t=j(`div`,`pr-session-open`),n=j(`button`,`pr-action pr-session-open-button`,yJ);n.type=`button`;let r=Rq.get(e.key);n.disabled=!!r?.requestId;let i=j(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&(i.dataset.tone=r.tone),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>CJ(e.key,n,i)),t.append(n,i),t}function TJ(e){let t=j(`div`,`pr-detail-heading`);t.dataset.signature=mq(e);let n=j(`div`,`pr-detail-title`);n.append(Qq(e),j(`h2`,null,e.title));let r=j(`div`,`pr-detail-meta`);r.append(oJ(e.author,20,`pr-detail-author`));let i=j(`span`,null,jK(e));i.title=MK(e),r.append(i);let a=eJ(`Opened`,e.prCreatedAt);if(a&&r.append(a),`reviewedHead`in e){let t=eJ(`Reviewed`,e.reviewedAt);t&&r.append(t);let n=eJ(`Posted`,e.postedAt);n&&r.append(n)}let o=`reviewedHead`in e?iJ(e,`pr-detail-github`,20):null;if(o&&r.append(o),t.append(n,r,wJ(e)),`reviewedHead`in e){let n=OG(e.viewerThreads);if(n){let r=j(`p`,`pr-viewer-threads`,n);TG(e)&&(r.dataset.state=`all-resolved`),t.append(r)}}let s=`reviewedHead`in e?oK(e):null;if(s){let n=j(`p`,`pr-rereview-notice`,sK(s,aJ(s.submittedAt)));n.dataset.reviewKey=e.key,t.append(n)}return t}function EJ(e,t){let n=e.querySelector(`:scope > .pr-detail-heading`);if(!n||n.dataset.signature===mq(t))return e;let r=TJ(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 DJ(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function OJ(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(j(`code`,null,n.text));continue}let t=j(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function kJ(e,t){return OJ(e,wK(t))}function AJ(e,t,n){let r=j(`div`,`pr-assessment-part`);return n&&(r.dataset.tone=n),r.append(j(`h4`,`pr-assessment-title`,e),t),r}function jJ(e){let t=j(`ul`,`pr-assessment-list`);for(let n of e)t.append(kJ(j(`li`,null),n));return t}function MJ(e){let t=NK(e.assessment);if(t.length===0)return[];let n=j(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(j(`h3`,`pr-assessment-title`,`About this PR`));for(let e of t){let t=e.kind===`goal`?`pr-verdict-summary pr-about-goal`:`pr-verdict-summary`;n.append(kJ(j(`p`,t),e.text))}return[n]}function NJ(e){let t=j(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=j(`div`,`pr-verdict-line`);return n.append(Xq(e)),t.append(n),e.assessment?(t.append(kJ(j(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t):(t.append(j(`p`,`pr-verdict-legacy`,IK)),t)}function PJ(e){let t=j(`details`,`pr-disclosure pr-coverage`),n=j(`summary`,`pr-disclosure-summary`),r=FK(e.assessment);n.append(j(`span`,`pr-disclosure-label`,r.label),j(`span`,`pr-disclosure-preview`,r.preview)),t.append(n);let{assessment:i}=e;return i?(i.checked.length>0&&t.append(AJ(`What the review checked`,jJ(i.checked))),i.gaps.length>0&&t.append(AJ(`Not covered`,jJ(i.gaps),`warning`)),t):(t.append(kJ(j(`p`,`pr-verdict-summary`),e.summary)),t)}function FJ(e){if(e.kind===`code`){let t=j(`pre`,`pr-comment-code`),n=j(`code`,null);return n.textContent=e.code,t.append(n),t}let t=j(`p`,`pr-comment-paragraph`);if(e.lead){let n=j(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(Zq()),n.append(e.lead),t.append(n,` `)}return OJ(t,e.segments)}function IJ(e){let t=j(`details`,`pr-comment-content`),n=j(`summary`,`pr-comment-header`),r=EK(e.body),i=vK(e);i&&n.append(Yq(i));let a=j(`span`,`pr-comment-location`,QK(e));a.title=ZK(e),n.append(a),n.append(j(`span`,`pr-comment-preview`,DK(r.paragraphs))),t.append(n);let o=j(`div`,`pr-comment-paragraphs`);for(let e of r.paragraphs)o.append(FJ(e));return t.append(o),t.open=i===`HIGH`||i===`CRITICAL`,t}function LJ(e,t){let n=j(`details`,`pr-disclosure pr-earlier-review`),r=j(`summary`,`pr-disclosure-summary`);r.append(j(`span`,`pr-disclosure-label`,`Earlier review`),j(`span`,`pr-disclosure-preview`,HK(e)));let i=j(`div`,`pr-earlier-review-body`),a=j(`div`,`pr-verdict-line`);a.append(Xq(e)),i.append(a),e.summary.trim()&&i.append(kJ(j(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=j(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(IJ(t)),i.append(e)}return n.append(r,i),n.open=t,n}function RJ(e){let t=BK(e);if(!t)return[];let n=j(`p`,`pr-changed-since`,t);return n.append(` `,fr(`pr-changed-since-link`,`Compare changes`,VK(e),`Open the commits since this review on GitHub`)),[n]}function zJ(e){let t=Sq?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return Fq=null,[];if(Fq?.key===e.key&&Fq.head===t.head)return[Fq.element];let n=LJ(t,!1);return Fq={key:e.key,head:t.head,element:n},[n]}function BJ(e,t,n,r){let i=j(`article`,`pr-comment-card`),a=j(`input`,`pr-comment-checkbox`);return a.type=`checkbox`,a.checked=n.has(t),a.setAttribute(`aria-label`,`Include comment on ${ZK(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,IJ(e)),i}var VJ=`More review actions`,HJ=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function UJ(e,t,n,r){let i=fK(XG(Sq));_J(null);let a=md(`team-review-action`);if(!K({type:`team-review-action`,requestId:a,...n}))return!1;let o=window.setTimeout(()=>{Gq.delete(t.key),r(!1,_q)},gq);return Gq.set(t.key,{requestId:a,action:n.action,origin:e,capturedOrder:i,pullRequest:kK(t.repo,t.number),timer:o,settle:r}),!0}function WJ(e){let t=j(`footer`,`pr-footer`),n=qJ(`discard`,()=>{Gq.has(e.key)||(n.disabled=!0,i.dataset.tone=`busy`,i.textContent=aq(`discard`),!UJ(`other`,e,eq(e.key),a)&&a(!1,G))}),r=Gq.has(e.key);n.disabled=r;let i=j(`span`,`pr-action-status`,r?aq(`discard`):``);i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(t,r)=>{n.disabled=t,i.dataset.tone=t?`ok`:`error`,i.textContent=r,t||_J({text:`${kK(e.repo,e.number)}: ${r}`,tone:`error`})};return t.append(n,i),t}var GJ=0;function KJ(e,t){let n=j(`div`,`pr-detail-more`),r=j(`button`,`review-icon-button review-more-button`);r.type=`button`,r.title=VJ,r.setAttribute(`aria-label`,VJ),r.setAttribute(`aria-haspopup`,`menu`),r.setAttribute(`aria-expanded`,`false`),r.append(h_(p_)),GJ+=1;let i=j(`div`,`review-more-menu`);i.id=`pr-more-menu-${GJ}`,i.setAttribute(`role`,`menu`),i.setAttribute(`aria-label`,VJ),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=j(`button`,`review-btn`,rq(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 qJ(e,t){let n=j(`button`,`pr-action`,rq(e));return n.type=`button`,n.dataset.action=e,n.addEventListener(`click`,()=>t(e)),n}function JJ(e,t){e.querySelector(`:scope > .pr-detail-heading > .pr-detail-title`)?.append(t)}function YJ(e){let t=j(`article`,`pr-detail`),n=j(`div`);n.dataset.reviewThreads=``,t.append(TJ(e),...MJ(e),n,NJ(e)),$J(t,e);let r=j(`section`,`pr-posts`);r.setAttribute(`aria-label`,`Inline comments`);let i=j(`div`,`pr-posts-heading`);i.append(j(`h3`,null,`Inline comments`),j(`span`,null,String(e.comments.length))),r.append(i);let a=j(`details`,`pr-disclosure`),o=j(`summary`,`pr-disclosure-summary`),s=j(`span`,`pr-disclosure-preview`);o.append(j(`span`,`pr-disclosure-label`,`Review body`),s),a.append(o);let c=j(`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(`
173
+ `).length+1)),c.spellcheck=!0;let l=()=>{s.textContent=uG(c.value).split(/\r?\n/).map(e=>e.trim()).find(Boolean)||`No review body`};c.addEventListener(`input`,l),l(),a.append(c);let u=j(`details`,`pr-disclosure`);u.append(j(`summary`,`pr-disclosure-summary`,`Add a note`));let d=j(`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)=>yK(e)?[t]:[])),p=j(`footer`,`pr-footer`),m=j(`span`,`pr-action-status`);m.setAttribute(`role`,`status`),m.setAttribute(`aria-live`,`polite`);let h=()=>{Gq.has(e.key)||m.dataset.tone===`ok`||(m.textContent=``,delete m.dataset.tone)};for(let[t,n]of e.comments.entries())r.append(BJ(n,t,f,h));t.append(r,a,u,PJ(e)),e.earlierReview&&t.append(LJ(e.earlierReview,!1));let g=[],_=e=>{for(let t of g)t.disabled=e;t.dataset.busy=String(e)},v=(e,t)=>{_(e),m.dataset.tone=e?`ok`:`error`,m.textContent=t},y=t=>{if(Gq.has(e.key))return;_(!0),m.dataset.tone=`busy`,m.textContent=aq(t);let n=e.comments.filter((e,t)=>f.has(t));UJ(`ready`,e,tq(e,t,$K(d.value,c.value),n),v)||v(!1,G)},b=iq(e),x=b.footer.map(e=>qJ(e,y)),S=KJ(b.more,y);return g.push(...x,...S.controls),JJ(t,S.element),p.append(...x,m),t.append(p),{signature:pq(e),element:t,settle:v}}function XJ(e){let t=Uq.get(e.key);if(t&&(Gq.has(e.key)||t.signature===pq(e)))return $J(t.element,e),EJ(t.element,e);let n=YJ(e);return Uq.set(e.key,n),n.element}function ZJ(e,t){let n=j(`article`,`pr-detail`),r=j(`div`,`pr-detail-heading`),i=j(`div`,`pr-detail-title`);i.append(Qq(e),j(`h2`,null,e.title));let a=j(`div`,`pr-detail-meta`);a.append(oJ(e.author,20,`pr-detail-author`));let o=eJ(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,wJ(e)),n.append(r,j(`p`,`pr-attention-detail`,sq(t)),WJ(e)),n}function QJ(e){let t=j(`article`,`pr-detail`);t.append(TJ(e));let n=j(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=j(`ol`,`pr-progress-tracker`);for(let t of OK(e.phase)){let e=j(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(j(`span`,`pr-progress-bar`),j(`span`,null,t.label)),r.append(e)}let i=j(`div`,`pr-progress-text`);Bq.track(i,e.startedAt,()=>JK(e,Date.now())),n.append(r,i),t.append(n);let a=j(`section`,`pr-steps`);a.append(j(`h3`,null,`Latest agent steps`));let o=j(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=j(`li`,`pr-step`),r=j(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(j(`span`,`pr-step-at`,Xl(e.startedAt,t.at)),j(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...zJ(e),WJ(e)),t}function $J(e,t){if(Gq.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(...tY(t)),n.dataset.reviewThreads=r)}function eY(e,t,n,r){let i=j(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(j(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!rK(e,t?3:8))return i;let a=j(`details`,`pr-thread-disclosure`);return a.append(j(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),j(`p`,`pr-thread-body`,e)),n&&a.append(fr(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function tY(e){let t=tK(e);if(t.length===0)return[];let n=j(`section`,`my-pr-threads-section`);n.append(j(`h3`,`pr-section-heading`,`Answered threads`));let r=j(`div`,`my-pr-threads`);for(let n of t){let t=j(`div`,`my-pr-thread pr-thread-card`),i=j(`div`,`my-pr-thread-heading pr-thread-heading`),a=j(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(fr(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(j(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(j(`div`,`my-pr-thread-meta`,`Your comment`),eY(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let o=j(`div`,`pr-detail-meta pr-thread-reply-meta`);o.append(j(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let s=eJ(``,n.thread.lastReplyAt);s&&o.append(s);let c=j(`span`,`pr-action-status`);c.setAttribute(`role`,`status`);let l=j(`button`,`pr-action`,`Resolve`);l.type=`button`,l.disabled=!n.canResolve||Gq.has(e.key);let u=(e,t)=>{l.disabled=e||!n.canResolve,c.textContent=t,c.dataset.tone=e?`ok`:`error`};l.addEventListener(`click`,()=>{Gq.has(e.key)||(l.disabled=!0,c.textContent=aq(`resolve-thread`),!UJ(`other`,e,tq(e,`resolve-thread`,``,[],n.thread.id),u)&&u(!1,G))}),t.append(o),n.thread.lastReplyBody&&t.append(eY(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let d=j(`footer`,`pr-thread-footer`);d.append(c,l),t.append(d),n.thread.resolveError&&t.append(j(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function nY(e){let t=j(`article`,`pr-detail`);if(t.append(TJ(e),...MJ(e),...tY(e)),e.status===`posted`&&t.append(NJ(e),PJ(e)),e.status!==`posted`&&t.append(j(`p`,`pr-attention-detail`,YK(e))),e.status===`stale`&&t.append(...RJ(e)),e.earlierReview&&t.append(LJ(e.earlierReview,e.status===`stale`)),!RK(e.status))return Wq.set(e.key,{signature:DJ(e),element:t,settle:()=>{}}),t;let n=j(`footer`,`pr-footer`),r=iq(e),i=j(`span`,`pr-action-status`,r.footer.includes(`approve-only`)?HJ:``);i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=[],o=(e,t)=>{for(let t of a)t.disabled=e;i.dataset.tone=e?`ok`:`error`,i.textContent=t},s=t=>{if(!Gq.has(e.key)){for(let e of a)e.disabled=!0;i.dataset.tone=`busy`,i.textContent=aq(t),!UJ(`other`,e,tq(e,t,``,[]),o)&&o(!1,G)}},c=r.footer.map(e=>qJ(e,s));if(a.push(...c),r.more.length>0){let e=KJ(r.more,s);a.push(...e.controls),JJ(t,e.element)}return n.append(...c,i),t.append(n),Wq.set(e.key,{signature:DJ(e),element:t,settle:o}),t}function rY(e){if(!RK(e.status)&&tK(e).length===0)return nY(e);let t=Wq.get(e.key);return t&&(Gq.has(e.key)||t.signature===DJ(e))?EJ(t.element,e):nY(e)}function iY(e){if(!Oq)return;if(Aq=mK(e,Aq,jq!==null),!Aq){let t=jq?.actedKey??null,n=t&&[...e.ready,...e.attention].some(e=>e.key===t)?t:null;jq&&={actedKey:n},Oq.replaceChildren(...gJ(NG(e,n),e)),Pq=null;return}let t=e.ready.find(e=>e.key===Aq&&($G(e).length>0||EG(e)));if(t&&t.status!==`ready`){let e=`threads:${DJ(t)}`,n=rY(t);if(Pq===e&&Oq.firstElementChild===n)return;Oq.replaceChildren(n),Pq=e;return}let n=[...e.ready,...e.noReviewNeeded].find(e=>e.key===Aq&&e.status===`ready`);if(n){let e=`ready:${pq(n)}`,t=XJ(n);if(Pq===e)return;Oq.replaceChildren(t),Pq=e;return}let r=e.inReview.find(e=>e.key===Aq);if(r){Bq.reset(),Oq.replaceChildren(QJ(r)),Pq=`inReview:${r.key}`;return}let i=e.queued.find(e=>e.key===Aq);if(i){let t=`queued:${i.key}:${e.inReview.length}`;if(Pq===t)return;Oq.replaceChildren(ZJ(i,e.inReview.length)),Pq=t;return}let a=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===Aq);a&&(Oq.replaceChildren(rY(a)),Pq=`${a.status}:${a.key}`)}function aY(){let e=j(`p`,`pr-empty`,cq(Sq));return Sq&&!Sq.configured&&e.append(` `,Tp(BG,VG,`Open Team review settings`)),e}function oY(){let e=lq(Sq);return e?[j(`p`,`my-pr-note`,e)]:[]}function sY(e){for(let t of[...Uq.keys()])e.has(t)||Gq.has(t)||Uq.delete(t);let t=new Set(Sq?.drafts.filter(e=>RK(e.status)).map(e=>e.key)??[]);for(let e of Wq.keys())t.has(e)||Gq.has(e)||Wq.delete(e)}function cY(){if(!Cq||!wq||Eq?.isConnected)return;let e=QB({queueLabel:`Review queue`,scopeTabs:wq,resizerLabel:`Resize review queue`});Eq=e.queue,Nq=j(`p`,`pr-action-status pr-action-notice`),Nq.setAttribute(`role`,`status`),Nq.setAttribute(`aria-live`,`polite`),Oq=j(`div`,`pr-detail-body`),e.detail.append(Nq,Oq),_J(Mq),Tq&&e.foot.append(Tq.control),Cq.replaceChildren(e.columns),Pq=null,Dq=null}function lY(e){if(!e)return;e.querySelector(`.pr-team-chip`)?.remove();let t=Sq?.team;if(!t)return;let n=j(`span`,`pr-team-chip`);n.append(ur({login:t.slug,url:t.avatarUrl,cssPx:16}),j(`span`,null,t.name)),e.insertBefore(n,e.querySelector(`.pr-queue-toggle`))}function uY(){let e=document.activeElement;return!(e instanceof HTMLElement)||!Eq?.contains(e)?null:e.dataset.reviewKey??null}function dY(e){e&&dJ(e)?.focus({preventScroll:!0})}function fY(){if(!Cq)return;let e=uY(),t=XG(Sq);if(sY(new Set([...t.ready,...t.noReviewNeeded].map(e=>e.key))),Vq.reset(),!Sq?.configured||!dK(t)&&jq===null){zq.reset(),Bq.reset();let e=XB(wq);lY(e),Cq.replaceChildren(e,...Tq?[Tq.notice]:[],...oY(),aY(),ZB(Tq?.control??null)),Tq?.update(Sq),Eq=null,Dq=null,Oq=null,Nq=null,kq=null,Pq=null;return}if(cY(),!Eq)return;lY(Cq.querySelector(`.pr-queue-head`)),Aq=mK(t,Aq,jq!==null);let n=IG(t),r=JSON.stringify([t,n,Aq,lq(Sq)]);if(r===Dq){Tq?.update(Sq),iY(t),rJ(Cq);return}Dq=r,zq.reset();let i=[],a=MG(t);a&&i.push(hJ({title:`All caught up`,detail:a})),t.ready.length&&i.push(vJ(`Ready`,t.ready,`ready`,n)),t.inReview.length&&(kq=vJ(`In review`,t.inReview,`inReview`,n),i.push(kq)),t.queued.length&&i.push(vJ(`Queued`,t.queued,`queued`,n)),t.noReviewNeeded.length&&i.push(vJ(`Already reviewed`,t.noReviewNeeded,`settled`,n)),t.handReview.length&&i.push(mJ(t.handReview,n)),t.attention.length&&i.push(vJ(`Needs attention`,t.attention,`attention`,n)),t.posted.length&&i.push(vJ(`Waiting on author`,t.posted,`posted`,n)),t.discarded.length&&i.push(vJ(`Not mine`,t.discarded,`discarded`,n)),Eq.replaceChildren(...Tq?[Tq.notice]:[],...oY(),...i),Tq?.update(Sq),dY(e),iY(t),rJ(Cq)}function pY(e){e!==Kq&&(Kq=e,xc(e))}function mY(e){e!==qq&&(qq=e,Cc(e))}function hY(){if(!Sq)return;let e=fq({readyEntries:uq(Sq),acknowledged:Kq,unseen:qq,isLooking:!yr(Cq)});pY(e.acknowledged),mY(e.unseen),Jq=new Set(e.unseen.split(`|`).filter(Boolean)),Iq?.(e.isShown);for(let t of document.querySelectorAll(`.pr-scope-tab[data-scope="team"] .tab-activity`))t.classList.toggle(`active`,e.isShown)}function gY(){Sq&&(pY(dq(Sq)),hY())}function _Y(e){Iq=e,hY()}function vY(e,t,n){return Lq=n?.openTerminal??Lq,Cq||(wq=t,Cq=j(`div`,`pr-content`),e.append(Cq),Tq=IW(`team-review`,Cq),zq.ensure(),Bq.ensure(),Vq.ensure(),fY(),Cq)}function yY(e){let t=Ue.safeParse(e);if(!t.success)return;let n=Sq;xq=t.data,Sq=dG(xq,Un),hY(),!(Sq&&hq(n,Sq)&&bY())&&fY()}function bY(){if(!Sq||!kq?.isConnected)return!1;zq.reset(),Vq.reset();let e=uY(),t=XG(Sq),n=vJ(`In review`,t.inReview,`inReview`,IG(t));return kq.replaceWith(n),kq=n,dY(e),t.inReview.some(e=>e.key===Aq)&&iY(t),rJ(Cq),!0}function xY(e){let t=e.key;if(!t)return;let n=Rq.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?SJ(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),Rq.delete(t),xJ(t,``,null),Lq?.(e.sessionId)))}function SY(e){if(e)return;for(let[e,t]of Rq)t.requestId&&SJ(e,G);let t=[...Gq.values()];Gq.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,vq)}function CY(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=Gq.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),Gq.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:oq(n.action)),Wq.delete(t.key),Pq=null,t.ok===!0&&fY();return}let r=(n.origin===`ready`?Uq:Wq).get(t.key);if(t.ok===!0){n.origin===`other`&&Wq.delete(t.key);let e=FG({action:n.action,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:Aq===t.key});if((r?.settle??n.settle)?.(!0,e.statusText),(e.notice||e.shouldAdvance)&&_J(e.notice),!e.shouldAdvance)return;Aq=pK({capturedOrder:n.capturedOrder,actedKey:t.key,groups:XG(Sq)}),Aq===null&&(jq={actedKey:t.key}),fY()}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}Wn(()=>{Sq=dG(xq,Un),hY(),fY()});function wY(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 TY=null;function EY(e){return TY?.(e)??!1}function DY(){lc()===`team`&&gY()}function OY(e,t){let n=(e,t)=>{if(s(e),DY(),!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=wY(`team`,n),i=wY(`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),vY(a,r,t),tG(o,i,t);function s(e){YB(),a.hidden=e!==`team`,o.hidden=e!==`mine`,uc(e)}TY=e=>{let n=QW(e),r=n??uJ(e);return!r||!t?.openReviews()?!1:(s(n?`mine`:`team`),r.click(),r.focus({preventScroll:!0}),r.scrollIntoView({block:`nearest`}),DY(),!0)},s(lc())}var kY={OPEN:0,MERGED:1,CLOSED:2};function AY(e){return e?kY[e.state]:kY.OPEN}function jY(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:Ih(void 0)};let i=LU(t.stage);return{key:n,text:r,url:t.url,hoverText:`${e.repo}: ${t.title} (${IU(t.stage)})`,look:{icon:RU(t.stage),tone:i},tier:Ih(i)}}function MY(e,t){let n=e.map(e=>{let n=t(Ln(e));return{link:e,pr:n?vU(n):void 0}});return n.sort((e,t)=>AY(e.pr)-AY(t.pr)||t.link.linkedAt-e.link.linkedAt),n.map(({link:e,pr:t})=>jY(e,t))}var NY=new Map;function PY(e){return document.querySelectorAll(`[data-pr-chips-for="${CSS.escape(e)}"]`)}function FY(e){return MY(NY.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:()=>{EY(e.key)||dg(e.url)}}))}function IY(e,t){let n=sv(e,e),r=j(`button`,`session-pr-chip-unlink`);r.append(h_(u_)),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(),tf({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:()=>{Jv(t,{type:`unlink-session-pr`,id:t,key:e.key})}})});let i=j(`span`,`session-pr-chip-item`);return i.append(n,r),i}function LY(e,t){e.dataset.prChipsFor=t,fv(e,FY(t),e=>IY(e,t))}function RY(e){for(let t of e){let e=t.dataset.prChipsFor;e&&LY(t,e)}yv()}function zY(e,t){let n=tt.shape.links.safeParse(t??[]);NY.set(e,n.success?n.data:[]),RY(PY(e)),ZW(NY)}function BY(e){NY.delete(e),ZW(NY)}Wn(()=>RY(document.querySelectorAll(`[data-pr-chips-for]`)));var VY=null,HY=new Set;function UY(){VY?.setAttribute(`aria-pressed`,String(!Ls()))}function WY(e){Rs(e),UY();for(let t of HY)t(e)}function GY(e){HY.add(e)}function KY(e){VY=e,UY(),e.addEventListener(`click`,()=>WY(!Ls()))}var qY={mine:`Mine`,run:`Run`,cancel:`Cancel`},JY={mine:`Mining merged pull requests.`,run:`Starting the run.`,cancel:`Cancelling the run.`},YY=null,XY=null,ZY=null,QY=!0,$Y=new Map,eX=new Map;function tX(e){return e===null?`n/a`:`${Math.round(e*100)}%`}function nX(e){if(e===null)return`n/a`;let t=Math.round(e*100);return t>0?`+${t}`:String(t)}function rX(e,t){ZY?.({type:`benchmark-action`,requestId:md(`benchmark`),suiteId:e,action:t})===!0?($Y.set(e,t),eX.set(e,JY[t]),lX()):(eX.set(e,G),lX())}function iX(e,t,n){let r=j(`button`,`bench-action-button`,qY[t]);return r.type=`button`,r.disabled=n,r.addEventListener(`click`,()=>rX(e.id,t)),r}function aX(e){let t=XY?.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 oX(e){let t=j(`td`,`bench-score`,tX(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 sX(e){let t=e.armIds.filter(t=>t!==e.baselineArm),n=j(`table`,`bench-table`),r=j(`tr`);r.append(j(`th`,null,`Case`),...e.armIds.map(t=>j(`th`,null,t===e.baselineArm?`${t} (baseline)`:t))),r.append(...t.map(e=>j(`th`,null,`${e} vs baseline`))),n.append(r);for(let r of e.rows){let i=j(`tr`);i.append(j(`td`,`bench-case`,r.caseId),...e.armIds.map(e=>oX(r.arms[e]))),i.append(...t.map(e=>j(`td`,`bench-delta`,nX(r.deltaVsBaseline[e]??null)))),n.append(i)}let i=[...new Set(e.armIds.flatMap(t=>Object.keys(e.totals[t]?.recallByTag??{})))].sort(),a=j(`tr`,`bench-total`);a.append(j(`td`,`bench-case`,`Paired recall`),...e.armIds.map(t=>oX(e.totals[t]))),n.append(a);for(let t of i){let r=j(`tr`,`bench-total`);r.append(j(`td`,`bench-case`,`Recall, ${t}`),...e.armIds.map(n=>j(`td`,`bench-score`,tX(e.totals[n]?.recallByTag[t]??null)))),n.append(r)}return n}function cX(e){let t=j(`div`,`bench-suite`),n=XY?.inFlight?.suiteId===e.id,r=!!XY?.inFlight&&!n,i=$Y.has(e.id)||!QY,a=j(`div`,`bench-summary`);a.append(j(`span`,`bench-suite-title`,e.title),_r(`bench`,e.caseCount===1?`case`:`cases`,String(e.caseCount)),_r(`bench`,e.candidateCount===1?`candidate`:`candidates`,String(e.candidateCount)),_r(`bench`,`arms`,String(e.armIds.length))),t.append(a);let o=j(`div`,`bench-controls`),s=XY?.configured===!0&&e.error===null;o.append(iX(e,`mine`,!s||i||n),iX(e,`run`,!s||i||n||r||e.caseCount===0),iX(e,`cancel`,i||!n));let c=j(`span`,`bench-status`,(QY?``:`Not connected to the server. Reconnecting.`)||aX(e)||eX.get(e.id)||``);if(c.setAttribute(`role`,`status`),o.append(c),t.append(o),e.error)return t.append(j(`p`,`bench-error`,e.error)),t;let l=e.latestReport;return l?(t.append(j(`p`,`bench-run-line`,`Latest run ${l.runId}: ${l.status}. Only cases every arm scored count toward paired recall.`)),l.rows.length>0&&t.append(sX(l)),t):(t.append(j(`p`,`bench-empty`,e.caseCount===0?`Move approved candidates into the cases folder, then choose Run.`:`No run yet.`)),t)}function lX(){if(!YY)return;YY.textContent=``;let e=gr(`bench`,`Benchmarks`,`Suites from the benchmarks folder of the Glimmervoid home, one run at a time.`);if(YY.append(e),!XY)YY.append(j(`p`,`bench-empty`,`Waiting for the server.`));else if(!XY.configured)YY.append(j(`p`,`bench-empty`,XY.reason||`Benchmarks are off.`));else if(XY.suites.length===0)YY.append(j(`p`,`bench-empty`,`No suites yet. Create a folder holding suite.json under benchmarks in the Glimmervoid home.`));else for(let e of XY.suites)YY.append(cX(e))}function uX(e){ZY=e}function dX(e){return YY||(YY=j(`div`,`bench-content`),e.append(YY),lX(),YY)}function fX(e){if(QY=e,!e){for(let e of $Y.keys())eX.delete(e);$Y.clear()}lX()}function pX(e){XY=e,lX()}function mX(e){$Y.delete(e.suiteId);let t=XY?.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.`};eX.set(e.suiteId,e.ok?n[e.action]:e.error||`The server refused the action.`),lX()}function hX(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function gX(e,t){return t===`all`||e.sources.includes(t)}function _X(e){return{all:e.length,me:e.filter(e=>gX(e,`me`)).length,team:e.filter(e=>gX(e,`team`)).length,project:e.filter(e=>gX(e,`project`)).length}}function vX(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!gX(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 yX(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 bX(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function xX(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 SX(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 CX(e,t){let n=SX(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function wX(e,t){let n=oo(e.url),r=n?t(n.toLowerCase()):void 0;return r?Rr(r):e.state}var TX=45e3,EX=`The server did not answer within ${TX/1e3} s.`,DX=`Select the issue to load its description.`,OX=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],kX={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},AX=null,jX=null,MX=null,NX=null,PX=null,FX=null,IX=null,LX=null,RX=null,zX=null,BX=new Map,VX=!1,HX=null,UX=null,WX=new Map,GX=new Map,KX=new Map,qX=new Map,JX=new Map;function YX(e){return`${e.key}:${e.updatedAt}`}function XX(e){return e.sessionId?P.get(e.sessionId):void 0}function ZX(e,t,n){let r=XX(t),i=r?.currentState??A.DORMANT,a=mr(i,r?.awaitingBackgroundTasks),o=r?`Session: ${a.label}`:`No session yet`,s=n?a.label:``;if(e.dataset.state===i&&e.title===o&&e.dataset.icon===a.icon&&e.textContent===s)return;e.dataset.state=i,e.dataset.icon=a.icon,e.title=o,e.setAttribute(`aria-label`,o);let c=j(`span`,`issues-state-icon`);iv(c,a.icon),e.replaceChildren(c),n&&e.append(s)}function QX(e,t=!1){let n=j(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return ZX(n,e,t),n}function $X(e){let t=XX(e);return t?Cr(t):`none yet`}function eZ(e){return[...WX.values()].some(t=>t.issueKey===e.key)}function tZ(e){let t=WX.get(e);t&&(WX.delete(e),GX.set(t.issueKey,EX),uZ())}function nZ(e){let t=WX.get(e);return t?(clearTimeout(t.timeoutHandle),WX.delete(e),t):null}function rZ(e){let t=YX(e);if(qX.has(t)||[...KX.values()].some(e=>e.cacheKey===t))return;let n=md(`issue-detail`);JX.delete(t),UX?.({type:`issue-detail`,requestId:n,repo:e.repo,issueNumber:e.number})?KX.set(n,{cacheKey:t,timeoutHandle:setTimeout(()=>{KX.delete(n),JX.set(t,`${EX} ${DX}`),uZ()},TX)}):JX.set(t,`${G} ${DX}`)}function iZ(e){let t=e.projectId;if(!t||XX(e)||eZ(e))return;let n=md(`open-issue-session`);UX?.({type:`open-issue-session`,requestId:n,projectId:t,repo:e.repo,issueNumber:e.number})?(WX.set(n,{issueKey:e.key,issueNumber:e.number,timeoutHandle:setTimeout(()=>tZ(n),TX)}),GX.set(e.key,`Opening session.`),uZ()):(GX.set(e.key,G),uZ())}function aZ(e){let t=j(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===RX));let n=j(`span`,`pr-queue-top`);n.append(j(`span`,`pr-queue-ref`,`#${e.number}`),j(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=j(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(j(`span`,`issues-why`,`you`)),r.append(j(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=wX(t,Un),n=j(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let i=j(`span`,`pr-queue-elapsed`,SX(e.updatedAt,Date.now()));return i.dataset.issueAge=e.updatedAt,r.append(i),t.append(QX(e),n,r),t.addEventListener(`click`,()=>{gZ(`select`),RX=e.key,AX&&(AX.dataset.detailOpen=`true`),rZ(e),fZ(),NX&&(NX.scrollTop=0)}),t}function oZ(e,t,n){let r=j(`dd`);r.append(...n),e.append(j(`dt`,null,t),r)}function sZ(e){let t=j(`footer`,`pr-footer issues-detail-footer`),n=XX(e);if(n&&e.sessionId){let n=e.sessionId,r=j(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>{gZ(`go-to-session`),Gv(n)}),t.append(r)}if(e.projectId&&!n){let n=j(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=eZ(e),n.addEventListener(`click`,()=>iZ(e)),t.append(n)}t.append(fr(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let r=GX.get(e.key),i=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,a=j(`span`,`pr-action-status issue-open-status`,r??i);return a.setAttribute(`role`,`status`),eZ(e)&&a.prepend(j(`span`,`issues-spinner`)),t.append(a),t}function cZ(e,t){let n=j(`span`,null,CX(e,t));return n.dataset.issueAgo=e,n}function lZ(){let e=NX?.querySelector(`.issues-detail`),t=RX?BX.get(RX):void 0;if(!e||!t)return;let n=e.querySelector(`.issues-facts .issues-state`);n&&ZX(n,t,!0);let r=e.querySelector(`.issues-session-name`),i=$X(t);r&&r.textContent!==i&&(r.textContent=i);let a=String(!!XX(t));e.dataset.hasLiveSession!==a&&(e.dataset.hasLiveSession=a,e.querySelector(`.issues-detail-footer`)?.replaceWith(sZ(t)))}function uZ(){if(!NX)return;let e=zX?.issues.find(e=>e.key===RX);if(!e){NX.replaceChildren(j(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let t=j(`article`,`pr-detail issues-detail`),n=j(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);n.type=`button`,n.addEventListener(`click`,()=>{gZ(`back`),AX&&(AX.dataset.detailOpen=`false`),[...MX?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===RX)?.focus({preventScroll:!0})});let r=j(`header`,`pr-detail-heading`),i=j(`div`,`pr-detail-title`);i.append(fr(`pr-link`,`${e.repo}#${e.number}`,e.url),j(`h2`,null,e.title||`Untitled issue`));let a=Date.now(),o=j(`div`,`pr-detail-meta`),s=j(`span`,null,`opened by ${e.author||`unknown`} `),c=j(`span`,null,`updated `);s.append(cZ(e.createdAt,a)),c.append(cZ(e.updatedAt,a)),o.append(s,c,j(`span`,null,`${e.comments} comments`)),e.sources.includes(`me`)&&o.append(j(`span`,`issues-why`,`assigned to you`));for(let t of e.teams)o.append(j(`span`,null,`mentions ${t}`));r.append(i,o);let l=j(`dl`,`issues-facts`);oZ(l,`Repository`,[e.repo]),oZ(l,`Labels`,[e.labels.join(`, `)||`none`]),oZ(l,`Assignees`,[e.assignees.join(`, `)||`unassigned`]),t.dataset.hasLiveSession=String(!!XX(e)),oZ(l,`Session`,[QX(e,!0),j(`span`,`issues-session-name`,$X(e))]);let u=e.pullRequests.flatMap(e=>{let t=wX(e,Un),n=j(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,fr(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});oZ(l,`Pull request`,u.length>0?u:[`none linked`]);let d=j(`section`,`issues-body-section`),f=YX(e),p=j(`div`,`issue-body`,qX.get(f)??JX.get(f)??`Loading description.`);qX.get(f)===``&&(p.textContent=`No description.`),p.setAttribute(`role`,`status`),d.append(j(`h3`,`pr-section-heading`,`Description`),p),t.append(n,r,l,d,sZ(e)),NX.replaceChildren(t)}function dZ(e,t,n,r){if(!e)return;let i=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...i].map(e=>{let n=j(`option`,null,e||t);return n.value=e,n})),e.value=r}function fZ(){VX=!1,pZ(),uZ()}function pZ(){if(!AX||!MX||!jX)return;let e=zX?.issues??[],t=_X(e);for(let e of OX){jX.querySelector(`[data-scope="${e.id}"]`)?.setAttribute(`aria-selected`,String(e.id===kX.scope));let n=jX.querySelector(`[data-scope-count="${e.id}"]`);n&&(n.textContent=String(t[e.id]))}let n=bX(e);dZ(FX,`All repos`,n.repos,kX.repo),dZ(IX,`All labels`,n.labels,kX.label),PX&&(PX.textContent=xX(kX));let r=vX(e,kX,new Set(P.keys())),i=document.activeElement instanceof HTMLElement&&MX.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,a=[...yX(r)].map(([e,t])=>{let n=j(`section`,`pr-queue-section`),r=j(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(j(`span`,`issues-repo-note`,`view only`)),r.append(j(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(aZ)),n});MX.replaceChildren(...a),r.length===0&&MX.append(j(`p`,`pr-empty`,e.length>0?`No open issues match these filters. Clear the search or pick All.`:hX(zX))),i&&[...MX.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===i)?.focus({preventScroll:!0}),RX&&!e.some(e=>e.key===RX)&&(RX=null,AX.dataset.detailOpen=`false`),HX?.update(zX),hZ()}function mZ(){let e=j(`div`,`issues-filters`),t=j(`div`,`issues-search-row`),n=j(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{kX.query=n.value,fZ()}),n.addEventListener(`change`,()=>gZ(`search`));let r=j(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let i=j(`div`,`issues-filters-panel`);i.id=`issues-filters-panel`,i.hidden=!0,r.addEventListener(`click`,()=>{gZ(`filters-toggle`),i.hidden=!i.hidden,r.setAttribute(`aria-expanded`,String(!i.hidden))}),t.append(n,r);let a=j(`div`,`issues-filter-row`);function o(e){let t=j(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),a.append(t),t}FX=o(`Repository`),FX.addEventListener(`change`,()=>{gZ(`filter`),kX.repo=FX?.value??``,fZ()}),IX=o(`Label`),IX.addEventListener(`change`,()=>{gZ(`filter`),kX.label=IX?.value??``,fZ()});let s=o(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=j(`option`,null,t);n.value=e??``,s.append(n)}s.addEventListener(`change`,()=>{gZ(`filter`),kX.sort=s.value,fZ()});let c=j(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=j(`label`,`issues-toggle`),r=j(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{gZ(`filter`),kX[e]=r.checked,fZ()}),n.append(r,` ${t}`),c.append(n)}return PX=j(`span`,`issues-filter-summary`),PX.setAttribute(`role`,`status`),i.append(a,c),e.append(t,PX,i),e}function hZ(){if(!AX||AX.closest(`[hidden]`)||document.hidden)return;let e=Date.now();LX&&(LX.textContent=zX?.lastSyncAt?`Synced ${CX(zX.lastSyncAt,e)}.`:`Not synced yet.`);for(let t of AX.querySelectorAll(`[data-issue-age]`))t.textContent=SX(t.dataset.issueAge??``,e);for(let t of AX.querySelectorAll(`[data-issue-ago]`))t.textContent=CX(t.dataset.issueAgo??``,e)}function gZ(e){UX?.({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`issues`,action:e}})}function _Z(e){UX=e}function vZ(e){if(AX)return AX;AX=j(`div`,`issues-content`),AX.dataset.detailOpen=`false`,e.append(AX),HX=IW(`issues`,AX);let t=j(`div`,`pr-columns issues-columns`),n=j(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),jX=j(`div`,`pr-scope-tabs issues-scope-tabs`),jX.setAttribute(`role`,`tablist`),jX.setAttribute(`aria-label`,`Issue scope`);for(let e of OX){let t=j(`span`,`issues-scope`);t.setAttribute(`role`,`presentation`);let n=j(`button`,`pr-scope-tab`,e.label);n.type=`button`,n.dataset.scope=e.id,n.setAttribute(`role`,`tab`),n.addEventListener(`click`,()=>{gZ(`scope`),kX.scope=e.id,fZ()});let r=j(`span`,`issues-scope-count`);r.dataset.scopeCount=e.id,t.append(n,r),jX.append(t)}MX=j(`nav`,`pr-queue`),MX.setAttribute(`aria-label`,`Issues`);let r=ZB(HX.control);return LX=j(`span`,`issues-sync`),LX.setAttribute(`role`,`status`),r.prepend(LX),r.append(HX.notice),n.append(XB(jX),mZ(),MX,r),NX=j(`section`,`pr-detail-host`),NX.setAttribute(`aria-label`,`Issue detail`),t.append(n,NX),AX.append(t),window.setInterval(hZ,3e4),fZ(),AX}function yZ(){VX&&bZ(),hZ()}function bZ(){if(yr(AX))VX=!0;else if(VX=!1,lZ(),kX.hasSession)pZ();else for(let e of MX?.querySelectorAll(`[data-issue-key]`)??[]){let t=BX.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&ZX(n,t,!1)}}function xZ(e){if(!e){for(let e of WX.values())clearTimeout(e.timeoutHandle),GX.set(e.issueKey,G);WX.clear();for(let e of KX.values())clearTimeout(e.timeoutHandle),JX.set(e.cacheKey,`${G} ${DX}`);KX.clear(),fZ()}}function SZ(e){let t=zX?.issues.find(e=>e.key===RX);zX=e,BX=new Map(e.issues.map(e=>[e.key,e]));let n=e.issues.find(e=>e.key===RX);n&&n.updatedAt!==t?.updatedAt&&rZ(n),fZ()}function CZ(e){let t=KX.get(e.requestId);t&&(clearTimeout(t.timeoutHandle),KX.delete(e.requestId),e.ok&&e.body!==null&&qX.set(t.cacheKey,e.body),(!e.ok||e.body===null)&&JX.set(t.cacheKey,e.error||`Could not load description. Select the issue to try again.`),uZ())}function wZ(e){if(typeof e.requestId!=`string`)return;let t=nZ(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`;GX.set(n,`Session "${r}" ${a}.${i}`);let o=zX?.issues.find(e=>e.key===n);o&&typeof e.sessionId==`string`&&(o.sessionId=e.sessionId),fZ();return}let r=typeof e.error==`string`&&e.error?e.error:`Could not open session.`;GX.set(n,r),uZ()}Wn(fZ);var TZ=4e3;function EZ({render:e,holdMs:t=TZ,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 DZ=null,OZ=null,kZ=null,AZ=null,jZ=`http://www.w3.org/2000/svg`,MZ=Ol({getAck:nee,setAck:yc,signature:()=>wu({posthog:DZ}),isLooking:()=>!yr(OZ)}),NZ=EZ({render:TQ}),PZ=new Set,FZ=null,IZ=new Map,LZ=new WeakMap,RZ=`this issue`,zZ=Pf(()=>OZ),BZ={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},VZ=[{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}],HZ=VZ.map(e=>e.track).join(` `),UZ=VZ.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),WZ=VZ.findIndex(e=>e.startsActionCluster)+1,GZ=3e4;function KZ(e){let t=j(`div`,e);return t.style.setProperty(`--radar-issue-grid`,HZ),t.style.setProperty(`--radar-issue-grid-phone`,UZ),t.style.setProperty(`--radar-issue-actions-start`,String(WZ)),t}function qZ(e,t){let n=j(`span`,`radar-issue-magnitudes`),r=!1;for(let i of VZ){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function JZ(e){return Number.isFinite(e)?String(e):`0`}function YZ(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${jf(Date.now()-e)}`}function XZ(e){return typeof e?.issueId==`string`?e.issueId:``}function ZZ(e,t){return[String(e??``),String(t??``)].join(`::`)}function QZ(e,t,n){let r=IZ.get(ZZ(e,t));if(!r||!r.copy.isConnected)return!1;let i=Vl(n);return i?(r.summary||(r.summary=j(`span`,`radar-issue-summary`),r.copy.insertBefore(r.summary,r.copy.querySelector(`.radar-issue-meta`))),r.summary.textContent=i,!0):(r.summary?.remove(),r.summary=null,!0)}function $Z(e,t,n){let r=XZ(e);if(!r)return;FZ?.dialog.close();let i=ep({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>tQ(e)});FZ={projectId:String(t??``),issueId:r,dialog:i},i.update(Hl(e))}function eQ(){if(!FZ)return;if(!FZ.dialog.isOpen()){FZ=null;return}let e=Ul(DZ,FZ.projectId,FZ.issueId);e&&FZ.dialog.update(Hl(e))}function tQ(e){let t=XZ(e);t&&hd(`get-radar-report`,{issueId:t},{timeoutMs:q}).then(n=>{n.ok?n.found?$f({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):$f({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):$f({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{$f({issueId:t,issueTitle:String(e.title??``),error:Od(n,q)})})}function nQ(){let e=j(`div`,`radar-issue-actions`),t=j(`span`,`radar-issue-action-status`);t.setAttribute(`role`,`status`),e.append(t);let n=[],r=null,i=()=>{r?.remove(),r=null},a=t=>{i(),r=t,e.append(t)},o=e=>{for(let t of n)t.disabled=e};return{addButton:(r,i,a)=>{let o=j(`button`,`radar-issue-action`,r);return o.type=`button`,o.title=i,o.addEventListener(`click`,e=>{e.stopPropagation(),a()}),n.push(o),e.insertBefore(o,t),o},request:(e,n,r,a,s,c=null)=>{NZ.begin(e),o(!0),i(),t.dataset.tone=`busy`,t.textContent=a;let l=(n,r)=>{o(!1),i(),t.dataset.tone=n,t.textContent=r,NZ.settle(e)};hd(n,r,{timeoutMs:GZ}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,Od(e,GZ)))},showFollowUp:a,wrap:e}}function rQ(e){let t=j(`button`,`radar-issue-action radar-open-trace`,`Open trace`);return t.type=`button`,t.title=`Open the session trace`,t.addEventListener(`click`,t=>{t.stopPropagation(),wQ(e)}),t}function iQ(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=nQ(),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`,()=>$Z(e,t,n)),!e.inFlight&&e.verdict&&XZ(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>tQ(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`&&AZ&&a(rQ(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`,()=>{tf({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 aQ(e){return ih()?RZ:e}function oQ(e){let t=LZ.get(e);t&&(e.title=t())}function sQ(){if(OZ)for(let e of OZ.querySelectorAll(`.radar-issue-reportable`))oQ(e)}oh(sQ);function cQ(e,t,n){e.classList.add(`radar-issue-reportable`),LZ.set(e,t),oQ(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function lQ(e,t,n){let r=j(`div`,`radar-issue`);r.dataset.severity=nu(e.change);let i=j(`span`,`radar-stripe`);i.setAttribute(`aria-hidden`,`true`);let a=j(`span`,`radar-change`,BZ[e.change??``]||String(e.change||`unknown`)),o=fr(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),s=j(`span`,`radar-metric`);s.append(j(`span`,`radar-metric-value`,JZ(e.occurrences)),j(`span`,`radar-metric-label`,`occ`));let c=j(`span`,`radar-metric`);c.append(j(`span`,`radar-metric-value`,JZ(e.users)),j(`span`,`radar-metric-label`,`users`));let l=ou(e.history),u=su(l,64,16),d=u?document.createElementNS(jZ,`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(jZ,`title`);e.textContent=lu(l);let t=document.createElementNS(jZ,`polyline`);t.setAttribute(`points`,u),d.append(e,t)}let f=Vl(e),p=j(`span`,`radar-issue-copy`);p.append(o);let m=null;f&&(m=j(`span`,`radar-issue-summary`),m.textContent=f,p.append(m)),IZ.set(ZZ(t,e.issueId),{copy:p,summary:m});let h=j(`span`,`radar-issue-meta`),g=ru(e);if(g!==null){let e=j(`span`,`radar-issue-seen`);e.title=new Date(g).toLocaleString(),zZ.track(e,g,Mf),h.append(e)}let _=iu(e);_&&h.append(j(`span`,`radar-issue-status`,_));let v=String(e.title||e.issueId);if(e.inFlight){let i=j(`span`,`radar-verdict`,`investigating`);i.dataset.verdict=`INVESTIGATING`,h.append(i);let a=typeof e.startedAt==`number`?e.startedAt:null;if(a!==null&&Number.isFinite(a)&&a>0){let e=j(`span`,`radar-issue-elapsed`);zZ.track(e,a,YZ),h.append(e)}XZ(e)&&cQ(r,()=>`Watch the investigation of ${aQ(v)}`,()=>$Z(e,t,n))}if(!e.inFlight&&e.verdict){let t=j(`span`,`radar-verdict`,Jl(e.verdict));t.dataset.verdict=e.verdict,h.append(t),XZ(e)&&cQ(r,()=>`View investigation report for ${aQ(v)}`,()=>tQ(e))}h.childElementCount>0&&p.append(h);let y=j(`span`,`radar-issue-trend`);d&&y.append(d);let b=cu(l);if(b){let e=j(`span`,`radar-delta`,`${b.direction===`up`?`+`:b.direction===`down`?`-`:`=`}${b.percent}%`);e.dataset.direction=b.direction,y.append(e)}let x={stripe:i,change:a,copy:p,occurrences:s,users:c,trend:y};return qZ(r,e=>x[e.columnId]),XZ(e)&&r.append(iQ(e,t,n)),r}var uQ=(e,t,n)=>_r(`radar`,e,t,n);function dQ(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${jf(e.staleMs)}`:``}function fQ(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=j(r,i,mu(t));o.title=String(t.name||``),e.append(o);let s=n?hu(t.host):``;s&&e.append(j(`span`,a,s))}function pQ(){let e=KZ(`radar-column-heads`);for(let t of VZ){if(!t.headText){e.append(j(`span`));continue}let n=j(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function mQ(e,t){let n=e.project,r=j(`div`,`radar-project`),i=Eu(n.issues),a=uu(i),o=j(`div`,`radar-project-head`);fQ(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=j(`div`,`radar-project-summary`);s.append(uQ(a.active===1?`active issue`:`active issues`,JZ(a.active))),s.append(uQ(`spiking`,JZ(a.spiking),a.spiking>0?`crit`:null)),s.append(uQ(`needs you`,JZ(a.needsHuman),a.needsHuman>0?`warn`:null));let c=dQ(e);if(c){let t=j(`span`,`radar-project-alert`,c);t.dataset.tone=e.error?`crit`:`warn`,s.append(t)}if(r.append(s),i.length===0)return r;r.append(pQ());let l=KZ(`radar-issues`);for(let e of i)l.append(lQ(e,n.projectId,mu(n)));return r.append(l),r}function hQ(e,t){let n=e.project,r=j(`div`,`radar-quiet-row`),i=j(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),fQ(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(j(`span`,`radar-quiet-count`,`0 issues`)),r}var gQ=(e,t)=>gr(`radar`,e,t);function _Q(){let e=j(`div`,`radar-issue`);return e.dataset.skeleton=``,qZ(e,e=>j(`span`,e.cellClass)),e}function vQ(){let e=KZ(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(_Q());return e}function yQ(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function bQ(e,t=`ready`){let n=gQ(`Errors`);if(t===`pending`)return n.append(vQ()),n;if(t===`placeholder`||e.length===0){let e=j(`p`,`radar-unconfigured`,$l(DZ)),t=Tp(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=yQ(DZ);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=j(`div`,`radar-global-tick`),i=Number(DZ?.intervalMinutes);zZ.track(r,DZ?.ts,e=>{let t=`polled ${Mf(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}=vu(e,Date.now(),{intervalMs:a}),c=gu(e);for(let e of o)n.append(mQ(e,c));if(s.length===0)return n;let l=j(`div`,`radar-quiet`);for(let e of s)l.append(hQ(e,c));return n.append(l),n}function xQ(e){let{addButton:t,request:n,wrap:r}=nQ();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{tQ({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`,()=>PZ.add(e.id))}),r}function SQ(e){let t=j(`div`,`radar-investigation`),n=j(`span`,`radar-verdict`,Jl(e.verdict));n.dataset.verdict=e.verdict;let r=fr(`radar-issue-title`,e.title,e.url),i=j(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=j(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=j(`a`,`radar-investigation-pr`,`fix PR`);t.href=e.prUrl,t.target=`_blank`,t.rel=`noopener`,t.title=e.prUrl,i.append(t)}if(t.append(n),e.mode===`fix`){let e=j(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=j(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=j(`span`,`radar-investigation-time`,Mf(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(xQ(e)),t}function CQ(e){let t=gQ(`Investigations`,`completed, not yet archived`),n=j(`div`,`radar-investigations`);for(let t of e)n.append(SQ(t));return t.append(n),t}function wQ(e){AZ&&AZ(e)}function TQ(){if(!OZ)return;OZ.textContent=``,IZ.clear(),zZ.reset();let e=vr(DZ),t=yu(DZ,PZ),n=tu(DZ,e.length);OZ.append(bQ(e,n)),t.length>0&&OZ.append(CQ(t))}function EQ(){NZ.request()}function DQ(){kZ&&kZ(MZ.refresh())}function OQ(){MZ.acknowledge(),DQ()}function kQ(e){kZ=e,DQ()}function AQ(e){AZ=e}function jQ(e){if(OZ)return OZ;let t=j(`div`,`radar-content`);return e.appendChild(t),OZ=t,zZ.ensure(),TQ(),t}function MQ(e){DZ=e,bu(DZ,PZ),EQ(),DQ(),eQ()}function NQ(e){let t=Ul(DZ,e.projectId,e.issueId)?.inFlight===!0;if(!Wl(DZ,e))return;eQ();let n=Ul(DZ,e.projectId,e.issueId);t&&QZ(e.projectId,e.issueId,n)||EQ()}function PQ(e){FZ?.dialog.isOpen()&&Kl(FZ,e)&&FZ.dialog.update(Gl(e))}function FQ(e){ql(DZ,e)?(eQ(),EQ(),DQ()):PQ(e)}var IQ=Mh({requestPrefix:`session-setup`,dialogClass:`dialog coherence-journal-drawer session-setup-dialog`,titleText:`Session setup`,unavailableLabel:`Session setup unavailable`,timeoutMs:15e3});function LQ(e){let t=j(`ul`,`session-setup-list`);return t.append(...e.map(e=>j(`li`,null,e))),t}function RQ(e,t){e.replaceChildren();function n(t,n){if(n.length===0)return;let r=gr(`session-setup`,t);r.append(...n),e.append(r)}n(`Model`,t.model?[j(`p`,null,t.model)]:[]),n(`Plugins`,t.plugins.map(e=>{let t=j(`div`,`session-setup-plugin`);return t.append(j(`h3`,null,e.name)),e.skills.length>0&&t.append(j(`p`,`session-setup-label`,`Skills`),LQ(e.skills)),e.agents.length>0&&t.append(j(`p`,`session-setup-label`,`Agents`),LQ(e.agents)),t})),n(`MCP servers`,t.mcpServers.length>0?[LQ(t.mcpServers)]:[]),n(`Hooks`,[...t.hookEvents.map(e=>{let t=j(`p`,`session-setup-hook`);return t.append(j(`span`,null,e.event),j(`span`,`session-setup-label`,`${e.runCount} runs`)),t}),...t.hookCommands.map(e=>j(`pre`,`coherence-command`,e))]),n(`Skills`,t.skills.length>0?[LQ(t.skills)]:[]),n(`Agents`,t.agents.length>0?[LQ(t.agents)]:[])}function zQ(e){let t=j(`p`,`coherence-journal-status`,`Loading session setup`);t.setAttribute(`role`,`status`);let n=j(`div`,`session-setup-sections`);IQ.open({sessionId:e,status:t,body:[t,n],parts:{sections:n},buildRequest:t=>({type:`session-setup`,id:e,requestId:t})})}function BQ(e){let t=IQ.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;RQ(n,e.setup),t.status.textContent=n.childElementCount>0?``:`No session setup recorded yet`,t.status.hidden=n.childElementCount>0}function VQ(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 HQ=null,UQ=null,WQ=null,GQ=null,KQ=null,qQ=null,JQ=-1,YQ=null,XQ={isRightToLeft:!1,arcProgress:0},ZQ=1,QQ=3;function $Q(){if(!HQ||YQ===null)return;let e=ls({viewportWidthPx:document.documentElement.clientWidth,viewportHeightPx:document.documentElement.clientHeight,verticalProgress:YQ,...XQ});lr(HQ,ds(e,ZQ,window.devicePixelRatio))}function e$(){qQ!==null&&(clearTimeout(qQ),qQ=null)}function t$(e=Ys()){return $o({isEnabled:e,hasReducedMotion:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,isPhone:Jy(),options:zc()})}function n$(e){e.onanimationend=null,e.style.animation=`none`,GQ&&(GQ.style.animation=`none`),e.hidden=!0}function r$(e,t){if(!HQ||!UQ||!WQ||!GQ||t$())return;let n=zc();e$();let r=Qo(n,JQ,Math.random,t);if(n$(HQ),!r){qQ=setTimeout(()=>r$(!1),1e3);return}YQ=r.verticalProgress,XQ={isRightToLeft:r.isRightToLeft,arcProgress:r.arcProgress},ZQ=n.flyingAnimalsScale,$Q();let i=Wo[r.animalIndex];UQ.className=`nyan-sprite ${i.sprite}`,WQ.className=`nyan-trail ${i.trail}`,JQ=r.animalIndex,KQ?.classList.remove(`is-booped`),HQ.hidden=!1,HQ.offsetWidth,HQ.style.animation=`nyan-fly ${r.durationSeconds}s linear`,GQ.style.animation=`nyan-trail-hold ${r.durationSeconds}s linear`,e&&(HQ.style.animationDelay=`-${r.firstDelaySeconds}s`,GQ.style.animationDelay=`-${r.firstDelaySeconds}s`),HQ.onanimationend=e=>{HQ&&e.target===HQ&&(n$(HQ),qQ=setTimeout(()=>r$(!1),r.gapMs))}}function i$(){if(HQ&&GQ&&KQ){KQ.classList.remove(`is-booped`),KQ.offsetWidth,KQ.classList.add(`is-booped`);for(let e of[...HQ.getAnimations(),...GQ.getAnimations()])e.playbackRate=QQ}}function a$(){if(HQ||t$())return;HQ=document.createElement(`div`),HQ.className=`nyan-flight`,HQ.setAttribute(`aria-hidden`,`true`);let e=document.createElement(`div`);e.className=`nyan-trail-window`,GQ=document.createElement(`div`),GQ.className=`nyan-trail-hold`,WQ=document.createElement(`div`),GQ.append(WQ),e.append(GQ),UQ=document.createElement(`div`),KQ=document.createElement(`div`),KQ.className=`nyan-boop`,KQ.append(UQ),KQ.addEventListener(`pointerdown`,i$),HQ.append(e,KQ),document.body.appendChild(HQ),window.addEventListener(`resize`,$Q),window.addEventListener(`orientationchange`,$Q),r$(!0)}function o$(e){a$(),r$(!1,e)}function s$(){e$(),window.removeEventListener(`resize`,$Q),window.removeEventListener(`orientationchange`,$Q),HQ?.remove(),HQ=null,UQ=null,WQ=null,GQ=null,KQ=null,JQ=-1,YQ=null}var c$=!1;function l$(e){let t=document.documentElement;if(c$||(c$=!0,Yy(()=>l$(Ys())),window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,()=>l$(Ys()))),e){if(t.dataset.flyingAnimals=`true`,t$(e)){s$();return}a$()}else delete t.dataset.flyingAnimals,s$()}function u$(){let e=j(`div`),t=j(`p`,`flying-animals-status`);t.id=`flying-animals-gallery-status`,t.setAttribute(`role`,`status`);let n=j(`div`,`flying-animals-gallery`);n.setAttribute(`aria-label`,`Animal gallery`);let r=[],i=()=>{let e=t$(),n=Xo(zc().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=zc();for(let e of Wo){let o=j(`article`,`flying-animal-tile`),s=Uc(e),c=j(`label`,`flying-animal-include`),l=j(`input`,`settings-view-checkbox`);l.type=`checkbox`,l.checked=!a.flyingAnimalsExcludedSprites.includes(e.sprite),l.setAttribute(`aria-label`,`Include ${e.name}`),l.addEventListener(`change`,()=>{let t=new Set(zc().flyingAnimalsExcludedSprites);l.checked&&t.delete(e.sprite),l.checked||t.add(e.sprite),Rc([...t]),l$(Ys()),i()}),c.append(l,document.createTextNode(`Include`));let u=j(`button`,`btn-dialog btn-dialog-cancel`,`Fly now`);u.type=`button`,u.setAttribute(`aria-describedby`,t.id),u.addEventListener(`click`,()=>o$(e.sprite)),r.push(u),o.append(s,j(`h2`,`flying-animal-name`,e.name),c,u),n.append(o)}return i(),e.append(t,n),e}var d$=`johncwaters/glimmervoid`,f$={maxConcurrentInvestigations:Math.ceil,minUsersToInvestigate:Math.ceil,userEscalationThreshold:Math.ceil,trafficSpikeMinUsers:Math.ceil,trafficSpikeBaselineDays:Math.floor};[...Object.entries(f$).map(([e,t])=>({path:[`posthog`,e],min:1,round:t}))];var p$=Object.freeze([`auto`,`calculate`,`display`]),m$=Object.freeze([`codex`,`grok`]),h$=Object.freeze([`dailyUsd`,`monthlyUsd`]),g$=e=>t({error:`${e} must be a boolean`}).optional(),_$=(e,t=!1)=>{let n=l({error:`${e} must be a string`});return(t?n.transform(e=>e.trim()):n).optional()},v$=e=>e.label?e.label:e.max==null?e.exclusiveMin?`greater than ${e.min}`:`at least ${e.min}`:`between ${e.min} and ${e.max}`,y$=(e,t=k)=>c({error:`${e} must be ${v$(t)}`}).finite().refine(e=>!t.exclusiveMin||e>t.min,{message:`${e} must be ${v$(t)}`}).refine(e=>t.exclusiveMin||e>=t.min,{message:`${e} must be ${v$(t)}`}).refine(e=>t.max==null||e<=t.max,{message:`${e} must be ${v$(t)}`}).optional(),b$=(e,t)=>y$(e,t).unwrap().int({error:`${e} must be a whole number ${v$(t)}`}).optional(),x$=(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(),S$=(e,t)=>g(t,{error:`${e} must be an object`}).nullable().optional(),C$=Object.freeze([`claude`,`codex`]),w$=Object.freeze([`release`,`main`]),T$=Object.freeze([`report`,`fix`]);S$(`changeMap`,{narrator:S$(`changeMap.narrator`,{enabled:g$(`changeMap.narrator.enabled`),engine:u(C$,{error:`changeMap.narrator.engine must be one of ${C$.join(`, `)}`}).optional(),model:_$(`changeMap.narrator.model`,!0),timeoutSeconds:x$(`changeMap.narrator.timeoutSeconds`,an)})}),g({refiner:g({enabled:g$(`taskTitle.refiner.enabled`),model:_$(`taskTitle.refiner.model`,!0),minIntervalSeconds:y$(`taskTitle.refiner.minIntervalSeconds`,{min:0}),timeoutSeconds:y$(`taskTitle.refiner.timeoutSeconds`,jt)},{error:`taskTitle.refiner must be an object`}).nullable().optional()},{error:`taskTitle must be an object`}).nullable().optional();var E$={enabled:g$(`branchGc.enabled`),worktrees:g$(`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:g$(`branchGc.dryRun`),staleDays:y$(`branchGc.staleDays`,Mt),deleteUnmerged:g$(`branchGc.deleteUnmerged`),intervalMs:y$(`branchGc.intervalMs`,Nt)},D$=g(E$,{error:`branchGc must be an object`});S$(`branchGc`,E$),D$.omit({prefixes:!0,dryRun:!0,worktrees:!0}).nullable().optional(),Object.freeze([`enabled`,`deleteUnmerged`]),Object.freeze([`staleDays`,`intervalMs`]),S$(`postTurnChecks`,{mode:u(T$,{error:`postTurnChecks.mode must be one of report, fix`}).optional()}),S$(`visions`,{enabled:g$(`visions.enabled`),autoFix:g$(`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:S$(`visions.dispatch`,{enabled:g$(`visions.dispatch.enabled`),model:_$(`visions.dispatch.model`,!0),quietMs:b$(`visions.dispatch.quietMs`,Pt),cooldownMs:b$(`visions.dispatch.cooldownMs`,Ft),maxPerHour:b$(`visions.dispatch.maxPerHour`,It),activityMaxPerHour:b$(`visions.dispatch.activityMaxPerHour`,Lt),dispatchTimeoutSeconds:b$(`visions.dispatch.dispatchTimeoutSeconds`,Rt)}),intent:S$(`visions.intent`,{threadTtlMs:b$(`visions.intent.threadTtlMs`,zt)})}),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(),S$(`teamReview`,{enabled:g$(`teamReview.enabled`),autoRebaseMyPrs:g$(`teamReview.autoRebaseMyPrs`),keepMergeableEnabled:g$(`teamReview.keepMergeableEnabled`),mergeQueueEnabled:g$(`teamReview.mergeQueueEnabled`),keepMergeableTimeoutMinutes:x$(`teamReview.keepMergeableTimeoutMinutes`,on),org:_$(`teamReview.org`,!0),team:_$(`teamReview.team`,!0),skill:_$(`teamReview.skill`,!0),reReviewAfterHours:y$(`teamReview.reReviewAfterHours`),skipIdleAfterDays:y$(`teamReview.skipIdleAfterDays`)}),S$(`benchmarks`,{enabled:g$(`benchmarks.enabled`)}),S$(`coherence`,{enabled:g$(`coherence.enabled`)});var O$={intervalMinutes:Bt,maxConcurrentInvestigations:Vt,investigationTimeoutSeconds:Ht,fixTimeoutSeconds:qt,minUsersToInvestigate:Ut,userEscalationThreshold:Wt,recurrenceWindowDays:Gt,transientRecurrenceLimit:Kt,trafficSpikeMultiplier:Jt,trafficSpikeMinUsers:Yt,trafficSpikeCooldownMinutes:Xt,trafficSpikeBaselineDays:Zt};S$(`posthog`,{enabled:g$(`posthog.enabled`),recurrenceDedupe:g$(`posthog.recurrenceDedupe`),trafficSpikeEnabled:g$(`posthog.trafficSpikeEnabled`),autoFix:g$(`posthog.autoFix`),host:_$(`posthog.host`,!0).refine(e=>e==null||!e||/^https?:\/\//i.test(e),{message:`posthog.host must be an http(s) URL`}),apiKey:_$(`posthog.apiKey`,!0),repoPath:_$(`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(O$).map(([e,t])=>[e,Object.hasOwn(f$,e)?b$(`posthog.${e}`,t):y$(`posthog.${e}`,t)]))}),`${p$.join(`, `)}`,Object.fromEntries(m$.map(e=>[e,g$(`usage.vendors.${e}`)])),Object.fromEntries(h$.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()])),S$(`telegram`,{botToken:_$(`telegram.botToken`,!0),chatId:_$(`telegram.chatId`,!0)}),g({enabled:g$(`ingest.enabled`)},{error:`ingest must be an object`}).passthrough().optional(),g({enabled:g$(`trace.enabled`)},{error:`trace must be an object`}).optional(),g({enabled:g$(`planReview.enabled`)},{error:`planReview must be an object`}).optional();var k$=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(),A$={unguardedRepos:k$(`guardrails.unguardedRepos`),blockedPaths:k$(`guardrails.blockedPaths`),unreadablePaths:k$(`guardrails.unreadablePaths`)};g(A$,{error:`guardrails must be an object`}).passthrough().optional();var j$={enabled:g$(`telemetry.enabled`)};g(j$,{error:`telemetry must be an object`}).strict().optional(),g(j$,{error:`telemetry must be an object`}).passthrough().optional();var M$={scope:`browser`,access:`editable`,takesEffect:`now`},N$={scope:`browser`,access:`advanced`,takesEffect:`now`},X={scope:`machine`,access:`editable`,takesEffect:`now`},P$={scope:`machine`,access:`editable`,takesEffect:`new-sessions`},F$={scope:`machine`,access:`readout`,takesEffect:`now`},Z={scope:`machine`,access:`file-only`},I$=1e3,L$=60,R$=60,z$=I$*L$,B$=z$*R$,V$=B$*24,H$={label:`investigations`,storedPerDisplay:1},U$={label:`sessions`,storedPerDisplay:1},W$={label:`recurrences`,storedPerDisplay:1},G$={label:`actions`,storedPerDisplay:1},K$={label:`seconds`,storedPerDisplay:1},q$={label:`minutes`,storedPerDisplay:1},J$={label:`hours`,storedPerDisplay:1},Y$={label:`days`,storedPerDisplay:1},X$={label:`seconds`,storedPerDisplay:I$,storedLabel:`ms`},Z$={label:`minutes`,storedPerDisplay:z$,storedLabel:`ms`},Q$={label:`minutes`,storedPerDisplay:L$,storedLabel:`seconds`},$$={label:`hours`,storedPerDisplay:B$,storedLabel:`ms`},e1={label:`hours`,storedPerDisplay:R$,storedLabel:`minutes`},t1={label:`days`,storedPerDisplay:V$,storedLabel:`ms`},n1={label:`USD`,storedPerDisplay:1},r1={label:`users`,storedPerDisplay:1},i1={label:`reviews per hour`,storedPerDisplay:1},a1={label:`times`,storedPerDisplay:1},Q=`A tuning knob kept out of the Settings view; the default suits almost every install.`,o1=`A diagnostic switch kept out of the Settings view; change it in config.json while investigating.`,s1=`Changes how the server process or its worktrees behave, so it is set in config.json with a restart or new sessions in mind.`,c1=`A structured value with no dashboard control; edit it in config.json.`,l1=`Never editable from the dashboard by rule; edit it in config.json.`;function u1(e){return e.map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}))}var d1=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.`}}),f1=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`,...M$},{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,...M$},{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,...M$},{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,...M$},{id:`animals-min-gap`,path:`pref:flyingAnimalsMinGapSeconds`,title:`Time between flights: minimum`,description:`Shortest pause between flights.`,control:`number`,integer:!1,step:.1,range:wt,unit:K$,maximumSettingId:`animals-max-gap`,keywords:[`animals`,`frequency`],defaultValue:Dt.flyingAnimalsMinGapSeconds,...N$},{id:`animals-max-gap`,path:`pref:flyingAnimalsMaxGapSeconds`,title:`Time between flights: maximum`,description:`Longest pause between flights.`,control:`number`,integer:!1,step:.1,range:wt,unit:K$,keywords:[`animals`,`frequency`],defaultValue:Dt.flyingAnimalsMaxGapSeconds,...N$},{id:`animals-min-duration`,path:`pref:flyingAnimalsMinDurationSeconds`,title:`Flight duration: minimum`,description:`Shortest flight, for faster animals.`,control:`number`,integer:!1,step:.1,range:Tt,unit:K$,maximumSettingId:`animals-max-duration`,keywords:[`animals`,`speed`],defaultValue:Dt.flyingAnimalsMinDurationSeconds,...N$},{id:`animals-max-duration`,path:`pref:flyingAnimalsMaxDurationSeconds`,title:`Flight duration: maximum`,description:`Longest flight, for slower animals.`,control:`number`,integer:!1,step:.1,range:Tt,unit:K$,keywords:[`animals`,`speed`],defaultValue:Dt.flyingAnimalsMaxDurationSeconds,...N$},{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:Et,unit:a1,keywords:[`animals`,`size`],defaultValue:Dt.flyingAnimalsScale,...N$},{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:Dt.flyingAnimalsOnPhone,...N$}]},{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,...M$},{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`,...M$},{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,...M$}]},{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:`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`,...F$},{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`,...F$}]},{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,...P$},{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,...P$},{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:u1(T$),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.`,...P$},{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.`,...P$},{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.`,...P$}]},{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`,...F$},{id:`update-channel`,path:`updateChannel`,title:`Channel`,description:`Track tagged releases or the upstream of the checked-out branch.`,control:`select`,options:u1(w$),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:$t,unit:Y$,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:nn,unit:n1,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:nn,unit:n1,keywords:[`spend`,`alert`],defaultValue:null,integer:!1,nullable:!0,zeroIsNull:!0,step:.01,...X}]},{id:`lanes-visions`,level:`lanes`,title:`Visions`,description:`Editor-buffer findings, bounded model comments, and the machine-context ingest behind them.`,legacyIds:[`lanes`,`visions`,`lanes-ingest`,`ingest`],settings:[{id:`visions-enabled`,path:`visions.enabled`,title:`Enable Visions`,description:`Set up supported editors detected on this machine, then show their buffer findings in the Visions view.`,control:`toggle`,keywords:[`editor`,`findings`,`lsp`],defaultValue:!1,...X},{id:`visions-dispatch-enabled`,path:`visions.dispatch.enabled`,title:`Enable model comments`,description:`Start bounded review sessions for local editor buffers.`,control:`toggle`,keywords:[`review`,`dispatch`],defaultValue:!1,...X},{id:`visions-max-per-hour`,path:`visions.dispatch.maxPerHour`,title:`Max per hour`,description:`Maximum review sessions dispatched per hour. One slot is reserved for edit reviews; activity-driven reviews take the rest, up to the activity cap set by visions.dispatch.activityMaxPerHour.`,control:`number`,range:k,unit:i1,keywords:[`rate limit`,`reviews`],defaultValue:6,...X},{id:`visions-model`,path:`visions.dispatch.model`,title:`Model override`,description:`Leave blank to use the opus model alias.`,control:`text`,keywords:[`claude`,`override`],defaultValue:``,...X},{id:`visions-projects`,path:`visions.projects`,title:`Projects`,description:`Clear every selection, including unavailable projects, to accept buffers from every configured project.`,control:`projects`,keywords:[`repositories`,`filter`],defaultValue:[],...X},{id:`visions-auto-fix`,path:`visions.autoFix`,title:`Apply tier 1 fixes`,description:`Allow Visions to edit eligible open Markdown buffers, including inactive buffers, without asking.`,control:`toggle`,keywords:[`automatic`,`edits`],danger:!0,warning:`Enabling this control lets Visions edit eligible buffers without a carbon unit present.`,defaultValue:!1,...X},{id:`ingest-enabled`,path:`ingest.enabled`,title:`Enable machine context ingest`,description:`Enable the local activity feed behind Visions. Turning Visions on enables ingest unless ingest.enabled is explicitly false.`,control:`toggle`,keywords:[`events`,`activity`,`ingest`],defaultValue:!1,...X}]},{id:`lanes-posthog`,level:`lanes`,title:`PostHog`,description:`Error monitoring, investigations and traffic-spike alerts.`,legacyIds:[`posthog`],settings:[{id:`posthog-enabled`,path:`posthog.enabled`,title:`Enable PostHog monitoring`,description:`Poll PostHog error tracking and investigate issues that move.`,control:`toggle`,keywords:[`errors`,`monitoring`],defaultValue:!1,...X},{id:`posthog-host`,path:`posthog.host`,title:`Host`,description:`PostHog cloud or self-hosted HTTP URL.`,control:`text`,keywords:[`url`,`server`],defaultValue:`https://us.posthog.com`,...X},{id:`posthog-api-key`,path:`posthog.apiKey`,title:`Personal API key`,description:`Credential with read access to PostHog projects. When GLIMMERVOID_POSTHOG_API_KEY supplies it, this field is read-only.`,control:`password`,keywords:[`credential`,`token`],defaultValue:``,...X},{id:`posthog-projects`,path:`posthog.projects`,title:`Projects`,description:`PostHog project ids to monitor. config.json holds "all" or an array of ids, and an empty array monitors no project. In Settings that empty array shows as none, and an empty list saves "all".`,control:`list`,keywords:[`project ids`,`filter`],defaultValue:`all`,valueKind:`posthog-projects`,listPlaceholder:`Project id`,listEmptyText:`Every project the key can read.`,...X},{id:`posthog-interval`,path:`posthog.intervalMinutes`,title:`Poll interval`,description:`Delay between PostHog polling passes.`,control:`number`,integer:!1,step:`any`,range:k,unit:q$,keywords:[`refresh`,`schedule`],defaultValue:15,...X},{id:`posthog-max-investigations`,path:`posthog.maxConcurrentInvestigations`,title:`Max concurrent investigations`,description:`Maximum investigation sessions running together.`,control:`number`,range:k,unit:H$,keywords:[`parallel`,`workers`],defaultValue:2,...X},{id:`posthog-min-users`,path:`posthog.minUsersToInvestigate`,title:`Min users to investigate`,description:`Minimum affected users for a new issue investigation. Regressions, worsening issues and eligible error spikes bypass this minimum.`,control:`number`,range:k,unit:r1,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:k,unit:J$,keywords:[`review`,`delay`],defaultValue:24,integer:!1,step:.5,...X},{id:`team-review-skip-idle-after-days`,path:`teamReview.skipIdleAfterDays`,title:`Skip PRs idle for`,description:`Leave pull requests without GitHub activity for this long out of automatic review.`,control:`number`,range:k,unit:Y$,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:q$,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:U$,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`,...F$}]},{id:`lanes-benchmarks`,level:`lanes`,title:`Benchmarks`,description:`Compare agent setups on frozen cases from the suites in the benchmarks folder of the Glimmervoid home.`,legacyIds:[`benchmarks`],settings:[{id:`benchmarks-enabled`,path:`benchmarks.enabled`,title:`Enable benchmarks`,description:`Show the Bench tab. Nothing runs until you choose Mine or Run there.`,control:`toggle`,keywords:[`eval`,`arms`,`recall`,`compare`],defaultValue:!1,...X}]},{id:`lanes-coherence`,level:`lanes`,title:`Coherence (experimental)`,description:`Per-session Coherence hook status and decision journal for agent sessions.`,settings:[{id:`coherence-enabled`,path:`coherence.enabled`,title:`Show session Coherence`,description:`Shows each session's Coherence hook status and decision journal when the repository installed @posthog/coherence 1.8 or newer. Off by default.`,control:`toggle`,keywords:[`experimental`,`coherence`,`journal`,`decisions`],defaultValue:!1,...X}]},{id:`lanes-change-map`,level:`lanes`,title:`Change map`,description:`Optional model narration for deterministic change facts.`,legacyIds:[`change-map`],settings:[{id:`change-map-narrator-enabled`,path:`changeMap.narrator.enabled`,title:`Enable narration`,description:`Add cited model claims to the change map.`,control:`toggle`,keywords:[`review`,`claims`],defaultValue:!1,...X},{id:`change-map-narrator-engine`,path:`changeMap.narrator.engine`,title:`Narrator engine`,description:`CLI used to generate change map claims.`,control:`select`,options:u1(C$),keywords:[`claude`,`codex`],defaultValue:`claude`,...X},{id:`change-map-narrator-model`,path:`changeMap.narrator.model`,title:`Narrator model`,description:`Blank uses the engine default: haiku for Claude, the configured Codex model for Codex.`,control:`text`,keywords:[`claude`,`codex`,`haiku`],defaultValue:``,...X}]},{id:`machine-privacy`,level:`machine`,title:`Privacy`,description:`What Glimmervoid sends about itself.`,legacyIds:[`privacy`,`telemetry`],settings:[{id:`telemetry-enabled`,path:`telemetry.enabled`,title:`Send anonymous usage and error data`,description:`Version, platform, app starts, daily activity, session starts and ends with agent kind, exit kind and duration, errors as their type, error code and scrubbed stack frames, per session token counts, models and estimated costs from the usage scan, under a random install id. Never error messages, paths, repository or branch names, prompts, objectives or terminal output. GLIMMERVOID_TELEMETRY=0, DO_NOT_TRACK=1 or CI=true turn it off regardless.`,control:`toggle`,keywords:[`telemetry`,`analytics`,`tracking`,`opt out`],defaultValue:!0,...X}]},{id:`browser-shortcuts`,level:`browser`,title:`Shortcuts and about`,description:`Keyboard reference and build information.`,legacyIds:[`shortcuts`],settings:[]}]),p1=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:o1,...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:Ot,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:kt,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:o1,...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:o1,...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:o1,...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:o1,...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:s1,...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:s1,...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:s1,...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:s1,...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:s1,...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:l1,...Z},{id:`file-port`,path:`port`,title:`Local port`,group:`machine-detection-sessions`,description:`Port used by the local dashboard listener.`,control:`number`,range:At,unit:{label:`port`,storedPerDisplay:1},keywords:[`server`,`listener`],defaultValue:3e3,takesEffect:`restart`,fileOnlyReason:l1,...Z},{id:`file-notify-debounce-ms`,path:`notifyDebounceMs`,title:`Notification debounce`,group:`machine-detection-sessions`,description:`Delay used to coalesce notification state changes.`,control:`number`,integer:!1,step:`any`,range:k,unit:X$,keywords:[`timer`,`alerts`],defaultValue:3e3,takesEffect:`new-sessions`,fileOnlyReason:Q,...Z},{id:`file-phone-escalation-ms`,path:`phoneEscalationMs`,title:`Phone escalation delay`,group:`machine-detection-sessions`,description:`Delay before off-dashboard escalation.`,control:`number`,integer:!1,step:`any`,range:k,unit:Z$,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:c1,...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:s1,...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:s1,...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:s1,...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:s1,...Z},{id:`file-branch-gc-stale-days`,path:`branchGc.staleDays`,title:`Branch stale days`,group:`machine-detection-sessions`,description:`Age threshold for orphan branch cleanup when unmerged deletion is on.`,control:`number`,integer:!1,step:`any`,range:k,unit:Y$,keywords:[`git`,`retention`],defaultValue:14,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-branch-gc-interval-ms`,path:`branchGc.intervalMs`,title:`Branch cleanup interval`,group:`machine-detection-sessions`,description:`Delay between branch cleanup passes.`,control:`number`,integer:!1,step:`any`,range:k,unit:$$,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:l1,...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:Ct,unit:K$,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:jt,unit:K$,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:Qt,unit:q$,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:rn.warehouseRetainDays,unit:Y$,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:rn.sessionBlockHours,unit:J$,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:u1(p$),keywords:[`pricing`,`estimate`],defaultValue:`auto`,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-usage-extra-projects-dirs`,path:`usage.extraProjectsDirs`,title:`Extra transcript folders`,group:`machine-usage`,description:`Absolute paths of additional Claude projects folders the usage scan reads.`,control:`list`,keywords:[`transcripts`,`folders`,`scan`],defaultValue:[],takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-change-map-narrator-timeout`,path:`changeMap.narrator.timeoutSeconds`,title:`Narrator timeout`,group:`lanes-change-map`,description:`Maximum time allowed for one narration.`,control:`number`,range:an,unit:K$,keywords:[`deadline`,`narration`],defaultValue:90,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-quiet-delay`,path:`visions.dispatch.quietMs`,title:`Quiet delay`,group:`lanes-visions`,description:`Editor quiet time before a scheduled review. Saves and blank-line boundaries can dispatch immediately, subject to the other review limits.`,control:`number`,range:k,unit:X$,keywords:[`debounce`,`idle`],defaultValue:3e4,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-cooldown`,path:`visions.dispatch.cooldownMs`,title:`Cooldown`,group:`lanes-visions`,description:`Minimum delay between reviews of the same document. Initial orientation reviews bypass this delay.`,control:`number`,range:k,unit:Z$,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:Ct,unit:i1,keywords:[`rate limit`,`events`],defaultValue:2,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-dispatch-timeout`,path:`visions.dispatch.dispatchTimeoutSeconds`,title:`Dispatch timeout`,group:`lanes-visions`,description:`Maximum time allowed for one review session.`,control:`number`,range:k,unit:Q$,keywords:[`deadline`,`review`],defaultValue:180,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-visions-intent-thread-ttl`,path:`visions.intent.threadTtlMs`,title:`Intent thread lifetime`,group:`lanes-visions`,description:`How long an intent thread nobody advanced stays live before it retires.`,control:`number`,range:k,unit:t1,keywords:[`intent`,`decay`,`thread`],defaultValue:2592e5,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-terminal`,path:`ingest.sources.terminal.enabled`,title:`Terminal output source`,group:`lanes-ingest`,description:`Include terminal output in the ingest feed.`,control:`toggle`,keywords:[`pty`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-agent-logs`,path:`ingest.sources.agentLogs.enabled`,title:`Agent logs source`,group:`lanes-ingest`,description:`Include local agent logs in the ingest feed.`,control:`toggle`,keywords:[`transcript`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-git`,path:`ingest.sources.git.enabled`,title:`Git activity source`,group:`lanes-ingest`,description:`Include local Git activity in the ingest feed.`,control:`toggle`,keywords:[`commits`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-fs`,path:`ingest.sources.fs.enabled`,title:`File changes source`,group:`lanes-ingest`,description:`Include watched file changes in the ingest feed.`,control:`toggle`,keywords:[`filesystem`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-shell-history`,path:`ingest.sources.shellHistory.enabled`,title:`Shell history source`,group:`lanes-ingest`,description:`Include local shell history in the ingest feed.`,control:`toggle`,keywords:[`commands`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-ingest-editor`,path:`ingest.sources.editor.enabled`,title:`Editor events source`,group:`lanes-ingest`,description:`Include local editor events in the ingest feed.`,control:`toggle`,keywords:[`buffers`,`source`],defaultValue:!1,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-investigation-timeout`,path:`posthog.investigationTimeoutSeconds`,title:`Investigation timeout`,group:`lanes-posthog`,description:`Maximum time allowed for one investigation.`,control:`number`,integer:!1,step:`any`,range:k,unit:Q$,keywords:[`deadline`,`session`],defaultValue:900,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-escalation`,path:`posthog.userEscalationThreshold`,title:`Escalation threshold`,group:`lanes-posthog`,description:`Affected-user count that escalates an issue.`,control:`number`,range:k,unit:r1,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:qt,unit:Q$,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:Jt,unit:a1,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:Yt,unit:r1,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:Ct,unit:e1,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:Zt,unit:Y$,keywords:[`history`,`analytics`],defaultValue:7,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-recurrence-dedupe`,path:`posthog.recurrenceDedupe`,title:`Deduplicate recurring issues`,group:`lanes-posthog`,description:`Treat an issue seen again inside the recurrence window as the same investigation instead of opening a new one.`,control:`toggle`,keywords:[`recurrence`,`dedupe`,`issues`],defaultValue:!0,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-recurrence-window-days`,path:`posthog.recurrenceWindowDays`,title:`Recurrence window`,group:`lanes-posthog`,description:`How far back an issue counts as a recurrence of an investigated one.`,control:`number`,integer:!1,step:`any`,range:k,unit:Y$,keywords:[`recurrence`,`window`],defaultValue:7,takesEffect:`now`,fileOnlyReason:Q,...Z},{id:`file-posthog-transient-recurrence-limit`,path:`posthog.transientRecurrenceLimit`,title:`Transient recurrence limit`,group:`lanes-posthog`,description:`How many times a transient issue may recur before it is investigated again.`,control:`number`,integer:!1,step:`any`,range:k,unit:W$,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:c1,...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:G$,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}]),m1=Object.freeze({sections:f1,fileOnly:p1}),h1=Object.freeze(Object.fromEntries(f1.flatMap(e=>(e.legacyIds??[]).map(t=>[t,e.id])))),g1=Object.freeze(f1.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 _1(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 v1(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function y1(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 b1(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)]=_1(n)}function x1(e){return e.flatMap(e=>e.settings)}function S1(e){return e.access===`file-only`||e.control===`readonly`}function C1(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 w1=6;function T1(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):[]:_1(t)}function E1(e){return e.control===`number`&&(e.unit?.storedPerDisplay??1)!==1}function D1(e){return String(Number(e.toFixed(w1)))}function O1(e,t){let n=T1(e,t);return e.valueKind===`posthog-projects`&&Array.isArray(n)?n.join(`, `)||`all`:typeof n==`number`&&e.unit?`${D1(n)} ${e.unit.label}`:JSON.stringify(n??null)}function k1(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 C1(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 _1(t)}function A1(e){return String(e||``).toLowerCase().match(/[a-z0-9]+/g)||[]}var j1=3,M1=2,N1=1,P1=3,F1=30,I1=16;function L1(e,t){return e===t?j1:e.startsWith(t)?M1:t.length>=P1&&e.includes(t)?N1:0}function R1(e,t,n){let r=0;for(let n of t){let t=Math.max(0,...e.map(e=>L1(e,n)));if(t===0)return 0;r+=t}return r*n}function z1(e){return e.options?.map(e=>e.label).join(`, `)??``}function B1(e){return J1(e.group??``)?.title??``}function V1(e,t,n){let r=R1(A1(e.title),n,1e3),i=R1(A1(e.keywords.join(` `)),n,100),a=R1(t,n,10),o=R1(A1(e.path),n,10),s=R1(A1(z1(e)),n,10),c=R1(A1(e.description),n,1);return r+i+a+o+s+c}function H1(e){return e.section?.title??``}function U1(e,t){return Number(e.section===null)-Number(t.section===null)}function W1(e,t,n){return[[`title`,e.title],[`keywords`,e.keywords.join(` `)],[`section`,t?.title??B1(e)],[`description`,e.description],[`path`,e.path],[`options`,z1(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(L1(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 G1(e,t,n=[]){let r=A1(t).slice(0,I1);if(r.length===0)return[];let i=[];for(let t of e){let e=A1(t.title);for(let n of t.settings){let a=V1(n,e,r);a!==0&&i.push({section:t,setting:n,score:a,matches:W1(n,t,r)})}}for(let e of n){let t=V1(e,A1(B1(e)),r);t!==0&&i.push({section:null,setting:e,score:t,matches:W1(e,null,r)})}return i.sort((e,t)=>t.score-e.score||U1(e,t)||H1(e).localeCompare(H1(t))||e.setting.title.localeCompare(t.setting.title)).slice(0,F1)}function K1(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 q1(e){let t=new Map,n=new Map;for(let r of[...x1(e.sections),...e.fileOnly])t.set(r.id,r),n.set(r.path,r);return{byId:t,byPath:n}}q1(m1);function J1(e,t=m1){let n=t.sections.find(t=>t.id===e);return n?{title:n.title,description:n.description}:d1[e]??null}function Y1({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 X1(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 Z1=new WeakMap,Q1=`Configured`,$1=`•`.repeat(12),e0=`Each line must be a positive whole-number PostHog project id, or the one word none.`,t0=3,n0=200,r0=new Set([`customAgents`]),i0=1e-9,a0=`Lanes`,o0=Object.freeze({now:`Applies now`,"new-sessions":`New sessions`,restart:`After restart`}),s0=Object.freeze({browser:`This browser`,machine:`This machine`});function c0(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 l0(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 u0(e){return e.control===`password`}function d0(e){return`${e.path}${Q1}`}function f0(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)=>f0(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)&&f0(e[n],t[n]))}function p0(e){return Z1.get(e)||null}function m0(e){return Array.isArray(e)?e.map(e=>String(e)):[]}function h0(e){return e.split(`
174
+ `).map(e=>e.trim()).filter(e=>e!==``)}function g0(e){let t=e.range;if(!t)return null;let n={min:Number(T1(e,t.min))};return t.max!=null&&(n.max=Number(T1(e,t.max))),t.exclusiveMin&&(n.exclusiveMin=!0),n}function _0(e){let t=`Default ${O1(e,e.defaultValue)}`;return E1(e)?`${t}, stored as ${JSON.stringify(e.defaultValue)} ${e.unit?.storedLabel??``}`.trimEnd():t}function v0(e,t){let n=_0(e),r=r0.has(e.path)?void 0:v1(t,e.path);if(r===void 0)return{currentText:null,defaultText:n,jsonFragment:null};let i={};return b1(i,e.path,r),{currentText:`Current ${O1(e,r)}`,defaultText:n,jsonFragment:JSON.stringify(i,null,2)}}function y0(e,t,n){let r=t??e.find(e=>e.id===n.group);if(!r)return J1(n.group??``)?.title??`config.json`;let i=e.find(e=>e.id===r.parent);return i?`${i.title} / ${r.title}`:r.level===`lanes`?`${a0} / ${r.title}`:r.title}function b0(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,n0).join(``).trim()}}function x0(e,t){return e.filter(e=>e.parent===t)}function S0(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 C0(e){return e.filter(e=>!e.parent)}function w0(e){let t=e.filter(e=>e.level===`lanes`);return[{heading:null,sections:e.filter(e=>e.level!==`lanes`)},{heading:a0,sections:t}].filter(e=>e.sections.length>0)}function T0(e,t,n,r){return r?`hidden`:n.trim()?`search`:t&&S0(e,t)?`section`:`list`}function E0(e,t={}){let n={};for(let r of x1(e)){if(S1(r))continue;if(r.path.startsWith(`pref:`)){let e=r.path.slice(5),i=t.prefs?.[e]??t[r.path];n[r.path]=T1(r,i??r.defaultValue);continue}if(u0(r)){let e=v1(t,d0(r))===!0;n[r.path]=e?$1:``;continue}let e=v1(t,r.path);n[r.path]=T1(r,e??r.defaultValue)}return Z1.set(n,_1(t)),n}function D0(e,t,n){let r=x1(e).filter(e=>S1(e)||e.path.startsWith(`pref:`)||c0(e,p0(t)||{})||u0(e)&&n[e.path]===$1?!1:!f0(t[e.path],n[e.path]));if(r.length===0)return{};let i=p0(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]=k1(e,n[e.path]);continue}if(!s.has(r)){let e=i[r];o[r]=e&&typeof e==`object`&&!Array.isArray(e)?_1(e):{},s.add(r)}let c=k1(e,n[e.path]);if(e.control===`projects`){let n=t[e.path];c=Y1({checked:Array.isArray(c)?c:[],stored:Array.isArray(n)?n:[],rendered:X1(a.map(e=>({id:e,name:e})),Array.isArray(n)?n:[]).map(e=>e.id)})}b1(o,e.path,c)}for(let t of x1(e))u0(t)&&y1(o,d0(t));return delete o.secretSources,o}function O0(e,t,n,r){return i2(D0(e,t,{...t,[n.path]:r}))}function k0(e){let t=e.unit?.label;return t?` of ${t}`:``}function A0(e){let t=g0(e);if(!t)return`Allowed range is unavailable.`;let n=`${e.integer!==!1&&!E1(e)?`whole number`:`number`}${k0(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`} ${D1(t.min)}.`:`Must be a ${n} between ${D1(t.min)} and ${D1(t.max)}.`}function j0(e){return`Must be a multiple of ${O1(e,1)}.`}function M0(e){return Math.abs(e-Math.round(e))<i0&&Number.isSafeInteger(Math.round(e))}function N0(e,t){return Number(k1({...e,integer:!1,nullable:!1,zeroIsNull:!1},t))}function P0(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 A0(e);let r=Number(t);if(!Number.isFinite(r))return A0(e);if(e.zeroIsNull&&r<=0)return null;let i=N0(e,r);if(e.integer!==!1&&!M0(i))return E1(e)?j0(e):A0(e);let a=Number(k1(e,r));return n.exclusiveMin&&a<=n.min||!n.exclusiveMin&&a<n.min||n.max!=null&&a>n.max?A0(e):null}function F0(e,t,n=!1){return n?A0(e):P0(e,t.trim())}function I0(e,t){let n=t.trim();if(e.nullable&&n===``)return null;let r=Number(n);return e.zeroIsNull&&r<=0?null:r}function L0(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?D1(t):String(e)}function R0(e,t){return Array.isArray(t)?e.valueKind===`posthog-projects`&&k1(e,t)===null?e0:null:`Must be a list.`}function z0(e,t){let n={};for(let r of x1(e)){if(S1(r))continue;let e=null;r.control===`number`&&(e=P0(r,t[r.path])),r.control===`list`&&(e=R0(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 B0(x1(e),t,n),n}function B0(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(k1(r,a))>Number(k1(i,o))&&(n[r.id]=`Minimum must not exceed the maximum (${L0(o)}).`,n[i.id]=`Maximum must not be below the minimum (${L0(a)}).`)}}function V0(e,t){return x1(e).find(e=>e.id===t.maximumSettingId||e.maximumSettingId===t.id)}function H0(e,t,n){let r=V0(e,t);return z0([{id:`scoped`,level:`machine`,title:``,description:``,settings:r?[t,r]:[t]}],n)[t.id]??null}function U0(e,t){return e.control===`number`?I0(e,t):e.control===`list`?h0(t):t}function W0(e,t){return k1(e,e.control===`list`?m0(t):t)}function G0(e){return e?.isDirty===!0}function K0(e,t,n,r,i,a=!1){if(!G0(n))return{kind:`unchanged`};let o=t.control===`number`?F0(t,r,a):null;if(o)return{kind:`invalid`,error:o};let s=U0(t,r);if(f0(k1(t,s),W0(t,n.base)))return{kind:`unchanged`};let c=H0(e,t,{...i,[t.path]:s});return c?{kind:`invalid`,error:c}:{kind:`changed`,value:s}}function q0(e){return u0(e)?``:T1(e,e.defaultValue)}function J0(e,t){return f0(t,q0(e))}function Y0(e){return e.presentation?e.presentation:(e.options?.length??0)<=t0?`segmented`:`select`}function X0(e){return Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:e===!0}function Z0(e,t){return e.danger===!0&&!!e.warning&&X0(t)}function Q0(e,t){return Z0(e,t)}function $0(e){return e.title.charAt(0).toLowerCase()+e.title.slice(1)}function e2(e){return u0(e)?`Reset removes the stored ${$0(e)}. Anything that relies on it stops until a new one is saved.`:Q0(e,q0(e))?e.warning??``:null}function t2(e){return[e.repos.join(`, `),e.trigger,e.actions.map(e=>e.type).join(`, `)].join(` `)}function n2(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`,t2(e)].join(` `)):[`The workflows block is invalid, so no rule runs: ${t.error.issues[0]?.message??`unknown problem`}`]}function r2(e){let t=kn.safeParse(e??{});return t.success?t.data.rules.map(e=>({id:e.id,name:e.name,isEnabled:e.enabled,summary:t2(e)})):[]}function i2(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 a2={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},o2=[{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`}],s2=2e4,$=null,c2=null,l2={claude:null,codex:null},u2=null,d2=null,f2=null,p2=null,m2=`all`,h2=!1,g2=null,_2=null,v2=!0,y2=kM,b2=OM,x2=DM,S2=!1,C2=null,w2=`day`,T2=new Set,E2=Ol({getAck:wc,setAck:Tc,signature:()=>nM($,l2.claude),isLooking:()=>!yr(u2)}),D2=null,O2=null,k2=null,A2=null,j2=null,M2=null,N2=null,P2=Pf(()=>u2),F2=(e,t)=>gr(`usage`,e,t);function I2(e,t,n,r){let i=j(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=j(`span`,`usage-tile-value`,t);i.append(a,j(`span`,`usage-tile-label`,e));let o=n?j(`span`,`usage-tile-sub`,n):null;return o&&i.append(o),{tile:i,valueEl:a,subEl:o}}function L2(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function R2(e,t,n){let r=j(`div`,`usage-meter`);r.dataset.tone=String(t),r.setAttribute(`role`,`progressbar`),r.setAttribute(`aria-valuemin`,`0`),r.setAttribute(`aria-valuemax`,`100`),r.setAttribute(`aria-label`,n);let i=j(`span`,`usage-meter-fill`);return r.append(i),z2(r,e),r}function z2(e,t){if(!e)return;let n=L2(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function B2(e,t,n,r){let i=j(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=j(`table`,`usage-table`),o=j(`thead`),s=j(`tr`);for(let i of e){let e=j(`th`,i.numeric?`usage-num`:null);if(e.scope=`col`,!i.key){e.textContent=i.label,s.append(e);continue}let a=i.key;e.setAttribute(`aria-sort`,EM(t,a));let o=j(`button`,`usage-sort`,i.label);o.type=`button`,o.dataset.sortKey=a,o.addEventListener(`click`,()=>{A4(`sort`),C2={kind:`sort`,table:r,key:a},n(a)}),e.append(o),s.append(e)}o.append(s);let c=j(`tbody`);return a.append(o,c),i.append(a),{wrap:i,body:c}}function V2(e,t){for(let n of t){let t=j(`td`,n.numeric?`usage-num`:n.className||null,n.node?null:n.text);n.node&&t.append(n.node),n.title&&(t.title=n.title),n.span&&(t.colSpan=n.span),e.append(t)}}function H2(e){let t=j(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(j(`span`,`usage-share-text`,yA(e))),t;let n=j(`span`,`usage-share-bar`),r=j(`span`,`usage-share-fill`);return r.style.width=`${L2(e)}%`,n.append(r),t.append(n,j(`span`,`usage-share-text`,yA(e))),t}function U2(){if(!D2?.isConnected)return;let e=Number($?.ts);D2.textContent=Number.isFinite(e)&&e>0?`Report ${Mf(e)}`:``}function W2(){if(!O2?.isConnected)return;let e=Number(c2?.ts);O2.textContent=Number.isFinite(e)&&e>0?`Sessions ${Mf(e)}`:``}function G2(){let e=NA($?.activeBlock);e&&(k2?.isConnected&&(k2.textContent=`${e.pct}%`),A2?.isConnected&&(A2.textContent=`${kA(e.remainingMinutes)} left`),j2?.isConnected&&z2(j2,e.pct))}function K2(e){let t=lA.find(t=>t.value===e);return t?t.days:null}function q2(){let e=j(`div`,`usage-controls`),t=j(`label`,`usage-control`);t.append(j(`span`,`usage-control-label`,`Range`));let n=j(`select`,`usage-select`);for(let e of lA){let t=j(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=m2,n.addEventListener(`change`,()=>{A4(`range`),m2=n.value,M4()}),t.append(n);let r=j(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>{A4(`refresh`),M4({force:!0})});let i=j(`span`,`usage-refresh-status`,``);return M2=r,N2=i,D4(),e.append(t,r,i),e}function J2(){let e=F2(`Usage`,wA($?.daily||[]));e.append(q2()),D2=j(`p`,`usage-meta`,``),e.append(D2),U2(),P2.onTick(U2);let t=mM($);t&&e.append(j(`p`,`usage-warning`,t));let n=uM($?.pricing?.missing);return n&&e.append(j(`p`,`usage-warning`,n)),e}function Y2(){let e=Yj.filter(({vendor:e})=>Qj(l2[e]));if(e.length===0)return null;let t=F2(`Plan limits`,Zj(e.map(({vendor:e})=>e),$?.totals)),n=e.length>1,r=j(`div`,`usage-plan-vendors`);for(let{vendor:t,label:i}of e)r.append(X2(l2[t],n?i:null));return t.append(r),t}function X2(e,t){let n=j(`div`,`usage-plan-vendor`);t&&n.append(j(`p`,`usage-plan-vendor-label`,t));let r=sM(e?.ts);if(r){let e=j(`p`,`usage-meta`,r);e.dataset.tone=`warn`,n.append(e)}let i=j(`div`,`usage-plan`);for(let t of qj){let n=Jj(e,t.key);n&&i.append(Z2(t,n))}let a=j(`p`,`usage-meta`,``);n.append(i,a);let o=()=>{if(!a.isConnected)return;let t=aM(e?.ts);a.textContent=t?`Plan ${t}`:``};return o(),P2.onTick(o),n}function Z2(e,t){let n=j(`div`,`usage-plan-window`),r=j(`div`,`usage-plan-head`);r.append(j(`span`,`usage-plan-label`,e.label)),r.append(j(`span`,`usage-plan-used`,rM(t)));let i=j(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(R2(t.pct,PA(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=iM(t.resetsAtMs))};return a(),P2.onTick(a),n}function Q2(){let e=QA($,l2.claude),t=$2();if(e.length===0&&!t)return null;let n=F2(`Glimmervoid overhead`,e.length>0?WA:null);if(e.length>0){let t=j(`div`,`usage-tiles`);for(let n of e){let e=[$A(n),_A(n.costUSD)].filter(Boolean).join(`, `);t.append(I2(`${n.label}, share of Claude use`,yA(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=ej(t);e&&n.append(j(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(j(`p`,`usage-meta`,`Selected range by lane. ${UA}`)),n.append(t)),n}function $2(){if(!JA($))return null;let e=KA($),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=B2([{label:`Lane`},{label:`Cost`,numeric:!0},{label:`Tokens`,numeric:!0},{label:`Sessions`,numeric:!0},{label:`Share`,numeric:!0}],null,()=>{},`lane`);for(let n of e){let e=j(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),V2(e,[{text:GA(n.lane),className:`usage-lane-cell`},{text:_A(n.costUSD),numeric:!0},{text:vA(n.tokens),numeric:!0},{text:rj(n.sessions),numeric:!0},{node:H2(SA(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function e4(){let e=$?.activeBlock,t=$?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=Gj($?.totals),i=F2(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(j(`p`,`usage-empty`,`No active block.`));let e=t4();return e&&i.append(e),i}let a=tM($,l2.claude),o=j(`div`,`usage-tiles`);o.append(I2(`block tokens`,vA(e.tokens??0),_A(e.costUSD??0),a).tile);for(let t of jA(e.burn))o.append(I2(t.label,t.value,t.sub,a).tile);let s=NA(e);if(s){let e=I2(`elapsed`,`${s.pct}%`,`${kA(s.remainingMinutes)} left`);k2=e.valueEl,A2=e.subEl,o.append(e.tile)}i.append(o),s&&(j2=R2(s.pct,`ok`,`Elapsed share of the current block window`),i.append(j2),P2.onTick(G2));let c=MA(e.projection);if(c){let e=j(`p`,`usage-projection`,c);e.dataset.tone=a,i.append(e)}let l=t4();l&&i.append(l);let u=RA($?.tokenLimit);if(!u)return i;let d=IA($?.tokenLimit),f=tM($);i.append(R2(d,f,`Share of the largest completed block seen, estimated`));let p=j(`p`,`usage-meta`,u);p.dataset.tone=f,i.append(p),i.append(j(`p`,`usage-provenance`,eM(`estimated`)));let m=zA(e.projection,$?.tokenLimit);if(m){let e=j(`p`,`usage-meta`,m);e.dataset.tone=f,i.append(e)}return i}function t4(){let e=$?.anomaly;if(!Lj(e))return null;let t=j(`p`,`usage-meta`,Fj(e));return t.dataset.tone=Ij(e),t}function n4(){let e=IM($?.blocks);if(e.length===0)return null;let t=Gj($?.totals),n=F2(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=j(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=j(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(j(`span`,`usage-block-label`,AA(t.startTs)));let n=j(`span`,`usage-block-bar`),a=j(`span`,`usage-block-fill`);a.style.width=`${L2(SA(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(j(`span`,`usage-block-value`,`${vA(t.tokens)} ${_A(t.costUSD)}`)),r.append(e)}return n.append(r),n}function r4(){let e=$?.totals||{},t=FM($?.daily,EA($)),n=F2(`Totals`,[sA,$?.tz?`TZ ${$.tz}`:``].filter(Boolean).join(` `)),r=tM($,l2.claude),i=j(`div`,`usage-tiles`);i.append(I2(`today`,vA(t?.tokens??0),_A(t?.costUSD??0),r).tile),i.append(I2(`range total`,vA(e.tokens??0),_A(e.costUSD??0)).tile);let a=nj($);a&&i.append(I2(a.label,a.value,a.sub).tile),n.append(i);let o=i4(e);o&&n.append(o);let s=Uj(e)?Hj(e):[];if(s.length>0){let e=j(`div`,`usage-tiles usage-vendor-tiles`);for(let t of s)e.append(I2(t.label,vA(t.tokens),_A(t.costUSD)).tile);n.append(e)}return O2=j(`p`,`usage-meta`,``),n.append(O2),W2(),P2.onTick(W2),n}function i4(e){let t=VA(e);if(t.length===0)return null;let n=j(`div`,`usage-compo`),r=j(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=j(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=j(`div`,`usage-compo-legend`);for(let e of t){let t=j(`span`,`usage-compo-item`),n=j(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,j(`span`,`usage-compo-label`,e.label),j(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function a4(){let e=$?.savings;if(!oj(e))return null;let t=F2(`Savings`,``),n=j(`div`,`usage-tiles`),r=sj(e);r&&n.append(I2(`rtk compression`,r.value,r.sub).tile);let i=cj(e);return i&&n.append(I2(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function o4(){let e=lj($);if(e.length===0)return null;let t=F2(`Budgets`,`your own ceilings`),n=j(`div`,`usage-budgets`),r=Tp(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=j(`div`,`usage-budget`),r=j(`div`,`usage-budget-head`);r.append(j(`span`,`usage-budget-label`,uj(t.scope))),r.append(j(`span`,`usage-budget-value`,dj(t))),r.append(j(`span`,`usage-budget-pct`,yA(fj(t)))),e.append(r),e.append(R2(fj(t),t.tone,pj(t))),n.append(e)}return t.append(n),t}function s4(){let e=$?.daily||[],t=w2,n=PM(wj(e,t),y2),r=mj.find(e=>e.value===t)?.label||`Day`,i=F2(`Over time`,[Dj(e)].filter(Boolean).join(`, `));if(i.append(c4()),n.length===0)return i.append(j(`p`,`usage-empty`,`No usage.`)),i;let a=u4(e);a&&i.append(a);let{wrap:o,body:s}=B2([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],y2,e=>{y2=TM(y2,e),y4()},`day`);for(let e of n){let n=String(e.day??``),r=j(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=NM(e.models),a=`${t}:${n}`,o=d4(a,i.length);V2(r,[{node:l4(e,t),title:n},{text:vA(e.tokens),numeric:!0},{text:_A(e.costUSD),numeric:!0},{node:o,className:`usage-toggle-cell`}]),s.append(r),i.length!==0&&T2.has(a)&&s.append(f4(i))}return i.append(o),i}function c4(){let e=j(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of mj){let n=j(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===w2?`true`:`false`),n.addEventListener(`click`,()=>{w2!==t.value&&(A4(`period`),w2=t.value,C2={kind:`period`,view:t.value},y4())}),e.append(n)}return e}function l4(e,t){let n=j(`span`,`usage-period-cell`);return n.append(j(`span`,null,Ej(e.day,t))),e.source===`history`&&n.append(j(`span`,`usage-history-tag`,`history`)),n}function u4(e){let{cells:t,max:n}=jj(e,{today:EA($)});if(t.length===0||n<=0)return null;let r=j(`div`,`usage-heatmap-scroll`),i=j(`div`,`usage-heatmap`);i.setAttribute(`role`,`img`),i.setAttribute(`aria-label`,`Daily usage for the trailing ${Math.max(...t.map(e=>e.week))+1} weeks`);let a=j(`div`,`usage-heatmap-days`);for(let e of kj)a.append(j(`span`,`usage-heatmap-day`,e));for(let e of t){let t=j(`span`,`usage-heatmap-cell`);t.dataset.tone=String(e.tone),e.noData&&(t.dataset.noData=`true`),e.source===`history`&&(t.dataset.source=`history`),t.style.gridColumn=String(e.week+1),t.style.gridRow=String(e.weekday+1),t.title=Mj(e),i.append(t)}return r.append(a,i),r}function d4(e,t){if(t===0)return null;let n=j(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,T2.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{A4(`expand`),C2={kind:`day`,day:e},T2.has(e)?(T2.delete(e),y4()):(T2.add(e),y4())}),n}function f4(e){let t=j(`tr`,`usage-row-breakdown`),n=j(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=j(`span`,`usage-model-chip`);e.append(j(`span`,`usage-model-name`,bM(t)),j(`span`,`usage-model-value`,`${vA(t.tokens)} ${_A(t.costUSD)}`)),n.append(e)}return t.append(n),t}function p4(e,t){let n=j(`span`,`usage-model-name-wrap`),r=Vj(e,t);return r&&n.append(j(`span`,`usage-vendor-tag`,r)),n.append(j(`span`,null,bM(e))),n}function m4(){let e=NM($?.models,b2),t=$?.totals||{},n=bA(t),r=F2(`By model`,xA(n));if(e.length===0)return r.append(j(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=B2([{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`}],b2,e=>{b2=TM(b2,e),y4()},`model`);for(let r of e){let e=j(`tr`,`usage-row`);V2(e,[{node:p4(r,t),className:`usage-model-cell`,title:bM(r)},{text:vA(r.tokens),numeric:!0},{text:_A(r.costUSD),numeric:!0},{node:H2(SA(r[n],t[n])),className:`usage-share-cell`},{text:vA(r.input),numeric:!0},{text:vA(r.output),numeric:!0},{text:vA(r.cacheCreate),numeric:!0},{text:vA(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function h4(){let e=AM($?.sessions,x2),t=jM(e,S2),n=$?.totals||{},r=bA(n),i=F2(`By session`,xA(r));if(e.length===0)return i.append(j(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:o}=B2([{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`}],x2,e=>{x2=TM(x2,e),y4()},`session`);for(let e of t.rows){let t=j(`tr`,`usage-row`);vM(e)&&(t.dataset.managed=`true`);let i=yM(e),a=j(`span`,`usage-ago`,``);V2(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:vA(e.tokens),numeric:!0},{text:_A(e.costUSD),numeric:!0},{node:H2(SA(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),P2.track(a,Number(e.lastTs),Mf),o.append(t)}return i.append(a),e.length>10&&i.append(g4(t.hiddenCount)),i}function g4(e){let t=j(`div`,`usage-overflow`),n=MM(e);n&&t.append(j(`p`,`usage-meta`,n));let r=j(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,S2?`true`:`false`),r.addEventListener(`click`,()=>{A4(`expand`),C2={kind:`sessions-toggle`},S2=!S2,y4()}),t.append(r),t}function _4(){let e=F2(`Not available`,``);return e.append(j(`p`,`usage-empty`,pM($))),e.append(j(`p`,`usage-empty`,cA)),e}function v4(){D2=null,O2=null,k2=null,A2=null,j2=null,M2=null,N2=null}function y4({force:e=!1}={}){if(!u2||!e&&yr(u2))return;let t=u2.parentElement,n=t?t.scrollTop:0;P2.reset(),v4(),u2.textContent=``,S4(),t&&(t.scrollTop=n),b4()}function b4(){let e=C2;if(C2=null,!e)return;let t=x4(e);if(!t||!u2)return;let n=u2.querySelector(t);n instanceof HTMLElement&&n.focus()}function x4(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 S4(){if(!u2)return;u2.append(J2());let e=Y2();if(hM($)){e&&u2.append(e),u2.append(_4());return}if(!$){e&&u2.append(e),u2.append(j(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,o4()].filter(e=>e!==null);u2.append(C4(`usage-band-now`,e4(),t,{sideFirst:!0}));let n=[a4()].filter(e=>e!==null);u2.append(C4(`usage-band-spend`,r4(),n));let r=[n4()].filter(e=>e!==null);u2.append(C4(`usage-band-trend`,s4(),r));let i=Q2();i&&u2.append(i),u2.append(m4(),h4())}function C4(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=j(`div`,`usage-band ${e}`),a=j(`div`,`usage-band-col`);for(let e of n)a.append(e);return r?(i.append(a,t),i):(i.append(t,a),i)}function w4(){d2&&d2(E2.refresh())}function T4(){E2.acknowledge(),w4()}function E4(){return v2?h2?`Refreshing`:_2??``:$?`${G} The figures below are from before the connection dropped.`:G}function D4(){M2&&(M2.disabled=h2),N2&&(N2.textContent=E4(),!v2||!h2&&_2!==null?N2.dataset.tone=`error`:delete N2.dataset.tone)}function O4(e){h2=e,D4(),g2&&=(clearTimeout(g2),null),e&&(g2=setTimeout(()=>{g2=null,h2=!1,_2=`Usage did not answer within ${Math.round(s2/1e3)} s. Refresh to try again.`,D4()},s2))}function k4(e){d2=e,w4()}function A4(e){f2?.({type:`dashboard-telemetry`,event:`operator_action`,properties:{surface:`usage`,action:e}})}function j4(e){f2=e}function M4({force:e=!1}={}){if(!f2)return;p2=md(`usage`);let t={type:`request-usage-report`,requestId:p2};e&&(t.force=!0);let n=K2(m2);n!==null&&(t.days=n),_2=null,O4(!0),!f2(t)&&(_2=G,O4(!1))}function N4(e){v2=e,D4()}function P4(e){if(u2)return u2;let t=j(`div`,`usage-content`);return e.appendChild(t),u2=t,P2.ensure(),y4({force:!0}),t}function F4(){y4({force:!0})}function I4(e){c2=e,$&&!hM($)&&O2?.isConnected?W2():y4()}function L4(e){let t=e;l2={...l2,[Xj(t)]:t},y4(),w4()}function R4(e){gM(e,p2)&&(_2=null,O4(!1),$=e,y4(),w4())}function z4(){let e=$?.pricing||(c2?{source:c2.pricingSource}:null),t=lM(e?.fetchedAt),n=[cM(e,t!==null&&t>0?Mf(t):``)],r=pM($);r&&n.push(r);let i=fM($?.scan);return i&&n.push(i),n}var B4=Object.freeze({sounds:()=>hb(),themes:Lb}),V4=2200,H4=1600,U4=`browser-appearance`,W4=`browser-shortcuts`,G4=`lanes-features`,K4=Object.freeze({id:G4,level:`lanes`,title:`Features`,description:`Optional tabs, each hidden until its own toggle is on.`,settings:[]}),q4=`flying-animals`,J4=Object.freeze({ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1});function Y4(e){if(!e.optionsFrom)return e;let t=B4[e.optionsFrom]?.()??[];return{...e,options:t.map(e=>({value:e.id,label:e.label}))}}function X4(){let e=m1.sections.map(e=>({...e,settings:e.settings.map(Y4)})),t=e.findIndex(e=>e.level===`lanes`);return Object.freeze([...e.slice(0,t),K4,...e.slice(t)])}var Z4=X4(),Q4=!1,$4=null,e3=null,t3=null,n3=null,r3=null,i3=null,a3=null,o3=null,s3=Z4[0],c3={},l3={},u3=new Map,d3=new Map,f3=new Map,p3=new WeakMap,m3=Promise.resolve(),h3=new Map,g3=``,_3=null,v3=null,y3=Au,b3=()=>{},x3=null,S3=!1,C3=!1,w3=null,T3=new Set,E3=new Map;function D3(){return{themeId:qs(),flyingAnimalsEnabled:Ys(),...Bc(),soundEnabled:Ls(),soundId:gb(zs()),notificationsEnabled:Vs(),sessionUsageChips:Us(),phoneArrowPad:Gs()}}function O3(e){l3=E0(Z4,{...e,prefs:D3()}),Hf(e.agentLogins)}function k3(e){return f3.has(e.id)?f3.get(e.id):l3[e.path]}function A3(e){return[e,...x0(Z4,e.id)]}function j3(e){return A3(e).flatMap(e=>e.settings)}function M3(e){return Z4.find(t=>t.settings.some(t=>t.id===e.id))??s3}function N3(e,t=null){history.replaceState(history.state,``,Sp(e,t))}function P3(e){requestAnimationFrame(()=>{let t=document.getElementById(e),n=t?.closest(`.settings-view-advanced-panel`);n&&(Q4=!0,n.hidden=!1,o3?.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 F3(e){for(let t of qp(Jp)){let n=j(`div`,`shortcut-group`);n.appendChild(j(`div`,`shortcut-group-title`,t.title));let r=j(`dl`,`shortcut-rows`);for(let e of t.items){let t=j(`dt`,`shortcut-keys`);e.combos.forEach((e,n)=>{n>0&&t.appendChild(j(`span`,`shortcut-sep`,`/`)),Yp(t,e)}),r.append(t,j(`dd`,`shortcut-label`,e.label))}n.appendChild(r),e.appendChild(n)}}var I3=[];function L3(e){I3=e}function R3(e){return I3.find(t=>t.gate!==void 0&&`fromSettings`in t.gate&&t.gate.fromSettings===e)?.label}function z3(e){let t=j(`ul`,`settings-view-stack settings-features`);for(let e of o2){let n=Z4.find(t=>t.id===e.sectionId),r=V3(e.settingId),i=R3(a2[e.rule]);if(!n||!r||!i)continue;let a=k3(r)===!0,o=j(`li`,`settings-feature`),s=j(`div`,`settings-feature-head`);s.append(j(`span`,`settings-feature-name`,i),W6(`feature`,a?`On`:`Off`)),o.append(s,j(`p`,`settings-view-section-description`,n.description),Tp(e.sectionId,e.settingId,r.title)),t.appendChild(o)}e.appendChild(t)}function B3(e){let t=j(`div`,`settings-about`),n=j(`span`,`settings-about-version`,`GLIMMERVOID `);n.appendChild(j(`span`,`settings-about-v`,`v0.42.0`));let r=j(`span`,`settings-about-links`),i=j(`a`,`settings-about-link`,`GitHub`);i.href=`https://github.com/${d$}`,i.target=`_blank`,i.rel=`noopener`;let a=j(`a`,`settings-about-link`,`Changelog`);a.href=`https://github.com/${d$}/blob/main/CHANGELOG.md`,a.target=`_blank`,a.rel=`noopener`,r.append(i,a),t.append(n,r),e.appendChild(t)}function V3(e){return Z4.flatMap(e=>e.settings).find(t=>t.id===e)??null}function H3(e){if(l3[`pref:soundEnabled`]===e)return;l3[`pref:soundEnabled`]=e;let t=V3(`alert-sounds-enabled`);t&&r8(t)}var U3={"pref:flyingAnimalsMinGapSeconds":e=>Mc(Number(e)),"pref:flyingAnimalsMaxGapSeconds":e=>Nc(Number(e)),"pref:flyingAnimalsMinDurationSeconds":e=>Pc(Number(e)),"pref:flyingAnimalsMaxDurationSeconds":e=>Fc(Number(e)),"pref:flyingAnimalsScale":e=>Ic(Number(e)),"pref:flyingAnimalsOnPhone":e=>Lc(e===!0)};function W3(e,t){if(e.path===`pref:sessionUsageChips`){Ws(t===!0),Pb(t===!0);return}if(e.path===`pref:phoneArrowPad`){Ks(t===!0),Fb(t===!0);return}if(e.path===`pref:themeId`){Js(String(t)),Nb(String(t));return}if(e.path===`pref:flyingAnimalsEnabled`){Xs(t===!0),l$(t===!0);return}let n=U3[e.path];n?(n(t),l$(Ys())):e.path===`pref:soundEnabled`?WY(t===!0):e.path===`pref:soundId`?(Bs(String(t)),Db(String(t))):e.path===`pref:notificationsEnabled`&&(Hs(t===!0),t===!0&&dp().then(()=>r8(e,{force:!0})))}function G3(e,t){let n=d3.get(e.id);n!==void 0&&clearTimeout(n),d3.delete(e.id),t&&u3.set(e.id,t),t||u3.delete(e.id),i8(e)}function K3(e){G3(e,{tone:`saved`,text:`Saved`}),d3.set(e.id,window.setTimeout(()=>G3(e,null),V4))}function q3(e,t){h3.delete(e.id),e.path.startsWith(`pref:`)?(l3[e.path]=t,W3(e,t),r8(e),K3(e)):f3.has(e.id)&&JSON.stringify(f3.get(e.id))===JSON.stringify(t)||(f3.set(e.id,t),G3(e,{tone:`saving`,text:`Saving`}),m3=m3.then(()=>J3(e,t)))}async function J3(e,t){let n=O0(Z4,l3,e,t);if(Object.keys(n).length===0)f3.delete(e.id),G3(e,null),r8(e);else{G3(e,{tone:`saving`,text:`Saving`});try{let r=await hd(`update-settings`,{settings:n});if(f3.get(e.id)===t&&f3.delete(e.id),r.type===`settings-error`){G3(e,{tone:`error`,text:String(r.message)}),r8(e,{force:!0});return}if(r.type!==`settings-updated`){G3(e,{tone:`error`,text:`The server did not confirm the save.`}),r8(e,{force:!0});return}I8(r.settings),K3(e)}catch(n){f3.get(e.id)===t&&f3.delete(e.id),G3(e,{tone:`error`,text:n?.message||`Failed to save the setting.`}),r8(e,{force:!0})}}}function Y3(e,t){t&&h3.set(e.id,t),t||h3.delete(e.id),i8(e)}function X3(e,t){if(!t.exclusiveMin)return t.min;if(e.integer!==!1)return t.min+1}function Z3(e){return e?`On`:`Off`}function Q3(e){let t=j(`div`,`settings-view-toggle-wrap`),n=j(`label`,`settings-view-toggle`),r=j(`input`,`settings-view-checkbox`);r.type=`checkbox`,r.checked=k3(e)===!0,e.id===`desktop-notifications`&&!lp()&&(r.checked=!1,r.disabled=!0),r.setAttribute(`aria-labelledby`,e.id);let i=j(`span`,`settings-view-toggle-state`,Z3(r.checked));return r.addEventListener(`change`,()=>{let t=r.checked;Q0(e,t)?(r.checked=!1,i.textContent=Z3(!1),tf({title:e.title,message:e.warning??``,confirmLabel:`Turn on`,danger:!0,onConfirm:()=>q3(e,!0)})):(i.textContent=Z3(t),q3(e,t))}),n.append(r,i),t.appendChild(n),t}function $3(e,t,n){e.addEventListener(`blur`,t),e.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),t()):e.key===`Escape`&&(e.preventDefault(),n())})}function e6(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&[`text`,`number`,`password`].includes(e.type)}function t6(e,t){p3.set(t,{base:k3(e),isDirty:!1}),t.addEventListener(`input`,()=>{let e=p3.get(t);e&&(e.isDirty=!0)})}function n6(e,t,n){t.value!==n&&(t.value=n),p3.set(t,{base:k3(e),isDirty:!1}),Y3(e,null)}function r6(e,t,n,r=!1){let i=p3.get(t);if(!i)return;let a=K0(Z4,e,i,t.value,l3,r);a.kind===`invalid`?Y3(e,a.error):a.kind===`unchanged`?n6(e,t,n):Q0(e,a.value)?(n6(e,t,n),tf({title:e.title,message:e.warning??``,confirmLabel:`Save`,danger:!0,onConfirm:()=>q3(e,a.value)})):(p3.set(t,{base:a.value,isDirty:!1}),q3(e,a.value))}function i6(e){let t=j(`input`,`settings-view-input`);t.type=e.control===`password`?`password`:`text`;let n=()=>String(k3(e)??``);t.value=n(),e.control===`password`&&(t.value=``,t.placeholder=n()?`Configured`:`Not configured`);let r=c0(e,c3);return r&&(t.disabled=!0,t.setAttribute(`aria-description`,`Supplied by ${r}`)),t.autocomplete=`off`,t.spellcheck=!1,t.setAttribute(`aria-labelledby`,e.id),t6(e,t),$3(t,()=>{if(e.control===`password`){let n=t.value;if(n===``)return;n6(e,t,``),q3(e,n)}else r6(e,t,n())},()=>n6(e,t,e.control===`password`?``:n())),t}function a6(e){let t=j(`input`,`settings-view-input`),n=g0(e);t.type=`number`;let r=()=>L0(k3(e));t.value=r(),t.step=e.integer===!1?String(e.step??`any`):`1`;let i=n?X3(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),t6(e,t),$3(t,()=>r6(e,t,r(),t.validity.badInput),()=>n6(e,t,r()));let a=e.unit?.label;if(!a)return t;let o=j(`div`,`settings-view-number`),s=j(`span`,`settings-view-unit`,a);return s.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-description`,a),o.append(t,s),o}function o6(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 s6(e,t,n){n!==String(k3(e))&&(o6(t,n),q3(e,n),o6(t,String(k3(e))))}function c6(e){let t=j(`div`,`settings-view-segmented`);t.setAttribute(`role`,`radiogroup`),t.setAttribute(`aria-labelledby`,e.id);let n=e.options??[];for(let r of n){let n=j(`button`,`settings-view-segment`,r.label);n.type=`button`,n.dataset.value=r.value,n.setAttribute(`role`,`radio`),n.addEventListener(`click`,()=>s6(e,t,r.value)),t.appendChild(n)}return t.addEventListener(`keydown`,r=>{let i=J4[r.key];if(!i||n.length===0)return;r.preventDefault();let a=Math.max(0,n.findIndex(t=>t.value===String(k3(e)))),o=n[(a+i+n.length)%n.length];s6(e,t,o.value),t.querySelector(`[data-value="${CSS.escape(o.value)}"]`)?.focus()}),o6(t,String(k3(e))),t}function l6(e){let t=j(`select`,`settings-view-input`);t.setAttribute(`aria-labelledby`,e.id);for(let n of e.options??[]){let e=j(`option`,null,n.label);e.value=n.value,t.appendChild(e)}return t.value=String(k3(e)),t.addEventListener(`change`,()=>q3(e,t.value)),t}function u6(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 d6(e){let t=j(`textarea`,`settings-view-input settings-view-list-input`),n=()=>m0(k3(e)),r=()=>n().join(`
175
+ `);t.rows=3,t.value=r(),t.autocomplete=`off`,t.spellcheck=!1,t.placeholder=e.listPlaceholder??``,t.setAttribute(`aria-labelledby`,e.id),t6(e,t),t.addEventListener(`blur`,()=>r6(e,t,r())),t.addEventListener(`keydown`,n=>{n.key===`Escape`?(n.preventDefault(),n6(e,t,r())):n.key!==`Enter`||n.shiftKey||(n.preventDefault(),r6(e,t,r()))});let i=j(`div`,`settings-view-list`);return i.append(t,j(`span`,`settings-view-list-hint`,u6(e,n()))),i}function f6(e){let t=j(`div`,`settings-view-projects`),n=k3(e),r=new Set(Array.isArray(n)?n:[]),i=Array.isArray(c3.projectChoices)?c3.projectChoices:[];i.length===0&&t.appendChild(j(`div`,`settings-empty`,`No configured projects are available.`));for(let n of X1(i,[...r])){let i=j(`label`,`settings-view-project-choice`),a=j(`input`,`settings-view-checkbox`);a.type=`checkbox`,a.checked=r.has(n.id),a.addEventListener(`change`,()=>{let t=k3(e),r=new Set(Array.isArray(t)?t:[]);a.checked&&r.add(n.id),a.checked||r.delete(n.id),q3(e,[...r])}),i.append(a,document.createTextNode(n.name)),t.appendChild(i)}return t}function p6(e,t,{isPrimary:n=!1,isEnabled:r=!0}={}){let i=j(`button`,`btn-dialog ${n?`btn-dialog-confirm`:`btn-dialog-cancel`} settings-update-button`,e);return i.type=`button`,i.disabled=!r,i.addEventListener(`click`,t),i}function m6(e){let t=j(`span`,`settings-update-action-status`,e??``);return t.setAttribute(`role`,`status`),t}function h6(e){let t=Mu(y3,e);t!==y3&&(y3=t,B8())}function g6(){h6(K({type:`update-apply`})?`request-sent`:`request-unsent`)}function _6(){x3=Date.now();let e=K({type:`update-check`});C3=e,w3=e?null:G,B8()}function v6(){return C3?`Checking for updates.`:w3}function y6(){_3?(S3=!1,$u({status:_3,checkForUpdates:c3.checkForUpdates,now:Date.now(),lastAutoCheckAt:x3})&&_6()):S3=!0}function b6(e){return e===`update`?p6(`Update`,g6,{isPrimary:!0}):e===`restart`?p6(`Restart`,b3,{isPrimary:!0}):p6(`Check for updates`,_6,{isEnabled:!C3})}function x6(){let e=Iu({status:_3,journal:v3,request:y3}),t=j(`div`,`settings-update-actions`);if(e.actions.length>0){let n=j(`div`,`settings-update-buttons`);n.append(...e.actions.map(b6)),t.appendChild(n)}let n=v6();return n&&t.appendChild(m6(n)),e.note&&t.appendChild(m6(e.note)),e.command&&t.appendChild(j(`code`,`settings-update-command`,e.command)),t}function S6(e,...t){let n=j(`div`,`settings-update-fact`);return n.append(j(`span`,`settings-update-fact-label`,e),...t),n}function C6(){let e=qu(v3);if(!e)return null;let t=j(`div`,`settings-update-progress`);t.dataset.state=e.state,t.setAttribute(`role`,`status`),e.terminalLine&&t.appendChild(j(`div`,`settings-update-terminal`,e.terminalLine));let n=j(`ol`,`settings-update-steps`);for(let t of e.steps){let e=j(`li`,`settings-update-step`);e.dataset.status=t.status,e.append(j(`span`,`settings-update-step-state`,t.status),j(`span`,`settings-update-step-label`,t.label)),n.appendChild(e)}if(t.appendChild(n),e.outputTail.length===0)return t;let r=j(`pre`,`settings-update-output`,e.outputTail.join(`
176
+ `));if(e.outputStepId&&(r.dataset.step=e.outputStepId),!e.outputStepLabel)return t.appendChild(r),t;let i=`Output from ${e.outputStepLabel}`;return r.setAttribute(`aria-label`,i),t.append(j(`div`,`settings-update-output-label`,i),r),t}function w6(){let e=Qu(_3),t=[e.label];if(e.behind&&t.push(j(`span`,`settings-update-behind`,e.behind)),e.releaseUrl){let n=j(`a`,`settings-link`,`View release`);n.href=e.releaseUrl,n.target=`_blank`,n.rel=`noopener noreferrer`,t.push(n)}return S6(`Latest`,...t)}function T6(){let e=j(`div`,`settings-view-status-block settings-update-status`),t=Xu(_3,v3),n=j(`div`,`settings-update-summary`,t.headline);n.dataset.tone=t.tone,e.appendChild(n),e.appendChild(S6(`Running`,Zu(_3))),_3?.updateAvailable&&e.appendChild(w6());let r=typeof _3?.lastCheckAt==`number`?_3.lastCheckAt:null,i=S6(`Last checked`,ed({status:_3,checkForUpdates:c3.checkForUpdates,relativeTime:Mf(r)}));r&&(i.title=new Date(r).toLocaleString()),e.appendChild(i),e.appendChild(x6());let a=C6();return a&&e.appendChild(a),e}function E6(e){return e===null?`not probed yet`:e?`resolved`:`not found on PATH`}function D6(){let e=Array.isArray(c3.customAgents)?c3.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} ${E6(e.resolvable)}`})}function O6(){let e=j(`div`,`settings-view-status-block`);e.appendChild(j(`div`,`settings-section-title`,`Declared agents`));for(let t of D6())e.appendChild(j(`div`,`settings-readonly`,t));return e}function k6(e){E3.set(e,{tone:`ok`,text:`Saved`}),window.setTimeout(()=>{E3.get(e)?.tone===`ok`&&(E3.delete(e),z8())},V4)}async function A6(e,t){T3.add(e.id),E3.delete(e.id),z8();try{let n=await hd(`update-settings`,{settings:{workflows:{rules:[{id:e.id,enabled:t}]}}},{timeoutMs:q});if(T3.delete(e.id),n.type===`settings-error`&&E3.set(e.id,{tone:`error`,text:String(n.message)}),n.type===`settings-updated`){k6(e.id),I8(n.settings);return}}catch(t){E3.set(e.id,{tone:`error`,text:Od(t,q)})}T3.delete(e.id),z8()}function j6(e){let t=Ed(`settings-workflow-rule-status`);if(T3.has(e.id))return t.show(`busy`,`Saving`),t.element;let n=E3.get(e.id);return n&&t.show(n.tone,n.text),t.element}function M6(e){let t=j(`div`,`settings-view-toggle-wrap`),n=j(`label`,`settings-view-toggle`),r=j(`input`,`settings-view-checkbox`);return r.type=`checkbox`,r.checked=e.isEnabled,r.disabled=T3.has(e.id),r.setAttribute(`aria-label`,`Run rule ${e.name}`),r.addEventListener(`change`,()=>{A6(e,r.checked)}),n.append(r,j(`span`,`settings-view-toggle-state`,Z3(e.isEnabled)),j(`span`,`settings-readonly`,`${e.name} ${e.summary}`)),t.append(n,j6(e)),t}function N6(){let e=j(`div`,`settings-view-status-block`);e.appendChild(j(`div`,`settings-section-title`,`Rules`));let t=r2(c3.workflows);if(t.length>0){for(let n of t)e.appendChild(M6(n));return e}for(let t of n2(c3.workflows))e.appendChild(j(`div`,`settings-readonly`,t));return e}function P6(){let e=j(`div`,`settings-view-status-block`);e.appendChild(j(`div`,`settings-section-title`,`Last report`));for(let t of z4())e.appendChild(j(`div`,`settings-readonly`,t));return e}function F6(){let e=j(`div`,`settings-view-status-block`);if((f3.get(`remote-sessions`)??l3.remoteSessions)!==!0)return e.appendChild(j(`div`,`settings-readonly`,`Turn on Remote Coder sessions (experimental) to connect agent logins for them.`)),e;for(let t of[`claude-code`,`codex`]){let n=j(`div`,`settings-telegram-test`),r=j(`button`,`btn-dialog btn-dialog-cancel`,`Connect`);r.type=`button`,r.addEventListener(`click`,()=>Jf(t)),n.append(j(`div`,`settings-readonly`,Kf(Uf(t),t)),r),e.appendChild(n)}return e}function I6(e){return e.status===`agent-logins`?F6():e.status===`update-actions`?T6():e.status===`custom-agents`?O6():e.status===`workflows`?N6():j(`div`,`settings-readonly`,`Not available`)}function L6(e){return e.control===`readonly`?I6(e):e.control===`toggle`?Q3(e):e.control===`number`?a6(e):e.control===`select`?Y0(e)===`segmented`?c6(e):l6(e):e.control===`list`?d6(e):e.control===`projects`?f6(e):i6(e)}function R6(e){let t=c0(e,c3);return t?`Supplied by ${t}. Change the server environment and restart to replace this credential.`:e.status!==`rtk-install`||k3(e)!==!0||c3.rtkAvailable?``:l0(c3)}function z6(e){if(e.control===`readonly`)return null;if(e.status===`usage-last-report`){let e=P6();return e.classList.add(`settings-view-status-slot`),e}if(e.id===`desktop-notifications`)return U6(e);if(e.status===`telegram-delivery`)return H6();let t=R6(e);return t?j(`div`,`settings-view-warning settings-view-status-slot`,t):null}function B6(){let e=xo.safeParse(c3.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 V6(e){e.replaceChildren(...B6().map(e=>j(`p`,`settings-view-warning`,e)))}function H6(){let e=j(`div`,`settings-view-status-slot settings-telegram-delivery`),t=j(`div`,`settings-telegram-delivery-lines`);V6(t);let n=j(`button`,`btn-dialog btn-dialog-cancel`,`Send test message`);n.type=`button`;let r=Ed(`settings-telegram-test-status`);n.addEventListener(`click`,async()=>{n.disabled=!0;let e=await kd(`telegram-test`,{},r,{busyText:`Sending a test message to Telegram.`});n.disabled=!1,e?.type===`telegram-test-result`&&(c3={...c3,telegramDelivery:e.telegramDelivery},V6(t),e.ok?r.show(`ok`,`Sent. Check the Telegram chat for the test message.`):r.show(`error`,`Not sent: ${e.error??`Telegram refused the message.`}`))});let i=j(`div`,`settings-telegram-test`);return i.append(n,r.element),e.append(t,i),e}function U6(e){let t=mp(()=>r8(e,{force:!0}));return t.element.hidden?null:(t.element.classList.add(`settings-view-status-slot`),t.element)}function W6(e,t){let n=j(`span`,`settings-view-chip`,t);return n.dataset.chip=e,n}function G6(e,t){let n=br(e);return n?n.then(()=>t,()=>`Copy failed`):Promise.resolve(`Copy failed`)}function K6(e,t,{copiedText:n,textToCopy:r}){let i=j(`span`,`settings-view-copy-status`);i.setAttribute(`role`,`status`),t.type=`button`,t.addEventListener(`click`,async()=>{i.textContent=await G6(r(),n),setTimeout(()=>{i.textContent=``},H4)}),e.append(t,i)}function q6(e){let t=j(`div`,`settings-view-setting-heading`),n=M3(e),r=j(`h2`,`settings-view-setting-title`,e.title);r.id=e.id,r.addEventListener(`click`,()=>N3(n.id,e.id));let i=j(`button`,`settings-view-copy-link`,`#`);return i.setAttribute(`aria-label`,`Copy link`),t.appendChild(r),K6(t,i,{copiedText:`Link copied`,textToCopy:()=>new URL(Sp(n.id,e.id),location.href).href}),t}function J6(e){let t=j(`div`,`settings-view-chips`);return t.append(W6(`scope`,s0[e.scope]),W6(`effect`,o0[e.takesEffect])),t}function Y6(e){return e.control===`readonly`||c0(e,c3)?!1:!J0(e,k3(e))}function X6(e){let t=j(`div`,`settings-view-control-foot`),n=j(`span`,`settings-view-save-status`);n.setAttribute(`role`,`status`);let r=j(`button`,`settings-view-reset`,`Reset`);return r.type=`button`,r.title=`Reset to the default value`,r.addEventListener(`click`,()=>{let t=q0(e),n=e2(e);n===null?q3(e,t):tf({title:e.title,message:n,confirmLabel:`Reset`,danger:!0,onConfirm:()=>q3(e,t)})}),t.append(n,r),t}function Z6(e,t){let n=e.querySelector(`.settings-view-save-status`),r=u3.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=!Y6(t));let a=e.querySelector(`.settings-view-field-error`),o=h3.get(t.id);a&&!o&&a.remove(),a&&o&&(a.textContent=o),!a&&o&&e.querySelector(`.settings-view-setting-control`)?.appendChild(j(`div`,`settings-view-field-error`,o))}function Q6(e){let t=j(`article`,`settings-view-setting`);t.dataset.settingId=e.id,e.control===`readonly`&&(t.dataset.readout=`true`);let n=j(`div`,`settings-view-setting-text`);n.append(q6(e),j(`p`,`settings-view-setting-description`,e.description),J6(e));let r=j(`div`,`settings-view-setting-control`);r.appendChild(L6(e)),e.control!==`readonly`&&r.appendChild(X6(e)),t.append(n,r),Z0(e,k3(e))&&t.appendChild(j(`div`,`settings-view-warning settings-warning`,e.warning));let i=z6(e);return i&&t.appendChild(i),Z6(t,e),t}function $6(e){return o3?.querySelector(`[data-setting-id="${e.id}"]`)??null}function e8(e){let t=e.querySelector(`.settings-view-setting-control`);t&&(t.querySelector(`[role="radio"][aria-checked="true"]`)??t.querySelector(`input:not([disabled]), textarea:not([disabled]), select:not([disabled]), button:not([disabled])`))?.focus()}function t8(e,t){if(!e6(e)||!e6(t))return;e.disabled=t.disabled,e.placeholder=t.placeholder;let n=p3.get(t);n&&!G0(p3.get(e))&&(p3.set(e,{base:n.base,isDirty:!1}),e.value!==t.value&&(e.value=t.value))}function n8(e,t,n){if(e===n){t8(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)?n8(i,a,n):i.replaceWith(a):e.appendChild(a)}for(let e of r.slice(i.length))e.remove()}function r8(e,{force:t=!1}={}){let n=$6(e);if(!n)return;let r=document.activeElement,i=n.contains(r),a=i&&!t&&e6(r)?r:null;(!a||!G0(p3.get(a)))&&h3.delete(e.id);let o=Q6(e);a?n8(n,o,a):(n.replaceWith(o),i&&e8(o))}function i8(e){let t=$6(e);t&&Z6(t,e)}function a8(e){$6(e)?.querySelector(`.settings-view-setting-control`)?.replaceChildren(I6(e))}function o8(){for(let e of j3(s3))e.control===`readonly`?a8(e):r8(e)}function s8(){let e=j(`button`,`btn-dialog btn-dialog-cancel`,`Reset all to defaults`);return e.type=`button`,e.addEventListener(`click`,()=>{Vc(),O3(c3),l$(Ys()),f8()}),e}function c8(e){let t=j(`div`,`settings-view-advanced`),n=j(`button`,`dialog-advanced-toggle settings-view-advanced-toggle`,`Advanced`);n.type=`button`,n.setAttribute(`aria-expanded`,String(Q4)),n.setAttribute(`aria-controls`,`settings-view-advanced-panel`);let r=j(`div`,`dialog-advanced-panel settings-view-advanced-panel`);r.id=`settings-view-advanced-panel`,r.hidden=!Q4,n.addEventListener(`click`,()=>{Q4=!Q4,r.hidden=!Q4,n.setAttribute(`aria-expanded`,String(Q4))});for(let t of e)r.append(Q6(t));return s3.id===U4&&r.append(s8()),t.append(n,r),t}function l8(e){let t=j(`div`,`settings-view-streamer-placeholder`),n=j(`button`,`btn-dialog btn-dialog-confirm`,`Turn off streamer mode`);n.type=`button`;let r=j(`span`,`settings-view-copy-status`,``);r.setAttribute(`role`,`status`),n.addEventListener(`click`,async()=>{n.disabled=!0,r.textContent=``;let e=await sh(!1);n.disabled=!1,r.textContent=e}),t.append(j(`p`,`settings-view-section-description`,`Settings are hidden in streamer mode.`),n,r),e.appendChild(t)}oh(()=>f8());function u8(e){let t=j(`header`,`settings-view-subsection`),n=j(`h2`,`settings-view-subsection-title`,e.title);return n.addEventListener(`click`,()=>N3(e.id)),t.append(n,j(`p`,`settings-view-section-description`,e.description)),t}function d8(e,t){for(let n of t.settings.filter(e=>e.access!==`advanced`))e.appendChild(Q6(n)),n.id===q4&&e.appendChild(u$());let n=t.settings.filter(e=>e.access===`advanced`);n.length>0&&e.append(c8(n))}function f8(){if(w8(),g3){b8();return}if(!o3)return;if(o3.textContent=``,ih()){l8(o3);return}let e=j(`header`,`settings-view-section-header`),t=j(`h1`,`settings-view-section-title`,s3.title);if(t.tabIndex=-1,t.addEventListener(`click`,()=>N3(s3.id)),e.append(t,j(`p`,`settings-view-section-description`,s3.description)),o3.appendChild(e),s3.id===W4){let e=j(`div`,`shortcut-groups settings-view-shortcuts`);F3(e),o3.appendChild(e),o3.appendChild(Mv()),o3.appendChild(ree()),B3(o3);return}if(s3.id===G4){z3(o3);return}let n=j(`div`,`settings-view-stack`);for(let e of A3(s3))e.id!==s3.id&&n.appendChild(u8(e)),d8(n,e);o3.appendChild(n)}function p8(e,{focusContent:t=!1,settingId:n=null,updateHash:r=!0,openPhoneSection:i=!0}={}){r&&g3&&(g3=``,r3&&(r3.value=``));let a=S0(Z4,e)??s3;s3.id!==a.id&&(Q4=!1),s3=a;let o=Z4.find(t=>t.id===e)??a;m8(n3),i&&Jy()&&(i3=o.id),f8(),M8(s3)&&j8(),s3.id===`machine-updates`&&y6(),r&&N3(o.id,n),n&&P3(n),t&&o3?.querySelector(`h1`)?.focus()}function m8(e){for(let t of e?.querySelectorAll(`[data-settings-section]`)||[]){let e=t.dataset.settingsSection===s3.id;t.setAttribute(`aria-current`,e?`page`:`false`)}}function h8(e){return e.section!==null}function g8(e){r3&&(r3.value=``,g3=``,D8(),p8(e.section.id,{settingId:e.setting.id}))}function _8(e){return G1(m1.sections,e,m1.fileOnly)}function v8(e,t,n,r,i){let a=j(e,t),o=r.matches.find(e=>e.field===i),s=o?n.indexOf(o.text):-1;if(!o||s<0)return a.textContent=n,a;let c=0;for(let e of o.spans)a.append(n.slice(c,s+e.start),j(`mark`,`settings-view-search-highlight`,n.slice(s+e.start,s+e.end))),c=s+e.end;return a.append(n.slice(c)),a}function y8(e,t){let{currentText:n,defaultText:r,jsonFragment:i}=v0(t.setting,c3);if(n!==null&&e.appendChild(j(`span`,`settings-view-search-current`,n)),e.append(j(`span`,`settings-view-search-default`,r),J6(t.setting),j(`p`,`settings-view-list-hint`,`Edit in config.json or with glimmervoid settings set.`)),i===null)return;let a=j(`div`,`settings-view-control-foot`);K6(a,j(`button`,`settings-view-copy-json`,`Copy as JSON`),{copiedText:`JSON copied`,textToCopy:()=>i}),e.appendChild(a)}function b8(){if(!o3)return;if(o3.textContent=``,ih()){l8(o3);return}let e=_8(g3),t=j(`div`,`settings-view-section-header`);if(t.append(j(`h1`,`settings-view-section-title`,`Settings search`),j(`p`,`settings-view-section-description`,`${e.length} ${e.length===1?`result`:`results`} for "${g3}"`)),o3.appendChild(t),e.length===0){o3.appendChild(j(`p`,`settings-empty settings-view-search-empty`,`No settings found.`));return}let n=j(`ol`,`settings-view-search-results`);n.setAttribute(`aria-label`,`Settings search results`);for(let t of e){let e=j(`li`,`settings-view-search-result`);e.tabIndex=-1;let r=y0(Z4,t.section,t.setting);e.appendChild(v8(`p`,`settings-view-search-breadcrumb`,r,t,`section`));let i=v8(`span`,`settings-view-setting-title`,t.setting.title,t,`title`);if(h8(t)){let n=j(`button`,`settings-view-search-open`);n.type=`button`,n.appendChild(i),n.addEventListener(`click`,()=>g8(t)),e.appendChild(n)}h8(t)||(e.classList.add(`settings-view-search-file-only`),e.appendChild(i)),e.append(v8(`p`,`settings-view-setting-description`,t.setting.description,t,`description`),v8(`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(v8(`p`,`settings-view-list-hint`,n.text,t,n.field))}h8(t)||y8(e,t),n.appendChild(e)}o3.appendChild(n)}function x8(){return T0(Z4,i3,g3,ih())}var S8=new Set;function C8(e){S8.add(e)}function w8(){if(!t3)return;let e=x8(),t=t3.dataset.settingsScreen!==e;if(t3.dataset.settingsScreen=e,a3&&(a3.hidden=e!==`section`),t)for(let e of S8)e()}function T8(){return Jy()&&x8()===`section`}function E8(){if(!T8())return;let e=s3.id;O8(``),n3?.querySelector(`[data-settings-section="${e}"]`)?.focus()}function D8(){if(n3&&t3){n3.textContent=``;for(let e of w0(C0(Z4))){let t=j(`div`,`settings-view-nav-group`);e.heading&&t.appendChild(j(`div`,`settings-view-nav-heading`,e.heading));for(let n of e.sections){let e=j(`button`,`settings-view-nav-item`,n.title);e.type=`button`,e.dataset.settingsSection=n.id,e.addEventListener(`click`,()=>p8(n.id,{focusContent:Jy()})),t.appendChild(e)}n3.appendChild(t)}g3?(w8(),b8()):p8(s3.id,{updateHash:!1,openPhoneSection:!1})}}function O8(e,{updateHash:t=!0}={}){g3=e.trim(),r3&&(r3.value=e),i3=null,t&&history.replaceState(history.state,``,wp(g3)),D8()}function k8(e){if(g3&&e.key===`Enter`&&e.target===r3){let t=_8(g3).find(h8);if(!t)return;e.preventDefault(),g8(t);return}if(e.key===`Escape`&&g3){if(!r3)return;e.preventDefault(),O8(``),r3.focus();return}if(e.key!==`ArrowUp`&&e.key!==`ArrowDown`||!n3)return;let t=[...n3.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 A8(e,{onRestart:t=()=>{}}={}){b3=t,GY(H3),$4=e,$4.textContent=``,t3=j(`div`,`settings-view-shell`);let n=j(`div`,`settings-view-sidebar`);r3=j(`input`,`settings-view-search`),r3.type=`search`,r3.placeholder=`Search settings`,r3.setAttribute(`aria-label`,`Search settings`),n3=j(`nav`,`settings-view-nav`),n3.setAttribute(`role`,`navigation`),n3.setAttribute(`aria-label`,`Settings sections`),a3=j(`button`,`settings-view-back`,`Back`),a3.type=`button`,a3.hidden=!0,a3.setAttribute(`aria-label`,`Back to settings sections`),a3.addEventListener(`click`,E8),o3=j(`div`,`settings-view-content`),o3.setAttribute(`aria-live`,`polite`),r3.addEventListener(`input`,()=>{let e=r3;e&&O8(e.value)}),r3.addEventListener(`keydown`,k8),n3.addEventListener(`keydown`,k8),n.append(r3,a3,n3),t3.append(n,o3),$4.appendChild(t3),O3(c3),D8(),j8(),e3?.disconnect(),e3=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&j8()}),e3.observe($4)}function j8(){_b().then(N8)}function M8(e){return j3(e).some(e=>e.path===`pref:soundId`)}function N8(){if(Z4=X4(),s3=S0(Z4,s3.id)??Z4[0],l3[`pref:soundId`]=gb(zs()),g3){b8();return}let e=V3(`alert-sound`);e&&M8(s3)&&r8(e)}function P8(e=null,t=null){let n=b0(e??location.hash);n?O8(n.query):(O8(``,{updateHash:!1}),Jy()&&!e?history.replaceState(history.state,``,wp(``)):p8(e||s3.id,{settingId:t}))}function F8(e){let t=b0(e);if(t){let e=wp(t.query);return{sectionId:e,settingId:null,hash:e}}return K1(e,Z4,h1,g1)}function I8(e){e&&(c3=e,O3(c3),g3?b8():o8())}function L8(e){z8()}function R8(e,t){let n=t.querySelector(`.settings-view-status-slot`),r=z6(e);n&&r&&n.replaceWith(r),n&&!r&&n.remove(),!n&&r&&t.appendChild(r)}function z8(){for(let e of j3(s3)){if(!e.status)continue;let t=$6(e);t&&(e.control===`readonly`?a8(e):R8(e,t))}}function B8(){if(s3.id!==`machine-updates`)return;let e=V3(`update-actions`);e&&a8(e)}function V8(e){_3=e,C3=!1,w3=null,y3=Mu(y3,`status-frame`),B8(),S3&&s3.id===`machine-updates`&&y6()}function H8(e){v3=e,y3=Mu(y3,`progress-frame`),B8()}function U8(e){if(e.scope!==`update`)return!1;let t=ju(e.message),n=y3.requested;return y3=Mu(y3,`error-frame`,t),C3=!1,n||(w3=t),B8(),!0}function W8(){s3.id===U4&&f8()}window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,W8),Yy(()=>{i3=null,w8(),W8()}),Wf(z8);function G8(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 K8=`•`.repeat(8),q8=`[^/\\\\\\s"'\`<>:]+`,J8=RegExp(`(?<![\\w./\\\\-])(?:/home/${q8}|/Users/${q8}|[A-Za-z]:[\\\\/]Users[\\\\/]${q8}|/root(?![\\w.-]))`,`g`);function Y8(e){let t=Hx(e);if(t.length===0)return e;let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+K8,r=i.end;return n+e.slice(r)}function X8(e){return e.replace(J8,`~`)}function Z8(e){return X8(Y8(e))}var Q8=`.xterm, input, textarea, script, style, [contenteditable]:not([contenteditable="false"])`,$8=[`title`,`label`],e5=new WeakMap,t5=new WeakMap,n5=null;function r5(e){let t=e instanceof Element?e:e.parentElement;return!t||t.closest(Q8)!==null}function i5(e){let t=e.parentElement?.closest(`option`);return t!=null&&!t.hasAttribute(`value`)}function a5(e,t){if(t&&e===t.masked)return t;let n=Z8(e);return n===e?null:{original:e,masked:n}}function o5(e){let t=i5(e)?null:a5(e.data,e5.get(e));t?(e5.set(e,t),e.data!==t.masked&&(e.data=t.masked)):e5.delete(e)}function s5(e,t){let n=e.getAttribute(t),r=t5.get(e),i=n===null?null:a5(n,r?.get(t));if(!i){r?.delete(t);return}let a=r??new Map;a.set(t,i),t5.set(e,a),n!==i.masked&&e.setAttribute(t,i.masked)}function c5(e){for(let t of $8)s5(e,t)}function l5(e){return e instanceof Element&&e.matches(Q8)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function u5(e){c5(e);let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,l5);for(let e=t.nextNode();e;e=t.nextNode())e instanceof Text&&o5(e),e instanceof Element&&c5(e)}function d5(e){r5(e)||(e instanceof Text&&o5(e),e instanceof Element&&u5(e))}function f5(e){e instanceof Element&&!r5(e)&&c5(e)}function p5(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&&d5(e);for(let e of n)e.isConnected&&f5(e)}function m5(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);h5(e);for(let e=t.nextNode();e;e=t.nextNode())h5(e)}function h5(e){if(e instanceof Text){let t=e5.get(e);t&&e.data===t.masked&&(e.data=t.original);return}if(!(e instanceof Element))return;let t=t5.get(e);if(t)for(let[n,r]of t)e.getAttribute(n)===r.masked&&e.setAttribute(n,r.original)}function g5(){if(n5)return;let e=new MutationObserver(t=>{p5(t),e.takeRecords()});u5(document.body),e.observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:$8}),n5=e}function _5(){n5&&(n5.disconnect(),n5=null,m5(document.body),e5=new WeakMap,t5=new WeakMap)}function v5(e){e?g5():_5()}function y5(){v5(ih()),oh(v5)}function b5(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 x5(e){return typeof e!=`object`||!e||!(`telemetryForcedOff`in e)?!1:e.telemetryForcedOff===!0}function S5(e,t){return t||x5(e)?!1:b5(e)}var C5=2500;function w5({hasSnapshot:e,connectingTerminalCount:t,msSinceConnected:n}){return n<2500&&(!e||t>0)?`wait`:`reveal`}var T5=2166136261,E5=16777619;function D5(e){let t=T5;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,E5)>>>0;return t}var O5=18e4,k5=2**32,A5=new Set([A.INITIALIZING,A.STARTING,A.RUNNING,A.WAITING,A.IDLE,A.COMPLETE,A.FAILED]),j5=new Map([[A.INITIALIZING,Xn.INITIALIZING],[A.STARTING,Xn.STARTING],[A.RUNNING,Xn.RUNNING],[A.IDLE,Xn.IDLE]]),M5=new Map([[A.INITIALIZING,`resting`],[A.STARTING,`resting`],[A.WAITING,`alert`],[A.FAILED,`alert`],[A.COMPLETE,`sitting`],[A.IDLE,`asleep`]]);function N5(e){return A5.has(e)}function P5(e,t){let n=D5(e)/k5,r=Zo(t,-1,()=>n);return r===null?null:Wo[r]??null}function F5(e){let t=D5(`${e}#spot`);return{leftPercent:6+t%78,topPercent:12+(t>>>8)%62,ambleDistancePx:24+(t>>>16)%64,ambleSeconds:9+(t>>>24)%9}}function I5({state:e,activity:t,lastOutputAtMs:n,nowMs:r}){return e===A.RUNNING?n!==void 0&&r-n>=O5?`asleep`:t===`quiet`?`resting`:`ambling`:M5.get(e)??`asleep`}function L5({state:e,unseenOutcome:t}){return e===A.WAITING?tr.WAITING:e===A.FAILED&&t===`failed`?tr.FAILED:null}function R5(e,t){return j5.get(e)??Dg(e,t)}var z5=new Set([A.RUNNING,A.STARTING,A.INITIALIZING]),B5=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),V5=null,H5=!1,U5=null,W5=null,G5=new Map;function K5(e){let t=j(`div`,`zen-calm`),n=j(`div`,`zen-status-line`);n.setAttribute(`role`,`status`);let r=j(`span`,`zen-working-count`);n.append(j(`h2`,`zen-all-clear`,`ALL CLEAR`),r);let i=j(`div`,`zen-meadow`);i.setAttribute(`aria-label`,`Sessions`),t.append(n,i);let a=j(`div`,`zen-stage`),o=j(`div`,`zen-reason-line`);o.setAttribute(`role`,`status`);let s=j(`span`,`zen-staged-need`),c=j(`span`,`zen-queued-behind`);o.append(s,c);let l=j(`div`,`zen-pet-strip`);l.setAttribute(`aria-label`,`Other sessions`);let u=j(`button`,`btn-dialog`,`Next`);u.type=`button`,u.addEventListener(`click`,Z5);let d=j(`div`,`zen-stage-bar`);d.append(o,l,u,Xp(Wp(`next-attention`,Jp)));let f=j(`div`,`zen-card-slot`);a.append(d,f),a.hidden=!0,e.append(t,a),V5={calm:t,workingCount:r,meadow:i,stage:a,stagedNeed:s,queuedBehind:c,petStrip:l,cardSlot:f}}function q5(){return H5}function J5(){if(V5){H5=!0;for(let e of G5.values())e.root.remove();G5.clear(),X5()}}function Y5(){H5&&=(n7(),W5=null,!1)}function X5(){if(!H5)return;let e=e7();W5!==null&&!$5(W5)&&(W5=null),t7(W5??Tg(e,U5),e)}function Z5(){if(!H5)return;W5=null;let e=U5,t=e===null?void 0:P.get(e),n=t!==void 0&&Ag({state:t.currentState,unseenOutcome:t.unseenOutcome});e!==null&&n&&UN(e);let r=e7().filter(t=>!n||t!==e);t7(wg(r,e),r)}function Q5(e){H5&&$5(e)&&(W5=e,t7(e,e7()))}function $5(e){let t=P.get(e);return t!==void 0&&N5(t.currentState)}function e7(){return Pg(Sg(qv()))}function t7(e,t){if(!V5)return;let n=e===null?void 0:P.get(e);if(e===null||!n){n7(),i7(V5);return}let r=U5!==e;U5=e,V5.calm.hidden=!0,V5.stage.hidden=!1,r7(V5,n,t.filter(t=>t!==e).length),a7(V5.petStrip,e),(Mr()!==e||n.card.parentElement!==V5.cardSlot)&&(Nr(n,e,V5.cardSlot,{className:`zen-staged`}),VC(n,e,!0),r&&d7(n,e))}function n7(){U5!==null&&Mr()===U5&&Pr(),U5=null}function r7(e,t,n){e.stagedNeed.textContent=R5(t.currentState,t.pendingPromptKind),e.stagedNeed.dataset.state=t.currentState,e.queuedBehind.textContent=`${n} more waiting`,e.queuedBehind.hidden=n===0}function i7(e){e.stage.hidden=!0,e.calm.hidden=!1;let t=qv().filter(e=>z5.has(e.state)).length;e.workingCount.textContent=`${t} working`,a7(e.meadow,null)}function a7(e,t){let n=Sg(qv()).filter(e=>N5(e.state)&&e.id!==t),r=new Set(n.map(e=>e.id));for(let[e,t]of G5)r.has(e)||(t.root.remove(),P.has(e)||G5.delete(e));for(let t of n){let n=G5.get(t.id)??o7(t.id);n.root.parentElement!==e&&e.append(n.root),s7(n,t.ui,t.name)}}function o7(e){let t=j(`button`,`zen-pet`);t.type=`button`,t.dataset.sessionId=e;let n=F5(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`,()=>Q5(e));let r=j(`span`,`zen-pet-walker`),i=j(`span`,`zen-pet-bubble`);i.setAttribute(`aria-hidden`,`true`);let a=j(`span`,`zen-pet-facing`),o=j(`span`,`zen-pet-hopper`),s=P5(e,zc().flyingAnimalsExcludedSprites);o.append(s?Uc(s,`zen-pet-sprite`):j(`span`,`zen-pet-dot`)),a.append(o);let c=j(`span`,`zen-pet-zzz`,`zzz`);c.setAttribute(`aria-hidden`,`true`);let l=j(`span`,`zen-pet-name`);r.append(i,a,c,l),t.append(r);let u={root:t,hopper:o,bubble:i,name:l};return G5.set(e,u),u}function s7(e,t,n){l7(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=`${qN(t.path)}: ${R5(t.currentState,t.pendingPromptKind)}`;let r=L5({state:t.currentState,unseenOutcome:t.unseenOutcome});e.bubble.hidden=r===null,r!==null&&iv(e.bubble,r)}function c7(e){B5?.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 l7(e,t,n){e.root.dataset.mood=I5({state:t.currentState,activity:t._activity,lastOutputAtMs:t._lastOutputAt,nowMs:n})}function u7(e,t){if(!H5)return;let n=e.card?.dataset.id,r=n?G5.get(n):void 0;r?.root.isConnected&&(l7(r,e,performance.now()),t===`beat`&&c7(r))}vf(u7),kf(()=>{if(!H5)return;let e=performance.now();for(let[t,n]of G5){let r=P.get(t);r&&n.root.isConnected&&l7(n,r,e)}});function d7(e,t){requestAnimationFrame(()=>requestAnimationFrame(()=>{H5&&U5===t&&!document.hidden&&document.hasFocus()&&e.term?.focus()}))}function f7(e,t){return t.isPhoneShellActive?t.phoneScreen===e:t.activeView===e}function p7(e,t){return e.flatMap(e=>!e.gate||!(`fromSettings`in e.gate)?[]:[{view:e,isAvailable:e.gate.fromSettings(t)}])}function m7(e){return{isActive:e===!0||typeof e==`string`,level:typeof e==`string`?e:null}}function h7(e,t){e?.refreshOn?.includes(t)&&e.refresh?.(t)}function g7(e,t,n){for(let r of e)f7(r.view,t)&&h7(r,n)}function _7(e){let t=[{view:`focus`,label:`Focus`,panelClass:`focus-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,hasReviewSidebar:!0,mount:()=>DP({rail:document.getElementById(`focus-rail`),center:document.getElementById(`focus-center`),resizer:document.getElementById(`focus-rail-resizer`)}),activate:eF,deactivate:rF},{view:`zen`,label:`Zen`,panelClass:`zen-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,gate:{fromSettings:a2.zenView},mount:K5,activate:J5,deactivate:Y5},{view:`prs`,label:`Reviews`,glyph:`⇅`,panelClass:`pr-view`,gate:{fromSettings:a2.teamReview},mount:t=>OY(t,{openTerminal:e.openTerminal,openReviews:e.openReviews}),attention:{subscribe:_Y,acknowledge:DY},onConnectionChange:e=>{iG(e),SY(e)}},{view:`issues`,label:`Issues`,glyph:`#`,panelClass:`issues-view`,mount:vZ,refreshOn:[`shown`],refresh:yZ,onConnectionChange:xZ},{view:`usage`,label:`Usage`,glyph:`◔`,panelClass:`usage-view`,gate:{fromSettings:a2.usage},mount:P4,attention:{subscribe:k4,acknowledge:T4},onConnectionChange:N4,refreshOn:[`shown`,`connected`,`usage-sessions`],refresh:e=>{e===`shown`&&F4(),M4()}},{view:`radar`,label:`Radar`,glyph:`◎`,panelClass:`radar-view`,gate:{fromSettings:a2.posthog},mount:jQ,attention:{subscribe:kQ,acknowledge:OQ}},{view:`visions`,label:`Visions`,glyph:`◇`,panelClass:`visions-view`,gate:{fromSettings:a2.visions},mount:iL,attention:{subscribe:tL,acknowledge:()=>{oL(),aL()}},onConnectionChange:rL},{view:`hooks`,label:`Hooks`,glyph:`◈`,panelClass:`hooks-view`,mount:fz,refreshOn:[`shown`,`connected`,`hooks-updated`],refresh:e=>{e===`shown`&&pz(),dz()}},{view:`trace`,label:`Trace`,panelClass:`trace-view`,gate:{subscribe:S_},mount:Zk,refreshOn:[`shown`],refresh:nA,onAvailabilityChange:e=>AQ(e?eA:null),onConnectionChange:oA},{view:`benchmarks`,label:`Bench`,panelClass:`bench-view`,gate:{fromSettings:a2.benchmarks},mount:dX,onConnectionChange:fX},{view:`settings`,label:`Settings`,glyph:`@`,panelClass:`settings-view`,hasPanelChrome:!1,mount:t=>A8(t,{onRestart:e.onRestart})}],n=M(document,`#app-main`,`main`),r=t.map(t=>{let r=j(`button`,`header-tab`,t.label);r.id=`tab-${t.view}`,r.type=`button`;let i=`view-${t.view}`;r.setAttribute(`role`,`tab`),r.setAttribute(`aria-controls`,i);let a=t.view===`focus`;r.setAttribute(`aria-selected`,String(a)),r.tabIndex=a?0:-1,t.glyph&&(r.dataset.phoneGlyph=t.glyph);let o=document.getElementById(i)??j(`section`);if(o.classList.add(t.panelClass),o.id=i,o.setAttribute(`role`,`tabpanel`),o.setAttribute(`aria-labelledby`,r.id),o.hidden=!0,o.parentElement||n.append(o),r.hidden=t.gate!==void 0,o.classList.toggle(`view-panel`,t.hasPanelChrome!==!1),t.attention){let n=j(`span`,`tab-activity`);n.id=`tab-${t.view}-activity`,n.setAttribute(`aria-hidden`,`true`),r.append(n),t.attention.subscribe(r=>{let{isActive:i,level:a}=m7(r);n.classList.toggle(`active`,i),a===null&&n.removeAttribute(`data-attention`),a!==null&&n.setAttribute(`data-attention`,a),e.setPhoneAttention(t.view,r)})}return{...t,tab:r,el:o}});return M(document,`#header-tabs`,`div`).replaceChildren(...r.map(e=>e.tab)),r}Nb(qs()),Pb(Us()),Fb(Gs()),l$(Ys()),qy(),pg(document);var v7=M(document,`#connection-status`,`span`),y7=M(v7,`.connection-label`,`span`),b7=M(document,`#loading-screen`,`div`),x7=M(document,`#loading-status`,`div`),S7=M(document,`#loading-detail`,`div`),C7=M(document,`#shutdown-screen`,`div`),w7=M(document,`#shutdown-status`,`div`),T7=!1,E7=null,D7=!1;function O7(){let e=Wc(),t=b7.querySelector(`.loading-spinner`);e&&t&&t.replaceWith(Uc(e,`loading-animal`))}O7();function k7(){T7||E7===null||w5({hasSnapshot:D7,connectingTerminalCount:xC(),msSinceConnected:performance.now()-E7})===`reveal`&&A7()}bC(k7);function A7(){if(T7)return;T7=!0,b7.classList.add(`fade-out`);let e=()=>b7.remove();b7.addEventListener(`transitionend`,e,{once:!0}),setTimeout(e,1e3)}function j7(e,t){v7.dataset.state=`shutdown`,y7.textContent=e,v7.title=e,b9.disabled=!0,w7.textContent=t,C7.classList.add(`active`)}var M7=new Set([`disconnected`,`connecting`]);function N7(e,t,n){v7.dataset.state=e,v7.toggleAttribute(`data-reconnected`,n),y7.textContent=t,v7.title=t}function P7(e,t){N7(e,t,e===`connected`&&M7.has(v7.dataset.state??``))}function F7(e,t){v7.dataset.state!==`shutdown`&&N7(e===`verified`?`connected`:e,t,!1)}var I7=1e4,L7=`The server is not answering. Check the terminal running Glimmervoid for errors, or start it again with glimmervoid. This page reconnects on its own.`,R7=`Server not answering. Check the Glimmervoid terminal for errors, or run glimmervoid. This page retries on its own.`,z7=null,B7=!1;function V7(){x7.textContent=`Reconnecting to server...`,S7.textContent=R7,S7.hidden=!B7}function H7(){z7=null,B7=!0,T7?jd(L7,{hidesInStreamerMode:!1}):V7()}function U7(){z7!==null||B7||(z7=window.setTimeout(H7,I7))}function W7(){z7!==null&&window.clearTimeout(z7),z7=null,B7=!1,S7.hidden=!0,Md(L7)}fd((e,t)=>{if(e===`connecting`||e===`verified`)F7(e,t);else{P7(e,t),vN(e===`connected`);for(let t of A9)t.onConnectionChange?.(e===`connected`);if(e===`connected`){if(W7(),I9&&L9(I9),C7.classList.contains(`active`)){location.reload();return}hm(),document.body.classList.add(`app-ready`),!T7&&E7===null&&(E7=performance.now(),x7.textContent=`Connecting to sessions...`,setTimeout(A7,C5)),k7(),Y9(),n9(`connected`),hd(`get-settings`,{}).then(e=>{e.settings&&(V9(e.settings),jr()===`settings`&&T9(location.hash))}).catch(()=>{})}else e===`disconnected`&&C7.classList.contains(`active`)?w7.textContent=`Waiting for server...`:(U7(),T7||V7())}});function G7(){X5(),bZ(),YW(),FB()}function K7(){RP(),G7()}var q7=null;function J7(e){let t=G8(q7,e);q7=t.knownBuild,t.reload&&location.reload()}function Y7(e){VI(new Map(e.filter(e=>!e.ephemeral).map(e=>[e.id,e.name]))),L8(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){Kh(t.id,t.coherenceHooks),t.ephemeral||Fv(t.path),zY(t.id,t.linkedPrs);let e=iN(t.id);e&&GN(t.id,t.state,t.stateSince),e&&F_(t.id,!!t.saneYolo),e&&SN(t.id,t.isGuarded,t.isGuardrailsReleased),e||lN(t.id,t.name,t.state,VQ(t)),VN(t.id,t.failureReason),rN(t.id,t.taskTitle,t.taskTitleIsCustom),bN(t.id,t.agent),FN(t.id,t.mergeStatus,t.mergeReason),yN(t.id,t.effectiveBase),TN(t.id,t.activeAgents,t.awaitingBackgroundTasks),jN(t.id,t.pendingWakeup),ON(t.id,t.pendingPromptKind,t.isCompacting,t.isWaitingForMemory),kN(t.id,t.unseenOutcome),XM(t.id,t),pN(t.id,t.hasPlan),t9(t.id)}cN(),$g(P),RP(),nF(),G7(),X7(),D9(location.hash),D7=!0,k7()}function X7(){tA([...P].map(([e,t])=>({id:e,name:Cr(t)||e})))}function Z7(e,t){pN(e,t?.hasPlan===!0),kN(e,t?.unseenOutcome),t9(e)}function Q7(e){if(!iN(e.id))lN(e.id,e.session,e.to,VQ({skipPerms:e.skipPerms,saneYolo:e.saneYolo,stateSince:e.timestamp})),$g(P),bZ();else if(e.to===A.DORMANT&&e.from!==A.DORMANT){let t=P.get(String(e.id)),n=document.querySelector(`.session-card[data-id="${CSS.escape(String(e.id))}"]`),r=n instanceof HTMLElement?n:null,i=r?r.dataset.skipPerms!==void 0:!1,a=e.saneYolo??(r?r.dataset.saneYolo!==void 0:!1),o=r?r.dataset.path:void 0;RN(e.id),lN(e.id,e.session,A.DORMANT,VQ({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})),bN(e.id,t?.agent),Z7(e.id,t),K7(),$E(e.id),$g(P)}else GN(e.id,e.to,e.timestamp,e.event),VN(e.id,e.failureReason),e.saneYolo!==void 0&&F_(e.id,e.saneYolo),$g(P),$E(e.id),K7(),nv(e.id),e.to===A.INITIALIZING&&(e.from===A.DONE||e.from===A.FAILED)&&AC(e.id)}var $7=new Map;function e9(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};$7.set(n.id,e),EN(n.id,e)}for(let e of[...$7.keys()])t.has(e)||($7.delete(e),EN(e,null))}function t9(e){let t=$7.get(e);t&&EN(e,t)}j4(K),uz(K),Qk(K),_Z(K),uX(K),T_(LY),gv(Xh),gv(FY),D_({isReadable:Zh,open:$h}),k_(zQ);function n9(e){g7(A9,{isPhoneShellActive:NB(),activeView:jr(),phoneScreen:Ar.snapshot().phoneScreen},e)}oh(()=>n9(`settings-updated`));var r9={snapshot:e=>{J7(e.serverBuild),Y7(e.sessions)},"hooks-report":e=>mz(e),"save-hook-result":()=>hz(),"delete-hook-result":()=>hz(),"state-change":e=>Q7(e),"session-added":e=>{e.ephemeral||Fv(e.path),zY(e.id,e.linkedPrs),iN(e.id)||(lN(e.id,e.session,e.state,VQ(e)),bN(e.id,e.agent),t9(e.id)),$g(P),K7(),X7()},"session-removed":e=>{RN(e.id),qh(e.id),tD(e.id),BY(e.id),$g(P),K7(),X7()},"session-title":e=>{rN(e.id,e.taskTitle,e.isCustom),K7()},"session-prs":e=>zY(e.id,e.linkedPrs),"session-renamed":e=>{LN(e.id,e.newName),K7(),X7()},"session-modified":e=>{e.ephemeral||Fv(e.path);let t=P.get(String(e.id));Kh(e.id,null),RN(e.id),tD(e.id),zY(e.id,e.linkedPrs),lN(e.id,e.session,e.state,VQ(e)),bN(e.id,e.agent),Z7(e.id,t),$g(P),K7(),X7()},"session-git":e=>xN(e.id,!!e.worktree),"session-agents":e=>{TN(e.id,e.activeAgents,e.awaitingBackgroundTasks),K7(),nv(e.id)},"session-wakeup":e=>jN(e.id,e.pendingWakeup),"session-unseen":e=>{kN(e.id,e.unseenOutcome),cN(),$g(P),K7()},"session-prompt":e=>{ON(e.id,e.pendingPromptKind,e.isCompacting===!0,e.isWaitingForMemory===!0),G7()},"session-merge-status":e=>{PN(e.id,e.mergeStatus,e.reason),YP(e.id,e.mergeStatus),G7()},"session-worktree-blocked":e=>{jd(`${e.session}: ${e.notice||`integration branch not found`}`)},"session-worktree-warning":e=>{jd(`${e.session}: ${e.notice||`base branch warning`}`)},"session-worktree-ready":e=>{yN(e.id,e.base)},"session-diff":e=>{IN(e.id,{committed:e.committed,uncommitted:e.uncommitted,hasCommits:e.hasCommits})},"session-diff-error":e=>{WE(e.id,e.message)},"change-map":e=>GE(e.id,e.map),"branch-sync-status":e=>XE(e.id,e),"session-changed":e=>QE(e.id),"post-turn-result":e=>MN(e.id,e),"debug-state-response":e=>tv(e),"session-trace-response":e=>{ZM(e)||rA(e)},"session-trace-changed":e=>{$M(e.id),iA(e)},"session-conversation":e=>{XM(e.id,e),G7()},"session-plan-changed":e=>{mN(e),G7()},"session-plan-draft":e=>{hN(e)},"session-plan-response":e=>{gN(e)},"session-docs-changed":e=>kh(e),"session-docs-snapshot":e=>Ah(e),"session-coherence-hooks":e=>{Kh(e.id,e.coherenceHooks),K7()},"session-coherence":e=>{Jh(e),K7()},"session-coherence-snapshot":e=>{Yh(e),K7()},"session-coherence-journal-response":e=>eg(e),"session-setup-response":e=>BQ(e),notify:e=>{xp(e),nv(e.session)},"update-status":e=>{u9(e),V8(e)},"update-progress":e=>H8(e.journal),"post-turn-leftovers":e=>f9(e),error:e=>{let t=U8(e),n=aA(e);QM(e);let r=_N(e);t||n||r||jd(e.message)},"session-error":e=>{VE(e.id),!_N(e)&&BN(e.id,e.message)},"settings-updated":e=>{e.settings&&V9(e.settings),hm()},"agent-logins":e=>Hf(e.logins),"health-snapshot":e=>{e.stats&&Sw(e.stats)},"radar-status":e=>MQ(e),"radar-investigation-activity":e=>NQ(e),"radar-investigation-finished":e=>FQ(e),"team-review-status":e=>yY(e),"github-prs":e=>Hn(e),"my-prs-status":nG,"benchmark-status":e=>pX(e),"benchmark-action-result":e=>mX(e),"my-pr-merge-result":e=>aG(e),"team-review-action-result":e=>CY(e),"open-team-review-session-result":e=>xY(e),"issues-status":e=>SZ(e),"issue-detail-result":e=>CZ(e),"open-issue-session-result":e=>wZ(e),"usage-sessions":e=>{e9(e.sessions),I4(e)},"usage-report":e=>{R4(e),z8()},"plan-limits":e=>L4(e),"usage-budget-alert":e=>xp({session:`budget-${e.scope}-${e.periodKey}`,category:`threshold-${e.threshold}`,message:e.text,ignoreFocus:!0}),"visions-findings":e=>cL(e),"visions-comments":e=>lL(e),"visions-hand":e=>uL(e),"visions-intent":e=>dL(e),"visions-fix":e=>sL(e),"visions-snapshot":e=>mL(e),"ingest-activity":e=>fL(e),"ingest-snapshot":e=>pL(e),"client-trust":e=>gee(e.trust),"shutting-down":()=>j7(`Shutting down...`,`Shutting down sessions...`),restarting:()=>j7(`Restarting...`,`Restarting server...`)};function i9(e){let t=r9[e.type];t&&t(e)}pd(e=>{i9(e),n9(e.type)});var a9,o9=null;function s9(e,t,n){e.onclick=()=>{let e=br(n);e?e.then(()=>{t.textContent=`Copied`}).catch(()=>{t.textContent=`Copy failed`}):t.textContent=`Copy failed`}}var c9=Tp(Al,jl,`Update`).href;function l9(e){let{latestSha:t,latest:n}=e;return typeof n==`string`&&n?n:typeof t==`string`&&t?t:null}function u9(e){let t=M(document,`#update-banner`,`div`),{mode:n,tone:r,text:i}=Vu(e),a=r===`security`;if(!e.updateAvailable&&!a){t.hidden=!0;return}let o=l9(e),s=o&&n===`restart`?`${o}:ready`:o;if(a&&i===o9||!a&&a9!==void 0&&s===a9||!a&&s&&hc()===s)return;t.classList.toggle(`update-banner-security`,a);let c=String(e.command??``);M(document,`#update-banner-text`,`span`).textContent=i,M(document,`#update-banner-cmd`,`code`).textContent=c;let l=M(document,`#update-banner-update`,`a`);l.href=c9,l.hidden=n!==`link`;let u=M(document,`#update-banner-restart`,`button`);u.hidden=n!==`restart`,u.onclick=J9;let d=M(document,`#update-banner-cmd`,`code`);d.hidden=n!==`command`;let f=M(document,`#update-banner-copy`,`button`);f.hidden=n!==`command`;let p=M(document,`#update-banner-copy-status`,`span`);p.hidden=n!==`command`,p.textContent=``;let m=M(document,`#update-banner-link`,`a`);m.hidden=!e.releaseUrl,m.href=typeof e.releaseUrl==`string`?e.releaseUrl:``,t.hidden=!1,s9(f,p,c),M(document,`#update-banner-dismiss`,`button`).onclick=()=>{t.hidden=!0,a?o9=i:(a9=s,gc(s))}}var d9=!1;function f9({repositories:e,command:t}){let n=M(document,`#post-turn-leftovers-banner`,`div`);if(e.length===0){n.hidden=!0;return}if(d9)return;let r=M(document,`#post-turn-leftovers-copy-status`,`span`);M(document,`#post-turn-leftovers-text`,`span`).textContent=er(e.length),M(document,`#post-turn-leftovers-cmd`,`code`).textContent=t,r.textContent=``,n.hidden=!1,s9(M(document,`#post-turn-leftovers-copy`,`button`),r,t),M(document,`#post-turn-leftovers-dismiss`,`button`).onclick=()=>{d9=!0,n.hidden=!0}}var p9=M(document,`#telemetry-banner`,`div`);function m9(){vc(!0),p9.hidden=!0}function h9(e){p9.hidden=!S5(e,_c())}var g9=M(document,`#telemetry-banner-settings`,`a`);g9.href=Tp(`privacy`,`telemetry-enabled`,`Open settings`).href,g9.addEventListener(`click`,m9),M(document,`#telemetry-banner-dismiss`,`button`).addEventListener(`click`,m9),M(document,`#btn-add-session-header`,`button`).addEventListener(`click`,Xf);var _9=M(document,`#btn-mute`,`button`);KY(_9);var v9=M(document,`#btn-streamer`,`button`);uh(v9),y5();var y9=M(document,`#power-menu`,`div`),b9=M(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()))}),hr(document.querySelector(`.header`));function S9(e){e&&P8(e),!LB(`settings`)&&z9(`settings`,{section:e})}function C9(){Cp(location.hash)&&history.replaceState(history.state,``,`${location.pathname}${location.search}`)}function w9(e){return e?(P8(e.sectionId,e.settingId),LB(`settings`)||z9(`settings`,{section:e.sectionId,setting:e.settingId,persist:!1}),!0):!1}function T9(e){return w9(F8(e))}var E9=`No plan is stored for this session yet.`;function D9(e){let t=sp(e);return t?!iN(t)||(history.replaceState(history.state,``,`${location.pathname}${location.search}`),NB()?(MB(t)||jd(E9),!0):(z9(`focus`,{persist:!1}),ZP(t)||jd(E9),!0)):!1}function O9(e){return D9(e)?!0:T9(e)}function k9(e){e.newURL===location.href&&O9(location.hash)}document.addEventListener(`click`,e=>{if(!NB()||e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href^="#"]`):null;t instanceof HTMLAnchorElement&&O9(t.hash)&&e.preventDefault()}),dU(M(document,`#celebration-tray`,`div`),M(document,`#btn-celebrations`,`button`),M(document,`#celebration-tray-count`,`span`)),M(document,`#btn-help`,`button`).addEventListener(`click`,()=>{S9(`browser-shortcuts`)});var A9=_7({onRestart:J9,openTerminal:e=>{IB(e)||(z9(`focus`),XP(e))},openPlan:e=>{z9(`focus`),ZP(e)},openReviews:()=>M9(`prs`)?(LB(`prs`)||z9(`prs`),!0):!1,setPhoneAttention:zB});L3(A9),LE({panel:document.getElementById(`review-sidebar`)});for(let e of A9)e.mount(e.el);function j9(e){return A9.find(t=>t.view===e)}function M9(e){return A9.some(t=>t.view===e&&!t.tab.hidden)}var N9=!0,P9=null;function F9(e){j9(e)?.attention?.acknowledge()}var I9=null;function L9(e){I9=K({type:`dashboard-telemetry`,event:`view_shown`,properties:{view:e}})?null:e}function R9(e){let t=j9(e);h7(t,`shown`),t&&L9(e)}function z9(e,{section:t,setting:n,persist:r=!0}={}){if(!M9(e))return;let i=jr();Ar.dispatch(`setActiveView`,e),N9=r,r&&(P9=null),document.body.dataset.activeView=e,document.body.dataset.reviewSidebarHidden=String(j9(e)?.hasReviewSidebar!==!0),r&&Qs(e);for(let t of A9){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&&j9(i)?.deactivate?.(),j9(e)?.activate?.(),R9(e),i===`settings`&&e!==`settings`&&C9(),e===`settings`&&t&&P8(t,n??null),F9(e)}function B9(e,t){let{view:n}=e;e.tab.hidden=!t,RB(n,t),e.onAvailabilityChange?.(t),!NB()&&(!t&&jr()===n&&z9(`focus`),t&&P9===n&&z9(n))}function mee(e){for(let{view:t,isAvailable:n}of p7(A9,e))B9(t,n)}function V9(e){oN(e),I8(e),qI(e),mee(e),h9(e),ah(e.streamerMode===!0),pee(e.conversationView===!0)}for(let e of A9)e.gate&&(B9(e,!1),`subscribe`in e.gate&&e.gate.subscribe(t=>B9(e,t)));$k(()=>{M9(`trace`)&&(LB(`trace`)||z9(`trace`))});function H9(e,t){let n=A9.filter(e=>!e.tab.hidden),r=n[(n.findIndex(t=>t.view===e)+t+n.length)%n.length];return z9(r.view),r.tab}function hee(e){A9.some(e=>e.tab===document.activeElement)&&e.focus()}for(let e=0;e<A9.length;e++){let{view:t,tab:n}=A9[e];n.addEventListener(`click`,()=>z9(t)),n.addEventListener(`keydown`,e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),H9(jr(),e.key===`ArrowRight`?1:-1).focus()))})}var U9=Zs(),W9=F8(location.hash),G9=sp(location.hash);if(W9&&z9(`settings`,{section:W9.sectionId,setting:W9.settingId,persist:!1}),G9&&z9(`focus`,{persist:!1}),!W9&&!G9){let e=M9(U9);e||(P9=U9),z9(e?U9:`focus`,{persist:e})}kB({panels:gz(A9),onScreenShown:e=>{R9(e),e!==`settings`&&C9(),e===`settings`&&!Cp(location.hash)&&P8(),F9(e)},canGoBack:e=>e===`settings`&&T8(),onBack:e=>{e===`settings`&&E8()},headerControls:[M(document,`.header-title`,`h1`),M(document,`#status-indicator`,`div`),M(document,`#celebration-tray`,`div`),M(document,`#btn-add-session-header`,`button`),M(document,`#btn-help`,`button`),_9,M(document,`#streamer-badge`,`span`),v9,y9]}),C8(SB);function K9(e){if(e===`phone`){let e=EP();for(let e of A9)e.deactivate?.();let t=F8(location.hash);AB({sessionId:e??void 0,linkedScreenId:t?`settings`:void 0}),t&&P8(t.sectionId,t.settingId);return}let t=PB();jB();let n=jr();z9(M9(n)?n:`focus`,{persist:N9}),t&&XP(t)}Jy()&&K9(`phone`),Yy(K9),window.addEventListener(`hashchange`,k9);function q9({type:e,title:t,confirmLabel:n,danger:r,idleMessage:i,actionAfterKillingSessions:a}){y9.classList.remove(`open`),x9();let o=aN();tf({title:t,message:o>0?`Kill ${o} session${o>1?`s`:``} and ${a}?`:i,confirmLabel:n,danger:r||o>0,onConfirm:()=>K({type:e})})}function J9(){q9({type:`restart-server`,title:`Restart Server`,confirmLabel:`Restart`,danger:!1,idleMessage:`Restart the server?`,actionAfterKillingSessions:`restart the server`})}M(document,`#btn-restart`,`button`).addEventListener(`click`,J9);function gee(e){let t=Kn(`shutdown`,e);M(document,`#btn-shutdown`,`button`).hidden=!t,M(document,`#menu-divider-shutdown`,`div`).hidden=!t}M(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 _ee=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function vee(e,t){return e.value!==``&&_ee.has(t.key)}function yee(e){let t=document.activeElement;return t instanceof HTMLElement?t.isContentEditable?!0:t instanceof HTMLTextAreaElement&&t.dataset.dashboardShortcuts===`allowed`?vee(t,e):(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)&&!t.classList.contains(`xterm-helper-textarea`):!1}function bee({action:e,step:t}){switch(e){case`merge`:return nD(),!0;case`resolve-or-resync`:return iD()||sD(),!0;case`new-session`:return document.getElementById(`btn-add-session-header`)?.click(),!0;case`next-attention`:return Jy()?!1:q5()?(Z5(),!0):TP()?(HP(),!0):(tF(()=>z9(`focus`)),!0);case`rail-step`:return TP()?($P(t),!0):!1;case`view-step`:return!Jy()&&(hee(H9(jr(),t)),!0);case`session-nth`:return TP()?(QP(t),!0):!1;case`streamer-mode`:return lh(),!0}}document.addEventListener(`keydown`,e=>{if(e.repeat||yee(e))return;let t=Bp(e,Jp,{isTerminalFocused:document.activeElement?.classList.contains(`xterm-helper-textarea`)??!1});t&&bee(t)&&e.preventDefault()});var xee=Yn({mode:`trailing`,delayMs:150,run:()=>{K({type:`focus-change`,focused:document.hasFocus()})}});function Y9(){xee.schedule()}function X9(){Y9(),zC(F(Mr()))}window.addEventListener(`focus`,X9),window.addEventListener(`blur`,X9),document.addEventListener(`visibilitychange`,X9);var Z9=!1;async function Q9(){if(!Z9){Z9=!0,OC();try{if(await bd()===`ok`)return;for(let e of P.keys())AC(e)}finally{kC(),Z9=!1}}}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&(FS(),Q9())}),window.addEventListener(`online`,Q9);var $9=Uo(K);window.addEventListener(`error`,e=>$9(e.error)),window.addEventListener(`unhandledrejection`,e=>$9(e.reason)),window.addEventListener(`pageshow`,e=>{e.persisted&&(FS(),Q9())}),xw(M(document,`#health-footer-mount`,`div`)),ab(sN),U7(),yd();