prreviewbuddy 0.75.0 → 0.76.9

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.
@@ -43,7 +43,7 @@ import{B as e,D as t,F as n,G as r,H as i,I as a,J as o,K as s,L as c,O as l,P a
43
43
  `):``}function Tn(e,t,n={}){let r=wn(e,n);if(!r)return null;let i=[...bn,...Sn].find(e=>e.id===t);return i?i.instruction?`${r}\n\n${i.instruction}`:`${r}\n\n`:null}function En(e){return e.closest(`[data-finding-card]`)?.querySelector(`[data-copy-source]`)?.getAttribute(`data-copy-source`)??``}function S(e,t=``){return typeof e==`string`?e:t}var Dn=`Dismissed by you — you decided this finding needs no action. It stops counting towards what is left, and stays here so the decision is visible rather than lost.`;function On(e){return e===0?``:`<span class="pr-helper-closed-findings-waiting" data-closed-findings-waiting> ${e===1?`1 suggestion waiting`:`${e} suggestions waiting`}</span>`}var kn=[`explain-detail`,`explain`];function An(e){return kn.includes(e)}function jn(e){return e.action??`explain`}var Mn=`Ask more →`,Nn={"explain-detail":`Explanation · Technical`,explain:`Explanation · Simple`};function Pn(e){return Nn[jn(e)]}function Fn(e,t={}){let n=qe(e.text),r=t.askMore?`<button type="button" class="pr-helper-simple-explanation-more" data-simple-explanation-more>${Mn}</button>`:``,i=r&&n.endsWith(`</p>`)?`${n.slice(0,-4)} ${r}</p>`:n+r;return`<details class="pr-helper-simple-explanation" data-simple-explanation${Number.isFinite(e.writtenAt)?` data-explanation-written-at="${e.writtenAt}"`:``}${t.open?` open`:``}>
44
44
  <summary class="pr-helper-simple-explanation-summary">${Pn(e)}</summary>
45
45
  <div class="pr-helper-simple-explanation-body pr-helper-markdown">${i}</div>
46
- </details>`}function In(e,t){return`.pr-helper-${e}-card[data-finding-card="${CSS.escape(t)}"]`}function Ln(e){return e?.classList.contains(`pr-helper-issue-card`)?`issue`:e?.classList.contains(`pr-helper-question-card`)?`question`:null}function Rn(e,t){return An(e)&&t?{explains:{...t,action:e}}:{}}function zn(e){let t=Bn(e),n=e.closest(`[data-simple-explanation]`);if(!t||!n)return null;let r=Number(n.getAttribute(`data-explanation-written-at`)??NaN);return Number.isFinite(r)?{...t,writtenAt:r}:t}function Bn(e){let t=e.closest(`[data-finding-card]`),n=Ln(t),r=t?.getAttribute(`data-finding-card`);return n&&r?{kind:n,id:r}:null}function Vn(e,t){let n=e.querySelector(In(t.kind,t.id));if(!n)return;let r=Fn(t,{open:!0,askMore:!0}),i=n.querySelector(`:scope > [data-simple-explanation]`);if(i){i.outerHTML=r;return}Hn(n,t.kind)?.insertAdjacentHTML(`afterend`,r)}function Hn(e,t){if(t===`issue`)return e.querySelector(`:scope > .pr-helper-issue-desc`);let n=e.querySelector(`:scope > .pr-helper-issue-header`),r=n?.nextElementSibling?.matches(`[data-assessment-region]`)?n.nextElementSibling:n,i=r?.nextElementSibling;return i?.tagName===`H5`&&i.textContent===`Why this matters`?i.nextElementSibling:r??null}function Un(e,t){return e?.continues&&t.includes(e.text)?e.continues:void 0}var Wn=/^pr-helper-severity-(critical|major|minor|nit)$/;function Gn(e,t){let n=e.querySelector(In(t.kind,t.id));if(!n)return null;if(t.kind===`issue`){for(let e of[...n.classList])Wn.test(e)&&n.classList.remove(e);t.cardClass&&n.classList.add(t.cardClass)}return n.querySelector(`[data-grade-control]`)?.replaceWith(qn(e,t.grade)),n.querySelector(`[data-assessment-region]`)?.replaceWith(qn(e,t.region)),n.querySelector(`[${_t}]`)?.setAttribute(_t,t.copy),Kn(e),n}function Kn(e){for(let t of e.querySelectorAll(`[data-closed-findings]`)){let n=t.querySelector(`[data-closed-findings-summary]`);if(!n)continue;let r=t.querySelectorAll(`.pr-helper-closed-findings-list [data-reassessment-proposal]`).length;n.querySelector(`[data-closed-findings-waiting]`)?.remove();let i=On(r);i&&n.append(qn(e,i))}}function qn(e,t){let n=e.createElement(`template`);return n.innerHTML=t.trim(),n.content}function Jn(e,t){let n=e?.querySelector(`[data-assessment-region]`);if(!n)return;n.querySelector(`.pr-helper-reassessment-error`)?.remove();let r=n.ownerDocument.createElement(`p`);r.className=`pr-helper-reassessment-error`,r.setAttribute(`role`,`alert`),r.textContent=t,n.append(r)}var Yn=`Could not reach PR Review Buddy. The workspace server may have stopped.`;async function Xn(e,t,n,r,i){let a;try{a=await r.post(n)}catch{return Jn(t,Yn),!1}if(a===null)return!1;let o=a.body?.card?Gn(e,a.body.card):t;return a.status===200?((i===`grade`?o?.querySelector(`[data-grade-control] button`):o?.querySelector(`[data-assessment-region] summary, [data-grade-control] button`))?.focus(),!0):(Jn(o,typeof a.body?.error==`string`?a.body.error:`That could not be saved.`),!1)}async function Zn(e,t){let n=e.closest(`[data-grade-menu]`),r=e.closest(`[data-finding-card]`),i=Bn(e),a=e.dataset.gradeTo;if(!n||!r||!i||!a)return!1;let o=n.dataset.gradeFrom||null,s=n.querySelector(`[data-grade-reason]`)?.value.trim()??``;return t.closeMenu?.(n),Xn(e.ownerDocument,r,{op:`set`,kind:i.kind,id:i.id,from:o,to:a,...s?{reason:s}:{}},t,`grade`)}async function Qn(e,t){let n=e.closest(`[data-reassessment-proposal]`),r=e.closest(`[data-finding-card]`),i=e.dataset.reassessmentDecide,a=n?.dataset.reassessmentProposal;if(!r||!a||i!==`accepted`&&i!==`declined`)return!1;for(let e of n.querySelectorAll(`button`))e.disabled=!0;let o=await Xn(e.ownerDocument,r,{op:`decide`,proposalId:a,decision:i},t,`region`);if(!o)for(let e of n.querySelectorAll(`button`))e.disabled=!1;return o}function $n(e,t){e.addEventListener(`click`,e=>{let n=e.target,r=n?.closest(`[data-grade-menu] [data-grade-to]`);if(r){Zn(r,t);return}let i=n?.closest(`[data-reassessment-decide]`);i&&Qn(i,t)})}function er(e){let t=En(e);if(!t)return null;let n=e.closest(`[data-reassessment-proposal]`),r=n?.querySelector(`.pr-helper-reassessment-proposal-title`)?.textContent?.trim()??``,i=n?.querySelector(`.pr-helper-reassessment-reason`)?.textContent?.trim()??``;return`${wn(t,{maxChars:1/0})}\n\n${wn(`${r}${i?`: ${i}`:``}`,{maxChars:1/0})}\n\n`}Object.freeze([{id:`default-assumptions`,name:`What does it assume?`,prompt:`What assumptions does this change make? Say which are stated, which are implied, and what happens if one turns out to be wrong.`},{id:`default-explain-educational`,name:`Teach me this`,prompt:`Explain this in an educational way: the concepts it relies on, why it is built this way, and what I should take away from it.`},{id:`default-what-could-go-wrong`,name:`What could go wrong?`,prompt:`What could go wrong here? Think about edge cases, failure modes and the existing callers this could break.`},{id:`default-walkthrough`,name:`Walk me through it`,prompt:`Walk me through the implementation step by step, in the order the code runs.`},{id:`default-verify-manually`,name:`What should I verify?`,prompt:`What should I verify manually before approving this, and how would I check each one?`}].map(e=>Object.freeze(e)));var tr=`saved:`,nr=`Your prompts`;function rr(e){return`${tr}${e}`}function ir(e){return e.startsWith(`saved:`)?e.slice(6):null}var ar=[`progress`,`overview`,`guide`,`issues`,`questions`,`files`,`prcontext`,`architecture`,`map`,`diagram`,`kiss`,`kissrecs`],or=`#theme-`,sr=[`buddy`,`overview`,`guide`,`architecture`,`map`,`diagram`,`issues`,`questions`,`files`,`prcontext`,`kiss`,`kissrecs`,`progress`],cr=`&focus=`;function lr(e){return`#${e}`}function ur(e){return`${or}${encodeURIComponent(e)}`}function dr(e){let t=e.kind===`view`?lr(e.view):ur(e.sectionId);return e.focus?`${t}${cr}${e.focus}`:t}var fr=[`architecture`,`map`,`diagram`];function pr(e,t){return fr.includes(e)&&fr.includes(t??``)?e:void 0}function mr(e,t){let n=yr(e),r=n?.kind===`view`&&n.view===t?n.focus:pr(t,n?.focus);return dr({kind:`view`,view:t,...r?{focus:r}:{}})}function hr(e){let{focus:t,...n}=e;return n}function gr(e,t){return e.kind!==`view`||e.view!==`guide`||!t?e:{kind:`section`,sectionId:t,...e.focus?{focus:e.focus}:{}}}function _r(e){return sr.includes(e)}function vr(e){if(!e||typeof e!=`object`)return null;let{kind:t,view:n,sectionId:r,focus:i}=e,a=typeof i==`string`&&_r(i)?{focus:i}:{};return t===`view`&&typeof n==`string`&&ar.includes(n)?{kind:t,view:n,...a}:t===`section`&&typeof r==`string`&&r!==``?{kind:t,sectionId:r,...a}:null}function yr(e){let t=e.indexOf(cr);if(t===-1)return br(e);let n=br(e.slice(0,t));if(!n)return null;let r=e.slice(t+7);return _r(r)?{...n,focus:r}:n}function br(e){if(e.startsWith(or)){let t=e.slice(7);if(!t)return null;try{return{kind:`section`,sectionId:decodeURIComponent(t)}}catch{return null}}let t=e.replace(/^#/,``);return ar.includes(t)?{kind:`view`,view:t}:null}var xr=`pushedFocus`;function Sr(e){let{[xr]:t,...n}=e;return n}function Cr(e,t){return e.kind===`view`&&t.kind===`view`?e.view===t.view:e.kind===`section`&&t.kind===`section`&&e.sectionId===t.sectionId}function wr(e,t,n){if(e.focus===t)return;let r={...hr(Sr(e)),focus:t};e.focus&&n.history.state?.[xr]?n.history.replaceState({...r,[xr]:!0},``,dr(r)):n.history.pushState({...r,[xr]:!0},``,dr(r)),n.apply(r)}function Tr(e,t){if(!e.focus)return;if(t.history.state?.[xr]){t.history.back();return}let n=hr(Sr(e));t.history.replaceState(n,``,dr(n)),t.apply(n)}function Er(e,t,n){if(!n||e.key!==`Escape`||e.defaultPrevented||t.querySelector(`dialog[open], [data-menu-panel]:not([hidden]), [data-analysis-details][open], [data-range-details][open], .pr-helper-selection-popover`))return!1;let r=e.target;return!(r?.closest?.(`[data-ask-resize]`)||r instanceof HTMLInputElement&&m(r)&&r.value!==``)}function Dr(e,t,n){e&&(n?e.dataset.focus=n:delete e.dataset.focus);for(let e of t.querySelectorAll(`[data-focus-toggle]`)){let t=e.dataset.focusToggle===n,r=e.dataset.focusName??`this`,i=t?`Exit focus on ${r}`:`Expand ${r}`;e.setAttribute(`aria-pressed`,String(t)),e.setAttribute(`aria-label`,i),e.setAttribute(`title`,t?`${i} (Esc)`:i)}}function Or(e,t,n,r){let i=n===`finding`?{maxChars:1/0}:{},a=ir(e);if(a===null)return Tn(t,e,i);let o=r(a);if(!o)return null;let s=wn(t,i);return s?`${s}\n\n${o}`:null}function kr(e,t,n){if(n.busy?.())return null;let r=Or(e,t.text,t.context,n.savedPrompt);if(!r)return null;let i=xn(e)||ir(e)!==null;return t.context===`selection`||i?(n.stage(r),`staged`):(n.send(r),`sent`)}function Ar(e){return e.reviewerClosed>0?`dealt with`:`resolved`}var jr=`Run review again`;function Mr(e,t,n){for(let r of e.querySelectorAll(`[data-intent-question]`))if(r.dataset.intentQuestion===t){for(let e of r.querySelectorAll(`[data-intent-open]`))e.hidden=n;for(let e of r.querySelectorAll(`[data-intent-answered]`))e.hidden=!n}}function Nr(e){let t=e.dataset.questionAnswered;t&&Mr(e.ownerDocument,t,e.dataset.answered===`true`||e.dataset.settled===`true`)}var Pr=`pr-helper-author-context-preview`,Fr=`View full PR description`,Ir=`Show less`;function Lr(e){let t=e.ownerDocument,n=t.getElementById(e.getAttribute(`aria-controls`)??``),r=t.getElementById(Pr);if(!n)return;let i=n.closest(`#${Vr}`),a=i?[...i.querySelectorAll(`[data-author-context-toggle]`)]:[e],o=e.getAttribute(`aria-expanded`)!==`true`,s=Rr(n);if(!o){let e=-zr(n,s);e>0?n.dataset.readingOffset=String(e):delete n.dataset.readingOffset}n.hidden=!o,r&&(r.hidden=o),i?.toggleAttribute(`data-expanded`,o);for(let e of a)e.setAttribute(`aria-expanded`,String(o)),e.textContent=o?Ir:Fr,e.hasAttribute(`data-author-context-head`)&&(e.hidden=!o);if(o){let e=Number(n.dataset.readingOffset??0);e>0&&Br(n,s,zr(n,s)+e);return}i&&zr(i,s)<0&&i.scrollIntoView({block:`start`}),e.hidden&&a.find(e=>!e.hidden)?.focus({preventScroll:!0})}function Rr(e){let t=e.ownerDocument.defaultView;for(let n=e.parentElement;n;n=n.parentElement)if(/^(?:auto|scroll|overlay)$/.test(t?.getComputedStyle(n).overflowY??``))return n;return null}function zr(e,t){return e.getBoundingClientRect().top-(t?t.getBoundingClientRect().top:0)}function Br(e,t,n){(t??e.ownerDocument.defaultView)?.scrollBy(0,n)}var Vr=`pr-helper-author-context`;function Hr(e){let t=e.ownerDocument.getElementById(Vr);if(!t)return;let n=t.querySelector(`[data-author-context-toggle]`);n?.getAttribute(`aria-expanded`)===`false`&&Lr(n),t.scrollIntoView?.({block:`start`,behavior:`smooth`}),t.querySelector(`h4`)?.focus({preventScroll:!0})}({claude:`Claude Code`,codex:`Codex`,gemini:`Gemini CLI`}).claude;function Ur(e){return e?`View current PR description on GitHub ↗`:`View PR description on GitHub ↗`}function Wr(e,t,n=`resolved`){return t===0?`<span class="pr-helper-questions-progress-check" aria-hidden="true">\u2713</span><span class="pr-helper-questions-progress-count">All ${e} issues ${n}</span>`:`<span class="pr-helper-questions-progress-count">${t} of ${e} still open</span>`}function Gr(e){let t=e.done-e.reviewerClosed;return e.reviewerClosed===0?`Resolved by the new commits (${e.done})`:t===0?`Dismissed by you (${e.done})`:`Dealt with (${e.done})`}function Kr(e,t){return t===0?`<span class="pr-helper-questions-progress-check" aria-hidden="true">✓</span><span class="pr-helper-questions-progress-count">All ${e} questions answered</span>`:`<span class="pr-helper-questions-progress-count">${t} of ${e} unanswered</span>`}function qr(e){let t=[...document.querySelectorAll(`[data-guide-detail]`)],n=t.find(t=>t.dataset.guideDetail===e);if(!n)return null;for(let e of t)e.hidden=e!==n;return n}function Jr(e){return e instanceof Element&&e.closest(`[data-guide-jump]`)?.dataset.guideJump||null}function Yr(e){for(let t of document.querySelectorAll(`[data-goto-section]`))t.setAttribute(`aria-current`,String(t.dataset.gotoSection===e))}function Xr(){for(let e of document.querySelectorAll(`.prb-rail [data-goto-section]`))e.setAttribute(`aria-current`,`false`)}function Zr(e,t){let n=e.trim();return n?`${n}\n\n${t}`:t}var Qr=50;function $r(e){let t=e.tagName===`LI`?e.querySelector(`:scope > .prb-code`):e.nextElementSibling;return t?.classList.contains(`prb-code`)?t:null}function C(e,t=2**53-1){let n=Number(e);return Number.isFinite(n)&&n>=0?Math.min(Math.floor(n),t):0}function ei(e){if(!e||typeof e!=`object`)return;let t=e,n=C(t.top);return{cited:C(t.cited),centre:C(t.centre),expand:C(t.expand,Qr),position:C(t.position),tall:t.tall===!0,top:n>0?n:null,offset:Number.isFinite(Number(t.offset))?Math.round(Number(t.offset)):0}}function ti(e){let t=e.getBoundingClientRect().top;for(let n of e.querySelectorAll(`tr[data-line]`)){let e=n.getBoundingClientRect();if(e.bottom>t)return{top:Number(n.dataset.line)||null,offset:Math.round(e.top-t)}}return{top:null,offset:0}}function ni(e){let t=e.querySelector(`[data-change-navigator]`),n=e.querySelector(`.prb-code-scroll`),r=n&&n.scrollTop>0?ti(n):{top:null,offset:0};return{cited:C(e.dataset.cited),centre:C(e.dataset.centre),expand:C(e.dataset.expand,Qr),position:C(t?.dataset.changePosition??e.dataset.position),tall:e.hasAttribute(`data-expanded`),...r}}function ri(e,t,n){let r=e.querySelector(`.prb-code-scroll`);if(!r)return;if(t===null){r.scrollTop=0;return}let i=null,a=1/0;for(let e of r.querySelectorAll(`tr[data-line]`)){let n=Math.abs((Number(e.dataset.line)||0)-t);n<a&&(i=e,a=n)}i&&(r.scrollTop+=i.getBoundingClientRect().top-r.getBoundingClientRect().top-n)}function ii(e,t){return e.cited===t.cited&&e.centre===t.centre&&e.expand===t.expand&&e.position===t.position}function ai(){let e=new WeakMap,t=0;return{run(n,r,i){let a=++t,o=i().then(t=>e.get(n)?.ticket===a&&(e.delete(n),t(),!0),()=>(e.get(n)?.ticket===a&&e.delete(n),!1));return e.set(n,{ticket:a,request:r,done:o}),o},pending(t){return e.get(t)}}}function oi(e){let t=e.closest(`[data-finding-card]`);if(t)return`card:${t.getAttribute(`data-finding-card`)??``}`;let n=e.closest(`[data-guide-section]`);return n?`theme:${n.getAttribute(`data-guide-section`)??``}`:`view:${e.closest(`[data-view]`)?.getAttribute(`data-view`)??``}`}function si(e){return[...e.querySelectorAll(`[data-file][aria-expanded="true"]`)].map(e=>{let t=$r(e);return{host:oi(e),file:e.getAttribute(`data-file`)??``,line:e.getAttribute(`data-line`)??``,...t?{state:ni(t)}:{}}})}function ci(e,t){return e.host===t.host&&e.file===t.file&&e.line===t.line}function li(e,t){for(let n of e.querySelectorAll(`[data-file]`))if(n.getAttribute(`data-file`)===t.file&&(n.getAttribute(`data-line`)??``)===t.line&&oi(n)===t.host)return n;return null}function ui(e){if(!e||typeof e!=`object`)return!1;let{host:t,file:n,line:r}=e;return typeof t==`string`&&typeof n==`string`&&n!==``&&typeof r==`string`}function di(e){let{doc:t,main:n,rail:r,log:i,panes:a}=e,o={};for(let e of t.querySelectorAll(`[data-rail-toggle][aria-controls]`))o[e.getAttribute(`aria-controls`)]=e.getAttribute(`aria-expanded`)===`true`;let s=a?.dataset.ask;return{main:n?.scrollTop??0,rail:r?.scrollTop??0,ask:s===`open`||s===`closed`?s:null,log:i?.scrollTop??0,folds:o,panels:si(t),focus:p(t.activeElement,t.body)}}async function fi(e,t,n){if(!t)return!1;let{doc:r,main:i,rail:a,log:o}=e,c=t.folds&&typeof t.folds==`object`?t.folds:{};for(let e of r.querySelectorAll(`[data-rail-toggle][aria-controls]`)){let t=c[e.getAttribute(`aria-controls`)];typeof t==`boolean`&&n.setFold(e,t)}if((t.ask===`open`||t.ask===`closed`)&&n.setAsk(t.ask===`open`),Array.isArray(t.panels)){let e=t.panels.filter(ui).map(e=>({...e,state:ei(e.state)}));for(let t of si(r))if(!e.some(e=>ci(e,t))){let e=li(r,t);e&&n.closePanel(e)}let i=[];for(let t of e){let e=li(r,t);e&&i.push(n.openPanel(e,t.state).catch(()=>{}))}await Promise.all(i)}if(!n.stillCurrent())return!1;let l=s(t,`main`);i&&l!==null&&(i.scrollTop=l);let u=s(t,`rail`);a&&u!==null&&(a.scrollTop=u);let d=s(t,`log`);return o&&d!==null&&(o.scrollTop=d),g(r,t.focus),!0}var pi=`prb-ask-draft:`,mi=`prb-ask-staged:`,hi=300;function gi(e){return`${pi}${e}`}function _i(e){return`${mi}${e}`}function vi(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t?.text!=`string`||t.source!==`selection`&&t.source!==`finding`)return null;let n=t.continues,r=n&&typeof n.id==`string`&&(n.kind===`issue`||n.kind===`question`)?{kind:n.kind,id:n.id,...Number.isFinite(n.writtenAt)?{writtenAt:n.writtenAt}:{}}:void 0;return{text:t.text,source:t.source,...r?{continues:r}:{}}}catch{return null}}function yi(e,t){let{storage:n,win:r}=t,i=gi(t.path),a=_i(t.path),o=null,s=e=>{try{e.trim()===``?(n?.removeItem(i),n?.removeItem(a)):n?.setItem(i,e)}catch{}},c=null;if(t.restore&&e.value===``)try{let t=n?.getItem(i);if(t){e.value=t;let r=vi(n?.getItem(a));c=r&&t.includes(r.text)?r:null}}catch{}let l={restoredStage:c,stage(e){try{n?.setItem(a,JSON.stringify(e))}catch{}},save(){o!==null&&r.clearTimeout(o),o=null,s(e.value)},saveSoon(){o!==null&&r.clearTimeout(o),o=r.setTimeout(()=>l.save(),hi)},clear(){o!==null&&r.clearTimeout(o),o=null,s(``)}};return e.addEventListener(`input`,()=>l.saveSoon()),r.addEventListener(`pagehide`,()=>l.save()),l}function bi(e){if(!Number.isFinite(e))return``;let t=Math.round((Date.now()-e)/6e4);if(t<1)return`just now`;if(t<60)return`${t} minute${t===1?``:`s`} ago`;let n=Math.round(t/60);if(n<24)return`${n} hour${n===1?``:`s`} ago`;let r=Math.round(n/24);return`${r} day${r===1?``:`s`} ago`}function xi(){return`<button type="button" class="prb-update-btn" data-review-update>Update review</button>`}var Si=`Updating this review checks the latest commits and refreshes the PR conversation. Your progress and Buddy AI history will be kept.`;function Ci(e){return`<details class="prb-update-alt">
46
+ </details>`}function In(e,t){return`.pr-helper-${e}-card[data-finding-card="${CSS.escape(t)}"]`}function Ln(e){return e?.classList.contains(`pr-helper-issue-card`)?`issue`:e?.classList.contains(`pr-helper-question-card`)?`question`:null}function Rn(e,t){return An(e)&&t?{explains:{...t,action:e}}:{}}function zn(e){let t=Bn(e),n=e.closest(`[data-simple-explanation]`);if(!t||!n)return null;let r=Number(n.getAttribute(`data-explanation-written-at`)??NaN);return Number.isFinite(r)?{...t,writtenAt:r}:t}function Bn(e){let t=e.closest(`[data-finding-card]`),n=Ln(t),r=t?.getAttribute(`data-finding-card`);return n&&r?{kind:n,id:r}:null}function Vn(e,t){let n=e.querySelector(In(t.kind,t.id));if(!n)return;let r=Fn(t,{open:!0,askMore:!0}),i=n.querySelector(`:scope > [data-simple-explanation]`);if(i){i.outerHTML=r;return}Hn(n,t.kind)?.insertAdjacentHTML(`afterend`,r)}function Hn(e,t){if(t===`issue`)return e.querySelector(`:scope > .pr-helper-issue-desc`);let n=e.querySelector(`:scope > .pr-helper-issue-header`),r=n?.nextElementSibling?.matches(`[data-assessment-region]`)?n.nextElementSibling:n,i=r?.nextElementSibling;return i?.tagName===`H5`&&i.textContent===`Why this matters`?i.nextElementSibling:r??null}function Un(e,t){return e?.continues&&t.includes(e.text)?e.continues:void 0}var Wn=/^pr-helper-severity-(critical|major|minor|nit)$/;function Gn(e,t){let n=e.querySelector(In(t.kind,t.id));if(!n)return null;if(t.kind===`issue`){for(let e of[...n.classList])Wn.test(e)&&n.classList.remove(e);t.cardClass&&n.classList.add(t.cardClass)}return n.querySelector(`[data-grade-control]`)?.replaceWith(qn(e,t.grade)),n.querySelector(`[data-assessment-region]`)?.replaceWith(qn(e,t.region)),n.querySelector(`[${_t}]`)?.setAttribute(_t,t.copy),Kn(e),n}function Kn(e){for(let t of e.querySelectorAll(`[data-closed-findings]`)){let n=t.querySelector(`[data-closed-findings-summary]`);if(!n)continue;let r=t.querySelectorAll(`.pr-helper-closed-findings-list [data-reassessment-proposal]`).length;n.querySelector(`[data-closed-findings-waiting]`)?.remove();let i=On(r);i&&n.append(qn(e,i))}}function qn(e,t){let n=e.createElement(`template`);return n.innerHTML=t.trim(),n.content}function Jn(e,t){let n=e?.querySelector(`[data-assessment-region]`);if(!n)return;n.querySelector(`.pr-helper-reassessment-error`)?.remove();let r=n.ownerDocument.createElement(`p`);r.className=`pr-helper-reassessment-error`,r.setAttribute(`role`,`alert`),r.textContent=t,n.append(r)}var Yn=`Could not reach PR Review Buddy. The workspace server may have stopped.`;async function Xn(e,t,n,r,i){let a;try{a=await r.post(n)}catch{return Jn(t,Yn),!1}if(a===null)return!1;let o=a.body?.card?Gn(e,a.body.card):t;return a.status===200?((i===`grade`?o?.querySelector(`[data-grade-control] button`):o?.querySelector(`[data-assessment-region] summary, [data-grade-control] button`))?.focus(),!0):(Jn(o,typeof a.body?.error==`string`?a.body.error:`That could not be saved.`),!1)}async function Zn(e,t){let n=e.closest(`[data-grade-menu]`),r=e.closest(`[data-finding-card]`),i=Bn(e),a=e.dataset.gradeTo;if(!n||!r||!i||!a)return!1;let o=n.dataset.gradeFrom||null,s=n.querySelector(`[data-grade-reason]`)?.value.trim()??``;return t.closeMenu?.(n),Xn(e.ownerDocument,r,{op:`set`,kind:i.kind,id:i.id,from:o,to:a,...s?{reason:s}:{}},t,`grade`)}async function Qn(e,t){let n=e.closest(`[data-reassessment-proposal]`),r=e.closest(`[data-finding-card]`),i=e.dataset.reassessmentDecide,a=n?.dataset.reassessmentProposal;if(!r||!a||i!==`accepted`&&i!==`declined`)return!1;for(let e of n.querySelectorAll(`button`))e.disabled=!0;let o=await Xn(e.ownerDocument,r,{op:`decide`,proposalId:a,decision:i},t,`region`);if(!o)for(let e of n.querySelectorAll(`button`))e.disabled=!1;return o}function $n(e,t){e.addEventListener(`click`,e=>{let n=e.target,r=n?.closest(`[data-grade-menu] [data-grade-to]`);if(r){Zn(r,t);return}let i=n?.closest(`[data-reassessment-decide]`);i&&Qn(i,t)})}function er(e){let t=En(e);if(!t)return null;let n=e.closest(`[data-reassessment-proposal]`),r=n?.querySelector(`.pr-helper-reassessment-proposal-title`)?.textContent?.trim()??``,i=n?.querySelector(`.pr-helper-reassessment-reason`)?.textContent?.trim()??``;return`${wn(t,{maxChars:1/0})}\n\n${wn(`${r}${i?`: ${i}`:``}`,{maxChars:1/0})}\n\n`}Object.freeze([{id:`default-assumptions`,name:`What does it assume?`,prompt:`What assumptions does this change make? Say which are stated, which are implied, and what happens if one turns out to be wrong.`},{id:`default-explain-educational`,name:`Teach me this`,prompt:`Explain this in an educational way: the concepts it relies on, why it is built this way, and what I should take away from it.`},{id:`default-what-could-go-wrong`,name:`What could go wrong?`,prompt:`What could go wrong here? Think about edge cases, failure modes and the existing callers this could break.`},{id:`default-walkthrough`,name:`Walk me through it`,prompt:`Walk me through the implementation step by step, in the order the code runs.`},{id:`default-verify-manually`,name:`What should I verify?`,prompt:`What should I verify manually before approving this, and how would I check each one?`}].map(e=>Object.freeze(e)));var tr=`saved:`,nr=`Your prompts`;function rr(e){return`${tr}${e}`}function ir(e){return e.startsWith(`saved:`)?e.slice(6):null}var ar=[`progress`,`overview`,`guide`,`issues`,`questions`,`files`,`prcontext`,`architecture`,`map`,`diagram`,`kiss`,`kissrecs`],or=`#theme-`,sr=[`buddy`,`overview`,`guide`,`architecture`,`map`,`diagram`,`issues`,`questions`,`files`,`prcontext`,`kiss`,`kissrecs`,`progress`],cr=`&focus=`;function lr(e){return`#${e}`}function ur(e){return`${or}${encodeURIComponent(e)}`}function dr(e){let t=e.kind===`view`?lr(e.view):ur(e.sectionId);return e.focus?`${t}${cr}${e.focus}`:t}var fr=[`architecture`,`map`,`diagram`];function pr(e,t){return fr.includes(e)&&fr.includes(t??``)?e:void 0}function mr(e,t){let n=yr(e),r=n?.kind===`view`&&n.view===t?n.focus:pr(t,n?.focus);return dr({kind:`view`,view:t,...r?{focus:r}:{}})}function hr(e){let{focus:t,...n}=e;return n}function gr(e,t){return e.kind!==`view`||e.view!==`guide`||!t?e:{kind:`section`,sectionId:t,...e.focus?{focus:e.focus}:{}}}function _r(e){return sr.includes(e)}function vr(e){if(!e||typeof e!=`object`)return null;let{kind:t,view:n,sectionId:r,focus:i}=e,a=typeof i==`string`&&_r(i)?{focus:i}:{};return t===`view`&&typeof n==`string`&&ar.includes(n)?{kind:t,view:n,...a}:t===`section`&&typeof r==`string`&&r!==``?{kind:t,sectionId:r,...a}:null}function yr(e){let t=e.indexOf(cr);if(t===-1)return br(e);let n=br(e.slice(0,t));if(!n)return null;let r=e.slice(t+7);return _r(r)?{...n,focus:r}:n}function br(e){if(e.startsWith(or)){let t=e.slice(7);if(!t)return null;try{return{kind:`section`,sectionId:decodeURIComponent(t)}}catch{return null}}let t=e.replace(/^#/,``);return ar.includes(t)?{kind:`view`,view:t}:null}var xr=`pushedFocus`;function Sr(e){let{[xr]:t,...n}=e;return n}function Cr(e,t){return e.kind===`view`&&t.kind===`view`?e.view===t.view:e.kind===`section`&&t.kind===`section`&&e.sectionId===t.sectionId}function wr(e,t,n){if(e.focus===t)return;let r={...hr(Sr(e)),focus:t};e.focus&&n.history.state?.[xr]?n.history.replaceState({...r,[xr]:!0},``,dr(r)):n.history.pushState({...r,[xr]:!0},``,dr(r)),n.apply(r)}function Tr(e,t){if(!e.focus)return;if(t.history.state?.[xr]){t.history.back();return}let n=hr(Sr(e));t.history.replaceState(n,``,dr(n)),t.apply(n)}function Er(e,t,n){if(!n||e.key!==`Escape`||e.defaultPrevented||t.querySelector(`dialog[open], [data-menu-panel]:not([hidden]), [data-analysis-details][open], [data-range-details][open], .pr-helper-selection-popover`))return!1;let r=e.target;return!(r?.closest?.(`[data-ask-resize]`)||r instanceof HTMLInputElement&&m(r)&&r.value!==``)}function Dr(e,t,n){e&&(n?e.dataset.focus=n:delete e.dataset.focus);for(let e of t.querySelectorAll(`[data-focus-toggle]`)){let t=e.dataset.focusToggle===n,r=e.dataset.focusName??`this`,i=t?`Exit focus on ${r}`:`Expand ${r}`;e.setAttribute(`aria-pressed`,String(t)),e.setAttribute(`aria-label`,i),e.setAttribute(`title`,t?`${i} (Esc)`:i)}}function Or(e,t,n,r){let i=n===`finding`?{maxChars:1/0}:{},a=ir(e);if(a===null)return Tn(t,e,i);let o=r(a);if(!o)return null;let s=wn(t,i);return s?`${s}\n\n${o}`:null}function kr(e,t,n){if(n.busy?.())return null;let r=Or(e,t.text,t.context,n.savedPrompt);if(!r)return null;let i=xn(e)||ir(e)!==null;return t.context===`selection`||i?(n.stage(r),`staged`):(n.send(r),`sent`)}function Ar(e){return e.reviewerClosed>0?`dealt with`:`resolved`}var jr=`Run review again`;function Mr(e,t,n){for(let r of e.querySelectorAll(`[data-intent-question]`))if(r.dataset.intentQuestion===t){for(let e of r.querySelectorAll(`[data-intent-open]`))e.hidden=n;for(let e of r.querySelectorAll(`[data-intent-answered]`))e.hidden=!n}}function Nr(e){let t=e.dataset.questionAnswered;t&&Mr(e.ownerDocument,t,e.dataset.answered===`true`||e.dataset.settled===`true`)}var Pr=`pr-helper-author-context-preview`,Fr=`View full PR description`,Ir=`Show less`;function Lr(e){let t=e.ownerDocument,n=t.getElementById(e.getAttribute(`aria-controls`)??``),r=t.getElementById(Pr);if(!n)return;let i=n.closest(`#${Vr}`),a=i?[...i.querySelectorAll(`[data-author-context-toggle]`)]:[e],o=e.getAttribute(`aria-expanded`)!==`true`,s=Rr(n);if(!o){let e=-zr(n,s);e>0?n.dataset.readingOffset=String(e):delete n.dataset.readingOffset}n.hidden=!o,r&&(r.hidden=o),i?.toggleAttribute(`data-expanded`,o);for(let e of a)e.setAttribute(`aria-expanded`,String(o)),e.textContent=o?Ir:Fr,e.hasAttribute(`data-author-context-head`)&&(e.hidden=!o);if(o){let e=Number(n.dataset.readingOffset??0);e>0&&Br(n,s,zr(n,s)+e);return}i&&zr(i,s)<0&&i.scrollIntoView({block:`start`}),e.hidden&&a.find(e=>!e.hidden)?.focus({preventScroll:!0})}function Rr(e){let t=e.ownerDocument.defaultView;for(let n=e.parentElement;n;n=n.parentElement)if(/^(?:auto|scroll|overlay)$/.test(t?.getComputedStyle(n).overflowY??``))return n;return null}function zr(e,t){return e.getBoundingClientRect().top-(t?t.getBoundingClientRect().top:0)}function Br(e,t,n){(t??e.ownerDocument.defaultView)?.scrollBy(0,n)}var Vr=`pr-helper-author-context`;function Hr(e){let t=e.ownerDocument.getElementById(Vr);if(!t)return;let n=t.querySelector(`[data-author-context-toggle]`);n?.getAttribute(`aria-expanded`)===`false`&&Lr(n),t.scrollIntoView?.({block:`start`,behavior:`smooth`}),t.querySelector(`h4`)?.focus({preventScroll:!0})}({claude:`Claude Code`,codex:`Codex`,gemini:`Gemini CLI`}).claude;function Ur(e){return e?`View current PR description on GitHub ↗`:`View PR description on GitHub ↗`}function Wr(e,t,n=`resolved`){return t===0?`<span class="pr-helper-questions-progress-check" aria-hidden="true">\u2713</span><span class="pr-helper-questions-progress-count">All ${e} issues ${n}</span>`:`<span class="pr-helper-questions-progress-count">${t} of ${e} still open</span>`}function Gr(e){let t=e.done-e.reviewerClosed;if(e.reviewerClosed===0){let t=e.byConversation??0;return t===0?`Resolved by the new commits (${e.done})`:t===e.done?`Resolved by the conversation (${e.done})`:`Resolved (${e.done})`}return t===0?`Dismissed by you (${e.done})`:`Dealt with (${e.done})`}function Kr(e,t){return t===0?`<span class="pr-helper-questions-progress-check" aria-hidden="true">✓</span><span class="pr-helper-questions-progress-count">All ${e} questions answered</span>`:`<span class="pr-helper-questions-progress-count">${t} of ${e} unanswered</span>`}function qr(e){let t=[...document.querySelectorAll(`[data-guide-detail]`)],n=t.find(t=>t.dataset.guideDetail===e);if(!n)return null;for(let e of t)e.hidden=e!==n;return n}function Jr(e){return e instanceof Element&&e.closest(`[data-guide-jump]`)?.dataset.guideJump||null}function Yr(e){for(let t of document.querySelectorAll(`[data-goto-section]`))t.setAttribute(`aria-current`,String(t.dataset.gotoSection===e))}function Xr(){for(let e of document.querySelectorAll(`.prb-rail [data-goto-section]`))e.setAttribute(`aria-current`,`false`)}function Zr(e,t){let n=e.trim();return n?`${n}\n\n${t}`:t}var Qr=50;function $r(e){let t=e.tagName===`LI`?e.querySelector(`:scope > .prb-code`):e.nextElementSibling;return t?.classList.contains(`prb-code`)?t:null}function C(e,t=2**53-1){let n=Number(e);return Number.isFinite(n)&&n>=0?Math.min(Math.floor(n),t):0}function ei(e){if(!e||typeof e!=`object`)return;let t=e,n=C(t.top);return{cited:C(t.cited),centre:C(t.centre),expand:C(t.expand,Qr),position:C(t.position),tall:t.tall===!0,top:n>0?n:null,offset:Number.isFinite(Number(t.offset))?Math.round(Number(t.offset)):0}}function ti(e){let t=e.getBoundingClientRect().top;for(let n of e.querySelectorAll(`tr[data-line]`)){let e=n.getBoundingClientRect();if(e.bottom>t)return{top:Number(n.dataset.line)||null,offset:Math.round(e.top-t)}}return{top:null,offset:0}}function ni(e){let t=e.querySelector(`[data-change-navigator]`),n=e.querySelector(`.prb-code-scroll`),r=n&&n.scrollTop>0?ti(n):{top:null,offset:0};return{cited:C(e.dataset.cited),centre:C(e.dataset.centre),expand:C(e.dataset.expand,Qr),position:C(t?.dataset.changePosition??e.dataset.position),tall:e.hasAttribute(`data-expanded`),...r}}function ri(e,t,n){let r=e.querySelector(`.prb-code-scroll`);if(!r)return;if(t===null){r.scrollTop=0;return}let i=null,a=1/0;for(let e of r.querySelectorAll(`tr[data-line]`)){let n=Math.abs((Number(e.dataset.line)||0)-t);n<a&&(i=e,a=n)}i&&(r.scrollTop+=i.getBoundingClientRect().top-r.getBoundingClientRect().top-n)}function ii(e,t){return e.cited===t.cited&&e.centre===t.centre&&e.expand===t.expand&&e.position===t.position}function ai(){let e=new WeakMap,t=0;return{run(n,r,i){let a=++t,o=i().then(t=>e.get(n)?.ticket===a&&(e.delete(n),t(),!0),()=>(e.get(n)?.ticket===a&&e.delete(n),!1));return e.set(n,{ticket:a,request:r,done:o}),o},pending(t){return e.get(t)}}}function oi(e){let t=e.closest(`[data-finding-card]`);if(t)return`card:${t.getAttribute(`data-finding-card`)??``}`;let n=e.closest(`[data-guide-section]`);return n?`theme:${n.getAttribute(`data-guide-section`)??``}`:`view:${e.closest(`[data-view]`)?.getAttribute(`data-view`)??``}`}function si(e){return[...e.querySelectorAll(`[data-file][aria-expanded="true"]`)].map(e=>{let t=$r(e);return{host:oi(e),file:e.getAttribute(`data-file`)??``,line:e.getAttribute(`data-line`)??``,...t?{state:ni(t)}:{}}})}function ci(e,t){return e.host===t.host&&e.file===t.file&&e.line===t.line}function li(e,t){for(let n of e.querySelectorAll(`[data-file]`))if(n.getAttribute(`data-file`)===t.file&&(n.getAttribute(`data-line`)??``)===t.line&&oi(n)===t.host)return n;return null}function ui(e){if(!e||typeof e!=`object`)return!1;let{host:t,file:n,line:r}=e;return typeof t==`string`&&typeof n==`string`&&n!==``&&typeof r==`string`}function di(e){let{doc:t,main:n,rail:r,log:i,panes:a}=e,o={};for(let e of t.querySelectorAll(`[data-rail-toggle][aria-controls]`))o[e.getAttribute(`aria-controls`)]=e.getAttribute(`aria-expanded`)===`true`;let s=a?.dataset.ask;return{main:n?.scrollTop??0,rail:r?.scrollTop??0,ask:s===`open`||s===`closed`?s:null,log:i?.scrollTop??0,folds:o,panels:si(t),focus:p(t.activeElement,t.body)}}async function fi(e,t,n){if(!t)return!1;let{doc:r,main:i,rail:a,log:o}=e,c=t.folds&&typeof t.folds==`object`?t.folds:{};for(let e of r.querySelectorAll(`[data-rail-toggle][aria-controls]`)){let t=c[e.getAttribute(`aria-controls`)];typeof t==`boolean`&&n.setFold(e,t)}if((t.ask===`open`||t.ask===`closed`)&&n.setAsk(t.ask===`open`),Array.isArray(t.panels)){let e=t.panels.filter(ui).map(e=>({...e,state:ei(e.state)}));for(let t of si(r))if(!e.some(e=>ci(e,t))){let e=li(r,t);e&&n.closePanel(e)}let i=[];for(let t of e){let e=li(r,t);e&&i.push(n.openPanel(e,t.state).catch(()=>{}))}await Promise.all(i)}if(!n.stillCurrent())return!1;let l=s(t,`main`);i&&l!==null&&(i.scrollTop=l);let u=s(t,`rail`);a&&u!==null&&(a.scrollTop=u);let d=s(t,`log`);return o&&d!==null&&(o.scrollTop=d),g(r,t.focus),!0}var pi=`prb-ask-draft:`,mi=`prb-ask-staged:`,hi=300;function gi(e){return`${pi}${e}`}function _i(e){return`${mi}${e}`}function vi(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t?.text!=`string`||t.source!==`selection`&&t.source!==`finding`)return null;let n=t.continues,r=n&&typeof n.id==`string`&&(n.kind===`issue`||n.kind===`question`)?{kind:n.kind,id:n.id,...Number.isFinite(n.writtenAt)?{writtenAt:n.writtenAt}:{}}:void 0;return{text:t.text,source:t.source,...r?{continues:r}:{}}}catch{return null}}function yi(e,t){let{storage:n,win:r}=t,i=gi(t.path),a=_i(t.path),o=null,s=e=>{try{e.trim()===``?(n?.removeItem(i),n?.removeItem(a)):n?.setItem(i,e)}catch{}},c=null;if(t.restore&&e.value===``)try{let t=n?.getItem(i);if(t){e.value=t;let r=vi(n?.getItem(a));c=r&&t.includes(r.text)?r:null}}catch{}let l={restoredStage:c,stage(e){try{n?.setItem(a,JSON.stringify(e))}catch{}},save(){o!==null&&r.clearTimeout(o),o=null,s(e.value)},saveSoon(){o!==null&&r.clearTimeout(o),o=r.setTimeout(()=>l.save(),hi)},clear(){o!==null&&r.clearTimeout(o),o=null,s(``)}};return e.addEventListener(`input`,()=>l.saveSoon()),r.addEventListener(`pagehide`,()=>l.save()),l}function bi(e){if(!Number.isFinite(e))return``;let t=Math.round((Date.now()-e)/6e4);if(t<1)return`just now`;if(t<60)return`${t} minute${t===1?``:`s`} ago`;let n=Math.round(t/60);if(n<24)return`${n} hour${n===1?``:`s`} ago`;let r=Math.round(n/24);return`${r} day${r===1?``:`s`} ago`}function xi(){return`<button type="button" class="prb-update-btn" data-review-update>Update review</button>`}var Si=`Updating this review checks the latest commits and refreshes the PR conversation. Your progress and Buddy AI history will be kept.`;function Ci(e){return`<details class="prb-update-alt">
47
47
  <summary>Start a new review</summary>
48
48
  <span>A brand new review, with its own findings and its own path through the change. Run <code>${y(e)}</code> in your session.<button type="button" class="prb-fresh-quiet" data-copy-command="${y(e)}">Copy</button></span>
49
49
  </details>`}var wi=`prreviewbuddy review --fresh`;function Ti(e,t){return e?e.code.state===`fixed`?{label:`Freshness: Fixed`,state:`fixed`}:t?{label:`PR updated`,state:`changed`}:e.code.state===`changed`?{label:e.code.rewritten?`Code rewritten`:`Code changed`,state:`changed`}:e.code.state===`current`?{label:`Review up to date`,state:`current`}:{label:`Freshness unknown`,state:`unknown`}:t?{label:`PR updated`,state:`changed`}:{label:`Check for updates`,state:`unknown`}}function Ei(e,t){if(!t.actions)return!1;let n=e??(t.remote?Ni(t.remote):null);if(!n)return!1;let r=n.code.state===`fixed`?null:t.remote??null;return n.code.state===`changed`||r!==null||n.code.reason===`missing-commit`}function Di(e,t={}){let n=e??(t.remote?Ni(t.remote):null);if(!n)return``;let r=n.code.state===`fixed`?null:t.remote??null,i=n.code.state===`changed`||r!==null,a=n.code.reason===`missing-commit`,o=t.availability?.state===`missing`,s=r?.sha??n.code.latestSha,c=t.dismissedSha!==void 0&&t.dismissedSha===s;if(!t.open&&!o&&(!(i||a)||c))return``;let l=r?Pi(n.code,r):Mi(n.code,t.availability??null),u=e?[...l.facts,`checked ${y(bi(n.checkedAt))}`]:l.facts;return`<div class="prb-fresh" data-state="${i||a?`changed`:`quiet`}" role="status">
@@ -173,7 +173,7 @@ import{B as e,D as t,F as n,G as r,H as i,I as a,J as o,K as s,L as c,O as l,P a
173
173
  </div>
174
174
  ${f}
175
175
  <div class="prb-code-scroll"><table class="prb-code-table"><tbody>${o}</tbody></table></div>
176
- ${l}`,Nc(e,t),Jc(e),Yc(e),(n.focus?zc(e,n.focus):e.querySelector(`.prb-code-target`))?.scrollIntoView({block:`center`}),ml(e,t)}async function Xl(e,t,n){let r=Rc(t,n);if(!r)return;let i=zc(e,r.anchor);if(i)t.outerHTML=Lc(Bc(t),r.key),i.scrollIntoView({block:`center`});else{let t=e.querySelector(`[data-expand-file]`);if(!t?.dataset.expandFile)return;await Jl(e,t.dataset.expandFile,{cited:Number(t.dataset.expandCited)||0,centre:r.anchor.line,expand:Math.max(1,(Number(t.dataset.expandStep)||1)-1),position:r.key,focus:r.anchor})}let a=e.querySelector(`[data-change-step="${n}"]`),o=e.querySelector(`[data-change-step="${n===`next`?`previous`:`next`}"]`);(a&&!a.disabled?a:o)?.focus({preventScroll:!0})}function Zl(e,t,n){let r=`${xl.replace(/\/$/,``)}/${e}`,i=bl.replace(`{path}`,r).replace(`{line}`,String(Math.max(1,t)));n!==null&&wl({event:`editor_opened`,fromFinding:n}),window.location.href=i}var z=document.querySelector(`[data-ask-log]`);z&&z.querySelector(`.prb-msg`)&&z.scrollTo({top:z.scrollHeight});var Ql=document.querySelector(`[data-ask-form]`),B=Ql?.querySelector(`textarea`);function $l(e,t){let n=document.createElement(`div`);return n.className=e===`user`?`prb-msg prb-msg-user`:`prb-msg prb-msg-${e===`error`?`error`:`assistant`}`,e===`assistant`?(n.classList.add(`prb-md`),n.innerHTML=qe(t)+yt(t)):n.textContent=t,z?.appendChild(n),z?.scrollTo({top:z.scrollHeight}),n}function eu(){let e=document.createElement(`div`);return e.className=`prb-thinking`,e.innerHTML=`<i></i><i></i><i></i><span>Reading the change…</span>`,z?.appendChild(e),z?.scrollTo({top:z.scrollHeight}),e}var V=null,H=!!z?.querySelector(`[data-ask-pending]`);function tu(){let e=document.createElement(`div`);e.className=`prb-stopped`,e.textContent=`Stopped.`,z?.appendChild(e),z?.scrollTo({top:z.scrollHeight})}async function nu(e,t=`free_text`,n={}){let r=e.trim();if(!r||V||H)return;document.querySelector(`.prb-ask-empty`)?.remove(),$l(`user`,r);let i=eu();V=new AbortController,iu(!0);try{let e=await fetch(P(`/ask`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({question:r,sectionId:Ol,source:t,...n}),signal:V.signal}),a=await e.json().catch(()=>null);if(e.status===409&&(a?.running||a?.updating)){ru(r,n.continuesExplanation),window.location.reload();return}if(i.remove(),a?.stopped){tu();return}if(!e.ok||!a?.answer){$l(`error`,a?.error??`Buddy AI did not answer. Check the terminal running PR Review Buddy.`);return}$l(`assistant`,a.answer),a.explanation&&Vn(document,a.explanation),a.reassessment?.card&&Gn(document,a.reassessment.card)}catch(e){i.remove(),e instanceof DOMException&&e.name===`AbortError`?(tu(),ru(r,n.continuesExplanation)):($l(`error`,`Could not reach PR Review Buddy. The workspace server may have stopped.`),ru(r,n.continuesExplanation))}finally{V=null,iu(!1)}}function ru(e,t){!B||B.value||(B.value=e,Af?.save(),t&&(U=U?.continues&&e.includes(U.text)?U:{text:e,source:`finding`,continues:t},Af?.stage(U)))}function iu(e){let t=Ql?.querySelector(`button`);t&&(t.textContent=e?`Stop`:`Ask`,t.toggleAttribute(`data-stop`,e),t.disabled=!1);for(let t of document.querySelectorAll(au))t.disabled=e;e&&I.closeAll(),e||B?.focus()}var au=`[data-suggestion], .pr-helper-explain-simply-button`;function ou(){let e=Ql?.querySelector(`button`);e&&(e.textContent=`Stopping…`,e.disabled=!0),fetch(P(`/stop`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`ask`})}).catch(()=>{}).finally(()=>{V?.abort()})}Ql?.addEventListener(`submit`,e=>{if(e.preventDefault(),V||H)return ou();let t=B?.value??``;B&&(B.value=``),Af?.clear();let n=Un(U,t);nu(t,su(t),n?{continuesExplanation:n}:{})}),H&&iu(!0);var U=null;function su(e){return U&&e.includes(U.text)?U.source:`free_text`}B?.addEventListener(`keydown`,e=>{if(e.key===`Enter`&&!e.shiftKey){if(e.preventDefault(),V||H)return;Ql?.requestSubmit()}}),B?.addEventListener(`input`,()=>{B&&(B.style.height=`auto`,B.style.height=`${Math.min(B.scrollHeight,140)}px`)});async function cu(e){try{await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({answeredQuestionIds:e})})}catch{}}function lu(){return[...document.querySelectorAll(`[data-question-answered][data-answered="true"]`)].map(e=>e.dataset.questionAnswered??``).filter(Boolean)}function uu(e,t){e.dataset.answered=String(t),e.textContent=t?`Mark as unanswered`:`Mark answered`;let n=e.closest(`[data-finding-card]`);n?.classList.toggle(`pr-helper-question-card-answered`,t),n&&gu(n,t,`questions`),Su()}function du(){return[...document.querySelectorAll(`[data-issue-dismissed][data-dismissed="true"]`)].map(e=>({id:e.dataset.issueDismissed??``,sessionId:e.dataset.dismissedIn||Cl})).filter(e=>e.id)}async function fu(e){try{await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissedIssues:e})})}catch{}}function pu(e,t){e.dataset.dismissed=String(t),e.textContent=t?`Reopen`:`Dismiss`,delete e.dataset.stale,t?e.dataset.dismissedIn=Cl:delete e.dataset.dismissedIn;let n=e.closest(`[data-finding-card]`);n&&(n.classList.toggle(`pr-helper-issue-card-dismissed`,t),n.querySelector(`.pr-helper-dismissal-stale`)?.remove(),n.querySelector(`.pr-helper-finding-status-dismissed`)?.remove(),t&&n.querySelector(`.pr-helper-issue-badges`)?.prepend(mu()),gu(n,t||e.dataset.settled===`true`,`issues`),wu())}function mu(){let e=document.createElement(`span`);return e.className=`pr-helper-finding-status pr-helper-finding-status-dismissed pr-helper-tip`,e.dataset.tip=Dn,e.textContent=`Dismissed by you`,e}var hu=new WeakMap;function gu(e,t,n){let r=e.closest(`.pr-helper-closed-findings-list`);if(t!==!!r){if(t){let t=e.parentElement;t&&hu.set(e,{parent:t,before:e.nextElementSibling}),bu(n).append(e),t&&yu(t)}else _u(e,n),(r?.children.length===0?r.closest(`.pr-helper-closed-findings`):null)?.remove();xu(n)}}function _u(e,t){let n=hu.get(e);if(n?.parent.isConnected)n.parent.insertBefore(e,n.before);else{let n=vu(e)??document.querySelector(`[data-view="${t}"]`);n?.insertBefore(e,n.querySelector(`.pr-helper-closed-findings`))}e.closest(`.pr-helper-question-group`)?.removeAttribute(`hidden`)}function vu(e){let t=e.dataset.sectionId;return t?document.querySelector(`[data-question-group="${CSS.escape(t)}"]`):null}function yu(e){let t=e.closest(`.pr-helper-question-group`);t&&!t.querySelector(`[data-finding-card]`)&&(t.hidden=!0)}function bu(e){let t=document.querySelector(`[data-view="${e}"]`),n=t?.querySelector(`[data-closed-findings="${e}"] .pr-helper-closed-findings-list`);if(n)return n;let r=document.createElement(`details`);r.className=`pr-helper-closed-findings`,r.dataset.closedFindings=e;let i=document.createElement(`summary`);i.className=`pr-helper-closed-findings-summary`,i.setAttribute(`data-closed-findings-summary`,``);let a=document.createElement(`div`);return a.className=`pr-helper-closed-findings-list`,r.append(i,a),t?.append(r),a}function xu(e){let t=document.querySelector(`[data-closed-findings="${e}"]`),n=t?.querySelector(`[data-closed-findings-summary]`);if(!t||!n)return;let r=document.querySelectorAll(`[data-view="${e}"] [data-finding-card]`).length,i=t.querySelectorAll(`[data-finding-card]`).length;t.toggleAttribute(`data-nothing-open`,r===i),n.textContent=e===`questions`?`Answered (${i})`:Gr(Cu()),Kn(document)}function Su(){let e=[...document.querySelectorAll(`[data-question-answered]`)];if(e.length===0)return;let t=e.filter(e=>e.dataset.answered!==`true`&&e.dataset.settled!==`true`).length,n=document.querySelector(`.pr-helper-questions-progress`);n&&(n.innerHTML=Kr(e.length,t)),Tu(`questions`,e.length,t,`question`,`answered`)}function Cu(){let e=[...document.querySelectorAll(`[data-issue-dismissed]`)],t=0,n=0;for(let r of e){let e=r.dataset.settled===`true`,i=r.dataset.dismissed===`true`&&r.dataset.stale!==`true`;!e&&!i?t+=1:!e&&i&&(n+=1)}return{total:e.length,open:t,done:e.length-t,reviewerClosed:n}}function wu(){let e=Cu();if(e.total===0)return;let t=document.querySelector(`[data-view="issues"]`),n=t?.querySelector(`.pr-helper-findings-progress`);!n&&t&&e.done>0&&(n=document.createElement(`div`),n.className=`pr-helper-findings-progress`,n.setAttribute(`role`,`status`),t.querySelector(`.prb-doc-title`)?.after(n)),n&&(n.innerHTML=Wr(e.total,e.open,Ar(e))),Tu(`issues`,e.total,e.open,`issue`,Ar(e))}function Tu(e,t,n,r,i){let a=document.querySelector(`[data-view-nav="${e}"] .prb-rail-count`);if(!a)return;let o=e=>`${e} ${r}${e===1?``:`s`}`,s=t-n;a.classList.toggle(`prb-rail-count-done`,t>0&&n===0),t===0?(a.textContent=`0`,a.setAttribute(`aria-label`,`No ${r}s`)):n===0?(a.textContent=`✓`,a.setAttribute(`aria-label`,`All ${o(t)} ${i}`)):(a.textContent=String(n),a.setAttribute(`aria-label`,s===0?o(t):`${n} of ${o(t)} left, ${s} ${i}`))}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-rail-toggle]`);if(n){Vl(n,n.getAttribute(`aria-expanded`)!==`true`);return}let i=t.closest(`a[data-view-nav], a[data-goto-section]`);if(i&&!r(e))return;i&&e.preventDefault();let a=t.closest(`[data-view-nav]`);if(a?.dataset.viewNav){L(a.dataset.viewNav);return}let o=t.closest(`[data-author-context-toggle]`);if(o){Lr(o);return}let s=t.closest(`[data-author-context-reveal]`);if(s){Hr(s);return}let c=t.closest(`[data-overview-nav]`);if(c?.dataset.overviewNav){L(c.dataset.overviewNav===`guide`?`guide`:c.dataset.overviewNav);return}let l=t.closest(`[data-goto-section]`);if(l?.dataset.gotoSection){Rl(l.dataset.gotoSection);return}let u=t.closest(`[data-open-editor]`);if(u?.dataset.openEditor){Zl(u.dataset.openEditor,Number(u.dataset.openLine)||1,!u.closest(`[data-architecture]`)||null);return}let d=t.closest(`[data-deletion-toggle]`);if(d){Mc(d);return}let f=t.closest(`[data-code-expand]`);if(f){let e=f.closest(`.prb-code`);e&&Qc(e,!e.hasAttribute(`data-expanded`));return}let p=t.closest(`[data-change-step]`);if(p){let e=p.closest(`[data-change-navigator]`),t=p.closest(`.prb-code`);e&&t&&!p.disabled&&Xl(t,e,p.dataset.changeStep===`previous`?`previous`:`next`);return}let ee=t.closest(`[data-full-line]`);if(ee){let e=Pc(ee);e&&hl(e);return}let m=t.closest(`[data-expand-file]`);if(m?.dataset.expandFile){let e=m.closest(`.prb-code`);if(e){let t=e.querySelector(`[data-change-navigator]`);Jl(e,m.dataset.expandFile,{cited:Number(m.dataset.expandCited)||0,centre:Number(m.dataset.expandLine)||0,expand:Number(m.dataset.expandStep)||1,position:Number(t?.dataset.changePosition)||0,focus:Vc(t)})}return}let h=t.closest(`[data-focus-toggle]`);if(h?.dataset.focusToggle){Ll(h.dataset.focusToggle);return}let te=t.closest(`[data-prompt-toggle]`);if(te){$u(te.getAttribute(`aria-expanded`)===`true`);return}if(t.closest(`[data-ask-buddy-menu], [data-grade-menu]`))return;let ne=t.closest(`[data-file]`);if(ne?.dataset.file){Kl(ne);return}let re=Jr(t);if(re){Rl(re);return}let ie=t.closest(`[data-question-answered]`);if(ie?.dataset.questionAnswered){uu(ie,ie.dataset.answered!==`true`),Nr(ie);let e=lu();cu(e),wl({event:`question_marked_answered`,answered:e.length,total:document.querySelectorAll(`[data-question-answered]`).length});return}let g=t.closest(`[data-issue-dismissed]`);if(g?.dataset.issueDismissed){pu(g,g.dataset.stale===`true`||g.dataset.dismissed!==`true`);let e=du();fu(e),wl({event:`issue_dismissed`,dismissed:e.length,total:document.querySelectorAll(`[data-issue-dismissed]`).length});return}let ae=t.closest(`[data-suggestion]`);if(ae){nu(ae.textContent??``,`suggestion`);return}if(t.closest(`.pr-helper-explain-simply-button`)){Au(),nu(Sl,`explain_simply`);return}let oe=t.closest(`[data-prompt-use]`);if(oe?.dataset.promptUse){ed(oe.dataset.promptUse);return}let _=t.closest(`[data-prompt-edit]`);if(_?.dataset.promptEdit){xd(_.dataset.promptEdit);return}if(t.closest(`[data-prompt-add]`)){xd(``);return}if(t.closest(`[data-ask-toggle]`)){let e=F?.focus;e?(Tr(F,Fl),Ou(e!==`buddy`)):Ou(!Du())}});var W=document.querySelector(`.prb-body`),Eu=document.querySelector(`.prb-ask`);function Du(){return!!Eu&&getComputedStyle(Eu).display!==`none`}function Ou(e){W&&(W.dataset.ask=e?`open`:`closed`),ku(e)}function ku(e){for(let t of document.querySelectorAll(`[data-ask-toggle]`))t.setAttribute(`aria-expanded`,String(e))}function Au(){F?.focus&&F.focus!==`buddy`&&Tr(F,Fl),Ou(!0)}function ju(){ku(Du())}window.addEventListener(`resize`,ju),oe(P(`/restart`));var Mu=document.querySelector(`[data-file-filter]`),Nu=document.querySelector(`[data-file-count]`),Pu=document.querySelector(`[data-file-none]`);function Fu(){let e=(Mu?.value??``).trim().toLowerCase(),t=0,n=0;for(let r of document.querySelectorAll(`[data-view="files"] .prb-file`)){let i=e===``||(r.dataset.search??``).includes(e);r.hidden=!i,i&&(n+=1,r.classList.contains(`prb-file-referenced`)||(t+=1));let a=r.nextElementSibling;a?.classList.contains(`prb-code`)&&(a.hidden=!i)}for(let t of document.querySelectorAll(`[data-file-group]`)){let n=t.querySelectorAll(`.prb-file:not([hidden])`).length;t.hidden=n===0;let r=t.querySelector(`[data-group-heading]`);if(!r)continue;let i=Number(r.dataset.groupTotal)||0;r.textContent=e&&n!==i?`${r.dataset.groupHeading} · ${n} of ${i}`:`${r.dataset.groupHeading} · ${i}`}Pu&&(Pu.hidden=n>0),Nu&&(Nu.textContent=e?`${t} of ${Iu} file${Iu===1?``:`s`}`:`${Iu} file${Iu===1?``:`s`}`)}var Iu=document.querySelectorAll(`[data-view="files"] .prb-file:not(.prb-file-referenced)`).length;Mu?.addEventListener(`input`,Fu),Mu?.addEventListener(`keydown`,e=>{e.key===`Escape`&&Mu.value!==``&&(e.preventDefault(),Mu.value=``,Fu())}),document.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target,n=t.closest(`.prb-file[data-file][role="button"]`);!n||n!==t||(e.preventDefault(),Kl(n))});var Lu=320,Ru=()=>Math.round(window.innerWidth/2),zu=e=>Math.round(Math.min(Ru(),Math.max(Lu,e)));function Bu(e){W&&(e===null?W.style.removeProperty(`--ask-width`):W.style.setProperty(`--ask-width`,`${e}px`))}function Vu(){return Eu?Math.round(Eu.getBoundingClientRect().width):Lu}function Hu(e){fetch(P(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({askWidth:e})}).catch(()=>{})}var G=document.querySelector(`[data-ask-resize]`);G?.addEventListener(`pointerdown`,e=>{if(e.button!==0||!W||!Eu)return;e.preventDefault(),G.setPointerCapture(e.pointerId),W.dataset.resizing=`true`;let t=e.clientX,n=Vu(),r=e=>{Bu(zu(n+(t-e.clientX)))},i=()=>{G.removeEventListener(`pointermove`,r),G.removeEventListener(`pointerup`,i),G.removeEventListener(`pointercancel`,i),delete W.dataset.resizing,Hu(Vu())};G.addEventListener(`pointermove`,r),G.addEventListener(`pointerup`,i),G.addEventListener(`pointercancel`,i)}),G?.addEventListener(`keydown`,e=>{let t=e.shiftKey?64:16;if(e.key===`ArrowLeft`||e.key===`ArrowRight`){e.preventDefault();let n=e.key===`ArrowLeft`?t:-t,r=zu(Vu()+n);Bu(r),Hu(r);return}(e.key===`Home`||e.key===`Escape`)&&(e.preventDefault(),Bu(null),Hu(null))}),G?.addEventListener(`dblclick`,()=>{Bu(null),Hu(null)}),window.addEventListener(`resize`,()=>{Du()&&W?.style.getPropertyValue(`--ask-width`)&&Bu(zu(Vu()))});var Uu=3e4,Wu=document.visibilityState===`visible`?Date.now():null,Gu=0;function Ku(){Wu!==null&&(Gu+=Date.now()-Wu,Wu=Date.now())}function qu(){Ku();let e=Math.round(Gu/1e3);return Gu-=e*1e3,e}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`?Wu=Date.now():(Ku(),Wu=null)}),setInterval(()=>{let e=qu();e>0&&wl({event:`workspace_heartbeat`,visibleSeconds:e})},Uu),window.addEventListener(`pagehide`,()=>{let e=P(`/event`),t=JSON.stringify({event:`review_completed`,trailingSeconds:qu()});navigator.sendBeacon?.(e,new Blob([t],{type:`application/json`}))||fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:t,keepalive:!0}).catch(()=>{})});var Ju=document.querySelector(`[data-prompt-bank]`),Yu=document.querySelector(`[data-prompt-list]`),K=Xu();function Xu(){try{let e=JSON.parse(Ju?.dataset.prompts??`[]`);return Array.isArray(e)?e:[]}catch{return[]}}function Zu(){if(!Yu)return;Yu.innerHTML=K.map(e=>`<span class="prb-bank-item">
176
+ ${l}`,Nc(e,t),Jc(e),Yc(e),(n.focus?zc(e,n.focus):e.querySelector(`.prb-code-target`))?.scrollIntoView({block:`center`}),ml(e,t)}async function Xl(e,t,n){let r=Rc(t,n);if(!r)return;let i=zc(e,r.anchor);if(i)t.outerHTML=Lc(Bc(t),r.key),i.scrollIntoView({block:`center`});else{let t=e.querySelector(`[data-expand-file]`);if(!t?.dataset.expandFile)return;await Jl(e,t.dataset.expandFile,{cited:Number(t.dataset.expandCited)||0,centre:r.anchor.line,expand:Math.max(1,(Number(t.dataset.expandStep)||1)-1),position:r.key,focus:r.anchor})}let a=e.querySelector(`[data-change-step="${n}"]`),o=e.querySelector(`[data-change-step="${n===`next`?`previous`:`next`}"]`);(a&&!a.disabled?a:o)?.focus({preventScroll:!0})}function Zl(e,t,n){let r=`${xl.replace(/\/$/,``)}/${e}`,i=bl.replace(`{path}`,r).replace(`{line}`,String(Math.max(1,t)));n!==null&&wl({event:`editor_opened`,fromFinding:n}),window.location.href=i}var z=document.querySelector(`[data-ask-log]`);z&&z.querySelector(`.prb-msg`)&&z.scrollTo({top:z.scrollHeight});var Ql=document.querySelector(`[data-ask-form]`),B=Ql?.querySelector(`textarea`);function $l(e,t){let n=document.createElement(`div`);return n.className=e===`user`?`prb-msg prb-msg-user`:`prb-msg prb-msg-${e===`error`?`error`:`assistant`}`,e===`assistant`?(n.classList.add(`prb-md`),n.innerHTML=qe(t)+yt(t)):n.textContent=t,z?.appendChild(n),z?.scrollTo({top:z.scrollHeight}),n}function eu(){let e=document.createElement(`div`);return e.className=`prb-thinking`,e.innerHTML=`<i></i><i></i><i></i><span>Reading the change…</span>`,z?.appendChild(e),z?.scrollTo({top:z.scrollHeight}),e}var V=null,H=!!z?.querySelector(`[data-ask-pending]`);function tu(){let e=document.createElement(`div`);e.className=`prb-stopped`,e.textContent=`Stopped.`,z?.appendChild(e),z?.scrollTo({top:z.scrollHeight})}async function nu(e,t=`free_text`,n={}){let r=e.trim();if(!r||V||H)return;document.querySelector(`.prb-ask-empty`)?.remove(),$l(`user`,r);let i=eu();V=new AbortController,iu(!0);try{let e=await fetch(P(`/ask`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({question:r,sectionId:Ol,source:t,...n}),signal:V.signal}),a=await e.json().catch(()=>null);if(e.status===409&&(a?.running||a?.updating)){ru(r,n.continuesExplanation),window.location.reload();return}if(i.remove(),a?.stopped){tu();return}if(!e.ok||!a?.answer){$l(`error`,a?.error??`Buddy AI did not answer. Check the terminal running PR Review Buddy.`);return}$l(`assistant`,a.answer),a.explanation&&Vn(document,a.explanation),a.reassessment?.card&&Gn(document,a.reassessment.card)}catch(e){i.remove(),e instanceof DOMException&&e.name===`AbortError`?(tu(),ru(r,n.continuesExplanation)):($l(`error`,`Could not reach PR Review Buddy. The workspace server may have stopped.`),ru(r,n.continuesExplanation))}finally{V=null,iu(!1)}}function ru(e,t){!B||B.value||(B.value=e,Af?.save(),t&&(U=U?.continues&&e.includes(U.text)?U:{text:e,source:`finding`,continues:t},Af?.stage(U)))}function iu(e){let t=Ql?.querySelector(`button`);t&&(t.textContent=e?`Stop`:`Ask`,t.toggleAttribute(`data-stop`,e),t.disabled=!1);for(let t of document.querySelectorAll(au))t.disabled=e;e&&I.closeAll(),e||B?.focus()}var au=`[data-suggestion], .pr-helper-explain-simply-button`;function ou(){let e=Ql?.querySelector(`button`);e&&(e.textContent=`Stopping…`,e.disabled=!0),fetch(P(`/stop`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`ask`})}).catch(()=>{}).finally(()=>{V?.abort()})}Ql?.addEventListener(`submit`,e=>{if(e.preventDefault(),V||H)return ou();let t=B?.value??``;B&&(B.value=``),Af?.clear();let n=Un(U,t);nu(t,su(t),n?{continuesExplanation:n}:{})}),H&&iu(!0);var U=null;function su(e){return U&&e.includes(U.text)?U.source:`free_text`}B?.addEventListener(`keydown`,e=>{if(e.key===`Enter`&&!e.shiftKey){if(e.preventDefault(),V||H)return;Ql?.requestSubmit()}}),B?.addEventListener(`input`,()=>{B&&(B.style.height=`auto`,B.style.height=`${Math.min(B.scrollHeight,140)}px`)});async function cu(e){try{await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({answeredQuestionIds:e})})}catch{}}function lu(){return[...document.querySelectorAll(`[data-question-answered][data-answered="true"]`)].map(e=>e.dataset.questionAnswered??``).filter(Boolean)}function uu(e,t){e.dataset.answered=String(t),e.textContent=t?`Mark as unanswered`:`Mark answered`;let n=e.closest(`[data-finding-card]`);n?.classList.toggle(`pr-helper-question-card-answered`,t),n&&gu(n,t,`questions`),Su()}function du(){return[...document.querySelectorAll(`[data-issue-dismissed][data-dismissed="true"]`)].map(e=>({id:e.dataset.issueDismissed??``,sessionId:e.dataset.dismissedIn||Cl})).filter(e=>e.id)}async function fu(e){try{await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissedIssues:e})})}catch{}}function pu(e,t){e.dataset.dismissed=String(t),e.textContent=t?`Reopen`:`Dismiss`,delete e.dataset.stale,t?e.dataset.dismissedIn=Cl:delete e.dataset.dismissedIn;let n=e.closest(`[data-finding-card]`);n&&(n.classList.toggle(`pr-helper-issue-card-dismissed`,t),n.querySelector(`.pr-helper-dismissal-stale`)?.remove(),n.querySelector(`.pr-helper-finding-status-dismissed`)?.remove(),t&&n.querySelector(`.pr-helper-issue-badges`)?.prepend(mu()),gu(n,t||e.dataset.settled===`true`,`issues`),wu())}function mu(){let e=document.createElement(`span`);return e.className=`pr-helper-finding-status pr-helper-finding-status-dismissed pr-helper-tip`,e.dataset.tip=Dn,e.textContent=`Dismissed by you`,e}var hu=new WeakMap;function gu(e,t,n){let r=e.closest(`.pr-helper-closed-findings-list`);if(t!==!!r){if(t){let t=e.parentElement;t&&hu.set(e,{parent:t,before:e.nextElementSibling}),bu(n).append(e),t&&yu(t)}else _u(e,n),(r?.children.length===0?r.closest(`.pr-helper-closed-findings`):null)?.remove();xu(n)}}function _u(e,t){let n=hu.get(e);if(n?.parent.isConnected)n.parent.insertBefore(e,n.before);else{let n=vu(e)??document.querySelector(`[data-view="${t}"]`);n?.insertBefore(e,n.querySelector(`.pr-helper-closed-findings`))}e.closest(`.pr-helper-question-group`)?.removeAttribute(`hidden`)}function vu(e){let t=e.dataset.sectionId;return t?document.querySelector(`[data-question-group="${CSS.escape(t)}"]`):null}function yu(e){let t=e.closest(`.pr-helper-question-group`);t&&!t.querySelector(`[data-finding-card]`)&&(t.hidden=!0)}function bu(e){let t=document.querySelector(`[data-view="${e}"]`),n=t?.querySelector(`[data-closed-findings="${e}"] .pr-helper-closed-findings-list`);if(n)return n;let r=document.createElement(`details`);r.className=`pr-helper-closed-findings`,r.dataset.closedFindings=e;let i=document.createElement(`summary`);i.className=`pr-helper-closed-findings-summary`,i.setAttribute(`data-closed-findings-summary`,``);let a=document.createElement(`div`);return a.className=`pr-helper-closed-findings-list`,r.append(i,a),t?.append(r),a}function xu(e){let t=document.querySelector(`[data-closed-findings="${e}"]`),n=t?.querySelector(`[data-closed-findings-summary]`);if(!t||!n)return;let r=document.querySelectorAll(`[data-view="${e}"] [data-finding-card]`).length,i=t.querySelectorAll(`[data-finding-card]`).length;t.toggleAttribute(`data-nothing-open`,r===i),n.textContent=e===`questions`?`Answered (${i})`:Gr(Cu()),Kn(document)}function Su(){let e=[...document.querySelectorAll(`[data-question-answered]`)];if(e.length===0)return;let t=e.filter(e=>e.dataset.answered!==`true`&&e.dataset.settled!==`true`).length,n=document.querySelector(`.pr-helper-questions-progress`);n&&(n.innerHTML=Kr(e.length,t)),Tu(`questions`,e.length,t,`question`,`answered`)}function Cu(){let e=[...document.querySelectorAll(`[data-issue-dismissed]`)],t=0,n=0,r=0;for(let i of e){let e=i.dataset.settled===`true`,a=i.dataset.dismissed===`true`&&i.dataset.stale!==`true`;!e&&!a?t+=1:!e&&a&&(n+=1),e&&i.dataset.settledBy===`conversation`&&(r+=1)}return{total:e.length,open:t,done:e.length-t,reviewerClosed:n,...r>0?{byConversation:r}:{}}}function wu(){let e=Cu();if(e.total===0)return;let t=document.querySelector(`[data-view="issues"]`),n=t?.querySelector(`.pr-helper-findings-progress`);!n&&t&&e.done>0&&(n=document.createElement(`div`),n.className=`pr-helper-findings-progress`,n.setAttribute(`role`,`status`),t.querySelector(`.prb-doc-title`)?.after(n)),n&&(n.innerHTML=Wr(e.total,e.open,Ar(e))),Tu(`issues`,e.total,e.open,`issue`,Ar(e))}function Tu(e,t,n,r,i){let a=document.querySelector(`[data-view-nav="${e}"] .prb-rail-count`);if(!a)return;let o=e=>`${e} ${r}${e===1?``:`s`}`,s=t-n;a.classList.toggle(`prb-rail-count-done`,t>0&&n===0),t===0?(a.textContent=`0`,a.setAttribute(`aria-label`,`No ${r}s`)):n===0?(a.textContent=`✓`,a.setAttribute(`aria-label`,`All ${o(t)} ${i}`)):(a.textContent=String(n),a.setAttribute(`aria-label`,s===0?o(t):`${n} of ${o(t)} left, ${s} ${i}`))}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-rail-toggle]`);if(n){Vl(n,n.getAttribute(`aria-expanded`)!==`true`);return}let i=t.closest(`a[data-view-nav], a[data-goto-section]`);if(i&&!r(e))return;i&&e.preventDefault();let a=t.closest(`[data-view-nav]`);if(a?.dataset.viewNav){L(a.dataset.viewNav);return}let o=t.closest(`[data-author-context-toggle]`);if(o){Lr(o);return}let s=t.closest(`[data-author-context-reveal]`);if(s){Hr(s);return}let c=t.closest(`[data-overview-nav]`);if(c?.dataset.overviewNav){L(c.dataset.overviewNav===`guide`?`guide`:c.dataset.overviewNav);return}let l=t.closest(`[data-goto-section]`);if(l?.dataset.gotoSection){Rl(l.dataset.gotoSection);return}let u=t.closest(`[data-open-editor]`);if(u?.dataset.openEditor){Zl(u.dataset.openEditor,Number(u.dataset.openLine)||1,!u.closest(`[data-architecture]`)||null);return}let d=t.closest(`[data-deletion-toggle]`);if(d){Mc(d);return}let f=t.closest(`[data-code-expand]`);if(f){let e=f.closest(`.prb-code`);e&&Qc(e,!e.hasAttribute(`data-expanded`));return}let p=t.closest(`[data-change-step]`);if(p){let e=p.closest(`[data-change-navigator]`),t=p.closest(`.prb-code`);e&&t&&!p.disabled&&Xl(t,e,p.dataset.changeStep===`previous`?`previous`:`next`);return}let ee=t.closest(`[data-full-line]`);if(ee){let e=Pc(ee);e&&hl(e);return}let m=t.closest(`[data-expand-file]`);if(m?.dataset.expandFile){let e=m.closest(`.prb-code`);if(e){let t=e.querySelector(`[data-change-navigator]`);Jl(e,m.dataset.expandFile,{cited:Number(m.dataset.expandCited)||0,centre:Number(m.dataset.expandLine)||0,expand:Number(m.dataset.expandStep)||1,position:Number(t?.dataset.changePosition)||0,focus:Vc(t)})}return}let h=t.closest(`[data-focus-toggle]`);if(h?.dataset.focusToggle){Ll(h.dataset.focusToggle);return}let te=t.closest(`[data-prompt-toggle]`);if(te){$u(te.getAttribute(`aria-expanded`)===`true`);return}if(t.closest(`[data-ask-buddy-menu], [data-grade-menu]`))return;let ne=t.closest(`[data-file]`);if(ne?.dataset.file){Kl(ne);return}let re=Jr(t);if(re){Rl(re);return}let ie=t.closest(`[data-question-answered]`);if(ie?.dataset.questionAnswered){uu(ie,ie.dataset.answered!==`true`),Nr(ie);let e=lu();cu(e),wl({event:`question_marked_answered`,answered:e.length,total:document.querySelectorAll(`[data-question-answered]`).length});return}let g=t.closest(`[data-issue-dismissed]`);if(g?.dataset.issueDismissed){pu(g,g.dataset.stale===`true`||g.dataset.dismissed!==`true`);let e=du();fu(e),wl({event:`issue_dismissed`,dismissed:e.length,total:document.querySelectorAll(`[data-issue-dismissed]`).length});return}let ae=t.closest(`[data-suggestion]`);if(ae){nu(ae.textContent??``,`suggestion`);return}if(t.closest(`.pr-helper-explain-simply-button`)){Au(),nu(Sl,`explain_simply`);return}let oe=t.closest(`[data-prompt-use]`);if(oe?.dataset.promptUse){ed(oe.dataset.promptUse);return}let _=t.closest(`[data-prompt-edit]`);if(_?.dataset.promptEdit){xd(_.dataset.promptEdit);return}if(t.closest(`[data-prompt-add]`)){xd(``);return}if(t.closest(`[data-ask-toggle]`)){let e=F?.focus;e?(Tr(F,Fl),Ou(e!==`buddy`)):Ou(!Du())}});var W=document.querySelector(`.prb-body`),Eu=document.querySelector(`.prb-ask`);function Du(){return!!Eu&&getComputedStyle(Eu).display!==`none`}function Ou(e){W&&(W.dataset.ask=e?`open`:`closed`),ku(e)}function ku(e){for(let t of document.querySelectorAll(`[data-ask-toggle]`))t.setAttribute(`aria-expanded`,String(e))}function Au(){F?.focus&&F.focus!==`buddy`&&Tr(F,Fl),Ou(!0)}function ju(){ku(Du())}window.addEventListener(`resize`,ju),oe(P(`/restart`));var Mu=document.querySelector(`[data-file-filter]`),Nu=document.querySelector(`[data-file-count]`),Pu=document.querySelector(`[data-file-none]`);function Fu(){let e=(Mu?.value??``).trim().toLowerCase(),t=0,n=0;for(let r of document.querySelectorAll(`[data-view="files"] .prb-file`)){let i=e===``||(r.dataset.search??``).includes(e);r.hidden=!i,i&&(n+=1,r.classList.contains(`prb-file-referenced`)||(t+=1));let a=r.nextElementSibling;a?.classList.contains(`prb-code`)&&(a.hidden=!i)}for(let t of document.querySelectorAll(`[data-file-group]`)){let n=t.querySelectorAll(`.prb-file:not([hidden])`).length;t.hidden=n===0;let r=t.querySelector(`[data-group-heading]`);if(!r)continue;let i=Number(r.dataset.groupTotal)||0;r.textContent=e&&n!==i?`${r.dataset.groupHeading} · ${n} of ${i}`:`${r.dataset.groupHeading} · ${i}`}Pu&&(Pu.hidden=n>0),Nu&&(Nu.textContent=e?`${t} of ${Iu} file${Iu===1?``:`s`}`:`${Iu} file${Iu===1?``:`s`}`)}var Iu=document.querySelectorAll(`[data-view="files"] .prb-file:not(.prb-file-referenced)`).length;Mu?.addEventListener(`input`,Fu),Mu?.addEventListener(`keydown`,e=>{e.key===`Escape`&&Mu.value!==``&&(e.preventDefault(),Mu.value=``,Fu())}),document.addEventListener(`keydown`,e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target,n=t.closest(`.prb-file[data-file][role="button"]`);!n||n!==t||(e.preventDefault(),Kl(n))});var Lu=320,Ru=()=>Math.round(window.innerWidth/2),zu=e=>Math.round(Math.min(Ru(),Math.max(Lu,e)));function Bu(e){W&&(e===null?W.style.removeProperty(`--ask-width`):W.style.setProperty(`--ask-width`,`${e}px`))}function Vu(){return Eu?Math.round(Eu.getBoundingClientRect().width):Lu}function Hu(e){fetch(P(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({askWidth:e})}).catch(()=>{})}var G=document.querySelector(`[data-ask-resize]`);G?.addEventListener(`pointerdown`,e=>{if(e.button!==0||!W||!Eu)return;e.preventDefault(),G.setPointerCapture(e.pointerId),W.dataset.resizing=`true`;let t=e.clientX,n=Vu(),r=e=>{Bu(zu(n+(t-e.clientX)))},i=()=>{G.removeEventListener(`pointermove`,r),G.removeEventListener(`pointerup`,i),G.removeEventListener(`pointercancel`,i),delete W.dataset.resizing,Hu(Vu())};G.addEventListener(`pointermove`,r),G.addEventListener(`pointerup`,i),G.addEventListener(`pointercancel`,i)}),G?.addEventListener(`keydown`,e=>{let t=e.shiftKey?64:16;if(e.key===`ArrowLeft`||e.key===`ArrowRight`){e.preventDefault();let n=e.key===`ArrowLeft`?t:-t,r=zu(Vu()+n);Bu(r),Hu(r);return}(e.key===`Home`||e.key===`Escape`)&&(e.preventDefault(),Bu(null),Hu(null))}),G?.addEventListener(`dblclick`,()=>{Bu(null),Hu(null)}),window.addEventListener(`resize`,()=>{Du()&&W?.style.getPropertyValue(`--ask-width`)&&Bu(zu(Vu()))});var Uu=3e4,Wu=document.visibilityState===`visible`?Date.now():null,Gu=0;function Ku(){Wu!==null&&(Gu+=Date.now()-Wu,Wu=Date.now())}function qu(){Ku();let e=Math.round(Gu/1e3);return Gu-=e*1e3,e}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`?Wu=Date.now():(Ku(),Wu=null)}),setInterval(()=>{let e=qu();e>0&&wl({event:`workspace_heartbeat`,visibleSeconds:e})},Uu),window.addEventListener(`pagehide`,()=>{let e=P(`/event`),t=JSON.stringify({event:`review_completed`,trailingSeconds:qu()});navigator.sendBeacon?.(e,new Blob([t],{type:`application/json`}))||fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:t,keepalive:!0}).catch(()=>{})});var Ju=document.querySelector(`[data-prompt-bank]`),Yu=document.querySelector(`[data-prompt-list]`),K=Xu();function Xu(){try{let e=JSON.parse(Ju?.dataset.prompts??`[]`);return Array.isArray(e)?e:[]}catch{return[]}}function Zu(){if(!Yu)return;Yu.innerHTML=K.map(e=>`<span class="prb-bank-item">
177
177
  <button type="button" class="prb-bank-use" data-prompt-use="${R(e.id)}" title="${R(e.prompt)}">${R(e.name)}</button>
178
178
  <button type="button" class="prb-bank-edit" data-prompt-edit="${R(e.id)}" aria-label="Edit ${R(e.name)}">&#9998;</button>
179
179
  </span>`).join(``);let e=document.querySelector(`[data-prompt-count]`);e&&(e.textContent=String(K.length)),cd()}async function Qu(e){try{let t=await(await fetch(P(`/prompts`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({prompts:e})})).json().catch(()=>null);K=Array.isArray(t?.prompts)?t.prompts:K}catch{}Zu()}function $u(e){document.querySelector(`[data-prompt-toggle]`)?.setAttribute(`aria-expanded`,String(!e)),Ju?.toggleAttribute(`data-collapsed`,e),Yu&&(Yu.hidden=e),fetch(P(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({promptsCollapsed:e})}).catch(()=>{})}function ed(e){let t=K.find(t=>t.id===e);!t||!B||(B.value=Zr(B.value,t.prompt),Au(),B.focus(),B.setSelectionRange(B.value.length,B.value.length),B.dispatchEvent(new Event(`input`)))}var td=document.querySelector(`.prb-doc`),nd=null,rd=null;function id(){z&&(rd?.(),rd=yn(z,{layout:`flat`,actions:Sn.map(e=>({id:e.id,label:e.label})),onChoose:(e,t)=>ld(e,`selection`,t)}))}var ad=`reassess`;function od(e){let t=sd();if(!e)return t;let n={id:ad,label:`Reassess ${e.kind===`issue`?`severity`:`importance`}`};return[...t.filter(e=>!e.section),n,...t.filter(e=>e.section)]}function sd(){return[...bn.map(e=>({id:e.id,label:e.label})),...K.map(e=>({id:rr(e.id),label:e.name,section:nr}))]}function cd(){td&&(nd?.(),nd=yn(td,{triggerLabel:`Ask Buddy AI`,actions:sd(),ignoreWithin:`[data-ask-buddy-menu]`,onChoose:(e,t)=>ld(e,`selection`,t)}))}function ld(e,t,n,r){kr(e,{context:t,text:n},{savedPrompt:e=>K.find(t=>t.id===e)?.prompt??null,stage:e=>ud(e,t,r?.continuesExplanation?r.ref:void 0),send:t=>{Au(),nu(t,`finding`,Rn(e,r?.ref))}})}function ud(e,t,n){B&&(U={text:e,source:t,...n?{continues:n}:{}},Af?.stage(U),B.value=Zr(B.value,e),Au(),B.focus(),B.setSelectionRange(B.value.length,B.value.length),B.dispatchEvent(new Event(`input`)))}function dd(e){let t=e.querySelector(`[data-menu-panel]`);if(t){t.innerHTML=ln(od(Bn(e)));for(let e of t.querySelectorAll(`[data-selection-action]`))e.setAttribute(`role`,`menuitem`);if(V||H)for(let e of t.querySelectorAll(`button`))e.disabled=!0}}function fd(e){let t=e.querySelector(`[data-menu-items]`),n=e.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!1),n&&(n.hidden=!0),e.querySelector(`[data-menu-error]`)?.remove()}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-ask-buddy-menu] [data-selection-action]`),n=t?.closest(`[data-ask-buddy-menu]`),r=t?.dataset.selectionAction;if(!n||!r)return;let i=En(n),a=Bn(n);if(I.close(n),r===ad){i&&a&&pd(a,i);return}i&&ld(r,`finding`,i,a?{ref:a}:void 0)});function pd(e,t){if(V||H)return;let n=e.kind===`issue`?`severity`:`importance`;Au(),nu(`${wn(t,{maxChars:1/0})}\n\nReassess its ${n} in light of what we know now.`,`finding`,{reassesses:e})}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-reassessment-ask-more]`),n=t?er(t):null;n&&ud(n,`finding`)}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-simple-explanation-more]`);if(!t)return;let n=zn(t),r=En(t);n&&r&&ld(`custom`,`finding`,r,{ref:n,continuesExplanation:!0})}),cd(),id();var q=Ba({root:document,showView:e=>L(e)}),md=Ya({doc:document,pane:()=>document.querySelector(`.prb-doc`),openMenu:(e,t)=>I.open(e,{focusFirst:!0,returnFocus:t}),selecting:()=>q.state().selecting,flip:e=>void q.flip(e)});Mt(document),Kt(document);var hd=document.querySelector(`[data-prompt-dialog]`),gd=document.querySelector(`[data-prompt-name]`),_d=document.querySelector(`[data-prompt-text]`),vd=document.querySelector(`[data-prompt-delete]`),yd=document.getElementById(`prb-prompt-title`),bd=``;function xd(e){let t=K.find(t=>t.id===e);bd=t?.id??``,yd&&(yd.textContent=t?`Edit prompt`:`Save a prompt`),gd&&(gd.value=t?.name??``),_d&&(_d.value=t?.prompt??``),vd&&(vd.hidden=!t),hd?.showModal(),gd?.focus()}async function Sd(){let e=gd?.value.trim()??``,t=_d?.value.trim()??``;if(!e||!t){(e?_d:gd)?.focus();return}let n=bd?K.map(n=>n.id===bd?{...n,name:e,prompt:t}:n):[...K,{id:crypto.randomUUID(),name:e,prompt:t}];hd?.close(),await Qu(n)}async function Cd(){if(!bd)return;let e=K.filter(e=>e.id!==bd);hd?.close(),await Qu(e)}document.querySelector(`[data-prompt-cancel]`)?.addEventListener(`click`,()=>hd?.close()),vd?.addEventListener(`click`,()=>void Cd()),document.querySelector(`[data-prompt-save]`)?.addEventListener(`click`,()=>void Sd());var J=document.querySelector(`[data-fresh-region]`),Y=document.querySelector(`[data-fresh-status]`),wd=document.querySelector(`[data-fresh-check]`),X=Fd(J?.dataset.report),Td=`prb-fresh-reopen`,Ed=jd(),Dd=J?.dataset.dismissedSha,Od=Ad(J?.dataset.availability),Z=kd(J?.dataset.remote);function kd(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Ad(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function jd(){try{return sessionStorage.getItem(Td)!==null&&(sessionStorage.removeItem(Td),!0)}catch{return!1}}Ed&&Qd(),wd?.addEventListener(`click`,()=>void zd());var Md=document.querySelector(`[data-fetch-remote]`);Md&&(fetch(P(`/fetch`)).then(e=>e.ok?e.json():null).then(e=>{e?.fetchable===!0&&(Md.hidden=!1)}).catch(()=>{}),Md.addEventListener(`click`,()=>void Nd(Md)));async function Nd(e){if(e.disabled)return;e.disabled=!0;let t=null;try{let e=await fetch(P(`/fetch`),{method:`POST`});e.ok&&(t=await e.json())}catch{}e.disabled=!1;let n=t??{repositories:1,fetched:0,failed:[],moved:0};ae(te(),{kind:n.fetched<n.repositories?`failed`:`ready`,text:ce(n)}),n.fetched>0&&await zd()}J?.addEventListener(`click`,e=>{let t=e.target;if(t.closest(`[data-fresh-close]`))return Ed=!1,Qd();let n=t.closest(`[data-fresh-dismiss]`);n&&(Dd=n.dataset.freshDismiss||void 0,Ed=!1,Qd(),Pd())});function Pd(){fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissFreshnessSha:Dd??null})}).catch(()=>{})}function Fd(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}var Id=Ta(),Ld=!1,Rd=null;async function zd(){if(Ld)return;Ld=!0,Gd(!0),Rd&&await Rd;let e=Kd(X,Z),t=await Vd(!1);Gd(!1),t&&Zd(),Ld=!1,t&&(X?.code.state===`changed`||Z!==null)&&Dd!==void 0&&(Dd=void 0,Pd()),Qd(),Bd(t?Kd(X,Z)===e?`No change`:`Updated`:`Could not check`)}function Bd(e){Y&&(Y.textContent=e,window.setTimeout($d,2600))}async function Vd(e){let t=Id.snapshot();try{let n=await(await fetch(`${P(`/freshness`)}${e?`&quiet=1`:``}`)).json();X=n.report??null,Od=n.availability??null,Z=n.remote??null,Jd=n.kiss??null,n.kissDismissedSha!==void 0&&(Yd=n.kissDismissedSha??void 0),n.prState!==void 0&&Wd(n.prState);let r=wa(n.standing);return r&&Id.current(t)&&ga(document,r),!0}catch{return!1}}async function Hd(){if(Ld||Rd||!J)return;let e=Kd(X,Z),t=JSON.stringify(Jd);Rd=Vd(!0);let n=await Rd;Rd=null,Ud=Date.now(),n&&(Kd(X,Z)!==e&&Qd(),JSON.stringify(Jd)!==t&&Zd())}var Ud=Date.now();function Wd(e){let t=document.querySelector(`[data-pr-state-slot]`);if(!t)return;let n=ha(e,t.hasAttribute(`data-beside-number`));t.innerHTML!==n&&(t.innerHTML=n)}function Gd(e){wd&&(wd.disabled=e),Y&&e&&(Y.textContent=`Checking…`,Y.dataset.state=`checking`)}function Kd(e,t){if(!e)return JSON.stringify({report:`none`,remote:t});let{checkedAt:n,...r}=e;return JSON.stringify({...r,remote:t})}var qd=document.querySelector(`[data-kiss-fresh-region]`),Jd=Xd(qd?.dataset.freshness),Yd=qd?.dataset.dismissedSha;function Xd(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Zd(){ca(Jd?.state===`changed`),qd&&(qd.innerHTML=ea(qd.dataset.reviewedSha??``,Jd,{dismissedSha:Yd,actions:vl!==``}))}qd?.addEventListener(`click`,e=>{let t=e.target.closest(`[data-kiss-freshness-dismiss]`);t&&(Yd=t.dataset.kissFreshnessDismiss||void 0,Zd(),fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissKissFreshnessSha:Yd??null})}).catch(()=>{}))});function Qd(){J&&(J.innerHTML=Di(X,{dismissedSha:Dd,open:Ed,actions:vl!==``,availability:Od,remote:Z}),$d())}function $d(){if(Y&&(X||Z)){let{label:e,state:t}=Ti(X,Z);Y.textContent=e,Y.dataset.state=t,Ri(document,t)}}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-copy-command]`);if(n)return ef(n);let r=t.closest(`[data-notice-dismiss]`);if(r){r.closest(`[data-notice]`)?.remove(),fetch(P(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissNotice:r.dataset.noticeDismiss})}).catch(()=>{});return}let i=t.closest(`[data-pr-recheck]`);if(i)return void nf(i);if(t.closest(`[data-review-update]`))return void sf();let a=t.closest(`[data-update-cancel]`);if(a)return void lf(a,`update`);let o=t.closest(`[data-review-cancel]`);if(o)return void lf(o,`review`);t.closest(`[data-update-close]`)&&document.querySelector(`[data-update-result]`)?.remove()});function ef(e){let t=e.dataset.copyCommand??``;navigator.clipboard?.writeText(t).then(()=>tf(e,`Copied`),()=>tf(e,`Select it`))}function tf(e,t,n=1400){let r=e.textContent;e.textContent=t,setTimeout(()=>{e.textContent=r},n)}async function nf(e){let t=[...document.querySelectorAll(`[data-pr-recheck]`)];for(let e of t)e.disabled=!0;let n=Date.now(),r=()=>{let e=Math.max(1,Math.round((Date.now()-n)/1e3));for(let n of t){let t=rf(n);t?t.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Re-checking the conversation, ${e}s. ${ff}`:n.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Checking… ${e}s`}};r();let i=window.setInterval(r,1e3),a=rf(e)?null:pf(e);try{await fetch(P(`/refresh`),{method:`POST`})}catch{}finally{window.clearInterval(i),a?.remove()}rf(e)&&af(),window.location.reload()}function rf(e){return e.closest(`.prb-fresh-notes p`)}function af(){try{sessionStorage.setItem(Td,`1`)}catch{}}var of=!1;async function sf(){if(of)return;of=!0;let e=[...document.querySelectorAll(`[data-review-update]`)];for(let t of e)t.disabled=!0,t.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Updating…`;let t=!1,n=()=>{t||(t=!0,window.clearInterval(r),window.location.reload())},r=window.setInterval(async()=>{try{let e=await(await fetch(P(`/job`))).json();e.update&&e.update.phase!==`none`&&!Hi(e.update.phase)&&n()}catch{}},500);try{await fetch(P(`/update`),{method:`POST`})}catch{}n()}var cf={review:{path:`/job`,body:e=>({stop:e}),took:e=>e.stopped===!0,label:`Cancel review`,tooLate:`Too late to cancel: the review had already finished and was being saved.`,running:e=>e.phase},update:{path:`/update`,body:e=>({cancel:e}),took:e=>e.cancelled===!0,label:`Cancel update`,tooLate:`Too late to cancel: the update had already started saving its result.`,running:e=>e.update?.phase}};async function lf(e,t){let n=cf[t],r=(t===`review`?e.dataset.reviewCancel:e.dataset.updateCancel)??``;e.disabled=!0,e.textContent=`Cancelling…`;let i;try{let e=await fetch(P(n.path),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n.body(r))});if(!e.ok)throw Error(`refused`);i=n.took(await e.json())}catch{e.disabled=!1,e.textContent=n.label,df(e,`The workspace server did not answer, so nothing was cancelled. Try again.`);return}i||df(e,n.tooLate),await fo({look:async()=>{let e=await fetch(P(`/job`),{signal:AbortSignal.timeout(uf)});return n.running(await e.json())},reload:()=>window.location.reload()})}var uf=3e3;function df(e,t){let n=e.parentElement;if(!n)return;let r=n.querySelector(`.prb-progress-cancel-status`);r||(r=document.createElement(`p`),r.className=`prb-progress-cancel-status`,r.setAttribute(`role`,`status`),n.appendChild(r)),r.textContent=t}var ff=`Fetching the latest threads from your pull request. This usually takes under a minute.`;function pf(e){let t=e.parentElement;if(!t)return null;let n=document.createElement(`span`);return n.className=`prb-recheck-status`,n.setAttribute(`role`,`status`),n.textContent=ff,t.appendChild(n),n}var mf=ao(document),hf=null,gf=Date.now();function _f(){hf===null&&(hf=window.setTimeout(()=>{hf=null,vf()},le(Date.now()-gf)))}async function vf(){try{let e=await(await fetch(P(`/job`))).json();if(H&&!e.ask||bf&&!e.diagram){window.location.reload();return}let t={job:e,kiss:e.kiss,update:e.update};for(let[e,n]of mf){let r=t[e];if(r){if(oo(e,r,document)){window.location.reload();return}e===`update`||n.matches(`[data-progress-pane]`)?co(n,r.phase,r.progress):yf(n,r.progress)}}}catch{}_f()}function yf(e,t){if(!t)return;let n=e.querySelector(`.prb-job-progress`);n||(n=document.createElement(`span`),n.className=`prb-job-progress`,e.querySelector(`p`)?.appendChild(n)),n.textContent=` ${t}`}var bf=document.querySelector(`[data-diagram-running]`)!==null;(mf.size>0||H||bf)&&(gf=Date.now(),_f()),document.querySelector(`[data-started-at]`)&&uo(document);function xf(e){let t=e.parentElement;if(!t)return;let n=t.querySelector(`.prb-job-retry-status`);n||(n=document.createElement(`p`),n.className=`prb-job-retry-status`,n.setAttribute(`role`,`status`),t.insertBefore(n,e.nextSibling)),n.textContent=`The retry could not be started. You can try again.`}function Sf(e){e.parentElement?.querySelector(`.prb-job-retry-status`)?.remove()}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-job-retry]`);t&&(t.disabled=!0,t.textContent=`Retrying…`,Sf(t),fetch(P(`/retry`),{method:`POST`}).then(e=>{if(!e.ok)throw Error(`refused`);gf=Date.now(),_f()}).catch(()=>{t.disabled=!1,t.textContent=`Retry`,xf(t)}))}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-run-review-again]`);t&&(t.disabled=!0,t.textContent=`Starting…`,fetch(P(`/reanalyse`),{method:`POST`}).then(e=>{if(!e.ok)throw Error(`refused`);location.reload()}).catch(()=>{t.disabled=!1,t.textContent=jr,tf(t,`Could not start. Try again`,2500)}))});var Cf={send:async e=>{let t=await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kissDecision:e})});return t.ok?(await t.json().catch(()=>null))?.decision===e.decision:!1},paintRail:(e,t)=>{Tu(`kiss`,e,t,`recommendation`,`decided`),Tu(`kissrecs`,e,t,`recommendation`,`decided`)}};document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-kiss-decide]`),r=n?.closest(`[data-kiss-rec]`);if(n&&r&&!n.disabled){ra(r,na(n),Cf);return}let i=t.closest(`[data-kiss-open-primary]`);i&&i.closest(`[data-kiss-rec]`)?.querySelector(`.prb-kiss-locations [data-primary]`)?.click()}),document.addEventListener(`click`,e=>{let t=e.target;if(t.closest(`[data-kiss-run-open]`)){let e=document.querySelector(`[data-kiss-run-dialog]`);e&&!e.open&&e.showModal();return}t.closest(`[data-kiss-run-cancel]`)&&t.closest(`dialog`)?.close()}),document.addEventListener(`change`,e=>{let t=e.target.closest(`[data-kiss-audience]`);if(!t)return;let n=t.closest(`[data-kiss-run-control]`)?.querySelector(`[data-kiss-run]`);n&&(n.disabled=!1)}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-kiss-run]`);if(!t||t.disabled)return;let n=t.closest(`[data-kiss-run-control]`),r=n?.querySelector(`[data-kiss-audience]:checked`)?.value;if(!r)return;let i=t.textContent??`Run KISS review`;t.disabled=!0,t.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Starting…`,fetch(P(`/kiss`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({audience:r})}).then(e=>{if(e.ok)window.location.reload();else throw Error(`refused`)}).catch(()=>{t.disabled=!1,t.textContent=i;let e=document.createElement(`p`);e.className=`prb-kiss-refused`,e.setAttribute(`role`,`status`),e.textContent=`The KISS review could not be started. You can try again.`,n?.querySelector(`.prb-kiss-refused`)?.remove(),n?.appendChild(e)})});var wf=document.body.dataset.defaultView||`overview`;window.addEventListener(`popstate`,e=>{let t=vr(e.state)??yr(window.location.hash)??{kind:`view`,view:wf},n=!F||!Cr(F,t);Pl(t),n&&Ml(t),kf()});var Tf=yr(window.location.hash);Tf?Pl(Tf):(F={kind:`view`,view:wf},N.replace(``,F));var Ef={doc:document,main:document.querySelector(`main.prb-doc`),rail:document.querySelector(`.prb-rail`),log:z,panes:W};N.setCapturer(()=>di(Ef));async function Df(e,t,n){let r=e.dataset.file;if(!r)return;let i=Number(e.dataset.line)||0,a=t??{cited:i,centre:i,expand:0,position:i?2*i:0,tall:!1,top:null,offset:0},o=$r(e),s=o?ql.pending(o):void 0;if(!o||!ii(s?s.request:ni(o),a)){if(!o){o=document.createElement(`div`),o.className=`prb-code`,o.innerHTML=`<p class="prb-code-status">Reading…</p>`;let{parent:t,position:n}=Gl(e);t.insertAdjacentElement(n,o),e.setAttribute(`aria-expanded`,`true`)}if(!await Jl(o,r,{cited:a.cited,centre:a.centre,expand:a.expand,position:a.position}))return}else if(s&&!await s.done)return;n()&&(a.tall!==o.hasAttribute(`data-expanded`)&&Qc(o,a.tall),t&&ri(o,t.top,t.offset))}function Of(e){$r(e)?.remove(),e.setAttribute(`aria-expanded`,`false`)}async function kf(){let e=++jl,t=()=>jl===e;await fi(Ef,N.current().ui,{setFold:Vl,setAsk:Ou,openPanel:(e,n)=>Df(e,n,t),closePanel:Of,stillCurrent:t})}kf();var Af=B?yi(B,{storage:(()=>{try{return window.sessionStorage}catch{return null}})(),path:window.location.pathname,restore:!0,win:window}):null;U=Af?.restoredStage??null,ju(),Wl();var jf=e=>{for(let t of document.querySelectorAll(`[data-analysis-details][open], [data-range-details][open]`))(!e||!t.contains(e))&&(t.open=!1)};document.addEventListener(`click`,e=>{jf(e.target)}),document.addEventListener(`keydown`,e=>{if(e.key!==`Escape`)return;let t=document.querySelector(`[data-analysis-details][open], [data-range-details][open]`);t&&(jf(),t.querySelector(`summary`)?.focus())});var Q=document.querySelector(`.prb-header [data-menu]`),$=Da({root:document,post:(e,t)=>fetch(P(e),t===void 0?{method:`POST`}:{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),gate:Id,checkForUpdates:()=>zd()});function Mf(e){if(!Q)return;let t=Q.querySelector(`[data-menu-panel]`);t?.hidden&&I.open(Q),Q.querySelector(`[data-menu-error]`)?.remove();let n=document.createElement(`p`);n.className=`prb-menu-error`,n.setAttribute(`data-menu-error`,``),n.textContent=e,t?.append(n)}async function Nf(e,t){if($.busy())return;Q?.querySelector(`[data-menu-error]`)?.remove(),t&&(t.disabled=!0);let n=await e();if(t&&(t.disabled=!1),!n.busy){if(n.error===null)return void I.closeAll();Mf(n.error)}}function Pf(e){return Q?.querySelector(`[data-menu-items] ${e}`)??null}function Ff(e={}){if(!Q)return;Q.querySelector(`[data-menu-panel]`)?.hidden&&I.open(Q);let t=Q.querySelector(`[data-menu-items]`),n=Q.querySelector(`[data-menu-confirm]`);t&&(t.hidden=!0),n&&(n.hidden=!1),e.focusCancel&&Q.querySelector(`[data-cancel-delete]`)?.focus()}if(Q){let e=Q.querySelector(`[data-confirm-delete]`),n=()=>fd(Q);Q.addEventListener(`click`,e=>{let t=e.target,a=t?.closest(`[data-copy-id]`);if(a?.dataset.copyId){e.stopPropagation(),se(a,a.dataset.copyId);return}let o=t?.closest(`[data-pin-toggle]`);if(o){e.stopPropagation(),r(o);return}if(t?.closest(`[data-fresh-check], [data-fetch-remote]`)){I.closeAll();return}let s=t?.closest(`[data-mark-status]`);if(s){e.stopPropagation(),Nf(()=>$.setComplete(s.dataset.markStatus===`complete`),s);return}let c=t?.closest(`[data-lifecycle-set]`);if(c){e.stopPropagation(),Nf(()=>$.setLifecycle(c.dataset.lifecycleSet),c);return}let l=t?.closest(`[data-queue-action]`);if(l){e.stopPropagation(),Nf(()=>$.setQueued(l.dataset.queueAction===`remove`?`remove`:`add`),l);return}if(t?.closest(`[data-delete]`)){e.stopPropagation(),Ff();return}if(t?.closest(`[data-cancel-delete]`)){e.stopPropagation(),n();return}t?.closest(`[data-confirm-delete]`)&&(e.stopPropagation(),i())});let r=async e=>{let n=e.getAttribute(`aria-pressed`)!==`true`;e.disabled=!0;let r=null;try{let e=await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({pinned:n})});e.ok&&(r=(await e.json()).pinned===!0)}catch{}if(e.disabled=!1,r===null){e.textContent=n?`Could not pin`:`Could not unpin`,window.setTimeout(()=>{e.textContent=t(e.getAttribute(`aria-pressed`)===`true`)},1600);return}e.setAttribute(`aria-pressed`,String(r)),e.textContent=t(r)},i=async()=>{e&&(e.disabled=!0,e.textContent=`Deleting`);let{error:t}=await $.deleteReview();if(t===null)return void window.location.replace(`/`);e&&(e.disabled=!1,e.textContent=`Delete`),n(),Mf(t)}}function If(e){return{available:()=>document.querySelector(`.prb-rail a[data-view-nav="${e}"]`)!==null,run:()=>L(e,{keepFocus:!0})}}function Lf(){if(!F)return null;let e=F.focus??(F.kind===`section`?`guide`:F.view);return sr.includes(e)&&document.querySelector(`[data-focus-toggle="${e}"]`)?e:null}function Rf(){return[...document.querySelectorAll(`.prb-view:not([hidden]) [data-feedback-select]`)].some(e=>e.checkVisibility())}ne(`review`,{...md.commands,...Ka(q,document),"review.section.review":{available:()=>Za(document)!==null,run:()=>{let e=Za(document);e&&L(e,{keepFocus:!0})}},"review.section.kiss":If(`kiss`),"review.section.issues":If(`issues`),"review.section.diagrams":If(`map`),"review.section.questions":If(`questions`),"review.section.files":If(`files`),"review.buddy.open":{available:()=>Eu!==null,run:()=>{F?.focus?wr(F,`buddy`,Fl):Ou(!0),document.querySelector(`[data-ask-form] textarea`)?.focus()}},"review.buddy.prompt":{available:()=>Eu!==null&&B!==null,panel:to({prompts:()=>K,choose:ed})},"review.focus.toggle":{available:()=>Lf()!==null,run:()=>{let e=Lf();e&&Ll(e)}},"review.leave":{available:e=>!!(e&&Er(e,document,e.target===B||q.state().selecting||!!F?.focus)),run:e=>{B&&e?.target===B?B.blur():q.state().selecting?q.exit():F?.focus&&Tr(F,Fl)}},"review.feedback.toggle":{available:()=>q.state().selecting||Rf(),label:()=>q.state().selecting?`Exit Prepare feedback`:`Start Prepare feedback`,run:()=>q.state().selecting?q.exit():q.enter()},"review.mark.reviewed":{available:()=>$.offer().reviewed,run:()=>void Nf(()=>$.setComplete(!0),Pf(`[data-mark-status]`))},"review.mark.waiting":{available:()=>$.offer().waiting,run:()=>void Nf(()=>$.setLifecycle(`waiting`),Pf(`[data-lifecycle-set="waiting"]`))},"review.mark.done":{available:()=>$.offer().done,run:()=>void Nf(()=>$.setLifecycle(`done`),Pf(`[data-lifecycle-set="done"]`))},"review.queue.toggle":{available:()=>$.offer().queue,run:()=>void Nf(()=>$.toggleQueued(),Pf(`[data-queue-action]`))},"review.checkUpdates":{available:()=>$.offer().checkForUpdates,run:()=>void $.checkForUpdates()},"review.update":{available:()=>Ei(X,{actions:vl!==``&&!mf.has(`update`)&&!of,remote:Z}),run:()=>void sf()},"review.delete":{available:()=>$.offer().delete,run:()=>Ff({focusCancel:!0})}},{onOpen:()=>I.closeAll()}),re(),vl&&Tc({markSeen:()=>fetch(P(`/seen`),{method:`POST`}),askUnread:()=>fetch(P(`/unread`))}),setTimeout(()=>{ll(tl([...document.querySelectorAll(`[data-view="files"] [data-file]`)].map(e=>e.dataset.file??``)))},0),h(window,()=>window.location.reload());var zf=15e3,Bf=6e4;function Vf(){return vl!==``&&document.visibilityState===`visible`&&!mf.has(`update`)}document.addEventListener(`visibilitychange`,()=>{Vf()&&Date.now()-Ud>=zf&&Hd()}),window.setInterval(()=>{Vf()&&Hd()},Bf);export{tc as n,Ht as r,ic as t};