pilotswarm 0.5.78 → 0.5.79

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.
Files changed (68) hide show
  1. package/package.json +2 -2
  2. package/web/dist/assets/{abnfDiagram-VRR7QNED-C2HGSvvf.js → abnfDiagram-VRR7QNED-JnzyFEpQ.js} +1 -1
  3. package/web/dist/assets/{arc-C3faoYvN.js → arc-DbmQ8F3I.js} +1 -1
  4. package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-CQhrAa5t.js → architectureDiagram-ZJ3FMSHR-CZRogrdZ.js} +1 -1
  5. package/web/dist/assets/{blockDiagram-677ZJIJ3-CVGwBieB.js → blockDiagram-677ZJIJ3-FLYSNzjd.js} +1 -1
  6. package/web/dist/assets/{c4Diagram-LMCZKHZV-CmdrEA77.js → c4Diagram-LMCZKHZV-DTXy7bWt.js} +1 -1
  7. package/web/dist/assets/channel-LAjHmkRd.js +1 -0
  8. package/web/dist/assets/{chunk-2Q5K7J3B-Bm1hu4Hq.js → chunk-2Q5K7J3B-DOSVOEgo.js} +1 -1
  9. package/web/dist/assets/{chunk-32BRIVSS--_hODe_V.js → chunk-32BRIVSS-tsjDjsFF.js} +1 -1
  10. package/web/dist/assets/{chunk-5VM5RSS4-COI5t4m6.js → chunk-5VM5RSS4-DaZTJ7UV.js} +1 -1
  11. package/web/dist/assets/{chunk-EX3LRPZG-BCFKy6tL.js → chunk-EX3LRPZG-BZIwxr1W.js} +1 -1
  12. package/web/dist/assets/{chunk-JWPE2WC7-Ddh7J2Rp.js → chunk-JWPE2WC7-CbJwwWI1.js} +1 -1
  13. package/web/dist/assets/{chunk-MOJQB5TN-DuIGV22R.js → chunk-MOJQB5TN-DdWhRxrJ.js} +1 -1
  14. package/web/dist/assets/{chunk-RYQCIY6F-BNQbAlZV.js → chunk-RYQCIY6F-CoBJ1bQu.js} +1 -1
  15. package/web/dist/assets/{chunk-V7JOEXUC-DmoLjQx9.js → chunk-V7JOEXUC-DoCw3qbM.js} +1 -1
  16. package/web/dist/assets/{chunk-VR4S4FIN-BTOlqom4.js → chunk-VR4S4FIN-LhSIJIbJ.js} +1 -1
  17. package/web/dist/assets/{chunk-XXDRQBXY-DTsc-Dgs.js → chunk-XXDRQBXY-OwyTDqEV.js} +1 -1
  18. package/web/dist/assets/classDiagram-OUVF2IWQ-j5U3y03X.js +1 -0
  19. package/web/dist/assets/classDiagram-v2-EOCWNBFH-j5U3y03X.js +1 -0
  20. package/web/dist/assets/{cose-bilkent-JH36ORCC-QEqZLCny.js → cose-bilkent-JH36ORCC-DiwExO5B.js} +1 -1
  21. package/web/dist/assets/{cynefin-VYW2F7L2-Deleul8f.js → cynefin-VYW2F7L2-DlPow_o-.js} +1 -1
  22. package/web/dist/assets/{cynefinDiagram-TSTJHNR4-D0HrNQd4.js → cynefinDiagram-TSTJHNR4-kViceIcH.js} +1 -1
  23. package/web/dist/assets/{dagre-VKFMJZFB-CLdKXtyZ.js → dagre-VKFMJZFB-CIolycM7.js} +1 -1
  24. package/web/dist/assets/{diagram-FQU43EPY-C0DnCIiG.js → diagram-FQU43EPY-Ba1hSsaH.js} +1 -1
  25. package/web/dist/assets/{diagram-G47NLZAW-DzQa8iDK.js → diagram-G47NLZAW-DY0h7Exh.js} +1 -1
  26. package/web/dist/assets/{diagram-NH7WQ7WH-CazRIZg4.js → diagram-NH7WQ7WH-B0ggIxlN.js} +1 -1
  27. package/web/dist/assets/{diagram-OA4YK3LP-gZanfxjg.js → diagram-OA4YK3LP-Cb47PIN0.js} +1 -1
  28. package/web/dist/assets/{diagram-WEI45ONY-CHoHyTz-.js → diagram-WEI45ONY-CgmpYiQf.js} +1 -1
  29. package/web/dist/assets/{ebnfDiagram-CCIWWBDH-CeHz2Jh9.js → ebnfDiagram-CCIWWBDH-BHFkpAnA.js} +1 -1
  30. package/web/dist/assets/{erDiagram-Q63AITRT-C95MErio.js → erDiagram-Q63AITRT-DulXpshz.js} +1 -1
  31. package/web/dist/assets/{flowDiagram-23GEKE2U-AdgXiTao.js → flowDiagram-23GEKE2U-CFP2X1Y3.js} +1 -1
  32. package/web/dist/assets/{ganttDiagram-NO4QXBWP-D7Ltt8Pp.js → ganttDiagram-NO4QXBWP-DSbXulmW.js} +1 -1
  33. package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-9Xi-xmei.js → gitGraphDiagram-IHSO6WYX-QWcWMkHO.js} +1 -1
  34. package/web/dist/assets/index-D-4yKTtN.css +1 -0
  35. package/web/dist/assets/index-D_g_aBGw.js +24 -0
  36. package/web/dist/assets/{infoDiagram-FWYZ7A6U-fRlxZHtD.js → infoDiagram-FWYZ7A6U-C1szdd2G.js} +1 -1
  37. package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-CEVSVKfj.js → ishikawaDiagram-FXEZZL3T-B5R-GHh8.js} +1 -1
  38. package/web/dist/assets/{journeyDiagram-5HDEW3XC-CJhad1Ay.js → journeyDiagram-5HDEW3XC-1nITzI9i.js} +1 -1
  39. package/web/dist/assets/{kanban-definition-HUTT4EX6-CE6OFSTa.js → kanban-definition-HUTT4EX6-DfjcfNmK.js} +1 -1
  40. package/web/dist/assets/{linear-BuexMwfW.js → linear-CBSELJPC.js} +1 -1
  41. package/web/dist/assets/{mermaid.core-DWYsDHXh.js → mermaid.core-CDSp3stl.js} +4 -4
  42. package/web/dist/assets/{mindmap-definition-LN4V7U3C-6_lFebqE.js → mindmap-definition-LN4V7U3C-DbrLQURX.js} +1 -1
  43. package/web/dist/assets/{papaparse.min-DjlrGi59.js → papaparse.min-D9faucsJ.js} +1 -1
  44. package/web/dist/assets/{pegDiagram-2B236MQR-B1fuWjDp.js → pegDiagram-2B236MQR-jZFBhHxa.js} +1 -1
  45. package/web/dist/assets/{pieDiagram-ENE6RG2P-BWsDDxls.js → pieDiagram-ENE6RG2P-CEjdJERi.js} +1 -1
  46. package/web/dist/assets/{pilotswarm-3GsGwA3r.js → pilotswarm-CieyiPLF.js} +3 -3
  47. package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-CxzBQxBX.js → quadrantDiagram-ABIIQ3AL-CyHHbOnW.js} +1 -1
  48. package/web/dist/assets/{railroadDiagram-RFXS5EU6-Coqs5FXi.js → railroadDiagram-RFXS5EU6-DHD7or3e.js} +1 -1
  49. package/web/dist/assets/{requirementDiagram-TGXJPOKE-v1GaofBK.js → requirementDiagram-TGXJPOKE-BNxxI5PY.js} +1 -1
  50. package/web/dist/assets/{sankeyDiagram-HTMAVEWB-DGaKjdrZ.js → sankeyDiagram-HTMAVEWB-hWvdE0KP.js} +1 -1
  51. package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-UD5oqT-Q.js → sequenceDiagram-DBY2YBRQ-D153e174.js} +1 -1
  52. package/web/dist/assets/{sizeCapture-X5ZJPWSS-ClCMN9Ry.js → sizeCapture-X5ZJPWSS-BPZcvuqb.js} +1 -1
  53. package/web/dist/assets/{stateDiagram-2N3HPSRC-CU96VzpK.js → stateDiagram-2N3HPSRC-DF6aRWKX.js} +1 -1
  54. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BWtZhf63.js +1 -0
  55. package/web/dist/assets/{swimlanes-5IMT3BWC-5pw00Cr8.js → swimlanes-5IMT3BWC-luKrZP4y.js} +2 -2
  56. package/web/dist/assets/swimlanesDiagram-G3AALYLV-SF9cgrQE.js +8 -0
  57. package/web/dist/assets/{timeline-definition-FHXFAJF6-Dfd6fPWH.js → timeline-definition-FHXFAJF6-DfQectOy.js} +1 -1
  58. package/web/dist/assets/{vennDiagram-L72KCM5P-CaJB0ZOh.js → vennDiagram-L72KCM5P-Bg9UPSxw.js} +1 -1
  59. package/web/dist/assets/{wardleyDiagram-EHGQE667-Cau_Q6Bk.js → wardleyDiagram-EHGQE667-CcAQBjJ7.js} +1 -1
  60. package/web/dist/assets/{xychartDiagram-FW5EYKEG-DTUEy024.js → xychartDiagram-FW5EYKEG-B1eTfWwA.js} +1 -1
  61. package/web/dist/index.html +3 -3
  62. package/web/dist/assets/channel-CTmDTaW4.js +0 -1
  63. package/web/dist/assets/classDiagram-OUVF2IWQ-0JetCpCm.js +0 -1
  64. package/web/dist/assets/classDiagram-v2-EOCWNBFH-0JetCpCm.js +0 -1
  65. package/web/dist/assets/index-C7_15DMS.css +0 -1
  66. package/web/dist/assets/index-IxnOJbWb.js +0 -24
  67. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-TNMXnnTc.js +0 -1
  68. package/web/dist/assets/swimlanesDiagram-G3AALYLV-BOvR3DN_.js +0 -8
@@ -95,9 +95,9 @@ ${r.validation.errors.map(o=>`[${o.code}] ${o.message}`).join(`
95
95
  `)){const l=o.split(`
96
96
  `);for(const c of l)t.push({kind:"runs",runs:[{...i,text:c}]});continue}t.push({kind:"runs",runs:[{...i,text:o}]});continue}t.push({kind:"runs",runs:r.map(i=>({...i,text:s(i?.text||"")}))});continue}if(Array.isArray(n)){t.push({kind:"runs",runs:n});continue}if(n&&typeof n=="object"&&typeof n.text=="string"){const r=s(n.text);if(r.includes(`
97
97
  `)){const i=r.split(`
98
- `);for(const o of i)t.push({kind:"text",...n,text:o});continue}t.push({kind:"text",...n,text:r});continue}t.push({kind:"text",...n})}return t}function Ge(e,t){if(t)return e?.tui?.[t]||e?.terminal?.[t]||e?.page?.[t]||t}function ju(e=[]){return e.map(t=>String(t?.text||"")).join("")}function Jl(e){return Array.isArray(e)?ju(e):String(e||"")}function ec(e,t=40){if(!Array.isArray(e)){const i=String(e||"");return[{text:i.length>t?`${i.slice(0,t-1)}…`:i,color:"white",bold:!0}]}const s=[],n=i=>/^[\s·—-]+$/.test(String(i?.text||""));let r=Math.max(8,t);for(const i of e){if(r<=0)break;if(i?.color==="gray"&&s.length>0&&!n(i))continue;const l=String(i?.text||"");if(!l)continue;if(n(i)&&r<l.length+2)break;const c=l.length>r&&r>1?`${l.slice(0,r-1)}…`:l.slice(0,r);c&&(s.push({...i,text:c}),r-=c.length)}for(;s.length>0&&n(s[s.length-1]);)s.pop();return s.length>0?s:e}function Sv(e){typeof document>"u"||(e?document.documentElement.dataset.psTouch="1":delete document.documentElement.dataset.psTouch)}function vv(e){const t=Pt(e);if(!t||typeof document>"u")return;const s=document.documentElement;s.style.setProperty("--ps-page-background",t.page.background),s.style.setProperty("--ps-page-foreground",t.page.foreground),s.style.setProperty("--ps-surface",t.tui.surface),s.style.setProperty("--ps-background",t.tui.background),s.style.setProperty("--ps-foreground",t.tui.foreground),s.style.setProperty("--ps-muted",t.tui.gray),s.style.setProperty("--ps-border",t.tui.border||t.tui.gray),s.style.setProperty("--ps-selection-background",t.tui.selectionBackground),s.style.setProperty("--ps-selection-foreground",t.tui.selectionForeground),s.style.setProperty("--ps-highlight-background",t.tui.activeHighlightBackground),s.style.setProperty("--ps-highlight-foreground",t.tui.activeHighlightForeground),s.style.setProperty("--ps-modal-backdrop",t.page.modalBackdrop),s.style.setProperty("--ps-modal-background",t.page.modalBackground),s.style.setProperty("--ps-modal-border",t.page.modalBorder),s.style.setProperty("--ps-modal-foreground",t.page.modalForeground),s.style.setProperty("--ps-modal-muted",t.page.modalMuted),s.style.setProperty("--ps-modal-selected-background",t.page.modalSelectedBackground),s.style.setProperty("--ps-modal-selected-border",t.page.modalSelectedBorder),s.style.setProperty("--ps-modal-selected-foreground",t.page.modalSelectedForeground),s.style.setProperty("--ps-accent",t.tui.cyan),s.style.setProperty("--ps-success",t.tui.green),s.style.setProperty("--ps-warning",t.tui.yellow),s.style.setProperty("--ps-danger",t.tui.red),s.dataset.psTheme=t.id}function tc(e,t=!1){const[s,n]=a.useState({width:0,height:0});return a.useLayoutEffect(()=>{if(t)return;const r=e.current;if(!r)return;const i=()=>{n({width:r.clientWidth,height:r.clientHeight})};i();const o=new ResizeObserver(i);return o.observe(r),window.addEventListener("resize",i),()=>{o.disconnect(),window.removeEventListener("resize",i)}},[e,t]),s}function wv(e){const t=Math.max(320,e.width||window.innerWidth||1280),s=Math.max(320,e.height||window.innerHeight||800);return{width:Math.max(40,Math.floor(t/Mu)),height:Math.max(18,Math.floor(s/KS))}}function za(e){if(!e)return 0;const t=Math.max(0,e.scrollHeight-e.clientHeight);return Math.max(0,t-e.scrollTop)}function Ev(e){return za(e)<=Ru}function kv(e,t,s,n=!1){if(!e)return 0;const r=Math.max(0,e.scrollHeight-e.clientHeight);if(n)return Math.max(0,Math.min(e.scrollTop,r));const i=Math.max(0,Number(t)||0)*Ct;return s==="bottom"?Math.max(0,r-i):Math.min(r,i)}function Iv(e){return e?e.kind==="runs"?e.runs?.map(t=>t?.text||"").join("")||"":e.kind==="assistantPreview"?`assistant:${e.previewKey||e.messageId||e.id||""}`:`${e.kind||"text"}:${e.text||e.value||e.id||""}`:""}function sc(e,t=!1){return(t?e.slice(-8):e.slice(0,8)).map(Iv).join("␞")}function nc(e,t,s){if(!s)return!1;for(let n=t?.nodeType===1?t:t?.parentElement;n&&n!==e;n=n.parentElement){const r=n.scrollHeight-n.clientHeight;if(!(r<=1||!/^(auto|scroll)$/.test(getComputedStyle(n).overflowY))&&(s<0?n.scrollTop>1:n.scrollTop<r-1))return!0}return!1}function xv(e,t,s,n,r,i,{stickyBottom:o=!1,historyPullEnabled:l=!1,historySessionId:c=null}={}){const d=a.useMemo(()=>it(t),[t]),p=a.useRef(null),u=a.useRef({scrollMode:n,scrollOffset:s}),m=a.useRef(null),f=a.useRef(null);a.useEffect(()=>()=>{f.current=null},[]);const[h,g]=a.useState(0),[b,y]=a.useState(null);a.useEffect(()=>{g(0)},[c]);const v=a.useRef({touching:!1,lastUserScrollAt:0,lastDispatchedOffset:null}),S=a.useRef({width:null,height:null}),[w,E]=a.useState(0);a.useLayoutEffect(()=>{const k=e.current;if(!k||typeof ResizeObserver>"u")return;S.current={width:k.clientWidth,height:k.clientHeight};const _=new ResizeObserver(()=>{const $={width:k.clientWidth,height:k.clientHeight},G=S.current;$.width===G.width&&$.height===G.height||(S.current=$,E(D=>D+1))});return _.observe(k),()=>_.disconnect()},[e]),a.useLayoutEffect(()=>{const k=e.current;if(!k)return;const _=u.current,$=sc(d),G=sc(d,!0),D=m.current;let W=f.current;const N=i.getState().sessions.activeSessionId;W&&W.sessionId!==N&&(f.current=null,W=null);const j=i.getState().history.bySessionId.get(N)?.events?.[0]?.seq,B=W&&!W.applied&&j<W.oldestSeq;let V=null;if(B){const ge=W.anchor,X=ge?.element.isConnected&&ge.element.textContent===ge.text?ge.element:[...k.children].find(me=>me.textContent===ge?.text),ie=X?X.getBoundingClientRect().top-ge.top:k.scrollHeight-W.height;V=Math.max(0,Math.min(k.scrollHeight-k.clientHeight,k.scrollTop+ie-Ct)),W.applied=!0,W.target=V,W.releaseAt=performance.now()+Xs}const Q=v.current,ee=typeof performance<"u"?performance.now():Date.now(),Z=Q.touching||ee-(Q.lastUserScrollAt||0)<XS,se=Q.lastDispatchedOffset!=null&&Math.abs((Number(s)||0)-Q.lastDispatchedOffset)<2,Se=o&&n==="top"&&_?.scrollMode==="top"&&_?.scrollOffset===s,ue=!W&&o&&D?.lastLine===G&&D?.firstLine!==$&&k.scrollHeight>D.scrollHeight&&(Se||k.scrollTop<=Mt);if(!B&&!ue&&Z&&n===_?.scrollMode&&(s===_?.scrollOffset||se)){u.current={scrollMode:n,scrollOffset:s},m.current={firstLine:$,lastLine:G,scrollHeight:k.scrollHeight};return}const ce=B?V:ue?Math.max(0,Math.min(k.scrollTop+(k.scrollHeight-D.scrollHeight),k.scrollHeight-k.clientHeight)):kv(k,s,n,Se);if(Math.abs(k.scrollTop-ce)>Mt){const ge={target:ce};p.current=ge,k.scrollTop=ce,window.requestAnimationFrame(()=>{p.current===ge&&(p.current=null)})}if((B||ue)&&r&&typeof i.updatePaneScrollFromViewport=="function"){const ge=Math.max(0,ce)/Ct;v.current.lastDispatchedOffset=ge,i.updatePaneScrollFromViewport(r,ge,{atBottom:!1})}u.current={scrollMode:n,scrollOffset:s},m.current={firstLine:$,lastLine:G,scrollHeight:k.scrollHeight}},[d,e,n,s,o,w]);const I=Cv(k=>{i.dispatch({type:"ui/scroll",pane:r,offset:k})}),P=a.useCallback(()=>{const k=e.current;if(!k||!r)return;const _=f.current;if(_?.applied&&performance.now()<=_.releaseAt&&k.scrollTop<_.target){k.scrollTop=_.target,_.releaseAt=performance.now()+Xs;return}_?.applied&&performance.now()>_.releaseAt&&(f.current=null);const $=p.current;if($){if(Math.abs(k.scrollTop-$.target)<=Mt)return;p.current=null}v.current.lastUserScrollAt=typeof performance<"u"?performance.now():Date.now();const G=Math.max(0,k.scrollHeight-k.clientHeight);if(G<=0)return;if(o&&typeof i.updatePaneScrollFromViewport=="function"){const W=Math.max(0,k.scrollTop)/Ct;v.current.lastDispatchedOffset=W,i.updatePaneScrollFromViewport(r,W,{atBottom:Ev(k)}),r==="chat"&&k.scrollTop<=Mt&&i.armChatTopHistoryLoad?.();return}const D=n==="bottom"?Math.max(0,G-k.scrollTop):Math.max(0,k.scrollTop);v.current.lastDispatchedOffset=D/Ct,I(D/Ct),r==="chat"&&n==="bottom"&&k.scrollTop<=Mt&&i.armChatTopHistoryLoad?.()},[i,I,r,e,n,o]),C=a.useCallback(()=>{const k=e.current,_=i.getState(),$=_.sessions.activeSessionId;if(!k||!$||!l||f.current)return;const G=k.getBoundingClientRect().top,D=[...k.children].find(j=>j.textContent?.trim()&&j.getBoundingClientRect().bottom>G+6),W={sessionId:$,oldestSeq:_.history.bySessionId.get($)?.events?.[0]?.seq,height:k.scrollHeight,applied:!1,anchor:D?{element:D,text:D.textContent,top:D.getBoundingClientRect().top}:null};f.current=W;const N=i.handleChatTopHistoryScrollIntent?.((k.scrollHeight-k.clientHeight)/Ct,{force:!0,preserveDomAnchor:!0,onLoadStarted:()=>y($)});Promise.resolve(N).catch(()=>{}).finally(()=>{if(y(B=>B===$?null:B),f.current!==W)return;i.getState().history.bySessionId.get($)?.events?.[0]?.seq<W.oldestSeq?E(B=>B+1):f.current=null})},[i,l,e]),A=a.useCallback(k=>{const _=e.current;if(!_||r!=="chat"||!k.deltaY||k.ctrlKey||nc(_,k.target,k.deltaY))return;const $=f.current;if($&&k.deltaY>0)f.current=null;else if($){if(!$.applied||performance.now()<=$.releaseAt){$.releaseAt=performance.now()+Xs,k.preventDefault();return}f.current=null}k.deltaY>=0||_.scrollTop>Mt||(k.preventDefault(),C())},[r,e,C]),R=a.useRef({startY:null,lastY:null,distance:0}),T=a.useCallback(k=>{v.current.touching=!0,f.current?.applied&&(f.current=null);const _=e.current;R.current={startY:k.touches?.length===1&&l&&b!==c&&r==="chat"&&_?.scrollTop<=Mt?k.touches?.[0]?.clientY??null:null,lastY:k.touches?.[0]?.clientY??null,distance:0}},[l,c,b,r,e]),L=a.useCallback(()=>{v.current.touching=!1,v.current.lastUserScrollAt=typeof performance<"u"?performance.now():Date.now(),f.current?.applied&&(f.current.releaseAt=performance.now()+Xs);const k=R.current.distance;R.current={startY:null,lastY:null,distance:0},g(0),k>=Lu&&e.current?.scrollTop<=Mt&&C()},[e,C]),U=a.useCallback(()=>{v.current.touching=!1,R.current={startY:null,lastY:null,distance:0},g(0)},[]),M=a.useCallback(k=>{const _=e.current,$=R.current;if(!_||r!=="chat"||k.touches?.length!==1)return;const G=k.touches[0].clientY,D=$.lastY==null?0:$.lastY-G;if($.lastY=G,nc(_,k.target,D)){$.startY!=null&&($.startY=G),$.distance=0,g(0);return}if(f.current){f.current.releaseAt=performance.now()+Xs,k.preventDefault();return}$.startY!=null&&(_.scrollTop>Mt||($.distance=Math.min(Ou,Math.max(0,G-$.startY)),g($.distance),$.distance>0&&k.preventDefault()))},[r,e]);return a.useEffect(()=>{const k=e.current;if(k)return k.addEventListener("wheel",A,{passive:!1}),k.addEventListener("touchmove",M,{passive:!1}),()=>{k.removeEventListener("wheel",A),k.removeEventListener("touchmove",M)}},[e,A,M]),{normalizedLines:d,onScroll:P,onTouchStart:T,onTouchEnd:L,onTouchCancel:U,topPullDistance:h,loadingOlderHistory:b===c}}function et({runs:e,theme:t}){return a.createElement(a.Fragment,null,(e||[]).map((s,n,r)=>{const i=n>0&&!!ur(r[n-1]?.href),o={color:Ge(t,s.color),backgroundColor:Ge(t,s.backgroundColor),fontWeight:s.bold?700:400,textDecoration:s.underline?"underline":"none"};if(s?.trailingRule)return a.createElement("span",{key:`${n}:rule`,className:"ps-line-trailing-rule",style:o},s.text||"");const l=String(s?.href||"").trim(),c=/^https?:\/\//i.test(l),d=ur(l);if(d)return a.createElement(Xu,{key:n,artifactRef:d,style:o});const p=i?Ku(s.text||""):s.text||"";return i&&!p?null:c?a.createElement("a",{key:n,className:"ps-md-link",href:l,target:"_blank",rel:"noreferrer",style:o},p):a.createElement("span",{key:n,className:s?.role==="streamingCaret"?"ps-streaming-caret":void 0,style:o},p)}))}function Gu({line:e,theme:t}){const[s,n]=a.useState(!1),r=String(e?.body||"").trim(),i=`ps-system-notice${e?.liveReasoning||e?.streamReasoning?" is-live-reasoning":""}`;return a.createElement("details",{className:i,onToggle:o=>n(o.currentTarget.open)},a.createElement("summary",{className:"ps-system-notice-summary",style:{color:Ge(t,e?.color)||"var(--ps-muted)"}},a.createElement("span",{className:"ps-system-notice-summary-text"},e?.text||"System notice")),r&&s?a.createElement("div",{className:"ps-system-notice-body"},a.createElement(Za,{content:r,theme:t})):null)}function Av({calls:e}){const t=e[e.length-1]||{},s=t.status==="Called"||t.status==="Started",n=e.some(f=>f.status==="Failed"),[r,i]=a.useState(s),o=a.useRef(null),l=a.useRef(!0),c=new Set(e.map(f=>f.category||"Tool")),d=c.size===1&&c.has("Tool")?`${e.length} tool ${e.length===1?"call":"calls"}`:c.size===1&&c.has("Agent")?`${e.length} agent ${e.length===1?"activity":"activities"}`:`${e.length} activities`,p=String(t.text||t.category||"activity").split(" — ")[0],u=s?"Working":n?"Failed":"Done",m=`${t.callKey||""}:${t.status||""}:${String(t.body||"").length}`;return a.useLayoutEffect(()=>{const f=o.current;r&&f&&l.current&&(f.scrollTop=f.scrollHeight)},[r,e.length,m]),a.createElement("details",{className:"ps-native-tasks ps-activity-run",open:r,onToggle:f=>i(f.currentTarget.open)},a.createElement("summary",{className:"ps-native-tasks-header ps-activity-run-summary"},a.createElement("span",{className:"ps-native-tasks-title"},a.createElement("span",{className:"ps-native-task-branch","aria-hidden":!0},"⌘"),d),a.createElement("span",{className:"ps-activity-run-latest",title:t.text||""},`latest: ${p}`),a.createElement("span",{className:`ps-activity-run-status${n?" is-failed":""}`},u),a.createElement("span",{className:"ps-activity-run-chevron","aria-hidden":!0},"›")),a.createElement("div",{ref:o,className:"ps-activity-run-viewport",role:"region","aria-label":`${d} activity log`,tabIndex:0,onScroll:f=>{f.stopPropagation(),l.current=za(f.currentTarget)<=24},onWheel:f=>{f.deltaY<0&&(l.current=!1)},onTouchStart:()=>{l.current=!1}},e.map(f=>a.createElement(Pu,{key:f.callKey,line:f}))),a.createElement("div",{className:"ps-activity-run-footer"},`Showing ${e.length} ${e.length===1?"entry":"entries"} · Scroll for earlier activity`))}function Nv({line:e,theme:t}){const s=String(e?.canvasActionPayload||"").trim(),n=e?.canvasActionName||"action",r=String(e?.canvasActionDetail||"").trim(),i=String(e?.canvasActionTime||"").trim();return a.createElement("details",{className:"ps-system-notice ps-canvas-action"},a.createElement("summary",{className:"ps-system-notice-summary ps-canvas-action-summary",style:{color:Ge(t,"gray")||"var(--ps-muted)"}},a.createElement("span",{className:"ps-canvas-action-tag"},"canvas"),a.createElement("span",{className:"ps-system-notice-summary-text"},`${n}${r?` — ${r}`:""}`),i?a.createElement("span",{className:"ps-canvas-action-time"},i):null),s?a.createElement("div",{className:"ps-system-notice-body"},a.createElement("pre",{className:"ps-canvas-action-payload"},s)):null)}function Cv(e){const t=a.useRef(0),s=a.useRef(null),n=a.useRef(e);return n.current=e,a.useEffect(()=>()=>{t.current&&cancelAnimationFrame(t.current)},[]),a.useCallback((...r)=>{s.current=r,!t.current&&(t.current=requestAnimationFrame(()=>{t.current=0;const i=s.current;s.current=null,i&&n.current(...i)}))},[])}const dt=a.memo(function({line:t,theme:s,className:n=""}){const r=n?`ps-line ${n}`:"ps-line";return t?t.kind==="systemNotice"?a.createElement(Gu,{line:t,theme:s}):t.canvasAction?a.createElement(Nv,{line:t,theme:s}):t.kind==="runs"?a.createElement("div",{className:r},a.createElement(et,{runs:t.runs,theme:s})):a.createElement("div",{className:r,style:{color:Ge(s,t.color),backgroundColor:Ge(s,t.backgroundColor),fontWeight:t.bold?700:400,textDecoration:t.underline?"underline":"none"}},t.text||" "):a.createElement("div",{className:r}," ")});function ft(e){return e?e.kind==="runs"?ju(e.runs):String(e.text||""):""}function Wu(e,t,s,n){const r=a.useRef(!1);return a.useLayoutEffect(()=>{const i=e.current;if(!i||!s)return;const o=Math.max(0,i.scrollHeight-i.clientHeight),l=Math.min(o,Math.max(0,Number(t)||0)*Ct);Math.abs(i.scrollTop-l)>2&&(r.current=!0,i.scrollTop=l,window.requestAnimationFrame(()=>{r.current=!1}))},[e,t,s]),a.useCallback(i=>{if(r.current)return;const o=e.current;!o||!s||i&&i.target!==o||o.scrollHeight<=o.clientHeight||n.dispatch({type:"ui/scroll",pane:s,offset:Math.max(0,o.scrollTop)/Ct})},[n,s,e])}const Tv={js:"js",jsx:"js",mjs:"js",cjs:"js",javascript:"js",ts:"js",tsx:"js",typescript:"js",json:"json",jsonc:"json",py:"python",python:"python",sh:"shell",bash:"shell",zsh:"shell",shell:"shell",console:"shell",sql:"sql",postgres:"sql",postgresql:"sql",psql:"sql",rs:"rust",rust:"rust",go:"go",golang:"go",yaml:"yaml",yml:"yaml",css:"css",scss:"css"},Pv=new Set(["diff","patch","udiff"]),Mv=/\.(patch|diff)$/i,Ka=/^image\/(png|jpe?g|gif|webp|avif|bmp|svg\+xml|x-icon|vnd\.microsoft\.icon)$/i,Va=/\.(png|jpe?g|gif|webp|avif|bmp|svg|ico)$/i,_v={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",bmp:"image/bmp",svg:"image/svg+xml",ico:"image/x-icon"};function $v(e){const t=/\.([a-z0-9]+)$/i.exec(String(e||""));return t&&_v[t[1].toLowerCase()]||null}const Rv={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",json:"json",jsonl:"json",py:"python",rs:"rust",go:"go",java:"java",rb:"ruby",sh:"bash",bash:"bash",zsh:"bash",yml:"yaml",yaml:"yaml",toml:"toml",sql:"sql",css:"css",html:"html",xml:"xml"};function Lv(e){const t=String(e||"");if(!/^---[ \t]*\r?\n/.test(t))return t;const s=/\r?\n---[ \t]*(\r?\n|$)/.exec(t.slice(3));return s?t.slice(3+s.index+s[0].length):t}const Ov=/\.(html?|xhtml)$/i;function qu(e,t){return Ov.test(String(e||""))?!0:/^(text\/html|application\/xhtml\+xml)$/i.test(String(t||"").trim().split(";")[0])}const Fv=/\.(csv|tsv)$/i;function zu(e,t){return Fv.test(String(e||""))?!0:/^text\/(csv|tab-separated-values)$/i.test(String(t||"").trim())}const di=2e3;function Dv(e){const t=String(e??"");return/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function Bv({content:e,filename:t}){const[s,n]=a.useState(null),r=a.useRef(null),i=a.useRef(null),o=a.useRef(null);a.useEffect(()=>{let w=!1;return n(null),Tu(()=>import("./papaparse.min-DjlrGi59.js").then(E=>E.p),[]).then(E=>{if(w)return;const I=E.default||E,P=/\.tsv$/i.test(String(t||""))?" ":"",C=I.parse(String(e||"").trim(),{delimiter:P,skipEmptyLines:"greedy"});n({rows:C.data||[],errors:C.errors||[]})}).catch(()=>{w||n({rows:null,errors:[{message:"parser unavailable"}]})}),()=>{w=!0}},[e,t]),a.useEffect(()=>{const w=()=>{o.current=null};return window.addEventListener("mouseup",w),()=>window.removeEventListener("mouseup",w)},[]);const l=a.useCallback((w,E)=>{if(!w||!E)return;const I=window.getSelection();if(!I)return;const P=!!(w.compareDocumentPosition(E)&Node.DOCUMENT_POSITION_PRECEDING),C=document.createRange();C.setStartBefore(P?E:w),C.setEndAfter(P?w:E),I.removeAllRanges(),I.addRange(C)},[]),c=w=>w.target?.closest?w.target.closest("td,th"):null,d=a.useCallback(w=>{if(w.button!==0)return;const E=c(w);E&&(w.preventDefault(),r.current?.focus(),o.current=E,l(E,E))},[l]),p=a.useCallback(w=>{if(!o.current||!(w.buttons&1))return;const E=c(w);E&&l(o.current,E)},[l]),u=a.useCallback(w=>{if(!(w.metaKey||w.ctrlKey)||w.altKey||w.key!=="a"&&w.key!=="A")return;const E=i.current,I=window.getSelection();if(!E||!I)return;w.preventDefault(),w.stopPropagation();const P=document.createRange();P.selectNodeContents(E),I.removeAllRanges(),I.addRange(P)},[]),m=a.useCallback(w=>{const E=i.current,I=window.getSelection();if(!E||!I||I.rangeCount===0)return;const P=I.getRangeAt(0),C=new Map;for(const A of E.querySelectorAll("th,td")){if(!P.intersectsNode(A))continue;const R=A.parentElement;C.has(R)||C.set(R,[]),C.get(R).push(Dv(A.textContent))}C.size!==0&&(w.clipboardData.setData("text/plain",Array.from(C.values(),A=>A.join(" ")).join(`
98
+ `);for(const o of i)t.push({kind:"text",...n,text:o});continue}t.push({kind:"text",...n,text:r});continue}t.push({kind:"text",...n})}return t}function Ge(e,t){if(t)return e?.tui?.[t]||e?.terminal?.[t]||e?.page?.[t]||t}function ju(e=[]){return e.map(t=>String(t?.text||"")).join("")}function Jl(e){return Array.isArray(e)?ju(e):String(e||"")}function ec(e,t=40){if(!Array.isArray(e)){const i=String(e||"");return[{text:i.length>t?`${i.slice(0,t-1)}…`:i,color:"white",bold:!0}]}const s=[],n=i=>/^[\s·—-]+$/.test(String(i?.text||""));let r=Math.max(8,t);for(const i of e){if(r<=0)break;if(i?.color==="gray"&&s.length>0&&!n(i))continue;const l=String(i?.text||"");if(!l)continue;if(n(i)&&r<l.length+2)break;const c=l.length>r&&r>1?`${l.slice(0,r-1)}…`:l.slice(0,r);c&&(s.push({...i,text:c}),r-=c.length)}for(;s.length>0&&n(s[s.length-1]);)s.pop();return s.length>0?s:e}function Sv(e){typeof document>"u"||(e?document.documentElement.dataset.psTouch="1":delete document.documentElement.dataset.psTouch)}function vv(e){const t=Pt(e);if(!t||typeof document>"u")return;const s=document.documentElement;s.style.setProperty("--ps-page-background",t.page.background),s.style.setProperty("--ps-page-foreground",t.page.foreground),s.style.setProperty("--ps-surface",t.tui.surface),s.style.setProperty("--ps-background",t.tui.background),s.style.setProperty("--ps-foreground",t.tui.foreground),s.style.setProperty("--ps-muted",t.tui.gray),s.style.setProperty("--ps-border",t.tui.border||t.tui.gray),s.style.setProperty("--ps-selection-background",t.tui.selectionBackground),s.style.setProperty("--ps-selection-foreground",t.tui.selectionForeground),s.style.setProperty("--ps-highlight-background",t.tui.activeHighlightBackground),s.style.setProperty("--ps-highlight-foreground",t.tui.activeHighlightForeground),s.style.setProperty("--ps-modal-backdrop",t.page.modalBackdrop),s.style.setProperty("--ps-modal-background",t.page.modalBackground),s.style.setProperty("--ps-modal-border",t.page.modalBorder),s.style.setProperty("--ps-modal-foreground",t.page.modalForeground),s.style.setProperty("--ps-modal-muted",t.page.modalMuted),s.style.setProperty("--ps-modal-selected-background",t.page.modalSelectedBackground),s.style.setProperty("--ps-modal-selected-border",t.page.modalSelectedBorder),s.style.setProperty("--ps-modal-selected-foreground",t.page.modalSelectedForeground),s.style.setProperty("--ps-accent",t.tui.cyan),s.style.setProperty("--ps-success",t.tui.green),s.style.setProperty("--ps-warning",t.tui.yellow),s.style.setProperty("--ps-danger",t.tui.red),s.dataset.psTheme=t.id}function tc(e,t=!1){const[s,n]=a.useState({width:0,height:0});return a.useLayoutEffect(()=>{if(t)return;const r=e.current;if(!r)return;const i=()=>{n({width:r.clientWidth,height:r.clientHeight})};i();const o=new ResizeObserver(i);return o.observe(r),window.addEventListener("resize",i),()=>{o.disconnect(),window.removeEventListener("resize",i)}},[e,t]),s}function wv(e){const t=Math.max(320,e.width||window.innerWidth||1280),s=Math.max(320,e.height||window.innerHeight||800);return{width:Math.max(40,Math.floor(t/Mu)),height:Math.max(18,Math.floor(s/KS))}}function za(e){if(!e)return 0;const t=Math.max(0,e.scrollHeight-e.clientHeight);return Math.max(0,t-e.scrollTop)}function Ev(e){return za(e)<=Ru}function kv(e,t,s,n=!1){if(!e)return 0;const r=Math.max(0,e.scrollHeight-e.clientHeight);if(n)return Math.max(0,Math.min(e.scrollTop,r));const i=Math.max(0,Number(t)||0)*Ct;return s==="bottom"?Math.max(0,r-i):Math.min(r,i)}function Iv(e){return e?e.kind==="runs"?e.runs?.map(t=>t?.text||"").join("")||"":e.kind==="assistantPreview"?`assistant:${e.previewKey||e.messageId||e.id||""}`:`${e.kind||"text"}:${e.text||e.value||e.id||""}`:""}function sc(e,t=!1){return(t?e.slice(-8):e.slice(0,8)).map(Iv).join("␞")}function nc(e,t,s){if(!s)return!1;for(let n=t?.nodeType===1?t:t?.parentElement;n&&n!==e;n=n.parentElement){const r=n.scrollHeight-n.clientHeight;if(!(r<=1||!/^(auto|scroll)$/.test(getComputedStyle(n).overflowY))&&(s<0?n.scrollTop>1:n.scrollTop<r-1))return!0}return!1}function xv(e,t,s,n,r,i,{stickyBottom:o=!1,historyPullEnabled:l=!1,historySessionId:c=null}={}){const d=a.useMemo(()=>it(t),[t]),p=a.useRef(null),u=a.useRef({scrollMode:n,scrollOffset:s}),m=a.useRef(null),f=a.useRef(null);a.useEffect(()=>()=>{f.current=null},[]);const[h,g]=a.useState(0),[b,y]=a.useState(null);a.useEffect(()=>{g(0)},[c]);const v=a.useRef({touching:!1,lastUserScrollAt:0,lastDispatchedOffset:null}),S=a.useRef({width:null,height:null}),[w,E]=a.useState(0);a.useLayoutEffect(()=>{const k=e.current;if(!k||typeof ResizeObserver>"u")return;S.current={width:k.clientWidth,height:k.clientHeight};const _=new ResizeObserver(()=>{const $={width:k.clientWidth,height:k.clientHeight},G=S.current;$.width===G.width&&$.height===G.height||(S.current=$,E(D=>D+1))});return _.observe(k),()=>_.disconnect()},[e]),a.useLayoutEffect(()=>{const k=e.current;if(!k)return;const _=u.current,$=sc(d),G=sc(d,!0),D=m.current;let W=f.current;const N=i.getState().sessions.activeSessionId;W&&W.sessionId!==N&&(f.current=null,W=null);const j=i.getState().history.bySessionId.get(N)?.events?.[0]?.seq,B=W&&!W.applied&&j<W.oldestSeq;let V=null;if(B){const ge=W.anchor,X=ge?.element.isConnected&&ge.element.textContent===ge.text?ge.element:[...k.children].find(me=>me.textContent===ge?.text),ie=X?X.getBoundingClientRect().top-ge.top:k.scrollHeight-W.height;V=Math.max(0,Math.min(k.scrollHeight-k.clientHeight,k.scrollTop+ie-Ct)),W.applied=!0,W.target=V,W.releaseAt=performance.now()+Xs}const Q=v.current,ee=typeof performance<"u"?performance.now():Date.now(),Z=Q.touching||ee-(Q.lastUserScrollAt||0)<XS,se=Q.lastDispatchedOffset!=null&&Math.abs((Number(s)||0)-Q.lastDispatchedOffset)<2,Se=o&&n==="top"&&_?.scrollMode==="top"&&_?.scrollOffset===s,ue=!W&&o&&D?.lastLine===G&&D?.firstLine!==$&&k.scrollHeight>D.scrollHeight&&(Se||k.scrollTop<=Mt);if(!B&&!ue&&Z&&n===_?.scrollMode&&(s===_?.scrollOffset||se)){u.current={scrollMode:n,scrollOffset:s},m.current={firstLine:$,lastLine:G,scrollHeight:k.scrollHeight};return}const ce=B?V:ue?Math.max(0,Math.min(k.scrollTop+(k.scrollHeight-D.scrollHeight),k.scrollHeight-k.clientHeight)):kv(k,s,n,Se);if(Math.abs(k.scrollTop-ce)>Mt){const ge={target:ce};p.current=ge,k.scrollTop=ce,window.requestAnimationFrame(()=>{p.current===ge&&(p.current=null)})}if((B||ue)&&r&&typeof i.updatePaneScrollFromViewport=="function"){const ge=Math.max(0,ce)/Ct;v.current.lastDispatchedOffset=ge,i.updatePaneScrollFromViewport(r,ge,{atBottom:!1})}u.current={scrollMode:n,scrollOffset:s},m.current={firstLine:$,lastLine:G,scrollHeight:k.scrollHeight}},[d,e,n,s,o,w]);const I=Cv(k=>{i.dispatch({type:"ui/scroll",pane:r,offset:k})}),P=a.useCallback(()=>{const k=e.current;if(!k||!r)return;const _=f.current;if(_?.applied&&performance.now()<=_.releaseAt&&k.scrollTop<_.target){k.scrollTop=_.target,_.releaseAt=performance.now()+Xs;return}_?.applied&&performance.now()>_.releaseAt&&(f.current=null);const $=p.current;if($){if(Math.abs(k.scrollTop-$.target)<=Mt)return;p.current=null}v.current.lastUserScrollAt=typeof performance<"u"?performance.now():Date.now();const G=Math.max(0,k.scrollHeight-k.clientHeight);if(G<=0)return;if(o&&typeof i.updatePaneScrollFromViewport=="function"){const W=Math.max(0,k.scrollTop)/Ct;v.current.lastDispatchedOffset=W,i.updatePaneScrollFromViewport(r,W,{atBottom:Ev(k)}),r==="chat"&&k.scrollTop<=Mt&&i.armChatTopHistoryLoad?.();return}const D=n==="bottom"?Math.max(0,G-k.scrollTop):Math.max(0,k.scrollTop);v.current.lastDispatchedOffset=D/Ct,I(D/Ct),r==="chat"&&n==="bottom"&&k.scrollTop<=Mt&&i.armChatTopHistoryLoad?.()},[i,I,r,e,n,o]),C=a.useCallback(()=>{const k=e.current,_=i.getState(),$=_.sessions.activeSessionId;if(!k||!$||!l||f.current)return;const G=k.getBoundingClientRect().top,D=[...k.children].find(j=>j.textContent?.trim()&&j.getBoundingClientRect().bottom>G+6),W={sessionId:$,oldestSeq:_.history.bySessionId.get($)?.events?.[0]?.seq,height:k.scrollHeight,applied:!1,anchor:D?{element:D,text:D.textContent,top:D.getBoundingClientRect().top}:null};f.current=W;const N=i.handleChatTopHistoryScrollIntent?.((k.scrollHeight-k.clientHeight)/Ct,{force:!0,preserveDomAnchor:!0,onLoadStarted:()=>y($)});Promise.resolve(N).catch(()=>{}).finally(()=>{if(y(B=>B===$?null:B),f.current!==W)return;i.getState().history.bySessionId.get($)?.events?.[0]?.seq<W.oldestSeq?E(B=>B+1):f.current=null})},[i,l,e]),A=a.useCallback(k=>{const _=e.current;if(!_||r!=="chat"||!k.deltaY||k.ctrlKey||nc(_,k.target,k.deltaY))return;const $=f.current;if($&&k.deltaY>0)f.current=null;else if($){if(!$.applied||performance.now()<=$.releaseAt){$.releaseAt=performance.now()+Xs,k.preventDefault();return}f.current=null}k.deltaY>=0||_.scrollTop>Mt||(k.preventDefault(),C())},[r,e,C]),R=a.useRef({startY:null,lastY:null,distance:0}),T=a.useCallback(k=>{v.current.touching=!0,f.current?.applied&&(f.current=null);const _=e.current;R.current={startY:k.touches?.length===1&&l&&b!==c&&r==="chat"&&_?.scrollTop<=Mt?k.touches?.[0]?.clientY??null:null,lastY:k.touches?.[0]?.clientY??null,distance:0}},[l,c,b,r,e]),L=a.useCallback(()=>{v.current.touching=!1,v.current.lastUserScrollAt=typeof performance<"u"?performance.now():Date.now(),f.current?.applied&&(f.current.releaseAt=performance.now()+Xs);const k=R.current.distance;R.current={startY:null,lastY:null,distance:0},g(0),k>=Lu&&e.current?.scrollTop<=Mt&&C()},[e,C]),U=a.useCallback(()=>{v.current.touching=!1,R.current={startY:null,lastY:null,distance:0},g(0)},[]),M=a.useCallback(k=>{const _=e.current,$=R.current;if(!_||r!=="chat"||k.touches?.length!==1)return;const G=k.touches[0].clientY,D=$.lastY==null?0:$.lastY-G;if($.lastY=G,nc(_,k.target,D)){$.startY!=null&&($.startY=G),$.distance=0,g(0);return}if(f.current){f.current.releaseAt=performance.now()+Xs,k.preventDefault();return}$.startY!=null&&(_.scrollTop>Mt||($.distance=Math.min(Ou,Math.max(0,G-$.startY)),g($.distance),$.distance>0&&k.preventDefault()))},[r,e]);return a.useEffect(()=>{const k=e.current;if(k)return k.addEventListener("wheel",A,{passive:!1}),k.addEventListener("touchmove",M,{passive:!1}),()=>{k.removeEventListener("wheel",A),k.removeEventListener("touchmove",M)}},[e,A,M]),{normalizedLines:d,onScroll:P,onTouchStart:T,onTouchEnd:L,onTouchCancel:U,topPullDistance:h,loadingOlderHistory:b===c}}function et({runs:e,theme:t}){return a.createElement(a.Fragment,null,(e||[]).map((s,n,r)=>{const i=n>0&&!!ur(r[n-1]?.href),o={color:Ge(t,s.color),backgroundColor:Ge(t,s.backgroundColor),fontWeight:s.bold?700:400,textDecoration:s.underline?"underline":"none"};if(s?.trailingRule)return a.createElement("span",{key:`${n}:rule`,className:"ps-line-trailing-rule",style:o},s.text||"");const l=String(s?.href||"").trim(),c=/^https?:\/\//i.test(l),d=ur(l);if(d)return a.createElement(Xu,{key:n,artifactRef:d,style:o});const p=i?Ku(s.text||""):s.text||"";return i&&!p?null:c?a.createElement("a",{key:n,className:"ps-md-link",href:l,target:"_blank",rel:"noreferrer",style:o},p):a.createElement("span",{key:n,className:s?.role==="streamingCaret"?"ps-streaming-caret":void 0,style:o},p)}))}function Gu({line:e,theme:t}){const[s,n]=a.useState(!1),r=String(e?.body||"").trim(),i=`ps-system-notice${e?.liveReasoning||e?.streamReasoning?" is-live-reasoning":""}`;return a.createElement("details",{className:i,onToggle:o=>n(o.currentTarget.open)},a.createElement("summary",{className:"ps-system-notice-summary",style:{color:Ge(t,e?.color)||"var(--ps-muted)"}},a.createElement("span",{className:"ps-system-notice-summary-text"},e?.text||"System notice")),r&&s?a.createElement("div",{className:"ps-system-notice-body"},a.createElement(Za,{content:r,theme:t})):null)}function Av({calls:e}){const t=e[e.length-1]||{},s=t.status==="Called"||t.status==="Started",n=e.some(f=>f.status==="Failed"),[r,i]=a.useState(s),o=a.useRef(null),l=a.useRef(!0),c=new Set(e.map(f=>f.category||"Tool")),d=c.size===1&&c.has("Tool")?`${e.length} tool ${e.length===1?"call":"calls"}`:c.size===1&&c.has("Agent")?`${e.length} agent ${e.length===1?"activity":"activities"}`:`${e.length} activities`,p=String(t.text||t.category||"activity").split(" — ")[0],u=s?"Working":n?"Failed":"Done",m=`${t.callKey||""}:${t.status||""}:${String(t.body||"").length}`;return a.useLayoutEffect(()=>{const f=o.current;r&&f&&l.current&&(f.scrollTop=f.scrollHeight)},[r,e.length,m]),a.createElement("details",{className:"ps-native-tasks ps-activity-run",open:r,onToggle:f=>i(f.currentTarget.open)},a.createElement("summary",{className:"ps-native-tasks-header ps-activity-run-summary"},a.createElement("span",{className:"ps-native-tasks-title"},a.createElement("span",{className:"ps-native-task-branch","aria-hidden":!0},"⌘"),d),a.createElement("span",{className:"ps-activity-run-latest",title:t.text||""},`latest: ${p}`),a.createElement("span",{className:`ps-activity-run-status${n?" is-failed":""}`},u),a.createElement("span",{className:"ps-activity-run-chevron","aria-hidden":!0},"›")),a.createElement("div",{ref:o,className:"ps-activity-run-viewport",role:"region","aria-label":`${d} activity log`,tabIndex:0,onScroll:f=>{f.stopPropagation(),l.current=za(f.currentTarget)<=24},onWheel:f=>{f.deltaY<0&&(l.current=!1)},onTouchStart:()=>{l.current=!1}},e.map(f=>a.createElement(Pu,{key:f.callKey,line:f}))),a.createElement("div",{className:"ps-activity-run-footer"},`Showing ${e.length} ${e.length===1?"entry":"entries"} · Scroll for earlier activity`))}function Nv({line:e,theme:t}){const s=String(e?.canvasActionPayload||"").trim(),n=e?.canvasActionName||"action",r=String(e?.canvasActionDetail||"").trim(),i=String(e?.canvasActionTime||"").trim();return a.createElement("details",{className:"ps-system-notice ps-canvas-action"},a.createElement("summary",{className:"ps-system-notice-summary ps-canvas-action-summary",style:{color:Ge(t,"gray")||"var(--ps-muted)"}},a.createElement("span",{className:"ps-canvas-action-tag"},"canvas"),a.createElement("span",{className:"ps-system-notice-summary-text"},`${n}${r?` — ${r}`:""}`),i?a.createElement("span",{className:"ps-canvas-action-time"},i):null),s?a.createElement("div",{className:"ps-system-notice-body"},a.createElement("pre",{className:"ps-canvas-action-payload"},s)):null)}function Cv(e){const t=a.useRef(0),s=a.useRef(null),n=a.useRef(e);return n.current=e,a.useEffect(()=>()=>{t.current&&cancelAnimationFrame(t.current)},[]),a.useCallback((...r)=>{s.current=r,!t.current&&(t.current=requestAnimationFrame(()=>{t.current=0;const i=s.current;s.current=null,i&&n.current(...i)}))},[])}const dt=a.memo(function({line:t,theme:s,className:n=""}){const r=n?`ps-line ${n}`:"ps-line";return t?t.kind==="systemNotice"?a.createElement(Gu,{line:t,theme:s}):t.canvasAction?a.createElement(Nv,{line:t,theme:s}):t.kind==="runs"?a.createElement("div",{className:r},a.createElement(et,{runs:t.runs,theme:s})):a.createElement("div",{className:r,style:{color:Ge(s,t.color),backgroundColor:Ge(s,t.backgroundColor),fontWeight:t.bold?700:400,textDecoration:t.underline?"underline":"none"}},t.text||" "):a.createElement("div",{className:r}," ")});function ft(e){return e?e.kind==="runs"?ju(e.runs):String(e.text||""):""}function Wu(e,t,s,n){const r=a.useRef(!1);return a.useLayoutEffect(()=>{const i=e.current;if(!i||!s)return;const o=Math.max(0,i.scrollHeight-i.clientHeight),l=Math.min(o,Math.max(0,Number(t)||0)*Ct);Math.abs(i.scrollTop-l)>2&&(r.current=!0,i.scrollTop=l,window.requestAnimationFrame(()=>{r.current=!1}))},[e,t,s]),a.useCallback(i=>{if(r.current)return;const o=e.current;!o||!s||i&&i.target!==o||o.scrollHeight<=o.clientHeight||n.dispatch({type:"ui/scroll",pane:s,offset:Math.max(0,o.scrollTop)/Ct})},[n,s,e])}const Tv={js:"js",jsx:"js",mjs:"js",cjs:"js",javascript:"js",ts:"js",tsx:"js",typescript:"js",json:"json",jsonc:"json",py:"python",python:"python",sh:"shell",bash:"shell",zsh:"shell",shell:"shell",console:"shell",sql:"sql",postgres:"sql",postgresql:"sql",psql:"sql",rs:"rust",rust:"rust",go:"go",golang:"go",yaml:"yaml",yml:"yaml",css:"css",scss:"css"},Pv=new Set(["diff","patch","udiff"]),Mv=/\.(patch|diff)$/i,Ka=/^image\/(png|jpe?g|gif|webp|avif|bmp|svg\+xml|x-icon|vnd\.microsoft\.icon)$/i,Va=/\.(png|jpe?g|gif|webp|avif|bmp|svg|ico)$/i,_v={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",avif:"image/avif",bmp:"image/bmp",svg:"image/svg+xml",ico:"image/x-icon"};function $v(e){const t=/\.([a-z0-9]+)$/i.exec(String(e||""));return t&&_v[t[1].toLowerCase()]||null}const Rv={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",tsx:"typescript",json:"json",jsonl:"json",py:"python",rs:"rust",go:"go",java:"java",rb:"ruby",sh:"bash",bash:"bash",zsh:"bash",yml:"yaml",yaml:"yaml",toml:"toml",sql:"sql",css:"css",html:"html",xml:"xml"};function Lv(e){const t=String(e||"");if(!/^---[ \t]*\r?\n/.test(t))return t;const s=/\r?\n---[ \t]*(\r?\n|$)/.exec(t.slice(3));return s?t.slice(3+s.index+s[0].length):t}const Ov=/\.(html?|xhtml)$/i;function qu(e,t){return Ov.test(String(e||""))?!0:/^(text\/html|application\/xhtml\+xml)$/i.test(String(t||"").trim().split(";")[0])}const Fv=/\.(csv|tsv)$/i;function zu(e,t){return Fv.test(String(e||""))?!0:/^text\/(csv|tab-separated-values)$/i.test(String(t||"").trim())}const di=2e3;function Dv(e){const t=String(e??"");return/[\t\n\r"]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function Bv({content:e,filename:t}){const[s,n]=a.useState(null),r=a.useRef(null),i=a.useRef(null),o=a.useRef(null);a.useEffect(()=>{let w=!1;return n(null),Tu(()=>import("./papaparse.min-D9faucsJ.js").then(E=>E.p),[]).then(E=>{if(w)return;const I=E.default||E,P=/\.tsv$/i.test(String(t||""))?" ":"",C=I.parse(String(e||"").trim(),{delimiter:P,skipEmptyLines:"greedy"});n({rows:C.data||[],errors:C.errors||[]})}).catch(()=>{w||n({rows:null,errors:[{message:"parser unavailable"}]})}),()=>{w=!0}},[e,t]),a.useEffect(()=>{const w=()=>{o.current=null};return window.addEventListener("mouseup",w),()=>window.removeEventListener("mouseup",w)},[]);const l=a.useCallback((w,E)=>{if(!w||!E)return;const I=window.getSelection();if(!I)return;const P=!!(w.compareDocumentPosition(E)&Node.DOCUMENT_POSITION_PRECEDING),C=document.createRange();C.setStartBefore(P?E:w),C.setEndAfter(P?w:E),I.removeAllRanges(),I.addRange(C)},[]),c=w=>w.target?.closest?w.target.closest("td,th"):null,d=a.useCallback(w=>{if(w.button!==0)return;const E=c(w);E&&(w.preventDefault(),r.current?.focus(),o.current=E,l(E,E))},[l]),p=a.useCallback(w=>{if(!o.current||!(w.buttons&1))return;const E=c(w);E&&l(o.current,E)},[l]),u=a.useCallback(w=>{if(!(w.metaKey||w.ctrlKey)||w.altKey||w.key!=="a"&&w.key!=="A")return;const E=i.current,I=window.getSelection();if(!E||!I)return;w.preventDefault(),w.stopPropagation();const P=document.createRange();P.selectNodeContents(E),I.removeAllRanges(),I.addRange(P)},[]),m=a.useCallback(w=>{const E=i.current,I=window.getSelection();if(!E||!I||I.rangeCount===0)return;const P=I.getRangeAt(0),C=new Map;for(const A of E.querySelectorAll("th,td")){if(!P.intersectsNode(A))continue;const R=A.parentElement;C.has(R)||C.set(R,[]),C.get(R).push(Dv(A.textContent))}C.size!==0&&(w.clipboardData.setData("text/plain",Array.from(C.values(),A=>A.join(" ")).join(`
99
99
  `)),w.preventDefault())},[]);if(!s)return a.createElement("div",{className:"ps-csv-status"},"Parsing…");if(!s.rows||s.rows.length===0)return a.createElement("pre",{className:"ps-md-code-pre"},a.createElement("code",null,String(e||"")));const[f,...h]=s.rows,g=h.reduce((w,E)=>Math.max(w,E.length),f.length),b=Array.from({length:g},(w,E)=>f[E]??""),y=h.length>di,v=y?h.slice(0,di):h,S=[];return y&&S.push(`showing first ${di} of ${h.length} rows`),s.errors.length&&S.push(`${s.errors.length} parse warning${s.errors.length===1?"":"s"}`),a.createElement("div",{className:"ps-csv-wrap",ref:r,tabIndex:0,onMouseDown:d,onMouseMove:p,onKeyDown:u,onCopy:m},a.createElement("table",{className:"ps-csv-table",ref:i},a.createElement("thead",null,a.createElement("tr",null,b.map((w,E)=>a.createElement("th",{key:`h${E}`},String(w??""))))),a.createElement("tbody",null,v.map((w,E)=>a.createElement("tr",{key:`r${E}`},b.map((I,P)=>a.createElement("td",{key:`c${P}`},String(w[P]??""))))))),S.length?a.createElement("div",{className:"ps-csv-status"},S.join(" · ")):null)}function Ya(e){const t=/\.([A-Za-z0-9]+)$/.exec(String(e||""));return t&&Rv[t[1].toLowerCase()]||null}function Xa(e,t){return Mv.test(String(e||""))?!0:/^text\/x-(patch|diff)$/i.test(String(t||"").trim())}function Ku(e){const t=String(e??"");if(t.startsWith(_n))return t.slice(_n.length);const s=_n.trimStart();return t.startsWith(s)?t.slice(s.length):t}function ur(e){const t=/^artifact:\/\/([^/]+)\/(.+)$/i.exec(String(e||"").trim());if(!t)return null;try{return{sessionId:t[1],filename:decodeURIComponent(t[2])}}catch{return{sessionId:t[1],filename:t[2]}}}const Vi=a.createContext(null);function Vu(e){const t=String(e||""),s=(/\.([A-Za-z0-9]+)$/.exec(t)?.[1]||"").toLowerCase();return qu(t)?{kind:"page",type:"HTML",noun:"Page"}:Xa(t)?{kind:"diff",type:s.toUpperCase()||"DIFF",noun:"Diff"}:Va.test(t)?{kind:"image",type:s.toUpperCase(),noun:"Image"}:zu(t)?{kind:"table",type:s.toUpperCase(),noun:"Table"}:/\.md$/i.test(t)?{kind:"doc",type:"MD",noun:"Document"}:Ya(t)?{kind:"code",type:s.toUpperCase(),noun:"Code"}:{kind:"file",type:s.toUpperCase()||"FILE",noun:"File"}}function Yu(e){const t=String(e||"").replace(/\.[A-Za-z0-9]+$/,""),n=(t.replace(/[-_ ]?\d{6,8}$/,"")||t).replace(/[-_]+/g," ").trim();return n?n.charAt(0).toUpperCase()+n.slice(1):String(e||"Artifact")}function Hv({kind:e}){const t={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"},s=e==="page"?[a.createElement("rect",{key:"w",x:2.5,y:3.5,width:15,height:13,rx:2,...t}),a.createElement("path",{key:"b",d:"M2.5 7.5h15",...t}),a.createElement("circle",{key:"d",cx:5.2,cy:5.5,r:.7,fill:"currentColor",stroke:"none"})]:e==="image"?[a.createElement("rect",{key:"f",x:2.5,y:3.5,width:15,height:13,rx:2,...t}),a.createElement("path",{key:"m",d:"M2.5 13l4-4 4 3.5 3-2.5 3.5 3",...t})]:e==="table"?[a.createElement("rect",{key:"f",x:2.5,y:3.5,width:15,height:13,rx:2,...t}),a.createElement("path",{key:"g",d:"M2.5 8h15M8 8v8.5M2.5 12.5h15",...t})]:[a.createElement("path",{key:"p",d:"M5 2.5h6.5L16 7v10.5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-14a1 1 0 0 1 1-1z",...t}),a.createElement("path",{key:"c",d:"M11.5 2.5V7H16",...t}),e==="diff"?a.createElement("path",{key:"t",d:"M7 11h6M10 8.5v5",...t}):a.createElement("path",{key:"t",d:"M7 10.5h6M7 13.5h4",...t})];return a.createElement("svg",{className:"ps-artifact-card-glyph",viewBox:"0 0 20 20","aria-hidden":"true"},s)}function Xu({artifactRef:e}){const t=a.useContext(Vi),s=Vu(e.filename),n=a.useCallback(r=>{r.preventDefault(),r.stopPropagation(),Uv(t,e.sessionId,e.filename)},[t,e.sessionId,e.filename]);return a.createElement("button",{type:"button",className:`ps-artifact-card is-${s.kind}`,onClick:n,title:`Open ${e.filename}`},a.createElement("span",{className:"ps-artifact-card-thumb","aria-hidden":"true"},a.createElement(Hv,{kind:s.kind})),a.createElement("span",{className:"ps-artifact-card-text"},a.createElement("span",{className:"ps-artifact-card-title"},Yu(e.filename)),a.createElement("span",{className:"ps-artifact-card-meta"},`${s.noun} · ${s.type}`)),a.createElement("span",{className:"ps-artifact-card-open"},"Open"))}function Uv(e,t,s){if(!e?.revealArtifact)return;if(e.openChatArtifact){Promise.resolve(e.openChatArtifact(t,s)).catch(()=>{});return}const n=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 920px)").matches;Promise.resolve(n?e.revealArtifact(t,s,{fullscreen:!0}):e.revealArtifact(t,s,{pane:!0})).catch(()=>{})}function Qu(e){return Pv.has(String(e||"").trim().toLowerCase())}const jv=/^(?:diff --git |index |--- |\+\+\+ |new file mode|deleted file mode|old mode|new mode|similarity index|dissimilarity index|rename (?:from|to) |copy (?:from|to) |Binary files |GIT binary patch|\\)/;function Gv(e){return jv.test(e)?"meta":e.startsWith("@@")?"hunk":e.startsWith("+")?"add":e.startsWith("-")?"del":"context"}const Wv={add:"green",del:"red",hunk:"cyan",meta:"gray"};function Qa(e,t){return String(e||"").replace(/\n$/,"").split(`
100
- `).map((n,r)=>{const i=Gv(n),o=Wv[i],l=i==="add"||i==="del"||i==="context"&&n.startsWith(" "),c=l?n.slice(0,1):"",d=l?n.slice(1):n;return a.createElement("span",{key:`d:${r}`,className:`ps-diff-line is-${i}`,style:o?{color:Ge(t,o)||void 0}:void 0},a.createElement("span",{className:"ps-diff-marker","aria-hidden":"true"},c.trim()),a.createElement("span",{className:"ps-diff-text"},d))})}function Zu(e){return String(e||"").trim().toLowerCase()==="mermaid"}const rc={js:new Set(["async","await","break","case","catch","class","const","continue","default","delete","do","else","export","extends","finally","for","from","function","if","import","in","instanceof","let","new","of","return","static","super","switch","this","throw","try","typeof","var","void","while","yield","true","false","null","undefined","interface","type","enum","implements","readonly","public","private","protected"]),python:new Set(["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","None","nonlocal","not","or","pass","raise","return","True","False","try","while","with","yield","self"]),shell:new Set(["if","then","else","elif","fi","for","while","do","done","case","esac","in","function","return","export","local","set","echo","cd","sudo","source"]),sql:new Set(["select","from","where","insert","into","values","update","set","delete","create","table","alter","drop","index","join","left","right","inner","outer","on","group","order","by","having","limit","offset","and","or","not","null","as","distinct","union","all","case","when","then","else","end","with","returning","primary","key","foreign","references","default","constraint","begin","commit","rollback"]),rust:new Set(["as","async","await","break","const","continue","crate","dyn","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","Self","static","struct","super","trait","true","type","unsafe","use","where","while"]),go:new Set(["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","nil","true","false"]),json:new Set(["true","false","null"]),yaml:new Set(["true","false","null","yes","no"]),css:new Set(["important","media","keyframes","import","supports"])};function qv(e){const t={type:"comment",re:/#[^\n]*/y},s={type:"comment",re:/\/\/[^\n]*|\/\*[\s\S]*?\*\//y},n={type:"comment",re:/--[^\n]*|\/\*[\s\S]*?\*\//y},r={type:"number",re:/\b\d[\d_]*(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0[xX][0-9a-fA-F]+\b/y},i={type:"identifier",re:/[A-Za-z_$][\w$]*/y},o={type:"string",re:/"(?:\\.|[^"\\])*"?/y},l={type:"string",re:/'(?:\\.|[^'\\])*'?/y},c={type:"string",re:/`(?:\\.|[^`\\])*`?/y},d={type:"string",re:/"""[\s\S]*?"""|'''[\s\S]*?'''/y};switch(e){case"python":return[t,d,o,l,r,i];case"shell":return[t,o,l,r,i];case"sql":return[n,l,o,r,i];case"yaml":return[t,o,l,r,i];case"json":return[o,r,i];case"css":return[{type:"comment",re:/\/\*[\s\S]*?\*\//y},o,l,r,i];default:return[s,o,l,c,r,i]}}const zv={comment:"gray",string:"green",number:"yellow",keyword:"magenta",fn:"cyan"},Kv=2e4,Jt=new Map,Vv=120;function Yv(e,t){const s=`${t||""}\0${e}`,n=Jt.get(s);if(n)return Jt.delete(s),Jt.set(s,n),n;const r=Xv(e,t);return Jt.set(s,r),Jt.size>Vv&&Jt.delete(Jt.keys().next().value),r}function Xv(e,t){const s=Tv[String(t||"").trim().toLowerCase()]||"default",n=rc[s]||rc.js,r=qv(s),i=[];let o=0,l=0;const c=d=>{d>l&&i.push({type:"plain",text:e.slice(l,d)})};for(;o<e.length;){let d=null;for(const u of r){u.re.lastIndex=o;const m=u.re.exec(e);if(m&&m.index===o&&m[0].length>0){d={type:u.type,text:m[0]};break}}if(!d){o+=1;continue}let p=d.type;if(p==="identifier")if(n.has(d.text))p="keyword";else{const u=e.slice(o+d.text.length);p=/^\s*\(/.test(u)?"fn":"plain"}if(p==="plain"){o+=d.text.length;continue}c(o),i.push({type:p,text:d.text}),o+=d.text.length,l=o}return c(e.length),i}function Bs(e,t,s){const n=String(e||"");if(!n||n.length>Kv)return n;let r;try{r=Yv(n,t)}catch{return n}return r.map((i,o)=>{const l=zv[i.type];return l?a.createElement("span",{key:`t:${o}`,className:`ps-code-token is-${i.type}`,style:{color:Ge(s,l)||void 0}},i.text):a.createElement(a.Fragment,{key:`t:${o}`},i.text)})}let Mn=null;function Qv(){return Mn||(Mn=Tu(()=>import("./mermaid.core-DWYsDHXh.js").then(e=>e.bp),[]).then(e=>e.default||e).catch(e=>{throw Mn=null,e})),Mn}function Zv(e,t){return e.initialize({startOnLoad:!1,securityLevel:"strict",theme:t?"default":"dark",fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif"}),e}let ic=0,ac=Promise.resolve();function Jv(e){const t=ac.then(e,e);return ac=t.then(()=>{},()=>{}),t}function Ju({code:e,theme:t,fallback:s}){const[n,r]=a.useState(null),[i,o]=a.useState(!1),[l,c]=a.useState(""),d=a.useMemo(()=>gf(t),[t]);return a.useEffect(()=>{let p=!0;const u=String(e||"").trim();if(u)return o(!1),Qv().then(m=>Jv(async()=>{if(!p)return;Zv(m,d),ic+=1;const f=`ps-mermaid-${ic}`;await m.parse(u);const{svg:h}=await m.render(f,u);p&&r(h)})).catch(m=>{p&&(r(null),o(!0),c(String(m?.message||m)))}),()=>{p=!1}},[e,d]),n&&!i?a.createElement("div",{className:"ps-mermaid",dangerouslySetInnerHTML:{__html:n}}):i&&l?a.createElement("div",{className:"ps-mermaid-failed"},a.createElement("div",{className:"ps-mermaid-error"},`Diagram could not be rendered — ${String(l).split(`
100
+ `).map((n,r)=>{const i=Gv(n),o=Wv[i],l=i==="add"||i==="del"||i==="context"&&n.startsWith(" "),c=l?n.slice(0,1):"",d=l?n.slice(1):n;return a.createElement("span",{key:`d:${r}`,className:`ps-diff-line is-${i}`,style:o?{color:Ge(t,o)||void 0}:void 0},a.createElement("span",{className:"ps-diff-marker","aria-hidden":"true"},c.trim()),a.createElement("span",{className:"ps-diff-text"},d))})}function Zu(e){return String(e||"").trim().toLowerCase()==="mermaid"}const rc={js:new Set(["async","await","break","case","catch","class","const","continue","default","delete","do","else","export","extends","finally","for","from","function","if","import","in","instanceof","let","new","of","return","static","super","switch","this","throw","try","typeof","var","void","while","yield","true","false","null","undefined","interface","type","enum","implements","readonly","public","private","protected"]),python:new Set(["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","None","nonlocal","not","or","pass","raise","return","True","False","try","while","with","yield","self"]),shell:new Set(["if","then","else","elif","fi","for","while","do","done","case","esac","in","function","return","export","local","set","echo","cd","sudo","source"]),sql:new Set(["select","from","where","insert","into","values","update","set","delete","create","table","alter","drop","index","join","left","right","inner","outer","on","group","order","by","having","limit","offset","and","or","not","null","as","distinct","union","all","case","when","then","else","end","with","returning","primary","key","foreign","references","default","constraint","begin","commit","rollback"]),rust:new Set(["as","async","await","break","const","continue","crate","dyn","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","Self","static","struct","super","trait","true","type","unsafe","use","where","while"]),go:new Set(["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","nil","true","false"]),json:new Set(["true","false","null"]),yaml:new Set(["true","false","null","yes","no"]),css:new Set(["important","media","keyframes","import","supports"])};function qv(e){const t={type:"comment",re:/#[^\n]*/y},s={type:"comment",re:/\/\/[^\n]*|\/\*[\s\S]*?\*\//y},n={type:"comment",re:/--[^\n]*|\/\*[\s\S]*?\*\//y},r={type:"number",re:/\b\d[\d_]*(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0[xX][0-9a-fA-F]+\b/y},i={type:"identifier",re:/[A-Za-z_$][\w$]*/y},o={type:"string",re:/"(?:\\.|[^"\\])*"?/y},l={type:"string",re:/'(?:\\.|[^'\\])*'?/y},c={type:"string",re:/`(?:\\.|[^`\\])*`?/y},d={type:"string",re:/"""[\s\S]*?"""|'''[\s\S]*?'''/y};switch(e){case"python":return[t,d,o,l,r,i];case"shell":return[t,o,l,r,i];case"sql":return[n,l,o,r,i];case"yaml":return[t,o,l,r,i];case"json":return[o,r,i];case"css":return[{type:"comment",re:/\/\*[\s\S]*?\*\//y},o,l,r,i];default:return[s,o,l,c,r,i]}}const zv={comment:"gray",string:"green",number:"yellow",keyword:"magenta",fn:"cyan"},Kv=2e4,Jt=new Map,Vv=120;function Yv(e,t){const s=`${t||""}\0${e}`,n=Jt.get(s);if(n)return Jt.delete(s),Jt.set(s,n),n;const r=Xv(e,t);return Jt.set(s,r),Jt.size>Vv&&Jt.delete(Jt.keys().next().value),r}function Xv(e,t){const s=Tv[String(t||"").trim().toLowerCase()]||"default",n=rc[s]||rc.js,r=qv(s),i=[];let o=0,l=0;const c=d=>{d>l&&i.push({type:"plain",text:e.slice(l,d)})};for(;o<e.length;){let d=null;for(const u of r){u.re.lastIndex=o;const m=u.re.exec(e);if(m&&m.index===o&&m[0].length>0){d={type:u.type,text:m[0]};break}}if(!d){o+=1;continue}let p=d.type;if(p==="identifier")if(n.has(d.text))p="keyword";else{const u=e.slice(o+d.text.length);p=/^\s*\(/.test(u)?"fn":"plain"}if(p==="plain"){o+=d.text.length;continue}c(o),i.push({type:p,text:d.text}),o+=d.text.length,l=o}return c(e.length),i}function Bs(e,t,s){const n=String(e||"");if(!n||n.length>Kv)return n;let r;try{r=Yv(n,t)}catch{return n}return r.map((i,o)=>{const l=zv[i.type];return l?a.createElement("span",{key:`t:${o}`,className:`ps-code-token is-${i.type}`,style:{color:Ge(s,l)||void 0}},i.text):a.createElement(a.Fragment,{key:`t:${o}`},i.text)})}let Mn=null;function Qv(){return Mn||(Mn=Tu(()=>import("./mermaid.core-CDSp3stl.js").then(e=>e.bp),[]).then(e=>e.default||e).catch(e=>{throw Mn=null,e})),Mn}function Zv(e,t){return e.initialize({startOnLoad:!1,securityLevel:"strict",theme:t?"default":"dark",fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, sans-serif"}),e}let ic=0,ac=Promise.resolve();function Jv(e){const t=ac.then(e,e);return ac=t.then(()=>{},()=>{}),t}function Ju({code:e,theme:t,fallback:s}){const[n,r]=a.useState(null),[i,o]=a.useState(!1),[l,c]=a.useState(""),d=a.useMemo(()=>gf(t),[t]);return a.useEffect(()=>{let p=!0;const u=String(e||"").trim();if(u)return o(!1),Qv().then(m=>Jv(async()=>{if(!p)return;Zv(m,d),ic+=1;const f=`ps-mermaid-${ic}`;await m.parse(u);const{svg:h}=await m.render(f,u);p&&r(h)})).catch(m=>{p&&(r(null),o(!0),c(String(m?.message||m)))}),()=>{p=!1}},[e,d]),n&&!i?a.createElement("div",{className:"ps-mermaid",dangerouslySetInnerHTML:{__html:n}}):i&&l?a.createElement("div",{className:"ps-mermaid-failed"},a.createElement("div",{className:"ps-mermaid-error"},`Diagram could not be rendered — ${String(l).split(`
101
101
  `)[0]}`),s):s}function Tt(e,t,s="md"){const n=ia(e);return n.map((r,i)=>{const o=`${s}:${i}`;if(i>0&&n[i-1]?.type==="link"&&ur(n[i-1]?.href)){const l=Ku(r.text||"");if(!l)return null;l!==r.text&&(r={...r,text:l})}if(r.type==="code")return a.createElement("code",{key:o,className:"ps-md-inline-code"},r.text);if(r.type==="strong")return a.createElement("strong",{key:o,className:"ps-md-strong"},Tt(r.text,t,`${o}:strong`));if(r.type==="em")return a.createElement("em",{key:o,className:"ps-md-em"},Tt(r.text,t,`${o}:em`));if(r.type==="link"){const l=ur(r.href);return l?a.createElement(Xu,{key:o,artifactRef:l}):/^https?:\/\//i.test(String(r.href||"").trim())?a.createElement("a",{key:o,className:"ps-md-link",href:r.href,target:"_blank",rel:"noreferrer",style:{color:Ge(t,"cyan")}},r.text):a.createElement("span",{key:o,style:{color:Ge(t,"cyan")}},r.text)}return a.createElement(a.Fragment,{key:o},r.text)})}function ep(e=[],t=0){return Array.from({length:t},(s,n)=>(Array.isArray(e)?e:[]).map(i=>qi(i?.[n]||"")).filter(Boolean).join(" / ")||null)}function oc(e="",t=""){const s=String(e||"");return/^\s*#{1,6}\s+/.test(s)||/^\s*>/.test(s)||/^\s*([-*]|\d+\.)\s+/.test(s)||/^\s*```/.test(s)||s.includes("|")&&/^\s*\|?[\s:-]+(?:\|[\s:-]+)+\|?\s*$/.test(String(t||""))}function lc(e=""){return String(e||"").trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(s=>s.trim())}function ew(e=""){const s=String(e||"").replace(/\r\n?/g,`
102
102
  `).split(`
103
103
  `),n=[];for(let r=0;r<s.length;){const i=s[r],o=i.trim();if(!o){r+=1;continue}const l=/^```(\S*)\s*$/.exec(o);if(l){const u=l[1]||"",m=[];for(r+=1;r<s.length&&!/^```/.test(s[r].trim());)m.push(s[r]),r+=1;r<s.length&&(r+=1),n.push({type:"code",language:u,content:m.join(`
@@ -106,4 +106,4 @@ ${r.validation.errors.map(o=>`[${o.code}] ${o.message}`).join(`
106
106
  `)});continue}if(n?.kind==="runs"&&Array.isArray(n.runs)&&n.runs.length>2&&jn(r)){const i=dc(n),o=n.runs[0]?.color||"gray",l=[];for(s+=1;s<e.length;){const c=e[s],d=ft(c);if(mi(d)){s+=1;break}an(d)?l.push(dc(c)):l.push(c?.kind==="runs"?c.runs:[{text:ft(c),color:c?.color||null}]),s+=1}s<e.length&&ft(e[s]).trim().length===0&&(s+=1),t.push({type:"card",headerRuns:i,bodyLines:l,borderColor:o});continue}t.push({type:"line",line:n}),s+=1}return t}function op({lines:e,theme:t,controller:s=null}){const n=a.useMemo(()=>ap((e||[]).filter(r=>!r?.canvasUpdate)),[e]);return a.createElement(cp,{blocks:n,theme:t,controller:s})}const _t=new Map,fw=60;function lp(e,t,s){const n=`${t}/${s}`,r=_t.get(n);if(r)return _t.delete(n),_t.set(n,r),r;const i=e?.transport?.api?.downloadArtifactResponse;if(typeof i!="function")return Promise.reject(new Error("artifact download unavailable"));const o=i.call(e.transport.api,t,s).then(async l=>{if(!l?.ok)throw new Error(`download failed (${l?.status})`);const c=await l.blob(),d=$v(s),p=d&&!Ka.test(c.type)?new Blob([c],{type:d}):c;return URL.createObjectURL(p)}).catch(l=>{throw _t.get(n)===o&&_t.delete(n),l});for(_t.set(n,o);_t.size>fw;){const[l,c]=_t.entries().next().value;_t.delete(l),Promise.resolve(c).then(d=>URL.revokeObjectURL(d)).catch(()=>{})}return o}function hw({controller:e,sessionId:t,attachments:s}){const[n,r]=a.useState({});return a.useEffect(()=>{if(!e||!t)return;let i=!1;for(const o of s){const l=o?.filename;l&&lp(e,t,l).then(c=>{i||r(d=>d[l]===c?d:{...d,[l]:c})}).catch(()=>{i||r(c=>c[l]==="error"?c:{...c,[l]:"error"})})}return()=>{i=!0}},[e,t,s]),a.createElement("div",{className:"ps-chat-image-strip"},s.map((i,o)=>{const l=i?.filename||`image-${o}`,c=n[l];return c&&c!=="error"?a.createElement("img",{key:`thumb:${o}:${l}`,className:"ps-chat-image-thumb",src:c,alt:l,title:`${l} — click to view full size`,onClick:()=>{try{window.open(c,"_blank","noopener")}catch{}}}):a.createElement("div",{key:`thumb:${o}:${l}`,className:`ps-chat-image-thumb is-pending${c==="error"?" is-error":""}`,title:l},c==="error"?"⚠":"🖼")}))}const gw=a.memo(function({content:t,width:s,theme:n,controller:r}){const i=a.useMemo(()=>it(ds(t,{width:s,tableMode:"sentinel"})),[t,s]);return a.createElement(op,{lines:i,theme:n,controller:r})}),yw=a.memo(function({line:t,theme:s,controller:n}){const[r,i]=a.useState(t.text==="Agent update"),[o,l]=a.useState(!t.liveStartedAt||Date.now()-t.liveStartedAt>=200),c=a.useRef(null),d=a.useRef(null),p=a.useRef(!0),u=a.useRef(null),m=r||t.final;a.useLayoutEffect(()=>{t.text==="Agent update"&&i(!0)},[t.text]),m&&(u.current=t);const f=u.current;return a.useEffect(()=>{if(t.final||o)return;const h=setTimeout(()=>l(!0),Math.max(0,Math.min(200,200-(Date.now()-t.liveStartedAt))));return()=>clearTimeout(h)},[t.final,t.liveStartedAt,o]),a.useLayoutEffect(()=>{if(!m||t.final)return;const h=()=>{const b=c.current;b&&t.isLive&&p.current&&(b.scrollTop=b.scrollHeight)};h();const g=new ResizeObserver(h);return d.current&&g.observe(d.current),()=>g.disconnect()},[m,t.final,t.isLive,f]),!t.final&&!o?null:a.createElement("details",{className:`ps-system-notice ps-assistant-preview${t.final?" is-final":""}`,open:m,onToggle:h=>{h.target===h.currentTarget&&!t.final&&i(h.currentTarget.open)}},a.createElement("summary",{className:"ps-system-notice-summary ps-canvas-action-summary",tabIndex:t.final?-1:void 0,onClick:h=>{t.final&&h.preventDefault()}},t.final?a.createElement(et,{runs:t.headerRuns,theme:s}):a.createElement(a.Fragment,null,a.createElement("span",{className:"ps-canvas-action-tag"},"Agent"),a.createElement("span",{className:"ps-system-notice-summary-text"},t.text),t.statusText?a.createElement("span",{className:"ps-preview-status"},t.statusText):null)),a.createElement("div",{ref:c,className:"ps-assistant-preview-viewport",tabIndex:m&&!t.final?0:void 0,role:t.final?void 0:"region","aria-label":t.final?void 0:t.text,onScroll:h=>{t.final||(h.stopPropagation(),p.current=za(h.currentTarget)<=24)},onWheel:h=>{t.final||h.deltaY<0&&(p.current=!1)},onTouchStart:()=>{t.final||(p.current=!1)},onKeyDown:h=>{!t.final&&["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(h.key)&&(h.stopPropagation(),["ArrowUp","PageUp","Home"].includes(h.key)&&(p.current=!1))}},a.createElement("div",{ref:d,className:"ps-assistant-preview-content"},f?.reasoningText?a.createElement(Gu,{key:"reasoning",line:{text:t.isLive?"Thinking":"Thought",body:f.reasoningText,streamReasoning:!0},theme:s}):null,f?.body?a.createElement(gw,{key:"message",content:f.body,width:f.width,theme:s,controller:n}):null,f?.truncated&&t.isLive?a.createElement("div",{className:"ps-preview-status"},"Preview paused — the full answer will appear when complete."):null)))});function cp({blocks:e,theme:t,controller:s=null}){return a.createElement(a.Fragment,null,(e||[]).map((n,r)=>{if(n.type==="nativeTasks")return a.createElement(WS,{key:n.group.id,group:n.group,colors:{starting:Ge(t,"cyan"),running:Ge(t,"cyan"),waiting:Ge(t,"yellow"),completed:Ge(t,"green"),failed:Ge(t,"red"),cancelled:Ge(t,"gray"),interrupted:Ge(t,"yellow")}});if(n.type==="chatCallGroup")return a.createElement(Av,{key:n.groupKey,calls:n.calls});if(n.type==="assistantPreview")return a.createElement(yw,{key:n.line.previewKey,line:n.line,theme:t,controller:s});if(n.type==="imageAttachments")return a.createElement(hw,{key:`imageAttachments:${r}`,controller:s,sessionId:n.sessionId,attachments:n.attachments});if(n.type==="preserve"){const i=n.splashVariant?` is-splash-${n.splashVariant}`:"";return a.createElement("div",{key:`preserve:${r}`,className:`ps-chat-preserve-block${i}`},n.lines.map((o,l)=>a.createElement(dt,{key:`preserve:${r}:${l}`,line:o,theme:t,className:"ps-line-preserve"})))}if(n.type==="code"){const i=Qu(n.language),o=a.createElement("section",{key:`code:${r}`,className:`ps-md-code-block ps-chat-code-block${i?" is-diff":""}`},a.createElement("div",{className:"ps-md-code-header"},n.language||"text"),a.createElement("pre",{className:"ps-md-code-pre"},a.createElement("code",null,i?Qa(n.content||"",t):Bs(n.content||"",n.language,t))));return Zu(n.language)?a.createElement(Ju,{key:`code:${r}`,code:n.content||"",theme:t,fallback:o}):o}if(n.type==="card")return a.createElement("section",{key:`card:${n.cardKey||r}`,className:"ps-chat-card",style:{"--ps-chat-card-accent":Ge(t,n.borderColor)||"var(--ps-border)"}},a.createElement("header",{className:"ps-chat-card-header"},a.createElement(et,{runs:n.headerRuns,theme:t})),a.createElement("div",{className:"ps-chat-card-body"},Array.isArray(n.blocks)?a.createElement(cp,{blocks:n.blocks,theme:t,controller:s}):(n.bodyLines||[]).map((i,o)=>a.createElement("div",{key:`card:${r}:line:${o}`,className:"ps-chat-card-line"},a.createElement(et,{runs:i,theme:t})))));if(n.type==="table"){const i=n.headerRows||[],o=n.bodyRows||[],l=Math.max(1,...i.map(b=>b.length),...o.map(b=>b.length)),c=l<=6,d=c?Cu([...i,...o]):null,p=!!d,u=d?d.flexIndex:-1,m=b=>b===u?"is-flex-column":null,f=ep(i,l),h=`ps-chat-table${c?" is-fit-width":""}${p?" has-flex-column":""}`,g=`ps-chat-table-wrap${c?" is-fit-width":""}${p?" has-flex-column":""}`;return a.createElement("div",{key:`table:${r}`,className:g},a.createElement("table",{className:h,style:d?.minWidth?{"--ps-table-min-width":d.minWidth}:void 0},d?a.createElement("colgroup",null,d.widths.map((b,y)=>a.createElement("col",{key:`col:${y}`,className:m(y)||void 0,style:{width:b}}))):null,i.length>0?a.createElement("thead",null,i.map((b,y)=>a.createElement("tr",{key:`thead:${y}`},Array.from({length:l},(v,S)=>a.createElement("th",{key:`th:${y}:${S}`,className:m(S)||void 0},Tt(b[S]||"",t,`chat-table:${r}:head:${y}:${S}`)))))):null,a.createElement("tbody",null,o.map((b,y)=>a.createElement("tr",{key:`tbody:${y}`},Array.from({length:l},(v,S)=>a.createElement("td",{key:`td:${y}:${S}`,className:m(S)||void 0,"data-label":f[S]||void 0},a.createElement("span",{className:"ps-table-cell-value"},Tt(b[S]||"",t,`chat-table:${r}:${y}:${S}`)))))))))}return a.createElement(dt,{key:`line:${r}`,line:n.line,theme:t})}))}function Yt({title:e,titleRight:t=null,color:s="gray",focused:n=!1,actions:r=null,children:i,theme:o,className:l=""}){const c=Ge(o,s),d=!!((Array.isArray(e)?e.length>0:String(e??"").trim())||t||r);return a.createElement("section",{className:`ps-panel${n?" is-focused":""}${d?"":" is-chromeless"}${l?` ${l}`:""}`,style:{"--ps-panel-accent":c||"var(--ps-border)"}},d?a.createElement("header",{className:"ps-panel-header"},a.createElement("div",{className:"ps-panel-title"},Array.isArray(e)?a.createElement(et,{runs:e,theme:o}):Jl(e)),t||r?a.createElement("div",{className:"ps-panel-header-right"},t?a.createElement("div",{className:"ps-panel-title-right"},Array.isArray(t)?a.createElement(et,{runs:t,theme:o}):Jl(t)):null,r?a.createElement("div",{className:"ps-panel-actions"},r):null):null):null,a.createElement("div",{className:"ps-panel-body"},i))}function bw({lines:e,theme:t,controller:s}){return a.createElement("div",{className:"ps-nodemap"},(e||[]).map((n,r)=>{const i=Array.isArray(n?.runs)?n.runs:Array.isArray(n)?n:[n],o=i.find(d=>d?.nodeSelect)?.nodeSelect||null,l=i.some(d=>d?.nodeSelected),c=a.createElement(et,{runs:i,theme:t});return o?a.createElement("button",{key:`line:${r}`,type:"button",className:`ps-nodemap__row${l?" is-selected":""}`,onPointerDown:d=>{d.preventDefault(),d.stopPropagation(),s.selectNodeMapNode(o)}},c):a.createElement("div",{key:`line:${r}`,className:"ps-nodemap__line"},c)}))}function Sw({lines:e,theme:t,completionByTurn:s}){const[n,r]=a.useState(()=>new Set),i=a.useCallback(p=>{r(u=>{const m=new Set(u);return m.has(p)?m.delete(p):m.add(p),m})},[]),o=p=>Number(p||0).toLocaleString("en-US"),l=p=>{const u=Number(p||0);if(!Number.isFinite(u))return"?K";const m=u/1e3,f=Math.abs(m)>=10?1:2;return`${m.toFixed(f)}K`},c=p=>{const u=Number(p||0);return Number.isFinite(u)?`${(u/1e3).toFixed(1)}s`:"?s"},d=p=>{const u=String(p||"").trim();if(!u)return"unknown";const m=u.split(":").filter(Boolean),f=m[m.length-1]||"",h=m.length>1&&ZS.has(f.toLowerCase())?m.length-2:m.length-1;return m[Math.max(0,h)]||m[0]||"unknown"};return a.createElement(a.Fragment,null,e.map((p,u)=>{const m=p?.kind==="runs"&&Array.isArray(p.runs)?p.runs.find(P=>P?.completedTurn!=null)?.completedTurn:null,f=m!=null?s.get(Number(m)):null;if(!f)return a.createElement(dt,{key:`line:${u}`,line:p,theme:t});const h=f.data||{},g=String(f.seq??`${h.turnIndex??m}:${f.createdAt??u}`),b=n.has(g),y=h.reasoningEffort?`${h.model||"(unknown)"}:${h.reasoningEffort}`:h.model||"(unknown)",v=d(h.model),S=h.durationMs!=null?c(h.durationMs):"duration n/a",w=h.durationMs!=null?`${o(h.durationMs)} ms`:"duration n/a",E=`${l(h.tokensInput)} / ${l(h.tokensOutput)}`,I=[["model",y],["started",h.startedAt?new Date(h.startedAt).toLocaleString():null],["ended",h.endedAt?new Date(h.endedAt).toLocaleString():null],["duration",w],["tokens",`${o(h.tokensInput)} in / ${o(h.tokensOutput)} out`],["cache",`${o(h.tokensCacheRead)} read / ${o(h.tokensCacheWrite)} write`],["tools",`${o(h.toolCalls)} calls / ${o(h.toolErrors)} errors`],["names",Array.isArray(h.toolNames)&&h.toolNames.length?h.toolNames.join(", "):null],["worker",h.workerNodeId||null],["result",h.resultType||null],["error",h.errorMessage||null]].filter(([,P])=>P!=null&&P!=="");return a.createElement(a.Fragment,{key:`seq:${u}`},a.createElement(dt,{line:p,theme:t}),a.createElement("button",{type:"button",className:"ps-sequence-turn-divider",onClick:()=>i(g)},a.createElement("span",{className:"ps-sequence-turn-caret"},b?"v":">"),a.createElement("span",{className:"ps-sequence-turn-rule"},"--- "),a.createElement("span",{className:"ps-sequence-turn-key"},"Mod: "),a.createElement("span",{className:"ps-sequence-turn-model"},v),a.createElement("span",{className:"ps-sequence-turn-rule"}," ("),a.createElement("span",{className:"ps-sequence-turn-key"},"tok: "),a.createElement("span",{className:"ps-sequence-turn-tokens"},E),a.createElement("span",{className:"ps-sequence-turn-rule"},", "),a.createElement("span",{className:"ps-sequence-turn-key"},"dur: "),a.createElement("span",{className:"ps-sequence-turn-duration"},S),a.createElement("span",{className:"ps-sequence-turn-rule"},") ---")),b?a.createElement("div",{className:"ps-sequence-turn-details"},I.map(([P,C])=>a.createElement("div",{key:P},a.createElement("span",{className:"ps-sequence-turn-detail-label"},`${P}: `),a.createElement("span",null,String(C))))):null)}))}const vw={chat:"chat",activity:"activity",inspector:"inspector",filePreview:"inspector"};function Ja(e,t=null){return t||vw[String(e||"")]||null}function Nr({title:e,titleRight:t=null,color:s,focused:n,actions:r,lines:i,stickyLines:o=[],bottomStickyLines:l=[],reserveBottomSticky:c=!1,scrollOffset:d=0,scrollMode:p="top",paneKey:u,controller:m,className:f="",panelClassName:h="",topContent:g=null,bottomContent:b=null,structuredBlocks:y=!1,stickyBottom:v=!1,historyPullEnabled:S=!1,historySessionId:w=null,renderBody:E=null,focusRegion:I=null,panelRef:P=null,ariaLive:C=null}){const A=J(m,X=>X.ui.themeId),R=Pt(A),T=a.useRef(null),L=a.useCallback(X=>{T.current=X,typeof P=="function"?P(X):P&&(P.current=X)},[P]),U=a.useRef(null),M=a.useRef(!1),{normalizedLines:k,onScroll:_,onTouchStart:$,onTouchEnd:G,onTouchCancel:D,topPullDistance:W,loadingOlderHistory:N}=xv(T,i,d,p,u,m,{stickyBottom:v,historyPullEnabled:S,historySessionId:w}),j=a.useMemo(()=>it(o),[o]),B=a.useMemo(()=>it(l),[l]),V=f.includes("is-preserve")&&h.includes("has-preserved-sticky"),Q=`${u}:${e}`;a.useEffect(()=>{const X=()=>{T.current&&(T.current.scrollLeft=0),U.current&&(U.current.scrollLeft=0)};X();const ie=typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>{X()}):null;return()=>{ie!=null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(ie)}},[Q]);const ee=a.useCallback(()=>{const X=Ja(u,I);X&&m?.setFocus&&m.setFocus(X)},[m,u,I]),Z=a.useCallback((X,ie)=>{!X||!ie||Math.abs((ie.scrollLeft||0)-(X.scrollLeft||0))<=1||(M.current=!0,ie.scrollLeft=X.scrollLeft,window.requestAnimationFrame(()=>{M.current=!1}))},[]),[se,Se]=a.useState({up:!1,down:!1}),ue=a.useCallback(X=>{if(!X)return;const ie=X.scrollHeight-X.scrollTop-X.clientHeight>4,me=X.scrollTop>4;Se(Ze=>Ze.up===ie&&Ze.down===me?Ze:{up:ie,down:me})},[]),ce=a.useCallback(X=>{_(),ue(X.currentTarget),!(!V||M.current)&&Z(X.currentTarget,U.current)},[_,V,Z,ue]);a.useEffect(()=>{ue(T.current)},[ue,k,B,j]),a.useEffect(()=>{const X=T.current;if(!X||typeof ResizeObserver>"u")return;const ie=new ResizeObserver(()=>ue(X));return ie.observe(X),()=>ie.disconnect()},[ue,T]);const ge=a.useCallback(X=>{!V||M.current||Z(X.currentTarget,T.current)},[V,Z]);return a.createElement(Yt,{title:e,titleRight:t,color:s,focused:n,actions:r,theme:R,className:h},typeof g=="function"?g({topPullDistance:W,loadingOlderHistory:N}):g,j.length>0?a.createElement("div",{ref:U,className:`ps-panel-sticky${V?" is-scroll-sync":""}`,onScroll:ge},j.map((X,ie)=>a.createElement(dt,{key:`sticky:${ie}`,line:X,theme:R}))):null,a.createElement("div",{ref:L,className:`ps-scroll-panel ${f}${se.down?" is-scrolled-down":""}${se.up?" is-scrolled-up":""}`.trim(),"data-session-scroll":I==="sessions"?"1":void 0,"aria-live":C||void 0,"aria-atomic":C?"false":void 0,onScroll:ce,onMouseDown:ee,onTouchStart:$,onTouchEnd:G,onTouchCancel:D},typeof E=="function"?E(k,R):y?a.createElement(op,{lines:k,theme:R,controller:m}):k.map((X,ie)=>a.createElement(dt,{key:`line:${ie}`,line:X,theme:R}))),B.length>0||c?a.createElement("div",{className:`ps-panel-bottom-sticky${c?" is-reserved":""}`},B.map((X,ie)=>a.createElement(dt,{key:`bottom-sticky:${ie}`,line:X,theme:R}))):null,b)}const fi="—";function ww(e,t){const s=typeof e?.waitReason=="string"&&e.waitReason.trim()?Iw(e.waitReason):null;if(!s)return null;const n=String(t||"");return n==="waiting"||n.startsWith("waiting on")||n==="input_required"?s:null}const Ew=10,kw=72;function Iw(e,t=Ew,s=kw){const n=String(e??"").replace(/\s+/gu," ").trim();if(!n)return"";let i=n.split(" ").slice(0,t).join(" ");if(i.length>s){const o=i.slice(0,s),l=o.lastIndexOf(" ");i=l>0?o.slice(0,l):o}return i===n?n:`${i.replace(/[.,;:—-]+$/u,"")}…`}function xw(e){return e?.cronActive===!0?"On wake":"Waiting"}function Aw({session:e,childCount:t=0,pause:s=null,controller:n=null,collapsed:r=!1,onToggle:i=null,onOpenBudget:o=null}){const l=(S,w,E="")=>{const I=w==null||w===""?fi:String(w),P=I===fi;return a.createElement("div",{className:`ps-session-detail-field${E?` ${E}`:""}${P?" is-none":""}`,key:S},a.createElement("span",{className:"ps-session-detail-label"},S),a.createElement("span",{className:"ps-session-detail-value",title:I},I))},c=e?.contextUsage,d=c&&Number.isFinite(c.currentTokens)&&Number.isFinite(c.tokenLimit)&&c.tokenLimit>0,p=d?Math.round(c.currentTokens/c.tokenLimit*100):null,u=d?`${te(c.currentTokens)} / ${te(c.tokenLimit)} · ${p}%`:null;let m=null;e&&!e.isGroup&&(m="off",e.cronActive===!0&&(m=e.cronKind==="wall-clock"?`next ${sr(e.cronNextFireAt)}`:typeof e.cronInterval=="number"?`every ${as(e.cronInterval)}`:"on"));const f=e?.model?e.reasoningEffort&&!String(e.model).includes(String(e.reasoningEffort))?`${e.model}:${e.reasoningEffort}`:e.model:null,h=e?e.visibility==="shared_write"?"shared · write":e.visibility==="shared_read"?"shared · read":"private":null,g=e?.isGroup?e.memberCount==null?null:String(e.memberCount):t>0?String(t):null,b=uh(e),y=ww(e,b?.status),v=!s&&!y?null:a.createElement("div",{className:`ps-session-detail-pause${s?" is-paused":""}`},a.createElement("span",{className:"ps-session-detail-label"},s?"Paused":xw(e)),a.createElement("span",{className:"ps-session-detail-why",...!s&&typeof e?.waitReason=="string"&&e.waitReason.trim()?{title:e.waitReason.trim()}:{}},s?s.reason:y,s&&s.clears?a.createElement("span",{className:"ps-session-detail-clears"},s.clears):null,s&&(n||o)?a.createElement("button",{type:"button",className:"ps-budget-link",title:s.provider?`Open ${s.provider} in Providers & Budgets`:"Open providers and budgets",onClick:()=>(o||(S=>n.openBudget(S)))(s.provider?{provider:s.provider}:{}).catch(()=>{})},s.provider?`Open ${s.provider}`:"Open providers and budgets"):null));if(r){const S=[];return u&&S.push(a.createElement("span",{key:"context",className:`ps-session-detail-mark${p!=null&&p>=85?" is-hot":p!=null&&p>=70?" is-warm":""}`},p!=null?`${p}%`:u)),b&&S.push(a.createElement("span",{key:"updated",className:"ps-session-detail-mark"},`${b.relative} (${b.status})`)),(s||y)&&S.push(a.createElement("span",{key:"halt",className:`ps-session-detail-mark${s?" is-paused":""}`,title:s?s.reason:y},s?"paused":"waiting")),a.createElement("div",{className:"ps-session-detail-box is-collapsed"},a.createElement("button",{type:"button",className:"ps-session-detail-summary","aria-expanded":!1,title:"Show session details",onClick:i},a.createElement("span",{className:"ps-session-detail-twisty","aria-hidden":"true"},"▸"),a.createElement("span",{className:"ps-session-detail-summary-title"},e?.title||fi),a.createElement("span",{className:"ps-session-detail-marks"},S)),v)}return a.createElement("div",{className:"ps-session-detail-box"},a.createElement("button",{type:"button",className:"ps-session-detail-collapse","aria-expanded":!0,title:"Hide session details",onClick:i},a.createElement("span",{"aria-hidden":"true"},"▾")," Less"),l("Title",e?.title,"is-title"),l("ID",e?.sessionId,"is-id"),l("Owner",e?.owner?J0(e.owner):null),l("Model",f),l("Context",u,p!=null&&p>=85?"is-hot":p!=null&&p>=70?"is-warm":""),l("Cron",m,e?.cronActive===!0?"is-armed":""),l("Agent",e?.agentId),l("Updated",b?`${b.relative} (${b.status})`:null),l("Children",g),l("Access",h),v)}function eo(e){const t=()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(e).matches:!1,[s,n]=a.useState(t);return a.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const r=window.matchMedia(e),i=o=>n(o.matches);return n(r.matches),r.addEventListener?.("change",i),()=>r.removeEventListener?.("change",i)},[e]),s}function Nw(){return eo("(pointer: coarse)")}const dp=13,up=11,pp=1.5,Cw=7;function Tw(e){return dp+(e-1)*up+pp/2-Cw/2}const Pw=a.memo(function({row:t,theme:s,structuredRows:n,mobile:r,onRowClick:i,setRef:o,drag:l}){const c=Math.max(0,t.depth),d=a.useMemo(()=>{if(c<1)return;const v=Array.from({length:c},(S,w)=>w);return{backgroundImage:v.map(()=>"linear-gradient(var(--ps-rail), var(--ps-rail))").join(", "),backgroundSize:v.map(()=>`${pp}px 100%`).join(", "),backgroundPosition:v.map(S=>`${dp+S*up}px 0`).join(", "),backgroundRepeat:"no-repeat"}},[c]),p=a.useCallback(v=>o(t.sessionId,v),[o,t.sessionId]),u=a.useCallback(v=>i(v,t),[i,t]),m=t.groupId||null,f=!!(l?.dragging&&l.overGroupId&&m===l.overGroupId),h=f&&!!t.isGroup,g=!!(l?.dragging&&l.insertBeforeId===t.sessionId),b=!!(l?.dragging&&l.insertAfterId&&l.insertAfterId===t.sessionId),y=a.useCallback(v=>{if(l?.onPointerDown&&v.button===0){if(v.currentTarget?.setPointerCapture&&v.pointerId!=null)try{v.currentTarget.setPointerCapture(v.pointerId)}catch{}l.onPointerDown(v,t)}},[l,t]);return a.createElement("button",{type:"button",ref:p,className:`ps-list-button ps-session-list-button${t.active?" is-selected":""}${t.selected?" is-multiselected":""}${t.pinned?" is-pinned":""}${f?" is-drop-zone":""}${h?" is-drop-target":""}${g?" is-insert-before":""}${b?" is-insert-after":""}${t.depth>0?" is-nested":""}`,style:d,tabIndex:t.active?0:-1,"aria-selected":t.active?"true":"false","data-session-id":t.sessionId,"data-group-row":t.isGroup?"1":void 0,"data-group-id":t.isGroup?t.groupId||"":void 0,"data-drop-group":m||void 0,"data-order-container":t.orderContainer??void 0,"data-orderable":t.orderable?"1":void 0,onPointerDown:y,onClick:u,onContextMenu:v=>{v.ctrlKey&&(v.preventDefault(),i(v,t))}},a.createElement("div",{className:"ps-line ps-session-row-content",style:{paddingInlineStart:c>0?`${Tw(c)}px`:"0px"}},a.createElement(Mw,{row:t,theme:s,structured:n,showInlineDetail:r})))});function pc(e,t){if(!Array.isArray(e))return{statusColor:null,rest:e};let s=null;const n=[];for(const r of e)if(r?.role!=="depth"&&r?.role!=="selection"){if(r?.role==="status"){s=Ge(t,r.color)||null;continue}n.push(r)}return{statusColor:s,rest:n}}function mc({color:e,node:t=!1}){return a.createElement("span",{className:`ps-session-status-dot${t?" is-node":""}`,style:e?t?{borderColor:e}:{background:e}:void 0})}function Yi({badge:e,size:t="sm"}){const[s,n]=a.useState(null),r=a.useRef(null),i=a.useRef(null);if(a.useLayoutEffect(()=>{if(!s||!i.current||typeof window>"u")return;const d=i.current.offsetWidth/2,p=6;i.current.style.left=`${Math.max(d+p,Math.min(s.x,window.innerWidth-d-p))}px`},[s]),!e)return null;const o=e.isMine?`${e.name} (you)`:e.name,l=()=>{const d=r.current;if(!d||typeof window>"u")return;const p=d.getBoundingClientRect(),u=p.bottom+44<window.innerHeight;n({x:p.left+p.width/2,y:u?p.bottom+6:p.top-6,placement:u?"below":"above"})},c=()=>n(null);return a.createElement(a.Fragment,null,a.createElement("span",{ref:r,className:`ps-owner-avatar is-${t}${e.isMine?" is-mine":""}`,"data-owner-hue":String(e.hue??0),"aria-label":o,onMouseEnter:l,onMouseLeave:c,onFocus:l,onBlur:c},e.initials),s&&typeof document<"u"?Gs.createPortal(a.createElement("span",{ref:i,className:`ps-icon-tooltip is-${s.placement}`,role:"tooltip",style:{top:`${s.y}px`}},o),document.body):null)}function fc(e){return Array.isArray(e)?e.filter(t=>!t?.ownerChip):e}function Mw({row:e,theme:t,structured:s=!1,showInlineDetail:n=!1}){if(!(s&&Array.isArray(e.titleRuns))){if(!Array.isArray(e.runs))return e.text;const f=pc(fc(e.runs),t);return a.createElement(a.Fragment,null,f.statusColor?a.createElement(mc,{color:f.statusColor,node:e.depth>0}):null,a.createElement(Yi,{badge:e.ownerBadge}),a.createElement(wc,{mark:e.canvasMark}),a.createElement("span",{className:"ps-session-row-title__text"},a.createElement(et,{runs:f.rest,theme:t})))}const i=fc(e.titleRuns),o=pc(i.filter(f=>f?.role!=="collapseBadge"),t),l=i.filter(f=>f?.role==="collapseBadge"),c=l.length>0,d=Array.isArray(e.ctxRuns)?e.ctxRuns:[],p=d.length>0,u=Array.isArray(e.detailRuns)?e.detailRuns:Array.isArray(e.selectedMetaRuns)?e.selectedMetaRuns:[],m=n&&e.active&&u.length>0;return a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-session-row-line"},a.createElement("div",{className:"ps-session-row-title"},o.statusColor?a.createElement(mc,{color:o.statusColor,node:e.depth>0}):null,a.createElement(Yi,{badge:e.ownerBadge}),a.createElement(wc,{mark:e.canvasMark}),a.createElement("span",{className:"ps-session-row-title__text"},a.createElement(et,{runs:o.rest,theme:t}))),c?a.createElement("div",{className:"ps-session-row-badge"},a.createElement(et,{runs:l,theme:t})):null,p?a.createElement("div",{className:"ps-session-row-ctx"},a.createElement(et,{runs:d,theme:t})):null),m?a.createElement("div",{className:"ps-session-row-detail"},a.createElement(et,{runs:u,theme:t})):null)}function _w(e){const t=a.useRef(e),s=a.useRef(null),n=a.useMemo(()=>{try{return JSON.stringify(e)}catch{return null}},[e]);return(n===null||s.current!==n)&&(s.current=n,t.current=e),t.current}const hc=10,$w=1.6;function Rw(e,t){return Math.abs(e)<hc&&Math.abs(t)<hc?null:Math.abs(e)>Math.abs(t)*$w?"x":"y"}function Lw(e,t=!0){a.useEffect(()=>{const s=e.current;if(!s||!t)return;let n=0,r=0,i=0,o=0,l=null,c=!1;const d=g=>g==="x"?s.scrollWidth>s.clientWidth+1:s.scrollHeight>s.clientHeight+1,p=g=>{if(c=!1,g.targetTouches.length!==1){l="done";return}const b=g.targetTouches[0];n=i=b.clientX,r=o=b.clientY,l=null},u=g=>{if(l==="done"||g.targetTouches.length!==1)return;const b=g.targetTouches[0],y=b.clientX-n,v=b.clientY-r;if(l===null){const E=d("y");if(!E&&!d("x")){l="done";return}if(E&&g.cancelable&&g.preventDefault(),l=Rw(y,v),l===null)return;if(!d(l)||!g.cancelable){l="done";return}i=b.clientX,o=b.clientY,c=!0}g.cancelable&&g.preventDefault();const S=b.clientX-i,w=b.clientY-o;l==="x"?s.scrollLeft-=S:s.scrollTop-=w,i=b.clientX,o=b.clientY},m=g=>{if(g.targetTouches.length>0){l="done";return}l=null},f=()=>{l="done"},h=g=>{!c||g.detail===0||(c=!1,g.preventDefault(),g.stopPropagation())};return s.addEventListener("touchstart",p,{passive:!0}),s.addEventListener("touchmove",u,{passive:!1}),s.addEventListener("touchend",m,{passive:!0}),s.addEventListener("touchcancel",f,{passive:!0}),s.addEventListener("click",h,!0),()=>{s.removeEventListener("touchstart",p),s.removeEventListener("touchmove",u),s.removeEventListener("touchend",m),s.removeEventListener("touchcancel",f),s.removeEventListener("click",h,!0)}},[e,t])}const Ow=a.memo(function({query:t="",onQuery:s,matchCount:n=0,mobile:r=!1,expanded:i=!1,onOpen:o,onClose:l,triggerRef:c,listRef:d=null}){const[p,u]=a.useState(t),m=a.useRef(null),f=a.useRef(t),h=a.useRef(!1),g=a.useRef(s);g.current=s;const b=()=>{clearTimeout(m.current),m.current=null},y=I=>{b(),f.current=I,g.current?.(I)},v=I=>{b(),h.current||(m.current=setTimeout(()=>y(I),150))};a.useEffect(()=>()=>clearTimeout(m.current),[]),a.useEffect(()=>{t!==f.current&&(b(),f.current=t,u(t))},[t]);const S=a.useRef(null),w=()=>{p||t?(u(""),y("")):l?.()},E=p!==t?"Searching…":p?`${n} ${n===1?"match":"matches"}`:"";return a.createElement("div",{className:`ps-session-search${i?" is-open":""}`,"data-session-search":"true"},r?a.createElement("button",{type:"button",className:"ps-session-search-trigger",ref:c,"aria-expanded":i,"aria-label":"Search sessions",title:"Search sessions",onClick:o},a.createElement(yc)):null,a.createElement("div",{className:"ps-session-search-fields"},a.createElement(yc),a.createElement("input",{ref:S,type:"text",inputMode:"search","aria-label":"Find a session",placeholder:"Find a session…",value:p,onChange:I=>{const P=I.target.value;u(P),v(P)},onCompositionStart:()=>{h.current=!0,b()},onCompositionEnd:I=>{h.current=!1,v(I.currentTarget.value)},onKeyDown:I=>{if(I.key==="Escape"){I.preventDefault(),w();return}I.key==="ArrowDown"&&(I.preventDefault(),p!==t&&y(p),requestAnimationFrame(()=>d?.current?.querySelector?.(".ps-session-list-button")?.focus({preventScroll:!0})))}}),E?a.createElement("span",{className:"ps-session-search-count",role:"status","aria-live":"polite"},E):null,p?a.createElement("button",{type:"button",className:"ps-session-search-clear","aria-label":p?"Clear session search":"Close session search",title:p?"Clear":"Close",onClick:w},"×"):null))}),Fw=Object.freeze([]);function Xi({controller:e,actions:t=null,panelClassName:s="",structuredRows:n=!1,showDetailBox:r=null,selection:i=null,actionsOnly:o=!1,actionsHost:l=null,onAction:c=null,onDialogChange:d=null}){const p=String(s).includes("ps-mobile-session-pane"),u=eo("(max-width: 920px)"),[m,f]=a.useState(!1),h=u&&m,g=a.useRef(null),b=a.useRef(null),y=a.useRef(null),v=Nw(),S=p||v;Lw(y,S);const w=J(e,H=>H.ui.themeId),E=Pt(w),I=J(e,H=>!!H.ui.sessionDetailCollapsed),P=a.useRef(new Map),C=J(e,H=>({branding:H.branding,activeSessionId:H.sessions.activeSessionId,sessionsById:H.sessions.byId,sessionsFlat:H.sessions.flat,filterQuery:H.sessions.filterQuery||"",ownerFilter:H.sessions.ownerFilter,pinnedIds:H.sessions.pinnedIds,manualOrder:H.sessions.manualOrder,sortMode:H.sessions.sortMode,sortSnapshot:H.sessions.sortSnapshot,selectedIds:H.sessions.selectedIds,selectMode:H.sessions.selectMode,auth:H.auth,connectionMode:H.connection?.mode||"local",modalOpen:!!H.ui.modal,focused:H.ui.focusRegion==="sessions",listDeselected:!!H.sessions.listDeselected,canvasBySessionId:H.canvas?.bySessionId,canvasPrefs:H.canvas?.prefs,budgetPaused:H.budget?.paused}),Ke),A=i?{...C,activeSessionId:i.sessionId,filterQuery:i.query||"",selectedIds:Fw,selectMode:!1,focused:!0,listDeselected:!i.sessionId}:C,R=a.useMemo(()=>us({sessions:{activeSessionId:A.activeSessionId,byId:A.sessionsById,flat:A.sessionsFlat,filterQuery:A.filterQuery,ownerFilter:A.ownerFilter,pinnedIds:A.pinnedIds,manualOrder:A.manualOrder,sortMode:A.sortMode,sortSnapshot:A.sortSnapshot,selectedIds:A.selectedIds,selectMode:A.selectMode,listDeselected:A.listDeselected},auth:A.auth,connection:{mode:A.connectionMode},branding:A.branding,canvas:{bySessionId:A.canvasBySessionId,prefs:A.canvasPrefs},budget:{paused:A.budgetPaused}}),[A.activeSessionId,A.auth,A.branding,A.budgetPaused,A.canvasBySessionId,A.canvasPrefs,A.connectionMode,A.filterQuery,A.listDeselected,A.ownerFilter,A.pinnedIds,A.manualOrder,A.sortMode,A.sortSnapshot,A.selectedIds,A.selectMode,A.sessionsById,A.sessionsFlat]),T=_w(R),L=a.useRef({top:0,left:0,restore:!1}),U=a.useRef(null);U.current={query:A.filterQuery,setQuery:i?i.onQuery:H=>e.setSessionFilterQuery(H)};const M=a.useCallback(H=>{const q=String(H||""),ae=String(U.current?.query||""),be=y.current;!ae.trim()&&q.trim()&&be?L.current={top:be.scrollTop,left:be.scrollLeft,restore:!1}:ae.trim()&&!q.trim()&&(L.current.restore=!0),U.current?.setQuery?.(q)},[]),k=a.useCallback(()=>{f(!1),M(""),requestAnimationFrame(()=>b.current?.focus({preventScroll:!0}))},[M]);a.useLayoutEffect(()=>{const H=g.current;if(!h||!H)return;const q=window.visualViewport,ae=()=>{H.style.top=`${(q?.offsetTop||0)+8}px`,H.style.left=`${(q?.offsetLeft||0)+8}px`,H.style.width=`${(q?.width||window.innerWidth)-16}px`,H.style.height=`${(q?.height||window.innerHeight)-16}px`};return ae(),H.showModal(),H.querySelector("input")?.focus({preventScroll:!0}),q?.addEventListener("resize",ae),q?.addEventListener("scroll",ae),window.addEventListener("resize",ae),()=>{q?.removeEventListener("resize",ae),q?.removeEventListener("scroll",ae),window.removeEventListener("resize",ae),H.close()}},[h]),a.useEffect(()=>{u||f(!1)},[u]),a.useLayoutEffect(()=>{A.filterQuery||!L.current.restore||!y.current||(y.current.scrollTop=L.current.top,y.current.scrollLeft=L.current.left,L.current.restore=!1)},[T,A.filterQuery]);const _=A.filterQuery?T.reduce((H,q)=>H+(q.searchMatch?1:0),0):0,$=A.activeSessionId&&A.sessionsById[A.activeSessionId]||null,G=A.activeSessionId&&T.find(H=>H.sessionId===A.activeSessionId)||null,[D,W]=a.useState(!1),[N,j]=a.useState(null),B=a.useRef(!1),V=["modelPicker","reasoningEffortPicker","contextTierPicker"],Q=J(e,H=>V.includes(H.ui.modal?.type));a.useEffect(()=>{!Q&&B.current&&(B.current=!1,W(!0))},[Q]),a.useEffect(()=>{d?.(D||!!N||Q)},[D,N,Q,d]);const ee=()=>{B.current=!0,W(!1),e.openSwitchModelPicker(()=>{B.current=!1}).then(()=>{!V.includes(e.getState().ui.modal?.type)&&B.current&&(B.current=!1,W(!0))}).catch(H=>{B.current=!1,W(!0),e.dispatch({type:"ui/status",text:H?.message||String(H)||"Failed to switch model"})})},Z=A.auth?.principal||null,se=A.auth?.authorization?.role,Se=se==="admin"||se==="anonymous",ue=Se&&A.auth?.adminScope!=="cluster",ce=!!($?.owner&&Z&&String($.owner.provider)===String(Z.provider)&&String($.owner.subject)===String(Z.subject)),ge=!!($&&!$.isGroup&&($.isSystem?Se:ue||ce)),X=Array.isArray(A.selectedIds)?A.selectedIds.length:0,ie=X>1,me=!!($?.isGroup&&!ie),Ze=!!($&&!$.isSystem&&($.isGroup||!$.parentSessionId&&!$.groupId)),Pe=!!($&&Array.isArray(A.pinnedIds)&&A.pinnedIds.includes($.sessionId)),at=!!($?.isGroup&&Number($.memberCount||0)===0),Ve=ie?Array.isArray(A.selectedIds)&&A.selectedIds.some(H=>{const q=A.sessionsById[H];return q&&!q.isSystem&&!q.isGroup}):$?.isGroup?!0:!!$,At=X>0,K=!!($&&!A.listDeselected&&!$.isSystem&&!$.isGroup&&!$.parentSessionId),fe=At?A.selectedIds.filter(H=>{const q=A.sessionsById[H];return q&&!q.isSystem&&!q.isGroup&&!q.parentSessionId}):K?[$.sessionId]:[],qe=`ps-session-pane${s?` ${s}`:""}`,Ee=a.useRef(null);Ee.current={rows:T,viewState:A,controller:e,selection:i,searchOverlay:h,closeSearch:k};const[oe,$e]=a.useState({dragging:!1,ids:[],titles:[],overGroupId:null,insertBeforeId:void 0,insertAfterId:null,x:0,y:0}),Le=a.useRef(null),He=a.useRef(null),pe=a.useCallback(()=>{He.current!=null&&(cancelAnimationFrame(He.current),He.current=null)},[]),x=a.useCallback(()=>{let H=y.current;for(;H&&H!==document.body;){const q=window.getComputedStyle(H).overflowY;if(/(auto|scroll|overlay)/.test(q)&&H.scrollHeight-H.clientHeight>1)return H;H=H.parentElement}return null},[]),z=a.useCallback((H,q)=>{const re=x();if(!re){pe();return}const Ne=re.getBoundingClientRect();let Ie=0;if(q<Ne.top+48?Ie=-14*Math.min(1,(Ne.top+48-q)/48):q>Ne.bottom-48&&(Ie=14*Math.min(1,(q-(Ne.bottom-48))/48)),Le.current&&(Le.current.autoScrollStep=Ie),!Le.current){pe();return}if(He.current!=null)return;const Ue=()=>{const st=Le.current;if(!st||!st.autoScrollStep){pe();return}re.scrollTop+=st.autoScrollStep,He.current=requestAnimationFrame(Ue)};He.current=requestAnimationFrame(Ue)},[x,pe]),ne=a.useCallback(H=>{const q=Le.current;if(Le.current=null,pe(),$e({dragging:!1,ids:[],titles:[],overGroupId:null,insertBeforeId:void 0,insertAfterId:null,x:0,y:0}),!(!H||!q?.started||q.ids.length===0)){if(q.intent==="reorder"){e.dispatch({type:"sessions/reorder",sessionId:q.ids[0],beforeSessionId:q.beforeSessionId});return}q.intent!=="file"&&q.intent!=="unfile"||e.moveSessionsToGroup(q.overGroupId,q.ids).catch(ae=>{e.dispatch({type:"ui/status",text:`Move failed: ${ae?.message||ae}`})})}},[e,pe]),ye=a.useCallback((H,q)=>typeof H!="number"||typeof q!="number"?null:(document.elementFromPoint(H,q)?.closest?.("[data-drop-group]")||null)?.getAttribute("data-drop-group")||null,[]),Me=a.useCallback((H,q,ae,be)=>{if(typeof H!="number"||typeof q!="number"||ae==null)return;const re=Array.from(document.querySelectorAll(`[data-order-container="${CSS.escape(ae)}"][data-orderable="1"]`));if(re.length===0)return;for(const Ue of re){const st=Ue.getBoundingClientRect();if(q<st.top+st.height/2)return{before:Ue.getAttribute("data-session-id")||null,after:null}}const Ie=re[re.length-1]?.getAttribute("data-session-id")||null;return{before:null,after:Ie&&Ie!==be?Ie:null}},[]),Re=a.useCallback((H,q,ae)=>{const be=ye(H,q);if(ae?.isGroup){const Ue=ae.ids.length===1?Me(H,q,ae.container,ae.ids[0]):void 0;return Ue===void 0?{kind:"none",overGroupId:null,before:void 0,after:null}:{kind:"reorder",overGroupId:null,before:Ue.before,after:Ue.after}}const re=ae?.ownGroupId||null;if(be&&be!==re)return{kind:"file",overGroupId:be,before:void 0,after:null};if(!be&&re)return{kind:"unfile",overGroupId:null,before:void 0,after:null};const Ie=ae?.orderable&&ae.ids.length===1?Me(H,q,ae.container,ae.ids[0]):void 0;return Ie===void 0?{kind:be?"file":"none",overGroupId:be,before:void 0,after:null}:{kind:"reorder",overGroupId:null,before:Ie.before,after:Ie.after}},[ye,Me]);a.useEffect(()=>{if(!oe.dragging)return;const H=re=>{const Ne=Le.current;if(!Ne)return;const Ie=Re(re.clientX,re.clientY,Ne);Ne.intent=Ie.kind,Ne.overGroupId=Ie.overGroupId,Ne.beforeSessionId=Ie.before,z(re.clientX,re.clientY),document.body.classList.toggle("ps-drop-ok",Ie.kind==="file"),$e(Ue=>({...Ue,intent:Ie.kind,overGroupId:Ie.overGroupId,insertBeforeId:Ie.before,insertAfterId:Ie.after,x:re.clientX,y:re.clientY}))},q=re=>{const Ne=Le.current;if(Ne&&typeof re?.clientX=="number"){const Ie=Re(re.clientX,re.clientY,Ne);Ne.intent=Ie.kind,Ne.overGroupId=Ie.overGroupId,Ne.beforeSessionId=Ie.before}ne(!0)},ae=()=>ne(!1),be=re=>{re.key==="Escape"&&ne(!1)};return window.addEventListener("pointermove",H),window.addEventListener("pointerup",q),window.addEventListener("pointercancel",ae),window.addEventListener("keydown",be),document.body.classList.add("ps-dragging-sessions"),()=>{window.removeEventListener("pointermove",H),window.removeEventListener("pointerup",q),window.removeEventListener("pointercancel",ae),window.removeEventListener("keydown",be),document.body.classList.remove("ps-dragging-sessions"),document.body.classList.remove("ps-drop-ok")}},[oe.dragging,ne,Re,z]);const ot=a.useMemo(()=>({dragging:oe.dragging,overGroupId:oe.overGroupId,insertBeforeId:oe.insertBeforeId,insertAfterId:oe.insertAfterId,onPointerDown:(H,q)=>{if(q.isSystem||!q.orderable&&!q.isGroup&&q.depth>0)return;const ae=H.clientX,be=H.clientY,re={row:q,startX:ae,startY:be,started:!1,ids:[],overGroupId:null,beforeSessionId:void 0,orderable:!!q.orderable,container:q.orderContainer??null,isGroup:!!q.isGroup,ownGroupId:q.groupId||null,intent:"none",autoScrollStep:0},Ne=Ue=>{if(re.started||Math.hypot(Ue.clientX-ae,Ue.clientY-be)<5)return;re.started=!0;const st=Ee.current.viewState,Bt=Array.isArray(st.selectedIds)?st.selectedIds:[],Xt=Bt.includes(q.sessionId)&&Bt.length>1?Bt:[q.sessionId],Tr=st.sessionsById||{};re.ids=Xt,Le.current=re,$e({dragging:!0,ids:Xt,titles:Xt.map(bn=>Tr[bn]?.title||String(bn).slice(0,8)).slice(0,3),overGroupId:null,x:Ue.clientX,y:Ue.clientY})},Ie=()=>{window.removeEventListener("pointermove",Ne),window.removeEventListener("pointerup",Ie)};window.addEventListener("pointermove",Ne),window.addEventListener("pointerup",Ie)}}),[oe.dragging,oe.overGroupId,oe.insertBeforeId,oe.insertAfterId]),Ye=a.useCallback((H,q)=>{const{rows:ae,viewState:be,controller:re,selection:Ne}=Ee.current;if(Ee.current.searchOverlay&&!q.isGroup){Ne?Ne.onSelect(q.sessionId):(re.setFocus("sessions"),re.loadSession(q.sessionId).catch(()=>{})),Ee.current.closeSearch();return}if(Ne){(q.isGroup||q.hasChildren&&q.active)&&re.dispatch({type:q.collapsed?"sessions/expand":"sessions/collapse",sessionId:q.sessionId}),q.isGroup||Ne.onSelect(q.sessionId);return}if(H.metaKey||H.ctrlKey){H.preventDefault(),be.selectMode||re.dispatch({type:"sessions/selectMode",enabled:!0}),re.dispatch({type:"sessions/selectToggle",sessionId:q.sessionId}),re.setFocus("sessions");return}if(H.shiftKey&&be.activeSessionId){H.preventDefault();const Ue=ae.map(Xt=>Xt.sessionId),st=Ue.indexOf(be.activeSessionId),Bt=Ue.indexOf(q.sessionId);if(st>=0&&Bt>=0){const[Xt,Tr]=st<=Bt?[st,Bt]:[Bt,st],bn=Ue.slice(Xt,Tr+1),Np=Array.from(new Set([...be.selectedIds||[],...bn]));re.setSessionSelection(Np),re.setFocus("sessions");return}}if(q.hasChildren&&q.active){re.dispatch({type:q.collapsed?"sessions/expand":"sessions/collapse",sessionId:q.sessionId}),re.setFocus("sessions");return}be.selectMode&&re.dispatch({type:"sessions/selectClear"}),re.setFocus("sessions"),q.sessionId===be.activeSessionId?re.dispatch({type:"sessions/listReselect"}):q.active||re.loadSession(q.sessionId).catch(()=>{})},[]),tt=a.useCallback((H,q)=>{H&&(q?P.current.set(H,q):P.current.delete(H))},[]),we=a.useRef(null),Xe=`${A.activeSessionId||""}${A.focused?1:0}${A.modalOpen?1:0}`;a.useEffect(()=>{if(A.modalOpen||!A.focused||!A.activeSessionId){we.current=null;return}const H=P.current.get(A.activeSessionId);if(!H||we.current===Xe)return;we.current=Xe;const q=document.activeElement,ae=!!(q&&(q.tagName==="INPUT"||q.tagName==="TEXTAREA"||q.tagName==="SELECT"||q.isContentEditable));A.focused&&q!==H&&!ae&&H.focus({preventScroll:!0})},[Xe,A.activeSessionId,A.focused,A.modalOpen,A.sessionsFlat]);const St=a.createElement(a.Fragment,null,!o&&ie?a.createElement("span",{className:"ps-mini-button-label",style:{padding:"0 6px",fontSize:"12px",opacity:.85},title:"Multiple sessions selected. Move to group or cancel selected sessions; click Clear to exit."},`${X} selected`):null,!o&&(ie?a.createElement(ve,{className:"ps-mini-button",icon:"✕",label:"Clear multi-selection",onClick:()=>e.handleCommand(O.CLEAR_SESSION_SELECTION).catch(()=>{})}):a.createElement(ve,{className:"ps-mini-button ps-pin-icon",icon:a.createElement(n0),onClick:()=>e.handleCommand(O.PIN_SESSION).catch(()=>{}),disabled:!Ze,active:Pe,label:Ze?Pe?"Unpin this session":"Pin this session to the top of the list":"Only top-level non-system sessions can be pinned"})),!o&&a.createElement(ve,{className:"ps-mini-button",icon:fe.length>1?a.createElement("span",{className:"ps-icon-badge"},a.createElement(Sc),a.createElement("span",{className:"ps-icon-badge__count"},String(fe.length))):a.createElement(Sc),onClick:()=>e.handleCommand(O.OPEN_MOVE_TO_GROUP).catch(()=>{}),label:fe.length>1?`Move ${fe.length} selected sessions to a group`:fe.length===1?"Move this session to a group":"New group"}),a.createElement(ve,{className:"ps-mini-button",icon:a.createElement(mp),onClick:()=>{if($?.isGroup){e.handleCommand(O.OPEN_RENAME_SESSION).catch(()=>{});return}W(!0)},disabled:!ge&&!me||ie,label:ie?"Disabled while multiple sessions are selected":$?.isSystem?"System sessions are managed by administrators":$?.isGroup?"Rename folder":ge?o?"Manage session — rename and switch model":"Manage session — rename, switch model, and sharing":"Only this session's owner or an admin can manage it"}),!o&&a.createElement(ve,{className:"ps-mini-button",icon:a.createElement(s0),onClick:()=>{const H=$?.sessionId;if(!H)return;const q=Du(H);q&&(lr(q),j({url:q,warn:!1}),uv(e,H).then(ae=>{j(be=>be&&be.url===q?{...be,warn:ae}:be)}).catch(()=>{}))},disabled:!$||$.isGroup||ie,label:"Copy link — copy a direct link to this session"}),a.createElement(ve,{className:"ps-mini-button",icon:a.createElement($?.isSystem?Ww:Qi),onClick:()=>e.handleCommand($?.isGroup?O.DELETE_SESSION:O.OPEN_TERMINATE_PICKER).catch(()=>{}),disabled:!Ve,label:ie?`Terminate ${X} selected sessions (Mark Completed, Cancel, or Delete)`:$?.isGroup?at?"Delete this empty group":"This group cannot be deleted yet":$?.isSystem?"Restart this system session (complete, terminate, or hard delete)":"Terminate — mark completed, cancel, or delete this session"}),t),qs=oe.dragging?a.createElement("div",{className:"ps-drag-ghost",style:{left:`${oe.x}px`,top:`${oe.y}px`}},a.createElement("div",{className:`ps-drag-ghost__stack${oe.ids.length>1?" is-collection":""}`},oe.ids.length>1?a.createElement("span",{className:"ps-drag-ghost__count"},String(oe.ids.length)):null,a.createElement("span",{className:"ps-drag-ghost__title"},oe.ids.length>1?`${oe.ids.length} sessions`:oe.titles[0]||"session")),a.createElement("div",{className:"ps-drag-ghost__hint"},oe.intent==="file"?"Release to file here":oe.intent==="unfile"?"Release to remove from folder":oe.intent==="reorder"?"Release to move here":"Release to cancel")):null,de=o?l?Gs.createPortal(a.createElement("div",{className:"ps-moa-control-actions",onClick:c},St),l):null:a.createElement(Yt,{title:[{text:h?"Find a session":"Sessions",color:"yellow",bold:!0}],color:"yellow",focused:A.focused,theme:E,actions:h?a.createElement(ve,{label:"Close session search",icon:"×",onClick:k}):i?a.createElement(a.Fragment,null,i.onCreate?a.createElement(ve,{className:"ps-mini-button",icon:a.createElement(fp),label:"Create New Session",onClick:i.onCreate}):null,t):St,className:qe},a.createElement("div",{ref:y,onKeyDown:i?H=>{if(!["ArrowUp","ArrowDown","Home","End"].includes(H.key)||H.altKey||H.ctrlKey||H.metaKey)return;const q=[...y.current.querySelectorAll(".ps-session-list-button")],ae=q.indexOf(H.target.closest(".ps-session-list-button")),be=H.key==="Home"?0:H.key==="End"?q.length-1:Math.max(0,Math.min(q.length-1,ae+(H.key==="ArrowUp"?-1:1))),re=q[be];re&&(H.preventDefault(),H.stopPropagation(),re.dataset.sessionId&&i.onSelect(re.dataset.sessionId),re.focus())}:void 0,className:`ps-action-list ps-session-list${oe.dragging?" is-dragging":""}`,onClick:H=>{H.target instanceof Element&&H.target.closest(".ps-session-list-button")||(i?i.onSelect(null):e.dispatch({type:"sessions/listDeselect"}))}},T.length===0?a.createElement("div",{className:"ps-empty-state"},A.filterQuery?`No sessions matched "${A.filterQuery}".`:"No sessions yet."):T.map(H=>a.createElement(Pw,{key:H.sessionId,row:H,theme:E,structuredRows:n,mobile:p,onRowClick:Ye,setRef:tt,drag:i||S||A.sortMode!=="saved"?null:ot}))),a.createElement("div",{className:"ps-session-find-controls",onPointerDown:H=>{u&&H.button===0&&H.target.closest?.("button")&&H.currentTarget.contains(document.activeElement)&&document.activeElement?.matches("input")&&H.preventDefault()}},a.createElement("div",{className:"ps-session-sort-controls"},a.createElement("div",{className:"ps-session-sort-modes",role:"group","aria-label":"Session sort order"},...[["used","Recently used","M12 8v4l3 2",!0],["updated","Recently updated","M3 12h4l3-7 4 14 3-7h4"],["saved","Saved order","M6 3h12v18l-6-4-6 4Z"]].map(([H,q,ae,be])=>a.createElement(ve,{key:H,label:q,className:"ps-session-sort-button",active:(A.sortMode||"saved")===H,pressed:(A.sortMode||"saved")===H,icon:a.createElement("svg",{viewBox:"0 0 24 24",width:18,height:18,fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},be?a.createElement("circle",{cx:12,cy:12,r:9}):null,a.createElement("path",{d:ae})),onClick:()=>e.dispatch({type:"sessions/sortMode",mode:H})}))),a.createElement(ve,{label:"Refresh session order",className:"ps-session-sort-refresh",icon:a.createElement("svg",{viewBox:"0 0 24 24",width:18,height:18,fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},a.createElement("path",{d:"M20 7v5h-5M20 12a8 8 0 1 0-2 5M20 7v5"})),onClick:async()=>{try{await e.refreshSessions(),e.dispatch({type:"sessions/refreshSort"})}catch{e.dispatch({type:"ui/status",text:"Could not refresh sessions. Try again."})}}})),a.createElement(Ow,{query:A.filterQuery,onQuery:M,matchCount:_,mobile:u,expanded:h,onOpen:()=>f(!0),onClose:k,triggerRef:b,listRef:y})),!h&&(r===null?!p:r)?a.createElement(Aw,{session:$,childCount:G?.childCount||0,pause:G?.pause||null,controller:e,collapsed:I,onToggle:()=>e.dispatch({type:"ui/sessionDetailCollapsed",collapsed:!I})}):null);return a.createElement(a.Fragment,null,qs,h?null:de,a.createElement("dialog",{ref:g,className:"ps-session-search-overlay","aria-label":"Find a session",onCancel:H=>{H.preventDefault(),k()},onKeyDownCapture:H=>{H.key==="Escape"&&(H.preventDefault(),H.stopPropagation(),k())},onClick:H=>{H.target===H.currentTarget&&k()}},h?de:null),D&&$&&!$.isGroup?a.createElement(i0,{controller:e,sessionId:$.sessionId,initialTitle:$.title||"",allowSharing:!o,currentModel:$.model||"",currentReasoningEffort:$.reasoningEffort||"",principal:A.auth?.principal||null,onClose:()=>W(!1),onSwitchModel:ee,onChanged:()=>{}}):null,N?a.createElement(Dw,{url:N.url,warn:N.warn,onCopyAgain:()=>{lr(N.url),e.dispatch({type:"ui/status",text:lv})},onClose:()=>j(null)}):null)}function Dw({url:e,warn:t,onCopyAgain:s,onClose:n}){const[r,i]=a.useState(""),o=Da(e,Ir).length>1,l=a.useCallback((d,p)=>{d==="session"&&!o?s?.():navigator?.clipboard?.writeText&&navigator.clipboard.writeText(p).catch(()=>{}),i(d),window.setTimeout(()=>i(""),1500)},[o,s]),c=d=>d.stopPropagation();return a.createElement("div",{className:"ps-share-overlay",onClick:n},a.createElement("div",{className:"ps-link-modal",onClick:c},a.createElement("div",{className:"ps-share-modal-head"},a.createElement("span",null,o?"Session links copied":"Link copied"),a.createElement("button",{className:"ps-modal-close",onClick:n,"aria-label":"Close",title:"Close"},"✕")),a.createElement("div",{className:"ps-share-section-sub"},o?"All entry-point links were copied. Copy just the one your recipient's network can reach, or take both.":"Copied to your clipboard — anyone with access can open the session from this link."),a.createElement(Bu,{url:e,keyPrefix:"session",copied:r,onCopy:l}),t?a.createElement("div",{className:"ps-link-warn"},dv):null))}const gc={private:{glyph:"🔒",label:"Private"},shared_read:{glyph:"👁",label:"Shared · read"},shared_write:{glyph:"✎",label:"Shared · write"}};function Be({children:e}){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},e)}function mp(){return a.createElement(Be,null,a.createElement("path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"}))}function to(){return a.createElement(Be,null,a.createElement("path",{d:"M21 4H3l7.2 8.5V19l3.6 2v-8.5L21 4z"}))}function yc(){return a.createElement(Be,null,a.createElement("circle",{cx:"11",cy:"11",r:"7"}),a.createElement("path",{d:"m20 20-4-4"}))}function fp(){return a.createElement(Be,null,a.createElement("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),a.createElement("line",{x1:"5",y1:"12",x2:"19",y2:"12"}))}function Bw(){return a.createElement(Be,null,a.createElement("path",{d:"M3 6h18"}),a.createElement("path",{d:"M8 6V4h8v2"}),a.createElement("path",{d:"M19 6l-1 15H6L5 6"}),a.createElement("path",{d:"M10 11v5"}),a.createElement("path",{d:"M14 11v5"}))}function Hw(){return a.createElement(Be,null,a.createElement("circle",{cx:"12",cy:"12",r:"9"}),a.createElement("path",{d:"M12 3a9 9 0 0 1 0 18z",fill:"currentColor"}))}function hp(){return a.createElement(Be,null,a.createElement("path",{d:"M8 3H5a2 2 0 0 0-2 2v3"}),a.createElement("path",{d:"M16 3h3a2 2 0 0 1 2 2v3"}),a.createElement("path",{d:"M21 16v3a2 2 0 0 1-2 2h-3"}),a.createElement("path",{d:"M3 16v3a2 2 0 0 0 2 2h3"}))}function Uw(){return a.createElement(Be,null,a.createElement("path",{d:"M8 3v3a2 2 0 0 1-2 2H3"}),a.createElement("path",{d:"M21 8h-3a2 2 0 0 1-2-2V3"}),a.createElement("path",{d:"M16 21v-3a2 2 0 0 1 2-2h3"}),a.createElement("path",{d:"M3 16h3a2 2 0 0 1 2 2v3"}))}function jw(){return a.createElement(Be,null,a.createElement("circle",{cx:"12",cy:"12",r:"3"}),a.createElement("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"}))}function Gw(){return a.createElement(Be,null,a.createElement("circle",{cx:"12",cy:"12",r:"9"}),a.createElement("path",{d:"M14.5 9.2a2.6 2.6 0 0 0-2.5-1.6c-1.5 0-2.6.8-2.6 2s1 1.7 2.6 2 2.6.8 2.6 2-1.1 2-2.6 2a2.6 2.6 0 0 1-2.5-1.6"}),a.createElement("path",{d:"M12 6v1.6"}),a.createElement("path",{d:"M12 16.4V18"}))}function Ww(){return a.createElement(Be,null,a.createElement("path",{d:"M21 12a9 9 0 1 1-2.64-6.36"}),a.createElement("path",{d:"M21 3v5h-5"}))}function qw(){return a.createElement(Be,null,a.createElement("path",{d:"M12 16V4"}),a.createElement("path",{d:"M7.5 8.5L12 4l4.5 4.5"}),a.createElement("path",{d:"M4 15v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3"}))}function gp(){return a.createElement(Be,null,a.createElement("path",{d:"M12 4v12"}),a.createElement("path",{d:"M7.5 11.5L12 16l4.5-4.5"}),a.createElement("path",{d:"M4 15v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-3"}))}function zw(){return a.createElement(Be,null,a.createElement("line",{x1:"4.5",y1:"3",x2:"4.5",y2:"21"}),a.createElement("line",{x1:"19.5",y1:"3",x2:"19.5",y2:"21"}),a.createElement("path",{d:"M4.5 8.5h13"}),a.createElement("path",{d:"M15 6l2.5 2.5-2.5 2.5"}),a.createElement("path",{d:"M19.5 15.5h-13"}),a.createElement("path",{d:"M9 13l-2.5 2.5 2.5 2.5"}))}function Kw(){return a.createElement(Be,null,a.createElement("rect",{x:3,y:4,width:7,height:16,rx:1}),a.createElement("rect",{x:13,y:4,width:8,height:6.5,rx:1}),a.createElement("rect",{x:13,y:13.5,width:8,height:6.5,rx:1}))}function bc(){return a.createElement(Be,null,a.createElement("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),a.createElement("line",{x1:"9.5",y1:"4",x2:"9.5",y2:"20"}),a.createElement("line",{x1:"12.5",y1:"9",x2:"18",y2:"9"}),a.createElement("line",{x1:"12.5",y1:"13",x2:"18",y2:"13"}))}function Vw(){return a.createElement(Be,null,a.createElement("path",{d:"M4 17l6-6-6-6"}),a.createElement("line",{x1:"12",y1:"19",x2:"20",y2:"19"}))}function Yw(){return a.createElement(Be,null,a.createElement("circle",{cx:"6",cy:"6",r:"2.6"}),a.createElement("circle",{cx:"18",cy:"6",r:"2.6"}),a.createElement("circle",{cx:"12",cy:"18",r:"2.6"}),a.createElement("line",{x1:"8.6",y1:"6",x2:"15.4",y2:"6"}),a.createElement("line",{x1:"7.4",y1:"8.3",x2:"10.6",y2:"15.7"}),a.createElement("line",{x1:"16.6",y1:"8.3",x2:"13.4",y2:"15.7"}))}const Xw="M12 2.3 20.4 7.15v9.7L12 21.7 3.6 16.85V7.15Z",Qw="M15.2 10.1A4.2 4.2 0 0 1 15.2 11.9L14.23 11.69A3.2 3.2 0 0 1 13.8 12.73L14.64 13.26A4.2 4.2 0 0 1 13.36 14.54L12.83 13.7A3.2 3.2 0 0 1 11.79 14.13L12 15.1A4.2 4.2 0 0 1 10.2 15.1L10.41 14.13A3.2 3.2 0 0 1 9.37 13.7L8.84 14.54A4.2 4.2 0 0 1 7.56 13.26L8.4 12.73A3.2 3.2 0 0 1 7.97 11.69L7 11.9A4.2 4.2 0 0 1 7 10.1L7.97 10.31A3.2 3.2 0 0 1 8.4 9.27L7.56 8.74A4.2 4.2 0 0 1 8.84 7.46L9.37 8.3A3.2 3.2 0 0 1 10.41 7.87L10.2 6.9A4.2 4.2 0 0 1 12 6.9L11.79 7.87A3.2 3.2 0 0 1 12.83 8.3L13.36 7.46A4.2 4.2 0 0 1 14.64 8.74L13.8 9.27A3.2 3.2 0 0 1 14.23 10.31ZM12.8 11A1.7 1.7 0 0 0 9.4 11A1.7 1.7 0 0 0 12.8 11Z",Zw="M7.23 15.01A5.7 5.7 0 0 1 17.76 14.55L19.11 15.04L15.1 16.57L14.71 13.44L16.06 13.93A3.9 3.9 0 0 0 8.87 14.25Z";function Jw(){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},a.createElement("path",{d:Xw,strokeWidth:"1.9",strokeLinejoin:"round"}),a.createElement("path",{d:Qw,fill:"currentColor",stroke:"none",fillRule:"evenodd"}),a.createElement("path",{d:Zw,fill:"currentColor",stroke:"none"}))}function e0(){return a.createElement(Be,null,a.createElement("path",{d:"M9 2.8h4.2L17 6.6v8.6a1.8 1.8 0 0 1-1.8 1.8H15"}),a.createElement("path",{d:"M4.5 9.4a1.8 1.8 0 0 1 1.8-1.8h4.2l3.8 3.8v8a1.8 1.8 0 0 1-1.8 1.8H6.3a1.8 1.8 0 0 1-1.8-1.8z"}),a.createElement("path",{d:"M10.5 7.6v3.8h3.8"}))}function t0(){return a.createElement(Be,null,a.createElement("rect",{x:"4.2",y:"12",width:"3.6",height:"8",rx:"0.6",fill:"currentColor",stroke:"none"}),a.createElement("rect",{x:"10.2",y:"6.5",width:"3.6",height:"13.5",rx:"0.6",fill:"currentColor",stroke:"none"}),a.createElement("rect",{x:"16.2",y:"9.5",width:"3.6",height:"10.5",rx:"0.6",fill:"currentColor",stroke:"none"}),a.createElement("path",{d:"M3 21h18"}))}function s0(){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},a.createElement("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),a.createElement("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}))}function Qi(){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},a.createElement("path",{d:"M3 6h18"}),a.createElement("path",{d:"M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2"}),a.createElement("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),a.createElement("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),a.createElement("line",{x1:"14",y1:"11",x2:"14",y2:"17"}))}function Sc(){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},a.createElement("path",{d:"M3 7a2 2 0 0 1 2-2h4l2 2.5h8a2 2 0 0 1 2 2V18a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z"}))}function n0(){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},a.createElement("path",{d:"M9 3h6"}),a.createElement("path",{d:"M10 3v6l-3 3v2h10v-2l-3-3V3"}),a.createElement("line",{x1:"12",y1:"14",x2:"12",y2:"21"}))}function r0(){return a.createElement("svg",{className:"ps-share-glyph",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},a.createElement("path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),a.createElement("path",{d:"M3 3v5h5"}),a.createElement("path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"}),a.createElement("path",{d:"M21 21v-5h-5"}))}function yp(e,t,s){const[n,r]=a.useState({access:null,loading:!1}),i=a.useCallback(()=>{if(!t||s||typeof e.transport.getSessionAccess!="function"){r({access:null,loading:!1});return}let o=!1;return r(l=>({...l,loading:!0})),e.transport.getSessionAccess(t).then(l=>{o||r({access:l,loading:!1})}).catch(()=>{o||r({access:null,loading:!1})}),()=>{o=!0}},[e,t,s]);return a.useEffect(()=>{let o;const l=setTimeout(()=>{o=i()},cv);return()=>{clearTimeout(l),typeof o=="function"&&o()}},[i]),{access:n.access,loading:n.loading,reload:i}}function i0({controller:e,sessionId:t,initialTitle:s,currentModel:n,currentReasoningEffort:r,principal:i,onClose:o,onSwitchModel:l,onChanged:c,allowSharing:d=!0}){const[p,u]=a.useState("general"),[m,f]=a.useState(null),[h,g]=a.useState(s||""),[b,y]=a.useState([]),[v,S]=a.useState([]),[w,E]=a.useState("private"),[I,P]=a.useState(""),[C,A]=a.useState("write"),[R,T]=a.useState([]),[L,U]=a.useState(!1),[M,k]=a.useState(null);a.useEffect(()=>{let K=!1;return e.transport.getSessionAccess(t).then(fe=>{!K&&fe&&(f(fe),E(fe.visibility||"private"))}).catch(()=>{}),d&&typeof e.transport.listKnownUsers=="function"&&e.transport.listKnownUsers({limit:500}).then(fe=>{K||T(Array.isArray(fe)?fe:[])}).catch(()=>{}),()=>{K=!0}},[e,t,d]);const _=a.useCallback(()=>{e.transport.listSessionShares(t).then(K=>{const fe=Array.isArray(K)?K:[];y(fe),S(fe)}).catch(()=>{y([]),S([])})},[e,t]);a.useEffect(()=>{d&&_()},[_,d]);const $=async K=>{U(!0),k(null);try{await K(),c?.()}catch(fe){k(fe?.message||String(fe))}finally{U(!1)}},G=()=>$(async()=>{await e.transport.renameSession(t,h.trim())}),D=K=>{const fe=K.trim().toLowerCase();if(!fe)return null;const qe=R.find(Ee=>Ee.displayName&&Ee.displayName.toLowerCase()===fe||Ee.email&&Ee.email.toLowerCase()===fe||Ee.subject&&Ee.subject.toLowerCase()===fe);return qe||{provider:i?.provider||"dev",subject:K.trim(),email:null,displayName:null}},W=K=>`${K.provider}${K.subject}`,N=K=>{const fe=W(K);S(qe=>[...qe.filter(Ee=>W(Ee)!==fe),{provider:K.provider,subject:K.subject,email:K.email??null,displayName:K.displayName??null,access:C}]),P("")},j=()=>{const K=D(I);K&&N(K)},B=K=>{const fe=W(K);S(qe=>qe.filter(Ee=>W(Ee)!==fe))},V=new Set(v.map(W)),Q=m?.owner?`${m.owner.provider}${m.owner.subject}`:null,ee=I.trim().toLowerCase(),Z=ee?R.filter(K=>{const fe=W(K);return fe===Q||V.has(fe)?!1:K.displayName&&K.displayName.toLowerCase().includes(ee)||K.email&&K.email.toLowerCase().includes(ee)||K.subject&&K.subject.toLowerCase().includes(ee)}).slice(0,25):[],se=!!m?.canManage,Se=m?.visibility||"private",ue=new Set(v.map(K=>`${W(K)}:${K.access}`)),ce=new Set(b.map(K=>`${W(K)}:${K.access}`)),ge=ue.size!==ce.size||[...ue].some(K=>!ce.has(K)),X=se&&(w!==Se||ge),ie=()=>$(async()=>{w!==Se&&await e.transport.setSessionVisibility(t,w);const K=new Map(b.map(oe=>[W(oe),oe])),fe=new Map(v.map(oe=>[W(oe),oe]));for(const[oe,$e]of fe){const Le=K.get(oe);(!Le||Le.access!==$e.access)&&await e.transport.grantSessionShare(t,{provider:$e.provider,subject:$e.subject,email:$e.email??null,displayName:$e.displayName??null},$e.access)}for(const[oe,$e]of K)fe.has(oe)||await e.transport.revokeSessionShare(t,{provider:$e.provider,subject:$e.subject});const qe=await e.transport.listSessionShares(t).catch(()=>null);Array.isArray(qe)&&(y(qe),S(qe));const Ee=await e.transport.getSessionAccess(t).catch(()=>null);Ee&&(f(Ee),E(Ee.visibility||"private")),e.dispatch({type:"ui/status",text:"Access updated."})}),me=l||(()=>{o(),e.openSwitchModelPicker().catch(K=>{e.dispatch({type:"ui/status",text:K?.message||String(K)||"Failed to switch model"})})}),Ze=n?r?`${n}:${r}`:n:"—",Pe=[{id:"general",label:"General"},...d&&se?[{id:"access",label:"Access"}]:[]],at=Pe.some(K=>K.id===p)?p:"general",Ve=typeof e.transport?.regenerateSession=="function",At=K=>K.stopPropagation();return a.createElement("div",{className:"ps-share-overlay",onClick:o},a.createElement("div",{className:"ps-share-modal",onClick:At},a.createElement("div",{className:"ps-share-modal-head"},a.createElement("span",null,"Manage session"),a.createElement("button",{className:"ps-modal-close",onClick:o,"aria-label":"Close",title:"Close"},"✕")),a.createElement("div",{className:"ps-manage-tabs",role:"tablist"},Pe.map(K=>a.createElement("button",{key:K.id,type:"button",role:"tab","aria-selected":at===K.id?"true":"false",className:`ps-manage-tab${at===K.id?" is-active":""}`,onClick:()=>u(K.id)},K.label))),a.createElement("div",{className:"ps-share-modal-body"},at==="general"?a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-share-section-label"},"Name"),a.createElement("div",{className:"ps-share-add-row"},a.createElement("input",{className:"ps-share-add-input",placeholder:"Session title",value:h,disabled:L,onChange:K=>g(K.target.value),onKeyDown:K=>{K.key==="Enter"&&G()}}),a.createElement("button",{className:"ps-mini-button",disabled:L||!h.trim(),onClick:G},"Save")),a.createElement("div",{className:"ps-share-section-label"},"Model"),a.createElement("div",{className:"ps-share-section-sub"},"The model this session uses on its next turn."),a.createElement("div",{className:"ps-share-add-row"},a.createElement("span",{className:"ps-manage-model-current"},Ze),a.createElement("button",{className:"ps-mini-button",disabled:L,onClick:me},"Switch model…")),Ve?a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-share-section-label"},"Context"),a.createElement("div",{className:"ps-share-section-sub"},"Rebuild this session's working context from its summary. The transcript is archived and the session keeps running — it is not a terminal action."),a.createElement("div",{className:"ps-share-add-row"},a.createElement("button",{className:"ps-mini-button ps-manage-regenerate",disabled:L,onClick:()=>{o(),e.handleCommand(O.REGENERATE_SESSION).catch(()=>{})}},a.createElement(r0),a.createElement("span",null,"Regenerate context…")))):null):null,at==="access"&&se?a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-share-section-label"},"General access"),a.createElement("div",{className:"ps-share-section-sub"},"The baseline level for everyone signed in to this workspace."),["private","shared_read","shared_write"].map(K=>a.createElement("label",{key:K,className:`ps-share-radio${w===K?" is-active":""}`},a.createElement("input",{type:"radio",name:"visibility",checked:w===K,disabled:L,onChange:()=>E(K)}),a.createElement("span",{className:"ps-share-radio-glyph"},gc[K].glyph),a.createElement("span",null,gc[K].label),a.createElement("span",{className:"ps-share-radio-hint"},K==="private"?"only you and admins":K==="shared_read"?"everyone here can view":"everyone here can view and send"))),a.createElement("div",{className:"ps-share-section-label"},"Special access"),a.createElement("div",{className:"ps-share-section-sub"},"Give specific people more than the general level. A grant can only raise someone's access above it, never lower it — to restrict everyone, lower the general level."),v.length===0?a.createElement("div",{className:"ps-share-empty"},"No individual grants — everyone has the general access above."):v.map(K=>a.createElement("div",{key:`${K.provider}/${K.subject}`,className:"ps-share-grant-row"},a.createElement("span",{className:"ps-share-grant-name"},K.displayName||K.subject),a.createElement("span",{className:"ps-share-grant-access"},`can ${K.access}`),a.createElement("button",{className:"ps-mini-button",disabled:L,onClick:()=>B(K)},"Remove"))),a.createElement("div",{className:"ps-share-add-wrap"},a.createElement("div",{className:"ps-share-add-row"},a.createElement("input",{className:"ps-share-add-input",placeholder:"Name, email, or id",value:I,disabled:L,autoComplete:"off",onChange:K=>P(K.target.value),onKeyDown:K=>{K.key==="Enter"&&j()}}),a.createElement("select",{className:"ps-share-add-select",value:C,disabled:L,onChange:K=>A(K.target.value)},a.createElement("option",{value:"read"},"can read"),a.createElement("option",{value:"write"},"can write")),a.createElement("button",{className:"ps-mini-button",disabled:L||!I.trim(),onClick:j},"Add")),Z.length>0?a.createElement("div",{className:"ps-share-suggestions"},Z.map(K=>a.createElement("button",{key:`${K.provider}/${K.subject}`,type:"button",className:"ps-share-suggestion",disabled:L,onClick:()=>N(K)},a.createElement("span",{className:"ps-share-suggestion-name"},K.displayName||K.subject),K.email?a.createElement("span",{className:"ps-share-suggestion-email"},K.email):null))):null),a.createElement("div",{className:"ps-share-foot-hint"},"Sharing applies to this session and its sub-agents. Suggestions are people who have signed in before — you can also grant by email to someone who hasn't; it takes effect when they first sign in.")):null),at==="access"&&se?a.createElement("div",{className:"ps-manage-apply-bar is-footer"},a.createElement("span",{className:"ps-share-section-sub"},X?"Unsaved access changes.":"No changes to apply."),a.createElement("button",{className:"ps-mini-button ps-manage-apply",disabled:L||!X,onClick:ie},"Apply")):null,M?a.createElement("div",{className:"ps-share-error"},M):null))}function gE({controller:e,onReadOnlyFocus:t=null,mobile:s=!1,compact:n=!1,autoFocus:r=!s}){const i=J(e,d=>d.ui.modal),o=J(e,d=>d.sessions.byId[d.sessions.activeSessionId]),{access:l}=yp(e,o?.sessionId,o?.isGroup),c=o?.serviceKind||l?.canWrite===!1;return a.useLayoutEffect(()=>{c&&!i&&t?.()},[c,i,t]),!o||o.isGroup||i?null:a.createElement("div",{className:"ps-chat-composer"},c?a.createElement("div",{className:"ps-composer-readonly"},o.serviceKind?"⚗ Service session — runtime machinery. Its transcript is a read-only trace; it does not accept messages.":`You have view access to this session. Ask ${l.owner?.displayName||l.owner?.email||"the owner"} for write access to participate.`):a.createElement(wp,{controller:e,mobile:s,compact:n,autoFocus:r,active:!0}))}function yE({controller:e}){const t=J(e,c=>c),s=t.sessions.byId[t.sessions.activeSessionId],n=sa(s?.status==="running"),i=Sr(t,{spinnerFrame:n,maxWidth:120})[0]?.map(c=>c.text||"").join("")||(s?String(s.status||"idle").replace(/^./,c=>c.toUpperCase()):""),o=tu(t),l=["pending","queued","cancelling","rejected"].map(c=>{const d=o.filter(p=>p.pendingPhase===c).length;return d?`${d} ${c}`:""}).filter(Boolean).join(" · ");return a.createElement("div",{className:"ps-mobile-session-status","aria-label":"Session status"},a.createElement("span",{className:"ps-mobile-activity",title:i},i),l?a.createElement("span",{className:"ps-mobile-queue",title:l},l):null)}function a0(){return a.createElement(Be,null,a.createElement("path",{d:"M12 19V5m-5 5 5-5 5 5"}))}function o0(){return a.createElement(Be,null,a.createElement("path",{d:"M20.5 12a8.5 8.5 0 1 1-8.5-8.5"}))}function l0({loading:e,manual:t,pullDistance:s,onManualLoad:n}){const r=s>=Lu,i=e?"Loading earlier messages…":t?"Load older messages":r?"Release to load earlier messages":"Pull for earlier messages";return a.createElement("div",{className:`ps-history-load${e?" is-loading":""}${t?" is-manual":""}${r?" is-ready":""}`,style:s>0?{"--ps-history-pull":`${Math.min(s,Ou)}px`}:void 0,role:"status","aria-live":"polite"},a.createElement("span",{className:"ps-history-track","aria-hidden":"true"},a.createElement("span",{className:"ps-history-tick is-first"}),a.createElement("span",{className:"ps-history-tick is-second"}),a.createElement("span",{className:"ps-history-marker"},e?a.createElement(o0):a.createElement(a0),e?a.createElement("span",{className:"ps-history-text-spinner"},["|","/","—","\\"].map((o,l)=>a.createElement("span",{key:l},o))):null)),t&&!e?a.createElement("button",{type:"button",className:"ps-mini-button ps-load-older-button",onClick:n},i):a.createElement("span",{className:"ps-history-label"},i))}function Zi({controller:e,mobile:t=!1,fullWidth:s=!1,showComposer:n=!0,onEnterZen:r=null,activityInHeader:i=!1}){const o=J(e,$=>$.ui.themeId),l=Pt(o),c=J(e,$=>{const G=$.sessions.activeSessionId,D=Ar($),W=s||t?D.totalWidth:D.leftWidth,N=Math.max(20,W-4);return{activeSessionId:G,activeHistory:G&&$.history.bySessionId.get(G)||null,activeOutbox:G&&$.outbox?.bySessionId?.[G]?$.outbox.bySessionId[G]:mr,branding:$.branding,connection:$.connection,sessionsById:$.sessions.byId,sessionsFlat:$.sessions.flat,inspectorTab:$.ui.inspectorTab,activeSessionIsGroup:!!(G&&$.sessions.byId[G]?.isGroup),activeSessionStatus:G?String($.sessions.byId[G]?.status||"").toLowerCase():"",focused:$.ui.focusRegion==="chat",scroll:$.ui.scroll.chat,followBottom:$.ui.followBottom?.chat!==!1,authPrincipal:$.auth?.principal||null,contentWidth:N}},Ke),d=a.useMemo(()=>({branding:c.branding,connection:c.connection,auth:{principal:c.authPrincipal},sessions:{activeSessionId:c.activeSessionId,byId:c.sessionsById,flat:c.sessionsFlat},history:{bySessionId:c.activeSessionId&&c.activeHistory?new Map([[c.activeSessionId,c.activeHistory]]):new Map},outbox:{bySessionId:c.activeSessionId?{[c.activeSessionId]:c.activeOutbox}:{}},ui:{inspectorTab:c.inspectorTab}}),[c.activeHistory,c.activeSessionId,c.activeOutbox,c.authPrincipal,c.branding,c.connection,c.inspectorTab,c.sessionsById,c.sessionsFlat]),[p,u]=Uu(),m=p??c.contentWidth,f=a.useMemo(()=>su(d,{width:m}),[d,m]),h=Rc(!!f.animateTitleRight),g=a.useMemo(()=>Lc(f.titleRight,f.animateTitleRight?h:""),[h,f.animateTitleRight,f.titleRight]),[b,y]=a.useState(null),v=!!(c.activeHistory?.hasOlderEvents&&Number(c.activeHistory?.loadedEventCount||0)>=Wi),S=a.useMemo(()=>xa(d,m,{tableMode:"sentinel"}),[d,m]),w=sa(c.activeSessionStatus==="running"),I=a.useMemo(()=>Sr(d,{spinnerFrame:w,maxWidth:m}),[d,w,m]),P=a.useMemo(()=>Ca(d,m,{tableMode:"sentinel"}),[d,m]),C=a.useMemo(()=>I.length>0?[...P,...I]:P,[P,I]),A=a.useMemo(()=>i&&P.length?[...S,...P]:S,[i,S,P]),{access:R}=yp(e,c.activeSessionId,c.activeSessionIsGroup),T=J(e,_h,Ke),L=n&&!c.activeSessionIsGroup,U=!!c.sessionsById?.[c.activeSessionId]?.serviceKind,M=U||!!R&&R.canWrite===!1,k=L?a.createElement("div",{className:"ps-chat-composer"},M?a.createElement("div",{className:"ps-composer-readonly"},U?"⚗ Service session — runtime machinery. Its transcript is a read-only trace; it does not accept messages.":`You have view access to this session. Ask ${R.owner?.displayName||R.owner?.email||"the owner"} for write access to participate.`):a.createElement(wp,{controller:e,mobile:t,active:!0})):null,_=!!(c.activeSessionId&&c.sessionsById[c.activeSessionId]);return T&&!_?a.createElement(Yt,{title:f.title,color:f.color,focused:c.focused,theme:l,className:"ps-chat-panel"},a.createElement("div",{className:"ps-empty-state ps-nav-error-state"},a.createElement("div",{className:"ps-nav-error-message"},T.message),T.retryable?a.createElement("button",{type:"button",className:"ps-mini-button",onClick:()=>e.setNavigationIntent(T.sessionId)},"Retry"):null)):a.createElement(Nr,{controller:e,title:t?ec(f.title,28):f.title,titleRight:t&&g?ec(g,18):g,actions:t&&r?a.createElement(ve,{className:"ps-mini-button",icon:a.createElement(hp),label:"Enter mobile zen",onClick:r}):null,color:f.color,focused:c.focused,lines:A,bottomStickyLines:i?mr:C,reserveBottomSticky:!i,scrollOffset:c.scroll,scrollMode:c.followBottom?"bottom":"top",stickyBottom:!0,paneKey:"chat",historySessionId:c.activeSessionId,historyPullEnabled:!!(c.activeHistory?.hasOlderEvents&&!v),ariaLive:"polite",className:"is-wrapped",panelClassName:"ps-chat-panel",panelRef:u,bottomContent:k,topContent:({topPullDistance:$,loadingOlderHistory:G})=>{const D=G||b===c.activeSessionId;return!v&&$<=0&&!D?null:a.createElement(l0,{loading:D,manual:v,pullDistance:D?0:$,onManualLoad:()=>{const W=c.activeSessionId;y(W),e.handleCommand(O.EXPAND_HISTORY).catch(()=>{}).finally(()=>y(N=>N===W?null:N))}})},structuredBlocks:!0,renderBody:null})}function c0({controller:e,onClose:t}){const s=J(e,g=>g.ui.themeId),n=Pt(s),r=J(e,g=>{const b=g.files.selectedArtifactId||"",y=b.indexOf("/");return{sessionId:y>0?b.slice(0,y):null,filename:y>0?b.slice(y+1):"",canPrev:e.canStepArtifactPreview(-1),canNext:e.canStepArtifactPreview(1)}},Ke),i=Vu(r.filename),o=J(e,g=>g.files.htmlViewMode||"rendered"),l=J(e,g=>!!g.files.htmlFitWidth),c=a.useCallback(g=>{e.dispatch({type:"files/htmlFitWidth",enabled:g})},[e]),d=a.useCallback(g=>{e.dispatch({type:"files/htmlViewMode",mode:g})},[e]),p=J(e,g=>Number(g.files.htmlZoom)||1),u=a.useCallback(g=>{e.dispatch({type:"files/htmlZoom",zoom:g})},[e]),m=a.useCallback(g=>{e.stepArtifactPreview(g).catch(()=>{})},[e]),f=a.useCallback(g=>{if(!(g.metaKey||g.ctrlKey||g.altKey)){if(g.key==="ArrowLeft"||g.key==="["){g.preventDefault(),m(-1);return}if(g.key==="ArrowRight"||g.key==="]"){g.preventDefault(),m(1);return}g.key==="Escape"&&(g.preventDefault(),t())}},[t,m]),h=kr(r.sessionId,r.filename);return a.createElement("section",{className:"ps-artifact-pane",onKeyDown:f,tabIndex:-1,role:"region","aria-label":`Artifact: ${r.filename||"none"}`},a.createElement("header",{className:"ps-artifact-pane-bar"},i.kind==="page"?a.createElement(np,{mode:o,setMode:d}):null,i.kind==="page"&&o==="rendered"?a.createElement(sp,{fitWidth:l,setFitWidth:c}):null,i.kind==="page"&&o==="rendered"?a.createElement(pr,{zoom:p,setZoom:u}):null,a.createElement("span",{className:"ps-artifact-pane-heading"},a.createElement("span",{className:"ps-artifact-pane-name",title:r.filename},Yu(r.filename)||"Artifact"),a.createElement("span",{className:"ps-artifact-pane-type"},i.type)),a.createElement("span",{className:"ps-artifact-pane-actions"},a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",disabled:!r.canPrev,onClick:()=>m(-1),title:"Previous artifact (←)","aria-label":"Previous artifact"},"‹"),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",disabled:!r.canNext,onClick:()=>m(1),title:"Next artifact (→)","aria-label":"Next artifact"},"›"),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>{h&&(lr(h),e.dispatch({type:"ui/status",text:Fu}))},disabled:!h,title:"Copy a link that reopens this artifact","aria-label":"Copy link"},"🔗"),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>e.handleCommand(O.DOWNLOAD_SELECTED_FILE).catch(()=>{}),title:"Download","aria-label":"Download"},a.createElement(gp)),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn is-close",onClick:t,title:"Close (Esc)","aria-label":"Close artifact"},"✕"))),a.createElement("div",{className:"ps-artifact-pane-body"},a.createElement(Cr,{controller:e,focused:!1,previewOnly:!0,chromeless:!0,theme:n})))}function d0({controller:e,visible:t=!0}){const[s,n]=a.useState(!1),r=a.useCallback(()=>n(i=>!i),[]);return a.useEffect(()=>{t||n(!1)},[t]),a.createElement("div",{className:`ps-mobile-canvas-layer${s?" is-maximized":""}${t?"":" is-hidden"}`,...t?{}:{inert:!0,"aria-hidden":"true"}},a.createElement(Sp,{controller:e,mobile:!0,visible:t,focusOnPromote:!0,maximized:s,onToggleMaximized:r}))}function u0({controller:e}){const t=J(e,o=>{const l=o.files.selectedArtifactId||"";return{filename:l?l.slice(l.indexOf("/")+1):"",origin:o.files.previewOrigin||null,canPrev:e.canStepArtifactPreview(-1),canNext:e.canStepArtifactPreview(1)}},Ke),s=!!Ya(t.filename)||Xa(t.filename),[n,r]=a.useState(!1);a.useEffect(()=>{r(!1)},[t.filename]);const i=a.useCallback(o=>{e.stepArtifactPreview(o).catch(()=>{})},[e]);return a.createElement("div",{className:"ps-artifact-overlay"},a.createElement("header",{className:"ps-artifact-overlay-bar"},a.createElement("button",{type:"button",className:"ps-artifact-overlay-btn",onClick:()=>e.closeArtifactPreview().catch(()=>{}),"aria-label":t.origin==="chat"?"Close, back to chat":"Close, back to artifacts"},"✕"),a.createElement("span",{className:"ps-artifact-overlay-title"},t.filename||"Artifact"),s?a.createElement("button",{type:"button",className:`ps-artifact-overlay-btn${n?" is-active":""}`,onClick:()=>r(o=>!o),"aria-label":n?"Wrap lines":"Show full lines",title:n?"Wrap to screen width":"Full line width (scroll horizontally)"},n?"⇥":"↔"):null,a.createElement("button",{type:"button",className:"ps-artifact-overlay-btn",disabled:!t.canPrev,onClick:()=>i(-1),"aria-label":"Previous artifact"},"‹"),a.createElement("button",{type:"button",className:"ps-artifact-overlay-btn",disabled:!t.canNext,onClick:()=>i(1),"aria-label":"Next artifact"},"›")),a.createElement("div",{className:`ps-artifact-overlay-body${n?" is-content-width":""}`},a.createElement(Cr,{controller:e,focused:!0,mobile:!0,previewOnly:!0,nativeScroll:!0})))}const p0=140;function m0(e,t,s,n){let r=e;!e||Math.abs(t-e.width)>2?r={width:t,height:s}:s>e.height&&(r={width:e.width,height:s});const i=s<=r.height-p0;return{baseline:r,takeover:i&&n}}function f0(e,t=".ps-prompt-input"){const[s,n]=a.useState(!1);return a.useEffect(()=>{if(!e||typeof window>"u"||!window.visualViewport){n(!1);return}const r=window.visualViewport;let i={width:r.width,height:r.height},o=0;const l=()=>{o=0;const d=!!document.activeElement?.matches?.(t),p=m0(i,r.width,r.height,d);i=p.baseline,n(p.takeover)},c=()=>{o||(o=requestAnimationFrame(l))};return l(),r.addEventListener("resize",c),window.addEventListener("focusin",c),window.addEventListener("focusout",c),()=>{o&&cancelAnimationFrame(o),r.removeEventListener("resize",c),window.removeEventListener("focusin",c),window.removeEventListener("focusout",c)}},[e,t]),e?s:!1}function h0({controller:e,layout:t="split",onEnterZen:s}){const n=a.createElement(Xi,{controller:e,panelClassName:"ps-mobile-session-pane"});return t==="chat"?a.createElement("div",{className:"ps-mobile-workspace is-chat-only"},a.createElement("div",{className:"ps-mobile-chat-pane"},a.createElement(Zi,{controller:e,mobile:!0,fullWidth:!0,onEnterZen:s}))):t==="sessions"?a.createElement("div",{className:"ps-mobile-workspace is-sessions-only"},a.createElement(Xi,{controller:e,panelClassName:"ps-mobile-session-pane",showDetailBox:!0})):a.createElement("div",{className:"ps-mobile-workspace"},n,a.createElement("div",{className:"ps-mobile-chat-pane"},a.createElement(Zi,{controller:e,mobile:!0,fullWidth:!0,onEnterZen:s})))}function bp(){const e={fill:"none",stroke:"currentColor",strokeWidth:1.6,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("svg",{viewBox:"0 0 20 20",width:16,height:16,"aria-hidden":"true"},a.createElement("rect",{x:2.5,y:3.5,width:15,height:11,rx:1.5,...e}),a.createElement("path",{d:"M5.5 11.5l3-3.5 2.5 2.5 3.5-4",...e}),a.createElement("path",{d:"M7 17.5h6M10 14.5v3",...e}))}function vc(){const e={fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("svg",{viewBox:"0 0 20 20",width:20,height:20,"aria-hidden":"true"},a.createElement("path",{d:"M6.2 8.6a3.8 3.8 0 0 1 7.6 0v2.9a3.8 3.8 0 0 1-7.6 0z",...e}),a.createElement("path",{d:"M6.2 10.3h7.6",...e}),a.createElement("path",{d:"M7.6 6.5a2.4 2.4 0 0 1 4.8 0",...e}),a.createElement("path",{d:"M8 4.4 6.9 2.9M12 4.4l1.1-1.5",...e}),a.createElement("path",{d:"M6.3 8.6 3.8 7.4M6.2 10.6H3.6M6.3 12.6 3.8 13.9",...e}),a.createElement("path",{d:"M13.7 8.6 16.2 7.4M13.8 10.6h2.6M13.7 12.6l2.5 1.3",...e}))}function wc({mark:e}){if(e!=="canvas"&&e!=="unseen")return null;const t=e==="unseen",s={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("span",{className:`ps-session-canvas-mark${t?" is-unseen":""}`,title:t?"Canvas updated since you last viewed it":"This session has a canvas","aria-label":t?"Canvas updated":"Has a canvas",role:"img"},a.createElement("svg",{viewBox:"0 0 16 16",width:12,height:12,"aria-hidden":"true"},a.createElement("rect",{x:1.6,y:2.6,width:12.8,height:9.2,rx:1.4,...s}),a.createElement("path",{d:"M6 14.4h4",...s}),t?a.createElement("circle",{cx:12.4,cy:4.6,r:2.4,fill:"currentColor",stroke:"none"}):null))}function Ec(){const e={fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("svg",{viewBox:"0 0 20 20",width:14,height:14,"aria-hidden":"true"},a.createElement("path",{d:"M8.5 11.5l3-3",...e}),a.createElement("path",{d:"M7 13l-1.8 1.8a2.8 2.8 0 01-4-4l3-3a2.8 2.8 0 014 0",...e}),a.createElement("path",{d:"M13 7l1.8-1.8a2.8 2.8 0 014 4l-3 3a2.8 2.8 0 01-4 0",...e}))}const g0=[{id:"session",label:"Session access"},{id:"public",label:"Anyone with link"}];function y0({controller:e,sessionId:t,slot:s,onClose:n}){const[r,i]=a.useState(null),[o,l]=a.useState(null),[c,d]=a.useState(!1),[p,u]=a.useState(""),[m,f]=a.useState(""),[h,g]=a.useState("session"),[b,y]=a.useState(null),[v,S]=a.useState(null),[w,E]=a.useState(!1),I=e.transport,P=`${window.location.origin}/?session=${encodeURIComponent(t)}&view=canvas&slot=${s}&max=1${w?"&show_chrome=false":""}`,C=(_,$)=>a.createElement(Bu,{url:_,keyPrefix:$,copied:m,onCopy:L}),A=a.useCallback(()=>{I.getCanvasShareLink?.(t,s).then(_=>i(_||{exists:!1})).catch(_=>{i({exists:!1}),u(_?.message||String(_))}),typeof I.readCanvasKv=="function"&&I.readCanvasKv(t,s,{limit:1}).then(_=>{y(_?.policy||"owner"),S(_?.me||null)}).catch(()=>{y(null),S(null)})},[I,t,s]);a.useEffect(()=>{A()},[A]);const R=v?.relation==="owner"||v?.relation==="admin",T=_=>{d(!0),u(""),I.setCanvasKvAccess(t,s,_).then(()=>y(_)).catch($=>u($?.message||String($))).finally(()=>d(!1))},L=(_,$)=>{navigator.clipboard?.writeText($).then(()=>{f(_),window.setTimeout(()=>f(""),1500)}).catch(()=>u("Could not reach the clipboard — copy the link manually."))},U=_=>{d(!0),u(""),I.resetCanvasShareLink(t,s).then(({token:$})=>{l(`${window.location.origin}/?canvasShare=${encodeURIComponent($)}`),i({exists:!0})}).catch($=>u($?.message||String($))).finally(()=>d(!1))},M=()=>{d(!0),u(""),I.removeCanvasShareLink(t,s).then(()=>{l(null),i({exists:!1})}).catch(_=>u(_?.message||String(_))).finally(()=>d(!1))},k=a.createElement("div",{className:"ps-canvas-share-overlay",onClick:n},a.createElement("div",{className:"ps-canvas-share-dialog",onClick:_=>_.stopPropagation(),role:"dialog","aria-label":"Share canvas"},a.createElement("div",{className:"ps-canvas-share-title"},"Share this canvas",a.createElement("button",{type:"button",className:"ps-mini-button",onClick:n,"aria-label":"Close"},"✕")),a.createElement("div",{className:"ps-manage-tabs",role:"tablist"},g0.map(_=>a.createElement("button",{key:_.id,type:"button",role:"tab","aria-selected":h===_.id?"true":"false",className:`ps-manage-tab${h===_.id?" is-active":""}`,onClick:()=>g(_.id)},_.label))),a.createElement("div",{className:"ps-canvas-share-panels"},a.createElement("div",{className:`ps-canvas-share-panel${h==="session"?" is-active":""}`,role:"tabpanel","aria-hidden":h==="session"?void 0:"true"},a.createElement("div",{className:"ps-canvas-share-sub"},"Opens the portal signed in, canvas full screen. Session visibility rules apply."),C(P,"session"),a.createElement("label",{className:"ps-canvas-share-check"},a.createElement("input",{type:"checkbox",checked:w,onChange:_=>E(_.target.checked)}),"Hide page chrome"),b!==null?a.createElement("div",{className:"ps-canvas-share-policy"},a.createElement("label",{className:"ps-canvas-share-sub",htmlFor:"ps-canvas-kv-policy"},"Who can edit inside this app"),a.createElement("select",{id:"ps-canvas-kv-policy",className:"ps-canvas-slot-select",value:b,disabled:c||!R,onChange:_=>T(_.target.value)},a.createElement("option",{value:"owner"},"Only people who can edit the session"),a.createElement("option",{value:"readers"},"Anyone who can open the session"),a.createElement("option",{value:"link"},"Anyone who can open the session, plus link viewers")),a.createElement("div",{className:"ps-canvas-share-sub"},b==="owner"?"You, admins, and anyone you shared the session with as “write”. People with view-only access can watch the app but not change anything in it.":b==="link"?"Your view-only people can edit inside the app. Anyone holding the share link can watch it — link holders can never edit.":"Adds your view-only people: they can edit inside the app. It does not let them message the agent."),R?null:a.createElement("div",{className:"ps-canvas-share-sub"},"Only the session owner or an admin can change this.")):null),a.createElement("div",{className:`ps-canvas-share-panel${h==="public"?" is-active":""}`,role:"tabpanel","aria-hidden":h==="public"?void 0:"true"},a.createElement("div",{className:"ps-canvas-share-sub"},"View only, live, no sign-in. One link at a time — resetting makes the previous link stop working immediately."),r===null?a.createElement("div",{className:"ps-canvas-share-sub"},"Checking…"):o?a.createElement(a.Fragment,null,C(o,"public"),a.createElement("div",{className:"ps-canvas-share-sub is-warn"},"Copy it now — the link is shown only this once.")):r.exists?a.createElement("div",{className:"ps-canvas-share-sub"},`A link exists${r.createdAt?` (created ${new Date(r.createdAt).toLocaleString()})`:""}. For safety it cannot be re-shown — Reset to get a new one.`):a.createElement("div",{className:"ps-canvas-share-sub"},"No public link yet."),a.createElement("div",{className:"ps-canvas-share-actions"},a.createElement("button",{type:"button",className:"ps-mini-button",disabled:c,onClick:()=>U(r?.exists)},r?.exists?"Reset link":"Create link"),r?.exists?a.createElement("button",{type:"button",className:"ps-mini-button",disabled:c,onClick:M},"Remove link"):null))),p?a.createElement("div",{className:"ps-canvas-share-error"},p):null));return typeof document<"u"&&document.body?Gs.createPortal(k,document.body):k}function hi({controller:e,view:t,compact:s=!1}){const n=Array.isArray(t.slots)?t.slots:[];if(n.length<=1)return null;const r=n.map(c=>c.slot),i=Math.max(0,r.indexOf(t.slot)),o=c=>{const d=r[(i+c+r.length)%r.length];e.dispatch({type:"ui/canvasSlot",slot:d})},l=c=>(c.name?c.name:`canvas ${c.slot}`)+(c.unseen?" •":"");return a.createElement("span",{className:`ps-canvas-slot-controls${s?" is-compact":""}`},a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>o(-1),title:"Previous canvas","aria-label":"Previous canvas"},"‹"),a.createElement("select",{className:"ps-canvas-slot-select",value:t.slot,onChange:c=>e.dispatch({type:"ui/canvasSlot",slot:Number(c.target.value)}),"aria-label":"Choose canvas",title:"Choose canvas"},n.map(c=>a.createElement("option",{key:c.slot,value:c.slot},l(c)))),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>o(1),title:"Next canvas","aria-label":"Next canvas"},"›"))}function kc(){const e={fill:"none",stroke:"currentColor",strokeWidth:1.6,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("svg",{viewBox:"0 0 20 20",width:15,height:15,"aria-hidden":"true"},a.createElement("rect",{x:2.2,y:3.4,width:3.6,height:13.2,rx:1,...e}),a.createElement("rect",{x:8.2,y:3.4,width:9.6,height:13.2,rx:1,...e}))}function Ic(){const e={fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("svg",{viewBox:"0 0 20 20",width:13,height:13,"aria-hidden":"true"},a.createElement("path",{d:"M8 3H3v5M12 3h5v5M12 17h5v-5M8 17H3v-5",...e}))}function xc(){const e={fill:"none",stroke:"currentColor",strokeWidth:1.9,strokeLinecap:"round",strokeLinejoin:"round"};return a.createElement("svg",{viewBox:"0 0 20 20",width:13,height:13,"aria-hidden":"true"},a.createElement("path",{d:"M3 8h5V3M17 8h-5V3M17 12h-5v5M3 12h5v5",...e}))}function b0({controller:e,sessionId:t,slot:s=1,latestRev:n,zoom:r,visible:i=!0,focusOnPromote:o=!1,dataRev:l=0,dataPayload:c=null,dataPatch:d=null,onPanelKey:p=null}){const u=a.useRef(p);u.current=p;const m=!!p,[f,h]=a.useState(null),[g,b]=a.useState(null),[y,v]=a.useState(null),[S,w]=a.useState(0),E=a.useRef({live:null,staging:null}),I=a.useRef({rev:0,used:!1}),P=a.useRef(null),C=a.useRef(null),A=a.useRef(null),R=rp(P),T=a.useRef(null),L=a.useRef(r);L.current=r;const U=a.useRef(i);U.current=i,a.useEffect(()=>{if(!e||!t)return;const _=$=>{const G=C.current,D=$.data;if(!D||typeof D!="object"||!$.source)return;const W=!!(G&&$.source===G.contentWindow),N=!!(A.current&&$.source===A.current.contentWindow);if(!(!W&&!N)){if(D.type==="moa-panel-key"){W&&document.activeElement===G&&["Tab","Escape"].includes(D.key)&&u.current?.(D.key,D.backwards===!0);return}if(D.type==="canvas-action"){if(!W)return;e.submitCanvasAction(t,D,s).then(j=>{j&&j.ok===!1&&typeof console<"u"&&console.warn(`canvas action rejected: ${j.reason}`)}).catch(()=>{});return}if(D.type==="canvas-kv"){const j=D.id,B=e.transport,V=$.source,Q=se=>{try{V.postMessage(se,"*")}catch{}},ee=(se,Se="ERROR")=>Q({type:"canvas-kv-result",id:j,ok:!1,error:String(se?.message||se||"failed"),code:se?.code||Se});if(typeof B?.readCanvasKv!="function"){ee("the canvas KV store is not available on this deployment","UNAVAILABLE");return}const Z=String(D.op||"");if(!W&&(Z==="put"||Z==="delete")){ee("the canvas is still loading; retry the write in a moment","NOT_READY");return}if(Z==="ready"||Z==="list"){B.readCanvasKv(t,s,{prefix:D.prefix??null,limit:D.limit??null,after:D.after??null}).then(se=>Q({type:Z==="ready"?"canvas-kv-ready":"canvas-kv-result",id:j,ok:!0,entries:se?.entries??[],nextAfter:se?.nextAfter??null,me:se?.me??null,canWrite:!!se?.me?.canWrite,policy:se?.policy??"owner"})).catch(ee);return}if(Z==="get"){B.readCanvasKv(t,s,{key:D.key}).then(se=>Q({type:"canvas-kv-result",id:j,ok:!0,entry:se?.entries?.[0]??null})).catch(ee);return}if(Z==="put"||Z==="delete"){const se=Z==="put"?{op:"put",key:D.key,value:D.value,...D.ifMatch!=null?{ifMatch:D.ifMatch}:{}}:{op:"delete",key:D.key,...D.ifMatch!=null?{ifMatch:D.ifMatch}:{}};B.writeCanvasKv(t,s,[se]).then(Se=>{const ue=Se?.results?.[0]??{ok:!1,error:"no result"};Q({type:"canvas-kv-result",id:j,ok:!!ue.ok,key:ue.key,rev:ue.rev,capped:ue.capped,error:ue.error,code:ue.code})}).catch(ee);return}ee(`unknown canvas-kv op ${Z}`,"INVALID_REQUEST")}}};return window.addEventListener("message",_),()=>window.removeEventListener("message",_)},[e,t,s]),a.useEffect(()=>{if(!(!e||!t||typeof e.subscribeCanvasKv!="function"))return e.subscribeCanvasKv(t,_=>{if(!_||Number(_.slot)!==Number(s))return;const $=C.current?.contentWindow;if(!$)return;const G=D=>{try{$.postMessage({type:"canvas-kv-change",key:_.key,rev:_.rev,op:_.op,...D?{v:D.v,by:D.by,at:D.at}:{}},"*")}catch{}};if(_.op==="delete"){G(null);return}if(_.value&&typeof _.value=="object"){G({v:_.value.v,by:_.value.by,at:_.value.at});return}e.transport?.readCanvasKv?.(t,s,{key:_.key}).then(D=>G(D?.entries?.[0]??null)).catch(()=>{})})},[e,t,s]),a.useEffect(()=>{if(!e||!t||!n)return;let _=!1,$=null;return ip(e,t,s<=1?"canvas.html":`canvas${s}.html`,m).then(G=>{if(_){URL.revokeObjectURL(G);return}E.current.staging&&E.current.staging!==E.current.live&&URL.revokeObjectURL(E.current.staging),E.current.staging=G,v(null),b({url:G,rev:n})}).catch(()=>{if(!_){if(I.current.rev!==n&&(I.current={rev:n,used:!1}),!I.current.used){I.current.used=!0,$=setTimeout(()=>{_||w(G=>G+1)},1500);return}v({rev:n})}}),()=>{_=!0,$&&clearTimeout($)}},[e,t,s,n,S,m]),a.useEffect(()=>()=>{E.current.staging&&E.current.staging!==E.current.live&&URL.revokeObjectURL(E.current.staging),E.current.live&&URL.revokeObjectURL(E.current.live),E.current={live:null,staging:null},h(null),b(null),v(null)},[t]);const M=a.useCallback(_=>{if(!_||E.current.staging!==_.url)return;const $=E.current.live;E.current.live=_.url,E.current.staging=null,$&&$!==_.url&&URL.revokeObjectURL($),h(_),b(D=>D&&D.url===_.url?null:D);const G=P.current;if(G){const D=G.getBoundingClientRect(),W=L.current||1;T.current={w:Math.round(D.width/W),h:Math.round(D.height/W)}}if(e&&t&&U.current&&e.dispatch({type:"canvas/viewed",sessionId:t,slot:s,rev:_.rev}),o&&U.current)try{C.current?.focus({preventScroll:!0})}catch{}},[e,t,o]);a.useEffect(()=>{if(!(!f||!l||c===null)){try{C.current?.contentWindow?.postMessage({type:"canvas-data",data:c,dataRev:l},"*"),d&&C.current?.contentWindow?.postMessage({type:"canvas-patch",patch:d,dataRev:l},"*")}catch{}e&&t&&U.current&&e.dispatch({type:"canvas/viewed",sessionId:t,slot:s,dataRev:l})}},[f,l,c,d,e,t]),a.useEffect(()=>{if(i&&f&&e&&t&&(e.dispatch({type:"canvas/viewed",sessionId:t,slot:s,rev:f.rev,...l?{dataRev:l}:{}}),o))try{C.current?.focus({preventScroll:!0})}catch{}},[i,f,e,t,o,l]),a.useEffect(()=>{if(!f||!i)return;const _=r||1,$=Math.round((R.width||0)/_),G=Math.round((R.height||0)/_);if(!$||!G)return;const D=T.current;if(D){if(!(D.w<220||D.h<170))return;const j=Math.abs(D.w-$),B=Math.abs(D.h-G);if(j<=2&&B<=2||j<=2&&B/Math.max(1,D.h)<.15)return}const W=setTimeout(()=>{T.current={w:$,h:G},w(N=>N+1)},350);return()=>clearTimeout(W)},[R.width,R.height,r,f,i]);const k=r!==1&&R.width>0?{flex:"none",width:`${Math.max(1,Math.round(R.width/r))}px`,height:`${Math.max(1,Math.round(R.height/r))}px`,transform:`scale(${r})`,transformOrigin:"top left"}:void 0;return a.createElement("div",{ref:P,className:"ps-html-preview-host is-fitting"},[f,g].filter(Boolean).map(_=>a.createElement("iframe",{key:`canvas:${_.rev}:${_.url}`,ref:_===f?($=>{C.current=$}):($=>{A.current=$}),className:`ps-html-preview-frame${_===f?"":" is-staging"}`,style:k,src:_.url,title:"Session canvas",sandbox:"allow-scripts allow-popups allow-popups-to-escape-sandbox",allow:"autoplay *",referrerPolicy:"no-referrer",onLoad:_===g?()=>M(_):void 0})),y?a.createElement("div",{className:"ps-canvas-load-error"},a.createElement("span",null,f?`Couldn't load rev ${y.rev} — showing rev ${f.rev}.`:`Couldn't load rev ${y.rev}.`),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>{I.current={rev:0,used:!1},v(null),w(_=>_+1)}},"Retry")):null)}const S0=160;function Sp({controller:e,mobile:t=!1,visible:s=!0,focusOnPromote:n=!1,maximized:r=!1,onToggleMaximized:i=null}){const o=J(e,Aa,Ke),l=J(e,b=>Number(b.files.htmlZoom)||1),c=a.useCallback(b=>{e.dispatch({type:"files/htmlZoom",zoom:b})},[e]);a.useEffect(()=>{if(!s||!o.sessionId)return;const b=setTimeout(()=>{e.ensureCanvasSnapshot(o.sessionId).catch(()=>{})},S0);return()=>clearTimeout(b)},[e,o.sessionId,s]);const d=J(e,b=>b?.ui?.canvasZen===!0),[p,u]=a.useState(!1),[m,f]=a.useState(null);a.useEffect(()=>{if(!r){f(null);return}let b=0;const y=()=>{const v=document.getElementById("ps-toolbar-canvas-slot");v?f(v):b=requestAnimationFrame(y)};return y(),()=>cancelAnimationFrame(b)},[r]),a.useCallback(()=>{e.dispatch({type:"ui/canvasOpen",open:!1,sessionId:o.sessionId,manual:!0})},[e,o.sessionId]);const h=t&&(o.exists||r),g=t?h?a.createElement("header",{className:"ps-artifact-pane-bar is-rev-strip"},a.createElement("span",{className:"ps-artifact-pane-type",title:o.note||void 0},o.exists?`${o.name?`${o.name} · `:""}rev ${o.latestRev}`:""),a.createElement(hi,{controller:e,view:o,compact:!0}),o.exists?a.createElement("button",{type:"button",className:"ps-canvas-max-btn",onClick:()=>u(!0),title:"Share this canvas — copy a view link","aria-label":"Share canvas"},a.createElement(Ec)):null,i?a.createElement("button",{type:"button",className:"ps-canvas-max-btn",onClick:i,title:r?"Back to the inset canvas":"Maximize — cover the whole screen","aria-label":r?"Restore canvas":"Maximize canvas"},a.createElement(r?xc:Ic)):null):null:r?m?Gs.createPortal(a.createElement(a.Fragment,null,o.exists?a.createElement("span",{className:"ps-toolbar-canvas-rev"},`${o.name?`${o.name} · `:""}rev ${o.latestRev}`):null,a.createElement(hi,{controller:e,view:o,compact:!0}),o.exists?a.createElement(pr,{zoom:l,setZoom:c}):null,a.createElement("button",{type:"button",className:`ps-artifact-pane-btn${d?" is-active":""}`,onClick:()=>{e.dispatch({type:"ui/canvasMaximized",on:!1}),e.dispatch({type:"ui/canvasZen",on:!d})},title:d?"Leave zen — bring back sessions and panels":"Zen — chat rail + canvas only","aria-label":d?"Leave zen mode":"Zen mode"},a.createElement(kc)),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn ps-toolbar-canvas-restore",onClick:()=>e.dispatch({type:"ui/canvasMaximized",on:!1}),title:"Back to the workspace","aria-label":"Restore canvas"},a.createElement(xc))),m):null:a.createElement("header",{className:"ps-artifact-pane-bar"},a.createElement("span",{className:"ps-artifact-pane-heading"},a.createElement("span",{className:"ps-artifact-pane-name ps-canvas-pane-glyph",title:o.note||"Canvas"},a.createElement(bp)),o.exists?a.createElement("span",{className:"ps-artifact-pane-type",title:o.note||void 0},`${o.name?`${o.name} · `:""}rev ${o.latestRev}`):null,a.createElement(hi,{controller:e,view:o})),a.createElement("span",{className:"ps-artifact-pane-actions"},o.exists?a.createElement(pr,{zoom:l,setZoom:c}):null,o.exists?a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>u(!0),title:"Share this canvas — copy a view link","aria-label":"Share canvas"},a.createElement(Ec)):null,a.createElement("button",{type:"button",className:`ps-artifact-pane-btn${d?" is-active":""}`,onClick:()=>e.dispatch({type:"ui/canvasZen"}),title:d?"Leave zen — bring back sessions and panels":"Zen — chat rail + canvas only","aria-label":d?"Leave zen mode":"Zen mode"},a.createElement(kc)),a.createElement("button",{type:"button",className:"ps-artifact-pane-btn",onClick:()=>e.dispatch({type:"ui/canvasMaximized",on:!0}),title:"Full screen — hide chat and sessions","aria-label":"Full screen canvas"},a.createElement(Ic))));return a.createElement("section",{className:"ps-artifact-pane ps-canvas-pane",role:"region","aria-label":"Session canvas"},g,a.createElement("div",{className:"ps-artifact-pane-body"},o.exists?a.createElement(b0,{key:`slot:${o.slot}`,controller:e,sessionId:o.sessionId,slot:o.slot,latestRev:o.latestRev,zoom:l,visible:s,focusOnPromote:n,dataRev:o.latestDataRev,dataPayload:o.dataPayload,dataPatch:o.dataPatch}):a.createElement("div",{className:"ps-canvas-blank"},a.createElement("p",{className:"ps-canvas-blank-title"},"Nothing on the canvas yet."),a.createElement("p",null,"Ask the agent to draw — a dashboard, a chart, a diagram — or it will draw when it has something worth showing."))),p&&o.exists?a.createElement(y0,{controller:e,sessionId:o.sessionId,slot:o.slot,onClose:()=>u(!1)}):null)}function vp({activeTab:e,controller:t}){const s=a.useMemo(()=>Ga(t),[t]);return a.createElement("div",{className:"ps-tab-row ps-tab-row-icons"},s.map(n=>a.createElement(ve,{key:n,icon:Xl[n]?a.createElement(Xl[n]):"•",label:tv[n]||n,active:e===n,onClick:()=>{t.setFocus("inspector"),t.selectInspectorTab(n).catch(()=>{})}})))}function Cr({controller:e,focused:t,mobile:s=!1,previewOnly:n=!1,nativeScroll:r=!1,chromeless:i=!1}){const o=J(e,M=>M.ui.themeId),l=Pt(o),c=a.useRef(null),d=J(e,M=>{const k=M.sessions.activeSessionId,_=Ar(M),$=s||M.files.fullscreen?M.ui.layout?.viewportWidth??120:_.rightWidth;return{activeSessionId:k,sessionsById:M.sessions.byId,sessionsFlat:M.sessions.flat,filesBySessionId:M.files.bySessionId,filesFilter:M.files.filter,selectedArtifactId:M.files.selectedArtifactId,markedIds:M.files.markedIds||[],previewOrigin:M.files.previewOrigin||null,focused:t,previewScroll:M.ui.scroll.filePreview,fullscreen:!!M.files.fullscreen,contentWidth:Math.max(20,$-4),canBrowserUpload:nv(e),canPathUpload:rv(e),canDeleteArtifacts:av(e),canOpenLocally:ov(e)}},Ke),p=a.useMemo(()=>({sessions:{activeSessionId:d.activeSessionId,byId:d.sessionsById,flat:d.sessionsFlat},files:{bySessionId:d.filesBySessionId,selectedArtifactId:d.selectedArtifactId,filter:d.filesFilter,fullscreen:d.fullscreen},ui:{scroll:{filePreview:d.previewScroll}}}),[d.activeSessionId,d.filesBySessionId,d.filesFilter,d.fullscreen,d.previewScroll,d.selectedArtifactId,d.sessionsById,d.sessionsFlat]),u=a.useMemo(()=>Ma(p,{listWidth:Math.max(18,d.contentWidth-4),previewWidth:Math.max(18,d.contentWidth-4),showHints:!1}),[p,d.contentWidth]),m=a.useMemo(()=>rs(p),[p]),f=m.length>0,h=a.useCallback(M=>{const k=Array.isArray(M)?M.filter(Boolean):[];k.length!==0&&e.uploadArtifactFiles(k).catch(()=>{})},[e]),g=a.useCallback(()=>{if(d.canBrowserUpload&&c.current){c.current.click();return}d.canPathUpload&&e.handleCommand(O.OPEN_ARTIFACT_UPLOAD).catch(()=>{})},[e,d.canBrowserUpload,d.canPathUpload]),b=a.useMemo(()=>new Set(d.markedIds||[]),[d.markedIds]),y=a.createElement(a.Fragment,null,b.size>0?a.createElement(a.Fragment,null,a.createElement("span",{className:"ps-mini-button-label",style:{padding:"0 6px",opacity:.85},title:"Cmd/Ctrl-click to mark, Shift-click for a range"},`${b.size} marked`),d.canDeleteArtifacts?a.createElement(ve,{icon:a.createElement(Qi),label:`Delete ${b.size} marked`,onClick:()=>e.deleteMarkedArtifacts().catch(()=>{})}):null,a.createElement(ve,{icon:"✕",label:"Clear marks",onClick:()=>e.clearArtifactMarks()})):null,a.createElement("input",{ref:c,type:"file",className:"ps-hidden-file-input",multiple:!0,tabIndex:-1,"aria-hidden":"true",onChange:M=>{h(Array.from(M.currentTarget.files||[])),M.currentTarget.value=""}}),a.createElement(ve,{icon:a.createElement(qw),label:"Upload",onClick:g,disabled:!d.canBrowserUpload&&!d.canPathUpload}),a.createElement(ve,{icon:a.createElement(gp),label:"Download",onClick:()=>e.handleCommand(O.DOWNLOAD_SELECTED_FILE).catch(()=>{}),disabled:!f}),a.createElement(ve,{icon:"🔗",label:"Copy link to this artifact",onClick:()=>{const M=kr(u.selectedSessionId,u.selectedFilename);M&&(lr(M),e.dispatch({type:"ui/status",text:Fu}))},disabled:!f||!u.selectedFilename}),d.canDeleteArtifacts?a.createElement(ve,{icon:a.createElement(Qi),label:"Delete",onClick:()=>e.handleCommand(O.DELETE_SELECTED_FILE).catch(()=>{}),disabled:!f}):null,d.canOpenLocally?a.createElement(ve,{icon:"↗",label:"Open locally",onClick:()=>e.handleCommand(O.OPEN_SELECTED_FILE).catch(()=>{}),disabled:!f}):null,a.createElement(ve,{icon:a.createElement(to),label:"Filter",onClick:()=>e.handleCommand(O.OPEN_FILES_FILTER).catch(()=>{})}),a.createElement(ve,{icon:a.createElement(d.fullscreen?Uw:hp),label:d.fullscreen?"Exit fullscreen":"Fullscreen",onClick:()=>e.handleCommand(O.TOGGLE_FILE_PREVIEW_FULLSCREEN).catch(()=>{})})),v=a.useRef(null);a.useEffect(()=>{const M=v.current;M&&typeof M.scrollIntoView=="function"&&M.scrollIntoView({block:"nearest"})},[u.selectedIndex,d.selectedArtifactId]);const S=m.length===0?it(u.listBodyLines||[]).map((M,k)=>a.createElement(dt,{key:`empty:${k}`,line:M,theme:l})):m.map((M,k)=>a.createElement("button",{key:M.id,type:"button",ref:k===u.selectedIndex?v:null,className:`ps-list-button${k===u.selectedIndex?" is-selected":""}`+(b.has(M.id)?" is-marked":""),onClick:_=>{if(e.setFocus("inspector"),_.metaKey||_.ctrlKey){e.toggleArtifactMark(M);return}if(_.shiftKey){e.markArtifactRange(M);return}e.clearArtifactMarks(),e.selectFileBrowserItem(M).then(()=>{s&&e.handleCommand(O.TOGGLE_FILE_PREVIEW_FULLSCREEN).catch(()=>{})}).catch(()=>{})}},a.createElement(dt,{line:it([u.listBodyLines?.[k]])[0],theme:l}))),w=!u.previewLoading&&!u.previewError,E=w&&Xa(u.selectedFilename,u.previewContentType)&&!u.previewIsBinary&&!!u.previewContent,I=w&&(Ka.test(String(u.previewContentType||""))||Va.test(String(u.selectedFilename||""))),P=w&&!u.previewIsBinary&&!E&&u.previewRenderMode!=="markdown"&&u.previewContent?Ya(u.selectedFilename):null,C=n?"activity":null,A=r?null:"filePreview",R=w&&!u.previewIsBinary&&zu(u.selectedFilename,u.previewContentType)&&!!u.previewContent,L=w&&!u.previewIsBinary&&qu(u.selectedFilename,u.previewContentType)?a.createElement(iw,{controller:e,sessionId:u.selectedSessionId,filename:u.selectedFilename,contentType:u.previewContentType,sizeBytes:u.previewSizeBytes,theme:l,color:"cyan",focused:!1,title:null,chromeless:i}):R?a.createElement(ui,{controller:e,title:null,color:"cyan",focused:!1,theme:l,paneKey:A,scrollOffset:d.previewScroll,className:"ps-csv-preview",focusRegion:C},a.createElement(Bv,{content:u.previewContent,filename:u.selectedFilename})):I?a.createElement(cc,{title:null,color:"cyan",focused:!1,theme:l,filename:u.selectedFilename,contentType:u.previewContentType,sizeBytes:u.previewSizeBytes,source:u.previewSource,uploadedAt:u.previewUploadedAt,controller:e,sessionId:u.selectedSessionId}):P?a.createElement(ui,{controller:e,title:null,color:"cyan",focused:!1,theme:l,paneKey:A,scrollOffset:d.previewScroll,className:"ps-diff-preview",focusRegion:C},a.createElement("pre",{className:"ps-md-code-pre"},a.createElement("code",null,Bs(u.previewContent,P,l)))):E?a.createElement(ui,{controller:e,title:null,color:"cyan",focused:!1,theme:l,paneKey:A,scrollOffset:d.previewScroll,className:"ps-diff-preview",focusRegion:C},a.createElement("pre",{className:"ps-md-code-pre is-diff"},a.createElement("code",null,Qa(u.previewContent,l)))):u.previewRenderMode==="markdown"&&!u.previewLoading&&!u.previewError?a.createElement(tw,{controller:e,title:null,color:"cyan",focused:!1,scrollOffset:d.previewScroll,paneKey:A,theme:l,focusRegion:C,content:Lv(u.previewContent||"")}):u.previewIsBinary&&!u.previewLoading&&!u.previewError?a.createElement(cc,{title:null,color:"cyan",focused:!1,theme:l,filename:u.selectedFilename,contentType:u.previewContentType,sizeBytes:u.previewSizeBytes,source:u.previewSource,uploadedAt:u.previewUploadedAt,controller:e,sessionId:u.selectedSessionId}):a.createElement(Nr,{controller:e,title:null,color:"cyan",focused:!1,lines:u.previewLines,scrollOffset:d.previewScroll,scrollMode:"top",paneKey:A,focusRegion:C,className:"is-preview is-wrapped"}),U=d;return n?L:a.createElement(Yt,{title:U.fullscreen?u.fullscreenTitle:s&&u.panelTitleMobile?u.panelTitleMobile:u.panelTitle,color:"magenta",focused:U.focused,actions:y,theme:l},a.createElement(vp,{activeTab:"files",controller:e}),U.fullscreen?L:a.createElement("div",{className:"ps-files-grid is-list-only"},a.createElement("div",{className:"ps-action-list ps-files-list"},S)))}function Qs({controller:e,mobile:t=!1,panelClassName:s="",extraActions:n=null}){const r=J(e,b=>{const y=Ar(b),v=b.ui.inspectorTab,S=t?b.ui.layout?.viewportWidth??120:y.rightWidth;return{inspectorTab:v,statsViewMode:b.ui.statsViewMode,adminWorkers:b.admin?.workers,nodeMapSelectedNode:b.ui.nodeMapSelectedNode,activeSessionId:b.sessions.activeSessionId,sessionsById:b.sessions.byId,sessionsFlat:b.sessions.flat,historyBySessionId:b.history.bySessionId,sessionStats:b.sessionStats,fleetStats:b.fleetStats,connection:b.connection,orchestrationBySessionId:b.orchestration.bySessionId,executionHistoryBySessionId:b.executionHistory?.bySessionId||{},executionHistoryFormat:b.executionHistory?.format||"pretty",logs:b.logs,files:b.files,focused:b.ui.focusRegion==="inspector",scroll:b.ui.scroll.inspector,followBottom:b.ui.followBottom?.inspector!==!1,logsTailing:b.logs.tailing,filesFullscreen:!!b.files.fullscreen,contentWidth:bv(S,v,t)}},Ke),i=a.useMemo(()=>({sessions:{activeSessionId:r.activeSessionId,byId:r.sessionsById,flat:r.sessionsFlat},history:{bySessionId:r.historyBySessionId},sessionStats:r.sessionStats,fleetStats:r.fleetStats,connection:r.connection,admin:{workers:r.adminWorkers},ui:{inspectorTab:r.inspectorTab,statsViewMode:r.statsViewMode,nodeMapSelectedNode:r.nodeMapSelectedNode,scroll:{inspector:r.scroll}},logs:r.logs,files:r.files,orchestration:{bySessionId:r.orchestrationBySessionId},executionHistory:{bySessionId:r.executionHistoryBySessionId,format:r.executionHistoryFormat}}),[r.activeSessionId,r.adminWorkers,r.connection,r.executionHistoryBySessionId,r.executionHistoryFormat,r.fleetStats,r.nodeMapSelectedNode,r.files,r.historyBySessionId,r.inspectorTab,r.sessionStats,r.statsViewMode,r.logs,r.orchestrationBySessionId,r.scroll,r.sessionsById,r.sessionsFlat]),[o,l]=Uu(),c=o??r.contentWidth,d=a.useMemo(()=>Vt(i,{width:c}),[i,c]),p=a.useMemo(()=>{const b=r.activeSessionId&&r.historyBySessionId?.get(r.activeSessionId)||null,y=new Map;for(const v of b?.events||[]){if(v?.eventType!=="session.turn_completed")continue;const S=Number(v?.data?.turnIndex??v?.data?.iteration);Number.isFinite(S)&&y.set(S,v)}return y},[r.activeSessionId,r.historyBySessionId]),u=a.useCallback((b,y)=>a.createElement(Sw,{lines:b,theme:y,completionByTurn:p}),[p]),m=a.useCallback((b,y)=>a.createElement(bw,{lines:b,theme:y,controller:e}),[e]);a.useEffect(()=>{if(r.inspectorTab!=="nodes")return;e.ensureInspectorData("nodes");const b=window.setInterval(()=>{e.ensureInspectorData("nodes")},1e4);return()=>window.clearInterval(b)},[e,r.inspectorTab]);const f=a.useRef(null);if(a.useEffect(()=>{if(t)return f.current=requestAnimationFrame(()=>{try{const b=document.querySelector(".ps-mobile-pane-fill .ps-inspector-pane .ps-scroll-panel"),y=b?b.querySelector(".ps-line"):null;if(!b||!y)return;const v=window.getComputedStyle(y),S=document.createElement("span");S.style.cssText="position:absolute;visibility:hidden;white-space:pre;",S.style.fontFamily=v.fontFamily,S.style.fontSize=v.fontSize,S.style.fontWeight=v.fontWeight,S.style.letterSpacing=v.letterSpacing,S.textContent="0".repeat(100),y.parentElement.appendChild(S);const w=S.getBoundingClientRect().width/100||8;S.remove();const E=window.getComputedStyle(b),I=b.clientWidth-(parseFloat(E.paddingLeft)||0)-(parseFloat(E.paddingRight)||0);if(!(I>50))return;const C=Math.floor(I/w)+6,A=e.getState().ui.layout?.viewportWidth??120;if(Math.abs(C-A)<=2)return;e.dispatch({type:"ui/viewport",width:C,height:null})}catch{}}),()=>{f.current&&cancelAnimationFrame(f.current)}},[e,t,r.inspectorTab,r.activeSessionId]),r.inspectorTab==="files"&&!d.disabled)return a.createElement(Cr,{controller:e,focused:r.focused,mobile:t});const h=[];if(r.inspectorTab==="logs")h.push(a.createElement(ve,{key:"tail",icon:r.logsTailing?"■":"⇣",label:r.logsTailing?"Stop tailing":"Tail (follow)",active:r.logsTailing,onClick:()=>e.handleCommand(O.TOGGLE_LOG_TAIL).catch(()=>{})})),h.push(a.createElement(ve,{key:"filter",icon:a.createElement(to),label:"Filter",onClick:()=>e.handleCommand(O.OPEN_LOG_FILTER).catch(()=>{})}));else if(r.inspectorTab==="history")h.push(a.createElement(ve,{key:"refresh",icon:"↻",label:"Refresh",onClick:()=>e.handleCommand(O.REFRESH_EXECUTION_HISTORY).catch(()=>{})})),h.push(a.createElement(ve,{key:"save",icon:"⇩",label:"Export as artifact",onClick:()=>e.handleCommand(O.EXPORT_EXECUTION_HISTORY).catch(()=>{})}));else if(r.inspectorTab==="stats"){const b={session:"◉",fleet:"⬢",users:"⚇"};for(const y of["session","fleet","users"])h.push(a.createElement(ve,{key:`stats-view:${y}`,icon:b[y],label:`${y.replace(/^./u,v=>v.toUpperCase())} stats`,active:r.statsViewMode===y,onClick:()=>e.setStatsViewMode(y)}))}const g=n?h.concat(n):h;return a.createElement(Nr,{controller:e,title:d.title,color:"magenta",focused:r.focused,actions:g,topContent:a.createElement(vp,{activeTab:d.activeTab,controller:e}),stickyLines:d.stickyLines||[],lines:d.lines,renderBody:d.activeTab==="sequence"?u:d.activeTab==="nodes"?m:null,scrollOffset:r.scroll,scrollMode:d.activeTab==="sequence"||d.activeTab==="logs"&&r.followBottom?"bottom":"top",stickyBottom:d.activeTab==="logs",paneKey:"inspector",panelRef:l,className:d.activeTab==="history"||d.activeTab==="logs"?"is-wrapped":"is-preserve",panelClassName:`ps-inspector-pane${d.activeTab==="sequence"?" has-preserved-sticky":""}${s?` ${s}`:""}`.trim()})}function gi({controller:e,panelClassName:t="",extraActions:s=null}){const n=J(e,l=>{const c=l.sessions.activeSessionId,d=Ar(l),p=Math.max(3,d.activityPaneHeight-2);return{activeSessionId:c,activeSession:c&&l.sessions.byId[c]||null,activeHistory:c&&l.history.bySessionId.get(c)||null,focused:l.ui.focusRegion==="activity",scroll:l.ui.scroll.activity,followBottom:l.ui.followBottom?.activity!==!1,maxLines:p,nodeMapSelectedNode:l.ui.nodeMapSelectedNode,adminWorkers:l.admin?.workers,branding:l.branding,sessionsById:l.sessions.byId,sessionsFlat:l.sessions.flat,historyBySessionId:l.history.bySessionId,inspectorTab:l.ui.inspectorTab}},Ke),r=n.inspectorTab==="nodes",i=a.useMemo(()=>({branding:n.branding,admin:{workers:n.adminWorkers},ui:{nodeMapSelectedNode:n.nodeMapSelectedNode},sessions:{activeSessionId:n.activeSessionId,byId:r?n.sessionsById:n.activeSessionId&&n.activeSession?{[n.activeSessionId]:n.activeSession}:{},flat:n.sessionsFlat},history:{bySessionId:r?n.historyBySessionId:n.activeSessionId&&n.activeHistory?new Map([[n.activeSessionId,n.activeHistory]]):new Map}}),[r,n.activeHistory,n.activeSession,n.activeSessionId,n.adminWorkers,n.branding,n.historyBySessionId,n.nodeMapSelectedNode,n.sessionsById,n.sessionsFlat]),o=a.useMemo(()=>r?nu(i):Pa(i,n.maxLines),[r,i,n.maxLines]);return a.createElement(Nr,{controller:e,title:o.title,color:"gray",focused:n.focused,actions:s,lines:o.lines,scrollOffset:n.scroll,scrollMode:n.followBottom?"bottom":"top",stickyBottom:!0,paneKey:"activity",className:"is-wrapped",panelClassName:`ps-activity-pane${t?` ${t}`:""}`})}const mr=Object.freeze([]);function Ac(e){const t=Number(e)||0;return t>=1024*1024?`${(t/(1024*1024)).toFixed(1)} MB`:t>=1024?`${Math.round(t/1024)} KB`:`${t} B`}function wp({controller:e,mobile:t,compact:s=!1,active:n=!0,onAfterSend:r=null,autoFocus:i=!0}){const o=J(e,T=>{const L=T.sessions.activeSessionId,U=L&&T.sessions.byId[L]||null,M=L&&T.outbox?.bySessionId?.[L]?T.outbox.bySessionId[L]:[];return{value:T.ui.prompt,cursor:T.ui.promptCursor,focused:T.ui.focusRegion==="prompt",modalOpen:!!T.ui.modal,answerMode:!!U?.pendingQuestion?.question,canStopTurn:Vd(U),hasOutbox:M.length>0,hasPendingOutbox:M.some(k=>k?.phase==="pending"),pendingCount:M.filter(k=>k?.phase==="pending").length,editingPending:T.ui.promptEdit?.sessionId===L,selectedOutboxPhase:T.ui.promptEdit?.sessionId===L&&T.ui.promptEdit?.phase||null,promptAttachments:T.ui.promptAttachments||mr}},Ke),l=a.useRef(null),c=a.useRef(null),[d,p]=a.useState(!1),u=o.selectedOutboxPhase==="queued",m=o.selectedOutboxPhase==="cancelling",f=u||m,h=t&&!o.editingPending?o.answerMode?"Answer…":"Message…":o.answerMode?"Type an answer and press Enter":o.editingPending?m?"Cancellation requested":u?"Queued message selected":"Edit the pending message, then send or cancel it":o.hasOutbox?"Type a message and press Enter to queue it behind the pending batch":"Type a message and press Enter",g=a.useRef(-1),b=a.useCallback((T=!1)=>{const L=l.current;L&&(!T&&L.scrollHeight<=L.clientHeight||(L.style.height="0px",L.style.height=`${L.scrollHeight+2}px`))},[]);a.useLayoutEffect(()=>{const T=String(o.value||"").length,L=T<=g.current;g.current=T,b(L||T===0)},[b,o.value,h]),a.useEffect(()=>{const T=()=>b(!0);window.addEventListener("resize",T);const L=l.current;let U=0;const M=L&&typeof ResizeObserver<"u"?new ResizeObserver(()=>{cancelAnimationFrame(U),U=requestAnimationFrame(()=>b(!0))}):null;return M&&L&&M.observe(L),()=>{window.removeEventListener("resize",T),M?.disconnect(),cancelAnimationFrame(U)}},[b]);const y=typeof e.transport?.supportsPromptImageAttachments=="function"&&e.transport.supportsPromptImageAttachments()&&typeof e.transport?.uploadArtifactFromFile=="function",v=y?o.promptAttachments.filter(T=>T?.kind==="image"):mr,S=a.useRef(new Map);a.useEffect(()=>{const T=S.current,L=new Set(v.map(U=>U.file));for(const[U,M]of T)L.has(U)||(URL.revokeObjectURL(M),T.delete(U));for(const U of v)if(U.file&&!T.has(U.file))try{T.set(U.file,URL.createObjectURL(U.file))}catch{}},[v]),a.useEffect(()=>()=>{for(const T of S.current.values())URL.revokeObjectURL(T);S.current.clear()},[]);const w=a.useCallback(T=>{if(!y)return 0;const L=Array.from(T||[]).filter(M=>M&&typeof M.type=="string"&&M.type.startsWith("image/"));return L.length===0?0:e.addPendingImageFiles(L)?.accepted||0},[e,y]);a.useEffect(()=>{const T=l.current;if(!(!n||o.modalOpen||!o.focused||!T)){if(document.activeElement!==T){if(!i||typeof i=="function"&&!i()||t)return;try{T.focus({preventScroll:!0})}catch{T.focus()}}T.value===o.value&&T.selectionStart!==o.cursor&&T.setSelectionRange(o.cursor,o.cursor)}},[n,t,i,o.cursor,o.value,o.focused,o.modalOpen]);const E=a.useCallback(()=>{e.handleCommand(O.SEND_PROMPT).catch(()=>{}).finally(()=>{r?.()})},[e,r]),[I,P]=a.useState(!1),C=a.useCallback(()=>{P(!0),e.handleCommand(O.STOP_TURN).catch(()=>{}).finally(()=>P(!1))},[e]),A=a.useCallback(()=>{if(e.getState().ui.promptEdit){typeof e.cancelSelectedOutboxPrompt=="function"?e.cancelSelectedOutboxPrompt().catch(()=>{}):e.cancelSelectedPendingPrompt();return}typeof e.cancelLatestQueuedOutbox=="function"&&e.cancelLatestQueuedOutbox().catch(()=>{})},[e]),R=o.editingPending||o.hasPendingOutbox&&!o.value.trim()?"⇪":o.hasOutbox?"+":"❯";return a.createElement("div",{className:`ps-prompt-shell${s?" is-compact":""}${t?" is-mobile":""}${d?" is-drag-over":""}`,...y?{onDragOver:T=>{T.dataTransfer?.types?.includes?.("Files")&&(T.preventDefault(),p(!0))},onDragLeave:T=>{T.currentTarget.contains(T.relatedTarget)||p(!1)},onDrop:T=>{p(!1),T.dataTransfer?.files?.length&&(T.preventDefault(),w(T.dataTransfer.files))}}:{}},v.length>0?a.createElement("div",{className:"ps-prompt-attachments"},v.map((T,L)=>{const U=T.file?S.current.get(T.file):null;return a.createElement("div",{key:`attach:${L}:${T.filename}`,className:"ps-attach-chip",title:`${T.filename} · ${Ac(T.sizeBytes)}`},U?a.createElement("img",{className:"ps-attach-thumb",src:U,alt:T.filename}):a.createElement("div",{className:"ps-attach-thumb is-placeholder"},"🖼"),a.createElement("div",{className:"ps-attach-size"},Ac(T.sizeBytes)),a.createElement("button",{type:"button",className:"ps-attach-remove",title:`Remove ${T.filename}`,"aria-label":`Remove attachment ${T.filename}`,onClick:()=>e.removePendingImageAttachment(L)},"✕"))})):null,(()=>{const T=o.answerMode?"answer":m?"cancelling":u?"queued":o.editingPending?"pending":"you";return a.createElement("label",{className:`ps-prompt-label${T==="you"?" is-default":""}`},T)})(),a.createElement("textarea",{ref:l,className:"ps-prompt-input",rows:1,value:o.value,readOnly:f,placeholder:h,enterKeyHint:t?"enter":"send",onFocus:()=>e.setFocus("prompt"),onSelect:T=>e.setPromptCursor(T.currentTarget.selectionStart||0),onChange:T=>e.setPrompt(T.currentTarget.value,T.currentTarget.selectionStart||T.currentTarget.value.length),onPaste:y?T=>{const U=Array.from(T.clipboardData?.items||[]).filter(M=>M.kind==="file"&&M.type.startsWith("image/")).map(M=>M.getAsFile()).filter(Boolean);U.length>0&&w(U)>0&&T.preventDefault()}:void 0,onKeyDown:T=>{if(T.key==="Tab"&&!T.shiftKey&&e.acceptPromptReferenceAutocomplete()){T.preventDefault();return}if(T.key==="Escape"&&o.editingPending){if(T.preventDefault(),f){e.exitPendingPromptEdit({restoreDraft:!0});return}A();return}T.key==="Enter"&&!T.shiftKey&&!T.metaKey&&!t&&(T.preventDefault(),E())}}),a.createElement("div",{className:"ps-prompt-actions"},y&&!s?a.createElement(a.Fragment,null,a.createElement("input",{ref:c,type:"file",accept:"image/*",multiple:!0,className:"ps-hidden-file-input","aria-hidden":!0,tabIndex:-1,onChange:T=>{w(T.currentTarget.files),T.currentTarget.value=""}}),a.createElement("button",{type:"button",className:"ps-mini-button ps-attach-button",title:"Attach images (or paste / drop them into the composer)","aria-label":"Attach images",onPointerDown:T=>T.preventDefault(),onClick:()=>c.current?.click()},"📎")):null,o.editingPending&&!m?a.createElement("button",{type:"button",className:"ps-mini-button",title:u?"Delete selected queued prompt":"Cancel selected pending prompt","aria-label":u?"Delete selected queued prompt":"Cancel selected pending prompt",onPointerDown:T=>T.preventDefault(),onClick:A},u?"Delete":"Cancel"):null,o.canStopTurn||I?a.createElement("button",{type:"button",className:`ps-stop-button${I?" is-stopping":""}`,title:"Stop the current turn (the session stays alive and returns to idle)","aria-label":"Stop the current turn",disabled:I,onPointerDown:T=>T.preventDefault(),onClick:C},"■"):null,a.createElement("button",{type:"button",className:`ps-send-button${t?" is-inline":""}`,title:o.editingPending||o.hasPendingOutbox&&!o.value.trim()?"Send all queued prompts":o.hasOutbox?"Queue prompt behind the pending batch":"Send prompt","aria-label":o.editingPending||o.hasPendingOutbox&&!o.value.trim()?"Send queued prompts":o.hasOutbox?"Queue prompt":"Send prompt",onPointerDown:T=>T.preventDefault(),onClick:E},R)))}const v0=1e3;function ve({icon:e,label:t,onClick:s,disabled:n=!1,active:r=!1,pressed:i=void 0,className:o="ps-toolbar-button"}){const[l,c]=a.useState(null),d=a.useRef(null),p=a.useRef(null),u=a.useRef(null),m=a.useRef(!1);a.useLayoutEffect(()=>{if(!l||!p.current||!d.current)return;const C=p.current,A=window.visualViewport,R=()=>{const T=A?.offsetLeft||0,L=A?.offsetTop||0,U=A?.width||window.innerWidth,M=A?.height||window.innerHeight,k=6,_=d.current.getBoundingClientRect();C.style.width="max-content",C.style.maxWidth=`${Math.min(220,U-2*k)}px`,C.style.maxHeight=`${M-2*k}px`;const $=C.getBoundingClientRect();let G=l.placement==="below";!G&&_.top-$.height-k<L&&(G=!0),G&&_.bottom+$.height+k>L+M&&_.top-$.height-k>=L&&(G=!1);const D=Math.max(T+k,Math.min(_.left+_.width/2-$.width/2,T+U-$.width-k)),W=Math.max(L+k,Math.min(G?_.bottom+k:_.top-$.height-k,L+M-$.height-k));C.style.transform="none",C.style.left=`${D}px`,C.style.top=`${W}px`};return R(),A?.addEventListener("resize",R),A?.addEventListener("scroll",R),window.addEventListener("resize",R),()=>{A?.removeEventListener("resize",R),A?.removeEventListener("scroll",R),window.removeEventListener("resize",R)}},[l]);const f=(C=!1)=>{const A=d.current;if(!A||typeof window>"u")return;const R=A.getBoundingClientRect(),T=C?R.top-44<0:R.bottom+44<window.innerHeight;c({x:R.left+R.width/2,y:T?R.bottom+6:R.top-6,placement:T?"below":"above"})},h=a.useRef(null),g=a.useRef(null),b=C=>{C.pointerType==="mouse"&&(clearTimeout(u.current),clearTimeout(h.current),u.current=setTimeout(f,v0))},y=C=>{C.pointerType==="mouse"&&(clearTimeout(u.current),clearTimeout(h.current),c(null))},v=C=>{C.pointerType!=="mouse"&&(m.current=!1,g.current={x:C.clientX,y:C.clientY},clearTimeout(u.current),clearTimeout(h.current),u.current=setTimeout(()=>{m.current=!0,f(!0)},450))},S=C=>{if(C.pointerType==="mouse"||!g.current)return;const A=C.clientX-g.current.x,R=C.clientY-g.current.y;A*A+R*R>100&&(g.current=null,clearTimeout(u.current),c(null))},w=C=>{C.pointerType!=="mouse"&&(g.current=null,clearTimeout(u.current),m.current?(clearTimeout(h.current),h.current=setTimeout(()=>c(null),3e3),setTimeout(()=>{m.current=!1},250)):c(null))};a.useEffect(()=>()=>{clearTimeout(u.current),clearTimeout(h.current)},[]);const E=C=>{if(m.current){m.current=!1,C.preventDefault?.();return}n||s?.(C)},I=C=>{C.preventDefault?.()},P=l&&typeof document<"u"&&document.body?Gs.createPortal(a.createElement("span",{ref:p,className:`ps-icon-tooltip is-${l.placement}`,role:"tooltip",style:{left:`${l.x}px`,top:`${l.y}px`}},t),document.body):null;return a.createElement("button",{ref:d,type:"button",className:`${o} ps-icon-button${r?" is-active":""}`,onClick:E,disabled:n,"aria-label":t,"aria-pressed":i,onPointerEnter:b,onPointerLeave:y,onPointerDown:v,onPointerMove:S,onPointerUp:w,onPointerCancel:w,onContextMenu:I},a.createElement("span",{className:"ps-icon-button-glyph","aria-hidden":"true"},e),P)}function Nc({controller:e,mobile:t,moa:s=null,viewNavigation:n=null,canvasPaneOpen:r=!1,onToggleCanvasPane:i=null,mobilePane:o="workspace",onSelectMobilePane:l=null,mobileMainLayout:c="split"}){const[d,p]=a.useState(null);a.useEffect(()=>{typeof document>"u"||p(t?null:document.getElementById("ps-header-toolbar-slot"))},[t]);const u=J(e,k=>!!k.admin?.visible),m=J(e,k=>!!(k.admin?.profile?.isAdmin||k.auth?.authorization?.role==="admin")),f=m?"admin console":"settings",h=J(e,k=>!!k.ui?.budgetOpen),g=J(e,Aa,Ke),b=J(e,k=>k?.ui?.diagnosticsOpen===!0),y=J(e,k=>k?.ui?.canvasMaximized===!0),v=J(e,k=>!!(k?.files?.paneOpen&&k?.files?.selectedArtifactId)),S=[{key:"new",icon:a.createElement(fp),label:"New session — choose model and agent",onClick:()=>e.handleCommand(O.OPEN_MODEL_PICKER).catch(()=>{})},{key:"filter",icon:a.createElement(to),label:"Filter sessions",onClick:()=>e.handleCommand(O.OPEN_SESSION_FILTER).catch(()=>{})},{key:"theme",icon:a.createElement(Hw),label:"Theme",onClick:()=>e.handleCommand(O.OPEN_THEME_PICKER).catch(()=>{})},{key:"canvas",icon:a.createElement(bp),label:(t?r:g.mode==="canvas"&&!v)?"Hide the canvas":"Show canvas",onClick:()=>{if(t){i&&i();return}e.dispatch({type:"ui/canvasOpen",open:g.mode!=="canvas",sessionId:g.sessionId,manual:!0})},active:t?r:g.mode==="canvas"&&!v,badge:t?g.exists&&(g.latestRev>(g.lastViewedRev||0)||(g.latestDataRev||0)>(g.lastViewedDataRev||0))&&!r:g.unseen,loadedDot:g.exists},{key:"budget",icon:a.createElement(Gw),label:h?"Close budget":"Budget — providers, limits and usage",onClick:()=>{h?e.closeBudget():e.openBudget().catch(()=>{})},active:h},...t?[]:[{key:"diagnostics",icon:a.createElement(vc),label:b?"Hide diagnostics":"Show diagnostics (inspector and activity)",onClick:()=>e.dispatch({type:"ui/diagnosticsOpen"}),active:b}],...t?[]:[{key:"admin",icon:a.createElement(jw),label:u?`Close ${f}`:m?"Admin console":"Settings",onClick:()=>e.handleCommand(u?O.CLOSE_ADMIN_CONSOLE:O.OPEN_ADMIN_CONSOLE).catch(()=>{}),active:u}],...t?[]:[{key:"workspace",icon:a.createElement(bc),label:"Workspace — sessions, chat and panels",onClick:()=>e.handleCommand(O.OPEN_WORKSPACE).catch(()=>{}),active:!s?.active&&!u&&!h}]];if(s&&S.push({key:"moa",icon:a.createElement(Kw),label:s.returnTo?"Back to MoA — Master of Agents":"Master of Agents",active:s.active,disabled:!s.loaded,onClick:()=>{e.dispatch({type:"ui/canvasMaximized",on:!1}),e.handleCommand(O.OPEN_WORKSPACE).catch(()=>{}),s.open()}}),!t&&s?.desktop!==!1&&n)for(const k of["back","forward"])S.push({key:k,icon:a.createElement("svg",{viewBox:"0 0 20 20",width:16,height:16,fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},a.createElement("path",{d:k==="back"?"M16 10H4m5-5-5 5 5 5":"M4 10h12m-5-5 5 5-5 5"})),label:n[`${k}Label`],disabled:!n[k==="back"?"canBack":"canForward"],onClick:n[k]});const w=k=>{const _=a.createElement(ve,{key:k.badge?void 0:k.key,icon:k.icon,label:k.label,onClick:k.onClick,disabled:!!k.disabled,active:!!k.active});return k.badge||k.loadedDot?a.createElement("span",{key:k.key,className:"ps-canvas-toggle"},_,k.loadedDot?a.createElement("span",{className:"ps-canvas-loaded-dot","aria-hidden":"true"}):null,k.badge?a.createElement("span",{className:"ps-canvas-badge","aria-hidden":"true"}):null):_};if(t){const k={split:"Main — sessions and chat (tap for chat only)",chat:"Main — chat only (tap for sessions only)",sessions:"Main — sessions only (tap for both)"},_=o==="inspector"||o==="activity",$=o==="inspector"?"activity":"inspector",G=[{id:"workspace",icon:bc,label:k[c]||k.split,focus:"chat"},{id:$,icon:vc,active:_,label:_?o==="inspector"?"Diagnostics — inspector (tap for activity)":"Diagnostics — activity (tap for inspector)":"Diagnostics — inspector and activity",focus:$}];return a.createElement("div",{className:"ps-toolbar is-mobile"},a.createElement("div",{className:"ps-toolbar-row ps-toolbar-row-primary"},a.createElement("div",{className:"ps-toolbar-row-actions"},S.filter(D=>D.key!=="moa").map(w)),a.createElement("div",{className:"ps-toolbar-row-actions is-panes"},...S.filter(D=>D.key==="moa").map(w),G.map(D=>a.createElement(ve,{key:D.id==="workspace"?"workspace":"diagnostics",icon:a.createElement(D.icon),label:D.label,active:D.active??o===D.id,onClick:()=>{l&&l(D.id,D.focus)}})))))}const E=s?.active?"moa":u?"admin":h?"budget":"workspace",I=["new","filter"],P=["back","forward"],C=["canvas","diagnostics"],A=["workspace","moa","budget","admin"],R=k=>P.includes(k.key)||(!y||k.key==="canvas")&&!(s?.active&&["workspace","budget","admin"].includes(k.key))?k:{...k,onClick:(..._)=>(e.dispatch({type:"ui/canvasMaximized",on:!1}),s?.active&&["workspace","budget","admin"].includes(k.key)&&s.leave(),k.onClick?.(..._))},T=k=>k.map(_=>S.find($=>$.key===_)).filter(Boolean).map(R).map(w),L=k=>a.createElement("span",{key:k,className:"ps-toolbar-divider","aria-hidden":"true"}),U=[...T(A),L("mode-divider"),...T(["theme"])],M=a.createElement("div",{className:`ps-toolbar${s?.active?" is-moa":""}`},a.createElement("div",{className:"ps-toolbar-side is-left"},s?.active?a.createElement("div",{id:"ps-moa-status-slot"}):null,y&&!s?.active?a.createElement("span",{className:"ps-toolbar-canvas-slot",id:"ps-toolbar-canvas-slot"}):null),a.createElement("div",{className:"ps-toolbar-actions ps-toolbar-navigation",role:"navigation","aria-label":s?.active?"Master of Agents":"View navigation"},a.createElement("div",{className:"ps-toolbar-context is-before",id:"ps-toolbar-before-history"},E==="workspace"?T(I):null),a.createElement("div",{className:"ps-toolbar-history"},T(P)),a.createElement("div",{className:"ps-toolbar-context is-after",id:"ps-toolbar-after-history"},E==="workspace"?T(C):null)),a.createElement("div",{className:"ps-toolbar-side is-right"},a.createElement("span",{className:"ps-toolbar-meta-slot",id:"ps-toolbar-meta-slot"}),a.createElement("div",{className:"ps-toolbar-actions is-tools"},U),a.createElement("span",{className:"ps-toolbar-signout-slot",id:"ps-toolbar-signout-slot"})));return d?Gs.createPortal(M,d):M}function Ws(e){try{e.currentTarget?.setPointerCapture?.(e.pointerId)}catch{}}function w0({controller:e,paneAdjust:t=0}){const s=a.useRef(null),[n,r]=a.useState(!1);return a.useEffect(()=>{if(!n)return;const i=()=>{s.current=null,r(!1),document.body.classList.remove("is-resizing-pane-x")};let o=0,l=0;const c=()=>{o=0;const p=s.current;if(!p)return;const u=Math.round((l-p.startX)/Mu),m=u-p.appliedCells;m&&(e.adjustPaneSplit(m),p.appliedCells=u)},d=p=>{s.current&&(l=p.clientX,!o&&(o=requestAnimationFrame(c)))};return window.addEventListener("pointermove",d),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i),()=>{o&&(cancelAnimationFrame(o),o=0),window.removeEventListener("pointermove",d),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.classList.remove("is-resizing-pane-x")}},[e,n]),a.createElement("button",{type:"button",className:`ps-column-resizer${n?" is-dragging":""}`,title:"Drag to resize the inspector column. Double-click to reset.","aria-label":"Resize inspector column",onPointerDown:i=>{i.button===0&&(i.preventDefault(),Ws(i),s.current={startX:i.clientX,appliedCells:0},r(!0),document.body.classList.add("is-resizing-pane-x"))},onDoubleClick:()=>{t&&e.adjustPaneSplit(-t)},onKeyDown:i=>{if(i.key==="ArrowLeft"){i.preventDefault(),e.handleCommand(O.GROW_RIGHT_PANE).catch(()=>{});return}i.key==="ArrowRight"&&(i.preventDefault(),e.handleCommand(O.GROW_LEFT_PANE).catch(()=>{}))}},a.createElement("span",{className:"ps-column-resizer-handle","aria-hidden":"true"},a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"})))}function E0({controller:e,portalSessionColumnAdjust:t=0}){const s=a.useRef(null),[n,r]=a.useState(!1);return a.useEffect(()=>{if(!n)return;const i=()=>{s.current=null,r(!1),document.body.classList.remove("is-resizing-pane-x")},o=l=>{const c=s.current;if(!c)return;const d=$s(c.startAdjust+(l.clientX-c.startX),c.minAdjust,c.maxAdjust);e.dispatch({type:"ui/portalSessionColumnAdjust",portalSessionColumnAdjust:d})};return window.addEventListener("pointermove",o),window.addEventListener("pointerup",i),window.addEventListener("pointercancel",i),()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",i),window.removeEventListener("pointercancel",i),document.body.classList.remove("is-resizing-pane-x")}},[e,n]),a.createElement("button",{type:"button",className:`ps-column-resizer${n?" is-dragging":""}`,title:"Drag to resize the sessions and chat columns. Double-click to reset.","aria-label":"Resize sessions and chat columns",onPointerDown:i=>{if(i.button!==0)return;i.preventDefault(),Ws(i);const o=i.currentTarget.closest(".ps-workspace-main-grid"),l=Ki(o?.getBoundingClientRect?.().width);s.current={startX:i.clientX,startAdjust:Number(t)||0,minAdjust:l.minAdjust,maxAdjust:l.maxAdjust},r(!0),document.body.classList.add("is-resizing-pane-x")},onDoubleClick:()=>{e.dispatch({type:"ui/portalSessionColumnAdjust",portalSessionColumnAdjust:0})},onKeyDown:i=>{const o=i.currentTarget.closest(".ps-workspace-main-grid"),l=Ki(o?.getBoundingClientRect?.().width),c=d=>{const p=$s((Number(t)||0)+d,l.minAdjust,l.maxAdjust);e.dispatch({type:"ui/portalSessionColumnAdjust",portalSessionColumnAdjust:p})};if(i.key==="ArrowLeft"){i.preventDefault(),c(-24);return}i.key==="ArrowRight"&&(i.preventDefault(),c(24))}},a.createElement("span",{className:"ps-column-resizer-handle","aria-hidden":"true"},a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"})))}function k0({controller:e,canvasPaneAdjust:t=0,diagnosticsPaneAdjust:s=0}){const n=a.useRef(null),[r,i]=a.useState(!1),o=(c,d)=>({canvas:Wa+(Number(c)||0),diag:qa+(Number(d)||0)}),l=(c,d)=>{const p=o(c,d);if(p.canvas<Un||p.diag<Un){e.dispatch({type:"ui/canvasPaneAdjust",canvasPaneAdjust:0}),e.dispatch({type:"ui/diagnosticsPaneAdjust",diagnosticsPaneAdjust:0}),e.dispatch(p.canvas<Un?{type:"ui/canvasOpen",open:!1,manual:!0}:{type:"ui/diagnosticsOpen",open:!1});return}e.dispatch({type:"ui/canvasPaneAdjust",canvasPaneAdjust:c}),e.dispatch({type:"ui/diagnosticsPaneAdjust",diagnosticsPaneAdjust:d})};return a.useEffect(()=>{if(!r)return;const c=p=>{const u=n.current;if(!u)return;const m=p.clientX-u.startX;e.dispatch({type:"ui/canvasPaneAdjust",canvasPaneAdjust:u.startCanvas+m}),e.dispatch({type:"ui/diagnosticsPaneAdjust",diagnosticsPaneAdjust:u.startDiag-m})},d=()=>{const p=n.current;if(n.current=null,i(!1),document.body.classList.remove("is-resizing-pane-x"),p){const u=e.getState()?.ui?.layout||{};l(u.canvasPaneAdjust??0,u.diagnosticsPaneAdjust??0)}};return window.addEventListener("pointermove",c),window.addEventListener("pointerup",d),window.addEventListener("pointercancel",d),()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",d)}},[e,r]),a.createElement("button",{type:"button",className:`ps-column-resizer${r?" is-dragging":""}`,title:"Drag to trade width between the canvas and diagnostics. Drag one away to close it. Double-click to reset.","aria-label":"Resize canvas and diagnostics columns",onPointerDown:c=>{c.button===0&&(c.preventDefault(),Ws(c),n.current={startX:c.clientX,startCanvas:Number(t)||0,startDiag:Number(s)||0},i(!0),document.body.classList.add("is-resizing-pane-x"))},onDoubleClick:()=>{e.dispatch({type:"ui/canvasPaneAdjust",canvasPaneAdjust:0}),e.dispatch({type:"ui/diagnosticsPaneAdjust",diagnosticsPaneAdjust:0})},onKeyDown:c=>{if(c.key!=="ArrowLeft"&&c.key!=="ArrowRight")return;c.preventDefault();const d=c.key==="ArrowRight"?24:-24;l((Number(t)||0)+d,(Number(s)||0)-d)}},a.createElement("span",{className:"ps-column-resizer-handle","aria-hidden":"true"},a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"})))}function I0({controller:e,sessionId:t,railPx:s=380}){const n=a.useRef(null),[r,i]=a.useState(!1);return a.useEffect(()=>{if(!r)return;const o=c=>{const d=n.current;d&&e.dispatch({type:"canvas/zenRail",sessionId:t,px:d.start+(c.clientX-d.startX)})},l=()=>{n.current=null,i(!1),document.body.classList.remove("is-resizing-pane-x")};return window.addEventListener("pointermove",o),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l),()=>{window.removeEventListener("pointermove",o),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)}},[e,r,t]),a.createElement("button",{type:"button",className:`ps-column-resizer${r?" is-dragging":""}`,title:"Drag to resize chat against the canvas (remembered for this session)","aria-label":"Resize the zen chat rail",onPointerDown:o=>{o.button===0&&(o.preventDefault(),Ws(o),n.current={startX:o.clientX,start:s},i(!0),document.body.classList.add("is-resizing-pane-x"))},onKeyDown:o=>{o.key!=="ArrowLeft"&&o.key!=="ArrowRight"||(o.preventDefault(),e.dispatch({type:"canvas/zenRail",sessionId:t,px:s+(o.key==="ArrowRight"?24:-24)}))}},a.createElement("span",{className:"ps-column-resizer-handle","aria-hidden":"true"},a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"})))}function x0({controller:e,target:t,adjust:s=0}){const n=a.useRef(null),[r,i]=a.useState(!1),o=t==="canvas"?"ui/canvasPaneAdjust":"ui/diagnosticsPaneAdjust",l=t==="canvas"?"canvasPaneAdjust":"diagnosticsPaneAdjust",c=t==="canvas"?Wa:qa,d=p=>{if(c+p<Un){e.dispatch({type:o,[l]:0}),e.dispatch(t==="canvas"?{type:"ui/canvasOpen",open:!1,manual:!0}:{type:"ui/diagnosticsOpen",open:!1});return}e.dispatch({type:o,[l]:p})};return a.useEffect(()=>{if(!r)return;const p=m=>{const f=n.current;if(!f)return;const h=f.startAdjust-(m.clientX-f.startX);e.dispatch({type:o,[l]:Math.min(h,f.maxAdjust)})},u=()=>{const m=n.current;n.current=null,i(!1),document.body.classList.remove("is-resizing-pane-x"),m&&d((e.getState()?.ui?.layout||{})[l]??0)};return window.addEventListener("pointermove",p),window.addEventListener("pointerup",u),window.addEventListener("pointercancel",u),()=>{window.removeEventListener("pointermove",p),window.removeEventListener("pointerup",u),window.removeEventListener("pointercancel",u)}},[e,r,o,l]),a.createElement("button",{type:"button",className:`ps-column-resizer${r?" is-dragging":""}`,title:"Drag to resize. Drag the column away to close it. Double-click to reset.","aria-label":"Resize the right column",onPointerDown:p=>{if(p.button!==0)return;p.preventDefault(),Ws(p);const u=document.querySelector(".ps-workspace-main-grid > .ps-workspace-pane-slot:last-child"),m=u?u.getBoundingClientRect().width:Number.POSITIVE_INFINITY,f=Number(s)||0;n.current={startX:p.clientX,startAdjust:f,maxAdjust:f+Math.max(0,m-ja)},i(!0),document.body.classList.add("is-resizing-pane-x")},onDoubleClick:()=>e.dispatch({type:o,[l]:0}),onKeyDown:p=>{p.key!=="ArrowLeft"&&p.key!=="ArrowRight"||(p.preventDefault(),d((Number(s)||0)-(p.key==="ArrowRight"?24:-24)))}},a.createElement("span",{className:"ps-column-resizer-handle","aria-hidden":"true"},a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"})))}function A0({controller:e,splitAdjust:t=0}){const s=a.useRef(null),[n,r]=a.useState(!1);return a.useEffect(()=>{if(!n)return;const i=l=>{const c=s.current;if(!c)return;const d=$s(c.start+(l.clientY-c.startY),c.minAdjust,c.maxAdjust);e.dispatch({type:"ui/diagnosticsSplitAdjust",diagnosticsSplitAdjust:d})},o=()=>{s.current=null,r(!1),document.body.classList.remove("is-resizing-pane-y")};return window.addEventListener("pointermove",i),window.addEventListener("pointerup",o),window.addEventListener("pointercancel",o),()=>{window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",o),window.removeEventListener("pointercancel",o),document.body.classList.remove("is-resizing-pane-y")}},[e,n]),a.createElement("button",{type:"button",className:`ps-row-resizer${n?" is-dragging":""}`,title:"Drag to resize the inspector and activity panes. Double-click to reset.","aria-label":"Resize the inspector and activity panes",onPointerDown:i=>{if(i.button!==0)return;i.preventDefault(),Ws(i);const o=i.currentTarget.closest(".ps-workspace-column"),l=Math.max(0,o?.getBoundingClientRect?.().height||0),c=Math.max(0,i.currentTarget.getBoundingClientRect().height||0),{minAdjust:d,maxAdjust:p}=Io(l,c);s.current={startY:i.clientY,start:$s(Number(t)||0,d,p),minAdjust:d,maxAdjust:p},r(!0),document.body.classList.add("is-resizing-pane-y")},onDoubleClick:()=>e.dispatch({type:"ui/diagnosticsSplitAdjust",diagnosticsSplitAdjust:0}),onKeyDown:i=>{if(i.key!=="ArrowUp"&&i.key!=="ArrowDown")return;i.preventDefault();const o=i.currentTarget.closest(".ps-workspace-column"),l=Math.max(0,o?.getBoundingClientRect?.().height||0),c=Math.max(0,i.currentTarget.getBoundingClientRect().height||0),{minAdjust:d,maxAdjust:p}=Io(l,c);e.dispatch({type:"ui/diagnosticsSplitAdjust",diagnosticsSplitAdjust:$s((Number(t)||0)+(i.key==="ArrowDown"?c:-c),d,p)})}},a.createElement("span",{className:"ps-row-resizer-handle","aria-hidden":"true"},a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"}),a.createElement("span",{className:"ps-column-resizer-dot"})))}const N0=[{value:"day",label:"Daily"},{value:"week",label:"Weekly"},{value:"month",label:"Monthly"}],Cc={day:"Daily",week:"Weekly",month:"Monthly"},C0={plain:"",amber:" warn",red:" over",idle:""};function T0(e){const t=Math.abs(Number(e)||0),[s,n]=t>=1e9?["B",1e9]:t>=1e6?["M",1e6]:t>=1e3?["K",1e3]:["",1],r=t/n,i=s===""||r>=100?0:r>=10?1:2;return o=>{const l=Number(o);return Number.isFinite(l)?l===0?"0":`${(l/n).toFixed(i)}${s}`:"—"}}function P0(e){const t=String(e??"").trim().replace(/[,_\s]/g,"").toUpperCase();if(!t)return null;const s=/^(\d+(?:\.\d+)?)([KMB])?$/.exec(t);if(!s)return null;const n=s[2]==="K"?1e3:s[2]==="M"?1e6:s[2]==="B"?1e9:1;if(!s[2]&&/\./.test(s[1]))return null;const r=Math.round(Number(s[1])*n);return Number.isSafeInteger(r)&&Number.isFinite(r)&&r>0?r:null}function Ji(e){return e?`resets ${e}`:"no reset recorded"}function M0(e,t,s){return`${e} ${e===1?t:s}`}function _0(e,t,s=[]){if(!t?.name)return[];const n=new Map;for(const r of e){if(!(r.catalogKind==="runtime_provider"?r.providerId===t.name:r.catalogKind==="provider_type"?r.providerId===t.typeId:r.providerId===t.name||r.providerId===t.typeId))continue;const o=`${t.name}:${r.modelName}`;n.set(o,{qualifiedName:o,modelName:r.modelName})}for(const r of s)r.providerName!==t.name||r.rowKind!=="model"||!String(r.scope||"").startsWith(`${t.name}:`)||n.set(r.scope,{qualifiedName:r.scope,modelName:r.scope.slice(t.name.length+1)});return[...n.values()]}function $0(e){return(Array.isArray(e)?e:Array.isArray(e?.providers)?e.providers:Array.isArray(e?.models)?e.models:[]).flatMap(n=>Array.isArray(n?.models)?n.models.map(r=>({...r,providerId:r.providerId||n.providerId,catalogKind:r.catalogKind||n.catalogKind})):[n]).filter(n=>n&&(n.modelName||n.qualifiedName)).map(n=>({modelName:n.modelName||String(n.qualifiedName).split(":").slice(1).join(":"),providerId:n.providerId||"",catalogKind:n.catalogKind||null}))}function Ep({title:e,subtitle:t,children:s,footNote:n,confirmLabel:r,danger:i=!1,busy:o=!1,disabled:l=!1,error:c=null,onCancel:d,onConfirm:p=null,cancelLabel:u="Cancel"}){const m=a.useRef(null);return a.useEffect(()=>{const f=m.current;if(!f)return;const h=()=>[...f.querySelectorAll('button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])')];f.contains(document.activeElement)||(h()[0]||f).focus();const g=b=>{if(b.key!=="Tab")return;const y=h();if(!y.length)return;const v=y[0],S=y[y.length-1];b.shiftKey&&document.activeElement===v?(b.preventDefault(),S.focus()):!b.shiftKey&&document.activeElement===S&&(b.preventDefault(),v.focus())};return f.addEventListener("keydown",g),()=>f.removeEventListener("keydown",g)},[]),a.useEffect(()=>{const f=h=>{h.key==="Escape"&&(h.preventDefault(),h.stopPropagation(),d())};return window.addEventListener("keydown",f,!0),()=>window.removeEventListener("keydown",f,!0)},[d]),a.createElement("div",{className:"ps-budget-sheet-backdrop",onMouseDown:f=>{f.target===f.currentTarget&&(f.preventDefault(),d())}},a.createElement("div",{className:"ps-budget-sheet",role:"dialog","aria-modal":"true","aria-label":e,ref:m,tabIndex:-1},a.createElement("div",{className:"ps-budget-sheet-top"},a.createElement("div",{className:"ps-budget-sheet-title"},e),t?a.createElement("div",{className:"ps-budget-sheet-sub"},t):null),a.createElement("div",{className:"ps-budget-sheet-body"},s,c?a.createElement("div",{className:"ps-budget-sheet-error",role:"alert"},c):null),a.createElement("div",{className:"ps-budget-sheet-foot"},a.createElement("span",{className:"ps-budget-sheet-note"},n||""),a.createElement("div",{className:"ps-budget-sheet-actions"},a.createElement("button",{type:"button",className:"ps-mini-button",onClick:d,disabled:o},u),p?a.createElement("button",{type:"button",className:`ps-mini-button ${i?"is-danger":"is-primary"}`,onClick:p,disabled:o||l},o?"…":r):null))))}function ct({label:e,hint:t,children:s}){return a.createElement("div",{className:"ps-budget-field",role:"group","aria-label":e},a.createElement("span",{className:"ps-budget-label"},e),s,t?a.createElement("span",{className:"ps-budget-field-hint"},t):null)}function is({value:e,options:t,onChange:s,label:n=null}){return a.createElement("div",{className:"ps-budget-seg",role:"group","aria-label":n||void 0},t.map(r=>a.createElement("button",{key:r.value,type:"button","aria-pressed":e===r.value?"true":"false",className:`ps-budget-seg-btn${e===r.value?" is-on":""}`,onClick:()=>s(r.value)},r.label)))}function R0(e){const t=e.known?C0[e.tone]||"":" idle";return a.createElement(a.Fragment,null,a.createElement("span",{className:`ps-budget-pct${t}`},e.usedLabel),e.providerExhausted?a.createElement("span",{className:"ps-budget-blocked",title:"The provider's own limit is spent."}," ⏻"):null," ",a.createElement("span",{className:`ps-budget-q ps-budget-sub${e.uncapped?" is-inf":""}`},`/ ${e.quotaLabel}`))}function L0(e){if(!e.split)return a.createElement("span",{className:"ps-budget-split"},"—");const t="Parts of the input, not additions to it: the total is input + output.";return a.createElement("span",{className:"ps-budget-split"},a.createElement("span",null,"in ",te(e.split.input)),a.createElement("span",null,"out ",te(e.split.output)),a.createElement("span",{title:t},"cache r ",te(e.split.cacheRead)),a.createElement("span",{title:t},"w ",te(e.split.cacheWrite)))}function O0(e,t,s){const n=e.kind==="model"?`${e.providerName} · ${e.label}`:e.providerName,r=s.uncapped?"no limit for this period":`${s.usedLabel} of ${s.quotaLabel}${s.pct==null?"":` (${s.pct}%)`}`,i=s.providerExhausted?" The provider's own limit for this period is spent, so nothing runs against it whatever your share says.":"",o=s.splitText?` Made of ${s.splitText}.`:"";return`${n} · ${t.label} — ${r}. It ${Ji(s.resetsLabel)}.${i}${o}`}function F0({controller:e,view:t,defaults:s=null}){const n=a.useCallback((l,c="*")=>{e.selectBudgetProvider(l,c).catch(()=>{})},[e]),r=l=>l.kind==="model"?a.createElement("td",{className:"ps-budget-grid-name is-model"},a.createElement("button",{type:"button",className:"ps-budget-grid-pick","aria-pressed":l.selected?"true":"false",onClick:()=>n(l.providerName,l.scope)},a.createElement("span",{className:"ps-budget-grid-mname"},l.label),a.createElement("span",{className:"ps-budget-sub"}," · model"))):a.createElement("td",{className:"ps-budget-grid-name"},a.createElement("button",{type:"button",className:"ps-budget-grid-pick","aria-pressed":l.selected?"true":"false","aria-expanded":l.modelRowCount>0?l.expanded?"true":"false":void 0,onClick:()=>n(l.providerName)},a.createElement("span",{className:"ps-budget-grid-pname"},l.label),l.ownerLabel?a.createElement("span",{className:"ps-budget-grid-owner"},`(${l.ownerLabel})`):null,l.classLabel?a.createElement("span",{className:`ps-budget-chip is-${l.class}`,title:l.class==="shared"?"Shared: anyone may spend from it. An administrator manages its limits.":l.ownedByMe===!1?"A user provider belonging to another user.":"Your own provider. Only you see it or spend from it."},l.classLabel):null,s?.mine?.provider===l.providerName?a.createElement("span",{className:"ps-budget-chip"},"my default"):null,s?.cluster?.provider===l.providerName?a.createElement("span",{className:"ps-budget-chip"},"cluster default"):null,s?.system?.provider===l.providerName?a.createElement("span",{className:"ps-budget-chip"},"system default"):null,l.hold?a.createElement("span",{className:"ps-budget-chip is-hold",title:`It ${l.hold.label}.`},"on hold"):null,l.allowanceLabel?a.createElement("span",{className:"ps-budget-grid-allow"},l.allowanceLabel):null,l.expandLabel?a.createElement("span",{className:"ps-budget-grid-teaser"},l.expandLabel):null)),i=l=>a.createElement("tr",{key:l.key,className:`ps-budget-grid-row${l.kind==="model"?" is-model":""}${l.selected?" is-on":""}`,onClick:c=>{c.target?.closest?.("button")||n(l.providerName,l.kind==="model"?l.scope:"*")}},r(l),t.columns.map(c=>a.createElement("td",{key:c.id,className:"ps-budget-grid-num","data-period":c.label,title:O0(l,c,l.cells[c.id])},R0(l.cells[c.id])))),o=l=>a.createElement("tr",{key:`${l.key}:split`,className:`ps-budget-grid-split${l.kind==="model"?" is-model":""}`,"aria-label":`What ${l.kind==="model"?l.label:l.providerName} spent, by kind of token`},a.createElement("td",{className:"ps-budget-grid-split-name"}),t.columns.map(c=>a.createElement("td",{key:c.id,className:"ps-budget-grid-num is-split","data-period":c.label},L0(l.cells[c.id]))));return a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-budget-table-head"},a.createElement("span",{className:"ps-budget-label"},`Providers${t.providerCount>0?` · ${t.providerCount}`:""}`),a.createElement("label",{className:"ps-budget-toggle"},a.createElement("input",{type:"checkbox",checked:t.overall,onChange:()=>e.setBudgetOverall()}),a.createElement("span",null,t.overallLabel))),t.empty?a.createElement("div",{className:"ps-budget-empty"},"No provider exists yet. Add one in Admin Console → Model Providers to start spending."):a.createElement("table",{className:"ps-budget-grid"},a.createElement("thead",null,a.createElement("tr",null,a.createElement("th",{className:"ps-budget-grid-h is-name",rowSpan:2,scope:"col"},"Provider"),a.createElement("th",{className:"ps-budget-grid-h is-span",colSpan:3,scope:"colgroup"},t.usageHeading)),a.createElement("tr",null,t.columns.map(l=>a.createElement("th",{key:l.id,className:"ps-budget-grid-h is-num",scope:"col"},l.label)))),a.createElement("tbody",null,t.rows.flatMap(l=>l.selected?[i(l),o(l)]:[i(l)]))))}function D0({controller:e,view:t}){const s=t.series,n=t.selected,r={className:"ps-budget-chart-pane","data-range-days":String(t.rangeDays)},[i,o]=a.useState(null),[l,c]=a.useState(0);a.useEffect(()=>{if(!i||typeof ResizeObserver>"u")return;const S=()=>{const E=Math.round(i.getBoundingClientRect().width);c(I=>Math.abs(E-I)<1?I:E)},w=new ResizeObserver(S);return w.observe(i),S(),()=>w.disconnect()},[i]);const d=s.days,p=d.length,u=a.useMemo(()=>{const E=l-(p-1)*5,I=l>0?Math.floor(E/30):7,P=Math.max(1,Math.min(7,I)),C=Math.max(1,Math.ceil(p/P)),A=new Set;for(let R=p-1;R>=0;R-=C)A.add(R);return A},[l,p]),m=a.createElement("div",{className:"ps-budget-chart-head"},a.createElement("span",{className:"ps-budget-chart-title"},a.createElement("strong",null,n.subject),a.createElement("span",{className:"ps-budget-sub"},` · ${t.usageHeading.toLowerCase()}, by day`)),a.createElement("div",{className:"ps-budget-chart-range"},a.createElement(is,{value:t.rangeDays,options:t.rangeOptions,label:"Chart range",onChange:S=>e.setBudgetRangeDays(S).catch(()=>{})}),a.createElement("span",{className:"ps-budget-sub"},s.rangeLabel)));if(s.failed)return a.createElement("div",r,m,a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},a.createElement("div",null,`The daily usage for ${n.subject} could not be read.`),a.createElement("div",{className:"ps-budget-sub"},s.error)));if(s.loading&&!s.loaded)return a.createElement("div",r,m,a.createElement("div",{className:"ps-budget-empty"},"Reading the daily usage…"));const f=s.scaleMax,h=[1,.75,.5,.25,0],g=T0(f),b=d.filter(S=>S.tokens>0).length,y=s.quotaPct==null?null:Math.max(0,Math.min(96,100-s.quotaPct)),v=a.createElement("div",{className:"ps-budget-xaxis"},a.createElement("div",{className:"ps-budget-xaxis-spacer"}),a.createElement("div",{className:"ps-budget-tl-x",ref:o},d.map((S,w)=>a.createElement("span",{key:S.dayUtc,className:u.has(w)?"is-tick":void 0},u.has(w)?S.label:""))));return a.createElement("div",r,m,s.mixedScope?a.createElement("div",{className:"ps-budget-note is-warn"},"The bars are what the whole fleet spent on this provider each day. The dashed line is YOUR share of the daily limit, not the limit itself. Tick “Show overall usage” to read both as the provider's."):null,s.stale?a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},a.createElement("div",null,"These figures are from an earlier read. The most recent read failed."),a.createElement("div",{className:"ps-budget-sub"},s.error)):null,a.createElement("div",{className:"ps-budget-chart"},a.createElement("div",{className:"ps-budget-yaxis-title"},"tokens"),a.createElement("div",{className:"ps-budget-plotwrap"},a.createElement("div",{className:"ps-budget-yaxis"},f>0?h.map(S=>a.createElement("div",{key:`t${S}`,className:"ps-budget-ytick",style:{top:`${(1-S)*100}%`}},g(f*S))):null),a.createElement("div",{className:"ps-budget-plot"},f>0?h.map(S=>a.createElement("div",{key:`g${S}`,className:"ps-budget-gridline",style:{top:`${(1-S)*100}%`}})):null,y==null?null:a.createElement("div",{className:"ps-budget-tl-median",style:{top:`${y}%`}},a.createElement("span",null,`the Day limit · ${s.quotaLabel} a day`)),a.createElement("div",{className:"ps-budget-bars"},d.map(S=>a.createElement("div",{key:S.dayUtc,className:`ps-budget-tl-col${S.tokens===0?" is-idle":""}${s.quotaTokens!=null&&S.tokens>s.quotaTokens?" is-over":""}`,title:`${S.label} · ${S.tokens?`${S.tokens.toLocaleString("en-US")} tokens · ${M0(S.turns,"turn","turns")}`:"no usage"}`},a.createElement("div",{className:"ps-budget-tl-bar",style:{height:S.tokens===0?"2px":`${Math.max(1,S.pct)}%`}})))),s.empty?a.createElement("div",{className:"ps-budget-noaxis"},`No token usage on ${n.subject} in this range.`):null)),v,a.createElement("div",{className:"ps-budget-xaxis-title"},`Daily totals · UTC · ${s.rangeLabel.toLowerCase()}`),a.createElement("div",{className:"ps-budget-legend"},a.createElement("span",null,`Peak ${s.peakLabel} tokens/day`),a.createElement("span",null,`${b} of ${p} days used`),s.quotaTokens!=null?a.createElement("span",null,`Dashed line: ${s.quotaLabel} a day`):a.createElement("span",null,"No daily limit, so no line"))))}function B0({view:e}){const t=e.systemSpend;if(!t)return null;const s=n=>String(n||"").startsWith(`${e.selectedProvider}:`)?String(n).slice(e.selectedProvider.length+1):String(n||"Unknown model");return a.createElement("section",{className:"ps-budget-system-spend","aria-label":"System spend"},a.createElement("div",{className:"ps-budget-chart-head"},a.createElement("span",{className:"ps-budget-chart-title"},a.createElement("strong",null,"System spend")),a.createElement("span",{className:"ps-budget-sub"},t.rangeLabel)),t.loading&&!t.loaded?a.createElement("div",{className:"ps-budget-empty"},"Reading system spend…"):null,t.error?a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},t.error):null,t.loaded?a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-budget-system-stats"},a.createElement("div",{className:"ps-budget-system-stat"},a.createElement("strong",null,t.tokensLabel),a.createElement("span",null,"tokens")),a.createElement("div",{className:"ps-budget-system-stat"},a.createElement("strong",null,te(t.turns)),a.createElement("span",null,t.turns===1?"turn":"turns")),t.turns>0?a.createElement("div",{className:"ps-budget-system-stat"},a.createElement("strong",null,te(Math.round(t.tokens/t.turns))),a.createElement("span",null,"tokens / turn")):null),t.models.length?a.createElement("table",{className:"ps-budget-system-models"},a.createElement("thead",null,a.createElement("tr",null,a.createElement("th",{scope:"col"},"Model"),a.createElement("th",{scope:"col",className:"is-num"},"Tokens"),a.createElement("th",{scope:"col",className:"is-share"},"Share"),a.createElement("th",{scope:"col",className:"is-num"},"Turns"))),a.createElement("tbody",null,t.models.map(n=>{const r=t.tokens>0?n.tokens/t.tokens:0,i=Math.round(r*100);return a.createElement("tr",{key:n.key},a.createElement("td",{className:"ps-budget-system-model-name"},s(n.label)),a.createElement("td",{className:"is-num"},n.tokensLabel),a.createElement("td",{className:"is-share"},a.createElement("span",{className:"ps-budget-system-bar",role:"img","aria-label":`${i}% of system spend`},a.createElement("span",{className:"ps-budget-system-bar-fill",style:{width:`${Math.max(r>0?1:0,r*100)}%`}})),a.createElement("span",{className:"ps-budget-system-pct"},`${i}%`)),a.createElement("td",{className:"is-num"},te(n.turns)))}))):a.createElement("div",{className:"ps-budget-sub"},"No system spend in this range.")):null)}function H0({row:e,rawRows:t,models:s,modelsLoading:n,modelsError:r,onRetryModels:i,isAdmin:o,busy:l,error:c,onCancel:d,onRun:p,initialPeriod:u="day",initialScope:m="*"}){const f=e.class==="shared",h=e.manageable===!0,g=[...h?[{value:"limit",label:"Limits"}]:[],...h&&o&&f?[{value:"allowance",label:"Allowance"}]:[],...h&&o?[{value:"hold",label:"Hold"}]:[]],[b,y]=a.useState("limit"),[v,S]=a.useState(u),[w,E]=a.useState(m==="*"?"all":"model"),[I,P]=a.useState(m==="*"?"":m),[C,A]=a.useState("");a.useEffect(()=>{!I&&s[0]&&P(s[0].qualifiedName)},[s,I]);const R=t.find(z=>z.providerName===e.providerName&&z.rowKind!=="model")||null,T=w==="model"?I||s[0]?.qualifiedName||"":null,L=w==="model"?t.find(z=>z.providerName===e.providerName&&z.rowKind==="model"&&z.scope===T)||null:R,U=L?.periods?.[v]||null,M=U?.quotaTokens??null,k=L?Number(U?.usedTokens)||0:null,_=k!=null,$=e.cells[v]?.resetsLabel||null,G=Cc[v]||v,D=T||"all models";a.useEffect(()=>{A(M==null?"":Number(M).toLocaleString("en-US"))},[M,v,T]);const W=P0(C),N=!!W&&(w!=="model"||!!T),j=M!=null,B=Number.isFinite(e.allowancePct)?e.allowancePct:100,V=W==null||B>=100?W:Math.max(1,Math.floor(W*B/100)),Q=Number(U?.yourUsedTokens),ee=_&&W!==null&&k>=W,Z=!ee&&W!==null&&V!==W&&Number.isFinite(Q)&&Q>=V,se=Number.isFinite(e.allowancePct)?e.allowancePct:100,[Se,ue]=a.useState(String(se)),ce=Number(String(Se).trim()),ge=Number.isFinite(ce)&&ce>=1&&ce<=100&&Math.floor(ce)===ce,X=["day","week","month"].map(z=>({id:z,label:Cc[z],tokens:R?.periods?.[z]?.quotaTokens??null})).filter(z=>z.tokens!=null),ie=!!e.hold,[me,Ze]=a.useState(ie?"release":"forever"),[Pe,at]=a.useState(""),Ve=(()=>{if(me!=="until"||!Pe)return null;const z=new Date(Pe);return Number.isNaN(z.getTime())?null:z.toISOString()})(),At=!!Ve&&Date.parse(Ve)<=Date.now(),K=me!=="until"||!!Ve&&!At,fe=me!=="until"?null:At?"That time has already passed. A hold has to end in the future.":Pe&&!Ve?"That is not a time this can read.":null,qe={limit:"Limits",allowance:"Allowance",hold:"Hold"},Ee={limit:j?"Replace limit":"Save limit",allowance:"Save allowance",hold:me==="release"?"Release hold":"Place hold"},oe={limit:"Limits are enforced.",allowance:"Applies to everyone.",hold:"Stops new turns."},$e=b==="limit"?N:b==="allowance"?ge:b==="hold"?K:!0,Le=()=>{b==="limit"?N&&p("limit",{period:v,model:T,tokens:W}):b==="allowance"?ge&&p("allowance",{pct:ce}):b==="hold"&&p("hold",me==="release"?{release:!0,untilUtc:null}:{release:!1,untilUtc:Ve})},He=a.createElement(a.Fragment,null,a.createElement(ct,{label:"Time period",hint:"One limit per period and scope."},a.createElement(is,{value:v,onChange:S,options:N0,label:"Time period"})),a.createElement(ct,{label:"Applies to"},a.createElement(is,{value:w,onChange:E,label:"Applies to",options:[{value:"all",label:"all models"},{value:"model",label:"one model"}]}),w==="model"?a.createElement("select",{className:"ps-budget-input","aria-label":"Model this limit applies to",value:I,onChange:z=>P(z.target.value)},s.length===0?a.createElement("option",{value:""},n?"Loading models…":r?"Model catalog unavailable":"No models listed for this provider"):s.map(z=>a.createElement("option",{key:z.qualifiedName,value:z.qualifiedName},z.qualifiedName))):null,r?a.createElement("div",{className:"ps-budget-note is-warn",role:"status"},"Could not load the model catalog. Existing model limits remain editable. ",a.createElement("button",{type:"button",onClick:i,disabled:n},"Retry")):null),a.createElement(ct,{label:"Tokens",hint:W?`= ${W.toLocaleString("en-US")} tokens.`:C.trim()?"A whole number of tokens: 20,000,000 or 20M.":"Remove the limit to uncap."},a.createElement("input",{className:`ps-budget-input${C&&!W?" is-invalid":""}`,value:C,"aria-label":"Tokens",placeholder:"20,000,000 or 20M",onChange:z=>A(z.target.value),onKeyDown:z=>{z.key==="Enter"&&Le()}})),a.createElement("div",{className:"ps-budget-consequences"},a.createElement("div",null,`${G} · ${D} — `,_?a.createElement(a.Fragment,null,a.createElement("strong",null,`${k.toLocaleString("en-US")} tokens`),f?" spent by users this period.":" spent this period."):a.createElement(a.Fragment,null,a.createElement("strong",null,"not measured yet"),". Current spend will count.")),$?a.createElement("div",{className:"ps-budget-sub"},`Resets ${$}.`):null),j?a.createElement("div",{className:"ps-budget-note is-warn"},`Replaces the existing ${te(M)} token limit.`):null,a.createElement("div",{className:`ps-budget-note${ee||Z?" is-warn":""}`},"Current spend counts. Saving does not reset usage.",ee?` ${k.toLocaleString("en-US")} already meets ${W.toLocaleString("en-US")}, so sessions on ${e.providerName} pause on their next turn${$?` — until this period ${Ji($)}`:""}.`:Z?` At ${B}% each that is ${V.toLocaleString("en-US")} per person, which you have already spent — so sessions pause on their next turn${$?` — until this period ${Ji($)}`:""}.`:""),j?a.createElement("div",null,a.createElement("button",{type:"button",className:"ps-mini-button is-danger",disabled:l,onClick:()=>p("removeLimit",{period:v,model:T})},`Remove the ${G} · ${D} limit`),a.createElement("div",{className:"ps-budget-note"},"Usage history is kept.")):null),pe=a.createElement(a.Fragment,null,a.createElement(ct,{label:"Share per person",hint:ge?ce>=100?"100% removes the per-person ceiling.":`Each person may use up to ${ce}% of each limit, per period.`:"A whole number from 1 to 100."},a.createElement("input",{className:`ps-budget-input${Se&&!ge?" is-invalid":""}`,value:Se,"aria-label":"Share per person, as a percentage",inputMode:"numeric",placeholder:"20",onChange:z=>ue(z.target.value),onKeyDown:z=>{z.key==="Enter"&&ge&&Le()}})),a.createElement("div",{className:"ps-budget-consequences"},X.length===0?a.createElement("div",{className:"ps-budget-note is-warn"},"No limits yet. The allowance applies when one is added."):a.createElement(a.Fragment,null,X.map(z=>a.createElement("div",{key:z.id},`${z.label} · ${te(z.tokens)} → `,a.createElement("strong",null,ge?`${te(Math.floor(z.tokens*ce/100))} per person`:"—"))),a.createElement("div",{className:"ps-budget-note"},"The provider limit still caps total spend.")),ge&&ce<se?a.createElement("div",{className:"ps-budget-note is-warn"},"Users already past the new ceiling pause on their next turn."):null)),x=a.createElement(a.Fragment,null,a.createElement(ct,{label:"What to do"},a.createElement(is,{value:me,onChange:Ze,label:"What to do",options:[...ie?[{value:"release",label:"release it"}]:[],{value:"forever",label:"hold until released"},{value:"until",label:"hold until a time"}]})),me==="until"?a.createElement(ct,{label:"Ends at",hint:fe||"Sessions resume at this time."},a.createElement("input",{className:`ps-budget-input${Pe&&!K?" is-invalid":""}`,"aria-label":"The hold ends at",type:"datetime-local",value:Pe,onChange:z=>at(z.target.value)})):null,ie?a.createElement("div",{className:"ps-budget-consequences"},a.createElement("div",null,`This provider is on hold: it ${e.hold.label}.`)):null,a.createElement("div",{className:`ps-budget-note${me==="release"?"":" is-warn"}`},me==="release"?`Releasing wakes every session waiting on ${e.providerName}. A session still over a limit stays paused for that reason instead.`:`Every session on ${e.providerName} pauses on its next turn. Messages sent to them are kept and answered when the hold lifts.`));return a.createElement(Ep,{title:qe[b],subtitle:`${e.providerName}${f?" · shared":""}`,confirmLabel:Ee[b]||"",danger:b==="hold"&&me==="release",busy:l,disabled:!$e,error:c,onCancel:d,onConfirm:Ee[b]?Le:null,cancelLabel:Ee[b]?"Cancel":"Done",footNote:oe[b]},g.length>1?a.createElement(ct,{label:"What to change"},a.createElement(is,{value:b,onChange:y,options:g,label:"What to change"})):null,b==="limit"?He:null,b==="allowance"?pe:null,b==="hold"?x:null)}function U0({types:e,existingNames:t,isAdmin:s,busy:n,error:r,onDirty:i,onCancel:o,onConfirm:l,initialName:c="",initialShared:d=!1,initialType:p="",updateProvider:u=null}){const m=!!u,[f,h]=a.useState(c),[g,b]=a.useState(p||e[0]?.id||""),[y,v]=a.useState(""),[S,w]=a.useState(""),[E,I]=a.useState(s&&d),P=a.useRef(null);a.useEffect(()=>{P.current?.focus()},[]),a.useEffect(()=>{!g&&e[0]&&b(e[0].id)},[e,g]);const C=f.trim(),A=!m&&t.some(D=>D.toLowerCase()===C.toLowerCase()),R=C!==""&&!/^[A-Za-z0-9._-]+$/.test(C),T=C.length>64,L=e.find(D=>D.id===g)?.usesWorkloadIdentity===!0,U=L,M=U?!0:E,k=!!C&&!A&&!R&&!T&&!!g&&(L||!!y.trim())&&(!U||s),_=/github/i.test(g),$=()=>{if(!k)return;const D={name:C,type:g,shared:M,credentials:L?{kind:"workloadIdentity"}:_?{githubToken:y.trim()}:{apiKey:y.trim()},baseUrl:S.trim()||null};v(""),l(D)},G=()=>{v(""),o()};return a.createElement(Ep,{title:m?`Update key for ${C}`:_?"Add GitHub Copilot provider":"Add model provider",subtitle:M?"Shared":"Personal",confirmLabel:m?"Update key":"Add provider",busy:n,disabled:!k,error:r,onCancel:G,onConfirm:$,footNote:m?"Only the key changes. The name, type, base URL, defaults, system-session routing and usage history all stay as they are.":""},a.createElement(ct,{label:"Name",hint:A?"A provider with that name already exists, and names are unique across the cluster.":T?`Too long: ${C.length} characters, and a name may be at most 64.`:R?'Letters, numbers, dot, dash and underscore only — no colon, no spaces, no accents: a session refers to it as "<provider>:<model>".':m?"Not changing. Sessions keep referring to it as provider:model.":"Permanent. Used in provider:model."},a.createElement("input",{ref:P,className:`ps-budget-input${m?" is-static":""}${(A||R||T)&&C?" is-invalid":""}`,"aria-label":"Provider name",value:f,placeholder:"azure-prod",disabled:m,onChange:D=>{i?.(),h(D.target.value)},onKeyDown:D=>{D.key==="Enter"&&k&&$()}})),a.createElement(ct,{label:"Type",hint:m?"Not changing.":"Backend and model catalog."},a.createElement("select",{className:`ps-budget-input${m?" is-static":""}`,"aria-label":"Provider type",value:g,disabled:m,onChange:D=>{i?.(),b(D.target.value)}},e.length===0?a.createElement("option",{value:""},"No provider types are listed on this deployment"):e.map(D=>a.createElement("option",{key:D.id,value:D.id},D.id)))),L?a.createElement(ct,{label:"Authentication",hint:"Nothing is stored. The worker mints a short-lived token for each request."},a.createElement("div",{className:"ps-budget-input is-static",role:"note"},"Use the Workload Identity configured in the worker")):a.createElement(ct,{label:m?_?"New GitHub Copilot token":"New API key":_?"GitHub Copilot token":"API key",hint:m?"Replaces the current one. The existing key is never shown.":"Paste the token value."},a.createElement("input",{className:"ps-budget-input",type:"password",autoComplete:"off","aria-label":m?_?"New GitHub Copilot token":"New API key":_?"GitHub Copilot token":"API key",value:y,placeholder:"Paste token",onChange:D=>{i?.(),v(D.target.value)},onKeyDown:D=>{D.key==="Enter"&&k&&$()}})),m?null:a.createElement(ct,{label:"Base URL",hint:"Optional."},a.createElement("input",{className:"ps-budget-input",value:S,placeholder:"https://…","aria-label":"Base URL",onChange:D=>w(D.target.value)})),U&&!m?a.createElement(ct,{label:"Access",hint:"It runs on the worker's own identity, which belongs to the organization, so it cannot be personal."},a.createElement("div",{className:"ps-budget-input is-static",role:"note"},"Shared")):s&&!m?a.createElement(ct,{label:"Access"},a.createElement(is,{value:E?"shared":"mine",onChange:D=>I(D==="shared"),label:"Access",options:[{value:"shared",label:"Shared"},{value:"mine",label:"Only me"}]})):null)}function j0(e){const t=e.budget||{};return[!!e.ui?.budgetOpen,t.loading,t.refreshing,t.loaded,t.error,t.grid,t.paused,t.overall,t.selectedProvider,t.selectedScope,t.missingProvider,t.series,t.tab,t.summary,e.auth?.authorization?.role,e.admin?.profile]}const Tc=["#5b8def","#e8833a","#3fb27f","#c95d63","#8f6fd8","#2fa8bf","#c9a227","#d1699e","#7a9a3b","#8a8a8a"],ea=e=>Tc[e%Tc.length];function G0({view:e,included:t}){const l=e.agents.filter(b=>t.has(b.agent)).map(b=>b.agent),c=e.dayKeys.map(b=>{const y=e.daily.get(b)||new Map;return l.reduce((v,S)=>v+(y.get(S)||0),0)}),d=Math.max(0,...c)||1,p=180,u=b=>p-b/d*p,m=Math.max(1,e.dayKeys.length),f=662/m,h=Math.max(3,f*.66),g=m>40?10:m>20?5:1;return a.createElement("svg",{className:"ps-summary-chart",viewBox:"0 0 720 210",role:"img","aria-label":`Tokens per day by agent, ${m} days`},[0,.25,.5,.75,1].map(b=>a.createElement("g",{key:b},a.createElement("line",{x1:58,x2:720,y1:8+p-b*p,y2:8+p-b*p,className:"ps-summary-chart__grid"}),a.createElement("text",{x:52,y:8+p-b*p+3,className:"ps-summary-chart__tick",textAnchor:"end"},Ce(b*d)))),e.dayKeys.map((b,y)=>{const v=e.daily.get(b)||new Map,S=58+y*f+(f-h)/2;let w=0;const E=l.map((P,C)=>{const A=v.get(P)||0;if(A<=0)return null;const R=8+u(w);w+=A;const T=8+u(w);return a.createElement("rect",{key:P,x:S,y:T,width:h,height:Math.max(.5,R-T-.5),fill:ea(e.agents.findIndex(L=>L.agent===P))})}),I=`${b}: ${Ce(w)} tokens
107
107
  `+l.map(P=>[P,v.get(P)||0]).filter(([,P])=>P>0).sort((P,C)=>C[1]-P[1]).map(([P,C])=>`${P}: ${Ce(C)}`).join(`
108
108
  `);return a.createElement("g",{key:b,className:"ps-summary-chart__bar"},a.createElement("title",null,I),E,y%g===0||y===m-1?a.createElement("text",{x:S+h/2,y:204,className:"ps-summary-chart__day",textAnchor:"middle"},b.slice(5)):null)}))}const Pc={agent:(e,t)=>e.agent.localeCompare(t.agent),turns:(e,t)=>t.turns-e.turns,sessions:(e,t)=>t.sessions-e.sessions,total:(e,t)=>t.total-e.total,perTurn:(e,t)=>t.perTurn-e.perTurn,cacheRead:(e,t)=>t.cacheRead-e.cacheRead};function W0(e){const t=e.budget?.agents||{},s=e.budget?.summary||{};return[t.loading,t.error,t.fetchedAt,s.days,s.preset,(s.providers||[]).join(","),(e.budget?.grid||[]).length]}function q0({controller:e}){const t=J(e,W0,Ke),s=a.useMemo(()=>Lg(e.getState()),[e,t]),n=a.useMemo(()=>au(e.getState()),[e,t]);a.useEffect(()=>{!s.loaded&&!s.loading&&!s.error&&e.loadUsageAgents().catch(()=>{})},[e]);const[r,i]=a.useState(()=>new Set),[o,l]=a.useState("total"),c=a.useMemo(()=>new Set(s.agents.map(w=>w.agent).filter(w=>!r.has(w))),[s,r]),d=w=>i(E=>{const I=new Set(E);return I.has(w)?I.delete(w):I.add(w),I}),p=s.agents.map(w=>w.agent),u=p.filter(w=>c.has(w)).length,m=p.length>0&&u===p.length,f=u===0,h=()=>i(()=>f?new Set:new Set(p)),g=a.useCallback(w=>{w&&(w.indeterminate=!m&&!f)},[m,f]),b=a.useMemo(()=>[...s.agents].sort(Pc[o]||Pc.total),[s,o]),y=w=>e.setUsageSummaryFilter({days:w}).catch(()=>{}),v=({preset:w,providers:E})=>e.setUsageSummaryFilter({preset:w,providers:E}).catch(()=>{}),S=(w,E,I)=>a.createElement("th",{key:E,title:I||"Click to sort by this column",style:{cursor:"pointer"},onClick:()=>l(w)},E,o===w?" ▾":"");return a.createElement("div",{className:`ps-summary${s.loading?" is-loading":""}`},a.createElement("div",{className:"ps-summary__filters"},a.createElement(Ip,{view:n,onChange:v}),a.createElement("div",{className:"ps-budget-seg",role:"group","aria-label":"Window"},kp.map(w=>a.createElement("button",{key:w,type:"button",className:`ps-budget-seg__button${s.days===w?" is-on":""}`,"aria-pressed":s.days===w,onClick:()=>y(w)},`${w}d`))),a.createElement("span",{className:"ps-summary__scope"},s.scope==="cluster"?"Whole cluster, system sessions included":"Your own turns")),s.error?a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},a.createElement("div",null,"The agent pivot could not be read. "),a.createElement("div",{className:"ps-budget-sub"},s.error)):null,a.createElement("div",{className:"ps-summary__card"},a.createElement("div",{className:"ps-summary__card-head"},a.createElement("b",null,"Tokens per day, by agent"),a.createElement("span",{className:"ps-summary__muted"},`last ${s.days} days · ${Ce(s.windowTotal)} tokens · untick a row below to slice the chart`)),s.loaded||s.windowTotal>0?a.createElement(G0,{view:s,included:c}):null,a.createElement("div",{className:"ps-summary__legend",style:{flexWrap:"wrap",marginTop:"6px"}},s.agents.map((w,E)=>c.has(w.agent)?a.createElement("span",{key:w.agent},a.createElement("i",{className:"ps-summary-dot",style:{background:ea(E)}}),w.agent):null))),a.createElement("div",{className:"ps-summary__card"},a.createElement("div",{className:"ps-summary__card-head"},a.createElement("b",null,"By agent"),a.createElement("span",{className:"ps-summary__muted"},"tokens/turn is the window average — a ledger row is one turn")),s.agents.length===0?a.createElement("div",{className:"ps-budget-empty"},s.loaded?"No token usage in this window.":s.loading?"Reading…":""):a.createElement("div",{className:"ps-summary__table-wrap"},a.createElement("table",{className:"ps-summary__table"},a.createElement("thead",null,a.createElement("tr",null,a.createElement("th",{title:f?"Put every agent back in the chart":"Clear every agent out of the chart"},a.createElement("input",{type:"checkbox",ref:g,checked:m,onChange:h,"aria-label":f?"Select all agents":"Clear all agents"})),S("agent","Agent"),a.createElement("th",{title:"Distinct model names this agent ran in the window"},"Models"),S("turns","Turns"),S("sessions","Sessions"),S("total","Total"),S("perTurn","Tok/turn","Window average: total tokens over ledger turns"),S("cacheRead","Cache read"),a.createElement("th",null,"Cache write"),a.createElement("th",null,"Share"),a.createElement("th",null,"Trend"))),a.createElement("tbody",null,b.map(w=>a.createElement("tr",{key:w.agent},a.createElement("td",null,a.createElement("input",{type:"checkbox",checked:!r.has(w.agent),onChange:()=>d(w.agent),"aria-label":`Include ${w.agent} in the chart`})),a.createElement("td",{className:"is-model"},a.createElement("i",{className:"ps-summary-dot",style:{background:ea(s.agents.findIndex(E=>E.agent===w.agent))}})," ",w.agent),a.createElement("td",{title:w.models.join(", ")},w.models.length<=2?w.models.join(", "):`${w.models.slice(0,2).join(", ")} +${w.models.length-2}`),a.createElement("td",null,w.turns),a.createElement("td",null,w.sessions),a.createElement("td",{className:"is-total"},Ce(w.total)),a.createElement("td",null,Ce(Math.round(w.perTurn))),a.createElement("td",null,Ce(w.cacheRead)),a.createElement("td",null,Ce(w.cacheWrite)),a.createElement("td",{className:"is-share"},a.createElement("i",{className:"ps-summary-share",style:{width:`${Math.max(1,Math.round(w.share*100))}px`}}),`${(w.share*100).toFixed(w.share<.1?1:0)}%`),a.createElement("td",null,a.createElement(xp,{values:s.dayKeys.map(E=>{const I=w.daily.find(P=>P.day===E);return I&&Number(I.total)||0})})))))))))}const kp=[14,30,90],z0=[{id:"all",label:"All providers"},{id:"shared",label:"Shared providers"},{id:"users",label:"User providers"}];function K0(e){if(e.preset==="all")return"All providers";if(e.preset==="shared")return"Shared providers";if(e.preset==="users")return"User providers";const t=e.selectedProviders.length;return t===0?"No providers":t===1?e.selectedProviders[0]:`${t} providers`}function Ip({view:e,onChange:t}){const[s,n]=a.useState(!1),r=a.useRef(null);a.useEffect(()=>{if(!s)return;const d=u=>{r.current&&!r.current.contains(u.target)&&n(!1)},p=u=>{u.key==="Escape"&&n(!1)};return document.addEventListener("pointerdown",d),document.addEventListener("keydown",p),()=>{document.removeEventListener("pointerdown",d),document.removeEventListener("keydown",p)}},[s]);const i=d=>d==="all"?[]:e.providers.filter(p=>d==="shared"?p.class==="shared":p.class!=="shared").map(p=>p.name),o=new Set(e.preset==="all"?e.providers.map(d=>d.name):e.preset==="custom"?e.selectedProviders:i(e.preset)),l=d=>{t({preset:d,providers:i(d)}),n(!1)},c=d=>{const p=new Set(o);p.has(d)?p.delete(d):p.add(d),t({preset:"custom",providers:Array.from(p)})};return a.createElement("div",{className:"ps-summary-picker",ref:r},a.createElement("button",{type:"button",className:`ps-mini-button ps-summary-picker__button${s?" is-open":""}`,"aria-haspopup":"listbox","aria-expanded":s,"aria-label":"Providers filter",onClick:()=>n(d=>!d)},K0(e)," ",a.createElement("span",{"aria-hidden":"true"},"▾")),s?a.createElement("div",{className:"ps-summary-picker__menu",role:"listbox","aria-label":"Providers"},z0.map(d=>a.createElement("button",{key:d.id,type:"button",role:"option","aria-selected":e.preset===d.id,className:`ps-summary-picker__preset${e.preset===d.id?" is-on":""}`,onClick:()=>l(d.id)},d.label)),a.createElement("div",{className:"ps-summary-picker__rule","aria-hidden":"true"}),a.createElement("button",{type:"button",className:"ps-summary-picker__preset is-clear",onClick:()=>t({preset:"custom",providers:[]})},"Clear all"),e.providers.length===0?a.createElement("div",{className:"ps-summary-picker__empty"},"No providers to choose from."):e.providers.map(d=>a.createElement("label",{key:d.name,className:"ps-summary-picker__row"},a.createElement("input",{type:"checkbox",checked:o.has(d.name),onChange:()=>c(d.name),"aria-label":`Include ${d.name}`}),a.createElement("span",{className:"ps-summary-picker__name"},d.name),a.createElement("span",{className:`ps-scope-badge is-${d.class}`},d.class==="shared"?"shared":"user")))):null)}function Ce(e){return te(Number(e)||0)}function V0({series:e}){const o=e.map(y=>y.total),l=Math.max(0,...o),c=y=>y,d=c(l)||1,p=160,u=y=>p-c(y)/d*p,m=Math.max(1,e.length),f=662/m,h=Math.max(3,f*.66),g=[0,.25,.5,.75,1].map(y=>({f:y,label:Ce(y*l)})),b=m>40?10:m>20?5:1;return a.createElement("svg",{className:"ps-summary-chart",viewBox:"0 0 720 190",role:"img","aria-label":`Tokens per day, ${e.length} days`},g.map(y=>a.createElement("g",{key:y.label+y.f},a.createElement("line",{x1:58,x2:720,y1:8+p-y.f*p,y2:8+p-y.f*p,className:"ps-summary-chart__grid"}),a.createElement("text",{x:52,y:8+p-y.f*p+3,className:"ps-summary-chart__tick",textAnchor:"end"},y.label))),e.map((y,v)=>{const S=58+v*f+(f-h)/2,w=Math.min(y.input,y.cacheRead),E=Math.min(y.input-w,y.cacheWrite),I=y.input-w-E,P=I+w,C=y.input,A=C+y.output,R=8+p,T=8+u(I),L=8+u(P),U=8+u(C),M=8+u(A),k=`${y.day}: ${Ce(y.total)} tokens · in ${Ce(y.input)} (cache r ${Ce(y.cacheRead)} · w ${Ce(y.cacheWrite)}) · out ${Ce(y.output)} · ${y.turns} turns`;return a.createElement("g",{key:y.day,className:"ps-summary-chart__bar"},a.createElement("title",null,k),a.createElement("rect",{x:S,y:T,width:h,height:Math.max(0,R-T),className:"is-in"}),a.createElement("rect",{x:S,y:L,width:h,height:Math.max(0,T-L),className:"is-cache"}),a.createElement("rect",{x:S,y:U,width:h,height:Math.max(0,L-U),className:"is-cache-w"}),a.createElement("rect",{x:S,y:M,width:h,height:Math.max(0,U-M),className:"is-out"}),v%b===0||v===m-1?a.createElement("text",{x:S+h/2,y:184,className:"ps-summary-chart__day",textAnchor:"middle"},y.day.slice(5)):null)}))}function xp({values:e}){const t=Math.max(0,...e);return a.createElement("span",{className:"ps-summary-spark","aria-hidden":"true",style:{gridAutoColumns:e.length>30?"2px":"4px"}},e.map((s,n)=>a.createElement("i",{key:n,style:{height:`${t>0?Math.max(s>0?8:0,s/t*100):0}%`}})))}function yi({label:e,w:t}){return a.createElement("div",{className:"ps-summary-kpi"},a.createElement("div",{className:"ps-summary-kpi__label"},e),a.createElement("div",{className:"ps-summary-kpi__value"},Ce(t.total)),a.createElement("div",{className:"ps-summary-kpi__split",title:"Total is input + output. Cache read and write are parts of the input, not additions to it."},a.createElement("span",null,a.createElement("i",{className:"ps-summary-dot is-in"}),"in ",Ce(t.input)),a.createElement("span",null,a.createElement("i",{className:"ps-summary-dot is-cache"}),"cache r ",Ce(t.cacheRead)),a.createElement("span",null,a.createElement("i",{className:"ps-summary-dot is-cache-w"}),"w ",Ce(t.cacheWrite)),a.createElement("span",null,a.createElement("i",{className:"ps-summary-dot is-out"}),"out ",Ce(t.output)),a.createElement("span",null,`· ${t.turns} turns`)))}function Y0(e){const t=e.budget?.summary||{};return[t.loading,t.error,t.fetchedAt,t.days,t.preset,(t.providers||[]).join(","),(e.budget?.grid||[]).length]}function X0({controller:e}){const t=J(e,Y0,Ke),s=a.useMemo(()=>au(e.getState()),[e,t]);a.useEffect(()=>{!s.loaded&&!s.loading&&!s.error&&e.loadUsageSummary().catch(()=>{})},[e]);const n=l=>e.setUsageSummaryFilter({days:l}).catch(()=>{}),r=({preset:l,providers:c})=>e.setUsageSummaryFilter({preset:l,providers:c}).catch(()=>{}),i=s.classes.filter(l=>l.total>0),o=`last ${s.days} days`;return a.createElement("div",{className:`ps-summary${s.loading?" is-loading":""}`},a.createElement("div",{className:"ps-summary__filters"},a.createElement(Ip,{view:s,onChange:r}),a.createElement("div",{className:"ps-budget-seg",role:"group","aria-label":"Window"},kp.map(l=>a.createElement("button",{key:l,type:"button",className:`ps-budget-seg__button${s.days===l?" is-on":""}`,"aria-pressed":s.days===l,"aria-label":`Last ${l} days`,onClick:()=>n(l)},`${l}d`))),a.createElement("span",{className:"ps-summary__scope"},s.scope==="cluster"?"Whole cluster, system sessions included":"Your own turns")),s.error?a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},a.createElement("div",null,"The summary could not be read. "),a.createElement("div",{className:"ps-budget-sub"},s.error)):null,a.createElement("div",{className:"ps-summary__kpis"},a.createElement(yi,{label:"Today (UTC)",w:s.windows.day}),a.createElement(yi,{label:"Last 7 days",w:s.windows.week}),a.createElement(yi,{label:"Last 30 days",w:s.windows.month})),a.createElement("div",{className:"ps-summary__card"},a.createElement("div",{className:"ps-summary__card-head"},a.createElement("b",null,"Tokens per day"),a.createElement("span",{className:"ps-summary__legend"},a.createElement("span",{title:"Prompt tokens that were neither served from nor written to the cache"},a.createElement("i",{className:"ps-summary-dot is-in"}),"input"),a.createElement("span",{title:"The part of the input served from the cache"},a.createElement("i",{className:"ps-summary-dot is-cache"}),"cache read"),a.createElement("span",{title:"The part of the input written to the cache"},a.createElement("i",{className:"ps-summary-dot is-cache-w"}),"cache write"),a.createElement("span",null,a.createElement("i",{className:"ps-summary-dot is-out"}),"output")),a.createElement("span",{className:"ps-summary__muted"},`${o} · ${Ce(s.windowTotal)} tokens`),null),s.windowTotal>0||s.loaded?a.createElement(V0,{series:s.series}):null,i.length>1?a.createElement("div",{className:"ps-summary__muted"},"By charge: ",i.map((l,c)=>`${c?" · ":""}${l.chargeClass} ${Ce(l.total)}`).join("")):null),a.createElement("div",{className:"ps-summary__card"},a.createElement("div",{className:"ps-summary__card-head"},a.createElement("b",null,"By model"),a.createElement("span",{className:"ps-summary__muted"},`${o} · across providers, efforts and context tiers`)),s.models.length===0?a.createElement("div",{className:"ps-budget-empty"},s.loaded?"No token usage in this window.":s.loading?"Reading…":""):a.createElement("div",{className:"ps-summary__table-wrap"},a.createElement("table",{className:"ps-summary__table"},a.createElement("thead",null,a.createElement("tr",null,[["Model"],["Turns"],["Providers","Distinct provider names in the ledger for this window — including providers since deleted"],["Input","Prompt tokens, including what was served from and written to the cache"],["Output"],["Cache read","The part of Input served from the cache"],["Cache write","The part of Input written to the cache"],["Total","Input + Output"],["Share"],["Trend"]].map(([l,c])=>a.createElement("th",{key:l,title:c},l)))),a.createElement("tbody",null,s.models.map(l=>a.createElement("tr",{key:l.model},a.createElement("td",{className:"is-model"},l.model),a.createElement("td",null,l.turns),a.createElement("td",null,l.providers),a.createElement("td",null,Ce(l.input)),a.createElement("td",null,Ce(l.output)),a.createElement("td",null,Ce(l.cacheRead)),a.createElement("td",null,Ce(l.cacheWrite)),a.createElement("td",{className:"is-total"},Ce(l.total)),a.createElement("td",{className:"is-share"},a.createElement("i",{className:"ps-summary-share",style:{width:`${Math.max(1,Math.round(l.share*100))}px`}}),`${(l.share*100).toFixed(l.share<.1?1:0)}%`),a.createElement("td",null,a.createElement(xp,{values:l.sparkline})))))))))}function Q0({controller:e}){const t=J(e,j0,Ke),s=a.useMemo(()=>Og(e.getState()),[e,t]),n=a.useMemo(()=>e.getState().budget?.grid||[],[e,t]),[r,i]=a.useState([]),[o,l]=a.useState(!0),[c,d]=a.useState(!1),[p,u]=a.useState(0),[m,f]=a.useState(new Map),[h,g]=a.useState(null),b=a.useCallback(()=>{typeof e.transport.getDefaults=="function"&&Promise.resolve(e.transport.getDefaults()).then(G=>g(G||null)).catch(()=>{})},[e]);a.useEffect(()=>{let G=!0;return l(!0),Promise.resolve().then(()=>{if(typeof e.transport.listModels!="function")throw new Error("Model catalog unavailable");return e.transport.listModels()}).then(D=>{G&&(i($0(D)),d(!1))}).catch(()=>{G&&d(!0)}).finally(()=>{G&&l(!1)}),typeof e.transport.listProviders=="function"&&Promise.resolve(e.transport.listProviders()).then(D=>{if(!G)return;const W=new Map;for(const N of D?.providers||[])W.set(N.name,N.typeId||"");f(W)}).catch(()=>{}),b(),()=>{G=!1}},[e,b,p]),a.useEffect(()=>{const G=e.getState().budget||{};!G.loaded&&!G.loading&&!G.error&&e.loadProviderTable().catch(()=>{})},[e]),a.useEffect(()=>{const G=setInterval(()=>{e.refreshProviderTable().catch(()=>{})},6e4);return()=>clearInterval(G)},[e]),a.useEffect(()=>{const G=D=>{if(D.key!=="Escape")return;const W=D.target,N=W&&W.tagName;N==="SELECT"||N==="INPUT"||N==="TEXTAREA"||e.getState().ui.modal||document.querySelector(".ps-budget-sheet")||(D.preventDefault(),D.stopPropagation(),e.closeBudget())};return window.addEventListener("keydown",G,!0),()=>window.removeEventListener("keydown",G,!0)},[e]);const[y,v]=a.useState(null),[S,w]=a.useState(!1),[E,I]=a.useState(null),P=a.useRef(null),C=G=>{P.current=typeof document<"u"?document.activeElement:null,I(null),w(!1),v(G)},A=a.useCallback(()=>{v(null),I(null),w(!1);const G=P.current;P.current=null,G&&typeof G.focus=="function"&&document.contains(G)&&G.focus()},[]),R=async(G,{keepOpen:D=!1,onDone:W=null}={})=>{w(!0),I(null);const N=await G();if(w(!1),!N||N.ok!==!0){I(N?.error||"The change was refused.");return}D||A(),W&&W(N.result||null)},T=G=>e.dispatch({type:"ui/status",text:G}),L=s.selected,U=s.selectedProviderRow,M=L?_0(r,{name:L.providerName,typeId:m.get(L.providerName)||""},n):[];let k=null;y?.kind==="edit"&&U&&(k=a.createElement(H0,{row:U,rawRows:n,models:M,isAdmin:s.isAdmin,modelsLoading:o,modelsError:c,onRetryModels:()=>u(G=>G+1),initialPeriod:y.period||"day",initialScope:y.scope||"*",busy:S,error:E,onCancel:A,onRun:(G,D)=>{const W=L.providerName;if(G==="limit")return R(()=>e.setProviderLimit({provider:W,...D}),{onDone:N=>{const j=Number(N?.seededTokens)||0;T(j>0?`Limit saved. This period had already spent ${te(j)} tokens, and they count against it.`:"Limit saved. This period has spent nothing against it yet.")}});if(G==="removeLimit")return R(()=>e.removeProviderLimit({provider:W,...D}),{onDone:()=>T(`That period no longer caps ${W}.`)});if(G==="allowance")return R(()=>e.setProviderAllowance({provider:W,pct:D.pct}),{onDone:()=>T(D.pct>=100?`Everyone shares the whole of ${W} again.`:`Each person may now use up to ${D.pct}% of each of ${W}'s limits.`)});if(G==="hold")return R(()=>e.setProviderHold({provider:W,...D}),{onDone:()=>{if(D.release){T(`The hold on ${W} is released. Sessions waiting on it wake up.`);return}const N=(e.getState().budget?.grid||[]).find(B=>B.providerName===W&&B.rowKind!=="model"),j=N?.holdIndefinite===!0||(N?.holdUntilUtc?Date.parse(N.holdUntilUtc)>Date.now():!1);T(j?`${W} is on hold. No new turn runs against it until it is released.`:`${W} is NOT on hold: the time given has already passed.`)}})}}));const _=a.createElement("div",{className:"ps-budget-head"},a.createElement("div",{className:"ps-budget-headline"},a.createElement("span",{className:"ps-budget-coin","aria-hidden":"true"},"◎"),a.createElement("h2",{className:"ps-budget-h"},"Providers & Budgets"),a.createElement("span",{className:"ps-budget-sub"},"Usage and limits")),a.createElement("div",{className:"ps-budget-head-actions"},a.createElement(ve,{icon:"↻",label:"Refresh providers and budgets",className:"ps-mini-button",disabled:s.loading||s.refreshing,onClick:()=>e.refreshProviderTable().catch(()=>{})})));let $;return s.failed?$=a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},a.createElement("div",null,"Providers and budgets could not be read. ",a.createElement("button",{type:"button",className:"ps-budget-link",onClick:()=>e.loadProviderTable().catch(()=>{})},"Try again")),a.createElement("div",{className:"ps-budget-sub"},s.error)):s.loading&&!s.loaded?$=a.createElement("div",{className:"ps-budget-empty"},"Reading providers and budgets…"):$=a.createElement(a.Fragment,null,s.stale?a.createElement("div",{className:"ps-budget-empty is-error",role:"alert"},a.createElement("div",null,"These figures are from an earlier read. The most recent read failed."),a.createElement("div",{className:"ps-budget-sub"},s.error)):null,s.paused.count>0?a.createElement("div",{className:`ps-budget-waiting${s.paused.stale?" is-stale":""}`,role:"status"},s.paused.sentence," ",s.paused.provider?a.createElement("button",{type:"button",className:"ps-budget-link",onClick:()=>{s.selectedProvider!==s.paused.provider&&e.selectBudgetProvider(s.paused.provider).catch(()=>{})}},`Open ${s.paused.provider}`):null,s.paused.stale?a.createElement("span",{className:"ps-budget-sub"}," This line is from an earlier read — the last one failed."):null):null,s.paused.count===0&&s.paused.error?a.createElement("div",{className:"ps-budget-waiting is-stale",role:"status"},"The list of waiting sessions could not be read. The figures below were read successfully."):null,s.missing?a.createElement("div",{className:"ps-budget-waiting is-missing",role:"status"},s.missing.sentence," ",a.createElement("button",{type:"button",className:"ps-budget-link",onClick:()=>{e.closeBudget(),e.openAdminConsole()}},"Open Model Providers")):null,a.createElement("div",{className:`ps-budget-body${s.refreshing?" is-refreshing":""}`},a.createElement(F0,{controller:e,view:s,defaults:h}),a.createElement("div",{className:"ps-budget-actions"},a.createElement(ve,{icon:a.createElement(mp),label:"Edit usage policy",className:"ps-mini-button",disabled:!U||!U.manageable,onClick:()=>C({kind:"edit",scope:L?.kind==="model"?L.scope:"*"})}),a.createElement("span",{className:"ps-budget-sub"},L?L.providerName:"No provider selected")),a.createElement("div",{className:"ps-budget-foot ps-budget-sub"},"Manage providers and defaults in Admin Console."),L?a.createElement(D0,{controller:e,view:s}):null,L?a.createElement(B0,{view:s}):null)),a.createElement("div",{className:"ps-budget-surface"},_,a.createElement("div",{className:"ps-budget-tabs",role:"tablist"},[["providers","Providers"],["summary","Cluster summary"],["agents","Agents"]].map(([G,D])=>a.createElement("button",{key:G,type:"button",role:"tab","aria-selected":(e.getState().budget?.tab||"providers")===G,className:`ps-budget-tab${(e.getState().budget?.tab||"providers")===G?" is-on":""}`,onClick:()=>e.setBudgetTab(G)},D))),(e.getState().budget?.tab||"providers")==="summary"?a.createElement("div",{className:"ps-budget"},a.createElement(X0,{controller:e})):e.getState().budget?.tab==="agents"?a.createElement("div",{className:"ps-budget"},a.createElement(q0,{controller:e})):a.createElement("div",{className:"ps-budget"},$),k)}function ta({controller:e}){const t=J(e,y=>y.ui.themeId),s=J(e,y=>!!y.ui.touchScale),n=Pt(t),r=J(e,y=>({rawModal:y.ui.modal,themePicker:Uy(y),modelPicker:my(y),reasoningEffortPicker:hy(y),contextTierPicker:gy(y),sessionAgentPicker:fy(y),sessionGroupPicker:yy(y),sessionGroupName:Sy(y),artifactPicker:Iy(y),logFilter:Ey(y),filesFilter:ky(y),historyFormat:Hy(y),renameSession:by(y),sessionOwnerFilter:wy(y),artifactUpload:vy(y),confirm:jy(y),logsFilter:y.logs.filter,filesFilterState:y.files.filter,historyFormatState:y.executionHistory?.format||"pretty"}),Ke),i=r.rawModal,o=a.useRef(null),l=a.useRef(null),c=a.useRef(null),[d,p]=a.useState(""),u=i?.type==="sessionOwnerFilter";if(a.useEffect(()=>{u||p("")},[u]),a.useEffect(()=>{if(i?.type!=="renameSession"||!r.renameSession)return;const y=o.current;if(y){if(document.activeElement!==y)try{y.focus({preventScroll:!0})}catch{y.focus()}y.setSelectionRange(r.renameSession.cursorIndex,r.renameSession.cursorIndex)}},[i?.type,r.renameSession?.cursorIndex,r.renameSession?.value]),a.useEffect(()=>{if(i?.type!=="sessionGroupName"||!r.sessionGroupName)return;const y=l.current;if(y){if(document.activeElement!==y)try{y.focus({preventScroll:!0})}catch{y.focus()}y.setSelectionRange(r.sessionGroupName.cursorIndex,r.sessionGroupName.cursorIndex)}},[i?.type,r.sessionGroupName?.cursorIndex,r.sessionGroupName?.value]),a.useEffect(()=>{if(!i||!["themePicker","modelPicker","reasoningEffortPicker","contextTierPicker","sessionAgentPicker","sessionGroupPicker","artifactPicker","sessionOwnerFilter","logFilter","filesFilter","historyFormat"].includes(i.type))return;const y=c.current;if(!y)return;const v=y.querySelector(".ps-list-button.is-selected");v&&typeof v.scrollIntoView=="function"&&v.scrollIntoView({block:"nearest"})},[i?.type,i?.selectedIndex,r.themePicker?.selectedRowIndex,r.modelPicker?.selectedRowIndex,r.reasoningEffortPicker?.selectedRowIndex,r.contextTierPicker?.selectedRowIndex,r.sessionAgentPicker?.selectedRowIndex,r.sessionGroupPicker?.selectedRowIndex,r.artifactPicker?.selectedRowIndex,r.sessionOwnerFilter?.selectedRowIndex,r.logFilter?.selectedRowIndex,r.filesFilter?.selectedRowIndex,r.historyFormat?.selectedRowIndex]),!i)return null;const m=()=>e.handleCommand(O.CLOSE_MODAL).catch(()=>{}),f=()=>a.createElement("label",{className:"ps-modal-toggle",title:"Larger type and bigger hit targets, for phones and touch screens."},a.createElement("input",{type:"checkbox",checked:s,onChange:y=>e.dispatch({type:"ui/touchScale",enabled:y.target.checked})}),a.createElement("span",null,"Mobile")),h=(y,v="Apply",S=null,w=null)=>{const E=Array.isArray(y.rows)?y.rows:[],I=Array.isArray(y.rowItemIndexes)?y.rowItemIndexes:null,P=i.type==="modelPicker"||i.type==="reasoningEffortPicker"||i.type==="contextTierPicker"||i.type==="sessionAgentPicker",C=I&&I.length===E.length?E.map((A,R)=>{const T=I[R],L=Array.isArray(A)?A:it([A])[0]?.runs||[{text:A?.text||"",color:A?.color}];if(T==null||T<0)return a.createElement("div",{key:`row:${R}`,className:"ps-line ps-modal-list-heading-line"},a.createElement(et,{runs:L,theme:n}));const U=i.items?.[T];return a.createElement("button",{key:U?.id||`row:${R}`,type:"button",className:`ps-list-button ps-modal-list-button${T===i.selectedIndex?" is-selected":""}${P?" is-hanging":""}${U?.disabled?" is-disabled":""}`,onClick:()=>{e.dispatch({type:"ui/modalSelection",index:T})}},a.createElement("div",{className:"ps-line ps-modal-list-line"},a.createElement(et,{runs:L,theme:n})))}):(i.items||[]).flatMap((A,R,T)=>{const L=a.createElement("button",{key:A.id||R,type:"button",className:`ps-list-button ps-modal-list-button${R===i.selectedIndex?" is-selected":""}${P?" is-hanging":""}${A?.disabled?" is-disabled":""}`,onClick:()=>e.dispatch({type:"ui/modalSelection",index:R})},a.createElement("div",{className:"ps-line ps-modal-list-line"},a.createElement(et,{runs:Array.isArray(E?.[R])?E[R]:it([E?.[R]])[0]?.runs||[{text:E?.[R]?.text||"",color:E?.[R]?.color}],theme:n})));return A?.group&&A.group!==T[R-1]?.group?[a.createElement("div",{key:`group:${A.group}`,className:"ps-modal-list-group","aria-hidden":"true"},A.group),L]:[L]});return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:`ps-modal is-list${i.type==="themePicker"?" is-theme-picker":""}`,onClick:A=>A.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},y.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),w,a.createElement("div",{className:"ps-modal-grid"},a.createElement("div",{ref:c,className:"ps-modal-list"},C),a.createElement("div",{className:"ps-modal-details"},a.createElement("div",{className:"ps-modal-details-title"},y.detailsTitle||"Details"),it(y.detailsLines||[]).map((A,R)=>a.createElement(dt,{key:`detail:${R}`,line:A,theme:n,className:"ps-modal-detail-line"})))),a.createElement("div",{className:"ps-modal-footer"},S,a.createElement("button",{type:"button",className:"ps-modal-button",onClick:m},"Cancel"),a.createElement("button",{type:"button",className:"ps-modal-button is-primary",onClick:()=>e.handleCommand(O.MODAL_CONFIRM).catch(()=>{})},v))))};if(i.type==="confirm"&&r.confirm){const y=!!i.alert,v=!y&&i.action==="deleteSession",S=i.action==="regenerateSession",w=i.extras||{};return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-narrow",onClick:E=>E.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},r.confirm.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("div",{className:"ps-modal-body",style:{padding:"16px 20px"}},a.createElement("p",{style:{color:"#94a3b8",margin:0}},r.confirm.message)),S?a.createElement("div",{className:"ps-modal-body",style:{padding:"0 20px 12px",display:"flex",flexDirection:"column",gap:10}},a.createElement("label",{style:{color:"#94a3b8",fontSize:"12px",display:"flex",alignItems:"center",gap:8}},"Distillation",a.createElement("select",{className:"ps-modal-input",style:{flex:"1",padding:"4px 8px"},value:w.distillMode||"llm",onChange:E=>e.updateConfirmExtras({distillMode:E.currentTarget.value})},a.createElement("option",{value:"llm"},"Intelligent (LLM reads the whole transcript)"),a.createElement("option",{value:"deterministic"},"Fast (no LLM — tail + pointers)"))),(w.distillMode||"llm")==="llm"?a.createElement(Z0,{controller:e,extras:w}):null,(w.distillMode||"llm")==="llm"?a.createElement("textarea",{className:"ps-modal-input",style:{width:"100%",minHeight:"64px",resize:"vertical",fontFamily:"inherit",fontSize:"13px"},placeholder:'Distilling instructions (optional) — e.g. "preserve every SQL snippet verbatim"',value:w.instructions||"",maxLength:4e3,onChange:E=>e.updateConfirmExtras({instructions:E.currentTarget.value})}):null):null,a.createElement("div",{className:"ps-modal-footer"},y?null:a.createElement("button",{type:"button",className:"ps-modal-button",onClick:m},"Cancel"),a.createElement("button",{type:"button",className:`ps-modal-button ${v?"is-danger":"is-primary"}`,onClick:()=>e.handleCommand(O.MODAL_CONFIRM).catch(()=>{})},r.confirm.confirmLabel))))}if(i.type==="themePicker"&&r.themePicker)return h(r.themePicker,"Apply Theme",f());const g=i.sessionOptions?.mode==="switchModel"?"Switch Model":"Create Session";if(i.type==="modelPicker"&&r.modelPicker)return h(r.modelPicker,g);if(i.type==="reasoningEffortPicker"&&r.reasoningEffortPicker)return h(r.reasoningEffortPicker,g);if(i.type==="contextTierPicker"&&r.contextTierPicker)return h(r.contextTierPicker,g);if(i.type==="sessionAgentPicker"&&r.sessionAgentPicker){const y=[["used","Most used","Ordered by how often YOU have started each agent"],["name","Name","Alphabetical by agent name"],["package","Package","Grouped by package name, then agent name"]],v=a.createElement("div",{className:"ps-agent-picker-toolbar"},a.createElement("input",{type:"search",className:"ps-agent-picker-search","data-modal-search":"true",placeholder:"Search agents, packages, tools…",value:i.query||"",autoFocus:!0,"aria-label":"Search agents",onChange:S=>e.setAgentPickerQuery(S.target.value),onKeyDown:S=>{["ArrowUp","ArrowDown","Enter","Escape","Tab"].includes(S.key)||S.stopPropagation()}}),a.createElement("div",{className:"ps-agent-picker-sorts",role:"group","aria-label":"Sort agents"},y.map(([S,w,E])=>a.createElement("button",{key:S,type:"button",className:`ps-agent-picker-sort${(i.sort||"used")===S?" is-on":""}`,title:E,"aria-pressed":(i.sort||"used")===S?"true":"false",onClick:()=>e.setAgentPickerSort(S)},w))));return h(r.sessionAgentPicker,"Create Session",null,v)}if(i.type==="sessionGroupPicker"&&r.sessionGroupPicker)return h(r.sessionGroupPicker,"Move");if(i.type==="artifactPicker"&&r.artifactPicker)return h(r.artifactPicker,r.artifactPicker.confirmLabel||"Open / Download");if(i.type==="sessionOwnerFilter"&&r.sessionOwnerFilter){const y=r.sessionOwnerFilter,v=Array.isArray(y.rows)?y.rows:[],S=d.trim().toLowerCase(),w=I=>{const P=v?.[I];return(Array.isArray(P)?P:it([P])[0]?.runs||[]).map(A=>A?.text||"").join("")||String(P?.text||"")},E=(i.items||[]).map((I,P)=>P).filter(I=>{if(!S)return!0;const P=(i.items||[])[I]||{};return`${w(I)} ${P.label||""} ${P.description||""}`.toLowerCase().includes(S)});return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-list",onClick:I=>I.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},y.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("input",{className:"ps-modal-input ps-modal-search","data-modal-search":"true",value:d,placeholder:"Search people…",autoFocus:!0,onChange:I=>p(I.currentTarget.value),onKeyDown:I=>{I.key==="Escape"&&d&&(I.stopPropagation(),p(""))}}),a.createElement("div",{className:"ps-modal-grid"},a.createElement("div",{ref:c,className:"ps-modal-list"},E.length===0?a.createElement("div",{className:"ps-empty-state"},`No one matches "${d}".`):null,E.map(I=>(P=>a.createElement("button",{key:P.id||I,type:"button",className:`ps-list-button ps-modal-list-button${I===i.selectedIndex?" is-selected":""}`,onClick:()=>e.toggleSessionOwnerFilter(I)},a.createElement("div",{className:"ps-line ps-modal-list-line"},a.createElement(et,{runs:Array.isArray(v?.[I])?v[I]:it([v?.[I]])[0]?.runs||[{text:v?.[I]?.text||"",color:v?.[I]?.color}],theme:n}))))((i.items||[])[I]||{}))),a.createElement("div",{className:"ps-modal-details"},a.createElement("div",{className:"ps-modal-details-title"},y.detailsTitle||"Details"),it(y.detailsLines||[]).map((I,P)=>a.createElement(dt,{key:`detail:${P}`,line:I,theme:n,className:"ps-modal-detail-line"})))),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-modal-button is-primary",onClick:m},"Done"))))}if(i.type==="renameSession"&&r.renameSession)return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-narrow",onClick:y=>y.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},r.renameSession.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("input",{ref:o,className:"ps-modal-input",value:r.renameSession.value,placeholder:r.renameSession.placeholder,onChange:y=>e.setRenameSessionValue(y.currentTarget.value,y.currentTarget.selectionStart??y.currentTarget.value.length),onKeyDown:y=>{y.key==="Enter"&&(y.preventDefault(),e.handleCommand(O.MODAL_CONFIRM).catch(()=>{}))},autoFocus:!0}),a.createElement("div",{className:"ps-modal-details"},it(r.renameSession.helpLines||[]).map((y,v)=>a.createElement(dt,{key:`help:${v}`,line:y,theme:n,className:"ps-modal-detail-line"}))),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-modal-button",onClick:m},"Cancel"),a.createElement("button",{type:"button",className:"ps-modal-button is-primary",onClick:()=>e.handleCommand(O.MODAL_CONFIRM).catch(()=>{})},"Save"))));if(i.type==="sessionGroupName"&&r.sessionGroupName)return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-narrow",onClick:y=>y.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},r.sessionGroupName.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("input",{ref:l,className:"ps-modal-input",value:r.sessionGroupName.value,placeholder:r.sessionGroupName.placeholder,onChange:y=>e.setSessionGroupNameValue(y.currentTarget.value,y.currentTarget.selectionStart??y.currentTarget.value.length),onKeyDown:y=>{y.key==="Enter"&&(y.preventDefault(),e.handleCommand(O.MODAL_CONFIRM).catch(()=>{}))},autoFocus:!0}),a.createElement("div",{className:"ps-modal-details"},it(r.sessionGroupName.helpLines||[]).map((y,v)=>a.createElement(dt,{key:`help:${v}`,line:y,theme:n,className:"ps-modal-detail-line"}))),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-modal-button",onClick:m},"Cancel"),a.createElement("button",{type:"button",className:"ps-modal-button is-primary",onClick:()=>e.handleCommand(O.MODAL_CONFIRM).catch(()=>{})},r.sessionGroupName.mode==="rename"?"Rename":"Create and Move"))));if(i.type==="terminatePicker"){const y=Number(i.bulkCount)>1,v=!!i.systemRestart,S=String(i.sessionTitle||"").trim()||"this session",w=Number(i.bulkCount)||0,E=y?`What should happen to the ${w} selected sessions? Choose an action; you'll be asked to confirm.`:v?`How should "${S}" be restarted? Choose a disposition; you'll be asked to confirm.`:`What should happen to "${S}"? Choose an action; you'll be asked to confirm.`,I=P=>()=>{e.pickTerminateAction(P).catch(()=>{})};return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-narrow",onClick:P=>P.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},i.title||"Session Lifecycle"),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("div",{className:"ps-modal-body",style:{padding:"12px 16px 4px"}},a.createElement("p",{style:{color:"#94a3b8",margin:0}},E)),a.createElement("div",{className:"ps-modal-body",style:{padding:"10px 16px 16px",display:"flex",flexDirection:"column",gap:8}},i.canRegenerate?a.createElement("button",{type:"button",className:"ps-modal-button",style:{width:"100%",justifyContent:"flex-start"},title:"Archive and distill the transcript, then rebuild context fresh at the next turn boundary. Facts, artifacts, sub-agents, sharing, schedule, and chat history are preserved.",onClick:I("regenerate")},"Regenerate Context"):null,a.createElement("button",{type:"button",className:"ps-modal-button is-primary",style:{width:"100%",justifyContent:"flex-start"},onClick:I("complete")},y?`Mark ${w} Completed`:v?"Complete & Restart":"Mark Completed"),a.createElement("button",{type:"button",className:"ps-modal-button",style:{width:"100%",justifyContent:"flex-start"},onClick:I("cancel")},y?`Cancel ${w} Sessions`:v?"Terminate & Restart":"Cancel Session"),a.createElement("button",{type:"button",className:"ps-modal-button is-danger",style:{width:"100%",justifyContent:"flex-start"},onClick:I("delete")},y?`Hard Delete ${w} Sessions`:v?"Hard Delete & Restart":"Delete Session")),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-modal-button",onClick:m},"Close"))))}if(i.type==="artifactUpload"&&r.artifactUpload)return a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-narrow",onClick:y=>y.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},r.artifactUpload.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("input",{className:"ps-modal-input",value:r.artifactUpload.value,placeholder:r.artifactUpload.placeholder,onChange:y=>e.setArtifactUploadValue(y.currentTarget.value,y.currentTarget.selectionStart||y.currentTarget.value.length),autoFocus:!0}),a.createElement("div",{className:"ps-modal-details"},it(r.artifactUpload.helpLines||[]).map((y,v)=>a.createElement(dt,{key:`help:${v}`,line:y,theme:n,className:"ps-modal-detail-line"}))),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-modal-button",onClick:m},"Cancel"),a.createElement("button",{type:"button",className:"ps-modal-button is-primary",onClick:()=>e.handleCommand(O.MODAL_CONFIRM).catch(()=>{})},"Attach"))));const b=i.type==="logFilter"?r.logFilter:i.type==="filesFilter"?r.filesFilter:i.type==="historyFormat"?r.historyFormat:null;return b?a.createElement("div",{className:"ps-modal-backdrop",onClick:m},a.createElement("div",{className:"ps-modal is-wide",onClick:y=>y.stopPropagation()},a.createElement("div",{className:"ps-modal-header"},a.createElement("div",{className:"ps-modal-title"},b.title),a.createElement("button",{type:"button",className:"ps-modal-close",onClick:m,"aria-label":"Close",title:"Close"},"✕")),a.createElement("div",{className:"ps-filter-grid"},(i.items||[]).map((y,v)=>{const S=i.type==="filesFilter"?r.filesFilterState?.[y.id]||y.options?.[0]?.id:i.type==="historyFormat"?r.historyFormatState:r.logsFilter?.[y.id]||y.options?.[0]?.id;return a.createElement("div",{key:y.id||v,className:"ps-filter-column"},a.createElement("div",{className:"ps-filter-title"},y.label),(y.options||[]).map(w=>a.createElement("button",{key:w.id,type:"button",className:`ps-filter-option${w.id===S?" is-selected":""}`,onClick:()=>{e.dispatch({type:"ui/modalSelection",index:v}),i.type==="historyFormat"?e.dispatch({type:"executionHistory/format",format:w.id}):i.type==="filesFilter"?(e.dispatch({type:"files/filter",filter:{[y.id]:w.id}}),e.ensureFilesForScope(w.id).catch(()=>{})):e.dispatch({type:"logs/filter",filter:{[y.id]:w.id}})}},w.label)))})),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-modal-button is-primary",onClick:m},"Done")))):null}function Z0({controller:e,extras:t}){const s=Array.isArray(t.distillerModelOptions)?t.distillerModelOptions:[],n=s.find(d=>d.qualifiedName===t.distillerModel)||null,r=n?.supportedReasoningEfforts||[],i=n?.supportedContextTiers||[],o={color:"#94a3b8",fontSize:"12px",display:"flex",alignItems:"center",gap:8},l={flex:"1",padding:"4px 8px"},c=d=>e.updateConfirmExtras(d);return a.createElement(a.Fragment,null,a.createElement("label",{style:o},"Distiller model",a.createElement("select",{className:"ps-modal-input",style:l,value:t.distillerModel||"",onChange:d=>c({distillerModel:d.currentTarget.value,distillerEffort:"",distillerContextTier:""})},a.createElement("option",{value:""},"Deployment default"),s.map(d=>a.createElement("option",{key:d.qualifiedName,value:d.qualifiedName},d.qualifiedName)))),r.length>0?a.createElement("label",{style:o},"Reasoning",a.createElement("select",{className:"ps-modal-input",style:l,value:t.distillerEffort||"",onChange:d=>c({distillerEffort:d.currentTarget.value})},a.createElement("option",{value:""},"Model default"),r.map(d=>a.createElement("option",{key:d,value:d},d)))):null,i.length>0?a.createElement("label",{style:o},"Context",a.createElement("select",{className:"ps-modal-input",style:l,value:t.distillerContextTier||"",onChange:d=>c({distillerContextTier:d.currentTarget.value})},a.createElement("option",{value:""},"Model default"),i.map(d=>a.createElement("option",{key:d,value:d},d==="long_context"?"long context (fits a larger transcript)":d)))):null)}function bE({controller:e}){const t=J(e,s=>s.ui.modal);return Ap(e,!1,!t),a.createElement(ta,{controller:e})}function Ap(e,t,s=!1){a.useEffect(()=>{if(s)return;const n=r=>{if(r.defaultPrevented)return;const i=r.target,o=i instanceof HTMLElement&&(i.tagName==="TEXTAREA"||i.tagName==="INPUT"||i.tagName==="SELECT"||i.isContentEditable),l=e.getState().ui.modal,c=Ga(e),d=e.getState().ui.inspectorTab,p=e.getState().ui.focusRegion,u=!r.metaKey&&!r.ctrlKey&&!r.altKey,m=!r.metaKey&&!r.ctrlKey&&!r.altKey&&r.key==="T"&&r.shiftKey,f=!r.metaKey&&!r.ctrlKey&&!r.altKey&&r.key==="N"&&r.shiftKey,h=g=>{const b=sv(c,d,g);e.selectInspectorTab(b).catch(()=>{})};if(!o&&m){r.preventDefault(),e.handleCommand(O.OPEN_THEME_PICKER).catch(()=>{});return}if(!o&&f){r.preventDefault(),e.handleCommand(O.OPEN_MODEL_PICKER).catch(()=>{});return}if(l&&!o){if(r.key==="Escape"||l.type==="confirm"&&r.key==="n"){r.preventDefault(),e.handleCommand(O.CLOSE_MODAL).catch(()=>{});return}if(r.key==="Enter"||l.type==="confirm"&&r.key==="y"){r.preventDefault(),e.handleCommand(O.MODAL_CONFIRM).catch(()=>{});return}if(r.key==="Tab"&&r.shiftKey){r.preventDefault(),e.handleCommand(O.MODAL_PANE_PREV).catch(()=>{});return}if(r.key==="Tab"){r.preventDefault(),e.handleCommand(O.MODAL_PANE_NEXT).catch(()=>{});return}if(r.key==="ArrowUp"||r.key==="k"){r.preventDefault(),e.handleCommand(O.MODAL_PREV).catch(()=>{});return}(r.key==="ArrowDown"||r.key==="j")&&(r.preventDefault(),e.handleCommand(O.MODAL_NEXT).catch(()=>{}));return}if(l&&o&&i instanceof HTMLElement&&i.dataset.modalSearch==="true"){if(r.key==="Escape"){r.preventDefault(),e.handleCommand(O.CLOSE_MODAL).catch(()=>{});return}if(r.key==="Enter"){r.preventDefault(),e.handleCommand(O.MODAL_CONFIRM).catch(()=>{});return}if(r.key==="ArrowUp"){r.preventDefault(),e.handleCommand(O.MODAL_PREV).catch(()=>{});return}if(r.key==="ArrowDown"){r.preventDefault(),e.handleCommand(O.MODAL_NEXT).catch(()=>{});return}return}if(!o){if(r.key==="r"&&u&&p!=="prompt"){r.preventDefault(),e.handleCommand(O.REFRESH).catch(()=>{});return}if(r.key==="n"&&u){r.preventDefault(),e.handleCommand(O.NEW_SESSION).catch(()=>{});return}if(p==="inspector"&&d==="files"&&(r.key==="u"&&u||(r.ctrlKey||r.metaKey)&&r.key.toLowerCase()==="a")){r.preventDefault(),e.handleCommand(O.OPEN_ARTIFACT_UPLOAD).catch(()=>{});return}if(p==="inspector"&&d==="files"&&r.key==="a"&&u){r.preventDefault(),e.handleCommand(O.DOWNLOAD_SELECTED_FILE).catch(()=>{});return}if(p==="inspector"&&d==="files"&&r.key==="x"&&u){r.preventDefault(),e.handleCommand(O.DELETE_SELECTED_FILE).catch(()=>{});return}if(p==="inspector"&&d==="files"&&r.key==="o"&&u){r.preventDefault(),e.handleCommand(O.OPEN_SELECTED_FILE).catch(()=>{});return}if(p==="inspector"&&d==="files"&&r.key==="f"&&u){r.preventDefault(),e.handleCommand(O.OPEN_FILES_FILTER).catch(()=>{});return}if(p==="inspector"&&d==="stats"&&r.key==="f"&&u){r.preventDefault(),e.handleCommand(O.TOGGLE_STATS_VIEW).catch(()=>{});return}if(p==="inspector"&&d==="files"&&r.key==="v"&&u){r.preventDefault(),e.handleCommand(O.TOGGLE_FILE_PREVIEW_FULLSCREEN).catch(()=>{});return}if(p==="inspector"&&d==="logs"&&r.key==="t"&&u){r.preventDefault(),e.handleCommand(O.TOGGLE_LOG_TAIL).catch(()=>{});return}if(p==="inspector"&&d==="logs"&&r.key==="f"&&u){r.preventDefault(),e.handleCommand(O.OPEN_LOG_FILTER).catch(()=>{});return}if(p==="inspector"&&d==="history"&&r.key==="f"&&u){r.preventDefault(),e.handleCommand(O.OPEN_HISTORY_FORMAT).catch(()=>{});return}if(p==="inspector"&&d==="history"&&r.key==="r"&&u){r.preventDefault(),e.handleCommand(O.REFRESH_EXECUTION_HISTORY).catch(()=>{});return}if(p==="inspector"&&d==="history"&&r.key==="a"&&u){r.preventDefault(),e.handleCommand(O.EXPORT_EXECUTION_HISTORY).catch(()=>{});return}if(r.key==="a"&&u){r.preventDefault(),e.handleCommand(O.OPEN_ARTIFACT_PICKER).catch(()=>{});return}if(r.key==="p"&&u){r.preventDefault(),e.handleCommand(O.FOCUS_PROMPT).catch(()=>{});return}if(r.key==="c"&&u){r.preventDefault(),e.handleCommand(O.CANCEL_SESSION).catch(()=>{});return}if(r.key==="d"&&u){r.preventDefault(),e.handleCommand(O.DONE_SESSION).catch(()=>{});return}if(r.key==="D"&&r.shiftKey&&!r.metaKey&&!r.ctrlKey&&!r.altKey){r.preventDefault(),e.handleCommand(O.DELETE_SESSION).catch(()=>{});return}if(r.key==="m"&&u&&p==="inspector"){r.preventDefault(),h(1);return}if(r.key==="["&&u){r.preventDefault(),e.handleCommand(O.GROW_LEFT_PANE).catch(()=>{});return}if(r.key==="]"&&u){r.preventDefault(),e.handleCommand(O.GROW_RIGHT_PANE).catch(()=>{});return}if(r.key==="{"&&u){r.preventDefault(),e.handleCommand(O.SHRINK_SESSION_PANE).catch(()=>{});return}if(r.key==="}"&&u){r.preventDefault(),e.handleCommand(O.GROW_SESSION_PANE).catch(()=>{});return}if(p==="inspector"&&r.key==="ArrowLeft"){r.preventDefault(),h(-1);return}if(p==="inspector"&&r.key==="ArrowRight"){r.preventDefault(),h(1);return}if(p==="sessions"&&(r.key==="ArrowUp"||r.key==="k")){r.preventDefault(),e.handleCommand(O.MOVE_SESSION_UP).catch(()=>{});return}if(p==="sessions"&&(r.key==="ArrowDown"||r.key==="j")){r.preventDefault(),e.handleCommand(O.MOVE_SESSION_DOWN).catch(()=>{});return}if(p==="sessions"&&r.ctrlKey&&r.key.toLowerCase()==="g"&&!r.metaKey&&!r.altKey){r.preventDefault(),e.handleCommand(O.OPEN_MOVE_TO_GROUP).catch(()=>{});return}if(p==="sessions"&&(r.key==="PageUp"||r.ctrlKey&&r.key.toLowerCase()==="u")){r.preventDefault(),e.handleCommand(O.PAGE_UP).catch(()=>{});return}if(p==="sessions"&&(r.key==="PageDown"||r.ctrlKey&&r.key.toLowerCase()==="d")){r.preventDefault(),e.handleCommand(O.PAGE_DOWN).catch(()=>{});return}if(p==="sessions"&&r.key==="t"&&u){r.preventDefault(),e.handleCommand(O.OPEN_RENAME_SESSION).catch(()=>{});return}if(!t&&(r.key==="PageUp"||r.ctrlKey&&r.key.toLowerCase()==="u")){r.preventDefault(),e.handleCommand(O.PAGE_UP).catch(()=>{});return}if(!t&&(r.key==="PageDown"||r.ctrlKey&&r.key.toLowerCase()==="d")){r.preventDefault(),e.handleCommand(O.PAGE_DOWN).catch(()=>{});return}if(!t&&r.key==="g"&&u){r.preventDefault(),e.handleCommand(O.SCROLL_TOP).catch(()=>{});return}if(!t&&r.key==="G"&&r.shiftKey&&!r.metaKey&&!r.ctrlKey&&!r.altKey){r.preventDefault(),e.handleCommand(O.SCROLL_BOTTOM).catch(()=>{});return}if(p!=="prompt"&&r.key==="h"&&u){r.preventDefault(),e.handleCommand(O.FOCUS_LEFT).catch(()=>{});return}if(p!=="prompt"&&r.key==="l"&&u){r.preventDefault(),e.handleCommand(O.FOCUS_RIGHT).catch(()=>{});return}if(!t&&p==="inspector"&&d==="files"&&(r.key==="ArrowUp"||r.key==="k")){r.preventDefault(),e.handleCommand(O.MOVE_FILE_UP).catch(()=>{});return}if(!t&&p==="inspector"&&d==="files"&&(r.key==="ArrowDown"||r.key==="j")){r.preventDefault(),e.handleCommand(O.MOVE_FILE_DOWN).catch(()=>{});return}if(!t&&(r.key==="ArrowUp"||r.key==="k")){r.preventDefault(),e.handleCommand(O.SCROLL_UP).catch(()=>{});return}if(!t&&(r.key==="ArrowDown"||r.key==="j")){r.preventDefault(),e.handleCommand(O.SCROLL_DOWN).catch(()=>{});return}!t&&r.key==="Escape"&&(r.preventDefault(),e.handleCommand(O.FOCUS_SESSIONS).catch(()=>{}))}};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e,t,s])}function J0(e){if(!e)return"Unknown user";const t=String(e.displayName||"").trim(),s=String(e.email||"").trim();if(t&&s&&t.toLowerCase()!==s.toLowerCase())return`${t} <${s}>`;if(t)return t;if(s)return s;const n=String(e.provider||"").trim(),r=String(e.subject||"").trim();return[n,r].filter(Boolean).join(":")||"user"}function eE({controller:e,mobile:t=!1}){const s=J(e,$t,Ke),n=J(e,M=>M.admin.features),r=J(e,M=>M.admin.workers),i=J(e,M=>M.auth?.authorization?.role),o=s.packages||{},l=s.section==="packages",c=s.section==="workers",d=s.section==="features",p=a.createElement(US,{controller:e,features:n,workers:r?.list||[],workersError:r?.error,isAdmin:s.isAdmin&&(!i||i==="admin"||i==="anonymous")}),[u,m]=a.useState(null),[f,h]=a.useState(!1),[g,b]=a.useState(null),[y,v]=a.useState(()=>{const M={wsWidth:440,treePct:44,navWidth:240};try{return{...M,...JSON.parse(window.localStorage.getItem("ps-admin-ws-layout")||"{}")}}catch{return M}}),S=a.useCallback(M=>{v(k=>{const _={...k,...M};_.wsWidth=Math.min(900,Math.max(300,Math.round(_.wsWidth))),_.treePct=Math.min(85,Math.max(15,_.treePct)),_.navWidth=Math.min(420,Math.max(170,Math.round(_.navWidth??240)));try{window.localStorage.setItem("ps-admin-ws-layout",JSON.stringify(_))}catch{}return _})},[]),w=a.useCallback(M=>{M.preventDefault(),document.body.style.cursor="col-resize";const k=M.clientX,_=y.navWidth??240,$=D=>S({navWidth:_+(D.clientX-k)}),G=()=>{window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",G),window.removeEventListener("pointercancel",G),document.body.style.cursor=""};window.addEventListener("pointermove",$),window.addEventListener("pointerup",G),window.addEventListener("pointercancel",G)},[y.navWidth,S]);a.useCallback(()=>{e.closeAdminConsole()},[e]);const E=a.useCallback(()=>{m(null),h(!1),b(null),e.dismissAdminModelProviderMutationError()},[e]),I=a.useCallback(async M=>{h(!0),b(null);const k=u?.update?await e.updateAdminProviderCredential({name:M.name,credentials:M.credentials,shared:M.shared===!0}):await e.createAdminProvider(M);if(h(!1),!k?.ok){b(k?.error||`The provider key could not be ${u?.update?"updated":"created"}.`);return}E()},[E,e,u]),P=a.createElement("header",{className:"ps-admin-console__header"},a.createElement("h2",null,s.isAdmin?"Admin Console":"Settings"),s.isAdmin?a.createElement("small",null,s.adminPolicyLabel):null),C=a.createElement(lE,{controller:e,view:s,sheetOpen:!!u,onAddPersonal:()=>{e.dismissAdminModelProviderMutationError(),m({shared:!1,github:!0})},onAddShared:()=>{e.dismissAdminModelProviderMutationError(),m({shared:!0,github:!1})},onUpdatePersonal:M=>{e.dismissAdminModelProviderMutationError(),m({update:M,shared:M.class==="shared"})}}),A=a.createElement(tE,{controller:e,view:s}),R=a.createElement(sE,{controller:e,view:s}),T=l&&o.selectedName?a.createElement(rE,{controller:e,view:s,layout:y,onLayout:S}):null,L=o.addDialog?.open?a.createElement(oE,{controller:e,dialog:o.addDialog}):null,U=u?a.createElement(U0,{types:s.modelProviders?.providerTypes||[],existingNames:[...s.modelProviders?.sharedProviders||[],...s.modelProviders?.myProviders||[]].map(M=>M.name),isAdmin:s.isAdmin,initialShared:u.shared,updateProvider:u.update||null,initialType:u.github?(s.modelProviders?.providerTypes||[]).find(M=>/github/i.test(M.id))?.id||"":u.update?.typeId||"",initialName:u.update?.name||"",busy:f,error:g,onDirty:()=>b(null),onCancel:E,onConfirm:I}):null;if(t){let M;return l&&o.selectedName?M=a.createElement("div",{className:"ps-admin-mobile-stack"},a.createElement("button",{type:"button",className:"ps-mini-button ps-admin-back",onClick:()=>e.selectAdminPackage(null)},"← All packages"),R,T):l?M=A:c?M=a.createElement("div",{className:"ps-admin-mobile-stack"},A,a.createElement(Mc,{controller:e,view:s})):M=a.createElement("div",{className:"ps-admin-mobile-stack"},A,d?p:C),a.createElement("div",{className:"ps-admin-console is-mobile"},P,s.loadError?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},s.loadError):null,M,L,U)}return a.createElement("div",{className:"ps-admin-console is-workspace"},P,s.loadError?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},s.loadError):null,a.createElement("div",{className:"ps-admin-workspace",style:T?{gridTemplateColumns:`${y.navWidth}px minmax(0, 1fr) minmax(0, ${y.wsWidth}px)`}:{gridTemplateColumns:`${y.navWidth}px minmax(0, 1fr)`}},a.createElement("div",{className:"ps-admin-nav"},A,a.createElement("div",{className:"ps-admin-nav__resize",onPointerDown:w,role:"separator","aria-orientation":"vertical","aria-label":"Resize settings column"})),a.createElement("div",{className:"ps-admin-main"},l?R:c?a.createElement(Mc,{controller:e,view:s}):d?p:C),T),L,U)}function Mc({controller:e,view:t}){const s=t.workers||{},n=s.rows||[],r=s.counts||{};return a.useEffect(()=>{const i=window.setInterval(()=>{e.refreshAdminWorkers()},25e3);return()=>window.clearInterval(i)},[e]),a.createElement("div",{className:"ps-admin-detail ps-admin-workers"},a.createElement("div",{className:"ps-admin-workers__head"},a.createElement("h3",null,"Workers"),s.summaryText?a.createElement("span",{className:"ps-admin-workers__summary"},`${s.summaryText}${r.pools>1?` · ${r.pools} pools`:""}${r.draining?` · ${r.draining} draining`:""}`):null,a.createElement("button",{type:"button",className:"ps-mini-button is-icon",onClick:()=>e.refreshAdminWorkers(),disabled:!!s.loading,title:s.loading?"Refreshing…":"Refresh the worker list","aria-label":"Refresh the worker list"},a.createElement("svg",{viewBox:"0 0 20 20",width:15,height:15,fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},a.createElement("path",{d:"M16.2 8.2A6.4 6.4 0 0 0 4.6 6.4M3.8 11.8a6.4 6.4 0 0 0 11.6 1.8"}),a.createElement("path",{d:"M16.4 3.6v4.6h-4.6M3.6 16.4v-4.6h4.6"})))),s.error?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},s.error):null,s.empty?a.createElement("p",{className:"ps-admin-console__hint"},"No workers registered. Workers appear here on their first heartbeat and self-prune after an hour of silence."):a.createElement("div",{className:"ps-admin-workers__scroll"},a.createElement("table",{className:"ps-admin-workers__table"},a.createElement("thead",null,a.createElement("tr",null,["Worker","Pool","Phase","Heartbeat","Uptime","RSS","Sessions","Loop p99","Packages","SDK"].map(i=>a.createElement("th",{key:i},i)))),a.createElement("tbody",null,n.map(i=>a.createElement("tr",{key:i.id,className:i.live?"is-live":"is-stale"},a.createElement("td",{className:"ps-admin-workers__id",title:i.owner?`owner: ${i.owner}`:void 0},a.createElement("span",{className:`ps-worker-dot${i.live?" is-live":""}`}),i.id,i.substrate&&i.substrate!=="kubernetes"?a.createElement("span",{className:"ps-admin-workers__substrate"},i.substrate):null),a.createElement("td",null,i.pool),a.createElement("td",null,a.createElement("span",{className:`ps-worker-phase is-${i.phase}`},i.phase)),a.createElement("td",null,i.agoText),a.createElement("td",null,i.uptimeText??"—"),a.createElement("td",null,i.rssText??"—"),a.createElement("td",null,i.sessions??"—"),a.createElement("td",null,i.eventLoopText??"—"),a.createElement("td",{title:i.pkgEpoch!=null?`epoch ${i.pkgEpoch}`:void 0},i.pkgText??"—"),a.createElement("td",null,i.sdkVersion??"—")))))))}function tE({controller:e,view:t}){const s=t.packages||{};return a.createElement("nav",{className:"ps-admin-tree"},a.createElement("div",{className:"ps-admin-tree__label"},"Settings"),(t.settingsTree||[]).map(n=>{if(n.kind==="group")return a.createElement("div",{key:n.id,className:"ps-admin-tree__group"},`${n.label}`,a.createElement("span",{className:"ps-admin-tree__count"},String(n.count??0)));const r=n.kind==="package"?()=>e.selectAdminPackage(n.name,{scope:n.scope==="shared"?"shared":"user",...n.scope!=="shared"&&n.owner?.provider&&n.owner?.subject?{owner:{provider:n.owner.provider,subject:n.owner.subject}}:{}}):()=>{n.id==="providers"||n.id==="myProviders"?(e.setAdminSection("providers"),e.setAdminModelProviderPage("mine")):n.id==="sharedProviders"?(e.setAdminSection("providers"),e.setAdminModelProviderPage("shared")):n.id==="features"?e.setAdminSection("features"):e.setAdminSection(n.id==="agents"?"packages":"workers")};return a.createElement("button",{key:n.id,type:"button",className:`ps-admin-tree__row depth-${n.depth}${n.selected?" is-selected":""}${n.kind==="package"&&!n.enabled?" is-disabled":""}`,onClick:r},n.kind==="package"?n.ownerBadge?a.createElement(Yi,{badge:n.ownerBadge}):a.createElement("span",{className:"ps-scope-badge is-shared",title:"shared with the whole deployment"},"S"):null,a.createElement("span",{className:"ps-admin-tree__name"},n.label),n.kind==="package"&&n.semver?a.createElement("span",{className:"ps-admin-tree__ver"},n.semver):null)}),s.loading?a.createElement("div",{className:"ps-admin-tree__hint"},"Loading packages…"):null,s.error?a.createElement("div",{className:"ps-admin-tree__hint is-error"},s.error):null,t.section==="packages"?a.createElement("button",{type:"button",className:"ps-admin-tree__add",onClick:()=>e.openAdminAddPackage()},"+ Add package"):null)}function sE({controller:e,view:t}){const s=t.packages||{},n=s.detail;if(!s.selectedName)return a.createElement("div",{className:"ps-admin-detail is-empty"},a.createElement("h3",null,"Packages"),a.createElement("p",{className:"ps-admin-console__hint"},s.empty?"No packages yet. Add reusable skills, tools, MCP integrations, or authored agent workflows from a repo or folder — or use `pilotswarm agents push ./my-kit`.":"Select a package from the tree to see its detail, versions, and files."));const r=()=>{window.confirm(`Delete ${n.name}? Every version and its artifacts are removed. Live sessions using its agents will fail on their next turn.`)&&e.runAdminPackageAction("delete")},i=(c,d)=>()=>e.runAdminPackageAction(c,d),o=n.actionPending,l=async()=>{try{await e.transport.saveAgentPackageDownload(n.name,n.activeSemver??null,{scope:n.scope,owner:n.owner??null})}catch(c){window.alert(`Could not download ${n.name}: ${c?.message||c}`)}};return a.createElement("div",{className:"ps-admin-detail"},n.error?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},`Package load failed: ${n.error}`):null,n.loading?a.createElement("p",{className:"ps-admin-console__hint"},"Loading package…"):null,a.createElement("div",{className:"ps-admin-detail__head"},a.createElement("h3",null,n.name),a.createElement("span",{className:`ps-scope-badge is-${n.scope}`},n.scope),n.enabled?null:a.createElement("span",{className:"ps-scope-badge is-off"},"disabled")),n.description?a.createElement("p",{className:"ps-admin-detail__desc"},n.description):null,a.createElement("dl",{className:"ps-admin-detail__meta"},a.createElement("dt",null,"Version"),a.createElement("dd",null,n.activeSemver?`${n.activeSemver} · sha ${n.activeSha12||"?"} · ${n.sizeText}`:"no active version"),n.fleet?[a.createElement("dt",{key:"fk"},"Fleet"),a.createElement("dd",{key:"fv",className:"is-ok"},n.fleet.text)]:null,a.createElement("dt",null,"Created"),a.createElement("dd",null,`${n.createdBy||"unknown"} · ${n.createdAtText}`)),n.agents.length?a.createElement("div",null,a.createElement("div",{className:"ps-admin-detail__label"},"Agents in this package"),a.createElement("div",{className:"ps-admin-detail__chips"},n.agents.map(c=>a.createElement("span",{key:c.name,className:"ps-agent-chip",title:c.description},c.name,c.toolCount?a.createElement("i",null,` · ${c.toolCount} tools`):null)))):null,n.versions.length?a.createElement("div",null,a.createElement("div",{className:"ps-admin-detail__label"},"Versions"),a.createElement("div",{className:"ps-admin-versions"},n.versions.map(c=>a.createElement("div",{key:c.semver,className:`ps-admin-version${c.active?" is-active":""}`},a.createElement("b",null,c.semver),a.createElement("span",null,c.sha12),a.createElement("span",null,c.dateText),c.active?a.createElement("span",{className:"is-ok"},"● active"):n.canEdit?a.createElement("button",{type:"button",className:"ps-mini-button",onClick:i("pin",c.semver),disabled:!!o},"Pin"):null)))):null,n.scope==="shared"?a.createElement(nE,{controller:e,detail:n,pending:o}):null,n.canEdit?a.createElement("div",{className:"ps-admin-detail__actions"},n.source&&n.canManage?a.createElement("button",{type:"button",className:"ps-primary-button",onClick:i("sync"),disabled:!!o},o==="sync"?"Syncing…":"Sync now"):null,a.createElement("button",{type:"button",className:"ps-primary-button",onClick:()=>e.openAdminUpdatePackage(n.name,n.scope),disabled:!!o,title:`Publish a new version of ${n.name} from a repo folder`},"Update"),n.scope==="user"&&n.hasSharedCounterpart?a.createElement("button",{type:"button",className:"ps-mini-button",onClick:i("republish",n.activeSemver),disabled:!!o||!n.activeSemver,title:`Publish ${n.name}@${n.activeSemver??"?"} into the existing shared package`},o==="republish"?"Publishing…":`Publish ${n.activeSemver??""} to shared`):n.canManage?a.createElement("button",{type:"button",className:"ps-mini-button",onClick:i(n.scope==="shared"?"demote":"promote"),disabled:!!o,title:n.scope==="shared"&&n.editors.length?"Demoting revokes every editor grant":void 0},n.scope==="shared"?"Demote to user":"Promote to shared"):null,n.scope==="shared"&&!n.hasOwnUserCounterpart?a.createElement("button",{type:"button",className:"ps-mini-button",onClick:i("republish",n.activeSemver),disabled:!!o||!n.activeSemver,title:"Copy the active version into your user scope as a private test bench"},o==="republish"?"Copying…":"Copy to my user scope"):null,typeof e.transport.saveAgentPackageDownload=="function"?a.createElement("button",{type:"button",className:"ps-mini-button",onClick:()=>l(),disabled:!!o||!n.activeSemver,title:`Download ${n.name}@${n.activeSemver??"?"} as the .tgz the CLI would push`},o==="download"?"Downloading…":"Download"):null,a.createElement("button",{type:"button",className:"ps-mini-button",onClick:i(n.enabled?"disable":"enable"),disabled:!!o},n.enabled?"Disable":"Enable"),n.canManage?a.createElement("button",{type:"button",className:"ps-mini-button is-danger",onClick:r,disabled:!!o},"Delete"):null):a.createElement("p",{className:"ps-admin-console__hint"},"Read-only: only the package creator, a granted editor, or an admin can modify it."),n.actionError?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},n.actionError):null)}function nE({controller:e,detail:t,pending:s}){const[n,r]=a.useState(""),[i,o]=a.useState([]);a.useEffect(()=>{if(!t.canManage||typeof e.transport.listKnownUsers!="function")return;let m=!1;return e.transport.listKnownUsers({limit:500}).then(f=>{m||o(Array.isArray(f)?f:[])}).catch(()=>{}),()=>{m=!0}},[e,t.canManage]);const l=new Set(t.editors.map(m=>`${m.provider}${m.subject}`)),c=n.trim().toLowerCase(),d=c?i.filter(m=>!l.has(`${m.provider}${m.subject}`)&&(m.displayName&&m.displayName.toLowerCase().includes(c)||m.email&&m.email.toLowerCase().includes(c)||m.subject&&m.subject.toLowerCase().includes(c))).slice(0,8):[],p=m=>{!m?.provider||!m?.subject||(r(""),e.runAdminPackageAction("grantEditor",{provider:m.provider,subject:m.subject}))},u=()=>{const m=n.trim();if(!m)return;const f=i.find(h=>h.displayName&&h.displayName.toLowerCase()===m.toLowerCase()||h.email&&h.email.toLowerCase()===m.toLowerCase()||h.subject&&h.subject.toLowerCase()===m.toLowerCase());if(f)return p(f);if(d.length===1)return p(d[0])};return a.createElement("div",{className:"ps-admin-editors"},a.createElement("div",{className:"ps-admin-detail__label"},"Editors"),t.editors.length?a.createElement("div",{className:"ps-admin-detail__chips"},t.editors.map(m=>a.createElement("span",{key:`${m.provider}${m.subject}`,className:"ps-agent-chip",title:`${m.provider}:${m.subject}${m.grantedByDisplay?` · granted by ${m.grantedByDisplay}`:""}`},m.label,t.canManage?a.createElement("button",{type:"button",className:"ps-chip-remove","aria-label":`Remove editor ${m.label}`,disabled:!!s,onClick:()=>e.runAdminPackageAction("revokeEditor",{provider:m.provider,subject:m.subject})},"×"):null))):a.createElement("p",{className:"ps-admin-console__hint"},t.canManage?"No editors yet. Add a person to let them publish, pin and enable this package. Grants are revoked if the package is demoted.":"Only the owner and admins can change this package."),t.canManage?a.createElement("div",{className:"ps-admin-editors__add"},a.createElement("input",{type:"text",className:"ps-input",placeholder:"Add editor by name, email, or id…",value:n,disabled:!!s,onChange:m=>r(m.target.value),onKeyDown:m=>{m.key==="Enter"&&(m.preventDefault(),u())},"aria-label":"Add editor"}),a.createElement("button",{type:"button",className:"ps-mini-button",onClick:u,disabled:!!s||!n.trim()},"Add"),d.length?a.createElement("div",{className:"ps-admin-editors__suggestions",role:"listbox"},d.map(m=>a.createElement("button",{key:`${m.provider}${m.subject}`,type:"button",role:"option",className:"ps-admin-editors__suggestion",onClick:()=>p(m)},m.displayName||m.email||m.subject,m.email&&m.displayName?a.createElement("i",null,` ${m.email}`):null))):null):null)}function rE({controller:e,view:t,layout:s=null,onLayout:n=null}){const r=J(e,u=>u.ui.themeId),i=Pt(r),o=t.packages?.workspace,l=a.useRef(null),c=a.useCallback((u,m)=>{if(!n)return;u.preventDefault();const f=u.clientX,h=u.clientY,g={...s},b=v=>m(g,v.clientX-f,v.clientY-h),y=()=>{window.removeEventListener("pointermove",b),window.removeEventListener("pointerup",y),window.removeEventListener("pointercancel",y),document.body.style.cursor=""};window.addEventListener("pointermove",b),window.addEventListener("pointerup",y),window.addEventListener("pointercancel",y)},[s,n]),d=a.useCallback(u=>{document.body.style.cursor="col-resize",c(u,(m,f)=>n({wsWidth:m.wsWidth-f}))},[c,n]),p=a.useCallback(u=>{document.body.style.cursor="row-resize";const m=l.current?.getBoundingClientRect().height||600;c(u,(f,h,g)=>n({treePct:f.treePct+g/m*100}))},[c,n]);return o?a.createElement("div",{className:"ps-admin-ws",ref:l,style:s?{gridTemplateRows:`auto minmax(80px, ${s.treePct}%) auto minmax(0, 1fr)`}:void 0},n?a.createElement("div",{className:"ps-admin-ws__vdivider",title:"Drag to resize the workspace",onPointerDown:d}):null,a.createElement("div",{className:"ps-admin-ws__head"},`Package workspace${o.semver?` · ${t.packages.selectedName}@${o.semver}`:""}`),a.createElement("div",{className:"ps-admin-ws__tree"},o.loading?a.createElement("div",{className:"ps-admin-tree__hint"},"Loading files…"):null,o.error?a.createElement("div",{className:"ps-admin-tree__hint is-error"},o.error):null,o.treeRows.map(u=>a.createElement("button",{key:`${u.type}:${u.path}`,type:"button",style:{paddingLeft:`${8+(u.depth||0)*16}px`},className:`ps-admin-ws__row is-${u.type}${u.selected?" is-selected":""}`,onClick:u.type==="dir"?()=>e.toggleAdminPackageDir(u.path):()=>e.selectAdminPackageFile(u.path)},a.createElement("span",{className:"ps-admin-ws__caret"},u.type==="dir"?u.expanded?"▾":"▸":""),a.createElement("span",{className:"ps-admin-ws__name"},u.label),u.sizeText?a.createElement("span",{className:"ps-admin-ws__size"},u.sizeText):null))),a.createElement("div",{className:`ps-admin-ws__preview-head${n?" is-resizable":""}`,title:n?"Drag to resize file list vs preview":void 0,onPointerDown:n?p:void 0},o.selectedPath?`Preview · ${o.selectedPath}`:"Preview"),a.createElement("div",{className:"ps-admin-ws__preview"},o.fileLoading?a.createElement("div",{className:"ps-admin-tree__hint"},"Loading…"):null,o.fileError?a.createElement("div",{className:"ps-admin-tree__hint is-error"},o.fileError):null,o.file?o.file.isBinary?a.createElement("div",{className:"ps-admin-tree__hint"},`Binary file · ${o.file.sizeText}`):a.createElement(aE,{file:o.file,theme:i}):null)):null}function iE(e){const t=/^---\n([\s\S]*?)\n---\n?/.exec(e||"");if(!t)return{meta:null,body:e||""};const s=t[1].split(`
109
- `).map(n=>/^([A-Za-z0-9_-]+):\s*(.*)$/.exec(n)).filter(Boolean).map(([,n,r])=>({key:n,value:r}));return s.length===0?{meta:null,body:e||""}:{meta:s,body:(e||"").slice(t[0].length)}}function aE({file:e,theme:t}){const s=e.language||"text",n=e.truncated?a.createElement("div",{className:"ps-admin-tree__hint"},"… truncated preview"):null;if(s==="markdown"){const{meta:r,body:i}=iE(e.text||"");return a.createElement("div",{className:"ps-admin-ws__doc"},r?a.createElement("div",{className:"ps-admin-ws__frontmatter"},r.map(o=>a.createElement("div",{key:o.key,className:"ps-admin-ws__fm-row"},a.createElement("span",{className:"ps-admin-ws__fm-key"},o.key),a.createElement("span",{className:"ps-admin-ws__fm-val"},o.value)))):null,a.createElement(Za,{content:i,theme:t}),n)}if(s==="json"){let r=e.text||"";if(!e.truncated)try{r=JSON.stringify(JSON.parse(r),null,2)}catch{}return a.createElement("div",{className:"ps-admin-ws__doc"},a.createElement("pre",{className:"ps-admin-ws__code lang-json"},a.createElement("code",null,Bs(r,"json",t))),n)}return a.createElement("div",{className:"ps-admin-ws__doc"},a.createElement("pre",{className:`ps-admin-ws__code lang-${s}`},a.createElement("code",null,Bs(e.text||"",s,t))),n)}function oE({controller:e,dialog:t}){const s=J(e,u=>u.docs?.agentPackageGuideUrl||null),n=u=>m=>e.setAdminAddPackageField(u,m.target.value),r=[["repo","GitHub / Azure DevOps"],["upload","Upload folder"]],i=t.kind==="repo"||t.kind==="github"||t.kind==="ado",o=a.useRef(null),[l,c]=a.useState(!1),d=2*1024*1024,p=u=>{if(u.preventDefault(),!(l||t.submitting)){if(t.kind==="upload"){const m=o.current;if(!m?.files?.length){e.failAdminAddPackage("Choose a package folder first.");return}const f=[...m.files].map(g=>({file:g,path:g.webkitRelativePath.split("/").slice(1).join("/")||g.name})).filter(({path:g})=>g&&!g.split("/").includes("node_modules")&&!g.split("/").includes(".git")),h=f.reduce((g,{file:b})=>g+b.size,0);if(f.length===0){e.failAdminAddPackage("The chosen folder has no uploadable files.");return}if(h>d){e.failAdminAddPackage(`Folder is ${(h/(1024*1024)).toFixed(1)} MB after filtering — the upload envelope is 2 MB. Use a repo/URL source or 'pilotswarm agents push' for larger packages.`);return}c(!0),Promise.all(f.map(({file:g,path:b})=>new Promise((y,v)=>{const S=new FileReader;S.onerror=()=>v(new Error(`could not read ${b}`)),S.onload=()=>y({path:b,contentBase64:String(S.result).split(",",2)[1]||""}),S.readAsDataURL(g)}))).then(g=>e.submitAdminUploadPackage(g,t.scope)).catch(g=>e.failAdminAddPackage(g?.message||"Could not read the chosen folder.")).finally(()=>c(!1));return}e.submitAdminAddPackage().catch(()=>{})}};return a.createElement("div",{className:"ps-modal-backdrop",onClick:()=>e.closeAdminAddPackage()},a.createElement("form",{className:"ps-modal ps-admin-add",onClick:u=>u.stopPropagation(),autoComplete:"off",onSubmit:p},a.createElement("div",{className:"ps-modal-header"},a.createElement("span",null,t.updateName?`Update ${t.updateName}`:"Add package"),a.createElement("button",{type:"button",className:"ps-mini-button",onClick:()=>e.closeAdminAddPackage()},"✕")),a.createElement("div",{className:"ps-admin-add__body"},a.createElement("p",{className:"ps-admin-console__hint"},"Packages can contain reusable skills, tools, MCP integrations, and authored agent workflows. No agent is required."),a.createElement("div",{className:"ps-admin-add__tabs"},r.map(([u,m])=>a.createElement("button",{key:u,type:"button",className:`ps-admin-add__tab${t.kind===u?" is-on":""}`,onClick:()=>e.setAdminAddPackageField("kind",u)},m))),i?[a.createElement("label",{key:"u",className:"ps-admin-add__field"},"Link to plugin.json (or the folder containing it)",a.createElement("input",{value:t.repoUrl,onChange:n("repoUrl"),placeholder:"https://github.com/org/repo/blob/main/my-agents/plugin.json",autoFocus:!0,type:"url",name:"agent-package-link",autoComplete:"off",spellCheck:!1,"data-1p-ignore":"true","data-lpignore":"true","data-bwignore":"true"})),a.createElement("div",{key:"h",className:"ps-admin-add__hint"},"Paste the browser URL — branch and path are read from the link. The files are read by THIS BROWSER with your access (public GitHub needs nothing; Azure DevOps uses your signed-in account) and uploaded as a package artifact."),a.createElement("label",{key:"t",className:"ps-admin-add__field"},"PAT (only for private GitHub repos, or to override — used here, never stored)",a.createElement("input",{type:"password",value:t.authToken,onChange:n("authToken"),name:"agent-package-pat",autoComplete:"new-password","data-1p-ignore":"true","data-lpignore":"true","data-bwignore":"true"}))]:a.createElement("label",{className:"ps-admin-add__field"},"Package folder with plugin.json — the manifest (≤ 2 MB; node_modules skipped)",a.createElement("input",{ref:o,type:"file",webkitdirectory:"",directory:"",multiple:!0})),a.createElement("div",{className:"ps-admin-add__scope"},a.createElement("label",null,a.createElement("input",{type:"radio",name:"pkg-scope",checked:t.scope==="shared",disabled:!!t.updateName,onChange:()=>e.setAdminAddPackageField("scope","shared")})," Shared — everyone can use it"),a.createElement("label",null,a.createElement("input",{type:"radio",name:"pkg-scope",checked:t.scope==="user",disabled:!!t.updateName,onChange:()=>e.setAdminAddPackageField("scope","user")})," User — only you see it")),t.updateName?a.createElement("p",{className:"ps-admin-console__hint"},`Publishes a new version of ${t.updateName}. Its scope is unchanged — use Demote/Promote on the package to move it.`):null,s?a.createElement("p",{className:"ps-admin-console__hint"},"New to this? ",a.createElement("a",{href:s,target:"_blank",rel:"noreferrer noopener"},"How to build a package")," — a complete guide you can also hand straight to Claude or Copilot."):null,a.createElement("p",{className:"ps-admin-console__hint"},"Same thing from a terminal: pilotswarm agents push ./my-agents --shared"),t.progress&&!t.error?a.createElement("p",{className:"ps-admin-add__progress"},t.progress):null,t.error?a.createElement("pre",{className:"ps-admin-add__error",role:"alert"},t.error):null),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-mini-button",onClick:()=>e.closeAdminAddPackage(),disabled:t.submitting},"Cancel"),a.createElement("button",{type:"submit",className:"ps-primary-button",disabled:t.submitting||l},l?"Reading folder…":t.submitting?"Importing…":t.updateName?"Import & update":"Import & publish"))))}function bi(e){return e?.configured?.model||""}function Si({label:e,hint:t,value:s,choices:n,disabled:r,emptyLabel:i,onChange:o}){return a.createElement("label",{className:"ps-admin-provider-default"},a.createElement("span",{className:"ps-admin-detail__label"},e),a.createElement("select",{className:"ps-budget-input",value:s,disabled:r,"aria-label":e,onChange:l=>o(l.target.value)},a.createElement("option",{value:""},i),s&&!n.some(l=>l.qualifiedName===s)?a.createElement("option",{value:s},`${s} (currently configured)`):null,n.map(l=>a.createElement("option",{key:l.qualifiedName,value:l.qualifiedName},`${l.provider} · ${l.model}`))),t?a.createElement("span",{className:"ps-admin-console__hint"},t):null)}function _c({providers:e,isAdmin:t,personal:s,busy:n,onSystemUse:r,onUpdate:i,onDelete:o}){return e.length?a.createElement("div",{className:"ps-admin-provider-list"},e.map(l=>a.createElement("div",{key:l.name,className:"ps-admin-provider-row"},a.createElement("div",{className:"ps-admin-provider-row__identity"},a.createElement("strong",{title:l.name},l.name),a.createElement("span",{className:`ps-scope-badge is-${l.class==="shared"?"shared":"user"}`},l.class),l.isMyDefault?a.createElement("span",{className:"ps-scope-badge is-off"},"my default"):null,l.isClusterDefault?a.createElement("span",{className:"ps-scope-badge is-off"},"cluster default"):null,l.isSystemDefault?a.createElement("span",{className:"ps-scope-badge is-off"},"system default"):null),a.createElement("div",{className:"ps-admin-provider-row__actions"},s&&t?a.createElement("label",{className:"ps-admin-console__system-toggle"},a.createElement("input",{type:"checkbox",checked:l.systemUseEnabled,disabled:n,onChange:c=>r(l.name,c.target.checked)}),"Allow system sessions"):null,(s||t)&&!l.usesWorkloadIdentity?a.createElement("button",{type:"button",className:"ps-mini-button","aria-label":`Update key for ${l.name}`,title:`Update key for ${l.name}`,disabled:n,onClick:()=>i(l)},"Update key"):null,a.createElement(ve,{icon:a.createElement(Bw),label:`Delete ${l.name}`,className:"ps-mini-button is-danger",disabled:n,onClick:()=>o(l)}))))):a.createElement("p",{className:"ps-admin-console__hint"},s?"No personal providers yet.":"No shared providers are configured.")}function lE({controller:e,view:t,onAddPersonal:s,onAddShared:n,onUpdatePersonal:r,sheetOpen:i=!1}){const o=t.modelProviders||{},l=!!o.mutation?.pending,c=bi(o.systemSessionDefault),[d,p]=a.useState(c),[u,m]=a.useState(""),[f,h]=a.useState(null);a.useEffect(()=>{p(c)},[c]);const g=(C,A)=>C.find(R=>R.qualifiedName===A)||null,b=(C,A,R)=>{e.setAdminModelDefault(C,g(A,R))},y=C=>{window.confirm(`Delete ${C.name}? Sessions using it will wait until that provider name exists again.`)&&e.deleteAdminProvider(C.name,{shared:C.class==="shared"})},v=async()=>{h(null);const C=await e.setAdminSystemModelDefault(g(o.systemChoices||[],d),{restartDisposition:u||null});C?.ok&&h(C.result?.restart||{requested:!1})},S=(o.systemAgentRoutes||[]).filter(C=>!C.override),w=o.page==="shared"&&t.isAdmin,E=a.createElement("div",{className:"ps-admin-provider-heading"},a.createElement("h3",null,"Model Providers"),a.createElement(ve,{icon:"↻",label:"Refresh model providers",className:"ps-mini-button",disabled:o.loading,onClick:()=>e.refreshAdminModelProviders()})),I=a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("div",{className:"ps-admin-provider-block__head"},a.createElement("h4",null,"My Providers"),a.createElement("button",{type:"button",className:"ps-primary-button",onClick:s,disabled:l},"Add provider")),a.createElement(_c,{providers:o.myProviders||[],isAdmin:t.isAdmin,personal:!0,busy:l,onSystemUse:(C,A)=>e.setAdminProviderSystemUse(C,A),onUpdate:r,onDelete:y})),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement(Si,{label:"My Session Default",hint:`Effective: ${o.mySessionDefault?.effective?.model||"none"}.`,value:bi(o.mySessionDefault),choices:o.userChoices||[],disabled:l,emptyLabel:"Use cluster default",onChange:C=>b("user",o.userChoices||[],C)}))),P=a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("div",{className:"ps-admin-provider-block__head"},a.createElement("h4",null,"Shared Providers"),a.createElement("button",{type:"button",className:"ps-primary-button",onClick:n,disabled:l},"Add provider")),a.createElement(_c,{providers:o.sharedProviders||[],isAdmin:!0,personal:!1,busy:l,onSystemUse:()=>{},onDelete:y,onUpdate:r})),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement(Si,{label:"Cluster Session Default",hint:`Effective: ${o.clusterSessionDefault?.effective?.model||"none"}.`,value:bi(o.clusterSessionDefault),choices:o.clusterChoices||[],disabled:l,emptyLabel:"Use first shared provider",onChange:C=>b("cluster",o.clusterChoices||[],C)})),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("h4",null,"System Session Default"),a.createElement(Si,{label:"Model",hint:"Shared and system-enabled personal providers.",value:d,choices:o.systemChoices||[],disabled:l,emptyLabel:"Use first eligible provider",onChange:p}),a.createElement("div",{className:"ps-admin-detail__label"},"Existing system sessions"),a.createElement(is,{value:u,onChange:m,label:"Existing system sessions",options:[{value:"",label:"Future only"},{value:"complete",label:"Complete & restart"},{value:"terminate",label:"Terminate & restart"},{value:"hard_delete",label:"Hard delete & restart"}]}),a.createElement("div",{className:"ps-admin-provider-apply"},a.createElement("p",{className:"ps-admin-console__hint"},`${S.length} agent${S.length===1?"":"s"} inherit this default.`),a.createElement("button",{type:"button",className:"ps-primary-button",disabled:l,onClick:v},l&&o.mutation?.pending==="systemDefault"?"Applying…":"Apply")),f?.requested?a.createElement("p",{className:"ps-admin-console__status"},`${f.restarted}/${f.affected} restarted${f.failures?.length?` · ${f.failures.length} failed`:""}.`):null),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("h4",null,"System Agent Overrides"),(o.systemAgentRoutes||[]).length===0?a.createElement("p",{className:"ps-admin-console__hint"},"No system agents."):a.createElement("div",{className:"ps-admin-override-table"},(o.systemAgentRoutes||[]).map(C=>a.createElement("div",{key:C.agentId,className:"ps-admin-override-row"},a.createElement("div",{className:"ps-admin-override-row__agent"},a.createElement("strong",null,C.title),a.createElement("span",null,C.effectiveModel||"blocked"),a.createElement("small",null,C.override?"override":"system default")),a.createElement("select",{className:"ps-budget-input",value:C.override?.model||"",disabled:l,"aria-label":`Model override for ${C.title}`,onChange:A=>{const R=g(o.systemChoices||[],A.target.value);R?e.setAdminSystemAgentModel(C.agentId,R):e.clearAdminSystemAgentModel(C.agentId)}},a.createElement("option",{value:""},"Inherit system default"),(o.systemChoices||[]).map(A=>a.createElement("option",{key:A.qualifiedName,value:A.qualifiedName},`${A.provider} · ${A.model}`))))))));return a.createElement("section",{className:"ps-admin-detail ps-admin-model-providers"},E,o.error||o.mutation?.error&&!i?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},!i&&o.mutation?.error||o.error):null,w?P:I)}function SE({transport:e,mode:t="remote",branding:s=null,docs:n=null}={}){pv();const r=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 920px)").matches,i=hb(ub,Ci({mode:t,branding:s,docs:n}));return i.dispatch({type:"ui/touchScale",enabled:r}),new yS({store:i,transport:e})}function vE({controller:e,suspended:t=!1,moa:s=null,viewNavigation:n=null}){const r=a.useRef(null),i=a.useRef(null),o=tc(r,t),l=tc(i,t),c=wv(o);a.useEffect(()=>{const x=()=>{try{const ye=document.createElement("span");ye.style.cssText="position:absolute;visibility:hidden;white-space:pre;";const Me=document.querySelector(".ps-scroll-panel .ps-line")||document.querySelector(".ps-line");if(Me){const tt=window.getComputedStyle(Me);ye.style.fontFamily=tt.fontFamily,ye.style.fontSize=tt.fontSize,ye.style.fontWeight=tt.fontWeight,ye.style.letterSpacing=tt.letterSpacing}ye.textContent="0".repeat(100),(Me?.parentElement||document.body).appendChild(ye);const Re=ye.getBoundingClientRect().width/100||8;ye.remove();const ot=document.documentElement.clientWidth||window.innerWidth,Ye=document.documentElement.clientHeight||window.innerHeight;e.dispatch({type:"ui/viewport",width:Math.floor(ot/Re),height:Math.floor(Ye/Ct)})}catch{}};x();let z;const ne=()=>{clearTimeout(z),z=setTimeout(x,150)};return window.addEventListener("resize",ne),window.addEventListener("orientationchange",ne),()=>{clearTimeout(z),window.removeEventListener("resize",ne),window.removeEventListener("orientationchange",ne)}},[e]);const[d,p]=a.useState("split"),u=J(e,x=>({moa:x.ui.moa,themeId:x.ui.themeId,touchScale:!!x.ui.touchScale,sessionDetailCollapsed:!!x.ui.sessionDetailCollapsed,agentPickerUsage:x.ui.agentPickerUsage,ownerFilter:x.sessions.ownerFilter,pinnedIds:x.sessions.pinnedIds,manualOrder:x.sessions.manualOrder,sessionSortMode:x.sessions.sortMode,sessionUsedAt:x.sessions.usedAt,collapsedSessionIds:x.sessions.collapsedIds,activeSessionId:x.sessions.activeSessionId||null,revealedCreatedSessionId:x.ui.revealedCreatedSessionId||null,promptRows:Hu(x),rightPaneMode:x.ui.rightPaneMode||"panes",canvasOpen:x.ui.canvasOpen===!0,diagnosticsOpen:x.ui.diagnosticsOpen===!0,canvasMaximized:x.ui.canvasMaximized===!0,canvasZen:x.ui.canvasZen===!0,canvasPrefs:x.canvas?.prefs,activeSessionIsGroup:!!(x.sessions.activeSessionId&&x.sessions.byId[x.sessions.activeSessionId]?.isGroup),paneAdjust:x.ui.layout?.paneAdjust??0,sessionPaneAdjust:x.ui.layout?.sessionPaneAdjust??0,portalSessionColumnAdjust:x.ui.layout?.portalSessionColumnAdjust??0,activityPaneAdjust:x.ui.layout?.activityPaneAdjust??0,canvasPaneAdjust:x.ui.layout?.canvasPaneAdjust??0,diagnosticsPaneAdjust:x.ui.layout?.diagnosticsPaneAdjust??0,diagnosticsSplitAdjust:x.ui.layout?.diagnosticsSplitAdjust??0,sessionViews:x.ui.sessionViews,focusRegion:x.ui.focusRegion,requestedFocusRegion:x.ui.requestedFocusRegion,inspectorTab:x.ui.inspectorTab,filesFullscreen:!!x.files.fullscreen,selectedArtifactId:x.files.selectedArtifactId||null,artifactPaneOpen:!!x.files.paneOpen,adminVisible:!!x.admin?.visible,budgetOpen:!!x.ui?.budgetOpen}),Ke),m=a.useRef(!1),f=a.useRef(null),h=a.useRef(null),g=a.useRef(null),b=a.useRef(null),y=a.useRef(null),v=a.useRef(null),S=a.useRef(!1),w=a.useRef(0),E=a.useRef(0),I=a.useRef(null),P=a.useRef(null),[C,A]=a.useState("workspace"),R=eo(`(max-width: ${zS}px)`),L=u.activeSessionIsGroup?0:u.promptRows;Ap(e,R,t);const U=a.useRef(u.revealedCreatedSessionId);a.useEffect(()=>{U.current!==u.revealedCreatedSessionId&&(U.current=u.revealedCreatedSessionId,!(!u.revealedCreatedSessionId||u.activeSessionId!==u.revealedCreatedSessionId)&&(R&&(A("workspace"),p("chat")),s?.active&&s.leave()))},[u.revealedCreatedSessionId,u.activeSessionId,R,s]),a.useEffect(()=>{e.dispatch({type:"ui/sessionViewDevice",device:R?"mobile":"desktop"})},[e,R]);const M=f0(R&&C==="workspace"&&!u.adminVisible);a.useEffect(()=>{if(!(typeof document>"u"))return document.body.classList.toggle("ps-kb-takeover",M),()=>document.body.classList.remove("ps-kb-takeover")},[M]),a.useEffect(()=>{M&&e.applyPaneVisualScrollOffset?.("chat",0,{followBottom:!0})},[M,e]);const k=J(e,Aa,Ke),_=C==="canvas",$=a.useRef("workspace"),[G,D]=a.useState(!1),[W,N]=a.useState(!1);a.useEffect(()=>{A(x=>x==="canvas"?$.current||"workspace":x),D(!1),N(!1)},[k.sessionId]),a.useEffect(()=>{if(!(typeof document>"u"))return document.body.classList.toggle("ps-canvas-lock",!!(R&&_)),()=>document.body.classList.remove("ps-canvas-lock")},[R,_]);const j=a.useCallback(()=>{C!=="canvas"&&($.current=C),A("canvas"),D(!0),e.dispatch({type:"ui/rightPaneMode",mode:"canvas",sessionId:k.sessionId})},[e,C,k.sessionId]),B=a.useCallback(()=>{A($.current||"workspace"),e.dispatch({type:"ui/rightPaneMode",mode:"panes",sessionId:k.sessionId,manual:!0})},[e,k.sessionId]),V=a.useRef(k.flipSeq);a.useEffect(()=>{k.flipSeq!==V.current&&(V.current=k.flipSeq,R&&j())},[k.flipSeq,R,j]);const Q=a.useCallback(()=>{if(_){B();return}j()},[_,B,j]);a.useEffect(()=>{let x=!0;m.current=!1,f.current=null,I.current=null,P.current=Zl(e.getState()),y.current&&(clearTimeout(y.current),y.current=null),v.current&&(clearInterval(v.current),v.current=null),S.current=!1,w.current=0;const z=e.transport;if(typeof z?.getCurrentUserProfile!="function"||typeof z?.setCurrentUserProfileSettings!="function")return m.current=!0,()=>{x=!1};const ne=async()=>{if(!x||S.current)return;S.current=!0;const ye=E.current;try{const Me=await z.getCurrentUserProfile();if(!x)return;Me&&typeof Me.isAdmin=="boolean"&&!e.getState().admin?.profile&&e.dispatch({type:"admin/profile/loaded",profile:Me});const Re=cs(Me?.profileSettings);typeof Re[dr()]=="boolean"&&(h.current=Re[dr()]),(Re.rightPaneMode==="canvas"||Re.rightPaneMode==="panes")&&(g.current=Re.rightPaneMode),Re.desktopPanes&&(b.current=Re.desktopPanes),P.current=Zl(e.getState(),h.current,g.current,b.current);const ot=fv(Me?.profileSettings,P.current),Ye=JSON.stringify(ot),tt=ci(Ql(e.getState()),h.current,g.current,b.current),we=JSON.stringify(tt),Xe=m.current&&f.current!=null&&we!==f.current,St=ye!==E.current||!!y.current||w.current||Xe||e.getState().ui.moaDirty===!0;if(!St&&I.current!==Ye&&(e.dispatch({type:"profileSettings/apply",settings:ot}),I.current=Ye),!m.current||!St){const qs=ci(Ql(e.getState()),h.current,g.current,b.current);f.current=JSON.stringify(qs)}m.current=!0}catch{if(!x)return;m.current=!0}finally{S.current=!1}};return ne().catch(()=>{}),v.current=setInterval(()=>{ne().catch(()=>{})},QS),()=>{x=!1,y.current&&(clearTimeout(y.current),y.current=null),v.current&&(clearInterval(v.current),v.current=null),S.current=!1}},[e]),a.useEffect(()=>{if(!m.current)return;const x=ci(u,h.current,g.current,b.current),z=JSON.stringify(x);f.current!==z&&(f.current=z,E.current+=1,y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{y.current=null,w.current+=1;const ne=e.getState().ui.moaRevision;e.dispatch({type:"ui/moaSaveStatus",status:"saving"}),hv(e,x).then(()=>e.dispatch({type:"ui/moaSaveStatus",status:"saved",revision:ne})).catch(()=>{f.current=null,e.dispatch({type:"ui/moaSaveStatus",status:"error"})}).finally(()=>{w.current=Math.max(0,w.current-1)})},400))},[e,u.moa,u.activeSessionId,u.activityPaneAdjust,u.agentPickerUsage,u.canvasOpen,u.canvasPaneAdjust,u.canvasPrefs,u.canvasZen,u.collapsedSessionIds,u.diagnosticsOpen,u.diagnosticsPaneAdjust,u.diagnosticsSplitAdjust,u.ownerFilter,u.paneAdjust,u.manualOrder,u.sessionSortMode,u.sessionUsedAt,u.pinnedIds,u.portalSessionColumnAdjust,u.rightPaneMode,u.sessionDetailCollapsed,u.sessionPaneAdjust,u.sessionViews,u.themeId,u.touchScale]),a.useEffect(()=>{vv(u.themeId),Sv(u.touchScale)},[u.themeId,u.touchScale]);const ee=a.useRef(null);a.useEffect(()=>{const x=ee.current;if(ee.current=u.focusRegion,x===null||x===u.focusRegion)return;const z=u.requestedFocusRegion;R&&(u.focusRegion==="inspector"||u.focusRegion==="activity")&&(z==="inspector"||z==="activity")&&A(u.focusRegion)},[R,u.focusRegion,u.requestedFocusRegion]),a.useEffect(()=>{const x=Ga(e);!x.includes(u.inspectorTab)&&x.length>0&&e.selectInspectorTab(x[0]).catch(()=>{})},[e,u.inspectorTab]);const Z=a.useMemo(()=>tn(c,u.paneAdjust,L,u.sessionPaneAdjust,u.activityPaneAdjust),[c,u.activityPaneAdjust,u.paneAdjust,L,u.sessionPaneAdjust]),se=u.filesFullscreen&&u.inspectorTab==="files",Se=u.inspectorTab==="files"&&!!u.selectedArtifactId&&!se,ue=!R&&u.artifactPaneOpen&&!!u.selectedArtifactId&&!se,ce=!R&&u.canvasOpen&&!se;a.useEffect(()=>{ce&&N(!0)},[ce,k.sessionId]);const ge=!R&&u.diagnosticsOpen&&!se&&!ue&&!(u.canvasZen&&u.canvasOpen),X=ue||ce||ge,ie=u.canvasMaximized&&ce,me=u.canvasZen&&ce&&!ue,Ze=Math.max(260,Math.min(720,Number(u.canvasPrefs?.[u.activeSessionId]?.zenRailPx)||380));a.useEffect(()=>{if(t||!ie&&!me)return;const x=z=>{z.key==="Escape"&&e.dispatch(ie?{type:"ui/canvasMaximized",on:!1}:{type:"ui/canvasZen",on:!1})};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[e,ie,me,t]);const Pe=Math.max(0,Wa+(Number(u.canvasPaneAdjust)||0)),at=Math.max(0,qa+(Number(u.diagnosticsPaneAdjust)||0)),Ve=(ce?Pe:0)+(ce&&ge?1:0)+(ge?at:0),At=a.useCallback(()=>{e.closeArtifactPane().catch(()=>{})},[e]),K=Math.max(0,(o.width||0)*.68),fe=l.width||K,qe=gv(fe,u.portalSessionColumnAdjust),Ee=me?"hidden":yv(qe),oe=Ee==="hidden"?"0px":`clamp(0px, calc(${Ua*100}% + ${Number(u.portalSessionColumnAdjust)||0}px), max(0px, calc(100% - 14rem - 32px)))`,$e=a.createElement("div",{className:`ps-workspace-grid${X?"":" is-right-hidden"}`,style:{gridTemplateColumns:ue?`minmax(0, ${Z.leftWidth}fr) var(--ps-resizer-track, 16px) minmax(0, ${Z.rightWidth}fr)`:me?`${Ze}px var(--ps-resizer-track, 16px) minmax(0, 1fr)`:X?`minmax(0, 1fr) var(--ps-resizer-track, 16px) min(${Ve}px, calc(100% - var(--ps-resizer-track, 16px) - ${ja}px))`:"minmax(0, 1fr)"}},a.createElement("div",{ref:i,className:`ps-workspace-main-grid is-session-${Ee}`,style:{gridTemplateColumns:`${oe} var(--ps-resizer-track, 16px) minmax(14rem, 1fr)`}},Ee!=="hidden"?a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridColumn:"1"}},a.createElement(Xi,{controller:e,structuredRows:!0})):null,a.createElement("div",{style:{gridColumn:"2",minWidth:0,display:"flex"}},a.createElement(E0,{controller:e,portalSessionColumnAdjust:u.portalSessionColumnAdjust})),a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridColumn:"3"}},a.createElement(Zi,{controller:e}))),X?ue?a.createElement(w0,{controller:e,paneAdjust:u.paneAdjust}):me?a.createElement(I0,{controller:e,sessionId:u.activeSessionId,railPx:Ze}):a.createElement(x0,{controller:e,target:ce?"canvas":"diagnostics",adjust:ce?u.canvasPaneAdjust:u.diagnosticsPaneAdjust}):null,a.createElement("div",{className:`ps-workspace-column-host is-split${ie?" has-maximized":""}`},ue?a.createElement("div",{className:"ps-workspace-column is-artifact"},a.createElement(c0,{controller:e,onClose:At})):null,W?a.createElement("div",{key:`canvas:${u.activeSessionId||""}`,className:`ps-workspace-column is-artifact ps-canvas-layer${ce&&!ue?"":" is-hidden"}${ie&&ce&&!ue?" is-maximized":""}`,style:ce&&!ue&&ge&&!ie?{flex:`0 0 ${Pe}px`,minWidth:0}:void 0,...ce&&!ue?{}:{inert:!0,"aria-hidden":"true"}},a.createElement(Sp,{controller:e,visible:ce&&!ue,maximized:ie})):null,ce&&ge?a.createElement(k0,{controller:e,canvasPaneAdjust:u.canvasPaneAdjust,diagnosticsPaneAdjust:u.diagnosticsPaneAdjust}):null,ge?a.createElement("div",{className:"ps-workspace-column",style:{gridTemplateRows:`minmax(0px, calc(50% + ${Math.round(Number(u.diagnosticsSplitAdjust)||0)}px)) var(--ps-resizer-track, 16px) minmax(0px, 1fr)`,...ce?{flex:"1 1 0%",minWidth:0}:null}},a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridRow:"1"}},a.createElement(Qs,{controller:e,mobile:!1})),a.createElement("div",{style:{gridRow:"2",minHeight:0,display:"flex",flexDirection:"column"}},a.createElement(A0,{controller:e,splitAdjust:u.diagnosticsSplitAdjust})),a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridRow:"3"}},Se?a.createElement(Cr,{controller:e,focused:!1,previewOnly:!0}):a.createElement(gi,{controller:e}))):null)),Le=a.createElement("div",{className:"ps-workspace-full"},a.createElement(Qs,{controller:e,mobile:!1}));let He=null;se&&!R?He=a.createElement("div",{className:"ps-mobile-pane-fill"},a.createElement(Qs,{controller:e,mobile:!0})):C==="inspector"?He=u.inspectorTab==="nodes"?a.createElement("div",{className:"ps-mobile-pane-fill ps-mobile-node-split"},a.createElement(Qs,{controller:e,mobile:!0}),a.createElement(gi,{controller:e,panelClassName:"ps-mobile-node-detail"})):a.createElement("div",{className:"ps-mobile-pane-fill"},a.createElement(Qs,{controller:e,mobile:!0})):C==="activity"?He=a.createElement("div",{className:"ps-mobile-pane-fill"},a.createElement(gi,{controller:e})):C==="canvas"?He=null:He=a.createElement(h0,{controller:e,layout:d,onEnterZen:s?.openMobileZen});const pe=R&&G?a.createElement(d0,{key:`canvas:${k.sessionId||""}`,controller:e,visible:_}):null;return t?a.createElement(Vi.Provider,{value:e},a.createElement(Nc,{controller:e,mobile:!1,moa:s,viewNavigation:n}),a.createElement(ta,{controller:e})):a.createElement(Vi.Provider,{value:e},a.createElement("div",{ref:r,className:"ps-web-shell"},a.createElement(Nc,{controller:e,moa:s,viewNavigation:n,mobile:R,canvasPaneOpen:_,onToggleCanvasPane:Q,mobilePane:C,mobileMainLayout:d,onSelectMobilePane:(x,z)=>{x==="workspace"&&C==="workspace"&&p(ne=>ne==="split"?"chat":ne==="chat"?"sessions":"split"),e.closeBudget(),A(x),z&&e.setFocus(z)}}),a.createElement("div",{className:"ps-workspace"},u.adminVisible?a.createElement(eE,{controller:e,mobile:R}):u.budgetOpen?a.createElement(Q0,{controller:e}):se?Le:R?He:$e,pe),R&&se?a.createElement(u0,{controller:e}):null,a.createElement(ta,{controller:e})))}export{Fg as A,Vi as C,cE as M,vE as P,a as R,yE as S,Tu as _,_p as a,pE as b,uE as c,Zi as d,gE as e,bE as f,Cp as g,pt as h,Xi as i,SE as j,Gs as k,eh as l,Mi as m,dn as n,_o as o,Aw as p,mE as q,$c as r,us as s,$o as t,J as u,dE as v,b0 as w,hE as x,Pt as y,fE as z};
109
+ `).map(n=>/^([A-Za-z0-9_-]+):\s*(.*)$/.exec(n)).filter(Boolean).map(([,n,r])=>({key:n,value:r}));return s.length===0?{meta:null,body:e||""}:{meta:s,body:(e||"").slice(t[0].length)}}function aE({file:e,theme:t}){const s=e.language||"text",n=e.truncated?a.createElement("div",{className:"ps-admin-tree__hint"},"… truncated preview"):null;if(s==="markdown"){const{meta:r,body:i}=iE(e.text||"");return a.createElement("div",{className:"ps-admin-ws__doc"},r?a.createElement("div",{className:"ps-admin-ws__frontmatter"},r.map(o=>a.createElement("div",{key:o.key,className:"ps-admin-ws__fm-row"},a.createElement("span",{className:"ps-admin-ws__fm-key"},o.key),a.createElement("span",{className:"ps-admin-ws__fm-val"},o.value)))):null,a.createElement(Za,{content:i,theme:t}),n)}if(s==="json"){let r=e.text||"";if(!e.truncated)try{r=JSON.stringify(JSON.parse(r),null,2)}catch{}return a.createElement("div",{className:"ps-admin-ws__doc"},a.createElement("pre",{className:"ps-admin-ws__code lang-json"},a.createElement("code",null,Bs(r,"json",t))),n)}return a.createElement("div",{className:"ps-admin-ws__doc"},a.createElement("pre",{className:`ps-admin-ws__code lang-${s}`},a.createElement("code",null,Bs(e.text||"",s,t))),n)}function oE({controller:e,dialog:t}){const s=J(e,u=>u.docs?.agentPackageGuideUrl||null),n=u=>m=>e.setAdminAddPackageField(u,m.target.value),r=[["repo","GitHub / Azure DevOps"],["upload","Upload folder"]],i=t.kind==="repo"||t.kind==="github"||t.kind==="ado",o=a.useRef(null),[l,c]=a.useState(!1),d=2*1024*1024,p=u=>{if(u.preventDefault(),!(l||t.submitting)){if(t.kind==="upload"){const m=o.current;if(!m?.files?.length){e.failAdminAddPackage("Choose a package folder first.");return}const f=[...m.files].map(g=>({file:g,path:g.webkitRelativePath.split("/").slice(1).join("/")||g.name})).filter(({path:g})=>g&&!g.split("/").includes("node_modules")&&!g.split("/").includes(".git")),h=f.reduce((g,{file:b})=>g+b.size,0);if(f.length===0){e.failAdminAddPackage("The chosen folder has no uploadable files.");return}if(h>d){e.failAdminAddPackage(`Folder is ${(h/(1024*1024)).toFixed(1)} MB after filtering — the upload envelope is 2 MB. Use a repo/URL source or 'pilotswarm agents push' for larger packages.`);return}c(!0),Promise.all(f.map(({file:g,path:b})=>new Promise((y,v)=>{const S=new FileReader;S.onerror=()=>v(new Error(`could not read ${b}`)),S.onload=()=>y({path:b,contentBase64:String(S.result).split(",",2)[1]||""}),S.readAsDataURL(g)}))).then(g=>e.submitAdminUploadPackage(g,t.scope)).catch(g=>e.failAdminAddPackage(g?.message||"Could not read the chosen folder.")).finally(()=>c(!1));return}e.submitAdminAddPackage().catch(()=>{})}};return a.createElement("div",{className:"ps-modal-backdrop",onClick:()=>e.closeAdminAddPackage()},a.createElement("form",{className:"ps-modal ps-admin-add",onClick:u=>u.stopPropagation(),autoComplete:"off",onSubmit:p},a.createElement("div",{className:"ps-modal-header"},a.createElement("span",null,t.updateName?`Update ${t.updateName}`:"Add package"),a.createElement("button",{type:"button",className:"ps-mini-button",onClick:()=>e.closeAdminAddPackage()},"✕")),a.createElement("div",{className:"ps-admin-add__body"},a.createElement("p",{className:"ps-admin-console__hint"},"Packages can contain reusable skills, tools, MCP integrations, and authored agent workflows. No agent is required."),a.createElement("div",{className:"ps-admin-add__tabs"},r.map(([u,m])=>a.createElement("button",{key:u,type:"button",className:`ps-admin-add__tab${t.kind===u?" is-on":""}`,onClick:()=>e.setAdminAddPackageField("kind",u)},m))),i?[a.createElement("label",{key:"u",className:"ps-admin-add__field"},"Link to plugin.json (or the folder containing it)",a.createElement("input",{value:t.repoUrl,onChange:n("repoUrl"),placeholder:"https://github.com/org/repo/blob/main/my-agents/plugin.json",autoFocus:!0,type:"url",name:"agent-package-link",autoComplete:"off",spellCheck:!1,"data-1p-ignore":"true","data-lpignore":"true","data-bwignore":"true"})),a.createElement("div",{key:"h",className:"ps-admin-add__hint"},"Paste the browser URL — branch and path are read from the link. The files are read by THIS BROWSER with your access (public GitHub needs nothing; Azure DevOps uses your signed-in account) and uploaded as a package artifact."),a.createElement("label",{key:"t",className:"ps-admin-add__field"},"PAT (only for private GitHub repos, or to override — used here, never stored)",a.createElement("input",{type:"password",value:t.authToken,onChange:n("authToken"),name:"agent-package-pat",autoComplete:"new-password","data-1p-ignore":"true","data-lpignore":"true","data-bwignore":"true"}))]:a.createElement("label",{className:"ps-admin-add__field"},"Package folder with plugin.json — the manifest (≤ 2 MB; node_modules skipped)",a.createElement("input",{ref:o,type:"file",webkitdirectory:"",directory:"",multiple:!0})),a.createElement("div",{className:"ps-admin-add__scope"},a.createElement("label",null,a.createElement("input",{type:"radio",name:"pkg-scope",checked:t.scope==="shared",disabled:!!t.updateName,onChange:()=>e.setAdminAddPackageField("scope","shared")})," Shared — everyone can use it"),a.createElement("label",null,a.createElement("input",{type:"radio",name:"pkg-scope",checked:t.scope==="user",disabled:!!t.updateName,onChange:()=>e.setAdminAddPackageField("scope","user")})," User — only you see it")),t.updateName?a.createElement("p",{className:"ps-admin-console__hint"},`Publishes a new version of ${t.updateName}. Its scope is unchanged — use Demote/Promote on the package to move it.`):null,s?a.createElement("p",{className:"ps-admin-console__hint"},"New to this? ",a.createElement("a",{href:s,target:"_blank",rel:"noreferrer noopener"},"How to build a package")," — a complete guide you can also hand straight to Claude or Copilot."):null,a.createElement("p",{className:"ps-admin-console__hint"},"Same thing from a terminal: pilotswarm agents push ./my-agents --shared"),t.progress&&!t.error?a.createElement("p",{className:"ps-admin-add__progress"},t.progress):null,t.error?a.createElement("pre",{className:"ps-admin-add__error",role:"alert"},t.error):null),a.createElement("div",{className:"ps-modal-footer"},a.createElement("button",{type:"button",className:"ps-mini-button",onClick:()=>e.closeAdminAddPackage(),disabled:t.submitting},"Cancel"),a.createElement("button",{type:"submit",className:"ps-primary-button",disabled:t.submitting||l},l?"Reading folder…":t.submitting?"Importing…":t.updateName?"Import & update":"Import & publish"))))}function bi(e){return e?.configured?.model||""}function Si({label:e,hint:t,value:s,choices:n,disabled:r,emptyLabel:i,onChange:o}){return a.createElement("label",{className:"ps-admin-provider-default"},a.createElement("span",{className:"ps-admin-detail__label"},e),a.createElement("select",{className:"ps-budget-input",value:s,disabled:r,"aria-label":e,onChange:l=>o(l.target.value)},a.createElement("option",{value:""},i),s&&!n.some(l=>l.qualifiedName===s)?a.createElement("option",{value:s},`${s} (currently configured)`):null,n.map(l=>a.createElement("option",{key:l.qualifiedName,value:l.qualifiedName},`${l.provider} · ${l.model}`))),t?a.createElement("span",{className:"ps-admin-console__hint"},t):null)}function _c({providers:e,isAdmin:t,personal:s,busy:n,onSystemUse:r,onUpdate:i,onDelete:o}){return e.length?a.createElement("div",{className:"ps-admin-provider-list"},e.map(l=>a.createElement("div",{key:l.name,className:"ps-admin-provider-row"},a.createElement("div",{className:"ps-admin-provider-row__identity"},a.createElement("strong",{title:l.name},l.name),a.createElement("span",{className:`ps-scope-badge is-${l.class==="shared"?"shared":"user"}`},l.class),l.isMyDefault?a.createElement("span",{className:"ps-scope-badge is-off"},"my default"):null,l.isClusterDefault?a.createElement("span",{className:"ps-scope-badge is-off"},"cluster default"):null,l.isSystemDefault?a.createElement("span",{className:"ps-scope-badge is-off"},"system default"):null),a.createElement("div",{className:"ps-admin-provider-row__actions"},s&&t?a.createElement("label",{className:"ps-admin-console__system-toggle"},a.createElement("input",{type:"checkbox",checked:l.systemUseEnabled,disabled:n,onChange:c=>r(l.name,c.target.checked)}),"Allow system sessions"):null,(s||t)&&!l.usesWorkloadIdentity?a.createElement("button",{type:"button",className:"ps-mini-button","aria-label":`Update key for ${l.name}`,title:`Update key for ${l.name}`,disabled:n,onClick:()=>i(l)},"Update key"):null,a.createElement(ve,{icon:a.createElement(Bw),label:`Delete ${l.name}`,className:"ps-mini-button is-danger",disabled:n,onClick:()=>o(l)}))))):a.createElement("p",{className:"ps-admin-console__hint"},s?"No personal providers yet.":"No shared providers are configured.")}function lE({controller:e,view:t,onAddPersonal:s,onAddShared:n,onUpdatePersonal:r,sheetOpen:i=!1}){const o=t.modelProviders||{},l=!!o.mutation?.pending,c=bi(o.systemSessionDefault),[d,p]=a.useState(c),[u,m]=a.useState(""),[f,h]=a.useState(null);a.useEffect(()=>{p(c)},[c]);const g=(C,A)=>C.find(R=>R.qualifiedName===A)||null,b=(C,A,R)=>{e.setAdminModelDefault(C,g(A,R))},y=C=>{window.confirm(`Delete ${C.name}? Sessions using it will wait until that provider name exists again.`)&&e.deleteAdminProvider(C.name,{shared:C.class==="shared"})},v=async()=>{h(null);const C=await e.setAdminSystemModelDefault(g(o.systemChoices||[],d),{restartDisposition:u||null});C?.ok&&h(C.result?.restart||{requested:!1})},S=(o.systemAgentRoutes||[]).filter(C=>!C.override),w=o.page==="shared"&&t.isAdmin,E=a.createElement("div",{className:"ps-admin-provider-heading"},a.createElement("h3",null,"Model Providers"),a.createElement(ve,{icon:"↻",label:"Refresh model providers",className:"ps-mini-button",disabled:o.loading,onClick:()=>e.refreshAdminModelProviders()})),I=a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("div",{className:"ps-admin-provider-block__head"},a.createElement("h4",null,"My Providers"),a.createElement("button",{type:"button",className:"ps-primary-button",onClick:s,disabled:l},"Add provider")),a.createElement(_c,{providers:o.myProviders||[],isAdmin:t.isAdmin,personal:!0,busy:l,onSystemUse:(C,A)=>e.setAdminProviderSystemUse(C,A),onUpdate:r,onDelete:y})),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement(Si,{label:"My Session Default",hint:`Effective: ${o.mySessionDefault?.effective?.model||"none"}.`,value:bi(o.mySessionDefault),choices:o.userChoices||[],disabled:l,emptyLabel:"Use cluster default",onChange:C=>b("user",o.userChoices||[],C)}))),P=a.createElement(a.Fragment,null,a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("div",{className:"ps-admin-provider-block__head"},a.createElement("h4",null,"Shared Providers"),a.createElement("button",{type:"button",className:"ps-primary-button",onClick:n,disabled:l},"Add provider")),a.createElement(_c,{providers:o.sharedProviders||[],isAdmin:!0,personal:!1,busy:l,onSystemUse:()=>{},onDelete:y,onUpdate:r})),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement(Si,{label:"Cluster Session Default",hint:`Effective: ${o.clusterSessionDefault?.effective?.model||"none"}.`,value:bi(o.clusterSessionDefault),choices:o.clusterChoices||[],disabled:l,emptyLabel:"Use first shared provider",onChange:C=>b("cluster",o.clusterChoices||[],C)})),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("h4",null,"System Session Default"),a.createElement(Si,{label:"Model",hint:"Shared and system-enabled personal providers.",value:d,choices:o.systemChoices||[],disabled:l,emptyLabel:"Use first eligible provider",onChange:p}),a.createElement("div",{className:"ps-admin-detail__label"},"Existing system sessions"),a.createElement(is,{value:u,onChange:m,label:"Existing system sessions",options:[{value:"",label:"Future only"},{value:"complete",label:"Complete & restart"},{value:"terminate",label:"Terminate & restart"},{value:"hard_delete",label:"Hard delete & restart"}]}),a.createElement("div",{className:"ps-admin-provider-apply"},a.createElement("p",{className:"ps-admin-console__hint"},`${S.length} agent${S.length===1?"":"s"} inherit this default.`),a.createElement("button",{type:"button",className:"ps-primary-button",disabled:l,onClick:v},l&&o.mutation?.pending==="systemDefault"?"Applying…":"Apply")),f?.requested?a.createElement("p",{className:"ps-admin-console__status"},`${f.restarted}/${f.affected} restarted${f.failures?.length?` · ${f.failures.length} failed`:""}.`):null),a.createElement("div",{className:"ps-admin-provider-block"},a.createElement("h4",null,"System Agent Overrides"),(o.systemAgentRoutes||[]).length===0?a.createElement("p",{className:"ps-admin-console__hint"},"No system agents."):a.createElement("div",{className:"ps-admin-override-table"},(o.systemAgentRoutes||[]).map(C=>a.createElement("div",{key:C.agentId,className:"ps-admin-override-row"},a.createElement("div",{className:"ps-admin-override-row__agent"},a.createElement("strong",null,C.title),a.createElement("span",null,C.effectiveModel||"blocked"),a.createElement("small",null,C.override?"override":"system default")),a.createElement("select",{className:"ps-budget-input",value:C.override?.model||"",disabled:l,"aria-label":`Model override for ${C.title}`,onChange:A=>{const R=g(o.systemChoices||[],A.target.value);R?e.setAdminSystemAgentModel(C.agentId,R):e.clearAdminSystemAgentModel(C.agentId)}},a.createElement("option",{value:""},"Inherit system default"),(o.systemChoices||[]).map(A=>a.createElement("option",{key:A.qualifiedName,value:A.qualifiedName},`${A.provider} · ${A.model}`))))))));return a.createElement("section",{className:"ps-admin-detail ps-admin-model-providers"},E,o.error||o.mutation?.error&&!i?a.createElement("div",{className:"ps-admin-console__error",role:"alert"},!i&&o.mutation?.error||o.error):null,w?P:I)}function SE({transport:e,mode:t="remote",branding:s=null,docs:n=null}={}){pv();const r=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 920px)").matches,i=hb(ub,Ci({mode:t,branding:s,docs:n}));return i.dispatch({type:"ui/touchScale",enabled:r}),new yS({store:i,transport:e})}function vE({controller:e,suspended:t=!1,moa:s=null,viewNavigation:n=null}){const r=a.useRef(null),i=a.useRef(null),o=tc(r,t),l=tc(i,t),c=wv(o);a.useEffect(()=>{const x=()=>{try{const ye=document.createElement("span");ye.style.cssText="position:absolute;visibility:hidden;white-space:pre;";const Me=document.querySelector(".ps-scroll-panel .ps-line")||document.querySelector(".ps-line");if(Me){const tt=window.getComputedStyle(Me);ye.style.fontFamily=tt.fontFamily,ye.style.fontSize=tt.fontSize,ye.style.fontWeight=tt.fontWeight,ye.style.letterSpacing=tt.letterSpacing}ye.textContent="0".repeat(100),(Me?.parentElement||document.body).appendChild(ye);const Re=ye.getBoundingClientRect().width/100||8;ye.remove();const ot=document.documentElement.clientWidth||window.innerWidth,Ye=document.documentElement.clientHeight||window.innerHeight;e.dispatch({type:"ui/viewport",width:Math.floor(ot/Re),height:Math.floor(Ye/Ct)})}catch{}};x();let z;const ne=()=>{clearTimeout(z),z=setTimeout(x,150)};return window.addEventListener("resize",ne),window.addEventListener("orientationchange",ne),()=>{clearTimeout(z),window.removeEventListener("resize",ne),window.removeEventListener("orientationchange",ne)}},[e]);const[d,p]=a.useState("split"),u=J(e,x=>({moa:x.ui.moa,themeId:x.ui.themeId,touchScale:!!x.ui.touchScale,sessionDetailCollapsed:!!x.ui.sessionDetailCollapsed,agentPickerUsage:x.ui.agentPickerUsage,ownerFilter:x.sessions.ownerFilter,pinnedIds:x.sessions.pinnedIds,manualOrder:x.sessions.manualOrder,sessionSortMode:x.sessions.sortMode,sessionUsedAt:x.sessions.usedAt,collapsedSessionIds:x.sessions.collapsedIds,activeSessionId:x.sessions.activeSessionId||null,revealedCreatedSessionId:x.ui.revealedCreatedSessionId||null,promptRows:Hu(x),rightPaneMode:x.ui.rightPaneMode||"panes",canvasOpen:x.ui.canvasOpen===!0,diagnosticsOpen:x.ui.diagnosticsOpen===!0,canvasMaximized:x.ui.canvasMaximized===!0,canvasZen:x.ui.canvasZen===!0,canvasPrefs:x.canvas?.prefs,activeSessionIsGroup:!!(x.sessions.activeSessionId&&x.sessions.byId[x.sessions.activeSessionId]?.isGroup),paneAdjust:x.ui.layout?.paneAdjust??0,sessionPaneAdjust:x.ui.layout?.sessionPaneAdjust??0,portalSessionColumnAdjust:x.ui.layout?.portalSessionColumnAdjust??0,activityPaneAdjust:x.ui.layout?.activityPaneAdjust??0,canvasPaneAdjust:x.ui.layout?.canvasPaneAdjust??0,diagnosticsPaneAdjust:x.ui.layout?.diagnosticsPaneAdjust??0,diagnosticsSplitAdjust:x.ui.layout?.diagnosticsSplitAdjust??0,sessionViews:x.ui.sessionViews,focusRegion:x.ui.focusRegion,requestedFocusRegion:x.ui.requestedFocusRegion,inspectorTab:x.ui.inspectorTab,filesFullscreen:!!x.files.fullscreen,selectedArtifactId:x.files.selectedArtifactId||null,artifactPaneOpen:!!x.files.paneOpen,adminVisible:!!x.admin?.visible,budgetOpen:!!x.ui?.budgetOpen}),Ke),m=a.useRef(!1),f=a.useRef(null),h=a.useRef(null),g=a.useRef(null),b=a.useRef(null),y=a.useRef(null),v=a.useRef(null),S=a.useRef(!1),w=a.useRef(0),E=a.useRef(0),I=a.useRef(null),P=a.useRef(null),[C,A]=a.useState("workspace"),R=eo(`(max-width: ${zS}px)`),L=u.activeSessionIsGroup?0:u.promptRows;Ap(e,R,t);const U=a.useRef(u.revealedCreatedSessionId);a.useEffect(()=>{U.current!==u.revealedCreatedSessionId&&(U.current=u.revealedCreatedSessionId,!(!u.revealedCreatedSessionId||u.activeSessionId!==u.revealedCreatedSessionId)&&(R&&(A("workspace"),p("chat")),s?.active&&s.leave()))},[u.revealedCreatedSessionId,u.activeSessionId,R,s]),a.useEffect(()=>{e.dispatch({type:"ui/sessionViewDevice",device:R?"mobile":"desktop"})},[e,R]);const M=f0(R&&C==="workspace"&&!u.adminVisible);a.useEffect(()=>{if(!(typeof document>"u"))return document.body.classList.toggle("ps-kb-takeover",M),()=>document.body.classList.remove("ps-kb-takeover")},[M]),a.useEffect(()=>{M&&e.applyPaneVisualScrollOffset?.("chat",0,{followBottom:!0})},[M,e]);const k=J(e,Aa,Ke),_=C==="canvas",$=a.useRef("workspace"),[G,D]=a.useState(!1),[W,N]=a.useState(!1);a.useEffect(()=>{A(x=>x==="canvas"?$.current||"workspace":x),D(!1),N(!1)},[k.sessionId]),a.useEffect(()=>{if(!(typeof document>"u"))return document.body.classList.toggle("ps-canvas-lock",!!(R&&_)),()=>document.body.classList.remove("ps-canvas-lock")},[R,_]);const j=a.useCallback(()=>{C!=="canvas"&&($.current=C),A("canvas"),D(!0),e.dispatch({type:"ui/rightPaneMode",mode:"canvas",sessionId:k.sessionId})},[e,C,k.sessionId]),B=a.useCallback(()=>{A($.current||"workspace"),e.dispatch({type:"ui/rightPaneMode",mode:"panes",sessionId:k.sessionId,manual:!0})},[e,k.sessionId]),V=a.useRef(k.flipSeq);a.useEffect(()=>{k.flipSeq!==V.current&&(V.current=k.flipSeq,R&&j())},[k.flipSeq,R,j]);const Q=a.useCallback(()=>{if(_){B();return}j()},[_,B,j]);a.useEffect(()=>{let x=!0;m.current=!1,f.current=null,I.current=null,P.current=Zl(e.getState()),y.current&&(clearTimeout(y.current),y.current=null),v.current&&(clearInterval(v.current),v.current=null),S.current=!1,w.current=0;const z=e.transport;if(typeof z?.getCurrentUserProfile!="function"||typeof z?.setCurrentUserProfileSettings!="function")return m.current=!0,()=>{x=!1};const ne=async()=>{if(!x||S.current)return;S.current=!0;const ye=E.current;try{const Me=await z.getCurrentUserProfile();if(!x)return;Me&&typeof Me.isAdmin=="boolean"&&!e.getState().admin?.profile&&e.dispatch({type:"admin/profile/loaded",profile:Me});const Re=cs(Me?.profileSettings);typeof Re[dr()]=="boolean"&&(h.current=Re[dr()]),(Re.rightPaneMode==="canvas"||Re.rightPaneMode==="panes")&&(g.current=Re.rightPaneMode),Re.desktopPanes&&(b.current=Re.desktopPanes),P.current=Zl(e.getState(),h.current,g.current,b.current);const ot=fv(Me?.profileSettings,P.current),Ye=JSON.stringify(ot),tt=ci(Ql(e.getState()),h.current,g.current,b.current),we=JSON.stringify(tt),Xe=m.current&&f.current!=null&&we!==f.current,St=ye!==E.current||!!y.current||w.current||Xe||e.getState().ui.moaDirty===!0;if(!St&&I.current!==Ye&&(e.dispatch({type:"profileSettings/apply",settings:ot}),I.current=Ye),!m.current||!St){const qs=ci(Ql(e.getState()),h.current,g.current,b.current);f.current=JSON.stringify(qs)}m.current=!0}catch{if(!x)return;m.current=!0}finally{S.current=!1}};return ne().catch(()=>{}),v.current=setInterval(()=>{ne().catch(()=>{})},QS),()=>{x=!1,y.current&&(clearTimeout(y.current),y.current=null),v.current&&(clearInterval(v.current),v.current=null),S.current=!1}},[e]),a.useEffect(()=>{if(!m.current)return;const x=ci(u,h.current,g.current,b.current),z=JSON.stringify(x);f.current!==z&&(f.current=z,E.current+=1,y.current&&clearTimeout(y.current),y.current=setTimeout(()=>{y.current=null,w.current+=1;const ne=e.getState().ui.moaRevision;e.dispatch({type:"ui/moaSaveStatus",status:"saving"}),hv(e,x).then(()=>e.dispatch({type:"ui/moaSaveStatus",status:"saved",revision:ne})).catch(()=>{f.current=null,e.dispatch({type:"ui/moaSaveStatus",status:"error"})}).finally(()=>{w.current=Math.max(0,w.current-1)})},400))},[e,u.moa,u.activeSessionId,u.activityPaneAdjust,u.agentPickerUsage,u.canvasOpen,u.canvasPaneAdjust,u.canvasPrefs,u.canvasZen,u.collapsedSessionIds,u.diagnosticsOpen,u.diagnosticsPaneAdjust,u.diagnosticsSplitAdjust,u.ownerFilter,u.paneAdjust,u.manualOrder,u.sessionSortMode,u.sessionUsedAt,u.pinnedIds,u.portalSessionColumnAdjust,u.rightPaneMode,u.sessionDetailCollapsed,u.sessionPaneAdjust,u.sessionViews,u.themeId,u.touchScale]),a.useEffect(()=>{vv(u.themeId),Sv(u.touchScale)},[u.themeId,u.touchScale]);const ee=a.useRef(null);a.useEffect(()=>{const x=ee.current;if(ee.current=u.focusRegion,x===null||x===u.focusRegion)return;const z=u.requestedFocusRegion;R&&(u.focusRegion==="inspector"||u.focusRegion==="activity")&&(z==="inspector"||z==="activity")&&A(u.focusRegion)},[R,u.focusRegion,u.requestedFocusRegion]),a.useEffect(()=>{const x=Ga(e);!x.includes(u.inspectorTab)&&x.length>0&&e.selectInspectorTab(x[0]).catch(()=>{})},[e,u.inspectorTab]);const Z=a.useMemo(()=>tn(c,u.paneAdjust,L,u.sessionPaneAdjust,u.activityPaneAdjust),[c,u.activityPaneAdjust,u.paneAdjust,L,u.sessionPaneAdjust]),se=u.filesFullscreen&&u.inspectorTab==="files",Se=u.inspectorTab==="files"&&!!u.selectedArtifactId&&!se,ue=!R&&u.artifactPaneOpen&&!!u.selectedArtifactId&&!se,ce=!R&&u.canvasOpen&&!se;a.useEffect(()=>{ce&&N(!0)},[ce,k.sessionId]);const ge=!R&&u.diagnosticsOpen&&!se&&!ue&&!(u.canvasZen&&u.canvasOpen),X=ue||ce||ge,ie=u.canvasMaximized&&ce,me=u.canvasZen&&ce&&!ue,Ze=Math.max(260,Math.min(720,Number(u.canvasPrefs?.[u.activeSessionId]?.zenRailPx)||380));a.useEffect(()=>{if(t||!ie&&!me)return;const x=z=>{z.key==="Escape"&&e.dispatch(ie?{type:"ui/canvasMaximized",on:!1}:{type:"ui/canvasZen",on:!1})};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[e,ie,me,t]);const Pe=Math.max(0,Wa+(Number(u.canvasPaneAdjust)||0)),at=Math.max(0,qa+(Number(u.diagnosticsPaneAdjust)||0)),Ve=(ce?Pe:0)+(ce&&ge?1:0)+(ge?at:0),At=a.useCallback(()=>{e.closeArtifactPane().catch(()=>{})},[e]),K=Math.max(0,(o.width||0)*.68),fe=l.width||K,qe=gv(fe,u.portalSessionColumnAdjust),Ee=me?"hidden":yv(qe),oe=Ee==="hidden"?"0px":`clamp(0px, calc(${Ua*100}% + ${Number(u.portalSessionColumnAdjust)||0}px), max(0px, calc(100% - 14rem - 32px)))`,$e=a.createElement("div",{className:`ps-workspace-grid${X?"":" is-right-hidden"}`,style:{gridTemplateColumns:ue?`minmax(0, ${Z.leftWidth}fr) var(--ps-resizer-track, 16px) minmax(0, ${Z.rightWidth}fr)`:me?`${Ze}px var(--ps-resizer-track, 16px) minmax(0, 1fr)`:X?`minmax(0, 1fr) var(--ps-resizer-track, 16px) min(${Ve}px, calc(100% - var(--ps-resizer-track, 16px) - ${ja}px))`:"minmax(0, 1fr)"}},a.createElement("div",{ref:i,className:`ps-workspace-main-grid is-session-${Ee}`,style:{gridTemplateColumns:`${oe} var(--ps-resizer-track, 16px) minmax(14rem, 1fr)`}},Ee!=="hidden"?a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridColumn:"1"}},a.createElement(Xi,{controller:e,structuredRows:!0})):null,a.createElement("div",{style:{gridColumn:"2",minWidth:0,display:"flex"}},a.createElement(E0,{controller:e,portalSessionColumnAdjust:u.portalSessionColumnAdjust})),a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridColumn:"3"}},a.createElement(Zi,{controller:e}))),X?ue?a.createElement(w0,{controller:e,paneAdjust:u.paneAdjust}):me?a.createElement(I0,{controller:e,sessionId:u.activeSessionId,railPx:Ze}):a.createElement(x0,{controller:e,target:ce?"canvas":"diagnostics",adjust:ce?u.canvasPaneAdjust:u.diagnosticsPaneAdjust}):null,a.createElement("div",{className:`ps-workspace-column-host is-split${ie?" has-maximized":""}`},ue?a.createElement("div",{className:"ps-workspace-column is-artifact"},a.createElement(c0,{controller:e,onClose:At})):null,W?a.createElement("div",{key:`canvas:${u.activeSessionId||""}`,className:`ps-workspace-column is-artifact ps-canvas-layer${ce&&!ue?"":" is-hidden"}${ie&&ce&&!ue?" is-maximized":""}`,style:ce&&!ue&&ge&&!ie?{flex:`0 0 ${Pe}px`,minWidth:0}:void 0,...ce&&!ue?{}:{inert:!0,"aria-hidden":"true"}},a.createElement(Sp,{controller:e,visible:ce&&!ue,maximized:ie})):null,ce&&ge?a.createElement(k0,{controller:e,canvasPaneAdjust:u.canvasPaneAdjust,diagnosticsPaneAdjust:u.diagnosticsPaneAdjust}):null,ge?a.createElement("div",{className:"ps-workspace-column",style:{gridTemplateRows:`minmax(0px, calc(50% + ${Math.round(Number(u.diagnosticsSplitAdjust)||0)}px)) var(--ps-resizer-track, 16px) minmax(0px, 1fr)`,...ce?{flex:"1 1 0%",minWidth:0}:null}},a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridRow:"1"}},a.createElement(Qs,{controller:e,mobile:!1})),a.createElement("div",{style:{gridRow:"2",minHeight:0,display:"flex",flexDirection:"column"}},a.createElement(A0,{controller:e,splitAdjust:u.diagnosticsSplitAdjust})),a.createElement("div",{className:"ps-workspace-pane-slot",style:{gridRow:"3"}},Se?a.createElement(Cr,{controller:e,focused:!1,previewOnly:!0}):a.createElement(gi,{controller:e}))):null)),Le=a.createElement("div",{className:"ps-workspace-full"},a.createElement(Qs,{controller:e,mobile:!1}));let He=null;se&&!R?He=a.createElement("div",{className:"ps-mobile-pane-fill"},a.createElement(Qs,{controller:e,mobile:!0})):C==="inspector"?He=u.inspectorTab==="nodes"?a.createElement("div",{className:"ps-mobile-pane-fill ps-mobile-node-split"},a.createElement(Qs,{controller:e,mobile:!0}),a.createElement(gi,{controller:e,panelClassName:"ps-mobile-node-detail"})):a.createElement("div",{className:"ps-mobile-pane-fill"},a.createElement(Qs,{controller:e,mobile:!0})):C==="activity"?He=a.createElement("div",{className:"ps-mobile-pane-fill"},a.createElement(gi,{controller:e})):C==="canvas"?He=null:He=a.createElement(h0,{controller:e,layout:d,onEnterZen:s?.openMobileZen});const pe=R&&G?a.createElement(d0,{key:`canvas:${k.sessionId||""}`,controller:e,visible:_}):null;return t?a.createElement(Vi.Provider,{value:e},a.createElement(Nc,{controller:e,mobile:!1,moa:s,viewNavigation:n}),a.createElement(ta,{controller:e})):a.createElement(Vi.Provider,{value:e},a.createElement("div",{ref:r,className:"ps-web-shell"},a.createElement(Nc,{controller:e,moa:s,viewNavigation:n,mobile:R,canvasPaneOpen:_,onToggleCanvasPane:Q,mobilePane:C,mobileMainLayout:d,onSelectMobilePane:(x,z)=>{x==="workspace"&&C==="workspace"&&p(ne=>ne==="split"?"chat":ne==="chat"?"sessions":"split"),e.closeBudget(),A(x),z&&e.setFocus(z)}}),a.createElement("div",{className:"ps-workspace"},u.adminVisible?a.createElement(eE,{controller:e,mobile:R}):u.budgetOpen?a.createElement(Q0,{controller:e}):se?Le:R?He:$e,pe),R&&se?a.createElement(u0,{controller:e}):null,a.createElement(ta,{controller:e})))}export{Fg as A,Vi as C,cE as M,vE as P,a as R,yE as S,Tu as _,_p as a,pE as b,uE as c,$o as d,Zi as e,gE as f,Cp as g,bE as h,pt as i,Xi as j,SE as k,Gs as l,Mi as m,dn as n,eh as o,_o as p,Aw as q,$c as r,us as s,mE as t,J as u,dE as v,b0 as w,hE as x,Pt as y,fE as z};