prreviewbuddy 0.70.2 → 0.71.2

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.
@@ -1,16 +1,16 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["chunk-D6oLtkSC.js","chunk-CvSN2dS5.js","chunk-DsF7k-Jl.js","chunk-BWjKdrB5.js","chunk-hePW80VL.js","chunk-DIEkEPeW.js","chunk-D7hFEgee.js","chunk-B2kMZj3m.js","chunk-BXful7fw.js","chunk-9OYdRhXM.js","chunk-DyBGMc4d.js","chunk-D71XVZIg.js","chunk-Dy-Kn_BL.js","chunk-B-Up-Dum.js","chunk-CCkeMk9N.js","chunk-DwHSAwhM.js","chunk-fybaL0A-.js","chunk-BifhSqXX.js","chunk-DS17s2tU.js","chunk-Baon_ihZ.js","chunk-CAnKkQXq.js","chunk-LbU1hoFO.js","chunk-BzbQS41l.js","chunk-BsjqnLg3.js","chunk-BtIQNnN0.js","chunk-D3KKoC5L.js","chunk-CP0rg-5b.js","chunk-j_1H8WHN.js","chunk-BOvsFOI6.js","chunk-CqHdAlCp.js","chunk-DijMHRDA.js","chunk-D2pwppYQ.js","chunk-Cjc271yU.js","chunk-B2PgDgse.js","chunk-D95j_xjm.js","chunk-Cv3JjNkX.js","chunk-EIJEcyW-.js","chunk-C3nvJp0N.js","chunk-D2NZorQR.js","chunk-NzFayA7r.js","chunk-AdYjtsZU.js","chunk-pNSm1SyV.js","chunk-c-cg1wCO.js","chunk-CBrdyqSx.js"])))=>i.map(i=>d[i]);
2
- import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,K as s,L as c,N as l,P as u,R as d,V as f,W as ee,X as te,Y as p,a as m,i as ne,o as re,q as ie,t as ae,u as h,w as oe,z as g}from"./chunk-DqEA-C0S.js";import{c as _,i as se,o as ce,s as le}from"./chunk-BsU84lX4.js";import{t as v}from"./chunk-CvSN2dS5.js";import{t as ue}from"./chunk-C8kkSv38.js";function y(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function de(e){return y(e).replace(/`([^`\n]+)`/g,`<code>$1</code>`)}var fe=`pr-helper-code-block`,pe=`pr-helper-code-copy`,me=/^\u0002(\d+)\u0002/,he=/^(?:https?:\/\/|#)/i,ge=/^https:\/\//i,_e=/^(?:image|img|screenshot|screen ?shot|picture|photo|pic)$/i,ve=/\.(?:png|jpe?g|gif|webp|svg|bmp|heic|avif|tiff?)$/i;function ye(e){let t=(e??``).trim();return!t||_e.test(t)||ve.test(t)?`View attached image`:`View image: ${t}`}function be(e,t){return ge.test(e)?`<a href="${e}" target="_blank" rel="noopener noreferrer">${t}</a>`:null}function xe(e,t){return be(y((e??``).trim()),y(t))}var b=e=>/^(?:left|right|center|justify)$/i.test(e)?e.toLowerCase():null,Se=e=>/^[1-9]\d{0,2}$/.test(e)?e:null,Ce=e=>/^\d{1,9}$/.test(e)?e:null,we=e=>e.slice(0,300),Te=new Map(Object.entries({a:{href:e=>{let t=e.trim();return he.test(t)?t:null},title:we},abbr:{title:we},b:{},blockquote:{},br:{},caption:{align:b},cite:{},code:{},dd:{},del:{},details:{},div:{align:b},dl:{},dt:{},em:{},hr:{},i:{},ins:{},kbd:{},li:{},mark:{},ol:{start:Ce},p:{align:b},q:{},s:{},samp:{},small:{},span:{},strike:{},strong:{},sub:{},summary:{},sup:{},table:{align:b},tbody:{},td:{align:b,colspan:Se,rowspan:Se},tfoot:{},th:{align:b,colspan:Se,rowspan:Se},thead:{},tr:{align:b},u:{},ul:{},var:{},h1:{align:b},h2:{align:b},h3:{align:b},h4:{align:b},h5:{align:b},h6:{align:b}}).map(([e,t])=>[e,new Map(Object.entries({title:we,...t}))])),Ee=new Set([`br`,`hr`,`img`,`input`,`source`,`meta`,`link`,`base`,`wbr`,`col`,`area`,`track`,`param`,`embed`]),De=new Set([`script`,`style`,`iframe`,`object`,`embed`,`svg`,`math`,`template`,`noscript`,`textarea`,`frame`,`frameset`,`applet`,`head`,`title`,`select`]),Oe=new Set(`picture.pre.source.track.input.form.label.button.option.optgroup.font.center.section.article.header.footer.nav.figure.figcaption.main.aside.html.body.meta.link.base.wbr.col.colgroup.area.map.param.fieldset.legend.dialog`.split(`.`)),ke=new Set(`address.article.aside.blockquote.caption.center.dd.details.dialog.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.nav.ol.p.pre.section.summary.table.tbody.td.tfoot.th.thead.tr.ul`.split(`.`)),Ae=new RegExp(["`[^`\\n]+`",`<(\\/?)([A-Za-z][A-Za-z0-9-]*)((?:\\s+[^\\s"'<>\\/=]+(?:\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s"'=<>\`]+))?)*)\\s*(\\/?)>`,`&(?:#\\d{1,7}|#[xX][0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{1,31});`].join(`|`),`g`),je=/([^\s"'<>/=]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g;function Me(e){return e.replace(/&(#\d{1,7}|#[xX][0-9a-fA-F]{1,6}|amp|lt|gt|quot|apos|nbsp);/g,(e,t)=>{if(t[0]===`#`){let e=t[1]===`x`||t[1]===`X`?parseInt(t.slice(2),16):parseInt(t.slice(1),10);return e>0&&e<=1114111?String.fromCodePoint(e):``}return{amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`,nbsp:`\xA0`}[t]??``})}function Ne(e){let t=new Map;for(let n of e.matchAll(je)){let e=n[1].toLowerCase();t.has(e)||t.set(e,Me(n[2]??n[3]??n[4]??``))}return t}function Pe(e){let t=e.match(/^h([1-6])$/);return t?`h${Math.min(Number(t[1]),3)+3}`:e}function Fe(e,t){let n=Pe(e),r=Te.get(e),i=[];for(let[e,n]of Ne(t)){let t=r.get(e),a=t?t(n):null;a!==null&&i.push(` ${e}="${y(a)}"`)}return e===`a`&&i.some(e=>e.startsWith(` href=`))&&i.push(` target="_blank" rel="noopener noreferrer"`),`<${n}${i.join(``)}>`}function Ie(e){let t=[],n=e=>`${t.push(e)-1}`,r=``,i=0;Ae.lastIndex=0;for(let t;t=Ae.exec(e);){let[a,o,s,c,l]=t,u=null;if(a[0]===`&`)u=n({kind:`entity`,name:``,tag:``,markup:a});else if(s){let t=s.toLowerCase();if(t===`img`){let e=Ne(c),r=e.get(`alt`);u=n({kind:`text`,name:t,tag:``,markup:o?``:xe(e.get(`src`),ye(r))??y(r??``)})}else if(t===`video`||t===`audio`){let r=o?void 0:Ne(c).get(`src`);if(!o&&!l){let n=e.slice(Ae.lastIndex),i=n.match(RegExp(`</${t}\\s*>`,`i`)),a=i?n.slice(0,i.index):``;r??=Ne(a.match(/<source\b([^<>]*)>/i)?.[1]??``).get(`src`),i&&(Ae.lastIndex+=i.index+i[0].length)}u=n({kind:`text`,name:t,tag:``,markup:(o?null:xe(r,t===`video`?`Open attached video`:`Open attached audio`))??``})}else if(De.has(t)){if(!o&&!l&&!Ee.has(t)){let n=RegExp(`</${t}\\s*>`,`i`),r=e.slice(Ae.lastIndex),i=r.search(n);i!==-1&&(Ae.lastIndex+=i+r.slice(i).match(n)[0].length)}u=``}else if(Oe.has(t))u=n({kind:`text`,name:t,tag:``,markup:``});else if(Te.has(t)){let e=Pe(t);u=o?n({kind:`close`,name:t,tag:e,markup:``}):Ee.has(t)?n({kind:`void`,name:t,tag:e,markup:Fe(t,c)}):n({kind:`open`,name:t,tag:e,markup:Fe(t,c)})}}u!==null&&(r+=e.slice(i,t.index)+u,i=Ae.lastIndex)}return{text:r+e.slice(i),tokens:t}}function Le(e,t){for(let n of e.matchAll(/\u0002(\d+)\u0002/g))if(t.tokens[Number(n[1])].kind!==`entity`)return!0;return!1}function Re(e,t){let n=e.match(me);return!!(n&&ke.has(t.tokens[Number(n[1])].name))}function ze(e){let t=[];return e.replace(/<a\b[^>]*>|<\/a>/g,e=>{if(e===`</a>`)return t.pop()?``:e;let n=t.length>0;return t.push(n),n?``:e})}function Be(e,t){let n=[],r=e=>{let r=t.tokens[e];if(r.kind===`open`)return n.push(r.tag),r.markup;if(r.kind===`close`){let e=n.lastIndexOf(r.tag);return e===-1?``:n.splice(e).reverse().map(e=>`</${e}>`).join(``)}return r.markup},i=``,a=0,o=!1;for(let n=0;n<e.length;n++){let s=e[n];if(s===`<`)o=!0;else if(s===`>`)o=!1;else if(s===``){let s=e.indexOf(``,n+1);if(s===-1)break;let c=Number(e.slice(n+1,s));i+=e.slice(a,n)+(o&&t.tokens[c].kind!==`entity`?``:r(c)),n=s,a=s+1}}return i+e.slice(a)+n.reverse().map(e=>`</${e}>`).join(``)}var Ve=`\0`,He=``,Ue=/\u0000(\d+)\u0000/g,We=/^\u0000\d+\u0000$/,Ge=/\u0001(\d+)\u0001/g;function Ke(e,t={}){let{text:n,blocks:r}=Qe(Ze(e.replace(/[\u0000\u0001\u0002]/g,``),t),t);if(!t.safeHtml)return nt(lt(n),r);let i=Ie(n);return ze(Be(nt(lt(i.text,i),r),i))}function qe(e){return e.match(/^\s*(`{3,}|~{3,})\s*[\w+#.-]*\s*$/)?.[1][0]??null}function Je(e,t){return RegExp(`^\\s*${t}{3,}\\s*$`).test(e)}var Ye=/`[^`\n]+`|<!--/g;function Xe(e,t){Ye.lastIndex=t;for(let t;t=Ye.exec(e);)if(t[0]===`<!--`)return t.index;return-1}function Ze(e,t={}){let n=[],r=null,i=!1,a=null,o=0;for(let s of e.split(`
3
- `)){let c=o;if(o+=s.length+1,r){let e=Je(s,r);e&&(r=null),n.push({raw:s,visible:s,code:e?`close`:`body`});continue}if(!i&&(r=qe(s),r)){n.push({raw:s,visible:s,code:`open`});continue}if(!t.hideHtmlComments){n.push({raw:s,visible:s});continue}let l=i?a:null,u=``,d=0;for(;d<s.length;){if(i){let e=s.indexOf(`-->`,d);if(e===-1)break;d=e+3,i=!1;continue}let t=Xe(s,d);if(t===-1||e.indexOf(`-->`,c+t+4)===-1){u+=s.slice(d);break}u+=s.slice(d,t),d=t+4,i=!0}if(l){l.visible+=u,n.push({raw:s,visible:``,absent:!0});continue}let f={raw:s,visible:u};i&&(a=u.trim()===``?null:f),n.push(f)}return n}function Qe(e,t={}){let n=[],r=[],i=null,a,o=()=>{r.push(`${Ve}${n.length}${Ve}`);let e=i.join(`
4
- `);n.push(a===void 0?{code:e}:{code:e,diagram:{label:`Mermaid diagram: ${a??tt(e)}`}}),i=null};for(let n of e)n.absent||(n.code===`open`?(i=[],a=t.mermaid&&$e(n.raw).toLowerCase()===`mermaid`?et(r):void 0):n.code===`body`?i.push(n.raw):n.code===`close`?o():r.push(n.visible));return i&&o(),{text:r.join(`
5
- `),blocks:n}}function $e(e){return e.match(/^\s*(?:`{3,}|~{3,})\s*([\w+#.-]*)/)?.[1]??``}function et(e){for(let t=e.length-1;t>=0;t--){let n=e[t].trim();if(!n)continue;let r=n.match(/^#{1,6}\s+(.+?)\s*#*$/)?.[1]??n.match(/^(\*\*|__)(.+)\1$/)?.[2];return r&&r.replace(/[`*_]/g,``).trim()||null}return null}function tt(e){let t=e.split(`
6
- `).map(e=>e.trim()),n=0;if(t.find(e=>e)===`---`){let e=t.indexOf(`---`),r=t.indexOf(`---`,e+1);n=r===-1?t.length:r+1}return t.slice(n).find(e=>e&&!e.startsWith(`%%`))?.split(/\s+/)[0]||`diagram`}function nt(e,t){return e.replace(Ue,(e,n)=>{let r=t[Number(n)];return r.diagram?at(r.code,r.diagram.label):rt(r.code,`Copy`,`Copy code`)})}function rt(e,t,n,r=``){return`<div class="${fe}"${r}><pre><code>${y(e)}</code></pre><button type="button" class="${pe}" aria-label="${n}">${t}</button></div>`}var it=0;function at(e,t){let n=`prb-md-mermaid-source-${++it}`;return`<figure class="prb-md-mermaid" data-md-mermaid data-state="source"><div class="prb-md-mermaid-canvas" data-md-mermaid-canvas role="img" aria-label="${y(t)}" hidden></div><p class="prb-md-mermaid-error" data-md-mermaid-error hidden>This diagram couldn\u2019t be displayed.</p><button type="button" class="prb-md-mermaid-toggle" data-md-mermaid-toggle aria-expanded="true" aria-controls="${n}" hidden>Hide source</button>`+rt(e,`Copy source`,`Copy source`,` id="${n}" data-md-mermaid-source`)+`</figure>`}function ot(e,t=0){let n=t;for(let t of e)n=t===` `?n+4-n%4:n+1;return n}function st(e){return ot(e.match(/^[ \t]*/)[0])}function ct(e){let t=e.match(/^([ \t]*)(?:([-*+])|(\d{1,9})[.)])([ \t]+)(\S.*)$/);if(!t)return null;let[,n,r,i,a,o]=t,s=ot(n)+(r?1:i.length+1),c=ot(a,s);return{tag:r?`ul`:`ol`,start:r?1:Number(i),text:o.trim(),content:c-s>4?s+1:c}}function lt(e,t){let n=[],r=[],i=[],a=null,o=e=>e.tag===`ol`&&e.start!==1?` start="${e.start}"`:``,s=null,c=()=>{if(r.length&&n.push(`<p>${ut(r.join(` `),t)}</p>`),i.length&&n.push(`<blockquote>${ut(i.join(` `),t)}</blockquote>`),a){let e=e=>e.length===1?ut(e[0],t):e.map(e=>`<p>${ut(e,t)}</p>`).join(``),r=t=>`<${t.tag}${o(t)}>${t.items.map(t=>`<li>${e(t.paras)}</li>`).join(``)}</${t.tag}>`,i=({blocks:e})=>{let n=e.filter(e=>typeof e==`string`).length===1;return e.map(e=>typeof e==`string`?n?ut(e,t):`<p>${ut(e,t)}</p>`:r(e)).join(``)};n.push(`<${a.tag}${o(a)}>${a.items.map(e=>`<li>${i(e)}</li>`).join(``)}</${a.tag}>`)}r=[],i=[],a=null};for(let o of e.split(`
2
+ import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,K as s,L as c,N as l,P as u,R as d,V as f,W as ee,X as te,Y as p,a as m,i as ne,o as h,q as re,t as ie,u as g,w as ae,z as oe}from"./chunk-DqEA-C0S.js";import{c as _,i as se,o as ce,s as le}from"./chunk-BsU84lX4.js";import{t as v}from"./chunk-CvSN2dS5.js";import{t as ue}from"./chunk-C8kkSv38.js";function y(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function de(e){return y(e).replace(/`([^`\n]+)`/g,`<code>$1</code>`)}var fe=`pr-helper-code-block`,pe=`pr-helper-code-copy`,me=/^\u0002(\d+)\u0002/,he=/^(?:https?:\/\/|#)/i,ge=/^https:\/\//i,_e=/^(?:image|img|screenshot|screen ?shot|picture|photo|pic)$/i,ve=/\.(?:png|jpe?g|gif|webp|svg|bmp|heic|avif|tiff?)$/i;function ye(e){let t=(e??``).trim();return!t||_e.test(t)||ve.test(t)?`View attached image`:`View image: ${t}`}function be(e,t){return ge.test(e)?`<a href="${e}" target="_blank" rel="noopener noreferrer">${t}</a>`:null}function xe(e,t){return be(y((e??``).trim()),y(t))}var b=e=>/^(?:left|right|center|justify)$/i.test(e)?e.toLowerCase():null,Se=e=>/^[1-9]\d{0,2}$/.test(e)?e:null,Ce=e=>/^\d{1,9}$/.test(e)?e:null,we=e=>e.slice(0,300),Te=new Map(Object.entries({a:{href:e=>{let t=e.trim();return he.test(t)?t:null},title:we},abbr:{title:we},b:{},blockquote:{},br:{},caption:{align:b},cite:{},code:{},dd:{},del:{},details:{},div:{align:b},dl:{},dt:{},em:{},hr:{},i:{},ins:{},kbd:{},li:{},mark:{},ol:{start:Ce},p:{align:b},q:{},s:{},samp:{},small:{},span:{},strike:{},strong:{},sub:{},summary:{},sup:{},table:{align:b},tbody:{},td:{align:b,colspan:Se,rowspan:Se},tfoot:{},th:{align:b,colspan:Se,rowspan:Se},thead:{},tr:{align:b},u:{},ul:{},var:{},h1:{align:b},h2:{align:b},h3:{align:b},h4:{align:b},h5:{align:b},h6:{align:b}}).map(([e,t])=>[e,new Map(Object.entries({title:we,...t}))])),Ee=new Set([`br`,`hr`,`img`,`input`,`source`,`meta`,`link`,`base`,`wbr`,`col`,`area`,`track`,`param`,`embed`]),De=new Set([`script`,`style`,`iframe`,`object`,`embed`,`svg`,`math`,`template`,`noscript`,`textarea`,`frame`,`frameset`,`applet`,`head`,`title`,`select`]),Oe=new Set(`picture.pre.source.track.input.form.label.button.option.optgroup.font.center.section.article.header.footer.nav.figure.figcaption.main.aside.html.body.meta.link.base.wbr.col.colgroup.area.map.param.fieldset.legend.dialog`.split(`.`)),ke=new Set(`address.article.aside.blockquote.caption.center.dd.details.dialog.div.dl.dt.fieldset.figcaption.figure.footer.form.h1.h2.h3.h4.h5.h6.header.hr.li.main.nav.ol.p.pre.section.summary.table.tbody.td.tfoot.th.thead.tr.ul`.split(`.`)),x=new RegExp(["`[^`\\n]+`",`<(\\/?)([A-Za-z][A-Za-z0-9-]*)((?:\\s+[^\\s"'<>\\/=]+(?:\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s"'=<>\`]+))?)*)\\s*(\\/?)>`,`&(?:#\\d{1,7}|#[xX][0-9a-fA-F]{1,6}|[A-Za-z][A-Za-z0-9]{1,31});`].join(`|`),`g`),Ae=/([^\s"'<>/=]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g;function je(e){return e.replace(/&(#\d{1,7}|#[xX][0-9a-fA-F]{1,6}|amp|lt|gt|quot|apos|nbsp);/g,(e,t)=>{if(t[0]===`#`){let e=t[1]===`x`||t[1]===`X`?parseInt(t.slice(2),16):parseInt(t.slice(1),10);return e>0&&e<=1114111?String.fromCodePoint(e):``}return{amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`,nbsp:`\xA0`}[t]??``})}function Me(e){let t=new Map;for(let n of e.matchAll(Ae)){let e=n[1].toLowerCase();t.has(e)||t.set(e,je(n[2]??n[3]??n[4]??``))}return t}function Ne(e){let t=e.match(/^h([1-6])$/);return t?`h${Math.min(Number(t[1]),3)+3}`:e}function Pe(e,t){let n=Ne(e),r=Te.get(e),i=[];for(let[e,n]of Me(t)){let t=r.get(e),a=t?t(n):null;a!==null&&i.push(` ${e}="${y(a)}"`)}return e===`a`&&i.some(e=>e.startsWith(` href=`))&&i.push(` target="_blank" rel="noopener noreferrer"`),`<${n}${i.join(``)}>`}function Fe(e){let t=[],n=e=>`${t.push(e)-1}`,r=``,i=0;x.lastIndex=0;for(let t;t=x.exec(e);){let[a,o,s,c,l]=t,u=null;if(a[0]===`&`)u=n({kind:`entity`,name:``,tag:``,markup:a});else if(s){let t=s.toLowerCase();if(t===`img`){let e=Me(c),r=e.get(`alt`);u=n({kind:`text`,name:t,tag:``,markup:o?``:xe(e.get(`src`),ye(r))??y(r??``)})}else if(t===`video`||t===`audio`){let r=o?void 0:Me(c).get(`src`);if(!o&&!l){let n=e.slice(x.lastIndex),i=n.match(RegExp(`</${t}\\s*>`,`i`)),a=i?n.slice(0,i.index):``;r??=Me(a.match(/<source\b([^<>]*)>/i)?.[1]??``).get(`src`),i&&(x.lastIndex+=i.index+i[0].length)}u=n({kind:`text`,name:t,tag:``,markup:(o?null:xe(r,t===`video`?`Open attached video`:`Open attached audio`))??``})}else if(De.has(t)){if(!o&&!l&&!Ee.has(t)){let n=RegExp(`</${t}\\s*>`,`i`),r=e.slice(x.lastIndex),i=r.search(n);i!==-1&&(x.lastIndex+=i+r.slice(i).match(n)[0].length)}u=``}else if(Oe.has(t))u=n({kind:`text`,name:t,tag:``,markup:``});else if(Te.has(t)){let e=Ne(t);u=o?n({kind:`close`,name:t,tag:e,markup:``}):Ee.has(t)?n({kind:`void`,name:t,tag:e,markup:Pe(t,c)}):n({kind:`open`,name:t,tag:e,markup:Pe(t,c)})}}u!==null&&(r+=e.slice(i,t.index)+u,i=x.lastIndex)}return{text:r+e.slice(i),tokens:t}}function Ie(e,t){for(let n of e.matchAll(/\u0002(\d+)\u0002/g))if(t.tokens[Number(n[1])].kind!==`entity`)return!0;return!1}function Le(e,t){let n=e.match(me);return!!(n&&ke.has(t.tokens[Number(n[1])].name))}function Re(e){let t=[];return e.replace(/<a\b[^>]*>|<\/a>/g,e=>{if(e===`</a>`)return t.pop()?``:e;let n=t.length>0;return t.push(n),n?``:e})}function ze(e,t){let n=[],r=e=>{let r=t.tokens[e];if(r.kind===`open`)return n.push(r.tag),r.markup;if(r.kind===`close`){let e=n.lastIndexOf(r.tag);return e===-1?``:n.splice(e).reverse().map(e=>`</${e}>`).join(``)}return r.markup},i=``,a=0,o=!1;for(let n=0;n<e.length;n++){let s=e[n];if(s===`<`)o=!0;else if(s===`>`)o=!1;else if(s===``){let s=e.indexOf(``,n+1);if(s===-1)break;let c=Number(e.slice(n+1,s));i+=e.slice(a,n)+(o&&t.tokens[c].kind!==`entity`?``:r(c)),n=s,a=s+1}}return i+e.slice(a)+n.reverse().map(e=>`</${e}>`).join(``)}var Be=`\0`,Ve=``,He=/\u0000(\d+)\u0000/g,Ue=/^\u0000\d+\u0000$/,We=/\u0001(\d+)\u0001/g;function Ge(e,t={}){let{text:n,blocks:r}=Ze(Xe(e.replace(/[\u0000\u0001\u0002]/g,``),t),t);if(!t.safeHtml)return tt(ct(n),r);let i=Fe(n);return Re(ze(tt(ct(i.text,i),r),i))}function Ke(e){return e.match(/^\s*(`{3,}|~{3,})\s*[\w+#.-]*\s*$/)?.[1][0]??null}function qe(e,t){return RegExp(`^\\s*${t}{3,}\\s*$`).test(e)}var Je=/`[^`\n]+`|<!--/g;function Ye(e,t){Je.lastIndex=t;for(let t;t=Je.exec(e);)if(t[0]===`<!--`)return t.index;return-1}function Xe(e,t={}){let n=[],r=null,i=!1,a=null,o=0;for(let s of e.split(`
3
+ `)){let c=o;if(o+=s.length+1,r){let e=qe(s,r);e&&(r=null),n.push({raw:s,visible:s,code:e?`close`:`body`});continue}if(!i&&(r=Ke(s),r)){n.push({raw:s,visible:s,code:`open`});continue}if(!t.hideHtmlComments){n.push({raw:s,visible:s});continue}let l=i?a:null,u=``,d=0;for(;d<s.length;){if(i){let e=s.indexOf(`-->`,d);if(e===-1)break;d=e+3,i=!1;continue}let t=Ye(s,d);if(t===-1||e.indexOf(`-->`,c+t+4)===-1){u+=s.slice(d);break}u+=s.slice(d,t),d=t+4,i=!0}if(l){l.visible+=u,n.push({raw:s,visible:``,absent:!0});continue}let f={raw:s,visible:u};i&&(a=u.trim()===``?null:f),n.push(f)}return n}function Ze(e,t={}){let n=[],r=[],i=null,a,o=()=>{r.push(`${Be}${n.length}${Be}`);let e=i.join(`
4
+ `);n.push(a===void 0?{code:e}:{code:e,diagram:{label:`Mermaid diagram: ${a??et(e)}`}}),i=null};for(let n of e)n.absent||(n.code===`open`?(i=[],a=t.mermaid&&Qe(n.raw).toLowerCase()===`mermaid`?$e(r):void 0):n.code===`body`?i.push(n.raw):n.code===`close`?o():r.push(n.visible));return i&&o(),{text:r.join(`
5
+ `),blocks:n}}function Qe(e){return e.match(/^\s*(?:`{3,}|~{3,})\s*([\w+#.-]*)/)?.[1]??``}function $e(e){for(let t=e.length-1;t>=0;t--){let n=e[t].trim();if(!n)continue;let r=n.match(/^#{1,6}\s+(.+?)\s*#*$/)?.[1]??n.match(/^(\*\*|__)(.+)\1$/)?.[2];return r&&r.replace(/[`*_]/g,``).trim()||null}return null}function et(e){let t=e.split(`
6
+ `).map(e=>e.trim()),n=0;if(t.find(e=>e)===`---`){let e=t.indexOf(`---`),r=t.indexOf(`---`,e+1);n=r===-1?t.length:r+1}return t.slice(n).find(e=>e&&!e.startsWith(`%%`))?.split(/\s+/)[0]||`diagram`}function tt(e,t){return e.replace(He,(e,n)=>{let r=t[Number(n)];return r.diagram?it(r.code,r.diagram.label):nt(r.code,`Copy`,`Copy code`)})}function nt(e,t,n,r=``){return`<div class="${fe}"${r}><pre><code>${y(e)}</code></pre><button type="button" class="${pe}" aria-label="${n}">${t}</button></div>`}var rt=0;function it(e,t){let n=`prb-md-mermaid-source-${++rt}`;return`<figure class="prb-md-mermaid" data-md-mermaid data-state="source"><div class="prb-md-mermaid-canvas" data-md-mermaid-canvas role="img" aria-label="${y(t)}" hidden></div><p class="prb-md-mermaid-error" data-md-mermaid-error hidden>This diagram couldn\u2019t be displayed.</p><button type="button" class="prb-md-mermaid-toggle" data-md-mermaid-toggle aria-expanded="true" aria-controls="${n}" hidden>Hide source</button>`+nt(e,`Copy source`,`Copy source`,` id="${n}" data-md-mermaid-source`)+`</figure>`}function at(e,t=0){let n=t;for(let t of e)n=t===` `?n+4-n%4:n+1;return n}function ot(e){return at(e.match(/^[ \t]*/)[0])}function st(e){let t=e.match(/^([ \t]*)(?:([-*+])|(\d{1,9})[.)])([ \t]+)(\S.*)$/);if(!t)return null;let[,n,r,i,a,o]=t,s=at(n)+(r?1:i.length+1),c=at(a,s);return{tag:r?`ul`:`ol`,start:r?1:Number(i),text:o.trim(),content:c-s>4?s+1:c}}function ct(e,t){let n=[],r=[],i=[],a=null,o=e=>e.tag===`ol`&&e.start!==1?` start="${e.start}"`:``,s=null,c=()=>{if(r.length&&n.push(`<p>${lt(r.join(` `),t)}</p>`),i.length&&n.push(`<blockquote>${lt(i.join(` `),t)}</blockquote>`),a){let e=e=>e.length===1?lt(e[0],t):e.map(e=>`<p>${lt(e,t)}</p>`).join(``),r=t=>`<${t.tag}${o(t)}>${t.items.map(t=>`<li>${e(t.paras)}</li>`).join(``)}</${t.tag}>`,i=({blocks:e})=>{let n=e.filter(e=>typeof e==`string`).length===1;return e.map(e=>typeof e==`string`?n?lt(e,t):`<p>${lt(e,t)}</p>`:r(e)).join(``)};n.push(`<${a.tag}${o(a)}>${a.items.map(e=>`<li>${i(e)}</li>`).join(``)}</${a.tag}>`)}r=[],i=[],a=null};for(let o of e.split(`
7
7
  `)){let e=o.trim();if(s){if(e){s.push(y(e));continue}n.push(s.join(`
8
- `)),s=null}if(!e){a&&!r.length&&!i.length?a.gap=!0:c();continue}if(a?.items.length){let t=a.items[a.items.length-1],n=t.blocks[t.blocks.length-1],r=typeof n==`string`?null:n,i=r?.items[r.items.length-1]??null,s=st(o),l=ct(o),u=a.gap;if(a.gap=!1,l&&s>=t.content){let e=r&&i&&(s>=i.content||r.tag===l.tag),n={paras:[l.text],content:l.content};e?r.items.push(n):t.blocks.push({tag:l.tag,start:l.start,items:[n]});continue}if(!l&&u){if(i&&s>=i.content){i.paras.push(e);continue}if(s>=t.content){t.blocks.push(e);continue}c()}else l&&u&&l.tag!==a.tag&&c()}if(t&&Re(e,t)){c(),s=[y(e)];continue}if(We.test(e)){c(),n.push(e);continue}if(/^(?:-{3,}|\*{3,}|_{3,})$/.test(e)){c(),n.push(`<hr>`);continue}let l=e.match(/^(#{1,6})\s+(.+)$/);if(l){c();let e=Math.min(l[1].length,3)+3;n.push(`<h${e}>${ut(l[2],t)}</h${e}>`);continue}let u=ct(o);if(u){let e=a;e?.tag!==u.tag&&(c(),e=a={tag:u.tag,start:u.start,items:[],gap:!1}),e.items.push({blocks:[u.text],content:u.content});continue}let d=e.match(/^>\s?(.*)$/);if(d){i.length||c(),i.push(d[1]);continue}if(a&&a.items.length){let{blocks:t}=a.items[a.items.length-1],n=t[t.length-1];if(typeof n==`string`)t[t.length-1]=`${n} ${e}`;else{let t=n.items[n.items.length-1].paras;t[t.length-1]+=` ${e}`}continue}if(i.length){i[i.length-1]+=` ${e}`;continue}r.push(e)}return c(),s&&n.push(s.join(`
9
- `)),n.join(``)}function ut(e,t){let n=[];return y(e).replace(/`([^`\n]+)`/g,(e,t)=>(n.push(t),`${He}${n.length-1}${He}`)).replace(/!\[([^\]\n]*)\]\(([^)\s]+)\)/g,(e,n,r)=>t&&!Le(r,t)?be(r,ye(n))??e:e).replace(/(?<!!)\[([^\]\n]+)\]\(([^)\s]+)\)/g,(e,n,r)=>he.test(r)&&!(t&&Le(r,t))?`<a href="${r}" target="_blank" rel="noopener noreferrer">${n}</a>`:e).replace(/\*\*([^*\n]+)\*\*/g,`<strong>$1</strong>`).replace(/__([^_\n]+)__/g,`<strong>$1</strong>`).replace(/(^|[^*\w])\*([^*\n]+)\*/g,`$1<em>$2</em>`).replace(/(^|[^_\w])_([^_\n]+)_(?![\w_])/g,`$1<em>$2</em>`).replace(Ge,(e,t)=>`<code>${n[Number(t)]}</code>`)}async function dt(e){try{return await navigator.clipboard.writeText(e),!0}catch(t){return console.warn(`PR Helper: clipboard write failed, falling back to execCommand`,t),ft(e)}}function ft(e){let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`aria-hidden`,`true`),t.style.cssText=`position:fixed;top:-9999px;left:-9999px;opacity:0;`,document.body.appendChild(t);try{return t.select(),document.execCommand(`copy`)}catch(e){return console.warn(`PR Helper: clipboard fallback failed`,e),!1}finally{t.remove()}}var pt=`pr-helper-msg-copy`,mt=`pr-helper-chat-actions`,ht=`data-message-id`,gt=`data-copy-source`,_t={idle:{icon:`<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>`,label:``,aria:`Copy message`},copied:{icon:`<path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>`,label:`Copied`,aria:`Copied`},failed:{icon:`<path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>`,label:`Copy failed`,aria:`Copy failed`}};function vt(e){return Ct(`${gt}="${y(e)}"`)}var yt=`pr-helper-finding-copy`,bt=`data-copy-idle-label`,xt=`data-copy-idle-aria`,St=`data-copy-idle-tip`;function Ct(e,t){let{icon:n}=_t.idle,r=t?.label??_t.idle.label,i=t?.aria??_t.idle.aria,a=t?` ${bt}="${y(r)}" ${xt}="${y(i)}" ${St}="${y(t.tip)}"`:``,o=`<button type="button" class="${t?`${pt} ${yt}`:pt}" ${e}${a}${t?` data-tip="${y(t.tip)}"`:``} aria-label="${y(i)}"><span class="${pt}-icon" aria-hidden="true">${Tt(n)}</span><span class="${pt}-label"${r?``:` hidden`}>${y(r)}</span></button>`;return t?o:`<div class="${mt}">${o}</div>`}function wt(e,t){let n=_t[t],r=t===`idle`?{...n,label:e.getAttribute(bt)??n.label,aria:e.getAttribute(xt)??n.aria}:n,i=e.querySelector(`.${pt}-icon`),a=e.querySelector(`.${pt}-label`);i&&(i.innerHTML=Tt(r.icon));let o=(e.getAttribute(bt)??``)!==``,s=e.classList.contains(`pr-helper-finding-copy`)&&!o;a instanceof HTMLElement&&(a.textContent=s?``:r.label,a.hidden=s||r.label===``),s&&e.setAttribute(`data-tip`,t===`idle`?e.getAttribute(St)??``:r.label),e.setAttribute(`aria-label`,r.aria),e.classList.toggle(`copied`,t===`copied`),e.classList.toggle(`failed`,t===`failed`)}function Tt(e){return`<svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor">${e}</svg>`}var Et=1400,Dt=`Copy`,Ot=`Copied`,kt=/Mac|iPhone|iPad/.test(navigator.userAgent)?`Press ⌘C`:`Press Ctrl C`,At=new WeakMap;function jt(e,t={}){let n=e=>{let n=e.target;if(!(n instanceof Element))return;let r=n.closest(`.${pe}`),i=r?null:n.closest(`.${pt}`);!r&&!i||(e.preventDefault(),e.stopPropagation(),r?Pt(r):i&&Mt(i,t.messageSource))};return e.addEventListener(`click`,n,!0),()=>e.removeEventListener(`click`,n,!0)}async function Mt(e,t){let n=Nt(e,t);It(e,n!==null&&await dt(n)?`copied`:`failed`)}function Nt(e,t){let n=e.getAttribute(gt);if(n!==null)return n;let r=e.getAttribute(ht);return r&&t?t(r):null}async function Pt(e){let t=e.parentElement?.querySelector(`pre code`),n=t?await dt(t.textContent??``):!1;!n&&t&&Ft(t),Lt(e,n?Ot:kt,n)}function Ft(e){let t=window.getSelection();if(!t)return;let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}function It(e,t){let n=At.get(e);n&&window.clearTimeout(n),wt(e,t),At.set(e,window.setTimeout(()=>{wt(e,`idle`),At.delete(e)},Et))}function Lt(e,t,n){let r=At.get(e);r&&window.clearTimeout(r);let i=e.dataset.idleLabel??=e.textContent||Dt;e.textContent=t,e.classList.toggle(`copied`,n),At.set(e,window.setTimeout(()=>{e.textContent=i,e.classList.remove(`copied`),At.delete(e)},Et))}var Rt={startOnLoad:!1,securityLevel:`strict`,htmlLabels:!1,flowchart:{htmlLabels:!1},theme:`neutral`,fontFamily:`inherit`,suppressErrorRendering:!0,secure:[`secure`,`securityLevel`,`startOnLoad`,`maxTextSize`,`suppressErrorRendering`,`maxEdges`,`htmlLabels`,`flowchart`,`themeCSS`,`themeVariables`,`theme`,`darkMode`,`fontFamily`,`dompurifyConfig`,`arrowMarkerAbsolute`,`deterministicIds`,`deterministicIDSeed`]},zt=null;function Bt(){return zt??=v(()=>import(`./chunk-D6oLtkSC.js`).then(e=>(e.default.initialize(Rt),e.default)),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])),zt}async function Vt(e,t,n,r=Bt){let i=await r();await i.parse(n);let{svg:a}=await i.render(t,n);e.innerHTML=a,Ut(e)}var Ht=`http://www.w3.org/2000/svg`;function Ut(e){for(let t of[...e.querySelectorAll(`a`)]){let n=e.ownerDocument.createElementNS(Ht,`g`);for(let e of[...t.attributes])/^(?:xlink:)?href$|^target$|^rel$/i.test(e.name)||n.setAttribute(e.name,e.value);n.append(...t.childNodes),t.replaceWith(n)}for(let t of e.querySelectorAll(`.clickable`))t.classList.remove(`clickable`)}var Wt=0;function Gt(e,t={}){let n=t.engine??Bt,r=t.observe??Kt,i=new WeakSet;for(let t of e.querySelectorAll(`figure[data-md-mermaid]`))r(t,()=>{i.has(t)||(i.add(t),qt(t,n))});let a=e=>{let t=e.target?.closest?.(`[data-md-mermaid-toggle]`);t&&Yt(t)};return e.addEventListener(`click`,a),()=>e.removeEventListener(`click`,a)}function Kt(e,t){let n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(n.disconnect(),t())},{rootMargin:`200px`});n.observe(e)}async function qt(e,t){let n=t=>e.querySelector(`[data-md-mermaid-${t}]`),r=n(`canvas`),i=n(`source`),a=n(`toggle`),o=i?.querySelector(`pre code`)?.textContent??``;if(!(!r||!i||!a))try{await Vt(r,`prb-md-mermaid-${++Wt}`,o,t),Jt(r.querySelector(`svg`)),r.hidden=!1,i.hidden=!0,a.hidden=!1,a.textContent=`View source`,a.setAttribute(`aria-expanded`,`false`),e.dataset.state=`diagram`}catch{e.dataset.state=`failed`;let t=n(`error`);t&&(t.hidden=!1)}}function Jt(e){let t=parseFloat(e?.style.maxWidth??``);!e||!Number.isFinite(t)||t<=0||(e.setAttribute(`width`,String(t)),e.style.maxWidth=`none`)}function Yt(e){let t=e.closest(`figure`)?.querySelector(`[data-md-mermaid-source]`);if(!t)return;let n=t.hidden;t.hidden=!n,e.textContent=n?`Hide source`:`View source`,e.setAttribute(`aria-expanded`,String(n))}var Xt=`pr-helper-selection-popover`,Zt=`pr-helper-selection-popover-expanded`,Qt=`pr-helper-selection-copy-done`,$t=8,en=8,tn=1e3,nn=`Copy selected text`,rn=`Copy`,an=`Copied`,on=`pr-helper-selection-popover-flat`,x=null;function sn(e){return`<button type="button" class="pr-helper-selection-menu-item" data-selection-action="${y(e.id)}">${y(e.label)}</button>`}function cn(e){let t=new Map;for(let n of e){if(!n.section)continue;let e=t.get(n.section);e?e.push(n):t.set(n.section,[n])}return`${e.filter(e=>!e.section).map(sn).join(``)}${[...t].map(([e,t])=>`
8
+ `)),s=null}if(!e){a&&!r.length&&!i.length?a.gap=!0:c();continue}if(a?.items.length){let t=a.items[a.items.length-1],n=t.blocks[t.blocks.length-1],r=typeof n==`string`?null:n,i=r?.items[r.items.length-1]??null,s=ot(o),l=st(o),u=a.gap;if(a.gap=!1,l&&s>=t.content){let e=r&&i&&(s>=i.content||r.tag===l.tag),n={paras:[l.text],content:l.content};e?r.items.push(n):t.blocks.push({tag:l.tag,start:l.start,items:[n]});continue}if(!l&&u){if(i&&s>=i.content){i.paras.push(e);continue}if(s>=t.content){t.blocks.push(e);continue}c()}else l&&u&&l.tag!==a.tag&&c()}if(t&&Le(e,t)){c(),s=[y(e)];continue}if(Ue.test(e)){c(),n.push(e);continue}if(/^(?:-{3,}|\*{3,}|_{3,})$/.test(e)){c(),n.push(`<hr>`);continue}let l=e.match(/^(#{1,6})\s+(.+)$/);if(l){c();let e=Math.min(l[1].length,3)+3;n.push(`<h${e}>${lt(l[2],t)}</h${e}>`);continue}let u=st(o);if(u){let e=a;e?.tag!==u.tag&&(c(),e=a={tag:u.tag,start:u.start,items:[],gap:!1}),e.items.push({blocks:[u.text],content:u.content});continue}let d=e.match(/^>\s?(.*)$/);if(d){i.length||c(),i.push(d[1]);continue}if(a&&a.items.length){let{blocks:t}=a.items[a.items.length-1],n=t[t.length-1];if(typeof n==`string`)t[t.length-1]=`${n} ${e}`;else{let t=n.items[n.items.length-1].paras;t[t.length-1]+=` ${e}`}continue}if(i.length){i[i.length-1]+=` ${e}`;continue}r.push(e)}return c(),s&&n.push(s.join(`
9
+ `)),n.join(``)}function lt(e,t){let n=[];return y(e).replace(/`([^`\n]+)`/g,(e,t)=>(n.push(t),`${Ve}${n.length-1}${Ve}`)).replace(/!\[([^\]\n]*)\]\(([^)\s]+)\)/g,(e,n,r)=>t&&!Ie(r,t)?be(r,ye(n))??e:e).replace(/(?<!!)\[([^\]\n]+)\]\(([^)\s]+)\)/g,(e,n,r)=>he.test(r)&&!(t&&Ie(r,t))?`<a href="${r}" target="_blank" rel="noopener noreferrer">${n}</a>`:e).replace(/\*\*([^*\n]+)\*\*/g,`<strong>$1</strong>`).replace(/__([^_\n]+)__/g,`<strong>$1</strong>`).replace(/(^|[^*\w])\*([^*\n]+)\*/g,`$1<em>$2</em>`).replace(/(^|[^_\w])_([^_\n]+)_(?![\w_])/g,`$1<em>$2</em>`).replace(We,(e,t)=>`<code>${n[Number(t)]}</code>`)}async function ut(e){try{return await navigator.clipboard.writeText(e),!0}catch(t){return console.warn(`PR Helper: clipboard write failed, falling back to execCommand`,t),dt(e)}}function dt(e){let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`aria-hidden`,`true`),t.style.cssText=`position:fixed;top:-9999px;left:-9999px;opacity:0;`,document.body.appendChild(t);try{return t.select(),document.execCommand(`copy`)}catch(e){return console.warn(`PR Helper: clipboard fallback failed`,e),!1}finally{t.remove()}}var ft=`pr-helper-msg-copy`,pt=`pr-helper-chat-actions`,mt=`data-message-id`,ht=`data-copy-source`,gt={idle:{icon:`<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>`,label:``,aria:`Copy message`},copied:{icon:`<path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>`,label:`Copied`,aria:`Copied`},failed:{icon:`<path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>`,label:`Copy failed`,aria:`Copy failed`}};function _t(e){return St(`${ht}="${y(e)}"`)}var vt=`pr-helper-finding-copy`,yt=`data-copy-idle-label`,bt=`data-copy-idle-aria`,xt=`data-copy-idle-tip`;function St(e,t){let{icon:n}=gt.idle,r=t?.label??gt.idle.label,i=t?.aria??gt.idle.aria,a=t?` ${yt}="${y(r)}" ${bt}="${y(i)}" ${xt}="${y(t.tip)}"`:``,o=`<button type="button" class="${t?`${ft} ${vt}`:ft}" ${e}${a}${t?` data-tip="${y(t.tip)}"`:``} aria-label="${y(i)}"><span class="${ft}-icon" aria-hidden="true">${wt(n)}</span><span class="${ft}-label"${r?``:` hidden`}>${y(r)}</span></button>`;return t?o:`<div class="${pt}">${o}</div>`}function Ct(e,t){let n=gt[t],r=t===`idle`?{...n,label:e.getAttribute(yt)??n.label,aria:e.getAttribute(bt)??n.aria}:n,i=e.querySelector(`.${ft}-icon`),a=e.querySelector(`.${ft}-label`);i&&(i.innerHTML=wt(r.icon));let o=(e.getAttribute(yt)??``)!==``,s=e.classList.contains(`pr-helper-finding-copy`)&&!o;a instanceof HTMLElement&&(a.textContent=s?``:r.label,a.hidden=s||r.label===``),s&&e.setAttribute(`data-tip`,t===`idle`?e.getAttribute(xt)??``:r.label),e.setAttribute(`aria-label`,r.aria),e.classList.toggle(`copied`,t===`copied`),e.classList.toggle(`failed`,t===`failed`)}function wt(e){return`<svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor">${e}</svg>`}var Tt=1400,Et=`Copy`,Dt=`Copied`,Ot=/Mac|iPhone|iPad/.test(navigator.userAgent)?`Press ⌘C`:`Press Ctrl C`,kt=new WeakMap;function At(e,t={}){let n=e=>{let n=e.target;if(!(n instanceof Element))return;let r=n.closest(`.${pe}`),i=r?null:n.closest(`.${ft}`);!r&&!i||(e.preventDefault(),e.stopPropagation(),r?Nt(r):i&&jt(i,t.messageSource))};return e.addEventListener(`click`,n,!0),()=>e.removeEventListener(`click`,n,!0)}async function jt(e,t){let n=Mt(e,t);Ft(e,n!==null&&await ut(n)?`copied`:`failed`)}function Mt(e,t){let n=e.getAttribute(ht);if(n!==null)return n;let r=e.getAttribute(mt);return r&&t?t(r):null}async function Nt(e){let t=e.parentElement?.querySelector(`pre code`),n=t?await ut(t.textContent??``):!1;!n&&t&&Pt(t),It(e,n?Dt:Ot,n)}function Pt(e){let t=window.getSelection();if(!t)return;let n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)}function Ft(e,t){let n=kt.get(e);n&&window.clearTimeout(n),Ct(e,t),kt.set(e,window.setTimeout(()=>{Ct(e,`idle`),kt.delete(e)},Tt))}function It(e,t,n){let r=kt.get(e);r&&window.clearTimeout(r);let i=e.dataset.idleLabel??=e.textContent||Et;e.textContent=t,e.classList.toggle(`copied`,n),kt.set(e,window.setTimeout(()=>{e.textContent=i,e.classList.remove(`copied`),kt.delete(e)},Tt))}var Lt={startOnLoad:!1,securityLevel:`strict`,htmlLabels:!1,flowchart:{htmlLabels:!1},theme:`neutral`,fontFamily:`inherit`,suppressErrorRendering:!0,secure:[`secure`,`securityLevel`,`startOnLoad`,`maxTextSize`,`suppressErrorRendering`,`maxEdges`,`htmlLabels`,`flowchart`,`themeCSS`,`themeVariables`,`theme`,`darkMode`,`fontFamily`,`dompurifyConfig`,`arrowMarkerAbsolute`,`deterministicIds`,`deterministicIDSeed`]},Rt=null;function zt(){return Rt??=v(()=>import(`./chunk-D6oLtkSC.js`).then(e=>(e.default.initialize(Lt),e.default)),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])),Rt}async function Bt(e,t,n,r=zt){let i=await r();await i.parse(n);let{svg:a}=await i.render(t,n);e.innerHTML=a,Ht(e)}var Vt=`http://www.w3.org/2000/svg`;function Ht(e){for(let t of[...e.querySelectorAll(`a`)]){let n=e.ownerDocument.createElementNS(Vt,`g`);for(let e of[...t.attributes])/^(?:xlink:)?href$|^target$|^rel$/i.test(e.name)||n.setAttribute(e.name,e.value);n.append(...t.childNodes),t.replaceWith(n)}for(let t of e.querySelectorAll(`.clickable`))t.classList.remove(`clickable`)}var Ut=0;function Wt(e,t={}){let n=t.engine??zt,r=t.observe??Gt,i=new WeakSet;for(let t of e.querySelectorAll(`figure[data-md-mermaid]`))r(t,()=>{i.has(t)||(i.add(t),Kt(t,n))});let a=e=>{let t=e.target?.closest?.(`[data-md-mermaid-toggle]`);t&&Jt(t)};return e.addEventListener(`click`,a),()=>e.removeEventListener(`click`,a)}function Gt(e,t){let n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(n.disconnect(),t())},{rootMargin:`200px`});n.observe(e)}async function Kt(e,t){let n=t=>e.querySelector(`[data-md-mermaid-${t}]`),r=n(`canvas`),i=n(`source`),a=n(`toggle`),o=i?.querySelector(`pre code`)?.textContent??``;if(!(!r||!i||!a))try{await Bt(r,`prb-md-mermaid-${++Ut}`,o,t),qt(r.querySelector(`svg`)),r.hidden=!1,i.hidden=!0,a.hidden=!1,a.textContent=`View source`,a.setAttribute(`aria-expanded`,`false`),e.dataset.state=`diagram`}catch{e.dataset.state=`failed`;let t=n(`error`);t&&(t.hidden=!1)}}function qt(e){let t=parseFloat(e?.style.maxWidth??``);!e||!Number.isFinite(t)||t<=0||(e.setAttribute(`width`,String(t)),e.style.maxWidth=`none`)}function Jt(e){let t=e.closest(`figure`)?.querySelector(`[data-md-mermaid-source]`);if(!t)return;let n=t.hidden;t.hidden=!n,e.textContent=n?`Hide source`:`View source`,e.setAttribute(`aria-expanded`,String(n))}var Yt=`pr-helper-selection-popover`,Xt=`pr-helper-selection-popover-expanded`,Zt=`pr-helper-selection-copy-done`,Qt=8,$t=8,en=1e3,tn=`Copy selected text`,nn=`Copy`,rn=`Copied`,an=`pr-helper-selection-popover-flat`,S=null;function on(e){return`<button type="button" class="pr-helper-selection-menu-item" data-selection-action="${y(e.id)}">${y(e.label)}</button>`}function sn(e){let t=new Map;for(let n of e){if(!n.section)continue;let e=t.get(n.section);e?e.push(n):t.set(n.section,[n])}return`${e.filter(e=>!e.section).map(on).join(``)}${[...t].map(([e,t])=>`
10
10
  <div class="pr-helper-selection-menu-group">
11
11
  <div class="pr-helper-selection-menu-heading">${y(e)}</div>
12
- <div class="pr-helper-selection-menu-group-items">${t.map(sn).join(``)}</div>
13
- </div>`).join(``)}`}function ln(e){if(e.layout===`flat`)return un(e);let t=cn(e.actions);return`
12
+ <div class="pr-helper-selection-menu-group-items">${t.map(on).join(``)}</div>
13
+ </div>`).join(``)}`}function cn(e){if(e.layout===`flat`)return ln(e);let t=sn(e.actions);return`
14
14
  <div class="pr-helper-selection-bar">
15
15
  <button type="button" class="pr-helper-selection-trigger" data-selection-open>
16
16
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="12" height="12" fill="currentColor" aria-hidden="true">
@@ -18,7 +18,7 @@ import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,K as s,L as c,N as l,P a
18
18
  </svg>
19
19
  <span>${y(e.triggerLabel??`Ask`)}</span>
20
20
  </button>
21
- <button type="button" class="pr-helper-selection-copy" data-selection-copy aria-label="${nn}" aria-describedby="pr-helper-selection-tip">
21
+ <button type="button" class="pr-helper-selection-copy" data-selection-copy aria-label="${tn}" aria-describedby="pr-helper-selection-tip">
22
22
  <svg class="pr-helper-selection-copy-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" aria-hidden="true">
23
23
  <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/>
24
24
  <path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/>
@@ -27,60 +27,63 @@ import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,K as s,L as c,N as l,P a
27
27
  <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L1.22 8.28a.75.75 0 0 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"/>
28
28
  </svg>
29
29
  </button>
30
- <span class="pr-helper-selection-tip" id="pr-helper-selection-tip" role="tooltip">${nn}</span>
30
+ <span class="pr-helper-selection-tip" id="pr-helper-selection-tip" role="tooltip">${tn}</span>
31
31
  </div>
32
32
  <div class="pr-helper-selection-menu">${t}</div>
33
- `}function un(e){return`<div class="pr-helper-selection-menu">
34
- ${cn(e.actions)}
35
- <button type="button" class="pr-helper-selection-menu-item pr-helper-selection-copy-item" data-selection-copy>${rn}</button>
36
- </div>`}function dn(e,t){let{width:n,height:r}=e.getBoundingClientRect(),i=t.top-r-$t,a=i>=en?i:Math.min(t.bottom+$t,window.innerHeight-r-en),o=Math.max(en,Math.min(t.left,window.innerWidth-n-en));e.style.top=`${Math.max(en,a)}px`,e.style.left=`${o}px`}function fn(){pn&&=(window.clearTimeout(pn),0),x?.popover.remove(),x=null}var pn=0;function mn(e){let t=e.querySelector(`.pr-helper-selection-tip`),n=e.querySelector(`.pr-helper-selection-copy-item`);e.classList.add(Qt),t&&(t.textContent=an),n&&(n.textContent=an),pn&&window.clearTimeout(pn),pn=window.setTimeout(()=>hn(e),tn)}function hn(e){pn&&=(window.clearTimeout(pn),0),e.classList.remove(Qt);let t=e.querySelector(`.pr-helper-selection-tip`);t&&(t.textContent=nn);let n=e.querySelector(`.pr-helper-selection-copy-item`);n&&(n.textContent=rn)}async function gn(e,t){try{await navigator.clipboard.writeText(t)}catch(e){console.warn(`PR Helper: clipboard write failed, falling back to execCommand`,e);let t=!1;try{t=document.execCommand(`copy`)}catch(e){console.warn(`PR Helper: clipboard fallback failed`,e)}if(!t)return}mn(e)}function _n(e,t){let n=window.getSelection();if(!n||n.isCollapsed||n.rangeCount===0)return null;let r=n.toString().trim();if(!r)return null;let i=n.getRangeAt(0);if(!e.contains(i.commonAncestorContainer))return null;if(t.onlyWithin||t.ignoreWithin){let e=i.commonAncestorContainer,n=e instanceof HTMLElement?e:e.parentElement;if(t.onlyWithin&&!n?.closest(t.onlyWithin)||t.ignoreWithin&&n?.closest(t.ignoreWithin))return null}let a=i.getBoundingClientRect();return a.width===0&&a.height===0?null:{text:r,rect:a}}function vn(e,t){let n={},r=()=>{let r=_n(e,t);if(!r){(!x||x.owner===n)&&fn();return}if(x&&x.owner!==n&&fn(),x)x.popover.classList.remove(Zt),hn(x.popover),x.text=r.text;else{let i=document.createElement(`div`);i.className=t.layout===`flat`?`${Xt} ${on}`:Xt,i.innerHTML=ln(t),i.addEventListener(`mousedown`,e=>e.preventDefault()),i.addEventListener(`click`,n=>{let r=n.target;if(r.closest(`[data-selection-copy]`)){x?.text&&gn(i,x.text);return}if(r.closest(`[data-selection-open]`)){i.classList.add(Zt);let n=_n(e,t);dn(i,n?.rect??i.getBoundingClientRect());return}let a=r.closest(`[data-selection-action]`)?.dataset.selectionAction;if(!a||!x)return;let o=x.text;fn(),t.onChoose(a,o)}),document.body.appendChild(i),x={popover:i,text:r.text,owner:n}}dn(x.popover,r.rect)},i=e=>{x&&e.target instanceof Node&&x.popover.contains(e.target)||window.setTimeout(r,0)},a=e=>{(e.shiftKey||e.key===`Shift`)&&r()},o=()=>{if(!x)return;let e=window.getSelection();(!e||e.isCollapsed)&&fn()},s=e=>{e.key===`Escape`&&fn()},c=()=>fn();return document.addEventListener(`mouseup`,i,!0),document.addEventListener(`keyup`,a,!0),e.addEventListener(`scroll`,c,!0),document.addEventListener(`selectionchange`,o),document.addEventListener(`keydown`,s),window.addEventListener(`scroll`,c,!0),()=>{document.removeEventListener(`mouseup`,i,!0),document.removeEventListener(`keyup`,a,!0),e.removeEventListener(`scroll`,c,!0),document.removeEventListener(`selectionchange`,o),document.removeEventListener(`keydown`,s),window.removeEventListener(`scroll`,c,!0),fn()}}var yn=[{id:`explain-detail`,label:`Explain`,instruction:`Explain this, keeping the technical detail.`},{id:`explain`,label:`Explain simply`,instruction:`Explain this in simpler terms.`},{id:`is-problem`,label:`Is this actually a problem?`,instruction:`Is this actually a problem? Be specific about when it would and would not matter.`},{id:`why-matters`,label:`Why does this matter?`,instruction:`Why does this matter? Say who or what it affects, and when.`},{id:`better-implementation`,label:`Suggest a better implementation`,instruction:`Suggest a better implementation for this.`},{id:`author-question`,label:`Generate a question for the author`,instruction:`Generate a question I could ask the author about this.`},{id:`custom`,label:`Ask a question`}];function bn(e){return![...yn,...xn].find(t=>t.id===e)?.instruction}var xn=[{id:`add-to-chat`,label:`Add to chat`}],Sn=800;function Cn(e,t={}){let n=t.maxChars??Sn,r=e.replace(/\r\n/g,`
33
+ `}function ln(e){return`<div class="pr-helper-selection-menu">
34
+ ${sn(e.actions)}
35
+ <button type="button" class="pr-helper-selection-menu-item pr-helper-selection-copy-item" data-selection-copy>${nn}</button>
36
+ </div>`}function un(e,t){let{width:n,height:r}=e.getBoundingClientRect(),i=t.top-r-Qt,a=i>=$t?i:Math.min(t.bottom+Qt,window.innerHeight-r-$t),o=Math.max($t,Math.min(t.left,window.innerWidth-n-$t));e.style.top=`${Math.max($t,a)}px`,e.style.left=`${o}px`}function dn(){fn&&=(window.clearTimeout(fn),0),S?.popover.remove(),S=null}var fn=0;function pn(e){let t=e.querySelector(`.pr-helper-selection-tip`),n=e.querySelector(`.pr-helper-selection-copy-item`);e.classList.add(Zt),t&&(t.textContent=rn),n&&(n.textContent=rn),fn&&window.clearTimeout(fn),fn=window.setTimeout(()=>mn(e),en)}function mn(e){fn&&=(window.clearTimeout(fn),0),e.classList.remove(Zt);let t=e.querySelector(`.pr-helper-selection-tip`);t&&(t.textContent=tn);let n=e.querySelector(`.pr-helper-selection-copy-item`);n&&(n.textContent=nn)}async function hn(e,t){try{await navigator.clipboard.writeText(t)}catch(e){console.warn(`PR Helper: clipboard write failed, falling back to execCommand`,e);let t=!1;try{t=document.execCommand(`copy`)}catch(e){console.warn(`PR Helper: clipboard fallback failed`,e)}if(!t)return}pn(e)}function gn(e,t){let n=window.getSelection();if(!n||n.isCollapsed||n.rangeCount===0)return null;let r=n.toString().trim();if(!r)return null;let i=n.getRangeAt(0);if(!e.contains(i.commonAncestorContainer))return null;if(t.onlyWithin||t.ignoreWithin){let e=i.commonAncestorContainer,n=e instanceof HTMLElement?e:e.parentElement;if(t.onlyWithin&&!n?.closest(t.onlyWithin)||t.ignoreWithin&&n?.closest(t.ignoreWithin))return null}let a=i.getBoundingClientRect();return a.width===0&&a.height===0?null:{text:r,rect:a}}function _n(e,t){let n={},r=()=>{let r=gn(e,t);if(!r){(!S||S.owner===n)&&dn();return}if(S&&S.owner!==n&&dn(),S)S.popover.classList.remove(Xt),mn(S.popover),S.text=r.text;else{let i=document.createElement(`div`);i.className=t.layout===`flat`?`${Yt} ${an}`:Yt,i.innerHTML=cn(t),i.addEventListener(`mousedown`,e=>e.preventDefault()),i.addEventListener(`click`,n=>{let r=n.target;if(r.closest(`[data-selection-copy]`)){S?.text&&hn(i,S.text);return}if(r.closest(`[data-selection-open]`)){i.classList.add(Xt);let n=gn(e,t);un(i,n?.rect??i.getBoundingClientRect());return}let a=r.closest(`[data-selection-action]`)?.dataset.selectionAction;if(!a||!S)return;let o=S.text;dn(),t.onChoose(a,o)}),document.body.appendChild(i),S={popover:i,text:r.text,owner:n}}un(S.popover,r.rect)},i=e=>{S&&e.target instanceof Node&&S.popover.contains(e.target)||window.setTimeout(r,0)},a=e=>{(e.shiftKey||e.key===`Shift`)&&r()},o=()=>{if(!S)return;let e=window.getSelection();(!e||e.isCollapsed)&&dn()},s=e=>{e.key===`Escape`&&dn()},c=()=>dn();return document.addEventListener(`mouseup`,i,!0),document.addEventListener(`keyup`,a,!0),e.addEventListener(`scroll`,c,!0),document.addEventListener(`selectionchange`,o),document.addEventListener(`keydown`,s),window.addEventListener(`scroll`,c,!0),()=>{document.removeEventListener(`mouseup`,i,!0),document.removeEventListener(`keyup`,a,!0),e.removeEventListener(`scroll`,c,!0),document.removeEventListener(`selectionchange`,o),document.removeEventListener(`keydown`,s),window.removeEventListener(`scroll`,c,!0),dn()}}var vn=[{id:`explain-detail`,label:`Explain`,instruction:`Explain this, keeping the technical detail.`},{id:`explain`,label:`Explain simply`,instruction:`Explain this in simpler terms.`},{id:`is-problem`,label:`Is this actually a problem?`,instruction:`Is this actually a problem? Be specific about when it would and would not matter.`},{id:`why-matters`,label:`Why does this matter?`,instruction:`Why does this matter? Say who or what it affects, and when.`},{id:`better-implementation`,label:`Suggest a better implementation`,instruction:`Suggest a better implementation for this.`},{id:`author-question`,label:`Generate a question for the author`,instruction:`Generate a question I could ask the author about this.`},{id:`custom`,label:`Ask a question`}];function yn(e){return![...vn,...bn].find(t=>t.id===e)?.instruction}var bn=[{id:`add-to-chat`,label:`Add to chat`}],xn=800;function Sn(e,t={}){let n=t.maxChars??xn,r=e.replace(/\r\n/g,`
37
37
  `).split(`
38
38
  `).map(e=>e.replace(/\s+$/,``));for(;r.length&&!r[0].trim();)r.shift();for(;r.length&&!r[r.length-1].trim();)r.pop();let i=r.filter(e=>e.trim()).map(e=>e.match(/^[ \t]*/)[0].length),a=i.length?Math.min(...i):0,o=r.map(e=>e.slice(a)).join(`
39
39
  `).replace(/\n{3,}/g,`
40
40
 
41
41
  `);return o.trim()?(o.length>n?`${o.slice(0,n).trimEnd()}…`:o).split(`
42
42
  `).map(e=>`> ${e}`.trimEnd()).join(`
43
- `):``}function wn(e,t,n={}){let r=Cn(e,n);if(!r)return null;let i=[...yn,...xn].find(e=>e.id===t);return i?i.instruction?`${r}\n\n${i.instruction}`:`${r}\n\n`:null}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 Tn=`saved:`,En=`Your prompts`;function Dn(e){return`${Tn}${e}`}function On(e){return e.startsWith(`saved:`)?e.slice(6):null}function kn(e){return e.closest(`[data-finding-card]`)?.querySelector(`[data-copy-source]`)?.getAttribute(`data-copy-source`)??``}var An=[`progress`,`overview`,`guide`,`issues`,`questions`,`files`,`prcontext`,`architecture`,`map`,`diagram`,`kiss`,`kissrecs`],jn=`#theme-`,Mn=[`buddy`,`overview`,`guide`,`architecture`,`map`,`diagram`,`issues`,`questions`,`files`,`prcontext`,`kiss`,`kissrecs`,`progress`],Nn=`&focus=`;function Pn(e){return`#${e}`}function Fn(e){return`${jn}${encodeURIComponent(e)}`}function In(e){let t=e.kind===`view`?Pn(e.view):Fn(e.sectionId);return e.focus?`${t}${Nn}${e.focus}`:t}var Ln=[`architecture`,`map`,`diagram`];function Rn(e,t){return Ln.includes(e)&&Ln.includes(t??``)?e:void 0}function zn(e,t){let n=Wn(e),r=n?.kind===`view`&&n.view===t?n.focus:Rn(t,n?.focus);return In({kind:`view`,view:t,...r?{focus:r}:{}})}function Bn(e){let{focus:t,...n}=e;return n}function Vn(e,t){return e.kind!==`view`||e.view!==`guide`||!t?e:{kind:`section`,sectionId:t,...e.focus?{focus:e.focus}:{}}}function Hn(e){return Mn.includes(e)}function Un(e){if(!e||typeof e!=`object`)return null;let{kind:t,view:n,sectionId:r,focus:i}=e,a=typeof i==`string`&&Hn(i)?{focus:i}:{};return t===`view`&&typeof n==`string`&&An.includes(n)?{kind:t,view:n,...a}:t===`section`&&typeof r==`string`&&r!==``?{kind:t,sectionId:r,...a}:null}function Wn(e){let t=e.indexOf(Nn);if(t===-1)return Gn(e);let n=Gn(e.slice(0,t));if(!n)return null;let r=e.slice(t+7);return Hn(r)?{...n,focus:r}:n}function Gn(e){if(e.startsWith(jn)){let t=e.slice(7);if(!t)return null;try{return{kind:`section`,sectionId:decodeURIComponent(t)}}catch{return null}}let t=e.replace(/^#/,``);return An.includes(t)?{kind:`view`,view:t}:null}var Kn=`pushedFocus`;function qn(e){let{[Kn]:t,...n}=e;return n}function Jn(e,t){return e.kind===`view`&&t.kind===`view`?e.view===t.view:e.kind===`section`&&t.kind===`section`&&e.sectionId===t.sectionId}function Yn(e,t,n){if(e.focus===t)return;let r={...Bn(qn(e)),focus:t};e.focus&&n.history.state?.[Kn]?n.history.replaceState({...r,[Kn]:!0},``,In(r)):n.history.pushState({...r,[Kn]:!0},``,In(r)),n.apply(r)}function Xn(e,t){if(!e.focus)return;if(t.history.state?.[Kn]){t.history.back();return}let n=Bn(qn(e));t.history.replaceState(n,``,In(n)),t.apply(n)}function Zn(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&&p(r)&&r.value!==``)}function Qn(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 $n(e,t,n,r){let i=n===`finding`?{maxChars:1/0}:{},a=On(e);if(a===null)return wn(t,e,i);let o=r(a);if(!o)return null;let s=Cn(t,i);return s?`${s}\n\n${o}`:null}function er(e,t,n){if(n.busy?.())return null;let r=$n(e,t.text,t.context,n.savedPrompt);if(!r)return null;let i=bn(e)||On(e)!==null;return t.context===`selection`||i?(n.stage(r),`staged`):(n.send(r),`sent`)}function tr(e){return e.reviewerClosed>0?`dealt with`:`resolved`}var nr=`Run review again`;function rr(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 ir(e){let t=e.dataset.questionAnswered;t&&rr(e.ownerDocument,t,e.dataset.answered===`true`||e.dataset.settled===`true`)}var ar=`pr-helper-author-context-preview`,or=`View full PR description`,sr=`Show less`;function cr(e){let t=e.ownerDocument,n=t.getElementById(e.getAttribute(`aria-controls`)??``),r=t.getElementById(ar);if(!n)return;let i=n.closest(`#${fr}`),a=i?[...i.querySelectorAll(`[data-author-context-toggle]`)]:[e],o=e.getAttribute(`aria-expanded`)!==`true`,s=lr(n);if(!o){let e=-ur(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?sr:or,e.hasAttribute(`data-author-context-head`)&&(e.hidden=!o);if(o){let e=Number(n.dataset.readingOffset??0);e>0&&dr(n,s,ur(n,s)+e);return}i&&ur(i,s)<0&&i.scrollIntoView({block:`start`}),e.hidden&&a.find(e=>!e.hidden)?.focus({preventScroll:!0})}function lr(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 ur(e,t){return e.getBoundingClientRect().top-(t?t.getBoundingClientRect().top:0)}function dr(e,t,n){(t??e.ownerDocument.defaultView)?.scrollBy(0,n)}var fr=`pr-helper-author-context`;function pr(e){let t=e.ownerDocument.getElementById(fr);if(!t)return;let n=t.querySelector(`[data-author-context-toggle]`);n?.getAttribute(`aria-expanded`)===`false`&&cr(n),t.scrollIntoView?.({block:`start`,behavior:`smooth`}),t.querySelector(`h4`)?.focus({preventScroll:!0})}({claude:`Claude Code`,codex:`Codex`,gemini:`Gemini CLI`}).claude;function S(e,t=``){return typeof e==`string`?e:t}var mr=`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 hr(e){return e?`View current PR description on GitHub ↗`:`View PR description on GitHub ↗`}function gr(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 _r(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 vr(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 yr(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 br(e){return e instanceof Element&&e.closest(`[data-guide-jump]`)?.dataset.guideJump||null}function xr(e){for(let t of document.querySelectorAll(`[data-goto-section]`))t.setAttribute(`aria-current`,String(t.dataset.gotoSection===e))}function Sr(){for(let e of document.querySelectorAll(`.prb-rail [data-goto-section]`))e.setAttribute(`aria-current`,`false`)}function Cr(e,t){let n=e.trim();return n?`${n}\n\n${t}`:t}var wr=50;function Tr(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 Er(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,wr),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 Dr(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 Or(e){let t=e.querySelector(`[data-change-navigator]`),n=e.querySelector(`.prb-code-scroll`),r=n&&n.scrollTop>0?Dr(n):{top:null,offset:0};return{cited:C(e.dataset.cited),centre:C(e.dataset.centre),expand:C(e.dataset.expand,wr),position:C(t?.dataset.changePosition??e.dataset.position),tall:e.hasAttribute(`data-expanded`),...r}}function kr(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 Ar(e,t){return e.cited===t.cited&&e.centre===t.centre&&e.expand===t.expand&&e.position===t.position}function jr(){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 Mr(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 Nr(e){return[...e.querySelectorAll(`[data-file][aria-expanded="true"]`)].map(e=>{let t=Tr(e);return{host:Mr(e),file:e.getAttribute(`data-file`)??``,line:e.getAttribute(`data-line`)??``,...t?{state:Or(t)}:{}}})}function Pr(e,t){return e.host===t.host&&e.file===t.file&&e.line===t.line}function Fr(e,t){for(let n of e.querySelectorAll(`[data-file]`))if(n.getAttribute(`data-file`)===t.file&&(n.getAttribute(`data-line`)??``)===t.line&&Mr(n)===t.host)return n;return null}function Ir(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 Lr(e){let{doc:t,main:n,rail:r,log:i,panes:o}=e,s={};for(let e of t.querySelectorAll(`[data-rail-toggle][aria-controls]`))s[e.getAttribute(`aria-controls`)]=e.getAttribute(`aria-expanded`)===`true`;let c=o?.dataset.ask;return{main:n?.scrollTop??0,rail:r?.scrollTop??0,ask:c===`open`||c===`closed`?c:null,log:i?.scrollTop??0,folds:s,panels:Nr(t),focus:a(t.activeElement,t.body)}}async function Rr(e,t,n){if(!t)return!1;let{doc:r,main:a,rail:o,log:c}=e,l=t.folds&&typeof t.folds==`object`?t.folds:{};for(let e of r.querySelectorAll(`[data-rail-toggle][aria-controls]`)){let t=l[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(Ir).map(e=>({...e,state:Er(e.state)}));for(let t of Nr(r))if(!e.some(e=>Pr(e,t))){let e=Fr(r,t);e&&n.closePanel(e)}let i=[];for(let t of e){let e=Fr(r,t);e&&i.push(n.openPanel(e,t.state).catch(()=>{}))}await Promise.all(i)}if(!n.stillCurrent())return!1;let u=i(t,`main`);a&&u!==null&&(a.scrollTop=u);let d=i(t,`rail`);o&&d!==null&&(o.scrollTop=d);let f=i(t,`log`);return c&&f!==null&&(c.scrollTop=f),s(r,t.focus),!0}var zr=`prb-ask-draft:`,Br=300;function Vr(e){return`${zr}${e}`}function Hr(e,t){let{storage:n,win:r}=t,i=Vr(t.path),a=null,o=e=>{try{e.trim()===``?n?.removeItem(i):n?.setItem(i,e)}catch{}};if(t.restore&&e.value===``)try{let t=n?.getItem(i);t&&(e.value=t)}catch{}let s={save(){a!==null&&r.clearTimeout(a),a=null,o(e.value)},saveSoon(){a!==null&&r.clearTimeout(a),a=r.setTimeout(()=>s.save(),Br)},clear(){a!==null&&r.clearTimeout(a),a=null,o(``)}};return e.addEventListener(`input`,()=>s.saveSoon()),r.addEventListener(`pagehide`,()=>s.save()),s}function Ur(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 Wr(){return`<button type="button" class="prb-update-btn" data-review-update>Update review</button>`}var Gr=`Updating this review checks the latest commits and refreshes the PR conversation. Your progress and Buddy AI history will be kept.`;function Kr(e){return`<details class="prb-update-alt">
43
+ `):``}function Cn(e,t,n={}){let r=Sn(e,n);if(!r)return null;let i=[...vn,...bn].find(e=>e.id===t);return i?i.instruction?`${r}\n\n${i.instruction}`:`${r}\n\n`:null}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 wn=`saved:`,Tn=`Your prompts`;function En(e){return`${wn}${e}`}function Dn(e){return e.startsWith(`saved:`)?e.slice(6):null}function On(e){return e.closest(`[data-finding-card]`)?.querySelector(`[data-copy-source]`)?.getAttribute(`data-copy-source`)??``}var kn=`Simple explanation`,An=`Ask more →`,jn=`Regenerate simple explanation`;function Mn(e,t={}){let n=Ge(e),r=t.askMore?`<button type="button" class="pr-helper-simple-explanation-more" data-simple-explanation-more>${An}</button>`:``,i=r&&n.endsWith(`</p>`)?`${n.slice(0,-4)} ${r}</p>`:n+r;return`<details class="pr-helper-simple-explanation" data-simple-explanation${t.open?` open`:``}>
44
+ <summary class="pr-helper-simple-explanation-summary">${kn}</summary>
45
+ <div class="pr-helper-simple-explanation-body pr-helper-markdown">${i}</div>
46
+ </details>`}function Nn(e,t){return`.pr-helper-${e}-card[data-finding-card="${CSS.escape(t)}"]`}function Pn(e){return e?.classList.contains(`pr-helper-issue-card`)?`issue`:e?.classList.contains(`pr-helper-question-card`)?`question`:null}function Fn(e,t){return e===`explain`&&t?{explains:t}:{}}function In(e){let t=e.closest(`[data-finding-card]`),n=Pn(t),r=t?.getAttribute(`data-finding-card`);return n&&r?{kind:n,id:r}:null}function Ln(e,t){let n=e.querySelector(Nn(t.kind,t.id));if(!n)return;let r=Mn(t.text,{open:!0,askMore:!0}),i=n.querySelector(`:scope > [data-simple-explanation]`);if(i){i.outerHTML=r;return}Rn(n,t.kind)?.insertAdjacentHTML(`afterend`,r)}function Rn(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;return r?.tagName===`H5`&&r.textContent===`Why this matters`?r.nextElementSibling:n??null}function zn(e,t){return e.closest(`[data-finding-card]`)?.querySelector(`[data-simple-explanation]`)?t.map(e=>e.id===`explain`?{...e,label:jn}:e):t}function Bn(e,t){return e?.continues&&t.includes(e.text)?e.continues:void 0}var Vn=[`progress`,`overview`,`guide`,`issues`,`questions`,`files`,`prcontext`,`architecture`,`map`,`diagram`,`kiss`,`kissrecs`],Hn=`#theme-`,Un=[`buddy`,`overview`,`guide`,`architecture`,`map`,`diagram`,`issues`,`questions`,`files`,`prcontext`,`kiss`,`kissrecs`,`progress`],Wn=`&focus=`;function Gn(e){return`#${e}`}function Kn(e){return`${Hn}${encodeURIComponent(e)}`}function qn(e){let t=e.kind===`view`?Gn(e.view):Kn(e.sectionId);return e.focus?`${t}${Wn}${e.focus}`:t}var Jn=[`architecture`,`map`,`diagram`];function Yn(e,t){return Jn.includes(e)&&Jn.includes(t??``)?e:void 0}function Xn(e,t){let n=tr(e),r=n?.kind===`view`&&n.view===t?n.focus:Yn(t,n?.focus);return qn({kind:`view`,view:t,...r?{focus:r}:{}})}function Zn(e){let{focus:t,...n}=e;return n}function Qn(e,t){return e.kind!==`view`||e.view!==`guide`||!t?e:{kind:`section`,sectionId:t,...e.focus?{focus:e.focus}:{}}}function $n(e){return Un.includes(e)}function er(e){if(!e||typeof e!=`object`)return null;let{kind:t,view:n,sectionId:r,focus:i}=e,a=typeof i==`string`&&$n(i)?{focus:i}:{};return t===`view`&&typeof n==`string`&&Vn.includes(n)?{kind:t,view:n,...a}:t===`section`&&typeof r==`string`&&r!==``?{kind:t,sectionId:r,...a}:null}function tr(e){let t=e.indexOf(Wn);if(t===-1)return nr(e);let n=nr(e.slice(0,t));if(!n)return null;let r=e.slice(t+7);return $n(r)?{...n,focus:r}:n}function nr(e){if(e.startsWith(Hn)){let t=e.slice(7);if(!t)return null;try{return{kind:`section`,sectionId:decodeURIComponent(t)}}catch{return null}}let t=e.replace(/^#/,``);return Vn.includes(t)?{kind:`view`,view:t}:null}var rr=`pushedFocus`;function ir(e){let{[rr]:t,...n}=e;return n}function ar(e,t){return e.kind===`view`&&t.kind===`view`?e.view===t.view:e.kind===`section`&&t.kind===`section`&&e.sectionId===t.sectionId}function or(e,t,n){if(e.focus===t)return;let r={...Zn(ir(e)),focus:t};e.focus&&n.history.state?.[rr]?n.history.replaceState({...r,[rr]:!0},``,qn(r)):n.history.pushState({...r,[rr]:!0},``,qn(r)),n.apply(r)}function sr(e,t){if(!e.focus)return;if(t.history.state?.[rr]){t.history.back();return}let n=Zn(ir(e));t.history.replaceState(n,``,qn(n)),t.apply(n)}function cr(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&&p(r)&&r.value!==``)}function lr(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 ur(e,t,n,r){let i=n===`finding`?{maxChars:1/0}:{},a=Dn(e);if(a===null)return Cn(t,e,i);let o=r(a);if(!o)return null;let s=Sn(t,i);return s?`${s}\n\n${o}`:null}function dr(e,t,n){if(n.busy?.())return null;let r=ur(e,t.text,t.context,n.savedPrompt);if(!r)return null;let i=yn(e)||Dn(e)!==null;return t.context===`selection`||i?(n.stage(r),`staged`):(n.send(r),`sent`)}function fr(e){return e.reviewerClosed>0?`dealt with`:`resolved`}var pr=`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.`,mr=`Run review again`;function hr(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 gr(e){let t=e.dataset.questionAnswered;t&&hr(e.ownerDocument,t,e.dataset.answered===`true`||e.dataset.settled===`true`)}var _r=`pr-helper-author-context-preview`,vr=`View full PR description`,yr=`Show less`;function br(e){let t=e.ownerDocument,n=t.getElementById(e.getAttribute(`aria-controls`)??``),r=t.getElementById(_r);if(!n)return;let i=n.closest(`#${wr}`),a=i?[...i.querySelectorAll(`[data-author-context-toggle]`)]:[e],o=e.getAttribute(`aria-expanded`)!==`true`,s=xr(n);if(!o){let e=-Sr(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?yr:vr,e.hasAttribute(`data-author-context-head`)&&(e.hidden=!o);if(o){let e=Number(n.dataset.readingOffset??0);e>0&&Cr(n,s,Sr(n,s)+e);return}i&&Sr(i,s)<0&&i.scrollIntoView({block:`start`}),e.hidden&&a.find(e=>!e.hidden)?.focus({preventScroll:!0})}function xr(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 Sr(e,t){return e.getBoundingClientRect().top-(t?t.getBoundingClientRect().top:0)}function Cr(e,t,n){(t??e.ownerDocument.defaultView)?.scrollBy(0,n)}var wr=`pr-helper-author-context`;function Tr(e){let t=e.ownerDocument.getElementById(wr);if(!t)return;let n=t.querySelector(`[data-author-context-toggle]`);n?.getAttribute(`aria-expanded`)===`false`&&br(n),t.scrollIntoView?.({block:`start`,behavior:`smooth`}),t.querySelector(`h4`)?.focus({preventScroll:!0})}({claude:`Claude Code`,codex:`Codex`,gemini:`Gemini CLI`}).claude;function C(e,t=``){return typeof e==`string`?e:t}function Er(e){return e?`View current PR description on GitHub ↗`:`View PR description on GitHub ↗`}function Dr(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 Or(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 Ar(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 Mr(e){for(let t of document.querySelectorAll(`[data-goto-section]`))t.setAttribute(`aria-current`,String(t.dataset.gotoSection===e))}function Nr(){for(let e of document.querySelectorAll(`.prb-rail [data-goto-section]`))e.setAttribute(`aria-current`,`false`)}function Pr(e,t){let n=e.trim();return n?`${n}\n\n${t}`:t}var Fr=50;function Ir(e){let t=e.tagName===`LI`?e.querySelector(`:scope > .prb-code`):e.nextElementSibling;return t?.classList.contains(`prb-code`)?t:null}function w(e,t=2**53-1){let n=Number(e);return Number.isFinite(n)&&n>=0?Math.min(Math.floor(n),t):0}function Lr(e){if(!e||typeof e!=`object`)return;let t=e,n=w(t.top);return{cited:w(t.cited),centre:w(t.centre),expand:w(t.expand,Fr),position:w(t.position),tall:t.tall===!0,top:n>0?n:null,offset:Number.isFinite(Number(t.offset))?Math.round(Number(t.offset)):0}}function Rr(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 zr(e){let t=e.querySelector(`[data-change-navigator]`),n=e.querySelector(`.prb-code-scroll`),r=n&&n.scrollTop>0?Rr(n):{top:null,offset:0};return{cited:w(e.dataset.cited),centre:w(e.dataset.centre),expand:w(e.dataset.expand,Fr),position:w(t?.dataset.changePosition??e.dataset.position),tall:e.hasAttribute(`data-expanded`),...r}}function Br(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 Vr(e,t){return e.cited===t.cited&&e.centre===t.centre&&e.expand===t.expand&&e.position===t.position}function Hr(){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 Ur(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 Wr(e){return[...e.querySelectorAll(`[data-file][aria-expanded="true"]`)].map(e=>{let t=Ir(e);return{host:Ur(e),file:e.getAttribute(`data-file`)??``,line:e.getAttribute(`data-line`)??``,...t?{state:zr(t)}:{}}})}function Gr(e,t){return e.host===t.host&&e.file===t.file&&e.line===t.line}function Kr(e,t){for(let n of e.querySelectorAll(`[data-file]`))if(n.getAttribute(`data-file`)===t.file&&(n.getAttribute(`data-line`)??``)===t.line&&Ur(n)===t.host)return n;return null}function qr(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 Jr(e){let{doc:t,main:n,rail:r,log:i,panes:o}=e,s={};for(let e of t.querySelectorAll(`[data-rail-toggle][aria-controls]`))s[e.getAttribute(`aria-controls`)]=e.getAttribute(`aria-expanded`)===`true`;let c=o?.dataset.ask;return{main:n?.scrollTop??0,rail:r?.scrollTop??0,ask:c===`open`||c===`closed`?c:null,log:i?.scrollTop??0,folds:s,panels:Wr(t),focus:a(t.activeElement,t.body)}}async function Yr(e,t,n){if(!t)return!1;let{doc:r,main:a,rail:o,log:c}=e,l=t.folds&&typeof t.folds==`object`?t.folds:{};for(let e of r.querySelectorAll(`[data-rail-toggle][aria-controls]`)){let t=l[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(qr).map(e=>({...e,state:Lr(e.state)}));for(let t of Wr(r))if(!e.some(e=>Gr(e,t))){let e=Kr(r,t);e&&n.closePanel(e)}let i=[];for(let t of e){let e=Kr(r,t);e&&i.push(n.openPanel(e,t.state).catch(()=>{}))}await Promise.all(i)}if(!n.stillCurrent())return!1;let u=i(t,`main`);a&&u!==null&&(a.scrollTop=u);let d=i(t,`rail`);o&&d!==null&&(o.scrollTop=d);let f=i(t,`log`);return c&&f!==null&&(c.scrollTop=f),s(r,t.focus),!0}var Xr=`prb-ask-draft:`,Zr=`prb-ask-staged:`,Qr=300;function $r(e){return`${Xr}${e}`}function ei(e){return`${Zr}${e}`}function ti(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}:void 0;return{text:t.text,source:t.source,...r?{continues:r}:{}}}catch{return null}}function ni(e,t){let{storage:n,win:r}=t,i=$r(t.path),a=ei(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=ti(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(),Qr)},clear(){o!==null&&r.clearTimeout(o),o=null,s(``)}};return e.addEventListener(`input`,()=>l.saveSoon()),r.addEventListener(`pagehide`,()=>l.save()),l}function ri(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 ii(){return`<button type="button" class="prb-update-btn" data-review-update>Update review</button>`}var ai=`Updating this review checks the latest commits and refreshes the PR conversation. Your progress and Buddy AI history will be kept.`;function oi(e){return`<details class="prb-update-alt">
44
47
  <summary>Start a new review</summary>
45
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>
46
- </details>`}var qr=`prreviewbuddy review --fresh`;function Jr(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 Yr(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 Xr(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?ri(n.code,r):ti(n.code,t.availability??null),u=e?[...l.facts,`checked ${y(Ur(n.checkedAt))}`]:l.facts;return`<div class="prb-fresh" data-state="${i||a?`changed`:`quiet`}" role="status">
49
+ </details>`}var si=`prreviewbuddy review --fresh`;function ci(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 li(e,t){if(!t.actions)return!1;let n=e??(t.remote?gi(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 ui(e,t={}){let n=e??(t.remote?gi(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?_i(n.code,r):hi(n.code,t.availability??null),u=e?[...l.facts,`checked ${y(ri(n.checkedAt))}`]:l.facts;return`<div class="prb-fresh" data-state="${i||a?`changed`:`quiet`}" role="status">
47
50
  <div class="prb-fresh-head">
48
51
  <span class="prb-fresh-dot" data-freshness="${l.state}" aria-hidden="true"></span>
49
52
  <strong class="prb-fresh-title">${y(l.title)}</strong>
50
53
  <span class="prb-fresh-facts">${u.join(` &middot; `)}</span>
51
54
  </div>
52
55
  ${l.consequence?`<p class="prb-fresh-say">${l.consequence}</p>`:``}
53
- ${Zr(n,t,i||a,Yr(e,t))}
54
- </div>`}function Zr(e,t,n,r){let i=n?``:`<button type="button" class="prb-fresh-close" data-fresh-close aria-label="Close">×</button>`;return`<div class="prb-fresh-actions">
55
- ${r?Wr():``}
56
- ${r?Kr(qr):``}
56
+ ${di(n,t,i||a,li(e,t))}
57
+ </div>`}function di(e,t,n,r){let i=n?``:`<button type="button" class="prb-fresh-close" data-fresh-close aria-label="Close">×</button>`;return`<div class="prb-fresh-actions">
58
+ ${r?ii():``}
59
+ ${r?oi(si):``}
57
60
  ${i}
58
- ${Qr(e,t,n,r===!0)}
59
- </div>`}function Qr(e,t,n,r){let i=[r?y(Gr):``,t.remote?ii(e.code):ai(e.code,e.checkout.reason!==`no-pull-request`),oi(e,t.actions===!0),n?`<button type="button" class="prb-fresh-quiet" data-fresh-dismiss="${y(t.remote?.sha??e.code.latestSha??``)}">Dismiss this warning</button>`:``].filter(e=>e!==``);if(i.length===0)return``;let a=`<div class="prb-fresh-notes">${i.map(e=>`<p>${e}</p>`).join(``)}</div>`;return n?`<details class="prb-fresh-more">
61
+ ${fi(e,t,n,r===!0)}
62
+ </div>`}function fi(e,t,n,r){let i=[r?y(ai):``,t.remote?vi(e.code):yi(e.code,e.checkout.reason!==`no-pull-request`),bi(e,t.actions===!0),n?`<button type="button" class="prb-fresh-quiet" data-fresh-dismiss="${y(t.remote?.sha??e.code.latestSha??``)}">Dismiss this warning</button>`:``].filter(e=>e!==``);if(i.length===0)return``;let a=`<div class="prb-fresh-notes">${i.map(e=>`<p>${e}</p>`).join(``)}</div>`;return n?`<details class="prb-fresh-more">
60
63
  <summary>More details</summary>
61
64
  ${a}
62
- </details>`:a}function $r(e,t){return e===null?[]:[`${e} file${e===1?``:`s`} ${t}`]}function ei(e){return e?`<code title="${y(e)}">${y(e.slice(0,7))}</code>`:``}function w(e){return e?[`reviewed ${ei(e)}`]:[]}function ti(e,t){if(e.state===`fixed`)return{state:`fixed`,title:`Freshness: Fixed`,facts:w(e.reviewedSha),consequence:t?.state===`missing`?`That commit is no longer in this repository. The review still reads in full, but it cannot be analysed again until the commit is back.`:`This review is of one commit, and a commit does not change, so these findings keep describing it.`};if(e.state===`current`)return{state:`current`,title:`Review up to date`,facts:w(e.reviewedSha),consequence:``};if(e.state===`changed`){if(e.rewritten)return{state:`changed`,title:`Code rewritten`,facts:[...w(e.reviewedSha),...$r(e.changedFiles,`differ`)],consequence:`The branch was rebased or amended, so this review describes older code.`};let t=e.newCommits===null?[]:[`${e.newCommits} new commit${e.newCommits===1?``:`s`}`];return{state:`changed`,title:`Code changed`,facts:[...w(e.reviewedSha),...t,...$r(e.changedFiles,`changed`)],consequence:`New commits landed, so the lines these findings cite may have moved.`}}switch(e.reason){case`uncommitted`:return{state:`unknown`,title:`Cannot be compared`,facts:w(e.reviewedSha),consequence:`This review read uncommitted work and nothing recorded what the working tree held, so whether the files still match cannot be told from here.`};case`missing-commit`:return{state:`unknown`,title:`Reviewed commit is gone`,facts:w(e.reviewedSha),consequence:`It is not in this repository any more, after a force-push or a branch rebuilt from scratch, so nothing can be measured against it.`};case`no-branch`:return{state:`unknown`,title:`Cannot be compared`,facts:w(e.reviewedSha),consequence:`This review’s branch is not in this repository, which is what a pull request from a fork or a branch deleted after merging looks like, so whether the findings still describe it cannot be told from here.`};default:return{state:`unknown`,title:`Cannot be compared`,facts:[],consequence:`Git could not be read in this checkout.`}}}function ni(e){return{checkedAt:0,code:{state:`unknown`,reviewedSha:e.reviewedSha,latestSha:null,comparison:null,newCommits:null,changedFiles:null,rewritten:!1,reason:null},checkout:{state:`unknown`,relation:`unknown`,prHeadSha:null,presentLocally:!1,reason:null},conversation:{attached:!1}}}function ri(e,t){let n=e.state===`changed`&&e.latestSha===t.sha?e:null,r=t.newCommits??n?.newCommits??null,i=n?.rewritten?[]:[r===null?`new commits on the pull request`:`${r} new commit${r===1?``:`s`}`];return{state:`changed`,title:`PR updated`,facts:[...w(e.reviewedSha),...i,...n?$r(n.changedFiles,n.rewritten?`differ`:`changed`):[],`seen ${y(Ur(t.observedAt))}`],consequence:n?.rewritten?`The branch was rebased or amended, so this review describes older code.`:`New commits landed, so the lines these findings cite may have moved.`}}function ii(e){return`This review is based on ${ei(e.reviewedSha)}. The pull request has newer commits. <strong>Update review</strong> fetches them first.`}function ai(e,t){if(!e.comparison)return``;let n=`<code>${y(e.comparison.ref)}</code>`;return e.state===`current`?t?`This review is based on the latest PR commit ${ei(e.reviewedSha)}.`:`This review is based on ${ei(e.reviewedSha)}, the latest commit on ${n}.`:e.comparison.remote?`This review is currently based on ${n}. <strong>Check for updates</strong> compares against the latest version you already have locally. <strong>Update review</strong> fetches the newest version first.`:`This review is currently based on ${n}, the branch it is of.`}function oi(e,t){if(!e.conversation.attached)return``;let n=y(Ur(e.conversation.importedAt));return t?`<button type="button" class="prb-fresh-quiet" data-pr-recheck>Re-check the conversation</button> to refresh comments and resolved threads without re-running the code review. Last checked ${n}.`:`The PR conversation was last checked ${n}.`}function si(e,t){let n=hr(t===`changed`);for(let t of e.querySelectorAll(`[data-github-description]`))t.textContent!==n&&(t.textContent=n)}function ci(e){let t=e.gist||e.whyNotJustified,n=e.locations.find(e=>e.primary)??e.locations[0];return[`### ${e.title.trim()}`,t?`**Why it matters:** ${t.trim()}`:``,`**Simpler approach:** ${e.simplerDirection.trim()}`,n?`**Start here:** \`${n.line?`${n.path}:${n.line}`:n.path}\``:``,e.draftComment?.trim()?`**Draft comment:**\n\n${ui(e.draftComment.trim())}`:``].filter(e=>e!==``).join(`
65
+ </details>`:a}function pi(e,t){return e===null?[]:[`${e} file${e===1?``:`s`} ${t}`]}function mi(e){return e?`<code title="${y(e)}">${y(e.slice(0,7))}</code>`:``}function T(e){return e?[`reviewed ${mi(e)}`]:[]}function hi(e,t){if(e.state===`fixed`)return{state:`fixed`,title:`Freshness: Fixed`,facts:T(e.reviewedSha),consequence:t?.state===`missing`?`That commit is no longer in this repository. The review still reads in full, but it cannot be analysed again until the commit is back.`:`This review is of one commit, and a commit does not change, so these findings keep describing it.`};if(e.state===`current`)return{state:`current`,title:`Review up to date`,facts:T(e.reviewedSha),consequence:``};if(e.state===`changed`){if(e.rewritten)return{state:`changed`,title:`Code rewritten`,facts:[...T(e.reviewedSha),...pi(e.changedFiles,`differ`)],consequence:`The branch was rebased or amended, so this review describes older code.`};let t=e.newCommits===null?[]:[`${e.newCommits} new commit${e.newCommits===1?``:`s`}`];return{state:`changed`,title:`Code changed`,facts:[...T(e.reviewedSha),...t,...pi(e.changedFiles,`changed`)],consequence:`New commits landed, so the lines these findings cite may have moved.`}}switch(e.reason){case`uncommitted`:return{state:`unknown`,title:`Cannot be compared`,facts:T(e.reviewedSha),consequence:`This review read uncommitted work and nothing recorded what the working tree held, so whether the files still match cannot be told from here.`};case`missing-commit`:return{state:`unknown`,title:`Reviewed commit is gone`,facts:T(e.reviewedSha),consequence:`It is not in this repository any more, after a force-push or a branch rebuilt from scratch, so nothing can be measured against it.`};case`no-branch`:return{state:`unknown`,title:`Cannot be compared`,facts:T(e.reviewedSha),consequence:`This review’s branch is not in this repository, which is what a pull request from a fork or a branch deleted after merging looks like, so whether the findings still describe it cannot be told from here.`};default:return{state:`unknown`,title:`Cannot be compared`,facts:[],consequence:`Git could not be read in this checkout.`}}}function gi(e){return{checkedAt:0,code:{state:`unknown`,reviewedSha:e.reviewedSha,latestSha:null,comparison:null,newCommits:null,changedFiles:null,rewritten:!1,reason:null},checkout:{state:`unknown`,relation:`unknown`,prHeadSha:null,presentLocally:!1,reason:null},conversation:{attached:!1}}}function _i(e,t){let n=e.state===`changed`&&e.latestSha===t.sha?e:null,r=t.newCommits??n?.newCommits??null,i=n?.rewritten?[]:[r===null?`new commits on the pull request`:`${r} new commit${r===1?``:`s`}`];return{state:`changed`,title:`PR updated`,facts:[...T(e.reviewedSha),...i,...n?pi(n.changedFiles,n.rewritten?`differ`:`changed`):[],`seen ${y(ri(t.observedAt))}`],consequence:n?.rewritten?`The branch was rebased or amended, so this review describes older code.`:`New commits landed, so the lines these findings cite may have moved.`}}function vi(e){return`This review is based on ${mi(e.reviewedSha)}. The pull request has newer commits. <strong>Update review</strong> fetches them first.`}function yi(e,t){if(!e.comparison)return``;let n=`<code>${y(e.comparison.ref)}</code>`;return e.state===`current`?t?`This review is based on the latest PR commit ${mi(e.reviewedSha)}.`:`This review is based on ${mi(e.reviewedSha)}, the latest commit on ${n}.`:e.comparison.remote?`This review is currently based on ${n}. <strong>Check for updates</strong> compares against the latest version you already have locally. <strong>Update review</strong> fetches the newest version first.`:`This review is currently based on ${n}, the branch it is of.`}function bi(e,t){if(!e.conversation.attached)return``;let n=y(ri(e.conversation.importedAt));return t?`<button type="button" class="prb-fresh-quiet" data-pr-recheck>Re-check the conversation</button> to refresh comments and resolved threads without re-running the code review. Last checked ${n}.`:`The PR conversation was last checked ${n}.`}function xi(e,t){let n=Er(t===`changed`);for(let t of e.querySelectorAll(`[data-github-description]`))t.textContent!==n&&(t.textContent=n)}function Si(e){let t=e.gist||e.whyNotJustified,n=e.locations.find(e=>e.primary)??e.locations[0];return[`### ${e.title.trim()}`,t?`**Why it matters:** ${t.trim()}`:``,`**Simpler approach:** ${e.simplerDirection.trim()}`,n?`**Start here:** \`${n.line?`${n.path}:${n.line}`:n.path}\``:``,e.draftComment?.trim()?`**Draft comment:**\n\n${wi(e.draftComment.trim())}`:``].filter(e=>e!==``).join(`
63
66
 
64
- `)}function li(e){return e.length===0?``:[`## Simplification suggestions (${e.length})`,...e.map(ci)].join(`
67
+ `)}function Ci(e){return e.length===0?``:[`## Simplification suggestions (${e.length})`,...e.map(Si)].join(`
65
68
 
66
- `)}function ui(e){return e.split(`
69
+ `)}function wi(e){return e.split(`
67
70
  `).map(e=>e===``?`>`:`> ${e}`).join(`
68
- `)}function di(e){return e===`done`||e===`failed`}function fi(e,t){let n=e=>e.toLowerCase().replace(/\bthe\b/g,``).replace(/[^a-z]/g,``);return n(e)===n(t)}function pi(e,t=``){return`<div class="prb-doc-head">
71
+ `)}function Ti(e){return e===`done`||e===`failed`}function Ei(e,t){let n=e=>e.toLowerCase().replace(/\bthe\b/g,``).replace(/[^a-z]/g,``);return n(e)===n(t)}function Di(e,t=``){return`<div class="prb-doc-head">
69
72
  <h3 class="prb-doc-title">${y(e)}</h3>
70
73
  ${t}
71
- </div>`}var mi=`<path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/>`,hi=`<path d="M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7"/>`;function gi(e,t){return`<svg class="${t}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`}function _i(e,t){let n=`Expand ${t}`;return`<button type="button" class="prb-focus-toggle" data-focus-toggle="${e}" data-focus-name="${y(t)}" aria-pressed="false" aria-label="${y(n)}" title="${y(n)}">${gi(mi,`prb-focus-expand`)}${gi(hi,`prb-focus-collapse`)}</button>`}_i(`kiss`,`KISS review`),pi(`Recommendations`,_i(`kissrecs`,`Recommendations`));var vi={author:{accepted:`Plan to simplify`,declined:`Keep as implemented`},reviewer:{accepted:`Raise with author`,declined:`Leave it`}};function yi(e,t){return t===`undecided`?`Open`:vi[e][t]}function bi(e,t){return t===0?`<span class="pr-helper-questions-progress-check" aria-hidden="true">\u2713</span><span class="pr-helper-questions-progress-count">All ${e} decided</span>`:`<span class="pr-helper-questions-progress-count">${t} of ${e} undecided</span>`}function xi(e){return`Decided (${e})`}function Si(e,t,n=!1){return n?{enabled:!1,note:`Saving your decision. You can copy once it is saved.`}:t?{enabled:!1,note:`Run KISS again before handing these recommendations off.`}:e===0?{enabled:!1,note:`Choose Raise with author on the recommendations you want to hand off.`}:{enabled:!0,note:`${e===1?`1 recommendation`:`${e} recommendations`} to raise with the author.`}}function Ci(e,t,n={}){if(!t||t.state!==`changed`)return``;let r=n.actions?`<button type="button" class="prb-kiss-fresh-run" data-kiss-run-open>Run again</button>`:``;if(n.dismissedSha&&n.dismissedSha===t.latestSha)return`<div class="prb-kiss-fresh" data-kiss-freshness="changed" data-collapsed role="status">
74
+ </div>`}var Oi=`<path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/>`,ki=`<path d="M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7"/>`;function Ai(e,t){return`<svg class="${t}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`}function ji(e,t){let n=`Expand ${t}`;return`<button type="button" class="prb-focus-toggle" data-focus-toggle="${e}" data-focus-name="${y(t)}" aria-pressed="false" aria-label="${y(n)}" title="${y(n)}">${Ai(Oi,`prb-focus-expand`)}${Ai(ki,`prb-focus-collapse`)}</button>`}ji(`kiss`,`KISS review`),Di(`Recommendations`,ji(`kissrecs`,`Recommendations`));var Mi={author:{accepted:`Plan to simplify`,declined:`Keep as implemented`},reviewer:{accepted:`Raise with author`,declined:`Leave it`}};function Ni(e,t){return t===`undecided`?`Open`:Mi[e][t]}function Pi(e,t){return t===0?`<span class="pr-helper-questions-progress-check" aria-hidden="true">\u2713</span><span class="pr-helper-questions-progress-count">All ${e} decided</span>`:`<span class="pr-helper-questions-progress-count">${t} of ${e} undecided</span>`}function Fi(e){return`Decided (${e})`}function Ii(e,t,n=!1){return n?{enabled:!1,note:`Saving your decision. You can copy once it is saved.`}:t?{enabled:!1,note:`Run KISS again before handing these recommendations off.`}:e===0?{enabled:!1,note:`Choose Raise with author on the recommendations you want to hand off.`}:{enabled:!0,note:`${e===1?`1 recommendation`:`${e} recommendations`} to raise with the author.`}}function Li(e,t,n={}){if(!t||t.state!==`changed`)return``;let r=n.actions?`<button type="button" class="prb-kiss-fresh-run" data-kiss-run-open>Run again</button>`:``;if(n.dismissedSha&&n.dismissedSha===t.latestSha)return`<div class="prb-kiss-fresh" data-kiss-freshness="changed" data-collapsed role="status">
72
75
  <p><strong>This KISS review describes commit ${y(e.slice(0,7))}.</strong> The branch has moved on since. ${r}</p>
73
76
  </div>`;let i=t.rewritten?`The branch has been rewritten since, so this report describes commits that are no longer on it.`:t.newCommits===null?`The branch has moved on since.`:`There ${t.newCommits===1?`has been 1 commit`:`have been ${t.newCommits} commits`} on the branch since.`;return`<div class="prb-kiss-fresh" data-kiss-freshness="changed" role="status">
74
77
  <p><strong>This KISS review describes commit ${y(e.slice(0,7))}.</strong> ${y(i)}</p>
75
78
  <p class="prb-kiss-fresh-note">Running KISS again analyses the branch as it is now. The report below and your decisions about it are kept either way.</p>
76
79
  <p class="prb-kiss-fresh-actions">${r}${n.actions&&t.latestSha?`<button type="button" class="prb-kiss-fresh-dismiss" data-kiss-freshness-dismiss="${y(t.latestSha)}">Not now</button>`:``}</p>
77
- </div>`}var wi=new WeakMap;function Ti(e){let t=e.dataset.kissDecide;return e.getAttribute(`aria-pressed`)===`true`?`undecided`:t}function Ei(e,t,n){let r=e.dataset.decision??`undecided`,i=async()=>{Ii(e);let i=e.contains(document.activeElement);Di(e,t),Pi(e,!0),ki(n),i&&Fi(e);let a=await n.send({runId:e.dataset.kissRunId??``,recommendationId:e.dataset.kissRec??``,decision:t}).catch(()=>!1);if(Pi(e,!1),a){ki(n);return}Di(e,r),ki(n),Li(e,t,n)},a=(wi.get(e)??Promise.resolve()).then(i,i);return wi.set(e,a),a}function Di(e,t){e.dataset.decision=t;let n=Ni(e),r=e.querySelector(`[data-kiss-status]`);r&&(r.dataset.kissStatus=t,r.textContent=yi(n,t));for(let r of e.querySelectorAll(`[data-kiss-decide]`))r.setAttribute(`aria-pressed`,String(r.dataset.kissDecide===t)),r.textContent=vi[n][r.dataset.kissDecide];Oi(e,t!==`undecided`)}function Oi(e,t){let n=(e.closest(`[data-view="kissrecs"]`)??document).querySelector(t?`[data-kiss-decided-list]`:`[data-kiss-open-list]`);if(!n||e.parentElement===n)return;let r=Number(e.dataset.rank),i=[...n.querySelectorAll(`:scope > [data-kiss-rec]`)].find(e=>Number(e.dataset.rank)>r);n.insertBefore(e,i??null)}function ki(e,t=document){let n=[...t.querySelectorAll(`[data-kiss-rec]`)];if(n.length===0)return;let r=n.filter(e=>e.dataset.decision&&e.dataset.decision!==`undecided`).length,i=n.length-r,a=t.querySelector(`[data-kiss-progress]`);a&&(a.innerHTML=bi(n.length,i));let o=t.querySelector(`[data-kiss-decided]`);if(o){o.hidden=r===0,o.toggleAttribute(`data-nothing-open`,i===0);let e=o.querySelector(`[data-kiss-decided-summary]`);e&&(e.textContent=xi(r))}e.paintRail(n.length,i),Ai(t)}function Ai(e=document){let t=e.querySelector(`[data-kiss-handoff]`);if(!t)return;let n=new Set([...e.querySelectorAll(`[data-kiss-rec][data-decision="accepted"]`)].map(e=>e.dataset.kissRec)),r=Mi(t).filter(e=>n.has(e.id)),i=e.querySelector(`[data-kiss-rec][aria-busy]`)!==null,a=Si(r.length,t.hasAttribute(`data-stale`),i),o=t.querySelector(`[data-kiss-handoff-copy]`);o&&(o.disabled=!a.enabled,o.setAttribute(`data-copy-source`,a.enabled?li(r):``));let s=t.querySelector(`[data-kiss-handoff-note]`);s&&(s.textContent=a.note)}function ji(e,t=document){for(let n of t.querySelectorAll(`[data-kiss-stale]`))n.hidden=!e;let n=t.querySelector(`[data-kiss-handoff]`);n&&(n.toggleAttribute(`data-stale`,e),Ai(t))}function Mi(e){try{let t=JSON.parse(e.querySelector(`script[data-kiss-handoff-source]`)?.textContent??`[]`);return Array.isArray(t)?t:[]}catch{return[]}}function Ni(e){return e.dataset.audience===`author`?`author`:`reviewer`}function Pi(e,t){e.toggleAttribute(`aria-busy`,t);for(let n of e.querySelectorAll(`[data-kiss-decide]`))n.disabled=t}function Fi(e){if(!e.closest(`[data-kiss-decided-list]`)){e.querySelector(`[data-kiss-decide][aria-pressed="true"], [data-kiss-decide]`)?.focus();return}let t=e.closest(`[data-view="kissrecs"]`)??document;(t.querySelector(`[data-kiss-open-list] > [data-kiss-rec] .prb-kiss-rec-title`)??t.querySelector(`[data-kiss-decided-summary]`))?.focus()}function Ii(e){e.querySelector(`[data-kiss-decision-error]`)?.remove()}function Li(e,t,n){let r=document.createElement(`p`);r.className=`prb-kiss-decision-error`,r.dataset.kissDecisionError=``,r.setAttribute(`role`,`alert`),r.append(`Couldn't save that decision. `);let i=document.createElement(`button`);i.type=`button`,i.className=`prb-kiss-decision-retry`,i.textContent=`Try again`,i.addEventListener(`click`,()=>void Ei(e,t,n)),r.append(i),(e.querySelector(`[data-kiss-actions]`)??e).append(r);let a=e.closest(`[data-kiss-decided]`);a&&(a.open=!0),i.focus()}function Ri(e,t=!1){return e!==`merged`&&e!==`closed`?``:`<span class="prb-card-pr-state" data-pr-state="${e}">${e===`merged`?`Merged`:t?`Closed`:`PR closed`}</span>`}function zi(e,t){t.complete!==void 0&&Hi(e,t.complete),t.activity!==void 0&&Bi(e,t.activity??void 0),t.lifecycle===void 0?t.activity!==void 0&&Ui(e,Vi(e)):Ui(e,t.lifecycle??void 0),t.queued!==void 0&&Wi(e,t.queued)}function Bi(e,t){let n=e.querySelector(`[data-review-menu]`);n&&(delete n.dataset.activityAt,delete n.dataset.activityKind,delete n.dataset.activityMovedAt,t&&(n.dataset.activityAt=String(t.at),n.dataset.activityKind=t.kind,t.movedAt!==void 0&&(n.dataset.activityMovedAt=String(t.movedAt))))}function Vi(e){let t=e.querySelector(`[data-review-menu]`);return g(t?{state:t.dataset.lifecycleState,at:Number(t.dataset.lifecycleAt)}:void 0)}function Hi(e,t){let n=t?`complete`:`in-progress`,r=e.querySelector(`[data-page-status]`);r&&(r.dataset.status=n,r.textContent=l(n));let i=e.querySelector(`[data-review-menu] [data-mark-status]`);if(i){let e=t?`in-progress`:`complete`;i.dataset.markStatus=e,i.textContent=oe(e)}}function Ui(e,t){let n=e.querySelector(`[data-review-menu]`);n&&(t?(n.dataset.lifecycleState=t.state,n.dataset.lifecycleAt=String(t.at)):(delete n.dataset.lifecycleState,delete n.dataset.lifecycleAt));let i=n?Gi(n):void 0,a=e.querySelector(`[data-page-lifecycle]`);if(a){let e=o(t,i);a.hidden=e===void 0,a.textContent=e?.text??``,a.toggleAttribute(`data-changed`,e?.changed===!0)}for(let n of e.querySelectorAll(`[data-review-menu] [data-lifecycle-set]`)){let e=n.dataset.lifecycleSet;n.hidden=!c(e,t,i),n.textContent=r(e,t,i)}}function Wi(e,n){e.querySelector(`[data-review-menu]`)?.toggleAttribute(`data-queued`,n);let r=e.querySelector(`[data-review-menu] [data-queue-action]`);r&&(r.dataset.queueAction=n?`remove`:`add`,r.textContent=t(n))}function Gi(e){return u(e.dataset)}function Ki(e){return g(e)??null}function qi(e){if(typeof e!=`object`||!e)return null;let{complete:t,lifecycle:n,queued:r,activity:i}=e,a={lifecycle:Ki(n)};if(typeof t==`boolean`&&(a.complete=t),typeof r==`boolean`&&(a.queued=r),i===null)a.activity=null;else{let e=d(i);e&&(a.activity=e)}return a}function Ji(){let e=0,t=0;return{snapshot:()=>e,current:n=>t===0&&n===e,begin:()=>{e+=1,t+=1;let n=!1;return()=>{n||(n=!0,e+=1,--t)}}}}var Yi=`The workspace server did not answer. It may have stopped.`;function Xi(e){let t=()=>e.root.querySelector(`[data-review-menu]`),n=!1,r=async(t,r,i)=>{if(n)return{error:null,busy:!0};n=!0;let a=e.gate.begin();try{let n=await e.post(t,r),a=await n.json().catch(()=>null);return n.ok&&a?(zi(e.root,i(a)),{error:null}):{error:typeof a?.error==`string`?a.error:`That could not be changed.`}}catch{return{error:Yi}}finally{n=!1,a()}},i=e=>r(`/queue`,{action:e},e=>({lifecycle:Ki(e.lifecycle),queued:e.queued===!0}));return{setComplete:e=>r(`/state`,{complete:e},e=>({complete:typeof e.completedAt==`number`,queued:e.queued===!0})),setLifecycle:e=>r(`/lifecycle`,{state:e},e=>({lifecycle:Ki(e.lifecycle),queued:e.queued===!0})),setQueued:i,toggleQueued:()=>i(t()?.hasAttribute(`data-queued`)?`remove`:`add`),checkForUpdates:async()=>{await e.checkForUpdates()},deleteReview:async()=>{try{let t=await e.post(`/delete`);return t.ok?{error:null}:{error:(await t.json().catch(()=>null))?.error??`That could not be deleted.`}}catch{return{error:Yi}}},offer:()=>{let r=t(),i=r?.hasAttribute(`data-can-write`)===!0,a=i&&r?.hasAttribute(`data-branch-actions`)===!0,o=r?g({state:r.dataset.lifecycleState,at:Number(r.dataset.lifecycleAt)}):void 0,s=r?u(r.dataset):void 0,l=e.root.querySelector(`[data-page-status]`)?.dataset.status===`complete`,d=!n;return{reviewed:d&&i&&!l,waiting:d&&a&&c(`waiting`,o,s),done:d&&a&&c(`done`,o,s),queue:d&&a,checkForUpdates:i&&r?.hasAttribute(`data-checkable`)===!0,delete:i}},busy:()=>n}}function Zi(e,t){return`${e} ${t}${e===1?``:`s`}`}function Qi(e,t){let n=e+t;return{total:n===0?`Nothing chosen`:`${n} chosen`,issues:e?Zi(e,`issue`):``,questions:t?Zi(t,`question`):``}}function $i(e,t){let n=Qi(e,t);return[n.total,n.issues,n.questions].filter(Boolean).join(` · `)}function ea(e){return e===0?``:`${e} chosen`}function ta(e){let t=(e,t)=>{let n=t.map(e=>e.trim()).filter(Boolean);return n.length===0?null:`## ${e}\n\n${n.map((e,t)=>{let n=`${t+1}. `;return n+e.replace(/\n/g,`\n${` `.repeat(n.length)}`).replace(/\n +\n/g,`
80
+ </div>`}var Ri=new WeakMap;function zi(e){let t=e.dataset.kissDecide;return e.getAttribute(`aria-pressed`)===`true`?`undecided`:t}function Bi(e,t,n){let r=e.dataset.decision??`undecided`,i=async()=>{Xi(e);let i=e.contains(document.activeElement);Vi(e,t),Ji(e,!0),Ui(n),i&&Yi(e);let a=await n.send({runId:e.dataset.kissRunId??``,recommendationId:e.dataset.kissRec??``,decision:t}).catch(()=>!1);if(Ji(e,!1),a){Ui(n);return}Vi(e,r),Ui(n),Zi(e,t,n)},a=(Ri.get(e)??Promise.resolve()).then(i,i);return Ri.set(e,a),a}function Vi(e,t){e.dataset.decision=t;let n=qi(e),r=e.querySelector(`[data-kiss-status]`);r&&(r.dataset.kissStatus=t,r.textContent=Ni(n,t));for(let r of e.querySelectorAll(`[data-kiss-decide]`))r.setAttribute(`aria-pressed`,String(r.dataset.kissDecide===t)),r.textContent=Mi[n][r.dataset.kissDecide];Hi(e,t!==`undecided`)}function Hi(e,t){let n=(e.closest(`[data-view="kissrecs"]`)??document).querySelector(t?`[data-kiss-decided-list]`:`[data-kiss-open-list]`);if(!n||e.parentElement===n)return;let r=Number(e.dataset.rank),i=[...n.querySelectorAll(`:scope > [data-kiss-rec]`)].find(e=>Number(e.dataset.rank)>r);n.insertBefore(e,i??null)}function Ui(e,t=document){let n=[...t.querySelectorAll(`[data-kiss-rec]`)];if(n.length===0)return;let r=n.filter(e=>e.dataset.decision&&e.dataset.decision!==`undecided`).length,i=n.length-r,a=t.querySelector(`[data-kiss-progress]`);a&&(a.innerHTML=Pi(n.length,i));let o=t.querySelector(`[data-kiss-decided]`);if(o){o.hidden=r===0,o.toggleAttribute(`data-nothing-open`,i===0);let e=o.querySelector(`[data-kiss-decided-summary]`);e&&(e.textContent=Fi(r))}e.paintRail(n.length,i),Wi(t)}function Wi(e=document){let t=e.querySelector(`[data-kiss-handoff]`);if(!t)return;let n=new Set([...e.querySelectorAll(`[data-kiss-rec][data-decision="accepted"]`)].map(e=>e.dataset.kissRec)),r=Ki(t).filter(e=>n.has(e.id)),i=e.querySelector(`[data-kiss-rec][aria-busy]`)!==null,a=Ii(r.length,t.hasAttribute(`data-stale`),i),o=t.querySelector(`[data-kiss-handoff-copy]`);o&&(o.disabled=!a.enabled,o.setAttribute(`data-copy-source`,a.enabled?Ci(r):``));let s=t.querySelector(`[data-kiss-handoff-note]`);s&&(s.textContent=a.note)}function Gi(e,t=document){for(let n of t.querySelectorAll(`[data-kiss-stale]`))n.hidden=!e;let n=t.querySelector(`[data-kiss-handoff]`);n&&(n.toggleAttribute(`data-stale`,e),Wi(t))}function Ki(e){try{let t=JSON.parse(e.querySelector(`script[data-kiss-handoff-source]`)?.textContent??`[]`);return Array.isArray(t)?t:[]}catch{return[]}}function qi(e){return e.dataset.audience===`author`?`author`:`reviewer`}function Ji(e,t){e.toggleAttribute(`aria-busy`,t);for(let n of e.querySelectorAll(`[data-kiss-decide]`))n.disabled=t}function Yi(e){if(!e.closest(`[data-kiss-decided-list]`)){e.querySelector(`[data-kiss-decide][aria-pressed="true"], [data-kiss-decide]`)?.focus();return}let t=e.closest(`[data-view="kissrecs"]`)??document;(t.querySelector(`[data-kiss-open-list] > [data-kiss-rec] .prb-kiss-rec-title`)??t.querySelector(`[data-kiss-decided-summary]`))?.focus()}function Xi(e){e.querySelector(`[data-kiss-decision-error]`)?.remove()}function Zi(e,t,n){let r=document.createElement(`p`);r.className=`prb-kiss-decision-error`,r.dataset.kissDecisionError=``,r.setAttribute(`role`,`alert`),r.append(`Couldn't save that decision. `);let i=document.createElement(`button`);i.type=`button`,i.className=`prb-kiss-decision-retry`,i.textContent=`Try again`,i.addEventListener(`click`,()=>void Bi(e,t,n)),r.append(i),(e.querySelector(`[data-kiss-actions]`)??e).append(r);let a=e.closest(`[data-kiss-decided]`);a&&(a.open=!0),i.focus()}function Qi(e,t=!1){return e!==`merged`&&e!==`closed`?``:`<span class="prb-card-pr-state" data-pr-state="${e}">${e===`merged`?`Merged`:t?`Closed`:`PR closed`}</span>`}function $i(e,t){t.complete!==void 0&&na(e,t.complete),t.activity!==void 0&&ea(e,t.activity??void 0),t.lifecycle===void 0?t.activity!==void 0&&ra(e,ta(e)):ra(e,t.lifecycle??void 0),t.queued!==void 0&&ia(e,t.queued)}function ea(e,t){let n=e.querySelector(`[data-review-menu]`);n&&(delete n.dataset.activityAt,delete n.dataset.activityKind,delete n.dataset.activityMovedAt,t&&(n.dataset.activityAt=String(t.at),n.dataset.activityKind=t.kind,t.movedAt!==void 0&&(n.dataset.activityMovedAt=String(t.movedAt))))}function ta(e){let t=e.querySelector(`[data-review-menu]`);return oe(t?{state:t.dataset.lifecycleState,at:Number(t.dataset.lifecycleAt)}:void 0)}function na(e,t){let n=t?`complete`:`in-progress`,r=e.querySelector(`[data-page-status]`);r&&(r.dataset.status=n,r.textContent=l(n));let i=e.querySelector(`[data-review-menu] [data-mark-status]`);if(i){let e=t?`in-progress`:`complete`;i.dataset.markStatus=e,i.textContent=ae(e)}}function ra(e,t){let n=e.querySelector(`[data-review-menu]`);n&&(t?(n.dataset.lifecycleState=t.state,n.dataset.lifecycleAt=String(t.at)):(delete n.dataset.lifecycleState,delete n.dataset.lifecycleAt));let i=n?aa(n):void 0,a=e.querySelector(`[data-page-lifecycle]`);if(a){let e=o(t,i);a.hidden=e===void 0,a.textContent=e?.text??``,a.toggleAttribute(`data-changed`,e?.changed===!0)}for(let n of e.querySelectorAll(`[data-review-menu] [data-lifecycle-set]`)){let e=n.dataset.lifecycleSet;n.hidden=!c(e,t,i),n.textContent=r(e,t,i)}}function ia(e,n){e.querySelector(`[data-review-menu]`)?.toggleAttribute(`data-queued`,n);let r=e.querySelector(`[data-review-menu] [data-queue-action]`);r&&(r.dataset.queueAction=n?`remove`:`add`,r.textContent=t(n))}function aa(e){return u(e.dataset)}function oa(e){return oe(e)??null}function sa(e){if(typeof e!=`object`||!e)return null;let{complete:t,lifecycle:n,queued:r,activity:i}=e,a={lifecycle:oa(n)};if(typeof t==`boolean`&&(a.complete=t),typeof r==`boolean`&&(a.queued=r),i===null)a.activity=null;else{let e=d(i);e&&(a.activity=e)}return a}function ca(){let e=0,t=0;return{snapshot:()=>e,current:n=>t===0&&n===e,begin:()=>{e+=1,t+=1;let n=!1;return()=>{n||(n=!0,e+=1,--t)}}}}var la=`The workspace server did not answer. It may have stopped.`;function ua(e){let t=()=>e.root.querySelector(`[data-review-menu]`),n=!1,r=async(t,r,i)=>{if(n)return{error:null,busy:!0};n=!0;let a=e.gate.begin();try{let n=await e.post(t,r),a=await n.json().catch(()=>null);return n.ok&&a?($i(e.root,i(a)),{error:null}):{error:typeof a?.error==`string`?a.error:`That could not be changed.`}}catch{return{error:la}}finally{n=!1,a()}},i=e=>r(`/queue`,{action:e},e=>({lifecycle:oa(e.lifecycle),queued:e.queued===!0}));return{setComplete:e=>r(`/state`,{complete:e},e=>({complete:typeof e.completedAt==`number`,queued:e.queued===!0})),setLifecycle:e=>r(`/lifecycle`,{state:e},e=>({lifecycle:oa(e.lifecycle),queued:e.queued===!0})),setQueued:i,toggleQueued:()=>i(t()?.hasAttribute(`data-queued`)?`remove`:`add`),checkForUpdates:async()=>{await e.checkForUpdates()},deleteReview:async()=>{try{let t=await e.post(`/delete`);return t.ok?{error:null}:{error:(await t.json().catch(()=>null))?.error??`That could not be deleted.`}}catch{return{error:la}}},offer:()=>{let r=t(),i=r?.hasAttribute(`data-can-write`)===!0,a=i&&r?.hasAttribute(`data-branch-actions`)===!0,o=r?oe({state:r.dataset.lifecycleState,at:Number(r.dataset.lifecycleAt)}):void 0,s=r?u(r.dataset):void 0,l=e.root.querySelector(`[data-page-status]`)?.dataset.status===`complete`,d=!n;return{reviewed:d&&i&&!l,waiting:d&&a&&c(`waiting`,o,s),done:d&&a&&c(`done`,o,s),queue:d&&a,checkForUpdates:i&&r?.hasAttribute(`data-checkable`)===!0,delete:i}},busy:()=>n}}function da(e,t){return`${e} ${t}${e===1?``:`s`}`}function fa(e,t){let n=e+t;return{total:n===0?`Nothing chosen`:`${n} chosen`,issues:e?da(e,`issue`):``,questions:t?da(t,`question`):``}}function pa(e,t){let n=fa(e,t);return[n.total,n.issues,n.questions].filter(Boolean).join(` · `)}function ma(e){return e===0?``:`${e} chosen`}function ha(e){let t=(e,t)=>{let n=t.map(e=>e.trim()).filter(Boolean);return n.length===0?null:`## ${e}\n\n${n.map((e,t)=>{let n=`${t+1}. `;return n+e.replace(/\n/g,`\n${` `.repeat(n.length)}`).replace(/\n +\n/g,`
78
81
 
79
82
  `)}).join(`
80
83
 
81
84
  `)}`};return[t(`Issues`,e.issues),t(`Questions`,e.questions)].filter(Boolean).join(`
82
85
 
83
- `)}var na=e=>`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`;na(`<path d="m3 17 2 2 4-4M3 7l2 2 4-4M13 6h8M13 12h8M13 18h8"/>`),na(`<path d="M20 6 9 17l-5-5"/>`);var T=[`preview`,`markdown`],ra={issue:`issues`,question:`questions`},ia=`a, button, input, select, textarea, label, summary, [data-menu], [role="button"], [contenteditable], [data-file], .prb-code`;function aa({root:e,showView:t}){let n=!1,r={issue:new Set,question:new Set},i=null,a=e=>e.closest(`[data-finding-card]`)?.getAttribute(`data-finding-card`)??``,o=e=>e.dataset.feedbackPick===`issue`||e.dataset.feedbackPick===`question`?e.dataset.feedbackPick:null;function s(t){return[...e.querySelectorAll(`[data-view="${ra[t]}"] [data-finding-card]`)].filter(e=>r[t].has(e.getAttribute(`data-finding-card`)??``)).map(e=>e.querySelector(`[data-copy-source]`)?.getAttribute(`data-copy-source`)??``)}function c(){let t=r.issue.size,i=r.question.size;e.querySelector(`.prb-body`)?.toggleAttribute(`data-feedback-selecting`,n);for(let t of e.querySelectorAll(`[data-feedback-select]`))t.setAttribute(`aria-pressed`,String(n));for(let t of e.querySelectorAll(`[data-feedback-pick]`)){let e=o(t);t.checked=e!==null&&r[e].has(a(t))}let s=e.querySelector(`[data-feedback-tray]`);if(s){s.hidden=!n;let e=Qi(t,i),r=s.querySelector(`[data-feedback-total]`);r&&(r.textContent=e.total);for(let t of[`issues`,`questions`]){let n=s.querySelector(`[data-feedback-goto="${t}"]`);if(!n)continue;let r=n.querySelector(`[data-feedback-goto-label]`);r&&(r.textContent=e[t]),n.hidden=e[t]===``}let a=s.querySelector(`[data-feedback-prepare]`);a&&(a.disabled=t+i===0)}for(let[r,a]of[[`issues`,t],[`questions`,i]]){let t=e.querySelector(`[data-rail-selected="${r}"]`);t&&(t.textContent=ea(a),t.hidden=!n||a===0)}}function l(){let t=e.querySelector(`[data-feedback-preview]`),n=e.querySelector(`[data-feedback-text]`)?.value??``;t&&(t.innerHTML=n.trim()?Ke(n):`<p class="prb-draft-empty">The draft is empty.</p>`,t.scrollTop=0)}function u(t){let n=e.querySelector(`[data-feedback-text]`);n&&(n.value=t),e.querySelector(`[data-feedback-copy]`)?.setAttribute(gt,t)}let d={enter(){n=!0,c()},exit(){n=!1,r.issue.clear(),r.question.clear(),c()},clear(){r.issue.clear(),r.question.clear(),c()},toggle(e,t,n){!t||r[e].has(t)===n||(n?r[e].add(t):r[e].delete(t),i=null,c())},flip(e){let t=e.querySelector(`[data-feedback-pick]`),i=t?o(t):null,a=e.getAttribute(`data-finding-card`)??``;return!n||!i||!a?!1:(d.toggle(i,a,!r[i].has(a)),!0)},compose(){return ta({issues:s(`issue`),questions:s(`question`)})},prepare(){if(r.issue.size+r.question.size===0)return;i??=d.compose(),u(i);let t=e.querySelector(`[data-feedback-dialog-count]`);t&&(t.textContent=$i(r.issue.size,r.question.size));let n=e.querySelector(`[data-feedback-dialog]`);n&&!n.open&&n.showModal(),d.showDraftTab(`preview`),e.querySelector(`[data-draft-tab="preview"]`)?.focus()},showDraftTab(t){for(let n of T){let r=e.querySelector(`[data-draft-tab="${n}"]`);r?.setAttribute(`aria-selected`,String(n===t)),r?.setAttribute(`tabindex`,n===t?`0`:`-1`);let i=e.getElementById(`prb-draft-${n}`);i&&(i.hidden=n!==t)}if(t===`preview`)return l();let n=e.querySelector(`[data-feedback-text]`);n?.setSelectionRange(0,0),n&&(n.scrollTop=0)},state(){return{selecting:n,issues:[...r.issue],questions:[...r.question]}}};return e.addEventListener(`change`,e=>{let t=e.target.closest(`[data-feedback-pick]`),n=t?o(t):null;t&&n&&d.toggle(n,a(t),t.checked)}),e.addEventListener(`input`,t=>{let n=t.target.closest(`[data-feedback-text]`);n&&(i!==null&&(i=n.value),e.querySelector(`[data-feedback-copy]`)?.setAttribute(gt,n.value))}),e.addEventListener(`click`,r=>{let i=r.target;if(i.closest(`[data-feedback-select]`))return n?d.exit():d.enter();if(i.closest(`[data-feedback-clear]`))return d.clear();if(i.closest(`[data-feedback-done]`))return d.exit();if(i.closest(`[data-feedback-prepare]`))return d.prepare();if(i.closest(`[data-feedback-close]`))return e.querySelector(`[data-feedback-dialog]`)?.close();let a=i.closest(`[data-draft-tab]`)?.dataset.draftTab;if(a===`preview`||a===`markdown`)return d.showDraftTab(a);let o=i.closest(`[data-feedback-goto]`)?.dataset.feedbackGoto;if(o===`issues`||o===`questions`)return t(o);let s=i.closest(`[data-finding-card]`);!s||i.closest(ia)||(e.getSelection()?.isCollapsed??!0)&&d.flip(s)}),e.addEventListener(`keydown`,t=>{let n=t.target.closest(`[data-draft-tab]`)?.dataset.draftTab;if(!n)return;let r=T.indexOf(n),i=t.key===`ArrowRight`?T[(r+1)%T.length]:t.key===`ArrowLeft`?T[(r+T.length-1)%T.length]:t.key===`Home`?T[0]:t.key===`End`?T[T.length-1]:null;i&&(t.preventDefault(),d.showDraftTab(i),e.querySelector(`[data-draft-tab="${i}"]`)?.focus())}),c(),d}function oa(e){let t=e.querySelector(`[data-feedback-text]`);if(t&&e.activeElement===t&&t.selectionStart!==t.selectionEnd)return!0;let n=e.getSelection();return!!(n&&!n.isCollapsed&&n.toString()!==``)}function sa(e,t){let n=()=>t.querySelector(`[data-feedback-dialog] [data-feedback-copy]`);return{"review.feedback.prepare":{available:()=>{let{issues:t,questions:n}=e.state();return t.length+n.length>0},run:()=>e.prepare()},"review.feedback.copyDraft":{available:()=>n()!==null&&!oa(t),run:()=>n()?.click()}}}function ca(e){let t=e.querySelector(`.prb-view:is([data-view="issues"], [data-view="questions"]):not([hidden])`);return t?[...t.querySelectorAll(`[data-finding-card]`)].filter(e=>e.checkVisibility()&&!e.parentElement?.closest(`details:not([open])`)):[]}function la(e){let t=e.getSelection();return!!(t&&!t.isCollapsed&&t.toString()!==``)}function ua(e){let{doc:t}=e,n=ue({doc:t,item:`[data-finding-card]`,walk:()=>ca(t),background:e.pane}),r=()=>n.holdsKeys()?n.current():null,i=e=>e?.querySelector(`[data-ask-buddy-menu]`)??null,a=e=>e?.querySelector(`[data-copy-source]`)??null,o=e=>e?.querySelector(`[data-feedback-pick]`)!=null;return{cursor:n,commands:{"review.findings.next":{available:()=>ca(t).length>0,run:()=>n.move(1)},"review.findings.previous":{available:()=>ca(t).length>0,run:()=>n.move(-1)},"review.findings.askBuddy":{available:()=>i(r())!==null,run:()=>{let t=i(r());t&&e.openMenu(t,()=>n.refocus())}},"review.findings.copy":{available:()=>!la(t)&&a(r())!==null,run:()=>a(r())?.click()},"review.findings.choose":{available:()=>e.selecting()&&o(r()),run:()=>{let t=r();t&&e.flip(t)}}}}}var da=`prb-rail-review`;function fa(e){return(e.getElementById(da)?.closest(`.prb-rail-group`)?.querySelector(`a.prb-rail-group-title`))?.dataset.viewNav??null}function pa(e,t){let n=t.toLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(e=>{let t=`${e.name}\n${e.prompt}`.toLowerCase();return n.every(e=>t.includes(e))})}function ma(e){return e<0||e>=10?null:e===9?`0`:String(e+1)}function ha(e){return/^[0-9]$/.test(e)?e===`0`?9:Number(e)-1:null}function ga(e){return{title:`Choose a prompt`,mount(t,n){let r=t.ownerDocument,i=e.prompts(),a=r.createElement(`input`);a.type=`search`,a.className=`prb-palette-input`,a.placeholder=`Filter prompts`,a.setAttribute(`aria-label`,`Filter prompts`),a.spellcheck=!1;let o=r.createElement(`p`);o.className=`prb-palette-summary`,o.setAttribute(`aria-live`,`polite`);let s=r.createElement(`div`);s.className=`prb-palette-results`,s.setAttribute(`role`,`group`),s.setAttribute(`aria-label`,`Prompts`);let c=[],l=()=>[...s.querySelectorAll(`[data-prompt-choice]`)],u=()=>{let e=r.activeElement===a;for(let[t,n]of l().entries())n.toggleAttribute(`data-enter-target`,e&&t===0)},d=()=>{c=pa(i,a.value),s.replaceChildren(...c.map((e,t)=>{let n=r.createElement(`button`);n.type=`button`,n.className=`prb-palette-result prb-palette-prompt`,n.dataset.promptChoice=e.id;let i=r.createElement(`kbd`);i.className=`prb-kbd prb-palette-num`;let a=ma(t);a?i.textContent=a:i.setAttribute(`aria-hidden`,`true`);let o=r.createElement(`span`);o.className=`prb-palette-prompt-text`;let s=r.createElement(`span`);s.className=`prb-palette-result-title`,s.textContent=e.name;let c=r.createElement(`span`);return c.className=`prb-palette-prompt-said`,c.textContent=e.prompt,o.append(s,c),n.append(i,o),n})),o.textContent=i.length===0?`No saved prompts yet. Add one under Your prompts in Buddy AI.`:c.length===0?`No prompts match.`:c.length===i.length?`${i.length} ${i.length===1?`prompt`:`prompts`}`:`${c.length} of ${i.length} prompts`,u()},f=t=>{!t||!c.some(e=>e.id===t)||(n(),e.choose(t))},ee=e=>{a.value=e===`Backspace`?a.value.slice(0,-1):a.value+e,a.focus(),a.dispatchEvent(new Event(`input`,{bubbles:!0}))};a.addEventListener(`input`,d),a.addEventListener(`focus`,u),a.addEventListener(`blur`,u),s.addEventListener(`click`,e=>{f(e.target.closest(`[data-prompt-choice]`)?.dataset.promptChoice)}),t.addEventListener(`keydown`,e=>{if(e.isComposing||e.metaKey||e.ctrlKey||e.altKey)return;let t=l(),n=e.target===a,r=t.indexOf(e.target),i=ha(e.key);if(i!==null)return e.preventDefault(),f(t[i]?.dataset.promptChoice);if(e.key===`Enter`)return e.preventDefault(),f((n?t[0]:t[r])?.dataset.promptChoice);let o=e.key===`ArrowDown`||!n&&e.key===`j`,s=e.key===`ArrowUp`||!n&&e.key===`k`;if(o||s){let n=o?r<0?t[0]:t[r+1]:r<=0?a:t[r-1];e.preventDefault(),n?.focus();return}!n&&(e.key.length===1||e.key===`Backspace`)&&(e.preventDefault(),ee(e.key))}),t.append(a,o,s),d(),a.focus()}}}function _a(e,t=Date.now()){let n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return`${n} second${n===1?``:`s`}`;let r=Math.round(n/60);return`${r} minute${r===1?``:`s`}`}_i(`progress`,`Review progress`);var va={job:`data-job-phase`,kiss:`data-kiss-phase`,update:`data-update-phase`};function ya(e){let t=new Map;for(let n of Object.keys(va)){let r=va[n],i=e.querySelector(`[${r}]`);i&&!di(i.getAttribute(r)??void 0)&&t.set(n,i)}return t}function ba(e,t,n){return t.failed?!0:e===`update`?t.phase===`none`||di(t.phase):xa(t.phase,n)}function xa(e,t){return di(e)?!0:(e===`conversation`||e===`analysing`)&&!t.querySelector(`[data-view="files"]`)}function Sa(e,t,n){let r=[...e.querySelectorAll(`.prb-progress-step`)],i=r.findIndex(e=>e.dataset.phase===t);if(i===-1)return;r.forEach((e,t)=>{let n=t<i?`complete`:t===i?`active`:`pending`;e.dataset.state=n;let r=e.querySelector(`.prb-progress-label`),a=n===`complete`?e.dataset.labelDone:e.dataset.labelDoing;r&&a&&(r.textContent=a),t!==i&&e.querySelector(`[data-step-note]`)?.remove()});let a=r[i];if(!n||fi(n,a.querySelector(`.prb-progress-label`)?.textContent??``))return;let o=a.querySelector(`[data-step-note]`);o||(o=document.createElement(`p`),o.className=`prb-progress-note`,o.setAttribute(`data-step-note`,``),a.appendChild(o)),o.textContent=n}function Ca(e){let t=e.querySelector(`[data-started-at]`),n=Number(t?.dataset.startedAt);!t||!Number.isFinite(n)||(t.textContent=`Running for ${_a(n)}.`)}async function wa({look:e,reload:t,giveUpMs:n=2e4,pauseMs:r=400}){let i=!1,a=()=>{i||(i=!0,t())};for(setTimeout(a,n);!i;){try{let t=await e();if(!t||t===`none`||di(t))return a()}catch{}await new Promise(e=>setTimeout(e,r))}}function Ta(e,t,n){let r=e.scope===`change`?`Whole change`:t.get(e.scope)??`A theme of this change`,i=e.scope===`change`?``:e.scope;return`<article class="prb-diagram" id="prb-diagram-${y(e.scope)}" data-diagram-card="${y(e.scope)}">
86
+ `)}var ga=e=>`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`;ga(`<path d="m3 17 2 2 4-4M3 7l2 2 4-4M13 6h8M13 12h8M13 18h8"/>`),ga(`<path d="M20 6 9 17l-5-5"/>`);var E=[`preview`,`markdown`],_a={issue:`issues`,question:`questions`},va=`a, button, input, select, textarea, label, summary, [data-menu], [role="button"], [contenteditable], [data-file], .prb-code`;function ya({root:e,showView:t}){let n=!1,r={issue:new Set,question:new Set},i=null,a=e=>e.closest(`[data-finding-card]`)?.getAttribute(`data-finding-card`)??``,o=e=>e.dataset.feedbackPick===`issue`||e.dataset.feedbackPick===`question`?e.dataset.feedbackPick:null;function s(t){return[...e.querySelectorAll(`[data-view="${_a[t]}"] [data-finding-card]`)].filter(e=>r[t].has(e.getAttribute(`data-finding-card`)??``)).map(e=>e.querySelector(`[data-feedback-source]`)?.getAttribute(`data-feedback-source`)??``)}function c(){let t=r.issue.size,i=r.question.size;e.querySelector(`.prb-body`)?.toggleAttribute(`data-feedback-selecting`,n);for(let t of e.querySelectorAll(`[data-feedback-select]`))t.setAttribute(`aria-pressed`,String(n));for(let t of e.querySelectorAll(`[data-feedback-pick]`)){let e=o(t);t.checked=e!==null&&r[e].has(a(t))}let s=e.querySelector(`[data-feedback-tray]`);if(s){s.hidden=!n;let e=fa(t,i),r=s.querySelector(`[data-feedback-total]`);r&&(r.textContent=e.total);for(let t of[`issues`,`questions`]){let n=s.querySelector(`[data-feedback-goto="${t}"]`);if(!n)continue;let r=n.querySelector(`[data-feedback-goto-label]`);r&&(r.textContent=e[t]),n.hidden=e[t]===``}let a=s.querySelector(`[data-feedback-prepare]`);a&&(a.disabled=t+i===0)}for(let[r,a]of[[`issues`,t],[`questions`,i]]){let t=e.querySelector(`[data-rail-selected="${r}"]`);t&&(t.textContent=ma(a),t.hidden=!n||a===0)}}function l(){let t=e.querySelector(`[data-feedback-preview]`),n=e.querySelector(`[data-feedback-text]`)?.value??``;t&&(t.innerHTML=n.trim()?Ge(n):`<p class="prb-draft-empty">The draft is empty.</p>`,t.scrollTop=0)}function u(t){let n=e.querySelector(`[data-feedback-text]`);n&&(n.value=t),e.querySelector(`[data-feedback-copy]`)?.setAttribute(ht,t)}let d={enter(){n=!0,c()},exit(){n=!1,r.issue.clear(),r.question.clear(),c()},clear(){r.issue.clear(),r.question.clear(),c()},toggle(e,t,n){!t||r[e].has(t)===n||(n?r[e].add(t):r[e].delete(t),i=null,c())},flip(e){let t=e.querySelector(`[data-feedback-pick]`),i=t?o(t):null,a=e.getAttribute(`data-finding-card`)??``;return!n||!i||!a?!1:(d.toggle(i,a,!r[i].has(a)),!0)},compose(){return ha({issues:s(`issue`),questions:s(`question`)})},prepare(){if(r.issue.size+r.question.size===0)return;i??=d.compose(),u(i);let t=e.querySelector(`[data-feedback-dialog-count]`);t&&(t.textContent=pa(r.issue.size,r.question.size));let n=e.querySelector(`[data-feedback-dialog]`);n&&!n.open&&n.showModal(),d.showDraftTab(`preview`),e.querySelector(`[data-draft-tab="preview"]`)?.focus()},showDraftTab(t){for(let n of E){let r=e.querySelector(`[data-draft-tab="${n}"]`);r?.setAttribute(`aria-selected`,String(n===t)),r?.setAttribute(`tabindex`,n===t?`0`:`-1`);let i=e.getElementById(`prb-draft-${n}`);i&&(i.hidden=n!==t)}if(t===`preview`)return l();let n=e.querySelector(`[data-feedback-text]`);n?.setSelectionRange(0,0),n&&(n.scrollTop=0)},state(){return{selecting:n,issues:[...r.issue],questions:[...r.question]}}};return e.addEventListener(`change`,e=>{let t=e.target.closest(`[data-feedback-pick]`),n=t?o(t):null;t&&n&&d.toggle(n,a(t),t.checked)}),e.addEventListener(`input`,t=>{let n=t.target.closest(`[data-feedback-text]`);n&&(i!==null&&(i=n.value),e.querySelector(`[data-feedback-copy]`)?.setAttribute(ht,n.value))}),e.addEventListener(`click`,r=>{let i=r.target;if(i.closest(`[data-feedback-select]`))return n?d.exit():d.enter();if(i.closest(`[data-feedback-clear]`))return d.clear();if(i.closest(`[data-feedback-done]`))return d.exit();if(i.closest(`[data-feedback-prepare]`))return d.prepare();if(i.closest(`[data-feedback-close]`))return e.querySelector(`[data-feedback-dialog]`)?.close();let a=i.closest(`[data-draft-tab]`)?.dataset.draftTab;if(a===`preview`||a===`markdown`)return d.showDraftTab(a);let o=i.closest(`[data-feedback-goto]`)?.dataset.feedbackGoto;if(o===`issues`||o===`questions`)return t(o);let s=i.closest(`[data-finding-card]`);!s||i.closest(va)||(e.getSelection()?.isCollapsed??!0)&&d.flip(s)}),e.addEventListener(`keydown`,t=>{let n=t.target.closest(`[data-draft-tab]`)?.dataset.draftTab;if(!n)return;let r=E.indexOf(n),i=t.key===`ArrowRight`?E[(r+1)%E.length]:t.key===`ArrowLeft`?E[(r+E.length-1)%E.length]:t.key===`Home`?E[0]:t.key===`End`?E[E.length-1]:null;i&&(t.preventDefault(),d.showDraftTab(i),e.querySelector(`[data-draft-tab="${i}"]`)?.focus())}),c(),d}function ba(e){let t=e.querySelector(`[data-feedback-text]`);if(t&&e.activeElement===t&&t.selectionStart!==t.selectionEnd)return!0;let n=e.getSelection();return!!(n&&!n.isCollapsed&&n.toString()!==``)}function xa(e,t){let n=()=>t.querySelector(`[data-feedback-dialog] [data-feedback-copy]`);return{"review.feedback.prepare":{available:()=>{let{issues:t,questions:n}=e.state();return t.length+n.length>0},run:()=>e.prepare()},"review.feedback.copyDraft":{available:()=>n()!==null&&!ba(t),run:()=>n()?.click()}}}function Sa(e){let t=e.querySelector(`.prb-view:is([data-view="issues"], [data-view="questions"]):not([hidden])`);return t?[...t.querySelectorAll(`[data-finding-card]`)].filter(e=>e.checkVisibility()&&!e.parentElement?.closest(`details:not([open])`)):[]}function Ca(e){let t=e.getSelection();return!!(t&&!t.isCollapsed&&t.toString()!==``)}function wa(e){let{doc:t}=e,n=ue({doc:t,item:`[data-finding-card]`,walk:()=>Sa(t),background:e.pane}),r=()=>n.holdsKeys()?n.current():null,i=e=>e?.querySelector(`[data-ask-buddy-menu]`)??null,a=e=>e?.querySelector(`[data-copy-source]`)??null,o=e=>e?.querySelector(`[data-feedback-pick]`)!=null;return{cursor:n,commands:{"review.findings.next":{available:()=>Sa(t).length>0,run:()=>n.move(1)},"review.findings.previous":{available:()=>Sa(t).length>0,run:()=>n.move(-1)},"review.findings.askBuddy":{available:()=>i(r())!==null,run:()=>{let t=i(r());t&&e.openMenu(t,()=>n.refocus())}},"review.findings.copy":{available:()=>!Ca(t)&&a(r())!==null,run:()=>a(r())?.click()},"review.findings.choose":{available:()=>e.selecting()&&o(r()),run:()=>{let t=r();t&&e.flip(t)}}}}}var Ta=`prb-rail-review`;function Ea(e){return(e.getElementById(Ta)?.closest(`.prb-rail-group`)?.querySelector(`a.prb-rail-group-title`))?.dataset.viewNav??null}function Da(e,t){let n=t.toLowerCase().split(/\s+/).filter(Boolean);return n.length===0?[...e]:e.filter(e=>{let t=`${e.name}\n${e.prompt}`.toLowerCase();return n.every(e=>t.includes(e))})}function Oa(e){return e<0||e>=10?null:e===9?`0`:String(e+1)}function ka(e){return/^[0-9]$/.test(e)?e===`0`?9:Number(e)-1:null}function Aa(e){return{title:`Choose a prompt`,mount(t,n){let r=t.ownerDocument,i=e.prompts(),a=r.createElement(`input`);a.type=`search`,a.className=`prb-palette-input`,a.placeholder=`Filter prompts`,a.setAttribute(`aria-label`,`Filter prompts`),a.spellcheck=!1;let o=r.createElement(`p`);o.className=`prb-palette-summary`,o.setAttribute(`aria-live`,`polite`);let s=r.createElement(`div`);s.className=`prb-palette-results`,s.setAttribute(`role`,`group`),s.setAttribute(`aria-label`,`Prompts`);let c=[],l=()=>[...s.querySelectorAll(`[data-prompt-choice]`)],u=()=>{let e=r.activeElement===a;for(let[t,n]of l().entries())n.toggleAttribute(`data-enter-target`,e&&t===0)},d=()=>{c=Da(i,a.value),s.replaceChildren(...c.map((e,t)=>{let n=r.createElement(`button`);n.type=`button`,n.className=`prb-palette-result prb-palette-prompt`,n.dataset.promptChoice=e.id;let i=r.createElement(`kbd`);i.className=`prb-kbd prb-palette-num`;let a=Oa(t);a?i.textContent=a:i.setAttribute(`aria-hidden`,`true`);let o=r.createElement(`span`);o.className=`prb-palette-prompt-text`;let s=r.createElement(`span`);s.className=`prb-palette-result-title`,s.textContent=e.name;let c=r.createElement(`span`);return c.className=`prb-palette-prompt-said`,c.textContent=e.prompt,o.append(s,c),n.append(i,o),n})),o.textContent=i.length===0?`No saved prompts yet. Add one under Your prompts in Buddy AI.`:c.length===0?`No prompts match.`:c.length===i.length?`${i.length} ${i.length===1?`prompt`:`prompts`}`:`${c.length} of ${i.length} prompts`,u()},f=t=>{!t||!c.some(e=>e.id===t)||(n(),e.choose(t))},ee=e=>{a.value=e===`Backspace`?a.value.slice(0,-1):a.value+e,a.focus(),a.dispatchEvent(new Event(`input`,{bubbles:!0}))};a.addEventListener(`input`,d),a.addEventListener(`focus`,u),a.addEventListener(`blur`,u),s.addEventListener(`click`,e=>{f(e.target.closest(`[data-prompt-choice]`)?.dataset.promptChoice)}),t.addEventListener(`keydown`,e=>{if(e.isComposing||e.metaKey||e.ctrlKey||e.altKey)return;let t=l(),n=e.target===a,r=t.indexOf(e.target),i=ka(e.key);if(i!==null)return e.preventDefault(),f(t[i]?.dataset.promptChoice);if(e.key===`Enter`)return e.preventDefault(),f((n?t[0]:t[r])?.dataset.promptChoice);let o=e.key===`ArrowDown`||!n&&e.key===`j`,s=e.key===`ArrowUp`||!n&&e.key===`k`;if(o||s){let n=o?r<0?t[0]:t[r+1]:r<=0?a:t[r-1];e.preventDefault(),n?.focus();return}!n&&(e.key.length===1||e.key===`Backspace`)&&(e.preventDefault(),ee(e.key))}),t.append(a,o,s),d(),a.focus()}}}function ja(e,t=Date.now()){let n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return`${n} second${n===1?``:`s`}`;let r=Math.round(n/60);return`${r} minute${r===1?``:`s`}`}ji(`progress`,`Review progress`);var Ma={job:`data-job-phase`,kiss:`data-kiss-phase`,update:`data-update-phase`};function Na(e){let t=new Map;for(let n of Object.keys(Ma)){let r=Ma[n],i=e.querySelector(`[${r}]`);i&&!Ti(i.getAttribute(r)??void 0)&&t.set(n,i)}return t}function Pa(e,t,n){return t.failed?!0:e===`update`?t.phase===`none`||Ti(t.phase):Fa(t.phase,n)}function Fa(e,t){return Ti(e)?!0:(e===`conversation`||e===`analysing`)&&!t.querySelector(`[data-view="files"]`)}function Ia(e,t,n){let r=[...e.querySelectorAll(`.prb-progress-step`)],i=r.findIndex(e=>e.dataset.phase===t);if(i===-1)return;r.forEach((e,t)=>{let n=t<i?`complete`:t===i?`active`:`pending`;e.dataset.state=n;let r=e.querySelector(`.prb-progress-label`),a=n===`complete`?e.dataset.labelDone:e.dataset.labelDoing;r&&a&&(r.textContent=a),t!==i&&e.querySelector(`[data-step-note]`)?.remove()});let a=r[i];if(!n||Ei(n,a.querySelector(`.prb-progress-label`)?.textContent??``))return;let o=a.querySelector(`[data-step-note]`);o||(o=document.createElement(`p`),o.className=`prb-progress-note`,o.setAttribute(`data-step-note`,``),a.appendChild(o)),o.textContent=n}function La(e){let t=e.querySelector(`[data-started-at]`),n=Number(t?.dataset.startedAt);!t||!Number.isFinite(n)||(t.textContent=`Running for ${ja(n)}.`)}async function Ra({look:e,reload:t,giveUpMs:n=2e4,pauseMs:r=400}){let i=!1,a=()=>{i||(i=!0,t())};for(setTimeout(a,n);!i;){try{let t=await e();if(!t||t===`none`||Ti(t))return a()}catch{}await new Promise(e=>setTimeout(e,r))}}function za(e,t,n){let r=e.scope===`change`?`Whole change`:t.get(e.scope)??`A theme of this change`,i=e.scope===`change`?``:e.scope;return`<article class="prb-diagram" id="prb-diagram-${y(e.scope)}" data-diagram-card="${y(e.scope)}">
84
87
  <header class="prb-diagram-head">
85
88
  <div class="prb-diagram-heading">
86
89
  <h4 class="prb-diagram-title">
@@ -99,70 +102,70 @@ import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,K as s,L as c,N as l,P a
99
102
  </div>
100
103
  </header>
101
104
  ${e.caption?`<p class="prb-diagram-caption">${y(e.caption)}</p>`:``}
102
- ${Ea(e,n)}
105
+ ${Ba(e,n)}
103
106
  <div class="prb-diagram-canvas" data-diagram-canvas></div>
104
107
  <details class="prb-diagram-source">
105
108
  <summary>Diagram source</summary>
106
109
  <div class="${fe}"><pre><code data-mermaid-source>${y(e.mermaid)}</code></pre><button type="button" class="${pe}" aria-label="Copy code">Copy</button></div>
107
110
  </details>
108
- </article>`}function Ea(e,t){return!e.commitSha||!t||e.commitSha===t?``:`<p class="prb-diagram-stale">Drawn from <code>${y(e.commitSha.slice(0,7))}</code>, before this review was brought up to date. Regenerate to draw it from the commit the review now describes.</p>`}var Da=.5,Oa=3,ka=1.25,Aa=new WeakSet,ja=new WeakMap,Ma=new WeakMap,E=null;function Na(e){return document.addEventListener(`click`,t=>{let n=t.target;if(!(n instanceof Element))return;let r=n.closest(`[data-diagram-stop]`);if(r){r.setAttribute(`disabled`,``),r.textContent=`Stopping…`,fetch(e.endpoint(`/stop`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`diagram`})}).catch(()=>{}).finally(()=>{E?.abort()});return}let i=n.closest(`[data-diagram-toggle]`);if(i){Ka(i.closest(`[data-diagram-card]`),i.getAttribute(`aria-expanded`)===`true`);return}let a=n.closest(`[data-diagram-zoom]`);if(a){Ya(a.closest(`[data-diagram-card]`),a.dataset.diagramZoom??`reset`);return}let o=n.closest(`[data-diagram-request]`);o?.dataset.diagramKind===`map`?Fa(e):o&&Pa(e,o.dataset.diagramRequest||null)}),za(),Ia(),{drawPane:qa}}async function Pa(e,t){if(E)return;let n=t??`change`,r=document.querySelector(`[data-diagram-pane]`),i=r?.querySelector(`[data-diagram-card="${ro(n)}"]`)??null??Ha(r,n,t);if(!i)return;Ba(),e.showDiagrams();let a=Ua(i);E=new AbortController,Qa(!1);try{let n=await fetch(e.endpoint(`/diagram`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({sectionId:t}),signal:E.signal}),r=await n.json().catch(()=>null);if(n.status===409&&r?.running){window.location.reload();return}if(r?.stopped)throw new DOMException(`Stopped`,`AbortError`);if(!n.ok||!r?.diagram)return Wa(i,a,r?.error??`Buddy AI did not return a diagram. Check the terminal running PR Review Buddy.`);Ga(i,r.diagram,t)}catch(e){if(e instanceof DOMException&&e.name===`AbortError`){i.hasAttribute(`data-diagram-pending`)?(i.remove(),Ba()):a.remove();return}Wa(i,a,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}finally{E=null,Qa(!0)}}async function Fa(e){if(E)return;let t=document.querySelector(`[data-map-body]`);if(!t)return;e.showMap();let n=La(t),r=t.closest(`[data-map-pane]`);r?.setAttribute(`data-map-running`,``),E=new AbortController,Qa(!1);try{let t=await fetch(e.endpoint(`/diagram`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`map`}),signal:E.signal}),r=await t.json().catch(()=>null);if(t.status===409&&r?.running){window.location.reload();return}if(r?.stopped)throw new DOMException(`Stopped`,`AbortError`);if(!t.ok||!r?.changeMap){Ra(n,r?.error??`Buddy AI did not return a change map. Check the terminal running PR Review Buddy.`);return}n.remove(),e.showChangeMap(r.changeMap),Ba()}catch(e){if(e instanceof DOMException&&e.name===`AbortError`){n.remove();return}Ra(n,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}finally{r?.removeAttribute(`data-map-running`),E=null,Qa(!0)}}function Ia(){let e=document.querySelector(`[data-map-pane][data-map-running] [data-map-body]`);e&&(La(e),Qa(!1))}function La(e){e.parentElement?.querySelector(`[data-map-status]`)?.remove();let t=document.createElement(`p`);t.className=`prb-diagram-status`,t.setAttribute(`data-map-status`,``),t.innerHTML=`<span class="prb-thinking"><i></i><i></i><i></i></span><span>Reading the review and the change…</span>`;let n=document.createElement(`button`);return n.type=`button`,n.className=`prb-diagram-redraw`,n.setAttribute(`data-diagram-stop`,``),n.textContent=`Stop`,t.appendChild(n),e.before(t),t}function Ra(e,t){e.className=`prb-diagram-failed`,e.textContent=t}function za(){let e=document.querySelector(`[data-diagram-pane][data-diagram-running]`);if(!e)return;let t=e.dataset.diagramRunning||null,n=t??`change`,r=e.querySelector(`[data-diagram-card="${ro(n)}"]`)??Ha(e,n,t);r&&(Ba(),Ua(r,{scroll:!1}),Qa(!1))}function Ba(){let e=document.querySelectorAll(`[data-diagram-pane] [data-diagram-card]:not([data-diagram-pending])`).length,t=document.querySelectorAll(`[data-map-body] [data-change-map]`).length;Va(`map`,t>0),Va(`diagram`,e>0);let n=e+t,r=document.querySelector(`.prb-rail [data-view-nav="map"]`);if(!r)return;let i=r.querySelector(`.prb-rail-count`);if(n===0){i?.remove();return}i||(i=document.createElement(`span`),i.className=`prb-rail-count`,r.appendChild(i)),i.textContent=String(n),i.setAttribute(`aria-label`,n===1?`1 diagram`:`${n} diagrams`)}function Va(e,t){for(let n of document.querySelectorAll(`[data-diagram-mode="${e}"]`)){n.toggleAttribute(`data-ready`,t);let e=n.querySelector(`[data-mode-ready]`);e&&(e.hidden=!t)}}function Ha(e,t,n){if(!e)return null;let r=document.createElement(`article`);return r.className=`prb-diagram`,r.dataset.diagramCard=t,r.setAttribute(`data-diagram-pending`,``),r.innerHTML=`<header class="prb-diagram-head">
111
+ </article>`}function Ba(e,t){return!e.commitSha||!t||e.commitSha===t?``:`<p class="prb-diagram-stale">Drawn from <code>${y(e.commitSha.slice(0,7))}</code>, before this review was brought up to date. Regenerate to draw it from the commit the review now describes.</p>`}var Va=.5,Ha=3,Ua=1.25,Wa=new WeakSet,Ga=new WeakMap,Ka=new WeakMap,D=null;function qa(e){return document.addEventListener(`click`,t=>{let n=t.target;if(!(n instanceof Element))return;let r=n.closest(`[data-diagram-stop]`);if(r){r.setAttribute(`disabled`,``),r.textContent=`Stopping…`,fetch(e.endpoint(`/stop`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`diagram`})}).catch(()=>{}).finally(()=>{D?.abort()});return}let i=n.closest(`[data-diagram-toggle]`);if(i){oo(i.closest(`[data-diagram-card]`),i.getAttribute(`aria-expanded`)===`true`);return}let a=n.closest(`[data-diagram-zoom]`);if(a){lo(a.closest(`[data-diagram-card]`),a.dataset.diagramZoom??`reset`);return}let o=n.closest(`[data-diagram-request]`);o?.dataset.diagramKind===`map`?Ya(e):o&&Ja(e,o.dataset.diagramRequest||null)}),$a(),Xa(),{drawPane:so}}async function Ja(e,t){if(D)return;let n=t??`change`,r=document.querySelector(`[data-diagram-pane]`),i=r?.querySelector(`[data-diagram-card="${vo(n)}"]`)??null??no(r,n,t);if(!i)return;eo(),e.showDiagrams();let a=ro(i);D=new AbortController,po(!1);try{let n=await fetch(e.endpoint(`/diagram`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({sectionId:t}),signal:D.signal}),r=await n.json().catch(()=>null);if(n.status===409&&r?.running){window.location.reload();return}if(r?.stopped)throw new DOMException(`Stopped`,`AbortError`);if(!n.ok||!r?.diagram)return io(i,a,r?.error??`Buddy AI did not return a diagram. Check the terminal running PR Review Buddy.`);ao(i,r.diagram,t)}catch(e){if(e instanceof DOMException&&e.name===`AbortError`){i.hasAttribute(`data-diagram-pending`)?(i.remove(),eo()):a.remove();return}io(i,a,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}finally{D=null,po(!0)}}async function Ya(e){if(D)return;let t=document.querySelector(`[data-map-body]`);if(!t)return;e.showMap();let n=Za(t),r=t.closest(`[data-map-pane]`);r?.setAttribute(`data-map-running`,``),D=new AbortController,po(!1);try{let t=await fetch(e.endpoint(`/diagram`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`map`}),signal:D.signal}),r=await t.json().catch(()=>null);if(t.status===409&&r?.running){window.location.reload();return}if(r?.stopped)throw new DOMException(`Stopped`,`AbortError`);if(!t.ok||!r?.changeMap){Qa(n,r?.error??`Buddy AI did not return a change map. Check the terminal running PR Review Buddy.`);return}n.remove(),e.showChangeMap(r.changeMap),eo()}catch(e){if(e instanceof DOMException&&e.name===`AbortError`){n.remove();return}Qa(n,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}finally{r?.removeAttribute(`data-map-running`),D=null,po(!0)}}function Xa(){let e=document.querySelector(`[data-map-pane][data-map-running] [data-map-body]`);e&&(Za(e),po(!1))}function Za(e){e.parentElement?.querySelector(`[data-map-status]`)?.remove();let t=document.createElement(`p`);t.className=`prb-diagram-status`,t.setAttribute(`data-map-status`,``),t.innerHTML=`<span class="prb-thinking"><i></i><i></i><i></i></span><span>Reading the review and the change…</span>`;let n=document.createElement(`button`);return n.type=`button`,n.className=`prb-diagram-redraw`,n.setAttribute(`data-diagram-stop`,``),n.textContent=`Stop`,t.appendChild(n),e.before(t),t}function Qa(e,t){e.className=`prb-diagram-failed`,e.textContent=t}function $a(){let e=document.querySelector(`[data-diagram-pane][data-diagram-running]`);if(!e)return;let t=e.dataset.diagramRunning||null,n=t??`change`,r=e.querySelector(`[data-diagram-card="${vo(n)}"]`)??no(e,n,t);r&&(eo(),ro(r,{scroll:!1}),po(!1))}function eo(){let e=document.querySelectorAll(`[data-diagram-pane] [data-diagram-card]:not([data-diagram-pending])`).length,t=document.querySelectorAll(`[data-map-body] [data-change-map]`).length;to(`map`,t>0),to(`diagram`,e>0);let n=e+t,r=document.querySelector(`.prb-rail [data-view-nav="map"]`);if(!r)return;let i=r.querySelector(`.prb-rail-count`);if(n===0){i?.remove();return}i||(i=document.createElement(`span`),i.className=`prb-rail-count`,r.appendChild(i)),i.textContent=String(n),i.setAttribute(`aria-label`,n===1?`1 diagram`:`${n} diagrams`)}function to(e,t){for(let n of document.querySelectorAll(`[data-diagram-mode="${e}"]`)){n.toggleAttribute(`data-ready`,t);let e=n.querySelector(`[data-mode-ready]`);e&&(e.hidden=!t)}}function no(e,t,n){if(!e)return null;let r=document.createElement(`article`);return r.className=`prb-diagram`,r.dataset.diagramCard=t,r.setAttribute(`data-diagram-pending`,``),r.innerHTML=`<header class="prb-diagram-head">
109
112
  <div class="prb-diagram-heading">
110
113
  <h4 class="prb-diagram-title">Drawing…</h4>
111
- <p class="prb-diagram-scope">${t===`change`?`Whole change`:no($a(n))}</p>
114
+ <p class="prb-diagram-scope">${t===`change`?`Whole change`:_o(mo(n))}</p>
112
115
  </div>
113
- </header>`,eo(e,r,n),r}function Ua(e,{scroll:t=!0}={}){e.querySelector(`[data-diagram-status]`)?.remove();let n=document.createElement(`p`);n.className=`prb-diagram-status`,n.setAttribute(`data-diagram-status`,``),n.innerHTML=`<span class="prb-thinking"><i></i><i></i><i></i></span><span>Reading the change…</span>`;let r=document.createElement(`button`);return r.type=`button`,r.className=`prb-diagram-redraw`,r.setAttribute(`data-diagram-stop`,``),r.textContent=`Stop`,n.appendChild(r),e.querySelector(`.prb-diagram-head`)?.insertAdjacentElement(`afterend`,n),t&&e.scrollIntoView({behavior:io()?`auto`:`smooth`,block:`start`}),n}function Wa(e,t,n){if(t.className=`prb-diagram-failed`,t.textContent=n,e.hasAttribute(`data-diagram-pending`)){let n=document.createElement(`button`);n.type=`button`,n.className=`prb-diagram-redraw`,n.dataset.diagramRequest=e.dataset.diagramCard===`change`?``:e.dataset.diagramCard??``,n.textContent=`Try again`,t.appendChild(document.createTextNode(` `)),t.appendChild(n)}}function Ga(e,t,n){let r=Ta(t,new Map(n?[[n,$a(n)]]:[]),t.commitSha),i=document.createElement(`div`);i.innerHTML=r;let a=i.firstElementChild;a&&(e.replaceWith(a),Ba(),Ja(a))}function Ka(e,t){e&&(e.toggleAttribute(`data-diagram-collapsed`,t),e.querySelector(`[data-diagram-toggle]`)?.setAttribute(`aria-expanded`,String(!t)),t||Ja(e))}function qa(){for(let e of document.querySelectorAll(`[data-diagram-pane] [data-diagram-card]`))Ja(e)}async function Ja(e){let t=e.querySelector(`[data-diagram-canvas]`),n=e.querySelector(`[data-mermaid-source]`)?.textContent??``;if(!(!t||!n||Aa.has(e)||e.hasAttribute(`data-diagram-collapsed`))){Aa.add(e);try{await Vt(t,`prb-mermaid-${Math.random().toString(36).slice(2)}`,n)}catch{Aa.delete(e),t.innerHTML=``;let n=document.createElement(`p`);n.className=`prb-diagram-failed`,n.textContent=`This diagram could not be drawn. Its source is below, and Regenerate will ask for another.`,t.replaceWith(n),e.querySelector(`details`)?.setAttribute(`open`,``)}}}function Ya(e,t){let n=e?.querySelector(`[data-diagram-canvas] svg`),r=e?.querySelector(`[data-diagram-canvas]`);if(!e||!n||!r)return;if(t===`reset`){Ma.delete(e),r.removeAttribute(`data-zoomed`),n.style.removeProperty(`width`);return}let i=Xa(e,n);if(i<=0)return;let a=Za((Ma.get(e)??1)*(t===`in`?ka:1/ka));Ma.set(e,a),r.setAttribute(`data-zoomed`,``),n.style.width=`${Math.round(i*a)}px`}function Xa(e,t){let n=ja.get(e);if(n)return n;let r=t.getBoundingClientRect().width;if(r>0)return ja.set(e,r),r;let i=t.getAttribute(`viewBox`)?.split(/[\s,]+/),a=Number(i?.[2]??0);return Number.isFinite(a)?a:0}function Za(e){return Math.min(Oa,Math.max(Da,e))}function Qa(e){for(let t of document.querySelectorAll(`[data-diagram-request]`))t.disabled=!e}function $a(e){return e?document.querySelector(`[data-goto-section="${ro(e)}"]`)?.querySelector(`.prb-rail-title`)?.textContent?.trim()||`A theme of this change`:`Whole change`}function eo(e,t,n){let r=to(n);for(let n of e.querySelectorAll(`[data-diagram-card]`)){let e=n.dataset.diagramCard??``;if(to(e===`change`?null:e)>r){n.before(t);return}}e.appendChild(t)}function to(e){if(!e)return-1;let t=document.querySelector(`[data-goto-section="${ro(e)}"]`);return Number(t?.dataset.themeIndex??0)}function no(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function ro(e){return CSS.escape(e)}function io(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}var ao=[`intent`,`actor`,`concept`,`state`,`constraint`,`risk`,`outcome`],oo=[`Intent`,`Behaviour`,`Shared state`,`Risks & constraints`,`Outcome`],D={mapTitle:100,intent:320,title:80,body:220,why:160,anchor:80,label:48,note:200},so={intent:0,concept:1,actor:2,state:2,constraint:3,risk:3,outcome:4};function co(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`The change map was not a JSON object.`);let t=e;if(!Array.isArray(t.nodes)||t.nodes.length===0)throw Error(`The change map had no nodes. This usually means the model ignored the requested shape.`);let{nodes:n,ids:r}=lo(t.nodes);return{schemaVersion:1,title:go(S(t.title).trim(),D.mapTitle)||`Change map`,intent:fo(t.intent,D.intent)??{simple:``,technical:``},nodes:n,edges:uo(t.edges,r)}}function lo(e){let t=new Map,n=new Set,r=[];for(let i of e){if(typeof i!=`object`||!i)continue;let e=i,a=fo(e.title,D.title);if(!a)continue;let o=S(e.id).trim()||a.technical;if(t.has(o))continue;let s=ho(mo(o)||`n${r.length+1}`,n);t.set(o,s),n.add(s);let c=ao.includes(e.role)?e.role:`concept`,l=fo(e.why,D.why),u=go(S(e.anchor).trim(),D.anchor),d=S(e.sectionId).trim();r.push({id:s,role:c,stage:po(e.stage,c),weight:e.weight===`primary`?`primary`:`supporting`,title:a,body:fo(e.body,D.body)??{simple:``,technical:``},...l?{why:l}:{},...u?{anchor:u}:{},...d?{sectionId:d}:{}})}return{nodes:r,ids:t}}function uo(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e){if(typeof r!=`object`||!r)continue;let e=r,i=fo(e.label,D.label),a=t.get(S(e.from).trim())??S(e.from).trim(),o=t.get(S(e.to).trim())??S(e.to).trim();if(!i||!a||!o)continue;let s=fo(e.note,D.note);n.push({from:a,to:o,label:i,...s?{note:s}:{}})}return n}function fo(e,t){if(typeof e==`string`){let n=go(e.trim(),t);return n?{simple:n,technical:n}:null}if(typeof e!=`object`||!e)return null;let n=e,r=go(S(n.simple).trim(),t),i=go(S(n.technical).trim(),t);return!r&&!i?null:{simple:r||i,technical:i||r}}function po(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=4?e:so[t]}function mo(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,40)}function ho(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n+=1;return`${e}-${n}`}function go(e,t){if(e.length<=t)return e;let n=e.slice(0,t-1),r=n.lastIndexOf(` `);return`${(r>t/2?n.slice(0,r):n).trimEnd()}…`}function _o(e,t){try{return vo(co(e),t).map}catch{return null}}function vo(e,t){let n={droppedNodes:0,droppedEdges:0,withdrawnSections:0,demotedPrimaries:0},r=xo(yo(e.nodes,n).map(e=>bo(e,t,n)),n),i=new Set(r.map(e=>e.id)),a=new Set,o=[];for(let t of e.edges){let e=`${t.from}\u0000${t.to}`;if(!i.has(t.from)||!i.has(t.to)||t.from===t.to||a.has(e)||o.length>=16){n.droppedEdges+=1;continue}a.add(e),o.push(t)}if(r.length<2||o.length===0)throw Error(`The change map had too little in it to draw: it needs at least two ideas and one relationship.`);return{map:{...e,nodes:So(r),edges:o},audit:n}}function yo(e,t){if(e.length<=12)return e;let n=e.filter(e=>e.weight===`primary`).slice(0,3),r=e.filter(e=>!n.includes(e)).slice(0,12-n.length),i=new Set([...n,...r]);return t.droppedNodes+=e.length-i.size,e.filter(e=>i.has(e))}function bo(e,t,n){if(e.sectionId===void 0||t.includes(e.sectionId))return e;n.withdrawnSections+=1;let{sectionId:r,...i}=e;return i}function xo(e,t){let n=0;return e.map(e=>e.weight!==`primary`||(n+=1,n<=3)?e:(t.demotedPrimaries+=1,{...e,weight:`supporting`}))}function So(e){return[...e].sort((e,t)=>e.stage-t.stage)}function Co(e){let{stored:t,sections:n,reviewedSha:r,register:i}=e,a=t?_o(t,n.map(e=>e.id)):null,o=!!(a&&t?.commitSha&&r&&t.commitSha!==r);if(!a||!t||o)return wo(o);let s=new Map(n.map(e=>[e.id,e.title]));return`<div class="prb-map" data-change-map data-register="${i}">
116
+ </header>`,ho(e,r,n),r}function ro(e,{scroll:t=!0}={}){e.querySelector(`[data-diagram-status]`)?.remove();let n=document.createElement(`p`);n.className=`prb-diagram-status`,n.setAttribute(`data-diagram-status`,``),n.innerHTML=`<span class="prb-thinking"><i></i><i></i><i></i></span><span>Reading the change…</span>`;let r=document.createElement(`button`);return r.type=`button`,r.className=`prb-diagram-redraw`,r.setAttribute(`data-diagram-stop`,``),r.textContent=`Stop`,n.appendChild(r),e.querySelector(`.prb-diagram-head`)?.insertAdjacentElement(`afterend`,n),t&&e.scrollIntoView({behavior:yo()?`auto`:`smooth`,block:`start`}),n}function io(e,t,n){if(t.className=`prb-diagram-failed`,t.textContent=n,e.hasAttribute(`data-diagram-pending`)){let n=document.createElement(`button`);n.type=`button`,n.className=`prb-diagram-redraw`,n.dataset.diagramRequest=e.dataset.diagramCard===`change`?``:e.dataset.diagramCard??``,n.textContent=`Try again`,t.appendChild(document.createTextNode(` `)),t.appendChild(n)}}function ao(e,t,n){let r=za(t,new Map(n?[[n,mo(n)]]:[]),t.commitSha),i=document.createElement(`div`);i.innerHTML=r;let a=i.firstElementChild;a&&(e.replaceWith(a),eo(),co(a))}function oo(e,t){e&&(e.toggleAttribute(`data-diagram-collapsed`,t),e.querySelector(`[data-diagram-toggle]`)?.setAttribute(`aria-expanded`,String(!t)),t||co(e))}function so(){for(let e of document.querySelectorAll(`[data-diagram-pane] [data-diagram-card]`))co(e)}async function co(e){let t=e.querySelector(`[data-diagram-canvas]`),n=e.querySelector(`[data-mermaid-source]`)?.textContent??``;if(!(!t||!n||Wa.has(e)||e.hasAttribute(`data-diagram-collapsed`))){Wa.add(e);try{await Bt(t,`prb-mermaid-${Math.random().toString(36).slice(2)}`,n)}catch{Wa.delete(e),t.innerHTML=``;let n=document.createElement(`p`);n.className=`prb-diagram-failed`,n.textContent=`This diagram could not be drawn. Its source is below, and Regenerate will ask for another.`,t.replaceWith(n),e.querySelector(`details`)?.setAttribute(`open`,``)}}}function lo(e,t){let n=e?.querySelector(`[data-diagram-canvas] svg`),r=e?.querySelector(`[data-diagram-canvas]`);if(!e||!n||!r)return;if(t===`reset`){Ka.delete(e),r.removeAttribute(`data-zoomed`),n.style.removeProperty(`width`);return}let i=uo(e,n);if(i<=0)return;let a=fo((Ka.get(e)??1)*(t===`in`?Ua:1/Ua));Ka.set(e,a),r.setAttribute(`data-zoomed`,``),n.style.width=`${Math.round(i*a)}px`}function uo(e,t){let n=Ga.get(e);if(n)return n;let r=t.getBoundingClientRect().width;if(r>0)return Ga.set(e,r),r;let i=t.getAttribute(`viewBox`)?.split(/[\s,]+/),a=Number(i?.[2]??0);return Number.isFinite(a)?a:0}function fo(e){return Math.min(Ha,Math.max(Va,e))}function po(e){for(let t of document.querySelectorAll(`[data-diagram-request]`))t.disabled=!e}function mo(e){return e?document.querySelector(`[data-goto-section="${vo(e)}"]`)?.querySelector(`.prb-rail-title`)?.textContent?.trim()||`A theme of this change`:`Whole change`}function ho(e,t,n){let r=go(n);for(let n of e.querySelectorAll(`[data-diagram-card]`)){let e=n.dataset.diagramCard??``;if(go(e===`change`?null:e)>r){n.before(t);return}}e.appendChild(t)}function go(e){if(!e)return-1;let t=document.querySelector(`[data-goto-section="${vo(e)}"]`);return Number(t?.dataset.themeIndex??0)}function _o(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function vo(e){return CSS.escape(e)}function yo(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}var bo=[`intent`,`actor`,`concept`,`state`,`constraint`,`risk`,`outcome`],xo=[`Intent`,`Behaviour`,`Shared state`,`Risks & constraints`,`Outcome`],O={mapTitle:100,intent:320,title:80,body:220,why:160,anchor:80,label:48,note:200},So={intent:0,concept:1,actor:2,state:2,constraint:3,risk:3,outcome:4};function Co(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`The change map was not a JSON object.`);let t=e;if(!Array.isArray(t.nodes)||t.nodes.length===0)throw Error(`The change map had no nodes. This usually means the model ignored the requested shape.`);let{nodes:n,ids:r}=wo(t.nodes);return{schemaVersion:1,title:Ao(C(t.title).trim(),O.mapTitle)||`Change map`,intent:Eo(t.intent,O.intent)??{simple:``,technical:``},nodes:n,edges:To(t.edges,r)}}function wo(e){let t=new Map,n=new Set,r=[];for(let i of e){if(typeof i!=`object`||!i)continue;let e=i,a=Eo(e.title,O.title);if(!a)continue;let o=C(e.id).trim()||a.technical;if(t.has(o))continue;let s=ko(Oo(o)||`n${r.length+1}`,n);t.set(o,s),n.add(s);let c=bo.includes(e.role)?e.role:`concept`,l=Eo(e.why,O.why),u=Ao(C(e.anchor).trim(),O.anchor),d=C(e.sectionId).trim();r.push({id:s,role:c,stage:Do(e.stage,c),weight:e.weight===`primary`?`primary`:`supporting`,title:a,body:Eo(e.body,O.body)??{simple:``,technical:``},...l?{why:l}:{},...u?{anchor:u}:{},...d?{sectionId:d}:{}})}return{nodes:r,ids:t}}function To(e,t){if(!Array.isArray(e))return[];let n=[];for(let r of e){if(typeof r!=`object`||!r)continue;let e=r,i=Eo(e.label,O.label),a=t.get(C(e.from).trim())??C(e.from).trim(),o=t.get(C(e.to).trim())??C(e.to).trim();if(!i||!a||!o)continue;let s=Eo(e.note,O.note);n.push({from:a,to:o,label:i,...s?{note:s}:{}})}return n}function Eo(e,t){if(typeof e==`string`){let n=Ao(e.trim(),t);return n?{simple:n,technical:n}:null}if(typeof e!=`object`||!e)return null;let n=e,r=Ao(C(n.simple).trim(),t),i=Ao(C(n.technical).trim(),t);return!r&&!i?null:{simple:r||i,technical:i||r}}function Do(e,t){return typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=4?e:So[t]}function Oo(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,40)}function ko(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}-${n}`);)n+=1;return`${e}-${n}`}function Ao(e,t){if(e.length<=t)return e;let n=e.slice(0,t-1),r=n.lastIndexOf(` `);return`${(r>t/2?n.slice(0,r):n).trimEnd()}…`}function jo(e,t){try{return Mo(Co(e),t).map}catch{return null}}function Mo(e,t){let n={droppedNodes:0,droppedEdges:0,withdrawnSections:0,demotedPrimaries:0},r=Fo(No(e.nodes,n).map(e=>Po(e,t,n)),n),i=new Set(r.map(e=>e.id)),a=new Set,o=[];for(let t of e.edges){let e=`${t.from}\u0000${t.to}`;if(!i.has(t.from)||!i.has(t.to)||t.from===t.to||a.has(e)||o.length>=16){n.droppedEdges+=1;continue}a.add(e),o.push(t)}if(r.length<2||o.length===0)throw Error(`The change map had too little in it to draw: it needs at least two ideas and one relationship.`);return{map:{...e,nodes:Io(r),edges:o},audit:n}}function No(e,t){if(e.length<=12)return e;let n=e.filter(e=>e.weight===`primary`).slice(0,3),r=e.filter(e=>!n.includes(e)).slice(0,12-n.length),i=new Set([...n,...r]);return t.droppedNodes+=e.length-i.size,e.filter(e=>i.has(e))}function Po(e,t,n){if(e.sectionId===void 0||t.includes(e.sectionId))return e;n.withdrawnSections+=1;let{sectionId:r,...i}=e;return i}function Fo(e,t){let n=0;return e.map(e=>e.weight!==`primary`||(n+=1,n<=3)?e:(t.demotedPrimaries+=1,{...e,weight:`supporting`}))}function Io(e){return[...e].sort((e,t)=>e.stage-t.stage)}function Lo(e){let{stored:t,sections:n,reviewedSha:r,register:i}=e,a=t?jo(t,n.map(e=>e.id)):null,o=!!(a&&t?.commitSha&&r&&t.commitSha!==r);if(!a||!t||o)return Ro(o);let s=new Map(n.map(e=>[e.id,e.title]));return`<div class="prb-map" data-change-map data-register="${i}">
114
117
  <header class="prb-map-head">
115
118
  <div class="prb-map-heading">
116
119
  <h4 class="prb-map-title">${y(a.title)}</h4>
117
- ${a.intent.simple||a.intent.technical?`<p class="prb-map-intent">${O(a.intent)}</p>`:``}
120
+ ${a.intent.simple||a.intent.technical?`<p class="prb-map-intent">${k(a.intent)}</p>`:``}
118
121
  </div>
119
122
  <div class="prb-map-tools">
120
- ${To(i)}
123
+ ${zo(i)}
121
124
  <button type="button" class="prb-diagram-redraw" data-diagram-request="" data-diagram-kind="map">Regenerate</button>
122
125
  </div>
123
126
  </header>
124
127
  <p class="prb-map-hint">Read from the goal to the outcome. Select an idea to see what it connects to.</p>
125
- ${Eo(a,s)}
126
- ${Ao(a)}
127
- </div>`}function wo(e){return`<div class="prb-map-empty" data-change-map-empty>
128
+ ${Bo(a,s)}
129
+ ${Wo(a)}
130
+ </div>`}function Ro(e){return`<div class="prb-map-empty" data-change-map-empty>
128
131
  ${e?`<p class="prb-map-stale">The review has moved on since the last map was drawn.</p>`:``}
129
132
  <h4 class="prb-map-empty-title">See the change as a map</h4>
130
133
  <p>See how the main ideas in this change connect, what depends on what, and where the important risks are. Each idea links back to its theme in the Review Path.</p>
131
134
  <p class="prb-map-empty-note">Buddy AI builds it from this review, in plain words and technical ones. It takes a minute or two.</p>
132
135
  <button type="button" class="prb-map-generate" data-diagram-request="" data-diagram-kind="map">Generate change map</button>
133
- </div>`}function To(e){let t=(t,n)=>`<button type="button" class="prb-map-register" data-map-register-option="${t}" aria-pressed="${e===t}">${n}</button>`;return`<div class="prb-map-registers" role="group" aria-label="Wording">${t(`simple`,`Simple`)}${t(`technical`,`Technical`)}</div>`}function Eo(e,t){let n=[...new Set(e.nodes.map(e=>e.stage))].sort((e,t)=>e-t),r=n.map(n=>`<div class="prb-map-stage" data-map-stage="${n}">
134
- <h5 class="prb-map-stage-title">${y(oo[n]??``)}</h5>
135
- ${e.nodes.filter(e=>e.stage===n).sort((e,t)=>Number(t.weight===`primary`)-Number(e.weight===`primary`)).map(n=>Oo(n,t,e)).join(``)}
136
- </div>`).join(``),i=e.edges.map((e,t)=>ko(e,t)).join(``);return`<div class="prb-map-board" data-map-board style="--prb-map-stages: ${n.length}">
136
+ </div>`}function zo(e){let t=(t,n)=>`<button type="button" class="prb-map-register" data-map-register-option="${t}" aria-pressed="${e===t}">${n}</button>`;return`<div class="prb-map-registers" role="group" aria-label="Wording">${t(`simple`,`Simple`)}${t(`technical`,`Technical`)}</div>`}function Bo(e,t){let n=[...new Set(e.nodes.map(e=>e.stage))].sort((e,t)=>e-t),r=n.map(n=>`<div class="prb-map-stage" data-map-stage="${n}">
137
+ <h5 class="prb-map-stage-title">${y(xo[n]??``)}</h5>
138
+ ${e.nodes.filter(e=>e.stage===n).sort((e,t)=>Number(t.weight===`primary`)-Number(e.weight===`primary`)).map(n=>Ho(n,t,e)).join(``)}
139
+ </div>`).join(``),i=e.edges.map((e,t)=>Uo(e,t)).join(``);return`<div class="prb-map-board" data-map-board style="--prb-map-stages: ${n.length}">
137
140
  <svg class="prb-map-edges" data-map-edges aria-hidden="true" focusable="false"></svg>
138
141
  ${r}
139
142
  <div class="prb-map-labels" aria-hidden="true">${i}</div>
140
- </div>`}var Do={intent:`Goal`,actor:`Actor`,concept:`Idea`,state:`Shared state`,constraint:`Rule`,risk:`Risk`,outcome:`Outcome`};function Oo(e,t,n){let r=y(e.id),i=e.sectionId?t.get(e.sectionId):void 0,a=new Map(n.nodes.map(e=>[e.id,e.title])),o=n.edges.map((e,t)=>({edge:e,index:t})).filter(({edge:t})=>t.from===e.id&&a.has(t.to)).map(({edge:e,index:t})=>`<li data-inline-edge="${t}" hidden><em>${O(e.label)}</em> <span aria-hidden="true">→</span> ${O(a.get(e.to))}</li>`).join(``);return`<article class="prb-map-node" data-map-node="${r}" data-role="${e.role}" data-weight="${e.weight}" tabindex="0" aria-labelledby="prb-map-node-${r}">
141
- <p class="prb-map-role">${Do[e.role]}${e.weight===`primary`?`<span class="prb-map-core"> · Core idea</span>`:``}</p>
142
- <h5 class="prb-map-node-title" id="prb-map-node-${r}">${O(e.title)}</h5>
143
- ${e.body.simple||e.body.technical?`<p class="prb-map-node-body">${O(e.body)}</p>`:``}
144
- ${e.why?`<p class="prb-map-why"><span class="prb-map-why-lead">Why it matters:</span> ${O(e.why)}</p>`:``}
143
+ </div>`}var Vo={intent:`Goal`,actor:`Actor`,concept:`Idea`,state:`Shared state`,constraint:`Rule`,risk:`Risk`,outcome:`Outcome`};function Ho(e,t,n){let r=y(e.id),i=e.sectionId?t.get(e.sectionId):void 0,a=new Map(n.nodes.map(e=>[e.id,e.title])),o=n.edges.map((e,t)=>({edge:e,index:t})).filter(({edge:t})=>t.from===e.id&&a.has(t.to)).map(({edge:e,index:t})=>`<li data-inline-edge="${t}" hidden><em>${k(e.label)}</em> <span aria-hidden="true">→</span> ${k(a.get(e.to))}</li>`).join(``);return`<article class="prb-map-node" data-map-node="${r}" data-role="${e.role}" data-weight="${e.weight}" tabindex="0" aria-labelledby="prb-map-node-${r}">
144
+ <p class="prb-map-role">${Vo[e.role]}${e.weight===`primary`?`<span class="prb-map-core"> · Core idea</span>`:``}</p>
145
+ <h5 class="prb-map-node-title" id="prb-map-node-${r}">${k(e.title)}</h5>
146
+ ${e.body.simple||e.body.technical?`<p class="prb-map-node-body">${k(e.body)}</p>`:``}
147
+ ${e.why?`<p class="prb-map-why"><span class="prb-map-why-lead">Why it matters:</span> ${k(e.why)}</p>`:``}
145
148
  ${e.anchor?`<code class="prb-map-anchor">${y(e.anchor)}</code>`:``}
146
149
  ${o?`<ul class="prb-map-inline" aria-hidden="true">${o}</ul>`:``}
147
150
  ${e.sectionId&&i?`<button type="button" class="prb-map-goto" data-goto-section="${y(e.sectionId)}" aria-label="Open ${y(i)} in the Review Path">Review Path: ${y(i)} <span aria-hidden="true">→</span></button>`:``}
148
- </article>`}function ko(e,t){return`<span class="prb-map-label" data-map-edge="${t}" data-from="${y(e.from)}" data-to="${y(e.to)}">${O(e.label)}</span>`}function Ao(e){let t=new Map(e.nodes.map(e=>[e.id,e.title]));return`<details class="prb-map-list">
151
+ </article>`}function Uo(e,t){return`<span class="prb-map-label" data-map-edge="${t}" data-from="${y(e.from)}" data-to="${y(e.to)}">${k(e.label)}</span>`}function Wo(e){let t=new Map(e.nodes.map(e=>[e.id,e.title]));return`<details class="prb-map-list">
149
152
  <summary>Read as a list</summary>
150
- <ol>${e.edges.map(e=>{let n=t.get(e.from),r=t.get(e.to);return!n||!r?``:`<li><strong>${O(n)}</strong> <em>${O(e.label)}</em> <strong>${O(r)}</strong>${e.note?`<span class="prb-map-note"> — ${O(e.note)}</span>`:``}</li>`}).join(``)}</ol>
151
- </details>`}function O(e){return e.simple===e.technical?de(e.simple):`<span data-reg="simple">${de(e.simple)}</span><span data-reg="technical">${de(e.technical)}</span>`}var jo=`http://www.w3.org/2000/svg`,Mo=new WeakSet,No=new WeakMap;function Po(e){return document.addEventListener(`click`,t=>{let n=t.target;if(!(n instanceof Element))return;let r=n.closest(`[data-map-register-option]`);if(r){qo(r.dataset.mapRegisterOption===`technical`?`technical`:`simple`,e);return}if(n.closest(`[data-goto-section]`))return;let i=n.closest(`[data-map-node]`),a=n.closest(`[data-map-board]`);a&&Ko(a,i&&i.classList.contains(`prb-map-node`)?i.dataset.mapNode??null:null)}),document.addEventListener(`focusin`,e=>{let t=e.target instanceof Element?e.target.closest(`.prb-map-node`):null,n=t?.closest(`[data-map-board]`);t&&n&&Ko(n,t.dataset.mapNode??null)}),document.addEventListener(`keydown`,t=>{let n=t.target;if(n instanceof HTMLElement){if(t.key===`Escape`&&n.closest(`[data-map-board]`)){let e=n.closest(`[data-map-board]`);e?.hasAttribute(`data-selecting`)&&(Ko(e,null),t.stopPropagation());return}if((t.key===`ArrowLeft`||t.key===`ArrowRight`)&&n.matches(`[role="tab"][data-diagram-mode]`)){t.preventDefault();let r=[...n.closest(`[role="tablist"]`)?.querySelectorAll(`[data-diagram-mode]`)??[]].map(e=>e.dataset.diagramMode??``),i=t.key===`ArrowRight`?1:-1,a=r[(r.indexOf(n.dataset.diagramMode??``)+i+r.length)%r.length];e.showView(a),document.querySelector(`.prb-view[data-view="${a}"] [data-diagram-mode="${a}"]`)?.focus()}}}),{layout:Fo,show:Io}}function Fo(){for(let e of document.querySelectorAll(`[data-map-board]`))Lo(e),Ro(e)}function Io(e){let t=document.querySelector(`[data-map-body]`);t&&(t.innerHTML=Co({stored:e,sections:Yo(),reviewedSha:e.commitSha,register:Jo()}),Fo())}function Lo(e){if(Mo.has(e)||typeof ResizeObserver>`u`)return;Mo.add(e);let t=!1;new ResizeObserver(()=>{t||(t=!0,requestAnimationFrame(()=>{t=!1,Ro(e)}))}).observe(e)}function Ro(e){let t=e.querySelector(`[data-map-edges]`);if(!t||e.offsetWidth===0)return;let n=e.getBoundingClientRect(),r=t=>{let r=t.getBoundingClientRect(),i=r.left-n.left+e.scrollLeft,a=r.top-n.top+e.scrollTop;return{left:i,top:a,right:i+r.width,bottom:a+r.height,cx:i+r.width/2,cy:a+r.height/2}},i=e.scrollWidth,a=e.scrollHeight;t.setAttribute(`width`,String(i)),t.setAttribute(`height`,String(a)),t.setAttribute(`viewBox`,`0 0 ${i} ${a}`),t.replaceChildren(Go());let o=new Map;for(let t of e.querySelectorAll(`.prb-map-node`))o.set(t.dataset.mapNode??``,r(t));let s=getComputedStyle(e).gridTemplateColumns.trim().split(/\s+/).length>1,c=[...e.querySelectorAll(`.prb-map-label[data-map-edge]`)].map(e=>{let t=o.get(e.dataset.from??``),n=o.get(e.dataset.to??``);return{label:e,from:t,to:n,ends:t&&n?zo(t,n,s):null}}),l=new Map,u=(e,t,n,r)=>{let i=`${e}\u0000${t}`;l.set(i,[...l.get(i)??[],{edge:n,other:r}])};c.forEach(({label:e,from:t,to:n,ends:r},i)=>{!t||!n||!r||(u(e.dataset.from??``,r.from,i,n),u(e.dataset.to??``,r.to,i,t))});let d=(e,t,n,r)=>{let i=[...l.get(`${e}\u0000${t}`)??[]],a=t===`top`||t===`bottom`;i.sort((e,t)=>a?e.other.cx-t.other.cx:e.other.cy-t.other.cy);let o=i.findIndex(e=>e.edge===n),s=a?r.right-r.left:r.bottom-r.top,c=Math.min(18,s*.6/Math.max(1,i.length));return(o-(i.length-1)/2)*c},f=[],ee=[...e.querySelectorAll(`.prb-map-stage-title`)].map(r),te=[...o.values()],p=e.clientWidth,m=No.get(e),ne=m&&m.width===p?m.edges:new Set;No.set(e,{width:p,edges:ne});let re=(t,n)=>{n&&ne.add(t);let r=e.querySelector(`[data-inline-edge="${t}"]`);r&&(r.hidden=!n)};c.forEach(({label:e,from:n,to:r,ends:i},a)=>{let o=Number(e.dataset.mapEdge);if(!n||!r||!i){e.hidden=!0;return}if(ne.has(o)){e.hidden=!0,re(o,!0);return}let s=Bo(n,i.from,d(e.dataset.from??``,i.from,a,n)),c=Bo(r,i.to,d(e.dataset.to??``,i.to,a,r)),l=Ho(s,i.from,c,i.to),[u,p,m,ie]=l,ae=te.filter(e=>e!==n&&e!==r);if(Array.from({length:19},(e,t)=>Uo(l,.05+t*.05)).some(e=>ae.some(t=>e.x>t.left&&e.x<t.right&&e.y>t.top&&e.y<t.bottom))){e.hidden=!0,re(o,!0);return}let h=document.createElementNS(jo,`path`);h.setAttribute(`d`,`M${k(u.x)},${k(u.y)} C${k(p.x)},${k(p.y)} ${k(m.x)},${k(m.y)} ${k(ie.x)},${k(ie.y)}`),h.setAttribute(`class`,`prb-map-edge`),h.setAttribute(`marker-end`,`url(#prb-map-arrow)`),h.dataset.mapEdge=e.dataset.mapEdge??``,h.dataset.from=e.dataset.from??``,h.dataset.to=e.dataset.to??``,t.appendChild(h),e.hidden=!1;let oe=e.offsetWidth,g=e.offsetHeight,_=[.5,.4,.6,.3,.7,.22,.78].map(e=>{let t=Uo(l,e);return{left:t.x-oe/2,top:t.y-g/2,right:t.x+oe/2,bottom:t.y+g/2}}).find(e=>![...te,...ee,...f].some(t=>Wo(e,t,2)));if(!_){h.remove(),e.hidden=!0,re(o,!0);return}re(o,!1),f.push(_),e.style.left=`${Math.round(_.left)}px`,e.style.top=`${Math.round(_.top)}px`}),e.setAttribute(`data-laid-out`,``)}function zo(e,t,n){let r=t.left-e.right,i=e.left-t.right,a=t.top-e.bottom,o=e.top-t.bottom,s=Math.max(r,i),c=Math.max(a,o);return s>0&&(n||c<=0)?r>=i?{from:`right`,to:`left`}:{from:`left`,to:`right`}:c>0?a>=o?{from:`bottom`,to:`top`}:{from:`top`,to:`bottom`}:{from:`right`,to:`right`}}function Bo(e,t,n){switch(t){case`top`:return{x:e.cx+n,y:e.top};case`bottom`:return{x:e.cx+n,y:e.bottom};case`left`:return{x:e.left,y:e.cy+n};case`right`:return{x:e.right,y:e.cy+n}}}var Vo={top:{x:0,y:-1},bottom:{x:0,y:1},left:{x:-1,y:0},right:{x:1,y:0}};function Ho(e,t,n,r){let i=Math.abs(t===`left`||t===`right`?n.x-e.x:n.y-e.y),a=Math.max(24,i/2),o=Vo[t],s=Vo[r];return[e,{x:e.x+o.x*a,y:e.y+o.y*a},{x:n.x+s.x*a,y:n.y+s.y*a},n]}function Uo([e,t,n,r],i){let a=1-i;return{x:a*a*a*e.x+3*a*a*i*t.x+3*a*i*i*n.x+i*i*i*r.x,y:a*a*a*e.y+3*a*a*i*t.y+3*a*i*i*n.y+i*i*i*r.y}}function Wo(e,t,n){return e.left<t.right+n&&e.right>t.left-n&&e.top<t.bottom+n&&e.bottom>t.top-n}function k(e){return Math.round(e*10)/10}function Go(){let e=document.createElementNS(jo,`defs`),t=document.createElementNS(jo,`marker`);t.setAttribute(`id`,`prb-map-arrow`),t.setAttribute(`viewBox`,`0 0 10 10`),t.setAttribute(`refX`,`9`),t.setAttribute(`refY`,`5`),t.setAttribute(`markerWidth`,`7`),t.setAttribute(`markerHeight`,`7`),t.setAttribute(`orient`,`auto-start-reverse`);let n=document.createElementNS(jo,`path`);return n.setAttribute(`d`,`M0,0 L10,5 L0,10 z`),n.setAttribute(`class`,`prb-map-arrow`),t.appendChild(n),e.appendChild(t),e}function Ko(e,t){for(let t of e.querySelectorAll(`[data-active], [data-near]`))t.removeAttribute(`data-active`),t.removeAttribute(`data-near`);if(e.toggleAttribute(`data-selecting`,t!==null),t!==null){e.querySelector(`.prb-map-node[data-map-node="${CSS.escape(t)}"]`)?.setAttribute(`data-active`,``);for(let n of e.querySelectorAll(`[data-map-edge]`)){let r=n.getAttribute(`data-from`),i=n.getAttribute(`data-to`);if(r!==t&&i!==t)continue;n.setAttribute(`data-active`,``);let a=r===t?i:r;a&&e.querySelector(`.prb-map-node[data-map-node="${CSS.escape(a)}"]`)?.setAttribute(`data-near`,``)}}}function qo(e,t){document.querySelector(`[data-map-pane]`)?.setAttribute(`data-map-register`,e);for(let t of document.querySelectorAll(`[data-change-map]`))t.dataset.register=e;for(let t of document.querySelectorAll(`[data-map-register-option]`))t.setAttribute(`aria-pressed`,String(t.dataset.mapRegisterOption===e));Fo(),fetch(t.endpoint(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({changeMapRegister:e})}).catch(()=>{})}function Jo(){return document.querySelector(`[data-map-pane]`)?.dataset.mapRegister===`technical`?`technical`:`simple`}function Yo(){return[...document.querySelectorAll(`[data-goto-section][data-theme-index]`)].map(e=>({id:e.dataset.gotoSection??``,title:e.querySelector(`.prb-rail-title`)?.textContent?.trim()??``}))}var Xo=`repository`,A={minCharacters:8,maxLines:3,maxCharacters:400},Zo=[`app`,`service`,`component`,`store`,`external`,`group`],Qo=/^[a-z][a-z0-9-]*$/;function $o(e){let t=[];if(!ss(e))return{ok:!1,errors:[`The architecture must be a JSON object.`]};ls(e,[`schema`,`title`,`summary`,`nodes`,`relationships`],`architecture`,t);let n=cs(e,[`summary`],`architecture`,t);n.schema!==2&&t.push(`architecture.schema must be 2.`);let r=us(n.title,`architecture.title`,t),i=ds(n.summary,`architecture.summary`,t),a=[],o=new Set;!Array.isArray(n.nodes)||n.nodes.length===0?t.push(`architecture.nodes must be a non-empty array.`):n.nodes.forEach((e,n)=>{let r=es(e,`nodes[${n}]`,t);r&&(o.has(r.id)&&t.push(`nodes[${n}].id "${r.id}" is used twice.`),o.add(r.id),a.push(r))});let s=new Set(Array.isArray(n.nodes)?n.nodes.flatMap(e=>ss(e)&&typeof e.id==`string`&&Qo.test(e.id)?[e.id]:[]):[]),c=new Map(a.map(e=>[e.id,e]));for(let e of a){if(e.parent===void 0)continue;let n=c.get(e.parent);n?n.kind!==`group`&&t.push(`Node "${e.id}" names parent "${e.parent}", which is not a group.`):s.has(e.parent)||t.push(`Node "${e.id}" names parent "${e.parent}", which is not a node.`)}for(let e of a)j(e.id,c).includes(e.id)&&t.push(`Node "${e.id}" is its own ancestor.`),e.kind===`external`&&e.owns&&t.push(`Node "${e.id}" is external, so it cannot own files in this repository.`);let l=[],u=new Set;return Array.isArray(n.relationships)?n.relationships.forEach((e,n)=>{let r=`relationships[${n}]`,i=ts(e,r,t);if(!i)return;(u.has(i.id)||o.has(i.id))&&t.push(`${r}.id "${i.id}" is already used.`),u.add(i.id);let{source:a,target:d}=i;for(let[e,n]of[[`source`,a],[`target`,d]])s.has(n)||t.push(`${r}.${e} "${n}" is not a node.`);a===d?t.push(`${r} relates "${a}" to itself.`):c.has(a)&&c.has(d)&&(j(a,c).includes(d)||j(d,c).includes(a))&&t.push(`${r} relates "${a}" and "${d}", and one contains the other.`),l.push(i)}):t.push(`architecture.relationships must be an array.`),t.length>0||r===null?{ok:!1,errors:t}:{ok:!0,architecture:{schema:2,title:r,...i===void 0?{}:{summary:i},nodes:a,relationships:l}}}function j(e,t){let n=[],r=t.get(e)?.parent;for(;r!==void 0&&!n.includes(r);)n.push(r),r=t.get(r)?.parent;return r!==void 0&&n.push(r),n}function es(e,t,n){if(!ss(e))return n.push(`${t} must be an object.`),null;ls(e,[`id`,`name`,`kind`,`parent`,`description`,`owns`,`evidence`],t,n);let r=cs(e,[`parent`,`description`,`owns`],t,n),i=fs(r.id,`${t}.id`,n);i===`repository`&&n.push(`${t}.id must not be "${Xo}": that name is kept for the whole repository. Choose another id.`);let a=us(r.name,`${t}.name`,n),o=Zo.find(e=>e===r.kind);o||n.push(`${t}.kind must be one of ${Zo.join(`, `)}.`);let s=r.parent===void 0?void 0:fs(r.parent,`${t}.parent`,n),c=ds(r.description,`${t}.description`,n),l=r.owns===void 0?void 0:ns(r.owns,`${t}.owns`,n),u=rs(r.evidence,`${t}.evidence`,n);return i===null||a===null||!o||s===null||l===null||u===null?null:{id:i,name:a,kind:o,...s===void 0?{}:{parent:s},...c===void 0?{}:{description:c},...l===void 0?{}:{owns:l},evidence:u}}function ts(e,t,n){if(!ss(e))return n.push(`${t} must be an object.`),null;ls(e,[`id`,`source`,`target`,`label`,`description`,`evidence`,`confidence`],t,n);let r=cs(e,[`description`,`confidence`],t,n),i=fs(r.id,`${t}.id`,n),a=fs(r.source,`${t}.source`,n),o=fs(r.target,`${t}.target`,n),s=us(r.label,`${t}.label`,n),c=ds(r.description,`${t}.description`,n),l=rs(r.evidence,`${t}.evidence`,n),u;return r.confidence!==void 0&&(typeof r.confidence==`number`&&r.confidence>=0&&r.confidence<=1?u=r.confidence:n.push(`${t}.confidence must be a number from 0 to 1.`)),i===null||a===null||o===null||s===null||l===null?null:{id:i,source:a,target:o,label:s,...c===void 0?{}:{description:c},evidence:l,...u===void 0?{}:{confidence:u}}}function ns(e,t,n){if(!Array.isArray(e)||e.length===0)return n.push(`${t} must be a non-empty array of globs, or left out.`),null;let r=[];return e.forEach((e,i)=>{let a=us(e,`${t}[${i}]`,n);a!==null&&(!os(a)||a.startsWith(`./`)||a.startsWith(`!`)?n.push(`${t}[${i}] must be a glob relative to the repository, with forward slashes, no "..", no "./" and no "!".`):r.includes(a)?n.push(`${t}[${i}] "${a}" is listed twice.`):r.push(a))}),r.length===e.length?r:null}function rs(e,t,n){if(!Array.isArray(e)||e.length===0)return n.push(`${t} must list at least one location in the repository.`),null;let r=[];return e.forEach((e,i)=>{let a=`${t}[${i}]`;if(!ss(e)){n.push(`${a} must be an object.`);return}ls(e,[`path`,`quote`,`symbol`,`line`,`note`],a,n),e=cs(e,[`symbol`,`line`,`note`],a,n);let o=us(e.path,`${a}.path`,n);o!==null&&!os(o)&&n.push(`${a}.path must be relative to the repository, with forward slashes and no "..".`);let s=is(e.quote,`${a}.quote`,n),c;e.symbol!==void 0&&(typeof e.symbol==`string`&&/^\S{1,120}$/.test(e.symbol)?c=e.symbol:n.push(`${a}.symbol must be a name with no spaces, at most 120 characters.`));let l=ps(e.line,`${a}.line`,n),u=ds(e.note,`${a}.note`,n);o!==null&&s!==null&&r.push({path:o,quote:s,...c===void 0?{}:{symbol:c},...l===void 0?{}:{line:l},...u===void 0?{}:{note:u}})}),r.length===e.length?r:null}function is(e,t,n){if(typeof e!=`string`||!e.trim())return n.push(`${t} must be one to ${A.maxLines} lines copied from the file.`),null;let r=e.replace(/^\s*\n|\n\s*$/g,``),i=as(r);return r.split(`
152
- `).length>A.maxLines||r.length>A.maxCharacters?(n.push(`${t} must be at most ${A.maxLines} lines and ${A.maxCharacters} characters.`),null):i.length<A.minCharacters?(n.push(`${t} "${i}" is too short to find again; quote at least ${A.minCharacters} characters.`),null):r}function as(e){return e.replace(/\s+/g,` `).trim()}function os(e){return!e.startsWith(`/`)&&!e.includes(`\\`)&&!e.split(`/`).includes(`..`)}function ss(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function cs(e,t,n,r){let i=t.filter(t=>e[t]===null);if(i.length===0)return e;let a={...e};for(let e of i)r.push(e===`parent`?`${n}.parent must be omitted when the node has no parent; null is not allowed.`:`${n}.${e} must be omitted when there is nothing to give; null is not allowed.`),delete a[e];return a}function ls(e,t,n,r){for(let i of Object.keys(e))t.includes(i)||r.push(`${n} has an unknown field "${i}".`)}function us(e,t,n){return typeof e==`string`&&e.trim()?e.trim():(n.push(`${t} must be a non-empty string.`),null)}function ds(e,t,n){if(e!==void 0)return us(e,t,n)??void 0}function fs(e,t,n){if(typeof e==`string`&&Qo.test(e))return e;let r=typeof e==`string`?[...new Set([...e].filter(e=>e>``))]:[],i=r.map(e=>`"${e}" (U+${e.codePointAt(0).toString(16).toUpperCase().padStart(4,`0`)})`).join(`, `);return n.push(`${t} must be lowercase ASCII letters, digits and hyphens, starting with a letter${r.length>0?`; "${e}" contains ${i}, which ${r.length===1?`is`:`are`} not ASCII`:``}.`),null}function ps(e,t,n){if(e!==void 0){if(Number.isInteger(e)&&e>=1)return e;n.push(`${t} must be a whole number from 1.`)}}function ms(e,t){let n=new Map(e.nodes.map(e=>[e.id,e]));if(t!==null&&!e.nodes.some(e=>e.parent===t))throw Error(`"${t}" is not a group with members.`);let r=t===null?[]:[t,...j(t,n)],i=e=>t!==null&&j(e,n).includes(t),a=e=>{let a=[e,...j(e,n)];if(t===null)return a[a.length-1];if(i(e))return a[a.indexOf(t)-1];let o=e,s=n.get(o)?.parent;for(;s!==void 0&&!r.includes(s);)o=s,s=n.get(o)?.parent;return o},o=e.nodes.filter(e=>t===null?e.parent===void 0:e.parent===t),s=new Set(o.map(e=>e.id)),c=new Map;for(let n of e.relationships){let e=a(n.source),r=a(n.target);if(e===r)continue;let i=e=>s.has(e)||e===t;if(!i(e)&&!i(r))continue;let o=`${e}>${r}`,l=c.get(o)??{id:o,source:e,target:r,relationships:[],label:``};l.relationships.push(n.id),c.set(o,l)}let l=new Set;for(let e of c.values())for(let n of[e.source,e.target])!s.has(n)&&n!==t&&l.add(n);let u=new Map(e.relationships.map(e=>[e.id,e.label]));for(let e of c.values())e.label=e.relationships.length===1?u.get(e.relationships[0]):`${e.relationships.length} relationships`;let d=t=>e.nodes.filter(e=>e.parent===t.id).length,f=(e,t)=>{let n=e.kind===`group`?d(e):0;return{id:e.id,name:e.name,kind:e.kind,member:t,opens:n,...n>0?{detail:n===1?`1 part`:`${n} parts`}:{}}};return{scope:t,title:t===null?e.title:n.get(t).name,nodes:[...o.map(e=>f(e,!0)),...e.nodes.filter(e=>l.has(e.id)).map(e=>f(e,!1))],edges:[...c.values()]}}var hs={app:[`(["`,`"])`],service:[`["`,`"]`],component:[`("`,`")`],store:[`[("`,`")]`],external:[`["`,`"]`],group:[`[["`,`"]]`]};function gs(e){return e.replace(/\s+/g,` `).replace(/#/g,`#35;`).replace(/"/g,`#quot;`).replace(/</g,`#lt;`).replace(/>/g,`#gt;`).replace(/%/g,`#37;`).replace(/`/g,`#96;`).trim()}function _s(e,t={}){let n=t.edgeIds??!0,r=new Map,i=new Map;e.nodes.forEach((e,t)=>{r.set(`n${t}`,e.id),i.set(e.id,`n${t}`)});let a=e=>{let[t,n]=hs[e.kind],r=e.detail?`${gs(e.name)}<br>${gs(e.detail)}`:gs(e.name),a=e.opens>0?`group`:e.member?e.kind===`external`?`external`:e.kind===`store`?`store`:`part`:`context`;return` ${i.get(e.id)}${t}${r}${n}:::${a}`},o=[`flowchart LR`],s=e.nodes.filter(e=>e.member),c=e.nodes.filter(e=>!e.member);e.scope===null?o.push(...s.map(a)):o.push(` subgraph scope["${gs(e.title)}"]`,...s.map(a),` end`),o.push(...c.map(a));let l=t=>t===e.scope?`scope`:i.get(t),u=new Map;return e.edges.forEach((e,t)=>{let r=`e${t}`;u.set(r,e);let i=e.relationships.length>1?`==>`:`-->`;o.push(` ${l(e.source)} ${n?`${r}@`:``}${i}|"${gs(e.label)}"| ${l(e.target)}`)}),o.push(` classDef part fill:#ffffff,stroke:#8c959f,color:#1f2328`,` classDef store fill:#fff8e6,stroke:#b08800,color:#1f2328`,` classDef external fill:#f6f8fa,stroke:#8c959f,stroke-dasharray:4 3,color:#424a53`,` classDef context fill:#f6f8fa,stroke:#d0d7de,stroke-dasharray:4 3,color:#57606a`,` classDef group fill:#f3e8ff,stroke:#9333ea,stroke-width:2px,color:#3b0764`),e.scope!==null&&o.push(` style scope fill:#faf5ff,stroke:#c4a5f5,color:#6b21a8`),{source:o.join(`
153
- `),nodes:r,edges:u}}function vs(e,t=[null]){let n=new Map(e.nodes.map(e=>[e.id,e]));return`${t.map((t,r)=>{let i=ms(e,t),a=r===0&&t===null?`# ${ys(e.title)}`:`## ${ys(i.title)}`,o=t===null?e.summary:n.get(t)?.description,s=_s(i,{edgeIds:!1}).source;return[a,...o?[ys(o)]:[],["```mermaid",s,"```"].join(`
153
+ <ol>${e.edges.map(e=>{let n=t.get(e.from),r=t.get(e.to);return!n||!r?``:`<li><strong>${k(n)}</strong> <em>${k(e.label)}</em> <strong>${k(r)}</strong>${e.note?`<span class="prb-map-note"> — ${k(e.note)}</span>`:``}</li>`}).join(``)}</ol>
154
+ </details>`}function k(e){return e.simple===e.technical?de(e.simple):`<span data-reg="simple">${de(e.simple)}</span><span data-reg="technical">${de(e.technical)}</span>`}var Go=`http://www.w3.org/2000/svg`,Ko=new WeakSet,qo=new WeakMap;function Jo(e){return document.addEventListener(`click`,t=>{let n=t.target;if(!(n instanceof Element))return;let r=n.closest(`[data-map-register-option]`);if(r){ss(r.dataset.mapRegisterOption===`technical`?`technical`:`simple`,e);return}if(n.closest(`[data-goto-section]`))return;let i=n.closest(`[data-map-node]`),a=n.closest(`[data-map-board]`);a&&os(a,i&&i.classList.contains(`prb-map-node`)?i.dataset.mapNode??null:null)}),document.addEventListener(`focusin`,e=>{let t=e.target instanceof Element?e.target.closest(`.prb-map-node`):null,n=t?.closest(`[data-map-board]`);t&&n&&os(n,t.dataset.mapNode??null)}),document.addEventListener(`keydown`,t=>{let n=t.target;if(n instanceof HTMLElement){if(t.key===`Escape`&&n.closest(`[data-map-board]`)){let e=n.closest(`[data-map-board]`);e?.hasAttribute(`data-selecting`)&&(os(e,null),t.stopPropagation());return}if((t.key===`ArrowLeft`||t.key===`ArrowRight`)&&n.matches(`[role="tab"][data-diagram-mode]`)){t.preventDefault();let r=[...n.closest(`[role="tablist"]`)?.querySelectorAll(`[data-diagram-mode]`)??[]].map(e=>e.dataset.diagramMode??``),i=t.key===`ArrowRight`?1:-1,a=r[(r.indexOf(n.dataset.diagramMode??``)+i+r.length)%r.length];e.showView(a),document.querySelector(`.prb-view[data-view="${a}"] [data-diagram-mode="${a}"]`)?.focus()}}}),{layout:Yo,show:Xo}}function Yo(){for(let e of document.querySelectorAll(`[data-map-board]`))Zo(e),Qo(e)}function Xo(e){let t=document.querySelector(`[data-map-body]`);t&&(t.innerHTML=Lo({stored:e,sections:ls(),reviewedSha:e.commitSha,register:cs()}),Yo())}function Zo(e){if(Ko.has(e)||typeof ResizeObserver>`u`)return;Ko.add(e);let t=!1;new ResizeObserver(()=>{t||(t=!0,requestAnimationFrame(()=>{t=!1,Qo(e)}))}).observe(e)}function Qo(e){let t=e.querySelector(`[data-map-edges]`);if(!t||e.offsetWidth===0)return;let n=e.getBoundingClientRect(),r=t=>{let r=t.getBoundingClientRect(),i=r.left-n.left+e.scrollLeft,a=r.top-n.top+e.scrollTop;return{left:i,top:a,right:i+r.width,bottom:a+r.height,cx:i+r.width/2,cy:a+r.height/2}},i=e.scrollWidth,a=e.scrollHeight;t.setAttribute(`width`,String(i)),t.setAttribute(`height`,String(a)),t.setAttribute(`viewBox`,`0 0 ${i} ${a}`),t.replaceChildren(as());let o=new Map;for(let t of e.querySelectorAll(`.prb-map-node`))o.set(t.dataset.mapNode??``,r(t));let s=getComputedStyle(e).gridTemplateColumns.trim().split(/\s+/).length>1,c=[...e.querySelectorAll(`.prb-map-label[data-map-edge]`)].map(e=>{let t=o.get(e.dataset.from??``),n=o.get(e.dataset.to??``);return{label:e,from:t,to:n,ends:t&&n?$o(t,n,s):null}}),l=new Map,u=(e,t,n,r)=>{let i=`${e}\u0000${t}`;l.set(i,[...l.get(i)??[],{edge:n,other:r}])};c.forEach(({label:e,from:t,to:n,ends:r},i)=>{!t||!n||!r||(u(e.dataset.from??``,r.from,i,n),u(e.dataset.to??``,r.to,i,t))});let d=(e,t,n,r)=>{let i=[...l.get(`${e}\u0000${t}`)??[]],a=t===`top`||t===`bottom`;i.sort((e,t)=>a?e.other.cx-t.other.cx:e.other.cy-t.other.cy);let o=i.findIndex(e=>e.edge===n),s=a?r.right-r.left:r.bottom-r.top,c=Math.min(18,s*.6/Math.max(1,i.length));return(o-(i.length-1)/2)*c},f=[],ee=[...e.querySelectorAll(`.prb-map-stage-title`)].map(r),te=[...o.values()],p=e.clientWidth,m=qo.get(e),ne=m&&m.width===p?m.edges:new Set;qo.set(e,{width:p,edges:ne});let h=(t,n)=>{n&&ne.add(t);let r=e.querySelector(`[data-inline-edge="${t}"]`);r&&(r.hidden=!n)};c.forEach(({label:e,from:n,to:r,ends:i},a)=>{let o=Number(e.dataset.mapEdge);if(!n||!r||!i){e.hidden=!0;return}if(ne.has(o)){e.hidden=!0,h(o,!0);return}let s=es(n,i.from,d(e.dataset.from??``,i.from,a,n)),c=es(r,i.to,d(e.dataset.to??``,i.to,a,r)),l=ns(s,i.from,c,i.to),[u,p,m,re]=l,ie=te.filter(e=>e!==n&&e!==r);if(Array.from({length:19},(e,t)=>rs(l,.05+t*.05)).some(e=>ie.some(t=>e.x>t.left&&e.x<t.right&&e.y>t.top&&e.y<t.bottom))){e.hidden=!0,h(o,!0);return}let g=document.createElementNS(Go,`path`);g.setAttribute(`d`,`M${A(u.x)},${A(u.y)} C${A(p.x)},${A(p.y)} ${A(m.x)},${A(m.y)} ${A(re.x)},${A(re.y)}`),g.setAttribute(`class`,`prb-map-edge`),g.setAttribute(`marker-end`,`url(#prb-map-arrow)`),g.dataset.mapEdge=e.dataset.mapEdge??``,g.dataset.from=e.dataset.from??``,g.dataset.to=e.dataset.to??``,t.appendChild(g),e.hidden=!1;let ae=e.offsetWidth,oe=e.offsetHeight,_=[.5,.4,.6,.3,.7,.22,.78].map(e=>{let t=rs(l,e);return{left:t.x-ae/2,top:t.y-oe/2,right:t.x+ae/2,bottom:t.y+oe/2}}).find(e=>![...te,...ee,...f].some(t=>is(e,t,2)));if(!_){g.remove(),e.hidden=!0,h(o,!0);return}h(o,!1),f.push(_),e.style.left=`${Math.round(_.left)}px`,e.style.top=`${Math.round(_.top)}px`}),e.setAttribute(`data-laid-out`,``)}function $o(e,t,n){let r=t.left-e.right,i=e.left-t.right,a=t.top-e.bottom,o=e.top-t.bottom,s=Math.max(r,i),c=Math.max(a,o);return s>0&&(n||c<=0)?r>=i?{from:`right`,to:`left`}:{from:`left`,to:`right`}:c>0?a>=o?{from:`bottom`,to:`top`}:{from:`top`,to:`bottom`}:{from:`right`,to:`right`}}function es(e,t,n){switch(t){case`top`:return{x:e.cx+n,y:e.top};case`bottom`:return{x:e.cx+n,y:e.bottom};case`left`:return{x:e.left,y:e.cy+n};case`right`:return{x:e.right,y:e.cy+n}}}var ts={top:{x:0,y:-1},bottom:{x:0,y:1},left:{x:-1,y:0},right:{x:1,y:0}};function ns(e,t,n,r){let i=Math.abs(t===`left`||t===`right`?n.x-e.x:n.y-e.y),a=Math.max(24,i/2),o=ts[t],s=ts[r];return[e,{x:e.x+o.x*a,y:e.y+o.y*a},{x:n.x+s.x*a,y:n.y+s.y*a},n]}function rs([e,t,n,r],i){let a=1-i;return{x:a*a*a*e.x+3*a*a*i*t.x+3*a*i*i*n.x+i*i*i*r.x,y:a*a*a*e.y+3*a*a*i*t.y+3*a*i*i*n.y+i*i*i*r.y}}function is(e,t,n){return e.left<t.right+n&&e.right>t.left-n&&e.top<t.bottom+n&&e.bottom>t.top-n}function A(e){return Math.round(e*10)/10}function as(){let e=document.createElementNS(Go,`defs`),t=document.createElementNS(Go,`marker`);t.setAttribute(`id`,`prb-map-arrow`),t.setAttribute(`viewBox`,`0 0 10 10`),t.setAttribute(`refX`,`9`),t.setAttribute(`refY`,`5`),t.setAttribute(`markerWidth`,`7`),t.setAttribute(`markerHeight`,`7`),t.setAttribute(`orient`,`auto-start-reverse`);let n=document.createElementNS(Go,`path`);return n.setAttribute(`d`,`M0,0 L10,5 L0,10 z`),n.setAttribute(`class`,`prb-map-arrow`),t.appendChild(n),e.appendChild(t),e}function os(e,t){for(let t of e.querySelectorAll(`[data-active], [data-near]`))t.removeAttribute(`data-active`),t.removeAttribute(`data-near`);if(e.toggleAttribute(`data-selecting`,t!==null),t!==null){e.querySelector(`.prb-map-node[data-map-node="${CSS.escape(t)}"]`)?.setAttribute(`data-active`,``);for(let n of e.querySelectorAll(`[data-map-edge]`)){let r=n.getAttribute(`data-from`),i=n.getAttribute(`data-to`);if(r!==t&&i!==t)continue;n.setAttribute(`data-active`,``);let a=r===t?i:r;a&&e.querySelector(`.prb-map-node[data-map-node="${CSS.escape(a)}"]`)?.setAttribute(`data-near`,``)}}}function ss(e,t){document.querySelector(`[data-map-pane]`)?.setAttribute(`data-map-register`,e);for(let t of document.querySelectorAll(`[data-change-map]`))t.dataset.register=e;for(let t of document.querySelectorAll(`[data-map-register-option]`))t.setAttribute(`aria-pressed`,String(t.dataset.mapRegisterOption===e));Yo(),fetch(t.endpoint(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({changeMapRegister:e})}).catch(()=>{})}function cs(){return document.querySelector(`[data-map-pane]`)?.dataset.mapRegister===`technical`?`technical`:`simple`}function ls(){return[...document.querySelectorAll(`[data-goto-section][data-theme-index]`)].map(e=>({id:e.dataset.gotoSection??``,title:e.querySelector(`.prb-rail-title`)?.textContent?.trim()??``}))}var us=`repository`,j={minCharacters:8,maxLines:3,maxCharacters:400},ds=[`app`,`service`,`component`,`store`,`external`,`group`],fs=/^[a-z][a-z0-9-]*$/;function ps(e){let t=[];if(!xs(e))return{ok:!1,errors:[`The architecture must be a JSON object.`]};Cs(e,[`schema`,`title`,`summary`,`nodes`,`relationships`],`architecture`,t);let n=Ss(e,[`summary`],`architecture`,t);n.schema!==2&&t.push(`architecture.schema must be 2.`);let r=ws(n.title,`architecture.title`,t),i=Ts(n.summary,`architecture.summary`,t),a=[],o=new Set;!Array.isArray(n.nodes)||n.nodes.length===0?t.push(`architecture.nodes must be a non-empty array.`):n.nodes.forEach((e,n)=>{let r=ms(e,`nodes[${n}]`,t);r&&(o.has(r.id)&&t.push(`nodes[${n}].id "${r.id}" is used twice.`),o.add(r.id),a.push(r))});let s=new Set(Array.isArray(n.nodes)?n.nodes.flatMap(e=>xs(e)&&typeof e.id==`string`&&fs.test(e.id)?[e.id]:[]):[]),c=new Map(a.map(e=>[e.id,e]));for(let e of a){if(e.parent===void 0)continue;let n=c.get(e.parent);n?n.kind!==`group`&&t.push(`Node "${e.id}" names parent "${e.parent}", which is not a group.`):s.has(e.parent)||t.push(`Node "${e.id}" names parent "${e.parent}", which is not a node.`)}for(let e of a)M(e.id,c).includes(e.id)&&t.push(`Node "${e.id}" is its own ancestor.`),e.kind===`external`&&e.owns&&t.push(`Node "${e.id}" is external, so it cannot own files in this repository.`);let l=[],u=new Set;return Array.isArray(n.relationships)?n.relationships.forEach((e,n)=>{let r=`relationships[${n}]`,i=hs(e,r,t);if(!i)return;(u.has(i.id)||o.has(i.id))&&t.push(`${r}.id "${i.id}" is already used.`),u.add(i.id);let{source:a,target:d}=i;for(let[e,n]of[[`source`,a],[`target`,d]])s.has(n)||t.push(`${r}.${e} "${n}" is not a node.`);a===d?t.push(`${r} relates "${a}" to itself.`):c.has(a)&&c.has(d)&&(M(a,c).includes(d)||M(d,c).includes(a))&&t.push(`${r} relates "${a}" and "${d}", and one contains the other.`),l.push(i)}):t.push(`architecture.relationships must be an array.`),t.length>0||r===null?{ok:!1,errors:t}:{ok:!0,architecture:{schema:2,title:r,...i===void 0?{}:{summary:i},nodes:a,relationships:l}}}function M(e,t){let n=[],r=t.get(e)?.parent;for(;r!==void 0&&!n.includes(r);)n.push(r),r=t.get(r)?.parent;return r!==void 0&&n.push(r),n}function ms(e,t,n){if(!xs(e))return n.push(`${t} must be an object.`),null;Cs(e,[`id`,`name`,`kind`,`parent`,`description`,`owns`,`evidence`],t,n);let r=Ss(e,[`parent`,`description`,`owns`],t,n),i=Es(r.id,`${t}.id`,n);i===`repository`&&n.push(`${t}.id must not be "${us}": that name is kept for the whole repository. Choose another id.`);let a=ws(r.name,`${t}.name`,n),o=ds.find(e=>e===r.kind);o||n.push(`${t}.kind must be one of ${ds.join(`, `)}.`);let s=r.parent===void 0?void 0:Es(r.parent,`${t}.parent`,n),c=Ts(r.description,`${t}.description`,n),l=r.owns===void 0?void 0:gs(r.owns,`${t}.owns`,n),u=_s(r.evidence,`${t}.evidence`,n);return i===null||a===null||!o||s===null||l===null||u===null?null:{id:i,name:a,kind:o,...s===void 0?{}:{parent:s},...c===void 0?{}:{description:c},...l===void 0?{}:{owns:l},evidence:u}}function hs(e,t,n){if(!xs(e))return n.push(`${t} must be an object.`),null;Cs(e,[`id`,`source`,`target`,`label`,`description`,`evidence`,`confidence`],t,n);let r=Ss(e,[`description`,`confidence`],t,n),i=Es(r.id,`${t}.id`,n),a=Es(r.source,`${t}.source`,n),o=Es(r.target,`${t}.target`,n),s=ws(r.label,`${t}.label`,n),c=Ts(r.description,`${t}.description`,n),l=_s(r.evidence,`${t}.evidence`,n),u;return r.confidence!==void 0&&(typeof r.confidence==`number`&&r.confidence>=0&&r.confidence<=1?u=r.confidence:n.push(`${t}.confidence must be a number from 0 to 1.`)),i===null||a===null||o===null||s===null||l===null?null:{id:i,source:a,target:o,label:s,...c===void 0?{}:{description:c},evidence:l,...u===void 0?{}:{confidence:u}}}function gs(e,t,n){if(!Array.isArray(e)||e.length===0)return n.push(`${t} must be a non-empty array of globs, or left out.`),null;let r=[];return e.forEach((e,i)=>{let a=ws(e,`${t}[${i}]`,n);a!==null&&(!bs(a)||a.startsWith(`./`)||a.startsWith(`!`)?n.push(`${t}[${i}] must be a glob relative to the repository, with forward slashes, no "..", no "./" and no "!".`):r.includes(a)?n.push(`${t}[${i}] "${a}" is listed twice.`):r.push(a))}),r.length===e.length?r:null}function _s(e,t,n){if(!Array.isArray(e)||e.length===0)return n.push(`${t} must list at least one location in the repository.`),null;let r=[];return e.forEach((e,i)=>{let a=`${t}[${i}]`;if(!xs(e)){n.push(`${a} must be an object.`);return}Cs(e,[`path`,`quote`,`symbol`,`line`,`note`],a,n),e=Ss(e,[`symbol`,`line`,`note`],a,n);let o=ws(e.path,`${a}.path`,n);o!==null&&!bs(o)&&n.push(`${a}.path must be relative to the repository, with forward slashes and no "..".`);let s=vs(e.quote,`${a}.quote`,n),c;e.symbol!==void 0&&(typeof e.symbol==`string`&&/^\S{1,120}$/.test(e.symbol)?c=e.symbol:n.push(`${a}.symbol must be a name with no spaces, at most 120 characters.`));let l=Ds(e.line,`${a}.line`,n),u=Ts(e.note,`${a}.note`,n);o!==null&&s!==null&&r.push({path:o,quote:s,...c===void 0?{}:{symbol:c},...l===void 0?{}:{line:l},...u===void 0?{}:{note:u}})}),r.length===e.length?r:null}function vs(e,t,n){if(typeof e!=`string`||!e.trim())return n.push(`${t} must be one to ${j.maxLines} lines copied from the file.`),null;let r=e.replace(/^\s*\n|\n\s*$/g,``),i=ys(r);return r.split(`
155
+ `).length>j.maxLines||r.length>j.maxCharacters?(n.push(`${t} must be at most ${j.maxLines} lines and ${j.maxCharacters} characters.`),null):i.length<j.minCharacters?(n.push(`${t} "${i}" is too short to find again; quote at least ${j.minCharacters} characters.`),null):r}function ys(e){return e.replace(/\s+/g,` `).trim()}function bs(e){return!e.startsWith(`/`)&&!e.includes(`\\`)&&!e.split(`/`).includes(`..`)}function xs(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ss(e,t,n,r){let i=t.filter(t=>e[t]===null);if(i.length===0)return e;let a={...e};for(let e of i)r.push(e===`parent`?`${n}.parent must be omitted when the node has no parent; null is not allowed.`:`${n}.${e} must be omitted when there is nothing to give; null is not allowed.`),delete a[e];return a}function Cs(e,t,n,r){for(let i of Object.keys(e))t.includes(i)||r.push(`${n} has an unknown field "${i}".`)}function ws(e,t,n){return typeof e==`string`&&e.trim()?e.trim():(n.push(`${t} must be a non-empty string.`),null)}function Ts(e,t,n){if(e!==void 0)return ws(e,t,n)??void 0}function Es(e,t,n){if(typeof e==`string`&&fs.test(e))return e;let r=typeof e==`string`?[...new Set([...e].filter(e=>e>``))]:[],i=r.map(e=>`"${e}" (U+${e.codePointAt(0).toString(16).toUpperCase().padStart(4,`0`)})`).join(`, `);return n.push(`${t} must be lowercase ASCII letters, digits and hyphens, starting with a letter${r.length>0?`; "${e}" contains ${i}, which ${r.length===1?`is`:`are`} not ASCII`:``}.`),null}function Ds(e,t,n){if(e!==void 0){if(Number.isInteger(e)&&e>=1)return e;n.push(`${t} must be a whole number from 1.`)}}function Os(e,t){let n=new Map(e.nodes.map(e=>[e.id,e]));if(t!==null&&!e.nodes.some(e=>e.parent===t))throw Error(`"${t}" is not a group with members.`);let r=t===null?[]:[t,...M(t,n)],i=e=>t!==null&&M(e,n).includes(t),a=e=>{let a=[e,...M(e,n)];if(t===null)return a[a.length-1];if(i(e))return a[a.indexOf(t)-1];let o=e,s=n.get(o)?.parent;for(;s!==void 0&&!r.includes(s);)o=s,s=n.get(o)?.parent;return o},o=e.nodes.filter(e=>t===null?e.parent===void 0:e.parent===t),s=new Set(o.map(e=>e.id)),c=new Map;for(let n of e.relationships){let e=a(n.source),r=a(n.target);if(e===r)continue;let i=e=>s.has(e)||e===t;if(!i(e)&&!i(r))continue;let o=`${e}>${r}`,l=c.get(o)??{id:o,source:e,target:r,relationships:[],label:``};l.relationships.push(n.id),c.set(o,l)}let l=new Set;for(let e of c.values())for(let n of[e.source,e.target])!s.has(n)&&n!==t&&l.add(n);let u=new Map(e.relationships.map(e=>[e.id,e.label]));for(let e of c.values())e.label=e.relationships.length===1?u.get(e.relationships[0]):`${e.relationships.length} relationships`;let d=t=>e.nodes.filter(e=>e.parent===t.id).length,f=(e,t)=>{let n=e.kind===`group`?d(e):0;return{id:e.id,name:e.name,kind:e.kind,member:t,opens:n,...n>0?{detail:n===1?`1 part`:`${n} parts`}:{}}};return{scope:t,title:t===null?e.title:n.get(t).name,nodes:[...o.map(e=>f(e,!0)),...e.nodes.filter(e=>l.has(e.id)).map(e=>f(e,!1))],edges:[...c.values()]}}var ks={app:[`(["`,`"])`],service:[`["`,`"]`],component:[`("`,`")`],store:[`[("`,`")]`],external:[`["`,`"]`],group:[`[["`,`"]]`]};function As(e){return e.replace(/\s+/g,` `).replace(/#/g,`#35;`).replace(/"/g,`#quot;`).replace(/</g,`#lt;`).replace(/>/g,`#gt;`).replace(/%/g,`#37;`).replace(/`/g,`#96;`).trim()}function js(e,t={}){let n=t.edgeIds??!0,r=new Map,i=new Map;e.nodes.forEach((e,t)=>{r.set(`n${t}`,e.id),i.set(e.id,`n${t}`)});let a=e=>{let[t,n]=ks[e.kind],r=e.detail?`${As(e.name)}<br>${As(e.detail)}`:As(e.name),a=e.opens>0?`group`:e.member?e.kind===`external`?`external`:e.kind===`store`?`store`:`part`:`context`;return` ${i.get(e.id)}${t}${r}${n}:::${a}`},o=[`flowchart LR`],s=e.nodes.filter(e=>e.member),c=e.nodes.filter(e=>!e.member);e.scope===null?o.push(...s.map(a)):o.push(` subgraph scope["${As(e.title)}"]`,...s.map(a),` end`),o.push(...c.map(a));let l=t=>t===e.scope?`scope`:i.get(t),u=new Map;return e.edges.forEach((e,t)=>{let r=`e${t}`;u.set(r,e);let i=e.relationships.length>1?`==>`:`-->`;o.push(` ${l(e.source)} ${n?`${r}@`:``}${i}|"${As(e.label)}"| ${l(e.target)}`)}),o.push(` classDef part fill:#ffffff,stroke:#8c959f,color:#1f2328`,` classDef store fill:#fff8e6,stroke:#b08800,color:#1f2328`,` classDef external fill:#f6f8fa,stroke:#8c959f,stroke-dasharray:4 3,color:#424a53`,` classDef context fill:#f6f8fa,stroke:#d0d7de,stroke-dasharray:4 3,color:#57606a`,` classDef group fill:#f3e8ff,stroke:#9333ea,stroke-width:2px,color:#3b0764`),e.scope!==null&&o.push(` style scope fill:#faf5ff,stroke:#c4a5f5,color:#6b21a8`),{source:o.join(`
156
+ `),nodes:r,edges:u}}function Ms(e,t=[null]){let n=new Map(e.nodes.map(e=>[e.id,e]));return`${t.map((t,r)=>{let i=Os(e,t),a=r===0&&t===null?`# ${Ns(e.title)}`:`## ${Ns(i.title)}`,o=t===null?e.summary:n.get(t)?.description,s=js(i,{edgeIds:!1}).source;return[a,...o?[Ns(o)]:[],["```mermaid",s,"```"].join(`
154
157
  `)].join(`
155
158
 
156
159
  `)}).join(`
157
160
 
158
- `)}\n`}function ys(e){return e.replace(/\s+/g,` `).trim().replace(/[\\`*_[\]<>#|]/g,`\\$&`)}var bs={exploring:{title:`Exploring the code…`,detail:`Reading the repository and identifying its main parts.`},checking:{title:`Checking the evidence…`,detail:`Making sure every piece of code the map cites is really there.`},correcting:{title:`Correcting the map…`,detail:`Fixing what the checks found.`}};function xs(e){return bs[e.stage]}var Ss={app:`Application`,service:`Service`,component:`Component`,store:`Store`,external:`External system`,group:`Group`},Cs=5e3;function ws(e){let t=!1,n=!1,r=()=>document.querySelector(`[data-architecture-pane]`)?.hidden===!1;document.addEventListener(`click`,t=>{let n=t.target.closest(`[data-architecture-map]`);n&&Es(e,n,n.dataset.architectureMap||`repository`);let r=t.target.closest(`[data-architecture-stop]`);r&&Ds(e,r,r.dataset.architectureStop||`repository`)}),ks(e,()=>{r()?Ts():n=!0});async function i(){if(n)return Ts();if(t)return;let e=document.querySelector(`[data-architecture]`),r=e?.querySelector(`[data-architecture-canvas]`),i=e?.querySelector(`[data-architecture-inspector]`),a=e?.querySelector(`[data-architecture-model]`)?.textContent;if(!e||!r||!i||!a)return;t=!0;let o;try{o=JSON.parse(a)}catch{return Ps(r,`The architecture could not be read.`)}let s=$o(o.architecture);if(!s.ok)return Ps(r,`The architecture could not be read.`);let c={scope:Xo,architecture:s.architecture,evidence:o.evidence??{}},l=new Map;for(let[e,t]of Object.entries(o.deeper??{})){let n=$o(t.architecture);n.ok&&l.set(e,{scope:e,architecture:n.architecture,evidence:t.evidence,...t.changed?{changed:t.changed}:{}})}let u=new js({canvas:r,inspector:i,trail:e.querySelector(`[data-architecture-trail]`),repository:c,deeper:l,embedded:o}),d=u.draw(c);return e.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-architecture-select]`);n?.dataset.architectureSelect&&u.reveal(n.dataset.architectureSelect);let r=t.closest(`[data-architecture-copy]`);r&&As(r,c,l)}),d}return{show:i}}function Ts(){let e=zn(window.location.hash,`architecture`);window.location.hash!==e&&window.history.replaceState(window.history.state,``,e),window.location.reload()}async function Es(e,t,n){if(!t.disabled){t.disabled=!0,t.parentElement?.querySelector(`[data-architecture-error]`)?.remove();try{let r=await fetch(e.endpoint(`/architecture`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({scope:n})});if(r.status===202||r.status===409)return Ts();Os(t,(await r.json().catch(()=>null))?.error??`Mapping could not start.`)}catch{Os(t,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}t.disabled=!1}}async function Ds(e,t,n){if(!t.disabled){t.disabled=!0,t.parentElement?.querySelector(`[data-architecture-error]`)?.remove();try{if((await fetch(e.endpoint(`/architecture`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({scope:n,stop:!0})})).ok)return Ts();Os(t,`Mapping could not be stopped.`)}catch{Os(t,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}t.disabled=!1}}function Os(e,t){let n=M(`p`,`prb-arch-error`,t);n.setAttribute(`data-architecture-error`,``),n.setAttribute(`role`,`alert`),e.after(n)}function ks(e,t){let n=[];try{n=JSON.parse(document.querySelector(`[data-architecture-runs]`)?.textContent??`[]`)}catch{return}if(n.length===0)return;let r=async()=>{try{let r=(await(await fetch(e.endpoint(`/job`))).json()).architecture??[];for(let e of r){let t=document.querySelector(`[data-architecture-running="${CSS.escape(e.scope)}"]`),{title:n,detail:r}=xs(e),i=t?.querySelector(`[data-architecture-stage]`),a=t?.querySelector(`[data-architecture-stage-detail]`);i&&(i.textContent=n),a&&(a.textContent=r)}if(n.some(e=>!r.some(t=>t.scope===e)))return t()}catch{}window.setTimeout(()=>void r(),Cs)};window.setTimeout(()=>void r(),Cs)}async function As(e,t,n){let r=e=>e.nodes.filter(t=>e.nodes.some(e=>e.parent===t.id)).map(e=>e.id),i=[t,...n.values()].map(e=>vs(e.architecture,[null,...r(e.architecture)])).join(`
159
- `),a=e.textContent;try{await navigator.clipboard.writeText(i),e.textContent=`Copied`}catch{e.textContent=`Couldn't copy`}window.setTimeout(()=>e.textContent=a,2e3)}var js=class{parts;drawing=null;shown;constructor(e){this.parts=e,this.shown=e.repository}async draw(e,t=null){let{canvas:n,inspector:r,trail:i,embedded:a}=this.parts,o;try{o=await v(()=>import(`./chunk-CMZKCXl2.js`),[])}catch{return Ps(n,`The architecture drawing could not be loaded. Reload the page to try again.`)}this.drawing?.dispose(),this.shown=e;let s=document.createElement(`div`);s.className=`prb-arch-host`,n.replaceChildren(s);let c=e=>void this.drawing?.showScope(e);try{this.drawing=await o.renderArchitectureWithMermaid(s,e.architecture,{onSelect:e=>this.inspect(e),onScopeChange:t=>{i&&Ns(i,e.architecture,t,c,this.base()),this.hint()},affected:new Set(a.touched?.[e.scope]??[])}),t===null?i&&Ns(i,e.architecture,null,c,this.base()):await this.drawing.showScope(t),e!==this.parts.repository&&this.hint()}catch(e){console.error(`[prb architecture]`,e),Ps(n,`The architecture could not be drawn.`)}}async reveal(e){let t=this.parts.repository.architecture.nodes.find(t=>t.id===e);t&&(this.shown!==this.parts.repository&&await this.draw(this.parts.repository),await this.drawing?.showScope(t.parent??null),this.drawing?.select(e),this.parts.canvas.scrollIntoView({block:`nearest`,behavior:`smooth`}))}base(){if(this.shown===this.parts.repository)return[];let{repository:e}=this.parts,t=e.architecture.nodes.find(e=>e.id===this.shown.scope);return[{label:e.architecture.title,go:()=>void this.draw(e,t?.parent??null)},{label:`${t?.name??this.shown.scope} in depth`,go:()=>void this.drawing?.showScope(null)}]}hint(){let{inspector:e}=this.parts,t=[];this.shown!==this.parts.repository&&t.push(...Ms(this.shown.scope,this.shown.changed,this.parts.embedded)),t.push(M(`p`,`prb-arch-hint`,`Select a part or an arrow to see what it is and the code it rests on.`)),e.replaceChildren(...t)}inspect(e){let{inspector:t,embedded:n,deeper:r}=this.parts,i=this.shown===this.parts.repository;Fs(t,this.shown,e,e=>void this.drawing?.showScope(e),e=>{let t=[];if(n.touched?.[this.shown.scope]?.includes(e.id)&&t.push(M(`p`,`prb-arch-meta prb-arch-touched`,`This change touches files in this part.`)),!i)return t;let a=r.get(e.id);if(a){let r=M(`button`,`prb-arch-open`,`Open ${e.name} in depth`);r.type=`button`,r.addEventListener(`click`,()=>void this.draw(a));let i=Ms(e.id,a.changed,n),o=i.at(-1)?.tagName===`BUTTON`?i.pop():void 0;t.push(...i,r,...o?[o]:[])}else if(n.running?.includes(e.id))t.push(M(`p`,`prb-arch-meta`,`Mapping this part in depth…`));else if(n.mappable?.includes(e.id)){let r=n.failures?.[e.id];r&&t.push(M(`p`,`prb-arch-error`,`Mapping this part in depth failed. ${r.message}`));let i=M(`button`,`prb-diagram-redraw`,r?`Retry mapping this part in depth`:`Map this part in depth`);if(i.type=`button`,i.dataset.architectureMap=e.id,t.push(i),r&&r.errors.length>0){let e=M(`details`,`prb-arch-failure-details`,``),n=M(`ul`,``,``);for(let e of r.errors)n.append(M(`li`,``,e));e.append(M(`summary`,``,`What the checks found`),n),t.push(e)}}return t})}};function Ms(e,t,n){let r=t?[M(`p`,`prb-arch-meta prb-arch-changed`,t)]:[];if(n.running?.includes(e))return[...r,M(`p`,`prb-arch-meta`,`Mapping this part in depth again…`)];let i=n.failures?.[e],a=M(`button`,`prb-diagram-redraw`,`Remap this part`);return a.type=`button`,a.dataset.architectureMap=e,[...r,...i?[M(`p`,`prb-arch-error`,`Remapping this part failed. ${i.message}`)]:[],a]}function Ns(e,t,n,r,i=[]){let a=new Map(t.nodes.map(e=>[e.id,e])),o=[...i.length>0?i:[{label:t.title,go:()=>r(null)}],...(n===null?[]:[...j(n,a).reverse(),n]).map(e=>({label:a.get(e)?.name??e,go:()=>r(e)}))];e.replaceChildren(...o.flatMap((e,t)=>{let n=t===o.length-1,r=M(n?`span`:`button`,`prb-arch-crumb`,e.label);return n?r.setAttribute(`aria-current`,`location`):(r.type=`button`,r.addEventListener(`click`,e.go)),t===0?[r]:[M(`span`,`prb-arch-crumb-sep`,`›`),r]}))}function Ps(e,t){let n=document.createElement(`p`);n.className=`prb-arch-status`,n.textContent=t,e.replaceChildren(n)}function Fs(e,t,n,r,i){let{architecture:a}=t,o=new Map(a.nodes.map(e=>[e.id,e])),s=e=>o.get(e)?.name??e;if(n.kind===`none`){let t=M(`p`,`prb-arch-hint`,`Select a part or an arrow to see what it is and the code it rests on.`);e.replaceChildren(t);return}if(n.kind===`node`){let c=o.get(n.id);if(!c)return;let l=[M(`p`,`prb-arch-kind`,`${Ss[c.kind]??c.kind}${c.parent?` in ${s(c.parent)}`:``}`),M(`h4`,`prb-arch-title`,c.name)];c.description&&l.push(M(`p`,`prb-arch-text`,c.description));let u=a.nodes.filter(e=>e.parent===c.id).length;if(u>0&&r){let e=M(`button`,`prb-arch-open`,`Show the ${u} parts inside ${c.name}`);e.type=`button`,e.addEventListener(`click`,()=>r(c.id)),l.push(e)}i&&l.push(...i(c)),l.push(Is(c.evidence,t.evidence[c.id]));let d=a.relationships.filter(e=>e.source===c.id||e.target===c.id);if(d.length>0){l.push(M(`h5`,`prb-arch-subhead`,`Relationships`));let e=M(`ul`,`prb-arch-related`,``);for(let t of d)e.append(M(`li`,``,`${s(t.source)} ${t.label} ${s(t.target)}`));l.push(e)}e.replaceChildren(...l);return}let c=[],l=n.ids.flatMap(e=>a.relationships.find(t=>t.id===e)??[]);l.length>1&&c.push(M(`p`,`prb-arch-kind`,`${l.length} relationships behind this arrow`));for(let e of l){let n=M(`section`,`prb-arch-relationship`,``);n.append(M(`p`,`prb-arch-kind`,`Relationship`),M(`h4`,`prb-arch-title`,`${s(e.source)} ${e.label} ${s(e.target)}`)),e.description&&n.append(M(`p`,`prb-arch-text`,e.description)),e.confidence!==void 0&&n.append(M(`p`,`prb-arch-meta`,`Inferred, with ${Math.round(e.confidence*100)}% confidence`)),n.append(Is(e.evidence,t.evidence[e.id])),c.push(n)}e.replaceChildren(...c)}function Is(e,t=[]){let n=M(`div`,`prb-arch-evidence`,``);n.append(M(`h5`,`prb-arch-subhead`,`Evidence`));let r=M(`ul`,`prb-arch-evidence-list`,``);return e.forEach((e,n)=>{let i=M(`li`,``,``),a=t[n];if(a&&a.state!==`missing`){let t=M(`button`,`prb-arch-location`,`${e.path}:${a.line}${a.endLine===a.line?``:`–${a.endLine}`}`);t.type=`button`,t.dataset.openEditor=e.path,t.dataset.openLine=String(a.line),i.append(t),a.via===`symbol`&&i.append(M(`span`,`prb-arch-gone`,`The quoted code has changed; this opens ${e.symbol}`))}else i.append(M(`span`,`prb-arch-location`,e.path),M(`span`,`prb-arch-gone`,`No longer found in this checkout`));i.append(M(`code`,`prb-arch-quote`,e.quote)),e.note&&i.append(M(`span`,`prb-arch-note`,e.note)),r.append(i)}),n.append(r),n}function M(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n&&(r.textContent=n),r}function Ls(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var Rs=1e3,zs=new WeakMap;function Bs(e,t){return e.length<=1e3?Ls(e)||`&nbsp;`:`${Ls(e.slice(0,Rs))}\u2026 <button type="button" class="prb-code-long-toggle" data-full-line="${t}">Show full line</button>`}function Vs(e){let t=e.lines.length;return`<tr class="prb-code-deletion" data-before-line="${e.beforeLine}"><td class="prb-code-num"></td><td class="prb-code-line"><button type="button" class="prb-code-deletion-toggle" data-deletion-toggle aria-expanded="false">− ${t} deleted ${t===1?`line`:`lines`}</button></td></tr>`+e.lines.map(e=>`<tr class="prb-code-deleted" hidden><td class="prb-code-num">− ${e.oldLine}</td><td class="prb-code-line">${Bs(e.text,`old:${e.oldLine}`)}</td></tr>`).join(``)}function Hs(e,t){let n=new Set(e.addedLines),r=new Map;for(let t of e.deletions??[])r.set(t.beforeLine,t);let i=e.lines.map((i,a)=>{let o=e.from+a,s=[n.has(o)?`prb-code-added`:``,o===t?`prb-code-target`:``].filter(Boolean).join(` `),c=r.get(o);return`${c?Vs(c):``}<tr class="${s}" data-line="${o}"><td class="prb-code-num">${o}</td><td class="prb-code-line">${Bs(i,`new:${o}`)}</td></tr>`}),a=r.get(e.totalLines+1);return a&&e.to===e.totalLines&&i.push(Vs(a)),i.join(``)}function Us(e){let t=e.getAttribute(`aria-expanded`)!==`true`;e.setAttribute(`aria-expanded`,String(t));let n=e.closest(`tr`)?.nextElementSibling;for(;n?.classList.contains(`prb-code-deleted`);)n.hidden=!t,n=n.nextElementSibling}function Ws(e,t){let n=new Map;for(let e of t.deletions??[])for(let t of e.lines)n.set(t.oldLine,t.text);for(let r of e.querySelectorAll(`[data-full-line]`)){let[e,i]=(r.dataset.fullLine??``).split(`:`),a=Number(i),o=e===`old`?n.get(a):t.lines[a-t.from];o!==void 0&&zs.set(r,o)}}function Gs(e){let t=zs.get(e),n=e.closest(`td`);return t===void 0||!n?null:(n.textContent=t,n)}function Ks(e){return e.deletion?2*e.line-1:2*e.line}function qs(e){return e%2==1?{line:(e+1)/2,deletion:!0}:{line:e/2,deletion:!1}}function Js(e,t){if(e.length===0)return``;let n=e.map(Ks),r=n.indexOf(t),i=n.some(e=>e<t),a=n.some(e=>e>t),o=e.length,s=r===-1?`${o} ${o===1?`change`:`changes`}`:`${r+1} of ${o}`;return`<span class="prb-code-nav" data-change-navigator data-change-keys="${n.join(`,`)}" data-change-position="${t}">
161
+ `)}\n`}function Ns(e){return e.replace(/\s+/g,` `).trim().replace(/[\\`*_[\]<>#|]/g,`\\$&`)}var Ps={exploring:{title:`Exploring the code…`,detail:`Reading the repository and identifying its main parts.`},checking:{title:`Checking the evidence…`,detail:`Making sure every piece of code the map cites is really there.`},correcting:{title:`Correcting the map…`,detail:`Fixing what the checks found.`}};function Fs(e){return Ps[e.stage]}var Is={app:`Application`,service:`Service`,component:`Component`,store:`Store`,external:`External system`,group:`Group`},Ls=5e3;function Rs(e){let t=!1,n=!1,r=()=>document.querySelector(`[data-architecture-pane]`)?.hidden===!1;document.addEventListener(`click`,t=>{let n=t.target.closest(`[data-architecture-map]`);n&&Bs(e,n,n.dataset.architectureMap||`repository`);let r=t.target.closest(`[data-architecture-stop]`);r&&Vs(e,r,r.dataset.architectureStop||`repository`)}),Us(e,()=>{r()?zs():n=!0});async function i(){if(n)return zs();if(t)return;let e=document.querySelector(`[data-architecture]`),r=e?.querySelector(`[data-architecture-canvas]`),i=e?.querySelector(`[data-architecture-inspector]`),a=e?.querySelector(`[data-architecture-model]`)?.textContent;if(!e||!r||!i||!a)return;t=!0;let o;try{o=JSON.parse(a)}catch{return Js(r,`The architecture could not be read.`)}let s=ps(o.architecture);if(!s.ok)return Js(r,`The architecture could not be read.`);let c={scope:us,architecture:s.architecture,evidence:o.evidence??{}},l=new Map;for(let[e,t]of Object.entries(o.deeper??{})){let n=ps(t.architecture);n.ok&&l.set(e,{scope:e,architecture:n.architecture,evidence:t.evidence,...t.changed?{changed:t.changed}:{}})}let u=new Gs({canvas:r,inspector:i,trail:e.querySelector(`[data-architecture-trail]`),repository:c,deeper:l,embedded:o}),d=u.draw(c);return e.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-architecture-select]`);n?.dataset.architectureSelect&&u.reveal(n.dataset.architectureSelect);let r=t.closest(`[data-architecture-copy]`);r&&Ws(r,c,l)}),d}return{show:i}}function zs(){let e=Xn(window.location.hash,`architecture`);window.location.hash!==e&&window.history.replaceState(window.history.state,``,e),window.location.reload()}async function Bs(e,t,n){if(!t.disabled){t.disabled=!0,t.parentElement?.querySelector(`[data-architecture-error]`)?.remove();try{let r=await fetch(e.endpoint(`/architecture`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({scope:n})});if(r.status===202||r.status===409)return zs();Hs(t,(await r.json().catch(()=>null))?.error??`Mapping could not start.`)}catch{Hs(t,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}t.disabled=!1}}async function Vs(e,t,n){if(!t.disabled){t.disabled=!0,t.parentElement?.querySelector(`[data-architecture-error]`)?.remove();try{if((await fetch(e.endpoint(`/architecture`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({scope:n,stop:!0})})).ok)return zs();Hs(t,`Mapping could not be stopped.`)}catch{Hs(t,`Could not reach PR Review Buddy. The workspace server may have stopped.`)}t.disabled=!1}}function Hs(e,t){let n=N(`p`,`prb-arch-error`,t);n.setAttribute(`data-architecture-error`,``),n.setAttribute(`role`,`alert`),e.after(n)}function Us(e,t){let n=[];try{n=JSON.parse(document.querySelector(`[data-architecture-runs]`)?.textContent??`[]`)}catch{return}if(n.length===0)return;let r=async()=>{try{let r=(await(await fetch(e.endpoint(`/job`))).json()).architecture??[];for(let e of r){let t=document.querySelector(`[data-architecture-running="${CSS.escape(e.scope)}"]`),{title:n,detail:r}=Fs(e),i=t?.querySelector(`[data-architecture-stage]`),a=t?.querySelector(`[data-architecture-stage-detail]`);i&&(i.textContent=n),a&&(a.textContent=r)}if(n.some(e=>!r.some(t=>t.scope===e)))return t()}catch{}window.setTimeout(()=>void r(),Ls)};window.setTimeout(()=>void r(),Ls)}async function Ws(e,t,n){let r=e=>e.nodes.filter(t=>e.nodes.some(e=>e.parent===t.id)).map(e=>e.id),i=[t,...n.values()].map(e=>Ms(e.architecture,[null,...r(e.architecture)])).join(`
162
+ `),a=e.textContent;try{await navigator.clipboard.writeText(i),e.textContent=`Copied`}catch{e.textContent=`Couldn't copy`}window.setTimeout(()=>e.textContent=a,2e3)}var Gs=class{parts;drawing=null;shown;constructor(e){this.parts=e,this.shown=e.repository}async draw(e,t=null){let{canvas:n,inspector:r,trail:i,embedded:a}=this.parts,o;try{o=await v(()=>import(`./chunk-CMZKCXl2.js`),[])}catch{return Js(n,`The architecture drawing could not be loaded. Reload the page to try again.`)}this.drawing?.dispose(),this.shown=e;let s=document.createElement(`div`);s.className=`prb-arch-host`,n.replaceChildren(s);let c=e=>void this.drawing?.showScope(e);try{this.drawing=await o.renderArchitectureWithMermaid(s,e.architecture,{onSelect:e=>this.inspect(e),onScopeChange:t=>{i&&qs(i,e.architecture,t,c,this.base()),this.hint()},affected:new Set(a.touched?.[e.scope]??[])}),t===null?i&&qs(i,e.architecture,null,c,this.base()):await this.drawing.showScope(t),e!==this.parts.repository&&this.hint()}catch(e){console.error(`[prb architecture]`,e),Js(n,`The architecture could not be drawn.`)}}async reveal(e){let t=this.parts.repository.architecture.nodes.find(t=>t.id===e);t&&(this.shown!==this.parts.repository&&await this.draw(this.parts.repository),await this.drawing?.showScope(t.parent??null),this.drawing?.select(e),this.parts.canvas.scrollIntoView({block:`nearest`,behavior:`smooth`}))}base(){if(this.shown===this.parts.repository)return[];let{repository:e}=this.parts,t=e.architecture.nodes.find(e=>e.id===this.shown.scope);return[{label:e.architecture.title,go:()=>void this.draw(e,t?.parent??null)},{label:`${t?.name??this.shown.scope} in depth`,go:()=>void this.drawing?.showScope(null)}]}hint(){let{inspector:e}=this.parts,t=[];this.shown!==this.parts.repository&&t.push(...Ks(this.shown.scope,this.shown.changed,this.parts.embedded)),t.push(N(`p`,`prb-arch-hint`,`Select a part or an arrow to see what it is and the code it rests on.`)),e.replaceChildren(...t)}inspect(e){let{inspector:t,embedded:n,deeper:r}=this.parts,i=this.shown===this.parts.repository;Ys(t,this.shown,e,e=>void this.drawing?.showScope(e),e=>{let t=[];if(n.touched?.[this.shown.scope]?.includes(e.id)&&t.push(N(`p`,`prb-arch-meta prb-arch-touched`,`This change touches files in this part.`)),!i)return t;let a=r.get(e.id);if(a){let r=N(`button`,`prb-arch-open`,`Open ${e.name} in depth`);r.type=`button`,r.addEventListener(`click`,()=>void this.draw(a));let i=Ks(e.id,a.changed,n),o=i.at(-1)?.tagName===`BUTTON`?i.pop():void 0;t.push(...i,r,...o?[o]:[])}else if(n.running?.includes(e.id))t.push(N(`p`,`prb-arch-meta`,`Mapping this part in depth…`));else if(n.mappable?.includes(e.id)){let r=n.failures?.[e.id];r&&t.push(N(`p`,`prb-arch-error`,`Mapping this part in depth failed. ${r.message}`));let i=N(`button`,`prb-diagram-redraw`,r?`Retry mapping this part in depth`:`Map this part in depth`);if(i.type=`button`,i.dataset.architectureMap=e.id,t.push(i),r&&r.errors.length>0){let e=N(`details`,`prb-arch-failure-details`,``),n=N(`ul`,``,``);for(let e of r.errors)n.append(N(`li`,``,e));e.append(N(`summary`,``,`What the checks found`),n),t.push(e)}}return t})}};function Ks(e,t,n){let r=t?[N(`p`,`prb-arch-meta prb-arch-changed`,t)]:[];if(n.running?.includes(e))return[...r,N(`p`,`prb-arch-meta`,`Mapping this part in depth again…`)];let i=n.failures?.[e],a=N(`button`,`prb-diagram-redraw`,`Remap this part`);return a.type=`button`,a.dataset.architectureMap=e,[...r,...i?[N(`p`,`prb-arch-error`,`Remapping this part failed. ${i.message}`)]:[],a]}function qs(e,t,n,r,i=[]){let a=new Map(t.nodes.map(e=>[e.id,e])),o=[...i.length>0?i:[{label:t.title,go:()=>r(null)}],...(n===null?[]:[...M(n,a).reverse(),n]).map(e=>({label:a.get(e)?.name??e,go:()=>r(e)}))];e.replaceChildren(...o.flatMap((e,t)=>{let n=t===o.length-1,r=N(n?`span`:`button`,`prb-arch-crumb`,e.label);return n?r.setAttribute(`aria-current`,`location`):(r.type=`button`,r.addEventListener(`click`,e.go)),t===0?[r]:[N(`span`,`prb-arch-crumb-sep`,`›`),r]}))}function Js(e,t){let n=document.createElement(`p`);n.className=`prb-arch-status`,n.textContent=t,e.replaceChildren(n)}function Ys(e,t,n,r,i){let{architecture:a}=t,o=new Map(a.nodes.map(e=>[e.id,e])),s=e=>o.get(e)?.name??e;if(n.kind===`none`){let t=N(`p`,`prb-arch-hint`,`Select a part or an arrow to see what it is and the code it rests on.`);e.replaceChildren(t);return}if(n.kind===`node`){let c=o.get(n.id);if(!c)return;let l=[N(`p`,`prb-arch-kind`,`${Is[c.kind]??c.kind}${c.parent?` in ${s(c.parent)}`:``}`),N(`h4`,`prb-arch-title`,c.name)];c.description&&l.push(N(`p`,`prb-arch-text`,c.description));let u=a.nodes.filter(e=>e.parent===c.id).length;if(u>0&&r){let e=N(`button`,`prb-arch-open`,`Show the ${u} parts inside ${c.name}`);e.type=`button`,e.addEventListener(`click`,()=>r(c.id)),l.push(e)}i&&l.push(...i(c)),l.push(Xs(c.evidence,t.evidence[c.id]));let d=a.relationships.filter(e=>e.source===c.id||e.target===c.id);if(d.length>0){l.push(N(`h5`,`prb-arch-subhead`,`Relationships`));let e=N(`ul`,`prb-arch-related`,``);for(let t of d)e.append(N(`li`,``,`${s(t.source)} ${t.label} ${s(t.target)}`));l.push(e)}e.replaceChildren(...l);return}let c=[],l=n.ids.flatMap(e=>a.relationships.find(t=>t.id===e)??[]);l.length>1&&c.push(N(`p`,`prb-arch-kind`,`${l.length} relationships behind this arrow`));for(let e of l){let n=N(`section`,`prb-arch-relationship`,``);n.append(N(`p`,`prb-arch-kind`,`Relationship`),N(`h4`,`prb-arch-title`,`${s(e.source)} ${e.label} ${s(e.target)}`)),e.description&&n.append(N(`p`,`prb-arch-text`,e.description)),e.confidence!==void 0&&n.append(N(`p`,`prb-arch-meta`,`Inferred, with ${Math.round(e.confidence*100)}% confidence`)),n.append(Xs(e.evidence,t.evidence[e.id])),c.push(n)}e.replaceChildren(...c)}function Xs(e,t=[]){let n=N(`div`,`prb-arch-evidence`,``);n.append(N(`h5`,`prb-arch-subhead`,`Evidence`));let r=N(`ul`,`prb-arch-evidence-list`,``);return e.forEach((e,n)=>{let i=N(`li`,``,``),a=t[n];if(a&&a.state!==`missing`){let t=N(`button`,`prb-arch-location`,`${e.path}:${a.line}${a.endLine===a.line?``:`–${a.endLine}`}`);t.type=`button`,t.dataset.openEditor=e.path,t.dataset.openLine=String(a.line),i.append(t),a.via===`symbol`&&i.append(N(`span`,`prb-arch-gone`,`The quoted code has changed; this opens ${e.symbol}`))}else i.append(N(`span`,`prb-arch-location`,e.path),N(`span`,`prb-arch-gone`,`No longer found in this checkout`));i.append(N(`code`,`prb-arch-quote`,e.quote)),e.note&&i.append(N(`span`,`prb-arch-note`,e.note)),r.append(i)}),n.append(r),n}function N(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n&&(r.textContent=n),r}function Zs(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}var Qs=1e3,$s=new WeakMap;function ec(e,t){return e.length<=1e3?Zs(e)||`&nbsp;`:`${Zs(e.slice(0,Qs))}\u2026 <button type="button" class="prb-code-long-toggle" data-full-line="${t}">Show full line</button>`}function tc(e){let t=e.lines.length;return`<tr class="prb-code-deletion" data-before-line="${e.beforeLine}"><td class="prb-code-num"></td><td class="prb-code-line"><button type="button" class="prb-code-deletion-toggle" data-deletion-toggle aria-expanded="false">− ${t} deleted ${t===1?`line`:`lines`}</button></td></tr>`+e.lines.map(e=>`<tr class="prb-code-deleted" hidden><td class="prb-code-num">− ${e.oldLine}</td><td class="prb-code-line">${ec(e.text,`old:${e.oldLine}`)}</td></tr>`).join(``)}function nc(e,t){let n=new Set(e.addedLines),r=new Map;for(let t of e.deletions??[])r.set(t.beforeLine,t);let i=e.lines.map((i,a)=>{let o=e.from+a,s=[n.has(o)?`prb-code-added`:``,o===t?`prb-code-target`:``].filter(Boolean).join(` `),c=r.get(o);return`${c?tc(c):``}<tr class="${s}" data-line="${o}"><td class="prb-code-num">${o}</td><td class="prb-code-line">${ec(i,`new:${o}`)}</td></tr>`}),a=r.get(e.totalLines+1);return a&&e.to===e.totalLines&&i.push(tc(a)),i.join(``)}function rc(e){let t=e.getAttribute(`aria-expanded`)!==`true`;e.setAttribute(`aria-expanded`,String(t));let n=e.closest(`tr`)?.nextElementSibling;for(;n?.classList.contains(`prb-code-deleted`);)n.hidden=!t,n=n.nextElementSibling}function ic(e,t){let n=new Map;for(let e of t.deletions??[])for(let t of e.lines)n.set(t.oldLine,t.text);for(let r of e.querySelectorAll(`[data-full-line]`)){let[e,i]=(r.dataset.fullLine??``).split(`:`),a=Number(i),o=e===`old`?n.get(a):t.lines[a-t.from];o!==void 0&&$s.set(r,o)}}function ac(e){let t=$s.get(e),n=e.closest(`td`);return t===void 0||!n?null:(n.textContent=t,n)}function oc(e){return e.deletion?2*e.line-1:2*e.line}function sc(e){return e%2==1?{line:(e+1)/2,deletion:!0}:{line:e/2,deletion:!1}}function cc(e,t){if(e.length===0)return``;let n=e.map(oc),r=n.indexOf(t),i=n.some(e=>e<t),a=n.some(e=>e>t),o=e.length,s=r===-1?`${o} ${o===1?`change`:`changes`}`:`${r+1} of ${o}`;return`<span class="prb-code-nav" data-change-navigator data-change-keys="${n.join(`,`)}" data-change-position="${t}">
160
163
  <button type="button" class="prb-code-nav-step" data-change-step="previous"${i?``:` disabled`}>\u2191 Previous</button>
161
164
  <span class="prb-code-nav-count" aria-live="polite">${s}</span>
162
165
  <button type="button" class="prb-code-nav-step" data-change-step="next"${a?``:` disabled`}>Next \u2193</button>
163
- </span>`}function Ys(e,t){let n=(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number),r=Number(e.dataset.changePosition)||0,i=t===`next`?n.find(e=>e>r):[...n].reverse().find(e=>e<r);return i===void 0?null:{key:i,anchor:qs(i)}}function Xs(e,t){return e.querySelector(t.deletion?`tr[data-before-line="${t.line}"]`:`tr[data-line="${t.line}"]`)}function Zs(e){return(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number).map(qs)}function Qs(e){if(!e)return;let t=Number(e.dataset.changePosition)||0;return(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number).includes(t)?qs(t):void 0}function $s(e,t){return Math.max(e,+!t)+1}var ec=8;function tc(e){for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t).overflowY;if(e===`auto`||e===`scroll`)return t}return null}function nc(e){let t=e.panel-e.scroller;return Math.max(340,Math.floor(e.pane-t-16))}function rc(e){let t=e.getBoundingClientRect().top;for(let n of e.querySelectorAll(`tr`)){let e=n.getBoundingClientRect();if(e.bottom>t)return{row:n,offset:e.top-t}}return null}function ic(e,t){let n=t.row.getBoundingClientRect().top-e.getBoundingClientRect().top-t.offset;e.scrollTop+=n}function ac(e){if(!e.hasAttribute(`data-expanded`))return;let t=tc(e),n=e.querySelector(`.prb-code-scroll`);if(!t||!n)return;let r=nc({pane:t.clientHeight,panel:e.offsetHeight,scroller:n.offsetHeight});e.style.setProperty(`--prb-code-expanded`,`${r}px`)}function oc(e){let t=e.querySelector(`[data-code-expand]`),n=e.querySelector(`.prb-code-scroll`);if(!t||!n)return;let r=e.hasAttribute(`data-expanded`);t.hidden=!r&&n.scrollHeight<=n.clientHeight,t.textContent=r?`Collapse`:`Expand`,t.setAttribute(`aria-expanded`,String(r))}var sc=!1;function cc(){sc||(sc=!0,window.addEventListener(`resize`,()=>{for(let e of document.querySelectorAll(`.prb-code[data-expanded]`))ac(e)}))}function lc(e,t){let n=e.querySelector(`.prb-code-scroll`),r=n?rc(n):null;t?(e.setAttribute(`data-expanded`,``),ac(e),cc()):(e.removeAttribute(`data-expanded`),e.style.removeProperty(`--prb-code-expanded`)),oc(e),n&&r&&ic(n,r);let i=t?tc(e):null;i&&(i.scrollTop+=e.getBoundingClientRect().top-i.getBoundingClientRect().top-ec)}var uc={rb:`ruby`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,ts:`typescript`,mts:`typescript`,cts:`typescript`,jsx:`jsx`,tsx:`tsx`,json:`json`,yml:`yaml`,yaml:`yaml`,md:`markdown`,html:`html`,css:`css`,scss:`scss`,sql:`sql`,py:`python`,java:`java`,kt:`kotlin`,kts:`kotlin`,go:`go`,rs:`rust`,sh:`shellscript`,bash:`shellscript`,zsh:`shellscript`,tf:`terraform`,tfvars:`terraform`};function dc(e){let t=e.slice(e.lastIndexOf(`/`)+1);if(t===`Dockerfile`||t.startsWith(`Dockerfile.`))return`docker`;let n=t.lastIndexOf(`.`);return n<=0?null:uc[t.slice(n+1).toLowerCase()]??null}function fc(e){let t=new Set;for(let n of e){let e=dc(n);e&&t.add(e)}return[...t]}var pc={ruby:()=>v(()=>import(`./chunk-CAnKkQXq.js`),__vite__mapDeps([20,21,22,23,24,25,26,27,28,29,30])),javascript:()=>v(()=>import(`./chunk-D2pwppYQ.js`),__vite__mapDeps([31,22])),typescript:()=>v(()=>import(`./chunk-Cjc271yU.js`),__vite__mapDeps([32,27])),jsx:()=>v(()=>import(`./chunk-B2PgDgse.js`),__vite__mapDeps([33,25])),tsx:()=>v(()=>import(`./chunk-D95j_xjm.js`),__vite__mapDeps([34,28])),json:()=>v(()=>import(`./chunk-qhed-kSA.js`),[]),yaml:()=>v(()=>import(`./chunk-Cv3JjNkX.js`),__vite__mapDeps([35,30])),markdown:()=>v(()=>import(`./chunk-BYOwaDjH.js`),[]),html:()=>v(()=>import(`./chunk-EIJEcyW-.js`),__vite__mapDeps([36,23,21,22])),css:()=>v(()=>import(`./chunk-C3nvJp0N.js`),__vite__mapDeps([37,21])),scss:()=>v(()=>import(`./chunk-D2NZorQR.js`),__vite__mapDeps([38,21])),sql:()=>v(()=>import(`./chunk-NzFayA7r.js`),__vite__mapDeps([39,26])),python:()=>v(()=>import(`./chunk-gzcpVVnB.js`),[]),java:()=>v(()=>import(`./chunk-AdYjtsZU.js`),__vite__mapDeps([40,24])),kotlin:()=>v(()=>import(`./chunk-DhhofPvG.js`),[]),go:()=>v(()=>import(`./chunk-rLFTqkRN.js`),[]),rust:()=>v(()=>import(`./chunk-Cfkwpbl8.js`),[]),shellscript:()=>v(()=>import(`./chunk-pNSm1SyV.js`),__vite__mapDeps([41,29])),docker:()=>v(()=>import(`./chunk-IyjqRm3v.js`),[]),terraform:()=>v(()=>import(`./chunk-DswuEJGm.js`),[])},mc=`github-light-default`,hc=null,gc=new Map;function _c(){return hc??=Promise.all([v(()=>import(`./chunk-c-cg1wCO.js`),__vite__mapDeps([42,4])),v(()=>import(`./chunk-CBrdyqSx.js`),__vite__mapDeps([43,4])),v(()=>import(`./chunk-BXViO-2h.js`),[])]).then(([{createHighlighterCore:e},{createOnigurumaEngine:t},n])=>e({themes:[n.default],langs:[],engine:t(v(()=>import(`./chunk-BnjxR4X6.js`),[]))})).catch(()=>null),hc}function vc(e){let t=gc.get(e);return t||(t=_c().then(async t=>t?(await t.loadLanguage(pc[e]),!0):!1).catch(()=>!1),gc.set(e,t)),t.then(e=>e?_c():null)}var yc={async preload(e){await vc(e)},async tokenize(e,t){let n=await vc(t);if(!n)return null;try{let{tokens:r,fg:i}=n.codeToTokens(e,{lang:t,theme:mc}),a=i?.toLowerCase();return r.map(e=>e.map(e=>({content:e.content,...e.color&&e.color.toLowerCase()!==a?{color:e.color}:{}})))}catch{return null}}};function bc(e,t=yc){return Promise.all(e.map(e=>t.preload(e))).then(()=>void 0)}var xc=/^#[0-9a-f]{3,8}$/i;function Sc(e,t){return!t||t.map(e=>e.content).join(``)!==e?null:t.map(e=>e.color&&xc.test(e.color)?`<span style="color:${e.color}">${Ls(e.content)}</span>`:Ls(e.content)).join(``)}function Cc(e){return e.length>1e3?e.slice(0,Rs):e}function wc(e,t,n){if(!e||t===``)return;let r=Sc(Cc(t),n);if(r===null)return;if(t.length<=1e3){if(e.childElementCount!==0||e.textContent!==t)return;e.innerHTML=r;return}let i=e.querySelector(`[data-full-line]`);i&&(e.innerHTML=`${r}… `,e.append(i))}async function Tc(e,t,n=yc){let r=dc(t.path);if(!r){delete e.dataset.syntax;return}e.dataset.syntax=r;let i=e.querySelector(`tbody`);if(!i)return;let a=()=>i.isConnected&&e.querySelector(`tbody`)===i,o=await n.tokenize(t.lines.map(Cc).join(`
164
- `),r);if(a()){o&&t.lines.forEach((e,n)=>{wc(i.querySelector(`tr[data-line="${t.from+n}"] .prb-code-line`),e,o[n])});for(let e of t.deletions??[]){if(!i.querySelector(`tr[data-before-line="${e.beforeLine}"]`))continue;let t=await n.tokenize(e.lines.map(e=>Cc(e.text)).join(`
165
- `),r);if(!a())return;if(!t)continue;let o=i.querySelector(`tr[data-before-line="${e.beforeLine}"]`)?.nextElementSibling;for(let[n,r]of e.lines.entries()){if(!o?.classList.contains(`prb-code-deleted`))break;wc(o.querySelector(`.prb-code-line`),r.text,t[n]),o=o.nextElementSibling}}}}async function Ec(e,t=yc){let n=e.closest(`.prb-code`)?.dataset.syntax,r=e.textContent??``;if(!n||!(n in pc)||r===``)return;let i=await t.tokenize(r,n);if(!e.isConnected||e.childElementCount!==0||e.textContent!==r)return;let a=Sc(r,i?.[0]);a!==null&&i?.length===1&&(e.innerHTML=a)}var N=f({ownsRestore:!0}),P=document.body,Dc=P.dataset.apiBase??``,Oc=P.dataset.token??``,kc=P.dataset.editorLabel??``,Ac=P.dataset.editorTemplate??``,jc=P.dataset.repoPath??``,Mc=P.dataset.explainPrompt??``,Nc=P.dataset.sessionId??``;function F(e){return`${Dc}${e}?t=${encodeURIComponent(Oc)}`}function I(e){fetch(F(`/event`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e),keepalive:!0}).catch(()=>{})}var Pc=Na({endpoint:F,showDiagrams:()=>z(`diagram`),showMap:()=>z(`map`),showChangeMap:e=>Fc.show(e)}),Fc=Po({endpoint:F,showView:e=>z(e)}),Ic=ws({endpoint:F}),Lc=null,Rc=`the whole change`;function zc(e){let t=Vn(e,Hc),n=N.push(In(t),t);Bc++,Uc(t),n&&Vc(t)}var Bc=0;function Vc(t){let n=(t.kind===`section`?document.querySelector(`.prb-rail [data-goto-section="${CSS.escape(t.sectionId)}"] .prb-rail-title`):document.querySelector(`.prb-rail [data-view-nav="${CSS.escape(t.view)}"] .prb-rail-title`))?.textContent?.trim();n&&e(document,n)}var L=null,Hc=document.querySelector(`[data-guide-start]`)?.dataset.guideStart??null;function Uc(e){let t=Vn(e,Hc);if(t!==e){let{kind:e,view:n,focus:r,...i}=ie(history.state);N.replace(In(t),{...i,...t})}let n=!L||!Jn(L,t);L=t,n&&(t.kind===`view`?Jc(t.view):Qc(t.sectionId)),Gc(t.focus??null)}var Wc={history:{get state(){return history.state},pushState:(e,t,n)=>{Bc++,N.push(n,ie(e))},replaceState:(e,t,n)=>N.replace(n,ie(e)),back:()=>history.back()},apply:Uc},R=le(document,{onOpen:e=>e.hasAttribute(`data-ask-buddy-menu`)?bu(e):xu(e),onClose:xu});function Gc(e){Qn(document.querySelector(`.prb-body`),document,e),R.closeAll(),e===`buddy`&&Vl()}function Kc(e){L&&(L.focus===e?Xn(L,Wc):Yn(L,e,Wc))}function z(e,t={}){let n=t.keepFocus&&L?.focus?e:Rn(e,L?.focus);zc({kind:`view`,view:e,...n?{focus:n}:{}})}function qc(e){zc({kind:`section`,sectionId:e,...L?.focus===`guide`?{focus:`guide`}:{}})}function Jc(e){for(let t of document.querySelectorAll(`.prb-view`))t.hidden=t.dataset.view!==e;for(let t of document.querySelectorAll(`[data-view-nav]:not([role="tab"])`))t.setAttribute(`aria-current`,String(t.dataset.viewNav===e||(t.dataset.viewAlso??``).split(` `).includes(e)));e!==`architecture`&&I({event:`view_opened`,view:e}),e===`diagram`&&Pc.drawPane(),e===`map`&&Fc.layout(),e===`architecture`&&Ic.show(),Yc(),document.querySelector(`.prb-doc`)?.scrollTo({top:0})}function Yc(){Sr(),Lc=null,Rc=`the whole change`,$c()}function Xc(e,t){let n=document.getElementById(e.getAttribute(`aria-controls`)??``);n&&(e.setAttribute(`aria-expanded`,String(t)),e.setAttribute(`aria-label`,`${t?`Collapse`:`Expand`} ${e.dataset.railToggle??`this section`}`),n.hidden=!t)}function Zc(){for(let e of document.querySelectorAll(`[data-rail-toggle]`)){let t=document.getElementById(e.getAttribute(`aria-controls`)??``);(t?.contains(document.getElementById(`prb-rail-path`))||t?.id===`prb-rail-path`)&&Xc(e,!0)}}function Qc(e){Jc(`guide`),Zc(),xr(e);let t=yr(e);if(!t)return;let n=document.querySelector(`[data-goto-section="${CSS.escape(e)}"]`);I({event:`theme_opened`,themeIndex:Number(n?.dataset.themeIndex??-1),attention:n?.querySelector(`.prb-attention`)?.dataset.attention??`medium`,isRecommendedStart:n?.dataset.recommendedStart===`true`}),Lc=e,Rc=t.querySelector(`.pr-helper-guide-section-title`)?.textContent?.trim()??`this theme`,$c()}function $c(){let e=document.querySelector(`[data-ask-scope]`);e&&(e.textContent=Rc)}function B(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function el(e){return e.tagName===`LI`?{parent:e,position:`beforeend`}:{parent:e,position:`afterend`}}async function tl(e){let t=e.tagName===`LI`?e.querySelector(`:scope > .prb-code`):e.nextElementSibling;if(t?.classList.contains(`prb-code`)){t.remove(),e.setAttribute(`aria-expanded`,`false`);return}let n=e.dataset.file;if(!n)return;let r=Number(e.dataset.line)||0,i=e.tagName!==`LI`,a=document.createElement(`div`);a.className=`prb-code`,a.innerHTML=`<p class="prb-code-status">Reading…</p>`;let{parent:o,position:s}=el(e);o.insertAdjacentElement(s,a),e.setAttribute(`aria-expanded`,`true`),I({event:`file_opened`,fromFinding:i,targeted:r>0}),await rl(a,n,{cited:r,centre:r,expand:0,position:r?2*r:0})}var nl=jr();function rl(e,t,n){return nl.run(e,n,async()=>{try{let{centre:r,expand:i}=n,a=`&path=${encodeURIComponent(t)}${r?`&line=${r}`:``}${i?`&expand=${i}`:``}`,o=await fetch(`${F(`/file`)}${a}`),s=await o.json();return o.ok?()=>il(e,s,n):()=>{e.innerHTML=`<p class="prb-code-status">${B(s?.error??`Could not read that file.`)}</p>`}}catch{return()=>{e.innerHTML=`<p class="prb-code-status">Could not reach PR Review Buddy. The workspace server may have stopped.</p>`}}})}function il(e,t,n){let{cited:r,centre:i,expand:a}=n;e.dataset.cited=String(r),e.dataset.centre=String(i),e.dataset.expand=String(a),e.dataset.position=String(n.position);let o=Hs(t,r),s=Ac&&jc?t.checkout===`absent`?`<button type="button" class="prb-code-open" disabled>Not in your working folder</button>`:`<button type="button" class="prb-code-open" data-open-editor="${B(t.path)}" data-open-line="${r||t.from}">${B(`Open in ${kc||`editor`}`)}</button>`:``,c=t.pullRequest&&t.pullRequest.precise?`<a class="prb-code-open prb-code-pr" href="${B(t.pullRequest.href)}" target="_blank" rel="noopener noreferrer">${B(t.pullRequest.label)}</a>`:``,l=t.truncated?`<button type="button" class="prb-code-more" data-expand-file="${B(t.path)}" data-expand-line="${i||0}" data-expand-cited="${r||0}" data-expand-step="${$s(a,i)}">Show more of this file</button>`:``,u=t.checkout===`differs`?` · your editor will show a different version`:t.checkout===`absent`?` · not in your working folder`:``,d=t.changes===`unavailable`?` · change details unavailable`:``,f=`<div class="prb-code-source"><span>${t.source===`commit`?`Viewing reviewed version${t.sourceSha?` <code>${B(t.sourceSha.slice(0,7))}</code>`:``}${u}${d}`:`Viewing your working folder${d}`}</span>${Js(t.changeAnchors??[],n.position)}</div>`,ee=e.hasAttribute(`data-expanded`),te=`<button type="button" class="prb-code-open" data-code-expand aria-expanded="${ee}">${ee?`Collapse`:`Expand`}</button>`;e.innerHTML=`<div class="prb-code-header">
166
+ </span>`}function lc(e,t){let n=(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number),r=Number(e.dataset.changePosition)||0,i=t===`next`?n.find(e=>e>r):[...n].reverse().find(e=>e<r);return i===void 0?null:{key:i,anchor:sc(i)}}function uc(e,t){return e.querySelector(t.deletion?`tr[data-before-line="${t.line}"]`:`tr[data-line="${t.line}"]`)}function dc(e){return(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number).map(sc)}function fc(e){if(!e)return;let t=Number(e.dataset.changePosition)||0;return(e.dataset.changeKeys??``).split(`,`).filter(Boolean).map(Number).includes(t)?sc(t):void 0}function pc(e,t){return Math.max(e,+!t)+1}var mc=8;function hc(e){for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t).overflowY;if(e===`auto`||e===`scroll`)return t}return null}function gc(e){let t=e.panel-e.scroller;return Math.max(340,Math.floor(e.pane-t-16))}function _c(e){let t=e.getBoundingClientRect().top;for(let n of e.querySelectorAll(`tr`)){let e=n.getBoundingClientRect();if(e.bottom>t)return{row:n,offset:e.top-t}}return null}function vc(e,t){let n=t.row.getBoundingClientRect().top-e.getBoundingClientRect().top-t.offset;e.scrollTop+=n}function yc(e){if(!e.hasAttribute(`data-expanded`))return;let t=hc(e),n=e.querySelector(`.prb-code-scroll`);if(!t||!n)return;let r=gc({pane:t.clientHeight,panel:e.offsetHeight,scroller:n.offsetHeight});e.style.setProperty(`--prb-code-expanded`,`${r}px`)}function bc(e){let t=e.querySelector(`[data-code-expand]`),n=e.querySelector(`.prb-code-scroll`);if(!t||!n)return;let r=e.hasAttribute(`data-expanded`);t.hidden=!r&&n.scrollHeight<=n.clientHeight,t.textContent=r?`Collapse`:`Expand`,t.setAttribute(`aria-expanded`,String(r))}var xc=!1;function Sc(){xc||(xc=!0,window.addEventListener(`resize`,()=>{for(let e of document.querySelectorAll(`.prb-code[data-expanded]`))yc(e)}))}function Cc(e,t){let n=e.querySelector(`.prb-code-scroll`),r=n?_c(n):null;t?(e.setAttribute(`data-expanded`,``),yc(e),Sc()):(e.removeAttribute(`data-expanded`),e.style.removeProperty(`--prb-code-expanded`)),bc(e),n&&r&&vc(n,r);let i=t?hc(e):null;i&&(i.scrollTop+=e.getBoundingClientRect().top-i.getBoundingClientRect().top-mc)}var wc={rb:`ruby`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,ts:`typescript`,mts:`typescript`,cts:`typescript`,jsx:`jsx`,tsx:`tsx`,json:`json`,yml:`yaml`,yaml:`yaml`,md:`markdown`,html:`html`,css:`css`,scss:`scss`,sql:`sql`,py:`python`,java:`java`,kt:`kotlin`,kts:`kotlin`,go:`go`,rs:`rust`,sh:`shellscript`,bash:`shellscript`,zsh:`shellscript`,tf:`terraform`,tfvars:`terraform`};function Tc(e){let t=e.slice(e.lastIndexOf(`/`)+1);if(t===`Dockerfile`||t.startsWith(`Dockerfile.`))return`docker`;let n=t.lastIndexOf(`.`);return n<=0?null:wc[t.slice(n+1).toLowerCase()]??null}function Ec(e){let t=new Set;for(let n of e){let e=Tc(n);e&&t.add(e)}return[...t]}var Dc={ruby:()=>v(()=>import(`./chunk-CAnKkQXq.js`),__vite__mapDeps([20,21,22,23,24,25,26,27,28,29,30])),javascript:()=>v(()=>import(`./chunk-D2pwppYQ.js`),__vite__mapDeps([31,22])),typescript:()=>v(()=>import(`./chunk-Cjc271yU.js`),__vite__mapDeps([32,27])),jsx:()=>v(()=>import(`./chunk-B2PgDgse.js`),__vite__mapDeps([33,25])),tsx:()=>v(()=>import(`./chunk-D95j_xjm.js`),__vite__mapDeps([34,28])),json:()=>v(()=>import(`./chunk-qhed-kSA.js`),[]),yaml:()=>v(()=>import(`./chunk-Cv3JjNkX.js`),__vite__mapDeps([35,30])),markdown:()=>v(()=>import(`./chunk-BYOwaDjH.js`),[]),html:()=>v(()=>import(`./chunk-EIJEcyW-.js`),__vite__mapDeps([36,23,21,22])),css:()=>v(()=>import(`./chunk-C3nvJp0N.js`),__vite__mapDeps([37,21])),scss:()=>v(()=>import(`./chunk-D2NZorQR.js`),__vite__mapDeps([38,21])),sql:()=>v(()=>import(`./chunk-NzFayA7r.js`),__vite__mapDeps([39,26])),python:()=>v(()=>import(`./chunk-gzcpVVnB.js`),[]),java:()=>v(()=>import(`./chunk-AdYjtsZU.js`),__vite__mapDeps([40,24])),kotlin:()=>v(()=>import(`./chunk-DhhofPvG.js`),[]),go:()=>v(()=>import(`./chunk-rLFTqkRN.js`),[]),rust:()=>v(()=>import(`./chunk-Cfkwpbl8.js`),[]),shellscript:()=>v(()=>import(`./chunk-pNSm1SyV.js`),__vite__mapDeps([41,29])),docker:()=>v(()=>import(`./chunk-IyjqRm3v.js`),[]),terraform:()=>v(()=>import(`./chunk-DswuEJGm.js`),[])},Oc=`github-light-default`,kc=null,Ac=new Map;function jc(){return kc??=Promise.all([v(()=>import(`./chunk-c-cg1wCO.js`),__vite__mapDeps([42,4])),v(()=>import(`./chunk-CBrdyqSx.js`),__vite__mapDeps([43,4])),v(()=>import(`./chunk-BXViO-2h.js`),[])]).then(([{createHighlighterCore:e},{createOnigurumaEngine:t},n])=>e({themes:[n.default],langs:[],engine:t(v(()=>import(`./chunk-BnjxR4X6.js`),[]))})).catch(()=>null),kc}function Mc(e){let t=Ac.get(e);return t||(t=jc().then(async t=>t?(await t.loadLanguage(Dc[e]),!0):!1).catch(()=>!1),Ac.set(e,t)),t.then(e=>e?jc():null)}var Nc={async preload(e){await Mc(e)},async tokenize(e,t){let n=await Mc(t);if(!n)return null;try{let{tokens:r,fg:i}=n.codeToTokens(e,{lang:t,theme:Oc}),a=i?.toLowerCase();return r.map(e=>e.map(e=>({content:e.content,...e.color&&e.color.toLowerCase()!==a?{color:e.color}:{}})))}catch{return null}}};function Pc(e,t=Nc){return Promise.all(e.map(e=>t.preload(e))).then(()=>void 0)}var Fc=/^#[0-9a-f]{3,8}$/i;function Ic(e,t){return!t||t.map(e=>e.content).join(``)!==e?null:t.map(e=>e.color&&Fc.test(e.color)?`<span style="color:${e.color}">${Zs(e.content)}</span>`:Zs(e.content)).join(``)}function Lc(e){return e.length>1e3?e.slice(0,Qs):e}function Rc(e,t,n){if(!e||t===``)return;let r=Ic(Lc(t),n);if(r===null)return;if(t.length<=1e3){if(e.childElementCount!==0||e.textContent!==t)return;e.innerHTML=r;return}let i=e.querySelector(`[data-full-line]`);i&&(e.innerHTML=`${r}… `,e.append(i))}async function zc(e,t,n=Nc){let r=Tc(t.path);if(!r){delete e.dataset.syntax;return}e.dataset.syntax=r;let i=e.querySelector(`tbody`);if(!i)return;let a=()=>i.isConnected&&e.querySelector(`tbody`)===i,o=await n.tokenize(t.lines.map(Lc).join(`
167
+ `),r);if(a()){o&&t.lines.forEach((e,n)=>{Rc(i.querySelector(`tr[data-line="${t.from+n}"] .prb-code-line`),e,o[n])});for(let e of t.deletions??[]){if(!i.querySelector(`tr[data-before-line="${e.beforeLine}"]`))continue;let t=await n.tokenize(e.lines.map(e=>Lc(e.text)).join(`
168
+ `),r);if(!a())return;if(!t)continue;let o=i.querySelector(`tr[data-before-line="${e.beforeLine}"]`)?.nextElementSibling;for(let[n,r]of e.lines.entries()){if(!o?.classList.contains(`prb-code-deleted`))break;Rc(o.querySelector(`.prb-code-line`),r.text,t[n]),o=o.nextElementSibling}}}}async function Bc(e,t=Nc){let n=e.closest(`.prb-code`)?.dataset.syntax,r=e.textContent??``;if(!n||!(n in Dc)||r===``)return;let i=await t.tokenize(r,n);if(!e.isConnected||e.childElementCount!==0||e.textContent!==r)return;let a=Ic(r,i?.[0]);a!==null&&i?.length===1&&(e.innerHTML=a)}var Vc=f({ownsRestore:!0}),Hc=document.body,Uc=Hc.dataset.apiBase??``,Wc=Hc.dataset.token??``,Gc=Hc.dataset.editorLabel??``,Kc=Hc.dataset.editorTemplate??``,qc=Hc.dataset.repoPath??``,Jc=Hc.dataset.explainPrompt??``,Yc=Hc.dataset.sessionId??``;function P(e){return`${Uc}${e}?t=${encodeURIComponent(Wc)}`}function F(e){fetch(P(`/event`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e),keepalive:!0}).catch(()=>{})}var Xc=qa({endpoint:P,showDiagrams:()=>R(`diagram`),showMap:()=>R(`map`),showChangeMap:e=>Zc.show(e)}),Zc=Jo({endpoint:P,showView:e=>R(e)}),Qc=Rs({endpoint:P}),$c=null,el=`the whole change`;function tl(e){let t=Qn(e,il),n=Vc.push(qn(t),t);nl++,al(t),n&&rl(t)}var nl=0;function rl(t){let n=(t.kind===`section`?document.querySelector(`.prb-rail [data-goto-section="${CSS.escape(t.sectionId)}"] .prb-rail-title`):document.querySelector(`.prb-rail [data-view-nav="${CSS.escape(t.view)}"] .prb-rail-title`))?.textContent?.trim();n&&e(document,n)}var I=null,il=document.querySelector(`[data-guide-start]`)?.dataset.guideStart??null;function al(e){let t=Qn(e,il);if(t!==e){let{kind:e,view:n,focus:r,...i}=re(history.state);Vc.replace(qn(t),{...i,...t})}let n=!I||!ar(I,t);I=t,n&&(t.kind===`view`?ul(t.view):ml(t.sectionId)),sl(t.focus??null)}var ol={history:{get state(){return history.state},pushState:(e,t,n)=>{nl++,Vc.push(n,re(e))},replaceState:(e,t,n)=>Vc.replace(n,re(e)),back:()=>history.back()},apply:al},L=le(document,{onOpen:e=>e.hasAttribute(`data-ask-buddy-menu`)?Fu(e):Iu(e),onClose:Iu});function sl(e){lr(document.querySelector(`.prb-body`),document,e),L.closeAll(),e===`buddy`&&nu()}function cl(e){I&&(I.focus===e?sr(I,ol):or(I,e,ol))}function R(e,t={}){let n=t.keepFocus&&I?.focus?e:Yn(e,I?.focus);tl({kind:`view`,view:e,...n?{focus:n}:{}})}function ll(e){tl({kind:`section`,sectionId:e,...I?.focus===`guide`?{focus:`guide`}:{}})}function ul(e){for(let t of document.querySelectorAll(`.prb-view`))t.hidden=t.dataset.view!==e;for(let t of document.querySelectorAll(`[data-view-nav]:not([role="tab"])`))t.setAttribute(`aria-current`,String(t.dataset.viewNav===e||(t.dataset.viewAlso??``).split(` `).includes(e)));e!==`architecture`&&F({event:`view_opened`,view:e}),e===`diagram`&&Xc.drawPane(),e===`map`&&Zc.layout(),e===`architecture`&&Qc.show(),dl(),document.querySelector(`.prb-doc`)?.scrollTo({top:0})}function dl(){Nr(),$c=null,el=`the whole change`,hl()}function fl(e,t){let n=document.getElementById(e.getAttribute(`aria-controls`)??``);n&&(e.setAttribute(`aria-expanded`,String(t)),e.setAttribute(`aria-label`,`${t?`Collapse`:`Expand`} ${e.dataset.railToggle??`this section`}`),n.hidden=!t)}function pl(){for(let e of document.querySelectorAll(`[data-rail-toggle]`)){let t=document.getElementById(e.getAttribute(`aria-controls`)??``);(t?.contains(document.getElementById(`prb-rail-path`))||t?.id===`prb-rail-path`)&&fl(e,!0)}}function ml(e){ul(`guide`),pl(),Mr(e);let t=Ar(e);if(!t)return;let n=document.querySelector(`[data-goto-section="${CSS.escape(e)}"]`);F({event:`theme_opened`,themeIndex:Number(n?.dataset.themeIndex??-1),attention:n?.querySelector(`.prb-attention`)?.dataset.attention??`medium`,isRecommendedStart:n?.dataset.recommendedStart===`true`}),$c=e,el=t.querySelector(`.pr-helper-guide-section-title`)?.textContent?.trim()??`this theme`,hl()}function hl(){let e=document.querySelector(`[data-ask-scope]`);e&&(e.textContent=el)}function z(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function gl(e){return e.tagName===`LI`?{parent:e,position:`beforeend`}:{parent:e,position:`afterend`}}async function _l(e){let t=e.tagName===`LI`?e.querySelector(`:scope > .prb-code`):e.nextElementSibling;if(t?.classList.contains(`prb-code`)){t.remove(),e.setAttribute(`aria-expanded`,`false`);return}let n=e.dataset.file;if(!n)return;let r=Number(e.dataset.line)||0,i=e.tagName!==`LI`,a=document.createElement(`div`);a.className=`prb-code`,a.innerHTML=`<p class="prb-code-status">Reading…</p>`;let{parent:o,position:s}=gl(e);o.insertAdjacentElement(s,a),e.setAttribute(`aria-expanded`,`true`),F({event:`file_opened`,fromFinding:i,targeted:r>0}),await yl(a,n,{cited:r,centre:r,expand:0,position:r?2*r:0})}var vl=Hr();function yl(e,t,n){return vl.run(e,n,async()=>{try{let{centre:r,expand:i}=n,a=`&path=${encodeURIComponent(t)}${r?`&line=${r}`:``}${i?`&expand=${i}`:``}`,o=await fetch(`${P(`/file`)}${a}`),s=await o.json();return o.ok?()=>bl(e,s,n):()=>{e.innerHTML=`<p class="prb-code-status">${z(s?.error??`Could not read that file.`)}</p>`}}catch{return()=>{e.innerHTML=`<p class="prb-code-status">Could not reach PR Review Buddy. The workspace server may have stopped.</p>`}}})}function bl(e,t,n){let{cited:r,centre:i,expand:a}=n;e.dataset.cited=String(r),e.dataset.centre=String(i),e.dataset.expand=String(a),e.dataset.position=String(n.position);let o=nc(t,r),s=Kc&&qc?t.checkout===`absent`?`<button type="button" class="prb-code-open" disabled>Not in your working folder</button>`:`<button type="button" class="prb-code-open" data-open-editor="${z(t.path)}" data-open-line="${r||t.from}">${z(`Open in ${Gc||`editor`}`)}</button>`:``,c=t.pullRequest&&t.pullRequest.precise?`<a class="prb-code-open prb-code-pr" href="${z(t.pullRequest.href)}" target="_blank" rel="noopener noreferrer">${z(t.pullRequest.label)}</a>`:``,l=t.truncated?`<button type="button" class="prb-code-more" data-expand-file="${z(t.path)}" data-expand-line="${i||0}" data-expand-cited="${r||0}" data-expand-step="${pc(a,i)}">Show more of this file</button>`:``,u=t.checkout===`differs`?` · your editor will show a different version`:t.checkout===`absent`?` · not in your working folder`:``,d=t.changes===`unavailable`?` · change details unavailable`:``,f=`<div class="prb-code-source"><span>${t.source===`commit`?`Viewing reviewed version${t.sourceSha?` <code>${z(t.sourceSha.slice(0,7))}</code>`:``}${u}${d}`:`Viewing your working folder${d}`}</span>${cc(t.changeAnchors??[],n.position)}</div>`,ee=e.hasAttribute(`data-expanded`),te=`<button type="button" class="prb-code-open" data-code-expand aria-expanded="${ee}">${ee?`Collapse`:`Expand`}</button>`;e.innerHTML=`<div class="prb-code-header">
166
169
  <span class="prb-code-range">lines ${t.from}\u2013${t.to} of ${t.totalLines}</span>
167
170
  ${c}
168
171
  ${s}
@@ -170,7 +173,7 @@ import{B as e,D as t,E as n,F as r,G as i,H as a,I as o,K as s,L as c,N as l,P a
170
173
  </div>
171
174
  ${f}
172
175
  <div class="prb-code-scroll"><table class="prb-code-table"><tbody>${o}</tbody></table></div>
173
- ${l}`,Ws(e,t),ac(e),oc(e),(n.focus?Xs(e,n.focus):e.querySelector(`.prb-code-target`))?.scrollIntoView({block:`center`}),Tc(e,t)}async function al(e,t,n){let r=Ys(t,n);if(!r)return;let i=Xs(e,r.anchor);if(i)t.outerHTML=Js(Zs(t),r.key),i.scrollIntoView({block:`center`});else{let t=e.querySelector(`[data-expand-file]`);if(!t?.dataset.expandFile)return;await rl(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 ol(e,t,n){let r=`${jc.replace(/\/$/,``)}/${e}`,i=Ac.replace(`{path}`,r).replace(`{line}`,String(Math.max(1,t)));n!==null&&I({event:`editor_opened`,fromFinding:n}),window.location.href=i}var V=document.querySelector(`[data-ask-log]`);V&&V.querySelector(`.prb-msg`)&&V.scrollTo({top:V.scrollHeight});var sl=document.querySelector(`[data-ask-form]`),H=sl?.querySelector(`textarea`);function cl(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=Ke(t)+vt(t)):n.textContent=t,V?.appendChild(n),V?.scrollTo({top:V.scrollHeight}),n}function ll(){let e=document.createElement(`div`);return e.className=`prb-thinking`,e.innerHTML=`<i></i><i></i><i></i><span>Reading the change…</span>`,V?.appendChild(e),V?.scrollTo({top:V.scrollHeight}),e}var U=null,ul=!!V?.querySelector(`[data-ask-pending]`);function dl(){let e=document.createElement(`div`);e.className=`prb-stopped`,e.textContent=`Stopped.`,V?.appendChild(e),V?.scrollTo({top:V.scrollHeight})}async function fl(e,t=`free_text`){let n=e.trim();if(!n||U||ul)return;document.querySelector(`.prb-ask-empty`)?.remove(),cl(`user`,n);let r=ll();U=new AbortController,ml(!0);try{let e=await fetch(F(`/ask`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({question:n,sectionId:Lc,source:t}),signal:U.signal}),i=await e.json().catch(()=>null);if(e.status===409&&(i?.running||i?.updating)){pl(n),window.location.reload();return}if(r.remove(),i?.stopped){dl();return}if(!e.ok||!i?.answer){cl(`error`,i?.error??`Buddy AI did not answer. Check the terminal running PR Review Buddy.`);return}cl(`assistant`,i.answer)}catch(e){r.remove(),e instanceof DOMException&&e.name===`AbortError`?(dl(),pl(n)):(cl(`error`,`Could not reach PR Review Buddy. The workspace server may have stopped.`),pl(n))}finally{U=null,ml(!1)}}function pl(e){!H||H.value||(H.value=e,Ld?.save())}function ml(e){let t=sl?.querySelector(`button`);t&&(t.textContent=e?`Stop`:`Ask`,t.toggleAttribute(`data-stop`,e),t.disabled=!1);for(let t of document.querySelectorAll(hl))t.disabled=e;e&&R.closeAll(),e||H?.focus()}var hl=`[data-suggestion], .pr-helper-explain-simply-button`;function gl(){let e=sl?.querySelector(`button`);e&&(e.textContent=`Stopping…`,e.disabled=!0),fetch(F(`/stop`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({kind:`ask`})}).catch(()=>{}).finally(()=>{U?.abort()})}sl?.addEventListener(`submit`,e=>{if(e.preventDefault(),U||ul)return gl();let t=H?.value??``;H&&(H.value=``),Ld?.clear(),fl(t,vl(t))}),ul&&ml(!0);var _l=null;function vl(e){return _l&&e.includes(_l.text)?_l.source:`free_text`}H?.addEventListener(`keydown`,e=>{if(e.key===`Enter`&&!e.shiftKey){if(e.preventDefault(),U||ul)return;sl?.requestSubmit()}}),H?.addEventListener(`input`,()=>{H&&(H.style.height=`auto`,H.style.height=`${Math.min(H.scrollHeight,140)}px`)});async function yl(e){try{await fetch(F(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({answeredQuestionIds:e})})}catch{}}function bl(){return[...document.querySelectorAll(`[data-question-answered][data-answered="true"]`)].map(e=>e.dataset.questionAnswered??``).filter(Boolean)}function xl(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&&Dl(n,t,`questions`),Nl()}function Sl(){return[...document.querySelectorAll(`[data-issue-dismissed][data-dismissed="true"]`)].map(e=>({id:e.dataset.issueDismissed??``,sessionId:e.dataset.dismissedIn||Nc})).filter(e=>e.id)}async function Cl(e){try{await fetch(F(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissedIssues:e})})}catch{}}function wl(e,t){e.dataset.dismissed=String(t),e.textContent=t?`Reopen`:`Dismiss`,delete e.dataset.stale,t?e.dataset.dismissedIn=Nc: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(Tl()),Dl(n,t||e.dataset.settled===`true`,`issues`),Fl())}function Tl(){let e=document.createElement(`span`);return e.className=`pr-helper-finding-status pr-helper-finding-status-dismissed pr-helper-tip`,e.dataset.tip=mr,e.textContent=`Dismissed by you`,e}var El=new WeakMap;function Dl(e,t,n){let r=e.closest(`.pr-helper-closed-findings-list`);if(t!==!!r){if(t){let t=e.parentElement;t&&El.set(e,{parent:t,before:e.nextElementSibling}),jl(n).append(e),t&&Al(t)}else Ol(e,n),(r?.children.length===0?r.closest(`.pr-helper-closed-findings`):null)?.remove();Ml(n)}}function Ol(e,t){let n=El.get(e);if(n?.parent.isConnected)n.parent.insertBefore(e,n.before);else{let n=kl(e)??document.querySelector(`[data-view="${t}"]`);n?.insertBefore(e,n.querySelector(`.pr-helper-closed-findings`))}e.closest(`.pr-helper-question-group`)?.removeAttribute(`hidden`)}function kl(e){let t=e.dataset.sectionId;return t?document.querySelector(`[data-question-group="${CSS.escape(t)}"]`):null}function Al(e){let t=e.closest(`.pr-helper-question-group`);t&&!t.querySelector(`[data-finding-card]`)&&(t.hidden=!0)}function jl(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 Ml(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;if(t.toggleAttribute(`data-nothing-open`,r===i),e===`questions`){n.textContent=`Answered (${i})`;return}n.textContent=_r(Pl())}function Nl(){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=vr(e.length,t)),Il(`questions`,e.length,t,`question`,`answered`)}function Pl(){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 Fl(){let e=Pl();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=gr(e.total,e.open,tr(e))),Il(`issues`,e.total,e.open,`issue`,tr(e))}function Il(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){Xc(n,n.getAttribute(`aria-expanded`)!==`true`);return}let r=t.closest(`a[data-view-nav], a[data-goto-section]`);if(r&&!ee(e))return;r&&e.preventDefault();let i=t.closest(`[data-view-nav]`);if(i?.dataset.viewNav){z(i.dataset.viewNav);return}let a=t.closest(`[data-author-context-toggle]`);if(a){cr(a);return}let o=t.closest(`[data-author-context-reveal]`);if(o){pr(o);return}let s=t.closest(`[data-overview-nav]`);if(s?.dataset.overviewNav){z(s.dataset.overviewNav===`guide`?`guide`:s.dataset.overviewNav);return}let c=t.closest(`[data-goto-section]`);if(c?.dataset.gotoSection){qc(c.dataset.gotoSection);return}let l=t.closest(`[data-open-editor]`);if(l?.dataset.openEditor){ol(l.dataset.openEditor,Number(l.dataset.openLine)||1,!l.closest(`[data-architecture]`)||null);return}let u=t.closest(`[data-deletion-toggle]`);if(u){Us(u);return}let d=t.closest(`[data-code-expand]`);if(d){let e=d.closest(`.prb-code`);e&&lc(e,!e.hasAttribute(`data-expanded`));return}let f=t.closest(`[data-change-step]`);if(f){let e=f.closest(`[data-change-navigator]`),t=f.closest(`.prb-code`);e&&t&&!f.disabled&&al(t,e,f.dataset.changeStep===`previous`?`previous`:`next`);return}let te=t.closest(`[data-full-line]`);if(te){let e=Gs(te);e&&Ec(e);return}let p=t.closest(`[data-expand-file]`);if(p?.dataset.expandFile){let e=p.closest(`.prb-code`);if(e){let t=e.querySelector(`[data-change-navigator]`);rl(e,p.dataset.expandFile,{cited:Number(p.dataset.expandCited)||0,centre:Number(p.dataset.expandLine)||0,expand:Number(p.dataset.expandStep)||1,position:Number(t?.dataset.changePosition)||0,focus:Qs(t)})}return}let m=t.closest(`[data-focus-toggle]`);if(m?.dataset.focusToggle){Kc(m.dataset.focusToggle);return}let ne=t.closest(`[data-prompt-toggle]`);if(ne){uu(ne.getAttribute(`aria-expanded`)===`true`);return}if(t.closest(`[data-ask-buddy-menu]`))return;let re=t.closest(`[data-file]`);if(re?.dataset.file){tl(re);return}let ie=br(t);if(ie){qc(ie);return}let ae=t.closest(`[data-question-answered]`);if(ae?.dataset.questionAnswered){xl(ae,ae.dataset.answered!==`true`),ir(ae);let e=bl();yl(e),I({event:`question_marked_answered`,answered:e.length,total:document.querySelectorAll(`[data-question-answered]`).length});return}let h=t.closest(`[data-issue-dismissed]`);if(h?.dataset.issueDismissed){wl(h,h.dataset.stale===`true`||h.dataset.dismissed!==`true`);let e=Sl();Cl(e),I({event:`issue_dismissed`,dismissed:e.length,total:document.querySelectorAll(`[data-issue-dismissed]`).length});return}let oe=t.closest(`[data-suggestion]`);if(oe){fl(oe.textContent??``,`suggestion`);return}if(t.closest(`.pr-helper-explain-simply-button`)){Vl(),fl(Mc,`explain_simply`);return}let g=t.closest(`[data-prompt-use]`);if(g?.dataset.promptUse){du(g.dataset.promptUse);return}let _=t.closest(`[data-prompt-edit]`);if(_?.dataset.promptEdit){ku(_.dataset.promptEdit);return}if(t.closest(`[data-prompt-add]`)){ku(``);return}if(t.closest(`[data-ask-toggle]`)){let e=L?.focus;e?(Xn(L,Wc),zl(e!==`buddy`)):zl(!Rl())}});var W=document.querySelector(`.prb-body`),Ll=document.querySelector(`.prb-ask`);function Rl(){return!!Ll&&getComputedStyle(Ll).display!==`none`}function zl(e){W&&(W.dataset.ask=e?`open`:`closed`),Bl(e)}function Bl(e){for(let t of document.querySelectorAll(`[data-ask-toggle]`))t.setAttribute(`aria-expanded`,String(e))}function Vl(){L?.focus&&L.focus!==`buddy`&&Xn(L,Wc),zl(!0)}function Hl(){Bl(Rl())}window.addEventListener(`resize`,Hl),ae(F(`/restart`));var Ul=document.querySelector(`[data-file-filter]`),Wl=document.querySelector(`[data-file-count]`),Gl=document.querySelector(`[data-file-none]`);function Kl(){let e=(Ul?.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}`}Gl&&(Gl.hidden=n>0),Wl&&(Wl.textContent=e?`${t} of ${ql} file${ql===1?``:`s`}`:`${ql} file${ql===1?``:`s`}`)}var ql=document.querySelectorAll(`[data-view="files"] .prb-file:not(.prb-file-referenced)`).length;Ul?.addEventListener(`input`,Kl),Ul?.addEventListener(`keydown`,e=>{e.key===`Escape`&&Ul.value!==``&&(e.preventDefault(),Ul.value=``,Kl())}),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(),tl(n))});var Jl=320,Yl=()=>Math.round(window.innerWidth/2),Xl=e=>Math.round(Math.min(Yl(),Math.max(Jl,e)));function Zl(e){W&&(e===null?W.style.removeProperty(`--ask-width`):W.style.setProperty(`--ask-width`,`${e}px`))}function Ql(){return Ll?Math.round(Ll.getBoundingClientRect().width):Jl}function $l(e){fetch(F(`/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||!Ll)return;e.preventDefault(),G.setPointerCapture(e.pointerId),W.dataset.resizing=`true`;let t=e.clientX,n=Ql(),r=e=>{Zl(Xl(n+(t-e.clientX)))},i=()=>{G.removeEventListener(`pointermove`,r),G.removeEventListener(`pointerup`,i),G.removeEventListener(`pointercancel`,i),delete W.dataset.resizing,$l(Ql())};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=Xl(Ql()+n);Zl(r),$l(r);return}(e.key===`Home`||e.key===`Escape`)&&(e.preventDefault(),Zl(null),$l(null))}),G?.addEventListener(`dblclick`,()=>{Zl(null),$l(null)}),window.addEventListener(`resize`,()=>{Rl()&&W?.style.getPropertyValue(`--ask-width`)&&Zl(Xl(Ql()))});var eu=3e4,tu=document.visibilityState===`visible`?Date.now():null,nu=0;function ru(){tu!==null&&(nu+=Date.now()-tu,tu=Date.now())}function iu(){ru();let e=Math.round(nu/1e3);return nu-=e*1e3,e}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`?tu=Date.now():(ru(),tu=null)}),setInterval(()=>{let e=iu();e>0&&I({event:`workspace_heartbeat`,visibleSeconds:e})},eu),window.addEventListener(`pagehide`,()=>{let e=F(`/event`),t=JSON.stringify({event:`review_completed`,trailingSeconds:iu()});navigator.sendBeacon?.(e,new Blob([t],{type:`application/json`}))||fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:t,keepalive:!0}).catch(()=>{})});var au=document.querySelector(`[data-prompt-bank]`),ou=document.querySelector(`[data-prompt-list]`),K=su();function su(){try{let e=JSON.parse(au?.dataset.prompts??`[]`);return Array.isArray(e)?e:[]}catch{return[]}}function cu(){if(!ou)return;ou.innerHTML=K.map(e=>`<span class="prb-bank-item">
174
- <button type="button" class="prb-bank-use" data-prompt-use="${B(e.id)}" title="${B(e.prompt)}">${B(e.name)}</button>
175
- <button type="button" class="prb-bank-edit" data-prompt-edit="${B(e.id)}" aria-label="Edit ${B(e.name)}">&#9998;</button>
176
- </span>`).join(``);let e=document.querySelector(`[data-prompt-count]`);e&&(e.textContent=String(K.length)),_u()}async function lu(e){try{let t=await(await fetch(F(`/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{}cu()}function uu(e){document.querySelector(`[data-prompt-toggle]`)?.setAttribute(`aria-expanded`,String(!e)),au?.toggleAttribute(`data-collapsed`,e),ou&&(ou.hidden=e),fetch(F(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({promptsCollapsed:e})}).catch(()=>{})}function du(e){let t=K.find(t=>t.id===e);!t||!H||(H.value=Cr(H.value,t.prompt),Vl(),H.focus(),H.setSelectionRange(H.value.length,H.value.length),H.dispatchEvent(new Event(`input`)))}var fu=document.querySelector(`.prb-doc`),pu=null,mu=null;function hu(){V&&(mu?.(),mu=vn(V,{layout:`flat`,actions:xn.map(e=>({id:e.id,label:e.label})),onChoose:(e,t)=>vu(e,`selection`,t)}))}function gu(){return[...yn.map(e=>({id:e.id,label:e.label})),...K.map(e=>({id:Dn(e.id),label:e.name,section:En}))]}function _u(){fu&&(pu?.(),pu=vn(fu,{triggerLabel:`Ask Buddy AI`,actions:gu(),ignoreWithin:`[data-ask-buddy-menu]`,onChoose:(e,t)=>vu(e,`selection`,t)}))}function vu(e,t,n){er(e,{context:t,text:n},{savedPrompt:e=>K.find(t=>t.id===e)?.prompt??null,stage:e=>yu(e,t),send:e=>{Vl(),fl(e,`finding`)}})}function yu(e,t){H&&(_l={text:e,source:t},H.value=Cr(H.value,e),Vl(),H.focus(),H.setSelectionRange(H.value.length,H.value.length),H.dispatchEvent(new Event(`input`)))}function bu(e){let t=e.querySelector(`[data-menu-panel]`);if(t){t.innerHTML=cn(gu());for(let e of t.querySelectorAll(`[data-selection-action]`))e.setAttribute(`role`,`menuitem`);if(U||ul)for(let e of t.querySelectorAll(`button`))e.disabled=!0}}function xu(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=kn(n);R.close(n),i&&vu(r,`finding`,i)}),_u(),hu();var q=aa({root:document,showView:e=>z(e)}),Su=ua({doc:document,pane:()=>document.querySelector(`.prb-doc`),openMenu:(e,t)=>R.open(e,{focusFirst:!0,returnFocus:t}),selecting:()=>q.state().selecting,flip:e=>void q.flip(e)});jt(document),Gt(document);var Cu=document.querySelector(`[data-prompt-dialog]`),wu=document.querySelector(`[data-prompt-name]`),Tu=document.querySelector(`[data-prompt-text]`),Eu=document.querySelector(`[data-prompt-delete]`),Du=document.getElementById(`prb-prompt-title`),Ou=``;function ku(e){let t=K.find(t=>t.id===e);Ou=t?.id??``,Du&&(Du.textContent=t?`Edit prompt`:`Save a prompt`),wu&&(wu.value=t?.name??``),Tu&&(Tu.value=t?.prompt??``),Eu&&(Eu.hidden=!t),Cu?.showModal(),wu?.focus()}async function Au(){let e=wu?.value.trim()??``,t=Tu?.value.trim()??``;if(!e||!t){(e?Tu:wu)?.focus();return}let n=Ou?K.map(n=>n.id===Ou?{...n,name:e,prompt:t}:n):[...K,{id:crypto.randomUUID(),name:e,prompt:t}];Cu?.close(),await lu(n)}async function ju(){if(!Ou)return;let e=K.filter(e=>e.id!==Ou);Cu?.close(),await lu(e)}document.querySelector(`[data-prompt-cancel]`)?.addEventListener(`click`,()=>Cu?.close()),Eu?.addEventListener(`click`,()=>void ju()),document.querySelector(`[data-prompt-save]`)?.addEventListener(`click`,()=>void Au());var J=document.querySelector(`[data-fresh-region]`),Y=document.querySelector(`[data-fresh-status]`),Mu=document.querySelector(`[data-fresh-check]`),X=Uu(J?.dataset.report),Nu=`prb-fresh-reopen`,Pu=zu(),Fu=J?.dataset.dismissedSha,Iu=Ru(J?.dataset.availability),Z=Lu(J?.dataset.remote);function Lu(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function Ru(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function zu(){try{return sessionStorage.getItem(Nu)!==null&&(sessionStorage.removeItem(Nu),!0)}catch{return!1}}Pu&&od(),Mu?.addEventListener(`click`,()=>void qu());var Bu=document.querySelector(`[data-fetch-remote]`);Bu&&(fetch(F(`/fetch`)).then(e=>e.ok?e.json():null).then(e=>{e?.fetchable===!0&&(Bu.hidden=!1)}).catch(()=>{}),Bu.addEventListener(`click`,()=>void Vu(Bu)));async function Vu(e){if(e.disabled)return;e.disabled=!0;let t=null;try{let e=await fetch(F(`/fetch`),{method:`POST`});e.ok&&(t=await e.json())}catch{}e.disabled=!1;let n=t??{repositories:1,fetched:0,failed:[],moved:0};ne(re(),{kind:n.fetched<n.repositories?`failed`:`ready`,text:se(n)}),n.fetched>0&&await qu()}J?.addEventListener(`click`,e=>{let t=e.target;if(t.closest(`[data-fresh-close]`))return Pu=!1,od();let n=t.closest(`[data-fresh-dismiss]`);n&&(Fu=n.dataset.freshDismiss||void 0,Pu=!1,od(),Hu())});function Hu(){fetch(F(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissFreshnessSha:Fu??null})}).catch(()=>{})}function Uu(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}var Wu=Ji(),Gu=!1,Ku=null;async function qu(){if(Gu)return;Gu=!0,$u(!0),Ku&&await Ku;let e=ed(X,Z),t=await Yu(!1);$u(!1),t&&ad(),Gu=!1,t&&(X?.code.state===`changed`||Z!==null)&&Fu!==void 0&&(Fu=void 0,Hu()),od(),Ju(t?ed(X,Z)===e?`No change`:`Updated`:`Could not check`)}function Ju(e){Y&&(Y.textContent=e,window.setTimeout(sd,2600))}async function Yu(e){let t=Wu.snapshot();try{let n=await(await fetch(`${F(`/freshness`)}${e?`&quiet=1`:``}`)).json();X=n.report??null,Iu=n.availability??null,Z=n.remote??null,nd=n.kiss??null,n.kissDismissedSha!==void 0&&(rd=n.kissDismissedSha??void 0),n.prState!==void 0&&Qu(n.prState);let r=qi(n.standing);return r&&Wu.current(t)&&zi(document,r),!0}catch{return!1}}async function Xu(){if(Gu||Ku||!J)return;let e=ed(X,Z),t=JSON.stringify(nd);Ku=Yu(!0);let n=await Ku;Ku=null,Zu=Date.now(),n&&(ed(X,Z)!==e&&od(),JSON.stringify(nd)!==t&&ad())}var Zu=Date.now();function Qu(e){let t=document.querySelector(`[data-pr-state-slot]`);if(!t)return;let n=Ri(e,t.hasAttribute(`data-beside-number`));t.innerHTML!==n&&(t.innerHTML=n)}function $u(e){Mu&&(Mu.disabled=e),Y&&e&&(Y.textContent=`Checking…`,Y.dataset.state=`checking`)}function ed(e,t){if(!e)return JSON.stringify({report:`none`,remote:t});let{checkedAt:n,...r}=e;return JSON.stringify({...r,remote:t})}var td=document.querySelector(`[data-kiss-fresh-region]`),nd=id(td?.dataset.freshness),rd=td?.dataset.dismissedSha;function id(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function ad(){ji(nd?.state===`changed`),td&&(td.innerHTML=Ci(td.dataset.reviewedSha??``,nd,{dismissedSha:rd,actions:Oc!==``}))}td?.addEventListener(`click`,e=>{let t=e.target.closest(`[data-kiss-freshness-dismiss]`);t&&(rd=t.dataset.kissFreshnessDismiss||void 0,ad(),fetch(F(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissKissFreshnessSha:rd??null})}).catch(()=>{}))});function od(){J&&(J.innerHTML=Xr(X,{dismissedSha:Fu,open:Pu,actions:Oc!==``,availability:Iu,remote:Z}),sd())}function sd(){if(Y&&(X||Z)){let{label:e,state:t}=Jr(X,Z);Y.textContent=e,Y.dataset.state=t,si(document,t)}}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-copy-command]`);if(n)return cd(n);let r=t.closest(`[data-notice-dismiss]`);if(r){r.closest(`[data-notice]`)?.remove(),fetch(F(`/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 ud(i);if(t.closest(`[data-review-update]`))return void md();let a=t.closest(`[data-update-cancel]`);if(a)return void gd(a,`update`);let o=t.closest(`[data-review-cancel]`);if(o)return void gd(o,`review`);t.closest(`[data-update-close]`)&&document.querySelector(`[data-update-result]`)?.remove()});function cd(e){let t=e.dataset.copyCommand??``;navigator.clipboard?.writeText(t).then(()=>ld(e,`Copied`),()=>ld(e,`Select it`))}function ld(e,t,n=1400){let r=e.textContent;e.textContent=t,setTimeout(()=>{e.textContent=r},n)}async function ud(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=dd(n);t?t.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Re-checking the conversation, ${e}s. ${yd}`:n.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Checking… ${e}s`}};r();let i=window.setInterval(r,1e3),a=dd(e)?null:bd(e);try{await fetch(F(`/refresh`),{method:`POST`})}catch{}finally{window.clearInterval(i),a?.remove()}dd(e)&&fd(),window.location.reload()}function dd(e){return e.closest(`.prb-fresh-notes p`)}function fd(){try{sessionStorage.setItem(Nu,`1`)}catch{}}var pd=!1;async function md(){if(pd)return;pd=!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(F(`/job`))).json();e.update&&e.update.phase!==`none`&&!di(e.update.phase)&&n()}catch{}},500);try{await fetch(F(`/update`),{method:`POST`})}catch{}n()}var hd={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 gd(e,t){let n=hd[t],r=(t===`review`?e.dataset.reviewCancel:e.dataset.updateCancel)??``;e.disabled=!0,e.textContent=`Cancelling…`;let i;try{let e=await fetch(F(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,vd(e,`The workspace server did not answer, so nothing was cancelled. Try again.`);return}i||vd(e,n.tooLate),await wa({look:async()=>{let e=await fetch(F(`/job`),{signal:AbortSignal.timeout(_d)});return n.running(await e.json())},reload:()=>window.location.reload()})}var _d=3e3;function vd(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 yd=`Fetching the latest threads from your pull request. This usually takes under a minute.`;function bd(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=yd,t.appendChild(n),n}var xd=ya(document),Sd=null,Cd=Date.now();function wd(){Sd===null&&(Sd=window.setTimeout(()=>{Sd=null,Td()},ce(Date.now()-Cd)))}async function Td(){try{let e=await(await fetch(F(`/job`))).json();if(ul&&!e.ask||Dd&&!e.diagram){window.location.reload();return}let t={job:e,kiss:e.kiss,update:e.update};for(let[e,n]of xd){let r=t[e];if(r){if(ba(e,r,document)){window.location.reload();return}e===`update`||n.matches(`[data-progress-pane]`)?(Sa(n,r.phase,r.progress),Ca(n)):Ed(n,r.progress)}}}catch{}wd()}function Ed(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 Dd=document.querySelector(`[data-diagram-running]`)!==null;(xd.size>0||ul||Dd)&&(Cd=Date.now(),wd());function Od(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 kd(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…`,kd(t),fetch(F(`/retry`),{method:`POST`}).then(e=>{if(!e.ok)throw Error(`refused`);Cd=Date.now(),wd()}).catch(()=>{t.disabled=!1,t.textContent=`Retry`,Od(t)}))}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-run-review-again]`);t&&(t.disabled=!0,t.textContent=`Starting…`,fetch(F(`/reanalyse`),{method:`POST`}).then(e=>{if(!e.ok)throw Error(`refused`);location.reload()}).catch(()=>{t.disabled=!1,t.textContent=nr,ld(t,`Could not start. Try again`,2500)}))});var Ad={send:async e=>{let t=await fetch(F(`/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)=>{Il(`kiss`,e,t,`recommendation`,`decided`),Il(`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){Ei(r,Ti(n),Ad);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(F(`/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 jd=document.body.dataset.defaultView||`overview`;window.addEventListener(`popstate`,e=>{let t=Un(e.state)??Wn(window.location.hash)??{kind:`view`,view:jd},n=!L||!Jn(L,t);Uc(t),n&&Vc(t),Id()});var Md=Wn(window.location.hash);Md?Uc(Md):(L={kind:`view`,view:jd},N.replace(``,L));var Nd={doc:document,main:document.querySelector(`main.prb-doc`),rail:document.querySelector(`.prb-rail`),log:V,panes:W};N.setCapturer(()=>Lr(Nd));async function Pd(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=Tr(e),s=o?nl.pending(o):void 0;if(!o||!Ar(s?s.request:Or(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}=el(e);t.insertAdjacentElement(n,o),e.setAttribute(`aria-expanded`,`true`)}if(!await rl(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`)&&lc(o,a.tall),t&&kr(o,t.top,t.offset))}function Fd(e){Tr(e)?.remove(),e.setAttribute(`aria-expanded`,`false`)}async function Id(){let e=++Bc,t=()=>Bc===e;await Rr(Nd,N.current().ui,{setFold:Xc,setAsk:zl,openPanel:(e,n)=>Pd(e,n,t),closePanel:Fd,stillCurrent:t})}Id();var Ld=H?Hr(H,{storage:(()=>{try{return window.sessionStorage}catch{return null}})(),path:window.location.pathname,restore:!0,win:window}):null;Hl(),$c();var Rd=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=>{Rd(e.target)}),document.addEventListener(`keydown`,e=>{if(e.key!==`Escape`)return;let t=document.querySelector(`[data-analysis-details][open], [data-range-details][open]`);t&&(Rd(),t.querySelector(`summary`)?.focus())});var Q=document.querySelector(`.prb-header [data-menu]`),$=Xi({root:document,post:(e,t)=>fetch(F(e),t===void 0?{method:`POST`}:{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),gate:Wu,checkForUpdates:()=>qu()});function zd(e){if(!Q)return;let t=Q.querySelector(`[data-menu-panel]`);t?.hidden&&R.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 Bd(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 R.closeAll();zd(n.error)}}function Vd(e){return Q?.querySelector(`[data-menu-items] ${e}`)??null}function Hd(e={}){if(!Q)return;Q.querySelector(`[data-menu-panel]`)?.hidden&&R.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]`),t=()=>xu(Q);Q.addEventListener(`click`,e=>{let n=e.target,a=n?.closest(`[data-copy-id]`);if(a?.dataset.copyId){e.stopPropagation(),_(a,a.dataset.copyId);return}let o=n?.closest(`[data-pin-toggle]`);if(o){e.stopPropagation(),r(o);return}if(n?.closest(`[data-fresh-check], [data-fetch-remote]`)){R.closeAll();return}let s=n?.closest(`[data-mark-status]`);if(s){e.stopPropagation(),Bd(()=>$.setComplete(s.dataset.markStatus===`complete`),s);return}let c=n?.closest(`[data-lifecycle-set]`);if(c){e.stopPropagation(),Bd(()=>$.setLifecycle(c.dataset.lifecycleSet),c);return}let l=n?.closest(`[data-queue-action]`);if(l){e.stopPropagation(),Bd(()=>$.setQueued(l.dataset.queueAction===`remove`?`remove`:`add`),l);return}if(n?.closest(`[data-delete]`)){e.stopPropagation(),Hd();return}if(n?.closest(`[data-cancel-delete]`)){e.stopPropagation(),t();return}n?.closest(`[data-confirm-delete]`)&&(e.stopPropagation(),i())});let r=async e=>{let t=e.getAttribute(`aria-pressed`)!==`true`;e.disabled=!0;let r=null;try{let e=await fetch(F(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({pinned:t})});e.ok&&(r=(await e.json()).pinned===!0)}catch{}if(e.disabled=!1,r===null){e.textContent=t?`Could not pin`:`Could not unpin`,window.setTimeout(()=>{e.textContent=n(e.getAttribute(`aria-pressed`)===`true`)},1600);return}e.setAttribute(`aria-pressed`,String(r)),e.textContent=n(r)},i=async()=>{e&&(e.disabled=!0,e.textContent=`Deleting`);let{error:n}=await $.deleteReview();if(n===null)return void window.location.replace(`/`);e&&(e.disabled=!1,e.textContent=`Delete`),t(),zd(n)}}function Ud(e){return{available:()=>document.querySelector(`.prb-rail a[data-view-nav="${e}"]`)!==null,run:()=>z(e,{keepFocus:!0})}}function Wd(){if(!L)return null;let e=L.focus??(L.kind===`section`?`guide`:L.view);return Mn.includes(e)&&document.querySelector(`[data-focus-toggle="${e}"]`)?e:null}function Gd(){return[...document.querySelectorAll(`.prb-view:not([hidden]) [data-feedback-select]`)].some(e=>e.checkVisibility())}h(`review`,{...Su.commands,...sa(q,document),"review.section.review":{available:()=>fa(document)!==null,run:()=>{let e=fa(document);e&&z(e,{keepFocus:!0})}},"review.section.kiss":Ud(`kiss`),"review.section.issues":Ud(`issues`),"review.section.diagrams":Ud(`map`),"review.section.questions":Ud(`questions`),"review.section.files":Ud(`files`),"review.buddy.open":{available:()=>Ll!==null,run:()=>{L?.focus?Yn(L,`buddy`,Wc):zl(!0),document.querySelector(`[data-ask-form] textarea`)?.focus()}},"review.buddy.prompt":{available:()=>Ll!==null&&H!==null,panel:ga({prompts:()=>K,choose:du})},"review.focus.toggle":{available:()=>Wd()!==null,run:()=>{let e=Wd();e&&Kc(e)}},"review.leave":{available:e=>!!(e&&Zn(e,document,e.target===H||q.state().selecting||!!L?.focus)),run:e=>{H&&e?.target===H?H.blur():q.state().selecting?q.exit():L?.focus&&Xn(L,Wc)}},"review.feedback.toggle":{available:()=>q.state().selecting||Gd(),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 Bd(()=>$.setComplete(!0),Vd(`[data-mark-status]`))},"review.mark.waiting":{available:()=>$.offer().waiting,run:()=>void Bd(()=>$.setLifecycle(`waiting`),Vd(`[data-lifecycle-set="waiting"]`))},"review.mark.done":{available:()=>$.offer().done,run:()=>void Bd(()=>$.setLifecycle(`done`),Vd(`[data-lifecycle-set="done"]`))},"review.queue.toggle":{available:()=>$.offer().queue,run:()=>void Bd(()=>$.toggleQueued(),Vd(`[data-queue-action]`))},"review.checkUpdates":{available:()=>$.offer().checkForUpdates,run:()=>void $.checkForUpdates()},"review.update":{available:()=>Yr(X,{actions:Oc!==``&&!xd.has(`update`)&&!pd,remote:Z}),run:()=>void md()},"review.delete":{available:()=>$.offer().delete,run:()=>Hd({focusCancel:!0})}},{onOpen:()=>R.closeAll()}),m(),setTimeout(()=>{bc(fc([...document.querySelectorAll(`[data-view="files"] [data-file]`)].map(e=>e.dataset.file??``)))},0),te(window,()=>window.location.reload());var Kd=15e3,qd=6e4;function Jd(){return Oc!==``&&document.visibilityState===`visible`&&!xd.has(`update`)}document.addEventListener(`visibilitychange`,()=>{Jd()&&Date.now()-Zu>=Kd&&Xu()}),window.setInterval(()=>{Jd()&&Xu()},qd);export{ms as n,Vt as r,_s as t};
176
+ ${l}`,ic(e,t),yc(e),bc(e),(n.focus?uc(e,n.focus):e.querySelector(`.prb-code-target`))?.scrollIntoView({block:`center`}),zc(e,t)}async function xl(e,t,n){let r=lc(t,n);if(!r)return;let i=uc(e,r.anchor);if(i)t.outerHTML=cc(dc(t),r.key),i.scrollIntoView({block:`center`});else{let t=e.querySelector(`[data-expand-file]`);if(!t?.dataset.expandFile)return;await yl(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 Sl(e,t,n){let r=`${qc.replace(/\/$/,``)}/${e}`,i=Kc.replace(`{path}`,r).replace(`{line}`,String(Math.max(1,t)));n!==null&&F({event:`editor_opened`,fromFinding:n}),window.location.href=i}var B=document.querySelector(`[data-ask-log]`);B&&B.querySelector(`.prb-msg`)&&B.scrollTo({top:B.scrollHeight});var Cl=document.querySelector(`[data-ask-form]`),V=Cl?.querySelector(`textarea`);function wl(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=Ge(t)+_t(t)):n.textContent=t,B?.appendChild(n),B?.scrollTo({top:B.scrollHeight}),n}function Tl(){let e=document.createElement(`div`);return e.className=`prb-thinking`,e.innerHTML=`<i></i><i></i><i></i><span>Reading the change…</span>`,B?.appendChild(e),B?.scrollTo({top:B.scrollHeight}),e}var H=null,El=!!B?.querySelector(`[data-ask-pending]`);function Dl(){let e=document.createElement(`div`);e.className=`prb-stopped`,e.textContent=`Stopped.`,B?.appendChild(e),B?.scrollTo({top:B.scrollHeight})}async function Ol(e,t=`free_text`,n={}){let r=e.trim();if(!r||H||El)return;document.querySelector(`.prb-ask-empty`)?.remove(),wl(`user`,r);let i=Tl();H=new AbortController,Al(!0);try{let e=await fetch(P(`/ask`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({question:r,sectionId:$c,source:t,...n}),signal:H.signal}),a=await e.json().catch(()=>null);if(e.status===409&&(a?.running||a?.updating)){kl(r,n.continuesExplanation),window.location.reload();return}if(i.remove(),a?.stopped){Dl();return}if(!e.ok||!a?.answer){wl(`error`,a?.error??`Buddy AI did not answer. Check the terminal running PR Review Buddy.`);return}wl(`assistant`,a.answer),a.explanation&&Ln(document,a.explanation)}catch(e){i.remove(),e instanceof DOMException&&e.name===`AbortError`?(Dl(),kl(r,n.continuesExplanation)):(wl(`error`,`Could not reach PR Review Buddy. The workspace server may have stopped.`),kl(r,n.continuesExplanation))}finally{H=null,Al(!1)}}function kl(e,t){!V||V.value||(V.value=e,Qd?.save(),t&&(U=U?.continues&&e.includes(U.text)?U:{text:e,source:`finding`,continues:t},Qd?.stage(U)))}function Al(e){let t=Cl?.querySelector(`button`);t&&(t.textContent=e?`Stop`:`Ask`,t.toggleAttribute(`data-stop`,e),t.disabled=!1);for(let t of document.querySelectorAll(jl))t.disabled=e;e&&L.closeAll(),e||V?.focus()}var jl=`[data-suggestion], .pr-helper-explain-simply-button`;function Ml(){let e=Cl?.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(()=>{H?.abort()})}Cl?.addEventListener(`submit`,e=>{if(e.preventDefault(),H||El)return Ml();let t=V?.value??``;V&&(V.value=``),Qd?.clear();let n=Bn(U,t);Ol(t,Nl(t),n?{continuesExplanation:n}:{})}),El&&Al(!0);var U=null;function Nl(e){return U&&e.includes(U.text)?U.source:`free_text`}V?.addEventListener(`keydown`,e=>{if(e.key===`Enter`&&!e.shiftKey){if(e.preventDefault(),H||El)return;Cl?.requestSubmit()}}),V?.addEventListener(`input`,()=>{V&&(V.style.height=`auto`,V.style.height=`${Math.min(V.scrollHeight,140)}px`)});async function Pl(e){try{await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({answeredQuestionIds:e})})}catch{}}function Fl(){return[...document.querySelectorAll(`[data-question-answered][data-answered="true"]`)].map(e=>e.dataset.questionAnswered??``).filter(Boolean)}function Il(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&&Hl(n,t,`questions`),Jl()}function Ll(){return[...document.querySelectorAll(`[data-issue-dismissed][data-dismissed="true"]`)].map(e=>({id:e.dataset.issueDismissed??``,sessionId:e.dataset.dismissedIn||Yc})).filter(e=>e.id)}async function Rl(e){try{await fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissedIssues:e})})}catch{}}function zl(e,t){e.dataset.dismissed=String(t),e.textContent=t?`Reopen`:`Dismiss`,delete e.dataset.stale,t?e.dataset.dismissedIn=Yc: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(Bl()),Hl(n,t||e.dataset.settled===`true`,`issues`),Xl())}function Bl(){let e=document.createElement(`span`);return e.className=`pr-helper-finding-status pr-helper-finding-status-dismissed pr-helper-tip`,e.dataset.tip=pr,e.textContent=`Dismissed by you`,e}var Vl=new WeakMap;function Hl(e,t,n){let r=e.closest(`.pr-helper-closed-findings-list`);if(t!==!!r){if(t){let t=e.parentElement;t&&Vl.set(e,{parent:t,before:e.nextElementSibling}),Kl(n).append(e),t&&Gl(t)}else Ul(e,n),(r?.children.length===0?r.closest(`.pr-helper-closed-findings`):null)?.remove();ql(n)}}function Ul(e,t){let n=Vl.get(e);if(n?.parent.isConnected)n.parent.insertBefore(e,n.before);else{let n=Wl(e)??document.querySelector(`[data-view="${t}"]`);n?.insertBefore(e,n.querySelector(`.pr-helper-closed-findings`))}e.closest(`.pr-helper-question-group`)?.removeAttribute(`hidden`)}function Wl(e){let t=e.dataset.sectionId;return t?document.querySelector(`[data-question-group="${CSS.escape(t)}"]`):null}function Gl(e){let t=e.closest(`.pr-helper-question-group`);t&&!t.querySelector(`[data-finding-card]`)&&(t.hidden=!0)}function Kl(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 ql(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;if(t.toggleAttribute(`data-nothing-open`,r===i),e===`questions`){n.textContent=`Answered (${i})`;return}n.textContent=Or(Yl())}function Jl(){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)),Zl(`questions`,e.length,t,`question`,`answered`)}function Yl(){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 Xl(){let e=Yl();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=Dr(e.total,e.open,fr(e))),Zl(`issues`,e.total,e.open,`issue`,fr(e))}function Zl(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){fl(n,n.getAttribute(`aria-expanded`)!==`true`);return}let r=t.closest(`a[data-view-nav], a[data-goto-section]`);if(r&&!ee(e))return;r&&e.preventDefault();let i=t.closest(`[data-view-nav]`);if(i?.dataset.viewNav){R(i.dataset.viewNav);return}let a=t.closest(`[data-author-context-toggle]`);if(a){br(a);return}let o=t.closest(`[data-author-context-reveal]`);if(o){Tr(o);return}let s=t.closest(`[data-overview-nav]`);if(s?.dataset.overviewNav){R(s.dataset.overviewNav===`guide`?`guide`:s.dataset.overviewNav);return}let c=t.closest(`[data-goto-section]`);if(c?.dataset.gotoSection){ll(c.dataset.gotoSection);return}let l=t.closest(`[data-open-editor]`);if(l?.dataset.openEditor){Sl(l.dataset.openEditor,Number(l.dataset.openLine)||1,!l.closest(`[data-architecture]`)||null);return}let u=t.closest(`[data-deletion-toggle]`);if(u){rc(u);return}let d=t.closest(`[data-code-expand]`);if(d){let e=d.closest(`.prb-code`);e&&Cc(e,!e.hasAttribute(`data-expanded`));return}let f=t.closest(`[data-change-step]`);if(f){let e=f.closest(`[data-change-navigator]`),t=f.closest(`.prb-code`);e&&t&&!f.disabled&&xl(t,e,f.dataset.changeStep===`previous`?`previous`:`next`);return}let te=t.closest(`[data-full-line]`);if(te){let e=ac(te);e&&Bc(e);return}let p=t.closest(`[data-expand-file]`);if(p?.dataset.expandFile){let e=p.closest(`.prb-code`);if(e){let t=e.querySelector(`[data-change-navigator]`);yl(e,p.dataset.expandFile,{cited:Number(p.dataset.expandCited)||0,centre:Number(p.dataset.expandLine)||0,expand:Number(p.dataset.expandStep)||1,position:Number(t?.dataset.changePosition)||0,focus:fc(t)})}return}let m=t.closest(`[data-focus-toggle]`);if(m?.dataset.focusToggle){cl(m.dataset.focusToggle);return}let ne=t.closest(`[data-prompt-toggle]`);if(ne){Tu(ne.getAttribute(`aria-expanded`)===`true`);return}if(t.closest(`[data-ask-buddy-menu]`))return;let h=t.closest(`[data-file]`);if(h?.dataset.file){_l(h);return}let re=jr(t);if(re){ll(re);return}let ie=t.closest(`[data-question-answered]`);if(ie?.dataset.questionAnswered){Il(ie,ie.dataset.answered!==`true`),gr(ie);let e=Fl();Pl(e),F({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){zl(g,g.dataset.stale===`true`||g.dataset.dismissed!==`true`);let e=Ll();Rl(e),F({event:`issue_dismissed`,dismissed:e.length,total:document.querySelectorAll(`[data-issue-dismissed]`).length});return}let ae=t.closest(`[data-suggestion]`);if(ae){Ol(ae.textContent??``,`suggestion`);return}if(t.closest(`.pr-helper-explain-simply-button`)){nu(),Ol(Jc,`explain_simply`);return}let oe=t.closest(`[data-prompt-use]`);if(oe?.dataset.promptUse){Eu(oe.dataset.promptUse);return}let _=t.closest(`[data-prompt-edit]`);if(_?.dataset.promptEdit){Wu(_.dataset.promptEdit);return}if(t.closest(`[data-prompt-add]`)){Wu(``);return}if(t.closest(`[data-ask-toggle]`)){let e=I?.focus;e?(sr(I,ol),eu(e!==`buddy`)):eu(!$l())}});var W=document.querySelector(`.prb-body`),Ql=document.querySelector(`.prb-ask`);function $l(){return!!Ql&&getComputedStyle(Ql).display!==`none`}function eu(e){W&&(W.dataset.ask=e?`open`:`closed`),tu(e)}function tu(e){for(let t of document.querySelectorAll(`[data-ask-toggle]`))t.setAttribute(`aria-expanded`,String(e))}function nu(){I?.focus&&I.focus!==`buddy`&&sr(I,ol),eu(!0)}function ru(){tu($l())}window.addEventListener(`resize`,ru),ie(P(`/restart`));var iu=document.querySelector(`[data-file-filter]`),au=document.querySelector(`[data-file-count]`),ou=document.querySelector(`[data-file-none]`);function su(){let e=(iu?.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}`}ou&&(ou.hidden=n>0),au&&(au.textContent=e?`${t} of ${cu} file${cu===1?``:`s`}`:`${cu} file${cu===1?``:`s`}`)}var cu=document.querySelectorAll(`[data-view="files"] .prb-file:not(.prb-file-referenced)`).length;iu?.addEventListener(`input`,su),iu?.addEventListener(`keydown`,e=>{e.key===`Escape`&&iu.value!==``&&(e.preventDefault(),iu.value=``,su())}),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(),_l(n))});var lu=320,uu=()=>Math.round(window.innerWidth/2),du=e=>Math.round(Math.min(uu(),Math.max(lu,e)));function fu(e){W&&(e===null?W.style.removeProperty(`--ask-width`):W.style.setProperty(`--ask-width`,`${e}px`))}function pu(){return Ql?Math.round(Ql.getBoundingClientRect().width):lu}function mu(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||!Ql)return;e.preventDefault(),G.setPointerCapture(e.pointerId),W.dataset.resizing=`true`;let t=e.clientX,n=pu(),r=e=>{fu(du(n+(t-e.clientX)))},i=()=>{G.removeEventListener(`pointermove`,r),G.removeEventListener(`pointerup`,i),G.removeEventListener(`pointercancel`,i),delete W.dataset.resizing,mu(pu())};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=du(pu()+n);fu(r),mu(r);return}(e.key===`Home`||e.key===`Escape`)&&(e.preventDefault(),fu(null),mu(null))}),G?.addEventListener(`dblclick`,()=>{fu(null),mu(null)}),window.addEventListener(`resize`,()=>{$l()&&W?.style.getPropertyValue(`--ask-width`)&&fu(du(pu()))});var hu=3e4,gu=document.visibilityState===`visible`?Date.now():null,_u=0;function vu(){gu!==null&&(_u+=Date.now()-gu,gu=Date.now())}function yu(){vu();let e=Math.round(_u/1e3);return _u-=e*1e3,e}document.addEventListener(`visibilitychange`,()=>{document.visibilityState===`visible`?gu=Date.now():(vu(),gu=null)}),setInterval(()=>{let e=yu();e>0&&F({event:`workspace_heartbeat`,visibleSeconds:e})},hu),window.addEventListener(`pagehide`,()=>{let e=P(`/event`),t=JSON.stringify({event:`review_completed`,trailingSeconds:yu()});navigator.sendBeacon?.(e,new Blob([t],{type:`application/json`}))||fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:t,keepalive:!0}).catch(()=>{})});var bu=document.querySelector(`[data-prompt-bank]`),xu=document.querySelector(`[data-prompt-list]`),K=Su();function Su(){try{let e=JSON.parse(bu?.dataset.prompts??`[]`);return Array.isArray(e)?e:[]}catch{return[]}}function Cu(){if(!xu)return;xu.innerHTML=K.map(e=>`<span class="prb-bank-item">
177
+ <button type="button" class="prb-bank-use" data-prompt-use="${z(e.id)}" title="${z(e.prompt)}">${z(e.name)}</button>
178
+ <button type="button" class="prb-bank-edit" data-prompt-edit="${z(e.id)}" aria-label="Edit ${z(e.name)}">&#9998;</button>
179
+ </span>`).join(``);let e=document.querySelector(`[data-prompt-count]`);e&&(e.textContent=String(K.length)),Mu()}async function wu(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{}Cu()}function Tu(e){document.querySelector(`[data-prompt-toggle]`)?.setAttribute(`aria-expanded`,String(!e)),bu?.toggleAttribute(`data-collapsed`,e),xu&&(xu.hidden=e),fetch(P(`/prefs`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({promptsCollapsed:e})}).catch(()=>{})}function Eu(e){let t=K.find(t=>t.id===e);!t||!V||(V.value=Pr(V.value,t.prompt),nu(),V.focus(),V.setSelectionRange(V.value.length,V.value.length),V.dispatchEvent(new Event(`input`)))}var Du=document.querySelector(`.prb-doc`),Ou=null,ku=null;function Au(){B&&(ku?.(),ku=_n(B,{layout:`flat`,actions:bn.map(e=>({id:e.id,label:e.label})),onChoose:(e,t)=>Nu(e,`selection`,t)}))}function ju(){return[...vn.map(e=>({id:e.id,label:e.label})),...K.map(e=>({id:En(e.id),label:e.name,section:Tn}))]}function Mu(){Du&&(Ou?.(),Ou=_n(Du,{triggerLabel:`Ask Buddy AI`,actions:ju(),ignoreWithin:`[data-ask-buddy-menu]`,onChoose:(e,t)=>Nu(e,`selection`,t)}))}function Nu(e,t,n,r){dr(e,{context:t,text:n},{savedPrompt:e=>K.find(t=>t.id===e)?.prompt??null,stage:e=>Pu(e,t,r?.continuesExplanation?r.ref:void 0),send:t=>{nu(),Ol(t,`finding`,Fn(e,r?.ref))}})}function Pu(e,t,n){V&&(U={text:e,source:t,...n?{continues:n}:{}},Qd?.stage(U),V.value=Pr(V.value,e),nu(),V.focus(),V.setSelectionRange(V.value.length,V.value.length),V.dispatchEvent(new Event(`input`)))}function Fu(e){let t=e.querySelector(`[data-menu-panel]`);if(t){t.innerHTML=sn(zn(e,ju()));for(let e of t.querySelectorAll(`[data-selection-action]`))e.setAttribute(`role`,`menuitem`);if(H||El)for(let e of t.querySelectorAll(`button`))e.disabled=!0}}function Iu(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=On(n),a=In(n);L.close(n),i&&Nu(r,`finding`,i,a?{ref:a}:void 0)}),document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-simple-explanation-more]`);if(!t)return;let n=In(t),r=On(t);n&&r&&Nu(`custom`,`finding`,r,{ref:n,continuesExplanation:!0})}),Mu(),Au();var q=ya({root:document,showView:e=>R(e)}),Lu=wa({doc:document,pane:()=>document.querySelector(`.prb-doc`),openMenu:(e,t)=>L.open(e,{focusFirst:!0,returnFocus:t}),selecting:()=>q.state().selecting,flip:e=>void q.flip(e)});At(document),Wt(document);var Ru=document.querySelector(`[data-prompt-dialog]`),zu=document.querySelector(`[data-prompt-name]`),Bu=document.querySelector(`[data-prompt-text]`),Vu=document.querySelector(`[data-prompt-delete]`),Hu=document.getElementById(`prb-prompt-title`),Uu=``;function Wu(e){let t=K.find(t=>t.id===e);Uu=t?.id??``,Hu&&(Hu.textContent=t?`Edit prompt`:`Save a prompt`),zu&&(zu.value=t?.name??``),Bu&&(Bu.value=t?.prompt??``),Vu&&(Vu.hidden=!t),Ru?.showModal(),zu?.focus()}async function Gu(){let e=zu?.value.trim()??``,t=Bu?.value.trim()??``;if(!e||!t){(e?Bu:zu)?.focus();return}let n=Uu?K.map(n=>n.id===Uu?{...n,name:e,prompt:t}:n):[...K,{id:crypto.randomUUID(),name:e,prompt:t}];Ru?.close(),await wu(n)}async function Ku(){if(!Uu)return;let e=K.filter(e=>e.id!==Uu);Ru?.close(),await wu(e)}document.querySelector(`[data-prompt-cancel]`)?.addEventListener(`click`,()=>Ru?.close()),Vu?.addEventListener(`click`,()=>void Ku()),document.querySelector(`[data-prompt-save]`)?.addEventListener(`click`,()=>void Gu());var J=document.querySelector(`[data-fresh-region]`),Y=document.querySelector(`[data-fresh-status]`),qu=document.querySelector(`[data-fresh-check]`),X=id(J?.dataset.report),Ju=`prb-fresh-reopen`,Yu=ed(),Xu=J?.dataset.dismissedSha,Zu=$u(J?.dataset.availability),Z=Qu(J?.dataset.remote);function Qu(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function $u(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function ed(){try{return sessionStorage.getItem(Ju)!==null&&(sessionStorage.removeItem(Ju),!0)}catch{return!1}}Yu&&xd(),qu?.addEventListener(`click`,()=>void cd());var td=document.querySelector(`[data-fetch-remote]`);td&&(fetch(P(`/fetch`)).then(e=>e.ok?e.json():null).then(e=>{e?.fetchable===!0&&(td.hidden=!1)}).catch(()=>{}),td.addEventListener(`click`,()=>void nd(td)));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};ne(h(),{kind:n.fetched<n.repositories?`failed`:`ready`,text:se(n)}),n.fetched>0&&await cd()}J?.addEventListener(`click`,e=>{let t=e.target;if(t.closest(`[data-fresh-close]`))return Yu=!1,xd();let n=t.closest(`[data-fresh-dismiss]`);n&&(Xu=n.dataset.freshDismiss||void 0,Yu=!1,xd(),rd())});function rd(){fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissFreshnessSha:Xu??null})}).catch(()=>{})}function id(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}var ad=ca(),od=!1,sd=null;async function cd(){if(od)return;od=!0,md(!0),sd&&await sd;let e=hd(X,Z),t=await ud(!1);md(!1),t&&bd(),od=!1,t&&(X?.code.state===`changed`||Z!==null)&&Xu!==void 0&&(Xu=void 0,rd()),xd(),ld(t?hd(X,Z)===e?`No change`:`Updated`:`Could not check`)}function ld(e){Y&&(Y.textContent=e,window.setTimeout(Sd,2600))}async function ud(e){let t=ad.snapshot();try{let n=await(await fetch(`${P(`/freshness`)}${e?`&quiet=1`:``}`)).json();X=n.report??null,Zu=n.availability??null,Z=n.remote??null,_d=n.kiss??null,n.kissDismissedSha!==void 0&&(vd=n.kissDismissedSha??void 0),n.prState!==void 0&&pd(n.prState);let r=sa(n.standing);return r&&ad.current(t)&&$i(document,r),!0}catch{return!1}}async function dd(){if(od||sd||!J)return;let e=hd(X,Z),t=JSON.stringify(_d);sd=ud(!0);let n=await sd;sd=null,fd=Date.now(),n&&(hd(X,Z)!==e&&xd(),JSON.stringify(_d)!==t&&bd())}var fd=Date.now();function pd(e){let t=document.querySelector(`[data-pr-state-slot]`);if(!t)return;let n=Qi(e,t.hasAttribute(`data-beside-number`));t.innerHTML!==n&&(t.innerHTML=n)}function md(e){qu&&(qu.disabled=e),Y&&e&&(Y.textContent=`Checking…`,Y.dataset.state=`checking`)}function hd(e,t){if(!e)return JSON.stringify({report:`none`,remote:t});let{checkedAt:n,...r}=e;return JSON.stringify({...r,remote:t})}var gd=document.querySelector(`[data-kiss-fresh-region]`),_d=yd(gd?.dataset.freshness),vd=gd?.dataset.dismissedSha;function yd(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function bd(){Gi(_d?.state===`changed`),gd&&(gd.innerHTML=Li(gd.dataset.reviewedSha??``,_d,{dismissedSha:vd,actions:Wc!==``}))}gd?.addEventListener(`click`,e=>{let t=e.target.closest(`[data-kiss-freshness-dismiss]`);t&&(vd=t.dataset.kissFreshnessDismiss||void 0,bd(),fetch(P(`/state`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dismissKissFreshnessSha:vd??null})}).catch(()=>{}))});function xd(){J&&(J.innerHTML=ui(X,{dismissedSha:Xu,open:Yu,actions:Wc!==``,availability:Zu,remote:Z}),Sd())}function Sd(){if(Y&&(X||Z)){let{label:e,state:t}=ci(X,Z);Y.textContent=e,Y.dataset.state=t,xi(document,t)}}document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-copy-command]`);if(n)return Cd(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 Td(i);if(t.closest(`[data-review-update]`))return void kd();let a=t.closest(`[data-update-cancel]`);if(a)return void jd(a,`update`);let o=t.closest(`[data-review-cancel]`);if(o)return void jd(o,`review`);t.closest(`[data-update-close]`)&&document.querySelector(`[data-update-result]`)?.remove()});function Cd(e){let t=e.dataset.copyCommand??``;navigator.clipboard?.writeText(t).then(()=>wd(e,`Copied`),()=>wd(e,`Select it`))}function wd(e,t,n=1400){let r=e.textContent;e.textContent=t,setTimeout(()=>{e.textContent=r},n)}async function Td(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=Ed(n);t?t.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Re-checking the conversation, ${e}s. ${Pd}`:n.innerHTML=`<span class="prb-spinner" aria-hidden="true"></span>Checking… ${e}s`}};r();let i=window.setInterval(r,1e3),a=Ed(e)?null:Fd(e);try{await fetch(P(`/refresh`),{method:`POST`})}catch{}finally{window.clearInterval(i),a?.remove()}Ed(e)&&Dd(),window.location.reload()}function Ed(e){return e.closest(`.prb-fresh-notes p`)}function Dd(){try{sessionStorage.setItem(Ju,`1`)}catch{}}var Od=!1;async function kd(){if(Od)return;Od=!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`&&!Ti(e.update.phase)&&n()}catch{}},500);try{await fetch(P(`/update`),{method:`POST`})}catch{}n()}var Ad={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 jd(e,t){let n=Ad[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,Nd(e,`The workspace server did not answer, so nothing was cancelled. Try again.`);return}i||Nd(e,n.tooLate),await Ra({look:async()=>{let e=await fetch(P(`/job`),{signal:AbortSignal.timeout(Md)});return n.running(await e.json())},reload:()=>window.location.reload()})}var Md=3e3;function Nd(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 Pd=`Fetching the latest threads from your pull request. This usually takes under a minute.`;function Fd(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=Pd,t.appendChild(n),n}var Id=Na(document),Ld=null,Rd=Date.now();function zd(){Ld===null&&(Ld=window.setTimeout(()=>{Ld=null,Bd()},ce(Date.now()-Rd)))}async function Bd(){try{let e=await(await fetch(P(`/job`))).json();if(El&&!e.ask||Hd&&!e.diagram){window.location.reload();return}let t={job:e,kiss:e.kiss,update:e.update};for(let[e,n]of Id){let r=t[e];if(r){if(Pa(e,r,document)){window.location.reload();return}e===`update`||n.matches(`[data-progress-pane]`)?(Ia(n,r.phase,r.progress),La(n)):Vd(n,r.progress)}}}catch{}zd()}function Vd(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 Hd=document.querySelector(`[data-diagram-running]`)!==null;(Id.size>0||El||Hd)&&(Rd=Date.now(),zd());function Ud(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 Wd(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…`,Wd(t),fetch(P(`/retry`),{method:`POST`}).then(e=>{if(!e.ok)throw Error(`refused`);Rd=Date.now(),zd()}).catch(()=>{t.disabled=!1,t.textContent=`Retry`,Ud(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=mr,wd(t,`Could not start. Try again`,2500)}))});var Gd={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)=>{Zl(`kiss`,e,t,`recommendation`,`decided`),Zl(`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){Bi(r,zi(n),Gd);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 Kd=document.body.dataset.defaultView||`overview`;window.addEventListener(`popstate`,e=>{let t=er(e.state)??tr(window.location.hash)??{kind:`view`,view:Kd},n=!I||!ar(I,t);al(t),n&&rl(t),Zd()});var qd=tr(window.location.hash);qd?al(qd):(I={kind:`view`,view:Kd},Vc.replace(``,I));var Jd={doc:document,main:document.querySelector(`main.prb-doc`),rail:document.querySelector(`.prb-rail`),log:B,panes:W};Vc.setCapturer(()=>Jr(Jd));async function Yd(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=Ir(e),s=o?vl.pending(o):void 0;if(!o||!Vr(s?s.request:zr(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 yl(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`)&&Cc(o,a.tall),t&&Br(o,t.top,t.offset))}function Xd(e){Ir(e)?.remove(),e.setAttribute(`aria-expanded`,`false`)}async function Zd(){let e=++nl,t=()=>nl===e;await Yr(Jd,Vc.current().ui,{setFold:fl,setAsk:eu,openPanel:(e,n)=>Yd(e,n,t),closePanel:Xd,stillCurrent:t})}Zd();var Qd=V?ni(V,{storage:(()=>{try{return window.sessionStorage}catch{return null}})(),path:window.location.pathname,restore:!0,win:window}):null;U=Qd?.restoredStage??null,ru(),hl();var $d=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=>{$d(e.target)}),document.addEventListener(`keydown`,e=>{if(e.key!==`Escape`)return;let t=document.querySelector(`[data-analysis-details][open], [data-range-details][open]`);t&&($d(),t.querySelector(`summary`)?.focus())});var Q=document.querySelector(`.prb-header [data-menu]`),$=ua({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:ad,checkForUpdates:()=>cd()});function ef(e){if(!Q)return;let t=Q.querySelector(`[data-menu-panel]`);t?.hidden&&L.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 tf(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 L.closeAll();ef(n.error)}}function nf(e){return Q?.querySelector(`[data-menu-items] ${e}`)??null}function rf(e={}){if(!Q)return;Q.querySelector(`[data-menu-panel]`)?.hidden&&L.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]`),t=()=>Iu(Q);Q.addEventListener(`click`,e=>{let n=e.target,a=n?.closest(`[data-copy-id]`);if(a?.dataset.copyId){e.stopPropagation(),_(a,a.dataset.copyId);return}let o=n?.closest(`[data-pin-toggle]`);if(o){e.stopPropagation(),r(o);return}if(n?.closest(`[data-fresh-check], [data-fetch-remote]`)){L.closeAll();return}let s=n?.closest(`[data-mark-status]`);if(s){e.stopPropagation(),tf(()=>$.setComplete(s.dataset.markStatus===`complete`),s);return}let c=n?.closest(`[data-lifecycle-set]`);if(c){e.stopPropagation(),tf(()=>$.setLifecycle(c.dataset.lifecycleSet),c);return}let l=n?.closest(`[data-queue-action]`);if(l){e.stopPropagation(),tf(()=>$.setQueued(l.dataset.queueAction===`remove`?`remove`:`add`),l);return}if(n?.closest(`[data-delete]`)){e.stopPropagation(),rf();return}if(n?.closest(`[data-cancel-delete]`)){e.stopPropagation(),t();return}n?.closest(`[data-confirm-delete]`)&&(e.stopPropagation(),i())});let r=async e=>{let t=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:t})});e.ok&&(r=(await e.json()).pinned===!0)}catch{}if(e.disabled=!1,r===null){e.textContent=t?`Could not pin`:`Could not unpin`,window.setTimeout(()=>{e.textContent=n(e.getAttribute(`aria-pressed`)===`true`)},1600);return}e.setAttribute(`aria-pressed`,String(r)),e.textContent=n(r)},i=async()=>{e&&(e.disabled=!0,e.textContent=`Deleting`);let{error:n}=await $.deleteReview();if(n===null)return void window.location.replace(`/`);e&&(e.disabled=!1,e.textContent=`Delete`),t(),ef(n)}}function af(e){return{available:()=>document.querySelector(`.prb-rail a[data-view-nav="${e}"]`)!==null,run:()=>R(e,{keepFocus:!0})}}function of(){if(!I)return null;let e=I.focus??(I.kind===`section`?`guide`:I.view);return Un.includes(e)&&document.querySelector(`[data-focus-toggle="${e}"]`)?e:null}function sf(){return[...document.querySelectorAll(`.prb-view:not([hidden]) [data-feedback-select]`)].some(e=>e.checkVisibility())}g(`review`,{...Lu.commands,...xa(q,document),"review.section.review":{available:()=>Ea(document)!==null,run:()=>{let e=Ea(document);e&&R(e,{keepFocus:!0})}},"review.section.kiss":af(`kiss`),"review.section.issues":af(`issues`),"review.section.diagrams":af(`map`),"review.section.questions":af(`questions`),"review.section.files":af(`files`),"review.buddy.open":{available:()=>Ql!==null,run:()=>{I?.focus?or(I,`buddy`,ol):eu(!0),document.querySelector(`[data-ask-form] textarea`)?.focus()}},"review.buddy.prompt":{available:()=>Ql!==null&&V!==null,panel:Aa({prompts:()=>K,choose:Eu})},"review.focus.toggle":{available:()=>of()!==null,run:()=>{let e=of();e&&cl(e)}},"review.leave":{available:e=>!!(e&&cr(e,document,e.target===V||q.state().selecting||!!I?.focus)),run:e=>{V&&e?.target===V?V.blur():q.state().selecting?q.exit():I?.focus&&sr(I,ol)}},"review.feedback.toggle":{available:()=>q.state().selecting||sf(),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 tf(()=>$.setComplete(!0),nf(`[data-mark-status]`))},"review.mark.waiting":{available:()=>$.offer().waiting,run:()=>void tf(()=>$.setLifecycle(`waiting`),nf(`[data-lifecycle-set="waiting"]`))},"review.mark.done":{available:()=>$.offer().done,run:()=>void tf(()=>$.setLifecycle(`done`),nf(`[data-lifecycle-set="done"]`))},"review.queue.toggle":{available:()=>$.offer().queue,run:()=>void tf(()=>$.toggleQueued(),nf(`[data-queue-action]`))},"review.checkUpdates":{available:()=>$.offer().checkForUpdates,run:()=>void $.checkForUpdates()},"review.update":{available:()=>li(X,{actions:Wc!==``&&!Id.has(`update`)&&!Od,remote:Z}),run:()=>void kd()},"review.delete":{available:()=>$.offer().delete,run:()=>rf({focusCancel:!0})}},{onOpen:()=>L.closeAll()}),m(),setTimeout(()=>{Pc(Ec([...document.querySelectorAll(`[data-view="files"] [data-file]`)].map(e=>e.dataset.file??``)))},0),te(window,()=>window.location.reload());var cf=15e3,lf=6e4;function uf(){return Wc!==``&&document.visibilityState===`visible`&&!Id.has(`update`)}document.addEventListener(`visibilitychange`,()=>{uf()&&Date.now()-fd>=cf&&dd()}),window.setInterval(()=>{uf()&&dd()},lf);export{Os as n,Bt as r,js as t};