@staff0rd/assist 0.789.1 → 0.791.0

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.
@@ -30,6 +30,8 @@ Never overwrite a differing target without the user's confirmation.
30
30
 
31
31
  ## 3. Run init
32
32
 
33
+ First check whether the repo is already configured: run `gh variable list --json name -q '.[].name'` and `gh secret list --json name -q '.[].name'`. The repo is configured when `REVIEW_CI_PROVIDER`, `REVIEW_CI_BASE_URL`, `REVIEW_CI_REVIEWER_1`, `REVIEW_CI_REVIEWER_2` and `REVIEW_CI_SYNTHESIS` are all set, plus either the secret `REVIEW_CI_API_KEY` or both `REVIEW_CI_AZURE_CLIENT_ID` and `REVIEW_CI_AZURE_TENANT_ID`. If it is configured and the user did not ask to reconfigure, skip the rest of this step, say init was skipped because the config is already set, and go to step 4. Otherwise run init as below.
34
+
33
35
  `init.mjs` asks for the config, checks every model can be reached, then sets the repo variables (and the secret, when an API key is used) with `gh`. It needs a terminal for its prompts, and the API key must never pass through this conversation.
34
36
 
35
37
  The review has three slots: two reviewers and the synthesis. Each slot is `claude:<model>` (run by Claude Code) or `codex:<model>` (run by Codex), so a provider with only GPT deployments can run every slot on Codex.
@@ -64,4 +66,4 @@ The review has three slots: two reviewers and the synthesis. Each slot is `claud
64
66
 
65
67
  ## 4. Report
66
68
 
67
- List the files written or skipped, and remind the user to commit `.github/review-ci/` and `.github/workflows/review-ci.yml`. The workflow runs on `pull_request: opened` and fails at its check step, naming the problem, when a variable or the secret is unset, the Entra token cannot be obtained, or a model cannot be reached. Its review step then posts the findings as a `COMMENT` review on the PR.
69
+ List the files written or skipped, and remind the user to commit `.github/review-ci/` and `.github/workflows/review-ci.yml`. The workflow runs on `pull_request: opened`, skipping PRs opened by bots and GitHub Apps (Snyk, Dependabot and the like), and fails at its check step, naming the problem, when a variable or the secret is unset, the Entra token cannot be obtained, or a model cannot be reached. Its review step then posts the findings as a `COMMENT` review on the PR.
@@ -11,6 +11,7 @@ permissions:
11
11
 
12
12
  jobs:
13
13
  review:
14
+ if: github.event.pull_request.user.type != 'Bot'
14
15
  runs-on: ubuntu-latest
15
16
  environment: ${{ vars.REVIEW_CI_ENVIRONMENT }}
16
17
  env:
@@ -307,6 +307,19 @@ Two cases are still legitimate findings:
307
307
  1. A comment this change made stale or wrong. Recommend removing or correcting it.
308
308
  2. Genuinely misleading code. You may raise it, but the recommendation must be a clearer name, a smaller function, or a test. Only as a last resort, when none of those can carry the meaning, may you mention that \`assist code-comment\` exists for a single short comment.
309
309
 
310
+ ## Tautological and vacuous tests
311
+
312
+ Flag tests added or changed by this change that cannot fail when the behaviour they claim to cover breaks. Do not flag pre-existing tests the change left untouched. Patterns:
313
+
314
+ 1. Asserting a mock returns what it was stubbed to return.
315
+ 2. Computing the expected value with the code under test, or with a copy of its logic.
316
+ 3. Asserting only that a mocked function was called, when that mock is the whole subject of the test.
317
+ 4. Any test that would still pass if the implementation were broken.
318
+ 5. No assertions, or only \`toBeDefined\`/truthy checks.
319
+ 6. Snapshots of mocked output.
320
+
321
+ Recommendation: assert against an independent expected value (a literal or a hand-derived result) or real behaviour, or delete the test. Severity is **minor** by default; **major** when the test is the sole coverage of a behaviour this change introduces or modifies, since that behaviour is then effectively untested.
322
+
310
323
  ## How to write the comment (Impact + Recommendation)
311
324
 
312
325
  1. Make clear *why* the issue is a bug.
@@ -418,6 +431,10 @@ Severity rubric (recalibrate each finding against this \u2014 reviewers tend to
418
431
 
419
432
  Default to the lower tier when uncertain. Code-style preferences, refactor suggestions, and "I would have written it differently" belong in nit \u2014 not major. A finding is only major if you can name a concrete failure mode or regression. If a reviewer marked something major but the impact reads as taste or hypothetical, downgrade it.
420
433
 
434
+ ## Keep tautological-test findings
435
+
436
+ A finding that a test added or changed by this change is tautological or vacuous \u2014 it asserts a mock returns its stub, computes its expected value with the code under test, only checks a mock was called, has no real assertions, snapshots mocked output, or would still pass if the implementation broke \u2014 is a legitimate defect, not taste. Keep it even when only one reviewer raised it, and do not downgrade it below minor. Keep major when the test is the sole coverage of a behaviour the change introduces or modifies.
437
+
421
438
  Rules:
422
439
  - \`confirmed\` = both reviewers raised it.
423
440
  - \`disputed\` = the reviewers disagreed on the diagnosis or fix.
@@ -3973,7 +3973,7 @@ ${f.join(`
3973
3973
  `)})}var V9=L(z(),1);function ihr({entry:e,state:t,actions:r}){return(0,V9.jsxs)(ue,{sx:{px:2,pb:2,pl:{xs:2,sm:7.5},display:"grid",gap:1.5},children:[(0,V9.jsx)(rhr,{entry:e,state:t,actions:r}),(0,V9.jsx)(Fe,{variant:"caption",color:"text.secondary",children:"History \xB7 ~/.assist/watchers/"}),(0,V9.jsx)(nhr,{lines:e.status?.history??[]})]})}function G9(e){let t=e.status?.loop;return t!==void 0&&(t.phase!=="off"||t.paused===!0)}var q9=L(z(),1),VHn={display:"flex",gap:.5,flexWrap:"wrap",justifyContent:{xs:"flex-start",sm:"flex-end"},gridColumn:{xs:"1 / -1",sm:"auto"}};function ohr({entry:e,state:t,actions:r}){let n=r.notices.busy[e.name],i=e.status?.loop.paused===!0;return(0,q9.jsxs)(ue,{sx:VHn,children:[t.kind==="ready"&&(0,q9.jsx)(oge,{entry:e,actions:r}),t.kind==="diverged"&&(0,q9.jsx)(rge,{entry:e,actions:r}),G9(e)&&(0,q9.jsx)(qt,{size:"small",disabled:n!==void 0,onClick:()=>{r.control(e,i?"resume":"pause")},children:i?"Resume":"Pause"})]})}var GHn={ready:"warning",diverged:"error"},ahr=e=>t=>{let r=GHn[e];return{display:"grid",gridTemplateColumns:{xs:"28px minmax(0,1fr)",sm:"28px minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.6fr) auto"},alignItems:"center",columnGap:1.5,rowGap:1,px:2,py:1.5,boxShadow:r?`inset 3px 0 0 ${t.palette[r].main}`:"none"}};var shr=L(z(),1),lhr=ft((0,shr.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward");var chr=L(z(),1),uhr=ft((0,chr.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4c-1.48 0-2.85.43-4.01 1.17l1.46 1.46C10.21 6.23 11.08 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3 0 1.13-.64 2.11-1.56 2.62l1.45 1.45C23.16 18.16 24 16.68 24 15c0-2.64-2.05-4.78-4.65-4.96M3 5.27l2.75 2.74C2.56 8.15 0 10.77 0 14c0 3.31 2.69 6 6 6h11.73l2 2L21 20.73 4.27 4zM7.73 10l8 8H6c-2.21 0-4-1.79-4-4s1.79-4 4-4z"}),"CloudOff");var fhr=L(z(),1),dhr=ft((0,fhr.jsx)("path",{d:"M6 19h4V5H6zm8-14v14h4V5z"}),"Pause");var hhr=L(z(),1),phr=ft((0,hhr.jsx)("path",{d:"M13 3h-2v10h2zm4.83 2.17-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9c0-2.74-1.23-5.18-3.17-6.83"}),"PowerSettingsNew");var mhr=L(z(),1),ghr=ft((0,mhr.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var W1=L(z(),1),qHn={ok:{tone:"success",icon:(0,W1.jsx)(Y0,{})},ready:{tone:"warning",icon:(0,W1.jsx)(lhr,{})},diverged:{tone:"error",icon:(0,W1.jsx)(ghr,{})},retrying:{tone:"warning",icon:(0,W1.jsx)(Ree,{})},paused:{tone:"neutral",icon:(0,W1.jsx)(dhr,{})},off:{tone:"neutral",icon:(0,W1.jsx)(phr,{})},unavailable:{tone:"neutral",icon:(0,W1.jsx)(uhr,{})}};function jHn(e,t){return t==="neutral"?e.palette.text.secondary:e.palette[t].main}function yhr({state:e}){let{tone:t,icon:r}=qHn[e.kind];return(0,W1.jsxs)(ue,{component:"span",sx:n=>({alignSelf:"flex-start",display:"inline-flex",alignItems:"center",gap:.75,height:24,px:1.25,borderRadius:3,fontSize:12,fontWeight:500,whiteSpace:"nowrap",color:jHn(n,t),bgcolor:t==="neutral"?n.palette.action.hover:Ea(n.palette[t].main,.1),border:t==="neutral"?`1px solid ${n.palette.divider}`:0,"& svg":{fontSize:14}}),children:[r,e.label]})}var Xj=L(z(),1);function vhr({state:e}){return(0,Xj.jsxs)(ue,{sx:{...tge,gridColumn:{xs:"2",sm:"auto"},gap:.25},children:[(0,Xj.jsx)(yhr,{state:e}),(0,Xj.jsx)(Fe,{variant:"caption",color:"text.secondary",noWrap:!0,children:e.line})]})}var V1=L(z(),1),bhr={gridColumn:{xs:"2",sm:"auto"}},YHn={fontFamily:"'Roboto Mono', ui-monospace, Menlo, monospace",fontSize:12,fontVariantNumeric:"tabular-nums"};function xhr({entry:e}){let t=e.status;if(!t)return(0,V1.jsx)(Fe,{variant:"caption",color:"text.secondary",sx:bhr,children:"\u2014"});let r=t.running!==t.built;return(0,V1.jsxs)(ue,{sx:{...bhr,display:"flex",flexDirection:"column"},children:[(0,V1.jsxs)(ue,{component:"span",sx:YHn,children:["v",t.running,r&&(0,V1.jsxs)(V1.Fragment,{children:[" ",(0,V1.jsx)(ue,{component:"span",sx:{color:"warning.main"},children:"\u2192"})," ","v",t.built]})]}),(0,V1.jsx)(Fe,{variant:"caption",color:"text.secondary",children:r?"running \u2192 built":"running"})]})}function sge(e){return(e.status?.restart.length??0)>0}function Thr(e,t){return e.paused?{kind:"paused",label:"Paused",line:"won't pull until resumed"}:e.phase==="off"?{kind:"off",label:"Off",line:e.reason??"not running"}:e.phase==="retrying"?{kind:"retrying",label:"Retrying",line:`${e.reason??"lap failed"} \xB7 ${t}`}:{kind:"ok",label:"Up to date",line:`watching origin since ${t}`}}function g_(e){let{status:t}=e;if(!t)return{kind:"unavailable",label:"Unavailable",line:e.error??"no update state"};let{loop:r}=t,n=fa(r.since);return r.phase==="diverged"?{kind:"diverged",label:"Diverged \xB7 fixing",line:`diverged ${n}${r.escalationId?` \xB7 session ${r.escalationId}`:""}`}:sge(e)?{kind:"ready",label:"Restart to update",line:`restart ${t.restart.map(U9).join(" + ")}${r.paused?" \xB7 paused":""}`}:Thr(r,n)}var G1=L(z(),1);function Chr({entry:e,actions:t}){let[r,n]=(0,Shr.useState)(!1),i=g_(e);return(0,G1.jsxs)(ue,{component:"article",sx:{"& + &":{borderTop:1,borderColor:"divider"}},children:[(0,G1.jsxs)(ue,{sx:ahr(i.kind),children:[(0,G1.jsx)(Xdr,{open:r,label:`${r?"Hide":"Show"} history for ${e.name}`,onToggle:()=>n(o=>!o)}),(0,G1.jsx)(Zdr,{entry:e}),(0,G1.jsx)(xhr,{entry:e}),(0,G1.jsx)(vhr,{state:i}),(0,G1.jsx)(ohr,{entry:e,state:i,actions:t})]}),r&&(0,G1.jsx)(ihr,{entry:e,state:i,actions:t})]})}var whr=L(z(),1),lge=ft((0,whr.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z"}),"Refresh");var C$e=L(ge(),1);var j9=L(z(),1);function _hr({entries:e,actions:t}){let[r,n]=(0,C$e.useState)(!1),[i,o]=(0,C$e.useState)(!1),a=e.filter(l=>g_(l).kind==="ready").length,s=e.some(l=>G9(l)&&!l.status?.loop.paused);return(0,j9.jsxs)(ue,{sx:{display:"flex",gap:1,flexWrap:"wrap"},children:[(0,j9.jsx)(qt,{variant:"outlined",size:"small",startIcon:(0,j9.jsx)(lge,{}),disabled:!s||r,onClick:()=>{n(!0),t.checkAll(e).finally(()=>n(!1))},children:"Check now"}),(0,j9.jsx)(qt,{variant:"contained",size:"small",disabled:a===0||i,onClick:()=>{o(!0),t.restartReady(e).finally(()=>o(!1))},children:a?`Restart ready nodes (${a})`:"Restart ready nodes"})]})}function khr(e){let t=e.map(o=>g_(o).kind),r=o=>t.filter(a=>a===o).length,n=r("ready"),i=[`${e.length} node${e.length===1?"":"s"}`];return i.push(n?`${n} ready to restart`:"all running their latest build"),r("diverged")&&i.push(`${r("diverged")} diverged`),r("unavailable")&&i.push(`${r("unavailable")} unavailable`),i.join(" \xB7 ")}var $hr=L(ge(),1);function Ehr(e,t){return`${e}:${t}`}var w$e=L(ge(),1);async function Y9(e){if(!e)return"web server unreachable";try{return(await e.json()).error??`HTTP ${e.status}`}catch{return`HTTP ${e.status}`}}async function Rhr(e,t){let r;try{r=await fetch(tn(`/api/updates/control?action=${t}`,e.local?void 0:e.name),{method:"POST"})}catch{}return r?.ok?void 0:Y9(r)}var KHn=5e3,Ahr={pause:"Pausing",resume:"Resuming",check:"Checking"};function Phr(e,t){let{mark:r,setError:n,setBack:i}=e,o=(0,w$e.useCallback)(async(s,l)=>{r(s.name,Ahr[l]);let u=await Rhr(s,l);return u&&n(`${Ahr[l]} ${s.name} failed: ${u}`),r(s.name),t(),!u&&l==="check"&&setTimeout(t,KHn),!u},[r,n,t]),a=(0,w$e.useCallback)(async s=>{let l=s.filter(d=>G9(d)&&!d.status?.loop.paused),f=(await Promise.all(l.map(d=>o(d,"check")))).filter(Boolean).length;f&&i(`Checking ${f} node${f===1?"":"s"} against origin`)},[o,i]);return{control:o,checkAll:a}}var _$e=L(ge(),1);var q1=L(ge(),1);var K9={target:"both",label:"Restart daemon",message:"This restarts the sessions daemon and the web server, then reloads the page once the server is back."};function y_(e,t){let r=t?`&node=${encodeURIComponent(t)}`:"";return fetch(`/api/restart?target=${e}${r}`,{method:"POST"})}var _2=L(ge(),1);var XHn="/api/session-layout";async function ZHn(){try{return(await fetch(XHn,{cache:"no-store"})).ok}catch{return!1}}async function Lhr(e){let t=0;for(;!e();){if(t=await ZHn()?t+1:0,t>=2)return!e();await new Promise(r=>setTimeout(r,300))}return!1}function QHn(){return{sawDisconnect:!1,waiting:!1,abandoned:!0}}function Mhr(e,t,r){let n=(0,_2.useRef)(QHn()),i=(0,_2.useRef)(r);i.current=r,(0,_2.useEffect)(()=>{let s=n.current;if(!(!e||s.abandoned)){if(t){s.sawDisconnect=!0;return}!s.sawDisconnect||s.waiting||(s.waiting=!0,Lhr(()=>s.abandoned).then(l=>{l&&i.current()}))}},[e,t]);let o=(0,_2.useCallback)(()=>{n.current.abandoned=!0},[]),a=(0,_2.useCallback)(()=>{n.current.abandoned=!0,n.current={sawDisconnect:!1,waiting:!1,abandoned:!1}},[]);return(0,_2.useEffect)(()=>o,[o]),{arm:a,abandon:o}}var JHn=15e3;function v_(e,t,r){let[n,i]=(0,q1.useState)(!1),[o,a]=(0,q1.useState)(null),s=(0,q1.useRef)(void 0),{arm:l,abandon:u}=Mhr(n,t,()=>{clearTimeout(s.current),r?.(),globalThis.location.reload()});(0,q1.useEffect)(()=>()=>clearTimeout(s.current),[]);let f=(0,q1.useCallback)(async h=>{i(!0),l(),s.current=setTimeout(()=>{u(),i(!1),a("Web server did not come back")},JHn);try{if(!(await y_(h)).ok)throw new Error("restart failed")}catch{u(),clearTimeout(s.current),i(!1),a("Failed to restart web server")}},[l,u]),d=(0,q1.useCallback)(()=>f(e),[f,e]);return{pending:n,error:o,clearError:()=>a(null),restart:d,restartTo:f}}function cge(e){return e.local&&(e.status?.restart.includes("webserver")??!1)}async function uge(e,t){try{let r=await fetch(tn("/api/updates",t?void 0:e)),n=await r.json();if(!r.ok)throw new Error(n?.error??`HTTP ${r.status}`);return{name:e,local:t,status:n}}catch(r){return{name:e,local:t,error:r instanceof Error?r.message:"Failed to load update state"}}}var eUn=2e3,tUn=9e4,rUn=e=>new Promise(t=>setTimeout(t,e));async function Ihr(e,t){let r=Date.now()+tUn;for(;Date.now()<r;){await rUn(eUn);let n=await uge(e.name,e.local),i=n.status;if(i?.daemonReachable&&!t.some(o=>i.restart.includes(o)))return n}}async function Dhr(e,t,r){let n;try{n=await y_(t,e.local?void 0:e.name)}catch{}if(!n?.ok)throw new Error(await Y9(n));let i=await Ihr(e,r);if(!i?.status)throw new Error(`${e.name} did not come back`);return i.status.running}async function Nhr(e,t,r){try{let n=await Dhr(e,t,e.status?.restart??[]);r.setBack(`${e.name} is running v${n}`)}catch(n){r.setError(`Restart ${e.name} failed: ${n instanceof Error?n.message:String(n)}`)}}function Ohr(e){return e.length>1?"both":e[0]}function Bhr(e,t,r){let n=v_("webserver",e),i=(0,_$e.useCallback)(async a=>{let s=Ohr(a.status?.restart??[]);if(s){if(t.mark(a.name,"Restarting"),cge(a))return n.restartTo(s);await Nhr(a,s,t),t.mark(a.name),r()}},[n,t,r]),o=(0,_$e.useCallback)(async a=>{let s=a.filter(l=>g_(l).kind==="ready");await Promise.all(s.filter(l=>!cge(l)).map(l=>i(l)));for(let l of s.filter(cge))await i(l)},[i]);return{restart:i,restartReady:o,localError:n.error,clearLocalError:n.clearError}}var X9=L(ge(),1);function Fhr(){let[e,t]=(0,X9.useState)(null),[r,n]=(0,X9.useState)(null),[i,o]=(0,X9.useState)({}),a=(0,X9.useCallback)((s,l)=>{o(u=>{let f={...u};return l?f[s]=l:delete f[s],f})},[]);return{busy:i,mark:a,back:e,setBack:t,clearBack:()=>t(null),error:r,setError:n,clearError:()=>n(null)}}function zhr(e,t){let{refresh:r}=z9(),n=Fhr(),i=Bhr(e,n,r),o=Phr(n,r),a=$P(t),s=(0,$hr.useCallback)(l=>{let u=l.status?.loop.escalationId;u&&a(l.local?u:Ehr(l.name,u))},[a]);return{...i,...o,openFix:s,notices:n}}var r0=L(z(),1);function Hhr({reconnecting:e,selectSession:t}){let{entries:r,loading:n}=z9(),i=zhr(e,t),{notices:o}=i;return(0,r0.jsxs)(zl,{loading:n,header:(0,r0.jsxs)(ue,{sx:{display:"flex",alignItems:"flex-end",gap:2,flexWrap:"wrap",mb:3},children:[(0,r0.jsxs)(ue,{sx:{flex:"1 1 auto"},children:[(0,r0.jsx)(Fe,{variant:"h5",component:"h1",children:"Updates"}),(0,r0.jsx)(Fe,{variant:"body2",color:"text.secondary",children:khr(r)})]}),(0,r0.jsx)(_hr,{entries:r,actions:i})]}),children:[(0,r0.jsx)(an,{variant:"outlined",component:"section","aria-label":"Nodes",children:r.map(a=>(0,r0.jsx)(Chr,{entry:a,actions:i},a.name))}),(0,r0.jsx)(Yj,{notices:{...o,error:o.error??i.localError,clearError:()=>{o.clearError(),i.clearLocalError()}}})]})}var Apr=L(ge(),1);var Z9=L(ge(),1);function fge(e,t){let r=(0,Z9.useRef)(null),[n,i]=(0,Z9.useState)();return(0,Z9.useLayoutEffect)(()=>{e===t&&r.current&&i(r.current.offsetHeight)},[e,t]),{ref:r,height:n}}var Whr=L(ge(),1);function dge(e){if(e.startsWith("local:")){let n=e.slice(6).replace(/\/+$/,"").split("/").filter(Boolean);return n[n.length-1]??e}let t=e.indexOf("/");return t===-1?e:e.slice(t+1)}function hge(e){let t=o=>o.startsWith("local:"),r=o=>{let a=dge(o),s=a.split("/");return s[s.length-1]??a},n=new Map;for(let o of new Set(e)){if(t(o))continue;let a=r(o);n.set(a,(n.get(a)??0)+1)}let i=new Map;for(let o of e){if(t(o)){i.set(o,dge(o));continue}let a=r(o),s=(n.get(a)??0)>1;i.set(o,s?dge(o):a)}return i}var Zj={field:"lastPhase",direction:"desc"};var Qj="all",Jj="all";async function Uhr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r.origin!==Qj&&n.set("origin",r.origin),r.status!==Jj&&n.set("status",r.status),r.sort.field!==Zj.field&&n.set("sort",r.sort.field),r.sort.direction!==Zj.direction&&n.set("direction",r.sort.direction);let i=await fetch(`/api/usage/items?${n}`);if(!i.ok)throw new Error(`Failed to load item usage (HTTP ${i.status}).`);return i.json()}var eY=L(z(),1);function Vhr({origins:e,origin:t,onChange:r}){let n=(0,Whr.useMemo)(()=>hge(e.map(o=>o.origin)),[e]),i=e.reduce((o,a)=>o+a.count,0);return(0,eY.jsxs)(ni,{select:!0,size:"small",label:"Repo",value:t,onChange:o=>r(o.target.value),sx:{minWidth:220},children:[(0,eY.jsx)(fn,{value:Qj,children:`All repos (${i})`}),e.map(o=>(0,eY.jsx)(fn,{value:o.origin,children:`${n.get(o.origin)??o.origin} (${o.count})`},o.origin))]})}var k$e=L(z(),1),nUn=[{value:Jj,label:"All"},{value:"done",label:"Done"},{value:"running",label:"Running"}];function Ghr({status:e,onChange:t}){return(0,k$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(r,n)=>n&&t(n),"aria-label":"Filter items by status",children:nUn.map(r=>(0,k$e.jsx)(hs,{value:r.value,children:r.label},r.value))})}var Q9=L(z(),1),iUn={display:"flex",alignItems:"center",gap:2,flexWrap:"wrap",mb:2},oUn="Repos show their bare name, or org/repo when two share one. Totals sum every phase's recorded usage.";function qhr({origins:e,origin:t,onOriginChange:r,status:n,onStatusChange:i}){return(0,Q9.jsxs)(ue,{sx:iUn,children:[(0,Q9.jsx)(Ghr,{status:n,onChange:i}),(0,Q9.jsx)(Vhr,{origins:e,origin:t,onChange:r}),(0,Q9.jsx)(Fe,{variant:"caption",color:"text.disabled",children:oUn})]})}var ipr=L(ge(),1);function Hd(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function n0(e){let t=Math.round(e/1e3);if(t<60)return`${t}s`;let r=Math.floor(t/60);if(r<60){let o=t%60;return o>0?`${r}m ${o}s`:`${r}m`}let n=Math.floor(r/60),i=r%60;return i>0?`${n}h ${i}m`:`${n}h`}var mge=L(z(),1),aUn={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},jhr={display:"block",fontSize:"0.75rem",color:"text.disabled",whiteSpace:"nowrap"},sUn={...jhr,fontStyle:"italic"};function pge({total:e,perPhase:t,partial:r}){return(0,mge.jsxs)(_n,{align:"right",sx:aUn,children:[e,t?(0,mge.jsx)(Fe,{component:"span",sx:r?sUn:jhr,children:t}):null]})}var tY=L(z(),1),lUn={width:"100%",maxWidth:0},cUn={display:"block",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},uUn={display:"block",mt:"2px",fontSize:"0.75rem",color:"text.secondary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function Yhr({id:e,name:t,type:r,repoLabel:n}){return(0,tY.jsxs)(_n,{sx:lUn,children:[(0,tY.jsx)(xn,{component:ys,to:FT(e),underline:"hover",color:"text.primary",title:t,sx:cUn,children:t}),(0,tY.jsxs)(Fe,{component:"span",sx:uUn,children:[so(e)," \xB7 ",r," \xB7 ",n]})]})}function Khr(e){let t=Math.max(1,e.recordedPhases);return{active:`${n0(e.activeMs/t)} / phase`,tokens:`${Hd(Math.round((e.tokensUp+e.tokensDown)/t))} / phase`}}function Xhr(e){if(!(e.status==="done"||e.recordedPhases>e.phaseCount))return`${e.recordedPhases} of ${e.phaseCount} phases`}var gge={story:"info",bug:"error"},yge={todo:"default","in-progress":"warning",done:"success",wontdo:"error"};var fUn=new Set(["done","wontdo"]);function Zhr(e){return fUn.has(e)?{label:e,color:yge[e]}:{label:"running",color:"warning"}}var E$e=L(z(),1),dUn={height:20,fontSize:"0.6875rem"};function Qhr({status:e}){let t=Zhr(e);return(0,E$e.jsx)(_n,{children:(0,E$e.jsx)(sn,{label:t.label,size:"small",variant:"outlined",color:t.color,sx:dUn})})}var i0=L(z(),1),Jhr={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"};function epr({row:e,repoLabel:t}){let r=Khr(e);return(0,i0.jsxs)(qu,{hover:!0,children:[(0,i0.jsx)(Yhr,{id:e.id,name:e.name,type:e.type,repoLabel:t}),(0,i0.jsx)(Qhr,{status:e.status}),(0,i0.jsx)(pge,{total:String(e.phaseCount||e.recordedPhases),perPhase:Xhr(e),partial:!0}),(0,i0.jsx)(pge,{total:n0(e.activeMs),perPhase:r.active}),(0,i0.jsx)(pge,{total:`\u2191 ${Hd(e.tokensUp)} \u2193 ${Hd(e.tokensDown)}`,perPhase:r.tokens}),(0,i0.jsx)(_n,{align:"right",sx:Jhr,children:(0,i0.jsxs)(ue,{component:"span",sx:{color:YJ(e.peakContextPct)},children:[Math.round(e.peakContextPct),"%"]})}),(0,i0.jsx)(_n,{align:"right",sx:Jhr,children:e.lastPhaseAt?fa(e.lastPhaseAt):"\u2014"})]})}var tpr=[{label:"Item"},{label:"Status"},{label:"Phases",sort:"phases",numeric:!0},{label:"Active",sort:"active",numeric:!0,tooltip:"Accumulated active time across the item's phases \u2014 not wall clock."},{label:"Tokens",sort:"tokens",numeric:!0},{label:"Peak ctx",sort:"peakContext",numeric:!0,tooltip:"The highest context-window usage any one phase reached."},{label:"Last phase",sort:"lastPhase",numeric:!0,tooltip:"When the item's most recent phase session started."}];var $m=L(z(),1),hUn={"& th":{whiteSpace:"nowrap"}};function rpr({column:e}){return e.tooltip?(0,$m.jsx)(lr,{title:e.tooltip,describeChild:!0,children:(0,$m.jsx)("span",{children:e.label})}):(0,$m.jsx)($m.Fragment,{children:e.label})}function npr({sort:e,onSort:t}){return(0,$m.jsx)(Fk,{sx:hUn,children:(0,$m.jsx)(qu,{children:tpr.map(r=>{let n=r.sort,i=n!==void 0&&e.field===n;return(0,$m.jsx)(_n,{align:r.numeric?"right":"left",sortDirection:i?e.direction:!1,children:n===void 0?(0,$m.jsx)(rpr,{column:r}):(0,$m.jsx)(gve,{active:i,direction:i?e.direction:"desc",onClick:()=>t(n),children:(0,$m.jsx)(rpr,{column:r})})},r.label)})})})}var mR=L(z(),1),pUn={"& td, & th":{px:1.5}};function opr({rows:e,origins:t,sort:r,onSort:n}){let i=(0,ipr.useMemo)(()=>hge([...t,...e.map(o=>o.origin)]),[t,e]);return(0,mR.jsx)(Bk,{component:an,children:(0,mR.jsxs)(Ev,{size:"small",sx:pUn,children:[(0,mR.jsx)(npr,{sort:r,onSort:n}),(0,mR.jsx)(Rv,{children:e.map(o=>(0,mR.jsx)(epr,{row:o,repoLabel:i.get(o.origin)??o.origin},o.id))})]})})}function apr(e){let t=Math.max(1,e.medianPhases),r=e.repoCount===1?"repo":"repos";return{items:String(e.itemCount),itemsFoot:`across ${e.repoCount} ${r} \xB7 ${e.doneCount} done`,phases:String(Math.round(e.medianPhases*10)/10),active:n0(e.medianActiveMs),activeFoot:`${n0(e.medianActiveMs/t)} per phase`,tokens:Hd(Math.round(e.medianTokens)),tokensFoot:`${Hd(Math.round(e.medianTokens/t))} per phase`}}var J9=L(z(),1),spr={display:"block"},mUn={fontWeight:400,fontVariantNumeric:"tabular-nums"};function rY({label:e,value:t,foot:r}){return(0,J9.jsxs)(ue,{children:[(0,J9.jsx)(Fe,{variant:"caption",color:"text.secondary",sx:spr,children:e}),(0,J9.jsx)(Fe,{variant:"h5",sx:mUn,children:t}),r?(0,J9.jsx)(Fe,{variant:"caption",color:"text.disabled",sx:spr,children:r}):null]})}var gR=L(z(),1),gUn={display:"flex",flexDirection:{xs:"column",sm:"row"},mb:3,"& > *":{flex:1,minWidth:0,p:2},"& > * + *":{borderColor:"divider",borderTop:{xs:1,sm:0},borderLeft:{xs:0,sm:1}}};function lpr({summary:e}){let t=apr(e);return(0,gR.jsxs)(an,{sx:gUn,children:[(0,gR.jsx)(rY,{label:"Items with recorded usage",value:t.items,foot:t.itemsFoot}),(0,gR.jsx)(rY,{label:"Median phases",value:t.phases}),(0,gR.jsx)(rY,{label:"Median active time",value:t.active,foot:t.activeFoot}),(0,gR.jsx)(rY,{label:"Median tokens",value:t.tokens,foot:t.tokensFoot})]})}var ip=L(z(),1);function cpr({items:e,data:t}){let{rows:r,total:n,page:i,pageSize:o}=e,{ref:a,height:s}=fge(r.length,o);return(0,ip.jsxs)(ip.Fragment,{children:[(0,ip.jsx)(lpr,{summary:t.summary}),(0,ip.jsx)(qhr,{origins:t.origins,origin:e.origin,onOriginChange:e.selectOrigin,status:e.status,onStatusChange:e.selectStatus}),n===0?(0,ip.jsx)(Fe,{color:"text.secondary",align:"center",sx:{py:6},children:"No items match this filter."}):(0,ip.jsxs)(ip.Fragment,{children:[(0,ip.jsx)(ue,{ref:a,sx:{minHeight:s},children:(0,ip.jsx)(opr,{rows:r,origins:t.origins.map(l=>l.origin),sort:e.sort,onSort:e.sortBy})}),(0,ip.jsx)(n$,{component:"div",count:n,page:i,rowsPerPage:o,rowsPerPageOptions:[o],onPageChange:(l,u)=>e.setPage(u)})]})]})}var k2=L(z(),1);function upr({items:e}){let{data:t}=e;return(0,k2.jsxs)(k2.Fragment,{children:[(0,k2.jsx)(ue,{sx:{height:4,mb:1},children:e.fetching&&(0,k2.jsx)(Ok,{})}),t?t.origins.length===0?(0,k2.jsx)(Fe,{color:"text.secondary",align:"center",sx:{py:6},children:"No item usage recorded yet."}):(0,k2.jsx)(cpr,{items:e,data:t}):null]})}function R$e(e,t,r){if(e==null)return;let n=Math.max(0,e-r),i=Math.max(0,t-n)/t;if(!(i<.05))return i}function vge(e,t){let r=Math.max(0,e-t),n=Math.floor(r/86400),i=Math.floor(r%86400/3600),o=Math.floor(r%3600/60);return n>0?`${n}d ${i}h`:i>0?`${i}h ${o}m`:`${o}m`}function yUn(e,t,r,n){let i=R$e(t,r,n);if(i!=null)return e/i}function b_(e,t,r,n){let i=yUn(e,t,r,n);return i==null?"ok":i>100?"over":i>75?"warn":"ok"}var vUn=["five_hour","seven_day"],bUn=["claude","codex","pi"];function fpr(e){let[t,r]=e.includes(":")?e.split(":",2):["claude",e],n=bUn.find(o=>o===t),i=vUn.find(o=>o===r);if(!(!n||!i)&&!(n==="claude"&&e.includes(":")))return{harness:n,window:i}}var dpr={five_hour:{label:"5h",seconds:18e3},seven_day:{label:"7d",seconds:604800,tint:{light:"rgba(0, 0, 0, 0.1)",dark:"rgba(255, 255, 255, 0.1)"}}};function eB(e){let t=fpr(e);if(!t)return dpr.five_hour;let r=dpr[t.window];return t.harness==="claude"?r:{...r,label:`${gu(t.harness)} ${r.label}`}}var xUn={ok:"success.main",warn:"warning.main",over:"error.main"};function x_(e){return xUn[e]}var oY=L(z(),1),TUn={ok:"success",warn:"warning",over:"error"};function hpr({percentage:e,level:t}){return(0,oY.jsxs)(ue,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,oY.jsx)(Ok,{variant:"determinate",value:Math.min(100,e),color:TUn[t],sx:{flexGrow:1,height:8,borderRadius:1}}),(0,oY.jsxs)(ue,{sx:{minWidth:40,textAlign:"right",color:x_(t)},children:[Math.round(e),"%"]})]})}function ppr(e){return e.avgContextPct==null?"\u2014":`${Math.round(e.avgContextPct)}%`}var SUn=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function A$e(e){return SUn.format(e)}var bge=L(z(),1);function mpr({peak:e}){return(0,bge.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:(0,bge.jsx)(lr,{title:`Cycle started ${A$e(new Date(e.createdAt))}`,children:(0,bge.jsx)("span",{children:A$e(new Date(e.resetsAt*1e3))})})})}var ypr=L(z(),1);function gpr(){return(0,ypr.jsx)(sn,{label:"reset",size:"small",color:"warning",variant:"outlined",title:"Quota reset mid-cycle \u2014 this is the peak reached before the reset.",sx:{ml:1}})}function vpr(e){return!e.tokensUp&&!e.tokensDown?"\u2014":`\u2191 ${Hd(e.tokensUp)} \u2193 ${Hd(e.tokensDown)}`}var o0=L(z(),1);function bpr({peak:e,now:t}){let{label:r,seconds:n,tint:i}=eB(e.window),o=b_(e.usedPercentage,e.resetsAt,n,t);return(0,o0.jsxs)(qu,{sx:a=>({backgroundColor:i?a.palette.mode==="dark"?i.dark:i.light:void 0}),children:[(0,o0.jsxs)(_n,{children:[r,e.resetDetected&&(0,o0.jsx)(gpr,{})]}),(0,o0.jsx)(_n,{sx:{minWidth:160},children:(0,o0.jsx)(hpr,{percentage:e.usedPercentage,level:o})}),(0,o0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:ppr(e)}),(0,o0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:e.phaseCount??0}),(0,o0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:vpr(e)}),(0,o0.jsx)(mpr,{peak:e})]})}var xge=L(ge(),1);function T_(e){let[t,r]=(0,xge.useState)(()=>Math.floor(Date.now()/1e3));return(0,xge.useEffect)(()=>{let n=setInterval(()=>r(Math.floor(Date.now()/1e3)),e);return()=>clearInterval(n)},[e]),t}var pc=L(z(),1);function xpr({peaks:e}){let t=T_(3e4);return(0,pc.jsx)(Bk,{component:an,children:(0,pc.jsxs)(Ev,{size:"small",children:[(0,pc.jsx)(Fk,{sx:{"& th":{whiteSpace:"nowrap"}},children:(0,pc.jsxs)(qu,{children:[(0,pc.jsx)(_n,{children:"Window"}),(0,pc.jsx)(_n,{children:"Peak usage"}),(0,pc.jsx)(_n,{align:"right",children:(0,pc.jsx)(lr,{title:"Mean context-window usage across all readings in this rate-limit cycle \u2014 distinct from the Peak usage quota above.",children:(0,pc.jsx)("span",{children:"Avg context"})})}),(0,pc.jsx)(_n,{align:"right",children:(0,pc.jsx)(lr,{title:"Number of phase readings behind the average.",children:(0,pc.jsx)("span",{children:"Phases"})})}),(0,pc.jsx)(_n,{align:"right",children:"Tokens spent"}),(0,pc.jsx)(_n,{align:"right",children:"Cycle reset"})]})}),(0,pc.jsx)(Rv,{children:e.map(r=>(0,pc.jsx)(bpr,{peak:r,now:t},`${r.window}-${r.resetsAt}-${r.segment}`))})]})})}var S_=L(z(),1);function Tpr({rows:e,total:t,page:r,pageSize:n,onPageChange:i}){let{ref:o,height:a}=fge(e.length,n);return(0,S_.jsxs)(S_.Fragment,{children:[(0,S_.jsx)(ue,{ref:o,sx:{minHeight:a},children:(0,S_.jsx)(xpr,{peaks:e})}),(0,S_.jsx)(n$,{component:"div",count:t,page:r,rowsPerPage:n,rowsPerPageOptions:[n],onPageChange:(s,l)=>i(l)})]})}var aY=L(ge(),1);function C_(){let[e,t]=(0,aY.useState)(!1),[r,n]=(0,aY.useState)(!1);return(0,aY.useEffect)(()=>{let i=!1;return(async()=>{try{let a=await(await fetch("/api/harness")).json();i||(t(!!a?.exposeCodexActions),n(!!a?.exposePiActions))}catch{t(!1),n(!1)}})(),()=>{i=!0}},[]),{exposeCodexActions:e,exposePiActions:r}}var P$e=L(z(),1),Spr=["five_hour","seven_day"],CUn=["codex:five_hour","codex:seven_day"];function wUn(e){let t=e?[...Spr,...CUn]:Spr;return[{value:"all",label:"All"},...t.map(r=>({value:r,label:eB(r).label}))]}function Cpr({window:e,onChange:t}){let{exposeCodexActions:r}=C_();return(0,P$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(n,i)=>i&&t(i),"aria-label":"Filter peaks by rate-limit window",children:wUn(r).map(n=>(0,P$e.jsx)(hs,{value:n.value,children:n.label},n.value))})}var j1=L(z(),1);function wpr({history:e}){let{window:t,total:r}=e;return(0,j1.jsxs)(j1.Fragment,{children:[(0,j1.jsx)(Cpr,{window:t,onChange:e.selectWindow}),(0,j1.jsx)(ue,{sx:{height:4,my:1},children:e.fetching&&(0,j1.jsx)(Ok,{})}),r===0?(0,j1.jsx)(Fe,{color:"text.secondary",align:"center",sx:{py:6},children:t==="all"?"No usage peaks recorded yet.":`No ${eB(t).label} usage peaks recorded yet.`}):(0,j1.jsx)(Tpr,{rows:e.rows,total:r,page:e.page,pageSize:e.pageSize,onPageChange:e.setPage})]})}var Sge=L(ge(),1);async function _pr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r!=="all"&&n.set("window",r);let i=await fetch(`/api/usage/history?${n}`);if(!i.ok)throw new Error(`Failed to load usage history (HTTP ${i.status}).`);return i.json()}var w_=L(ge(),1);function Tge(e,t,r=!0){let[n,i]=(0,w_.useState)(0),[o,a]=(0,w_.useState)(null),[s,l]=(0,w_.useState)(!1),[u,f]=(0,w_.useState)(null);(0,w_.useEffect)(()=>{if(!r)return;let p=!1;return l(!0),e(n,t).then(m=>{p||(a(m),l(!1))},m=>{p||(f(m instanceof Error?m:new Error(String(m))),l(!1))}),()=>{p=!0}},[e,n,t,r]);let d=o?.total??0;(0,w_.useEffect)(()=>{if(d===0)return;let p=Math.ceil(d/t)-1;n>p&&i(p)},[n,t,d]);let h=o?.rows??[];return{data:o,rows:h,total:d,loaded:o!==null,fetching:s,error:u,page:n,setPage:i,pageSize:t}}var _Un=30;function kpr(){let[e,t]=(0,Sge.useState)("all"),r=(0,Sge.useCallback)((o,a)=>_pr(o,a,e),[e]),n=Tge(r,_Un);return{...n,window:e,selectWindow:o=>{t(o),n.setPage(0)}}}var tB=L(ge(),1);function Epr(e,t){return e.field!==t?{field:t,direction:"desc"}:{field:t,direction:e.direction==="desc"?"asc":"desc"}}var kUn=30;function Rpr(e){let[t,r]=(0,tB.useState)(Qj),[n,i]=(0,tB.useState)(Jj),[o,a]=(0,tB.useState)(Zj),s=(0,tB.useCallback)((h,p)=>Uhr(h,p,{origin:t,status:n,sort:o}),[t,n,o]),l=Tge(s,kUn,e);return{...l,origin:t,selectOrigin:h=>{r(h),l.setPage(0)},status:n,selectStatus:h=>{i(h),l.setPage(0)},sort:o,sortBy:h=>{a(p=>Epr(p,h)),l.setPage(0)}}}var __=L(z(),1),EUn={borderBottom:1,borderColor:"divider",mb:2};function Ppr(){let[e,t]=(0,Apr.useState)("limits"),r=kpr(),n=Rpr(e==="items");if(r.error)throw r.error;if(n.error)throw n.error;return(0,__.jsxs)(zl,{loading:!r.loaded,title:"Usage history",maxWidth:"lg",children:[(0,__.jsxs)(zk,{value:e,onChange:(i,o)=>t(o),textColor:"inherit",indicatorColor:"secondary",sx:EUn,"aria-label":"Usage history views",children:[(0,__.jsx)(kv,{label:"Rate limits",value:"limits"}),(0,__.jsx)(kv,{label:"Items",value:"items"})]}),e==="limits"?(0,__.jsx)(wpr,{history:r}):(0,__.jsx)(upr,{items:n})]})}var Cge=L(ge(),1),L$e=(0,Cge.createContext)([]);function wge(){return(0,Cge.useContext)(L$e)}var Bmr=L(ge(),1);function as(){let{selectedCwd:e}=$n();return e||void 0}var E2=L(ge(),1);var Mpr=L(ge(),1);var RUn=new Set(["todo","done","all"]);function Lpr(e){return e&&RUn.has(e)?e:"todo"}var Ipr="backlog-filter",M$e=new Set,Dpr=AUn();function AUn(){try{return Lpr(localStorage.getItem(Ipr))}catch{return"todo"}}function PUn(e){return M$e.add(e),()=>M$e.delete(e)}function LUn(){return Dpr}function MUn(e){Dpr=e;try{localStorage.setItem(Ipr,e)}catch{}for(let t of M$e)t()}function rB(){return[(0,Mpr.useSyncExternalStore)(PUn,LUn),MUn]}function Npr(){let e=as(),t=yr(),[r]=rB(),[n,i]=(0,E2.useState)(""),[o,a]=(0,E2.useState)(null),[s,l]=(0,E2.useState)(!1),[u,f]=(0,E2.useState)(e),d=(0,E2.useRef)(void 0);return e!==u&&(f(e),a(null),l(n.trim().length>0)),(0,E2.useEffect)(()=>{if(d.current!==void 0&&clearTimeout(d.current),!n.trim()){a(null),l(!1);return}let h=new AbortController,{signal:p}=h;return l(!0),d.current=setTimeout(async()=>{try{let m=await HT({query:n,cwd:e,node:t,signal:p,filter:r});if(p.aborted)return;a(m),l(!1)}catch(m){if(!p.aborted)throw m}},250),()=>{d.current!==void 0&&clearTimeout(d.current),h.abort()}},[n,e,t,r]),{query:n,setQuery:i,results:o,loading:s}}var $pr={position:"relative",display:"grid",gridTemplateColumns:"auto minmax(0, 1fr) auto",alignItems:"center",columnGap:1.5,width:"100%",p:2,mb:1,borderRadius:2,border:1,borderColor:"divider",bgcolor:"background.paper",transition:"box-shadow 0.2s","&:hover":{boxShadow:3}},IUn={"&::after":{content:'""',position:"absolute",inset:0,borderRadius:2,zIndex:1},"&:focus-visible":{outline:"none"},"&:focus-visible::after":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:"2px"}},Opr={position:"relative",zIndex:2},Bpr=8,I$e=24,DUn=wa`
3974
3974
  from { background-position: 0 0; }
3975
3975
  to { background-position: 0 ${I$e}px; }
3976
- `,zpr={...$pr,borderColor:"warning.main",borderLeft:4,borderLeftColor:"warning.main",bgcolor:e=>Ea(e.palette.warning.main,.08)},NUn={...zpr,borderLeftColor:"transparent",backgroundImage:e=>`repeating-linear-gradient(to bottom, ${e.palette.warning.main} 0 ${Bpr}px, transparent ${Bpr}px ${I$e}px)`,backgroundOrigin:"border-box",backgroundRepeat:"repeat-y",backgroundSize:`4px ${I$e}px`,animation:`${DUn} 0.9s linear infinite`,"@media (prefers-reduced-motion: reduce)":{animation:"none"}},Fpr={"& .MuiButtonBase-root:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:"2px"}},Y1={card:$pr,inProgressCard:zpr,inProgressRunningCard:NUn,main:{minWidth:0,textAlign:"left"},stretchedNameLink:{display:"block",fontWeight:500,color:"text.primary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",...IUn},meta:{display:"flex",alignItems:"center",gap:1,...Opr,width:"fit-content",maxWidth:"100%",fontSize:"0.75rem",color:"text.secondary","& a, & p":{fontSize:"0.75rem"},...Fpr},id:{color:"text.disabled"},actions:{display:"flex",alignItems:"center",gap:1,flexShrink:0,...Opr,...Fpr}};function _ge(e){let t=e.peakContextPct>0?` \xB7 \u2593 ${Math.round(e.peakContextPct)}%`:"";return`\u2191 ${Hd(e.tokensUp)} \u2193 ${Hd(e.tokensDown)} \xB7 \u23F1 ${n0(e.activeMs)}${t}`}var Upr=L(z(),1),OUn={width:6,height:6,borderRadius:"50%",bgcolor:"currentColor",flexShrink:0};function Hpr(){return(0,Upr.jsx)(ue,{component:"span",sx:OUn})}var sY=L(z(),1),Wpr={display:"inline-flex",alignItems:"center",gap:.625,color:"warning.main",fontWeight:500,fontSize:"0.75rem",whiteSpace:"nowrap",borderRadius:1};function Vpr({item:e,openSession:t,onSelectSession:r}){let n=Xi();if(e.status!=="in-progress"||e.currentPhase==null)return null;let i=`phase ${e.currentPhase} of ${e.totalPhases??e.currentPhase}`,o=(0,sY.jsx)(Hpr,{});if(!t)return(0,sY.jsxs)(ue,{component:"span",sx:Wpr,children:[o,i]});let a=()=>{r?.(t.id),n("/sessions")};return(0,sY.jsxs)(Dn,{sx:Wpr,title:`Open the ${t.status} session`,onClick:a,children:[o,i]})}var op=L(z(),1),BUn={display:"inline-flex",alignItems:"center",gap:.5},FUn={width:8,height:8,borderRadius:"50%",flexShrink:0},$Un={whiteSpace:"nowrap"};function zUn({type:e}){let t=gge[e];return(0,op.jsxs)(ue,{component:"span",sx:BUn,children:[(0,op.jsx)(ue,{component:"span",sx:{...FUn,bgcolor:`${t}.main`}}),e]})}function HUn({item:e}){return e.usageTotal?(0,op.jsx)(lr,{title:_ge(e.usageTotal),children:(0,op.jsx)(ue,{component:"span",sx:$Un,children:`\u23F1 ${n0(e.usageTotal.activeMs)}`})}):null}function Gpr({item:e,openSession:t,onSelectSession:r}){return(0,op.jsxs)(ue,{sx:Y1.meta,children:[(0,op.jsx)(ue,{component:"span",sx:Y1.id,children:so(e.id)}),(0,op.jsx)(zUn,{type:e.type}),(0,op.jsx)(Vpr,{item:e,openSession:t,onSelectSession:r}),(0,op.jsx)(uP,{jiraKey:e.jiraKey}),(0,op.jsx)(cP,{githubIssue:e.githubIssue,variant:"icon"}),(0,op.jsx)(HUn,{item:e})]})}function qpr(e,t){return e.filter(r=>_P(r)?.itemId===t).reduce((r,n)=>r&&r.startedAt>=n.startedAt?r:n,void 0)}var Ypr=L(z(),1),UUn={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},WUn={todo:"text.disabled","in-progress":"warning.main",done:"success.main",wontdo:"error.main"};function VUn(e){return{fontSize:"1.125rem",flexShrink:0,color:WUn[e]}}function jpr({status:e}){return(0,Ypr.jsx)(Fe,{sx:VUn(e),children:UUn[e]})}function kge(e){return e.status==="todo"||e.status==="in-progress"}function GUn(e){if(e.status==="done")return e.totalPhases;if(e.status==="in-progress")return e.currentPhase}function qUn(e,t,r){return r?"complete":e<t?"done":e===t?"current":"remaining"}function Kpr(e){let t=e.totalPhases,r=GUn(e);if(!t||r==null)return;let n=e.status==="done";return{reached:r,total:t,segments:Array.from({length:t},(i,o)=>({phase:o+1,kind:qUn(o+1,r,n)}))}}var nB=L(z(),1),jUn={done:"text.secondary",current:"warning.main",remaining:"divider",complete:"success.main"},YUn={display:"inline-flex",alignItems:"center",gap:.5,flexShrink:0},KUn={fontSize:"0.6875rem",color:"text.secondary",fontVariantNumeric:"tabular-nums"},XUn={display:"inline-flex",alignItems:"center",gap:"2px"},ZUn={width:6,height:12,borderRadius:"1px",flexShrink:0};function Xpr({item:e}){let t=Kpr(e);return t?(0,nB.jsxs)(ue,{sx:YUn,title:`Phase ${t.reached} of ${t.total}`,children:[(0,nB.jsx)(ue,{component:"span",sx:KUn,children:`${t.reached}/${t.total}`}),(0,nB.jsx)(ue,{component:"span",sx:XUn,"aria-hidden":!0,children:t.segments.map(r=>(0,nB.jsx)(ue,{component:"span","data-segment":r.kind,sx:{...ZUn,bgcolor:jUn[r.kind]}},r.phase))})]}):null}var gmr=L(ge(),1);var Age=L(ge(),1);var lY=L(z(),1);function Zpr({tooltip:e,disabled:t,onClick:r}){return(0,lY.jsx)(lr,{title:e,children:(0,lY.jsx)(ue,{component:"span",sx:{display:"flex"},children:(0,lY.jsx)(qt,{startIcon:(0,lY.jsx)(Fp,{}),disabled:t,onClick:r,children:"Build"})})})}var D$e=L(z(),1);function Ege(e){let t=[];return e.exposeCodexActions&&t.push({kind:"codex",label:"with Codex"}),e.exposePiActions&&t.push({kind:"pi",label:"with pi"}),t}function Rge({anchorEl:e,open:t,onClose:r,options:n,onSelect:i,stop:o}){return(0,D$e.jsx)(Dl,{anchorEl:e,open:t,onClose:r,onClick:o,children:n.map(a=>(0,D$e.jsx)(fn,{onClick:s=>{o(s),i(a.kind)},children:a.label},a.kind))})}var K1=L(z(),1);function Qpr({tooltip:e,disabled:t,onBuild:r,onSelectHarness:n}){let i=Ege(C_()),o=(0,Age.useRef)(null),[a,s]=(0,Age.useState)(!1),l=u=>u.stopPropagation();return(0,K1.jsxs)(K1.Fragment,{children:[(0,K1.jsxs)(J2,{ref:o,variant:"contained",color:"success",size:"small",disabled:t,children:[(0,K1.jsx)(Zpr,{tooltip:e,disabled:t,onClick:u=>{l(u),r()}}),i.length>0&&(0,K1.jsx)(qt,{"aria-label":"Build with a different harness",onClick:u=>{l(u),s(!0)},children:(0,K1.jsx)(Up,{})})]}),(0,K1.jsx)(Rge,{anchorEl:o.current,open:a,onClose:()=>s(!1),options:i,onSelect:u=>{s(!1),n(u)},stop:l})]})}var Jpr=L(z(),1),iB=ft((0,Jpr.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3m-5.55-8h-2.9v3H8l4 4 4-4h-2.55z"}),"CloudDownloadOutlined");var k_=L(z(),1),QUn={vertical:"bottom",horizontal:"center"};function Pge({clone:e}){let{prompt:t,confirm:r,cancel:n,error:i,dismissError:o}=e;return(0,k_.jsxs)(k_.Fragment,{children:[t&&(0,k_.jsx)(vo,{title:"Clone repository",message:`Clone ${t.displayName} over SSH into ${t.cloneTarget}${t.node?` on ${t.node}`:""}?`,confirmLabel:"Clone",confirmColor:"primary",onConfirm:r,onCancel:n}),(0,k_.jsx)(ol,{open:!!i,autoHideDuration:8e3,onClose:o,anchorOrigin:QUn,children:(0,k_.jsx)(ri,{severity:"error",onClose:o,variant:"filled",children:i})})]})}var a0=L(ge(),1);function N$e(e){return["backlog","clone",e]}function Lge(e,t){t(N$e(e.origin),void 0,{title:`Clone ${e.displayName}`,subtitle:e.origin,...e.node&&{node:e.node}})}function emr(e,t){return!!e&&e.length===t.length&&e.every((r,n)=>r===t[n])}function tmr(e,t,r){let n=N$e(t.origin),i=new Set(e.filter(o=>emr(o.assistArgs,n)).map(o=>o.id));return Lge(t,r),{args:n,target:t.cloneTarget,node:t.node,preexisting:i}}function rmr(e,t){if(!t.id){let n=e.find(i=>emr(i.assistArgs,t.args)&&!t.preexisting.has(i.id));return n?{type:"latch",id:n.id}:null}let r=e.find(n=>n.id===t.id);return r?r.status==="done"?{type:"done"}:r.status==="error"?{type:"error",message:r.error||"Clone failed."}:null:null}function Mge(e){let{setSelectedCwd:t}=$n(),{launchAssist:r}=$l(),[n,i]=(0,a0.useState)(null),[o,a]=(0,a0.useState)(null),[s,l]=(0,a0.useState)(null),u=(0,a0.useCallback)(p=>{l(null),i(p)},[]),f=(0,a0.useCallback)(()=>i(null),[]),d=(0,a0.useCallback)(()=>l(null),[]),h=(0,a0.useCallback)(()=>{n&&(a(tmr(e,n,r)),i(null))},[n,e,r]);return(0,a0.useEffect)(()=>{if(!o)return;let p=rmr(e,o);p&&(p.type==="latch"?a(m=>m&&{...m,id:p.id}):p.type==="done"?(o.node?t(o.target,o.node):t(o.target),a(null)):(l(p.message),a(null)))},[e,o,t]),{prompt:n,requestClone:u,confirm:h,cancel:f,error:s,dismissError:d}}function oB(e,t){return`Not cloned ${e?`on ${e}`:"locally"} \u2014 click to clone into ${t}`}var R2=L(z(),1),JUn={border:1,borderStyle:"dashed"};function nmr({target:e}){let t=Mge(wge());return(0,R2.jsxs)(R2.Fragment,{children:[(0,R2.jsx)(lr,{title:oB(e.node,e.cloneTarget),children:(0,R2.jsx)(or,{"aria-label":"Clone",size:"small",sx:JUn,onClick:r=>{r.stopPropagation(),t.requestClone(e)},children:(0,R2.jsx)(iB,{fontSize:"small"})})}),(0,R2.jsx)(Pge,{clone:t})]})}function imr(e,t,r,n){let i=r.node?[{node:r.node}]:[];e(["backlog","run",so(t),...n],r.cwd,...i)}var cY=L(z(),1);function omr({tooltip:e,disabled:t,onClick:r}){return(0,cY.jsx)(lr,{title:e,children:(0,cY.jsx)("span",{children:(0,cY.jsx)(or,{"aria-label":"Build",color:"success",size:"small",disabled:t,onClick:r,children:(0,cY.jsx)(Fp,{})})})})}function eWn(e,t){let r=e.assistArgs;if(r?.[0]!=="backlog"||r[1]!=="run"||!r[2])return!1;try{return mJ(r[2])===t}catch{return!1}}function amr(e,t){return e.find(r=>r.status!=="done"&&r.status!=="error"&&(eWn(r,t)||_P(r)?.itemId===t))}var Ige=L(ge(),1),O$e=(0,Ige.createContext)({nodes:null,names:[],visible:!1,selected:void 0,select:()=>{}});function Ou(){return(0,Ige.useContext)(O$e)}function Dge(){let{nodes:e,selected:t}=Ou();return t&&t!==e?.local?t:void 0}var cmr=L(ge(),1);var Nge=L(ge(),1);function smr(e,t){return Promise.all(t.map(async r=>{let n=await tWn(e,r).catch(()=>({}));return[r,n]}))}async function tWn(e,t){let r=await fetch(tn(`/api/repo-location?origin=${encodeURIComponent(e)}`,t||void 0));return r.ok?r.json():{}}var B$e="\0";function lmr(e,t){let[r,n]=(0,Nge.useState)(null);return(0,Nge.useEffect)(()=>{if(!e||!t)return;let i=!1;return smr(e,t.split(B$e)).then(o=>{i||n({origin:e,byNode:Object.fromEntries(o)})}),()=>{i=!0}},[e,t]),r}function Oge(e,t){let{cloneOn:r,originOf:n}=$n(),i=e?n(e):void 0,o=t.filter(s=>!e||!r(e,s)).map(s=>s??"").join(B$e),a=lmr(i,o);return(0,cmr.useCallback)(s=>{let l=e?r(e,s):void 0;if(l)return{kind:"cloned",cwd:l};let u=a&&a.origin===i?a.byNode[s??""]:void 0;return u?.cwd?{kind:"cloned",cwd:u.cwd}:i&&u?.cloneTarget?{kind:"clonable",origin:i,cloneTarget:u.cloneTarget}:{kind:"unavailable"}},[e,r,i,a])}var sB=L(ge(),1);var umr=L(z(),1);function aB({inputRef:e,value:t,onChange:r,onKeyDown:n,placeholder:i,autoFocus:o}){return(0,umr.jsx)(ni,{autoFocus:o,inputRef:e,value:t,onChange:a=>r(a.target.value),onKeyDown:n,placeholder:i,size:"small",fullWidth:!0,slotProps:{input:{sx:{fontSize:12}}},sx:{p:.5}})}var Bge=L(ge(),1);function Fge(e){let t=(0,Bge.useRef)(null);return(0,Bge.useEffect)(()=>{e&&t.current?.scrollIntoView({block:"nearest"})},[e]),t}var dmr=L(z(),1);function fmr({cwd:e,selected:t,highlighted:r,onHover:n,onSelect:i}){let o=Fge(r);return(0,dmr.jsx)(fn,{ref:o,selected:t,title:e,onClick:i,onMouseEnter:n,sx:{fontSize:12,display:"flex",justifyContent:"space-between",gap:1,...r&&{bgcolor:"action.hover"}},children:X1(e)})}var F$e=L(z(),1);function $ge({repos:e,selected:t,highlight:r,onHighlight:n,onSelect:i}){return(0,F$e.jsx)(Cp,{dense:!0,children:e.map((o,a)=>(0,F$e.jsx)(fmr,{cwd:o,selected:o===t,highlighted:a===r,onHover:()=>n(a),onSelect:()=>i(o)},o))})}var zge=L(ge(),1);function E_(e,t,r,n){let[i,o]=(0,zge.useState)(0);return(0,zge.useEffect)(()=>{o(0)},[t]),{highlight:i,setHighlight:o,onKeyDown:s=>{let l=e.length;if(s.key==="ArrowDown")s.preventDefault(),l>0&&o(u=>(u+1)%l);else if(s.key==="ArrowUp")s.preventDefault(),l>0&&o(u=>(u-1+l)%l);else if(s.key==="Enter"){s.preventDefault();let u=e[i];u!==void 0&&(r(u),n())}else s.key==="Escape"&&(s.preventDefault(),n())}}}var uY=L(z(),1);function X1(e){let t=e.includes("\\")?"\\":"/";return e.split(t).filter(Boolean).pop()??e}var rWn={...MP};function hmr({repos:e,selected:t,onSelect:r,close:n}){let[i,o]=(0,sB.useState)(""),a=(0,sB.useRef)(null);(0,sB.useEffect)(()=>{a.current?.focus()},[]);let s=i.trim().toLowerCase(),l=s?e.filter(p=>p.toLowerCase().includes(s)):e,{highlight:u,setHighlight:f,onKeyDown:d}=E_(l,s,r,n);return(0,uY.jsxs)(an,{elevation:4,sx:rWn,children:[(0,uY.jsx)(aB,{inputRef:a,value:i,onChange:o,onKeyDown:d,placeholder:"Filter repos..."}),(0,uY.jsx)($ge,{repos:l,selected:t,highlight:u,onHighlight:f,onSelect:p=>{r(p),n()}})]})}function Hge(e,t){return{origin:e.origin,cloneTarget:e.cloneTarget,displayName:X1(e.origin),node:t}}function pmr(){let e=as(),t=Dge(),r=Oge(e??"",[t])(t);return e?r.kind==="cloned"?{kind:"ready",cwd:r.cwd,node:t}:r.kind==="clonable"?{kind:"clone",prompt:Hge(r,t)}:{kind:"unavailable",node:t??"this machine"}:{kind:"ready",node:t}}function mmr(e,t){return t?`Not cloned on ${t}`:e?"Already running \u2014 close that session to run it again":"Build"}var Uge=L(z(),1);function Wge({itemId:e,compact:t=!1}){let{launchAssist:r}=$l(),n=pmr(),i=amr(wge(),e),[o,a]=(0,gmr.useState)(!1);if(n.kind==="clone")return(0,Uge.jsx)(nmr,{target:n.prompt});let s=n.kind==="unavailable"?n.node:void 0,l=o||i!==void 0||!!s,u=d=>{l||n.kind!=="ready"||(a(!0),imr(r,e,n,d))},f=mmr(i!==void 0,s);return t?(0,Uge.jsx)(omr,{tooltip:f,disabled:l,onClick:d=>{d.stopPropagation(),u([])}}):(0,Uge.jsx)(Qpr,{tooltip:f,disabled:l,onBuild:()=>u([]),onSelectHarness:d=>u(["--harness",d])})}var ymr=L(ge(),1);var lB=L(z(),1);function vmr({itemId:e,starred:t,onToggled:r}){let n=as(),i=yr(),[o,a]=(0,ymr.useState)(!1);return(0,lB.jsx)(lr,{title:t?"Unstar":"Star",children:(0,lB.jsx)("span",{children:(0,lB.jsx)(or,{"aria-label":t?"Unstar":"Star","aria-pressed":t,color:t?"warning":"default",size:"small",disabled:o,onClick:async l=>{if(l.stopPropagation(),!o){a(!0);try{await PJ(e,!t,n,i),await r()}finally{a(!1)}}},children:t?(0,lB.jsx)(Nee,{}):(0,lB.jsx)(Oee,{})})})})}var bmr=L(z(),1),xmr=ft((0,bmr.jsx)("path",{d:"M22 7h-9v2h9zm0 8h-9v2h9zM5.54 11 2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41z"}),"Checklist");var fY=L(z(),1),nWn={display:"inline-flex",alignItems:"center",gap:.375,flexShrink:0,fontSize:"0.71875rem",color:"text.secondary","& svg":{fontSize:14}};function Tmr({count:e}){return e<1?null:(0,fY.jsx)(lr,{title:`${e} incomplete subtask${e===1?"":"s"}`,children:(0,fY.jsxs)(ue,{component:"span",sx:nWn,children:[(0,fY.jsx)(xmr,{}),e]})})}var A2=L(z(),1);function Smr({item:e,onReload:t}){return(0,A2.jsxs)(A2.Fragment,{children:[(0,A2.jsx)(Tmr,{count:e.incompleteSubtasks}),(0,A2.jsx)(Xpr,{item:e}),(0,A2.jsx)(vmr,{itemId:e.id,starred:e.starred,onToggled:t}),kge(e)&&(0,A2.jsx)(Wge,{itemId:e.id,compact:!0})]})}var P2=L(z(),1);function iWn(e,t){return e?t?Y1.inProgressRunningCard:Y1.inProgressCard:Y1.card}function Cmr({item:e,to:t,socket:r,onReload:n}){let i=qpr(r.sessions,e.id),o=e.status==="in-progress",a=o&&i?.status==="running";return(0,P2.jsxs)(ue,{sx:iWn(o,a),children:[(0,P2.jsx)(jpr,{status:e.status}),(0,P2.jsxs)(ue,{sx:Y1.main,children:[(0,P2.jsx)(xn,{component:ys,to:t,underline:"none",title:e.name,sx:Y1.stretchedNameLink,children:e.name}),(0,P2.jsx)(Gpr,{item:e,openSession:i,onSelectSession:r.selectSession})]}),(0,P2.jsx)(ue,{sx:Y1.actions,children:(0,P2.jsx)(Smr,{item:e,onReload:n})})]})}var _mr=L(z(),1),oWn={all:"items",story:"stories",bug:"bugs"},aWn={textAlign:"center",color:"text.disabled",py:6,px:2};function wmr({query:e,typeFilter:t}){let r=oWn[t],n=e.trim()?`No ${r} match your search.`:`No ${r} in the backlog.`;return(0,_mr.jsx)(ue,{sx:aWn,children:n})}var Z1=L(z(),1),sWn={display:"flex",justifyContent:"center",py:6};function kmr({loading:e,error:t,query:r,typeFilter:n,items:i,socket:o,itemPath:a,onReload:s}){if(e)return(0,Z1.jsx)(ue,{sx:sWn,children:(0,Z1.jsx)(mo,{})});let l=t&&(0,Z1.jsx)(ri,{severity:"error",children:t});return i.length===0?l||(0,Z1.jsx)(wmr,{query:r,typeFilter:n}):(0,Z1.jsxs)(Z1.Fragment,{children:[l,i.map(u=>(0,Z1.jsx)(Cmr,{item:u,to:a(u),socket:o,onReload:s},u.id))]})}var cB=L(ge(),1);function lWn(e){let t=new URLSearchParams;for(let n of e)t.append("knownCwd",n);let r=t.toString();return r?`/api/backlog/summary?${r}`:"/api/backlog/summary"}async function Emr({cwd:e,node:t,knownCwds:r,signal:n}){return(await fetch(Fl(lWn(r),e,t),{signal:n})).json()}function Rmr(){let{repos:e,selectedCwd:t,cloneOn:r}=$n(),n=Dge(),[i,o]=(0,cB.useState)([]),a=(0,cB.useMemo)(()=>e.map(l=>r(l,n)).filter(l=>!!l),[e,r,n]),s=t?r(t,n):void 0;return(0,cB.useEffect)(()=>{let l=new AbortController;return Emr({cwd:s,node:n,knownCwds:a,signal:l.signal}).then(o).catch(()=>{}),()=>l.abort()},[a,s,n]),{summaries:i,node:n}}var Vge=L(z(),1),cWn={borderStyle:"dashed"};function Amr({summary:e,node:t,onSelectCwd:r,onRequestClone:n}){let{origin:i,displayName:o,openCount:a,isCurrent:s,cwd:l,cloneTarget:u}=e,f=!l&&!!u,d=l?()=>r(l):f&&u?()=>n({origin:i,cloneTarget:u,displayName:o,node:t}):void 0,h=(0,Vge.jsx)(sn,{label:`${o} (${a})`,size:"small",color:s?"primary":"default",variant:s?"filled":"outlined",disabled:!l&&!f,onClick:d,icon:f?(0,Vge.jsx)(iB,{}):void 0,sx:f?cWn:void 0});return!f||!u?h:(0,Vge.jsx)(lr,{describeChild:!0,title:oB(t,u),children:h})}var dY=L(z(),1),uWn={flexWrap:"wrap",gap:1,mb:2};function Pmr({sessions:e}){let{summaries:t,node:r}=Rmr(),{setSelectedCwd:n}=$n(),i=Mge(e);return t.length===0?null:(0,dY.jsxs)(Rt,{direction:"row",sx:uWn,children:[t.map(o=>(0,dY.jsx)(Amr,{summary:o,node:r,onSelectCwd:a=>r?n(a,r):n(a),onRequestClone:i.requestClone},o.origin)),(0,dY.jsx)(Pge,{clone:i})]})}var Mmr=L(z(),1);function Lmr({value:e,onChange:t}){return(0,Mmr.jsx)(ni,{"data-backlog-focus":"search",fullWidth:!0,size:"small",placeholder:"Search backlog\u2026",value:e,onChange:r=>t(r.target.value),sx:{mb:2}})}var Gge=L(ge(),1);var qge=L(z(),1);async function fWn(){return(await(await fetch("/api/backups/list")).json())[0]}function Imr(){let[e,t]=(0,Gge.useState)();return(0,Gge.useEffect)(()=>{fWn().then(t)},[]),e?(0,qge.jsx)(lr,{title:new Date(e.createdAt).toLocaleString(),children:(0,qge.jsxs)(xn,{component:ys,to:"/backups",underline:"hover",color:"text.secondary",variant:"body2",children:["Last backed up ",fa(String(e.createdAt))]})}):null}var uB=L(z(),1);function Dmr(){let[e,t]=rB();return(0,uB.jsxs)(du,{value:e,exclusive:!0,size:"small","aria-label":"Status filter",onChange:(r,n)=>{n!==null&&t(n)},children:[(0,uB.jsx)(hs,{value:"todo",children:"Todo"}),(0,uB.jsx)(hs,{value:"done",children:"Done"}),(0,uB.jsx)(hs,{value:"all",children:"All"})]})}var fB=L(z(),1);function Nmr({value:e,onChange:t}){return(0,fB.jsxs)(du,{value:e,exclusive:!0,size:"small","aria-label":"Type filter",onChange:(r,n)=>{n!==null&&t(n)},children:[(0,fB.jsx)(hs,{value:"all",children:"All"}),(0,fB.jsx)(hs,{value:"story",children:"Stories"}),(0,fB.jsx)(hs,{value:"bug",children:"Bugs"})]})}var R_=L(z(),1),dWn={justifyContent:"space-between",alignItems:"center",mb:3},hWn={fontWeight:600},pWn={alignItems:"center"};function Omr({typeFilter:e,onTypeFilterChange:t}){return(0,R_.jsxs)(Rt,{direction:"row",sx:dWn,children:[(0,R_.jsx)(Fe,{variant:"h5",sx:hWn,children:"Backlog"}),(0,R_.jsxs)(Rt,{direction:"row",spacing:2,sx:pWn,children:[(0,R_.jsx)(Imr,{}),(0,R_.jsx)(Nmr,{value:e,onChange:t}),(0,R_.jsx)(Dmr,{})]})]})}var L2=L(z(),1);function Fmr({items:e,loading:t,error:r,socket:n,onReload:i}){let o=as(),a=yr(),{query:s,setQuery:l,results:u,loading:f}=Npr(),[d,h]=(0,Bmr.useState)("all"),p=u??e,m=d==="all"?p:p.filter(g=>g.type===d);return(0,L2.jsxs)(L2.Fragment,{children:[(0,L2.jsx)(Omr,{typeFilter:d,onTypeFilterChange:h}),(0,L2.jsx)(Lmr,{value:s,onChange:l}),(0,L2.jsx)(Pmr,{sessions:n.sessions}),(0,L2.jsx)(kmr,{loading:t||f,error:u?null:r,query:s,typeFilter:d,items:m,socket:n,itemPath:g=>FT(g.id,o,a),onReload:i})]})}var t0e=L(ge(),1);var yR=L(ge(),1);async function $$e(e,t,r){let n=await fetch(Fl(`/api/items/${so(e)}`,t.cwd,t.node),{signal:r});return n.ok?n.json():null}function $mr(e){let t=as(),r=yr(),[n,i]=(0,yR.useState)(null),[o,a]=(0,yR.useState)(!0),s=(0,yR.useCallback)(async()=>{i(await $$e(e,{cwd:t,node:r}))},[e,t,r]);return(0,yR.useEffect)(()=>{let l=new AbortController,{signal:u}=l;return a(!0),(async()=>{try{let f=await $$e(e,{cwd:t,node:r},u);if(u.aborted)return;i(f),a(!1)}catch(f){if(!u.aborted)throw f}})(),()=>l.abort()},[e,t,r]),{item:n,loading:o,reload:s}}var A_={description:"item-section-description",acceptanceCriteria:"item-section-acceptance-criteria",subtasks:"item-section-subtasks",plan:"item-section-plan",activity:"item-section-activity",comments:"item-section-comments"},hY=140,z$e="--pinned-header-height",jge=`var(${z$e}, ${hY}px)`,zmr=`calc(${jge} + 8px)`;function zm(e){return{id:A_[e],sx:{mb:2,scrollMarginTop:zmr}}}function Yge(e){return{id:`item-phase-${e}`,sx:{scrollMarginTop:zmr}}}var P_=L(z(),1);function Hmr({criteria:e}){return e.length===0?null:(0,P_.jsxs)(ue,{...zm("acceptanceCriteria"),children:[(0,P_.jsx)(Fe,{variant:"overline",sx:{color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"},children:"Acceptance Criteria"}),(0,P_.jsx)(A0,{disablePadding:!0,sx:{maxWidth:"72ch"},children:e.map((t,r)=>(0,P_.jsxs)(rT,{disableGutters:!0,disablePadding:!0,sx:{py:.5,display:"flex",alignItems:"baseline"},children:[(0,P_.jsxs)(Fe,{component:"span",sx:{color:"text.secondary",mr:1},children:[r+1,"."]}),(0,P_.jsx)(yu,{component:"span",className:"markdown",html:RP(t)})]},t))})]})}var pY=L(z(),1),mWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Umr({description:e}){return e?(0,pY.jsxs)(ue,{...zm("description"),children:[(0,pY.jsx)(Fe,{variant:"overline",sx:mWn,children:"Description"}),(0,pY.jsx)(kw,{content:e,renderMermaid:!0})]}):null}var Zmr=L(ge(),1);function Wmr(e,t=10){let r=i=>e.filter(o=>o.kind===i).reverse(),n=r("commit");return{branches:r("branch"),commits:n.slice(0,t),overflowCommits:n.slice(t),prs:r("pr"),slacks:r("slack"),sessions:r("session")}}var Gmr=L(z(),1),gWn={color:"text.secondary",alignSelf:"flex-start",textAlign:"left"};function Vmr({hiddenCount:e,expanded:t,onToggle:r}){return e===0?null:(0,Gmr.jsx)(xn,{component:"button",type:"button",variant:"body2",underline:"hover",sx:gWn,onClick:n=>{n.stopPropagation(),r()},children:t?"Show fewer commits":`\u2026 and ${e} more commits`})}var vR=L(z(),1),yWn={display:"flex",alignItems:"center",gap:1},vWn={color:"text.secondary",fontFamily:"monospace"},bWn={flex:1,overflowWrap:"anywhere"},xWn={color:"text.disabled","&:hover":{color:"text.primary"}};function qmr({conversation:e}){let{resumeSession:t}=$l(),r=n=>{n.stopPropagation(),t(e.sessionId,e.cwd??"",e.title,e.harness)};return(0,vR.jsxs)(ue,{sx:yWn,children:[(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:vWn,children:"session"}),(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:bWn,children:e.title??e.sessionId}),(0,vR.jsx)(or,{size:"small",title:"Resume",sx:xWn,onClick:r,children:(0,vR.jsx)(Fp,{sx:{fontSize:14}})})]})}var Ymr=L(z(),1),TWn={color:"text.disabled",ml:1};function jmr({gitRef:e}){return e.kind!=="commit"||!e.createdAt?null:(0,Ymr.jsx)(ue,{component:"span",sx:TWn,children:SWn(e.createdAt)})}function SWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Kmr(e){if(e.kind==="commit"){let t=e.title?` ${e.title}`:"";return`${e.ref.slice(0,8)}${t}`}if(e.kind==="pr"){let t=e.title?` ${e.title}`:"",r=e.state?` (${e.state.toLowerCase()})`:"";return`#${e.ref}${t}${r}`}return e.kind==="slack"||e.kind==="session"?e.title??e.ref:e.ref}var Q1=L(z(),1),CWn={color:"text.secondary",mr:1,fontFamily:"monospace"};function wWn({gitRef:e}){let t=Kmr(e);return!e.url||e.kind==="session"?(0,Q1.jsx)(Q1.Fragment,{children:t}):(0,Q1.jsx)(xn,{href:e.url,target:"_blank",rel:"noopener",onClick:r=>r.stopPropagation(),children:t})}function Xmr({gitRef:e}){return(0,Q1.jsxs)(Fe,{variant:"body2",children:[(0,Q1.jsx)(ue,{component:"span",sx:CWn,children:e.kind}),(0,Q1.jsx)(wWn,{gitRef:e}),(0,Q1.jsx)(jmr,{gitRef:e})]})}var L_=L(z(),1),_Wn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Qmr({gitRefs:e,conversations:t=[]}){let[r,n]=(0,Zmr.useState)(!1),{branches:i,commits:o,overflowCommits:a,prs:s,slacks:l}=Wmr(e),u=[...i,...o,...r?a:[],...s,...l];return u.length===0&&t.length===0?null:(0,L_.jsxs)(ue,{...zm("activity"),children:[(0,L_.jsx)(Fe,{variant:"overline",sx:_Wn,children:"Activity"}),(0,L_.jsxs)(Rt,{spacing:1,children:[u.map(f=>(0,L_.jsx)(Xmr,{gitRef:f},`${f.kind}:${f.ref}`)),t.map(f=>(0,L_.jsx)(qmr,{conversation:f},f.sessionId)),(0,L_.jsx)(Vmr,{hiddenCount:a.length,expanded:r,onToggle:()=>n(f=>!f)})]})]})}var bR=L(z(),1),kWn={alignItems:"center",fontSize:"0.75rem",color:"text.secondary",mb:.5},EWn={color:"text.disabled"},RWn={fontWeight:500},AWn={summary:"Phase summary",comment:"Comment"};function Jmr({comment:e}){return(0,bR.jsxs)(Rt,{direction:"row",spacing:.5,sx:kWn,children:[e.id!==void 0&&(0,bR.jsxs)(Fe,{variant:"caption",sx:EWn,children:["#",e.id]}),(0,bR.jsx)(Fe,{variant:"caption",sx:RWn,children:AWn[e.type]}),e.phase!==void 0&&(0,bR.jsxs)(Fe,{variant:"caption",children:["\xB7 Phase ",e.phase]}),(0,bR.jsxs)(Fe,{variant:"caption",children:["\xB7 ",PWn(e.timestamp)]})]})}function PWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var egr=L(z(),1),tgr=ft((0,egr.jsx)("path",{d:"M16 9v10H8V9zm-1.5-6h-5l-1 1H5v2h14V4h-3.5zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2z"}),"DeleteOutlined");var H$e=L(ge(),1);async function rgr(e,t,r,n){let i=await fetch(Fl(`/api/items/${so(e)}/comments/${t}`,r,n),{method:"DELETE"});if(!i.ok){let o=await i.json().catch(()=>{});throw new Error(o?.error??`Failed to delete comment (${i.status})`)}}var J1=L(z(),1),LWn={mt:-.5,mr:-.5,color:"text.secondary"};function ngr({itemId:e,commentId:t,onDeleted:r}){let n=as(),i=yr(),[o,a]=(0,H$e.useState)(!1),[s,l]=(0,H$e.useState)(),u=()=>l(void 0);return(0,J1.jsxs)(J1.Fragment,{children:[o&&(0,J1.jsx)(vo,{message:"Are you sure you want to delete this comment?",onConfirm:async()=>{a(!1);try{await rgr(e,t,n,i),await r()}catch(f){l(f instanceof Error?f.message:"Failed to delete comment")}},onCancel:()=>a(!1)}),(0,J1.jsx)(ol,{open:s!==void 0,autoHideDuration:6e3,onClose:u,children:(0,J1.jsx)(ri,{severity:"error",variant:"filled",onClose:u,children:s})}),(0,J1.jsx)(or,{"aria-label":"Delete comment",size:"small",sx:LWn,onClick:()=>a(!0),children:(0,J1.jsx)(tgr,{fontSize:"inherit"})})]})}var xR=L(z(),1),MWn={summary:{bgcolor:"warning.light",borderColor:"warning.dark"},comment:{bgcolor:"action.selected",borderColor:"divider"}},IWn={justifyContent:"space-between",alignItems:"flex-start"},DWn={color:"text.primary",whiteSpace:"pre-wrap"};function NWn(e){return{p:1.5,bgcolor:e.bgcolor,borderColor:e.borderColor}}function igr({comment:e,itemId:t,onDeleted:r}){return(0,xR.jsxs)(an,{variant:"outlined",sx:NWn(MWn[e.type]),children:[(0,xR.jsxs)(Rt,{direction:"row",sx:IWn,children:[(0,xR.jsx)(Jmr,{comment:e}),e.id!==void 0&&t!==void 0&&r&&(0,xR.jsx)(ngr,{itemId:t,commentId:e.id,onDeleted:r})]}),(0,xR.jsx)(Fe,{variant:"body2",sx:DWn,children:e.text})]})}var dB=L(z(),1),OWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function ogr({comments:e,itemId:t,onCommentDeleted:r}){return e.length===0?null:(0,dB.jsxs)(ue,{...zm("comments"),children:[(0,dB.jsx)(Fe,{variant:"overline",sx:OWn,children:"Comments"}),(0,dB.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,dB.jsx)(igr,{comment:n,itemId:t,onDeleted:r},`${n.timestamp}-${i}`))})]})}var agr=L(z(),1);function hB({total:e,sx:t}){return(0,agr.jsx)(Fe,{sx:t,children:_ge(e)})}var lgr=L(z(),1),BWn={color:"text.secondary",fontSize:"0.75rem"};function sgr({usage:e}){let t={tokensUp:e.reduce((r,n)=>r+n.tokensUp,0),tokensDown:e.reduce((r,n)=>r+n.tokensDown,0),activeMs:e.reduce((r,n)=>r+n.activeMs,0),peakContextPct:e.reduce((r,n)=>Math.max(r,n.peakContextPct),0)};return(0,lgr.jsx)(hB,{total:t,sx:BWn})}var M2=L(z(),1);function cgr({checks:e}){return(0,M2.jsxs)(ue,{sx:{mt:1,pt:1},children:[(0,M2.jsx)(no,{sx:{mb:1}}),(0,M2.jsx)(Fe,{variant:"overline",sx:{color:"text.disabled",letterSpacing:"0.08em"},children:"Manual Checks"}),(0,M2.jsx)(A0,{disablePadding:!0,sx:{ml:.5,mt:.5},children:e.map(t=>(0,M2.jsxs)(rT,{disableGutters:!0,disablePadding:!0,sx:{py:.25,display:"flex",alignItems:"baseline"},children:[(0,M2.jsx)(Fe,{component:"span",sx:{mr:1,fontSize:"0.875rem",color:"text.secondary"},children:"\u2610"}),(0,M2.jsx)(yu,{component:"span",className:"markdown",sx:{fontSize:"0.875rem",color:"text.secondary"},html:RP(t)})]},t))})]})}var Kge={done:{borderColor:"success.light",bgcolor:"success.light"},current:{borderColor:"info.main",bgcolor:"info.light",ring:"info.light"},upcoming:{borderColor:"divider",bgcolor:"background.paper"}};function ugr(e){let t=Kge[e];return{p:2,borderColor:t.ring?"info.main":t.borderColor,bgcolor:t.bgcolor,...t.ring?{boxShadow:"0 0 0 2px"}:{}}}var fgr={done:"\u2713",current:"\u2022",upcoming:"\u2022"};var pgr=L(ge(),1);var dgr=L(ge(),1),ev=L(z(),1);function hgr({phaseName:e,onConfirm:t,onCancel:r}){let[n,i]=(0,dgr.useState)("");return(0,ev.jsxs)(Ps,{open:!0,onClose:r,maxWidth:"xs",fullWidth:!0,children:[(0,ev.jsxs)(Il,{children:["Rewind to ",e,"?"]}),(0,ev.jsxs)(Ml,{children:[(0,ev.jsx)(Fe,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"This will mark all later phases as incomplete."}),(0,ev.jsx)(ni,{fullWidth:!0,multiline:!0,rows:3,size:"small",placeholder:"Reason for rewinding...",value:n,onChange:o=>i(o.target.value)})]}),(0,ev.jsxs)(cu,{children:[(0,ev.jsx)(qt,{onClick:r,children:"Cancel"}),(0,ev.jsx)(qt,{variant:"contained",color:"warning",disabled:n.trim().length===0,onClick:()=>t(n.trim()),children:"Rewind"})]})]})}var TR=L(z(),1);function mgr({itemId:e,phaseNumber:t,phaseName:r,onRewound:n}){let i=as(),o=yr(),[a,s]=(0,pgr.useState)(!1);return(0,TR.jsxs)(TR.Fragment,{children:[(0,TR.jsx)(qt,{size:"small",color:"warning",variant:"outlined",onClick:()=>s(!0),sx:{ml:"auto",textTransform:"none",fontSize:"0.75rem"},children:"Rewind"}),a&&(0,TR.jsx)(hgr,{phaseName:r,onConfirm:async l=>{await ket(e,t,l,i,o),await n()},onCancel:()=>s(!1)})]})}var pB=L(z(),1),FWn={done:{label:"Done",color:"success"},current:{label:"In Progress",color:"info"},upcoming:{label:"Upcoming",color:"default"}},$Wn={alignItems:"center",mb:1},zWn={fontWeight:500},HWn={fontWeight:500,fontSize:"0.75rem"};function ggr({phase:e,index:t,status:r,itemId:n,onRewind:i}){let o=FWn[r],a=r==="done"&&n!==void 0&&i;return(0,pB.jsxs)(Rt,{direction:"row",spacing:1,sx:$Wn,children:[(0,pB.jsxs)(Fe,{sx:zWn,children:["Phase ",t+1,": ",e.name]}),(0,pB.jsx)(sn,{label:o.label,size:"small",color:o.color,sx:HWn}),a&&(0,pB.jsx)(mgr,{itemId:n,phaseNumber:t+1,phaseName:e.name,onRewound:i})]})}var mY=L(z(),1),UWn={color:"text.secondary",fontSize:"0.75rem",letterSpacing:"0.08em",display:"block"},WWn={color:"text.secondary",fontSize:"0.75rem",fontFamily:"monospace",display:"block"};function ygr({sessions:e}){return(0,mY.jsxs)(ue,{sx:{mb:1},children:[(0,mY.jsx)(Fe,{variant:"overline",sx:UWn,children:"Sessions"}),e.map(t=>(0,mY.jsx)(Fe,{sx:WWn,children:`${t.hostname} / ${t.osUser} / ${t.claudeSessionId}`},t.claudeSessionId))]})}var bgr=L(z(),1),VWn={color:"text.secondary",fontSize:"0.75rem",mb:1,display:"block"};function vgr({usage:e}){return(0,bgr.jsx)(hB,{total:e,sx:VWn})}var mB=L(z(),1);function xgr({tasks:e,marker:t}){return(0,mB.jsx)(A0,{disablePadding:!0,sx:{ml:.5},children:e.map(r=>(0,mB.jsxs)(rT,{disableGutters:!0,disablePadding:!0,sx:{py:.25,display:"flex",alignItems:"baseline"},children:[(0,mB.jsx)(Fe,{component:"span",sx:{color:"text.secondary",mr:1},children:t}),(0,mB.jsx)(yu,{component:"span",className:"markdown",html:RP(r.task)})]},r.task))})}var M_=L(z(),1);function Tgr({phase:e,index:t,status:r,itemId:n,usage:i,sessions:o,onRewind:a}){let s=e.manualChecks??[],l=Yge(t);return(0,M_.jsxs)(an,{variant:"outlined",id:l.id,sx:{...ugr(r),...l.sx},children:[(0,M_.jsx)(ggr,{phase:e,index:t,status:r,itemId:n,onRewind:a}),i&&(0,M_.jsx)(vgr,{usage:i}),(0,M_.jsx)(xgr,{tasks:e.tasks,marker:fgr[r]}),s.length>0&&(0,M_.jsx)(cgr,{checks:s}),o&&o.length>0&&(0,M_.jsx)(ygr,{sessions:o})]})}var gY={name:"Review",tasks:[]};function Xge(e){return e.at(-1)?.name===gY.name?e.length-1:e.length}function Zge(e,t){if(t===void 0)return"upcoming";let r=e+1;return r<t?"done":r===t?"current":"upcoming"}function Sgr(e=[]){return new Map(e.map(t=>[t.phaseIdx,t]))}function Cgr(e=[]){let t=new Map;for(let r of e){let n=t.get(r.phaseIdx);n?n.push(r):t.set(r.phaseIdx,[r])}return t}var U$e=L(z(),1);function wgr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){let a=Sgr(n),s=Cgr(i),l=Xge(e),u=(i??[]).filter(d=>d.phaseIdx>=l),f=l===e.length&&u.length>0?[...e,gY]:e;return(0,U$e.jsx)(Rt,{spacing:1.5,children:f.map((d,h)=>(0,U$e.jsx)(Tgr,{phase:d,index:h,status:Zge(h,t),itemId:r,usage:a.get(h),sessions:h===l?u:s.get(h),onRewind:h<e.length?o:void 0},d.name))})}var SR=L(z(),1),GWn={alignItems:"baseline",justifyContent:"space-between",mb:1},qWn={color:"text.secondary",display:"block",letterSpacing:"0.08em"};function _gr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){return e.length===0?null:(0,SR.jsxs)(ue,{...zm("plan"),children:[(0,SR.jsxs)(Rt,{direction:"row",sx:GWn,children:[(0,SR.jsx)(Fe,{variant:"overline",sx:qWn,children:"Plan"}),n&&n.length>0&&(0,SR.jsx)(sgr,{usage:n})]}),(0,SR.jsx)(wgr,{phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o})]})}var W$e=L(z(),1),Qge=e=>{let{value:t,options:r,colors:n,onChange:i}=e;return(0,W$e.jsx)(oT,{value:t,onChange:o=>i(o.target.value),size:"small",sx:{fontSize:"0.75rem",fontWeight:500,borderRadius:4,bgcolor:n[t].bg,color:n[t].text,"& .MuiSelect-select":{py:.5,px:1.5},"& .MuiSelect-icon":{color:"inherit"}},children:r.map(o=>(0,W$e.jsx)(fn,{value:o,children:o},o))})};var Egr=L(z(),1),jWn={todo:{bg:"action.selected",text:"text.primary"},"in-progress":{bg:"warning.main",text:"warning.contrastText"},done:{bg:"success.main",text:"success.contrastText"}},YWn=["todo","in-progress","done"];function kgr({current:e,onStatusChange:t}){return(0,Egr.jsx)(Qge,{value:e,options:YWn,colors:jWn,onChange:t})}var I_=L(z(),1);function Rgr({subtask:e,onStatusChange:t}){let r=e.status==="done";return(0,I_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start",justifyContent:"space-between"},children:[(0,I_.jsxs)(ue,{sx:{flex:1},children:[(0,I_.jsx)(Fe,{variant:"body2",sx:{textDecoration:r?"line-through":"none",color:r?"text.disabled":"text.primary"},children:e.title}),e.description&&(0,I_.jsx)(ue,{sx:{mt:.5,fontSize:"0.8125rem",color:r?"text.disabled":"text.secondary"},children:(0,I_.jsx)(kw,{content:e.description})})]}),(0,I_.jsx)(kgr,{current:e.status,onStatusChange:t})]})}var CR=L(z(),1),KWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Agr({subtasks:e,onStatusChange:t}){if(e.length===0)return null;let r=e.filter(n=>n.status!=="done").length;return(0,CR.jsxs)(ue,{...zm("subtasks"),children:[(0,CR.jsx)(Fe,{variant:"overline",sx:KWn,children:"Sub-tasks"}),(0,CR.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,CR.jsx)(Rgr,{subtask:n,onStatusChange:o=>t(i,o)},`${n.title}-${i}`))}),r>0&&(0,CR.jsxs)(ri,{severity:"warning",sx:{mt:1},children:[r," sub-task",r===1?"":"s"," not yet done."]})]})}var I2=L(z(),1);function Pgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,I2.jsxs)(I2.Fragment,{children:[e.subtasks&&n&&(0,I2.jsx)(Agr,{subtasks:e.subtasks,onStatusChange:n}),e.plan&&(0,I2.jsx)(_gr,{phases:e.plan,currentPhase:e.currentPhase,itemId:e.id,usage:e.phaseUsage,sessions:e.phaseSessions,onRewind:t}),(0,I2.jsx)(Qmr,{gitRefs:e.gitRefs??[],conversations:e.conversations}),e.comments&&(0,I2.jsx)(ogr,{comments:e.comments,itemId:e.id,onCommentDeleted:r})]})}var gB=L(z(),1);function Lgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,gB.jsxs)(ue,{sx:{pt:2,flex:1,minWidth:0},children:[(0,gB.jsx)(Umr,{description:e.description}),(0,gB.jsx)(Hmr,{criteria:e.acceptanceCriteria}),(0,gB.jsx)(Pgr,{item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n})]})}var Mgr="item-detail";var yY={wideQuery:`@container ${Mgr} (min-width: 760px)`,containerSx:{containerType:"inline-size",containerName:Mgr},columnsSx:{display:"flex",columnGap:3}};function XWn(e){let t=e.plan??[];if(t.length===0)return[];let r=Xge(t),i=r===t.length&&(e.phaseSessions??[]).some(o=>o.phaseIdx>=r)?[...t,gY]:t;return[{id:A_.plan,label:"Phases"},...i.map((o,a)=>({id:Yge(a).id,label:`${a+1}`,title:o.name,status:Zge(a,e.currentPhase),nested:!0}))]}function Igr(e){let t=[];return e.description&&t.push({id:A_.description,label:"Description"}),e.acceptanceCriteria.length>0&&t.push({id:A_.acceptanceCriteria,label:"Acceptance Criteria"}),(e.subtasks?.length??0)>0&&t.push({id:A_.subtasks,label:"Sub-tasks"}),t.push(...XWn(e)),(e.gitRefs?.length??0)+(e.conversations?.length??0)>0&&t.push({id:A_.activity,label:"Activity"}),(e.comments?.length??0)>0&&t.push({id:A_.comments,label:"Comments"}),t}var Dgr="1.3125rem",Ngr={position:"relative",borderRadius:1,"&::after":{content:'""',position:"absolute",inset:0,borderRadius:"inherit",pointerEvents:"none"},"&:hover::after":{bgcolor:"action.hover"},"&:active::after":{bgcolor:"action.selected"}},ZWn={...Ngr,display:"block",flexShrink:0,maxWidth:"100%",px:1,py:.5,border:0,bgcolor:"transparent",fontSize:Dgr,lineHeight:1.2,letterSpacing:"0.02em",textAlign:"left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"text.secondary"},QWn={...Ngr,display:"flex",alignItems:"center",justifyContent:"center",fontSize:Dgr,width:"2em",height:"2em",flexShrink:0,lineHeight:1,borderRadius:"50%",border:1,color:"text.primary"},JWn={borderColor:"text.primary",borderWidth:3},eVn={color:"text.primary",fontWeight:700,"&::after":{bgcolor:"action.selected"}};function Ogr(e,t){let r=e.status&&Kge[e.status];return r?{...QWn,ml:1.5,bgcolor:r.bgcolor,borderColor:r.borderColor,borderWidth:r.ring?3:1,...t&&JWn}:{...ZWn,...t&&eVn}}var Fgr=L(z(),1);function Bgr({section:e,active:t,onSelect:r}){return(0,Fgr.jsx)(Dn,{sx:Ogr(e,t),onClick:()=>r(e.id),title:e.title??e.label,"aria-current":t?"true":void 0,children:e.label})}function $gr(e,t=hY){return Yhe(e,t)}var V$e=L(z(),1),tVn=48,rVn=260,nVn={display:"none",[yY.wideQuery]:{display:"flex"},position:"sticky",top:jge,alignSelf:"flex-start",width:rVn,flexShrink:0,maxHeight:`calc(100vh - ${tVn}px - ${jge})`,alignItems:"flex-start",overflowY:"auto",overflowX:"hidden",py:2};function iVn(e){document.getElementById(e)?.scrollIntoView({behavior:"smooth",block:"start"})}function zgr({item:e,headerHeight:t}){let r=Igr(e),n=$gr(r.map(i=>i.id),t);return r.length===0?null:(0,V$e.jsx)(Rt,{component:"nav",spacing:1,sx:nVn,children:r.map(i=>(0,V$e.jsx)(Bgr,{section:i,active:i.id===n,onSelect:iVn},i.id))})}var Ugr=L(z(),1);function Hgr({to:e}){let t=Xi();return(0,Ugr.jsx)(qt,{"data-backlog-focus":"back",variant:"text",size:"small",onClick:()=>t(e),sx:{mb:2,textTransform:"none"},children:"\u2190 Back"})}var Wgr=L(ge(),1);var wR=L(z(),1);function Vgr({itemId:e,onDeleted:t}){let r=as(),n=yr(),[i,o]=(0,Wgr.useState)(!1);return(0,wR.jsxs)(wR.Fragment,{children:[i&&(0,wR.jsx)(vo,{onConfirm:async()=>{await wet(e,r,n),await t()},onCancel:()=>o(!1)}),(0,wR.jsx)(qt,{variant:"contained",color:"error",size:"small",onClick:()=>o(!0),children:"Delete"})]})}var G$e=L(z(),1),oVn={todo:{bg:"action.selected",text:"text.primary"},"in-progress":{bg:"warning.main",text:"warning.contrastText"},done:{bg:"success.main",text:"success.contrastText"},wontdo:{bg:"error.main",text:"error.contrastText"}},aVn=["todo","in-progress","done","wontdo"];function Ggr({current:e,onStatusChange:t}){return t?(0,G$e.jsx)(Qge,{value:e,options:aVn,colors:oVn,onChange:t}):(0,G$e.jsx)(sn,{label:e,size:"small",color:yge[e],sx:{fontWeight:500,fontSize:"0.75rem"}})}var D2=L(z(),1),sVn={alignItems:"center",color:"text.disabled",fontSize:"0.875rem"},lVn={fontWeight:500,fontSize:"0.75rem"},cVn={color:"text.secondary",fontSize:"0.75rem"};function qgr({item:e,onStatusChange:t}){let r=gge[e.type];return(0,D2.jsxs)(Rt,{direction:"row",spacing:1,sx:sVn,children:[(0,D2.jsx)(Fe,{variant:"body2",color:"text.disabled",children:so(e.id)}),r&&(0,D2.jsx)(sn,{label:e.type,size:"small",color:r,sx:lVn}),(0,D2.jsx)(Ggr,{current:e.status,onStatusChange:t}),(0,D2.jsx)(uP,{jiraKey:e.jiraKey}),(0,D2.jsx)(cP,{githubIssue:e.githubIssue,origin:e.origin}),e.usageTotal&&(0,D2.jsx)(hB,{total:e.usageTotal,sx:cVn})]})}var jgr=L(z(),1),Ygr=ft((0,jgr.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var Jge=L(ge(),1);var Kgr=L(ge(),1);function Xgr(e){let{launchAssist:t}=$l(),r=Xi(),n=as(),i=yr(),[o,a]=(0,Kgr.useState)(!1);return{launched:o,launch:l=>{if(o)return;a(!0);let u=i?[{node:i}]:[];t(["refine","--once",...l,so(e)],n,...u),r("/sessions")}}}var s0=L(z(),1);function Zgr({itemId:e}){let{launched:t,launch:r}=Xgr(e),n=C_(),i=(0,Jge.useRef)(null),[o,a]=(0,Jge.useState)(!1),s=u=>u.stopPropagation(),l=Ege(n);return(0,s0.jsxs)(s0.Fragment,{children:[(0,s0.jsxs)(J2,{ref:i,variant:"outlined",size:"small",disabled:t,children:[(0,s0.jsx)(qt,{startIcon:(0,s0.jsx)(Ygr,{}),onClick:u=>{s(u),r([])},children:"Refine"}),l.length>0&&(0,s0.jsx)(qt,{size:"small","aria-label":"Refine with a different harness",onClick:u=>{s(u),a(!0)},children:(0,s0.jsx)(Up,{})})]}),(0,s0.jsx)(Rge,{anchorEl:i.current,open:o,onClose:()=>a(!1),options:l,onSelect:u=>{a(!1),r(["--harness",u])},stop:s})]})}var yB=L(ge(),1);function Qgr(){let e=(0,yB.useRef)(null),[t,r]=(0,yB.useState)(!1);return(0,yB.useEffect)(()=>{let n=e.current;if(!n)return;let i=new IntersectionObserver(([o])=>r(!o.isIntersecting),{threshold:0});return i.observe(n),()=>i.disconnect()},[]),{sentinelRef:e,stuck:t}}var Of=L(z(),1),uVn={justifyContent:"space-between",alignItems:"center",mb:2};function fVn(e){return e.palette.mode==="dark"?"0 8px 8px -9px rgba(0, 0, 0, 0.8)":"0 6px 6px -7px rgba(0, 0, 0, 0.2)"}function dVn(e){return t=>({position:"sticky",top:0,zIndex:1,bgcolor:"background.default",mx:-2,px:2,pb:2,borderBottom:1,borderColor:"divider",boxShadow:e?fVn(t):"none",transition:t.transitions.create("box-shadow")})}function Jgr({item:e,onDeleted:t,onStatusChange:r,ref:n}){let{sentinelRef:i,stuck:o}=Qgr();return(0,Of.jsxs)(Of.Fragment,{children:[(0,Of.jsx)(ue,{ref:i,sx:{height:0}}),(0,Of.jsxs)(ue,{ref:n,sx:dVn(o),children:[(0,Of.jsxs)(Rt,{direction:"row",sx:uVn,children:[(0,Of.jsx)(Hgr,{to:"/backlog"}),(0,Of.jsxs)(Rt,{direction:"row",spacing:1,children:[kge(e)&&(0,Of.jsx)(Wge,{itemId:e.id}),(0,Of.jsx)(Zgr,{itemId:e.id}),(0,Of.jsx)(Vgr,{itemId:e.id,onDeleted:t})]})]}),(0,Of.jsx)(Fe,{variant:"h5",component:"h2",children:e.name}),(0,Of.jsx)(qgr,{item:e,onStatusChange:r})]})]})}var t0r=L(ge(),1);var e0e=L(ge(),1);function e0r(e,t){let[r,n]=(0,e0e.useState)(t);return(0,e0e.useEffect)(()=>{let i=e.current;if(!i||(n(i.offsetHeight),typeof ResizeObserver>"u"))return;let o=new ResizeObserver(()=>n(i.offsetHeight));return o.observe(i),()=>o.disconnect()},[e]),r}function r0r(){let e=(0,t0r.useRef)(null),t=e0r(e,hY),r={[z$e]:`${t}px`};return{headerRef:e,headerHeight:t,style:r}}var D_=L(z(),1);function n0r({item:e,onReload:t}){let r=Xi(),n=as(),i=yr(),{headerRef:o,headerHeight:a,style:s}=r0r();iy("ItemDetail");let l=async()=>{await t(),r("/backlog")},u=async d=>{await AJ(e.id,d,n,i),await t()},f=async(d,h)=>{await _et(e.id,d,h,n,i),await t()};return(0,D_.jsxs)(ue,{style:s,children:[(0,D_.jsx)(Jgr,{ref:o,item:e,onDeleted:l,onStatusChange:u}),(0,D_.jsx)(ue,{sx:yY.containerSx,children:(0,D_.jsxs)(ue,{sx:yY.columnsSx,children:[(0,D_.jsx)(Lgr,{item:e,onRewind:t,onCommentDeleted:t,onSubtaskStatusChange:f}),(0,D_.jsx)(zgr,{item:e,headerHeight:a})]})})]})}var _R=L(z(),1),hVn={display:"flex",justifyContent:"center",py:6};function i0r({onReload:e}){let[t]=Pc(),r=t.get("cwd")||void 0,n=t.get("node")||void 0,i=$n(),o=(0,t0e.useMemo)(()=>r?{...i,selectedCwd:r,selectedNode:n}:i,[i,r,n]);return iy("ItemRoute"),(0,_R.jsx)(bz.Provider,{value:o,children:(0,_R.jsx)(Ku.Provider,{value:o.selectedNode,children:(0,_R.jsx)(pVn,{onReload:e})})})}function pVn({onReload:e}){let{id:t}=g2e(),r=Number.NaN;try{r=mJ(t??"")}catch{r=Number.NaN}let{item:n,loading:i,reload:o}=$mr(r),a=(0,t0e.useCallback)(async()=>{await Promise.all([o(),e()])},[o,e]);return i?(0,_R.jsx)(ue,{sx:hVn,children:(0,_R.jsx)(mo,{})}):n?(0,_R.jsx)(n0r,{item:n,onReload:a}):null}var kR=L(z(),1);function o0r({items:e,loading:t,error:r,socket:n,onReload:i}){return(0,kR.jsxs)(h5,{children:[(0,kR.jsx)(gs,{index:!0,element:(0,kR.jsx)(Fmr,{items:e,loading:t,error:r,socket:n,onReload:i})}),(0,kR.jsx)(gs,{path:"items/:id",element:(0,kR.jsx)(i0r,{onReload:i})})]})}var l0=L(ge(),1);var a0r=new Map;function s0r(e,t,r){return JSON.stringify([e??null,t,r??null])}var vY={get(e,t,r){return a0r.get(s0r(e,t,r))},set(e,t,r,n){a0r.set(s0r(e,t,n),r)}};function mVn(e,t){return e===t?!0:!e||!t?!1:e.tokensUp===t.tokensUp&&e.tokensDown===t.tokensDown&&e.activeMs===t.activeMs&&e.peakContextPct===t.peakContextPct}function l0r(e,t){return e===t?!0:e.length!==t.length?!1:e.every((r,n)=>{let i=t[n];return r.id===i.id&&r.type===i.type&&r.name===i.name&&r.status===i.status&&r.starred===i.starred&&r.incompleteSubtasks===i.incompleteSubtasks&&mVn(r.usageTotal,i.usageTotal)})}function c0r({setItems:e,setLoading:t,setError:r}){return{onLoaded:n=>{e(i=>l0r(i,n)?i:n),t(!1),r(null)},onError:n=>{t(!1),r(n)}}}async function u0r(e,t,r,n){let i=await HT({cwd:e,node:n,signal:r,filter:t});return r.aborted||vY.set(e,t,i,n),i}function f0r(e,t,r,{onLoaded:n,onError:i},o){return(async()=>{try{let a=await u0r(e,t,r,o);r.aborted||n(a)}catch(a){r.aborted||i(a instanceof Error?a.message:"Failed to load.")}})()}var gVn=5e3;function d0r(e,t,r,n){let i=new AbortController,o=!1,a=()=>{o||(o=!0,f0r(e,t,i.signal,r,n).finally(()=>{o=!1}))};a();let s=setInterval(a,gVn);return()=>{i.abort(),clearInterval(s)}}function h0r(){let e=as(),t=yr(),[r]=rB(),n=vY.get(e,r,t),i=n??[],o=n===void 0,[a,s]=(0,l0.useState)(i),[l,u]=(0,l0.useState)(o),[f,d]=(0,l0.useState)(null),[h,p]=(0,l0.useState)(e),[m,g]=(0,l0.useState)(t),[y,v]=(0,l0.useState)(r);(e!==h||t!==m||r!==y)&&(p(e),g(t),v(r),s(i),u(o),d(null));let b=(0,l0.useCallback)(async()=>{let x=await HT({cwd:e,node:t,filter:r});s(x),vY.set(e,r,x,t),u(!1)},[e,t,r]);return(0,l0.useEffect)(()=>d0r(e,r,c0r({setItems:s,setLoading:u,setError:d}),t),[e,t,r]),{items:a,loading:l,error:f,reload:b}}var bY=L(z(),1);function p0r({socket:e}){let{items:t,loading:r,error:n,reload:i}=h0r();return lte(!r),(0,bY.jsx)(L$e.Provider,{value:e.sessions,children:(0,bY.jsx)(h5,{children:(0,bY.jsx)(gs,{path:"/*",element:(0,bY.jsx)(o0r,{items:t,loading:r,error:n,socket:e,onReload:i})})})})}var q$e=L(z(),1);function m0r({socket:e}){return(0,q$e.jsx)(MF,{maxWidth:"lg",sx:{py:3,px:2},children:(0,q$e.jsx)(p0r,{socket:e})})}var ki=L(z(),1);function g0r({socket:e}){return iy("AppRoutes"),(0,ki.jsxs)(ki.Fragment,{children:[(0,ki.jsx)(dor,{}),(0,ki.jsx)(h5,{children:(0,ki.jsxs)(gs,{element:(0,ki.jsx)(Cit,{socket:e}),children:[(0,ki.jsx)(gs,{path:"sessions",element:(0,ki.jsx)(Kdr,{socket:e})}),(0,ki.jsx)(gs,{path:"backlog/*",element:(0,ki.jsx)(m0r,{socket:e})}),(0,ki.jsx)(gs,{path:"next",element:(0,ki.jsx)(wir,{sessions:e.sessions,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"news",element:(0,ki.jsx)(Bnr,{})}),(0,ki.jsx)(gs,{path:"releases",element:(0,ki.jsx)(sor,{})}),(0,ki.jsx)(gs,{path:"usage",element:(0,ki.jsx)(Ppr,{})}),(0,ki.jsx)(gs,{path:"backups",element:(0,ki.jsx)(Lit,{})}),(0,ki.jsx)(gs,{path:"config",element:(0,ki.jsx)(_at,{})}),(0,ki.jsx)(gs,{path:"updates",element:(0,ki.jsx)(Hhr,{reconnecting:e.reconnecting,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"diff",element:(0,ki.jsx)(rnr,{socket:e})}),(0,ki.jsx)(gs,{path:"file",element:(0,ki.jsx)(Mnr,{socket:e})}),(0,ki.jsx)(gs,{path:"*",element:(0,ki.jsx)(S2e,{to:"/sessions",replace:!0})})]})})]})}var a0e=L(ge(),1);var o0e=L(ge(),1);function y0r(e,t,r){if(!e)return"Select a repo to search files.";if(r.error)return"Couldn't search files in this repo.";if(!(r.files.length>0||r.loading))return t?"No matching files.":"No files in this repo."}var N_=L(z(),1),yVn={display:"flex",gap:1,alignItems:"center",minWidth:0},vVn={display:"flex",gap:1,alignItems:"baseline",minWidth:0,overflow:"hidden"},bVn={fontFamily:"monospace",fontSize:13,whiteSpace:"nowrap"},xVn={fontFamily:"monospace",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function TVn(e){let t=e.lastIndexOf("/");return t===-1?{dir:"",basename:e}:{dir:e.slice(0,t),basename:e.slice(t+1)}}function v0r({files:e,highlight:t,onHighlight:r,onSelect:n}){return(0,N_.jsx)(Cp,{dense:!0,sx:{py:0},children:e.map((i,o)=>{let{dir:a,basename:s}=TVn(i);return(0,N_.jsxs)(fn,{selected:o===t,onMouseEnter:()=>r(o),onClick:()=>n(i),sx:yVn,children:[(0,N_.jsx)(JO,{path:i}),(0,N_.jsxs)(ue,{sx:vVn,children:[(0,N_.jsx)(Fe,{component:"span",sx:bVn,children:s}),(0,N_.jsx)(Fe,{component:"span",color:"text.secondary",sx:xVn,children:a})]})]},i)})})}var r0e=L(z(),1),SVn={maxHeight:420,overflowY:"auto"},CVn={px:2,py:2,fontSize:13};function b0r({message:e,files:t,highlight:r,onHighlight:n,onSelect:i}){return(0,r0e.jsx)(ue,{sx:SVn,children:e?(0,r0e.jsx)(Fe,{color:"text.secondary",sx:CVn,children:e}):(0,r0e.jsx)(v0r,{files:t,highlight:r,onHighlight:n,onSelect:i})})}var x0r=L(z(),1),wVn={mt:6,alignSelf:"flex-start"};function n0e({onClose:e,onEntered:t,centered:r=!1,children:n}){return(0,x0r.jsx)(Ps,{open:!0,onClose:e,maxWidth:"sm",fullWidth:!0,slotProps:{paper:{sx:r?void 0:wVn},transition:{onEntered:t}},children:n})}var i0e=L(ge(),1);var T0r={files:[],loading:!1,error:!1};function S0r(e,t){let[r,n]=(0,i0e.useState)(T0r),i=yr();return(0,i0e.useEffect)(()=>{if(!e){n(T0r);return}let o=!1;return n(s=>({...s,loading:!0})),(async()=>{try{let s=await fetch(tn(`/api/files?cwd=${encodeURIComponent(e)}&q=${encodeURIComponent(t)}`,i));if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json();if(o)return;n({files:Array.isArray(l.files)?l.files:[],loading:!1,error:!1})}catch{o||n({files:[],loading:!1,error:!0})}})(),()=>{o=!0}},[e,t,i]),r}var ER=L(z(),1);function _Vn(e,t,r){let n=new URLSearchParams({path:e});return t&&n.set("cwd",t),t&&r&&n.set("node",r),`/file?${n}`}function C0r({onClose:e}){let{worktreeNode:t}=$n();return(0,ER.jsx)(Ku.Provider,{value:t,children:(0,ER.jsx)(kVn,{onClose:e})})}function kVn({onClose:e}){let{worktreeCwd:t,worktreeNode:r}=$n(),[n,i]=(0,o0e.useState)(""),o=S0r(t,n),a=Xi(),s=(0,o0e.useRef)(null),l=p=>a(_Vn(p,t,r)),{highlight:u,setHighlight:f,onKeyDown:d}=E_(o.files,n,l,e),h=p=>{l(p),e()};return(0,ER.jsxs)(n0e,{onClose:e,onEntered:()=>s.current?.focus(),children:[(0,ER.jsx)(aB,{autoFocus:!0,inputRef:s,value:n,onChange:i,onKeyDown:d,placeholder:"Search files by name..."}),(0,ER.jsx)(b0r,{message:y0r(t,n,o),files:o.files,highlight:u,onHighlight:f,onSelect:h})]})}function w0r(e){Do(Yn("quickOpen").matches,e)}var k0r=L(z(),1);function _0r(){let[e,t]=(0,a0e.useState)(!1);return w0r((0,a0e.useCallback)(()=>t(!0),[])),e?(0,k0r.jsx)(C0r,{onClose:()=>t(!1)}):null}var s0e=L(z(),1);function E0r({notice:e,onClose:t,onView:r}){let n=e?.sessionId??null;return(0,s0e.jsx)(ol,{open:e!==null,autoHideDuration:6e3,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,s0e.jsx)(ri,{severity:"success",variant:"filled",onClose:t,action:n!==null?(0,s0e.jsx)(qt,{color:"inherit",size:"small",onClick:()=>r(n),children:"View"}):void 0,children:e?.message})})}var d0e=L(ge(),1);function R0r(e){let t=["claude"];return e.exposeCodexActions&&t.push("codex"),e.exposePiActions&&t.push("pi"),t}var H0r=L(ge(),1);var A0r=L(z(),1),P0r=ft((0,A0r.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2"}),"Circle");var O_="0.789.1";var EVn={connected:"success.main",connecting:"warning.main",disconnected:"error.main","version-blocked":"error.main"};function L0r(e){return e?EVn[e]:"success.main"}function M0r(e){return e.split("-")[0].split(".").map(Number)}function I0r(e,t){if(!e||!t||e===t)return;let r=M0r(e),n=M0r(t);for(let i=0;i<Math.max(r.length,n.length);i++){let o=(r[i]??0)-(n[i]??0);if(Number.isNaN(o))return;if(o!==0)return o<0?"behind":"ahead"}}var l0e=L(ge(),1),j$e=(0,l0e.createContext)(null);function c0e(){return(0,l0e.useContext)(j$e)}var RR=L(z(),1),RVn={height:16,fontSize:10},AVn={opacity:.6,fontSize:"0.85em"};function PVn(e,t){if(t===e.local)return"this machine";let r=e.links.find(n=>n.name===t);return r?r.error?`${r.state}: ${r.error}`:r.state:""}function xY({nodes:e,name:t,showVersion:r=!1}){let n=c0e()??O_,i=e.links.find(a=>a.name===t),o=I0r(i?.peerVersion,n);return(0,RR.jsx)(lr,{title:PVn(e,t),placement:"right",children:(0,RR.jsxs)(ue,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[(0,RR.jsx)(P0r,{sx:{fontSize:8,color:L0r(i?.state)}}),t,r&&i?.peerVersion&&(0,RR.jsxs)(ue,{component:"span",sx:AVn,children:["v",i.peerVersion]}),o&&(0,RR.jsx)(sn,{label:o,size:"small",color:o==="behind"?"warning":"info",sx:RVn})]})})}var AR=L(z(),1),LVn={opacity:.6},MVn={display:"inline-flex",alignItems:"center",gap:.5,px:.5,border:1,borderStyle:"dashed",borderRadius:1};function D0r({nodes:e,name:t,clone:r}){let n=(0,AR.jsx)(xY,{nodes:e,name:t});return r.kind==="cloned"?n:r.kind==="unavailable"?(0,AR.jsx)(ue,{component:"span",sx:LVn,children:n}):(0,AR.jsx)(lr,{title:oB(t,r.cloneTarget),children:(0,AR.jsxs)(ue,{component:"span",sx:MVn,children:[(0,AR.jsx)(iB,{sx:{fontSize:14}}),n]})})}var O0r=L(z(),1),IVn={px:1.5,borderRadius:.75,fontSize:12,fontWeight:600,color:"text.secondary","&:hover":{color:"text.primary",bgcolor:"action.hover"},"&[aria-checked='true']":{color:"primary.main",bgcolor:"action.selected"},"&.Mui-focusVisible":{outline:2,outlineColor:"primary.main"}};function N0r({value:e,label:t,checked:r,autoFocus:n,onSelect:i}){return(0,O0r.jsx)(Dn,{role:"radio","aria-checked":r,"data-value":e,tabIndex:r?0:-1,autoFocus:n&&r,onClick:i,sx:IVn,children:t})}var B0r={ArrowRight:1,ArrowLeft:-1};function DVn(e,t,r){if(e.key==="Tab"){let n=t+(e.shiftKey?-1:1);return n>=0&&n<r?n:void 0}return(t+B0r[e.key]+r)%r}function F0r(e,t,r,n){return i=>{if(i.key==="ArrowUp"||i.key==="ArrowDown"){if(!n)return;i.preventDefault(),n();return}if(i.key!=="Tab"&&!B0r[i.key]){cb(i);return}let o=DVn(i,e.indexOf(t),e.length);o!==void 0&&(i.preventDefault(),r(e[o]),i.currentTarget.querySelector(`[data-value="${e[o]}"]`)?.focus())}}var $0r=L(ge(),1);function vB(e){return e?.querySelector('[aria-checked="true"]')}function z0r(e,t){(0,$0r.useEffect)(()=>{let r=e.current;if(!r?.contains(document.activeElement))return;let n=vB(r);n&&n!==document.activeElement&&n.focus()},[e,t])}var Y$e=L(z(),1),NVn={border:1,borderColor:"divider",borderRadius:1,height:40,p:"2px",flexShrink:0};function u0e({label:e,options:t,value:r,onChange:n,optionLabel:i=u=>u,groupRef:o,autoFocus:a,onTrack:s,onToggleRow:l}){return z0r(o,r),(0,Y$e.jsx)(Rt,{ref:o,direction:"row",role:"radiogroup","aria-label":e,spacing:"2px",onFocus:s,onKeyDown:F0r(t,r,n,l),sx:NVn,children:t.map(u=>(0,Y$e.jsx)(N0r,{value:u,label:i(u),checked:u===r,autoFocus:a,onSelect:()=>n(u)},u))})}var K$e=L(z(),1);function U0r({value:e,onChange:t,cloneState:r}){let{nodes:n,names:i,visible:o}=Ou(),a=(0,H0r.useRef)(null);return!o||!n||!e?null:(0,K$e.jsx)(u0e,{label:"Machine",options:i,value:e,onChange:t,optionLabel:s=>(0,K$e.jsx)(D0r,{nodes:n,name:s,clone:r(s)}),groupRef:a,autoFocus:!1,onTrack:()=>{}})}var V0r=L(z(),1);function W0r({value:e,onChange:t,placeholder:r,inputRef:n,autoFocus:i,onTrack:o}){return(0,V0r.jsx)(ni,{value:e,onChange:a=>t(a.target.value),onKeyDown:cb,onFocus:o,onSelect:o,inputRef:n,placeholder:r,autoFocus:i,fullWidth:!0,multiline:!0,minRows:3,maxRows:12,slotProps:{htmlInput:{"aria-label":"Prompt"},input:{sx:{fontSize:14}}}})}var Y0r=L(ge(),1);var N2={draft:{placeholder:"Describe the backlog item to draft...",submitLabel:"Start draft",sessionMode:"assist-draft"},bug:{placeholder:"Describe the bug: what happened, what you expected...",submitLabel:"File bug",sessionMode:"assist-bug"},prompt:{placeholder:Fee,submitLabel:"Start session"},design:{placeholder:"Describe the design task...",submitLabel:"Start design"}},G0r=Object.keys(N2);var X$e=L(z(),1);function q0r({anchor:e,harness:t,harnesses:r,onPick:n,onClose:i}){return(0,X$e.jsx)(Dl,{open:e!==null,anchorEl:e,onClose:i,slotProps:{list:{dense:!0,"aria-label":"Harness"}},children:r.map(o=>(0,X$e.jsx)(fn,{role:"menuitemradio","aria-checked":o===t,selected:o===t,onClick:()=>{n(o),i()},sx:{fontSize:13},children:gu(o)},o))})}var PR=L(z(),1);function j0r(e){return t=>t==="prompt"&&e?(0,PR.jsxs)(PR.Fragment,{children:["prompt",(0,PR.jsx)(ue,{component:"span",sx:{fontWeight:400,whiteSpace:"pre"},children:` \xB7 ${gu(e)}`}),(0,PR.jsx)(Up,{sx:{fontSize:18,mr:-.75}})]}):t}var LR=L(z(),1);function K0r({draft:e,harness:t,harnesses:r,focus:n}){let[i,o]=(0,Y0r.useState)(null),a=e.mode==="prompt"&&r.length>1,s=()=>o(vB(n.modeRef.current)??null),l=u=>{a&&u==="prompt"?s():e.setMode(u)};return(0,LR.jsxs)(LR.Fragment,{children:[(0,LR.jsx)(u0e,{label:"Mode",options:G0r,value:e.mode,onChange:l,optionLabel:j0r(r.length>1?t:void 0),groupRef:n.modeRef,autoFocus:n.autoFocus==="mode",onTrack:n.trackMode,onToggleRow:a?s:void 0}),(0,LR.jsx)(q0r,{anchor:i,harness:t,harnesses:r,onPick:e.setHarness,onClose:()=>o(null)})]})}var ayr=L(ge(),1);var Z$e=L(z(),1),OVn={zIndex:e=>e.zIndex.modal+1};function X0r({open:e,anchor:t,children:r}){return(0,Z$e.jsx)(BA,{open:e,anchorEl:t,placement:"bottom-start",sx:OVn,children:(0,Z$e.jsx)(an,{sx:{maxHeight:240,overflowY:"auto",width:t?.clientWidth},onMouseDown:n=>n.preventDefault(),children:r})})}function Z0r(e){return{htmlInput:{role:"combobox","aria-label":"Repo","aria-expanded":e},input:{sx:{fontSize:13,height:40}}}}var Q0r=L(lF(),1);function J0r({open:e,highlighted:t,accept:r,close:n,navigate:i,openList:o}){return a=>{if(!e){if(a.key==="ArrowDown"){a.preventDefault(),o();return}cb(a);return}if(a.key!=="Escape"){if(a.key==="Enter"){if(a.preventDefault(),t===void 0)return;(0,Q0r.flushSync)(()=>{r(t),n()}),cb(a);return}if(a.key!=="Tab"){i(a);return}t!==void 0&&r(t),n()}}}function eyr(e,t){let r=t.trim().toLowerCase();return r?e.filter(n=>X1(n).toLowerCase().includes(r)):e}var Q$e=L(ge(),1);function tyr(){let[e,t]=(0,Q$e.useState)(!1),[r,n]=(0,Q$e.useState)("");return{open:e,query:r,show:()=>t(!0),filterBy:i=>{n(i),t(!0)},close:()=>{t(!1),n("")}}}var nyr=L(ge(),1);var ryr=e=>e?X1(e):"";function iyr(e){let[t,r]=(0,nyr.useState)(()=>ryr(e));return{text:t,setText:r,showRepo:n=>r(ryr(n))}}function oyr(e,t,r){let n=tyr(),i=iyr(t),o=eyr(e,n.query),a=f=>{r(f),i.showRepo(f)},s=E_(o,n.query,a,n.close),l=()=>s.setHighlight(Math.max(e.indexOf(t),0)),u=()=>{l(),n.show()};return{open:n.open,text:i.text,filtered:o,highlight:s.highlight,setHighlight:s.setHighlight,onKeyDown:J0r({open:n.open,highlighted:o[s.highlight],accept:a,close:n.close,navigate:s.onKeyDown,openList:u}),onClick:()=>{n.open||u()},onType:f=>{i.setText(f),n.filterBy(f)},onFocus:l,onBlur:()=>{n.close(),i.showRepo(t)},pick:f=>{a(f),n.close()}}}var bB=L(z(),1);function syr({repos:e,value:t,onChange:r,inputRef:n,autoFocus:i,onTrack:o}){let a=oyr(e,t,r),s=(0,ayr.useRef)(null);return(0,bB.jsxs)(ue,{ref:s,sx:{flex:1,minWidth:0},children:[(0,bB.jsx)(ni,{value:a.text,onChange:l=>a.onType(l.target.value),onFocus:l=>{l.target.select(),a.onFocus(),o()},inputRef:n,autoFocus:i,onClick:a.onClick,onBlur:a.onBlur,onKeyDown:a.onKeyDown,placeholder:"Repo",size:"small",fullWidth:!0,slotProps:Z0r(a.open)}),(0,bB.jsx)(X0r,{open:a.open,anchor:s.current,children:(0,bB.jsx)($ge,{repos:a.filtered,selected:t,highlight:a.highlight,onHighlight:a.setHighlight,onSelect:a.pick})})]})}var B_=L(z(),1);function lyr({cloneState:e,...t}){let{draft:r,focus:n}=t,{repos:i}=$n();return(0,B_.jsxs)(Rt,{spacing:1,sx:{p:1},children:[(0,B_.jsx)(W0r,{value:r.prompt,onChange:r.setPrompt,placeholder:N2[r.mode].placeholder,inputRef:n.promptRef,autoFocus:n.autoFocus==="prompt",onTrack:n.trackPrompt}),(0,B_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[(0,B_.jsx)(syr,{repos:i,value:r.cwd,onChange:r.setCwd,inputRef:n.repoRef,autoFocus:n.autoFocus==="repo",onTrack:n.trackRepo}),(0,B_.jsx)(K0r,{...t})]}),(0,B_.jsx)(U0r,{value:r.node,onChange:r.setNode,cloneState:e})]})}var xB=L(z(),1),BVn=["Enter start","Shift+Enter newline","Esc close"],FVn={alignItems:"center",px:1.5,py:1,borderTop:1,borderColor:"divider",bgcolor:"action.hover"};function cyr({submitLabel:e,disabled:t=!1}){return(0,xB.jsxs)(Rt,{direction:"row",spacing:1.5,sx:FVn,children:[(0,xB.jsx)(Rt,{direction:"row",spacing:1.5,sx:{mr:"auto"},children:BVn.map(r=>(0,xB.jsx)(Fe,{variant:"caption",color:"text.secondary",children:r},r))}),(0,xB.jsx)(qt,{type:"submit",variant:"contained",size:"small",disabled:t,children:e})]})}function uyr({mode:e,harness:t,prompt:r,cwd:n,node:i},o){let a=n||void 0,s=i?[i]:[];if(e==="prompt"){t==="claude"?o.onCreate(r,a,...s):o.onCreateHarness(t,r,a,...s);return}if(e==="design"){o.onCreateDesign(r,a,...s);return}let l=i?[{node:i}]:[];pnt(N2[e].sessionMode,n,(u,f)=>o.onCreateAssist(u,f,...l),()=>{},r)}function fyr(e,t,r,n){return r.kind==="blocked"?!1:r.kind==="clone"?(Lge(r.prompt,n.onCreateAssist),!0):(uyr({mode:e.mode,harness:t,prompt:e.prompt,cwd:r.cwd,node:e.node},n),e.clear(),!0)}var MR=L(ge(),1);function dyr(e,t){let r=(0,MR.useRef)(e),n=(0,MR.useRef)(null),i=(0,MR.useRef)(null),o=(0,MR.useRef)(null),a=(0,MR.useCallback)(u=>{n.current=u;let{field:f,selectionStart:d,selectionEnd:h}=r.current;u&&f==="prompt"&&u.setSelectionRange(d,h)},[]),s=u=>{let f=u.target;t({field:"prompt",selectionStart:f.selectionStart,selectionEnd:f.selectionEnd})},l=()=>{if(o.current?.closest("form")?.contains(document.activeElement))return;let{field:u}=r.current;({repo:i.current,mode:vB(o.current),prompt:n.current}[u]??n.current)?.focus()};return{autoFocus:e.field,promptRef:a,repoRef:i,modeRef:o,trackPrompt:s,trackRepo:()=>t({...e,field:"repo"}),trackMode:()=>t({...e,field:"mode"}),restore:l}}function $Vn(e,t,r){return e?r.kind==="cloned"?{kind:"launch",cwd:r.cwd}:r.kind==="clonable"?{kind:"clone",prompt:Hge(r,t)}:{kind:"blocked"}:{kind:"launch",cwd:e}}function hyr(e,t){let{names:r,visible:n}=Ou(),i=Oge(t,n?r:[void 0]);return{cloneState:i,target:$Vn(t,e,i(e))}}var TB=L(z(),1);function pyr({draft:e,launchers:t,onClose:r}){let n=dyr(e.focus,e.setFocus),i=R0r(C_()),o=i.includes(e.harness)?e.harness:"claude",{target:a,cloneState:s}=hyr(e.node,e.cwd),l=u=>{u.preventDefault(),fyr(e,o,a,t)&&r()};return(0,TB.jsx)(n0e,{onClose:r,onEntered:n.restore,centered:!0,children:(0,TB.jsxs)("form",{onSubmit:l,children:[(0,TB.jsx)(lyr,{draft:e,harness:o,harnesses:i,focus:n,cloneState:s}),(0,TB.jsx)(cyr,{submitLabel:a.kind==="clone"?"Clone":N2[e.mode].submitLabel,disabled:a.kind==="blocked"})]})})}var f0e=L(ge(),1);function myr(e){let[t,r]=(0,f0e.useState)(null);return(0,f0e.useEffect)(()=>{let n=!1;return(async()=>{let i="draft";try{let o=e?`?cwd=${encodeURIComponent(e)}`:"",s=await(await fetch(`/api/new-session-defaults${o}`)).json();Object.hasOwn(N2,s?.mode)&&(i=s.mode)}catch{}n||r(i)})(),()=>{n=!0}},[e]),t}function gyr(e,{visible:t,names:r,selected:n}){if(t)return e&&r.includes(e)?e:n}var O2=L(ge(),1),yyr={field:"prompt",selectionStart:0,selectionEnd:0};function vyr(){let[e,t]=(0,O2.useState)(""),[r,n]=(0,O2.useState)(),[i,o]=(0,O2.useState)(),[a,s]=(0,O2.useState)("claude"),[l,u]=(0,O2.useState)(),[f,d]=(0,O2.useState)(yyr),h=(0,O2.useCallback)(()=>{t(""),n(void 0),o(void 0),u(void 0),d(yyr)},[]);return{prompt:e,cwd:r,mode:i,harness:a,node:l,focus:f,setPrompt:t,setNode:u,setCwd:n,setMode:o,setHarness:s,setFocus:d,clear:h}}function byr(e=myr){let{selectedCwd:t}=$n(),r=Ou(),n=vyr(),i=n.cwd??t,o=e(i);return o?{...n,cwd:i,mode:n.mode??o,node:gyr(n.node,r)}:null}function xyr(e){Do(Yn("newSession").matches,e)}var Tyr=L(ge(),1);function Syr(e,t){let{selectedCwd:r}=$n(),[n,i]=Pc(),o=n.get("new"),a=n.get("newCwd")??r,{setPrompt:s,setCwd:l,setFocus:u}=e??{};(0,Tyr.useEffect)(()=>{o===null||!s||!l||!u||(o&&(s(o),l(a),u({field:"prompt",selectionStart:o.length,selectionEnd:o.length})),t(),i(f=>(f.delete("new"),f.delete("newCwd"),f),{replace:!0}))},[o,a,s,l,u,t,i])}var wyr=L(z(),1);function Cyr({launchers:e}){let[t,r]=(0,d0e.useState)(!1),n=byr(),i=(0,d0e.useCallback)(()=>r(!0),[]);return xyr(i),Syr(n,i),!t||!n?null:(0,wyr.jsx)(pyr,{draft:n,launchers:e,onClose:()=>r(!1)})}var h0e=L(z(),1);function _yr({reconnecting:e}){return(0,h0e.jsx)(ol,{open:e,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,h0e.jsx)(ri,{severity:"info",variant:"filled",icon:(0,h0e.jsx)(mo,{size:16,color:"inherit"}),children:"Reconnecting\u2026"})})}var tv=L(z(),1);function kyr({socket:e,onViewLaunchedSession:t}){return(0,tv.jsxs)(tv.Fragment,{children:[(0,tv.jsx)(_0r,{}),(0,tv.jsx)(Cyr,{launchers:{onCreate:e.createSession,onCreateDesign:e.createDesignSession,onCreateHarness:e.createHarnessSession,onCreateAssist:e.createAssistSession}}),(0,tv.jsx)(_yr,{reconnecting:e.reconnecting}),(0,tv.jsx)(vu,{error:e.error,onClose:e.clearError}),(0,tv.jsx)(E0r,{notice:e.success,onClose:e.clearSuccess,onView:t})]})}var c0=L(ge(),1);var zVn=6e4;function Eyr(e){let t=e.nodes?.local,r=e.names.join(`
3976
+ `,zpr={...$pr,borderColor:"warning.main",borderLeft:4,borderLeftColor:"warning.main",bgcolor:e=>Ea(e.palette.warning.main,.08)},NUn={...zpr,borderLeftColor:"transparent",backgroundImage:e=>`repeating-linear-gradient(to bottom, ${e.palette.warning.main} 0 ${Bpr}px, transparent ${Bpr}px ${I$e}px)`,backgroundOrigin:"border-box",backgroundRepeat:"repeat-y",backgroundSize:`4px ${I$e}px`,animation:`${DUn} 0.9s linear infinite`,"@media (prefers-reduced-motion: reduce)":{animation:"none"}},Fpr={"& .MuiButtonBase-root:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:"2px"}},Y1={card:$pr,inProgressCard:zpr,inProgressRunningCard:NUn,main:{minWidth:0,textAlign:"left"},stretchedNameLink:{display:"block",fontWeight:500,color:"text.primary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",...IUn},meta:{display:"flex",alignItems:"center",gap:1,...Opr,width:"fit-content",maxWidth:"100%",fontSize:"0.75rem",color:"text.secondary","& a, & p":{fontSize:"0.75rem"},...Fpr},id:{color:"text.disabled"},actions:{display:"flex",alignItems:"center",gap:1,flexShrink:0,...Opr,...Fpr}};function _ge(e){let t=e.peakContextPct>0?` \xB7 \u2593 ${Math.round(e.peakContextPct)}%`:"";return`\u2191 ${Hd(e.tokensUp)} \u2193 ${Hd(e.tokensDown)} \xB7 \u23F1 ${n0(e.activeMs)}${t}`}var Upr=L(z(),1),OUn={width:6,height:6,borderRadius:"50%",bgcolor:"currentColor",flexShrink:0};function Hpr(){return(0,Upr.jsx)(ue,{component:"span",sx:OUn})}var sY=L(z(),1),Wpr={display:"inline-flex",alignItems:"center",gap:.625,color:"warning.main",fontWeight:500,fontSize:"0.75rem",whiteSpace:"nowrap",borderRadius:1};function Vpr({item:e,openSession:t,onSelectSession:r}){let n=Xi();if(e.status!=="in-progress"||e.currentPhase==null)return null;let i=`phase ${e.currentPhase} of ${e.totalPhases??e.currentPhase}`,o=(0,sY.jsx)(Hpr,{});if(!t)return(0,sY.jsxs)(ue,{component:"span",sx:Wpr,children:[o,i]});let a=()=>{r?.(t.id),n("/sessions")};return(0,sY.jsxs)(Dn,{sx:Wpr,title:`Open the ${t.status} session`,onClick:a,children:[o,i]})}var op=L(z(),1),BUn={display:"inline-flex",alignItems:"center",gap:.5},FUn={width:8,height:8,borderRadius:"50%",flexShrink:0},$Un={whiteSpace:"nowrap"};function zUn({type:e}){let t=gge[e];return(0,op.jsxs)(ue,{component:"span",sx:BUn,children:[(0,op.jsx)(ue,{component:"span",sx:{...FUn,bgcolor:`${t}.main`}}),e]})}function HUn({item:e}){return e.usageTotal?(0,op.jsx)(lr,{title:_ge(e.usageTotal),children:(0,op.jsx)(ue,{component:"span",sx:$Un,children:`\u23F1 ${n0(e.usageTotal.activeMs)}`})}):null}function Gpr({item:e,openSession:t,onSelectSession:r}){return(0,op.jsxs)(ue,{sx:Y1.meta,children:[(0,op.jsx)(ue,{component:"span",sx:Y1.id,children:so(e.id)}),(0,op.jsx)(zUn,{type:e.type}),(0,op.jsx)(Vpr,{item:e,openSession:t,onSelectSession:r}),(0,op.jsx)(uP,{jiraKey:e.jiraKey}),(0,op.jsx)(cP,{githubIssue:e.githubIssue,variant:"icon"}),(0,op.jsx)(HUn,{item:e})]})}function qpr(e,t){return e.filter(r=>_P(r)?.itemId===t).reduce((r,n)=>r&&r.startedAt>=n.startedAt?r:n,void 0)}var Ypr=L(z(),1),UUn={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},WUn={todo:"text.disabled","in-progress":"warning.main",done:"success.main",wontdo:"error.main"};function VUn(e){return{fontSize:"1.125rem",flexShrink:0,color:WUn[e]}}function jpr({status:e}){return(0,Ypr.jsx)(Fe,{sx:VUn(e),children:UUn[e]})}function kge(e){return e.status==="todo"||e.status==="in-progress"}function GUn(e){if(e.status==="done")return e.totalPhases;if(e.status==="in-progress")return e.currentPhase}function qUn(e,t,r){return r?"complete":e<t?"done":e===t?"current":"remaining"}function Kpr(e){let t=e.totalPhases,r=GUn(e);if(!t||r==null)return;let n=e.status==="done";return{reached:r,total:t,segments:Array.from({length:t},(i,o)=>({phase:o+1,kind:qUn(o+1,r,n)}))}}var nB=L(z(),1),jUn={done:"text.secondary",current:"warning.main",remaining:"divider",complete:"success.main"},YUn={display:"inline-flex",alignItems:"center",gap:.5,flexShrink:0},KUn={fontSize:"0.6875rem",color:"text.secondary",fontVariantNumeric:"tabular-nums"},XUn={display:"inline-flex",alignItems:"center",gap:"2px"},ZUn={width:6,height:12,borderRadius:"1px",flexShrink:0};function Xpr({item:e}){let t=Kpr(e);return t?(0,nB.jsxs)(ue,{sx:YUn,title:`Phase ${t.reached} of ${t.total}`,children:[(0,nB.jsx)(ue,{component:"span",sx:KUn,children:`${t.reached}/${t.total}`}),(0,nB.jsx)(ue,{component:"span",sx:XUn,"aria-hidden":!0,children:t.segments.map(r=>(0,nB.jsx)(ue,{component:"span","data-segment":r.kind,sx:{...ZUn,bgcolor:jUn[r.kind]}},r.phase))})]}):null}var gmr=L(ge(),1);var Age=L(ge(),1);var lY=L(z(),1);function Zpr({tooltip:e,disabled:t,onClick:r}){return(0,lY.jsx)(lr,{title:e,children:(0,lY.jsx)(ue,{component:"span",sx:{display:"flex"},children:(0,lY.jsx)(qt,{startIcon:(0,lY.jsx)(Fp,{}),disabled:t,onClick:r,children:"Build"})})})}var D$e=L(z(),1);function Ege(e){let t=[];return e.exposeCodexActions&&t.push({kind:"codex",label:"with Codex"}),e.exposePiActions&&t.push({kind:"pi",label:"with pi"}),t}function Rge({anchorEl:e,open:t,onClose:r,options:n,onSelect:i,stop:o}){return(0,D$e.jsx)(Dl,{anchorEl:e,open:t,onClose:r,onClick:o,children:n.map(a=>(0,D$e.jsx)(fn,{onClick:s=>{o(s),i(a.kind)},children:a.label},a.kind))})}var K1=L(z(),1);function Qpr({tooltip:e,disabled:t,onBuild:r,onSelectHarness:n}){let i=Ege(C_()),o=(0,Age.useRef)(null),[a,s]=(0,Age.useState)(!1),l=u=>u.stopPropagation();return(0,K1.jsxs)(K1.Fragment,{children:[(0,K1.jsxs)(J2,{ref:o,variant:"contained",color:"success",size:"small",disabled:t,children:[(0,K1.jsx)(Zpr,{tooltip:e,disabled:t,onClick:u=>{l(u),r()}}),i.length>0&&(0,K1.jsx)(qt,{"aria-label":"Build with a different harness",onClick:u=>{l(u),s(!0)},children:(0,K1.jsx)(Up,{})})]}),(0,K1.jsx)(Rge,{anchorEl:o.current,open:a,onClose:()=>s(!1),options:i,onSelect:u=>{s(!1),n(u)},stop:l})]})}var Jpr=L(z(),1),iB=ft((0,Jpr.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3m-5.55-8h-2.9v3H8l4 4 4-4h-2.55z"}),"CloudDownloadOutlined");var k_=L(z(),1),QUn={vertical:"bottom",horizontal:"center"};function Pge({clone:e}){let{prompt:t,confirm:r,cancel:n,error:i,dismissError:o}=e;return(0,k_.jsxs)(k_.Fragment,{children:[t&&(0,k_.jsx)(vo,{title:"Clone repository",message:`Clone ${t.displayName} over SSH into ${t.cloneTarget}${t.node?` on ${t.node}`:""}?`,confirmLabel:"Clone",confirmColor:"primary",onConfirm:r,onCancel:n}),(0,k_.jsx)(ol,{open:!!i,autoHideDuration:8e3,onClose:o,anchorOrigin:QUn,children:(0,k_.jsx)(ri,{severity:"error",onClose:o,variant:"filled",children:i})})]})}var a0=L(ge(),1);function N$e(e){return["backlog","clone",e]}function Lge(e,t){t(N$e(e.origin),void 0,{title:`Clone ${e.displayName}`,subtitle:e.origin,...e.node&&{node:e.node}})}function emr(e,t){return!!e&&e.length===t.length&&e.every((r,n)=>r===t[n])}function tmr(e,t,r){let n=N$e(t.origin),i=new Set(e.filter(o=>emr(o.assistArgs,n)).map(o=>o.id));return Lge(t,r),{args:n,target:t.cloneTarget,node:t.node,preexisting:i}}function rmr(e,t){if(!t.id){let n=e.find(i=>emr(i.assistArgs,t.args)&&!t.preexisting.has(i.id));return n?{type:"latch",id:n.id}:null}let r=e.find(n=>n.id===t.id);return r?r.status==="done"?{type:"done"}:r.status==="error"?{type:"error",message:r.error||"Clone failed."}:null:null}function Mge(e){let{setSelectedCwd:t}=$n(),{launchAssist:r}=$l(),[n,i]=(0,a0.useState)(null),[o,a]=(0,a0.useState)(null),[s,l]=(0,a0.useState)(null),u=(0,a0.useCallback)(p=>{l(null),i(p)},[]),f=(0,a0.useCallback)(()=>i(null),[]),d=(0,a0.useCallback)(()=>l(null),[]),h=(0,a0.useCallback)(()=>{n&&(a(tmr(e,n,r)),i(null))},[n,e,r]);return(0,a0.useEffect)(()=>{if(!o)return;let p=rmr(e,o);p&&(p.type==="latch"?a(m=>m&&{...m,id:p.id}):p.type==="done"?(o.node?t(o.target,o.node):t(o.target),a(null)):(l(p.message),a(null)))},[e,o,t]),{prompt:n,requestClone:u,confirm:h,cancel:f,error:s,dismissError:d}}function oB(e,t){return`Not cloned ${e?`on ${e}`:"locally"} \u2014 click to clone into ${t}`}var R2=L(z(),1),JUn={border:1,borderStyle:"dashed"};function nmr({target:e}){let t=Mge(wge());return(0,R2.jsxs)(R2.Fragment,{children:[(0,R2.jsx)(lr,{title:oB(e.node,e.cloneTarget),children:(0,R2.jsx)(or,{"aria-label":"Clone",size:"small",sx:JUn,onClick:r=>{r.stopPropagation(),t.requestClone(e)},children:(0,R2.jsx)(iB,{fontSize:"small"})})}),(0,R2.jsx)(Pge,{clone:t})]})}function imr(e,t,r,n){let i=r.node?[{node:r.node}]:[];e(["backlog","run",so(t),...n],r.cwd,...i)}var cY=L(z(),1);function omr({tooltip:e,disabled:t,onClick:r}){return(0,cY.jsx)(lr,{title:e,children:(0,cY.jsx)("span",{children:(0,cY.jsx)(or,{"aria-label":"Build",color:"success",size:"small",disabled:t,onClick:r,children:(0,cY.jsx)(Fp,{})})})})}function eWn(e,t){let r=e.assistArgs;if(r?.[0]!=="backlog"||r[1]!=="run"||!r[2])return!1;try{return mJ(r[2])===t}catch{return!1}}function amr(e,t){return e.find(r=>r.status!=="done"&&r.status!=="error"&&(eWn(r,t)||_P(r)?.itemId===t))}var Ige=L(ge(),1),O$e=(0,Ige.createContext)({nodes:null,names:[],visible:!1,selected:void 0,select:()=>{}});function Ou(){return(0,Ige.useContext)(O$e)}function Dge(){let{nodes:e,selected:t}=Ou();return t&&t!==e?.local?t:void 0}var cmr=L(ge(),1);var Nge=L(ge(),1);function smr(e,t){return Promise.all(t.map(async r=>{let n=await tWn(e,r).catch(()=>({}));return[r,n]}))}async function tWn(e,t){let r=await fetch(tn(`/api/repo-location?origin=${encodeURIComponent(e)}`,t||void 0));return r.ok?r.json():{}}var B$e="\0";function lmr(e,t){let[r,n]=(0,Nge.useState)(null);return(0,Nge.useEffect)(()=>{if(!e||!t)return;let i=!1;return smr(e,t.split(B$e)).then(o=>{i||n({origin:e,byNode:Object.fromEntries(o)})}),()=>{i=!0}},[e,t]),r}function Oge(e,t){let{cloneOn:r,originOf:n}=$n(),i=e?n(e):void 0,o=t.filter(s=>!e||!r(e,s)).map(s=>s??"").join(B$e),a=lmr(i,o);return(0,cmr.useCallback)(s=>{let l=e?r(e,s):void 0;if(l)return{kind:"cloned",cwd:l};let u=a&&a.origin===i?a.byNode[s??""]:void 0;return u?.cwd?{kind:"cloned",cwd:u.cwd}:i&&u?.cloneTarget?{kind:"clonable",origin:i,cloneTarget:u.cloneTarget}:{kind:"unavailable"}},[e,r,i,a])}var sB=L(ge(),1);var umr=L(z(),1);function aB({inputRef:e,value:t,onChange:r,onKeyDown:n,placeholder:i,autoFocus:o}){return(0,umr.jsx)(ni,{autoFocus:o,inputRef:e,value:t,onChange:a=>r(a.target.value),onKeyDown:n,placeholder:i,size:"small",fullWidth:!0,slotProps:{input:{sx:{fontSize:12}}},sx:{p:.5}})}var Bge=L(ge(),1);function Fge(e){let t=(0,Bge.useRef)(null);return(0,Bge.useEffect)(()=>{e&&t.current?.scrollIntoView({block:"nearest"})},[e]),t}var dmr=L(z(),1);function fmr({cwd:e,selected:t,highlighted:r,onHover:n,onSelect:i}){let o=Fge(r);return(0,dmr.jsx)(fn,{ref:o,selected:t,title:e,onClick:i,onMouseEnter:n,sx:{fontSize:12,display:"flex",justifyContent:"space-between",gap:1,...r&&{bgcolor:"action.hover"}},children:X1(e)})}var F$e=L(z(),1);function $ge({repos:e,selected:t,highlight:r,onHighlight:n,onSelect:i}){return(0,F$e.jsx)(Cp,{dense:!0,children:e.map((o,a)=>(0,F$e.jsx)(fmr,{cwd:o,selected:o===t,highlighted:a===r,onHover:()=>n(a),onSelect:()=>i(o)},o))})}var zge=L(ge(),1);function E_(e,t,r,n){let[i,o]=(0,zge.useState)(0);return(0,zge.useEffect)(()=>{o(0)},[t]),{highlight:i,setHighlight:o,onKeyDown:s=>{let l=e.length;if(s.key==="ArrowDown")s.preventDefault(),l>0&&o(u=>(u+1)%l);else if(s.key==="ArrowUp")s.preventDefault(),l>0&&o(u=>(u-1+l)%l);else if(s.key==="Enter"){s.preventDefault();let u=e[i];u!==void 0&&(r(u),n())}else s.key==="Escape"&&(s.preventDefault(),n())}}}var uY=L(z(),1);function X1(e){let t=e.includes("\\")?"\\":"/";return e.split(t).filter(Boolean).pop()??e}var rWn={...MP};function hmr({repos:e,selected:t,onSelect:r,close:n}){let[i,o]=(0,sB.useState)(""),a=(0,sB.useRef)(null);(0,sB.useEffect)(()=>{a.current?.focus()},[]);let s=i.trim().toLowerCase(),l=s?e.filter(p=>p.toLowerCase().includes(s)):e,{highlight:u,setHighlight:f,onKeyDown:d}=E_(l,s,r,n);return(0,uY.jsxs)(an,{elevation:4,sx:rWn,children:[(0,uY.jsx)(aB,{inputRef:a,value:i,onChange:o,onKeyDown:d,placeholder:"Filter repos..."}),(0,uY.jsx)($ge,{repos:l,selected:t,highlight:u,onHighlight:f,onSelect:p=>{r(p),n()}})]})}function Hge(e,t){return{origin:e.origin,cloneTarget:e.cloneTarget,displayName:X1(e.origin),node:t}}function pmr(){let e=as(),t=Dge(),r=Oge(e??"",[t])(t);return e?r.kind==="cloned"?{kind:"ready",cwd:r.cwd,node:t}:r.kind==="clonable"?{kind:"clone",prompt:Hge(r,t)}:{kind:"unavailable",node:t??"this machine"}:{kind:"ready",node:t}}function mmr(e,t){return t?`Not cloned on ${t}`:e?"Already running \u2014 close that session to run it again":"Build"}var Uge=L(z(),1);function Wge({itemId:e,compact:t=!1}){let{launchAssist:r}=$l(),n=pmr(),i=amr(wge(),e),[o,a]=(0,gmr.useState)(!1);if(n.kind==="clone")return(0,Uge.jsx)(nmr,{target:n.prompt});let s=n.kind==="unavailable"?n.node:void 0,l=o||i!==void 0||!!s,u=d=>{l||n.kind!=="ready"||(a(!0),imr(r,e,n,d))},f=mmr(i!==void 0,s);return t?(0,Uge.jsx)(omr,{tooltip:f,disabled:l,onClick:d=>{d.stopPropagation(),u([])}}):(0,Uge.jsx)(Qpr,{tooltip:f,disabled:l,onBuild:()=>u([]),onSelectHarness:d=>u(["--harness",d])})}var ymr=L(ge(),1);var lB=L(z(),1);function vmr({itemId:e,starred:t,onToggled:r}){let n=as(),i=yr(),[o,a]=(0,ymr.useState)(!1);return(0,lB.jsx)(lr,{title:t?"Unstar":"Star",children:(0,lB.jsx)("span",{children:(0,lB.jsx)(or,{"aria-label":t?"Unstar":"Star","aria-pressed":t,color:t?"warning":"default",size:"small",disabled:o,onClick:async l=>{if(l.stopPropagation(),!o){a(!0);try{await PJ(e,!t,n,i),await r()}finally{a(!1)}}},children:t?(0,lB.jsx)(Nee,{}):(0,lB.jsx)(Oee,{})})})})}var bmr=L(z(),1),xmr=ft((0,bmr.jsx)("path",{d:"M22 7h-9v2h9zm0 8h-9v2h9zM5.54 11 2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41z"}),"Checklist");var fY=L(z(),1),nWn={display:"inline-flex",alignItems:"center",gap:.375,flexShrink:0,fontSize:"0.71875rem",color:"text.secondary","& svg":{fontSize:14}};function Tmr({count:e}){return e<1?null:(0,fY.jsx)(lr,{title:`${e} incomplete subtask${e===1?"":"s"}`,children:(0,fY.jsxs)(ue,{component:"span",sx:nWn,children:[(0,fY.jsx)(xmr,{}),e]})})}var A2=L(z(),1);function Smr({item:e,onReload:t}){return(0,A2.jsxs)(A2.Fragment,{children:[(0,A2.jsx)(Tmr,{count:e.incompleteSubtasks}),(0,A2.jsx)(Xpr,{item:e}),(0,A2.jsx)(vmr,{itemId:e.id,starred:e.starred,onToggled:t}),kge(e)&&(0,A2.jsx)(Wge,{itemId:e.id,compact:!0})]})}var P2=L(z(),1);function iWn(e,t){return e?t?Y1.inProgressRunningCard:Y1.inProgressCard:Y1.card}function Cmr({item:e,to:t,socket:r,onReload:n}){let i=qpr(r.sessions,e.id),o=e.status==="in-progress",a=o&&i?.status==="running";return(0,P2.jsxs)(ue,{sx:iWn(o,a),children:[(0,P2.jsx)(jpr,{status:e.status}),(0,P2.jsxs)(ue,{sx:Y1.main,children:[(0,P2.jsx)(xn,{component:ys,to:t,underline:"none",title:e.name,sx:Y1.stretchedNameLink,children:e.name}),(0,P2.jsx)(Gpr,{item:e,openSession:i,onSelectSession:r.selectSession})]}),(0,P2.jsx)(ue,{sx:Y1.actions,children:(0,P2.jsx)(Smr,{item:e,onReload:n})})]})}var _mr=L(z(),1),oWn={all:"items",story:"stories",bug:"bugs"},aWn={textAlign:"center",color:"text.disabled",py:6,px:2};function wmr({query:e,typeFilter:t}){let r=oWn[t],n=e.trim()?`No ${r} match your search.`:`No ${r} in the backlog.`;return(0,_mr.jsx)(ue,{sx:aWn,children:n})}var Z1=L(z(),1),sWn={display:"flex",justifyContent:"center",py:6};function kmr({loading:e,error:t,query:r,typeFilter:n,items:i,socket:o,itemPath:a,onReload:s}){if(e)return(0,Z1.jsx)(ue,{sx:sWn,children:(0,Z1.jsx)(mo,{})});let l=t&&(0,Z1.jsx)(ri,{severity:"error",children:t});return i.length===0?l||(0,Z1.jsx)(wmr,{query:r,typeFilter:n}):(0,Z1.jsxs)(Z1.Fragment,{children:[l,i.map(u=>(0,Z1.jsx)(Cmr,{item:u,to:a(u),socket:o,onReload:s},u.id))]})}var cB=L(ge(),1);function lWn(e){let t=new URLSearchParams;for(let n of e)t.append("knownCwd",n);let r=t.toString();return r?`/api/backlog/summary?${r}`:"/api/backlog/summary"}async function Emr({cwd:e,node:t,knownCwds:r,signal:n}){return(await fetch(Fl(lWn(r),e,t),{signal:n})).json()}function Rmr(){let{repos:e,selectedCwd:t,cloneOn:r}=$n(),n=Dge(),[i,o]=(0,cB.useState)([]),a=(0,cB.useMemo)(()=>e.map(l=>r(l,n)).filter(l=>!!l),[e,r,n]),s=t?r(t,n):void 0;return(0,cB.useEffect)(()=>{let l=new AbortController;return Emr({cwd:s,node:n,knownCwds:a,signal:l.signal}).then(o).catch(()=>{}),()=>l.abort()},[a,s,n]),{summaries:i,node:n}}var Vge=L(z(),1),cWn={borderStyle:"dashed"};function Amr({summary:e,node:t,onSelectCwd:r,onRequestClone:n}){let{origin:i,displayName:o,openCount:a,isCurrent:s,cwd:l,cloneTarget:u}=e,f=!l&&!!u,d=l?()=>r(l):f&&u?()=>n({origin:i,cloneTarget:u,displayName:o,node:t}):void 0,h=(0,Vge.jsx)(sn,{label:`${o} (${a})`,size:"small",color:s?"primary":"default",variant:s?"filled":"outlined",disabled:!l&&!f,onClick:d,icon:f?(0,Vge.jsx)(iB,{}):void 0,sx:f?cWn:void 0});return!f||!u?h:(0,Vge.jsx)(lr,{describeChild:!0,title:oB(t,u),children:h})}var dY=L(z(),1),uWn={flexWrap:"wrap",gap:1,mb:2};function Pmr({sessions:e}){let{summaries:t,node:r}=Rmr(),{setSelectedCwd:n}=$n(),i=Mge(e);return t.length===0?null:(0,dY.jsxs)(Rt,{direction:"row",sx:uWn,children:[t.map(o=>(0,dY.jsx)(Amr,{summary:o,node:r,onSelectCwd:a=>r?n(a,r):n(a),onRequestClone:i.requestClone},o.origin)),(0,dY.jsx)(Pge,{clone:i})]})}var Mmr=L(z(),1);function Lmr({value:e,onChange:t}){return(0,Mmr.jsx)(ni,{"data-backlog-focus":"search",fullWidth:!0,size:"small",placeholder:"Search backlog\u2026",value:e,onChange:r=>t(r.target.value),sx:{mb:2}})}var Gge=L(ge(),1);var qge=L(z(),1);async function fWn(){return(await(await fetch("/api/backups/list")).json())[0]}function Imr(){let[e,t]=(0,Gge.useState)();return(0,Gge.useEffect)(()=>{fWn().then(t)},[]),e?(0,qge.jsx)(lr,{title:new Date(e.createdAt).toLocaleString(),children:(0,qge.jsxs)(xn,{component:ys,to:"/backups",underline:"hover",color:"text.secondary",variant:"body2",children:["Last backed up ",fa(String(e.createdAt))]})}):null}var uB=L(z(),1);function Dmr(){let[e,t]=rB();return(0,uB.jsxs)(du,{value:e,exclusive:!0,size:"small","aria-label":"Status filter",onChange:(r,n)=>{n!==null&&t(n)},children:[(0,uB.jsx)(hs,{value:"todo",children:"Todo"}),(0,uB.jsx)(hs,{value:"done",children:"Done"}),(0,uB.jsx)(hs,{value:"all",children:"All"})]})}var fB=L(z(),1);function Nmr({value:e,onChange:t}){return(0,fB.jsxs)(du,{value:e,exclusive:!0,size:"small","aria-label":"Type filter",onChange:(r,n)=>{n!==null&&t(n)},children:[(0,fB.jsx)(hs,{value:"all",children:"All"}),(0,fB.jsx)(hs,{value:"story",children:"Stories"}),(0,fB.jsx)(hs,{value:"bug",children:"Bugs"})]})}var R_=L(z(),1),dWn={justifyContent:"space-between",alignItems:"center",mb:3},hWn={fontWeight:600},pWn={alignItems:"center"};function Omr({typeFilter:e,onTypeFilterChange:t}){return(0,R_.jsxs)(Rt,{direction:"row",sx:dWn,children:[(0,R_.jsx)(Fe,{variant:"h5",sx:hWn,children:"Backlog"}),(0,R_.jsxs)(Rt,{direction:"row",spacing:2,sx:pWn,children:[(0,R_.jsx)(Imr,{}),(0,R_.jsx)(Nmr,{value:e,onChange:t}),(0,R_.jsx)(Dmr,{})]})]})}var L2=L(z(),1);function Fmr({items:e,loading:t,error:r,socket:n,onReload:i}){let o=as(),a=yr(),{query:s,setQuery:l,results:u,loading:f}=Npr(),[d,h]=(0,Bmr.useState)("all"),p=u??e,m=d==="all"?p:p.filter(g=>g.type===d);return(0,L2.jsxs)(L2.Fragment,{children:[(0,L2.jsx)(Omr,{typeFilter:d,onTypeFilterChange:h}),(0,L2.jsx)(Lmr,{value:s,onChange:l}),(0,L2.jsx)(Pmr,{sessions:n.sessions}),(0,L2.jsx)(kmr,{loading:t||f,error:u?null:r,query:s,typeFilter:d,items:m,socket:n,itemPath:g=>FT(g.id,o,a),onReload:i})]})}var t0e=L(ge(),1);var yR=L(ge(),1);async function $$e(e,t,r){let n=await fetch(Fl(`/api/items/${so(e)}`,t.cwd,t.node),{signal:r});return n.ok?n.json():null}function $mr(e){let t=as(),r=yr(),[n,i]=(0,yR.useState)(null),[o,a]=(0,yR.useState)(!0),s=(0,yR.useCallback)(async()=>{i(await $$e(e,{cwd:t,node:r}))},[e,t,r]);return(0,yR.useEffect)(()=>{let l=new AbortController,{signal:u}=l;return a(!0),(async()=>{try{let f=await $$e(e,{cwd:t,node:r},u);if(u.aborted)return;i(f),a(!1)}catch(f){if(!u.aborted)throw f}})(),()=>l.abort()},[e,t,r]),{item:n,loading:o,reload:s}}var A_={description:"item-section-description",acceptanceCriteria:"item-section-acceptance-criteria",subtasks:"item-section-subtasks",plan:"item-section-plan",activity:"item-section-activity",comments:"item-section-comments"},hY=140,z$e="--pinned-header-height",jge=`var(${z$e}, ${hY}px)`,zmr=`calc(${jge} + 8px)`;function zm(e){return{id:A_[e],sx:{mb:2,scrollMarginTop:zmr}}}function Yge(e){return{id:`item-phase-${e}`,sx:{scrollMarginTop:zmr}}}var P_=L(z(),1);function Hmr({criteria:e}){return e.length===0?null:(0,P_.jsxs)(ue,{...zm("acceptanceCriteria"),children:[(0,P_.jsx)(Fe,{variant:"overline",sx:{color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"},children:"Acceptance Criteria"}),(0,P_.jsx)(A0,{disablePadding:!0,sx:{maxWidth:"72ch"},children:e.map((t,r)=>(0,P_.jsxs)(rT,{disableGutters:!0,disablePadding:!0,sx:{py:.5,display:"flex",alignItems:"baseline"},children:[(0,P_.jsxs)(Fe,{component:"span",sx:{color:"text.secondary",mr:1},children:[r+1,"."]}),(0,P_.jsx)(yu,{component:"span",className:"markdown",html:RP(t)})]},t))})]})}var pY=L(z(),1),mWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Umr({description:e}){return e?(0,pY.jsxs)(ue,{...zm("description"),children:[(0,pY.jsx)(Fe,{variant:"overline",sx:mWn,children:"Description"}),(0,pY.jsx)(kw,{content:e,renderMermaid:!0})]}):null}var Zmr=L(ge(),1);function Wmr(e,t=10){let r=i=>e.filter(o=>o.kind===i).reverse(),n=r("commit");return{branches:r("branch"),commits:n.slice(0,t),overflowCommits:n.slice(t),prs:r("pr"),slacks:r("slack"),sessions:r("session")}}var Gmr=L(z(),1),gWn={color:"text.secondary",alignSelf:"flex-start",textAlign:"left"};function Vmr({hiddenCount:e,expanded:t,onToggle:r}){return e===0?null:(0,Gmr.jsx)(xn,{component:"button",type:"button",variant:"body2",underline:"hover",sx:gWn,onClick:n=>{n.stopPropagation(),r()},children:t?"Show fewer commits":`\u2026 and ${e} more commits`})}var vR=L(z(),1),yWn={display:"flex",alignItems:"center",gap:1},vWn={color:"text.secondary",fontFamily:"monospace"},bWn={flex:1,overflowWrap:"anywhere"},xWn={color:"text.disabled","&:hover":{color:"text.primary"}};function qmr({conversation:e}){let{resumeSession:t}=$l(),r=n=>{n.stopPropagation(),t(e.sessionId,e.cwd??"",e.title,e.harness)};return(0,vR.jsxs)(ue,{sx:yWn,children:[(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:vWn,children:"session"}),(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:bWn,children:e.title??e.sessionId}),(0,vR.jsx)(or,{size:"small",title:"Resume",sx:xWn,onClick:r,children:(0,vR.jsx)(Fp,{sx:{fontSize:14}})})]})}var Ymr=L(z(),1),TWn={color:"text.disabled",ml:1};function jmr({gitRef:e}){return e.kind!=="commit"||!e.createdAt?null:(0,Ymr.jsx)(ue,{component:"span",sx:TWn,children:SWn(e.createdAt)})}function SWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Kmr(e){if(e.kind==="commit"){let t=e.title?` ${e.title}`:"";return`${e.ref.slice(0,8)}${t}`}if(e.kind==="pr"){let t=e.title?` ${e.title}`:"",r=e.state?` (${e.state.toLowerCase()})`:"";return`#${e.ref}${t}${r}`}return e.kind==="slack"||e.kind==="session"?e.title??e.ref:e.ref}var Q1=L(z(),1),CWn={color:"text.secondary",mr:1,fontFamily:"monospace"};function wWn({gitRef:e}){let t=Kmr(e);return!e.url||e.kind==="session"?(0,Q1.jsx)(Q1.Fragment,{children:t}):(0,Q1.jsx)(xn,{href:e.url,target:"_blank",rel:"noopener",onClick:r=>r.stopPropagation(),children:t})}function Xmr({gitRef:e}){return(0,Q1.jsxs)(Fe,{variant:"body2",children:[(0,Q1.jsx)(ue,{component:"span",sx:CWn,children:e.kind}),(0,Q1.jsx)(wWn,{gitRef:e}),(0,Q1.jsx)(jmr,{gitRef:e})]})}var L_=L(z(),1),_Wn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Qmr({gitRefs:e,conversations:t=[]}){let[r,n]=(0,Zmr.useState)(!1),{branches:i,commits:o,overflowCommits:a,prs:s,slacks:l}=Wmr(e),u=[...i,...o,...r?a:[],...s,...l];return u.length===0&&t.length===0?null:(0,L_.jsxs)(ue,{...zm("activity"),children:[(0,L_.jsx)(Fe,{variant:"overline",sx:_Wn,children:"Activity"}),(0,L_.jsxs)(Rt,{spacing:1,children:[u.map(f=>(0,L_.jsx)(Xmr,{gitRef:f},`${f.kind}:${f.ref}`)),t.map(f=>(0,L_.jsx)(qmr,{conversation:f},f.sessionId)),(0,L_.jsx)(Vmr,{hiddenCount:a.length,expanded:r,onToggle:()=>n(f=>!f)})]})]})}var bR=L(z(),1),kWn={alignItems:"center",fontSize:"0.75rem",color:"text.secondary",mb:.5},EWn={color:"text.disabled"},RWn={fontWeight:500},AWn={summary:"Phase summary",comment:"Comment"};function Jmr({comment:e}){return(0,bR.jsxs)(Rt,{direction:"row",spacing:.5,sx:kWn,children:[e.id!==void 0&&(0,bR.jsxs)(Fe,{variant:"caption",sx:EWn,children:["#",e.id]}),(0,bR.jsx)(Fe,{variant:"caption",sx:RWn,children:AWn[e.type]}),e.phase!==void 0&&(0,bR.jsxs)(Fe,{variant:"caption",children:["\xB7 Phase ",e.phase]}),(0,bR.jsxs)(Fe,{variant:"caption",children:["\xB7 ",PWn(e.timestamp)]})]})}function PWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var egr=L(z(),1),tgr=ft((0,egr.jsx)("path",{d:"M16 9v10H8V9zm-1.5-6h-5l-1 1H5v2h14V4h-3.5zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2z"}),"DeleteOutlined");var H$e=L(ge(),1);async function rgr(e,t,r,n){let i=await fetch(Fl(`/api/items/${so(e)}/comments/${t}`,r,n),{method:"DELETE"});if(!i.ok){let o=await i.json().catch(()=>{});throw new Error(o?.error??`Failed to delete comment (${i.status})`)}}var J1=L(z(),1),LWn={mt:-.5,mr:-.5,color:"text.secondary"};function ngr({itemId:e,commentId:t,onDeleted:r}){let n=as(),i=yr(),[o,a]=(0,H$e.useState)(!1),[s,l]=(0,H$e.useState)(),u=()=>l(void 0);return(0,J1.jsxs)(J1.Fragment,{children:[o&&(0,J1.jsx)(vo,{message:"Are you sure you want to delete this comment?",onConfirm:async()=>{a(!1);try{await rgr(e,t,n,i),await r()}catch(f){l(f instanceof Error?f.message:"Failed to delete comment")}},onCancel:()=>a(!1)}),(0,J1.jsx)(ol,{open:s!==void 0,autoHideDuration:6e3,onClose:u,children:(0,J1.jsx)(ri,{severity:"error",variant:"filled",onClose:u,children:s})}),(0,J1.jsx)(or,{"aria-label":"Delete comment",size:"small",sx:LWn,onClick:()=>a(!0),children:(0,J1.jsx)(tgr,{fontSize:"inherit"})})]})}var xR=L(z(),1),MWn={summary:{bgcolor:"warning.light",borderColor:"warning.dark"},comment:{bgcolor:"action.selected",borderColor:"divider"}},IWn={justifyContent:"space-between",alignItems:"flex-start"},DWn={color:"text.primary",whiteSpace:"pre-wrap"};function NWn(e){return{p:1.5,bgcolor:e.bgcolor,borderColor:e.borderColor}}function igr({comment:e,itemId:t,onDeleted:r}){return(0,xR.jsxs)(an,{variant:"outlined",sx:NWn(MWn[e.type]),children:[(0,xR.jsxs)(Rt,{direction:"row",sx:IWn,children:[(0,xR.jsx)(Jmr,{comment:e}),e.id!==void 0&&t!==void 0&&r&&(0,xR.jsx)(ngr,{itemId:t,commentId:e.id,onDeleted:r})]}),(0,xR.jsx)(Fe,{variant:"body2",sx:DWn,children:e.text})]})}var dB=L(z(),1),OWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function ogr({comments:e,itemId:t,onCommentDeleted:r}){return e.length===0?null:(0,dB.jsxs)(ue,{...zm("comments"),children:[(0,dB.jsx)(Fe,{variant:"overline",sx:OWn,children:"Comments"}),(0,dB.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,dB.jsx)(igr,{comment:n,itemId:t,onDeleted:r},`${n.timestamp}-${i}`))})]})}var agr=L(z(),1);function hB({total:e,sx:t}){return(0,agr.jsx)(Fe,{sx:t,children:_ge(e)})}var lgr=L(z(),1),BWn={color:"text.secondary",fontSize:"0.75rem"};function sgr({usage:e}){let t={tokensUp:e.reduce((r,n)=>r+n.tokensUp,0),tokensDown:e.reduce((r,n)=>r+n.tokensDown,0),activeMs:e.reduce((r,n)=>r+n.activeMs,0),peakContextPct:e.reduce((r,n)=>Math.max(r,n.peakContextPct),0)};return(0,lgr.jsx)(hB,{total:t,sx:BWn})}var M2=L(z(),1);function cgr({checks:e}){return(0,M2.jsxs)(ue,{sx:{mt:1,pt:1},children:[(0,M2.jsx)(no,{sx:{mb:1}}),(0,M2.jsx)(Fe,{variant:"overline",sx:{color:"text.disabled",letterSpacing:"0.08em"},children:"Manual Checks"}),(0,M2.jsx)(A0,{disablePadding:!0,sx:{ml:.5,mt:.5},children:e.map(t=>(0,M2.jsxs)(rT,{disableGutters:!0,disablePadding:!0,sx:{py:.25,display:"flex",alignItems:"baseline"},children:[(0,M2.jsx)(Fe,{component:"span",sx:{mr:1,fontSize:"0.875rem",color:"text.secondary"},children:"\u2610"}),(0,M2.jsx)(yu,{component:"span",className:"markdown",sx:{fontSize:"0.875rem",color:"text.secondary"},html:RP(t)})]},t))})]})}var Kge={done:{borderColor:"success.light",bgcolor:"success.light"},current:{borderColor:"info.main",bgcolor:"info.light",ring:"info.light"},upcoming:{borderColor:"divider",bgcolor:"background.paper"}};function ugr(e){let t=Kge[e];return{p:2,borderColor:t.ring?"info.main":t.borderColor,bgcolor:t.bgcolor,...t.ring?{boxShadow:"0 0 0 2px"}:{}}}var fgr={done:"\u2713",current:"\u2022",upcoming:"\u2022"};var pgr=L(ge(),1);var dgr=L(ge(),1),ev=L(z(),1);function hgr({phaseName:e,onConfirm:t,onCancel:r}){let[n,i]=(0,dgr.useState)("");return(0,ev.jsxs)(Ps,{open:!0,onClose:r,maxWidth:"xs",fullWidth:!0,children:[(0,ev.jsxs)(Il,{children:["Rewind to ",e,"?"]}),(0,ev.jsxs)(Ml,{children:[(0,ev.jsx)(Fe,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"This will mark all later phases as incomplete."}),(0,ev.jsx)(ni,{fullWidth:!0,multiline:!0,rows:3,size:"small",placeholder:"Reason for rewinding...",value:n,onChange:o=>i(o.target.value)})]}),(0,ev.jsxs)(cu,{children:[(0,ev.jsx)(qt,{onClick:r,children:"Cancel"}),(0,ev.jsx)(qt,{variant:"contained",color:"warning",disabled:n.trim().length===0,onClick:()=>t(n.trim()),children:"Rewind"})]})]})}var TR=L(z(),1);function mgr({itemId:e,phaseNumber:t,phaseName:r,onRewound:n}){let i=as(),o=yr(),[a,s]=(0,pgr.useState)(!1);return(0,TR.jsxs)(TR.Fragment,{children:[(0,TR.jsx)(qt,{size:"small",color:"warning",variant:"outlined",onClick:()=>s(!0),sx:{ml:"auto",textTransform:"none",fontSize:"0.75rem"},children:"Rewind"}),a&&(0,TR.jsx)(hgr,{phaseName:r,onConfirm:async l=>{await ket(e,t,l,i,o),await n()},onCancel:()=>s(!1)})]})}var pB=L(z(),1),FWn={done:{label:"Done",color:"success"},current:{label:"In Progress",color:"info"},upcoming:{label:"Upcoming",color:"default"}},$Wn={alignItems:"center",mb:1},zWn={fontWeight:500},HWn={fontWeight:500,fontSize:"0.75rem"};function ggr({phase:e,index:t,status:r,itemId:n,onRewind:i}){let o=FWn[r],a=r==="done"&&n!==void 0&&i;return(0,pB.jsxs)(Rt,{direction:"row",spacing:1,sx:$Wn,children:[(0,pB.jsxs)(Fe,{sx:zWn,children:["Phase ",t+1,": ",e.name]}),(0,pB.jsx)(sn,{label:o.label,size:"small",color:o.color,sx:HWn}),a&&(0,pB.jsx)(mgr,{itemId:n,phaseNumber:t+1,phaseName:e.name,onRewound:i})]})}var mY=L(z(),1),UWn={color:"text.secondary",fontSize:"0.75rem",letterSpacing:"0.08em",display:"block"},WWn={color:"text.secondary",fontSize:"0.75rem",fontFamily:"monospace",display:"block"};function ygr({sessions:e}){return(0,mY.jsxs)(ue,{sx:{mb:1},children:[(0,mY.jsx)(Fe,{variant:"overline",sx:UWn,children:"Sessions"}),e.map(t=>(0,mY.jsx)(Fe,{sx:WWn,children:`${t.hostname} / ${t.osUser} / ${t.claudeSessionId}`},t.claudeSessionId))]})}var bgr=L(z(),1),VWn={color:"text.secondary",fontSize:"0.75rem",mb:1,display:"block"};function vgr({usage:e}){return(0,bgr.jsx)(hB,{total:e,sx:VWn})}var mB=L(z(),1);function xgr({tasks:e,marker:t}){return(0,mB.jsx)(A0,{disablePadding:!0,sx:{ml:.5},children:e.map(r=>(0,mB.jsxs)(rT,{disableGutters:!0,disablePadding:!0,sx:{py:.25,display:"flex",alignItems:"baseline"},children:[(0,mB.jsx)(Fe,{component:"span",sx:{color:"text.secondary",mr:1},children:t}),(0,mB.jsx)(yu,{component:"span",className:"markdown",html:RP(r.task)})]},r.task))})}var M_=L(z(),1);function Tgr({phase:e,index:t,status:r,itemId:n,usage:i,sessions:o,onRewind:a}){let s=e.manualChecks??[],l=Yge(t);return(0,M_.jsxs)(an,{variant:"outlined",id:l.id,sx:{...ugr(r),...l.sx},children:[(0,M_.jsx)(ggr,{phase:e,index:t,status:r,itemId:n,onRewind:a}),i&&(0,M_.jsx)(vgr,{usage:i}),(0,M_.jsx)(xgr,{tasks:e.tasks,marker:fgr[r]}),s.length>0&&(0,M_.jsx)(cgr,{checks:s}),o&&o.length>0&&(0,M_.jsx)(ygr,{sessions:o})]})}var gY={name:"Review",tasks:[]};function Xge(e){return e.at(-1)?.name===gY.name?e.length-1:e.length}function Zge(e,t){if(t===void 0)return"upcoming";let r=e+1;return r<t?"done":r===t?"current":"upcoming"}function Sgr(e=[]){return new Map(e.map(t=>[t.phaseIdx,t]))}function Cgr(e=[]){let t=new Map;for(let r of e){let n=t.get(r.phaseIdx);n?n.push(r):t.set(r.phaseIdx,[r])}return t}var U$e=L(z(),1);function wgr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){let a=Sgr(n),s=Cgr(i),l=Xge(e),u=(i??[]).filter(d=>d.phaseIdx>=l),f=l===e.length&&u.length>0?[...e,gY]:e;return(0,U$e.jsx)(Rt,{spacing:1.5,children:f.map((d,h)=>(0,U$e.jsx)(Tgr,{phase:d,index:h,status:Zge(h,t),itemId:r,usage:a.get(h),sessions:h===l?u:s.get(h),onRewind:h<e.length?o:void 0},d.name))})}var SR=L(z(),1),GWn={alignItems:"baseline",justifyContent:"space-between",mb:1},qWn={color:"text.secondary",display:"block",letterSpacing:"0.08em"};function _gr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){return e.length===0?null:(0,SR.jsxs)(ue,{...zm("plan"),children:[(0,SR.jsxs)(Rt,{direction:"row",sx:GWn,children:[(0,SR.jsx)(Fe,{variant:"overline",sx:qWn,children:"Plan"}),n&&n.length>0&&(0,SR.jsx)(sgr,{usage:n})]}),(0,SR.jsx)(wgr,{phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o})]})}var W$e=L(z(),1),Qge=e=>{let{value:t,options:r,colors:n,onChange:i}=e;return(0,W$e.jsx)(oT,{value:t,onChange:o=>i(o.target.value),size:"small",sx:{fontSize:"0.75rem",fontWeight:500,borderRadius:4,bgcolor:n[t].bg,color:n[t].text,"& .MuiSelect-select":{py:.5,px:1.5},"& .MuiSelect-icon":{color:"inherit"}},children:r.map(o=>(0,W$e.jsx)(fn,{value:o,children:o},o))})};var Egr=L(z(),1),jWn={todo:{bg:"action.selected",text:"text.primary"},"in-progress":{bg:"warning.main",text:"warning.contrastText"},done:{bg:"success.main",text:"success.contrastText"}},YWn=["todo","in-progress","done"];function kgr({current:e,onStatusChange:t}){return(0,Egr.jsx)(Qge,{value:e,options:YWn,colors:jWn,onChange:t})}var I_=L(z(),1);function Rgr({subtask:e,onStatusChange:t}){let r=e.status==="done";return(0,I_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start",justifyContent:"space-between"},children:[(0,I_.jsxs)(ue,{sx:{flex:1},children:[(0,I_.jsx)(Fe,{variant:"body2",sx:{textDecoration:r?"line-through":"none",color:r?"text.disabled":"text.primary"},children:e.title}),e.description&&(0,I_.jsx)(ue,{sx:{mt:.5,fontSize:"0.8125rem",color:r?"text.disabled":"text.secondary"},children:(0,I_.jsx)(kw,{content:e.description})})]}),(0,I_.jsx)(kgr,{current:e.status,onStatusChange:t})]})}var CR=L(z(),1),KWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Agr({subtasks:e,onStatusChange:t}){if(e.length===0)return null;let r=e.filter(n=>n.status!=="done").length;return(0,CR.jsxs)(ue,{...zm("subtasks"),children:[(0,CR.jsx)(Fe,{variant:"overline",sx:KWn,children:"Sub-tasks"}),(0,CR.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,CR.jsx)(Rgr,{subtask:n,onStatusChange:o=>t(i,o)},`${n.title}-${i}`))}),r>0&&(0,CR.jsxs)(ri,{severity:"warning",sx:{mt:1},children:[r," sub-task",r===1?"":"s"," not yet done."]})]})}var I2=L(z(),1);function Pgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,I2.jsxs)(I2.Fragment,{children:[e.subtasks&&n&&(0,I2.jsx)(Agr,{subtasks:e.subtasks,onStatusChange:n}),e.plan&&(0,I2.jsx)(_gr,{phases:e.plan,currentPhase:e.currentPhase,itemId:e.id,usage:e.phaseUsage,sessions:e.phaseSessions,onRewind:t}),(0,I2.jsx)(Qmr,{gitRefs:e.gitRefs??[],conversations:e.conversations}),e.comments&&(0,I2.jsx)(ogr,{comments:e.comments,itemId:e.id,onCommentDeleted:r})]})}var gB=L(z(),1);function Lgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,gB.jsxs)(ue,{sx:{pt:2,flex:1,minWidth:0},children:[(0,gB.jsx)(Umr,{description:e.description}),(0,gB.jsx)(Hmr,{criteria:e.acceptanceCriteria}),(0,gB.jsx)(Pgr,{item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n})]})}var Mgr="item-detail";var yY={wideQuery:`@container ${Mgr} (min-width: 760px)`,containerSx:{containerType:"inline-size",containerName:Mgr},columnsSx:{display:"flex",columnGap:3}};function XWn(e){let t=e.plan??[];if(t.length===0)return[];let r=Xge(t),i=r===t.length&&(e.phaseSessions??[]).some(o=>o.phaseIdx>=r)?[...t,gY]:t;return[{id:A_.plan,label:"Phases"},...i.map((o,a)=>({id:Yge(a).id,label:`${a+1}`,title:o.name,status:Zge(a,e.currentPhase),nested:!0}))]}function Igr(e){let t=[];return e.description&&t.push({id:A_.description,label:"Description"}),e.acceptanceCriteria.length>0&&t.push({id:A_.acceptanceCriteria,label:"Acceptance Criteria"}),(e.subtasks?.length??0)>0&&t.push({id:A_.subtasks,label:"Sub-tasks"}),t.push(...XWn(e)),(e.gitRefs?.length??0)+(e.conversations?.length??0)>0&&t.push({id:A_.activity,label:"Activity"}),(e.comments?.length??0)>0&&t.push({id:A_.comments,label:"Comments"}),t}var Dgr="1.3125rem",Ngr={position:"relative",borderRadius:1,"&::after":{content:'""',position:"absolute",inset:0,borderRadius:"inherit",pointerEvents:"none"},"&:hover::after":{bgcolor:"action.hover"},"&:active::after":{bgcolor:"action.selected"}},ZWn={...Ngr,display:"block",flexShrink:0,maxWidth:"100%",px:1,py:.5,border:0,bgcolor:"transparent",fontSize:Dgr,lineHeight:1.2,letterSpacing:"0.02em",textAlign:"left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"text.secondary"},QWn={...Ngr,display:"flex",alignItems:"center",justifyContent:"center",fontSize:Dgr,width:"2em",height:"2em",flexShrink:0,lineHeight:1,borderRadius:"50%",border:1,color:"text.primary"},JWn={borderColor:"text.primary",borderWidth:3},eVn={color:"text.primary",fontWeight:700,"&::after":{bgcolor:"action.selected"}};function Ogr(e,t){let r=e.status&&Kge[e.status];return r?{...QWn,ml:1.5,bgcolor:r.bgcolor,borderColor:r.borderColor,borderWidth:r.ring?3:1,...t&&JWn}:{...ZWn,...t&&eVn}}var Fgr=L(z(),1);function Bgr({section:e,active:t,onSelect:r}){return(0,Fgr.jsx)(Dn,{sx:Ogr(e,t),onClick:()=>r(e.id),title:e.title??e.label,"aria-current":t?"true":void 0,children:e.label})}function $gr(e,t=hY){return Yhe(e,t)}var V$e=L(z(),1),tVn=48,rVn=260,nVn={display:"none",[yY.wideQuery]:{display:"flex"},position:"sticky",top:jge,alignSelf:"flex-start",width:rVn,flexShrink:0,maxHeight:`calc(100vh - ${tVn}px - ${jge})`,alignItems:"flex-start",overflowY:"auto",overflowX:"hidden",py:2};function iVn(e){document.getElementById(e)?.scrollIntoView({behavior:"smooth",block:"start"})}function zgr({item:e,headerHeight:t}){let r=Igr(e),n=$gr(r.map(i=>i.id),t);return r.length===0?null:(0,V$e.jsx)(Rt,{component:"nav",spacing:1,sx:nVn,children:r.map(i=>(0,V$e.jsx)(Bgr,{section:i,active:i.id===n,onSelect:iVn},i.id))})}var Ugr=L(z(),1);function Hgr({to:e}){let t=Xi();return(0,Ugr.jsx)(qt,{"data-backlog-focus":"back",variant:"text",size:"small",onClick:()=>t(e),sx:{mb:2,textTransform:"none"},children:"\u2190 Back"})}var Wgr=L(ge(),1);var wR=L(z(),1);function Vgr({itemId:e,onDeleted:t}){let r=as(),n=yr(),[i,o]=(0,Wgr.useState)(!1);return(0,wR.jsxs)(wR.Fragment,{children:[i&&(0,wR.jsx)(vo,{onConfirm:async()=>{await wet(e,r,n),await t()},onCancel:()=>o(!1)}),(0,wR.jsx)(qt,{variant:"contained",color:"error",size:"small",onClick:()=>o(!0),children:"Delete"})]})}var G$e=L(z(),1),oVn={todo:{bg:"action.selected",text:"text.primary"},"in-progress":{bg:"warning.main",text:"warning.contrastText"},done:{bg:"success.main",text:"success.contrastText"},wontdo:{bg:"error.main",text:"error.contrastText"}},aVn=["todo","in-progress","done","wontdo"];function Ggr({current:e,onStatusChange:t}){return t?(0,G$e.jsx)(Qge,{value:e,options:aVn,colors:oVn,onChange:t}):(0,G$e.jsx)(sn,{label:e,size:"small",color:yge[e],sx:{fontWeight:500,fontSize:"0.75rem"}})}var D2=L(z(),1),sVn={alignItems:"center",color:"text.disabled",fontSize:"0.875rem"},lVn={fontWeight:500,fontSize:"0.75rem"},cVn={color:"text.secondary",fontSize:"0.75rem"};function qgr({item:e,onStatusChange:t}){let r=gge[e.type];return(0,D2.jsxs)(Rt,{direction:"row",spacing:1,sx:sVn,children:[(0,D2.jsx)(Fe,{variant:"body2",color:"text.disabled",children:so(e.id)}),r&&(0,D2.jsx)(sn,{label:e.type,size:"small",color:r,sx:lVn}),(0,D2.jsx)(Ggr,{current:e.status,onStatusChange:t}),(0,D2.jsx)(uP,{jiraKey:e.jiraKey}),(0,D2.jsx)(cP,{githubIssue:e.githubIssue,origin:e.origin}),e.usageTotal&&(0,D2.jsx)(hB,{total:e.usageTotal,sx:cVn})]})}var jgr=L(z(),1),Ygr=ft((0,jgr.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var Jge=L(ge(),1);var Kgr=L(ge(),1);function Xgr(e){let{launchAssist:t}=$l(),r=Xi(),n=as(),i=yr(),[o,a]=(0,Kgr.useState)(!1);return{launched:o,launch:l=>{if(o)return;a(!0);let u=i?[{node:i}]:[];t(["refine","--once",...l,so(e)],n,...u),r("/sessions")}}}var s0=L(z(),1);function Zgr({itemId:e}){let{launched:t,launch:r}=Xgr(e),n=C_(),i=(0,Jge.useRef)(null),[o,a]=(0,Jge.useState)(!1),s=u=>u.stopPropagation(),l=Ege(n);return(0,s0.jsxs)(s0.Fragment,{children:[(0,s0.jsxs)(J2,{ref:i,variant:"outlined",size:"small",disabled:t,children:[(0,s0.jsx)(qt,{startIcon:(0,s0.jsx)(Ygr,{}),onClick:u=>{s(u),r([])},children:"Refine"}),l.length>0&&(0,s0.jsx)(qt,{size:"small","aria-label":"Refine with a different harness",onClick:u=>{s(u),a(!0)},children:(0,s0.jsx)(Up,{})})]}),(0,s0.jsx)(Rge,{anchorEl:i.current,open:o,onClose:()=>a(!1),options:l,onSelect:u=>{a(!1),r(["--harness",u])},stop:s})]})}var yB=L(ge(),1);function Qgr(){let e=(0,yB.useRef)(null),[t,r]=(0,yB.useState)(!1);return(0,yB.useEffect)(()=>{let n=e.current;if(!n)return;let i=new IntersectionObserver(([o])=>r(!o.isIntersecting),{threshold:0});return i.observe(n),()=>i.disconnect()},[]),{sentinelRef:e,stuck:t}}var Of=L(z(),1),uVn={justifyContent:"space-between",alignItems:"center",mb:2};function fVn(e){return e.palette.mode==="dark"?"0 8px 8px -9px rgba(0, 0, 0, 0.8)":"0 6px 6px -7px rgba(0, 0, 0, 0.2)"}function dVn(e){return t=>({position:"sticky",top:0,zIndex:1,bgcolor:"background.default",mx:-2,px:2,pb:2,borderBottom:1,borderColor:"divider",boxShadow:e?fVn(t):"none",transition:t.transitions.create("box-shadow")})}function Jgr({item:e,onDeleted:t,onStatusChange:r,ref:n}){let{sentinelRef:i,stuck:o}=Qgr();return(0,Of.jsxs)(Of.Fragment,{children:[(0,Of.jsx)(ue,{ref:i,sx:{height:0}}),(0,Of.jsxs)(ue,{ref:n,sx:dVn(o),children:[(0,Of.jsxs)(Rt,{direction:"row",sx:uVn,children:[(0,Of.jsx)(Hgr,{to:"/backlog"}),(0,Of.jsxs)(Rt,{direction:"row",spacing:1,children:[kge(e)&&(0,Of.jsx)(Wge,{itemId:e.id}),(0,Of.jsx)(Zgr,{itemId:e.id}),(0,Of.jsx)(Vgr,{itemId:e.id,onDeleted:t})]})]}),(0,Of.jsx)(Fe,{variant:"h5",component:"h2",children:e.name}),(0,Of.jsx)(qgr,{item:e,onStatusChange:r})]})]})}var t0r=L(ge(),1);var e0e=L(ge(),1);function e0r(e,t){let[r,n]=(0,e0e.useState)(t);return(0,e0e.useEffect)(()=>{let i=e.current;if(!i||(n(i.offsetHeight),typeof ResizeObserver>"u"))return;let o=new ResizeObserver(()=>n(i.offsetHeight));return o.observe(i),()=>o.disconnect()},[e]),r}function r0r(){let e=(0,t0r.useRef)(null),t=e0r(e,hY),r={[z$e]:`${t}px`};return{headerRef:e,headerHeight:t,style:r}}var D_=L(z(),1);function n0r({item:e,onReload:t}){let r=Xi(),n=as(),i=yr(),{headerRef:o,headerHeight:a,style:s}=r0r();iy("ItemDetail");let l=async()=>{await t(),r("/backlog")},u=async d=>{await AJ(e.id,d,n,i),await t()},f=async(d,h)=>{await _et(e.id,d,h,n,i),await t()};return(0,D_.jsxs)(ue,{style:s,children:[(0,D_.jsx)(Jgr,{ref:o,item:e,onDeleted:l,onStatusChange:u}),(0,D_.jsx)(ue,{sx:yY.containerSx,children:(0,D_.jsxs)(ue,{sx:yY.columnsSx,children:[(0,D_.jsx)(Lgr,{item:e,onRewind:t,onCommentDeleted:t,onSubtaskStatusChange:f}),(0,D_.jsx)(zgr,{item:e,headerHeight:a})]})})]})}var _R=L(z(),1),hVn={display:"flex",justifyContent:"center",py:6};function i0r({onReload:e}){let[t]=Pc(),r=t.get("cwd")||void 0,n=t.get("node")||void 0,i=$n(),o=(0,t0e.useMemo)(()=>r?{...i,selectedCwd:r,selectedNode:n}:i,[i,r,n]);return iy("ItemRoute"),(0,_R.jsx)(bz.Provider,{value:o,children:(0,_R.jsx)(Ku.Provider,{value:o.selectedNode,children:(0,_R.jsx)(pVn,{onReload:e})})})}function pVn({onReload:e}){let{id:t}=g2e(),r=Number.NaN;try{r=mJ(t??"")}catch{r=Number.NaN}let{item:n,loading:i,reload:o}=$mr(r),a=(0,t0e.useCallback)(async()=>{await Promise.all([o(),e()])},[o,e]);return i?(0,_R.jsx)(ue,{sx:hVn,children:(0,_R.jsx)(mo,{})}):n?(0,_R.jsx)(n0r,{item:n,onReload:a}):null}var kR=L(z(),1);function o0r({items:e,loading:t,error:r,socket:n,onReload:i}){return(0,kR.jsxs)(h5,{children:[(0,kR.jsx)(gs,{index:!0,element:(0,kR.jsx)(Fmr,{items:e,loading:t,error:r,socket:n,onReload:i})}),(0,kR.jsx)(gs,{path:"items/:id",element:(0,kR.jsx)(i0r,{onReload:i})})]})}var l0=L(ge(),1);var a0r=new Map;function s0r(e,t,r){return JSON.stringify([e??null,t,r??null])}var vY={get(e,t,r){return a0r.get(s0r(e,t,r))},set(e,t,r,n){a0r.set(s0r(e,t,n),r)}};function mVn(e,t){return e===t?!0:!e||!t?!1:e.tokensUp===t.tokensUp&&e.tokensDown===t.tokensDown&&e.activeMs===t.activeMs&&e.peakContextPct===t.peakContextPct}function l0r(e,t){return e===t?!0:e.length!==t.length?!1:e.every((r,n)=>{let i=t[n];return r.id===i.id&&r.type===i.type&&r.name===i.name&&r.status===i.status&&r.starred===i.starred&&r.incompleteSubtasks===i.incompleteSubtasks&&mVn(r.usageTotal,i.usageTotal)})}function c0r({setItems:e,setLoading:t,setError:r}){return{onLoaded:n=>{e(i=>l0r(i,n)?i:n),t(!1),r(null)},onError:n=>{t(!1),r(n)}}}async function u0r(e,t,r,n){let i=await HT({cwd:e,node:n,signal:r,filter:t});return r.aborted||vY.set(e,t,i,n),i}function f0r(e,t,r,{onLoaded:n,onError:i},o){return(async()=>{try{let a=await u0r(e,t,r,o);r.aborted||n(a)}catch(a){r.aborted||i(a instanceof Error?a.message:"Failed to load.")}})()}var gVn=5e3;function d0r(e,t,r,n){let i=new AbortController,o=!1,a=()=>{o||(o=!0,f0r(e,t,i.signal,r,n).finally(()=>{o=!1}))};a();let s=setInterval(a,gVn);return()=>{i.abort(),clearInterval(s)}}function h0r(){let e=as(),t=yr(),[r]=rB(),n=vY.get(e,r,t),i=n??[],o=n===void 0,[a,s]=(0,l0.useState)(i),[l,u]=(0,l0.useState)(o),[f,d]=(0,l0.useState)(null),[h,p]=(0,l0.useState)(e),[m,g]=(0,l0.useState)(t),[y,v]=(0,l0.useState)(r);(e!==h||t!==m||r!==y)&&(p(e),g(t),v(r),s(i),u(o),d(null));let b=(0,l0.useCallback)(async()=>{let x=await HT({cwd:e,node:t,filter:r});s(x),vY.set(e,r,x,t),u(!1)},[e,t,r]);return(0,l0.useEffect)(()=>d0r(e,r,c0r({setItems:s,setLoading:u,setError:d}),t),[e,t,r]),{items:a,loading:l,error:f,reload:b}}var bY=L(z(),1);function p0r({socket:e}){let{items:t,loading:r,error:n,reload:i}=h0r();return lte(!r),(0,bY.jsx)(L$e.Provider,{value:e.sessions,children:(0,bY.jsx)(h5,{children:(0,bY.jsx)(gs,{path:"/*",element:(0,bY.jsx)(o0r,{items:t,loading:r,error:n,socket:e,onReload:i})})})})}var q$e=L(z(),1);function m0r({socket:e}){return(0,q$e.jsx)(MF,{maxWidth:"lg",sx:{py:3,px:2},children:(0,q$e.jsx)(p0r,{socket:e})})}var ki=L(z(),1);function g0r({socket:e}){return iy("AppRoutes"),(0,ki.jsxs)(ki.Fragment,{children:[(0,ki.jsx)(dor,{}),(0,ki.jsx)(h5,{children:(0,ki.jsxs)(gs,{element:(0,ki.jsx)(Cit,{socket:e}),children:[(0,ki.jsx)(gs,{path:"sessions",element:(0,ki.jsx)(Kdr,{socket:e})}),(0,ki.jsx)(gs,{path:"backlog/*",element:(0,ki.jsx)(m0r,{socket:e})}),(0,ki.jsx)(gs,{path:"next",element:(0,ki.jsx)(wir,{sessions:e.sessions,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"news",element:(0,ki.jsx)(Bnr,{})}),(0,ki.jsx)(gs,{path:"releases",element:(0,ki.jsx)(sor,{})}),(0,ki.jsx)(gs,{path:"usage",element:(0,ki.jsx)(Ppr,{})}),(0,ki.jsx)(gs,{path:"backups",element:(0,ki.jsx)(Lit,{})}),(0,ki.jsx)(gs,{path:"config",element:(0,ki.jsx)(_at,{})}),(0,ki.jsx)(gs,{path:"updates",element:(0,ki.jsx)(Hhr,{reconnecting:e.reconnecting,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"diff",element:(0,ki.jsx)(rnr,{socket:e})}),(0,ki.jsx)(gs,{path:"file",element:(0,ki.jsx)(Mnr,{socket:e})}),(0,ki.jsx)(gs,{path:"*",element:(0,ki.jsx)(S2e,{to:"/sessions",replace:!0})})]})})]})}var a0e=L(ge(),1);var o0e=L(ge(),1);function y0r(e,t,r){if(!e)return"Select a repo to search files.";if(r.error)return"Couldn't search files in this repo.";if(!(r.files.length>0||r.loading))return t?"No matching files.":"No files in this repo."}var N_=L(z(),1),yVn={display:"flex",gap:1,alignItems:"center",minWidth:0},vVn={display:"flex",gap:1,alignItems:"baseline",minWidth:0,overflow:"hidden"},bVn={fontFamily:"monospace",fontSize:13,whiteSpace:"nowrap"},xVn={fontFamily:"monospace",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function TVn(e){let t=e.lastIndexOf("/");return t===-1?{dir:"",basename:e}:{dir:e.slice(0,t),basename:e.slice(t+1)}}function v0r({files:e,highlight:t,onHighlight:r,onSelect:n}){return(0,N_.jsx)(Cp,{dense:!0,sx:{py:0},children:e.map((i,o)=>{let{dir:a,basename:s}=TVn(i);return(0,N_.jsxs)(fn,{selected:o===t,onMouseEnter:()=>r(o),onClick:()=>n(i),sx:yVn,children:[(0,N_.jsx)(JO,{path:i}),(0,N_.jsxs)(ue,{sx:vVn,children:[(0,N_.jsx)(Fe,{component:"span",sx:bVn,children:s}),(0,N_.jsx)(Fe,{component:"span",color:"text.secondary",sx:xVn,children:a})]})]},i)})})}var r0e=L(z(),1),SVn={maxHeight:420,overflowY:"auto"},CVn={px:2,py:2,fontSize:13};function b0r({message:e,files:t,highlight:r,onHighlight:n,onSelect:i}){return(0,r0e.jsx)(ue,{sx:SVn,children:e?(0,r0e.jsx)(Fe,{color:"text.secondary",sx:CVn,children:e}):(0,r0e.jsx)(v0r,{files:t,highlight:r,onHighlight:n,onSelect:i})})}var x0r=L(z(),1),wVn={mt:6,alignSelf:"flex-start"};function n0e({onClose:e,onEntered:t,centered:r=!1,children:n}){return(0,x0r.jsx)(Ps,{open:!0,onClose:e,maxWidth:"sm",fullWidth:!0,slotProps:{paper:{sx:r?void 0:wVn},transition:{onEntered:t}},children:n})}var i0e=L(ge(),1);var T0r={files:[],loading:!1,error:!1};function S0r(e,t){let[r,n]=(0,i0e.useState)(T0r),i=yr();return(0,i0e.useEffect)(()=>{if(!e){n(T0r);return}let o=!1;return n(s=>({...s,loading:!0})),(async()=>{try{let s=await fetch(tn(`/api/files?cwd=${encodeURIComponent(e)}&q=${encodeURIComponent(t)}`,i));if(!s.ok)throw new Error(`HTTP ${s.status}`);let l=await s.json();if(o)return;n({files:Array.isArray(l.files)?l.files:[],loading:!1,error:!1})}catch{o||n({files:[],loading:!1,error:!0})}})(),()=>{o=!0}},[e,t,i]),r}var ER=L(z(),1);function _Vn(e,t,r){let n=new URLSearchParams({path:e});return t&&n.set("cwd",t),t&&r&&n.set("node",r),`/file?${n}`}function C0r({onClose:e}){let{worktreeNode:t}=$n();return(0,ER.jsx)(Ku.Provider,{value:t,children:(0,ER.jsx)(kVn,{onClose:e})})}function kVn({onClose:e}){let{worktreeCwd:t,worktreeNode:r}=$n(),[n,i]=(0,o0e.useState)(""),o=S0r(t,n),a=Xi(),s=(0,o0e.useRef)(null),l=p=>a(_Vn(p,t,r)),{highlight:u,setHighlight:f,onKeyDown:d}=E_(o.files,n,l,e),h=p=>{l(p),e()};return(0,ER.jsxs)(n0e,{onClose:e,onEntered:()=>s.current?.focus(),children:[(0,ER.jsx)(aB,{autoFocus:!0,inputRef:s,value:n,onChange:i,onKeyDown:d,placeholder:"Search files by name..."}),(0,ER.jsx)(b0r,{message:y0r(t,n,o),files:o.files,highlight:u,onHighlight:f,onSelect:h})]})}function w0r(e){Do(Yn("quickOpen").matches,e)}var k0r=L(z(),1);function _0r(){let[e,t]=(0,a0e.useState)(!1);return w0r((0,a0e.useCallback)(()=>t(!0),[])),e?(0,k0r.jsx)(C0r,{onClose:()=>t(!1)}):null}var s0e=L(z(),1);function E0r({notice:e,onClose:t,onView:r}){let n=e?.sessionId??null;return(0,s0e.jsx)(ol,{open:e!==null,autoHideDuration:6e3,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,s0e.jsx)(ri,{severity:"success",variant:"filled",onClose:t,action:n!==null?(0,s0e.jsx)(qt,{color:"inherit",size:"small",onClick:()=>r(n),children:"View"}):void 0,children:e?.message})})}var d0e=L(ge(),1);function R0r(e){let t=["claude"];return e.exposeCodexActions&&t.push("codex"),e.exposePiActions&&t.push("pi"),t}var H0r=L(ge(),1);var A0r=L(z(),1),P0r=ft((0,A0r.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2"}),"Circle");var O_="0.791.0";var EVn={connected:"success.main",connecting:"warning.main",disconnected:"error.main","version-blocked":"error.main"};function L0r(e){return e?EVn[e]:"success.main"}function M0r(e){return e.split("-")[0].split(".").map(Number)}function I0r(e,t){if(!e||!t||e===t)return;let r=M0r(e),n=M0r(t);for(let i=0;i<Math.max(r.length,n.length);i++){let o=(r[i]??0)-(n[i]??0);if(Number.isNaN(o))return;if(o!==0)return o<0?"behind":"ahead"}}var l0e=L(ge(),1),j$e=(0,l0e.createContext)(null);function c0e(){return(0,l0e.useContext)(j$e)}var RR=L(z(),1),RVn={height:16,fontSize:10},AVn={opacity:.6,fontSize:"0.85em"};function PVn(e,t){if(t===e.local)return"this machine";let r=e.links.find(n=>n.name===t);return r?r.error?`${r.state}: ${r.error}`:r.state:""}function xY({nodes:e,name:t,showVersion:r=!1}){let n=c0e()??O_,i=e.links.find(a=>a.name===t),o=I0r(i?.peerVersion,n);return(0,RR.jsx)(lr,{title:PVn(e,t),placement:"right",children:(0,RR.jsxs)(ue,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[(0,RR.jsx)(P0r,{sx:{fontSize:8,color:L0r(i?.state)}}),t,r&&i?.peerVersion&&(0,RR.jsxs)(ue,{component:"span",sx:AVn,children:["v",i.peerVersion]}),o&&(0,RR.jsx)(sn,{label:o,size:"small",color:o==="behind"?"warning":"info",sx:RVn})]})})}var AR=L(z(),1),LVn={opacity:.6},MVn={display:"inline-flex",alignItems:"center",gap:.5,px:.5,border:1,borderStyle:"dashed",borderRadius:1};function D0r({nodes:e,name:t,clone:r}){let n=(0,AR.jsx)(xY,{nodes:e,name:t});return r.kind==="cloned"?n:r.kind==="unavailable"?(0,AR.jsx)(ue,{component:"span",sx:LVn,children:n}):(0,AR.jsx)(lr,{title:oB(t,r.cloneTarget),children:(0,AR.jsxs)(ue,{component:"span",sx:MVn,children:[(0,AR.jsx)(iB,{sx:{fontSize:14}}),n]})})}var O0r=L(z(),1),IVn={px:1.5,borderRadius:.75,fontSize:12,fontWeight:600,color:"text.secondary","&:hover":{color:"text.primary",bgcolor:"action.hover"},"&[aria-checked='true']":{color:"primary.main",bgcolor:"action.selected"},"&.Mui-focusVisible":{outline:2,outlineColor:"primary.main"}};function N0r({value:e,label:t,checked:r,autoFocus:n,onSelect:i}){return(0,O0r.jsx)(Dn,{role:"radio","aria-checked":r,"data-value":e,tabIndex:r?0:-1,autoFocus:n&&r,onClick:i,sx:IVn,children:t})}var B0r={ArrowRight:1,ArrowLeft:-1};function DVn(e,t,r){if(e.key==="Tab"){let n=t+(e.shiftKey?-1:1);return n>=0&&n<r?n:void 0}return(t+B0r[e.key]+r)%r}function F0r(e,t,r,n){return i=>{if(i.key==="ArrowUp"||i.key==="ArrowDown"){if(!n)return;i.preventDefault(),n();return}if(i.key!=="Tab"&&!B0r[i.key]){cb(i);return}let o=DVn(i,e.indexOf(t),e.length);o!==void 0&&(i.preventDefault(),r(e[o]),i.currentTarget.querySelector(`[data-value="${e[o]}"]`)?.focus())}}var $0r=L(ge(),1);function vB(e){return e?.querySelector('[aria-checked="true"]')}function z0r(e,t){(0,$0r.useEffect)(()=>{let r=e.current;if(!r?.contains(document.activeElement))return;let n=vB(r);n&&n!==document.activeElement&&n.focus()},[e,t])}var Y$e=L(z(),1),NVn={border:1,borderColor:"divider",borderRadius:1,height:40,p:"2px",flexShrink:0};function u0e({label:e,options:t,value:r,onChange:n,optionLabel:i=u=>u,groupRef:o,autoFocus:a,onTrack:s,onToggleRow:l}){return z0r(o,r),(0,Y$e.jsx)(Rt,{ref:o,direction:"row",role:"radiogroup","aria-label":e,spacing:"2px",onFocus:s,onKeyDown:F0r(t,r,n,l),sx:NVn,children:t.map(u=>(0,Y$e.jsx)(N0r,{value:u,label:i(u),checked:u===r,autoFocus:a,onSelect:()=>n(u)},u))})}var K$e=L(z(),1);function U0r({value:e,onChange:t,cloneState:r}){let{nodes:n,names:i,visible:o}=Ou(),a=(0,H0r.useRef)(null);return!o||!n||!e?null:(0,K$e.jsx)(u0e,{label:"Machine",options:i,value:e,onChange:t,optionLabel:s=>(0,K$e.jsx)(D0r,{nodes:n,name:s,clone:r(s)}),groupRef:a,autoFocus:!1,onTrack:()=>{}})}var V0r=L(z(),1);function W0r({value:e,onChange:t,placeholder:r,inputRef:n,autoFocus:i,onTrack:o}){return(0,V0r.jsx)(ni,{value:e,onChange:a=>t(a.target.value),onKeyDown:cb,onFocus:o,onSelect:o,inputRef:n,placeholder:r,autoFocus:i,fullWidth:!0,multiline:!0,minRows:3,maxRows:12,slotProps:{htmlInput:{"aria-label":"Prompt"},input:{sx:{fontSize:14}}}})}var Y0r=L(ge(),1);var N2={draft:{placeholder:"Describe the backlog item to draft...",submitLabel:"Start draft",sessionMode:"assist-draft"},bug:{placeholder:"Describe the bug: what happened, what you expected...",submitLabel:"File bug",sessionMode:"assist-bug"},prompt:{placeholder:Fee,submitLabel:"Start session"},design:{placeholder:"Describe the design task...",submitLabel:"Start design"}},G0r=Object.keys(N2);var X$e=L(z(),1);function q0r({anchor:e,harness:t,harnesses:r,onPick:n,onClose:i}){return(0,X$e.jsx)(Dl,{open:e!==null,anchorEl:e,onClose:i,slotProps:{list:{dense:!0,"aria-label":"Harness"}},children:r.map(o=>(0,X$e.jsx)(fn,{role:"menuitemradio","aria-checked":o===t,selected:o===t,onClick:()=>{n(o),i()},sx:{fontSize:13},children:gu(o)},o))})}var PR=L(z(),1);function j0r(e){return t=>t==="prompt"&&e?(0,PR.jsxs)(PR.Fragment,{children:["prompt",(0,PR.jsx)(ue,{component:"span",sx:{fontWeight:400,whiteSpace:"pre"},children:` \xB7 ${gu(e)}`}),(0,PR.jsx)(Up,{sx:{fontSize:18,mr:-.75}})]}):t}var LR=L(z(),1);function K0r({draft:e,harness:t,harnesses:r,focus:n}){let[i,o]=(0,Y0r.useState)(null),a=e.mode==="prompt"&&r.length>1,s=()=>o(vB(n.modeRef.current)??null),l=u=>{a&&u==="prompt"?s():e.setMode(u)};return(0,LR.jsxs)(LR.Fragment,{children:[(0,LR.jsx)(u0e,{label:"Mode",options:G0r,value:e.mode,onChange:l,optionLabel:j0r(r.length>1?t:void 0),groupRef:n.modeRef,autoFocus:n.autoFocus==="mode",onTrack:n.trackMode,onToggleRow:a?s:void 0}),(0,LR.jsx)(q0r,{anchor:i,harness:t,harnesses:r,onPick:e.setHarness,onClose:()=>o(null)})]})}var ayr=L(ge(),1);var Z$e=L(z(),1),OVn={zIndex:e=>e.zIndex.modal+1};function X0r({open:e,anchor:t,children:r}){return(0,Z$e.jsx)(BA,{open:e,anchorEl:t,placement:"bottom-start",sx:OVn,children:(0,Z$e.jsx)(an,{sx:{maxHeight:240,overflowY:"auto",width:t?.clientWidth},onMouseDown:n=>n.preventDefault(),children:r})})}function Z0r(e){return{htmlInput:{role:"combobox","aria-label":"Repo","aria-expanded":e},input:{sx:{fontSize:13,height:40}}}}var Q0r=L(lF(),1);function J0r({open:e,highlighted:t,accept:r,close:n,navigate:i,openList:o}){return a=>{if(!e){if(a.key==="ArrowDown"){a.preventDefault(),o();return}cb(a);return}if(a.key!=="Escape"){if(a.key==="Enter"){if(a.preventDefault(),t===void 0)return;(0,Q0r.flushSync)(()=>{r(t),n()}),cb(a);return}if(a.key!=="Tab"){i(a);return}t!==void 0&&r(t),n()}}}function eyr(e,t){let r=t.trim().toLowerCase();return r?e.filter(n=>X1(n).toLowerCase().includes(r)):e}var Q$e=L(ge(),1);function tyr(){let[e,t]=(0,Q$e.useState)(!1),[r,n]=(0,Q$e.useState)("");return{open:e,query:r,show:()=>t(!0),filterBy:i=>{n(i),t(!0)},close:()=>{t(!1),n("")}}}var nyr=L(ge(),1);var ryr=e=>e?X1(e):"";function iyr(e){let[t,r]=(0,nyr.useState)(()=>ryr(e));return{text:t,setText:r,showRepo:n=>r(ryr(n))}}function oyr(e,t,r){let n=tyr(),i=iyr(t),o=eyr(e,n.query),a=f=>{r(f),i.showRepo(f)},s=E_(o,n.query,a,n.close),l=()=>s.setHighlight(Math.max(e.indexOf(t),0)),u=()=>{l(),n.show()};return{open:n.open,text:i.text,filtered:o,highlight:s.highlight,setHighlight:s.setHighlight,onKeyDown:J0r({open:n.open,highlighted:o[s.highlight],accept:a,close:n.close,navigate:s.onKeyDown,openList:u}),onClick:()=>{n.open||u()},onType:f=>{i.setText(f),n.filterBy(f)},onFocus:l,onBlur:()=>{n.close(),i.showRepo(t)},pick:f=>{a(f),n.close()}}}var bB=L(z(),1);function syr({repos:e,value:t,onChange:r,inputRef:n,autoFocus:i,onTrack:o}){let a=oyr(e,t,r),s=(0,ayr.useRef)(null);return(0,bB.jsxs)(ue,{ref:s,sx:{flex:1,minWidth:0},children:[(0,bB.jsx)(ni,{value:a.text,onChange:l=>a.onType(l.target.value),onFocus:l=>{l.target.select(),a.onFocus(),o()},inputRef:n,autoFocus:i,onClick:a.onClick,onBlur:a.onBlur,onKeyDown:a.onKeyDown,placeholder:"Repo",size:"small",fullWidth:!0,slotProps:Z0r(a.open)}),(0,bB.jsx)(X0r,{open:a.open,anchor:s.current,children:(0,bB.jsx)($ge,{repos:a.filtered,selected:t,highlight:a.highlight,onHighlight:a.setHighlight,onSelect:a.pick})})]})}var B_=L(z(),1);function lyr({cloneState:e,...t}){let{draft:r,focus:n}=t,{repos:i}=$n();return(0,B_.jsxs)(Rt,{spacing:1,sx:{p:1},children:[(0,B_.jsx)(W0r,{value:r.prompt,onChange:r.setPrompt,placeholder:N2[r.mode].placeholder,inputRef:n.promptRef,autoFocus:n.autoFocus==="prompt",onTrack:n.trackPrompt}),(0,B_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[(0,B_.jsx)(syr,{repos:i,value:r.cwd,onChange:r.setCwd,inputRef:n.repoRef,autoFocus:n.autoFocus==="repo",onTrack:n.trackRepo}),(0,B_.jsx)(K0r,{...t})]}),(0,B_.jsx)(U0r,{value:r.node,onChange:r.setNode,cloneState:e})]})}var xB=L(z(),1),BVn=["Enter start","Shift+Enter newline","Esc close"],FVn={alignItems:"center",px:1.5,py:1,borderTop:1,borderColor:"divider",bgcolor:"action.hover"};function cyr({submitLabel:e,disabled:t=!1}){return(0,xB.jsxs)(Rt,{direction:"row",spacing:1.5,sx:FVn,children:[(0,xB.jsx)(Rt,{direction:"row",spacing:1.5,sx:{mr:"auto"},children:BVn.map(r=>(0,xB.jsx)(Fe,{variant:"caption",color:"text.secondary",children:r},r))}),(0,xB.jsx)(qt,{type:"submit",variant:"contained",size:"small",disabled:t,children:e})]})}function uyr({mode:e,harness:t,prompt:r,cwd:n,node:i},o){let a=n||void 0,s=i?[i]:[];if(e==="prompt"){t==="claude"?o.onCreate(r,a,...s):o.onCreateHarness(t,r,a,...s);return}if(e==="design"){o.onCreateDesign(r,a,...s);return}let l=i?[{node:i}]:[];pnt(N2[e].sessionMode,n,(u,f)=>o.onCreateAssist(u,f,...l),()=>{},r)}function fyr(e,t,r,n){return r.kind==="blocked"?!1:r.kind==="clone"?(Lge(r.prompt,n.onCreateAssist),!0):(uyr({mode:e.mode,harness:t,prompt:e.prompt,cwd:r.cwd,node:e.node},n),e.clear(),!0)}var MR=L(ge(),1);function dyr(e,t){let r=(0,MR.useRef)(e),n=(0,MR.useRef)(null),i=(0,MR.useRef)(null),o=(0,MR.useRef)(null),a=(0,MR.useCallback)(u=>{n.current=u;let{field:f,selectionStart:d,selectionEnd:h}=r.current;u&&f==="prompt"&&u.setSelectionRange(d,h)},[]),s=u=>{let f=u.target;t({field:"prompt",selectionStart:f.selectionStart,selectionEnd:f.selectionEnd})},l=()=>{if(o.current?.closest("form")?.contains(document.activeElement))return;let{field:u}=r.current;({repo:i.current,mode:vB(o.current),prompt:n.current}[u]??n.current)?.focus()};return{autoFocus:e.field,promptRef:a,repoRef:i,modeRef:o,trackPrompt:s,trackRepo:()=>t({...e,field:"repo"}),trackMode:()=>t({...e,field:"mode"}),restore:l}}function $Vn(e,t,r){return e?r.kind==="cloned"?{kind:"launch",cwd:r.cwd}:r.kind==="clonable"?{kind:"clone",prompt:Hge(r,t)}:{kind:"blocked"}:{kind:"launch",cwd:e}}function hyr(e,t){let{names:r,visible:n}=Ou(),i=Oge(t,n?r:[void 0]);return{cloneState:i,target:$Vn(t,e,i(e))}}var TB=L(z(),1);function pyr({draft:e,launchers:t,onClose:r}){let n=dyr(e.focus,e.setFocus),i=R0r(C_()),o=i.includes(e.harness)?e.harness:"claude",{target:a,cloneState:s}=hyr(e.node,e.cwd),l=u=>{u.preventDefault(),fyr(e,o,a,t)&&r()};return(0,TB.jsx)(n0e,{onClose:r,onEntered:n.restore,centered:!0,children:(0,TB.jsxs)("form",{onSubmit:l,children:[(0,TB.jsx)(lyr,{draft:e,harness:o,harnesses:i,focus:n,cloneState:s}),(0,TB.jsx)(cyr,{submitLabel:a.kind==="clone"?"Clone":N2[e.mode].submitLabel,disabled:a.kind==="blocked"})]})})}var f0e=L(ge(),1);function myr(e){let[t,r]=(0,f0e.useState)(null);return(0,f0e.useEffect)(()=>{let n=!1;return(async()=>{let i="draft";try{let o=e?`?cwd=${encodeURIComponent(e)}`:"",s=await(await fetch(`/api/new-session-defaults${o}`)).json();Object.hasOwn(N2,s?.mode)&&(i=s.mode)}catch{}n||r(i)})(),()=>{n=!0}},[e]),t}function gyr(e,{visible:t,names:r,selected:n}){if(t)return e&&r.includes(e)?e:n}var O2=L(ge(),1),yyr={field:"prompt",selectionStart:0,selectionEnd:0};function vyr(){let[e,t]=(0,O2.useState)(""),[r,n]=(0,O2.useState)(),[i,o]=(0,O2.useState)(),[a,s]=(0,O2.useState)("claude"),[l,u]=(0,O2.useState)(),[f,d]=(0,O2.useState)(yyr),h=(0,O2.useCallback)(()=>{t(""),n(void 0),o(void 0),u(void 0),d(yyr)},[]);return{prompt:e,cwd:r,mode:i,harness:a,node:l,focus:f,setPrompt:t,setNode:u,setCwd:n,setMode:o,setHarness:s,setFocus:d,clear:h}}function byr(e=myr){let{selectedCwd:t}=$n(),r=Ou(),n=vyr(),i=n.cwd??t,o=e(i);return o?{...n,cwd:i,mode:n.mode??o,node:gyr(n.node,r)}:null}function xyr(e){Do(Yn("newSession").matches,e)}var Tyr=L(ge(),1);function Syr(e,t){let{selectedCwd:r}=$n(),[n,i]=Pc(),o=n.get("new"),a=n.get("newCwd")??r,{setPrompt:s,setCwd:l,setFocus:u}=e??{};(0,Tyr.useEffect)(()=>{o===null||!s||!l||!u||(o&&(s(o),l(a),u({field:"prompt",selectionStart:o.length,selectionEnd:o.length})),t(),i(f=>(f.delete("new"),f.delete("newCwd"),f),{replace:!0}))},[o,a,s,l,u,t,i])}var wyr=L(z(),1);function Cyr({launchers:e}){let[t,r]=(0,d0e.useState)(!1),n=byr(),i=(0,d0e.useCallback)(()=>r(!0),[]);return xyr(i),Syr(n,i),!t||!n?null:(0,wyr.jsx)(pyr,{draft:n,launchers:e,onClose:()=>r(!1)})}var h0e=L(z(),1);function _yr({reconnecting:e}){return(0,h0e.jsx)(ol,{open:e,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,h0e.jsx)(ri,{severity:"info",variant:"filled",icon:(0,h0e.jsx)(mo,{size:16,color:"inherit"}),children:"Reconnecting\u2026"})})}var tv=L(z(),1);function kyr({socket:e,onViewLaunchedSession:t}){return(0,tv.jsxs)(tv.Fragment,{children:[(0,tv.jsx)(_0r,{}),(0,tv.jsx)(Cyr,{launchers:{onCreate:e.createSession,onCreateDesign:e.createDesignSession,onCreateHarness:e.createHarnessSession,onCreateAssist:e.createAssistSession}}),(0,tv.jsx)(_yr,{reconnecting:e.reconnecting}),(0,tv.jsx)(vu,{error:e.error,onClose:e.clearError}),(0,tv.jsx)(E0r,{notice:e.success,onClose:e.clearSuccess,onView:t})]})}var c0=L(ge(),1);var zVn=6e4;function Eyr(e){let t=e.nodes?.local,r=e.names.join(`
3977
3977
  `),[n,i]=(0,c0.useState)([]),[o,a]=(0,c0.useState)(!0),s=(0,c0.useRef)(0),l=(0,c0.useCallback)(()=>{let u=r?r.split(`
3978
3978
  `):[];if(u.length===0)return;let f=++s.current;Promise.all(u.map(d=>uge(d,d===t))).then(d=>{f===s.current&&(i(d),a(!1))})},[r,t]);return(0,c0.useEffect)(()=>{l();let u=setInterval(l,zVn);return()=>clearInterval(u)},[l]),(0,c0.useMemo)(()=>({entries:n,loading:o,refresh:l}),[n,o,l])}var F_=L(z(),1);function Ryr({shell:e,children:t}){let{socket:r,selection:n,launch:i,topBar:o,sidebarCollapse:a}=e,s=Eyr(r.nodeSelection);return(0,F_.jsx)(b$e.Provider,{value:s,children:(0,F_.jsx)(U2e.Provider,{value:o,children:(0,F_.jsx)(PTe.Provider,{value:a,children:(0,F_.jsx)(bz.Provider,{value:n,children:(0,F_.jsx)(O$e.Provider,{value:r.nodeSelection,children:(0,F_.jsx)(Ku.Provider,{value:n.selectedNode,children:(0,F_.jsx)(oTe.Provider,{value:i,children:t})})})})})})})}var Ayr=L(z(),1),Pyr=ft((0,Ayr.jsx)("path",{d:"M20 18c1.1 0 1.99-.9 1.99-2L22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2H0v2h24v-2zM4 6h16v10H4z"}),"Computer");var Lyr=L(ge(),1);var u0=L(z(),1),HVn={ml:1,textTransform:"none",fontSize:12};function Myr(){let{nodes:e,names:t,visible:r,selected:n,select:i}=Ou(),[o,a]=(0,Lyr.useState)(null);return!r||!e||!n?null:(0,u0.jsxs)(u0.Fragment,{children:[(0,u0.jsx)(qt,{size:"small",color:"inherit",startIcon:(0,u0.jsx)(Pyr,{fontSize:"small"}),"aria-label":"Machine","aria-haspopup":"menu",onClick:s=>a(s.currentTarget),sx:HVn,children:(0,u0.jsx)(xY,{nodes:e,name:n})}),(0,u0.jsx)(Dl,{anchorEl:o,open:!!o,onClose:()=>a(null),children:t.map(s=>(0,u0.jsx)(fn,{selected:s===n,onClick:()=>{i(s),a(null)},sx:{fontSize:13},children:(0,u0.jsx)(xY,{nodes:e,name:s,showVersion:!0})},s))})]})}var TY=L(ge(),1);function Iyr(e,t){return[...e[0].slice(0,-1),String(t+1)]}var p0e=L(z(),1);function Dyr({index:e,label:t,...r}){let{chords:n}=Yn("navTab");return(0,p0e.jsx)(lr,{describeChild:!0,title:(0,p0e.jsx)(Jf,{label:t,chords:[Iyr(n,e)]}),children:(0,p0e.jsx)(kv,{label:t,...r})})}var J$e=L(ge(),1);function Nyr(e,t){let{bound:r}=Yn("navTab"),n=e.length,i=(0,J$e.useCallback)(a=>(kz(a,r)??n)<n,[r,n]),o=(0,J$e.useCallback)(a=>{let s=e[kz(a,r)??-1];s&&t(s)},[e,t,r]);Do(i,o)}var m0e=L(ge(),1);function Oyr(){let[e,t]=(0,m0e.useState)(!1);return(0,m0e.useEffect)(()=>{let r=!1;return(async()=>{try{let i=await(await fetch("/api/news/nav")).json();r||t(i?.showInNav===!0)}catch{r||t(!1)}})(),()=>{r=!0}},[]),e}var g0e=L(ge(),1);async function UVn(e,t){let r=await fetch(tn(`/api/releases/configured?cwd=${encodeURIComponent(e)}`,t));return r.ok?(await r.json())?.configured===!0:void 0}function Byr(e){let[t,r]=(0,g0e.useState)(null),n=yr(),i=`${n??""}\0${e}`;return(0,g0e.useEffect)(()=>{if(!e)return;let o=!1;return UVn(e,n).catch(()=>{}).then(a=>{o||r({key:i,configured:a})}),()=>{o=!0}},[e,n,i]),t?.key===i?t.configured:void 0}var Fyr=L(ge(),1);function $yr(e){let{pathname:t}=Io(),r=Xi(),n=t==="/releases"||t.startsWith("/releases/");(0,Fyr.useEffect)(()=>{e===!1&&n&&r("/sessions",{replace:!0})},[e,n,r])}var WVn={path:"/sessions",label:"Sessions"},VVn={path:"/backlog",label:"Backlog"},GVn={path:"/next",label:"Next"},qVn={path:"/releases",label:"Releases"},jVn={path:"/news",label:"News"};function zyr(e,t){return[WVn,VVn,GVn,...e?[qVn]:[],...t?[jVn]:[]]}var eze=L(z(),1);function Hyr({cwd:e}){let t=Io(),r=Xi(),n=Byr(e),i=Oyr();$yr(n);let o=n===!0,a=(0,TY.useMemo)(()=>zyr(o,i),[o,i]),s=(0,TY.useMemo)(()=>a.map(f=>f.path),[a]),l=a.findIndex(f=>t.pathname.startsWith(f.path)),u=(0,TY.useCallback)(f=>{t.pathname!==f&&r(f)},[t.pathname,r]);return Nyr(s,u),(0,eze.jsx)(zk,{value:l===-1?!1:l,textColor:"inherit",indicatorColor:"secondary",children:a.map((f,d)=>(0,eze.jsx)(Dyr,{index:d,label:f.label,onClick:()=>u(f.path)},f.path))})}var Uyr=L(z(),1),Wyr=ft((0,Uyr.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m5 11h-4v4h-2v-4H7v-2h4V7h2v4h4z"}),"AddCircle");var SY=L(z(),1),YVn={color:"success.light"};function Vyr(){let[,e]=Pc(),{label:t,chords:r}=Yn("newSession");return(0,SY.jsx)(lr,{title:(0,SY.jsx)(Jf,{label:t,chords:r}),children:(0,SY.jsx)(or,{size:"small",sx:YVn,"aria-label":"New session",onClick:()=>e(i=>(i.set("new",""),i),{replace:!0}),children:(0,SY.jsx)(Wyr,{})})})}var v0e=L(ge(),1);var y0e=L(z(),1),KVn={color:"inherit"};function Gyr({cwd:e}){let[t,r]=(0,v0e.useState)(null),n=yr();return(0,v0e.useEffect)(()=>{if(!e){r(null);return}let i=!1;return(async()=>{try{let a=await(await fetch(tn(`/api/github-url?cwd=${encodeURIComponent(e)}`,n))).json();i||r(a?.url??null)}catch{i||r(null)}})(),()=>{i=!0}},[e,n]),t?(0,y0e.jsx)(lr,{title:"Open in GitHub",children:(0,y0e.jsx)(or,{sx:KVn,onClick:()=>window.open(t,"_blank"),children:(0,y0e.jsx)(aP,{})})}):null}var Yyr=L(ge(),1);var jyr=L(ge(),1);var b0e=L(z(),1);function qyr({window:e,windowSeconds:t,fallbackLabel:r,now:n}){let i=e?.used_percentage;if(i==null)return null;let o=b_(i,e?.resets_at,t,n),a=e?.resets_at!=null?vge(e.resets_at,n):r;return(0,b0e.jsxs)(ue,{component:"span",children:[(0,b0e.jsxs)(ue,{component:"span",sx:{color:x_(o)},children:[Math.round(i),"%"]})," ",(0,b0e.jsxs)(ue,{component:"span",sx:{color:"text.secondary"},children:["(",a,")"]})]})}var $_=L(z(),1);function x0e({rateLimits:e}){let t=T_(3e4),r=[{window:e.five_hour,windowSeconds:18e3,fallbackLabel:"5h"},{window:e.seven_day,windowSeconds:604800,fallbackLabel:"7d"}].filter(n=>n.window?.used_percentage!=null);return(0,$_.jsx)($_.Fragment,{children:r.map((n,i)=>(0,$_.jsxs)(jyr.Fragment,{children:[i>0?(0,$_.jsx)(ue,{component:"span",sx:{color:"text.secondary",mr:.5},children:","}):null,(0,$_.jsx)(qyr,{window:n.window,windowSeconds:n.windowSeconds,fallbackLabel:n.fallbackLabel,now:t})]},n.fallbackLabel))})}var z_=L(z(),1);function Kyr({groups:e}){return(0,z_.jsx)(z_.Fragment,{children:e.map((t,r)=>(0,z_.jsxs)(Yyr.Fragment,{children:[(0,z_.jsx)(ue,{component:"span",sx:{color:"text.secondary",ml:r>0?1:0,mr:.5},children:gu(t.harness)}),(0,z_.jsx)(x0e,{rateLimits:t.rateLimits})]},t.harness))})}function XVn(e){if(e==="over")return{level:"warn",boundary:100};if(e==="warn")return{level:"ok",boundary:75}}function ZVn(e){if(e==="ok")return{level:"warn",boundary:75};if(e==="warn")return{level:"over",boundary:100}}function QVn(e,t,r,n){if(e>=t)return;let i=e/t;return Math.round(r-n*(1-i))}function Qyr(e,t,r,n){if(t==null)return{kind:"unprojectable"};let i=R$e(t,r,n);if(i==null)return{kind:"unprojectable"};let o=b_(e,t,r,n),a=XVn(o),s=ZVn(o);return{kind:"projected",recovery:a&&{level:a.level,pct:a.boundary*i,at:QVn(e,a.boundary,t,r)},worse:s&&{level:s.level,pct:s.boundary*i}}}function Jyr(e,t){return e.at==null?"not before reset":`${e.level==="ok"?"green":"under"} in ${vge(e.at,t)}`}var f0=L(z(),1);function tze({direction:e,threshold:t}){let r=e==="back",n={display:"inline-flex",gap:.5,minWidth:"6ch",justifyContent:r?"flex-end":"flex-start"};if(!t)return(0,f0.jsx)(ue,{component:"span",sx:n});let i=(0,f0.jsx)(ue,{component:"span",sx:{opacity:.6},children:r?"\u2190":"\u2192"}),o=(0,f0.jsxs)(ue,{component:"span",sx:{color:x_(t.level)},children:[Math.round(t.pct),"%"]});return(0,f0.jsx)(ue,{component:"span",sx:n,children:r?(0,f0.jsxs)(f0.Fragment,{children:[o,i]}):(0,f0.jsxs)(f0.Fragment,{children:[i,o]})})}var H_=L(z(),1);function e1r({label:e,pct:t,resetsAt:r,windowSeconds:n,now:i}){let o=b_(t,r,n,i),a=Qyr(t,r,n,i),s=a.kind==="projected"?a:void 0;return(0,H_.jsxs)(ue,{sx:{display:"flex",alignItems:"baseline",gap:.75},children:[(0,H_.jsx)(ue,{component:"span",sx:{minWidth:"2ch"},children:e}),(0,H_.jsx)(tze,{direction:"back",threshold:s?.recovery}),(0,H_.jsxs)(ue,{component:"span",sx:{minWidth:"4ch",textAlign:"right",color:x_(o)},children:[Math.round(t),"%"]}),(0,H_.jsx)(tze,{direction:"forward",threshold:s?.worse}),(0,H_.jsx)(ue,{component:"span",sx:{opacity:.6},children:s?s.recovery&&Jyr(s.recovery,i):"no projection yet"})]})}function t1r(e){return[{label:"5h",window:e.five_hour,windowSeconds:18e3},{label:"7d",window:e.seven_day,windowSeconds:604800}].flatMap(t=>t.window?.used_percentage==null?[]:[{label:t.label,pct:t.window.used_percentage,resetsAt:t.window.resets_at,windowSeconds:t.windowSeconds}])}var r1r=L(z(),1);function T0e({rateLimits:e,now:t}){return t1r(e).map(r=>(0,r1r.jsx)(e1r,{label:r.label,pct:r.pct,resetsAt:r.resetsAt,windowSeconds:r.windowSeconds,now:t},r.label))}var IR=L(z(),1);function n1r({groups:e}){let t=T_(3e4);return(0,IR.jsxs)(ue,{sx:{fontFamily:"monospace",fontSize:12},children:[e.map(r=>(0,IR.jsxs)(ue,{sx:{mb:.5},children:[(0,IR.jsx)(ue,{sx:{opacity:.8},children:gu(r.harness)}),(0,IR.jsx)(T0e,{rateLimits:r.rateLimits,now:t})]},r.harness)),(0,IR.jsx)(ue,{sx:{mt:.5,opacity:.6},children:"Account usage per harness \u2014 view history"})]})}function i1r(e){return e?.five_hour?.used_percentage!=null||e?.seven_day?.used_percentage!=null}function o1r(e,t){let r=[];i1r(e)&&r.push({harness:"claude",rateLimits:e});for(let[n,i]of Object.entries(t))i1r(i)&&r.push({harness:n,rateLimits:i});return r}var CY=L(z(),1),rze="Claude account usage (5h / 7d windows) \u2014 view history";function a1r({rateLimits:e}){let t=T_(3e4);return(0,CY.jsxs)(ue,{sx:{fontFamily:"monospace",fontSize:12},children:[(0,CY.jsx)(T0e,{rateLimits:e,now:t}),(0,CY.jsx)(ue,{sx:{mt:.5,opacity:.6},children:rze})]})}var DR=L(z(),1),JVn={display:"flex",alignItems:"center",ml:2,fontFamily:"monospace",fontSize:13},eGn={};function s1r({rateLimits:e,harnessRateLimits:t=eGn}){let r=o1r(e,t),n=r.every(s=>s.harness==="claude"),i=e,o=rze,a="Usage";return r.length>0&&n?(o=(0,DR.jsx)(a1r,{rateLimits:i}),a=(0,DR.jsx)(x0e,{rateLimits:i})):r.length>0&&(o=(0,DR.jsx)(n1r,{groups:r}),a=(0,DR.jsx)(Kyr,{groups:r})),(0,DR.jsx)(lr,{title:o,children:(0,DR.jsx)(xn,{component:ys,to:"/usage",underline:"hover",color:"inherit",sx:JVn,children:a})})}var d0=L(z(),1),tGn={color:"inherit",mr:1.5};function l1r({reconnecting:e}){let{pending:t,error:r,clearError:n,restart:i}=v_("webserver",e);return(0,d0.jsxs)(d0.Fragment,{children:[(0,d0.jsx)(lr,{title:"Restart web server",children:(0,d0.jsx)("span",{children:(0,d0.jsx)(or,{sx:tGn,disabled:t,onClick:i,children:t?(0,d0.jsx)(mo,{size:24}):(0,d0.jsx)(lge,{})})})}),(0,d0.jsx)(vu,{error:r,onClose:n})]})}var f1r=L(ge(),1);var c1r=L(ge(),1);function u1r(e){let t=Oi().palette.primary.main;Do(Yn("focusRepoPicker").matches,(0,c1r.useCallback)(()=>bu({locate:()=>e.current?.querySelector("button")??null,focus:r=>r.focus()},t),[e,t]))}var wY=L(z(),1),rGn={width:240,ml:2};function d1r({repos:e,selected:t,onSelect:r}){let n=(0,f1r.useRef)(null);u1r(n);let{chords:i}=Yn("focusRepoPicker");return(0,wY.jsx)(ue,{ref:n,sx:rGn,children:(0,wY.jsx)(zee,{label:t?X1(t):"Select repo...",tooltip:(0,wY.jsx)(Jf,{label:"Repo",chords:i}),children:o=>(0,wY.jsx)(hmr,{repos:e,selected:t,onSelect:r,close:o})})})}var S1r=L(ge(),1);var _Y=L(ge(),1);function S0e(e){let[t,r]=(0,_Y.useState)([]),[n,i]=(0,_Y.useState)(!0),o=yr();return(0,_Y.useEffect)(()=>{if(!e){r([]),i(!1);return}let a=!1;return i(!0),fetch(tn(`/api/pr-list?cwd=${encodeURIComponent(e)}`,o)).then(s=>s.json()).then(s=>{a||(r(Array.isArray(s?.prs)?s.prs:[]),i(!1))}).catch(()=>{a||(r([]),i(!1))}),()=>{a=!0}},[e,o]),{prs:t,loading:n}}var nze=L(z(),1);function ize({text:e}){return(0,nze.jsx)(ue,{sx:{p:1.5},children:(0,nze.jsx)(Fe,{sx:{fontSize:13,color:"text.secondary"},children:e})})}var NR=L(z(),1);function h1r({pr:e,highlighted:t,onHover:r,onPick:n}){let i=Fge(t);return(0,NR.jsx)(fn,{ref:i,selected:t,onMouseDown:o=>o.preventDefault(),onMouseEnter:r,onClick:()=>n(e),sx:{alignItems:"flex-start",py:.75,whiteSpace:"normal"},children:(0,NR.jsxs)(Rt,{spacing:.25,sx:{minWidth:0},children:[(0,NR.jsxs)(Fe,{sx:{fontSize:13,lineHeight:1.3,fontWeight:500},children:[e.title,e.isDraft&&(0,NR.jsx)(sn,{label:"Draft",size:"small",variant:"outlined",sx:{ml:.75,height:18,fontSize:10,verticalAlign:"middle"}})]}),(0,NR.jsxs)(Fe,{sx:{fontSize:11,color:"text.secondary"},children:["#",e.number," \xB7 ",e.author," \xB7 ",fa(e.createdAt)]})]})})}var oze=L(z(),1);function p1r({prs:e,highlight:t,onHighlight:r,onPick:n}){return(0,oze.jsx)(Cp,{dense:!0,disablePadding:!0,sx:{maxHeight:200,overflowY:"auto"},children:e.map((i,o)=>(0,oze.jsx)(h1r,{pr:i,highlighted:o===t,onHover:()=>r(o),onPick:n},i.number))})}var g1r=L(ge(),1);function m1r(e,t){let r=t.trim().toLowerCase();if(!r)return e;let n=r.replace(/^#/,"");return e.filter(i=>i.title.toLowerCase().includes(r)||i.author.toLowerCase().includes(r)||n!==""&&String(i.number).includes(n))}function y1r(e,t,r){let[n,i]=(0,g1r.useState)(""),o=m1r(e,n),{highlight:a,setHighlight:s,onKeyDown:l}=E_(o,n,t,r);return{filter:n,setFilter:i,filtered:o,highlight:a,setHighlight:s,onKeyDown:l,select:f=>{t(f),r()}}}var U_=L(z(),1),v1r={...MP,left:"auto",width:320,maxHeight:"none",overflowY:"visible"};function b1r({cwd:e,onPick:t,close:r}){let{prs:n,loading:i}=S0e(e),o=y1r(n,t,r);return i||n.length===0?(0,U_.jsx)(an,{elevation:4,sx:v1r,children:(0,U_.jsx)(ize,{text:i?"Loading open PRs\u2026":"No open PRs"})}):(0,U_.jsxs)(an,{elevation:4,sx:v1r,children:[(0,U_.jsx)(aB,{autoFocus:!0,value:o.filter,onChange:o.setFilter,onKeyDown:o.onKeyDown,placeholder:"Filter PRs..."}),o.filtered.length===0?(0,U_.jsx)(ize,{text:"No PRs match"}):(0,U_.jsx)(p1r,{prs:o.filtered,highlight:o.highlight,onHighlight:o.setHighlight,onPick:o.select})]})}var T1r=L(z(),1);function x1r({cwd:e,onPick:t,close:r}){return(0,T1r.jsx)(b1r,{cwd:e,onPick:t,close:r})}var W_=L(z(),1);function C1r({cwd:e,disabled:t,onSelect:r}){let{prs:n,loading:i}=S0e(e),[o,a]=(0,S1r.useState)(null);return i||n.length===0?null:(0,W_.jsxs)(W_.Fragment,{children:[(0,W_.jsx)(zee,{label:"prs",disabled:t,children:s=>(0,W_.jsx)(x1r,{cwd:e,onPick:a,close:s})}),o&&(0,W_.jsx)(_pe,{pr:o,onSelect:s=>{r(o,s),a(null)},onCancel:()=>a(null)})]})}var _1r=L(z(),1);function w1r({onStartRun:e,cwd:t}){let r=Dee(t);return!t||r.length===0?null:(0,_1r.jsx)(Mee,{runs:r,onSelect:n=>e(n,t)})}var kY=L(z(),1);function k1r({onCreateAssist:e,onStartRun:t}){let{selectedCwd:r,selectedNode:n}=$n();return(0,kY.jsxs)(Rt,{direction:"row",spacing:.5,sx:{alignItems:"center","&:not(:empty)":{ml:2}},children:[(0,kY.jsx)(C1r,{cwd:r,disabled:!r,onSelect:(i,o)=>e([...o,String(i.number)],r,{...kP(i),node:n})}),(0,kY.jsx)(w1r,{onStartRun:(i,o)=>t(i,o,void 0,void 0,n),cwd:r})]})}var Ud=L(z(),1),nGn={minHeight:48,pl:1,pr:14};function E1r({socket:e,selection:t}){let{collapsed:r,onToggleCollapsed:n}=eS();return(0,Ud.jsxs)($k,{variant:"dense",disableGutters:!0,sx:nGn,children:[r&&(0,Ud.jsx)(Xee,{collapsed:r,onToggleCollapsed:n}),(0,Ud.jsx)(l1r,{reconnecting:e.reconnecting}),(0,Ud.jsx)(Hyr,{cwd:t.selectedCwd}),(0,Ud.jsx)(Myr,{}),(0,Ud.jsx)(d1r,{repos:t.repos,selected:t.selectedCwd,onSelect:t.setSelectedCwd}),(0,Ud.jsxs)(ue,{sx:{display:"flex",alignItems:"center",ml:1},children:[(0,Ud.jsx)(Uee,{cwd:t.selectedCwd}),(0,Ud.jsx)(Gyr,{cwd:t.selectedCwd}),(0,Ud.jsx)(Vyr,{})]}),(0,Ud.jsx)(k1r,{onCreateAssist:e.createAssistSession,onStartRun:e.startRun}),(0,Ud.jsx)(s1r,{rateLimits:e.rateLimits,harnessRateLimits:e.harnessRateLimits})]})}var C0e=L(ge(),1);function R1r(){let[e,t]=(0,C0e.useState)(null);return(0,C0e.useEffect)(()=>{let r=!1;return(async()=>{try{let i=await(await fetch("/api/health")).json();!r&&typeof i?.nodeName=="string"&&t(i.nodeName)}catch{}})(),()=>{r=!0}},[]),e}var P1r=L(z(),1),iGn={lineHeight:"32px",bgcolor:"transparent"};function A1r(){let e=R1r();return e?(0,P1r.jsx)(w1e,{sx:iGn,children:e}):null}var L1r=L(z(),1),M1r=ft((0,L1r.jsx)("path",{d:"M20 5H4c-1.1 0-1.99.9-1.99 2L2 17c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m-9 3h2v2h-2zm0 3h2v2h-2zM8 8h2v2H8zm0 3h2v2H8zm-1 2H5v-2h2zm0-3H5V8h2zm9 7H8v-2h8zm0-4h-2v-2h2zm0-3h-2V8h2zm3 3h-2v-2h2zm0-3h-2V8h2z"}),"Keyboard");var I1r=L(z(),1),D1r=ft((0,I1r.jsx)("path",{d:"m12 16.5 4-4h-3v-9h-2v9H8zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2"}),"SystemUpdateAlt");var N1r=L(z(),1),O1r=ft((0,N1r.jsx)("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6c3.31 0 6 2.69 6 6s-2.69 6-6 6"}),"Brightness4");var B1r=L(z(),1),F1r=ft((0,B1r.jsx)("path",{d:"M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6m0-10c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4"}),"Brightness7");var aze=L(z(),1);function $1r({mode:e}){return e==="dark"?(0,aze.jsx)(F1r,{fontSize:"small"}):(0,aze.jsx)(O1r,{fontSize:"small"})}var z1r=L(z(),1),H1r=ft((0,z1r.jsx)("path",{d:"m20.38 8.57-1.23 1.85a8 8 0 0 1-.22 7.58H5.07A8 8 0 0 1 15.58 6.85l1.85-1.23A10 10 0 0 0 3.35 19a2 2 0 0 0 1.72 1h13.85a2 2 0 0 0 1.74-1 10 10 0 0 0-.27-10.44zm-9.79 6.84a2 2 0 0 0 2.83 0l5.66-8.49-8.49 5.66a2 2 0 0 0 0 2.83"}),"Speed");var SB=L(z(),1);function U1r(){let e=Mpe();return(0,SB.jsxs)(fn,{onClick:()=>Eft(!e),children:[(0,SB.jsx)(nT,{children:(0,SB.jsx)(H1r,{fontSize:"small"})}),(0,SB.jsx)(Sp,{children:e?"Hide render HUD":"Show render HUD"})]})}var el=L(z(),1);function W1r({mode:e,restartLabel:t,updateLabel:r,onToggleColorMode:n,onShowShortcuts:i,onRestart:o,onUpdate:a}){return[(0,el.jsxs)(fn,{onClick:n,children:[(0,el.jsx)(nT,{children:(0,el.jsx)($1r,{mode:e})}),(0,el.jsx)(Sp,{children:"Toggle dark mode"})]},"color-mode"),(0,el.jsx)(U1r,{},"render-hud"),(0,el.jsxs)(fn,{onClick:i,children:[(0,el.jsx)(nT,{children:(0,el.jsx)(M1r,{fontSize:"small"})}),(0,el.jsx)(Sp,{children:"Keyboard shortcuts"})]},"shortcuts"),(0,el.jsx)(no,{},"restart-divider"),(0,el.jsxs)(fn,{onClick:o,children:[(0,el.jsx)(nT,{children:(0,el.jsx)(uee,{fontSize:"small"})}),(0,el.jsx)(Sp,{children:t})]},"restart"),(0,el.jsxs)(fn,{onClick:a,children:[(0,el.jsx)(nT,{children:(0,el.jsx)(D1r,{fontSize:"small"})}),(0,el.jsx)(Sp,{children:r})]},"update")]}var V1r=L(ge(),1);var q1r=L(z(),1);function G1r({peer:e,onRestart:t,onClose:r}){let[n,i]=(0,V1r.useState)(!1);return(0,q1r.jsx)(vo,{title:`Restart ${e}?`,message:`Restarts the sessions daemon and web server on ${e}. Its sessions resume when the daemon is back. This page stays open.`,confirmLabel:"Restart",busy:n,autoFocusConfirm:!0,onConfirm:()=>{i(!0),t(e).finally(r)},onCancel:r})}function j1r(e){let t=new Map;for(let r of e){let n=t.get(r.group)??[];n.push(r),t.set(r.group,n)}return[...t].map(([r,n])=>({name:r,shortcuts:n}))}var oGn=Object.keys(yP);function Y1r(){let e=vP();return j1r(oGn.map(t=>VT(t,e)))}var ap=L(z(),1),aGn={display:"flex",alignItems:"center",justifyContent:"space-between",pr:1},sGn={display:"flex",alignItems:"center",justifyContent:"space-between",gap:2,py:.5};function K1r({onClose:e}){let t=Y1r();return(0,ap.jsxs)(Ps,{open:!0,onClose:e,maxWidth:"xs",fullWidth:!0,"aria-labelledby":"shortcuts-dialog-title",children:[(0,ap.jsxs)(Il,{id:"shortcuts-dialog-title",sx:aGn,children:["Keyboard shortcuts",(0,ap.jsx)(or,{size:"small","aria-label":"Close",onClick:e,children:(0,ap.jsx)(da,{fontSize:"small"})})]}),(0,ap.jsx)(Ml,{dividers:!0,children:t.map(r=>(0,ap.jsxs)(ue,{component:"section",sx:{mb:1.5},children:[(0,ap.jsx)(Fe,{variant:"overline",color:"text.secondary",children:r.name}),r.shortcuts.map(n=>(0,ap.jsxs)(ue,{sx:sGn,children:[(0,ap.jsx)(Fe,{variant:"body2",children:n.label}),(0,ap.jsx)(Rt,{direction:"row",spacing:.5,children:(0,ap.jsx)(VJ,{chords:n.chords})})]},n.label))]},r.name))})]})}var OR=L(z(),1);function X1r({reconnecting:e,onClose:t}){let{pending:r,error:n,clearError:i,restart:o}=v_(K9.target,e);return(0,OR.jsxs)(OR.Fragment,{children:[(0,OR.jsx)(vo,{title:K9.label,message:K9.message,confirmLabel:"Restart",busy:r,autoFocusConfirm:!0,onConfirm:()=>{o()},onCancel:t}),(0,OR.jsx)(vu,{error:n,onClose:i})]})}var Q1r=L(z(),1);function lGn(e){return e?{title:`Update assist on ${e}?`,message:`This runs 'assist update' on ${e} as a new session, then restarts its web server. This page stays open.`}:{title:"Update assist",message:"This starts a new session running 'assist update'. Its output will appear in the terminal."}}function Z1r({peer:e,onConfirm:t,onClose:r}){return(0,Q1r.jsx)(vo,{...lGn(e),confirmLabel:"Update",onConfirm:()=>{t(),r()},onCancel:r})}var h0=L(ge(),1);async function cGn(e){try{let t=await fetch(`/api/node-doctor?link=${encodeURIComponent(e)}`);return t.ok?(await t.json()).hop:null}catch{return null}}async function J1r(e,t){let r=await cGn(e);if(!r)return t;let n=r.remediation?` \u2014 ${r.remediation}`:"";return`${t}: ${r.hop} hop failed: ${r.error}${n}`}var B2=L(ge(),1);function evr(e){let{nodes:t}=Ou(),[r,n]=(0,B2.useState)(null),i=(0,B2.useRef)(!1),o=r?t?.links.find(l=>l.name===r.peer):void 0;(0,B2.useEffect)(()=>{if(!(!r||!o)){if(o.state!=="connected"){i.current=!0;return}i.current&&(n(null),e(r.describe(r.peer,o.peerVersion)))}},[r,o,e]);let a=(0,B2.useCallback)((l,u)=>{i.current=!1,n({peer:l,describe:u})},[]),s=(0,B2.useCallback)(()=>n(null),[]);return{watch:a,stop:s}}var uGn=9e4;function w0e(){let[e,t]=(0,h0.useState)(null),[r,n]=(0,h0.useState)(null),i=(0,h0.useRef)(void 0),o=(0,h0.useCallback)(f=>{clearTimeout(i.current),t(f)},[]),{watch:a,stop:s}=evr(o);(0,h0.useEffect)(()=>()=>clearTimeout(i.current),[]);let l=(0,h0.useCallback)(async(f,d)=>{n(await J1r(f,d))},[]);return{requestThenAwait:(0,h0.useCallback)(async(f,d,h,p)=>{let m;try{m=await h()}catch{}return m?.ok?(a(f,p),clearTimeout(i.current),i.current=setTimeout(()=>{s(),l(f,`${f} did not come back`)},uGn),!0):(await l(f,`${d} failed (${await Y9(m)})`),!1)},[l,a,s]),back:e,clearBack:()=>t(null),error:r,clearError:()=>n(null)}}var fGn=(e,t)=>t?`${e} is back (v${t})`:`${e} is back`;function tvr(){let{requestThenAwait:e,...t}=w0e();return{restart:n=>e(n,`Restart ${n}`,()=>y_("both",n),fGn),...t}}var EY=L(ge(),1);var p0=L(ge(),1);function rvr(e){return e.commandType==="assist"&&e.assistArgs?.[0]==="update"&&e.status==="done"}function _0e(e,t,r){let[n,i]=(0,p0.useState)(!1),[o,a]=(0,p0.useState)(!1),s=(0,p0.useRef)(!1),l=(0,p0.useRef)(e);l.current=e;let u=(0,p0.useRef)(new Set),f=(0,p0.useCallback)(()=>{s.current=!1,a(!1),u.current=new Set(l.current.filter(rvr).map(d=>d.id)),i(!0)},[]);return(0,p0.useEffect)(()=>{if(!n||o)return;if(t){s.current=!0;return}if(!s.current)return;e.some(h=>rvr(h)&&h.node===r&&!u.current.has(h.id))&&a(!0)},[n,o,t,e,r]),{arm:f,completed:o}}var nvr=(e,t)=>t?`${e} updated to v${t}`:`${e} updated`;function dGn(e){return fetch(`/api/self-update?node=${encodeURIComponent(e)}`,{method:"POST"})}function ivr(e){let{nodes:t}=Ou(),{launchAssist:r}=$l(),{requestThenAwait:n,...i}=w0e(),[o,a]=(0,EY.useState)(null),[s,l]=(0,EY.useState)(),u=m=>t?.links.find(g=>g.name===m)?.state,{arm:f,completed:d}=_0e(e,u(s)!=="connected",s);(0,EY.useEffect)(()=>{!d||!s||(l(void 0),n(s,`Restart ${s}'s web server`,()=>y_("webserver",s),nvr))},[d,s,n]);let h=async m=>{a(`Updating assist on ${m}\u2026`),await n(m,`Update ${m}`,()=>dGn(m),nvr),a(null)};return{update:m=>{if(u(m)!=="connected"){h(m);return}l(m),f(),r(["update"],void 0,{node:m})},progress:o,...i}}var m0=L(z(),1);function ovr({dialog:e,peer:t,sessions:r,reconnecting:n,onClose:i}){let{launchAssist:o,armUpdateReload:a}=$l(),s=tvr(),l=ivr(r);return(0,m0.jsxs)(m0.Fragment,{children:[e==="shortcuts"&&(0,m0.jsx)(K1r,{onClose:i}),e==="restart"&&t&&(0,m0.jsx)(G1r,{peer:t,onRestart:s.restart,onClose:i}),e==="restart"&&!t&&(0,m0.jsx)(X1r,{reconnecting:n,onClose:i}),e==="update"&&(0,m0.jsx)(Z1r,{peer:t,onConfirm:()=>{if(t){l.update(t);return}a(),o(["update"])},onClose:i}),(0,m0.jsx)(Yj,{notices:s}),(0,m0.jsx)(Yj,{notices:l})]})}var avr=L(z(),1),svr=ft((0,avr.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings");var lvr=L(ge(),1);var RY=L(z(),1);function cvr(){let e=Xi(),t=(0,lvr.useCallback)(()=>e("/config"),[e]),{matches:r,chords:n}=Yn("openConfig");return Do(r,t),(0,RY.jsx)(lr,{describeChild:!0,title:(0,RY.jsx)(Jf,{label:"Config",chords:n}),children:(0,RY.jsx)(or,{size:"small",sx:{color:"inherit"},"aria-label":"Config",onClick:t,children:(0,RY.jsx)(svr,{fontSize:"small"})})})}var uvr=L(z(),1),fvr=ft((0,uvr.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu");var k0e=L(ge(),1);var AY=L(z(),1);function dvr({open:e,onOpen:t}){let r=(0,k0e.useRef)(null),{matches:n,chords:i}=Yn("openMenu");return Do(n,(0,k0e.useCallback)(()=>{r.current&&t(r.current)},[t])),(0,AY.jsx)(lr,{describeChild:!0,title:(0,AY.jsx)(Jf,{label:"Menu",chords:i}),children:(0,AY.jsx)(or,{ref:r,onClick:o=>t(o.currentTarget),size:"small",sx:{color:"inherit"},"aria-label":"Open menu","aria-haspopup":"true","aria-expanded":e?"true":void 0,children:(0,AY.jsx)(fvr,{fontSize:"small"})})})}var sze=L(z(),1),hvr=ft([(0,sze.jsx)("path",{d:"M12 5.99 19.53 19H4.47zM12 2 1 21h22z"},"0"),(0,sze.jsx)("path",{d:"M13 16h-2v2h2zm0-6h-2v5h2z"},"1")],"WarningAmber");var lze=L(z(),1);function pvr(){let e=c0e();return!e||e===O_?null:(0,lze.jsx)(lr,{title:`Daemon is running v${e}, but this page was served by v${O_}. Restart the daemon to match.`,children:(0,lze.jsx)(hvr,{fontSize:"small",color:"warning","aria-label":"Version mismatch"})})}var mvr=e=>({display:"inline-flex",alignItems:"center",gap:.75,px:1,py:.25,borderRadius:999,fontSize:12,lineHeight:1.5,color:"inherit",opacity:e?1:.55,bgcolor:e?"rgba(255,255,255,0.16)":"transparent",transition:"opacity .2s ease, background-color .2s ease","&:hover, &:focus-visible":{opacity:1,bgcolor:"rgba(255,255,255,0.12)"},"& .ready-dot":{width:8,height:8,borderRadius:"50%",bgcolor:"#ffb74d",boxShadow:"0 0 0 2px rgba(0,0,0,.15)"},"& .ready-count":{fontWeight:500}});var rv=L(z(),1);function gvr(){let{entries:e}=z9();if(!O_)return null;let t=e.filter(sge).length;return(0,rv.jsxs)(rv.Fragment,{children:[(0,rv.jsxs)(Dn,{component:ys,to:"/updates","aria-label":t?`Updates: ${t} node${t>1?"s have":" has"} an update ready`:"Updates",sx:mvr(t>0),children:[t>0&&(0,rv.jsx)("span",{className:"ready-dot","aria-hidden":!0}),(0,rv.jsxs)("span",{children:["v",O_]}),t>0&&(0,rv.jsxs)("span",{className:"ready-count",children:[t," ready"]})]}),(0,rv.jsx)(pvr,{})]})}var CB=L(z(),1);function yvr({open:e,onOpen:t}){return(0,CB.jsxs)(ue,{sx:{position:"fixed",top:8,right:16,zIndex:r=>r.zIndex.drawer+2,display:"flex",alignItems:"center",gap:.5,color:"inherit"},children:[(0,CB.jsx)(gvr,{}),(0,CB.jsx)(cvr,{}),(0,CB.jsx)(dvr,{open:e,onOpen:t})]})}var BR=L(ge(),1);var bvr=L(ge(),1);var vvr=!0,hGn=new Set(["openMenu","cycleCards"]),pGn=Object.keys(yP).filter(e=>!hGn.has(e));function xvr(e,t){let r=vP();(0,bvr.useEffect)(()=>{if(!e)return;let n=i=>{pGn.some(o=>VT(o,r).matches(i))&&t()};return globalThis.addEventListener("keydown",n,vvr),()=>globalThis.removeEventListener("keydown",n,vvr)},[e,t,r])}function Tvr(){let[e,t]=(0,BR.useState)(null),[r,n]=(0,BR.useState)(!0),i=!!e,o=(0,BR.useCallback)(()=>t(null),[]),a=(0,BR.useCallback)(s=>{n(!0),t(s)},[]);return xvr(i,(0,BR.useCallback)(()=>{n(!1),t(null)},[])),{anchorEl:e,open:i,close:o,openAt:a,restoreFocus:r}}var PY=L(ge(),1);function Svr(e){Do(Yn("shortcutsSheet").matches,e)}function Cvr(){let[e,t]=(0,PY.useState)(null);Svr((0,PY.useCallback)(()=>t("shortcuts"),[]));let r=(0,PY.useCallback)(()=>t(null),[]);return{dialog:e,showDialog:t,closeDialog:r}}function wvr(){let{nodes:e,selected:t}=Ou();return e&&t&&t!==e.local?t:void 0}function _vr(e){return{restartLabel:e?`Restart ${e}`:K9.label,updateLabel:e?`Update assist on ${e}`:"Update assist"}}var F2=L(z(),1);function kvr({mode:e,toggle:t,sessions:r,reconnecting:n}){let{anchorEl:i,open:o,close:a,openAt:s,restoreFocus:l}=Tvr(),{dialog:u,showDialog:f,closeDialog:d}=Cvr(),h=wvr(),p=m=>()=>{a(),f(m)};return(0,F2.jsxs)(F2.Fragment,{children:[(0,F2.jsx)(yvr,{open:o,onOpen:s}),(0,F2.jsxs)(Dl,{anchorEl:i,open:o,onClose:a,disableRestoreFocus:!l,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,F2.jsx)(A1r,{}),W1r({mode:e,..._vr(h),onToggleColorMode:()=>{t(),a()},onShowShortcuts:p("shortcuts"),onRestart:p("restart"),onUpdate:p("update")})]}),(0,F2.jsx)(ovr,{dialog:u,peer:h,sessions:r,reconnecting:n,onClose:d})]})}var Avr=L(ge(),1);var Rvr=L(z(),1);function Evr({conflict:e,onConfirm:t,onCancel:r}){let{name:n,cwd:i,port:o,group:a}=e.existing,s=$p(i),l=o?` on port ${o}`:"",u=s?` in ${s}`:"",f=a?`, holding the ${a} server slot`:"";return(0,Rvr.jsx)(vo,{title:a?`Replace the ${a} server?`:"Replace running server?",message:`"${n}" is already serving${l}${u}${f}. Replace it \u2014 stop the running server and start this one?`,confirmLabel:"Replace",confirmColor:"error",onConfirm:t,onCancel:r})}var E0e=L(z(),1);function Pvr({socket:e,children:t}){let{serverConflict:r,clearServerConflict:n,retrySession:i,stopSession:o,startRun:a,discardSession:s}=e,l=(0,Avr.useMemo)(()=>({onStop:o,onStart:a,onDiscard:s}),[o,a,s]),u=()=>{r&&(r.runName?a(r.runName,r.cwd,!0,r.launchedFrom,r.node):r.sessionId&&i(r.sessionId,!0),n())};return(0,E0e.jsxs)(eTe.Provider,{value:l,children:[t,r&&(0,E0e.jsx)(Evr,{conflict:r,onConfirm:u,onCancel:n})]})}var Lvr=new Map;function Mvr(e,t){if(!Pre())return;let r=Lvr.get(e);if(Lvr.set(e,t),!!r)for(let[n,i]of Object.entries(t))Object.is(i,r[n])||iy(`\u0394 ${e}.${n}`)}var A0e=L(ge(),1);function Ivr(e,t,r){if(!t)return null;let n=e[t];if(!n)return null;let i=r.find(o=>o.id===n);return!i||zp(i)!==t?null:n}function nv(e,t,r){if(e)return t.find(n=>n.id===e)??r.find(n=>n.sessionId===e)}function R0e(){let{pathname:e}=Io();return e.startsWith("/backlog")||e.startsWith("/usage")}function Dvr({selectedCwd:e,selectedCardId:t,sessions:r,history:n,activeByRepo:i,onSelect:o}){let a=nv(t,r,n),s=a&&zp(a),l=!!(s&&s===e),u=Ivr(i,e,r),f=(0,A0e.useRef)(t),d=R0e();(0,A0e.useEffect)(()=>{let h=f.current!==t&&!!s;f.current=t,!(d||h||l||!u)&&o(u)},[t,s,l,u,o,d])}var M0e=L(ge(),1);function Nvr(e,t,r,n){return nv(e,t,r)?.cwd||n}function Ovr(e,t,r,n){let i=Nvr(e,t,r,n.cwd),o=nv(e,t,r);return{cwd:i,node:o?.cwd?o.node:n.node}}function Bvr(e,t){let r=new Set,n=new Set,i=[];for(let o of t){if(o.cwdMissing)continue;let a=$T(o),s=zp(o);!a||!s||r.has(a)||n.has(s)||(r.add(a),n.add(s),i.push(s))}return e&&!r.has(pP(e,t))&&!n.has(e)&&i.unshift(e),i}var sp="";function mGn(e){let t=new Map([[sp,[]]]);for(let r of e){let n=r.node??sp;t.set(n,[...t.get(n)??[],r])}return t}function Fvr(e,t){var n;let r=new Map;for(let[i,o]of mGn(t)){let a=i===sp?e:"";for(let s of Bvr(a,o)){let l=pP(s,o),u=r.get(l)??{key:l,origin:l===s?void 0:l,clones:{}};(n=u.clones)[i]??(n[i]=s),r.set(l,u)}}return[...r.values()]}function $vr(e,t){return e.clones[t]??e.clones[sp]??Object.values(e.clones)[0]}function LY(e,t){return e.find(r=>Object.values(r.clones).includes(t))}function wB(e,t){return!e||e===t?sp:e}var cze=L(ge(),1);function zvr(e,t){let r=(0,cze.useCallback)((i,o)=>{let a=wB(o,t),s=LY(e,i);return s?s.clones[a]:a===sp?i:void 0},[e,t]),n=(0,cze.useCallback)(i=>LY(e,i)?.origin,[e]);return{cloneOn:r,originOf:n}}var P0e=L(ge(),1);function Hvr(e,t,r,n){let i=(0,P0e.useRef)(e);(0,P0e.useEffect)(()=>{if(i.current===e)return;i.current=e;let o=LY(t,r)?.clones[e];o&&n(o,e)},[e,t,r,n])}var _B=L(ge(),1);function Uvr(e,t,r){if(t.node!==void 0)return t.node;let n=new Set(e.flatMap(i=>Object.entries(i.clones).filter(([,o])=>o===t.cwd).map(([o])=>o)));return n.has(r)?r:n.size===0||n.has(sp)?sp:[...n][0]}function Wvr(e,t,r,n){let[i,o]=(0,_B.useState)({cwd:e}),a=(0,_B.useCallback)((l,u)=>o({cwd:l,node:u}),[]);(0,_B.useEffect)(()=>{e&&!i.cwd&&o({cwd:e})},[e,i.cwd]);let s=Uvr(t,{cwd:i.cwd,node:i.node===void 0?void 0:wB(i.node,n)},r);return{selectedCwd:i.cwd,selectedNode:s||void 0,setSelectedCwd:a}}var Vvr=L(ge(),1);function L0e(e,t,r){let n=nv(e,t,r);return n&&zp(n)}function Gvr(e,t,r,n){let i=L0e(e,t,r),o=nv(e,t,r)?.node??sp;(0,Vvr.useEffect)(()=>{i&&n(i,o)},[i,o,n])}function qvr(e,t,r,n,i){let o=i.nodes?.local,a=wB(i.selected,o),s=(0,M0e.useMemo)(()=>Fvr(e,t),[e,t]),{selectedCwd:l,selectedNode:u,setSelectedCwd:f}=Wvr(e,s,a,o);Gvr(r,n,t,f),Hvr(a,s,l,f);let{cloneOn:d,originOf:h}=zvr(s,o),p=(0,M0e.useMemo)(()=>s.map(y=>$vr(y,a)),[s,a]),{cwd:m,node:g}=Ovr(r,n,t,{cwd:l,node:u});return(0,M0e.useMemo)(()=>({repos:p,selectedCwd:l,selectedNode:u,worktreeCwd:m,worktreeNode:g,setSelectedCwd:f,cloneOn:d,originOf:h}),[p,l,u,m,g,f,d,h])}var D0e=L(ge(),1);var V_=L(ge(),1);var jvr=L(ge(),1),I0e="assist:reloaded-after-update";function Yvr(e){(0,jvr.useEffect)(()=>{globalThis.sessionStorage?.getItem(I0e)&&(globalThis.sessionStorage.removeItem(I0e),e({message:"Reloaded after updating assist",sessionId:null}))},[e])}function Kvr(e,t,r,n){let{arm:i,completed:o}=_0e(e,t),a=(0,V_.useRef)(!1),s=(0,V_.useCallback)(()=>{globalThis.sessionStorage?.setItem(I0e,"1")},[]),{error:l,restart:u}=v_("webserver",t,s);return Yvr(r),(0,V_.useEffect)(()=>{l&&n(l)},[l,n]),(0,V_.useEffect)(()=>{!o||a.current||(a.current=!0,u())},[o,u]),{armUpdateReload:(0,V_.useCallback)(()=>{a.current=!1,i()},[i])}}function Xvr(e){let{armUpdateReload:t}=Kvr(e.sessions,e.reconnecting,e.setSuccess,e.setError),r=(0,D0e.useMemo)(()=>({launchAssist:e.createAssistSession,launchAgentInStream:e.createSessionInStream,resumeSession:e.resumeSession,armUpdateReload:t}),[e.createAssistSession,e.createSessionInStream,e.resumeSession,t]),n=Xi(),i=(0,D0e.useCallback)(o=>{e.selectSession(o),n("/sessions"),e.clearSuccess()},[n,e.selectSession,e.clearSuccess]);return{launch:r,viewLaunchedSession:i}}var Zvr=L(ge(),1);function Qvr(e,t,r,n){let i=L0e(e,t,r);(0,Zvr.useEffect)(()=>{e&&i&&n({type:"set-active",cwd:i,sessionId:e})},[e,i,n])}var N0e=L(ge(),1);function Jvr(e,t){let r=(0,N0e.useRef)(new Map);(0,N0e.useEffect)(()=>{let n=new Set;for(let{id:i,status:o}of e)n.add(i),r.current.get(i)!==o&&(r.current.set(i,o),console.debug(`[sessions] render session ${i} status=${o}`),t({type:"ui-status",sessionId:i,status:o}));for(let i of r.current.keys())n.has(i)||r.current.delete(i)},[e,t])}var kB=L(ge(),1),ebr="assist.sessions.node";function gGn(){try{return localStorage.getItem(ebr)}catch{return null}}function yGn(e){try{localStorage.setItem(ebr,e)}catch{}}function tbr(e){let[t,r]=(0,kB.useState)(gGn),n=(0,kB.useCallback)(i=>{r(i),yGn(i)},[]);return(0,kB.useMemo)(()=>{let i=e?[e.local,...e.links.map(o=>o.name)]:[];return{nodes:e,names:i,visible:i.length>1,selected:t&&i.includes(t)?t:e?.local,select:n}},[e,t,n])}var nbr=L(ge(),1);function rbr(e){let t=e;if(t.type==="create")return{cwd:t.cwd,title:t.prompt?.trim()||(t.design?"New design session":"New session"),node:t.node};if(t.type==="create-assist"){let r=t.title?.trim();return{cwd:t.cwd,title:r||"New session",named:!!r,node:t.node}}return null}function ibr(e,t){return(0,nbr.useCallback)(r=>{let n=e.current;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify(r));let i=rbr(r);i&&t(i)},[e,t])}var iv=L(ge(),1);function O0e(e,t,r,n,i){e({type:"create",prompt:r||void 0,cwd:n,...t,...i?{node:i}:{}})}function obr(e){return(t,r,n)=>O0e(e,{design:!0},t,r,n)}function abr(e){return(t,r,n,i)=>O0e(e,{harness:t},r,n,i)}function sbr(e){return(t,r,n)=>O0e(e,{auto:!0},t,r,n)}function lbr(e){return(t,r,n)=>e({type:"create-assist",assistArgs:t,cwd:r,...n})}function cbr(e){return(t,r,n,i,o)=>e({type:"resume",sessionId:t,cwd:r,name:n,harness:i,node:o})}function ubr(e,t){return(r,n)=>{t.delete(r),e({type:"retry",sessionId:r,replace:n})}}function fbr(e,t){return r=>{t.delete(r),e({type:"restart",sessionId:r})}}function dbr(e,t){return r=>{e({type:"dismiss",sessionId:r}),t.delete(r)}}function hbr(e,t){return r=>{e({type:"discard",sessionId:r}),t.delete(r)}}function pbr(e){return t=>e({type:"stop",sessionId:t})}function mbr(e){return(t,r,n,i,o)=>e({type:"create-run",runName:t,cwd:r,replace:n,launchedFrom:i,node:o})}function gbr(e){return(t,r)=>e({type:"set-autorun",sessionId:t,enabled:r})}function ybr(e){return(t,r)=>e({type:"set-autoadvance",sessionId:t,enabled:r})}function vbr(e){return(t,r)=>e({type:"set-starred",sessionId:t,starred:r})}function bbr(e){return(t,r)=>e({type:"input",sessionId:t,data:r,viewerId:jj})}function xbr(e){return(t,r,n,i)=>e({type:"resize",sessionId:t,cols:r,rows:n,viewerId:jj,claim:i})}function Tbr(e,t){return(r,n)=>{let i=e.get(r);return i&&n(i),t.set(r,n),()=>t.delete(r)}}function Sbr(e){return(t,r,n,i)=>e({type:"pr-decision",sessionId:t,requestId:r,decision:n,...i})}var FR=L(ge(),1);function Cbr(e){return(t,r,n)=>e({type:"create",prompt:r||void 0,cwd:n,joinSessionId:t,auto:!0})}function wbr(e){return{createSession:(0,FR.useMemo)(()=>sbr(e),[e]),createSessionInStream:(0,FR.useMemo)(()=>Cbr(e),[e]),createDesignSession:(0,FR.useMemo)(()=>obr(e),[e]),createHarnessSession:(0,FR.useMemo)(()=>abr(e),[e]),createAssistSession:(0,FR.useMemo)(()=>lbr(e),[e]),resumeSession:(0,FR.useMemo)(()=>cbr(e),[e])}}var MY=L(ge(),1);function _br(e,t){let r=(0,MY.useCallback)((a,s)=>{ubr(e,t.current)(a,s)},[e,t]),n=(0,MY.useCallback)(a=>{fbr(e,t.current)(a)},[e,t]),i=(0,MY.useCallback)(a=>{dbr(e,t.current)(a)},[e,t]),o=(0,MY.useCallback)(a=>{hbr(e,t.current)(a)},[e,t]);return{retrySession:r,restartSession:n,dismissSession:i,discardSession:o}}function kbr(e,t,r){let n={...wbr(e),sendInput:(0,iv.useMemo)(()=>bbr(e),[e]),sendResize:(0,iv.useMemo)(()=>xbr(e),[e]),sendPrDecision:(0,iv.useMemo)(()=>Sbr(e),[e]),setAutoRun:(0,iv.useMemo)(()=>gbr(e),[e]),setAutoAdvance:(0,iv.useMemo)(()=>ybr(e),[e]),setStarred:(0,iv.useMemo)(()=>vbr(e),[e]),stopSession:(0,iv.useMemo)(()=>pbr(e),[e]),startRun:(0,iv.useMemo)(()=>mbr(e),[e])},i=(0,iv.useMemo)(()=>Tbr(t.current,r.current),[t,r]);return{...n,..._br(e,t),onOutput:i}}var IY=L(ge(),1);function Ebr(e,t,r){let n=(0,IY.useCallback)(s=>{r(s),e({type:"fetch-transcript",sessionId:s})},[e,r]),i=(0,IY.useCallback)(s=>e({type:"fetch-user-messages",sessionId:s}),[e]),o=(0,IY.useCallback)(()=>{r(null)},[r]),a=(0,IY.useCallback)(s=>{r(null),t(s)},[t,r]);return{viewTranscript:n,fetchUserMessages:i,clearTranscript:o,selectSession:a}}var j_=L(ge(),1);function Rbr(e,t){let r=new Set(t.map(i=>i.id)),n=null;for(let i of Object.values(e))r.has(i)&&(n=i);return n}var Pbr=L(ge(),1);function Abr(e,t,r=null){return t!==null?e.some(n=>n.id===t)?t:e[0]?.id??null:r&&e.some(n=>n.id===r)?r:e[0]?.id??null}function Lbr(e,t,r){let n=R0e();(0,Pbr.useEffect)(()=>{if(n){t(null);return}t(i=>Abr(e,i,r))},[e,t,r,n])}var B0e=L(ge(),1);function Mbr(){let[e,t]=(0,B0e.useState)({}),[r,n]=(0,B0e.useState)(null),[i,o]=(0,B0e.useState)(null);return{activeByRepo:e,setActiveByRepo:t,daemonVersion:r,setDaemonVersion:n,nodes:i,setNodes:o}}var g0=L(ge(),1);function Ibr(e,t){if(!t.some(n=>e.has(n)))return e;let r=new Set(e);for(let n of t)r.delete(n);return r}function Dbr(e,t){let r=[];for(let n of t){let i=e.get(n.id);i!==void 0&&i!==n.startedAt&&r.push(n.id)}return r}function Nbr(e,t){return t.filter(r=>r.commandType==="run"&&e.get(r.id)!==r.startedAt).map(r=>r.id)}var vGn=1500;function Obr(){let[e,t]=(0,g0.useState)(new Set),r=(0,g0.useRef)(new Map),n=(0,g0.useRef)(new Map),i=(0,g0.useCallback)(s=>{t(l=>l.has(s)?l:new Set(l).add(s))},[]),o=(0,g0.useCallback)(s=>{let l=n.current;for(let u of s)clearTimeout(l.get(u)),l.set(u,setTimeout(()=>{l.delete(u),i(u)},vGn))},[i]);(0,g0.useEffect)(()=>{let s=n.current;return()=>{for(let l of s.values())clearTimeout(l)}},[]);let a=(0,g0.useCallback)(s=>{let l=Dbr(r.current,s),u=Nbr(r.current,s);r.current=new Map(s.map(f=>[f.id,f.startedAt])),l.length&&t(f=>Ibr(f,l)),o(u)},[o]);return{initialized:e,markInitialized:i,syncSessions:a}}var G_=L(ge(),1);function Bbr(){let[e,t]=(0,G_.useState)(null),[r,n]=(0,G_.useState)(null),[i,o]=(0,G_.useState)(null),a=(0,G_.useCallback)(()=>t(null),[]),s=(0,G_.useCallback)(()=>n(null),[]),l=(0,G_.useCallback)(()=>o(null),[]);return{error:e,setError:t,clearError:a,success:r,setSuccess:n,clearSuccess:s,serverConflict:i,setServerConflict:o,clearServerConflict:l}}var ov=L(ge(),1);function Fbr(e,t){return[...e,{...t,status:"launching"}]}function F0e(e){return e.find(t=>t.status==="launching")}function $br(e){let t=F0e(e);return t?e.filter(r=>r.id!==t.id):e}function zbr(e,t){let r=F0e(e);return r?uze(e,r.id,t):e}function uze(e,t,r){return e.map(n=>n.id===t&&n.status==="launching"?{...n,status:"error",error:r}:n)}function Hbr(e,t){return e.filter(r=>r.id!==t)}var Ubr=L(ge(),1);var bGn=6e4,xGn="Launch timed out \u2014 the session did not start.";function Wbr(e,t){(0,Ubr.useEffect)(()=>{let r=e.filter(i=>i.status==="launching");if(r.length===0)return;let n=r.map(i=>setTimeout(()=>t(o=>uze(o,i.id,xGn)),Math.max(0,bGn-(Date.now()-i.startedAt))));return()=>n.forEach(clearTimeout)},[e,t])}function Vbr(){let[e,t]=(0,ov.useState)([]),r=(0,ov.useRef)([]),n=(0,ov.useCallback)(l=>{r.current=l(r.current),t(r.current)},[]),i=(0,ov.useCallback)(l=>{n(u=>Fbr(u,{id:crypto.randomUUID(),startedAt:Date.now(),...l}))},[n]),o=(0,ov.useCallback)(()=>{let l=F0e(r.current);return n($br),l?.named?l.title:void 0},[n]),a=(0,ov.useCallback)(l=>n(u=>zbr(u,l)),[n]),s=(0,ov.useCallback)(l=>n(u=>Hbr(u,l)),[n]);return Wbr(e,n),{pendingLaunches:e,addPendingLaunch:i,resolvePendingLaunch:o,failPendingLaunch:a,dismissPendingLaunch:s}}var DY=L(ge(),1);function Gbr(){let[e,t]=(0,DY.useState)(null),[r,n]=(0,DY.useState)({}),i=(0,DY.useCallback)((o,a)=>{o!=="claude"&&n(s=>({...s,[o]:a}))},[]);return{rateLimits:e,setRateLimits:t,harnessRateLimits:r,setHarnessRateLimits:i}}var qbr=L(ge(),1);function jbr(e,t){return(0,qbr.useCallback)(r=>{e(r),t(r)},[e,t])}var $0e=L(ge(),1);function Ybr(){let[e,t]=(0,$0e.useState)(null),[r,n]=(0,$0e.useState)(null),[i,o]=(0,$0e.useState)(null);return{transcript:e,setTranscript:t,viewingTranscriptSessionId:r,setViewingTranscriptSessionId:n,userMessages:i,setUserMessages:o}}var q_=L(ge(),1);function Kbr(e,t){let r=e.sessionId;t.buffers.current?.delete(r),t.handlers.current?.get(r)?.("\x1Bc")}function Xbr(e,t){let r=e.sessionId,n=t.resolvePendingLaunch();t.setViewingTranscriptSessionId(null),t.setActiveId(r),e.isNew&&t.setSuccess({message:n?`Started ${n}`:"New session started",sessionId:r})}function Zbr(e,t){let r=e.message;t.setError(r),t.failPendingLaunch(r)}function Qbr(e,t){let r=e.rateLimits,n=e.harness;!n||n==="claude"?t.setRateLimits(r):t.setHarnessRateLimits?.(n,r)}function Jbr(e,t){t.setNodes({local:e.local,links:e.links??[]})}function exr(e,t){t.setSuccess({message:e.message,sessionId:null})}function txr(e,t){let r=e.sessionId,n=t.buffers.current?.get(r)??"";t.buffers.current?.set(r,n+e.data),t.handlers.current?.get(r)?.(e.data),t.markInitialized(r)}function rxr(e,t){t.setServerConflict({existing:e.existing,runName:e.runName,cwd:e.cwd,sessionId:e.sessionId,launchedFrom:e.launchedFrom,node:e.node})}function nxr(e,t){let r=e.sessions;t.setSessions(r),e.cwd&&t.setCurrentCwd(e.cwd),t.setActiveByRepo(e.active??{})}var TGn={sessions:nxr,created:Xbr,history:(e,t)=>t.setHistory(e.sessions),transcript:(e,t)=>t.setTranscript({sessionId:e.sessionId,messages:e.messages}),"user-messages":(e,t)=>t.setUserMessages({sessionId:e.sessionId,messages:e.messages}),hello:(e,t)=>t.setDaemonVersion(e.version),nodes:Jbr,error:Zbr,notice:exr,"run-conflict":rxr,limits:Qbr,clear:Kbr,output:txr};function ixr(e,t){TGn[e.type]?.(e,t)}function oxr(e,t={}){let r=location.protocol==="https:"?"wss:":"ws:",n=new WebSocket(`${r}//${location.host}/ws`);return n.onopen=()=>{t.onOpen?.(),n.send(JSON.stringify({type:"hello"})),n.send(JSON.stringify({type:"history"}))},n.onmessage=i=>{ixr(JSON.parse(i.data),e)},n.onclose=()=>t.onClose?.(),n}function axr(e,t,r,n){let i=!1,o,a=0,s=!1,l=()=>{i||t(oxr(e,{onOpen:()=>{s&&r(),s=!1,n(!1),a=0},onClose:()=>{if(i)return;s=!0,n(!0);let u=Math.min(300*2**a,2e3);a+=1,o=setTimeout(l,u)}}))};return l(),()=>{i=!0,o&&clearTimeout(o)}}function sxr(e){let t=(0,q_.useRef)(null),[r,n]=(0,q_.useState)(!1),{handleSessions:i,markInitialized:o,buffers:a,handlers:s}=e;(0,q_.useEffect)(()=>{let u=()=>{a.current?.clear();let d=s.current;if(d)for(let h of d.values())h("\x1Bc")},f=axr({...e,setSessions:i},d=>{t.current=d},u,n);return()=>{f(),t.current?.close()}},[i,o,a,s]);let l=(0,q_.useCallback)(()=>{let u=t.current;u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"history"}))},[]);return{wsRef:t,requestHistory:l,reconnecting:r}}function lxr(){let[e,t]=(0,j_.useState)([]),[r,n]=(0,j_.useState)([]),[i,o]=(0,j_.useState)(null),a=Mbr(),s=Ybr(),[l,u]=(0,j_.useState)(""),f=Bbr(),d=Vbr(),h=Gbr(),{initialized:p,markInitialized:m,syncSessions:g}=Obr(),y=(0,j_.useRef)(new Map),v=(0,j_.useRef)(new Map),b=jbr(g,t),{wsRef:x,requestHistory:S,reconnecting:C}=sxr({handleSessions:b,setHistory:n,setActiveId:o,...a,...s,setCurrentCwd:u,...f,...d,...h,markInitialized:m,buffers:y,handlers:v});return Lbr(e,o,Rbr(a.activeByRepo,e)),{sessions:e,history:r,activeId:i,setActiveId:o,...a,...s,currentCwd:l,...f,...d,...h,initialized:p,wsRef:x,buffers:y,handlers:v,requestHistory:S,reconnecting:C}}function cxr(){let e=lxr(),{wsRef:t,buffers:r,handlers:n,addPendingLaunch:i,activeId:o,sessions:a}=e,s=tbr(e.nodes),l=ibr(t,i),u=kbr(l,r,n);Qvr(o,a,e.history,l),Jvr(a,l);let f=Ebr(l,e.setActiveId,e.setViewingTranscriptSessionId);return{...e,...u,...f,nodeSelection:s}}var EB=L(ge(),1);var uxr="assist:sidebar-collapsed";function fxr(){let[e,t]=(0,EB.useState)(()=>Bd(uxr).length>0),r=(0,EB.useCallback)(()=>{t(n=>{let i=!n;return Fd(uxr,i?[!0]:[]),i})},[]);return(0,EB.useMemo)(()=>({collapsed:e,onToggleCollapsed:r}),[e,r])}var dxr=L(ge(),1);function hxr(){(0,dxr.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch("/api/hotkeys");if(!t.ok)return;let r=await t.json();e||p5.set(r)}catch{}})(),()=>{e=!0}},[])}var z0e=L(ge(),1);function pxr(){let[e,t]=(0,z0e.useState)(!0);return(0,z0e.useEffect)(()=>{let r=!1;return(async()=>{try{let i=await(await fetch("/api/session-layout")).json();r||t(!!i?.topBar)}catch{t(!0)}})(),()=>{r=!0}},[]),e}function mxr(){let e=cxr(),t=ope(e),r=qvr(e.currentCwd,e.history,t,e.sessions,e.nodeSelection);Dvr({selectedCwd:r.selectedCwd,selectedCardId:t,sessions:e.sessions,history:e.history,activeByRepo:e.activeByRepo,onSelect:e.selectSession});let{launch:n,viewLaunchedSession:i}=Xvr(e),o=pxr();hxr();let a=fxr();return Mvr("shell",{...e,selection:r,launch:n,topBar:o,sidebarCollapse:a}),{socket:e,selection:r,launch:n,viewLaunchedSession:i,topBar:o,sidebarCollapse:a}}var y0=L(z(),1),SGn={zIndex:e=>e.zIndex.drawer+1},CGn={minHeight:48};function gxr({mode:e,toggle:t}){let r=mxr(),{socket:n,selection:i,viewLaunchedSession:o}=r;return(0,y0.jsx)(Ryr,{shell:r,children:(0,y0.jsxs)(j$e.Provider,{value:n.daemonVersion,children:[(0,y0.jsx)(kvr,{mode:e,toggle:t,sessions:n.sessions,reconnecting:n.reconnecting}),(0,y0.jsx)(l1e,{position:"fixed",elevation:1,sx:SGn,children:(0,y0.jsx)(E1r,{socket:n,selection:i})}),(0,y0.jsx)($k,{variant:"dense",sx:CGn}),(0,y0.jsx)(Pvr,{socket:n,children:(0,y0.jsx)(g0r,{socket:n})}),(0,y0.jsx)(kyr,{socket:n,onViewLaunchedSession:o})]})})}var yxr=L(ge(),1);function vxr(){let[e,t]=(0,yxr.useState)(()=>{try{return localStorage.getItem("theme-mode")??"dark"}catch{return"dark"}});return{mode:e,toggle:()=>t(n=>{let i=n==="dark"?"light":"dark";try{localStorage.setItem("theme-mode",i)}catch{}return i})}}var Y_=L(z(),1),wGn={MuiButtonBase:{styleOverrides:{root:{cursor:"pointer","&.Mui-disabled":{cursor:"default"}}}},MuiLink:{styleOverrides:{root:{cursor:"pointer"}}}};function _Gn(){let{mode:e,toggle:t}=vxr(),r=(0,xxr.useMemo)(()=>w0({palette:{mode:e,...e==="dark"&&{background:{default:"#1e1e1e",paper:"#252526"}}},components:wGn}),[e]);return(0,Y_.jsxs)(UK,{theme:r,children:[(0,Y_.jsx)(AX,{}),(0,Y_.jsx)(gxr,{mode:e,toggle:t})]})}var kGn=A2e([{path:"*",element:(0,Y_.jsx)(_Gn,{})}]);function EGn(){return(0,Y_.jsx)(T2e,{router:kGn})}var bxr=document.getElementById("app");bxr&&(0,Txr.createRoot)(bxr).render((0,Y_.jsx)(EGn,{}));})();
3979
3979
  /*! Bundled license information:
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { Command } from "commander";
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@staff0rd/assist",
9
- version: "0.789.1",
9
+ version: "0.791.0",
10
10
  type: "module",
11
11
  main: "dist/index.js",
12
12
  bin: {
@@ -36076,6 +36076,19 @@ Two cases are still legitimate findings:
36076
36076
  1. A comment this change made stale or wrong. Recommend removing or correcting it.
36077
36077
  2. Genuinely misleading code. You may raise it, but the recommendation must be a clearer name, a smaller function, or a test. Only as a last resort, when none of those can carry the meaning, may you mention that \`assist code-comment\` exists for a single short comment.
36078
36078
 
36079
+ ## Tautological and vacuous tests
36080
+
36081
+ Flag tests added or changed by this change that cannot fail when the behaviour they claim to cover breaks. Do not flag pre-existing tests the change left untouched. Patterns:
36082
+
36083
+ 1. Asserting a mock returns what it was stubbed to return.
36084
+ 2. Computing the expected value with the code under test, or with a copy of its logic.
36085
+ 3. Asserting only that a mocked function was called, when that mock is the whole subject of the test.
36086
+ 4. Any test that would still pass if the implementation were broken.
36087
+ 5. No assertions, or only \`toBeDefined\`/truthy checks.
36088
+ 6. Snapshots of mocked output.
36089
+
36090
+ Recommendation: assert against an independent expected value (a literal or a hand-derived result) or real behaviour, or delete the test. Severity is **minor** by default; **major** when the test is the sole coverage of a behaviour this change introduces or modifies, since that behaviour is then effectively untested.
36091
+
36079
36092
  ## How to write the comment (Impact + Recommendation)
36080
36093
 
36081
36094
  1. Make clear *why* the issue is a bug.
@@ -36663,6 +36676,10 @@ Severity rubric (recalibrate each finding against this \u2014 reviewers tend to
36663
36676
 
36664
36677
  Default to the lower tier when uncertain. Code-style preferences, refactor suggestions, and "I would have written it differently" belong in nit \u2014 not major. A finding is only major if you can name a concrete failure mode or regression. If a reviewer marked something major but the impact reads as taste or hypothetical, downgrade it.
36665
36678
 
36679
+ ## Keep tautological-test findings
36680
+
36681
+ A finding that a test added or changed by this change is tautological or vacuous \u2014 it asserts a mock returns its stub, computes its expected value with the code under test, only checks a mock was called, has no real assertions, snapshots mocked output, or would still pass if the implementation broke \u2014 is a legitimate defect, not taste. Keep it even when only one reviewer raised it, and do not downgrade it below minor. Keep major when the test is the sole coverage of a behaviour the change introduces or modifies.
36682
+
36666
36683
  Rules:
36667
36684
  - \`confirmed\` = both reviewers raised it.
36668
36685
  - \`disputed\` = the reviewers disagreed on the diagnosis or fix.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@staff0rd/assist",
3
- "version": "0.789.1",
3
+ "version": "0.791.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {