glimmervoid 0.38.2 → 0.39.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 (37) hide show
  1. package/dist/bin/glimmervoid.js +23 -29
  2. package/dist/chunks/{adapters-CAHxZYT3.js → adapters-B9tP9MXC.js} +26 -14
  3. package/dist/chunks/{adapters-DDjC7_vG.js → adapters-Buu6yI71.js} +1 -1
  4. package/dist/chunks/{agent-api-cli-B5Tm0wXO.js → agent-api-cli-2_RwTTTJ.js} +4 -66
  5. package/dist/chunks/{agent-api-cli-BDu1CxZf.js → agent-api-cli-PfCov-qb.js} +1 -1
  6. package/dist/chunks/agent-api-core-D2HLgBEe.js +180 -0
  7. package/dist/chunks/{agent-setup-cli-DmMfCw5O.js → agent-setup-cli-C1nFdgFg.js} +2 -2
  8. package/dist/chunks/config-store-8Z9vkWvf.js +1 -0
  9. package/dist/chunks/{config-store-BUNZs4j7.js → config-store-n23JDU4E.js} +63 -268
  10. package/dist/chunks/{contracts-HVCEJfxs.js → contracts-DYQW11de.js} +1018 -171
  11. package/dist/chunks/{git-version-rWZjF2Px.js → git-version-DXozXVnb.js} +2 -2
  12. package/dist/chunks/{grok-B6bsCgdd.js → grok-DeGAXgZF.js} +7 -8
  13. package/dist/chunks/{guardrails-deps-Cb-ki4EU.js → guardrails-deps-CLxK4J-g.js} +1 -1
  14. package/dist/chunks/{json-file-CIJf0Cel.js → json-file-DFCTvPjj.js} +3 -7
  15. package/dist/chunks/{main-BNSbP-Yk.js → main-D4uwk-_M.js} +16436 -21253
  16. package/dist/chunks/{pair-cli-DNp8i5L4.js → pair-cli-D9DZBqk0.js} +2 -2
  17. package/dist/chunks/{remote-config-C_s2pnLC.js → remote-config-DiLwnzBq.js} +2 -2
  18. package/dist/chunks/{session-BlT68ppa.js → session-D2EbiysG.js} +20 -32
  19. package/dist/chunks/{session-routes-CT1JrjoT.js → session-routes-BQAZzMKZ.js} +3 -8
  20. package/dist/chunks/{settings-cli-BbzxCyG5.js → settings-cli-DP4t-I9U.js} +3 -3
  21. package/dist/chunks/{ssh-sign-cli-C74BGTQS.js → ssh-sign-cli-D2RIs-iN.js} +2 -2
  22. package/dist/client/assets/index-C0YUJwjz.css +2 -0
  23. package/dist/client/assets/index-w8lG-tk2.js +148 -0
  24. package/dist/client/assets/xterm-kR64YvZ-.js +79 -0
  25. package/dist/client/assets/zod-BRLv4KqJ.js +55 -0
  26. package/dist/client/index.html +5 -2
  27. package/dist/scripts/postinstall-path-check.js +21 -3
  28. package/dist/server/index.js +1 -1
  29. package/package.json +2 -3
  30. package/dist/chunks/agent-api-core-B_mUSenR.js +0 -341
  31. package/dist/chunks/browser-config-BrBT8269.js +0 -762
  32. package/dist/chunks/config-CjawSOBk.js +0 -219
  33. package/dist/chunks/config-store-MAVQhGMh.js +0 -1
  34. package/dist/chunks/factory-D7ryES9n.js +0 -240
  35. package/dist/chunks/knowledge-graph-cli-ByUJoKw_.js +0 -1354
  36. package/dist/client/assets/index-B5uVtedd.css +0 -1
  37. package/dist/client/assets/index-b13-NGGS.js +0 -275
@@ -0,0 +1,148 @@
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)}})();function x(e){return e===`remote`?`remote`:`local`}function S(e,t){return x(t)===`local`||e!==`shutdown`}var ee=Object.freeze({setTimeoutFn:(e,t)=>setTimeout(e,t),clearTimeoutFn:e=>clearTimeout(e),setIntervalFn:(e,t)=>setInterval(e,t),clearIntervalFn:e=>clearInterval(e)});function te(e){return typeof e!=`object`||!e||!(`unref`in e)||typeof e.unref!=`function`||e.unref(),e}function C({mode:e,delayMs:t,run:n,setTimeoutFn:r=ee.setTimeoutFn,clearTimeoutFn:i=ee.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&&te(o))}return{schedule:c,cancel:s,get isArmed(){return o!==null}}}var w=Object.freeze({DORMANT:`DORMANT`,INITIALIZING:`INITIALIZING`,STARTING:`STARTING`,RUNNING:`RUNNING`,WAITING:`WAITING`,IDLE:`IDLE`,COMPLETE:`COMPLETE`,DONE:`DONE`,FAILED:`FAILED`}),T=Object.freeze({[w.DORMANT]:`Dormant`,[w.INITIALIZING]:`Preparing`,[w.STARTING]:`Starting`,[w.RUNNING]:`Working`,[w.WAITING]:`Needs Input`,[w.IDLE]:`Idle`,[w.COMPLETE]:`Complete`,[w.DONE]:`Exited`,[w.FAILED]:`Failed`}),ne=Object.freeze({[w.DORMANT]:`○`,[w.INITIALIZING]:`◴`,[w.STARTING]:`◐`,[w.RUNNING]:`●`,[w.WAITING]:`◆`,[w.IDLE]:`◎`,[w.FAILED]:`▲`,[w.DONE]:`■`,[w.COMPLETE]:`◇`}),re=Object.freeze([w.INITIALIZING,w.STARTING,w.RUNNING,w.WAITING,w.IDLE,w.COMPLETE]),ie=Object.freeze([w.DONE,w.FAILED]),ae=Object.freeze([w.WAITING,w.IDLE,w.COMPLETE]);function oe(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:`}function se(e,t){return!e||e.toLowerCase().endsWith(`[bot]`)?null:`https://avatars.githubusercontent.com/${encodeURIComponent(e)}?s=${t*2}`}function ce(e){return e.match(/[a-z0-9]/i)?.[0]?.toUpperCase()??`?`}function E(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function D(e,t,n){let r=E(e,t);return r.innerHTML=n,r}function le(e,t){for(let[n,r]of t)e.style.setProperty(n,r)}function O({login:e,url:t,cssPx:n}){let r=E(`span`,`avatar`);r.style.width=`${n}px`,r.style.height=`${n}px`;let i=()=>E(`span`,`avatar-monogram`,ce(e)),a=t===void 0?se(e,n):t;if(!a)return r.append(i()),r;let o=E(`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 k(e,t){let n=E(`span`,`avatar-stack`);for(let r of e){let e=O({login:r.login,url:r.url,cssPx:t});e.title=r.title,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,r.title);let i=E(`span`,`avatar-badge`);i.dataset.tone=r.tone,e.append(i),n.append(e)}return n}function A(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 ue(e,t){let n=e.querySelector(t);if(!(n instanceof HTMLElement))throw Error(`${t} matches no element`);return n}function de(e,t,n,r=t){if(!n){let n=E(`span`,e,t);return n.title=r,n}let i=E(`a`,e,t);return i.title=r,i.href=n,i.target=`_blank`,i.rel=`noopener`,i}function fe(e,t){return e===w.RUNNING&&t===!0}function pe(e,t=!1){let n=e,r=fe(e,t),i=r?`Monitoring`:T[n]||e;return{glyph:ne[n]||``,label:i.toUpperCase(),isMonitoring:r}}function me(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 he(e,t,n){let r=E(`section`,`${e}-section`),i=E(`div`,`${e}-section-head`);return i.append(E(`h2`,`${e}-section-title`,t)),n&&i.append(E(`span`,`${e}-section-hint`,n)),r.append(i),r}function ge(e,t,n,r){let i=E(`span`,`${e}-stat`);return r&&(i.dataset.tone=r),i.append(E(`span`,`${e}-stat-value`,n),E(`span`,`${e}-stat-label`,t)),i}function _e(e){return Array.isArray(e?.projects)?e.projects:[]}function ve(e){return!e||!!e.closest(`[hidden]`)}function ye(e){return navigator.clipboard?.writeText?navigator.clipboard.writeText(e):null}function be(e,t){e&&t&&e.parentElement!==t&&(e._adoptHome||={parent:e.parentElement,next:e.nextElementSibling},t.appendChild(e))}function xe(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 j=new Map;function Se(e){return e.card?.dataset.session||e.nameEl?.textContent||``}function M(e){return typeof e==`string`?e:String(e)}function N(e){return typeof e==`string`?j.get(e):void 0}var Ce=document.getElementById(`sessions-container`),we=document.getElementById(`aggregate-status`),Te=Object.freeze({layout:`desktop`,activeView:`focus`,phoneScreen:null,focusedSessionId:null,selectedSessionId:null,borrowedCardId:null}),Ee=e=>e||null,De=Object.freeze({setLayout:e=>({layout:e}),setActiveView:e=>({activeView:e}),setPhoneScreen:e=>({phoneScreen:Ee(e)}),focusSession:e=>({focusedSessionId:Ee(e)}),selectSession:e=>({selectedSessionId:Ee(e)}),borrowCard:e=>({borrowedCardId:Ee(e)})});function Oe(e){let t=Object.freeze({...Te,...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 Te))throw Error(`ui-state: unknown key "${r}"`);Object.is(t[r],e[r])||n.push(r)}return n}function o(e,r){let i=De[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 ke=Oe(),Ae=()=>ke.snapshot().activeView;function je(){return ke.snapshot().borrowedCardId}function Me(e,t,n,{className:r}={}){if(!e?.card||!n)return;let i=je();i&&i!==t&&Ne();let a=e.card;a._cardHostClass&&a._cardHostClass!==r&&a.classList.remove(a._cardHostClass),a._cardHostClass=r||``,r&&a.classList.add(r),be(a,n),ke.dispatch(`borrowCard`,t),e._ensureTerminalReady?.(),e._setBorrowed?.(!0),e._showPreferredFace?.()}function Ne(){let e=je();if(ke.dispatch(`borrowCard`,null),!e)return null;let t=j.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,xe(n,Ce)),e}var Pe=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,Fe=/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/,Ie=/^[A-Za-z0-9_=-]+$/;function Le(e){let t=e.split(`/`);return t.length!==2||!t.every(e=>Pe.test(e))?null:[t[0],t[1]]}var Re=g({attempt:c().int().positive(),limit:c().int().positive()}).refine(e=>e.attempt<=e.limit),ze={error:l().nullable().optional(),nextAttemptAt:c().finite().nonnegative().nullable().optional(),retry:Re.nullable().optional(),isRefreshing:t().optional(),refreshNotice:l().nullable().optional()},Be=g({lane:u([`my-prs`,`team-review`,`issues`])}),Ve=g({ok:t(),error:l().optional()}),He=l().regex(Fe),Ue=l().regex(RegExp(`${Fe.source.slice(0,-1)}#[1-9][0-9]*$`)),We=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:We.shape.number,url:We.shape.url,title:We.shape.title,state:u([`OPEN`,`MERGED`,`CLOSED`]),isDraft:t()}).nullable()).max(5)})}).nullable()});var Ge={key:l(),repo:He,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()},Ke=u([`project`,`me`,`team`]),qe={...Ge,sources:p(Ke).nonempty().refine(e=>new Set(e).size===e.length),teams:p(He),projectId:l().nullable(),pullRequests:p(We).max(5).default([])},Je=g(qe).refine(e=>e.key===`${e.repo}#${e.number}`),Ye=g({...qe,sessionId:l().nullable().default(null)}).refine(e=>e.key===`${e.repo}#${e.number}`),Xe=g({...Ge,state:u([`open`,`closed`])});g({number:Ge.number,title:Ge.title,html_url:Ge.url,state:u([`open`,`closed`]),labels:p(a([l(),g({name:l()})])),assignees:p(g({login:l()})),user:g({login:l()}).nullable(),comments:Ge.comments,created_at:Ge.createdAt,updated_at:Ge.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(Xe),isComplete:t(),error:l()}),g({issues:p(Je),lastSyncAt:c().finite().nonnegative().nullable(),perRepoSync:i(He,g({lastSyncAt:c().finite().nonnegative().nullable(),ticks:c().int().nonnegative(),needsFullReconcile:t()})),sessionLinks:i(Ue,l()).default({}),pullRequestsFetchedAt:i(Ue,h()).default({})});var Ze=g({type:m(`issues-status`),ts:c().finite(),configured:t(),reason:l().nullable(),lastSyncAt:c().finite().nonnegative().nullable(),issues:p(Ye),...ze}).passthrough(),Qe=2e4,$e=4e3,et=524288,tt=1e4,nt=`ExitPlanMode`,rt=4096,it=/^ {0,3}(#{1,6})[ \t]+(.*)$/;function at(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 ot(e,{overlongLine:t}){if(t===`reject`&&e.length>4096)return null;let n=it.exec(e.slice(0,rt));return n?{level:n[1].length,text:at(n[2])}:null}var st=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(nt),tool_input:st,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 ct=Object.freeze([`open`,`released`,`decided`,`closed`]),lt=u(ct),ut=Object.freeze([`approve`,`approve-accept-edits`,`revise`,`terminal`]),dt=u(ut),ft=g({heading:l().max($e).nullable(),comment:l().min(1).max($e)}),pt=g({id:l().min(1),agentId:l().nullable(),revision:c().int().positive(),decision:dt,feedback:l().max(Qe).optional(),comments:p(ft).max(40).optional(),plan:l().min(1).max(et).optional()}),mt=g({revision:c().int().positive(),receivedAt:c().finite(),chars:c().int().nonnegative(),title:l()}),ht=g({revision:c().int().positive(),since:c().finite()}),gt=g({agentId:l().nullable(),agentType:l().nullable(),revisions:p(mt),state:lt,openRevision:ht.nullable(),approvedRevision:c().int().positive().nullable(),lastDecision:dt.nullable()});g({reviews:p(gt)});var _t=g({agentId:l().nullable(),revision:c().int().nonnegative(),plan:l(),planFilePath:l(),receivedAt:c().finite()}),vt=g({id:l(),agentId:l().nullable(),agentType:l().nullable(),revision:c().int().positive(),receivedAt:c().finite(),state:lt,lastDecision:dt.nullable(),approvedRevision:c().int().positive().nullable(),chars:c().int().nonnegative(),title:l(),hasPlan:t()}),yt=g({id:l(),agentId:l().nullable(),planFilePath:l(),changedAt:c().finite()}),bt=g({id:l(),reviews:p(gt),body:_t.nullable()});Object.freeze([`file`,`subsystem`,`co-change`,`hotspot`,`blast`,`untested`,`collision`,`link`]);var xt=l().min(1),St=l().min(1),Ct=c().int().nonnegative(),wt=p(St).max(20),Tt=u([`added`,`modified`,`deleted`,`renamed`,`untracked`]),Et=f({factId:xt,path:St,previousPath:St.optional(),status:Tt,isCommitted:t()}),Dt=f({factId:xt,agentsPath:St,title:l(),paths:p(St).min(1)}),Ot=f({factId:xt,path:St,partner:St,support:Ct,confidence:c().min(0).max(1)}),kt=f({factId:xt,path:St,commitCount:Ct,fixCommitCount:Ct}),At=f({factId:xt,path:St,directDependents:wt,directDependentCount:Ct,transitiveDependentCount:Ct,dependentTests:wt,dependentTestCount:Ct}),jt=f({factId:xt,path:St}),Mt=f({factId:xt,path:St,otherSessionId:l().min(1),otherSessionName:l()}),Nt=f({factId:xt,providerRepo:l().min(1),packageName:l().min(1),packageDir:l(),consumerManifest:St,versionSpec:l(),isLocalLink:t(),providerChangedPathCount:Ct,importers:wt,importerCount:Ct,changedImporterCount:Ct}),Pt=f({name:l().min(1),root:l().min(1),sessionPathPrefix:l(),base:l().nullable(),files:p(Et),subsystems:p(Dt),coChangeGaps:p(Ot),hotspots:p(kt),blastRadius:p(At),untestedFiles:p(jt),collisions:p(Mt),links:p(Nt),error:l().nullable()}),Ft=f({text:l().min(1).max(600),factIds:p(xt).min(1)}),It=f({factsHash:l().min(1),model:l().nullable(),claims:p(Ft).max(12)}),Lt=u([`disabled`,`pending`,`ready`,`failed`]),Rt=f({sessionId:l().min(1),sig:l().nullable(),generatedAt:c().finite(),repos:p(Pt),narrative:It.nullable(),narratorState:Lt,error:l().min(1).optional()}),zt=u([`decision`,`retraction`,`conjecture`,`resolution`,`dismissal`,`defect`,`experiment`,`close`,`unable`,`escalation`,`acknowledgement`,`enactment`]),Bt={id:l().min(1),at:h(),session:l(),agent:l(),commit:l().nullable(),dirty:t(),binding:l()},Vt={of:l().min(1),because:l()},Ht=n({id:l(),text:l()}),Ut=d(`kind`,[n({...Bt,kind:m(`decision`),chose:l(),over:p(l()),because:l()}),n({...Bt,kind:m(`retraction`),...Vt}),n({...Bt,kind:m(`conjecture`),observation:l(),couldBe:p(l()),discriminatedBy:l()}),n({...Bt,kind:m(`resolution`),...Vt,as:l().optional()}),n({...Bt,kind:m(`dismissal`),...Vt}),n({...Bt,kind:m(`defect`),what:l(),evidence:l(),files:p(l())}),n({...Bt,kind:m(`experiment`),expectation:l(),context:p(l()),actions:p(Ht),criteria:p(Ht)}),n({...Bt,kind:m(`close`),of:l(),outcome:u([`success`,`failure`,`inconclusive`]),results:i(l(),e())}),n({...Bt,kind:m(`unable`),what:l(),because:l()}),n({...Bt,kind:m(`escalation`),what:l(),because:l()}),n({...Bt,kind:m(`acknowledgement`),...Vt}),n({...Bt,kind:m(`enactment`),practice:l(),results:i(l(),e())})]),Wt=a([Ut,g({id:l().min(1),kind:l().min(1).refine(e=>!zt.safeParse(e).success)})]);n({branch:l().nullable(),escalations:p(e()),records:p(Wt),citedBy:i(l(),p(e())),damaged:p(e())});var Gt=f({id:l().min(1),at:h().nullable(),kind:l().min(1),text:l().max(280),detail:l().max(280).nullable(),supersedes:l().nullable()}),Kt=d(`ok`,[f({ok:m(!0),latest:Gt.nullable()}),f({ok:m(!1),reason:l().min(1).max(200)})]),qt=f({journal:Kt,updatedAt:c().finite()}),Jt=/^[0-9a-f]{7,40}$/i,Yt=/^[0-9a-f]{40}$/;function Xt(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 Jt.test(r)?r.slice(0,t).toLowerCase():``}var P=l().regex(Yt),Zt=l().regex(/^[^/]+\/[^/]+$/);g({number:c().int().positive(),title:l(),html_url:l(),draft:t().optional(),created_at:l().optional(),updated_at:l().optional(),repository_url:l(),user:g({login:l(),type:u([`User`,`Bot`])}).passthrough(),pull_request:g({}).passthrough()}).passthrough(),g({number:c().int().positive(),title:l(),body:l(),url:l(),author:g({login:l(),is_bot:t().optional()}).passthrough(),isDraft:t(),isCrossRepository:t(),baseRefName:l(),baseRefOid:P,headRefName:l().optional(),headRefOid:P,additions:c().int().nonnegative(),deletions:c().int().nonnegative(),files:p(g({path:l(),additions:c().int().nonnegative(),deletions:c().int().nonnegative()}).passthrough())}).passthrough();var Qt=g({path:l(),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l()}),$t=Object.freeze({STAMP:`APPROVE`,COMMENT:`APPROVE WITH NITS`,NEEDS_YOU:`REQUEST CHANGES`}),en=u([`APPROVE`,`APPROVE WITH NITS`,`REQUEST CHANGES`,`BLOCKED`]),tn=r(e=>typeof e==`string`&&Object.hasOwn($t,e)?$t[e]:e,en),nn=u([`CRITICAL`,`HIGH`,`MEDIUM`,`LOW`]),rn=Qt.extend({severity:nn.optional()}),an=g({path:l().min(1),line:c().int().positive().nullable(),side:u([`RIGHT`,`LEFT`]),severity:nn,reviewer:l().min(1),disposition:u([`ACTIONABLE`,`NIT`,`AMBIGUOUS`]).nullable(),body:l().min(1)}),on=g({goal:l().default(``),change:l(),checked:p(l()),gaps:p(l())});g({verdict:en,head:P,summary:l(),assessment:on.nullable(),findings:p(an)}),g({body:l(),commit_id:P,comments:p(g({path:l().min(1),line:c().int().positive(),side:u([`RIGHT`,`LEFT`]).default(`RIGHT`),body:l().min(1)}))});var sn=u([`APPROVE`,`COMMENT`]),cn=u([`APPROVED`,`CHANGES_REQUESTED`,`COMMENTED`]),ln=new Set([`APPROVED`,`CHANGES_REQUESTED`]),un=u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]),dn=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]),fn={requestSource:u([`direct`,`team`]).default(`team`),isDraft:t().optional(),checksState:dn.nullable().optional()},pn=g({login:l().min(1),state:cn,commit:P.nullable(),isViewer:t(),submittedAt:l().nullable().optional()});function mn(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 hn=g({head:P,base:P.optional(),verdict:en,summary:l(),body:l(),comments:p(Qt),wasPosted:t()}),gn=l().min(1).max(256).regex(Ie),_n=g({addressed:t(),reason:l().trim().min(1).max(4e3)}).strict(),vn=g({id:gn,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:P}).nullable()}))})});g({data:g({node:g({comments:vn.shape.comments}).nullable()}).nullable()}),g({pullRequest:g({reviewThreads:g({pageInfo:g({hasNextPage:t(),endCursor:l().nullable().optional()}),nodes:p(vn)})}).nullable()}),g({data:g({resolveReviewThread:g({thread:g({id:gn,isResolved:m(!0)})})}).nullable(),errors:p(e()).optional()});var yn=g({id:gn,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:_n.extend({head:P,judgedAt:c().finite(),lastReplyAt:l().datetime()}).optional(),resolveError:l().optional(),resolveAttemptReplyAt:l().optional(),judgeAttempt:g({head:P,lastReplyAt:l(),retryAt:c().finite()}).optional(),unjudgeable:g({head:P,lastReplyAt:l(),reason:l().min(1)}).optional()});g({merge_base_commit:g({sha:P}),files:p(g({filename:l(),previous_filename:l().optional(),patch:l().optional()})).max(300)});var bn=g({total:c().int().nonnegative(),resolved:c().int().nonnegative()}),xn=g({...fn,key:l(),repo:Zt,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),reviewedHead:P,reviewedBase:P.optional(),verdict:tn,summary:l(),assessment:on.optional(),body:l(),comments:p(rn),status:u([`ready`,`stale`,`posted`,`discarded`,`error`]),error:l().optional(),threads:p(yn).optional(),viewerThreads:bn.optional(),githubReviews:p(pn).optional(),reviewDecision:un.nullable().optional(),liveHead:P.optional(),prCreatedAt:l().optional(),reviewedAt:c().finite().optional(),postedAt:c().finite().optional(),postedEvent:sn.optional(),priorReviewedHead:P.optional(),requeuedHead:P.optional()});function Sn(e){return e.status===`posted`&&e.postedEvent===`COMMENT`}var Cn=u([`approve`,`approve-only`,`comment`,`discard`,`requeue`,`resolve-thread`]);function wn(e){return e.action===`discard`||e.head!==void 0}var Tn=g({key:l().min(1),head:P.optional(),action:Cn,threadId:gn.optional(),body:l(),comments:p(Qt)}).refine(e=>e.action!==`resolve-thread`||e.threadId!==void 0,{message:`resolve-thread requires threadId`,path:[`threadId`]}).refine(wn,{message:`only discard may omit head`,path:[`head`]}),En=g({key:l(),ok:t(),error:l().optional(),warning:l().optional()}),Dn=g({sessionId:l().min(1),workDir:l().min(1),worktreePath:l().min(1),head:P,deadlineAt:c(),remainingAwakeMs:c().nonnegative().optional(),savedAt:c()}),On=g({...fn,reviewDecision:un.nullable().optional(),key:l(),repo:Zt,number:c().int().positive(),title:l(),url:l(),author:l(),prCreatedAt:l().optional()}),kn=g({draft:xn.nullable(),reviewedHead:P.nullable(),inFlight:t(),skipReason:l().nullable(),handReview:On.optional(),reviewAttempts:c().int().nonnegative().default(0),resumable:Dn.nullable().optional(),reviewedAt:c().optional(),threads:p(yn).optional(),viewerThreads:bn.optional(),autoResolvedThreadIds:p(gn).optional(),githubReviews:p(pn).optional(),reviewDecision:un.nullable().optional(),liveHead:P.optional(),requeuedHead:P.optional(),priorReview:hn.optional(),discardedReviewHead:P.optional(),updatedAt:c().finite()});i(l(),kn);var An=u([`preparing`,`checkout`,`reviewing`]),jn=g({at:c().finite(),tool:l(),detail:l()}),Mn=g({...fn,reviewDecision:un.nullable().optional(),key:l(),repo:Zt,number:c().int().positive(),title:l(),url:l(),author:l(),tier:u([`stamp`,`full`]),reasons:p(l()),head:P,phase:An,startedAt:c().finite(),deadlineAt:c().finite().nullable(),toolCalls:c().int().nonnegative(),recentSteps:p(jn),prCreatedAt:l().optional(),priorReviewedHead:P.optional()}),Nn=g({...ze,type:m(`team-review-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),drafts:p(xn),inFlight:p(Mn),queued:p(On).default([]),handReview:p(On).default([]),team:g({org:l(),slug:l(),name:l(),avatarUrl:l()}).nullable().optional()}).passthrough(),Pn=u([`merged`,`draft`,`conflicts`,`behind`,`checks-failing`,`changes-requested`,`unresolved-threads`,`checks-pending`,`needs-approval`,`ready`,`unknown`]),Fn=c().int().nonnegative(),In=l().regex(Fe),Ln=l().regex(/^[1-9][0-9]*$/),Rn=o([In,`#`,Ln]),zn=o([Rn,`@`,P]),Bn=l().refine(e=>Rn.safeParse(e).success),Vn=l().refine(e=>zn.safeParse(e).success);d(`outcome`,[f({outcome:m(`pushed`)}),f({outcome:u([`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1)})]);var Hn=f({outcome:u([`pushed`,`no-change`,`failed`,`stopped`,`timed-out`]),reason:l().min(1).optional(),at:c().finite()}),Un=Hn.extend({key:Bn,headRefOid:P,baseRefOid:P,consecutiveAttempts:c().int().min(1).optional()});f({keepMergeableKeys:p(Bn),keepMergeableAttemptKeys:p(Vn),keepMergeableAttempts:p(Un).default([]),mergeQueueKeys:p(Bn).default([]),keepMergeablePushedHeadKeys:p(Vn).default([])});var Wn=f({repo:In,number:c().int().positive(),url:_(),source:u([`hook`,`sha`,`manual`]),linkedAt:c().finite()}),Gn=f({links:p(Wn).max(20),unlinkedKeys:p(Bn).default([])}),Kn=g({repo:In,number:c().int().positive(),keepMergeable:t()}),qn=g({key:l(),ok:t(),error:l().optional()}),Jn=qn,Yn=g({repo:In,number:c().int().positive(),mergeWhenReady:t()}),Xn=qn,Zn=u([`MERGE`,`SQUASH`,`REBASE`]),Qn=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()}),$n=g({reviewer:l().nullable(),state:l(),submittedAt:l().nullable()}),er=g({outcome:u([`rebased`,`failed`]),at:c().finite(),message:l()}),tr=g({at:c().finite(),message:l()}),nr=g({key:l(),repo:In,number:c().int().positive(),title:l(),url:_(),isDraft:t(),state:u([`OPEN`,`MERGED`,`CLOSED`]),createdAt:l(),mergedAt:l().nullable(),updatedAt:l(),baseRefName:l(),baseRefOid:P,headRefName:l().min(1),isCrossRepository:t(),headRefOid:P,isInMergeQueue:t(),mergeMethod:Zn,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:Fn}),unresolvedThreads:Fn,threads:p(Qn),behindBy:Fn.nullable(),reviewRequests:p(g({name:l(),isTeam:t(),avatarUrl:l().nullable()})),approvals:Fn,reviews:p($n),stage:Pn,autoRebase:er.optional(),keepMergeable:t().optional(),keepMergeableAttempt:Hn.optional(),isKeepMergeableFixInFlight:t().optional(),mergeQueuePosition:c().int().positive().nullable().optional(),isMergeQueueHeldForRepairPush:t().optional(),mergeQueueFailure:tr.optional()}).refine(e=>e.key===`${e.repo}#${e.number}`),rr=g({...ze,type:m(`my-prs-status`),ts:c().finite(),configured:t(),reason:l().nullable().optional(),viewer:l().nullable(),prs:p(nr),truncatedNote:l().nullable().optional(),isKeepMergeableEnabled:t().optional(),isMergeQueueEnabled:t().optional()}).passthrough(),ir=g({repo:In,number:c().int().positive(),headRefOid:P}),ar=u([`merged`,`queued`,`auto-merge`,`unconfirmed`]),or=g({key:l(),ok:t(),kind:ar.optional(),error:l().optional()}),sr=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()}),cr=g({__typename:m(`StatusContext`),context:l(),state:l()}),lr=a([sr,cr]),ur=g({hasNextPage:t(),endCursor:l().nullable()}),dr=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:P,headRefName:l().min(1),isCrossRepository:t(),headRefOid:P,isInMergeQueue:t(),mergeable:u([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:l(),reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),repository:g({nameWithOwner:In,viewerDefaultMergeMethod:Zn}),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:ur.optional(),nodes:p(lr)})}).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()}))})}),fr=g({login:l()}).nullable();g({isResolved:t(),isOutdated:t(),path:l(),line:c().int().positive().nullable(),firstComment:g({totalCount:Fn,nodes:p(g({author:fr,bodyText:l(),url:_(),createdAt:l()}))}),lastComment:g({nodes:p(g({author:fr,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:ur,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:Fn,nodes:p(e())}),merged:g({issueCount:Fn,nodes:p(e())})}),errors:p(e()).optional()});var pr=/^[a-zA-Z0-9_\-. ()]{1,64}$/,mr=`Session name may only contain letters, numbers, spaces, dashes, dots, underscores, and parentheses (max 64 chars)`,hr=/[\x00-\x1f\x7f-\x9f]/,gr=l().refine(e=>!hr.test(e)).trim().max(120);g({title:l().nullable()}).strict();var _r=u(w),vr=g({at:c().finite().nullable(),kind:l(),reason:l().nullable()}).passthrough(),yr=4e3,br=1e3,xr=2e3,Sr=g({question:l().min(1).max(br),header:l().max(100).default(``),options:p(g({label:l().min(1).max(200),description:l().max(br).default(``)})).min(1).max(8),multiSelect:t().default(!1)}),Cr=g({requestId:a([l().min(1).max(128),c().int()]),kind:u([`command`,`fileChange`,`permissions`,`tool`,`question`]),summary:l().max(yr),isSummaryTruncated:t(),toolName:l().max(200).optional(),questions:p(Sr).min(1).max(4).optional(),alwaysAllowSummary:l().max(yr).optional()}),wr=i(l().max(br),l().max(xr)),Tr=u([`accept`,`acceptForSession`,`decline`]),Er=80,Dr=Object.freeze({notInstalled:`not installed`,unsupportedVersion:`unsupported version`,codexHooksUntrusted:`Codex hooks need trust in /hooks`}),Or=d(`active`,[g({active:m(!0)}).strict(),g({active:m(!1),reason:l().min(1).max(Er),version:l().optional()}).strict()]),kr=g({id:l(),name:l(),taskTitle:gr.nullable().default(null),taskTitleIsCustom:t().default(!1),path:l(),agent:l(),state:_r,stateSince:c(),dangerouslySkipPermissions:t(),saneYolo:t().default(!1),ephemeral:t(),isWorktree:t(),isWorkspace:t().default(!1),isGuarded:t().default(!1),isGuardrailsReleased:t().default(!1),resumeSessionId:l().nullable(),activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),isCompacting:t().default(!1),isWaitingForMemory:t().default(!1),pendingWakeup:vr.nullable(),pendingPromptKind:l().nullable(),conversationApproval:Cr.nullable().default(null),hasConversationBridge:t().default(!1),isConversationViewOn:t().default(!1),hasPlan:t().default(!1),mergeStatus:l().nullable(),mergeReason:l().nullable(),worktreeNotice:l().nullable(),failureReason:l().nullable().optional(),effectiveBase:l().nullable(),linkedPrs:p(Wn).default([]),coherenceHooks:Or.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()]),g({prompt:l({error:`prompt must be a string`}).min(1,{error:`prompt must not be empty`}).max(2e4,{error:`prompt must be at most 20000 characters`}).refine(e=>!e.trimStart().startsWith(`-`),{message:`prompt must not start with a dash, which the agent CLI would read as an option`}),name:l({error:`name must be a string`}).min(1,{error:`name must not be empty`}).max(200,{error:`name must be at most 200 characters`}).optional(),agent:l({error:`agent must be a string`}).min(1,{error:`agent must not be empty`}).max(40,{error:`agent must be at most 40 characters`}).optional()}).strict(),g({note:l({error:`note must be a string`}).min(1,{error:`note must not be empty`}).max(500,{error:`note must be at most 500 characters`})}).strict(),a([g({ok:m(!0),pending:t()}).strict(),g({ok:m(!1),error:l()}).strict()]),g({id:kr.shape.id,name:kr.shape.name,agent:kr.shape.agent,state:kr.shape.state,ephemeral:kr.shape.ephemeral}).strict();var Ar=4096;g({path:l({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(Ar,{error:`path must be at most ${Ar} characters`})}).strict();var jr=g({path:l(),name:l(),surfacedAt:c().finite()}).strict();g({commands:p(g({name:u([`push`,`spawn`,`attention`,`board`,`edit`]),answers:t(),reason:l().optional()}).strict()),guarded:t(),deadEnds:p(g({blocked:l(),route:l()}).strict())}).strict().extend({ok:m(!0)}).strict();var Mr=4e3,Nr=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()}),Pr=d(`kind`,[Nr.extend({kind:m(`prompt`),text:l()}),Nr.extend({kind:m(`expansion`),text:l(),toolUseId:l().min(1).optional()}),Nr.extend({kind:m(`thinking`),text:l()}),Nr.extend({kind:m(`assistant`),text:l()}),Nr.extend({kind:m(`tool_call`),toolUseId:l().min(1),name:l().min(1),input:e()}),Nr.extend({kind:m(`tool_result`),toolUseId:l().min(1),content:l(),isError:t(),truncated:t()}),Nr.extend({kind:m(`session`),vendor:l().min(1),transcriptPath:l().min(1),reason:l().min(1).optional()}),Nr.extend({kind:m(`notice`),text:l().max(Mr)}),Nr.extend({kind:m(`raw`),line:l().max(Mr)})]);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 Fr=l().max(16384),Ir=p(Fr).max(4096),Lr=g({model:Fr.nullable(),mcpServers:Ir,plugins:p(g({name:Fr,skills:Ir,agents:Ir})).max(4096),skills:Ir,agents:Ir,hookEvents:p(g({event:Fr,runCount:c().int().nonnegative()})).max(4096),hookCommands:p(l().max(65536)).max(4096)}),Rr=u([`release`,`main`]),zr=u([`idle`,`running`,`staged`,`succeeded`,`failed`,`discarded`,`interrupted`]),Br=u([`fetch`,`stage`,`install`,`link-deps`,`build`]),Vr=u([`pending`,`running`,`succeeded`,`failed`]),Hr=g({id:Br,status:Vr,startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),outputTail:p(l())}).strict(),Ur=g({state:zr,fromSha:l().nullable(),toSha:l().nullable(),toVersion:l().nullable(),channel:Rr,steps:p(Hr),activeStep:Br.nullable(),reason:l().nullable(),startedAt:c().finite().nullable(),finishedAt:c().finite().nullable(),failedAtHandOff:t().optional()}).strict(),Wr=Ur.pick({state:!0,activeStep:!0,reason:!0,startedAt:!0,finishedAt:!0}),Gr=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Kr=/^[A-Za-z_][A-Za-z0-9_]*$/,qr=l().regex(/^[^/\s]+\/[^/\s]+$/),Jr=c().finite(),Yr=l().min(1),Xr=Object.freeze([`CLAUDE_CODE_OAUTH_TOKEN`]),F=l().regex(Gr);function Zr(e){return new Set(e.map(e=>e.id)).size===e.length}var Qr=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-merged-prs`),repo:qr,minBodies:c().int().min(1),limit:c().int().min(1).max(500)})]),$r=d(`kind`,[f({kind:m(`none`)}),f({kind:m(`pr-checkout`)})]),ei=u([`review-findings`,`json`]),ti=f({promptTemplate:Yr,output:ei,timeoutSeconds:c().int().min(30).max(14400)}),ni=f({id:F,env:i(l().regex(Kr),l()).refine(e=>Xr.every(t=>!Object.hasOwn(e,t)),{message:`arm env must not set ${Xr.join(`, `)}; Glimmervoid injects it per cell`}).optional(),extraArgs:p(l()).optional(),setup:f({command:p(Yr).min(1)}).optional()}),ri=d(`kind`,[f({kind:m(`llm-judge-match`),model:Yr})]);f({id:F,title:Yr,caseSource:Qr,workspace:$r,subject:ti,arms:p(ni).min(2).refine(Zr,{message:`arm ids must be unique`}),baselineArm:F,trials:c().int().min(1).max(20),scorer:ri}).refine(e=>e.arms.some(t=>t.id===e.baselineArm),{message:`baselineArm must name one of the arms`,path:[`baselineArm`]});var ii=f({id:F,text:Yr,tags:p(F),path:Yr.optional(),line:c().int().positive().optional()}),ai=d(`kind`,[f({kind:m(`manual`)}),f({kind:m(`github-pr`),repo:qr,number:c().int().positive(),url:Yr,minedAt:Jr})]);f({id:F,input:i(l(),e()),references:p(ii).min(1).refine(Zr,{message:`reference ids must be unique`}),source:ai}),g({repo:qr,number:c().int().positive(),reviewedSha:P,baseSha:P,changedFiles:p(Yr)});var oi=u([`found`,`partial`,`missed`]),si=f({referenceId:F,verdict:oi,findingIndexes:p(c().int().nonnegative())}),ci=u([`scored`,`invalid`,`error`]),li=f({caseId:F,armId:F,trial:c().int().min(1),status:ci,startedAt:Jr,finishedAt:Jr,degradedReasons:p(Yr),findingCount:c().int().nonnegative(),judgements:p(si),costUsd:c().finite().nonnegative().nullable(),error:Yr.nullable()}),ui=u([`running`,`completed`,`interrupted`,`failed`]);f({id:F,suiteId:F,status:ui,startedAt:Jr,finishedAt:Jr.nullable(),error:Yr.nullable(),cells:p(li)});var di=c().min(0).max(1).nullable(),fi=f({trials:c().int().nonnegative(),recall:di,recallByTag:i(F,di),degraded:c().int().nonnegative(),invalid:c().int().nonnegative(),costUsd:c().finite().nonnegative().nullable()}),pi=f({caseId:F,arms:i(F,fi),deltaVsBaseline:i(F,c().min(-1).max(1).nullable())}),mi=f({runId:F,suiteId:F,status:ui,baselineArm:F,armIds:p(F),rows:p(pi),totals:i(F,fi)}),hi=u([`mine`,`run`,`cancel`]),gi=g({suiteId:F,action:hi}),_i=g({suiteId:F,action:hi,ok:t(),error:l().optional(),runId:F.optional()}),vi=u([`setup`,`preflight`,`workspace`,`subject`,`judge`]),yi=g({suiteId:F,runId:F,caseId:F.nullable(),armId:F,trial:c().int().min(1),phase:vi,cellIndex:c().int().nonnegative(),cellCount:c().int().positive(),startedAt:Jr}),bi=g({id:F,title:l(),error:l().nullable(),caseCount:c().int().nonnegative(),candidateCount:c().int().nonnegative(),armIds:p(F),baselineArm:F.nullable(),latestReport:mi.nullable()}),xi=g({type:m(`benchmark-status`),ts:Jr,configured:t(),reason:l().nullable(),suites:p(bi),inFlight:yi.nullable()}).passthrough(),Si=g({__typename:l(),login:l()}).nullable();g({number:c().int().positive(),title:l(),url:Yr,mergedAt:l().nullable(),reviewThreads:g({totalCount:c().int().nonnegative()}),reviews:g({totalCount:c().int().nonnegative()})});var Ci=g({path:l(),line:c().int().positive().nullable(),originalLine:c().int().positive().nullable(),comments:g({nodes:p(g({databaseId:c().int().positive(),author:Si,body:l(),createdAt:l(),originalCommit:g({oid:P}).nullable()}))})}),wi=g({databaseId:c().int().positive(),author:Si,body:l(),submittedAt:l().nullable(),commit:g({oid:P}).nullable()}),Ti=d(`__typename`,[g({__typename:m(`BaseRefChangedEvent`),createdAt:l()}),g({__typename:m(`BaseRefForcePushedEvent`),createdAt:l(),beforeCommit:g({oid:P}).nullable()})]);g({author:Si,baseRefOid:P,reviewThreads:g({pageInfo:g({hasNextPage:t()}),nodes:p(Ci)}),reviews:g({pageInfo:g({hasNextPage:t()}),nodes:p(wi)}),timelineItems:g({pageInfo:g({hasNextPage:t()}),nodes:p(Ti)})}),g({mergeBaseSha:P,changedFiles:p(Yr),isFileListComplete:t()});var I=l().nullable().optional(),L=l(),Ei=Gn.shape.unlinkedKeys.unwrap().element,Di=/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/([0-9]+)(?:[/?#].*)?$/i;function Oi(e){let t=e.trim(),n=Di.exec(t),r=n?`${n[1]}#${n[2]}`:t,i=Ei.safeParse(r);return i.success?i.data:null}function R(e,t){return n({type:m(e),...t})}function ki(e={}){return n(e)}var z=l().nullable(),B=c().finite(),Ai=B.optional(),ji=z.optional(),Mi=ki(),Ni=p(e()),Pi=c().int().positive(),Fi=l().min(1).max(Ar),Ii=p(ki({at:B,tool:l(),detail:l()}));g({id:l(),label:l(),command:l(),args:p(l()),resolvable:t().nullable()}).strict();var Li=g({setupWarning:z,lastFailure:g({message:l(),failedAt:B}).nullable()}),Ri=g({id:L,session:l(),taskTitle:gr.nullable().optional(),taskTitleIsCustom:t().optional(),path:l(),agent:l(),state:_r,stateSince:B,skipPerms:t(),saneYolo:t(),worktree:t(),workspace:t().optional(),guarded:t().optional(),guardrailsReleased:t().optional(),resumeSessionId:z,ephemeral:t().optional(),linkedPrs:p(Wn).optional()}),zi=1e3,Bi=RegExp(`^[^\0--Ÿ]+$`),Vi=f({section:u([`committed`,`uncommitted`]),path:l().min(1).max(400).regex(Bi),line:c().int().positive(),side:u([`old`,`new`]),note:l().min(1).max(zi)}),Hi=4096,Ui=Hi+2*(et+Qe+80*$e),Wi=g({reason:l(),message:l()}),Gi=u([`npm-global`,`npx`,`clone`,`unknown`]),Ki={updateAvailable:t(),current:z,latest:z,currentSha:z,latestSha:z,releaseUrl:z,command:l(),flavor:Gi,platform:l(),installedBranch:z,upstream:z,isTreeClean:t().nullable(),lastCheckAt:B,channel:Rr,behindCount:c().int().nonnegative().nullable(),reason:z,journalSummary:Wr.nullable(),applyRefusal:Wi.nullable()};g(Ki);var qi=8192,Ji=g({name:l().max(128),stack:l().max(qi)}).strict(),Yi=[`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 Xi(t){return R(t,{id:L,force:e().optional()})}var Zi=Yi.map(Xi),Qi=[R(`add-session`,{name:l(),path:l(),repos:p(l()).optional(),agent:l().optional(),dangerouslySkipPermissions:t().optional(),unguarded:t().optional(),runInPlace:t().optional(),requestId:I}),R(`list-conversations`,{id:L,requestId:I}),R(`resume-conversation`,{id:L,conversationId:l()}),R(`rename-session`,{id:L,newName:l()}),R(`get-workspace-repos`,{id:L,requestId:I}),R(`set-workspace-repos`,{id:L,repos:p(l()),requestId:I}),R(`set-session-title`,{id:L,title:gr}),R(`link-session-pr`,{id:L,key:Ei}),R(`unlink-session-pr`,{id:L,key:Ei}),R(`ping`,{requestId:I}),R(`get-settings`,{requestId:I}),R(`update-settings`,{settings:i(l(),e()),requestId:I}),R(`scan-repo-roots`,{requestId:I,includeSuggestions:t().optional()}),R(`list-agents`,{requestId:I,rescan:t().optional()}),R(`get-radar-report`,{issueId:a([l(),c()]),requestId:I}),R(`radar-open-session`,{projectId:a([l(),c()]),issueId:a([l(),c()]),requestId:I}),R(`issue-detail`,{requestId:l().min(1),repo:He,issueNumber:c().int().positive()}),R(`open-issue-session`,{requestId:I,projectId:l(),repo:He,issueNumber:c().int().positive()}),R(`radar-issue-action`,{projectId:a([l(),c()]),issueId:a([l(),c()]),action:l(),requestId:I}),R(`open-team-review-session`,{requestId:I,key:Ei}),R(`team-review-action`,{...Tn.shape,requestId:I}).refine(wn,{message:`only discard may omit head`,path:[`head`]}),R(`benchmark-action`,{...gi.shape,requestId:I}),R(`my-pr-merge`,{...ir.shape,requestId:I}),R(`my-pr-keep-mergeable`,{...Kn.shape,requestId:I}),R(`my-pr-merge-when-ready`,{...Yn.shape,requestId:I}),R(`github-polling-refresh`,{...Be.shape,requestId:I}),R(`radar-archive-investigation`,{id:e().optional(),requestId:I}),R(`telegram-test`,{requestId:I}),R(`request-usage-report`,{requestId:I,days:e().optional(),force:e().optional()}),R(`request-hooks-report`,{requestId:I}),R(`send-diff-annotations`,{id:L,annotations:p(Vi).min(1).max(50),requestId:I}),R(`save-hook`,{hook:i(l(),e()),requestId:I}),R(`delete-hook`,{id:l(),requestId:I}),R(`shutdown`),R(`restart-server`),R(`focus-change`,{focused:t()}),R(`request-health-snapshot`),R(`update-check`),R(`update-apply`),R(`session-trace`,{id:L,requestId:I,after:c().int().nonnegative().default(0),endingAt:a([c().int().nonnegative(),m(`tail`)]).optional()}),R(`session-plan`,{id:L,agentId:z,revision:Pi.optional(),draft:t().optional()}),R(`plan-decision`,pt.shape),R(`set-session-conversation-view`,{id:L,isOn:t()}),R(`set-session-guardrails`,{id:L,isOn:t()}),R(`conversation-approval`,{id:L,requestId:Cr.shape.requestId,decision:Tr,answers:wr.optional()}),R(`session-doc-read`,{id:L,path:Fi,requestId:I}),R(`session-doc-save`,{id:L,path:Fi,text:l(),baseHash:l().min(1),requestId:I}),R(`session-coherence-journal`,{id:L,requestId:I}),R(`session-setup`,{id:L,requestId:I}),R(`client-error`,Ji.shape),R(`dismiss`,{id:L,force:e().optional(),expectedState:_r.optional()}),...Zi];d(`type`,Qi),Object.freeze(`snapshot.hooks-report.save-hook-result.add-session-result.delete-hook-result.workspace-repos.set-workspace-repos-result.hooks-updated.state-change.session-added.session-removed.session-renamed.session-title.session-prs.session-modified.session-git.session-coherence-hooks.session-agents.session-wakeup.session-prompt.session-conversation.session-merge-status.session-worktree-blocked.session-worktree-warning.session-worktree-ready.session-diff.session-diff-error.change-map.send-diff-annotations-result.branch-sync-status.session-changed.post-turn-result.debug-state-response.session-trace-response.session-trace-changed.session-plan-changed.session-plan-draft.session-plan-response.session-docs-changed.session-docs-snapshot.session-doc-response.session-doc-save-result.session-coherence.session-coherence-snapshot.session-coherence-journal-response.session-setup-response.notify.update-status.update-progress.post-turn-leftovers.error.session-error.settings.settings-error.settings-updated.pong.agents-listed.repo-roots-scanned.conversations.resume-conversation-ack.health-snapshot.radar-status.radar-investigation-activity.radar-investigation-finished.radar-report.radar-open-session-result.issue-detail-result.open-issue-session-result.open-team-review-session-result.radar-issue-action-result.team-review-action-result.benchmark-action-result.my-pr-merge-result.my-pr-keep-mergeable-result.my-pr-merge-when-ready-result.github-polling-refresh-result.radar-archive-investigation-result.team-review-status.benchmark-status.my-prs-status.issues-status.usage-sessions.usage-report.plan-limits.usage-budget-alert.visions-findings.visions-comments.visions-hand.visions-intent.visions-fix.visions-snapshot.ingest-activity.ingest-snapshot.client-trust.shutting-down.restarting`.split(`.`));var $i=[R(`snapshot`,{sessions:p(kr),serverBuild:z}),R(`hooks-report`,{requestId:I,ts:Ai,hooks:p(Mi).optional(),builtin:p(Mi).optional(),events:p(ki({name:l(),matcher:z,description:l(),http:t().optional()})).optional(),projects:p(ki({id:l(),name:l(),agent:l()})).optional(),limits:ki({maxTimeoutSec:c().int().positive()}).optional(),error:ji}),R(`save-hook-result`,{requestId:I,ok:t(),error:ji,hook:Mi.optional()}),R(`add-session-result`,{requestId:I,ok:t(),error:ji,reason:u([`not-git`]).optional()}),R(`delete-hook-result`,{requestId:I,ok:t(),error:ji,id:l().optional()}),R(`workspace-repos`,{requestId:I,id:L,ok:t(),repos:p(l()),error:ji}),R(`set-workspace-repos-result`,{requestId:I,id:L,ok:t(),error:ji}),R(`hooks-updated`,{count:c().int().nonnegative()}),R(`state-change`,{id:L,session:l(),from:_r,to:_r,event:l(),timestamp:B,skipPerms:t().optional(),saneYolo:t().optional(),failureReason:l().optional()}),R(`session-added`,Ri.shape),R(`session-modified`,Ri.shape),R(`session-removed`,{id:L,session:l()}),R(`session-renamed`,{id:L,oldName:l(),newName:l()}),R(`session-title`,{id:L,taskTitle:gr.nullable(),isCustom:t()}),R(`session-prs`,{id:L,linkedPrs:p(Wn)}),R(`session-git`,{id:L,worktree:t()}),R(`session-coherence-hooks`,{id:L,coherenceHooks:Or.nullable()}),R(`session-agents`,{id:L,activeAgents:c().int().nonnegative(),awaitingBackgroundTasks:t(),timestamp:B}),R(`session-wakeup`,{id:L,pendingWakeup:vr.nullable(),timestamp:B}),R(`session-prompt`,{isCompacting:t().optional(),id:L,pendingPromptKind:z,timestamp:B}),R(`session-conversation`,{id:L,hasConversationBridge:t(),isConversationViewOn:t(),conversationApproval:Cr.nullable()}),R(`session-merge-status`,{id:L,mergeStatus:l(),reason:z,parked:t(),timestamp:B}),R(`session-worktree-blocked`,{id:L,session:l(),branch:z,notice:z,timestamp:B}),R(`session-worktree-warning`,{id:L,session:l(),branch:z,notice:z,timestamp:B}),R(`session-worktree-ready`,{id:L,session:l(),branch:z,base:z,timestamp:B}),R(`session-diff`,{id:L,committed:ki({stat:l(),diff:l()}),uncommitted:ki({stat:l(),diff:l()}),hasCommits:t()}),R(`session-diff-error`,{id:L,message:l()}),R(`change-map`,{id:L,map:Rt}),R(`send-diff-annotations-result`,{requestId:I,ok:t(),error:ji,pending:t().optional()}),R(`branch-sync-status`,{id:L,branch:z,upstream:z,state:l(),ahead:c().int().nonnegative(),behind:c().int().nonnegative(),fetched:t().nullable(),action:l().optional(),error:ji}),R(`session-changed`,{id:L}),R(`post-turn-result`,{id:L,mode:l(),skipped:z,filesFixed:c().int().nonnegative(),findings:p(ki({file:l(),rule:l(),count:c().int().nonnegative()})),timestamp:B}),R(`debug-state-response`,{id:L,payload:Mi}),R(`session-trace-response`,{id:L,requestId:I,records:p(Pr),start:c().int().nonnegative(),next:c().int().nonnegative(),reset:t(),path:l()}),R(`session-trace-changed`,{id:L}),R(`session-plan-changed`,vt.shape),R(`session-plan-draft`,yt.shape),R(`session-plan-response`,bt.shape),R(`session-docs-changed`,{id:L,docs:p(jr)}),R(`session-docs-snapshot`,{sessions:i(l(),p(jr))}),R(`session-doc-response`,{requestId:I,id:L,path:l(),ok:t(),text:l().optional(),hash:l().optional(),error:ji}),R(`session-doc-save-result`,{requestId:I,id:L,path:l(),ok:t(),hash:l().optional(),conflict:t().optional(),error:ji}),R(`session-coherence`,{id:L,...qt.shape}),R(`session-coherence-snapshot`,{sessions:i(l(),qt)}),R(`session-coherence-journal-response`,{requestId:I,id:L,ok:t(),entries:p(Gt).max(200),error:ji}),R(`session-setup-response`,{requestId:I,id:L,ok:t(),setup:Lr.optional(),error:ji}),R(`notify`,{session:l(),category:l(),message:l(),escalationCount:c().int().nonnegative(),kind:m(`plan`).optional()}),R(`update-status`,Ki),R(`update-progress`,{journal:Ur}),R(`post-turn-leftovers`,{repositories:p(l()),command:l()}),R(`error`,{id:L.optional(),message:l(),requestId:I,scope:l().optional()}),R(`session-error`,{id:L.optional(),session:l(),message:l(),scope:l().optional()}),R(`settings`,{settings:Mi,requestId:I}),R(`settings-error`,{message:l(),requestId:I}),R(`settings-updated`,{settings:Mi,requestId:I}),R(`pong`,{requestId:I}),R(`agents-listed`,{requestId:I,agents:p(ki({id:l(),label:l(),resolvable:t()}))}),R(`repo-roots-scanned`,{requestId:I,directories:p(ki({root:l(),projects:p(ki({name:l(),path:l(),isGit:t().optional()}))})),suggestions:p(ki({path:l(),label:l(),gitRepoCount:c().int().nonnegative()})).optional(),error:l().optional()}),R(`conversations`,{requestId:I,id:z,current:z.optional(),conversations:p(ki({id:l(),title:l(),cwd:l(),worktreePath:l(),worktreeName:l(),gitBranch:z,mtime:B})),error:l().optional()}),R(`resume-conversation-ack`,{id:L.optional(),resumeSessionId:z.optional(),ok:t(),error:l().optional(),requestId:I}),R(`health-snapshot`,{stats:Mi}),R(`radar-status`,{ts:B,intervalMinutes:c(),projects:p(Mi),investigations:p(Mi)}),R(`radar-investigation-activity`,{projectId:a([l(),c()]),issueId:l(),inFlight:m(!0),startedAt:B.nullable(),trail:Ii}),R(`radar-investigation-finished`,{projectId:a([l(),c()]),issueId:l(),verdict:l(),summaryLine:z,startedAt:B.nullable(),trail:Ii}),R(`radar-report`,{requestId:I,ok:t(),found:t(),issueId:z,format:l().optional(),content:l().optional(),message:l().optional(),error:l().optional()}),R(`radar-open-session-result`,{requestId:I,ok:t(),error:ji,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional()}),R(`issue-detail-result`,{requestId:l().min(1),ok:t(),body:l().nullable(),error:l().nullable()}),R(`open-issue-session-result`,{requestId:I,ok:t(),error:ji,sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),R(`open-team-review-session-result`,{requestId:I,ok:t(),error:ji,key:Ei.optional(),sessionId:l().optional(),sessionName:l().optional(),pending:t().optional(),existing:t().optional()}),R(`radar-issue-action-result`,{requestId:I,ok:t(),error:ji,status:z.optional()}),R(`team-review-action-result`,{...En.shape,requestId:I}),R(`benchmark-action-result`,{..._i.shape,requestId:I}),R(`my-pr-merge-result`,{...or.shape,requestId:I}),R(`my-pr-keep-mergeable-result`,{...Jn.shape,requestId:I}),R(`my-pr-merge-when-ready-result`,{...Xn.shape,requestId:I}),R(`github-polling-refresh-result`,{...Ve.shape,requestId:I}),R(`radar-archive-investigation-result`,{requestId:I,ok:t(),error:ji}),R(`telegram-test-result`,{requestId:I,ok:t(),error:ji,telegramDelivery:Li.nullable()}),Nn,xi,rr,Ze,R(`usage-sessions`,{ts:B,pricingSource:z,sessions:p(ki({id:L,tokens:c(),costUSD:c(),officialCostUSD:c().nullable().optional()}))}),R(`usage-report`,{requestId:I,ts:Ai,tz:l().optional(),blockHours:c().optional(),totals:Mi.optional(),daily:Ni.optional(),models:Ni.optional(),sessions:Ni.optional(),blocks:Ni.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:Mi.optional(),scan:Mi.optional(),warning:ji,error:ji}),R(`plan-limits`,{ts:B,fiveHour:e().nullable(),sevenDay:e().nullable(),source:l()}),R(`usage-budget-alert`,{scope:l(),periodKey:l(),threshold:c(),text:l(),ts:B}),R(`visions-findings`,{uri:l(),diagnostics:Ni,ts:B}),R(`visions-comments`,{uri:l(),comments:Ni,ts:B}),R(`visions-hand`,{uri:l(),hand:z,ts:B}),R(`visions-intent`,{projectId:z,intent:Mi,ts:B}),R(`visions-fix`,{uri:l(),fix:Mi,ts:B}),R(`visions-snapshot`,{documents:p(Mi),intent:Mi,fixes:p(Mi),ts:B}),R(`ingest-activity`,{events:p(Mi),overflow:c().int().nonnegative(),ts:B}),R(`ingest-snapshot`,{events:p(Mi),sources:e(),ts:B}),R(`client-trust`,{trust:u([`local`,`remote`])}),R(`shutting-down`),R(`restarting`)],ea=d(`type`,$i),ta=/^\s*at .+:\d+:\d+\)?$|^[^@\s]*@.+:\d+:\d+$/;function na(e){let t=e.stack??``,n=String(e);return(t.startsWith(n)?t.slice(n.length):t).split(`
2
+ `).filter(e=>ta.test(e)).join(`
3
+ `)}function ra(e){return e==null?null:e instanceof Error?{name:(e.name||`Error`).slice(0,128),stack:na(e).slice(0,qi)}:{name:`NonError`,stack:``}}function ia(e){let t=new Set;return n=>{let r=ra(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 V=Object.freeze({min:0,exclusiveMin:!0,label:`a positive number`}),aa=Object.freeze({min:0,label:`zero or more`}),oa=Object.freeze({min:0,max:300}),sa=Object.freeze({min:1,max:60}),ca=Object.freeze({min:.5,max:2}),la=Object.freeze({flyingAnimalsMinGapSeconds:20,flyingAnimalsMaxGapSeconds:40,flyingAnimalsMinDurationSeconds:6.9,flyingAnimalsMaxDurationSeconds:11.5,flyingAnimalsScale:1,flyingAnimalsOnPhone:!0}),ua=Object.freeze({min:64,max:16384}),da=Object.freeze({min:0,max:65536}),fa=Object.freeze({min:0,max:65535}),pa=Object.freeze({min:0,exclusiveMin:!0,max:2147483647/1e3}),ma=V,ha=V,ga=V,_a=V,va=V,ya=aa,ba=V,xa=V,Sa=V,Ca=V,wa=V,Ta=V,Ea=V,Da=V,Oa=V,ka=Object.freeze({min:60,max:21600,label:`between 60 and 21600`}),Aa=Object.freeze({min:1,label:`at least 1`}),ja=Object.freeze({min:1,label:`at least 1`}),Ma=aa,Na=Object.freeze({min:1,max:30,label:`between 1 and 30`}),Pa=Object.freeze({min:1,max:1440}),Fa=Object.freeze({min:1,max:3650}),Ia=Object.freeze({min:30,max:3650}),La=Object.freeze({min:1,max:24}),Ra=V,za=Object.freeze({scanIntervalMinutes:Pa,retainDays:Fa,warehouseRetainDays:Ia,sessionBlockHours:La}),Ba=Object.freeze({min:15,max:600}),Va=Object.freeze({min:5,max:120}),Ha=Object.freeze({min:1,max:5}),Ua=Object.freeze({min:1,max:50});Object.freeze({NON_NEGATIVE_NUMBER_RANGE:aa,FLYING_ANIMALS_GAP_RANGE:oa,FLYING_ANIMALS_DURATION_RANGE:sa,FLYING_ANIMALS_SCALE_RANGE:ca,CHANGE_MAP_NARRATOR_TIMEOUT_RANGE:Ba,KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE:Va,PORT_RANGE:fa,POSTHOG_ESCALATION_RANGE:Ea,POSTHOG_FIX_TIMEOUT_RANGE:ka,POSTHOG_INTERVAL_RANGE:Sa,POSTHOG_INVESTIGATION_TIMEOUT_RANGE:wa,POSTHOG_MAX_CONCURRENT_RANGE:Ca,POSTHOG_MIN_USERS_RANGE:Ta,POSTHOG_TRAFFIC_BASELINE_RANGE:Na,POSTHOG_TRAFFIC_COOLDOWN_RANGE:Ma,POSTHOG_TRAFFIC_MIN_USERS_RANGE:ja,POSTHOG_TRAFFIC_MULTIPLIER_RANGE:Aa,REPLAY_BUFFER_KB_RANGE:ua,MEMORY_RESERVE_MB_RANGE:da,TASK_TITLE_TIMEOUT_RANGE:pa,USAGE_BUDGET_RANGE:Ra,USAGE_RETAIN_DAYS_RANGE:Fa,USAGE_SCAN_INTERVAL_RANGE:Pa,VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE:ya,VISIONS_COOLDOWN_MS_RANGE:_a,VISIONS_DISPATCH_TIMEOUT_RANGE:ba,VISIONS_INTENT_THREAD_TTL_MS_RANGE:xa,VISIONS_MAX_PER_HOUR_RANGE:va,VISIONS_QUIET_MS_RANGE:ga,WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE:Ua,WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE:Ha});var Wa=[{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`}],Ga=1/25,Ka=3;function qa(e,t,n){return typeof e!=`number`||!Number.isFinite(e)?t:Math.min(n.max,Math.max(n.min,e))}function Ja(e){if(!Array.isArray(e))return[];let t=new Set(Wa.map(e=>e.sprite));return[...new Set(e.filter(e=>typeof e==`string`&&t.has(e)))]}function Ya(e={}){let t=la,n=oa,r=sa,i=qa(e.flyingAnimalsMinGapSeconds,t.flyingAnimalsMinGapSeconds,n),a=qa(e.flyingAnimalsMaxGapSeconds,t.flyingAnimalsMaxGapSeconds,n),o=qa(e.flyingAnimalsMinDurationSeconds,t.flyingAnimalsMinDurationSeconds,r),s=qa(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:qa(e.flyingAnimalsScale,t.flyingAnimalsScale,ca),flyingAnimalsOnPhone:typeof e.flyingAnimalsOnPhone==`boolean`?e.flyingAnimalsOnPhone:t.flyingAnimalsOnPhone,flyingAnimalsExcludedSprites:Ja(e.flyingAnimalsExcludedSprites)}}function Xa(e){return Wa.some(t=>!e.includes(t.sprite))}function Za(e,t=-1,n=Math.random){let r=Wa.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 Qa(e,t,n=Math.random,r){let i=r===void 0?Za(e.flyingAnimalsExcludedSprites,t,n):Wa.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()<Ga?Ka:1;return{animalIndex:i,durationSeconds:a,gapMs:o,firstDelaySeconds:s,verticalProgress:c,isRightToLeft:l,arcProgress:(n()*2-1)*u}}function $a({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 eo=68,to=42,no=768,ro=.68,io=64,ao=5,oo=8,so=85;function co(e,t,n){return Math.min(Math.max(e,t),n)}function lo({viewportWidthPx:e,viewportHeightPx:t,verticalProgress:n,isRightToLeft:r=!1,arcProgress:i=0}){let a=co(e/no,ro,1),o=(ao+70*n*n)*t/100,s=Math.max(o,io),c=so*t/100,l=co(i*oo*t/100,io-s,c-s),u=-.45*e,d=1.45*e;return{scale:a,spriteWidthPx:eo,spriteHeightPx:to,topPx:s,startXpx:r?d:u,endXpx:r?u:d,facing:r?-1:1,arcPx:l}}function uo(e,t){let n=Number.isFinite(t)&&t>0?t:1;return Math.max(1,Math.round(e*n))/n}function fo(e,t,n){let r=uo(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 po=`chime`,mo=`custom:`,ho=`/custom-sounds`,go=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`}]}}),_o=Object.freeze(Object.entries(go).map(([e,t])=>({id:e,label:t.label})));function vo(e){return`${mo}${e}`}function yo(e){return`${ho}/${encodeURIComponent(e)}`}function bo(e){return e.startsWith(mo)&&e.slice(7)||null}function xo(e){let t=(e??[]).map(e=>({id:vo(e),label:e}));return[..._o,...t]}function So(e,t){if(typeof e!=`string`)return po;if(Object.hasOwn(go,e))return e;let n=bo(e);return n&&(t===null||t.includes(n))?e:po}function Co(e){return typeof e!=`object`||!e||!(`sounds`in e)||!Array.isArray(e.sounds)?[]:e.sounds.filter(e=>typeof e==`string`&&e!==``)}function wo(e,t){try{let n=localStorage.getItem(e);return n===null?t:JSON.parse(n)}catch{return t}}function To(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}var Eo=`glimmervoid-ui-prefs`,Do=`glimmervoid:sidebar-width`,Oo=e=>t=>typeof t==`boolean`?t:e,ko=e=>t=>typeof t==`string`?t:e,Ao=e=>typeof e==`string`&&e?e:null,jo=e=>typeof e==`number`&&Number.isFinite(e)?e:null,Mo=e=>t=>jo(t)??e,No=e=>Array.isArray(e)?[...new Set(e.filter(e=>typeof e==`string`&&e!==``))]:[],Po={soundEnabled:Oo(!0),soundId:ko(po),themeId:ko(`phyrexian`),flyingAnimalsEnabled:Oo(!1),flyingAnimalsMinGapSeconds:Mo(la.flyingAnimalsMinGapSeconds),flyingAnimalsMaxGapSeconds:Mo(la.flyingAnimalsMaxGapSeconds),flyingAnimalsMinDurationSeconds:Mo(la.flyingAnimalsMinDurationSeconds),flyingAnimalsMaxDurationSeconds:Mo(la.flyingAnimalsMaxDurationSeconds),flyingAnimalsScale:Mo(la.flyingAnimalsScale),flyingAnimalsOnPhone:Oo(la.flyingAnimalsOnPhone),flyingAnimalsExcludedSprites:Ja,notificationsEnabled:Oo(!0),sessionUsageChips:Oo(!1),phoneArrowPad:Oo(!1),activeView:ko(`focus`),lastFocusedSessionId:Ao,railWidth:jo,reviewSidebarExpanded:Oo(!1),reviewSidebarView:e=>e===`map`||e===`notes`?e:`diff`,prsQueueWidth:jo,prsQueueCollapsed:Oo(!1),prsMode:e=>e===`mine`?`mine`:`team`,keptProjects:No,traceHiddenKinds:No,dismissedUpdate:Ao,telemetryNoticeDismissed:Oo(!1),radarAttentionAck:ko(``),prsAttentionAck:ko(``),usageAttentionAck:ko(``),visionsAttentionAck:ko(``)};function Fo(e,t,n){e[t]=Po[t](n)}function Io(){let e=wo(Eo,{}),t={};for(let n of Object.keys(Po))Fo(t,n,e?.[n]);return t}function Lo(e){return Io()[e]}function H(e,t){let n=Io();Fo(n,e,t),To(Eo,n)}var Ro=()=>Lo(`soundEnabled`),zo=e=>H(`soundEnabled`,e),Bo=()=>Lo(`soundId`),Vo=e=>H(`soundId`,e),Ho=()=>Lo(`notificationsEnabled`),Uo=e=>H(`notificationsEnabled`,e),Wo=()=>Lo(`sessionUsageChips`),Go=e=>H(`sessionUsageChips`,e),Ko=()=>Lo(`phoneArrowPad`),qo=e=>H(`phoneArrowPad`,e),Jo=()=>Lo(`themeId`),Yo=e=>H(`themeId`,e),Xo=()=>Lo(`flyingAnimalsEnabled`),Zo=e=>H(`flyingAnimalsEnabled`,e),Qo=()=>Lo(`activeView`),$o=e=>H(`activeView`,e),es=()=>Lo(`railWidth`),ts=e=>H(`railWidth`,e),ns=()=>Lo(`reviewSidebarExpanded`),rs=e=>H(`reviewSidebarExpanded`,e),is=()=>Lo(`reviewSidebarView`),as=e=>H(`reviewSidebarView`,e),os=()=>Lo(`prsQueueWidth`),ss=e=>H(`prsQueueWidth`,e),cs=()=>Lo(`prsQueueCollapsed`),ls=e=>H(`prsQueueCollapsed`,e),us=()=>Lo(`prsMode`),ds=e=>H(`prsMode`,e),fs=()=>Lo(`keptProjects`),ps=e=>H(`keptProjects`,e),ms=()=>Lo(`traceHiddenKinds`),hs=e=>H(`traceHiddenKinds`,e),gs=()=>Lo(`dismissedUpdate`),_s=e=>H(`dismissedUpdate`,e),vs=()=>Lo(`telemetryNoticeDismissed`),ys=e=>H(`telemetryNoticeDismissed`,e),bs=()=>Lo(`radarAttentionAck`),xs=e=>H(`radarAttentionAck`,e),Ss=()=>Lo(`prsAttentionAck`),Cs=e=>H(`prsAttentionAck`,e),ws=()=>Lo(`usageAttentionAck`),Ts=e=>H(`usageAttentionAck`,e),Es=()=>Lo(`visionsAttentionAck`),Ds=e=>H(`visionsAttentionAck`,e),Os=()=>Lo(`lastFocusedSessionId`),ks=e=>H(`lastFocusedSessionId`,e),As=()=>jo(wo(Do,null)),js=e=>To(Do,jo(e)),Ms=e=>H(`flyingAnimalsMinGapSeconds`,e),Ns=e=>H(`flyingAnimalsMaxGapSeconds`,e),Ps=e=>H(`flyingAnimalsMinDurationSeconds`,e),Fs=e=>H(`flyingAnimalsMaxDurationSeconds`,e),Is=e=>H(`flyingAnimalsScale`,e),Ls=e=>H(`flyingAnimalsOnPhone`,e),Rs=e=>H(`flyingAnimalsExcludedSprites`,e),zs=()=>Ya(Io()),Bs=()=>{let e=Io();return Object.fromEntries(Object.keys(la).map(t=>[t,e[t]]))},Vs=()=>To(Eo,{...Io(),...la}),Hs=lo({viewportWidthPx:1440,viewportHeightPx:900,verticalProgress:0});function Us(e,t=``){let n=E(`div`,`flying-animal-preview ${t}`.trim());n.setAttribute(`aria-hidden`,`true`),n.style.setProperty(`--nyan-width`,`${Hs.spriteWidthPx}px`),n.style.setProperty(`--nyan-height`,`${Hs.spriteHeightPx}px`);let r=E(`div`,`flying-animal-preview-stage`);return r.append(E(`div`,`nyan-trail ${e.trail}`),E(`div`,`nyan-sprite ${e.sprite}`)),n.append(r),n}function Ws(){let e=Za(zs().flyingAnimalsExcludedSprites);return e===null?null:Wa[e]??null}var Gs=6e4,Ks=18e5,qs=20;function Js({attempt:e=1,baseMs:t=Gs,maxMs:n=Ks,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,qs)-1),s=Math.min(n,t*2**o);return a===`none`?s:Math.round(a===`half`?s*(.5+.5*i()):i()*s)}var Ys=3e4;function Xs(e,t=Math.random){return Js({attempt:(typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):0)+1,baseMs:500,maxMs:Ys,random:t,jitter:`half`})}var Zs=0,Qs=1;function $s({hasSocket:e,readyState:t,retryPending:n,connectingAgeMs:r=0}){return n?`retry-now`:e?t===Zs?r>1e4?`connect`:`wait`:t===Qs?`probe`:`connect`:`connect`}function ec(e){return e===`https:`?`wss:`:`ws:`}function tc(e,t){return`${ec(e?.protocol)}//${e.host}${t}`}var nc=``,rc=null;function ic(){return nc}function ac(){return nc?Promise.resolve(nc):rc||(rc=fetch(`/control-token`,{credentials:`same-origin`,cache:`no-store`}).then(e=>e.ok?e.json():null).then(e=>{let t=e?.token;return nc=typeof t==`string`?t:``,nc}).catch(()=>``).finally(()=>{rc=null}),rc)}function oc(){nc=``}function sc(e){return nc?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(nc)}`: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 cc=60,lc=3600,uc=24,dc=1024,fc=dc*1024,pc=fc*1024,mc={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`}`}},hc={rounding:`floor`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:0};function gc(e){return String(e).padStart(2,`0`)}function _c(e,t){return Math.max(0,Math[t](e/1e3))}function vc(e,t){let n=mc[t];if(e<cc)return n.second(e);let r=Math.floor(e/cc);if(r<60)return n.minute(r);let i=Math.floor(r/60);return i<uc?n.hour(i):n.day(Math.floor(i/uc))}function yc(e,t){let n=_c(e,t.rounding);return n<t.justNowBelowSeconds?`just now`:`${vc(n,t.wording)}${t.suffix}`}function bc(e,{smallestUnit:t,dropsZeroRemainder:n}){let r=(e,t,r)=>n&&t===0?e:`${e} ${t}${r}`;if(t===`s`&&e<cc)return`${e}s`;if(t===`s`&&e<lc)return r(`${Math.floor(e/cc)}m`,e%cc,`s`);let i=Math.floor(e/cc);return i<60?`${i}m`:r(`${Math.floor(i/60)}h`,i%60,`m`)}function xc(e,{rounding:t,showsHours:n}){let r=_c(e,t),i=gc(r%cc),a=Math.floor(r/cc),o=Math.floor(r/lc);return!n||o===0?`${a}:${i}`:`${o}:${gc(a%60)}:${i}`}function Sc(e,t){return e<dc?`${e} B`:t===`KB`||e<fc?`${(e/dc).toFixed(1)} KB`:e<pc?`${(e/fc).toFixed(1)} MB`:`${(e/pc).toFixed(2)} GB`}function Cc(e){let t=new Date(e);return`${t.getFullYear()}-${gc(t.getMonth()+1)}-${gc(t.getDate())}`}function wc(e){return`${gc(e.getHours())}:${gc(e.getMinutes())}`}function Tc(e){return e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function Ec(e){let t=(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`&&e!==``);return[...new Set(t)].sort().join(`|`)}function Dc(e,t){let n=typeof e==`string`?e:``,r=typeof t==`string`?t:``;return n===``?{shown:!1,acknowledged:``}:{shown:n!==r,acknowledged:r}}function Oc({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=Dc(e,r()?e:i);return a(t.acknowledged),t.shown},acknowledge(){a(n())}}}function kc(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 Ac=`machine-updates`,jc=`update-actions`,Mc={spiking:0,regressed:1,worsened:2,new:3,quiet:4},Nc={spiking:`crit`,regressed:`crit`,worsened:`warn`,new:`warn`,quiet:`dim`},Pc=99,Fc={ROOT_CAUSE:`root cause`,NEEDS_HUMAN:`needs you`,TRANSIENT:`transient`,FIXED:`fixed`,ERROR:`error`};function Ic(e){return Array.isArray(e)?e.flatMap(e=>{let t=e,n=U(t?.tool,``);return n?[{at:W(t?.at,0),tool:n,detail:U(t?.detail,``)}]:[]}):[]}function Lc(e){return e.detail?`${e.tool} ${e.detail}`:e.tool}function Rc(e){let t=Ic(e?.trail).at(-1);return t?Lc(t):``}function zc(e){let t=U(e?.summaryLine,``);return e?.inFlight===!0&&Rc(e)||t}function Bc(e){return{inFlight:e?.inFlight===!0,startedAt:W(e?.startedAt,null),steps:Ic(e?.trail),verdict:U(e?.verdict,``),summaryLine:U(e?.summaryLine,``)}}function Vc(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 Hc(e,t){let n=Vc(e,t?.projectId,t?.issueId);return n?(n.inFlight=!0,n.startedAt=W(t?.startedAt,null),n.trail=Ic(t?.trail),!0):!1}function Uc(e){return{inFlight:!1,startedAt:W(e?.startedAt,null),steps:Ic(e?.trail),verdict:U(e?.verdict,``),summaryLine:U(e?.summaryLine,``)}}function Wc(e,t){return!e||!t?!1:String(t.projectId??``)===e.projectId&&String(t.issueId??``)===e.issueId}function Gc(e,t){let n=Vc(e,t?.projectId,t?.issueId);if(!n)return!1;let r=Uc(t);return n.inFlight=!1,n.startedAt=r.startedAt,n.trail=r.steps,n.verdict=r.verdict,n.summaryLine=r.summaryLine,!0}function Kc(e){return Fc[typeof e==`string`?e.toUpperCase():``]||String(e??``).toLowerCase()}function qc(e){return xc(e,{rounding:`round`,showsHours:!1})}function Jc(e,t){return e==null?``:`+${qc(t-e)}`}function Yc(e){let t=e.steps.at(-1);return[e.steps.length,t?.at??0,t?.tool??``].join(`::`)}function Xc(e,t){if(e.inFlight){let n=`${e.steps.length} ${e.steps.length===1?`step`:`steps`}`;return`investigating, ${e.startedAt?`started ${t}`:`starting`}, ${n}`}return e.verdict?`finished: ${Kc(e.verdict)}`:`finished`}function Zc(e){return kc(e,{label:`PostHog monitoring`})}function Qc(e){return W(e.intervalMinutes,null)!==null}function $c(e,t){return e==null||e.configured===!1?`placeholder`:t>0?`ready`:Qc(e)?`placeholder`:`pending`}function el(e){return Nc[e??``]||`dim`}function tl(e){if(typeof e?.lastSeen!=`string`)return null;let t=Date.parse(e.lastSeen);return!Number.isFinite(t)||t<=0?null:t}function nl(e){let t=U(e?.status,``).trim().toLowerCase();return!t||t===`active`?``:t}function rl(e){return Array.isArray(e)?e.map(e=>Number(e)).filter(e=>Number.isFinite(e)):[]}function il(e){return Array.isArray(e)?e.map(e=>typeof e==`number`?e:Number(e?.occurrences)).filter(e=>Number.isFinite(e)):[]}function al(e,t=64,n=16){let r=rl(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 ol(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 sl(e){return e.length===0?`0 polls, 0 to 0 occurrences`:`${e.length} polls, ${Math.min(...e)} to ${Math.max(...e)} occurrences`}function cl(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 ll=3e5;function ul(e){let t=Number(e);return!Number.isFinite(t)||t<=0?ll:t*2}function dl(e){let t=e.split(/[\\/]+/).filter(Boolean);return t.length===0?``:t[t.length-1]}function fl(e){let t=dl(U(e?.name,``));if(t)return t;let n=e?.projectId;return n==null||n===``?`project`:String(n)}function pl(e){let t=U(e,``);return t?(t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(`/`)[0].split(`@`).pop()??``).replace(/:\d+$/,``):``}function ml(e){let t=new Set,n=Array.isArray(e)?e:[];for(let e of n){let n=pl(e?.host);n&&t.add(n)}return t.size>1}function hl(e,t,n={}){let r=cl(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>ul(n.intervalMs)?s:0;return{loud:r.active>0||r.spiking>0||!!i||c>0,counts:r,error:i,staleMs:c}}function gl(e,t,n={}){let r=[],i=[],a=Array.isArray(e)?e:[];for(let e of a){let a=hl(e,t,n),o={project:e,...a};a.loud?r.push(o):i.push(o)}return{loud:r,quiet:i}}function _l(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 vl(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 yl(e,t){let n=U(e,``);if(n)return/^\d/.test(n)?`v${n}`:n;let r=Xt(t,{validate:!0});return r?`commit ${r}`:``}function bl(e){return`Update available: ${yl(e?.current,e?.currentSha)} to ${yl(e?.latest,e?.latestSha)}`}function xl({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 Sl(e={}){return Ec(xl(e))}function Cl(e){return Mc[e??``]??Pc}function wl(e){return Array.isArray(e)?e.map((e,t)=>({issue:e,index:t})).sort((e,t)=>{let n=Cl(e.issue?.change)-Cl(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 Tl=Object.freeze({fetch:`Fetch`,stage:`Stage`,install:`Install dependencies`,"link-deps":`Link dependencies`,build:`Build`}),El=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.`}),Dl=Object.freeze([`unsupported-flavor`,`unsupported-platform`]),G=`Not connected to the server. Reconnecting.`,Ol=Object.freeze({requested:!1,failure:null});function kl(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function Al(e,t,n=null){return t===`request-sent`?{requested:!0,failure:null}:t===`request-unsent`?{requested:!1,failure:G}:t===`progress-frame`?Ol:t===`error-frame`?e.requested?{requested:!1,failure:n}:e:e.failure===null?e:{requested:e.requested,failure:null}}function jl(e,t){return t?.state?t.state:e?.journalSummary?.state}function Ml(e,t=null,n=null){return{actions:e,note:t,command:n}}function Nl(e){let t=e?.applyRefusal;return t?Dl.includes(t.reason):!1}function Pl({status:e,journal:t,request:n=Ol}){if(n.failure===`Not connected to the server. Reconnecting.`)return Ml([],G);let r=Fl(jl(e,t),e,n.requested);return n.failure?{...r,note:n.failure}:r}function Fl(e,t,n){if(e===`running`||n)return Ml([]);if(e===`staged`)return Ml([`restart`]);if(!t?.updateAvailable)return Ml([`check`]);let r=t.applyRefusal;return r?r.reason===`target-already-checked-out`?Ml([`restart`],r.message):Nl(t)?Ml([`check`],r.message,U(t.command,null)):Ml([`check`],r.message):Ml([`update`])}function Il(e){return e?.journalSummary?.state===`staged`||e?.applyRefusal?.reason===`target-already-checked-out`}function Ll(e){let t=yl(e?.latest,e?.latestSha)||`A new version`;if(Il(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=bl(e);return!e||e.applyRefusal===void 0||Nl(e)?{mode:`command`,text:n}:{mode:`link`,text:n}}function Rl(e){let t=U(e,``);return t?`: ${t}`:``}var zl=new Set([`idle`,`staged`,`succeeded`,`discarded`]);function Bl(e){return e.state===`failed`?`Update failed${Rl(e.reason)}.`:e.state===`interrupted`?`Update interrupted${Rl(e.reason)}.`:null}function Vl(e){return Tl[e]??e}function Hl(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 Ul(e){if(!e||zl.has(e.state))return null;let t=Hl(e),n=t.stepId!==null&&t.stepId!==e.activeStep?t.stepId:null;return{state:e.state,terminalLine:Bl(e),steps:e.steps.map(e=>({id:e.id,label:Vl(e.id),status:e.status})),outputTail:t.lines,outputStepId:t.stepId,outputStepLabel:n===null?null:Vl(n)}}var Wl=6e5;function Gl(e){return e.channel!==`main`||!Number.isInteger(e.behindCount)?``:`${e.behindCount} ${e.behindCount===1?`commit`:`commits`} behind`}function Kl(e,t){let n=jl(e,t),r=yl(t?.toVersion,t?.toSha)||yl(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=yl(e.current,e.currentSha)||`an unknown version`;if(e.updateAvailable){let t=yl(e.latest,e.latestSha)||`a newer build`,n=Gl(e);return{tone:`available`,headline:`Update available: ${i} to ${t}${n?` (${n})`:``}.`}}return U(e.reason,``)?{tone:`unknown`,headline:`Running ${i}. The last check did not finish.`}:{tone:`current`,headline:`Up to date. Running ${i}.`}}function ql(e){if(!e)return`Update status unavailable.`;let t=yl(e.current,null)||`Unknown version`,n=Xt(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 Jl(e){return e?{label:yl(e.latest,e.latestSha)||`Latest target unknown`,behind:Gl(e),releaseUrl:U(e.releaseUrl,``)}:{label:`Update status unavailable.`,behind:``,releaseUrl:``}}function Yl({status:e,checkForUpdates:t,now:n,lastAutoCheckAt:r}){if(t===!1||r!==null&&n-r<Wl)return!1;let i=typeof e?.lastCheckAt==`number`?e.lastCheckAt:null;return i===null||n-i>=Wl}function Xl({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?El[r]??`The last update check failed: ${r}.`:e.flavor===`unknown`?`The install flavor is unknown.`:n}var Zl=null,Ql=null,$l=0,eu=new Map,tu=null,nu=0,ru=!1,iu=0,au=0,ou=null,su=null;function cu(e){su=e}function lu(e){ou=e}function K(e){return Zl?.readyState===WebSocket.OPEN&&(Zl.send(JSON.stringify(e)),!0)}function uu(e){return au+=1,`${e}-${au}`}function du(e,t,{timeoutMs:n=5e3}={}){let r=uu(e);return new Promise((i,a)=>{let o=setTimeout(()=>{eu.delete(r),a(Error(`Request timed out`))},n);eu.set(r,{resolve:i,reject:a,timer:o}),Zl?.readyState===WebSocket.OPEN?Zl.send(JSON.stringify({type:e,requestId:r,...t})):(clearTimeout(o),eu.delete(r),a(Error(G)))})}function fu(e){if(typeof e!=`object`||!e||!(`requestId`in e))return;let t=e.requestId;if(typeof t!=`string`)return;let n=eu.get(t);n&&(clearTimeout(n.timer),eu.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 pu(e){for(let t of eu.values())clearTimeout(t.timer),t.reject(Error(e));eu.clear()}function mu(){let e=Zl;Zl=null,pu(G),su&&su(`disconnected`,`Reconnecting`),e?.close(),$l=0,hu()}function hu(){if(Ql!==null&&(Ql!==null&&clearTimeout(Ql),Ql=null),!ic()&&!ru){ru=!0,ac().finally(()=>{ru=!1,hu()});return}if(ru)return;let e=iu>0?`?since=${iu}`:``,t=tc(location,sc(`/control${e}`)),n=new WebSocket(t);Zl=n,nu=Date.now();let r=!1;n.addEventListener(`open`,()=>{r=!0,$l=0,su&&su(`connected`,`Connected`)}),n.addEventListener(`message`,e=>{if(Zl!==n)return;let t;try{t=JSON.parse(e.data)}catch{console.warn(`[control] Dropped malformed server JSON message`);return}let r=ea.safeParse(t);if(!r.success){console.warn(`[control] Dropped invalid server message: ${r.error.issues[0]?.message||`invalid payload`}`),fu(t);return}let i=r.data;if(i.type===`snapshot`&&typeof i.seq!=`number`&&(iu=0),typeof i.seq==`number`){if(i.seq<=iu)return;iu=i.seq}let a=typeof i.requestId==`string`?i.requestId:``,o=a?eu.get(a):void 0;o?(clearTimeout(o.timer),eu.delete(a),o.resolve(i)):ou&&ou(i)}),n.addEventListener(`close`,()=>{if(Zl!==n)return;Zl=null,pu(G),r||oc(),su&&su(`disconnected`,`Reconnecting`);let e=Xs($l);$l+=1,Ql=setTimeout(hu,e)})}async function gu(){if(su&&su(`connecting`,`Connecting`),tu)return tu;let e=$s({hasSocket:!!Zl,readyState:Zl?.readyState??null,retryPending:Ql!==null,connectingAgeMs:Date.now()-nu});if(e===`retry-now`)return Ql!==null&&clearTimeout(Ql),Ql=null,$l=0,hu(),`reconnecting`;if(e===`connect`)return mu(),`reconnecting`;if(e===`wait`)return`reconnecting`;let t=Zl;return tu=du(`ping`,{}).then(()=>(su&&su(`verified`,`Connected`),`ok`)).catch(()=>(Zl===t&&t&&mu(),`dead`)).finally(()=>{tu=null}),tu}var _u=`<h2 class="dialog-title" id="add-session-title">Add Session</h2>
4
+ <fieldset class="dialog-mode-controls" aria-label="Session kind">
5
+ <button type="button" class="dialog-mode-button" id="add-session-single-mode" aria-pressed="true">Single repo</button>
6
+ <button type="button" class="dialog-mode-button" id="add-session-workspace-mode" aria-pressed="false">Workspace</button>
7
+ </fieldset>
8
+ <label class="dialog-label" id="add-session-picker-label">
9
+ Pick a project:
10
+ <select class="dialog-input project-picker" id="add-session-picker">
11
+ <option value="" disabled selected>Scanning...</option>
12
+ </select>
13
+ </label>
14
+ <fieldset class="dialog-workspace-list" id="add-session-workspace-list" aria-label="Workspace repositories" hidden></fieldset>
15
+ <div class="dialog-repo-roots" id="add-session-repo-roots" hidden>
16
+ <p class="dialog-repo-roots-title" id="add-session-repo-roots-title">No repository roots yet</p>
17
+ <p class="dialog-repo-roots-desc">Add the folder that holds your git checkouts. Its repos show up right here.</p>
18
+ </div>
19
+ <label class="dialog-label" id="add-session-agent-label" hidden>
20
+ Agent
21
+ <select class="dialog-input" id="add-session-agent"></select>
22
+ </label>
23
+ <button type="button" class="dialog-advanced-toggle" id="add-session-advanced-toggle" aria-controls="add-session-advanced">Run in a folder outside your repository roots</button>
24
+ <div class="dialog-advanced-panel" id="add-session-advanced" hidden>
25
+ <label class="dialog-label">
26
+ Name
27
+ <input type="text" class="dialog-input" id="add-session-name" placeholder="my-project" autocomplete="off" spellcheck="false">
28
+ </label>
29
+ <label class="dialog-label" id="add-session-path-label">
30
+ Path
31
+ <input type="text" class="dialog-input" id="add-session-path" placeholder="Full path to the project folder" autocomplete="off" spellcheck="false">
32
+ </label>
33
+ </div>
34
+ <label class="dialog-label dialog-checkbox-label" id="add-session-run-in-place-label" hidden>
35
+ <input type="checkbox" class="dialog-checkbox" id="add-session-run-in-place">
36
+ <span>Run in this folder, no worktree</span>
37
+ <span class="dialog-hint">This folder is not a git repository, so the session cannot get its own worktree. The agent changes the folder itself, and nothing keeps its edits apart from yours. Run git init in it and make a first commit to keep them apart.</span>
38
+ </label>
39
+ <label class="dialog-label dialog-checkbox-label" id="add-session-skip-perms-label">
40
+ <input type="checkbox" class="dialog-checkbox" id="add-session-skip-perms">
41
+ <span>Skip permission prompts</span>
42
+ <span class="dialog-hint">The agent edits files and runs shell commands without asking first, so a bad instruction or a hostile file in the repo can act on this machine unchecked. Leave this off unless you trust the repo and the task.</span>
43
+ </label>
44
+ <label class="dialog-label dialog-checkbox-label" id="add-session-unguarded-label">
45
+ <input type="checkbox" class="dialog-checkbox" id="add-session-unguarded">
46
+ <span>Run without guardrails</span>
47
+ <span class="dialog-hint">Claude Code sessions run with guardrails that block writes to credentials and Glimmervoid's own state and hide credentials and other agents' settings. Turn this on only for work the guardrails cannot serve.</span>
48
+ </label>
49
+ <div class="dialog-error" id="add-session-error"></div>
50
+ <div class="dialog-actions">
51
+ <button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-cancel">Cancel</button>
52
+ <button type="button" class="btn-dialog btn-dialog-confirm" id="add-session-confirm">Add</button>
53
+ </div>
54
+ `,vu={busy:`text-text-muted`,ok:`text-state-done`,error:`text-state-failed`},q=15e3,yu=`Something went wrong. Details are hidden in streamer mode.`;function bu(e,t){return e!==`error`||t.startsWith(`Not connected to the server. Reconnecting.`)?t:document.documentElement.hasAttribute(`data-streamer`)?yu:t}function xu(e=`action-status`){let t=E(`p`,e);return t.setAttribute(`role`,`status`),t.hidden=!0,{element:t,show:(n,r)=>{t.className=`${e} text-xs ${vu[n]}`,t.dataset.tone=n,t.textContent=bu(n,r),t.hidden=!1},clear:()=>{t.hidden=!0,t.textContent=``,delete t.dataset.tone}}}function Su(e,t){return K(e)?!0:(t.show(`error`,G),!1)}function Cu(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 wu(e,t,n,{busyText:r,timeoutMs:i=q}={}){r&&n.show(`busy`,r);try{let r=await du(e,t,{timeoutMs:i});return n.clear(),r}catch(e){return n.show(`error`,Cu(e,i)),null}}function Tu(){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`,Ou)),{line:e,text:t})}function Eu(e,{hidesInStreamerMode:t=!0}={}){let n=Tu();n&&(n.text.textContent=t?bu(`error`,e):e,n.line.hidden=!1)}function Du(e){let t=Tu();t&&t.text.textContent===e&&Ou()}function Ou(){let e=Tu();e&&(e.line.hidden=!0,e.text.textContent=``)}var ku=`claude-code`,Au=Object.freeze({"claude-code":``,codex:`Codex`,grok:`Grok`});function ju(e){if(typeof e!=`string`)return``;let t=e.trim();return!t||t===`claude-code`?``:Au[t]||t}function Mu(e,{defaultId:t=ku}={}){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 Nu=`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 Pu(e){let t=typeof e==`object`&&e?e:null;return t===null||!Array.isArray(t.agents)||t.error||Mu(t.agents).options.length>0?{canSpawn:!0,guidance:``}:{canSpawn:!1,guidance:Nu}}var Fu={agent:`upcoming`,repoRoots:`upcoming`,firstSession:`upcoming`};function Iu(e,t){return e<t?`done`:e===t?`current`:`upcoming`}function Lu({agentListing:e,repoRoots:t}){let n=Pu(e).canSpawn?t.length===0?2:3:1;return{agent:Iu(1,n),repoRoots:Iu(2,n),firstSession:Iu(3,n)}}function Ru(e){return Mu(typeof e==`object`&&e?e.agents:[]).options.map(e=>e.label).join(`, `)}function zu(e){return e===1?`1 git repo`:`${e} git repos`}function Bu(e,t){let n=t.trim();return!n||e.includes(n)?null:[...e,n]}var Vu=0,Hu=`Could not read the current repository roots.`;function Uu(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)}async function Wu(e){let t=await du(`get-settings`,{});if(t.type!==`settings`)return Hu;let n=t.settings.repoRoots;if(!Uu(n))return Hu;let r=Bu(n,e);if(!r)return null;let i=await du(`update-settings`,{settings:{repoRoots:r}});return i.type===`settings-error`?i.message:null}function Gu({onAdded:e}){Vu+=1;let t=`repo-roots-adder-path-${Vu}`,n=E(`div`,`repo-roots-adder`),r=E(`div`,`repo-roots-adder-found`),i=E(`span`,`repo-roots-adder-label`,`FOUND ON THIS MACHINE`),a=E(`ul`,`repo-roots-adder-list`);r.append(i,a),r.hidden=!0;let o=E(`label`,`repo-roots-adder-label`,`TYPE A PATH`);o.htmlFor=t;let s=E(`div`,`repo-roots-adder-row`),c=E(`input`,`dialog-input repo-roots-adder-input`);c.id=t,c.type=`text`,c.placeholder=`~/src`,c.autocomplete=`off`,c.spellcheck=!1;let l=E(`button`,`btn-dialog btn-dialog-cancel`,`Add`);l.type=`button`,l.disabled=!0,s.append(c,l);let u=E(`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 Wu(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=E(`li`,`repo-roots-adder-suggestion`),n=E(`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(E(`span`,`repo-roots-adder-path`,t.label),E(`span`,`repo-roots-adder-count`,zu(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 Ku(e){return[...document.querySelectorAll(`.dialog-overlay`)].at(-1)===e}function qu({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?Ku(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 Ju(e,t){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,t),Zu(e)}function Yu({title:e,dialogClass:t=`dialog`,cancelLabel:n=`Cancel`}){let{overlay:r,dialog:i,close:a}=qu({dialogClass:t}),o=`dialog-title-${Math.random().toString(36).slice(2)}`,s=E(`h3`,`dialog-title`,e);s.id=o;let c=E(`div`,`dialog-actions`),l=E(`button`,`btn-dialog btn-dialog-cancel`,n);return c.append(l),i.append(s),Ju(i,o),{overlay:r,dialog:i,close:a,titleEl:s,actions:c,btnCancel:l}}function Xu({title:e,message:t,confirmLabel:n=`Confirm`,danger:r=!1,onConfirm:i}){let{dialog:a,close:o,actions:s,btnCancel:c}=Yu({title:e}),l=E(`p`,`dialog-message`,t),u=E(`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 Zu(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 Qu(e){return e instanceof Error?e.message:String(e)}function $u(e,t,n=!1){let r=E(`label`,`dialog-checkbox-label`),i=E(`input`);return i.type=`checkbox`,i.className=`dialog-checkbox`,i.value=t,i.checked=n,r.append(i,E(`span`,null,e)),r}function ed(e){return e.split(/[\\/]/).filter(Boolean).at(-1)??e}async function td(e){let[t,n]=await Promise.all([du(`get-workspace-repos`,{id:e}),du(`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:ed(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 nd(e){let{overlay:t,dialog:n,close:r,actions:i,btnCancel:a}=Yu({title:`Workspace repositories`}),o=E(`p`,`dialog-message`,`Saving restarts the session and resumes its conversation. A removed repository keeps its workspace branch, so committed work survives.`),s=E(`fieldset`,`dialog-workspace-list`);s.setAttribute(`aria-label`,`Workspace repositories`),s.append(E(`div`,`dialog-hint`,`Loading repositories...`));let c=E(`div`,`dialog-hint`);c.setAttribute(`role`,`status`);let l=E(`div`,`dialog-error`),u=E(`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()),td(e).then(e=>{if(t.isConnected){s.textContent=``;for(let t of e)s.append($u(t.name,t.path,t.isMember));u.disabled=!1}}).catch(e=>{t.isConnected&&(s.textContent=``,l.textContent=`Could not load repositories: ${Qu(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`,du(`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: ${Qu(e)}`)}).finally(()=>{c.textContent=``,u.disabled=!1}))})}function rd(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 id(e,t){let n=0;for(let r of t)rd(r,e)&&n++;return n}function ad(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 od(){let e=[];for(let[,t]of j)e.push(t.card.dataset.session??``);return e}function sd(e){return id(e,od())}function cd(e){return ad(e??``,od())}var ld=320,ud=8e3,dd=new Set;function fd(e){dd.add(e)}var pd=(e,t)=>{for(let n of dd)n(e,t)},md=window.matchMedia?.(`(prefers-reduced-motion: reduce)`);function hd(e){md?.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 gd(e){if(!e||e.currentState!==w.RUNNING)return;let t=performance.now();e._lastOutputAt=t,!(t-(e._activityGate||0)<ld)&&(e._activityGate=t,e._activity===`quiet`&&(e._activity=`active`,pd(e,`flag`)),pd(e,`beat`))}function _d(e){if(!e||e.currentState!==w.RUNNING)return;let t=performance.now()-(e._lastOutputAt||0)>=ud?`quiet`:`active`;e._activity!==t&&(e._activity=t,pd(e,`flag`))}function vd(e,t){e&&(t&&(e._lastOutputAt=performance.now(),e._activityGate=0,e._activity=`active`),t||(e._activity=void 0),pd(e,`flag`))}var yd=new Set([w.RUNNING,w.WAITING,w.STARTING,w.INITIALIZING]),bd=e=>yd.has(e);function xd(e){return bd(e.currentState)?xc(Date.now()-(e.stateSince||Date.now()),{rounding:`floor`,showsHours:!0}):``}var Sd=new Set;function Cd(e){return Sd.add(e),()=>Sd.delete(e)}function wd(){for(let[,e]of j)_d(e);for(let e of Sd)try{e()}catch{}}setInterval(()=>{document.hidden||wd()},1e3),document.addEventListener(`visibilitychange`,()=>{document.hidden||wd()});function Td(e){return yc(Number(e)||0,{rounding:`round`,wording:`compact`,suffix:``,justNowBelowSeconds:0})}function Ed(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?`never`:`${Td(Date.now()-e)} ago`}var Dd=e=>`polled ${Ed(e)}`;function Od(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=Dd){let a={el:e,ts:n,format:r};i(a),t.push(a)},onTick(e){n.push(e)},reset(){t=[],n=[]},ensure(){r||=Cd(a)}}}function kd(e,{value:t,disabled:n=!1,selected:r=!1}={}){let i=E(`option`,null,e);return t!=null&&(i.value=t),n&&(i.disabled=!0),r&&(i.selected=!0),i}function Ad(e){return typeof e!=`object`||!e?!1:`skipPermissionsByDefault`in e&&e.skipPermissionsByDefault===!0}function jd(e){return e.type===`add-session-result`&&e.error?e.error:e.type===`error`?e.message:`The session was not added.`}function Md(){let{dialog:e,close:t}=qu();e.innerHTML=_u,Ju(e,`add-session-title`);let n=A(e,`#add-session-picker`,`select`),r=ue(e,`#add-session-picker-label`),i=ue(e,`#add-session-workspace-list`),a=A(e,`#add-session-single-mode`,`button`),o=A(e,`#add-session-workspace-mode`,`button`),s=ue(e,`#add-session-agent-label`),c=A(e,`#add-session-agent`,`select`),l=ue(e,`#add-session-repo-roots`),u=ue(e,`#add-session-repo-roots-title`),d=A(e,`#add-session-advanced-toggle`,`button`),f=ue(e,`#add-session-advanced`),p=A(e,`#add-session-name`,`input`),m=A(e,`#add-session-path`,`input`),h=ue(e,`#add-session-path-label`),g=A(e,`#add-session-skip-perms`,`input`),_=A(e,`#add-session-unguarded`,`input`),v=ue(e,`#add-session-run-in-place-label`),y=A(e,`#add-session-run-in-place`,`input`),b=ue(e,`#add-session-error`),x=A(e,`#add-session-cancel`,`button`),S=A(e,`#add-session-confirm`,`button`),ee=!1;function te(e){ee=e,a.setAttribute(`aria-pressed`,String(!e)),o.setAttribute(`aria-pressed`,String(e)),r.hidden=e,i.hidden=!e,d.hidden=e,d.setAttribute(`aria-expanded`,String(e)),f.hidden=!e,h.hidden=e,e&&requestAnimationFrame(()=>p.focus())}a.addEventListener(`click`,()=>te(!1)),o.addEventListener(`click`,()=>te(!0)),d.setAttribute(`aria-expanded`,`false`),d.addEventListener(`click`,()=>{let e=f.hidden;f.hidden=!e,d.setAttribute(`aria-expanded`,String(e)),e&&requestAnimationFrame(()=>p.focus())});let C=Gu({onAdded:ae});l.append(C.element);let w=xu(`dialog-hint`),T=E(`button`,`btn-dialog btn-dialog-cancel`,`Scan again`);T.type=`button`,T.hidden=!0,T.addEventListener(`click`,()=>{ae()});let ne=E(`div`,`flex items-center gap-2`);ne.append(w.element,T),l.before(ne);function re(e){n.textContent=``,n.appendChild(kd(`Scan failed`,{disabled:!0,selected:!0})),i.textContent=``,w.show(`error`,`The project scan failed: ${e}`),T.hidden=!1,T.disabled=!1}function ie(e){let t=e.type===`repo-roots-scanned`;u.textContent=t&&e.directories.length>0?`No projects in your repository roots yet`:`No repository roots yet`,C.setSuggestions(t?e.suggestions??[]:[]),l.hidden=!1}function ae(){return T.disabled=!0,w.show(`busy`,`Scanning your repository roots`),du(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q}).then(e=>{if(e.type===`repo-roots-scanned`&&e.error){re(e.error);return}w.clear(),T.hidden=!0,n.textContent=``,i.textContent=``,l.hidden=!0,n.appendChild(kd(`-- Select a project --`,{value:``,disabled:!0,selected:!0}));let t=!1,r=e.type===`repo-roots-scanned`?e.directories:[];for(let e of r){if(e.projects.length===0)continue;let r=E(`optgroup`);r.label=e.root;for(let n of e.projects){let e=sd(n.name),a=e>0?`${n.name} (${e} open)`:n.name,o=n.isGit===!1?`${a} (not a git repo)`:a;r.appendChild(kd(o,{value:JSON.stringify({name:n.name,path:n.path,isGit:n.isGit!==!1})})),i.appendChild($u(n.name,n.path)),t=!0}n.appendChild(r)}t||(n.textContent=``,n.appendChild(kd(`No projects yet`,{disabled:!0,selected:!0})),i.textContent=`No projects yet.`,ie(e))}).catch(e=>{re(Cu(e,q))})}ae(),n.addEventListener(`change`,()=>{try{let e=JSON.parse(n.value);p.value=cd(e.name),m.value=e.path,O(!e.isGit)}catch{}});let oe=ku,se=!1;function ce(e){let t=E(`p`,`dialog-hint dialog-hint-warning`,e);return t.setAttribute(`role`,`status`),b.before(t),t}function D(e){se=!0,S.disabled=!0,ce(e).id=`add-session-agent-guidance`}du(`list-agents`,{},{timeoutMs:q}).then(e=>{let t=Pu(e);t.canSpawn||D(t.guidance);let n=Mu(e.type===`agents-listed`?e.agents:[]);if(oe=n.selectedId,n.show){c.textContent=``;for(let e of n.options)c.appendChild(kd(e.label,{value:e.id,selected:e.id===n.selectedId}));s.hidden=!1}}).catch(e=>{ce(`Could not load the agent list (${Cu(e,q)}), so the session uses the default agent.`)}),c.addEventListener(`change`,()=>{oe=c.value});let le=!1;g.addEventListener(`change`,()=>{le=!0}),du(`get-settings`,{},{timeoutMs:q}).then(e=>{e.type===`settings-error`?ce(`Could not load your settings (${e.message}). Check Skip permissions yourself.`):le||(g.checked=Ad(e.settings))}).catch(e=>{ce(`Could not load your settings (${Cu(e,q)}). Check Skip permissions yourself.`)});function O(e){v.hidden=!e,y.checked=!1}p.addEventListener(`input`,()=>{n.selectedIndex=0}),m.addEventListener(`input`,()=>{n.selectedIndex=0,O(!1)});function k(){if(se)return;let e=p.value.trim(),t=m.value.trim();if(ee){let t=[...i.querySelectorAll(`input:checked`)].map(e=>e.value);if(!e||t.length<2){b.textContent=`Enter a name and select at least two repositories.`;return}let n={name:cd(e),path:t[0],repos:t,dangerouslySkipPermissions:g.checked,unguarded:_.checked};oe&&oe!==`claude-code`&&(n.agent=oe),de(n);return}if(!e||!t){b.textContent=`Both fields are required. Select a project or use Advanced options.`;return}let n={name:cd(e),path:t,dangerouslySkipPermissions:g.checked,unguarded:_.checked,runInPlace:y.checked};oe&&oe!==`claude-code`&&(n.agent=oe),de(n)}function de(e){S.disabled=!0,b.textContent=``,du(`add-session`,e,{timeoutMs:q}).then(e=>{e.type===`add-session-result`&&e.ok?t():(b.textContent=jd(e),e.type===`add-session-result`&&e.reason===`not-git`&&(v.hidden=!1))}).catch(e=>{b.textContent=`The session was not added: ${Cu(e,q)}`}).finally(()=>{S.disabled=se})}x.addEventListener(`click`,t),S.addEventListener(`click`,k),p.addEventListener(`keydown`,e=>{e.key===`Enter`&&(ee&&k(),ee||m.focus())}),m.addEventListener(`keydown`,e=>{e.key===`Enter`&&k()}),requestAnimationFrame(()=>n.focus())}function Nd({issueId:e,issueTitle:t,format:n,content:r,message:i,error:a}){let{dialog:o,close:s,actions:c,btnCancel:l}=Yu({title:`Investigation report`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),u=E(`div`,`dialog-report-meta`,t||e||``),d=null;if(n===`html`&&!a&&!i){let e=E(`iframe`,`dialog-report-frame`);e.setAttribute(`sandbox`,``),e.srcdoc=r||``,d=e}d||=E(`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 Pd({issueTitle:e,projectLabel:t,onOpenReport:n}){let{dialog:r,close:i,actions:a,btnCancel:o}=Yu({title:`Investigation`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),s=E(`div`,`dialog-report-meta`,t?`${t}: ${e}`:e),c=E(`p`,`dialog-trail-status`),l=E(`p`,`dialog-trail-summary`),u=E(`ol`,`dialog-trail-steps`),d=E(`p`,`dialog-trail-empty`,`No tool calls yet; the session is reading the issue.`),f=E(`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=Yc(e);if(m!==n){u.textContent=``;for(let t of e.steps){let n=E(`li`,`dialog-trail-step`);n.append(E(`span`,`dialog-trail-at`,Jc(e.startedAt,t.at)),E(`span`,`dialog-trail-tool`,t.tool),E(`span`,`dialog-trail-detail`,t.detail)),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=Xc(e,Ed(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=Cd(()=>{r.isConnected?p?.inFlight&&g(p):v()});return{update(e){p=e,_()},isOpen:()=>r.isConnected,close:()=>{v(),i()}}}function Fd(e,t,n){return{body:String(n||`Session needs attention`),tag:`glimmervoid-${e||``}-${t||``}`,renotify:!0,silent:!0}}var Id=4e3;function Ld(e,t){return`glimmervoid-notify-claim-${e||``}-${t||``}`}function Rd(e,t,n,r=Id){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 zd=`#plan/`;function Bd(e){return`${zd}${encodeURIComponent(e)}`}function Vd(e){if(!e.startsWith(zd))return null;let t=e.slice(6);if(!t||t.includes(`/`))return null;try{return decodeURIComponent(t)||null}catch{return null}}function Hd(){return typeof Notification>`u`?null:Notification}function Ud(){return Hd()!==null}function Wd(){let e=Hd();return e?e.permission:`unavailable`}async function Gd(){let e=Hd();if(!e)return`denied`;if(e.permission!=="default")return e.permission;try{return await e.requestPermission()}catch{return e.permission}}function Kd(){return!Ud()&&!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.`:Ud()?Wd()===`denied`&&Ho()?`Blocked by the browser. Allow notifications for this site in its site settings.`:null:`This browser does not support desktop notifications.`}function qd(){return Ho()&&Wd()==="default"}function Jd(e=()=>{}){let t=E(`div`,`notification-permission`),n=()=>{let r=Kd();if(t.replaceChildren(),t.hidden=!r&&!qd(),r){t.append(E(`p`,`notification-permission-hint text-xs text-text-muted`,r));return}let i=E(`button`,`btn-dialog btn-dialog-cancel`,`Enable desktop notifications`);i.type=`button`,i.addEventListener(`click`,()=>{i.disabled=!0,Gd().then(()=>{n(),e()})}),t.append(i)};return n(),{element:t,refresh:n}}var Yd=`Desktop notifications are blocked by the browser, so alerts show only in this tab. Allow notifications for this site to get them again.`,Xd=new Map,Zd=!1;function Qd(){Zd||(Zd=!0,Eu(Yd,{hidesInStreamerMode:!1}))}function $d(e,t){let n=Xd.get(e)??new Set;n.add(t),Xd.set(e,n),t.addEventListener(`close`,()=>n.delete(t))}function ef(e){let t=Xd.get(e);if(t){Xd.delete(e);for(let e of t)e.close()}}function tf({session:e,category:t,message:n,kind:r,ignoreFocus:i=!1}={}){let a=Hd();if(!a||!Ho()||document.documentElement.hasAttribute(`data-streamer`)||!i&&typeof document<`u`&&typeof document.hasFocus==`function`&&document.hasFocus()||(a.permission===`denied`&&Qd(),a.permission!==`granted`)||!Rd(window.localStorage,Ld(e,t),Date.now()))return;let o=typeof e==`string`?e:``,s=j.get(o),c=s?Se(s):``;try{let i=new a(c||`Glimmervoid`,Fd(e,t,n));i.onclick=()=>{window.focus(),r===`plan`&&o&&(window.location.hash=Bd(o)),i.close()},s&&$d(o,i)}catch{}}function nf(e,t=null){return`#settings/${encodeURIComponent(e)}${t?`/${encodeURIComponent(t)}`:``}`}function rf(e){return/^#settings(?:[/?]|$)/.test(e)}function af(e){let t=e.trim();return t?`#settings?q=${encodeURIComponent(t)}`:`#settings`}function of(e,t,n){let r=E(`a`,`settings-link`,n);return r.href=nf(e,t),r}var sf=`npm install -g @anthropic-ai/claude-code`,cf={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>`},lf=null,uf=null,df=null,ff=null,pf={steps:Fu,agentSummary:``,repoRoots:[]},mf=0,hf=xu(`first-run-load-status`),gf=Jd();function _f({title:e,state:t,summary:n,badge:r,body:i}){let a=E(`li`,`first-run-step`);a.dataset.state=t,t===`current`&&a.setAttribute(`aria-current`,`step`);let o=E(`div`,`first-run-step-head`),s=E(`span`,`first-run-step-icon`);if(s.innerHTML=cf[t],o.append(s,E(`span`,`first-run-step-title`,e)),t===`done`&&n&&o.append(E(`span`,`first-run-step-summary`,n)),t===`current`&&r&&o.append(E(`span`,`first-run-step-badge`,r)),a.append(o),t!==`current`)return a;let c=E(`div`,`first-run-step-body`);return c.append(...i()),a.append(c),a}function vf(){let e=E(`div`,`first-run-step-actions`);return df=E(`button`,`btn-dialog btn-dialog-cancel`,`Rescan`),df.type=`button`,df.addEventListener(`click`,()=>{Sf({rescanAgents:!0})}),e.append(df,E(`span`,`first-run-step-hint`,`Any other terminal agent can be added under customAgents.`)),[E(`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.`),E(`code`,`first-run-command`,sf),e]}function yf(){let e=ff??Gu({onAdded:()=>{Sf({rescanAgents:!1})}});return ff=e,[E(`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 bf(){let e=E(`div`,`first-run-step-actions`),t=E(`button`,`btn-dialog btn-dialog-confirm`,`+ Session`);t.type=`button`,t.addEventListener(`click`,Md);let n=E(`span`,`first-run-step-hint`,`Folders and agents can change later in `);return n.append(of(`machine-sessions`,`repository-roots`,`Settings > Sessions`),`.`),e.append(t,n),[E(`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.`),e]}function xf(){if(!uf)return;let{steps:e,agentSummary:t,repoRoots:n}=pf;uf.replaceChildren(_f({title:`1. Agent CLI`,state:e.agent,summary:t,badge:`MISSING`,body:vf}),_f({title:`2. Repository roots`,state:e.repoRoots,summary:n.join(`, `),badge:`NEEDED`,body:yf}),_f({title:`3. First session`,state:e.firstSession,summary:``,badge:``,body:bf}))}async function Sf({rescanAgents:e}){mf+=1;let t=mf;df&&(df.disabled=!0);try{let[n,r]=await Promise.all([du(`list-agents`,e?{rescan:!0}:{},{timeoutMs:q}),du(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:q})]);if(t!==mf)return;let i=r.type===`repo-roots-scanned`,a=i?r.directories.map(e=>e.root):[];pf={steps:Lu({agentListing:n,repoRoots:a}),agentSummary:Ru(n),repoRoots:a},hf.clear(),xf(),ff?.setSuggestions(i?r.suggestions??[]:[])}catch(e){if(df&&(df.disabled=!1),t!==mf)return;hf.show(`error`,`The checklist could not load: ${Cu(e,q)} It loads again once the server answers. If it stays like this, check the terminal running Glimmervoid, or run glimmervoid doctor.`)}}function Cf(){if(lf)return lf;let e=E(`section`,`first-run-checklist`);e.setAttribute(`aria-labelledby`,`first-run-title`);let t=E(`h2`,`first-run-title`,`Get to your first session`);t.id=`first-run-title`,uf=E(`ol`,`first-run-steps`);let n=E(`p`,`first-run-footer`,`This list goes away once a session exists. Something off? Run `);return n.append(E(`code`,null,`glimmervoid doctor`),` in a terminal.`),e.append(E(`span`,`first-run-eyebrow`,`FIRST RUN`),t,E(`p`,`first-run-intro`,`Glimmervoid runs the agent CLIs you already have, inside the repositories you point it at. Two checks, then start.`),uf,hf.element,gf.element,n),lf=e,xf(),e}function wf(e,t){if(!t){lf?.parentElement===e&&(lf.hidden=!0);return}let n=Cf(),r=!n.hidden&&n.parentElement===e;n.parentElement!==e&&e.append(n),n.hidden=!1,gf.refresh(),r||Sf({rescanAgents:!1})}function Tf(){lf&&!lf.hidden&&lf.isConnected&&Sf({rescanAgents:!1})}var Ef=new Set([`http:`,`https:`]);function Df(e){let t;try{t=new URL(e)}catch{return null}return Ef.has(t.protocol)?t.href:null}var Of=2,kf=8,Af=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,jf=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,Mf=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,Nf=/^:?-{3,}:?$/,Pf=/^[A-Za-z0-9_+#.-]{1,32}$/;function Ff(e){return ot(e,{overlongLine:`reject`})}function If(e){let t=e.trim().split(/\s+/)[0]??``;return Pf.test(t)?t:``}function Lf(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function Rf(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function zf(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function Bf(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function Vf(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function Hf(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>Of)return-1}return-1}function Uf(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=Hf(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function Wf(e){let t=[],n=Vf(e,`]`),r=0;for(;r<e.length;){let i=Uf(e,r,n);if(i){let e=Df(i.target.trim());e&&t.push({type:`link`,href:e,children:Wf(i.label)}),e||Lf(t,i.label),r=i.end;continue}if(e.startsWith("`",r)){let n=Bf(e,"`",r+1);if(n!==-1){t.push({type:`code`,text:e.slice(r+1,n)}),r=n+1;continue}}let a=Rf(e,r);if(a){let n=Bf(e,a,r+a.length);if(n!==-1){t.push({type:`strong`,children:Wf(e.slice(r+a.length,n))}),r=n+a.length;continue}}let o=zf(e,r);if(o){let n=Bf(e,o,r+1);if(n!==-1){t.push({type:`emphasis`,children:Wf(e.slice(r+1,n))}),r=n+1;continue}}Lf(t,e[r]),r++}return t}function Gf(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:Gf(e.children)).join(``)}var Kf=`plan-h-`;function qf(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),`${Kf}${r===1?n:`${n}-${r}`}`}function Jf(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=Yf(e);return t.length<2?!1:t.every(e=>Nf.test(e))}function Yf(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 Xf(e){let t=jf.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function Zf(e,t,n,r){let i=Xf(e[t]);if(!i)return null;let a=[],o=i.ordered,s=i.indent,c=t;for(;c<e.length;){let t=Xf(e[c]);if(!t||t.indent<s)break;if(t.indent>s){if(r>=kf)break;let t=Zf(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:Wf(t.content)}]}),c++}}return{block:{type:`list`,ordered:o,items:a},next:c}}function Qf(e,t){let n=e[t]??``;return n.trim()===``||Ff(n)||Af.test(n)||Mf.test(n)||Xf(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&Jf(e[t+1])}function $f(e,t,n){let r=[],i=0;for(;i<e.length;){let a=e[i];if(a.trim()===``){i++;continue}let o=Af.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:If(o[2]),text:t.join(`
55
+ `)});continue}let s=Ff(a);if(s){let e=Wf(s.text);r.push({type:`heading`,level:s.level,id:qf(Gf(e),t),children:e}),i++;continue}if(Mf.test(a)){r.push({type:`rule`}),i++;continue}if(i+1<e.length&&a.includes(`|`)&&Jf(e[i+1])){let t=Yf(a).map(Wf),n=[];for(i+=2;i<e.length&&e[i].includes(`|`)&&e[i].trim()!==``;)n.push(Yf(e[i]).map(Wf)),i++;r.push({type:`table`,header:t,rows:n});continue}let c=Zf(e,i,t,n);if(c){r.push(c.block),i=c.next;continue}if(n<kf&&/^ {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:$f(a,t,n+1)});continue}let l=[a.trim()];for(i++;i<e.length&&!Qf(e,i);)l.push(e[i].trim()),i++;r.push({type:`paragraph`,children:Wf(l.join(` `))})}return r}function ep(e){return $f(e.replace(/\r\n?/g,`
56
+ `).split(`
57
+ `),{slugCounts:new Map},0)}function tp(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:Gf(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function np(e,t){for(let n of t){if(n.type===`text`){e.append(document.createTextNode(n.text));continue}if(n.type===`code`){e.append(E(`code`,`plan-inline-code`,n.text));continue}if(n.type===`emphasis`){let t=E(`em`);np(t,n.children),e.append(t);continue}if(n.type===`strong`){let t=E(`strong`);np(t,n.children),e.append(t);continue}let t=E(`a`,`plan-link`);t.href=n.href,t.target=`_blank`,t.rel=`noopener noreferrer`,np(t,n.children),e.append(t)}}function rp(e){let t=E(`li`);return ip(t,e.children),t}function ip(e,t){for(let n of t)if(n.type===`heading`){let t=E(`h${n.level}`,`plan-heading`);t.id=n.id,np(t,n.children),e.append(t)}else if(n.type===`paragraph`){let t=E(`p`,`plan-paragraph`);np(t,n.children),e.append(t)}else if(n.type===`list`){let t=n.ordered?E(`ol`,`plan-list`):E(`ul`,`plan-list`);t.append(...n.items.map(rp)),e.append(t)}else if(n.type===`code`){let t=E(`pre`,`plan-code`),r=E(`code`,n.language?`language-${n.language}`:null,n.text);t.append(r),e.append(t)}else if(n.type===`table`){let t=E(`div`,`plan-table-wrap`),r=E(`table`,`plan-table`),i=E(`thead`),a=E(`tr`);for(let e of n.header){let t=E(`th`);np(t,e),a.append(t)}i.append(a);let o=E(`tbody`);for(let e of n.rows){let t=E(`tr`);for(let n of e){let e=E(`td`);np(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=E(`blockquote`,`plan-blockquote`);ip(t,n.blocks),e.append(t)}else e.append(E(`hr`,`plan-rule`))}function ap(e){let t=E(`div`,`plan-document`);return ip(t,e),t}function op(e,{hasComment:t,isComposing:n,onComment:r,attachmentFor:i}){let a=E(`div`,`plan-document`),o=[];for(let s of e){let e=E(`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=E(`div`,`plan-section-head`),l=s.blocks[0],u=l?.type===`heading`;if(u&&ip(c,[l]),u||(e.id=`plan-introduction`),!t(s)&&!n(s)){let e=E(`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=E(`div`,`plan-section-body`);ip(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 sp={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function cp(e){let t=E(`div`,`plan-diff`);for(let n of e.lines){let e=E(`div`,`plan-diff-line plan-diff-${n.kind}`),r=E(`span`,`plan-diff-gutter`,sp[n.kind]);r.setAttribute(`aria-hidden`,`true`),e.append(r,E(`span`,`plan-diff-text`,n.text)),t.append(e)}return t}var lp=`glimmervoid-streamer-mode`,up=new Set,dp=wo(lp,!1)===!0,fp=null;function pp(e){document.documentElement.toggleAttribute(`data-streamer`,e),fp?.setAttribute(`aria-pressed`,String(e))}pp(dp);function mp(){return dp}function hp(e){if(To(lp,e),e!==mp()){dp=e,pp(e);for(let t of up)t(e)}}function gp(e){return up.add(e),()=>up.delete(e)}async function _p(e){try{let t=await du(`update-settings`,{settings:{streamerMode:e}},{timeoutMs:q});return t.type===`settings-error`?String(t.message):(hp(e),``)}catch(e){return Cu(e,q)}}async function vp(){let e=!mp();e&&hp(!0);let t=await _p(e);t&&Eu(`${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 yp(){vp()}function bp(e){fp=e,pp(mp()),e.addEventListener(`click`,yp)}var xp=new Map,Sp=null;function Cp(e){return xp.get(e)??[]}function wp(e){return Cp(e).length>0}function Tp(e){N(e)?.btnDocs.classList.toggle(`visible`,wp(e))}function Ep(e){let t=Cp(e.sessionId);e.select.replaceChildren(...t.map(t=>{let n=E(`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 Dp(e){let t=Cp(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 Op(e,t,n=`quiet`){e.status.textContent=t,e.status.dataset.tone=n}function kp(e){e.preview.replaceChildren(ap(ep(e.textarea.value)))}function Ap(e,t){Xu({title:e,message:`Your unsaved edits will be lost.`,confirmLabel:`Discard`,danger:!0,onConfirm:t})}function jp(e,t,n){e.hasUnsavedChanges?Ap(t,n):n()}async function Mp(e,t){try{return{reply:await du(e,t,{timeoutMs:q}),failureText:null}}catch(e){return{reply:null,failureText:Cu(e,q)}}}async function Np(e,t){e.docPath=t,e.isBusy=!0,e.baseHash=null,e.textarea.readOnly=!0,Ep(e),Op(e,`Loading`),Dp(e);let{reply:n,failureText:r}=await Mp(`session-doc-read`,{id:e.sessionId,path:t});if(Sp!==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?(Op(e,i?.error||r||`Could not open this doc`,`warn`),Dp(e)):(e.textarea.value=i.text,e.baseHash=i.hash,e.hasUnsavedChanges=!1,e.mode===`preview`&&kp(e),Op(e,``),Dp(e))}async function Pp(e){if(e.btnSave.disabled||e.baseHash===null)return;e.isBusy=!0,Op(e,`Saving`),Dp(e);let t=e.docPath,n=e.textarea.value,{reply:r,failureText:i}=await Mp(`session-doc-save`,{id:e.sessionId,path:t,text:n,baseHash:e.baseHash});if(Sp!==e||e.docPath!==t)return;e.isBusy=!1;let a=r?.type===`session-doc-save-result`?r:null;!a?.ok||a.hash===void 0?(Op(e,a?.conflict?`The agent changed this file since you opened it. Reload to see its version.`:a?.error||i||`Save failed`,`warn`),Dp(e)):(e.baseHash=a.hash,e.hasUnsavedChanges=e.textarea.value!==n,Op(e,e.hasUnsavedChanges?`Unsaved changes`:`Saved`),Dp(e))}function Fp(e,t){e.mode=t,t===`preview`&&kp(e),Dp(e),t===`edit`&&e.textarea.focus()}function Ip(e,t){let n=E(`button`,`plan-control ${t}`,e);return n.type=`button`,n}function Lp(e){let t=Cp(e)[0];if(!t||Sp)return;let n=()=>jp(y,`Close this doc?`,()=>y.close()),r=qu({dialogClass:`doc-editor`,closeOnBackdrop:!1,onEscape:n}),i=`doc-editor-title-${e}`,a=E(`h3`,`doc-editor-title`,t.name);a.id=i;let o=E(`select`,`plan-control doc-editor-picker`);o.setAttribute(`aria-label`,`Doc`);let s=E(`span`,`doc-editor-status`);s.setAttribute(`role`,`status`);let c=Ip(`Edit`,`doc-editor-mode`),l=Ip(`Preview`,`doc-editor-mode`),u=Ip(`Reload`,`doc-editor-reload`),d=Ip(`Save`,`doc-editor-save`),f=Ip(`Close`,`doc-editor-close`),p=E(`div`,`doc-editor-modes`);p.append(c,l);let m=E(`div`,`doc-editor-actions`);m.append(s,u,d,f);let h=E(`div`,`doc-editor-header`);h.append(a,o,p,m);let g=E(`textarea`,`plan-editor doc-editor-text`);g.spellcheck=!0,g.setAttribute(`aria-labelledby`,i);let _=E(`div`,`doc-editor-preview`),v=E(`div`,`doc-editor-body`);v.append(g,_),r.dialog.append(h,v),Ju(r.dialog,i);let y={sessionId:e,docPath:t.path,baseHash:null,hasUnsavedChanges:!1,isBusy:!1,mode:mp()?`preview`:`edit`,title:a,select:o,textarea:g,preview:_,status:s,btnEdit:c,btnPreview:l,btnReload:u,btnSave:d,close:()=>{Sp=null,r.close()}};Sp=y,g.addEventListener(`input`,()=>{y.hasUnsavedChanges||(y.hasUnsavedChanges=!0,Op(y,`Unsaved changes`),Dp(y))}),g.addEventListener(`keydown`,e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),Pp(y))}),o.addEventListener(`change`,()=>{let e=o.value;o.value=y.docPath,jp(y,`Open another doc?`,()=>{Np(y,e)})}),c.addEventListener(`click`,()=>Fp(y,`edit`)),l.addEventListener(`click`,()=>Fp(y,`preview`)),u.addEventListener(`click`,()=>{jp(y,`Reload this doc?`,()=>{Np(y,y.docPath)})}),d.addEventListener(`click`,()=>{Pp(y)}),f.addEventListener(`click`,n),Np(y,t.path),y.mode===`edit`&&g.focus()}function Rp(e){Sp&&Sp.sessionId===e&&(Ep(Sp),Dp(Sp),!Cp(e).some(e=>e.path===Sp?.docPath)&&Op(Sp,`This doc is no longer surfaced, so it cannot be saved.`,`warn`))}function zp(e){xp.set(e.id,e.docs),e.docs.length===0&&xp.delete(e.id),Tp(e.id),Rp(e.id)}function Bp(e){let t=[...xp.keys()];xp.clear();for(let[t,n]of Object.entries(e.sessions))xp.set(t,n);for(let e of new Set([...t,...xp.keys()]))Tp(e),Rp(e)}function Vp({dialogClass:e,titleText:t,titleId:n,body:r,onCloseRequest:i}){let a=qu({dialogClass:e,closeOnBackdrop:!1,onEscape:i}),o=E(`div`,`coherence-journal-header`),s=E(`h3`,`dialog-title`,t);s.id=n;let c=E(`button`,`btn-dialog btn-dialog-cancel`,`Close`);return c.type=`button`,o.append(s,c),a.dialog.append(o,...r),Ju(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 Hp({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=uu(e),m=Vp({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 Up=2,Wp={needsYou:1,broken:2,askedOfYou:3,waiting:4,settled:5},Gp={danger:Wp.broken,warn:Wp.askedOfYou,wait:Wp.waiting,ok:Wp.settled,muted:Wp.settled};function Kp(e){return e?Gp[e]:Wp.settled}function qp(e){let t=[...e].sort((e,t)=>e.tier-t.tier),n=t.slice(Up);return{visible:t.slice(0,Up),overflowCount:n.length,overflowHoverText:n.map(e=>`${e.text} ${e.hoverText}`).join(`
58
+ `)}}function Jp(e){return e.map(e=>[e.key,e.text,e.hoverText,e.look?.icon,e.look?.tone,e.tier].join(`|`)).join(`
59
+ `)}var Yp={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 Xp(e){return e?.active!==!1||e.reason===Dr.notInstalled?[]:[{key:`coherence-hooks`,text:`Hooks off`,hoverText:`Coherence hooks not active: ${e.reason}${e.version?` (${e.version})`:``}`,look:{icon:`failed`,tone:`danger`},tier:Wp.broken}]}function Zp(e){let t=zt.safeParse(e.kind);return{heading:`${t.success?Yp[t.data]:e.kind} | ${e.at??`Unknown time`} | ${e.id}`,text:e.text,detail:e.detail,supersedes:e.supersedes?`Supersedes: ${e.supersedes}`:null}}function Qp(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 $p=new Map,em=new Map,tm=Hp({requestPrefix:`coherence-journal`,dialogClass:`dialog coherence-journal-drawer`,titleText:`Coherence journal`,unavailableLabel:`Journal unavailable`,timeoutMs:5e3});function nm(e,t){em.delete(e),t&&em.set(e,t),cm(e)}function rm(e){$p.delete(e),em.delete(e);let t=tm.currentPanel();t?.sessionId===e&&t.close()}function im(e){let t=$p.get(e.id);t&&t.updatedAt>e.updatedAt||($p.set(e.id,e),cm(e.id))}function am(e){$p.clear();for(let[t,n]of Object.entries(e.sessions))$p.set(t,n);let t=tm.currentPanel();t&&cm(t.sessionId)}function om(e){return Xp(em.get(e)??null).map(t=>({...t,onActivate:()=>lm(e)}))}function sm(e){return $p.get(e)?.journal.ok===!0}function cm(e){let t=tm.currentPanel();if(!t||t.sessionId!==e)return;let n=Qp(em.get(e)??null,$p.get(e)??null);t.parts.reading.replaceChildren(...n.lines.map(e=>E(`p`,null,e)))}function lm(e){let t=E(`div`,`coherence-journal-reading`),n=E(`p`,`coherence-journal-status`,`Loading journal`);n.setAttribute(`role`,`status`);let r=E(`div`,`coherence-journal-entries`);tm.open({sessionId:e,status:n,body:[t,n,r],parts:{reading:t,entries:r},paintBeforeRequest:()=>cm(e),buildRequest:t=>({type:`session-coherence-journal`,id:e,requestId:t})})}function um(e){let t=tm.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=Zp(e),n=E(`article`,`coherence-journal-entry`);return n.append(E(`h4`,null,t.heading),E(`p`,null,t.text)),t.detail&&n.append(E(`p`,null,t.detail)),t.supersedes&&n.append(E(`p`,null,t.supersedes)),n}))):t.status.textContent=`Journal unavailable: ${e.error||`could not read journal`}`)}var dm=/\bElectron\/\d/,fm=new Set([`localhost`,`127.0.0.1`]);function pm(e){return dm.test(e)}function mm({userAgent:e,pageHostname:t}){return pm(e)&&fm.has(t)}function hm(e){return Df(e)!==null}var gm=new Set([0,1]);function _m({button:e,opensInNewTab:t}){return t&&gm.has(e)}function vm(){return mm({userAgent:navigator.userAgent,pageHostname:location.hostname})}function ym(e){window.open(e,`_blank`,`noopener,noreferrer`)}async function bm(e){try{let t=await ac();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 xm(e){!vm()||!hm(e)?ym(e):bm(e).then(t=>{t||ym(e)})}function Sm(e){if(e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href]`):null;t instanceof HTMLAnchorElement&&_m({button:e.button,opensInNewTab:t.target===`_blank`})&&hm(t.href)&&(e.preventDefault(),xm(t.href))}function Cm(e){vm()&&(e.addEventListener(`click`,Sm,!0),e.addEventListener(`auxclick`,Sm,!0))}var wm=Object.freeze({now:0,later:1,resting:2}),Tm=new Map(Object.entries({WAITING:`now`,COMPLETE:`later`,FAILED:`resting`,IDLE:`resting`,RUNNING:`resting`,STARTING:`resting`,INITIALIZING:`resting`,DORMANT:`resting`,DONE:`resting`}));function Em(e){return(typeof e.state==`string`?Tm.get(e.state):void 0)??`resting`}function Dm(e){return wm[Em(e)]}function Om(e,t){return[...e].map(([e,n])=>{let r=n.currentState||w.DORMANT;return{id:e,ui:n,name:t(n),isDormant:r===w.DORMANT,state:r}})}function km(e){return[...e].sort((e,t)=>Number(e.isDormant===!0)-Number(t.isDormant===!0))}function Am(e,t){return e.length?e[((t==null?-1:e.indexOf(t))+1)%e.length]:null}function jm(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 Mm({state:e}={}){return Em({state:e})!==`resting`}function Nm(e){return e.filter(Mm).sort((e,t)=>Dm(e)-Dm(t)).map(({id:e})=>e)}function Pm(e){let t={waitingCount:0,finishedCount:0};for(let n of e||[])Mm(n||{})&&(n?.state===w.COMPLETE?t.finishedCount++:t.waitingCount++);return t}function Fm({waitingCount:e,finishedCount:t}){let n=[];return e===1&&n.push(`1 NEEDS YOU`),e>1&&n.push(`${e} NEED YOU`),t>0&&n.push(`${t} FINISHED`),n.length===0?`ALL CLEAR`:n.join(`, `)}var Im=new Map([[`hand`,2]]),Lm=1;function Rm(e){return e?typeof e==`string`&&Im.get(e)||Lm:0}function zm(e){let t=!1,n=0;for(let r of e||[]){let e=Rm(r);e<=n||(t=typeof r!=`string`||r,n=e)}return t}var Bm=Object.freeze({idle:`#c084fc`,complete:`#4ade80`,waiting:`#fbbf24`});function Vm(e){let t=Array.isArray(e)?e:[],n=!1;for(let e of t){let t=Em(e||{});if(t===`now`)return`waiting`;t===`later`&&(n=!0)}return n?`complete`:`idle`}function Hm(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"/><path d="M10 8 L22 16 L10 24Z" fill="${Bm[e]||Bm.idle}"/>${e===`complete`?`<circle cx="25" cy="7" r="3" fill="#4ade80"/>`:``}</svg>`}function Um(){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 Wm=Um(),Gm=`idle`;function Km(e){let t=Vm([...e.values()].map(({currentState:e})=>({state:e})));t!==Gm&&(Gm=t,Wm.href=`data:image/svg+xml,${encodeURIComponent(Hm(t))}`)}function qm(e,t){return Number.isFinite(e)?Math.round(Math.min(t.maxPx,Math.max(t.minPx,e))):null}function Jm(e,t){return e===`ArrowRight`?t:e===`ArrowLeft`?-t:null}function Ym({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=qm(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=Jm(e.key,a);if(n===null)return;e.preventDefault();let r=u(t.getBoundingClientRect().width+l*n);r!==null&&s(r)})}var Xm=`http://www.w3.org/2000/svg`;function Zm(e,t){let n=document.createElementNS(Xm,e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function Qm(e,t){let n=document.createElementNS(Xm,`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 $m=`M4 4L12 12M12 4L4 12`,eh=`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`,th=`M3 4h10M3 8h10M3 12h10`,nh=`M3 8h0.01M8 8h0.01M13 8h0.01`;function rh(e){let t=Qm(16,16);return t.classList.add(`line-icon`),t.append(Zm(`path`,{d:e,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),t}var ih={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 ah(e,t){let n=Qm(16,16);return n.classList.add(`pr-status-icon`),t&&(n.dataset.tone=t),n.append(Zm(`path`,{d:ih[e],fill:`currentColor`})),n}function oh(e,{className:t=``,linkUrl:n,onActivate:r}={}){let i=`signal ${t}`.trim(),a=n?de(i,``,n,e.hoverText):E(`span`,i);return a.title=e.hoverText,e.look&&(a.dataset.tone=e.look.tone,a.append(ah(e.look.icon,e.look.tone))),a.append(e.text),r&&sh(a,r,!n),a}function sh(e,t,n){e.addEventListener(`click`,e=>{e.stopPropagation(),!e.defaultPrevented&&(e.preventDefault(),t())}),n&&(e.tabIndex=0,e.setAttribute(`role`,`button`),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.stopPropagation(),e.preventDefault(),t())}))}function ch(e){e.removeAttribute(`tabindex`),e.removeAttribute(`role`)}function lh(e,t){if(e.closest(`button, a[href]`))for(let e of t){ch(e);for(let t of e.querySelectorAll(`[role="button"]`))ch(t)}}function uh(e){if(e.overflowCount===0)return null;let t=E(`span`,`signal-overflow`,`+${e.overflowCount}`);return t.title=e.overflowHoverText,t}function dh(e,t,n=e=>oh(e,e)){let r=Jp(t);if(e.dataset.signalSignature===r)return;e.dataset.signalSignature=r;let i=qp(t),a=i.visible.map(n),o=uh(i);o&&a.push(o),lh(e,a),e.hidden=a.length===0,e.replaceChildren(...a)}var fh=[],ph=`plan`,mh={parked:{text:`PARKED`,hoverText:`Merge parked`,look:{icon:`failed`,tone:`danger`},tier:Wp.broken},merging:{text:`MERGING`,hoverText:`Merging`,look:{icon:`queued`,tone:`wait`},tier:Wp.waiting}};function hh(e){fh.push(e)}function gh(e){let t=mh[e];return t?[{...t,key:`merge`}]:[]}function _h(e){let t=e.closest(`.session-row`),n=t?.dataset.id;t&&n&&dh(e,[...gh(t.dataset.merge??``),...fh.flatMap(e=>e(n))])}function vh(){for(let e of document.querySelectorAll(`.session-row-signals`))_h(e)}function yh(e,t=``){let n=E(e,`session-row ${t}`.trim());return n.innerHTML=`<span class="session-row-glyph" aria-hidden="true"></span><span class="session-row-main"><span class="session-row-name"></span><span class="session-row-task" hidden></span><span class="session-row-meta"><span class="session-row-label"></span><span class="session-row-signals" hidden></span></span></span><span class="session-row-elapsed" aria-hidden="true"></span>`,{row:n,refs:{glyph:ue(n,`.session-row-glyph`),label:ue(n,`.session-row-label`),name:ue(n,`.session-row-name`),task:ue(n,`.session-row-task`),signals:ue(n,`.session-row-signals`),elapsed:ue(n,`.session-row-elapsed`)}}}function bh(e,t){let n=E(`div`,`session-row-item`),r=E(`button`,`session-row-remove`);return r.append(rh($m)),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 xh(e,t,n,r=!1,i=null){e.dataset.state=n,e.dataset.prompt=i??``;let{glyph:a,label:o,isMonitoring:s}=pe(n,r),c=i===ph?`Plan ready`:o;return e.toggleAttribute(`data-monitoring`,s),t.glyph.textContent=a,t.label.textContent=c,c}function Sh(e,t,{ui:n,state:r,name:i,mergeStatus:a}){let o=xh(e,t,r,n.awaitingBackgroundTasks,n.pendingPromptKind);t.name.textContent=i,t.task.textContent=n.taskTitle,t.task.hidden=!n.taskTitle||n.taskTitle===i,e.dataset.merge=a,_h(t.signals),e.dataset.activity=n._activity||``,t.elapsed.textContent=xd(n);let s=[i,n.taskTitle,o].filter(Boolean).join(`, `);return e.setAttribute(`aria-label`,s),e.title=s,o}var Ch={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.`}},wh=(e,t,n=!1)=>({state:e,awaitingBackgroundTasks:n,label:n?`Monitoring`:T[e],meaning:t}),Th=Object.freeze([wh(w.DORMANT,`Not started yet.`),wh(w.INITIALIZING,`Setting up the worktree and launching the agent.`),wh(w.STARTING,`The agent is booting.`),wh(w.RUNNING,`The agent is mid-turn.`),wh(w.RUNNING,`The turn ended but background tasks or sub-agents are still running.`,!0),wh(w.WAITING,`Waiting on a permission prompt or your answer.`),wh(w.IDLE,`Ready for the next prompt.`),wh(w.COMPLETE,`Finished a turn you have not looked at yet.`),wh(w.DONE,`The agent process ended.`),wh(w.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 Eh(e,t){let n=E(`section`,`status-legend`),r=E(`dl`,`status-legend-rows`);return r.append(...t),n.append(E(`h2`,`status-legend-title`,e),r),n}function Dh(e,t){let n=E(`div`,`status-legend-row`);return n.append(e,E(`dd`,`status-legend-meaning`,t)),n}function Oh(){return Eh(`Status colors`,Th.map(e=>{let t=E(`dt`,`status-legend-badge`),n=E(`span`,`status-legend-glyph`),r=E(`span`,`status-legend-name`);n.setAttribute(`aria-hidden`,`true`),t.append(n,r);let i=Dh(t,e.meaning);return xh(i,{glyph:n,label:r},e.state,e.awaitingBackgroundTasks),i}))}function kh(){return Eh(`Pull request icons`,Object.keys(Ch).map(e=>{let t=Ch[e],n=E(`dt`,`status-legend-badge`);return n.append(ah(e),E(`span`,`status-legend-name`,t.label)),Dh(n,t.meaning)}))}var Ah=new Set(fs());function jh(){ps([...Ah])}function Mh(e){if(!e)return;let t=String(e);Ah.has(t)||(Ah.add(t),jh())}function Nh(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),Mh(i)}return[...Ah].filter(e=>!n.has(e))}function Ph(e){return!e||!Ah.delete(String(e))?!1:(jh(),!0)}function Fh(e,t=`explicit-state`){let n=t===`dormant-fallback`?e||w.DORMANT:e;return n===w.DORMANT?`start-session`:n===w.COMPLETE?`dismiss`:null}function Ih({previousState:e,nextState:t,isPhoneLayout:n,isDocumentVisible:r,isDocumentFocused:i,isActiveViewer:a,hasFocusInsideTerminal:o}){return t!==w.COMPLETE||!e||e===w.COMPLETE||!r?!1:n?a:i&&o}function Lh(e,t){if(!e)return null;let n=t.get(e);return!n||(n.currentState||w.DORMANT)===w.DORMANT?null:e}function Rh(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function zh(e,t,n){let r=E(`button`,`popup-menu-item ${n}`);return r.type=`button`,r.setAttribute(`role`,`menuitem`),r.setAttribute(`aria-label`,e),r.append(E(`span`,`popup-menu-item-label`,e),E(`span`,`popup-menu-item-hint`,t)),r}function Bh(e){return e.key===`ArrowDown`||e.key===`ArrowUp`}function Vh(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 Hh=new WeakMap;function Uh(e){let t=Hh.get(e);if(t?.element.parentElement===e.card)return t;let n=t??xu(`session-action-status m-0 px-3 py-1`);return e.termWrap.before(n.element),Hh.set(e,n),n}function Wh(e,t){let n=Uh(e);return Su(t,n)?(n.clear(),!0):!1}var Gh=!1,Kh=new Set;function qh(e){Gh=!!e,wg();for(let e of Kh)e(Gh)}function Jh(e){return Kh.add(e),()=>Kh.delete(e)}function Yh(){return Gh}var Xh=null;function Zh(e){Xh=e}var Qh=null;function $h(e){Qh=e}var eg=null;function tg(e){eg=e}var ng=[{cls:`agent-badge`,title:`Agent CLI this session supervises`},{cls:`worktree-badge`,text:`worktree`,title:`Running in a linked git worktree`,ariaLabel:`Linked git worktree`},{cls:`guardrails-badge`,text:`guardrails`,title:`Guardrails on: credentials, Glimmervoid state and blocked folders are off-limits to this session`,ariaLabel:`Guardrails on`},{cls:`post-turn-badge`,ariaHidden:!0},{cls:`usage-badge`,title:`Tokens and estimated API list-price cost for this conversation`},{cls:`wakeup-badge`},{cls:`prompt-badge`,title:`Waiting on a permission or input prompt`}];function rg({cls:e,text:t=``,title:n,ariaLabel:r,ariaHidden:i}){let a=E(`span`,e,t);return n&&(a.title=n),r&&a.setAttribute(`aria-label`,r),i&&a.setAttribute(`aria-hidden`,`true`),a}function ig(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 ag(e,t){t&&(e.dataset.saneYolo=``),t||delete e.dataset.saneYolo;let n=e.querySelector(`.perms-badge`);n&&ig(n,t)}function og(e,t){let n=N(e);n&&ag(n.card,t)}function sg(e,t,n,r={}){let i=n||w.INITIALIZING,a=E(`div`,`session-card`);a.dataset.id=e,a.dataset.session=t,a.dataset.state=i,r.skipPerms&&(a.dataset.skipPerms=``),r.saneYolo&&(a.dataset.saneYolo=``),r.worktree&&(a.dataset.worktree=``),r.workspace&&(a.dataset.workspace=``),r.guarded&&(a.dataset.guarded=``),r.guardrailsReleased&&(a.dataset.guardrailsReleased=``),r.ephemeral&&(a.dataset.ephemeral=``),r.path&&(a.dataset.path=String(r.path));let o=E(`div`,`session-card-header`),s=E(`span`,`session-name`,t);s.title=`Double-click or press F2 to rename`,s.tabIndex=0;let c=r.skipPerms?E(`span`,`perms-badge`):null;c&&ig(c,r.saneYolo===!0);let l=E(`span`,`session-task-title`);dg(l,r.taskTitle);let u=E(`div`,`session-actions`),d=E(`div`,`session-overflow`),f=E(`button`,`btn-action btn-session-menu visible`);f.append(rh(nh)),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=E(`div`,`popup-menu session-overflow-menu`);p.id=`session-menu-${e}`,p.setAttribute(`role`,`menu`),f.setAttribute(`aria-controls`,p.id);let m=zh(`Restart`,`Keeps this conversation`,`overflow-restart`),h=zh(`Restart fresh`,`Ends this conversation and starts a new one`,`overflow-restart-fresh`),g=zh(`Resume conversation...`,`Pick an earlier conversation`,`overflow-resume`),_=zh(`Edit repositories...`,`Add or remove repositories in this workspace`,`overflow-workspace-repos`),v=zh(`Link pull request...`,`Link or unlink pull requests for this session`,`overflow-link-pr visible`),y=zh(`Conversation view`,`Show this session as messages (experimental)`,`overflow-conversation-view`);y.setAttribute(`role`,`menuitemcheckbox`),y.setAttribute(`aria-checked`,`false`);let b=zh(`Guardrails`,`Limit what this session can read, write and reach`,`overflow-guardrails`);b.setAttribute(`role`,`menuitemcheckbox`),cg(b,a),v.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),lg(e)};let x=zh(`Coherence journal`,`Decisions and notes this session recorded`,`overflow-coherence-journal`);x.setAttribute(`aria-haspopup`,`dialog`);let S=()=>x.classList.toggle(`visible`,Qh?.isReadable(e)===!0);f.onclick=S,f.onkeydown=S,x.onclick=()=>{p.classList.remove(`open`),f.setAttribute(`aria-expanded`,`false`),Qh?.open(e)};let ee=zh(`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`),eg?.(e)},p.append(m,h,g,_,y,b,x,ee,v),d.append(f,p);let te=E(`button`,`btn-action btn-debug`);te.append(rh(eh)),te.title=`Debug state`,te.setAttribute(`aria-label`,`Debug session state`);let C=E(`button`,`btn-action btn-trace`);C.append(rh(th)),C.type=`button`,C.title=`Trace`,C.setAttribute(`aria-label`,`Trace`);let T=E(`button`,`btn-action btn-remove visible`);T.append(rh($m)),T.type=`button`,T.title=`Remove session`,T.setAttribute(`aria-label`,`Remove session`);let ne=E(`button`,`btn-action btn-face-plan`,`Plan`);ne.type=`button`,ne.title=`Show plan`;let re=E(`button`,`btn-action btn-face-plan btn-docs`,`Docs`);re.type=`button`,re.title=`Open docs the agent surfaced`,u.append(re,ne,te,C,d,T);let ie=E(`div`,`session-card-tags`),ae=ng.map(e=>rg(e));c&&ae.push(c),ie.append(...ae),o.append(s,l,ie,u);let oe=E(`div`,`terminal-wrap`);return a.append(o,oe),{card:a,header:o,nameEl:s,taskTitleEl:l,btnRestart:m,btnRestartFresh:h,btnSessionMenu:f,btnResume:g,btnWorkspaceRepos:_,btnConversationView:y,btnGuardrails:b,btnTrace:C,btnRemove:T,btnPlan:ne,btnDocs:re,btnDebug:te,sessionMenu:p,termWrap:oe}}function cg(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 lg(e){let{dialog:t,close:n,actions:r,btnCancel:i}=Yu({title:`Link pull request`}),a=E(`p`,`dialog-message`,`Paste a GitHub pull request URL or owner/repo#number.`),o=E(`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=E(`div`,`dialog-error`);s.setAttribute(`role`,`alert`);let c=E(`div`,`session-pr-chips dialog-linked-prs`);c.hidden=!0,Xh?.(c,e);let l=E(`button`,`btn-dialog btn-dialog-confirm`,`Link`);l.type=`button`,r.append(l),t.append(c,a,o,s,r);function u(){let t=Oi(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 ug(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 dg(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 fg(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&&Wh(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),dg(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 pg=`session-rename-input`;function mg(e){return!!e?.querySelector(`.${pg}`)}function hg(e,t,{returnsFocusToTerminal:n=!0}={}){let r=e.renameTargetEl?.isConnected?e.renameTargetEl:e.nameEl;if(!r||mg(r))return;let i=e.card?.dataset.session??r.textContent??``,a=document.createElement(`input`);a.type=`text`,a.className=pg,a.value=i,a.maxLength=64,r.textContent=``,r.appendChild(a),a.focus(),a.select();let o=Uh(e);function s(t){return e.card.dataset.ephemeral===void 0?pr.test(t)?[...j.values()].some(n=>n!==e&&n.card.dataset.session===t)?`Session "${t}" already exists.`:``:mr:`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()):Wh(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 gg(){let e=E(`button`,`debug-close`);return e.type=`button`,e.title=`Close`,e.setAttribute(`aria-label`,`Close debug overlay`),e.append(rh($m)),e}function _g(e){return e?Tc(new Date(e)):`-`}function vg(e){return`${(Number(e||0)/1e3).toFixed(1)}s`}function yg(e){return e.decision===`gated`?`(${Number(e.active)||0} bg)`:e.decision===`wait`||e.decision===`release`?`(quiet ${vg(e.quietMs)})`:``}function bg(e){let t=`<span class="debug-dim">${_g(e.ts)}</span>`;if(e.kind===`signal`){let n=Rh([e.signal,e.source].filter(Boolean).join(`/`));return e.action===`transition`?`${t} ${n} → <span class="debug-label">${Rh(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=yg(e),i=r?` <span class="debug-dim">${r}</span>`:``;return`${t} gate <span class="debug-label">${Rh(e.decision||`?`)}</span>${i}${n}`}if(e.kind===`notify`){let n=Rh(e.category||e.to||`?`);return e.category?`${t} notify <span class="debug-label">${n}</span>: fired`:`${t} notify ${n}: <span class="debug-dim">silent (${Rh(e.reason||``)})</span>`}return e.kind===`notify-state`?`${t} notify ${Rh(e.category||`?`)}: <span class="debug-dim">${Rh(e.from||`?`)} → ${Rh(e.to||`?`)}</span>`:`${t} <span class="debug-dim">${Rh(e.kind||`decision`)}</span>`}function xg(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">${Rh(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">${Rh(n.join(`/`))}</span>`:``;r+=`<div class="debug-field"><span class="debug-dim">${_g(e.timestamp)}</span> ${Rh(e.from)} → ${Rh(e.to)} <span class="debug-label">${Rh(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?`${Rh(a.signal)} (${Rh(a.source||`?`)}${a.confidence?`/${Rh(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">${Rh(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 ${vg(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">${Rh(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">${bg(e)}</div>`;r+=`</div>`,e.debugOverlay.innerHTML=r,e.debugOverlay.prepend(gg())}function Sg(e,t){if(e.debugOpen){Cg(e);return}let n=document.createElement(`div`);n.className=`debug-overlay`,n.innerHTML=`<div class="debug-field debug-dim">Loading...</div>`,n.prepend(gg()),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`)&&Cg(e)}),K({type:`debug-state`,id:t})}function Cg(e){e.debugOverlay&&=(e.debugOverlay.remove(),null),e.debugOpen=!1}function wg(){for(let[,e]of j)e.btnDebug.classList.toggle(`visible`,Gh),e.btnTrace.classList.toggle(`visible`,Gh),!Gh&&e.debugOpen&&Cg(e)}function Tg(e){let t=typeof e.id==`string`?j.get(e.id):void 0;t?.debugOpen&&xg(t,e.payload)}function Eg(e){N(e)?.debugOpen&&K({type:`debug-state`,id:e})}function Dg(){return ke.snapshot().selectedSessionId}function Og(e){ke.dispatch(`selectSession`,e)}function kg(e){return ke.subscribe((t,n)=>{n.includes(`selectedSessionId`)&&e(t.selectedSessionId)})}function Ag(e,t=`explicit-state`){let n=j.get(e);if(!n)return null;let r=Fh(n.currentState,t);return r&&Wh(n,{type:r,id:e}),n}function jg(e,{rememberFocus:t=!0}={}){Og(e),t&&ks(e)}function Mg(){return Lh(Os(),j)}function Ng(e=Se){return Om([...j],e)}function Pg(e,t){let n=j.get(e);return n?Wh(n,t):K(t)?!0:(Eu(G),!1)}async function Fg(e,t){try{let n=await du(`add-session`,{name:cd(t),path:e},{timeoutMs:q});if(n.type===`add-session-result`&&n.ok)return;Eu(jd(n))}catch(e){Eu(`The session was not added: ${Cu(e,q)}`)}}function Ig(e,t){e&&Fg(e,t)}function Lg(e,t){let n=j.get(e);if(!n)return;let r=t||n.card?.dataset.merge||`none`,i=r===`pending-review`||r===`parked`;Xu({title:`Remove Session`,message:i?`"${Se(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 "${Se(n)}"?`,confirmLabel:i?`Discard & Remove`:`Remove`,danger:!0,onConfirm:()=>{Wh(n,{type:`remove-session`,id:e})}})}var Rg=Object.freeze({[w.IDLE]:`compaction_restore_idle`,[w.COMPLETE]:`compaction_restore_complete`,[w.WAITING]:`compaction_restore_waiting`});function zg(e){return Object.values(Rg).some(t=>t===e)}var Bg=new Set([`claude-code`,`codex`]),Vg=`\x1B`,Hg=`${Vg}[200~`,Ug=`${Vg}[201~`,Wg=400,Gg=4e3,Kg=/^\[Image: source: (.+)\]$/,qg=`uploads`,Jg=new Set([`Agent`,`Task`]),Yg=/^Async agent launched/,Xg=`<task-notification>`,Zg=/<tool-use-id>([^<]+)<\/tool-use-id>/,Qg=/<task-id>([^<]+)<\/task-id>/,$g=/agentId: ([\w-]+)/,e_=/<status>([^<]+)<\/status>/,t_=6e5;function n_(e){return typeof e==`string`&&Bg.has(e)}function r_(e,t){if(!n_(e))return null;let n=t.replace(/\r\n?/g,`
60
+ `).trim();return n?[{data:n.includes(`
61
+ `)?`${Hg}${n}${Ug}`:n,delayBeforeMs:0},{data:`\r`,delayBeforeMs:Wg}]:null}function i_(e){return n_(e)?[{data:`\r`,delayBeforeMs:0}]:null}function a_(e){return n_(e)?[{data:Vg,delayBeforeMs:0}]:null}function o_(e,t){return e===w.WAITING&&typeof t==`string`&&t!==``}function s_(e,t){return e.uuid??`${e.kind}-${e.ts}-${t}`}function c_(e){return typeof e.agentId==`string`}function l_(e){let t=Kg.exec(e.trim());if(!t)return null;let[n,r,i]=t[1].split(/[\\/]/).slice(-3);return n!==qg||!r||!i?null:`/upload/${encodeURIComponent(r)}/${encodeURIComponent(i)}`}function u_(e,t){let n=e[e.length-1];n?.kind===`user`&&n.imageUrls.push(t)}function d_(e){if(!e||typeof e!=`object`)return`Agent`;let t=e.description;return typeof t==`string`&&t.trim()?t.trim():`Agent`}function f_(e,t,n){if(!e)return;if(t.isError){e.state=`failed`;return}if(!Yg.test(t.content)){e.state=`done`;return}let r=$g.exec(t.content)?.[1];r&&n.set(r,e)}function p_(e){return e.trimStart().startsWith(Xg)}function m_(e,t,n){let r=Zg.exec(e)?.[1];if(r)return t.get(r);let i=Qg.exec(e)?.[1];return i?n.get(i):void 0}function h_(e,t,n){let r=m_(e,t,n);r?.state===`running`&&(r.state=e_.exec(e)?.[1]===`completed`?`done`:`failed`)}function g_(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=s_(e,o);if(!c_(e)){if((e.kind===`prompt`||e.kind===`expansion`)&&p_(e.text))h_(e.text,i,a);else if(e.kind===`prompt`)s(),t.push({kind:`user`,key:l,text:e.text,at:e.ts,imageUrls:[]});else if(e.kind===`expansion`)for(let n of e.text.split(`
62
+ `)){let e=l_(n);e&&u_(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),!Jg.has(e.name))return;let o={key:l,description:d_(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),f_(i.get(e.toolUseId),e,a)}}}),s(),t}function __(e){return e.flatMap(e=>e.kind===`work`?e.agentRuns.filter(e=>e.state===`running`):[])}function v_(e){let t=e.at(-1);return t?.kind===`work`?t:null}function y_(e){return new Set(e.flatMap(e=>e.kind===`user`?[e.key]:[]))}function b_(e,t,n){if(n-e.sentAt>t_)return!0;let r=e.text.trim();return t.some(t=>t.kind===`user`&&!e.userKeysAtSend.has(t.key)&&t.text.includes(r))}function x_(e){return`${e} ${e===1?`agent`:`agents`}`}function S_(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 C_(e){let t=e.agentRuns.length>0?`, ${x_(e.agentRuns.length)}`:``;return`Worked ${S_(e.endedAt-e.startedAt)}${t}`}function w_(e,t){let n=t>0?`${x_(t)} running`:``;return e===null?n:n?`Working ${S_(e)}, ${n}`:`Working ${S_(e)}`}function T_(e){return e.length<=Gg?e:e.slice(e.length-Gg)}var E_=`(max-width: 768px)`,D_=`(pointer: coarse)`;function O_({coarse:e,narrowWidth:t}={}){return e===!0&&t===!0?`phone`:`desktop`}var k_=window.matchMedia?.(D_),A_=window.matchMedia?.(E_);function j_(){return O_({coarse:!!k_?.matches,narrowWidth:!!A_?.matches})}function M_(e){document.documentElement.dataset.layout!==e&&(document.documentElement.dataset.layout=e)}function N_(){ke.subscribe((e,t)=>{t.includes(`layout`)&&M_(e.layout)});let e=j_();M_(e),ke.dispatch(`setLayout`,e);let t=()=>ke.dispatch(`setLayout`,j_());return k_?.addEventListener?.(`change`,t),A_?.addEventListener?.(`change`,t),e}function P_(){return ke.snapshot().layout===`phone`}function F_(e){return ke.subscribe((t,n)=>{n.includes(`layout`)&&e(t.layout)})}var I_=`CommitMono`,L_=[400,700].map(e=>`${e} 14px ${I_}`),R_=`monospace`;function z_(e){return e.trim().replace(/^['"]|['"]$/g,``)}function B_(e,t){let n=e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0),r=t?n:n.filter(e=>z_(e)!==I_);return r.length>0?r.join(`, `):R_}function V_(e,t,n){return Promise.all(t.map(t=>e.load(t))).then(n,()=>void 0)}function H_(e,t){for(let n of e)n.term&&(n.term.options.fontFamily=t,n._syncGrid?.())}function U_(){return document.fonts?L_.every(e=>document.fonts.check(e)):!1}function W_(){return B_(getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`),U_())}function G_(e){document.fonts&&V_(document.fonts,L_,e)}var K_=`↑`,q_=`↓`,J_=`←`,Y_=`→`,X_=`⌘`,Z_=`⌥`,Q_=Array.from({length:9},(e,t)=>[`Digit${t+1}`,t+1]),$_=[{action:`next-attention`,keyCaptions:[`J`],label:`Jump to the next session needing you`,stepByCode:new Map([[`KeyJ`,0]])},{action:`rail-step`,keyCaptions:[K_,q_],label:`Previous / next session in the rail`,stepByCode:new Map([[`ArrowUp`,-1],[`ArrowDown`,1]])},{action:`view-step`,keyCaptions:[J_,Y_],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(Q_),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 ev(e){return $_.filter(t=>t.unavailablePlatform!==e)}function tv(e){return/Mac|iPhone|iPad/.test(e)?`mac`:`other`}function nv(e,t,n){return e.ctrlKey||e.shiftKey?!1:t===`mac`?e.metaKey&&e.altKey===!!n.needsMacOption:e.altKey&&!e.metaKey}function rv(e,t,n){return n.isTerminalFocused&&t!==`mac`&&!!e.isShellChord}var iv=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function av(e){return iv.has(e.key)?e.key:e.code}function ov(e,t,n={isTerminalFocused:!1}){let r=av(e);for(let i of ev(t)){let a=i.stepByCode.get(r);if(a!==void 0)return!nv(e,t,i)||rv(i,t,n)?null:{action:i.action,step:a}}return null}function sv(e,t){return e===`mac`?t?.needsMacOption?`${X_}${Z_}`:X_:`Alt`}function cv(e,t){let n=ev(t).find(t=>t.action===e);if(!n)throw Error(`Unknown dashboard shortcut: ${e}`);return n}function lv(e,t){let n=cv(e,t);return[sv(t,n),n.keyCaptions.join(` `)]}function uv(e,t){let[n,r]=lv(e,t);return t===`mac`?`${n}${r}`:`${n}+${r}`}function dv(e){let t=e===`mac`?`Meta`:`Alt`;return`ArrowUp ArrowDown ${t}+ArrowUp ${t}+ArrowDown`}function fv(e){let t=e===`mac`?X_:`Ctrl`;return[{title:`Dashboard`,items:ev(e).map(t=>({combos:t.keyCaptions.map(n=>[sv(e,t),n]),label:t.label}))},{title:`Navigation`,items:[{combos:[[K_],[q_]],label:`Move rail highlight (rail focused)`},{combos:[[J_],[Y_]],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 pv=tv(navigator.userAgent);function mv(e,t){t.forEach((t,n)=>{n>0&&e.appendChild(E(`span`,`shortcut-sep`,`+`)),e.appendChild(E(`kbd`,`kbd`,t))})}function hv(e){let t=E(`span`,`shortcut-keys`);return mv(t,e),t}var gv=6,_v=262144,vv=16384,yv=()=>{};function bv(e,t){if(t.length<=vv)e.push(t);else for(let n=0;n<t.length;n+=vv)e.push(t.slice(n,n+vv))}function xv({budget:e=gv,maxChunkBytes:t=_v,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)bv(l,e),m+=e.length,a.readIdx++;else{m===0&&(bv(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,yv);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 Sv=xv(),Cv=.3,wv=null;function Tv(){return xo(wv)}function Ev(e){return So(e,wv)}async function Dv(){try{let e=await fetch(ho,{credentials:`same-origin`,cache:`no-store`});e.ok&&(wv=Co(await e.json()))}catch{}}function Ov(){let e=new AudioContext;return e.state===`suspended`&&e.resume(),e}function kv(e,t){setTimeout(()=>e.close().catch(()=>{}),(t+.1)*1e3)}function Av(e){jv(go[e]??go.chime)}function jv(e){let t=Ov(),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)}kv(t,i)}async function Mv(e){try{let t=await fetch(yo(e),{credentials:`same-origin`});return t.ok?await t.arrayBuffer():null}catch{return null}}async function Nv(e){let t=await Mv(e);if(!t)return!1;let n=Ov();try{let e=await n.decodeAudioData(t),r=n.createGain();r.gain.value=Cv,r.connect(n.destination);let i=n.createBufferSource();return i.buffer=e,i.connect(r),i.start(),kv(n,e.duration),!0}catch{return n.close().catch(()=>{}),!1}}var Pv=[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 Fv(){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<Pv.length;i++){let a=r+i*n,o=e.createOscillator(),s=e.createGain();o.type=`square`,o.frequency.value=Pv[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+Pv.length*n;t.gain.setValueAtTime(.05,i-.05),t.gain.exponentialRampToValueAtTime(.001,i),setTimeout(()=>e.close().catch(()=>{}),(i-r+.1)*1e3)}catch{}}function Iv(){try{Av(po)}catch{}}function Lv(e){try{let t=Ev(e),n=bo(t);if(!n){Av(t);return}Nv(n).then(e=>{e||Iv()})}catch{}}var Rv={"--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)`},zv={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`},Bv={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`,...Rv,"--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:{...zv,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`,...Rv,"--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:{...zv,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`,...Rv,"--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:{...zv,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`}}},Vv=`phyrexian`,Hv=null;function Uv(e){let t=Bv[e];if(!t)return;let n=Hv;Hv=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`&&Fv()}function Wv(e){document.documentElement.toggleAttribute(`data-show-usage`,e)}function Gv(e){document.documentElement.toggleAttribute(`data-arrow-pad`,e)}function Kv(){let e=Bv[Hv||Vv];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 qv(){return Object.entries(Bv).map(([e,t])=>({id:e,label:t.label}))}var Jv=c().int().min(1).max(500),Yv=c().int().min(1).max(200);d(`type`,[g({type:m(`input`),data:l()}),g({type:m(`claim`),cols:Jv,rows:Yv}),g({type:m(`unview`)})]);var Xv=g({type:m(`pty-size`),cols:Jv,rows:Yv,seq:c().int().nonnegative()}),Zv=`history`;u([`screen`,`deep`]);function Qv(e){try{return JSON.parse(e)}catch{return null}}function $v(e){let t=Xv.safeParse(Qv(e));return t.success?t.data:null}function ey(e,t){return!e||!t?!1:e.cols===t.cols&&e.rows===t.rows}function ty(e){return!e||!Number.isInteger(e.cols)||!Number.isInteger(e.rows)?!1:e.cols>0&&e.rows>0}function ny(e){return{cols:Math.min(Math.max(e.cols,1),500),rows:Math.min(Math.max(e.rows,1),200)}}function ry({authoritative:e,isActiveViewer:t,lastClaim:n}){return!(t&&ey(e,n))}function iy({isDocumentVisible:e,isDocumentFocused:t,hasFocusInsideCard:n,hasWindowBlurredSinceFocus:r,isPhoneLayout:i}){return e?i||t?!0:n&&!r:!1}function ay({isDocumentVisible:e,isBorrowedCard:t,isTerminalFaceShown:n}){return!e||!t||!n}function oy({viewportTopLine:e,scrollbackLineCount:t,isDeepHistoryLoadedOrPending:n}){return e===0&&t>0&&t<5e3&&!n}function sy(e,t){let n=`/terminals/${encodeURIComponent(e)}`;return t?`${n}?${Zv}=deep`:n}function cy({authoritative:e,isActiveViewer:t,isDocumentEngaged:n,isDataWsOpen:r,lastClaim:i}){return!t||!n||!r?`none`:ry({authoritative:e,isActiveViewer:t,lastClaim:i})?`rebid`:`resync`}function ly({isActiveViewer:e,lastClaim:t,owedClaim:n}){return e?n??t:null}function uy({authoritative:e,applied:t,proposal:n,isActiveViewer:r,isDataWsOpen:i,lastClaim:a}){let o=!!e&&!ey(e,t),s=ty(n)?ny(n):null,c=r&&!!s&&!ey(s,a);return{resizeTo:o?e:null,owedClaim:c?s:null,keepsPendingSettle:r&&!s,sendUnview:!r&&i&&!!a,isFollowing:ry({authoritative:e,isActiveViewer:r,lastClaim:a})}}function dy(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?new TextDecoder().decode(e):null}function fy(e){let t=dy(e);return t===null?null:$v(t)}function py(e,t){if(typeof e==`string`)return{kind:`bytes`,data:e};let n=fy(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 my=``,hy=`\x1B`,gy=`\r`,_y=new Map([[`deleteContentBackward`,my],[`deleteByComposition`,my],[`deleteCompositionText`,my],[`deleteWordBackward`,hy],[`deleteSoftLineBackward`,hy],[`deleteHardLineBackward`,hy]]);function vy(e){return _y.get(e)??``}var yy=new Set([`insertFromPaste`,`insertFromPasteAsQuotation`,`insertFromDrop`,`insertFromYank`,`historyUndo`,`historyRedo`]);function by(e){return typeof e!=`string`||e===``||!yy.has(e)}function xy(e){return e?e.keyCode===229||e.key===`Process`:!1}function Sy(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 my.repeat(n.length-a)+r.slice(a).join(``).replace(/\r\n|\n|\r/g,gy)}var Cy=/https?:\/\/[^\s<>"']+/g,wy=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`'`,`"`]),Ty={")":`(`,"]":`[`,"}":`{`};function Ey(e,t){let n=0;for(let r of e)r===t&&n++;return n}function Dy(e){for(;;){let t=e[e.length-1];if(t===void 0)return e;if(wy.has(t)){e=e.slice(0,-1);continue}let n=Ty[t];if(n&&Ey(e,n)<Ey(e,t))e=e.slice(0,-1);else return e}}function Oy(e){let t=[];for(let n of e.matchAll(Cy)){let e=Dy(n[0]);e.length<=8||t.push({start:n.index,end:n.index+e.length,url:e})}return t}var ky=50;function Ay(){return{activate(e,t){xm(t)},allowNonHttpProtocols:!1}}function jy(e,t){let n=t-1;for(;n>0&&e.getLine(n)?.isWrapped&&t-1-n<ky;)n--;let r=t-1;for(;e.getLine(r+1)?.isWrapped&&r-(t-1)<ky;)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 My(e){return e.registerLinkProvider({provideLinks(t,n){let r=e.buffer?.active;if(!r)return n(void 0);let{text:i,cellAt:a}=jy(r,t),o=[];for(let{start:e,end:t,url:n}of Oy(i)){let r=a[e],i=a[t-1];r&&i&&o.push({range:{start:r,end:i},text:n,activate(e,t){xm(t)}})}n(o.length?o:void 0)}})}var Ny=`(?:password|passwd|pwd|token|api[_-]?key|secret|credential|auth[_-]?token|access[_-]?key|secret[_-]?key|private[_-]?key|client[_-]?secret|connection[_-]?string)`,Py=`(?:"[^"\\r\\n]*"|'[^'\\r\\n]*'|[^\\s\\r\\n]+)`,Fy=`[^\\S\\r\\n]`,Iy=`${Ny}${Fy}*(?:=>|[:=])${Fy}*`,Ly=`[?&][A-Za-z0-9_.-]*`,Ry=`[^\\r\\n;&|]{0,200}?`,zy=`(?:mysql|mysqldump|mysqladmin|mysqlshow|mariadb|mariadb-dump)`,By=RegExp(`(${Iy})${Py}`,`gi`),Vy=RegExp(`(\\bBearer${Fy}+)[A-Za-z0-9._~+/=-]{8,}`,`gi`),Hy=[/\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],Uy=[RegExp(`((?:^|\\s)--?${Ny}${Fy}+)${Py}`,`gi`),RegExp(`((?:^|\\s)-(?:pwd|pw)(?![a-z])${Fy}*=?${Fy}*)${Py}`,`g`),RegExp(`(-AsPlainText${Fy}+)${Py}`,`gi`),RegExp(`((?:^|\\s)setx${Fy}+[^\\s\\r\\n]*${Ny}[^\\s\\r\\n]*${Fy}+)${Py}`,`gi`)],Wy=[RegExp(`(\\bauthorization${Fy}*:${Fy}*Basic${Fy}+)[A-Za-z0-9+/=_-]{8,}`,`gi`),RegExp(`(\\bdocker${Fy}+login\\b${Ry}${Fy}-p(?:${Fy}+|=))${Py}`,`gi`),RegExp(`(\\bcurl\\b${Ry}${Fy}(?:--user|-u)(?:${Fy}+|=)[^\\s:\\r\\n]+:)${Py}`,`gi`),RegExp(`(\\b${zy}\\b${Ry}${Fy}-p)${Py}`,`g`),/\b([a-z][a-z0-9+.-]*:\/\/[^\s:/@]+:)[^\s@/]+(?=@)/gi];[...Uy,...Wy];var Gy=[/-----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],Ky=RegExp(`(${Ly}(?:${Ny}|_key)=)[^&#\\s]+`,`gi`),qy=[By,RegExp(`(\\b(?=[A-Z0-9_]*(?:SECRET|TOKEN|KEY|PASSWORD))[A-Z][A-Z0-9_]*=)${Py}`,`g`)],Jy=[Vy,...Uy,...Wy,...Hy,...Gy];function Yy(e,t){return[...e.matchAll(t)].map(e=>({matchStart:e.index,valueStart:e.index+(e[1]??``).length,end:e.index+e[0].length}))}function Xy(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 Zy(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 Qy(e){let t=Yy(e,Ky);return Zy([...t,...qy.flatMap(n=>Xy(Yy(e,n),t)),...Jy.flatMap(t=>Yy(e,t))].map(e=>({start:e.valueStart,end:e.end})))}var $y=`#808080`,eb=new WeakMap;function tb(e,t,n){return`${e}:${t}:${n}`}function nb(e){return tb(e.marker.line,e.x,e.width)}function rb(e,t){let n=t;for(;n>0&&t-n<63&&e.getLine(n)?.isWrapped;)n--;return n}function ib(e,t){let n=t;for(;n-t<63&&e.getLine(n+1)?.isWrapped;)n++;return n}function ab(e,t,n){let r=``;for(let i=t;i<=n;i++)r+=e.getLine(i)?.translateToString(!1)??``;return r}function ob(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 sb(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 cb(e,t,n,r){let i=[];if(Qy(ab(e,t,n)).length===0)return i;let{text:a,cellAt:o}=ob(e,t,n,r);for(let e of Qy(a))sb(i,o.slice(e.start,e.end));return i}function lb(e,t){let n=e.getNullCell(),r=[],i=t;for(;i<e.length;){let t=ib(e,i);r.push(...cb(e,i,t,n)),i=t+1}return r}function ub(){return{masks:[],watermark:null,isFullRescanOwed:!0}}function db(e){e.decoration.dispose(),e.marker.dispose()}function fb(e){for(let t of e.masks)db(t);e.masks.length=0,e.watermark?.dispose(),e.watermark=null,e.isFullRescanOwed=!0}function pb(e,t){let n=e.watermark;return e.isFullRescanOwed||!n||n.isDisposed?0:Math.min(n.line,t.baseY)}function mb(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 hb(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(nb(r),r),r=e.masks.at(-1);return mb(e),n}function gb(e,t){let n={normal:ub(),alternate:ub()},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??$y,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(!mp())return;let t=e.buffer.active,r=n[t.type],i=rb(t,pb(r,t)),a=hb(r,i);for(let e of lb(t,i)){let n=tb(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())db(e);r.watermark?.dispose(),r.watermark=e.registerMarker(-t.cursorY)??null,r.isFullRescanOwed=!1}function u(){fb(n.normal),fb(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=>{fb(n.alternate),s(`normal`),e.type===`alternate`&&l()})],p=gp(d);t.addEventListener(`abort`,()=>{p();for(let e of f)e.dispose();u(),eb.delete(e)},{once:!0}),eb.set(e,d)}function _b(e){eb.get(e)?.()}function vb({hasTerminal:e,isSocketOpen:t,isInputHeld:n}){return e?n||!t?`connecting`:`live`:`none`}var yb=new Map;function bb(e,t,n){yb.set(e,t),n.addEventListener(`abort`,()=>{yb.get(e)===t&&yb.delete(e)},{once:!0})}function xb(e,t,n){let r=yb.get(e);r&&r(t,n)||t===`error`&&Eu(n)}async function Sb(e,t){let n={"x-glimmervoid-upload-name":encodeURIComponent(t.name)};t.type&&(n[`content-type`]=t.type),xb(e,`busy`,`Uploading ${t.name}`);try{let r=await fetch(`/upload/${encodeURIComponent(e)}`,{method:`POST`,body:t,headers:n});return r.ok?(xb(e,`ok`,`Uploaded ${t.name}`),!0):(xb(e,`error`,await wb(r)),!1)}catch{return xb(e,`error`,`Upload failed`),!1}}async function Cb(e,t){for(let n of t)await Sb(e,n)}async function wb(e){try{let t=await e.json();if(t&&typeof t.error==`string`)return`Upload failed: ${t.error}`}catch{}return`Upload failed`}var Tb=1.2,Eb=.005;function Db(e,t){let n=Math.abs(t);return n<10?!1:n>Math.abs(e)*Tb}function Ob(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 kb(e,t,n){let r=e.length>=4?e.slice(1):e.slice();return r.push({positionPx:t,timestampMs:n}),r}function Ab(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 jb({velocityPxPerMs:e,startedAtMs:t,cellHeightPx:n,pendingPx:r=0}){return!e||!(n>0)?null:{velocityPxPerMs:e,lastMs:t,cellHeightPx:n,pendingPx:r}}function Mb(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)-Eb*n;if(!(r>0))return{scrollLines:0,state:null};let i=e.velocityPxPerMs<0?-1:1,a=i*r*n,{scrollLines:o,remainderPx:s}=Ob(e.pendingPx+a,e.cellHeightPx);return{scrollLines:o,state:{velocityPxPerMs:i*r,lastMs:t,cellHeightPx:e.cellHeightPx,pendingPx:s}}}function Nb(e,t){return e===`alternate`||!!t&&t!==`none`}function Pb(e,t){return!(e>0)||!(t>0)?0:e/t}var Fb=1;function Ib(e){return typeof e._core?._viewport?.handleTouchScroll==`function`}function Lb(e,t){for(let n of e)if(n.identifier===t)return n;return null}function Rb(e,t){if(Ib(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=()=>Nb(t.buffer?.active?.type,t.modes?.mouseTrackingMode),m=()=>{let e=t.element?.querySelector(`.xterm-screen`);return Pb(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:Fb,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}=Mb(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=jb({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=Lb(e.touches,r);if(!u)return;if(!s){if(!Db(u.clientX-i,u.clientY-a))return;s=!0,o=u.clientY,c=0,l=kb([],u.clientY,e.timeStamp)}e.cancelable&&e.preventDefault(),c+=u.clientY-o,o=u.clientY,l=kb(l,u.clientY,e.timeStamp);let d=p(),{scrollLines:f,remainderPx:h}=Ob(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=kb(l,o,e.timeStamp);let t=Ab(l),n=c;h(),t!==0&&v(t,performance.now(),n)},{passive:!0}),e.addEventListener(`touchcancel`,()=>{f(),h()},{passive:!0})}function zb(e){return e.needsReload?!0:e.wasAttachedWithoutLayout&&e.hasLayoutNow}function Bb(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 Vb=window.matchMedia?.(`(pointer: coarse)`).matches?4:12,Hb=new Map;function Ub(e){return e.clientWidth>0&&e.clientHeight>0}function Wb(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 Gb(e){Hb.delete(e),e.needsWebGLReload=!1,e.webglAttachedWithoutLayout=!1,Wb(e)}function Kb(e){let t=[e],n=ke.snapshot().borrowedCardId,r=n?j.get(n):void 0;r&&t.push(r);for(let e of Bb([...Hb.keys()],Vb,t))Gb(e),e.needsWebGLReload=!0}function qb(e){e?.term&&zb({needsReload:e.needsWebGLReload,wasAttachedWithoutLayout:e.webglAttachedWithoutLayout,hasLayoutNow:Ub(e.termWrap)})&&Yb(e,{isForced:!0})}function Jb(){for(let e of Hb.keys()){let t=e.term;if(e.webglAddon&&t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{Gb(e),e.needsWebGLReload=!0}}}function Yb(e,t={}){try{if(e.webglAddon&&!e.needsWebGLReload&&!t.isForced){Hb.delete(e),Hb.set(e,!0);return}e.webglAddon&&(Wb(e),Hb.delete(e)),Kb(e);let n=new b;n.onContextLoss(()=>{n.dispose(),e.webglAddon=null,Hb.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=!Ub(e.termWrap),Hb.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,Hb.delete(e)}}var Xb=1024,Zb=250,Qb=`(max-width: 768px)`,$b=12,ex=14,tx=5e4,nx=!1;function rx(e){nx=e}var ix=!1;window.addEventListener(`blur`,()=>{ix=!0}),window.addEventListener(`focus`,()=>{ix=!1});function ax(e){let t=document.activeElement;return iy({isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),hasFocusInsideCard:t instanceof Node&&e.contains(t),hasWindowBlurredSinceFocus:ix,isPhoneLayout:P_()})}function ox(e,t){return ay({isDocumentVisible:document.visibilityState===`visible`,isBorrowedCard:ke.snapshot().borrowedCardId===t,isTerminalFaceShown:e.face===`terminal`})}var sx=new WeakMap,cx=new WeakMap,lx=new WeakSet,ux=new WeakSet,dx=new WeakMap,fx=5e3,px=15e3,mx=`Keys you type now are held and sent once the terminal reconnects.`,hx=`The terminal is still reconnecting and its key buffer is full, so new keys are dropped.`,gx=`The agent copied text. The browser needs a click before it can reach your clipboard.`,_x=`The clipboard is unavailable in this browser.`;function vx(e,t,n,r){let i=dx.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(()=>yx(e,t),n===`ok`?fx:px)))}function yx(e,t){let n=dx.get(e);n&&n.shownKind===t&&(n.clearTimerId!==null&&clearTimeout(n.clearTimerId),n.clearTimerId=null,n.shownKind=null,n.status.clear())}function bx(e){let t=e.buffer.active;return t.viewportY<t.baseY}function xx(e,t,{hasNewOutput:n=!1}={}){let r=dx.get(e)?.jumpToLatestButton;if(!r)return;let i=bx(t);r.hidden=!i,i?n&&(r.dataset.hasNewOutput=`true`):delete r.dataset.hasNewOutput}function Sx(e,t){if(sx.has(e)||!bx(t))return;let n=t.buffer.active,r=n.length-n.viewportY;lx.has(e)?sx.set(e,r):cx.set(e,r)}function Cx(e,t,n){let r=e.term;r&&oy({viewportTopLine:n,scrollbackLineCount:r.buffer.active.baseY,isDeepHistoryLoadedOrPending:lx.has(e)})&&(lx.add(e),ux.add(e),sx.set(e,r.buffer.active.length-n),Kx(t))}function wx(e,t){e._hasMissedOutputWhileHidden&&(ox(e,t)||(e._hasMissedOutputWhileHidden=!1,Kx(t)))}document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState!==`visible`)return;let e=ke.snapshot().borrowedCardId;if(!e)return;let t=j.get(e);t&&wx(t,e)});function Tx(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 Ex(e,t,n){let r=(n instanceof Error?n.message:``)||String(n);console.error(`[clipboard:${t}]`,n),vx(e,`clipboard`,`error`,`Clipboard ${t} failed: ${r}`)}function Dx(e,t,n,r){let i=ye(t);i?i.then(()=>{r&&vx(e,`clipboard`,`ok`,r)}).catch(t=>Ex(e,n,t)):vx(e,`clipboard`,`error`,_x)}function Ox(e,t){let n=dx.get(e);n&&(n.pendingClipboardText=t,n.clipboardPrompt.hidden=!1)}function kx(e){let t=dx.get(e),n=t?.pendingClipboardText;t&&n!=null&&(t.pendingClipboardText=null,t.clipboardPrompt.hidden=!0,Dx(e,n,`osc52 write`,`Copied to the clipboard.`))}function Ax(e,t,n){let r=xu(`terminal-notice`),i=E(`div`,`terminal-clipboard-prompt`);i.hidden=!0;let a=E(`button`,`btn-dialog btn-dialog-confirm`,`Copy to clipboard`);a.type=`button`,a.addEventListener(`click`,()=>kx(t)),i.append(E(`span`,`terminal-clipboard-prompt-text`,gx),a);let o=E(`div`,`terminal-notices`);o.append(i,r.element);let s=E(`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=E(`div`,`terminal-drop-zone`);c.setAttribute(`aria-hidden`,`true`),c.append(E(`span`,`terminal-drop-zone-label`,`Drop to upload to this session`)),e.append(o,s,c),dx.set(t,{status:r,shownKind:null,clearTimerId:null,clipboardPrompt:i,pendingClipboardText:null,jumpToLatestButton:s})}function jx(e,t){return j.get(e)===t&&!t.dataWs}function Mx(e){return e.querySelector(`:scope > .terminal-connecting`)}function Nx(e){if(Mx(e))return;let t=E(`div`,`terminal-connecting`);t.append(E(`span`,`terminal-connecting-label`,`Connecting`)),e.append(t)}function Px(e){let t=Mx(e);if(!t)return;t.querySelector(`:scope > .terminal-connecting-animal`)?.remove();let n=Ws();n&&t.prepend(Us(n,`terminal-connecting-animal`))}var Fx=new Set;function Ix(e){return Fx.add(e),()=>Fx.delete(e)}function Lx(){let e=0;for(let t of j.values())t.card.dataset.link===`connecting`&&e++;return e}function Rx(e){let t=vb({hasTerminal:e.term!==null,isSocketOpen:e.dataWs?.readyState===WebSocket.OPEN,isInputHeld:Hx}),n=t===`connecting`&&!Hx&&ux.has(e)?`live`:t;if(n===`none`){delete e.card.dataset.link,zx();return}let r=n===`connecting`&&e.card.dataset.link!==`connecting`;e.card.dataset.link=n,r&&Px(e.termWrap),zx()}function zx(){for(let e of Fx)e()}function Bx(e,t,n,r){Sx(t,n),Sv.unregister(e),t.dataWs=null,Rx(t),t._resetGridClaim?.(),setTimeout(()=>{jx(e,t)&&ac().catch(()=>{}).then(()=>{jx(e,t)&&Vx(e,t,n)})},r)}function Vx(e,t,n){let r=sx.get(t);sx.delete(t);let i=cx.get(t);cx.delete(t);let a=r!==void 0,o=r??i,s=!1,c=tc(location,sc(sy(e,a))),l=new WebSocket(c);l.binaryType=`arraybuffer`,t.dataWs=l,Rx(t);let u=!1,d={hasSeenSize:!1,lastSeq:0};Sv.register(e,(e,t)=>n.write(e,t)),l.addEventListener(`message`,r=>{if(t.dataWs!==l)return;let i=py(r.data,d);if(i.kind===`bytes`){gd(t);let r=s;if(s=!1,ox(t,e)){t._hasMissedOutputWhileHidden=!0;return}if(Sv.enqueue(e,i.data),!r)return;let a=o??0;Sv.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||lx.delete(t),d.hasSeenSize=!0,d.lastSeq=i.seq,n.reset(),_b(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};Sv.enqueueAction(e,()=>{t.ptySize=c,t._syncGrid?.()})}),l.addEventListener(`close`,()=>{if(t.dataWs!==l)return;ux.delete(t),u||oc();let r=Xs(t._dataWsRetryAttempt||0);t._dataWsRetryAttempt=(t._dataWsRetryAttempt||0)+1,Bx(e,t,n,r)}),l.addEventListener(`open`,()=>{u=!0,t._dataWsRetryAttempt=0,ux.delete(t),Rx(t),t._syncGrid?.({isActivationEdge:!0}),t._retryOwedGridClaim?.(),t._inputQueue?.length&&setTimeout(()=>{t.dataWs===l&&Ux(t)},50)})}var Hx=!1;function Ux(e){let t=e._inputQueue,n=e.dataWs;if(!Hx&&t?.length&&n?.readyState===WebSocket.OPEN){for(let e of t)n.send(JSON.stringify({type:`input`,data:e}));t.length=0,yx(e,`keys`)}}function Wx(){Hx=!0;for(let e of j.values())Rx(e)}function Gx(){Hx=!1;for(let e of j.values())Rx(e),Ux(e)}function Kx(e){let t=N(e);if(typeof e!=`string`||!t?.term)return;let n=t.dataWs;t._dataWsRetryAttempt=0,Bx(e,t,t.term,0),n?.close()}function qx(e,t){let n=e.dataWs;e.dataWs=null,Sv.unregister(t),n&&n.readyState<=WebSocket.OPEN&&n.close()}function Jx(e,t,n){if(!e||t==null||t===``)return!1;if(n?.fromSoftKeyboard||e._resetSoftKeyboardBuffer?.(),!Hx&&!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>=Xb?(vx(e,`keys`,`error`,hx),!1):(e._inputQueue.push(t),r&&vx(e,`keys`,`busy`,mx),!0)}function Yx(e,t){let n=window.matchMedia?.(Qb).matches?$b:ex,r=new v({cursorBlink:nx,fontSize:n,fontFamily:W_(),theme:Kv(),scrollback:tx,allowProposedApi:!0,linkHandler:Ay()}),i=new y;r.loadAddon(i),Nx(e),r.open(e),Ax(e,t,r),My(r),gb(r,t.abortController.signal),t.term=r,t.fitAddon=i,Gb(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||!ax(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=ry({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)},Zb)}function m(){l&&o===null&&f(l)}function h({isActivationEdge:e=!1}={}){let n=t.term;if(!n)return;let r=uy({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=cy({authoritative:t.ptySize??null,isActiveViewer:s,isDocumentEngaged:ax(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=ly({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&&qb(t),h({isActivationEdge:!0}))},t.card.addEventListener(`focusin`,()=>{ix=!1,g()},{signal:t.abortController.signal}),Yb(t);let b=null;r.onScroll(()=>{b===null&&(b=requestAnimationFrame(()=>{b=null,t.term&&(t.term.refresh(0,t.term.rows-1),xx(t,t.term))}))}),r.onWriteParsed(()=>xx(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=Tx(r)}catch(e){return Ex(t,`osc52 decode`,e),!0}return document.hasFocus()&&navigator.userActivation?.isActive!==!1?(Dx(t,i,`osc52 write`),!0):(Ox(t,i),!0)}),r.attachCustomKeyEventHandler(e=>{if(e.type!==`keydown`)return!0;if(document.body.dataset.activeView===`focus`&&ov(e,pv,{isTerminalFocused:!0}))return!1;let n=e.ctrlKey||e.metaKey;if(n&&e.key===`c`&&r.hasSelection()){let e=r.getSelection();return r.clearSelection(),Dx(t,e,`copy`),!1}return n&&e.key===`v`?!1:n&&e.key===`Backspace`?(Jx(t,`\x1B`),!1):!0}),Xx(e,r,t),Rb(e,r)}function Xx(e,t,n){let r=t.textarea;if(!r)return;let i=``,a=()=>{i=r.value},o=()=>{i=``,P_()&&r.value!==``&&(r.value=``)};n._resetSoftKeyboardBuffer=o;let s=()=>{let e=Sy(i,r.value);return i=r.value,e!==``&&(Jx(n,e,{fromSoftKeyboard:!0}),t.scrollToBottom(),!0)},c=(t,n)=>{e.addEventListener(t,e=>{P_()?n(e):a()},!0)};c(`keydown`,e=>{xy(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(!by(e.inputType)){queueMicrotask(o);return}if(e.stopPropagation(),s())return;let r=vy(e.inputType);r!==``&&(Jx(n,r,{fromSoftKeyboard:!0}),t.scrollToBottom())})}function Zx(e,t){e._inputQueue=[];let n=e.term;n&&(n.onData(t=>{Jx(e,t)}),n.onScroll(n=>{Cx(e,t,n)}),bb(t,(t,n)=>e.termWrap.hidden||e.face!==`terminal`?!1:(vx(e,`upload`,t,n),!0),e.abortController.signal),$x(e.termWrap,t,e.abortController.signal),Vx(t,e,n))}function Qx(e){return!!e&&Array.from(e.types).includes(`Files`)}function $x(e,t,n){e.addEventListener(`paste`,e=>{let n=e.clipboardData;n&&n.files.length!==0&&n.getData(`text/plain`)===``&&(e.preventDefault(),e.stopPropagation(),Cb(t,Array.from(n.files)))},{capture:!0,signal:n}),e.addEventListener(`dragover`,t=>{Qx(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,Qx(n.dataTransfer)&&(n.preventDefault(),n.stopPropagation(),Cb(t,Array.from(n.dataTransfer.files)))},{capture:!0,signal:n})}function eS(e,t){e.term||(Yx(e.termWrap,e),Zx(e,t))}function tS(e){e?._syncGridOnEngagementEdge?.()}function nS(e,t){if(!e)return;eS(e,t),wx(e,t),qb(e);let n=e.term;n&&(n.refresh(0,n.rows-1),tS(e))}function rS(e,t,n){e&&(n&&eS(e,t),e._setActiveViewer?.(n))}var iS=`conversation:`,aS=1e4,oS=48,sS=`, `,cS=`+`,lS=`■`,uS=`↑`,dS=1e3,fS={command:`Run command?`,fileChange:`Apply file changes?`,permissions:`Grant permissions?`},pS=1;function mS(e){e?.previewUrl&&URL.revokeObjectURL(e.previewUrl)}function hS(e,t,n){let r=E(`button`,`conversation-icon-button ${e}`,t);return r.type=`button`,r.title=n,r.setAttribute(`aria-label`,n),r}function gS(e){return e.conversationApproval!==null||o_(e.currentState,e.pendingPromptKind)}function _S(e,t,n,r,i=0){let a=n[i];a?setTimeout(()=>{N(e)===t?i>0&&gS(t)?r(`stopped-by-prompt`):Jx(t,a.data)?_S(e,t,n,r,i+1):r(`unreachable`):r(`unreachable`)},a.delayBeforeMs):r(`sent`)}function vS({signal:e,sendControl:t,showTerminal:n}){let r=E(`div`,`conversation-face`);r.hidden=!0;let i=E(`div`,`conversation-log`);i.setAttribute(`role`,`log`),i.setAttribute(`aria-live`,`polite`);let a=E(`p`,`conversation-empty`,`No conversation yet. Messages appear here as the agent works.`),o=E(`div`,`conversation-approval`);o.hidden=!0;let s=E(`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=E(`p`,`conversation-bridge-note`,`The session trace is unavailable, so there is nothing to show here. Use the terminal.`);c.hidden=!0;let l=E(`details`,`conversation-working`),u=E(`summary`,`conversation-working-summary`);u.setAttribute(`role`,`status`);let d=E(`ul`,`conversation-agent-list`);l.append(u,d),l.hidden=!0;let f=E(`form`,`conversation-composer`),p=E(`p`,`conversation-status`);p.setAttribute(`role`,`status`);let m=E(`div`,`conversation-attachment`);m.hidden=!0;let h=E(`div`,`conversation-composer-row`),g=hS(`conversation-attach`,cS,`Attach a photo or file`),_=E(`input`,`conversation-file-picker`);_.type=`file`,_.hidden=!0;let v=E(`textarea`,`conversation-input`);v.dataset.dashboardShortcuts=`allowed`,v.rows=1,v.placeholder=`Message the agent`,v.setAttribute(`aria-label`,`Message the agent`);let y=hS(`conversation-stop`,lS,`Stop the current turn (Esc)`),b=hS(`conversation-send`,uS,`Send`);b.type=`submit`,h.append(g,v,y,b),f.append(p,m,h,_),r.append(i,l,c,s,o,f);let x=null,S=[],ee=0,te=!1,C=null,T=!1,ne=null,re=!1,ie=[],ae=[],oe=null,se=!1,ce=new Set;function D(){return x?N(x)??null:null}function le(e){p.textContent=e}function O(){v.style.height=`auto`,v.style.height=`${v.scrollHeight+v.offsetHeight-v.clientHeight}px`}function k(){C&&clearTimeout(C.timeoutHandle),C=null}function A(){if(!x||r.hidden||!c.hidden)return;if(C){T=!0;return}let e=`${iS}${pS++}`,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})?(T=!1,C={requestId:e,after:n,timeoutHandle:setTimeout(()=>{C=null,A()},aS)}):le(`Conversation unavailable while disconnected.`)}function ue(){return i.scrollHeight-i.scrollTop-i.clientHeight<=oS}function de(e){let t=E(`a`,`conversation-image-link`);t.href=e,t.target=`_blank`,t.rel=`noopener`;let n=E(`img`,`conversation-image`);return n.src=e,n.alt=`Attached image`,n.loading=`lazy`,n.addEventListener(`error`,()=>t.remove(),{once:!0}),t.append(n),t}function fe(e){let t=E(`article`,`conversation-message conversation-user is-pending`);return e.text&&t.append(E(`p`,`conversation-text`,e.text)),e.attachment?.previewUrl&&t.append(de(e.attachment.previewUrl)),e.attachment&&!e.attachment.previewUrl&&t.append(E(`p`,`conversation-attachment-name`,e.attachment.name)),t}function pe(e){let t=E(`article`,`conversation-message conversation-${e.kind}`);return e.kind===`assistant`?(t.append(ap(ep(e.text))),t):(t.append(E(`p`,`conversation-text`,e.text)),e.kind===`user`&&t.append(...e.imageUrls.map(de)),t)}function me(e,t){e.replaceChildren(...t.map(e=>{let t=E(`li`,`conversation-agent is-${e.state}`);return t.append(E(`span`,`conversation-agent-name`,e.description),E(`span`,`conversation-agent-state`,e.state)),t}))}function he(e){if(e.agentRuns.length===0)return E(`p`,`conversation-work`,C_(e));let t=E(`details`,`conversation-work`);t.open=ce.has(e.key),t.addEventListener(`toggle`,()=>{t.open?ce.add(e.key):ce.delete(e.key)});let n=E(`ul`,`conversation-agent-list`);return me(n,e.agentRuns),t.append(E(`summary`,``,C_(e)),n),t}function ge(){return D()?.currentState===w.RUNNING}function _e(){let e=D(),t=__(ae),n=ge()?v_(ae)?.agentRuns??[]:[],r=[...new Set([...n,...t])];if(l.hidden=!e||!ge()&&t.length===0,l.hidden||!e)return;let i=ge()?Math.max(0,Date.now()-e.stateSince):null;u.textContent=w_(i,t.length),l.classList.toggle(`has-agents`,r.length>0),me(d,r)}function ve(){let e=!r.hidden&&ge();e&&!oe&&(oe=setInterval(_e,dS)),!e&&oe&&(clearInterval(oe),oe=null),_e()}function ye(){i.scrollTop=i.scrollHeight}function be(){let e=se||ue();ae=g_(S);let t=Date.now(),n=ie.filter(e=>b_(e,ae,t));for(let e of n)mS(e.attachment);ie=ie.filter(e=>!n.includes(e));let r=[...(ge()&&v_(ae)?ae.slice(0,-1):ae).map(e=>e.kind===`work`?he(e):pe(e)),...ie.map(fe)];i.replaceChildren(...r.length>0?r:[a]),_e(),e&&(ye(),requestAnimationFrame(ye),te&&(se=!1))}function xe(){if(m.replaceChildren(),m.hidden=!ne,ne){if(ne.previewUrl){let e=E(`img`,`conversation-attachment-thumbnail`);e.src=ne.previewUrl,e.alt=``,m.append(e)}m.append(E(`span`,`conversation-attachment-name`,ne.name))}}function j(e){ne!==e&&mS(ne),ne=e,xe()}function Se(e,t=()=>{}){let n=D();if(!n||!x||!e){le(`Unable to reach this session.`);return}le(``);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.`};_S(x,n,e,e=>{le(r[e]),t(e)})}function M(e,n,r){x&&le(t({type:`conversation-approval`,id:x,requestId:e.requestId,decision:n,...r?{answers:r}:{}})?``:`Unable to send the answer while disconnected.`)}function Ce(e,t){let n=E(`button`,`conversation-approval-action`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function we(e){return e.kind===`tool`?`Allow ${e.toolName??`this tool`}?`:fS[e.kind]??`Approve this request?`}function Te(e){o.append(E(`p`,`conversation-approval-note`,`This request cannot be shown in full here. Read and answer it in the terminal.`));let t=E(`div`,`conversation-approval-actions`);t.append(Ce(`Open terminal`,()=>n()),Ce(`Decline`,()=>M(e,`decline`))),o.append(t)}function Ee(e){if(o.append(E(`p`,`conversation-approval-title`,we(e)),E(`pre`,`conversation-approval-summary`,e.summary)),e.isSummaryTruncated){Te(e);return}let t=E(`div`,`conversation-approval-actions`);t.append(Ce(`Approve`,()=>M(e,`accept`))),e.kind!==`tool`&&t.append(Ce(`Approve for session`,()=>M(e,`acceptForSession`))),e.alwaysAllowSummary&&(o.append(E(`p`,`conversation-approval-note`,`Always allow adds, for this session only: ${e.alwaysAllowSummary}`)),t.append(Ce(`Always allow`,()=>M(e,`acceptForSession`)))),t.append(Ce(`Decline`,()=>M(e,`decline`))),o.append(t)}function De(e){let t=E(`p`,`conversation-approval-title`,e.question);return e.header&&t.prepend(E(`span`,`conversation-question-header`,e.header)),t}function Oe(e,t){o.append(De(t));let n=E(`div`,`conversation-question-options`);for(let r of t.options){let i=Ce(r.label,()=>M(e,`accept`,{[t.question]:r.label}));r.description&&(i.title=r.description),n.append(i)}let r=E(`div`,`conversation-approval-actions`);r.append(Ce(`Decline`,()=>M(e,`decline`))),o.append(n,r)}function ke(e,t){let n=E(`form`,`conversation-question-form`);t.forEach((e,t)=>{let r=E(`fieldset`,`conversation-question`),i=E(`legend`,`conversation-question-text`,e.question);e.header&&i.prepend(E(`span`,`conversation-question-header`,e.header)),r.append(i);for(let n of e.options){let i=E(`label`,`conversation-question-option`),a=E(`input`);a.type=e.multiSelect?`checkbox`:`radio`,a.name=`question-${t}`,a.value=n.label,i.append(a,E(`span`,``,n.label)),n.description&&(i.title=n.description),r.append(i)}n.append(r)});let r=E(`div`,`conversation-approval-actions`),i=E(`button`,`conversation-approval-action`,`Send answers`);i.type=`submit`,r.append(i,Ce(`Decline`,()=>M(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(sS))}),Object.keys(i).length===t.length?M(e,`accept`,i):le(`Answer every question first.`)}),o.append(n)}function Ae(e){let t=e.questions??[];if(e.isSummaryTruncated||t.length===0){o.append(E(`p`,`conversation-approval-title`,`Claude Code has a question`),E(`pre`,`conversation-approval-summary`,e.summary)),Te(e);return}let[n]=t;t.length===1&&!n.multiSelect?Oe(e,n):ke(e,t)}function je(e){e.kind===`question`?Ae(e):Ee(e)}function Me(){o.append(E(`p`,`conversation-approval-title`,`The agent is waiting on a prompt`)),o.append(E(`p`,`conversation-approval-note`,`Read and answer it in the terminal.`));let e=E(`div`,`conversation-approval-actions`);e.append(Ce(`Open terminal`,()=>n())),o.append(e)}function Ne(){let e=D();o.replaceChildren();let t=e?.conversationApproval??null,n=e?o_(e.currentState,e.pendingPromptKind):!1,r=e?.agent===`codex`&&!e.hasConversationBridge;s.hidden=!r,o.hidden=!t&&!n,b.disabled=!o.hidden||r,Pe(),e&&(t?je(t):n&&Me())}function Pe(){g.disabled=b.disabled||re}function Fe(e){let t=r_(e,v.value);return t||!ne?t:i_(e)}function Ie(){let e=D();y.disabled=e?.currentState!==w.RUNNING,ve()}f.addEventListener(`submit`,e=>{if(e.preventDefault(),b.disabled)return;let t=Fe(D()?.agent);if(!t)return;let n={text:v.value.trim(),attachment:ne,sentAt:Date.now(),userKeysAtSend:y_(ae)};v.value=``,O(),ne=null,xe(),ie.push(n),se=!0,be(),Se(t,e=>{e!==`sent`&&(mS(n.attachment),ie=ie.filter(e=>e!==n),be())})},{signal:e}),v.addEventListener(`input`,O,{signal:e});let Le=0,Re=new ResizeObserver(()=>{let e=i.clientHeight,t=Le===0;Le=e,t&&e!==0&&(se=!0,ye(),te&&(se=!1))});Re.observe(i),e?.addEventListener(`abort`,()=>{oe&&clearInterval(oe),Re.disconnect()},{once:!0}),v.addEventListener(`keydown`,e=>{e.key!==`Enter`||e.shiftKey||e.isComposing||P_()||(e.preventDefault(),f.requestSubmit())},{signal:e}),y.addEventListener(`click`,()=>Se(a_(D()?.agent)),{signal:e}),g.addEventListener(`click`,()=>_.click(),{signal:e}),_.addEventListener(`change`,()=>{let e=_.files?.[0];if(_.value=``,!e||!x)return;if(b.disabled){le(`Not attached: the agent is not ready for a message. Check the terminal.`);return}let t=x;re=!0,Pe(),Sb(t,e).then(n=>{if(re=!1,Pe(),!n||x!==t)return;let r=e.type.startsWith(`image/`)?URL.createObjectURL(e):null;j({name:e.name,previewUrl:r})})},{signal:e});function ze(e){if(x!==e){x=e,S=[],ee=0,te=!1,k(),j(null),ce.clear();for(let e of ie)mS(e.attachment);ie=[],le(``)}r.hidden=!1,c.hidden=!0,se=!0,be(),Ve(),A()}function Be(){r.hidden=!0,k(),ve()}function Ve(){r.hidden||(Ne(),Ie(),be())}function He(e){if(!C||e.requestId!==C.requestId)return!1;let t=C;if(k(),e.id!==x)return!0;let n=t.after!==null&&e.start===t.after&&!e.reset;return t.after!==null&&!n?(te=!1,S=[],A(),!0):(S=T_(t.after===null?[...e.records]:[...S,...e.records]),ee=e.next,te=!0,be(),T&&A(),!0)}function Ue(e){return!C||e.requestId!==C.requestId?!1:(k(),T=!1,c.hidden=!1,!0)}function We(e){e!==x||r.hidden||(c.hidden=!0,A())}return{el:r,show:ze,hide:Be,refresh:Ve,applyTraceResponse:He,applyTraceError:Ue,applyTraceChanged:We}}function yS(e){if(!e)return 0;let t=0;return e.listenerMismatch&&t++,e.orphanPty&&t++,e.destroyedReachable&&t++,t}function bS(e,t){return e||yS(t)>0}var xS={DORMANT:`DOR`,INITIALIZING:`INI`,STARTING:`STA`,RUNNING:`RUN`,WAITING:`WAI`,IDLE:`IDL`,COMPLETE:`CMP`,DONE:`DON`,FAILED:`FAI`},SS=null,CS=!1,wS=!1,TS=null,ES=null,DS=null,OS=`—`;function kS(e){return e==null?OS:Sc(e,`GB`)}function AS(e){return e==null?OS:bc(e,{smallestUnit:`s`,dropsZeroRemainder:!1})}function jS(e){return e==null?OS:`${AS(Math.max(0,Math.round((Date.now()-e)/1e3)))} ago`}function MS(){let e=E(`div`,`health-footer`);e.dataset.expanded=`false`,e.hidden=!0;let t=E(`div`,`health-summary`),n=E(`button`,`health-toggle`);n.type=`button`,n.setAttribute(`aria-expanded`,`false`),n.setAttribute(`aria-controls`,`health-detail`);let r=E(`span`,`health-chev`,`▲`);r.setAttribute(`aria-hidden`,`true`),n.append(r,E(`span`,`health-toggle-label`,`Health`));let i=E(`div`,`health-stats`);t.append(n,i);let a=E(`div`,`health-detail`);return a.id=`health-detail`,a.hidden=!0,n.addEventListener(`click`,()=>{wS=!wS,e.dataset.expanded=String(wS),n.setAttribute(`aria-expanded`,String(wS)),a.hidden=!wS,wS&&(K({type:`request-health-snapshot`}),PS())}),e.append(t,a),TS=e,ES=i,DS=a,e}function NS(){if(!ES||!SS)return;let e=SS,t=yS(e.anomalies);ES.innerHTML=`
63
+ <span class="health-stat" title="V8 heap used"><span class="health-stat-label">Heap</span> ${kS(e.process.heapUsed)}</span>
64
+ <span class="health-stat" title="Resident set size (process memory)"><span class="health-stat-label">RSS</span> ${kS(e.process.rss)}</span>
65
+ <span class="health-stat" title="External buffers (PTY data lives here)"><span class="health-stat-label">Ext</span> ${kS(e.process.external)}</span>
66
+ <span class="health-stat" title="Active resources (handles + requests)"><span class="health-stat-label">Hdl</span> ${e.process.activeResources}</span>
67
+ <span class="health-stat" title="Memory headroom at the last start check, and starts held for memory"><span class="health-stat-label">Mem</span> ${kS(e.memoryGate?.headroomBytes)} / ${e.memoryGate?.heldStartCount??0} held</span>
68
+ <span class="health-stat" title="Sessions: alivePty / total"><span class="health-stat-label">Sess</span> ${e.sessions.alivePty}/${e.sessions.total}</span>
69
+ <span class="health-stat" title="WebSockets: control + data"><span class="health-stat-label">WS</span> ${e.websockets.control}+${e.websockets.data}</span>
70
+ <span class="health-stat" title="Server uptime"><span class="health-stat-label">Up</span> ${AS(e.uptimeSeconds)}</span>
71
+ ${t>0?`<span class="health-anomaly" title="${t} anomaly type(s), expand for details">⚠ ${t}</span>`:``}
72
+ `}function PS(){if(!DS||!SS)return;let e=SS,t=e.process,n=e.websockets,r=e.sessions,i=e.anomalies,a=``;if(yS(i)>0){let e=[];i.listenerMismatch&&e.push(`Listener count mismatch: data WS listener leaked or missing`),i.orphanPty&&e.push(`Orphan PTY: session has live PTY but state is DONE/FAILED/DORMANT`),i.destroyedReachable&&e.push(`Destroyed session still reachable in sessions map`),a=`
73
+ <div class="health-section health-section-warn">
74
+ <div class="health-section-title">⚠ Anomalies</div>
75
+ ${e.map(e=>`<div class="health-row">${e}</div>`).join(``)}
76
+ </div>
77
+ `}let o=r.list.map(e=>{let t=[];e.destroyed&&t.push(`destroyed`),e.pendingRestart&&t.push(`pendingRestart`);let n=Object.entries(e.timers).filter(([,e])=>e).map(([e])=>e).join(`,`)||`none`;return`
78
+ <tr>
79
+ <td>${Rh(e.name)}</td>
80
+ <td class="health-mono">${xS[e.state]||e.state}</td>
81
+ <td class="health-mono">${e.hasPty?e.ptyPid:OS}</td>
82
+ <td class="health-mono">${kS(e.outputBufferBytes)}</td>
83
+ <td class="health-mono">${e.outputBufferEntries}</td>
84
+ <td class="health-mono">${e.dataListenerCount}</td>
85
+ <td class="health-mono health-dim">${n}</td>
86
+ <td class="health-mono health-dim">${t.join(` `)||``}</td>
87
+ </tr>
88
+ `}).join(``);DS.innerHTML=`
89
+ ${a}
90
+ <div class="health-section">
91
+ <div class="health-section-title">Process</div>
92
+ <div class="health-grid">
93
+ <div class="health-row"><span class="health-label">Heap used</span><span class="health-mono">${kS(t.heapUsed)}</span></div>
94
+ <div class="health-row"><span class="health-label">Heap total</span><span class="health-mono">${kS(t.heapTotal)}</span></div>
95
+ <div class="health-row"><span class="health-label">RSS</span><span class="health-mono">${kS(t.rss)}</span></div>
96
+ <div class="health-row"><span class="health-label">External</span><span class="health-mono">${kS(t.external)}</span></div>
97
+ <div class="health-row"><span class="health-label">Array buffers</span><span class="health-mono">${kS(t.arrayBuffers)}</span></div>
98
+ <div class="health-row"><span class="health-label">Active resources</span><span class="health-mono">${t.activeResources}</span></div>
99
+ <div class="health-row"><span class="health-label">Uptime</span><span class="health-mono">${AS(e.uptimeSeconds)}</span></div>
100
+ </div>
101
+ </div>
102
+
103
+ <div class="health-section">
104
+ <div class="health-section-title">Memory gate</div>
105
+ <div class="health-grid">
106
+ <div class="health-row"><span class="health-label">Headroom</span><span class="health-mono">${kS(e.memoryGate?.headroomBytes)}</span></div>
107
+ <div class="health-row"><span class="health-label">Read</span><span class="health-mono">${jS(e.memoryGate?.headroomReadAtMs)}</span></div>
108
+ <div class="health-row"><span class="health-label">Starts held</span><span class="health-mono">${e.memoryGate?.heldStartCount??0}</span></div>
109
+ </div>
110
+ </div>
111
+
112
+ <div class="health-section">
113
+ <div class="health-section-title">WebSockets</div>
114
+ <div class="health-grid">
115
+ <div class="health-row"><span class="health-label">Control clients</span><span class="health-mono">${n.control}</span></div>
116
+ <div class="health-row"><span class="health-label">Data clients</span><span class="health-mono">${n.data}</span></div>
117
+ <div class="health-row"><span class="health-label">Tracked per session</span><span class="health-mono">${n.dataPerSessionTotal}</span></div>
118
+ </div>
119
+ </div>
120
+
121
+ <div class="health-section">
122
+ <div class="health-section-title">Sessions (${r.total} total · ${r.alivePty} alive PTY)</div>
123
+ <div class="health-row health-dim">Listeners ${r.totalDataListeners} · Output buffer ${kS(r.totalOutputBufferBytes)}</div>
124
+ <table class="health-table">
125
+ <thead>
126
+ <tr>
127
+ <th>Name</th><th>State</th><th>PID</th><th>Buffer</th><th>Entries</th><th>Listeners</th><th>Timers</th><th>Flags</th>
128
+ </tr>
129
+ </thead>
130
+ <tbody>${o||`<tr><td colspan="8" class="health-dim">No sessions</td></tr>`}</tbody>
131
+ </table>
132
+ </div>
133
+ `}function FS(){if(!TS)return;let e=bS(CS,SS?.anomalies),t=TS.hidden;TS.hidden=!e,e&&t&&SS&&(NS(),wS&&PS())}function IS(e){CS=e,FS()}function LS(e){if(TS)return TS;let t=MS();return e.appendChild(t),FS(),t}function RS(e){SS=e,FS(),TS&&!TS.hidden&&(NS(),wS&&PS())}function zS(e){return e.replace(/\r\n?/g,`
134
+ `).split(`
135
+ `)}function BS(e){return{kind:`unchanged`,text:e}}function VS(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function HS(e,t){return e.length<=7?e.map(t):[...e.slice(0,3).map(t),VS(e.length-6),...e.slice(e.length-3).map(t)]}function US(e){return e}function WS(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(...HS(e.slice(n,r),US)),n=r}return t}function GS(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function KS(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 qS(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(BS(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 JS(e,t){let n=zS(e),r=zS(t),i=GS(n,r),a=KS(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:WS([...HS(n.slice(0,i),BS),...qS(o,s),...HS(n.slice(n.length-a),BS)]),isTooLarge:!1}}var YS=Object.freeze([{kind:`approve`,label:`Approve`},{kind:`revise`,label:`Send feedback`},{kind:`terminal`,label:`Answer in terminal`}]);function XS(e){return e===`approve`||e===`approve-accept-edits`}function ZS(e){return(e.state===`decided`||e.state===`closed`)&&XS(e.lastDecision)}function QS(e,t){let n=e.reviews.find(e=>e.agentId===t);return n!==void 0&&ZS(n)}function $S(e,t){return e.reviews.find(e=>e.agentId===t)??e.reviews[0]??null}function eC(e){let t=$S(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 tC(e,t){return $S(e,t)?.openRevision?.revision??null}function nC(e,t,n){if(n===null)return null;let r=$S(e,t)?.revisions??[],i=r.findIndex(e=>e.revision===n);return i<=0?null:r[i-1].revision}function rC(e,t){let n=t-e;return Number.isFinite(n)?yc(n,{rounding:`floor`,wording:`abbreviated`,suffix:` ago`,justNowBelowSeconds:60}):`just now`}function iC(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 aC(e,t,n){let r=iC(e,t,n),i=(e.pendingCommentCount??0)>0,a=e.hasUnsavedComment!==!0;return YS.map(({kind:e,label:t})=>({kind:e,label:t,enabled:r&&(e===`terminal`||a&&(e===`revise`?i:!i))}))}function oC(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 sC(e){let t=0;for(let n of e.comments??[])t+=n.comment.trim().length+(n.heading?.length??0);return t}function cC(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength+Hi}function lC(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 ${$e} characters, so nothing was sent`:sC(e)>1e4?`the feedback composes more than the ${tt} characters the hook reply carries, so nothing was sent`:cC(e)>Ui?`the decision is larger than one control frame carries, so nothing was sent`:null}function uC(e){return e?`, ${e}`:``}function dC(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=oC(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 fC(e,t,n){let r=dC(e,t,n);return r?`${r}${uC(e.problem)}`:e.problem??``}function pC(e){let t=$S(e.state,e.selectedAgentId),n=eC(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:nC(e.state,t?.agentId??null,n),status:fC(e,t,n),actions:aC(e,t,n),modes:[{kind:`read`,label:`Read`,enabled:!0},{kind:`changes`,label:`Changes`,enabled:nC(e.state,t?.agentId??null,n)!==null&&e.isDraft!==!0},{kind:`edit`,label:`Edit`,enabled:iC(e,t,n)}]}}function mC(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 hC({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 gC=12,_C=8,vC=``,yC=48,bC=new Map;function xC(e,t){return JSON.stringify([e,t])}function SC(e){return e.id??vC}function CC(e,t){let n=bC.get(e);n||(n=new Map,bC.set(e,n));let r=xC(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>gC;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function wC(e){bC.delete(e)}function TC(e,t,n){return!e||n===null?null:bC.get(e)?.get(xC(t,n))??null}function EC(e){let t=E(`section`,`plan-face`);t.hidden=!0;let n=E(`header`,`plan-head`),r=E(`select`,`plan-heading-picker`);r.setAttribute(`aria-label`,`Plan section`);let i=E(`div`,`plan-view-panel`),a=E(`div`,`plan-sheet-head`),o=E(`button`,`plan-control plan-sheet-close`,`×`);o.type=`button`,o.setAttribute(`aria-label`,`Close`),a.append(E(`span`,null,`View`),o);let s=E(`div`,`plan-view-group plan-author-group`),c=E(`div`,`plan-tabs`);c.setAttribute(`role`,`tablist`),c.setAttribute(`aria-label`,`Plan author`),s.append(E(`span`,`plan-sheet-label`,`Author`),c);let l=E(`div`,`plan-view-group plan-revision-group`),u=E(`div`,`plan-revision-stepper`),d=E(`button`,`plan-control plan-revision-previous`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Previous revision`);let f=E(`button`,`plan-control plan-revision-next`,`›`);f.type=`button`,f.setAttribute(`aria-label`,`Next revision`);let p=E(`span`,`plan-revision-label`),m=E(`span`,`plan-revision-age`);u.append(d,p,f,m);let h=E(`div`,`plan-revision-list`);h.setAttribute(`role`,`radiogroup`),h.setAttribute(`aria-label`,`Revision`),l.append(E(`span`,`plan-sheet-label`,`Revision`),u,h);let g=E(`div`,`plan-view-group plan-mode-group`),_=E(`div`,`plan-modes`);_.setAttribute(`role`,`radiogroup`),_.setAttribute(`aria-label`,`Show`),g.append(E(`span`,`plan-sheet-label`,`Show`),_);let v=E(`div`,`plan-head-spacer`),y=E(`div`,`plan-draft-notice`),b=E(`span`,`plan-draft-dot`);b.setAttribute(`aria-hidden`,`true`);let x=E(`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=E(`button`,`plan-control plan-view-button`,`View`);S.type=`button`,S.setAttribute(`aria-haspopup`,`dialog`),S.setAttribute(`aria-expanded`,`false`);let ee=E(`button`,`plan-control plan-minimize-button`,`Minimize`);ee.type=`button`,ee.addEventListener(`click`,e.showTerminal),n.append(r,i,S,ee);let te=E(`div`,`plan-sheet-backdrop`),C=E(`div`,`plan-body-layout`),w=E(`nav`,`plan-heading-rail`);w.setAttribute(`aria-label`,`Plan sections`);let T=E(`article`,`plan-reading-column`);C.append(w,T);let ne=E(`textarea`,`plan-editor`);ne.setAttribute(`aria-label`,`Plan markdown`),ne.spellcheck=!1;let re=E(`footer`,`plan-action-bar`),ie=E(`span`,`plan-status`);ie.setAttribute(`role`,`status`);let ae=E(`div`,`plan-decision-slot`),oe=E(`label`,`plan-accept-edits`),se=E(`input`,`plan-accept-edits-checkbox`);se.type=`checkbox`,oe.append(se,E(`span`,null,`Accept edits`)),ae.append(oe,ie),re.append(ae);let ce=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let n=E(`button`,`plan-action`,t);n.type=`button`,n.dataset.decision=e,n.addEventListener(`click`,()=>{n.disabled||et(e)}),ce.set(e,n),re.append(n)}t.append(n,C,re,te);let D=null,le={reviews:[]},O=null,k=null,A=!0,ue=``,de=``,fe=``,pe=``,me=!1,he=null,ge=!1,_e=null,ve=!1,ye=!1,be=null,xe=[],j=null,Se=null,M=new Map,N=new Map,Ce=new Map,we=[],Te=!1,Ee=null,De=!1;function Oe(e,t=!0){De=e,i.replaceChildren(...e?[a,g,l,s,y,v]:[a,s,l,g,v,y]),c.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of c.querySelectorAll(`button`)){let n=t.getAttribute(`aria-selected`)===`true`||t.getAttribute(`aria-checked`)===`true`;t.setAttribute(`role`,e?`radio`:`tab`),t.removeAttribute(e?`aria-selected`:`aria-checked`),t.setAttribute(e?`aria-checked`:`aria-selected`,String(n))}i.dataset.open=String(e),te.dataset.open=String(e),S.setAttribute(`aria-expanded`,String(e)),C.inert=e,re.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 Ae(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=De;r[i].click(),!(a&&e!==_)&&(e===_||!De)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let je=ke.subscribe((e,t)=>{t.includes(`layout`)&&De&&Oe(!1,!1)});e.signal?.addEventListener(`abort`,je,{once:!0}),Ae(_),Ae(c),Ae(h),S.addEventListener(`click`,()=>Oe(!De)),o.addEventListener(`click`,()=>Oe(!1)),te.addEventListener(`click`,()=>Oe(!1)),i.addEventListener(`keydown`,e=>{if(!De)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),Oe(!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 Me(e){T.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}r.addEventListener(`change`,()=>Me(r.value));function Ne(){Te=!1;let e=we.map(e=>T.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=T.getBoundingClientRect().top-T.scrollTop,n=hC({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:T.scrollTop,isScrolledToEnd:T.scrollTop>0&&T.scrollTop+T.clientHeight>=T.scrollHeight-2,readingLineOffset:yC}),i=n===null?null:e[n]?.id??null;for(let e of we)e.dataset.headingId===i?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);i!==null&&(r.value=i)}function Pe(){Te||t.hidden||we.length===0||(Te=!0,requestAnimationFrame(Ne))}T.addEventListener(`scroll`,Pe,{passive:!0});function Fe(){Ee=null,ge=!1,ve=!1,ye=!1,be=null}function Ie(t){j=t,e.reportProblem(t),Tt()}function Le(e){k=e,j=null,Fe(),Oe(!1,De),Tt()}function Re(e){let t=le.reviews.find(e=>e.agentId===O)?.revisions??[],n=t[t.findIndex(e=>e.revision===k)+e];n&&Le(n.revision)}d.addEventListener(`click`,()=>Re(-1)),f.addEventListener(`click`,()=>Re(1));function ze(e,t){return`${D??``}:${e??`main`}:${t??`latest`}`}function Be(){return ze(O,k)}function Ve(e,t,n){return`${e??``}:${xC(t,n??0)}`}function He(){return Ve(D,O,k)}function Ue(){return N.get(He())??null}function We(){return Ue()?.size??0}function Ge(){if(Ee===null)return!1;let e=N.get(Ee.target.bucketKey)?.get(Ee.target.sectionSlot)??``;return Ee.field.value.trim()!==e}function Ke(e){let t=N.get(e);if(!t)return[];let n=[];for(let e of xe){let r=t.get(SC(e));r&&n.push({heading:e.heading,comment:r})}return n}function qe(e,t){let n=t.trim(),r=N.get(e.bucketKey)??new Map;N.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&N.delete(e.bucketKey),Tt()}function Je(e){if(ye||me)return;let t={bucketKey:He(),sectionSlot:SC(e)},n=E(`div`,`plan-comment-composer`),r=E(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),i=E(`textarea`,`plan-comment-input`);i.maxLength=$e,i.value=N.get(t.bucketKey)?.get(t.sectionSlot)??``,r.append(i);let a=E(`div`,`plan-comment-actions`),o=E(`button`,`plan-control plan-comment-cancel`,`Cancel`);o.type=`button`;let s=E(`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};Ee=c,i.addEventListener(`input`,wt),o.addEventListener(`click`,()=>{Ee===c&&(Ee=null,Tt())}),s.addEventListener(`click`,()=>{Ee===c&&(Ee=null),qe(t,i.value)}),Tt(),i.focus()}function Ye(e){let t={bucketKey:He(),sectionSlot:SC(e)};if(Ee?.target.bucketKey===t.bucketKey&&Ee.target.sectionSlot===t.sectionSlot)return Ee.element;let n=Ue()?.get(t.sectionSlot);if(!n)return null;let r=E(`div`,`plan-comment-card`),i=E(`div`,`plan-comment-head`),a=E(`button`,`plan-control plan-comment-edit`,`Edit`);a.type=`button`,a.addEventListener(`click`,()=>Je(e));let o=E(`button`,`plan-control plan-comment-remove`,`Remove`);return o.type=`button`,o.disabled=me,a.disabled=me,o.addEventListener(`click`,()=>qe(t,``)),i.append(E(`span`,`plan-comment-label`,`Your comment`),a,o),r.append(i,E(`p`,`plan-comment-text`,n)),r}function Xe(t,n,r={}){if(!D||n.revision===null||me)return!1;let i=lC(r);if(i!==null)return Ie(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return e.sendDecision(D,a)?(j=null,me=!0,he=XS(t)?n:null,Tt(),!0):(Ie(G),!1)}function Ze(e){if(!ge)return{};let t=ne.value;return t===TC(D,e.agentId,e.revision)?{}:{plan:t}}function Qe(e){let t=Ve(D,e.agentId,e.revision),n=Ke(t);n.length!==0&&Xe(`revise`,e,{comments:n})&&e.revision!==null&&(Se={bucketKey:t,agentId:e.agentId,revision:e.revision},Tt())}function et(e){let t={agentId:O,revision:k};e===`revise`?Qe(t):Xe(e===`approve`&&!oe.hidden&&se.checked?`approve-accept-edits`:e,t,Ze(t))}function tt(e){Ee=null,ge=e===`edit`,ve=e===`changes`,ge&&_e!==He()&&(ne.value=TC(D,O,k)??``,_e=He()),j=null,Tt()}function nt(e){return`${e.kind}:${ze(e.agentId,e.revision)}`}function rt(e){for(Ce.set(nt(e),e);Ce.size>_C;){let e=Ce.keys().next().value;if(typeof e!=`string`)break;Ce.delete(e)}}function it(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 at(e){for(let[t,n]of Ce)if(it(n,e))return Ce.delete(t),n;return null}function ot(){for(let[e,t]of Ce)if(t.kind===`draft`)return Ce.delete(e),t;return null}function st(){if(Ce.size!==1)return null;let e=Ce.entries().next().value;return e?(Ce.delete(e[0]),e[1]):null}function ct(){if(!D)return;let t=Be();ue!==t&&e.requestPlan(D,O,k??void 0)&&(ue=t,rt({kind:`selection`,agentId:O,revision:k}))}function lt(){t.hidden||ct()}function ut(){return nC(le,O,k)}function dt(t){if(!D)return;let n=ze(O,t);fe!==n&&e.requestPlan(D,O,t)&&(fe=n,rt({kind:`diff-base`,agentId:O,revision:t}))}function ft(){if(!D)return;let t=`${D}:${O??`main`}`;pe!==t&&e.requestDraft(D,O)&&(pe=t,rt({kind:`draft`,agentId:O,revision:null}))}function pt(e,t){return`${e??``}:${t??``}`}function mt(){return le.reviews.find(e=>e.agentId===O)?.revisions.find(e=>e.revision===k)?.receivedAt??0}function ht(){let e=M.get(pt(D,O));return e!==void 0&&e>mt()}function gt(){ye?(Fe(),Tt()):(Ee=null,ge=!1,ve=!1,ft(),Tt())}x.addEventListener(`click`,gt);function _t(e){w.replaceChildren(),r.replaceChildren(),we=[];for(let t of e){let e=t.id??`plan-introduction`,n=t.heading??`Introduction`,i=E(`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(Ue()?.has(SC(t))===!0),we.push(i),i.addEventListener(`click`,()=>Me(e)),w.append(i);let a=E(`option`,null,n);a.value=e,r.append(a)}}function vt(e){let t=ut();if(t===null){T.append(E(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let n=TC(D,O,t);if(n===null){T.append(E(`p`,`plan-loading`,`Loading the previous revision`)),dt(t);return}let r=JS(n,e);r.isTooLarge?(T.append(E(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),T.append(ap(ep(e)))):T.append(cp(r))}function yt(e){if(T.replaceChildren(),ge){_t(xe),T.append(ne);return}if(e===null){if(xe=[],_t(xe),de===Be()){T.append(E(`p`,`plan-loading`,`This plan revision could not be loaded`));return}T.append(E(`p`,`plan-loading`,`Loading plan`)),ct();return}let t=ep(e);if(xe=tp(t),_t(xe),ve){vt(e);return}if(ye){T.append(ap(t));return}let n=Ue();T.append(op(xe,{hasComment:e=>n?.has(SC(e))===!0,isComposing:e=>Ee?.target.bucketKey===He()&&Ee.target.sectionSlot===SC(e),onComment:Je,attachmentFor:Ye}))}function bt(e){s.hidden=e.tabs.length<2,c.replaceChildren();for(let t of e.tabs){let e=E(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,De?`radio`:`tab`),e.setAttribute(De?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{O=t.agentId,k=null,j=null,ue=``,de=``,fe=``,pe=``,Fe(),Oe(!1,De),Tt()}),c.append(e)}}function xt(){return ye?be:TC(D,O,k)}function St(e){return pC({state:le,selectedAgentId:O,selectedRevision:k,body:e,isConnected:A,isDecisionInFlight:me,isDraft:ye,pendingCommentCount:We(),hasUnsavedComment:Ge(),problem:j})}function Ct(e){ie.textContent=e.status,ie.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);oe.hidden=!t,se.disabled=!t;for(let t of e.actions){let e=ce.get(t.kind);e&&(e.disabled=!t.enabled)}}function wt(){Ct(St(xt()))}function Tt(){let e=De&&i.contains(document.activeElement),t=pC({state:le,selectedAgentId:O,selectedRevision:k,body:null,isConnected:A});(O!==t.selectedAgentId||k!==t.selectedRevision)&&Fe(),O=t.selectedAgentId,k=t.selectedRevision,_e!==He()&&(_e=null);let n=xt(),a=St(n);bt(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?rC(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=E(`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(E(`span`,`plan-revision-name`,e.label),E(`span`,`plan-revision-age`,rC(e.receivedAt,l))),e.isOpen&&t.append(E(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Le(e.revision)),h.append(t)}_.replaceChildren();let g=ge?`edit`:ve?`changes`:`read`,v=a.modes.find(e=>e.kind===g&&e.enabled)??a.modes[0];for(let e of a.modes){let t=E(`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||(tt(e.kind),_.querySelector(`[aria-checked="true"]`)?.focus())}),_.append(t)}y.hidden=!ht()&&!ye,x.hidden=y.hidden,x.setAttribute(`aria-pressed`,String(ye)),Ct(a),yt(n),r.disabled=we.length===0,Pe(),e&&!i.contains(document.activeElement)&&o.focus()}function Et(t){he!==null&&QS(t,he.agentId)&&(he=null,_e=null,e.showTerminal())}function Dt(e){Ee=null,e!==D&&(he=null,me=!1,j=null,Ce.clear()),Oe(!1,!1),D=e,t.hidden=!1,ue=``,de=``,Tt(),lt()}function Ot(){Ee=null,Oe(!1,!1),t.hidden=!0}function kt(e,t){return t.kind!==`selection`||e.agentId!==O?!1:t.revision===null?k===null||k===e.revision:t.revision===k}function At(e){e.kind===`draft`?(pe=``,Ie(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?fe=``:de=ze(e.agentId,e.revision)}function jt(e){Se!==null&&tC(e,Se.agentId)!==Se.revision&&(N.delete(Se.bucketKey),Se=null)}function Mt(e){me=!1,Nt({reviews:e.reviews});let t=e.body;if(!t){let e=st()??ot();e!==null&&At(e);return}let n=at(t);if(t.revision===0){if(pe=``,n===null||t.agentId!==O)return;be=t.plan,ye=!0}else CC(e.id,t),n!==null&&kt(t,n)&&(O=t.agentId,k=t.revision,ue=``,de=``)}function Nt(e){let t=tC(e,O);t!==null&&t!==tC(le,O)&&(k=t,Fe()),jt(e),le=e,me=!1,Et(e)}function Pt(e){let n=!1;e.state&&Nt(e.state),e.draft&&M.set(pt(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(he=null,me=!1,Se=null,e.refusalText&&(j=e.refusalText)),typeof e.isConnected==`boolean`&&(n=e.isConnected&&!A,A=e.isConnected,n&&(ue=``,de=``,fe=``,pe=``,me=!1)),e.requestFailed&&(de=ue),e.response&&Mt(e.response),t.hidden||Tt(),(n||e.decisionRefused)&&lt()}return{el:t,show:Dt,hide:Ot,update:Pt}}function DC(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 OC(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 kC(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:OC(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 AC(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:DC(r)});let r=e.repos.map(e=>kC(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 jC(e,t,n,r){let i=E(`button`,n);return i.type=`button`,i.title=`Open ${e} in the diff`,i.addEventListener(`click`,()=>r(t)),i}function MC(e,t){let n=E(`section`,`review-map-repo`),r=E(`div`,`review-map-repo-head`);r.append(E(`strong`,`review-map-repo-name`,e.header.name)),n.append(r);let i=E(`div`,`review-map-summary`);if(i.append(E(`span`,``,`${e.header.committedCount} committed`)),i.append(E(`span`,``,`${e.header.uncommittedCount} uncommitted`)),i.append(E(`span`,``,`Base: ${Xt(e.header.base,{chars:8})||`unknown`}`)),n.append(i),e.error&&n.append(E(`p`,`review-map-error`,e.error)),e.subsystems.length>0){let t=E(`div`,`review-map-subsystems`);for(let n of e.subsystems)t.append(E(`span`,`review-map-chip`,`${n.title} (${n.fileCount})`));n.append(t)}if(e.warnings.length>0){n.append(E(`h3`,`review-map-label`,`Signals`));let r=E(`div`,`review-map-warnings`);for(let n of e.warnings){let e=jC(n.path,n.openPath,`review-map-warning`,t);e.dataset.severity=String(n.severity),e.dataset.kind=n.kind,e.append(E(`span`,`review-map-warning-headline`,n.headline)),e.append(E(`span`,`review-map-detail`,n.detail)),r.append(e)}n.append(r)}if(e.files.length>0){n.append(E(`h3`,`review-map-label`,`Files`));let r=E(`div`,`review-map-files`);for(let n of e.files){let e=jC(n.path,n.openPath,`review-map-file`,t);e.dataset.status=n.status,e.append(E(`span`,`review-map-file-path`,n.path)),e.append(E(`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 NC(e,t){let n=E(`div`,`review-map`);if(e.error&&n.append(E(`p`,`review-map-error`,e.error)),e.narrative.status&&n.append(E(`p`,`review-map-narrative-status`,e.narrative.status)),e.narrative.claims.length>0){let t=E(`section`,`review-map-narrative`);t.append(E(`h3`,`review-map-label`,`Narrative`));for(let n of e.narrative.claims){let e=E(`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(MC(r,t));return n}function PC(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 FC(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=PC(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 IC(e,t,n,r){return`${e}:${r}:${n}:${t}`}function LC(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 RC(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 zC(e,t){return t===`merged`||t===`none`||e===`parked`&&t===`pending-review`}function BC(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 VC({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 ${WC(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 HC(e,t){return e.namesMergeTarget?null:`merges into ${WC(t)}`}function UC({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 WC(e){return e||`base`}function GC(e,t){return`Merge into ${WC(e)}, push it, and rebase this worktree, then keep working (${t})`}function KC(e){return e===`base-diverged`?`Resync the base branch by hand, then Merge again.`:`Needs manual merge`}function qC(e,t,n){let r=e!==`parked`||e===`parked`&&t===`base-diverged`;return{isRendered:r,isEnabled:r&&e!==`merging`&&n}}function JC({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 YC({fetched:e,changedFileCount:t,hasCommits:n}){return!e||t>0||n}function XC(e){return e||`its upstream`}function ZC(e){if(!e)return null;let t=e.branch||`Base branch`,{state:n,ahead:r,behind:i}=e,a=XC(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 QC(e){return!e||e.fetched===!1?`recheck`:e.state===`ahead`||e.state===`behind`?`resync`:`recheck`}function $C(e,t,n){let r=n?` (${t})`:``;if(!e||QC(e)===`recheck`)return`Click to fetch and check again${r}`;let i=e.branch||`Base branch`,a=XC(e.upstream);return e.state===`behind`?`Click to fast-forward ${i} to ${a}${r}`:`Click to push ${i} to ${a}${r}`}function ew(e){return e?.state!==`in-sync`||e.fetched===!1}function tw({fetched:e,changedFileCount:t,view:n}){return!e||t===0?!1:n!==`diff`}function nw(e){if(e.error)return`Resync failed: ${e.error}`;let t=e.branch||`The base branch`,n=XC(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 rw=new Set([`pending-review`,`parked`]),iw=600,aw=uv(`merge`,pv),ow=uv(`resolve-or-resync`,pv),sw={minPx:260,maxPx:700},cw=16,lw=5e3,uw=new Map,dw=new Map,fw=new Map,pw=new Map,mw=new Map,hw=new Map,gw=new Set,_w=new Set,vw=new Set,yw=is(),bw=null,xw=null,Sw=null,Cw=null,ww=new Map,Tw=null,Ew=null,Dw=null,Ow=null,kw=null,Aw=null,jw=!1,Mw=null,Nw=null,Pw=null,Fw=null,Iw=new Map,Lw=null,Rw=null,zw=new Map,Bw=null,Vw=null,Hw=null,Uw=null,Ww=null,Gw=new Map,Kw=new Map,qw=0,Jw=null,Yw=!1,Xw=null;function Zw(e,t){let n=E(`button`,`review-icon-button`);return n.type=`button`,n.title=e,n.setAttribute(`aria-label`,e),n.append(rh(t)),n}function Qw(){jw=!1,Sw?.querySelector(`.review-more-menu`)?.remove(),Sw?.querySelector(`.review-more-button`)?.setAttribute(`aria-expanded`,`false`)}function $w({panel:e}){if(xw=e,!xw)return;let t=xw,n=E(`div`,`review-sidebar-head`),r=E(`span`,`review-sidebar-title`,`Review`);Aw=E(`span`,`review-sidebar-session`),r.append(Aw);let i=e=>{t.toggleAttribute(`data-collapsed`,e),rs(!e)},a=E(`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=E(`button`,`review-header-tab`,t);n.type=`button`,n.addEventListener(`click`,()=>oE(e)),ww.set(e,n),a.append(n)}Tw=E(`span`,`review-notes-count`),a.append(Tw);let o=Zw(`Close review`,`M6 3L11 8L6 13`);o.classList.add(`review-sidebar-close`),o.addEventListener(`click`,()=>i(!0)),n.append(r,a,o);let s=E(`div`,`review-sidebar-rail`),c=Zw(`Open review`,`M10 3L5 8L10 13`);c.classList.add(`review-sidebar-open`),c.addEventListener(`click`,()=>i(!1)),Dw=E(`div`,`review-rail-status`),Ow=E(`span`,`review-rail-added`),kw=E(`span`,`review-rail-removed`),Dw.append(Ow,kw),Ew=E(`span`,`review-rail-label`,`Review`),s.append(c,Ew,Dw),Sw=E(`div`,`review-controls`),Cw=E(`div`,`review-sidebar-body`),Bw=E(`div`,`review-notes-footer`),Vw=E(`button`,`review-btn review-btn-primary`,`Send notes`),Vw.type=`button`,Vw.title=`Paste the drafted review notes into this session as one message`,Vw.addEventListener(`click`,GT),Hw=E(`div`,`review-notes-status`),Bw.append(Hw,Vw),Ww=E(`div`,`review-notes-list`),Uw=E(`div`,`review-notes-outcome`),Uw.setAttribute(`role`,`status`);let l=E(`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,Sw,Cw,Uw,Bw,l),t.toggleAttribute(`data-collapsed`,!ns()),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&jw&&(e.preventDefault(),Qw(),Sw?.querySelector(`.review-more-button`)?.focus())}),document.addEventListener(`pointerdown`,e=>{jw&&e.target instanceof Element&&(Sw?.contains(e.target)&&e.target.closest(`.review-more-button, .review-more-menu`)||Qw())}),Ym({resizer:l,column:t,widthHost:t,widthProperty:`--sidebar-width`,bounds:sw,keyStepPx:cw,getStoredWidth:As,setStoredWidth:js,growsLeftward:!0}),kg(e=>{jw=!1,Pw=null,_w.clear(),vw.clear(),bw=null,RT(),e&&kT(e),e&&!jT(e)&&MT(e),fE()}),fE()}function eT(e){xw&&(e?be(xw,e):xe(xw))}function tT(e,t){let n=uw.get(e);uw.set(e,t),zC(n,t)&&(fw.delete(e),pw.delete(e),mw.delete(e),e===Dg()&&AT(e)),e===Dg()&&fE()}function nT(e,t,n=null){let r=t||`none`;dw.set(e,n);let i=Iw.get(e);i!==void 0&&i!==r&&Iw.delete(e),tT(e,r)}function rT(e){let t=M(e);t&&Iw.delete(t)&&t===Dg()&&fE()}function iT(e,t,n=null){dw.set(e,n),Iw.delete(e),tT(e,t||`none`)}function aT(e,t){let n=fw.get(e)??null;fw.set(e,t),pw.delete(e),e===Dg()&&(lT(n,t),bw&&sE(bw,t),fE(),cE())}function oT(e,t){let n=M(e);n&&(pw.set(n,t),n===Dg()&&fE())}function sT(e,t){let n=M(e);if(!n)return;let r=Rt.safeParse(t);r.success&&r.data.sessionId===n&&(mw.set(n,r.data),n===Dg()&&fE())}function cT(e){return{committed:e?.committed?.diff||``,uncommitted:e?.uncommitted?.diff||``}}function lT(e,t){if(!e)return;let n=Jw===null?[...Gw.keys()]:[...Gw.keys(),Jw];if(n.length===0)return;let r=new Set(LC(cT(e),cT(t),n));if(r.size===0)return;Jw!==null&&r.has(Jw)&&uT(Jw);for(let e of r){let t=Gw.get(e);t&&dT(t),Gw.delete(e)}let i=Kw.size;Xw=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 uT(e){Jw=null;let t=zw.get(e),n=Cw?.querySelector(`[data-editor-for="${CSS.escape(e)}"] input`)?.value.trim()??``;t&&n&&Gw.get(e)?.note!==n&&dT({...t.target,section:t.section,note:n})}function dT(e){Kw.set(`orphan:${qw}`,e),qw+=1}function fT(e,t){let n=M(e),r=t;hw.set(n,r),r&&r.action!==void 0&&pT(n,r),n===Dg()&&fE()}function pT(e,t){gw.delete(e),clearTimeout(Rw??void 0),Rw=null;let n=nw(t);Lw=n?{forId:e,text:n,isError:!!t.error}:null,Lw&&!Lw.isError&&(Rw=setTimeout(()=>{Lw&&Lw.forId===e&&(Lw=null),fE()},5e3))}function mT(e){let t=M(e);t&&t===Dg()&&kT(t)}function hT(e){let t=M(e);if(t!==Dg())return;let n=!fw.has(t)||pw.has(t),r=!mw.has(t)||gT(mw.get(t));n&&kT(t),r&&!n&&AT(t),fE()}function gT(e){return e?!!e.error||e.repos.some(e=>e.error!==null):!1}function _T(e){let t=M(e);uw.delete(t),dw.delete(t),fw.delete(t),pw.delete(t),mw.delete(t),hw.delete(t),gw.delete(t),Lw&&Lw.forId===t&&(clearTimeout(Rw??void 0),Lw=null),t===Dg()?Og(null):fE()}function vT(){let e=Dg(),t=e?j.get(e):null;if(!e||!t)return yT(null,`No session is open to merge.`);if(jT(e))return yT(e,`A workspace session has no worktree to merge.`);if(Iw.has(e))return yT(e,`Merge is already on its way for "${LT(t,e)}".`);let n=uw.get(e)||`none`,r=!!fw.get(e)?.hasCommits,i=qC(n,dw.get(e)||null,TT(t.currentState,r));return UC({status:n,mergeReason:dw.get(e)||null,live:OT(t.currentState),isMergeRendered:i.isRendered,hasChanges:wT(e)})!==`merge`||!i.isEnabled?yT(e,JC({status:n,hasCommits:r,live:OT(t.currentState),state:t.currentState})??`Nothing to merge in "${LT(t,e)}" right now.`):(ET(e,t.currentState),!0)}function yT(e,t){return Pw={forId:e,text:t},clearTimeout(Fw??void 0),Fw=setTimeout(()=>{Pw=null,fE()},lw),fE(),!1}function bT(){let e=Dg();if(!e||jT(e))return!1;let t=j.get(e);if(!t)return!1;let n=uw.get(e)||`none`,r=dw.get(e)||null;return UC({status:n,mergeReason:r,live:OT(t.currentState),isMergeRendered:qC(n,r,!1).isRendered,hasChanges:wT(e)})!==`resolve`||xT(e)?!1:(ST(e),!0)}function xT(e){return Mw?.forId===e&&!Mw.isError}function ST(e){let t=K({type:`resolve-session-merge`,id:e});Mw=t?{forId:e,text:`Resolve prompt sent`,isError:!1}:{forId:e,text:`Not connected. The resolve prompt was not sent.`,isError:!0},clearTimeout(Nw??void 0),Nw=setTimeout(()=>{Mw=null,fE()},t?3e3:lw),fE()}function CT(){let e=Dg();return!e||!j.has(e)||jT(e)||PT(e)?!1:(FT(e),!0)}function wT(e){let t=fw.get(e)??null,n=[...FC(t?.committed?.diff||``),...FC(t?.uncommitted?.diff||``)];return YC({fetched:fw.has(e),changedFileCount:BC(n).files,hasCommits:!!t?.hasCommits})}function TT(e,t){return(ae.includes(e)||e===w.RUNNING)&&t}function ET(e,t){t===w.RUNNING?Xu({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:()=>DT(e,!0)}):DT(e,!1)}function DT(e,t){Iw.has(e)||(K(t?{type:`merge-continue-session`,id:e,force:!0}:{type:`merge-continue-session`,id:e})?(Iw.set(e,uw.get(e)||`none`),e===Dg()&&fE()):yT(e,`Not connected. The merge was not sent.`))}function OT(e){return e!==w.DORMANT&&e!==w.DONE&&e!==w.FAILED}function kT(e){K({type:`request-session-diff`,id:e}),AT(e)}function AT(e){mw.has(e)||mw.set(e,null),K({type:`request-change-map`,id:e})}function jT(e){return j.get(e)?.card.dataset.workspace!==void 0}function MT(e){hw.set(e,null),K({type:`request-branch-sync`,id:e}),e===Dg()&&fE()}function NT(e){gw.add(e),clearTimeout(Rw??void 0),Lw&&Lw.forId===e&&(Lw=null),K({type:`resync-branch`,id:e}),e===Dg()&&fE()}function PT(e){return gw.has(e)||hw.get(e)===null}function FT(e){PT(e)||(QC(hw.get(e))===`resync`?NT(e):MT(e))}function IT(e,t){return t?{text:`Resyncing`,loading:!0,error:!1}:Lw&&Lw.forId===e?{text:Lw.text,loading:!1,error:Lw.isError}:null}function LT(e,t){return e?.card?.dataset.session||t}function RT(){Gw.clear(),Kw.clear(),Jw=null,Xw=null,Yw=!1}function zT(e){return Gw.get(e)??null}function BT(){return`${Gw.size} note${Gw.size===1?``:`s`} drafted`}function VT(e,t,n){let r=E(`div`,`review-notes-entry`),i=t.side===`old`?` (removed line)`:``,a=n?`, no longer attached: the diff changed, not sent`:``;r.append(E(`span`,`review-notes-entry-where`,`${t.section} ${t.path}:${t.line}${i}${a}`)),r.append(E(`span`,`review-notes-entry-note`,t.note));let o=E(`button`,`review-note-remove`,`Remove`);return o.type=`button`,o.title=`Drop this note`,o.addEventListener(`click`,()=>n?iE(e):aE(e)),r.append(o),r}function HT(){if(Ww){Ww.replaceChildren(),Ww.hidden=Gw.size===0&&Kw.size===0;for(let[e,t]of Gw)Ww.append(VT(e,t,!1));for(let[e,t]of Kw)Ww.append(VT(e,t,!0))}}function UT(){if(!Bw||!Vw||!Hw)return;let e=Dg(),t=!!e&&j.has(e);Bw.hidden=!t||yw===`map`||Gw.size===0,Vw.disabled=Yw||Gw.size===0,Hw.textContent=BT(),Tw&&(Tw.hidden=Gw.size===0,Tw.textContent=String(Gw.size),Tw.setAttribute(`aria-label`,BT())),Uw&&(Uw.textContent=Yw?`Sending notes...`:Xw,Uw.hidden=!t||yw===`map`||!Uw.textContent),HT(),yw===`notes`&&t&&WT()}function WT(){Cw&&Ww&&(Cw.replaceChildren(),Gw.size===0&&Kw.size===0?gE(`No notes yet`,`Open the Diff tab and press note on a line to draft one.`):Cw.append(Ww))}function GT(){let e=Dg();e&&!Yw&&Gw.size!==0&&(Yw=!0,Xw=null,UT(),du(`send-diff-annotations`,{id:e,annotations:[...Gw.values()]}).then(JT,KT))}function KT(e){Yw=!1;let t=e instanceof Error?e.message:``;Xw=t?`Could not send the notes: ${t}.`:`Could not send the notes.`,UT()}function qT(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 JT(e){Yw=!1,e.type!==`send-diff-annotations-result`||e.ok!==!0?(Xw=qT(e),UT()):e.pending===!0?(Xw=`Notes queued until the session wakes. They stay drafted here, and pressing Send notes again re-sends them.`,UT()):(Xw=`Notes sent.`,Gw.clear(),Jw=null,fE())}function YT(e,t){let n=E(`div`,`review-note`);n.dataset.noteFor=e,n.append(E(`span`,`review-note-text`,t));let r=E(`button`,`review-note-remove`,`Remove`);return r.type=`button`,r.title=`Drop this note`,r.addEventListener(`click`,()=>aE(e)),n.append(r),n}function XT(e,t){let n=E(`div`,`review-note-editor`);n.dataset.editorFor=e;let r=E(`input`,`review-note-input`);r.type=`text`,r.value=t,r.maxLength=zi,r.placeholder=`Note for this line`,r.addEventListener(`keydown`,t=>{t.key===`Enter`?(t.preventDefault(),rE(e,r.value)):t.key===`Escape`&&(t.preventDefault(),nE())});let i=E(`button`,`review-note-save`,`Save`);i.type=`button`,i.addEventListener(`click`,()=>rE(e,r.value));let a=E(`button`,`review-note-cancel`,`Cancel`);return a.type=`button`,a.addEventListener(`click`,nE),n.append(r,i,a),n}function ZT(e){let t=[],n=zT(e);return Jw===e&&t.push(XT(e,n?n.note:``)),n&&t.push(YT(e,n.note)),t}function QT(e,t){let n=ZT(t);return e.after(...n),n}function $T(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 eE(e){let t=zw.get(e);if(!t)return;let n=null;for(let r of t.rows){$T(r);let t=QT(r,e);for(let e of t){let t=e.querySelector(`input`);!n&&t instanceof HTMLInputElement&&(n=t)}}n&&(n.focus(),n.select())}function tE(e){let t=Jw;Jw=e,t&&t!==e&&eE(t),eE(e)}function nE(){let e=Jw;e&&(Jw=null,eE(e))}function rE(e,t){let n=zw.get(e);if(!n)return;let r=t.trim();r&&(Gw.size>=50&&!Gw.has(e)?(Xw=`Only 50 notes can be sent at once.`,UT()):(Gw.set(e,{...n.target,section:n.section,note:r}),Xw=null,Jw=null,eE(e),UT()))}function iE(e){Kw.delete(e),Xw=null,UT()}function aE(e){Gw.delete(e),Xw=null,eE(e),UT()}function oE(e){yw=e,e!==`diff`&&(bw=null),as(e),fE()}function sE(e,t){if(!t)return;let n=FC(t.committed?.diff),r=FC(t.uncommitted?.diff);for(let t of n)(t.path===e||t.oldPath===e)&&_w.add(`committed:${t.path}`);for(let t of r)(t.path===e||t.oldPath===e)&&_w.add(`uncommitted:${t.path}`)}function cE(){if(!Cw||!bw)return;let e=Cw.querySelectorAll(`.review-file`);for(let t of e)if(t.dataset.path===bw||t.dataset.oldPath===bw){t.scrollIntoView({block:`nearest`}),bw=null;return}}function lE(e){bw=e,sE(e,fw.get(Dg()??``)),oE(`diff`),cE()}function uE(){if(Jw===null||!Cw)return null;let e=Cw.querySelector(`[data-editor-for="${CSS.escape(Jw)}"] input`);return e?{noteKey:Jw,text:e.value,selectionStart:e.selectionStart,selectionEnd:e.selectionEnd,hadFocus:document.activeElement===e}:null}function dE(e){if(!e||e.noteKey!==Jw||!Cw)return;let t=Cw.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 fE(){let e=uE(),t=Cw?.scrollTop??0;pE(),dE(e),Cw&&(Cw.scrollTop=t)}function pE(){if(!Sw||!Cw)return;Sw.replaceChildren(),Cw.replaceChildren();for(let[e,t]of ww)t.setAttribute(`aria-pressed`,String(yw===e));zw.clear(),UT(),Ew&&(Ew.hidden=!0),Dw&&(Dw.hidden=!0);let e=Dg(),t=e?j.get(e):null;if(hE(e,t),!e||!t){Pw&&Sw.append(mE(Pw.text,!0)),gE(`No session selected`,`Click a session name to review its changes here.`);return}let n=jT(e),r=uw.get(e)||`none`,i=dw.get(e)||null,a=t.currentState,o=rw.has(r),s=fw.has(e),c=s?fw.get(e):null,l=pw.get(e)??null,u=c?FC(c.committed?.diff||``):[],d=c?FC(c.uncommitted?.diff||``):[],f=!!c?.hasCommits,p=OT(a),m=qC(r,i,TT(a,f)),h=hw.get(e),g=gw.has(e),_=WC(t.effectiveBase),v=BC([...u,...d]),y=UC({status:r,mergeReason:i,live:p,hasChanges:YC({fetched:s,changedFileCount:v.files,hasCommits:f}),isMergeRendered:m.isRendered}),b=VC({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=E(`div`,`review-status-headline`);if(x.append(E(`span`,`review-status-text`,b.text)),!n&&!ew(h)){let t=ZC(h);if(t){x.title=t;let n=Zw(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);n.classList.add(`review-branch-sync-refresh`),n.title=$C(h,ow,y!==`resolve`),n.disabled=PT(e),n.setAttribute(`aria-description`,t),n.addEventListener(`click`,()=>FT(e)),x.append(E(`span`,`sr-only`,t),n)}}Sw.append(x);let S=E(`div`,`review-status-meta`);if(tw({fetched:s,changedFileCount:v.files,view:yw})&&S.append(E(`span`,`review-status-files`,`${v.files} file${v.files===1?``:`s`}`),E(`span`,`review-status-added`,`+${v.added}`),E(`span`,`review-status-removed`,`-${v.removed}`),E(`span`,`review-status-spacer`)),!n&&ew(h)){let t=_E(e,y!==`resolve`);t&&S.append(t)}S.childElementCount>0&&Sw.append(S),r===`parked`&&Sw.append(E(`div`,`review-status-explanation`,KC(i))),Ew&&(Ew.hidden=!1),Dw&&(Dw.hidden=!1,Dw.setAttribute(`aria-label`,`${b.text}, +${v.added}, -${v.removed}`),Dw.title=b.text),Ow&&(Ow.textContent=`+${v.added}`),kw&&(kw.textContent=`-${v.removed}`);let ee=n?null:xE(e,{status:r,reviewable:o,mergeAction:m,live:p,state:a,effectiveBase:_,primaryAction:y});ee&&Sw.append(ee);let te=n?null:IT(e,g),C=!n&&y===`merge`&&!m.isEnabled?JC({status:r,hasCommits:f,live:p,state:a}):null;if(C){let e=E(`div`,`review-control-reason`,C);e.id=`review-merge-reason`,Sw.append(e),Sw.querySelector(`#review-merge-btn`)?.setAttribute(`aria-describedby`,e.id)}if(te?.text){let e=E(`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||Sw.insertBefore(S,x.nextSibling),Sw.querySelector(`.review-branch-sync-button, .review-branch-sync-refresh`)?.setAttribute(`aria-describedby`,e.id)}if(Mw?.forId===e&&Sw.append(mE(Mw.text,Mw.isError)),Pw&&(Pw.forId===e||Pw.forId===null)&&Sw.append(mE(Pw.text,!0)),yw!==`notes`){if(yw===`map`){let t=mw.get(e);if(!t){Cw.append(E(`div`,`review-nochanges review-loading`,`Loading map...`));return}Cw.append(NC(AC(t),lE))}else l?Cw.append(E(`p`,`review-diff-error`,l)):(u.length>0&&Cw.append(vE(`committed`,`Committed`,HC(b,_),u)),d.length>0&&Cw.append(vE(`uncommitted`,`Uncommitted`,null,d)))}}function mE(e,t){let n=E(`div`,t?`review-control-reason review-control-reason-error`:`review-resolve-sent`,e);return n.setAttribute(`role`,`status`),n}function hE(e,t){if(!Aw)return;let n=e&&t?LT(t,e):``;Aw.textContent=n,Aw.hidden=!n,Aw.title=n}function gE(e,t){if(!Cw)return;let n=E(`div`,`review-empty`);n.append(E(`div`,`review-empty-title`,e),E(`div`,`review-empty-desc`,t)),Cw.append(n)}function _E(e,t){let n=hw.get(e);if(n===void 0)return null;if(n===null)return E(`span`,`review-branch-sync-text review-loading`,`Checking branch sync...`);let r=ZC(n)||`Base branch: sync state unknown`,i=E(`span`,`review-branch-sync-text`);n.state&&(i.dataset.syncState=n.state),n.fetched===!1&&(i.dataset.stale=`true`);let a=Zw(`Refresh branch sync`,`M13 6A5 5 0 1 0 13 10M13 2v4H9`);return a.classList.add(`review-branch-sync-button`),a.title=$C(n,ow,t),a.disabled=gw.has(e),a.addEventListener(`click`,()=>FT(e)),i.append(a,E(`span`,`review-branch-sync-label`,r)),i}function vE(e,t,n,r){let i=E(`div`,`review-section`);i.dataset.kind=e;let a=BC(r),o=E(`div`,`review-section-head`),s=E(`div`,`review-section-id`);s.append(E(`span`,`review-section-label`,t)),n&&s.append(E(`span`,`review-section-meaning`,n)),o.append(s);let c=E(`div`,`review-section-stat`);c.append(E(`span`,`review-stat-files`,`${a.files} file${a.files===1?``:`s`}`)),c.append(E(`span`,`review-add`,`+${a.added}`),E(`span`,`review-del`,`-${a.removed}`)),o.append(c),i.append(o);let l=E(`div`,`review-diff`);for(let t of r)l.append(yE(t,e));return i.append(l),i}function yE(e,t){let n=`${t}:${e.path}`,r=_w.has(n),i=E(`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=E(`button`,`review-file-head`);a.type=`button`,a.setAttribute(`aria-expanded`,r?`true`:`false`);let o=E(`span`,`review-file-twisty`,r?`▾`:`▸`);o.setAttribute(`aria-hidden`,`true`),a.append(o,E(`span`,`review-file-path`,e.path));let s=E(`span`,`review-file-counts`);if(e.binary&&s.append(E(`span`,`review-bin`,`bin`)),e.binary||s.append(E(`span`,`review-add`,`+${e.added}`),E(`span`,`review-del`,`-${e.removed}`)),a.append(s),a.addEventListener(`click`,()=>{let e=_w.has(n);e&&_w.delete(n),e||_w.add(n),fE()}),i.append(a),!r)return i;let c=E(`div`,`review-file-body`);if(e.binary)return c.append(E(`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>=iw&&!vw.has(n)){u=!0;break}c.append(E(`div`,`review-hunk-head`,r.header));for(let i of r.lines){if(l>=iw&&!vw.has(n)){u=!0;break}let r=E(`div`,`review-line review-line-${i.type}`),a=i.type===`add`?`+`:i.type===`del`?`-`:i.type===`meta`?`\\`:` `;r.append(E(`span`,`review-line-gutter`,a)),r.append(E(`span`,`review-line-text`,i.text));let o=RC(e,i);if(c.append(r),l++,!o)continue;let s=IC(t,o.path,o.line,o.side),d=zw.get(s)??{target:o,section:t,rows:[]};d.rows.push(r),zw.set(s,d),r.dataset.noteKey=s;let f=E(`button`,`review-annotate`,`note`);f.type=`button`,f.title=`Note on ${o.path}:${o.line}`,f.addEventListener(`click`,()=>tE(s)),r.append(f),QT(r,s)}if(u)break}if(u){let e=E(`button`,`review-expand`,`Show the rest of this file`);e.type=`button`,e.addEventListener(`click`,()=>{vw.add(n),fE()}),c.append(e)}return i.append(c),i}function bE({id:e,label:t,shortcut:n,title:r,disabled:i=!1,danger:a=!1,onClick:o}){let s=E(`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 xE(e,{status:t,reviewable:n,mergeAction:r,live:i,state:a,effectiveBase:o,primaryAction:s}){let c=E(`div`,`review-actions`),l=s===`resolve`;s===`merge`&&c.append(bE({id:`review-merge-btn`,label:`Merge`,shortcut:aw,title:GC(o,aw),disabled:!r.isEnabled||Iw.has(e),onClick:()=>ET(e,a)})),l&&c.append(bE({label:`Resolve`,shortcut:ow,title:`Paste a resolve prompt into this session so the agent can finish the merge (${ow})`,disabled:xT(e),onClick:()=>ST(e)}));let u=E(`div`,`review-action-controls`);if(u.append(c),!n||i)return c.childElementCount>0?u:null;let d=Zw(`More review actions`,nh);if(d.classList.add(`review-more-button`),d.setAttribute(`aria-haspopup`,`menu`),d.setAttribute(`aria-expanded`,String(jw)),d.setAttribute(`aria-controls`,`review-more-menu`),d.addEventListener(`click`,()=>{jw=!jw,fE(),(Sw?.querySelector(jw?`.review-more-menu button:not(:disabled)`:`.review-more-button`)??Sw?.querySelector(`.review-more-button`))?.focus()}),c.append(d),!jw)return u;let f=E(`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=bE({label:`Discard worktree`,danger:!0,disabled:t===`merging`,onClick:()=>{jw=!1,fE(),Xu({title:`Discard worktree`,message:`Throw away the worktree changes for "${LT(j.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 SE=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 CE(e){let t=e.split(/\r?\n/,1)[0]?.trim()??``;return t.length<=160?t:`${t.slice(0,157)}...`}function wE(e,t){let n=SE[e];if(!n||!t||typeof t!=`object`||Array.isArray(t))return``;let r=t[n];return typeof r==`string`?CE(r):``}var TE=5e3;function EE(e){let t=e.match(/<command-name>([^<]*)<\/command-name>/)?.[1];return t===void 0||/[\r\n]/.test(t)?null:t.trim()||null}function DE(e,t){if(!e.toolUseId)return EE(e.text)??`context`;let n=t.get(e.toolUseId);return n?wE(n.name,n.input)||n.name:`expansion`}function OE(e){return e.kind!==`expansion`||e.toolUseId?!1:EE(e.text)!==null}function kE(e){return e.kind===`prompt`||e.kind===`session`||OE(e)}function AE(e){return new TextEncoder().encode(e).byteLength}function jE(e){return e.kind===`prompt`||e.kind===`expansion`||e.kind===`thinking`||e.kind===`assistant`||e.kind===`notice`?e.text:e.kind===`tool_result`?e.content:e.kind===`raw`?e.line:e.kind===`tool_call`?JSON.stringify(e.input,null,2)??String(e.input??``):[`${e.vendor} ${e.vendorSessionId}`,e.transcriptPath,e.reason??``].filter(Boolean).join(`
136
+ `)}var ME={prompt:`PROMPT`,expansion:`EXPANSION`,thinking:`THINKING`,assistant:`ASSISTANT`,tool_call:`TOOL`,tool_result:`RESULT`,session:`SESSION`,notice:`NOTICE`,raw:`RAW`},NE=[{kind:`thinking`,label:`Thinking`},{kind:`tool_result`,label:`Tool result`},{kind:`raw`,label:`Raw`}];function PE(e,t){if(e.kind===`prompt`)return{prefix:`Prompt: `,text:CE(e.text)};if(e.kind===`thinking`)return{prefix:`Thinking: `,text:CE(e.text)};if(e.kind===`assistant`)return{prefix:`Assistant: `,text:CE(e.text)};if(e.kind===`notice`)return{prefix:`Notice: `,text:CE(e.text)};if(e.kind===`raw`)return{prefix:`Raw: `,text:CE(e.line)};if(e.kind===`session`)return{prefix:`Session: `,text:`${e.vendor} ${e.vendorSessionId}`};if(e.kind===`expansion`)return{prefix:`Expansion: `,text:DE(e,t)};if(e.kind===`tool_call`){let t=wE(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:`${AE(e.content)} bytes`}}function FE(e){if(!e.agentType)return``;let t=e.agentId?` ${e.agentId.slice(-6)}`:``;return`[${e.agentType}${t}] `}function IE(e,t){let n=PE(e,t),r=FE(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:ME[e.kind],text:`${r}${i}`,tone:o,badges:a}}function LE(e,t){return{record:e,...IE(e,t)}}function RE(e){return e.kind!==`tool_result`&&e.kind!==`expansion`?null:e.toolUseId||null}function zE(e,t){let n=RE(e);return!n||t.has(n)?null:n}function BE(e,t,n=1){e.set(t,(e.get(t)??0)+n)}function VE(e,t){let n=(e.get(t)??0)-1;n>0?e.set(t,n):e.delete(t)}function HE(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=RE(i.record);a&&t.has(a)&&(n.rows[r]=LE(i.record,e.toolCallByUseId))}}function UE(){return{turns:[],toolCallByUseId:new Map,unresolvedToolUseCounts:new Map}}function WE(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 GE(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`}`}, ${Sc(i,`KB`)}, ${qc(WE(e))}`}function KE(){return{rowCount:0,toolCallCount:0,errorCount:0,resultBytes:0}}function qE(e,t,n){e.metrics.rowCount+=n,t.record.kind===`tool_call`&&(e.metrics.toolCallCount+=n),t.record.kind===`tool_result`&&(e.metrics.resultBytes+=AE(t.record.content)*n,t.record.isError&&(e.metrics.errorCount+=n))}function JE(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=zE(i,e.toolCallByUseId);t&&BE(e.unresolvedToolUseCounts,t);let a=LE(i,e.toolCallByUseId);if(kE(i)){r={head:a,rows:[],hasTrimmedRows:!1,startedAt:i.ts,metrics:KE()},qE(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:KE()},e.turns.push(r),n.push({turnIndex:e.turns.length-1,isNewTurn:!0,head:null,rows:[]})),r.rows.push(a),qE(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 YE(e,t){let n=UE();JE(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)||BE(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],HE(e,i),{newTurns:n.turns,mergedHead:c,mergedRows:l,needsRerender:i.size>0}}function XE(e){return e.rows.length+ +!!e.head}function ZE(e){let t=0;for(let n of e.turns)t+=XE(n);return t}function QE(e,t){for(let n of t){if(n.record.kind===`tool_call`){e.toolCallByUseId.delete(n.record.toolUseId);continue}let t=RE(n.record);t&&VE(e.unresolvedToolUseCounts,t)}}function $E(e,t){QE(e,t.head?[t.head,...t.rows]:t.rows)}function eD(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);QE(e,i);for(let e of i)qE(n,e,-1);return n.rows=n.rows.slice(r),n.hasTrimmedRows=!0,r}function tD(e,t=TE){let n=ZE(e),r=0;for(;n>t&&r<e.turns.length-1;){let t=e.turns[r];if(!t)break;n-=XE(t),$E(e,t),r+=1}return r>0&&(e.turns=e.turns.slice(r)),n<=t?{droppedTurnCount:r,droppedRowCount:0}:{droppedTurnCount:r,droppedRowCount:eD(e,n-t)}}function nD(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 rD(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 iD(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 aD(e,t=TE){return!e.selectedSessionId||!e.hasLoadedOnce||e.hasDroppedEarliestRows||e.residentRowCount>=t?!1:e.firstOffset>0}function oD(e,t=TE){return!aD(e,t)||e.hasPendingRequest||!e.selectedSessionId?null:{id:e.selectedSessionId,direction:`earlier`,after:0,endingAt:e.firstOffset}}function sD(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 cD(e){return e.hasSelectionChanged||e.isRenderedTraceStale||!e.hasRenderedOnce}function lD(e,t,n){return e!==0||t?null:n?.startedAt??null}function uD(e,t){return dD(e,t)?e.filter(e=>e!==t):[...e,t]}function dD(e,t){return e.includes(t)}function fD(e){return e?`No trace has been recorded for ${e.label}.`:`No sessions are available.`}var pD=1e4,mD=null,hD=null,gD=null,_D=null,vD=[],yD=!1,bD=ms(),xD=null,SD=null,CD=[],wD=null,TD=null,J=null,ED=null,DD=!1,OD=null;function kD(){return!!mD&&!ve(mD)}function AD(){return CD.find(e=>e.id===wD)??null}function jD(){ED&&=(clearTimeout(ED.timeoutHandle),null)}function MD(){ED=null,OD=`The trace did not load within ${Math.round(pD/1e3)} s.`,nO()}function ND(e){jD(),DD=!1,OD=null,wD=e,J=e?{sessionId:e,grouping:UE(),firstOffset:0,nextOffset:0,hasDroppedEarliestRows:!1,filePath:``,hasLoadedOnce:!1}:null,yD=!0}function PD(e){let t=rD(CD,TD,wD,e);return TD&&t===TD&&(TD=null),t!==wD&&(ND(t),!0)}function FD(e){if(!xD)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};xD(t)?ED={request:e,timeoutHandle:setTimeout(MD,pD)}:(OD=G,rO())}function ID(e=!1){if(!xD)return;let t=iD({selectedSessionId:wD,isPanelVisible:e||kD(),hasPendingRequest:!!ED,hasLoadedOnce:J?.hasLoadedOnce??!1,nextOffset:J?.nextOffset??0});t&&FD(t)}function LD(){return{selectedSessionId:wD,hasPendingRequest:!!ED,hasLoadedOnce:J?.hasLoadedOnce??!1,hasDroppedEarliestRows:J?.hasDroppedEarliestRows??!1,firstOffset:J?.firstOffset??0,residentRowCount:J?ZE(J.grouping):0}}function RD(){if(!xD)return;let e=oD(LD());e&&FD(e)}function zD(e){CD.some(t=>t.id===e)&&e!==wD&&(TD=null,ND(e),ID(),nO())}function BD(){let e=E(`label`,`trace-session-field`),t=E(`span`,`trace-session-label`,`Session`),n=E(`select`,`trace-session-select`);n.disabled=CD.length===0;for(let e of CD){let t=E(`option`,null,e.label);t.value=e.id,t.selected=e.id===wD,n.append(t)}return n.addEventListener(`change`,()=>zD(n.value)),e.append(t,n),e}function VD(e){e.toggleAttribute(`data-hidden`,dD(bD,e.dataset.kind??``))}function HD(){if(gD)for(let e of gD.querySelectorAll(`.trace-row`))VD(e)}function UD(e){if(gD)for(let t of gD.querySelectorAll(`details`))t.open=e}function WD(){let e=E(`div`,`trace-filters`);for(let t of NE){let n=E(`button`,`trace-filter`,t.label);n.type=`button`;let r=()=>{n.setAttribute(`aria-pressed`,String(!dD(bD,t.kind)))};r(),n.addEventListener(`click`,()=>{bD=uD(bD,t.kind),hs(bD),r(),HD()}),e.append(n)}for(let[t,n]of[[`Expand all`,!0],[`Collapse all`,!1]]){let r=E(`button`,`trace-expand-control`,t);r.type=`button`,r.addEventListener(`click`,()=>{UD(n)}),e.append(r)}return e}function GD(){let e=he(`trace`,`Session trace`,`Bodies load from the local trace file only when requested.`),t=E(`div`,`trace-controls`);t.append(BD());let n=J?.filePath??``,r=E(`code`,`trace-path`,n);r.title=n,t.append(r);let i=J?lD(J.firstOffset,J.hasDroppedEarliestRows,J.grouping.turns[0]):null;if(i!==null&&t.append(E(`span`,`trace-session-start`,`Started ${new Date(i).toLocaleString()}`)),e.append(t,WD()),!OD)return e;let a=xu(`trace-status`);return a.show(`error`,OD),e.append(a.element),e}function KD(e){let t=E(`div`,`trace-copy-wrap`),n=E(`button`,`trace-copy`,`Copy`);n.type=`button`;let r=E(`span`,`trace-copy-status`);return r.setAttribute(`role`,`status`),n.addEventListener(`click`,()=>{let t=ye(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 qD(){let e=E(`div`,`trace-earlier-wrap`),t=E(`button`,`trace-load-earlier`,`Load earlier`);return t.type=`button`,t.addEventListener(`click`,()=>{RD()}),e.append(t),e}function JD(e,t,n=``){let r=E(`details`,`trace-row${n?` ${n}`:``}`);r.dataset.kind=e.kind,r.dataset.tone=e.tone,VD(r);let i=E(`summary`,`trace-row-summary`);i.append(E(`span`,`trace-offset`,Jc(t,e.record.ts)),E(`span`,`trace-kind`,e.tag),E(`span`,`trace-row-label`,e.text));for(let t of e.badges){let e=E(`span`,`trace-badge`,t);e.dataset.badge=t,i.append(e)}let a=E(`div`,`trace-row-body`);r.append(i,a);let o=!1;return r.addEventListener(`toggle`,()=>{if(!r.open||o)return;o=!0;let t=jE(e.record);a.append(KD(t),E(`pre`,`trace-row-pre`,t))}),r}function YD(e){return E(`span`,`trace-turn-metrics`,GE(e))}function XD(e,t){e&&t&&(t.textContent=GE(e))}function ZD(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=Jc(t.startedAt,t.rows[e].record.ts))}}function QD(e,t,n){let r=JD(t,e.startedAt,`trace-turn-head`);return ue(r,`.trace-row-summary`).append(n),r}function $D(e){let t=E(`section`,`trace-turn`),n=YD(e);if(e.head&&t.append(QD(e,e.head,n)),!e.head){let e=E(`h2`,`trace-leading-title`);e.append(E(`span`,`trace-leading-label`,`Before first prompt`),n),t.append(e)}let r=E(`div`,`trace-rows`);for(let t of e.rows)r.append(JD(t,e.startedAt));return e.hasTrimmedRows&&t.append(E(`p`,`trace-trimmed`,`Earlier rows trimmed`)),t.append(r),{section:t,rowsElement:r,metricsElement:n}}function eO(e){return e?ED?.request.id===e.id&&!J?.hasLoadedOnce?`Loading trace.`:fD(e):fD(null)}function tO(){if(!mD)return;let e=E(`div`,`trace-content`);hD=GD(),e.append(hD),gD=null,_D=null,vD=[];let t=AD(),n=J?.grouping.turns??[];if(!t||n.length===0){e.append(E(`p`,`trace-empty`,eO(t))),mD.replaceChildren(e),yD=!1;return}aD(LD())&&(_D=qD(),e.append(_D));let r=E(`div`,`trace-turns`);for(let e of n){let t=$D(e);vD.push(t),r.append(t.section)}gD=r,HD(),e.append(r),mD.replaceChildren(e),yD=!1}function nO(){mD&&(kD()?tO():yD=!0)}function rO(){if(!hD||!kD())return;let e=GD();hD.replaceWith(e),hD=e}function iO(e){if(!gD)return;let t=J?.grouping.turns[e.turnIndex];if(!t)return;if(e.isNewTurn){let e=$D(t);vD.push(e),gD.append(e.section);return}let n=vD[e.turnIndex];if(n){for(let r of e.rows)n.rowsElement.append(JD(r,t.startedAt));XD(t,n.metricsElement)}}function aO(e){let t=e.parentElement;t&&!t.querySelector(`.trace-trimmed`)&&t.insertBefore(E(`p`,`trace-trimmed`,`Earlier rows trimmed`),e)}function oO(){aD(LD())?!_D&&gD?.parentElement&&(_D=qD(),gD.parentElement.insertBefore(_D,gD)):(_D?.remove(),_D=null)}function sO(){if(!J)return;let e=tD(J.grouping);if(!(e.droppedTurnCount>0||e.droppedRowCount>0)){oO();return}let t=!J.hasDroppedEarliestRows;if(J.hasDroppedEarliestRows=!0,vD=vD.slice(e.droppedTurnCount),gD)for(let t=0;t<e.droppedTurnCount;t+=1)gD.firstElementChild?.remove();let n=vD[0];if(n&&e.droppedRowCount>0){for(let t=0;t<e.droppedRowCount;t+=1)n.rowsElement.firstElementChild?.remove();aO(n.rowsElement),XD(J.grouping.turns[0],n.metricsElement)}t&&rO(),oO()}function cO(e){if(!J)return;let t=JE(J.grouping,e);if(kD()&&!yD&&gD){for(let e of t)iO(e);sO()}else gD=null,sO(),kD()?tO():yD=!0}function lO(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 uO(){DD&&!ED&&(DD=!1,ID())}function dO(e){if(!gD)return;let t=vD[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=YD(r),o=QD(r,e.mergedHead,a);n.insertBefore(o,i),t.metricsElement=a}e.mergedHead||XD(r,t.metricsElement);let a=document.createDocumentFragment();for(let t of e.mergedRows)a.append(JD(t,r.startedAt));i.prepend(a),ZD(i,r)}let i=document.createDocumentFragment(),a=[];for(let t of e.newTurns){let e=$D(t);a.push(e),i.append(e.section)}gD.prepend(i),vD.unshift(...a)}function fO(e){if(!J)return;let t=YE(J.grouping,e),n=kD()&&!yD&&!!gD&&!t.needsRerender,r=mD?.parentElement??null,i=r?.scrollHeight??0,a=r?.scrollTop??0;n&&dO(t),sO(),n||nO(),n&&rO(),r&&(r.scrollTop=a+r.scrollHeight-i)}function pO(e){mD||(mD=E(`div`,`trace-panel`),e.append(mD),tO())}function mO(e){xD=e}function hO(e){SD=e}function gO(e){TD=e,SD?.()}function _O(e){CD=nD(e);let t=PD(kD());t&&ID(),(t||!hD)&&nO(),!t&&hD&&rO()}function vO(){if(!mD)return;let e=PD(!0);ID(!0),cD({hasSelectionChanged:e,isRenderedTraceStale:yD,hasRenderedOnce:!!hD})&&tO()}function yO(e){let t=lO(e);if(!t)return;let n=sD({pendingRequest:ED?.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`?uO():(jD(),OD&&(OD=null,rO()),n===`stale`?uO():n===`reset`?(ND(t.id),J&&(J.filePath=t.path),ID(),nO(),uO()):J&&(J.filePath=t.path,n===`prepend`?(J.firstOffset=t.start,fO(t.records),uO()):(n===`seed`&&(J.hasLoadedOnce=!0,J.firstOffset=t.start),J.nextOffset=t.next,cO(t.records),uO())))}function bO(e){let t=e?.id;typeof t==`string`&&t===wD&&kD()&&(ED?DD=!0:ID())}function xO(e){let t=e?.id;if(typeof t!=`string`||ED?.request.id!==t)return!1;jD(),DD=!1;let n=e?.message;return OD=typeof n==`string`&&n?n:`The trace could not be read.`,nO(),!0}function SO(e){jD(),DD=!1,OD=e?null:G,e?(rO(),ID()):nO()}var CO=`Estimated list prices, not a bill.`,wO=`Enable in Settings.`,TO=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}]),EO=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],DO=/^(\d{4})-(\d{2})-(\d{2})$/,OO=new Set([`day`,`model`,`label`]),kO=new Set([`model`,`label`]);function AO(e){return e.replace(/\B(?=(\d{3})+(?!\d))/g,`,`)}function jO(e){return e.includes(`.`)?e.replace(/0+$/,``).replace(/\.$/,``):e}function MO(e){if(typeof e!=`number`||!Number.isFinite(e))return`-`;let t=Math.round(e);return`${t<0?`-`:``}${AO(String(Math.abs(t)))}`}function NO(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}$${AO(r)}.${i}`}function PO(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}${jO((n/1e3).toFixed(1))}k`:n<999995e3?`${t}${jO((n/1e6).toFixed(2))}M`:`${t}${jO((n/1e9).toFixed(2))}B`}function FO(e){return typeof e!=`number`||!Number.isFinite(e)?`-`:e>0&&e<.1?`<0.1%`:`${jO(e.toFixed(1))}%`}function IO(e){let t=Number(e?.costUSD);return Number.isFinite(t)&&t>0?`costUSD`:`tokens`}function LO(e){return e===`costUSD`?`share of cost`:`share of tokens`}function RO(e,t){let n=Number(e),r=Number(t);return!Number.isFinite(n)||!Number.isFinite(r)||r<=0?null:n/r*100}function zO(e){let t=DO.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=EO[Number(t[2])-1];return n?`${n} ${Number(t[3])}`:String(e)}function BO(e){let t=VO(e);return t.length===0?``:t.length===1?zO(t[0]):`${zO(t[0])} to ${zO(t[t.length-1])}`}function VO(e){return(Array.isArray(e)?e:[]).map(e=>typeof e==`string`?e:e?.day).map(e=>String(e??``)).filter(e=>DO.test(e)).sort()}function HO(e){let t=Number(e?.ts);return!Number.isFinite(t)||t<=0?``:UO(t,typeof e?.tz==`string`&&e.tz?e.tz:null)}function UO(e,t){let n={year:`numeric`,month:`2-digit`,day:`2-digit`};t&&(n.timeZone=t);let r=WO(e,n);return DO.test(r)?r:WO(e,{year:`numeric`,month:`2-digit`,day:`2-digit`})}function WO(e,t){try{return new Intl.DateTimeFormat(`en-CA`,t).format(new Date(e))}catch{return``}}function GO(e){return typeof e!=`number`||!Number.isFinite(e)||e<0?`-`:bc(Math.round(e)*60,{smallestUnit:`m`,dropsZeroRemainder:!0})}function KO(e){let t=Number(e);if(!Number.isFinite(t)||t<=0)return`-`;let n=new Date(t),r=EO[n.getMonth()];return r?`${r} ${n.getDate()} ${wc(n)}`:`-`}function qO(e){if(!e||typeof e!=`object`)return[];let t=[];if(Number.isFinite(e.tokensPerMinute)){let n=Number.isFinite(e.tokensPerMinuteExCache)?`${PO(e.tokensPerMinuteExCache)} excluding cache`:``;t.push({label:`tokens per min`,value:PO(e.tokensPerMinute),sub:n})}return Number.isFinite(e.costPerHour)&&t.push({label:`cost per hour`,value:NO(e.costPerHour),sub:``}),t}function JO(e){if(!e||typeof e!=`object`)return``;let t=[];Number.isFinite(e.projectedTokens)&&t.push(`${PO(e.projectedTokens)} tokens`),Number.isFinite(e.projectedCostUSD)&&t.push(NO(e.projectedCostUSD));let n=Number.isFinite(e.remainingMinutes)?`${GO(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 YO(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 XO(e){return typeof e!=`number`||!Number.isFinite(e)?`ok`:e>=100?`crit`:e>=80?`warn`:`ok`}function ZO(e){let t=W(e?.max,null);return t===null||t<=0?null:t}function QO(e){let t=ZO(e),n=W(e?.pct,null);return t===null||n===null?null:n*100}function $O(e,t){let n=ZO(t),r=W(e?.projectedTokens,null);return n===null||r===null?null:r/n*100}function ek(e){let t=QO(e);return t===null?``:`${Math.round(t)}% of ${PO(e?.max)} tokens, the largest completed block seen`}function tk(e,t){let n=$O(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 nk=Object.freeze([{key:`input`,label:`input`},{key:`output`,label:`output`},{key:`cacheCreate`,label:`cache write`},{key:`cacheRead`,label:`cache read`}]);function rk(e){let t=nk.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=RO(e.tokens,n)??0,r=PO(e.tokens);return{key:e.spec.key,label:e.spec.label,value:r,pct:t,title:`${e.spec.label} ${r}, ${FO(t)}`}})}var ik=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`}),ak=`Sessions spawned by Glimmervoid; terminal sessions count as other`,ok=`Claude sessions Glimmervoid spawned for its own work; plan share is estimated pro rata by cost`;function sk(e){let t=U(e,``);return t?ik[t]||t:ik.other}function ck(e){let t=e?.byLane;return Array.isArray(t)?t.filter(e=>e&&typeof e.lane==`string`):[]}function lk(e){if(typeof e!=`string`)return!1;let t=e.trim();return t!==``&&t!==`interactive`&&t!==`other`}function uk(e){return ck(e).some(e=>lk(e.lane))}var dk=Object.freeze({fiveHour:`This 5 hour block`,sevenDay:`7 day window`});function fk(e,t,n){let r=uA(e,t);return!r||r.resetsAtMs!==null&&r.resetsAtMs<=n?null:r.pct}function pk(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=>lk(e.lane)).map(e=>({lane:String(e.lane),label:sk(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?RO(c,a):RO(l,o),d=fk(n,e,r),f=u===null||d===null?null:u/100*d;return{key:e,label:dk[e],tokens:l,costUSD:c,sharePct:u,planPct:f,lanes:s}}function mk(e,t,n=Date.now()){let r=e?.planWindowLanes;return!r||typeof r!=`object`?[]:lA.map(e=>pk(e.key,r[e.key],t,n)).filter(e=>e!==null)}function hk(e){return e.planPct===null?``:`about ${FO(e.planPct)} of plan`}function gk(e){return e.lanes.filter(e=>e.costUSD>0||e.tokens>0).map(e=>`${e.label} ${e.costUSD>0?NO(e.costUSD):PO(e.tokens)}`).join(`, `)}var _k=`team-review`;function vk(e){if(!Array.isArray(e?.byLane))return null;let t=ck(e).find(e=>e.lane===_k),n=W(t?.costUSD,0),r=W(t?.tokens,0),i=IO(e?.totals),a=RO(i===`costUSD`?n:r,e?.totals?.[i]),o=a===null?``:`${FO(a)} of range ${i===`costUSD`?`cost`:`tokens`}`,s=[NO(n),o,yk(t?.sessions)].filter(Boolean).join(`, `);return{label:sk(_k),value:PO(r),sub:s}}function yk(e){let t=W(e,null);return t===null||t<=0?``:`${MO(t)} ${t===1?`session`:`sessions`}`}function bk(e){let t=e?.rtk;return!t||typeof t!=`object`||t.available!==!0?null:t}function xk(e){let t=e?.cache;return!t||typeof t!=`object`?null:t}function Sk(e){return bk(e)!==null||xk(e)!==null}function Ck(e){let t=bk(e);if(!t)return null;let n=W(t.commands,0),r=n===1?`command`:`commands`;return{value:`${PO(W(t.savedTokens,0))} tokens`,sub:`${FO(W(t.savingsPct,0))} avg across ${MO(n)} ${r}`}}function wk(e){let t=xk(e);if(!t)return null;let n=PO(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:NO(W(t.savedUSD,0)),sub:i};let a=r.length===1?`model`:`models`;return{value:NO(W(t.savedUSD,0)),sub:`${i}, a floor (${r.length} unpriced ${a})`}}function Tk(e){let t=e?.budget?.rows;return Array.isArray(t)?t.filter(e=>e&&W(e.budgetUsd,null)!==null):[]}function Ek(e){return e===`monthly`?`this month`:`today`}function Dk(e){return`${NO(W(e?.spentUsd,0))} of ${NO(W(e?.budgetUsd,0))}`}function Ok(e){let t=W(e?.pct,null);return t===null?0:t}function kk(e){return`${Ek(e?.scope)} spend against budget`}var Ak=Object.freeze([{value:`day`,label:`Day`},{value:`week`,label:`Week`},{value:`month`,label:`Month`}]);function jk(e){let t=DO.exec(String(e??``));return t?new Date(Number(t[1]),Number(t[2])-1,Number(t[3]),12):null}function Mk(e){let t=jk(e);if(!t)return``;let n=(t.getDay()+6)%7;return t.setDate(t.getDate()-n),Cc(t)}function Nk(e){let t=DO.exec(String(e??``));return t?`${t[1]}-${t[2]}`:``}function Pk(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 Fk(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=NA(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 Ik(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 Lk(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)||Pk(r);Fk(i,e),n.set(r,i)}return Array.from(n.values()).map(Ik)}function Rk(e){return Lk(e,Mk)}function zk(e){return Lk(e,Nk)}function Bk(e,t){return t===`week`?Rk(e):t===`month`?zk(e):Array.isArray(e)?[...e]:[]}var Vk=/^(\d{4})-(\d{2})$/;function Hk(e,t){if(t===`month`){let t=Vk.exec(String(e??``));if(!t)return String(e??``)||`-`;let n=EO[Number(t[2])-1];return n?`${n} ${t[1]}`:String(e)}if(t===`week`){let t=zO(e);return t===`-`?t:`week of ${t}`}return zO(e)}function Uk(e){return(Array.isArray(e)?e:[]).some(e=>e?.source===`history`)?`older days from local history`:``}var Wk=Object.freeze([.05,.25,.5,.75]),Gk=Object.freeze([`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`]);function Kk(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<Wk.length;e+=1)i>=Wk[e]&&(a=e+1);return a}function qk(e,{weeks:t=16,today:n=new Date}={}){let r=(Array.isArray(e)?e:[]).filter(e=>DO.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`&&DO.test(n)?n:Cc(o),c=jk(Mk(s));if(!c)return{cells:[],max:0,weeks:0};let l=new Date(c.getFullYear(),c.getMonth(),c.getDate()-(t-1)*7,12),u=Cc(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=Cc(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:Kk(r?.tokens,f)})}return{cells:d,max:f,weeks:t}}function Jk(e){let t=zO(e?.day);if(e?.noData)return`${t}: no data`;let n=W(e?.tokens,0);return n<=0?`${t}: no usage`:`${t}: ${PO(n)} tokens, ${NO(W(e?.costUSD,0))}`}function Yk(e){if(!e)return``;let t=W(e.baselineDays,null),n=t===null?`recent`:`${Math.round(t)} day`;return`Today is ${eA(e.ratio)} the ${n} average: ${NO(e.todayUsd)} against ${NO(e.baselineUsd)}.`}function Xk(e){return e?`This block is burning ${eA(e.ratio)} the usual rate: ${PO(e.current)} tokens per minute against ${PO(e.baseline)}.`:``}function Zk(e){return[Yk(e?.daily),Xk(e?.burn)].filter(Boolean).join(` `)}function Qk(e){return e?.daily||e?.burn?`warn`:`ok`}function $k(e){return!!(e?.daily||e?.burn)}function eA(e){let t=W(e,null);return t===null?`-`:`${jO(t.toFixed(1))}x`}var tA=Object.freeze({claude:`Claude`,codex:`Codex`,grok:`Grok`});function nA(e){let t=U(e,``);return t?tA[t]||t:tA.claude}function rA(e,t){return aA(t)?nA(e?.vendor):``}function iA(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:nA(e),tokens:W(t[e]?.tokens,0),costUSD:W(t[e]?.costUSD,0)}))}function aA(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 oA=`Claude only`;function sA(e){return aA(e)?oA:``}var cA=36e5,lA=Object.freeze([{key:`fiveHour`,label:`5 hour`},{key:`sevenDay`,label:`7 day`}]);function uA(e,t){let n=e?.[t];if(!n||typeof n!=`object`)return null;let r=W(n.pct,null),i=W(n.resetsAtMs,null);return r===null&&i===null?null:{pct:r,resetsAtMs:i}}function dA(e){return lA.some(t=>uA(e,t.key)!==null)}function fA(e){return uA(e,`fiveHour`)?.pct??null}function pA(e){return e===`official`?`official, from Claude Code`:e===`estimated`?`estimated from the largest completed block`:``}function mA(e,t=null){let n=fA(t);if(n!==null)return XO(n);let r=XO(QO(e?.tokenLimit));return r===`ok`?XO($O(e?.activeBlock?.projection,e?.tokenLimit)):r}function hA(e,t=null){let n=[],r=mA(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 Tk(e)){let e=Ok(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 Ec(n)}function gA(e){let t=W(e?.pct,null);return t===null?`-`:`${FO(t)} used`}function _A(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 ${GO(r)}`}function vA(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 yA(e,t=Date.now()){let n=W(e,null);return n===null||n<=0||t-n>cA}function bA(e,t=Date.now()){if(!yA(e,t))return``;let n=vA(e,t);return n?`showing last-known usage (${n})`:`showing last-known usage`}function xA(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 SA(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 CA(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 wA(e){if(Array.isArray(e))return e.length;let t=Number(e);return Number.isFinite(t)?t:null}function TA(e){if(!e||typeof e!=`object`)return``;let t=[],n=wA(e.dirs);if(n!==null&&t.push(`${MO(n)} transcript ${n===1?`directory`:`directories`}`),Number.isFinite(e.files)&&t.push(`${MO(e.files)} files`),Number.isFinite(e.entries)&&t.push(`${MO(e.entries)} entries`),Number.isFinite(e.lastScanMs)&&t.push(`last pass ${MO(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 EA(e){return U(e?.error,``)}function DA(e){let t=U(e?.warning,``);return t?`Glimmervoid could not read every transcript location: ${t}`:``}function OA(e){return EA(e)!==``}function kA(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return n==null||n===t}function AA(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 jA(e){return typeof e?.id==`string`&&e.id!==``}function MA(e){let t=U(e?.label,``);return jA(e)&&t?t:AA(e?.project)||t||`unknown project`}function NA(e){return U(typeof e==`string`?e:e?.model,`unknown model`)}function PA(e){return String(e?.day??``)}function FA(e,t,n){if(!OO.has(t)){let n=Number(e?.[t]);return Number.isFinite(n)?n:0}return t===`day`?PA(e):n(e)}function IA(e,t,n,r=MA){let i=Array.isArray(e)?[...e]:[],a=n===`asc`?1:-1;return i.sort((e,n)=>{let i=FA(e,t,r),o=FA(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 LA(e){return kO.has(e)?`asc`:`desc`}function RA(e,t){return e?.key===t?{key:t,dir:e.dir===`asc`?`desc`:`asc`}:{key:t,dir:LA(t)}}function zA(e,t){return e?.key===t?e.dir===`asc`?`ascending`:`descending`:`none`}var BA=Object.freeze({key:`lastTs`,dir:`desc`}),VA=Object.freeze({key:`tokens`,dir:`desc`}),HA=Object.freeze({key:`day`,dir:`desc`});function UA(e,t=BA){return IA(e,t.key,t.dir,MA)}function WA(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 GA(e){let t=Number(e);return!Number.isFinite(t)||t<=0?``:`${MO(t)} hidden`}function KA(e,t=VA){return IA(e,t.key,t.dir,NA)}function qA(e,t=HA){return IA(e,t.key,t.dir,PA)}function JA(e,t){return(Array.isArray(e)?e:[]).find(e=>String(e?.day??``)===String(t??``))||null}function YA(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 XA(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 ZA(e){let t=Number(e?.tokens);if(!Number.isFinite(t)||t<=0)return``;let{costUSD:n}=XA(e);return n===null?PO(t):`${PO(t)} ${NO(n)}`}function QA(e){let{source:t}=XA(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 $A(e){let{waiting:t,failed:n,done:r,complete:i,dormant:a,total:o}=e,s=e=>e>1?`s`:``,c=r+i,l=t+n;return t>0?{text:`${t} session${s(t)} ${t>1?`need`:`needs`} input`,severity:`warning`,alertCount:l}:n>0?{text:`${n} session${s(n)} failed`,severity:`critical`,alertCount:l}:o>0&&c===o?{text:`All sessions exited`,severity:`done`,alertCount:l}:o>0&&a===o?{text:`${a} session${s(a)} dormant`,severity:``,alertCount:l}:{text:``,severity:``,alertCount:l}}function ej({hasPlan:e,pendingPromptKind:t,hasOpenReview:n,hasApprovedReview:r=!1}){return e&&(n||t===`plan`&&!r)?`plan`:`terminal`}function tj({hasPlan:e,isBorrowed:t,face:n}){return!e||n===`plan`?`hidden`:t?`face`:`navigate`}function nj(e,t){return t===w.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 rj(e,t,n){let r=re.includes(t)?`force-restart`:`restart`;return e===`restart-fresh`?{type:r,id:n,fresh:!0}:{type:r,id:n}}function ij(e,t,n){let r=()=>n.send(rj(e,n.readState(),t)),i=nj(e,n.readState());i?n.confirm({...i,onConfirm:r}):r()}var aj=`DORMANT`;function oj(e){return e?yc(Date.now()-e,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function sj(e,t,n){let r=E(`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,oj(e.mtime)].filter(Boolean).join(` · `);return r.innerHTML=`<span class="resume-item-title">${Rh(e.title||e.id)}</span><span class="resume-item-meta">${Rh(i)}${e.id===t?` · current`:``}</span>`,r.addEventListener(`click`,()=>n(e.id)),r}function cj(e,t={}){let n=(t.currentState||``)===aj,{overlay:r,dialog:i,close:a,actions:o,btnCancel:s}=Yu({title:`Resume a conversation`,dialogClass:`dialog resume-dialog`}),c=E(`p`,`dialog-message`,`Pick a Claude conversation from this repo (any worktree) to continue in this card.`),l=E(`div`,`resume-list`);l.setAttribute(`role`,`listbox`),l.setAttribute(`aria-label`,`Resumable conversations`),l.append(E(`div`,`resume-empty`,`Loading conversations...`));let u=E(`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=xu(`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 wu(`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=j.get(e);t&&o&&(n?Wh(o,{type:`start-session`,id:e}):Uh(o).show(`ok`,`Conversation will resume on this session's next restart.`))}s.addEventListener(`click`,a),u.addEventListener(`click`,()=>{f(null)}),requestAnimationFrame(()=>s.focus()),du(`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(E(`div`,`resume-empty`,`Could not list conversations: ${e.error}`));return}if(t.length===0){l.append(E(`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(sj(e,n,e=>{f(e)}))}).catch(e=>{r.isConnected&&(l.innerHTML=``,l.append(E(`div`,`resume-empty`,`Could not list conversations: ${Cu(e,q)}`)))})}var lj={critical:ne[w.FAILED],warning:ne[w.WAITING],done:ne[w.DONE],"":ne[w.DORMANT]},uj=null,dj=null,fj=e=>e==null?``:String(e),pj=e=>re.includes(e),mj=e=>ie.includes(e),hj=!1;function gj(e){return hj&&n_(e.agent)&&e.card.dataset.ephemeral===void 0}function _j(e){return gj(e)&&e.isConversationViewOn&&e.isBorrowed}function vj(e){e.btnConversationView.classList.toggle(`visible`,gj(e)),e.btnConversationView.setAttribute(`aria-checked`,String(e.isConversationViewOn))}function yj(e){hj=e;for(let t of j.values())!e&&t.face===`conversation`&&t._showTerminalFace?.(),Tj(t)}function bj(e){let t=N(e);return!t||!_j(t)?!1:(t.face=`conversation`,t.card.dataset.face=`conversation`,t.termWrap.hidden=!0,t.planFace.hide(),t.conversationFace.show(M(e)),Tj(t),!0)}function xj(e,t){let n=N(e);if(!n)return;let r=n.isConversationViewOn;n.hasConversationBridge=t.hasConversationBridge,n.conversationApproval=t.conversationApproval,n.isConversationViewOn=t.isConversationViewOn,Tj(n),n.conversationFace.refresh(),r!==t.isConversationViewOn&&(t.isConversationViewOn?bj(e):n.face===`conversation`&&n._showTerminalFace?.())}function Sj(e){return N(e.id)?.conversationFace.applyTraceResponse(e)===!0}function Cj(e){N(e.id)?.conversationFace.applyTraceError(e)}function wj(e){N(e)?.conversationFace.applyTraceChanged(M(e))}function Tj(e){vj(e);let t=e.currentState,n=pj(t)||mj(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`,Yh()),e.btnPlan.classList.toggle(`visible`,tj(e)!==`hidden`),e.btnRemove.classList.add(`visible`)}function Ej(e){e.sessionMenu.classList.remove(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`false`)}function Dj(e,t){ug(e.taskTitleEl,()=>fg(e,t)),e.nameEl.addEventListener(`dblclick`,n=>{n.preventDefault(),hg(e,t)}),e.nameEl.addEventListener(`click`,()=>{mg(e.nameEl)||Og(t)}),e.nameEl.addEventListener(`keydown`,n=>{n.target===e.nameEl&&(n.key===`F2`||n.key===`Enter`)&&(n.preventDefault(),hg(e,t))});function n(n){Ej(e),e.btnSessionMenu.focus(),ij(n,t,{readState:()=>e.currentState,send:t=>{Wh(e,t)},confirm:Xu})}e.btnRestart.addEventListener(`click`,()=>n(`restart`)),e.btnRestartFresh.addEventListener(`click`,()=>n(`restart-fresh`)),e.btnResume.addEventListener(`click`,()=>{Ej(e),cj(t,{currentState:e.currentState})}),e.btnWorkspaceRepos.addEventListener(`click`,()=>{Ej(e),nd(t)}),e.btnTrace.addEventListener(`click`,()=>{Ej(e),gO(t)}),e.btnDocs.addEventListener(`click`,()=>{Ej(e),Lp(t)}),e.btnConversationView.addEventListener(`click`,()=>{Ej(e),Wh(e,{type:`set-session-conversation-view`,id:t,isOn:!e.isConversationViewOn})}),e.btnGuardrails.addEventListener(`click`,()=>{Ej(e),e.btnSessionMenu.focus();let n=n=>()=>{Wh(e,{type:`set-session-guardrails`,id:t,isOn:n})};e.card.dataset.guarded===void 0?Xu({title:`Restore guardrails`,message:`This session restarts with guardrails on, interrupting any turn in progress.`,confirmLabel:`Restore guardrails`,danger:!1,onConfirm:n(!0)}):Xu({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=tj(e);n!==`hidden`&&(n===`face`?Lj(t):location.hash=Bd(t))}),e.btnRemove.addEventListener(`click`,()=>{Ej(e),Lg(t)}),e.btnSessionMenu.addEventListener(`click`,t=>{t.stopPropagation();for(let[,t]of j)t!==e&&Ej(t);let n=e.sessionMenu.classList.toggle(`open`);e.btnSessionMenu.setAttribute(`aria-expanded`,String(n))});function r(t){if(Bh(t)){t.preventDefault(),t.stopPropagation();for(let[,t]of j)t!==e&&Ej(t);e.sessionMenu.classList.add(`open`),e.btnSessionMenu.setAttribute(`aria-expanded`,`true`),Vh([...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(),Ej(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&&Ej(e)},{signal:e.abortController.signal}),e.btnDebug.addEventListener(`click`,n=>{n.stopPropagation(),Sg(e,t)}),document.addEventListener(`click`,t=>{let n=t.target instanceof Node?t.target:null;e.debugOpen&&!e.card.contains(n)&&Cg(e)},{signal:e.abortController.signal})}function Oj(e,t,n){let r=N(e);if(r){r.taskTitle=typeof t==`string`?t:null,r.taskTitleIsCustom=n===!0;for(let e of[r.taskTitleEl,r.titleTargetEl])e&&dg(e,r.taskTitle)}}function kj(e){return typeof e==`string`&&j.has(e)}function Aj(){return j.size}function jj(e){let t=e||{};t.cursorBlink!=null&&rx(t.cursorBlink),t.debugMode!=null&&(qh(t.debugMode),IS(t.debugMode));for(let[,e]of j)e.term&&t.cursorBlink!=null&&(e.term.options.cursorBlink=t.cursorBlink)}function Mj(){H_(j.values(),W_())}function Nj(){if(!we)return;let e=0,t=0,n=0,r=0,i=0,a=0;for(let[,o]of j){a++;let s=o.currentState;s===w.WAITING?e++:s===w.FAILED?t++:s===w.DONE?n++:s===w.COMPLETE?r++:s===w.DORMANT&&i++}let{text:o,severity:s,alertCount:c}=$A({waiting:e,failed:t,done:n,complete:r,dormant:i,total:a});if((o!==uj||s!==dj)&&(uj=o,dj=s,we.dataset.severity=s,we.textContent=``,we.title=o,o)){let e=E(`span`,`aggregate-glyph`,lj[s]??lj[``]);e.setAttribute(`aria-hidden`,`true`),we.append(e,E(`span`,`aggregate-text`,o))}document.title=c>0?`(${c}) Glimmervoid`:`Glimmervoid`}function Pj(e,t,n,r={}){if(!Ce)return;let i=M(e),a=fj(n)||w.DORMANT,o=sg(i,fj(t),a,r),s=a===w.DORMANT;Ce.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(),Tj(c),nS(c,i)}function u(){bj(i)||l()}let d=new AbortController,f=EC({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=>uM(i,e)}),p=vS({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:fj(r.path),stateSince:typeof r.stateSince==`number`&&Number.isFinite(r.stateSince)?r.stateSince:Date.now(),sessionMenu:o.sessionMenu,termWrap:o.termWrap,btnDebug:o.btnDebug,btnRestart:o.btnRestart,btnRestartFresh:o.btnRestartFresh,btnSessionMenu:o.btnSessionMenu,btnResume:o.btnResume,btnWorkspaceRepos:o.btnWorkspaceRepos,btnConversationView:o.btnConversationView,btnGuardrails:o.btnGuardrails,btnTrace:o.btnTrace,btnPlan:o.btnPlan,btnDocs:o.btnDocs,btnRemove:o.btnRemove,debugOverlay:null,debugOpen:!1,abortController:d,currentState:a,face:`terminal`,isBorrowed:!1,hasPlan:!1,pendingPromptKind:null,planReviewState:{reviews:[]},planFace:f,conversationFace:p,conversationApproval:null,hasConversationBridge:!1,isConversationViewOn:!1},c._ensureTerminalReady=()=>nS(c,i),c._showTerminalFace=l,c._showPreferredFace=()=>{Fj(c)===`plan`?Lj(i):bj(i)||l()},c._setBorrowed=e=>{c.isBorrowed=e,Tj(c)},o.card.append(f.el,p.el),j.set(i,c),Dj(c,i),Tj(c),c.btnDocs.classList.toggle(`visible`,wp(i)),a===w.RUNNING&&vd(c,!0),s||(Yx(o.termWrap,c),Zx(c,i)),Nj(),c}function Fj(e){let t=e.planReviewState.reviews.some(e=>e.state===`open`),n=e.planReviewState.reviews.some(ZS);return ej({hasPlan:e.hasPlan,pendingPromptKind:e.pendingPromptKind,hasOpenReview:t,hasApprovedReview:n})}function Ij(e){let t=N(e);return!t?.isBorrowed||Fj(t)!==`plan`?!1:Lj(e)}function Lj(e){let t=N(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(M(e)),Tj(t),!0)}function Rj(e,t){let n=N(e);n&&(n.hasPlan=t===!0,Tj(n),Ij(e))}function zj(e){let t=N(e.id);t&&(t.planReviewState=mC(t.planReviewState,e),t.hasPlan=e.hasPlan,t.planFace.update({state:t.planReviewState}),Tj(t),Ij(e.id))}function Bj(e){let t=N(e.id);t&&t.planFace.update({draft:e})}function Vj(e){let t=N(e.id);t&&(t.planReviewState={reviews:e.reviews},t.hasPlan=!0,t.planFace.update({response:e}),Tj(t))}function Hj(e){if(e.type!==`error`&&e.type!==`session-error`||e.scope!==`plan`&&e.scope!==`plan-decision`)return!1;let t=N(e.id);return t?e.scope===`plan`?(t.planFace.update({requestFailed:!0}),!0):(t.planFace.update({decisionRefused:!0,refusalText:e.message}),!0):!1}function Uj(e){for(let[,t]of j)t.planFace.update({isConnected:e})}function Wj(e,t){let n=N(e);n&&(n.effectiveBase=typeof t==`string`?t:void 0)}function Gj(e,t){let n=N(e);if(!n)return;n.agent=typeof t==`string`?t:null,Tj(n);let r=ju(t);Yj(n,`.agent-badge`,`agent`,{on:r!==``,value:r,text:r})}function Kj(e,t){let n=N(e);n&&(t?n.card.dataset.worktree=``:delete n.card.dataset.worktree)}function qj(e,t,n){let r=N(e);r&&(Jj(r.card,`guarded`,t),Jj(r.card,`guardrailsReleased`,n),cg(r.btnGuardrails,r.card))}function Jj(e,t,n){n?e.dataset[t]=``:delete e.dataset[t]}function Yj(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 Xj(e,t,n=!1){let r=N(e);r&&(r.activeAgents=Math.max(0,Number(t)||0),r.awaitingBackgroundTasks=fe(r.currentState,n===!0),r.card.toggleAttribute(`data-monitoring`,r.awaitingBackgroundTasks))}function Zj(e,t){let n=N(e);if(!n)return;let r=ZA(t);Yj(n,`.usage-badge`,`usage`,{on:!!r,text:r||``,title:r?QA(t):void 0})}function Qj(e,t,n){return t?{on:!0,value:`compacting`,title:`Context compaction in progress`,text:`compacting`}:e?{on:!0,value:fj(e),title:`Waiting on a permission or input prompt`,text:e===`plan`?`Plan ready`:e===`permission`?`permission`:`input`}: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 $j(e,t,n=!1,r=!1){let i=N(e);i&&(i.pendingPromptKind=typeof t==`string`?t:null,Yj(i,`.prompt-badge`,`prompt`,Qj(t,n,r)),i.conversationFace.refresh(),!Ij(e)&&(typeof t!=`string`||t===``)&&i.face===`terminal`&&bj(e))}function eM(e){return e?`sleeping until ~${wc(new Date(e))}`:`scheduled`}function tM(e,t){let n=N(e);n&&Yj(n,`.wakeup-badge`,`wakeup`,{on:!!t,value:t?.kind||`wakeup`,text:eM(t?.at),title:t?.reason?`Scheduled revival: ${t.reason}`:`Scheduled revival pending`})}function nM(e,t){let n=N(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`;Yj(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 rM(e,t){t===`pending-review`||t===`parked`||t===`merging`?e.dataset.merge=t:delete e.dataset.merge}function iM(e,t,n=null){let r=N(e),i=fj(t)||`none`;r&&rM(r.card,i),nT(M(e),i,fj(n)||null)}function aM(e,t,n=null){let r=N(e),i=fj(t)||`none`;r&&rM(r.card,i),iT(M(e),i,fj(n)||null)}function oM(e,t){aT(M(e),t)}function sM(e,t){let n=N(e);if(!n)return;let r=fj(t);n.card.dataset.session=r,n.nameEl.textContent=r}function cM(e){let t=N(e);t&&(Cg(t),j.delete(M(e)),wC(M(e)),t.resizeObserver&&t.resizeObserver.disconnect(),t.abortController&&t.abortController.abort(),qx(t,M(e)),Gb(t),t.term&&t.term.dispose(),t.term=null,t.fitAddon=null,t.card&&t.card.remove(),Nj())}function lM(e,t,n){if(!t||!e.term)return;let r=n===w.DONE?`Session complete`:`Session failed`,i=n===w.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 uM(e,t){let n=N(e);n?Uh(n).show(`error`,t):Eu(t)}function dM(e,t){let n=N(e);if(!n)return;let r=n.card.querySelector(`:scope > .session-failure-reason`);if(!(n.currentState===w.FAILED&&t)){r?.remove();return}let i=r??E(`p`,`session-failure-reason`);i.setAttribute(`role`,`status`),i.textContent=t,r||n.termWrap.before(i)}function fM(e,t){e.term&&(t===w.DONE||t===w.FAILED)&&(e.term.clear(),e.term.reset())}function pM(e){let t=j.get(e);t&&Mm({state:t.currentState})&&document.visibilityState===`visible`&&document.hasFocus()&&K({type:`dismiss`,id:e,expectedState:t.currentState})}function mM(e,t,n){let r=document.activeElement;return Ih({previousState:t,nextState:n,isPhoneLayout:P_(),isDocumentVisible:document.visibilityState===`visible`,isDocumentFocused:document.hasFocus(),isActiveViewer:e._isActiveViewer?.()===!0,hasFocusInsideTerminal:r instanceof Node&&e.termWrap.contains(r)})}function hM(e,t,n,r=``){let i=N(e);if(!i)return;let a=fj(t),o=i.currentState;i.currentState=a,a!==w.RUNNING&&(i.awaitingBackgroundTasks=!1),i.conversationFace.refresh(),a!==o&&(i.stateSince=typeof n==`number`&&Number.isFinite(n)?n:Date.now(),vd(i,a===w.RUNNING)),o===w.DORMANT&&a!==w.DORMANT&&eS(i,M(e)),Mm({state:a})||ef(M(e)),i.card.dataset.state=a,i.card.toggleAttribute(`data-monitoring`,fe(a,i.awaitingBackgroundTasks)),Tj(i),(a===w.WAITING&&o!==w.WAITING||a===w.COMPLETE&&o!==w.COMPLETE)&&!zg(r)&&Ro()&&Lv(Bo()),mM(i,o,a)&&K({type:`dismiss`,id:M(e),expectedState:w.COMPLETE});let s=a===w.DONE||a===w.FAILED,c=o!==w.DONE&&o!==w.FAILED&&o!==w.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})})}),Ro()&&Lv(Bo())),(a===w.DONE||a===w.FAILED)&&lM(i,c,a),a===w.INITIALIZING&&fM(i,o),Nj()}var gM=`(no path)`;function _M(e){if(!e)return gM;let t=String(e).replace(/[/\\]+$/,``),n=Math.max(t.lastIndexOf(`/`),t.lastIndexOf(`\\`));return(n===-1?t:t.slice(n+1))||`(no path)`}function vM(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):gM,a=i.get(r);a||(a={key:r,label:r===`(no path)`?gM:_M(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:_M(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 yM(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 bM({onAdd:e,onForget:t}){let n=E(`div`,`session-group-header`),r=E(`span`,`session-group-label`),i=E(`span`,`session-group-count`),a=E(`span`,`session-group-rule`);a.setAttribute(`aria-hidden`,`true`);let o=E(`button`,`session-group-add`,`+`);o.type=`button`,o.addEventListener(`click`,()=>e(n.dataset.path,n.dataset.label));let s=E(`button`,`session-group-forget`);return s.type=`button`,s.append(rh($m)),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 xM(e,t,n){let{header:r,label:i,count:a,addButton:o,forgetButton:s}=e,c=t.key===gM,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}`))}function SM(e,...t){let n=E(`button`,`attention-banner`);return n.type=`button`,n.append(E(`span`,`attention-banner-count`),...t),n.addEventListener(`click`,e),CM(n,{waitingCount:0,finishedCount:0}),n}function CM(e,t){let n=t.waitingCount+t.finishedCount>0;ue(e,`.attention-banner-count`).textContent=Fm(t),e.disabled=!n,e.toggleAttribute(`data-empty`,!n),n?e.removeAttribute(`aria-hidden`):e.setAttribute(`aria-hidden`,`true`)}var wM=e=>e.ui.path,TM=window.matchMedia?.(`(prefers-reduced-motion: reduce)`),EM=null,DM=null,OM=null,kM=null,AM=null,jM=null,MM=null,NM=!1,PM=null,FM=new Map,IM=new Map,LM=new Map,RM=new Map,zM=null,BM=``,VM=[],HM=new Set;function UM(){return yM(GM(eN()),HM)}function WM(e){let t=zM;if(zM=e||null,t&&t!==zM){let e=IM.get(t);e&&(e.tabIndex=-1,e.setAttribute(`aria-selected`,`false`))}if(zM){let e=IM.get(zM);e&&(e.tabIndex=0,e.setAttribute(`aria-selected`,`true`))}}function GM(e){return vM(e,wM,Nh(e,wM))}function KM(e){let t=RM.get(e.key),n=LM.get(e.key);return(!t||!n)&&(t=bM({onAdd:Ig,onForget:e=>{Ph(e),oN()}}),n=E(`div`,`focus-rail-list`),n.setAttribute(`role`,`listbox`),RM.set(e.key,t),LM.set(e.key,n)),xM(t,e,`rail`),n.setAttribute(`aria-label`,`${e.label} sessions`),{header:t.header,list:n}}function qM(){return NM}function JM(){return ke.snapshot().focusedSessionId}function YM({rail:e,center:t,resizer:n}){if(EM=e,OM=t,!EM||!OM)return;let r=EM,i=OM;QM(n),r.removeAttribute(`role`),r.removeAttribute(`aria-label`),r.setAttribute(`aria-keyshortcuts`,dv(pv)),DM=SM(uN,hv(lv(`next-attention`,pv)));let a=E(`details`,`rail-status-key`);a.append(E(`summary`,`rail-status-key-summary`,`Status key`),Oh()),r.append(DM,a),AM=E(`div`,`focus-empty`),AM.innerHTML=`<p class="focus-empty-title"></p><p class="focus-empty-desc"></p>`,jM=AM.querySelector(`.focus-empty-title`),MM=AM.querySelector(`.focus-empty-desc`),kM=E(`div`,`focus-card-slot`),i.append(AM,kM),r.addEventListener(`keydown`,$M)}var XM={minPx:180,maxPx:480},ZM=16;function QM(e){e&&EM&&Ym({resizer:e,column:EM,widthHost:EM,widthProperty:`--rail-width`,bounds:XM,keyStepPx:ZM,getStoredWidth:es,setStoredWidth:ts})}function $M(e){if(e.key===`Delete`||e.key===`Backspace`){let t=e.target instanceof HTMLElement?e.target:null,n=t?.dataset.id;if(!n||IM.get(n)!==t)return;e.preventDefault(),Lg(n,FM.get(n));return}if(e.key!==`ArrowDown`&&e.key!==`ArrowUp`||e.altKey||e.metaKey||e.ctrlKey||e.shiftKey)return;let t=jm(UM(),zM,e.key===`ArrowDown`?1:-1);t!=null&&(e.preventDefault(),WM(t),IM.get(t)?.focus())}function eN(){return km(Ng(tN))}function tN(e){return e.nameEl?e.nameEl.textContent:e.card&&(e.card.dataset.session||e.card.dataset.id)||``}function nN(e){let{row:t,refs:n}=yh(`button`);t.type=`button`,t.dataset.id=e,t.setAttribute(`role`,`option`),t.addEventListener(`click`,()=>rN(e));let{item:r,removeButton:i}=bh(t,()=>Lg(e,FM.get(e)));return r.setAttribute(`role`,`presentation`),i.tabIndex=-1,Object.assign(t,{_refs:n,_row:r})}function rN(e){let t=Ag(e);t&&(hN(e),dN(t,e))}function iN(e,{id:t,ui:n,state:r,name:i}){let a=FM.get(t)||`none`;Sh(e,e._refs,{ui:n,state:r,name:i??``,mergeStatus:a===`none`?``:a}),e.classList.toggle(`focused`,t===JM());let o=t===zM;e.setAttribute(`aria-selected`,String(o)),e.tabIndex=o?0:-1}function aN(e,t){if(!NM)return;let n=e?.card?.dataset.id,r=n?IM.get(n):null;r&&(t===`flag`?r.dataset.activity=e._activity||``:hd(r._refs?.glyph))}fd(aN),Cd(()=>{if(NM)for(let[e,t]of IM){let n=j.get(e);n&&(t._refs.elapsed.textContent=xd(n))}});function oN(){if(!NM)return;let e=EM;if(!e)return;let t=GM(eN()),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=IM.get(e);a||(a=nN(e),IM.set(e,a)),iN(a,r),i||t.appendChild(a._row)}t._lastOrderKey=r},i=new Set(t.order),a=t.groups.map(e=>e.key).join(`
137
+ `),o=a===BM;BM=a;for(let n of t.groups){let{header:t,list:i}=KM(n);o||e.append(t,i),r(n.rows,i)}for(let[e,t]of[...RM])i.has(e)||(t.header.remove(),LM.get(e)?.remove(),RM.delete(e),LM.delete(e));for(let[e,t]of IM)n.has(e)||(t._row.remove(),IM.delete(e),e===zM&&(zM=null));for(let e of[...FM.keys()])j.has(e)||FM.delete(e);let s=VM;VM=yM(t,HM);let c=JM();if(c&&!j.has(c)){ke.dispatch(`focusSession`,null),zM=null;let e=sN(s,c);if(e){let t=!document.activeElement||document.activeElement===document.body;hN(e),t&&dN(j.get(e),e);return}}gN();let l=JM();if(l){let e=j.get(l);e&&e.card.parentElement!==kM&&pN(e,l)}lN()}function sN(e,t){let n=e.filter(e=>e===t||j.has(e));return n.length<2?VM.find(e=>j.has(e))??null:jm(n,t,n.indexOf(t)===n.length-1?-1:1)}function cN(){return Nm(eN())}function lN(){DM&&CM(DM,Pm(eN()))}function uN(){if(!NM)return;let e=cN();if(!e.length)return;let t=Am(e,PM);if(!t)return;PM=t;let n=j.get(t),r=t===JM();Ag(t),hN(t),IM.get(t)?.scrollIntoView({block:`nearest`}),r&&fN(t),dN(n,t)}function dN(e,t){e&&requestAnimationFrame(()=>requestAnimationFrame(()=>{NM&&JM()===t&&e.term?.focus()}))}function fN(e){if(TM?.matches||document.hidden)return;let t=IM.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=j.get(e)?.card;n?.animate&&n.animate([{opacity:.8},{opacity:1}],{duration:240,easing:`ease-out`})}function pN(e,t){kM&&(Me(e,t,kM,{className:`focus-centered`}),rS(e,t,!0))}function mN(){let e=JM();e&&(je()===e&&Ne(),ke.dispatch(`focusSession`,null))}function hN(e){NM&&j.has(e)&&(pM(e),e!==JM()&&(mN(),ke.dispatch(`focusSession`,e),zM=e,jg(e),oN()))}function gN(){if(!AM||!jM||!MM)return;let e=JM(),t=!!(e&&j.has(e)),n=j.size>0;AM.hidden=t,wf(AM,!n),jM.hidden=!n,MM.hidden=!n,!t&&n&&(jM.textContent=`No session selected`,MM.textContent=`Select a session from the rail on the left to focus it here.`)}function _N(e,t){FM.set(M(e),typeof t==`string`&&t?t:`none`),NM&&oN()}function vN(e){NM&&j.has(e)&&hN(e)}function yN(e){return!NM||!j.has(e)?!1:(hN(e),Lj(e))}function bN(e){if(!NM)return;let t=UM()[e-1];t&&rN(t)}function xN(e){if(!NM)return;let t=jm(UM(),zM,e);t!=null&&(rN(t),IM.get(t)?.scrollIntoView({block:`nearest`}))}window.addEventListener(`focus`,()=>{let e=JM();NM&&e&&pM(e)});function SN(){EM&&(NM=!0,mN(),zM=null,oN(),CN())}function CN(){if(!NM||JM())return;let e=Mg();e&&hN(e)}function wN(){NM&&=(mN(),zM=null,!1)}var TN=`t-[0-9a-f]{8}`,EN=`No findings. Open a markdown file in a connected editor.`,DN=`No intent yet. The visions proposes one after its first pass.`,ON=`Unowned`,kN=RegExp(`^${TN}$`);function AN(){return{byProject:{},unowned:[]}}function jN(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`&&kN.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 MN(e){if(Array.isArray(e))return e.map(jN).filter(e=>e!==null);let t=jN(e);return t?[t]:[]}function NN(e){let t=e?.intent;if(!t||typeof t!=`object`)return AN();let n=t;if(!(Object.hasOwn(n,`byProject`)||Object.hasOwn(n,`unowned`)||Object.hasOwn(n,`global`)))return{byProject:{},unowned:MN(n)};let r=n.byProject&&typeof n.byProject==`object`?n.byProject:{},i=[];for(let[e,t]of Object.entries(r)){let n=MN(t);n.length!==0&&e&&i.push([e,n])}return{byProject:Object.fromEntries(i),unowned:MN(Object.hasOwn(n,`unowned`)?n.unowned:n.global)}}function PN(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 FN(e,t){let n=e||AN(),r=t?.intent;if(!r||typeof r!=`object`)return n;let i=r,a=PN(Array.isArray(i.threads)?MN(i.threads):MN(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 IN(e,t=null){let n=t&&typeof t.get==`function`?t.get(e):null;return typeof n==`string`&&n?n:e}function LN(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:VN(e,r)}))}function RN(e,t=null,n=Date.now()){let r=e||AN(),i=Object.entries(r.byProject||{}).filter(([e,t])=>e&&Array.isArray(t)&&t.length>0).map(([e,n])=>({projectId:e,label:IN(e,t),threads:n})).sort((e,t)=>e.label.localeCompare(t.label)).flatMap(({projectId:e,label:t,threads:r})=>LN(r,{key:e,label:t,now:n})),a=LN(Array.isArray(r.unowned)?r.unowned:[],{key:`unowned`,label:ON,now:n});return i.length+a.length>0?[...a,...i]:[{key:`unowned`,label:ON,text:DN,hasText:!1,active:!1,meta:``}]}function zN(e){return e?.text?`proposed by visions`:``}function BN(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:yc(Number(t)-n,{rounding:`floor`,wording:`spelled`,suffix:` ago`,justNowBelowSeconds:60})}function VN(e,t=Date.now()){let n=zN(e);if(!n)return``;let r=typeof e?.id==`string`&&e.id?`thread ${e.id}, `:``,i=BN(e?.ts,t);return i?`${r}${n}, ${i}`:`${r}${n}`}function HN(e){let t=Number(e?.range?.start?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function UN(e){let t=Number(e?.range?.start?.character);return Number.isFinite(t)?t:0}function WN(e){let t=Number(e?.range?.start?.line);return Number.isFinite(t)?t:0}function GN(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 KN(e){return typeof e==`number`&&Number.isFinite(e)?Math.max(Math.floor(e),0):0}function qN(e){let t=KN(e);return t===1?`1 finding`:`${t} findings`}function JN(e){let t=KN(e);return t===1?`1 comment`:`${t} comments`}function YN(e){let t=KN(e?.findings?.length),n=KN(e?.comments?.length),r=typeof e?.hand==`string`&&e.hand?1:0,i=[];return r>0&&i.push(`raised hand`),t>0&&i.push(qN(t)),n>0&&i.push(JN(n)),i.length>0?i.join(`, `):qN(0)}function XN(e){let t=typeof e==`string`?e.trim():``;return t?`Raised hand: ${t}`:``}function ZN(e){return(typeof e?.hand==`string`?e.hand.trim():``)||null}function QN(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=ZN(t);return i?(n.set(r,i),n):(n.delete(r),n)}function $N(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 eP=`hand`,tP=`unseen`,nP=`
138
+ `;function rP(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 iP(e,t){return rP(JSON.stringify([e,...t]))}function aP(e,t){return iP(`finding`,[e,HN(t),String(t.code??``),String(t.message??``)])}function oP(e,t){return iP(`comment`,[e,dP(t),String(t.message??``)])}function sP(e){return iP(`fix`,[e.uri,SP(e),e.code,e.message,CP(e)])}function cP(e){return iP(`intent`,[e.key,e.text,e.active])}function lP(e,t,n,r=[],i=null){let a=[...n].map(([e,t])=>iP(`hand`,[e,t])).sort(),o=new Set;for(let r of[...e.keys(),...t.keys(),...n.keys()])o.add(iP(`document`,[r]));for(let[t,n]of e)for(let e of n)o.add(aP(t,e));for(let[e,n]of t)for(let t of n)o.add(oP(e,t));for(let e of r)o.add(sP(e));for(let e of RN(i,null,0))e.hasText&&o.add(cP(e));let s=[...o].sort();return{signature:[...a,...s].join(nP),handEntries:a,contentEntries:s}}function uP(e,t){let n=new Set(t.split(nP));return e.handEntries.some(e=>!n.has(e))?eP:e.contentEntries.some(e=>!n.has(e))?tP:null}function dP(e){let t=Number(e?.line);return!Number.isFinite(t)||t<1?`L?`:`L${Math.floor(t)}`}function fP(e){return Array.isArray(e?.diagnostics)?e.diagnostics:[]}function pP(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=fP(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function mP(e){return Array.isArray(e?.comments)?e.comments:[]}function hP(e,t){let n=new Map(e),r=typeof t?.uri==`string`?t.uri:``;if(!r)return n;let i=mP(t);return i.length===0?(n.delete(r),n):(n.set(r,i),n)}function gP(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 _P(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 vP(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:GN(a)||a,hand:s,findings:[...c].sort((e,t)=>WN(e)-WN(t)||UN(e)-UN(t)),comments:[...l].sort((e,t)=>(Number(e?.line)||0)-(Number(t?.line)||0))})}return r.sort((e,t)=>yP(e.name,t.name)||yP(e.uri,t.uri)),r}function yP(e,t){return e<t?-1:+(e>t)}var bP=`No fixes yet. Silent fixes appear here once the lane applies or is refused one.`;function xP(e){let t=KN(e);return t===1?`1 fix`:`${t} fixes`}function SP(e){let t=Number(e?.line);return!Number.isFinite(t)||t<0?`L?`:`L${Math.floor(t)+1}`}function CP(e){return e?.applied===!0?`applied`:`refused`}function wP(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 TP(e){let t=typeof e?.uri==`string`?e.uri:``,n=Number(e?.ts);return wP(e?.fix,{uri:t,ts:Number.isFinite(n)?n:0})}function EP(e,t,{max:n=20}={}){let r=TP(t);return r?[r,...e].slice(0,Math.max(0,Math.floor(n))):[...e]}function DP(e,{max:t=20}={}){let n=Array.isArray(e?.fixes)?e.fixes:[],r=[];for(let e of n){let t=wP(e);t&&r.push(t)}return r.slice(0,Math.max(0,Math.floor(t)))}var OP=`No activity yet. The ingest lane reports what your sessions and tools are doing.`,kP={terminal:`terminal`,agentLogs:`agent`,git:`git`,fs:`files`,shellHistory:`shell`,editor:`editor`};function AP(e){let t=typeof e==`string`?e:``;return kP[t]||t||`source`}function jP(e,t=Date.now()){let n=Number(e);return!Number.isFinite(n)||n<=0?``:yc(Number(t)-n,hc)}function MP(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 NP(e){let t=Array.isArray(e?.events)?e.events:[],n=[];for(let e of t){let t=MP(e);t&&n.push(t)}return n}function PP(e){let t=Number(e?.overflow);return!Number.isFinite(t)||t<=0?0:Math.floor(t)}function FP(e){let t=KN(e);return t<=0?``:t===1?`1 more event not shown`:`${t} more events not shown`}function IP(e,t){return[...e].sort((e,t)=>t.seq-e.seq).slice(0,Math.max(0,Math.floor(t)))}function LP(e,t,{max:n=100}={}){let r=NP(t);if(r.length===0)return IP(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 IP([...i.values()],n)}function RP(e,{max:t=100}={}){return IP(NP(e),t)}function zP(e){let t=KN(e);return t===1?`1 event`:`${t} events`}function BP(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 VP=new Map,HP=new Map,UP=new Map,WP=AN(),GP=new Map,KP=null,qP=null,JP=null,YP=null,XP=null,ZP=[],QP=0,$P=null,eF=[],tF=null,nF=lP(VP,HP,UP,eF,WP),rF=Es(),iF=Oc({getAck:()=>rF,setAck:e=>{rF=e,Ds(e)},signature:()=>nF.signature,isLooking:()=>!ve(KP)});function aF(){let e=E(`section`,`visions-intent`);e.append(E(`h2`,`visions-intent-title`,`Intent`));let t=E(`div`,`visions-intent-list`);return e.append(t),JP={list:t},e}function oF(e){let t=E(`div`,`visions-intent-item`),n=E(`div`,`visions-intent-head`);n.append(E(`span`,`visions-intent-scope`,e.label),E(`span`,`visions-intent-meta`,e.meta));let r=E(`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 sF(){JP&&JP.list.replaceChildren(...RN(WP,GP).map(oF))}function cF(e){GP=e instanceof Map?e:new Map,sF()}function lF(e){let t=E(`section`,`visions-doc`),n=E(`div`,`visions-doc-head`),r=E(`h2`,`visions-doc-name`);if(r.textContent=e.name,r.title=e.uri,n.append(r,E(`span`,`visions-doc-count`,YN(e))),t.append(n),e.hand&&t.append(uF(e.hand)),e.findings.length>0){let n=E(`div`,`visions-findings`);for(let t of e.findings)n.append(fF(t));t.append(n)}if(e.comments.length>0){let n=E(`div`,`visions-comments`);for(let t of e.comments)n.append(dF(t));t.append(n)}return t}function uF(e){let t=E(`div`,`visions-hand`);return t.textContent=XN(e),t}function dF(e){let t=E(`div`,`visions-comment`),n=E(`div`,`visions-comment-head`);n.append(E(`span`,`visions-comment-chip`,`visions`)),n.append(E(`span`,`visions-comment-line`,dP(e))),t.append(n);let r=E(`p`,`visions-comment-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function fF(e){let t=E(`div`,`visions-finding`);t.append(E(`span`,`visions-finding-line`,HN(e)));let n=e?.code==null?``:String(e.code);n&&t.append(E(`span`,`visions-finding-code`,n));let r=E(`span`,`visions-finding-message`);return r.textContent=e?.message==null?``:String(e.message),t.append(r),t}function pF({force:e=!1}={}){if(!qP||!e&&ve(KP))return;qP.textContent=``;let t=vP(VP,HP,UP);if(t.length===0){let e=E(`p`,`visions-empty`,EN);if(XP===!1){let t=of(`lanes-visions`,`visions-enabled`,`Enable Visions`);e.append(document.createTextNode(` `),t)}qP.append(e)}else for(let e of t)qP.append(lF(e))}function mF(e){XP=e?.visions?.enabled===!0,pF()}function hF(){let e=E(`section`,`visions-activity`),t=E(`div`,`visions-activity-head`);t.append(E(`h2`,`visions-activity-title`,`Activity`));let n=E(`span`,`visions-activity-count`);t.append(n),e.append(t);let r=E(`div`,`visions-activity-list`);e.append(r);let i=E(`p`,`visions-activity-overflow`);return e.append(i),$P={count:n,list:r,overflow:i},e}function gF(e,t){let n=E(`div`,`visions-activity-row`);n.append(E(`span`,`visions-activity-source`,AP(e.source))),n.append(E(`span`,`visions-activity-age`,jP(e.ts,t))),n.append(E(`span`,`visions-activity-scope`,BP(e)));let r=E(`span`,`visions-activity-summary`);return r.textContent=e.summary,n.append(r),n}function _F({force:e=!1}={}){if(!$P||!e&&ve(KP))return;let{count:t,list:n,overflow:r}=$P;if(t.textContent=zP(ZP.length),n.textContent=``,ZP.length===0){n.append(E(`p`,`visions-empty`,OP)),r.textContent=``;return}let i=Date.now();for(let e of ZP)n.append(gF(e,i));r.textContent=FP(QP)}function vF(){let e=E(`section`,`visions-fixes`),t=E(`div`,`visions-fixes-head`);t.append(E(`h2`,`visions-fixes-title`,`Fixes`));let n=E(`span`,`visions-fixes-count`);t.append(n),e.append(t);let r=E(`div`,`visions-fixes-list`);return e.append(r),tF={count:n,list:r},e}function yF(e){let t=E(`div`,`visions-fix-row`);t.dataset.applied=e.applied?`yes`:`no`;let n=E(`span`,`visions-fix-file`);n.textContent=GN(e.uri)||e.uri,n.title=e.uri,t.append(n),t.append(E(`span`,`visions-fix-line`,SP(e))),t.append(E(`span`,`visions-fix-outcome`,CP(e))),t.append(E(`span`,`visions-fix-code`,e.code||``));let r=E(`span`,`visions-fix-message`);return r.textContent=e.message,t.append(r),t}function bF({force:e=!1}={}){if(!tF||!e&&ve(KP))return;let{count:t,list:n}=tF;if(t.textContent=xP(eF.length),n.textContent=``,eF.length===0)n.append(E(`p`,`visions-empty`,bP));else for(let e of eF)n.append(yF(e))}function xF(){nF=lP(VP,HP,UP,eF,WP),nF.signature!==``&&iF.refresh(),YP&&YP(uP(nF,rF))}function SF(e){YP=e,xF()}var CF=xu(`visions-connection-status`);function wF(e){e?CF.clear():CF.show(`error`,`${G} What you see below is from before the connection dropped.`)}function TF(e){if(KP)return KP;let t=E(`div`,`visions-content`);t.append(CF.element,aF());let n=E(`div`,`visions-feed`);return t.append(n),t.append(vF()),t.append(hF()),e.appendChild(t),KP=t,qP=n,sF(),pF({force:!0}),bF({force:!0}),_F({force:!0}),t}function EF(){sF(),pF({force:!0}),bF({force:!0}),_F({force:!0})}function DF(){nF.signature!==``&&iF.acknowledge(),xF()}function OF(e){eF=EP(eF,e),bF(),xF()}function kF(e){VP=pP(VP,e),pF(),xF()}function AF(e){HP=hP(HP,e),pF(),xF()}function jF(e){UP=QN(UP,e),pF(),xF()}function MF(e){WP=FN(WP,e),sF(),xF()}function NF(e){ZP=LP(ZP,e),QP=PP(e),_F(),xF()}function PF(e){ZP=RP(e),QP=0,_F(),xF()}function FF(e){VP=gP(e),HP=_P(e),UP=$N(e),WP=NN(e),eF=DP(e),sF(),pF(),bF(),xF()}var IF=i(l(),e());g({glimmervoidId:l().min(1),event:l().min(1),token:l().nullable().optional(),payload:IF}),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 LF=`Claude Code hooks injected into every session Glimmervoid spawns.`,RF=`Loading hooks`,zF=`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.`,BF=`Start from`,VF=`Filter by name, event or command`,HF=`Nothing matches that filter.`,UF=`Preview`,WF=`The entry this becomes in the per-session settings file.`,GF=`Duplicate`,KF=`Discard changes`,qF=`Close the editor and lose the unsaved changes?`,JF=`Esc cancels. Ctrl+Enter saves.`,YF=`A change reaches a session at its next start or restart. Claude Code sessions only; Codex and Grok sessions do not read this file.`,XF=`Glimmervoid's own hooks`,ZF=`Always present, read-only. Status detection depends on them.`,QF=`Your hooks`,$F=`New hook`,eI=`Edit hook`,tI=`Saved to config.json.`,nI=`All projects`,rI=`This event takes no matcher.`,iI=`Blank uses Claude Code's default for the event.`,aI=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.`}]),oI=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`}}]),sI=Object.freeze({hooks:[],builtin:[],events:[]});function cI(e){return!e||typeof e.error==`string`}function lI(e){return!e||typeof e.error!=`string`?``:e.error}function uI(e,t){let n=e?.[t];return Array.isArray(n)?n:sI[t]}var dI=e=>uI(e,`hooks`),fI=e=>uI(e,`builtin`),pI=e=>uI(e,`events`);function mI(e){let t=e?.limits?.maxTimeoutSec;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:600}function hI(e,t){if(!e||typeof e!=`object`)return!1;let n=e.requestId;return typeof n!=`string`||!t||n===t}function gI(e){let t=dI(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(fI(e).length),tone:null}]}function _I(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 vI(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 yI(e){return e.length>=4}function bI(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 xI(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 SI(e){return`${e} copy`}function CI(e,t){return e.find(e=>e.name===t)||null}function wI(e,t){let n=CI(e,t);return n?n.matcher?`Matches ${n.matcher}. Blank matches every ${n.name}.`:rI:``}function TI(e){return e.type===`http`?e.url||``:e.command||``}function EI(e){let t=aI.find(t=>t.value===e);return t?t.label:String(e||``)}function DI(e){return!Number.isInteger(e.timeout)||Number(e.timeout)<=0?``:`${e.timeout}s timeout`}function OI(e,t){let n=Array.isArray(e.projects)?e.projects:[];return n.length===0?nI:n.map(e=>{let n=t.find(t=>t.id===e);return n?n.name:e}).join(`, `)}function kI(e){return e.matcher?`${e.event} / ${e.matcher}`:e.event}function AI(e){return kI(e)}function jI(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 MI(e){let t=e[0];return{id:null,name:``,event:t?t.name:``,matcher:``,type:`command`,command:``,url:``,timeout:``,enabled:!0,projects:[]}}function NI(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 PI(e,t,n=600){if(!e.name.trim())return`Give the hook a name.`;let r=CI(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 FI(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 II(e,t){let n={...MI(t),...e.draft};return CI(t,n.event)||(n.event=MI(t).event),n}function LI(e,t){return JSON.stringify(FI(e))!==JSON.stringify(t)}function RI(e){return{...e,enabled:e.enabled===!1}}function zI(e){return`Delete the hook "${e.name}"? Sessions already running keep it until they restart.`}var BI=null,VI=null,HI=null,UI=!1,WI=null,GI=null,KI=null,qI=null,JI=null,YI=null,XI=!1,ZI=``,QI=new Set,$I=new Set,eL=new Map,tL=!1,nL=(e,t)=>he(`hooks`,e,t);function rL(e,t,n){let r=E(`p`,e,t);return n&&(r.dataset.tone=n),r}function iL(e,t,n,r){let i=E(`button`,e,t);return i.type=`button`,r&&i.setAttribute(`aria-label`,r),i.addEventListener(`click`,n),i}async function aL(e,t){try{let n=await du(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 Cu(e,q)}}async function oL(e,t,n,r){$I.add(e),eL.set(e,{tone:`busy`,text:r}),AL({force:!0});let i=await aL(t,n);$I.delete(e),i&&eL.set(e,{tone:`error`,text:i}),i||eL.delete(e),AL({force:!0}),ML()}function sL(e,t,n){let r=E(`label`,`hooks-field`);return r.append(E(`span`,`hooks-field-label`,e),t),n&&r.append(E(`span`,`hooks-field-hint`,n)),r}function cL(e,t,n){let r=E(`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 lL(e,t){let n=E(`textarea`,`settings-view-input hooks-command`);return n.rows=3,n.value=e,n.spellcheck=!1,n.addEventListener(`input`,()=>t(n.value)),n}function uL(e,t,n){let r=E(`select`,`settings-view-input hooks-select`);for(let n of t){let t=E(`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 dL(e,t){let n=E(`div`,`hooks-type-row`);n.setAttribute(`role`,`radiogroup`);for(let r of aI){let i=E(`label`,`settings-view-toggle hooks-choice`),a=E(`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,E(`span`,null,r.label)),n.append(i)}return n}function fL(e,t){let n=E(`div`,`hooks-projects`);if(t.length===0)return n.append(E(`span`,`hooks-field-hint`,nI)),n;let r=E(`label`,`settings-view-project-choice hooks-choice`),i=E(`input`,`settings-view-checkbox`);i.type=`checkbox`,i.checked=e.projects.length===0,r.append(i,E(`span`,null,nI)),n.append(r);let a=[];for(let r of t){let t=E(`label`,`settings-view-project-choice hooks-choice`),o=E(`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,E(`span`,null,r.name)),r.agent!==`claude-code`&&(t.append(E(`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 pL(e){let t=E(`div`,`hooks-templates`);t.append(E(`span`,`hooks-templates-label`,BF));for(let n of oI){let r=iL(`hooks-chip`,n.label,()=>gL(null,II(n,e)));r.title=n.summary,t.append(r)}return t}function mL(e){JI&&(e?JI.show(`error`,e):JI.clear())}function hL(e){let t=pI(BI),n=_e(BI),r=nL(e.id?eI:$F,tI);r.classList.add(`hooks-editor`);let i=E(`form`,`hooks-form`);i.addEventListener(`submit`,e=>{e.preventDefault(),yL()}),i.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),vL()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),yL())}),e.id||i.append(pL(t));let a=E(`span`,`hooks-field-hint`,wI(t,e.event)),o=cL(e.matcher,``,t=>{e.matcher=t}),s=sL(`Command`,lL(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=sL(`URL`,cL(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=sL(`Matcher`,o,null);u.append(a);let d=()=>{let n=t.find(t=>t.name===e.event);a.textContent=wI(t,e.event),o.disabled=!!n&&!n.matcher,o.disabled&&(o.value=``,e.matcher=``)};d();let f=E(`input`,`settings-view-input hooks-timeout`);f.type=`number`,f.inputMode=`numeric`,f.min=`1`,f.max=String(mI(BI)),f.value=e.timeout,f.addEventListener(`input`,()=>{e.timeout=f.value});let p=E(`label`,`settings-view-toggle hooks-choice`),m=E(`input`,`settings-view-checkbox`);m.type=`checkbox`,m.checked=e.enabled,m.addEventListener(`change`,()=>{e.enabled=m.checked}),p.append(m,E(`span`,null,`Enabled`)),i.append(sL(`Name`,cL(e.name,`Lint after edits`,t=>{e.name=t}),null),sL(`Event`,uL(e,t,t=>{e.event=t,d()}),null),u,sL(`Type`,dL(e,t=>{e.type=t,l()}),null),s,c,sL(`Timeout (seconds)`,f,iI),sL(`Projects`,fL(e,n),null),sL(``,p,null)),JI=xu(`hooks-editor-status`);let h=E(`div`,`hooks-editor-footer`),g=E(`span`,`hooks-editor-shortcut`,JF),_=iL(`btn-dialog btn-dialog-cancel`,`Cancel`,vL),v=E(`button`,`btn-dialog btn-dialog-confirm`,e.id?`Save changes`:`Add hook`);return v.type=`submit`,YI=v,h.append(JI.element,g,_,v),i.append(h),r.append(i),r}function gL(e,t=null){GI=t||(e?NI(e):MI(pI(BI))),KI=FI(e?NI(e):MI(pI(BI))),qI=hL(GI),AL({force:!0}),qI.scrollIntoView({block:`nearest`});let n=qI.querySelector(`input[type=text]`);n instanceof HTMLInputElement&&n.focus()}function _L(){GI=null,KI=null,qI=null,JI=null,YI=null,XI=!1,tL=!0,AL({force:!0})}function vL(){!GI||!KI||!LI(GI,KI)?_L():Xu({title:KF,message:qF,confirmLabel:`Discard`,danger:!0,onConfirm:_L})}async function yL(){if(!GI||XI)return;let e=PI(GI,pI(BI),mI(BI));if(e){mL(e);return}let t=JI,n=YI;XI=!0,t?.show(`busy`,`Saving the hook.`),n&&(n.disabled=!0);let r=await aL(`save-hook`,{hook:FI(GI)});XI=!1,n&&(n.disabled=!1),t===JI&&(r?mL(r):(_L(),ML()))}function bL(e){let t=E(`details`,`hooks-preview`);t.open=QI.has(e.id),t.addEventListener(`toggle`,()=>{t.open?QI.add(e.id):QI.delete(e.id)});let n=E(`summary`,`hooks-preview-summary`,UF);n.title=WF;let r=E(`pre`,`hooks-preview-code`,xI(e));return t.append(n,r),t}function xL(e,{grouped:t=!1}={}){let n=_e(BI),r=E(`article`,`hooks-row`);r.setAttribute(`aria-label`,e.name),e.enabled===!1&&(r.dataset.state=`off`);let i=E(`div`,`hooks-row-main`),a=E(`div`,`hooks-row-head`);a.append(E(`span`,`hooks-row-name`,e.name));let o=t?e.matcher||``:kI(e);o&&a.append(E(`span`,`hooks-row-event`,o));let s=E(`code`,`hooks-row-target`,TI(e));s.title=TI(e);let c=E(`p`,`hooks-row-meta`,[EI(e.type),DI(e),OI(e,n)].filter(Boolean).join(` / `));i.append(a,s,c);let l=jI(e,n);l.length>0&&i.append(rL(`hooks-row-meta`,`Scoped to a project no longer in config: ${l.join(`, `)}`,`warn`)),i.append(bL(e));let u=eL.get(e.id);if(u){let e=xu(`hooks-row-status`);e.show(u.tone,u.text),i.append(e.element)}let d=E(`div`,`hooks-row-actions`),f=E(`label`,`settings-view-toggle hooks-choice`),p=E(`input`,`settings-view-checkbox`);p.type=`checkbox`,p.checked=e.enabled!==!1,p.disabled=$I.has(e.id),p.setAttribute(`aria-label`,`${e.name} enabled`),p.addEventListener(`change`,()=>{oL(e.id,`save-hook`,{hook:RI(e)},p.checked?`Turning the hook on.`:`Turning the hook off.`)}),f.append(p,E(`span`,null,`On`));let m=iL(`hooks-btn`,`Edit`,()=>gL(e),`Edit ${e.name}`),h=iL(`hooks-btn`,GF,()=>{let t=NI({...e,name:SI(e.name)});t.id=null,gL(null,t)},`Duplicate ${e.name}`),g=iL(`hooks-btn hooks-btn-danger`,`Delete`,()=>{Xu({title:`Delete hook`,message:zI(e),confirmLabel:`Delete`,danger:!0,onConfirm:()=>{oL(e.id,`delete-hook`,{id:e.id},`Deleting the hook.`)}})},`Delete ${e.name}`);return g.disabled=$I.has(e.id),d.append(f,m,h,g),r.append(i,d),r}function SL(e){let t=E(`article`,`hooks-row hooks-row-builtin`),n=E(`div`,`hooks-row-main`);return n.append(E(`span`,`hooks-row-event`,AI(e)),E(`p`,`hooks-row-meta`,e.purpose)),t.append(n),t}function CL(){let e=nL(`Hooks`,LF),t=E(`div`,`hooks-stats`);for(let e of gI(BI))t.append(ge(`hooks`,e.label,e.value,e.tone));return e.append(t,rL(`hooks-meta`,YF)),e}function wL(){let e=E(`input`,`settings-view-input hooks-filter`);return e.type=`search`,e.value=ZI,e.placeholder=VF,e.setAttribute(`aria-label`,VF),e.addEventListener(`input`,()=>{ZI=e.value;let t=VI?.querySelector(`.hooks-list-yours`);t&&t.replaceWith(EL())}),e}function TL(){let e=E(`div`,`hooks-empty-state`);return e.append(rL(`hooks-empty`,zF),pL(pI(BI))),e}function EL(){let e=E(`div`,`hooks-list-yours`),t=dI(BI);if(t.length===0)return e.append(TL()),e;let n=vI(_I(t,pI(BI)),ZI);if(n.length===0)return e.append(rL(`hooks-empty`,HF)),e;for(let t of bI(n)){let n=E(`div`,`hooks-group`);n.append(E(`h3`,`hooks-group-title`,t.event));let r=E(`div`,`hooks-list`);for(let e of t.hooks)r.append(xL(e,{grouped:!0}));n.append(r),e.append(n)}return e}function DL(){let e=nL(QF,null),t=iL(`hooks-btn hooks-btn-add`,`+ New hook`,()=>gL(null));t.disabled=!!GI;let n=e.querySelector(`.hooks-section-head`);return n&&n.append(t),yI(dI(BI))&&e.append(wL()),e.append(EL()),e}function OL(){let e=E(`details`,`hooks-builtin`),t=E(`summary`,`hooks-builtin-summary`);t.append(E(`span`,`hooks-section-title`,`${XF} (${fI(BI).length})`),E(`span`,`hooks-section-hint`,ZF));let n=E(`div`,`hooks-list`);for(let e of fI(BI))n.append(SL(e));return e.append(t,n),e}function kL(){let e=E(`div`,`hooks-content`);return BI?cI(BI)?(e.append(rL(`hooks-warning`,lI(BI))),e):(e.append(CL()),qI&&e.append(qI),e.append(DL(),OL()),e):(e.append(UI?rL(`hooks-warning`,G):rL(`hooks-empty`,RF)),e)}function AL({force:e=!1}={}){if(!VI||!e&&ve(VI)||(VI.replaceChildren(kL()),!tL))return;tL=!1;let t=VI.querySelector(`.hooks-btn-add`);t instanceof HTMLButtonElement&&t.focus()}function jL(e){HI=e}function ML(){if(!HI)return;WI=uu(`hooks-report`);let e=HI({type:`request-hooks-report`,requestId:WI});e!==!UI&&(UI=!e,AL())}function NL(e){VI||(VI=E(`div`,`hooks-panel`),e.append(VI),AL({force:!0}))}function PL(){AL({force:!0})}function FL(e){hI(e,WI)&&(BI=e,UI=!1,AL())}function IL(){ML()}function LL(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 RL=e=>e.ui.path;function zL({onSelectSession:e}){let t=E(`div`,`phone-board`),n=E(`header`,`phone-topbar`),r=null,i=SM(()=>{let t=Am(Nm(y()),r);t&&(r=t,e?.(t))}),a=E(`div`,`phone-board-list`),o=E(`div`,`phone-empty`),s=E(`p`,`phone-empty-title`,`No sessions`),c=E(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);o.append(s,c),t.append(n,i,a,o);let l=new Map,u=new Map,d=new WeakMap,f=new WeakMap,p=new WeakMap,m=0;me(n);function h(t){let{row:n,refs:r}=yh(`button`);n.type=`button`,n.dataset.id=t,n.addEventListener(`click`,()=>e?.(t));let{item:i}=bh(n,()=>Lg(t));return i.setAttribute(`role`,`listitem`),d.set(n,{refs:r,item:i}),n}function g(){let e=E(`section`,`phone-board-group`),t=bM({onAdd:Ig,onForget:e=>{Ph(e),b()}}),n=E(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),f.set(e,{...t,rows:n}),e}function _(e,t){let n=d.get(e);if(!n)return;let{ui:r,state:i,name:a}=t;Sh(e,n.refs,{ui:r,state:i,name:a,mergeStatus:r.card?.dataset.merge||``})}function v(e,t){let n=f.get(e);n&&(xM(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function y(){return km(Ng())}function b(){let e=y(),t=vM(e,RL,Nh(e,RL)),n=Pm(e);m=n.waitingCount+n.finishedCount,CM(i,n);let r=new Set(t.order),b=t.order.join(`,`),x=p.get(a)===b&&a.childElementCount===t.groups.length;for(let e of t.groups){let t=u.get(e.key);t||(t=g(),u.set(e.key,t)),v(t,e),x||a.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=f.get(t);if(!r)continue;let i=p.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=l.get(t.id);e||(e=h(t.id),l.set(t.id,e)),_(e,t);let n=d.get(e);n&&(i||r.rows.appendChild(n.item))}p.set(r.rows,n)}p.set(a,b);for(let[e,t]of[...u])r.has(e)||(t.remove(),u.delete(e));let S=new Set(yM(t));for(let[e,t]of[...l]){if(S.has(e))continue;let n=d.get(t);n&&n.item.remove(),l.delete(e)}let ee=t.groups.length>0,te=j.size===0;a.hidden=!ee,o.hidden=ee,wf(o,te),s.hidden=te,c.hidden=te}function x(e,t){let n=e.card?.dataset.id,r=n?l.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:hd(d.get(r)?.refs.glyph))}return Cd(()=>{for(let[e,t]of l){let n=j.get(e),r=d.get(t);n&&r&&(r.refs.elapsed.textContent=xd(n))}}),{el:t,topBarEl:n,refresh:b,renderActivity:x,getAttentionCount:()=>m}}var BL=`clipboard`,VL=`upload`,HL=24,UL=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:BL,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:VL,title:`Upload a photo or file to this session`})]);function WL(e){let t=UL.find(t=>t.id===e);return t?t.bytes:null}function GL(e){return!!e&&e.action===BL}function KL(e){return!!e&&e.action===`upload`}function qL(e,t,n=HL){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 JL(e,t,n=HL){let r=qL(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 YL={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function XL(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):YL[e]??null}function ZL({send:e,getSessionId:t,reportProblem:n}){let r=E(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,a=null,o=E(`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 UL){t.id===`left`&&r.appendChild(QL(e));let n=E(`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){KL(t)?d(r):GL(t)?eR(e,n):e(WL(t.id))}function d(e){a=e,i||(i=E(`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 Sb(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:l}}function QL(e){let t=E(`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=JL(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(WL(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 $L=`Paste needs clipboard permission.`;function eR(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t($L);return}n?n.then(t=>{t&&e(t)}).catch(()=>t($L)):t(`Paste is unavailable in this browser.`)}var tR=`‹`;function nR({onBack:e}){let t=E(`div`,`phone-terminal`),n=E(`header`,`phone-topbar phone-terminal-bar`),r=E(`button`,`phone-back`,tR);r.type=`button`,r.setAttribute(`aria-label`,`Back to board`),r.addEventListener(`click`,()=>e?.());let i=E(`div`,`phone-terminal-identity`),a=E(`span`,`phone-terminal-name`);a.title=`Double-tap to rename`,a.addEventListener(`dblclick`,()=>ee());let o=E(`span`,`session-task-title phone-terminal-title`);ug(o,()=>te());let s=E(`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=A(s,`.phone-terminal-glyph`,`span`),l=A(s,`.phone-terminal-label`,`span`),u=A(s,`.phone-terminal-elapsed`,`span`);l.before(a),i.append(o,s);let d=E(`div`,`phone-terminal-actions`);n.append(r,i,d);let f=E(`div`,`phone-card-slot`),p=E(`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=xu(`phone-key-status m-0 px-3 py-1`),{element:h,takeHeldControl:g}=ZL({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=_?j.get(_):null;t&&(Jx(t,e)?m.clear():m.show(`error`,G))}function x(){let e=_?j.get(_):null;e?.term&&e.term.focus()}f.addEventListener(`click`,x);function S(e){let t=XL(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(),(_?j.get(_):null)?._resetSoftKeyboardBuffer?.())},!0);function ee(){let e=_?j.get(_):null;e&&_&&hg(e,_,{returnsFocusToTerminal:!1})}function te(){let e=_?j.get(_):null;e&&_&&fg(e,_)}function C(){let e=_?j.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||w.DORMANT;xh(n,{glyph:c,label:l},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let s=e.card?.dataset.session||_;mg(a)||(a.textContent=s),o.dataset.sessionName=s??``,dg(o,e.taskTitle),u.textContent=xd(e)}function T(){y&&=(delete y.renameTargetEl,delete y.titleTargetEl,null),a.replaceChildren(),v&&=(xe(v),v.parentElement===d&&v.remove(),null)}function ne(e){let t=j.get(e);t&&(_===e&&je()===e&&t.card.parentElement===f||(T(),_=e,Me(t,e,f,{className:`phone-centered`}),v=A(t.card,`.session-actions`,`div`),be(v,d),t.renameTargetEl=a,t.titleTargetEl=o,y=t),C())}function re(){T(),je()===_&&Ne(),_=null,C()}function ie(){if(!_){C();return}let e=j.get(_);e?e.card.parentElement===f?C():(ne(_),t.hidden||rS(e,_,!0)):re()}function ae(){let e=_;e&&rS(j.get(e),e,!1)}function oe(){ie();let e=_;if(!e)return;let t=j.get(e);t&&(rS(t,e,!0),pM(e))}return Cd(()=>{let e=_?j.get(_):null;e&&(u.textContent=xd(e))}),C(),{el:t,show:ne,clear:re,refresh:ie,reveal:oe,unview:ae,getSessionId:()=>_}}var rR=`board`,iR=Object.freeze([{id:rR,label:`Board`,glyph:`▤`},{id:`terminal`,label:`Terminal`,glyph:`▸`},{id:`review`,label:`Review`,glyph:`◫`}]),aR=[],oR=new Map,sR=null,cR=new Map,lR=new Map,uR=new Map,dR=null,fR=null,pR=null,mR=null,hR=null,gR=new Map,_R=new Set,vR={},yR=!1,bR=120,xR=0,SR=0,CR=0,wR=null;function TR(){xR=0,SR=0}function ER(){let e=window.visualViewport;sR&&(!yR||!e?sR.removeAttribute(`data-keyboard`):(sR.style.setProperty(`--phone-vh`,`${e.height}px`),sR.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==SR&&(SR=e.width,xR=0),xR=Math.max(xR,e.height),xR-e.height>bR?sR.dataset.keyboard=`open`:sR.removeAttribute(`data-keyboard`)))}function DR(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=E(`button`,n);i.type=`button`;let a=E(`span`,`phone-nav-glyph`,t);a.setAttribute(`aria-hidden`,`true`),i.append(a,E(`span`,`phone-nav-label`,e));let o=E(`span`,r);return o.setAttribute(`aria-hidden`,`true`),o.hidden=!0,i.appendChild(o),i}function OR(e){return e?.querySelector(`.phone-nav-dot`)||null}function kR(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function AR(){let e=[];for(let t of aR){if(_R.has(t.id))continue;let n=uR.get(t.id)||!1;e.push(n),kR(OR(gR.get(t.id)),n)}kR(OR(mR),zm(e))}function jR(){let e=E(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of aR){let n=DR(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=_R.has(t.id),n.addEventListener(`click`,()=>{MR(!1),YR(t.id)}),gR.set(t.id,n),e.appendChild(n)}return e}function MR(e){hR&&mR&&(hR.hidden=!e,mR.setAttribute(`aria-expanded`,String(e)))}function NR(){return!!hR&&!hR.hidden}function PR(){let e=E(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of iR){let n=DR(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>YR(t.id)),cR.set(t.id,n),e.appendChild(n)}return mR=DR(`More`,`⋯`),mR.setAttribute(`aria-expanded`,`false`),mR.addEventListener(`click`,()=>MR(!NR())),e.appendChild(mR),hR=jR(),e.appendChild(hR),e}function FR(e,t,n){let r=E(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),lR.set(e,r),r}function IR(){if(sR)return;dR=zL({onSelectSession:LR}),fd((e,t)=>{yR&&dR?.renderActivity(e,t)}),fR=nR({onBack:()=>YR(rR)}),pR=E(`div`,`phone-review`);let e=E(`div`,`phone-screens`),t={[rR]:dR.el,terminal:fR.el,review:pR};for(let n of iR)e.appendChild(FR(n.id,n.label,t[n.id]));for(let t of aR){let n=E(`div`,`phone-panel phone-${t.id}`);oR.set(t.id,n),e.appendChild(FR(t.id,t.label,n))}sR=E(`div`,`phone-shell`),sR.id=`phone-shell`,sR.append(e,PR()),document.body.appendChild(sR),AR(),window.visualViewport?.addEventListener(`resize`,ER),window.visualViewport?.addEventListener(`scroll`,ER),window.addEventListener(`popstate`,GR),document.addEventListener(`click`,e=>{NR()&&hR&&mR&&e.target instanceof Node&&(hR.contains(e.target)||mR.contains(e.target)||MR(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&NR()&&MR(!1)})}function LR(e){if(j.has(e)){if(!dR||!fR)throw Error(`Phone shell is not built`);Ag(e,`dormant-fallback`),jg(e),fR.show(e),YR(`terminal`)}}function RR(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:e}}function zR(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function BR(e){return zR(e)?e.glimmervoidNested===!0?2:1:0}function VR(e){return e===rR?0:vR.canGoBack?.(e)?2:1}function HR(e,t){return zR(history.state)===e&&BR(history.state)===(t?2:1)}function UR(){if(!yR||wR!==null)return;let e=ke.snapshot().phoneScreen||rR,t=VR(e);if(CR>t){wR=location.href,history.go(t-CR),CR=t;return}let n=CR===2;CR>0&&!HR(e,n)&&history.replaceState(RR(e,n),``),CR===0&&t>0&&(history.pushState(RR(e,!1),``),CR=1),CR===1&&t===2&&(history.pushState(RR(e,!0),``),CR=2)}function WR(){let e=zR(history.state);return e&&JR(e)?(CR=BR(history.state),e):(e&&history.replaceState(null,``),CR=0,rR)}function GR(e){if(!yR)return;if(wR!==null){history.replaceState(history.state,``,wR),wR=null,UR();return}let t=zR(e.state),n=t&&JR(t)?t:rR;CR=BR(e.state);let r=ke.snapshot().phoneScreen;CR<2&&n===r&&vR.canGoBack?.(r)&&vR.onBack?.(r),qR(n),UR()}function KR(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function qR(e){if(!mR||!fR)throw Error(`Phone shell is not built`);ke.dispatch(`setPhoneScreen`,e),MR(!1);for(let[t,n]of lR)n.hidden=t!==e;vR.onScreenShown?.(e),KR(cR,e);let t=gR.has(e);t&&mR.setAttribute(`aria-current`,`page`),t||mR.removeAttribute(`aria-current`),KR(gR,e),e===`terminal`?fR.reveal():fR.unview()}function JR(e){return lR.has(e)&&!_R.has(e)}function YR(e){sR&&JR(e)&&(qR(e),UR())}function XR(e){vR=e||{},aR=vR.panels||[]}function ZR({sessionId:e,linkedScreenId:t}={}){if(yR)return;if(IR(),!sR||!dR||!fR)throw Error(`Phone shell is not built`);yR=!0,sR.hidden=!1;for(let e of vR.headerControls||[])be(e,dR.topBarEl);eT(pR);for(let e of aR)be(e.el,oR.get(e.id)),e.el.hidden=!1;ER(),e&&fR.show(e);let n=WR();nz(),t&&JR(t)?YR(t):e&&n===rR?YR(`terminal`):(qR(n),UR())}function QR(){if(yR){if(!sR||!fR)throw Error(`Phone shell is not built`);yR=!1,fR.clear(),eT(null);for(let e of aR)xe(e.el);for(let e of vR.headerControls||[])xe(e);MR(!1),sR.hidden=!0,sR.removeAttribute(`data-keyboard`),TR(),CR>0&&history.go(-CR),CR=0,wR=null}}function $R(e){return!yR||!dR||!fR||!j.has(e)?!1:(LR(e),Lj(e))}function ez(){return yR}function tz(){return yR&&fR?fR.getSessionId():null}function nz(){if(!yR)return;if(!dR||!fR)throw Error(`Phone shell is not built`);sz(),dR.refresh(),fR.refresh(),ke.snapshot().phoneScreen===`terminal`&&!fR.getSessionId()&&YR(rR);let e=OR(cR.get(rR));e&&(e.hidden=dR.getAttentionCount()===0)}function rz(e){return yR?(LR(e),!0):!1}function iz(e){return!yR||!JR(e)?!1:(YR(e),!0)}function az(e,t){t&&_R.delete(e),t||_R.add(e);let n=gR.get(e);n&&(n.hidden=!t);let r=lR.get(e);r&&!t&&(r.hidden=!0),AR(),!t&&yR&&ke.snapshot().phoneScreen===e&&YR(rR)}function oz(e,t){uR.set(e,typeof t==`string`&&t?t:t===!0),AR()}function sz(){if(!fR)throw Error(`Phone shell is not built`);if(fR.getSessionId())return;let e=Mg();e&&(fR.show(e),jg(e,{rememberFocus:!1}))}function cz(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function lz(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 uz(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}var dz={minPx:220,maxPx:720},fz=16,pz=new Set,mz=0;function hz(e){let t=cs();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=os();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function gz(){for(let e of pz)e.isConnected?hz(e):pz.delete(e)}function _z(e,t){let n=E(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function vz(e){let t=E(`div`,`pr-queue-foot`);return e&&t.append(e),t}function yz({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=E(`div`,`pr-columns`),i=E(`div`,`pr-queue-pane`),a=E(`nav`,`pr-queue`);a.id=`pr-queue-${++mz}`,a.setAttribute(`aria-label`,e);let o=E(`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=Qm(16,16);s.append(Zm(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),s.append(Zm(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let c=Zm(`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`,()=>{ls(!cs()),gz()});let l=vz(null);i.append(_z(t,o),a,l);let u=E(`div`,`pr-queue-resizer`);u.setAttribute(`role`,`separator`),u.setAttribute(`aria-orientation`,`vertical`),u.setAttribute(`aria-label`,n),u.tabIndex=0;let d=E(`main`,`pr-detail-host`);return r.append(i,u,d),hz(r),pz.add(r),Ym({resizer:u,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:dz,keyStepPx:fz,getStoredWidth:os,setStoredWidth:ss}),{columns:r,queue:a,foot:l,detail:d}}var bz=1.2,xz=1.55,Sz=.12,Cz=523.25,wz=2,Tz=8,Y=(e,t,n)=>({semitone:e,startBeat:t,beats:n}),Ez={melody:[Y(7,4,.5),Y(11,4.5,.5),Y(12,5,3)],bass:[Y(-5,4,1),Y(-12,5,3)]},Dz=[{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,...Ez.melody],bass:[...e.bass,...Ez.bass]}));function Oz(e,t){return Cz*2**((e+t)/12)}function kz(e,t){let n=(e,n,r)=>e.map(e=>({frequency:Oz(e.semitone,t),startSeconds:xz+e.startBeat*Sz,durationSeconds:e.beats*Sz,waveform:n,gain:r}));return[...n(e.melody,`square`,.2),...n(e.melody,`triangle`,.5),...n(e.bass,`triangle`,.6)]}var Az=[{frequency:220,endFrequency:880,startSeconds:0,durationSeconds:.32,waveform:`triangle`,gain:.25},{frequency:160,endFrequency:45,startSeconds:bz,durationSeconds:.28,waveform:`sine`,gain:1},{frequency:1400,endFrequency:380,startSeconds:bz,durationSeconds:.06,waveform:`square`,gain:.12}];function jz(e){let t=Dz[e%Dz.length],n=Math.min(e*wz,Tz);return{peakGain:.1,tones:[...Az,...kz(t,n)]}}function Mz(e){return Math.round(Math.sqrt(2*e/780)*1e3)}function Nz(e,t,n=Math.random){return Math.round(e+n()*(t-e))}function Pz(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 Fz=.6,Iz=.25,Lz=1.6;function Rz(e){return Math.min(Fz+e*Iz,Lz)}var zz=[`var(--accent)`,`var(--state-running)`,`var(--state-idle)`,`var(--state-waiting)`,`var(--state-failed)`];function Bz(e,t=Math.random){let n=Nz(320,520,t),r=Nz(1800,2800,t);return[[`--confetti-start-x`,`${Nz(4,96,t)}%`],[`--confetti-x`,`${Nz(-140,140,t)}px`],[`--confetti-rise`,`${-Nz(20,55,t)}px`],[`--confetti-fall`,`${Nz(45,70,t)}vh`],[`--confetti-rise-ms`,`${n}ms`],[`--confetti-fall-ms`,`${r}ms`],[`--confetti-flight-ms`,`${n+r}ms`],[`--confetti-tilt`,`${Nz(0,180,t)}deg`],[`--confetti-spin`,`${Nz(-360,360,t)}deg`],[`--confetti-flutter-ms`,`${Nz(160,340,t)}ms`],[`--confetti-delay`,`${Nz(0,160,t)}ms`],[`--confetti-color`,zz[e%zz.length]]]}var Vz=`<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>`,Hz=`<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 Uz(){let e=D(`div`,`merge-bullseye-target`,Vz);return e.append(E(`span`,`merge-bullseye-ripple`)),e}function Wz(){let e=E(`div`,`merge-bullseye-dart-drift`),t=E(`div`,`merge-bullseye-dart-arc`),n=E(`div`,`merge-bullseye-dart-aim`);return n.append(D(`div`,`merge-bullseye-dart`,Hz)),t.append(n),e.append(t),e}function Gz(){let e=E(`div`,`merge-bullseye-range`),t=E(`div`,`merge-bullseye-track`);return t.append(Wz()),e.append(Uz(),t),e}var Kz={title:`BULLSEYE!`,buildScene:Gz},qz=6,Jz=30,Yz=-14,Xz=16;function Zz(e=Math.random){return[[`--crosshair-start-left`,`${Nz(qz,Jz,e)}%`],[`--crosshair-start-offset-y`,`${Nz(Yz,Xz,e)}px`]]}var Qz=`<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>`,$z=`<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>`,eB=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 3L8 8M21 3L16 8M3 21L8 16M21 21L16 16"/></svg>`;function tB(){let e=E(`div`,`merge-headshot-sweep`);le(e,Zz());let t=E(`div`,`merge-headshot-aim`);t.append(D(`div`,`merge-headshot-crosshair`,$z));let n=E(`div`,`merge-headshot-bob`);return n.append(t,D(`div`,`merge-headshot-hitmarker`,eB)),e.append(n),e}function nB(){let e=E(`div`,`merge-headshot-range`),t=E(`div`,`merge-headshot-track`);return t.append(tB()),e.append(D(`div`,`merge-headshot-target`,Qz),t),e}var rB={title:`HEADSHOT!`,buildScene:nB},iB=[`10`,`J`,`Q`,`K`,`A`],aB=19,oB=5,sB=9,cB=780,lB=70,uB=70,dB=35;function fB(e){let t=iB.length-1,n=e-t/2;return{offsetPx:n*aB,titleSpreadFraction:n/t,tiltDegrees:n*oB,bottomPx:sB-n**2,dealLeadMs:cB-e*lB,flipLeadMs:160+(t-e)*uB,waveDelayMs:e*dB}}function pB(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 mB(){return[[`--card-flip-ms`,`160ms`]]}var hB=`<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 gB(e,t){let n=E(`div`,`merge-flush-deal`);le(n,pB(fB(t)));let r=E(`div`,`merge-flush-hop`),i=E(`div`,`merge-flush-card`),a=E(`div`,`merge-flush-face`);return a.append(E(`span`,`merge-flush-rank`,e)),a.insertAdjacentHTML(`beforeend`,hB),i.append(E(`div`,`merge-flush-back`),a),r.append(i),n.append(r),n}function _B(){let e=E(`div`,`merge-flush-table`);return le(e,mB()),e.append(...iB.map(gB)),e}var vB={title:`ROYAL FLUSH!`,buildScene:_B},yB=[1,2,3,4],bB=14,xB=3,SB=3,CB=10,wB=20,TB=2,EB=28,DB=18,OB=.01,kB=1.5,AB=2200,jB=1,MB=120,NB=.35,PB=4,FB=65,IB=145;function LB(e){return Math.round(e/(Math.PI*DB)*360)}function RB(e){return wB-e*TB}function zB(e){return e.rowIndex*bB+e.depthIndex*xB}function BB(e,t,n){return Array.from({length:n},(r,i)=>e+(t-e)*i/(n-1))}function VB(){return yB.flatMap((e,t)=>Array.from({length:e},(n,r)=>({rowIndex:t,depthIndex:e-1-r})))}function HB(e,t){let n=Pz(BB(15,105,e),t),r=Pz(BB(FB,IB,e),t);return n.map((e,n)=>({angleDegrees:e+Nz(-4,PB,t),depthScalePercent:Math.round(r[n])}))}function UB(e,t,n){let r=Nz(240,380,n),i=t.angleDegrees*Math.PI/180,a=r*Math.cos(i),o=(r*Math.sin(i))**2/1560,s=Nz(15,45,n),c=Mz(o),l=Mz(o+s),u=c+l,d=Nz(540,1080,n),f=a>=0?1:-1,p=zB(e);return{depthIndex:e.depthIndex,launchAngleDegrees:t.angleDegrees,distanceFromHeadPinPx:p,layer:RB(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/NB)}}function WB(e=Math.random){let t=VB(),n=HB(t.length,e);return t.map((t,r)=>UB(t,n[r],e))}function GB(e){return[[`--pin-left`,`${e.distanceFromHeadPinPx}px`],[`--pin-raise`,`${e.depthIndex*SB}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 KB(){return RB(kB)}function qB(){return Math.max(...VB().map(zB))+CB}function JB(){let e=qB(),t=EB+e+DB-jB;return[[`--ball-follow-px`,`${MB}px`],[`--ball-follow-ms`,`${Math.round(MB/NB)}ms`],[`--ball-follow-spin`,`${LB(MB)}deg`],[`--ball-size`,`${DB}px`],[`--ball-approach-spin`,`${AB}deg`],[`--ball-impact-inset`,`${t}px`],[`--ball-layer`,String(KB())],[`--rack-right`,`${EB}px`],[`--rack-width`,`${e}px`],[`--pin-width`,`${CB}px`]]}function YB(e=Math.random){return e()>=OB?null:Wa[Math.floor(e()*Wa.length)].sprite}var XB=`<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 ZB(e){let t=E(`span`,`merge-strike-pin`);return t.append(D(`span`,`merge-strike-pin-arc`,XB)),le(t,GB(e)),t}function QB(){let e=YB();if(!e)return E(`span`,`merge-strike-ball`);let t=E(`span`,`merge-strike-ball is-animal`);return t.append(E(`span`,`nyan-sprite ${e}`)),t}function $B(){let e=E(`div`,`merge-strike-lane`);le(e,JB());let t=E(`div`,`merge-strike-rack`);t.append(...WB().map(ZB));let n=E(`div`,`merge-strike-track`);return n.append(QB()),e.append(t,n),e}var eV={title:`STRIKE!`,buildScene:$B},tV=20,nV=92,rV=23,iV=7,aV=-40;function oV(){let e=Mz(72),t=Mz(69),n=780*t/1e3;return{launchHeightPx:tV,peakHeightPx:nV,heightThroughRimPx:rV,heightLeavingNetPx:iV,heightOutOfCardPx:aV,riseMs:e,fallToRimMs:t,speedThroughRimPxPerSecond:n,netCatchMs:Math.round(32/n*1e3),dropMs:Mz(47)}}function sV(e=oV()){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 cV=`<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>`,lV=`<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 uV(){let e=E(`div`,`merge-swish-ball-drift`),t=E(`div`,`merge-swish-ball-arc`);return t.append(E(`span`,`merge-swish-ball`)),e.append(t),e}function dV(){let e=E(`div`,`merge-swish-court`);le(e,sV());let t=E(`div`,`merge-swish-track`);return t.append(uV()),e.append(D(`div`,`merge-swish-hoop-back`,cV),t,D(`div`,`merge-swish-hoop-front`,lV)),e}var fV=[eV,{title:`SWISH!`,buildScene:dV},Kz,rB,vB],pV=48,mV=5600,hV=20,gV=null,_V=[],vV=null,yV=!1,bV=0;function xV(e){let t=E(`span`,`merge-confetti-piece`),n=E(`span`,`merge-confetti-arc`);return n.append(E(`span`,`merge-confetti-paper`)),t.append(n),le(t,Bz(e)),t}function SV(e){let t=E(`p`,`merge-celebration-title`);return t.setAttribute(`aria-hidden`,`true`),Array.from(e).forEach((e,n)=>{let r=E(`span`,`merge-celebration-letter`,e);r.style.setProperty(`--letter-delay`,`${n*45}ms`),t.append(r)}),t}function CV(e,t){let n=t.firstElementChild,r=t.lastElementChild;n instanceof HTMLElement&&r instanceof HTMLElement&&(e.style.setProperty(`--celebration-title-width`,`${r.offsetLeft+r.offsetWidth-n.offsetLeft}px`),e.style.setProperty(`--celebration-title-center-y`,`${t.offsetTop+t.offsetHeight/2}px`))}function wV(e){let t=E(`div`,`merge-celebration-scene`);return t.setAttribute(`aria-hidden`,`true`),t.append(e.buildScene()),t}function TV(){return fV[Math.floor(Math.random()*fV.length)]}function EV(e){if(Ro())try{jv(jz(e))}catch{}}function DV(e){let t=E(`ul`,`merge-celebration-details`);for(let n of e)t.append(E(`li`,`merge-celebration-detail`,n));return t}function OV(e,t,n){gV?.remove(),EV(n);let r=E(`div`,`merge-celebration`);r.setAttribute(`role`,`status`);let i=E(`div`,`merge-celebration-card`),a=E(`div`,`merge-celebration-stage`),o=SV(t.title);a.append(o,E(`p`,`merge-celebration-message`,e.message),DV(e.detailLines),wV(t));let s=E(`div`,`merge-confetti`);s.style.setProperty(`--confetti-scale`,String(Rz(n)));for(let e=0;e<pV;e+=1)s.append(xV(e));i.append(s,a),r.append(i),document.body.append(r),CV(a,o),gV=r,window.setTimeout(()=>{r.remove(),gV===r&&(gV=null)},mV)}function kV(e){return yV?`playing`:e?`queued`:`empty`}function AV(){if(!vV)return;let e=_V.length>0;vV.tray.dataset.state=kV(e),vV.count.textContent=e?String(_V.length):``,vV.button.disabled=yV||!e}function jV(){let e=_V.shift();yV=e!==void 0,AV(),e&&(OV(e.text,e.scene,bV),bV+=1,window.setTimeout(jV,mV))}function MV(e,t,n){vV={tray:e,button:t,count:n},t.addEventListener(`click`,()=>{bV=0,jV()}),AV()}function NV(e,t=TV()){_V.push({text:e,scene:t}),_V.length>hV&&_V.shift(),AV()}var PV={MERGE:`a merge commit`,SQUASH:`squash and merge`,REBASE:`rebase and merge`},FV=new Set([`FAILURE`,`ERROR`]);function IV(e){return PV[e]}function LV(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&&FV.has(e.checks.state)?`Checks are failing`:e.stage===`ready`?null:`Not ready to merge yet`:`Closed`}function RV(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i)}}function zV(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=BV(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 BV(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`),RV(e,!!e.keepMergeable,t,n,o,r)}function VV(e){return e?.isKeepMergeableEnabled!==!1}function HV(e){return e?.isMergeQueueEnabled!==!1}var UV={one:`st`,two:`nd`,few:`rd`,other:`th`},WV=new Intl.PluralRules(`en-US`,{type:`ordinal`});function GV(e){return`${e}${UV[WV.select(e)]??`th`}`}function KV(e,t,n){return e===null?`Not queued`:t?`Repair pushed, waiting for you`:n?`Queued, the last merge failed and retries an hour later once it is ready`:`Queued, ${GV(e)} in line for this repository`}function qV(e,t,n=``,r=!0){let i=e.mergeQueuePosition??null;return RV(e,i!==null,t,n,KV(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}var JV=[`Needs you`,`Waiting`,`Ready to merge`,`Drafts`,`Merged today`],YV=[`Ready to merge`,`Needs you`,`Waiting`,`Drafts`,`Merged today`],XV={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`},ZV={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`},QV={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`},$V={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 eH(e){let t=rr.safeParse(e);return t.success?t.data:null}function tH(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 nH(e){return JV[e.rows.reduce((e,{pr:t})=>Math.min(e,JV.indexOf(XV[t.stage])),JV.length-1)]}function rH(e){let t=new Map(JV.map(e=>[e,{title:e,prs:[],rows:[]}]));for(let n of tH(e)){let e=t.get(nH(n));if(e)for(let t of n.rows)e.rows.push(t),e.prs.push(t.pr)}return YV.flatMap(e=>t.get(e)??[])}function iH(e){return ZV[e]}function aH(e){return QV[e]}function oH(e){return $V[e]}function sH(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 cH(e){return`${e} ${e===1?`approval`:`approvals`}`}function lH(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function uH(e){let t=e.reviewRequests.length>0?`Requested: ${lH(e)}`:`Approval required`;return e.approvals>0?`${t}, ${cH(e.approvals)}`:t}function dH(e){let t=e.approvals>0?cH(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 fH(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?dH(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:uH(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${lH(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function pH(e,t){return t?e.lastAuthor!==t:null}function mH(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function hH(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function gH(e,t){let n=pH(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 _H(e,t){return[...e.threads].sort((e,n)=>{let r=Number(pH(n,t)===!0)-Number(pH(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:mH(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:hH(e),lastActivityAt:e.lastActivityAt,waiting:gH(e,t)}))}function vH(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=>pH(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 yH(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 bH(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 xH={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 SH(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=xH[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 CH(e,t=null){if(e.state===`MERGED`)return[];let n=[sH(e),fH(e),vH(e,t),yH(e),bH(e)],r=e.autoRebase?[wH(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 wH(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 TH(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 EH(e,t=0){if(!e)return[];let n=lz(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}function DH(e){return`${e.repo}#${e.number}`.toLowerCase()}function OH(e){let t=new Map;for(let n of e)for(let e of n.links){let r=DH(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 kH(e,t){let n=e.flatMap(e=>e.prs);return t&&n.some(e=>e.key===t)?t:n[0]?.key??null}function AH(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 jH=3;function MH(e){if(e.length===1)return{message:`Merged ${e[0].key}`,detailLines:[e[0].title]};let t=e.slice(0,jH).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 NH={isVisible:!1,isDisabled:!0,statusText:``,tone:null},PH={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 FH(e,t){if(e.state!==`OPEN`)return NH;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,...PH[n.phase]};let r=LV(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 ${IV(e.mergeMethod)}`,tone:null}}function IH(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${IV(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function LH(e){let t=or.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 RH=null,zH=null,BH=null,VH=null,HH=null,UH=null,WH=null,GH=new Map,KH=new Set,qH=new Map,JH=new Map,YH=!1,XH=null,ZH={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>BV(e,t,n,r,Ed(e.keepMergeableAttempt?.at)),isFeatureEnabled:VV,save:async(e,t)=>{let n=await du(`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.`}},QH={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:qV,isFeatureEnabled:HV,save:async(e,t)=>{let n=await du(`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.`}},$H=6e4,eU=6e4,tU=`The server did not answer within ${$H/1e3} s. Check GitHub before trying again.`,nU=`${G} Check GitHub before trying again.`;function rU(e,t){let n=E(`div`,`reviews-refresh-control`),r=E(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);r.type=`button`;let i=E(`span`,`reviews-refresh-status`);i.setAttribute(`role`,`status`);let a=E(`p`,`my-pr-error reviews-retry-notice`);n.append(r,i);let o=null,s=!1,c=``,l=null;function u(){a.textContent=lz(o,Date.now()),a.hidden!==!o?.error&&(a.hidden=!o?.error);let e=a.isConnected&&!ve(t)&&!document.hidden&&a.getClientRects().length>0&&cz(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=uz(e,s,c),i.hidden=!i.textContent,u()}r.addEventListener(`click`,async()=>{if(!s){s=!0,c=``,d(o);try{let t=await du(`github-polling-refresh`,{lane:e},{timeoutMs:eU});t.type===`github-polling-refresh-result`&&(c=t.ok?`Refreshed.`:t.error??`Could not refresh from GitHub.`)}catch(e){c=Cu(e,eU)}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 iU(e,t,n,r){GH.set(e,{head:t,phase:n,text:r}),yU()}function aU(e){if(qH.has(e.key))return;let t=uu(`my-pr-merge`);if(!K({type:`my-pr-merge`,requestId:t,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){iU(e.key,e.headRefOid,`failed`,G);return}let n=window.setTimeout(()=>{qH.delete(e.key),iU(e.key,e.headRefOid,`failed`,tU)},$H);qH.set(e.key,{requestId:t,head:e.headRefOid,timer:n}),GH.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),yU()}function oU(e){let t=FH(e,GH.get(e.key));if(!t.isVisible)return null;let n=E(`div`,`my-pr-merge`),r=E(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=E(`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`,()=>{Xu({title:`Merge pull request`,message:IH(e),confirmLabel:`Merge`,onConfirm:()=>aU(e)})}),n.append(r,i),n}function sU(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(HH));if(!n.isVisible)return null;let r=E(`div`,`my-pr-merge`),i=E(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=E(`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),yU();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,Cu(n,q))}finally{t.pendingKeys.delete(e.key),yU()}}}),r.append(i,a),r}function cU(e,{hasGlyph:t}){let n=E(`span`,`my-pr-stage`);return n.dataset.tone=aH(e.stage),t&&n.append(ah(oH(e.stage),aH(e.stage))),n.append(iH(e.stage)),n}function lU(e,t){let n=E(`span`,`my-pr-requested`);n.append(E(`span`,null,`Requested`));let r=E(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=O({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,E(`span`,`my-pr-requested-names`,t.slice(11))),n}function uU(){if(!RH||!zH||BH?.isConnected)return;let e=yz({queueLabel:`My pull requests`,scopeTabs:zH,resizerLabel:`Resize pull request list`});BH=e.queue,VH=e.detail,RH.replaceChildren(e.columns),WH&&e.foot.append(WH.control)}function dU(e){if(!VH)return;if(!e){VH.replaceChildren(E(`p`,`pr-empty`,TH(HH)));return}let t=E(`article`,`pr-detail`),n=E(`div`,`pr-detail-heading`),r=E(`div`,`pr-detail-title`);r.append(de(`pr-link`,e.key,e.url),E(`h2`,null,e.title)),n.append(r,cU(e,{hasGlyph:!0})),t.append(n);for(let n of[ZH,QH]){let r=sU(e,n);r&&t.append(r)}let i=CH(e,HH?.viewer??null);if(i.length>0){let n=E(`section`,`pr-readiness-section`);n.append(E(`h3`,`pr-section-heading`,`Merge readiness`));let r=E(`ul`,`pr-readiness`);for(let t of i){let n=E(`li`,`pr-readiness-row`),i=E(`span`,`pr-readiness-value`);t.label===`Review`&&t.text.startsWith(`Requested: `)&&i.append(lU(e,t.text)),i.childNodes.length===0&&(i.textContent=t.text),n.append(ah(t.icon,t.tone),E(`span`,`pr-readiness-label`,t.label),i),r.append(n)}n.append(r);let a=oU(e);a&&n.append(a),t.append(n)}if(e.checks.failing.length>0){let n=E(`section`,`my-pr-failures`);n.append(E(`h3`,`pr-section-heading`,`Failing checks`));let r=E(`ul`,`my-pr-facts`);for(let t of e.checks.failing)r.append(E(`li`,null,t));n.append(r),t.append(n)}let a=SH(e);if(a.length>0){let e=E(`section`,`pr-readiness-section`);e.append(E(`h3`,`pr-section-heading`,`Reviews`));let n=E(`ul`,`pr-readiness`);for(let e of a){let t=E(`li`,`pr-readiness-row`),r=Date.parse(e.submittedAt??``),i=Number.isFinite(r)?`${e.text} ${Ed(r)}`:e.text,a=E(`span`,`my-pr-reviewer`);a.append(k([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),E(`span`,null,e.reviewer)),t.append(ah(e.icon,e.tone),a,E(`span`,`pr-readiness-value`,i)),n.append(t)}e.append(n),t.append(e)}let o=_H(e,HH?.viewer??null);if(o.length>0){let e=E(`section`,`my-pr-threads-section`);e.append(E(`h3`,`pr-section-heading`,`Unresolved threads`));let n=E(`ul`,`my-pr-threads`);for(let e of o){let t=E(`li`,`my-pr-thread`),r=E(`div`,`my-pr-thread-heading`);if(r.append(de(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=E(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(ah(e.waiting.icon,e.waiting.tone),e.waiting.text),r.append(t)}let i=E(`p`,`my-pr-thread-excerpt`);i.append(E(`strong`,null,e.author),` ${e.excerpt}`);let a=Date.parse(e.lastActivityAt),o=E(`p`,`my-pr-thread-meta`,Number.isFinite(a)?`${e.replySummary}, ${Ed(a)}`:e.replySummary);t.append(r,i,o),n.append(t)}e.append(n),t.append(e)}let s=E(`p`,`pr-detail-meta`);s.append(E(`span`,null,`Opened ${Ed(Date.parse(e.createdAt))}`),E(`span`,null,`${e.state===`MERGED`?`Merged`:`Updated`} ${Ed(Date.parse(e.state===`MERGED`?e.mergedAt??``:e.updatedAt))}`)),t.append(s),VH.replaceChildren(t)}function fU(){return[...JH].flatMap(([e,t])=>{let n=j.get(e);return!n||t.length===0?[]:[{id:e,title:Se(n)||e,links:t}]})}function pU(e){let t=e.dataset.sessionId??``,n=j.get(t),r=ue(e,`.session-row-name`);n&&(r.textContent=Se(n)||t);let i=xh(e,{glyph:ue(e,`.session-row-glyph`),label:ue(e,`.session-row-label`)},n?.currentState||w.DORMANT,n?.awaitingBackgroundTasks,n?.pendingPromptKind),a=`Focus session ${r.textContent}, ${i}`;e.title=a,e.setAttribute(`aria-label`,a)}function mU(e){let{row:t,refs:n}=yh(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,pU(t),t.addEventListener(`click`,()=>XH?.(e.id)),t}function hU(e){if(!e||e.length===0)return null;let t=E(`div`,`my-pr-session-focus`);return t.append(...e.map(mU)),t}function gU(){for(let e of BH?.querySelectorAll(`.my-pr-session-pill`)??[])pU(e)}function _U(){YH||(YH=!0,queueMicrotask(()=>{YH=!1,yU()}))}function vU(e){JH=e,_U()}function yU(){if(uU(),!BH)return;let e=HH?.prs??[],t=rH(e);UH=kH(t,UH);let n=document.activeElement instanceof HTMLElement&&BH.contains(document.activeElement)?document.activeElement.dataset.prKey:null,r=OH(fU()),i=t.filter(e=>e.rows.length>0).map(e=>{let t=E(`section`,`pr-queue-section`);t.append(E(`h3`,`pr-section-heading`,`${e.title} ${e.rows.length}`));for(let{pr:n,parentKey:i,depth:a}of e.rows){let e=E(`button`,`pr-queue-row`);e.type=`button`,e.dataset.prKey=n.key,i&&(e.style.paddingInlineStart=`${12+Math.min(a,6)*16}px`),e.setAttribute(`aria-current`,String(n.key===UH)),e.title=`${n.key}: ${iH(n.stage)}`;let o=E(`span`,`pr-queue-glyph`);o.append(ah(oH(n.stage),aH(n.stage)));let s=E(`span`,`pr-queue-top`);s.append(E(`strong`,`pr-queue-ref`,n.key),E(`span`,`pr-queue-title`,n.title));let c=E(`span`,`pr-queue-bottom`);i&&c.append(E(`span`,`my-pr-stage`,`Stacked on ${i}`));let l=n.state===`MERGED`?n.mergedAt:null,u=l?`merged ${Ed(Date.parse(l))}`:`opened ${Ed(Date.parse(n.createdAt))}`;c.append(cU(n,{hasGlyph:!1}),E(`span`,`pr-queue-elapsed`,u));let d=zV(n,ZH.isFeatureEnabled(HH),Ed(n.keepMergeableAttempt?.at));if(d){let e=E(`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`,()=>{UH=n.key;for(let e of BH?.querySelectorAll(`button[data-pr-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.prKey===UH));dU(n),document.documentElement.dataset.layout===`phone`&&VH?.scrollIntoView({block:`start`,behavior:`smooth`})}),t.append(e);let f=hU(r.get(DH(n)));f&&(i&&(f.style.paddingInlineStart=`${36+Math.min(a,6)*16}px`),t.append(f))}return t});if(i.length===0&&BH.replaceChildren(E(`p`,`pr-empty`,TH(HH))),i.length>0){let e=EH(HH,Date.now()).filter(e=>e.tone!==`error`).map(e=>E(`p`,e.tone===`error`?`my-pr-error`:`my-pr-note`,e.text));BH.replaceChildren(...e,...i)}WH&&(BH.prepend(WH.notice),WH.update(HH)),n&&[...BH.querySelectorAll(`button[data-pr-key]`)].find(e=>e.dataset.prKey===n)?.focus({preventScroll:!0}),dU(e.find(e=>e.key===UH))}function bU(e,t,n){return XH=n?.openTerminal??null,RH||(zH=t,RH=E(`div`,`pr-content`),e.append(RH),WH=rU(`my-prs`,RH),yU(),RH)}function xU(){return HH}function SU(e){let t=eH(e);if(!t)return;let n=AH(HH?.prs??null,t.prs);HH=t,yU(),CU(n)}function CU(e){let t=e.filter(e=>!KH.has(e.key));if(t.length!==0){for(let e of t)KH.add(e.key);NV(MH(t))}}function wU(e){if(!e){for(let[e,t]of qH)window.clearTimeout(t.timer),GH.set(e,{head:t.head,phase:`failed`,text:nU});qH.size!==0&&(qH.clear(),yU())}}function TU(e){let t=LH(e);if(!t)return;let n=qH.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),qH.delete(t.key),!t.ok){iU(t.key,n.head,`failed`,t.error||`The merge failed.`);return}if(iU(t.key,n.head,t.kind??`unconfirmed`,``),t.kind!==`merged`)return;let r=HH?.prs.find(e=>e.key===t.key);r&&CU([r])}var EU=nn.options.join(`|`),DU=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${EU})\*\*`;function OU(e){return[...e.matchAll(new RegExp(DU,`g`))].flatMap(e=>{let t=nn.safeParse(e[2]);return t.success?[t.data]:[]})}function kU(e){let t=new RegExp(String.raw`^${DU}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=nn.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function AU(e){let t=e.trimStart();return t.startsWith(`> [!NOTE]
139
+ > Automated review. Not written by a human.`)?t.slice(53).trim():e.trim()}var jU={"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 MU(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 NU={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`}},PU={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 FU(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?PU[t.state]:null;if(!t)return NU[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?NU[e.postedEvent]:PU[t.state]}var IU={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function LU(e){let{reason:t}=MU(e),n=IU[t];return n?{text:jU[t],icon:n}:null}function RU(e){return LU(e)?.text??null}var zU={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`},handReview:{tone:`warn`,icon:`fork`,meaning:`From a fork`}};function BU(e,t){let n=RU(t);return n?`${e}, ${n}`:e}function VU(e){if(mn(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===gW(e))}var HU={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function UU(e,t){let n=zU[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:BU(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:BU(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=VU(e)?FU(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=FU(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=LU(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&KU(e)?HU:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function WU(e){let t=e.viewerThreads;return t!==void 0&&t.total>0&&t.resolved===t.total}function GU(e){return e.status===`posted`&&KU(e)}function KU(e){if(!WU(e)||mn(e))return!1;let t=gW(e);return!(e.githubReviews??[]).some(e=>e.isViewer&&e.state===`APPROVED`&&e.commit===t)}function qU(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 JU(e){return`${e} ${e===1?`comment`:`comments`}`}function YU(e,t,n){let r=[`${qW(e.repo,e.number)}: ${e.title}`],i=`reviewedHead`in e?e.assessment?.goal.trim():``;if(i&&r.push(i),r.push(UU(e,t).meaning),n.opened&&r.push(`Opened ${n.opened}`),n.reviewed&&r.push(`Reviewed ${n.reviewed}`),n.posted&&r.push(`Posted ${n.posted}`),!(`reviewedHead`in e))return r.join(`
140
+ `);let a=qU(e.viewerThreads);a&&r.push(a);let o=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${cW(e.verdict)}, ${JU(o)}`);let s=wW(e);s&&r.push(`You ${uW[s.state]} at ${Xt(s.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(lG(e));let c=OW(e,{isViewerShown:t!==`posted`});for(let[e,t]of c.entries())r.push(DW(t.text,n.githubReviews?.[e]??null));return r.join(`
141
+ `)}function XU(e){if(e.ready.length+e.attention.length+e.handReview.length>0)return null;let t=e.inReview.length+e.queued.length;return t===0?`Nothing needs you right now.`:`Nothing needs you right now. ${t} ${t===1?`review is`:`reviews are`} still running.`}function ZU(e,t){if([...e.ready,...e.attention].filter(e=>e.key!==t).length>0)return{title:`New pull requests need you`,detail:`Pick one from the queue.`};let n=e.handReview.length;return n>0?{title:`Drafts all handled`,detail:`${n} ${n===1?`pull request needs`:`pull requests need`} review by hand.`}:{title:`All caught up`,detail:XU({...e,ready:[],attention:[]})??``}}function QU(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}function $U({action:e,pullRequest:t,warning:n,isActedSelected:r}){let i=bG(e),a=`${t}: ${QU(i)}`;return n.trim()?{statusText:i,shouldAdvance:!1,notice:{text:`${a} ${QU(n)}`,tone:`error`}}:{statusText:i,shouldAdvance:r,notice:null}}function eW(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 tW(e,t,n){return n?qW(e,t):`#${t}`}var nW={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},rW={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},iW=`lanes-team-review`,aW=`team-review-enabled`,oW=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),sW={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function cW(e){return sW[e]}var lW=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),uW=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),dW=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),fW=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 next poll reviews it again.`,"resolve-thread":`Thread resolved on GitHub`}),pW=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 mW(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=>_W(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[MU(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(_W(r).length>0||GU(r)){n.actionable.push(r);continue}let e=(r.status===`ready`||r.status===`stale`||r.status===`error`)&&!SW(r);e&&t.noReviewNeeded.push(r),r.status===`ready`&&!e&&n[MU(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 hW(e,t){return e.commit===t?e.isViewer||ln.has(e.state):!1}function gW(e){return e.liveHead??e.reviewedHead}function _W(e){return(e.threads??[]).filter(e=>!e.isNit&&!e.isResolved)}function vW(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 yW(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=vW(t,gW(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 bW=40;function xW(e,t){return e.split(`
142
+ `).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/bW)),0)>t}function SW(e){return _W(e).length>0?!0:mn(e)?!1:KU(e)?!0:!(e.githubReviews??[]).some(t=>hW(t,gW(e)))}function CW(e,t){let n=uW[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function wW(e){if(mn(e))return null;let t=(e.githubReviews??[]).filter(e=>e.isViewer&&ln.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!t?.commit||t.commit===gW(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 TW(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 ${Xt(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${i}, so this review covers what changed after ${r}.`:`${i}.`}function EW(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function DW(e,t){return t?`${e}, ${t}`:e}function OW(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:EW(t.state),text:CW(t,gW(e)),submittedAt:t.submittedAt}))}function kW(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 AW(e){return[...e.ready,...e.attention].map(e=>e.key)}function jW({capturedOrder:e,actedKey:t,groups:n}){let r=AW(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 MW(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 NW(e){return nW[e]}function PW(e){return rW[e]}function FW(e){let t=OU(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function IW(e){let t=FW(e);return nn.options.find(e=>t.includes(e))??null}function LW(e){return IW(e)!==`LOW`}var RW=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(`.`)),zW=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function BW(e){let t=zW.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:RW.has(n.slice(r+1).toLowerCase())}var VW=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function HW(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:BW(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function UW(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:HW(e.slice(t?.[0].length??0))}})}function WW(e){let t=AU(e),n=kU(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(VW)){let t=e.index??0;i.push(...UW(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(...UW(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function GW(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 KW(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 qW(e,t){return`${e}#${t}`}function JW(e){return e===`full`?`full`:`light`}function YW(e){return e.priorReviewedHead?`${JW(e.tier)} review of changes since ${Xt(e.priorReviewedHead)}`:`${JW(e.tier)} review`}function XW(e){return e.reasons.join(`, `)}function ZW(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 QW(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 $W(e){return e?{label:`Coverage`,preview:QW(e)}:{label:`Review audit`,preview:``}}var eG=`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.`,tG=new Set([`error`,`stale`,`discarded`,`posted`]);function nG(e){return tG.has(e)}function rG(e){let t=iG(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function iG(e){return oW[e]??String(e).toLowerCase()}function aG(e){return lW[e]??`dim`}function oG(e){return dW[e]??e}function sG(e,t){return`${qc(t-e.startedAt)} elapsed`}function cG(e,t){let n=[sG(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${qc(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function lG(e){return e.status===`stale`?`Out of date. Automatic review runs at the next poll after the configured wait. Queue review bypasses the wait.`:e.status===`discarded`?`Marked not mine. Not reviewed again until queued.`:e.error||e.summary||`The review failed.`}function uG(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function dG(e){return uG(e.path,e)}function fG(e){return uG(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function pG(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function mG(e){return{key:e,action:`discard`,body:``,comments:[]}}function hG(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 gG=Object.freeze({approve:`Approve and comment`,"approve-only":`Approve`,comment:`Comment`,discard:`Not mine`,requeue:`Queue review`,"resolve-thread":`Resolve`});function _G(e){return gG[e]}function vG(e){return e.status===`ready`?{footer:[`comment`,`approve-only`,`approve`],more:[`requeue`,`discard`]}:Sn(e)?{footer:[`approve-only`],more:[`requeue`]}:e.status===`error`||e.status===`stale`?{footer:[`requeue`],more:[`discard`]}:nG(e.status)?{footer:[`requeue`],more:[]}:{footer:[],more:[]}}function yG(e){return pW[e]}function bG(e){return fW[e]}function xG(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 SG(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 CG(e){return e?.configured&&e.reason||null}function wG(e){return Ec(mW(e).ready.map(e=>`${e.key}@${e.reviewedHead}`))}function TG(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${OW(e).map(e=>e.text).join(`, `)}`}function EG(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 DG(e,t){return!e||e.error!==t.error||e.nextAttemptAt!==t.nextAttemptAt||JSON.stringify(e.retry)!==JSON.stringify(t.retry)||e.isRefreshing!==t.isRefreshing||e.refreshNotice!==t.refreshNotice||JSON.stringify(e.team)!==JSON.stringify(t.team)||e.configured!==t.configured||e.reason!==t.reason||e.inFlight.map(e=>e.key).join(`
143
+ `)!==t.inFlight.map(e=>e.key).join(`
144
+ `)||JSON.stringify(e.handReview)!==JSON.stringify(t.handReview)||JSON.stringify(e.queued)!==JSON.stringify(t.queued)?!1:JSON.stringify(e.drafts)===JSON.stringify(t.drafts)}var OG=12e4,kG=`The server did not answer within ${OG/1e3} s. Check GitHub before trying again.`,AG=`${G} Check GitHub before trying again.`,jG=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,MG=`GitHub review`,NG=null,PG=null,FG=null,IG=null,LG=null,RG=null,zG=null,BG=null,VG=null,HG=null,UG=null,WG=null,GG=null,KG=null,qG=null,JG=new Map,YG=Od(()=>PG),XG=Od(()=>PG),ZG=Od(()=>PG),QG=new WeakMap,$G=new Map,eK=new Map,tK=new Map,nK=Oc({getAck:Ss,setAck:Cs,signature:()=>wG(NG),isLooking:()=>!ve(PG)});function rK(e){let t=NW(e),n=E(`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=Qm(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(Zm(`path`,{d:jG,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=Qm(9,11),i=e<t.filledCount;r.append(Zm(`path`,{d:jG,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function iK(e){let{verdict:t}=e,n=E(`span`,`pr-verdict-seal`);n.dataset.tone=aG(t);let r=Qm(20,20),i=PW(t);return r.append(Zm(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:i===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),i===`check`&&r.append(Zm(`path`,{d:`M6 10.5L8.7 13L14 7.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),i===`dot`&&r.append(Zm(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),i===`bar`&&r.append(Zm(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),i===`cross`&&r.append(Zm(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),n.append(r,E(`span`,null,rG(t))),n}function aK(){let e=Qm(16,16);return e.append(Zm(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(Zm(`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(Zm(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function oK(e){return de(`pr-link`,qW(e.repo,e.number),e.url)}function sK(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function cK(e,t){let n=sK(t);if(n===null)return null;let r=E(`span`,null,`${e}${e?` `:``}${Ed(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function lK(e){let t=QG.get(e);t&&(e.title=t(),e.setAttribute(`aria-label`,e.title))}function uK(){ZG.reset(),dK(PG)}gp(uK);function dK(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))QG.has(t)&&(lK(t),ZG.onTick(()=>lK(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=NG?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?wW(e):null;if(!n)continue;let r=()=>{t.textContent=TW(n,pK(n.submittedAt))};r(),ZG.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:Ed(n),i=mp()?DW(MG,r):DW(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),ZG.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??``;ZG.track(t,e,()=>`${n}${n?` `:``}${Ed(e)}`)}}}function fK(e,t,n,r=!0){let i=OW(e,{isViewerShown:r});if(i.length===0)return null;let a=E(`span`,t),o=k(i.map(e=>({login:e.login,tone:e.tone,title:DW(mp()?MG:e.text,pK(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=sK(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(o),a}function pK(e){let t=sK(e);return t===null?null:Ed(t)}function mK(e,t,n){let r=E(`span`,n);return r.append(O({login:e,cssPx:t}),E(`span`,`pr-author-login`,e)),r}function hK(e,t){return`${qW(e.repo,e.number)}\n${UU(e,t).meaning}`}function gK(e,t,n){let r=E(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key,r.setAttribute(`aria-current`,String(e.key===VG));let i=`reviewedHead`in e?wW(e):null;QG.set(r,()=>mp()?hK(e,t):YU(e,t,{opened:pK(e.prCreatedAt),reviewed:`reviewedHead`in e?pK(e.reviewedAt):null,posted:`reviewedHead`in e?pK(e.postedAt):null,viewerApproval:pK(i?.submittedAt),githubReviews:`reviewedHead`in e?OW(e,{isViewerShown:t!==`posted`}).map(e=>pK(e.submittedAt)):[]})),lK(r);let a=yK(e,n);if(t===`inReview`){let t=e,n=E(`span`,`pr-queue-elapsed`);YG.track(n,t.startedAt,()=>sG(t,Date.now())),a.append(n)}if(t===`queued`){let t=cK(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=cK(``,t.reviewedAt)??cK(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),a.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(a),_K(r,e.key),r;r.classList.remove(`pr-queue-row-quiet`);let o=UU(e,t),s=E(`span`,`pr-queue-glyph`);s.append(ah(o.icon,o.tone));let c=E(`span`,`pr-queue-bottom`);if(c.append(vK(o),mK(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=E(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(E(`span`,`pr-phase-label`,oG(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:fK(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),_K(r,e.key),r}function _K(e,t){e.addEventListener(`click`,()=>{VG=t,HG=null,SK(null);for(let e of LG?.querySelectorAll(`button[data-review-key]`)??[])e.setAttribute(`aria-current`,String(e.dataset.reviewKey===VG));aq(mW(NG)),ZG.reset(),dK(PG),document.documentElement.dataset.layout===`phone`&&zG?.scrollIntoView({block:`start`,behavior:`smooth`})})}function vK(e){let t=E(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function yK(e,t){let n=E(`span`,`pr-queue-top`);return n.append(E(`strong`,`pr-queue-ref`,tW(e.repo,e.number,t)),E(`strong`,`pr-queue-ref-compact`,tW(e.repo,e.number,!1)),E(`span`,`pr-queue-title`,e.title)),n}function bK(e,t){let n=E(`section`,`pr-queue-section`);n.append(E(`h3`,`pr-section-heading`,`Review by hand ${e.length}`));for(let r of e){let e=de(`pr-queue-row`,``,r.url);QG.set(e,()=>mp()?hK(r,`handReview`):YU(r,`handReview`,{opened:pK(r.prCreatedAt)})),lK(e);let i=UU(r,`handReview`),a=E(`span`,`pr-queue-glyph`);a.append(ah(i.icon,i.tone));let o=E(`span`,`pr-queue-bottom`);o.append(vK(i),mK(r.author,16,`pr-queue-author`)),e.append(a,yK(r,t),o),n.append(e)}return n}function xK({title:e,detail:t}){let n=E(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=E(`strong`,`pr-caught-up-title`);return r.append(ah(`ready`,`ok`),E(`span`,null,e)),n.append(r,E(`p`,`pr-caught-up-detail`,t)),n}function SK(e){UG=e,WG&&(WG.hidden=e===null,WG.textContent=e?.text??``,e&&(WG.dataset.tone=e.tone))}function CK(e,t,n,r){let i=E(`section`,`pr-queue-section`);i.append(E(`h3`,`pr-section-heading`,`${e} ${t.length}`));for(let e of t)i.append(gK(e,n,r));return i}var wK=`Open in session`,TK=`Preparing the branch and session.`;function EK(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 DK(e,t){let n=JG.get(e);n&&window.clearTimeout(n.timer),JG.set(e,{requestId:null,timer:0,text:t,tone:`error`}),EK(e,t,`error`)}function OK(e,t,n){if(JG.get(e)?.requestId)return;let r=uu(`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(()=>DK(e,`The server did not answer within ${OG/1e3} s.`),OG);JG.set(e,{requestId:r,timer:i,text:TK,tone:`busy`}),t.disabled=!0,n.dataset.tone=`busy`,n.textContent=TK}function kK(e){let t=E(`div`,`pr-session-open`),n=E(`button`,`pr-action pr-session-open-button`,wK);n.type=`button`;let r=JG.get(e.key);n.disabled=!!r?.requestId;let i=E(`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`,()=>OK(e.key,n,i)),t.append(n,i),t}function AK(e){let t=E(`div`,`pr-detail-heading`);t.dataset.signature=EG(e);let n=E(`div`,`pr-detail-title`);n.append(oK(e),E(`h2`,null,e.title));let r=E(`div`,`pr-detail-meta`);r.append(mK(e.author,20,`pr-detail-author`));let i=E(`span`,null,YW(e));i.title=XW(e),r.append(i);let a=cK(`Opened`,e.prCreatedAt);if(a&&r.append(a),`reviewedHead`in e){let t=cK(`Reviewed`,e.reviewedAt);t&&r.append(t);let n=cK(`Posted`,e.postedAt);n&&r.append(n)}let o=`reviewedHead`in e?fK(e,`pr-detail-github`,20):null;if(o&&r.append(o),t.append(n,r,kK(e)),`reviewedHead`in e){let n=qU(e.viewerThreads);if(n){let r=E(`p`,`pr-viewer-threads`,n);WU(e)&&(r.dataset.state=`all-resolved`),t.append(r)}}let s=`reviewedHead`in e?wW(e):null;if(s){let n=E(`p`,`pr-rereview-notice`,TW(s,pK(s.submittedAt)));n.dataset.reviewKey=e.key,t.append(n)}return t}function jK(e,t){let n=e.querySelector(`:scope > .pr-detail-heading`);if(!n||n.dataset.signature===EG(t))return e;let r=AK(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 MK(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}`}function NK(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(E(`code`,null,n.text));continue}let t=E(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function PK(e,t){return NK(e,HW(t))}function FK(e,t,n){let r=E(`div`,`pr-assessment-part`);return n&&(r.dataset.tone=n),r.append(E(`h4`,`pr-assessment-title`,e),t),r}function IK(e){let t=E(`ul`,`pr-assessment-list`);for(let n of e)t.append(PK(E(`li`,null),n));return t}function LK(e){let t=ZW(e.assessment);if(t.length===0)return[];let n=E(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(E(`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(PK(E(`p`,t),e.text))}return[n]}function RK(e){let t=E(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=E(`div`,`pr-verdict-line`);return n.append(iK(e)),t.append(n),e.assessment?(t.append(PK(E(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t):(t.append(E(`p`,`pr-verdict-legacy`,eG)),t)}function zK(e){let t=E(`details`,`pr-disclosure pr-coverage`),n=E(`summary`,`pr-disclosure-summary`),r=$W(e.assessment);n.append(E(`span`,`pr-disclosure-label`,r.label),E(`span`,`pr-disclosure-preview`,r.preview)),t.append(n);let{assessment:i}=e;return i?(i.checked.length>0&&t.append(FK(`What the review checked`,IK(i.checked))),i.gaps.length>0&&t.append(FK(`Not covered`,IK(i.gaps),`warning`)),t):(t.append(PK(E(`p`,`pr-verdict-summary`),e.summary)),t)}function BK(e){if(e.kind===`code`){let t=E(`pre`,`pr-comment-code`),n=E(`code`,null);return n.textContent=e.code,t.append(n),t}let t=E(`p`,`pr-comment-paragraph`);if(e.lead){let n=E(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(aK()),n.append(e.lead),t.append(n,` `)}return NK(t,e.segments)}function VK(e,t,n,r){let i=E(`article`,`pr-comment-card`),a=E(`input`,`pr-comment-checkbox`);a.type=`checkbox`,a.checked=n.has(t),a.setAttribute(`aria-label`,`Include comment on ${dG(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);let o=E(`details`,`pr-comment-content`),s=E(`summary`,`pr-comment-header`),c=WW(e.body),l=IW(e);l&&s.append(rK(l));let u=E(`span`,`pr-comment-location`,fG(e));u.title=dG(e),s.append(u),s.append(E(`span`,`pr-comment-preview`,GW(c.paragraphs))),o.append(s);let d=E(`div`,`pr-comment-paragraphs`);for(let e of c.paragraphs)d.append(BK(e));return o.append(d),o.open=l===`HIGH`||l===`CRITICAL`,i.append(a,o),i}var HK=`More review actions`,UK=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function WK(e,t,n,r){let i=AW(mW(NG));SK(null);let a=uu(`team-review-action`);if(!K({type:`team-review-action`,requestId:a,...n}))return!1;let o=window.setTimeout(()=>{tK.delete(t.key),r(!1,kG)},OG);return tK.set(t.key,{requestId:a,action:n.action,origin:e,capturedOrder:i,pullRequest:qW(t.repo,t.number),timer:o,settle:r}),!0}function GK(e){let t=E(`footer`,`pr-footer`),n=JK(`discard`,()=>{tK.has(e.key)||(n.disabled=!0,i.dataset.tone=`busy`,i.textContent=yG(`discard`),!WK(`other`,e,mG(e.key),a)&&a(!1,G))}),r=tK.has(e.key);n.disabled=r;let i=E(`span`,`pr-action-status`,r?yG(`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||SK({text:`${qW(e.repo,e.number)}: ${r}`,tone:`error`})};return t.append(n,i),t}var KK=0;function qK(e,t){let n=E(`div`,`pr-detail-more`),r=E(`button`,`review-icon-button review-more-button`);r.type=`button`,r.title=HK,r.setAttribute(`aria-label`,HK),r.setAttribute(`aria-haspopup`,`menu`),r.setAttribute(`aria-expanded`,`false`),r.append(rh(nh)),KK+=1;let i=E(`div`,`review-more-menu`);i.id=`pr-more-menu-${KK}`,i.setAttribute(`role`,`menu`),i.setAttribute(`aria-label`,HK),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=E(`button`,`review-btn`,_G(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 JK(e,t){let n=E(`button`,`pr-action`,_G(e));return n.type=`button`,n.dataset.action=e,n.addEventListener(`click`,()=>t(e)),n}function YK(e,t){e.querySelector(`:scope > .pr-detail-heading > .pr-detail-title`)?.append(t)}function XK(e){let t=E(`article`,`pr-detail`),n=E(`div`);n.dataset.reviewThreads=``,t.append(AK(e),...LK(e),n,RK(e)),eq(t,e);let r=E(`section`,`pr-posts`);r.setAttribute(`aria-label`,`Inline comments`);let i=E(`div`,`pr-posts-heading`);i.append(E(`h3`,null,`Inline comments`),E(`span`,null,String(e.comments.length))),r.append(i);let a=E(`details`,`pr-disclosure`),o=E(`summary`,`pr-disclosure-summary`),s=E(`span`,`pr-disclosure-preview`);o.append(E(`span`,`pr-disclosure-label`,`Review body`),s),a.append(o);let c=E(`textarea`,`pr-body-input`);c.setAttribute(`aria-label`,`Review body`),c.value=e.body,c.rows=Math.min(10,Math.max(3,e.body.split(`
145
+ `).length+1)),c.spellcheck=!0;let l=()=>{s.textContent=AU(c.value).split(/\r?\n/).map(e=>e.trim()).find(Boolean)||`No review body`};c.addEventListener(`input`,l),l(),a.append(c);let u=E(`details`,`pr-disclosure`);u.append(E(`summary`,`pr-disclosure-summary`,`Add a note`));let d=E(`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)=>LW(e)?[t]:[])),p=E(`footer`,`pr-footer`),m=E(`span`,`pr-action-status`);m.setAttribute(`role`,`status`),m.setAttribute(`aria-live`,`polite`);let h=()=>{tK.has(e.key)||m.dataset.tone===`ok`||(m.textContent=``,delete m.dataset.tone)};for(let[t,n]of e.comments.entries())r.append(VK(n,t,f,h));t.append(r,a,u,zK(e));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(tK.has(e.key))return;_(!0),m.dataset.tone=`busy`,m.textContent=yG(t);let n=e.comments.filter((e,t)=>f.has(t));WK(`ready`,e,hG(e,t,pG(d.value,c.value),n),v)||v(!1,G)},b=vG(e),x=b.footer.map(e=>JK(e,y)),S=qK(b.more,y);return g.push(...x,...S.controls),YK(t,S.element),p.append(...x,m),t.append(p),{signature:TG(e),element:t,settle:v}}function ZK(e){let t=$G.get(e.key);if(t&&(tK.has(e.key)||t.signature===TG(e)))return eq(t.element,e),jK(t.element,e);let n=XK(e);return $G.set(e.key,n),n.element}function QK(e,t){let n=E(`article`,`pr-detail`),r=E(`div`,`pr-detail-heading`),i=E(`div`,`pr-detail-title`);i.append(oK(e),E(`h2`,null,e.title));let a=E(`div`,`pr-detail-meta`);a.append(mK(e.author,20,`pr-detail-author`));let o=cK(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,kK(e)),n.append(r,E(`p`,`pr-attention-detail`,xG(t)),GK(e)),n}function $K(e){let t=E(`article`,`pr-detail`);t.append(AK(e));let n=E(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=E(`ol`,`pr-progress-tracker`);for(let t of KW(e.phase)){let e=E(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(E(`span`,`pr-progress-bar`),E(`span`,null,t.label)),r.append(e)}let i=E(`div`,`pr-progress-text`);XG.track(i,e.startedAt,()=>cG(e,Date.now())),n.append(r,i),t.append(n);let a=E(`section`,`pr-steps`);a.append(E(`h3`,null,`Latest agent steps`));let o=E(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=E(`li`,`pr-step`),r=E(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(E(`span`,`pr-step-at`,Jc(e.startedAt,t.at)),E(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,GK(e)),t}function eq(e,t){if(tK.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(...nq(t)),n.dataset.reviewThreads=r)}function tq(e,t,n,r){let i=E(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(E(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!xW(e,t?3:8))return i;let a=E(`details`,`pr-thread-disclosure`);return a.append(E(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),E(`p`,`pr-thread-body`,e)),n&&a.append(de(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function nq(e){let t=yW(e);if(t.length===0)return[];let n=E(`section`,`my-pr-threads-section`);n.append(E(`h3`,`pr-section-heading`,`Answered threads`));let r=E(`div`,`my-pr-threads`);for(let n of t){let t=E(`div`,`my-pr-thread pr-thread-card`),i=E(`div`,`my-pr-thread-heading pr-thread-heading`),a=E(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(de(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(E(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(E(`div`,`my-pr-thread-meta`,`Your comment`),tq(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let o=E(`div`,`pr-detail-meta pr-thread-reply-meta`);o.append(E(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let s=cK(``,n.thread.lastReplyAt);s&&o.append(s);let c=E(`span`,`pr-action-status`);c.setAttribute(`role`,`status`);let l=E(`button`,`pr-action`,`Resolve`);l.type=`button`,l.disabled=!n.canResolve||tK.has(e.key);let u=(e,t)=>{l.disabled=e||!n.canResolve,c.textContent=t,c.dataset.tone=e?`ok`:`error`};l.addEventListener(`click`,()=>{tK.has(e.key)||(l.disabled=!0,c.textContent=yG(`resolve-thread`),!WK(`other`,e,hG(e,`resolve-thread`,``,[],n.thread.id),u)&&u(!1,G))}),t.append(o),n.thread.lastReplyBody&&t.append(tq(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let d=E(`footer`,`pr-thread-footer`);d.append(c,l),t.append(d),n.thread.resolveError&&t.append(E(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function rq(e){let t=E(`article`,`pr-detail`);if(t.append(AK(e),...LK(e),...nq(e)),e.status===`posted`&&t.append(RK(e),zK(e)),e.status!==`posted`&&t.append(E(`p`,`pr-attention-detail`,lG(e))),!nG(e.status))return eK.set(e.key,{signature:MK(e),element:t,settle:()=>{}}),t;let n=E(`footer`,`pr-footer`),r=vG(e),i=E(`span`,`pr-action-status`,r.footer.includes(`approve-only`)?UK:``);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(!tK.has(e.key)){for(let e of a)e.disabled=!0;i.dataset.tone=`busy`,i.textContent=yG(t),!WK(`other`,e,hG(e,t,``,[]),o)&&o(!1,G)}},c=r.footer.map(e=>JK(e,s));if(a.push(...c),r.more.length>0){let e=qK(r.more,s);a.push(...e.controls),YK(t,e.element)}return n.append(...c,i),t.append(n),eK.set(e.key,{signature:MK(e),element:t,settle:o}),t}function iq(e){if(!nG(e.status)&&yW(e).length===0)return rq(e);let t=eK.get(e.key);return t&&(tK.has(e.key)||t.signature===MK(e))?jK(t.element,e):rq(e)}function aq(e){if(!zG)return;if(VG=MW(e,VG,HG!==null),!VG){if(HG!==null){let t=HG.actedKey;t&&![...e.ready,...e.attention].some(e=>e.key===t)&&(HG={actedKey:null}),zG.replaceChildren(xK(ZU(e,HG.actedKey))),GG=null;return}zG.replaceChildren(),GG=null;return}let t=e.ready.find(e=>e.key===VG&&(_W(e).length>0||GU(e)));if(t&&t.status!==`ready`){let e=`threads:${MK(t)}`,n=iq(t);if(GG===e&&zG.firstElementChild===n)return;zG.replaceChildren(n),GG=e;return}let n=[...e.ready,...e.noReviewNeeded].find(e=>e.key===VG&&e.status===`ready`);if(n){let e=`ready:${TG(n)}`,t=ZK(n);if(GG===e)return;zG.replaceChildren(t),GG=e;return}let r=e.inReview.find(e=>e.key===VG);if(r){XG.reset(),zG.replaceChildren($K(r)),GG=`inReview:${r.key}`;return}let i=e.queued.find(e=>e.key===VG);if(i){let t=`queued:${i.key}:${e.inReview.length}`;if(GG===t)return;zG.replaceChildren(QK(i,e.inReview.length)),GG=t;return}let a=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===VG);a&&(zG.replaceChildren(iq(a)),GG=`${a.status}:${a.key}`)}function oq(){let e=E(`p`,`pr-empty`,SG(NG));return NG&&!NG.configured&&e.append(` `,of(iW,aW,`Open Team review settings`)),e}function sq(){let e=CG(NG);return e?[E(`p`,`my-pr-note`,e)]:[]}function cq(e){for(let t of[...$G.keys()])e.has(t)||tK.has(t)||$G.delete(t);let t=new Set(NG?.drafts.filter(e=>nG(e.status)).map(e=>e.key)??[]);for(let e of eK.keys())t.has(e)||tK.has(e)||eK.delete(e)}function lq(){if(!PG||!FG||LG?.isConnected)return;let e=yz({queueLabel:`Review queue`,scopeTabs:FG,resizerLabel:`Resize review queue`});LG=e.queue,WG=E(`p`,`pr-action-status pr-action-notice`),WG.setAttribute(`role`,`status`),WG.setAttribute(`aria-live`,`polite`),zG=E(`div`,`pr-detail-body`),e.detail.append(WG,zG),SK(UG),IG&&e.foot.append(IG.control),PG.replaceChildren(e.columns),GG=null,RG=null}function uq(e){if(!e)return;e.querySelector(`.pr-team-chip`)?.remove();let t=NG?.team;if(!t)return;let n=E(`span`,`pr-team-chip`);n.append(O({login:t.slug,url:t.avatarUrl,cssPx:16}),E(`span`,null,t.name)),e.insertBefore(n,e.querySelector(`.pr-queue-toggle`))}function dq(){let e=document.activeElement;return!(e instanceof HTMLElement)||!LG?.contains(e)?null:e.dataset.reviewKey??null}function fq(e){e&&LG&&[...LG.querySelectorAll(`button[data-review-key]`)].find(t=>t.dataset.reviewKey===e)?.focus({preventScroll:!0})}function pq(){if(!PG)return;let e=dq(),t=mW(NG);if(cq(new Set([...t.ready,...t.noReviewNeeded].map(e=>e.key))),ZG.reset(),!NG?.configured||!kW(t)&&HG===null){YG.reset(),XG.reset();let e=_z(FG);uq(e),PG.replaceChildren(e,...IG?[IG.notice]:[],...sq(),oq(),vz(IG?.control??null)),IG?.update(NG),LG=null,RG=null,zG=null,WG=null,BG=null,GG=null;return}if(lq(),!LG)return;uq(PG.querySelector(`.pr-queue-head`)),VG=MW(t,VG,HG!==null);let n=eW(t),r=JSON.stringify([t,n,VG,CG(NG)]);if(r===RG){IG?.update(NG),aq(t),dK(PG);return}RG=r,YG.reset();let i=[],a=XU(t);a&&i.push(xK({title:`All caught up`,detail:a})),t.ready.length&&i.push(CK(`Ready`,t.ready,`ready`,n)),t.inReview.length&&(BG=CK(`In review`,t.inReview,`inReview`,n),i.push(BG)),t.queued.length&&i.push(CK(`Queued`,t.queued,`queued`,n)),t.noReviewNeeded.length&&i.push(CK(`Already reviewed`,t.noReviewNeeded,`settled`,n)),t.handReview.length&&i.push(bK(t.handReview,n)),t.attention.length&&i.push(CK(`Needs attention`,t.attention,`attention`,n)),t.posted.length&&i.push(CK(`Waiting on author`,t.posted,`posted`,n)),t.discarded.length&&i.push(CK(`Not mine`,t.discarded,`discarded`,n)),LG.replaceChildren(...IG?[IG.notice]:[],...sq(),...i),IG?.update(NG),fq(e),aq(t),dK(PG)}function mq(){KG&&KG(nK.refresh())}function hq(){nK.acknowledge(),mq()}function gq(e){KG=e,mq()}function _q(e,t,n){return qG=n?.openTerminal??qG,PG||(FG=t,PG=E(`div`,`pr-content`),e.append(PG),IG=rU(`team-review`,PG),YG.ensure(),XG.ensure(),ZG.ensure(),pq(),PG)}function vq(e){let t=Nn.safeParse(e);if(!t.success)return;let n=NG;NG=t.data,!(DG(n,t.data)&&yq())&&(pq(),mq())}function yq(){if(!NG||!BG?.isConnected)return!1;YG.reset(),ZG.reset();let e=dq(),t=mW(NG),n=CK(`In review`,t.inReview,`inReview`,eW(t));return BG.replaceWith(n),BG=n,fq(e),t.inReview.some(e=>e.key===VG)&&aq(t),dK(PG),!0}function bq(e){let t=e.key;if(!t)return;let n=JG.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?DK(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),JG.delete(t),EK(t,``,null),qG?.(e.sessionId)))}function xq(e){if(e)return;for(let[e,t]of JG)t.requestId&&DK(e,G);let t=[...tK.values()];tK.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,AG)}function Sq(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=tK.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),tK.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:bG(n.action)),eK.delete(t.key),GG=null,t.ok===!0&&pq();return}let r=(n.origin===`ready`?$G:eK).get(t.key);if(t.ok===!0){n.origin===`other`&&eK.delete(t.key);let e=$U({action:n.action,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:VG===t.key});if((r?.settle??n.settle)?.(!0,e.statusText),(e.notice||e.shouldAdvance)&&SK(e.notice),!e.shouldAdvance)return;VG=jW({capturedOrder:n.capturedOrder,actedKey:t.key,groups:mW(NG)}),VG===null&&(HG={actedKey:t.key}),pq()}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}var Cq=new Map,wq={OPEN:0,MERGED:1,CLOSED:2};function Tq(e,t){return t?t.configured?t.error?e:new Map(t.prs.map(e=>[DH(e),e])):Cq:e}function Eq(e){return e?wq[e.state]:wq.OPEN}function Dq(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:Kp(void 0)};let i=aH(t.stage);return{key:n,text:r,url:t.url,hoverText:`${e.repo}: ${t.title} (${iH(t.stage)})`,look:{icon:oH(t.stage),tone:i},tier:Kp(i)}}function Oq(e,t){let n=e.map(e=>({link:e,pr:t.get(DH(e))}));return n.sort((e,t)=>Eq(e.pr)-Eq(t.pr)||t.link.linkedAt-e.link.linkedAt),n.map(({link:e,pr:t})=>Dq(e,t))}var kq=new Map,Aq=new Map,jq=null;function Mq(e){return document.querySelectorAll(`[data-pr-chips-for="${CSS.escape(e)}"]`)}function Nq(e){return Oq(kq.get(e)??[],Aq).map(e=>({...e,className:`session-pr-chip`,onActivate:()=>xm(e.url)}))}function Pq(e,t){let n=oh(e,{className:e.className,linkUrl:e.url,onActivate:e.onActivate});n.setAttribute(`aria-label`,`Open pull request ${e.key}`);let r=E(`button`,`session-pr-chip-unlink`);r.append(rh($m)),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(),Xu({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:()=>{Pg(t,{type:`unlink-session-pr`,id:t,key:e.key})}})});let i=E(`span`,`session-pr-chip-item`);return i.append(n,r),i}function Fq(e,t){e.dataset.prChipsFor=t,dh(e,Nq(t),e=>Pq(e,t))}function Iq(e){for(let t of e){let e=t.dataset.prChipsFor;e&&Fq(t,e)}vh()}function Lq(e,t){let n=Gn.shape.links.safeParse(t??[]);kq.set(e,n.success?n.data:[]),Iq(Mq(e)),vU(kq)}function Rq(e){kq.delete(e),vU(kq)}function zq(){let e=xU();if(e===jq)return;jq=e;let t=Tq(Aq,e);t!==Aq&&(Aq=t,Iq(document.querySelectorAll(`[data-pr-chips-for]`)))}var Bq=null,Vq=new Set;function Hq(){Bq?.setAttribute(`aria-pressed`,String(!Ro()))}function Uq(e){zo(e),Hq();for(let t of Vq)t(e)}function Wq(e){Vq.add(e)}function Gq(e){Bq=e,Hq(),e.addEventListener(`click`,()=>Uq(!Ro()))}var Kq={mine:`Mine`,run:`Run`,cancel:`Cancel`},qq={mine:`Mining merged pull requests.`,run:`Starting the run.`,cancel:`Cancelling the run.`},Jq=null,Yq=null,Xq=null,Zq=!0,Qq=new Map,$q=new Map;function eJ(e){return e===null?`n/a`:`${Math.round(e*100)}%`}function tJ(e){if(e===null)return`n/a`;let t=Math.round(e*100);return t>0?`+${t}`:String(t)}function nJ(e,t){Xq?.({type:`benchmark-action`,requestId:uu(`benchmark`),suiteId:e,action:t})===!0?(Qq.set(e,t),$q.set(e,qq[t]),cJ()):($q.set(e,G),cJ())}function rJ(e,t,n){let r=E(`button`,`bench-action-button`,Kq[t]);return r.type=`button`,r.disabled=n,r.addEventListener(`click`,()=>nJ(e.id,t)),r}function iJ(e){let t=Yq?.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 aJ(e){let t=E(`td`,`bench-score`,eJ(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 oJ(e){let t=e.armIds.filter(t=>t!==e.baselineArm),n=E(`table`,`bench-table`),r=E(`tr`);r.append(E(`th`,null,`Case`),...e.armIds.map(t=>E(`th`,null,t===e.baselineArm?`${t} (baseline)`:t))),r.append(...t.map(e=>E(`th`,null,`${e} vs baseline`))),n.append(r);for(let r of e.rows){let i=E(`tr`);i.append(E(`td`,`bench-case`,r.caseId),...e.armIds.map(e=>aJ(r.arms[e]))),i.append(...t.map(e=>E(`td`,`bench-delta`,tJ(r.deltaVsBaseline[e]??null)))),n.append(i)}let i=[...new Set(e.armIds.flatMap(t=>Object.keys(e.totals[t]?.recallByTag??{})))].sort(),a=E(`tr`,`bench-total`);a.append(E(`td`,`bench-case`,`Paired recall`),...e.armIds.map(t=>aJ(e.totals[t]))),n.append(a);for(let t of i){let r=E(`tr`,`bench-total`);r.append(E(`td`,`bench-case`,`Recall, ${t}`),...e.armIds.map(n=>E(`td`,`bench-score`,eJ(e.totals[n]?.recallByTag[t]??null)))),n.append(r)}return n}function sJ(e){let t=E(`div`,`bench-suite`),n=Yq?.inFlight?.suiteId===e.id,r=!!Yq?.inFlight&&!n,i=Qq.has(e.id)||!Zq,a=E(`div`,`bench-summary`);a.append(E(`span`,`bench-suite-title`,e.title),ge(`bench`,e.caseCount===1?`case`:`cases`,String(e.caseCount)),ge(`bench`,e.candidateCount===1?`candidate`:`candidates`,String(e.candidateCount)),ge(`bench`,`arms`,String(e.armIds.length))),t.append(a);let o=E(`div`,`bench-controls`),s=Yq?.configured===!0&&e.error===null;o.append(rJ(e,`mine`,!s||i||n),rJ(e,`run`,!s||i||n||r||e.caseCount===0),rJ(e,`cancel`,i||!n));let c=E(`span`,`bench-status`,(Zq?``:`Not connected to the server. Reconnecting.`)||iJ(e)||$q.get(e.id)||``);if(c.setAttribute(`role`,`status`),o.append(c),t.append(o),e.error)return t.append(E(`p`,`bench-error`,e.error)),t;let l=e.latestReport;return l?(t.append(E(`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(oJ(l)),t):(t.append(E(`p`,`bench-empty`,e.caseCount===0?`Move approved candidates into the cases folder, then choose Run.`:`No run yet.`)),t)}function cJ(){if(!Jq)return;Jq.textContent=``;let e=he(`bench`,`Benchmarks`,`Suites from the benchmarks folder of the Glimmervoid home, one run at a time.`);if(Jq.append(e),!Yq)Jq.append(E(`p`,`bench-empty`,`Waiting for the server.`));else if(!Yq.configured)Jq.append(E(`p`,`bench-empty`,Yq.reason||`Benchmarks are off.`));else if(Yq.suites.length===0)Jq.append(E(`p`,`bench-empty`,`No suites yet. Create a folder holding suite.json under benchmarks in the Glimmervoid home.`));else for(let e of Yq.suites)Jq.append(sJ(e))}function lJ(e){Xq=e}function uJ(e){return Jq||(Jq=E(`div`,`bench-content`),e.append(Jq),cJ(),Jq)}function dJ(e){if(Zq=e,!e){for(let e of Qq.keys())$q.delete(e);Qq.clear()}cJ()}function fJ(e){Yq=e,cJ()}function pJ(e){Qq.delete(e.suiteId);let t=Yq?.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.`};$q.set(e.suiteId,e.ok?n[e.action]:e.error||`The server refused the action.`),cJ()}function mJ(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function hJ(e,t){return t===`all`||e.sources.includes(t)}function gJ(e){return{all:e.length,me:e.filter(e=>hJ(e,`me`)).length,team:e.filter(e=>hJ(e,`team`)).length,project:e.filter(e=>hJ(e,`project`)).length}}function _J(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!hJ(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 vJ(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 yJ(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function bJ(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 xJ(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 SJ(e,t){let n=xJ(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}var CJ=45e3,wJ=`The server did not answer within ${CJ/1e3} s.`,TJ=`Select the issue to load its description.`,EJ=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],DJ={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},OJ=null,kJ=null,AJ=null,jJ=null,MJ=null,NJ=null,PJ=null,FJ=null,IJ=null,LJ=null,RJ=new Map,zJ=!1,BJ=null,VJ=null,HJ=new Map,UJ=new Map,WJ=new Map,GJ=new Map,KJ=new Map;function qJ(e){return`${e.key}:${e.updatedAt}`}function JJ(e){return e.sessionId?j.get(e.sessionId):void 0}function YJ(e,t,n){let r=JJ(t),i=r?.currentState??w.DORMANT,a=pe(i,r?.awaitingBackgroundTasks),o=r?`Session: ${a.label}`:`No session yet`,s=n?`${a.glyph} ${a.label}`:a.glyph;(e.dataset.state!==i||e.title!==o||e.textContent!==s)&&(e.dataset.state=i,e.title=o,e.setAttribute(`aria-label`,o),e.textContent=s)}function XJ(e,t=!1){let n=E(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return YJ(n,e,t),n}function ZJ(e){let t=JJ(e);return t?Se(t):`none yet`}function QJ(e){return[...HJ.values()].some(t=>t.issueKey===e.key)}function $J(e){let t=HJ.get(e);t&&(HJ.delete(e),UJ.set(t.issueKey,wJ),cY())}function eY(e){let t=HJ.get(e);return t?(clearTimeout(t.timeoutHandle),HJ.delete(e),t):null}function tY(e){let t=qJ(e);if(GJ.has(t)||[...WJ.values()].some(e=>e.cacheKey===t))return;let n=uu(`issue-detail`);KJ.delete(t),VJ?.({type:`issue-detail`,requestId:n,repo:e.repo,issueNumber:e.number})?WJ.set(n,{cacheKey:t,timeoutHandle:setTimeout(()=>{WJ.delete(n),KJ.set(t,`${wJ} ${TJ}`),cY()},CJ)}):KJ.set(t,`${G} ${TJ}`)}function nY(e){let t=e.projectId;if(!t||JJ(e)||QJ(e))return;let n=uu(`open-issue-session`);VJ?.({type:`open-issue-session`,requestId:n,projectId:t,repo:e.repo,issueNumber:e.number})?(HJ.set(n,{issueKey:e.key,issueNumber:e.number,timeoutHandle:setTimeout(()=>$J(n),CJ)}),UJ.set(e.key,`Opening session.`),cY()):(UJ.set(e.key,G),cY())}function rY(e){let t=E(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===IJ));let n=E(`span`,`pr-queue-top`);n.append(E(`span`,`pr-queue-ref`,`#${e.number}`),E(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=E(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(E(`span`,`issues-why`,`you`)),r.append(E(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests)r.append(E(`span`,`issues-row-pr`,`PR #${t.number}`));let i=E(`span`,`pr-queue-elapsed`,xJ(e.updatedAt,Date.now()));return i.dataset.issueAge=e.updatedAt,r.append(i),t.append(XJ(e),n,r),t.addEventListener(`click`,()=>{IJ=e.key,OJ&&(OJ.dataset.detailOpen=`true`),tY(e),uY(),jJ&&(jJ.scrollTop=0)}),t}function iY(e,t,n){let r=E(`dd`);r.append(...n),e.append(E(`dt`,null,t),r)}function aY(e){let t=E(`footer`,`pr-footer issues-detail-footer`),n=JJ(e);if(n&&e.sessionId){let n=e.sessionId,r=E(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>jg(n)),t.append(r)}if(e.projectId&&!n){let n=E(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=QJ(e),n.addEventListener(`click`,()=>nY(e)),t.append(n)}t.append(de(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let r=UJ.get(e.key),i=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,a=E(`span`,`pr-action-status issue-open-status`,r??i);return a.setAttribute(`role`,`status`),QJ(e)&&a.prepend(E(`span`,`issues-spinner`)),t.append(a),t}function oY(e,t){let n=E(`span`,null,SJ(e,t));return n.dataset.issueAgo=e,n}function sY(){let e=jJ?.querySelector(`.issues-detail`),t=IJ?RJ.get(IJ):void 0;if(!e||!t)return;let n=e.querySelector(`.issues-facts .issues-state`);n&&YJ(n,t,!0);let r=e.querySelector(`.issues-session-name`),i=ZJ(t);r&&r.textContent!==i&&(r.textContent=i);let a=String(!!JJ(t));e.dataset.hasLiveSession!==a&&(e.dataset.hasLiveSession=a,e.querySelector(`.issues-detail-footer`)?.replaceWith(aY(t)))}function cY(){if(!jJ)return;let e=LJ?.issues.find(e=>e.key===IJ);if(!e){jJ.replaceChildren(E(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let t=E(`article`,`pr-detail issues-detail`),n=E(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);n.type=`button`,n.addEventListener(`click`,()=>{OJ&&(OJ.dataset.detailOpen=`false`),[...AJ?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===IJ)?.focus({preventScroll:!0})});let r=E(`header`,`pr-detail-heading`),i=E(`div`,`pr-detail-title`);i.append(de(`pr-link`,`${e.repo}#${e.number}`,e.url),E(`h2`,null,e.title||`Untitled issue`));let a=Date.now(),o=E(`div`,`pr-detail-meta`),s=E(`span`,null,`opened by ${e.author||`unknown`} `),c=E(`span`,null,`updated `);s.append(oY(e.createdAt,a)),c.append(oY(e.updatedAt,a)),o.append(s,c,E(`span`,null,`${e.comments} comments`)),e.sources.includes(`me`)&&o.append(E(`span`,`issues-why`,`assigned to you`));for(let t of e.teams)o.append(E(`span`,null,`mentions ${t}`));r.append(i,o);let l=E(`dl`,`issues-facts`);iY(l,`Repository`,[e.repo]),iY(l,`Labels`,[e.labels.join(`, `)||`none`]),iY(l,`Assignees`,[e.assignees.join(`, `)||`unassigned`]),t.dataset.hasLiveSession=String(!!JJ(e)),iY(l,`Session`,[XJ(e,!0),E(`span`,`issues-session-name`,ZJ(e))]);let u=e.pullRequests.flatMap(e=>{let t=E(`span`,`issues-pr-state`,e.state);return t.dataset.prState=e.state,[t,de(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});iY(l,`Pull request`,u.length>0?u:[`none linked`]);let d=E(`section`,`issues-body-section`),f=qJ(e),p=E(`div`,`issue-body`,GJ.get(f)??KJ.get(f)??`Loading description.`);GJ.get(f)===``&&(p.textContent=`No description.`),p.setAttribute(`role`,`status`),d.append(E(`h3`,`pr-section-heading`,`Description`),p),t.append(n,r,l,d,aY(e)),jJ.replaceChildren(t)}function lY(e,t,n,r){if(!e)return;let i=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...i].map(e=>{let n=E(`option`,null,e||t);return n.value=e,n})),e.value=r}function uY(){zJ=!1,dY(),cY()}function dY(){if(!OJ||!AJ||!kJ)return;let e=LJ?.issues??[],t=gJ(e);for(let e of EJ){kJ.querySelector(`[data-scope="${e.id}"]`)?.setAttribute(`aria-selected`,String(e.id===DJ.scope));let n=kJ.querySelector(`[data-scope-count="${e.id}"]`);n&&(n.textContent=String(t[e.id]))}let n=yJ(e);lY(NJ,`All repos`,n.repos,DJ.repo),lY(PJ,`All labels`,n.labels,DJ.label),MJ&&(MJ.textContent=bJ(DJ));let r=_J(e,DJ,new Set(j.keys())),i=document.activeElement instanceof HTMLElement&&AJ.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,a=[...vJ(r)].map(([e,t])=>{let n=E(`section`,`pr-queue-section`),r=E(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(E(`span`,`issues-repo-note`,`view only`)),r.append(E(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(rY)),n});AJ.replaceChildren(...a),r.length===0&&AJ.append(E(`p`,`pr-empty`,e.length>0?`No open issues match these filters. Clear the search or pick All.`:mJ(LJ))),i&&[...AJ.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===i)?.focus({preventScroll:!0}),IJ&&!e.some(e=>e.key===IJ)&&(IJ=null,OJ.dataset.detailOpen=`false`),BJ?.update(LJ),pY()}function fY(){let e=E(`div`,`issues-filters`),t=E(`div`,`issues-search-row`),n=E(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{DJ.query=n.value,uY()});let r=E(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let i=E(`div`,`issues-filters-panel`);i.id=`issues-filters-panel`,i.hidden=!0,r.addEventListener(`click`,()=>{i.hidden=!i.hidden,r.setAttribute(`aria-expanded`,String(!i.hidden))}),t.append(n,r);let a=E(`div`,`issues-filter-row`);function o(e){let t=E(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),a.append(t),t}NJ=o(`Repository`),NJ.addEventListener(`change`,()=>{DJ.repo=NJ?.value??``,uY()}),PJ=o(`Label`),PJ.addEventListener(`change`,()=>{DJ.label=PJ?.value??``,uY()});let s=o(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=E(`option`,null,t);n.value=e??``,s.append(n)}s.addEventListener(`change`,()=>{DJ.sort=s.value,uY()});let c=E(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=E(`label`,`issues-toggle`),r=E(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{DJ[e]=r.checked,uY()}),n.append(r,` ${t}`),c.append(n)}return MJ=E(`span`,`issues-filter-summary`),MJ.setAttribute(`role`,`status`),i.append(a,c),e.append(t,MJ,i),e}function pY(){if(!OJ||OJ.closest(`[hidden]`)||document.hidden)return;let e=Date.now();FJ&&(FJ.textContent=LJ?.lastSyncAt?`Synced ${SJ(LJ.lastSyncAt,e)}.`:`Not synced yet.`);for(let t of OJ.querySelectorAll(`[data-issue-age]`))t.textContent=xJ(t.dataset.issueAge??``,e);for(let t of OJ.querySelectorAll(`[data-issue-ago]`))t.textContent=SJ(t.dataset.issueAgo??``,e)}function mY(e){VJ=e}function hY(e){if(OJ)return OJ;OJ=E(`div`,`issues-content`),OJ.dataset.detailOpen=`false`,e.append(OJ),BJ=rU(`issues`,OJ);let t=E(`div`,`pr-columns issues-columns`),n=E(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),kJ=E(`div`,`pr-scope-tabs issues-scope-tabs`),kJ.setAttribute(`role`,`tablist`),kJ.setAttribute(`aria-label`,`Issue scope`);for(let e of EJ){let t=E(`span`,`issues-scope`);t.setAttribute(`role`,`presentation`);let n=E(`button`,`pr-scope-tab`,e.label);n.type=`button`,n.dataset.scope=e.id,n.setAttribute(`role`,`tab`),n.addEventListener(`click`,()=>{DJ.scope=e.id,uY()});let r=E(`span`,`issues-scope-count`);r.dataset.scopeCount=e.id,t.append(n,r),kJ.append(t)}AJ=E(`nav`,`pr-queue`),AJ.setAttribute(`aria-label`,`Issues`);let r=vz(BJ.control);return FJ=E(`span`,`issues-sync`),FJ.setAttribute(`role`,`status`),r.prepend(FJ),r.append(BJ.notice),n.append(_z(kJ),fY(),AJ,r),jJ=E(`section`,`pr-detail-host`),jJ.setAttribute(`aria-label`,`Issue detail`),t.append(n,jJ),OJ.append(t),window.setInterval(pY,3e4),uY(),OJ}function gY(){zJ&&_Y(),pY()}function _Y(){if(ve(OJ))zJ=!0;else if(zJ=!1,sY(),DJ.hasSession)dY();else for(let e of AJ?.querySelectorAll(`[data-issue-key]`)??[]){let t=RJ.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&YJ(n,t,!1)}}function vY(e){if(!e){for(let e of HJ.values())clearTimeout(e.timeoutHandle),UJ.set(e.issueKey,G);HJ.clear();for(let e of WJ.values())clearTimeout(e.timeoutHandle),KJ.set(e.cacheKey,`${G} ${TJ}`);WJ.clear(),uY()}}function yY(e){let t=LJ?.issues.find(e=>e.key===IJ);LJ=e,RJ=new Map(e.issues.map(e=>[e.key,e]));let n=e.issues.find(e=>e.key===IJ);n&&n.updatedAt!==t?.updatedAt&&tY(n),uY()}function bY(e){let t=WJ.get(e.requestId);t&&(clearTimeout(t.timeoutHandle),WJ.delete(e.requestId),e.ok&&e.body!==null&&GJ.set(t.cacheKey,e.body),(!e.ok||e.body===null)&&KJ.set(t.cacheKey,e.error||`Could not load description. Select the issue to try again.`),cY())}function xY(e){if(typeof e.requestId!=`string`)return;let t=eY(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`;UJ.set(n,`Session "${r}" ${a}.${i}`);let o=LJ?.issues.find(e=>e.key===n);o&&typeof e.sessionId==`string`&&(o.sessionId=e.sessionId),uY();return}let r=typeof e.error==`string`&&e.error?e.error:`Could not open session.`;UJ.set(n,r),cY()}var SY=4e3;function CY({render:e,holdMs:t=SY,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 wY=null,TY=null,EY=null,DY=null,OY=`http://www.w3.org/2000/svg`,kY=Oc({getAck:bs,setAck:xs,signature:()=>Sl({posthog:wY}),isLooking:()=>!ve(TY)}),AY=CY({render:SX}),jY=new Set,MY=null,NY=new Map,PY=new WeakMap,FY=`this issue`,IY=Od(()=>TY),LY={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},RY=[{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}],zY=RY.map(e=>e.track).join(` `),BY=RY.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),VY=RY.findIndex(e=>e.startsActionCluster)+1,HY=3e4;function UY(e){let t=E(`div`,e);return t.style.setProperty(`--radar-issue-grid`,zY),t.style.setProperty(`--radar-issue-grid-phone`,BY),t.style.setProperty(`--radar-issue-actions-start`,String(VY)),t}function WY(e,t){let n=E(`span`,`radar-issue-magnitudes`),r=!1;for(let i of RY){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function GY(e){return Number.isFinite(e)?String(e):`0`}function KY(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${Td(Date.now()-e)}`}function qY(e){return typeof e?.issueId==`string`?e.issueId:``}function JY(e,t){return[String(e??``),String(t??``)].join(`::`)}function YY(e,t,n){let r=NY.get(JY(e,t));if(!r||!r.copy.isConnected)return!1;let i=zc(n);return i?(r.summary||(r.summary=E(`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 XY(e,t,n){let r=qY(e);if(!r)return;MY?.dialog.close();let i=Pd({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>QY(e)});MY={projectId:String(t??``),issueId:r,dialog:i},i.update(Bc(e))}function ZY(){if(!MY)return;if(!MY.dialog.isOpen()){MY=null;return}let e=Vc(wY,MY.projectId,MY.issueId);e&&MY.dialog.update(Bc(e))}function QY(e){let t=qY(e);t&&du(`get-radar-report`,{issueId:t},{timeoutMs:q}).then(n=>{n.ok?n.found?Nd({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):Nd({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):Nd({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{Nd({issueId:t,issueTitle:String(e.title??``),error:Cu(n,q)})})}function $Y(){let e=E(`div`,`radar-issue-actions`),t=E(`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=E(`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)=>{AY.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,AY.settle(e)};du(n,r,{timeoutMs:HY}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,Cu(e,HY)))},showFollowUp:a,wrap:e}}function eX(e){let t=E(`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(),xX(e)}),t}function tX(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=$Y(),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`,()=>XY(e,t,n)),!e.inFlight&&e.verdict&&qY(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>QY(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`&&DY&&a(eX(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`,()=>{Xu({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 nX(e){return mp()?FY:e}function rX(e){let t=PY.get(e);t&&(e.title=t())}function iX(){if(TY)for(let e of TY.querySelectorAll(`.radar-issue-reportable`))rX(e)}gp(iX);function aX(e,t,n){e.classList.add(`radar-issue-reportable`),PY.set(e,t),rX(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function oX(e,t,n){let r=E(`div`,`radar-issue`);r.dataset.severity=el(e.change);let i=E(`span`,`radar-stripe`);i.setAttribute(`aria-hidden`,`true`);let a=E(`span`,`radar-change`,LY[e.change??``]||String(e.change||`unknown`)),o=de(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),s=E(`span`,`radar-metric`);s.append(E(`span`,`radar-metric-value`,GY(e.occurrences)),E(`span`,`radar-metric-label`,`occ`));let c=E(`span`,`radar-metric`);c.append(E(`span`,`radar-metric-value`,GY(e.users)),E(`span`,`radar-metric-label`,`users`));let l=il(e.history),u=al(l,64,16),d=u?document.createElementNS(OY,`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(OY,`title`);e.textContent=sl(l);let t=document.createElementNS(OY,`polyline`);t.setAttribute(`points`,u),d.append(e,t)}let f=zc(e),p=E(`span`,`radar-issue-copy`);p.append(o);let m=null;f&&(m=E(`span`,`radar-issue-summary`),m.textContent=f,p.append(m)),NY.set(JY(t,e.issueId),{copy:p,summary:m});let h=E(`span`,`radar-issue-meta`),g=tl(e);if(g!==null){let e=E(`span`,`radar-issue-seen`);e.title=new Date(g).toLocaleString(),IY.track(e,g,Ed),h.append(e)}let _=nl(e);_&&h.append(E(`span`,`radar-issue-status`,_));let v=String(e.title||e.issueId);if(e.inFlight){let i=E(`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=E(`span`,`radar-issue-elapsed`);IY.track(e,a,KY),h.append(e)}qY(e)&&aX(r,()=>`Watch the investigation of ${nX(v)}`,()=>XY(e,t,n))}if(!e.inFlight&&e.verdict){let t=E(`span`,`radar-verdict`,Kc(e.verdict));t.dataset.verdict=e.verdict,h.append(t),qY(e)&&aX(r,()=>`View investigation report for ${nX(v)}`,()=>QY(e))}h.childElementCount>0&&p.append(h);let y=E(`span`,`radar-issue-trend`);d&&y.append(d);let b=ol(l);if(b){let e=E(`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 WY(r,e=>x[e.columnId]),qY(e)&&r.append(tX(e,t,n)),r}var sX=(e,t,n)=>ge(`radar`,e,t,n);function cX(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${Td(e.staleMs)}`:``}function lX(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=E(r,i,fl(t));o.title=String(t.name||``),e.append(o);let s=n?pl(t.host):``;s&&e.append(E(`span`,a,s))}function uX(){let e=UY(`radar-column-heads`);for(let t of RY){if(!t.headText){e.append(E(`span`));continue}let n=E(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function dX(e,t){let n=e.project,r=E(`div`,`radar-project`),i=wl(n.issues),a=cl(i),o=E(`div`,`radar-project-head`);lX(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=E(`div`,`radar-project-summary`);s.append(sX(a.active===1?`active issue`:`active issues`,GY(a.active))),s.append(sX(`spiking`,GY(a.spiking),a.spiking>0?`crit`:null)),s.append(sX(`needs you`,GY(a.needsHuman),a.needsHuman>0?`warn`:null));let c=cX(e);if(c){let t=E(`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(uX());let l=UY(`radar-issues`);for(let e of i)l.append(oX(e,n.projectId,fl(n)));return r.append(l),r}function fX(e,t){let n=e.project,r=E(`div`,`radar-quiet-row`),i=E(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),lX(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(E(`span`,`radar-quiet-count`,`0 issues`)),r}var pX=(e,t)=>he(`radar`,e,t);function mX(){let e=E(`div`,`radar-issue`);return e.dataset.skeleton=``,WY(e,e=>E(`span`,e.cellClass)),e}function hX(){let e=UY(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(mX());return e}function gX(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function _X(e,t=`ready`){let n=pX(`Errors`);if(t===`pending`)return n.append(hX()),n;if(t===`placeholder`||e.length===0){let e=E(`p`,`radar-unconfigured`,Zc(wY)),t=of(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=gX(wY);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=E(`div`,`radar-global-tick`),i=Number(wY?.intervalMinutes);IY.track(r,wY?.ts,e=>{let t=`polled ${Ed(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}=gl(e,Date.now(),{intervalMs:a}),c=ml(e);for(let e of o)n.append(dX(e,c));if(s.length===0)return n;let l=E(`div`,`radar-quiet`);for(let e of s)l.append(fX(e,c));return n.append(l),n}function vX(e){let{addButton:t,request:n,wrap:r}=$Y();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{QY({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`,()=>jY.add(e.id))}),r}function yX(e){let t=E(`div`,`radar-investigation`),n=E(`span`,`radar-verdict`,Kc(e.verdict));n.dataset.verdict=e.verdict;let r=de(`radar-issue-title`,e.title,e.url),i=E(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=E(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=E(`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=E(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=E(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=E(`span`,`radar-investigation-time`,Ed(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(vX(e)),t}function bX(e){let t=pX(`Investigations`,`completed, not yet archived`),n=E(`div`,`radar-investigations`);for(let t of e)n.append(yX(t));return t.append(n),t}function xX(e){DY&&DY(e)}function SX(){if(!TY)return;TY.textContent=``,NY.clear(),IY.reset();let e=_e(wY),t=_l(wY,jY),n=$c(wY,e.length);TY.append(_X(e,n)),t.length>0&&TY.append(bX(t))}function CX(){AY.request()}function wX(){EY&&EY(kY.refresh())}function TX(){kY.acknowledge(),wX()}function EX(e){EY=e,wX()}function DX(e){DY=e}function OX(e){if(TY)return TY;let t=E(`div`,`radar-content`);return e.appendChild(t),TY=t,IY.ensure(),SX(),t}function kX(e){wY=e,vl(wY,jY),CX(),wX(),ZY()}function AX(e){let t=Vc(wY,e.projectId,e.issueId)?.inFlight===!0;if(!Hc(wY,e))return;ZY();let n=Vc(wY,e.projectId,e.issueId);t&&YY(e.projectId,e.issueId,n)||CX()}function jX(e){MY?.dialog.isOpen()&&Wc(MY,e)&&MY.dialog.update(Uc(e))}function MX(e){Gc(wY,e)?(ZY(),CX(),wX()):jX(e)}var NX=Hp({requestPrefix:`session-setup`,dialogClass:`dialog coherence-journal-drawer session-setup-dialog`,titleText:`Session setup`,unavailableLabel:`Session setup unavailable`,timeoutMs:15e3});function PX(e){let t=E(`ul`,`session-setup-list`);return t.append(...e.map(e=>E(`li`,null,e))),t}function FX(e,t){e.replaceChildren();function n(t,n){if(n.length===0)return;let r=he(`session-setup`,t);r.append(...n),e.append(r)}n(`Model`,t.model?[E(`p`,null,t.model)]:[]),n(`Plugins`,t.plugins.map(e=>{let t=E(`div`,`session-setup-plugin`);return t.append(E(`h3`,null,e.name)),e.skills.length>0&&t.append(E(`p`,`session-setup-label`,`Skills`),PX(e.skills)),e.agents.length>0&&t.append(E(`p`,`session-setup-label`,`Agents`),PX(e.agents)),t})),n(`MCP servers`,t.mcpServers.length>0?[PX(t.mcpServers)]:[]),n(`Hooks`,[...t.hookEvents.map(e=>{let t=E(`p`,`session-setup-hook`);return t.append(E(`span`,null,e.event),E(`span`,`session-setup-label`,`${e.runCount} runs`)),t}),...t.hookCommands.map(e=>E(`pre`,`coherence-command`,e))]),n(`Skills`,t.skills.length>0?[PX(t.skills)]:[]),n(`Agents`,t.agents.length>0?[PX(t.agents)]:[])}function IX(e){let t=E(`p`,`coherence-journal-status`,`Loading session setup`);t.setAttribute(`role`,`status`);let n=E(`div`,`session-setup-sections`);NX.open({sessionId:e,status:t,body:[t,n],parts:{sections:n},buildRequest:t=>({type:`session-setup`,id:e,requestId:t})})}function LX(e){let t=NX.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;FX(n,e.setup),t.status.textContent=n.childElementCount>0?``:`No session setup recorded yet`,t.status.hidden=n.childElementCount>0}function RX(e){return{skipPerms:e.skipPerms??e.dangerouslySkipPermissions??!1,saneYolo:e.saneYolo===!0,worktree:e.worktree??e.isWorktree??!1,workspace:e.workspace??e.isWorkspace??!1,guarded:e.guarded??e.isGuarded??!1,guardrailsReleased:e.guardrailsReleased??e.isGuardrailsReleased??!1,ephemeral:e.ephemeral===!0,path:e.path,stateSince:e.stateSince,taskTitle:typeof e.taskTitle==`string`?e.taskTitle:null,taskTitleIsCustom:e.taskTitleIsCustom===!0}}var zX=null,BX=null,VX=null,HX=null,UX=null,WX=null,GX=-1,KX=null,qX={isRightToLeft:!1,arcProgress:0},JX=1,YX=3;function XX(){if(!zX||KX===null)return;let e=lo({viewportWidthPx:document.documentElement.clientWidth,viewportHeightPx:document.documentElement.clientHeight,verticalProgress:KX,...qX});le(zX,fo(e,JX,window.devicePixelRatio))}function ZX(){WX!==null&&(clearTimeout(WX),WX=null)}function QX(e=Xo()){return $a({isEnabled:e,hasReducedMotion:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,isPhone:P_(),options:zs()})}function $X(e){e.onanimationend=null,e.style.animation=`none`,HX&&(HX.style.animation=`none`),e.hidden=!0}function eZ(e,t){if(!zX||!BX||!VX||!HX||QX())return;let n=zs();ZX();let r=Qa(n,GX,Math.random,t);if($X(zX),!r){WX=setTimeout(()=>eZ(!1),1e3);return}KX=r.verticalProgress,qX={isRightToLeft:r.isRightToLeft,arcProgress:r.arcProgress},JX=n.flyingAnimalsScale,XX();let i=Wa[r.animalIndex];BX.className=`nyan-sprite ${i.sprite}`,VX.className=`nyan-trail ${i.trail}`,GX=r.animalIndex,UX?.classList.remove(`is-booped`),zX.hidden=!1,zX.offsetWidth,zX.style.animation=`nyan-fly ${r.durationSeconds}s linear`,HX.style.animation=`nyan-trail-hold ${r.durationSeconds}s linear`,e&&(zX.style.animationDelay=`-${r.firstDelaySeconds}s`,HX.style.animationDelay=`-${r.firstDelaySeconds}s`),zX.onanimationend=e=>{zX&&e.target===zX&&($X(zX),WX=setTimeout(()=>eZ(!1),r.gapMs))}}function tZ(){if(zX&&HX&&UX){UX.classList.remove(`is-booped`),UX.offsetWidth,UX.classList.add(`is-booped`);for(let e of[...zX.getAnimations(),...HX.getAnimations()])e.playbackRate=YX}}function nZ(){if(zX||QX())return;zX=document.createElement(`div`),zX.className=`nyan-flight`,zX.setAttribute(`aria-hidden`,`true`);let e=document.createElement(`div`);e.className=`nyan-trail-window`,HX=document.createElement(`div`),HX.className=`nyan-trail-hold`,VX=document.createElement(`div`),HX.append(VX),e.append(HX),BX=document.createElement(`div`),UX=document.createElement(`div`),UX.className=`nyan-boop`,UX.append(BX),UX.addEventListener(`pointerdown`,tZ),zX.append(e,UX),document.body.appendChild(zX),window.addEventListener(`resize`,XX),window.addEventListener(`orientationchange`,XX),eZ(!0)}function rZ(e){nZ(),eZ(!1,e)}function iZ(){ZX(),window.removeEventListener(`resize`,XX),window.removeEventListener(`orientationchange`,XX),zX?.remove(),zX=null,BX=null,VX=null,HX=null,UX=null,GX=-1,KX=null}var aZ=!1;function oZ(e){let t=document.documentElement;if(aZ||(aZ=!0,F_(()=>oZ(Xo())),window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,()=>oZ(Xo()))),e){if(t.dataset.flyingAnimals=`true`,QX(e)){iZ();return}nZ()}else delete t.dataset.flyingAnimals,iZ()}function sZ(){let e=E(`div`),t=E(`p`,`flying-animals-status`);t.id=`flying-animals-gallery-status`,t.setAttribute(`role`,`status`);let n=E(`div`,`flying-animals-gallery`);n.setAttribute(`aria-label`,`Animal gallery`);let r=[],i=()=>{let e=QX(),n=Xa(zs().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=zs();for(let e of Wa){let o=E(`article`,`flying-animal-tile`),s=Us(e),c=E(`label`,`flying-animal-include`),l=E(`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(zs().flyingAnimalsExcludedSprites);l.checked&&t.delete(e.sprite),l.checked||t.add(e.sprite),Rs([...t]),oZ(Xo()),i()}),c.append(l,document.createTextNode(`Include`));let u=E(`button`,`btn-dialog btn-dialog-cancel`,`Fly now`);u.type=`button`,u.setAttribute(`aria-describedby`,t.id),u.addEventListener(`click`,()=>rZ(e.sprite)),r.push(u),o.append(s,E(`h2`,`flying-animal-name`,e.name),c,u),n.append(o)}return i(),e.append(t,n),e}var cZ=`johncwaters/glimmervoid`,lZ={maxConcurrentInvestigations:Math.ceil,minUsersToInvestigate:Math.ceil,userEscalationThreshold:Math.ceil,trafficSpikeMinUsers:Math.ceil,trafficSpikeBaselineDays:Math.floor};[...Object.entries(lZ).map(([e,t])=>({path:[`posthog`,e],min:1,round:t}))];var uZ=Object.freeze([`auto`,`calculate`,`display`]),dZ=Object.freeze([`codex`,`grok`]),fZ=Object.freeze([`dailyUsd`,`monthlyUsd`]),pZ=Object.freeze([`opened`,`checks-failed`,`review-requested`,`approved`,`commented`,`merged`]),mZ=Object.freeze([`notify`,`spawn`,`label`,`comment`]),hZ=2e4,gZ=65536,_Z=50,vZ=/^[a-z0-9][a-z0-9-]{0,63}$/,yZ=/[\x00-\x1f\x7f,]|^-/,bZ=(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})},xZ=t({error:`workflows.enabled must be a boolean`}),SZ=bZ(`workflows.maxConcurrentSessions`,Ha),CZ=bZ(`workflows.maxActionsPerPoll`,Ua),wZ=(e,t)=>p(t,{error:`${e} must be an array`}).min(1,{error:`${e} must list at least one entry when present`}),TZ=l({error:`a workflow label name must be a string`}).trim().min(1,{error:`a workflow label name must not be empty`}).max(_Z,{error:`a workflow label name must be at most ${_Z} characters`}).refine(e=>!yZ.test(e),{error:`a workflow label name must not start with a dash or hold a comma or control character`}),EZ=l({error:`a workflow comment body must be a string`}).min(1,{error:`a workflow comment body must not be empty`}).max(gZ,{error:`a workflow comment body must be at most ${gZ} characters`}).refine(e=>e.trim().length>0,{error:`a workflow comment body must not be blank`}),DZ=u(pZ,{error:`workflows.rules[].trigger must be one of ${pZ.join(`, `)}`}),OZ=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(hZ,{error:`a spawn action promptTemplate must be at most ${hZ} characters`}).refine(e=>e.trim().length>0,{error:`a spawn action promptTemplate must not be blank`})}),f({type:m(`label`),name:TZ}),f({type:m(`comment`),body:EZ})],{error:`workflows.rules[].actions[].type must be one of ${mZ.join(`, `)}`}),kZ=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:wZ(`workflows.rules[].filters.authors`,l({error:`workflows.rules[].filters.authors must hold GitHub logins`}).regex(Pe,{error:`workflows.rules[].filters.authors must hold GitHub logins`})).optional(),labels:wZ(`workflows.rules[].filters.labels`,TZ).optional(),baseBranches:wZ(`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`}),AZ=l({error:`workflows.rules[].id must be a string`}).regex(vZ,{error:`workflows.rules[].id must be 1 to 64 lowercase letters, digits and dashes, starting with a letter or digit`}),jZ=t({error:`workflows.rules[].enabled must be a boolean`}),MZ=f({id:AZ,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:jZ.default(!1),repos:wZ(`workflows.rules[].repos`,In),filters:kZ.default({}),trigger:DZ,actions:wZ(`workflows.rules[].actions`,OZ)},{error:`workflows.rules[] must be an object`}),NZ=f({enabled:xZ.default(!0),maxConcurrentSessions:SZ.default(2),maxActionsPerPoll:CZ.default(20),rules:p(MZ,{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)}),PZ=f({id:AZ,enabled:jZ},{error:`a dashboard update of workflows.rules[] carries only id and enabled`});f({enabled:xZ.optional(),maxConcurrentSessions:SZ.optional(),maxActionsPerPoll:CZ.optional(),rules:p(PZ,{error:`workflows.rules must be an array`}).optional()},{error:`a dashboard update of workflows carries only enabled, maxConcurrentSessions, maxActionsPerPoll and rule toggles`});var FZ=c().int().nonnegative(),IZ=u([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable();dr.extend({author:g({login:l()}).nullable(),labels:g({nodes:p(g({name:l()}))}),comments:g({totalCount:FZ})});var LZ=f({repo:In,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:P,labels:p(l()),commentCount:FZ,reviewRequests:p(l()),checksState:IZ,reviewDecision:u([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable()}),RZ=f({polledAtMs:FZ,prs:p(LZ)});f({repos:i(l().regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/),RZ)});var zZ=e=>t({error:`${e} must be a boolean`}).optional(),BZ=(e,t=!1)=>{let n=l({error:`${e} must be a string`});return(t?n.transform(e=>e.trim()):n).optional()},VZ=e=>e.label?e.label:e.max==null?e.exclusiveMin?`greater than ${e.min}`:`at least ${e.min}`:`between ${e.min} and ${e.max}`,HZ=(e,t=V)=>c({error:`${e} must be ${VZ(t)}`}).finite().refine(e=>!t.exclusiveMin||e>t.min,{message:`${e} must be ${VZ(t)}`}).refine(e=>t.exclusiveMin||e>=t.min,{message:`${e} must be ${VZ(t)}`}).refine(e=>t.max==null||e<=t.max,{message:`${e} must be ${VZ(t)}`}).optional(),UZ=(e,t)=>HZ(e,t).unwrap().int({error:`${e} must be a whole number ${VZ(t)}`}).optional(),WZ=(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(),GZ=(e,t)=>g(t,{error:`${e} must be an object`}).nullable().optional(),KZ=Object.freeze([`claude`,`codex`]),qZ=Object.freeze([`release`,`main`]),JZ=Object.freeze([`report`,`fix`]);GZ(`changeMap`,{narrator:GZ(`changeMap.narrator`,{enabled:zZ(`changeMap.narrator.enabled`),engine:u(KZ,{error:`changeMap.narrator.engine must be one of ${KZ.join(`, `)}`}).optional(),model:BZ(`changeMap.narrator.model`,!0),timeoutSeconds:WZ(`changeMap.narrator.timeoutSeconds`,Ba)})}),g({refiner:g({enabled:zZ(`taskTitle.refiner.enabled`),model:BZ(`taskTitle.refiner.model`,!0),minIntervalSeconds:HZ(`taskTitle.refiner.minIntervalSeconds`,{min:0}),timeoutSeconds:HZ(`taskTitle.refiner.timeoutSeconds`,pa)},{error:`taskTitle.refiner must be an object`}).nullable().optional()},{error:`taskTitle must be an object`}).nullable().optional();var YZ={enabled:zZ(`branchGc.enabled`),worktrees:zZ(`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:zZ(`branchGc.dryRun`),staleDays:HZ(`branchGc.staleDays`,ma),deleteUnmerged:zZ(`branchGc.deleteUnmerged`),intervalMs:HZ(`branchGc.intervalMs`,ha)},XZ=g(YZ,{error:`branchGc must be an object`});GZ(`branchGc`,YZ),XZ.omit({prefixes:!0,dryRun:!0,worktrees:!0}).nullable().optional(),Object.freeze([`enabled`,`deleteUnmerged`]),Object.freeze([`staleDays`,`intervalMs`]),GZ(`postTurnChecks`,{mode:u(JZ,{error:`postTurnChecks.mode must be one of report, fix`}).optional()}),GZ(`visions`,{enabled:zZ(`visions.enabled`),autoFix:zZ(`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:GZ(`visions.dispatch`,{enabled:zZ(`visions.dispatch.enabled`),model:BZ(`visions.dispatch.model`,!0),quietMs:UZ(`visions.dispatch.quietMs`,ga),cooldownMs:UZ(`visions.dispatch.cooldownMs`,_a),maxPerHour:UZ(`visions.dispatch.maxPerHour`,va),activityMaxPerHour:UZ(`visions.dispatch.activityMaxPerHour`,ya),dispatchTimeoutSeconds:UZ(`visions.dispatch.dispatchTimeoutSeconds`,ba)}),intent:GZ(`visions.intent`,{threadTtlMs:UZ(`visions.intent.threadTtlMs`,xa)})}),g({teams:p(l({error:`github.teams must be an array of org/slug strings`}).refine(e=>Le(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(),GZ(`teamReview`,{enabled:zZ(`teamReview.enabled`),autoRebaseMyPrs:zZ(`teamReview.autoRebaseMyPrs`),keepMergeableEnabled:zZ(`teamReview.keepMergeableEnabled`),mergeQueueEnabled:zZ(`teamReview.mergeQueueEnabled`),keepMergeableTimeoutMinutes:WZ(`teamReview.keepMergeableTimeoutMinutes`,Va),org:BZ(`teamReview.org`,!0),team:BZ(`teamReview.team`,!0),skill:BZ(`teamReview.skill`,!0),reReviewAfterHours:HZ(`teamReview.reReviewAfterHours`),skipIdleAfterDays:HZ(`teamReview.skipIdleAfterDays`)}),GZ(`benchmarks`,{enabled:zZ(`benchmarks.enabled`)}),GZ(`coherence`,{enabled:zZ(`coherence.enabled`)});var ZZ={intervalMinutes:Sa,maxConcurrentInvestigations:Ca,investigationTimeoutSeconds:wa,fixTimeoutSeconds:ka,minUsersToInvestigate:Ta,userEscalationThreshold:Ea,recurrenceWindowDays:Da,transientRecurrenceLimit:Oa,trafficSpikeMultiplier:Aa,trafficSpikeMinUsers:ja,trafficSpikeCooldownMinutes:Ma,trafficSpikeBaselineDays:Na};GZ(`posthog`,{enabled:zZ(`posthog.enabled`),recurrenceDedupe:zZ(`posthog.recurrenceDedupe`),trafficSpikeEnabled:zZ(`posthog.trafficSpikeEnabled`),autoFix:zZ(`posthog.autoFix`),host:BZ(`posthog.host`,!0).refine(e=>e==null||!e||/^https?:\/\//i.test(e),{message:`posthog.host must be an http(s) URL`}),apiKey:BZ(`posthog.apiKey`,!0),repoPath:BZ(`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(ZZ).map(([e,t])=>[e,Object.hasOwn(lZ,e)?UZ(`posthog.${e}`,t):HZ(`posthog.${e}`,t)]))}),`${uZ.join(`, `)}`,Object.fromEntries(dZ.map(e=>[e,zZ(`usage.vendors.${e}`)])),Object.fromEntries(fZ.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()])),GZ(`telegram`,{botToken:BZ(`telegram.botToken`,!0),chatId:BZ(`telegram.chatId`,!0)}),g({enabled:zZ(`ingest.enabled`)},{error:`ingest must be an object`}).passthrough().optional(),g({enabled:zZ(`trace.enabled`)},{error:`trace must be an object`}).optional(),g({enabled:zZ(`planReview.enabled`)},{error:`planReview must be an object`}).optional();var QZ=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(),$Z={unguardedRepos:QZ(`guardrails.unguardedRepos`),blockedPaths:QZ(`guardrails.blockedPaths`),unreadablePaths:QZ(`guardrails.unreadablePaths`)};g($Z,{error:`guardrails must be an object`}).passthrough().optional();var eQ={enabled:zZ(`telemetry.enabled`)};g(eQ,{error:`telemetry must be an object`}).strict().optional(),g(eQ,{error:`telemetry must be an object`}).passthrough().optional();var tQ={scope:`browser`,access:`editable`,takesEffect:`now`},nQ={scope:`browser`,access:`advanced`,takesEffect:`now`},X={scope:`machine`,access:`editable`,takesEffect:`now`},rQ={scope:`machine`,access:`editable`,takesEffect:`new-sessions`},iQ={scope:`machine`,access:`readout`,takesEffect:`now`},Z={scope:`machine`,access:`file-only`},aQ=1e3,oQ=60,sQ=60,cQ=aQ*oQ,lQ=cQ*sQ,uQ=lQ*24,dQ={label:`investigations`,storedPerDisplay:1},fQ={label:`sessions`,storedPerDisplay:1},pQ={label:`recurrences`,storedPerDisplay:1},mQ={label:`actions`,storedPerDisplay:1},hQ={label:`seconds`,storedPerDisplay:1},gQ={label:`minutes`,storedPerDisplay:1},_Q={label:`hours`,storedPerDisplay:1},vQ={label:`days`,storedPerDisplay:1},yQ={label:`seconds`,storedPerDisplay:aQ,storedLabel:`ms`},bQ={label:`minutes`,storedPerDisplay:cQ,storedLabel:`ms`},xQ={label:`minutes`,storedPerDisplay:oQ,storedLabel:`seconds`},SQ={label:`hours`,storedPerDisplay:lQ,storedLabel:`ms`},CQ={label:`hours`,storedPerDisplay:sQ,storedLabel:`minutes`},wQ={label:`days`,storedPerDisplay:uQ,storedLabel:`ms`},TQ={label:`USD`,storedPerDisplay:1},EQ={label:`users`,storedPerDisplay:1},DQ={label:`reviews per hour`,storedPerDisplay:1},OQ={label:`times`,storedPerDisplay:1},Q=`A tuning knob kept out of the Settings view; the default suits almost every install.`,kQ=`A diagnostic switch kept out of the Settings view; change it in config.json while investigating.`,AQ=`Changes how the server process or its worktrees behave, so it is set in config.json with a restart or new sessions in mind.`,jQ=`A structured value with no dashboard control; edit it in config.json.`,MQ=`Never editable from the dashboard by rule; edit it in config.json.`;function NQ(e){return e.map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}))}var PQ=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.`}}),FQ=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`,...tQ},{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,...tQ},{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,...tQ},{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,...tQ},{id:`animals-min-gap`,path:`pref:flyingAnimalsMinGapSeconds`,title:`Time between flights: minimum`,description:`Shortest pause between flights.`,control:`number`,integer:!1,step:.1,range:oa,unit:hQ,maximumSettingId:`animals-max-gap`,keywords:[`animals`,`frequency`],defaultValue:la.flyingAnimalsMinGapSeconds,...nQ},{id:`animals-max-gap`,path:`pref:flyingAnimalsMaxGapSeconds`,title:`Time between flights: maximum`,description:`Longest pause between flights.`,control:`number`,integer:!1,step:.1,range:oa,unit:hQ,keywords:[`animals`,`frequency`],defaultValue:la.flyingAnimalsMaxGapSeconds,...nQ},{id:`animals-min-duration`,path:`pref:flyingAnimalsMinDurationSeconds`,title:`Flight duration: minimum`,description:`Shortest flight, for faster animals.`,control:`number`,integer:!1,step:.1,range:sa,unit:hQ,maximumSettingId:`animals-max-duration`,keywords:[`animals`,`speed`],defaultValue:la.flyingAnimalsMinDurationSeconds,...nQ},{id:`animals-max-duration`,path:`pref:flyingAnimalsMaxDurationSeconds`,title:`Flight duration: maximum`,description:`Longest flight, for slower animals.`,control:`number`,integer:!1,step:.1,range:sa,unit:hQ,keywords:[`animals`,`speed`],defaultValue:la.flyingAnimalsMaxDurationSeconds,...nQ},{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:ca,unit:OQ,keywords:[`animals`,`size`],defaultValue:la.flyingAnimalsScale,...nQ},{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:la.flyingAnimalsOnPhone,...nQ}]},{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,...tQ},{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`,...tQ},{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,...tQ}]},{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:`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`,...iQ}]},{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,...rQ},{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,...rQ},{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:NQ(JZ),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.`,...rQ},{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.`,...rQ},{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.`,...rQ}]},{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`,...iQ},{id:`update-channel`,path:`updateChannel`,title:`Channel`,description:`Track tagged releases or the upstream of the checked-out branch.`,control:`select`,options:NQ(qZ),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:Fa,unit:vQ,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:Ra,unit:TQ,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:Ra,unit:TQ,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:V,unit:DQ,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:V,unit:gQ,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:V,unit:dQ,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:V,unit:EQ,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:V,unit:_Q,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:V,unit:vQ,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:Va,unit:gQ,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:Ha,unit:fQ,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`,...iQ}]},{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:NQ(KZ),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:[]}]),IQ=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:kQ,...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:ua,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:da,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:kQ,...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:kQ,...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:kQ,...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:kQ,...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:AQ,...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:AQ,...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:AQ,...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:AQ,...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:AQ,...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:MQ,...Z},{id:`file-port`,path:`port`,title:`Local port`,group:`machine-detection-sessions`,description:`Port used by the local dashboard listener.`,control:`number`,range:fa,unit:{label:`port`,storedPerDisplay:1},keywords:[`server`,`listener`],defaultValue:3e3,takesEffect:`restart`,fileOnlyReason:MQ,...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:V,unit:yQ,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:V,unit:bQ,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:jQ,...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:AQ,...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:AQ,...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:AQ,...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:AQ,...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:V,unit:vQ,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:V,unit:SQ,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:MQ,...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:aa,unit:hQ,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:pa,unit:hQ,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:Pa,unit:gQ,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:za.warehouseRetainDays,unit:vQ,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:za.sessionBlockHours,unit:_Q,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:NQ(uZ),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:Ba,unit:hQ,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:V,unit:yQ,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:V,unit:bQ,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:aa,unit:DQ,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:V,unit:xQ,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:V,unit:wQ,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:V,unit:xQ,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:V,unit:EQ,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:ka,unit:xQ,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:Aa,unit:OQ,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:ja,unit:EQ,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:aa,unit:CQ,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:Na,unit:vQ,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:V,unit:vQ,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:V,unit:pQ,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:jQ,...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:Ua,unit:mQ,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}]),LQ=Object.freeze({sections:FQ,fileOnly:IQ}),RQ=Object.freeze(Object.fromEntries(FQ.flatMap(e=>(e.legacyIds??[]).map(t=>[t,e.id])))),zQ=Object.freeze(FQ.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 BQ(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 VQ(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n)return;n=n[e]}return n}function HQ(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 UQ(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)]=BQ(n)}function WQ(e){return e.flatMap(e=>e.settings)}function GQ(e){return e.access===`file-only`||e.control===`readonly`}function KQ(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 qQ=6;function JQ(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):[]:BQ(t)}function YQ(e){return e.control===`number`&&(e.unit?.storedPerDisplay??1)!==1}function XQ(e){return String(Number(e.toFixed(qQ)))}function ZQ(e,t){let n=JQ(e,t);return e.valueKind===`posthog-projects`&&Array.isArray(n)?n.join(`, `)||`all`:typeof n==`number`&&e.unit?`${XQ(n)} ${e.unit.label}`:JSON.stringify(n??null)}function QQ(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 KQ(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 BQ(t)}function $Q(e){return String(e||``).toLowerCase().match(/[a-z0-9]+/g)||[]}var e$=3,t$=2,n$=1,r$=3,i$=30,a$=16;function o$(e,t){return e===t?e$:e.startsWith(t)?t$:t.length>=r$&&e.includes(t)?n$:0}function s$(e,t,n){let r=0;for(let n of t){let t=Math.max(0,...e.map(e=>o$(e,n)));if(t===0)return 0;r+=t}return r*n}function c$(e){return e.options?.map(e=>e.label).join(`, `)??``}function l$(e){return _$(e.group??``)?.title??``}function u$(e,t,n){let r=s$($Q(e.title),n,1e3),i=s$($Q(e.keywords.join(` `)),n,100),a=s$(t,n,10),o=s$($Q(e.path),n,10),s=s$($Q(c$(e)),n,10),c=s$($Q(e.description),n,1);return r+i+a+o+s+c}function d$(e){return e.section?.title??``}function f$(e,t){return Number(e.section===null)-Number(t.section===null)}function p$(e,t,n){return[[`title`,e.title],[`keywords`,e.keywords.join(` `)],[`section`,t?.title??l$(e)],[`description`,e.description],[`path`,e.path],[`options`,c$(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(o$(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 m$(e,t,n=[]){let r=$Q(t).slice(0,a$);if(r.length===0)return[];let i=[];for(let t of e){let e=$Q(t.title);for(let n of t.settings){let a=u$(n,e,r);a!==0&&i.push({section:t,setting:n,score:a,matches:p$(n,t,r)})}}for(let e of n){let t=u$(e,$Q(l$(e)),r);t!==0&&i.push({section:null,setting:e,score:t,matches:p$(e,null,r)})}return i.sort((e,t)=>t.score-e.score||f$(e,t)||d$(e).localeCompare(d$(t))||e.setting.title.localeCompare(t.setting.title)).slice(0,i$)}function h$(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 g$(e){let t=new Map,n=new Map;for(let r of[...WQ(e.sections),...e.fileOnly])t.set(r.id,r),n.set(r.path,r);return{byId:t,byPath:n}}g$(LQ);function _$(e,t=LQ){let n=t.sections.find(t=>t.id===e);return n?{title:n.title,description:n.description}:PQ[e]??null}function v$({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 y$(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 b$=new WeakMap,x$=`Configured`,S$=`•`.repeat(12),C$=`Each line must be a positive whole-number PostHog project id, or the one word none.`,w$=3,T$=200,E$=new Set([`customAgents`]),D$=1e-9,O$=`Lanes`,k$=Object.freeze({now:`Applies now`,"new-sessions":`New sessions`,restart:`After restart`}),A$=Object.freeze({browser:`This browser`,machine:`This machine`});function j$(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 M$(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 N$(e){return e.control===`password`}function P$(e){return`${e.path}${x$}`}function F$(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)=>F$(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)&&F$(e[n],t[n]))}function I$(e){return b$.get(e)||null}function L$(e){return Array.isArray(e)?e.map(e=>String(e)):[]}function R$(e){return e.split(`
146
+ `).map(e=>e.trim()).filter(e=>e!==``)}function z$(e){let t=e.range;if(!t)return null;let n={min:Number(JQ(e,t.min))};return t.max!=null&&(n.max=Number(JQ(e,t.max))),t.exclusiveMin&&(n.exclusiveMin=!0),n}function B$(e){let t=`Default ${ZQ(e,e.defaultValue)}`;return YQ(e)?`${t}, stored as ${JSON.stringify(e.defaultValue)} ${e.unit?.storedLabel??``}`.trimEnd():t}function V$(e,t){let n=B$(e),r=E$.has(e.path)?void 0:VQ(t,e.path);if(r===void 0)return{currentText:null,defaultText:n,jsonFragment:null};let i={};return UQ(i,e.path,r),{currentText:`Current ${ZQ(e,r)}`,defaultText:n,jsonFragment:JSON.stringify(i,null,2)}}function H$(e,t,n){let r=t??e.find(e=>e.id===n.group);if(!r)return _$(n.group??``)?.title??`config.json`;let i=e.find(e=>e.id===r.parent);return i?`${i.title} / ${r.title}`:r.level===`lanes`?`${O$} / ${r.title}`:r.title}function U$(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,T$).join(``).trim()}}function W$(e,t){return e.filter(e=>e.parent===t)}function G$(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 K$(e){return e.filter(e=>!e.parent)}function q$(e){let t=e.filter(e=>e.level===`lanes`);return[{heading:null,sections:e.filter(e=>e.level!==`lanes`)},{heading:O$,sections:t}].filter(e=>e.sections.length>0)}function J$(e,t,n,r){return r?`hidden`:n.trim()?`search`:t&&G$(e,t)?`section`:`list`}function Y$(e,t={}){let n={};for(let r of WQ(e)){if(GQ(r))continue;if(r.path.startsWith(`pref:`)){let e=r.path.slice(5),i=t.prefs?.[e]??t[r.path];n[r.path]=JQ(r,i??r.defaultValue);continue}if(N$(r)){let e=VQ(t,P$(r))===!0;n[r.path]=e?S$:``;continue}let e=VQ(t,r.path);n[r.path]=JQ(r,e??r.defaultValue)}return b$.set(n,BQ(t)),n}function X$(e,t,n){let r=WQ(e).filter(e=>GQ(e)||e.path.startsWith(`pref:`)||j$(e,I$(t)||{})||N$(e)&&n[e.path]===S$?!1:!F$(t[e.path],n[e.path]));if(r.length===0)return{};let i=I$(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]=QQ(e,n[e.path]);continue}if(!s.has(r)){let e=i[r];o[r]=e&&typeof e==`object`&&!Array.isArray(e)?BQ(e):{},s.add(r)}let c=QQ(e,n[e.path]);if(e.control===`projects`){let n=t[e.path];c=v$({checked:Array.isArray(c)?c:[],stored:Array.isArray(n)?n:[],rendered:y$(a.map(e=>({id:e,name:e})),Array.isArray(n)?n:[]).map(e=>e.id)})}UQ(o,e.path,c)}for(let t of WQ(e))N$(t)&&HQ(o,P$(t));return delete o.secretSources,o}function Z$(e,t,n,r){return D1(X$(e,t,{...t,[n.path]:r}))}function Q$(e){let t=e.unit?.label;return t?` of ${t}`:``}function $$(e){let t=z$(e);if(!t)return`Allowed range is unavailable.`;let n=`${e.integer!==!1&&!YQ(e)?`whole number`:`number`}${Q$(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`} ${XQ(t.min)}.`:`Must be a ${n} between ${XQ(t.min)} and ${XQ(t.max)}.`}function e1(e){return`Must be a multiple of ${ZQ(e,1)}.`}function t1(e){return Math.abs(e-Math.round(e))<D$&&Number.isSafeInteger(Math.round(e))}function n1(e,t){return Number(QQ({...e,integer:!1,nullable:!1,zeroIsNull:!1},t))}function r1(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 $$(e);let r=Number(t);if(!Number.isFinite(r))return $$(e);if(e.zeroIsNull&&r<=0)return null;let i=n1(e,r);if(e.integer!==!1&&!t1(i))return YQ(e)?e1(e):$$(e);let a=Number(QQ(e,r));return n.exclusiveMin&&a<=n.min||!n.exclusiveMin&&a<n.min||n.max!=null&&a>n.max?$$(e):null}function i1(e,t,n=!1){return n?$$(e):r1(e,t.trim())}function a1(e,t){let n=t.trim();if(e.nullable&&n===``)return null;let r=Number(n);return e.zeroIsNull&&r<=0?null:r}function o1(e){if(e==null||e===``)return``;let t=Number(e);return Number.isFinite(t)?XQ(t):String(e)}function s1(e,t){return Array.isArray(t)?e.valueKind===`posthog-projects`&&QQ(e,t)===null?C$:null:`Must be a list.`}function c1(e,t){let n={};for(let r of WQ(e)){if(GQ(r))continue;let e=null;r.control===`number`&&(e=r1(r,t[r.path])),r.control===`list`&&(e=s1(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 l1(WQ(e),t,n),n}function l1(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(QQ(r,a))>Number(QQ(i,o))&&(n[r.id]=`Minimum must not exceed the maximum (${o1(o)}).`,n[i.id]=`Maximum must not be below the minimum (${o1(a)}).`)}}function u1(e,t){return WQ(e).find(e=>e.id===t.maximumSettingId||e.maximumSettingId===t.id)}function d1(e,t,n){let r=u1(e,t);return c1([{id:`scoped`,level:`machine`,title:``,description:``,settings:r?[t,r]:[t]}],n)[t.id]??null}function f1(e,t){return e.control===`number`?a1(e,t):e.control===`list`?R$(t):t}function p1(e,t){return QQ(e,e.control===`list`?L$(t):t)}function m1(e){return e?.isDirty===!0}function h1(e,t,n,r,i,a=!1){if(!m1(n))return{kind:`unchanged`};let o=t.control===`number`?i1(t,r,a):null;if(o)return{kind:`invalid`,error:o};let s=f1(t,r);if(F$(QQ(t,s),p1(t,n.base)))return{kind:`unchanged`};let c=d1(e,t,{...i,[t.path]:s});return c?{kind:`invalid`,error:c}:{kind:`changed`,value:s}}function g1(e){return N$(e)?``:JQ(e,e.defaultValue)}function _1(e,t){return F$(t,g1(e))}function v1(e){return e.presentation?e.presentation:(e.options?.length??0)<=w$?`segmented`:`select`}function y1(e){return Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:e===!0}function b1(e,t){return e.danger===!0&&!!e.warning&&y1(t)}function x1(e,t){return b1(e,t)}function S1(e){return e.title.charAt(0).toLowerCase()+e.title.slice(1)}function C1(e){return N$(e)?`Reset removes the stored ${S1(e)}. Anything that relies on it stops until a new one is saved.`:x1(e,g1(e))?e.warning??``:null}function w1(e){return[e.repos.join(`, `),e.trigger,e.actions.map(e=>e.type).join(`, `)].join(` `)}function T1(e){if(e==null)return[`No rules. Add workflows.rules to config.json.`];let t=NZ.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`,w1(e)].join(` `)):[`The workflows block is invalid, so no rule runs: ${t.error.issues[0]?.message??`unknown problem`}`]}function E1(e){let t=NZ.safeParse(e??{});return t.success?t.data.rules.map(e=>({id:e.id,name:e.name,isEnabled:e.enabled,summary:w1(e)})):[]}function D1(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 O1={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},k1=[{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`}],A1=2e4,$=null,j1=null,M1=null,N1=null,P1=null,F1=null,I1=null,L1=`all`,R1=!1,z1=null,B1=null,V1=!0,H1=HA,U1=VA,W1=BA,G1=!1,K1=null,q1=`day`,J1=new Set,Y1=Oc({getAck:ws,setAck:Ts,signature:()=>hA($,M1),isLooking:()=>!ve(N1)}),X1=null,Z1=null,Q1=null,$1=null,e0=null,t0=null,n0=null,r0=null,i0=Od(()=>N1),a0=(e,t)=>he(`usage`,e,t);function o0(e,t,n,r){let i=E(`div`,`usage-tile`);r&&r!==`ok`&&(i.dataset.tone=r);let a=E(`span`,`usage-tile-value`,t);i.append(a,E(`span`,`usage-tile-label`,e));let o=n?E(`span`,`usage-tile-sub`,n):null;return o&&i.append(o),{tile:i,valueEl:a,subEl:o}}function s0(e){let t=Number(e);return Number.isFinite(t)?Math.min(Math.max(t,0),100):0}function c0(e,t,n){let r=E(`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=E(`span`,`usage-meter-fill`);return r.append(i),l0(r,e),r}function l0(e,t){if(!e)return;let n=s0(t);e.setAttribute(`aria-valuenow`,String(Math.round(n)));let r=e.querySelector(`.usage-meter-fill`);r&&(r.style.width=`${n}%`)}function u0(e,t,n,r){let i=E(`div`,`usage-table-scroll`);i.dataset.usageTable=r;let a=E(`table`,`usage-table`),o=E(`thead`),s=E(`tr`);for(let i of e){let e=E(`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`,zA(t,a));let o=E(`button`,`usage-sort`,i.label);o.type=`button`,o.dataset.sortKey=a,o.addEventListener(`click`,()=>{K1={kind:`sort`,table:r,key:a},n(a)}),e.append(o),s.append(e)}o.append(s);let c=E(`tbody`);return a.append(o,c),i.append(a),{wrap:i,body:c}}function d0(e,t){for(let n of t){let t=E(`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 f0(e){let t=E(`div`,`usage-share`);if(!Number.isFinite(e))return t.append(E(`span`,`usage-share-text`,FO(e))),t;let n=E(`span`,`usage-share-bar`),r=E(`span`,`usage-share-fill`);return r.style.width=`${s0(e)}%`,n.append(r),t.append(n,E(`span`,`usage-share-text`,FO(e))),t}function p0(){if(!X1?.isConnected)return;let e=Number($?.ts);X1.textContent=Number.isFinite(e)&&e>0?`Report ${Ed(e)}`:``}function m0(){if(!Z1?.isConnected)return;let e=Number(j1?.ts);Z1.textContent=Number.isFinite(e)&&e>0?`Sessions ${Ed(e)}`:``}function h0(){let e=YO($?.activeBlock);e&&($1?.isConnected&&($1.textContent=`${e.pct}%`),e0?.isConnected&&(e0.textContent=`${GO(e.remainingMinutes)} left`),t0?.isConnected&&l0(t0,e.pct))}function g0(e){let t=TO.find(t=>t.value===e);return t?t.days:null}function _0(){let e=E(`div`,`usage-controls`),t=E(`label`,`usage-control`);t.append(E(`span`,`usage-control-label`,`Range`));let n=E(`select`,`usage-select`);for(let e of TO){let t=E(`option`,null,e.label);t.value=e.value,n.append(t)}n.value=L1,n.addEventListener(`change`,()=>{L1=n.value,t2()}),t.append(n);let r=E(`button`,`usage-refresh`,`Refresh`);r.type=`button`,r.title=`Re-read every transcript from the start`,r.addEventListener(`click`,()=>t2({force:!0}));let i=E(`span`,`usage-refresh-status`,``);return n0=r,r0=i,Z0(),e.append(t,r,i),e}function v0(){let e=a0(`Usage`,BO($?.daily||[]));e.append(_0()),X1=E(`p`,`usage-meta`,``),e.append(X1),p0(),i0.onTick(p0);let t=DA($);t&&e.append(E(`p`,`usage-warning`,t));let n=CA($?.pricing?.missing);return n&&e.append(E(`p`,`usage-warning`,n)),e}function y0(){if(!dA(M1))return null;let e=sA($?.totals),t=a0(`Plan limits`,e?`${pA(`official`)}, ${e}`:pA(`official`)),n=bA(M1?.ts);if(n){let e=E(`p`,`usage-meta`,n);e.dataset.tone=`warn`,t.append(e)}let r=E(`div`,`usage-plan`);for(let e of lA){let t=uA(M1,e.key);t&&r.append(b0(e,t))}return t.append(r),Q1=E(`p`,`usage-meta`,``),t.append(Q1),x0(),i0.onTick(x0),t}function b0(e,t){let n=E(`div`,`usage-plan-window`),r=E(`div`,`usage-plan-head`);r.append(E(`span`,`usage-plan-label`,e.label)),r.append(E(`span`,`usage-plan-used`,gA(t)));let i=E(`span`,`usage-plan-reset`,``);r.append(i),n.append(r),Number.isFinite(t.pct)&&n.append(c0(t.pct,XO(t.pct),`${e.label} plan limit used`));let a=()=>{i.isConnected&&(i.textContent=_A(t.resetsAtMs))};return a(),i0.onTick(a),n}function x0(){if(!Q1?.isConnected)return;let e=vA(M1?.ts);Q1.textContent=e?`Plan ${e}`:``}function S0(){let e=mk($,M1),t=C0();if(e.length===0&&!t)return null;let n=a0(`Glimmervoid overhead`,e.length>0?ok:null);if(e.length>0){let t=E(`div`,`usage-tiles`);for(let n of e){let e=[hk(n),NO(n.costUSD)].filter(Boolean).join(`, `);t.append(o0(`${n.label}, share of Claude use`,FO(n.sharePct),e).tile)}n.append(t);for(let t of e){let e=gk(t);e&&n.append(E(`p`,`usage-meta`,`${t.label}: ${e}`))}}return t&&(n.append(E(`p`,`usage-meta`,`Selected range by lane. ${ak}`)),n.append(t)),n}function C0(){if(!uk($))return null;let e=ck($),t=e.reduce((e,t)=>e+(typeof t.costUSD==`number`&&Number.isFinite(t.costUSD)?t.costUSD:0),0),{wrap:n,body:r}=u0([{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=E(`tr`,`usage-row`);n.lane===`other`&&(e.dataset.lane=`other`),d0(e,[{text:sk(n.lane),className:`usage-lane-cell`},{text:NO(n.costUSD),numeric:!0},{text:PO(n.tokens),numeric:!0},{text:yk(n.sessions),numeric:!0},{node:f0(RO(n.costUSD,t)),className:`usage-share-cell`}]),r.append(e)}return n}function w0(){let e=$?.activeBlock,t=$?.blockHours,n=typeof t==`number`&&Number.isFinite(t)?t:5,r=sA($?.totals),i=a0(`Current block`,r?`${n}h window, ${r}`:`${n}h window`);if(!e){i.append(E(`p`,`usage-empty`,`No active block.`));let e=T0();return e&&i.append(e),i}let a=mA($,M1),o=E(`div`,`usage-tiles`);o.append(o0(`block tokens`,PO(e.tokens??0),NO(e.costUSD??0),a).tile);for(let t of qO(e.burn))o.append(o0(t.label,t.value,t.sub,a).tile);let s=YO(e);if(s){let e=o0(`elapsed`,`${s.pct}%`,`${GO(s.remainingMinutes)} left`);$1=e.valueEl,e0=e.subEl,o.append(e.tile)}i.append(o),s&&(t0=c0(s.pct,`ok`,`Elapsed share of the current block window`),i.append(t0),i0.onTick(h0));let c=JO(e.projection);if(c){let e=E(`p`,`usage-projection`,c);e.dataset.tone=a,i.append(e)}let l=T0();l&&i.append(l);let u=ek($?.tokenLimit);if(!u)return i;let d=QO($?.tokenLimit),f=mA($);i.append(c0(d,f,`Share of the largest completed block seen, estimated`));let p=E(`p`,`usage-meta`,u);p.dataset.tone=f,i.append(p),i.append(E(`p`,`usage-provenance`,pA(`estimated`)));let m=tk(e.projection,$?.tokenLimit);if(m){let e=E(`p`,`usage-meta`,m);e.dataset.tone=f,i.append(e)}return i}function T0(){let e=$?.anomaly;if(!$k(e))return null;let t=E(`p`,`usage-meta`,Zk(e));return t.dataset.tone=Qk(e),t}function E0(){let e=YA($?.blocks);if(e.length===0)return null;let t=sA($?.totals),n=a0(`Recent blocks`,t?`newest first, ${t}`:`newest first`),r=E(`div`,`usage-blocks`),i=e.reduce((e,t)=>Math.max(e,t.tokens),0);for(let t of e){let e=E(`div`,`usage-block`);t.isActive&&(e.dataset.active=`true`),e.append(E(`span`,`usage-block-label`,KO(t.startTs)));let n=E(`span`,`usage-block-bar`),a=E(`span`,`usage-block-fill`);a.style.width=`${s0(RO(t.tokens,i)??0)}%`,n.append(a),e.append(n),e.append(E(`span`,`usage-block-value`,`${PO(t.tokens)} ${NO(t.costUSD)}`)),r.append(e)}return n.append(r),n}function D0(){let e=$?.totals||{},t=JA($?.daily,HO($)),n=a0(`Totals`,[CO,$?.tz?`TZ ${$.tz}`:``].filter(Boolean).join(` `)),r=mA($,M1),i=E(`div`,`usage-tiles`);i.append(o0(`today`,PO(t?.tokens??0),NO(t?.costUSD??0),r).tile),i.append(o0(`range total`,PO(e.tokens??0),NO(e.costUSD??0)).tile);let a=vk($);a&&i.append(o0(a.label,a.value,a.sub).tile),n.append(i);let o=O0(e);o&&n.append(o);let s=aA(e)?iA(e):[];if(s.length>0){let e=E(`div`,`usage-tiles usage-vendor-tiles`);for(let t of s)e.append(o0(t.label,PO(t.tokens),NO(t.costUSD)).tile);n.append(e)}return Z1=E(`p`,`usage-meta`,``),n.append(Z1),m0(),i0.onTick(m0),n}function O0(e){let t=rk(e);if(t.length===0)return null;let n=E(`div`,`usage-compo`),r=E(`div`,`usage-compo-bar`);r.setAttribute(`aria-hidden`,`true`);for(let e of t){if(e.pct<=0)continue;let t=E(`span`,`usage-compo-fill`);t.dataset.part=e.key,t.style.width=`${e.pct}%`,t.title=e.title,r.append(t)}let i=E(`div`,`usage-compo-legend`);for(let e of t){let t=E(`span`,`usage-compo-item`),n=E(`span`,`usage-compo-swatch`);n.dataset.part=e.key,t.append(n,E(`span`,`usage-compo-label`,e.label),E(`span`,`usage-compo-value`,e.value)),i.append(t)}return n.append(r,i),n}function k0(){let e=$?.savings;if(!Sk(e))return null;let t=a0(`Savings`,``),n=E(`div`,`usage-tiles`),r=Ck(e);r&&n.append(o0(`rtk compression`,r.value,r.sub).tile);let i=wk(e);return i&&n.append(o0(`Prompt cache`,i.value,i.sub).tile),t.append(n),t}function A0(){let e=Tk($);if(e.length===0)return null;let t=a0(`Budgets`,`your own ceilings`),n=E(`div`,`usage-budgets`),r=of(`machine-usage`,`usage-daily-budget`,`Budget settings`);n.appendChild(r);for(let t of e){let e=E(`div`,`usage-budget`),r=E(`div`,`usage-budget-head`);r.append(E(`span`,`usage-budget-label`,Ek(t.scope))),r.append(E(`span`,`usage-budget-value`,Dk(t))),r.append(E(`span`,`usage-budget-pct`,FO(Ok(t)))),e.append(r),e.append(c0(Ok(t),t.tone,kk(t))),n.append(e)}return t.append(n),t}function j0(){let e=$?.daily||[],t=q1,n=qA(Bk(e,t),H1),r=Ak.find(e=>e.value===t)?.label||`Day`,i=a0(`Over time`,[Uk(e)].filter(Boolean).join(`, `));if(i.append(M0()),n.length===0)return i.append(E(`p`,`usage-empty`,`No usage.`)),i;let a=P0(e);a&&i.append(a);let{wrap:o,body:s}=u0([{label:r,key:`day`},{label:`Tokens`,numeric:!0,key:`tokens`},{label:`Cost`,numeric:!0,key:`costUSD`},{label:`Models`}],H1,e=>{H1=RA(H1,e),U0()},`day`);for(let e of n){let n=String(e.day??``),r=E(`tr`,`usage-row`);e.source===`history`&&(r.dataset.source=`history`);let i=KA(e.models),a=`${t}:${n}`,o=F0(a,i.length);d0(r,[{node:N0(e,t),title:n},{text:PO(e.tokens),numeric:!0},{text:NO(e.costUSD),numeric:!0},{node:o,className:`usage-toggle-cell`}]),s.append(r),i.length!==0&&J1.has(a)&&s.append(I0(i))}return i.append(o),i}function M0(){let e=E(`div`,`usage-period`);e.setAttribute(`role`,`group`),e.setAttribute(`aria-label`,`Period`);for(let t of Ak){let n=E(`button`,`usage-period-button`,t.label);n.type=`button`,n.dataset.periodView=t.value,n.setAttribute(`aria-pressed`,t.value===q1?`true`:`false`),n.addEventListener(`click`,()=>{q1!==t.value&&(q1=t.value,K1={kind:`period`,view:t.value},U0())}),e.append(n)}return e}function N0(e,t){let n=E(`span`,`usage-period-cell`);return n.append(E(`span`,null,Hk(e.day,t))),e.source===`history`&&n.append(E(`span`,`usage-history-tag`,`history`)),n}function P0(e){let{cells:t,max:n}=qk(e,{today:HO($)});if(t.length===0||n<=0)return null;let r=E(`div`,`usage-heatmap-scroll`),i=E(`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=E(`div`,`usage-heatmap-days`);for(let e of Gk)a.append(E(`span`,`usage-heatmap-day`,e));for(let e of t){let t=E(`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=Jk(e),i.append(t)}return r.append(a,i),r}function F0(e,t){if(t===0)return null;let n=E(`button`,`usage-toggle`,`Models`);return n.type=`button`,n.dataset.usageDay=e,n.setAttribute(`aria-expanded`,J1.has(e)?`true`:`false`),n.addEventListener(`click`,()=>{K1={kind:`day`,day:e},J1.has(e)?(J1.delete(e),U0()):(J1.add(e),U0())}),n}function I0(e){let t=E(`tr`,`usage-row-breakdown`),n=E(`td`,`usage-models`);n.colSpan=4;for(let t of e){let e=E(`span`,`usage-model-chip`);e.append(E(`span`,`usage-model-name`,NA(t)),E(`span`,`usage-model-value`,`${PO(t.tokens)} ${NO(t.costUSD)}`)),n.append(e)}return t.append(n),t}function L0(e,t){let n=E(`span`,`usage-model-name-wrap`),r=rA(e,t);return r&&n.append(E(`span`,`usage-vendor-tag`,r)),n.append(E(`span`,null,NA(e))),n}function R0(){let e=KA($?.models,U1),t=$?.totals||{},n=IO(t),r=a0(`By model`,LO(n));if(e.length===0)return r.append(E(`p`,`usage-empty`,`No models.`)),r;let{wrap:i,body:a}=u0([{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`}],U1,e=>{U1=RA(U1,e),U0()},`model`);for(let r of e){let e=E(`tr`,`usage-row`);d0(e,[{node:L0(r,t),className:`usage-model-cell`,title:NA(r)},{text:PO(r.tokens),numeric:!0},{text:NO(r.costUSD),numeric:!0},{node:f0(RO(r[n],t[n])),className:`usage-share-cell`},{text:PO(r.input),numeric:!0},{text:PO(r.output),numeric:!0},{text:PO(r.cacheCreate),numeric:!0},{text:PO(r.cacheRead),numeric:!0}]),a.append(e)}return r.append(i),r}function z0(){let e=UA($?.sessions,W1),t=WA(e,G1),n=$?.totals||{},r=IO(n),i=a0(`By session`,LO(r));if(e.length===0)return i.append(E(`p`,`usage-empty`,`No sessions.`)),i;let{wrap:a,body:o}=u0([{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`}],W1,e=>{W1=RA(W1,e),U0()},`session`);for(let e of t.rows){let t=E(`tr`,`usage-row`);jA(e)&&(t.dataset.managed=`true`);let i=MA(e),a=E(`span`,`usage-ago`,``);d0(t,[{text:i,className:`usage-session-cell`,title:e.project?String(e.project):i},{text:PO(e.tokens),numeric:!0},{text:NO(e.costUSD),numeric:!0},{node:f0(RO(e[r],n[r])),className:`usage-share-cell`},{node:a,numeric:!0}]),i0.track(a,Number(e.lastTs),Ed),o.append(t)}return i.append(a),e.length>10&&i.append(B0(t.hiddenCount)),i}function B0(e){let t=E(`div`,`usage-overflow`),n=GA(e);n&&t.append(E(`p`,`usage-meta`,n));let r=E(`button`,`usage-toggle`,`All sessions`);return r.type=`button`,r.dataset.usageSessionsToggle=`true`,r.setAttribute(`aria-expanded`,G1?`true`:`false`),r.addEventListener(`click`,()=>{K1={kind:`sessions-toggle`},G1=!G1,U0()}),t.append(r),t}function V0(){let e=a0(`Not available`,``);return e.append(E(`p`,`usage-empty`,EA($))),e.append(E(`p`,`usage-empty`,wO)),e}function H0(){X1=null,Z1=null,Q1=null,$1=null,e0=null,t0=null,n0=null,r0=null}function U0({force:e=!1}={}){if(!N1||!e&&ve(N1))return;let t=N1.parentElement,n=t?t.scrollTop:0;i0.reset(),H0(),N1.textContent=``,K0(),t&&(t.scrollTop=n),W0()}function W0(){let e=K1;if(K1=null,!e)return;let t=G0(e);if(!t||!N1)return;let n=N1.querySelector(t);n instanceof HTMLElement&&n.focus()}function G0(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 K0(){if(!N1)return;N1.append(v0());let e=y0();if(OA($)){e&&N1.append(e),N1.append(V0());return}if(!$){e&&N1.append(e),N1.append(E(`p`,`usage-empty`,`Waiting for scan.`));return}let t=[e,A0()].filter(e=>e!==null);N1.append(q0(`usage-band-now`,w0(),t,{sideFirst:!0}));let n=[k0()].filter(e=>e!==null);N1.append(q0(`usage-band-spend`,D0(),n));let r=[E0()].filter(e=>e!==null);N1.append(q0(`usage-band-trend`,j0(),r));let i=S0();i&&N1.append(i),N1.append(R0(),z0())}function q0(e,t,n,{sideFirst:r=!1}={}){if(n.length===0)return t;let i=E(`div`,`usage-band ${e}`),a=E(`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 J0(){P1&&P1(Y1.refresh())}function Y0(){Y1.acknowledge(),J0()}function X0(){return V1?R1?`Refreshing`:B1??``:$?`${G} The figures below are from before the connection dropped.`:G}function Z0(){n0&&(n0.disabled=R1),r0&&(r0.textContent=X0(),!V1||!R1&&B1!==null?r0.dataset.tone=`error`:delete r0.dataset.tone)}function Q0(e){R1=e,Z0(),z1&&=(clearTimeout(z1),null),e&&(z1=setTimeout(()=>{z1=null,R1=!1,B1=`Usage did not answer within ${Math.round(A1/1e3)} s. Refresh to try again.`,Z0()},A1))}function $0(e){P1=e,J0()}function e2(e){F1=e}function t2({force:e=!1}={}){if(!F1)return;I1=uu(`usage`);let t={type:`request-usage-report`,requestId:I1};e&&(t.force=!0);let n=g0(L1);n!==null&&(t.days=n),B1=null,Q0(!0),!F1(t)&&(B1=G,Q0(!1))}function n2(e){V1=e,Z0()}function r2(e){if(N1)return N1;let t=E(`div`,`usage-content`);return e.appendChild(t),N1=t,i0.ensure(),U0({force:!0}),t}function i2(){U0({force:!0})}function a2(e){j1=e,$&&!OA($)&&Z1?.isConnected?m0():U0()}function o2(e){M1=e,U0(),J0()}function s2(e){kA(e,I1)&&(B1=null,Q0(!1),$=e,U0(),J0())}function c2(){let e=$?.pricing||(j1?{source:j1.pricingSource}:null),t=SA(e?.fetchedAt),n=[xA(e,t!==null&&t>0?Ed(t):``)],r=EA($);r&&n.push(r);let i=TA($?.scan);return i&&n.push(i),n}var l2=Object.freeze({sounds:()=>Tv(),themes:qv}),u2=2200,d2=1600,f2=`browser-appearance`,p2=`browser-shortcuts`,m2=`lanes-features`,h2=Object.freeze({id:m2,level:`lanes`,title:`Features`,description:`Optional tabs, each hidden until its own toggle is on.`,settings:[]}),g2=`flying-animals`,_2=Object.freeze({ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1});function v2(e){if(!e.optionsFrom)return e;let t=l2[e.optionsFrom]?.()??[];return{...e,options:t.map(e=>({value:e.id,label:e.label}))}}function y2(){let e=LQ.sections.map(e=>({...e,settings:e.settings.map(v2)})),t=e.findIndex(e=>e.level===`lanes`);return Object.freeze([...e.slice(0,t),h2,...e.slice(t)])}var b2=y2(),x2=!1,S2=null,C2=null,w2=null,T2=null,E2=null,D2=null,O2=null,k2=null,A2=b2[0],j2={},M2={},N2=new Map,P2=new Map,F2=new Map,I2=new WeakMap,L2=Promise.resolve(),R2=new Map,z2=``,B2=null,V2=null,H2=Ol,U2=()=>{},W2=null,G2=!1,K2=!1,q2=null,J2=new Set,Y2=new Map;function X2(){return{themeId:Jo(),flyingAnimalsEnabled:Xo(),...Bs(),soundEnabled:Ro(),soundId:Ev(Bo()),notificationsEnabled:Ho(),sessionUsageChips:Wo(),phoneArrowPad:Ko()}}function Z2(e){M2=Y$(b2,{...e,prefs:X2()})}function Q2(e){return F2.has(e.id)?F2.get(e.id):M2[e.path]}function $2(e){return[e,...W$(b2,e.id)]}function e4(e){return $2(e).flatMap(e=>e.settings)}function t4(e){return b2.find(t=>t.settings.some(t=>t.id===e.id))??A2}function n4(e,t=null){history.replaceState(history.state,``,nf(e,t))}function r4(e){requestAnimationFrame(()=>{let t=document.getElementById(e),n=t?.closest(`.settings-view-advanced-panel`);n&&(x2=!0,n.hidden=!1,k2?.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 i4(e){for(let t of fv(pv)){let n=E(`div`,`shortcut-group`);n.appendChild(E(`div`,`shortcut-group-title`,t.title));let r=E(`dl`,`shortcut-rows`);for(let e of t.items){let t=E(`dt`,`shortcut-keys`);e.combos.forEach((e,n)=>{n>0&&t.appendChild(E(`span`,`shortcut-sep`,`/`)),mv(t,e)}),r.append(t,E(`dd`,`shortcut-label`,e.label))}n.appendChild(r),e.appendChild(n)}}var a4=[];function o4(e){a4=e}function s4(e){return a4.find(t=>t.gate!==void 0&&`fromSettings`in t.gate&&t.gate.fromSettings===e)?.label}function c4(e){let t=E(`ul`,`settings-view-stack settings-features`);for(let e of k1){let n=b2.find(t=>t.id===e.sectionId),r=u4(e.settingId),i=s4(O1[e.rule]);if(!n||!r||!i)continue;let a=Q2(r)===!0,o=E(`li`,`settings-feature`),s=E(`div`,`settings-feature-head`);s.append(E(`span`,`settings-feature-name`,i),f3(`feature`,a?`On`:`Off`)),o.append(s,E(`p`,`settings-view-section-description`,n.description),of(e.sectionId,e.settingId,r.title)),t.appendChild(o)}e.appendChild(t)}function l4(e){let t=E(`div`,`settings-about`),n=E(`span`,`settings-about-version`,`GLIMMERVOID `);n.appendChild(E(`span`,`settings-about-v`,`v0.39.0`));let r=E(`span`,`settings-about-links`),i=E(`a`,`settings-about-link`,`GitHub`);i.href=`https://github.com/${cZ}`,i.target=`_blank`,i.rel=`noopener`;let a=E(`a`,`settings-about-link`,`Changelog`);a.href=`https://github.com/${cZ}/blob/main/CHANGELOG.md`,a.target=`_blank`,a.rel=`noopener`,r.append(i,a),t.append(n,r),e.appendChild(t)}function u4(e){return b2.flatMap(e=>e.settings).find(t=>t.id===e)??null}function d4(e){if(M2[`pref:soundEnabled`]===e)return;M2[`pref:soundEnabled`]=e;let t=u4(`alert-sounds-enabled`);t&&T3(t)}var f4={"pref:flyingAnimalsMinGapSeconds":e=>Ms(Number(e)),"pref:flyingAnimalsMaxGapSeconds":e=>Ns(Number(e)),"pref:flyingAnimalsMinDurationSeconds":e=>Ps(Number(e)),"pref:flyingAnimalsMaxDurationSeconds":e=>Fs(Number(e)),"pref:flyingAnimalsScale":e=>Is(Number(e)),"pref:flyingAnimalsOnPhone":e=>Ls(e===!0)};function p4(e,t){if(e.path===`pref:sessionUsageChips`){Go(t===!0),Wv(t===!0);return}if(e.path===`pref:phoneArrowPad`){qo(t===!0),Gv(t===!0);return}if(e.path===`pref:themeId`){Yo(String(t)),Uv(String(t));return}if(e.path===`pref:flyingAnimalsEnabled`){Zo(t===!0),oZ(t===!0);return}let n=f4[e.path];n?(n(t),oZ(Xo())):e.path===`pref:soundEnabled`?Uq(t===!0):e.path===`pref:soundId`?(Vo(String(t)),Lv(String(t))):e.path===`pref:notificationsEnabled`&&(Uo(t===!0),t===!0&&Gd().then(()=>T3(e,{force:!0})))}function m4(e,t){let n=P2.get(e.id);n!==void 0&&clearTimeout(n),P2.delete(e.id),t&&N2.set(e.id,t),t||N2.delete(e.id),E3(e)}function h4(e){m4(e,{tone:`saved`,text:`Saved`}),P2.set(e.id,window.setTimeout(()=>m4(e,null),u2))}function g4(e,t){R2.delete(e.id),e.path.startsWith(`pref:`)?(M2[e.path]=t,p4(e,t),T3(e),h4(e)):F2.has(e.id)&&JSON.stringify(F2.get(e.id))===JSON.stringify(t)||(F2.set(e.id,t),m4(e,{tone:`saving`,text:`Saving`}),L2=L2.then(()=>_4(e,t)))}async function _4(e,t){let n=Z$(b2,M2,e,t);if(Object.keys(n).length===0)F2.delete(e.id),m4(e,null),T3(e);else{m4(e,{tone:`saving`,text:`Saving`});try{let r=await du(`update-settings`,{settings:n});if(F2.get(e.id)===t&&F2.delete(e.id),r.type===`settings-error`){m4(e,{tone:`error`,text:String(r.message)}),T3(e,{force:!0});return}if(r.type!==`settings-updated`){m4(e,{tone:`error`,text:`The server did not confirm the save.`}),T3(e,{force:!0});return}i6(r.settings),h4(e)}catch(n){F2.get(e.id)===t&&F2.delete(e.id),m4(e,{tone:`error`,text:n?.message||`Failed to save the setting.`}),T3(e,{force:!0})}}}function v4(e,t){t&&R2.set(e.id,t),t||R2.delete(e.id),E3(e)}function y4(e,t){if(!t.exclusiveMin)return t.min;if(e.integer!==!1)return t.min+1}function b4(e){return e?`On`:`Off`}function x4(e){let t=E(`div`,`settings-view-toggle-wrap`),n=E(`label`,`settings-view-toggle`),r=E(`input`,`settings-view-checkbox`);r.type=`checkbox`,r.checked=Q2(e)===!0,e.id===`desktop-notifications`&&!Ud()&&(r.checked=!1,r.disabled=!0),r.setAttribute(`aria-labelledby`,e.id);let i=E(`span`,`settings-view-toggle-state`,b4(r.checked));return r.addEventListener(`change`,()=>{let t=r.checked;x1(e,t)?(r.checked=!1,i.textContent=b4(!1),Xu({title:e.title,message:e.warning??``,confirmLabel:`Turn on`,danger:!0,onConfirm:()=>g4(e,!0)})):(i.textContent=b4(t),g4(e,t))}),n.append(r,i),t.appendChild(n),t}function S4(e,t,n){e.addEventListener(`blur`,t),e.addEventListener(`keydown`,e=>{e.key===`Enter`?(e.preventDefault(),t()):e.key===`Escape`&&(e.preventDefault(),n())})}function C4(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&[`text`,`number`,`password`].includes(e.type)}function w4(e,t){I2.set(t,{base:Q2(e),isDirty:!1}),t.addEventListener(`input`,()=>{let e=I2.get(t);e&&(e.isDirty=!0)})}function T4(e,t,n){t.value!==n&&(t.value=n),I2.set(t,{base:Q2(e),isDirty:!1}),v4(e,null)}function E4(e,t,n,r=!1){let i=I2.get(t);if(!i)return;let a=h1(b2,e,i,t.value,M2,r);a.kind===`invalid`?v4(e,a.error):a.kind===`unchanged`?T4(e,t,n):x1(e,a.value)?(T4(e,t,n),Xu({title:e.title,message:e.warning??``,confirmLabel:`Save`,danger:!0,onConfirm:()=>g4(e,a.value)})):(I2.set(t,{base:a.value,isDirty:!1}),g4(e,a.value))}function D4(e){let t=E(`input`,`settings-view-input`);t.type=e.control===`password`?`password`:`text`;let n=()=>String(Q2(e)??``);t.value=n(),e.control===`password`&&(t.value=``,t.placeholder=n()?`Configured`:`Not configured`);let r=j$(e,j2);return r&&(t.disabled=!0,t.setAttribute(`aria-description`,`Supplied by ${r}`)),t.autocomplete=`off`,t.spellcheck=!1,t.setAttribute(`aria-labelledby`,e.id),w4(e,t),S4(t,()=>{if(e.control===`password`){let n=t.value;if(n===``)return;T4(e,t,``),g4(e,n)}else E4(e,t,n())},()=>T4(e,t,e.control===`password`?``:n())),t}function O4(e){let t=E(`input`,`settings-view-input`),n=z$(e);t.type=`number`;let r=()=>o1(Q2(e));t.value=r(),t.step=e.integer===!1?String(e.step??`any`):`1`;let i=n?y4(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),w4(e,t),S4(t,()=>E4(e,t,r(),t.validity.badInput),()=>T4(e,t,r()));let a=e.unit?.label;if(!a)return t;let o=E(`div`,`settings-view-number`),s=E(`span`,`settings-view-unit`,a);return s.setAttribute(`aria-hidden`,`true`),t.setAttribute(`aria-description`,a),o.append(t,s),o}function k4(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 A4(e,t,n){n!==String(Q2(e))&&(k4(t,n),g4(e,n),k4(t,String(Q2(e))))}function j4(e){let t=E(`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=E(`button`,`settings-view-segment`,r.label);n.type=`button`,n.dataset.value=r.value,n.setAttribute(`role`,`radio`),n.addEventListener(`click`,()=>A4(e,t,r.value)),t.appendChild(n)}return t.addEventListener(`keydown`,r=>{let i=_2[r.key];if(!i||n.length===0)return;r.preventDefault();let a=Math.max(0,n.findIndex(t=>t.value===String(Q2(e)))),o=n[(a+i+n.length)%n.length];A4(e,t,o.value),t.querySelector(`[data-value="${CSS.escape(o.value)}"]`)?.focus()}),k4(t,String(Q2(e))),t}function M4(e){let t=E(`select`,`settings-view-input`);t.setAttribute(`aria-labelledby`,e.id);for(let n of e.options??[]){let e=E(`option`,null,n.label);e.value=n.value,t.appendChild(e)}return t.value=String(Q2(e)),t.addEventListener(`change`,()=>g4(e,t.value)),t}function N4(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 P4(e){let t=E(`textarea`,`settings-view-input settings-view-list-input`),n=()=>L$(Q2(e)),r=()=>n().join(`
147
+ `);t.rows=3,t.value=r(),t.autocomplete=`off`,t.spellcheck=!1,t.placeholder=e.listPlaceholder??``,t.setAttribute(`aria-labelledby`,e.id),w4(e,t),t.addEventListener(`blur`,()=>E4(e,t,r())),t.addEventListener(`keydown`,n=>{n.key===`Escape`?(n.preventDefault(),T4(e,t,r())):n.key!==`Enter`||n.shiftKey||(n.preventDefault(),E4(e,t,r()))});let i=E(`div`,`settings-view-list`);return i.append(t,E(`span`,`settings-view-list-hint`,N4(e,n()))),i}function F4(e){let t=E(`div`,`settings-view-projects`),n=Q2(e),r=new Set(Array.isArray(n)?n:[]),i=Array.isArray(j2.projectChoices)?j2.projectChoices:[];i.length===0&&t.appendChild(E(`div`,`settings-empty`,`No configured projects are available.`));for(let n of y$(i,[...r])){let i=E(`label`,`settings-view-project-choice`),a=E(`input`,`settings-view-checkbox`);a.type=`checkbox`,a.checked=r.has(n.id),a.addEventListener(`change`,()=>{let t=Q2(e),r=new Set(Array.isArray(t)?t:[]);a.checked&&r.add(n.id),a.checked||r.delete(n.id),g4(e,[...r])}),i.append(a,document.createTextNode(n.name)),t.appendChild(i)}return t}function I4(e,t,{isPrimary:n=!1,isEnabled:r=!0}={}){let i=E(`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 L4(e){let t=E(`span`,`settings-update-action-status`,e??``);return t.setAttribute(`role`,`status`),t}function R4(e){let t=Al(H2,e);t!==H2&&(H2=t,c6())}function z4(){R4(K({type:`update-apply`})?`request-sent`:`request-unsent`)}function B4(){W2=Date.now();let e=K({type:`update-check`});K2=e,q2=e?null:G,c6()}function V4(){return K2?`Checking for updates.`:q2}function H4(){B2?(G2=!1,Yl({status:B2,checkForUpdates:j2.checkForUpdates,now:Date.now(),lastAutoCheckAt:W2})&&B4()):G2=!0}function U4(e){return e===`update`?I4(`Update`,z4,{isPrimary:!0}):e===`restart`?I4(`Restart`,U2,{isPrimary:!0}):I4(`Check for updates`,B4,{isEnabled:!K2})}function W4(){let e=Pl({status:B2,journal:V2,request:H2}),t=E(`div`,`settings-update-actions`);if(e.actions.length>0){let n=E(`div`,`settings-update-buttons`);n.append(...e.actions.map(U4)),t.appendChild(n)}let n=V4();return n&&t.appendChild(L4(n)),e.note&&t.appendChild(L4(e.note)),e.command&&t.appendChild(E(`code`,`settings-update-command`,e.command)),t}function G4(e,...t){let n=E(`div`,`settings-update-fact`);return n.append(E(`span`,`settings-update-fact-label`,e),...t),n}function K4(){let e=Ul(V2);if(!e)return null;let t=E(`div`,`settings-update-progress`);t.dataset.state=e.state,t.setAttribute(`role`,`status`),e.terminalLine&&t.appendChild(E(`div`,`settings-update-terminal`,e.terminalLine));let n=E(`ol`,`settings-update-steps`);for(let t of e.steps){let e=E(`li`,`settings-update-step`);e.dataset.status=t.status,e.append(E(`span`,`settings-update-step-state`,t.status),E(`span`,`settings-update-step-label`,t.label)),n.appendChild(e)}if(t.appendChild(n),e.outputTail.length===0)return t;let r=E(`pre`,`settings-update-output`,e.outputTail.join(`
148
+ `));if(e.outputStepId&&(r.dataset.step=e.outputStepId),!e.outputStepLabel)return t.appendChild(r),t;let i=`Output from ${e.outputStepLabel}`;return r.setAttribute(`aria-label`,i),t.append(E(`div`,`settings-update-output-label`,i),r),t}function q4(){let e=Jl(B2),t=[e.label];if(e.behind&&t.push(E(`span`,`settings-update-behind`,e.behind)),e.releaseUrl){let n=E(`a`,`settings-link`,`View release`);n.href=e.releaseUrl,n.target=`_blank`,n.rel=`noopener noreferrer`,t.push(n)}return G4(`Latest`,...t)}function J4(){let e=E(`div`,`settings-view-status-block settings-update-status`),t=Kl(B2,V2),n=E(`div`,`settings-update-summary`,t.headline);n.dataset.tone=t.tone,e.appendChild(n),e.appendChild(G4(`Running`,ql(B2))),B2?.updateAvailable&&e.appendChild(q4());let r=typeof B2?.lastCheckAt==`number`?B2.lastCheckAt:null,i=G4(`Last checked`,Xl({status:B2,checkForUpdates:j2.checkForUpdates,relativeTime:Ed(r)}));r&&(i.title=new Date(r).toLocaleString()),e.appendChild(i),e.appendChild(W4());let a=K4();return a&&e.appendChild(a),e}function Y4(e){return e===null?`not probed yet`:e?`resolved`:`not found on PATH`}function X4(){let e=Array.isArray(j2.customAgents)?j2.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} ${Y4(e.resolvable)}`})}function Z4(){let e=E(`div`,`settings-view-status-block`);e.appendChild(E(`div`,`settings-section-title`,`Declared agents`));for(let t of X4())e.appendChild(E(`div`,`settings-readonly`,t));return e}function Q4(e){Y2.set(e,{tone:`ok`,text:`Saved`}),window.setTimeout(()=>{Y2.get(e)?.tone===`ok`&&(Y2.delete(e),s6())},u2)}async function $4(e,t){J2.add(e.id),Y2.delete(e.id),s6();try{let n=await du(`update-settings`,{settings:{workflows:{rules:[{id:e.id,enabled:t}]}}},{timeoutMs:q});if(J2.delete(e.id),n.type===`settings-error`&&Y2.set(e.id,{tone:`error`,text:String(n.message)}),n.type===`settings-updated`){Q4(e.id),i6(n.settings);return}}catch(t){Y2.set(e.id,{tone:`error`,text:Cu(t,q)})}J2.delete(e.id),s6()}function e3(e){let t=xu(`settings-workflow-rule-status`);if(J2.has(e.id))return t.show(`busy`,`Saving`),t.element;let n=Y2.get(e.id);return n&&t.show(n.tone,n.text),t.element}function t3(e){let t=E(`div`,`settings-view-toggle-wrap`),n=E(`label`,`settings-view-toggle`),r=E(`input`,`settings-view-checkbox`);return r.type=`checkbox`,r.checked=e.isEnabled,r.disabled=J2.has(e.id),r.setAttribute(`aria-label`,`Run rule ${e.name}`),r.addEventListener(`change`,()=>{$4(e,r.checked)}),n.append(r,E(`span`,`settings-view-toggle-state`,b4(e.isEnabled)),E(`span`,`settings-readonly`,`${e.name} ${e.summary}`)),t.append(n,e3(e)),t}function n3(){let e=E(`div`,`settings-view-status-block`);e.appendChild(E(`div`,`settings-section-title`,`Rules`));let t=E1(j2.workflows);if(t.length>0){for(let n of t)e.appendChild(t3(n));return e}for(let t of T1(j2.workflows))e.appendChild(E(`div`,`settings-readonly`,t));return e}function r3(){let e=E(`div`,`settings-view-status-block`);e.appendChild(E(`div`,`settings-section-title`,`Last report`));for(let t of c2())e.appendChild(E(`div`,`settings-readonly`,t));return e}function i3(e){return e.status===`update-actions`?J4():e.status===`custom-agents`?Z4():e.status===`workflows`?n3():E(`div`,`settings-readonly`,`Not available`)}function a3(e){return e.control===`readonly`?i3(e):e.control===`toggle`?x4(e):e.control===`number`?O4(e):e.control===`select`?v1(e)===`segmented`?j4(e):M4(e):e.control===`list`?P4(e):e.control===`projects`?F4(e):D4(e)}function o3(e){let t=j$(e,j2);return t?`Supplied by ${t}. Change the server environment and restart to replace this credential.`:e.status!==`rtk-install`||Q2(e)!==!0||j2.rtkAvailable?``:M$(j2)}function s3(e){if(e.control===`readonly`)return null;if(e.status===`usage-last-report`){let e=r3();return e.classList.add(`settings-view-status-slot`),e}if(e.id===`desktop-notifications`)return d3(e);if(e.status===`telegram-delivery`)return u3();let t=o3(e);return t?E(`div`,`settings-view-warning settings-view-status-slot`,t):null}function c3(){let e=Li.safeParse(j2.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 l3(e){e.replaceChildren(...c3().map(e=>E(`p`,`settings-view-warning`,e)))}function u3(){let e=E(`div`,`settings-view-status-slot settings-telegram-delivery`),t=E(`div`,`settings-telegram-delivery-lines`);l3(t);let n=E(`button`,`btn-dialog btn-dialog-cancel`,`Send test message`);n.type=`button`;let r=xu(`settings-telegram-test-status`);n.addEventListener(`click`,async()=>{n.disabled=!0;let e=await wu(`telegram-test`,{},r,{busyText:`Sending a test message to Telegram.`});n.disabled=!1,e?.type===`telegram-test-result`&&(j2={...j2,telegramDelivery:e.telegramDelivery},l3(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=E(`div`,`settings-telegram-test`);return i.append(n,r.element),e.append(t,i),e}function d3(e){let t=Jd(()=>T3(e,{force:!0}));return t.element.hidden?null:(t.element.classList.add(`settings-view-status-slot`),t.element)}function f3(e,t){let n=E(`span`,`settings-view-chip`,t);return n.dataset.chip=e,n}function p3(e,t){let n=ye(e);return n?n.then(()=>t,()=>`Copy failed`):Promise.resolve(`Copy failed`)}function m3(e,t,{copiedText:n,textToCopy:r}){let i=E(`span`,`settings-view-copy-status`);i.setAttribute(`role`,`status`),t.type=`button`,t.addEventListener(`click`,async()=>{i.textContent=await p3(r(),n),setTimeout(()=>{i.textContent=``},d2)}),e.append(t,i)}function h3(e){let t=E(`div`,`settings-view-setting-heading`),n=t4(e),r=E(`h2`,`settings-view-setting-title`,e.title);r.id=e.id,r.addEventListener(`click`,()=>n4(n.id,e.id));let i=E(`button`,`settings-view-copy-link`,`#`);return i.setAttribute(`aria-label`,`Copy link`),t.appendChild(r),m3(t,i,{copiedText:`Link copied`,textToCopy:()=>new URL(nf(n.id,e.id),location.href).href}),t}function g3(e){let t=E(`div`,`settings-view-chips`);return t.append(f3(`scope`,A$[e.scope]),f3(`effect`,k$[e.takesEffect])),t}function _3(e){return e.control===`readonly`||j$(e,j2)?!1:!_1(e,Q2(e))}function v3(e){let t=E(`div`,`settings-view-control-foot`),n=E(`span`,`settings-view-save-status`);n.setAttribute(`role`,`status`);let r=E(`button`,`settings-view-reset`,`Reset`);return r.type=`button`,r.title=`Reset to the default value`,r.addEventListener(`click`,()=>{let t=g1(e),n=C1(e);n===null?g4(e,t):Xu({title:e.title,message:n,confirmLabel:`Reset`,danger:!0,onConfirm:()=>g4(e,t)})}),t.append(n,r),t}function y3(e,t){let n=e.querySelector(`.settings-view-save-status`),r=N2.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=!_3(t));let a=e.querySelector(`.settings-view-field-error`),o=R2.get(t.id);a&&!o&&a.remove(),a&&o&&(a.textContent=o),!a&&o&&e.querySelector(`.settings-view-setting-control`)?.appendChild(E(`div`,`settings-view-field-error`,o))}function b3(e){let t=E(`article`,`settings-view-setting`);t.dataset.settingId=e.id,e.control===`readonly`&&(t.dataset.readout=`true`);let n=E(`div`,`settings-view-setting-text`);n.append(h3(e),E(`p`,`settings-view-setting-description`,e.description),g3(e));let r=E(`div`,`settings-view-setting-control`);r.appendChild(a3(e)),e.control!==`readonly`&&r.appendChild(v3(e)),t.append(n,r),b1(e,Q2(e))&&t.appendChild(E(`div`,`settings-view-warning settings-warning`,e.warning));let i=s3(e);return i&&t.appendChild(i),y3(t,e),t}function x3(e){return k2?.querySelector(`[data-setting-id="${e.id}"]`)??null}function S3(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 C3(e,t){if(!C4(e)||!C4(t))return;e.disabled=t.disabled,e.placeholder=t.placeholder;let n=I2.get(t);n&&!m1(I2.get(e))&&(I2.set(e,{base:n.base,isDirty:!1}),e.value!==t.value&&(e.value=t.value))}function w3(e,t,n){if(e===n){C3(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)?w3(i,a,n):i.replaceWith(a):e.appendChild(a)}for(let e of r.slice(i.length))e.remove()}function T3(e,{force:t=!1}={}){let n=x3(e);if(!n)return;let r=document.activeElement,i=n.contains(r),a=i&&!t&&C4(r)?r:null;(!a||!m1(I2.get(a)))&&R2.delete(e.id);let o=b3(e);a?w3(n,o,a):(n.replaceWith(o),i&&S3(o))}function E3(e){let t=x3(e);t&&y3(t,e)}function D3(e){x3(e)?.querySelector(`.settings-view-setting-control`)?.replaceChildren(i3(e))}function O3(){for(let e of e4(A2))e.control===`readonly`?D3(e):T3(e)}function k3(){let e=E(`button`,`btn-dialog btn-dialog-cancel`,`Reset all to defaults`);return e.type=`button`,e.addEventListener(`click`,()=>{Vs(),Z2(j2),oZ(Xo()),P3()}),e}function A3(e){let t=E(`div`,`settings-view-advanced`),n=E(`button`,`dialog-advanced-toggle settings-view-advanced-toggle`,`Advanced`);n.type=`button`,n.setAttribute(`aria-expanded`,String(x2)),n.setAttribute(`aria-controls`,`settings-view-advanced-panel`);let r=E(`div`,`dialog-advanced-panel settings-view-advanced-panel`);r.id=`settings-view-advanced-panel`,r.hidden=!x2,n.addEventListener(`click`,()=>{x2=!x2,r.hidden=!x2,n.setAttribute(`aria-expanded`,String(x2))});for(let t of e)r.append(b3(t));return A2.id===f2&&r.append(k3()),t.append(n,r),t}function j3(e){let t=E(`div`,`settings-view-streamer-placeholder`),n=E(`button`,`btn-dialog btn-dialog-confirm`,`Turn off streamer mode`);n.type=`button`;let r=E(`span`,`settings-view-copy-status`,``);r.setAttribute(`role`,`status`),n.addEventListener(`click`,async()=>{n.disabled=!0,r.textContent=``;let e=await _p(!1);n.disabled=!1,r.textContent=e}),t.append(E(`p`,`settings-view-section-description`,`Settings are hidden in streamer mode.`),n,r),e.appendChild(t)}gp(()=>P3());function M3(e){let t=E(`header`,`settings-view-subsection`),n=E(`h2`,`settings-view-subsection-title`,e.title);return n.addEventListener(`click`,()=>n4(e.id)),t.append(n,E(`p`,`settings-view-section-description`,e.description)),t}function N3(e,t){for(let n of t.settings.filter(e=>e.access!==`advanced`))e.appendChild(b3(n)),n.id===g2&&e.appendChild(sZ());let n=t.settings.filter(e=>e.access===`advanced`);n.length>0&&e.append(A3(n))}function P3(){if(K3(),z2){H3();return}if(!k2)return;if(k2.textContent=``,mp()){j3(k2);return}let e=E(`header`,`settings-view-section-header`),t=E(`h1`,`settings-view-section-title`,A2.title);if(t.tabIndex=-1,t.addEventListener(`click`,()=>n4(A2.id)),e.append(t,E(`p`,`settings-view-section-description`,A2.description)),k2.appendChild(e),A2.id===p2){let e=E(`div`,`shortcut-groups settings-view-shortcuts`);i4(e),k2.appendChild(e),k2.appendChild(Oh()),k2.appendChild(kh()),l4(k2);return}if(A2.id===m2){c4(k2);return}let n=E(`div`,`settings-view-stack`);for(let e of $2(A2))e.id!==A2.id&&n.appendChild(M3(e)),N3(n,e);k2.appendChild(n)}function F3(e,{focusContent:t=!1,settingId:n=null,updateHash:r=!0,openPhoneSection:i=!0}={}){r&&z2&&(z2=``,E2&&(E2.value=``));let a=G$(b2,e)??A2;A2.id!==a.id&&(x2=!1),A2=a;let o=b2.find(t=>t.id===e)??a;I3(T2),i&&P_()&&(D2=o.id),P3(),e6(A2)&&$3(),A2.id===`machine-updates`&&H4(),r&&n4(o.id,n),n&&r4(n),t&&k2?.querySelector(`h1`)?.focus()}function I3(e){for(let t of e?.querySelectorAll(`[data-settings-section]`)||[]){let e=t.dataset.settingsSection===A2.id;t.setAttribute(`aria-current`,e?`page`:`false`)}}function L3(e){return e.section!==null}function R3(e){E2&&(E2.value=``,z2=``,Y3(),F3(e.section.id,{settingId:e.setting.id}))}function z3(e){return m$(LQ.sections,e,LQ.fileOnly)}function B3(e,t,n,r,i){let a=E(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),E(`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 V3(e,t){let{currentText:n,defaultText:r,jsonFragment:i}=V$(t.setting,j2);if(n!==null&&e.appendChild(E(`span`,`settings-view-search-current`,n)),e.append(E(`span`,`settings-view-search-default`,r),g3(t.setting),E(`p`,`settings-view-list-hint`,`Edit in config.json or with glimmervoid settings set.`)),i===null)return;let a=E(`div`,`settings-view-control-foot`);m3(a,E(`button`,`settings-view-copy-json`,`Copy as JSON`),{copiedText:`JSON copied`,textToCopy:()=>i}),e.appendChild(a)}function H3(){if(!k2)return;if(k2.textContent=``,mp()){j3(k2);return}let e=z3(z2),t=E(`div`,`settings-view-section-header`);if(t.append(E(`h1`,`settings-view-section-title`,`Settings search`),E(`p`,`settings-view-section-description`,`${e.length} ${e.length===1?`result`:`results`} for "${z2}"`)),k2.appendChild(t),e.length===0){k2.appendChild(E(`p`,`settings-empty settings-view-search-empty`,`No settings found.`));return}let n=E(`ol`,`settings-view-search-results`);n.setAttribute(`aria-label`,`Settings search results`);for(let t of e){let e=E(`li`,`settings-view-search-result`);e.tabIndex=-1;let r=H$(b2,t.section,t.setting);e.appendChild(B3(`p`,`settings-view-search-breadcrumb`,r,t,`section`));let i=B3(`span`,`settings-view-setting-title`,t.setting.title,t,`title`);if(L3(t)){let n=E(`button`,`settings-view-search-open`);n.type=`button`,n.appendChild(i),n.addEventListener(`click`,()=>R3(t)),e.appendChild(n)}L3(t)||(e.classList.add(`settings-view-search-file-only`),e.appendChild(i)),e.append(B3(`p`,`settings-view-setting-description`,t.setting.description,t,`description`),B3(`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(B3(`p`,`settings-view-list-hint`,n.text,t,n.field))}L3(t)||V3(e,t),n.appendChild(e)}k2.appendChild(n)}function U3(){return J$(b2,D2,z2,mp())}var W3=new Set;function G3(e){W3.add(e)}function K3(){if(!w2)return;let e=U3(),t=w2.dataset.settingsScreen!==e;if(w2.dataset.settingsScreen=e,O2&&(O2.hidden=e!==`section`),t)for(let e of W3)e()}function q3(){return P_()&&U3()===`section`}function J3(){if(!q3())return;let e=A2.id;X3(``),T2?.querySelector(`[data-settings-section="${e}"]`)?.focus()}function Y3(){if(T2&&w2){T2.textContent=``;for(let e of q$(K$(b2))){let t=E(`div`,`settings-view-nav-group`);e.heading&&t.appendChild(E(`div`,`settings-view-nav-heading`,e.heading));for(let n of e.sections){let e=E(`button`,`settings-view-nav-item`,n.title);e.type=`button`,e.dataset.settingsSection=n.id,e.addEventListener(`click`,()=>F3(n.id,{focusContent:P_()})),t.appendChild(e)}T2.appendChild(t)}z2?(K3(),H3()):F3(A2.id,{updateHash:!1,openPhoneSection:!1})}}function X3(e,{updateHash:t=!0}={}){z2=e.trim(),E2&&(E2.value=e),D2=null,t&&history.replaceState(history.state,``,af(z2)),Y3()}function Z3(e){if(z2&&e.key===`Enter`&&e.target===E2){let t=z3(z2).find(L3);if(!t)return;e.preventDefault(),R3(t);return}if(e.key===`Escape`&&z2){if(!E2)return;e.preventDefault(),X3(``),E2.focus();return}if(e.key!==`ArrowUp`&&e.key!==`ArrowDown`||!T2)return;let t=[...T2.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 Q3(e,{onRestart:t=()=>{}}={}){U2=t,Wq(d4),S2=e,S2.textContent=``,w2=E(`div`,`settings-view-shell`);let n=E(`div`,`settings-view-sidebar`);E2=E(`input`,`settings-view-search`),E2.type=`search`,E2.placeholder=`Search settings`,E2.setAttribute(`aria-label`,`Search settings`),T2=E(`nav`,`settings-view-nav`),T2.setAttribute(`role`,`navigation`),T2.setAttribute(`aria-label`,`Settings sections`),O2=E(`button`,`settings-view-back`,`Back`),O2.type=`button`,O2.hidden=!0,O2.setAttribute(`aria-label`,`Back to settings sections`),O2.addEventListener(`click`,J3),k2=E(`div`,`settings-view-content`),k2.setAttribute(`aria-live`,`polite`),E2.addEventListener(`input`,()=>{let e=E2;e&&X3(e.value)}),E2.addEventListener(`keydown`,Z3),T2.addEventListener(`keydown`,Z3),n.append(E2,O2,T2),w2.append(n,k2),S2.appendChild(w2),Z2(j2),Y3(),$3(),C2?.disconnect(),C2=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&$3()}),C2.observe(S2)}function $3(){Dv().then(t6)}function e6(e){return e4(e).some(e=>e.path===`pref:soundId`)}function t6(){if(b2=y2(),A2=G$(b2,A2.id)??b2[0],M2[`pref:soundId`]=Ev(Bo()),z2){H3();return}let e=u4(`alert-sound`);e&&e6(A2)&&T3(e)}function n6(e=null,t=null){let n=U$(e??location.hash);n?X3(n.query):(X3(``,{updateHash:!1}),P_()&&!e?history.replaceState(history.state,``,af(``)):F3(e||A2.id,{settingId:t}))}function r6(e){let t=U$(e);if(t){let e=af(t.query);return{sectionId:e,settingId:null,hash:e}}return h$(e,b2,RQ,zQ)}function i6(e){e&&(j2=e,Z2(j2),z2?H3():O3())}function a6(e){s6()}function o6(e,t){let n=t.querySelector(`.settings-view-status-slot`),r=s3(e);n&&r&&n.replaceWith(r),n&&!r&&n.remove(),!n&&r&&t.appendChild(r)}function s6(){for(let e of e4(A2)){if(!e.status)continue;let t=x3(e);t&&(e.control===`readonly`?D3(e):o6(e,t))}}function c6(){if(A2.id!==`machine-updates`)return;let e=u4(`update-actions`);e&&D3(e)}function l6(e){B2=e,K2=!1,q2=null,H2=Al(H2,`status-frame`),c6(),G2&&A2.id===`machine-updates`&&H4()}function u6(e){V2=e,H2=Al(H2,`progress-frame`),c6()}function d6(e){if(e.scope!==`update`)return!1;let t=kl(e.message),n=H2.requested;return H2=Al(H2,`error-frame`,t),K2=!1,n||(q2=t),c6(),!0}function f6(){A2.id===f2&&P3()}window.matchMedia(`(prefers-reduced-motion: reduce)`).addEventListener(`change`,f6),F_(()=>{D2=null,K3(),f6()});function p6(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 m6=`•`.repeat(8),h6=`[^/\\\\\\s"'\`<>:]+`,g6=RegExp(`(?<![\\w./\\\\-])(?:/home/${h6}|/Users/${h6}|[A-Za-z]:[\\\\/]Users[\\\\/]${h6}|/root(?![\\w.-]))`,`g`);function _6(e){let t=Qy(e);if(t.length===0)return e;let n=``,r=0;for(let i of t)n+=e.slice(r,i.start)+m6,r=i.end;return n+e.slice(r)}function v6(e){return e.replace(g6,`~`)}function y6(e){return v6(_6(e))}var b6=`.xterm, input, textarea, script, style, [contenteditable]:not([contenteditable="false"])`,x6=[`title`,`label`],S6=new WeakMap,C6=new WeakMap,w6=null;function T6(e){let t=e instanceof Element?e:e.parentElement;return!t||t.closest(b6)!==null}function E6(e){let t=e.parentElement?.closest(`option`);return t!=null&&!t.hasAttribute(`value`)}function D6(e,t){if(t&&e===t.masked)return t;let n=y6(e);return n===e?null:{original:e,masked:n}}function O6(e){let t=E6(e)?null:D6(e.data,S6.get(e));t?(S6.set(e,t),e.data!==t.masked&&(e.data=t.masked)):S6.delete(e)}function k6(e,t){let n=e.getAttribute(t),r=C6.get(e),i=n===null?null:D6(n,r?.get(t));if(!i){r?.delete(t);return}let a=r??new Map;a.set(t,i),C6.set(e,a),n!==i.masked&&e.setAttribute(t,i.masked)}function A6(e){for(let t of x6)k6(e,t)}function j6(e){return e instanceof Element&&e.matches(b6)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}function M6(e){A6(e);let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,j6);for(let e=t.nextNode();e;e=t.nextNode())e instanceof Text&&O6(e),e instanceof Element&&A6(e)}function N6(e){T6(e)||(e instanceof Text&&O6(e),e instanceof Element&&M6(e))}function P6(e){e instanceof Element&&!T6(e)&&A6(e)}function F6(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&&N6(e);for(let e of n)e.isConnected&&P6(e)}function I6(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);L6(e);for(let e=t.nextNode();e;e=t.nextNode())L6(e)}function L6(e){if(e instanceof Text){let t=S6.get(e);t&&e.data===t.masked&&(e.data=t.original);return}if(!(e instanceof Element))return;let t=C6.get(e);if(t)for(let[n,r]of t)e.getAttribute(n)===r.masked&&e.setAttribute(n,r.original)}function R6(){if(w6)return;let e=new MutationObserver(t=>{F6(t),e.takeRecords()});M6(document.body),e.observe(document.body,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:x6}),w6=e}function z6(){w6&&(w6.disconnect(),w6=null,I6(document.body),S6=new WeakMap,C6=new WeakMap)}function B6(e){e?R6():z6()}function V6(){B6(mp()),gp(B6)}function H6(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 U6(e){return typeof e!=`object`||!e||!(`telemetryForcedOff`in e)?!1:e.telemetryForcedOff===!0}function W6(e,t){return t||U6(e)?!1:H6(e)}var G6=2500;function K6({hasSnapshot:e,connectingTerminalCount:t,msSinceConnected:n}){return n<2500&&(!e||t>0)?`wait`:`reveal`}function q6(e,t){let n=document.createElement(`div`);n.className=`pr-scope-tabs`,n.setAttribute(`role`,`tablist`),n.setAttribute(`aria-label`,`Reviews scope`);let r=[`team`,`mine`];for(let i of r){let a=document.createElement(`button`);a.className=`pr-scope-tab`,a.type=`button`,a.setAttribute(`role`,`tab`),a.setAttribute(`aria-selected`,String(i===e)),a.tabIndex=i===e?0:-1,a.textContent=i===`team`?`Team`:`Mine`,a.addEventListener(`click`,()=>t(i,!1)),a.addEventListener(`keydown`,e=>{e.key===`ArrowLeft`?(e.preventDefault(),t(r[(r.indexOf(i)+r.length-1)%r.length],!0)):e.key===`ArrowRight`&&(e.preventDefault(),t(r[(r.indexOf(i)+1)%r.length],!0))}),n.append(a)}return n}function J6(){us()===`team`&&hq()}function Y6(e,t){let n=(e,t)=>{if(s(e),J6(),!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=q6(`team`,n),i=q6(`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),_q(a,r,t),bU(o,i,t);function s(e){gz(),a.hidden=e!==`team`,o.hidden=e!==`mine`,ds(e)}s(us())}function X6(e,t){return t.isPhoneShellActive?t.phoneScreen===e:t.activeView===e}function Z6(e,t){return e.flatMap(e=>!e.gate||!(`fromSettings`in e.gate)?[]:[{view:e,isAvailable:e.gate.fromSettings(t)}])}function Q6(e){return{isActive:e===!0||typeof e==`string`,level:typeof e==`string`?e:null}}function $6(e,t){e?.refreshOn?.includes(t)&&e.refresh?.(t)}function e8(e,t,n){for(let r of e)X6(r.view,t)&&$6(r,n)}function t8(e){let t=[{view:`focus`,label:`Focus`,panelClass:`focus-view`,hasOwnPhoneScreen:!0,hasPanelChrome:!1,hasReviewSidebar:!0,mount:()=>YM({rail:document.getElementById(`focus-rail`),center:document.getElementById(`focus-center`),resizer:document.getElementById(`focus-rail-resizer`)}),activate:SN,deactivate:wN},{view:`prs`,label:`Reviews`,glyph:`⇅`,panelClass:`pr-view`,gate:{fromSettings:O1.teamReview},mount:t=>Y6(t,{openTerminal:e.openTerminal}),attention:{subscribe:gq,acknowledge:J6},onConnectionChange:e=>{wU(e),xq(e)}},{view:`issues`,label:`Issues`,glyph:`#`,panelClass:`issues-view`,mount:hY,refreshOn:[`shown`],refresh:gY,onConnectionChange:vY},{view:`usage`,label:`Usage`,glyph:`◔`,panelClass:`usage-view`,gate:{fromSettings:O1.usage},mount:r2,attention:{subscribe:$0,acknowledge:Y0},onConnectionChange:n2,refreshOn:[`shown`,`connected`,`usage-sessions`],refresh:e=>{e===`shown`&&i2(),t2()}},{view:`radar`,label:`Radar`,glyph:`◎`,panelClass:`radar-view`,gate:{fromSettings:O1.posthog},mount:OX,attention:{subscribe:EX,acknowledge:TX}},{view:`visions`,label:`Visions`,glyph:`◇`,panelClass:`visions-view`,gate:{fromSettings:O1.visions},mount:TF,attention:{subscribe:SF,acknowledge:()=>{DF(),EF()}},onConnectionChange:wF},{view:`hooks`,label:`Hooks`,glyph:`◈`,panelClass:`hooks-view`,mount:NL,refreshOn:[`shown`,`connected`,`hooks-updated`],refresh:e=>{e===`shown`&&PL(),ML()}},{view:`trace`,label:`Trace`,panelClass:`trace-view`,gate:{subscribe:Jh},mount:pO,refreshOn:[`shown`],refresh:vO,onAvailabilityChange:e=>DX(e?gO:null),onConnectionChange:SO},{view:`benchmarks`,label:`Bench`,panelClass:`bench-view`,gate:{fromSettings:O1.benchmarks},mount:uJ,onConnectionChange:dJ},{view:`settings`,label:`Settings`,glyph:`@`,panelClass:`settings-view`,hasPanelChrome:!1,mount:t=>Q3(t,{onRestart:e.onRestart})}],n=A(document,`#app-main`,`main`),r=t.map(t=>{let r=E(`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)??E(`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=E(`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}=Q6(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 A(document,`#header-tabs`,`div`).replaceChildren(...r.map(e=>e.tab)),r}Uv(Jo()),Wv(Wo()),Gv(Ko()),oZ(Xo()),N_(),Cm(document);var n8=A(document,`#connection-status`,`span`),r8=A(n8,`.connection-label`,`span`),i8=A(document,`#loading-screen`,`div`),a8=A(document,`#loading-status`,`div`),o8=A(document,`#shutdown-screen`,`div`),s8=A(document,`#shutdown-status`,`div`),c8=!1,l8=null,u8=!1;function d8(){let e=Ws(),t=i8.querySelector(`.loading-spinner`);e&&t&&t.replaceWith(Us(e,`loading-animal`))}d8();function f8(){c8||l8===null||K6({hasSnapshot:u8,connectingTerminalCount:Lx(),msSinceConnected:performance.now()-l8})===`reveal`&&p8()}Ix(f8);function p8(){if(c8)return;c8=!0,i8.classList.add(`fade-out`);let e=()=>i8.remove();i8.addEventListener(`transitionend`,e,{once:!0}),setTimeout(e,1e3)}function m8(e,t){n8.dataset.state=`shutdown`,r8.textContent=e,n8.title=e,t5.disabled=!0,s8.textContent=t,o8.classList.add(`active`)}var h8=new Set([`disconnected`,`connecting`]);function g8(e,t,n){n8.dataset.state=e,n8.toggleAttribute(`data-reconnected`,n),r8.textContent=t,n8.title=t}function _8(e,t){g8(e,t,e===`connected`&&h8.has(n8.dataset.state??``))}function v8(e,t){n8.dataset.state!==`shutdown`&&g8(e===`verified`?`connected`:e,t,!1)}var y8=1e4,b8=`The server is not answering. Check the terminal running Glimmervoid for errors, or start it again with glimmervoid. This page reconnects on its own.`,x8=null,S8=!1;function C8(){return S8?`Reconnecting to server... ${b8}`:`Reconnecting to server...`}function w8(){x8=null,S8=!0,c8?Eu(b8,{hidesInStreamerMode:!1}):a8.textContent=C8()}function T8(){x8!==null||S8||(x8=window.setTimeout(w8,y8))}function E8(){x8!==null&&window.clearTimeout(x8),x8=null,S8=!1,Du(b8)}cu((e,t)=>{if(e===`connecting`||e===`verified`)v8(e,t);else{_8(e,t),Uj(e===`connected`);for(let t of d5)t.onConnectionChange?.(e===`connected`);if(e===`connected`){if(E8(),o8.classList.contains(`active`)){location.reload();return}Tf(),document.body.classList.add(`app-ready`),!c8&&l8===null&&(l8=performance.now(),a8.textContent=`Connecting to sessions...`,setTimeout(p8,G6)),f8(),I5(),R8(`connected`),du(`get-settings`,{}).then(e=>{e.settings&&(x5(e.settings),Ae()===`settings`&&o5(location.hash))}).catch(()=>{})}else e===`disconnected`&&o8.classList.contains(`active`)?s8.textContent=`Waiting for server...`:(T8(),c8||(a8.textContent=C8()))}});function D8(){_Y(),gU(),nz()}function O8(){oN(),D8()}var k8=null;function A8(e){let t=p6(k8,e);k8=t.knownBuild,t.reload&&location.reload()}function j8(e){cF(new Map(e.filter(e=>!e.ephemeral).map(e=>[e.id,e.name]))),a6(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){nm(t.id,t.coherenceHooks),t.ephemeral||Mh(t.path),Lq(t.id,t.linkedPrs);let e=kj(t.id);e&&hM(t.id,t.state,t.stateSince),e&&og(t.id,!!t.saneYolo),e&&qj(t.id,t.isGuarded,t.isGuardrailsReleased),e||Pj(t.id,t.name,t.state,RX(t)),dM(t.id,t.failureReason),Oj(t.id,t.taskTitle,t.taskTitleIsCustom),Gj(t.id,t.agent),aM(t.id,t.mergeStatus,t.mergeReason),Wj(t.id,t.effectiveBase),Xj(t.id,t.activeAgents,t.awaitingBackgroundTasks),tM(t.id,t.pendingWakeup),$j(t.id,t.pendingPromptKind,t.isCompacting,t.isWaitingForMemory),xj(t.id,t),Rj(t.id,t.hasPlan),L8(t.id)}Nj(),Km(j),oN(),CN(),D8(),M8(),c5(location.hash),u8=!0,f8()}function M8(){_O([...j].map(([e,t])=>({id:e,name:Se(t)||e})))}function N8(e,t){Rj(e,t?.hasPlan===!0),L8(e)}function P8(e){if(!kj(e.id))Pj(e.id,e.session,e.to,RX({skipPerms:e.skipPerms,saneYolo:e.saneYolo,stateSince:e.timestamp})),Km(j),_Y();else if(e.to===w.DORMANT&&e.from!==w.DORMANT){let t=j.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;cM(e.id),Pj(e.id,e.session,w.DORMANT,RX({skipPerms:i,saneYolo:a,worktree:r?.dataset.worktree!==void 0,workspace:r?.dataset.workspace!==void 0,guarded:r?.dataset.guarded!==void 0,guardrailsReleased:r?.dataset.guardrailsReleased!==void 0,ephemeral:r?.dataset.ephemeral!==void 0,path:o,stateSince:e.timestamp,taskTitle:t?.taskTitle,taskTitleIsCustom:t?.taskTitleIsCustom})),Gj(e.id,t?.agent),N8(e.id,t),O8(),hT(e.id),Km(j)}else hM(e.id,e.to,e.timestamp,e.event),dM(e.id,e.failureReason),e.saneYolo!==void 0&&og(e.id,e.saneYolo),Km(j),hT(e.id),O8(),Eg(e.id),e.to===w.INITIALIZING&&(e.from===w.DONE||e.from===w.FAILED)&&Kx(e.id)}var F8=new Map;function I8(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};F8.set(n.id,e),Zj(n.id,e)}for(let e of[...F8.keys()])t.has(e)||(F8.delete(e),Zj(e,null))}function L8(e){let t=F8.get(e);t&&Zj(e,t)}e2(K),jL(K),mO(K),mY(K),lJ(K),Zh(Fq),hh(om),hh(Nq),$h({isReadable:sm,open:lm}),tg(IX);function R8(e){e8(d5,{isPhoneShellActive:ez(),activeView:Ae(),phoneScreen:ke.snapshot().phoneScreen},e)}gp(()=>R8(`settings-updated`));var z8={snapshot:e=>{A8(e.serverBuild),j8(e.sessions)},"hooks-report":e=>FL(e),"save-hook-result":()=>IL(),"delete-hook-result":()=>IL(),"state-change":e=>P8(e),"session-added":e=>{e.ephemeral||Mh(e.path),Lq(e.id,e.linkedPrs),kj(e.id)||(Pj(e.id,e.session,e.state,RX(e)),Gj(e.id,e.agent),L8(e.id)),Km(j),O8(),M8()},"session-removed":e=>{cM(e.id),rm(e.id),_T(e.id),Rq(e.id),Km(j),O8(),M8()},"session-title":e=>{Oj(e.id,e.taskTitle,e.isCustom),O8()},"session-prs":e=>Lq(e.id,e.linkedPrs),"session-renamed":e=>{sM(e.id,e.newName),D8(),M8()},"session-modified":e=>{e.ephemeral||Mh(e.path);let t=j.get(String(e.id));nm(e.id,null),cM(e.id),_T(e.id),Lq(e.id,e.linkedPrs),Pj(e.id,e.session,e.state,RX(e)),Gj(e.id,e.agent),N8(e.id,t),Km(j),O8(),M8()},"session-git":e=>Kj(e.id,!!e.worktree),"session-agents":e=>{Xj(e.id,e.activeAgents,e.awaitingBackgroundTasks),O8(),Eg(e.id)},"session-wakeup":e=>tM(e.id,e.pendingWakeup),"session-prompt":e=>{$j(e.id,e.pendingPromptKind,e.isCompacting===!0,e.isWaitingForMemory===!0),D8()},"session-merge-status":e=>{iM(e.id,e.mergeStatus,e.reason),_N(e.id,e.mergeStatus),D8()},"session-worktree-blocked":e=>{Eu(`${e.session}: ${e.notice||`integration branch not found`}`)},"session-worktree-warning":e=>{Eu(`${e.session}: ${e.notice||`base branch warning`}`)},"session-worktree-ready":e=>{Wj(e.id,e.base)},"session-diff":e=>{oM(e.id,{committed:e.committed,uncommitted:e.uncommitted,hasCommits:e.hasCommits})},"session-diff-error":e=>{oT(e.id,e.message)},"change-map":e=>sT(e.id,e.map),"branch-sync-status":e=>fT(e.id,e),"session-changed":e=>mT(e.id),"post-turn-result":e=>nM(e.id,e),"debug-state-response":e=>Tg(e),"session-trace-response":e=>{Sj(e)||yO(e)},"session-trace-changed":e=>{wj(e.id),bO(e)},"session-conversation":e=>{xj(e.id,e),D8()},"session-plan-changed":e=>{zj(e),D8()},"session-plan-draft":e=>{Bj(e)},"session-plan-response":e=>{Vj(e)},"session-docs-changed":e=>zp(e),"session-docs-snapshot":e=>Bp(e),"session-coherence-hooks":e=>{nm(e.id,e.coherenceHooks),O8()},"session-coherence":e=>{im(e),O8()},"session-coherence-snapshot":e=>{am(e),O8()},"session-coherence-journal-response":e=>um(e),"session-setup-response":e=>LX(e),notify:e=>{tf(e),Eg(e.session)},"update-status":e=>{G8(e),l6(e)},"update-progress":e=>u6(e.journal),"post-turn-leftovers":e=>q8(e),error:e=>{let t=d6(e),n=xO(e);Cj(e);let r=Hj(e);t||n||r||Eu(e.message)},"session-error":e=>{rT(e.id),!Hj(e)&&uM(e.id,e.message)},"settings-updated":e=>{e.settings&&x5(e.settings),Tf()},"health-snapshot":e=>{e.stats&&RS(e.stats)},"radar-status":e=>kX(e),"radar-investigation-activity":e=>AX(e),"radar-investigation-finished":e=>MX(e),"team-review-status":e=>vq(e),"my-prs-status":e=>{SU(e),zq()},"benchmark-status":e=>fJ(e),"benchmark-action-result":e=>pJ(e),"my-pr-merge-result":e=>TU(e),"team-review-action-result":e=>Sq(e),"open-team-review-session-result":e=>bq(e),"issues-status":e=>yY(e),"issue-detail-result":e=>bY(e),"open-issue-session-result":e=>xY(e),"usage-sessions":e=>{I8(e.sessions),a2(e)},"usage-report":e=>{s2(e),s6()},"plan-limits":e=>o2(e),"usage-budget-alert":e=>tf({session:`budget-${e.scope}-${e.periodKey}`,category:`threshold-${e.threshold}`,message:e.text,ignoreFocus:!0}),"visions-findings":e=>kF(e),"visions-comments":e=>AF(e),"visions-hand":e=>jF(e),"visions-intent":e=>MF(e),"visions-fix":e=>OF(e),"visions-snapshot":e=>FF(e),"ingest-activity":e=>NF(e),"ingest-snapshot":e=>PF(e),"client-trust":e=>A5(e.trust),"shutting-down":()=>m8(`Shutting down...`,`Shutting down sessions...`),restarting:()=>m8(`Restarting...`,`Restarting server...`)};function B8(e){let t=z8[e.type];t&&t(e)}lu(e=>{B8(e),R8(e.type)});var V8;function H8(e,t,n){e.onclick=()=>{let e=ye(n);e?e.then(()=>{t.textContent=`Copied`}).catch(()=>{t.textContent=`Copy failed`}):t.textContent=`Copy failed`}}var U8=of(Ac,jc,`Update`).href;function W8(e){let{latestSha:t,latest:n}=e;return typeof n==`string`&&n?n:typeof t==`string`&&t?t:null}function G8(e){let t=A(document,`#update-banner`,`div`);if(!e.updateAvailable){t.hidden=!0;return}let{mode:n,text:r}=Ll(e),i=W8(e),a=i&&n===`restart`?`${i}:ready`:i;if(V8!==void 0&&a===V8||a&&gs()===a)return;let o=String(e.command??``);A(document,`#update-banner-text`,`span`).textContent=r,A(document,`#update-banner-cmd`,`code`).textContent=o;let s=A(document,`#update-banner-update`,`a`);s.href=U8,s.hidden=n!==`link`;let c=A(document,`#update-banner-restart`,`button`);c.hidden=n!==`restart`,c.onclick=k5;let l=A(document,`#update-banner-cmd`,`code`);l.hidden=n!==`command`;let u=A(document,`#update-banner-copy`,`button`);u.hidden=n!==`command`;let d=A(document,`#update-banner-copy-status`,`span`);d.hidden=n!==`command`,d.textContent=``;let f=A(document,`#update-banner-link`,`a`);f.hidden=!e.releaseUrl,f.href=typeof e.releaseUrl==`string`?e.releaseUrl:``,t.hidden=!1,H8(u,d,o),A(document,`#update-banner-dismiss`,`button`).onclick=()=>{V8=a,_s(a),t.hidden=!0}}var K8=!1;function q8({repositories:e,command:t}){let n=A(document,`#post-turn-leftovers-banner`,`div`);if(e.length===0){n.hidden=!0;return}if(K8)return;let r=A(document,`#post-turn-leftovers-copy-status`,`span`);A(document,`#post-turn-leftovers-text`,`span`).textContent=oe(e.length),A(document,`#post-turn-leftovers-cmd`,`code`).textContent=t,r.textContent=``,n.hidden=!1,H8(A(document,`#post-turn-leftovers-copy`,`button`),r,t),A(document,`#post-turn-leftovers-dismiss`,`button`).onclick=()=>{K8=!0,n.hidden=!0}}var J8=A(document,`#telemetry-banner`,`div`);function Y8(){ys(!0),J8.hidden=!0}function X8(e){J8.hidden=!W6(e,vs())}var Z8=A(document,`#telemetry-banner-settings`,`a`);Z8.href=of(`privacy`,`telemetry-enabled`,`Open settings`).href,Z8.addEventListener(`click`,Y8),A(document,`#telemetry-banner-dismiss`,`button`).addEventListener(`click`,Y8),A(document,`#btn-add-session-header`,`button`).addEventListener(`click`,Md);var Q8=A(document,`#btn-mute`,`button`);Gq(Q8);var $8=A(document,`#btn-streamer`,`button`);bp($8),V6();var e5=A(document,`#power-menu`,`div`),t5=A(document,`#btn-power`,`button`);function n5(){t5.setAttribute(`aria-expanded`,e5.classList.contains(`open`)?`true`:`false`)}t5.addEventListener(`click`,e=>{e.stopPropagation(),e5.classList.toggle(`open`),n5()}),document.addEventListener(`click`,e=>{e.target instanceof Node&&(e5.contains(e.target)||(e5.classList.remove(`open`),n5()))}),me(document.querySelector(`.header`));function r5(e){e&&n6(e),!iz(`settings`)&&v5(`settings`,{section:e})}function i5(){rf(location.hash)&&history.replaceState(history.state,``,`${location.pathname}${location.search}`)}function a5(e){return e?(n6(e.sectionId,e.settingId),iz(`settings`)||v5(`settings`,{section:e.sectionId,setting:e.settingId,persist:!1}),!0):!1}function o5(e){return a5(r6(e))}var s5=`No plan is stored for this session yet.`;function c5(e){let t=Vd(e);return t?!kj(t)||(history.replaceState(history.state,``,`${location.pathname}${location.search}`),ez()?($R(t)||Eu(s5),!0):(v5(`focus`,{persist:!1}),yN(t)||Eu(s5),!0)):!1}function l5(e){return c5(e)?!0:o5(e)}function u5(e){e.newURL===location.href&&l5(location.hash)}document.addEventListener(`click`,e=>{if(!ez()||e.defaultPrevented)return;let t=e.target instanceof Element?e.target.closest(`a[href^="#"]`):null;t instanceof HTMLAnchorElement&&l5(t.hash)&&e.preventDefault()}),MV(A(document,`#celebration-tray`,`div`),A(document,`#btn-celebrations`,`button`),A(document,`#celebration-tray-count`,`span`)),A(document,`#btn-help`,`button`).addEventListener(`click`,()=>{r5(`browser-shortcuts`)});var d5=t8({onRestart:k5,openTerminal:e=>{rz(e)||(v5(`focus`),vN(e))},openPlan:e=>{v5(`focus`),yN(e)},setPhoneAttention:oz});o4(d5),$w({panel:document.getElementById(`review-sidebar`)});for(let e of d5)e.mount(e.el);function f5(e){return d5.find(t=>t.view===e)}function p5(e){return d5.some(t=>t.view===e&&!t.tab.hidden)}var m5=!0,h5=null;function g5(e){f5(e)?.attention?.acknowledge()}function _5(e){$6(f5(e),`shown`)}function v5(e,{section:t,setting:n,persist:r=!0}={}){if(!p5(e))return;let i=Ae();ke.dispatch(`setActiveView`,e),m5=r,r&&(h5=null),document.body.dataset.activeView=e,document.body.dataset.reviewSidebarHidden=String(f5(e)?.hasReviewSidebar!==!0),r&&$o(e);for(let t of d5){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&&f5(i)?.deactivate?.(),f5(e)?.activate?.(),_5(e),i===`settings`&&e!==`settings`&&i5(),e===`settings`&&t&&n6(t,n??null),g5(e)}function y5(e,t){let{view:n}=e;e.tab.hidden=!t,az(n,t),e.onAvailabilityChange?.(t),!ez()&&(!t&&Ae()===n&&v5(`focus`),t&&h5===n&&v5(n))}function b5(e){for(let{view:t,isAvailable:n}of Z6(d5,e))y5(t,n)}function x5(e){jj(e),i6(e),mF(e),b5(e),X8(e),hp(e.streamerMode===!0),yj(e.conversationView===!0)}for(let e of d5)e.gate&&(y5(e,!1),`subscribe`in e.gate&&e.gate.subscribe(t=>y5(e,t)));hO(()=>{p5(`trace`)&&(iz(`trace`)||v5(`trace`))});function S5(e,t){let n=d5.filter(e=>!e.tab.hidden),r=n[(n.findIndex(t=>t.view===e)+t+n.length)%n.length];return v5(r.view),r.tab}function C5(e){d5.some(e=>e.tab===document.activeElement)&&e.focus()}for(let e=0;e<d5.length;e++){let{view:t,tab:n}=d5[e];n.addEventListener(`click`,()=>v5(t)),n.addEventListener(`keydown`,e=>{(e.key===`ArrowLeft`||e.key===`ArrowRight`)&&(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),S5(Ae(),e.key===`ArrowRight`?1:-1).focus()))})}var w5=Qo(),T5=r6(location.hash),E5=Vd(location.hash);if(T5&&v5(`settings`,{section:T5.sectionId,setting:T5.settingId,persist:!1}),E5&&v5(`focus`,{persist:!1}),!T5&&!E5){let e=p5(w5);e||(h5=w5),v5(e?w5:`focus`,{persist:e})}XR({panels:LL(d5),onScreenShown:e=>{_5(e),e!==`settings`&&i5(),e===`settings`&&!rf(location.hash)&&n6(),g5(e)},canGoBack:e=>e===`settings`&&q3(),onBack:e=>{e===`settings`&&J3()},headerControls:[A(document,`.header-title`,`h1`),A(document,`#status-indicator`,`div`),A(document,`#celebration-tray`,`div`),A(document,`#btn-add-session-header`,`button`),A(document,`#btn-help`,`button`),Q8,A(document,`#streamer-badge`,`span`),$8,e5]}),G3(UR);function D5(e){if(e===`phone`){let e=JM();for(let e of d5)e.deactivate?.();let t=r6(location.hash);ZR({sessionId:e??void 0,linkedScreenId:t?`settings`:void 0}),t&&n6(t.sectionId,t.settingId);return}let t=tz();QR();let n=Ae();v5(p5(n)?n:`focus`,{persist:m5}),t&&vN(t)}P_()&&D5(`phone`),F_(D5),window.addEventListener(`hashchange`,u5);function O5({type:e,title:t,confirmLabel:n,danger:r,idleMessage:i,actionAfterKillingSessions:a}){e5.classList.remove(`open`),n5();let o=Aj();Xu({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 k5(){O5({type:`restart-server`,title:`Restart Server`,confirmLabel:`Restart`,danger:!1,idleMessage:`Restart the server?`,actionAfterKillingSessions:`restart the server`})}A(document,`#btn-restart`,`button`).addEventListener(`click`,k5);function A5(e){let t=S(`shutdown`,e);A(document,`#btn-shutdown`,`button`).hidden=!t,A(document,`#menu-divider-shutdown`,`div`).hidden=!t}A(document,`#btn-shutdown`,`button`).addEventListener(`click`,()=>{O5({type:`shutdown`,title:`Shut Down Server`,confirmLabel:`Shut Down`,danger:!0,idleMessage:`Shut down the server?`,actionAfterKillingSessions:`shut down the server`})});var j5=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function M5(e,t){return e.value!==``&&j5.has(t.key)}function N5(e){let t=document.activeElement;return t instanceof HTMLElement?t.isContentEditable?!0:t instanceof HTMLTextAreaElement&&t.dataset.dashboardShortcuts===`allowed`?M5(t,e):(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)&&!t.classList.contains(`xterm-helper-textarea`):!1}function P5({action:e,step:t}){switch(e){case`merge`:return vT(),!0;case`resolve-or-resync`:return bT()||CT(),!0;case`new-session`:return document.getElementById(`btn-add-session-header`)?.click(),!0;case`next-attention`:return qM()?(uN(),!0):!1;case`rail-step`:return qM()?(xN(t),!0):!1;case`view-step`:return!P_()&&(C5(S5(Ae(),t)),!0);case`session-nth`:return qM()?(bN(t),!0):!1;case`streamer-mode`:return yp(),!0}}document.addEventListener(`keydown`,e=>{if(e.repeat||N5(e))return;let t=ov(e,pv,{isTerminalFocused:document.activeElement?.classList.contains(`xterm-helper-textarea`)??!1});t&&P5(t)&&e.preventDefault()});var F5=C({mode:`trailing`,delayMs:150,run:()=>{K({type:`focus-change`,focused:document.hasFocus()})}});function I5(){F5.schedule()}function L5(){I5(),tS(N(je()))}window.addEventListener(`focus`,L5),window.addEventListener(`blur`,L5),document.addEventListener(`visibilitychange`,L5);var R5=!1;async function z5(){if(!R5){R5=!0,Wx();try{if(await gu()===`ok`)return;for(let e of j.keys())Kx(e)}finally{Gx(),R5=!1}}}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`&&(Jb(),z5())}),window.addEventListener(`online`,z5);var B5=ia(K);window.addEventListener(`error`,e=>B5(e.error)),window.addEventListener(`unhandledrejection`,e=>B5(e.reason)),window.addEventListener(`pageshow`,e=>{e.persisted&&(Jb(),z5())}),LS(A(document,`#health-footer-mount`,`div`)),G_(Mj),T8(),hu();