glimmervoid 0.46.2-next.147 → 0.46.2-next.148
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/client/assets/{alert-sound-a-r-xMzC.js → alert-sound-XMuKGl2H.js} +1 -1
- package/dist/client/assets/alert-sound-XMuKGl2H.js.br +0 -0
- package/dist/client/assets/{benchmark-panel-CEdfPEgm.js → benchmark-panel-LfPmYYkk.js} +1 -1
- package/dist/client/assets/benchmark-panel-LfPmYYkk.js.br +0 -0
- package/dist/client/assets/{celebration-player-C3ub9M-X.js → celebration-player-WhpTd3PS.js} +1 -1
- package/dist/client/assets/celebration-player-WhpTd3PS.js.br +0 -0
- package/dist/client/assets/{dialogs-BZSGSCHb.js → dialogs-B_eWmzM5.js} +1 -1
- package/dist/client/assets/dialogs-B_eWmzM5.js.br +0 -0
- package/dist/client/assets/{doc-editor-ui-BFGY3Mip.js → doc-editor-ui-DGu8qeKd.js} +1 -1
- package/dist/client/assets/doc-editor-ui-DGu8qeKd.js.br +0 -0
- package/dist/client/assets/{first-run-checklist-j-DNxANV.js → first-run-checklist-Qhl46C6Z.js} +1 -1
- package/dist/client/assets/first-run-checklist-Qhl46C6Z.js.br +0 -0
- package/dist/client/assets/{hooks-panel-esfJMItp.js → hooks-panel-1iElfKBZ.js} +1 -1
- package/dist/client/assets/hooks-panel-1iElfKBZ.js.br +0 -0
- package/dist/client/assets/{index-6j_Ukqob.js → index-BZbBg0oU.js} +5 -5
- package/dist/client/assets/index-BZbBg0oU.js.br +0 -0
- package/dist/client/assets/index-BoKsOaKD.css +2 -0
- package/dist/client/assets/index-BoKsOaKD.css.br +0 -0
- package/dist/client/assets/{issues-panel-CGFsmQwr.js → issues-panel-CLm_sqRo.js} +1 -1
- package/dist/client/assets/issues-panel-CLm_sqRo.js.br +0 -0
- package/dist/client/assets/{nyan-cat-DhAjaQ--.js → nyan-cat-Zjn-ylJ-.js} +1 -1
- package/dist/client/assets/nyan-cat-Zjn-ylJ-.js.br +0 -0
- package/dist/client/assets/{phone-shell-DLbSnQpc.js → phone-shell-DmdZA0T5.js} +1 -1
- package/dist/client/assets/phone-shell-DmdZA0T5.js.br +0 -0
- package/dist/client/assets/{plan-face-Dskopzga.js → plan-face-M_7deGq3.js} +1 -1
- package/dist/client/assets/plan-face-M_7deGq3.js.br +0 -0
- package/dist/client/assets/{plan-render-C85979_d.js → plan-render-CY-MQU5r.js} +1 -1
- package/dist/client/assets/plan-render-CY-MQU5r.js.br +0 -0
- package/dist/client/assets/{pr-scope-tabs-OBz-ZcBj.js → pr-scope-tabs-Bi61oEp_.js} +1 -1
- package/dist/client/assets/pr-scope-tabs-Bi61oEp_.js.br +0 -0
- package/dist/client/assets/{radar-panel-ZX8G9OCD.js → radar-panel-DRQuRnCq.js} +1 -1
- package/dist/client/assets/radar-panel-DRQuRnCq.js.br +0 -0
- package/dist/client/assets/{resume-dialog-Zw1UXc7g.js → resume-dialog-CUjDwimu.js} +1 -1
- package/dist/client/assets/resume-dialog-CUjDwimu.js.br +0 -0
- package/dist/client/assets/{review-queue-panel-sogJ-wbx.js → review-queue-panel-Cb-Gc14b.js} +1 -1
- package/dist/client/assets/review-queue-panel-Cb-Gc14b.js.br +0 -0
- package/dist/client/assets/{settings-panel-chP3FMVF.js → settings-panel-Cc0_VXht.js} +2 -2
- package/dist/client/assets/settings-panel-Cc0_VXht.js.br +0 -0
- package/dist/client/assets/{shown-lightbox-D3coKoM9.js → shown-lightbox-JmJiSAfe.js} +1 -1
- package/dist/client/assets/shown-lightbox-JmJiSAfe.js.br +0 -0
- package/dist/client/assets/{trace-panel-fzO0o4nU.js → trace-panel-CvhNNm_m.js} +1 -1
- package/dist/client/assets/trace-panel-CvhNNm_m.js.br +0 -0
- package/dist/client/assets/{usage-panel-DS4fp99z.js → usage-panel-Crw2G-P0.js} +1 -1
- package/dist/client/assets/usage-panel-Crw2G-P0.js.br +0 -0
- package/dist/client/assets/{visions-panel-O9dWuSmt.js → visions-panel-K4XQSlL2.js} +1 -1
- package/dist/client/assets/visions-panel-K4XQSlL2.js.br +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/package.json +1 -1
- package/dist/client/assets/alert-sound-a-r-xMzC.js.br +0 -0
- package/dist/client/assets/benchmark-panel-CEdfPEgm.js.br +0 -0
- package/dist/client/assets/celebration-player-C3ub9M-X.js.br +0 -0
- package/dist/client/assets/dialogs-BZSGSCHb.js.br +0 -0
- package/dist/client/assets/doc-editor-ui-BFGY3Mip.js.br +0 -0
- package/dist/client/assets/first-run-checklist-j-DNxANV.js.br +0 -0
- package/dist/client/assets/hooks-panel-esfJMItp.js.br +0 -0
- package/dist/client/assets/index-6j_Ukqob.js.br +0 -0
- package/dist/client/assets/index-DHKDKpp8.css +0 -2
- package/dist/client/assets/index-DHKDKpp8.css.br +0 -0
- package/dist/client/assets/issues-panel-CGFsmQwr.js.br +0 -0
- package/dist/client/assets/nyan-cat-DhAjaQ--.js.br +0 -0
- package/dist/client/assets/phone-shell-DLbSnQpc.js.br +0 -0
- package/dist/client/assets/plan-face-Dskopzga.js.br +0 -0
- package/dist/client/assets/plan-render-C85979_d.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-OBz-ZcBj.js.br +0 -0
- package/dist/client/assets/radar-panel-ZX8G9OCD.js.br +0 -0
- package/dist/client/assets/resume-dialog-Zw1UXc7g.js.br +0 -0
- package/dist/client/assets/review-queue-panel-sogJ-wbx.js.br +0 -0
- package/dist/client/assets/settings-panel-chP3FMVF.js.br +0 -0
- package/dist/client/assets/shown-lightbox-D3coKoM9.js.br +0 -0
- package/dist/client/assets/trace-panel-fzO0o4nU.js.br +0 -0
- package/dist/client/assets/usage-panel-DS4fp99z.js.br +0 -0
- package/dist/client/assets/visions-panel-O9dWuSmt.js.br +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./updates-view-core-BYoMfzXj.js";import{E as t,f as n,g as r,h as i,o as a,t as o}from"./dom-helpers-C7P3_59O.js";import{a as s,g as c,h as l,o as u,p as d,t as f,u as p,v as m}from"./card-registry-DITW3gYA.js";import{a as h,n as ee,r as g,s as _,t as te}from"./session-tick-D8pYTYt7.js";import{$i as v,$r as ne,Cr as y,Dr as b,Gn as x,Hr as re,Ir as S,Mr as ie,Or as ae,Sr as C,Tr as w,Ur as oe,an as T,cn as se,dn as E,dr as ce,ea as D,en as le,fn as O,fr as k,hr as A,in as ue,jr as de,kr as fe,ln as pe,lr as me,mr as he,na as j,nn as M,on as ge,pr as _e,qr as ve,rn as ye,sn as be,ta as xe,tn as Se,un as Ce,vr as we,wr as Te,yr as Ee}from"./index-6j_Ukqob.js";var De=e=>e.ui.path;function Oe({onSelectSession:e}){let t=a(`div`,`phone-board`),r=a(`header`,`phone-topbar`),i=le({onJump:()=>{M(i);let e=l(E(),null)[0]?.id;e&&s(e)},rowFor:e=>v.get(e)}),o=null;function s(e){o=e,v.get(e)?.scrollIntoView({block:`nearest`}),ye(i,e,()=>{o===e&&d(e)})}function d(t){o=null,e?.(t)}let f=a(`div`,`phone-board-list`),m=a(`div`,`phone-empty`),h=a(`p`,`phone-empty-title`,`No sessions`),ee=a(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);m.append(h,ee),t.append(r,f,m,i);let v=new Map,b=new Map,x=new WeakMap,re=new WeakMap,S=new WeakMap;n(r);function ie(e){let{row:t,refs:n}=C(`button`);t.type=`button`,t.dataset.id=e,t.addEventListener(`click`,()=>d(e));let{item:r}=w(t,()=>he(e));return r.setAttribute(`role`,`listitem`),x.set(t,{refs:n,item:r}),t}function ae(){let e=a(`section`,`phone-board-group`),t=ue({onAdd:ce,onForget:e=>{Ee(e),D()}}),n=a(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),re.set(e,{...t,rows:n}),e}function oe(e,t,n){let r=x.get(e);if(!r)return;let{ui:i,state:a,name:o}=t;y(e,r.refs,{ui:i,state:a,name:o,mergeStatus:i.card?.dataset.merge||``,attentionPosition:n})}function se(e,t){let n=re.get(e);n&&(T(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function E(){return c(k())}function D(){let e=E(),t=ge(e,De,we(e,De)),n=p(e),r=l(e,null),a=new Map(r.map(({id:e},t)=>[e,t+1]));Se(i,n,r);let o=new Set(t.order),s=t.order.join(`,`),c=S.get(f)===s&&f.childElementCount===t.groups.length;for(let e of t.groups){let t=b.get(e.key);t||(t=ae(),b.set(e.key,t)),se(t,e),c||f.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=re.get(t);if(!r)continue;let i=S.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=v.get(t.id);e||(e=ie(t.id),v.set(t.id,e)),oe(e,t,a.get(t.id)??null);let n=x.get(e);n&&(i||r.rows.appendChild(n.item))}S.set(r.rows,n)}S.set(f,s);for(let[e,t]of[...b])o.has(e)||(t.remove(),b.delete(e));let d=new Set(be(t));for(let[e,t]of[...v]){if(d.has(e))continue;let n=x.get(t);n&&n.item.remove(),v.delete(e)}let g=t.groups.length>0,_=u.size===0;f.hidden=!g,m.hidden=g,ne(m,_),h.hidden=_,ee.hidden=_,i.hidden=_}function O(e,t){let n=e.card?.dataset.id,r=n?v.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:_(x.get(r)?.refs.glyph))}return te((e,t)=>{let n=v.get(e),r=n?x.get(n):void 0;r&&ve(r.refs.elapsed,g(t))}),{el:t,topBarEl:r,refresh:D,renderActivity:O}}var ke=`clipboard`,Ae=`upload`,je=24,Me=Object.freeze([Object.freeze({id:`esc`,label:`Esc`,bytes:`\x1B`,title:`Send Escape`}),Object.freeze({id:`tab`,label:`Tab`,bytes:` `,title:`Send Tab`}),Object.freeze({id:`left`,label:`←`,bytes:`\x1B[D`,isArrow:!0,title:`Arrow left`}),Object.freeze({id:`up`,label:`↑`,bytes:`\x1B[A`,isArrow:!0,title:`Arrow up`}),Object.freeze({id:`down`,label:`↓`,bytes:`\x1B[B`,isArrow:!0,title:`Arrow down`}),Object.freeze({id:`right`,label:`→`,bytes:`\x1B[C`,isArrow:!0,title:`Arrow right`}),Object.freeze({id:`paste`,label:`Paste`,bytes:null,action:ke,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:Ae,title:`Upload a photo or file to this session`})]);function Ne(e){let t=Me.find(t=>t.id===e);return t?t.bytes:null}function Pe(e){return!!e&&e.action===ke}function Fe(e){return!!e&&e.action===Ae}function Ie(e,t,n=je){let r=Math.abs(e)>=Math.abs(t),i=r?e:t;return Math.abs(i)<n?null:r?i>0?`right`:`left`:i>0?`down`:`up`}function Le(e,t,n=je){let r=Ie(e,t,n);if(!r)return null;let i=r===`left`||r===`right`,a=i?e:t,o=Math.floor(Math.abs(a)/n),s=Math.sign(a)*o*n;return{arrowKeyId:r,stepCount:o,consumedX:i?s:e,consumedY:i?t:s}}var Re={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function ze(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):Re[e]??null}function Be({send:e,getSessionId:t,reportProblem:n}){let r=a(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,o=null,s=a(`button`,`phone-key phone-key-ctrl`,`Ctrl`);s.type=`button`,s.title=`Hold Ctrl for the next key you type`,s.setAttribute(`aria-pressed`,`false`),s.addEventListener(`pointerdown`,e=>e.preventDefault()),s.addEventListener(`click`,()=>l(!c())),r.appendChild(s);function c(){return s.getAttribute(`aria-pressed`)===`true`}function l(e){s.setAttribute(`aria-pressed`,String(e))}function u(){return c()?(l(!1),!0):!1}for(let t of Me){t.id===`left`&&r.appendChild(Ve(e));let n=a(`button`,t.isArrow?`phone-key phone-key-arrow`:`phone-key`,t.label);n.type=`button`,n.dataset.key=t.id,n.title=t.title,t.isArrow&&n.setAttribute(`aria-label`,t.title),n.addEventListener(`pointerdown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>d(t,n)),r.appendChild(n)}function d(t,r){Fe(t)?f(r):Pe(t)?Ue(e,n):e(Ne(t.id))}function f(e){o=e,i||(i=a(`input`,`phone-file-picker`),i.type=`file`,i.hidden=!0,i.addEventListener(`change`,p),r.appendChild(i)),i.click()}function p(){let e=i;if(!e)return;let r=e.files?e.files[0]:null;if(e.value=``,!r)return;let a=t?.();a?m(a,r,o):n(`No session is open to upload to.`)}async function m(e,t,n){n&&(n.disabled=!0),await O(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:u}}function Ve(e){let t=a(`button`,`phone-key phone-arrow-pad`,`Arrows`);t.type=`button`,t.title=`Swipe to send arrow keys`;let n=null,r=null;t.addEventListener(`pointerdown`,e=>{e.preventDefault(),r===null&&(t.setPointerCapture(e.pointerId),r=e.pointerId,n={x:e.clientX,y:e.clientY})}),t.addEventListener(`pointermove`,t=>{if(t.pointerId!==r||!n)return;let i=Le(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(Ne(i.arrowKeyId));n={x:n.x+i.consumedX,y:n.y+i.consumedY}}});let i=e=>{e.pointerId===r&&(r=null,n=null)};return t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i),t}var He=`Paste needs clipboard permission.`;function Ue(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(He);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(He)):t(`Paste is unavailable in this browser.`)}function We({onBack:n,onShowChanges:s}){let c=a(`div`,`phone-terminal`),l=a(`header`,`phone-topbar phone-terminal-bar`),d=a(`button`,`phone-back`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Back to board`),d.addEventListener(`click`,()=>n?.());let f=a(`div`,`phone-terminal-identity`),p=a(`span`,`phone-terminal-name`);p.title=`Double-tap to rename`,p.addEventListener(`dblclick`,()=>he());let m=a(`span`,`session-task-title phone-terminal-title`);ae(m,()=>j());let h=a(`span`,`phone-terminal-badge`);h.innerHTML=`<span class="phone-terminal-glyph" aria-hidden="true"></span><span class="phone-terminal-label"></span><span class="phone-terminal-elapsed" aria-hidden="true"></span>`;let _=i(h,`.phone-terminal-glyph`,`span`),te=i(h,`.phone-terminal-label`,`span`),ne=i(h,`.phone-terminal-elapsed`,`span`);te.before(p),f.append(m,h);let y=a(`button`,`phone-changes`);y.append(oe(re)),y.type=`button`,y.title=`Show this session's code changes`,y.setAttribute(`aria-label`,`Show this session's code changes`),y.addEventListener(`click`,()=>s?.());let x=a(`div`,`phone-terminal-actions`);l.append(d,f,y,x);let C=a(`div`,`phone-card-slot`),w=a(`div`,`phone-empty`);w.innerHTML=`<p class="phone-empty-title">No session selected</p><p class="phone-empty-desc">Select a session from the board to watch it here.</p>`;let T=S(`phone-key-status m-0 px-3 py-1`),{element:ce,takeHeldControl:le}=Be({send:ue,getSessionId:()=>O,reportProblem:e=>T.show(`error`,e)});c.append(l,C,w,T.element,ce);let O=null,k=null,A=null;function ue(t){let n=O?u.get(O):null;n&&(Ce(n,t)?T.clear():T.show(`error`,e))}function pe(){let e=O?u.get(O):null;e?.term&&e.term.focus()}C.addEventListener(`click`,pe);function me(e){let t=ze(e);return!t||!le()?!1:(ue(t),!0)}C.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||me(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),C.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&me(e.data.slice(-1))&&(e.stopPropagation(),(O?u.get(O):null)?._resetSoftKeyboardBuffer?.())},!0);function he(){let e=O?u.get(O):null;e&&O&&de(e,O,{returnsFocusToTerminal:!1})}function j(){let e=O?u.get(O):null;e&&O&&ie(e,O)}function M(){let e=O?u.get(O):null,n=!!e;if(w.hidden=n,C.hidden=!n,ce.hidden=!n,f.hidden=!n,y.hidden=!n,!n){l.removeAttribute(`data-state`),l.removeAttribute(`data-monitoring`),l.removeAttribute(`data-prompt`);return}let r=e.currentState||t.DORMANT;Te(l,{glyph:_,label:te},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let i=e.card?.dataset.session||O;b(p)||(p.textContent=i),m.dataset.sessionName=i??``,fe(m,e.taskTitle),ne.textContent=g(e)}function ge(){A&&=(delete A.renameTargetEl,delete A.titleTargetEl,null),p.replaceChildren(),k&&=(r(k),k.parentElement===x&&k.remove(),null)}function _e(e){let t=u.get(e);t&&(O===e&&D()===e&&t.card.parentElement===C||(ge(),O=e,v(t,e,C,{className:`phone-centered`}),k=i(t.card,`.session-actions`,`div`),o(k,x),t.renameTargetEl=p,t.titleTargetEl=m,A=t),M())}function ve(){ge(),D()===O&&xe(),O=null,M()}function ye(){if(!O){M();return}let e=u.get(O);e?e.card.parentElement===C?M():(_e(O),c.hidden||E(e,O,!0)):ve()}function be(){let e=O;e&&E(u.get(e),e,!1)}function Se(){ye();let e=O;if(!e)return;let t=u.get(e);t&&(E(t,e,!0),se(e))}return ee(()=>{let e=O?u.get(O):null;e&&(ne.textContent=g(e))}),M(),{el:c,show:_e,clear:ve,refresh:ye,reveal:Se,unview:be,getSessionId:()=>O}}var N=`board`,P=`terminal`,Ge=`changes`,Ke=Object.freeze({[Ge]:P}),qe=Object.freeze([{id:N,label:`Focus`,glyph:`▤`},{id:P,label:`Terminal`,glyph:`▸`}]),F=[],Je=new Map,I=null,Ye=new Map,L=new Map,Xe=new Map,R=null,z=null,Ze=null,B=null,V=null,H=null,U=new Map,W=new Set,G={},K=!1,Qe=!1,$e=120,q=0,et=0,J=0,Y=null;function tt(){q=0,et=0}function nt(){let e=window.visualViewport;I&&(!K||!e?I.removeAttribute(`data-keyboard`):(I.style.setProperty(`--phone-vh`,`${e.height}px`),I.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==et&&(et=e.width,q=0),q=Math.max(q,e.height),q-e.height>$e?I.dataset.keyboard=`open`:I.removeAttribute(`data-keyboard`)))}function rt(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=a(`button`,n);i.type=`button`;let o=a(`span`,`phone-nav-glyph`,t);o.setAttribute(`aria-hidden`,`true`),i.append(o,a(`span`,`phone-nav-label`,e));let s=a(`span`,r);return s.setAttribute(`aria-hidden`,`true`),s.hidden=!0,i.appendChild(s),i}function it(e){return e?.querySelector(`.phone-nav-dot`)||null}function at(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function ot(){let e=[];for(let t of F){if(W.has(t.id))continue;let n=Xe.get(t.id)||!1;e.push(n),at(it(U.get(t.id)),n)}at(it(V),m(e))}function st(){let e=a(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of F){let n=rt(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=W.has(t.id),n.addEventListener(`click`,()=>{X(!1),$(t.id)}),U.set(t.id,n),e.appendChild(n)}return e}function X(e){H&&V&&(H.hidden=!e,V.setAttribute(`aria-expanded`,String(e)))}function ct(){return!!H&&!H.hidden}function lt(){let e=a(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of qe){let n=rt(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>$(t.id)),Ye.set(t.id,n),e.appendChild(n)}return V=rt(`More`,`⋯`),V.setAttribute(`aria-expanded`,`false`),V.addEventListener(`click`,()=>X(!ct())),e.appendChild(V),H=st(),e.appendChild(H),e}function ut(e,t,n){let r=a(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),L.set(e,r),r}function dt(){if(I)return;R=Oe({onSelectSession:pt}),h((e,t)=>{K&&R?.renderActivity(e,t)}),z=We({onBack:()=>$(N),onShowChanges:()=>$(Ge)}),Ze=a(`div`,`phone-review`);let e=a(`div`,`phone-screens`),t={[N]:R.el,[P]:z.el};for(let n of qe)e.appendChild(ut(n.id,n.label,t[n.id]));e.appendChild(ut(Ge,`Changes`,ft(Ze)));for(let t of F){let n=a(`div`,`phone-panel phone-${t.id}`);Je.set(t.id,n),e.appendChild(ut(t.id,t.label,n))}I=a(`div`,`phone-shell`),I.id=`phone-shell`,I.append(e,lt()),document.body.appendChild(I),ot(),window.visualViewport?.addEventListener(`resize`,nt),window.visualViewport?.addEventListener(`scroll`,nt),window.addEventListener(`popstate`,xt),document.addEventListener(`click`,e=>{ct()&&H&&V&&e.target instanceof Node&&(H.contains(e.target)||V.contains(e.target)||X(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&ct()&&X(!1)})}function ft(e){let t=a(`div`,`phone-changes-screen`),n=a(`header`,`phone-topbar phone-changes-bar`),r=a(`button`,`phone-back`,`‹`);return r.type=`button`,r.setAttribute(`aria-label`,`Back to terminal`),r.addEventListener(`click`,()=>$(P)),B=a(`span`,`phone-changes-session`),n.append(r,a(`span`,`phone-changes-title`,`Changes`),B),t.append(n,e),t}function pt(e){if(u.has(e)){if(!R||!z)throw Error(`Phone shell is not built`);_e(e,`dormant-fallback`),A(e),z.show(e),$(P)}}function mt(e){return Ke[e]??e}function ht(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:mt(e)}}function gt(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function _t(e){return gt(e)?e.glimmervoidNested===!0?2:1:0}function vt(e){return e===N?0:Ke[e]||G.canGoBack?.(e)?2:1}function yt(e,t){let n=t?e:mt(e);return gt(history.state)===n&&_t(history.state)===(t?2:1)}function Z(){if(!K||Y!==null)return;let e=j.snapshot().phoneScreen||N,t=vt(e);if(J>t){Y=location.href,history.go(t-J),J=t;return}let n=J===2;J>0&&!yt(e,n)&&history.replaceState(ht(e,n),``),J===0&&t>0&&(history.pushState(ht(e,!1),``),J=1),J===1&&t===2&&(history.pushState(ht(e,!0),``),J=2)}function bt(){let e=gt(history.state);return e&&Q(e)?(J=_t(history.state),e):(e&&history.replaceState(null,``),J=0,N)}function xt(e){if(!K)return;if(Y!==null){history.replaceState(history.state,``,Y),Y=null,Z();return}let t=gt(e.state),n=t&&Q(t)?t:N;J=_t(e.state);let r=j.snapshot().phoneScreen;J<2&&n===r&&G.canGoBack?.(r)&&G.onBack?.(r),Ct(n),Z()}function St(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function Ct(e){if(!V||!z)throw Error(`Phone shell is not built`);j.dispatch(`setPhoneScreen`,e),X(!1),wt();for(let[t,n]of L)n.hidden=t!==e;e===N&&Qe&&(Qe=!1,R?.refresh()),G.onScreenShown?.(e),St(Ye,mt(e));let t=U.has(e);t&&V.setAttribute(`aria-current`,`page`),t||V.removeAttribute(`aria-current`),St(U,e),e===P?z.reveal():z.unview()}function Q(e){return L.has(e)&&!W.has(e)}function wt(){if(!B||!z)return;let e=z.getSessionId(),t=e?u.get(e):null,n=t?s(t):``;B.textContent=n,B.title=n}function $(e){I&&Q(e)&&(Ct(e),Z())}function Tt(e){F.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id)),H?.append(...F.flatMap(e=>U.get(e.id)??[]))}function Et(e){G=e||{},F=G.panels||[]}function Dt({sessionId:e,linkedScreenId:t}={}){if(K)return;if(dt(),!I||!R||!z)throw Error(`Phone shell is not built`);K=!0,I.hidden=!1;for(let e of G.headerControls||[])o(e,R.topBarEl);x(Ze);for(let e of F)o(e.el,Je.get(e.id)),e.el.hidden=!1;nt(),e&&z.show(e);let n=bt();Mt(),t&&Q(t)?$(t):e&&n===N?$(P):(Ct(n),Z())}function Ot(){if(K){if(!I||!z)throw Error(`Phone shell is not built`);K=!1,z.clear(),x(null);for(let e of F)r(e.el);for(let e of G.headerControls||[])r(e);X(!1),I.hidden=!0,I.removeAttribute(`data-keyboard`),tt(),J>0&&history.go(-J),J=0,Y=null}}function kt(e){return!K||!R||!z||!u.has(e)?!1:(pt(e),pe(e))}function At(){return K}function jt(){return K&&z?z.getSessionId():null}function Mt(){if(!K)return;if(!R||!z)throw Error(`Phone shell is not built`);Lt();let e=mt(j.snapshot().phoneScreen||N);Qe=e!==N,Qe||R.refresh(),z.refresh(),wt(),e===P&&!z.getSessionId()&&$(N);let t=it(Ye.get(N));t&&(t.hidden=d(f.counts)===0)}function Nt(e){return K?(pt(e),!0):!1}function Pt(e){return!K||!Q(e)?!1:($(e),!0)}function Ft(e,t){t&&W.delete(e),t||W.add(e);let n=U.get(e);n&&(n.hidden=!t);let r=L.get(e);r&&!t&&(r.hidden=!0),ot(),!t&&K&&j.snapshot().phoneScreen===e&&$(N)}function It(e,t){Xe.set(e,typeof t==`string`&&t?t:t===!0),ot()}function Lt(){if(!z)throw Error(`Phone shell is not built`);if(z.getSessionId())return;let e=me();e&&(z.show(e),A(e,{rememberFocus:!1}))}export{Dt as activatePhoneShell,Ot as deactivatePhoneShell,jt as getPhoneSessionId,At as isPhoneShellActive,Et as mountPhoneShell,Tt as orderPhonePanels,Mt as refreshPhoneBoard,It as setPhoneScreenAttention,Ft as setPhoneScreenAvailable,kt as showPhonePlan,Pt as showPhoneScreen,Nt as showPhoneSession,Z as syncPhoneHistory};
|
|
1
|
+
import{n as e}from"./updates-view-core-BYoMfzXj.js";import{E as t,f as n,g as r,h as i,o as a,t as o}from"./dom-helpers-C7P3_59O.js";import{a as s,g as c,h as l,o as u,p as d,t as f,u as p,v as m}from"./card-registry-DITW3gYA.js";import{a as h,n as ee,r as g,s as _,t as te}from"./session-tick-D8pYTYt7.js";import{$i as v,$r as ne,Cr as y,Dr as b,Gn as x,Hr as re,Ir as S,Mr as ie,Or as ae,Sr as C,Tr as w,Ur as oe,an as T,cn as se,dn as E,dr as ce,ea as D,en as le,fn as O,fr as k,hr as A,in as ue,jr as de,kr as fe,ln as pe,lr as me,mr as he,na as j,nn as M,on as ge,pr as _e,qr as ve,rn as ye,sn as be,ta as xe,tn as Se,un as Ce,vr as we,wr as Te,yr as Ee}from"./index-BZbBg0oU.js";var De=e=>e.ui.path;function Oe({onSelectSession:e}){let t=a(`div`,`phone-board`),r=a(`header`,`phone-topbar`),i=le({onJump:()=>{M(i);let e=l(E(),null)[0]?.id;e&&s(e)},rowFor:e=>v.get(e)}),o=null;function s(e){o=e,v.get(e)?.scrollIntoView({block:`nearest`}),ye(i,e,()=>{o===e&&d(e)})}function d(t){o=null,e?.(t)}let f=a(`div`,`phone-board-list`),m=a(`div`,`phone-empty`),h=a(`p`,`phone-empty-title`,`No sessions`),ee=a(`p`,`phone-empty-desc`,`Spawn a session to start watching.`);m.append(h,ee),t.append(r,f,m,i);let v=new Map,b=new Map,x=new WeakMap,re=new WeakMap,S=new WeakMap;n(r);function ie(e){let{row:t,refs:n}=C(`button`);t.type=`button`,t.dataset.id=e,t.addEventListener(`click`,()=>d(e));let{item:r}=w(t,()=>he(e));return r.setAttribute(`role`,`listitem`),x.set(t,{refs:n,item:r}),t}function ae(){let e=a(`section`,`phone-board-group`),t=ue({onAdd:ce,onForget:e=>{Ee(e),D()}}),n=a(`div`,`phone-board-group-rows`);return n.setAttribute(`role`,`list`),e.append(t.header,n),re.set(e,{...t,rows:n}),e}function oe(e,t,n){let r=x.get(e);if(!r)return;let{ui:i,state:a,name:o}=t;y(e,r.refs,{ui:i,state:a,name:o,mergeStatus:i.card?.dataset.merge||``,attentionPosition:n})}function se(e,t){let n=re.get(e);n&&(T(n,t,`Board`),n.rows.setAttribute(`aria-label`,`${t.label} sessions`))}function E(){return c(k())}function D(){let e=E(),t=ge(e,De,we(e,De)),n=p(e),r=l(e,null),a=new Map(r.map(({id:e},t)=>[e,t+1]));Se(i,n,r);let o=new Set(t.order),s=t.order.join(`,`),c=S.get(f)===s&&f.childElementCount===t.groups.length;for(let e of t.groups){let t=b.get(e.key);t||(t=ae(),b.set(e.key,t)),se(t,e),c||f.appendChild(t);let n=e.rows.map(e=>e.id).join(`,`),r=re.get(t);if(!r)continue;let i=S.get(r.rows)===n&&r.rows.childElementCount===e.rows.length;for(let t of e.rows){let e=v.get(t.id);e||(e=ie(t.id),v.set(t.id,e)),oe(e,t,a.get(t.id)??null);let n=x.get(e);n&&(i||r.rows.appendChild(n.item))}S.set(r.rows,n)}S.set(f,s);for(let[e,t]of[...b])o.has(e)||(t.remove(),b.delete(e));let d=new Set(be(t));for(let[e,t]of[...v]){if(d.has(e))continue;let n=x.get(t);n&&n.item.remove(),v.delete(e)}let g=t.groups.length>0,_=u.size===0;f.hidden=!g,m.hidden=g,ne(m,_),h.hidden=_,ee.hidden=_,i.hidden=_}function O(e,t){let n=e.card?.dataset.id,r=n?v.get(n):void 0;r&&(t===`flag`?r.dataset.activity=e._activity||``:_(x.get(r)?.refs.glyph))}return te((e,t)=>{let n=v.get(e),r=n?x.get(n):void 0;r&&ve(r.refs.elapsed,g(t))}),{el:t,topBarEl:r,refresh:D,renderActivity:O}}var ke=`clipboard`,Ae=`upload`,je=24,Me=Object.freeze([Object.freeze({id:`esc`,label:`Esc`,bytes:`\x1B`,title:`Send Escape`}),Object.freeze({id:`tab`,label:`Tab`,bytes:` `,title:`Send Tab`}),Object.freeze({id:`left`,label:`←`,bytes:`\x1B[D`,isArrow:!0,title:`Arrow left`}),Object.freeze({id:`up`,label:`↑`,bytes:`\x1B[A`,isArrow:!0,title:`Arrow up`}),Object.freeze({id:`down`,label:`↓`,bytes:`\x1B[B`,isArrow:!0,title:`Arrow down`}),Object.freeze({id:`right`,label:`→`,bytes:`\x1B[C`,isArrow:!0,title:`Arrow right`}),Object.freeze({id:`paste`,label:`Paste`,bytes:null,action:ke,title:`Paste from the clipboard`}),Object.freeze({id:`attach`,label:`Attach`,bytes:null,action:Ae,title:`Upload a photo or file to this session`})]);function Ne(e){let t=Me.find(t=>t.id===e);return t?t.bytes:null}function Pe(e){return!!e&&e.action===ke}function Fe(e){return!!e&&e.action===Ae}function Ie(e,t,n=je){let r=Math.abs(e)>=Math.abs(t),i=r?e:t;return Math.abs(i)<n?null:r?i>0?`right`:`left`:i>0?`down`:`up`}function Le(e,t,n=je){let r=Ie(e,t,n);if(!r)return null;let i=r===`left`||r===`right`,a=i?e:t,o=Math.floor(Math.abs(a)/n),s=Math.sign(a)*o*n;return{arrowKeyId:r,stepCount:o,consumedX:i?s:e,consumedY:i?t:s}}var Re={" ":`\0`,"@":`\0`,"[":`\x1B`,"\\":``,"]":``,"^":``,_:``,"?":``};function ze(e){if(e.length!==1)return null;let t=e.toLowerCase();return t>=`a`&&t<=`z`?String.fromCharCode(t.charCodeAt(0)-96):Re[e]??null}function Be({send:e,getSessionId:t,reportProblem:n}){let r=a(`div`,`phone-key-strip`);r.setAttribute(`role`,`toolbar`),r.setAttribute(`aria-label`,`Terminal keys`);let i=null,o=null,s=a(`button`,`phone-key phone-key-ctrl`,`Ctrl`);s.type=`button`,s.title=`Hold Ctrl for the next key you type`,s.setAttribute(`aria-pressed`,`false`),s.addEventListener(`pointerdown`,e=>e.preventDefault()),s.addEventListener(`click`,()=>l(!c())),r.appendChild(s);function c(){return s.getAttribute(`aria-pressed`)===`true`}function l(e){s.setAttribute(`aria-pressed`,String(e))}function u(){return c()?(l(!1),!0):!1}for(let t of Me){t.id===`left`&&r.appendChild(Ve(e));let n=a(`button`,t.isArrow?`phone-key phone-key-arrow`:`phone-key`,t.label);n.type=`button`,n.dataset.key=t.id,n.title=t.title,t.isArrow&&n.setAttribute(`aria-label`,t.title),n.addEventListener(`pointerdown`,e=>e.preventDefault()),n.addEventListener(`click`,()=>d(t,n)),r.appendChild(n)}function d(t,r){Fe(t)?f(r):Pe(t)?Ue(e,n):e(Ne(t.id))}function f(e){o=e,i||(i=a(`input`,`phone-file-picker`),i.type=`file`,i.hidden=!0,i.addEventListener(`change`,p),r.appendChild(i)),i.click()}function p(){let e=i;if(!e)return;let r=e.files?e.files[0]:null;if(e.value=``,!r)return;let a=t?.();a?m(a,r,o):n(`No session is open to upload to.`)}async function m(e,t,n){n&&(n.disabled=!0),await O(e,t),n&&(n.disabled=!1)}return{element:r,takeHeldControl:u}}function Ve(e){let t=a(`button`,`phone-key phone-arrow-pad`,`Arrows`);t.type=`button`,t.title=`Swipe to send arrow keys`;let n=null,r=null;t.addEventListener(`pointerdown`,e=>{e.preventDefault(),r===null&&(t.setPointerCapture(e.pointerId),r=e.pointerId,n={x:e.clientX,y:e.clientY})}),t.addEventListener(`pointermove`,t=>{if(t.pointerId!==r||!n)return;let i=Le(t.clientX-n.x,t.clientY-n.y);if(i){for(let t=0;t<i.stepCount;t++)e(Ne(i.arrowKeyId));n={x:n.x+i.consumedX,y:n.y+i.consumedY}}});let i=e=>{e.pointerId===r&&(r=null,n=null)};return t.addEventListener(`pointerup`,i),t.addEventListener(`pointercancel`,i),t}var He=`Paste needs clipboard permission.`;function Ue(e,t){let n=null;try{n=navigator.clipboard?.readText?.()}catch{t(He);return}n?n.then(t=>{t&&e(t)}).catch(()=>t(He)):t(`Paste is unavailable in this browser.`)}function We({onBack:n,onShowChanges:s}){let c=a(`div`,`phone-terminal`),l=a(`header`,`phone-topbar phone-terminal-bar`),d=a(`button`,`phone-back`,`‹`);d.type=`button`,d.setAttribute(`aria-label`,`Back to board`),d.addEventListener(`click`,()=>n?.());let f=a(`div`,`phone-terminal-identity`),p=a(`span`,`phone-terminal-name`);p.title=`Double-tap to rename`,p.addEventListener(`dblclick`,()=>he());let m=a(`span`,`session-task-title phone-terminal-title`);ae(m,()=>j());let h=a(`span`,`phone-terminal-badge`);h.innerHTML=`<span class="phone-terminal-glyph" aria-hidden="true"></span><span class="phone-terminal-label"></span><span class="phone-terminal-elapsed" aria-hidden="true"></span>`;let _=i(h,`.phone-terminal-glyph`,`span`),te=i(h,`.phone-terminal-label`,`span`),ne=i(h,`.phone-terminal-elapsed`,`span`);te.before(p),f.append(m,h);let y=a(`button`,`phone-changes`);y.append(oe(re)),y.type=`button`,y.title=`Show this session's code changes`,y.setAttribute(`aria-label`,`Show this session's code changes`),y.addEventListener(`click`,()=>s?.());let x=a(`div`,`phone-terminal-actions`);l.append(d,f,y,x);let C=a(`div`,`phone-card-slot`),w=a(`div`,`phone-empty`);w.innerHTML=`<p class="phone-empty-title">No session selected</p><p class="phone-empty-desc">Select a session from the board to watch it here.</p>`;let T=S(`phone-key-status m-0 px-3 py-1`),{element:ce,takeHeldControl:le}=Be({send:ue,getSessionId:()=>O,reportProblem:e=>T.show(`error`,e)});c.append(l,C,w,T.element,ce);let O=null,k=null,A=null;function ue(t){let n=O?u.get(O):null;n&&(Ce(n,t)?T.clear():T.show(`error`,e))}function pe(){let e=O?u.get(O):null;e?.term&&e.term.focus()}C.addEventListener(`click`,pe);function me(e){let t=ze(e);return!t||!le()?!1:(ue(t),!0)}C.addEventListener(`keydown`,e=>{e.ctrlKey||e.metaKey||e.altKey||me(e.key)&&(e.preventDefault(),e.stopPropagation())},!0),C.addEventListener(`input`,e=>{e instanceof InputEvent&&e.data&&me(e.data.slice(-1))&&(e.stopPropagation(),(O?u.get(O):null)?._resetSoftKeyboardBuffer?.())},!0);function he(){let e=O?u.get(O):null;e&&O&&de(e,O,{returnsFocusToTerminal:!1})}function j(){let e=O?u.get(O):null;e&&O&&ie(e,O)}function M(){let e=O?u.get(O):null,n=!!e;if(w.hidden=n,C.hidden=!n,ce.hidden=!n,f.hidden=!n,y.hidden=!n,!n){l.removeAttribute(`data-state`),l.removeAttribute(`data-monitoring`),l.removeAttribute(`data-prompt`);return}let r=e.currentState||t.DORMANT;Te(l,{glyph:_,label:te},r,e.awaitingBackgroundTasks,e.pendingPromptKind);let i=e.card?.dataset.session||O;b(p)||(p.textContent=i),m.dataset.sessionName=i??``,fe(m,e.taskTitle),ne.textContent=g(e)}function ge(){A&&=(delete A.renameTargetEl,delete A.titleTargetEl,null),p.replaceChildren(),k&&=(r(k),k.parentElement===x&&k.remove(),null)}function _e(e){let t=u.get(e);t&&(O===e&&D()===e&&t.card.parentElement===C||(ge(),O=e,v(t,e,C,{className:`phone-centered`}),k=i(t.card,`.session-actions`,`div`),o(k,x),t.renameTargetEl=p,t.titleTargetEl=m,A=t),M())}function ve(){ge(),D()===O&&xe(),O=null,M()}function ye(){if(!O){M();return}let e=u.get(O);e?e.card.parentElement===C?M():(_e(O),c.hidden||E(e,O,!0)):ve()}function be(){let e=O;e&&E(u.get(e),e,!1)}function Se(){ye();let e=O;if(!e)return;let t=u.get(e);t&&(E(t,e,!0),se(e))}return ee(()=>{let e=O?u.get(O):null;e&&(ne.textContent=g(e))}),M(),{el:c,show:_e,clear:ve,refresh:ye,reveal:Se,unview:be,getSessionId:()=>O}}var N=`board`,P=`terminal`,Ge=`changes`,Ke=Object.freeze({[Ge]:P}),qe=Object.freeze([{id:N,label:`Focus`,glyph:`▤`},{id:P,label:`Terminal`,glyph:`▸`}]),F=[],Je=new Map,I=null,Ye=new Map,L=new Map,Xe=new Map,R=null,z=null,Ze=null,B=null,V=null,H=null,U=new Map,W=new Set,G={},K=!1,Qe=!1,$e=120,q=0,et=0,J=0,Y=null;function tt(){q=0,et=0}function nt(){let e=window.visualViewport;I&&(!K||!e?I.removeAttribute(`data-keyboard`):(I.style.setProperty(`--phone-vh`,`${e.height}px`),I.style.setProperty(`--phone-vv-top`,`${e.offsetTop}px`),e.width!==et&&(et=e.width,q=0),q=Math.max(q,e.height),q-e.height>$e?I.dataset.keyboard=`open`:I.removeAttribute(`data-keyboard`)))}function rt(e,t,n=`phone-nav-item`,r=`phone-nav-dot`){let i=a(`button`,n);i.type=`button`;let o=a(`span`,`phone-nav-glyph`,t);o.setAttribute(`aria-hidden`,`true`),i.append(o,a(`span`,`phone-nav-label`,e));let s=a(`span`,r);return s.setAttribute(`aria-hidden`,`true`),s.hidden=!0,i.appendChild(s),i}function it(e){return e?.querySelector(`.phone-nav-dot`)||null}function at(e,t){e&&(e.hidden=!t,typeof t==`string`&&(e.dataset.attention=t),typeof t!=`string`&&delete e.dataset.attention)}function ot(){let e=[];for(let t of F){if(W.has(t.id))continue;let n=Xe.get(t.id)||!1;e.push(n),at(it(U.get(t.id)),n)}at(it(V),m(e))}function st(){let e=a(`div`,`phone-nav-more-menu`);e.hidden=!0;for(let t of F){let n=rt(t.label,t.glyph,`phone-nav-menu-item`,`phone-nav-dot phone-nav-menu-dot`);n.dataset.screen=t.id,n.hidden=W.has(t.id),n.addEventListener(`click`,()=>{X(!1),$(t.id)}),U.set(t.id,n),e.appendChild(n)}return e}function X(e){H&&V&&(H.hidden=!e,V.setAttribute(`aria-expanded`,String(e)))}function ct(){return!!H&&!H.hidden}function lt(){let e=a(`nav`,`phone-nav`);e.setAttribute(`aria-label`,`Screens`);for(let t of qe){let n=rt(t.label,t.glyph);n.dataset.screen=t.id,n.addEventListener(`click`,()=>$(t.id)),Ye.set(t.id,n),e.appendChild(n)}return V=rt(`More`,`⋯`),V.setAttribute(`aria-expanded`,`false`),V.addEventListener(`click`,()=>X(!ct())),e.appendChild(V),H=st(),e.appendChild(H),e}function ut(e,t,n){let r=a(`section`,`phone-screen`);return r.dataset.screen=e,r.setAttribute(`aria-label`,t),r.hidden=!0,n&&r.appendChild(n),L.set(e,r),r}function dt(){if(I)return;R=Oe({onSelectSession:pt}),h((e,t)=>{K&&R?.renderActivity(e,t)}),z=We({onBack:()=>$(N),onShowChanges:()=>$(Ge)}),Ze=a(`div`,`phone-review`);let e=a(`div`,`phone-screens`),t={[N]:R.el,[P]:z.el};for(let n of qe)e.appendChild(ut(n.id,n.label,t[n.id]));e.appendChild(ut(Ge,`Changes`,ft(Ze)));for(let t of F){let n=a(`div`,`phone-panel phone-${t.id}`);Je.set(t.id,n),e.appendChild(ut(t.id,t.label,n))}I=a(`div`,`phone-shell`),I.id=`phone-shell`,I.append(e,lt()),document.body.appendChild(I),ot(),window.visualViewport?.addEventListener(`resize`,nt),window.visualViewport?.addEventListener(`scroll`,nt),window.addEventListener(`popstate`,xt),document.addEventListener(`click`,e=>{ct()&&H&&V&&e.target instanceof Node&&(H.contains(e.target)||V.contains(e.target)||X(!1))}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&ct()&&X(!1)})}function ft(e){let t=a(`div`,`phone-changes-screen`),n=a(`header`,`phone-topbar phone-changes-bar`),r=a(`button`,`phone-back`,`‹`);return r.type=`button`,r.setAttribute(`aria-label`,`Back to terminal`),r.addEventListener(`click`,()=>$(P)),B=a(`span`,`phone-changes-session`),n.append(r,a(`span`,`phone-changes-title`,`Changes`),B),t.append(n,e),t}function pt(e){if(u.has(e)){if(!R||!z)throw Error(`Phone shell is not built`);_e(e,`dormant-fallback`),A(e),z.show(e),$(P)}}function mt(e){return Ke[e]??e}function ht(e,t){return t?{glimmervoidScreen:e,glimmervoidNested:!0}:{glimmervoidScreen:mt(e)}}function gt(e){let t=e?.glimmervoidScreen;return typeof t==`string`?t:null}function _t(e){return gt(e)?e.glimmervoidNested===!0?2:1:0}function vt(e){return e===N?0:Ke[e]||G.canGoBack?.(e)?2:1}function yt(e,t){let n=t?e:mt(e);return gt(history.state)===n&&_t(history.state)===(t?2:1)}function Z(){if(!K||Y!==null)return;let e=j.snapshot().phoneScreen||N,t=vt(e);if(J>t){Y=location.href,history.go(t-J),J=t;return}let n=J===2;J>0&&!yt(e,n)&&history.replaceState(ht(e,n),``),J===0&&t>0&&(history.pushState(ht(e,!1),``),J=1),J===1&&t===2&&(history.pushState(ht(e,!0),``),J=2)}function bt(){let e=gt(history.state);return e&&Q(e)?(J=_t(history.state),e):(e&&history.replaceState(null,``),J=0,N)}function xt(e){if(!K)return;if(Y!==null){history.replaceState(history.state,``,Y),Y=null,Z();return}let t=gt(e.state),n=t&&Q(t)?t:N;J=_t(e.state);let r=j.snapshot().phoneScreen;J<2&&n===r&&G.canGoBack?.(r)&&G.onBack?.(r),Ct(n),Z()}function St(e,t){for(let[n,r]of e)n===t?r.setAttribute(`aria-current`,`page`):r.removeAttribute(`aria-current`)}function Ct(e){if(!V||!z)throw Error(`Phone shell is not built`);j.dispatch(`setPhoneScreen`,e),X(!1),wt();for(let[t,n]of L)n.hidden=t!==e;e===N&&Qe&&(Qe=!1,R?.refresh()),G.onScreenShown?.(e),St(Ye,mt(e));let t=U.has(e);t&&V.setAttribute(`aria-current`,`page`),t||V.removeAttribute(`aria-current`),St(U,e),e===P?z.reveal():z.unview()}function Q(e){return L.has(e)&&!W.has(e)}function wt(){if(!B||!z)return;let e=z.getSessionId(),t=e?u.get(e):null,n=t?s(t):``;B.textContent=n,B.title=n}function $(e){I&&Q(e)&&(Ct(e),Z())}function Tt(e){F.sort((t,n)=>e.indexOf(t.id)-e.indexOf(n.id)),H?.append(...F.flatMap(e=>U.get(e.id)??[]))}function Et(e){G=e||{},F=G.panels||[]}function Dt({sessionId:e,linkedScreenId:t}={}){if(K)return;if(dt(),!I||!R||!z)throw Error(`Phone shell is not built`);K=!0,I.hidden=!1;for(let e of G.headerControls||[])o(e,R.topBarEl);x(Ze);for(let e of F)o(e.el,Je.get(e.id)),e.el.hidden=!1;nt(),e&&z.show(e);let n=bt();Mt(),t&&Q(t)?$(t):e&&n===N?$(P):(Ct(n),Z())}function Ot(){if(K){if(!I||!z)throw Error(`Phone shell is not built`);K=!1,z.clear(),x(null);for(let e of F)r(e.el);for(let e of G.headerControls||[])r(e);X(!1),I.hidden=!0,I.removeAttribute(`data-keyboard`),tt(),J>0&&history.go(-J),J=0,Y=null}}function kt(e){return!K||!R||!z||!u.has(e)?!1:(pt(e),pe(e))}function At(){return K}function jt(){return K&&z?z.getSessionId():null}function Mt(){if(!K)return;if(!R||!z)throw Error(`Phone shell is not built`);Lt();let e=mt(j.snapshot().phoneScreen||N);Qe=e!==N,Qe||R.refresh(),z.refresh(),wt(),e===P&&!z.getSessionId()&&$(N);let t=it(Ye.get(N));t&&(t.hidden=d(f.counts)===0)}function Nt(e){return K?(pt(e),!0):!1}function Pt(e){return!K||!Q(e)?!1:($(e),!0)}function Ft(e,t){t&&W.delete(e),t||W.add(e);let n=U.get(e);n&&(n.hidden=!t);let r=L.get(e);r&&!t&&(r.hidden=!0),ot(),!t&&K&&j.snapshot().phoneScreen===e&&$(N)}function It(e,t){Xe.set(e,typeof t==`string`&&t?t:t===!0),ot()}function Lt(){if(!z)throw Error(`Phone shell is not built`);if(z.getSessionId())return;let e=me();e&&(z.show(e),A(e,{rememberFocus:!1}))}export{Dt as activatePhoneShell,Ot as deactivatePhoneShell,jt as getPhoneSessionId,At as isPhoneShellActive,Et as mountPhoneShell,Tt as orderPhonePanels,Mt as refreshPhoneBoard,It as setPhoneScreenAttention,Ft as setPhoneScreenAvailable,kt as showPhonePlan,Pt as showPhoneScreen,Nt as showPhoneSession,Z as syncPhoneHistory};
|
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{n as e,wt as t}from"./updates-view-core-BYoMfzXj.js";import{o as n}from"./dom-helpers-C7P3_59O.js";import{o as r}from"./modal-Bh-cVr-I.js";import{$n as i,Nr as a,Qn as o,ar as s,er as c,ir as l,na as u,nr as ee,rr as te,tr as ne}from"./index-
|
|
1
|
+
import{n as e,wt as t}from"./updates-view-core-BYoMfzXj.js";import{o as n}from"./dom-helpers-C7P3_59O.js";import{o as r}from"./modal-Bh-cVr-I.js";import{$n as i,Nr as a,Qn as o,ar as s,er as c,ir as l,na as u,nr as ee,rr as te,tr as ne}from"./index-BZbBg0oU.js";import{a as re,i as ie,n as ae,r as oe,t as se}from"./plan-render-CY-MQU5r.js";var d=2e3,f=3;function ce(e){return e.replace(/\r\n?/g,`
|
|
2
2
|
`).split(`
|
|
3
3
|
`)}function p(e){return{kind:`unchanged`,text:e}}function m(e){return{kind:`skipped`,text:`${e} unchanged lines`}}function h(e,t){return e.length<=7?e.map(t):[...e.slice(0,f).map(t),m(e.length-6),...e.slice(e.length-f).map(t)]}function g(e){return e}function _(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(...h(e.slice(n,r),g)),n=r}return t}function v(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r++;return r}function le(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(p(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=ce(e),r=ce(t),i=v(n,r),a=le(n,r,i),o=n.slice(i,n.length-a),s=r.slice(i,r.length-a);return o.length+s.length>d?{lines:[],isTooLarge:!0}:{lines:_([...h(n.slice(0,i),p),...ue(o,s),...h(n.slice(n.length-a),p)]),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(d){let f=n(`section`,`plan-face`);f.hidden=!0;let ce=n(`header`,`plan-head`),p=n(`select`,`plan-heading-picker`);p.setAttribute(`aria-label`,`Plan section`);let m=n(`div`,`plan-view-panel`),h=n(`div`,`plan-sheet-head`),g=n(`button`,`plan-control plan-sheet-close`,`×`);g.type=`button`,g.setAttribute(`aria-label`,`Close`),h.append(n(`span`,null,`View`),g);let _=n(`div`,`plan-view-group plan-author-group`),v=n(`div`,`plan-tabs`);v.setAttribute(`role`,`tablist`),v.setAttribute(`aria-label`,`Plan author`),_.append(n(`span`,`plan-sheet-label`,`Author`),v);let le=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`),le.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 E=n(`button`,`plan-control plan-draft-chip`,`Peek draft`);E.type=`button`,T.append(be,E),m.append(h,_,le,ve,ye,T);let D=n(`button`,`plan-control plan-view-button`,`View`);D.type=`button`,D.setAttribute(`aria-haspopup`,`dialog`),D.setAttribute(`aria-expanded`,`false`);let xe=n(`button`,`plan-control plan-minimize-button`,`Minimize`);xe.type=`button`,xe.addEventListener(`click`,d.showTerminal),ce.append(p,m,D,xe);let Se=n(`div`,`plan-sheet-backdrop`),Ce=n(`div`,`plan-body-layout`),we=n(`nav`,`plan-heading-rail`);we.setAttribute(`aria-label`,`Plan sections`);let O=n(`article`,`plan-reading-column`);Ce.append(we,O);let k=n(`textarea`,`plan-editor`);k.setAttribute(`aria-label`,`Plan markdown`),k.spellcheck=!1;let Te=n(`footer`,`plan-action-bar`),Ee=n(`span`,`plan-status`);Ee.setAttribute(`role`,`status`);let De=n(`div`,`plan-decision-slot`),Oe=n(`label`,`plan-accept-edits`),ke=n(`input`,`plan-accept-edits-checkbox`);ke.type=`checkbox`,Oe.append(ke,n(`span`,null,`Accept edits`)),De.append(Oe,Ee),Te.append(De);let Ae=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)}),Ae.set(e,r),Te.append(r)}f.append(ce,Ce,Te,Se);let A=null,j={reviews:[]},M=null,N=null,je=!0,P=``,F=``,I=``,L=``,R=!1,z=null,B=!1,V=null,Me=!1,H=!1,Ne=null,U=[],W=null,G=null,Pe=new Map,K=new Map,q=new Map,J=[],Fe=!1,Y=null,X=!1;function Z(e,t=!0){X=e,m.replaceChildren(...e?[h,ve,le,_,T,ye]:[h,_,le,ve,ye,T]),v.setAttribute(`role`,e?`radiogroup`:`tablist`);for(let t of v.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))}m.dataset.open=String(e),Se.dataset.open=String(e),D.setAttribute(`aria-expanded`,String(e)),Ce.inert=e,Te.inert=e,p.inert=e,D.inert=e,xe.inert=e,e?(m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-label`,`Plan view`),m.setAttribute(`aria-modal`,`true`),g.focus()):(m.removeAttribute(`role`),m.removeAttribute(`aria-modal`),t&&D.focus())}function Ie(e){e.addEventListener(`keydown`,t=>{let n=[...e.querySelectorAll(`button:not(:disabled)`)],r=n.indexOf(document.activeElement),i=a(t.key,r,n.length,`both`);if(i===null)return;t.preventDefault();let o=X;n[i].click(),!(o&&e!==w)&&(e===w||!X)&&e.querySelector(`[aria-checked="true"], [aria-selected="true"]`)?.focus()})}let Le=u.subscribe((e,t)=>{t.includes(`layout`)&&X&&Z(!1,!1)});d.signal?.addEventListener(`abort`,Le,{once:!0}),Ie(w),Ie(v),Ie(C),D.addEventListener(`click`,()=>Z(!X)),g.addEventListener(`click`,()=>Z(!1)),Se.addEventListener(`click`,()=>Z(!1)),m.addEventListener(`keydown`,e=>{X&&(e.key===`Escape`?(e.preventDefault(),e.stopPropagation(),Z(!1)):r(m,e))});function Re(e){O.querySelector(`#${CSS.escape(e)}`)?.scrollIntoView({behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`instant`:`smooth`,block:`start`})}p.addEventListener(`change`,()=>Re(p.value));function ze(){Fe=!1;let e=J.map(e=>O.querySelector(`#${CSS.escape(e.dataset.headingId??``)}`)).filter(e=>e!==null),t=O.getBoundingClientRect().top-O.scrollTop,n=i({headingOffsets:e.map(e=>e.getBoundingClientRect().top-t),scrollTop:O.scrollTop,isScrolledToEnd:O.scrollTop>0&&O.scrollTop+O.clientHeight>=O.scrollHeight-2,readingLineOffset:pe}),r=n===null?null:e[n]?.id??null;for(let e of J)e.dataset.headingId===r?e.setAttribute(`aria-current`,`location`):e.removeAttribute(`aria-current`);r!==null&&(p.value=r)}function Be(){Fe||f.hidden||J.length===0||(Fe=!0,requestAnimationFrame(ze))}O.addEventListener(`scroll`,Be,{passive:!0});function Ve(){Y=null,B=!1,Me=!1,H=!1,Ne=null}function He(e){W=e,d.reportProblem(e),$()}function Ue(e){N=e,W=null,Ve(),Z(!1,X),$()}function We(e){let t=j.reviews.find(e=>e.agentId===M)?.revisions??[],n=t[t.findIndex(e=>e.revision===N)+e];n&&Ue(n.revision)}y.addEventListener(`click`,()=>We(-1)),b.addEventListener(`click`,()=>We(1));function Ge(e,t){return`${A??``}:${e??`main`}:${t??`latest`}`}function Ke(){return Ge(M,N)}function qe(e,t,n){return`${e??``}:${me(t,n??0)}`}function Q(){return qe(A,M,N)}function Je(){return K.get(Q())??null}function Ye(){return Je()?.size??0}function Xe(){if(Y===null)return!1;let e=K.get(Y.target.bucketKey)?.get(Y.target.sectionSlot)??``;return Y.field.value.trim()!==e}function Ze(e){let t=K.get(e);if(!t)return[];let n=[];for(let e of U){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=K.get(e.bucketKey)??new Map;K.set(e.bucketKey,r),n.length===0&&r.delete(e.sectionSlot),n.length>0&&r.set(e.sectionSlot,n),r.size===0&&K.delete(e.bucketKey),$()}function $e(e){if(H||R)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=K.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 u={target:r,element:i,field:o};Y=u,o.addEventListener(`input`,Ot),c.addEventListener(`click`,()=>{Y===u&&(Y=null,$())}),l.addEventListener(`click`,()=>{Y===u&&(Y=null),Qe(r,o.value)}),$(),o.focus()}function et(e){let t={bucketKey:Q(),sectionSlot:S(e)};if(Y?.target.bucketKey===t.bucketKey&&Y.target.sectionSlot===t.sectionSlot)return Y.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=R,o.disabled=R,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(!A||n.revision===null||R)return!1;let i=l(r);if(i!==null)return He(i),!1;let a={agentId:n.agentId,revision:n.revision,decision:t,...r};return d.sendDecision(A,a)?(W=null,R=!0,z=ee(t)?n:null,$(),!0):(He(e),!1)}function nt(e){if(!B)return{};let t=k.value;return t===_e(A,e.agentId,e.revision)?{}:{plan:t}}function rt(e){let t=qe(A,e.agentId,e.revision),n=Ze(t);n.length!==0&&tt(`revise`,e,{comments:n})&&e.revision!==null&&(G={bucketKey:t,agentId:e.agentId,revision:e.revision},$())}function it(e){let t={agentId:M,revision:N};e===`revise`?rt(t):tt(e===`approve`&&!Oe.hidden&&ke.checked?`approve-accept-edits`:e,t,nt(t))}function at(e){Y=null,B=e===`edit`,Me=e===`changes`,B&&V!==Q()&&(k.value=_e(A,M,N)??``,V=Q()),W=null,$()}function ot(e){return`${e.kind}:${Ge(e.agentId,e.revision)}`}function st(e){for(q.set(ot(e),e);q.size>fe;){let e=q.keys().next().value;if(typeof e!=`string`)break;q.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 q)if(ct(n,e))return q.delete(t),n;return null}function ut(){for(let[e,t]of q)if(t.kind===`draft`)return q.delete(e),t;return null}function dt(){if(q.size!==1)return null;let e=q.entries().next().value;return e?(q.delete(e[0]),e[1]):null}function ft(){if(!A)return;let e=Ke();P!==e&&d.requestPlan(A,M,N??void 0)&&(P=e,st({kind:`selection`,agentId:M,revision:N}))}function pt(){f.hidden||ft()}function mt(){return s(j,M,N)}function ht(e){if(!A)return;let t=Ge(M,e);I!==t&&d.requestPlan(A,M,e)&&(I=t,st({kind:`diff-base`,agentId:M,revision:e}))}function gt(){if(!A)return;let e=`${A}:${M??`main`}`;L!==e&&d.requestDraft(A,M)&&(L=e,st({kind:`draft`,agentId:M,revision:null}))}function _t(e,t){return`${e??``}:${t??``}`}function vt(){return j.reviews.find(e=>e.agentId===M)?.revisions.find(e=>e.revision===N)?.receivedAt??0}function yt(){let e=Pe.get(_t(A,M));return e!==void 0&&e>vt()}function bt(){H?(Ve(),$()):(Y=null,B=!1,Me=!1,gt(),$())}E.addEventListener(`click`,bt);function xt(e){we.replaceChildren(),p.replaceChildren(),J=[];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),J.push(i),i.addEventListener(`click`,()=>Re(e)),we.append(i);let a=n(`option`,null,r);a.value=e,p.append(a)}}function St(e){let t=mt();if(t===null){O.append(n(`p`,`plan-loading`,`This is the first revision, so there is nothing to diff`));return}let r=_e(A,M,t);if(r===null){O.append(n(`p`,`plan-loading`,`Loading the previous revision`)),ht(t);return}let i=de(r,e);i.isTooLarge?(O.append(n(`p`,`plan-loading`,`This diff is too large to show, so the newer revision stands alone`)),O.append(se(ie(e)))):O.append(ae(i))}function Ct(e){if(O.replaceChildren(),B){xt(U),O.append(k);return}if(e===null){if(U=[],xt(U),F===Ke()){O.append(n(`p`,`plan-loading`,`This plan revision could not be loaded`));return}O.append(n(`p`,`plan-loading`,`Loading plan`)),ft();return}let t=ie(e);if(U=re(t),xt(U),Me){St(e);return}if(H){O.append(se(t));return}let r=Je();O.append(oe(U,{hasComment:e=>r?.has(S(e))===!0,isComposing:e=>Y?.target.bucketKey===Q()&&Y.target.sectionSlot===S(e),onComment:$e,attachmentFor:et}))}function wt(e){_.hidden=e.tabs.length<2,v.replaceChildren();for(let t of e.tabs){let e=n(`button`,`plan-tab`,t.label);e.type=`button`,e.setAttribute(`role`,X?`radio`:`tab`),e.setAttribute(X?`aria-checked`:`aria-selected`,String(t.selected)),e.tabIndex=t.selected?0:-1,e.addEventListener(`click`,()=>{M=t.agentId,N=null,W=null,P=``,F=``,I=``,L=``,Ve(),Z(!1,X),$()}),v.append(e)}}function Tt(){return H?Ne:_e(A,M,N)}function Et(e){return o({state:j,selectedAgentId:M,selectedRevision:N,body:e,isConnected:je,isDecisionInFlight:R,isDraft:H,pendingCommentCount:Ye(),hasUnsavedComment:Xe(),problem:W})}function Dt(e){Ee.textContent=e.status,Ee.hidden=e.status.length===0;let t=e.actions.some(e=>e.kind===`approve`&&e.enabled);Oe.hidden=!t,ke.disabled=!t;for(let t of e.actions){let e=Ae.get(t.kind);e&&(e.disabled=!t.enabled)}}function Ot(){Dt(Et(Tt()))}function $(){let e=X&&m.contains(document.activeElement),t=o({state:j,selectedAgentId:M,selectedRevision:N,body:null,isConnected:je});(M!==t.selectedAgentId||N!==t.selectedRevision)&&Ve(),M=t.selectedAgentId,N=t.selectedRevision,V!==Q()&&(V=null);let r=Tt(),i=Et(r);wt(i);let a=i.revisions.findIndex(e=>e.selected),s=i.revisions[a],l=Date.now();ue.hidden=i.revisions.length<2,x.textContent=`Rev ${a+1} of ${i.revisions.length}`,ge.textContent=s?c(s.receivedAt,l):``,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`,c(e.receivedAt,l))),e.isOpen&&t.append(n(`span`,`plan-revision-open`,`OPEN`)),t.addEventListener(`click`,()=>Ue(e.revision)),C.append(t)}w.replaceChildren();let u=B?`edit`:Me?`changes`:`read`,ee=i.modes.find(e=>e.kind===u&&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===u)),t.tabIndex=e.kind===ee.kind?0:-1,t.addEventListener(`click`,()=>{t.disabled||(at(e.kind),w.querySelector(`[aria-checked="true"]`)?.focus())}),w.append(t)}T.hidden=!yt()&&!H,E.hidden=T.hidden,E.setAttribute(`aria-pressed`,String(H)),Dt(i),Ct(r),p.disabled=J.length===0,Be(),e&&!m.contains(document.activeElement)&&g.focus()}function kt(e){z!==null&&ne(e,z.agentId)&&(z=null,V=null,d.showTerminal())}function At(e){Y=null,e!==A&&(z=null,R=!1,W=null,q.clear()),Z(!1,!1),A=e,f.hidden=!1,P=``,F=``,$(),pt()}function jt(){Y=null,Z(!1,!1),f.hidden=!0}function Mt(e,t){return t.kind!==`selection`||e.agentId!==M?!1:t.revision===null?N===null||N===e.revision:t.revision===N}function Nt(e){e.kind===`draft`?(L=``,He(`the draft could not be read, so nothing was shown`)):e.kind===`diff-base`?I=``:F=Ge(e.agentId,e.revision)}function Pt(e){G!==null&&te(e,G.agentId)!==G.revision&&(K.delete(G.bucketKey),G=null)}function Ft(e){R=!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(L=``,n===null||t.agentId!==M)return;Ne=t.plan,H=!0}else he(e.id,t),n!==null&&Mt(t,n)&&(M=t.agentId,N=t.revision,P=``,F=``)}function It(e){let t=te(e,M);t!==null&&t!==te(j,M)&&(N=t,Ve()),Pt(e),j=e,R=!1,kt(e)}function Lt(e){let t=!1;e.state&&It(e.state),e.draft&&Pe.set(_t(e.draft.id,e.draft.agentId),e.draft.changedAt),e.decisionRefused&&(z=null,R=!1,G=null,e.refusalText&&(W=e.refusalText)),typeof e.isConnected==`boolean`&&(t=e.isConnected&&!je,je=e.isConnected,t&&(P=``,F=``,I=``,L=``,R=!1)),e.requestFailed&&(F=P),e.response&&Ft(e.response),f.hidden||$(),(t||e.decisionRefused)&&pt()}return{el:f,show:At,hide:jt,update:Lt}}export{C as createPlanFace,ge as dropPlanBodyCache};
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Et as e}from"./updates-view-core-BYoMfzXj.js";import{o as t}from"./dom-helpers-C7P3_59O.js";import{Yr as n}from"./index-
|
|
1
|
+
import{Et as e}from"./updates-view-core-BYoMfzXj.js";import{o as t}from"./dom-helpers-C7P3_59O.js";import{Yr as n}from"./index-BZbBg0oU.js";var r=2,i=8,a=/^ {0,3}(`{3,}|~{3,})([^`]*)$/,o=/^(\s*)(?:([-+*])|(\d+)[.)])\s+(.+)$/,s=/^ {0,3}(?:(?:\*\s*){3,}|(?:-\s*){3,}|(?:_\s*){3,})$/,c=/^:?-{3,}:?$/,l=/^[A-Za-z0-9_+#.-]{1,32}$/;function u(t){return e(t,{overlongLine:`reject`})}function d(e){let t=e.trim().split(/\s+/)[0]??``;return l.test(t)?t:``}function f(e,t){if(!t)return;let n=e.at(-1);n?.type===`text`?n.text+=t:e.push({type:`text`,text:t})}function p(e,t){return e.startsWith(`**`,t)?`**`:e.startsWith(`__`,t)?`__`:null}function m(e,t){return e.startsWith(`*`,t)?`*`:e.startsWith(`_`,t)?`_`:null}function h(e,t,n){let r=e.indexOf(t,n);return r>n?r:-1}function g(e,t){let n=e.indexOf(t);return function(r){return n===-1?-1:(n>=r||(n=e.indexOf(t,r)),n)}}function _(e,t){let n=1;for(let i=t;i<e.length;i++){let t=e[i];if(t===`(`&&n++,t===`)`&&n--,n===0)return i;if(n>r)return-1}return-1}function v(e,t,n){if(e[t]!==`[`)return null;let r=n(t+1);if(r<=t+1||e[r+1]!==`(`)return null;let i=_(e,r+2);return i===-1?null:{label:e.slice(t+1,r),target:e.slice(r+2,i),end:i+1}}function y(e){let t=[],r=g(e,`]`),i=0;for(;i<e.length;){let a=v(e,i,r);if(a){let e=n(a.target.trim());e&&t.push({type:`link`,href:e,children:y(a.label)}),e||f(t,a.label),i=a.end;continue}if(e.startsWith("`",i)){let n=h(e,"`",i+1);if(n!==-1){t.push({type:`code`,text:e.slice(i+1,n)}),i=n+1;continue}}let o=p(e,i);if(o){let n=h(e,o,i+o.length);if(n!==-1){t.push({type:`strong`,children:y(e.slice(i+o.length,n))}),i=n+o.length;continue}}let s=m(e,i);if(s){let n=h(e,s,i+1);if(n!==-1){t.push({type:`emphasis`,children:y(e.slice(i+1,n))}),i=n+1;continue}}f(t,e[i]),i++}return t}function b(e){return e.map(e=>e.type===`text`||e.type===`code`?e.text:b(e.children)).join(``)}var x=`plan-h-`;function S(e,t){let n=e.toLowerCase().normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)||`section`,r=(t.slugCounts.get(n)??0)+1;return t.slugCounts.set(n,r),`${x}${r===1?n:`${n}-${r}`}`}function C(e){if(typeof e!=`string`||!e.includes(`|`))return!1;let t=w(e);return t.length<2?!1:t.every(e=>c.test(e))}function w(e){let t=e.trim();return t.startsWith(`|`)&&(t=t.slice(1)),t.endsWith(`|`)&&(t=t.slice(0,-1)),t.split(`|`).map(e=>e.trim())}function T(e){let t=o.exec(e);return t?{indent:t[1].replace(/\t/g,` `).length,ordered:!!t[3],content:t[4]}:null}function E(e,t,n,r){let a=T(e[t]);if(!a)return null;let o=[],s=a.ordered,c=a.indent,l=t;for(;l<e.length;){let t=T(e[l]);if(!t||t.indent<c)break;if(t.indent>c){if(r>=i)break;let t=E(e,l,n,r+1);if(!t||o.length===0)break;o.at(-1)?.children.push(t.block),l=t.next}else{if(t.ordered!==s)break;o.push({children:[{type:`paragraph`,children:y(t.content)}]}),l++}}return{block:{type:`list`,ordered:s,items:o},next:l}}function D(e,t){let n=e[t]??``;return n.trim()===``||u(n)||a.test(n)||s.test(n)||T(n)||/^ {0,3}>/.test(n)?!0:t+1<e.length&&n.includes(`|`)&&C(e[t+1])}function O(e,t,n){let r=[],o=0;for(;o<e.length;){let c=e[o];if(c.trim()===``){o++;continue}let l=a.exec(c);if(l){let t=[],n=l[1][0],i=l[1].length;for(o++;o<e.length;){let r=/^ {0,3}(`{3,}|~{3,})\s*$/.exec(e[o]);if(r&&r[1][0]===n&&r[1].length>=i)break;t.push(e[o]),o++}o<e.length&&o++,r.push({type:`code`,language:d(l[2]),text:t.join(`
|
|
2
2
|
`)});continue}let f=u(c);if(f){let e=y(f.text);r.push({type:`heading`,level:f.level,id:S(b(e),t),children:e}),o++;continue}if(s.test(c)){r.push({type:`rule`}),o++;continue}if(o+1<e.length&&c.includes(`|`)&&C(e[o+1])){let t=w(c).map(y),n=[];for(o+=2;o<e.length&&e[o].includes(`|`)&&e[o].trim()!==``;)n.push(w(e[o]).map(y)),o++;r.push({type:`table`,header:t,rows:n});continue}let p=E(e,o,t,n);if(p){r.push(p.block),o=p.next;continue}if(n<i&&/^ {0,3}>/.test(c)){let i=[];for(;o<e.length&&/^ {0,3}>/.test(e[o]);)i.push(e[o].replace(/^ {0,3}> ?/,``)),o++;r.push({type:`blockquote`,blocks:O(i,t,n+1)});continue}let m=[c.trim()];for(o++;o<e.length&&!D(e,o);)m.push(e[o].trim()),o++;r.push({type:`paragraph`,children:y(m.join(` `))})}return r}function k(e){return O(e.replace(/\r\n?/g,`
|
|
3
3
|
`).split(`
|
|
4
4
|
`),{slugCounts:new Map},0)}function A(e){let t=[],n={heading:null,id:null,level:0,blocks:[]},r=()=>{(n.heading!==null||n.blocks.length!==0)&&t.push(n)};for(let t of e)t.type===`heading`?(r(),n={heading:b(t.children),id:t.id,level:t.level,blocks:[t]}):n.blocks.push(t);return r(),t}function j(e,n){for(let r of n){if(r.type===`text`){e.append(document.createTextNode(r.text));continue}if(r.type===`code`){e.append(t(`code`,`plan-inline-code`,r.text));continue}if(r.type===`emphasis`){let n=t(`em`);j(n,r.children),e.append(n);continue}if(r.type===`strong`){let n=t(`strong`);j(n,r.children),e.append(n);continue}let n=t(`a`,`plan-link`);n.href=r.href,n.target=`_blank`,n.rel=`noopener noreferrer`,j(n,r.children),e.append(n)}}function M(e){let n=t(`li`);return N(n,e.children),n}function N(e,n){for(let r of n)if(r.type===`heading`){let n=t(`h${r.level}`,`plan-heading`);n.id=r.id,j(n,r.children),e.append(n)}else if(r.type===`paragraph`){let n=t(`p`,`plan-paragraph`);j(n,r.children),e.append(n)}else if(r.type===`list`){let n=r.ordered?t(`ol`,`plan-list`):t(`ul`,`plan-list`);n.append(...r.items.map(M)),e.append(n)}else if(r.type===`code`){let n=t(`pre`,`plan-code`),i=t(`code`,r.language?`language-${r.language}`:null,r.text);n.append(i),e.append(n)}else if(r.type===`table`){let n=t(`div`,`plan-table-wrap`),i=t(`table`,`plan-table`),a=t(`thead`),o=t(`tr`);for(let e of r.header){let n=t(`th`);j(n,e),o.append(n)}a.append(o);let s=t(`tbody`);for(let e of r.rows){let n=t(`tr`);for(let r of e){let e=t(`td`);j(e,r),n.append(e)}s.append(n)}i.append(a,s),n.append(i),e.append(n)}else if(r.type===`blockquote`){let n=t(`blockquote`,`plan-blockquote`);N(n,r.blocks),e.append(n)}else e.append(t(`hr`,`plan-rule`))}function P(e){let n=t(`div`,`plan-document`);return N(n,e),n}function F(e,{hasComment:n,isComposing:r,onComment:i,attachmentFor:a}){let o=t(`div`,`plan-document`),s=[];for(let c of e){let e=t(`section`,`plan-section`);e.dataset.selected=`false`,e.addEventListener(`click`,()=>{for(let t of s)t.dataset.selected=String(t===e)}),s.push(e);let l=t(`div`,`plan-section-head`),u=c.blocks[0],d=u?.type===`heading`;if(d&&N(l,[u]),d||(e.id=`plan-introduction`),!n(c)&&!r(c)){let e=t(`button`,`plan-section-comment`,`Comment`);e.type=`button`,e.setAttribute(`aria-label`,`Comment on ${c.heading??`Introduction`}`),e.addEventListener(`click`,()=>i(c)),l.append(e)}let f=t(`div`,`plan-section-body`);N(f,d?c.blocks.slice(1):c.blocks),e.append(l,f);let p=a(c);p&&e.append(p),o.append(e)}return o}var I={added:`+`,removed:`-`,unchanged:` `,skipped:` `};function L(e){let n=t(`div`,`plan-diff`);for(let r of e.lines){let e=t(`div`,`plan-diff-line plan-diff-${r.kind}`),i=t(`span`,`plan-diff-gutter`,I[r.kind]);i.setAttribute(`aria-hidden`,`true`),e.append(i,t(`span`,`plan-diff-text`,r.text)),n.append(e)}return n}export{A as a,k as i,L as n,F as r,P as t};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Mt as e,n as t}from"./updates-view-core-BYoMfzXj.js";import{E as n,a as r,c as i,i as a,m as o,o as s,u as c}from"./dom-helpers-C7P3_59O.js";import{d as l,r as u,u as d}from"./control-ws-DUGWJI0x.js";import{a as f,o as p}from"./card-registry-DITW3gYA.js";import{a as m}from"./modal-Bh-cVr-I.js";import{Ai as h,Bt as g,Dt as ee,Er as _,Et as v,Fr as y,Gr as b,Ht as te,Jr as ne,Kr as x,Lr as S,Nr as re,Rr as C,Rt as w,Sr as ie,Tt as ae,Vt as T,Wr as oe,ki as se,m as E,mi as D,qr as ce,si as O,wr as le,zt as k}from"./index-6j_Ukqob.js";function ue(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function A(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 pe(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 me(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=he(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 he(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`),pe(e,!!e.keepMergeable,t,n,o,r)}function ge(e){return e?.isKeepMergeableEnabled!==!1}function _e(e){return e?.isMergeQueueEnabled!==!1}function ve(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 ye(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return pe(e,i,t,n,ve(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}function be(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 xe(e){let t=e.reviewRequests.length>0?`Requested: ${M(e)}`:`Approval required`;return e.approvals>0?`${t}, ${j(e.approvals)}`:t}function Se(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 Ce(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?Se(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:xe(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 we(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function Te(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function Ee(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 De(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:we(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:Te(e),lastActivityAt:e.lastActivityAt,waiting:Ee(e,t),isWaitingOnYou:N(e,t)===!0}))}function Oe(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 ke(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 Ae(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 je={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 Me(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=je[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 Ne(e,t=null){if(e.state===`MERGED`)return[];let n=[be(e),Ce(e),Oe(e,t),ke(e),Ae(e)],r=e.autoRebase?[Pe(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 Pe(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 Fe(e,t=0){if(!e)return[];let n=A(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}var Ie={isVisible:!1,isDisabled:!0,statusText:``,tone:null},Le={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 Re(e,t){if(e.state!==`OPEN`)return Ie;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,...Le[n.phase]};let r=te(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 ${T(e.mergeMethod)}`,tone:null}}function ze(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${T(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function Be(t){let n=e.safeParse(t);if(!n.success)return null;let r=t&&typeof t==`object`&&`requestId`in t?t.requestId:null;return typeof r==`string`?{...n.data,requestId:r}:null}var I=null,L=null,R=v().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)=>he(e,t,n,r,E(e.keepMergeableAttempt?.at)),isFeatureEnabled:ge,save:async(e,t)=>{let n=await l(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:y});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.`}},Ve={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:ye,isFeatureEnabled:_e,save:async(e,t)=>{let n=await l(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:y});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,He=`The server did not answer within ${W/1e3} s. Check GitHub before trying again.`,Ue=`${t} Check GitHub before trying again.`;function We(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 u=null,d=!1,f=``,p=null;function m(){let e=Date.now(),n=A(u,e),r=fe(u,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!u?.error&&(o.hidden=!u?.error),a.textContent=de(u,d,f)||(u?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!c(t)&&!document.hidden&&o.getClientRects().length>0&&ue(u,e);!i&&p!==null&&(window.clearInterval(p),p=null),i&&p===null&&(p=window.setInterval(m,1e3))}function h(e){e!==u&&(f=``),u=e,i.disabled=d||!!e?.isRefreshing||!e?.configured,m()}i.addEventListener(`click`,async()=>{if(!d){d=!0,f=``,h(u);try{let e=await Promise.all(n.map(e=>l(`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=C(e,G)}finally{d=!1,h(u)}}});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}),Q()}function Ge(e){if(V.has(e.key))return;let n=u(`my-pr-merge`);if(!d({type:`my-pr-merge`,requestId:n,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){K(e.key,e.headRefOid,`failed`,t);return}let r=window.setTimeout(()=>{V.delete(e.key),K(e.key,e.headRefOid,`failed`,He)},W);V.set(e.key,{requestId:n,head:e.headRefOid,timer:r}),B.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),Q()}function Ke(e){let t=Re(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`),S(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{m({title:`Merge pull request`,message:ze(e),confirmLabel:`Merge`,onConfirm:()=>Ge(e)})}),n.append(r,i),n}function qe(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 S(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),Q();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,C(n,y))}finally{t.pendingKeys.delete(e.key),Q()}}}),r.append(i,a),r}function q(e,{hasGlyph:t}){let n=s(`span`,`my-pr-stage`);return n.dataset.tone=g(e.stage),t&&n.append(_(w(e.stage),g(e.stage))),n.append(k(e.stage)),n}function Je(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 Ye(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 ${E(Date.parse(e.mergedAt??``))}`:`Updated ${E(Date.parse(e.updatedAt))}`;return r.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!0}),s(`span`,null,`Opened ${E(Date.parse(e.createdAt))}`),s(`span`,null,a)),t.append(n,r),t}function Xe(e){let t=Ne(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(Je(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(_(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.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}, ${E(o)}`:e.replySummary);t.append(n,a,c),r.append(t)}return n.append(r),n}function Ze(e){let t=Me(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} ${E(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.icon,e.tone),o,s(`span`,`pr-readiness-value`,a)),i.append(t)}return n.append(i),n}function Qe(e){let t=[U,Ve].map(t=>qe(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=De(e,R?.viewer??null),n=s(`article`,`pr-detail`),r=[Xe(e),J(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),J(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),Ze(e),Qe(e),Ke(e)];n.append(Ye(e),...r.filter(e=>e!==null)),I.replaceChildren(n)}function X(e){let t=e.dataset.sessionId??``,r=p.get(t),i=o(e,`.session-row-name`);r&&ce(i,f(r)||t);let a={glyph:o(e,`.session-row-glyph`),label:o(e,`.session-row-label`)},s=le(e,a,r?.currentState||n.DORMANT,r?.awaitingBackgroundTasks,r?.pendingPromptKind),c=`Focus session ${i.textContent}, ${s}`;x(e,`title`,c),x(e,`aria-label`,c)}function $e(e){let{row:t,refs:n}=ie(`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 et(e){if(!e||e.length===0)return null;let t=s(`div`,`my-pr-session-focus`);return t.append(...e.map($e)),t}function Z(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))c(e)||X(e)}function tt(e,t,n){let r=s(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${k(e.stage)}`;let i=s(`span`,`pr-queue-glyph`);i.append(_(w(e.stage),g(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 ${E(Date.parse(c))}`:`opened ${E(Date.parse(e.createdAt))}`;o.append(s(`span`,`pr-queue-elapsed`,l));let u=me(e,U.isFeatureEnabled(R),E(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=et(n);return f&&d.append(f),{group:d,row:r}}function nt(e){z=e,Y(v().prs.find(e=>e.key===z))}function Q(){let{prs:e,status:t}=v();R=t,z&&Y(e.find(e=>e.key===z)),L?.onChange()}function rt(e,t){return H=t?.openTerminal??null,L=e,I||(I=s(`div`,`pr-detail-mine`),ee(it),Q(),I)}function it(e){switch(e.kind){case`prs`:Q();return;case`session-state`:Z();return;case`merge-result`:ot(e.message);return;case`connection`:at(e.isConnected)}}function at(e){if(!e){for(let[e,t]of V)window.clearTimeout(t.timer),B.set(e,{head:t.head,phase:`failed`,text:Ue});V.size!==0&&(V.clear(),Q())}}function ot(e){let t=Be(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=v().prs.find(e=>e.key===t.key);r&&ae([r])}var st={minPx:220,maxPx:720},ct=16,$=new Set,lt=0;function ut(e){let t=D();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=O();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function dt(){for(let e of $)e.isConnected?ut(e):$.delete(e)}function ft(e,t){let n=s(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function pt(e){let t=s(`div`,`pr-queue-foot`);return e&&t.append(e),t}function mt({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-${++lt}`,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=oe(16,16);c.append(b(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),c.append(b(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let l=b(`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`,()=>{se(!D()),dt()});let u=pt(null);i.append(ft(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),ut(r),$.add(r),ne({resizer:d,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:st,keyStepPx:ct,getStoredWidth:O,setStoredWidth:h}),{columns:r,queue:a,foot:u,detail:f}}function ht({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=re(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{We as a,Z as c,Fe as d,ft as i,nt as l,mt as n,tt as o,pt as r,rt as s,ht as t,F as u};
|
|
1
|
+
import{Mt as e,n as t}from"./updates-view-core-BYoMfzXj.js";import{E as n,a as r,c as i,i as a,m as o,o as s,u as c}from"./dom-helpers-C7P3_59O.js";import{d as l,r as u,u as d}from"./control-ws-DUGWJI0x.js";import{a as f,o as p}from"./card-registry-DITW3gYA.js";import{a as m}from"./modal-Bh-cVr-I.js";import{Ai as h,Bt as g,Dt as ee,Er as _,Et as v,Fr as y,Gr as b,Ht as te,Jr as ne,Kr as x,Lr as S,Nr as re,Rr as C,Rt as w,Sr as ie,Tt as ae,Vt as T,Wr as oe,ki as se,m as E,mi as D,qr as ce,si as O,wr as le,zt as k}from"./index-BZbBg0oU.js";function ue(e,t){return!!e?.error&&!e.isRefreshing&&typeof e.nextAttemptAt==`number`&&e.nextAttemptAt>t}function A(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 pe(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 me(e,t,n=``){if(!t||!e.keepMergeable)return null;let r=he(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 he(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`),pe(e,!!e.keepMergeable,t,n,o,r)}function ge(e){return e?.isKeepMergeableEnabled!==!1}function _e(e){return e?.isMergeQueueEnabled!==!1}function ve(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 ye(e,t,n=``,r=!0){let i=e.mergeQueuePosition!==null&&e.mergeQueuePosition!==void 0;return pe(e,i,t,n,ve(i,!!e.isMergeQueueHeldForRepairPush,!!e.mergeQueueFailure),r)}function be(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 xe(e){let t=e.reviewRequests.length>0?`Requested: ${M(e)}`:`Approval required`;return e.approvals>0?`${t}, ${j(e.approvals)}`:t}function Se(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 Ce(e){return e.reviewDecision===`CHANGES_REQUESTED`?{label:`Review`,tone:`warn`,icon:`changes-requested`,text:`Changes requested`}:e.reviewDecision===`APPROVED`?Se(e):e.reviewDecision===`REVIEW_REQUIRED`||e.mergeStateStatus===`BLOCKED`?{label:`Review`,tone:`wait`,icon:`reviewer`,text:xe(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 we(e){let t=e.line===null?e.path:`${e.path}:${e.line}`;return e.isOutdated?`${t} (outdated)`:t}function Te(e){let t=e.commentCount-1;return t===0?`No replies`:`${t} ${t===1?`reply`:`replies`}, last by ${e.lastAuthor??`a deleted account`}`}function Ee(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 De(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:we(e),url:e.url,author:e.author??`a deleted account`,excerpt:e.excerpt,replySummary:Te(e),lastActivityAt:e.lastActivityAt,waiting:Ee(e,t),isWaitingOnYou:N(e,t)===!0}))}function Oe(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 ke(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 Ae(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 je={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 Me(e){return[...e.reviews].sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).map(e=>{let t=je[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 Ne(e,t=null){if(e.state===`MERGED`)return[];let n=[be(e),Ce(e),Oe(e,t),ke(e),Ae(e)],r=e.autoRebase?[Pe(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 Pe(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 Fe(e,t=0){if(!e)return[];let n=A(e,t),r=n?[{text:n,tone:`error`}]:[];return e.truncatedNote?[...r,{text:e.truncatedNote,tone:`info`}]:r}var Ie={isVisible:!1,isDisabled:!0,statusText:``,tone:null},Le={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 Re(e,t){if(e.state!==`OPEN`)return Ie;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,...Le[n.phase]};let r=te(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 ${T(e.mergeMethod)}`,tone:null}}function ze(e){return`Merge ${e.key} "${e.title}" into ${e.baseRefName} with ${T(e.mergeMethod)}, your default for this repository. Glimmervoid does not delete the branch.`}function Be(t){let n=e.safeParse(t);if(!n.success)return null;let r=t&&typeof t==`object`&&`requestId`in t?t.requestId:null;return typeof r==`string`?{...n.data,requestId:r}:null}var I=null,L=null,R=v().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)=>he(e,t,n,r,E(e.keepMergeableAttempt?.at)),isFeatureEnabled:ge,save:async(e,t)=>{let n=await l(`my-pr-keep-mergeable`,{repo:e.repo,number:e.number,keepMergeable:t},{timeoutMs:y});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.`}},Ve={label:`Merge when ready`,pendingKeys:new Set,errorsByKey:new Map,controlState:ye,isFeatureEnabled:_e,save:async(e,t)=>{let n=await l(`my-pr-merge-when-ready`,{repo:e.repo,number:e.number,mergeWhenReady:t},{timeoutMs:y});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,He=`The server did not answer within ${W/1e3} s. Check GitHub before trying again.`,Ue=`${t} Check GitHub before trying again.`;function We(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 u=null,d=!1,f=``,p=null;function m(){let e=Date.now(),n=A(u,e),r=fe(u,e);o.textContent=n?[n,r].filter(Boolean).join(` `):``,o.hidden!==!u?.error&&(o.hidden=!u?.error),a.textContent=de(u,d,f)||(u?.error?``:r)||``,a.hidden!==!a.textContent&&(a.hidden=!a.textContent);let i=o.isConnected&&!c(t)&&!document.hidden&&o.getClientRects().length>0&&ue(u,e);!i&&p!==null&&(window.clearInterval(p),p=null),i&&p===null&&(p=window.setInterval(m,1e3))}function h(e){e!==u&&(f=``),u=e,i.disabled=d||!!e?.isRefreshing||!e?.configured,m()}i.addEventListener(`click`,async()=>{if(!d){d=!0,f=``,h(u);try{let e=await Promise.all(n.map(e=>l(`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=C(e,G)}finally{d=!1,h(u)}}});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}),Q()}function Ge(e){if(V.has(e.key))return;let n=u(`my-pr-merge`);if(!d({type:`my-pr-merge`,requestId:n,repo:e.repo,number:e.number,headRefOid:e.headRefOid})){K(e.key,e.headRefOid,`failed`,t);return}let r=window.setTimeout(()=>{V.delete(e.key),K(e.key,e.headRefOid,`failed`,He)},W);V.set(e.key,{requestId:n,head:e.headRefOid,timer:r}),B.set(e.key,{head:e.headRefOid,phase:`pending`,text:``}),Q()}function Ke(e){let t=Re(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`),S(i,t.tone,t.statusText),r.addEventListener(`click`,()=>{m({title:`Merge pull request`,message:ze(e),confirmLabel:`Merge`,onConfirm:()=>Ge(e)})}),n.append(r,i),n}function qe(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 S(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),Q();try{let r=await t.save(e,!n.isPressed);r&&t.errorsByKey.set(e.key,r)}catch(n){t.errorsByKey.set(e.key,C(n,y))}finally{t.pendingKeys.delete(e.key),Q()}}}),r.append(i,a),r}function q(e,{hasGlyph:t}){let n=s(`span`,`my-pr-stage`);return n.dataset.tone=g(e.stage),t&&n.append(_(w(e.stage),g(e.stage))),n.append(k(e.stage)),n}function Je(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 Ye(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 ${E(Date.parse(e.mergedAt??``))}`:`Updated ${E(Date.parse(e.updatedAt))}`;return r.append(s(`span`,`pr-queue-owner`,`Yours`),q(e,{hasGlyph:!0}),s(`span`,null,`Opened ${E(Date.parse(e.createdAt))}`),s(`span`,null,a)),t.append(n,r),t}function Xe(e){let t=Ne(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(Je(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(_(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.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}, ${E(o)}`:e.replySummary);t.append(n,a,c),r.append(t)}return n.append(r),n}function Ze(e){let t=Me(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} ${E(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.icon,e.tone),o,s(`span`,`pr-readiness-value`,a)),i.append(t)}return n.append(i),n}function Qe(e){let t=[U,Ve].map(t=>qe(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=De(e,R?.viewer??null),n=s(`article`,`pr-detail`),r=[Xe(e),J(`Threads waiting on you`,t.filter(e=>e.isWaitingOnYou)),J(`Other open threads`,t.filter(e=>!e.isWaitingOnYou)),Ze(e),Qe(e),Ke(e)];n.append(Ye(e),...r.filter(e=>e!==null)),I.replaceChildren(n)}function X(e){let t=e.dataset.sessionId??``,r=p.get(t),i=o(e,`.session-row-name`);r&&ce(i,f(r)||t);let a={glyph:o(e,`.session-row-glyph`),label:o(e,`.session-row-label`)},s=le(e,a,r?.currentState||n.DORMANT,r?.awaitingBackgroundTasks,r?.pendingPromptKind),c=`Focus session ${i.textContent}, ${s}`;x(e,`title`,c),x(e,`aria-label`,c)}function $e(e){let{row:t,refs:n}=ie(`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 et(e){if(!e||e.length===0)return null;let t=s(`div`,`my-pr-session-focus`);return t.append(...e.map($e)),t}function Z(){for(let e of document.querySelectorAll(`.my-pr-session-pill`))c(e)||X(e)}function tt(e,t,n){let r=s(`button`,`pr-queue-row`);r.type=`button`,r.dataset.prKey=e.key,r.title=`${e.key}: ${k(e.stage)}`;let i=s(`span`,`pr-queue-glyph`);i.append(_(w(e.stage),g(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 ${E(Date.parse(c))}`:`opened ${E(Date.parse(e.createdAt))}`;o.append(s(`span`,`pr-queue-elapsed`,l));let u=me(e,U.isFeatureEnabled(R),E(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=et(n);return f&&d.append(f),{group:d,row:r}}function nt(e){z=e,Y(v().prs.find(e=>e.key===z))}function Q(){let{prs:e,status:t}=v();R=t,z&&Y(e.find(e=>e.key===z)),L?.onChange()}function rt(e,t){return H=t?.openTerminal??null,L=e,I||(I=s(`div`,`pr-detail-mine`),ee(it),Q(),I)}function it(e){switch(e.kind){case`prs`:Q();return;case`session-state`:Z();return;case`merge-result`:ot(e.message);return;case`connection`:at(e.isConnected)}}function at(e){if(!e){for(let[e,t]of V)window.clearTimeout(t.timer),B.set(e,{head:t.head,phase:`failed`,text:Ue});V.size!==0&&(V.clear(),Q())}}function ot(e){let t=Be(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=v().prs.find(e=>e.key===t.key);r&&ae([r])}var st={minPx:220,maxPx:720},ct=16,$=new Set,lt=0;function ut(e){let t=D();e.toggleAttribute(`data-queue-collapsed`,t),e.querySelector(`.pr-queue-toggle`)?.setAttribute(`aria-expanded`,String(!t));let n=O();n===null?e.style.removeProperty(`--pr-queue-width`):e.style.setProperty(`--pr-queue-width`,`${n}px`)}function dt(){for(let e of $)e.isConnected?ut(e):$.delete(e)}function ft(e,t){let n=s(`div`,`pr-queue-head`);return e&&n.append(e),t&&n.append(t),n}function pt(e){let t=s(`div`,`pr-queue-foot`);return e&&t.append(e),t}function mt({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-${++lt}`,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=oe(16,16);c.append(b(`rect`,{x:`1.5`,y:`2`,width:`13`,height:`12`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),c.append(b(`path`,{d:`M5.5 2V14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`}));let l=b(`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`,()=>{se(!D()),dt()});let u=pt(null);i.append(ft(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),ut(r),$.add(r),ne({resizer:d,column:i,widthHost:r,widthProperty:`--pr-queue-width`,bounds:st,keyStepPx:ct,getStoredWidth:O,setStoredWidth:h}),{columns:r,queue:a,foot:u,detail:f}}function ht({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=re(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{We as a,Z as c,Fe as d,ft as i,nt as l,mt as n,tt as o,pt as r,rt as s,ht as t,F as u};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,K as s,L as c,N as l,O as u,P as d,R as ee,S as f,T as p,V as te,j as m,k as ne,v as h,w as g,y as _,z as v}from"./updates-view-core-BYoMfzXj.js";import{c as y,n as b,o as x,p as S,r as C,u as w}from"./dom-helpers-C7P3_59O.js";import{d as T}from"./control-ws-DUGWJI0x.js";import{a as E}from"./modal-Bh-cVr-I.js";import{F as D,Fr as O,I as k,L as re,Lr as A,P as ie,Rr as j,_ as ae,h as M,m as N,mn as oe,p as se,pn as ce}from"./index-6j_Ukqob.js";import{createInvestigationDialog as le,createRadarReportDialog as P}from"./dialogs-BZSGSCHb.js";var ue=4e3;function de({render:e,holdMs:t=ue,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 F=null,I=`http://www.w3.org/2000/svg`,L=de({render:Q}),R=null,z=new Map,B=new WeakMap,fe=`this issue`,V=se(()=>F),pe={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},H=[{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}],me=H.map(e=>e.track).join(` `),he=H.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ge=H.findIndex(e=>e.startsActionCluster)+1,U=3e4;function W(e){let t=x(`div`,e);return t.style.setProperty(`--radar-issue-grid`,me),t.style.setProperty(`--radar-issue-grid-phone`,he),t.style.setProperty(`--radar-issue-actions-start`,String(ge)),t}function G(e,t){let n=x(`span`,`radar-issue-magnitudes`),r=!1;for(let i of H){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function K(e){return Number.isFinite(e)?String(e):`0`}function _e(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${M(Date.now()-e)}`}function q(e){return typeof e?.issueId==`string`?e.issueId:``}function J(e,t){return[String(e??``),String(t??``)].join(`::`)}function ve(e,t,n){let r=z.get(J(e,t));if(!r||!r.copy.isConnected)return!1;let i=u(n);return i?(r.summary||(r.summary=x(`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 ye(e,t,n){let r=q(e);if(!r)return;R?.dialog.close();let i=le({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>X(e)});R={projectId:String(t??``),issueId:r,dialog:i},i.update(g(e))}function Y(){if(!R)return;if(!R.dialog.isOpen()){R=null;return}let e=h(D().latest,R.projectId,R.issueId);e&&R.dialog.update(g(e))}function X(e){let t=q(e);t&&T(`get-radar-report`,{issueId:t},{timeoutMs:O}).then(n=>{n.ok?n.found?P({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):P({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):P({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{P({issueId:t,issueTitle:String(e.title??``),error:j(n,O)})})}function be(){let e=x(`div`,`radar-issue-actions`),t=x(`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=x(`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)=>{L.begin(e),o(!0),i(),A(t,`busy`,a);let l=(n,r)=>{o(!1),i(),A(t,n,r),L.settle(e)};T(n,r,{timeoutMs:U}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,j(e,U)))},showFollowUp:a,wrap:e}}function xe(e){let t=x(`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(),Ve(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=be(),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`,()=>ye(e,t,n)),!e.inFlight&&e.verdict&&q(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>X(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`&&D().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`,()=>{E({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 Ce(e){return ce()?fe:e}function we(e){let t=B.get(e);t&&(e.title=t())}function Te(){if(F)for(let e of F.querySelectorAll(`.radar-issue-reportable`))we(e)}oe(Te);function Ee(e,t,n){e.classList.add(`radar-issue-reportable`),B.set(e,t),we(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function De(n,a,o){let l=x(`div`,`radar-issue`);l.dataset.severity=c(n.change);let d=x(`span`,`radar-stripe`);d.setAttribute(`aria-hidden`,`true`);let ee=x(`span`,`radar-change`,pe[n.change??``]||String(n.change||`unknown`)),f=y(`radar-issue-title`,String(n.title||`Untitled issue`),n.url,String(n.title||``)),p=x(`span`,`radar-metric`);p.append(x(`span`,`radar-metric-value`,K(n.occurrences)),x(`span`,`radar-metric-label`,`occ`));let m=x(`span`,`radar-metric`);m.append(x(`span`,`radar-metric-value`,K(n.users)),x(`span`,`radar-metric-label`,`users`));let h=e(n.history),g=t(h,64,16),_=g?document.createElementNS(I,`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(I,`title`);e.textContent=te(h);let t=document.createElementNS(I,`polyline`);t.setAttribute(`points`,g),_.append(e,t)}let v=u(n),b=x(`span`,`radar-issue-copy`);b.append(f);let S=null;v&&(S=x(`span`,`radar-issue-summary`),S.textContent=v,b.append(S)),z.set(J(a,n.issueId),{copy:b,summary:S});let C=x(`span`,`radar-issue-meta`),w=i(n);if(w!==null){let e=x(`span`,`radar-issue-seen`);e.title=new Date(w).toLocaleString(),V.track(e,w,N),C.append(e)}let T=r(n);T&&C.append(x(`span`,`radar-issue-status`,T));let E=String(n.title||n.issueId);if(n.inFlight){let e=x(`span`,`radar-verdict`,`investigating`);e.dataset.verdict=`INVESTIGATING`,C.append(e);let t=typeof n.startedAt==`number`?n.startedAt:null;if(t!==null&&Number.isFinite(t)&&t>0){let e=x(`span`,`radar-issue-elapsed`);V.track(e,t,_e),C.append(e)}q(n)&&Ee(l,()=>`Watch the investigation of ${Ce(E)}`,()=>ye(n,a,o))}if(!n.inFlight&&n.verdict){let e=x(`span`,`radar-verdict`,s(n.verdict));e.dataset.verdict=n.verdict,C.append(e),q(n)&&Ee(l,()=>`View investigation report for ${Ce(E)}`,()=>X(n))}C.childElementCount>0&&b.append(C);let D=x(`span`,`radar-issue-trend`);_&&D.append(_);let O=ne(h);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=x(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:d,change:ee,copy:b,occurrences:p,users:m,trend:D};return G(l,e=>k[e.columnId]),q(n)&&l.append(Se(n,a,o)),l}var Z=(e,t,n)=>C(`radar`,e,t,n);function Oe(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${M(e.staleMs)}`:``}function ke(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=x(r,i,l(t));o.title=String(t.name||``),e.append(o);let s=n?ee(t.host):``;s&&e.append(x(`span`,a,s))}function Ae(){let e=W(`radar-column-heads`);for(let t of H){if(!t.headText){e.append(x(`span`));continue}let n=x(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function je(e,t){let n=e.project,r=x(`div`,`radar-project`),i=v(n.issues),a=o(i),s=x(`div`,`radar-project-head`);ke(s,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(s);let c=x(`div`,`radar-project-summary`);c.append(Z(a.active===1?`active issue`:`active issues`,K(a.active))),c.append(Z(`spiking`,K(a.spiking),a.spiking>0?`crit`:null)),c.append(Z(`needs you`,K(a.needsHuman),a.needsHuman>0?`warn`:null));let u=Oe(e);if(u){let t=x(`span`,`radar-project-alert`,u);t.dataset.tone=e.error?`crit`:`warn`,c.append(t)}if(r.append(c),i.length===0)return r;r.append(Ae());let d=W(`radar-issues`);for(let e of i)d.append(De(e,n.projectId,l(n)));return r.append(d),r}function Me(e,t){let n=e.project,r=x(`div`,`radar-quiet-row`),i=x(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),ke(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(x(`span`,`radar-quiet-count`,`0 issues`)),r}var Ne=(e,t)=>b(`radar`,e,t);function Pe(){let e=x(`div`,`radar-issue`);return e.dataset.skeleton=``,G(e,e=>x(`span`,e.cellClass)),e}function Fe(){let e=W(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Pe());return e}function Ie(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Le(e,t=`ready`){let n=Ne(`Errors`);if(t===`pending`)return n.append(Fe()),n;if(t===`placeholder`||e.length===0){let e=x(`p`,`radar-unconfigured`,a(D().latest)),t=ae(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Ie(D().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=x(`div`,`radar-global-tick`),i=Number(D().latest?.intervalMinutes);V.track(r,D().latest?.ts,e=>{let t=`polled ${N(e)}`;return!Number.isFinite(i)||i<=0?t:`${t}, every ${i}m`}),n.append(r);let o=i>0?i*6e4:0,{loud:s,quiet:c}=m(e,Date.now(),{intervalMs:o}),l=f(e);for(let e of s)n.append(je(e,l));if(c.length===0)return n;let u=x(`div`,`radar-quiet`);for(let e of c)u.append(Me(e,l));return n.append(u),n}function Re(e){let{addButton:t,request:n,wrap:r}=be();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{X({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`,()=>ie(e.id))}),r}function ze(e){let t=x(`div`,`radar-investigation`),n=x(`span`,`radar-verdict`,s(e.verdict));n.dataset.verdict=e.verdict;let r=y(`radar-issue-title`,e.title,e.url),i=x(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=x(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=x(`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=x(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=x(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=x(`span`,`radar-investigation-time`,N(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Re(e)),t}function Be(e){let t=Ne(`Investigations`,`completed, not yet archived`),n=x(`div`,`radar-investigations`);for(let t of e)n.append(ze(t));return t.append(n),t}function Ve(e){D().traceOpener?.(e)}function Q(){if(!F)return;F.textContent=``,z.clear(),V.reset();let{latest:e,archivedLocally:t}=D(),r=S(e),i=n(e,t),a=d(e,r.length);F.append(Le(r,a)),i.length>0&&F.append(Be(i))}function $(){L.request()}function He(e){R?.dialog.isOpen()&&p(R,e)&&R.dialog.update(_(e))}function Ue(e){if(e.kind===`status`)$(),Y();else if(e.kind===`investigation-activity`){Y();let t=h(D().latest,e.projectId,e.issueId);if(e.wasInFlight&&ve(e.projectId,e.issueId,t))return;$()}else e.isPatched?(Y(),$()):He(e.frame)}function We(e){if(F)return;let t=x(`div`,`radar-content`);e.appendChild(t),F=t,k(()=>!w(F)),re(Ue),V.ensure(),Q()}var Ge={mount:We};export{Ge as view};
|
|
1
|
+
import{A as e,B as t,C as n,D as r,E as i,F as a,H as o,K as s,L as c,N as l,O as u,P as d,R as ee,S as f,T as p,V as te,j as m,k as ne,v as h,w as g,y as _,z as v}from"./updates-view-core-BYoMfzXj.js";import{c as y,n as b,o as x,p as S,r as C,u as w}from"./dom-helpers-C7P3_59O.js";import{d as T}from"./control-ws-DUGWJI0x.js";import{a as E}from"./modal-Bh-cVr-I.js";import{F as D,Fr as O,I as k,L as re,Lr as A,P as ie,Rr as j,_ as ae,h as M,m as N,mn as oe,p as se,pn as ce}from"./index-BZbBg0oU.js";import{createInvestigationDialog as le,createRadarReportDialog as P}from"./dialogs-B_eWmzM5.js";var ue=4e3;function de({render:e,holdMs:t=ue,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 F=null,I=`http://www.w3.org/2000/svg`,L=de({render:Q}),R=null,z=new Map,B=new WeakMap,fe=`this issue`,V=se(()=>F),pe={spiking:`spiking`,regressed:`regressed`,worsened:`worsened`,new:`new`,quiet:`quiet`},H=[{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}],me=H.map(e=>e.track).join(` `),he=H.filter(e=>!e.isMagnitude).map(e=>e.phoneTrack).join(` `),ge=H.findIndex(e=>e.startsActionCluster)+1,U=3e4;function W(e){let t=x(`div`,e);return t.style.setProperty(`--radar-issue-grid`,me),t.style.setProperty(`--radar-issue-grid-phone`,he),t.style.setProperty(`--radar-issue-actions-start`,String(ge)),t}function G(e,t){let n=x(`span`,`radar-issue-magnitudes`),r=!1;for(let i of H){let a=t(i);i.isMagnitude?(r||=(e.append(n),!0),n.append(a)):e.append(a)}}function K(e){return Number.isFinite(e)?String(e):`0`}function _e(e){return typeof e!=`number`||!Number.isFinite(e)||e<=0?``:`elapsed ${M(Date.now()-e)}`}function q(e){return typeof e?.issueId==`string`?e.issueId:``}function J(e,t){return[String(e??``),String(t??``)].join(`::`)}function ve(e,t,n){let r=z.get(J(e,t));if(!r||!r.copy.isConnected)return!1;let i=u(n);return i?(r.summary||(r.summary=x(`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 ye(e,t,n){let r=q(e);if(!r)return;R?.dialog.close();let i=le({issueTitle:String(e.title||r),projectLabel:n,onOpenReport:()=>X(e)});R={projectId:String(t??``),issueId:r,dialog:i},i.update(g(e))}function Y(){if(!R)return;if(!R.dialog.isOpen()){R=null;return}let e=h(D().latest,R.projectId,R.issueId);e&&R.dialog.update(g(e))}function X(e){let t=q(e);t&&T(`get-radar-report`,{issueId:t},{timeoutMs:O}).then(n=>{n.ok?n.found?P({issueId:t,issueTitle:String(e.title??``),format:String(n.format??``),content:String(n.content||``)}):P({issueId:t,issueTitle:String(e.title??``),message:String(n.message||`Report not found`)}):P({issueId:t,issueTitle:String(e.title??``),error:String(n.error||`Could not read report`)})}).catch(n=>{P({issueId:t,issueTitle:String(e.title??``),error:j(n,O)})})}function be(){let e=x(`div`,`radar-issue-actions`),t=x(`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=x(`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)=>{L.begin(e),o(!0),i(),A(t,`busy`,a);let l=(n,r)=>{o(!1),i(),A(t,n,r),L.settle(e)};T(n,r,{timeoutMs:U}).then(e=>{e.ok?(l(`ok`,s(e)),c&&c(e)):l(`error`,String(e.error||`Request failed`))}).catch(e=>l(`error`,j(e,U)))},showFollowUp:a,wrap:e}}function xe(e){let t=x(`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(),Ve(e)}),t}function Se(e,t,n){let{addButton:r,request:i,showFollowUp:a,wrap:o}=be(),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`,()=>ye(e,t,n)),!e.inFlight&&e.verdict&&q(e)&&r(`Open report`,`Open the investigation report for this issue`,()=>X(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`&&D().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`,()=>{E({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 Ce(e){return ce()?fe:e}function we(e){let t=B.get(e);t&&(e.title=t())}function Te(){if(F)for(let e of F.querySelectorAll(`.radar-issue-reportable`))we(e)}oe(Te);function Ee(e,t,n){e.classList.add(`radar-issue-reportable`),B.set(e,t),we(e),e.addEventListener(`click`,e=>{e.target instanceof Element&&(e.target.closest(`a, button`)||n())})}function De(n,a,o){let l=x(`div`,`radar-issue`);l.dataset.severity=c(n.change);let d=x(`span`,`radar-stripe`);d.setAttribute(`aria-hidden`,`true`);let ee=x(`span`,`radar-change`,pe[n.change??``]||String(n.change||`unknown`)),f=y(`radar-issue-title`,String(n.title||`Untitled issue`),n.url,String(n.title||``)),p=x(`span`,`radar-metric`);p.append(x(`span`,`radar-metric-value`,K(n.occurrences)),x(`span`,`radar-metric-label`,`occ`));let m=x(`span`,`radar-metric`);m.append(x(`span`,`radar-metric-value`,K(n.users)),x(`span`,`radar-metric-label`,`users`));let h=e(n.history),g=t(h,64,16),_=g?document.createElementNS(I,`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(I,`title`);e.textContent=te(h);let t=document.createElementNS(I,`polyline`);t.setAttribute(`points`,g),_.append(e,t)}let v=u(n),b=x(`span`,`radar-issue-copy`);b.append(f);let S=null;v&&(S=x(`span`,`radar-issue-summary`),S.textContent=v,b.append(S)),z.set(J(a,n.issueId),{copy:b,summary:S});let C=x(`span`,`radar-issue-meta`),w=i(n);if(w!==null){let e=x(`span`,`radar-issue-seen`);e.title=new Date(w).toLocaleString(),V.track(e,w,N),C.append(e)}let T=r(n);T&&C.append(x(`span`,`radar-issue-status`,T));let E=String(n.title||n.issueId);if(n.inFlight){let e=x(`span`,`radar-verdict`,`investigating`);e.dataset.verdict=`INVESTIGATING`,C.append(e);let t=typeof n.startedAt==`number`?n.startedAt:null;if(t!==null&&Number.isFinite(t)&&t>0){let e=x(`span`,`radar-issue-elapsed`);V.track(e,t,_e),C.append(e)}q(n)&&Ee(l,()=>`Watch the investigation of ${Ce(E)}`,()=>ye(n,a,o))}if(!n.inFlight&&n.verdict){let e=x(`span`,`radar-verdict`,s(n.verdict));e.dataset.verdict=n.verdict,C.append(e),q(n)&&Ee(l,()=>`View investigation report for ${Ce(E)}`,()=>X(n))}C.childElementCount>0&&b.append(C);let D=x(`span`,`radar-issue-trend`);_&&D.append(_);let O=ne(h);if(O){let e=O.direction===`up`?`+`:O.direction===`down`?`-`:`=`,t=x(`span`,`radar-delta`,`${e}${O.percent}%`);t.dataset.direction=O.direction,D.append(t)}let k={stripe:d,change:ee,copy:b,occurrences:p,users:m,trend:D};return G(l,e=>k[e.columnId]),q(n)&&l.append(Se(n,a,o)),l}var Z=(e,t,n)=>C(`radar`,e,t,n);function Oe(e){return e.error?`poll failed: ${e.error}`:e.staleMs>0?`stale ${M(e.staleMs)}`:``}function ke(e,t,{showHost:n,nameTag:r,nameClass:i,hostClass:a}){let o=x(r,i,l(t));o.title=String(t.name||``),e.append(o);let s=n?ee(t.host):``;s&&e.append(x(`span`,a,s))}function Ae(){let e=W(`radar-column-heads`);for(let t of H){if(!t.headText){e.append(x(`span`));continue}let n=x(`span`,`radar-column-head`,t.headText);n.dataset.column=t.columnId,e.append(n)}return e}function je(e,t){let n=e.project,r=x(`div`,`radar-project`),i=v(n.issues),a=o(i),s=x(`div`,`radar-project-head`);ke(s,n,{showHost:t,nameTag:`h3`,nameClass:`radar-project-name`,hostClass:`radar-project-host`}),r.append(s);let c=x(`div`,`radar-project-summary`);c.append(Z(a.active===1?`active issue`:`active issues`,K(a.active))),c.append(Z(`spiking`,K(a.spiking),a.spiking>0?`crit`:null)),c.append(Z(`needs you`,K(a.needsHuman),a.needsHuman>0?`warn`:null));let u=Oe(e);if(u){let t=x(`span`,`radar-project-alert`,u);t.dataset.tone=e.error?`crit`:`warn`,c.append(t)}if(r.append(c),i.length===0)return r;r.append(Ae());let d=W(`radar-issues`);for(let e of i)d.append(De(e,n.projectId,l(n)));return r.append(d),r}function Me(e,t){let n=e.project,r=x(`div`,`radar-quiet-row`),i=x(`span`,`radar-quiet-dot`);return i.setAttribute(`aria-hidden`,`true`),r.append(i),ke(r,n,{showHost:t,nameTag:`span`,nameClass:`radar-quiet-name`,hostClass:`radar-quiet-host`}),r.append(x(`span`,`radar-quiet-count`,`0 issues`)),r}var Ne=(e,t)=>b(`radar`,e,t);function Pe(){let e=x(`div`,`radar-issue`);return e.dataset.skeleton=``,G(e,e=>x(`span`,e.cellClass)),e}function Fe(){let e=W(`radar-issues`);e.setAttribute(`aria-busy`,`true`),e.setAttribute(`aria-label`,`Loading issues`);for(let t=0;t<5;t+=1)e.append(Pe());return e}function Ie(e){return e?.configured===!1?typeof e.reason==`string`&&e.reason.trim()!==``?`Fix it in`:`Switch it on in`:``}function Le(e,t=`ready`){let n=Ne(`Errors`);if(t===`pending`)return n.append(Fe()),n;if(t===`placeholder`||e.length===0){let e=x(`p`,`radar-unconfigured`,a(D().latest)),t=ae(`lanes-posthog`,`posthog-enabled`,`PostHog settings`),r=Ie(D().latest);return e.append(document.createTextNode(r?` ${r} `:` `),t),n.append(e),n}let r=x(`div`,`radar-global-tick`),i=Number(D().latest?.intervalMinutes);V.track(r,D().latest?.ts,e=>{let t=`polled ${N(e)}`;return!Number.isFinite(i)||i<=0?t:`${t}, every ${i}m`}),n.append(r);let o=i>0?i*6e4:0,{loud:s,quiet:c}=m(e,Date.now(),{intervalMs:o}),l=f(e);for(let e of s)n.append(je(e,l));if(c.length===0)return n;let u=x(`div`,`radar-quiet`);for(let e of c)u.append(Me(e,l));return n.append(u),n}function Re(e){let{addButton:t,request:n,wrap:r}=be();return e.issueId&&t(`Open report`,`Open the investigation report for this issue`,()=>{X({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`,()=>ie(e.id))}),r}function ze(e){let t=x(`div`,`radar-investigation`),n=x(`span`,`radar-verdict`,s(e.verdict));n.dataset.verdict=e.verdict;let r=y(`radar-issue-title`,e.title,e.url),i=x(`span`,`radar-issue-copy`);if(i.append(r),e.summaryLine){let t=x(`span`,`radar-issue-summary`);t.textContent=e.summaryLine,i.append(t)}if(e.prUrl){let t=x(`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=x(`span`,`radar-verdict`,`fix`);e.dataset.mode=`fix`,t.append(e)}if(t.append(i),e.projectLabel){let n=x(`span`,`radar-investigation-project`);n.textContent=e.projectLabel,t.append(n)}if(e.at>0){let n=x(`span`,`radar-investigation-time`,N(e.at));n.title=new Date(e.at).toLocaleString(),t.append(n)}return t.append(Re(e)),t}function Be(e){let t=Ne(`Investigations`,`completed, not yet archived`),n=x(`div`,`radar-investigations`);for(let t of e)n.append(ze(t));return t.append(n),t}function Ve(e){D().traceOpener?.(e)}function Q(){if(!F)return;F.textContent=``,z.clear(),V.reset();let{latest:e,archivedLocally:t}=D(),r=S(e),i=n(e,t),a=d(e,r.length);F.append(Le(r,a)),i.length>0&&F.append(Be(i))}function $(){L.request()}function He(e){R?.dialog.isOpen()&&p(R,e)&&R.dialog.update(_(e))}function Ue(e){if(e.kind===`status`)$(),Y();else if(e.kind===`investigation-activity`){Y();let t=h(D().latest,e.projectId,e.issueId);if(e.wasInFlight&&ve(e.projectId,e.issueId,t))return;$()}else e.isPatched?(Y(),$()):He(e.frame)}function We(e){if(F)return;let t=x(`div`,`radar-content`);e.appendChild(t),F=t,k(()=>!w(F)),re(Ue),V.ensure(),Q()}var Ge={mount:We};export{Ge as view};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Q as e}from"./updates-view-core-BYoMfzXj.js";import{C as t,E as n,o as r}from"./dom-helpers-C7P3_59O.js";import{d as i}from"./control-ws-DUGWJI0x.js";import{o as a}from"./card-registry-DITW3gYA.js";import{a as o,n as s}from"./modal-Bh-cVr-I.js";import{Ar as c,Fr as l,Ir as u,Pr as d,Rr as f,zr as p}from"./index-
|
|
1
|
+
import{Q as e}from"./updates-view-core-BYoMfzXj.js";import{C as t,E as n,o as r}from"./dom-helpers-C7P3_59O.js";import{d as i}from"./control-ws-DUGWJI0x.js";import{o as a}from"./card-registry-DITW3gYA.js";import{a as o,n as s}from"./modal-Bh-cVr-I.js";import{Ar as c,Fr as l,Ir as u,Pr as d,Rr as f,zr as p}from"./index-BZbBg0oU.js";function m(e,t){return t===n.RUNNING?e===`restart-fresh`?{title:`Restart fresh`,message:`This agent is mid-turn. A fresh restart ends this conversation and starts a new one. Restart anyway?`,confirmLabel:`Restart fresh`,danger:!0}:e===`restart-into`?{title:`Restart`,message:`This agent is mid-turn. Restarting interrupts the current turn and switches to the earlier conversation you picked. Restart anyway?`,confirmLabel:`Restart`,danger:!0}:{title:`Restart`,message:`This agent is mid-turn. Restarting interrupts the current turn and keeps this conversation. Restart anyway?`,confirmLabel:`Restart`,danger:!1}:null}function h(e,n,r,i){let a=t.includes(n)?`force-restart`:`restart`;return e===`restart-fresh`?{type:a,id:r,fresh:!0}:e===`restart-into`?{type:a,id:r,conversationId:i}:{type:a,id:r}}function g(e,t,n,r=``){let i=()=>n.send(h(e,n.readState(),t,r)),a=m(e,n.readState());a?n.confirm({...a,onConfirm:i}):i()}var _=`DORMANT`;function v(t){return t?e(Date.now()-t,{rounding:`round`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:60}):``}function y(e){return[e.worktreeName,e.gitBranch?e.gitBranch.replace(/^refs\/heads\//,``):null,v(e.mtime)].filter(Boolean).join(` · `)}function b(e,t){let n=r(`button`,`resume-item`);return n.type=`button`,n.setAttribute(`role`,`option`),n.setAttribute(`aria-selected`,`false`),n.innerHTML=`<span class="resume-item-title">${d(e)}</span><span class="resume-item-meta">${d(t)}</span>`,n}async function x(e,t,n){if(t.kind===`this`)return!0;let r=t.kind===`earlier`?t.conversationId:``,i=await p(`resume-conversation`,{id:e,conversationId:r},n);return i?i.type===`resume-conversation-ack`&&i.ok?!0:(n.show(`error`,i.type===`error`?i.message:`The conversation was not changed.`),!1):!1}var S={this:`restart`,fresh:`restart-fresh`,earlier:`restart-into`};function C(e,t,n,r){let i=n.kind===`earlier`?n.conversationId:``;g(S[n.kind],t,{readState:r,send:t=>{c(e,t)},confirm:o},i)}function w(e,{readState:t,canListEarlier:n}){let{overlay:o,dialog:d,close:p,actions:m,btnCancel:h}=s({title:`Restart`,dialogClass:`dialog resume-dialog`}),g=r(`p`,`dialog-message`,n?`Restart into this conversation, a fresh one, or an earlier one from this repo (any worktree).`:`Restart into this conversation or a fresh one.`),v=r(`div`,`resume-list`);v.setAttribute(`role`,`listbox`),v.setAttribute(`aria-label`,`Conversation to restart into`);let S=r(`button`,`btn-dialog btn-dialog-confirm`,`Restart`);S.type=`button`,m.append(S);let w=u(`dialog-error`);d.append(g,v,w.element,m);let T={kind:`this`};function E(e,t){for(let e of v.querySelectorAll(`.resume-item`))e.classList.remove(`resume-item-current`),e.setAttribute(`aria-selected`,`false`);e.classList.add(`resume-item-current`),e.setAttribute(`aria-selected`,`true`),T=t}function D(e,t,n){let r=b(t,n);return r.addEventListener(`click`,()=>E(r,e)),v.append(r),r}E(D({kind:`this`},`This conversation`,`Keeps the current conversation`),{kind:`this`}),D({kind:`fresh`},`Fresh conversation`,`Ends this conversation and starts a new one`);async function O(t,n){d.dataset.applying=``;let r=await x(e,n,w);delete d.dataset.applying,r&&(p(),c(t,{type:`start-session`,id:e}))}function k(){if(d.dataset.applying!==void 0)return;let n=a.get(e);n?t()===_?O(n,T):(p(),C(n,e,T,t)):p()}if(h.addEventListener(`click`,p),S.addEventListener(`click`,k),requestAnimationFrame(()=>S.focus()),!n)return;let A=r(`div`,`resume-empty`,`Loading earlier conversations...`);v.append(A),i(`list-conversations`,{id:e},{timeoutMs:l}).then(e=>{if(!o.isConnected)return;if(e.error){A.textContent=`Could not list earlier conversations: ${e.error}`;return}let t=e.type===`conversations`?e.current??null:null,n=(e.type===`conversations`?e.conversations:[]).filter(e=>e.id!==t);if(n.length===0)A.textContent=`No earlier conversations found for this repo.`;else{A.remove();for(let e of n)D({kind:`earlier`,conversationId:e.id},e.title||e.id,y(e))}}).catch(e=>{o.isConnected&&(A.textContent=`Could not list earlier conversations: ${f(e,l)}`)})}export{w as openRestartDialog};
|
|
Binary file
|
package/dist/client/assets/{review-queue-panel-sogJ-wbx.js → review-queue-panel-Cb-Gc14b.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Bt as e,Ft as t,It as n,Rt as r,Vt as i,b as a,n as o,x as s}from"./updates-view-core-BYoMfzXj.js";import{a as c,c as l,d as u,i as d,o as f,u as p}from"./dom-helpers-C7P3_59O.js";import{r as m,u as h}from"./control-ws-DUGWJI0x.js";import{i as ee}from"./modal-Bh-cVr-I.js";import{$ as te,At as g,Bt as _,Ct as v,Er as y,Et as b,Ft as x,Gr as S,Ii as ne,It as re,Kn as ie,Lr as C,Lt as w,Mt as T,Nt as E,Ot as ae,Pt as oe,Q as se,Rt as ce,St as le,Wr as ue,Yn as de,_ as fe,_t as pe,at as me,bt as he,ct as ge,dt as _e,en as ve,et as ye,ft as be,gt as xe,ht as Se,it as Ce,jt as we,kt as Te,lt as Ee,m as De,mn as Oe,mt as ke,nt as Ae,ot as je,p as Me,pn as Ne,pt as Pe,rt as Fe,st as Ie,tn as Le,tt as Re,ut as ze,vt as Be,wt as Ve,xt as He,yt as Ue,zt as We}from"./index-
|
|
1
|
+
import{Bt as e,Ft as t,It as n,Rt as r,Vt as i,b as a,n as o,x as s}from"./updates-view-core-BYoMfzXj.js";import{a as c,c as l,d as u,i as d,o as f,u as p}from"./dom-helpers-C7P3_59O.js";import{r as m,u as h}from"./control-ws-DUGWJI0x.js";import{i as ee}from"./modal-Bh-cVr-I.js";import{$ as te,At as g,Bt as _,Ct as v,Er as y,Et as b,Ft as x,Gr as S,Ii as ne,It as re,Kn as ie,Lr as C,Lt as w,Mt as T,Nt as E,Ot as ae,Pt as oe,Q as se,Rt as ce,St as le,Wr as ue,Yn as de,_ as fe,_t as pe,at as me,bt as he,ct as ge,dt as _e,en as ve,et as ye,ft as be,gt as xe,ht as Se,it as Ce,jt as we,kt as Te,lt as Ee,m as De,mn as Oe,mt as ke,nt as Ae,ot as je,p as Me,pn as Ne,pt as Pe,rt as Fe,st as Ie,tn as Le,tt as Re,ut as ze,vt as Be,wt as Ve,xt as He,yt as Ue,zt as We}from"./index-BZbBg0oU.js";import{a as Ge,c as Ke,d as qe,l as Je,n as Ye,o as Xe,s as Ze,t as Qe,u as $e}from"./pr-scope-tabs-Bi61oEp_.js";var et=`> [!NOTE]
|
|
2
2
|
> Automated review. Not written by a human.`,tt=`> [!NOTE]
|
|
3
3
|
> Automated review by [Glimmervoid](https://glimmervoid.dev). Not written by a human.`,nt=`> [!NOTE]
|
|
4
4
|
> Automated review by [Glimmervoid](https://glimmervoid.dev), not written by a human. Approved by hand after checking it.`,rt=n.options.join(`|`),it=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${rt})\*\*`;function at(e){return[...e.matchAll(new RegExp(it,`g`))].flatMap(e=>{let t=n.safeParse(e[2]);return t.success?[t.data]:[]})}function ot(e){let t=new RegExp(String.raw`^${it}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let r=n.safeParse(t[2]);return r.success?{reviewer:t[1]??null,severity:r.data,length:t[0].length}:null}function st(e){let t=e.trimStart(),n=[et,tt,nt].find(e=>t.startsWith(e));return n?t.slice(n.length).trim():e.trim()}var ct=`(line not in the diff)`,lt=String.raw`- ${it}`,ut=String.raw`\*\*\x60([^\x60\n]+)\x60\*\* ${ct.replace(/[()]/g,`\\$&`)}`,dt=new RegExp(String.raw`^(?:${lt}|${ut})`,`gm`),ft=new RegExp(String.raw`^${lt}\s*(?:\x60([^\x60\n]+)\x60:\s*)?`),pt=new RegExp(String.raw`^${ut}\s*`);function mt(e){return n.options.find(t=>e.includes(t))??null}function ht(e){let t=ft.exec(e);if(t)return{severity:n.parse(t[2]),location:t[3]??null,body:e.slice(t[0].length).trim(),markdown:e};let r=pt.exec(e),i=r?e.slice(r[0].length).trim():e;return{severity:mt(at(i)),location:r?.[1]??null,body:i,markdown:e}}function gt(e){let t=st(e),n=t.search(dt);return(n===-1?t:t.slice(0,n)).trim()}function _t(e){let t=st(e),n=[...t.matchAll(dt)].map(e=>e.index);return n.map((e,r)=>t.slice(e,n[r+1]).trim()).filter(Boolean).map(ht)}var vt={"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`},yt={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`}},bt={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 xt(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?bt[t.state]:null;if(!t)return yt[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?yt[e.postedEvent]:bt[t.state]}var St={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function Ct(e){let{reason:t}=we(e),n=St[t];return n?{text:vt[t],icon:n}:null}function wt(e){return Ct(e)?.text??null}var Tt={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`}};function Et(e,t){let n=wt(t);return n?`${e}, ${n}`:e}function Dt(t){if(e(t))return!0;let n=(t.githubReviews??[]).filter(e=>e.isViewer);return n.length===0||n.some(e=>e.commit===T(t))}var Ot={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function kt(e,t){if(e.prStage)return{tone:_(e.prStage),icon:ce(e.prStage),meaning:We(e.prStage)};let n=Tt[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:Et(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:Et(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=Dt(e)?xt(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=xt(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=Ct(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&x(e)?Ot:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function At(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 jt(e){return`${e} ${e===1?`comment`:`comments`}`}function Mt(e,t,n){let r=[`${w(e.repo,e.number)}: ${e.title}`],a=`reviewedHead`in e?e.assessment?.goal.trim():``;if(a&&r.push(a),r.push(kt(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(`
|
|
Binary file
|