glimmervoid 0.46.2-next.140 → 0.46.2-next.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{main-DOdTqSJs.js → main-CR7hWfhj.js} +13 -13
- package/dist/client/assets/{alert-sound-BGx4LdwZ.js → alert-sound-BBr0as6G.js} +1 -1
- package/dist/client/assets/alert-sound-BBr0as6G.js.br +0 -0
- package/dist/client/assets/{benchmark-panel-DmyIMpSE.js → benchmark-panel-BssD3O2h.js} +1 -1
- package/dist/client/assets/benchmark-panel-BssD3O2h.js.br +0 -0
- package/dist/client/assets/{celebration-player-D5vqHPTv.js → celebration-player-CiOlT5n9.js} +1 -1
- package/dist/client/assets/celebration-player-CiOlT5n9.js.br +0 -0
- package/dist/client/assets/control-ws-D_jLoMnn.js +4 -0
- package/dist/client/assets/control-ws-D_jLoMnn.js.br +0 -0
- package/dist/client/assets/{dialogs-KuXZnfwC.js → dialogs-jfKnZPRt.js} +1 -1
- package/dist/client/assets/dialogs-jfKnZPRt.js.br +0 -0
- package/dist/client/assets/{doc-editor-ui-OPpbWk2i.js → doc-editor-ui-BK6THx6I.js} +1 -1
- package/dist/client/assets/doc-editor-ui-BK6THx6I.js.br +0 -0
- package/dist/client/assets/{first-run-checklist-BICtw3f_.js → first-run-checklist-DjV8UyhE.js} +1 -1
- package/dist/client/assets/first-run-checklist-DjV8UyhE.js.br +0 -0
- package/dist/client/assets/{hooks-panel-UXd6kftV.js → hooks-panel-Cov_E7Nn.js} +1 -1
- package/dist/client/assets/hooks-panel-Cov_E7Nn.js.br +0 -0
- package/dist/client/assets/index-DkVH8Ze_.js +78 -0
- package/dist/client/assets/index-DkVH8Ze_.js.br +0 -0
- package/dist/client/assets/{issues-panel-D1xLAqkG.js → issues-panel-C4xIYyg8.js} +1 -1
- package/dist/client/assets/issues-panel-C4xIYyg8.js.br +0 -0
- package/dist/client/assets/{nyan-cat-D_Wgtw6g.js → nyan-cat-SuwqMGt7.js} +1 -1
- package/dist/client/assets/nyan-cat-SuwqMGt7.js.br +0 -0
- package/dist/client/assets/{phone-shell-BGUCsRyh.js → phone-shell-LNpqjgav.js} +1 -1
- package/dist/client/assets/phone-shell-LNpqjgav.js.br +0 -0
- package/dist/client/assets/{plan-face-DhN__i5r.js → plan-face-CVgq55fc.js} +1 -1
- package/dist/client/assets/plan-face-CVgq55fc.js.br +0 -0
- package/dist/client/assets/{plan-render-mPHVh69n.js → plan-render-CzDoSIwQ.js} +1 -1
- package/dist/client/assets/plan-render-CzDoSIwQ.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-BWoPol5P.js +1 -0
- package/dist/client/assets/pr-scope-tabs-BWoPol5P.js.br +0 -0
- package/dist/client/assets/{radar-panel-BrQynCPO.js → radar-panel-Cz4wr8sW.js} +1 -1
- package/dist/client/assets/radar-panel-Cz4wr8sW.js.br +0 -0
- package/dist/client/assets/{repo-roots-adder-CiAPoQhG.js → repo-roots-adder-CAMr-ApU.js} +1 -1
- package/dist/client/assets/repo-roots-adder-CAMr-ApU.js.br +0 -0
- package/dist/client/assets/{resume-dialog-BHeA8T70.js → resume-dialog-LCZU0g7P.js} +1 -1
- package/dist/client/assets/resume-dialog-LCZU0g7P.js.br +0 -0
- package/dist/client/assets/{review-queue-panel-BK2UvUw7.js → review-queue-panel-Ccex9SGG.js} +2 -2
- package/dist/client/assets/review-queue-panel-Ccex9SGG.js.br +0 -0
- package/dist/client/assets/{settings-panel-XqOeh2vT.js → settings-panel-BYyO60k-.js} +2 -2
- package/dist/client/assets/settings-panel-BYyO60k-.js.br +0 -0
- package/dist/client/assets/{shown-lightbox-Z7V0d1Ea.js → shown-lightbox-BJoXhjCC.js} +1 -1
- package/dist/client/assets/shown-lightbox-BJoXhjCC.js.br +0 -0
- package/dist/client/assets/{trace-panel-BMX1noJ8.js → trace-panel-Bw6juc09.js} +1 -1
- package/dist/client/assets/trace-panel-Bw6juc09.js.br +0 -0
- package/dist/client/assets/{usage-panel-Btu-cPSN.js → usage-panel-DgfcEHUt.js} +1 -1
- package/dist/client/assets/usage-panel-DgfcEHUt.js.br +0 -0
- package/dist/client/assets/{visions-panel-DlcWh7VY.js → visions-panel-BuuuaLjv.js} +1 -1
- package/dist/client/assets/visions-panel-BuuuaLjv.js.br +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/alert-sound-BGx4LdwZ.js.br +0 -0
- package/dist/client/assets/benchmark-panel-DmyIMpSE.js.br +0 -0
- package/dist/client/assets/celebration-player-D5vqHPTv.js.br +0 -0
- package/dist/client/assets/control-ws-BYg67aMo.js +0 -4
- package/dist/client/assets/control-ws-BYg67aMo.js.br +0 -0
- package/dist/client/assets/dialogs-KuXZnfwC.js.br +0 -0
- package/dist/client/assets/doc-editor-ui-OPpbWk2i.js.br +0 -0
- package/dist/client/assets/first-run-checklist-BICtw3f_.js.br +0 -0
- package/dist/client/assets/hooks-panel-UXd6kftV.js.br +0 -0
- package/dist/client/assets/index-BcDfmAuk.js +0 -78
- package/dist/client/assets/index-BcDfmAuk.js.br +0 -0
- package/dist/client/assets/issues-panel-D1xLAqkG.js.br +0 -0
- package/dist/client/assets/nyan-cat-D_Wgtw6g.js.br +0 -0
- package/dist/client/assets/phone-shell-BGUCsRyh.js.br +0 -0
- package/dist/client/assets/plan-face-DhN__i5r.js.br +0 -0
- package/dist/client/assets/plan-render-mPHVh69n.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-Cxb7a5h9.js +0 -1
- package/dist/client/assets/pr-scope-tabs-Cxb7a5h9.js.br +0 -0
- package/dist/client/assets/radar-panel-BrQynCPO.js.br +0 -0
- package/dist/client/assets/repo-roots-adder-CiAPoQhG.js.br +0 -0
- package/dist/client/assets/resume-dialog-BHeA8T70.js.br +0 -0
- package/dist/client/assets/review-queue-panel-BK2UvUw7.js.br +0 -0
- package/dist/client/assets/settings-panel-XqOeh2vT.js.br +0 -0
- package/dist/client/assets/shown-lightbox-Z7V0d1Ea.js.br +0 -0
- package/dist/client/assets/trace-panel-BMX1noJ8.js.br +0 -0
- package/dist/client/assets/usage-panel-Btu-cPSN.js.br +0 -0
- package/dist/client/assets/visions-panel-DlcWh7VY.js.br +0 -0
package/dist/client/assets/{review-queue-panel-BK2UvUw7.js → review-queue-panel-Ccex9SGG.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Bt as e,Ft as t,It as n,Rt as r,Vt as i,b as a,n as o,x as s}from"./updates-view-core-B_e7uWeW.js";import{a as c,c as l,d as u,i as d,o as f,u as p}from"./dom-helpers-C7P3_59O.js";import{
|
|
1
|
+
import{Bt as e,Ft as t,It as n,Rt as r,Vt as i,b as a,n as o,x as s}from"./updates-view-core-B_e7uWeW.js";import{a as c,c as l,d as u,i as d,o as f,u as p}from"./dom-helpers-C7P3_59O.js";import{r as m,u as h}from"./control-ws-D_jLoMnn.js";import{i as ee}from"./modal-Bh-cVr-I.js";import{$ as te,At as ne,Bt as g,Ct as _,Er as v,Et as y,Ft as b,Gr as x,Ii as re,It as ie,Kn as ae,Lr as S,Lt as C,Mt as w,Nt as T,Ot as oe,Pt as se,Q as ce,Rt as le,St as ue,Wr as de,Yn as fe,_ as pe,_t as me,at as he,bt as ge,ct as _e,dt as ve,en as ye,et as be,ft as xe,gt as Se,ht as Ce,it as we,jt as Te,kt as E,lt as Ee,m as De,mn as Oe,mt as ke,nt as Ae,ot as je,p as Me,pn as Ne,pt as Pe,rt as Fe,st as Ie,tn as Le,tt as Re,ut as ze,vt as Be,wt as Ve,xt as He,yt as Ue,zt as We}from"./index-DkVH8Ze_.js";import{a as Ge,c as Ke,d as qe,l as Je,n as Ye,o as Xe,s as Ze,t as Qe,u as $e}from"./pr-scope-tabs-BWoPol5P.js";var et=`> [!NOTE]
|
|
2
2
|
> Automated review. Not written by a human.`,tt=`> [!NOTE]
|
|
3
3
|
> Automated review by [Glimmervoid](https://glimmervoid.dev). Not written by a human.`,nt=`> [!NOTE]
|
|
4
4
|
> Automated review by [Glimmervoid](https://glimmervoid.dev), not written by a human. Approved by hand after checking it.`,rt=n.options.join(`|`),it=String.raw`\*\*(?:\[([^\]\n]+)\]\s+)?(${rt})\*\*`;function at(e){return[...e.matchAll(new RegExp(it,`g`))].flatMap(e=>{let t=n.safeParse(e[2]);return t.success?[t.data]:[]})}function ot(e){let t=new RegExp(String.raw`^${it}\s*(?:\r?\n|$)`).exec(e);if(!t)return null;let r=n.safeParse(t[2]);return r.success?{reviewer:t[1]??null,severity:r.data,length:t[0].length}:null}function st(e){let t=e.trimStart(),n=[et,tt,nt].find(e=>t.startsWith(e));return n?t.slice(n.length).trim():e.trim()}var ct=`(line not in the diff)`,lt=String.raw`- ${it}`,ut=String.raw`\*\*\x60([^\x60\n]+)\x60\*\* ${ct.replace(/[()]/g,`\\$&`)}`,dt=new RegExp(String.raw`^(?:${lt}|${ut})`,`gm`),ft=new RegExp(String.raw`^${lt}\s*(?:\x60([^\x60\n]+)\x60:\s*)?`),pt=new RegExp(String.raw`^${ut}\s*`);function mt(e){return n.options.find(t=>e.includes(t))??null}function ht(e){let t=ft.exec(e);if(t)return{severity:n.parse(t[2]),location:t[3]??null,body:e.slice(t[0].length).trim(),markdown:e};let r=pt.exec(e),i=r?e.slice(r[0].length).trim():e;return{severity:mt(at(i)),location:r?.[1]??null,body:i,markdown:e}}function gt(e){let t=st(e),n=t.search(dt);return(n===-1?t:t.slice(0,n)).trim()}function _t(e){let t=st(e),n=[...t.matchAll(dt)].map(e=>e.index);return n.map((e,r)=>t.slice(e,n[r+1]).trim()).filter(Boolean).map(ht)}var vt={"direct-request":`Needs you`,"team-request":`Ready`,"changes-requested":`Author to fix`,"checks-failing":`Checks failing`,"checks-pending":`Checks running`,draft:`Draft`,"review-available":`Ready`,approved:`Approved`},yt={APPROVE:{label:`You approved`,tone:`ok`,icon:`passed`},COMMENT:{label:`You commented`,tone:`muted`,icon:`thread`},REQUEST_CHANGES:{label:`You requested changes`,tone:`wait`,icon:`changes-requested`}},bt={APPROVED:{label:`You approved`,tone:`ok`,icon:`passed`},CHANGES_REQUESTED:{label:`You requested changes`,tone:`wait`,icon:`changes-requested`},COMMENTED:{label:`You commented`,tone:`muted`,icon:`thread`}};function xt(e){let t=(e.githubReviews??[]).filter(e=>e.isViewer).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!e.postedEvent)return t?bt[t.state]:null;if(!t)return yt[e.postedEvent];let n=Date.parse(t.submittedAt??``);return Number.isNaN(n)||e.postedAt!==void 0&&e.postedAt>n?yt[e.postedEvent]:bt[t.state]}var St={"changes-requested":`changes-requested`,"checks-failing":`failed`,"checks-pending":`running`,draft:`draft`};function Ct(e){let{reason:t}=Te(e),n=St[t];return n?{text:vt[t],icon:n}:null}function wt(e){return Ct(e)?.text??null}var Tt={discarded:{tone:`muted`,icon:`discarded`,meaning:`Not mine`}};function Et(e,t){let n=wt(t);return n?`${e}, ${n}`:e}function Dt(t){if(e(t))return!0;let n=(t.githubReviews??[]).filter(e=>e.isViewer);return n.length===0||n.some(e=>e.commit===w(t))}var Ot={tone:`warn`,icon:`your-turn`,meaning:`Comments resolved`};function kt(e,t){if(e.prStage)return{tone:g(e.prStage),icon:le(e.prStage),meaning:We(e.prStage)};let n=Tt[t];if(n)return n;if(t===`inReview`)return{tone:`wait`,icon:`running`,meaning:Et(`In review`,e)};if(t===`queued`)return{tone:`muted`,icon:`queued`,meaning:Et(`Queued`,e)};if(t===`settled`&&`reviewedHead`in e){let t=Dt(e)?xt(e):null;return t?{tone:t.tone,icon:t.icon,meaning:t.label}:{tone:`ok`,icon:`passed`,meaning:`Others reviewed`}}if(t===`posted`&&`reviewedHead`in e){let t=xt(e);return t?{tone:t.tone,icon:t.icon,meaning:t.label}:{tone:`muted`,icon:`none`,meaning:`Posted`}}if(t===`attention`&&`status`in e)return e.status===`error`?{tone:`danger`,icon:`failed`,meaning:`Review failed`}:{tone:`warn`,icon:`stale`,meaning:`Out of date`};let r=Ct(e);return r?{tone:`wait`,icon:r.icon,meaning:r.text}:t===`ready`&&`reviewedHead`in e&&b(e)?Ot:{tone:`warn`,icon:`your-turn`,meaning:`Waits on you`}}function At(e){return!e||e.total===0?null:e.total===1?e.resolved===1?`Your 1 comment resolved`:`Your 1 comment unresolved`:e.resolved===e.total?`All ${e.total} of your comments resolved`:`${e.resolved} of ${e.total} of your comments resolved`}function jt(e){return`${e} ${e===1?`comment`:`comments`}`}function Mt(e,t,n){let r=[`${C(e.repo,e.number)}: ${e.title}`],a=`reviewedHead`in e?e.assessment?.goal.trim():``;if(a&&r.push(a),r.push(kt(e,t).meaning),n.opened&&r.push(`Opened ${n.opened}`),n.reviewed&&r.push(`Reviewed ${n.reviewed}`),n.posted&&r.push(`Posted ${n.posted}`),!(`reviewedHead`in e))return r.join(`
|
|
@@ -7,4 +7,4 @@ import{Bt as e,Ft as t,It as n,Rt as r,Vt as i,b as a,n as o,x as s}from"./updat
|
|
|
7
7
|
`).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/Zt)),0)>t}function $t(e,t){let n=Gt[e.state];return e.isViewer?e.commit===t?`you ${n}`:`you ${n} (older commit)`:`${n} by ${e.login}`}function en(n){if(e(n))return null;let r=(n.githubReviews??[]).filter(e=>e.isViewer&&t.has(e.state)).sort((e,t)=>(Date.parse(t.submittedAt??``)||0)-(Date.parse(e.submittedAt??``)||0)).at(0);if(!r?.commit||r.commit===w(n)||r.state===`COMMENTED`)return null;let i=Date.parse(r.submittedAt??``);return n.reviewedAt!==void 0&&i>n.reviewedAt?null:{approvedCommit:r.commit,submittedAt:r.submittedAt,state:r.state,isReviewScopeSinceDecision:n.priorReviewedHead===r.commit}}function tn(e,t){let n=e.state===`APPROVED`?`approved this`:`requested changes`,r=e.state===`APPROVED`?`your approval`:`your request for changes`,a=`You ${n} at ${i(e.approvedCommit)}${t?` ${t}`:``}. It has new commits since`;return e.isReviewScopeSinceDecision?`${a}, so this review covers what changed after ${r}.`:`${a}.`}function nn(e){return e===`APPROVED`?`ok`:e===`CHANGES_REQUESTED`?`warn`:`muted`}function rn(e,t){return t?`${e}, ${t}`:e}function an(e,{isViewerShown:t=!0}={}){return(e.githubReviews??[]).filter(e=>t||!e.isViewer).sort((e,t)=>Number(t.isViewer)-Number(e.isViewer)).map(t=>({login:t.login,tone:nn(t.state),text:$t(t,w(e)),submittedAt:t.submittedAt}))}function on(e){return Lt[e]}function sn(e){return Rt[e]}function cn(e){let t=at(e.body);return t.length>0?t:e.severity?[e.severity]:[]}function ln(e){return mt(cn(e))}function un(e){return e!==`LOW`}function dn(e){return un(ln(e))}var fn=new Set(`ts.tsx.js.jsx.mjs.cjs.json.jsonc.css.scss.less.html.md.mdx.py.go.rs.rb.java.kt.kts.swift.c.h.cc.cpp.hpp.cs.php.sh.bash.zsh.yml.yaml.toml.ini.sql.vue.svelte.astro.lock.txt.ex.exs.erl.scala.dart.lua.tf.proto.graphql.gql.xml.gradle`.split(`.`)),pn=/^([\w.@~/-]+):\d+(?:-\d+)?$/;function mn(e){let t=pn.exec(e)?.[1];if(t===void 0)return!1;let n=t.slice(t.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return r<0?!1:fn.has(n.slice(r+1).toLowerCase())}var hn=/^```([^\n`]*)\n([\s\S]*?)^```[ \t]*(?=\r?$)/gm;function gn(e){let t=[],n=0;for(let r of e.matchAll(/`([^`\n]+)`/g)){let i=r.index??0;i>n&&t.push({text:e.slice(n,i),kind:`text`});let a=r[1]??``;t.push({text:a,kind:mn(a)?`citation`:`code`}),n=i+r[0].length}return n<e.length&&t.push({text:e.slice(n),kind:`text`}),t}function _n(e){return e.split(/\r?\n\s*\r?\n/).filter(Boolean).map(e=>{let t=e.match(/^(Suggested fix:|Fix:|Open question[.,:])\s*/),n=t?.[1]??``;return{kind:`prose`,lead:n,leadKind:n.startsWith(`Open question`)?`question`:n?`fix`:null,segments:gn(e.slice(t?.[0].length??0))}})}function vn(e){let t=st(e),n=ot(t),r=n?t.slice(n.length).trim():t,i=[],a=0;for(let e of r.matchAll(hn)){let t=e.index??0;i.push(..._n(r.slice(a,t).trim()));let n=(e[1]??``).trim().split(/\s+/)[0]||null;i.push({kind:`code`,language:n,code:(e[2]??``).replace(/\r?\n$/,``)}),a=t+e[0].length}return i.push(..._n(r.slice(a).trim())),{tag:n?.reviewer??null,severity:n?.severity??null,paragraphs:i}}function yn(e){let t=e.find(e=>e.kind===`prose`);if(!t)return`Open comment`;let n=`${t.lead} ${t.segments.map(e=>e.text).join(``)}`.trim(),r=n.search(/[.!?](?=\s|$)/);return(r<0?n:n.slice(0,r+1))||`Open comment`}function bn(e){let t=[`Fetch the diff`,`Check out the head`,`Review`,`Draft ready`],n={preparing:0,checkout:1,reviewing:2}[e];return t.map((e,t)=>({label:e,state:t<n?`done`:t===n?`active`:`todo`}))}function xn(e){return e===`full`?`full`:`light`}function Sn(e){return e.priorReviewedHead?`${xn(e.tier)} review of changes since ${i(e.priorReviewedHead)}`:`${xn(e.tier)} review`}function Cn(e){return e.reasons.join(`, `)}function wn(e){if(!e)return[];let t=[],n=e.goal.trim(),r=e.change.trim();return n&&t.push({kind:`goal`,text:n}),r&&t.push({kind:`change`,text:r}),t}var Tn=`This review ran before plain summaries existed, so only its verdict and findings remain. Re-run review to get a plain summary.`,En=new Set([`error`,`stale`,`discarded`,`posted`]);function Dn(e){return En.has(e)}function On(e){return e.liveHead&&e.liveHead!==e.reviewedHead?e.liveHead:null}function kn(e){let t=On(e);return t?`Reviewed at ${i(e.reviewedHead)}. The pull request is now at ${i(t)}.`:null}function An(e){let t=On(e);return t?`https://github.com/${e.repo}/compare/${e.reviewedHead}...${t}`:null}function jn(e){let t=[`at ${i(e.head)}`,jt(e.comments.length)];return e.wasPosted&&t.push(`posted`),t.join(`, `)}function Mn(e){let t=Nn(e);return`${t.charAt(0).toUpperCase()}${t.slice(1)}`}function Nn(e){return Vt[e]??String(e).toLowerCase()}function Pn(e){return Wt[e]??`dim`}function Fn(e){return Kt[e]??e}function In(e,t){return`${a(t-e.startedAt)} elapsed`}function Ln(e,t){let n=[In(e,t)],r=e.deadlineAt===null?0:e.deadlineAt-t;return r>0&&n.push(`times out in ${a(r)}`),e.phase===`reviewing`&&n.push(`${e.toolCalls} ${e.toolCalls===1?`tool call`:`tool calls`}`),n.join(`, `)}function Rn(e){return e.status===`stale`&&e.earlierReview?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now and hands it these findings.`:e.status===`stale`?`Out of date. New commits landed after this review, so its findings may not match the code any more. Automatic review runs after the configured wait; Re-run review starts it now.`:e.status===`discarded`?`Marked not mine. Not reviewed again until you re-run it.`:e.error||e.summary||`The review failed.`}function zn(e,t){let n=t.side===`LEFT`?` (old)`:``;return`${e}:${t.line}${n}`}function Bn(e){return zn(e.path,e)}function Vn(e){return zn(e.path.split(`/`).filter(Boolean).at(-1)??e.path,e)}function Hn(e,t){let n=e.trim();return n?t.trim()?`${n}\n\n${t}`:n:t}function Un(e){return{key:e,action:`discard`,body:``,comments:[]}}function D(e,t,n,r,i){return t===`approve-only`?{key:e.key,head:e.reviewedHead,action:t,body:``,comments:[]}:{key:e.key,head:e.reviewedHead,action:t,body:n,...i?{threadId:i}:{},comments:r.map(({path:e,line:t,side:n,body:r})=>({path:e,line:t,side:n,body:r}))}}function Wn(e){return e.note.trim()!==``||e.comments.length>0||e.generalFindings.length>0}function Gn(e,t,n){return t===`approve`&&!Wn(n)?D(e,`approve-only`,``,[]):D(e,t,Hn(n.note,[et,gt(e.body),...n.generalFindings.map(e=>e.markdown)].filter(Boolean).join(`
|
|
8
8
|
|
|
9
9
|
`)),n.comments)}function Kn(e){let t=e.comments.length+e.generalFindings.length;return[e.note.trim()?`your note`:``,t?`${t} ${t===1?`finding`:`findings`}`:``].filter(Boolean).join(` and `)}function qn(e){return`${e} inline ${e===1?`comment`:`comments`}`}function Jn(e,t,n){let r=O(n);return Wn(t)?{event:r,detail:`${[t.note.trim()?`your note`:`no note`,...t.comments.length>0?[qn(t.comments.length)]:[],...t.generalFindings.length>0?[`${t.generalFindings.length} in the review body`]:[]].join(`, `)}, at ${i(e.reviewedHead)}.`}:{event:r,detail:or(n)?`Needs a ticked finding or a note.`:`A bare approval at ${i(e.reviewedHead)}, with no note or comments.`}}function Yn(e,t){let n=Kn(t);return e===`approve`&&n?`Approved on GitHub with ${n}`:e===`comment`&&n?`Commented on GitHub with ${n}`:e===`request-changes`&&n?`Requested changes on GitHub with ${n}`:cr(e)}var Xn=Object.freeze({approve:`Approve`,"approve-only":`Approve`,comment:`Comment`,"request-changes":`Request changes`,discard:`Not mine`,requeue:`Re-run review`,"resolve-thread":`Resolve`});function O(e){return Xn[e]}var Zn=new Set([`REQUEST CHANGES`,`BLOCKED`]);function Qn(e){return Zn.has(e)?[`request-changes`,`approve`,`comment`]:[`approve`,`comment`,`request-changes`]}function $n(e){return Zn.has(e)?`request-changes`:`approve`}function er(e,t){return`${O(e)} selected. ${t} posts, Esc cancels.`}function tr(e){return`Agent recommends: ${O($n(e)).toLowerCase()}`}var nr=` · `;function rr(e){let t=`Agent: ${O($n(e.verdict)).toLowerCase()}`,n=[...e.comments.filter(dn).map(ln),..._t(e.body).map(e=>e.severity).filter(un)];if(n.length===0)return`${t}${nr}no findings`;let r=mt(n.flatMap(e=>e?[e]:[])),i=`${n.length} ${n.length===1?`finding`:`findings`}`;return`${t}${nr}${r?`${i}, top ${r.toLowerCase()}`:i}`}var ir=Object.freeze({SUCCESS:`Passing`,FAILURE:`Failing`,ERROR:`Failing`,PENDING:`Running`,EXPECTED:`Running`});function ar(e){return e?ir[e]:`None reported`}function or(e){return e===`comment`||e===`request-changes`}function sr(e){return e.status===`ready`?{primary:Qn(e.verdict),secondary:[`requeue`,`discard`]}:r(e)?{primary:[`approve-only`],secondary:[`requeue`]}:e.status===`error`||e.status===`stale`?{primary:[`requeue`],secondary:[`discard`]}:Dn(e.status)?{primary:[`requeue`],secondary:[]}:{primary:[],secondary:[]}}function k(e){return Jt[e]}function cr(e){return qt[e]}function lr(e){return e===0?`Picked for review. It starts on the next poll.`:`Waiting for a free review slot. It starts as soon as ${e===1?`the review`:`one of the ${e} reviews`} in progress finishes.`}function ur(e){return e?e.configured?e.error?`Review drafts will show here once GitHub answers.`:`No review drafts yet. New teammate pull requests show up here after the next poll.`:e.reason?`Team review is not running: ${e.reason}.`:`Team review is off.`:`Waiting for the team review lane.`}function dr(e){return e?.configured&&e.reason||null}function fr(e){return`${e.key}@${e.reviewedHead}:${e.status}:${e.summary}:${an(e).map(e=>e.text).join(`, `)}`}function pr(e){return`reviewedHead`in e?JSON.stringify([e.prCreatedAt,e.reviewedAt,e.postedAt,e.githubReviews,e.liveHead,e.priorReviewedHead,e.viewerThreads]):JSON.stringify([e.prCreatedAt,e.priorReviewedHead])}var mr=12e4,hr=`The server did not answer within ${mr/1e3} s. Check GitHub before trying again.`,gr=`${o} Check GitHub before trying again.`,_r=`M4.5 0.5L8.5 5.5L4.5 10.5L0.5 5.5Z`,vr=`GitHub review`,yr=Object.freeze({"pick-approve":`approve`,"pick-request-changes":`request-changes`,"pick-comment":`comment`}),A=E(),j=null,br=null,M=null,N=null,P=null,F=null,I=null,L=null,xr=null,Sr=null,R=new Map,Cr=Me(()=>j),wr=Me(()=>j),z=Me(()=>j),Tr=new WeakMap,B=new Map,V=new Map,H=new Map;function Er(e){let t=on(e),n=f(`span`,`pr-severity-meter`);if(n.setAttribute(`role`,`img`),n.setAttribute(`aria-label`,`${e.toLowerCase()} severity`),n.style.color=`var(${t.colorToken})`,e===`CRITICAL`){let e=de(14,17);e.classList.add(`pr-severity-halo`),e.setAttribute(`viewBox`,`0 0 9 11`),e.append(x(`path`,{d:_r,fill:`currentColor`})),n.append(e)}for(let e=0;e<3;e+=1){let r=de(9,11),i=e<t.filledCount;r.append(x(`path`,{d:_r,fill:i?`currentColor`:`none`,stroke:i?`currentColor`:`var(--border-hover)`,"stroke-width":`1`})),n.append(r)}return n}function Dr({verdict:e}){let t=f(`span`,`pr-verdict-seal`);t.dataset.tone=Pn(e);let n=de(20,20),r=sn(e);return n.append(x(`circle`,{cx:`10`,cy:`10`,r:`8.5`,fill:r===`cross`?`currentColor`:`none`,stroke:`currentColor`,"stroke-width":`1.5`})),r===`check`&&n.append(x(`path`,{d:`M6 10.5L8.7 13L14 7.5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`})),r===`dot`&&n.append(x(`circle`,{cx:`10`,cy:`10`,r:`2.4`,fill:`currentColor`})),r===`bar`&&n.append(x(`path`,{d:`M6 10H14`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`})),r===`cross`&&n.append(x(`path`,{d:`M7 7L13 13M13 7L7 13`,stroke:`var(--bg)`,"stroke-width":`1.8`,"stroke-linecap":`round`})),t.append(n,f(`span`,null,Mn(e))),t}function Or(){let e=de(16,16);return e.append(x(`rect`,{x:`1`,y:`1`,width:`14`,height:`14`,rx:`2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`})),e.append(x(`path`,{d:`M6 6.2C6 4.9 7 4.2 8 4.2C9.1 4.2 10 5 10 6C10 7.4 8 7.4 8 9.2`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linecap":`round`})),e.append(x(`circle`,{cx:`8`,cy:`11.6`,r:`0.9`,fill:`currentColor`})),e}function kr(e){return l(`pr-link`,C(e.repo,e.number),e.url)}function Ar(e){let t=typeof e==`string`?Date.parse(e):e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?null:t}function U(e,t){let n=Ar(t);if(n===null)return null;let r=f(`span`,null,`${e}${e?` `:``}${De(n)}`);return r.dataset.ageAt=String(n),r.dataset.ageLabel=e,r}function W(e){let t=Tr.get(e);t&&(e.title=`${t()}${e.dataset.unseen?`
|
|
10
|
-
New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function jr(){z.reset(),Mr(j)}Oe(jr);function Mr(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))Tr.has(t)&&(W(t),z.onTick(()=>W(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=A?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?en(e):null;if(!n)continue;let r=()=>{t.textContent=tn(n,G(n.submittedAt))};r(),z.onTick(r)}for(let t of e.querySelectorAll(`[data-review-title]`)){let e=t.dataset.reviewTitle??``,n=t.dataset.ageAt===void 0?null:Number(t.dataset.ageAt),r=()=>{let r=n===null?null:De(n),i=Ne()?rn(vr,r):rn(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),z.onTick(r)}for(let t of e.querySelectorAll(`[data-age-at]`)){if(t.dataset.reviewTitle!==void 0)continue;let e=Number(t.dataset.ageAt),n=t.dataset.ageLabel??``;z.track(t,e,()=>`${n}${n?` `:``}${De(e)}`)}}}function Nr(e,t,n,r=!0){let i=an(e,{isViewerShown:r});if(i.length===0)return null;let a=f(`span`,t),o=i.map(e=>({login:e.login,tone:e.tone,title:rn(Ne()?vr:e.text,G(e.submittedAt))})),s=c(o,n);for(let[e,t]of i.entries()){let n=s.children[e];if(!(n instanceof HTMLElement))continue;n.dataset.reviewTitle=t.text;let r=Ar(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(s),a}function G(e){let t=Ar(e);return t===null?null:De(t)}function Pr(e,t,n){let r=f(`span`,n);return r.append(d({login:e,cssPx:t}),f(`span`,`pr-author-login`,e)),r}function Fr(e,t){return`${C(e.repo,e.number)}\n${kt(e,t).meaning}`}function Ir(e,t,n){let r=f(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key;let i=`reviewedHead`in e?en(e):null;Tr.set(r,()=>Ne()?Fr(e,t):Mt(e,t,{opened:G(e.prCreatedAt),reviewed:`reviewedHead`in e?G(e.reviewedAt):null,posted:`reviewedHead`in e?G(e.postedAt):null,viewerApproval:G(i?.submittedAt),githubReviews:`reviewedHead`in e?an(e,{isViewerShown:t!==`posted`}).map(e=>G(e.submittedAt)):[]})),W(r);let a=Rr(e,n);if(t===`inReview`){let t=e,n=f(`span`,`pr-queue-elapsed`);Cr.track(n,t.startedAt,()=>In(t,Date.now())),a.append(n)}if(t===`queued`){let t=U(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=U(``,t.reviewedAt)??U(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),a.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(a),r;r.classList.remove(`pr-queue-row-quiet`);let o=kt(e,t),s=f(`span`,`pr-queue-glyph`);s.append(v(o.icon,o.tone));let c=f(`span`,`pr-queue-bottom`);if(c.append(Lr(t===`ready`&&`reviewedHead`in e?{tone:o.tone,meaning:rr(e)}:o),Pr(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=f(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(f(`span`,`pr-phase-label`,Fn(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:Nr(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),r}function Lr(e){let t=f(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function Rr(e,t){let n=f(`span`,`pr-queue-top`);return n.append(f(`strong`,`pr-queue-ref`,It(e.repo,e.number,t)),f(`strong`,`pr-queue-ref-compact`,It(e.repo,e.number,!1)),f(`span`,`pr-queue-title`,e.title)),n}function zr({title:e,detail:t}){let n=f(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=f(`strong`,`pr-caught-up-title`);return r.append(v(`ready`,`ok`),f(`span`,null,e)),n.append(r,f(`p`,`pr-caught-up-detail`,t)),n}var Br=`Open in session`,Vr=`Preparing the branch and session.`;function Hr(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;S(r,n,t);let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function Ur(e,t){let n=R.get(e);n&&window.clearTimeout(n.timer),R.set(e,{requestId:null,timer:0,text:t,tone:`error`}),Hr(e,t,`error`)}function Wr(e,t,n){if(R.get(e)?.requestId)return;let r=h(`open-team-review-session`);if(!m({type:`open-team-review-session`,requestId:r,key:e})){S(n,`error`,o);return}let i=window.setTimeout(()=>Ur(e,`The server did not answer within ${mr/1e3} s.`),mr);R.set(e,{requestId:r,timer:i,text:Vr,tone:`busy`}),t.disabled=!0,S(n,`busy`,Vr)}function Gr(e){let t=f(`div`,`pr-session-open`),n=f(`button`,`pr-action pr-session-open-button`,Br);n.type=`button`;let r=R.get(e.key);n.disabled=!!r?.requestId;let i=f(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&S(i,r.tone,r.text),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>Wr(e.key,n,i)),t.append(n,i),t}function Kr(e,{hasFactsRail:t=!1}={}){let n=f(`div`,`pr-detail-heading`);n.dataset.signature=pr(e);let r=f(`div`,`pr-detail-title`);r.append(kr(e),f(`h2`,null,e.title));let i=f(`div`,`pr-detail-meta`);i.append(Pr(e.author,20,`pr-detail-author`));let a=f(`span`,null,Sn(e));a.title=Cn(e),i.append(a);let o=U(`Opened`,e.prCreatedAt);if(o&&i.append(o),`reviewedHead`in e){let t=U(`Reviewed`,e.reviewedAt);t&&i.append(t);let n=U(`Posted`,e.postedAt);n&&i.append(n)}let s=`reviewedHead`in e?Nr(e,`pr-detail-github`,20):null;if(s&&i.append(s),n.append(r,i,Gr(e)),`reviewedHead`in e&&!t){let t=At(e.viewerThreads);if(t){let r=f(`p`,`pr-viewer-threads`,t);se(e)&&(r.dataset.state=`all-resolved`),n.append(r)}}let c=`reviewedHead`in e?en(e):null;if(c){let t=f(`p`,`pr-rereview-notice`,tn(c,G(c.submittedAt)));t.dataset.reviewKey=e.key,n.append(t)}return n}function qr(e,t,n={}){let r=e.querySelector(`.pr-detail-heading`);return!r||r.dataset.signature===pr(t)||r.replaceWith(Kr(t,n)),e}function Jr(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function Yr(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(f(`code`,null,n.text));continue}let t=f(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function Xr(e,t){return Yr(e,gn(t))}function Zr(e){let t=f(`ul`,`pr-assessment-list`);for(let n of e)t.append(Xr(f(`li`,null),n));return t}function Qr(e){let t=e.assessment?.handChecks??[];if(t.length===0)return[];let n=f(`section`,`pr-hand-checks`);n.setAttribute(`aria-label`,`Check by hand`),n.append(f(`h3`,`pr-assessment-title`,`Check by hand`));let r=t.map(e=>e.paths.length===0?e.text:`${e.text}: ${e.paths.map(e=>`\`${e}\``).join(`, `)}`);return n.append(Zr(r)),[n]}function $r(e){let t=wn(e.assessment);if(t.length===0)return[];let n=f(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(f(`h3`,`pr-assessment-title`,`About this PR`));for(let e of t){let t=e.kind===`goal`?`pr-verdict-summary pr-about-goal`:`pr-verdict-summary`;n.append(Xr(f(`p`,t),e.text))}return[n]}function ei(e){let t=f(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=f(`div`,`pr-verdict-line`);n.append(Dr(e),f(`strong`,`pr-verdict-recommendation`,tr(e.verdict))),t.append(n);let{assessment:r}=e;if(!r)return t.append(f(`p`,`pr-verdict-legacy`,Tn)),e.summary.trim()&&t.append(Xr(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t;if(t.append(Xr(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),r.gaps.length>0){let e=Zr(r.gaps);e.classList.add(`pr-verdict-gaps`),e.setAttribute(`aria-label`,`Not covered`),t.append(e)}if(r.checked.length===0)return t;let i=f(`details`,`pr-verdict-checked`);return i.append(f(`summary`,null,`What it checked (${r.checked.length})`),Zr(r.checked)),t.append(i),t}function ti(e){if(e.kind===`code`){let t=f(`pre`,`pr-comment-code`),n=f(`code`,null);return n.textContent=e.code,t.append(n),t}let t=f(`p`,`pr-comment-paragraph`);if(e.lead){let n=f(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(Or()),n.append(e.lead),t.append(n,` `)}return Yr(t,e.segments)}function ni(e){return{body:e.body,severity:ln(e),location:Vn(e),locationTitle:Bn(e),...e.excerpt?{excerpt:e.excerpt,citedLine:e.line}:{}}}var ri=Object.freeze({add:`+`,del:`-`,context:` `});function ii(e,t){let n=f(`div`,`pr-diff-excerpt`);for(let r of e){let e=f(`div`,`review-line review-line-${r.kind}`);r.line!==null&&r.line===t&&(e.dataset.cited=`true`),e.append(f(`span`,`pr-diff-excerpt-number`,r.line===null?``:String(r.line)),f(`span`,`review-line-gutter`,ri[r.kind]),f(`span`,`review-line-text`,r.text)),n.append(e)}return n}function ai(e){let t=e.location??`Not on a changed line, posts in the review body`;return{body:e.body,severity:e.severity,location:e.location?.split(`/`).at(-1)??`general`,locationTitle:t}}function oi({body:e,severity:t,location:n,locationTitle:r,excerpt:i,citedLine:a}){let o=f(`details`,`pr-comment-content`),s=f(`summary`,`pr-comment-header`),c=vn(e);t&&s.append(Er(t));let l=f(`span`,`pr-comment-location`,n);l.title=r,s.append(l),s.append(f(`span`,`pr-comment-preview`,yn(c.paragraphs))),o.append(s);let u=f(`div`,`pr-comment-paragraphs`);for(let e of c.paragraphs)u.append(ti(e));return o.append(u),i&&i.length>0&&o.append(ii(i,a)),o.open=t===`HIGH`||t===`CRITICAL`,o}function si(e,t){let n=f(`details`,`pr-disclosure pr-earlier-review`),r=f(`summary`,`pr-disclosure-summary`);r.append(f(`span`,`pr-disclosure-label`,`Earlier review`),f(`span`,`pr-disclosure-preview`,jn(e)));let i=f(`div`,`pr-earlier-review-body`),a=f(`div`,`pr-verdict-line`);a.append(Dr(e)),i.append(a),e.summary.trim()&&i.append(Xr(f(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=f(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(oi(ni(t))),i.append(e)}return n.append(r,i),n.open=t,n}function ci(e){let t=kn(e);if(!t)return[];let n=f(`p`,`pr-changed-since`,t);return n.append(` `,l(`pr-changed-since-link`,`Compare changes`,An(e),`Open the commits since this review on GitHub`)),[n]}function li(e){let t=A?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return L=null,[];if(L?.key===e.key&&L.head===t.head)return[L.element];let n=si(t,!1);return L={key:e.key,head:t.head,element:n},[n]}function ui(e,t){let n=f(`button`,`pr-post-choice`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function di(e,t,n,r){let i=f(`article`,`pr-comment-card`),a=f(`div`,`pr-post-toggle`);a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,`Post or drop the finding on ${e.locationTitle}`);let o=()=>{let e=t.has(n);c.setAttribute(`aria-pressed`,String(e)),l.setAttribute(`aria-pressed`,String(!e)),i.dataset.included=String(e)},s=e=>{e&&t.add(n),e||t.delete(n),o(),r()},c=ui(`Post`,()=>s(!0)),l=ui(`Drop`,()=>s(!1));return a.append(c,l),o(),i.append(a,oi(e)),i}var fi=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function pi(e,t,n,r,i=cr(n.action)){let a=xr?.captureTurnOrder()??[];P=null;let o=h(`team-review-action`);if(!m({type:`team-review-action`,requestId:o,...n}))return!1;let s=window.setTimeout(()=>{H.delete(t.key),r(!1,hr)},mr);return H.set(t.key,{requestId:o,action:n.action,outcomeText:i,origin:e,capturedOrder:a,pullRequest:C(t.repo,t.number),timer:s,settle:r}),!0}function mi(e){let t=f(`footer`,`pr-footer`),n=hi(`discard`,()=>{H.has(e.key)||(n.disabled=!0,S(i,`busy`,k(`discard`)),!pi(`other`,e,Un(e.key),a)&&a(!1,o))}),r=H.has(e.key);n.disabled=r;let i=f(`span`,`pr-action-status`);r&&S(i,`busy`,k(`discard`)),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(e,t,r=e?`ok`:`error`)=>{n.disabled=e,S(i,r,t)};return t.append(n,i),t}function hi(e,t,n=!1){let r=f(`button`,n?`pr-action pr-action-ghost`:`pr-action`,O(e));return r.type=`button`,r.dataset.action=e,r.addEventListener(`click`,()=>t(e)),r}function gi(e,t,n=``){let r=sr(e),i=f(`footer`,`pr-footer pr-decision-bar`),a=f(`span`,`pr-action-status`,n);a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`);let o=r.primary.map(e=>hi(e,t)),s=r.secondary.map(e=>hi(e,t,!0));return i.append(...o,f(`span`,`pr-decision-spacer`),...s,a),{footer:i,status:a,buttons:[...o,...s]}}var _i=0;function vi(e){let t=f(`section`,`pr-note`);_i+=1;let n=f(`textarea`,`pr-body-input pr-note-input`);n.id=`pr-note-${_i}`,n.rows=2,n.spellcheck=!0,n.placeholder=`Optional. Posts at the top of the review, above the automated-review label.`,n.addEventListener(`input`,e);let r=f(`label`,`pr-section-heading`,`Your note`);return r.htmlFor=n.id,t.append(r,n),{section:t,input:n}}function yi(e,...t){let n=f(`div`,`pr-fact`),r=f(`dd`,null);return r.append(...t),n.append(f(`dt`,null,e),r),n}function bi(e){return JSON.stringify([e.checksState,e.viewerThreads,e.liveHead])}function xi(e){let t=f(`section`,`pr-desk-facts`);t.setAttribute(`aria-label`,`This PR`),t.dataset.signature=bi(e);let n=f(`dl`,`pr-fact-list`),r=An(e),i=r?[kn(e)??``,` `,l(`pr-changed-since-link`,`Compare changes`,r,`Open the commits since this review on GitHub`)]:[`No new commits`];return n.append(yi(`Checks`,ar(e.checksState)),yi(`Threads`,At(e.viewerThreads)??`None of yours`),yi(`Since review`,...i)),t.append(f(`h3`,`pr-assessment-title`,`This PR`),n),t}function Si(e,t){let n=e.querySelector(`.pr-desk-facts`);n&&n.dataset.signature!==bi(t)&&n.replaceWith(xi(t))}function Ci(e){let t=f(`article`,`pr-detail pr-desk`),n=f(`div`,`pr-desk-column`),r=f(`aside`,`pr-desk-rail`);r.setAttribute(`aria-label`,`Decision`);let i=f(`div`);i.dataset.reviewThreads=``,n.append(Kr(e,{hasFactsRail:!0}),...$r(e)),e.earlierReview&&n.append(si(e.earlierReview,!1)),n.append(i,ei(e),...Qr(e));let a=_t(e.body),s=new Set(e.comments.flatMap((e,t)=>dn(e)?[t]:[])),c=new Set(a.flatMap((e,t)=>un(e.severity)?[t]:[])),l=e.comments.length+a.length,u=f(`section`,`pr-posts`);u.setAttribute(`aria-label`,`Findings`);let d=f(`div`,`pr-posts-heading`),p=f(`span`,null);d.append(f(`h3`,null,`Findings`),p),u.append(d);let m=vi(me),h=f(`section`,`pr-will-post`);h.setAttribute(`aria-label`,`Will post to GitHub`);let ee=f(`strong`,`pr-will-post-event`),te=f(`p`,`pr-will-post-detail`);te.setAttribute(`aria-live`,`polite`),h.append(f(`h3`,`pr-assessment-title`,`Will post to GitHub`),ee,te,m.section),r.append(h,xi(e));let ne=()=>({note:m.input.value,comments:e.comments.filter((e,t)=>s.has(t)),generalFindings:a.filter((e,t)=>c.has(t))}),g=!1,_=!1,v=[],y=-1,b=null,x=gi(e,t=>{if(H.has(e.key))return;_=!1,b=null,T();let n=ne(),r=t===`approve`||t===`comment`||t===`request-changes`?Gn(e,t,n):D(e,t,``,[]);C(!0),S(x.status,`busy`,k(r.action)),!pi(`ready`,e,r,he,Yn(r.action,n))&&he(!1,o)});function ie(){let e=Wn(ne());for(let t of x.buttons)t.disabled=g||or(t.dataset.action)&&!e;t.dataset.busy=String(g)}function C(e){g=e,ie()}function w(){let t=ne();p.textContent=`${t.comments.length+t.generalFindings.length} of ${l} will post. Low severity starts unticked.`;let n=Jn(e,t,$n(e.verdict));ee.textContent=n.event,te.textContent=n.detail,ie()}function T(){for(let e of x.buttons)e.dataset.picked=String(e.dataset.action===b)}function oe(){let e=v[y];for(let[e,t]of v.entries())t.dataset.current=String(e===y);e.querySelector(`.pr-post-choice[aria-pressed="true"]`)?.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`})}function se(e){return v.length!==0&&(y=Math.min(v.length-1,Math.max(0,y+e)),oe(),!0)}function ce(){if(y===-1&&!se(1))return!1;let e=v[y],t=e.dataset.included===`true`?`Drop`:`Post`;return[...e.querySelectorAll(`.pr-post-choice`)].find(e=>e.textContent===t)?.click(),oe(),!0}function le(e){return!g&&(_=!1,b=e,T(),m.input.focus(),S(x.status,`ok`,er(e,re(ae))),!0)}function ue(){let t=b??(document.activeElement===m.input?$n(e.verdict):null),n=x.buttons.find(e=>e.dataset.action===t);return!t||!n?!1:g||H.has(e.key)?!0:n.disabled?(S(x.status,`error`,Jn(e,ne(),t).detail),!0):(n.click(),!0)}function de(){return b?(b=null,T(),S(x.status,null,``),!0):!1}function fe(e){let t=yr[e];return t?le(t):e===`next-finding`?se(1):e===`previous-finding`?se(-1):e===`toggle-finding`?ce():e===`post`?ue():e===`cancel`&&de()}function pe(){_&&(_=!1,S(x.status,null,``))}function me(){pe(),w()}let he=(e,t,n=e?`ok`:`error`)=>{C(e),S(x.status,n,t)},ge=(t,n=`ok`)=>{H.has(e.key)||(_=!0,S(x.status,n,t))};for(let[t,n]of e.comments.entries())v.push(di(ni(n),s,t,me));for(let[e,t]of a.entries())v.push(di(ai(t),c,e,me));return u.append(...v),l>0&&n.append(u),t.append(n,r,x.footer),Di(t,e),w(),{signature:fr(e),element:t,settle:he,showReceipt:ge,clearReceipt:pe,runKey:fe}}function wi(e){let t=B.get(e.key);if(t&&(H.has(e.key)||t.signature===fr(e)))return Di(t.element,e),Si(t.element,e),qr(t.element,e,{hasFactsRail:!0}),t;let n=Ci(e);return B.set(e.key,n),n}function Ti(e,t){let n=f(`article`,`pr-detail`),r=f(`div`,`pr-detail-heading`),i=f(`div`,`pr-detail-title`);i.append(kr(e),f(`h2`,null,e.title));let a=f(`div`,`pr-detail-meta`);a.append(Pr(e.author,20,`pr-detail-author`));let o=U(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,Gr(e)),n.append(r,f(`p`,`pr-attention-detail`,lr(t)),mi(e)),n}function Ei(e){let t=f(`article`,`pr-detail`);t.append(Kr(e));let n=f(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=f(`ol`,`pr-progress-tracker`);for(let t of bn(e.phase)){let e=f(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(f(`span`,`pr-progress-bar`),f(`span`,null,t.label)),r.append(e)}let i=f(`div`,`pr-progress-text`);wr.track(i,e.startedAt,()=>Ln(e,Date.now())),n.append(r,i),t.append(n);let a=f(`section`,`pr-steps`);a.append(f(`h3`,null,`Latest agent steps`));let o=f(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=f(`li`,`pr-step`),r=f(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(f(`span`,`pr-step-at`,s(e.startedAt,t.at)),f(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...li(e),mi(e)),t}function Di(e,t){if(H.has(t.key))return;let n=e.querySelector(`[data-review-threads]`),r=JSON.stringify([t.liveHead,t.threads]);n&&n.dataset.reviewThreads!==r&&(n.replaceChildren(...ki(t)),n.dataset.reviewThreads=r)}function Oi(e,t,n,r){let i=f(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(f(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!Qt(e,t?3:8))return i;let a=f(`details`,`pr-thread-disclosure`);return a.append(f(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),f(`p`,`pr-thread-body`,e)),n&&a.append(l(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function ki(e){let t=Xt(e);if(t.length===0)return[];let n=f(`section`,`my-pr-threads-section`);n.append(f(`h3`,`pr-section-heading`,`Answered threads`));let r=f(`div`,`my-pr-threads`);for(let n of t){let t=f(`div`,`my-pr-thread pr-thread-card`),i=f(`div`,`my-pr-thread-heading pr-thread-heading`),a=f(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(l(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(f(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(f(`div`,`my-pr-thread-meta`,`Your comment`),Oi(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let s=f(`div`,`pr-detail-meta pr-thread-reply-meta`);s.append(f(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let c=U(``,n.thread.lastReplyAt);c&&s.append(c);let u=f(`span`,`pr-action-status`);u.setAttribute(`role`,`status`);let d=f(`button`,`pr-action`,`Resolve`);d.type=`button`,d.disabled=!n.canResolve||H.has(e.key);let p=(e,t)=>{d.disabled=e||!n.canResolve,S(u,e?`ok`:`error`,t)};d.addEventListener(`click`,()=>{H.has(e.key)||(d.disabled=!0,S(u,`busy`,k(`resolve-thread`)),!pi(`other`,e,D(e,`resolve-thread`,``,[],n.thread.id),p)&&p(!1,o))}),t.append(s),n.thread.lastReplyBody&&t.append(Oi(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let m=f(`footer`,`pr-thread-footer`);m.append(u,d),t.append(m),n.thread.resolveError&&t.append(f(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function Ai(e){let t=f(`article`,`pr-detail`);if(t.append(Kr(e),...$r(e)),e.earlierReview&&t.append(si(e.earlierReview,e.status===`stale`)),t.append(...ki(e)),e.status===`posted`&&t.append(ei(e)),e.status!==`posted`&&t.append(f(`p`,`pr-attention-detail`,Rn(e))),e.status===`stale`&&t.append(...ci(e)),!Dn(e.status))return V.set(e.key,{signature:Jr(e),element:t,settle:()=>{}}),t;let n=gi(e,t=>{if(!H.has(e.key)){for(let e of n.buttons)e.disabled=!0;S(n.status,`busy`,k(t)),!pi(`other`,e,D(e,t,``,[]),r)&&r(!1,o)}},sr(e).primary.includes(`approve-only`)?fi:``),r=(e,t)=>{for(let t of n.buttons)t.disabled=e;S(n.status,e?`ok`:`error`,t)};return t.append(n.footer),V.set(e.key,{signature:Jr(e),element:t,settle:r}),t}function ji(e){if(!Dn(e.status)&&Xt(e).length===0)return Ai(e);let t=V.get(e.key);return t&&(H.has(e.key)||t.signature===Jr(e))?qr(t.element,e):Ai(e)}function Mi(e){if(!M||!N)return;let t=F===N?B.get(N):void 0,n=e.ready.find(e=>e.key===N&&e.status===`ready`);if(t&&n&&fr(n)!==t.signature&&(F=null),t&&F){M.firstElementChild!==t.element&&M.replaceChildren(t.element),I=null;return}let r=e.ready.find(e=>e.key===N&&(ne(e).length>0||ie(e)));if(r&&r.status!==`ready`){let e=`threads:${Jr(r)}`,t=ji(r);if(I===e&&M.firstElementChild===t)return;M.replaceChildren(t),I=e;return}let i=[...e.ready,...e.noReviewNeeded].find(e=>e.key===N&&e.status===`ready`);if(i){let e=`ready:${fr(i)}`,t=wi(i);if(P&&t.showReceipt?.(P),P=null,I===e)return;M.replaceChildren(t.element),I=e;return}let a=e.inReview.find(e=>e.key===N);if(a){wr.reset(),M.replaceChildren(Ei(a)),I=`inReview:${a.key}`;return}let o=e.queued.find(e=>e.key===N);if(o){let t=`queued:${o.key}:${e.inReview.length}`;if(I===t)return;M.replaceChildren(Ti(o,e.inReview.length)),I=t;return}let s=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===N);s&&(M.replaceChildren(ji(s)),I=`${s.status}:${s.key}`)}function Ni(){let e=f(`p`,`pr-empty`,ur(A));return A&&!A.configured&&e.append(` `,pe(zt,Bt,`Open Team review settings`)),e}function Pi(){let e=dr(A);return e?[f(`p`,`my-pr-note`,e)]:[]}function Fi(e){for(let t of[...B.keys()])e.has(t)||H.has(t)||t===F||B.delete(t);let t=new Set(A?.drafts.filter(e=>Dn(e.status)).map(e=>e.key)??[]);for(let e of V.keys())t.has(e)||H.has(e)||V.delete(e)}function Ii(){Cr.reset()}function Li(){z.reset(),Mr(j)}function Ri(e=null){P=null,F!==e&&(F=null);for(let e of B.values())e.clearReceipt?.()}function zi(e){if(!M||!N)return!1;if(e===`open-session`){let e=M.querySelector(`.pr-session-open-button`);return!e||e.disabled?!1:(e.click(),!0)}let t=B.get(N);return!t||M.firstElementChild!==t.element?!1:t.runKey?.(e)??!1}function Bi(){let e=P;return P=null,e}function Vi(){Ri(),N=null}function Hi(e,t){t===`clear`&&Ri(e),N=e,Mi(T(A)),Li()}function Ui(e){Fi(new Set([...e.ready,...e.noReviewNeeded].map(e=>e.key)))}function Wi(){let e=T(A);Ui(e),Mi(e),xr?.onChange(),Li()}function Gi(e){switch(e.kind){case`status`:A=E(),Wi();return;case`action-result`:Yi(e.message);return;case`open-session-result`:qi(e.message);return;case`connection`:Ji(e.isConnected)}}function Ki(e,t,n){return Sr=n?.openTerminal??Sr,xr=t,j=e,br||(br=f(`div`,`pr-detail-team`),M=f(`div`,`pr-detail-body`),br.append(M),Cr.ensure(),wr.ensure(),z.ensure(),A=E(),oe(Gi),br)}function qi(e){let t=e.key;if(!t)return;let n=R.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?Ur(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),R.delete(t),Hr(t,``,null),Sr?.(e.sessionId)))}function Ji(e){if(e)return;for(let[e,t]of R)t.requestId&&Ur(e,o);let t=[...H.values()];H.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,gr)}function Yi(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=H.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),H.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:cr(n.action)),V.delete(t.key),I=null,t.ok===!0&&Wi();return}let r=(n.origin===`ready`?B:V).get(t.key);if(t.ok===!0){n.origin===`other`&&V.delete(t.key);let e=Ft({action:n.action,outcomeText:n.outcomeText,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:N===t.key});if((r?.settle??n.settle)?.(!0,e.statusText,e.tone),e.tone===`error`&&n.origin===`ready`&&r&&(F=t.key,N&&N!==t.key&&B.get(N)?.showReceipt?.(`${n.pullRequest}: ${e.statusText}`,`error`),Mi(T(A))),!e.shouldAdvance)return;P=e.receipt,Ui(T(A)),xr?.onAdvance(t.key,n.capturedOrder)}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}var K=null,Xi=null,q=null,Zi=null,Qi=null,$i=null,ea=null,ta=null,na=null,ra=null,J=[],Y=`all`,X=null,ia,aa=!1,Z=!1,oa=null,sa=!1,ca=null,la=null,ua=0,da=2e3,Q=new Map;function fa(e,t){Re(Be(e))&&(t.querySelector(`.pr-queue-unseen`)?.remove(),delete t.dataset.unseen,e.source===`team`&&W(t))}function pa(e){K&&(K.dataset.detailOpen=String(e)),je(e)}function ma(){pa(!1),X&&Q.get(X)?.focus({preventScroll:!0})}function ha(){Qi&&(Qi.textContent=Ve(J,X))}function ga(e){!q||q.childElementCount===1&&q.firstElementChild===e||q.replaceChildren(e)}function _a(e){let t=_(J).length>0,n=e?`${e} `:``;return zr(t?{title:`New pull requests need you`,detail:`${n}Pick one from the queue.`}:{title:`All caught up`,detail:`${n}${Pe(J)}`})}function va(e){let t=Ue(J,X);ia=t?.key??null,t?t.source===`team`&&ea?(Hi(t.review.key,e),ga(ea)):t.source===`mine`&&ta&&(Vi(),Je(t.pr.key),ga(ta)):(ca=Bi()??ca,Vi(),q&&q.replaceChildren(aa?_a(ca):f(`p`,`pr-empty`,`Pick a pull request from the queue.`)))}function ya(e,{isFromQueue:t}){X=e,aa=!1,ca=null;for(let[t,n]of Q)n.setAttribute(`aria-current`,String(t===e));let n=Ue(J,e),r=Q.get(e);n&&r&&fa(n,r),va(`clear`),ba(),pa(!0),t&&document.documentElement.dataset.layout===`phone`&&q?.parentElement?.scrollIntoView({block:`start`})}function ba(){if(ha(),!Zi)return;let e=xe(J,X);Le(Zi,ze(ve(J)),e)}function xa(e){let t=Ue(J,e);if(!t)return;Ue(Se(J,Y),e)||(Y=`all`,na?.select(Y)),J.find(e=>e.items.includes(t))?.id===`aside`&&(Z=!0),X=e,$(),ya(e,{isFromQueue:!1});let n=Q.get(e);n?.focus({preventScroll:!0}),n?.scrollIntoView({block:`nearest`})}function Sa(e){let t=ue([...Q.keys()],X,e);return t?(t!==X&&xa(t),!0):!1}function Ca(e){return e===`next-row`?Sa(1):e===`previous-row`?Sa(-1):zi(e)}function wa(){return document.activeElement instanceof HTMLTextAreaElement&&document.activeElement.classList.contains(`pr-note-input`)}function Ta(e){if(e.repeat||e.defaultPrevented||!K||p(K)||ee()||document.activeElement?.classList.contains(`xterm-helper-textarea`))return;let t=ge(e);if(!t)return;let n=(t===`post`||t===`cancel`)&&wa();(!u(e)||n)&&Ca(t)&&e.preventDefault()}function Ea(e){window.clearTimeout(ua),la=e,ua=window.setTimeout(()=>{la=null,Q.get(e)?.removeAttribute(`data-just-acted`)},da)}function Da(e,t){let n=`team:${e}`;Ea(n);let r=me({capturedOrder:t,actedKey:n,groups:J});if(X=r,aa=r===null,oa=null,$(),r)for(let[e,t]of Q)t.setAttribute(`aria-current`,String(e===r));va(`keep`)}function Oa(e,t,n){if(e.source===`team`){let n=Ir(e.review,e.kind,t);return{container:n,row:n}}let r=Xe(e.pr,e.stackedOn,n.get(e.prKey));return{container:r.group,row:r.row}}function ka(e,t,n,r){let{container:i,row:a}=Oa(e,n,r);a.dataset.queueKey=e.key,a.setAttribute(`aria-current`,String(e.key===X)),e.key===la&&(a.dataset.justActed=`true`);let o=Be(e);if(t&&te(o)){let t=f(`span`,`tab-activity active pr-queue-unseen`);t.setAttribute(`aria-hidden`,`true`),a.dataset.unseen=o,a.append(t),e.source===`team`&&W(a)}return a.addEventListener(`click`,()=>ya(e.key,{isFromQueue:!0})),Q.set(e.key,a),i}function Aa(e){let t=f(`h3`,`pr-section-heading review-group-heading`),n=f(`span`,`review-group-count`,String(e.items.length));if(e.id!==`aside`)return t.append(f(`span`,null,e.title),n),t;let r=f(`button`,`review-group-toggle`),i=f(`span`,`review-group-chevron`,`▸`);return i.setAttribute(`aria-hidden`,`true`),r.append(i,e.title),r.type=`button`,r.setAttribute(`aria-expanded`,String(Z)),r.addEventListener(`click`,()=>{Z=!Z,oa=null,$()}),t.append(r,n),t}function ja(e,t,n){let r=f(`section`,`pr-queue-section`);if(r.dataset.group=e.id,r.append(Aa(e)),e.id===`aside`&&!Z)return r;for(let i of e.items)r.append(ka(i,e.id===`turn`,t,n));return r}function Ma(){let e=qe(y().status,Date.now()).filter(e=>e.tone!==`error`).map(e=>f(`p`,`my-pr-note`,e.text));return[...ra?[ra.notice]:[],...Pi(),...e]}function Na(){return J.some(e=>e.items.length>0)?[f(`p`,`pr-empty`,`No pull requests match this filter.`)]:[Ni(),f(`p`,`pr-empty`,$e(y().status))]}function Pa(){if(!$i)return;let e=E()?.team;if(!e){$i.replaceChildren();return}let t=f(`span`,`pr-team-chip`);t.append(d({login:e.slug,url:e.avatarUrl,cssPx:16}),f(`span`,null,e.name)),$i.replaceChildren(t)}function Fa(e,t){return JSON.stringify([e,[...t],X,Y,Z,he(),Ma().map(e=>e.textContent)],(e,t)=>e===`recentSteps`?void 0:t)}function $(){if(!Xi)return;let{sessionsByPrKey:e,status:t}=y();J=Ae(),Pa(),ra?.update(Ce([E(),t]));let n=Se(J,Y);aa||(X=ke(n,X)),ba();let r=Fa(n,e);if(r!==oa){oa=r;let t=document.activeElement instanceof HTMLElement&&Xi.contains(document.activeElement)?document.activeElement.dataset.queueKey:void 0;Ii(),Q.clear();let i=He(J),a=n.filter(e=>e.items.length>0).map(t=>ja(t,i,e));Xi.replaceChildren(...Ma(),...a.length>0?a:Na()),t&&Q.get(t)?.focus({preventScroll:!0}),Li()}(X!==ia||aa)&&va(`keep`)}function Ia(){sa||(sa=!0,queueMicrotask(()=>{sa=!1,$()}))}function La(){let e=_e();e&&xa(e)}function Ra(e){e.kind===`reveal`?La():ma()}function za(e){if(K)return;let t=we()??void 0;K=f(`div`,`pr-content review-queue`),e.append(K),na=Qe({label:`Show reviews`,scopes:Ee,selected:Y,onSelect:e=>{Y=e,$()}});let n=Ye({queueLabel:`Review queue`,scopeTabs:na.element,resizerLabel:`Resize review queue`});Xi=n.queue,q=f(`div`,`review-queue-detail`);let r=f(`div`,`review-queue-phone-bar`),i=f(`button`,`pr-action pr-action-ghost review-queue-back`,`Back to queue`);i.type=`button`,i.addEventListener(`click`,Fe),Qi=f(`span`,`review-queue-position`),r.append(i,Qi),n.detail.append(r,q),Zi=ye({onJump:()=>{be()},rowFor:e=>Q.get(e)},fe()),Zi.classList.add(`review-queue-banner`),n.queue.before(Zi),ra=Ge([`team-review`,`my-prs`],K),$i=f(`span`,`review-team-chip-slot`),n.foot.append($i,ra.control),K.append(n.columns),K.dataset.detailOpen=`false`,ea=Ki(K,{onChange:Ia,captureTurnOrder:()=>_(J).map(e=>e.key),onAdvance:Da},t),ta=Ze({onChange:Ia},t),ce({isLooking:()=>!p(K),selectedKey:()=>X}),Ie(Ra),document.addEventListener(`keydown`,Ta),$(),La()}var Ba={mount:za,refresh:Ke};export{Ba as view};
|
|
10
|
+
New ready review`:``}`,e.setAttribute(`aria-label`,e.title))}function jr(){z.reset(),Mr(j)}Oe(jr);function Mr(e){if(e){for(let t of e.querySelectorAll(`.pr-queue-row`))Tr.has(t)&&(W(t),z.onTick(()=>W(t)));for(let t of e.querySelectorAll(`.pr-rereview-notice`)){let e=A?.drafts.find(e=>e.key===t.dataset.reviewKey),n=e?en(e):null;if(!n)continue;let r=()=>{t.textContent=tn(n,G(n.submittedAt))};r(),z.onTick(r)}for(let t of e.querySelectorAll(`[data-review-title]`)){let e=t.dataset.reviewTitle??``,n=t.dataset.ageAt===void 0?null:Number(t.dataset.ageAt),r=()=>{let r=n===null?null:De(n),i=Ne()?rn(vr,r):rn(e,r);t.title=i,t.setAttribute(`aria-label`,i)};r(),z.onTick(r)}for(let t of e.querySelectorAll(`[data-age-at]`)){if(t.dataset.reviewTitle!==void 0)continue;let e=Number(t.dataset.ageAt),n=t.dataset.ageLabel??``;z.track(t,e,()=>`${n}${n?` `:``}${De(e)}`)}}}function Nr(e,t,n,r=!0){let i=an(e,{isViewerShown:r});if(i.length===0)return null;let a=f(`span`,t),o=i.map(e=>({login:e.login,tone:e.tone,title:rn(Ne()?vr:e.text,G(e.submittedAt))})),s=c(o,n);for(let[e,t]of i.entries()){let n=s.children[e];if(!(n instanceof HTMLElement))continue;n.dataset.reviewTitle=t.text;let r=Ar(t.submittedAt);r!==null&&(n.dataset.ageAt=String(r))}return a.append(s),a}function G(e){let t=Ar(e);return t===null?null:De(t)}function Pr(e,t,n){let r=f(`span`,n);return r.append(d({login:e,cssPx:t}),f(`span`,`pr-author-login`,e)),r}function Fr(e,t){return`${C(e.repo,e.number)}\n${kt(e,t).meaning}`}function Ir(e,t,n){let r=f(`button`,`pr-queue-row pr-queue-row-quiet`);r.type=`button`,r.dataset.reviewKey=e.key;let i=`reviewedHead`in e?en(e):null;Tr.set(r,()=>Ne()?Fr(e,t):Mt(e,t,{opened:G(e.prCreatedAt),reviewed:`reviewedHead`in e?G(e.reviewedAt):null,posted:`reviewedHead`in e?G(e.postedAt):null,viewerApproval:G(i?.submittedAt),githubReviews:`reviewedHead`in e?an(e,{isViewerShown:t!==`posted`}).map(e=>G(e.submittedAt)):[]})),W(r);let a=Rr(e,n);if(t===`inReview`){let t=e,n=f(`span`,`pr-queue-elapsed`);Cr.track(n,t.startedAt,()=>In(t,Date.now())),a.append(n)}if(t===`queued`){let t=U(``,e.prCreatedAt);t&&(t.classList.add(`pr-queue-elapsed`),a.append(t))}if(t!==`inReview`&&t!==`queued`){let t=e,n=U(``,t.reviewedAt)??U(``,t.prCreatedAt);n&&(n.classList.add(`pr-queue-elapsed`),a.append(n))}if(t===`discarded`)return r.classList.add(`pr-queue-row-compact`),r.append(a),r;r.classList.remove(`pr-queue-row-quiet`);let o=kt(e,t),s=f(`span`,`pr-queue-glyph`);s.append(v(o.icon,o.tone));let c=f(`span`,`pr-queue-bottom`);if(c.append(Lr(t===`ready`&&`reviewedHead`in e?{tone:o.tone,meaning:rr(e)}:o),Pr(e.author,16,`pr-queue-author`)),e.requestSource===`direct`){let e=f(`span`,`pr-queue-direct`,`@`);e.title=`Requested from you directly`,c.append(e)}t===`inReview`&&c.append(f(`span`,`pr-phase-label`,Fn(e.phase))),r.append(s,a,c);let l=t===`inReview`||t===`queued`?null:Nr(e,`pr-queue-reviewers`,16,t!==`posted`);return l&&c.append(l),r}function Lr(e){let t=f(`span`,`my-pr-stage pr-queue-state`,e.meaning);return t.dataset.tone=e.tone,t}function Rr(e,t){let n=f(`span`,`pr-queue-top`);return n.append(f(`strong`,`pr-queue-ref`,It(e.repo,e.number,t)),f(`strong`,`pr-queue-ref-compact`,It(e.repo,e.number,!1)),f(`span`,`pr-queue-title`,e.title)),n}function zr({title:e,detail:t}){let n=f(`section`,`pr-caught-up`);n.setAttribute(`role`,`status`);let r=f(`strong`,`pr-caught-up-title`);return r.append(v(`ready`,`ok`),f(`span`,null,e)),n.append(r,f(`p`,`pr-caught-up-detail`,t)),n}var Br=`Open in session`,Vr=`Preparing the branch and session.`;function Hr(e,t,n){for(let r of document.querySelectorAll(`.pr-session-open-status`)){if(r.dataset.reviewKey!==e)continue;S(r,n,t);let i=r.parentElement?.querySelector(`.pr-session-open-button`);i&&(i.disabled=!1)}}function Ur(e,t){let n=R.get(e);n&&window.clearTimeout(n.timer),R.set(e,{requestId:null,timer:0,text:t,tone:`error`}),Hr(e,t,`error`)}function Wr(e,t,n){if(R.get(e)?.requestId)return;let r=m(`open-team-review-session`);if(!h({type:`open-team-review-session`,requestId:r,key:e})){S(n,`error`,o);return}let i=window.setTimeout(()=>Ur(e,`The server did not answer within ${mr/1e3} s.`),mr);R.set(e,{requestId:r,timer:i,text:Vr,tone:`busy`}),t.disabled=!0,S(n,`busy`,Vr)}function Gr(e){let t=f(`div`,`pr-session-open`),n=f(`button`,`pr-action pr-session-open-button`,Br);n.type=`button`;let r=R.get(e.key);n.disabled=!!r?.requestId;let i=f(`span`,`pr-action-status pr-session-open-status`,r?.text??``);return i.dataset.reviewKey=e.key,r&&S(i,r.tone,r.text),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`),n.addEventListener(`click`,()=>Wr(e.key,n,i)),t.append(n,i),t}function Kr(e,{hasFactsRail:t=!1}={}){let n=f(`div`,`pr-detail-heading`);n.dataset.signature=pr(e);let r=f(`div`,`pr-detail-title`);r.append(kr(e),f(`h2`,null,e.title));let i=f(`div`,`pr-detail-meta`);i.append(Pr(e.author,20,`pr-detail-author`));let a=f(`span`,null,Sn(e));a.title=Cn(e),i.append(a);let o=U(`Opened`,e.prCreatedAt);if(o&&i.append(o),`reviewedHead`in e){let t=U(`Reviewed`,e.reviewedAt);t&&i.append(t);let n=U(`Posted`,e.postedAt);n&&i.append(n)}let s=`reviewedHead`in e?Nr(e,`pr-detail-github`,20):null;if(s&&i.append(s),n.append(r,i,Gr(e)),`reviewedHead`in e&&!t){let t=At(e.viewerThreads);if(t){let r=f(`p`,`pr-viewer-threads`,t);se(e)&&(r.dataset.state=`all-resolved`),n.append(r)}}let c=`reviewedHead`in e?en(e):null;if(c){let t=f(`p`,`pr-rereview-notice`,tn(c,G(c.submittedAt)));t.dataset.reviewKey=e.key,n.append(t)}return n}function qr(e,t,n={}){let r=e.querySelector(`.pr-detail-heading`);return!r||r.dataset.signature===pr(t)||r.replaceWith(Kr(t,n)),e}function Jr(e){return`${JSON.stringify(e.threads)}:${e.liveHead}:${e.status}:${e.reviewedHead}:${e.error??``}:${e.postedEvent??``}:${e.earlierReview?.head??``}`}function Yr(e,t){for(let n of t){if(n.kind===`text`){e.append(document.createTextNode(n.text));continue}if(n.kind===`code`){e.append(f(`code`,null,n.text));continue}let t=f(`span`,`pr-citation`,n.text);t.title=n.text,e.append(t)}return e}function Xr(e,t){return Yr(e,gn(t))}function Zr(e){let t=f(`ul`,`pr-assessment-list`);for(let n of e)t.append(Xr(f(`li`,null),n));return t}function Qr(e){let t=e.assessment?.handChecks??[];if(t.length===0)return[];let n=f(`section`,`pr-hand-checks`);n.setAttribute(`aria-label`,`Check by hand`),n.append(f(`h3`,`pr-assessment-title`,`Check by hand`));let r=t.map(e=>e.paths.length===0?e.text:`${e.text}: ${e.paths.map(e=>`\`${e}\``).join(`, `)}`);return n.append(Zr(r)),[n]}function $r(e){let t=wn(e.assessment);if(t.length===0)return[];let n=f(`section`,`pr-about-box`);n.setAttribute(`aria-label`,`About this PR`),n.append(f(`h3`,`pr-assessment-title`,`About this PR`));for(let e of t){let t=e.kind===`goal`?`pr-verdict-summary pr-about-goal`:`pr-verdict-summary`;n.append(Xr(f(`p`,t),e.text))}return[n]}function ei(e){let t=f(`section`,`pr-verdict-box`);t.setAttribute(`aria-label`,`Verdict`);let n=f(`div`,`pr-verdict-line`);n.append(Dr(e),f(`strong`,`pr-verdict-recommendation`,tr(e.verdict))),t.append(n);let{assessment:r}=e;if(!r)return t.append(f(`p`,`pr-verdict-legacy`,Tn)),e.summary.trim()&&t.append(Xr(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),t;if(t.append(Xr(f(`p`,`pr-verdict-summary pr-verdict-reason`),e.summary)),r.gaps.length>0){let e=Zr(r.gaps);e.classList.add(`pr-verdict-gaps`),e.setAttribute(`aria-label`,`Not covered`),t.append(e)}if(r.checked.length===0)return t;let i=f(`details`,`pr-verdict-checked`);return i.append(f(`summary`,null,`What it checked (${r.checked.length})`),Zr(r.checked)),t.append(i),t}function ti(e){if(e.kind===`code`){let t=f(`pre`,`pr-comment-code`),n=f(`code`,null);return n.textContent=e.code,t.append(n),t}let t=f(`p`,`pr-comment-paragraph`);if(e.lead){let n=f(`strong`,`pr-comment-lead pr-comment-lead-${e.leadKind}`);e.leadKind===`question`&&n.append(Or()),n.append(e.lead),t.append(n,` `)}return Yr(t,e.segments)}function ni(e){return{body:e.body,severity:ln(e),location:Vn(e),locationTitle:Bn(e),...e.excerpt?{excerpt:e.excerpt,citedLine:e.line}:{}}}var ri=Object.freeze({add:`+`,del:`-`,context:` `});function ii(e,t){let n=f(`div`,`pr-diff-excerpt`);for(let r of e){let e=f(`div`,`review-line review-line-${r.kind}`);r.line!==null&&r.line===t&&(e.dataset.cited=`true`),e.append(f(`span`,`pr-diff-excerpt-number`,r.line===null?``:String(r.line)),f(`span`,`review-line-gutter`,ri[r.kind]),f(`span`,`review-line-text`,r.text)),n.append(e)}return n}function ai(e){let t=e.location??`Not on a changed line, posts in the review body`;return{body:e.body,severity:e.severity,location:e.location?.split(`/`).at(-1)??`general`,locationTitle:t}}function oi({body:e,severity:t,location:n,locationTitle:r,excerpt:i,citedLine:a}){let o=f(`details`,`pr-comment-content`),s=f(`summary`,`pr-comment-header`),c=vn(e);t&&s.append(Er(t));let l=f(`span`,`pr-comment-location`,n);l.title=r,s.append(l),s.append(f(`span`,`pr-comment-preview`,yn(c.paragraphs))),o.append(s);let u=f(`div`,`pr-comment-paragraphs`);for(let e of c.paragraphs)u.append(ti(e));return o.append(u),i&&i.length>0&&o.append(ii(i,a)),o.open=t===`HIGH`||t===`CRITICAL`,o}function si(e,t){let n=f(`details`,`pr-disclosure pr-earlier-review`),r=f(`summary`,`pr-disclosure-summary`);r.append(f(`span`,`pr-disclosure-label`,`Earlier review`),f(`span`,`pr-disclosure-preview`,jn(e)));let i=f(`div`,`pr-earlier-review-body`),a=f(`div`,`pr-verdict-line`);a.append(Dr(e)),i.append(a),e.summary.trim()&&i.append(Xr(f(`p`,`pr-verdict-summary`),e.summary));for(let t of e.comments){let e=f(`article`,`pr-comment-card pr-comment-card-readonly`);e.append(oi(ni(t))),i.append(e)}return n.append(r,i),n.open=t,n}function ci(e){let t=kn(e);if(!t)return[];let n=f(`p`,`pr-changed-since`,t);return n.append(` `,l(`pr-changed-since-link`,`Compare changes`,An(e),`Open the commits since this review on GitHub`)),[n]}function li(e){let t=A?.drafts.find(t=>t.key===e.key)?.earlierReview??null;if(!t)return L=null,[];if(L?.key===e.key&&L.head===t.head)return[L.element];let n=si(t,!1);return L={key:e.key,head:t.head,element:n},[n]}function ui(e,t){let n=f(`button`,`pr-post-choice`,e);return n.type=`button`,n.addEventListener(`click`,t),n}function di(e,t,n,r){let i=f(`article`,`pr-comment-card`),a=f(`div`,`pr-post-toggle`);a.setAttribute(`role`,`group`),a.setAttribute(`aria-label`,`Post or drop the finding on ${e.locationTitle}`);let o=()=>{let e=t.has(n);c.setAttribute(`aria-pressed`,String(e)),l.setAttribute(`aria-pressed`,String(!e)),i.dataset.included=String(e)},s=e=>{e&&t.add(n),e||t.delete(n),o(),r()},c=ui(`Post`,()=>s(!0)),l=ui(`Drop`,()=>s(!1));return a.append(c,l),o(),i.append(a,oi(e)),i}var fi=`Your comments are on GitHub. Approve adds an approval without posting them again.`;function pi(e,t,n,r,i=cr(n.action)){let a=xr?.captureTurnOrder()??[];P=null;let o=m(`team-review-action`);if(!h({type:`team-review-action`,requestId:o,...n}))return!1;let s=window.setTimeout(()=>{H.delete(t.key),r(!1,hr)},mr);return H.set(t.key,{requestId:o,action:n.action,outcomeText:i,origin:e,capturedOrder:a,pullRequest:C(t.repo,t.number),timer:s,settle:r}),!0}function mi(e){let t=f(`footer`,`pr-footer`),n=hi(`discard`,()=>{H.has(e.key)||(n.disabled=!0,S(i,`busy`,k(`discard`)),!pi(`other`,e,Un(e.key),a)&&a(!1,o))}),r=H.has(e.key);n.disabled=r;let i=f(`span`,`pr-action-status`);r&&S(i,`busy`,k(`discard`)),i.setAttribute(`role`,`status`),i.setAttribute(`aria-live`,`polite`);let a=(e,t,r=e?`ok`:`error`)=>{n.disabled=e,S(i,r,t)};return t.append(n,i),t}function hi(e,t,n=!1){let r=f(`button`,n?`pr-action pr-action-ghost`:`pr-action`,O(e));return r.type=`button`,r.dataset.action=e,r.addEventListener(`click`,()=>t(e)),r}function gi(e,t,n=``){let r=sr(e),i=f(`footer`,`pr-footer pr-decision-bar`),a=f(`span`,`pr-action-status`,n);a.setAttribute(`role`,`status`),a.setAttribute(`aria-live`,`polite`);let o=r.primary.map(e=>hi(e,t)),s=r.secondary.map(e=>hi(e,t,!0));return i.append(...o,f(`span`,`pr-decision-spacer`),...s,a),{footer:i,status:a,buttons:[...o,...s]}}var _i=0;function vi(e){let t=f(`section`,`pr-note`);_i+=1;let n=f(`textarea`,`pr-body-input pr-note-input`);n.id=`pr-note-${_i}`,n.rows=2,n.spellcheck=!0,n.placeholder=`Optional. Posts at the top of the review, above the automated-review label.`,n.addEventListener(`input`,e);let r=f(`label`,`pr-section-heading`,`Your note`);return r.htmlFor=n.id,t.append(r,n),{section:t,input:n}}function yi(e,...t){let n=f(`div`,`pr-fact`),r=f(`dd`,null);return r.append(...t),n.append(f(`dt`,null,e),r),n}function bi(e){return JSON.stringify([e.checksState,e.viewerThreads,e.liveHead])}function xi(e){let t=f(`section`,`pr-desk-facts`);t.setAttribute(`aria-label`,`This PR`),t.dataset.signature=bi(e);let n=f(`dl`,`pr-fact-list`),r=An(e),i=r?[kn(e)??``,` `,l(`pr-changed-since-link`,`Compare changes`,r,`Open the commits since this review on GitHub`)]:[`No new commits`];return n.append(yi(`Checks`,ar(e.checksState)),yi(`Threads`,At(e.viewerThreads)??`None of yours`),yi(`Since review`,...i)),t.append(f(`h3`,`pr-assessment-title`,`This PR`),n),t}function Si(e,t){let n=e.querySelector(`.pr-desk-facts`);n&&n.dataset.signature!==bi(t)&&n.replaceWith(xi(t))}function Ci(e){let t=f(`article`,`pr-detail pr-desk`),n=f(`div`,`pr-desk-column`),r=f(`aside`,`pr-desk-rail`);r.setAttribute(`aria-label`,`Decision`);let i=f(`div`);i.dataset.reviewThreads=``,n.append(Kr(e,{hasFactsRail:!0}),...$r(e)),e.earlierReview&&n.append(si(e.earlierReview,!1)),n.append(i,ei(e),...Qr(e));let a=_t(e.body),s=new Set(e.comments.flatMap((e,t)=>dn(e)?[t]:[])),c=new Set(a.flatMap((e,t)=>un(e.severity)?[t]:[])),l=e.comments.length+a.length,u=f(`section`,`pr-posts`);u.setAttribute(`aria-label`,`Findings`);let d=f(`div`,`pr-posts-heading`),p=f(`span`,null);d.append(f(`h3`,null,`Findings`),p),u.append(d);let m=vi(me),h=f(`section`,`pr-will-post`);h.setAttribute(`aria-label`,`Will post to GitHub`);let ee=f(`strong`,`pr-will-post-event`),te=f(`p`,`pr-will-post-detail`);te.setAttribute(`aria-live`,`polite`),h.append(f(`h3`,`pr-assessment-title`,`Will post to GitHub`),ee,te,m.section),r.append(h,xi(e));let ne=()=>({note:m.input.value,comments:e.comments.filter((e,t)=>s.has(t)),generalFindings:a.filter((e,t)=>c.has(t))}),g=!1,_=!1,v=[],y=-1,b=null,x=gi(e,t=>{if(H.has(e.key))return;_=!1,b=null,T();let n=ne(),r=t===`approve`||t===`comment`||t===`request-changes`?Gn(e,t,n):D(e,t,``,[]);C(!0),S(x.status,`busy`,k(r.action)),!pi(`ready`,e,r,he,Yn(r.action,n))&&he(!1,o)});function ie(){let e=Wn(ne());for(let t of x.buttons)t.disabled=g||or(t.dataset.action)&&!e;t.dataset.busy=String(g)}function C(e){g=e,ie()}function w(){let t=ne();p.textContent=`${t.comments.length+t.generalFindings.length} of ${l} will post. Low severity starts unticked.`;let n=Jn(e,t,$n(e.verdict));ee.textContent=n.event,te.textContent=n.detail,ie()}function T(){for(let e of x.buttons)e.dataset.picked=String(e.dataset.action===b)}function oe(){let e=v[y];for(let[e,t]of v.entries())t.dataset.current=String(e===y);e.querySelector(`.pr-post-choice[aria-pressed="true"]`)?.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`})}function se(e){return v.length!==0&&(y=Math.min(v.length-1,Math.max(0,y+e)),oe(),!0)}function ce(){if(y===-1&&!se(1))return!1;let e=v[y],t=e.dataset.included===`true`?`Drop`:`Post`;return[...e.querySelectorAll(`.pr-post-choice`)].find(e=>e.textContent===t)?.click(),oe(),!0}function le(e){return!g&&(_=!1,b=e,T(),m.input.focus(),S(x.status,`ok`,er(e,re(ae))),!0)}function ue(){let t=b??(document.activeElement===m.input?$n(e.verdict):null),n=x.buttons.find(e=>e.dataset.action===t);return!t||!n?!1:g||H.has(e.key)?!0:n.disabled?(S(x.status,`error`,Jn(e,ne(),t).detail),!0):(n.click(),!0)}function de(){return b?(b=null,T(),S(x.status,null,``),!0):!1}function fe(e){let t=yr[e];return t?le(t):e===`next-finding`?se(1):e===`previous-finding`?se(-1):e===`toggle-finding`?ce():e===`post`?ue():e===`cancel`&&de()}function pe(){_&&(_=!1,S(x.status,null,``))}function me(){pe(),w()}let he=(e,t,n=e?`ok`:`error`)=>{C(e),S(x.status,n,t)},ge=(t,n=`ok`)=>{H.has(e.key)||(_=!0,S(x.status,n,t))};for(let[t,n]of e.comments.entries())v.push(di(ni(n),s,t,me));for(let[e,t]of a.entries())v.push(di(ai(t),c,e,me));return u.append(...v),l>0&&n.append(u),t.append(n,r,x.footer),Di(t,e),w(),{signature:fr(e),element:t,settle:he,showReceipt:ge,clearReceipt:pe,runKey:fe}}function wi(e){let t=B.get(e.key);if(t&&(H.has(e.key)||t.signature===fr(e)))return Di(t.element,e),Si(t.element,e),qr(t.element,e,{hasFactsRail:!0}),t;let n=Ci(e);return B.set(e.key,n),n}function Ti(e,t){let n=f(`article`,`pr-detail`),r=f(`div`,`pr-detail-heading`),i=f(`div`,`pr-detail-title`);i.append(kr(e),f(`h2`,null,e.title));let a=f(`div`,`pr-detail-meta`);a.append(Pr(e.author,20,`pr-detail-author`));let o=U(`Opened`,e.prCreatedAt);return o&&a.append(o),r.append(i,a,Gr(e)),n.append(r,f(`p`,`pr-attention-detail`,lr(t)),mi(e)),n}function Ei(e){let t=f(`article`,`pr-detail`);t.append(Kr(e));let n=f(`section`,`pr-progress`);n.setAttribute(`aria-label`,`Review progress`);let r=f(`ol`,`pr-progress-tracker`);for(let t of bn(e.phase)){let e=f(`li`,`pr-progress-stage`);e.dataset.state=t.state,e.append(f(`span`,`pr-progress-bar`),f(`span`,null,t.label)),r.append(e)}let i=f(`div`,`pr-progress-text`);wr.track(i,e.startedAt,()=>Ln(e,Date.now())),n.append(r,i),t.append(n);let a=f(`section`,`pr-steps`);a.append(f(`h3`,null,`Latest agent steps`));let o=f(`ol`,`pr-step-list`);for(let t of e.recentSteps){let n=f(`li`,`pr-step`),r=f(`span`,`pr-step-detail`,t.detail);r.title=t.detail,n.append(f(`span`,`pr-step-at`,s(e.startedAt,t.at)),f(`span`,`pr-step-tool`,t.tool),r),o.append(n)}return a.append(o),t.append(a,...li(e),mi(e)),t}function Di(e,t){if(H.has(t.key))return;let n=e.querySelector(`[data-review-threads]`),r=JSON.stringify([t.liveHead,t.threads]);n&&n.dataset.reviewThreads!==r&&(n.replaceChildren(...ki(t)),n.dataset.reviewThreads=r)}function Oi(e,t,n,r){let i=f(`div`,t?`pr-thread-message pr-thread-message-muted`:`pr-thread-message`);if(i.append(f(`p`,`pr-thread-body pr-thread-preview`,e)),!n&&!Qt(e,t?3:8))return i;let a=f(`details`,`pr-thread-disclosure`);return a.append(f(`summary`,`pr-thread-expand`,t?`Expand comment`:`Expand reply`),f(`p`,`pr-thread-body`,e)),n&&a.append(l(`pr-link pr-thread-continues`,t?`Comment continues on GitHub`:`Reply continues on GitHub`,r)),i.append(a),i}function ki(e){let t=Xt(e);if(t.length===0)return[];let n=f(`section`,`my-pr-threads-section`);n.append(f(`h3`,`pr-section-heading`,`Answered threads`));let r=f(`div`,`my-pr-threads`);for(let n of t){let t=f(`div`,`my-pr-thread pr-thread-card`),i=f(`div`,`my-pr-thread-heading pr-thread-heading`),a=f(`span`,`pr-thread-chip`,n.judgementLabel);a.dataset.tone=n.judgementTone,i.append(l(`pr-link my-pr-thread-location`,n.location,n.thread.url),a),t.append(i),n.judgementReason&&t.append(f(`p`,`my-pr-thread-meta`,n.judgementReason)),n.thread.viewerComment&&t.append(f(`div`,`my-pr-thread-meta`,`Your comment`),Oi(n.thread.viewerComment,!0,n.thread.viewerCommentTruncated===!0,n.thread.url));let s=f(`div`,`pr-detail-meta pr-thread-reply-meta`);s.append(f(`span`,`pr-author-login`,n.thread.lastReplyAuthor),` replied`);let c=U(``,n.thread.lastReplyAt);c&&s.append(c);let u=f(`span`,`pr-action-status`);u.setAttribute(`role`,`status`);let d=f(`button`,`pr-action`,`Resolve`);d.type=`button`,d.disabled=!n.canResolve||H.has(e.key);let p=(e,t)=>{d.disabled=e||!n.canResolve,S(u,e?`ok`:`error`,t)};d.addEventListener(`click`,()=>{H.has(e.key)||(d.disabled=!0,S(u,`busy`,k(`resolve-thread`)),!pi(`other`,e,D(e,`resolve-thread`,``,[],n.thread.id),p)&&p(!1,o))}),t.append(s),n.thread.lastReplyBody&&t.append(Oi(n.thread.lastReplyBody,!1,n.thread.lastReplyTruncated===!0,n.thread.url));let m=f(`footer`,`pr-thread-footer`);m.append(u,d),t.append(m),n.thread.resolveError&&t.append(f(`p`,`pr-attention-detail`,n.thread.resolveError)),r.append(t)}return n.append(r),[n]}function Ai(e){let t=f(`article`,`pr-detail`);if(t.append(Kr(e),...$r(e)),e.earlierReview&&t.append(si(e.earlierReview,e.status===`stale`)),t.append(...ki(e)),e.status===`posted`&&t.append(ei(e)),e.status!==`posted`&&t.append(f(`p`,`pr-attention-detail`,Rn(e))),e.status===`stale`&&t.append(...ci(e)),!Dn(e.status))return V.set(e.key,{signature:Jr(e),element:t,settle:()=>{}}),t;let n=gi(e,t=>{if(!H.has(e.key)){for(let e of n.buttons)e.disabled=!0;S(n.status,`busy`,k(t)),!pi(`other`,e,D(e,t,``,[]),r)&&r(!1,o)}},sr(e).primary.includes(`approve-only`)?fi:``),r=(e,t)=>{for(let t of n.buttons)t.disabled=e;S(n.status,e?`ok`:`error`,t)};return t.append(n.footer),V.set(e.key,{signature:Jr(e),element:t,settle:r}),t}function ji(e){if(!Dn(e.status)&&Xt(e).length===0)return Ai(e);let t=V.get(e.key);return t&&(H.has(e.key)||t.signature===Jr(e))?qr(t.element,e):Ai(e)}function Mi(e){if(!M||!N)return;let t=F===N?B.get(N):void 0,n=e.ready.find(e=>e.key===N&&e.status===`ready`);if(t&&n&&fr(n)!==t.signature&&(F=null),t&&F){M.firstElementChild!==t.element&&M.replaceChildren(t.element),I=null;return}let r=e.ready.find(e=>e.key===N&&(ne(e).length>0||ie(e)));if(r&&r.status!==`ready`){let e=`threads:${Jr(r)}`,t=ji(r);if(I===e&&M.firstElementChild===t)return;M.replaceChildren(t),I=e;return}let i=[...e.ready,...e.noReviewNeeded].find(e=>e.key===N&&e.status===`ready`);if(i){let e=`ready:${fr(i)}`,t=wi(i);if(P&&t.showReceipt?.(P),P=null,I===e)return;M.replaceChildren(t.element),I=e;return}let a=e.inReview.find(e=>e.key===N);if(a){wr.reset(),M.replaceChildren(Ei(a)),I=`inReview:${a.key}`;return}let o=e.queued.find(e=>e.key===N);if(o){let t=`queued:${o.key}:${e.inReview.length}`;if(I===t)return;M.replaceChildren(Ti(o,e.inReview.length)),I=t;return}let s=[...e.noReviewNeeded,...e.attention,...e.posted,...e.discarded].find(e=>e.key===N);s&&(M.replaceChildren(ji(s)),I=`${s.status}:${s.key}`)}function Ni(){let e=f(`p`,`pr-empty`,ur(A));return A&&!A.configured&&e.append(` `,pe(zt,Bt,`Open Team review settings`)),e}function Pi(){let e=dr(A);return e?[f(`p`,`my-pr-note`,e)]:[]}function Fi(e){for(let t of[...B.keys()])e.has(t)||H.has(t)||t===F||B.delete(t);let t=new Set(A?.drafts.filter(e=>Dn(e.status)).map(e=>e.key)??[]);for(let e of V.keys())t.has(e)||H.has(e)||V.delete(e)}function Ii(){Cr.reset()}function Li(){z.reset(),Mr(j)}function Ri(e=null){P=null,F!==e&&(F=null);for(let e of B.values())e.clearReceipt?.()}function zi(e){if(!M||!N)return!1;if(e===`open-session`){let e=M.querySelector(`.pr-session-open-button`);return!e||e.disabled?!1:(e.click(),!0)}let t=B.get(N);return!t||M.firstElementChild!==t.element?!1:t.runKey?.(e)??!1}function Bi(){let e=P;return P=null,e}function Vi(){Ri(),N=null}function Hi(e,t){t===`clear`&&Ri(e),N=e,Mi(T(A)),Li()}function Ui(e){Fi(new Set([...e.ready,...e.noReviewNeeded].map(e=>e.key)))}function Wi(){let e=T(A);Ui(e),Mi(e),xr?.onChange(),Li()}function Gi(e){switch(e.kind){case`status`:A=E(),Wi();return;case`action-result`:Yi(e.message);return;case`open-session-result`:qi(e.message);return;case`connection`:Ji(e.isConnected)}}function Ki(e,t,n){return Sr=n?.openTerminal??Sr,xr=t,j=e,br||(br=f(`div`,`pr-detail-team`),M=f(`div`,`pr-detail-body`),br.append(M),Cr.ensure(),wr.ensure(),z.ensure(),A=E(),oe(Gi),br)}function qi(e){let t=e.key;if(!t)return;let n=R.get(t);n&&n.requestId===e.requestId&&(!e.ok||!e.sessionId?Ur(t,e.error||`Could not open a session.`):(window.clearTimeout(n.timer),R.delete(t),Hr(t,``,null),Sr?.(e.sessionId)))}function Ji(e){if(e)return;for(let[e,t]of R)t.requestId&&Ur(e,o);let t=[...H.values()];H.clear();for(let e of t)window.clearTimeout(e.timer),e.settle?.(!1,gr)}function Yi(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.key!=`string`)return;let n=H.get(t.key);if(!n||n.requestId!==t.requestId)return;if(window.clearTimeout(n.timer),H.delete(t.key),n.action===`resolve-thread`){n.settle?.(t.ok===!0,typeof t.error==`string`?t.error:cr(n.action)),V.delete(t.key),I=null,t.ok===!0&&Wi();return}let r=(n.origin===`ready`?B:V).get(t.key);if(t.ok===!0){n.origin===`other`&&V.delete(t.key);let e=Ft({action:n.action,outcomeText:n.outcomeText,pullRequest:n.pullRequest,warning:typeof t.warning==`string`?t.warning:``,isActedSelected:N===t.key});if((r?.settle??n.settle)?.(!0,e.statusText,e.tone),e.tone===`error`&&n.origin===`ready`&&r&&(F=t.key,N&&N!==t.key&&B.get(N)?.showReceipt?.(`${n.pullRequest}: ${e.statusText}`,`error`),Mi(T(A))),!e.shouldAdvance)return;P=e.receipt,Ui(T(A)),xr?.onAdvance(t.key,n.capturedOrder)}else(r?.settle??n.settle)?.(!1,typeof t.error==`string`&&t.error?t.error:`The action failed.`)}var K=null,Xi=null,q=null,Zi=null,Qi=null,$i=null,ea=null,ta=null,na=null,ra=null,J=[],Y=`all`,X=null,ia,aa=!1,Z=!1,oa=null,sa=!1,ca=null,la=null,ua=0,da=2e3,Q=new Map;function fa(e,t){Re(Be(e))&&(t.querySelector(`.pr-queue-unseen`)?.remove(),delete t.dataset.unseen,e.source===`team`&&W(t))}function pa(e){K&&(K.dataset.detailOpen=String(e)),je(e)}function ma(){pa(!1),X&&Q.get(X)?.focus({preventScroll:!0})}function ha(){Qi&&(Qi.textContent=Ve(J,X))}function ga(e){!q||q.childElementCount===1&&q.firstElementChild===e||q.replaceChildren(e)}function _a(e){let t=_(J).length>0,n=e?`${e} `:``;return zr(t?{title:`New pull requests need you`,detail:`${n}Pick one from the queue.`}:{title:`All caught up`,detail:`${n}${Pe(J)}`})}function va(e){let t=Ue(J,X);ia=t?.key??null,t?t.source===`team`&&ea?(Hi(t.review.key,e),ga(ea)):t.source===`mine`&&ta&&(Vi(),Je(t.pr.key),ga(ta)):(ca=Bi()??ca,Vi(),q&&q.replaceChildren(aa?_a(ca):f(`p`,`pr-empty`,`Pick a pull request from the queue.`)))}function ya(e,{isFromQueue:t}){X=e,aa=!1,ca=null;for(let[t,n]of Q)n.setAttribute(`aria-current`,String(t===e));let n=Ue(J,e),r=Q.get(e);n&&r&&fa(n,r),va(`clear`),ba(),pa(!0),t&&document.documentElement.dataset.layout===`phone`&&q?.parentElement?.scrollIntoView({block:`start`})}function ba(){if(ha(),!Zi)return;let e=xe(J,X);Le(Zi,ze(ve(J)),e)}function xa(e){let t=Ue(J,e);if(!t)return;Ue(Se(J,Y),e)||(Y=`all`,na?.select(Y)),J.find(e=>e.items.includes(t))?.id===`aside`&&(Z=!0),X=e,$(),ya(e,{isFromQueue:!1});let n=Q.get(e);n?.focus({preventScroll:!0}),n?.scrollIntoView({block:`nearest`})}function Sa(e){let t=ue([...Q.keys()],X,e);return t?(t!==X&&xa(t),!0):!1}function Ca(e){return e===`next-row`?Sa(1):e===`previous-row`?Sa(-1):zi(e)}function wa(){return document.activeElement instanceof HTMLTextAreaElement&&document.activeElement.classList.contains(`pr-note-input`)}function Ta(e){if(e.repeat||e.defaultPrevented||!K||p(K)||ee()||document.activeElement?.classList.contains(`xterm-helper-textarea`))return;let t=ge(e);if(!t)return;let n=(t===`post`||t===`cancel`)&&wa();(!u(e)||n)&&Ca(t)&&e.preventDefault()}function Ea(e){window.clearTimeout(ua),la=e,ua=window.setTimeout(()=>{la=null,Q.get(e)?.removeAttribute(`data-just-acted`)},da)}function Da(e,t){let n=`team:${e}`;Ea(n);let r=me({capturedOrder:t,actedKey:n,groups:J});if(X=r,aa=r===null,oa=null,$(),r)for(let[e,t]of Q)t.setAttribute(`aria-current`,String(e===r));va(`keep`)}function Oa(e,t,n){if(e.source===`team`){let n=Ir(e.review,e.kind,t);return{container:n,row:n}}let r=Xe(e.pr,e.stackedOn,n.get(e.prKey));return{container:r.group,row:r.row}}function ka(e,t,n,r){let{container:i,row:a}=Oa(e,n,r);a.dataset.queueKey=e.key,a.setAttribute(`aria-current`,String(e.key===X)),e.key===la&&(a.dataset.justActed=`true`);let o=Be(e);if(t&&te(o)){let t=f(`span`,`tab-activity active pr-queue-unseen`);t.setAttribute(`aria-hidden`,`true`),a.dataset.unseen=o,a.append(t),e.source===`team`&&W(a)}return a.addEventListener(`click`,()=>ya(e.key,{isFromQueue:!0})),Q.set(e.key,a),i}function Aa(e){let t=f(`h3`,`pr-section-heading review-group-heading`),n=f(`span`,`review-group-count`,String(e.items.length));if(e.id!==`aside`)return t.append(f(`span`,null,e.title),n),t;let r=f(`button`,`review-group-toggle`),i=f(`span`,`review-group-chevron`,`▸`);return i.setAttribute(`aria-hidden`,`true`),r.append(i,e.title),r.type=`button`,r.setAttribute(`aria-expanded`,String(Z)),r.addEventListener(`click`,()=>{Z=!Z,oa=null,$()}),t.append(r,n),t}function ja(e,t,n){let r=f(`section`,`pr-queue-section`);if(r.dataset.group=e.id,r.append(Aa(e)),e.id===`aside`&&!Z)return r;for(let i of e.items)r.append(ka(i,e.id===`turn`,t,n));return r}function Ma(){let e=qe(y().status,Date.now()).filter(e=>e.tone!==`error`).map(e=>f(`p`,`my-pr-note`,e.text));return[...ra?[ra.notice]:[],...Pi(),...e]}function Na(){return J.some(e=>e.items.length>0)?[f(`p`,`pr-empty`,`No pull requests match this filter.`)]:[Ni(),f(`p`,`pr-empty`,$e(y().status))]}function Pa(){if(!$i)return;let e=E()?.team;if(!e){$i.replaceChildren();return}let t=f(`span`,`pr-team-chip`);t.append(d({login:e.slug,url:e.avatarUrl,cssPx:16}),f(`span`,null,e.name)),$i.replaceChildren(t)}function Fa(e,t){return JSON.stringify([e,[...t],X,Y,Z,he(),Ma().map(e=>e.textContent)],(e,t)=>e===`recentSteps`?void 0:t)}function $(){if(!Xi)return;let{sessionsByPrKey:e,status:t}=y();J=Ae(),Pa(),ra?.update(Ce([E(),t]));let n=Se(J,Y);aa||(X=ke(n,X)),ba();let r=Fa(n,e);if(r!==oa){oa=r;let t=document.activeElement instanceof HTMLElement&&Xi.contains(document.activeElement)?document.activeElement.dataset.queueKey:void 0;Ii(),Q.clear();let i=He(J),a=n.filter(e=>e.items.length>0).map(t=>ja(t,i,e));Xi.replaceChildren(...Ma(),...a.length>0?a:Na()),t&&Q.get(t)?.focus({preventScroll:!0}),Li()}(X!==ia||aa)&&va(`keep`)}function Ia(){sa||(sa=!0,queueMicrotask(()=>{sa=!1,$()}))}function La(){let e=_e();e&&xa(e)}function Ra(e){e.kind===`reveal`?La():ma()}function za(e){if(K)return;let t=we()??void 0;K=f(`div`,`pr-content review-queue`),e.append(K),na=Qe({label:`Show reviews`,scopes:Ee,selected:Y,onSelect:e=>{Y=e,$()}});let n=Ye({queueLabel:`Review queue`,scopeTabs:na.element,resizerLabel:`Resize review queue`});Xi=n.queue,q=f(`div`,`review-queue-detail`);let r=f(`div`,`review-queue-phone-bar`),i=f(`button`,`pr-action pr-action-ghost review-queue-back`,`Back to queue`);i.type=`button`,i.addEventListener(`click`,Fe),Qi=f(`span`,`review-queue-position`),r.append(i,Qi),n.detail.append(r,q),Zi=ye({onJump:()=>{be()},rowFor:e=>Q.get(e)},fe()),Zi.classList.add(`review-queue-banner`),n.queue.before(Zi),ra=Ge([`team-review`,`my-prs`],K),$i=f(`span`,`review-team-chip-slot`),n.foot.append($i,ra.control),K.append(n.columns),K.dataset.detailOpen=`false`,ea=Ki(K,{onChange:Ia,captureTurnOrder:()=>_(J).map(e=>e.key),onAdvance:Da},t),ta=Ze({onChange:Ia},t),ce({isLooking:()=>!p(K),selectedKey:()=>X}),Ie(Ra),document.addEventListener(`keydown`,Ta),$(),La()}var Ba={mount:za,refresh:Ke};export{Ba as view};
|
|
Binary file
|