glimmervoid 0.45.0 → 0.45.1-next.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/glimmervoid.js +15 -15
- package/dist/chunks/{adapters-D99c4zCx.js → adapters-BE9BKVW0.js} +24 -24
- package/dist/chunks/{adapters-BGuI5U_-.js → adapters-CPaysZkO.js} +1 -1
- package/dist/chunks/{agent-api-cli-DdrR2vnB.js → agent-api-cli-B0l8uLos.js} +1 -1
- package/dist/chunks/{agent-api-cli-DIGH1v3_.js → agent-api-cli-Bq9J0_D5.js} +148 -15
- package/dist/chunks/{agent-api-core-D49OzKho.js → agent-api-core-ClU9-5K3.js} +9 -3
- package/dist/chunks/{agent-setup-cli-7hG401Io.js → agent-setup-cli-BA_1AdhQ.js} +2 -2
- package/dist/chunks/{contracts-CucdticH.js → build-channel-qgKwNssc.js} +37 -3
- package/dist/chunks/{config-BLeRKmn9.js → config-BqJTnPae.js} +16 -33
- package/dist/chunks/{config-path-core-DFt-TemS.js → config-path-core-DUWk0Lui.js} +5 -1
- package/dist/chunks/config-store-5xpRLHFo.js +1 -0
- package/dist/chunks/{config-store-CXLnauAa.js → config-store-BGTg8oKO.js} +77 -78
- package/dist/chunks/{git-version-C3lznLS_.js → git-version-BpdkKH2j.js} +1 -1
- package/dist/chunks/{grok-Di4aQGre.js → grok-7jK8ZNtf.js} +1 -1
- package/dist/chunks/{json-file-DFCTvPjj.js → json-file-BjFK_eSH.js} +2 -7
- package/dist/chunks/{main-CX9CkTDx.js → main-x9ygUnoL.js} +1030 -988
- package/dist/chunks/{pair-cli-BPyh48--.js → pair-cli-Cph4TZ2R.js} +2 -2
- package/dist/chunks/{remote-config-B0zBDBak.js → remote-config-CmP36r_s.js} +2 -2
- package/dist/chunks/{rtk-resolver-BDHi6RMv.js → rtk-resolver-C_IReILP.js} +1 -1
- package/dist/chunks/rtk-resolver-DgnNb1or.js +1 -0
- package/dist/chunks/{session-CUc6d7aS.js → session-BwlLY_mv.js} +36 -14
- package/dist/chunks/{session-routes--hrsvv7a.js → session-routes-CviNvxcz.js} +9 -1
- package/dist/chunks/{settings-cli-DzIasX94.js → settings-cli-Bete5oVk.js} +11 -10
- package/dist/chunks/{settings-readout-core-BOv6tqdK.js → settings-readout-core-CS8MPaIE.js} +14 -8
- package/dist/chunks/shown-files-core-soMzCQ1D.js +145 -0
- package/dist/chunks/{ssh-sign-cli-C_QYhDvI.js → ssh-sign-cli-DXhuqzuy.js} +2 -2
- package/dist/client/assets/action-status-BwqYb9eF.js +1 -0
- package/dist/client/assets/action-status-BwqYb9eF.js.br +0 -0
- package/dist/client/assets/benchmark-panel-BulIdLtq.js +1 -0
- package/dist/client/assets/benchmark-panel-BulIdLtq.js.br +0 -0
- package/dist/client/assets/card-dom-DkZgkeG9.js +1 -0
- package/dist/client/assets/card-dom-DkZgkeG9.js.br +0 -0
- package/dist/client/assets/control-ws-CAcwW-r9.js +4 -0
- package/dist/client/assets/control-ws-CAcwW-r9.js.br +0 -0
- package/dist/client/assets/dialogs-CCP1ipXD.js +79 -0
- package/dist/client/assets/dialogs-CCP1ipXD.js.br +0 -0
- package/dist/client/assets/dom-helpers-xJduxDcc.js +1 -0
- package/dist/client/assets/dom-helpers-xJduxDcc.js.br +0 -0
- package/dist/client/assets/hooks-panel-BWDeSHtM.js +1 -0
- package/dist/client/assets/hooks-panel-BWDeSHtM.js.br +0 -0
- package/dist/client/assets/index-D6m--U7B.js +84 -0
- package/dist/client/assets/index-D6m--U7B.js.br +0 -0
- package/dist/client/assets/index-DF3BLGk9.css +2 -0
- package/dist/client/assets/index-DF3BLGk9.css.br +0 -0
- package/dist/client/assets/issues-panel-B7Y1Lpyx.js +1 -0
- package/dist/client/assets/issues-panel-B7Y1Lpyx.js.br +0 -0
- package/dist/client/assets/modal-mWl2H7A_.js +1 -0
- package/dist/client/assets/modal-mWl2H7A_.js.br +0 -0
- package/dist/client/assets/plan-face-DpzZfVeG.js +3 -0
- package/dist/client/assets/plan-face-DpzZfVeG.js.br +0 -0
- package/dist/client/assets/{poll-ago-ItO-gOWA.js → poll-ago-Bc-8mMFj.js} +1 -1
- package/dist/client/assets/poll-ago-Bc-8mMFj.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-DftvVYU8.js +1 -0
- package/dist/client/assets/pr-scope-tabs-DftvVYU8.js.br +0 -0
- package/dist/client/assets/radar-panel-hxjF7m9Z.js +1 -0
- package/dist/client/assets/radar-panel-hxjF7m9Z.js.br +0 -0
- package/dist/client/assets/review-queue-panel-8bP8Q7RR.js +10 -0
- package/dist/client/assets/review-queue-panel-8bP8Q7RR.js.br +0 -0
- package/dist/client/assets/roving-keys-core-BDobx2It.js +1 -0
- package/dist/client/assets/settings-panel-B50lNcrt.js +4 -0
- package/dist/client/assets/settings-panel-B50lNcrt.js.br +0 -0
- package/dist/client/assets/trace-panel-Dy-fgi9c.js +2 -0
- package/dist/client/assets/trace-panel-Dy-fgi9c.js.br +0 -0
- package/dist/client/assets/ui-prefs-CNf6fId2.js +1 -0
- package/dist/client/assets/ui-prefs-CNf6fId2.js.br +0 -0
- package/dist/client/assets/usage-panel-D2JuiQ4G.js +1 -0
- package/dist/client/assets/usage-panel-D2JuiQ4G.js.br +0 -0
- package/dist/client/assets/visions-panel-CI6CRn42.js +1 -0
- package/dist/client/assets/visions-panel-CI6CRn42.js.br +0 -0
- package/dist/client/index.html +14 -8
- package/dist/client/index.html.br +0 -0
- package/dist/server/index.js +99 -1
- package/dist/session/guardrails-open-launcher.js +28 -16
- package/dist/session/visions-relay.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/config-store-DlaaBY9p.js +0 -1
- package/dist/chunks/rtk-resolver-Dr4iJsiS.js +0 -1
- package/dist/client/assets/action-status-DrMQzohk.js +0 -1
- package/dist/client/assets/action-status-DrMQzohk.js.br +0 -0
- package/dist/client/assets/benchmark-panel-D09qvrAY.js +0 -1
- package/dist/client/assets/benchmark-panel-D09qvrAY.js.br +0 -0
- package/dist/client/assets/dom-helpers-CZ8NZKxw.js +0 -4
- package/dist/client/assets/dom-helpers-CZ8NZKxw.js.br +0 -0
- package/dist/client/assets/hooks-panel-R-L7DuIz.js +0 -1
- package/dist/client/assets/hooks-panel-R-L7DuIz.js.br +0 -0
- package/dist/client/assets/index-B7TvZo7W.js +0 -173
- package/dist/client/assets/index-B7TvZo7W.js.br +0 -0
- package/dist/client/assets/index-C3nOrTwM.css +0 -2
- package/dist/client/assets/index-C3nOrTwM.css.br +0 -0
- package/dist/client/assets/issues-panel-CyB4oq9Z.js +0 -1
- package/dist/client/assets/issues-panel-CyB4oq9Z.js.br +0 -0
- package/dist/client/assets/modal-M_mJ8--V.js +0 -1
- package/dist/client/assets/modal-M_mJ8--V.js.br +0 -0
- package/dist/client/assets/poll-ago-ItO-gOWA.js.br +0 -0
- package/dist/client/assets/pr-queue-columns-Cu3-PADL.js +0 -1
- package/dist/client/assets/pr-queue-columns-Cu3-PADL.js.br +0 -0
- package/dist/client/assets/radar-panel-Cl3yPWed.js +0 -1
- package/dist/client/assets/radar-panel-Cl3yPWed.js.br +0 -0
- package/dist/client/assets/review-queue-panel-CVujzadC.js +0 -2
- package/dist/client/assets/review-queue-panel-CVujzadC.js.br +0 -0
- package/dist/client/assets/settings-panel-DW5An8lQ.js +0 -3
- package/dist/client/assets/settings-panel-DW5An8lQ.js.br +0 -0
- package/dist/client/assets/trace-panel-B6TiM5pb.js +0 -1
- package/dist/client/assets/trace-panel-B6TiM5pb.js.br +0 -0
- package/dist/client/assets/ui-prefs-CQHZFVx6.js +0 -1
- package/dist/client/assets/ui-prefs-CQHZFVx6.js.br +0 -0
- package/dist/client/assets/usage-panel-D2RX3LtG.js +0 -1
- package/dist/client/assets/usage-panel-D2RX3LtG.js.br +0 -0
- package/dist/client/assets/visions-panel-BV9EKCBw.js +0 -1
- package/dist/client/assets/visions-panel-BV9EKCBw.js.br +0 -0
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$t as e,It as t,Kt as n,c as r,o as i,u as a,v as o}from"./dom-helpers-xJduxDcc.js";import{m as s,p as c}from"./poll-ago-Bc-8mMFj.js";import{a as l,u}from"./action-status-BwqYb9eF.js";import{B as d,Cr as f,F as p,I as m,L as h,N as g,P as _,R as v,V as y,hr as b,wr as ee,z as te}from"./index-D6m--U7B.js";import{a as ne,i as re,r as x,t as S}from"./pr-scope-tabs-DftvVYU8.js";function C(e){return e?e.configured?`No open issues.`:e.reason??`Loading issues.`:`Loading issues.`}function w(e,t){return t===`all`||e.sources.includes(t)}function T(e){return{all:e.length,me:e.filter(e=>w(e,`me`)).length,team:e.filter(e=>w(e,`team`)).length,project:e.filter(e=>w(e,`project`)).length}}function E(e,t,n){let r=t.query.trim().toLowerCase().split(/\s+/).filter(Boolean),i=e.filter(e=>{if(!w(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 ie(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 ae(e){return{repos:[...new Set(e.map(e=>e.repo))].sort(),labels:[...new Set(e.flatMap(e=>e.labels))].sort()}}function oe(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 D(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 O(e,t){let n=D(e,t);return n===`now`?`just now`:n===`unknown`?`at an unknown time`:`${n} ago`}function k(n,r){let i=t(n.url),a=i?r(i.toLowerCase()):void 0;return a?e(a):n.state}var se=[{id:`all`,label:`All`},{id:`me`,label:`Mine`},{id:`team`,label:`Team`},{id:`project`,label:`Projects`}],A={scope:`all`,repo:``,label:``,sort:`updated`,query:``,hasSession:!1,hasPr:!1,isUnassignedOnly:!1},j=null,M=null,N=null,P=null,F=null,I=null,L=null,R=null,z=!1,B=null;function V(e){return e.sessionId?s.get(e.sessionId):void 0}function H(e,t,r){let a=V(t),s=a?.currentState??n.DORMANT,c=o(s,a?.awaitingBackgroundTasks),l=a?`Session: ${c.label}`:`No session yet`,d=r?c.label:``;if(e.dataset.state===s&&e.title===l&&e.dataset.icon===c.icon&&e.textContent===d)return;e.dataset.state=s,e.dataset.icon=c.icon,e.title=l,e.setAttribute(`aria-label`,l);let f=i(`span`,`issues-state-icon`);u(f,c.icon),e.replaceChildren(f),r&&e.append(d)}function U(e,t=!1){let n=i(`span`,t?`issues-state`:`pr-queue-glyph issues-state`);return H(n,e,t),n}function W(e){let t=V(e);return t?c(t):`none yet`}function ce(e){V(e)||m(e)}function le(e){let t=i(`button`,`pr-queue-row issue-row`);t.type=`button`,t.dataset.issueKey=e.key,t.setAttribute(`aria-current`,String(e.key===p().selectedKey));let n=i(`span`,`pr-queue-top`);n.append(i(`span`,`pr-queue-ref`,`#${e.number}`),i(`span`,`pr-queue-title`,e.title||`Untitled issue`));let r=i(`span`,`pr-queue-bottom`);e.sources.includes(`me`)&&r.append(i(`span`,`issues-why`,`you`)),r.append(i(`span`,`issues-row-labels`,e.labels.join(`, `)));for(let t of e.pullRequests){let e=k(t,f),n=i(`span`,`issues-row-pr`,`PR #${t.number} ${e}`);n.dataset.prState=e,r.append(n)}let a=i(`span`,`pr-queue-elapsed`,D(e.updatedAt,Date.now()));return a.dataset.issueAge=e.updatedAt,r.append(a),t.append(U(e),n,r),t.addEventListener(`click`,()=>{v(`select`),d(e.key),j&&(j.dataset.detailOpen=`true`),te(e),X(),P&&(P.scrollTop=0)}),t}function G(e,t,n){let r=i(`dd`);r.append(...n),e.append(i(`dt`,null,t),r)}function K(e){let t=i(`footer`,`pr-footer issues-detail-footer`),n=V(e);if(n&&e.sessionId){let n=e.sessionId,r=i(`button`,`pr-action`,`Go to session`);r.type=`button`,r.addEventListener(`click`,()=>{v(`go-to-session`),b(n)}),t.append(r)}if(e.projectId&&!n){let n=i(`button`,`pr-action`,`Open session`);n.type=`button`,n.disabled=g(e),n.addEventListener(`click`,()=>ce(e)),t.append(n)}t.append(r(`pr-action pr-action-ghost`,`View on GitHub`,e.url));let a=h(e),o=e.projectId?``:`Add a project for ${e.repo} in Settings to open sessions from here.`,s=i(`span`,`pr-action-status issue-open-status`);return s.setAttribute(`role`,`status`),l(s,a?.tone??null,a?.text??o),t.append(s),t}function q(e,t){let n=i(`span`,null,O(e,t));return n.dataset.issueAgo=e,n}function ue(){let e=P?.querySelector(`.issues-detail`),{selectedKey:t,issueByKey:n}=p(),r=t?n.get(t):void 0;if(!e||!r)return;let i=e.querySelector(`.issues-facts .issues-state`);i&&H(i,r,!0);let a=e.querySelector(`.issues-session-name`),o=W(r);a&&a.textContent!==o&&(a.textContent=o);let s=String(!!V(r));e.dataset.hasLiveSession!==s&&(e.dataset.hasLiveSession=s,e.querySelector(`.issues-detail-footer`)?.replaceWith(K(r)))}function J(){if(!P)return;let{latestStatus:e,selectedKey:t}=p(),n=e?.issues.find(e=>e.key===t);if(!n){P.replaceChildren(i(`p`,`pr-empty`,`Pick an issue from the queue.`));return}let a=i(`article`,`pr-detail issues-detail`),o=i(`button`,`pr-action pr-action-ghost issues-back`,`Back to issues`);o.type=`button`,o.addEventListener(`click`,()=>{v(`back`),j&&(j.dataset.detailOpen=`false`),[...N?.querySelectorAll(`[data-issue-key]`)??[]].find(e=>e.dataset.issueKey===p().selectedKey)?.focus({preventScroll:!0})});let s=i(`header`,`pr-detail-heading`),c=i(`div`,`pr-detail-title`);c.append(r(`pr-link`,`${n.repo}#${n.number}`,n.url),i(`h2`,null,n.title||`Untitled issue`));let l=Date.now(),u=i(`div`,`pr-detail-meta`),d=i(`span`,null,`opened by ${n.author||`unknown`} `),m=i(`span`,null,`updated `);d.append(q(n.createdAt,l)),m.append(q(n.updatedAt,l)),u.append(d,m,i(`span`,null,`${n.comments} comments`)),n.sources.includes(`me`)&&u.append(i(`span`,`issues-why`,`assigned to you`));for(let e of n.teams)u.append(i(`span`,null,`mentions ${e}`));s.append(c,u);let h=i(`dl`,`issues-facts`);G(h,`Repository`,[n.repo]),G(h,`Labels`,[n.labels.join(`, `)||`none`]),G(h,`Assignees`,[n.assignees.join(`, `)||`unassigned`]),a.dataset.hasLiveSession=String(!!V(n)),G(h,`Session`,[U(n,!0),i(`span`,`issues-session-name`,W(n))]);let g=n.pullRequests.flatMap(e=>{let t=k(e,f),n=i(`span`,`issues-pr-state`,t);return n.dataset.prState=t,[n,r(`issues-inline-link`,`#${e.number} ${e.title}`,e.url)]});G(h,`Pull request`,g.length>0?g:[`none linked`]);let y=i(`section`,`issues-body-section`),b=i(`div`,`issue-body`,_(n));b.setAttribute(`role`,`status`),y.append(i(`h3`,`pr-section-heading`,`Description`),b),a.append(o,s,h,y,K(n)),P.replaceChildren(a)}function Y(e,t,n,r){if(!e)return;let a=r&&!n.includes(r)?[...n,r].sort():n;e.replaceChildren(...[``,...a].map(e=>{let n=i(`option`,null,e||t);return n.value=e,n})),e.value=r}function X(){z=!1,Z(),J()}function Z(){if(!j||!N||!M)return;let{latestStatus:e,selectedKey:t}=p(),n=e?.issues??[],r=T(n);M.select(A.scope);for(let[e,t]of M.countElementByScope)t.textContent=String(r[e]);let a=ae(n);Y(I,`All repos`,a.repos,A.repo),Y(L,`All labels`,a.labels,A.label),F&&(F.textContent=oe(A));let o=E(n,A,new Set(s.keys())),c=document.activeElement instanceof HTMLElement&&N.contains(document.activeElement)?document.activeElement.dataset.issueKey:null,l=[...ie(o)].map(([e,t])=>{let n=i(`section`,`pr-queue-section`),r=i(`h3`,`pr-section-heading issues-repo-heading`,e);return t.some(e=>e.projectId)||r.append(i(`span`,`issues-repo-note`,`view only`)),r.append(i(`span`,`issues-repo-count`,String(t.length))),n.append(r,...t.map(le)),n});N.replaceChildren(...l),o.length===0&&N.append(i(`p`,`pr-empty`,n.length>0?`No open issues match these filters. Clear the search or pick All.`:C(e))),c&&[...N.querySelectorAll(`[data-issue-key]`)].find(e=>e.dataset.issueKey===c)?.focus({preventScroll:!0}),t&&!n.some(e=>e.key===t)&&(d(null),j.dataset.detailOpen=`false`),B?.update(e),Q()}function de(){let e=i(`div`,`issues-filters`),t=i(`div`,`issues-search-row`),n=i(`input`,`issues-search`);n.type=`search`,n.placeholder=`Search issues`,n.autocomplete=`off`,n.setAttribute(`aria-label`,`Search issues`),n.addEventListener(`input`,()=>{A.query=n.value,X()}),n.addEventListener(`change`,()=>v(`search`));let r=i(`button`,`pr-action pr-action-ghost`,`Filters`);r.type=`button`,r.setAttribute(`aria-expanded`,`false`),r.setAttribute(`aria-controls`,`issues-filters-panel`);let a=i(`div`,`issues-filters-panel`);a.id=`issues-filters-panel`,a.hidden=!0,r.addEventListener(`click`,()=>{v(`filters-toggle`),a.hidden=!a.hidden,r.setAttribute(`aria-expanded`,String(!a.hidden))}),t.append(n,r);let o=i(`div`,`issues-filter-row`);function s(e){let t=i(`select`,`issues-field`);return t.setAttribute(`aria-label`,e),o.append(t),t}I=s(`Repository`),I.addEventListener(`change`,()=>{v(`filter`),A.repo=I?.value??``,X()}),L=s(`Label`),L.addEventListener(`change`,()=>{v(`filter`),A.label=L?.value??``,X()});let c=s(`Sort`);for(let[e,t]of[[`updated`,`Updated`],[`created`,`Newest`],[`comments`,`Most discussed`]]){let n=i(`option`,null,t);n.value=e??``,c.append(n)}c.addEventListener(`change`,()=>{v(`filter`),A.sort=c.value,X()});let l=i(`div`,`issues-filter-row`);for(let[e,t]of[[`hasSession`,`Has session`],[`hasPr`,`Has PR`],[`isUnassignedOnly`,`Unassigned`]]){let n=i(`label`,`issues-toggle`),r=i(`input`);r.type=`checkbox`,r.addEventListener(`change`,()=>{v(`filter`),A[e]=r.checked,X()}),n.append(r,` ${t}`),l.append(n)}return F=i(`span`,`issues-filter-summary`),F.setAttribute(`role`,`status`),a.append(o,l),e.append(t,F,a),e}function Q(){if(!j||j.closest(`[hidden]`)||document.hidden)return;let e=Date.now(),t=p().latestStatus?.lastSyncAt;R&&(R.textContent=t?`Synced ${O(t,e)}.`:`Not synced yet.`);for(let t of j.querySelectorAll(`[data-issue-age]`))t.textContent=D(t.dataset.issueAge??``,e);for(let t of j.querySelectorAll(`[data-issue-ago]`))t.textContent=O(t.dataset.issueAgo??``,e)}function fe(e){if(j)return;j=i(`div`,`issues-content`),j.dataset.detailOpen=`false`,e.append(j),B=ne(`issues`,j);let t=i(`div`,`pr-columns issues-columns`),n=i(`section`,`pr-queue-pane`);n.setAttribute(`aria-label`,`Issue queue`),M=S({label:`Issue scope`,scopes:se,selected:A.scope,onSelect:e=>{v(`scope`),A.scope=e,X()},extraClassName:`issues-scope-tabs`,countClassPrefix:`issues-scope`}),N=i(`nav`,`pr-queue`),N.setAttribute(`aria-label`,`Issues`);let r=x(B.control);R=i(`span`,`issues-sync`),R.setAttribute(`role`,`status`),r.prepend(R),r.append(B.notice),n.append(re(M.element),de(),N,r),P=i(`section`,`pr-detail-host`),P.setAttribute(`aria-label`,`Issue detail`),t.append(n,P),j.append(t),window.setInterval(Q,3e4),y(he),ee(X),X()}function pe(){z&&$(),Q()}function $(){if(a(j))z=!0;else if(z=!1,ue(),A.hasSession)Z();else for(let e of N?.querySelectorAll(`[data-issue-key]`)??[]){let t=p().issueByKey.get(e.dataset.issueKey??``),n=e.querySelector(`.issues-state`);t&&n&&H(n,t,!1)}}var me={status:X,detail:J,"session-state":$};function he(e){me[e]()}var ge={mount:fe,refresh:pe};export{ge as view};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./dom-helpers-xJduxDcc.js";var t=`a[href], button, input, select, textarea, [tabindex]`,n=`modalInert`,r=[];function i(){return r.length>0}function a(e){return r.at(-1)?.overlay===e}function o(e){return[...e.querySelectorAll(t)].filter(e=>e.tabIndex>=0&&!e.matches(`:disabled`)&&!e.closest(`[inert]`)&&e.getClientRects().length>0)}function s(e,t){if(t.key!==`Tab`)return;let n=o(e);if(n.length===0){t.preventDefault();return}let r=n[0],i=n[n.length-1],a=e.contains(document.activeElement);t.shiftKey&&(document.activeElement===r||!a)?(t.preventDefault(),i.focus()):!t.shiftKey&&(document.activeElement===i||!a)&&(t.preventDefault(),r.focus())}function c(e){let t=o(e)[0];t?t.focus():e.focus()}function l(){let e=r.at(-1)?.overlay??null;for(let t of document.body.children)if(t instanceof HTMLElement){if(e&&t!==e){if(t.inert)continue;t.inert=!0,t.dataset[n]=`true`}else t.dataset[n]===`true`&&(t.inert=!1,delete t.dataset[n])}}function u(e){return e instanceof HTMLElement&&e.isConnected&&!e.closest(`[inert]`)}function d(e){if(u(e)){e.focus();return}let t=r.at(-1)?.dialog;t?c(t):document.getElementById(`app-main`)?.focus()}function f({dialogClass:e=`dialog`,closeOnBackdrop:t=!0,onEscape:n}={}){let i=document.activeElement,o=document.createElement(`div`);o.className=`dialog-overlay`;let u=document.createElement(`div`);u.className=e,u.tabIndex=-1,o.appendChild(u),document.body.appendChild(o);let f={overlay:o,dialog:u};r.push(f),l(),u.addEventListener(`keydown`,e=>s(u,e));function p(e){e.key!==`Escape`||e.defaultPrevented||a(o)&&(e.preventDefault(),n?n():g())}document.addEventListener(`keydown`,p);function m(){o.isConnected&&a(o)&&(u.contains(document.activeElement)||c(u))}requestAnimationFrame(m);let h=new MutationObserver(()=>{(document.activeElement===document.body||document.activeElement===null)&&m()});h.observe(u,{childList:!0,subtree:!0});function g(){let e=r.indexOf(f);e<0||(r.splice(e,1),h.disconnect(),o.remove(),document.removeEventListener(`keydown`,p),l(),d(i))}return t&&o.addEventListener(`click`,e=>{e.target===o&&g()}),{overlay:o,dialog:u,close:g}}function p(e,t){e.setAttribute(`role`,`dialog`),e.setAttribute(`aria-modal`,`true`),e.setAttribute(`aria-labelledby`,t)}function m({title:t,dialogClass:n=`dialog`,cancelLabel:r=`Cancel`}){let{overlay:i,dialog:a,close:o}=f({dialogClass:n}),s=`dialog-title-${Math.random().toString(36).slice(2)}`,c=e(`h3`,`dialog-title`,t);c.id=s;let l=e(`div`,`dialog-actions`),u=e(`button`,`btn-dialog btn-dialog-cancel`,r);return l.append(u),a.append(c),p(a,s),{overlay:i,dialog:a,close:o,titleEl:c,actions:l,btnCancel:u}}function h({title:t,message:n,confirmLabel:r=`Confirm`,danger:i=!1,onConfirm:a}){let{dialog:o,close:s,actions:c,btnCancel:l}=m({title:t}),u=e(`p`,`dialog-message`,n),d=e(`button`,i?`btn-dialog btn-dialog-confirm btn-dialog-danger`:`btn-dialog btn-dialog-confirm`,r);c.append(d),o.append(u,c),l.addEventListener(`click`,s),d.addEventListener(`click`,()=>{s(),a?.()}),requestAnimationFrame(()=>l.focus())}export{h as a,i,m as n,s as o,f as r,p as t};
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{C as e,Xt as t,o as n}from"./dom-helpers-xJduxDcc.js";import{t as r}from"./roving-keys-core-BDobx2It.js";import{o as i}from"./modal-mWl2H7A_.js";import{Cn as a,En as o,Jn as s,Kn as c,Sn as l,Sr as ee,Tn as te,Xn as ne,Yn as re,bn as ie,qn as ae,wn as oe,xn as se,yn as ce}from"./index-D6m--U7B.js";var u=2e3,d=3;function le(e){return e.replace(/\r\n?/g,`
|
|
2
|
+
`).split(`
|
|
3
|
+
`)}function f(e){return{kind:`unchanged`,text:e}}function p(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function m(e,t){return e.length<=7?e.map(t):[...e.slice(0,d).map(t),p(e.length-6),...e.slice(e.length-d).map(t)]}function h(e){return e}function g(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(...m(e.slice(n,r),h)),n=r}return t}function _(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function v(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 ue(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(f(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 de(e,t){let n=le(e),r=le(t),i=_(n,r),a=v(n,r,i),o=n.slice(i,n.length-a),s=r.slice(i,r.length-a);return o.length+s.length>u?{lines:[],isTooLarge:!0}:{lines:g([...m(n.slice(0,i),f),...ue(o,s),...m(n.slice(n.length-a),f)]),isTooLarge:!1}}var y=12,fe=8,b=``,pe=48,x=new Map;function me(e,t){return JSON.stringify([e,t])}function S(e){return e.id??b}function he(e,t){let n=x.get(e);n||(n=new Map,x.set(e,n));let r=me(t.agentId,t.revision);for(n.delete(r),n.set(r,t.plan);n.size>y;){let e=n.keys().next().value;if(typeof e!=`string`)break;n.delete(e)}}function ge(e){x.delete(e)}function _e(e,t,n){return!e||n===null?null:x.get(e)?.get(me(t,n))??null}function C(u){let d=n(`section`,`plan-face`);d.hidden=!0;let le=n(`header`,`plan-head`),f=n(`select`,`plan-heading-picker`);f.setAttribute(`aria-label`,`Plan section`);let p=n(`div`,`plan-view-panel`),m=n(`div`,`plan-sheet-head`),h=n(`button`,`plan-control plan-sheet-close`,`×`);h.type=`button`,h.setAttribute(`aria-label`,`Close`),m.append(n(`span`,null,`View`),h);let g=n(`div`,`plan-view-group plan-author-group`),_=n(`div`,`plan-tabs`);_.setAttribute(`role`,`tablist`),_.setAttribute(`aria-label`,`Plan author`),g.append(n(`span`,`plan-sheet-label`,`Author`),_);let v=n(`div`,`plan-view-group plan-revision-group`),ue=n(`div`,`plan-revision-stepper`),y=n(`button`,`plan-control plan-revision-previous`,`‹`);y.type=`button`,y.setAttribute(`aria-label`,`Previous revision`);let b=n(`button`,`plan-control plan-revision-next`,`›`);b.type=`button`,b.setAttribute(`aria-label`,`Next revision`);let x=n(`span`,`plan-revision-label`),ge=n(`span`,`plan-revision-age`);ue.append(y,x,b,ge);let C=n(`div`,`plan-revision-list`);C.setAttribute(`role`,`radiogroup`),C.setAttribute(`aria-label`,`Revision`),v.append(n(`span`,`plan-sheet-label`,`Revision`),ue,C);let ve=n(`div`,`plan-view-group plan-mode-group`),w=n(`div`,`plan-modes`);w.setAttribute(`role`,`radiogroup`),w.setAttribute(`aria-label`,`Show`),ve.append(n(`span`,`plan-sheet-label`,`Show`),w);let ye=n(`div`,`plan-head-spacer`),T=n(`div`,`plan-draft-notice`),be=n(`span`,`plan-draft-dot`);be.setAttribute(`aria-hidden`,`true`);let xe=n(`button`,`plan-control plan-draft-chip`,`Peek draft`);xe.type=`button`,T.append(be,xe),p.append(m,g,v,ve,ye,T);let E=n(`button`,`plan-control plan-view-button`,`View`);E.type=`button`,E.setAttribute(`aria-haspopup`,`dialog`),E.setAttribute(`aria-expanded`,`false`);let Se=n(`button`,`plan-control plan-minimize-button`,`Minimize`);Se.type=`button`,Se.addEventListener(`click`,u.showTerminal),le.append(f,p,E,Se);let Ce=n(`div`,`plan-sheet-backdrop`),we=n(`div`,`plan-body-layout`),Te=n(`nav`,`plan-heading-rail`);Te.setAttribute(`aria-label`,`Plan sections`);let D=n(`article`,`plan-reading-column`);we.append(Te,D);let Ee=n(`textarea`,`plan-editor`);Ee.setAttribute(`aria-label`,`Plan markdown`),Ee.spellcheck=!1;let De=n(`footer`,`plan-action-bar`),Oe=n(`span`,`plan-status`);Oe.setAttribute(`role`,`status`);let ke=n(`div`,`plan-decision-slot`),Ae=n(`label`,`plan-accept-edits`),je=n(`input`,`plan-accept-edits-checkbox`);je.type=`checkbox`,Ae.append(je,n(`span`,null,`Accept edits`)),ke.append(Ae,Oe),De.append(ke);let Me=new Map;for(let[e,t]of[[`terminal`,`Answer in terminal`],[`revise`,`Send feedback`],[`approve`,`Approve`]]){let r=n(`button`,`plan-action`,t);r.type=`button`,r.dataset.decision=e,r.addEventListener(`click`,()=>{r.disabled||it(e)}),Me.set(e,r),De.append(r)}d.append(le,we,De,Ce);let O=null,k={reviews:[]},A=null,j=null,Ne=!0,M=``,N=``,P=``,F=``,I=!1,L=null,R=!1,z=null,B=!1,V=!1,Pe=null,H=[],U=null,W=null,Fe=new Map,G=new Map,K=new Map,q=[],Ie=!1,J=null,Y=!1;function X(e,t=!0){Y=e,p.replaceChildren(...e?[m,ve,v,g,T,ye]:[m,g,v,ve,ye,T]),_.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of _.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))}p.dataset.open=String(e),Ce.dataset.open=String(e),E.setAttribute(`aria-expanded`,String(e)),we.inert=e,De.inert=e,f.inert=e,E.inert=e,Se.inert=e,e?(p.setAttribute(`role`,`dialog`),p.setAttribute(`aria-label`,`Plan view`),p.setAttribute(`aria-modal`,`true`),h.focus()):(p.removeAttribute(`role`),p.removeAttribute(`aria-modal`),t&&E.focus())}function Le(e){e.addEventListener(`keydown`,t=>{let n=[...e.querySelectorAll(`button:not(:disabled)`)],i=n.indexOf(document.activeElement),a=r(t.key,i,n.length,`both`);if(a===null)return;t.preventDefault();let o=Y;n[a].click(),!(o&&e!==w)&&(e===w||!Y)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Re=ee.subscribe((e,t)=>{t.includes(`layout`)&&Y&&X(!1,!1)});u.signal?.addEventListener(`abort`,Re,{once:!0}),Le(w),Le(_),Le(C),E.addEventListener(`click`,()=>X(!Y)),h.addEventListener(`click`,()=>X(!1)),Ce.addEventListener(`click`,()=>X(!1)),p.addEventListener(`keydown`,e=>{Y&&(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),X(!1)):i(p,e))});function ze(e){D.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}f.addEventListener(`change`,()=>ze(f.value));function Be(){Ie=!1;let e=q.map(e=>D.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=D.getBoundingClientRect().top-D.scrollTop,n=ie({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:D.scrollTop,isScrolledToEnd:D.scrollTop>0&&D.scrollTop+D.clientHeight>=D.scrollHeight-2,readingLineOffset:pe}),r=n===null?null:e[n]?.id??null;for(let e of q)e.dataset.headingId===r?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);r!==null&&(f.value=r)}function Ve(){Ie||d.hidden||q.length===0||(Ie=!0,requestAnimationFrame(Be))}D.addEventListener(`scroll`,Ve,{passive:!0});function Z(){J=null,R=!1,B=!1,V=!1,Pe=null}function He(e){U=e,u.reportProblem(e),$()}function Ue(e){j=e,U=null,Z(),X(!1,Y),$()}function We(e){let t=k.reviews.find(e=>e.agentId===A)?.revisions??[],n=t[t.findIndex(e=>e.revision===j)+e];n&&Ue(n.revision)}y.addEventListener(`click`,()=>We(-1)),b.addEventListener(`click`,()=>We(1));function Ge(e,t){return`${O??``}:${e??`main`}:${t??`latest`}`}function Ke(){return Ge(A,j)}function qe(e,t,n){return`${e??``}:${me(t,n??0)}`}function Q(){return qe(O,A,j)}function Je(){return G.get(Q())??null}function Ye(){return Je()?.size??0}function Xe(){if(J===null)return!1;let e=G.get(J.target.bucketKey)?.get(J.target.sectionSlot)??``;return J.field.value.trim()!==e}function Ze(e){let t=G.get(e);if(!t)return[];let n=[];for(let e of H){let r=t.get(S(e));r&&n.push({heading:e.heading,comment:r})}return n}function Qe(e,t){let n=t.trim(),r=G.get(e.bucketKey)??new Map;G.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&G.delete(e.bucketKey),$()}function $e(e){if(V||I)return;let r={bucketKey:Q(),sectionSlot:S(e)},i=n(`div`,`plan-comment-composer`),a=n(`label`,`plan-comment-label`,`Comment on ${e.heading??`Introduction`}`),o=n(`textarea`,`plan-comment-input`);o.maxLength=t,o.value=G.get(r.bucketKey)?.get(r.sectionSlot)??``,a.append(o);let s=n(`div`,`plan-comment-actions`),c=n(`button`,`plan-control plan-comment-cancel`,`Cancel`);c.type=`button`;let l=n(`button`,`plan-control plan-comment-save`,`Save comment`);l.type=`button`,s.append(c,l),i.append(a,s);let ee={target:r,element:i,field:o};J=ee,o.addEventListener(`input`,Ot),c.addEventListener(`click`,()=>{J===ee&&(J=null,$())}),l.addEventListener(`click`,()=>{J===ee&&(J=null),Qe(r,o.value)}),$(),o.focus()}function et(e){let t={bucketKey:Q(),sectionSlot:S(e)};if(J?.target.bucketKey===t.bucketKey&&J.target.sectionSlot===t.sectionSlot)return J.element;let r=Je()?.get(t.sectionSlot);if(!r)return null;let i=n(`div`,`plan-comment-card`),a=n(`div`,`plan-comment-head`),o=n(`button`,`plan-control plan-comment-edit`,`Edit`);o.type=`button`,o.addEventListener(`click`,()=>$e(e));let s=n(`button`,`plan-control plan-comment-remove`,`Remove`);return s.type=`button`,s.disabled=I,o.disabled=I,s.addEventListener(`click`,()=>Qe(t,``)),a.append(n(`span`,`plan-comment-label`,`Your comment`),o,s),i.append(a,n(`p`,`plan-comment-text`,r)),i}function tt(t,n,r={}){if(!O||n.revision===null||I)return!1;let i=te(r);if(i!==null)return He(i),!1;let o={agentId:n.agentId,revision:n.revision,decision:t,...r};return u.sendDecision(O,o)?(U=null,I=!0,L=a(t)?n:null,$(),!0):(He(e),!1)}function nt(e){if(!R)return{};let t=Ee.value;return t===_e(O,e.agentId,e.revision)?{}:{plan:t}}function rt(e){let t=qe(O,e.agentId,e.revision),n=Ze(t);n.length!==0&&tt(`revise`,e,{comments:n})&&e.revision!==null&&(W={bucketKey:t,agentId:e.agentId,revision:e.revision},$())}function it(e){let t={agentId:A,revision:j};e===`revise`?rt(t):tt(e===`approve`&&!Ae.hidden&&je.checked?`approve-accept-edits`:e,t,nt(t))}function at(e){J=null,R=e===`edit`,B=e===`changes`,R&&z!==Q()&&(Ee.value=_e(O,A,j)??``,z=Q()),U=null,$()}function ot(e){return`${e.kind}:${Ge(e.agentId,e.revision)}`}function st(e){for(K.set(ot(e),e);K.size>fe;){let e=K.keys().next().value;if(typeof e!=`string`)break;K.delete(e)}}function ct(e,t){return e.agentId===t.agentId?e.kind===`draft`?t.revision===0:t.revision===0?!1:e.revision===null||e.revision===t.revision:!1}function lt(e){for(let[t,n]of K)if(ct(n,e))return K.delete(t),n;return null}function ut(){for(let[e,t]of K)if(t.kind===`draft`)return K.delete(e),t;return null}function dt(){if(K.size!==1)return null;let e=K.entries().next().value;return e?(K.delete(e[0]),e[1]):null}function ft(){if(!O)return;let e=Ke();M!==e&&u.requestPlan(O,A,j??void 0)&&(M=e,st({kind:`selection`,agentId:A,revision:j}))}function pt(){d.hidden||ft()}function mt(){return o(k,A,j)}function ht(e){if(!O)return;let t=Ge(A,e);P!==t&&u.requestPlan(O,A,e)&&(P=t,st({kind:`diff-base`,agentId:A,revision:e}))}function gt(){if(!O)return;let e=`${O}:${A??`main`}`;F!==e&&u.requestDraft(O,A)&&(F=e,st({kind:`draft`,agentId:A,revision:null}))}function _t(e,t){return`${e??``}:${t??``}`}function vt(){return k.reviews.find(e=>e.agentId===A)?.revisions.find(e=>e.revision===j)?.receivedAt??0}function yt(){let e=Fe.get(_t(O,A));return e!==void 0&&e>vt()}function bt(){V?(Z(),$()):(J=null,R=!1,B=!1,gt(),$())}xe.addEventListener(`click`,bt);function xt(e){Te.replaceChildren(),f.replaceChildren(),q=[];for(let t of e){let e=t.id??`plan-introduction`,r=t.heading??`Introduction`,i=n(`button`,`plan-heading-link`,r);i.type=`button`,i.dataset.level=String(t.level),i.dataset.headingId=e,i.title=r,i.dataset.commented=String(Je()?.has(S(t))===!0),q.push(i),i.addEventListener(`click`,()=>ze(e)),Te.append(i);let a=n(`option`,null,r);a.value=e,f.append(a)}}function St(e){let t=mt();if(t===null){D.append(n(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let r=_e(O,A,t);if(r===null){D.append(n(`p`,`plan-loading`,`Loading the previous revision`)),ht(t);return}let i=de(r,e);i.isTooLarge?(D.append(n(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),D.append(c(re(e)))):D.append(ae(i))}function Ct(e){if(D.replaceChildren(),R){xt(H),D.append(Ee);return}if(e===null){if(H=[],xt(H),N===Ke()){D.append(n(`p`,`plan-loading`,`This plan revision could not be loaded`));return}D.append(n(`p`,`plan-loading`,`Loading plan`)),ft();return}let t=re(e);if(H=ne(t),xt(H),B){St(e);return}if(V){D.append(c(t));return}let r=Je();D.append(s(H,{hasComment:e=>r?.has(S(e))===!0,isComposing:e=>J?.target.bucketKey===Q()&&J.target.sectionSlot===S(e),onComment:$e,attachmentFor:et}))}function wt(e){g.hidden=e.tabs.length<2,_.replaceChildren();for(let t of e.tabs){let e=n(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,Y?`radio`:`tab`),e.setAttribute(Y?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{A=t.agentId,j=null,U=null,M=``,N=``,P=``,F=``,Z(),X(!1,Y),$()}),_.append(e)}}function Tt(){return V?Pe:_e(O,A,j)}function Et(e){return ce({state:k,selectedAgentId:A,selectedRevision:j,body:e,isConnected:Ne,isDecisionInFlight:I,isDraft:V,pendingCommentCount:Ye(),hasUnsavedComment:Xe(),problem:U})}function Dt(e){Oe.textContent=e.status,Oe.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);Ae.hidden=!t,je.disabled=!t;for(let t of e.actions){let e=Me.get(t.kind);e&&(e.disabled=!t.enabled)}}function Ot(){Dt(Et(Tt()))}function $(){let e=Y&&p.contains(document.activeElement),t=ce({state:k,selectedAgentId:A,selectedRevision:j,body:null,isConnected:Ne});(A!==t.selectedAgentId||j!==t.selectedRevision)&&Z(),A=t.selectedAgentId,j=t.selectedRevision,z!==Q()&&(z=null);let r=Tt(),i=Et(r);wt(i);let a=i.revisions.findIndex(e=>e.selected),o=i.revisions[a],s=Date.now();ue.hidden=i.revisions.length<2,x.textContent=`Rev ${a+1} of ${i.revisions.length}`,ge.textContent=o?se(o.receivedAt,s):``,y.disabled=a<=0,b.disabled=a<0||a>=i.revisions.length-1,C.replaceChildren();for(let e of[...i.revisions].reverse()){let t=n(`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(n(`span`,`plan-revision-name`,e.label),n(`span`,`plan-revision-age`,se(e.receivedAt,s))),e.isOpen&&t.append(n(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Ue(e.revision)),C.append(t)}w.replaceChildren();let c=R?`edit`:B?`changes`:`read`,l=i.modes.find(e=>e.kind===c&&e.enabled)??i.modes[0];for(let e of i.modes){let t=n(`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===c)),t.tabIndex=e.kind===l.kind?0:-1,t.addEventListener(`click`,()=>{t.disabled||(at(e.kind),w.querySelector(`[aria-checked="true"]`)?.focus())}),w.append(t)}T.hidden=!yt()&&!V,xe.hidden=T.hidden,xe.setAttribute(`aria-pressed`,String(V)),Dt(i),Ct(r),f.disabled=q.length===0,Ve(),e&&!p.contains(document.activeElement)&&h.focus()}function kt(e){L!==null&&l(e,L.agentId)&&(L=null,z=null,u.showTerminal())}function At(e){J=null,e!==O&&(L=null,I=!1,U=null,K.clear()),X(!1,!1),O=e,d.hidden=!1,M=``,N=``,$(),pt()}function jt(){J=null,X(!1,!1),d.hidden=!0}function Mt(e,t){return t.kind!==`selection`||e.agentId!==A?!1:t.revision===null?j===null||j===e.revision:t.revision===j}function Nt(e){e.kind===`draft`?(F=``,He(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?P=``:N=Ge(e.agentId,e.revision)}function Pt(e){W!==null&&oe(e,W.agentId)!==W.revision&&(G.delete(W.bucketKey),W=null)}function Ft(e){I=!1,It({reviews:e.reviews});let t=e.body;if(!t){let e=dt()??ut();e!==null&&Nt(e);return}let n=lt(t);if(t.revision===0){if(F=``,n===null||t.agentId!==A)return;Pe=t.plan,V=!0}else he(e.id,t),n!==null&&Mt(t,n)&&(A=t.agentId,j=t.revision,M=``,N=``)}function It(e){let t=oe(e,A);t!==null&&t!==oe(k,A)&&(j=t,Z()),Pt(e),k=e,I=!1,kt(e)}function Lt(e){let t=!1;e.state&&It(e.state),e.draft&&Fe.set(_t(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(L=null,I=!1,W=null,e.refusalText&&(U=e.refusalText)),typeof e.isConnected==`boolean`&&(t=e.isConnected&&!Ne,Ne=e.isConnected,t&&(M=``,N=``,P=``,F=``,I=!1)),e.requestFailed&&(N=M),e.response&&Ft(e.response),d.hidden||$(),(t||e.decisionRefused)&&pt()}return{el:d,show:At,hide:jt,update:Lt}}export{C as createPlanFace,ge as dropPlanBodyCache};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Kt as e,vt as t,yt as n}from"./dom-helpers-xJduxDcc.js";var r=new Map;function i(e){return e.card?.dataset.session||e.nameEl?.textContent||``}function a(e){return typeof e==`string`?e:String(e)}function o(e){return typeof e==`string`?r.get(e):void 0}var s=document.getElementById(`sessions-container`),c=320,l=8e3,u=new Set;function d(e){u.add(e)}var f=(e,t)=>{for(let n of u)n(e,t)},p=window.matchMedia?.(`(prefers-reduced-motion: reduce)`);function m(e){p?.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 h(t){if(!t||t.currentState!==e.RUNNING)return;let n=performance.now();t._lastOutputAt=n,!(n-(t._activityGate||0)<c)&&(t._activityGate=n,t._activity===`quiet`&&(t._activity=`active`,f(t,`flag`)),f(t,`beat`))}function g(t){if(!t||t.currentState!==e.RUNNING)return;let n=performance.now()-(t._lastOutputAt||0)>=l?`quiet`:`active`;t._activity!==n&&(t._activity=n,f(t,`flag`))}function _(e,t){e&&(t&&(e._lastOutputAt=performance.now(),e._activityGate=0,e._activity=`active`),t||(e._activity=void 0),f(e,`flag`))}var v=new Set([e.RUNNING,e.WAITING,e.STARTING,e.INITIALIZING]),y=e=>v.has(e);function b(e){return y(e.currentState)?t(Date.now()-(e.stateSince||Date.now()),{rounding:`floor`,showsHours:!0}):``}var x=new Set;function S(e){return x.add(e),()=>x.delete(e)}function C(){for(let[,e]of r)g(e);for(let e of x)try{e()}catch{}}setInterval(()=>{document.hidden||C()},1e3),document.addEventListener(`visibilitychange`,()=>{document.hidden||C()});function w(e){return n(Number(e)||0,{rounding:`round`,wording:`compact`,suffix:``,justNowBelowSeconds:0})}function T(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?`never`:`${w(Date.now()-e)} ago`}var E=e=>`polled ${T(e)}`;function D(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=E){let a={el:e,ts:n,format:r};i(a),t.push(a)},onTick(e){n.push(e)},reset(){t=[],n=[]},ensure(){r||=S(a)}}}export{b as a,m as c,o as d,a as f,S as i,_ as l,r as m,T as n,d as o,i as p,w as r,h as s,D as t,s as u};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,Kt as t,Tn as n,a as r,c as i,i as a,m as o,o as s,u as c}from"./dom-helpers-xJduxDcc.js";import{l,r as u,u as d}from"./control-ws-CAcwW-r9.js";import{m as f,n as p,p as m}from"./poll-ago-Bc-8mMFj.js";import{G as h,S as g,W as ee,l as _}from"./ui-prefs-CNf6fId2.js";import{C as te,a as v,s as y,t as b,w as x}from"./action-status-BwqYb9eF.js";import{t as ne}from"./roving-keys-core-BDobx2It.js";import{a as re}from"./modal-mWl2H7A_.js";import{Bn as ie,Ft as S,Hn as ae,It as C,Lt as oe,Nt as w,Pt as T,St as se,Vn as E,bt as ce,xt as D,zn as le}from"./index-D6m--U7B.js";function ue(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function O(e,t){if(!e?.error)return null;let n=e.error.trim().replace(/[.!]+$/,``),r=e.incident?.trim().replace(/[.!]+$/,``),i=`Could not reach GitHub: ${n}.${r?` GitHub reports: ${r}.`:``}`;if(e.isRefreshing)return`${i} Refreshing.`;if(typeof e.nextAttemptAt!=`number`)return i;let a=Math.max(0,Math.ceil((e.nextAttemptAt-t)/1e3));return a===0?`${i} Retrying now.`:e.retry?`${i} Retrying in ${a}s (${e.retry.attempt} of ${e.retry.limit}).`:`${i} Next try in ${a>=60?`${Math.ceil(a/60)} min`:`${a}s`}.`}function de(e,t,n){return e?.refreshNotice&&e.isRefreshing?e.refreshNotice:t||e?.isRefreshing?`Refreshing`:n||e?.refreshNotice||``}function fe(e,t){let n=e?.lastRefreshedAt??e?.lastSyncAt??null;if(n===null)return null;let r=Math.max(0,t-n);return!e?.error&&r<=3e5?null:r<6e4?`Last updated less than a minute ago.`:r<36e5?`Last updated ${Math.floor(r/6e4)} min ago.`:`Last updated ${Math.floor(r/36e5)} h ago.`}function k(e,t,n,r,i,a){return{isVisible:a&&(e.state===`OPEN`||t),isPressed:t,isDisabled:n,statusText:r||(n?`Saving`:i),tone:r?`error`:n?`busy`:null}}function pe(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=A(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 A(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`),k(e,!!e.keepMergeable,t,n,o,r)}function me(e){return e?.isKeepMergeableEnabled!==!1}function he(e){return e?.isMergeQueueEnabled!==!1}function ge(e,t,n){return e?t?`Repair pushed, waiting for you`:n?`On, the last merge failed and retries an hour later once it is ready`:`On, merges as soon as it is ready`:`Not queued`}function _e(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return k(e,i,t,n,ge(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}function ve(e){return e.checks.failing.length>0?{label:`Checks`,tone:`danger`,icon:`failed`,text:`${e.checks.failing.length} failing`,items:e.checks.failing}:e.checks.state===`FAILURE`||e.checks.state===`ERROR`?{label:`Checks`,tone:`danger`,icon:`failed`,text:`Failing`}:e.checks.pendingCount>0?{label:`Checks`,tone:`wait`,icon:`running`,text:`${e.checks.pendingCount} running`}:e.checks.state===`PENDING`||e.checks.state===`EXPECTED`?{label:`Checks`,tone:`wait`,icon:`running`,text:`Running`}:e.checks.state===`SUCCESS`?{label:`Checks`,tone:`ok`,icon:`passed`,text:`Passing`}:{label:`Checks`,tone:`muted`,icon:`none`,text:`No checks`}}function j(e){return`${e} ${e===1?`approval`:`approvals`}`}function M(e){return e.reviewRequests.map(e=>e.name).join(`, `)}function ye(e){let t=e.reviewRequests.length>0?`Requested: ${M(e)}`:`Approval required`;return e.approvals>0?`${t}, ${j(e.approvals)}`:t}function be(e){let t=e.approvals>0?j(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 xe(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?be(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:ye(e)}:e.reviewRequests.length>0?{label:`Review`,tone:`wait`,icon:`reviewer`,text:`Requested: ${M(e)}`}:{label:`Review`,tone:`muted`,icon:`none`,text:`No review requested`}}function N(e,t){return t?e.lastAuthor!==t:null}function Se(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function Ce(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function we(e,t){let n=N(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 Te(e,t){return[...e.threads].sort((e,n)=>{let r=Number(N(n,t)===!0)-Number(N(e,t)===!0);return r===0?(Date.parse(n.lastActivityAt)||0)-(Date.parse(e.lastActivityAt)||0):r}).map(e=>({location:Se(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:Ce(e),lastActivityAt:e.lastActivityAt,waiting:we(e,t),isWaitingOnYou:N(e,t)===!0}))}function Ee(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=>N(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 De(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 Oe(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 ke={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 Ae(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=ke[e.state]??{text:e.state.toLowerCase().replaceAll(`_`,` `),tone:`muted`,icon:`unknown`};return{reviewer:e.reviewer??`a deleted account`,text:t.text,tone:t.tone,icon:t.icon,submittedAt:e.submittedAt}})}var P={danger:0,warn:1,wait:2,muted:3,ok:4};function je(e,t=null){if(e.state===`MERGED`)return[];let n=[ve(e),xe(e),Ee(e,t),De(e),Oe(e)],r=e.autoRebase?[Me(e,e.autoRebase)]:[],i=e.mergeQueueFailure?[{label:`Merge when ready`,tone:`danger`,icon:`failed`,text:`Merge failed: ${e.mergeQueueFailure.message}`}]:[];return[...n,...r,...i].toSorted((e,t)=>P[e.tone]-P[t.tone])}function Me(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 F(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 Ne(e,t=0){if(!e)return[];let n=O(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}var Pe={isVisible:!1,isDisabled:!0,statusText:``,tone:null},Fe={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 Ie(e,t){if(e.state!==`OPEN`)return Pe;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,...Fe[n.phase]};let r=oe(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 ${C(e.mergeMethod)}`,tone:null}}function Le(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${C(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function Re(e){let t=n.safeParse(e);if(!t.success)return null;let r=e&&typeof e==`object`&&`requestId`in e?e.requestId:null;return typeof r==`string`?{...t.data,requestId:r}:null}var I=null,L=null,R=D().status,z=null,B=new Map,V=new Map,H=null,U={label:`Keep mergeable`,pendingKeys:new Set,errorsByKey:new Map,controlState:(e,t,n,r)=>A(e,t,n,r,p(e.keepMergeableAttempt?.at)),isFeatureEnabled:me,save:async(e,t)=>{let n=await d(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:b});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.`}},ze={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:_e,isFeatureEnabled:he,save:async(e,t)=>{let n=await d(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:b});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.`}},W=6e4,G=6e4,Be=`The server did not answer within ${W/1e3} s. Check GitHub before trying again.`,Ve=`${e} Check GitHub before trying again.`;function He(e,t){let n=typeof e==`string`?[e]:e,r=s(`div`,`reviews-refresh-control`),i=s(`button`,`pr-action pr-action-ghost reviews-refresh-button`,`Refresh`);i.type=`button`;let a=s(`span`,`reviews-refresh-status`);a.setAttribute(`role`,`status`);let o=s(`p`,`my-pr-error reviews-retry-notice`);r.append(i,a);let l=null,u=!1,f=``,p=null;function m(){let e=Date.now(),n=O(l,e),r=fe(l,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!l?.error&&(o.hidden=!l?.error),a.textContent=de(l,u,f)||(l?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!c(t)&&!document.hidden&&o.getClientRects().length>0&&ue(l,e);!i&&p!==null&&(window.clearInterval(p),p=null),i&&p===null&&(p=window.setInterval(m,1e3))}function h(e){e!==l&&(f=``),l=e,i.disabled=u||!!e?.isRefreshing||!e?.configured,m()}i.addEventListener(`click`,async()=>{if(!u){u=!0,f=``,h(l);try{let e=await Promise.all(n.map(e=>d(`github-polling-refresh`,{lane:e},{timeoutMs:G}))),t=e.find(e=>e.type===`github-polling-refresh-result`&&!e.ok);t?.type===`github-polling-refresh-result`&&(f=t.error??`Could not refresh from GitHub.`),!t&&e.some(e=>e.type===`github-polling-refresh-result`)&&(f=`Refreshed.`)}catch(e){f=y(e,G)}finally{u=!1,h(l)}}});let g=new MutationObserver(m);g.observe(t,{attributes:!0,subtree:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});for(let e=t.parentElement;e;e=e.parentElement)g.observe(e,{attributes:!0,attributeFilter:[`hidden`,`data-queue-collapsed`]});return document.addEventListener(`visibilitychange`,m),{control:r,notice:o,update:h}}function K(e,t,n,r){B.set(e,{head:t,phase:n,text:r}),Z()}function Ue(t){if(V.has(t.key))return;let n=u(`my-pr-merge`);if(!l({type:`my-pr-merge`,requestId:n,repo:t.repo,number:t.number,headRefOid:t.headRefOid})){K(t.key,t.headRefOid,`failed`,e);return}let r=window.setTimeout(()=>{V.delete(t.key),K(t.key,t.headRefOid,`failed`,Be)},W);V.set(t.key,{requestId:n,head:t.headRefOid,timer:r}),B.set(t.key,{head:t.headRefOid,phase:`pending`,text:``}),Z()}function We(e){let t=Ie(e,B.get(e.key));if(!t.isVisible)return null;let n=s(`footer`,`pr-footer pr-decision-bar`),r=s(`button`,`pr-action`,`Merge`);r.type=`button`,r.disabled=t.isDisabled;let i=s(`span`,`pr-action-status`,t.statusText);return i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),v(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{re({title:`Merge pull request`,message:Le(e),confirmLabel:`Merge`,onConfirm:()=>Ue(e)})}),n.append(r,i),n}function Ge(e,t){let n=t.controlState(e,t.pendingKeys.has(e.key),t.errorsByKey.get(e.key),t.isFeatureEnabled(R));if(!n.isVisible)return null;let r=s(`div`,`my-pr-merge`),i=s(`button`,`pr-action`,t.label);i.type=`button`,i.disabled=n.isDisabled,i.setAttribute(`aria-pressed`,String(n.isPressed));let a=s(`span`,`pr-action-status`,n.statusText);return v(a,n.tone,n.statusText),a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`),i.addEventListener(`click`,async()=>{if(!t.pendingKeys.has(e.key)){t.pendingKeys.add(e.key),t.errorsByKey.delete(e.key),Z();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,y(n,b))}finally{t.pendingKeys.delete(e.key),Z()}}}),r.append(i,a),r}function q(e,{hasGlyph:t}){let n=s(`span`,`my-pr-stage`);return n.dataset.tone=S(e.stage),t&&n.append(E(w(e.stage),S(e.stage))),n.append(T(e.stage)),n}function Ke(e,t){let n=s(`span`,`my-pr-requested`);n.append(s(`span`,null,`Requested`));let r=s(`span`,`avatar-stack`);for(let t of e.reviewRequests){let e=a({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,s(`span`,`my-pr-requested-names`,t.slice(11))),n}function qe(e){let t=s(`div`,`pr-detail-heading`),n=s(`div`,`pr-detail-title`);n.append(i(`pr-link`,e.key,e.url),s(`h2`,null,e.title));let r=s(`p`,`pr-detail-meta`),a=e.state===`MERGED`?`Merged ${p(Date.parse(e.mergedAt??``))}`:`Updated ${p(Date.parse(e.updatedAt))}`;return r.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!0}),s(`span`,null,`Opened ${p(Date.parse(e.createdAt))}`),s(`span`,null,a)),t.append(n,r),t}function Je(e){let t=je(e,R?.viewer??null);if(t.length===0)return null;let n=s(`section`,`pr-readiness-section`);n.append(s(`h3`,`pr-section-heading`,`Merge readiness`));let r=s(`ul`,`pr-readiness`);for(let n of t){let t=s(`li`,`pr-readiness-row`);t.dataset.tone=n.tone;let i=s(`span`,`pr-readiness-value`);if(n.label===`Review`&&n.text.startsWith(`Requested: `)&&i.append(Ke(e,n.text)),i.childNodes.length===0&&(i.textContent=n.text),n.items){let e=s(`ul`,`my-pr-facts`);for(let t of n.items)e.append(s(`li`,null,t));i.append(e)}t.append(E(n.icon,n.tone),s(`span`,`pr-readiness-label`,n.label),i),r.append(t)}return n.append(r),n}function J(e,t){if(t.length===0)return null;let n=s(`section`,`my-pr-threads-section`);n.append(s(`h3`,`pr-section-heading`,e));let r=s(`ul`,`my-pr-threads`);for(let e of t){let t=s(`li`,`my-pr-thread`),n=s(`div`,`my-pr-thread-heading`);if(n.append(i(`my-pr-thread-location`,e.location,e.url)),e.waiting){let t=s(`span`,`my-pr-stage`);t.dataset.tone=e.waiting.tone,t.append(E(e.waiting.icon,e.waiting.tone),e.waiting.text),n.append(t)}let a=s(`p`,`my-pr-thread-excerpt`);a.append(s(`strong`,null,e.author),` ${e.excerpt}`);let o=Date.parse(e.lastActivityAt),c=s(`p`,`my-pr-thread-meta`,Number.isFinite(o)?`${e.replySummary}, ${p(o)}`:e.replySummary);t.append(n,a,c),r.append(t)}return n.append(r),n}function Ye(e){let t=Ae(e);if(t.length===0)return null;let n=s(`section`,`pr-readiness-section`);n.append(s(`h3`,`pr-section-heading`,`Reviews`));let i=s(`ul`,`pr-readiness`);for(let e of t){let t=s(`li`,`pr-readiness-row`),n=Date.parse(e.submittedAt??``),a=Number.isFinite(n)?`${e.text} ${p(n)}`:e.text,o=s(`span`,`my-pr-reviewer`);o.append(r([{login:e.reviewer,tone:e.tone,title:e.reviewer,url:e.reviewer===`a deleted account`?null:void 0}],16),s(`span`,null,e.reviewer)),t.append(E(e.icon,e.tone),o,s(`span`,`pr-readiness-value`,a)),i.append(t)}return n.append(i),n}function Xe(e){let t=[U,ze].map(t=>Ge(e,t)).filter(e=>e!==null);if(t.length===0)return null;let n=s(`section`,`my-pr-automation`);return n.append(s(`h3`,`pr-section-heading`,`Automation`),...t),n}function Y(e){if(!I)return;if(!e){I.replaceChildren(s(`p`,`pr-empty`,F(R)));return}let t=Te(e,R?.viewer??null),n=s(`article`,`pr-detail`),r=[Je(e),J(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),J(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),Ye(e),Xe(e),We(e)];n.append(qe(e),...r.filter(e=>e!==null)),I.replaceChildren(n)}function X(e){let n=e.dataset.sessionId??``,r=f.get(n),i=o(e,`.session-row-name`);r&&(i.textContent=m(r)||n);let a={glyph:o(e,`.session-row-glyph`),label:o(e,`.session-row-label`)},s=ie(e,a,r?.currentState||t.DORMANT,r?.awaitingBackgroundTasks,r?.pendingPromptKind),c=`Focus session ${i.textContent}, ${s}`;e.title=c,e.setAttribute(`aria-label`,c)}function Ze(e){let{row:t,refs:n}=le(`button`,`my-pr-session-pill`);return t.type=`button`,t.dataset.sessionId=e.id,n.name.textContent=e.title,X(t),t.addEventListener(`click`,()=>H?.(e.id)),t}function Qe(e){if(!e||e.length===0)return null;let t=s(`div`,`my-pr-session-focus`);return t.append(...e.map(Ze)),t}function $e(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))X(e)}function et(e,t,n){let r=s(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${T(e.stage)}`;let i=s(`span`,`pr-queue-glyph`);i.append(E(w(e.stage),S(e.stage)));let a=s(`span`,`pr-queue-top`);a.append(s(`strong`,`pr-queue-ref`,e.key),s(`span`,`pr-queue-title`,e.title));let o=s(`span`,`pr-queue-bottom`);o.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!1})),t&&o.append(s(`span`,`my-pr-stage`,`Stacked on ${t}`));let c=e.state===`MERGED`?e.mergedAt:null,l=c?`merged ${p(Date.parse(c))}`:`opened ${p(Date.parse(e.createdAt))}`;o.append(s(`span`,`pr-queue-elapsed`,l));let u=pe(e,U.isFeatureEnabled(R),p(e.keepMergeableAttempt?.at));if(u){let e=s(`span`,`my-pr-stage`,u.text);e.dataset.tone=u.tone,e.title=u.title,o.append(e)}r.append(i,a,o);let d=s(`div`,`my-pr-row-group`);d.append(r);let f=Qe(n);return f&&d.append(f),{group:d,row:r}}function tt(e){z=e,Y(D().prs.find(e=>e.key===z))}function Z(){let{prs:e,status:t}=D();R=t,z&&Y(e.find(e=>e.key===z)),L?.onChange()}function nt(e,t){return H=t?.openTerminal??null,L=e,I||(I=s(`div`,`pr-detail-mine`),se(rt),Z(),I)}function rt(e){switch(e.kind){case`prs`:Z();return;case`session-state`:$e();return;case`merge-result`:at(e.message);return;case`connection`:it(e.isConnected)}}function it(e){if(!e){for(let[e,t]of V)window.clearTimeout(t.timer),B.set(e,{head:t.head,phase:`failed`,text:Ve});V.size!==0&&(V.clear(),Z())}}function at(e){let t=Re(e);if(!t)return;let n=V.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),V.delete(t.key),!t.ok){K(t.key,n.head,`failed`,t.error||`The merge failed.`);return}if(K(t.key,n.head,t.kind??`unconfirmed`,``),t.kind!==`merged`)return;let r=D().prs.find(e=>e.key===t.key);r&&ce([r])}var ot={minPx:220,maxPx:720},st=16,Q=new Set,ct=0;function $(e){let t=g();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=_();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function lt(){for(let e of Q)e.isConnected?$(e):Q.delete(e)}function ut(e,t){let n=s(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function dt(e){let t=s(`div`,`pr-queue-foot`);return e&&t.append(e),t}function ft({queueLabel:e,scopeTabs:t,resizerLabel:n}){let r=s(`div`,`pr-columns`),i=s(`div`,`pr-queue-pane`),a=s(`nav`,`pr-queue`);a.id=`pr-queue-${++ct}`,a.setAttribute(`aria-label`,e);let o=s(`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 c=te(16,16);c.append(x(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),c.append(x(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let l=x(`path`,{d:`M11 6L9 8L11 10`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`,"stroke-linejoin":`round`});l.classList.add(`pr-queue-chevron`),c.append(l),o.append(c),o.addEventListener(`click`,()=>{ee(!g()),lt()});let u=dt(null);i.append(ut(t,o),a,u);let d=s(`div`,`pr-queue-resizer`);d.setAttribute(`role`,`separator`),d.setAttribute(`aria-orientation`,`vertical`),d.setAttribute(`aria-label`,n),d.tabIndex=0;let f=s(`main`,`pr-detail-host`);return r.append(i,d,f),$(r),Q.add(r),ae({resizer:d,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:ot,keyStepPx:st,getStoredWidth:_,setStoredWidth:h}),{columns:r,queue:a,foot:u,detail:f}}function pt({label:e,scopes:t,selected:n,onSelect:r,extraClassName:i,countClassPrefix:a}){let o=document.createElement(`div`);o.className=i?`pr-scope-tabs ${i}`:`pr-scope-tabs`,o.setAttribute(`role`,`tablist`),o.setAttribute(`aria-label`,e);let s=new Map,c=t.map(e=>{let t=document.createElement(`button`);return t.className=`pr-scope-tab`,t.type=`button`,t.dataset.scope=e.id,t.setAttribute(`role`,`tab`),t.textContent=e.label,t}),l=e=>{for(let[n,r]of c.entries()){let i=t[n].id===e;r.setAttribute(`aria-selected`,String(i)),r.tabIndex=i?0:-1}},u=(e,n)=>{l(t[e].id),r(t[e].id),n&&c[e].focus()};for(let[e,t]of c.entries())t.addEventListener(`click`,()=>u(e,!1)),t.addEventListener(`keydown`,t=>{let n=ne(t.key,e,c.length,`horizontal`);n!==null&&(t.preventDefault(),u(n,!0))});return o.append(...c.map((e,n)=>{if(!a)return e;let r=document.createElement(`span`);r.className=a,r.setAttribute(`role`,`presentation`);let i=document.createElement(`span`);return i.className=`${a}-count`,i.dataset.scopeCount=t[n].id,s.set(t[n].id,i),r.append(e,i),r})),l(n),{element:o,select:l,countElementByScope:s}}export{He as a,tt as c,ut as i,F as l,ft as n,et as o,dt as r,nt as s,pt as t,Ne as u};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,G as t,J as n,K as r,Q as i,U as a,W as o,X as s,Y as c,Z as l,at as u,c as d,ct as ee,et as f,it as te,lt as p,n as m,nt as h,o as g,ot as _,p as v,pt as y,q as ne,r as b,st as re,tt as x,u as S,z as C}from"./dom-helpers-xJduxDcc.js";import{u as w}from"./control-ws-CAcwW-r9.js";import{n as T,r as E,t as D}from"./poll-ago-Bc-8mMFj.js";import{a as O,s as k,t as A}from"./action-status-BwqYb9eF.js";import{a as ie}from"./modal-mWl2H7A_.js";import{A as j,M as ae,Un as oe,Wn as se,j as ce,k as le,sr as ue}from"./index-D6m--U7B.js";import{createInvestigationDialog as de,createRadarReportDialog as M}from"./dialogs-CCP1ipXD.js";var fe=4e3;function pe({render:e,holdMs:t=fe,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 N=null,P=`http://www.w3.org/2000/svg`,F=pe({render:Ve}),I=null,L=new Map,R=new WeakMap,me=`this issue`,z=D(()=>N),he={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},B=[{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}],ge=B.map(e=>e.track).join(` `),_e=B.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ve=B.findIndex(e=>e.startsActionCluster)+1,V=3e4;function H(e){let t=g(`div`,e);return t.style.setProperty(`--radar-issue-grid`,ge),t.style.setProperty(`--radar-issue-grid-phone`,_e),t.style.setProperty(`--radar-issue-actions-start`,String(ve)),t}function U(e,t){let n=g(`span`,`radar-issue-magnitudes`),r=!1;for(let i of B){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function W(e){return Number.isFinite(e)?String(e):`0`}function ye(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${E(Date.now()-e)}`}function G(e){return typeof e?.issueId==`string`?e.issueId:``}function K(e,t){return[String(e??``),String(t??``)].join(`::`)}function be(e,t,n){let r=L.get(K(e,t));if(!r||!r.copy.isConnected)return!1;let i=c(n);return i?(r.summary||(r.summary=g(`span`,`radar-issue-summary`),r.copy.insertBefore(r.summary,r.copy.querySelector(`.radar-issue-meta`))),r.summary.textContent=i,!0):(r.summary?.remove(),r.summary=null,!0)}function q(e,n,r){let i=G(e);if(!i)return;I?.dialog.close();let a=de({issueTitle:String(e.title||i),projectLabel:r,onOpenReport:()=>Y(e)});I={projectId:String(n??``),issueId:i,dialog:a},a.update(t(e))}function J(){if(!I)return;if(!I.dialog.isOpen()){I=null;return}let e=C(j().latest,I.projectId,I.issueId);e&&I.dialog.update(t(e))}function Y(e){let t=G(e);t&&w(`get-radar-report`,{issueId:t},{timeoutMs:A}).then(n=>{n.ok?n.found?M({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):M({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):M({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{M({issueId:t,issueTitle:String(e.title??``),error:k(n,A)})})}function X(){let e=g(`div`,`radar-issue-actions`),t=g(`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=g(`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)=>{F.begin(e),o(!0),i(),O(t,`busy`,a);let l=(n,r)=>{o(!1),i(),O(t,n,r),F.settle(e)};w(n,r,{timeoutMs:V}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,k(e,V)))},showFollowUp:a,wrap:e}}function xe(e){let t=g(`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(),Be(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=X(),s=(n,r,a,o,s=null)=>i(`${n}:${e.issueId}`,n,{projectId:t,issueId:e.issueId,...r},a,o,s);return e.inFlight&&r(`View investigation`,`Watch the running investigation`,()=>q(e,t,n)),!e.inFlight&&e.verdict&&G(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>Y(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`&&j().traceOpener&&a(xe(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`,()=>{ie({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 Z(e){return oe()?me:e}function Ce(e){let t=R.get(e);t&&(e.title=t())}function we(){if(N)for(let e of N.querySelectorAll(`.radar-issue-reportable`))Ce(e)}se(we);function Te(e,t,n){e.classList.add(`radar-issue-reportable`),R.set(e,t),Ce(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function Ee(e,t,r){let i=g(`div`,`radar-issue`);i.dataset.severity=te(e.change);let a=g(`span`,`radar-stripe`);a.setAttribute(`aria-hidden`,`true`);let o=g(`span`,`radar-change`,he[e.change??``]||String(e.change||`unknown`)),u=d(`radar-issue-title`,String(e.title||`Untitled issue`),e.url,String(e.title||``)),f=g(`span`,`radar-metric`);f.append(g(`span`,`radar-metric-value`,W(e.occurrences)),g(`span`,`radar-metric-label`,`occ`));let p=g(`span`,`radar-metric`);p.append(g(`span`,`radar-metric-value`,W(e.users)),g(`span`,`radar-metric-label`,`users`));let m=l(e.history),h=re(m,64,16),_=h?document.createElementNS(P,`svg`):null;if(_){_.classList.add(`radar-sparkline`),_.setAttribute(`viewBox`,`0 0 64 16`),_.setAttribute(`width`,`64`),_.setAttribute(`height`,`16`),_.setAttribute(`role`,`img`),_.setAttribute(`focusable`,`false`);let e=document.createElementNS(P,`title`);e.textContent=ee(m);let t=document.createElementNS(P,`polyline`);t.setAttribute(`points`,h),_.append(e,t)}let v=c(e),b=g(`span`,`radar-issue-copy`);b.append(u);let x=null;v&&(x=g(`span`,`radar-issue-summary`),x.textContent=v,b.append(x)),L.set(K(t,e.issueId),{copy:b,summary:x});let S=g(`span`,`radar-issue-meta`),C=ne(e);if(C!==null){let e=g(`span`,`radar-issue-seen`);e.title=new Date(C).toLocaleString(),z.track(e,C,T),S.append(e)}let w=n(e);w&&S.append(g(`span`,`radar-issue-status`,w));let E=String(e.title||e.issueId);if(e.inFlight){let n=g(`span`,`radar-verdict`,`investigating`);n.dataset.verdict=`INVESTIGATING`,S.append(n);let a=typeof e.startedAt==`number`?e.startedAt:null;if(a!==null&&Number.isFinite(a)&&a>0){let e=g(`span`,`radar-issue-elapsed`);z.track(e,a,ye),S.append(e)}G(e)&&Te(i,()=>`Watch the investigation of ${Z(E)}`,()=>q(e,t,r))}if(!e.inFlight&&e.verdict){let t=g(`span`,`radar-verdict`,y(e.verdict));t.dataset.verdict=e.verdict,S.append(t),G(e)&&Te(i,()=>`View investigation report for ${Z(E)}`,()=>Y(e))}S.childElementCount>0&&b.append(S);let D=g(`span`,`radar-issue-trend`);_&&D.append(_);let O=s(m);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=g(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:a,change:o,copy:b,occurrences:f,users:p,trend:D};return U(i,e=>k[e.columnId]),G(e)&&i.append(Se(e,t,r)),i}var Q=(e,t,n)=>b(`radar`,e,t,n);function De(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${E(e.staleMs)}`:``}function Oe(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=g(r,i,f(t));o.title=String(t.name||``),e.append(o);let s=n?u(t.host):``;s&&e.append(g(`span`,a,s))}function ke(){let e=H(`radar-column-heads`);for(let t of B){if(!t.headText){e.append(g(`span`));continue}let n=g(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function Ae(e,t){let n=e.project,r=g(`div`,`radar-project`),i=_(n.issues),a=p(i),o=g(`div`,`radar-project-head`);Oe(o,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(o);let s=g(`div`,`radar-project-summary`);s.append(Q(a.active===1?`active issue`:`active issues`,W(a.active))),s.append(Q(`spiking`,W(a.spiking),a.spiking>0?`crit`:null)),s.append(Q(`needs you`,W(a.needsHuman),a.needsHuman>0?`warn`:null));let c=De(e);if(c){let t=g(`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(ke());let l=H(`radar-issues`);for(let e of i)l.append(Ee(e,n.projectId,f(n)));return r.append(l),r}function je(e,t){let n=e.project,r=g(`div`,`radar-quiet-row`),i=g(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),Oe(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(g(`span`,`radar-quiet-count`,`0 issues`)),r}var Me=(e,t)=>m(`radar`,e,t);function Ne(){let e=g(`div`,`radar-issue`);return e.dataset.skeleton=``,U(e,e=>g(`span`,e.cellClass)),e}function Pe(){let e=H(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Ne());return e}function Fe(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Ie(e,t=`ready`){let n=Me(`Errors`);if(t===`pending`)return n.append(Pe()),n;if(t===`placeholder`||e.length===0){let e=g(`p`,`radar-unconfigured`,h(j().latest)),t=ue(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Fe(j().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=g(`div`,`radar-global-tick`),o=Number(j().latest?.intervalMinutes);z.track(r,j().latest?.ts,e=>{let t=`polled ${T(e)}`;return!Number.isFinite(o)||o<=0?t:`${t}, every ${o}m`}),n.append(r);let s=o>0?o*6e4:0,{loud:c,quiet:l}=i(e,Date.now(),{intervalMs:s}),u=a(e);for(let e of c)n.append(Ae(e,u));if(l.length===0)return n;let d=g(`div`,`radar-quiet`);for(let e of l)d.append(je(e,u));return n.append(d),n}function Le(e){let{addButton:t,request:n,wrap:r}=X();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{Y({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`,()=>le(e.id))}),r}function Re(e){let t=g(`div`,`radar-investigation`),n=g(`span`,`radar-verdict`,y(e.verdict));n.dataset.verdict=e.verdict;let r=d(`radar-issue-title`,e.title,e.url),i=g(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=g(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=g(`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=g(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=g(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=g(`span`,`radar-investigation-time`,T(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Le(e)),t}function ze(e){let t=Me(`Investigations`,`completed, not yet archived`),n=g(`div`,`radar-investigations`);for(let t of e)n.append(Re(t));return t.append(n),t}function Be(e){j().traceOpener?.(e)}function Ve(){if(!N)return;N.textContent=``,L.clear(),z.reset();let{latest:e,archivedLocally:t}=j(),n=v(e),r=o(e,t),i=x(e,n.length);N.append(Ie(n,i)),r.length>0&&N.append(ze(r))}function $(){F.request()}function He(t){I?.dialog.isOpen()&&r(I,t)&&I.dialog.update(e(t))}function Ue(e){if(e.kind===`status`)$(),J();else if(e.kind===`investigation-activity`){J();let t=C(j().latest,e.projectId,e.issueId);if(e.wasInFlight&&be(e.projectId,e.issueId,t))return;$()}else e.isPatched?(J(),$()):He(e.frame)}function We(e){if(N)return;let t=g(`div`,`radar-content`);e.appendChild(t),N=t,ce(()=>!S(N)),ae(Ue),z.ensure(),Ve()}var Ge={mount:We};export{Ge as view};
|
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{C as e,H as t,Nn as n,On as r,Pn as i,V as a,a as o,c as s,d as c,i as l,jn as u,kn as d,o as f,u as p}from"./dom-helpers-xJduxDcc.js";import{l as m,r as ee}from"./control-ws-CAcwW-r9.js";import{n as h,t as g}from"./poll-ago-Bc-8mMFj.js";import{lt as te}from"./ui-prefs-CNf6fId2.js";import{C as _,a as v,w as y}from"./action-status-BwqYb9eF.js";import{i as b}from"./modal-mWl2H7A_.js";import{$ as x,At as S,Ct as C,Dt as w,Et as ne,Ft as re,J as ie,Mt as T,Nt as ae,Ot as E,Pt as oe,Q as se,Tt as ce,Un as le,Vn as ue,Wn as de,X as fe,Xt as pe,Y as me,Yt as he,Z as ge,_t as _e,at as ve,ct as ye,dt as be,et as xe,ft as Se,gt as Ce,ht as we,ir as Te,it as Ee,jt as De,kt as Oe,lt as ke,mt as Ae,nt as je,ot as Me,pt as Ne,q as Pe,rt as Fe,sr as Ie,st as Le,tr as Re,tt as ze,ut as Be,vt as Ve,wt as He,xt as Ue,yt as We}from"./index-D6m--U7B.js";import{a as Ge,c as Ke,l as qe,n as Je,o as Ye,s as Xe,t as Ze,u as Qe}from"./pr-scope-tabs-DftvVYU8.js";var $e=`> [!NOTE]
|
|
2
|
+
> Automated review. Not written by a human.`,et=`> [!NOTE]
|
|
3
|
+
> Automated review by [Glimmervoid](https://glimmervoid.dev). Not written by a human.`,tt=`> [!NOTE]
|
|
4
|
+
> Automated review by [Glimmervoid](https://glimmervoid.dev), not written by a human. Approved by hand after checking it.`,nt=d.options.join(`|`),rt=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${nt})\*\*`;function it(e){return[...e.matchAll(new RegExp(rt,`g`))].flatMap(e=>{let t=d.safeParse(e[2]);return t.success?[t.data]:[]})}function at(e){let t=new RegExp(String.raw`^${rt}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let n=d.safeParse(t[2]);return n.success?{reviewer:t[1]??null,severity:n.data,length:t[0].length}:null}function ot(e){let t=e.trimStart(),n=[$e,et,tt].find(e=>t.startsWith(e));return n?t.slice(n.length).trim():e.trim()}var st=`(line not in the diff)`,ct=String.raw`- ${rt}`,lt=String.raw`\*\*\x60([^\x60\n]+)\x60\*\* ${st.replace(/[()]/g,`\\$&`)}`,ut=new RegExp(String.raw`^(?:${ct}|${lt})`,`gm`),dt=new RegExp(String.raw`^${ct}\s*(?:\x60([^\x60\n]+)\x60:\s*)?`),ft=new RegExp(String.raw`^${lt}\s*`);function pt(e){return d.options.find(t=>e.includes(t))??null}function mt(e){let t=dt.exec(e);if(t)return{severity:d.parse(t[2]),location:t[3]??null,body:e.slice(t[0].length).trim(),markdown:e};let n=ft.exec(e),r=n?e.slice(n[0].length).trim():e;return{severity:pt(it(r)),location:n?.[1]??null,body:r,markdown:e}}function ht(e){let t=ot(e),n=t.search(ut);return(n===-1?t:t.slice(0,n)).trim()}function gt(e){let t=ot(e),n=[...t.matchAll(ut)].map(e=>e.index);return n.map((e,r)=>t.slice(e,n[r+1]).trim()).filter(Boolean).map(mt)}var _t={"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`},vt={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`},REQUEST_CHANGES:{label:`You requested changes`,tone:`wait`,icon:`changes-requested`}},yt={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 bt(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?yt[t.state]:null;if(!t)return vt[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?vt[e.postedEvent]:yt[t.state]}var xt={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function St(e){let{reason:t}=ne(e),n=xt[t];return n?{text:_t[t],icon:n}:null}function Ct(e){return St(e)?.text??null}var wt={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`}};function Tt(e,t){let n=Ct(t);return n?`${e}, ${n}`:e}function Et(e){if(n(e))return!0;let t=(e.githubReviews??[]).filter(e=>e.isViewer);return t.length===0||t.some(t=>t.commit===w(e))}var Dt={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function Ot(e,t){if(e.prStage)return{tone:re(e.prStage),icon:ae(e.prStage),meaning:oe(e.prStage)};let n=wt[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:Tt(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:Tt(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=Et(e)?bt(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=bt(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=St(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&S(e)?Dt:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function kt(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 At(e){return`${e} ${e===1?`comment`:`comments`}`}function jt(e,t,n){let r=[`${T(e.repo,e.number)}: ${e.title}`],a=`reviewedHead`in e?e.assessment?.goal.trim():``;if(a&&r.push(a),r.push(Ot(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(`
|
|
5
|
+
`);let o=kt(e.viewerThreads);o&&r.push(o);let s=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${Ht(e.verdict)}, ${At(s)}`);let c=$t(e);c&&r.push(`You ${Wt[c.state]} at ${i(c.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(Ln(e));let l=rn(e,{isViewerShown:t!==`posted`});for(let[e,t]of l.entries())r.push(nn(t.text,n.githubReviews?.[e]??null));return r.join(`
|
|
6
|
+
`)}function Mt(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}var Nt=new Set([`approve`,`approve-only`,`comment`,`request-changes`]);function Pt({action:e,outcomeText:t,pullRequest:n,warning:r,isActedSelected:i}){return r.trim()?{statusText:`${Mt(t)} ${Mt(r)}`,tone:`error`,shouldAdvance:!1,receipt:null}:{statusText:t,tone:`ok`,shouldAdvance:i,receipt:i&&Nt.has(e)?`Posted to ${n}: ${Mt(t)}`:null}}function Ft(e,t,n){return n?T(e,t):`#${t}`}var It={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},Lt={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},Rt=`lanes-team-review`,zt=`team-review-enabled`,Bt=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),Vt={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function Ht(e){return Vt[e]}var Ut=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),Wt=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),Gt=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),Kt=Object.freeze({approve:`Approved on GitHub`,"approve-only":`Approved on GitHub`,comment:`Comment posted on GitHub`,"request-changes":`Changes requested on GitHub`,discard:`Marked not mine. Not reviewed again until you re-run it.`,requeue:`Queued. The review starts as soon as a slot is free.`,"resolve-thread":`Thread resolved on GitHub`}),qt=Object.freeze({approve:`Posting the approval`,"approve-only":`Posting the approval`,comment:`Posting the comment`,"request-changes":`Requesting changes`,discard:`Marking not mine`,requeue:`Queueing the review`,"resolve-thread":`Resolving thread`});function Jt(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 Yt(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=Jt(t,w(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 Xt=40;function Zt(e,t){return e.split(`
|
|
7
|
+
`).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/Xt)),0)>t}function Qt(e,t){let n=Wt[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function $t(e){if(n(e))return null;let t=(e.githubReviews??[]).filter(e=>e.isViewer&&r.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!t?.commit||t.commit===w(e)||t.state===`COMMENTED`)return null;let i=Date.parse(t.submittedAt??``);return e.reviewedAt!==void 0&&i>e.reviewedAt?null:{approvedCommit:t.commit,submittedAt:t.submittedAt,state:t.state,isReviewScopeSinceDecision:e.priorReviewedHead===t.commit}}function en(e,t){let n=e.state===`APPROVED`?`approved this`:`requested changes`,r=e.state===`APPROVED`?`your approval`:`your request for changes`,a=`You ${n} at ${i(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${a}, so this review covers what changed after ${r}.`:`${a}.`}function tn(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function nn(e,t){return t?`${e}, ${t}`:e}function rn(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:tn(t.state),text:Qt(t,w(e)),submittedAt:t.submittedAt}))}function an(e){return It[e]}function on(e){return Lt[e]}function sn(e){let t=it(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function cn(e){return pt(sn(e))}function ln(e){return e!==`LOW`}function un(e){return ln(cn(e))}var dn=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(`.`)),fn=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function pn(e){let t=fn.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:dn.has(n.slice(r+1).toLowerCase())}var mn=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function hn(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:pn(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function gn(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:hn(e.slice(t?.[0].length??0))}})}function _n(e){let t=ot(e),n=at(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(mn)){let t=e.index??0;i.push(...gn(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(...gn(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function vn(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 yn(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 bn(e){return e===`full`?`full`:`light`}function xn(e){return e.priorReviewedHead?`${bn(e.tier)} review of changes since ${i(e.priorReviewedHead)}`:`${bn(e.tier)} review`}function Sn(e){return e.reasons.join(`, `)}function Cn(e){if(!e)return[];let t=[],n=e.goal.trim(),r=e.change.trim();return n&&t.push({kind:`goal`,text:n}),r&&t.push({kind:`change`,text:r}),t}var wn=`This review ran before plain summaries existed, so only its verdict and findings remain. Re-run review to get a plain summary.`,Tn=new Set([`error`,`stale`,`discarded`,`posted`]);function En(e){return Tn.has(e)}function Dn(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function On(e){let t=Dn(e);return t?`Reviewed at ${i(e.reviewedHead)}. The pull request is now at ${i(t)}.`:null}function kn(e){let t=Dn(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function An(e){let t=[`at ${i(e.head)}`,At(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function jn(e){let t=Mn(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function Mn(e){return Bt[e]??String(e).toLowerCase()}function Nn(e){return Ut[e]??`dim`}function Pn(e){return Gt[e]??e}function Fn(e,t){return`${a(t-e.startedAt)} elapsed`}function In(e,t){let n=[Fn(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${a(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function Ln(e){return e.status===`stale`&&e.earlierReview?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now and hands it these findings.`:e.status===`stale`?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now.`:e.status===`discarded`?`Marked not mine. Not reviewed again until you re-run it.`:e.error||e.summary||`The review failed.`}function Rn(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function zn(e){return Rn(e.path,e)}function Bn(e){return Rn(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function Vn(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function Hn(e){return{key:e,action:`discard`,body:``,comments:[]}}function D(e,t,n,r,i){return t===`approve-only`?{key:e.key,head:e.reviewedHead,action:t,body:``,comments:[]}:{key:e.key,head:e.reviewedHead,action:t,body:n,...i?{threadId:i}:{},comments:r.map(({path:e,line:t,side:n,body:r})=>({path:e,line:t,side:n,body:r}))}}function Un(e){return e.note.trim()!==``||e.comments.length>0||e.generalFindings.length>0}function Wn(e,t,n){return t===`approve`&&!Un(n)?D(e,`approve-only`,``,[]):D(e,t,Vn(n.note,[$e,ht(e.body),...n.generalFindings.map(e=>e.markdown)].filter(Boolean).join(`
|
|
8
|
+
|
|
9
|
+
`)),n.comments)}function Gn(e){let t=e.comments.length+e.generalFindings.length;return[e.note.trim()?`your note`:``,t?`${t} ${t===1?`finding`:`findings`}`:``].filter(Boolean).join(` and `)}function Kn(e){return`${e} inline ${e===1?`comment`:`comments`}`}function qn(e,t,n){let r=O(n);return Un(t)?{event:r,detail:`${[t.note.trim()?`your note`:`no note`,...t.comments.length>0?[Kn(t.comments.length)]:[],...t.generalFindings.length>0?[`${t.generalFindings.length} in the review body`]:[]].join(`, `)}, at ${i(e.reviewedHead)}.`}:{event:r,detail:ar(n)?`Needs a ticked finding or a note.`:`A bare approval at ${i(e.reviewedHead)}, with no note or comments.`}}function Jn(e,t){let n=Gn(t);return e===`approve`&&n?`Approved on GitHub with ${n}`:e===`comment`&&n?`Commented on GitHub with ${n}`:e===`request-changes`&&n?`Requested changes on GitHub with ${n}`:sr(e)}var Yn=Object.freeze({approve:`Approve`,"approve-only":`Approve`,comment:`Comment`,"request-changes":`Request changes`,discard:`Not mine`,requeue:`Re-run review`,"resolve-thread":`Resolve`});function O(e){return Yn[e]}var Xn=new Set([`REQUEST CHANGES`,`BLOCKED`]);function Zn(e){return Xn.has(e)?[`request-changes`,`approve`,`comment`]:[`approve`,`comment`,`request-changes`]}function Qn(e){return Xn.has(e)?`request-changes`:`approve`}function $n(e,t){return`${O(e)} selected. ${t} posts, Esc cancels.`}function er(e){return`Agent recommends: ${O(Qn(e)).toLowerCase()}`}var tr=` · `;function nr(e){let t=`Agent: ${O(Qn(e.verdict)).toLowerCase()}`,n=[...e.comments.filter(un).map(cn),...gt(e.body).map(e=>e.severity).filter(ln)];if(n.length===0)return`${t}${tr}no findings`;let r=pt(n.flatMap(e=>e?[e]:[])),i=`${n.length} ${n.length===1?`finding`:`findings`}`;return`${t}${tr}${r?`${i}, top ${r.toLowerCase()}`:i}`}var rr=Object.freeze({SUCCESS:`Passing`,FAILURE:`Failing`,ERROR:`Failing`,PENDING:`Running`,EXPECTED:`Running`});function ir(e){return e?rr[e]:`None reported`}function ar(e){return e===`comment`||e===`request-changes`}function or(e){return e.status===`ready`?{primary:Zn(e.verdict),secondary:[`requeue`,`discard`]}:u(e)?{primary:[`approve-only`],secondary:[`requeue`]}:e.status===`error`||e.status===`stale`?{primary:[`requeue`],secondary:[`discard`]}:En(e.status)?{primary:[`requeue`],secondary:[]}:{primary:[],secondary:[]}}function k(e){return qt[e]}function sr(e){return Kt[e]}function cr(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 lr(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 ur(e){return e?.configured&&e.reason||null}function dr(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${rn(e).map(e=>e.text).join(`, `)}`}function fr(e){return`reviewedHead`in e?JSON.stringify([e.prCreatedAt,e.reviewedAt,e.postedAt,e.githubReviews,e.liveHead,e.priorReviewedHead,e.viewerThreads]):JSON.stringify([e.prCreatedAt,e.priorReviewedHead])}var pr=12e4,mr=`The server did not answer within ${pr/1e3} s. Check GitHub before trying again.`,hr=`${e} Check GitHub before trying again.`,gr=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,_r=`GitHub review`,vr=Object.freeze({"pick-approve":`approve`,"pick-request-changes":`request-changes`,"pick-comment":`comment`}),A=He(),j=null,yr=null,M=null,N=null,P=null,F=null,I=null,L=null,br=null,xr=null,R=new Map,Sr=g(()=>j),Cr=g(()=>j),z=g(()=>j),wr=new WeakMap,B=new Map,V=new Map,H=new Map;function Tr(e){let t=an(e),n=f(`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=_(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(y(`path`,{d:gr,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=_(9,11),i=e<t.filledCount;r.append(y(`path`,{d:gr,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function Er({verdict:e}){let t=f(`span`,`pr-verdict-seal`);t.dataset.tone=Nn(e);let n=_(20,20),r=on(e);return n.append(y(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(y(`path`,{d:`M6 10.5L8.7 13L14 7.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),r===`dot`&&n.append(y(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(y(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(y(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,f(`span`,null,jn(e))),t}function Dr(){let e=_(16,16);return e.append(y(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(y(`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(y(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function Or(e){return s(`pr-link`,T(e.repo,e.number),e.url)}function kr(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function U(e,t){let n=kr(t);if(n===null)return null;let r=f(`span`,null,`${e}${e?` `:``}${h(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function Ar(e){let t=wr.get(e);t&&(e.title=`${t()}${e.dataset.unseen?`
|
|
10
|
+
New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function jr(){z.reset(),Mr(j)}de(jr);function Mr(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))wr.has(t)&&(Ar(t),z.onTick(()=>Ar(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=A?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?$t(e):null;if(!n)continue;let r=()=>{t.textContent=en(n,W(n.submittedAt))};r(),z.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:h(n),i=le()?nn(_r,r):nn(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),z.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??``;z.track(t,e,()=>`${n}${n?` `:``}${h(e)}`)}}}function Nr(e,t,n,r=!0){let i=rn(e,{isViewerShown:r});if(i.length===0)return null;let a=f(`span`,t),s=i.map(e=>({login:e.login,tone:e.tone,title:nn(le()?_r:e.text,W(e.submittedAt))})),c=o(s,n);for(let[e,t]of i.entries()){let n=c.children[e];if(!(n instanceof HTMLElement))continue;n.dataset.reviewTitle=t.text;let r=kr(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(c),a}function W(e){let t=kr(e);return t===null?null:h(t)}function Pr(e,t,n){let r=f(`span`,n);return r.append(l({login:e,cssPx:t}),f(`span`,`pr-author-login`,e)),r}function Fr(e,t){return`${T(e.repo,e.number)}\n${Ot(e,t).meaning}`}function Ir(e,t,n){let r=f(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key;let i=`reviewedHead`in e?$t(e):null;wr.set(r,()=>le()?Fr(e,t):jt(e,t,{opened:W(e.prCreatedAt),reviewed:`reviewedHead`in e?W(e.reviewedAt):null,posted:`reviewedHead`in e?W(e.postedAt):null,viewerApproval:W(i?.submittedAt),githubReviews:`reviewedHead`in e?rn(e,{isViewerShown:t!==`posted`}).map(e=>W(e.submittedAt)):[]})),Ar(r);let a=Rr(e,n);if(t===`inReview`){let t=e,n=f(`span`,`pr-queue-elapsed`);Sr.track(n,t.startedAt,()=>Fn(t,Date.now())),a.append(n)}if(t===`queued`){let t=U(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=U(``,t.reviewedAt)??U(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),a.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(a),r;r.classList.remove(`pr-queue-row-quiet`);let o=Ot(e,t),s=f(`span`,`pr-queue-glyph`);s.append(ue(o.icon,o.tone));let c=f(`span`,`pr-queue-bottom`);if(c.append(Lr(t===`ready`&&`reviewedHead`in e?{tone:o.tone,meaning:nr(e)}:o),Pr(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=f(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(f(`span`,`pr-phase-label`,Pn(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:Nr(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),r}function Lr(e){let t=f(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function Rr(e,t){let n=f(`span`,`pr-queue-top`);return n.append(f(`strong`,`pr-queue-ref`,Ft(e.repo,e.number,t)),f(`strong`,`pr-queue-ref-compact`,Ft(e.repo,e.number,!1)),f(`span`,`pr-queue-title`,e.title)),n}function zr({title:e,detail:t}){let n=f(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=f(`strong`,`pr-caught-up-title`);return r.append(ue(`ready`,`ok`),f(`span`,null,e)),n.append(r,f(`p`,`pr-caught-up-detail`,t)),n}var Br=`Open in session`,Vr=`Preparing the branch and session.`;function Hr(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;v(r,n,t);let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function Ur(e,t){let n=R.get(e);n&&window.clearTimeout(n.timer),R.set(e,{requestId:null,timer:0,text:t,tone:`error`}),Hr(e,t,`error`)}function Wr(t,n,r){if(R.get(t)?.requestId)return;let i=ee(`open-team-review-session`);if(!m({type:`open-team-review-session`,requestId:i,key:t})){v(r,`error`,e);return}let a=window.setTimeout(()=>Ur(t,`The server did not answer within ${pr/1e3} s.`),pr);R.set(t,{requestId:i,timer:a,text:Vr,tone:`busy`}),n.disabled=!0,v(r,`busy`,Vr)}function Gr(e){let t=f(`div`,`pr-session-open`),n=f(`button`,`pr-action pr-session-open-button`,Br);n.type=`button`;let r=R.get(e.key);n.disabled=!!r?.requestId;let i=f(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&v(i,r.tone,r.text),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>Wr(e.key,n,i)),t.append(n,i),t}function Kr(e,{hasFactsRail:t=!1}={}){let n=f(`div`,`pr-detail-heading`);n.dataset.signature=fr(e);let r=f(`div`,`pr-detail-title`);r.append(Or(e),f(`h2`,null,e.title));let i=f(`div`,`pr-detail-meta`);i.append(Pr(e.author,20,`pr-detail-author`));let a=f(`span`,null,xn(e));a.title=Sn(e),i.append(a);let o=U(`Opened`,e.prCreatedAt);if(o&&i.append(o),`reviewedHead`in e){let t=U(`Reviewed`,e.reviewedAt);t&&i.append(t);let n=U(`Posted`,e.postedAt);n&&i.append(n)}let s=`reviewedHead`in e?Nr(e,`pr-detail-github`,20):null;if(s&&i.append(s),n.append(r,i,Gr(e)),`reviewedHead`in e&&!t){let t=kt(e.viewerThreads);if(t){let r=f(`p`,`pr-viewer-threads`,t);Oe(e)&&(r.dataset.state=`all-resolved`),n.append(r)}}let c=`reviewedHead`in e?$t(e):null;if(c){let t=f(`p`,`pr-rereview-notice`,en(c,W(c.submittedAt)));t.dataset.reviewKey=e.key,n.append(t)}return n}function qr(e,t,n={}){let r=e.querySelector(`.pr-detail-heading`);return!r||r.dataset.signature===fr(t)||r.replaceWith(Kr(t,n)),e}function Jr(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function Yr(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(f(`code`,null,n.text));continue}let t=f(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function Xr(e,t){return Yr(e,hn(t))}function Zr(e){let t=f(`ul`,`pr-assessment-list`);for(let n of e)t.append(Xr(f(`li`,null),n));return t}function Qr(e){let t=e.assessment?.handChecks??[];if(t.length===0)return[];let n=f(`section`,`pr-hand-checks`);n.setAttribute(`aria-label`,`Check by hand`),n.append(f(`h3`,`pr-assessment-title`,`Check by hand`));let r=t.map(e=>e.paths.length===0?e.text:`${e.text}: ${e.paths.map(e=>`\`${e}\``).join(`, `)}`);return n.append(Zr(r)),[n]}function $r(e){let t=Cn(e.assessment);if(t.length===0)return[];let n=f(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(f(`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(Xr(f(`p`,t),e.text))}return[n]}function ei(e){let t=f(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=f(`div`,`pr-verdict-line`);n.append(Er(e),f(`strong`,`pr-verdict-recommendation`,er(e.verdict))),t.append(n);let{assessment:r}=e;if(!r)return t.append(f(`p`,`pr-verdict-legacy`,wn)),e.summary.trim()&&t.append(Xr(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t;if(t.append(Xr(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),r.gaps.length>0){let e=Zr(r.gaps);e.classList.add(`pr-verdict-gaps`),e.setAttribute(`aria-label`,`Not covered`),t.append(e)}if(r.checked.length===0)return t;let i=f(`details`,`pr-verdict-checked`);return i.append(f(`summary`,null,`What it checked (${r.checked.length})`),Zr(r.checked)),t.append(i),t}function ti(e){if(e.kind===`code`){let t=f(`pre`,`pr-comment-code`),n=f(`code`,null);return n.textContent=e.code,t.append(n),t}let t=f(`p`,`pr-comment-paragraph`);if(e.lead){let n=f(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(Dr()),n.append(e.lead),t.append(n,` `)}return Yr(t,e.segments)}function ni(e){return{body:e.body,severity:cn(e),location:Bn(e),locationTitle:zn(e),...e.excerpt?{excerpt:e.excerpt,citedLine:e.line}:{}}}var ri=Object.freeze({add:`+`,del:`-`,context:` `});function ii(e,t){let n=f(`div`,`pr-diff-excerpt`);for(let r of e){let e=f(`div`,`review-line review-line-${r.kind}`);r.line!==null&&r.line===t&&(e.dataset.cited=`true`),e.append(f(`span`,`pr-diff-excerpt-number`,r.line===null?``:String(r.line)),f(`span`,`review-line-gutter`,ri[r.kind]),f(`span`,`review-line-text`,r.text)),n.append(e)}return n}function ai(e){let t=e.location??`Not on a changed line, posts in the review body`;return{body:e.body,severity:e.severity,location:e.location?.split(`/`).at(-1)??`general`,locationTitle:t}}function oi({body:e,severity:t,location:n,locationTitle:r,excerpt:i,citedLine:a}){let o=f(`details`,`pr-comment-content`),s=f(`summary`,`pr-comment-header`),c=_n(e);t&&s.append(Tr(t));let l=f(`span`,`pr-comment-location`,n);l.title=r,s.append(l),s.append(f(`span`,`pr-comment-preview`,vn(c.paragraphs))),o.append(s);let u=f(`div`,`pr-comment-paragraphs`);for(let e of c.paragraphs)u.append(ti(e));return o.append(u),i&&i.length>0&&o.append(ii(i,a)),o.open=t===`HIGH`||t===`CRITICAL`,o}function si(e,t){let n=f(`details`,`pr-disclosure pr-earlier-review`),r=f(`summary`,`pr-disclosure-summary`);r.append(f(`span`,`pr-disclosure-label`,`Earlier review`),f(`span`,`pr-disclosure-preview`,An(e)));let i=f(`div`,`pr-earlier-review-body`),a=f(`div`,`pr-verdict-line`);a.append(Er(e)),i.append(a),e.summary.trim()&&i.append(Xr(f(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=f(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(oi(ni(t))),i.append(e)}return n.append(r,i),n.open=t,n}function ci(e){let t=On(e);if(!t)return[];let n=f(`p`,`pr-changed-since`,t);return n.append(` `,s(`pr-changed-since-link`,`Compare changes`,kn(e),`Open the commits since this review on GitHub`)),[n]}function li(e){let t=A?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return L=null,[];if(L?.key===e.key&&L.head===t.head)return[L.element];let n=si(t,!1);return L={key:e.key,head:t.head,element:n},[n]}function ui(e,t){let n=f(`button`,`pr-post-choice`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function di(e,t,n,r){let i=f(`article`,`pr-comment-card`),a=f(`div`,`pr-post-toggle`);a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,`Post or drop the finding on ${e.locationTitle}`);let o=()=>{let e=t.has(n);c.setAttribute(`aria-pressed`,String(e)),l.setAttribute(`aria-pressed`,String(!e)),i.dataset.included=String(e)},s=e=>{e&&t.add(n),e||t.delete(n),o(),r()},c=ui(`Post`,()=>s(!0)),l=ui(`Drop`,()=>s(!1));return a.append(c,l),o(),i.append(a,oi(e)),i}var fi=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function pi(e,t,n,r,i=sr(n.action)){let a=br?.captureTurnOrder()??[];P=null;let o=ee(`team-review-action`);if(!m({type:`team-review-action`,requestId:o,...n}))return!1;let s=window.setTimeout(()=>{H.delete(t.key),r(!1,mr)},pr);return H.set(t.key,{requestId:o,action:n.action,outcomeText:i,origin:e,capturedOrder:a,pullRequest:T(t.repo,t.number),timer:s,settle:r}),!0}function mi(t){let n=f(`footer`,`pr-footer`),r=hi(`discard`,()=>{H.has(t.key)||(r.disabled=!0,v(a,`busy`,k(`discard`)),!pi(`other`,t,Hn(t.key),o)&&o(!1,e))}),i=H.has(t.key);r.disabled=i;let a=f(`span`,`pr-action-status`);i&&v(a,`busy`,k(`discard`)),a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`);let o=(e,t,n=e?`ok`:`error`)=>{r.disabled=e,v(a,n,t)};return n.append(r,a),n}function hi(e,t,n=!1){let r=f(`button`,n?`pr-action pr-action-ghost`:`pr-action`,O(e));return r.type=`button`,r.dataset.action=e,r.addEventListener(`click`,()=>t(e)),r}function gi(e,t,n=``){let r=or(e),i=f(`footer`,`pr-footer pr-decision-bar`),a=f(`span`,`pr-action-status`,n);a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`);let o=r.primary.map(e=>hi(e,t)),s=r.secondary.map(e=>hi(e,t,!0));return i.append(...o,f(`span`,`pr-decision-spacer`),...s,a),{footer:i,status:a,buttons:[...o,...s]}}var _i=0;function vi(e){let t=f(`section`,`pr-note`);_i+=1;let n=f(`textarea`,`pr-body-input pr-note-input`);n.id=`pr-note-${_i}`,n.rows=2,n.spellcheck=!0,n.placeholder=`Optional. Posts at the top of the review, above the automated-review label.`,n.addEventListener(`input`,e);let r=f(`label`,`pr-section-heading`,`Your note`);return r.htmlFor=n.id,t.append(r,n),{section:t,input:n}}function yi(e,...t){let n=f(`div`,`pr-fact`),r=f(`dd`,null);return r.append(...t),n.append(f(`dt`,null,e),r),n}function bi(e){return JSON.stringify([e.checksState,e.viewerThreads,e.liveHead])}function xi(e){let t=f(`section`,`pr-desk-facts`);t.setAttribute(`aria-label`,`This PR`),t.dataset.signature=bi(e);let n=f(`dl`,`pr-fact-list`),r=kn(e),i=r?[On(e)??``,` `,s(`pr-changed-since-link`,`Compare changes`,r,`Open the commits since this review on GitHub`)]:[`No new commits`];return n.append(yi(`Checks`,ir(e.checksState)),yi(`Threads`,kt(e.viewerThreads)??`None of yours`),yi(`Since review`,...i)),t.append(f(`h3`,`pr-assessment-title`,`This PR`),n),t}function Si(e,t){let n=e.querySelector(`.pr-desk-facts`);n&&n.dataset.signature!==bi(t)&&n.replaceWith(xi(t))}function Ci(t){let n=f(`article`,`pr-detail pr-desk`),r=f(`div`,`pr-desk-column`),i=f(`aside`,`pr-desk-rail`);i.setAttribute(`aria-label`,`Decision`);let a=f(`div`);a.dataset.reviewThreads=``,r.append(Kr(t,{hasFactsRail:!0}),...$r(t)),t.earlierReview&&r.append(si(t.earlierReview,!1)),r.append(a,ei(t),...Qr(t));let o=gt(t.body),s=new Set(t.comments.flatMap((e,t)=>un(e)?[t]:[])),c=new Set(o.flatMap((e,t)=>ln(e.severity)?[t]:[])),l=t.comments.length+o.length,u=f(`section`,`pr-posts`);u.setAttribute(`aria-label`,`Findings`);let d=f(`div`,`pr-posts-heading`),p=f(`span`,null);d.append(f(`h3`,null,`Findings`),p),u.append(d);let m=vi(fe),ee=f(`section`,`pr-will-post`);ee.setAttribute(`aria-label`,`Will post to GitHub`);let h=f(`strong`,`pr-will-post-event`),g=f(`p`,`pr-will-post-detail`);g.setAttribute(`aria-live`,`polite`),ee.append(f(`h3`,`pr-assessment-title`,`Will post to GitHub`),h,g,m.section),i.append(ee,xi(t));let _=()=>({note:m.input.value,comments:t.comments.filter((e,t)=>s.has(t)),generalFindings:o.filter((e,t)=>c.has(t))}),y=!1,b=!1,x=[],S=-1,C=null,w=gi(t,n=>{if(H.has(t.key))return;b=!1,C=null,T();let r=_(),i=n===`approve`||n===`comment`||n===`request-changes`?Wn(t,n,r):D(t,n,``,[]);re(!0),v(w.status,`busy`,k(i.action)),!pi(`ready`,t,i,pe,Jn(i.action,r))&&pe(!1,e)});function ne(){let e=Un(_());for(let t of w.buttons)t.disabled=y||ar(t.dataset.action)&&!e;n.dataset.busy=String(y)}function re(e){y=e,ne()}function ie(){let e=_();p.textContent=`${e.comments.length+e.generalFindings.length} of ${l} will post. Low severity starts unticked.`;let n=qn(t,e,Qn(t.verdict));h.textContent=n.event,g.textContent=n.detail,ne()}function T(){for(let e of w.buttons)e.dataset.picked=String(e.dataset.action===C)}function ae(){let e=x[S];for(let[e,t]of x.entries())t.dataset.current=String(e===S);e.querySelector(`.pr-post-choice[aria-pressed="true"]`)?.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`})}function E(e){return x.length!==0&&(S=Math.min(x.length-1,Math.max(0,S+e)),ae(),!0)}function oe(){if(S===-1&&!E(1))return!1;let e=x[S],t=e.dataset.included===`true`?`Drop`:`Post`;return[...e.querySelectorAll(`.pr-post-choice`)].find(e=>e.textContent===t)?.click(),ae(),!0}function se(e){return!y&&(b=!1,C=e,T(),m.input.focus(),v(w.status,`ok`,$n(e,te(Re))),!0)}function ce(){let e=C??(document.activeElement===m.input?Qn(t.verdict):null),n=w.buttons.find(t=>t.dataset.action===e);return!e||!n?!1:y||H.has(t.key)?!0:n.disabled?(v(w.status,`error`,qn(t,_(),e).detail),!0):(n.click(),!0)}function le(){return C?(C=null,T(),v(w.status,null,``),!0):!1}function ue(e){let t=vr[e];return t?se(t):e===`next-finding`?E(1):e===`previous-finding`?E(-1):e===`toggle-finding`?oe():e===`post`?ce():e===`cancel`&&le()}function de(){b&&(b=!1,v(w.status,null,``))}function fe(){de(),ie()}let pe=(e,t,n=e?`ok`:`error`)=>{re(e),v(w.status,n,t)},me=(e,n=`ok`)=>{H.has(t.key)||(b=!0,v(w.status,n,e))};for(let[e,n]of t.comments.entries())x.push(di(ni(n),s,e,fe));for(let[e,t]of o.entries())x.push(di(ai(t),c,e,fe));return u.append(...x),l>0&&r.append(u),n.append(r,i,w.footer),Di(n,t),ie(),{signature:dr(t),element:n,settle:pe,showReceipt:me,clearReceipt:de,runKey:ue}}function wi(e){let t=B.get(e.key);if(t&&(H.has(e.key)||t.signature===dr(e)))return Di(t.element,e),Si(t.element,e),qr(t.element,e,{hasFactsRail:!0}),t;let n=Ci(e);return B.set(e.key,n),n}function Ti(e,t){let n=f(`article`,`pr-detail`),r=f(`div`,`pr-detail-heading`),i=f(`div`,`pr-detail-title`);i.append(Or(e),f(`h2`,null,e.title));let a=f(`div`,`pr-detail-meta`);a.append(Pr(e.author,20,`pr-detail-author`));let o=U(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,Gr(e)),n.append(r,f(`p`,`pr-attention-detail`,cr(t)),mi(e)),n}function Ei(e){let n=f(`article`,`pr-detail`);n.append(Kr(e));let r=f(`section`,`pr-progress`);r.setAttribute(`aria-label`,`Review progress`);let i=f(`ol`,`pr-progress-tracker`);for(let t of yn(e.phase)){let e=f(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(f(`span`,`pr-progress-bar`),f(`span`,null,t.label)),i.append(e)}let a=f(`div`,`pr-progress-text`);Cr.track(a,e.startedAt,()=>In(e,Date.now())),r.append(i,a),n.append(r);let o=f(`section`,`pr-steps`);o.append(f(`h3`,null,`Latest agent steps`));let s=f(`ol`,`pr-step-list`);for(let n of e.recentSteps){let r=f(`li`,`pr-step`),i=f(`span`,`pr-step-detail`,n.detail);i.title=n.detail,r.append(f(`span`,`pr-step-at`,t(e.startedAt,n.at)),f(`span`,`pr-step-tool`,n.tool),i),s.append(r)}return o.append(s),n.append(o,...li(e),mi(e)),n}function Di(e,t){if(H.has(t.key))return;let n=e.querySelector(`[data-review-threads]`),r=JSON.stringify([t.liveHead,t.threads]);n&&n.dataset.reviewThreads!==r&&(n.replaceChildren(...ki(t)),n.dataset.reviewThreads=r)}function Oi(e,t,n,r){let i=f(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(f(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!Zt(e,t?3:8))return i;let a=f(`details`,`pr-thread-disclosure`);return a.append(f(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),f(`p`,`pr-thread-body`,e)),n&&a.append(s(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function ki(t){let n=Yt(t);if(n.length===0)return[];let r=f(`section`,`my-pr-threads-section`);r.append(f(`h3`,`pr-section-heading`,`Answered threads`));let i=f(`div`,`my-pr-threads`);for(let r of n){let n=f(`div`,`my-pr-thread pr-thread-card`),a=f(`div`,`my-pr-thread-heading pr-thread-heading`),o=f(`span`,`pr-thread-chip`,r.judgementLabel);o.dataset.tone=r.judgementTone,a.append(s(`pr-link my-pr-thread-location`,r.location,r.thread.url),o),n.append(a),r.judgementReason&&n.append(f(`p`,`my-pr-thread-meta`,r.judgementReason)),r.thread.viewerComment&&n.append(f(`div`,`my-pr-thread-meta`,`Your comment`),Oi(r.thread.viewerComment,!0,r.thread.viewerCommentTruncated===!0,r.thread.url));let c=f(`div`,`pr-detail-meta pr-thread-reply-meta`);c.append(f(`span`,`pr-author-login`,r.thread.lastReplyAuthor),` replied`);let l=U(``,r.thread.lastReplyAt);l&&c.append(l);let u=f(`span`,`pr-action-status`);u.setAttribute(`role`,`status`);let d=f(`button`,`pr-action`,`Resolve`);d.type=`button`,d.disabled=!r.canResolve||H.has(t.key);let p=(e,t)=>{d.disabled=e||!r.canResolve,v(u,e?`ok`:`error`,t)};d.addEventListener(`click`,()=>{H.has(t.key)||(d.disabled=!0,v(u,`busy`,k(`resolve-thread`)),!pi(`other`,t,D(t,`resolve-thread`,``,[],r.thread.id),p)&&p(!1,e))}),n.append(c),r.thread.lastReplyBody&&n.append(Oi(r.thread.lastReplyBody,!1,r.thread.lastReplyTruncated===!0,r.thread.url));let m=f(`footer`,`pr-thread-footer`);m.append(u,d),n.append(m),r.thread.resolveError&&n.append(f(`p`,`pr-attention-detail`,r.thread.resolveError)),i.append(n)}return r.append(i),[r]}function Ai(t){let n=f(`article`,`pr-detail`);if(n.append(Kr(t),...$r(t)),t.earlierReview&&n.append(si(t.earlierReview,t.status===`stale`)),n.append(...ki(t)),t.status===`posted`&&n.append(ei(t)),t.status!==`posted`&&n.append(f(`p`,`pr-attention-detail`,Ln(t))),t.status===`stale`&&n.append(...ci(t)),!En(t.status))return V.set(t.key,{signature:Jr(t),element:n,settle:()=>{}}),n;let r=gi(t,n=>{if(!H.has(t.key)){for(let e of r.buttons)e.disabled=!0;v(r.status,`busy`,k(n)),!pi(`other`,t,D(t,n,``,[]),i)&&i(!1,e)}},or(t).primary.includes(`approve-only`)?fi:``),i=(e,t)=>{for(let t of r.buttons)t.disabled=e;v(r.status,e?`ok`:`error`,t)};return n.append(r.footer),V.set(t.key,{signature:Jr(t),element:n,settle:i}),n}function ji(e){if(!En(e.status)&&Yt(e).length===0)return Ai(e);let t=V.get(e.key);return t&&(H.has(e.key)||t.signature===Jr(e))?qr(t.element,e):Ai(e)}function Mi(e){if(!M||!N)return;let t=F===N?B.get(N):void 0,n=e.ready.find(e=>e.key===N&&e.status===`ready`);if(t&&n&&dr(n)!==t.signature&&(F=null),t&&F){M.firstElementChild!==t.element&&M.replaceChildren(t.element),I=null;return}let r=e.ready.find(e=>e.key===N&&(ce(e).length>0||De(e)));if(r&&r.status!==`ready`){let e=`threads:${Jr(r)}`,t=ji(r);if(I===e&&M.firstElementChild===t)return;M.replaceChildren(t),I=e;return}let i=[...e.ready,...e.noReviewNeeded].find(e=>e.key===N&&e.status===`ready`);if(i){let e=`ready:${dr(i)}`,t=wi(i);if(P&&t.showReceipt?.(P),P=null,I===e)return;M.replaceChildren(t.element),I=e;return}let a=e.inReview.find(e=>e.key===N);if(a){Cr.reset(),M.replaceChildren(Ei(a)),I=`inReview:${a.key}`;return}let o=e.queued.find(e=>e.key===N);if(o){let t=`queued:${o.key}:${e.inReview.length}`;if(I===t)return;M.replaceChildren(Ti(o,e.inReview.length)),I=t;return}let s=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===N);s&&(M.replaceChildren(ji(s)),I=`${s.status}:${s.key}`)}function Ni(){let e=f(`p`,`pr-empty`,lr(A));return A&&!A.configured&&e.append(` `,Ie(Rt,zt,`Open Team review settings`)),e}function Pi(){let e=ur(A);return e?[f(`p`,`my-pr-note`,e)]:[]}function Fi(e){for(let t of[...B.keys()])e.has(t)||H.has(t)||t===F||B.delete(t);let t=new Set(A?.drafts.filter(e=>En(e.status)).map(e=>e.key)??[]);for(let e of V.keys())t.has(e)||H.has(e)||V.delete(e)}function Ii(){Sr.reset()}function Li(){z.reset(),Mr(j)}function Ri(e=null){P=null,F!==e&&(F=null);for(let e of B.values())e.clearReceipt?.()}function zi(e){if(!M||!N)return!1;if(e===`open-session`){let e=M.querySelector(`.pr-session-open-button`);return!e||e.disabled?!1:(e.click(),!0)}let t=B.get(N);return!t||M.firstElementChild!==t.element?!1:t.runKey?.(e)??!1}function Bi(){let e=P;return P=null,e}function Vi(){Ri(),N=null}function Hi(e,t){t===`clear`&&Ri(e),N=e,Mi(E(A)),Li()}function Ui(e){Fi(new Set([...e.ready,...e.noReviewNeeded].map(e=>e.key)))}function Wi(){let e=E(A);Ui(e),Mi(e),br?.onChange(),Li()}function Gi(e){switch(e.kind){case`status`:A=He(),Wi();return;case`action-result`:Yi(e.message);return;case`open-session-result`:qi(e.message);return;case`connection`:Ji(e.isConnected)}}function Ki(e,t,n){return xr=n?.openTerminal??xr,br=t,j=e,yr||(yr=f(`div`,`pr-detail-team`),M=f(`div`,`pr-detail-body`),yr.append(M),Sr.ensure(),Cr.ensure(),z.ensure(),A=He(),C(Gi),yr)}function qi(e){let t=e.key;if(!t)return;let n=R.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?Ur(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),R.delete(t),Hr(t,``,null),xr?.(e.sessionId)))}function Ji(t){if(t)return;for(let[t,n]of R)n.requestId&&Ur(t,e);let n=[...H.values()];H.clear();for(let e of n)window.clearTimeout(e.timer),e.settle?.(!1,hr)}function Yi(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=H.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),H.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:sr(n.action)),V.delete(t.key),I=null,t.ok===!0&&Wi();return}let r=(n.origin===`ready`?B:V).get(t.key);if(t.ok===!0){n.origin===`other`&&V.delete(t.key);let e=Pt({action:n.action,outcomeText:n.outcomeText,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:N===t.key});if((r?.settle??n.settle)?.(!0,e.statusText,e.tone),e.tone===`error`&&n.origin===`ready`&&r&&(F=t.key,N&&N!==t.key&&B.get(N)?.showReceipt?.(`${n.pullRequest}: ${e.statusText}`,`error`),Mi(E(A))),!e.shouldAdvance)return;P=e.receipt,Ui(E(A)),br?.onAdvance(t.key,n.capturedOrder)}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}var G=null,Xi=null,K=null,Zi=null,Qi=null,$i=null,ea=null,ta=null,na=null,ra=null,q=[],J=`all`,Y=null,ia,X=!1,Z=!1,aa=null,oa=!1,sa=null,ca=null,la=0,ua=2e3,Q=new Map;function da(e,t){fe(Ne(e))&&(t.querySelector(`.pr-queue-unseen`)?.remove(),delete t.dataset.unseen,e.source===`team`&&Ar(t))}function fa(e){G&&(G.dataset.detailOpen=String(e)),ze(e)}function pa(){fa(!1),Y&&Q.get(Y)?.focus({preventScroll:!0})}function ma(){Qi&&(Qi.textContent=We(q,Y))}function ha(e){!K||K.childElementCount===1&&K.firstElementChild===e||K.replaceChildren(e)}function ga(e){let t=Ve(q).length>0,n=e?`${e} `:``;return zr(t?{title:`New pull requests need you`,detail:`${n}Pick one from the queue.`}:{title:`All caught up`,detail:`${n}${ye(q)}`})}function _a(e){let t=Ae(q,Y);ia=t?.key??null,t?t.source===`team`&&ea?(Hi(t.review.key,e),ha(ea)):t.source===`mine`&&ta&&(Vi(),Ke(t.pr.key),ha(ta)):(sa=Bi()??sa,Vi(),K&&K.replaceChildren(X?ga(sa):f(`p`,`pr-empty`,`Pick a pull request from the queue.`)))}function va(e,{isFromQueue:t}){Y=e,X=!1,sa=null;for(let[t,n]of Q)n.setAttribute(`aria-current`,String(t===e));let n=Ae(q,e),r=Q.get(e);n&&r&&da(n,r),_a(`clear`),ya(),fa(!0),t&&document.documentElement.dataset.layout===`phone`&&K?.parentElement?.scrollIntoView({block:`start`})}function ya(){if(ma(),!Zi)return;let e=Le(q,Y);pe(Zi,ve(Me(q)),e)}function ba(e){let t=Ae(q,e);if(!t)return;Ae(be(q,J),e)||(J=`all`,na?.select(J)),q.find(e=>e.items.includes(t))?.id===`aside`&&(Z=!0),Y=e,$(),va(e,{isFromQueue:!1});let n=Q.get(e);n?.focus({preventScroll:!0}),n?.scrollIntoView({block:`nearest`})}function xa(e){let t=_e([...Q.keys()],Y,e);return t?(t!==Y&&ba(t),!0):!1}function Sa(e){return e===`next-row`?xa(1):e===`previous-row`?xa(-1):zi(e)}function Ca(){return document.activeElement instanceof HTMLTextAreaElement&&document.activeElement.classList.contains(`pr-note-input`)}function wa(e){if(e.repeat||e.defaultPrevented||!G||p(G)||b()||document.activeElement?.classList.contains(`xterm-helper-textarea`))return;let t=we(e);if(!t)return;let n=(t===`post`||t===`cancel`)&&Ca();(!c(e)||n)&&Sa(t)&&e.preventDefault()}function Ta(e){window.clearTimeout(la),ca=e,la=window.setTimeout(()=>{ca=null,Q.get(e)?.removeAttribute(`data-just-acted`)},ua)}function Ea(e,t){let n=`team:${e}`;Ta(n);let r=Se({capturedOrder:t,actedKey:n,groups:q});if(Y=r,X=r===null,aa=null,$(),r)for(let[e,t]of Q)t.setAttribute(`aria-current`,String(e===r));_a(`keep`)}function Da(e,t,n){if(e.source===`team`){let n=Ir(e.review,e.kind,t);return{container:n,row:n}}let r=Ye(e.pr,e.stackedOn,n.get(e.prKey));return{container:r.group,row:r.row}}function Oa(e,t,n,r){let{container:i,row:a}=Da(e,n,r);a.dataset.queueKey=e.key,a.setAttribute(`aria-current`,String(e.key===Y)),e.key===ca&&(a.dataset.justActed=`true`);let o=Ne(e);if(t&&ie(o)){let t=f(`span`,`tab-activity active pr-queue-unseen`);t.setAttribute(`aria-hidden`,`true`),a.dataset.unseen=o,a.append(t),e.source===`team`&&Ar(a)}return a.addEventListener(`click`,()=>va(e.key,{isFromQueue:!0})),Q.set(e.key,a),i}function ka(e){let t=f(`h3`,`pr-section-heading review-group-heading`),n=f(`span`,`review-group-count`,String(e.items.length));if(e.id!==`aside`)return t.append(f(`span`,null,e.title),n),t;let r=f(`button`,`review-group-toggle`),i=f(`span`,`review-group-chevron`,`▸`);return i.setAttribute(`aria-hidden`,`true`),r.append(i,e.title),r.type=`button`,r.setAttribute(`aria-expanded`,String(Z)),r.addEventListener(`click`,()=>{Z=!Z,aa=null,$()}),t.append(r,n),t}function Aa(e,t,n){let r=f(`section`,`pr-queue-section`);if(r.dataset.group=e.id,r.append(ka(e)),e.id===`aside`&&!Z)return r;for(let i of e.items)r.append(Oa(i,e.id===`turn`,t,n));return r}function ja(){let e=Qe(Ue().status,Date.now()).filter(e=>e.tone!==`error`).map(e=>f(`p`,`my-pr-note`,e.text));return[...ra?[ra.notice]:[],...Pi(),...e]}function Ma(){return q.some(e=>e.items.length>0)?[f(`p`,`pr-empty`,`No pull requests match this filter.`)]:[Ni(),f(`p`,`pr-empty`,qe(Ue().status))]}function Na(){if(!$i)return;let e=He()?.team;if(!e){$i.replaceChildren();return}let t=f(`span`,`pr-team-chip`);t.append(l({login:e.slug,url:e.avatarUrl,cssPx:16}),f(`span`,null,e.name)),$i.replaceChildren(t)}function Pa(e,t){return JSON.stringify([e,[...t],Y,J,Z,xe(),ja().map(e=>e.textContent)],(e,t)=>e===`recentSteps`?void 0:t)}function $(){if(!Xi)return;let{sessionsByPrKey:e,status:t}=Ue();q=ge(),Na(),ra?.update(Be([He(),t]));let n=be(q,J);X||(Y=ke(n,Y)),ya();let r=Pa(n,e);if(r!==aa){aa=r;let t=document.activeElement instanceof HTMLElement&&Xi.contains(document.activeElement)?document.activeElement.dataset.queueKey:void 0;Ii(),Q.clear();let i=Ce(q),a=n.filter(e=>e.items.length>0).map(t=>Aa(t,i,e));Xi.replaceChildren(...ja(),...a.length>0?a:Ma()),t&&Q.get(t)?.focus({preventScroll:!0}),Li()}(Y!==ia||X)&&_a(`keep`)}function Fa(){oa||(oa=!0,queueMicrotask(()=>{oa=!1,$()}))}function Ia(){let e=Fe();e&&ba(e)}function La(e){e.kind===`reveal`?Ia():pa()}function Ra(e){if(G)return;let t=x()??void 0;G=f(`div`,`pr-content review-queue`),e.append(G),na=Ze({label:`Show reviews`,scopes:Ee,selected:J,onSelect:e=>{J=e,$()}});let n=Je({queueLabel:`Review queue`,scopeTabs:na.element,resizerLabel:`Resize review queue`});Xi=n.queue,K=f(`div`,`review-queue-detail`);let r=f(`div`,`review-queue-phone-bar`),i=f(`button`,`pr-action pr-action-ghost review-queue-back`,`Back to queue`);i.type=`button`,i.addEventListener(`click`,se),Qi=f(`span`,`review-queue-position`),r.append(i,Qi),n.detail.append(r,K),Zi=he({onJump:()=>{me()},rowFor:e=>Q.get(e)},Te()),Zi.classList.add(`review-queue-banner`),n.queue.before(Zi),ra=Ge([`team-review`,`my-prs`],G),$i=f(`span`,`review-team-chip-slot`),n.foot.append($i,ra.control),G.append(n.columns),G.dataset.detailOpen=`false`,ea=Ki(G,{onChange:Fa,captureTurnOrder:()=>Ve(q).map(e=>e.key),onAdvance:Ea},t),ta=Xe({onChange:Fa},t),Pe({isLooking:()=>!p(G),selectedKey:()=>Y}),je(La),document.addEventListener(`keydown`,wa),$(),Ia()}var za={mount:Ra};export{za as view};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={horizontal:new Map([[`ArrowLeft`,-1],[`ArrowRight`,1]]),vertical:new Map([[`ArrowUp`,-1],[`ArrowDown`,1]]),both:new Map([[`ArrowLeft`,-1],[`ArrowRight`,1],[`ArrowUp`,-1],[`ArrowDown`,1]])};function t(e,t,n){return e<0?t>0?0:n-1:((e+t)%n+n)%n}function n(n,r,i,a){if(i===0)return null;if(n===`Home`)return 0;if(n===`End`)return i-1;let o=e[a].get(n);return o===void 0?null:t(r,o,i)}export{t as n,n as t};
|