@staff0rd/assist 0.783.0 → 0.784.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/claude/commands/add-command.md +1 -1
- package/dist/commands/sessions/web/bundle.js +1 -1
- package/dist/index.js +138 -51
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -211,9 +211,9 @@ Backlog item ids are written in an `a`-prefixed form (e.g. item 555 is `a555`) t
|
|
|
211
211
|
### Config and run commands
|
|
212
212
|
|
|
213
213
|
- `assist run <name> [params...]` - Run a configured command from assist.yml, or a backlog item (`a555` / `555`) when no command matches
|
|
214
|
-
- `assist run add` - Add a new run configuration to assist.yml and create a Claude command file
|
|
214
|
+
- `assist run add <name> <command> [args...] [--cwd <dir>] [--server [group]] [--port <port>] [--repo [name]]` - Add a new run configuration to assist.yml and create a Claude command file; `--server`/`--port` mark it as a dev server, and `--repo` writes it to the repo's shared db override instead (no command file)
|
|
215
215
|
- `assist run link <path> --prefix <prefix>` - Link run configurations from another project's assist.yml
|
|
216
|
-
- `assist run remove <name
|
|
216
|
+
- `assist run remove <name> [--repo [name]]` - Remove a run configuration and delete its Claude command file; `--repo` removes it from the repo's shared db override instead
|
|
217
217
|
|
|
218
218
|
A run entry's relative `cwd` (and a `link` path) resolves against the **repo root** - the directory holding `assist.yml` or `.claude/`, or the enclosing git repository when the repo has no project config, whichever config file the entry came from.
|
|
219
219
|
|
|
@@ -21,7 +21,7 @@ Run `assist run add <name> <command> [args...]` with the appropriate arguments.
|
|
|
21
21
|
assist run add lint oxlint --fix
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
If the command needs a working directory, use `--cwd <dir>`.
|
|
24
|
+
If the command needs a working directory, use `--cwd <dir>`. For a dev server, add `--server [group]` and optionally `--port <port>`. To share the entry across every node without touching the repo's `assist.yml`, add `--repo [name]` (writes the repo's shared db override; defaults to the current repo).
|
|
25
25
|
|
|
26
26
|
## Step 4: Verify
|
|
27
27
|
|
|
@@ -3973,7 +3973,7 @@ ${f.join(`
|
|
|
3973
3973
|
`)})}var V9=L(z(),1);function Kdr({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)(jdr,{entry:e,state:t,actions:r}),(0,V9.jsx)(Fe,{variant:"caption",color:"text.secondary",children:"History \xB7 ~/.assist/watchers/"}),(0,V9.jsx)(Ydr,{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),IHn={display:"flex",gap:.5,flexWrap:"wrap",justifyContent:{xs:"flex-start",sm:"flex-end"},gridColumn:{xs:"1 / -1",sm:"auto"}};function Xdr({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:IHn,children:[t.kind==="ready"&&(0,q9.jsx)(rge,{entry:e,actions:r}),t.kind==="diverged"&&(0,q9.jsx)(Jme,{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 DHn={ready:"warning",diverged:"error"},Zdr=e=>t=>{let r=DHn[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 Qdr=L(z(),1),Jdr=ft((0,Qdr.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward");var ehr=L(z(),1),thr=ft((0,ehr.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 rhr=L(z(),1),nhr=ft((0,rhr.jsx)("path",{d:"M6 19h4V5H6zm8-14v14h4V5z"}),"Pause");var ihr=L(z(),1),ohr=ft((0,ihr.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 ahr=L(z(),1),shr=ft((0,ahr.jsx)("path",{d:"M1 21h22L12 2zm12-3h-2v-2h2zm0-4h-2v-4h2z"}),"Warning");var U1=L(z(),1),NHn={ok:{tone:"success",icon:(0,U1.jsx)(j0,{})},ready:{tone:"warning",icon:(0,U1.jsx)(Jdr,{})},diverged:{tone:"error",icon:(0,U1.jsx)(shr,{})},retrying:{tone:"warning",icon:(0,U1.jsx)(Aee,{})},paused:{tone:"neutral",icon:(0,U1.jsx)(nhr,{})},off:{tone:"neutral",icon:(0,U1.jsx)(ohr,{})},unavailable:{tone:"neutral",icon:(0,U1.jsx)(thr,{})}};function OHn(e,t){return t==="neutral"?e.palette.text.secondary:e.palette[t].main}function lhr({state:e}){let{tone:t,icon:r}=NHn[e.kind];return(0,U1.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:OHn(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 Zj=L(z(),1);function chr({state:e}){return(0,Zj.jsxs)(ue,{sx:{...Qme,gridColumn:{xs:"2",sm:"auto"},gap:.25},children:[(0,Zj.jsx)(lhr,{state:e}),(0,Zj.jsx)(Fe,{variant:"caption",color:"text.secondary",noWrap:!0,children:e.line})]})}var W1=L(z(),1),uhr={gridColumn:{xs:"2",sm:"auto"}},BHn={fontFamily:"'Roboto Mono', ui-monospace, Menlo, monospace",fontSize:12,fontVariantNumeric:"tabular-nums"};function fhr({entry:e}){let t=e.status;if(!t)return(0,W1.jsx)(Fe,{variant:"caption",color:"text.secondary",sx:uhr,children:"\u2014"});let r=t.running!==t.built;return(0,W1.jsxs)(ue,{sx:{...uhr,display:"flex",flexDirection:"column"},children:[(0,W1.jsxs)(ue,{component:"span",sx:BHn,children:["v",t.running,r&&(0,W1.jsxs)(W1.Fragment,{children:[" ",(0,W1.jsx)(ue,{component:"span",sx:{color:"warning.main"},children:"\u2192"})," ","v",t.built]})]}),(0,W1.jsx)(Fe,{variant:"caption",color:"text.secondary",children:r?"running \u2192 built":"running"})]})}function ige(e){return(e.status?.restart.length??0)>0}function dhr(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 m_(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}`:""}`}:ige(e)?{kind:"ready",label:"Restart to update",line:`restart ${t.restart.map(U9).join(" + ")}${r.paused?" \xB7 paused":""}`}:dhr(r,n)}var V1=L(z(),1);function phr({entry:e,actions:t}){let[r,n]=(0,hhr.useState)(!1),i=m_(e);return(0,V1.jsxs)(ue,{component:"article",sx:{"& + &":{borderTop:1,borderColor:"divider"}},children:[(0,V1.jsxs)(ue,{sx:Zdr(i.kind),children:[(0,V1.jsx)(Hdr,{open:r,label:`${r?"Hide":"Show"} history for ${e.name}`,onToggle:()=>n(o=>!o)}),(0,V1.jsx)(Udr,{entry:e}),(0,V1.jsx)(fhr,{entry:e}),(0,V1.jsx)(chr,{state:i}),(0,V1.jsx)(Xdr,{entry:e,state:i,actions:t})]}),r&&(0,V1.jsx)(Kdr,{entry:e,state:i,actions:t})]})}var mhr=L(z(),1),oge=ft((0,mhr.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 b$e=L(ge(),1);var j9=L(z(),1);function ghr({entries:e,actions:t}){let[r,n]=(0,b$e.useState)(!1),[i,o]=(0,b$e.useState)(!1),a=e.filter(l=>m_(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)(oge,{}),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 yhr(e){let t=e.map(o=>m_(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 Phr=L(ge(),1);function vhr(e,t){return`${e}:${t}`}var x$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 bhr(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 FHn=5e3,xhr={pause:"Pausing",resume:"Resuming",check:"Checking"};function Thr(e,t){let{mark:r,setError:n,setBack:i}=e,o=(0,x$e.useCallback)(async(s,l)=>{r(s.name,xhr[l]);let u=await bhr(s,l);return u&&n(`${xhr[l]} ${s.name} failed: ${u}`),r(s.name),t(),!u&&l==="check"&&setTimeout(t,FHn),!u},[r,n,t]),a=(0,x$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 T$e=L(ge(),1);var G1=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 g_(e,t){let r=t?`&node=${encodeURIComponent(t)}`:"";return fetch(`/api/restart?target=${e}${r}`,{method:"POST"})}var w2=L(ge(),1);var $Hn="/api/session-layout";async function zHn(){try{return(await fetch($Hn,{cache:"no-store"})).ok}catch{return!1}}async function Shr(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 HHn(){return{sawDisconnect:!1,waiting:!1,abandoned:!0}}function Chr(e,t,r){let n=(0,w2.useRef)(HHn()),i=(0,w2.useRef)(r);i.current=r,(0,w2.useEffect)(()=>{let s=n.current;if(!(!e||s.abandoned)){if(t){s.sawDisconnect=!0;return}!s.sawDisconnect||s.waiting||(s.waiting=!0,Shr(()=>s.abandoned).then(l=>{l&&i.current()}))}},[e,t]);let o=(0,w2.useCallback)(()=>{n.current.abandoned=!0},[]),a=(0,w2.useCallback)(()=>{n.current.abandoned=!0,n.current={sawDisconnect:!1,waiting:!1,abandoned:!1}},[]);return(0,w2.useEffect)(()=>o,[o]),{arm:a,abandon:o}}var UHn=15e3;function y_(e,t,r){let[n,i]=(0,G1.useState)(!1),[o,a]=(0,G1.useState)(null),s=(0,G1.useRef)(void 0),{arm:l,abandon:u}=Chr(n,t,()=>{clearTimeout(s.current),r?.(),globalThis.location.reload()});(0,G1.useEffect)(()=>()=>clearTimeout(s.current),[]);let f=(0,G1.useCallback)(async h=>{i(!0),l(),s.current=setTimeout(()=>{u(),i(!1),a("Web server did not come back")},UHn);try{if(!(await g_(h)).ok)throw new Error("restart failed")}catch{u(),clearTimeout(s.current),i(!1),a("Failed to restart web server")}},[l,u]),d=(0,G1.useCallback)(()=>f(e),[f,e]);return{pending:n,error:o,clearError:()=>a(null),restart:d,restartTo:f}}function age(e){return e.local&&(e.status?.restart.includes("webserver")??!1)}async function sge(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 WHn=2e3,VHn=9e4,GHn=e=>new Promise(t=>setTimeout(t,e));async function whr(e,t){let r=Date.now()+VHn;for(;Date.now()<r;){await GHn(WHn);let n=await sge(e.name,e.local),i=n.status;if(i?.daemonReachable&&!t.some(o=>i.restart.includes(o)))return n}}async function _hr(e,t,r){let n;try{n=await g_(t,e.local?void 0:e.name)}catch{}if(!n?.ok)throw new Error(await Y9(n));let i=await whr(e,r);if(!i?.status)throw new Error(`${e.name} did not come back`);return i.status.running}async function khr(e,t,r){try{let n=await _hr(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 Ehr(e){return e.length>1?"both":e[0]}function Rhr(e,t,r){let n=y_("webserver",e),i=(0,T$e.useCallback)(async a=>{let s=Ehr(a.status?.restart??[]);if(s){if(t.mark(a.name,"Restarting"),age(a))return n.restartTo(s);await khr(a,s,t),t.mark(a.name),r()}},[n,t,r]),o=(0,T$e.useCallback)(async a=>{let s=a.filter(l=>m_(l).kind==="ready");await Promise.all(s.filter(l=>!age(l)).map(l=>i(l)));for(let l of s.filter(age))await i(l)},[i]);return{restart:i,restartReady:o,localError:n.error,clearLocalError:n.clearError}}var X9=L(ge(),1);function Ahr(){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 Lhr(e,t){let{refresh:r}=z9(),n=Ahr(),i=Rhr(e,n,r),o=Thr(n,r),a=FP(t),s=(0,Phr.useCallback)(l=>{let u=l.status?.loop.escalationId;u&&a(l.local?u:vhr(l.name,u))},[a]);return{...i,...o,openFix:s,notices:n}}var t0=L(z(),1);function Mhr({reconnecting:e,selectSession:t}){let{entries:r,loading:n}=z9(),i=Lhr(e,t),{notices:o}=i;return(0,t0.jsxs)(zl,{loading:n,header:(0,t0.jsxs)(ue,{sx:{display:"flex",alignItems:"flex-end",gap:2,flexWrap:"wrap",mb:3},children:[(0,t0.jsxs)(ue,{sx:{flex:"1 1 auto"},children:[(0,t0.jsx)(Fe,{variant:"h5",component:"h1",children:"Updates"}),(0,t0.jsx)(Fe,{variant:"body2",color:"text.secondary",children:yhr(r)})]}),(0,t0.jsx)(ghr,{entries:r,actions:i})]}),children:[(0,t0.jsx)(an,{variant:"outlined",component:"section","aria-label":"Nodes",children:r.map(a=>(0,t0.jsx)(phr,{entry:a,actions:i},a.name))}),(0,t0.jsx)(Kj,{notices:{...o,error:o.error??i.localError,clearError:()=>{o.clearError(),i.clearLocalError()}}})]})}var xpr=L(ge(),1);var Z9=L(ge(),1);function lge(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 Dhr=L(ge(),1);function cge(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 uge(e){let t=o=>o.startsWith("local:"),r=o=>{let a=cge(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,cge(o));continue}let a=r(o),s=(n.get(a)??0)>1;i.set(o,s?cge(o):a)}return i}var Qj={field:"lastPhase",direction:"desc"};var Jj="all",eY="all";async function Ihr(e,t,r){let n=new URLSearchParams({page:String(e),pageSize:String(t)});r.origin!==Jj&&n.set("origin",r.origin),r.status!==eY&&n.set("status",r.status),r.sort.field!==Qj.field&&n.set("sort",r.sort.field),r.sort.direction!==Qj.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 tY=L(z(),1);function Nhr({origins:e,origin:t,onChange:r}){let n=(0,Dhr.useMemo)(()=>uge(e.map(o=>o.origin)),[e]),i=e.reduce((o,a)=>o+a.count,0);return(0,tY.jsxs)(ni,{select:!0,size:"small",label:"Repo",value:t,onChange:o=>r(o.target.value),sx:{minWidth:220},children:[(0,tY.jsx)(un,{value:Jj,children:`All repos (${i})`}),e.map(o=>(0,tY.jsx)(un,{value:o.origin,children:`${n.get(o.origin)??o.origin} (${o.count})`},o.origin))]})}var S$e=L(z(),1),qHn=[{value:eY,label:"All"},{value:"done",label:"Done"},{value:"running",label:"Running"}];function Ohr({status:e,onChange:t}){return(0,S$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(r,n)=>n&&t(n),"aria-label":"Filter items by status",children:qHn.map(r=>(0,S$e.jsx)(hs,{value:r.value,children:r.label},r.value))})}var Q9=L(z(),1),jHn={display:"flex",alignItems:"center",gap:2,flexWrap:"wrap",mb:2},YHn="Repos show their bare name, or org/repo when two share one. Totals sum every phase's recorded usage.";function Bhr({origins:e,origin:t,onOriginChange:r,status:n,onStatusChange:i}){return(0,Q9.jsxs)(ue,{sx:jHn,children:[(0,Q9.jsx)(Ohr,{status:n,onChange:i}),(0,Q9.jsx)(Nhr,{origins:e,origin:t,onChange:r}),(0,Q9.jsx)(Fe,{variant:"caption",color:"text.disabled",children:YHn})]})}var Khr=L(ge(),1);function zd(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function r0(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 dge=L(z(),1),KHn={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},Fhr={display:"block",fontSize:"0.75rem",color:"text.disabled",whiteSpace:"nowrap"},XHn={...Fhr,fontStyle:"italic"};function fge({total:e,perPhase:t,partial:r}){return(0,dge.jsxs)(_n,{align:"right",sx:KHn,children:[e,t?(0,dge.jsx)(Fe,{component:"span",sx:r?XHn:Fhr,children:t}):null]})}var rY=L(z(),1),ZHn={width:"100%",maxWidth:0},QHn={display:"block",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},JHn={display:"block",mt:"2px",fontSize:"0.75rem",color:"text.secondary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function $hr({id:e,name:t,type:r,repoLabel:n}){return(0,rY.jsxs)(_n,{sx:ZHn,children:[(0,rY.jsx)(xn,{component:ys,to:BT(e),underline:"hover",color:"text.primary",title:t,sx:QHn,children:t}),(0,rY.jsxs)(Fe,{component:"span",sx:JHn,children:[so(e)," \xB7 ",r," \xB7 ",n]})]})}function zhr(e){let t=Math.max(1,e.recordedPhases);return{active:`${r0(e.activeMs/t)} / phase`,tokens:`${zd(Math.round((e.tokensUp+e.tokensDown)/t))} / phase`}}function Hhr(e){if(!(e.status==="done"||e.recordedPhases>e.phaseCount))return`${e.recordedPhases} of ${e.phaseCount} phases`}var hge={story:"info",bug:"error"},pge={todo:"default","in-progress":"warning",done:"success",wontdo:"error"};var eUn=new Set(["done","wontdo"]);function Uhr(e){return eUn.has(e)?{label:e,color:pge[e]}:{label:"running",color:"warning"}}var C$e=L(z(),1),tUn={height:20,fontSize:"0.6875rem"};function Whr({status:e}){let t=Uhr(e);return(0,C$e.jsx)(_n,{children:(0,C$e.jsx)(bn,{label:t.label,size:"small",variant:"outlined",color:t.color,sx:tUn})})}var n0=L(z(),1),Vhr={whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"};function Ghr({row:e,repoLabel:t}){let r=zhr(e);return(0,n0.jsxs)(Gu,{hover:!0,children:[(0,n0.jsx)($hr,{id:e.id,name:e.name,type:e.type,repoLabel:t}),(0,n0.jsx)(Whr,{status:e.status}),(0,n0.jsx)(fge,{total:String(e.phaseCount||e.recordedPhases),perPhase:Hhr(e),partial:!0}),(0,n0.jsx)(fge,{total:r0(e.activeMs),perPhase:r.active}),(0,n0.jsx)(fge,{total:`\u2191 ${zd(e.tokensUp)} \u2193 ${zd(e.tokensDown)}`,perPhase:r.tokens}),(0,n0.jsx)(_n,{align:"right",sx:Vhr,children:(0,n0.jsxs)(ue,{component:"span",sx:{color:KJ(e.peakContextPct)},children:[Math.round(e.peakContextPct),"%"]})}),(0,n0.jsx)(_n,{align:"right",sx:Vhr,children:e.lastPhaseAt?fa(e.lastPhaseAt):"\u2014"})]})}var qhr=[{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 Fm=L(z(),1),rUn={"& th":{whiteSpace:"nowrap"}};function jhr({column:e}){return e.tooltip?(0,Fm.jsx)(lr,{title:e.tooltip,describeChild:!0,children:(0,Fm.jsx)("span",{children:e.label})}):(0,Fm.jsx)(Fm.Fragment,{children:e.label})}function Yhr({sort:e,onSort:t}){return(0,Fm.jsx)(Bk,{sx:rUn,children:(0,Fm.jsx)(Gu,{children:qhr.map(r=>{let n=r.sort,i=n!==void 0&&e.field===n;return(0,Fm.jsx)(_n,{align:r.numeric?"right":"left",sortDirection:i?e.direction:!1,children:n===void 0?(0,Fm.jsx)(jhr,{column:r}):(0,Fm.jsx)(hve,{active:i,direction:i?e.direction:"desc",onClick:()=>t(n),children:(0,Fm.jsx)(jhr,{column:r})})},r.label)})})})}var mR=L(z(),1),nUn={"& td, & th":{px:1.5}};function Xhr({rows:e,origins:t,sort:r,onSort:n}){let i=(0,Khr.useMemo)(()=>uge([...t,...e.map(o=>o.origin)]),[t,e]);return(0,mR.jsx)(Ok,{component:an,children:(0,mR.jsxs)(kv,{size:"small",sx:nUn,children:[(0,mR.jsx)(Yhr,{sort:r,onSort:n}),(0,mR.jsx)(Ev,{children:e.map(o=>(0,mR.jsx)(Ghr,{row:o,repoLabel:i.get(o.origin)??o.origin},o.id))})]})})}function Zhr(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:r0(e.medianActiveMs),activeFoot:`${r0(e.medianActiveMs/t)} per phase`,tokens:zd(Math.round(e.medianTokens)),tokensFoot:`${zd(Math.round(e.medianTokens/t))} per phase`}}var J9=L(z(),1),Qhr={display:"block"},iUn={fontWeight:400,fontVariantNumeric:"tabular-nums"};function nY({label:e,value:t,foot:r}){return(0,J9.jsxs)(ue,{children:[(0,J9.jsx)(Fe,{variant:"caption",color:"text.secondary",sx:Qhr,children:e}),(0,J9.jsx)(Fe,{variant:"h5",sx:iUn,children:t}),r?(0,J9.jsx)(Fe,{variant:"caption",color:"text.disabled",sx:Qhr,children:r}):null]})}var gR=L(z(),1),oUn={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 Jhr({summary:e}){let t=Zhr(e);return(0,gR.jsxs)(an,{sx:oUn,children:[(0,gR.jsx)(nY,{label:"Items with recorded usage",value:t.items,foot:t.itemsFoot}),(0,gR.jsx)(nY,{label:"Median phases",value:t.phases}),(0,gR.jsx)(nY,{label:"Median active time",value:t.active,foot:t.activeFoot}),(0,gR.jsx)(nY,{label:"Median tokens",value:t.tokens,foot:t.tokensFoot})]})}var rp=L(z(),1);function epr({items:e,data:t}){let{rows:r,total:n,page:i,pageSize:o}=e,{ref:a,height:s}=lge(r.length,o);return(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(Jhr,{summary:t.summary}),(0,rp.jsx)(Bhr,{origins:t.origins,origin:e.origin,onOriginChange:e.selectOrigin,status:e.status,onStatusChange:e.selectStatus}),n===0?(0,rp.jsx)(Fe,{color:"text.secondary",align:"center",sx:{py:6},children:"No items match this filter."}):(0,rp.jsxs)(rp.Fragment,{children:[(0,rp.jsx)(ue,{ref:a,sx:{minHeight:s},children:(0,rp.jsx)(Xhr,{rows:r,origins:t.origins.map(l=>l.origin),sort:e.sort,onSort:e.sortBy})}),(0,rp.jsx)(i$,{component:"div",count:n,page:i,rowsPerPage:o,rowsPerPageOptions:[o],onPageChange:(l,u)=>e.setPage(u)})]})]})}var _2=L(z(),1);function tpr({items:e}){let{data:t}=e;return(0,_2.jsxs)(_2.Fragment,{children:[(0,_2.jsx)(ue,{sx:{height:4,mb:1},children:e.fetching&&(0,_2.jsx)(Nk,{})}),t?t.origins.length===0?(0,_2.jsx)(Fe,{color:"text.secondary",align:"center",sx:{py:6},children:"No item usage recorded yet."}):(0,_2.jsx)(epr,{items:e,data:t}):null]})}function w$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 mge(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 aUn(e,t,r,n){let i=w$e(t,r,n);if(i!=null)return e/i}function v_(e,t,r,n){let i=aUn(e,t,r,n);return i==null?"ok":i>100?"over":i>75?"warn":"ok"}var sUn=["five_hour","seven_day"],lUn=["claude","codex","pi"];function rpr(e){let[t,r]=e.includes(":")?e.split(":",2):["claude",e],n=lUn.find(o=>o===t),i=sUn.find(o=>o===r);if(!(!n||!i)&&!(n==="claude"&&e.includes(":")))return{harness:n,window:i}}var npr={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=rpr(e);if(!t)return npr.five_hour;let r=npr[t.window];return t.harness==="claude"?r:{...r,label:`${gu(t.harness)} ${r.label}`}}var cUn={ok:"success.main",warn:"warning.main",over:"error.main"};function b_(e){return cUn[e]}var aY=L(z(),1),uUn={ok:"success",warn:"warning",over:"error"};function ipr({percentage:e,level:t}){return(0,aY.jsxs)(ue,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,aY.jsx)(Nk,{variant:"determinate",value:Math.min(100,e),color:uUn[t],sx:{flexGrow:1,height:8,borderRadius:1}}),(0,aY.jsxs)(ue,{sx:{minWidth:40,textAlign:"right",color:b_(t)},children:[Math.round(e),"%"]})]})}function opr(e){return e.avgContextPct==null?"\u2014":`${Math.round(e.avgContextPct)}%`}var fUn=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"});function _$e(e){return fUn.format(e)}var gge=L(z(),1);function apr({peak:e}){return(0,gge.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:(0,gge.jsx)(lr,{title:`Cycle started ${_$e(new Date(e.createdAt))}`,children:(0,gge.jsx)("span",{children:_$e(new Date(e.resetsAt*1e3))})})})}var lpr=L(z(),1);function spr(){return(0,lpr.jsx)(bn,{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 cpr(e){return!e.tokensUp&&!e.tokensDown?"\u2014":`\u2191 ${zd(e.tokensUp)} \u2193 ${zd(e.tokensDown)}`}var i0=L(z(),1);function upr({peak:e,now:t}){let{label:r,seconds:n,tint:i}=eB(e.window),o=v_(e.usedPercentage,e.resetsAt,n,t);return(0,i0.jsxs)(Gu,{sx:a=>({backgroundColor:i?a.palette.mode==="dark"?i.dark:i.light:void 0}),children:[(0,i0.jsxs)(_n,{children:[r,e.resetDetected&&(0,i0.jsx)(spr,{})]}),(0,i0.jsx)(_n,{sx:{minWidth:160},children:(0,i0.jsx)(ipr,{percentage:e.usedPercentage,level:o})}),(0,i0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:opr(e)}),(0,i0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:e.phaseCount??0}),(0,i0.jsx)(_n,{align:"right",sx:{whiteSpace:"nowrap"},children:cpr(e)}),(0,i0.jsx)(apr,{peak:e})]})}var yge=L(ge(),1);function x_(e){let[t,r]=(0,yge.useState)(()=>Math.floor(Date.now()/1e3));return(0,yge.useEffect)(()=>{let n=setInterval(()=>r(Math.floor(Date.now()/1e3)),e);return()=>clearInterval(n)},[e]),t}var pc=L(z(),1);function fpr({peaks:e}){let t=x_(3e4);return(0,pc.jsx)(Ok,{component:an,children:(0,pc.jsxs)(kv,{size:"small",children:[(0,pc.jsx)(Bk,{sx:{"& th":{whiteSpace:"nowrap"}},children:(0,pc.jsxs)(Gu,{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)(Ev,{children:e.map(r=>(0,pc.jsx)(upr,{peak:r,now:t},`${r.window}-${r.resetsAt}-${r.segment}`))})]})})}var T_=L(z(),1);function dpr({rows:e,total:t,page:r,pageSize:n,onPageChange:i}){let{ref:o,height:a}=lge(e.length,n);return(0,T_.jsxs)(T_.Fragment,{children:[(0,T_.jsx)(ue,{ref:o,sx:{minHeight:a},children:(0,T_.jsx)(fpr,{peaks:e})}),(0,T_.jsx)(i$,{component:"div",count:t,page:r,rowsPerPage:n,rowsPerPageOptions:[n],onPageChange:(s,l)=>i(l)})]})}var sY=L(ge(),1);function S_(){let[e,t]=(0,sY.useState)(!1),[r,n]=(0,sY.useState)(!1);return(0,sY.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 k$e=L(z(),1),hpr=["five_hour","seven_day"],dUn=["codex:five_hour","codex:seven_day"];function hUn(e){let t=e?[...hpr,...dUn]:hpr;return[{value:"all",label:"All"},...t.map(r=>({value:r,label:eB(r).label}))]}function ppr({window:e,onChange:t}){let{exposeCodexActions:r}=S_();return(0,k$e.jsx)(du,{size:"small",exclusive:!0,value:e,onChange:(n,i)=>i&&t(i),"aria-label":"Filter peaks by rate-limit window",children:hUn(r).map(n=>(0,k$e.jsx)(hs,{value:n.value,children:n.label},n.value))})}var q1=L(z(),1);function mpr({history:e}){let{window:t,total:r}=e;return(0,q1.jsxs)(q1.Fragment,{children:[(0,q1.jsx)(ppr,{window:t,onChange:e.selectWindow}),(0,q1.jsx)(ue,{sx:{height:4,my:1},children:e.fetching&&(0,q1.jsx)(Nk,{})}),r===0?(0,q1.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,q1.jsx)(dpr,{rows:e.rows,total:r,page:e.page,pageSize:e.pageSize,onPageChange:e.setPage})]})}var bge=L(ge(),1);async function gpr(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 C_=L(ge(),1);function vge(e,t,r=!0){let[n,i]=(0,C_.useState)(0),[o,a]=(0,C_.useState)(null),[s,l]=(0,C_.useState)(!1),[u,f]=(0,C_.useState)(null);(0,C_.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,C_.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 pUn=30;function ypr(){let[e,t]=(0,bge.useState)("all"),r=(0,bge.useCallback)((o,a)=>gpr(o,a,e),[e]),n=vge(r,pUn);return{...n,window:e,selectWindow:o=>{t(o),n.setPage(0)}}}var tB=L(ge(),1);function vpr(e,t){return e.field!==t?{field:t,direction:"desc"}:{field:t,direction:e.direction==="desc"?"asc":"desc"}}var mUn=30;function bpr(e){let[t,r]=(0,tB.useState)(Jj),[n,i]=(0,tB.useState)(eY),[o,a]=(0,tB.useState)(Qj),s=(0,tB.useCallback)((h,p)=>Ihr(h,p,{origin:t,status:n,sort:o}),[t,n,o]),l=vge(s,mUn,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=>vpr(p,h)),l.setPage(0)}}}var w_=L(z(),1),gUn={borderBottom:1,borderColor:"divider",mb:2};function Tpr(){let[e,t]=(0,xpr.useState)("limits"),r=ypr(),n=bpr(e==="items");if(r.error)throw r.error;if(n.error)throw n.error;return(0,w_.jsxs)(zl,{loading:!r.loaded,title:"Usage history",maxWidth:"lg",children:[(0,w_.jsxs)($k,{value:e,onChange:(i,o)=>t(o),textColor:"inherit",indicatorColor:"secondary",sx:gUn,"aria-label":"Usage history views",children:[(0,w_.jsx)(_v,{label:"Rate limits",value:"limits"}),(0,w_.jsx)(_v,{label:"Items",value:"items"})]}),e==="limits"?(0,w_.jsx)(mpr,{history:r}):(0,w_.jsx)(tpr,{items:n})]})}var xge=L(ge(),1),E$e=(0,xge.createContext)([]);function Tge(){return(0,xge.useContext)(E$e)}var Rmr=L(ge(),1);function as(){let{selectedCwd:e}=$n();return e||void 0}var k2=L(ge(),1);var Cpr=L(ge(),1);var yUn=new Set(["todo","done","all"]);function Spr(e){return e&&yUn.has(e)?e:"todo"}var wpr="backlog-filter",R$e=new Set,_pr=vUn();function vUn(){try{return Spr(localStorage.getItem(wpr))}catch{return"todo"}}function bUn(e){return R$e.add(e),()=>R$e.delete(e)}function xUn(){return _pr}function TUn(e){_pr=e;try{localStorage.setItem(wpr,e)}catch{}for(let t of R$e)t()}function rB(){return[(0,Cpr.useSyncExternalStore)(bUn,xUn),TUn]}function kpr(){let e=as(),t=yr(),[r]=rB(),[n,i]=(0,k2.useState)(""),[o,a]=(0,k2.useState)(null),[s,l]=(0,k2.useState)(!1),[u,f]=(0,k2.useState)(e),d=(0,k2.useRef)(void 0);return e!==u&&(f(e),a(null),l(n.trim().length>0)),(0,k2.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 zT({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 Ppr={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}},SUn={"&::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"}},Epr={position:"relative",zIndex:2},Rpr=8,A$e=24,CUn=wa`
|
|
3974
3974
|
from { background-position: 0 0; }
|
|
3975
3975
|
to { background-position: 0 ${A$e}px; }
|
|
3976
|
-
`,Lpr={...Ppr,borderColor:"warning.main",borderLeft:4,borderLeftColor:"warning.main",bgcolor:e=>Ea(e.palette.warning.main,.08)},wUn={...Lpr,borderLeftColor:"transparent",backgroundImage:e=>`repeating-linear-gradient(to bottom, ${e.palette.warning.main} 0 ${Rpr}px, transparent ${Rpr}px ${A$e}px)`,backgroundOrigin:"border-box",backgroundRepeat:"repeat-y",backgroundSize:`4px ${A$e}px`,animation:`${CUn} 0.9s linear infinite`,"@media (prefers-reduced-motion: reduce)":{animation:"none"}},Apr={"& .MuiButtonBase-root:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:"2px"}},j1={card:Ppr,inProgressCard:Lpr,inProgressRunningCard:wUn,main:{minWidth:0,textAlign:"left"},stretchedNameLink:{display:"block",fontWeight:500,color:"text.primary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",...SUn},meta:{display:"flex",alignItems:"center",gap:1,...Epr,width:"fit-content",maxWidth:"100%",fontSize:"0.75rem",color:"text.secondary","& a, & p":{fontSize:"0.75rem"},...Apr},id:{color:"text.disabled"},actions:{display:"flex",alignItems:"center",gap:1,flexShrink:0,...Epr,...Apr}};function Sge(e){let t=e.peakContextPct>0?` \xB7 \u2593 ${Math.round(e.peakContextPct)}%`:"";return`\u2191 ${zd(e.tokensUp)} \u2193 ${zd(e.tokensDown)} \xB7 \u23F1 ${r0(e.activeMs)}${t}`}var Ipr=L(z(),1),_Un={width:6,height:6,borderRadius:"50%",bgcolor:"currentColor",flexShrink:0};function Mpr(){return(0,Ipr.jsx)(ue,{component:"span",sx:_Un})}var lY=L(z(),1),Dpr={display:"inline-flex",alignItems:"center",gap:.625,color:"warning.main",fontWeight:500,fontSize:"0.75rem",whiteSpace:"nowrap",borderRadius:1};function Npr({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,lY.jsx)(Mpr,{});if(!t)return(0,lY.jsxs)(ue,{component:"span",sx:Dpr,children:[o,i]});let a=()=>{r?.(t.id),n("/sessions")};return(0,lY.jsxs)(Dn,{sx:Dpr,title:`Open the ${t.status} session`,onClick:a,children:[o,i]})}var np=L(z(),1),kUn={display:"inline-flex",alignItems:"center",gap:.5},EUn={width:8,height:8,borderRadius:"50%",flexShrink:0},RUn={whiteSpace:"nowrap"};function AUn({type:e}){let t=hge[e];return(0,np.jsxs)(ue,{component:"span",sx:kUn,children:[(0,np.jsx)(ue,{component:"span",sx:{...EUn,bgcolor:`${t}.main`}}),e]})}function PUn({item:e}){return e.usageTotal?(0,np.jsx)(lr,{title:Sge(e.usageTotal),children:(0,np.jsx)(ue,{component:"span",sx:RUn,children:`\u23F1 ${r0(e.usageTotal.activeMs)}`})}):null}function Opr({item:e,openSession:t,onSelectSession:r}){return(0,np.jsxs)(ue,{sx:j1.meta,children:[(0,np.jsx)(ue,{component:"span",sx:j1.id,children:so(e.id)}),(0,np.jsx)(AUn,{type:e.type}),(0,np.jsx)(Npr,{item:e,openSession:t,onSelectSession:r}),(0,np.jsx)(cP,{jiraKey:e.jiraKey}),(0,np.jsx)(lP,{githubIssue:e.githubIssue,variant:"icon"}),(0,np.jsx)(PUn,{item:e})]})}function Bpr(e,t){return e.filter(r=>wP(r)?.itemId===t).reduce((r,n)=>r&&r.startedAt>=n.startedAt?r:n,void 0)}var $pr=L(z(),1),LUn={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},MUn={todo:"text.disabled","in-progress":"warning.main",done:"success.main",wontdo:"error.main"};function IUn(e){return{fontSize:"1.125rem",flexShrink:0,color:MUn[e]}}function Fpr({status:e}){return(0,$pr.jsx)(Fe,{sx:IUn(e),children:LUn[e]})}function Cge(e){return e.status==="todo"||e.status==="in-progress"}function DUn(e){if(e.status==="done")return e.totalPhases;if(e.status==="in-progress")return e.currentPhase}function NUn(e,t,r){return r?"complete":e<t?"done":e===t?"current":"remaining"}function zpr(e){let t=e.totalPhases,r=DUn(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:NUn(o+1,r,n)}))}}var nB=L(z(),1),OUn={done:"text.secondary",current:"warning.main",remaining:"divider",complete:"success.main"},BUn={display:"inline-flex",alignItems:"center",gap:.5,flexShrink:0},FUn={fontSize:"0.6875rem",color:"text.secondary",fontVariantNumeric:"tabular-nums"},$Un={display:"inline-flex",alignItems:"center",gap:"2px"},zUn={width:6,height:12,borderRadius:"1px",flexShrink:0};function Hpr({item:e}){let t=zpr(e);return t?(0,nB.jsxs)(ue,{sx:BUn,title:`Phase ${t.reached} of ${t.total}`,children:[(0,nB.jsx)(ue,{component:"span",sx:FUn,children:`${t.reached}/${t.total}`}),(0,nB.jsx)(ue,{component:"span",sx:$Un,"aria-hidden":!0,children:t.segments.map(r=>(0,nB.jsx)(ue,{component:"span","data-segment":r.kind,sx:{...zUn,bgcolor:OUn[r.kind]}},r.phase))})]}):null}var smr=L(ge(),1);var kge=L(ge(),1);var cY=L(z(),1);function Upr({tooltip:e,disabled:t,onClick:r}){return(0,cY.jsx)(lr,{title:e,children:(0,cY.jsx)(ue,{component:"span",sx:{display:"flex"},children:(0,cY.jsx)(qt,{startIcon:(0,cY.jsx)(Op,{}),disabled:t,onClick:r,children:"Build"})})})}var P$e=L(z(),1);function wge(e){let t=[];return e.exposeCodexActions&&t.push({kind:"codex",label:"with Codex"}),e.exposePiActions&&t.push({kind:"pi",label:"with pi"}),t}function _ge({anchorEl:e,open:t,onClose:r,options:n,onSelect:i,stop:o}){return(0,P$e.jsx)(Dl,{anchorEl:e,open:t,onClose:r,onClick:o,children:n.map(a=>(0,P$e.jsx)(un,{onClick:s=>{o(s),i(a.kind)},children:a.label},a.kind))})}var Y1=L(z(),1);function Wpr({tooltip:e,disabled:t,onBuild:r,onSelectHarness:n}){let i=wge(S_()),o=(0,kge.useRef)(null),[a,s]=(0,kge.useState)(!1),l=u=>u.stopPropagation();return(0,Y1.jsxs)(Y1.Fragment,{children:[(0,Y1.jsxs)(Q2,{ref:o,variant:"contained",color:"success",size:"small",disabled:t,children:[(0,Y1.jsx)(Upr,{tooltip:e,disabled:t,onClick:u=>{l(u),r()}}),i.length>0&&(0,Y1.jsx)(qt,{"aria-label":"Build with a different harness",onClick:u=>{l(u),s(!0)},children:(0,Y1.jsx)(zp,{})})]}),(0,Y1.jsx)(_ge,{anchorEl:o.current,open:a,onClose:()=>s(!1),options:i,onSelect:u=>{s(!1),n(u)},stop:l})]})}var Vpr=L(z(),1),iB=ft((0,Vpr.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 __=L(z(),1),HUn={vertical:"bottom",horizontal:"center"};function Ege({clone:e}){let{prompt:t,confirm:r,cancel:n,error:i,dismissError:o}=e;return(0,__.jsxs)(__.Fragment,{children:[t&&(0,__.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,__.jsx)(ol,{open:!!i,autoHideDuration:8e3,onClose:o,anchorOrigin:HUn,children:(0,__.jsx)(ri,{severity:"error",onClose:o,variant:"filled",children:i})})]})}var o0=L(ge(),1);function L$e(e){return["backlog","clone",e]}function Rge(e,t){t(L$e(e.origin),void 0,{title:`Clone ${e.displayName}`,subtitle:e.origin,...e.node&&{node:e.node}})}function Gpr(e,t){return!!e&&e.length===t.length&&e.every((r,n)=>r===t[n])}function qpr(e,t,r){let n=L$e(t.origin),i=new Set(e.filter(o=>Gpr(o.assistArgs,n)).map(o=>o.id));return Rge(t,r),{args:n,target:t.cloneTarget,node:t.node,preexisting:i}}function jpr(e,t){if(!t.id){let n=e.find(i=>Gpr(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 Age(e){let{setSelectedCwd:t}=$n(),{launchAssist:r}=$l(),[n,i]=(0,o0.useState)(null),[o,a]=(0,o0.useState)(null),[s,l]=(0,o0.useState)(null),u=(0,o0.useCallback)(p=>{l(null),i(p)},[]),f=(0,o0.useCallback)(()=>i(null),[]),d=(0,o0.useCallback)(()=>l(null),[]),h=(0,o0.useCallback)(()=>{n&&(a(qpr(e,n,r)),i(null))},[n,e,r]);return(0,o0.useEffect)(()=>{if(!o)return;let p=jpr(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 E2=L(z(),1),UUn={border:1,borderStyle:"dashed"};function Ypr({target:e}){let t=Age(Tge());return(0,E2.jsxs)(E2.Fragment,{children:[(0,E2.jsx)(lr,{title:oB(e.node,e.cloneTarget),children:(0,E2.jsx)(sr,{"aria-label":"Clone",size:"small",sx:UUn,onClick:r=>{r.stopPropagation(),t.requestClone(e)},children:(0,E2.jsx)(iB,{fontSize:"small"})})}),(0,E2.jsx)(Ege,{clone:t})]})}function Kpr(e,t,r,n){let i=r.node?[{node:r.node}]:[];e(["backlog","run",so(t),...n],r.cwd,...i)}var uY=L(z(),1);function Xpr({tooltip:e,disabled:t,onClick:r}){return(0,uY.jsx)(lr,{title:e,children:(0,uY.jsx)("span",{children:(0,uY.jsx)(sr,{"aria-label":"Build",color:"success",size:"small",disabled:t,onClick:r,children:(0,uY.jsx)(Op,{})})})})}function WUn(e,t){let r=e.assistArgs;if(r?.[0]!=="backlog"||r[1]!=="run"||!r[2])return!1;try{return gJ(r[2])===t}catch{return!1}}function Zpr(e,t){return e.find(r=>r.status!=="done"&&r.status!=="error"&&(WUn(r,t)||wP(r)?.itemId===t))}var Pge=L(ge(),1),M$e=(0,Pge.createContext)({nodes:null,names:[],visible:!1,selected:void 0,select:()=>{}});function Nu(){return(0,Pge.useContext)(M$e)}function Lge(){let{nodes:e,selected:t}=Nu();return t&&t!==e?.local?t:void 0}var emr=L(ge(),1);var Mge=L(ge(),1);function Qpr(e,t){return Promise.all(t.map(async r=>{let n=await VUn(e,r).catch(()=>({}));return[r,n]}))}async function VUn(e,t){let r=await fetch(tn(`/api/repo-location?origin=${encodeURIComponent(e)}`,t||void 0));return r.ok?r.json():{}}var I$e="\0";function Jpr(e,t){let[r,n]=(0,Mge.useState)(null);return(0,Mge.useEffect)(()=>{if(!e||!t)return;let i=!1;return Qpr(e,t.split(I$e)).then(o=>{i||n({origin:e,byNode:Object.fromEntries(o)})}),()=>{i=!0}},[e,t]),r}function Ige(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(I$e),a=Jpr(i,o);return(0,emr.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 tmr=L(z(),1);function aB({inputRef:e,value:t,onChange:r,onKeyDown:n,placeholder:i,autoFocus:o}){return(0,tmr.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 Dge=L(ge(),1);function Nge(e){let t=(0,Dge.useRef)(null);return(0,Dge.useEffect)(()=>{e&&t.current?.scrollIntoView({block:"nearest"})},[e]),t}var nmr=L(z(),1);function rmr({cwd:e,selected:t,highlighted:r,onHover:n,onSelect:i}){let o=Nge(r);return(0,nmr.jsx)(un,{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:K1(e)})}var D$e=L(z(),1);function Oge({repos:e,selected:t,highlight:r,onHighlight:n,onSelect:i}){return(0,D$e.jsx)(Tp,{dense:!0,children:e.map((o,a)=>(0,D$e.jsx)(rmr,{cwd:o,selected:o===t,highlighted:a===r,onHover:()=>n(a),onSelect:()=>i(o)},o))})}var Bge=L(ge(),1);function k_(e,t,r,n){let[i,o]=(0,Bge.useState)(0);return(0,Bge.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 fY=L(z(),1);function K1(e){let t=e.includes("\\")?"\\":"/";return e.split(t).filter(Boolean).pop()??e}var GUn={...LP};function imr({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}=k_(l,s,r,n);return(0,fY.jsxs)(an,{elevation:4,sx:GUn,children:[(0,fY.jsx)(aB,{inputRef:a,value:i,onChange:o,onKeyDown:d,placeholder:"Filter repos..."}),(0,fY.jsx)(Oge,{repos:l,selected:t,highlight:u,onHighlight:f,onSelect:p=>{r(p),n()}})]})}function Fge(e,t){return{origin:e.origin,cloneTarget:e.cloneTarget,displayName:K1(e.origin),node:t}}function omr(){let e=as(),t=Lge(),r=Ige(e??"",[t])(t);return e?r.kind==="cloned"?{kind:"ready",cwd:r.cwd,node:t}:r.kind==="clonable"?{kind:"clone",prompt:Fge(r,t)}:{kind:"unavailable",node:t??"this machine"}:{kind:"ready",node:t}}function amr(e,t){return t?`Not cloned on ${t}`:e?"Already running \u2014 close that session to run it again":"Build"}var $ge=L(z(),1);function zge({itemId:e,compact:t=!1}){let{launchAssist:r}=$l(),n=omr(),i=Zpr(Tge(),e),[o,a]=(0,smr.useState)(!1);if(n.kind==="clone")return(0,$ge.jsx)(Ypr,{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),Kpr(r,e,n,d))},f=amr(i!==void 0,s);return t?(0,$ge.jsx)(Xpr,{tooltip:f,disabled:l,onClick:d=>{d.stopPropagation(),u([])}}):(0,$ge.jsx)(Wpr,{tooltip:f,disabled:l,onBuild:()=>u([]),onSelectHarness:d=>u(["--harness",d])})}var lmr=L(ge(),1);var lB=L(z(),1);function cmr({itemId:e,starred:t,onToggled:r}){let n=as(),i=yr(),[o,a]=(0,lmr.useState)(!1);return(0,lB.jsx)(lr,{title:t?"Unstar":"Star",children:(0,lB.jsx)("span",{children:(0,lB.jsx)(sr,{"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 LJ(e,!t,n,i),await r()}finally{a(!1)}}},children:t?(0,lB.jsx)(Oee,{}):(0,lB.jsx)(Bee,{})})})})}var umr=L(z(),1),fmr=ft((0,umr.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 dY=L(z(),1),qUn={display:"inline-flex",alignItems:"center",gap:.375,flexShrink:0,fontSize:"0.71875rem",color:"text.secondary","& svg":{fontSize:14}};function dmr({count:e}){return e<1?null:(0,dY.jsx)(lr,{title:`${e} incomplete subtask${e===1?"":"s"}`,children:(0,dY.jsxs)(ue,{component:"span",sx:qUn,children:[(0,dY.jsx)(fmr,{}),e]})})}var R2=L(z(),1);function hmr({item:e,onReload:t}){return(0,R2.jsxs)(R2.Fragment,{children:[(0,R2.jsx)(dmr,{count:e.incompleteSubtasks}),(0,R2.jsx)(Hpr,{item:e}),(0,R2.jsx)(cmr,{itemId:e.id,starred:e.starred,onToggled:t}),Cge(e)&&(0,R2.jsx)(zge,{itemId:e.id,compact:!0})]})}var A2=L(z(),1);function jUn(e,t){return e?t?j1.inProgressRunningCard:j1.inProgressCard:j1.card}function pmr({item:e,to:t,socket:r,onReload:n}){let i=Bpr(r.sessions,e.id),o=e.status==="in-progress",a=o&&i?.status==="running";return(0,A2.jsxs)(ue,{sx:jUn(o,a),children:[(0,A2.jsx)(Fpr,{status:e.status}),(0,A2.jsxs)(ue,{sx:j1.main,children:[(0,A2.jsx)(xn,{component:ys,to:t,underline:"none",title:e.name,sx:j1.stretchedNameLink,children:e.name}),(0,A2.jsx)(Opr,{item:e,openSession:i,onSelectSession:r.selectSession})]}),(0,A2.jsx)(ue,{sx:j1.actions,children:(0,A2.jsx)(hmr,{item:e,onReload:n})})]})}var gmr=L(z(),1),YUn={all:"items",story:"stories",bug:"bugs"},KUn={textAlign:"center",color:"text.disabled",py:6,px:2};function mmr({query:e,typeFilter:t}){let r=YUn[t],n=e.trim()?`No ${r} match your search.`:`No ${r} in the backlog.`;return(0,gmr.jsx)(ue,{sx:KUn,children:n})}var X1=L(z(),1),XUn={display:"flex",justifyContent:"center",py:6};function ymr({loading:e,error:t,query:r,typeFilter:n,items:i,socket:o,itemPath:a,onReload:s}){if(e)return(0,X1.jsx)(ue,{sx:XUn,children:(0,X1.jsx)(mo,{})});let l=t&&(0,X1.jsx)(ri,{severity:"error",children:t});return i.length===0?l||(0,X1.jsx)(mmr,{query:r,typeFilter:n}):(0,X1.jsxs)(X1.Fragment,{children:[l,i.map(u=>(0,X1.jsx)(pmr,{item:u,to:a(u),socket:o,onReload:s},u.id))]})}var cB=L(ge(),1);function ZUn(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 vmr({cwd:e,node:t,knownCwds:r,signal:n}){return(await fetch(Fl(ZUn(r),e,t),{signal:n})).json()}function bmr(){let{repos:e,selectedCwd:t,cloneOn:r}=$n(),n=Lge(),[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 vmr({cwd:s,node:n,knownCwds:a,signal:l.signal}).then(o).catch(()=>{}),()=>l.abort()},[a,s,n]),{summaries:i,node:n}}var Hge=L(z(),1),QUn={borderStyle:"dashed"};function xmr({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,Hge.jsx)(bn,{label:`${o} (${a})`,size:"small",color:s?"primary":"default",variant:s?"filled":"outlined",disabled:!l&&!f,onClick:d,icon:f?(0,Hge.jsx)(iB,{}):void 0,sx:f?QUn:void 0});return!f||!u?h:(0,Hge.jsx)(lr,{describeChild:!0,title:oB(t,u),children:h})}var hY=L(z(),1),JUn={flexWrap:"wrap",gap:1,mb:2};function Tmr({sessions:e}){let{summaries:t,node:r}=bmr(),{setSelectedCwd:n}=$n(),i=Age(e);return t.length===0?null:(0,hY.jsxs)(Rt,{direction:"row",sx:JUn,children:[t.map(o=>(0,hY.jsx)(xmr,{summary:o,node:r,onSelectCwd:a=>r?n(a,r):n(a),onRequestClone:i.requestClone},o.origin)),(0,hY.jsx)(Ege,{clone:i})]})}var Cmr=L(z(),1);function Smr({value:e,onChange:t}){return(0,Cmr.jsx)(ni,{fullWidth:!0,size:"small",placeholder:"Search backlog\u2026",value:e,onChange:r=>t(r.target.value),sx:{mb:2}})}var Uge=L(ge(),1);var Wge=L(z(),1);async function eWn(){return(await(await fetch("/api/backups/list")).json())[0]}function wmr(){let[e,t]=(0,Uge.useState)();return(0,Uge.useEffect)(()=>{eWn().then(t)},[]),e?(0,Wge.jsx)(lr,{title:new Date(e.createdAt).toLocaleString(),children:(0,Wge.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 _mr(){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 kmr({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 E_=L(z(),1),tWn={justifyContent:"space-between",alignItems:"center",mb:3},rWn={fontWeight:600},nWn={alignItems:"center"};function Emr({typeFilter:e,onTypeFilterChange:t}){return(0,E_.jsxs)(Rt,{direction:"row",sx:tWn,children:[(0,E_.jsx)(Fe,{variant:"h5",sx:rWn,children:"Backlog"}),(0,E_.jsxs)(Rt,{direction:"row",spacing:2,sx:nWn,children:[(0,E_.jsx)(wmr,{}),(0,E_.jsx)(kmr,{value:e,onChange:t}),(0,E_.jsx)(_mr,{})]})]})}var P2=L(z(),1);function Amr({items:e,loading:t,error:r,socket:n,onReload:i}){let o=as(),a=yr(),{query:s,setQuery:l,results:u,loading:f}=kpr(),[d,h]=(0,Rmr.useState)("all"),p=u??e,m=d==="all"?p:p.filter(g=>g.type===d);return(0,P2.jsxs)(P2.Fragment,{children:[(0,P2.jsx)(Emr,{typeFilter:d,onTypeFilterChange:h}),(0,P2.jsx)(Smr,{value:s,onChange:l}),(0,P2.jsx)(Tmr,{sessions:n.sessions}),(0,P2.jsx)(ymr,{loading:t||f,error:u?null:r,query:s,typeFilter:d,items:m,socket:n,itemPath:g=>BT(g.id,o,a),onReload:i})]})}var Qge=L(ge(),1);var yR=L(ge(),1);async function N$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 Pmr(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 N$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 N$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 R_={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"},pY=140,O$e="--pinned-header-height",Vge=`var(${O$e}, ${pY}px)`,Lmr=`calc(${Vge} + 8px)`;function $m(e){return{id:R_[e],sx:{mb:2,scrollMarginTop:Lmr}}}function Gge(e){return{id:`item-phase-${e}`,sx:{scrollMarginTop:Lmr}}}var A_=L(z(),1);function Mmr({criteria:e}){return e.length===0?null:(0,A_.jsxs)(ue,{...$m("acceptanceCriteria"),children:[(0,A_.jsx)(Fe,{variant:"overline",sx:{color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"},children:"Acceptance Criteria"}),(0,A_.jsx)(R0,{disablePadding:!0,sx:{maxWidth:"72ch"},children:e.map((t,r)=>(0,A_.jsxs)(tT,{disableGutters:!0,disablePadding:!0,sx:{py:.5,display:"flex",alignItems:"baseline"},children:[(0,A_.jsxs)(Fe,{component:"span",sx:{color:"text.secondary",mr:1},children:[r+1,"."]}),(0,A_.jsx)(yu,{component:"span",className:"markdown",html:EP(t)})]},t))})]})}var mY=L(z(),1),iWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Imr({description:e}){return e?(0,mY.jsxs)(ue,{...$m("description"),children:[(0,mY.jsx)(Fe,{variant:"overline",sx:iWn,children:"Description"}),(0,mY.jsx)(kw,{content:e,renderMermaid:!0})]}):null}var Umr=L(ge(),1);function Dmr(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 Omr=L(z(),1),oWn={color:"text.secondary",alignSelf:"flex-start",textAlign:"left"};function Nmr({hiddenCount:e,expanded:t,onToggle:r}){return e===0?null:(0,Omr.jsx)(xn,{component:"button",type:"button",variant:"body2",underline:"hover",sx:oWn,onClick:n=>{n.stopPropagation(),r()},children:t?"Show fewer commits":`\u2026 and ${e} more commits`})}var vR=L(z(),1),aWn={display:"flex",alignItems:"center",gap:1},sWn={color:"text.secondary",fontFamily:"monospace"},lWn={flex:1,overflowWrap:"anywhere"},cWn={color:"text.disabled","&:hover":{color:"text.primary"}};function Bmr({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:aWn,children:[(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:sWn,children:"session"}),(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:lWn,children:e.title??e.sessionId}),(0,vR.jsx)(sr,{size:"small",title:"Resume",sx:cWn,onClick:r,children:(0,vR.jsx)(Op,{sx:{fontSize:14}})})]})}var $mr=L(z(),1),uWn={color:"text.disabled",ml:1};function Fmr({gitRef:e}){return e.kind!=="commit"||!e.createdAt?null:(0,$mr.jsx)(ue,{component:"span",sx:uWn,children:fWn(e.createdAt)})}function fWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function zmr(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 Z1=L(z(),1),dWn={color:"text.secondary",mr:1,fontFamily:"monospace"};function hWn({gitRef:e}){let t=zmr(e);return!e.url||e.kind==="session"?(0,Z1.jsx)(Z1.Fragment,{children:t}):(0,Z1.jsx)(xn,{href:e.url,target:"_blank",rel:"noopener",onClick:r=>r.stopPropagation(),children:t})}function Hmr({gitRef:e}){return(0,Z1.jsxs)(Fe,{variant:"body2",children:[(0,Z1.jsx)(ue,{component:"span",sx:dWn,children:e.kind}),(0,Z1.jsx)(hWn,{gitRef:e}),(0,Z1.jsx)(Fmr,{gitRef:e})]})}var P_=L(z(),1),pWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Wmr({gitRefs:e,conversations:t=[]}){let[r,n]=(0,Umr.useState)(!1),{branches:i,commits:o,overflowCommits:a,prs:s,slacks:l}=Dmr(e),u=[...i,...o,...r?a:[],...s,...l];return u.length===0&&t.length===0?null:(0,P_.jsxs)(ue,{...$m("activity"),children:[(0,P_.jsx)(Fe,{variant:"overline",sx:pWn,children:"Activity"}),(0,P_.jsxs)(Rt,{spacing:1,children:[u.map(f=>(0,P_.jsx)(Hmr,{gitRef:f},`${f.kind}:${f.ref}`)),t.map(f=>(0,P_.jsx)(Bmr,{conversation:f},f.sessionId)),(0,P_.jsx)(Nmr,{hiddenCount:a.length,expanded:r,onToggle:()=>n(f=>!f)})]})]})}var bR=L(z(),1),mWn={alignItems:"center",fontSize:"0.75rem",color:"text.secondary",mb:.5},gWn={color:"text.disabled"},yWn={fontWeight:500},vWn={summary:"Phase summary",comment:"Comment"};function Vmr({comment:e}){return(0,bR.jsxs)(Rt,{direction:"row",spacing:.5,sx:mWn,children:[e.id!==void 0&&(0,bR.jsxs)(Fe,{variant:"caption",sx:gWn,children:["#",e.id]}),(0,bR.jsx)(Fe,{variant:"caption",sx:yWn,children:vWn[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 ",bWn(e.timestamp)]})]})}function bWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var Gmr=L(z(),1),qmr=ft((0,Gmr.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 B$e=L(ge(),1);async function jmr(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 Q1=L(z(),1),xWn={mt:-.5,mr:-.5,color:"text.secondary"};function Ymr({itemId:e,commentId:t,onDeleted:r}){let n=as(),i=yr(),[o,a]=(0,B$e.useState)(!1),[s,l]=(0,B$e.useState)(),u=()=>l(void 0);return(0,Q1.jsxs)(Q1.Fragment,{children:[o&&(0,Q1.jsx)(vo,{message:"Are you sure you want to delete this comment?",onConfirm:async()=>{a(!1);try{await jmr(e,t,n,i),await r()}catch(f){l(f instanceof Error?f.message:"Failed to delete comment")}},onCancel:()=>a(!1)}),(0,Q1.jsx)(ol,{open:s!==void 0,autoHideDuration:6e3,onClose:u,children:(0,Q1.jsx)(ri,{severity:"error",variant:"filled",onClose:u,children:s})}),(0,Q1.jsx)(sr,{"aria-label":"Delete comment",size:"small",sx:xWn,onClick:()=>a(!0),children:(0,Q1.jsx)(qmr,{fontSize:"inherit"})})]})}var xR=L(z(),1),TWn={summary:{bgcolor:"warning.light",borderColor:"warning.dark"},comment:{bgcolor:"action.selected",borderColor:"divider"}},SWn={justifyContent:"space-between",alignItems:"flex-start"},CWn={color:"text.primary",whiteSpace:"pre-wrap"};function wWn(e){return{p:1.5,bgcolor:e.bgcolor,borderColor:e.borderColor}}function Kmr({comment:e,itemId:t,onDeleted:r}){return(0,xR.jsxs)(an,{variant:"outlined",sx:wWn(TWn[e.type]),children:[(0,xR.jsxs)(Rt,{direction:"row",sx:SWn,children:[(0,xR.jsx)(Vmr,{comment:e}),e.id!==void 0&&t!==void 0&&r&&(0,xR.jsx)(Ymr,{itemId:t,commentId:e.id,onDeleted:r})]}),(0,xR.jsx)(Fe,{variant:"body2",sx:CWn,children:e.text})]})}var dB=L(z(),1),_Wn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Xmr({comments:e,itemId:t,onCommentDeleted:r}){return e.length===0?null:(0,dB.jsxs)(ue,{...$m("comments"),children:[(0,dB.jsx)(Fe,{variant:"overline",sx:_Wn,children:"Comments"}),(0,dB.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,dB.jsx)(Kmr,{comment:n,itemId:t,onDeleted:r},`${n.timestamp}-${i}`))})]})}var Zmr=L(z(),1);function hB({total:e,sx:t}){return(0,Zmr.jsx)(Fe,{sx:t,children:Sge(e)})}var Jmr=L(z(),1),kWn={color:"text.secondary",fontSize:"0.75rem"};function Qmr({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,Jmr.jsx)(hB,{total:t,sx:kWn})}var L2=L(z(),1);function egr({checks:e}){return(0,L2.jsxs)(ue,{sx:{mt:1,pt:1},children:[(0,L2.jsx)(no,{sx:{mb:1}}),(0,L2.jsx)(Fe,{variant:"overline",sx:{color:"text.disabled",letterSpacing:"0.08em"},children:"Manual Checks"}),(0,L2.jsx)(R0,{disablePadding:!0,sx:{ml:.5,mt:.5},children:e.map(t=>(0,L2.jsxs)(tT,{disableGutters:!0,disablePadding:!0,sx:{py:.25,display:"flex",alignItems:"baseline"},children:[(0,L2.jsx)(Fe,{component:"span",sx:{mr:1,fontSize:"0.875rem",color:"text.secondary"},children:"\u2610"}),(0,L2.jsx)(yu,{component:"span",className:"markdown",sx:{fontSize:"0.875rem",color:"text.secondary"},html:EP(t)})]},t))})]})}var qge={done:{borderColor:"success.light",bgcolor:"success.light"},current:{borderColor:"info.main",bgcolor:"info.light",ring:"info.light"},upcoming:{borderColor:"divider",bgcolor:"background.paper"}};function tgr(e){let t=qge[e];return{p:2,borderColor:t.ring?"info.main":t.borderColor,bgcolor:t.bgcolor,...t.ring?{boxShadow:"0 0 0 2px"}:{}}}var rgr={done:"\u2713",current:"\u2022",upcoming:"\u2022"};var ogr=L(ge(),1);var ngr=L(ge(),1),J1=L(z(),1);function igr({phaseName:e,onConfirm:t,onCancel:r}){let[n,i]=(0,ngr.useState)("");return(0,J1.jsxs)(Ps,{open:!0,onClose:r,maxWidth:"xs",fullWidth:!0,children:[(0,J1.jsxs)(Il,{children:["Rewind to ",e,"?"]}),(0,J1.jsxs)(Ml,{children:[(0,J1.jsx)(Fe,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"This will mark all later phases as incomplete."}),(0,J1.jsx)(ni,{fullWidth:!0,multiline:!0,rows:3,size:"small",placeholder:"Reason for rewinding...",value:n,onChange:o=>i(o.target.value)})]}),(0,J1.jsxs)(cu,{children:[(0,J1.jsx)(qt,{onClick:r,children:"Cancel"}),(0,J1.jsx)(qt,{variant:"contained",color:"warning",disabled:n.trim().length===0,onClick:()=>t(n.trim()),children:"Rewind"})]})]})}var TR=L(z(),1);function agr({itemId:e,phaseNumber:t,phaseName:r,onRewound:n}){let i=as(),o=yr(),[a,s]=(0,ogr.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)(igr,{phaseName:r,onConfirm:async l=>{await Tet(e,t,l,i,o),await n()},onCancel:()=>s(!1)})]})}var pB=L(z(),1),EWn={done:{label:"Done",color:"success"},current:{label:"In Progress",color:"info"},upcoming:{label:"Upcoming",color:"default"}},RWn={alignItems:"center",mb:1},AWn={fontWeight:500},PWn={fontWeight:500,fontSize:"0.75rem"};function sgr({phase:e,index:t,status:r,itemId:n,onRewind:i}){let o=EWn[r],a=r==="done"&&n!==void 0&&i;return(0,pB.jsxs)(Rt,{direction:"row",spacing:1,sx:RWn,children:[(0,pB.jsxs)(Fe,{sx:AWn,children:["Phase ",t+1,": ",e.name]}),(0,pB.jsx)(bn,{label:o.label,size:"small",color:o.color,sx:PWn}),a&&(0,pB.jsx)(agr,{itemId:n,phaseNumber:t+1,phaseName:e.name,onRewound:i})]})}var gY=L(z(),1),LWn={color:"text.secondary",fontSize:"0.75rem",letterSpacing:"0.08em",display:"block"},MWn={color:"text.secondary",fontSize:"0.75rem",fontFamily:"monospace",display:"block"};function lgr({sessions:e}){return(0,gY.jsxs)(ue,{sx:{mb:1},children:[(0,gY.jsx)(Fe,{variant:"overline",sx:LWn,children:"Sessions"}),e.map(t=>(0,gY.jsx)(Fe,{sx:MWn,children:`${t.hostname} / ${t.osUser} / ${t.claudeSessionId}`},t.claudeSessionId))]})}var ugr=L(z(),1),IWn={color:"text.secondary",fontSize:"0.75rem",mb:1,display:"block"};function cgr({usage:e}){return(0,ugr.jsx)(hB,{total:e,sx:IWn})}var mB=L(z(),1);function fgr({tasks:e,marker:t}){return(0,mB.jsx)(R0,{disablePadding:!0,sx:{ml:.5},children:e.map(r=>(0,mB.jsxs)(tT,{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:EP(r.task)})]},r.task))})}var L_=L(z(),1);function dgr({phase:e,index:t,status:r,itemId:n,usage:i,sessions:o,onRewind:a}){let s=e.manualChecks??[],l=Gge(t);return(0,L_.jsxs)(an,{variant:"outlined",id:l.id,sx:{...tgr(r),...l.sx},children:[(0,L_.jsx)(sgr,{phase:e,index:t,status:r,itemId:n,onRewind:a}),i&&(0,L_.jsx)(cgr,{usage:i}),(0,L_.jsx)(fgr,{tasks:e.tasks,marker:rgr[r]}),s.length>0&&(0,L_.jsx)(egr,{checks:s}),o&&o.length>0&&(0,L_.jsx)(lgr,{sessions:o})]})}var yY={name:"Review",tasks:[]};function jge(e){return e.at(-1)?.name===yY.name?e.length-1:e.length}function Yge(e,t){if(t===void 0)return"upcoming";let r=e+1;return r<t?"done":r===t?"current":"upcoming"}function hgr(e=[]){return new Map(e.map(t=>[t.phaseIdx,t]))}function pgr(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 F$e=L(z(),1);function mgr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){let a=hgr(n),s=pgr(i),l=jge(e),u=(i??[]).filter(d=>d.phaseIdx>=l),f=l===e.length&&u.length>0?[...e,yY]:e;return(0,F$e.jsx)(Rt,{spacing:1.5,children:f.map((d,h)=>(0,F$e.jsx)(dgr,{phase:d,index:h,status:Yge(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),DWn={alignItems:"baseline",justifyContent:"space-between",mb:1},NWn={color:"text.secondary",display:"block",letterSpacing:"0.08em"};function ggr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){return e.length===0?null:(0,SR.jsxs)(ue,{...$m("plan"),children:[(0,SR.jsxs)(Rt,{direction:"row",sx:DWn,children:[(0,SR.jsx)(Fe,{variant:"overline",sx:NWn,children:"Plan"}),n&&n.length>0&&(0,SR.jsx)(Qmr,{usage:n})]}),(0,SR.jsx)(mgr,{phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o})]})}var $$e=L(z(),1),Kge=e=>{let{value:t,options:r,colors:n,onChange:i}=e;return(0,$$e.jsx)(iT,{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,$$e.jsx)(un,{value:o,children:o},o))})};var vgr=L(z(),1),OWn={todo:{bg:"action.selected",text:"text.primary"},"in-progress":{bg:"warning.main",text:"warning.contrastText"},done:{bg:"success.main",text:"success.contrastText"}},BWn=["todo","in-progress","done"];function ygr({current:e,onStatusChange:t}){return(0,vgr.jsx)(Kge,{value:e,options:BWn,colors:OWn,onChange:t})}var M_=L(z(),1);function bgr({subtask:e,onStatusChange:t}){let r=e.status==="done";return(0,M_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start",justifyContent:"space-between"},children:[(0,M_.jsxs)(ue,{sx:{flex:1},children:[(0,M_.jsx)(Fe,{variant:"body2",sx:{textDecoration:r?"line-through":"none",color:r?"text.disabled":"text.primary"},children:e.title}),e.description&&(0,M_.jsx)(ue,{sx:{mt:.5,fontSize:"0.8125rem",color:r?"text.disabled":"text.secondary"},children:(0,M_.jsx)(kw,{content:e.description})})]}),(0,M_.jsx)(ygr,{current:e.status,onStatusChange:t})]})}var CR=L(z(),1),FWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function xgr({subtasks:e,onStatusChange:t}){if(e.length===0)return null;let r=e.filter(n=>n.status!=="done").length;return(0,CR.jsxs)(ue,{...$m("subtasks"),children:[(0,CR.jsx)(Fe,{variant:"overline",sx:FWn,children:"Sub-tasks"}),(0,CR.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,CR.jsx)(bgr,{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 M2=L(z(),1);function Tgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,M2.jsxs)(M2.Fragment,{children:[e.subtasks&&n&&(0,M2.jsx)(xgr,{subtasks:e.subtasks,onStatusChange:n}),e.plan&&(0,M2.jsx)(ggr,{phases:e.plan,currentPhase:e.currentPhase,itemId:e.id,usage:e.phaseUsage,sessions:e.phaseSessions,onRewind:t}),(0,M2.jsx)(Wmr,{gitRefs:e.gitRefs??[],conversations:e.conversations}),e.comments&&(0,M2.jsx)(Xmr,{comments:e.comments,itemId:e.id,onCommentDeleted:r})]})}var gB=L(z(),1);function Sgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,gB.jsxs)(ue,{sx:{pt:2,flex:1,minWidth:0},children:[(0,gB.jsx)(Imr,{description:e.description}),(0,gB.jsx)(Mmr,{criteria:e.acceptanceCriteria}),(0,gB.jsx)(Tgr,{item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n})]})}var Cgr="item-detail";var vY={wideQuery:`@container ${Cgr} (min-width: 760px)`,containerSx:{containerType:"inline-size",containerName:Cgr},columnsSx:{display:"flex",columnGap:3}};function $Wn(e){let t=e.plan??[];if(t.length===0)return[];let r=jge(t),i=r===t.length&&(e.phaseSessions??[]).some(o=>o.phaseIdx>=r)?[...t,yY]:t;return[{id:R_.plan,label:"Phases"},...i.map((o,a)=>({id:Gge(a).id,label:`${a+1}`,title:o.name,status:Yge(a,e.currentPhase),nested:!0}))]}function wgr(e){let t=[];return e.description&&t.push({id:R_.description,label:"Description"}),e.acceptanceCriteria.length>0&&t.push({id:R_.acceptanceCriteria,label:"Acceptance Criteria"}),(e.subtasks?.length??0)>0&&t.push({id:R_.subtasks,label:"Sub-tasks"}),t.push(...$Wn(e)),(e.gitRefs?.length??0)+(e.conversations?.length??0)>0&&t.push({id:R_.activity,label:"Activity"}),(e.comments?.length??0)>0&&t.push({id:R_.comments,label:"Comments"}),t}var _gr="1.3125rem",kgr={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={...kgr,display:"block",flexShrink:0,maxWidth:"100%",px:1,py:.5,border:0,bgcolor:"transparent",fontSize:_gr,lineHeight:1.2,letterSpacing:"0.02em",textAlign:"left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"text.secondary"},HWn={...kgr,display:"flex",alignItems:"center",justifyContent:"center",fontSize:_gr,width:"2em",height:"2em",flexShrink:0,lineHeight:1,borderRadius:"50%",border:1,color:"text.primary"},UWn={borderColor:"text.primary",borderWidth:3},WWn={color:"text.primary",fontWeight:700,"&::after":{bgcolor:"action.selected"}};function Egr(e,t){let r=e.status&&qge[e.status];return r?{...HWn,ml:1.5,bgcolor:r.bgcolor,borderColor:r.borderColor,borderWidth:r.ring?3:1,...t&&UWn}:{...zWn,...t&&WWn}}var Agr=L(z(),1);function Rgr({section:e,active:t,onSelect:r}){return(0,Agr.jsx)(Dn,{sx:Egr(e,t),onClick:()=>r(e.id),title:e.title??e.label,"aria-current":t?"true":void 0,children:e.label})}function Pgr(e,t=pY){return Yhe(e,t)}var z$e=L(z(),1),VWn=48,GWn=260,qWn={display:"none",[vY.wideQuery]:{display:"flex"},position:"sticky",top:Vge,alignSelf:"flex-start",width:GWn,flexShrink:0,maxHeight:`calc(100vh - ${VWn}px - ${Vge})`,alignItems:"flex-start",overflowY:"auto",overflowX:"hidden",py:2};function jWn(e){document.getElementById(e)?.scrollIntoView({behavior:"smooth",block:"start"})}function Lgr({item:e,headerHeight:t}){let r=wgr(e),n=Pgr(r.map(i=>i.id),t);return r.length===0?null:(0,z$e.jsx)(Rt,{component:"nav",spacing:1,sx:qWn,children:r.map(i=>(0,z$e.jsx)(Rgr,{section:i,active:i.id===n,onSelect:jWn},i.id))})}var Igr=L(z(),1);function Mgr({to:e}){let t=Xi();return(0,Igr.jsx)(qt,{variant:"text",size:"small",onClick:()=>t(e),sx:{mb:2,textTransform:"none"},children:"\u2190 Back"})}var Dgr=L(ge(),1);var wR=L(z(),1);function Ngr({itemId:e,onDeleted:t}){let r=as(),n=yr(),[i,o]=(0,Dgr.useState)(!1);return(0,wR.jsxs)(wR.Fragment,{children:[i&&(0,wR.jsx)(vo,{onConfirm:async()=>{await bet(e,r,n),await t()},onCancel:()=>o(!1)}),(0,wR.jsx)(qt,{variant:"contained",color:"error",size:"small",onClick:()=>o(!0),children:"Delete"})]})}var H$e=L(z(),1),YWn={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"}},KWn=["todo","in-progress","done","wontdo"];function Ogr({current:e,onStatusChange:t}){return t?(0,H$e.jsx)(Kge,{value:e,options:KWn,colors:YWn,onChange:t}):(0,H$e.jsx)(bn,{label:e,size:"small",color:pge[e],sx:{fontWeight:500,fontSize:"0.75rem"}})}var I2=L(z(),1),XWn={alignItems:"center",color:"text.disabled",fontSize:"0.875rem"},ZWn={fontWeight:500,fontSize:"0.75rem"},QWn={color:"text.secondary",fontSize:"0.75rem"};function Bgr({item:e,onStatusChange:t}){let r=hge[e.type];return(0,I2.jsxs)(Rt,{direction:"row",spacing:1,sx:XWn,children:[(0,I2.jsx)(Fe,{variant:"body2",color:"text.disabled",children:so(e.id)}),r&&(0,I2.jsx)(bn,{label:e.type,size:"small",color:r,sx:ZWn}),(0,I2.jsx)(Ogr,{current:e.status,onStatusChange:t}),(0,I2.jsx)(cP,{jiraKey:e.jiraKey}),(0,I2.jsx)(lP,{githubIssue:e.githubIssue,origin:e.origin}),e.usageTotal&&(0,I2.jsx)(hB,{total:e.usageTotal,sx:QWn})]})}var Fgr=L(z(),1),$gr=ft((0,Fgr.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var Xge=L(ge(),1);var zgr=L(ge(),1);function Hgr(e){let{launchAssist:t}=$l(),r=Xi(),n=as(),i=yr(),[o,a]=(0,zgr.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 a0=L(z(),1);function Ugr({itemId:e}){let{launched:t,launch:r}=Hgr(e),n=S_(),i=(0,Xge.useRef)(null),[o,a]=(0,Xge.useState)(!1),s=u=>u.stopPropagation(),l=wge(n);return(0,a0.jsxs)(a0.Fragment,{children:[(0,a0.jsxs)(Q2,{ref:i,variant:"outlined",size:"small",disabled:t,children:[(0,a0.jsx)(qt,{startIcon:(0,a0.jsx)($gr,{}),onClick:u=>{s(u),r([])},children:"Refine"}),l.length>0&&(0,a0.jsx)(qt,{size:"small","aria-label":"Refine with a different harness",onClick:u=>{s(u),a(!0)},children:(0,a0.jsx)(zp,{})})]}),(0,a0.jsx)(_ge,{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 Wgr(){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),JWn={justifyContent:"space-between",alignItems:"center",mb:2};function eVn(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 tVn(e){return t=>({position:"sticky",top:0,zIndex:1,bgcolor:"background.default",mx:-2,px:2,pb:2,borderBottom:1,borderColor:"divider",boxShadow:e?eVn(t):"none",transition:t.transitions.create("box-shadow")})}function Vgr({item:e,onDeleted:t,onStatusChange:r,ref:n}){let{sentinelRef:i,stuck:o}=Wgr();return(0,Of.jsxs)(Of.Fragment,{children:[(0,Of.jsx)(ue,{ref:i,sx:{height:0}}),(0,Of.jsxs)(ue,{ref:n,sx:tVn(o),children:[(0,Of.jsxs)(Rt,{direction:"row",sx:JWn,children:[(0,Of.jsx)(Mgr,{to:"/backlog"}),(0,Of.jsxs)(Rt,{direction:"row",spacing:1,children:[Cge(e)&&(0,Of.jsx)(zge,{itemId:e.id}),(0,Of.jsx)(Ugr,{itemId:e.id}),(0,Of.jsx)(Ngr,{itemId:e.id,onDeleted:t})]})]}),(0,Of.jsx)(Fe,{variant:"h5",component:"h2",children:e.name}),(0,Of.jsx)(Bgr,{item:e,onStatusChange:r})]})]})}var qgr=L(ge(),1);var Zge=L(ge(),1);function Ggr(e,t){let[r,n]=(0,Zge.useState)(t);return(0,Zge.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 jgr(){let e=(0,qgr.useRef)(null),t=Ggr(e,pY),r={[O$e]:`${t}px`};return{headerRef:e,headerHeight:t,style:r}}var I_=L(z(),1);function Ygr({item:e,onReload:t}){let r=Xi(),n=as(),i=yr(),{headerRef:o,headerHeight:a,style:s}=jgr();ny("ItemDetail");let l=async()=>{await t(),r("/backlog")},u=async d=>{await PJ(e.id,d,n,i),await t()},f=async(d,h)=>{await xet(e.id,d,h,n,i),await t()};return(0,I_.jsxs)(ue,{style:s,children:[(0,I_.jsx)(Vgr,{ref:o,item:e,onDeleted:l,onStatusChange:u}),(0,I_.jsx)(ue,{sx:vY.containerSx,children:(0,I_.jsxs)(ue,{sx:vY.columnsSx,children:[(0,I_.jsx)(Sgr,{item:e,onRewind:t,onCommentDeleted:t,onSubtaskStatusChange:f}),(0,I_.jsx)(Lgr,{item:e,headerHeight:a})]})})]})}var _R=L(z(),1),rVn={display:"flex",justifyContent:"center",py:6};function Kgr({onReload:e}){let[t]=Pc(),r=t.get("cwd")||void 0,n=t.get("node")||void 0,i=$n(),o=(0,Qge.useMemo)(()=>r?{...i,selectedCwd:r,selectedNode:n}:i,[i,r,n]);return ny("ItemRoute"),(0,_R.jsx)(xz.Provider,{value:o,children:(0,_R.jsx)(Yu.Provider,{value:o.selectedNode,children:(0,_R.jsx)(nVn,{onReload:e})})})}function nVn({onReload:e}){let{id:t}=h2e(),r=Number.NaN;try{r=gJ(t??"")}catch{r=Number.NaN}let{item:n,loading:i,reload:o}=Pmr(r),a=(0,Qge.useCallback)(async()=>{await Promise.all([o(),e()])},[o,e]);return i?(0,_R.jsx)(ue,{sx:rVn,children:(0,_R.jsx)(mo,{})}):n?(0,_R.jsx)(Ygr,{item:n,onReload:a}):null}var kR=L(z(),1);function Xgr({items:e,loading:t,error:r,socket:n,onReload:i}){return(0,kR.jsxs)(d5,{children:[(0,kR.jsx)(gs,{index:!0,element:(0,kR.jsx)(Amr,{items:e,loading:t,error:r,socket:n,onReload:i})}),(0,kR.jsx)(gs,{path:"items/:id",element:(0,kR.jsx)(Kgr,{onReload:i})})]})}var s0=L(ge(),1);var Zgr=new Map;function Qgr(e,t,r){return JSON.stringify([e??null,t,r??null])}var bY={get(e,t,r){return Zgr.get(Qgr(e,t,r))},set(e,t,r,n){Zgr.set(Qgr(e,t,n),r)}};function iVn(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 Jgr(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&&iVn(r.usageTotal,i.usageTotal)})}function e0r({setItems:e,setLoading:t,setError:r}){return{onLoaded:n=>{e(i=>Jgr(i,n)?i:n),t(!1),r(null)},onError:n=>{t(!1),r(n)}}}async function t0r(e,t,r,n){let i=await zT({cwd:e,node:n,signal:r,filter:t});return r.aborted||bY.set(e,t,i,n),i}function r0r(e,t,r,{onLoaded:n,onError:i},o){return(async()=>{try{let a=await t0r(e,t,r,o);r.aborted||n(a)}catch(a){r.aborted||i(a instanceof Error?a.message:"Failed to load.")}})()}var oVn=5e3;function n0r(e,t,r,n){let i=new AbortController,o=!1,a=()=>{o||(o=!0,r0r(e,t,i.signal,r,n).finally(()=>{o=!1}))};a();let s=setInterval(a,oVn);return()=>{i.abort(),clearInterval(s)}}function i0r(){let e=as(),t=yr(),[r]=rB(),n=bY.get(e,r,t),i=n??[],o=n===void 0,[a,s]=(0,s0.useState)(i),[l,u]=(0,s0.useState)(o),[f,d]=(0,s0.useState)(null),[h,p]=(0,s0.useState)(e),[m,g]=(0,s0.useState)(t),[y,v]=(0,s0.useState)(r);(e!==h||t!==m||r!==y)&&(p(e),g(t),v(r),s(i),u(o),d(null));let b=(0,s0.useCallback)(async()=>{let x=await zT({cwd:e,node:t,filter:r});s(x),bY.set(e,r,x,t),u(!1)},[e,t,r]);return(0,s0.useEffect)(()=>n0r(e,r,e0r({setItems:s,setLoading:u,setError:d}),t),[e,t,r]),{items:a,loading:l,error:f,reload:b}}var xY=L(z(),1);function o0r({socket:e}){let{items:t,loading:r,error:n,reload:i}=i0r();return lte(!r),(0,xY.jsx)(E$e.Provider,{value:e.sessions,children:(0,xY.jsx)(d5,{children:(0,xY.jsx)(gs,{path:"/*",element:(0,xY.jsx)(Xgr,{items:t,loading:r,error:n,socket:e,onReload:i})})})})}var U$e=L(z(),1);function a0r({socket:e}){return(0,U$e.jsx)(IF,{maxWidth:"lg",sx:{py:3,px:2},children:(0,U$e.jsx)(o0r,{socket:e})})}var ki=L(z(),1);function s0r({socket:e}){return ny("AppRoutes"),(0,ki.jsxs)(ki.Fragment,{children:[(0,ki.jsx)(ior,{}),(0,ki.jsx)(d5,{children:(0,ki.jsxs)(gs,{element:(0,ki.jsx)(git,{socket:e}),children:[(0,ki.jsx)(gs,{path:"sessions",element:(0,ki.jsx)(zdr,{socket:e})}),(0,ki.jsx)(gs,{path:"backlog/*",element:(0,ki.jsx)(a0r,{socket:e})}),(0,ki.jsx)(gs,{path:"next",element:(0,ki.jsx)(yir,{sessions:e.sessions,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"news",element:(0,ki.jsx)(Pnr,{})}),(0,ki.jsx)(gs,{path:"releases",element:(0,ki.jsx)(eor,{})}),(0,ki.jsx)(gs,{path:"usage",element:(0,ki.jsx)(Tpr,{})}),(0,ki.jsx)(gs,{path:"backups",element:(0,ki.jsx)(wit,{})}),(0,ki.jsx)(gs,{path:"config",element:(0,ki.jsx)(vat,{})}),(0,ki.jsx)(gs,{path:"updates",element:(0,ki.jsx)(Mhr,{reconnecting:e.reconnecting,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"diff",element:(0,ki.jsx)(Krr,{socket:e})}),(0,ki.jsx)(gs,{path:"file",element:(0,ki.jsx)(_nr,{socket:e})}),(0,ki.jsx)(gs,{path:"*",element:(0,ki.jsx)(b2e,{to:"/sessions",replace:!0})})]})})]})}var n0e=L(ge(),1);var r0e=L(ge(),1);function l0r(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 D_=L(z(),1),aVn={display:"flex",gap:1,alignItems:"center",minWidth:0},sVn={display:"flex",gap:1,alignItems:"baseline",minWidth:0,overflow:"hidden"},lVn={fontFamily:"monospace",fontSize:13,whiteSpace:"nowrap"},cVn={fontFamily:"monospace",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function uVn(e){let t=e.lastIndexOf("/");return t===-1?{dir:"",basename:e}:{dir:e.slice(0,t),basename:e.slice(t+1)}}function c0r({files:e,highlight:t,onHighlight:r,onSelect:n}){return(0,D_.jsx)(Tp,{dense:!0,sx:{py:0},children:e.map((i,o)=>{let{dir:a,basename:s}=uVn(i);return(0,D_.jsxs)(un,{selected:o===t,onMouseEnter:()=>r(o),onClick:()=>n(i),sx:aVn,children:[(0,D_.jsx)(QO,{path:i}),(0,D_.jsxs)(ue,{sx:sVn,children:[(0,D_.jsx)(Fe,{component:"span",sx:lVn,children:s}),(0,D_.jsx)(Fe,{component:"span",color:"text.secondary",sx:cVn,children:a})]})]},i)})})}var Jge=L(z(),1),fVn={maxHeight:420,overflowY:"auto"},dVn={px:2,py:2,fontSize:13};function u0r({message:e,files:t,highlight:r,onHighlight:n,onSelect:i}){return(0,Jge.jsx)(ue,{sx:fVn,children:e?(0,Jge.jsx)(Fe,{color:"text.secondary",sx:dVn,children:e}):(0,Jge.jsx)(c0r,{files:t,highlight:r,onHighlight:n,onSelect:i})})}var f0r=L(z(),1),hVn={mt:6,alignSelf:"flex-start"};function e0e({onClose:e,onEntered:t,centered:r=!1,children:n}){return(0,f0r.jsx)(Ps,{open:!0,onClose:e,maxWidth:"sm",fullWidth:!0,slotProps:{paper:{sx:r?void 0:hVn},transition:{onEntered:t}},children:n})}var t0e=L(ge(),1);var d0r={files:[],loading:!1,error:!1};function h0r(e,t){let[r,n]=(0,t0e.useState)(d0r),i=yr();return(0,t0e.useEffect)(()=>{if(!e){n(d0r);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 pVn(e,t,r){let n=new URLSearchParams({path:e});return t&&n.set("cwd",t),t&&r&&n.set("node",r),`/file?${n}`}function p0r({onClose:e}){let{worktreeNode:t}=$n();return(0,ER.jsx)(Yu.Provider,{value:t,children:(0,ER.jsx)(mVn,{onClose:e})})}function mVn({onClose:e}){let{worktreeCwd:t,worktreeNode:r}=$n(),[n,i]=(0,r0e.useState)(""),o=h0r(t,n),a=Xi(),s=(0,r0e.useRef)(null),l=p=>a(pVn(p,t,r)),{highlight:u,setHighlight:f,onKeyDown:d}=k_(o.files,n,l,e),h=p=>{l(p),e()};return(0,ER.jsxs)(e0e,{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)(u0r,{message:l0r(t,n,o),files:o.files,highlight:u,onHighlight:f,onSelect:h})]})}function m0r(e){Io(Yn("quickOpen").matches,e)}var y0r=L(z(),1);function g0r(){let[e,t]=(0,n0e.useState)(!1);return m0r((0,n0e.useCallback)(()=>t(!0),[])),e?(0,y0r.jsx)(p0r,{onClose:()=>t(!1)}):null}var i0e=L(z(),1);function v0r({notice:e,onClose:t,onView:r}){let n=e?.sessionId??null;return(0,i0e.jsx)(ol,{open:e!==null,autoHideDuration:6e3,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,i0e.jsx)(ri,{severity:"success",variant:"filled",onClose:t,action:n!==null?(0,i0e.jsx)(qt,{color:"inherit",size:"small",onClick:()=>r(n),children:"View"}):void 0,children:e?.message})})}var c0e=L(ge(),1);function b0r(e){let t=["claude"];return e.exposeCodexActions&&t.push("codex"),e.exposePiActions&&t.push("pi"),t}var M0r=L(ge(),1);var x0r=L(z(),1),T0r=ft((0,x0r.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 N_="0.783.0";var gVn={connected:"success.main",connecting:"warning.main",disconnected:"error.main","version-blocked":"error.main"};function S0r(e){return e?gVn[e]:"success.main"}function C0r(e){return e.split("-")[0].split(".").map(Number)}function w0r(e,t){if(!e||!t||e===t)return;let r=C0r(e),n=C0r(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 o0e=L(ge(),1),W$e=(0,o0e.createContext)(null);function a0e(){return(0,o0e.useContext)(W$e)}var RR=L(z(),1),yVn={height:16,fontSize:10},vVn={opacity:.6,fontSize:"0.85em"};function bVn(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 TY({nodes:e,name:t,showVersion:r=!1}){let n=a0e()??N_,i=e.links.find(a=>a.name===t),o=w0r(i?.peerVersion,n);return(0,RR.jsx)(lr,{title:bVn(e,t),placement:"right",children:(0,RR.jsxs)(ue,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[(0,RR.jsx)(T0r,{sx:{fontSize:8,color:S0r(i?.state)}}),t,r&&i?.peerVersion&&(0,RR.jsxs)(ue,{component:"span",sx:vVn,children:["v",i.peerVersion]}),o&&(0,RR.jsx)(bn,{label:o,size:"small",color:o==="behind"?"warning":"info",sx:yVn})]})})}var AR=L(z(),1),xVn={opacity:.6},TVn={display:"inline-flex",alignItems:"center",gap:.5,px:.5,border:1,borderStyle:"dashed",borderRadius:1};function _0r({nodes:e,name:t,clone:r}){let n=(0,AR.jsx)(TY,{nodes:e,name:t});return r.kind==="cloned"?n:r.kind==="unavailable"?(0,AR.jsx)(ue,{component:"span",sx:xVn,children:n}):(0,AR.jsx)(lr,{title:oB(t,r.cloneTarget),children:(0,AR.jsxs)(ue,{component:"span",sx:TVn,children:[(0,AR.jsx)(iB,{sx:{fontSize:14}}),n]})})}var E0r=L(z(),1),SVn={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 k0r({value:e,label:t,checked:r,autoFocus:n,onSelect:i}){return(0,E0r.jsx)(Dn,{role:"radio","aria-checked":r,"data-value":e,tabIndex:r?0:-1,autoFocus:n&&r,onClick:i,sx:SVn,children:t})}var R0r={ArrowRight:1,ArrowLeft:-1};function CVn(e,t,r){if(e.key==="Tab"){let n=t+(e.shiftKey?-1:1);return n>=0&&n<r?n:void 0}return(t+R0r[e.key]+r)%r}function A0r(e,t,r,n){return i=>{if(i.key==="ArrowUp"||i.key==="ArrowDown"){if(!n)return;i.preventDefault(),n();return}if(i.key!=="Tab"&&!R0r[i.key]){lb(i);return}let o=CVn(i,e.indexOf(t),e.length);o!==void 0&&(i.preventDefault(),r(e[o]),i.currentTarget.querySelector(`[data-value="${e[o]}"]`)?.focus())}}var P0r=L(ge(),1);function vB(e){return e?.querySelector('[aria-checked="true"]')}function L0r(e,t){(0,P0r.useEffect)(()=>{let r=e.current;if(!r?.contains(document.activeElement))return;let n=vB(r);n&&n!==document.activeElement&&n.focus()},[e,t])}var V$e=L(z(),1),wVn={border:1,borderColor:"divider",borderRadius:1,height:40,p:"2px",flexShrink:0};function s0e({label:e,options:t,value:r,onChange:n,optionLabel:i=u=>u,groupRef:o,autoFocus:a,onTrack:s,onToggleRow:l}){return L0r(o,r),(0,V$e.jsx)(Rt,{ref:o,direction:"row",role:"radiogroup","aria-label":e,spacing:"2px",onFocus:s,onKeyDown:A0r(t,r,n,l),sx:wVn,children:t.map(u=>(0,V$e.jsx)(k0r,{value:u,label:i(u),checked:u===r,autoFocus:a,onSelect:()=>n(u)},u))})}var G$e=L(z(),1);function I0r({value:e,onChange:t,cloneState:r}){let{nodes:n,names:i,visible:o}=Nu(),a=(0,M0r.useRef)(null);return!o||!n||!e?null:(0,G$e.jsx)(s0e,{label:"Machine",options:i,value:e,onChange:t,optionLabel:s=>(0,G$e.jsx)(_0r,{nodes:n,name:s,clone:r(s)}),groupRef:a,autoFocus:!1,onTrack:()=>{}})}var N0r=L(z(),1);function D0r({value:e,onChange:t,placeholder:r,inputRef:n,autoFocus:i,onTrack:o}){return(0,N0r.jsx)(ni,{value:e,onChange:a=>t(a.target.value),onKeyDown:lb,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 $0r=L(ge(),1);var D2={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:$ee,submitLabel:"Start session"},design:{placeholder:"Describe the design task...",submitLabel:"Start design"}},O0r=Object.keys(D2);var q$e=L(z(),1);function B0r({anchor:e,harness:t,harnesses:r,onPick:n,onClose:i}){return(0,q$e.jsx)(Dl,{open:e!==null,anchorEl:e,onClose:i,slotProps:{list:{dense:!0,"aria-label":"Harness"}},children:r.map(o=>(0,q$e.jsx)(un,{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 F0r(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)(zp,{sx:{fontSize:18,mr:-.75}})]}):t}var LR=L(z(),1);function z0r({draft:e,harness:t,harnesses:r,focus:n}){let[i,o]=(0,$0r.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)(s0e,{label:"Mode",options:O0r,value:e.mode,onChange:l,optionLabel:F0r(r.length>1?t:void 0),groupRef:n.modeRef,autoFocus:n.autoFocus==="mode",onTrack:n.trackMode,onToggleRow:a?s:void 0}),(0,LR.jsx)(B0r,{anchor:i,harness:t,harnesses:r,onPick:e.setHarness,onClose:()=>o(null)})]})}var Z0r=L(ge(),1);var j$e=L(z(),1),_Vn={zIndex:e=>e.zIndex.modal+1};function H0r({open:e,anchor:t,children:r}){return(0,j$e.jsx)(OA,{open:e,anchorEl:t,placement:"bottom-start",sx:_Vn,children:(0,j$e.jsx)(an,{sx:{maxHeight:240,overflowY:"auto",width:t?.clientWidth},onMouseDown:n=>n.preventDefault(),children:r})})}function U0r(e){return{htmlInput:{role:"combobox","aria-label":"Repo","aria-expanded":e},input:{sx:{fontSize:13,height:40}}}}var W0r=L(cF(),1);function V0r({open:e,highlighted:t,accept:r,close:n,navigate:i,openList:o}){return a=>{if(!e){if(a.key==="ArrowDown"){a.preventDefault(),o();return}lb(a);return}if(a.key!=="Escape"){if(a.key==="Enter"){if(a.preventDefault(),t===void 0)return;(0,W0r.flushSync)(()=>{r(t),n()}),lb(a);return}if(a.key!=="Tab"){i(a);return}t!==void 0&&r(t),n()}}}function G0r(e,t){let r=t.trim().toLowerCase();return r?e.filter(n=>K1(n).toLowerCase().includes(r)):e}var Y$e=L(ge(),1);function q0r(){let[e,t]=(0,Y$e.useState)(!1),[r,n]=(0,Y$e.useState)("");return{open:e,query:r,show:()=>t(!0),filterBy:i=>{n(i),t(!0)},close:()=>{t(!1),n("")}}}var Y0r=L(ge(),1);var j0r=e=>e?K1(e):"";function K0r(e){let[t,r]=(0,Y0r.useState)(()=>j0r(e));return{text:t,setText:r,showRepo:n=>r(j0r(n))}}function X0r(e,t,r){let n=q0r(),i=K0r(t),o=G0r(e,n.query),a=f=>{r(f),i.showRepo(f)},s=k_(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:V0r({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 Q0r({repos:e,value:t,onChange:r,inputRef:n,autoFocus:i,onTrack:o}){let a=X0r(e,t,r),s=(0,Z0r.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:U0r(a.open)}),(0,bB.jsx)(H0r,{open:a.open,anchor:s.current,children:(0,bB.jsx)(Oge,{repos:a.filtered,selected:t,highlight:a.highlight,onHighlight:a.setHighlight,onSelect:a.pick})})]})}var O_=L(z(),1);function J0r({cloneState:e,...t}){let{draft:r,focus:n}=t,{repos:i}=$n();return(0,O_.jsxs)(Rt,{spacing:1,sx:{p:1},children:[(0,O_.jsx)(D0r,{value:r.prompt,onChange:r.setPrompt,placeholder:D2[r.mode].placeholder,inputRef:n.promptRef,autoFocus:n.autoFocus==="prompt",onTrack:n.trackPrompt}),(0,O_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[(0,O_.jsx)(Q0r,{repos:i,value:r.cwd,onChange:r.setCwd,inputRef:n.repoRef,autoFocus:n.autoFocus==="repo",onTrack:n.trackRepo}),(0,O_.jsx)(z0r,{...t})]}),(0,O_.jsx)(I0r,{value:r.node,onChange:r.setNode,cloneState:e})]})}var xB=L(z(),1),kVn=["Enter start","Shift+Enter newline","Esc close"],EVn={alignItems:"center",px:1.5,py:1,borderTop:1,borderColor:"divider",bgcolor:"action.hover"};function eyr({submitLabel:e,disabled:t=!1}){return(0,xB.jsxs)(Rt,{direction:"row",spacing:1.5,sx:EVn,children:[(0,xB.jsx)(Rt,{direction:"row",spacing:1.5,sx:{mr:"auto"},children:kVn.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 tyr({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}]:[];unt(D2[e].sessionMode,n,(u,f)=>o.onCreateAssist(u,f,...l),()=>{},r)}function ryr(e,t,r,n){return r.kind==="blocked"?!1:r.kind==="clone"?(Rge(r.prompt,n.onCreateAssist),!0):(tyr({mode:e.mode,harness:t,prompt:e.prompt,cwd:r.cwd,node:e.node},n),e.clear(),!0)}var MR=L(ge(),1);function nyr(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 RVn(e,t,r){return e?r.kind==="cloned"?{kind:"launch",cwd:r.cwd}:r.kind==="clonable"?{kind:"clone",prompt:Fge(r,t)}:{kind:"blocked"}:{kind:"launch",cwd:e}}function iyr(e,t){let{names:r,visible:n}=Nu(),i=Ige(t,n?r:[void 0]);return{cloneState:i,target:RVn(t,e,i(e))}}var TB=L(z(),1);function oyr({draft:e,launchers:t,onClose:r}){let n=nyr(e.focus,e.setFocus),i=b0r(S_()),o=i.includes(e.harness)?e.harness:"claude",{target:a,cloneState:s}=iyr(e.node,e.cwd),l=u=>{u.preventDefault(),ryr(e,o,a,t)&&r()};return(0,TB.jsx)(e0e,{onClose:r,onEntered:n.restore,centered:!0,children:(0,TB.jsxs)("form",{onSubmit:l,children:[(0,TB.jsx)(J0r,{draft:e,harness:o,harnesses:i,focus:n,cloneState:s}),(0,TB.jsx)(eyr,{submitLabel:a.kind==="clone"?"Clone":D2[e.mode].submitLabel,disabled:a.kind==="blocked"})]})})}var l0e=L(ge(),1);function ayr(e){let[t,r]=(0,l0e.useState)(null);return(0,l0e.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(D2,s?.mode)&&(i=s.mode)}catch{}n||r(i)})(),()=>{n=!0}},[e]),t}function syr(e,{visible:t,names:r,selected:n}){if(t)return e&&r.includes(e)?e:n}var N2=L(ge(),1),lyr={field:"prompt",selectionStart:0,selectionEnd:0};function cyr(){let[e,t]=(0,N2.useState)(""),[r,n]=(0,N2.useState)(),[i,o]=(0,N2.useState)(),[a,s]=(0,N2.useState)("claude"),[l,u]=(0,N2.useState)(),[f,d]=(0,N2.useState)(lyr),h=(0,N2.useCallback)(()=>{t(""),n(void 0),o(void 0),u(void 0),d(lyr)},[]);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 uyr(e=ayr){let{selectedCwd:t}=$n(),r=Nu(),n=cyr(),i=n.cwd??t,o=e(i);return o?{...n,cwd:i,mode:n.mode??o,node:syr(n.node,r)}:null}function fyr(e){Io(Yn("newSession").matches,e)}var dyr=L(ge(),1);function hyr(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,dyr.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 myr=L(z(),1);function pyr({launchers:e}){let[t,r]=(0,c0e.useState)(!1),n=uyr(),i=(0,c0e.useCallback)(()=>r(!0),[]);return fyr(i),hyr(n,i),!t||!n?null:(0,myr.jsx)(oyr,{draft:n,launchers:e,onClose:()=>r(!1)})}var u0e=L(z(),1);function gyr({reconnecting:e}){return(0,u0e.jsx)(ol,{open:e,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,u0e.jsx)(ri,{severity:"info",variant:"filled",icon:(0,u0e.jsx)(mo,{size:16,color:"inherit"}),children:"Reconnecting\u2026"})})}var ev=L(z(),1);function yyr({socket:e,onViewLaunchedSession:t}){return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(g0r,{}),(0,ev.jsx)(pyr,{launchers:{onCreate:e.createSession,onCreateDesign:e.createDesignSession,onCreateHarness:e.createHarnessSession,onCreateAssist:e.createAssistSession}}),(0,ev.jsx)(gyr,{reconnecting:e.reconnecting}),(0,ev.jsx)(vu,{error:e.error,onClose:e.clearError}),(0,ev.jsx)(v0r,{notice:e.success,onClose:e.clearSuccess,onView:t})]})}var l0=L(ge(),1);var AVn=6e4;function vyr(e){let t=e.nodes?.local,r=e.names.join(`
|
|
3976
|
+
`,Lpr={...Ppr,borderColor:"warning.main",borderLeft:4,borderLeftColor:"warning.main",bgcolor:e=>Ea(e.palette.warning.main,.08)},wUn={...Lpr,borderLeftColor:"transparent",backgroundImage:e=>`repeating-linear-gradient(to bottom, ${e.palette.warning.main} 0 ${Rpr}px, transparent ${Rpr}px ${A$e}px)`,backgroundOrigin:"border-box",backgroundRepeat:"repeat-y",backgroundSize:`4px ${A$e}px`,animation:`${CUn} 0.9s linear infinite`,"@media (prefers-reduced-motion: reduce)":{animation:"none"}},Apr={"& .MuiButtonBase-root:focus-visible":{outline:"2px solid",outlineColor:"primary.main",outlineOffset:"2px"}},j1={card:Ppr,inProgressCard:Lpr,inProgressRunningCard:wUn,main:{minWidth:0,textAlign:"left"},stretchedNameLink:{display:"block",fontWeight:500,color:"text.primary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",...SUn},meta:{display:"flex",alignItems:"center",gap:1,...Epr,width:"fit-content",maxWidth:"100%",fontSize:"0.75rem",color:"text.secondary","& a, & p":{fontSize:"0.75rem"},...Apr},id:{color:"text.disabled"},actions:{display:"flex",alignItems:"center",gap:1,flexShrink:0,...Epr,...Apr}};function Sge(e){let t=e.peakContextPct>0?` \xB7 \u2593 ${Math.round(e.peakContextPct)}%`:"";return`\u2191 ${zd(e.tokensUp)} \u2193 ${zd(e.tokensDown)} \xB7 \u23F1 ${r0(e.activeMs)}${t}`}var Ipr=L(z(),1),_Un={width:6,height:6,borderRadius:"50%",bgcolor:"currentColor",flexShrink:0};function Mpr(){return(0,Ipr.jsx)(ue,{component:"span",sx:_Un})}var lY=L(z(),1),Dpr={display:"inline-flex",alignItems:"center",gap:.625,color:"warning.main",fontWeight:500,fontSize:"0.75rem",whiteSpace:"nowrap",borderRadius:1};function Npr({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,lY.jsx)(Mpr,{});if(!t)return(0,lY.jsxs)(ue,{component:"span",sx:Dpr,children:[o,i]});let a=()=>{r?.(t.id),n("/sessions")};return(0,lY.jsxs)(Dn,{sx:Dpr,title:`Open the ${t.status} session`,onClick:a,children:[o,i]})}var np=L(z(),1),kUn={display:"inline-flex",alignItems:"center",gap:.5},EUn={width:8,height:8,borderRadius:"50%",flexShrink:0},RUn={whiteSpace:"nowrap"};function AUn({type:e}){let t=hge[e];return(0,np.jsxs)(ue,{component:"span",sx:kUn,children:[(0,np.jsx)(ue,{component:"span",sx:{...EUn,bgcolor:`${t}.main`}}),e]})}function PUn({item:e}){return e.usageTotal?(0,np.jsx)(lr,{title:Sge(e.usageTotal),children:(0,np.jsx)(ue,{component:"span",sx:RUn,children:`\u23F1 ${r0(e.usageTotal.activeMs)}`})}):null}function Opr({item:e,openSession:t,onSelectSession:r}){return(0,np.jsxs)(ue,{sx:j1.meta,children:[(0,np.jsx)(ue,{component:"span",sx:j1.id,children:so(e.id)}),(0,np.jsx)(AUn,{type:e.type}),(0,np.jsx)(Npr,{item:e,openSession:t,onSelectSession:r}),(0,np.jsx)(cP,{jiraKey:e.jiraKey}),(0,np.jsx)(lP,{githubIssue:e.githubIssue,variant:"icon"}),(0,np.jsx)(PUn,{item:e})]})}function Bpr(e,t){return e.filter(r=>wP(r)?.itemId===t).reduce((r,n)=>r&&r.startedAt>=n.startedAt?r:n,void 0)}var $pr=L(z(),1),LUn={todo:"\u25CB","in-progress":"\u25D4",done:"\u25CF",wontdo:"\u2715"},MUn={todo:"text.disabled","in-progress":"warning.main",done:"success.main",wontdo:"error.main"};function IUn(e){return{fontSize:"1.125rem",flexShrink:0,color:MUn[e]}}function Fpr({status:e}){return(0,$pr.jsx)(Fe,{sx:IUn(e),children:LUn[e]})}function Cge(e){return e.status==="todo"||e.status==="in-progress"}function DUn(e){if(e.status==="done")return e.totalPhases;if(e.status==="in-progress")return e.currentPhase}function NUn(e,t,r){return r?"complete":e<t?"done":e===t?"current":"remaining"}function zpr(e){let t=e.totalPhases,r=DUn(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:NUn(o+1,r,n)}))}}var nB=L(z(),1),OUn={done:"text.secondary",current:"warning.main",remaining:"divider",complete:"success.main"},BUn={display:"inline-flex",alignItems:"center",gap:.5,flexShrink:0},FUn={fontSize:"0.6875rem",color:"text.secondary",fontVariantNumeric:"tabular-nums"},$Un={display:"inline-flex",alignItems:"center",gap:"2px"},zUn={width:6,height:12,borderRadius:"1px",flexShrink:0};function Hpr({item:e}){let t=zpr(e);return t?(0,nB.jsxs)(ue,{sx:BUn,title:`Phase ${t.reached} of ${t.total}`,children:[(0,nB.jsx)(ue,{component:"span",sx:FUn,children:`${t.reached}/${t.total}`}),(0,nB.jsx)(ue,{component:"span",sx:$Un,"aria-hidden":!0,children:t.segments.map(r=>(0,nB.jsx)(ue,{component:"span","data-segment":r.kind,sx:{...zUn,bgcolor:OUn[r.kind]}},r.phase))})]}):null}var smr=L(ge(),1);var kge=L(ge(),1);var cY=L(z(),1);function Upr({tooltip:e,disabled:t,onClick:r}){return(0,cY.jsx)(lr,{title:e,children:(0,cY.jsx)(ue,{component:"span",sx:{display:"flex"},children:(0,cY.jsx)(qt,{startIcon:(0,cY.jsx)(Op,{}),disabled:t,onClick:r,children:"Build"})})})}var P$e=L(z(),1);function wge(e){let t=[];return e.exposeCodexActions&&t.push({kind:"codex",label:"with Codex"}),e.exposePiActions&&t.push({kind:"pi",label:"with pi"}),t}function _ge({anchorEl:e,open:t,onClose:r,options:n,onSelect:i,stop:o}){return(0,P$e.jsx)(Dl,{anchorEl:e,open:t,onClose:r,onClick:o,children:n.map(a=>(0,P$e.jsx)(un,{onClick:s=>{o(s),i(a.kind)},children:a.label},a.kind))})}var Y1=L(z(),1);function Wpr({tooltip:e,disabled:t,onBuild:r,onSelectHarness:n}){let i=wge(S_()),o=(0,kge.useRef)(null),[a,s]=(0,kge.useState)(!1),l=u=>u.stopPropagation();return(0,Y1.jsxs)(Y1.Fragment,{children:[(0,Y1.jsxs)(Q2,{ref:o,variant:"contained",color:"success",size:"small",disabled:t,children:[(0,Y1.jsx)(Upr,{tooltip:e,disabled:t,onClick:u=>{l(u),r()}}),i.length>0&&(0,Y1.jsx)(qt,{"aria-label":"Build with a different harness",onClick:u=>{l(u),s(!0)},children:(0,Y1.jsx)(zp,{})})]}),(0,Y1.jsx)(_ge,{anchorEl:o.current,open:a,onClose:()=>s(!1),options:i,onSelect:u=>{s(!1),n(u)},stop:l})]})}var Vpr=L(z(),1),iB=ft((0,Vpr.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 __=L(z(),1),HUn={vertical:"bottom",horizontal:"center"};function Ege({clone:e}){let{prompt:t,confirm:r,cancel:n,error:i,dismissError:o}=e;return(0,__.jsxs)(__.Fragment,{children:[t&&(0,__.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,__.jsx)(ol,{open:!!i,autoHideDuration:8e3,onClose:o,anchorOrigin:HUn,children:(0,__.jsx)(ri,{severity:"error",onClose:o,variant:"filled",children:i})})]})}var o0=L(ge(),1);function L$e(e){return["backlog","clone",e]}function Rge(e,t){t(L$e(e.origin),void 0,{title:`Clone ${e.displayName}`,subtitle:e.origin,...e.node&&{node:e.node}})}function Gpr(e,t){return!!e&&e.length===t.length&&e.every((r,n)=>r===t[n])}function qpr(e,t,r){let n=L$e(t.origin),i=new Set(e.filter(o=>Gpr(o.assistArgs,n)).map(o=>o.id));return Rge(t,r),{args:n,target:t.cloneTarget,node:t.node,preexisting:i}}function jpr(e,t){if(!t.id){let n=e.find(i=>Gpr(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 Age(e){let{setSelectedCwd:t}=$n(),{launchAssist:r}=$l(),[n,i]=(0,o0.useState)(null),[o,a]=(0,o0.useState)(null),[s,l]=(0,o0.useState)(null),u=(0,o0.useCallback)(p=>{l(null),i(p)},[]),f=(0,o0.useCallback)(()=>i(null),[]),d=(0,o0.useCallback)(()=>l(null),[]),h=(0,o0.useCallback)(()=>{n&&(a(qpr(e,n,r)),i(null))},[n,e,r]);return(0,o0.useEffect)(()=>{if(!o)return;let p=jpr(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 E2=L(z(),1),UUn={border:1,borderStyle:"dashed"};function Ypr({target:e}){let t=Age(Tge());return(0,E2.jsxs)(E2.Fragment,{children:[(0,E2.jsx)(lr,{title:oB(e.node,e.cloneTarget),children:(0,E2.jsx)(sr,{"aria-label":"Clone",size:"small",sx:UUn,onClick:r=>{r.stopPropagation(),t.requestClone(e)},children:(0,E2.jsx)(iB,{fontSize:"small"})})}),(0,E2.jsx)(Ege,{clone:t})]})}function Kpr(e,t,r,n){let i=r.node?[{node:r.node}]:[];e(["backlog","run",so(t),...n],r.cwd,...i)}var uY=L(z(),1);function Xpr({tooltip:e,disabled:t,onClick:r}){return(0,uY.jsx)(lr,{title:e,children:(0,uY.jsx)("span",{children:(0,uY.jsx)(sr,{"aria-label":"Build",color:"success",size:"small",disabled:t,onClick:r,children:(0,uY.jsx)(Op,{})})})})}function WUn(e,t){let r=e.assistArgs;if(r?.[0]!=="backlog"||r[1]!=="run"||!r[2])return!1;try{return gJ(r[2])===t}catch{return!1}}function Zpr(e,t){return e.find(r=>r.status!=="done"&&r.status!=="error"&&(WUn(r,t)||wP(r)?.itemId===t))}var Pge=L(ge(),1),M$e=(0,Pge.createContext)({nodes:null,names:[],visible:!1,selected:void 0,select:()=>{}});function Nu(){return(0,Pge.useContext)(M$e)}function Lge(){let{nodes:e,selected:t}=Nu();return t&&t!==e?.local?t:void 0}var emr=L(ge(),1);var Mge=L(ge(),1);function Qpr(e,t){return Promise.all(t.map(async r=>{let n=await VUn(e,r).catch(()=>({}));return[r,n]}))}async function VUn(e,t){let r=await fetch(tn(`/api/repo-location?origin=${encodeURIComponent(e)}`,t||void 0));return r.ok?r.json():{}}var I$e="\0";function Jpr(e,t){let[r,n]=(0,Mge.useState)(null);return(0,Mge.useEffect)(()=>{if(!e||!t)return;let i=!1;return Qpr(e,t.split(I$e)).then(o=>{i||n({origin:e,byNode:Object.fromEntries(o)})}),()=>{i=!0}},[e,t]),r}function Ige(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(I$e),a=Jpr(i,o);return(0,emr.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 tmr=L(z(),1);function aB({inputRef:e,value:t,onChange:r,onKeyDown:n,placeholder:i,autoFocus:o}){return(0,tmr.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 Dge=L(ge(),1);function Nge(e){let t=(0,Dge.useRef)(null);return(0,Dge.useEffect)(()=>{e&&t.current?.scrollIntoView({block:"nearest"})},[e]),t}var nmr=L(z(),1);function rmr({cwd:e,selected:t,highlighted:r,onHover:n,onSelect:i}){let o=Nge(r);return(0,nmr.jsx)(un,{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:K1(e)})}var D$e=L(z(),1);function Oge({repos:e,selected:t,highlight:r,onHighlight:n,onSelect:i}){return(0,D$e.jsx)(Tp,{dense:!0,children:e.map((o,a)=>(0,D$e.jsx)(rmr,{cwd:o,selected:o===t,highlighted:a===r,onHover:()=>n(a),onSelect:()=>i(o)},o))})}var Bge=L(ge(),1);function k_(e,t,r,n){let[i,o]=(0,Bge.useState)(0);return(0,Bge.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 fY=L(z(),1);function K1(e){let t=e.includes("\\")?"\\":"/";return e.split(t).filter(Boolean).pop()??e}var GUn={...LP};function imr({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}=k_(l,s,r,n);return(0,fY.jsxs)(an,{elevation:4,sx:GUn,children:[(0,fY.jsx)(aB,{inputRef:a,value:i,onChange:o,onKeyDown:d,placeholder:"Filter repos..."}),(0,fY.jsx)(Oge,{repos:l,selected:t,highlight:u,onHighlight:f,onSelect:p=>{r(p),n()}})]})}function Fge(e,t){return{origin:e.origin,cloneTarget:e.cloneTarget,displayName:K1(e.origin),node:t}}function omr(){let e=as(),t=Lge(),r=Ige(e??"",[t])(t);return e?r.kind==="cloned"?{kind:"ready",cwd:r.cwd,node:t}:r.kind==="clonable"?{kind:"clone",prompt:Fge(r,t)}:{kind:"unavailable",node:t??"this machine"}:{kind:"ready",node:t}}function amr(e,t){return t?`Not cloned on ${t}`:e?"Already running \u2014 close that session to run it again":"Build"}var $ge=L(z(),1);function zge({itemId:e,compact:t=!1}){let{launchAssist:r}=$l(),n=omr(),i=Zpr(Tge(),e),[o,a]=(0,smr.useState)(!1);if(n.kind==="clone")return(0,$ge.jsx)(Ypr,{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),Kpr(r,e,n,d))},f=amr(i!==void 0,s);return t?(0,$ge.jsx)(Xpr,{tooltip:f,disabled:l,onClick:d=>{d.stopPropagation(),u([])}}):(0,$ge.jsx)(Wpr,{tooltip:f,disabled:l,onBuild:()=>u([]),onSelectHarness:d=>u(["--harness",d])})}var lmr=L(ge(),1);var lB=L(z(),1);function cmr({itemId:e,starred:t,onToggled:r}){let n=as(),i=yr(),[o,a]=(0,lmr.useState)(!1);return(0,lB.jsx)(lr,{title:t?"Unstar":"Star",children:(0,lB.jsx)("span",{children:(0,lB.jsx)(sr,{"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 LJ(e,!t,n,i),await r()}finally{a(!1)}}},children:t?(0,lB.jsx)(Oee,{}):(0,lB.jsx)(Bee,{})})})})}var umr=L(z(),1),fmr=ft((0,umr.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 dY=L(z(),1),qUn={display:"inline-flex",alignItems:"center",gap:.375,flexShrink:0,fontSize:"0.71875rem",color:"text.secondary","& svg":{fontSize:14}};function dmr({count:e}){return e<1?null:(0,dY.jsx)(lr,{title:`${e} incomplete subtask${e===1?"":"s"}`,children:(0,dY.jsxs)(ue,{component:"span",sx:qUn,children:[(0,dY.jsx)(fmr,{}),e]})})}var R2=L(z(),1);function hmr({item:e,onReload:t}){return(0,R2.jsxs)(R2.Fragment,{children:[(0,R2.jsx)(dmr,{count:e.incompleteSubtasks}),(0,R2.jsx)(Hpr,{item:e}),(0,R2.jsx)(cmr,{itemId:e.id,starred:e.starred,onToggled:t}),Cge(e)&&(0,R2.jsx)(zge,{itemId:e.id,compact:!0})]})}var A2=L(z(),1);function jUn(e,t){return e?t?j1.inProgressRunningCard:j1.inProgressCard:j1.card}function pmr({item:e,to:t,socket:r,onReload:n}){let i=Bpr(r.sessions,e.id),o=e.status==="in-progress",a=o&&i?.status==="running";return(0,A2.jsxs)(ue,{sx:jUn(o,a),children:[(0,A2.jsx)(Fpr,{status:e.status}),(0,A2.jsxs)(ue,{sx:j1.main,children:[(0,A2.jsx)(xn,{component:ys,to:t,underline:"none",title:e.name,sx:j1.stretchedNameLink,children:e.name}),(0,A2.jsx)(Opr,{item:e,openSession:i,onSelectSession:r.selectSession})]}),(0,A2.jsx)(ue,{sx:j1.actions,children:(0,A2.jsx)(hmr,{item:e,onReload:n})})]})}var gmr=L(z(),1),YUn={all:"items",story:"stories",bug:"bugs"},KUn={textAlign:"center",color:"text.disabled",py:6,px:2};function mmr({query:e,typeFilter:t}){let r=YUn[t],n=e.trim()?`No ${r} match your search.`:`No ${r} in the backlog.`;return(0,gmr.jsx)(ue,{sx:KUn,children:n})}var X1=L(z(),1),XUn={display:"flex",justifyContent:"center",py:6};function ymr({loading:e,error:t,query:r,typeFilter:n,items:i,socket:o,itemPath:a,onReload:s}){if(e)return(0,X1.jsx)(ue,{sx:XUn,children:(0,X1.jsx)(mo,{})});let l=t&&(0,X1.jsx)(ri,{severity:"error",children:t});return i.length===0?l||(0,X1.jsx)(mmr,{query:r,typeFilter:n}):(0,X1.jsxs)(X1.Fragment,{children:[l,i.map(u=>(0,X1.jsx)(pmr,{item:u,to:a(u),socket:o,onReload:s},u.id))]})}var cB=L(ge(),1);function ZUn(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 vmr({cwd:e,node:t,knownCwds:r,signal:n}){return(await fetch(Fl(ZUn(r),e,t),{signal:n})).json()}function bmr(){let{repos:e,selectedCwd:t,cloneOn:r}=$n(),n=Lge(),[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 vmr({cwd:s,node:n,knownCwds:a,signal:l.signal}).then(o).catch(()=>{}),()=>l.abort()},[a,s,n]),{summaries:i,node:n}}var Hge=L(z(),1),QUn={borderStyle:"dashed"};function xmr({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,Hge.jsx)(bn,{label:`${o} (${a})`,size:"small",color:s?"primary":"default",variant:s?"filled":"outlined",disabled:!l&&!f,onClick:d,icon:f?(0,Hge.jsx)(iB,{}):void 0,sx:f?QUn:void 0});return!f||!u?h:(0,Hge.jsx)(lr,{describeChild:!0,title:oB(t,u),children:h})}var hY=L(z(),1),JUn={flexWrap:"wrap",gap:1,mb:2};function Tmr({sessions:e}){let{summaries:t,node:r}=bmr(),{setSelectedCwd:n}=$n(),i=Age(e);return t.length===0?null:(0,hY.jsxs)(Rt,{direction:"row",sx:JUn,children:[t.map(o=>(0,hY.jsx)(xmr,{summary:o,node:r,onSelectCwd:a=>r?n(a,r):n(a),onRequestClone:i.requestClone},o.origin)),(0,hY.jsx)(Ege,{clone:i})]})}var Cmr=L(z(),1);function Smr({value:e,onChange:t}){return(0,Cmr.jsx)(ni,{fullWidth:!0,size:"small",placeholder:"Search backlog\u2026",value:e,onChange:r=>t(r.target.value),sx:{mb:2}})}var Uge=L(ge(),1);var Wge=L(z(),1);async function eWn(){return(await(await fetch("/api/backups/list")).json())[0]}function wmr(){let[e,t]=(0,Uge.useState)();return(0,Uge.useEffect)(()=>{eWn().then(t)},[]),e?(0,Wge.jsx)(lr,{title:new Date(e.createdAt).toLocaleString(),children:(0,Wge.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 _mr(){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 kmr({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 E_=L(z(),1),tWn={justifyContent:"space-between",alignItems:"center",mb:3},rWn={fontWeight:600},nWn={alignItems:"center"};function Emr({typeFilter:e,onTypeFilterChange:t}){return(0,E_.jsxs)(Rt,{direction:"row",sx:tWn,children:[(0,E_.jsx)(Fe,{variant:"h5",sx:rWn,children:"Backlog"}),(0,E_.jsxs)(Rt,{direction:"row",spacing:2,sx:nWn,children:[(0,E_.jsx)(wmr,{}),(0,E_.jsx)(kmr,{value:e,onChange:t}),(0,E_.jsx)(_mr,{})]})]})}var P2=L(z(),1);function Amr({items:e,loading:t,error:r,socket:n,onReload:i}){let o=as(),a=yr(),{query:s,setQuery:l,results:u,loading:f}=kpr(),[d,h]=(0,Rmr.useState)("all"),p=u??e,m=d==="all"?p:p.filter(g=>g.type===d);return(0,P2.jsxs)(P2.Fragment,{children:[(0,P2.jsx)(Emr,{typeFilter:d,onTypeFilterChange:h}),(0,P2.jsx)(Smr,{value:s,onChange:l}),(0,P2.jsx)(Tmr,{sessions:n.sessions}),(0,P2.jsx)(ymr,{loading:t||f,error:u?null:r,query:s,typeFilter:d,items:m,socket:n,itemPath:g=>BT(g.id,o,a),onReload:i})]})}var Qge=L(ge(),1);var yR=L(ge(),1);async function N$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 Pmr(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 N$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 N$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 R_={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"},pY=140,O$e="--pinned-header-height",Vge=`var(${O$e}, ${pY}px)`,Lmr=`calc(${Vge} + 8px)`;function $m(e){return{id:R_[e],sx:{mb:2,scrollMarginTop:Lmr}}}function Gge(e){return{id:`item-phase-${e}`,sx:{scrollMarginTop:Lmr}}}var A_=L(z(),1);function Mmr({criteria:e}){return e.length===0?null:(0,A_.jsxs)(ue,{...$m("acceptanceCriteria"),children:[(0,A_.jsx)(Fe,{variant:"overline",sx:{color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"},children:"Acceptance Criteria"}),(0,A_.jsx)(R0,{disablePadding:!0,sx:{maxWidth:"72ch"},children:e.map((t,r)=>(0,A_.jsxs)(tT,{disableGutters:!0,disablePadding:!0,sx:{py:.5,display:"flex",alignItems:"baseline"},children:[(0,A_.jsxs)(Fe,{component:"span",sx:{color:"text.secondary",mr:1},children:[r+1,"."]}),(0,A_.jsx)(yu,{component:"span",className:"markdown",html:EP(t)})]},t))})]})}var mY=L(z(),1),iWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Imr({description:e}){return e?(0,mY.jsxs)(ue,{...$m("description"),children:[(0,mY.jsx)(Fe,{variant:"overline",sx:iWn,children:"Description"}),(0,mY.jsx)(kw,{content:e,renderMermaid:!0})]}):null}var Umr=L(ge(),1);function Dmr(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 Omr=L(z(),1),oWn={color:"text.secondary",alignSelf:"flex-start",textAlign:"left"};function Nmr({hiddenCount:e,expanded:t,onToggle:r}){return e===0?null:(0,Omr.jsx)(xn,{component:"button",type:"button",variant:"body2",underline:"hover",sx:oWn,onClick:n=>{n.stopPropagation(),r()},children:t?"Show fewer commits":`\u2026 and ${e} more commits`})}var vR=L(z(),1),aWn={display:"flex",alignItems:"center",gap:1},sWn={color:"text.secondary",fontFamily:"monospace"},lWn={flex:1,overflowWrap:"anywhere"},cWn={color:"text.disabled","&:hover":{color:"text.primary"}};function Bmr({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:aWn,children:[(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:sWn,children:"session"}),(0,vR.jsx)(Fe,{variant:"body2",component:"span",sx:lWn,children:e.title??e.sessionId}),(0,vR.jsx)(sr,{size:"small",title:"Resume",sx:cWn,onClick:r,children:(0,vR.jsx)(Op,{sx:{fontSize:14}})})]})}var $mr=L(z(),1),uWn={color:"text.disabled",ml:1};function Fmr({gitRef:e}){return e.kind!=="commit"||!e.createdAt?null:(0,$mr.jsx)(ue,{component:"span",sx:uWn,children:fWn(e.createdAt)})}function fWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function zmr(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 Z1=L(z(),1),dWn={color:"text.secondary",mr:1,fontFamily:"monospace"};function hWn({gitRef:e}){let t=zmr(e);return!e.url||e.kind==="session"?(0,Z1.jsx)(Z1.Fragment,{children:t}):(0,Z1.jsx)(xn,{href:e.url,target:"_blank",rel:"noopener",onClick:r=>r.stopPropagation(),children:t})}function Hmr({gitRef:e}){return(0,Z1.jsxs)(Fe,{variant:"body2",children:[(0,Z1.jsx)(ue,{component:"span",sx:dWn,children:e.kind}),(0,Z1.jsx)(hWn,{gitRef:e}),(0,Z1.jsx)(Fmr,{gitRef:e})]})}var P_=L(z(),1),pWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Wmr({gitRefs:e,conversations:t=[]}){let[r,n]=(0,Umr.useState)(!1),{branches:i,commits:o,overflowCommits:a,prs:s,slacks:l}=Dmr(e),u=[...i,...o,...r?a:[],...s,...l];return u.length===0&&t.length===0?null:(0,P_.jsxs)(ue,{...$m("activity"),children:[(0,P_.jsx)(Fe,{variant:"overline",sx:pWn,children:"Activity"}),(0,P_.jsxs)(Rt,{spacing:1,children:[u.map(f=>(0,P_.jsx)(Hmr,{gitRef:f},`${f.kind}:${f.ref}`)),t.map(f=>(0,P_.jsx)(Bmr,{conversation:f},f.sessionId)),(0,P_.jsx)(Nmr,{hiddenCount:a.length,expanded:r,onToggle:()=>n(f=>!f)})]})]})}var bR=L(z(),1),mWn={alignItems:"center",fontSize:"0.75rem",color:"text.secondary",mb:.5},gWn={color:"text.disabled"},yWn={fontWeight:500},vWn={summary:"Phase summary",comment:"Comment"};function Vmr({comment:e}){return(0,bR.jsxs)(Rt,{direction:"row",spacing:.5,sx:mWn,children:[e.id!==void 0&&(0,bR.jsxs)(Fe,{variant:"caption",sx:gWn,children:["#",e.id]}),(0,bR.jsx)(Fe,{variant:"caption",sx:yWn,children:vWn[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 ",bWn(e.timestamp)]})]})}function bWn(e){return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var Gmr=L(z(),1),qmr=ft((0,Gmr.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 B$e=L(ge(),1);async function jmr(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 Q1=L(z(),1),xWn={mt:-.5,mr:-.5,color:"text.secondary"};function Ymr({itemId:e,commentId:t,onDeleted:r}){let n=as(),i=yr(),[o,a]=(0,B$e.useState)(!1),[s,l]=(0,B$e.useState)(),u=()=>l(void 0);return(0,Q1.jsxs)(Q1.Fragment,{children:[o&&(0,Q1.jsx)(vo,{message:"Are you sure you want to delete this comment?",onConfirm:async()=>{a(!1);try{await jmr(e,t,n,i),await r()}catch(f){l(f instanceof Error?f.message:"Failed to delete comment")}},onCancel:()=>a(!1)}),(0,Q1.jsx)(ol,{open:s!==void 0,autoHideDuration:6e3,onClose:u,children:(0,Q1.jsx)(ri,{severity:"error",variant:"filled",onClose:u,children:s})}),(0,Q1.jsx)(sr,{"aria-label":"Delete comment",size:"small",sx:xWn,onClick:()=>a(!0),children:(0,Q1.jsx)(qmr,{fontSize:"inherit"})})]})}var xR=L(z(),1),TWn={summary:{bgcolor:"warning.light",borderColor:"warning.dark"},comment:{bgcolor:"action.selected",borderColor:"divider"}},SWn={justifyContent:"space-between",alignItems:"flex-start"},CWn={color:"text.primary",whiteSpace:"pre-wrap"};function wWn(e){return{p:1.5,bgcolor:e.bgcolor,borderColor:e.borderColor}}function Kmr({comment:e,itemId:t,onDeleted:r}){return(0,xR.jsxs)(an,{variant:"outlined",sx:wWn(TWn[e.type]),children:[(0,xR.jsxs)(Rt,{direction:"row",sx:SWn,children:[(0,xR.jsx)(Vmr,{comment:e}),e.id!==void 0&&t!==void 0&&r&&(0,xR.jsx)(Ymr,{itemId:t,commentId:e.id,onDeleted:r})]}),(0,xR.jsx)(Fe,{variant:"body2",sx:CWn,children:e.text})]})}var dB=L(z(),1),_Wn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function Xmr({comments:e,itemId:t,onCommentDeleted:r}){return e.length===0?null:(0,dB.jsxs)(ue,{...$m("comments"),children:[(0,dB.jsx)(Fe,{variant:"overline",sx:_Wn,children:"Comments"}),(0,dB.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,dB.jsx)(Kmr,{comment:n,itemId:t,onDeleted:r},`${n.timestamp}-${i}`))})]})}var Zmr=L(z(),1);function hB({total:e,sx:t}){return(0,Zmr.jsx)(Fe,{sx:t,children:Sge(e)})}var Jmr=L(z(),1),kWn={color:"text.secondary",fontSize:"0.75rem"};function Qmr({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,Jmr.jsx)(hB,{total:t,sx:kWn})}var L2=L(z(),1);function egr({checks:e}){return(0,L2.jsxs)(ue,{sx:{mt:1,pt:1},children:[(0,L2.jsx)(no,{sx:{mb:1}}),(0,L2.jsx)(Fe,{variant:"overline",sx:{color:"text.disabled",letterSpacing:"0.08em"},children:"Manual Checks"}),(0,L2.jsx)(R0,{disablePadding:!0,sx:{ml:.5,mt:.5},children:e.map(t=>(0,L2.jsxs)(tT,{disableGutters:!0,disablePadding:!0,sx:{py:.25,display:"flex",alignItems:"baseline"},children:[(0,L2.jsx)(Fe,{component:"span",sx:{mr:1,fontSize:"0.875rem",color:"text.secondary"},children:"\u2610"}),(0,L2.jsx)(yu,{component:"span",className:"markdown",sx:{fontSize:"0.875rem",color:"text.secondary"},html:EP(t)})]},t))})]})}var qge={done:{borderColor:"success.light",bgcolor:"success.light"},current:{borderColor:"info.main",bgcolor:"info.light",ring:"info.light"},upcoming:{borderColor:"divider",bgcolor:"background.paper"}};function tgr(e){let t=qge[e];return{p:2,borderColor:t.ring?"info.main":t.borderColor,bgcolor:t.bgcolor,...t.ring?{boxShadow:"0 0 0 2px"}:{}}}var rgr={done:"\u2713",current:"\u2022",upcoming:"\u2022"};var ogr=L(ge(),1);var ngr=L(ge(),1),J1=L(z(),1);function igr({phaseName:e,onConfirm:t,onCancel:r}){let[n,i]=(0,ngr.useState)("");return(0,J1.jsxs)(Ps,{open:!0,onClose:r,maxWidth:"xs",fullWidth:!0,children:[(0,J1.jsxs)(Il,{children:["Rewind to ",e,"?"]}),(0,J1.jsxs)(Ml,{children:[(0,J1.jsx)(Fe,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"This will mark all later phases as incomplete."}),(0,J1.jsx)(ni,{fullWidth:!0,multiline:!0,rows:3,size:"small",placeholder:"Reason for rewinding...",value:n,onChange:o=>i(o.target.value)})]}),(0,J1.jsxs)(cu,{children:[(0,J1.jsx)(qt,{onClick:r,children:"Cancel"}),(0,J1.jsx)(qt,{variant:"contained",color:"warning",disabled:n.trim().length===0,onClick:()=>t(n.trim()),children:"Rewind"})]})]})}var TR=L(z(),1);function agr({itemId:e,phaseNumber:t,phaseName:r,onRewound:n}){let i=as(),o=yr(),[a,s]=(0,ogr.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)(igr,{phaseName:r,onConfirm:async l=>{await Tet(e,t,l,i,o),await n()},onCancel:()=>s(!1)})]})}var pB=L(z(),1),EWn={done:{label:"Done",color:"success"},current:{label:"In Progress",color:"info"},upcoming:{label:"Upcoming",color:"default"}},RWn={alignItems:"center",mb:1},AWn={fontWeight:500},PWn={fontWeight:500,fontSize:"0.75rem"};function sgr({phase:e,index:t,status:r,itemId:n,onRewind:i}){let o=EWn[r],a=r==="done"&&n!==void 0&&i;return(0,pB.jsxs)(Rt,{direction:"row",spacing:1,sx:RWn,children:[(0,pB.jsxs)(Fe,{sx:AWn,children:["Phase ",t+1,": ",e.name]}),(0,pB.jsx)(bn,{label:o.label,size:"small",color:o.color,sx:PWn}),a&&(0,pB.jsx)(agr,{itemId:n,phaseNumber:t+1,phaseName:e.name,onRewound:i})]})}var gY=L(z(),1),LWn={color:"text.secondary",fontSize:"0.75rem",letterSpacing:"0.08em",display:"block"},MWn={color:"text.secondary",fontSize:"0.75rem",fontFamily:"monospace",display:"block"};function lgr({sessions:e}){return(0,gY.jsxs)(ue,{sx:{mb:1},children:[(0,gY.jsx)(Fe,{variant:"overline",sx:LWn,children:"Sessions"}),e.map(t=>(0,gY.jsx)(Fe,{sx:MWn,children:`${t.hostname} / ${t.osUser} / ${t.claudeSessionId}`},t.claudeSessionId))]})}var ugr=L(z(),1),IWn={color:"text.secondary",fontSize:"0.75rem",mb:1,display:"block"};function cgr({usage:e}){return(0,ugr.jsx)(hB,{total:e,sx:IWn})}var mB=L(z(),1);function fgr({tasks:e,marker:t}){return(0,mB.jsx)(R0,{disablePadding:!0,sx:{ml:.5},children:e.map(r=>(0,mB.jsxs)(tT,{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:EP(r.task)})]},r.task))})}var L_=L(z(),1);function dgr({phase:e,index:t,status:r,itemId:n,usage:i,sessions:o,onRewind:a}){let s=e.manualChecks??[],l=Gge(t);return(0,L_.jsxs)(an,{variant:"outlined",id:l.id,sx:{...tgr(r),...l.sx},children:[(0,L_.jsx)(sgr,{phase:e,index:t,status:r,itemId:n,onRewind:a}),i&&(0,L_.jsx)(cgr,{usage:i}),(0,L_.jsx)(fgr,{tasks:e.tasks,marker:rgr[r]}),s.length>0&&(0,L_.jsx)(egr,{checks:s}),o&&o.length>0&&(0,L_.jsx)(lgr,{sessions:o})]})}var yY={name:"Review",tasks:[]};function jge(e){return e.at(-1)?.name===yY.name?e.length-1:e.length}function Yge(e,t){if(t===void 0)return"upcoming";let r=e+1;return r<t?"done":r===t?"current":"upcoming"}function hgr(e=[]){return new Map(e.map(t=>[t.phaseIdx,t]))}function pgr(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 F$e=L(z(),1);function mgr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){let a=hgr(n),s=pgr(i),l=jge(e),u=(i??[]).filter(d=>d.phaseIdx>=l),f=l===e.length&&u.length>0?[...e,yY]:e;return(0,F$e.jsx)(Rt,{spacing:1.5,children:f.map((d,h)=>(0,F$e.jsx)(dgr,{phase:d,index:h,status:Yge(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),DWn={alignItems:"baseline",justifyContent:"space-between",mb:1},NWn={color:"text.secondary",display:"block",letterSpacing:"0.08em"};function ggr({phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o}){return e.length===0?null:(0,SR.jsxs)(ue,{...$m("plan"),children:[(0,SR.jsxs)(Rt,{direction:"row",sx:DWn,children:[(0,SR.jsx)(Fe,{variant:"overline",sx:NWn,children:"Plan"}),n&&n.length>0&&(0,SR.jsx)(Qmr,{usage:n})]}),(0,SR.jsx)(mgr,{phases:e,currentPhase:t,itemId:r,usage:n,sessions:i,onRewind:o})]})}var $$e=L(z(),1),Kge=e=>{let{value:t,options:r,colors:n,onChange:i}=e;return(0,$$e.jsx)(iT,{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,$$e.jsx)(un,{value:o,children:o},o))})};var vgr=L(z(),1),OWn={todo:{bg:"action.selected",text:"text.primary"},"in-progress":{bg:"warning.main",text:"warning.contrastText"},done:{bg:"success.main",text:"success.contrastText"}},BWn=["todo","in-progress","done"];function ygr({current:e,onStatusChange:t}){return(0,vgr.jsx)(Kge,{value:e,options:BWn,colors:OWn,onChange:t})}var M_=L(z(),1);function bgr({subtask:e,onStatusChange:t}){let r=e.status==="done";return(0,M_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start",justifyContent:"space-between"},children:[(0,M_.jsxs)(ue,{sx:{flex:1},children:[(0,M_.jsx)(Fe,{variant:"body2",sx:{textDecoration:r?"line-through":"none",color:r?"text.disabled":"text.primary"},children:e.title}),e.description&&(0,M_.jsx)(ue,{sx:{mt:.5,fontSize:"0.8125rem",color:r?"text.disabled":"text.secondary"},children:(0,M_.jsx)(kw,{content:e.description})})]}),(0,M_.jsx)(ygr,{current:e.status,onStatusChange:t})]})}var CR=L(z(),1),FWn={color:"text.secondary",mb:1,display:"block",letterSpacing:"0.08em"};function xgr({subtasks:e,onStatusChange:t}){if(e.length===0)return null;let r=e.filter(n=>n.status!=="done").length;return(0,CR.jsxs)(ue,{...$m("subtasks"),children:[(0,CR.jsx)(Fe,{variant:"overline",sx:FWn,children:"Sub-tasks"}),(0,CR.jsx)(Rt,{spacing:1,children:e.map((n,i)=>(0,CR.jsx)(bgr,{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 M2=L(z(),1);function Tgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,M2.jsxs)(M2.Fragment,{children:[e.subtasks&&n&&(0,M2.jsx)(xgr,{subtasks:e.subtasks,onStatusChange:n}),e.plan&&(0,M2.jsx)(ggr,{phases:e.plan,currentPhase:e.currentPhase,itemId:e.id,usage:e.phaseUsage,sessions:e.phaseSessions,onRewind:t}),(0,M2.jsx)(Wmr,{gitRefs:e.gitRefs??[],conversations:e.conversations}),e.comments&&(0,M2.jsx)(Xmr,{comments:e.comments,itemId:e.id,onCommentDeleted:r})]})}var gB=L(z(),1);function Sgr({item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n}){return(0,gB.jsxs)(ue,{sx:{pt:2,flex:1,minWidth:0},children:[(0,gB.jsx)(Imr,{description:e.description}),(0,gB.jsx)(Mmr,{criteria:e.acceptanceCriteria}),(0,gB.jsx)(Tgr,{item:e,onRewind:t,onCommentDeleted:r,onSubtaskStatusChange:n})]})}var Cgr="item-detail";var vY={wideQuery:`@container ${Cgr} (min-width: 760px)`,containerSx:{containerType:"inline-size",containerName:Cgr},columnsSx:{display:"flex",columnGap:3}};function $Wn(e){let t=e.plan??[];if(t.length===0)return[];let r=jge(t),i=r===t.length&&(e.phaseSessions??[]).some(o=>o.phaseIdx>=r)?[...t,yY]:t;return[{id:R_.plan,label:"Phases"},...i.map((o,a)=>({id:Gge(a).id,label:`${a+1}`,title:o.name,status:Yge(a,e.currentPhase),nested:!0}))]}function wgr(e){let t=[];return e.description&&t.push({id:R_.description,label:"Description"}),e.acceptanceCriteria.length>0&&t.push({id:R_.acceptanceCriteria,label:"Acceptance Criteria"}),(e.subtasks?.length??0)>0&&t.push({id:R_.subtasks,label:"Sub-tasks"}),t.push(...$Wn(e)),(e.gitRefs?.length??0)+(e.conversations?.length??0)>0&&t.push({id:R_.activity,label:"Activity"}),(e.comments?.length??0)>0&&t.push({id:R_.comments,label:"Comments"}),t}var _gr="1.3125rem",kgr={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={...kgr,display:"block",flexShrink:0,maxWidth:"100%",px:1,py:.5,border:0,bgcolor:"transparent",fontSize:_gr,lineHeight:1.2,letterSpacing:"0.02em",textAlign:"left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"text.secondary"},HWn={...kgr,display:"flex",alignItems:"center",justifyContent:"center",fontSize:_gr,width:"2em",height:"2em",flexShrink:0,lineHeight:1,borderRadius:"50%",border:1,color:"text.primary"},UWn={borderColor:"text.primary",borderWidth:3},WWn={color:"text.primary",fontWeight:700,"&::after":{bgcolor:"action.selected"}};function Egr(e,t){let r=e.status&&qge[e.status];return r?{...HWn,ml:1.5,bgcolor:r.bgcolor,borderColor:r.borderColor,borderWidth:r.ring?3:1,...t&&UWn}:{...zWn,...t&&WWn}}var Agr=L(z(),1);function Rgr({section:e,active:t,onSelect:r}){return(0,Agr.jsx)(Dn,{sx:Egr(e,t),onClick:()=>r(e.id),title:e.title??e.label,"aria-current":t?"true":void 0,children:e.label})}function Pgr(e,t=pY){return Yhe(e,t)}var z$e=L(z(),1),VWn=48,GWn=260,qWn={display:"none",[vY.wideQuery]:{display:"flex"},position:"sticky",top:Vge,alignSelf:"flex-start",width:GWn,flexShrink:0,maxHeight:`calc(100vh - ${VWn}px - ${Vge})`,alignItems:"flex-start",overflowY:"auto",overflowX:"hidden",py:2};function jWn(e){document.getElementById(e)?.scrollIntoView({behavior:"smooth",block:"start"})}function Lgr({item:e,headerHeight:t}){let r=wgr(e),n=Pgr(r.map(i=>i.id),t);return r.length===0?null:(0,z$e.jsx)(Rt,{component:"nav",spacing:1,sx:qWn,children:r.map(i=>(0,z$e.jsx)(Rgr,{section:i,active:i.id===n,onSelect:jWn},i.id))})}var Igr=L(z(),1);function Mgr({to:e}){let t=Xi();return(0,Igr.jsx)(qt,{variant:"text",size:"small",onClick:()=>t(e),sx:{mb:2,textTransform:"none"},children:"\u2190 Back"})}var Dgr=L(ge(),1);var wR=L(z(),1);function Ngr({itemId:e,onDeleted:t}){let r=as(),n=yr(),[i,o]=(0,Dgr.useState)(!1);return(0,wR.jsxs)(wR.Fragment,{children:[i&&(0,wR.jsx)(vo,{onConfirm:async()=>{await bet(e,r,n),await t()},onCancel:()=>o(!1)}),(0,wR.jsx)(qt,{variant:"contained",color:"error",size:"small",onClick:()=>o(!0),children:"Delete"})]})}var H$e=L(z(),1),YWn={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"}},KWn=["todo","in-progress","done","wontdo"];function Ogr({current:e,onStatusChange:t}){return t?(0,H$e.jsx)(Kge,{value:e,options:KWn,colors:YWn,onChange:t}):(0,H$e.jsx)(bn,{label:e,size:"small",color:pge[e],sx:{fontWeight:500,fontSize:"0.75rem"}})}var I2=L(z(),1),XWn={alignItems:"center",color:"text.disabled",fontSize:"0.875rem"},ZWn={fontWeight:500,fontSize:"0.75rem"},QWn={color:"text.secondary",fontSize:"0.75rem"};function Bgr({item:e,onStatusChange:t}){let r=hge[e.type];return(0,I2.jsxs)(Rt,{direction:"row",spacing:1,sx:XWn,children:[(0,I2.jsx)(Fe,{variant:"body2",color:"text.disabled",children:so(e.id)}),r&&(0,I2.jsx)(bn,{label:e.type,size:"small",color:r,sx:ZWn}),(0,I2.jsx)(Ogr,{current:e.status,onStatusChange:t}),(0,I2.jsx)(cP,{jiraKey:e.jiraKey}),(0,I2.jsx)(lP,{githubIssue:e.githubIssue,origin:e.origin}),e.usageTotal&&(0,I2.jsx)(hB,{total:e.usageTotal,sx:QWn})]})}var Fgr=L(z(),1),$gr=ft((0,Fgr.jsx)("path",{d:"M3 17v2h6v-2zM3 5v2h10V5zm10 16v-2h8v-2h-8v-2h-2v6zM7 9v2H3v2h4v2h2V9zm14 4v-2H11v2zm-6-4h2V7h4V5h-4V3h-2z"}),"Tune");var Xge=L(ge(),1);var zgr=L(ge(),1);function Hgr(e){let{launchAssist:t}=$l(),r=Xi(),n=as(),i=yr(),[o,a]=(0,zgr.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 a0=L(z(),1);function Ugr({itemId:e}){let{launched:t,launch:r}=Hgr(e),n=S_(),i=(0,Xge.useRef)(null),[o,a]=(0,Xge.useState)(!1),s=u=>u.stopPropagation(),l=wge(n);return(0,a0.jsxs)(a0.Fragment,{children:[(0,a0.jsxs)(Q2,{ref:i,variant:"outlined",size:"small",disabled:t,children:[(0,a0.jsx)(qt,{startIcon:(0,a0.jsx)($gr,{}),onClick:u=>{s(u),r([])},children:"Refine"}),l.length>0&&(0,a0.jsx)(qt,{size:"small","aria-label":"Refine with a different harness",onClick:u=>{s(u),a(!0)},children:(0,a0.jsx)(zp,{})})]}),(0,a0.jsx)(_ge,{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 Wgr(){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),JWn={justifyContent:"space-between",alignItems:"center",mb:2};function eVn(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 tVn(e){return t=>({position:"sticky",top:0,zIndex:1,bgcolor:"background.default",mx:-2,px:2,pb:2,borderBottom:1,borderColor:"divider",boxShadow:e?eVn(t):"none",transition:t.transitions.create("box-shadow")})}function Vgr({item:e,onDeleted:t,onStatusChange:r,ref:n}){let{sentinelRef:i,stuck:o}=Wgr();return(0,Of.jsxs)(Of.Fragment,{children:[(0,Of.jsx)(ue,{ref:i,sx:{height:0}}),(0,Of.jsxs)(ue,{ref:n,sx:tVn(o),children:[(0,Of.jsxs)(Rt,{direction:"row",sx:JWn,children:[(0,Of.jsx)(Mgr,{to:"/backlog"}),(0,Of.jsxs)(Rt,{direction:"row",spacing:1,children:[Cge(e)&&(0,Of.jsx)(zge,{itemId:e.id}),(0,Of.jsx)(Ugr,{itemId:e.id}),(0,Of.jsx)(Ngr,{itemId:e.id,onDeleted:t})]})]}),(0,Of.jsx)(Fe,{variant:"h5",component:"h2",children:e.name}),(0,Of.jsx)(Bgr,{item:e,onStatusChange:r})]})]})}var qgr=L(ge(),1);var Zge=L(ge(),1);function Ggr(e,t){let[r,n]=(0,Zge.useState)(t);return(0,Zge.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 jgr(){let e=(0,qgr.useRef)(null),t=Ggr(e,pY),r={[O$e]:`${t}px`};return{headerRef:e,headerHeight:t,style:r}}var I_=L(z(),1);function Ygr({item:e,onReload:t}){let r=Xi(),n=as(),i=yr(),{headerRef:o,headerHeight:a,style:s}=jgr();ny("ItemDetail");let l=async()=>{await t(),r("/backlog")},u=async d=>{await PJ(e.id,d,n,i),await t()},f=async(d,h)=>{await xet(e.id,d,h,n,i),await t()};return(0,I_.jsxs)(ue,{style:s,children:[(0,I_.jsx)(Vgr,{ref:o,item:e,onDeleted:l,onStatusChange:u}),(0,I_.jsx)(ue,{sx:vY.containerSx,children:(0,I_.jsxs)(ue,{sx:vY.columnsSx,children:[(0,I_.jsx)(Sgr,{item:e,onRewind:t,onCommentDeleted:t,onSubtaskStatusChange:f}),(0,I_.jsx)(Lgr,{item:e,headerHeight:a})]})})]})}var _R=L(z(),1),rVn={display:"flex",justifyContent:"center",py:6};function Kgr({onReload:e}){let[t]=Pc(),r=t.get("cwd")||void 0,n=t.get("node")||void 0,i=$n(),o=(0,Qge.useMemo)(()=>r?{...i,selectedCwd:r,selectedNode:n}:i,[i,r,n]);return ny("ItemRoute"),(0,_R.jsx)(xz.Provider,{value:o,children:(0,_R.jsx)(Yu.Provider,{value:o.selectedNode,children:(0,_R.jsx)(nVn,{onReload:e})})})}function nVn({onReload:e}){let{id:t}=h2e(),r=Number.NaN;try{r=gJ(t??"")}catch{r=Number.NaN}let{item:n,loading:i,reload:o}=Pmr(r),a=(0,Qge.useCallback)(async()=>{await Promise.all([o(),e()])},[o,e]);return i?(0,_R.jsx)(ue,{sx:rVn,children:(0,_R.jsx)(mo,{})}):n?(0,_R.jsx)(Ygr,{item:n,onReload:a}):null}var kR=L(z(),1);function Xgr({items:e,loading:t,error:r,socket:n,onReload:i}){return(0,kR.jsxs)(d5,{children:[(0,kR.jsx)(gs,{index:!0,element:(0,kR.jsx)(Amr,{items:e,loading:t,error:r,socket:n,onReload:i})}),(0,kR.jsx)(gs,{path:"items/:id",element:(0,kR.jsx)(Kgr,{onReload:i})})]})}var s0=L(ge(),1);var Zgr=new Map;function Qgr(e,t,r){return JSON.stringify([e??null,t,r??null])}var bY={get(e,t,r){return Zgr.get(Qgr(e,t,r))},set(e,t,r,n){Zgr.set(Qgr(e,t,n),r)}};function iVn(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 Jgr(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&&iVn(r.usageTotal,i.usageTotal)})}function e0r({setItems:e,setLoading:t,setError:r}){return{onLoaded:n=>{e(i=>Jgr(i,n)?i:n),t(!1),r(null)},onError:n=>{t(!1),r(n)}}}async function t0r(e,t,r,n){let i=await zT({cwd:e,node:n,signal:r,filter:t});return r.aborted||bY.set(e,t,i,n),i}function r0r(e,t,r,{onLoaded:n,onError:i},o){return(async()=>{try{let a=await t0r(e,t,r,o);r.aborted||n(a)}catch(a){r.aborted||i(a instanceof Error?a.message:"Failed to load.")}})()}var oVn=5e3;function n0r(e,t,r,n){let i=new AbortController,o=!1,a=()=>{o||(o=!0,r0r(e,t,i.signal,r,n).finally(()=>{o=!1}))};a();let s=setInterval(a,oVn);return()=>{i.abort(),clearInterval(s)}}function i0r(){let e=as(),t=yr(),[r]=rB(),n=bY.get(e,r,t),i=n??[],o=n===void 0,[a,s]=(0,s0.useState)(i),[l,u]=(0,s0.useState)(o),[f,d]=(0,s0.useState)(null),[h,p]=(0,s0.useState)(e),[m,g]=(0,s0.useState)(t),[y,v]=(0,s0.useState)(r);(e!==h||t!==m||r!==y)&&(p(e),g(t),v(r),s(i),u(o),d(null));let b=(0,s0.useCallback)(async()=>{let x=await zT({cwd:e,node:t,filter:r});s(x),bY.set(e,r,x,t),u(!1)},[e,t,r]);return(0,s0.useEffect)(()=>n0r(e,r,e0r({setItems:s,setLoading:u,setError:d}),t),[e,t,r]),{items:a,loading:l,error:f,reload:b}}var xY=L(z(),1);function o0r({socket:e}){let{items:t,loading:r,error:n,reload:i}=i0r();return lte(!r),(0,xY.jsx)(E$e.Provider,{value:e.sessions,children:(0,xY.jsx)(d5,{children:(0,xY.jsx)(gs,{path:"/*",element:(0,xY.jsx)(Xgr,{items:t,loading:r,error:n,socket:e,onReload:i})})})})}var U$e=L(z(),1);function a0r({socket:e}){return(0,U$e.jsx)(IF,{maxWidth:"lg",sx:{py:3,px:2},children:(0,U$e.jsx)(o0r,{socket:e})})}var ki=L(z(),1);function s0r({socket:e}){return ny("AppRoutes"),(0,ki.jsxs)(ki.Fragment,{children:[(0,ki.jsx)(ior,{}),(0,ki.jsx)(d5,{children:(0,ki.jsxs)(gs,{element:(0,ki.jsx)(git,{socket:e}),children:[(0,ki.jsx)(gs,{path:"sessions",element:(0,ki.jsx)(zdr,{socket:e})}),(0,ki.jsx)(gs,{path:"backlog/*",element:(0,ki.jsx)(a0r,{socket:e})}),(0,ki.jsx)(gs,{path:"next",element:(0,ki.jsx)(yir,{sessions:e.sessions,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"news",element:(0,ki.jsx)(Pnr,{})}),(0,ki.jsx)(gs,{path:"releases",element:(0,ki.jsx)(eor,{})}),(0,ki.jsx)(gs,{path:"usage",element:(0,ki.jsx)(Tpr,{})}),(0,ki.jsx)(gs,{path:"backups",element:(0,ki.jsx)(wit,{})}),(0,ki.jsx)(gs,{path:"config",element:(0,ki.jsx)(vat,{})}),(0,ki.jsx)(gs,{path:"updates",element:(0,ki.jsx)(Mhr,{reconnecting:e.reconnecting,selectSession:e.selectSession})}),(0,ki.jsx)(gs,{path:"diff",element:(0,ki.jsx)(Krr,{socket:e})}),(0,ki.jsx)(gs,{path:"file",element:(0,ki.jsx)(_nr,{socket:e})}),(0,ki.jsx)(gs,{path:"*",element:(0,ki.jsx)(b2e,{to:"/sessions",replace:!0})})]})})]})}var n0e=L(ge(),1);var r0e=L(ge(),1);function l0r(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 D_=L(z(),1),aVn={display:"flex",gap:1,alignItems:"center",minWidth:0},sVn={display:"flex",gap:1,alignItems:"baseline",minWidth:0,overflow:"hidden"},lVn={fontFamily:"monospace",fontSize:13,whiteSpace:"nowrap"},cVn={fontFamily:"monospace",fontSize:11,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"};function uVn(e){let t=e.lastIndexOf("/");return t===-1?{dir:"",basename:e}:{dir:e.slice(0,t),basename:e.slice(t+1)}}function c0r({files:e,highlight:t,onHighlight:r,onSelect:n}){return(0,D_.jsx)(Tp,{dense:!0,sx:{py:0},children:e.map((i,o)=>{let{dir:a,basename:s}=uVn(i);return(0,D_.jsxs)(un,{selected:o===t,onMouseEnter:()=>r(o),onClick:()=>n(i),sx:aVn,children:[(0,D_.jsx)(QO,{path:i}),(0,D_.jsxs)(ue,{sx:sVn,children:[(0,D_.jsx)(Fe,{component:"span",sx:lVn,children:s}),(0,D_.jsx)(Fe,{component:"span",color:"text.secondary",sx:cVn,children:a})]})]},i)})})}var Jge=L(z(),1),fVn={maxHeight:420,overflowY:"auto"},dVn={px:2,py:2,fontSize:13};function u0r({message:e,files:t,highlight:r,onHighlight:n,onSelect:i}){return(0,Jge.jsx)(ue,{sx:fVn,children:e?(0,Jge.jsx)(Fe,{color:"text.secondary",sx:dVn,children:e}):(0,Jge.jsx)(c0r,{files:t,highlight:r,onHighlight:n,onSelect:i})})}var f0r=L(z(),1),hVn={mt:6,alignSelf:"flex-start"};function e0e({onClose:e,onEntered:t,centered:r=!1,children:n}){return(0,f0r.jsx)(Ps,{open:!0,onClose:e,maxWidth:"sm",fullWidth:!0,slotProps:{paper:{sx:r?void 0:hVn},transition:{onEntered:t}},children:n})}var t0e=L(ge(),1);var d0r={files:[],loading:!1,error:!1};function h0r(e,t){let[r,n]=(0,t0e.useState)(d0r),i=yr();return(0,t0e.useEffect)(()=>{if(!e){n(d0r);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 pVn(e,t,r){let n=new URLSearchParams({path:e});return t&&n.set("cwd",t),t&&r&&n.set("node",r),`/file?${n}`}function p0r({onClose:e}){let{worktreeNode:t}=$n();return(0,ER.jsx)(Yu.Provider,{value:t,children:(0,ER.jsx)(mVn,{onClose:e})})}function mVn({onClose:e}){let{worktreeCwd:t,worktreeNode:r}=$n(),[n,i]=(0,r0e.useState)(""),o=h0r(t,n),a=Xi(),s=(0,r0e.useRef)(null),l=p=>a(pVn(p,t,r)),{highlight:u,setHighlight:f,onKeyDown:d}=k_(o.files,n,l,e),h=p=>{l(p),e()};return(0,ER.jsxs)(e0e,{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)(u0r,{message:l0r(t,n,o),files:o.files,highlight:u,onHighlight:f,onSelect:h})]})}function m0r(e){Io(Yn("quickOpen").matches,e)}var y0r=L(z(),1);function g0r(){let[e,t]=(0,n0e.useState)(!1);return m0r((0,n0e.useCallback)(()=>t(!0),[])),e?(0,y0r.jsx)(p0r,{onClose:()=>t(!1)}):null}var i0e=L(z(),1);function v0r({notice:e,onClose:t,onView:r}){let n=e?.sessionId??null;return(0,i0e.jsx)(ol,{open:e!==null,autoHideDuration:6e3,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,i0e.jsx)(ri,{severity:"success",variant:"filled",onClose:t,action:n!==null?(0,i0e.jsx)(qt,{color:"inherit",size:"small",onClick:()=>r(n),children:"View"}):void 0,children:e?.message})})}var c0e=L(ge(),1);function b0r(e){let t=["claude"];return e.exposeCodexActions&&t.push("codex"),e.exposePiActions&&t.push("pi"),t}var M0r=L(ge(),1);var x0r=L(z(),1),T0r=ft((0,x0r.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 N_="0.784.1";var gVn={connected:"success.main",connecting:"warning.main",disconnected:"error.main","version-blocked":"error.main"};function S0r(e){return e?gVn[e]:"success.main"}function C0r(e){return e.split("-")[0].split(".").map(Number)}function w0r(e,t){if(!e||!t||e===t)return;let r=C0r(e),n=C0r(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 o0e=L(ge(),1),W$e=(0,o0e.createContext)(null);function a0e(){return(0,o0e.useContext)(W$e)}var RR=L(z(),1),yVn={height:16,fontSize:10},vVn={opacity:.6,fontSize:"0.85em"};function bVn(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 TY({nodes:e,name:t,showVersion:r=!1}){let n=a0e()??N_,i=e.links.find(a=>a.name===t),o=w0r(i?.peerVersion,n);return(0,RR.jsx)(lr,{title:bVn(e,t),placement:"right",children:(0,RR.jsxs)(ue,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.75},children:[(0,RR.jsx)(T0r,{sx:{fontSize:8,color:S0r(i?.state)}}),t,r&&i?.peerVersion&&(0,RR.jsxs)(ue,{component:"span",sx:vVn,children:["v",i.peerVersion]}),o&&(0,RR.jsx)(bn,{label:o,size:"small",color:o==="behind"?"warning":"info",sx:yVn})]})})}var AR=L(z(),1),xVn={opacity:.6},TVn={display:"inline-flex",alignItems:"center",gap:.5,px:.5,border:1,borderStyle:"dashed",borderRadius:1};function _0r({nodes:e,name:t,clone:r}){let n=(0,AR.jsx)(TY,{nodes:e,name:t});return r.kind==="cloned"?n:r.kind==="unavailable"?(0,AR.jsx)(ue,{component:"span",sx:xVn,children:n}):(0,AR.jsx)(lr,{title:oB(t,r.cloneTarget),children:(0,AR.jsxs)(ue,{component:"span",sx:TVn,children:[(0,AR.jsx)(iB,{sx:{fontSize:14}}),n]})})}var E0r=L(z(),1),SVn={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 k0r({value:e,label:t,checked:r,autoFocus:n,onSelect:i}){return(0,E0r.jsx)(Dn,{role:"radio","aria-checked":r,"data-value":e,tabIndex:r?0:-1,autoFocus:n&&r,onClick:i,sx:SVn,children:t})}var R0r={ArrowRight:1,ArrowLeft:-1};function CVn(e,t,r){if(e.key==="Tab"){let n=t+(e.shiftKey?-1:1);return n>=0&&n<r?n:void 0}return(t+R0r[e.key]+r)%r}function A0r(e,t,r,n){return i=>{if(i.key==="ArrowUp"||i.key==="ArrowDown"){if(!n)return;i.preventDefault(),n();return}if(i.key!=="Tab"&&!R0r[i.key]){lb(i);return}let o=CVn(i,e.indexOf(t),e.length);o!==void 0&&(i.preventDefault(),r(e[o]),i.currentTarget.querySelector(`[data-value="${e[o]}"]`)?.focus())}}var P0r=L(ge(),1);function vB(e){return e?.querySelector('[aria-checked="true"]')}function L0r(e,t){(0,P0r.useEffect)(()=>{let r=e.current;if(!r?.contains(document.activeElement))return;let n=vB(r);n&&n!==document.activeElement&&n.focus()},[e,t])}var V$e=L(z(),1),wVn={border:1,borderColor:"divider",borderRadius:1,height:40,p:"2px",flexShrink:0};function s0e({label:e,options:t,value:r,onChange:n,optionLabel:i=u=>u,groupRef:o,autoFocus:a,onTrack:s,onToggleRow:l}){return L0r(o,r),(0,V$e.jsx)(Rt,{ref:o,direction:"row",role:"radiogroup","aria-label":e,spacing:"2px",onFocus:s,onKeyDown:A0r(t,r,n,l),sx:wVn,children:t.map(u=>(0,V$e.jsx)(k0r,{value:u,label:i(u),checked:u===r,autoFocus:a,onSelect:()=>n(u)},u))})}var G$e=L(z(),1);function I0r({value:e,onChange:t,cloneState:r}){let{nodes:n,names:i,visible:o}=Nu(),a=(0,M0r.useRef)(null);return!o||!n||!e?null:(0,G$e.jsx)(s0e,{label:"Machine",options:i,value:e,onChange:t,optionLabel:s=>(0,G$e.jsx)(_0r,{nodes:n,name:s,clone:r(s)}),groupRef:a,autoFocus:!1,onTrack:()=>{}})}var N0r=L(z(),1);function D0r({value:e,onChange:t,placeholder:r,inputRef:n,autoFocus:i,onTrack:o}){return(0,N0r.jsx)(ni,{value:e,onChange:a=>t(a.target.value),onKeyDown:lb,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 $0r=L(ge(),1);var D2={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:$ee,submitLabel:"Start session"},design:{placeholder:"Describe the design task...",submitLabel:"Start design"}},O0r=Object.keys(D2);var q$e=L(z(),1);function B0r({anchor:e,harness:t,harnesses:r,onPick:n,onClose:i}){return(0,q$e.jsx)(Dl,{open:e!==null,anchorEl:e,onClose:i,slotProps:{list:{dense:!0,"aria-label":"Harness"}},children:r.map(o=>(0,q$e.jsx)(un,{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 F0r(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)(zp,{sx:{fontSize:18,mr:-.75}})]}):t}var LR=L(z(),1);function z0r({draft:e,harness:t,harnesses:r,focus:n}){let[i,o]=(0,$0r.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)(s0e,{label:"Mode",options:O0r,value:e.mode,onChange:l,optionLabel:F0r(r.length>1?t:void 0),groupRef:n.modeRef,autoFocus:n.autoFocus==="mode",onTrack:n.trackMode,onToggleRow:a?s:void 0}),(0,LR.jsx)(B0r,{anchor:i,harness:t,harnesses:r,onPick:e.setHarness,onClose:()=>o(null)})]})}var Z0r=L(ge(),1);var j$e=L(z(),1),_Vn={zIndex:e=>e.zIndex.modal+1};function H0r({open:e,anchor:t,children:r}){return(0,j$e.jsx)(OA,{open:e,anchorEl:t,placement:"bottom-start",sx:_Vn,children:(0,j$e.jsx)(an,{sx:{maxHeight:240,overflowY:"auto",width:t?.clientWidth},onMouseDown:n=>n.preventDefault(),children:r})})}function U0r(e){return{htmlInput:{role:"combobox","aria-label":"Repo","aria-expanded":e},input:{sx:{fontSize:13,height:40}}}}var W0r=L(cF(),1);function V0r({open:e,highlighted:t,accept:r,close:n,navigate:i,openList:o}){return a=>{if(!e){if(a.key==="ArrowDown"){a.preventDefault(),o();return}lb(a);return}if(a.key!=="Escape"){if(a.key==="Enter"){if(a.preventDefault(),t===void 0)return;(0,W0r.flushSync)(()=>{r(t),n()}),lb(a);return}if(a.key!=="Tab"){i(a);return}t!==void 0&&r(t),n()}}}function G0r(e,t){let r=t.trim().toLowerCase();return r?e.filter(n=>K1(n).toLowerCase().includes(r)):e}var Y$e=L(ge(),1);function q0r(){let[e,t]=(0,Y$e.useState)(!1),[r,n]=(0,Y$e.useState)("");return{open:e,query:r,show:()=>t(!0),filterBy:i=>{n(i),t(!0)},close:()=>{t(!1),n("")}}}var Y0r=L(ge(),1);var j0r=e=>e?K1(e):"";function K0r(e){let[t,r]=(0,Y0r.useState)(()=>j0r(e));return{text:t,setText:r,showRepo:n=>r(j0r(n))}}function X0r(e,t,r){let n=q0r(),i=K0r(t),o=G0r(e,n.query),a=f=>{r(f),i.showRepo(f)},s=k_(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:V0r({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 Q0r({repos:e,value:t,onChange:r,inputRef:n,autoFocus:i,onTrack:o}){let a=X0r(e,t,r),s=(0,Z0r.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:U0r(a.open)}),(0,bB.jsx)(H0r,{open:a.open,anchor:s.current,children:(0,bB.jsx)(Oge,{repos:a.filtered,selected:t,highlight:a.highlight,onHighlight:a.setHighlight,onSelect:a.pick})})]})}var O_=L(z(),1);function J0r({cloneState:e,...t}){let{draft:r,focus:n}=t,{repos:i}=$n();return(0,O_.jsxs)(Rt,{spacing:1,sx:{p:1},children:[(0,O_.jsx)(D0r,{value:r.prompt,onChange:r.setPrompt,placeholder:D2[r.mode].placeholder,inputRef:n.promptRef,autoFocus:n.autoFocus==="prompt",onTrack:n.trackPrompt}),(0,O_.jsxs)(Rt,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[(0,O_.jsx)(Q0r,{repos:i,value:r.cwd,onChange:r.setCwd,inputRef:n.repoRef,autoFocus:n.autoFocus==="repo",onTrack:n.trackRepo}),(0,O_.jsx)(z0r,{...t})]}),(0,O_.jsx)(I0r,{value:r.node,onChange:r.setNode,cloneState:e})]})}var xB=L(z(),1),kVn=["Enter start","Shift+Enter newline","Esc close"],EVn={alignItems:"center",px:1.5,py:1,borderTop:1,borderColor:"divider",bgcolor:"action.hover"};function eyr({submitLabel:e,disabled:t=!1}){return(0,xB.jsxs)(Rt,{direction:"row",spacing:1.5,sx:EVn,children:[(0,xB.jsx)(Rt,{direction:"row",spacing:1.5,sx:{mr:"auto"},children:kVn.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 tyr({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}]:[];unt(D2[e].sessionMode,n,(u,f)=>o.onCreateAssist(u,f,...l),()=>{},r)}function ryr(e,t,r,n){return r.kind==="blocked"?!1:r.kind==="clone"?(Rge(r.prompt,n.onCreateAssist),!0):(tyr({mode:e.mode,harness:t,prompt:e.prompt,cwd:r.cwd,node:e.node},n),e.clear(),!0)}var MR=L(ge(),1);function nyr(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 RVn(e,t,r){return e?r.kind==="cloned"?{kind:"launch",cwd:r.cwd}:r.kind==="clonable"?{kind:"clone",prompt:Fge(r,t)}:{kind:"blocked"}:{kind:"launch",cwd:e}}function iyr(e,t){let{names:r,visible:n}=Nu(),i=Ige(t,n?r:[void 0]);return{cloneState:i,target:RVn(t,e,i(e))}}var TB=L(z(),1);function oyr({draft:e,launchers:t,onClose:r}){let n=nyr(e.focus,e.setFocus),i=b0r(S_()),o=i.includes(e.harness)?e.harness:"claude",{target:a,cloneState:s}=iyr(e.node,e.cwd),l=u=>{u.preventDefault(),ryr(e,o,a,t)&&r()};return(0,TB.jsx)(e0e,{onClose:r,onEntered:n.restore,centered:!0,children:(0,TB.jsxs)("form",{onSubmit:l,children:[(0,TB.jsx)(J0r,{draft:e,harness:o,harnesses:i,focus:n,cloneState:s}),(0,TB.jsx)(eyr,{submitLabel:a.kind==="clone"?"Clone":D2[e.mode].submitLabel,disabled:a.kind==="blocked"})]})})}var l0e=L(ge(),1);function ayr(e){let[t,r]=(0,l0e.useState)(null);return(0,l0e.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(D2,s?.mode)&&(i=s.mode)}catch{}n||r(i)})(),()=>{n=!0}},[e]),t}function syr(e,{visible:t,names:r,selected:n}){if(t)return e&&r.includes(e)?e:n}var N2=L(ge(),1),lyr={field:"prompt",selectionStart:0,selectionEnd:0};function cyr(){let[e,t]=(0,N2.useState)(""),[r,n]=(0,N2.useState)(),[i,o]=(0,N2.useState)(),[a,s]=(0,N2.useState)("claude"),[l,u]=(0,N2.useState)(),[f,d]=(0,N2.useState)(lyr),h=(0,N2.useCallback)(()=>{t(""),n(void 0),o(void 0),u(void 0),d(lyr)},[]);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 uyr(e=ayr){let{selectedCwd:t}=$n(),r=Nu(),n=cyr(),i=n.cwd??t,o=e(i);return o?{...n,cwd:i,mode:n.mode??o,node:syr(n.node,r)}:null}function fyr(e){Io(Yn("newSession").matches,e)}var dyr=L(ge(),1);function hyr(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,dyr.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 myr=L(z(),1);function pyr({launchers:e}){let[t,r]=(0,c0e.useState)(!1),n=uyr(),i=(0,c0e.useCallback)(()=>r(!0),[]);return fyr(i),hyr(n,i),!t||!n?null:(0,myr.jsx)(oyr,{draft:n,launchers:e,onClose:()=>r(!1)})}var u0e=L(z(),1);function gyr({reconnecting:e}){return(0,u0e.jsx)(ol,{open:e,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,u0e.jsx)(ri,{severity:"info",variant:"filled",icon:(0,u0e.jsx)(mo,{size:16,color:"inherit"}),children:"Reconnecting\u2026"})})}var ev=L(z(),1);function yyr({socket:e,onViewLaunchedSession:t}){return(0,ev.jsxs)(ev.Fragment,{children:[(0,ev.jsx)(g0r,{}),(0,ev.jsx)(pyr,{launchers:{onCreate:e.createSession,onCreateDesign:e.createDesignSession,onCreateHarness:e.createHarnessSession,onCreateAssist:e.createAssistSession}}),(0,ev.jsx)(gyr,{reconnecting:e.reconnecting}),(0,ev.jsx)(vu,{error:e.error,onClose:e.clearError}),(0,ev.jsx)(v0r,{notice:e.success,onClose:e.clearSuccess,onView:t})]})}var l0=L(ge(),1);var AVn=6e4;function vyr(e){let t=e.nodes?.local,r=e.names.join(`
|
|
3977
3977
|
`),[n,i]=(0,l0.useState)([]),[o,a]=(0,l0.useState)(!0),s=(0,l0.useRef)(0),l=(0,l0.useCallback)(()=>{let u=r?r.split(`
|
|
3978
3978
|
`):[];if(u.length===0)return;let f=++s.current;Promise.all(u.map(d=>sge(d,d===t))).then(d=>{f===s.current&&(i(d),a(!1))})},[r,t]);return(0,l0.useEffect)(()=>{l();let u=setInterval(l,AVn);return()=>clearInterval(u)},[l]),(0,l0.useMemo)(()=>({entries:n,loading:o,refresh:l}),[n,o,l])}var B_=L(z(),1);function byr({shell:e,children:t}){let{socket:r,selection:n,launch:i,topBar:o,sidebarCollapse:a}=e,s=vyr(r.nodeSelection);return(0,B_.jsx)(m$e.Provider,{value:s,children:(0,B_.jsx)($2e.Provider,{value:o,children:(0,B_.jsx)(ETe.Provider,{value:a,children:(0,B_.jsx)(xz.Provider,{value:n,children:(0,B_.jsx)(M$e.Provider,{value:r.nodeSelection,children:(0,B_.jsx)(Yu.Provider,{value:n.selectedNode,children:(0,B_.jsx)(rTe.Provider,{value:i,children:t})})})})})})})}var xyr=L(z(),1),Tyr=ft((0,xyr.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 Syr=L(ge(),1);var c0=L(z(),1),PVn={ml:1,textTransform:"none",fontSize:12};function Cyr(){let{nodes:e,names:t,visible:r,selected:n,select:i}=Nu(),[o,a]=(0,Syr.useState)(null);return!r||!e||!n?null:(0,c0.jsxs)(c0.Fragment,{children:[(0,c0.jsx)(qt,{size:"small",color:"inherit",startIcon:(0,c0.jsx)(Tyr,{fontSize:"small"}),"aria-label":"Machine","aria-haspopup":"menu",onClick:s=>a(s.currentTarget),sx:PVn,children:(0,c0.jsx)(TY,{nodes:e,name:n})}),(0,c0.jsx)(Dl,{anchorEl:o,open:!!o,onClose:()=>a(null),children:t.map(s=>(0,c0.jsx)(un,{selected:s===n,onClick:()=>{i(s),a(null)},sx:{fontSize:13},children:(0,c0.jsx)(TY,{nodes:e,name:s,showVersion:!0})},s))})]})}var SY=L(ge(),1);function wyr(e,t){return[...e[0].slice(0,-1),String(t+1)]}var f0e=L(z(),1);function _yr({index:e,label:t,...r}){let{chords:n}=Yn("navTab");return(0,f0e.jsx)(lr,{describeChild:!0,title:(0,f0e.jsx)(Jf,{label:t,chords:[wyr(n,e)]}),children:(0,f0e.jsx)(_v,{label:t,...r})})}var K$e=L(ge(),1);function kyr(e,t){let{bound:r}=Yn("navTab"),n=e.length,i=(0,K$e.useCallback)(a=>(Ez(a,r)??n)<n,[r,n]),o=(0,K$e.useCallback)(a=>{let s=e[Ez(a,r)??-1];s&&t(s)},[e,t,r]);Io(i,o)}var d0e=L(ge(),1);function Eyr(){let[e,t]=(0,d0e.useState)(!1);return(0,d0e.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 h0e=L(ge(),1);async function LVn(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 Ryr(e){let[t,r]=(0,h0e.useState)(null),n=yr(),i=`${n??""}\0${e}`;return(0,h0e.useEffect)(()=>{if(!e)return;let o=!1;return LVn(e,n).catch(()=>{}).then(a=>{o||r({key:i,configured:a})}),()=>{o=!0}},[e,n,i]),t?.key===i?t.configured:void 0}var Ayr=L(ge(),1);function Pyr(e){let{pathname:t}=ua(),r=Xi(),n=t==="/releases"||t.startsWith("/releases/");(0,Ayr.useEffect)(()=>{e===!1&&n&&r("/sessions",{replace:!0})},[e,n,r])}var MVn={path:"/sessions",label:"Sessions"},IVn={path:"/backlog",label:"Backlog"},DVn={path:"/next",label:"Next"},NVn={path:"/releases",label:"Releases"},OVn={path:"/news",label:"News"};function Lyr(e,t){return[MVn,IVn,DVn,...e?[NVn]:[],...t?[OVn]:[]]}var X$e=L(z(),1);function Myr({cwd:e}){let t=ua(),r=Xi(),n=Ryr(e),i=Eyr();Pyr(n);let o=n===!0,a=(0,SY.useMemo)(()=>Lyr(o,i),[o,i]),s=(0,SY.useMemo)(()=>a.map(f=>f.path),[a]),l=a.findIndex(f=>t.pathname.startsWith(f.path)),u=(0,SY.useCallback)(f=>{t.pathname!==f&&r(f)},[t.pathname,r]);return kyr(s,u),(0,X$e.jsx)($k,{value:l===-1?!1:l,textColor:"inherit",indicatorColor:"secondary",children:a.map((f,d)=>(0,X$e.jsx)(_yr,{index:d,label:f.label,onClick:()=>u(f.path)},f.path))})}var Iyr=L(z(),1),Dyr=ft((0,Iyr.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 CY=L(z(),1),BVn={color:"success.light"};function Nyr(){let[,e]=Pc(),{label:t,chords:r}=Yn("newSession");return(0,CY.jsx)(lr,{title:(0,CY.jsx)(Jf,{label:t,chords:r}),children:(0,CY.jsx)(sr,{size:"small",sx:BVn,"aria-label":"New session",onClick:()=>e(i=>(i.set("new",""),i),{replace:!0}),children:(0,CY.jsx)(Dyr,{})})})}var m0e=L(ge(),1);var p0e=L(z(),1),FVn={color:"inherit"};function Oyr({cwd:e}){let[t,r]=(0,m0e.useState)(null),n=yr();return(0,m0e.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,p0e.jsx)(lr,{title:"Open in GitHub",children:(0,p0e.jsx)(sr,{sx:FVn,onClick:()=>window.open(t,"_blank"),children:(0,p0e.jsx)(oP,{})})}):null}var $yr=L(ge(),1);var Fyr=L(ge(),1);var g0e=L(z(),1);function Byr({window:e,windowSeconds:t,fallbackLabel:r,now:n}){let i=e?.used_percentage;if(i==null)return null;let o=v_(i,e?.resets_at,t,n),a=e?.resets_at!=null?mge(e.resets_at,n):r;return(0,g0e.jsxs)(ue,{component:"span",children:[(0,g0e.jsxs)(ue,{component:"span",sx:{color:b_(o)},children:[Math.round(i),"%"]})," ",(0,g0e.jsxs)(ue,{component:"span",sx:{color:"text.secondary"},children:["(",a,")"]})]})}var F_=L(z(),1);function y0e({rateLimits:e}){let t=x_(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,F_.jsx)(F_.Fragment,{children:r.map((n,i)=>(0,F_.jsxs)(Fyr.Fragment,{children:[i>0?(0,F_.jsx)(ue,{component:"span",sx:{color:"text.secondary",mr:.5},children:","}):null,(0,F_.jsx)(Byr,{window:n.window,windowSeconds:n.windowSeconds,fallbackLabel:n.fallbackLabel,now:t})]},n.fallbackLabel))})}var $_=L(z(),1);function zyr({groups:e}){return(0,$_.jsx)($_.Fragment,{children:e.map((t,r)=>(0,$_.jsxs)($yr.Fragment,{children:[(0,$_.jsx)(ue,{component:"span",sx:{color:"text.secondary",ml:r>0?1:0,mr:.5},children:gu(t.harness)}),(0,$_.jsx)(y0e,{rateLimits:t.rateLimits})]},t.harness))})}function $Vn(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 HVn(e,t,r,n){if(e>=t)return;let i=e/t;return Math.round(r-n*(1-i))}function Wyr(e,t,r,n){if(t==null)return{kind:"unprojectable"};let i=w$e(t,r,n);if(i==null)return{kind:"unprojectable"};let o=v_(e,t,r,n),a=$Vn(o),s=zVn(o);return{kind:"projected",recovery:a&&{level:a.level,pct:a.boundary*i,at:HVn(e,a.boundary,t,r)},worse:s&&{level:s.level,pct:s.boundary*i}}}function Vyr(e,t){return e.at==null?"not before reset":`${e.level==="ok"?"green":"under"} in ${mge(e.at,t)}`}var u0=L(z(),1);function Z$e({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,u0.jsx)(ue,{component:"span",sx:n});let i=(0,u0.jsx)(ue,{component:"span",sx:{opacity:.6},children:r?"\u2190":"\u2192"}),o=(0,u0.jsxs)(ue,{component:"span",sx:{color:b_(t.level)},children:[Math.round(t.pct),"%"]});return(0,u0.jsx)(ue,{component:"span",sx:n,children:r?(0,u0.jsxs)(u0.Fragment,{children:[o,i]}):(0,u0.jsxs)(u0.Fragment,{children:[i,o]})})}var z_=L(z(),1);function Gyr({label:e,pct:t,resetsAt:r,windowSeconds:n,now:i}){let o=v_(t,r,n,i),a=Wyr(t,r,n,i),s=a.kind==="projected"?a:void 0;return(0,z_.jsxs)(ue,{sx:{display:"flex",alignItems:"baseline",gap:.75},children:[(0,z_.jsx)(ue,{component:"span",sx:{minWidth:"2ch"},children:e}),(0,z_.jsx)(Z$e,{direction:"back",threshold:s?.recovery}),(0,z_.jsxs)(ue,{component:"span",sx:{minWidth:"4ch",textAlign:"right",color:b_(o)},children:[Math.round(t),"%"]}),(0,z_.jsx)(Z$e,{direction:"forward",threshold:s?.worse}),(0,z_.jsx)(ue,{component:"span",sx:{opacity:.6},children:s?s.recovery&&Vyr(s.recovery,i):"no projection yet"})]})}function qyr(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 jyr=L(z(),1);function v0e({rateLimits:e,now:t}){return qyr(e).map(r=>(0,jyr.jsx)(Gyr,{label:r.label,pct:r.pct,resetsAt:r.resetsAt,windowSeconds:r.windowSeconds,now:t},r.label))}var IR=L(z(),1);function Yyr({groups:e}){let t=x_(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)(v0e,{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 Kyr(e){return e?.five_hour?.used_percentage!=null||e?.seven_day?.used_percentage!=null}function Xyr(e,t){let r=[];Kyr(e)&&r.push({harness:"claude",rateLimits:e});for(let[n,i]of Object.entries(t))Kyr(i)&&r.push({harness:n,rateLimits:i});return r}var wY=L(z(),1),Q$e="Claude account usage (5h / 7d windows) \u2014 view history";function Zyr({rateLimits:e}){let t=x_(3e4);return(0,wY.jsxs)(ue,{sx:{fontFamily:"monospace",fontSize:12},children:[(0,wY.jsx)(v0e,{rateLimits:e,now:t}),(0,wY.jsx)(ue,{sx:{mt:.5,opacity:.6},children:Q$e})]})}var DR=L(z(),1),UVn={display:"flex",alignItems:"center",ml:2,fontFamily:"monospace",fontSize:13},WVn={};function Qyr({rateLimits:e,harnessRateLimits:t=WVn}){let r=Xyr(e,t),n=r.every(s=>s.harness==="claude"),i=e,o=Q$e,a="Usage";return r.length>0&&n?(o=(0,DR.jsx)(Zyr,{rateLimits:i}),a=(0,DR.jsx)(y0e,{rateLimits:i})):r.length>0&&(o=(0,DR.jsx)(Yyr,{groups:r}),a=(0,DR.jsx)(zyr,{groups:r})),(0,DR.jsx)(lr,{title:o,children:(0,DR.jsx)(xn,{component:ys,to:"/usage",underline:"hover",color:"inherit",sx:UVn,children:a})})}var f0=L(z(),1),VVn={color:"inherit",mr:1.5};function Jyr({reconnecting:e}){let{pending:t,error:r,clearError:n,restart:i}=y_("webserver",e);return(0,f0.jsxs)(f0.Fragment,{children:[(0,f0.jsx)(lr,{title:"Restart web server",children:(0,f0.jsx)("span",{children:(0,f0.jsx)(sr,{sx:VVn,disabled:t,onClick:i,children:t?(0,f0.jsx)(mo,{size:24}):(0,f0.jsx)(oge,{})})})}),(0,f0.jsx)(vu,{error:r,onClose:n})]})}var r1r=L(ge(),1);var e1r=L(ge(),1);function t1r(e){let t=Oi().palette.primary.main;Io(Yn("focusRepoPicker").matches,(0,e1r.useCallback)(()=>Xu({locate:()=>e.current?.querySelector("button")??null,focus:r=>r.focus()},t),[e,t]))}var _Y=L(z(),1),GVn={width:240,ml:2};function n1r({repos:e,selected:t,onSelect:r}){let n=(0,r1r.useRef)(null);t1r(n);let{chords:i}=Yn("focusRepoPicker");return(0,_Y.jsx)(ue,{ref:n,sx:GVn,children:(0,_Y.jsx)(Hee,{label:t?K1(t):"Select repo...",tooltip:(0,_Y.jsx)(Jf,{label:"Repo",chords:i}),children:o=>(0,_Y.jsx)(imr,{repos:e,selected:t,onSelect:r,close:o})})})}var h1r=L(ge(),1);var kY=L(ge(),1);function b0e(e){let[t,r]=(0,kY.useState)([]),[n,i]=(0,kY.useState)(!0),o=yr();return(0,kY.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 J$e=L(z(),1);function eze({text:e}){return(0,J$e.jsx)(ue,{sx:{p:1.5},children:(0,J$e.jsx)(Fe,{sx:{fontSize:13,color:"text.secondary"},children:e})})}var SB=L(z(),1);function i1r({pr:e,highlighted:t,onHover:r,onPick:n}){let i=Nge(t);return(0,SB.jsx)(un,{ref:i,selected:t,onMouseDown:o=>o.preventDefault(),onMouseEnter:r,onClick:()=>n(e),sx:{alignItems:"flex-start",py:.75,whiteSpace:"normal"},children:(0,SB.jsxs)(Rt,{spacing:.25,sx:{minWidth:0},children:[(0,SB.jsx)(Fe,{sx:{fontSize:13,lineHeight:1.3,fontWeight:500},children:e.title}),(0,SB.jsxs)(Fe,{sx:{fontSize:11,color:"text.secondary"},children:["#",e.number," \xB7 ",e.author," \xB7 ",fa(e.createdAt)]})]})})}var tze=L(z(),1);function o1r({prs:e,highlight:t,onHighlight:r,onPick:n}){return(0,tze.jsx)(Tp,{dense:!0,disablePadding:!0,sx:{maxHeight:200,overflowY:"auto"},children:e.map((i,o)=>(0,tze.jsx)(i1r,{pr:i,highlighted:o===t,onHover:()=>r(o),onPick:n},i.number))})}var s1r=L(ge(),1);function a1r(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 l1r(e,t,r){let[n,i]=(0,s1r.useState)(""),o=a1r(e,n),{highlight:a,setHighlight:s,onKeyDown:l}=k_(o,n,t,r);return{filter:n,setFilter:i,filtered:o,highlight:a,setHighlight:s,onKeyDown:l,select:f=>{t(f),r()}}}var H_=L(z(),1),c1r={...LP,left:"auto",width:320,maxHeight:"none",overflowY:"visible"};function u1r({cwd:e,onPick:t,close:r}){let{prs:n,loading:i}=b0e(e),o=l1r(n,t,r);return i||n.length===0?(0,H_.jsx)(an,{elevation:4,sx:c1r,children:(0,H_.jsx)(eze,{text:i?"Loading open PRs\u2026":"No open PRs"})}):(0,H_.jsxs)(an,{elevation:4,sx:c1r,children:[(0,H_.jsx)(aB,{autoFocus:!0,value:o.filter,onChange:o.setFilter,onKeyDown:o.onKeyDown,placeholder:"Filter PRs..."}),o.filtered.length===0?(0,H_.jsx)(eze,{text:"No PRs match"}):(0,H_.jsx)(o1r,{prs:o.filtered,highlight:o.highlight,onHighlight:o.setHighlight,onPick:o.select})]})}var d1r=L(z(),1);function f1r({cwd:e,onPick:t,close:r}){return(0,d1r.jsx)(u1r,{cwd:e,onPick:t,close:r})}var U_=L(z(),1);function p1r({cwd:e,disabled:t,onSelect:r}){let{prs:n,loading:i}=b0e(e),[o,a]=(0,h1r.useState)(null);return i||n.length===0?null:(0,U_.jsxs)(U_.Fragment,{children:[(0,U_.jsx)(Hee,{label:"prs",disabled:t,children:s=>(0,U_.jsx)(f1r,{cwd:e,onPick:a,close:s})}),o&&(0,U_.jsx)(_pe,{pr:o,onSelect:s=>{r(o,s),a(null)},onCancel:()=>a(null)})]})}var g1r=L(z(),1);function m1r({onStartRun:e,cwd:t}){let r=Nee(t);return!t||r.length===0?null:(0,g1r.jsx)(Iee,{runs:r,onSelect:n=>e(n,t)})}var EY=L(z(),1);function y1r({onCreateAssist:e,onStartRun:t}){let{selectedCwd:r,selectedNode:n}=$n();return(0,EY.jsxs)(Rt,{direction:"row",spacing:.5,sx:{alignItems:"center","&:not(:empty)":{ml:2}},children:[(0,EY.jsx)(p1r,{cwd:r,disabled:!r,onSelect:(i,o)=>e([...o,String(i.number)],r,{..._P(i),node:n})}),(0,EY.jsx)(m1r,{onStartRun:(i,o)=>t(i,o,void 0,void 0,n),cwd:r})]})}var Hd=L(z(),1),qVn={minHeight:48,pl:1,pr:14};function v1r({socket:e,selection:t}){let{collapsed:r,onToggleCollapsed:n}=JT();return(0,Hd.jsxs)(Fk,{variant:"dense",disableGutters:!0,sx:qVn,children:[r&&(0,Hd.jsx)(Zee,{collapsed:r,onToggleCollapsed:n}),(0,Hd.jsx)(Jyr,{reconnecting:e.reconnecting}),(0,Hd.jsx)(Myr,{cwd:t.selectedCwd}),(0,Hd.jsx)(Cyr,{}),(0,Hd.jsx)(n1r,{repos:t.repos,selected:t.selectedCwd,onSelect:t.setSelectedCwd}),(0,Hd.jsxs)(ue,{sx:{display:"flex",alignItems:"center",ml:1},children:[(0,Hd.jsx)(Wee,{cwd:t.selectedCwd}),(0,Hd.jsx)(Oyr,{cwd:t.selectedCwd}),(0,Hd.jsx)(Nyr,{})]}),(0,Hd.jsx)(y1r,{onCreateAssist:e.createAssistSession,onStartRun:e.startRun}),(0,Hd.jsx)(Qyr,{rateLimits:e.rateLimits,harnessRateLimits:e.harnessRateLimits})]})}var x0e=L(ge(),1);function b1r(){let[e,t]=(0,x0e.useState)(null);return(0,x0e.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 T1r=L(z(),1),jVn={lineHeight:"32px",bgcolor:"transparent"};function x1r(){let e=b1r();return e?(0,T1r.jsx)(T1e,{sx:jVn,children:e}):null}var S1r=L(z(),1),C1r=ft((0,S1r.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 w1r=L(z(),1),_1r=ft((0,w1r.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 k1r=L(z(),1),E1r=ft((0,k1r.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 R1r=L(z(),1),A1r=ft((0,R1r.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 rze=L(z(),1);function P1r({mode:e}){return e==="dark"?(0,rze.jsx)(A1r,{fontSize:"small"}):(0,rze.jsx)(E1r,{fontSize:"small"})}var L1r=L(z(),1),M1r=ft((0,L1r.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 CB=L(z(),1);function I1r(){let e=Mpe();return(0,CB.jsxs)(un,{onClick:()=>xft(!e),children:[(0,CB.jsx)(rT,{children:(0,CB.jsx)(M1r,{fontSize:"small"})}),(0,CB.jsx)(xp,{children:e?"Hide render HUD":"Show render HUD"})]})}var el=L(z(),1);function D1r({mode:e,restartLabel:t,updateLabel:r,onToggleColorMode:n,onShowShortcuts:i,onRestart:o,onUpdate:a}){return[(0,el.jsxs)(un,{onClick:n,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(P1r,{mode:e})}),(0,el.jsx)(xp,{children:"Toggle dark mode"})]},"color-mode"),(0,el.jsx)(I1r,{},"render-hud"),(0,el.jsxs)(un,{onClick:i,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(C1r,{fontSize:"small"})}),(0,el.jsx)(xp,{children:"Keyboard shortcuts"})]},"shortcuts"),(0,el.jsx)(no,{},"restart-divider"),(0,el.jsxs)(un,{onClick:o,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(fee,{fontSize:"small"})}),(0,el.jsx)(xp,{children:t})]},"restart"),(0,el.jsxs)(un,{onClick:a,children:[(0,el.jsx)(rT,{children:(0,el.jsx)(_1r,{fontSize:"small"})}),(0,el.jsx)(xp,{children:r})]},"update")]}var N1r=L(ge(),1);var B1r=L(z(),1);function O1r({peer:e,onRestart:t,onClose:r}){let[n,i]=(0,N1r.useState)(!1);return(0,B1r.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 F1r(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 YVn=Object.keys(gP);function $1r(){let e=yP();return F1r(YVn.map(t=>WT(t,e)))}var ip=L(z(),1),KVn={display:"flex",alignItems:"center",justifyContent:"space-between",pr:1},XVn={display:"flex",alignItems:"center",justifyContent:"space-between",gap:2,py:.5};function z1r({onClose:e}){let t=$1r();return(0,ip.jsxs)(Ps,{open:!0,onClose:e,maxWidth:"xs",fullWidth:!0,"aria-labelledby":"shortcuts-dialog-title",children:[(0,ip.jsxs)(Il,{id:"shortcuts-dialog-title",sx:KVn,children:["Keyboard shortcuts",(0,ip.jsx)(sr,{size:"small","aria-label":"Close",onClick:e,children:(0,ip.jsx)(da,{fontSize:"small"})})]}),(0,ip.jsx)(Ml,{dividers:!0,children:t.map(r=>(0,ip.jsxs)(ue,{component:"section",sx:{mb:1.5},children:[(0,ip.jsx)(Fe,{variant:"overline",color:"text.secondary",children:r.name}),r.shortcuts.map(n=>(0,ip.jsxs)(ue,{sx:XVn,children:[(0,ip.jsx)(Fe,{variant:"body2",children:n.label}),(0,ip.jsx)(Rt,{direction:"row",spacing:.5,children:(0,ip.jsx)(GJ,{chords:n.chords})})]},n.label))]},r.name))})]})}var NR=L(z(),1);function H1r({reconnecting:e,onClose:t}){let{pending:r,error:n,clearError:i,restart:o}=y_(K9.target,e);return(0,NR.jsxs)(NR.Fragment,{children:[(0,NR.jsx)(vo,{title:K9.label,message:K9.message,confirmLabel:"Restart",busy:r,autoFocusConfirm:!0,onConfirm:()=>{o()},onCancel:t}),(0,NR.jsx)(vu,{error:n,onClose:i})]})}var W1r=L(z(),1);function ZVn(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 U1r({peer:e,onConfirm:t,onClose:r}){return(0,W1r.jsx)(vo,{...ZVn(e),confirmLabel:"Update",onConfirm:()=>{t(),r()},onCancel:r})}var d0=L(ge(),1);async function QVn(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 V1r(e,t){let r=await QVn(e);if(!r)return t;let n=r.remediation?` \u2014 ${r.remediation}`:"";return`${t}: ${r.hop} hop failed: ${r.error}${n}`}var O2=L(ge(),1);function G1r(e){let{nodes:t}=Nu(),[r,n]=(0,O2.useState)(null),i=(0,O2.useRef)(!1),o=r?t?.links.find(l=>l.name===r.peer):void 0;(0,O2.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,O2.useCallback)((l,u)=>{i.current=!1,n({peer:l,describe:u})},[]),s=(0,O2.useCallback)(()=>n(null),[]);return{watch:a,stop:s}}var JVn=9e4;function T0e(){let[e,t]=(0,d0.useState)(null),[r,n]=(0,d0.useState)(null),i=(0,d0.useRef)(void 0),o=(0,d0.useCallback)(f=>{clearTimeout(i.current),t(f)},[]),{watch:a,stop:s}=G1r(o);(0,d0.useEffect)(()=>()=>clearTimeout(i.current),[]);let l=(0,d0.useCallback)(async(f,d)=>{n(await V1r(f,d))},[]);return{requestThenAwait:(0,d0.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`)},JVn),!0):(await l(f,`${d} failed (${await Y9(m)})`),!1)},[l,a,s]),back:e,clearBack:()=>t(null),error:r,clearError:()=>n(null)}}var eGn=(e,t)=>t?`${e} is back (v${t})`:`${e} is back`;function q1r(){let{requestThenAwait:e,...t}=T0e();return{restart:n=>e(n,`Restart ${n}`,()=>g_("both",n),eGn),...t}}var RY=L(ge(),1);var h0=L(ge(),1);function j1r(e){return e.commandType==="assist"&&e.assistArgs?.[0]==="update"&&e.status==="done"}function S0e(e,t,r){let[n,i]=(0,h0.useState)(!1),[o,a]=(0,h0.useState)(!1),s=(0,h0.useRef)(!1),l=(0,h0.useRef)(e);l.current=e;let u=(0,h0.useRef)(new Set),f=(0,h0.useCallback)(()=>{s.current=!1,a(!1),u.current=new Set(l.current.filter(j1r).map(d=>d.id)),i(!0)},[]);return(0,h0.useEffect)(()=>{if(!n||o)return;if(t){s.current=!0;return}if(!s.current)return;e.some(h=>j1r(h)&&h.node===r&&!u.current.has(h.id))&&a(!0)},[n,o,t,e,r]),{arm:f,completed:o}}var Y1r=(e,t)=>t?`${e} updated to v${t}`:`${e} updated`;function tGn(e){return fetch(`/api/self-update?node=${encodeURIComponent(e)}`,{method:"POST"})}function K1r(e){let{nodes:t}=Nu(),{launchAssist:r}=$l(),{requestThenAwait:n,...i}=T0e(),[o,a]=(0,RY.useState)(null),[s,l]=(0,RY.useState)(),u=m=>t?.links.find(g=>g.name===m)?.state,{arm:f,completed:d}=S0e(e,u(s)!=="connected",s);(0,RY.useEffect)(()=>{!d||!s||(l(void 0),n(s,`Restart ${s}'s web server`,()=>g_("webserver",s),Y1r))},[d,s,n]);let h=async m=>{a(`Updating assist on ${m}\u2026`),await n(m,`Update ${m}`,()=>tGn(m),Y1r),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 p0=L(z(),1);function X1r({dialog:e,peer:t,sessions:r,reconnecting:n,onClose:i}){let{launchAssist:o,armUpdateReload:a}=$l(),s=q1r(),l=K1r(r);return(0,p0.jsxs)(p0.Fragment,{children:[e==="shortcuts"&&(0,p0.jsx)(z1r,{onClose:i}),e==="restart"&&t&&(0,p0.jsx)(O1r,{peer:t,onRestart:s.restart,onClose:i}),e==="restart"&&!t&&(0,p0.jsx)(H1r,{reconnecting:n,onClose:i}),e==="update"&&(0,p0.jsx)(U1r,{peer:t,onConfirm:()=>{if(t){l.update(t);return}a(),o(["update"])},onClose:i}),(0,p0.jsx)(Kj,{notices:s}),(0,p0.jsx)(Kj,{notices:l})]})}var Z1r=L(z(),1),Q1r=ft((0,Z1r.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 J1r=L(ge(),1);var AY=L(z(),1);function evr(){let e=Xi(),t=(0,J1r.useCallback)(()=>e("/config"),[e]),{matches:r,chords:n}=Yn("openConfig");return Io(r,t),(0,AY.jsx)(lr,{describeChild:!0,title:(0,AY.jsx)(Jf,{label:"Config",chords:n}),children:(0,AY.jsx)(sr,{size:"small",sx:{color:"inherit"},"aria-label":"Config",onClick:t,children:(0,AY.jsx)(Q1r,{fontSize:"small"})})})}var tvr=L(z(),1),rvr=ft((0,tvr.jsx)("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}),"Menu");var C0e=L(ge(),1);var PY=L(z(),1);function nvr({open:e,onOpen:t}){let r=(0,C0e.useRef)(null),{matches:n,chords:i}=Yn("openMenu");return Io(n,(0,C0e.useCallback)(()=>{r.current&&t(r.current)},[t])),(0,PY.jsx)(lr,{describeChild:!0,title:(0,PY.jsx)(Jf,{label:"Menu",chords:i}),children:(0,PY.jsx)(sr,{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,PY.jsx)(rvr,{fontSize:"small"})})})}var nze=L(z(),1),ivr=ft([(0,nze.jsx)("path",{d:"M12 5.99 19.53 19H4.47zM12 2 1 21h22z"},"0"),(0,nze.jsx)("path",{d:"M13 16h-2v2h2zm0-6h-2v5h2z"},"1")],"WarningAmber");var ize=L(z(),1);function ovr(){let e=a0e();return!e||e===N_?null:(0,ize.jsx)(lr,{title:`Daemon is running v${e}, but this page was served by v${N_}. Restart the daemon to match.`,children:(0,ize.jsx)(ivr,{fontSize:"small",color:"warning","aria-label":"Version mismatch"})})}var avr=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 tv=L(z(),1);function svr(){let{entries:e}=z9();if(!N_)return null;let t=e.filter(ige).length;return(0,tv.jsxs)(tv.Fragment,{children:[(0,tv.jsxs)(Dn,{component:ys,to:"/updates","aria-label":t?`Updates: ${t} node${t>1?"s have":" has"} an update ready`:"Updates",sx:avr(t>0),children:[t>0&&(0,tv.jsx)("span",{className:"ready-dot","aria-hidden":!0}),(0,tv.jsxs)("span",{children:["v",N_]}),t>0&&(0,tv.jsxs)("span",{className:"ready-count",children:[t," ready"]})]}),(0,tv.jsx)(ovr,{})]})}var wB=L(z(),1);function lvr({open:e,onOpen:t}){return(0,wB.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,wB.jsx)(svr,{}),(0,wB.jsx)(evr,{}),(0,wB.jsx)(nvr,{open:e,onOpen:t})]})}var OR=L(ge(),1);var uvr=L(ge(),1);var cvr=!0,rGn=new Set(["openMenu","cycleCards"]),nGn=Object.keys(gP).filter(e=>!rGn.has(e));function fvr(e,t){let r=yP();(0,uvr.useEffect)(()=>{if(!e)return;let n=i=>{nGn.some(o=>WT(o,r).matches(i))&&t()};return globalThis.addEventListener("keydown",n,cvr),()=>globalThis.removeEventListener("keydown",n,cvr)},[e,t,r])}function dvr(){let[e,t]=(0,OR.useState)(null),[r,n]=(0,OR.useState)(!0),i=!!e,o=(0,OR.useCallback)(()=>t(null),[]),a=(0,OR.useCallback)(s=>{n(!0),t(s)},[]);return fvr(i,(0,OR.useCallback)(()=>{n(!1),t(null)},[])),{anchorEl:e,open:i,close:o,openAt:a,restoreFocus:r}}var LY=L(ge(),1);function hvr(e){Io(Yn("shortcutsSheet").matches,e)}function pvr(){let[e,t]=(0,LY.useState)(null);hvr((0,LY.useCallback)(()=>t("shortcuts"),[]));let r=(0,LY.useCallback)(()=>t(null),[]);return{dialog:e,showDialog:t,closeDialog:r}}function mvr(){let{nodes:e,selected:t}=Nu();return e&&t&&t!==e.local?t:void 0}function gvr(e){return{restartLabel:e?`Restart ${e}`:K9.label,updateLabel:e?`Update assist on ${e}`:"Update assist"}}var B2=L(z(),1);function yvr({mode:e,toggle:t,sessions:r,reconnecting:n}){let{anchorEl:i,open:o,close:a,openAt:s,restoreFocus:l}=dvr(),{dialog:u,showDialog:f,closeDialog:d}=pvr(),h=mvr(),p=m=>()=>{a(),f(m)};return(0,B2.jsxs)(B2.Fragment,{children:[(0,B2.jsx)(lvr,{open:o,onOpen:s}),(0,B2.jsxs)(Dl,{anchorEl:i,open:o,onClose:a,disableRestoreFocus:!l,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,B2.jsx)(x1r,{}),D1r({mode:e,...gvr(h),onToggleColorMode:()=>{t(),a()},onShowShortcuts:p("shortcuts"),onRestart:p("restart"),onUpdate:p("update")})]}),(0,B2.jsx)(X1r,{dialog:u,peer:h,sessions:r,reconnecting:n,onClose:d})]})}var xvr=L(ge(),1);var bvr=L(z(),1);function vvr({conflict:e,onConfirm:t,onCancel:r}){let{name:n,cwd:i,port:o,group:a}=e.existing,s=Bp(i),l=o?` on port ${o}`:"",u=s?` in ${s}`:"",f=a?`, holding the ${a} server slot`:"";return(0,bvr.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 w0e=L(z(),1);function Tvr({socket:e,children:t}){let{serverConflict:r,clearServerConflict:n,retrySession:i,stopSession:o,startRun:a,discardSession:s}=e,l=(0,xvr.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,w0e.jsxs)(Z2e.Provider,{value:l,children:[t,r&&(0,w0e.jsx)(vvr,{conflict:r,onConfirm:u,onCancel:n})]})}var Svr=new Map;function Cvr(e,t){if(!Pre())return;let r=Svr.get(e);if(Svr.set(e,t),!!r)for(let[n,i]of Object.entries(t))Object.is(i,r[n])||ny(`\u0394 ${e}.${n}`)}var k0e=L(ge(),1);function wvr(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||Fp(i)!==t?null:n}function rv(e,t,r){if(e)return t.find(n=>n.id===e)??r.find(n=>n.sessionId===e)}function _0e(){let{pathname:e}=ua();return e.startsWith("/backlog")||e.startsWith("/usage")}function _vr({selectedCwd:e,selectedCardId:t,sessions:r,history:n,activeByRepo:i,onSelect:o}){let a=rv(t,r,n),s=a&&Fp(a),l=!!(s&&s===e),u=wvr(i,e,r),f=(0,k0e.useRef)(t),d=_0e();(0,k0e.useEffect)(()=>{let h=f.current!==t&&!!s;f.current=t,!(d||h||l||!u)&&o(u)},[t,s,l,u,o,d])}var A0e=L(ge(),1);function kvr(e,t,r,n){return rv(e,t,r)?.cwd||n}function Evr(e,t,r,n){let i=kvr(e,t,r,n.cwd),o=rv(e,t,r);return{cwd:i,node:o?.cwd?o.node:n.node}}function Rvr(e,t){let r=new Set,n=new Set,i=[];for(let o of t){if(o.cwdMissing)continue;let a=FT(o),s=Fp(o);!a||!s||r.has(a)||n.has(s)||(r.add(a),n.add(s),i.push(s))}return e&&!r.has(hP(e,t))&&!n.has(e)&&i.unshift(e),i}var op="";function iGn(e){let t=new Map([[op,[]]]);for(let r of e){let n=r.node??op;t.set(n,[...t.get(n)??[],r])}return t}function Avr(e,t){var n;let r=new Map;for(let[i,o]of iGn(t)){let a=i===op?e:"";for(let s of Rvr(a,o)){let l=hP(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 Pvr(e,t){return e.clones[t]??e.clones[op]??Object.values(e.clones)[0]}function MY(e,t){return e.find(r=>Object.values(r.clones).includes(t))}function _B(e,t){return!e||e===t?op:e}var oze=L(ge(),1);function Lvr(e,t){let r=(0,oze.useCallback)((i,o)=>{let a=_B(o,t),s=MY(e,i);return s?s.clones[a]:a===op?i:void 0},[e,t]),n=(0,oze.useCallback)(i=>MY(e,i)?.origin,[e]);return{cloneOn:r,originOf:n}}var E0e=L(ge(),1);function Mvr(e,t,r,n){let i=(0,E0e.useRef)(e);(0,E0e.useEffect)(()=>{if(i.current===e)return;i.current=e;let o=MY(t,r)?.clones[e];o&&n(o,e)},[e,t,r,n])}var kB=L(ge(),1);function Ivr(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(op)?op:[...n][0]}function Dvr(e,t,r,n){let[i,o]=(0,kB.useState)({cwd:e}),a=(0,kB.useCallback)((l,u)=>o({cwd:l,node:u}),[]);(0,kB.useEffect)(()=>{e&&!i.cwd&&o({cwd:e})},[e,i.cwd]);let s=Ivr(t,{cwd:i.cwd,node:i.node===void 0?void 0:_B(i.node,n)},r);return{selectedCwd:i.cwd,selectedNode:s||void 0,setSelectedCwd:a}}var Nvr=L(ge(),1);function R0e(e,t,r){let n=rv(e,t,r);return n&&Fp(n)}function Ovr(e,t,r,n){let i=R0e(e,t,r),o=rv(e,t,r)?.node??op;(0,Nvr.useEffect)(()=>{i&&n(i,o)},[i,o,n])}function Bvr(e,t,r,n,i){let o=i.nodes?.local,a=_B(i.selected,o),s=(0,A0e.useMemo)(()=>Avr(e,t),[e,t]),{selectedCwd:l,selectedNode:u,setSelectedCwd:f}=Dvr(e,s,a,o);Ovr(r,n,t,f),Mvr(a,s,l,f);let{cloneOn:d,originOf:h}=Lvr(s,o),p=(0,A0e.useMemo)(()=>s.map(y=>Pvr(y,a)),[s,a]),{cwd:m,node:g}=Evr(r,n,t,{cwd:l,node:u});return(0,A0e.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 L0e=L(ge(),1);var W_=L(ge(),1);var Fvr=L(ge(),1),P0e="assist:reloaded-after-update";function $vr(e){(0,Fvr.useEffect)(()=>{globalThis.sessionStorage?.getItem(P0e)&&(globalThis.sessionStorage.removeItem(P0e),e({message:"Reloaded after updating assist",sessionId:null}))},[e])}function zvr(e,t,r,n){let{arm:i,completed:o}=S0e(e,t),a=(0,W_.useRef)(!1),s=(0,W_.useCallback)(()=>{globalThis.sessionStorage?.setItem(P0e,"1")},[]),{error:l,restart:u}=y_("webserver",t,s);return $vr(r),(0,W_.useEffect)(()=>{l&&n(l)},[l,n]),(0,W_.useEffect)(()=>{!o||a.current||(a.current=!0,u())},[o,u]),{armUpdateReload:(0,W_.useCallback)(()=>{a.current=!1,i()},[i])}}function Hvr(e){let{armUpdateReload:t}=zvr(e.sessions,e.reconnecting,e.setSuccess,e.setError),r=(0,L0e.useMemo)(()=>({launchAssist:e.createAssistSession,launchAgentInStream:e.createSessionInStream,resumeSession:e.resumeSession,armUpdateReload:t}),[e.createAssistSession,e.createSessionInStream,e.resumeSession,t]),n=Xi(),i=(0,L0e.useCallback)(o=>{e.selectSession(o),n("/sessions"),e.clearSuccess()},[n,e.selectSession,e.clearSuccess]);return{launch:r,viewLaunchedSession:i}}var Uvr=L(ge(),1);function Wvr(e,t,r,n){let i=R0e(e,t,r);(0,Uvr.useEffect)(()=>{e&&i&&n({type:"set-active",cwd:i,sessionId:e})},[e,i,n])}var M0e=L(ge(),1);function Vvr(e,t){let r=(0,M0e.useRef)(new Map);(0,M0e.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 EB=L(ge(),1),Gvr="assist.sessions.node";function oGn(){try{return localStorage.getItem(Gvr)}catch{return null}}function aGn(e){try{localStorage.setItem(Gvr,e)}catch{}}function qvr(e){let[t,r]=(0,EB.useState)(oGn),n=(0,EB.useCallback)(i=>{r(i),aGn(i)},[]);return(0,EB.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 Yvr=L(ge(),1);function jvr(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 Kvr(e,t){return(0,Yvr.useCallback)(r=>{let n=e.current;n?.readyState===WebSocket.OPEN&&n.send(JSON.stringify(r));let i=jvr(r);i&&t(i)},[e,t])}var nv=L(ge(),1);function I0e(e,t,r,n,i){e({type:"create",prompt:r||void 0,cwd:n,...t,...i?{node:i}:{}})}function Xvr(e){return(t,r,n)=>I0e(e,{design:!0},t,r,n)}function Zvr(e){return(t,r,n,i)=>I0e(e,{harness:t},r,n,i)}function Qvr(e){return(t,r,n)=>I0e(e,{auto:!0},t,r,n)}function Jvr(e){return(t,r,n)=>e({type:"create-assist",assistArgs:t,cwd:r,...n})}function ebr(e){return(t,r,n,i,o)=>e({type:"resume",sessionId:t,cwd:r,name:n,harness:i,node:o})}function tbr(e,t){return(r,n)=>{t.delete(r),e({type:"retry",sessionId:r,replace:n})}}function rbr(e,t){return r=>{t.delete(r),e({type:"restart",sessionId:r})}}function nbr(e,t){return r=>{e({type:"dismiss",sessionId:r}),t.delete(r)}}function ibr(e,t){return r=>{e({type:"discard",sessionId:r}),t.delete(r)}}function obr(e){return t=>e({type:"stop",sessionId:t})}function abr(e){return(t,r,n,i,o)=>e({type:"create-run",runName:t,cwd:r,replace:n,launchedFrom:i,node:o})}function sbr(e){return(t,r)=>e({type:"set-autorun",sessionId:t,enabled:r})}function lbr(e){return(t,r)=>e({type:"set-autoadvance",sessionId:t,enabled:r})}function cbr(e){return(t,r)=>e({type:"set-starred",sessionId:t,starred:r})}function ubr(e){return(t,r)=>e({type:"input",sessionId:t,data:r,viewerId:Yj})}function fbr(e){return(t,r,n,i)=>e({type:"resize",sessionId:t,cols:r,rows:n,viewerId:Yj,claim:i})}function dbr(e,t){return(r,n)=>{let i=e.get(r);return i&&n(i),t.set(r,n),()=>t.delete(r)}}function hbr(e){return(t,r,n,i)=>e({type:"pr-decision",sessionId:t,requestId:r,decision:n,...i})}var BR=L(ge(),1);function pbr(e){return(t,r,n)=>e({type:"create",prompt:r||void 0,cwd:n,joinSessionId:t,auto:!0})}function mbr(e){return{createSession:(0,BR.useMemo)(()=>Qvr(e),[e]),createSessionInStream:(0,BR.useMemo)(()=>pbr(e),[e]),createDesignSession:(0,BR.useMemo)(()=>Xvr(e),[e]),createHarnessSession:(0,BR.useMemo)(()=>Zvr(e),[e]),createAssistSession:(0,BR.useMemo)(()=>Jvr(e),[e]),resumeSession:(0,BR.useMemo)(()=>ebr(e),[e])}}var IY=L(ge(),1);function gbr(e,t){let r=(0,IY.useCallback)((a,s)=>{tbr(e,t.current)(a,s)},[e,t]),n=(0,IY.useCallback)(a=>{rbr(e,t.current)(a)},[e,t]),i=(0,IY.useCallback)(a=>{nbr(e,t.current)(a)},[e,t]),o=(0,IY.useCallback)(a=>{ibr(e,t.current)(a)},[e,t]);return{retrySession:r,restartSession:n,dismissSession:i,discardSession:o}}function ybr(e,t,r){let n={...mbr(e),sendInput:(0,nv.useMemo)(()=>ubr(e),[e]),sendResize:(0,nv.useMemo)(()=>fbr(e),[e]),sendPrDecision:(0,nv.useMemo)(()=>hbr(e),[e]),setAutoRun:(0,nv.useMemo)(()=>sbr(e),[e]),setAutoAdvance:(0,nv.useMemo)(()=>lbr(e),[e]),setStarred:(0,nv.useMemo)(()=>cbr(e),[e]),stopSession:(0,nv.useMemo)(()=>obr(e),[e]),startRun:(0,nv.useMemo)(()=>abr(e),[e])},i=(0,nv.useMemo)(()=>dbr(t.current,r.current),[t,r]);return{...n,...gbr(e,t),onOutput:i}}var DY=L(ge(),1);function vbr(e,t,r){let n=(0,DY.useCallback)(s=>{r(s),e({type:"fetch-transcript",sessionId:s})},[e,r]),i=(0,DY.useCallback)(s=>e({type:"fetch-user-messages",sessionId:s}),[e]),o=(0,DY.useCallback)(()=>{r(null)},[r]),a=(0,DY.useCallback)(s=>{r(null),t(s)},[t,r]);return{viewTranscript:n,fetchUserMessages:i,clearTranscript:o,selectSession:a}}var q_=L(ge(),1);function bbr(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 Tbr=L(ge(),1);function xbr(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 Sbr(e,t,r){let n=_0e();(0,Tbr.useEffect)(()=>{if(n){t(null);return}t(i=>xbr(e,i,r))},[e,t,r,n])}var D0e=L(ge(),1);function Cbr(){let[e,t]=(0,D0e.useState)({}),[r,n]=(0,D0e.useState)(null),[i,o]=(0,D0e.useState)(null);return{activeByRepo:e,setActiveByRepo:t,daemonVersion:r,setDaemonVersion:n,nodes:i,setNodes:o}}var m0=L(ge(),1);function wbr(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 _br(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 kbr(e,t){return t.filter(r=>r.commandType==="run"&&e.get(r.id)!==r.startedAt).map(r=>r.id)}var sGn=1500;function Ebr(){let[e,t]=(0,m0.useState)(new Set),r=(0,m0.useRef)(new Map),n=(0,m0.useRef)(new Map),i=(0,m0.useCallback)(s=>{t(l=>l.has(s)?l:new Set(l).add(s))},[]),o=(0,m0.useCallback)(s=>{let l=n.current;for(let u of s)clearTimeout(l.get(u)),l.set(u,setTimeout(()=>{l.delete(u),i(u)},sGn))},[i]);(0,m0.useEffect)(()=>{let s=n.current;return()=>{for(let l of s.values())clearTimeout(l)}},[]);let a=(0,m0.useCallback)(s=>{let l=_br(r.current,s),u=kbr(r.current,s);r.current=new Map(s.map(f=>[f.id,f.startedAt])),l.length&&t(f=>wbr(f,l)),o(u)},[o]);return{initialized:e,markInitialized:i,syncSessions:a}}var V_=L(ge(),1);function Rbr(){let[e,t]=(0,V_.useState)(null),[r,n]=(0,V_.useState)(null),[i,o]=(0,V_.useState)(null),a=(0,V_.useCallback)(()=>t(null),[]),s=(0,V_.useCallback)(()=>n(null),[]),l=(0,V_.useCallback)(()=>o(null),[]);return{error:e,setError:t,clearError:a,success:r,setSuccess:n,clearSuccess:s,serverConflict:i,setServerConflict:o,clearServerConflict:l}}var iv=L(ge(),1);function Abr(e,t){return[...e,{...t,status:"launching"}]}function N0e(e){return e.find(t=>t.status==="launching")}function Pbr(e){let t=N0e(e);return t?e.filter(r=>r.id!==t.id):e}function Lbr(e,t){let r=N0e(e);return r?aze(e,r.id,t):e}function aze(e,t,r){return e.map(n=>n.id===t&&n.status==="launching"?{...n,status:"error",error:r}:n)}function Mbr(e,t){return e.filter(r=>r.id!==t)}var Ibr=L(ge(),1);var lGn=6e4,cGn="Launch timed out \u2014 the session did not start.";function Dbr(e,t){(0,Ibr.useEffect)(()=>{let r=e.filter(i=>i.status==="launching");if(r.length===0)return;let n=r.map(i=>setTimeout(()=>t(o=>aze(o,i.id,cGn)),Math.max(0,lGn-(Date.now()-i.startedAt))));return()=>n.forEach(clearTimeout)},[e,t])}function Nbr(){let[e,t]=(0,iv.useState)([]),r=(0,iv.useRef)([]),n=(0,iv.useCallback)(l=>{r.current=l(r.current),t(r.current)},[]),i=(0,iv.useCallback)(l=>{n(u=>Abr(u,{id:crypto.randomUUID(),startedAt:Date.now(),...l}))},[n]),o=(0,iv.useCallback)(()=>{let l=N0e(r.current);return n(Pbr),l?.named?l.title:void 0},[n]),a=(0,iv.useCallback)(l=>n(u=>Lbr(u,l)),[n]),s=(0,iv.useCallback)(l=>n(u=>Mbr(u,l)),[n]);return Dbr(e,n),{pendingLaunches:e,addPendingLaunch:i,resolvePendingLaunch:o,failPendingLaunch:a,dismissPendingLaunch:s}}var NY=L(ge(),1);function Obr(){let[e,t]=(0,NY.useState)(null),[r,n]=(0,NY.useState)({}),i=(0,NY.useCallback)((o,a)=>{o!=="claude"&&n(s=>({...s,[o]:a}))},[]);return{rateLimits:e,setRateLimits:t,harnessRateLimits:r,setHarnessRateLimits:i}}var Bbr=L(ge(),1);function Fbr(e,t){return(0,Bbr.useCallback)(r=>{e(r),t(r)},[e,t])}var O0e=L(ge(),1);function $br(){let[e,t]=(0,O0e.useState)(null),[r,n]=(0,O0e.useState)(null),[i,o]=(0,O0e.useState)(null);return{transcript:e,setTranscript:t,viewingTranscriptSessionId:r,setViewingTranscriptSessionId:n,userMessages:i,setUserMessages:o}}var G_=L(ge(),1);function zbr(e,t){let r=e.sessionId;t.buffers.current?.delete(r),t.handlers.current?.get(r)?.("\x1Bc")}function Hbr(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 Ubr(e,t){let r=e.message;t.setError(r),t.failPendingLaunch(r)}function Wbr(e,t){let r=e.rateLimits,n=e.harness;!n||n==="claude"?t.setRateLimits(r):t.setHarnessRateLimits?.(n,r)}function Vbr(e,t){t.setNodes({local:e.local,links:e.links??[]})}function Gbr(e,t){t.setSuccess({message:e.message,sessionId:null})}function qbr(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 jbr(e,t){t.setServerConflict({existing:e.existing,runName:e.runName,cwd:e.cwd,sessionId:e.sessionId,launchedFrom:e.launchedFrom,node:e.node})}function Ybr(e,t){let r=e.sessions;t.setSessions(r),e.cwd&&t.setCurrentCwd(e.cwd),t.setActiveByRepo(e.active??{})}var uGn={sessions:Ybr,created:Hbr,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:Vbr,error:Ubr,notice:Gbr,"run-conflict":jbr,limits:Wbr,clear:zbr,output:qbr};function Kbr(e,t){uGn[e.type]?.(e,t)}function Xbr(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=>{Kbr(JSON.parse(i.data),e)},n.onclose=()=>t.onClose?.(),n}function Zbr(e,t,r,n){let i=!1,o,a=0,s=!1,l=()=>{i||t(Xbr(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 Qbr(e){let t=(0,G_.useRef)(null),[r,n]=(0,G_.useState)(!1),{handleSessions:i,markInitialized:o,buffers:a,handlers:s}=e;(0,G_.useEffect)(()=>{let u=()=>{a.current?.clear();let d=s.current;if(d)for(let h of d.values())h("\x1Bc")},f=Zbr({...e,setSessions:i},d=>{t.current=d},u,n);return()=>{f(),t.current?.close()}},[i,o,a,s]);let l=(0,G_.useCallback)(()=>{let u=t.current;u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"history"}))},[]);return{wsRef:t,requestHistory:l,reconnecting:r}}function Jbr(){let[e,t]=(0,q_.useState)([]),[r,n]=(0,q_.useState)([]),[i,o]=(0,q_.useState)(null),a=Cbr(),s=$br(),[l,u]=(0,q_.useState)(""),f=Rbr(),d=Nbr(),h=Obr(),{initialized:p,markInitialized:m,syncSessions:g}=Ebr(),y=(0,q_.useRef)(new Map),v=(0,q_.useRef)(new Map),b=Fbr(g,t),{wsRef:x,requestHistory:S,reconnecting:C}=Qbr({handleSessions:b,setHistory:n,setActiveId:o,...a,...s,setCurrentCwd:u,...f,...d,...h,markInitialized:m,buffers:y,handlers:v});return Sbr(e,o,bbr(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 exr(){let e=Jbr(),{wsRef:t,buffers:r,handlers:n,addPendingLaunch:i,activeId:o,sessions:a}=e,s=qvr(e.nodes),l=Kvr(t,i),u=ybr(l,r,n);Wvr(o,a,e.history,l),Vvr(a,l);let f=vbr(l,e.setActiveId,e.setViewingTranscriptSessionId);return{...e,...u,...f,nodeSelection:s}}var RB=L(ge(),1);var txr="assist:sidebar-collapsed";function rxr(){let[e,t]=(0,RB.useState)(()=>Od(txr).length>0),r=(0,RB.useCallback)(()=>{t(n=>{let i=!n;return Bd(txr,i?[!0]:[]),i})},[]);return(0,RB.useMemo)(()=>({collapsed:e,onToggleCollapsed:r}),[e,r])}var nxr=L(ge(),1);function ixr(){(0,nxr.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch("/api/hotkeys");if(!t.ok)return;let r=await t.json();e||h5.set(r)}catch{}})(),()=>{e=!0}},[])}var B0e=L(ge(),1);function oxr(){let[e,t]=(0,B0e.useState)(!0);return(0,B0e.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 axr(){let e=exr(),t=ope(e),r=Bvr(e.currentCwd,e.history,t,e.sessions,e.nodeSelection);_vr({selectedCwd:r.selectedCwd,selectedCardId:t,sessions:e.sessions,history:e.history,activeByRepo:e.activeByRepo,onSelect:e.selectSession});let{launch:n,viewLaunchedSession:i}=Hvr(e),o=oxr();ixr();let a=rxr();return Cvr("shell",{...e,selection:r,launch:n,topBar:o,sidebarCollapse:a}),{socket:e,selection:r,launch:n,viewLaunchedSession:i,topBar:o,sidebarCollapse:a}}var g0=L(z(),1),fGn={zIndex:e=>e.zIndex.drawer+1},dGn={minHeight:48};function sxr({mode:e,toggle:t}){let r=axr(),{socket:n,selection:i,viewLaunchedSession:o}=r;return(0,g0.jsx)(byr,{shell:r,children:(0,g0.jsxs)(W$e.Provider,{value:n.daemonVersion,children:[(0,g0.jsx)(yvr,{mode:e,toggle:t,sessions:n.sessions,reconnecting:n.reconnecting}),(0,g0.jsx)(o1e,{position:"fixed",elevation:1,sx:fGn,children:(0,g0.jsx)(v1r,{socket:n,selection:i})}),(0,g0.jsx)(Fk,{variant:"dense",sx:dGn}),(0,g0.jsx)(Tvr,{socket:n,children:(0,g0.jsx)(s0r,{socket:n})}),(0,g0.jsx)(yyr,{socket:n,onViewLaunchedSession:o})]})})}var lxr=L(ge(),1);function cxr(){let[e,t]=(0,lxr.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 j_=L(z(),1),hGn={MuiButtonBase:{styleOverrides:{root:{cursor:"pointer","&.Mui-disabled":{cursor:"default"}}}},MuiLink:{styleOverrides:{root:{cursor:"pointer"}}}};function pGn(){let{mode:e,toggle:t}=cxr(),r=(0,fxr.useMemo)(()=>C0({palette:{mode:e,...e==="dark"&&{background:{default:"#1e1e1e",paper:"#252526"}}},components:hGn}),[e]);return(0,j_.jsxs)(WK,{theme:r,children:[(0,j_.jsx)(PX,{}),(0,j_.jsx)(sxr,{mode:e,toggle:t})]})}var mGn=k2e([{path:"*",element:(0,j_.jsx)(pGn,{})}]);function gGn(){return(0,j_.jsx)(v2e,{router:mGn})}var uxr=document.getElementById("app");uxr&&(0,dxr.createRoot)(uxr).render((0,j_.jsx)(gGn,{}));})();
|
|
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.
|
|
9
|
+
version: "0.784.1",
|
|
10
10
|
type: "module",
|
|
11
11
|
main: "dist/index.js",
|
|
12
12
|
bin: {
|
|
@@ -1181,6 +1181,8 @@ function buildRunEntry(name, command, args, options2) {
|
|
|
1181
1181
|
const entry = { name, command: effectiveCommand };
|
|
1182
1182
|
if (effectiveArgs.length > 0) entry.args = effectiveArgs;
|
|
1183
1183
|
if (options2?.cwd) entry.cwd = options2.cwd;
|
|
1184
|
+
if (options2?.server !== void 0) entry.server = options2.server;
|
|
1185
|
+
if (options2?.port !== void 0) entry.port = options2.port;
|
|
1184
1186
|
return entry;
|
|
1185
1187
|
}
|
|
1186
1188
|
|
|
@@ -13076,7 +13078,7 @@ var rootConfigHelp = {
|
|
|
13076
13078
|
var runConfigHelp = [
|
|
13077
13079
|
{
|
|
13078
13080
|
key: "run",
|
|
13079
|
-
setter: "assist run add <name> <command>",
|
|
13081
|
+
setter: "assist run add <name> <command> [--server [group]] [--repo]",
|
|
13080
13082
|
note: "configured commands runnable via assist run <name>"
|
|
13081
13083
|
}
|
|
13082
13084
|
];
|
|
@@ -41286,6 +41288,34 @@ async function run3(name, args) {
|
|
|
41286
41288
|
import { mkdirSync as mkdirSync34, writeFileSync as writeFileSync54 } from "fs";
|
|
41287
41289
|
import { join as join100 } from "path";
|
|
41288
41290
|
|
|
41291
|
+
// src/commands/run/editRepoRunList.ts
|
|
41292
|
+
async function editRepoRunList(repoName, cwd, edit2) {
|
|
41293
|
+
const orm = await getDb();
|
|
41294
|
+
const { label: label2, block } = await resolveSharedRepoBlock(orm, repoName, cwd);
|
|
41295
|
+
const run4 = edit2(block.run ?? [], label2);
|
|
41296
|
+
const updated2 = { ...block, run: run4 };
|
|
41297
|
+
const validation = validateConfig(updated2, "run", repoConfigSchema);
|
|
41298
|
+
if (!validation.ok) exitWithConfigErrors(validation.errors);
|
|
41299
|
+
await saveSharedRepoBlock(orm, label2, updated2);
|
|
41300
|
+
return label2;
|
|
41301
|
+
}
|
|
41302
|
+
|
|
41303
|
+
// src/commands/run/ensureNoDuplicateRun.ts
|
|
41304
|
+
function ensureNoDuplicateRun(configs, name) {
|
|
41305
|
+
if (configs.some((r) => "name" in r && r.name === name)) {
|
|
41306
|
+
console.error(`Run configuration with name "${name}" already exists`);
|
|
41307
|
+
process.exit(1);
|
|
41308
|
+
}
|
|
41309
|
+
}
|
|
41310
|
+
|
|
41311
|
+
// src/commands/run/addRepoRunConfig.ts
|
|
41312
|
+
function addRepoRunConfig(entry, repoName, cwd = process.cwd()) {
|
|
41313
|
+
return editRepoRunList(repoName, cwd, (runList) => {
|
|
41314
|
+
ensureNoDuplicateRun(runList, entry.name);
|
|
41315
|
+
return [...runList, entry];
|
|
41316
|
+
});
|
|
41317
|
+
}
|
|
41318
|
+
|
|
41289
41319
|
// src/commands/run/extractOption.ts
|
|
41290
41320
|
function extractOption(args, flag) {
|
|
41291
41321
|
const index2 = args.indexOf(flag);
|
|
@@ -41296,52 +41326,73 @@ function extractOption(args, flag) {
|
|
|
41296
41326
|
};
|
|
41297
41327
|
}
|
|
41298
41328
|
|
|
41299
|
-
// src/commands/run/
|
|
41329
|
+
// src/commands/run/extractOptionalValueFlag.ts
|
|
41330
|
+
function extractOptionalValueFlag(args, flag) {
|
|
41331
|
+
const index2 = args.indexOf(flag);
|
|
41332
|
+
if (index2 === -1) return { value: void 0, remaining: args };
|
|
41333
|
+
const next3 = args[index2 + 1];
|
|
41334
|
+
const hasValue = next3 !== void 0 && !next3.startsWith("-");
|
|
41335
|
+
return {
|
|
41336
|
+
value: hasValue ? next3 : true,
|
|
41337
|
+
remaining: [
|
|
41338
|
+
...args.slice(0, index2),
|
|
41339
|
+
...args.slice(index2 + (hasValue ? 2 : 1))
|
|
41340
|
+
]
|
|
41341
|
+
};
|
|
41342
|
+
}
|
|
41343
|
+
|
|
41344
|
+
// src/commands/run/requireParsedArgs.ts
|
|
41300
41345
|
function findAddIndex() {
|
|
41301
41346
|
const addIndex = process.argv.indexOf("add");
|
|
41302
41347
|
if (addIndex === -1 || addIndex + 2 >= process.argv.length) return -1;
|
|
41303
41348
|
return addIndex;
|
|
41304
41349
|
}
|
|
41350
|
+
function parsePort(raw) {
|
|
41351
|
+
if (raw === void 0) return void 0;
|
|
41352
|
+
const port = Number(raw);
|
|
41353
|
+
if (!Number.isInteger(port) || port <= 0) {
|
|
41354
|
+
console.error(`--port must be a positive integer, got "${raw}"`);
|
|
41355
|
+
process.exit(1);
|
|
41356
|
+
}
|
|
41357
|
+
return port;
|
|
41358
|
+
}
|
|
41305
41359
|
function extractAddArgs(addIndex) {
|
|
41306
41360
|
const rawArgs = process.argv.slice(addIndex + 3);
|
|
41307
|
-
const
|
|
41361
|
+
const cwd = extractOption(rawArgs, "--cwd");
|
|
41362
|
+
const port = extractOption(cwd.remaining, "--port");
|
|
41363
|
+
const server = extractOptionalValueFlag(port.remaining, "--server");
|
|
41364
|
+
const repo = extractOptionalValueFlag(server.remaining, "--repo");
|
|
41308
41365
|
return {
|
|
41309
41366
|
name: process.argv[addIndex + 1],
|
|
41310
41367
|
command: process.argv[addIndex + 2],
|
|
41311
|
-
args,
|
|
41312
|
-
|
|
41368
|
+
args: repo.remaining,
|
|
41369
|
+
options: {
|
|
41370
|
+
cwd: cwd.value,
|
|
41371
|
+
server: server.value,
|
|
41372
|
+
port: parsePort(port.value)
|
|
41373
|
+
},
|
|
41374
|
+
repo: repo.value
|
|
41313
41375
|
};
|
|
41314
41376
|
}
|
|
41315
|
-
function
|
|
41377
|
+
function requireParsedArgs() {
|
|
41316
41378
|
const addIndex = findAddIndex();
|
|
41317
|
-
|
|
41318
|
-
|
|
41319
|
-
function ensureNoDuplicate(configs, name) {
|
|
41320
|
-
if (configs.find((r) => r.name === name)) {
|
|
41321
|
-
console.error(`Run configuration with name "${name}" already exists`);
|
|
41379
|
+
if (addIndex === -1) {
|
|
41380
|
+
console.error("Usage: assist run add <name> <command> [args...]");
|
|
41322
41381
|
process.exit(1);
|
|
41323
41382
|
}
|
|
41383
|
+
return extractAddArgs(addIndex);
|
|
41324
41384
|
}
|
|
41385
|
+
|
|
41386
|
+
// src/commands/run/add.ts
|
|
41325
41387
|
function formatDisplay(command, args) {
|
|
41326
41388
|
return args.length > 0 ? `${command} ${args.join(" ")}` : command;
|
|
41327
41389
|
}
|
|
41328
|
-
function
|
|
41329
|
-
const parsed = parseAddArguments();
|
|
41330
|
-
if (!parsed) {
|
|
41331
|
-
console.error("Usage: assist run add <name> <command> [args...]");
|
|
41332
|
-
process.exit(1);
|
|
41333
|
-
}
|
|
41334
|
-
return parsed;
|
|
41335
|
-
}
|
|
41336
|
-
function getOrInitRunList() {
|
|
41390
|
+
function saveProjectRunConfig(entry) {
|
|
41337
41391
|
const config = loadProjectConfig();
|
|
41338
41392
|
if (!config.run) config.run = [];
|
|
41339
|
-
|
|
41340
|
-
|
|
41341
|
-
|
|
41342
|
-
const { config, runList } = getOrInitRunList();
|
|
41343
|
-
ensureNoDuplicate(runList, name);
|
|
41344
|
-
runList.push(buildRunEntry(name, command, args, { cwd }));
|
|
41393
|
+
const runList = config.run;
|
|
41394
|
+
ensureNoDuplicateRun(runList, entry.name);
|
|
41395
|
+
runList.push(entry);
|
|
41345
41396
|
saveConfig(config);
|
|
41346
41397
|
}
|
|
41347
41398
|
function createCommandFile(name) {
|
|
@@ -41357,15 +41408,25 @@ Run \`assist run ${name} $ARGUMENTS 2>&1\`.
|
|
|
41357
41408
|
writeFileSync54(filePath, content);
|
|
41358
41409
|
console.log(`Created command file: ${filePath}`);
|
|
41359
41410
|
}
|
|
41360
|
-
function add4() {
|
|
41361
|
-
const { name, command, args,
|
|
41362
|
-
|
|
41411
|
+
async function add4() {
|
|
41412
|
+
const { name, command, args, options: options2, repo } = requireParsedArgs();
|
|
41413
|
+
const entry = buildRunEntry(name, command, args, options2);
|
|
41414
|
+
const display = formatDisplay(command, args);
|
|
41415
|
+
if (repo !== void 0) {
|
|
41416
|
+
const label2 = await addRepoRunConfig(
|
|
41417
|
+
entry,
|
|
41418
|
+
typeof repo === "string" ? repo : void 0
|
|
41419
|
+
);
|
|
41420
|
+
console.log(
|
|
41421
|
+
`Added run configuration: ${name} -> ${display} (repo: ${label2})`
|
|
41422
|
+
);
|
|
41423
|
+
return;
|
|
41424
|
+
}
|
|
41425
|
+
saveProjectRunConfig(entry);
|
|
41363
41426
|
if (!name.startsWith("verify:")) {
|
|
41364
41427
|
createCommandFile(name);
|
|
41365
41428
|
}
|
|
41366
|
-
console.log(
|
|
41367
|
-
`Added run configuration: ${name} -> ${formatDisplay(command, args)}`
|
|
41368
|
-
);
|
|
41429
|
+
console.log(`Added run configuration: ${name} -> ${display}`);
|
|
41369
41430
|
}
|
|
41370
41431
|
|
|
41371
41432
|
// src/commands/run/link.ts
|
|
@@ -41411,19 +41472,22 @@ function link2() {
|
|
|
41411
41472
|
// src/commands/run/remove.ts
|
|
41412
41473
|
import { existsSync as existsSync83, unlinkSync as unlinkSync21 } from "fs";
|
|
41413
41474
|
import { join as join101 } from "path";
|
|
41414
|
-
|
|
41415
|
-
|
|
41416
|
-
|
|
41417
|
-
return
|
|
41475
|
+
|
|
41476
|
+
// src/commands/run/removeRepoRunConfig.ts
|
|
41477
|
+
function isNamed(entry, name) {
|
|
41478
|
+
return "name" in entry && entry.name === name;
|
|
41418
41479
|
}
|
|
41419
|
-
function
|
|
41420
|
-
|
|
41421
|
-
|
|
41422
|
-
|
|
41423
|
-
|
|
41424
|
-
|
|
41425
|
-
|
|
41480
|
+
function removeRepoRunConfig(name, repoName, cwd = process.cwd()) {
|
|
41481
|
+
return editRepoRunList(repoName, cwd, (runList, label2) => {
|
|
41482
|
+
if (!runList.some((r) => isNamed(r, name))) {
|
|
41483
|
+
console.error(`Run configuration "${name}" not found in repo ${label2}`);
|
|
41484
|
+
process.exit(1);
|
|
41485
|
+
}
|
|
41486
|
+
return runList.filter((r) => !isNamed(r, name));
|
|
41487
|
+
});
|
|
41426
41488
|
}
|
|
41489
|
+
|
|
41490
|
+
// src/commands/run/remove.ts
|
|
41427
41491
|
function deleteCommandFile(name) {
|
|
41428
41492
|
const filePath = join101(".claude", "commands", `${name}.md`);
|
|
41429
41493
|
if (existsSync83(filePath)) {
|
|
@@ -41431,8 +41495,7 @@ function deleteCommandFile(name) {
|
|
|
41431
41495
|
console.log(`Deleted command file: ${filePath}`);
|
|
41432
41496
|
}
|
|
41433
41497
|
}
|
|
41434
|
-
function
|
|
41435
|
-
const name = parseRemoveName();
|
|
41498
|
+
function removeProjectRunConfig(name) {
|
|
41436
41499
|
const config = loadProjectConfig();
|
|
41437
41500
|
const runList = config.run;
|
|
41438
41501
|
if (!runList || !runList.find((r) => r.name === name)) {
|
|
@@ -41442,21 +41505,45 @@ function remove() {
|
|
|
41442
41505
|
config.run = runList.filter((r) => r.name !== name);
|
|
41443
41506
|
saveConfig(config);
|
|
41444
41507
|
deleteCommandFile(name);
|
|
41508
|
+
}
|
|
41509
|
+
async function remove(name, options2 = {}) {
|
|
41510
|
+
if (options2.repo !== void 0) {
|
|
41511
|
+
const label2 = await removeRepoRunConfig(
|
|
41512
|
+
name,
|
|
41513
|
+
typeof options2.repo === "string" ? options2.repo : void 0
|
|
41514
|
+
);
|
|
41515
|
+
console.log(`Removed run configuration: ${name} (repo: ${label2})`);
|
|
41516
|
+
return;
|
|
41517
|
+
}
|
|
41518
|
+
removeProjectRunConfig(name);
|
|
41445
41519
|
console.log(`Removed run configuration: ${name}`);
|
|
41446
41520
|
}
|
|
41447
41521
|
|
|
41448
41522
|
// src/commands/run/registerRunSubcommands.ts
|
|
41449
41523
|
function registerRunSubcommands(runCommand) {
|
|
41450
41524
|
runCommand.command("list").description("List configured run commands").option("-v, --verbose", "Show full command details").action((opts) => listRunConfigs(!!opts.verbose));
|
|
41451
|
-
runCommand.command("add").description(
|
|
41525
|
+
runCommand.command("add").description(
|
|
41526
|
+
"Add a new run configuration to assist.yml, or with --repo to the shared db"
|
|
41527
|
+
).argument("<name>", "Name for the run configuration").argument("<command>", "Command to execute").argument("[args...]", "Static args to pass to the command").option(
|
|
41452
41528
|
"--cwd <dir>",
|
|
41453
41529
|
"Working directory (resolved relative to the config file)"
|
|
41530
|
+
).option(
|
|
41531
|
+
"--server [group]",
|
|
41532
|
+
"Mark as a singleton dev server, optionally in a named group (default group: default)"
|
|
41533
|
+
).option("--port <port>", "Display-only port shown on the serving card").option(
|
|
41534
|
+
"--repo [name]",
|
|
41535
|
+
"Write to a repo's override in the shared db, seen by every node, instead of assist.yml (defaults to the current repo; no command file is created)"
|
|
41454
41536
|
).addHelpText(
|
|
41455
41537
|
"after",
|
|
41456
|
-
'\nPositional params can be added to the config manually:\n params:\n - name: env # assist run deploy prod \u2192 appends "prod"\n required: true\n - name: tag\n default: latest'
|
|
41538
|
+
'\nOptions go after <command>. --server and --repo take the next argument as their value unless it starts with "-", so put them last or before another option:\n assist run add dev npm run dev --server --port 3000 --repo\n\nPositional params can be added to the config manually:\n params:\n - name: env # assist run deploy prod \u2192 appends "prod"\n required: true\n - name: tag\n default: latest'
|
|
41457
41539
|
).allowUnknownOption().allowExcessArguments().action(() => add4());
|
|
41458
41540
|
runCommand.command("link").description("Link run configurations from another project's assist.yml").argument("<path>", "Relative path to the linked project").requiredOption("--prefix <prefix>", "Namespace prefix for linked commands").allowUnknownOption().action(() => link2());
|
|
41459
|
-
runCommand.command("remove").description(
|
|
41541
|
+
runCommand.command("remove").description(
|
|
41542
|
+
"Remove a run configuration from assist.yml, or with --repo from the shared db"
|
|
41543
|
+
).argument("<name>", "Name of the run configuration to remove").option(
|
|
41544
|
+
"--repo [name]",
|
|
41545
|
+
"Remove from a repo's override in the shared db instead of assist.yml (defaults to the current repo)"
|
|
41546
|
+
).action((name, opts) => remove(name, opts));
|
|
41460
41547
|
}
|
|
41461
41548
|
|
|
41462
41549
|
// src/commands/run/registerRun.ts
|
|
@@ -48533,7 +48620,7 @@ async function tailscaleLinkUrl(host, port, resolveSuffix = localTailnetSuffix)
|
|
|
48533
48620
|
}
|
|
48534
48621
|
|
|
48535
48622
|
// src/commands/sessions/nodes/parsePort.ts
|
|
48536
|
-
function
|
|
48623
|
+
function parsePort2(flag, value) {
|
|
48537
48624
|
const port = Number(value);
|
|
48538
48625
|
if (!Number.isInteger(port) || port < 1 || port > 65535)
|
|
48539
48626
|
throw new Error(`${flag} must be a port number, got ${value}`);
|
|
@@ -48557,7 +48644,7 @@ async function buildLink(name, url, options2, resolveTailnetSuffix) {
|
|
|
48557
48644
|
throw new Error(
|
|
48558
48645
|
"pass the peer's <url> or --tailscale <host> --port <port>"
|
|
48559
48646
|
);
|
|
48560
|
-
const port =
|
|
48647
|
+
const port = parsePort2("--port", options2.port);
|
|
48561
48648
|
return {
|
|
48562
48649
|
name,
|
|
48563
48650
|
url: await tailscaleLinkUrl(options2.tailscale, port, resolveTailnetSuffix)
|