glimmervoid 0.46.2-next.145 → 0.46.2-next.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/bin/glimmervoid.js +1 -1
  2. package/dist/chunks/{adapters-CPgK2P8p.js → adapters-B411QZPa.js} +16 -7
  3. package/dist/chunks/{adapters-DgiNl-zf.js → adapters-Dy_a5IJ0.js} +1 -1
  4. package/dist/chunks/{main-BlPPfUFv.js → main-BzRuLm8p.js} +7 -2
  5. package/dist/client/assets/{alert-sound-Dm-244cv.js → alert-sound-a-r-xMzC.js} +1 -1
  6. package/dist/client/assets/alert-sound-a-r-xMzC.js.br +0 -0
  7. package/dist/client/assets/{benchmark-panel-BZlXhHGv.js → benchmark-panel-CEdfPEgm.js} +1 -1
  8. package/dist/client/assets/benchmark-panel-CEdfPEgm.js.br +0 -0
  9. package/dist/client/assets/{celebration-player-BV_GJUKl.js → celebration-player-C3ub9M-X.js} +1 -1
  10. package/dist/client/assets/celebration-player-C3ub9M-X.js.br +0 -0
  11. package/dist/client/assets/{dialogs-d151Audo.js → dialogs-BZSGSCHb.js} +1 -1
  12. package/dist/client/assets/dialogs-BZSGSCHb.js.br +0 -0
  13. package/dist/client/assets/{doc-editor-ui-Du6nJGIm.js → doc-editor-ui-BFGY3Mip.js} +1 -1
  14. package/dist/client/assets/doc-editor-ui-BFGY3Mip.js.br +0 -0
  15. package/dist/client/assets/{first-run-checklist-D_a7Qoqh.js → first-run-checklist-j-DNxANV.js} +1 -1
  16. package/dist/client/assets/first-run-checklist-j-DNxANV.js.br +0 -0
  17. package/dist/client/assets/{hooks-panel-DN16aMgB.js → hooks-panel-esfJMItp.js} +1 -1
  18. package/dist/client/assets/hooks-panel-esfJMItp.js.br +0 -0
  19. package/dist/client/assets/{index-RCLTDjng.js → index-6j_Ukqob.js} +5 -5
  20. package/dist/client/assets/index-6j_Ukqob.js.br +0 -0
  21. package/dist/client/assets/index-DHKDKpp8.css +2 -0
  22. package/dist/client/assets/index-DHKDKpp8.css.br +0 -0
  23. package/dist/client/assets/{issues-panel-C1QPwxCn.js → issues-panel-CGFsmQwr.js} +1 -1
  24. package/dist/client/assets/issues-panel-CGFsmQwr.js.br +0 -0
  25. package/dist/client/assets/{nyan-cat-B_n_EfVU.js → nyan-cat-DhAjaQ--.js} +1 -1
  26. package/dist/client/assets/nyan-cat-DhAjaQ--.js.br +0 -0
  27. package/dist/client/assets/{phone-shell-B4AxrgMb.js → phone-shell-DLbSnQpc.js} +1 -1
  28. package/dist/client/assets/phone-shell-DLbSnQpc.js.br +0 -0
  29. package/dist/client/assets/{plan-face-BR7cZDnd.js → plan-face-Dskopzga.js} +1 -1
  30. package/dist/client/assets/plan-face-Dskopzga.js.br +0 -0
  31. package/dist/client/assets/{plan-render-sDj7Q2xf.js → plan-render-C85979_d.js} +1 -1
  32. package/dist/client/assets/plan-render-C85979_d.js.br +0 -0
  33. package/dist/client/assets/{pr-scope-tabs-CEoZ8gsu.js → pr-scope-tabs-OBz-ZcBj.js} +1 -1
  34. package/dist/client/assets/pr-scope-tabs-OBz-ZcBj.js.br +0 -0
  35. package/dist/client/assets/{radar-panel-53G-Lvqb.js → radar-panel-ZX8G9OCD.js} +1 -1
  36. package/dist/client/assets/radar-panel-ZX8G9OCD.js.br +0 -0
  37. package/dist/client/assets/{resume-dialog-DTN7BD6i.js → resume-dialog-Zw1UXc7g.js} +1 -1
  38. package/dist/client/assets/resume-dialog-Zw1UXc7g.js.br +0 -0
  39. package/dist/client/assets/review-queue-panel-O6IBmve5.css +1 -0
  40. package/dist/client/assets/review-queue-panel-O6IBmve5.css.br +0 -0
  41. package/dist/client/assets/review-queue-panel-sogJ-wbx.js +10 -0
  42. package/dist/client/assets/review-queue-panel-sogJ-wbx.js.br +0 -0
  43. package/dist/client/assets/{settings-panel-CnGAIi42.js → settings-panel-chP3FMVF.js} +2 -2
  44. package/dist/client/assets/settings-panel-chP3FMVF.js.br +0 -0
  45. package/dist/client/assets/{shown-lightbox-CRje8MBA.js → shown-lightbox-D3coKoM9.js} +1 -1
  46. package/dist/client/assets/shown-lightbox-D3coKoM9.js.br +0 -0
  47. package/dist/client/assets/{trace-panel-8sP1KvjA.js → trace-panel-fzO0o4nU.js} +1 -1
  48. package/dist/client/assets/trace-panel-fzO0o4nU.js.br +0 -0
  49. package/dist/client/assets/{usage-panel-DGXsQr_W.js → usage-panel-DS4fp99z.js} +1 -1
  50. package/dist/client/assets/usage-panel-DS4fp99z.js.br +0 -0
  51. package/dist/client/assets/{visions-panel-x4UaVr_9.js → visions-panel-O9dWuSmt.js} +1 -1
  52. package/dist/client/assets/visions-panel-O9dWuSmt.js.br +0 -0
  53. package/dist/client/index.html +2 -2
  54. package/dist/client/index.html.br +0 -0
  55. package/dist/server/index.js +1 -1
  56. package/package.json +1 -1
  57. package/dist/client/assets/alert-sound-Dm-244cv.js.br +0 -0
  58. package/dist/client/assets/benchmark-panel-BZlXhHGv.js.br +0 -0
  59. package/dist/client/assets/celebration-player-BV_GJUKl.js.br +0 -0
  60. package/dist/client/assets/dialogs-d151Audo.js.br +0 -0
  61. package/dist/client/assets/doc-editor-ui-Du6nJGIm.js.br +0 -0
  62. package/dist/client/assets/first-run-checklist-D_a7Qoqh.js.br +0 -0
  63. package/dist/client/assets/hooks-panel-DN16aMgB.js.br +0 -0
  64. package/dist/client/assets/index-CFgGsY9k.css +0 -2
  65. package/dist/client/assets/index-CFgGsY9k.css.br +0 -0
  66. package/dist/client/assets/index-RCLTDjng.js.br +0 -0
  67. package/dist/client/assets/issues-panel-C1QPwxCn.js.br +0 -0
  68. package/dist/client/assets/nyan-cat-B_n_EfVU.js.br +0 -0
  69. package/dist/client/assets/phone-shell-B4AxrgMb.js.br +0 -0
  70. package/dist/client/assets/plan-face-BR7cZDnd.js.br +0 -0
  71. package/dist/client/assets/plan-render-sDj7Q2xf.js.br +0 -0
  72. package/dist/client/assets/pr-scope-tabs-CEoZ8gsu.js.br +0 -0
  73. package/dist/client/assets/radar-panel-53G-Lvqb.js.br +0 -0
  74. package/dist/client/assets/resume-dialog-DTN7BD6i.js.br +0 -0
  75. package/dist/client/assets/review-queue-panel-1YK_r8cJ.js +0 -10
  76. package/dist/client/assets/review-queue-panel-1YK_r8cJ.js.br +0 -0
  77. package/dist/client/assets/review-queue-panel-Dfky79CM.css +0 -1
  78. package/dist/client/assets/review-queue-panel-Dfky79CM.css.br +0 -0
  79. package/dist/client/assets/settings-panel-CnGAIi42.js.br +0 -0
  80. package/dist/client/assets/shown-lightbox-CRje8MBA.js.br +0 -0
  81. package/dist/client/assets/trace-panel-8sP1KvjA.js.br +0 -0
  82. package/dist/client/assets/usage-panel-DGXsQr_W.js.br +0 -0
  83. package/dist/client/assets/visions-panel-x4UaVr_9.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-RCLTDjng.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-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,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-RCLTDjng.js";import{a as re,i as ie,n as ae,r as oe,t as se}from"./plan-render-sDj7Q2xf.js";var d=2e3,f=3;function ce(e){return e.replace(/\r\n?/g,`
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-6j_Ukqob.js";import{a as re,i as ie,n as ae,r as oe,t as se}from"./plan-render-C85979_d.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};
@@ -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-RCLTDjng.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(`
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-6j_Ukqob.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};
@@ -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-RCLTDjng.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-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 +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-RCLTDjng.js";import{createInvestigationDialog as le,createRadarReportDialog as P}from"./dialogs-d151Audo.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-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 +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-RCLTDjng.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};
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-6j_Ukqob.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};
@@ -0,0 +1 @@
1
+ @layer components{.my-pr-note{color:var(--text-dim);margin:0;padding:8px 14px;font-size:12px}.pr-thread-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);gap:8px;padding:12px}.pr-thread-heading{justify-content:space-between}.pr-thread-chip{color:var(--text-muted);border:1px solid;border-radius:2px;flex:none;padding:2px 6px;font-size:10px;font-weight:700}.pr-thread-chip[data-tone=ok]{color:var(--state-complete)}.pr-thread-chip[data-tone=warn]{color:var(--state-waiting)}.pr-thread-message{min-width:0;color:var(--text-head)}.pr-thread-message-muted{color:var(--text-dim)}.pr-thread-body{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.55}.pr-thread-preview{-webkit-line-clamp:8;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.pr-thread-message-muted .pr-thread-preview{-webkit-line-clamp:3}.pr-thread-message:has(.pr-thread-disclosure[open])>.pr-thread-preview{display:none}.pr-thread-expand{width:fit-content;color:var(--text-dim);cursor:pointer;padding:4px 0;font-size:11px}@media (hover:hover){.pr-thread-expand:hover{color:var(--text-head)}}.pr-thread-expand:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pr-thread-expand:active{color:var(--accent)}.pr-thread-disclosure .pr-thread-continues{color:var(--text-dim);margin-top:4px;font-size:11px;font-weight:400;display:inline-block}.pr-thread-footer{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.pr-content{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.pr-team-chip>span:last-child{text-overflow:ellipsis;overflow:hidden}.review-group-heading{align-items:center;gap:8px;display:flex}.review-group-toggle{appearance:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;padding:0}.review-group-chevron{margin-right:6px;transition:transform .12s ease-out;display:inline-block}.review-group-toggle[aria-expanded=true] .review-group-chevron{transform:rotate(90deg)}.review-group-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.review-group-count{color:var(--text-muted);font-weight:400}.review-team-chip-slot{display:contents}.review-queue-phone-bar{display:none}@media (prefers-reduced-motion:reduce){.review-group-chevron{transition:none}}.pr-caught-up{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);flex-direction:column;gap:4px;margin:4px 14px 12px;padding:10px 12px;display:flex}.pr-caught-up-title{color:var(--state-complete);align-items:center;gap:8px;font-size:12px;display:flex}.pr-caught-up-detail{color:var(--text-dim);font-size:11px}.pr-phase-label{color:var(--accent);white-space:nowrap}.pr-viewer-threads[data-state=all-resolved]{color:var(--state-waiting)}.pr-viewer-threads{color:var(--text-muted);letter-spacing:.02em;font-size:12px;line-height:1.55}.pr-verdict-seal{color:var(--accent);white-space:nowrap;letter-spacing:.04em;align-items:center;gap:6px;font-size:14px;font-weight:700;display:inline-flex}.pr-verdict-seal[data-tone=ok]{color:var(--state-complete)}.pr-verdict-seal[data-tone=warn]{color:var(--state-waiting)}.pr-verdict-seal[data-tone=crit]{color:var(--state-failed)}.pr-verdict-seal svg{flex:none}.pr-rereview-notice{color:var(--text-dim);font-size:12px;line-height:1.6}.pr-severity-meter{align-items:center;gap:2px;display:inline-flex}.pr-severity-meter svg{flex:none}.pr-severity-halo{filter:drop-shadow(0 0 4px var(--state-failed))}.pr-detail-team{container:review-detail/inline-size}.pr-desk-column,.pr-desk-rail{flex-direction:column;gap:20px;min-width:0;display:flex}.pr-will-post,.pr-desk-facts{border:1px solid var(--border-dim);border-radius:var(--radius);background:var(--bg-card);flex-direction:column;gap:8px;padding:14px 16px;display:flex}.pr-will-post-event{color:var(--text-head);font-size:14px}.pr-will-post-detail{color:var(--text-dim);font-size:12px;line-height:1.5}.pr-will-post>.pr-note{margin-top:4px}.pr-fact-list{flex-direction:column;gap:6px;margin:0;font-size:12px;display:flex}.pr-fact{grid-template-columns:7.5em minmax(0,1fr);gap:8px;display:grid}.pr-fact>dt{color:var(--text-muted)}.pr-fact>dd{color:var(--text);overflow-wrap:anywhere;margin:0}.pr-verdict-recommendation{color:var(--text-head);font-size:12px}@container review-detail (width>=1100px){.pr-desk-rail{position:sticky;top:24px}}.pr-about-box,.pr-verdict-box,.pr-progress{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);flex-direction:column;gap:12px;padding:16px;display:flex}.pr-verdict-line{flex-wrap:wrap;align-items:center;gap:12px 20px;display:flex}.pr-verdict-summary{color:var(--text);overflow-wrap:anywhere;font-size:12px;line-height:1.6}.pr-about-goal,.pr-verdict-reason{color:var(--text-head)}.pr-verdict-legacy{color:var(--text-dim);font-size:12px}.pr-verdict-gaps li::marker{color:var(--state-waiting)}.pr-hand-checks{border:1px solid var(--state-waiting);border-radius:var(--radius);background:var(--bg-card);flex-direction:column;gap:8px;padding:12px 16px;font-size:12px;display:flex}.pr-hand-checks li::marker{color:var(--state-waiting)}.pr-verdict-checked{color:var(--text-dim);font-size:12px}.pr-verdict-checked>summary{cursor:pointer;color:var(--text-muted)}.pr-verdict-checked>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.pr-verdict-checked>.pr-assessment-list{color:var(--text-dim);margin-top:8px}.pr-note{flex-direction:column;gap:8px;display:flex}.pr-decision-spacer{flex:1}.pr-assessment-title{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.pr-assessment-list{color:var(--text);overflow-wrap:anywhere;flex-direction:column;gap:6px;padding-left:18px;font-size:12px;line-height:1.6;list-style:outside;display:flex}.pr-assessment-list li::marker{color:var(--text-muted)}.pr-posts{flex-direction:column;gap:12px;display:flex}.pr-posts-heading{flex-wrap:wrap;align-items:baseline;gap:4px 12px;display:flex}.pr-posts-heading h3,.pr-steps h3{padding:0}.pr-posts-heading>span{color:var(--text-muted);font-size:11px}.pr-finding-keys{margin-left:auto}.pr-finding-keys>.review-shortcut:first-child{margin-left:0}.pr-disclosure{border:1px solid var(--border-dim);border-radius:var(--radius);background:var(--bg-card);min-width:0;padding:12px 14px}.pr-disclosure-summary,.pr-comment-header{cursor:pointer;list-style:none}.pr-disclosure-summary::-webkit-details-marker{display:none}.pr-comment-header::-webkit-details-marker{display:none}.pr-disclosure-summary{align-items:center;gap:10px;min-width:0;font-size:12px;display:flex}.pr-disclosure-summary:before,.pr-comment-header:before{content:"";width:6px;height:6px;color:var(--text-dim);border-bottom:1.5px solid;border-right:1.5px solid;flex:none;transform:rotate(-45deg)}.pr-disclosure[open]>.pr-disclosure-summary:before,.pr-comment-content[open]>.pr-comment-header:before{transform:rotate(45deg)}.pr-disclosure-summary:focus-visible,.pr-comment-header:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.pr-disclosure-label{color:var(--text-head);flex:none;font-weight:700}.pr-disclosure-preview{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-dim);overflow:hidden}.pr-earlier-review-body{flex-direction:column;gap:10px;margin-top:12px;display:flex}.pr-earlier-review-body>.pr-comment-card{background:var(--bg-surface)}.pr-comment-card.pr-comment-card-readonly{grid-template-columns:minmax(0,1fr)}.pr-changed-since{color:var(--text-dim);font-size:12px;line-height:1.6}.pr-changed-since-link{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.pr-body-input{resize:vertical;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);width:100%;min-height:84px;color:var(--text-head);font:inherit;padding:10px 12px;font-size:12px;line-height:1.5}.pr-comment-card{border:1px solid var(--border-dim);border-radius:var(--radius);background:var(--bg-card);grid-template-columns:24px minmax(0,1fr);gap:10px;padding:14px 16px;display:grid}.pr-comment-card[data-included=false]{opacity:.55}.pr-comment-card[data-current=true]{border-color:var(--accent)}.pr-comment-card:has(>.pr-post-toggle){grid-template-columns:auto minmax(0,1fr)}.pr-post-toggle{border:1px solid var(--border);border-radius:var(--radius);align-self:start;display:inline-flex;overflow:hidden}.pr-post-choice{min-height:22px;color:var(--text-muted);font:700 11px/1 var(--font-mono);letter-spacing:.04em;cursor:pointer;background:0 0;border:0;padding:0 8px}.pr-post-choice+.pr-post-choice{border-left:1px solid var(--border)}.pr-post-choice[aria-pressed=true]{background:color-mix(in oklab, var(--accent) 16%, transparent);color:var(--accent)}.pr-comment-card[data-included=false] .pr-post-choice[aria-pressed=true]{background:var(--bg-surface);color:var(--text-head)}.pr-comment-content{min-width:0}.pr-comment-header{align-items:center;gap:8px;min-width:0;min-height:22px;font-size:12px;display:flex}.pr-comment-paragraphs{flex-direction:column;gap:10px;padding-top:12px;display:flex}.pr-comment-preview{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-dim);flex:1;overflow:hidden}.pr-comment-content[open]>.pr-comment-header>.pr-comment-preview{visibility:hidden}.pr-comment-location{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:30%;color:var(--text-head);flex:0 auto;overflow:hidden}.pr-comment-paragraph{color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.65}.pr-comment-paragraph code,.pr-verdict-box code{border-radius:var(--radius);background:var(--bg-surface);color:var(--text-head);padding:1px 5px;font-size:12px}.pr-citation{color:var(--text-dim);overflow-wrap:anywhere;font-size:11px}.pr-comment-code{border-radius:var(--radius);background:var(--bg-surface);min-width:0;max-width:100%;max-height:24em;color:var(--text);font:12px/1.5 var(--font-mono);margin:0;padding:10px 12px;overflow:auto}.pr-comment-code code{font:inherit}.pr-diff-excerpt{border-radius:var(--radius);background:var(--bg-surface);color:var(--text);font:12px/1.5 var(--font-mono);margin-top:10px;padding:6px 0;overflow-x:auto}.pr-diff-excerpt-number{text-align:right;color:var(--text-muted);-webkit-user-select:none;user-select:none;flex:0 0 3.5em;padding-right:6px}.pr-comment-lead{color:var(--accent)}.pr-comment-lead-question{color:var(--state-done);align-items:center;gap:5px;display:inline-flex}.pr-session-open{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.pr-progress-tracker{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;list-style:none;display:grid}.pr-progress-stage{color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;display:flex}.pr-progress-bar{background:var(--border-dim);border-radius:2px;height:3px;display:block}.pr-progress-stage[data-state=done]{color:var(--text)}.pr-progress-stage[data-state=done] .pr-progress-bar{background:var(--state-complete)}.pr-progress-stage[data-state=active]{color:var(--text-head);font-weight:700}.pr-progress-stage[data-state=active] .pr-progress-bar{background:var(--accent)}.pr-progress-text{color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:12px}.pr-steps{flex-direction:column;gap:10px;display:flex}.pr-step-list{flex-direction:column;gap:8px;list-style:none;display:flex}.pr-step{grid-template-columns:6ch 10ch minmax(0,1fr);align-items:baseline;gap:12px;font-size:12px;display:grid}.pr-step-at{color:var(--text-muted);font-variant-numeric:tabular-nums}.pr-step-tool{color:var(--accent);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pr-step-detail{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pr-attention-detail{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text);padding:16px;font-size:12px;line-height:1.6}html[data-layout=phone] .review-queue-phone-bar{z-index:2;border-bottom:1px solid var(--border-dim);background:var(--bg);align-items:center;gap:12px;padding:4px 16px;display:flex;position:sticky;top:0}html[data-layout=phone] .review-queue-position{color:var(--text-dim);font-size:12px}html[data-layout=phone] .pr-changed-since-link{align-items:center;min-height:44px;display:inline-flex}html[data-layout=phone] .pr-post-choice{min-width:44px;min-height:44px}html[data-layout=phone] .pr-comment-header{min-height:44px}html[data-layout=phone] .pr-body-input{font-size:16px}html[data-layout=phone] .pr-progress-tracker{gap:6px}html[data-layout=phone] .pr-progress-stage{font-size:11px}html[data-layout=phone] .pr-step{grid-template-columns:5ch 8ch minmax(0,1fr);gap:6px}}
@@ -0,0 +1,10 @@
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-6j_Ukqob.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-OBz-ZcBj.js";var et=`> [!NOTE]
2
+ > Automated review. Not written by a human.`,tt=`> [!NOTE]
3
+ > Automated review by [Glimmervoid](https://glimmervoid.dev). Not written by a human.`,nt=`> [!NOTE]
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(`
5
+ `);let o=At(e.viewerThreads);o&&r.push(o);let s=e.comments.length;e.status!==`error`&&r.push(`Automated review: ${Ut(e.verdict)}, ${jt(s)}`);let c=en(e);c&&r.push(`You ${Gt[c.state]} at ${i(c.approvedCommit)}${n.viewerApproval?` ${n.viewerApproval}`:``}; new commits since.`),(t===`attention`||t===`discarded`)&&r.push(Rn(e));let l=an(e,{isViewerShown:t!==`posted`});for(let[e,t]of l.entries())r.push(rn(t.text,n.githubReviews?.[e]??null));return r.join(`
6
+ `)}function Nt(e){let t=e.trim();return t.endsWith(`.`)?t:`${t}.`}var Pt=new Set([`approve`,`approve-only`,`comment`,`request-changes`]);function Ft({action:e,outcomeText:t,pullRequest:n,warning:r,isActedSelected:i}){return r.trim()?{statusText:`${Nt(t)} ${Nt(r)}`,tone:`error`,shouldAdvance:!1,receipt:null}:{statusText:t,tone:`ok`,shouldAdvance:i,receipt:i&&Pt.has(e)?`Posted to ${n}: ${Nt(t)}`:null}}function It(e,t,n){return n?w(e,t):`#${t}`}var Lt={CRITICAL:{filledCount:3,colorToken:`--state-failed`},HIGH:{filledCount:3,colorToken:`--state-waiting`},MEDIUM:{filledCount:2,colorToken:`--accent`},LOW:{filledCount:1,colorToken:`--text-dim`}},Rt={APPROVE:`check`,"APPROVE WITH NITS":`dot`,"REQUEST CHANGES":`bar`,BLOCKED:`cross`},zt=`lanes-team-review`,Bt=`team-review-enabled`,Vt=Object.freeze({APPROVE:`approve`,"APPROVE WITH NITS":`approve with nits`,"REQUEST CHANGES":`request changes`,BLOCKED:`blocked`}),Ht={APPROVE:`Approve`,"APPROVE WITH NITS":`Nits`,"REQUEST CHANGES":`Changes`,BLOCKED:`Blocked`};function Ut(e){return Ht[e]}var Wt=Object.freeze({APPROVE:`ok`,"APPROVE WITH NITS":`info`,"REQUEST CHANGES":`warn`,BLOCKED:`crit`}),Gt=Object.freeze({APPROVED:`approved`,CHANGES_REQUESTED:`requested changes`,COMMENTED:`commented`}),Kt=Object.freeze({preparing:`fetching the diff`,checkout:`checking out the head`,reviewing:`agent reviewing`}),qt=Object.freeze({approve:`Approved on GitHub`,"approve-only":`Approved on GitHub`,comment:`Comment posted on GitHub`,"request-changes":`Changes requested on GitHub`,discard:`Marked not mine. Not reviewed again until you re-run it.`,requeue:`Queued. The review starts as soon as a slot is free.`,"resolve-thread":`Thread resolved on GitHub`}),Jt=Object.freeze({approve:`Posting the approval`,"approve-only":`Posting the approval`,comment:`Posting the comment`,"request-changes":`Requesting changes`,discard:`Marking not mine`,requeue:`Queueing the review`,"resolve-thread":`Resolving thread`});function Yt(e,t){if(e.isNit)return{label:`Automatic resolution failed`,reason:``,tone:`warn`};let n=e.judgement?.head===t&&e.judgement.lastReplyAt===e.lastReplyAt?e.judgement:void 0;if(n)return{label:n.addressed?`Addressed`:`Not addressed`,reason:n.reason,tone:n.addressed?`ok`:`warn`};let r=e.unjudgeable?.head===t&&e.unjudgeable.lastReplyAt===e.lastReplyAt?e.unjudgeable:void 0;return r?{label:`Auto-check skipped`,reason:r.reason,tone:`muted`}:{label:`Auto-check pending`,reason:``,tone:`muted`}}function Xt(e){return(e.threads??[]).filter(e=>!e.isResolved&&(!e.isNit||e.resolveError)).map(t=>{let n=Yt(t,T(e));return{thread:t,location:t.line===null?t.path:`${t.path}:${t.line}`,judgementLabel:n.label,judgementReason:n.reason,judgementTone:n.tone,judgementText:n.reason?`${n.label}: ${n.reason}`:n.label,canResolve:t.viewerCanResolve}})}var Zt=40;function Qt(e,t){return e.split(`
7
+ `).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/Zt)),0)>t}function $t(e,t){let n=Gt[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function en(n){if(e(n))return null;let r=(n.githubReviews??[]).filter(e=>e.isViewer&&t.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!r?.commit||r.commit===T(n)||r.state===`COMMENTED`)return null;let i=Date.parse(r.submittedAt??``);return n.reviewedAt!==void 0&&i>n.reviewedAt?null:{approvedCommit:r.commit,submittedAt:r.submittedAt,state:r.state,isReviewScopeSinceDecision:n.priorReviewedHead===r.commit}}function tn(e,t){let n=e.state===`APPROVED`?`approved this`:`requested changes`,r=e.state===`APPROVED`?`your approval`:`your request for changes`,a=`You ${n} at ${i(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${a}, so this review covers what changed after ${r}.`:`${a}.`}function nn(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function rn(e,t){return t?`${e}, ${t}`:e}function an(e,{isViewerShown:t=!0}={}){return(e.githubReviews??[]).filter(e=>t||!e.isViewer).sort((e,t)=>Number(t.isViewer)-Number(e.isViewer)).map(t=>({login:t.login,tone:nn(t.state),text:$t(t,T(e)),submittedAt:t.submittedAt}))}function on(e){return Lt[e]}function sn(e){return Rt[e]}function cn(e){let t=at(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function ln(e){return mt(cn(e))}function un(e){return e!==`LOW`}function dn(e){return un(ln(e))}var fn=new Set(`ts.tsx.js.jsx.mjs.cjs.json.jsonc.css.scss.less.html.md.mdx.py.go.rs.rb.java.kt.kts.swift.c.h.cc.cpp.hpp.cs.php.sh.bash.zsh.yml.yaml.toml.ini.sql.vue.svelte.astro.lock.txt.ex.exs.erl.scala.dart.lua.tf.proto.graphql.gql.xml.gradle`.split(`.`)),pn=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function mn(e){let t=pn.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:fn.has(n.slice(r+1).toLowerCase())}var hn=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function gn(e){let t=[],n=0;for(let r of e.matchAll(/`([^`\n]+)`/g)){let i=r.index??0;i>n&&t.push({text:e.slice(n,i),kind:`text`});let a=r[1]??``;t.push({text:a,kind:mn(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function _n(e){return e.split(/\r?\n\s*\r?\n/).filter(Boolean).map(e=>{let t=e.match(/^(Suggested fix:|Fix:|Open question[.,:])\s*/),n=t?.[1]??``;return{kind:`prose`,lead:n,leadKind:n.startsWith(`Open question`)?`question`:n?`fix`:null,segments:gn(e.slice(t?.[0].length??0))}})}function vn(e){let t=st(e),n=ot(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(hn)){let t=e.index??0;i.push(..._n(r.slice(a,t).trim()));let n=(e[1]??``).trim().split(/\s+/)[0]||null;i.push({kind:`code`,language:n,code:(e[2]??``).replace(/\r?\n$/,``)}),a=t+e[0].length}return i.push(..._n(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function yn(e){let t=e.find(e=>e.kind===`prose`);if(!t)return`Open comment`;let n=`${t.lead} ${t.segments.map(e=>e.text).join(``)}`.trim(),r=n.search(/[.!?](?=\s|$)/);return(r<0?n:n.slice(0,r+1))||`Open comment`}function bn(e){let t=[`Fetch the diff`,`Check out the head`,`Review`,`Draft ready`],n={preparing:0,checkout:1,reviewing:2}[e];return t.map((e,t)=>({label:e,state:t<n?`done`:t===n?`active`:`todo`}))}function xn(e){return e===`full`?`full`:`light`}function Sn(e){return e.priorReviewedHead?`${xn(e.tier)} review of changes since ${i(e.priorReviewedHead)}`:`${xn(e.tier)} review`}function Cn(e){return e.reasons.join(`, `)}function wn(e){if(!e)return[];let t=[],n=e.goal.trim(),r=e.change.trim();return n&&t.push({kind:`goal`,text:n}),r&&t.push({kind:`change`,text:r}),t}var Tn=`This review ran before plain summaries existed, so only its verdict and findings remain. Re-run review to get a plain summary.`,En=new Set([`error`,`stale`,`discarded`,`posted`]);function Dn(e){return En.has(e)}function On(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function kn(e){let t=On(e);return t?`Reviewed at ${i(e.reviewedHead)}. The pull request is now at ${i(t)}.`:null}function An(e){let t=On(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function jn(e){let t=[`at ${i(e.head)}`,jt(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function Mn(e){let t=Nn(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function Nn(e){return Vt[e]??String(e).toLowerCase()}function Pn(e){return Wt[e]??`dim`}function Fn(e){return Kt[e]??e}function In(e,t){return`${a(t-e.startedAt)} elapsed`}function Ln(e,t){let n=[In(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${a(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function Rn(e){return e.status===`stale`&&e.earlierReview?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now and hands it these findings.`:e.status===`stale`?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now.`:e.status===`discarded`?`Marked not mine. Not reviewed again until you re-run it.`:e.error||e.summary||`The review failed.`}function zn(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function Bn(e){return zn(e.path,e)}function Vn(e){return zn(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function Hn(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function Un(e){return{key:e,action:`discard`,body:``,comments:[]}}function D(e,t,n,r,i){return t===`approve-only`?{key:e.key,head:e.reviewedHead,action:t,body:``,comments:[]}:{key:e.key,head:e.reviewedHead,action:t,body:n,...i?{threadId:i}:{},comments:r.map(({path:e,line:t,side:n,body:r})=>({path:e,line:t,side:n,body:r}))}}function Wn(e){return e.note.trim()!==``||e.comments.length>0||e.generalFindings.length>0}function Gn(e,t,n){return t===`approve`&&!Wn(n)?D(e,`approve-only`,``,[]):D(e,t,Hn(n.note,[et,gt(e.body),...n.generalFindings.map(e=>e.markdown)].filter(Boolean).join(`
8
+
9
+ `)),n.comments)}function Kn(e){let t=e.comments.length+e.generalFindings.length;return[e.note.trim()?`your note`:``,t?`${t} ${t===1?`finding`:`findings`}`:``].filter(Boolean).join(` and `)}function qn(e){return`${e} inline ${e===1?`comment`:`comments`}`}function Jn(e,t,n){let r=O(n);return Wn(t)?{event:r,detail:`${[t.note.trim()?`your note`:`no note`,...t.comments.length>0?[qn(t.comments.length)]:[],...t.generalFindings.length>0?[`${t.generalFindings.length} in the review body`]:[]].join(`, `)}, at ${i(e.reviewedHead)}.`}:{event:r,detail:or(n)?`Needs a ticked finding or a note.`:`A bare approval at ${i(e.reviewedHead)}, with no note or comments.`}}function Yn(e,t){let n=Kn(t);return e===`approve`&&n?`Approved on GitHub with ${n}`:e===`comment`&&n?`Commented on GitHub with ${n}`:e===`request-changes`&&n?`Requested changes on GitHub with ${n}`:cr(e)}var Xn=Object.freeze({approve:`Approve`,"approve-only":`Approve`,comment:`Comment`,"request-changes":`Request changes`,discard:`Not mine`,requeue:`Re-run review`,"resolve-thread":`Resolve`});function O(e){return Xn[e]}var Zn=new Set([`REQUEST CHANGES`,`BLOCKED`]);function Qn(e){return Zn.has(e)?[`request-changes`,`approve`,`comment`]:[`approve`,`comment`,`request-changes`]}function $n(e){return Zn.has(e)?`request-changes`:`approve`}function er(e,t){return`${O(e)} selected. ${t} posts, Esc cancels.`}function tr(e){return`Agent recommends: ${O($n(e)).toLowerCase()}`}var nr=` · `;function rr(e){let t=`Agent: ${O($n(e.verdict)).toLowerCase()}`,n=[...e.comments.filter(dn).map(ln),..._t(e.body).map(e=>e.severity).filter(un)];if(n.length===0)return`${t}${nr}no findings`;let r=mt(n.flatMap(e=>e?[e]:[])),i=`${n.length} ${n.length===1?`finding`:`findings`}`;return`${t}${nr}${r?`${i}, top ${r.toLowerCase()}`:i}`}var ir=Object.freeze({SUCCESS:`Passing`,FAILURE:`Failing`,ERROR:`Failing`,PENDING:`Running`,EXPECTED:`Running`});function ar(e){return e?ir[e]:`None reported`}function or(e){return e===`comment`||e===`request-changes`}function sr(e){return e.status===`ready`?{primary:Qn(e.verdict),secondary:[`requeue`,`discard`]}:r(e)?{primary:[`approve-only`],secondary:[`requeue`]}:e.status===`error`||e.status===`stale`?{primary:[`requeue`],secondary:[`discard`]}:Dn(e.status)?{primary:[`requeue`],secondary:[]}:{primary:[],secondary:[]}}function k(e){return Jt[e]}function cr(e){return qt[e]}function lr(e){return e===0?`Picked for review. It starts on the next poll.`:`Waiting for a free review slot. It starts as soon as ${e===1?`the review`:`one of the ${e} reviews`} in progress finishes.`}function ur(e){return e?e.configured?e.error?`Review drafts will show here once GitHub answers.`:`No review drafts yet. New teammate pull requests show up here after the next poll.`:e.reason?`Team review is not running: ${e.reason}.`:`Team review is off.`:`Waiting for the team review lane.`}function dr(e){return e?.configured&&e.reason||null}function fr(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${an(e).map(e=>e.text).join(`, `)}`}function pr(e){return`reviewedHead`in e?JSON.stringify([e.prCreatedAt,e.reviewedAt,e.postedAt,e.githubReviews,e.liveHead,e.priorReviewedHead,e.viewerThreads]):JSON.stringify([e.prCreatedAt,e.priorReviewedHead])}var mr=12e4,hr=`The server did not answer within ${mr/1e3} s. Check GitHub before trying again.`,gr=`${o} Check GitHub before trying again.`,_r=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,vr=`GitHub review`,yr=Object.freeze({approve:`A`,"request-changes":`R`,comment:`C`});function br(e,t){let n=f(`kbd`,`review-shortcut`,t);n.setAttribute(`aria-hidden`,`true`),e.append(n),e.setAttribute(`aria-keyshortcuts`,t)}var xr=Object.freeze({"pick-approve":`approve`,"pick-request-changes":`request-changes`,"pick-comment":`comment`}),A=Te(),j=null,Sr=null,M=null,N=null,P=null,F=null,I=null,Cr=null,wr=null,Tr=null,L=new Map,Er=Me(()=>j),Dr=Me(()=>j),R=Me(()=>j),Or=new WeakMap,z=new Map,B=new Map,V=new Map;function kr(e){let t=on(e),n=f(`span`,`pr-severity-meter`);if(n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,`${e.toLowerCase()} severity`),n.style.color=`var(${t.colorToken})`,e===`CRITICAL`){let e=ue(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(S(`path`,{d:_r,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=ue(9,11),i=e<t.filledCount;r.append(S(`path`,{d:_r,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function Ar({verdict:e}){let t=f(`span`,`pr-verdict-seal`);t.dataset.tone=Pn(e);let n=ue(20,20),r=sn(e);return n.append(S(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(S(`path`,{d:`M6 10.5L8.7 13L14 7.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),r===`dot`&&n.append(S(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(S(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(S(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,f(`span`,null,Mn(e))),t}function jr(){let e=ue(16,16);return e.append(S(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(S(`path`,{d:`M6 6.2C6 4.9 7 4.2 8 4.2C9.1 4.2 10 5 10 6C10 7.4 8 7.4 8 9.2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})),e.append(S(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function Mr(e){return l(`pr-link`,w(e.repo,e.number),e.url)}function Nr(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function H(e,t){let n=Nr(t);if(n===null)return null;let r=f(`span`,null,`${e}${e?` `:``}${De(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function Pr(e){let t=Or.get(e);t&&(e.title=`${t()}${e.dataset.unseen?`
10
+ New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function Fr(){R.reset(),Ir(j)}Oe(Fr);function Ir(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))Or.has(t)&&(Pr(t),R.onTick(()=>Pr(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=A?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?en(e):null;if(!n)continue;let r=()=>{t.textContent=tn(n,U(n.submittedAt))};r(),R.onTick(r)}for(let t of e.querySelectorAll(`[data-review-title]`)){let e=t.dataset.reviewTitle??``,n=t.dataset.ageAt===void 0?null:Number(t.dataset.ageAt),r=()=>{let r=n===null?null:De(n),i=Ne()?rn(vr,r):rn(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),R.onTick(r)}for(let t of e.querySelectorAll(`[data-age-at]`)){if(t.dataset.reviewTitle!==void 0)continue;let e=Number(t.dataset.ageAt),n=t.dataset.ageLabel??``;R.track(t,e,()=>`${n}${n?` `:``}${De(e)}`)}}}function Lr(e,t,n,r=!0){let i=an(e,{isViewerShown:r});if(i.length===0)return null;let a=f(`span`,t),o=i.map(e=>({login:e.login,tone:e.tone,title:rn(Ne()?vr:e.text,U(e.submittedAt))})),s=c(o,n);for(let[e,t]of i.entries()){let n=s.children[e];if(!(n instanceof HTMLElement))continue;n.dataset.reviewTitle=t.text;let r=Nr(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(s),a}function U(e){let t=Nr(e);return t===null?null:De(t)}function Rr(e,t,n){let r=f(`span`,n);return r.append(d({login:e,cssPx:t}),f(`span`,`pr-author-login`,e)),r}function zr(e,t){return`${w(e.repo,e.number)}\n${kt(e,t).meaning}`}function Br(e,t,n){let r=f(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key;let i=`reviewedHead`in e?en(e):null;Or.set(r,()=>Ne()?zr(e,t):Mt(e,t,{opened:U(e.prCreatedAt),reviewed:`reviewedHead`in e?U(e.reviewedAt):null,posted:`reviewedHead`in e?U(e.postedAt):null,viewerApproval:U(i?.submittedAt),githubReviews:`reviewedHead`in e?an(e,{isViewerShown:t!==`posted`}).map(e=>U(e.submittedAt)):[]})),Pr(r);let a=Hr(e,n);if(t===`inReview`){let t=e,n=f(`span`,`pr-queue-elapsed`);Er.track(n,t.startedAt,()=>In(t,Date.now())),a.append(n)}if(t===`queued`){let t=H(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=H(``,t.reviewedAt)??H(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),a.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(a),r;r.classList.remove(`pr-queue-row-quiet`);let o=kt(e,t),s=f(`span`,`pr-queue-glyph`);s.append(y(o.icon,o.tone));let c=f(`span`,`pr-queue-bottom`);if(c.append(Vr(t===`ready`&&`reviewedHead`in e?{tone:o.tone,meaning:rr(e)}:o),Rr(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=f(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(f(`span`,`pr-phase-label`,Fn(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:Lr(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),r}function Vr(e){let t=f(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function Hr(e,t){let n=f(`span`,`pr-queue-top`);return n.append(f(`strong`,`pr-queue-ref`,It(e.repo,e.number,t)),f(`strong`,`pr-queue-ref-compact`,It(e.repo,e.number,!1)),f(`span`,`pr-queue-title`,e.title)),n}function Ur({title:e,detail:t}){let n=f(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=f(`strong`,`pr-caught-up-title`);return r.append(y(`ready`,`ok`),f(`span`,null,e)),n.append(r,f(`p`,`pr-caught-up-detail`,t)),n}var Wr=`Open in session`,Gr=`Preparing the branch and session.`;function Kr(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;C(r,n,t);let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function qr(e,t){let n=L.get(e);n&&window.clearTimeout(n.timer),L.set(e,{requestId:null,timer:0,text:t,tone:`error`}),Kr(e,t,`error`)}function Jr(e,t,n){if(L.get(e)?.requestId)return;let r=m(`open-team-review-session`);if(!h({type:`open-team-review-session`,requestId:r,key:e})){C(n,`error`,o);return}let i=window.setTimeout(()=>qr(e,`The server did not answer within ${mr/1e3} s.`),mr);L.set(e,{requestId:r,timer:i,text:Gr,tone:`busy`}),t.disabled=!0,C(n,`busy`,Gr)}function Yr(e){let t=f(`div`,`pr-session-open`),n=f(`button`,`pr-action pr-session-open-button`,Wr);n.type=`button`,br(n,`O`);let r=L.get(e.key);n.disabled=!!r?.requestId;let i=f(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&C(i,r.tone,r.text),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>Jr(e.key,n,i)),t.append(n,i),t}function Xr(e,{hasFactsRail:t=!1}={}){let n=f(`div`,`pr-detail-heading`);n.dataset.signature=pr(e);let r=f(`div`,`pr-detail-title`);r.append(Mr(e),f(`h2`,null,e.title));let i=f(`div`,`pr-detail-meta`);i.append(Rr(e.author,20,`pr-detail-author`));let a=f(`span`,null,Sn(e));a.title=Cn(e),i.append(a);let o=H(`Opened`,e.prCreatedAt);if(o&&i.append(o),`reviewedHead`in e){let t=H(`Reviewed`,e.reviewedAt);t&&i.append(t);let n=H(`Posted`,e.postedAt);n&&i.append(n)}let s=`reviewedHead`in e?Lr(e,`pr-detail-github`,20):null;if(s&&i.append(s),n.append(r,i,Yr(e)),`reviewedHead`in e&&!t){let t=At(e.viewerThreads);if(t){let r=f(`p`,`pr-viewer-threads`,t);oe(e)&&(r.dataset.state=`all-resolved`),n.append(r)}}let c=`reviewedHead`in e?en(e):null;if(c){let t=f(`p`,`pr-rereview-notice`,tn(c,U(c.submittedAt)));t.dataset.reviewKey=e.key,n.append(t)}return n}function Zr(e,t,n={}){let r=e.querySelector(`.pr-detail-heading`);return!r||r.dataset.signature===pr(t)||r.replaceWith(Xr(t,n)),e}function Qr(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function $r(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(f(`code`,null,n.text));continue}let t=f(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function ei(e,t){return $r(e,gn(t))}function ti(e){let t=f(`ul`,`pr-assessment-list`);for(let n of e)t.append(ei(f(`li`,null),n));return t}function ni(e){let t=e.assessment?.handChecks??[];if(t.length===0)return[];let n=f(`section`,`pr-hand-checks`);n.setAttribute(`aria-label`,`Check by hand`),n.append(f(`h3`,`pr-assessment-title`,`Check by hand`));let r=t.map(e=>e.paths.length===0?e.text:`${e.text}: ${e.paths.map(e=>`\`${e}\``).join(`, `)}`);return n.append(ti(r)),[n]}function ri(e){let t=wn(e.assessment);if(t.length===0)return[];let n=f(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(f(`h3`,`pr-assessment-title`,`About this PR`));for(let e of t){let t=e.kind===`goal`?`pr-verdict-summary pr-about-goal`:`pr-verdict-summary`;n.append(ei(f(`p`,t),e.text))}return[n]}function ii(e){let t=f(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=f(`div`,`pr-verdict-line`);n.append(Ar(e),f(`strong`,`pr-verdict-recommendation`,tr(e.verdict))),t.append(n);let{assessment:r}=e;if(!r)return t.append(f(`p`,`pr-verdict-legacy`,Tn)),e.summary.trim()&&t.append(ei(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t;if(t.append(ei(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),r.gaps.length>0){let e=ti(r.gaps);e.classList.add(`pr-verdict-gaps`),e.setAttribute(`aria-label`,`Not covered`),t.append(e)}if(r.checked.length===0)return t;let i=f(`details`,`pr-verdict-checked`);return i.append(f(`summary`,null,`What it checked (${r.checked.length})`),ti(r.checked)),t.append(i),t}function ai(e){if(e.kind===`code`){let t=f(`pre`,`pr-comment-code`),n=f(`code`,null);return n.textContent=e.code,t.append(n),t}let t=f(`p`,`pr-comment-paragraph`);if(e.lead){let n=f(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(jr()),n.append(e.lead),t.append(n,` `)}return $r(t,e.segments)}function oi(e){return{body:e.body,severity:ln(e),location:Vn(e),locationTitle:Bn(e),...e.excerpt?{excerpt:e.excerpt,citedLine:e.line}:{}}}var si=Object.freeze({add:`+`,del:`-`,context:` `});function ci(e,t){let n=f(`div`,`pr-diff-excerpt`);for(let r of e){let e=f(`div`,`review-line review-line-${r.kind}`);r.line!==null&&r.line===t&&(e.dataset.cited=`true`),e.append(f(`span`,`pr-diff-excerpt-number`,r.line===null?``:String(r.line)),f(`span`,`review-line-gutter`,si[r.kind]),f(`span`,`review-line-text`,r.text)),n.append(e)}return n}function li(e){let t=e.location??`Not on a changed line, posts in the review body`;return{body:e.body,severity:e.severity,location:e.location?.split(`/`).at(-1)??`general`,locationTitle:t}}function ui({body:e,severity:t,location:n,locationTitle:r,excerpt:i,citedLine:a}){let o=f(`details`,`pr-comment-content`),s=f(`summary`,`pr-comment-header`),c=vn(e);t&&s.append(kr(t));let l=f(`span`,`pr-comment-location`,n);l.title=r,s.append(l),s.append(f(`span`,`pr-comment-preview`,yn(c.paragraphs))),o.append(s);let u=f(`div`,`pr-comment-paragraphs`);for(let e of c.paragraphs)u.append(ai(e));return o.append(u),i&&i.length>0&&o.append(ci(i,a)),o.open=t===`HIGH`||t===`CRITICAL`,o}function di(e,t){let n=f(`details`,`pr-disclosure pr-earlier-review`),r=f(`summary`,`pr-disclosure-summary`);r.append(f(`span`,`pr-disclosure-label`,`Earlier review`),f(`span`,`pr-disclosure-preview`,jn(e)));let i=f(`div`,`pr-earlier-review-body`),a=f(`div`,`pr-verdict-line`);a.append(Ar(e)),i.append(a),e.summary.trim()&&i.append(ei(f(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=f(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(ui(oi(t))),i.append(e)}return n.append(r,i),n.open=t,n}function fi(e){let t=kn(e);if(!t)return[];let n=f(`p`,`pr-changed-since`,t);return n.append(` `,l(`pr-changed-since-link`,`Compare changes`,An(e),`Open the commits since this review on GitHub`)),[n]}function pi(e){let t=A?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return Cr=null,[];if(Cr?.key===e.key&&Cr.head===t.head)return[Cr.element];let n=di(t,!1);return Cr={key:e.key,head:t.head,element:n},[n]}function mi(e,t){let n=f(`button`,`pr-post-choice`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function hi(e,t,n,r){let i=f(`article`,`pr-comment-card`),a=f(`div`,`pr-post-toggle`);a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,`Post or drop the finding on ${e.locationTitle}`);let o=()=>{let e=t.has(n);c.setAttribute(`aria-pressed`,String(e)),l.setAttribute(`aria-pressed`,String(!e)),i.dataset.included=String(e)},s=e=>{e&&t.add(n),e||t.delete(n),o(),r()},c=mi(`Post`,()=>s(!0)),l=mi(`Drop`,()=>s(!1));return a.append(c,l),o(),i.append(a,ui(e)),i}var gi=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function _i(e,t,n,r,i=cr(n.action)){let a=wr?.captureTurnOrder()??[];P=null;let o=m(`team-review-action`);if(!h({type:`team-review-action`,requestId:o,...n}))return!1;let s=window.setTimeout(()=>{V.delete(t.key),r(!1,hr)},mr);return V.set(t.key,{requestId:o,action:n.action,outcomeText:i,origin:e,capturedOrder:a,pullRequest:w(t.repo,t.number),timer:s,settle:r}),!0}function vi(e){let t=f(`footer`,`pr-footer`),n=yi(`discard`,()=>{V.has(e.key)||(n.disabled=!0,C(i,`busy`,k(`discard`)),!_i(`other`,e,Un(e.key),a)&&a(!1,o))}),r=V.has(e.key);n.disabled=r;let i=f(`span`,`pr-action-status`);r&&C(i,`busy`,k(`discard`)),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(e,t,r=e?`ok`:`error`)=>{n.disabled=e,C(i,r,t)};return t.append(n,i),t}function yi(e,t,n=!1,r){let i=f(`button`,n?`pr-action pr-action-ghost`:`pr-action`,O(e));return i.type=`button`,r&&br(i,r),i.dataset.action=e,i.addEventListener(`click`,()=>t(e)),i}function bi(e,t,n=``,r={}){let i=sr(e),a=f(`footer`,`pr-footer pr-decision-bar`),o=f(`span`,`pr-action-status`,n);o.setAttribute(`role`,`status`),o.setAttribute(`aria-live`,`polite`);let s=i.primary.map(e=>yi(e,t,!1,r[e])),c=i.secondary.map(e=>yi(e,t,!0,r[e]));return a.append(...s,f(`span`,`pr-decision-spacer`),...c,o),{footer:a,status:o,buttons:[...s,...c]}}function xi(){let e=f(`span`,`pr-finding-keys`);return e.setAttribute(`aria-hidden`,`true`),e.append(f(`kbd`,`review-shortcut`,`N`),f(`kbd`,`review-shortcut`,`P`),` move`,f(`kbd`,`review-shortcut`,`X`),` post or drop`),e}var Si=0;function Ci(e){let t=f(`section`,`pr-note`);Si+=1;let n=f(`textarea`,`pr-body-input pr-note-input`);n.id=`pr-note-${Si}`,n.rows=2,n.spellcheck=!0,n.placeholder=`Optional. Posts at the top of the review, above the automated-review label.`,n.addEventListener(`input`,e);let r=f(`label`,`pr-section-heading`,`Your note`);return r.htmlFor=n.id,t.append(r,n),{section:t,input:n}}function wi(e,...t){let n=f(`div`,`pr-fact`),r=f(`dd`,null);return r.append(...t),n.append(f(`dt`,null,e),r),n}function Ti(e){return JSON.stringify([e.checksState,e.viewerThreads,e.liveHead])}function Ei(e){let t=f(`section`,`pr-desk-facts`);t.setAttribute(`aria-label`,`This PR`),t.dataset.signature=Ti(e);let n=f(`dl`,`pr-fact-list`),r=An(e),i=r?[kn(e)??``,` `,l(`pr-changed-since-link`,`Compare changes`,r,`Open the commits since this review on GitHub`)]:[`No new commits`];return n.append(wi(`Checks`,ar(e.checksState)),wi(`Threads`,At(e.viewerThreads)??`None of yours`),wi(`Since review`,...i)),t.append(f(`h3`,`pr-assessment-title`,`This PR`),n),t}function Di(e,t){let n=e.querySelector(`.pr-desk-facts`);n&&n.dataset.signature!==Ti(t)&&n.replaceWith(Ei(t))}function Oi(e){let t=f(`article`,`pr-detail pr-desk`),n=f(`div`,`pr-desk-column`),r=f(`aside`,`pr-desk-rail`);r.setAttribute(`aria-label`,`Decision`);let i=f(`div`);i.dataset.reviewThreads=``,n.append(Xr(e,{hasFactsRail:!0}),...ri(e)),e.earlierReview&&n.append(di(e.earlierReview,!1)),n.append(i,ii(e),...ni(e));let a=_t(e.body),s=new Set(e.comments.flatMap((e,t)=>dn(e)?[t]:[])),c=new Set(a.flatMap((e,t)=>un(e.severity)?[t]:[])),l=e.comments.length+a.length,u=f(`section`,`pr-posts`);u.setAttribute(`aria-label`,`Findings`);let d=f(`div`,`pr-posts-heading`),p=f(`span`,null);d.append(f(`h3`,null,`Findings`),p),l>0&&d.append(xi()),u.append(d);let m=Ci(pe),h=f(`section`,`pr-will-post`);h.setAttribute(`aria-label`,`Will post to GitHub`);let ee=f(`strong`,`pr-will-post-event`),te=f(`p`,`pr-will-post-detail`);te.setAttribute(`aria-live`,`polite`),h.append(f(`h3`,`pr-assessment-title`,`Will post to GitHub`),ee,te,m.section),r.append(h,Ei(e));let g=()=>({note:m.input.value,comments:e.comments.filter((e,t)=>s.has(t)),generalFindings:a.filter((e,t)=>c.has(t))}),_=!1,v=!1,y=[],b=-1,x=null,S=bi(e,t=>{if(V.has(e.key))return;v=!1,x=null,E();let n=g(),r=t===`approve`||t===`comment`||t===`request-changes`?Gn(e,t,n):D(e,t,``,[]);w(!0),C(S.status,`busy`,k(r.action)),!_i(`ready`,e,r,me,Yn(r.action,n))&&me(!1,o)},``,yr);function re(){let e=Wn(g());for(let t of S.buttons)t.disabled=_||or(t.dataset.action)&&!e;t.dataset.busy=String(_)}function w(e){_=e,re()}function T(){let t=g();p.textContent=`${t.comments.length+t.generalFindings.length} of ${l} will post. Low severity starts unticked.`;let n=Jn(e,t,$n(e.verdict));ee.textContent=n.event,te.textContent=n.detail,re()}function E(){for(let e of S.buttons)e.dataset.picked=String(e.dataset.action===x)}function ae(){let e=y[b];for(let[e,t]of y.entries())t.dataset.current=String(e===b);e.querySelector(`.pr-post-choice[aria-pressed="true"]`)?.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`})}function oe(e){return y.length!==0&&(b=Math.min(y.length-1,Math.max(0,b+e)),ae(),!0)}function se(){if(b===-1&&!oe(1))return!1;let e=y[b],t=e.dataset.included===`true`?`Drop`:`Post`;return[...e.querySelectorAll(`.pr-post-choice`)].find(e=>e.textContent===t)?.click(),ae(),!0}function ce(e){return!_&&(v=!1,x=e,E(),m.input.focus(),C(S.status,`ok`,er(e,ne(ie))),!0)}function le(){let t=x??(document.activeElement===m.input?$n(e.verdict):null),n=S.buttons.find(e=>e.dataset.action===t);return!t||!n?!1:_||V.has(e.key)?!0:n.disabled?(C(S.status,`error`,Jn(e,g(),t).detail),!0):(n.click(),!0)}function ue(){return x?(x=null,E(),C(S.status,null,``),!0):!1}function de(e){let t=xr[e];return t?ce(t):e===`next-finding`?oe(1):e===`previous-finding`?oe(-1):e===`toggle-finding`?se():e===`post`?le():e===`cancel`&&ue()}function fe(){v&&(v=!1,C(S.status,null,``))}function pe(){fe(),T()}let me=(e,t,n=e?`ok`:`error`)=>{w(e),C(S.status,n,t)},he=(t,n=`ok`)=>{V.has(e.key)||(v=!0,C(S.status,n,t))};for(let[t,n]of e.comments.entries())y.push(hi(oi(n),s,t,pe));for(let[e,t]of a.entries())y.push(hi(li(t),c,e,pe));return u.append(...y),l>0&&n.append(u),t.append(n,r,S.footer),Mi(t,e),T(),{signature:fr(e),element:t,settle:me,showReceipt:he,clearReceipt:fe,runKey:de}}function ki(e){let t=z.get(e.key);if(t&&(V.has(e.key)||t.signature===fr(e)))return Mi(t.element,e),Di(t.element,e),Zr(t.element,e,{hasFactsRail:!0}),t;let n=Oi(e);return z.set(e.key,n),n}function Ai(e,t){let n=f(`article`,`pr-detail`),r=f(`div`,`pr-detail-heading`),i=f(`div`,`pr-detail-title`);i.append(Mr(e),f(`h2`,null,e.title));let a=f(`div`,`pr-detail-meta`);a.append(Rr(e.author,20,`pr-detail-author`));let o=H(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,Yr(e)),n.append(r,f(`p`,`pr-attention-detail`,lr(t)),vi(e)),n}function ji(e){let t=f(`article`,`pr-detail`);t.append(Xr(e));let n=f(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=f(`ol`,`pr-progress-tracker`);for(let t of bn(e.phase)){let e=f(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(f(`span`,`pr-progress-bar`),f(`span`,null,t.label)),r.append(e)}let i=f(`div`,`pr-progress-text`);Dr.track(i,e.startedAt,()=>Ln(e,Date.now())),n.append(r,i),t.append(n);let a=f(`section`,`pr-steps`);a.append(f(`h3`,null,`Latest agent steps`));let o=f(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=f(`li`,`pr-step`),r=f(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(f(`span`,`pr-step-at`,s(e.startedAt,t.at)),f(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...pi(e),vi(e)),t}function Mi(e,t){if(V.has(t.key))return;let n=e.querySelector(`[data-review-threads]`),r=JSON.stringify([t.liveHead,t.threads]);n&&n.dataset.reviewThreads!==r&&(n.replaceChildren(...Pi(t)),n.dataset.reviewThreads=r)}function Ni(e,t,n,r){let i=f(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(f(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!Qt(e,t?3:8))return i;let a=f(`details`,`pr-thread-disclosure`);return a.append(f(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),f(`p`,`pr-thread-body`,e)),n&&a.append(l(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function Pi(e){let t=Xt(e);if(t.length===0)return[];let n=f(`section`,`my-pr-threads-section`);n.append(f(`h3`,`pr-section-heading`,`Answered threads`));let r=f(`div`,`my-pr-threads`);for(let n of t){let t=f(`div`,`my-pr-thread pr-thread-card`),i=f(`div`,`my-pr-thread-heading pr-thread-heading`),a=f(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(l(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(f(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(f(`div`,`my-pr-thread-meta`,`Your comment`),Ni(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let s=f(`div`,`pr-detail-meta pr-thread-reply-meta`);s.append(f(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let c=H(``,n.thread.lastReplyAt);c&&s.append(c);let u=f(`span`,`pr-action-status`);u.setAttribute(`role`,`status`);let d=f(`button`,`pr-action`,`Resolve`);d.type=`button`,d.disabled=!n.canResolve||V.has(e.key);let p=(e,t)=>{d.disabled=e||!n.canResolve,C(u,e?`ok`:`error`,t)};d.addEventListener(`click`,()=>{V.has(e.key)||(d.disabled=!0,C(u,`busy`,k(`resolve-thread`)),!_i(`other`,e,D(e,`resolve-thread`,``,[],n.thread.id),p)&&p(!1,o))}),t.append(s),n.thread.lastReplyBody&&t.append(Ni(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let m=f(`footer`,`pr-thread-footer`);m.append(u,d),t.append(m),n.thread.resolveError&&t.append(f(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function Fi(e){let t=f(`article`,`pr-detail`);if(t.append(Xr(e),...ri(e)),e.earlierReview&&t.append(di(e.earlierReview,e.status===`stale`)),t.append(...Pi(e)),e.status===`posted`&&t.append(ii(e)),e.status!==`posted`&&t.append(f(`p`,`pr-attention-detail`,Rn(e))),e.status===`stale`&&t.append(...fi(e)),!Dn(e.status))return B.set(e.key,{signature:Qr(e),element:t,settle:()=>{}}),t;let n=bi(e,t=>{if(!V.has(e.key)){for(let e of n.buttons)e.disabled=!0;C(n.status,`busy`,k(t)),!_i(`other`,e,D(e,t,``,[]),r)&&r(!1,o)}},sr(e).primary.includes(`approve-only`)?gi:``),r=(e,t)=>{for(let t of n.buttons)t.disabled=e;C(n.status,e?`ok`:`error`,t)};return t.append(n.footer),B.set(e.key,{signature:Qr(e),element:t,settle:r}),t}function Ii(e){if(!Dn(e.status)&&Xt(e).length===0)return Fi(e);let t=B.get(e.key);return t&&(V.has(e.key)||t.signature===Qr(e))?Zr(t.element,e):Fi(e)}function Li(e){if(!M||!N)return;let t=F===N?z.get(N):void 0,n=e.ready.find(e=>e.key===N&&e.status===`ready`);if(t&&n&&fr(n)!==t.signature&&(F=null),t&&F){M.firstElementChild!==t.element&&M.replaceChildren(t.element),I=null;return}let r=e.ready.find(e=>e.key===N&&(g(e).length>0||re(e)));if(r&&r.status!==`ready`){let e=`threads:${Qr(r)}`,t=Ii(r);if(I===e&&M.firstElementChild===t)return;M.replaceChildren(t),I=e;return}let i=[...e.ready,...e.noReviewNeeded].find(e=>e.key===N&&e.status===`ready`);if(i){let e=`ready:${fr(i)}`,t=ki(i);if(P&&t.showReceipt?.(P),P=null,I===e)return;M.replaceChildren(t.element),I=e;return}let a=e.inReview.find(e=>e.key===N);if(a){Dr.reset(),M.replaceChildren(ji(a)),I=`inReview:${a.key}`;return}let o=e.queued.find(e=>e.key===N);if(o){let t=`queued:${o.key}:${e.inReview.length}`;if(I===t)return;M.replaceChildren(Ai(o,e.inReview.length)),I=t;return}let s=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===N);s&&(M.replaceChildren(Ii(s)),I=`${s.status}:${s.key}`)}function Ri(){let e=f(`p`,`pr-empty`,ur(A));return A&&!A.configured&&e.append(` `,fe(zt,Bt,`Open Team review settings`)),e}function zi(){let e=dr(A);return e?[f(`p`,`my-pr-note`,e)]:[]}function Bi(e){for(let t of[...z.keys()])e.has(t)||V.has(t)||t===F||z.delete(t);let t=new Set(A?.drafts.filter(e=>Dn(e.status)).map(e=>e.key)??[]);for(let e of B.keys())t.has(e)||V.has(e)||B.delete(e)}function Vi(){Er.reset()}function Hi(){R.reset(),Ir(j)}function Ui(e=null){P=null,F!==e&&(F=null);for(let e of z.values())e.clearReceipt?.()}function Wi(e){if(!M||!N)return!1;if(e===`open-session`){let e=M.querySelector(`.pr-session-open-button`);return!e||e.disabled?!1:(e.click(),!0)}let t=z.get(N);return!t||M.firstElementChild!==t.element?!1:t.runKey?.(e)??!1}function Gi(){let e=P;return P=null,e}function Ki(){Ui(),N=null}function qi(e,t){t===`clear`&&Ui(e),N=e,Li(E(A)),Hi()}function Ji(e){Bi(new Set([...e.ready,...e.noReviewNeeded].map(e=>e.key)))}function Yi(){let e=E(A);Ji(e),Li(e),wr?.onChange(),Hi()}function Xi(e){switch(e.kind){case`status`:A=Te(),Yi();return;case`action-result`:ea(e.message);return;case`open-session-result`:Qi(e.message);return;case`connection`:$i(e.isConnected)}}function Zi(e,t,n){return Tr=n?.openTerminal??Tr,wr=t,j=e,Sr||(Sr=f(`div`,`pr-detail-team`),M=f(`div`,`pr-detail-body`),Sr.append(M),Er.ensure(),Dr.ensure(),R.ensure(),A=Te(),ae(Xi),Sr)}function Qi(e){let t=e.key;if(!t)return;let n=L.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?qr(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),L.delete(t),Kr(t,``,null),Tr?.(e.sessionId)))}function $i(e){if(e)return;for(let[e,t]of L)t.requestId&&qr(e,o);let t=[...V.values()];V.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,gr)}function ea(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=V.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),V.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:cr(n.action)),B.delete(t.key),I=null,t.ok===!0&&Yi();return}let r=(n.origin===`ready`?z:B).get(t.key);if(t.ok===!0){n.origin===`other`&&B.delete(t.key);let e=Ft({action:n.action,outcomeText:n.outcomeText,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:N===t.key});if((r?.settle??n.settle)?.(!0,e.statusText,e.tone),e.tone===`error`&&n.origin===`ready`&&r&&(F=t.key,N&&N!==t.key&&z.get(N)?.showReceipt?.(`${n.pullRequest}: ${e.statusText}`,`error`),Li(E(A))),!e.shouldAdvance)return;P=e.receipt,Ji(E(A)),wr?.onAdvance(t.key,n.capturedOrder)}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}var W=null,ta=null,G=null,na=null,ra=null,ia=null,aa=null,oa=null,sa=null,K=null,q=[],J=`all`,Y=null,ca,X=!1,Z=!1,la=null,ua=!1,da=null,fa=null,pa=0,ma=2e3,Q=new Map;function ha(e,t){Re(Be(e))&&(t.querySelector(`.pr-queue-unseen`)?.remove(),delete t.dataset.unseen,e.source===`team`&&Pr(t))}function ga(e){W&&(W.dataset.detailOpen=String(e)),je(e)}function _a(){ga(!1),Y&&Q.get(Y)?.focus({preventScroll:!0})}function va(){ra&&(ra.textContent=Ve(q,Y))}function ya(e){!G||G.childElementCount===1&&G.firstElementChild===e||G.replaceChildren(e)}function ba(e){let t=v(q).length>0,n=e?`${e} `:``;return Ur(t?{title:`New pull requests need you`,detail:`${n}Pick one from the queue.`}:{title:`All caught up`,detail:`${n}${Pe(q)}`})}function xa(e){let t=Ue(q,Y);ca=t?.key??null,t?t.source===`team`&&aa?(qi(t.review.key,e),ya(aa)):t.source===`mine`&&oa&&(Ki(),Je(t.pr.key),ya(oa)):(da=Gi()??da,Ki(),G&&G.replaceChildren(X?ba(da):f(`p`,`pr-empty`,`Pick a pull request from the queue.`)))}function Sa(e,{isFromQueue:t}){Y=e,X=!1,da=null;for(let[t,n]of Q)n.setAttribute(`aria-current`,String(t===e));let n=Ue(q,e),r=Q.get(e);n&&r&&ha(n,r),xa(`clear`),Ca(),ga(!0),t&&document.documentElement.dataset.layout===`phone`&&G?.parentElement?.scrollIntoView({block:`start`})}function Ca(){if(va(),!na)return;let e=be(q,Y);Le(na,ze(_e(q)),e)}function wa(e){let t=Ue(q,e);if(!t)return;Ue(xe(q,J),e)||(J=`all`,sa?.select(J)),q.find(e=>e.items.includes(t))?.id===`aside`&&(Z=!0),Y=e,$(),Sa(e,{isFromQueue:!1});let n=Q.get(e);n?.focus({preventScroll:!0}),n?.scrollIntoView({block:`nearest`})}function Ta(e){let t=le([...Q.keys()],Y,e);return t?(t!==Y&&wa(t),!0):!1}function Ea(e){return e===`next-row`?Ta(1):e===`previous-row`?Ta(-1):Wi(e)}function Da(){return document.activeElement instanceof HTMLTextAreaElement&&document.activeElement.classList.contains(`pr-note-input`)}function Oa(e){if(e.repeat||e.defaultPrevented||!W||p(W)||ee()||document.activeElement?.classList.contains(`xterm-helper-textarea`))return;let t=he(e);if(!t)return;let n=(t===`post`||t===`cancel`)&&Da();(!u(e)||n)&&Ea(t)&&e.preventDefault()}function ka(e){window.clearTimeout(pa),fa=e,pa=window.setTimeout(()=>{fa=null,Q.get(e)?.removeAttribute(`data-just-acted`)},ma)}function Aa(e,t){let n=`team:${e}`;ka(n);let r=pe({capturedOrder:t,actedKey:n,groups:q});if(Y=r,X=r===null,la=null,$(),r)for(let[e,t]of Q)t.setAttribute(`aria-current`,String(e===r));xa(`keep`)}function ja(e,t,n){if(e.source===`team`){let n=Br(e.review,e.kind,t);return{container:n,row:n}}let r=Xe(e.pr,e.stackedOn,n.get(e.prKey));return{container:r.group,row:r.row}}function Ma(e,t,n,r){let{container:i,row:a}=ja(e,n,r);a.dataset.queueKey=e.key,a.setAttribute(`aria-current`,String(e.key===Y)),e.key===fa&&(a.dataset.justActed=`true`);let o=Be(e);if(t&&te(o)){let t=f(`span`,`tab-activity active pr-queue-unseen`);t.setAttribute(`aria-hidden`,`true`),a.dataset.unseen=o,a.append(t),e.source===`team`&&Pr(a)}return a.addEventListener(`click`,()=>Sa(e.key,{isFromQueue:!0})),Q.set(e.key,a),i}function Na(e){let t=f(`h3`,`pr-section-heading review-group-heading`),n=f(`span`,`review-group-count`,String(e.items.length));if(e.id!==`aside`)return t.append(f(`span`,null,e.title),n),t;let r=f(`button`,`review-group-toggle`),i=f(`span`,`review-group-chevron`,`▸`);return i.setAttribute(`aria-hidden`,`true`),r.append(i,e.title),r.type=`button`,r.setAttribute(`aria-expanded`,String(Z)),r.addEventListener(`click`,()=>{Z=!Z,la=null,$()}),t.append(r,n),t}function Pa(e,t,n){let r=f(`section`,`pr-queue-section`);if(r.dataset.group=e.id,r.append(Na(e)),e.id===`aside`&&!Z)return r;for(let i of e.items)r.append(Ma(i,e.id===`turn`,t,n));return r}function Fa(){let e=qe(b().status,Date.now()).filter(e=>e.tone!==`error`).map(e=>f(`p`,`my-pr-note`,e.text));return[...K?[K.notice]:[],...zi(),...e]}function Ia(){return q.some(e=>e.items.length>0)?[f(`p`,`pr-empty`,`No pull requests match this filter.`)]:[Ri(),f(`p`,`pr-empty`,$e(b().status))]}function La(){if(!ia)return;let e=Te()?.team;if(!e){ia.replaceChildren();return}let t=f(`span`,`pr-team-chip`);t.append(d({login:e.slug,url:e.avatarUrl,cssPx:16}),f(`span`,null,e.name)),ia.replaceChildren(t)}function Ra(e,t){return JSON.stringify([e,[...t],Y,J,Z,me(),Fa().map(e=>e.textContent)],(e,t)=>e===`recentSteps`?void 0:t)}function $(){if(!ta)return;let{sessionsByPrKey:e,status:t}=b();q=Ae(),La(),K?.update(Se([Te(),t]));let n=xe(q,J);X||(Y=ke(n,Y)),Ca();let r=Ra(n,e);if(r!==la){la=r;let t=document.activeElement instanceof HTMLElement&&ta.contains(document.activeElement)?document.activeElement.dataset.queueKey:void 0;Vi(),Q.clear();let i=He(q),a=n.filter(e=>e.items.length>0).map(t=>Pa(t,i,e));ta.replaceChildren(...Fa(),...a.length>0?a:Ia()),t&&Q.get(t)?.focus({preventScroll:!0}),Hi()}(Y!==ca||X)&&xa(`keep`)}function za(){ua||(ua=!0,queueMicrotask(()=>{ua=!1,$()}))}function Ba(){let e=ge();e&&wa(e)}function Va(e){e.kind===`reveal`?Ba():_a()}function Ha(e){if(W)return;let t=Ce()??void 0;W=f(`div`,`pr-content review-queue`),e.append(W),sa=Qe({label:`Show reviews`,scopes:Ee,selected:J,onSelect:e=>{J=e,$()}});let n=Ye({queueLabel:`Review queue`,scopeTabs:sa.element,resizerLabel:`Resize review queue`});ta=n.queue,G=f(`div`,`review-queue-detail`);let r=f(`div`,`review-queue-phone-bar`),i=f(`button`,`pr-action pr-action-ghost review-queue-back`,`Back to queue`);i.type=`button`,i.addEventListener(`click`,Fe),ra=f(`span`,`review-queue-position`),r.append(i,ra),n.detail.append(r,G),na=ve({onJump:()=>{ye()},rowFor:e=>Q.get(e)},de()),na.classList.add(`review-queue-banner`),n.queue.before(na),K=Ge([`team-review`,`my-prs`],W),ia=f(`span`,`review-team-chip-slot`),n.foot.append(ia,K.control),W.append(n.columns),W.dataset.detailOpen=`false`,aa=Zi(W,{onChange:za,captureTurnOrder:()=>v(q).map(e=>e.key),onAdvance:Aa},t),oa=Ze({onChange:za},t),se({isLooking:()=>!p(W),selectedKey:()=>Y}),Ie(Va),document.addEventListener(`keydown`,Oa),$(),Ba()}var Ua={mount:Ha,refresh:Ke};export{Ua as view};