@jait/gateway 0.1.369 → 0.1.370
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/routes/git.d.ts.map +1 -1
- package/dist/routes/git.js +45 -9
- package/dist/routes/git.js.map +1 -1
- package/dist/services/git-forge.d.ts +36 -0
- package/dist/services/git-forge.d.ts.map +1 -1
- package/dist/services/git-forge.js +347 -0
- package/dist/services/git-forge.js.map +1 -1
- package/package.json +1 -1
- package/web-dist/assets/{_basePickBy-9tEBKHrw.js → _basePickBy-AWK96M2x.js} +1 -1
- package/web-dist/assets/{_baseUniq-OFJuNbdf.js → _baseUniq-emOULUrn.js} +1 -1
- package/web-dist/assets/{arc-D83ABP3k.js → arc-D2FZPdgF.js} +1 -1
- package/web-dist/assets/{architectureDiagram-2XIMDMQ5-Bc2IwMtw.js → architectureDiagram-2XIMDMQ5-7GyoShx4.js} +1 -1
- package/web-dist/assets/{blockDiagram-WCTKOSBZ-DaOUvfgs.js → blockDiagram-WCTKOSBZ-B0ZCYkTk.js} +1 -1
- package/web-dist/assets/{c4Diagram-IC4MRINW-By2Sl-yU.js → c4Diagram-IC4MRINW-TyJvphnT.js} +1 -1
- package/web-dist/assets/channel-DbNHueni.js +1 -0
- package/web-dist/assets/{chunk-4BX2VUAB-iDZqzQ9K.js → chunk-4BX2VUAB-kVlxUM_A.js} +1 -1
- package/web-dist/assets/{chunk-55IACEB6-9uSV-l34.js → chunk-55IACEB6-CkuiUehI.js} +1 -1
- package/web-dist/assets/{chunk-FMBD7UC4-BYA_nDxX.js → chunk-FMBD7UC4-C4VI23IX.js} +1 -1
- package/web-dist/assets/{chunk-JSJVCQXG-B4eDeZaq.js → chunk-JSJVCQXG-Cw-AVZl0.js} +1 -1
- package/web-dist/assets/{chunk-KX2RTZJC-CDUCmwy6.js → chunk-KX2RTZJC-DAHyFZhF.js} +1 -1
- package/web-dist/assets/{chunk-NQ4KR5QH-CkvEsOT2.js → chunk-NQ4KR5QH-D69Pc1Le.js} +1 -1
- package/web-dist/assets/{chunk-QZHKN3VN-CXEMsfIl.js → chunk-QZHKN3VN-Cg8m2LIz.js} +1 -1
- package/web-dist/assets/{chunk-WL4C6EOR-LUW4MZ-h.js → chunk-WL4C6EOR-6gNGNNWb.js} +1 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-UtLCAume.js +1 -0
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-UtLCAume.js +1 -0
- package/web-dist/assets/clone-DE61nTkK.js +1 -0
- package/web-dist/assets/{cose-bilkent-S5V4N54A-BhxNQPGu.js → cose-bilkent-S5V4N54A-C5Vv2GXX.js} +1 -1
- package/web-dist/assets/{dagre-KLK3FWXG-BfpM2Z23.js → dagre-KLK3FWXG-O2_9Ry6f.js} +1 -1
- package/web-dist/assets/{diagram-E7M64L7V-Ca63aG7i.js → diagram-E7M64L7V-BMWRrv_D.js} +1 -1
- package/web-dist/assets/{diagram-IFDJBPK2-DiKdLhzV.js → diagram-IFDJBPK2-DPaaXfvD.js} +1 -1
- package/web-dist/assets/{diagram-P4PSJMXO-BpmRjllI.js → diagram-P4PSJMXO-CPMdizyY.js} +1 -1
- package/web-dist/assets/{erDiagram-INFDFZHY-BCF2LDUp.js → erDiagram-INFDFZHY-B_4vDgeK.js} +1 -1
- package/web-dist/assets/{flowDiagram-PKNHOUZH-D--4Zf33.js → flowDiagram-PKNHOUZH-CIcaCwSA.js} +1 -1
- package/web-dist/assets/{ganttDiagram-A5KZAMGK-CQblGg_7.js → ganttDiagram-A5KZAMGK-11ng0M86.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-BbubJn6Y.js → gitGraphDiagram-K3NZZRJ6-HDTP8Jzo.js} +1 -1
- package/web-dist/assets/{graph-BAigxsAi.js → graph-CiNjhdme.js} +1 -1
- package/web-dist/assets/{index-5EJf_o8i.js → index-CjEAN2b5.js} +4 -4
- package/web-dist/assets/{infoDiagram-LFFYTUFH-Cbnble_R.js → infoDiagram-LFFYTUFH-DKVtq0SA.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-PHBUUO56-ecGqsFPd.js → ishikawaDiagram-PHBUUO56-BSOkOuZM.js} +1 -1
- package/web-dist/assets/{journeyDiagram-4ABVD52K-c9itCMvc.js → journeyDiagram-4ABVD52K-CCxQRRx1.js} +1 -1
- package/web-dist/assets/{kanban-definition-K7BYSVSG-BfIEK_vZ.js → kanban-definition-K7BYSVSG-ilHnRsxb.js} +1 -1
- package/web-dist/assets/{layout-CgxmNCDq.js → layout-DLlcPf4W.js} +1 -1
- package/web-dist/assets/{linear-BMYn5UzA.js → linear-BSC2A0BM.js} +1 -1
- package/web-dist/assets/{mindmap-definition-YRQLILUH-D2m_nlnU.js → mindmap-definition-YRQLILUH-U0C9QUhu.js} +1 -1
- package/web-dist/assets/{pieDiagram-SKSYHLDU--fKXXETc.js → pieDiagram-SKSYHLDU-8OsHK-OP.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-337W2JSQ-BZ8XAcAA.js → quadrantDiagram-337W2JSQ-Cu4wEPud.js} +1 -1
- package/web-dist/assets/{requirementDiagram-Z7DCOOCP-Ud_OCco_.js → requirementDiagram-Z7DCOOCP-DR9JT--f.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-JzDzcNTQ.js → sankeyDiagram-WA2Y5GQK-DTmChgyP.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-2WXFIKYE-CTuK8Fse.js → sequenceDiagram-2WXFIKYE-ebyjvDmA.js} +1 -1
- package/web-dist/assets/{stateDiagram-RAJIS63D-BTsTiC9X.js → stateDiagram-RAJIS63D-DAIqqek8.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-CPfIswQ5.js +1 -0
- package/web-dist/assets/{timeline-definition-YZTLITO2-wYqRNAsA.js → timeline-definition-YZTLITO2-CXJOUqX3.js} +1 -1
- package/web-dist/assets/{treemap-KZPCXAKY-Gukx0P4U.js → treemap-KZPCXAKY-CnFdtC4q.js} +1 -1
- package/web-dist/assets/{vennDiagram-LZ73GAT5-08oGSXzy.js → vennDiagram-LZ73GAT5-DelWzg6c.js} +1 -1
- package/web-dist/assets/{xychartDiagram-JWTSCODW-BRexr4q0.js → xychartDiagram-JWTSCODW-CRO6Mo3_.js} +1 -1
- package/web-dist/index.html +1 -1
- package/web-dist/assets/channel-moFQmDxe.js +0 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-u-xp3bV3.js +0 -1
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-u-xp3bV3.js +0 -1
- package/web-dist/assets/clone-C5xLBBQh.js +0 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-CMz1QMAR.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./angular-html-DA-rfuFy.js","./html-pp8916En.js","./javascript-wDzz0qaB.js","./css-CLj8gQPS.js","./angular-ts-BrjP3tb8.js","./scss-D5BDwBP9.js","./astro-HNnZUWAn.js","./json-Cp-IABpG.js","./typescript-BPQ3VLAy.js","./postcss-CXtECtnM.js","./tsx-COt5Ahok.js","./blade-BjGOyj-B.js","./html-derivative-DlHx6ybY.js","./xml-sdJ4AIDG.js","./java-CylS5w8V.js","./sql-BLtJtn59.js","./coffee-Ch7k5sss.js","./cpp-CofmeUqb.js","./regexp-CDVJQ6XC.js","./glsl-DplSGwfg.js","./c-BIGW1oBm.js","./graphql-ChdNCCLP.js","./jsx-g9-lgVsj.js","./haml-D5jkg6IW.js","./handlebars-BpdQsYii.js","./yaml-Buea-lGh.js","./http-jrhK8wxY.js","./shellscript-Yzrsuije.js","./hurl-irOxFIW8.js","./csv-fuZLfV_i.js","./jinja-f2NsQr07.js","./jison-wvAkD_A8.js","./julia-CxzCAyBv.js","./python-B6aJPvgy.js","./r-Dspwwk_N.js","./marko-DjSrsDqO.js","./less-B1dDrJ26.js","./mdc-DTYItulj.js","./markdown-Cvjx9yec.js","./php-R6g_5hLQ.js","./pug-DKIMFp6K.js","./svelte-Cy7k_4gC.js","./ts-tags-DQrlYJgV.js","./vue-D2xRrEX4.js","./vue-html-AaS7Mt5G.js","./vue-vine-BoDAl6tE.js","./stylus-BEDo0Tqx.js","./dagre-KLK3FWXG-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./angular-html-DA-rfuFy.js","./html-pp8916En.js","./javascript-wDzz0qaB.js","./css-CLj8gQPS.js","./angular-ts-BrjP3tb8.js","./scss-D5BDwBP9.js","./astro-HNnZUWAn.js","./json-Cp-IABpG.js","./typescript-BPQ3VLAy.js","./postcss-CXtECtnM.js","./tsx-COt5Ahok.js","./blade-BjGOyj-B.js","./html-derivative-DlHx6ybY.js","./xml-sdJ4AIDG.js","./java-CylS5w8V.js","./sql-BLtJtn59.js","./coffee-Ch7k5sss.js","./cpp-CofmeUqb.js","./regexp-CDVJQ6XC.js","./glsl-DplSGwfg.js","./c-BIGW1oBm.js","./graphql-ChdNCCLP.js","./jsx-g9-lgVsj.js","./haml-D5jkg6IW.js","./handlebars-BpdQsYii.js","./yaml-Buea-lGh.js","./http-jrhK8wxY.js","./shellscript-Yzrsuije.js","./hurl-irOxFIW8.js","./csv-fuZLfV_i.js","./jinja-f2NsQr07.js","./jison-wvAkD_A8.js","./julia-CxzCAyBv.js","./python-B6aJPvgy.js","./r-Dspwwk_N.js","./marko-DjSrsDqO.js","./less-B1dDrJ26.js","./mdc-DTYItulj.js","./markdown-Cvjx9yec.js","./php-R6g_5hLQ.js","./pug-DKIMFp6K.js","./svelte-Cy7k_4gC.js","./ts-tags-DQrlYJgV.js","./vue-D2xRrEX4.js","./vue-html-AaS7Mt5G.js","./vue-vine-BoDAl6tE.js","./stylus-BEDo0Tqx.js","./dagre-KLK3FWXG-O2_9Ry6f.js","./graph-CiNjhdme.js","./_baseUniq-emOULUrn.js","./layout-DLlcPf4W.js","./_basePickBy-AWK96M2x.js","./clone-DE61nTkK.js","./cose-bilkent-S5V4N54A-C5Vv2GXX.js","./cytoscape.esm-BQaXIfA_.js","./c4Diagram-IC4MRINW-TyJvphnT.js","./chunk-JSJVCQXG-Cw-AVZl0.js","./flowDiagram-PKNHOUZH-CIcaCwSA.js","./chunk-FMBD7UC4-C4VI23IX.js","./chunk-55IACEB6-CkuiUehI.js","./chunk-KX2RTZJC-DAHyFZhF.js","./channel-DbNHueni.js","./erDiagram-INFDFZHY-B_4vDgeK.js","./gitGraphDiagram-K3NZZRJ6-HDTP8Jzo.js","./chunk-4BX2VUAB-kVlxUM_A.js","./chunk-QZHKN3VN-Cg8m2LIz.js","./treemap-KZPCXAKY-CnFdtC4q.js","./ganttDiagram-A5KZAMGK-11ng0M86.js","./linear-BSC2A0BM.js","./defaultLocale-DX6XiGOO.js","./infoDiagram-LFFYTUFH-DKVtq0SA.js","./pieDiagram-SKSYHLDU-8OsHK-OP.js","./arc-D2FZPdgF.js","./quadrantDiagram-337W2JSQ-Cu4wEPud.js","./xychartDiagram-JWTSCODW-CRO6Mo3_.js","./requirementDiagram-Z7DCOOCP-DR9JT--f.js","./sequenceDiagram-2WXFIKYE-ebyjvDmA.js","./classDiagram-VBA2DB6C-UtLCAume.js","./chunk-WL4C6EOR-6gNGNNWb.js","./classDiagram-v2-RAHNMMFH-UtLCAume.js","./stateDiagram-RAJIS63D-DAIqqek8.js","./chunk-NQ4KR5QH-D69Pc1Le.js","./stateDiagram-v2-FVOUBMTO-CPfIswQ5.js","./journeyDiagram-4ABVD52K-CCxQRRx1.js","./timeline-definition-YZTLITO2-CXJOUqX3.js","./mindmap-definition-YRQLILUH-U0C9QUhu.js","./kanban-definition-K7BYSVSG-ilHnRsxb.js","./diagram-P4PSJMXO-CPMdizyY.js","./diagram-IFDJBPK2-DPaaXfvD.js","./blockDiagram-WCTKOSBZ-B0ZCYkTk.js","./architectureDiagram-2XIMDMQ5-7GyoShx4.js","./diagram-E7M64L7V-BMWRrv_D.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var xhe=Object.defineProperty;var bhe=(e,r,n)=>r in e?xhe(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n;var He=(e,r,n)=>bhe(e,typeof r!="symbol"?r+"":r,n);function _he(e,r){for(var n=0;n<r.length;n++){const i=r[n];if(typeof i!="string"&&!Array.isArray(i)){for(const s in i)if(s!=="default"&&!(s in e)){const o=Object.getOwnPropertyDescriptor(i,s);o&&Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>i[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();function B0(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function x1t(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var r=e.default;if(typeof r=="function"){var n=function i(){return this instanceof i?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};n.prototype=r.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var s=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(n,i,s.get?s:{enumerable:!0,get:function(){return e[i]}})}),n}var oT={exports:{}},Zx={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react-jsx-runtime.production.js
|
|
@@ -1116,8 +1116,8 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
1116
1116
|
node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);const i=e.x,s=e.y,o=Math.abs(i-n.x),a=e.width/2;let l=n.x<r.x?a-o:a+o;const d=e.height/2,u=Math.abs(r.y-n.y),f=Math.abs(r.x-n.x);if(Math.abs(s-r.y)*a>Math.abs(i-r.x)*d){let p=n.y<r.y?r.y-d-s:s-d-r.y;l=f*p/u;const g={x:n.x<r.x?n.x+l:n.x-f+l,y:n.y<r.y?n.y+u-p:n.y-u+p};return l===0&&(g.x=r.x,g.y=r.y),f===0&&(g.x=r.x),u===0&&(g.y=r.y),_t.debug(`abc89 top/bottom calc, Q ${u}, q ${p}, R ${f}, r ${l}`,g),g}else{n.x<r.x?l=r.x-a-i:l=i-a-r.x;let p=u*l/f,g=n.x<r.x?n.x+f-l:n.x-f+l,v=n.y<r.y?n.y+p:n.y-p;return _t.debug(`sides calc abc89, Q ${u}, q ${p}, R ${f}, r ${l}`,{_x:g,_y:v}),l===0&&(g=r.x,v=r.y),f===0&&(g=r.x),u===0&&(v=r.y),{x:g,y:v}}},"intersection"),NF=X((e,r)=>{_t.warn("abc88 cutPathAtIntersect",e,r);let n=[],i=e[0],s=!1;return e.forEach(o=>{if(_t.info("abc88 checking point",o,r),!oVe(r,o)&&!s){const a=aVe(r,i,o);_t.debug("abc88 inside",o,i,a),_t.debug("abc88 intersection",a,r);let l=!1;n.forEach(d=>{l=l||d.x===a.x&&d.y===a.y}),n.some(d=>d.x===a.x&&d.y===a.y)?_t.warn("abc88 no intersect",a,n):n.push(a),s=!0}else _t.warn("abc88 outside",o,i),i=o,s||n.push(o)}),_t.debug("returning points",n),n},"cutPathAtIntersect");function yse(e){const r=[],n=[];for(let i=1;i<e.length-1;i++){const s=e[i-1],o=e[i],a=e[i+1];(s.x===o.x&&o.y===a.y&&Math.abs(o.x-a.x)>5&&Math.abs(o.y-s.y)>5||s.y===o.y&&o.x===a.x&&Math.abs(o.x-s.x)>5&&Math.abs(o.y-a.y)>5)&&(r.push(o),n.push(i))}return{cornerPoints:r,cornerPointPositions:n}}X(yse,"extractCornerPoints");var EF=X(function(e,r,n){const i=r.x-e.x,s=r.y-e.y,o=Math.sqrt(i*i+s*s),a=n/o;return{x:r.x-a*i,y:r.y-a*s}},"findAdjacentPoint"),lVe=X(function(e){const{cornerPointPositions:r}=yse(e),n=[];for(let i=0;i<e.length;i++)if(r.includes(i)){const s=e[i-1],o=e[i+1],a=e[i],l=EF(s,a,5),d=EF(o,a,5),u=d.x-l.x,f=d.y-l.y;n.push(l);const p=Math.sqrt(2)*2;let g={x:a.x,y:a.y};if(Math.abs(o.x-s.x)>10&&Math.abs(o.y-s.y)>=10){_t.debug("Corner point fixing",Math.abs(o.x-s.x),Math.abs(o.y-s.y));const v=5;a.x===l.x?g={x:u<0?l.x-v+p:l.x+v-p,y:f<0?l.y-p:l.y+p}:g={x:u<0?l.x-p:l.x+p,y:f<0?l.y-v+p:l.y+v-p}}else _t.debug("Corner point skipping fixing",Math.abs(o.x-s.x),Math.abs(o.y-s.y));n.push(g,d)}else n.push(e[i]);return n},"fixCorners"),cVe=X((e,r,n)=>{const i=e-r-n,s=2,o=2,a=s+o,l=Math.floor(i/a),d=Array(l).fill(`${s} ${o}`).join(" ");return`0 ${r} ${d} ${n}`},"generateDashArray"),uVe=X(function(e,r,n,i,s,o,a,l=!1){var L;const{handDrawnSeed:d}=ii();let u=r.points,f=!1;const p=s;var g=o;const v=[];for(const F in r.cssCompiledStyles)yne(F)||v.push(r.cssCompiledStyles[F]);_t.debug("UIO intersect check",r.points,g.x,p.x),g.intersect&&p.intersect&&!l&&(u=u.slice(1,r.points.length-1),u.unshift(p.intersect(u[0])),_t.debug("Last point UIO",r.start,"-->",r.end,u[u.length-1],g,g.intersect(u[u.length-1])),u.push(g.intersect(u[u.length-1])));const b=btoa(JSON.stringify(u));r.toCluster&&(_t.info("to cluster abc88",n.get(r.toCluster)),u=NF(r.points,n.get(r.toCluster).node),f=!0),r.fromCluster&&(_t.debug("from cluster abc88",n.get(r.fromCluster),JSON.stringify(u,null,2)),u=NF(u.reverse(),n.get(r.fromCluster).node).reverse(),f=!0);let _=u.filter(F=>!Number.isNaN(F.y));const S=nVe(r.curve);S!=="rounded"&&(_=lVe(_));let w=R_;switch(S){case"linear":w=R_;break;case"basis":w=LA;break;case"cardinal":w=Zee;break;case"bumpX":w=qee;break;case"bumpY":w=Gee;break;case"catmullRom":w=Qee;break;case"monotoneX":w=ste;break;case"monotoneY":w=ote;break;case"natural":w=lte;break;case"step":w=cte;break;case"stepAfter":w=dte;break;case"stepBefore":w=ute;break;case"rounded":w=R_;break;default:w=LA}const{x:C,y:j}=oze(r),T=$Ie().x(C).y(j).curve(w);let A;switch(r.thickness){case"normal":A="edge-thickness-normal";break;case"thick":A="edge-thickness-thick";break;case"invisible":A="edge-thickness-invisible";break;default:A="edge-thickness-normal"}switch(r.pattern){case"solid":A+=" edge-pattern-solid";break;case"dotted":A+=" edge-pattern-dotted";break;case"dashed":A+=" edge-pattern-dashed";break;default:A+=" edge-pattern-solid"}let E,R=S==="rounded"?vse(xse(_,r),5):T(_);const P=Array.isArray(r.style)?r.style:[r.style];let B=P.find(F=>F==null?void 0:F.startsWith("stroke:")),$="";r.animate&&($="edge-animation-fast"),r.animation&&($="edge-animation-"+r.animation);let W=!1;if(r.look==="handDrawn"){const F=br.svg(e);Object.assign([],_);const V=F.path(R,{roughness:.3,seed:d});A+=" transition",E=Dr(V).select("path").attr("id",r.id).attr("class"," "+A+(r.classes?" "+r.classes:"")+($?" "+$:"")).attr("style",P?P.reduce((H,U)=>H+";"+U,""):"");let Y=E.attr("d");E.attr("d",Y),e.node().appendChild(E.node())}else{const F=v.join(";"),V=P?P.reduce((ee,re)=>ee+re+";",""):"",Y=(F?F+";"+V+";":V)+";"+(P?P.reduce((ee,re)=>ee+";"+re,""):"");E=e.append("path").attr("d",R).attr("id",r.id).attr("class"," "+A+(r.classes?" "+r.classes:"")+($?" "+$:"")).attr("style",Y),B=(L=Y.match(/stroke:([^;]+)/))==null?void 0:L[1],W=r.animate===!0||!!r.animation||F.includes("animation");const H=E.node(),U=typeof H.getTotalLength=="function"?H.getTotalLength():0,J=Uz[r.arrowTypeStart]||0,q=Uz[r.arrowTypeEnd]||0;if(r.look==="neo"&&!W){const re=`stroke-dasharray: ${r.pattern==="dotted"||r.pattern==="dashed"?cVe(U,J,q):`0 ${J} ${U-J-q} ${q}`}; stroke-dashoffset: 0;`;E.attr("style",re+E.attr("style"))}}E.attr("data-edge",!0),E.attr("data-et","edge"),E.attr("data-id",r.id),E.attr("data-points",b),r.showPoints&&_.forEach(F=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",F.x).attr("cy",F.y)});let I="";(ii().flowchart.arrowMarkerAbsolute||ii().state.arrowMarkerAbsolute)&&(I=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,I=I.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),_t.info("arrowTypeStart",r.arrowTypeStart),_t.info("arrowTypeEnd",r.arrowTypeEnd),tVe(E,r,I,a,i,B);const K=Math.floor(u.length/2),M=u[K];sd.isLabelCoordinateInPath(M,E.attr("d"))||(f=!0);let z={};return f&&(z.updatedPath=u),z.originalPath=r.points,z},"insertEdge");function vse(e,r){if(e.length<2)return"";let n="";const i=e.length,s=1e-5;for(let o=0;o<i;o++){const a=e[o],l=e[o-1],d=e[o+1];if(o===0)n+=`M${a.x},${a.y}`;else if(o===i-1)n+=`L${a.x},${a.y}`;else{const u=a.x-l.x,f=a.y-l.y,p=d.x-a.x,g=d.y-a.y,v=Math.hypot(u,f),b=Math.hypot(p,g);if(v<s||b<s){n+=`L${a.x},${a.y}`;continue}const _=u/v,S=f/v,w=p/b,C=g/b,j=_*w+S*C,T=Math.max(-1,Math.min(1,j)),A=Math.acos(T);if(A<s||Math.abs(Math.PI-A)<s){n+=`L${a.x},${a.y}`;continue}const E=Math.min(r/Math.sin(A/2),v/2,b/2),R=a.x-_*E,P=a.y-S*E,B=a.x+w*E,$=a.y+C*E;n+=`L${R},${P}`,n+=`Q${a.x},${a.y} ${B},${$}`}}return n}X(vse,"generateRoundedPath");function cO(e,r){if(!e||!r)return{angle:0,deltaX:0,deltaY:0};const n=r.x-e.x,i=r.y-e.y;return{angle:Math.atan2(i,n),deltaX:n,deltaY:i}}X(cO,"calculateDeltaAndAngle");function xse(e,r){const n=e.map(s=>({...s}));if(e.length>=2&&ja[r.arrowTypeStart]){const s=ja[r.arrowTypeStart],o=e[0],a=e[1],{angle:l}=cO(o,a),d=s*Math.cos(l),u=s*Math.sin(l);n[0].x=o.x+d,n[0].y=o.y+u}const i=e.length;if(i>=2&&ja[r.arrowTypeEnd]){const s=ja[r.arrowTypeEnd],o=e[i-1],a=e[i-2],{angle:l}=cO(a,o),d=s*Math.cos(l),u=s*Math.sin(l);n[i-1].x=o.x-d,n[i-1].y=o.y-u}return n}X(xse,"applyMarkerOffsetsToPoints");var dVe=X((e,r,n,i)=>{r.forEach(s=>{TVe[s](e,n,i)})},"insertMarkers"),hVe=X((e,r,n)=>{_t.trace("Making markers for ",n),e.append("defs").append("marker").attr("id",n+"_"+r+"-extensionStart").attr("class","marker extension "+r).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",n+"_"+r+"-extensionEnd").attr("class","marker extension "+r).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),fVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-compositionStart").attr("class","marker composition "+r).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",n+"_"+r+"-compositionEnd").attr("class","marker composition "+r).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),pVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-aggregationStart").attr("class","marker aggregation "+r).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",n+"_"+r+"-aggregationEnd").attr("class","marker aggregation "+r).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),mVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-dependencyStart").attr("class","marker dependency "+r).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",n+"_"+r+"-dependencyEnd").attr("class","marker dependency "+r).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),gVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-lollipopStart").attr("class","marker lollipop "+r).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",n+"_"+r+"-lollipopEnd").attr("class","marker lollipop "+r).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),yVe=X((e,r,n)=>{e.append("marker").attr("id",n+"_"+r+"-pointEnd").attr("class","marker "+r).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",n+"_"+r+"-pointStart").attr("class","marker "+r).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),vVe=X((e,r,n)=>{e.append("marker").attr("id",n+"_"+r+"-circleEnd").attr("class","marker "+r).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",n+"_"+r+"-circleStart").attr("class","marker "+r).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),xVe=X((e,r,n)=>{e.append("marker").attr("id",n+"_"+r+"-crossEnd").attr("class","marker cross "+r).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",n+"_"+r+"-crossStart").attr("class","marker cross "+r).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),bVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),_Ve=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-onlyOneStart").attr("class","marker onlyOne "+r).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",n+"_"+r+"-onlyOneEnd").attr("class","marker onlyOne "+r).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),wVe=X((e,r,n)=>{const i=e.append("defs").append("marker").attr("id",n+"_"+r+"-zeroOrOneStart").attr("class","marker zeroOrOne "+r).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("d","M9,0 L9,18");const s=e.append("defs").append("marker").attr("id",n+"_"+r+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+r).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");s.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),s.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),SVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-oneOrMoreStart").attr("class","marker oneOrMore "+r).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",n+"_"+r+"-oneOrMoreEnd").attr("class","marker oneOrMore "+r).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),kVe=X((e,r,n)=>{const i=e.append("defs").append("marker").attr("id",n+"_"+r+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+r).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const s=e.append("defs").append("marker").attr("id",n+"_"+r+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+r).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");s.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),s.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),CVe=X((e,r,n)=>{e.append("defs").append("marker").attr("id",n+"_"+r+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0
|
|
1117
1117
|
L20,10
|
|
1118
1118
|
M20,10
|
|
1119
|
-
L0,20`)},"requirement_arrow"),jVe=X((e,r,n)=>{const i=e.append("defs").append("marker").attr("id",n+"_"+r+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),TVe={extension:hVe,composition:fVe,aggregation:pVe,dependency:mVe,lollipop:gVe,point:yVe,circle:vVe,cross:xVe,barb:bVe,only_one:_Ve,zero_or_one:wVe,one_or_more:SVe,zero_or_more:kVe,requirement_arrow:CVe,requirement_contains:jVe},NVe=dVe,EVe={common:kS,getConfig:Ma,insertCluster:LUe,insertEdge:uVe,insertEdgeLabel:iVe,insertMarkers:NVe,insertNode:gse,interpolateToCurve:TM,labelHelper:Hr,log:_t,positionEdgeLabel:sVe},V2={},bse=X(e=>{for(const r of e)V2[r.name]=r},"registerLayoutLoaders"),AVe=X(()=>{bse([{name:"dagre",loader:X(async()=>await Ke(()=>import("./dagre-KLK3FWXG-
|
|
1120
|
-
`);const i=JIe(r),s=i.append("g");i.attr("viewBox","0 0 2412 512"),hee(i,100,512,!0),s.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),s.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),s.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),s.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),s.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),s.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),s.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),s.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${n}`)},"draw"),Ise={draw:nGe},iGe=Ise,sGe={db:{},renderer:Ise,parser:{parse:X(()=>{},"parse")}},oGe=sGe,Bse="flowchart-elk",aGe=X((e,r={})=>{var n;return/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&((n=r==null?void 0:r.flowchart)==null?void 0:n.defaultRenderer)==="elk"?(r.layout="elk",!0):!1},"detector"),lGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-
|
|
1119
|
+
L0,20`)},"requirement_arrow"),jVe=X((e,r,n)=>{const i=e.append("defs").append("marker").attr("id",n+"_"+r+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),TVe={extension:hVe,composition:fVe,aggregation:pVe,dependency:mVe,lollipop:gVe,point:yVe,circle:vVe,cross:xVe,barb:bVe,only_one:_Ve,zero_or_one:wVe,one_or_more:SVe,zero_or_more:kVe,requirement_arrow:CVe,requirement_contains:jVe},NVe=dVe,EVe={common:kS,getConfig:Ma,insertCluster:LUe,insertEdge:uVe,insertEdgeLabel:iVe,insertMarkers:NVe,insertNode:gse,interpolateToCurve:TM,labelHelper:Hr,log:_t,positionEdgeLabel:sVe},V2={},bse=X(e=>{for(const r of e)V2[r.name]=r},"registerLayoutLoaders"),AVe=X(()=>{bse([{name:"dagre",loader:X(async()=>await Ke(()=>import("./dagre-KLK3FWXG-O2_9Ry6f.js"),__vite__mapDeps([47,48,49,50,51,52]),import.meta.url),"loader")},{name:"cose-bilkent",loader:X(async()=>await Ke(()=>import("./cose-bilkent-S5V4N54A-C5Vv2GXX.js"),__vite__mapDeps([53,54]),import.meta.url),"loader")}])},"registerDefaultLayoutLoaders");AVe();var ovt=X(async(e,r)=>{if(!(e.layoutAlgorithm in V2))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const n=V2[e.layoutAlgorithm];return(await n.loader()).render(e,r,EVe,{algorithm:n.algorithm})},"render"),avt=X((e="",{fallback:r="dagre"}={})=>{if(e in V2)return e;if(r in V2)return _t.warn(`Layout algorithm ${e} is not registered. Using ${r} as fallback.`),r;throw new Error(`Both layout algorithms ${e} and ${r} are not registered.`)},"getRegisteredLayoutAlgorithm"),OVe=Xre(Object.keys,Object),RVe=Object.prototype,MVe=RVe.hasOwnProperty;function PVe(e){if(!qj(e))return OVe(e);var r=[];for(var n in Object(e))MVe.call(e,n)&&n!="constructor"&&r.push(n);return r}var uO=Y0(Td,"DataView"),dO=Y0(Td,"Promise"),hO=Y0(Td,"Set"),fO=Y0(Td,"WeakMap"),AF="[object Map]",LVe="[object Object]",OF="[object Promise]",RF="[object Set]",MF="[object WeakMap]",PF="[object DataView]",$Ve=K0(uO),DVe=K0(W2),IVe=K0(dO),BVe=K0(hO),zVe=K0(fO),Gg=G0;(uO&&Gg(new uO(new ArrayBuffer(1)))!=PF||W2&&Gg(new W2)!=AF||dO&&Gg(dO.resolve())!=OF||hO&&Gg(new hO)!=RF||fO&&Gg(new fO)!=MF)&&(Gg=function(e){var r=G0(e),n=r==LVe?e.constructor:void 0,i=n?K0(n):"";if(i)switch(i){case $Ve:return PF;case DVe:return AF;case IVe:return OF;case BVe:return RF;case zVe:return MF}return r});var FVe="[object Map]",HVe="[object Set]",WVe=Object.prototype,UVe=WVe.hasOwnProperty;function LF(e){if(e==null)return!0;if(Gj(e)&&(H5(e)||typeof e=="string"||typeof e.splice=="function"||CM(e)||jM(e)||F5(e)))return!e.length;var r=Gg(e);if(r==FVe||r==HVe)return!e.size;if(qj(e))return!PVe(e).length;for(var n in e)if(UVe.call(e,n))return!1;return!0}var _se="c4",VVe=X(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),qVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./c4Diagram-IC4MRINW-TyJvphnT.js");return{diagram:r}},__vite__mapDeps([55,56]),import.meta.url);return{id:_se,diagram:e}},"loader"),GVe={id:_se,detector:VVe,loader:qVe},KVe=GVe,wse="flowchart",YVe=X((e,r)=>{var n,i;return((n=r==null?void 0:r.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"||((i=r==null?void 0:r.flowchart)==null?void 0:i.defaultRenderer)==="elk"?!1:/^\s*graph/.test(e)},"detector"),XVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-CIcaCwSA.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:wse,diagram:e}},"loader"),ZVe={id:wse,detector:YVe,loader:XVe},JVe=ZVe,Sse="flowchart-v2",QVe=X((e,r)=>{var n,i,s;return((n=r==null?void 0:r.flowchart)==null?void 0:n.defaultRenderer)==="dagre-d3"?!1:(((i=r==null?void 0:r.flowchart)==null?void 0:i.defaultRenderer)==="elk"&&(r.layout="elk"),/^\s*graph/.test(e)&&((s=r==null?void 0:r.flowchart)==null?void 0:s.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(e))},"detector"),eqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-CIcaCwSA.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:Sse,diagram:e}},"loader"),tqe={id:Sse,detector:QVe,loader:eqe},rqe=tqe,kse="er",nqe=X(e=>/^\s*erDiagram/.test(e),"detector"),iqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./erDiagram-INFDFZHY-B_4vDgeK.js");return{diagram:r}},__vite__mapDeps([62,59,60,61]),import.meta.url);return{id:kse,diagram:e}},"loader"),sqe={id:kse,detector:nqe,loader:iqe},oqe=sqe,Cse="gitGraph",aqe=X(e=>/^\s*gitGraph/.test(e),"detector"),lqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./gitGraphDiagram-K3NZZRJ6-HDTP8Jzo.js");return{diagram:r}},__vite__mapDeps([63,64,65,66,49,51,52]),import.meta.url);return{id:Cse,diagram:e}},"loader"),cqe={id:Cse,detector:aqe,loader:lqe},uqe=cqe,jse="gantt",dqe=X(e=>/^\s*gantt/.test(e),"detector"),hqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./ganttDiagram-A5KZAMGK-11ng0M86.js");return{diagram:r}},__vite__mapDeps([67,68,69]),import.meta.url);return{id:jse,diagram:e}},"loader"),fqe={id:jse,detector:dqe,loader:hqe},pqe=fqe,Tse="info",mqe=X(e=>/^\s*info/.test(e),"detector"),gqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./infoDiagram-LFFYTUFH-DKVtq0SA.js");return{diagram:r}},__vite__mapDeps([70,66,49,51,52]),import.meta.url);return{id:Tse,diagram:e}},"loader"),yqe={id:Tse,detector:mqe,loader:gqe},Nse="pie",vqe=X(e=>/^\s*pie/.test(e),"detector"),xqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./pieDiagram-SKSYHLDU-8OsHK-OP.js");return{diagram:r}},__vite__mapDeps([71,64,66,49,51,52,72]),import.meta.url);return{id:Nse,diagram:e}},"loader"),bqe={id:Nse,detector:vqe,loader:xqe},Ese="quadrantChart",_qe=X(e=>/^\s*quadrantChart/.test(e),"detector"),wqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./quadrantDiagram-337W2JSQ-Cu4wEPud.js");return{diagram:r}},__vite__mapDeps([73,68,69]),import.meta.url);return{id:Ese,diagram:e}},"loader"),Sqe={id:Ese,detector:_qe,loader:wqe},kqe=Sqe,Ase="xychart",Cqe=X(e=>/^\s*xychart(-beta)?/.test(e),"detector"),jqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./xychartDiagram-JWTSCODW-CRO6Mo3_.js");return{diagram:r}},__vite__mapDeps([74,68,69]),import.meta.url);return{id:Ase,diagram:e}},"loader"),Tqe={id:Ase,detector:Cqe,loader:jqe},Nqe=Tqe,Ose="requirement",Eqe=X(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),Aqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./requirementDiagram-Z7DCOOCP-DR9JT--f.js");return{diagram:r}},__vite__mapDeps([75,59,60]),import.meta.url);return{id:Ose,diagram:e}},"loader"),Oqe={id:Ose,detector:Eqe,loader:Aqe},Rqe=Oqe,Rse="sequence",Mqe=X(e=>/^\s*sequenceDiagram/.test(e),"detector"),Pqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./sequenceDiagram-2WXFIKYE-ebyjvDmA.js");return{diagram:r}},__vite__mapDeps([76,56,65]),import.meta.url);return{id:Rse,diagram:e}},"loader"),Lqe={id:Rse,detector:Mqe,loader:Pqe},$qe=Lqe,Mse="class",Dqe=X((e,r)=>{var n;return((n=r==null?void 0:r.class)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e)},"detector"),Iqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./classDiagram-VBA2DB6C-UtLCAume.js");return{diagram:r}},__vite__mapDeps([77,78,58,56,59,60]),import.meta.url);return{id:Mse,diagram:e}},"loader"),Bqe={id:Mse,detector:Dqe,loader:Iqe},zqe=Bqe,Pse="classDiagram",Fqe=X((e,r)=>{var n;return/^\s*classDiagram/.test(e)&&((n=r==null?void 0:r.class)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e)},"detector"),Hqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./classDiagram-v2-RAHNMMFH-UtLCAume.js");return{diagram:r}},__vite__mapDeps([79,78,58,56,59,60]),import.meta.url);return{id:Pse,diagram:e}},"loader"),Wqe={id:Pse,detector:Fqe,loader:Hqe},Uqe=Wqe,Lse="state",Vqe=X((e,r)=>{var n;return((n=r==null?void 0:r.state)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e)},"detector"),qqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./stateDiagram-RAJIS63D-DAIqqek8.js");return{diagram:r}},__vite__mapDeps([80,81,59,60,48,49,50,51]),import.meta.url);return{id:Lse,diagram:e}},"loader"),Gqe={id:Lse,detector:Vqe,loader:qqe},Kqe=Gqe,$se="stateDiagram",Yqe=X((e,r)=>{var n;return!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&((n=r==null?void 0:r.state)==null?void 0:n.defaultRenderer)==="dagre-wrapper")},"detector"),Xqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./stateDiagram-v2-FVOUBMTO-CPfIswQ5.js");return{diagram:r}},__vite__mapDeps([82,81,59,60]),import.meta.url);return{id:$se,diagram:e}},"loader"),Zqe={id:$se,detector:Yqe,loader:Xqe},Jqe=Zqe,Dse="journey",Qqe=X(e=>/^\s*journey/.test(e),"detector"),eGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./journeyDiagram-4ABVD52K-CCxQRRx1.js");return{diagram:r}},__vite__mapDeps([83,58,56,72]),import.meta.url);return{id:Dse,diagram:e}},"loader"),tGe={id:Dse,detector:Qqe,loader:eGe},rGe=tGe,nGe=X((e,r,n)=>{_t.debug(`rendering svg for syntax error
|
|
1120
|
+
`);const i=JIe(r),s=i.append("g");i.attr("viewBox","0 0 2412 512"),hee(i,100,512,!0),s.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),s.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),s.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),s.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),s.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),s.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),s.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),s.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${n}`)},"draw"),Ise={draw:nGe},iGe=Ise,sGe={db:{},renderer:Ise,parser:{parse:X(()=>{},"parse")}},oGe=sGe,Bse="flowchart-elk",aGe=X((e,r={})=>{var n;return/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&((n=r==null?void 0:r.flowchart)==null?void 0:n.defaultRenderer)==="elk"?(r.layout="elk",!0):!1},"detector"),lGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-CIcaCwSA.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:Bse,diagram:e}},"loader"),cGe={id:Bse,detector:aGe,loader:lGe},uGe=cGe,zse="timeline",dGe=X(e=>/^\s*timeline/.test(e),"detector"),hGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./timeline-definition-YZTLITO2-CXJOUqX3.js");return{diagram:r}},__vite__mapDeps([84,72]),import.meta.url);return{id:zse,diagram:e}},"loader"),fGe={id:zse,detector:dGe,loader:hGe},pGe=fGe,Fse="mindmap",mGe=X(e=>/^\s*mindmap/.test(e),"detector"),gGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./mindmap-definition-YRQLILUH-U0C9QUhu.js");return{diagram:r}},__vite__mapDeps([85,59,60]),import.meta.url);return{id:Fse,diagram:e}},"loader"),yGe={id:Fse,detector:mGe,loader:gGe},vGe=yGe,Hse="kanban",xGe=X(e=>/^\s*kanban/.test(e),"detector"),bGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./kanban-definition-K7BYSVSG-ilHnRsxb.js");return{diagram:r}},__vite__mapDeps([86,58]),import.meta.url);return{id:Hse,diagram:e}},"loader"),_Ge={id:Hse,detector:xGe,loader:bGe},wGe=_Ge,Wse="sankey",SGe=X(e=>/^\s*sankey(-beta)?/.test(e),"detector"),kGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./sankeyDiagram-WA2Y5GQK-DTmChgyP.js");return{diagram:r}},[],import.meta.url);return{id:Wse,diagram:e}},"loader"),CGe={id:Wse,detector:SGe,loader:kGe},jGe=CGe,Use="packet",TGe=X(e=>/^\s*packet(-beta)?/.test(e),"detector"),NGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./diagram-P4PSJMXO-CPMdizyY.js");return{diagram:r}},__vite__mapDeps([87,64,66,49,51,52]),import.meta.url);return{id:Use,diagram:e}},"loader"),EGe={id:Use,detector:TGe,loader:NGe},Vse="radar",AGe=X(e=>/^\s*radar-beta/.test(e),"detector"),OGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./diagram-IFDJBPK2-DPaaXfvD.js");return{diagram:r}},__vite__mapDeps([88,64,66,49,51,52]),import.meta.url);return{id:Vse,diagram:e}},"loader"),RGe={id:Vse,detector:AGe,loader:OGe},qse="block",MGe=X(e=>/^\s*block(-beta)?/.test(e),"detector"),PGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./blockDiagram-WCTKOSBZ-B0ZCYkTk.js");return{diagram:r}},__vite__mapDeps([89,58,52,49,48,61]),import.meta.url);return{id:qse,diagram:e}},"loader"),LGe={id:qse,detector:MGe,loader:PGe},$Ge=LGe,Gse="architecture",DGe=X(e=>/^\s*architecture/.test(e),"detector"),IGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./architectureDiagram-2XIMDMQ5-7GyoShx4.js");return{diagram:r}},__vite__mapDeps([90,64,66,49,51,52,54]),import.meta.url);return{id:Gse,diagram:e}},"loader"),BGe={id:Gse,detector:DGe,loader:IGe},zGe=BGe,Kse="ishikawa",FGe=X(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),HGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./ishikawaDiagram-PHBUUO56-BSOkOuZM.js");return{diagram:r}},[],import.meta.url);return{id:Kse,diagram:e}},"loader"),WGe={id:Kse,detector:FGe,loader:HGe},Yse="venn",UGe=X(e=>/^\s*venn-beta/.test(e),"detector"),VGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./vennDiagram-LZ73GAT5-DelWzg6c.js");return{diagram:r}},[],import.meta.url);return{id:Yse,diagram:e}},"loader"),qGe={id:Yse,detector:UGe,loader:VGe},GGe=qGe,Xse="treemap",KGe=X(e=>/^\s*treemap/.test(e),"detector"),YGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./diagram-E7M64L7V-BMWRrv_D.js");return{diagram:r}},__vite__mapDeps([91,60,64,66,49,51,52,69]),import.meta.url);return{id:Xse,diagram:e}},"loader"),XGe={id:Xse,detector:KGe,loader:YGe},$F=!1,t6=X(()=>{$F||($F=!0,S5("error",oGe,e=>e.toLowerCase().trim()==="error"),S5("---",{db:{clear:X(()=>{},"clear")},styles:{},renderer:{draw:X(()=>{},"draw")},parser:{parse:X(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:X(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),bA(uGe,vGe,zGe),bA(KVe,wGe,Uqe,zqe,oqe,pqe,yqe,bqe,Rqe,$qe,rqe,JVe,pGe,uqe,Jqe,Kqe,rGe,kqe,jGe,EGe,Nqe,$Ge,RGe,WGe,XGe,GGe))},"addDiagrams"),ZGe=X(async()=>{_t.debug("Loading registered diagrams");const r=(await Promise.allSettled(Object.entries(C0).map(async([n,{detector:i,loader:s}])=>{if(s)try{kA(n)}catch{try{const{diagram:o,id:a}=await s();S5(a,o,i)}catch(o){throw _t.error(`Failed to load external diagram with key ${n}. Removing from detectors.`),delete C0[n],o}}}))).filter(n=>n.status==="rejected");if(r.length>0){_t.error(`Failed to load ${r.length} external diagrams`);for(const n of r)_t.error(n);throw new Error(`Failed to load ${r.length} external diagrams`)}},"loadRegisteredDiagrams"),JGe="graphics-document document";function Zse(e,r){e.attr("role",JGe),r!==""&&e.attr("aria-roledescription",r)}X(Zse,"setA11yDiagramInfo");function Jse(e,r,n,i){if(e.insert!==void 0){if(n){const s=`chart-desc-${i}`;e.attr("aria-describedby",s),e.insert("desc",":first-child").attr("id",s).text(n)}if(r){const s=`chart-title-${i}`;e.attr("aria-labelledby",s),e.insert("title",":first-child").attr("id",s).text(r)}}}X(Jse,"addSVGa11yTitleDescription");var m0,pO=(m0=class{constructor(r,n,i,s,o){this.type=r,this.text=n,this.db=i,this.parser=s,this.renderer=o}static async fromText(r,n={}){var u,f;const i=Ma(),s=KR(r,i);r=tWe(r)+`
|
|
1121
1121
|
`;try{kA(s)}catch{const p=WMe(s);if(!p)throw new JQ(`Diagram ${s} not found.`);const{id:g,diagram:v}=await p();S5(g,v)}const{db:o,parser:a,renderer:l,init:d}=kA(s);return a.parser&&(a.parser.yy=o),(u=o.clear)==null||u.call(o),d==null||d(i),n.title&&((f=o.setDiagramTitle)==null||f.call(o,n.title)),await a.parse(r),new m0(s,r,o,a,l)}async render(r,n){await this.renderer.draw(this.text,r,n,this)}getParser(){return this.parser}getType(){return this.type}},X(m0,"Diagram"),m0),DF=[],QGe=X(()=>{DF.forEach(e=>{e()}),DF=[]},"attachFunctions"),eKe=X(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function Qse(e){const r=e.match(ZQ);if(!r)return{text:e,metadata:{}};let n=sze(r[1],{schema:ize})??{};n=typeof n=="object"&&!Array.isArray(n)?n:{};const i={};return n.displayMode&&(i.displayMode=n.displayMode.toString()),n.title&&(i.title=n.title.toString()),n.config&&(i.config=n.config),{text:e.slice(r[0].length),metadata:i}}X(Qse,"extractFrontMatter");var tKe=X(e=>e.replace(/\r\n?/g,`
|
|
1122
1122
|
`).replace(/<(\w+)([^>]*)>/g,(r,n,i)=>"<"+n+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),rKe=X(e=>{const{text:r,metadata:n}=Qse(e),{displayMode:i,title:s,config:o={}}=n;return i&&(o.gantt||(o.gantt={}),o.gantt.displayMode=i),{title:s,config:o,text:r}},"processFrontmatter"),nKe=X(e=>{const r=sd.detectInit(e)??{},n=sd.detectDirective(e,"wrap");return Array.isArray(n)?r.wrap=n.some(({type:i})=>i==="wrap"):(n==null?void 0:n.type)==="wrap"&&(r.wrap=!0),{text:HHe(e),directive:r}},"processDirectives");function KM(e){const r=tKe(e),n=rKe(r),i=nKe(n.text),s=RM(n.config,i.directive);return e=eKe(i.text),{code:e,title:n.title,config:s}}X(KM,"preprocessDiagram");function eoe(e){const r=new TextEncoder().encode(e),n=Array.from(r,i=>String.fromCodePoint(i)).join("");return btoa(n)}X(eoe,"toBase64");var iKe=5e4,sKe="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",oKe="sandbox",aKe="loose",lKe="http://www.w3.org/2000/svg",cKe="http://www.w3.org/1999/xlink",uKe="http://www.w3.org/1999/xhtml",dKe="100%",hKe="100%",fKe="border:0;margin:0;",pKe="margin:0",mKe="allow-top-navigation-by-user-activation allow-popups",gKe='The "iframe" tag is not supported by your browser.',yKe=["foreignobject"],vKe=["dominant-baseline"];function YM(e){const r=KM(e);return _5(),sPe(r.config??{}),r}X(YM,"processAndSetConfigs");async function toe(e,r){t6();try{const{code:n,config:i}=YM(e);return{diagramType:(await noe(n)).type,config:i}}catch(n){if(r!=null&&r.suppressErrors)return!1;throw n}}X(toe,"parse");var IF=X((e,r,n=[])=>`
|
|
1123
1123
|
.${e} ${r} { ${n.join(" !important; ")} !important; }`,"cssImportantStyles"),xKe=X((e,r=new Map)=>{let n="";if(e.themeCSS!==void 0&&(n+=`
|
|
@@ -1427,7 +1427,7 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
|
1427
1427
|
`).split(`
|
|
1428
1428
|
`).map(i=>i.trim()).find(Boolean)??"";if(!r)return"";const n=r.replace(/\s+/g," ").trim();return n.length>80?`${n.slice(0,77).trimEnd()}...`:n}function Xk(e,r){const n=[...e??[]];for(const i of r??[])i.mimeType.startsWith("image/")&&n.push({type:"image",name:i.name,mimeType:i.mimeType,data:i.data});return n.length>0?n:void 0}function w8(){return Array.from({length:xde},()=>d9)}function bde(e){return e.trim()}function n1t(e,r){const n=e.trim(),i=bde(r);return i?n?`${n} ${i}`:i:n}function i1t(e,r=220){var s,o;const n=e.replace(/```[\s\S]*?```/g," code omitted ").replace(/`([^`]+)`/g,"$1").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/[#>*_~-]+/g," ").replace(/\s+/g," ").trim();if(!n)return"";const i=((o=(s=n.match(/[^.!?]+[.!?]/))==null?void 0:s[0])==null?void 0:o.trim())??n;return i.length<=r?i:`${i.slice(0,r-1).trimEnd()}…`}function Hq(e){const r=(e==null?void 0:e.trim())||"";return r&&r!=="__preview__"?r:null}function Wq(e,r){return typeof e!="string"?r:e.trim()||r}function s1t(e,r,n){return[{type:"file",path:e.path,name:e.name,...e.kind?{kind:e.kind}:{},lineRange:{startLine:r,endLine:n}}]}function o1t(e,r,n,i){const s=Math.max(1,r.split(/\r?\n/).length),o=n&&i&&i>=n?{startLine:n,endLine:i}:{startLine:1,endLine:s};return[{type:"terminal",terminalId:e.terminalId,name:e.name,...e.workspaceRoot?{workspaceRoot:e.workspaceRoot}:{},lineRange:o,selectedText:r.trim()}]}function a1t(e){var s,o,a;const r=((s=e.name)==null?void 0:s.trim())||((o=e.text)==null?void 0:o.trim())||((a=e.placeholder)==null?void 0:a.trim())||"unnamed element";return[{type:"text",text:`${[`Selected preview element: ${e.role??e.tagName??"element"} "${r}"`,e.selector?`Selector: ${e.selector}`:null,e.placeholder?`Placeholder: ${e.placeholder}`:null,e.value?`Value: ${e.value}`:null].filter(Boolean).join(`
|
|
1429
1429
|
`)}
|
|
1430
|
-
`}]}function Uq(e){return e==="normal"||e==="simple"||e==="caveman"||e==="caveman-ultra"}const l1t=["What can you help me with?","Explain quantum computing","Write a Python script","What time is it?"],c1t=["Generate architecture diagram","Explain this codebase","Find potential issues","What can you help me with?"];function Vq(e){const r={};try{const i=localStorage.getItem("cliModelsByProvider");if(i){const s=JSON.parse(i);for(const o of["jait","codex","claude-code"]){const a=s[o];typeof a=="string"&&a.trim()&&(r[o]=a)}}}catch{}const n=localStorage.getItem("cliModel");return n&&!r[e]&&(r[e]=n),r}const u1t="Generating title…";function M4(e){return e.replace(/^\[.*?\]\s*/,"").trim()===u1t}function h9({className:e=""}){return c.jsx("span",{className:`inline-block rounded bg-muted animate-pulse ${e}`,children:c.jsx("span",{className:"invisible",children:"Generating title"})})}function sL({status:e}){const r={running:{icon:sr,color:"text-blue-500 animate-spin"},paused:{icon:lD,color:"text-yellow-500"},interrupted:{icon:lD,color:"text-yellow-500"},done:{icon:ql,color:"text-green-500"},completed:{icon:ql,color:"text-green-500"},error:{icon:Sh,color:"text-red-500"}},{icon:n,color:i}=r[e]??{icon:Oa,color:"text-muted-foreground"};return c.jsx(n,{className:`h-3 w-3 shrink-0 ${i}`})}function _de(e,r){return(r!==void 0?r:e.prState)??(e.prUrl?"open":null)}function wde({prState:e}){if(!e)return null;const r=e==="creating"?"PR creating":e==="open"?"PR open":e==="merged"?"PR merged":"PR closed",n=e==="creating"?"bg-amber-500/10 text-amber-700 border-amber-500/20 dark:text-amber-300 dark:bg-amber-500/20 dark:border-amber-400/30":e==="open"?"bg-blue-500/10 text-blue-700 border-blue-500/20 dark:text-blue-300 dark:bg-blue-500/20 dark:border-blue-400/30":e==="merged"?"bg-purple-500/10 text-purple-700 border-purple-500/20 dark:text-purple-300 dark:bg-purple-500/20 dark:border-purple-400/30":"bg-red-500/10 text-red-700 border-red-500/20 dark:text-red-300 dark:bg-red-500/20 dark:border-red-400/30";return c.jsx(rn,{variant:"outline",className:`h-4 shrink-0 whitespace-nowrap px-1 py-0 text-2xs ${n}`,children:r})}function f9({kind:e}){return c.jsx(rn,{variant:"outline",className:`h-4 shrink-0 whitespace-nowrap px-1 py-0 text-2xs ${e==="delegation"?"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300 dark:border-amber-400/30":"bg-blue-500/10 text-blue-700 border-blue-500/20 dark:text-blue-300 dark:bg-blue-500/20 dark:border-blue-400/30"}`,children:e==="delegation"?"Delegate":"Delivery"})}const d1t={codex:"Codex","claude-code":"Claude"};function P4({runtime:e,className:r=""}){const n=e.availableProviders.filter(i=>i==="codex"||i==="claude-code");return c.jsxs("div",{className:`flex flex-wrap items-center gap-1 text-2xs text-muted-foreground ${r}`.trim(),children:[c.jsx("span",{children:e.locationLabel}),e.loading?c.jsx(sr,{className:"h-3 w-3 animate-spin text-muted-foreground"}):!e.online&&c.jsx(rn,{variant:"outline",className:"h-4 border-amber-500/30 bg-amber-500/10 px-1 py-0 text-2xs text-amber-700 dark:text-amber-300",children:"Offline"}),n.map(i=>c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:d1t[i]},i))]})}function qq({repositories:e,selectedRepo:r,disabled:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o}){return c.jsxs(hu,{children:[c.jsx(fu,{asChild:!0,children:c.jsxs(_e,{variant:"outline",size:"sm",className:"h-8 gap-1.5 rounded-lg px-2 text-xs",disabled:n,children:[c.jsx(mh,{className:"h-3.5 w-3.5 shrink-0"}),c.jsx("span",{className:"max-w-[140px] truncate",children:r?r.name:"Select repository"}),c.jsx(hl,{className:"h-3 w-3 shrink-0 text-muted-foreground"})]})}),c.jsxs(Sc,{align:"start",side:"top",className:"w-64",children:[c.jsx(Qg,{children:"Repository"}),e.map(a=>{const l=i(a);return c.jsx(Bi,{onSelect:()=>s(a.id),children:c.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[c.jsx(mh,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[c.jsx("span",{className:"truncate",children:a.name}),c.jsx("span",{className:"text-2xs text-muted-foreground",children:a.defaultBranch}),a.source==="shared"&&c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:"Shared"})]}),c.jsx(P4,{runtime:l,className:"mt-1"})]})]})},a.id)}),e.length===0&&c.jsx("div",{className:"px-2 py-2 text-xs text-muted-foreground",children:"No repositories yet."}),c.jsx(ed,{}),c.jsxs(Bi,{onSelect:o,children:[c.jsx(Oo,{className:"mr-2 h-3.5 w-3.5"}),"Add repository"]})]})]})}function h1t({repositories:e,selectedRepoId:r,isMobile:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o,onRemoveRepository:a,onOpenStrategy:l,onOpenPlan:d}){return c.jsxs("div",{className:"flex h-full flex-col",children:[c.jsxs("div",{className:"flex h-[35px] items-center justify-between border-b px-3",children:[c.jsx("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Repositories"}),c.jsxs(_e,{variant:"ghost",size:"sm",className:"h-6 gap-1.5 px-2 text-xs",onClick:o,children:[c.jsx(Oo,{className:"h-3 w-3"}),"Add"]})]}),c.jsx("div",{className:n?"flex-1 overflow-y-auto p-1.5 space-y-0.5":"flex-1 overflow-y-auto p-2 space-y-1",children:e.length===0?c.jsxs("p",{className:"py-4 text-center text-xs text-muted-foreground",children:["No repositories yet.",c.jsx("br",{}),c.jsx("button",{type:"button",onClick:o,className:"mt-1 inline-block underline underline-offset-2 hover:text-foreground",children:"Add one"})]}):e.map(u=>{const f=i(u);return c.jsxs("div",{role:"button",tabIndex:0,className:`flex w-full items-start gap-2 px-2 py-1.5 text-left transition-colors ${n?"cursor-pointer rounded-md text-sm":"rounded-lg text-xs"} ${r===u.id?n?"bg-secondary text-secondary-foreground":"bg-primary/10 text-primary":n?"hover:bg-muted/50":"hover:bg-muted"}`,onClick:()=>s(u.id),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),s(u.id))},children:[c.jsx(mh,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:n?"truncate text-xs font-medium":"truncate font-medium",children:u.name}),c.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-1",children:[c.jsx("span",{className:"text-2xs text-muted-foreground",children:u.defaultBranch}),u.source==="shared"&&c.jsx(rn,{variant:"outline",className:"h-4 shrink-0 px-1 py-0 text-2xs",children:"Shared"})]}),c.jsx(P4,{runtime:f,className:"mt-1"})]}),c.jsxs("div",{className:"mt-0.5 flex shrink-0 flex-col gap-0.5",children:[c.jsx("button",{type:"button",title:"Strategy",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-primary",onClick:p=>{p.stopPropagation(),l(u)},children:c.jsx(dK,{className:"h-3 w-3"})}),c.jsx("button",{type:"button",title:"Plans",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-primary",onClick:p=>{p.stopPropagation(),d(u)},children:c.jsx(cK,{className:"h-3 w-3"})}),u.source==="local"&&c.jsx("button",{type:"button",title:"Remove",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-destructive",onClick:p=>{p.stopPropagation(),a(u.id)},children:c.jsx(gh,{className:"h-3 w-3"})})]})]},u.id)})})]})}function f1t(e){const r=Math.floor(e/1e3);if(r<60)return`${r}s`;const n=Math.floor(r/60),i=r%60;if(n<60)return`${n}m ${i.toString().padStart(2,"0")}s`;const s=Math.floor(n/60),o=n%60;return`${s}h ${o.toString().padStart(2,"0")}m`}function p1t({createdAt:e,completedAt:r,status:n}){const[i,s]=y.useState(Date.now),o=n==="running"||n==="queued";y.useEffect(()=>{if(!o)return;const u=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(u)},[o]);const a=new Date(e).getTime(),l=o?i:r?new Date(r).getTime():i,d=Math.max(0,l-a);return c.jsxs("span",{className:"shrink-0 tabular-nums",title:o?"Elapsed time":"Total duration",children:[o&&c.jsx(Qye,{className:"inline h-3 w-3 mr-0.5 -mt-px"}),f1t(d)]})}function m1t({thread:e,repo:r,repoName:n,prState:i,ghAvailable:s,onOpen:o,onStop:a,onDelete:l}){const d=Tv(),[u,f]=y.useState(!1),[p,g]=y.useState(!1),v=qrt({hasRepository:r!=null,threadKind:e.kind,threadStatus:e.status,threadBranch:e.branch,prUrl:e.prUrl,prState:i}),b=iL(e),_=e.kind==="delegation"||!d;return c.jsxs("div",{role:"button",tabIndex:0,className:`group relative grid w-full grid-cols-[minmax(0,1fr)_auto] items-center gap-2.5 border-b px-2.5 py-2.5 text-sm transition-colors hover:bg-muted/40 sm:gap-5 sm:px-3 sm:py-3.5 ${e.kind==="delegation"?"bg-amber-500/[0.04]":""}`,onClick:o,onKeyDown:S=>{S.target===S.currentTarget&&(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),o())},children:[c.jsxs("div",{className:"flex min-w-0 flex-col gap-0.5",children:[c.jsxs("div",{className:"flex w-full min-w-0 items-center gap-1.5",children:[c.jsx(sL,{status:e.status}),c.jsx("div",{className:"flex-1 truncate text-sm font-medium sm:text-sm",children:M4(e.title)?c.jsx(h9,{className:"h-3.5 w-28"}):c.jsx("span",{children:e.title.replace(/^\[.*?\]\s*/,"")})}),c.jsx(p1t,{createdAt:e.createdAt,completedAt:e.completedAt,status:e.status})]}),c.jsxs("div",{className:"flex min-w-0 flex-nowrap items-center gap-x-1.5 overflow-hidden pl-[calc(0.75rem+6px)] text-xs leading-tight text-muted-foreground sm:gap-x-1 sm:text-xs",children:[c.jsx("span",{className:"min-w-0 truncate",children:n}),_&&c.jsx(f9,{kind:e.kind}),e.kind==="delegation"&&c.jsx("span",{className:"hidden shrink-0 text-amber-700 dark:text-amber-300 sm:inline",children:"Helper thread"}),e.branch&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsx("span",{className:"hidden max-w-full truncate font-mono sm:inline",children:e.branch})]}),e.providerId&&e.providerId!=="jait"&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsx("span",{className:"hidden shrink-0 whitespace-nowrap sm:inline",children:e.providerId})]}),e.executionNodeName&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsxs("span",{className:"hidden max-w-full items-center gap-1 truncate text-blue-500 dark:text-blue-400 sm:inline-flex",children:[c.jsx(Ra,{className:"inline h-3 w-3 mr-0.5 -mt-px"}),e.executionNodeName]})]}),i&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsx(wde,{prState:i})]})]})]}),c.jsxs("div",{className:"flex items-center gap-0.5 sm:gap-1",children:[v&&r&&c.jsx("div",{className:"shrink-0",onClick:S=>S.stopPropagation(),onMouseDown:S=>S.stopPropagation(),onKeyDown:S=>S.stopPropagation(),children:c.jsx(dP,{threadId:e.id,cwd:e.workingDirectory??r.localPath,branch:e.branch,baseBranch:e.prBaseBranch??r.defaultBranch,threadTitle:e.title,threadStatus:e.status,threadKind:e.kind,prUrl:e.prUrl,prState:i,ghAvailable:s,showStatusBadge:!1})}),b&&c.jsx(_e,{variant:"ghost",size:"icon",className:"h-6 w-6 rounded-lg sm:h-7 sm:w-7",onClick:S=>{S.stopPropagation(),a()},title:e.kind==="delegation"?"End helper thread":"Stop thread",children:c.jsx(U1,{className:"h-3 w-3"})}),c.jsxs(G9,{open:p,onOpenChange:g,children:[c.jsx(K9,{asChild:!0,children:c.jsx(_e,{variant:"ghost",size:"icon",className:"h-8 w-8 rounded-lg opacity-100 transition-opacity",disabled:u,onClick:S=>S.stopPropagation(),title:"Delete thread",children:u?c.jsx(sr,{className:"h-4 w-4 animate-spin"}):c.jsx(gh,{className:"h-4 w-4"})})}),c.jsx(Y9,{align:"end",className:"w-56 p-2",onClick:S=>S.stopPropagation(),onMouseDown:S=>S.stopPropagation(),onKeyDown:S=>S.stopPropagation(),children:c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-xs font-medium",children:"Delete this thread?"}),c.jsx("div",{className:"text-2xs leading-snug text-muted-foreground",children:"This removes the thread and its local worktree cleanup will run in the background."}),c.jsxs("div",{className:"flex justify-end gap-1.5",children:[c.jsx(_e,{variant:"ghost",size:"sm",className:"h-7 rounded-md px-2 text-xs",disabled:u,onClick:()=>g(!1),children:"Cancel"}),c.jsx(_e,{variant:"destructive",size:"sm",className:"h-7 rounded-md px-2 text-xs",disabled:u,onClick:()=>{f(!0),l().finally(()=>{f(!1),g(!1)})},children:"Delete"})]})]})})]})]})]})}function Gq({threads:e,getRepositoryForThread:r,threadPrStates:n,ghAvailable:i,onOpenThread:s,onStopThread:o}){const[a,l]=y.useState(!1);return e.length===0?null:c.jsxs(hu,{open:a,onOpenChange:l,children:[c.jsx(fu,{asChild:!0,children:c.jsxs(_e,{variant:"outline",size:"sm",className:"mr-1 h-8 gap-1.5 rounded-lg px-2 text-xs sm:mr-0",title:`${e.length} active ${e.length===1?"thread":"threads"}`,children:[c.jsx(sr,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),c.jsx("span",{className:"hidden sm:inline",children:"Active"}),c.jsx(rn,{variant:"secondary",className:"h-4 rounded-md px-1 text-2xs",children:e.length})]})}),c.jsxs(Sc,{align:"end",className:"w-[min(34rem,calc(100vw-1rem))] p-0",children:[c.jsx("div",{className:"flex items-center justify-between border-b px-3 py-2",children:c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(sr,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),c.jsxs("span",{className:"text-sm font-medium",children:[e.length," active ",e.length===1?"thread":"threads"]})]})}),c.jsx("div",{className:"max-h-[min(28rem,70vh)] overflow-y-auto",children:e.map(d=>{const u=r(d),f=(u==null?void 0:u.name)??y6(d)??"Unknown repo",p=_de(d,d.id in n?n[d.id]:void 0);return c.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] gap-3 border-b px-3 py-3 last:border-b-0",children:[c.jsxs("button",{type:"button",className:"min-w-0 text-left transition-colors hover:text-foreground",onClick:()=>{l(!1),s(d.id)},children:[c.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[c.jsx(sL,{status:d.status}),c.jsx("span",{className:"truncate text-sm font-medium",children:M4(d.title)?"Generating title...":d.title.replace(/^\[.*?\]\s*/,"")})]}),c.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1 text-xs text-muted-foreground",children:[c.jsx("span",{className:"truncate",children:f}),d.branch&&c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 font-mono text-2xs",children:d.branch}),d.providerId&&d.providerId!=="jait"&&c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:d.providerId}),d.executionNodeName&&c.jsxs(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs text-blue-500 dark:text-blue-400 border-blue-200 dark:border-blue-800",children:[c.jsx(Ra,{className:"inline h-2.5 w-2.5 mr-0.5"}),d.executionNodeName]}),c.jsx(wde,{prState:p})]})]}),c.jsxs("div",{className:"flex items-center gap-1 self-start",children:[u&&c.jsx("div",{onClick:g=>g.stopPropagation(),onMouseDown:g=>g.stopPropagation(),children:c.jsx(dP,{threadId:d.id,cwd:d.workingDirectory??u.localPath,branch:d.branch,baseBranch:d.prBaseBranch??u.defaultBranch,threadTitle:d.title,threadStatus:d.status,threadKind:d.kind,prUrl:d.prUrl,prState:p,ghAvailable:i,showStatusBadge:!1})}),iL(d)&&c.jsx(_e,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg",onClick:g=>{g.stopPropagation(),Promise.resolve(o(d.id))},title:"Stop thread",children:c.jsx(U1,{className:"h-3 w-3"})})]})]},d.id)})})]})]})}function g1t(){var Lp,mi,c3,u3,Mx,$p,qu,Px,Lx;const e=y.useRef(""),[r,n]=y.useState(0),i=y.useCallback(D=>{const Q=typeof D=="function"?D(e.current):D;e.current=Q,n(he=>he+1)},[]),s=y.useCallback(D=>{e.current=D},[]),[o,a]=y.useState(void 0),[l,d]=y.useState(!1),[u,f]=y.useState(null),[p,g]=y.useState(()=>{const D=["chat","jobs","network","settings"],Q=window.location.pathname.replace(/^\/+/,"").split("/")[0];return D.includes(Q)?Q:"chat"}),[v,b]=y.useState("system"),[_,S]=y.useState(()=>localStorage.getItem("showSessionsSidebar")==="true"),[w,C]=y.useState(!1),[j,T]=y.useState(!1),[A,E]=y.useState(null),[R,P]=y.useState(null),B=y.useRef(null),[$,W]=y.useState(!1),[I,K]=y.useState(!1),M=y.useRef(!1),[z,L]=y.useState(!1),F=y.useRef(null),V=y.useRef(null),Y=y.useCallback(D=>{var Q;D&&((Q=V.current)==null||Q.call(V))},[]),H=y.useRef(!1),[U,J]=y.useState(null),[q,ee]=y.useState(null),[re,de]=y.useState({open:!1,target:null,displayState:"hidden",displayTarget:null}),[fe,te]=y.useState(!1),[se,ge]=y.useState(!0),[le,Qe]=y.useState(!0),[Ze,Ie]=y.useState("files"),[ne,Te]=y.useState(null),Ce=y.useRef(ne);Ce.current=ne;const[we,Be]=y.useState(()=>localStorage.getItem("showDebugPanel")==="true"),[wt,gt]=y.useState(!1),[Mt,Zt]=y.useState(null),[Rt,or]=y.useState(null),[Ee,$e]=y.useState(!1),[Se,ze]=y.useState(null),it=y.useRef(null),pt=y.useRef(null),[st,ot]=y.useState(240),[Dt,Xe]=y.useState(!1),tt=y.useRef(240),[Ot,nt]=y.useState(480),[Xt,Je]=y.useState(()=>{if(typeof window>"u")return null;const D=window.localStorage.getItem("jait:chatPanelWidth"),Q=D?Number.parseInt(D,10):Number.NaN;return Number.isFinite(Q)?Q:null}),[Ge,At]=y.useState({x:-1,y:-1}),[Re,ye]=y.useState({w:420,h:320}),kt=y.useRef(null),lt=y.useRef(null),mt=y.useRef(null),hr=y.useRef(null),[Tr,hn]=y.useState(!1),[Ur,$n]=y.useState("agent"),[sn,wn]=y.useState("normal"),[It,kr]=y.useState("agent"),[Pt,Qn]=y.useState("jait"),[ct,cr]=y.useState("full-access"),[Sn,Er]=y.useState(()=>Vq("jait")),Ut=Sn[Pt]??null,[nr,$o]=y.useState("developer"),tr=y.useRef(nr),[be,xt]=y.useState(""),[Jt,Bt]=y.useState(""),[je,Fe]=y.useState(""),[jt,fr]=y.useState(""),[ir,Br]=y.useState(""),[er,Kr]=y.useState("login"),[St,qt]=y.useState(!1),[Qt,mn]=y.useState(!1),[Pe,Dn]=y.useState(!1),[Us,Rc]=y.useState(!1),[ho,Do]=y.useState(null),[za,cs]=y.useState(()=>rv()??""),Mi=!!window.jaitDesktop||!!window.Capacitor,Lt=!!window.jaitDesktop,Wn=!!window.Capacitor,zi=Lt?"electron":Wn?"capacitor":"web",{resolvedTheme:ia}=$P(v),Nd=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedWorkspaceTab"):null,fo=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedTerminal"):null,[vs,wu]=y.useState(null),Mc=y.useRef(!1),po=y.useCallback(async()=>{try{const D=await fetch(`${Pn()}/health`,{signal:AbortSignal.timeout(5e3)});wu(D.ok)}catch{wu(!1)}},[]);y.useEffect(()=>{Mc.current||(Mc.current=!0,po())},[po]);const[qn,Ed]=y.useState(null),[Pc,Nn]=y.useState(!1),[pi,ts]=y.useState(!1),[sa,us]=y.useState(!1),mo=y.useRef(null),Fa=y.useRef(!1),oa=y.useRef(async()=>{}),[Yl,xl]=y.useState(null),[Vs,xs]=y.useState(!1),[Io,Fi]=y.useState(()=>Mi&&!pA()?"url":"auth"),[Su,In]=y.useState(!1),[qs,Ms]=y.useState(null),[Ps,Dh]=y.useState([]),[Ct,bs]=y.useState(null),[aa,Lc]=y.useState([]),[Zm,ku]=y.useState(!1),[Cu,ju]=y.useState("workspace"),[Tu,bl]=y.useState(null),[ry,ny]=y.useState([]),Ih=y.useRef(!1),rs=y.useRef(null),go=y.useRef(null),Tt=Tv();y.useEffect(()=>{M.current=$},[$]);const iy=y.useRef(!0);y.useEffect(()=>{if(iy.current){const Q=p==="chat"?"/":`/${p}`;window.location.pathname!==Q&&window.history.replaceState(null,"",Q+window.location.search),iy.current=!1;return}const D=p==="chat"?"/":`/${p}`;window.location.pathname!==D&&window.history.pushState(null,"",D)},[p]),y.useEffect(()=>{const D=["chat","jobs","network","settings"],Q=()=>{const he=window.location.pathname.replace(/^\/+/,"").split("/")[0],ue=D.includes(he)?he:"chat";g(ue)};return window.addEventListener("popstate",Q),()=>window.removeEventListener("popstate",Q)},[]),y.useEffect(()=>{const D=new URLSearchParams(window.location.search).get("jait");if(!D)return;try{const he=new URL(D),ue=he.hostname||he.pathname.replace(/^\/+/,"");["chat","jobs","network","settings"].includes(ue)&&g(ue)}catch{}const Q=new URL(window.location.href);Q.searchParams.delete("jait"),window.history.replaceState(null,"",Q.toString())},[]),y.useEffect(()=>{const D=window.launchQueue;D&&D.setConsumer(async Q=>{if(Q.files.length)for(const he of Q.files)try{const ue=await he.getFile(),me=ue.type||"application/octet-stream",Ae=new FileReader;Ae.onload=()=>{var Vt,Gt;const ht=Ae.result.split(",")[1]??"",bt=me.startsWith("image/")?Ae.result:void 0;(Vt=go.current)==null||Vt.addAttachment({name:ue.name,mimeType:me,data:ht,preview:bt}),(Gt=go.current)==null||Gt.focus()},ue.type.startsWith("image/")?Ae.readAsDataURL(ue):Ae.readAsDataURL(new Blob([await ue.arrayBuffer()],{type:me}))}catch{}})},[]);const[Bh,la]=y.useState(0),Gs=!Tt&&$,Jm=Tt&&$,_s=y.useCallback(()=>{if(Tt){const D=__("editor");ge(D.tree),Qe(D.editor);return}Qe(!0)},[Tt]),$c=y.useCallback(D=>{const Q=(D==null?void 0:D.trim())||(ne==null?void 0:ne.workspaceRoot)||null;Q&&(Te(he=>(he==null?void 0:he.workspaceRoot)===Q?he:{surfaceId:(he==null?void 0:he.surfaceId)??"",workspaceRoot:Q,nodeId:he==null?void 0:he.nodeId}),$o("developer"),$||(M.current=!0,W(!0)),_s(),ze({key:Date.now()}))},[ne==null?void 0:ne.workspaceRoot,$,_s]),Qm=y.useCallback(()=>{var D;(D=rs.current)==null||D.closePreviewTarget()},[]),Bo=y.useCallback((D,Q)=>{const he=(D==null?void 0:D.trim())||null,ue={open:!0,target:he,workspaceRoot:(Q==null?void 0:Q.trim())||(ne==null?void 0:ne.workspaceRoot)||null,displayState:he?"connected":"blank",displayTarget:he};return $o("developer"),J(he),de(ue),$||(M.current=!0,W(!0)),_s(),ee({target:he,key:Date.now()}),!0},[ne==null?void 0:ne.workspaceRoot,$,_s]),ca=y.useCallback(()=>({width:window.innerWidth,height:window.innerHeight}),[]),sy=y.useCallback((D=Re)=>Yyt({size:D,viewport:ca()}),[Re,ca]),oy=y.useCallback(D=>{var Gt,gr;if(D.pointerType!=="touch"&&D.button!==0)return;const Q=D.target;if(Q!=null&&Q.closest('button, [role="button"], a, input, textarea, select'))return;D.preventDefault();const he=D.currentTarget,ue=ca(),me=Yk({size:Re,viewport:ue}),Ae=Ge.x<0||Ge.y<0?sy(me):b_({position:Ge,size:me,viewport:ue});(me.w!==Re.w||me.h!==Re.h)&&ye(me),(Ae.x!==Ge.x||Ae.y!==Ge.y)&&At(Ae),kt.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,posX:Ae.x,posY:Ae.y};const ht=Zr=>{!kt.current||kt.current.pointerId!==Zr.pointerId||At(b_({position:{x:kt.current.posX+Zr.clientX-kt.current.startX,y:kt.current.posY+Zr.clientY-kt.current.startY},size:me,viewport:ca()}))},bt=()=>{var Zr,Ts;(Zr=he.hasPointerCapture)!=null&&Zr.call(he,D.pointerId)&&((Ts=he.releasePointerCapture)==null||Ts.call(he,D.pointerId)),document.removeEventListener("pointermove",ht),document.removeEventListener("pointerup",Vt),document.removeEventListener("pointercancel",Vt),document.body.style.cursor="",document.body.style.userSelect="",mt.current=null},Vt=Zr=>{!kt.current||kt.current.pointerId!==Zr.pointerId||(kt.current=null,bt())};D.pointerType!=="touch"&&(document.body.style.cursor="move"),document.body.style.userSelect="none",(Gt=mt.current)==null||Gt.call(mt),mt.current=bt,(gr=he.setPointerCapture)==null||gr.call(he,D.pointerId),document.addEventListener("pointermove",ht),document.addEventListener("pointerup",Vt),document.addEventListener("pointercancel",Vt)},[Ge,Re,sy,ca]),eg=y.useCallback(D=>{var bt,Vt;if(D.pointerType!=="touch"&&D.button!==0)return;D.preventDefault(),D.stopPropagation();const Q=D.currentTarget,he=ca(),ue=Yk({size:Re,viewport:he});(ue.w!==Re.w||ue.h!==Re.h)&&ye(ue),lt.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,w:ue.w,h:ue.h};const me=Gt=>{if(!lt.current||lt.current.pointerId!==Gt.pointerId)return;const gr=Yk({size:{w:lt.current.w+Gt.clientX-lt.current.startX,h:lt.current.h+Gt.clientY-lt.current.startY},viewport:ca()});ye(gr),At(Zr=>Zr.x<0||Zr.y<0?Zr:b_({position:Zr,size:gr,viewport:ca()}))},Ae=()=>{var Gt,gr;(Gt=Q.hasPointerCapture)!=null&&Gt.call(Q,D.pointerId)&&((gr=Q.releasePointerCapture)==null||gr.call(Q,D.pointerId)),document.removeEventListener("pointermove",me),document.removeEventListener("pointerup",ht),document.removeEventListener("pointercancel",ht),document.body.style.cursor="",document.body.style.userSelect="",hr.current=null},ht=Gt=>{!lt.current||lt.current.pointerId!==Gt.pointerId||(lt.current=null,Ae())};D.pointerType!=="touch"&&(document.body.style.cursor="nwse-resize"),document.body.style.userSelect="none",(bt=hr.current)==null||bt.call(hr),hr.current=Ae,(Vt=Q.setPointerCapture)==null||Vt.call(Q,D.pointerId),document.addEventListener("pointermove",me),document.addEventListener("pointerup",ht),document.addEventListener("pointercancel",ht)},[Re,ca]);y.useEffect(()=>{var D,Q;fe||(kt.current=null,lt.current=null,(D=mt.current)==null||D.call(mt),(Q=hr.current)==null||Q.call(hr),document.body.style.cursor="",document.body.style.userSelect="")},[fe]),y.useEffect(()=>()=>{var D,Q;(D=mt.current)==null||D.call(mt),(Q=hr.current)==null||Q.call(hr),document.body.style.cursor="",document.body.style.userSelect=""},[]),y.useEffect(()=>{if(!fe)return;const D=()=>{const Q=ca();let he;ye(ue=>{const me=Yk({size:ue,viewport:Q});return he=me,me.w===ue.w&&me.h===ue.h?ue:me}),At(ue=>{if(ue.x<0&&ue.y<0)return ue;const me=b_({position:ue,size:he,viewport:Q});return me.x===ue.x&&me.y===ue.y?ue:me})};return D(),window.addEventListener("resize",D),()=>window.removeEventListener("resize",D)},[fe,ca]);const{user:zo,token:dt,settings:Hi,isLoading:Fo,isAuthenticated:ei,login:tg,register:ay,logout:rp,bindSession:np,updateSettings:Ho,clearSessionArchive:Ad}=EQ(),Od=y.useCallback(async()=>{var D;if(dt){Nn(!0);try{if(Lt){const Q=window.jaitDesktop,[he,ue,me]=await Promise.all([(D=Q.getInfo)==null?void 0:D.call(Q),Q.checkForUpdate(),fetch(`${Xi}/health`).then(ht=>ht.ok?ht.json():null).catch(()=>null)]),Ae=(me==null?void 0:me.version)??"";Ed({currentVersion:Ae,latestVersion:ue.version??(he==null?void 0:he.appVersion)??"",hasUpdate:ue.updateAvailable})}else{const Q=await fetch(`${Xi}/api/update/check`,{headers:{Authorization:`Bearer ${dt}`}});Q.ok&&Ed(await Q.json())}}catch{}Nn(!1)}},[dt,Lt]),Dc=y.useCallback(async()=>{if(!(!dt||!(qn!=null&&qn.hasUpdate))){ts(!0);try{const D=await fetch(`${Xi}/api/update/apply`,{method:"POST",headers:{Authorization:`Bearer ${dt}`,"Content-Type":"application/json"},body:JSON.stringify({version:qn.latestVersion})});if(D.ok)mo.current=qn.latestVersion,Fa.current=!1,us(!0),fi.success(`Updated to v${qn.latestVersion}. Gateway is restarting...`);else{const Q=await D.json().catch(()=>({}));fi.error(Wq(Q.error,"Update failed"))}}catch{fi.error("Update request failed")}ts(!1)}},[dt,qn]),Rd=y.useCallback(()=>{const D=new URL(window.location.href);D.searchParams.set("_jaitUpdate",Date.now().toString()),(async()=>{try{if("caches"in window){const Q=await caches.keys();await Promise.all(Q.map(he=>caches.delete(he)))}}catch{}window.location.replace(D.toString())})()},[]),zh=y.useCallback(({connected:D,reconnected:Q})=>{if(!D){mo.current&&(Fa.current=!0);return}if(oa.current(),Q&&mo.current&&Fa.current){const he=mo.current;if(mo.current=null,Fa.current=!1,us(!1),zi==="web"){fi.success(`Gateway restarted on v${he}. Refreshing...`),Rd();return}fi.success(`Gateway restarted on v${he}.`),Od()}},[zi,Od,Rd]);y.useEffect(()=>{dt&&Od()},[dt,Od]);const Fh=y.useCallback(()=>d(!0),[]);y.useEffect(()=>{dt&&fetch(`${Xi}/api/filesystem/nodes`,{headers:dt?{Authorization:`Bearer ${dt}`}:{}}).then(D=>D.ok?D.json():null).then(D=>{D!=null&&D.nodes&&ny(D.nodes)}).catch(()=>{})},[dt]);const{workspaces:yo,personalSessions:Lr,archivedSessionsByWorkspace:Hh,activeWorkspaceId:ai,activeSessionId:et,loading:_l,createSession:ua,createWorkspace:Wo,updateWorkspace:Xl,switchWorkspace:rg,switchSession:vo,fetchArchivedSessions:ip,removeWorkspace:Nu,clearArchivedWorkspaces:ng,fetchArchivedWorkspaces:Wh,restoreWorkspace:Wi,renameSession:ig,fetchWorkspaces:Uh,hasMoreWorkspaces:ly,showMoreWorkspaces:sp,showFewerWorkspaces:op,workspaceListLimit:cy}=Qft(dt,Fh);y.useEffect(()=>{H.current=!1},[et]);const on=y.useMemo(()=>yo.find(D=>D.id===ai)??null,[yo,ai]),Ks=y.useRef(dt);Ks.current=dt;const Uo=y.useRef(Fo);Uo.current=Fo;const Md=y.useRef(_l);Md.current=_l;const ap=y.useRef(yo);ap.current=yo;const wl=y.useRef(et);wl.current=et;const Pd=y.useRef(on);Pd.current=on;const da=y.useMemo(()=>(on==null?void 0:on.sessions.find(D=>D.id===et))??Lr.find(D=>D.id===et)??null,[et,on,Lr]),lp=y.useMemo(()=>{if(!on)return Lr;const D=on.sessions,Q=Hh[on.id]??[],he=new Set;return[...D,...Q].filter(ue=>he.has(ue.id)?!1:(he.add(ue.id),!0)).sort((ue,me)=>new Date(me.lastActiveAt).getTime()-new Date(ue.lastActiveAt).getTime())},[on,Hh,Lr]),ha=y.useCallback(async()=>{const D=Date.now()+1500;for(;Date.now()<D;){if(!Uo.current&&!Md.current)return;await new Promise(Q=>window.setTimeout(Q,50))}},[]),sg=y.useCallback(D=>{bl(D),ku(!0)},[]),Ic=wv(),Ld=y.useCallback(async D=>{const Q=yo.find(me=>me.id===D);if(!await Ic({title:"Archive workspace",description:`Are you sure you want to archive "${(Q==null?void 0:Q.title)||(Q==null?void 0:Q.rootPath)||"this workspace"}"? You can clear archived workspaces later from Settings.`,confirmLabel:"Archive",variant:"destructive"}))return;if(await Nu(D)){fi.success("Workspace archived.");return}fi.error("Failed to archive workspace.")},[Ic,Nu,yo]),{messages:fa,isLoading:Ti,isLoadingHistory:ws,remainingPrompts:Zl,error:Sl,hitMaxRounds:kl,pendingPlan:cp,todoList:Ha,changedFiles:ds,messageQueue:Ys,completionCount:$d,contextUsage:Vh,sessionInfo:Jl,sendMessage:Bc,restartFromMessage:up,cancelRequest:pa,clearMessages:Eu,continueChat:Ss,executePlan:Au,rejectPlan:qh,enqueueMessage:Wa,dequeueMessage:Ql,updateQueueItem:dp,reorderQueueItem:Cl,setMessageQueueState:zc,acceptFile:ec,rejectFile:Ou,acceptAllFiles:uy,rejectAllFiles:xo,setTodoList:jl,addChangedFile:ks,setChangedFiles:tc,setOnChangedFilesSync:Dd,refreshMessages:rc}=Zft(et,dt,Fh,(ne==null?void 0:ne.surfaceId)??null),og=y.useMemo(()=>fa.map(D=>D.content),[fa]),[Xs,Vo]=y.useState({}),[Fc,hs]=y.useState(0),[Tl,Ua]=y.useState(0),Ls=y.useRef(new Set),{terminals:qo,activeTerminalId:Bn,setActiveTerminalId:ns,createTerminal:bo,killTerminal:Un,refresh:_o}=_ft(dt),Va=wft(dt),Gh=y.useRef(null);y.useEffect(()=>{if(w&&Bn){const D=setTimeout(()=>{var Q;return(Q=Gh.current)==null?void 0:Q.focus()},50);return()=>clearTimeout(D)}},[w,Bn]);const{provider:ag,model:lg}=Jft(),cg=Ift({token:dt}),xe=amt();oa.current=xe.refresh;const kn=y.useMemo(()=>snt(xe.activities),[xe.activities]),Yr=y.useMemo(()=>[...xe.threads].sort((D,Q)=>new Date(Q.updatedAt).getTime()-new Date(D.updatedAt).getTime()),[xe.threads]),$s=y.useMemo(()=>xe.selectedRepo?xe.getRuntimeInfoForRepository(xe.selectedRepo):null,[xe.getRuntimeInfoForRepository,xe.selectedRepo]),li=y.useMemo(()=>xe.selectedThread?xe.getRepositoryForThread(xe.selectedThread):null,[xe.getRepositoryForThread,xe.selectedThread]),Hc=y.useMemo(()=>li?xe.getRuntimeInfoForRepository(li):null,[xe.getRuntimeInfoForRepository,li]),ma=y.useMemo(()=>Yr.filter(D=>D.status==="running"),[Yr]),Ru=Tt&&nr==="manager"&&!!xe.selectedThread,Kh=y.useMemo(()=>xe.selectedThread?Xs[xe.selectedThread.id]??[]:[],[xe.selectedThread,Xs]),nc=xe.selectedRepo!=null,ic=$s!=null&&!$s.online&&!$s.loading,hp=xe.creating||!nc||ic,Id=xe.selectedRepo?ic?"Repository is offline...":xe.selectedThread?"Send a follow-up to the selected thread...":"Describe what you want to do...":"Select a repository to start a thread...",Yh=It==="thread"?Id:"Ask anything...";y.useEffect(()=>{var he,ue,me;const D=window.jaitDesktop;if(!D)return;(he=D.getInfo)==null||he.call(D).then(Ae=>xl(Ae.platform)),(ue=D.windowIsMaximized)==null||ue.call(D).then(Ae=>xs(Ae));const Q=(me=D.onMaximizedChange)==null?void 0:me.call(D,(Ae,ht)=>xs(ht));return()=>{Q==null||Q()}},[]);const qa=y.useRef(!1),ga=y.useRef(new Set),Go=y.useRef(null),[Nl,fp]=y.useState(0),sc=y.useCallback(D=>{ga.current.add(D)},[]),cn=y.useCallback(D=>ga.current.has(D)?(ga.current.delete(D),!0):!1,[]);y.useEffect(()=>{qa.current=!1},[et]),y.useEffect(()=>{a(void 0)},[et]);const Mu=y.useRef(null);y.useEffect(()=>{Mu.current=null},[et]);const Wc=y.useCallback(()=>{rc(),hs(D=>D+1)},[rc]),Pi=y.useRef(!1),G=y.useRef(0),oe=y.useRef(et),ie=y.useRef(!1),pe=y.useRef({}),ce=y.useRef({}),Ne=y.useRef({}),Le=y.useRef(null),Ve=y.useRef(!1);y.useEffect(()=>{Ys.length>0&&(Pi.current=!0)},[Ys.length]);const Nt=$d+Fc,Ht=y.useRef($d),ar=y.useRef(Fc);y.useEffect(()=>{$d!==Ht.current&&(Ht.current=$d,Ua(D=>D+1))},[$d]),y.useEffect(()=>{if(Fc===ar.current)return;const D=Fc>ar.current;ar.current=Fc,D&&Ua(Q=>Q+1)},[Fc]),y.useEffect(()=>{oe.current!==et&&(oe.current=et,hs(0),ar.current=0,Pi.current=!1,ie.current=!1,G.current=Nt)},[et,Nt]),y.useEffect(()=>{Ti&&(ie.current=!1)},[Ti]),y.useEffect(()=>{if(Nt<=G.current||Ti||ws||Ys.length>0)return;const D=Pi.current;if(G.current=Nt,Pi.current=!1,ie.current){ie.current=!1;return}U7({id:`chat-complete:${et??"global"}:${Nt}`,title:D?"Queued chat finished":"Chat finished",body:D?"All queued chat messages finished generating.":"Agent response finished generating.",level:"success",includeToast:!1})},[et,Nt,Ti,ws,Ys.length]);const[rr,Vr]=y.useState(!1),xn=xmt({authToken:dt,onError:D=>{console.warn("[voice] error:",D)},onDisconnected:()=>{Vr(!1)}});Le.current=xn,Ve.current=rr,y.useEffect(()=>{var ue;const D=async me=>{var Ae,ht;try{const Vt=[...await en.getActivities(me.id,40)].reverse().find(Ar=>{if(Ar.kind!=="message")return!1;const Mn=Ar.payload??{};return Mn.role==="assistant"&&(typeof Mn.content=="string"||typeof Ar.summary=="string")}),Gt=(Vt==null?void 0:Vt.payload)??{},gr=typeof Gt.content=="string"?Gt.content:(Vt==null?void 0:Vt.summary)??"",Zr=i1t(gr),Ts=Zr?`${me.title} finished. ${Zr}`:me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(Ae=Le.current)==null||Ae.announce(Ts)}catch{const bt=me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(ht=Le.current)==null||ht.announce(bt)}},Q={},he=new Set;for(const me of xe.threads){he.add(me.id),Q[me.id]=me.status;const Ae=((ue=Xs[me.id])==null?void 0:ue.length)??0;if(Ae>0&&(pe.current[me.id]=!0),(Ne.current[me.id]==="running"&&me.status!=="running"||ce.current[me.id])&&(ce.current[me.id]=me),ce.current[me.id]&&Ae===0){const bt=ce.current[me.id],Vt=pe.current[me.id]===!0;if(delete ce.current[me.id],delete pe.current[me.id],bt.status==="interrupted")continue;Ua(Zr=>Zr+1);const Gt=Vt?"Queued thread finished":"Thread finished",gr=bt.status==="completed"?`"${bt.title}" completed.`:`"${bt.title}" ended with status ${bt.status}.`;U7({id:`thread-complete:${me.id}:${bt.updatedAt}`,title:Gt,body:gr,level:bt.status==="completed"?"success":"warning",includeToast:!1}),Ve.current&&D(bt)}}for(const me of Object.keys(Ne.current))he.has(me)||(delete pe.current[me],delete ce.current[me]);Ne.current=Q},[xe.threads,Xs]);const Ga=y.useCallback(()=>{ie.current=!0,pa()},[pa]),[Pu,oc]=qpt(ai,"workspace.ui",dt),Xh=y.useRef(null);Xh.current=Pu;const Ka=y.useCallback((D,Q,he)=>{const me={...Xh.current??{panel:null,tabs:null,layout:null,terminal:null,preview:null},[D]:Q};Xh.current=me,oc(me,he)},[oc]),Cs=y.useCallback((D,Q)=>{Ka("panel",D,Q)},[Ka]),ac=y.useCallback((D,Q)=>{Ka("terminal",D,Q)},[Ka]),lc=y.useCallback(D=>{Ka("preview",D)},[Ka]),ug=!Pu&&!!ai&&!!dt,Zh=y.useCallback((D,Q)=>{Ka("layout",D,Q)},[Ka]),Zv=y.useCallback(D=>{Ka("tabs",D)},[Ka]),wo=(Pu==null?void 0:Pu.preview)??null,[,ya]=Xu(et,"screen-share.panel",dt),[,Bd,dy]=Xu(et,"chat.mode",dt),[,Jv,Jh]=Xu(et,"chat.responseStyle",dt),[,pp,mp]=Xu(et,"chat.providerRuntimeMode",dt),[,gp,yp]=Xu(et,"chat.cliModels",dt),[,Qv,Lu]=Xu(et,"chat.view",dt),[,ex]=Xu(et,"queued_messages",dt),[,$u]=Xu(et,"todo_list",dt),[,hy]=Xu(et,"queued_thread_messages",dt),[fy,Du,cc]=Xu(et,"manager.selectedRepo",dt),[vp,xp]=y.useState(null),[bp,Qh]=y.useState(!1),[zd,ef]=y.useState(!1),dg=y.useMemo(()=>q7(fy),[fy]);y.useEffect(()=>{xp(null),Qh(!1)},[ai]),y.useEffect(()=>{uc.current=!1,ef(!1)},[et]);const uc=y.useRef(!1);y.useEffect(()=>{if(!et){uc.current=!1,ef(!1);return}if(cc)return;if(uc.current){zd||ef(!0);return}const D=dg;if(!D.repoId&&!D.localPath){uc.current=!0,ef(!0);return}const Q=nue(xe.repositories,D);if(!Q){if(xe.repositories.length===0)return;uc.current=!0,ef(!0);return}if(xe.selectedRepoId!==Q){xe.setSelectedRepoId(Q);return}uc.current=!0,ef(!0)},[et,xe.repositories,xe.selectedRepoId,xe.setSelectedRepoId,cc,zd,dg]);const _p=y.useRef(!1),hg=y.useRef(null);y.useEffect(()=>{_p.current=!1,hg.current=null},[et]),y.useEffect(()=>{if(!et||!dt||cc||!zd)return;const D=xe.selectedRepo?{repoId:xe.selectedRepo.id,localPath:xe.selectedRepo.localPath}:null,Q=JSON.stringify(D);if(_p.current){if(Q===hg.current)return}else if(_p.current=!0,hg.current=Q,Q===JSON.stringify(dg))return;hg.current=Q,Du(D)},[et,xe.selectedRepo,cc,zd,dg,Du,dt]),y.useEffect(()=>{ee(null)},[ai]),y.useEffect(()=>{Te(null)},[ai]);const[,py]=Xu(et,"changed_files",dt);y.useEffect(()=>{var me,Ae,ht;const D=Go.current;if(!D){on&&Qh(!0);return}if(!on||D.workspaceId!==ai)return;const{ui:Q}=D,he=Q.panel;if(he){const bt=((me=he.remotePath)==null?void 0:me.trim())||null,Vt=((Ae=on.rootPath)==null?void 0:Ae.trim())||null,Gt=Vt||bt;Gt&&(sc("workspace.panel"),Te({surfaceId:!!(bt&&Vt&&bt===Vt)?he.surfaceId??"":"",workspaceRoot:Gt,nodeId:on.nodeId??he.nodeId}),M.current=he.open===!0,W(he.open===!0))}Q.tabs&&xp(Q.tabs);const ue=Q.preview;if(ue){const bt=Hq(ue.target);bt&&J(bt),ue.open&&((ht=Q.panel)==null?void 0:ht.open)===!0&&bt&&Bo(bt,ue.workspaceRoot??null)}Go.current=null,Qh(!0)},[on,ai,Nl,Bo]);const fg=y.useRef(null);y.useEffect(()=>{if(!Jm){fg.current=null;return}const D=`${ai??"no-workspace"}:${(ne==null?void 0:ne.surfaceId)??(ne==null?void 0:ne.workspaceRoot)??"no-workspace"}`;if(fg.current===D||(fg.current=D,!se||!le))return;const Q=DC();ge(Q.tree),Qe(Q.editor)},[Jm,ai,ne==null?void 0:ne.surfaceId,ne==null?void 0:ne.workspaceRoot,se,le]);const Ya=y.useCallback((D,Q)=>{var he;switch(sc(D),D){case"workspace.panel":if(!Q){M.current=!1,W(!1);break}if(Q&&typeof Q=="object"&&!Array.isArray(Q)){const ue=Q,me=((he=ue.remotePath)==null?void 0:he.trim())||(ne==null?void 0:ne.workspaceRoot)||null;me&&Te({surfaceId:ue.surfaceId??(ne==null?void 0:ne.surfaceId)??"",workspaceRoot:me,nodeId:ue.nodeId??(ne==null?void 0:ne.nodeId)});const Ae=ue.open===!0;M.current=Ae,W(Ae)}break;case"workspace.layout":if(Q&&typeof Q=="object"&&!Array.isArray(Q)){const ue=zq({tree:Q.tree!==!1,editor:Q.editor!==!1},Tt);ge(ue.tree),Qe(ue.editor)}break;case"screen-share.panel":te(Q?Q.open!==!1:!1);break;case"terminal.panel":C(Q?Q.open!==!1:!1);break;case"footer.menu":K(Q?Q.open===!0:!1);break;case"chat.mode":(Q==="ask"||Q==="agent"||Q==="plan")&&$n(Q);break;case"chat.responseStyle":Uq(Q)?wn(Q):Q===null&&wn("normal");break;case"chat.providerRuntimeMode":Q==="supervised"||Q==="full-access"?cr(Q):Q===null&&cr("full-access");break;case"chat.cliModels":Q&&typeof Q=="object"&&!Array.isArray(Q)?Er(Q):Q===null&&Er({});break;case"chat.view":(Q==="developer"||Q==="manager")&&$o(Q);break;case"todo_list":jl(yde(Q));break;case"file_changed":{const ue=Q;ue!=null&&ue.path&&ks(ue.path,ue.name??ue.path.split("/").pop()??ue.path);break}case"changed_files":{Array.isArray(Q)?tc(Q):Q===null&&tc([]);break}case"queued_messages":{Array.isArray(Q)?zc(Q):Q===null&&zc([]);break}case"queued_thread_messages":{Q&&typeof Q=="object"&&!Array.isArray(Q)?Vo(Q):Q===null&&Vo({});break}}},[jl,ks,tc,zc,Bo,Qm,Tt,sc,ne==null?void 0:ne.nodeId,ne==null?void 0:ne.surfaceId,ne==null?void 0:ne.workspaceRoot]),El=y.useCallback(D=>{var Ts;qa.current=!0;for(const Ar of Object.keys(D))sc(Ar);const Q=D["screen-share.panel"];Q&&Q.open!==!1?te(!0):te(!1);const he=D["chat.mode"];(he==="ask"||he==="agent"||he==="plan")&&$n(he);const ue=D["chat.responseStyle"];Uq(ue)?wn(ue):wn("normal");const me=D["chat.providerRuntimeMode"];cr(me==="supervised"||me==="full-access"?me:"full-access");const Ae=D["chat.cliModels"];if(Ae&&typeof Ae=="object"&&!Array.isArray(Ae))Er(Ae);else{const Ar=Vq(Pt);Er(Ar)}const ht=D["chat.view"];(ht==="developer"||ht==="manager")&&$o(ht),jl(Ar=>Zyt(Ar,D.todo_list));const bt=D.changed_files;Array.isArray(bt)?tc(bt):tc([]);const Vt=D.queued_messages;Array.isArray(Vt)?zc(Vt):zc([]);const Gt=D.queued_thread_messages;Gt&&typeof Gt=="object"&&!Array.isArray(Gt)?Vo(Gt):Vo({});const gr=D["footer.menu"];gr&&typeof gr=="object"&&!Array.isArray(gr)?K(gr.open===!0):K(!1);const Zr=D._workspace;if(Zr!=null&&Zr.id&&Zr.state){const Ar=Zr.state["workspace.ui"];if(Ar){if((Ts=Ar.terminal)!=null&&Ts.open?C(!0):C(!1),Ar.tabs&&xp(Ar.tabs),Ar.layout){sc("workspace.layout");const Mn=zq({tree:Ar.layout.tree!==!1,editor:Ar.layout.editor!==!1},Tt);ge(Mn.tree),Qe(Mn.editor)}Go.current={workspaceId:Zr.id,ui:Ar},fp(Mn=>Mn+1)}}},[jl,tc,zc,Pt,sc,Tt]),dc=y.useCallback((D,Q)=>fetch(`${Xi}/api/architecture?workspaceRoot=${encodeURIComponent(D)}`,{headers:{Authorization:`Bearer ${dt}`},signal:Q}).then(async he=>he.ok?(await he.json()).diagram:null),[dt]),{sendUIState:fn,sendArchitectureRenderResult:tx}=$pt({sessionId:et,token:dt,onStateSync:Ya,onFullState:El,onMessageComplete:Wc,onThreadEvent:xe.handleThreadEvent,onConnectionStateChange:zh,onFsChanges:y.useCallback(D=>{var me,Ae;la(ht=>ht+1);const Q=((Ae=(me=Ce.current)==null?void 0:me.workspaceRoot)==null?void 0:Ae.trim())||null;if(!Q||pt.current!==Q)return;const he=Rt!=null&&Rt.startsWith(Q)?Rt.slice(Q.length).replace(/^[/\\]+/,"").replace(/\\/g,"/"):".jait/architecture.mmd";D.changes.some(ht=>{const bt=ht.path.replace(/\\/g,"/");return bt===he||bt==="architecture.mmd"})&&dc(Q).then(ht=>{Zt((ht==null?void 0:ht.diagram)??null),or((ht==null?void 0:ht.filePath)??null)}).catch(()=>{Zt(null),or(null)})},[Rt,dc]),listeners:{"workspace.open":y.useCallback(D=>{Te({surfaceId:D.surfaceId,workspaceRoot:D.workspaceRoot,nodeId:D.nodeId});const Q={open:M.current,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};Cs(Q)},[Cs]),"workspace.close":y.useCallback(()=>{M.current=!1,W(!1),Te(null),gt(!1),Cs(null)},[Cs]),"terminal.focus":y.useCallback(D=>{g("chat"),C(!0),ac({open:!0}),_o(),D.terminalId&&ns(D.terminalId),D.reason==="interactive-input-required"&&fi(D.message??"Terminal wartet auf deine Eingabe (z. B. sudo Passwort).",{description:"Klicke ins Terminal und gib die erforderliche Eingabe ein.",duration:1e4})},[_o,ac,ns]),"dev-preview.open":y.useCallback(D=>{const Q=typeof D.target=="string"?D.target.trim():"";g("chat"),J(Q||null),lc({open:!0,target:Q||null,workspaceRoot:D.workspaceRoot??null}),Bo(Q||null,D.workspaceRoot??null)},[Bo,lc]),"screen-share.open":y.useCallback(()=>{te(!0),ya({open:!0})},[ya]),"screen-share.close":y.useCallback(()=>{te(!1),ya(null)},[ya]),"architecture.update":y.useCallback(D=>{var Q;D.diagram&&(it.current=D.requestId??null,Zt(D.diagram),or(D.filePath??null),$e(!1),gt(!0),(Q=D.workspaceRoot)!=null&&Q.trim()&&(pt.current=D.workspaceRoot.trim()),$c(D.workspaceRoot))},[$c])},onPreviewSessionEvent:SYe}),Iu=y.useCallback(D=>{const Q=it.current;Q&&(it.current=null,tx(Q,D))},[tx]),va=y.useCallback(D=>{xp(D),Zv(D)},[Zv]);y.useEffect(()=>{var ue;const D=((ue=ne==null?void 0:ne.workspaceRoot)==null?void 0:ue.trim())||null;if(!D||!dt){pt.current=null,Zt(null),or(null),$e(!1);return}if(pt.current===D)return;pt.current=D,Zt(null),or(null);let Q=!1;const he=new AbortController;return dc(D,he.signal).then(me=>{Q||(Zt((me==null?void 0:me.diagram)??null),or((me==null?void 0:me.filePath)??null))}).catch(()=>{Q||(Zt(null),or(null))}),()=>{Q=!0,he.abort()}},[ne==null?void 0:ne.workspaceRoot,dc,dt]);const Li=y.useRef(null);y.useEffect(()=>{if(ai&&dt&&!bp)return;const D=ne?{open:$,remotePath:ne.workspaceRoot,surfaceId:ne.surfaceId,nodeId:ne.nodeId}:null,Q=JSON.stringify(D);if(Q!==Li.current&&(Li.current=Q,Cs(D),et)){if(cn("workspace.panel"))return;fn("workspace.panel",D,et)}},[et,ne,ai,cn,fn,Cs,$,dt,bp]);const wp=y.useRef(null),Ui=y.useCallback((D,Q)=>{ge(D.tree),Qe(D.editor),Q!=null&&Q.immediateSync&&(wp.current=JSON.stringify(D),Zh(D,{immediate:!0}),et&&fn("workspace.layout",D,et))},[et,fn,Zh]);y.useEffect(()=>{if(ai&&dt&&ug)return;const D={tree:se,editor:le},Q=JSON.stringify(D);if(Q!==wp.current&&(wp.current=Q,Zh(D),et)){if(cn("workspace.layout"))return;fn("workspace.layout",D,et)}},[se,le,Zh,ai,ug,dt,et,cn,fn]);const Xr=y.useRef(null),ti=y.useRef(null);y.useEffect(()=>{if(et&&dt&&!qa.current)return;const D={open:I},Q=JSON.stringify(D);Q!==ti.current&&(ti.current=Q,!cn("footer.menu")&&fn("footer.menu",D,et))},[et,cn,fn,I,dt]),y.useEffect(()=>{et&&dt&&dy||Ur!==Xr.current&&(Xr.current=Ur,Bd(Ur),!cn("chat.mode")&&fn("chat.mode",Ur,et))},[Ur,Bd,fn,et,dy,dt,cn]);const is=y.useRef(null);y.useEffect(()=>{et&&dt&&Jh||sn!==is.current&&(is.current=sn,Jv(sn),!cn("chat.responseStyle")&&fn("chat.responseStyle",sn,et))},[sn,Jv,fn,et,Jh,dt,cn]);const pg=y.useRef(null);y.useEffect(()=>{et&&dt&&mp||ct!==pg.current&&(pg.current=ct,pp(ct),!cn("chat.providerRuntimeMode")&&fn("chat.providerRuntimeMode",ct,et))},[ct,pp,fn,et,mp,dt,cn]);const tf=y.useRef(null);y.useEffect(()=>{et&&dt&&Lu||nr!==tf.current&&(tf.current=nr,Qv(nr),!cn("chat.view")&&fn("chat.view",nr,et))},[nr,Qv,fn,et,Lu,dt,cn]);const Fd=y.useRef(null);y.useEffect(()=>{const D=Ys.length>0?Ys:null,Q=JSON.stringify(D);Q!==Fd.current&&(Fd.current=Q,ex(D),!cn("queued_messages")&&fn("queued_messages",D,et))},[Ys,ex,fn,et,cn]);const mg=y.useRef(null);y.useEffect(()=>{if(et&&dt&&!qa.current)return;const D=Jyt(Ha),Q=`${et??""}:${JSON.stringify(D)}`;Q!==mg.current&&(mg.current=Q,$u(D),!cn("todo_list")&&fn("todo_list",D,et))},[Ha,$u,fn,et,cn,dt]);const Sp=y.useRef(null);y.useEffect(()=>{const D=Object.keys(Xs).length>0?Xs:null,Q=`${et??""}:${JSON.stringify(D)}`;Q!==Sp.current&&(Sp.current=Q,hy(D),!cn("queued_thread_messages")&&fn("queued_thread_messages",D,et))},[Xs,hy,fn,et,cn]),y.useEffect(()=>(Dd(D=>{const Q=D.length>0?D:null;py(Q),!cn("changed_files")&&fn("changed_files",Q,et)}),()=>Dd(null)),[fn,et,Dd,cn,py]),y.useEffect(()=>{localStorage.setItem("showSessionsSidebar",_?"true":"false")},[_]),y.useEffect(()=>{if(!_)return;const D=window.requestAnimationFrame(()=>{var Q;(Q=B.current)==null||Q.focus({preventScroll:!0})});return()=>window.cancelAnimationFrame(D)},[_]);const kp=y.useCallback(D=>{if(!Tt)return;const Q=D.relatedTarget;Q&&D.currentTarget.contains(Q)||window.requestAnimationFrame(()=>{const he=B.current,ue=document.activeElement;!he||ue&&he.contains(ue)||S(!1)})},[Tt]);y.useEffect(()=>{localStorage.setItem("showDebugPanel",we?"true":"false")},[we]);const Cp=y.useCallback(D=>{Qn(D)},[]),ci=y.useCallback(D=>{wn(D)},[]),Hd=y.useCallback(D=>{cr(D)},[]),Wd=y.useCallback(D=>{Er(Q=>({...Q,[Pt]:D}))},[Pt]),rx=y.useRef(null);y.useEffect(()=>{if(et&&dt&&yp)return;const D={};for(const ue of["jait","codex","claude-code"]){const me=Sn[ue];typeof me=="string"&&me.trim()&&(D[ue]=me)}const Q=Object.keys(D).length>0?D:null,he=JSON.stringify(Q);he!==rx.current&&(rx.current=he,gp(Q),!cn("chat.cliModels")&&(fn("chat.cliModels",Q,et),localStorage.removeItem("cliModelsByProvider"),localStorage.removeItem("cliModel")))},[Sn,et,yp,fn,gp,dt,cn]);const nx=y.useRef(!1);y.useEffect(()=>{if(!nx.current){nx.current=!0;return}dt&&Ho({chat_provider:Pt})},[Pt]),y.useEffect(()=>{tr.current=nr},[nr]),y.useEffect(()=>{nr==="manager"&&we&&Be(!1)},[nr,we]);const ix=y.useCallback(()=>{te(!0),ya({open:!0}),!cn("screen-share.panel")&&fn("screen-share.panel",{open:!0},et)},[ya,fn,et,cn]),jp=y.useCallback(()=>{te(!1),ya(null),!cn("screen-share.panel")&&fn("screen-share.panel",null,et)},[ya,fn,et,cn]),gg=y.useCallback(()=>{Qm(),J(null),ee(null),de({open:!1,target:null,displayState:"hidden",displayTarget:null}),lc(null)},[Qm,lc]),Tp=y.useRef(""),So=y.useCallback(D=>{const Q=Hq(D.target),he=D.open?Q?"connected":"blank":"hidden",ue={open:D.open,target:Q,displayState:he,displayTarget:he==="connected"?Q:null};if(de(me=>me.open===ue.open&&me.target===ue.target&&me.displayState===ue.displayState&&me.displayTarget===ue.displayTarget?me:ue),D.open&&Q){const me={open:!0,target:Q??U??null,workspaceRoot:(ne==null?void 0:ne.workspaceRoot)??null,displayState:he,displayTarget:he==="connected"?Q??U??null:null},Ae=`${me.open}:${me.target??""}:${me.workspaceRoot??""}:${me.displayState??""}:${me.displayTarget??""}`;if(Ae===Tp.current)return;Tp.current=Ae,lc(me);return}Tp.current!==""&&(Tp.current="",lc(null))},[ne==null?void 0:ne.workspaceRoot,U,lc]),ri=(wo==null?void 0:wo.open)===!0||re.open,Bu=y.useCallback(()=>{C(!0),ac({open:!0},{immediate:Tt}),!cn("terminal.panel")&&fn("terminal.panel",{open:!0},et)},[ac,fn,et,cn,Tt]),xa=y.useCallback(()=>{C(!1),Xe(!1),ac(null,{immediate:Tt}),!cn("terminal.panel")&&fn("terminal.panel",null,et)},[ac,fn,et,cn,Tt]),Uc=y.useCallback(()=>{H.current=!0,M.current=!1,W(!1);const D=ne?{open:!1,remotePath:ne.workspaceRoot,surfaceId:ne.surfaceId,nodeId:ne.nodeId}:null;if(Li.current=JSON.stringify(D),Tt){const Q=DC();Ui(Q,{immediateSync:!0})}D&&(Cs(D,{immediate:!0}),et&&fn("workspace.panel",D,et))},[et,ne,Ui,Tt,fn,Cs]);V.current=Uc;const my=y.useCallback(()=>{if(Tt){const D=Fq({tree:se,editor:le},"tree");Ui(D,{immediateSync:!0});return}ge(D=>!D)},[Ui,Tt,se,le]),Vc=y.useCallback(()=>{if(Tt){const D=Fq({tree:se,editor:le},"editor");Ui(D,{immediateSync:!0});return}Qe(D=>!D)},[Ui,Tt,se,le]),yg=y.useCallback(D=>{Ie(D);const Q=__("tree");Ui(Q,{immediateSync:!0})},[Ui]),gy=y.useCallback(()=>{const D=__("editor");Ui(D,{immediateSync:!0})},[Ui]),vg=y.useCallback(D=>{g("chat");const Q=(D==null?void 0:D.trim())||(U==null?void 0:U.trim())||null;J(Q);const he={open:!0,target:Q,workspaceRoot:(ne==null?void 0:ne.workspaceRoot)??null};lc(he),Bo(Q,(ne==null?void 0:ne.workspaceRoot)??null)},[lc,U,Bo,ne==null?void 0:ne.workspaceRoot]),zu=y.useCallback(async(D,Q,he)=>{const ue=he??et,me=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:D,sessionId:ue,nodeId:Q||"gateway"})});if(!me.ok){const Ae=await me.json().catch(()=>({message:"Unknown error"}));throw new Error(Ae.message??"Failed to open workspace")}dt&&Ho({workspace_picker_path:D,workspace_picker_node_id:Q||"gateway"}).catch(()=>{})},[et,dt,Ho]),KS=y.useCallback(async D=>{var me;const Q=yo.find(Ae=>Ae.id===D);if(!Q)return;Tt&&S(!1);const ue=Q.sessions.some(Ae=>Ae.id===et)?et:((me=Q.sessions[0])==null?void 0:me.id)??null;if(rg(D),Q.rootPath)try{const Ae=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:Q.rootPath,sessionId:ue,nodeId:Q.nodeId||"gateway"})});if(!Ae.ok)return;const ht=await Ae.json(),bt=ht.nodeId||Q.nodeId||void 0;Te({surfaceId:ht.surfaceId,workspaceRoot:ht.workspaceRoot,nodeId:bt}),M.current=!0,W(!0),Cs({open:!0,remotePath:ht.workspaceRoot,surfaceId:ht.surfaceId,nodeId:bt})}catch(Ae){console.error("Failed to open workspace:",Ae)}},[yo,et,rg,Cs,Tt]),YS=y.useCallback(()=>{ju("workspace"),ku(!0)},[]),XS=y.useCallback(D=>{!D||!ai||Hh[ai]||ip(ai)},[ai,Hh,ip]),xg=y.useCallback(async(D,Q,he)=>{if(Tu){bl(null),await Xl(Tu,{rootPath:D,nodeId:Q});return}const ue=await Wo({rootPath:D,nodeId:Q});if(!ue)throw new Error("Failed to create workspace");const me=ue.sessions[0]??await ua(ue.id);if(!me)throw new Error("Failed to create workspace session");const Ae=(he==null?void 0:he.openEditor)??Cu==="editor";if(M.current=Ae,await zu(D,Q,me.id),W(Ae),Ae&&Tt){const ht=__("editor");Ui(ht,{immediateSync:!0})}Cs({open:Ae,remotePath:D,nodeId:Q})},[Ui,Tu,ua,Wo,Tt,Xl,zu,Cs,Cu]),Xa=y.useCallback(async(D,Q,he)=>{await zu(D,Q??void 0,he),M.current=!0,W(!0),Tt?Ui(DC(),{immediateSync:!0}):(ge(!0),_s()),Cs({open:!0,remotePath:D,nodeId:Q??void 0})},[Ui,Tt,zu,Cs,_s]),Np=y.useCallback(async()=>{var ht,bt,Vt,Gt;if(!Ce.current&&!Pd.current&&(Uo.current||Md.current)&&await ha(),Ce.current)return Ce.current;const D=Pd.current,Q=wl.current;if(D!=null&&D.rootPath)return await Xa(D.rootPath,D.nodeId??"gateway",Q),Ce.current;const he=(ht=Go.current)==null?void 0:ht.ui.panel,ue=((bt=he==null?void 0:he.remotePath)==null?void 0:bt.trim())||null;if(ue&&Q)return await Xa(ue,(he==null?void 0:he.nodeId)??void 0,Q),Ce.current;const me=(Vt=Xh.current)==null?void 0:Vt.panel,Ae=((Gt=me==null?void 0:me.remotePath)==null?void 0:Gt.trim())||null;return Ae&&Q?(await Xa(Ae,(me==null?void 0:me.nodeId)??void 0,Q),Ce.current):null},[Xa,ha]),ZS=y.useCallback(async()=>{var he;const D=await Np();if(!D)return;if(ri){gg();return}const Q=re.target??(U==null?void 0:U.trim())??((he=wo==null?void 0:wo.target)==null?void 0:he.trim())??null;Bo(Q,D.workspaceRoot??null)||vg(Q)},[gg,U,Np,vg,ri,Bo,wo==null?void 0:wo.target,re.target]),x6=y.useCallback(async()=>{var Q;const D=await Np();if(D){if(wt){(Q=rs.current)==null||Q.closeArchitectureTab(),ze(null),gt(!1);return}gt(!0),$c(D.workspaceRoot)}},[Np,$c,wt]),bg=y.useCallback(async()=>{var Zr,Ts,Ar,Mn,En,Ni,zn,Si,Ds,Gd,Al;if($){Uc();return}H.current=!1,!Ce.current&&!Pd.current&&(Uo.current||Md.current)&&await ha();const D=Ce.current,Q=Pd.current,he=wl.current,ue=ap.current,me=Ks.current;if(nr==="manager"&&xe.selectedThread){const Ei=xe.selectedThread.workingDirectory??(li==null?void 0:li.localPath);if(Ei){if((D==null?void 0:D.workspaceRoot)===Ei){M.current=!0,W(!0),Tt?_s():ge(!0);const Gi={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};Cs(Gi);return}let qi=he;if(!qi){await xg(Ei,(li==null?void 0:li.deviceId)??"gateway",{openEditor:!0});return}if(!qi)return;await Xa(Ei,(li==null?void 0:li.deviceId)??void 0,qi);return}}if(D){M.current=!0,W(!0),Tt?_s():ge(!0);const Ei={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};Cs(Ei);return}if(Q!=null&&Q.rootPath){await Xa(Q.rootPath,Q.nodeId??"gateway",he);return}const Ae=(Zr=Go.current)==null?void 0:Zr.ui.panel,ht=((Ts=Ae==null?void 0:Ae.remotePath)==null?void 0:Ts.trim())||null;if(ht&&he){await Xa(ht,(Ae==null?void 0:Ae.nodeId)??void 0,he);return}const bt=(Ar=Xh.current)==null?void 0:Ar.panel,Vt=((Mn=bt==null?void 0:bt.remotePath)==null?void 0:Mn.trim())||null;if(Vt&&he){await Xa(Vt,(bt==null?void 0:bt.nodeId)??void 0,he);return}const Gt=(he?ue.find(Ei=>Ei.sessions.some(qi=>qi.id===he)):null)??(ue.length===1?ue[0]??null:null),gr=((En=Gt==null?void 0:Gt.rootPath)==null?void 0:En.trim())||null;if(Gt&&gr){const Ei=Gt.sessions.find(qi=>qi.id===he)??Gt.sessions[0]??null;if(Ei){vo(Gt.id,Ei.id),await Xa(gr,Gt.nodeId??void 0,Ei.id);return}await xg(gr,Gt.nodeId??"gateway",{openEditor:!0});return}if(he&&me)try{const Ei=await fetch(`${Xi}/api/sessions/${he}`,{headers:{Authorization:`Bearer ${me}`}});if(Ei.ok){const qi=await Ei.json();let Gi=null;if(qi.workspaceId){const Ko=await fetch(`${Xi}/api/workspaces/${qi.workspaceId}`,{headers:{Authorization:`Bearer ${me}`}});Ko.ok&&(Gi=await Ko.json())}const Ki=((Ni=Gi==null?void 0:Gi.rootPath)==null?void 0:Ni.trim())||((zn=qi.workspacePath)==null?void 0:zn.trim())||null;if(Ki){Gi!=null&&Gi.id&&vo(Gi.id,qi.id),await Xa(Ki,(Gi==null?void 0:Gi.nodeId)??void 0,qi.id);return}}}catch{}if(me)try{const Ei=await fetch(`${Xi}/api/workspaces/last-active`,{headers:{Authorization:`Bearer ${me}`}});if(Ei.ok){const qi=await Ei.json(),Gi=((Ds=(Si=qi.workspace)==null?void 0:Si.rootPath)==null?void 0:Ds.trim())||Vt,Ki=((Gd=qi.session)==null?void 0:Gd.id)??he;if((Al=qi.workspace)!=null&&Al.id&&Gi&&Ki){vo(qi.workspace.id,Ki),await Xa(Gi,qi.workspace.nodeId??(bt==null?void 0:bt.nodeId)??void 0,Ki);return}}}catch{}ju("editor"),ku(!0)},[$,ne,on,Uc,Cs,et,nr,xe.selectedThread,li,yo,vo,dt,xg,Tt,_s,Xa,ha]);y.useEffect(()=>{if(!(ne!=null&&ne.workspaceRoot)||!et)return;let D=!1;return(async()=>{try{if(ne.surfaceId&&((await fetch(`${Xi}/api/workspace/list?path=${encodeURIComponent(ne.workspaceRoot)}&surfaceId=${encodeURIComponent(ne.surfaceId)}`)).ok||D))return;const Q=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:ne.workspaceRoot,sessionId:et,nodeId:ne.nodeId||"gateway"})});if(!Q.ok||D)return;const he=await Q.json();if(D)return;Te({surfaceId:he.surfaceId,workspaceRoot:he.workspaceRoot,nodeId:he.nodeId});const ue={open:M.current,remotePath:he.workspaceRoot,surfaceId:he.surfaceId,nodeId:he.nodeId};Cs(ue)}catch{}})(),()=>{D=!0}},[ne==null?void 0:ne.nodeId,ne==null?void 0:ne.surfaceId,ne==null?void 0:ne.workspaceRoot,et]),y.useEffect(()=>{const D=Mu.current;Mu.current=ds.length,D!==null&&ds.length!==0&&(ds.length<=D||H.current||$||(M.current=!0,W(!0)))},[ds.length]);const sx=y.useMemo(()=>ds.filter(D=>D.state==="undecided").map(D=>D.path),[ds]);y.useEffect(()=>{b(Hi.theme)},[Hi.theme]),y.useEffect(()=>{Fo||Hi.chat_provider&&Hi.chat_provider!==Pt&&Qn(Hi.chat_provider)},[Hi.chat_provider,Fo]),y.useEffect(()=>{var ue,me;if(!(Lt&&Yl==="win32"))return;const D=getComputedStyle(document.documentElement),Q=D.getPropertyValue("--background").trim(),he=D.getPropertyValue("--foreground").trim();(me=(ue=window.jaitDesktop)==null?void 0:ue.setTitleBarOverlay)==null||me.call(ue,{color:Q?`hsl(${Q})`:ia==="dark"?"#202020":"#e8ecf1",symbolColor:he?`hsl(${he})`:ia==="dark"?"#f2f2f2":"#0a0a0a",height:39})},[ia,Yl,Lt]),y.useEffect(()=>{if(!Fo&&!ei){const D=requestAnimationFrame(()=>d(!0));return fetch(`${Pn()}/health`,{signal:AbortSignal.timeout(4e3)}).then(Q=>Q.ok?Q.json():null).then(Q=>{Q&&typeof Q.hasUsers=="boolean"&&(Do(Q.hasUsers),Q.hasUsers||Kr("register"))}).catch(()=>{Mi&&pA()&&(Fi("url"),Ms("Gateway is unreachable. Check the URL or try a different one."),cs(rv()??""))}),()=>cancelAnimationFrame(D)}},[Fo,ei]),y.useEffect(()=>{ei&&et&&np(et)},[ei,et,np]),y.useEffect(()=>{if(Sl==="login_required"){const D=requestAnimationFrame(()=>d(!0));return()=>cancelAnimationFrame(D)}},[Sl]),y.useEffect(()=>{(async()=>{if(!et){hn(!1);return}try{const he=await(await fetch(`${Xi}/api/consent/pending/${et}/approve-all`)).json();hn(he.approveAllEnabled===!0)}catch{hn(!1)}})()},[et]);const ox=y.useCallback(async D=>{var ue;const Q=v,he=((ue=zQ())==null?void 0:ue.id)??null;b(D),v5(null);try{await Ho({theme:D})}catch{b(Q),v5(he)}},[v,Ho]),ax=y.useCallback(D=>{D.preventDefault(),Ih.current=!0;const Q=D.clientY,he=st,ue=window.innerHeight*.9,me=()=>{Ih.current=!1,document.removeEventListener("mousemove",Ae),document.removeEventListener("mouseup",ht),window.removeEventListener("blur",bt),document.body.style.cursor="",document.body.style.userSelect=""},Ae=Vt=>{if(!Ih.current)return;const Gt=Q-Vt.clientY;ot(Math.min(ue,Math.max(160,he+Gt)))},ht=()=>{me()},bt=()=>{me()};document.body.style.cursor="row-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",Ae),document.addEventListener("mouseup",ht),window.addEventListener("blur",bt)},[st]),JS=y.useCallback(D=>{D.preventDefault();const Q=D.clientX,he=Ot,ue=window.innerWidth*.7,me=ht=>{const bt=ht.clientX-Q;nt(Math.min(ue,Math.max(280,he+bt)))},Ae=()=>{document.removeEventListener("mousemove",me),document.removeEventListener("mouseup",Ae),window.removeEventListener("blur",Ae),document.body.style.cursor="",document.body.style.userSelect=""};document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",me),document.addEventListener("mouseup",Ae),window.addEventListener("blur",Ae)},[Ot]),ss=(ne==null?void 0:ne.workspaceRoot)??(on==null?void 0:on.rootPath)??null,lx=re.workspaceRoot??(wo==null?void 0:wo.workspaceRoot)??(ne==null?void 0:ne.workspaceRoot)??null,cx=y.useMemo(()=>{var ue;const D=(ue=on==null?void 0:on.title)==null?void 0:ue.trim();if(D)return D;const Q=ss==null?void 0:ss.trim();if(!Q)return null;const he=Q.replace(/[\\/]+$/,"");return he.split(/[\\/]/).pop()||he},[on==null?void 0:on.title,ss]),Ud=y.useMemo(()=>ss?qo.filter(D=>{if(!D.workspaceRoot)return!1;const Q=D.workspaceRoot.replace(/\\/g,"/").toLowerCase(),he=ss.replace(/\\/g,"/").toLowerCase();return Q===he}):qo,[qo,ss]),Ep=y.useCallback(async(D=null)=>{const Q=await _o(),he=ss,ue=he?Q.filter(Ae=>(Ae.workspaceRoot??"").replace(/\\/g,"/").toLowerCase()===he.replace(/\\/g,"/").toLowerCase()):Q;if(D&&ue.some(ht=>ht.id===D))return ns(D),D;if(Bn&&ue.some(Ae=>Ae.id===Bn))return Bn;if(ue.length>0){const Ae=ue[ue.length-1].id;return ns(Ae),Ae}return(await bo(et??"default",ss??void 0)).id},[_o,ns,Bn,bo,et,ss]),QS=y.useCallback(async D=>{g("chat"),Bu(),await Ep(D)},[Ep,Bu]),Za=y.useCallback(async D=>{if(Sf({showWorkspace:$,showTerminal:w,showWorkspaceTree:se,showWorkspaceEditor:le,treeTab:Ze},D)){if(D==="terminal"){xa();return}Uc();return}if(D==="terminal"){g("chat"),Uc(),Bu(),await Ep();return}if(w&&xa(),$||await bg(),D==="editor"){gy();return}yg(D)},[xa,Uc,Ep,bg,Ze,Bu,g,gy,yg,w,$,le,se]),ux=y.useCallback(D=>{var Q,he;(Q=go.current)==null||Q.insertChip(D),(he=go.current)==null||he.focus()},[]),_g=y.useCallback((D,Q,he,ue)=>{var Ae,ht;Q.trim()&&((Ae=go.current)==null||Ae.insertSegments(s1t(D,he,ue)),(ht=go.current)==null||ht.focus())},[]),wg=y.useCallback((D,Q,he,ue,me)=>{var bt,Vt;const Ae=Q.trim();if(!Ae)return;const ht=D.replace(/^term-/,"").slice(0,8)||D;(bt=go.current)==null||bt.insertSegments(o1t({terminalId:D,name:ht,...he?{workspaceRoot:he}:{}},Ae,ue,me)),(Vt=go.current)==null||Vt.focus()},[]),dx=y.useCallback(D=>{var Q,he;D.selector&&((Q=go.current)==null||Q.insertSegments(a1t(D)),(he=go.current)==null||he.focus(),g("chat"))},[g]),yy=y.useCallback(async()=>{if(w){xa();return}g("chat"),Bu(),await Ep()},[w,Ep,Bu,xa]),e3=y.useCallback(async D=>{var he;const Q=Ud.length===1&&((he=Ud[0])==null?void 0:he.id)===D;await Un(D),Q&&xa()},[Ud,Un,xa]),hx=y.useCallback(D=>{var me,Ae,ht;const Q=Ud.find(bt=>bt.id===D),he=`detached-terminal-${D}-${Date.now()}`;Uft({id:he,terminalId:D,token:dt??null,label:((me=Q==null?void 0:Q.metadata)==null?void 0:me.cwd)??`Terminal ${D.slice(0,6)}`,theme:ia==="dark"?"dark":"light",workspaceRoot:(Q==null?void 0:Q.workspaceRoot)??ss??null});const ue=`${window.location.origin}${window.location.pathname}?detachedTerminal=${encodeURIComponent(he)}`;if((Ae=window.jaitDesktop)!=null&&Ae.openWorkspaceWindow)window.jaitDesktop.openWorkspaceWindow({url:ue,title:"Terminal"});else{const bt=window.open(ue,`jait-detached-terminal-${D}`,"popup=yes,width=800,height=600,resizable=yes,scrollbars=yes");(ht=bt==null?void 0:bt.focus)==null||ht.call(bt)}},[Ud,dt,ia,ss]),rf=y.useCallback(D=>{D.length!==0&&(Dh(Q=>{const he=[...Q];for(const ue of D){const me=he.findIndex(Ae=>Ae.path===ue.path);me>=0?he[me]=ue:he.push(ue)}return he}),bs(Q=>{var he;return Q??((he=D[0])==null?void 0:he.id)??null}))},[]),Sg=y.useCallback(D=>pH(D,ne==null?void 0:ne.workspaceRoot)?(ne==null?void 0:ne.workspaceRoot)??null:on!=null&&on.rootPath&&pH(D,on.rootPath)?on.rootPath:null,[ne==null?void 0:ne.workspaceRoot,on==null?void 0:on.rootPath]),vy=y.useCallback(async D=>{var Q;try{const he=Sg(D);if(!he){fi("File is outside the active workspace. Open its directory explicitly to browse it.");return}he&&(!ne||ne.workspaceRoot!==he)&&await zu(he,ne==null?void 0:ne.nodeId,et);const ue={};dt&&(ue.Authorization=`Bearer ${dt}`);const me=ne!=null&&ne.surfaceId&&he===ne.workspaceRoot?`&surfaceId=${encodeURIComponent(ne.surfaceId)}`:"",Ae=D.split(/[/\\]/).pop()??D,ht=$_(Ae),bt=async()=>($||(M.current=!0,W(!0)),_s(),rs.current?!0:(await new Promise(Mn=>requestAnimationFrame(()=>Mn())),rs.current!=null)),Vt=async(Mn,En,Ni)=>{var Si;await bt()&&(await((Si=rs.current)==null?void 0:Si.openReviewDiff({path:Mn,originalContent:En??"",modifiedContent:Ni,language:ht})),_s())},Gt=async(Mn,En)=>{if(!he)return!1;try{const Ni=await so.fileDiffs(he),zn=Mn.replace(/\\/g,"/"),Si=Ni.find(Ds=>Ds.path===zn)??Ni.find(Ds=>zn.endsWith(`/${Ds.path}`));return Si?(await Vt(Mn,Si.original,En||Si.modified),!0):!1}catch{return!1}},gr=await fetch(`${Xi}/api/workspace/backup?path=${encodeURIComponent(D)}${me}`,{headers:ue});if(gr.ok){const Mn=await gr.json();await Vt(Mn.path,Mn.originalContent,Mn.currentContent);return}const Zr=await((Q=rs.current)==null?void 0:Q.readFileByPath(D));if(Zr){if(await Gt(Zr.path,Zr.content))return;await Vt(Zr.path,Zr.content,Zr.content);return}const Ts=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}${me}`,{headers:ue});if(!Ts.ok)return;const Ar=await Ts.json();if(await Gt(Ar.path,Ar.content))return;await Vt(Ar.path,Ar.content,Ar.content);return}catch{}},[et,ne,zu,Sg,dt,$,_s]),fx=y.useCallback(async D=>{var Q;try{const he=Sg(D);if(!he){const Ae=Ps.find(ht=>ht.path===D);if(Ae){rf([Ae]),bs(Ae.id),$||(M.current=!0,W(!0)),_s();return}fi("File is outside the active workspace. Open its directory explicitly to browse it.");return}if(he&&(!ne||ne.workspaceRoot!==he)&&await zu(he,ne==null?void 0:ne.nodeId,et),await((Q=rs.current)==null?void 0:Q.openFileByPath(D))){$||(M.current=!0,W(!0)),_s();return}const me=Ps.find(Ae=>Ae.path===D);if(me)rf([me]),bs(me.id);else{const Ae={};dt&&(Ae.Authorization=`Bearer ${dt}`);const ht=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}`,{headers:Ae});if(!ht.ok)throw new Error(`Failed to open file: ${ht.status}`);const bt=await ht.json(),Vt=D.split(/[\\/]/).pop()??D,Gt={id:bt.path,name:Vt,path:bt.path,content:bt.content,language:$_(Vt)};rf([Gt]),bs(Gt.id)}$||(M.current=!0,W(!0)),_s()}catch(he){fi(he instanceof Error?he.message:"Failed to open linked file")}},[et,ne,rf,zu,Sg,$,_s,dt,Ps]),xy=y.useCallback(async(D,Q)=>{try{const he={"Content-Type":"application/json"};dt&&(he.Authorization=`Bearer ${dt}`),await fetch(`${Xi}/api/workspace/apply-diff`,{method:"POST",headers:he,body:JSON.stringify({path:D,content:Q})})}catch{}ec(D)},[dt,ec]),px=y.useCallback(async D=>{const Q=Array.from(D),he=await Promise.all(Q.filter(ue=>ue.size<1024*1024).map(async ue=>{const me=await ue.text(),Ae=ue.webkitRelativePath||ue.name;return{id:`${Ae}-${ue.lastModified}`,name:ue.name,path:Ae,content:me,language:$_(Ae)}}));rf(he)},[rf]),Ap=y.useCallback(async(D,Q,he)=>{var ue;return((ue=rs.current)==null?void 0:ue.searchFiles(D,Q,he))??[]},[]),qc=y.useCallback(async(D,Q,he)=>{var Ts,Ar,Mn;const ue=he!=null&&he.length?he:void 0,me=(ue?Z1(ue):D).trim(),Ae=ue!=null&&ue.length?J1(ue):Q!=null&&Q.length?Q.map(En=>({path:En.path,name:En.name,...En.lineRange?{lineRange:En.lineRange}:{}})):[],ht=ue!=null&&ue.length?o8e(ue):[],bt=ue!=null&&ue.length?a8e(ue):[];if(!me&&Ae.length===0&&ht.length===0&&bt.length===0)return null;const Vt=[],Gt=new Set;if(Ae.length){const En=new Set;for(const Ni of Ae){const zn=`${Ni.path}:${((Ts=Ni.lineRange)==null?void 0:Ts.startLine)??""}:${((Ar=Ni.lineRange)==null?void 0:Ar.endLine)??""}`;if(En.has(zn))continue;En.add(zn),Gt.add(Ni.path);const Si=Al=>Ni.lineRange?Al.split(`
|
|
1430
|
+
`}]}function Uq(e){return e==="normal"||e==="simple"||e==="caveman"||e==="caveman-ultra"}const l1t=["What can you help me with?","Explain quantum computing","Write a Python script","What time is it?"],c1t=["Generate architecture diagram","Explain this codebase","Find potential issues","What can you help me with?"];function Vq(e){const r={};try{const i=localStorage.getItem("cliModelsByProvider");if(i){const s=JSON.parse(i);for(const o of["jait","codex","claude-code"]){const a=s[o];typeof a=="string"&&a.trim()&&(r[o]=a)}}}catch{}const n=localStorage.getItem("cliModel");return n&&!r[e]&&(r[e]=n),r}const u1t="Generating title…";function M4(e){return e.replace(/^\[.*?\]\s*/,"").trim()===u1t}function h9({className:e=""}){return c.jsx("span",{className:`inline-block rounded bg-muted animate-pulse ${e}`,children:c.jsx("span",{className:"invisible",children:"Generating title"})})}function sL({status:e}){const r={running:{icon:sr,color:"text-blue-500 animate-spin"},paused:{icon:lD,color:"text-yellow-500"},interrupted:{icon:lD,color:"text-yellow-500"},done:{icon:ql,color:"text-green-500"},completed:{icon:ql,color:"text-green-500"},error:{icon:Sh,color:"text-red-500"}},{icon:n,color:i}=r[e]??{icon:Oa,color:"text-muted-foreground"};return c.jsx(n,{className:`h-3 w-3 shrink-0 ${i}`})}function _de(e,r){return(r!==void 0?r:e.prState)??(e.prUrl?"open":null)}function wde({prState:e}){if(!e)return null;const r=e==="creating"?"PR creating":e==="open"?"PR open":e==="merged"?"PR merged":"PR closed",n=e==="creating"?"bg-amber-500/10 text-amber-700 border-amber-500/20 dark:text-amber-300 dark:bg-amber-500/20 dark:border-amber-400/30":e==="open"?"bg-blue-500/10 text-blue-700 border-blue-500/20 dark:text-blue-300 dark:bg-blue-500/20 dark:border-blue-400/30":e==="merged"?"bg-purple-500/10 text-purple-700 border-purple-500/20 dark:text-purple-300 dark:bg-purple-500/20 dark:border-purple-400/30":"bg-red-500/10 text-red-700 border-red-500/20 dark:text-red-300 dark:bg-red-500/20 dark:border-red-400/30";return c.jsx(rn,{variant:"outline",className:`h-4 shrink-0 whitespace-nowrap px-1 py-0 text-2xs ${n}`,children:r})}function f9({kind:e}){return c.jsx(rn,{variant:"outline",className:`h-4 shrink-0 whitespace-nowrap px-1 py-0 text-2xs ${e==="delegation"?"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300 dark:border-amber-400/30":"bg-blue-500/10 text-blue-700 border-blue-500/20 dark:text-blue-300 dark:bg-blue-500/20 dark:border-blue-400/30"}`,children:e==="delegation"?"Delegate":"Delivery"})}const d1t={codex:"Codex","claude-code":"Claude"};function P4({runtime:e,className:r=""}){const n=e.availableProviders.filter(i=>i==="codex"||i==="claude-code");return c.jsxs("div",{className:`flex flex-wrap items-center gap-1 text-2xs text-muted-foreground ${r}`.trim(),children:[c.jsx("span",{children:e.locationLabel}),e.loading?c.jsx(sr,{className:"h-3 w-3 animate-spin text-muted-foreground"}):!e.online&&c.jsx(rn,{variant:"outline",className:"h-4 border-amber-500/30 bg-amber-500/10 px-1 py-0 text-2xs text-amber-700 dark:text-amber-300",children:"Offline"}),n.map(i=>c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:d1t[i]},i))]})}function qq({repositories:e,selectedRepo:r,disabled:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o}){return c.jsxs(hu,{children:[c.jsx(fu,{asChild:!0,children:c.jsxs(_e,{variant:"outline",size:"sm",className:"h-8 gap-1.5 rounded-lg px-2 text-xs",disabled:n,children:[c.jsx(mh,{className:"h-3.5 w-3.5 shrink-0"}),c.jsx("span",{className:"max-w-[140px] truncate",children:r?r.name:"Select repository"}),c.jsx(hl,{className:"h-3 w-3 shrink-0 text-muted-foreground"})]})}),c.jsxs(Sc,{align:"start",side:"top",className:"w-64",children:[c.jsx(Qg,{children:"Repository"}),e.map(a=>{const l=i(a);return c.jsx(Bi,{onSelect:()=>s(a.id),children:c.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[c.jsx(mh,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[c.jsx("span",{className:"truncate",children:a.name}),c.jsx("span",{className:"text-2xs text-muted-foreground",children:a.defaultBranch}),a.source==="shared"&&c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:"Shared"})]}),c.jsx(P4,{runtime:l,className:"mt-1"})]})]})},a.id)}),e.length===0&&c.jsx("div",{className:"px-2 py-2 text-xs text-muted-foreground",children:"No repositories yet."}),c.jsx(ed,{}),c.jsxs(Bi,{onSelect:o,children:[c.jsx(Oo,{className:"mr-2 h-3.5 w-3.5"}),"Add repository"]})]})]})}function h1t({repositories:e,selectedRepoId:r,isMobile:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o,onRemoveRepository:a,onOpenStrategy:l,onOpenPlan:d}){return c.jsxs("div",{className:"flex h-full flex-col",children:[c.jsxs("div",{className:"flex h-[35px] items-center justify-between border-b px-3",children:[c.jsx("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Repositories"}),c.jsxs(_e,{variant:"ghost",size:"sm",className:"h-6 gap-1.5 px-2 text-xs",onClick:o,children:[c.jsx(Oo,{className:"h-3 w-3"}),"Add"]})]}),c.jsx("div",{className:n?"flex-1 overflow-y-auto p-1.5 space-y-0.5":"flex-1 overflow-y-auto p-2 space-y-1",children:e.length===0?c.jsxs("p",{className:"py-4 text-center text-xs text-muted-foreground",children:["No repositories yet.",c.jsx("br",{}),c.jsx("button",{type:"button",onClick:o,className:"mt-1 inline-block underline underline-offset-2 hover:text-foreground",children:"Add one"})]}):e.map(u=>{const f=i(u);return c.jsxs("div",{role:"button",tabIndex:0,className:`flex w-full items-start gap-2 px-2 py-1.5 text-left transition-colors ${n?"cursor-pointer rounded-md text-sm":"rounded-lg text-xs"} ${r===u.id?n?"bg-secondary text-secondary-foreground":"bg-primary/10 text-primary":n?"hover:bg-muted/50":"hover:bg-muted"}`,onClick:()=>s(u.id),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),s(u.id))},children:[c.jsx(mh,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),c.jsxs("div",{className:"min-w-0 flex-1",children:[c.jsx("div",{className:n?"truncate text-xs font-medium":"truncate font-medium",children:u.name}),c.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-1",children:[c.jsx("span",{className:"text-2xs text-muted-foreground",children:u.defaultBranch}),u.source==="shared"&&c.jsx(rn,{variant:"outline",className:"h-4 shrink-0 px-1 py-0 text-2xs",children:"Shared"})]}),c.jsx(P4,{runtime:f,className:"mt-1"})]}),c.jsxs("div",{className:"mt-0.5 flex shrink-0 flex-col gap-0.5",children:[c.jsx("button",{type:"button",title:"Strategy",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-primary",onClick:p=>{p.stopPropagation(),l(u)},children:c.jsx(dK,{className:"h-3 w-3"})}),c.jsx("button",{type:"button",title:"Plans",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-primary",onClick:p=>{p.stopPropagation(),d(u)},children:c.jsx(cK,{className:"h-3 w-3"})}),u.source==="local"&&c.jsx("button",{type:"button",title:"Remove",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-destructive",onClick:p=>{p.stopPropagation(),a(u.id)},children:c.jsx(gh,{className:"h-3 w-3"})})]})]},u.id)})})]})}function f1t(e){const r=Math.floor(e/1e3);if(r<60)return`${r}s`;const n=Math.floor(r/60),i=r%60;if(n<60)return`${n}m ${i.toString().padStart(2,"0")}s`;const s=Math.floor(n/60),o=n%60;return`${s}h ${o.toString().padStart(2,"0")}m`}function p1t({createdAt:e,completedAt:r,status:n}){const[i,s]=y.useState(Date.now),o=n==="running"||n==="queued";y.useEffect(()=>{if(!o)return;const u=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(u)},[o]);const a=new Date(e).getTime(),l=o?i:r?new Date(r).getTime():i,d=Math.max(0,l-a);return c.jsxs("span",{className:"shrink-0 tabular-nums",title:o?"Elapsed time":"Total duration",children:[o&&c.jsx(Qye,{className:"inline h-3 w-3 mr-0.5 -mt-px"}),f1t(d)]})}function m1t({thread:e,repo:r,repoName:n,prState:i,ghAvailable:s,onOpen:o,onStop:a,onDelete:l}){const d=Tv(),[u,f]=y.useState(!1),[p,g]=y.useState(!1),v=qrt({hasRepository:r!=null,threadKind:e.kind,threadStatus:e.status,threadBranch:e.branch,prUrl:e.prUrl,prState:i}),b=iL(e),_=e.kind==="delegation"||!d;return c.jsxs("div",{role:"button",tabIndex:0,className:`group relative grid w-full grid-cols-[minmax(0,1fr)_auto] items-center gap-2.5 border-b px-2.5 py-2.5 text-sm transition-colors hover:bg-muted/40 sm:gap-5 sm:px-3 sm:py-3.5 ${e.kind==="delegation"?"bg-amber-500/[0.04]":""}`,onClick:o,onKeyDown:S=>{S.target===S.currentTarget&&(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),o())},children:[c.jsxs("div",{className:"flex min-w-0 flex-col gap-0.5",children:[c.jsxs("div",{className:"flex w-full min-w-0 items-center gap-1.5",children:[c.jsx(sL,{status:e.status}),c.jsx("div",{className:"flex-1 truncate text-sm font-medium sm:text-sm",children:M4(e.title)?c.jsx(h9,{className:"h-3.5 w-28"}):c.jsx("span",{children:e.title.replace(/^\[.*?\]\s*/,"")})}),c.jsx(p1t,{createdAt:e.createdAt,completedAt:e.completedAt,status:e.status})]}),c.jsxs("div",{className:"flex min-w-0 flex-nowrap items-center gap-x-1.5 overflow-hidden pl-[calc(0.75rem+6px)] text-xs leading-tight text-muted-foreground sm:gap-x-1 sm:text-xs",children:[c.jsx("span",{className:"min-w-0 truncate",children:n}),_&&c.jsx(f9,{kind:e.kind}),e.kind==="delegation"&&c.jsx("span",{className:"hidden shrink-0 text-amber-700 dark:text-amber-300 sm:inline",children:"Helper thread"}),e.branch&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsx("span",{className:"hidden max-w-full truncate font-mono sm:inline",children:e.branch})]}),e.providerId&&e.providerId!=="jait"&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsx("span",{className:"hidden shrink-0 whitespace-nowrap sm:inline",children:e.providerId})]}),e.executionNodeName&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsxs("span",{className:"hidden max-w-full items-center gap-1 truncate text-blue-500 dark:text-blue-400 sm:inline-flex",children:[c.jsx(Ra,{className:"inline h-3 w-3 mr-0.5 -mt-px"}),e.executionNodeName]})]}),i&&c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"hidden sm:inline",children:"·"}),c.jsx(wde,{prState:i})]})]})]}),c.jsxs("div",{className:"flex items-center gap-0.5 sm:gap-1",children:[v&&r&&c.jsx("div",{className:"shrink-0",onClick:S=>S.stopPropagation(),onMouseDown:S=>S.stopPropagation(),onKeyDown:S=>S.stopPropagation(),children:c.jsx(dP,{threadId:e.id,cwd:e.workingDirectory??r.localPath,branch:e.branch,baseBranch:e.prBaseBranch??r.defaultBranch,threadTitle:e.title,threadStatus:e.status,threadKind:e.kind,prUrl:e.prUrl,prState:i,ghAvailable:s,showStatusBadge:!1})}),b&&c.jsx(_e,{variant:"ghost",size:"icon",className:"h-6 w-6 rounded-lg sm:h-7 sm:w-7",onClick:S=>{S.stopPropagation(),a()},title:e.kind==="delegation"?"End helper thread":"Stop thread",children:c.jsx(U1,{className:"h-3 w-3"})}),c.jsxs(G9,{open:p,onOpenChange:g,children:[c.jsx(K9,{asChild:!0,children:c.jsx(_e,{variant:"ghost",size:"icon",className:"h-8 w-8 rounded-lg opacity-100 transition-opacity",disabled:u,onClick:S=>S.stopPropagation(),title:"Delete thread",children:u?c.jsx(sr,{className:"h-4 w-4 animate-spin"}):c.jsx(gh,{className:"h-4 w-4"})})}),c.jsx(Y9,{align:"end",className:"w-56 p-2",onClick:S=>S.stopPropagation(),onMouseDown:S=>S.stopPropagation(),onKeyDown:S=>S.stopPropagation(),children:c.jsxs("div",{className:"space-y-2",children:[c.jsx("div",{className:"text-xs font-medium",children:"Delete this thread?"}),c.jsx("div",{className:"text-2xs leading-snug text-muted-foreground",children:"This removes the thread and its local worktree cleanup will run in the background."}),c.jsxs("div",{className:"flex justify-end gap-1.5",children:[c.jsx(_e,{variant:"ghost",size:"sm",className:"h-7 rounded-md px-2 text-xs",disabled:u,onClick:()=>g(!1),children:"Cancel"}),c.jsx(_e,{variant:"destructive",size:"sm",className:"h-7 rounded-md px-2 text-xs",disabled:u,onClick:()=>{f(!0),l().finally(()=>{f(!1),g(!1)})},children:"Delete"})]})]})})]})]})]})}function Gq({threads:e,getRepositoryForThread:r,threadPrStates:n,ghAvailable:i,onOpenThread:s,onStopThread:o}){const[a,l]=y.useState(!1);return e.length===0?null:c.jsxs(hu,{open:a,onOpenChange:l,children:[c.jsx(fu,{asChild:!0,children:c.jsxs(_e,{variant:"outline",size:"sm",className:"mr-1 h-8 gap-1.5 rounded-lg px-2 text-xs sm:mr-0",title:`${e.length} active ${e.length===1?"thread":"threads"}`,children:[c.jsx(sr,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),c.jsx("span",{className:"hidden sm:inline",children:"Active"}),c.jsx(rn,{variant:"secondary",className:"h-4 rounded-md px-1 text-2xs",children:e.length})]})}),c.jsxs(Sc,{align:"end",className:"w-[min(34rem,calc(100vw-1rem))] p-0",children:[c.jsx("div",{className:"flex items-center justify-between border-b px-3 py-2",children:c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx(sr,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),c.jsxs("span",{className:"text-sm font-medium",children:[e.length," active ",e.length===1?"thread":"threads"]})]})}),c.jsx("div",{className:"max-h-[min(28rem,70vh)] overflow-y-auto",children:e.map(d=>{const u=r(d),f=(u==null?void 0:u.name)??y6(d)??"Unknown repo",p=_de(d,d.id in n?n[d.id]:void 0);return c.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] gap-3 border-b px-3 py-3 last:border-b-0",children:[c.jsxs("button",{type:"button",className:"min-w-0 text-left transition-colors hover:text-foreground",onClick:()=>{l(!1),s(d.id)},children:[c.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[c.jsx(sL,{status:d.status}),c.jsx("span",{className:"truncate text-sm font-medium",children:M4(d.title)?"Generating title...":d.title.replace(/^\[.*?\]\s*/,"")})]}),c.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1 text-xs text-muted-foreground",children:[c.jsx("span",{className:"truncate",children:f}),d.branch&&c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 font-mono text-2xs",children:d.branch}),d.providerId&&d.providerId!=="jait"&&c.jsx(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:d.providerId}),d.executionNodeName&&c.jsxs(rn,{variant:"outline",className:"h-4 px-1 py-0 text-2xs text-blue-500 dark:text-blue-400 border-blue-200 dark:border-blue-800",children:[c.jsx(Ra,{className:"inline h-2.5 w-2.5 mr-0.5"}),d.executionNodeName]}),c.jsx(wde,{prState:p})]})]}),c.jsxs("div",{className:"flex items-center gap-1 self-start",children:[u&&c.jsx("div",{onClick:g=>g.stopPropagation(),onMouseDown:g=>g.stopPropagation(),children:c.jsx(dP,{threadId:d.id,cwd:d.workingDirectory??u.localPath,branch:d.branch,baseBranch:d.prBaseBranch??u.defaultBranch,threadTitle:d.title,threadStatus:d.status,threadKind:d.kind,prUrl:d.prUrl,prState:p,ghAvailable:i,showStatusBadge:!1})}),iL(d)&&c.jsx(_e,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg",onClick:g=>{g.stopPropagation(),Promise.resolve(o(d.id))},title:"Stop thread",children:c.jsx(U1,{className:"h-3 w-3"})})]})]},d.id)})})]})]})}function g1t(){var Lp,mi,c3,u3,Mx,$p,qu,Px,Lx;const e=y.useRef(""),[r,n]=y.useState(0),i=y.useCallback(D=>{const Q=typeof D=="function"?D(e.current):D;e.current=Q,n(he=>he+1)},[]),s=y.useCallback(D=>{e.current=D},[]),[o,a]=y.useState(void 0),[l,d]=y.useState(!1),[u,f]=y.useState(null),[p,g]=y.useState(()=>{const D=["chat","jobs","network","settings"],Q=window.location.pathname.replace(/^\/+/,"").split("/")[0];return D.includes(Q)?Q:"chat"}),[v,b]=y.useState("system"),[_,S]=y.useState(()=>localStorage.getItem("showSessionsSidebar")==="true"),[w,C]=y.useState(!1),[j,T]=y.useState(!1),[A,E]=y.useState(null),[R,P]=y.useState(null),B=y.useRef(null),[$,W]=y.useState(!1),[I,K]=y.useState(!1),M=y.useRef(!1),[z,L]=y.useState(!1),F=y.useRef(null),V=y.useRef(null),Y=y.useCallback(D=>{var Q;D&&((Q=V.current)==null||Q.call(V))},[]),H=y.useRef(!1),[U,J]=y.useState(null),[q,ee]=y.useState(null),[re,de]=y.useState({open:!1,target:null,displayState:"hidden",displayTarget:null}),[fe,te]=y.useState(!1),[se,ge]=y.useState(!0),[le,Qe]=y.useState(!0),[Ze,Ie]=y.useState("files"),[ne,Te]=y.useState(null),Ce=y.useRef(ne);Ce.current=ne;const[we,Be]=y.useState(()=>localStorage.getItem("showDebugPanel")==="true"),[wt,gt]=y.useState(!1),[Mt,Zt]=y.useState(null),[Rt,or]=y.useState(null),[Ee,$e]=y.useState(!1),[Se,ze]=y.useState(null),it=y.useRef(null),pt=y.useRef(null),[st,ot]=y.useState(240),[Dt,Xe]=y.useState(!1),tt=y.useRef(240),[Ot,nt]=y.useState(480),[Xt,Je]=y.useState(()=>{if(typeof window>"u")return null;const D=window.localStorage.getItem("jait:chatPanelWidth"),Q=D?Number.parseInt(D,10):Number.NaN;return Number.isFinite(Q)?Q:null}),[Ge,At]=y.useState({x:-1,y:-1}),[Re,ye]=y.useState({w:420,h:320}),kt=y.useRef(null),lt=y.useRef(null),mt=y.useRef(null),hr=y.useRef(null),[Tr,hn]=y.useState(!1),[Ur,$n]=y.useState("agent"),[sn,wn]=y.useState("normal"),[It,kr]=y.useState("agent"),[Pt,Qn]=y.useState("jait"),[ct,cr]=y.useState("full-access"),[Sn,Er]=y.useState(()=>Vq("jait")),Ut=Sn[Pt]??null,[nr,$o]=y.useState("developer"),tr=y.useRef(nr),[be,xt]=y.useState(""),[Jt,Bt]=y.useState(""),[je,Fe]=y.useState(""),[jt,fr]=y.useState(""),[ir,Br]=y.useState(""),[er,Kr]=y.useState("login"),[St,qt]=y.useState(!1),[Qt,mn]=y.useState(!1),[Pe,Dn]=y.useState(!1),[Us,Rc]=y.useState(!1),[ho,Do]=y.useState(null),[za,cs]=y.useState(()=>rv()??""),Mi=!!window.jaitDesktop||!!window.Capacitor,Lt=!!window.jaitDesktop,Wn=!!window.Capacitor,zi=Lt?"electron":Wn?"capacitor":"web",{resolvedTheme:ia}=$P(v),Nd=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedWorkspaceTab"):null,fo=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedTerminal"):null,[vs,wu]=y.useState(null),Mc=y.useRef(!1),po=y.useCallback(async()=>{try{const D=await fetch(`${Pn()}/health`,{signal:AbortSignal.timeout(5e3)});wu(D.ok)}catch{wu(!1)}},[]);y.useEffect(()=>{Mc.current||(Mc.current=!0,po())},[po]);const[qn,Ed]=y.useState(null),[Pc,Nn]=y.useState(!1),[pi,ts]=y.useState(!1),[sa,us]=y.useState(!1),mo=y.useRef(null),Fa=y.useRef(!1),oa=y.useRef(async()=>{}),[Yl,xl]=y.useState(null),[Vs,xs]=y.useState(!1),[Io,Fi]=y.useState(()=>Mi&&!pA()?"url":"auth"),[Su,In]=y.useState(!1),[qs,Ms]=y.useState(null),[Ps,Dh]=y.useState([]),[Ct,bs]=y.useState(null),[aa,Lc]=y.useState([]),[Zm,ku]=y.useState(!1),[Cu,ju]=y.useState("workspace"),[Tu,bl]=y.useState(null),[ry,ny]=y.useState([]),Ih=y.useRef(!1),rs=y.useRef(null),go=y.useRef(null),Tt=Tv();y.useEffect(()=>{M.current=$},[$]);const iy=y.useRef(!0);y.useEffect(()=>{if(iy.current){const Q=p==="chat"?"/":`/${p}`;window.location.pathname!==Q&&window.history.replaceState(null,"",Q+window.location.search),iy.current=!1;return}const D=p==="chat"?"/":`/${p}`;window.location.pathname!==D&&window.history.pushState(null,"",D)},[p]),y.useEffect(()=>{const D=["chat","jobs","network","settings"],Q=()=>{const he=window.location.pathname.replace(/^\/+/,"").split("/")[0],ue=D.includes(he)?he:"chat";g(ue)};return window.addEventListener("popstate",Q),()=>window.removeEventListener("popstate",Q)},[]),y.useEffect(()=>{const D=new URLSearchParams(window.location.search).get("jait");if(!D)return;try{const he=new URL(D),ue=he.hostname||he.pathname.replace(/^\/+/,"");["chat","jobs","network","settings"].includes(ue)&&g(ue)}catch{}const Q=new URL(window.location.href);Q.searchParams.delete("jait"),window.history.replaceState(null,"",Q.toString())},[]),y.useEffect(()=>{const D=window.launchQueue;D&&D.setConsumer(async Q=>{if(Q.files.length)for(const he of Q.files)try{const ue=await he.getFile(),me=ue.type||"application/octet-stream",Ae=new FileReader;Ae.onload=()=>{var Vt,Gt;const ht=Ae.result.split(",")[1]??"",bt=me.startsWith("image/")?Ae.result:void 0;(Vt=go.current)==null||Vt.addAttachment({name:ue.name,mimeType:me,data:ht,preview:bt}),(Gt=go.current)==null||Gt.focus()},ue.type.startsWith("image/")?Ae.readAsDataURL(ue):Ae.readAsDataURL(new Blob([await ue.arrayBuffer()],{type:me}))}catch{}})},[]);const[Bh,la]=y.useState(0),Gs=!Tt&&$,Jm=Tt&&$,_s=y.useCallback(()=>{if(Tt){const D=__("editor");ge(D.tree),Qe(D.editor);return}Qe(!0)},[Tt]),$c=y.useCallback(D=>{const Q=(D==null?void 0:D.trim())||(ne==null?void 0:ne.workspaceRoot)||null;Q&&(Te(he=>(he==null?void 0:he.workspaceRoot)===Q?he:{surfaceId:(he==null?void 0:he.surfaceId)??"",workspaceRoot:Q,nodeId:he==null?void 0:he.nodeId}),$o("developer"),$||(M.current=!0,W(!0)),_s(),ze({key:Date.now()}))},[ne==null?void 0:ne.workspaceRoot,$,_s]),Qm=y.useCallback(()=>{var D;(D=rs.current)==null||D.closePreviewTarget()},[]),Bo=y.useCallback((D,Q)=>{const he=(D==null?void 0:D.trim())||null,ue={open:!0,target:he,workspaceRoot:(Q==null?void 0:Q.trim())||(ne==null?void 0:ne.workspaceRoot)||null,displayState:he?"connected":"blank",displayTarget:he};return $o("developer"),J(he),de(ue),$||(M.current=!0,W(!0)),_s(),ee({target:he,key:Date.now()}),!0},[ne==null?void 0:ne.workspaceRoot,$,_s]),ca=y.useCallback(()=>({width:window.innerWidth,height:window.innerHeight}),[]),sy=y.useCallback((D=Re)=>Yyt({size:D,viewport:ca()}),[Re,ca]),oy=y.useCallback(D=>{var Gt,gr;if(D.pointerType!=="touch"&&D.button!==0)return;const Q=D.target;if(Q!=null&&Q.closest('button, [role="button"], a, input, textarea, select'))return;D.preventDefault();const he=D.currentTarget,ue=ca(),me=Yk({size:Re,viewport:ue}),Ae=Ge.x<0||Ge.y<0?sy(me):b_({position:Ge,size:me,viewport:ue});(me.w!==Re.w||me.h!==Re.h)&&ye(me),(Ae.x!==Ge.x||Ae.y!==Ge.y)&&At(Ae),kt.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,posX:Ae.x,posY:Ae.y};const ht=Zr=>{!kt.current||kt.current.pointerId!==Zr.pointerId||At(b_({position:{x:kt.current.posX+Zr.clientX-kt.current.startX,y:kt.current.posY+Zr.clientY-kt.current.startY},size:me,viewport:ca()}))},bt=()=>{var Zr,Ts;(Zr=he.hasPointerCapture)!=null&&Zr.call(he,D.pointerId)&&((Ts=he.releasePointerCapture)==null||Ts.call(he,D.pointerId)),document.removeEventListener("pointermove",ht),document.removeEventListener("pointerup",Vt),document.removeEventListener("pointercancel",Vt),document.body.style.cursor="",document.body.style.userSelect="",mt.current=null},Vt=Zr=>{!kt.current||kt.current.pointerId!==Zr.pointerId||(kt.current=null,bt())};D.pointerType!=="touch"&&(document.body.style.cursor="move"),document.body.style.userSelect="none",(Gt=mt.current)==null||Gt.call(mt),mt.current=bt,(gr=he.setPointerCapture)==null||gr.call(he,D.pointerId),document.addEventListener("pointermove",ht),document.addEventListener("pointerup",Vt),document.addEventListener("pointercancel",Vt)},[Ge,Re,sy,ca]),eg=y.useCallback(D=>{var bt,Vt;if(D.pointerType!=="touch"&&D.button!==0)return;D.preventDefault(),D.stopPropagation();const Q=D.currentTarget,he=ca(),ue=Yk({size:Re,viewport:he});(ue.w!==Re.w||ue.h!==Re.h)&&ye(ue),lt.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,w:ue.w,h:ue.h};const me=Gt=>{if(!lt.current||lt.current.pointerId!==Gt.pointerId)return;const gr=Yk({size:{w:lt.current.w+Gt.clientX-lt.current.startX,h:lt.current.h+Gt.clientY-lt.current.startY},viewport:ca()});ye(gr),At(Zr=>Zr.x<0||Zr.y<0?Zr:b_({position:Zr,size:gr,viewport:ca()}))},Ae=()=>{var Gt,gr;(Gt=Q.hasPointerCapture)!=null&&Gt.call(Q,D.pointerId)&&((gr=Q.releasePointerCapture)==null||gr.call(Q,D.pointerId)),document.removeEventListener("pointermove",me),document.removeEventListener("pointerup",ht),document.removeEventListener("pointercancel",ht),document.body.style.cursor="",document.body.style.userSelect="",hr.current=null},ht=Gt=>{!lt.current||lt.current.pointerId!==Gt.pointerId||(lt.current=null,Ae())};D.pointerType!=="touch"&&(document.body.style.cursor="nwse-resize"),document.body.style.userSelect="none",(bt=hr.current)==null||bt.call(hr),hr.current=Ae,(Vt=Q.setPointerCapture)==null||Vt.call(Q,D.pointerId),document.addEventListener("pointermove",me),document.addEventListener("pointerup",ht),document.addEventListener("pointercancel",ht)},[Re,ca]);y.useEffect(()=>{var D,Q;fe||(kt.current=null,lt.current=null,(D=mt.current)==null||D.call(mt),(Q=hr.current)==null||Q.call(hr),document.body.style.cursor="",document.body.style.userSelect="")},[fe]),y.useEffect(()=>()=>{var D,Q;(D=mt.current)==null||D.call(mt),(Q=hr.current)==null||Q.call(hr),document.body.style.cursor="",document.body.style.userSelect=""},[]),y.useEffect(()=>{if(!fe)return;const D=()=>{const Q=ca();let he;ye(ue=>{const me=Yk({size:ue,viewport:Q});return he=me,me.w===ue.w&&me.h===ue.h?ue:me}),At(ue=>{if(ue.x<0&&ue.y<0)return ue;const me=b_({position:ue,size:he,viewport:Q});return me.x===ue.x&&me.y===ue.y?ue:me})};return D(),window.addEventListener("resize",D),()=>window.removeEventListener("resize",D)},[fe,ca]);const{user:zo,token:dt,settings:Hi,isLoading:Fo,isAuthenticated:ei,login:tg,register:ay,logout:rp,bindSession:np,updateSettings:Ho,clearSessionArchive:Ad}=EQ(),Od=y.useCallback(async()=>{var D;if(dt){Nn(!0);try{if(Lt){const Q=window.jaitDesktop,[he,ue,me]=await Promise.all([(D=Q.getInfo)==null?void 0:D.call(Q),Q.checkForUpdate(),fetch(`${Xi}/health`).then(ht=>ht.ok?ht.json():null).catch(()=>null)]),Ae=(me==null?void 0:me.version)??"";Ed({currentVersion:Ae,latestVersion:ue.version??(he==null?void 0:he.appVersion)??"",hasUpdate:ue.updateAvailable})}else{const Q=await fetch(`${Xi}/api/update/check`,{headers:{Authorization:`Bearer ${dt}`}});Q.ok&&Ed(await Q.json())}}catch{}Nn(!1)}},[dt,Lt]),Dc=y.useCallback(async()=>{if(!(!dt||!(qn!=null&&qn.hasUpdate))){ts(!0);try{const D=await fetch(`${Xi}/api/update/apply`,{method:"POST",headers:{Authorization:`Bearer ${dt}`,"Content-Type":"application/json"},body:JSON.stringify({version:qn.latestVersion})});if(D.ok)mo.current=qn.latestVersion,Fa.current=!1,us(!0),fi.success(`Updated to v${qn.latestVersion}. Gateway is restarting...`);else{const Q=await D.json().catch(()=>({}));fi.error(Wq(Q.error,"Update failed"))}}catch{fi.error("Update request failed")}ts(!1)}},[dt,qn]),Rd=y.useCallback(()=>{const D=new URL(window.location.href);D.searchParams.set("_jaitUpdate",Date.now().toString()),(async()=>{try{if("caches"in window){const Q=await caches.keys();await Promise.all(Q.map(he=>caches.delete(he)))}}catch{}window.location.replace(D.toString())})()},[]),zh=y.useCallback(({connected:D,reconnected:Q})=>{if(!D){mo.current&&(Fa.current=!0);return}if(oa.current(),Q&&mo.current&&Fa.current){const he=mo.current;if(mo.current=null,Fa.current=!1,us(!1),zi==="web"){fi.success(`Gateway restarted on v${he}. Refreshing...`),Rd();return}fi.success(`Gateway restarted on v${he}.`),Od()}},[zi,Od,Rd]);y.useEffect(()=>{dt&&Od()},[dt,Od]);const Fh=y.useCallback(()=>d(!0),[]);y.useEffect(()=>{dt&&fetch(`${Xi}/api/filesystem/nodes`,{headers:dt?{Authorization:`Bearer ${dt}`}:{}}).then(D=>D.ok?D.json():null).then(D=>{D!=null&&D.nodes&&ny(D.nodes)}).catch(()=>{})},[dt]);const{workspaces:yo,personalSessions:Lr,archivedSessionsByWorkspace:Hh,activeWorkspaceId:ai,activeSessionId:et,loading:_l,createSession:ua,createWorkspace:Wo,updateWorkspace:Xl,switchWorkspace:rg,switchSession:vo,fetchArchivedSessions:ip,removeWorkspace:Nu,clearArchivedWorkspaces:ng,fetchArchivedWorkspaces:Wh,restoreWorkspace:Wi,renameSession:ig,fetchWorkspaces:Uh,hasMoreWorkspaces:ly,showMoreWorkspaces:sp,showFewerWorkspaces:op,workspaceListLimit:cy}=Qft(dt,Fh);y.useEffect(()=>{H.current=!1},[et]);const on=y.useMemo(()=>yo.find(D=>D.id===ai)??null,[yo,ai]),Ks=y.useRef(dt);Ks.current=dt;const Uo=y.useRef(Fo);Uo.current=Fo;const Md=y.useRef(_l);Md.current=_l;const ap=y.useRef(yo);ap.current=yo;const wl=y.useRef(et);wl.current=et;const Pd=y.useRef(on);Pd.current=on;const da=y.useMemo(()=>(on==null?void 0:on.sessions.find(D=>D.id===et))??Lr.find(D=>D.id===et)??null,[et,on,Lr]),lp=y.useMemo(()=>{if(!on)return Lr;const D=on.sessions,Q=Hh[on.id]??[],he=new Set;return[...D,...Q].filter(ue=>he.has(ue.id)?!1:(he.add(ue.id),!0)).sort((ue,me)=>new Date(me.lastActiveAt).getTime()-new Date(ue.lastActiveAt).getTime())},[on,Hh,Lr]),ha=y.useCallback(async()=>{const D=Date.now()+1500;for(;Date.now()<D;){if(!Uo.current&&!Md.current)return;await new Promise(Q=>window.setTimeout(Q,50))}},[]),sg=y.useCallback(D=>{bl(D),ku(!0)},[]),Ic=wv(),Ld=y.useCallback(async D=>{const Q=yo.find(me=>me.id===D);if(!await Ic({title:"Archive workspace",description:`Are you sure you want to archive "${(Q==null?void 0:Q.title)||(Q==null?void 0:Q.rootPath)||"this workspace"}"? You can clear archived workspaces later from Settings.`,confirmLabel:"Archive",variant:"destructive"}))return;if(await Nu(D)){fi.success("Workspace archived.");return}fi.error("Failed to archive workspace.")},[Ic,Nu,yo]),{messages:fa,isLoading:Ti,isLoadingHistory:ws,remainingPrompts:Zl,error:Sl,hitMaxRounds:kl,pendingPlan:cp,todoList:Ha,changedFiles:ds,messageQueue:Ys,completionCount:$d,contextUsage:Vh,sessionInfo:Jl,sendMessage:Bc,restartFromMessage:up,cancelRequest:pa,clearMessages:Eu,continueChat:Ss,executePlan:Au,rejectPlan:qh,enqueueMessage:Wa,dequeueMessage:Ql,updateQueueItem:dp,reorderQueueItem:Cl,setMessageQueueState:zc,acceptFile:ec,rejectFile:Ou,acceptAllFiles:uy,rejectAllFiles:xo,setTodoList:jl,addChangedFile:ks,setChangedFiles:tc,setOnChangedFilesSync:Dd,refreshMessages:rc}=Zft(et,dt,Fh,(ne==null?void 0:ne.surfaceId)??null),og=y.useMemo(()=>fa.map(D=>D.content),[fa]),[Xs,Vo]=y.useState({}),[Fc,hs]=y.useState(0),[Tl,Ua]=y.useState(0),Ls=y.useRef(new Set),{terminals:qo,activeTerminalId:Bn,setActiveTerminalId:ns,createTerminal:bo,killTerminal:Un,refresh:_o}=_ft(dt),Va=wft(dt),Gh=y.useRef(null);y.useEffect(()=>{if(w&&Bn){const D=setTimeout(()=>{var Q;return(Q=Gh.current)==null?void 0:Q.focus()},50);return()=>clearTimeout(D)}},[w,Bn]);const{provider:ag,model:lg}=Jft(),cg=Ift({token:dt}),xe=amt();oa.current=xe.refresh;const kn=y.useMemo(()=>snt(xe.activities),[xe.activities]),Yr=y.useMemo(()=>[...xe.threads].sort((D,Q)=>new Date(Q.updatedAt).getTime()-new Date(D.updatedAt).getTime()),[xe.threads]),$s=y.useMemo(()=>xe.selectedRepo?xe.getRuntimeInfoForRepository(xe.selectedRepo):null,[xe.getRuntimeInfoForRepository,xe.selectedRepo]),li=y.useMemo(()=>xe.selectedThread?xe.getRepositoryForThread(xe.selectedThread):null,[xe.getRepositoryForThread,xe.selectedThread]),Hc=y.useMemo(()=>li?xe.getRuntimeInfoForRepository(li):null,[xe.getRuntimeInfoForRepository,li]),ma=y.useMemo(()=>Yr.filter(D=>D.status==="running"),[Yr]),Ru=Tt&&nr==="manager"&&!!xe.selectedThread,Kh=y.useMemo(()=>xe.selectedThread?Xs[xe.selectedThread.id]??[]:[],[xe.selectedThread,Xs]),nc=xe.selectedRepo!=null,ic=$s!=null&&!$s.online&&!$s.loading,hp=xe.creating||!nc||ic,Id=xe.selectedRepo?ic?"Repository is offline...":xe.selectedThread?"Send a follow-up to the selected thread...":"Describe what you want to do...":"Select a repository to start a thread...",Yh=It==="thread"?Id:"Ask anything...";y.useEffect(()=>{var he,ue,me;const D=window.jaitDesktop;if(!D)return;(he=D.getInfo)==null||he.call(D).then(Ae=>xl(Ae.platform)),(ue=D.windowIsMaximized)==null||ue.call(D).then(Ae=>xs(Ae));const Q=(me=D.onMaximizedChange)==null?void 0:me.call(D,(Ae,ht)=>xs(ht));return()=>{Q==null||Q()}},[]);const qa=y.useRef(!1),ga=y.useRef(new Set),Go=y.useRef(null),[Nl,fp]=y.useState(0),sc=y.useCallback(D=>{ga.current.add(D)},[]),cn=y.useCallback(D=>ga.current.has(D)?(ga.current.delete(D),!0):!1,[]);y.useEffect(()=>{qa.current=!1},[et]),y.useEffect(()=>{a(void 0)},[et]);const Mu=y.useRef(null);y.useEffect(()=>{Mu.current=null},[et]);const Wc=y.useCallback(()=>{rc(),hs(D=>D+1)},[rc]),Pi=y.useRef(!1),G=y.useRef(0),oe=y.useRef(et),ie=y.useRef(!1),pe=y.useRef({}),ce=y.useRef({}),Ne=y.useRef({}),Le=y.useRef(null),Ve=y.useRef(!1);y.useEffect(()=>{Ys.length>0&&(Pi.current=!0)},[Ys.length]);const Nt=$d+Fc,Ht=y.useRef($d),ar=y.useRef(Fc);y.useEffect(()=>{$d!==Ht.current&&(Ht.current=$d,Ua(D=>D+1))},[$d]),y.useEffect(()=>{if(Fc===ar.current)return;const D=Fc>ar.current;ar.current=Fc,D&&Ua(Q=>Q+1)},[Fc]),y.useEffect(()=>{oe.current!==et&&(oe.current=et,hs(0),ar.current=0,Pi.current=!1,ie.current=!1,G.current=Nt)},[et,Nt]),y.useEffect(()=>{Ti&&(ie.current=!1)},[Ti]),y.useEffect(()=>{if(Nt<=G.current||Ti||ws||Ys.length>0)return;const D=Pi.current;if(G.current=Nt,Pi.current=!1,ie.current){ie.current=!1;return}U7({id:`chat-complete:${et??"global"}:${Nt}`,title:D?"Queued chat finished":"Chat finished",body:D?"All queued chat messages finished generating.":"Agent response finished generating.",level:"success",includeToast:!1})},[et,Nt,Ti,ws,Ys.length]);const[rr,Vr]=y.useState(!1),xn=xmt({authToken:dt,onError:D=>{console.warn("[voice] error:",D)},onDisconnected:()=>{Vr(!1)}});Le.current=xn,Ve.current=rr,y.useEffect(()=>{var ue;const D=async me=>{var Ae,ht;try{const Vt=[...await en.getActivities(me.id,40)].reverse().find(Ar=>{if(Ar.kind!=="message")return!1;const Mn=Ar.payload??{};return Mn.role==="assistant"&&(typeof Mn.content=="string"||typeof Ar.summary=="string")}),Gt=(Vt==null?void 0:Vt.payload)??{},gr=typeof Gt.content=="string"?Gt.content:(Vt==null?void 0:Vt.summary)??"",Zr=i1t(gr),Ts=Zr?`${me.title} finished. ${Zr}`:me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(Ae=Le.current)==null||Ae.announce(Ts)}catch{const bt=me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(ht=Le.current)==null||ht.announce(bt)}},Q={},he=new Set;for(const me of xe.threads){he.add(me.id),Q[me.id]=me.status;const Ae=((ue=Xs[me.id])==null?void 0:ue.length)??0;if(Ae>0&&(pe.current[me.id]=!0),(Ne.current[me.id]==="running"&&me.status!=="running"||ce.current[me.id])&&(ce.current[me.id]=me),ce.current[me.id]&&Ae===0){const bt=ce.current[me.id],Vt=pe.current[me.id]===!0;if(delete ce.current[me.id],delete pe.current[me.id],bt.status==="interrupted")continue;Ua(Zr=>Zr+1);const Gt=Vt?"Queued thread finished":"Thread finished",gr=bt.status==="completed"?`"${bt.title}" completed.`:`"${bt.title}" ended with status ${bt.status}.`;U7({id:`thread-complete:${me.id}:${bt.updatedAt}`,title:Gt,body:gr,level:bt.status==="completed"?"success":"warning",includeToast:!1}),Ve.current&&D(bt)}}for(const me of Object.keys(Ne.current))he.has(me)||(delete pe.current[me],delete ce.current[me]);Ne.current=Q},[xe.threads,Xs]);const Ga=y.useCallback(()=>{ie.current=!0,pa()},[pa]),[Pu,oc]=qpt(ai,"workspace.ui",dt),Xh=y.useRef(null);Xh.current=Pu;const Ka=y.useCallback((D,Q,he)=>{const me={...Xh.current??{panel:null,tabs:null,layout:null,terminal:null,preview:null},[D]:Q};Xh.current=me,oc(me,he)},[oc]),Cs=y.useCallback((D,Q)=>{Ka("panel",D,Q)},[Ka]),ac=y.useCallback((D,Q)=>{Ka("terminal",D,Q)},[Ka]),lc=y.useCallback(D=>{Ka("preview",D)},[Ka]),ug=!Pu&&!!ai&&!!dt,Zh=y.useCallback((D,Q)=>{Ka("layout",D,Q)},[Ka]),Zv=y.useCallback(D=>{Ka("tabs",D)},[Ka]),wo=(Pu==null?void 0:Pu.preview)??null,[,ya]=Xu(et,"screen-share.panel",dt),[,Bd,dy]=Xu(et,"chat.mode",dt),[,Jv,Jh]=Xu(et,"chat.responseStyle",dt),[,pp,mp]=Xu(et,"chat.providerRuntimeMode",dt),[,gp,yp]=Xu(et,"chat.cliModels",dt),[,Qv,Lu]=Xu(et,"chat.view",dt),[,ex]=Xu(et,"queued_messages",dt),[,$u]=Xu(et,"todo_list",dt),[,hy]=Xu(et,"queued_thread_messages",dt),[fy,Du,cc]=Xu(et,"manager.selectedRepo",dt),[vp,xp]=y.useState(null),[bp,Qh]=y.useState(!1),[zd,ef]=y.useState(!1),dg=y.useMemo(()=>q7(fy),[fy]);y.useEffect(()=>{xp(null),Qh(!1)},[ai]),y.useEffect(()=>{uc.current=!1,ef(!1)},[et]);const uc=y.useRef(!1);y.useEffect(()=>{if(!et){uc.current=!1,ef(!1);return}if(cc)return;if(uc.current){zd||ef(!0);return}const D=dg;if(!D.repoId&&!D.localPath){uc.current=!0,ef(!0);return}const Q=nue(xe.repositories,D);if(!Q){if(xe.repositories.length===0)return;uc.current=!0,ef(!0);return}if(xe.selectedRepoId!==Q){xe.setSelectedRepoId(Q);return}uc.current=!0,ef(!0)},[et,xe.repositories,xe.selectedRepoId,xe.setSelectedRepoId,cc,zd,dg]);const _p=y.useRef(!1),hg=y.useRef(null);y.useEffect(()=>{_p.current=!1,hg.current=null},[et]),y.useEffect(()=>{if(!et||!dt||cc||!zd)return;const D=xe.selectedRepo?{repoId:xe.selectedRepo.id,localPath:xe.selectedRepo.localPath}:null,Q=JSON.stringify(D);if(_p.current){if(Q===hg.current)return}else if(_p.current=!0,hg.current=Q,Q===JSON.stringify(dg))return;hg.current=Q,Du(D)},[et,xe.selectedRepo,cc,zd,dg,Du,dt]),y.useEffect(()=>{ee(null)},[ai]),y.useEffect(()=>{Te(null)},[ai]);const[,py]=Xu(et,"changed_files",dt);y.useEffect(()=>{var me,Ae,ht;const D=Go.current;if(!D){on&&Qh(!0);return}if(!on||D.workspaceId!==ai)return;const{ui:Q}=D,he=Q.panel;if(he){const bt=((me=he.remotePath)==null?void 0:me.trim())||null,Vt=((Ae=on.rootPath)==null?void 0:Ae.trim())||null,Gt=Vt||bt;Gt&&(sc("workspace.panel"),Te({surfaceId:!!(bt&&Vt&&bt===Vt)?he.surfaceId??"":"",workspaceRoot:Gt,nodeId:on.nodeId??he.nodeId}),M.current=he.open===!0,W(he.open===!0))}Q.tabs&&xp(Q.tabs);const ue=Q.preview;if(ue){const bt=Hq(ue.target);bt&&J(bt),ue.open&&((ht=Q.panel)==null?void 0:ht.open)===!0&&bt&&Bo(bt,ue.workspaceRoot??null)}Go.current=null,Qh(!0)},[on,ai,Nl,Bo]);const fg=y.useRef(null);y.useEffect(()=>{if(!Jm){fg.current=null;return}const D=`${ai??"no-workspace"}:${(ne==null?void 0:ne.surfaceId)??(ne==null?void 0:ne.workspaceRoot)??"no-workspace"}`;if(fg.current===D||(fg.current=D,!se||!le))return;const Q=DC();ge(Q.tree),Qe(Q.editor)},[Jm,ai,ne==null?void 0:ne.surfaceId,ne==null?void 0:ne.workspaceRoot,se,le]);const Ya=y.useCallback((D,Q)=>{var he;switch(sc(D),D){case"workspace.panel":if(!Q){M.current=!1,W(!1);break}if(Q&&typeof Q=="object"&&!Array.isArray(Q)){const ue=Q,me=((he=ue.remotePath)==null?void 0:he.trim())||(ne==null?void 0:ne.workspaceRoot)||null;me&&Te({surfaceId:ue.surfaceId??(ne==null?void 0:ne.surfaceId)??"",workspaceRoot:me,nodeId:ue.nodeId??(ne==null?void 0:ne.nodeId)});const Ae=ue.open===!0;M.current=Ae,W(Ae)}break;case"workspace.layout":if(Q&&typeof Q=="object"&&!Array.isArray(Q)){const ue=zq({tree:Q.tree!==!1,editor:Q.editor!==!1},Tt);ge(ue.tree),Qe(ue.editor)}break;case"screen-share.panel":te(Q?Q.open!==!1:!1);break;case"terminal.panel":C(Q?Q.open!==!1:!1);break;case"footer.menu":K(Q?Q.open===!0:!1);break;case"chat.mode":(Q==="ask"||Q==="agent"||Q==="plan")&&$n(Q);break;case"chat.responseStyle":Uq(Q)?wn(Q):Q===null&&wn("normal");break;case"chat.providerRuntimeMode":Q==="supervised"||Q==="full-access"?cr(Q):Q===null&&cr("full-access");break;case"chat.cliModels":Q&&typeof Q=="object"&&!Array.isArray(Q)?Er(Q):Q===null&&Er({});break;case"chat.view":(Q==="developer"||Q==="manager")&&$o(Q);break;case"todo_list":jl(yde(Q));break;case"file_changed":{const ue=Q;ue!=null&&ue.path&&ks(ue.path,ue.name??ue.path.split("/").pop()??ue.path);break}case"changed_files":{Array.isArray(Q)?tc(Q):Q===null&&tc([]);break}case"queued_messages":{Array.isArray(Q)?zc(Q):Q===null&&zc([]);break}case"queued_thread_messages":{Q&&typeof Q=="object"&&!Array.isArray(Q)?Vo(Q):Q===null&&Vo({});break}}},[jl,ks,tc,zc,Bo,Qm,Tt,sc,ne==null?void 0:ne.nodeId,ne==null?void 0:ne.surfaceId,ne==null?void 0:ne.workspaceRoot]),El=y.useCallback(D=>{var Ts;qa.current=!0;for(const Ar of Object.keys(D))sc(Ar);const Q=D["screen-share.panel"];Q&&Q.open!==!1?te(!0):te(!1);const he=D["chat.mode"];(he==="ask"||he==="agent"||he==="plan")&&$n(he);const ue=D["chat.responseStyle"];Uq(ue)?wn(ue):wn("normal");const me=D["chat.providerRuntimeMode"];cr(me==="supervised"||me==="full-access"?me:"full-access");const Ae=D["chat.cliModels"];if(Ae&&typeof Ae=="object"&&!Array.isArray(Ae))Er(Ae);else{const Ar=Vq(Pt);Er(Ar)}const ht=D["chat.view"];(ht==="developer"||ht==="manager")&&$o(ht),jl(Ar=>Zyt(Ar,D.todo_list));const bt=D.changed_files;Array.isArray(bt)?tc(bt):tc([]);const Vt=D.queued_messages;Array.isArray(Vt)?zc(Vt):zc([]);const Gt=D.queued_thread_messages;Gt&&typeof Gt=="object"&&!Array.isArray(Gt)?Vo(Gt):Vo({});const gr=D["footer.menu"];gr&&typeof gr=="object"&&!Array.isArray(gr)?K(gr.open===!0):K(!1);const Zr=D._workspace;if(Zr!=null&&Zr.id&&Zr.state){const Ar=Zr.state["workspace.ui"];if(Ar){if((Ts=Ar.terminal)!=null&&Ts.open?C(!0):C(!1),Ar.tabs&&xp(Ar.tabs),Ar.layout){sc("workspace.layout");const Mn=zq({tree:Ar.layout.tree!==!1,editor:Ar.layout.editor!==!1},Tt);ge(Mn.tree),Qe(Mn.editor)}Go.current={workspaceId:Zr.id,ui:Ar},fp(Mn=>Mn+1)}}},[jl,tc,zc,Pt,sc,Tt]),dc=y.useCallback((D,Q)=>fetch(`${Xi}/api/architecture?workspaceRoot=${encodeURIComponent(D)}`,{headers:{Authorization:`Bearer ${dt}`},signal:Q}).then(async he=>he.ok?(await he.json()).diagram:null),[dt]),{sendUIState:fn,sendArchitectureRenderResult:tx}=$pt({sessionId:et,token:dt,onStateSync:Ya,onFullState:El,onMessageComplete:Wc,onThreadEvent:xe.handleThreadEvent,onConnectionStateChange:zh,onFsChanges:y.useCallback(D=>{var me,Ae;la(ht=>ht+1);const Q=((Ae=(me=Ce.current)==null?void 0:me.workspaceRoot)==null?void 0:Ae.trim())||null;if(!Q||pt.current!==Q)return;const he=Rt!=null&&Rt.startsWith(Q)?Rt.slice(Q.length).replace(/^[/\\]+/,"").replace(/\\/g,"/"):".jait/architecture.mmd";D.changes.some(ht=>{const bt=ht.path.replace(/\\/g,"/");return bt===he||bt==="architecture.mmd"})&&dc(Q).then(ht=>{Zt((ht==null?void 0:ht.diagram)??null),or((ht==null?void 0:ht.filePath)??null)}).catch(()=>{Zt(null),or(null)})},[Rt,dc]),listeners:{"workspace.open":y.useCallback(D=>{Te({surfaceId:D.surfaceId,workspaceRoot:D.workspaceRoot,nodeId:D.nodeId});const Q={open:M.current,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};Cs(Q)},[Cs]),"workspace.close":y.useCallback(()=>{M.current=!1,W(!1),Te(null),gt(!1),Cs(null)},[Cs]),"terminal.focus":y.useCallback(D=>{g("chat"),C(!0),ac({open:!0}),_o(),D.terminalId&&ns(D.terminalId),D.reason==="interactive-input-required"&&fi(D.message??"Terminal wartet auf deine Eingabe (z. B. sudo Passwort).",{description:"Klicke ins Terminal und gib die erforderliche Eingabe ein.",duration:1e4})},[_o,ac,ns]),"dev-preview.open":y.useCallback(D=>{const Q=typeof D.target=="string"?D.target.trim():"";g("chat"),J(Q||null),lc({open:!0,target:Q||null,workspaceRoot:D.workspaceRoot??null}),Bo(Q||null,D.workspaceRoot??null)},[Bo,lc]),"screen-share.open":y.useCallback(()=>{te(!0),ya({open:!0})},[ya]),"screen-share.close":y.useCallback(()=>{te(!1),ya(null)},[ya]),"architecture.update":y.useCallback(D=>{var Q;D.diagram&&(it.current=D.requestId??null,Zt(D.diagram),or(D.filePath??null),$e(!1),gt(!0),(Q=D.workspaceRoot)!=null&&Q.trim()&&(pt.current=D.workspaceRoot.trim()),$c(D.workspaceRoot))},[$c])},onPreviewSessionEvent:SYe}),Iu=y.useCallback(D=>{const Q=it.current;Q&&(it.current=null,tx(Q,D))},[tx]),va=y.useCallback(D=>{xp(D),Zv(D)},[Zv]);y.useEffect(()=>{var ue;const D=((ue=ne==null?void 0:ne.workspaceRoot)==null?void 0:ue.trim())||null;if(!D||!dt){pt.current=null,Zt(null),or(null),$e(!1);return}if(pt.current===D)return;pt.current=D,Zt(null),or(null);let Q=!1;const he=new AbortController;return dc(D,he.signal).then(me=>{Q||(Zt((me==null?void 0:me.diagram)??null),or((me==null?void 0:me.filePath)??null))}).catch(()=>{Q||(Zt(null),or(null))}),()=>{Q=!0,he.abort()}},[ne==null?void 0:ne.workspaceRoot,dc,dt]);const Li=y.useRef(null);y.useEffect(()=>{if(ai&&dt&&!bp)return;const D=ne?{open:$,remotePath:ne.workspaceRoot,surfaceId:ne.surfaceId,nodeId:ne.nodeId}:null,Q=JSON.stringify(D);if(Q!==Li.current&&(Li.current=Q,Cs(D),et)){if(cn("workspace.panel"))return;fn("workspace.panel",D,et)}},[et,ne,ai,cn,fn,Cs,$,dt,bp]);const wp=y.useRef(null),Ui=y.useCallback((D,Q)=>{ge(D.tree),Qe(D.editor),Q!=null&&Q.immediateSync&&(wp.current=JSON.stringify(D),Zh(D,{immediate:!0}),et&&fn("workspace.layout",D,et))},[et,fn,Zh]);y.useEffect(()=>{if(ai&&dt&&ug)return;const D={tree:se,editor:le},Q=JSON.stringify(D);if(Q!==wp.current&&(wp.current=Q,Zh(D),et)){if(cn("workspace.layout"))return;fn("workspace.layout",D,et)}},[se,le,Zh,ai,ug,dt,et,cn,fn]);const Xr=y.useRef(null),ti=y.useRef(null);y.useEffect(()=>{if(et&&dt&&!qa.current)return;const D={open:I},Q=JSON.stringify(D);Q!==ti.current&&(ti.current=Q,!cn("footer.menu")&&fn("footer.menu",D,et))},[et,cn,fn,I,dt]),y.useEffect(()=>{et&&dt&&dy||Ur!==Xr.current&&(Xr.current=Ur,Bd(Ur),!cn("chat.mode")&&fn("chat.mode",Ur,et))},[Ur,Bd,fn,et,dy,dt,cn]);const is=y.useRef(null);y.useEffect(()=>{et&&dt&&Jh||sn!==is.current&&(is.current=sn,Jv(sn),!cn("chat.responseStyle")&&fn("chat.responseStyle",sn,et))},[sn,Jv,fn,et,Jh,dt,cn]);const pg=y.useRef(null);y.useEffect(()=>{et&&dt&&mp||ct!==pg.current&&(pg.current=ct,pp(ct),!cn("chat.providerRuntimeMode")&&fn("chat.providerRuntimeMode",ct,et))},[ct,pp,fn,et,mp,dt,cn]);const tf=y.useRef(null);y.useEffect(()=>{et&&dt&&Lu||nr!==tf.current&&(tf.current=nr,Qv(nr),!cn("chat.view")&&fn("chat.view",nr,et))},[nr,Qv,fn,et,Lu,dt,cn]);const Fd=y.useRef(null);y.useEffect(()=>{const D=Ys.length>0?Ys:null,Q=JSON.stringify(D);Q!==Fd.current&&(Fd.current=Q,ex(D),!cn("queued_messages")&&fn("queued_messages",D,et))},[Ys,ex,fn,et,cn]);const mg=y.useRef(null);y.useEffect(()=>{if(et&&dt&&!qa.current)return;const D=Jyt(Ha),Q=`${et??""}:${JSON.stringify(D)}`;Q!==mg.current&&(mg.current=Q,$u(D),!cn("todo_list")&&fn("todo_list",D,et))},[Ha,$u,fn,et,cn,dt]);const Sp=y.useRef(null);y.useEffect(()=>{const D=Object.keys(Xs).length>0?Xs:null,Q=`${et??""}:${JSON.stringify(D)}`;Q!==Sp.current&&(Sp.current=Q,hy(D),!cn("queued_thread_messages")&&fn("queued_thread_messages",D,et))},[Xs,hy,fn,et,cn]),y.useEffect(()=>(Dd(D=>{const Q=D.length>0?D:null;py(Q),!cn("changed_files")&&fn("changed_files",Q,et)}),()=>Dd(null)),[fn,et,Dd,cn,py]),y.useEffect(()=>{localStorage.setItem("showSessionsSidebar",_?"true":"false")},[_]),y.useEffect(()=>{if(!_)return;const D=window.requestAnimationFrame(()=>{var Q;(Q=B.current)==null||Q.focus({preventScroll:!0})});return()=>window.cancelAnimationFrame(D)},[_]);const kp=y.useCallback(D=>{if(!Tt)return;const Q=D.relatedTarget;Q&&D.currentTarget.contains(Q)||window.requestAnimationFrame(()=>{const he=B.current,ue=document.activeElement;!he||ue&&he.contains(ue)||S(!1)})},[Tt]);y.useEffect(()=>{localStorage.setItem("showDebugPanel",we?"true":"false")},[we]);const Cp=y.useCallback(D=>{Qn(D)},[]),ci=y.useCallback(D=>{wn(D)},[]),Hd=y.useCallback(D=>{cr(D)},[]),Wd=y.useCallback(D=>{Er(Q=>({...Q,[Pt]:D}))},[Pt]),rx=y.useRef(null);y.useEffect(()=>{if(et&&dt&&yp)return;const D={};for(const ue of["jait","codex","claude-code"]){const me=Sn[ue];typeof me=="string"&&me.trim()&&(D[ue]=me)}const Q=Object.keys(D).length>0?D:null,he=JSON.stringify(Q);he!==rx.current&&(rx.current=he,gp(Q),!cn("chat.cliModels")&&(fn("chat.cliModels",Q,et),localStorage.removeItem("cliModelsByProvider"),localStorage.removeItem("cliModel")))},[Sn,et,yp,fn,gp,dt,cn]);const nx=y.useRef(!1);y.useEffect(()=>{if(!nx.current){nx.current=!0;return}dt&&Ho({chat_provider:Pt})},[Pt]),y.useEffect(()=>{tr.current=nr},[nr]),y.useEffect(()=>{nr==="manager"&&we&&Be(!1)},[nr,we]);const ix=y.useCallback(()=>{te(!0),ya({open:!0}),!cn("screen-share.panel")&&fn("screen-share.panel",{open:!0},et)},[ya,fn,et,cn]),jp=y.useCallback(()=>{te(!1),ya(null),!cn("screen-share.panel")&&fn("screen-share.panel",null,et)},[ya,fn,et,cn]),gg=y.useCallback(()=>{Qm(),J(null),ee(null),de({open:!1,target:null,displayState:"hidden",displayTarget:null}),lc(null)},[Qm,lc]),Tp=y.useRef(""),So=y.useCallback(D=>{const Q=Hq(D.target),he=D.open?Q?"connected":"blank":"hidden",ue={open:D.open,target:Q,displayState:he,displayTarget:he==="connected"?Q:null};if(de(me=>me.open===ue.open&&me.target===ue.target&&me.displayState===ue.displayState&&me.displayTarget===ue.displayTarget?me:ue),D.open&&Q){const me={open:!0,target:Q??U??null,workspaceRoot:(ne==null?void 0:ne.workspaceRoot)??null,displayState:he,displayTarget:he==="connected"?Q??U??null:null},Ae=`${me.open}:${me.target??""}:${me.workspaceRoot??""}:${me.displayState??""}:${me.displayTarget??""}`;if(Ae===Tp.current)return;Tp.current=Ae,lc(me);return}Tp.current!==""&&(Tp.current="",lc(null))},[ne==null?void 0:ne.workspaceRoot,U,lc]),ri=(wo==null?void 0:wo.open)===!0||re.open,Bu=y.useCallback(()=>{C(!0),ac({open:!0},{immediate:Tt}),!cn("terminal.panel")&&fn("terminal.panel",{open:!0},et)},[ac,fn,et,cn,Tt]),xa=y.useCallback(()=>{C(!1),Xe(!1),ac(null,{immediate:Tt}),!cn("terminal.panel")&&fn("terminal.panel",null,et)},[ac,fn,et,cn,Tt]),Uc=y.useCallback(()=>{H.current=!0,M.current=!1,W(!1);const D=ne?{open:!1,remotePath:ne.workspaceRoot,surfaceId:ne.surfaceId,nodeId:ne.nodeId}:null;if(Li.current=JSON.stringify(D),Tt){const Q=DC();Ui(Q,{immediateSync:!0})}D&&(Cs(D,{immediate:!0}),et&&fn("workspace.panel",D,et))},[et,ne,Ui,Tt,fn,Cs]);V.current=Uc;const my=y.useCallback(()=>{if(Tt){const D=Fq({tree:se,editor:le},"tree");Ui(D,{immediateSync:!0});return}ge(D=>!D)},[Ui,Tt,se,le]),Vc=y.useCallback(()=>{if(Tt){const D=Fq({tree:se,editor:le},"editor");Ui(D,{immediateSync:!0});return}Qe(D=>!D)},[Ui,Tt,se,le]),yg=y.useCallback(D=>{Ie(D);const Q=__("tree");Ui(Q,{immediateSync:!0})},[Ui]),gy=y.useCallback(()=>{const D=__("editor");Ui(D,{immediateSync:!0})},[Ui]),vg=y.useCallback(D=>{g("chat");const Q=(D==null?void 0:D.trim())||(U==null?void 0:U.trim())||null;J(Q);const he={open:!0,target:Q,workspaceRoot:(ne==null?void 0:ne.workspaceRoot)??null};lc(he),Bo(Q,(ne==null?void 0:ne.workspaceRoot)??null)},[lc,U,Bo,ne==null?void 0:ne.workspaceRoot]),zu=y.useCallback(async(D,Q,he)=>{const ue=he??et,me=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:D,sessionId:ue,nodeId:Q||"gateway"})});if(!me.ok){const Ae=await me.json().catch(()=>({message:"Unknown error"}));throw new Error(Ae.message??"Failed to open workspace")}dt&&Ho({workspace_picker_path:D,workspace_picker_node_id:Q||"gateway"}).catch(()=>{})},[et,dt,Ho]),KS=y.useCallback(async D=>{var me;const Q=yo.find(Ae=>Ae.id===D);if(!Q)return;Tt&&S(!1);const ue=Q.sessions.some(Ae=>Ae.id===et)?et:((me=Q.sessions[0])==null?void 0:me.id)??null;if(rg(D),Q.rootPath)try{const Ae=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:Q.rootPath,sessionId:ue,nodeId:Q.nodeId||"gateway"})});if(!Ae.ok)return;const ht=await Ae.json(),bt=ht.nodeId||Q.nodeId||void 0;Te({surfaceId:ht.surfaceId,workspaceRoot:ht.workspaceRoot,nodeId:bt}),M.current=!0,W(!0),Cs({open:!0,remotePath:ht.workspaceRoot,surfaceId:ht.surfaceId,nodeId:bt})}catch(Ae){console.error("Failed to open workspace:",Ae)}},[yo,et,rg,Cs,Tt]),YS=y.useCallback(()=>{ju("workspace"),ku(!0)},[]),XS=y.useCallback(D=>{!D||!ai||Hh[ai]||ip(ai)},[ai,Hh,ip]),xg=y.useCallback(async(D,Q,he)=>{if(Tu){bl(null),await Xl(Tu,{rootPath:D,nodeId:Q});return}const ue=await Wo({rootPath:D,nodeId:Q});if(!ue)throw new Error("Failed to create workspace");const me=ue.sessions[0]??await ua(ue.id);if(!me)throw new Error("Failed to create workspace session");const Ae=(he==null?void 0:he.openEditor)??Cu==="editor";if(M.current=Ae,await zu(D,Q,me.id),W(Ae),Ae&&Tt){const ht=__("editor");Ui(ht,{immediateSync:!0})}Cs({open:Ae,remotePath:D,nodeId:Q})},[Ui,Tu,ua,Wo,Tt,Xl,zu,Cs,Cu]),Xa=y.useCallback(async(D,Q,he)=>{await zu(D,Q??void 0,he),M.current=!0,W(!0),Tt?Ui(DC(),{immediateSync:!0}):(ge(!0),_s()),Cs({open:!0,remotePath:D,nodeId:Q??void 0})},[Ui,Tt,zu,Cs,_s]),Np=y.useCallback(async()=>{var ht,bt,Vt,Gt;if(!Ce.current&&!Pd.current&&(Uo.current||Md.current)&&await ha(),Ce.current)return Ce.current;const D=Pd.current,Q=wl.current;if(D!=null&&D.rootPath)return await Xa(D.rootPath,D.nodeId??"gateway",Q),Ce.current;const he=(ht=Go.current)==null?void 0:ht.ui.panel,ue=((bt=he==null?void 0:he.remotePath)==null?void 0:bt.trim())||null;if(ue&&Q)return await Xa(ue,(he==null?void 0:he.nodeId)??void 0,Q),Ce.current;const me=(Vt=Xh.current)==null?void 0:Vt.panel,Ae=((Gt=me==null?void 0:me.remotePath)==null?void 0:Gt.trim())||null;return Ae&&Q?(await Xa(Ae,(me==null?void 0:me.nodeId)??void 0,Q),Ce.current):null},[Xa,ha]),ZS=y.useCallback(async()=>{var he;const D=await Np();if(!D)return;if(ri){gg();return}const Q=re.target??(U==null?void 0:U.trim())??((he=wo==null?void 0:wo.target)==null?void 0:he.trim())??null;Bo(Q,D.workspaceRoot??null)||vg(Q)},[gg,U,Np,vg,ri,Bo,wo==null?void 0:wo.target,re.target]),x6=y.useCallback(async()=>{var Q;const D=await Np();if(D){if(wt){(Q=rs.current)==null||Q.closeArchitectureTab(),ze(null),gt(!1);return}gt(!0),$c(D.workspaceRoot)}},[Np,$c,wt]),bg=y.useCallback(async()=>{var Zr,Ts,Ar,Mn,En,Ni,zn,Si,Ds,Gd,Al;if($){Uc();return}H.current=!1,!Ce.current&&!Pd.current&&(Uo.current||Md.current)&&await ha();const D=Ce.current,Q=Pd.current,he=wl.current,ue=ap.current,me=Ks.current;if(nr==="manager"&&xe.selectedThread){const Ei=xe.selectedThread.workingDirectory??(li==null?void 0:li.localPath);if(Ei){if((D==null?void 0:D.workspaceRoot)===Ei){M.current=!0,W(!0),Tt?_s():ge(!0);const Gi={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};Cs(Gi);return}let qi=he;if(!qi){await xg(Ei,(li==null?void 0:li.deviceId)??"gateway",{openEditor:!0});return}if(!qi)return;await Xa(Ei,(li==null?void 0:li.deviceId)??void 0,qi);return}}if(D){M.current=!0,W(!0),Tt?_s():ge(!0);const Ei={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};Cs(Ei);return}if(Q!=null&&Q.rootPath){await Xa(Q.rootPath,Q.nodeId??"gateway",he);return}const Ae=(Zr=Go.current)==null?void 0:Zr.ui.panel,ht=((Ts=Ae==null?void 0:Ae.remotePath)==null?void 0:Ts.trim())||null;if(ht&&he){await Xa(ht,(Ae==null?void 0:Ae.nodeId)??void 0,he);return}const bt=(Ar=Xh.current)==null?void 0:Ar.panel,Vt=((Mn=bt==null?void 0:bt.remotePath)==null?void 0:Mn.trim())||null;if(Vt&&he){await Xa(Vt,(bt==null?void 0:bt.nodeId)??void 0,he);return}const Gt=(he?ue.find(Ei=>Ei.sessions.some(qi=>qi.id===he)):null)??(ue.length===1?ue[0]??null:null),gr=((En=Gt==null?void 0:Gt.rootPath)==null?void 0:En.trim())||null;if(Gt&&gr){const Ei=Gt.sessions.find(qi=>qi.id===he)??Gt.sessions[0]??null;if(Ei){vo(Gt.id,Ei.id),await Xa(gr,Gt.nodeId??void 0,Ei.id);return}await xg(gr,Gt.nodeId??"gateway",{openEditor:!0});return}if(he&&me)try{const Ei=await fetch(`${Xi}/api/sessions/${he}`,{headers:{Authorization:`Bearer ${me}`}});if(Ei.ok){const qi=await Ei.json();let Gi=null;if(qi.workspaceId){const Ko=await fetch(`${Xi}/api/workspaces/${qi.workspaceId}`,{headers:{Authorization:`Bearer ${me}`}});Ko.ok&&(Gi=await Ko.json())}const Ki=((Ni=Gi==null?void 0:Gi.rootPath)==null?void 0:Ni.trim())||((zn=qi.workspacePath)==null?void 0:zn.trim())||null;if(Ki){Gi!=null&&Gi.id&&vo(Gi.id,qi.id),await Xa(Ki,(Gi==null?void 0:Gi.nodeId)??void 0,qi.id);return}}}catch{}if(me)try{const Ei=await fetch(`${Xi}/api/workspaces/last-active`,{headers:{Authorization:`Bearer ${me}`}});if(Ei.ok){const qi=await Ei.json(),Gi=((Ds=(Si=qi.workspace)==null?void 0:Si.rootPath)==null?void 0:Ds.trim())||Vt,Ki=((Gd=qi.session)==null?void 0:Gd.id)??he;if((Al=qi.workspace)!=null&&Al.id&&Gi&&Ki){vo(qi.workspace.id,Ki),await Xa(Gi,qi.workspace.nodeId??(bt==null?void 0:bt.nodeId)??void 0,Ki);return}}}catch{}ju("editor"),ku(!0)},[$,ne,on,Uc,Cs,et,nr,xe.selectedThread,li,yo,vo,dt,xg,Tt,_s,Xa,ha]);y.useEffect(()=>{if(!(ne!=null&&ne.workspaceRoot)||!et)return;let D=!1;return(async()=>{try{if(ne.surfaceId&&((await fetch(`${Xi}/api/workspace/list?path=${encodeURIComponent(ne.workspaceRoot)}&surfaceId=${encodeURIComponent(ne.surfaceId)}`)).ok||D))return;const Q=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:ne.workspaceRoot,sessionId:et,nodeId:ne.nodeId||"gateway"})});if(!Q.ok||D)return;const he=await Q.json();if(D)return;Te({surfaceId:he.surfaceId,workspaceRoot:he.workspaceRoot,nodeId:he.nodeId});const ue={open:M.current,remotePath:he.workspaceRoot,surfaceId:he.surfaceId,nodeId:he.nodeId};Cs(ue)}catch{}})(),()=>{D=!0}},[ne==null?void 0:ne.nodeId,ne==null?void 0:ne.surfaceId,ne==null?void 0:ne.workspaceRoot,et]),y.useEffect(()=>{const D=Mu.current;Mu.current=ds.length,D!==null&&ds.length!==0&&(ds.length<=D||H.current||$||(M.current=!0,W(!0)))},[ds.length]);const sx=y.useMemo(()=>ds.filter(D=>D.state==="undecided").map(D=>D.path),[ds]);y.useEffect(()=>{b(Hi.theme)},[Hi.theme]),y.useEffect(()=>{Fo||Hi.chat_provider&&Hi.chat_provider!==Pt&&Qn(Hi.chat_provider)},[Hi.chat_provider,Fo]),y.useEffect(()=>{var ue,me;if(!(Lt&&Yl==="win32"))return;const D=getComputedStyle(document.documentElement),Q=D.getPropertyValue("--background").trim(),he=D.getPropertyValue("--foreground").trim();(me=(ue=window.jaitDesktop)==null?void 0:ue.setTitleBarOverlay)==null||me.call(ue,{color:Q?`hsl(${Q})`:ia==="dark"?"#202020":"#e8ecf1",symbolColor:he?`hsl(${he})`:ia==="dark"?"#f2f2f2":"#0a0a0a",height:39})},[ia,Yl,Lt]),y.useEffect(()=>{if(!Fo&&!ei){const D=requestAnimationFrame(()=>d(!0));return fetch(`${Pn()}/health`,{signal:AbortSignal.timeout(4e3)}).then(Q=>Q.ok?Q.json():null).then(Q=>{Q&&typeof Q.hasUsers=="boolean"&&(Do(Q.hasUsers),Q.hasUsers||Kr("register"))}).catch(()=>{Mi&&pA()&&(Fi("url"),Ms("Gateway is unreachable. Check the URL or try a different one."),cs(rv()??""))}),()=>cancelAnimationFrame(D)}},[Fo,ei]),y.useEffect(()=>{ei&&et&&np(et)},[ei,et,np]),y.useEffect(()=>{if(Sl==="login_required"){const D=requestAnimationFrame(()=>d(!0));return()=>cancelAnimationFrame(D)}},[Sl]),y.useEffect(()=>{(async()=>{if(!et){hn(!1);return}try{const he=await(await fetch(`${Xi}/api/consent/pending/${et}/approve-all`)).json();hn(he.approveAllEnabled===!0)}catch{hn(!1)}})()},[et]);const ox=y.useCallback(async D=>{var ue;const Q=v,he=((ue=zQ())==null?void 0:ue.id)??null;b(D),v5(null);try{await Ho({theme:D})}catch{b(Q),v5(he)}},[v,Ho]),ax=y.useCallback(D=>{D.preventDefault(),Ih.current=!0;const Q=D.clientY,he=st,ue=window.innerHeight*.9,me=()=>{Ih.current=!1,document.removeEventListener("mousemove",Ae),document.removeEventListener("mouseup",ht),window.removeEventListener("blur",bt),document.body.style.cursor="",document.body.style.userSelect=""},Ae=Vt=>{if(!Ih.current)return;const Gt=Q-Vt.clientY;ot(Math.min(ue,Math.max(160,he+Gt)))},ht=()=>{me()},bt=()=>{me()};document.body.style.cursor="row-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",Ae),document.addEventListener("mouseup",ht),window.addEventListener("blur",bt)},[st]),JS=y.useCallback(D=>{D.preventDefault();const Q=D.clientX,he=Ot,ue=window.innerWidth*.7,me=ht=>{const bt=ht.clientX-Q;nt(Math.min(ue,Math.max(280,he+bt)))},Ae=()=>{document.removeEventListener("mousemove",me),document.removeEventListener("mouseup",Ae),window.removeEventListener("blur",Ae),document.body.style.cursor="",document.body.style.userSelect=""};document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",me),document.addEventListener("mouseup",Ae),window.addEventListener("blur",Ae)},[Ot]),ss=(ne==null?void 0:ne.workspaceRoot)??(on==null?void 0:on.rootPath)??null,lx=re.workspaceRoot??(wo==null?void 0:wo.workspaceRoot)??(ne==null?void 0:ne.workspaceRoot)??null,cx=y.useMemo(()=>{var ue;const D=(ue=on==null?void 0:on.title)==null?void 0:ue.trim();if(D)return D;const Q=ss==null?void 0:ss.trim();if(!Q)return null;const he=Q.replace(/[\\/]+$/,"");return he.split(/[\\/]/).pop()||he},[on==null?void 0:on.title,ss]),Ud=y.useMemo(()=>ss?qo.filter(D=>{if(!D.workspaceRoot)return!1;const Q=D.workspaceRoot.replace(/\\/g,"/").toLowerCase(),he=ss.replace(/\\/g,"/").toLowerCase();return Q===he}):qo,[qo,ss]),Ep=y.useCallback(async(D=null)=>{const Q=await _o(),he=ss,ue=he?Q.filter(Ae=>(Ae.workspaceRoot??"").replace(/\\/g,"/").toLowerCase()===he.replace(/\\/g,"/").toLowerCase()):Q;if(D&&ue.some(ht=>ht.id===D))return ns(D),D;if(Bn&&ue.some(Ae=>Ae.id===Bn))return Bn;if(ue.length>0){const Ae=ue[ue.length-1].id;return ns(Ae),Ae}return(await bo(et??"default",ss??void 0)).id},[_o,ns,Bn,bo,et,ss]),QS=y.useCallback(async D=>{g("chat"),Bu(),await Ep(D)},[Ep,Bu]),Za=y.useCallback(async D=>{if(_&&S(!1),Sf({showWorkspace:$,showTerminal:w,showWorkspaceTree:se,showWorkspaceEditor:le,treeTab:Ze},D)){if(D==="terminal"){xa();return}Uc();return}if(D==="terminal"){g("chat"),Uc(),Bu(),await Ep();return}if(w&&xa(),$||await bg(),D==="editor"){gy();return}yg(D)},[xa,Uc,Ep,bg,Ze,Bu,g,gy,yg,_,w,$,le,se]),ux=y.useCallback(D=>{var Q,he;(Q=go.current)==null||Q.insertChip(D),(he=go.current)==null||he.focus()},[]),_g=y.useCallback((D,Q,he,ue)=>{var Ae,ht;Q.trim()&&((Ae=go.current)==null||Ae.insertSegments(s1t(D,he,ue)),(ht=go.current)==null||ht.focus())},[]),wg=y.useCallback((D,Q,he,ue,me)=>{var bt,Vt;const Ae=Q.trim();if(!Ae)return;const ht=D.replace(/^term-/,"").slice(0,8)||D;(bt=go.current)==null||bt.insertSegments(o1t({terminalId:D,name:ht,...he?{workspaceRoot:he}:{}},Ae,ue,me)),(Vt=go.current)==null||Vt.focus()},[]),dx=y.useCallback(D=>{var Q,he;D.selector&&((Q=go.current)==null||Q.insertSegments(a1t(D)),(he=go.current)==null||he.focus(),g("chat"))},[g]),yy=y.useCallback(async()=>{if(w){xa();return}g("chat"),Bu(),await Ep()},[w,Ep,Bu,xa]),e3=y.useCallback(async D=>{var he;const Q=Ud.length===1&&((he=Ud[0])==null?void 0:he.id)===D;await Un(D),Q&&xa()},[Ud,Un,xa]),hx=y.useCallback(D=>{var me,Ae,ht;const Q=Ud.find(bt=>bt.id===D),he=`detached-terminal-${D}-${Date.now()}`;Uft({id:he,terminalId:D,token:dt??null,label:((me=Q==null?void 0:Q.metadata)==null?void 0:me.cwd)??`Terminal ${D.slice(0,6)}`,theme:ia==="dark"?"dark":"light",workspaceRoot:(Q==null?void 0:Q.workspaceRoot)??ss??null});const ue=`${window.location.origin}${window.location.pathname}?detachedTerminal=${encodeURIComponent(he)}`;if((Ae=window.jaitDesktop)!=null&&Ae.openWorkspaceWindow)window.jaitDesktop.openWorkspaceWindow({url:ue,title:"Terminal"});else{const bt=window.open(ue,`jait-detached-terminal-${D}`,"popup=yes,width=800,height=600,resizable=yes,scrollbars=yes");(ht=bt==null?void 0:bt.focus)==null||ht.call(bt)}},[Ud,dt,ia,ss]),rf=y.useCallback(D=>{D.length!==0&&(Dh(Q=>{const he=[...Q];for(const ue of D){const me=he.findIndex(Ae=>Ae.path===ue.path);me>=0?he[me]=ue:he.push(ue)}return he}),bs(Q=>{var he;return Q??((he=D[0])==null?void 0:he.id)??null}))},[]),Sg=y.useCallback(D=>pH(D,ne==null?void 0:ne.workspaceRoot)?(ne==null?void 0:ne.workspaceRoot)??null:on!=null&&on.rootPath&&pH(D,on.rootPath)?on.rootPath:null,[ne==null?void 0:ne.workspaceRoot,on==null?void 0:on.rootPath]),vy=y.useCallback(async D=>{var Q;try{const he=Sg(D);if(!he){fi("File is outside the active workspace. Open its directory explicitly to browse it.");return}he&&(!ne||ne.workspaceRoot!==he)&&await zu(he,ne==null?void 0:ne.nodeId,et);const ue={};dt&&(ue.Authorization=`Bearer ${dt}`);const me=ne!=null&&ne.surfaceId&&he===ne.workspaceRoot?`&surfaceId=${encodeURIComponent(ne.surfaceId)}`:"",Ae=D.split(/[/\\]/).pop()??D,ht=$_(Ae),bt=async()=>($||(M.current=!0,W(!0)),_s(),rs.current?!0:(await new Promise(Mn=>requestAnimationFrame(()=>Mn())),rs.current!=null)),Vt=async(Mn,En,Ni)=>{var Si;await bt()&&(await((Si=rs.current)==null?void 0:Si.openReviewDiff({path:Mn,originalContent:En??"",modifiedContent:Ni,language:ht})),_s())},Gt=async(Mn,En)=>{if(!he)return!1;try{const Ni=await so.fileDiffs(he),zn=Mn.replace(/\\/g,"/"),Si=Ni.find(Ds=>Ds.path===zn)??Ni.find(Ds=>zn.endsWith(`/${Ds.path}`));return Si?(await Vt(Mn,Si.original,En||Si.modified),!0):!1}catch{return!1}},gr=await fetch(`${Xi}/api/workspace/backup?path=${encodeURIComponent(D)}${me}`,{headers:ue});if(gr.ok){const Mn=await gr.json();await Vt(Mn.path,Mn.originalContent,Mn.currentContent);return}const Zr=await((Q=rs.current)==null?void 0:Q.readFileByPath(D));if(Zr){if(await Gt(Zr.path,Zr.content))return;await Vt(Zr.path,Zr.content,Zr.content);return}const Ts=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}${me}`,{headers:ue});if(!Ts.ok)return;const Ar=await Ts.json();if(await Gt(Ar.path,Ar.content))return;await Vt(Ar.path,Ar.content,Ar.content);return}catch{}},[et,ne,zu,Sg,dt,$,_s]),fx=y.useCallback(async D=>{var Q;try{const he=Sg(D);if(!he){const Ae=Ps.find(ht=>ht.path===D);if(Ae){rf([Ae]),bs(Ae.id),$||(M.current=!0,W(!0)),_s();return}fi("File is outside the active workspace. Open its directory explicitly to browse it.");return}if(he&&(!ne||ne.workspaceRoot!==he)&&await zu(he,ne==null?void 0:ne.nodeId,et),await((Q=rs.current)==null?void 0:Q.openFileByPath(D))){$||(M.current=!0,W(!0)),_s();return}const me=Ps.find(Ae=>Ae.path===D);if(me)rf([me]),bs(me.id);else{const Ae={};dt&&(Ae.Authorization=`Bearer ${dt}`);const ht=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}`,{headers:Ae});if(!ht.ok)throw new Error(`Failed to open file: ${ht.status}`);const bt=await ht.json(),Vt=D.split(/[\\/]/).pop()??D,Gt={id:bt.path,name:Vt,path:bt.path,content:bt.content,language:$_(Vt)};rf([Gt]),bs(Gt.id)}$||(M.current=!0,W(!0)),_s()}catch(he){fi(he instanceof Error?he.message:"Failed to open linked file")}},[et,ne,rf,zu,Sg,$,_s,dt,Ps]),xy=y.useCallback(async(D,Q)=>{try{const he={"Content-Type":"application/json"};dt&&(he.Authorization=`Bearer ${dt}`),await fetch(`${Xi}/api/workspace/apply-diff`,{method:"POST",headers:he,body:JSON.stringify({path:D,content:Q})})}catch{}ec(D)},[dt,ec]),px=y.useCallback(async D=>{const Q=Array.from(D),he=await Promise.all(Q.filter(ue=>ue.size<1024*1024).map(async ue=>{const me=await ue.text(),Ae=ue.webkitRelativePath||ue.name;return{id:`${Ae}-${ue.lastModified}`,name:ue.name,path:Ae,content:me,language:$_(Ae)}}));rf(he)},[rf]),Ap=y.useCallback(async(D,Q,he)=>{var ue;return((ue=rs.current)==null?void 0:ue.searchFiles(D,Q,he))??[]},[]),qc=y.useCallback(async(D,Q,he)=>{var Ts,Ar,Mn;const ue=he!=null&&he.length?he:void 0,me=(ue?Z1(ue):D).trim(),Ae=ue!=null&&ue.length?J1(ue):Q!=null&&Q.length?Q.map(En=>({path:En.path,name:En.name,...En.lineRange?{lineRange:En.lineRange}:{}})):[],ht=ue!=null&&ue.length?o8e(ue):[],bt=ue!=null&&ue.length?a8e(ue):[];if(!me&&Ae.length===0&&ht.length===0&&bt.length===0)return null;const Vt=[],Gt=new Set;if(Ae.length){const En=new Set;for(const Ni of Ae){const zn=`${Ni.path}:${((Ts=Ni.lineRange)==null?void 0:Ts.startLine)??""}:${((Ar=Ni.lineRange)==null?void 0:Ar.endLine)??""}`;if(En.has(zn))continue;En.add(zn),Gt.add(Ni.path);const Si=Al=>Ni.lineRange?Al.split(`
|
|
1431
1431
|
`).slice(Ni.lineRange.startLine-1,Ni.lineRange.endLine).join(`
|
|
1432
1432
|
`):Al,Ds=Ps.find(Al=>Al.path===Ni.path);if(Ds){Vt.push({path:Ds.path,content:Si(Ds.content),...Ni.lineRange?{lineRange:Ni.lineRange}:{}});continue}const Gd=await((Mn=rs.current)==null?void 0:Mn.readReferencePath(Ni.path));if(Gd!=null&&Gd.length)for(const Al of Gd)Vt.some(Ei=>{var qi,Gi,Ki,Ko;return Ei.path===Al.path&&((qi=Ei.lineRange)==null?void 0:qi.startLine)===((Gi=Ni.lineRange)==null?void 0:Gi.startLine)&&((Ki=Ei.lineRange)==null?void 0:Ki.endLine)===((Ko=Ni.lineRange)==null?void 0:Ko.endLine)})||Vt.push({path:Al.path,content:Si(Al.content),...Ni.lineRange?{lineRange:Ni.lineRange}:{}})}}const gr=[];return ht.length>0&&gr.push(`Referenced workspaces:
|
|
1433
1433
|
${ht.map(En=>`- ${En.path}`).join(`
|
package/web-dist/assets/{infoDiagram-LFFYTUFH-Cbnble_R.js → infoDiagram-LFFYTUFH-DKVtq0SA.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as a,l as s,L as n,e as i}from"./index-
|
|
1
|
+
import{_ as a,l as s,L as n,e as i}from"./index-CjEAN2b5.js";import{p}from"./treemap-KZPCXAKY-CnFdtC4q.js";import"./_baseUniq-emOULUrn.js";import"./_basePickBy-AWK96M2x.js";import"./clone-DE61nTkK.js";var g={parse:a(async r=>{const e=await p("info",r);s.debug(e)},"parse")},v={version:"11.13.0"},d=a(()=>v.version,"getVersion"),m={getVersion:d},c=a((r,e,o)=>{s.debug(`rendering info diagram
|
|
2
2
|
`+r);const t=n(e);i(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${o}`)},"draw"),l={draw:c},y={parser:g,db:m,renderer:l};export{y as diagram};
|