@jait/gateway 0.1.322 → 0.1.323
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/package.json +1 -1
- package/web-dist/assets/{_basePickBy-pBXH9Xdk.js → _basePickBy-BSMKNO5-.js} +1 -1
- package/web-dist/assets/{_baseUniq-bhd5WbZq.js → _baseUniq-BzuCZbpY.js} +1 -1
- package/web-dist/assets/{arc-DBuRB1ee.js → arc-BPFrv7ae.js} +1 -1
- package/web-dist/assets/{architectureDiagram-2XIMDMQ5-DYYp8d2u.js → architectureDiagram-2XIMDMQ5-L1a9CP2u.js} +1 -1
- package/web-dist/assets/{blockDiagram-WCTKOSBZ-De228qTb.js → blockDiagram-WCTKOSBZ-Bzq-eaV_.js} +1 -1
- package/web-dist/assets/{c4Diagram-IC4MRINW-tscVR0CV.js → c4Diagram-IC4MRINW-K3DhgWI6.js} +1 -1
- package/web-dist/assets/channel-gbWf9Lw-.js +1 -0
- package/web-dist/assets/{chunk-4BX2VUAB-Exr_Ix3w.js → chunk-4BX2VUAB-CWAkLzZj.js} +1 -1
- package/web-dist/assets/{chunk-55IACEB6-Chiy1aiJ.js → chunk-55IACEB6-C2rLSoYr.js} +1 -1
- package/web-dist/assets/{chunk-FMBD7UC4-DRbcG0ec.js → chunk-FMBD7UC4-BxeWultu.js} +1 -1
- package/web-dist/assets/{chunk-JSJVCQXG-CGmtRQ-m.js → chunk-JSJVCQXG-D9Tat0kM.js} +1 -1
- package/web-dist/assets/{chunk-KX2RTZJC-lZwvxdGq.js → chunk-KX2RTZJC-BF1zrqLc.js} +1 -1
- package/web-dist/assets/{chunk-NQ4KR5QH-CAPb9Nzk.js → chunk-NQ4KR5QH-CcJk7fVX.js} +1 -1
- package/web-dist/assets/{chunk-QZHKN3VN-BBnV1b52.js → chunk-QZHKN3VN-5p7GfzNc.js} +1 -1
- package/web-dist/assets/{chunk-WL4C6EOR-DvzUUOCF.js → chunk-WL4C6EOR-DVz6XoE3.js} +1 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-DiQVeLLt.js +1 -0
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-DiQVeLLt.js +1 -0
- package/web-dist/assets/clone-UjPQNE84.js +1 -0
- package/web-dist/assets/{cose-bilkent-S5V4N54A-68vIQuVf.js → cose-bilkent-S5V4N54A-BYHMJADY.js} +1 -1
- package/web-dist/assets/{dagre-KLK3FWXG-C5KN8CH-.js → dagre-KLK3FWXG-D_QuVMCe.js} +1 -1
- package/web-dist/assets/{diagram-E7M64L7V-C7dPZ_kU.js → diagram-E7M64L7V-BSGqpTuh.js} +1 -1
- package/web-dist/assets/{diagram-IFDJBPK2-DfAnycK1.js → diagram-IFDJBPK2-CxH_SleI.js} +1 -1
- package/web-dist/assets/{diagram-P4PSJMXO-KS_0Knri.js → diagram-P4PSJMXO-BaUwKAR8.js} +1 -1
- package/web-dist/assets/{erDiagram-INFDFZHY-B4ln8GEH.js → erDiagram-INFDFZHY-CuQW0RCH.js} +1 -1
- package/web-dist/assets/{flowDiagram-PKNHOUZH-D-vEhWXW.js → flowDiagram-PKNHOUZH-CeslGZZO.js} +1 -1
- package/web-dist/assets/{ganttDiagram-A5KZAMGK-Bj899JeY.js → ganttDiagram-A5KZAMGK-MtwmeepW.js} +1 -1
- package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-CE7PvMtY.js → gitGraphDiagram-K3NZZRJ6-CbKhoHtb.js} +1 -1
- package/web-dist/assets/{graph-BkHpfg-I.js → graph-DQ1-bIdV.js} +1 -1
- package/web-dist/assets/{index-CXqaXSdQ.js → index-BT4Ksx0i.js} +4 -4
- package/web-dist/assets/{index-B4LDZCMn.css → index-URQ-Dwc8.css} +1 -1
- package/web-dist/assets/{infoDiagram-LFFYTUFH-CEhE__0L.js → infoDiagram-LFFYTUFH-FWQmqEFA.js} +1 -1
- package/web-dist/assets/{ishikawaDiagram-PHBUUO56-CXJZ5j4h.js → ishikawaDiagram-PHBUUO56-Chkr6bg4.js} +1 -1
- package/web-dist/assets/{journeyDiagram-4ABVD52K-k37UkiLR.js → journeyDiagram-4ABVD52K-BGoDv31f.js} +1 -1
- package/web-dist/assets/{kanban-definition-K7BYSVSG-DpvMA_RV.js → kanban-definition-K7BYSVSG-BaEBlhJv.js} +1 -1
- package/web-dist/assets/{layout-Xoaf8rua.js → layout-DCHxg6xL.js} +1 -1
- package/web-dist/assets/{linear-Be_HTHcu.js → linear-nUx7lIVW.js} +1 -1
- package/web-dist/assets/{mindmap-definition-YRQLILUH-A3awregK.js → mindmap-definition-YRQLILUH-lM0AolEN.js} +1 -1
- package/web-dist/assets/{pieDiagram-SKSYHLDU-BDkWKQxj.js → pieDiagram-SKSYHLDU-C8QU9SXd.js} +1 -1
- package/web-dist/assets/{quadrantDiagram-337W2JSQ-CxtaLznn.js → quadrantDiagram-337W2JSQ-WqyFRa50.js} +1 -1
- package/web-dist/assets/{requirementDiagram-Z7DCOOCP-DEJRaUqC.js → requirementDiagram-Z7DCOOCP-ySoX9A1H.js} +1 -1
- package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-DCyLHPB4.js → sankeyDiagram-WA2Y5GQK-EqjhVx9b.js} +1 -1
- package/web-dist/assets/{sequenceDiagram-2WXFIKYE-v_aeEc1X.js → sequenceDiagram-2WXFIKYE-qKKKGxF3.js} +1 -1
- package/web-dist/assets/{stateDiagram-RAJIS63D-CQhLl93Z.js → stateDiagram-RAJIS63D-CH4hI_Ub.js} +1 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-XTEVwr-y.js +1 -0
- package/web-dist/assets/{timeline-definition-YZTLITO2-DSwPp95l.js → timeline-definition-YZTLITO2-Bbz8SEOV.js} +1 -1
- package/web-dist/assets/{treemap-KZPCXAKY-Cd_0mFOI.js → treemap-KZPCXAKY-CK09KelQ.js} +1 -1
- package/web-dist/assets/{vennDiagram-LZ73GAT5-CmNDpWuq.js → vennDiagram-LZ73GAT5-Blet4qap.js} +1 -1
- package/web-dist/assets/{xychartDiagram-JWTSCODW-Bksk64Qe.js → xychartDiagram-JWTSCODW-Byc4kVRW.js} +1 -1
- package/web-dist/index.html +2 -2
- package/web-dist/assets/channel-BfipQyqG.js +0 -1
- package/web-dist/assets/classDiagram-VBA2DB6C-BQ_dcoDu.js +0 -1
- package/web-dist/assets/classDiagram-v2-RAHNMMFH-BQ_dcoDu.js +0 -1
- package/web-dist/assets/clone-DVv52-UO.js +0 -1
- package/web-dist/assets/stateDiagram-v2-FVOUBMTO-CmkHVf0O.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-D_QuVMCe.js","./graph-DQ1-bIdV.js","./_baseUniq-BzuCZbpY.js","./layout-DCHxg6xL.js","./_basePickBy-BSMKNO5-.js","./clone-UjPQNE84.js","./cose-bilkent-S5V4N54A-BYHMJADY.js","./cytoscape.esm-BQaXIfA_.js","./c4Diagram-IC4MRINW-K3DhgWI6.js","./chunk-JSJVCQXG-D9Tat0kM.js","./flowDiagram-PKNHOUZH-CeslGZZO.js","./chunk-FMBD7UC4-BxeWultu.js","./chunk-55IACEB6-C2rLSoYr.js","./chunk-KX2RTZJC-BF1zrqLc.js","./channel-gbWf9Lw-.js","./erDiagram-INFDFZHY-CuQW0RCH.js","./gitGraphDiagram-K3NZZRJ6-CbKhoHtb.js","./chunk-4BX2VUAB-CWAkLzZj.js","./chunk-QZHKN3VN-5p7GfzNc.js","./treemap-KZPCXAKY-CK09KelQ.js","./ganttDiagram-A5KZAMGK-MtwmeepW.js","./linear-nUx7lIVW.js","./defaultLocale-DX6XiGOO.js","./infoDiagram-LFFYTUFH-FWQmqEFA.js","./pieDiagram-SKSYHLDU-C8QU9SXd.js","./arc-BPFrv7ae.js","./quadrantDiagram-337W2JSQ-WqyFRa50.js","./xychartDiagram-JWTSCODW-Byc4kVRW.js","./requirementDiagram-Z7DCOOCP-ySoX9A1H.js","./sequenceDiagram-2WXFIKYE-qKKKGxF3.js","./classDiagram-VBA2DB6C-DiQVeLLt.js","./chunk-WL4C6EOR-DVz6XoE3.js","./classDiagram-v2-RAHNMMFH-DiQVeLLt.js","./stateDiagram-RAJIS63D-CH4hI_Ub.js","./chunk-NQ4KR5QH-CcJk7fVX.js","./stateDiagram-v2-FVOUBMTO-XTEVwr-y.js","./journeyDiagram-4ABVD52K-BGoDv31f.js","./timeline-definition-YZTLITO2-Bbz8SEOV.js","./mindmap-definition-YRQLILUH-lM0AolEN.js","./kanban-definition-K7BYSVSG-BaEBlhJv.js","./diagram-P4PSJMXO-BaUwKAR8.js","./diagram-IFDJBPK2-CxH_SleI.js","./blockDiagram-WCTKOSBZ-Bzq-eaV_.js","./architectureDiagram-2XIMDMQ5-L1a9CP2u.js","./diagram-E7M64L7V-BSGqpTuh.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var ehe=Object.defineProperty;var the=(e,r,n)=>r in e?ehe(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n;var He=(e,r,n)=>the(e,typeof r!="symbol"?r+"":r,n);function rhe(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 T0(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Cyt(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 G6={exports:{}},Fx={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react-jsx-runtime.production.js
|
|
@@ -1066,8 +1066,8 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
|
|
|
1066
1066
|
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 u=e.height/2,c=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)*u){let p=n.y<r.y?r.y-u-s:s-u-r.y;l=f*p/c;const g={x:n.x<r.x?n.x+l:n.x-f+l,y:n.y<r.y?n.y+c-p:n.y-c+p};return l===0&&(g.x=r.x,g.y=r.y),f===0&&(g.x=r.x),c===0&&(g.y=r.y),xt.debug(`abc89 top/bottom calc, Q ${c}, 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=c*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 xt.debug(`sides calc abc89, Q ${c}, q ${p}, R ${f}, r ${l}`,{_x:g,_y:v}),l===0&&(g=r.x,v=r.y),f===0&&(g=r.x),c===0&&(v=r.y),{x:g,y:v}}},"intersection"),gF=X((e,r)=>{xt.warn("abc88 cutPathAtIntersect",e,r);let n=[],i=e[0],s=!1;return e.forEach(o=>{if(xt.info("abc88 checking point",o,r),!wUe(r,o)&&!s){const a=SUe(r,i,o);xt.debug("abc88 inside",o,i,a),xt.debug("abc88 intersection",a,r);let l=!1;n.forEach(u=>{l=l||u.x===a.x&&u.y===a.y}),n.some(u=>u.x===a.x&&u.y===a.y)?xt.warn("abc88 no intersect",a,n):n.push(a),s=!0}else xt.warn("abc88 outside",o,i),i=o,s||n.push(o)}),xt.debug("returning points",n),n},"cutPathAtIntersect");function Jie(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(Jie,"extractCornerPoints");var yF=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"),kUe=X(function(e){const{cornerPointPositions:r}=Jie(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=yF(s,a,5),u=yF(o,a,5),c=u.x-l.x,f=u.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){xt.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:c<0?l.x-v+p:l.x+v-p,y:f<0?l.y-p:l.y+p}:g={x:c<0?l.x-p:l.x+p,y:f<0?l.y-v+p:l.y+v-p}}else xt.debug("Corner point skipping fixing",Math.abs(o.x-s.x),Math.abs(o.y-s.y));n.push(g,u)}else n.push(e[i]);return n},"fixCorners"),CUe=X((e,r,n)=>{const i=e-r-n,s=2,o=2,a=s+o,l=Math.floor(i/a),u=Array(l).fill(`${s} ${o}`).join(" ");return`0 ${r} ${u} ${n}`},"generateDashArray"),jUe=X(function(e,r,n,i,s,o,a,l=!1){var L;const{handDrawnSeed:u}=Xn();let c=r.points,f=!1;const p=s;var g=o;const v=[];for(const I in r.cssCompiledStyles)Jre(I)||v.push(r.cssCompiledStyles[I]);xt.debug("UIO intersect check",r.points,g.x,p.x),g.intersect&&p.intersect&&!l&&(c=c.slice(1,r.points.length-1),c.unshift(p.intersect(c[0])),xt.debug("Last point UIO",r.start,"-->",r.end,c[c.length-1],g,g.intersect(c[c.length-1])),c.push(g.intersect(c[c.length-1])));const b=btoa(JSON.stringify(c));r.toCluster&&(xt.info("to cluster abc88",n.get(r.toCluster)),c=gF(r.points,n.get(r.toCluster).node),f=!0),r.fromCluster&&(xt.debug("from cluster abc88",n.get(r.fromCluster),JSON.stringify(c,null,2)),c=gF(c.reverse(),n.get(r.fromCluster).node).reverse(),f=!0);let _=c.filter(I=>!Number.isNaN(I.y));const k=xUe(r.curve);k!=="rounded"&&(_=kUe(_));let w=b_;switch(k){case"linear":w=b_;break;case"basis":w=SA;break;case"cardinal":w=Ree;break;case"bumpX":w=Tee;break;case"bumpY":w=Nee;break;case"catmullRom":w=Pee;break;case"monotoneX":w=zee;break;case"monotoneY":w=Fee;break;case"natural":w=Wee;break;case"step":w=Uee;break;case"stepAfter":w=qee;break;case"stepBefore":w=Vee;break;case"rounded":w=b_;break;default:w=SA}const{x:C,y:j}=wBe(r),T=JDe().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=k==="rounded"?Qie(ese(_,r),5):T(_);const M=Array.isArray(r.style)?r.style:[r.style];let W=M.find(I=>I==null?void 0:I.startsWith("stroke:")),$="";r.animate&&($="edge-animation-fast"),r.animation&&($="edge-animation-"+r.animation);let U=!1;if(r.look==="handDrawn"){const I=cr.svg(e);Object.assign([],_);const H=I.path(R,{roughness:.3,seed:u});A+=" transition",E=Ar(H).select("path").attr("id",r.id).attr("class"," "+A+(r.classes?" "+r.classes:"")+($?" "+$:"")).attr("style",M?M.reduce((z,q)=>z+";"+q,""):"");let Y=E.attr("d");E.attr("d",Y),e.node().appendChild(E.node())}else{const I=v.join(";"),H=M?M.reduce((te,re)=>te+re+";",""):"",Y=(I?I+";"+H+";":H)+";"+(M?M.reduce((te,re)=>te+";"+re,""):"");E=e.append("path").attr("d",R).attr("id",r.id).attr("class"," "+A+(r.classes?" "+r.classes:"")+($?" "+$:"")).attr("style",Y),W=(L=Y.match(/stroke:([^;]+)/))==null?void 0:L[1],U=r.animate===!0||!!r.animation||I.includes("animation");const z=E.node(),q=typeof z.getTotalLength=="function"?z.getTotalLength():0,Q=Rz[r.arrowTypeStart]||0,V=Rz[r.arrowTypeEnd]||0;if(r.look==="neo"&&!U){const re=`stroke-dasharray: ${r.pattern==="dotted"||r.pattern==="dashed"?CUe(q,Q,V):`0 ${Q} ${q-Q-V} ${V}`}; 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(I=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",I.x).attr("cy",I.y)});let B="";(Xn().flowchart.arrowMarkerAbsolute||Xn().state.arrowMarkerAbsolute)&&(B=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,B=B.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),xt.info("arrowTypeStart",r.arrowTypeStart),xt.info("arrowTypeEnd",r.arrowTypeEnd),yUe(E,r,B,a,i,W);const K=Math.floor(c.length/2),P=c[K];ed.isLabelCoordinateInPath(P,E.attr("d"))||(f=!0);let F={};return f&&(F.updatedPath=c),F.originalPath=r.points,F},"insertEdge");function Qie(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],u=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 c=a.x-l.x,f=a.y-l.y,p=u.x-a.x,g=u.y-a.y,v=Math.hypot(c,f),b=Math.hypot(p,g);if(v<s||b<s){n+=`L${a.x},${a.y}`;continue}const _=c/v,k=f/v,w=p/b,C=g/b,j=_*w+k*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,M=a.y-k*E,W=a.x+w*E,$=a.y+C*E;n+=`L${R},${M}`,n+=`Q${a.x},${a.y} ${W},${$}`}}return n}X(Qie,"generateRoundedPath");function ZA(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(ZA,"calculateDeltaAndAngle");function ese(e,r){const n=e.map(s=>({...s}));if(e.length>=2&&ga[r.arrowTypeStart]){const s=ga[r.arrowTypeStart],o=e[0],a=e[1],{angle:l}=ZA(o,a),u=s*Math.cos(l),c=s*Math.sin(l);n[0].x=o.x+u,n[0].y=o.y+c}const i=e.length;if(i>=2&&ga[r.arrowTypeEnd]){const s=ga[r.arrowTypeEnd],o=e[i-1],a=e[i-2],{angle:l}=ZA(a,o),u=s*Math.cos(l),c=s*Math.sin(l);n[i-1].x=o.x-u,n[i-1].y=o.y-c}return n}X(ese,"applyMarkerOffsetsToPoints");var TUe=X((e,r,n,i)=>{r.forEach(s=>{WUe[s](e,n,i)})},"insertMarkers"),NUe=X((e,r,n)=>{xt.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"),EUe=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"),AUe=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"),OUe=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"),RUe=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"),MUe=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"),PUe=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"),LUe=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"),$Ue=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"),DUe=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"),IUe=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"),BUe=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"),zUe=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"),FUe=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
|
|
1067
1067
|
L20,10
|
|
1068
1068
|
M20,10
|
|
1069
|
-
L0,20`)},"requirement_arrow"),HUe=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"),WUe={extension:NUe,composition:EUe,aggregation:AUe,dependency:OUe,lollipop:RUe,point:MUe,circle:PUe,cross:LUe,barb:$Ue,only_one:DUe,zero_or_one:IUe,one_or_more:BUe,zero_or_more:zUe,requirement_arrow:FUe,requirement_contains:HUe},UUe=TUe,VUe={common:lS,getConfig:Sa,insertCluster:ZWe,insertEdge:jUe,insertEdgeLabel:bUe,insertMarkers:UUe,insertNode:Zie,interpolateToCurve:dM,labelHelper:Pr,log:xt,positionEdgeLabel:_Ue},O2={},tse=X(e=>{for(const r of e)O2[r.name]=r},"registerLayoutLoaders"),qUe=X(()=>{tse([{name:"dagre",loader:X(async()=>await Ke(()=>import("./dagre-KLK3FWXG-
|
|
1070
|
-
`);const i=pIe(r),s=i.append("g");i.attr("viewBox","0 0 2412 512"),GQ(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"),xse={draw:xqe},bqe=xse,_qe={db:{},renderer:xse,parser:{parse:X(()=>{},"parse")}},wqe=_qe,bse="flowchart-elk",Sqe=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"),kqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-
|
|
1069
|
+
L0,20`)},"requirement_arrow"),HUe=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"),WUe={extension:NUe,composition:EUe,aggregation:AUe,dependency:OUe,lollipop:RUe,point:MUe,circle:PUe,cross:LUe,barb:$Ue,only_one:DUe,zero_or_one:IUe,one_or_more:BUe,zero_or_more:zUe,requirement_arrow:FUe,requirement_contains:HUe},UUe=TUe,VUe={common:lS,getConfig:Sa,insertCluster:ZWe,insertEdge:jUe,insertEdgeLabel:bUe,insertMarkers:UUe,insertNode:Zie,interpolateToCurve:dM,labelHelper:Pr,log:xt,positionEdgeLabel:_Ue},O2={},tse=X(e=>{for(const r of e)O2[r.name]=r},"registerLayoutLoaders"),qUe=X(()=>{tse([{name:"dagre",loader:X(async()=>await Ke(()=>import("./dagre-KLK3FWXG-D_QuVMCe.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-BYHMJADY.js"),__vite__mapDeps([53,54]),import.meta.url),"loader")}])},"registerDefaultLayoutLoaders");qUe();var h1t=X(async(e,r)=>{if(!(e.layoutAlgorithm in O2))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const n=O2[e.layoutAlgorithm];return(await n.loader()).render(e,r,VUe,{algorithm:n.algorithm})},"render"),f1t=X((e="",{fallback:r="dagre"}={})=>{if(e in O2)return e;if(r in O2)return xt.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"),GUe=Ore(Object.keys,Object),KUe=Object.prototype,YUe=KUe.hasOwnProperty;function XUe(e){if(!Mj(e))return GUe(e);var r=[];for(var n in Object(e))YUe.call(e,n)&&n!="constructor"&&r.push(n);return r}var JA=I0(bd,"DataView"),QA=I0(bd,"Promise"),eO=I0(bd,"Set"),tO=I0(bd,"WeakMap"),vF="[object Map]",ZUe="[object Object]",xF="[object Promise]",bF="[object Set]",_F="[object WeakMap]",wF="[object DataView]",JUe=D0(JA),QUe=D0(E2),eVe=D0(QA),tVe=D0(eO),rVe=D0(tO),Pg=$0;(JA&&Pg(new JA(new ArrayBuffer(1)))!=wF||E2&&Pg(new E2)!=vF||QA&&Pg(QA.resolve())!=xF||eO&&Pg(new eO)!=bF||tO&&Pg(new tO)!=_F)&&(Pg=function(e){var r=$0(e),n=r==ZUe?e.constructor:void 0,i=n?D0(n):"";if(i)switch(i){case JUe:return wF;case QUe:return vF;case eVe:return xF;case tVe:return bF;case rVe:return _F}return r});var nVe="[object Map]",iVe="[object Set]",sVe=Object.prototype,oVe=sVe.hasOwnProperty;function SF(e){if(e==null)return!0;if(Pj(e)&&(N5(e)||typeof e=="string"||typeof e.splice=="function"||cM(e)||uM(e)||T5(e)))return!e.length;var r=Pg(e);if(r==nVe||r==iVe)return!e.size;if(Mj(e))return!XUe(e).length;for(var n in e)if(oVe.call(e,n))return!1;return!0}var rse="c4",aVe=X(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),lVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./c4Diagram-IC4MRINW-K3DhgWI6.js");return{diagram:r}},__vite__mapDeps([55,56]),import.meta.url);return{id:rse,diagram:e}},"loader"),cVe={id:rse,detector:aVe,loader:lVe},uVe=cVe,nse="flowchart",dVe=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"),hVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-CeslGZZO.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:nse,diagram:e}},"loader"),fVe={id:nse,detector:dVe,loader:hVe},pVe=fVe,ise="flowchart-v2",mVe=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"),gVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-CeslGZZO.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:ise,diagram:e}},"loader"),yVe={id:ise,detector:mVe,loader:gVe},vVe=yVe,sse="er",xVe=X(e=>/^\s*erDiagram/.test(e),"detector"),bVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./erDiagram-INFDFZHY-CuQW0RCH.js");return{diagram:r}},__vite__mapDeps([62,59,60,61]),import.meta.url);return{id:sse,diagram:e}},"loader"),_Ve={id:sse,detector:xVe,loader:bVe},wVe=_Ve,ose="gitGraph",SVe=X(e=>/^\s*gitGraph/.test(e),"detector"),kVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./gitGraphDiagram-K3NZZRJ6-CbKhoHtb.js");return{diagram:r}},__vite__mapDeps([63,64,65,66,49,51,52]),import.meta.url);return{id:ose,diagram:e}},"loader"),CVe={id:ose,detector:SVe,loader:kVe},jVe=CVe,ase="gantt",TVe=X(e=>/^\s*gantt/.test(e),"detector"),NVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./ganttDiagram-A5KZAMGK-MtwmeepW.js");return{diagram:r}},__vite__mapDeps([67,68,69]),import.meta.url);return{id:ase,diagram:e}},"loader"),EVe={id:ase,detector:TVe,loader:NVe},AVe=EVe,lse="info",OVe=X(e=>/^\s*info/.test(e),"detector"),RVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./infoDiagram-LFFYTUFH-FWQmqEFA.js");return{diagram:r}},__vite__mapDeps([70,66,49,51,52]),import.meta.url);return{id:lse,diagram:e}},"loader"),MVe={id:lse,detector:OVe,loader:RVe},cse="pie",PVe=X(e=>/^\s*pie/.test(e),"detector"),LVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./pieDiagram-SKSYHLDU-C8QU9SXd.js");return{diagram:r}},__vite__mapDeps([71,64,66,49,51,52,72]),import.meta.url);return{id:cse,diagram:e}},"loader"),$Ve={id:cse,detector:PVe,loader:LVe},use="quadrantChart",DVe=X(e=>/^\s*quadrantChart/.test(e),"detector"),IVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./quadrantDiagram-337W2JSQ-WqyFRa50.js");return{diagram:r}},__vite__mapDeps([73,68,69]),import.meta.url);return{id:use,diagram:e}},"loader"),BVe={id:use,detector:DVe,loader:IVe},zVe=BVe,dse="xychart",FVe=X(e=>/^\s*xychart(-beta)?/.test(e),"detector"),HVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./xychartDiagram-JWTSCODW-Byc4kVRW.js");return{diagram:r}},__vite__mapDeps([74,68,69]),import.meta.url);return{id:dse,diagram:e}},"loader"),WVe={id:dse,detector:FVe,loader:HVe},UVe=WVe,hse="requirement",VVe=X(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),qVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./requirementDiagram-Z7DCOOCP-ySoX9A1H.js");return{diagram:r}},__vite__mapDeps([75,59,60]),import.meta.url);return{id:hse,diagram:e}},"loader"),GVe={id:hse,detector:VVe,loader:qVe},KVe=GVe,fse="sequence",YVe=X(e=>/^\s*sequenceDiagram/.test(e),"detector"),XVe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./sequenceDiagram-2WXFIKYE-qKKKGxF3.js");return{diagram:r}},__vite__mapDeps([76,56,65]),import.meta.url);return{id:fse,diagram:e}},"loader"),ZVe={id:fse,detector:YVe,loader:XVe},JVe=ZVe,pse="class",QVe=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"),eqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./classDiagram-VBA2DB6C-DiQVeLLt.js");return{diagram:r}},__vite__mapDeps([77,78,58,56,59,60]),import.meta.url);return{id:pse,diagram:e}},"loader"),tqe={id:pse,detector:QVe,loader:eqe},rqe=tqe,mse="classDiagram",nqe=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"),iqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./classDiagram-v2-RAHNMMFH-DiQVeLLt.js");return{diagram:r}},__vite__mapDeps([79,78,58,56,59,60]),import.meta.url);return{id:mse,diagram:e}},"loader"),sqe={id:mse,detector:nqe,loader:iqe},oqe=sqe,gse="state",aqe=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"),lqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./stateDiagram-RAJIS63D-CH4hI_Ub.js");return{diagram:r}},__vite__mapDeps([80,81,59,60,48,49,50,51]),import.meta.url);return{id:gse,diagram:e}},"loader"),cqe={id:gse,detector:aqe,loader:lqe},uqe=cqe,yse="stateDiagram",dqe=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"),hqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./stateDiagram-v2-FVOUBMTO-XTEVwr-y.js");return{diagram:r}},__vite__mapDeps([82,81,59,60]),import.meta.url);return{id:yse,diagram:e}},"loader"),fqe={id:yse,detector:dqe,loader:hqe},pqe=fqe,vse="journey",mqe=X(e=>/^\s*journey/.test(e),"detector"),gqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./journeyDiagram-4ABVD52K-BGoDv31f.js");return{diagram:r}},__vite__mapDeps([83,58,56,72]),import.meta.url);return{id:vse,diagram:e}},"loader"),yqe={id:vse,detector:mqe,loader:gqe},vqe=yqe,xqe=X((e,r,n)=>{xt.debug(`rendering svg for syntax error
|
|
1070
|
+
`);const i=pIe(r),s=i.append("g");i.attr("viewBox","0 0 2412 512"),GQ(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"),xse={draw:xqe},bqe=xse,_qe={db:{},renderer:xse,parser:{parse:X(()=>{},"parse")}},wqe=_qe,bse="flowchart-elk",Sqe=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"),kqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-CeslGZZO.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:bse,diagram:e}},"loader"),Cqe={id:bse,detector:Sqe,loader:kqe},jqe=Cqe,_se="timeline",Tqe=X(e=>/^\s*timeline/.test(e),"detector"),Nqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./timeline-definition-YZTLITO2-Bbz8SEOV.js");return{diagram:r}},__vite__mapDeps([84,72]),import.meta.url);return{id:_se,diagram:e}},"loader"),Eqe={id:_se,detector:Tqe,loader:Nqe},Aqe=Eqe,wse="mindmap",Oqe=X(e=>/^\s*mindmap/.test(e),"detector"),Rqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./mindmap-definition-YRQLILUH-lM0AolEN.js");return{diagram:r}},__vite__mapDeps([85,59,60]),import.meta.url);return{id:wse,diagram:e}},"loader"),Mqe={id:wse,detector:Oqe,loader:Rqe},Pqe=Mqe,Sse="kanban",Lqe=X(e=>/^\s*kanban/.test(e),"detector"),$qe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./kanban-definition-K7BYSVSG-BaEBlhJv.js");return{diagram:r}},__vite__mapDeps([86,58]),import.meta.url);return{id:Sse,diagram:e}},"loader"),Dqe={id:Sse,detector:Lqe,loader:$qe},Iqe=Dqe,kse="sankey",Bqe=X(e=>/^\s*sankey(-beta)?/.test(e),"detector"),zqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./sankeyDiagram-WA2Y5GQK-EqjhVx9b.js");return{diagram:r}},[],import.meta.url);return{id:kse,diagram:e}},"loader"),Fqe={id:kse,detector:Bqe,loader:zqe},Hqe=Fqe,Cse="packet",Wqe=X(e=>/^\s*packet(-beta)?/.test(e),"detector"),Uqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./diagram-P4PSJMXO-BaUwKAR8.js");return{diagram:r}},__vite__mapDeps([87,64,66,49,51,52]),import.meta.url);return{id:Cse,diagram:e}},"loader"),Vqe={id:Cse,detector:Wqe,loader:Uqe},jse="radar",qqe=X(e=>/^\s*radar-beta/.test(e),"detector"),Gqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./diagram-IFDJBPK2-CxH_SleI.js");return{diagram:r}},__vite__mapDeps([88,64,66,49,51,52]),import.meta.url);return{id:jse,diagram:e}},"loader"),Kqe={id:jse,detector:qqe,loader:Gqe},Tse="block",Yqe=X(e=>/^\s*block(-beta)?/.test(e),"detector"),Xqe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./blockDiagram-WCTKOSBZ-Bzq-eaV_.js");return{diagram:r}},__vite__mapDeps([89,58,52,49,48,61]),import.meta.url);return{id:Tse,diagram:e}},"loader"),Zqe={id:Tse,detector:Yqe,loader:Xqe},Jqe=Zqe,Nse="architecture",Qqe=X(e=>/^\s*architecture/.test(e),"detector"),eGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./architectureDiagram-2XIMDMQ5-L1a9CP2u.js");return{diagram:r}},__vite__mapDeps([90,64,66,49,51,52,54]),import.meta.url);return{id:Nse,diagram:e}},"loader"),tGe={id:Nse,detector:Qqe,loader:eGe},rGe=tGe,Ese="ishikawa",nGe=X(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),iGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./ishikawaDiagram-PHBUUO56-Chkr6bg4.js");return{diagram:r}},[],import.meta.url);return{id:Ese,diagram:e}},"loader"),sGe={id:Ese,detector:nGe,loader:iGe},Ase="venn",oGe=X(e=>/^\s*venn-beta/.test(e),"detector"),aGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./vennDiagram-LZ73GAT5-Blet4qap.js");return{diagram:r}},[],import.meta.url);return{id:Ase,diagram:e}},"loader"),lGe={id:Ase,detector:oGe,loader:aGe},cGe=lGe,Ose="treemap",uGe=X(e=>/^\s*treemap/.test(e),"detector"),dGe=X(async()=>{const{diagram:e}=await Ke(async()=>{const{diagram:r}=await import("./diagram-E7M64L7V-BSGqpTuh.js");return{diagram:r}},__vite__mapDeps([91,60,64,66,49,51,52,69]),import.meta.url);return{id:Ose,diagram:e}},"loader"),hGe={id:Ose,detector:uGe,loader:dGe},kF=!1,Hj=X(()=>{kF||(kF=!0,c5("error",wqe,e=>e.toLowerCase().trim()==="error"),c5("---",{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("---")),lA(jqe,Pqe,rGe),lA(uVe,Iqe,oqe,rqe,wVe,AVe,MVe,$Ve,KVe,JVe,vVe,pVe,Aqe,jVe,pqe,uqe,vqe,zVe,Hqe,Vqe,UVe,Jqe,Kqe,sGe,hGe,cGe))},"addDiagrams"),fGe=X(async()=>{xt.debug("Loading registered diagrams");const r=(await Promise.allSettled(Object.entries(f0).map(async([n,{detector:i,loader:s}])=>{if(s)try{hA(n)}catch{try{const{diagram:o,id:a}=await s();c5(a,o,i)}catch(o){throw xt.error(`Failed to load external diagram with key ${n}. Removing from detectors.`),delete f0[n],o}}}))).filter(n=>n.status==="rejected");if(r.length>0){xt.error(`Failed to load ${r.length} external diagrams`);for(const n of r)xt.error(n);throw new Error(`Failed to load ${r.length} external diagrams`)}},"loadRegisteredDiagrams"),pGe="graphics-document document";function Rse(e,r){e.attr("role",pGe),r!==""&&e.attr("aria-roledescription",r)}X(Rse,"setA11yDiagramInfo");function Mse(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(Mse,"addSVGa11yTitleDescription");var n0,rO=(n0=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 c,f;const i=Sa(),s=RR(r,i);r=yHe(r)+`
|
|
1071
1071
|
`;try{hA(s)}catch{const p=sMe(s);if(!p)throw new MQ(`Diagram ${s} not found.`);const{id:g,diagram:v}=await p();c5(g,v)}const{db:o,parser:a,renderer:l,init:u}=hA(s);return a.parser&&(a.parser.yy=o),(c=o.clear)==null||c.call(o),u==null||u(i),n.title&&((f=o.setDiagramTitle)==null||f.call(o,n.title)),await a.parse(r),new n0(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(n0,"Diagram"),n0),CF=[],mGe=X(()=>{CF.forEach(e=>{e()}),CF=[]},"attachFunctions"),gGe=X(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function Pse(e){const r=e.match(RQ);if(!r)return{text:e,metadata:{}};let n=_Be(r[1],{schema:bBe})??{};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(Pse,"extractFrontMatter");var yGe=X(e=>e.replace(/\r\n?/g,`
|
|
1072
1072
|
`).replace(/<(\w+)([^>]*)>/g,(r,n,i)=>"<"+n+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),vGe=X(e=>{const{text:r,metadata:n}=Pse(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"),xGe=X(e=>{const r=ed.detectInit(e)??{},n=ed.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:iHe(e),directive:r}},"processDirectives");function RM(e){const r=yGe(e),n=vGe(r),i=xGe(n.text),s=gM(n.config,i.directive);return e=gGe(i.text),{code:e,title:n.title,config:s}}X(RM,"preprocessDiagram");function Lse(e){const r=new TextEncoder().encode(e),n=Array.from(r,i=>String.fromCodePoint(i)).join("");return btoa(n)}X(Lse,"toBase64");var bGe=5e4,_Ge="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",wGe="sandbox",SGe="loose",kGe="http://www.w3.org/2000/svg",CGe="http://www.w3.org/1999/xlink",jGe="http://www.w3.org/1999/xhtml",TGe="100%",NGe="100%",EGe="border:0;margin:0;",AGe="margin:0",OGe="allow-top-navigation-by-user-activation allow-popups",RGe='The "iframe" tag is not supported by your browser.',MGe=["foreignobject"],PGe=["dominant-baseline"];function MM(e){const r=RM(e);return a5(),_Me(r.config??{}),r}X(MM,"processAndSetConfigs");async function $se(e,r){Hj();try{const{code:n,config:i}=MM(e);return{diagramType:(await Ise(n)).type,config:i}}catch(n){if(r!=null&&r.suppressErrors)return!1;throw n}}X($se,"parse");var jF=X((e,r,n=[])=>`
|
|
1073
1073
|
.${e} ${r} { ${n.join(" !important; ")} !important; }`,"cssImportantStyles"),LGe=X((e,r=new Map)=>{let n="";if(e.themeCSS!==void 0&&(n+=`
|
|
@@ -1377,7 +1377,7 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
|
1377
1377
|
`).split(`
|
|
1378
1378
|
`).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 Lk(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 l8(){return Array.from({length:Jue},()=>J7)}function Que(e){return e.trim()}function uyt(e,r){const n=e.trim(),i=Que(r);return i?n?`${n} ${i}`:i:n}function dyt(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 Nq(e){const r=(e==null?void 0:e.trim())||"";return r&&r!=="__preview__"?r:null}function Eq(e,r){return typeof e!="string"?r:e.trim()||r}function hyt(e,r,n){return[{type:"file",path:e.path,name:e.name,...e.kind?{kind:e.kind}:{},lineRange:{startLine:r,endLine:n}}]}function fyt(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 pyt(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(`
|
|
1379
1379
|
`)}
|
|
1380
|
-
`}]}function Aq(e){return e==="normal"||e==="simple"||e==="caveman"||e==="caveman-ultra"}const myt=["What can you help me with?","Explain quantum computing","Write a Python script","What time is it?"],gyt=["Generate architecture diagram","Explain this codebase","Find potential issues","What can you help me with?"];function Oq(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 yyt="Generating title…";function x4(e){return e.replace(/^\[.*?\]\s*/,"").trim()===yyt}function Q7({className:e=""}){return d.jsx("span",{className:`inline-block rounded bg-muted animate-pulse ${e}`,children:d.jsx("span",{className:"invisible",children:"Generating title"})})}function FP({status:e}){const r={running:{icon:Zt,color:"text-blue-500 animate-spin"},paused:{icon:Y$,color:"text-yellow-500"},interrupted:{icon:Y$,color:"text-yellow-500"},done:{icon:xc,color:"text-green-500"},completed:{icon:xc,color:"text-green-500"},error:{icon:Th,color:"text-red-500"}},{icon:n,color:i}=r[e]??{icon:Za,color:"text-muted-foreground"};return d.jsx(n,{className:`h-3 w-3 shrink-0 ${i}`})}function ede(e,r){return(r!==void 0?r:e.prState)??(e.prUrl?"open":null)}function tde({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 d.jsx(Kr,{variant:"outline",className:`h-4 shrink-0 whitespace-nowrap px-1 py-0 text-2xs ${n}`,children:r})}function e9({kind:e}){return d.jsx(Kr,{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 vyt={codex:"Codex","claude-code":"Claude"};function b4({runtime:e,className:r=""}){const n=e.availableProviders.filter(i=>i==="codex"||i==="claude-code");return d.jsxs("div",{className:`flex flex-wrap items-center gap-1 text-2xs text-muted-foreground ${r}`.trim(),children:[d.jsx("span",{children:e.locationLabel}),e.loading?d.jsx(Zt,{className:"h-3 w-3 animate-spin text-muted-foreground"}):!e.online&&d.jsx(Kr,{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=>d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:vyt[i]},i))]})}function c8({repositories:e,selectedRepo:r,disabled:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o}){return d.jsxs(uu,{children:[d.jsx(du,{asChild:!0,children:d.jsxs(ke,{variant:"outline",size:"sm",className:"h-8 gap-1.5 rounded-lg px-2 text-xs",disabled:n,children:[d.jsx(hu,{className:"h-3.5 w-3.5 shrink-0"}),d.jsx("span",{className:"max-w-[140px] truncate",children:r?r.name:"Select repository"}),d.jsx(el,{className:"h-3 w-3 shrink-0 text-muted-foreground"})]})}),d.jsxs(hc,{align:"start",side:"top",className:"w-64",children:[d.jsx(Fg,{children:"Repository"}),e.map(a=>{const l=i(a);return d.jsx(Fi,{onSelect:()=>s(a.id),children:d.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[d.jsx(hu,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[d.jsx("span",{className:"truncate",children:a.name}),d.jsx("span",{className:"text-2xs text-muted-foreground",children:a.defaultBranch}),a.source==="shared"&&d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:"Shared"})]}),d.jsx(b4,{runtime:l,className:"mt-1"})]})]})},a.id)}),e.length===0&&d.jsx("div",{className:"px-2 py-2 text-xs text-muted-foreground",children:"No repositories yet."}),d.jsx(Ku,{}),d.jsxs(Fi,{onSelect:o,children:[d.jsx(Vo,{className:"mr-2 h-3.5 w-3.5"}),"Add repository"]})]})]})}function xyt({repositories:e,selectedRepoId:r,isMobile:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o,onRemoveRepository:a,onOpenStrategy:l,onOpenPlan:u}){return d.jsxs("div",{className:"flex h-full flex-col",children:[d.jsxs("div",{className:"flex h-[35px] items-center justify-between border-b px-3",children:[d.jsx("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Repositories"}),d.jsxs(ke,{variant:"ghost",size:"sm",className:"h-6 gap-1.5 px-2 text-xs",onClick:o,children:[d.jsx(Vo,{className:"h-3 w-3"}),"Add"]})]}),d.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?d.jsxs("p",{className:"py-4 text-center text-xs text-muted-foreground",children:["No repositories yet.",d.jsx("br",{}),d.jsx("button",{type:"button",onClick:o,className:"mt-1 inline-block underline underline-offset-2 hover:text-foreground",children:"Add one"})]}):e.map(c=>{const f=i(c);return d.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===c.id?n?"bg-secondary text-secondary-foreground":"bg-primary/10 text-primary":n?"hover:bg-muted/50":"hover:bg-muted"}`,onClick:()=>s(c.id),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),s(c.id))},children:[d.jsx(hu,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsx("div",{className:n?"truncate text-xs font-medium":"truncate font-medium",children:c.name}),d.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-1",children:[d.jsx("span",{className:"text-2xs text-muted-foreground",children:c.defaultBranch}),c.source==="shared"&&d.jsx(Kr,{variant:"outline",className:"h-4 shrink-0 px-1 py-0 text-2xs",children:"Shared"})]}),d.jsx(b4,{runtime:f,className:"mt-1"})]}),d.jsxs("div",{className:"mt-0.5 flex shrink-0 flex-col gap-0.5",children:[d.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(c)},children:d.jsx(qG,{className:"h-3 w-3"})}),d.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(),u(c)},children:d.jsx(UG,{className:"h-3 w-3"})}),c.source==="local"&&d.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(c.id)},children:d.jsx(bh,{className:"h-3 w-3"})})]})]},c.id)})})]})}function byt({thread:e,repo:r,repoName:n,prState:i,ghAvailable:s,onOpen:o,onStop:a,onDelete:l}){const u=_v(),[c,f]=y.useState(!1),p=nrt({hasRepository:r!=null,threadKind:e.kind,threadStatus:e.status,threadBranch:e.branch,prUrl:e.prUrl,prState:i}),g=zP(e),v=e.kind==="delegation"||!u;return d.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:b=>{b.target===b.currentTarget&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),o())},children:[d.jsxs("div",{className:"flex flex-col gap-0.5",children:[d.jsxs("div",{className:"flex w-full min-w-0 items-center gap-1.5",children:[d.jsx(FP,{status:e.status}),d.jsx("div",{className:"flex-1 truncate text-sm font-medium sm:text-sm",children:x4(e.title)?d.jsx(Q7,{className:"h-3.5 w-28"}):d.jsx("span",{children:e.title.replace(/^\[.*?\]\s*/,"")})})]}),d.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-0.5 pl-[calc(0.75rem+6px)] text-xs leading-tight text-muted-foreground sm:flex-nowrap sm:gap-x-1 sm:gap-y-0 sm:text-xs",children:[d.jsx("span",{className:"min-w-0 truncate",children:n}),v&&d.jsx(e9,{kind:e.kind}),e.kind==="delegation"&&d.jsx("span",{className:"shrink-0 text-amber-700 dark:text-amber-300",children:"Helper thread"}),e.branch&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsx("span",{className:"max-w-full truncate font-mono",children:e.branch})]}),e.providerId&&e.providerId!=="jait"&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsx("span",{className:"shrink-0 whitespace-nowrap",children:e.providerId})]}),e.executionNodeName&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsxs("span",{className:"inline-flex max-w-full items-center gap-1 truncate text-blue-500 dark:text-blue-400",children:[d.jsx(wa,{className:"inline h-3 w-3 mr-0.5 -mt-px"}),e.executionNodeName]})]}),i&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsx(tde,{prState:i})]})]})]}),d.jsxs("div",{className:"flex items-center gap-0.5 sm:gap-1",children:[p&&r&&d.jsx("div",{className:"shrink-0",onClick:b=>b.stopPropagation(),onMouseDown:b=>b.stopPropagation(),onKeyDown:b=>b.stopPropagation(),children:d.jsx(GM,{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})}),g&&d.jsx(ke,{variant:"ghost",size:"icon",className:"h-6 w-6 rounded-lg sm:h-7 sm:w-7",onClick:b=>{b.stopPropagation(),a()},title:e.kind==="delegation"?"End helper thread":"Stop thread",children:d.jsx(I1,{className:"h-3 w-3"})}),d.jsx(ke,{variant:"ghost",size:"icon",className:"h-6 w-6 rounded-lg opacity-100 transition-opacity sm:h-7 sm:w-7",disabled:c,onClick:b=>{b.stopPropagation(),f(!0),l().finally(()=>f(!1))},children:c?d.jsx(Zt,{className:"h-3.5 w-3.5 animate-spin"}):d.jsx(bh,{className:"h-3.5 w-3.5"})})]})]})}function _yt({threads:e,getRepositoryForThread:r,threadPrStates:n,ghAvailable:i,onOpenThread:s,onStopThread:o}){const[a,l]=y.useState(!1);return e.length===0?null:d.jsxs(uu,{open:a,onOpenChange:l,children:[d.jsx(du,{asChild:!0,children:d.jsxs(ke,{variant:"outline",size:"sm",className:"h-8 gap-1.5 rounded-lg px-2 text-xs",title:`${e.length} active ${e.length===1?"thread":"threads"}`,children:[d.jsx(Zt,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),d.jsx("span",{className:"hidden sm:inline",children:"Active"}),d.jsx(Kr,{variant:"secondary",className:"h-4 rounded-md px-1 text-2xs",children:e.length})]})}),d.jsxs(hc,{align:"end",className:"w-[min(34rem,calc(100vw-1rem))] p-0",children:[d.jsx("div",{className:"flex items-center justify-between border-b px-3 py-2",children:d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx(Zt,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),d.jsxs("span",{className:"text-sm font-medium",children:[e.length," active ",e.length===1?"thread":"threads"]})]})}),d.jsx("div",{className:"max-h-[min(28rem,70vh)] overflow-y-auto",children:e.map(u=>{const c=r(u),f=(c==null?void 0:c.name)??i6(u)??"Unknown repo",p=ede(u,u.id in n?n[u.id]:void 0);return d.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] gap-3 border-b px-3 py-3 last:border-b-0",children:[d.jsxs("button",{type:"button",className:"min-w-0 text-left transition-colors hover:text-foreground",onClick:()=>{l(!1),s(u.id)},children:[d.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[d.jsx(FP,{status:u.status}),d.jsx("span",{className:"truncate text-sm font-medium",children:x4(u.title)?"Generating title...":u.title.replace(/^\[.*?\]\s*/,"")})]}),d.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1 text-xs text-muted-foreground",children:[d.jsx("span",{className:"truncate",children:f}),u.branch&&d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 font-mono text-2xs",children:u.branch}),u.providerId&&u.providerId!=="jait"&&d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:u.providerId}),u.executionNodeName&&d.jsxs(Kr,{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:[d.jsx(wa,{className:"inline h-2.5 w-2.5 mr-0.5"}),u.executionNodeName]}),d.jsx(tde,{prState:p})]})]}),d.jsxs("div",{className:"flex items-center gap-1 self-start",children:[c&&d.jsx("div",{onClick:g=>g.stopPropagation(),onMouseDown:g=>g.stopPropagation(),children:d.jsx(GM,{threadId:u.id,cwd:u.workingDirectory??c.localPath,branch:u.branch,baseBranch:u.prBaseBranch??c.defaultBranch,threadTitle:u.title,threadStatus:u.status,threadKind:u.kind,prUrl:u.prUrl,prState:p,ghAvailable:i,showStatusBadge:!1})}),zP(u)&&d.jsx(ke,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg",onClick:g=>{g.stopPropagation(),Promise.resolve(o(u.id))},title:"Stop thread",children:d.jsx(I1,{className:"h-3 w-3"})})]})]},u.id)})})]})]})}function wyt(){var gy,yy,Sx,vy,_g,xy,kx,by,Cx;const[e,r]=y.useState(""),[n,i]=y.useState(void 0),[s,o]=y.useState(!1),[a,l]=y.useState(null),[u,c]=y.useState(()=>{const D=["chat","jobs","network","settings"],ee=window.location.pathname.replace(/^\/+/,"").split("/")[0];return D.includes(ee)?ee:"chat"}),[f,p]=y.useState("system"),[g,v]=y.useState(()=>localStorage.getItem("showSessionsSidebar")==="true"),[b,_]=y.useState(!1),[k,w]=y.useState(!1),[C,j]=y.useState(null),[T,A]=y.useState(null),[E,R]=y.useState(!1),[M,W]=y.useState(!0),$=y.useRef(!1),[U,B]=y.useState(!1),K=y.useRef(null),P=y.useRef(null),F=y.useCallback(D=>{var ee;D&&((ee=P.current)==null||ee.call(P))},[]),L=y.useRef(!1),[I,H]=y.useState(null),[Y,z]=y.useState(null),[q,Q]=y.useState({open:!1,target:null,displayState:"hidden",displayTarget:null}),[V,te]=y.useState(!1),[re,ae]=y.useState(!0),[ce,ne]=y.useState(!0),[ue,xe]=y.useState("files"),[Z,Pe]=y.useState(null),De=y.useRef(Z);De.current=Z;const[Ce,Xe]=y.useState(()=>localStorage.getItem("showDebugPanel")==="true"),[Je,We]=y.useState(!1),[Ie,it]=y.useState(null),[Tt,_t]=y.useState(null),[Dt,Gt]=y.useState(!1),[Ct,Kt]=y.useState(null),_e=y.useRef(null),Be=y.useRef(null),[Oe,ge]=y.useState(240),[Se,Qe]=y.useState(!1),nt=y.useRef(240),[Le,et]=y.useState(480),[ze,ot]=y.useState(()=>{if(typeof window>"u")return null;const D=window.localStorage.getItem("jait:chatPanelWidth"),ee=D?Number.parseInt(D,10):Number.NaN;return Number.isFinite(ee)?ee:null}),[ft,ct]=y.useState({x:-1,y:-1}),[Bt,pt]=y.useState({w:420,h:320}),Re=y.useRef(null),wt=y.useRef(null),nr=y.useRef(null),Te=y.useRef(null),[Rr,Xt]=y.useState(!1),[Ft,Xr]=y.useState("agent"),[jr,br]=y.useState("normal"),[vr,yn]=y.useState("agent"),[Pt,En]=y.useState("jait"),[Wt,Br]=y.useState("full-access"),[Sn,An]=y.useState(()=>Oq("jait")),lt=Sn[Pt]??null,[yt,ln]=y.useState("developer"),Tr=y.useRef(yt),[Lr,cs]=y.useState(""),[Ea,ve]=y.useState(""),[le,$e]=y.useState(""),[ut,tt]=y.useState(""),[Yt,jt]=y.useState(""),[tr,qt]=y.useState("login"),[rr,xr]=y.useState(!1),[Ur,Hr]=y.useState(!1),[ur,Zr]=y.useState(!1),[Jr,ri]=y.useState(!1),[Ue,us]=y.useState(null),[ll,_d]=y.useState(()=>X1()??""),bu=!!window.jaitDesktop||!!window.Capacitor,Mi=!!window.jaitDesktop,wd=!!window.Capacitor,Hi=Mi?"electron":wd?"capacitor":"web",{resolvedTheme:Wi}=vP(f),Ht=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedWorkspaceTab"):null,Ln=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedTerminal"):null,[Zo,cl]=y.useState(null),_u=y.useRef(!1),zs=y.useCallback(async()=>{try{const D=await fetch(`${Mn()}/health`,{signal:AbortSignal.timeout(5e3)});cl(D.ok)}catch{cl(!1)}},[]);y.useEffect(()=>{_u.current||(_u.current=!0,zs())},[zs]);const[In,Sd]=y.useState(null),[kd,No]=y.useState(!1),[Pi,Cd]=y.useState(!1),[Jo,kn]=y.useState(!1),gi=y.useRef(null),li=y.useRef(!1),zl=y.useRef(async()=>{}),[Li,ul]=y.useState(null),[Sc,Qo]=y.useState(!1),[jd,Eo]=y.useState(()=>bu&&!tA()?"url":"auth"),[ds,bs]=y.useState(!1),[Fs,Ci]=y.useState(null),[dl,Bn]=y.useState([]),[Ao,As]=y.useState(null),[lo,Td]=y.useState([]),[Et,Os]=y.useState(!1),[Fl,Hl]=y.useState("workspace"),[Hh,Wh]=y.useState(null),[Nd,Uh]=y.useState([]),wu=y.useRef(!1),hs=y.useRef(null),Hs=y.useRef(null),It=_v();y.useEffect(()=>{$.current=E},[E]);const cp=y.useRef(!0);y.useEffect(()=>{if(cp.current){const ee=u==="chat"?"/":`/${u}`;window.location.pathname!==ee&&window.history.replaceState(null,"",ee+window.location.search),cp.current=!1;return}const D=u==="chat"?"/":`/${u}`;window.location.pathname!==D&&window.history.pushState(null,"",D)},[u]),y.useEffect(()=>{const D=["chat","jobs","network","settings"],ee=()=>{const fe=window.location.pathname.replace(/^\/+/,"").split("/")[0],he=D.includes(fe)?fe:"chat";c(he)};return window.addEventListener("popstate",ee),()=>window.removeEventListener("popstate",ee)},[]),y.useEffect(()=>{const D=new URLSearchParams(window.location.search).get("jait");if(!D)return;try{const fe=new URL(D),he=fe.hostname||fe.pathname.replace(/^\/+/,"");["chat","jobs","network","settings"].includes(he)&&c(he)}catch{}const ee=new URL(window.location.href);ee.searchParams.delete("jait"),window.history.replaceState(null,"",ee.toString())},[]),y.useEffect(()=>{const D=window.launchQueue;D&&D.setConsumer(async ee=>{if(ee.files.length)for(const fe of ee.files)try{const he=await fe.getFile(),me=he.type||"application/octet-stream",Ae=new FileReader;Ae.onload=()=>{var zt,Rt;const mt=Ae.result.split(",")[1]??"",bt=me.startsWith("image/")?Ae.result:void 0;(zt=Hs.current)==null||zt.addAttachment({name:he.name,mimeType:me,data:mt,preview:bt}),(Rt=Hs.current)==null||Rt.focus()},he.type.startsWith("image/")?Ae.readAsDataURL(he):Ae.readAsDataURL(new Blob([await he.arrayBuffer()],{type:me}))}catch{}})},[]);const[kc,qv]=y.useState(0),ts=!It&&E,Km=It&&E,fs=y.useCallback(()=>{if(It){const D=l1("editor");ae(D.tree),ne(D.editor);return}ne(!0)},[It]),co=y.useCallback(D=>{const ee=(D==null?void 0:D.trim())||(Z==null?void 0:Z.workspaceRoot)||null;ee&&(Pe(fe=>(fe==null?void 0:fe.workspaceRoot)===ee?fe:{surfaceId:(fe==null?void 0:fe.surfaceId)??"",workspaceRoot:ee,nodeId:fe==null?void 0:fe.nodeId}),ln("developer"),E||($.current=!0,R(!0)),fs(),Kt({key:Date.now()}))},[Z==null?void 0:Z.workspaceRoot,E,fs]),Ed=y.useCallback(()=>{var D;(D=hs.current)==null||D.closePreviewTarget()},[]),Cc=y.useCallback((D,ee)=>{const fe=(D==null?void 0:D.trim())||null,he={open:!0,target:fe,workspaceRoot:(ee==null?void 0:ee.trim())||(Z==null?void 0:Z.workspaceRoot)||null,displayState:fe?"connected":"blank",displayTarget:fe};return ln("developer"),H(fe),Q(he),ee!=null&&ee.trim()&&Pe(me=>(me==null?void 0:me.workspaceRoot)===ee.trim()?me:{surfaceId:(me==null?void 0:me.surfaceId)??"",workspaceRoot:ee.trim(),nodeId:me==null?void 0:me.nodeId}),E||($.current=!0,R(!0)),fs(),z({target:fe,key:Date.now()}),!0},[Z==null?void 0:Z.workspaceRoot,E,fs]),ea=y.useCallback(()=>({width:window.innerWidth,height:window.innerHeight}),[]),Vh=y.useCallback((D=Bt)=>syt({size:D,viewport:ea()}),[Bt,ea]),Gv=y.useCallback(D=>{var Rt,Wr;if(D.pointerType!=="touch"&&D.button!==0)return;const ee=D.target;if(ee!=null&&ee.closest('button, [role="button"], a, input, textarea, select'))return;D.preventDefault();const fe=D.currentTarget,he=ea(),me=Pk({size:Bt,viewport:he}),Ae=ft.x<0||ft.y<0?Vh(me):c_({position:ft,size:me,viewport:he});(me.w!==Bt.w||me.h!==Bt.h)&&pt(me),(Ae.x!==ft.x||Ae.y!==ft.y)&&ct(Ae),Re.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,posX:Ae.x,posY:Ae.y};const mt=Qr=>{!Re.current||Re.current.pointerId!==Qr.pointerId||ct(c_({position:{x:Re.current.posX+Qr.clientX-Re.current.startX,y:Re.current.posY+Qr.clientY-Re.current.startY},size:me,viewport:ea()}))},bt=()=>{var Qr,ks;(Qr=fe.hasPointerCapture)!=null&&Qr.call(fe,D.pointerId)&&((ks=fe.releasePointerCapture)==null||ks.call(fe,D.pointerId)),document.removeEventListener("pointermove",mt),document.removeEventListener("pointerup",zt),document.removeEventListener("pointercancel",zt),document.body.style.cursor="",document.body.style.userSelect="",nr.current=null},zt=Qr=>{!Re.current||Re.current.pointerId!==Qr.pointerId||(Re.current=null,bt())};D.pointerType!=="touch"&&(document.body.style.cursor="move"),document.body.style.userSelect="none",(Rt=nr.current)==null||Rt.call(nr),nr.current=bt,(Wr=fe.setPointerCapture)==null||Wr.call(fe,D.pointerId),document.addEventListener("pointermove",mt),document.addEventListener("pointerup",zt),document.addEventListener("pointercancel",zt)},[ft,Bt,Vh,ea]),up=y.useCallback(D=>{var bt,zt;if(D.pointerType!=="touch"&&D.button!==0)return;D.preventDefault(),D.stopPropagation();const ee=D.currentTarget,fe=ea(),he=Pk({size:Bt,viewport:fe});(he.w!==Bt.w||he.h!==Bt.h)&&pt(he),wt.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,w:he.w,h:he.h};const me=Rt=>{if(!wt.current||wt.current.pointerId!==Rt.pointerId)return;const Wr=Pk({size:{w:wt.current.w+Rt.clientX-wt.current.startX,h:wt.current.h+Rt.clientY-wt.current.startY},viewport:ea()});pt(Wr),ct(Qr=>Qr.x<0||Qr.y<0?Qr:c_({position:Qr,size:Wr,viewport:ea()}))},Ae=()=>{var Rt,Wr;(Rt=ee.hasPointerCapture)!=null&&Rt.call(ee,D.pointerId)&&((Wr=ee.releasePointerCapture)==null||Wr.call(ee,D.pointerId)),document.removeEventListener("pointermove",me),document.removeEventListener("pointerup",mt),document.removeEventListener("pointercancel",mt),document.body.style.cursor="",document.body.style.userSelect="",Te.current=null},mt=Rt=>{!wt.current||wt.current.pointerId!==Rt.pointerId||(wt.current=null,Ae())};D.pointerType!=="touch"&&(document.body.style.cursor="nwse-resize"),document.body.style.userSelect="none",(bt=Te.current)==null||bt.call(Te),Te.current=Ae,(zt=ee.setPointerCapture)==null||zt.call(ee,D.pointerId),document.addEventListener("pointermove",me),document.addEventListener("pointerup",mt),document.addEventListener("pointercancel",mt)},[Bt,ea]);y.useEffect(()=>{var D,ee;V||(Re.current=null,wt.current=null,(D=nr.current)==null||D.call(nr),(ee=Te.current)==null||ee.call(Te),document.body.style.cursor="",document.body.style.userSelect="")},[V]),y.useEffect(()=>()=>{var D,ee;(D=nr.current)==null||D.call(nr),(ee=Te.current)==null||ee.call(Te),document.body.style.cursor="",document.body.style.userSelect=""},[]),y.useEffect(()=>{if(!V)return;const D=()=>{const ee=ea();let fe;pt(he=>{const me=Pk({size:he,viewport:ee});return fe=me,me.w===he.w&&me.h===he.h?he:me}),ct(he=>{if(he.x<0&&he.y<0)return he;const me=c_({position:he,size:fe,viewport:ee});return me.x===he.x&&me.y===he.y?he:me})};return D(),window.addEventListener("resize",D),()=>window.removeEventListener("resize",D)},[V,ea]);const{user:Oo,token:kt,settings:_s,isLoading:hl,isAuthenticated:Wl,login:ji,register:qh,logout:dp,bindSession:fl,updateSettings:pl,clearSessionArchive:U0}=ift(),jc=y.useCallback(async()=>{var D;if(kt){No(!0);try{if(Mi){const ee=window.jaitDesktop,[fe,he,me]=await Promise.all([(D=ee.getInfo)==null?void 0:D.call(ee),ee.checkForUpdate(),fetch(`${Xi}/health`).then(mt=>mt.ok?mt.json():null).catch(()=>null)]),Ae=(me==null?void 0:me.version)??"";Sd({currentVersion:Ae,latestVersion:he.version??(fe==null?void 0:fe.appVersion)??"",hasUpdate:he.updateAvailable})}else{const ee=await fetch(`${Xi}/api/update/check`,{headers:{Authorization:`Bearer ${kt}`}});ee.ok&&Sd(await ee.json())}}catch{}No(!1)}},[kt,Mi]),hp=y.useCallback(async()=>{if(!(!kt||!(In!=null&&In.hasUpdate))){Cd(!0);try{const D=await fetch(`${Xi}/api/update/apply`,{method:"POST",headers:{Authorization:`Bearer ${kt}`,"Content-Type":"application/json"},body:JSON.stringify({version:In.latestVersion})});if(D.ok)gi.current=In.latestVersion,li.current=!1,kn(!0),ai.success(`Updated to v${In.latestVersion}. Gateway is restarting...`);else{const ee=await D.json().catch(()=>({}));ai.error(Eq(ee.error,"Update failed"))}}catch{ai.error("Update request failed")}Cd(!1)}},[kt,In]),Su=y.useCallback(()=>{const D=new URL(window.location.href);D.searchParams.set("_jaitUpdate",Date.now().toString()),(async()=>{try{if("caches"in window){const ee=await caches.keys();await Promise.all(ee.map(fe=>caches.delete(fe)))}}catch{}window.location.replace(D.toString())})()},[]),Ad=y.useCallback(({connected:D,reconnected:ee})=>{if(!D){gi.current&&(li.current=!0);return}if(zl.current(),ee&&gi.current&&li.current){const fe=gi.current;if(gi.current=null,li.current=!1,kn(!1),Hi==="web"){ai.success(`Gateway restarted on v${fe}. Refreshing...`),Su();return}ai.success(`Gateway restarted on v${fe}.`),jc()}},[Hi,jc,Su]);y.useEffect(()=>{kt&&jc()},[kt,jc]);const Ym=y.useCallback(()=>o(!0),[]);y.useEffect(()=>{kt&&fetch(`${Xi}/api/filesystem/nodes`,{headers:kt?{Authorization:`Bearer ${kt}`}:{}}).then(D=>D.ok?D.json():null).then(D=>{D!=null&&D.nodes&&Uh(D.nodes)}).catch(()=>{})},[kt]);const{workspaces:ps,personalSessions:Aa,archivedSessionsByWorkspace:Tc,activeWorkspaceId:zn,activeSessionId:st,loading:Nr,createSession:uo,createWorkspace:Xm,updateWorkspace:Zm,switchWorkspace:Gh,switchSession:Oa,fetchArchivedSessions:Ro,removeWorkspace:Ul,clearArchivedWorkspaces:V0,fetchArchivedWorkspaces:Vl,restoreWorkspace:Jm,renameSession:ku,fetchWorkspaces:Kh,hasMoreWorkspaces:Yh,showMoreWorkspaces:Ui,showFewerWorkspaces:q0,workspaceListLimit:Qm}=cft(kt,Ym);y.useEffect(()=>{L.current=!1},[st]);const fn=y.useMemo(()=>ps.find(D=>D.id===zn)??null,[ps,zn]),Xh=y.useRef(kt);Xh.current=kt;const Od=y.useRef(hl);Od.current=hl;const fp=y.useRef(Nr);fp.current=Nr;const Zh=y.useRef(ps);Zh.current=ps;const Ws=y.useRef(st);Ws.current=st;const ta=y.useRef(fn);ta.current=fn;const Nc=y.useMemo(()=>(fn==null?void 0:fn.sessions.find(D=>D.id===st))??Aa.find(D=>D.id===st)??null,[st,fn,Aa]),pp=y.useMemo(()=>{if(!fn)return Aa;const D=fn.sessions,ee=Tc[fn.id]??[],fe=new Set;return[...D,...ee].filter(he=>fe.has(he.id)?!1:(fe.add(he.id),!0)).sort((he,me)=>new Date(me.lastActiveAt).getTime()-new Date(he.lastActiveAt).getTime())},[fn,Tc,Aa]),ql=y.useCallback(async()=>{const D=Date.now()+1500;for(;Date.now()<D;){if(!Od.current&&!fp.current)return;await new Promise(ee=>window.setTimeout(ee,50))}},[]),G0=y.useCallback(D=>{Wh(D),Os(!0)},[]),Ec=gv(),mp=y.useCallback(async D=>{const ee=ps.find(me=>me.id===D);if(!await Ec({title:"Archive workspace",description:`Are you sure you want to archive "${(ee==null?void 0:ee.title)||(ee==null?void 0:ee.rootPath)||"this workspace"}"? You can clear archived workspaces later from Settings.`,confirmLabel:"Archive",variant:"destructive"}))return;if(await Ul(D)){ai.success("Workspace archived.");return}ai.error("Failed to archive workspace.")},[Ec,Ul,ps]),{messages:Rs,isLoading:rs,isLoadingHistory:Mo,remainingPrompts:ml,error:Ra,hitMaxRounds:Ac,pendingPlan:Ma,todoList:Rd,changedFiles:ws,messageQueue:yi,completionCount:Cu,contextUsage:ju,sessionInfo:Gl,sendMessage:Oc,restartFromMessage:eg,cancelRequest:Md,clearMessages:gp,continueChat:K0,executePlan:tg,rejectPlan:ra,enqueueMessage:Us,dequeueMessage:Vs,updateQueueItem:Rc,reorderQueueItem:yp,setMessageQueueState:na,acceptFile:Tu,rejectFile:Pd,acceptAllFiles:Mc,rejectAllFiles:Jh,setTodoList:Pc,addChangedFile:Lc,setChangedFiles:Nu,setOnChangedFilesSync:Ss,refreshMessages:Pa}=aft(st,kt,Ym,(Z==null?void 0:Z.surfaceId)??null),[ci,ia]=y.useState({}),[gl,$c]=y.useState(0),[vp,xp]=y.useState(0),Ld=y.useRef(new Set),{terminals:yl,activeTerminalId:Hn,setActiveTerminalId:qs,createTerminal:$i,killTerminal:vl,refresh:Po}=Aht(kt),ho=Oht(kt),Gs=y.useRef(null);y.useEffect(()=>{if(b&&Hn){const D=setTimeout(()=>{var ee;return(ee=Gs.current)==null?void 0:ee.focus()},50);return()=>clearTimeout(D)}},[b,Hn]);const{provider:Zn,model:fo}=lft(),sa=Ght({token:kt}),be=ypt();zl.current=be.refresh;const $d=y.useMemo(()=>hrt(be.activities),[be.activities]),Dc=y.useMemo(()=>[...be.threads].sort((D,ee)=>new Date(ee.updatedAt).getTime()-new Date(D.updatedAt).getTime()),[be.threads]),oa=y.useMemo(()=>be.selectedRepo?be.getRuntimeInfoForRepository(be.selectedRepo):null,[be.getRuntimeInfoForRepository,be.selectedRepo]),po=y.useMemo(()=>be.selectedThread?be.getRepositoryForThread(be.selectedThread):null,[be.getRepositoryForThread,be.selectedThread]),vi=y.useMemo(()=>po?be.getRuntimeInfoForRepository(po):null,[be.getRuntimeInfoForRepository,po]),Kn=y.useMemo(()=>Dc.filter(D=>D.status==="running"),[Dc]),on=It&&yt==="manager"&&!!be.selectedThread,xl=y.useMemo(()=>be.selectedThread?ci[be.selectedThread.id]??[]:[],[be.selectedThread,ci]),Ks=be.selectedRepo!=null,Dd=oa!=null&&!oa.online&&!oa.loading,Lo=be.creating||!Ks||Dd,Qh=be.selectedRepo?Dd?"Repository is offline...":be.selectedThread?"Send a follow-up to the selected thread...":"Describe what you want to do...":"Select a repository to start a thread...",Id=vr==="thread"?Qh:"Ask anything...";y.useEffect(()=>{var fe,he,me;const D=window.jaitDesktop;if(!D)return;(fe=D.getInfo)==null||fe.call(D).then(Ae=>ul(Ae.platform)),(he=D.windowIsMaximized)==null||he.call(D).then(Ae=>Qo(Ae));const ee=(me=D.onMaximizedChange)==null?void 0:me.call(D,(Ae,mt)=>Qo(mt));return()=>{ee==null||ee()}},[]);const Eu=y.useRef(!1),Kl=y.useRef(new Set),Bd=y.useRef(null),[zd,bp]=y.useState(0),$o=y.useCallback(D=>{Kl.current.add(D)},[]),tn=y.useCallback(D=>Kl.current.has(D)?(Kl.current.delete(D),!0):!1,[]);y.useEffect(()=>{Eu.current=!1},[st]),y.useEffect(()=>{i(void 0)},[st]);const La=y.useRef(null);y.useEffect(()=>{La.current=null},[st]);const bl=y.useCallback(()=>{Pa(),$c(D=>D+1)},[Pa]),Au=y.useRef(!1),Fd=y.useRef(0),Ic=y.useRef(st),Yl=y.useRef(!1),$a=y.useRef({}),G=y.useRef({}),se=y.useRef({}),ie=y.useRef(null),pe=y.useRef(!1);y.useEffect(()=>{yi.length>0&&(Au.current=!0)},[yi.length]);const de=Cu+gl,Fe=y.useRef(Cu),je=y.useRef(gl);y.useEffect(()=>{Cu!==Fe.current&&(Fe.current=Cu,xp(D=>D+1))},[Cu]),y.useEffect(()=>{if(gl===je.current)return;const D=gl>je.current;je.current=gl,D&&xp(ee=>ee+1)},[gl]),y.useEffect(()=>{Ic.current!==st&&(Ic.current=st,$c(0),je.current=0,Au.current=!1,Yl.current=!1,Fd.current=de)},[st,de]),y.useEffect(()=>{rs&&(Yl.current=!1)},[rs]),y.useEffect(()=>{if(de<=Fd.current||rs||Mo||yi.length>0)return;const D=Au.current;if(Fd.current=de,Au.current=!1,Yl.current){Yl.current=!1;return}A7({id:`chat-complete:${st??"global"}:${de}`,title:D?"Queued chat finished":"Chat finished",body:D?"All queued chat messages finished generating.":"Agent response finished generating.",level:"success",includeToast:!1})},[st,de,rs,Mo,yi.length]);const[Ve,Nt]=y.useState(!1),At=Ept({authToken:kt,onError:D=>{console.warn("[voice] error:",D)},onDisconnected:()=>{Nt(!1)}});ie.current=At,pe.current=Ve,y.useEffect(()=>{var he;const D=async me=>{var Ae,mt;try{const zt=[...await qr.getActivities(me.id,40)].reverse().find(rn=>{if(rn.kind!=="message")return!1;const cn=rn.payload??{};return cn.role==="assistant"&&(typeof cn.content=="string"||typeof rn.summary=="string")}),Rt=(zt==null?void 0:zt.payload)??{},Wr=typeof Rt.content=="string"?Rt.content:(zt==null?void 0:zt.summary)??"",Qr=dyt(Wr),ks=Qr?`${me.title} finished. ${Qr}`:me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(Ae=ie.current)==null||Ae.announce(ks)}catch{const bt=me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(mt=ie.current)==null||mt.announce(bt)}},ee={},fe=new Set;for(const me of be.threads){fe.add(me.id),ee[me.id]=me.status;const Ae=((he=ci[me.id])==null?void 0:he.length)??0;if(Ae>0&&($a.current[me.id]=!0),(se.current[me.id]==="running"&&me.status!=="running"||G.current[me.id])&&(G.current[me.id]=me),G.current[me.id]&&Ae===0){const bt=G.current[me.id],zt=$a.current[me.id]===!0;if(delete G.current[me.id],delete $a.current[me.id],bt.status==="interrupted")continue;xp(Qr=>Qr+1);const Rt=zt?"Queued thread finished":"Thread finished",Wr=bt.status==="completed"?`"${bt.title}" completed.`:`"${bt.title}" ended with status ${bt.status}.`;A7({id:`thread-complete:${me.id}:${bt.updatedAt}`,title:Rt,body:Wr,level:bt.status==="completed"?"success":"warning",includeToast:!1}),pe.current&&D(bt)}}for(const me of Object.keys(se.current))fe.has(me)||(delete $a.current[me],delete G.current[me]);se.current=ee},[be.threads,ci]);const Cr=y.useCallback(()=>{Yl.current=!0,Md()},[Md]),[gr,$r]=rpt(zn,"workspace.ui",kt),ni=y.useRef(null);ni.current=gr;const Vi=y.useCallback((D,ee,fe)=>{const me={...ni.current??{panel:null,tabs:null,layout:null,terminal:null,preview:null},[D]:ee};ni.current=me,$r(me,fe)},[$r]),ns=y.useCallback((D,ee)=>{Vi("panel",D,ee)},[Vi]),Bc=y.useCallback((D,ee)=>{Vi("terminal",D,ee)},[Vi]),Do=y.useCallback(D=>{Vi("preview",D)},[Vi]),Y0=!gr&&!!zn&&!!kt,ef=y.useCallback((D,ee)=>{Vi("layout",D,ee)},[Vi]),Kv=y.useCallback(D=>{Vi("tabs",D)},[Vi]),Xl=(gr==null?void 0:gr.preview)??null,[,zc]=nh(st,"screen-share.panel",kt),[,rg,_p]=nh(st,"chat.mode",kt),[,Yv,Xv]=nh(st,"chat.responseStyle",kt),[,Hd,Ou]=nh(st,"chat.providerRuntimeMode",kt),[,Zv,X0]=nh(st,"chat.cliModels",kt),[,tf,rf]=nh(st,"chat.view",kt),[,ng]=nh(st,"queued_messages",kt),[,wp]=nh(st,"queued_thread_messages",kt),[ig,Jv,Fc]=nh(st,"manager.selectedRepo",kt),[Qv,Zl]=y.useState(null),[Sp,sg]=y.useState(!1),[Jl,Da]=y.useState(!1),Wd=y.useMemo(()=>R7(ig),[ig]);y.useEffect(()=>{Zl(null),sg(!1)},[zn]),y.useEffect(()=>{Ud.current=!1,Da(!1)},[st]);const Ud=y.useRef(!1);y.useEffect(()=>{if(!st){Ud.current=!1,Da(!1);return}if(Fc)return;if(Ud.current){Jl||Da(!0);return}const D=Wd;if(!D.repoId&&!D.localPath){Ud.current=!0,Da(!0);return}const ee=Dce(be.repositories,D);if(!ee){if(be.repositories.length===0)return;Ud.current=!0,Da(!0);return}if(be.selectedRepoId!==ee){be.setSelectedRepoId(ee);return}Ud.current=!0,Da(!0)},[st,be.repositories,be.selectedRepoId,be.setSelectedRepoId,Fc,Jl,Wd]);const og=y.useRef(!1),Vd=y.useRef(null);y.useEffect(()=>{og.current=!1,Vd.current=null},[st]),y.useEffect(()=>{if(!st||!kt||Fc||!Jl)return;const D=be.selectedRepo?{repoId:be.selectedRepo.id,localPath:be.selectedRepo.localPath}:null,ee=JSON.stringify(D);if(og.current){if(ee===Vd.current)return}else if(og.current=!0,Vd.current=ee,ee===JSON.stringify(Wd))return;Vd.current=ee,Jv(D)},[st,be.selectedRepo,Fc,Jl,Wd,Jv,kt]),y.useEffect(()=>{z(null)},[zn]),y.useEffect(()=>{Pe(null)},[zn]);const[,kp]=nh(st,"changed_files",kt);y.useEffect(()=>{var me,Ae,mt;const D=Bd.current;if(!D){fn&&sg(!0);return}if(!fn||D.workspaceId!==zn)return;const{ui:ee}=D,fe=ee.panel;if(fe){const bt=((me=fe.remotePath)==null?void 0:me.trim())||null,zt=((Ae=fn.rootPath)==null?void 0:Ae.trim())||null,Rt=zt||bt;Rt&&($o("workspace.panel"),Pe({surfaceId:!!(bt&&zt&&bt===zt)?fe.surfaceId??"":"",workspaceRoot:Rt,nodeId:fn.nodeId??fe.nodeId}),$.current=fe.open===!0,R(fe.open===!0))}ee.tabs&&Zl(ee.tabs);const he=ee.preview;if(he){const bt=Nq(he.target);bt&&H(bt),he.open&&((mt=ee.panel)==null?void 0:mt.open)===!0&&bt&&Cc(bt,he.workspaceRoot??null)}Bd.current=null,sg(!0)},[fn,zn,zd,Cc]);const Z0=y.useRef(null);y.useEffect(()=>{if(!Km){Z0.current=null;return}const D=`${zn??"no-workspace"}:${(Z==null?void 0:Z.surfaceId)??(Z==null?void 0:Z.workspaceRoot)??"no-workspace"}`;if(Z0.current===D||(Z0.current=D,!re||!ce))return;const ee=Z7();ae(ee.tree),ne(ee.editor)},[Km,zn,Z==null?void 0:Z.surfaceId,Z==null?void 0:Z.workspaceRoot,re,ce]);const RS=y.useCallback((D,ee)=>{var fe;switch($o(D),D){case"workspace.panel":if(!ee){$.current=!1,R(!1);break}if(ee&&typeof ee=="object"&&!Array.isArray(ee)){const he=ee,me=((fe=he.remotePath)==null?void 0:fe.trim())||(Z==null?void 0:Z.workspaceRoot)||null;me&&Pe({surfaceId:he.surfaceId??(Z==null?void 0:Z.surfaceId)??"",workspaceRoot:me,nodeId:he.nodeId??(Z==null?void 0:Z.nodeId)});const Ae=he.open===!0;$.current=Ae,R(Ae)}break;case"workspace.layout":if(ee&&typeof ee=="object"&&!Array.isArray(ee)){const he=ee;ae(he.tree!==!1),ne(he.editor!==!1)}break;case"screen-share.panel":te(ee?ee.open!==!1:!1);break;case"terminal.panel":_(ee?ee.open!==!1:!1);break;case"chat.mode":(ee==="ask"||ee==="agent"||ee==="plan")&&Xr(ee);break;case"chat.responseStyle":Aq(ee)?br(ee):ee===null&&br("normal");break;case"chat.providerRuntimeMode":ee==="supervised"||ee==="full-access"?Br(ee):ee===null&&Br("full-access");break;case"chat.cliModels":ee&&typeof ee=="object"&&!Array.isArray(ee)?An(ee):ee===null&&An({});break;case"chat.view":(ee==="developer"||ee==="manager")&&ln(ee);break;case"todo_list":Array.isArray(ee)&&Pc(ee);break;case"file_changed":{const he=ee;he!=null&&he.path&&Lc(he.path,he.name??he.path.split("/").pop()??he.path);break}case"changed_files":{Array.isArray(ee)?Nu(ee):ee===null&&Nu([]);break}case"queued_messages":{Array.isArray(ee)?na(ee):ee===null&&na([]);break}case"queued_thread_messages":{ee&&typeof ee=="object"&&!Array.isArray(ee)?ia(ee):ee===null&&ia({});break}}},[Pc,Lc,Nu,na,Cc,Ed,It,$o,Z==null?void 0:Z.nodeId,Z==null?void 0:Z.surfaceId,Z==null?void 0:Z.workspaceRoot]),Cp=y.useCallback(D=>{var ks;Eu.current=!0;for(const rn of Object.keys(D))$o(rn);const ee=D["screen-share.panel"];ee&&ee.open!==!1?te(!0):te(!1);const fe=D["chat.mode"];(fe==="ask"||fe==="agent"||fe==="plan")&&Xr(fe);const he=D["chat.responseStyle"];Aq(he)?br(he):br("normal");const me=D["chat.providerRuntimeMode"];Br(me==="supervised"||me==="full-access"?me:"full-access");const Ae=D["chat.cliModels"];if(Ae&&typeof Ae=="object"&&!Array.isArray(Ae))An(Ae);else{const rn=Oq(Pt);An(rn)}const mt=D["chat.view"];(mt==="developer"||mt==="manager")&&ln(mt);const bt=D.todo_list;Array.isArray(bt)&&bt.length>0&&Pc(bt);const zt=D.changed_files;Array.isArray(zt)?Nu(zt):Nu([]);const Rt=D.queued_messages;Array.isArray(Rt)?na(Rt):na([]);const Wr=D.queued_thread_messages;Wr&&typeof Wr=="object"&&!Array.isArray(Wr)?ia(Wr):ia({});const Qr=D._workspace;if(Qr!=null&&Qr.id&&Qr.state){const rn=Qr.state["workspace.ui"];rn&&((ks=rn.terminal)!=null&&ks.open?_(!0):_(!1),rn.tabs&&Zl(rn.tabs),rn.layout&&($o("workspace.layout"),ae(rn.layout.tree!==!1),ne(rn.layout.editor!==!1)),Bd.current={workspaceId:Qr.id,ui:rn},bp(cn=>cn+1))}},[Pc,Nu,na,Pt,$o,It]),nf=y.useCallback((D,ee)=>fetch(`${Xi}/api/architecture?workspaceRoot=${encodeURIComponent(D)}`,{headers:{Authorization:`Bearer ${kt}`},signal:ee}).then(async fe=>fe.ok?(await fe.json()).diagram:null),[kt]),{sendUIState:On,sendArchitectureRenderResult:J0}=qft({sessionId:st,token:kt,onStateSync:RS,onFullState:Cp,onMessageComplete:bl,onThreadEvent:be.handleThreadEvent,onConnectionStateChange:Ad,onFsChanges:y.useCallback(D=>{var me,Ae;qv(mt=>mt+1);const ee=((Ae=(me=De.current)==null?void 0:me.workspaceRoot)==null?void 0:Ae.trim())||null;if(!ee||Be.current!==ee)return;const fe=Tt!=null&&Tt.startsWith(ee)?Tt.slice(ee.length).replace(/^[/\\]+/,"").replace(/\\/g,"/"):".jait/architecture.mmd";D.changes.some(mt=>{const bt=mt.path.replace(/\\/g,"/");return bt===fe||bt==="architecture.mmd"})&&nf(ee).then(mt=>{it((mt==null?void 0:mt.diagram)??null),_t((mt==null?void 0:mt.filePath)??null)}).catch(()=>{it(null),_t(null)})},[Tt,nf]),listeners:{"workspace.open":y.useCallback(D=>{Pe({surfaceId:D.surfaceId,workspaceRoot:D.workspaceRoot,nodeId:D.nodeId});const ee={open:$.current,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};ns(ee)},[ns]),"workspace.close":y.useCallback(()=>{$.current=!1,R(!1),Pe(null),We(!1),ns(null)},[ns]),"terminal.focus":y.useCallback(D=>{c("chat"),_(!0),Bc({open:!0}),Po(),D.terminalId&&qs(D.terminalId),D.reason==="interactive-input-required"&&ai(D.message??"Terminal wartet auf deine Eingabe (z. B. sudo Passwort).",{description:"Klicke ins Terminal und gib die erforderliche Eingabe ein.",duration:1e4})},[Po,Bc,qs]),"dev-preview.open":y.useCallback(D=>{const ee=typeof D.target=="string"?D.target.trim():"";c("chat"),H(ee||null),Do({open:!0,target:ee||null,workspaceRoot:D.workspaceRoot??null}),Cc(ee||null,D.workspaceRoot??null)},[Cc,Do]),"screen-share.open":y.useCallback(()=>{te(!0),zc({open:!0})},[zc]),"screen-share.close":y.useCallback(()=>{te(!1),zc(null)},[zc]),"architecture.update":y.useCallback(D=>{var ee;D.diagram&&(_e.current=D.requestId??null,it(D.diagram),_t(D.filePath??null),Gt(!1),We(!0),(ee=D.workspaceRoot)!=null&&ee.trim()&&(Be.current=D.workspaceRoot.trim()),co(D.workspaceRoot))},[co])},onPreviewSessionEvent:IKe}),Q0=y.useCallback(D=>{const ee=_e.current;ee&&(_e.current=null,J0(ee,D))},[J0]),aa=y.useCallback(D=>{Zl(D),Kv(D)},[Kv]);y.useEffect(()=>{var he;const D=((he=Z==null?void 0:Z.workspaceRoot)==null?void 0:he.trim())||null;if(!D||!kt){Be.current=null,it(null),_t(null),Gt(!1);return}if(Be.current===D)return;Be.current=D,it(null),_t(null);let ee=!1;const fe=new AbortController;return nf(D,fe.signal).then(me=>{ee||(it((me==null?void 0:me.diagram)??null),_t((me==null?void 0:me.filePath)??null))}).catch(()=>{ee||(it(null),_t(null))}),()=>{ee=!0,fe.abort()}},[Z==null?void 0:Z.workspaceRoot,nf,kt]);const la=y.useRef(null);y.useEffect(()=>{if(zn&&kt&&!Sp)return;const D=Z?{open:E,remotePath:Z.workspaceRoot,surfaceId:Z.surfaceId,nodeId:Z.nodeId}:null,ee=JSON.stringify(D);if(ee!==la.current&&(la.current=ee,ns(D),st)){if(tn("workspace.panel"))return;On("workspace.panel",D,st)}},[st,Z,zn,tn,On,ns,E,kt,Sp]);const Hc=y.useRef(null),mo=y.useCallback((D,ee)=>{ae(D.tree),ne(D.editor),ee!=null&&ee.immediateSync&&(Hc.current=JSON.stringify(D),ef(D,{immediate:!0}),st&&On("workspace.layout",D,st))},[st,On,ef]);y.useEffect(()=>{if(zn&&kt&&Y0)return;const D={tree:re,editor:ce},ee=JSON.stringify(D);if(ee!==Hc.current&&(Hc.current=ee,ef(D),st)){if(tn("workspace.layout"))return;On("workspace.layout",D,st)}},[re,ce,ef,zn,Y0,kt,st,tn,On]);const ex=y.useRef(null);y.useEffect(()=>{st&&kt&&_p||Ft!==ex.current&&(ex.current=Ft,rg(Ft),!tn("chat.mode")&&On("chat.mode",Ft,st))},[Ft,rg,On,st,_p,kt,tn]);const Ru=y.useRef(null);y.useEffect(()=>{st&&kt&&Xv||jr!==Ru.current&&(Ru.current=jr,Yv(jr),!tn("chat.responseStyle")&&On("chat.responseStyle",jr,st))},[jr,Yv,On,st,Xv,kt,tn]);const ca=y.useRef(null);y.useEffect(()=>{st&&kt&&Ou||Wt!==ca.current&&(ca.current=Wt,Hd(Wt),!tn("chat.providerRuntimeMode")&&On("chat.providerRuntimeMode",Wt,st))},[Wt,Hd,On,st,Ou,kt,tn]);const qi=y.useRef(null);y.useEffect(()=>{st&&kt&&rf||yt!==qi.current&&(qi.current=yt,tf(yt),!tn("chat.view")&&On("chat.view",yt,st))},[yt,tf,On,st,rf,kt,tn]);const ag=y.useRef(null);y.useEffect(()=>{const D=yi.length>0?yi:null,ee=JSON.stringify(D);ee!==ag.current&&(ag.current=ee,ng(D),!tn("queued_messages")&&On("queued_messages",D,st))},[yi,ng,On,st,tn]);const Wc=y.useRef(null);y.useEffect(()=>{const D=Object.keys(ci).length>0?ci:null,ee=`${st??""}:${JSON.stringify(D)}`;ee!==Wc.current&&(Wc.current=ee,wp(D),!tn("queued_thread_messages")&&On("queued_thread_messages",D,st))},[ci,wp,On,st,tn]),y.useEffect(()=>(Ss(D=>{const ee=D.length>0?D:null;kp(ee),!tn("changed_files")&&On("changed_files",ee,st)}),()=>Ss(null)),[On,st,Ss,tn,kp]),y.useEffect(()=>{localStorage.setItem("showSessionsSidebar",g?"true":"false")},[g]),y.useEffect(()=>{localStorage.setItem("showDebugPanel",Ce?"true":"false")},[Ce]);const Dr=y.useCallback(D=>{En(D)},[]),Rn=y.useCallback(D=>{br(D)},[]),xi=y.useCallback(D=>{Br(D)},[]),Mu=y.useCallback(D=>{An(ee=>({...ee,[Pt]:D}))},[Pt]),sf=y.useRef(null);y.useEffect(()=>{if(st&&kt&&X0)return;const D={};for(const he of["jait","codex","claude-code"]){const me=Sn[he];typeof me=="string"&&me.trim()&&(D[he]=me)}const ee=Object.keys(D).length>0?D:null,fe=JSON.stringify(ee);fe!==sf.current&&(sf.current=fe,Zv(ee),!tn("chat.cliModels")&&(On("chat.cliModels",ee,st),localStorage.removeItem("cliModelsByProvider"),localStorage.removeItem("cliModel")))},[Sn,st,X0,On,Zv,kt,tn]);const qd=y.useRef(!1);y.useEffect(()=>{if(!qd.current){qd.current=!0;return}kt&&pl({chat_provider:Pt})},[Pt]),y.useEffect(()=>{Tr.current=yt},[yt]),y.useEffect(()=>{yt==="manager"&&Ce&&Xe(!1)},[yt,Ce]);const jp=y.useCallback(()=>{te(!0),zc({open:!0}),!tn("screen-share.panel")&&On("screen-share.panel",{open:!0},st)},[zc,On,st,tn]),Gd=y.useCallback(()=>{te(!1),zc(null),!tn("screen-share.panel")&&On("screen-share.panel",null,st)},[zc,On,st,tn]),Tp=y.useCallback(()=>{Ed(),H(null),z(null),Q({open:!1,target:null,displayState:"hidden",displayTarget:null}),Do(null)},[Ed,Do]),ey=y.useRef(""),Di=y.useCallback(D=>{const ee=Nq(D.target),fe=D.open?ee?"connected":"blank":"hidden",he={open:D.open,target:ee,displayState:fe,displayTarget:fe==="connected"?ee:null};if(Q(me=>me.open===he.open&&me.target===he.target&&me.displayState===he.displayState&&me.displayTarget===he.displayTarget?me:he),D.open&&ee){const me={open:!0,target:ee??I??null,workspaceRoot:(Z==null?void 0:Z.workspaceRoot)??null,displayState:fe,displayTarget:fe==="connected"?ee??I??null:null},Ae=`${me.open}:${me.target??""}:${me.workspaceRoot??""}:${me.displayState??""}:${me.displayTarget??""}`;if(Ae===ey.current)return;ey.current=Ae,Do(me);return}ey.current!==""&&(ey.current="",Do(null))},[Z==null?void 0:Z.workspaceRoot,I,Do]),Kd=(Xl==null?void 0:Xl.open)===!0||q.open,Yd=y.useCallback(()=>{_(!0),Bc({open:!0},{immediate:It}),!tn("terminal.panel")&&On("terminal.panel",{open:!0},st)},[Bc,On,st,tn,It]),Uc=y.useCallback(()=>{_(!1),Qe(!1),Bc(null,{immediate:It}),!tn("terminal.panel")&&On("terminal.panel",null,st)},[Bc,On,st,tn,It]),of=y.useCallback(()=>{L.current=!0,$.current=!1,R(!1);const D=Z?{open:!1,remotePath:Z.workspaceRoot,surfaceId:Z.surfaceId,nodeId:Z.nodeId}:null;if(la.current=JSON.stringify(D),It){const ee=Z7();mo(ee,{immediateSync:!0})}D&&(ns(D,{immediate:!0}),st&&On("workspace.panel",D,st))},[st,Z,mo,It,On,ns]);P.current=of;const MS=y.useCallback(()=>{if(It){const D=Tq({tree:re,editor:ce},"tree");mo(D,{immediateSync:!0});return}ae(D=>!D)},[mo,It,re,ce]),ty=y.useCallback(()=>{if(It){const D=Tq({tree:re,editor:ce},"editor");mo(D,{immediateSync:!0});return}ne(D=>!D)},[mo,It,re,ce]),ry=y.useCallback(D=>{xe(D);const ee=l1("tree");mo(ee,{immediateSync:!0})},[mo]),ny=y.useCallback(()=>{const D=l1("editor");mo(D,{immediateSync:!0})},[mo]),Io=y.useCallback(D=>{c("chat");const ee=(D==null?void 0:D.trim())||(I==null?void 0:I.trim())||null;H(ee);const fe={open:!0,target:ee,workspaceRoot:(Z==null?void 0:Z.workspaceRoot)??null};Do(fe),Cc(ee,(Z==null?void 0:Z.workspaceRoot)??null)},[Do,I,Cc,Z==null?void 0:Z.workspaceRoot]),Jn=y.useCallback(async(D,ee,fe)=>{const he=fe??st,me=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:D,sessionId:he,nodeId:ee||"gateway"})});if(!me.ok){const Ae=await me.json().catch(()=>({message:"Unknown error"}));throw new Error(Ae.message??"Failed to open workspace")}kt&&pl({workspace_picker_path:D,workspace_picker_node_id:ee||"gateway"}).catch(()=>{})},[st,kt,pl]),iy=y.useCallback(async D=>{var me;const ee=ps.find(Ae=>Ae.id===D);if(!ee)return;const he=ee.sessions.some(Ae=>Ae.id===st)?st:((me=ee.sessions[0])==null?void 0:me.id)??null;if(Gh(D),ee.rootPath)try{const Ae=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:ee.rootPath,sessionId:he,nodeId:ee.nodeId||"gateway"})});if(!Ae.ok)return;const mt=await Ae.json(),bt=mt.nodeId||ee.nodeId||void 0;Pe({surfaceId:mt.surfaceId,workspaceRoot:mt.workspaceRoot,nodeId:bt}),$.current=!0,R(!0),ns({open:!0,remotePath:mt.workspaceRoot,surfaceId:mt.surfaceId,nodeId:bt})}catch(Ae){console.error("Failed to open workspace:",Ae)}},[ps,st,Gh,ns]),lg=y.useCallback(()=>{Hl("workspace"),Os(!0)},[]),cg=y.useCallback(D=>{!D||!zn||Tc[zn]||Ro(zn)},[zn,Tc,Ro]),Np=y.useCallback(async(D,ee,fe)=>{if(Hh){Wh(null),await Zm(Hh,{rootPath:D,nodeId:ee});return}const he=await Xm({rootPath:D,nodeId:ee});if(!he)throw new Error("Failed to create workspace");const me=he.sessions[0]??await uo(he.id);if(!me)throw new Error("Failed to create workspace session");const Ae=(fe==null?void 0:fe.openEditor)??Fl==="editor";if($.current=Ae,await Jn(D,ee,me.id),R(Ae),Ae&&It){const mt=l1("editor");mo(mt,{immediateSync:!0})}ns({open:Ae,remotePath:D,nodeId:ee})},[mo,Hh,uo,Xm,It,Zm,Jn,ns,Fl]),go=y.useCallback(async(D,ee,fe)=>{await Jn(D,ee??void 0,fe),$.current=!0,R(!0),It?mo(l1("editor"),{immediateSync:!0}):(ae(!0),ne(!0)),ns({open:!0,remotePath:D,nodeId:ee??void 0})},[mo,It,Jn,ns]),Ep=y.useCallback(async()=>{var Qr,ks,rn,cn,Cn,Ni,Ia,ss,ec,Bu,_l;if(E){of();return}L.current=!1,!De.current&&!ta.current&&(Od.current||fp.current)&&await ql();const D=De.current,ee=ta.current,fe=Ws.current,he=Zh.current,me=Xh.current;if(yt==="manager"&&be.selectedThread){const bi=be.selectedThread.workingDirectory??(po==null?void 0:po.localPath);if(bi){if((D==null?void 0:D.workspaceRoot)===bi){$.current=!0,R(!0),It?fs():ae(!0);const Gi={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};ns(Gi);return}let Ei=fe;if(!Ei){await Np(bi,(po==null?void 0:po.deviceId)??"gateway",{openEditor:!0});return}if(!Ei)return;await go(bi,(po==null?void 0:po.deviceId)??void 0,Ei);return}}if(D){$.current=!0,R(!0),It?fs():ae(!0);const bi={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};ns(bi);return}if(ee!=null&&ee.rootPath){await go(ee.rootPath,ee.nodeId??"gateway",fe);return}const Ae=(Qr=Bd.current)==null?void 0:Qr.ui.panel,mt=((ks=Ae==null?void 0:Ae.remotePath)==null?void 0:ks.trim())||null;if(mt&&fe){await go(mt,(Ae==null?void 0:Ae.nodeId)??void 0,fe);return}const bt=(rn=ni.current)==null?void 0:rn.panel,zt=((cn=bt==null?void 0:bt.remotePath)==null?void 0:cn.trim())||null;if(zt&&fe){await go(zt,(bt==null?void 0:bt.nodeId)??void 0,fe);return}const Rt=(fe?he.find(bi=>bi.sessions.some(Ei=>Ei.id===fe)):null)??(he.length===1?he[0]??null:null),Wr=((Cn=Rt==null?void 0:Rt.rootPath)==null?void 0:Cn.trim())||null;if(Rt&&Wr){const bi=Rt.sessions.find(Ei=>Ei.id===fe)??Rt.sessions[0]??null;if(bi){Oa(Rt.id,bi.id),await go(Wr,Rt.nodeId??void 0,bi.id);return}await Np(Wr,Rt.nodeId??"gateway",{openEditor:!0});return}if(fe&&me)try{const bi=await fetch(`${Xi}/api/sessions/${fe}`,{headers:{Authorization:`Bearer ${me}`}});if(bi.ok){const Ei=await bi.json();let Gi=null;if(Ei.workspaceId){const Ba=await fetch(`${Xi}/api/workspaces/${Ei.workspaceId}`,{headers:{Authorization:`Bearer ${me}`}});Ba.ok&&(Gi=await Ba.json())}const Gc=((Ni=Gi==null?void 0:Gi.rootPath)==null?void 0:Ni.trim())||((Ia=Ei.workspacePath)==null?void 0:Ia.trim())||null;if(Gc){Gi!=null&&Gi.id&&Oa(Gi.id,Ei.id),await go(Gc,(Gi==null?void 0:Gi.nodeId)??void 0,Ei.id);return}}}catch{}if(me)try{const bi=await fetch(`${Xi}/api/workspaces/last-active`,{headers:{Authorization:`Bearer ${me}`}});if(bi.ok){const Ei=await bi.json(),Gi=((ec=(ss=Ei.workspace)==null?void 0:ss.rootPath)==null?void 0:ec.trim())||zt,Gc=((Bu=Ei.session)==null?void 0:Bu.id)??fe;if((_l=Ei.workspace)!=null&&_l.id&&Gi&&Gc){Oa(Ei.workspace.id,Gc),await go(Gi,Ei.workspace.nodeId??(bt==null?void 0:bt.nodeId)??void 0,Gc);return}}}catch{}Hl("editor"),Os(!0)},[E,Z,fn,of,ns,st,yt,be.selectedThread,po,ps,Oa,kt,Np,It,fs,go,ql]);y.useEffect(()=>{if(!(Z!=null&&Z.workspaceRoot)||!st)return;let D=!1;return(async()=>{try{if(Z.surfaceId&&((await fetch(`${Xi}/api/workspace/list?path=${encodeURIComponent(Z.workspaceRoot)}&surfaceId=${encodeURIComponent(Z.surfaceId)}`)).ok||D))return;const ee=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:Z.workspaceRoot,sessionId:st,nodeId:Z.nodeId||"gateway"})});if(!ee.ok||D)return;const fe=await ee.json();if(D)return;Pe({surfaceId:fe.surfaceId,workspaceRoot:fe.workspaceRoot,nodeId:fe.nodeId});const he={open:$.current,remotePath:fe.workspaceRoot,surfaceId:fe.surfaceId,nodeId:fe.nodeId};ns(he)}catch{}})(),()=>{D=!0}},[Z==null?void 0:Z.nodeId,Z==null?void 0:Z.surfaceId,Z==null?void 0:Z.workspaceRoot,st]),y.useEffect(()=>{const D=La.current;La.current=ws.length,D!==null&&ws.length!==0&&(ws.length<=D||L.current||E||($.current=!0,R(!0)))},[ws.length]);const sy=y.useMemo(()=>ws.filter(D=>D.state==="undecided").map(D=>D.path),[ws]);y.useEffect(()=>{p(_s.theme)},[_s.theme]),y.useEffect(()=>{hl||_s.chat_provider&&_s.chat_provider!==Pt&&En(_s.chat_provider)},[_s.chat_provider,hl]),y.useEffect(()=>{var he,me;if(!(Mi&&Li==="win32"))return;const D=getComputedStyle(document.documentElement),ee=D.getPropertyValue("--background").trim(),fe=D.getPropertyValue("--foreground").trim();(me=(he=window.jaitDesktop)==null?void 0:he.setTitleBarOverlay)==null||me.call(he,{color:ee?`hsl(${ee})`:Wi==="dark"?"#202020":"#e8ecf1",symbolColor:fe?`hsl(${fe})`:Wi==="dark"?"#f2f2f2":"#0a0a0a",height:39})},[Wi,Li,Mi]),y.useEffect(()=>{if(!hl&&!Wl){const D=requestAnimationFrame(()=>o(!0));return fetch(`${Mn()}/health`,{signal:AbortSignal.timeout(4e3)}).then(ee=>ee.ok?ee.json():null).then(ee=>{ee&&typeof ee.hasUsers=="boolean"&&(us(ee.hasUsers),ee.hasUsers||qt("register"))}).catch(()=>{bu&&tA()&&(Eo("url"),Ci("Gateway is unreachable. Check the URL or try a different one."),_d(X1()??""))}),()=>cancelAnimationFrame(D)}},[hl,Wl]),y.useEffect(()=>{Wl&&st&&fl(st)},[Wl,st,fl]),y.useEffect(()=>{if(Ra==="login_required"){const D=requestAnimationFrame(()=>o(!0));return()=>cancelAnimationFrame(D)}},[Ra]),y.useEffect(()=>{(async()=>{if(!st){Xt(!1);return}try{const fe=await(await fetch(`${Xi}/api/consent/pending/${st}/approve-all`)).json();Xt(fe.approveAllEnabled===!0)}catch{Xt(!1)}})()},[st]);const oy=y.useCallback(async D=>{var he;const ee=f,fe=((he=_Q())==null?void 0:he.id)??null;p(D),i5(null);try{await pl({theme:D})}catch{p(ee),i5(fe)}},[f,pl]),PS=y.useCallback(D=>{D.preventDefault(),wu.current=!0;const ee=D.clientY,fe=Oe,he=window.innerHeight*.9,me=()=>{wu.current=!1,document.removeEventListener("mousemove",Ae),document.removeEventListener("mouseup",mt),window.removeEventListener("blur",bt),document.body.style.cursor="",document.body.style.userSelect=""},Ae=zt=>{if(!wu.current)return;const Rt=ee-zt.clientY;ge(Math.min(he,Math.max(160,fe+Rt)))},mt=()=>{me()},bt=()=>{me()};document.body.style.cursor="row-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",Ae),document.addEventListener("mouseup",mt),window.addEventListener("blur",bt)},[Oe]),LS=y.useCallback(D=>{D.preventDefault();const ee=D.clientX,fe=Le,he=window.innerWidth*.7,me=mt=>{const bt=mt.clientX-ee;et(Math.min(he,Math.max(280,fe+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)},[Le]),Bo=(Z==null?void 0:Z.workspaceRoot)??(fn==null?void 0:fn.rootPath)??null,Xd=y.useMemo(()=>Bo?yl.filter(D=>{if(!D.workspaceRoot)return!1;const ee=D.workspaceRoot.replace(/\\/g,"/").toLowerCase(),fe=Bo.replace(/\\/g,"/").toLowerCase();return ee===fe}):yl,[yl,Bo]),af=y.useCallback(async(D=null)=>{const ee=await Po(),fe=Bo,he=fe?ee.filter(Ae=>(Ae.workspaceRoot??"").replace(/\\/g,"/").toLowerCase()===fe.replace(/\\/g,"/").toLowerCase()):ee;if(D&&he.some(mt=>mt.id===D))return qs(D),D;if(Hn&&he.some(Ae=>Ae.id===Hn))return Hn;if(he.length>0){const Ae=he[he.length-1].id;return qs(Ae),Ae}return(await $i(st??"default",Bo??void 0)).id},[Po,qs,Hn,$i,st,Bo]),$S=y.useCallback(async D=>{c("chat"),Yd(),await af(D)},[af,Yd]),Vc=y.useCallback(async D=>{if(Af({showWorkspace:E,showTerminal:b,showWorkspaceTree:re,showWorkspaceEditor:ce,treeTab:ue},D)){if(D==="terminal"){Uc();return}of();return}if(D==="terminal"){c("chat"),of(),Yd(),await af();return}if(b&&Uc(),E||await Ep(),D==="editor"){ny();return}ry(D)},[Uc,of,af,Ep,ue,Yd,c,ny,ry,b,E,ce,re]),tx=y.useCallback(D=>{var ee,fe;(ee=Hs.current)==null||ee.insertChip(D),(fe=Hs.current)==null||fe.focus()},[]),DS=y.useCallback((D,ee,fe,he)=>{var Ae,mt;ee.trim()&&((Ae=Hs.current)==null||Ae.insertSegments(hyt(D,fe,he)),(mt=Hs.current)==null||mt.focus())},[]),rx=y.useCallback((D,ee,fe,he,me)=>{var bt,zt;const Ae=ee.trim();if(!Ae)return;const mt=D.replace(/^term-/,"").slice(0,8)||D;(bt=Hs.current)==null||bt.insertSegments(fyt({terminalId:D,name:mt,...fe?{workspaceRoot:fe}:{}},Ae,he,me)),(zt=Hs.current)==null||zt.focus()},[]),nx=y.useCallback(D=>{var ee,fe;D.selector&&((ee=Hs.current)==null||ee.insertSegments(pyt(D)),(fe=Hs.current)==null||fe.focus(),c("chat"))},[c]),IS=y.useCallback(async()=>{if(b){Uc();return}c("chat"),Yd(),await af()},[b,af,Yd,Uc]),ay=y.useCallback(async D=>{var fe;const ee=Xd.length===1&&((fe=Xd[0])==null?void 0:fe.id)===D;await vl(D),ee&&Uc()},[Xd,vl,Uc]),ix=y.useCallback(D=>{var me,Ae,mt;const ee=Xd.find(bt=>bt.id===D),fe=`detached-terminal-${D}-${Date.now()}`;Qht({id:fe,terminalId:D,token:kt??null,label:((me=ee==null?void 0:ee.metadata)==null?void 0:me.cwd)??`Terminal ${D.slice(0,6)}`,theme:Wi==="dark"?"dark":"light",workspaceRoot:(ee==null?void 0:ee.workspaceRoot)??Bo??null});const he=`${window.location.origin}${window.location.pathname}?detachedTerminal=${encodeURIComponent(fe)}`;if((Ae=window.jaitDesktop)!=null&&Ae.openWorkspaceWindow)window.jaitDesktop.openWorkspaceWindow({url:he,title:"Terminal"});else{const bt=window.open(he,`jait-detached-terminal-${D}`,"popup=yes,width=800,height=600,resizable=yes,scrollbars=yes");(mt=bt==null?void 0:bt.focus)==null||mt.call(bt)}},[Xd,kt,Wi,Bo]),lf=y.useCallback(D=>{D.length!==0&&(Bn(ee=>{const fe=[...ee];for(const he of D){const me=fe.findIndex(Ae=>Ae.path===he.path);me>=0?fe[me]=he:fe.push(he)}return fe}),As(ee=>{var fe;return ee??((fe=D[0])==null?void 0:fe.id)??null}))},[]),ug=y.useCallback(D=>nH(D,Z==null?void 0:Z.workspaceRoot)?(Z==null?void 0:Z.workspaceRoot)??null:fn!=null&&fn.rootPath&&nH(D,fn.rootPath)?fn.rootPath:null,[Z==null?void 0:Z.workspaceRoot,fn==null?void 0:fn.rootPath]),ly=y.useCallback(async D=>{var ee;try{const fe=ug(D);if(!fe){ai("File is outside the active workspace. Open its directory explicitly to browse it.");return}fe&&(!Z||Z.workspaceRoot!==fe)&&await Jn(fe,Z==null?void 0:Z.nodeId,st);const he={};kt&&(he.Authorization=`Bearer ${kt}`);const me=Z!=null&&Z.surfaceId&&fe===Z.workspaceRoot?`&surfaceId=${encodeURIComponent(Z.surfaceId)}`:"",Ae=D.split(/[/\\]/).pop()??D,mt=k_(Ae),bt=async()=>(E||($.current=!0,R(!0)),fs(),hs.current?!0:(await new Promise(cn=>requestAnimationFrame(()=>cn())),hs.current!=null)),zt=async(cn,Cn,Ni)=>{var ss;await bt()&&(await((ss=hs.current)==null?void 0:ss.openReviewDiff({path:cn,originalContent:Cn??"",modifiedContent:Ni,language:mt})),fs())},Rt=async(cn,Cn)=>{if(!fe)return!1;try{const Ni=await no.fileDiffs(fe),Ia=cn.replace(/\\/g,"/"),ss=Ni.find(ec=>ec.path===Ia)??Ni.find(ec=>Ia.endsWith(`/${ec.path}`));return ss?(await zt(cn,ss.original,Cn||ss.modified),!0):!1}catch{return!1}},Wr=await fetch(`${Xi}/api/workspace/backup?path=${encodeURIComponent(D)}${me}`,{headers:he});if(Wr.ok){const cn=await Wr.json();await zt(cn.path,cn.originalContent,cn.currentContent);return}const Qr=await((ee=hs.current)==null?void 0:ee.readFileByPath(D));if(Qr){if(await Rt(Qr.path,Qr.content))return;await zt(Qr.path,Qr.content,Qr.content);return}const ks=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}${me}`,{headers:he});if(!ks.ok)return;const rn=await ks.json();if(await Rt(rn.path,rn.content))return;await zt(rn.path,rn.content,rn.content);return}catch{}},[st,Z,Jn,ug,kt,E,fs]),sx=y.useCallback(async D=>{var ee;try{const fe=ug(D);if(!fe){const Ae=dl.find(mt=>mt.path===D);if(Ae){lf([Ae]),As(Ae.id),E||($.current=!0,R(!0)),fs();return}ai("File is outside the active workspace. Open its directory explicitly to browse it.");return}if(fe&&(!Z||Z.workspaceRoot!==fe)&&await Jn(fe,Z==null?void 0:Z.nodeId,st),await((ee=hs.current)==null?void 0:ee.openFileByPath(D))){E||($.current=!0,R(!0)),fs();return}const me=dl.find(Ae=>Ae.path===D);if(me)lf([me]),As(me.id);else{const Ae={};kt&&(Ae.Authorization=`Bearer ${kt}`);const mt=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}`,{headers:Ae});if(!mt.ok)throw new Error(`Failed to open file: ${mt.status}`);const bt=await mt.json(),zt=D.split(/[\\/]/).pop()??D,Rt={id:bt.path,name:zt,path:bt.path,content:bt.content,language:k_(zt)};lf([Rt]),As(Rt.id)}E||($.current=!0,R(!0)),fs()}catch(fe){ai(fe instanceof Error?fe.message:"Failed to open linked file")}},[st,Z,lf,Jn,ug,E,fs,kt,dl]),BS=y.useCallback(async(D,ee)=>{try{const fe={"Content-Type":"application/json"};kt&&(fe.Authorization=`Bearer ${kt}`),await fetch(`${Xi}/api/workspace/apply-diff`,{method:"POST",headers:fe,body:JSON.stringify({path:D,content:ee})})}catch{}Tu(D)},[kt,Tu]),ox=y.useCallback(async D=>{const ee=Array.from(D),fe=await Promise.all(ee.filter(he=>he.size<1024*1024).map(async he=>{const me=await he.text(),Ae=he.webkitRelativePath||he.name;return{id:`${Ae}-${he.lastModified}`,name:he.name,path:Ae,content:me,language:k_(Ae)}}));lf(fe)},[lf]),qc=y.useCallback(async(D,ee,fe)=>{var he;return((he=hs.current)==null?void 0:he.searchFiles(D,ee,fe))??[]},[]),Pu=y.useCallback(async(D,ee,fe)=>{var ks,rn,cn;const he=fe!=null&&fe.length?fe:void 0,me=(he?U1(he):D).trim(),Ae=he!=null&&he.length?V1(he):ee!=null&&ee.length?ee.map(Cn=>({path:Cn.path,name:Cn.name,...Cn.lineRange?{lineRange:Cn.lineRange}:{}})):[],mt=he!=null&&he.length?rEe(he):[],bt=he!=null&&he.length?nEe(he):[];if(!me&&Ae.length===0&&mt.length===0&&bt.length===0)return null;const zt=[],Rt=new Set;if(Ae.length){const Cn=new Set;for(const Ni of Ae){const Ia=`${Ni.path}:${((ks=Ni.lineRange)==null?void 0:ks.startLine)??""}:${((rn=Ni.lineRange)==null?void 0:rn.endLine)??""}`;if(Cn.has(Ia))continue;Cn.add(Ia),Rt.add(Ni.path);const ss=_l=>Ni.lineRange?_l.split(`
|
|
1380
|
+
`}]}function Aq(e){return e==="normal"||e==="simple"||e==="caveman"||e==="caveman-ultra"}const myt=["What can you help me with?","Explain quantum computing","Write a Python script","What time is it?"],gyt=["Generate architecture diagram","Explain this codebase","Find potential issues","What can you help me with?"];function Oq(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 yyt="Generating title…";function x4(e){return e.replace(/^\[.*?\]\s*/,"").trim()===yyt}function Q7({className:e=""}){return d.jsx("span",{className:`inline-block rounded bg-muted animate-pulse ${e}`,children:d.jsx("span",{className:"invisible",children:"Generating title"})})}function FP({status:e}){const r={running:{icon:Zt,color:"text-blue-500 animate-spin"},paused:{icon:Y$,color:"text-yellow-500"},interrupted:{icon:Y$,color:"text-yellow-500"},done:{icon:xc,color:"text-green-500"},completed:{icon:xc,color:"text-green-500"},error:{icon:Th,color:"text-red-500"}},{icon:n,color:i}=r[e]??{icon:Za,color:"text-muted-foreground"};return d.jsx(n,{className:`h-3 w-3 shrink-0 ${i}`})}function ede(e,r){return(r!==void 0?r:e.prState)??(e.prUrl?"open":null)}function tde({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 d.jsx(Kr,{variant:"outline",className:`h-4 shrink-0 whitespace-nowrap px-1 py-0 text-2xs ${n}`,children:r})}function e9({kind:e}){return d.jsx(Kr,{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 vyt={codex:"Codex","claude-code":"Claude"};function b4({runtime:e,className:r=""}){const n=e.availableProviders.filter(i=>i==="codex"||i==="claude-code");return d.jsxs("div",{className:`flex flex-wrap items-center gap-1 text-2xs text-muted-foreground ${r}`.trim(),children:[d.jsx("span",{children:e.locationLabel}),e.loading?d.jsx(Zt,{className:"h-3 w-3 animate-spin text-muted-foreground"}):!e.online&&d.jsx(Kr,{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=>d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:vyt[i]},i))]})}function c8({repositories:e,selectedRepo:r,disabled:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o}){return d.jsxs(uu,{children:[d.jsx(du,{asChild:!0,children:d.jsxs(ke,{variant:"outline",size:"sm",className:"h-8 gap-1.5 rounded-lg px-2 text-xs",disabled:n,children:[d.jsx(hu,{className:"h-3.5 w-3.5 shrink-0"}),d.jsx("span",{className:"max-w-[140px] truncate",children:r?r.name:"Select repository"}),d.jsx(el,{className:"h-3 w-3 shrink-0 text-muted-foreground"})]})}),d.jsxs(hc,{align:"start",side:"top",className:"w-64",children:[d.jsx(Fg,{children:"Repository"}),e.map(a=>{const l=i(a);return d.jsx(Fi,{onSelect:()=>s(a.id),children:d.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[d.jsx(hu,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[d.jsx("span",{className:"truncate",children:a.name}),d.jsx("span",{className:"text-2xs text-muted-foreground",children:a.defaultBranch}),a.source==="shared"&&d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:"Shared"})]}),d.jsx(b4,{runtime:l,className:"mt-1"})]})]})},a.id)}),e.length===0&&d.jsx("div",{className:"px-2 py-2 text-xs text-muted-foreground",children:"No repositories yet."}),d.jsx(Ku,{}),d.jsxs(Fi,{onSelect:o,children:[d.jsx(Vo,{className:"mr-2 h-3.5 w-3.5"}),"Add repository"]})]})]})}function xyt({repositories:e,selectedRepoId:r,isMobile:n=!1,getRuntimeInfo:i,onSelect:s,onAddRepository:o,onRemoveRepository:a,onOpenStrategy:l,onOpenPlan:u}){return d.jsxs("div",{className:"flex h-full flex-col",children:[d.jsxs("div",{className:"flex h-[35px] items-center justify-between border-b px-3",children:[d.jsx("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Repositories"}),d.jsxs(ke,{variant:"ghost",size:"sm",className:"h-6 gap-1.5 px-2 text-xs",onClick:o,children:[d.jsx(Vo,{className:"h-3 w-3"}),"Add"]})]}),d.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?d.jsxs("p",{className:"py-4 text-center text-xs text-muted-foreground",children:["No repositories yet.",d.jsx("br",{}),d.jsx("button",{type:"button",onClick:o,className:"mt-1 inline-block underline underline-offset-2 hover:text-foreground",children:"Add one"})]}):e.map(c=>{const f=i(c);return d.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===c.id?n?"bg-secondary text-secondary-foreground":"bg-primary/10 text-primary":n?"hover:bg-muted/50":"hover:bg-muted"}`,onClick:()=>s(c.id),onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),s(c.id))},children:[d.jsx(hu,{className:"mt-0.5 h-3.5 w-3.5 shrink-0"}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsx("div",{className:n?"truncate text-xs font-medium":"truncate font-medium",children:c.name}),d.jsxs("div",{className:"mt-0.5 flex flex-wrap items-center gap-1",children:[d.jsx("span",{className:"text-2xs text-muted-foreground",children:c.defaultBranch}),c.source==="shared"&&d.jsx(Kr,{variant:"outline",className:"h-4 shrink-0 px-1 py-0 text-2xs",children:"Shared"})]}),d.jsx(b4,{runtime:f,className:"mt-1"})]}),d.jsxs("div",{className:"mt-0.5 flex shrink-0 flex-col gap-0.5",children:[d.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(c)},children:d.jsx(qG,{className:"h-3 w-3"})}),d.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(),u(c)},children:d.jsx(UG,{className:"h-3 w-3"})}),c.source==="local"&&d.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(c.id)},children:d.jsx(bh,{className:"h-3 w-3"})})]})]},c.id)})})]})}function byt({thread:e,repo:r,repoName:n,prState:i,ghAvailable:s,onOpen:o,onStop:a,onDelete:l}){const u=_v(),[c,f]=y.useState(!1),p=nrt({hasRepository:r!=null,threadKind:e.kind,threadStatus:e.status,threadBranch:e.branch,prUrl:e.prUrl,prState:i}),g=zP(e),v=e.kind==="delegation"||!u;return d.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:b=>{b.target===b.currentTarget&&(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),o())},children:[d.jsxs("div",{className:"flex flex-col gap-0.5",children:[d.jsxs("div",{className:"flex w-full min-w-0 items-center gap-1.5",children:[d.jsx(FP,{status:e.status}),d.jsx("div",{className:"flex-1 truncate text-sm font-medium sm:text-sm",children:x4(e.title)?d.jsx(Q7,{className:"h-3.5 w-28"}):d.jsx("span",{children:e.title.replace(/^\[.*?\]\s*/,"")})})]}),d.jsxs("div",{className:"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-0.5 pl-[calc(0.75rem+6px)] text-xs leading-tight text-muted-foreground sm:flex-nowrap sm:gap-x-1 sm:gap-y-0 sm:text-xs",children:[d.jsx("span",{className:"min-w-0 truncate",children:n}),v&&d.jsx(e9,{kind:e.kind}),e.kind==="delegation"&&d.jsx("span",{className:"shrink-0 text-amber-700 dark:text-amber-300",children:"Helper thread"}),e.branch&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsx("span",{className:"max-w-full truncate font-mono",children:e.branch})]}),e.providerId&&e.providerId!=="jait"&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsx("span",{className:"shrink-0 whitespace-nowrap",children:e.providerId})]}),e.executionNodeName&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsxs("span",{className:"inline-flex max-w-full items-center gap-1 truncate text-blue-500 dark:text-blue-400",children:[d.jsx(wa,{className:"inline h-3 w-3 mr-0.5 -mt-px"}),e.executionNodeName]})]}),i&&d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"hidden sm:inline",children:"·"}),d.jsx(tde,{prState:i})]})]})]}),d.jsxs("div",{className:"flex items-center gap-0.5 sm:gap-1",children:[p&&r&&d.jsx("div",{className:"shrink-0",onClick:b=>b.stopPropagation(),onMouseDown:b=>b.stopPropagation(),onKeyDown:b=>b.stopPropagation(),children:d.jsx(GM,{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})}),g&&d.jsx(ke,{variant:"ghost",size:"icon",className:"h-6 w-6 rounded-lg sm:h-7 sm:w-7",onClick:b=>{b.stopPropagation(),a()},title:e.kind==="delegation"?"End helper thread":"Stop thread",children:d.jsx(I1,{className:"h-3 w-3"})}),d.jsx(ke,{variant:"ghost",size:"icon",className:"h-6 w-6 rounded-lg opacity-100 transition-opacity sm:h-7 sm:w-7",disabled:c,onClick:b=>{b.stopPropagation(),f(!0),l().finally(()=>f(!1))},children:c?d.jsx(Zt,{className:"h-3.5 w-3.5 animate-spin"}):d.jsx(bh,{className:"h-3.5 w-3.5"})})]})]})}function _yt({threads:e,getRepositoryForThread:r,threadPrStates:n,ghAvailable:i,onOpenThread:s,onStopThread:o}){const[a,l]=y.useState(!1);return e.length===0?null:d.jsxs(uu,{open:a,onOpenChange:l,children:[d.jsx(du,{asChild:!0,children:d.jsxs(ke,{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:[d.jsx(Zt,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),d.jsx("span",{className:"hidden sm:inline",children:"Active"}),d.jsx(Kr,{variant:"secondary",className:"h-4 rounded-md px-1 text-2xs",children:e.length})]})}),d.jsxs(hc,{align:"end",className:"w-[min(34rem,calc(100vw-1rem))] p-0",children:[d.jsx("div",{className:"flex items-center justify-between border-b px-3 py-2",children:d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx(Zt,{className:"h-3.5 w-3.5 animate-spin text-blue-500"}),d.jsxs("span",{className:"text-sm font-medium",children:[e.length," active ",e.length===1?"thread":"threads"]})]})}),d.jsx("div",{className:"max-h-[min(28rem,70vh)] overflow-y-auto",children:e.map(u=>{const c=r(u),f=(c==null?void 0:c.name)??i6(u)??"Unknown repo",p=ede(u,u.id in n?n[u.id]:void 0);return d.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] gap-3 border-b px-3 py-3 last:border-b-0",children:[d.jsxs("button",{type:"button",className:"min-w-0 text-left transition-colors hover:text-foreground",onClick:()=>{l(!1),s(u.id)},children:[d.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[d.jsx(FP,{status:u.status}),d.jsx("span",{className:"truncate text-sm font-medium",children:x4(u.title)?"Generating title...":u.title.replace(/^\[.*?\]\s*/,"")})]}),d.jsxs("div",{className:"mt-1 flex min-w-0 flex-wrap items-center gap-1 text-xs text-muted-foreground",children:[d.jsx("span",{className:"truncate",children:f}),u.branch&&d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 font-mono text-2xs",children:u.branch}),u.providerId&&u.providerId!=="jait"&&d.jsx(Kr,{variant:"outline",className:"h-4 px-1 py-0 text-2xs",children:u.providerId}),u.executionNodeName&&d.jsxs(Kr,{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:[d.jsx(wa,{className:"inline h-2.5 w-2.5 mr-0.5"}),u.executionNodeName]}),d.jsx(tde,{prState:p})]})]}),d.jsxs("div",{className:"flex items-center gap-1 self-start",children:[c&&d.jsx("div",{onClick:g=>g.stopPropagation(),onMouseDown:g=>g.stopPropagation(),children:d.jsx(GM,{threadId:u.id,cwd:u.workingDirectory??c.localPath,branch:u.branch,baseBranch:u.prBaseBranch??c.defaultBranch,threadTitle:u.title,threadStatus:u.status,threadKind:u.kind,prUrl:u.prUrl,prState:p,ghAvailable:i,showStatusBadge:!1})}),zP(u)&&d.jsx(ke,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg",onClick:g=>{g.stopPropagation(),Promise.resolve(o(u.id))},title:"Stop thread",children:d.jsx(I1,{className:"h-3 w-3"})})]})]},u.id)})})]})]})}function wyt(){var gy,yy,Sx,vy,_g,xy,kx,by,Cx;const[e,r]=y.useState(""),[n,i]=y.useState(void 0),[s,o]=y.useState(!1),[a,l]=y.useState(null),[u,c]=y.useState(()=>{const D=["chat","jobs","network","settings"],ee=window.location.pathname.replace(/^\/+/,"").split("/")[0];return D.includes(ee)?ee:"chat"}),[f,p]=y.useState("system"),[g,v]=y.useState(()=>localStorage.getItem("showSessionsSidebar")==="true"),[b,_]=y.useState(!1),[k,w]=y.useState(!1),[C,j]=y.useState(null),[T,A]=y.useState(null),[E,R]=y.useState(!1),[M,W]=y.useState(!0),$=y.useRef(!1),[U,B]=y.useState(!1),K=y.useRef(null),P=y.useRef(null),F=y.useCallback(D=>{var ee;D&&((ee=P.current)==null||ee.call(P))},[]),L=y.useRef(!1),[I,H]=y.useState(null),[Y,z]=y.useState(null),[q,Q]=y.useState({open:!1,target:null,displayState:"hidden",displayTarget:null}),[V,te]=y.useState(!1),[re,ae]=y.useState(!0),[ce,ne]=y.useState(!0),[ue,xe]=y.useState("files"),[Z,Pe]=y.useState(null),De=y.useRef(Z);De.current=Z;const[Ce,Xe]=y.useState(()=>localStorage.getItem("showDebugPanel")==="true"),[Je,We]=y.useState(!1),[Ie,it]=y.useState(null),[Tt,_t]=y.useState(null),[Dt,Gt]=y.useState(!1),[Ct,Kt]=y.useState(null),_e=y.useRef(null),Be=y.useRef(null),[Oe,ge]=y.useState(240),[Se,Qe]=y.useState(!1),nt=y.useRef(240),[Le,et]=y.useState(480),[ze,ot]=y.useState(()=>{if(typeof window>"u")return null;const D=window.localStorage.getItem("jait:chatPanelWidth"),ee=D?Number.parseInt(D,10):Number.NaN;return Number.isFinite(ee)?ee:null}),[ft,ct]=y.useState({x:-1,y:-1}),[Bt,pt]=y.useState({w:420,h:320}),Re=y.useRef(null),wt=y.useRef(null),nr=y.useRef(null),Te=y.useRef(null),[Rr,Xt]=y.useState(!1),[Ft,Xr]=y.useState("agent"),[jr,br]=y.useState("normal"),[vr,yn]=y.useState("agent"),[Pt,En]=y.useState("jait"),[Wt,Br]=y.useState("full-access"),[Sn,An]=y.useState(()=>Oq("jait")),lt=Sn[Pt]??null,[yt,ln]=y.useState("developer"),Tr=y.useRef(yt),[Lr,cs]=y.useState(""),[Ea,ve]=y.useState(""),[le,$e]=y.useState(""),[ut,tt]=y.useState(""),[Yt,jt]=y.useState(""),[tr,qt]=y.useState("login"),[rr,xr]=y.useState(!1),[Ur,Hr]=y.useState(!1),[ur,Zr]=y.useState(!1),[Jr,ri]=y.useState(!1),[Ue,us]=y.useState(null),[ll,_d]=y.useState(()=>X1()??""),bu=!!window.jaitDesktop||!!window.Capacitor,Mi=!!window.jaitDesktop,wd=!!window.Capacitor,Hi=Mi?"electron":wd?"capacitor":"web",{resolvedTheme:Wi}=vP(f),Ht=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedWorkspaceTab"):null,Ln=typeof window<"u"?new URLSearchParams(window.location.search).get("detachedTerminal"):null,[Zo,cl]=y.useState(null),_u=y.useRef(!1),zs=y.useCallback(async()=>{try{const D=await fetch(`${Mn()}/health`,{signal:AbortSignal.timeout(5e3)});cl(D.ok)}catch{cl(!1)}},[]);y.useEffect(()=>{_u.current||(_u.current=!0,zs())},[zs]);const[In,Sd]=y.useState(null),[kd,No]=y.useState(!1),[Pi,Cd]=y.useState(!1),[Jo,kn]=y.useState(!1),gi=y.useRef(null),li=y.useRef(!1),zl=y.useRef(async()=>{}),[Li,ul]=y.useState(null),[Sc,Qo]=y.useState(!1),[jd,Eo]=y.useState(()=>bu&&!tA()?"url":"auth"),[ds,bs]=y.useState(!1),[Fs,Ci]=y.useState(null),[dl,Bn]=y.useState([]),[Ao,As]=y.useState(null),[lo,Td]=y.useState([]),[Et,Os]=y.useState(!1),[Fl,Hl]=y.useState("workspace"),[Hh,Wh]=y.useState(null),[Nd,Uh]=y.useState([]),wu=y.useRef(!1),hs=y.useRef(null),Hs=y.useRef(null),It=_v();y.useEffect(()=>{$.current=E},[E]);const cp=y.useRef(!0);y.useEffect(()=>{if(cp.current){const ee=u==="chat"?"/":`/${u}`;window.location.pathname!==ee&&window.history.replaceState(null,"",ee+window.location.search),cp.current=!1;return}const D=u==="chat"?"/":`/${u}`;window.location.pathname!==D&&window.history.pushState(null,"",D)},[u]),y.useEffect(()=>{const D=["chat","jobs","network","settings"],ee=()=>{const fe=window.location.pathname.replace(/^\/+/,"").split("/")[0],he=D.includes(fe)?fe:"chat";c(he)};return window.addEventListener("popstate",ee),()=>window.removeEventListener("popstate",ee)},[]),y.useEffect(()=>{const D=new URLSearchParams(window.location.search).get("jait");if(!D)return;try{const fe=new URL(D),he=fe.hostname||fe.pathname.replace(/^\/+/,"");["chat","jobs","network","settings"].includes(he)&&c(he)}catch{}const ee=new URL(window.location.href);ee.searchParams.delete("jait"),window.history.replaceState(null,"",ee.toString())},[]),y.useEffect(()=>{const D=window.launchQueue;D&&D.setConsumer(async ee=>{if(ee.files.length)for(const fe of ee.files)try{const he=await fe.getFile(),me=he.type||"application/octet-stream",Ae=new FileReader;Ae.onload=()=>{var zt,Rt;const mt=Ae.result.split(",")[1]??"",bt=me.startsWith("image/")?Ae.result:void 0;(zt=Hs.current)==null||zt.addAttachment({name:he.name,mimeType:me,data:mt,preview:bt}),(Rt=Hs.current)==null||Rt.focus()},he.type.startsWith("image/")?Ae.readAsDataURL(he):Ae.readAsDataURL(new Blob([await he.arrayBuffer()],{type:me}))}catch{}})},[]);const[kc,qv]=y.useState(0),ts=!It&&E,Km=It&&E,fs=y.useCallback(()=>{if(It){const D=l1("editor");ae(D.tree),ne(D.editor);return}ne(!0)},[It]),co=y.useCallback(D=>{const ee=(D==null?void 0:D.trim())||(Z==null?void 0:Z.workspaceRoot)||null;ee&&(Pe(fe=>(fe==null?void 0:fe.workspaceRoot)===ee?fe:{surfaceId:(fe==null?void 0:fe.surfaceId)??"",workspaceRoot:ee,nodeId:fe==null?void 0:fe.nodeId}),ln("developer"),E||($.current=!0,R(!0)),fs(),Kt({key:Date.now()}))},[Z==null?void 0:Z.workspaceRoot,E,fs]),Ed=y.useCallback(()=>{var D;(D=hs.current)==null||D.closePreviewTarget()},[]),Cc=y.useCallback((D,ee)=>{const fe=(D==null?void 0:D.trim())||null,he={open:!0,target:fe,workspaceRoot:(ee==null?void 0:ee.trim())||(Z==null?void 0:Z.workspaceRoot)||null,displayState:fe?"connected":"blank",displayTarget:fe};return ln("developer"),H(fe),Q(he),ee!=null&&ee.trim()&&Pe(me=>(me==null?void 0:me.workspaceRoot)===ee.trim()?me:{surfaceId:(me==null?void 0:me.surfaceId)??"",workspaceRoot:ee.trim(),nodeId:me==null?void 0:me.nodeId}),E||($.current=!0,R(!0)),fs(),z({target:fe,key:Date.now()}),!0},[Z==null?void 0:Z.workspaceRoot,E,fs]),ea=y.useCallback(()=>({width:window.innerWidth,height:window.innerHeight}),[]),Vh=y.useCallback((D=Bt)=>syt({size:D,viewport:ea()}),[Bt,ea]),Gv=y.useCallback(D=>{var Rt,Wr;if(D.pointerType!=="touch"&&D.button!==0)return;const ee=D.target;if(ee!=null&&ee.closest('button, [role="button"], a, input, textarea, select'))return;D.preventDefault();const fe=D.currentTarget,he=ea(),me=Pk({size:Bt,viewport:he}),Ae=ft.x<0||ft.y<0?Vh(me):c_({position:ft,size:me,viewport:he});(me.w!==Bt.w||me.h!==Bt.h)&&pt(me),(Ae.x!==ft.x||Ae.y!==ft.y)&&ct(Ae),Re.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,posX:Ae.x,posY:Ae.y};const mt=Qr=>{!Re.current||Re.current.pointerId!==Qr.pointerId||ct(c_({position:{x:Re.current.posX+Qr.clientX-Re.current.startX,y:Re.current.posY+Qr.clientY-Re.current.startY},size:me,viewport:ea()}))},bt=()=>{var Qr,ks;(Qr=fe.hasPointerCapture)!=null&&Qr.call(fe,D.pointerId)&&((ks=fe.releasePointerCapture)==null||ks.call(fe,D.pointerId)),document.removeEventListener("pointermove",mt),document.removeEventListener("pointerup",zt),document.removeEventListener("pointercancel",zt),document.body.style.cursor="",document.body.style.userSelect="",nr.current=null},zt=Qr=>{!Re.current||Re.current.pointerId!==Qr.pointerId||(Re.current=null,bt())};D.pointerType!=="touch"&&(document.body.style.cursor="move"),document.body.style.userSelect="none",(Rt=nr.current)==null||Rt.call(nr),nr.current=bt,(Wr=fe.setPointerCapture)==null||Wr.call(fe,D.pointerId),document.addEventListener("pointermove",mt),document.addEventListener("pointerup",zt),document.addEventListener("pointercancel",zt)},[ft,Bt,Vh,ea]),up=y.useCallback(D=>{var bt,zt;if(D.pointerType!=="touch"&&D.button!==0)return;D.preventDefault(),D.stopPropagation();const ee=D.currentTarget,fe=ea(),he=Pk({size:Bt,viewport:fe});(he.w!==Bt.w||he.h!==Bt.h)&&pt(he),wt.current={pointerId:D.pointerId,startX:D.clientX,startY:D.clientY,w:he.w,h:he.h};const me=Rt=>{if(!wt.current||wt.current.pointerId!==Rt.pointerId)return;const Wr=Pk({size:{w:wt.current.w+Rt.clientX-wt.current.startX,h:wt.current.h+Rt.clientY-wt.current.startY},viewport:ea()});pt(Wr),ct(Qr=>Qr.x<0||Qr.y<0?Qr:c_({position:Qr,size:Wr,viewport:ea()}))},Ae=()=>{var Rt,Wr;(Rt=ee.hasPointerCapture)!=null&&Rt.call(ee,D.pointerId)&&((Wr=ee.releasePointerCapture)==null||Wr.call(ee,D.pointerId)),document.removeEventListener("pointermove",me),document.removeEventListener("pointerup",mt),document.removeEventListener("pointercancel",mt),document.body.style.cursor="",document.body.style.userSelect="",Te.current=null},mt=Rt=>{!wt.current||wt.current.pointerId!==Rt.pointerId||(wt.current=null,Ae())};D.pointerType!=="touch"&&(document.body.style.cursor="nwse-resize"),document.body.style.userSelect="none",(bt=Te.current)==null||bt.call(Te),Te.current=Ae,(zt=ee.setPointerCapture)==null||zt.call(ee,D.pointerId),document.addEventListener("pointermove",me),document.addEventListener("pointerup",mt),document.addEventListener("pointercancel",mt)},[Bt,ea]);y.useEffect(()=>{var D,ee;V||(Re.current=null,wt.current=null,(D=nr.current)==null||D.call(nr),(ee=Te.current)==null||ee.call(Te),document.body.style.cursor="",document.body.style.userSelect="")},[V]),y.useEffect(()=>()=>{var D,ee;(D=nr.current)==null||D.call(nr),(ee=Te.current)==null||ee.call(Te),document.body.style.cursor="",document.body.style.userSelect=""},[]),y.useEffect(()=>{if(!V)return;const D=()=>{const ee=ea();let fe;pt(he=>{const me=Pk({size:he,viewport:ee});return fe=me,me.w===he.w&&me.h===he.h?he:me}),ct(he=>{if(he.x<0&&he.y<0)return he;const me=c_({position:he,size:fe,viewport:ee});return me.x===he.x&&me.y===he.y?he:me})};return D(),window.addEventListener("resize",D),()=>window.removeEventListener("resize",D)},[V,ea]);const{user:Oo,token:kt,settings:_s,isLoading:hl,isAuthenticated:Wl,login:ji,register:qh,logout:dp,bindSession:fl,updateSettings:pl,clearSessionArchive:U0}=ift(),jc=y.useCallback(async()=>{var D;if(kt){No(!0);try{if(Mi){const ee=window.jaitDesktop,[fe,he,me]=await Promise.all([(D=ee.getInfo)==null?void 0:D.call(ee),ee.checkForUpdate(),fetch(`${Xi}/health`).then(mt=>mt.ok?mt.json():null).catch(()=>null)]),Ae=(me==null?void 0:me.version)??"";Sd({currentVersion:Ae,latestVersion:he.version??(fe==null?void 0:fe.appVersion)??"",hasUpdate:he.updateAvailable})}else{const ee=await fetch(`${Xi}/api/update/check`,{headers:{Authorization:`Bearer ${kt}`}});ee.ok&&Sd(await ee.json())}}catch{}No(!1)}},[kt,Mi]),hp=y.useCallback(async()=>{if(!(!kt||!(In!=null&&In.hasUpdate))){Cd(!0);try{const D=await fetch(`${Xi}/api/update/apply`,{method:"POST",headers:{Authorization:`Bearer ${kt}`,"Content-Type":"application/json"},body:JSON.stringify({version:In.latestVersion})});if(D.ok)gi.current=In.latestVersion,li.current=!1,kn(!0),ai.success(`Updated to v${In.latestVersion}. Gateway is restarting...`);else{const ee=await D.json().catch(()=>({}));ai.error(Eq(ee.error,"Update failed"))}}catch{ai.error("Update request failed")}Cd(!1)}},[kt,In]),Su=y.useCallback(()=>{const D=new URL(window.location.href);D.searchParams.set("_jaitUpdate",Date.now().toString()),(async()=>{try{if("caches"in window){const ee=await caches.keys();await Promise.all(ee.map(fe=>caches.delete(fe)))}}catch{}window.location.replace(D.toString())})()},[]),Ad=y.useCallback(({connected:D,reconnected:ee})=>{if(!D){gi.current&&(li.current=!0);return}if(zl.current(),ee&&gi.current&&li.current){const fe=gi.current;if(gi.current=null,li.current=!1,kn(!1),Hi==="web"){ai.success(`Gateway restarted on v${fe}. Refreshing...`),Su();return}ai.success(`Gateway restarted on v${fe}.`),jc()}},[Hi,jc,Su]);y.useEffect(()=>{kt&&jc()},[kt,jc]);const Ym=y.useCallback(()=>o(!0),[]);y.useEffect(()=>{kt&&fetch(`${Xi}/api/filesystem/nodes`,{headers:kt?{Authorization:`Bearer ${kt}`}:{}}).then(D=>D.ok?D.json():null).then(D=>{D!=null&&D.nodes&&Uh(D.nodes)}).catch(()=>{})},[kt]);const{workspaces:ps,personalSessions:Aa,archivedSessionsByWorkspace:Tc,activeWorkspaceId:zn,activeSessionId:st,loading:Nr,createSession:uo,createWorkspace:Xm,updateWorkspace:Zm,switchWorkspace:Gh,switchSession:Oa,fetchArchivedSessions:Ro,removeWorkspace:Ul,clearArchivedWorkspaces:V0,fetchArchivedWorkspaces:Vl,restoreWorkspace:Jm,renameSession:ku,fetchWorkspaces:Kh,hasMoreWorkspaces:Yh,showMoreWorkspaces:Ui,showFewerWorkspaces:q0,workspaceListLimit:Qm}=cft(kt,Ym);y.useEffect(()=>{L.current=!1},[st]);const fn=y.useMemo(()=>ps.find(D=>D.id===zn)??null,[ps,zn]),Xh=y.useRef(kt);Xh.current=kt;const Od=y.useRef(hl);Od.current=hl;const fp=y.useRef(Nr);fp.current=Nr;const Zh=y.useRef(ps);Zh.current=ps;const Ws=y.useRef(st);Ws.current=st;const ta=y.useRef(fn);ta.current=fn;const Nc=y.useMemo(()=>(fn==null?void 0:fn.sessions.find(D=>D.id===st))??Aa.find(D=>D.id===st)??null,[st,fn,Aa]),pp=y.useMemo(()=>{if(!fn)return Aa;const D=fn.sessions,ee=Tc[fn.id]??[],fe=new Set;return[...D,...ee].filter(he=>fe.has(he.id)?!1:(fe.add(he.id),!0)).sort((he,me)=>new Date(me.lastActiveAt).getTime()-new Date(he.lastActiveAt).getTime())},[fn,Tc,Aa]),ql=y.useCallback(async()=>{const D=Date.now()+1500;for(;Date.now()<D;){if(!Od.current&&!fp.current)return;await new Promise(ee=>window.setTimeout(ee,50))}},[]),G0=y.useCallback(D=>{Wh(D),Os(!0)},[]),Ec=gv(),mp=y.useCallback(async D=>{const ee=ps.find(me=>me.id===D);if(!await Ec({title:"Archive workspace",description:`Are you sure you want to archive "${(ee==null?void 0:ee.title)||(ee==null?void 0:ee.rootPath)||"this workspace"}"? You can clear archived workspaces later from Settings.`,confirmLabel:"Archive",variant:"destructive"}))return;if(await Ul(D)){ai.success("Workspace archived.");return}ai.error("Failed to archive workspace.")},[Ec,Ul,ps]),{messages:Rs,isLoading:rs,isLoadingHistory:Mo,remainingPrompts:ml,error:Ra,hitMaxRounds:Ac,pendingPlan:Ma,todoList:Rd,changedFiles:ws,messageQueue:yi,completionCount:Cu,contextUsage:ju,sessionInfo:Gl,sendMessage:Oc,restartFromMessage:eg,cancelRequest:Md,clearMessages:gp,continueChat:K0,executePlan:tg,rejectPlan:ra,enqueueMessage:Us,dequeueMessage:Vs,updateQueueItem:Rc,reorderQueueItem:yp,setMessageQueueState:na,acceptFile:Tu,rejectFile:Pd,acceptAllFiles:Mc,rejectAllFiles:Jh,setTodoList:Pc,addChangedFile:Lc,setChangedFiles:Nu,setOnChangedFilesSync:Ss,refreshMessages:Pa}=aft(st,kt,Ym,(Z==null?void 0:Z.surfaceId)??null),[ci,ia]=y.useState({}),[gl,$c]=y.useState(0),[vp,xp]=y.useState(0),Ld=y.useRef(new Set),{terminals:yl,activeTerminalId:Hn,setActiveTerminalId:qs,createTerminal:$i,killTerminal:vl,refresh:Po}=Aht(kt),ho=Oht(kt),Gs=y.useRef(null);y.useEffect(()=>{if(b&&Hn){const D=setTimeout(()=>{var ee;return(ee=Gs.current)==null?void 0:ee.focus()},50);return()=>clearTimeout(D)}},[b,Hn]);const{provider:Zn,model:fo}=lft(),sa=Ght({token:kt}),be=ypt();zl.current=be.refresh;const $d=y.useMemo(()=>hrt(be.activities),[be.activities]),Dc=y.useMemo(()=>[...be.threads].sort((D,ee)=>new Date(ee.updatedAt).getTime()-new Date(D.updatedAt).getTime()),[be.threads]),oa=y.useMemo(()=>be.selectedRepo?be.getRuntimeInfoForRepository(be.selectedRepo):null,[be.getRuntimeInfoForRepository,be.selectedRepo]),po=y.useMemo(()=>be.selectedThread?be.getRepositoryForThread(be.selectedThread):null,[be.getRepositoryForThread,be.selectedThread]),vi=y.useMemo(()=>po?be.getRuntimeInfoForRepository(po):null,[be.getRuntimeInfoForRepository,po]),Kn=y.useMemo(()=>Dc.filter(D=>D.status==="running"),[Dc]),on=It&&yt==="manager"&&!!be.selectedThread,xl=y.useMemo(()=>be.selectedThread?ci[be.selectedThread.id]??[]:[],[be.selectedThread,ci]),Ks=be.selectedRepo!=null,Dd=oa!=null&&!oa.online&&!oa.loading,Lo=be.creating||!Ks||Dd,Qh=be.selectedRepo?Dd?"Repository is offline...":be.selectedThread?"Send a follow-up to the selected thread...":"Describe what you want to do...":"Select a repository to start a thread...",Id=vr==="thread"?Qh:"Ask anything...";y.useEffect(()=>{var fe,he,me;const D=window.jaitDesktop;if(!D)return;(fe=D.getInfo)==null||fe.call(D).then(Ae=>ul(Ae.platform)),(he=D.windowIsMaximized)==null||he.call(D).then(Ae=>Qo(Ae));const ee=(me=D.onMaximizedChange)==null?void 0:me.call(D,(Ae,mt)=>Qo(mt));return()=>{ee==null||ee()}},[]);const Eu=y.useRef(!1),Kl=y.useRef(new Set),Bd=y.useRef(null),[zd,bp]=y.useState(0),$o=y.useCallback(D=>{Kl.current.add(D)},[]),tn=y.useCallback(D=>Kl.current.has(D)?(Kl.current.delete(D),!0):!1,[]);y.useEffect(()=>{Eu.current=!1},[st]),y.useEffect(()=>{i(void 0)},[st]);const La=y.useRef(null);y.useEffect(()=>{La.current=null},[st]);const bl=y.useCallback(()=>{Pa(),$c(D=>D+1)},[Pa]),Au=y.useRef(!1),Fd=y.useRef(0),Ic=y.useRef(st),Yl=y.useRef(!1),$a=y.useRef({}),G=y.useRef({}),se=y.useRef({}),ie=y.useRef(null),pe=y.useRef(!1);y.useEffect(()=>{yi.length>0&&(Au.current=!0)},[yi.length]);const de=Cu+gl,Fe=y.useRef(Cu),je=y.useRef(gl);y.useEffect(()=>{Cu!==Fe.current&&(Fe.current=Cu,xp(D=>D+1))},[Cu]),y.useEffect(()=>{if(gl===je.current)return;const D=gl>je.current;je.current=gl,D&&xp(ee=>ee+1)},[gl]),y.useEffect(()=>{Ic.current!==st&&(Ic.current=st,$c(0),je.current=0,Au.current=!1,Yl.current=!1,Fd.current=de)},[st,de]),y.useEffect(()=>{rs&&(Yl.current=!1)},[rs]),y.useEffect(()=>{if(de<=Fd.current||rs||Mo||yi.length>0)return;const D=Au.current;if(Fd.current=de,Au.current=!1,Yl.current){Yl.current=!1;return}A7({id:`chat-complete:${st??"global"}:${de}`,title:D?"Queued chat finished":"Chat finished",body:D?"All queued chat messages finished generating.":"Agent response finished generating.",level:"success",includeToast:!1})},[st,de,rs,Mo,yi.length]);const[Ve,Nt]=y.useState(!1),At=Ept({authToken:kt,onError:D=>{console.warn("[voice] error:",D)},onDisconnected:()=>{Nt(!1)}});ie.current=At,pe.current=Ve,y.useEffect(()=>{var he;const D=async me=>{var Ae,mt;try{const zt=[...await qr.getActivities(me.id,40)].reverse().find(rn=>{if(rn.kind!=="message")return!1;const cn=rn.payload??{};return cn.role==="assistant"&&(typeof cn.content=="string"||typeof rn.summary=="string")}),Rt=(zt==null?void 0:zt.payload)??{},Wr=typeof Rt.content=="string"?Rt.content:(zt==null?void 0:zt.summary)??"",Qr=dyt(Wr),ks=Qr?`${me.title} finished. ${Qr}`:me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(Ae=ie.current)==null||Ae.announce(ks)}catch{const bt=me.status==="completed"?`${me.title} finished successfully.`:`${me.title} finished with status ${me.status}.`;(mt=ie.current)==null||mt.announce(bt)}},ee={},fe=new Set;for(const me of be.threads){fe.add(me.id),ee[me.id]=me.status;const Ae=((he=ci[me.id])==null?void 0:he.length)??0;if(Ae>0&&($a.current[me.id]=!0),(se.current[me.id]==="running"&&me.status!=="running"||G.current[me.id])&&(G.current[me.id]=me),G.current[me.id]&&Ae===0){const bt=G.current[me.id],zt=$a.current[me.id]===!0;if(delete G.current[me.id],delete $a.current[me.id],bt.status==="interrupted")continue;xp(Qr=>Qr+1);const Rt=zt?"Queued thread finished":"Thread finished",Wr=bt.status==="completed"?`"${bt.title}" completed.`:`"${bt.title}" ended with status ${bt.status}.`;A7({id:`thread-complete:${me.id}:${bt.updatedAt}`,title:Rt,body:Wr,level:bt.status==="completed"?"success":"warning",includeToast:!1}),pe.current&&D(bt)}}for(const me of Object.keys(se.current))fe.has(me)||(delete $a.current[me],delete G.current[me]);se.current=ee},[be.threads,ci]);const Cr=y.useCallback(()=>{Yl.current=!0,Md()},[Md]),[gr,$r]=rpt(zn,"workspace.ui",kt),ni=y.useRef(null);ni.current=gr;const Vi=y.useCallback((D,ee,fe)=>{const me={...ni.current??{panel:null,tabs:null,layout:null,terminal:null,preview:null},[D]:ee};ni.current=me,$r(me,fe)},[$r]),ns=y.useCallback((D,ee)=>{Vi("panel",D,ee)},[Vi]),Bc=y.useCallback((D,ee)=>{Vi("terminal",D,ee)},[Vi]),Do=y.useCallback(D=>{Vi("preview",D)},[Vi]),Y0=!gr&&!!zn&&!!kt,ef=y.useCallback((D,ee)=>{Vi("layout",D,ee)},[Vi]),Kv=y.useCallback(D=>{Vi("tabs",D)},[Vi]),Xl=(gr==null?void 0:gr.preview)??null,[,zc]=nh(st,"screen-share.panel",kt),[,rg,_p]=nh(st,"chat.mode",kt),[,Yv,Xv]=nh(st,"chat.responseStyle",kt),[,Hd,Ou]=nh(st,"chat.providerRuntimeMode",kt),[,Zv,X0]=nh(st,"chat.cliModels",kt),[,tf,rf]=nh(st,"chat.view",kt),[,ng]=nh(st,"queued_messages",kt),[,wp]=nh(st,"queued_thread_messages",kt),[ig,Jv,Fc]=nh(st,"manager.selectedRepo",kt),[Qv,Zl]=y.useState(null),[Sp,sg]=y.useState(!1),[Jl,Da]=y.useState(!1),Wd=y.useMemo(()=>R7(ig),[ig]);y.useEffect(()=>{Zl(null),sg(!1)},[zn]),y.useEffect(()=>{Ud.current=!1,Da(!1)},[st]);const Ud=y.useRef(!1);y.useEffect(()=>{if(!st){Ud.current=!1,Da(!1);return}if(Fc)return;if(Ud.current){Jl||Da(!0);return}const D=Wd;if(!D.repoId&&!D.localPath){Ud.current=!0,Da(!0);return}const ee=Dce(be.repositories,D);if(!ee){if(be.repositories.length===0)return;Ud.current=!0,Da(!0);return}if(be.selectedRepoId!==ee){be.setSelectedRepoId(ee);return}Ud.current=!0,Da(!0)},[st,be.repositories,be.selectedRepoId,be.setSelectedRepoId,Fc,Jl,Wd]);const og=y.useRef(!1),Vd=y.useRef(null);y.useEffect(()=>{og.current=!1,Vd.current=null},[st]),y.useEffect(()=>{if(!st||!kt||Fc||!Jl)return;const D=be.selectedRepo?{repoId:be.selectedRepo.id,localPath:be.selectedRepo.localPath}:null,ee=JSON.stringify(D);if(og.current){if(ee===Vd.current)return}else if(og.current=!0,Vd.current=ee,ee===JSON.stringify(Wd))return;Vd.current=ee,Jv(D)},[st,be.selectedRepo,Fc,Jl,Wd,Jv,kt]),y.useEffect(()=>{z(null)},[zn]),y.useEffect(()=>{Pe(null)},[zn]);const[,kp]=nh(st,"changed_files",kt);y.useEffect(()=>{var me,Ae,mt;const D=Bd.current;if(!D){fn&&sg(!0);return}if(!fn||D.workspaceId!==zn)return;const{ui:ee}=D,fe=ee.panel;if(fe){const bt=((me=fe.remotePath)==null?void 0:me.trim())||null,zt=((Ae=fn.rootPath)==null?void 0:Ae.trim())||null,Rt=zt||bt;Rt&&($o("workspace.panel"),Pe({surfaceId:!!(bt&&zt&&bt===zt)?fe.surfaceId??"":"",workspaceRoot:Rt,nodeId:fn.nodeId??fe.nodeId}),$.current=fe.open===!0,R(fe.open===!0))}ee.tabs&&Zl(ee.tabs);const he=ee.preview;if(he){const bt=Nq(he.target);bt&&H(bt),he.open&&((mt=ee.panel)==null?void 0:mt.open)===!0&&bt&&Cc(bt,he.workspaceRoot??null)}Bd.current=null,sg(!0)},[fn,zn,zd,Cc]);const Z0=y.useRef(null);y.useEffect(()=>{if(!Km){Z0.current=null;return}const D=`${zn??"no-workspace"}:${(Z==null?void 0:Z.surfaceId)??(Z==null?void 0:Z.workspaceRoot)??"no-workspace"}`;if(Z0.current===D||(Z0.current=D,!re||!ce))return;const ee=Z7();ae(ee.tree),ne(ee.editor)},[Km,zn,Z==null?void 0:Z.surfaceId,Z==null?void 0:Z.workspaceRoot,re,ce]);const RS=y.useCallback((D,ee)=>{var fe;switch($o(D),D){case"workspace.panel":if(!ee){$.current=!1,R(!1);break}if(ee&&typeof ee=="object"&&!Array.isArray(ee)){const he=ee,me=((fe=he.remotePath)==null?void 0:fe.trim())||(Z==null?void 0:Z.workspaceRoot)||null;me&&Pe({surfaceId:he.surfaceId??(Z==null?void 0:Z.surfaceId)??"",workspaceRoot:me,nodeId:he.nodeId??(Z==null?void 0:Z.nodeId)});const Ae=he.open===!0;$.current=Ae,R(Ae)}break;case"workspace.layout":if(ee&&typeof ee=="object"&&!Array.isArray(ee)){const he=ee;ae(he.tree!==!1),ne(he.editor!==!1)}break;case"screen-share.panel":te(ee?ee.open!==!1:!1);break;case"terminal.panel":_(ee?ee.open!==!1:!1);break;case"chat.mode":(ee==="ask"||ee==="agent"||ee==="plan")&&Xr(ee);break;case"chat.responseStyle":Aq(ee)?br(ee):ee===null&&br("normal");break;case"chat.providerRuntimeMode":ee==="supervised"||ee==="full-access"?Br(ee):ee===null&&Br("full-access");break;case"chat.cliModels":ee&&typeof ee=="object"&&!Array.isArray(ee)?An(ee):ee===null&&An({});break;case"chat.view":(ee==="developer"||ee==="manager")&&ln(ee);break;case"todo_list":Array.isArray(ee)&&Pc(ee);break;case"file_changed":{const he=ee;he!=null&&he.path&&Lc(he.path,he.name??he.path.split("/").pop()??he.path);break}case"changed_files":{Array.isArray(ee)?Nu(ee):ee===null&&Nu([]);break}case"queued_messages":{Array.isArray(ee)?na(ee):ee===null&&na([]);break}case"queued_thread_messages":{ee&&typeof ee=="object"&&!Array.isArray(ee)?ia(ee):ee===null&&ia({});break}}},[Pc,Lc,Nu,na,Cc,Ed,It,$o,Z==null?void 0:Z.nodeId,Z==null?void 0:Z.surfaceId,Z==null?void 0:Z.workspaceRoot]),Cp=y.useCallback(D=>{var ks;Eu.current=!0;for(const rn of Object.keys(D))$o(rn);const ee=D["screen-share.panel"];ee&&ee.open!==!1?te(!0):te(!1);const fe=D["chat.mode"];(fe==="ask"||fe==="agent"||fe==="plan")&&Xr(fe);const he=D["chat.responseStyle"];Aq(he)?br(he):br("normal");const me=D["chat.providerRuntimeMode"];Br(me==="supervised"||me==="full-access"?me:"full-access");const Ae=D["chat.cliModels"];if(Ae&&typeof Ae=="object"&&!Array.isArray(Ae))An(Ae);else{const rn=Oq(Pt);An(rn)}const mt=D["chat.view"];(mt==="developer"||mt==="manager")&&ln(mt);const bt=D.todo_list;Array.isArray(bt)&&bt.length>0&&Pc(bt);const zt=D.changed_files;Array.isArray(zt)?Nu(zt):Nu([]);const Rt=D.queued_messages;Array.isArray(Rt)?na(Rt):na([]);const Wr=D.queued_thread_messages;Wr&&typeof Wr=="object"&&!Array.isArray(Wr)?ia(Wr):ia({});const Qr=D._workspace;if(Qr!=null&&Qr.id&&Qr.state){const rn=Qr.state["workspace.ui"];rn&&((ks=rn.terminal)!=null&&ks.open?_(!0):_(!1),rn.tabs&&Zl(rn.tabs),rn.layout&&($o("workspace.layout"),ae(rn.layout.tree!==!1),ne(rn.layout.editor!==!1)),Bd.current={workspaceId:Qr.id,ui:rn},bp(cn=>cn+1))}},[Pc,Nu,na,Pt,$o,It]),nf=y.useCallback((D,ee)=>fetch(`${Xi}/api/architecture?workspaceRoot=${encodeURIComponent(D)}`,{headers:{Authorization:`Bearer ${kt}`},signal:ee}).then(async fe=>fe.ok?(await fe.json()).diagram:null),[kt]),{sendUIState:On,sendArchitectureRenderResult:J0}=qft({sessionId:st,token:kt,onStateSync:RS,onFullState:Cp,onMessageComplete:bl,onThreadEvent:be.handleThreadEvent,onConnectionStateChange:Ad,onFsChanges:y.useCallback(D=>{var me,Ae;qv(mt=>mt+1);const ee=((Ae=(me=De.current)==null?void 0:me.workspaceRoot)==null?void 0:Ae.trim())||null;if(!ee||Be.current!==ee)return;const fe=Tt!=null&&Tt.startsWith(ee)?Tt.slice(ee.length).replace(/^[/\\]+/,"").replace(/\\/g,"/"):".jait/architecture.mmd";D.changes.some(mt=>{const bt=mt.path.replace(/\\/g,"/");return bt===fe||bt==="architecture.mmd"})&&nf(ee).then(mt=>{it((mt==null?void 0:mt.diagram)??null),_t((mt==null?void 0:mt.filePath)??null)}).catch(()=>{it(null),_t(null)})},[Tt,nf]),listeners:{"workspace.open":y.useCallback(D=>{Pe({surfaceId:D.surfaceId,workspaceRoot:D.workspaceRoot,nodeId:D.nodeId});const ee={open:$.current,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};ns(ee)},[ns]),"workspace.close":y.useCallback(()=>{$.current=!1,R(!1),Pe(null),We(!1),ns(null)},[ns]),"terminal.focus":y.useCallback(D=>{c("chat"),_(!0),Bc({open:!0}),Po(),D.terminalId&&qs(D.terminalId),D.reason==="interactive-input-required"&&ai(D.message??"Terminal wartet auf deine Eingabe (z. B. sudo Passwort).",{description:"Klicke ins Terminal und gib die erforderliche Eingabe ein.",duration:1e4})},[Po,Bc,qs]),"dev-preview.open":y.useCallback(D=>{const ee=typeof D.target=="string"?D.target.trim():"";c("chat"),H(ee||null),Do({open:!0,target:ee||null,workspaceRoot:D.workspaceRoot??null}),Cc(ee||null,D.workspaceRoot??null)},[Cc,Do]),"screen-share.open":y.useCallback(()=>{te(!0),zc({open:!0})},[zc]),"screen-share.close":y.useCallback(()=>{te(!1),zc(null)},[zc]),"architecture.update":y.useCallback(D=>{var ee;D.diagram&&(_e.current=D.requestId??null,it(D.diagram),_t(D.filePath??null),Gt(!1),We(!0),(ee=D.workspaceRoot)!=null&&ee.trim()&&(Be.current=D.workspaceRoot.trim()),co(D.workspaceRoot))},[co])},onPreviewSessionEvent:IKe}),Q0=y.useCallback(D=>{const ee=_e.current;ee&&(_e.current=null,J0(ee,D))},[J0]),aa=y.useCallback(D=>{Zl(D),Kv(D)},[Kv]);y.useEffect(()=>{var he;const D=((he=Z==null?void 0:Z.workspaceRoot)==null?void 0:he.trim())||null;if(!D||!kt){Be.current=null,it(null),_t(null),Gt(!1);return}if(Be.current===D)return;Be.current=D,it(null),_t(null);let ee=!1;const fe=new AbortController;return nf(D,fe.signal).then(me=>{ee||(it((me==null?void 0:me.diagram)??null),_t((me==null?void 0:me.filePath)??null))}).catch(()=>{ee||(it(null),_t(null))}),()=>{ee=!0,fe.abort()}},[Z==null?void 0:Z.workspaceRoot,nf,kt]);const la=y.useRef(null);y.useEffect(()=>{if(zn&&kt&&!Sp)return;const D=Z?{open:E,remotePath:Z.workspaceRoot,surfaceId:Z.surfaceId,nodeId:Z.nodeId}:null,ee=JSON.stringify(D);if(ee!==la.current&&(la.current=ee,ns(D),st)){if(tn("workspace.panel"))return;On("workspace.panel",D,st)}},[st,Z,zn,tn,On,ns,E,kt,Sp]);const Hc=y.useRef(null),mo=y.useCallback((D,ee)=>{ae(D.tree),ne(D.editor),ee!=null&&ee.immediateSync&&(Hc.current=JSON.stringify(D),ef(D,{immediate:!0}),st&&On("workspace.layout",D,st))},[st,On,ef]);y.useEffect(()=>{if(zn&&kt&&Y0)return;const D={tree:re,editor:ce},ee=JSON.stringify(D);if(ee!==Hc.current&&(Hc.current=ee,ef(D),st)){if(tn("workspace.layout"))return;On("workspace.layout",D,st)}},[re,ce,ef,zn,Y0,kt,st,tn,On]);const ex=y.useRef(null);y.useEffect(()=>{st&&kt&&_p||Ft!==ex.current&&(ex.current=Ft,rg(Ft),!tn("chat.mode")&&On("chat.mode",Ft,st))},[Ft,rg,On,st,_p,kt,tn]);const Ru=y.useRef(null);y.useEffect(()=>{st&&kt&&Xv||jr!==Ru.current&&(Ru.current=jr,Yv(jr),!tn("chat.responseStyle")&&On("chat.responseStyle",jr,st))},[jr,Yv,On,st,Xv,kt,tn]);const ca=y.useRef(null);y.useEffect(()=>{st&&kt&&Ou||Wt!==ca.current&&(ca.current=Wt,Hd(Wt),!tn("chat.providerRuntimeMode")&&On("chat.providerRuntimeMode",Wt,st))},[Wt,Hd,On,st,Ou,kt,tn]);const qi=y.useRef(null);y.useEffect(()=>{st&&kt&&rf||yt!==qi.current&&(qi.current=yt,tf(yt),!tn("chat.view")&&On("chat.view",yt,st))},[yt,tf,On,st,rf,kt,tn]);const ag=y.useRef(null);y.useEffect(()=>{const D=yi.length>0?yi:null,ee=JSON.stringify(D);ee!==ag.current&&(ag.current=ee,ng(D),!tn("queued_messages")&&On("queued_messages",D,st))},[yi,ng,On,st,tn]);const Wc=y.useRef(null);y.useEffect(()=>{const D=Object.keys(ci).length>0?ci:null,ee=`${st??""}:${JSON.stringify(D)}`;ee!==Wc.current&&(Wc.current=ee,wp(D),!tn("queued_thread_messages")&&On("queued_thread_messages",D,st))},[ci,wp,On,st,tn]),y.useEffect(()=>(Ss(D=>{const ee=D.length>0?D:null;kp(ee),!tn("changed_files")&&On("changed_files",ee,st)}),()=>Ss(null)),[On,st,Ss,tn,kp]),y.useEffect(()=>{localStorage.setItem("showSessionsSidebar",g?"true":"false")},[g]),y.useEffect(()=>{localStorage.setItem("showDebugPanel",Ce?"true":"false")},[Ce]);const Dr=y.useCallback(D=>{En(D)},[]),Rn=y.useCallback(D=>{br(D)},[]),xi=y.useCallback(D=>{Br(D)},[]),Mu=y.useCallback(D=>{An(ee=>({...ee,[Pt]:D}))},[Pt]),sf=y.useRef(null);y.useEffect(()=>{if(st&&kt&&X0)return;const D={};for(const he of["jait","codex","claude-code"]){const me=Sn[he];typeof me=="string"&&me.trim()&&(D[he]=me)}const ee=Object.keys(D).length>0?D:null,fe=JSON.stringify(ee);fe!==sf.current&&(sf.current=fe,Zv(ee),!tn("chat.cliModels")&&(On("chat.cliModels",ee,st),localStorage.removeItem("cliModelsByProvider"),localStorage.removeItem("cliModel")))},[Sn,st,X0,On,Zv,kt,tn]);const qd=y.useRef(!1);y.useEffect(()=>{if(!qd.current){qd.current=!0;return}kt&&pl({chat_provider:Pt})},[Pt]),y.useEffect(()=>{Tr.current=yt},[yt]),y.useEffect(()=>{yt==="manager"&&Ce&&Xe(!1)},[yt,Ce]);const jp=y.useCallback(()=>{te(!0),zc({open:!0}),!tn("screen-share.panel")&&On("screen-share.panel",{open:!0},st)},[zc,On,st,tn]),Gd=y.useCallback(()=>{te(!1),zc(null),!tn("screen-share.panel")&&On("screen-share.panel",null,st)},[zc,On,st,tn]),Tp=y.useCallback(()=>{Ed(),H(null),z(null),Q({open:!1,target:null,displayState:"hidden",displayTarget:null}),Do(null)},[Ed,Do]),ey=y.useRef(""),Di=y.useCallback(D=>{const ee=Nq(D.target),fe=D.open?ee?"connected":"blank":"hidden",he={open:D.open,target:ee,displayState:fe,displayTarget:fe==="connected"?ee:null};if(Q(me=>me.open===he.open&&me.target===he.target&&me.displayState===he.displayState&&me.displayTarget===he.displayTarget?me:he),D.open&&ee){const me={open:!0,target:ee??I??null,workspaceRoot:(Z==null?void 0:Z.workspaceRoot)??null,displayState:fe,displayTarget:fe==="connected"?ee??I??null:null},Ae=`${me.open}:${me.target??""}:${me.workspaceRoot??""}:${me.displayState??""}:${me.displayTarget??""}`;if(Ae===ey.current)return;ey.current=Ae,Do(me);return}ey.current!==""&&(ey.current="",Do(null))},[Z==null?void 0:Z.workspaceRoot,I,Do]),Kd=(Xl==null?void 0:Xl.open)===!0||q.open,Yd=y.useCallback(()=>{_(!0),Bc({open:!0},{immediate:It}),!tn("terminal.panel")&&On("terminal.panel",{open:!0},st)},[Bc,On,st,tn,It]),Uc=y.useCallback(()=>{_(!1),Qe(!1),Bc(null,{immediate:It}),!tn("terminal.panel")&&On("terminal.panel",null,st)},[Bc,On,st,tn,It]),of=y.useCallback(()=>{L.current=!0,$.current=!1,R(!1);const D=Z?{open:!1,remotePath:Z.workspaceRoot,surfaceId:Z.surfaceId,nodeId:Z.nodeId}:null;if(la.current=JSON.stringify(D),It){const ee=Z7();mo(ee,{immediateSync:!0})}D&&(ns(D,{immediate:!0}),st&&On("workspace.panel",D,st))},[st,Z,mo,It,On,ns]);P.current=of;const MS=y.useCallback(()=>{if(It){const D=Tq({tree:re,editor:ce},"tree");mo(D,{immediateSync:!0});return}ae(D=>!D)},[mo,It,re,ce]),ty=y.useCallback(()=>{if(It){const D=Tq({tree:re,editor:ce},"editor");mo(D,{immediateSync:!0});return}ne(D=>!D)},[mo,It,re,ce]),ry=y.useCallback(D=>{xe(D);const ee=l1("tree");mo(ee,{immediateSync:!0})},[mo]),ny=y.useCallback(()=>{const D=l1("editor");mo(D,{immediateSync:!0})},[mo]),Io=y.useCallback(D=>{c("chat");const ee=(D==null?void 0:D.trim())||(I==null?void 0:I.trim())||null;H(ee);const fe={open:!0,target:ee,workspaceRoot:(Z==null?void 0:Z.workspaceRoot)??null};Do(fe),Cc(ee,(Z==null?void 0:Z.workspaceRoot)??null)},[Do,I,Cc,Z==null?void 0:Z.workspaceRoot]),Jn=y.useCallback(async(D,ee,fe)=>{const he=fe??st,me=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:D,sessionId:he,nodeId:ee||"gateway"})});if(!me.ok){const Ae=await me.json().catch(()=>({message:"Unknown error"}));throw new Error(Ae.message??"Failed to open workspace")}kt&&pl({workspace_picker_path:D,workspace_picker_node_id:ee||"gateway"}).catch(()=>{})},[st,kt,pl]),iy=y.useCallback(async D=>{var me;const ee=ps.find(Ae=>Ae.id===D);if(!ee)return;const he=ee.sessions.some(Ae=>Ae.id===st)?st:((me=ee.sessions[0])==null?void 0:me.id)??null;if(Gh(D),ee.rootPath)try{const Ae=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:ee.rootPath,sessionId:he,nodeId:ee.nodeId||"gateway"})});if(!Ae.ok)return;const mt=await Ae.json(),bt=mt.nodeId||ee.nodeId||void 0;Pe({surfaceId:mt.surfaceId,workspaceRoot:mt.workspaceRoot,nodeId:bt}),$.current=!0,R(!0),ns({open:!0,remotePath:mt.workspaceRoot,surfaceId:mt.surfaceId,nodeId:bt})}catch(Ae){console.error("Failed to open workspace:",Ae)}},[ps,st,Gh,ns]),lg=y.useCallback(()=>{Hl("workspace"),Os(!0)},[]),cg=y.useCallback(D=>{!D||!zn||Tc[zn]||Ro(zn)},[zn,Tc,Ro]),Np=y.useCallback(async(D,ee,fe)=>{if(Hh){Wh(null),await Zm(Hh,{rootPath:D,nodeId:ee});return}const he=await Xm({rootPath:D,nodeId:ee});if(!he)throw new Error("Failed to create workspace");const me=he.sessions[0]??await uo(he.id);if(!me)throw new Error("Failed to create workspace session");const Ae=(fe==null?void 0:fe.openEditor)??Fl==="editor";if($.current=Ae,await Jn(D,ee,me.id),R(Ae),Ae&&It){const mt=l1("editor");mo(mt,{immediateSync:!0})}ns({open:Ae,remotePath:D,nodeId:ee})},[mo,Hh,uo,Xm,It,Zm,Jn,ns,Fl]),go=y.useCallback(async(D,ee,fe)=>{await Jn(D,ee??void 0,fe),$.current=!0,R(!0),It?mo(l1("editor"),{immediateSync:!0}):(ae(!0),ne(!0)),ns({open:!0,remotePath:D,nodeId:ee??void 0})},[mo,It,Jn,ns]),Ep=y.useCallback(async()=>{var Qr,ks,rn,cn,Cn,Ni,Ia,ss,ec,Bu,_l;if(E){of();return}L.current=!1,!De.current&&!ta.current&&(Od.current||fp.current)&&await ql();const D=De.current,ee=ta.current,fe=Ws.current,he=Zh.current,me=Xh.current;if(yt==="manager"&&be.selectedThread){const bi=be.selectedThread.workingDirectory??(po==null?void 0:po.localPath);if(bi){if((D==null?void 0:D.workspaceRoot)===bi){$.current=!0,R(!0),It?fs():ae(!0);const Gi={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};ns(Gi);return}let Ei=fe;if(!Ei){await Np(bi,(po==null?void 0:po.deviceId)??"gateway",{openEditor:!0});return}if(!Ei)return;await go(bi,(po==null?void 0:po.deviceId)??void 0,Ei);return}}if(D){$.current=!0,R(!0),It?fs():ae(!0);const bi={open:!0,remotePath:D.workspaceRoot,surfaceId:D.surfaceId,nodeId:D.nodeId};ns(bi);return}if(ee!=null&&ee.rootPath){await go(ee.rootPath,ee.nodeId??"gateway",fe);return}const Ae=(Qr=Bd.current)==null?void 0:Qr.ui.panel,mt=((ks=Ae==null?void 0:Ae.remotePath)==null?void 0:ks.trim())||null;if(mt&&fe){await go(mt,(Ae==null?void 0:Ae.nodeId)??void 0,fe);return}const bt=(rn=ni.current)==null?void 0:rn.panel,zt=((cn=bt==null?void 0:bt.remotePath)==null?void 0:cn.trim())||null;if(zt&&fe){await go(zt,(bt==null?void 0:bt.nodeId)??void 0,fe);return}const Rt=(fe?he.find(bi=>bi.sessions.some(Ei=>Ei.id===fe)):null)??(he.length===1?he[0]??null:null),Wr=((Cn=Rt==null?void 0:Rt.rootPath)==null?void 0:Cn.trim())||null;if(Rt&&Wr){const bi=Rt.sessions.find(Ei=>Ei.id===fe)??Rt.sessions[0]??null;if(bi){Oa(Rt.id,bi.id),await go(Wr,Rt.nodeId??void 0,bi.id);return}await Np(Wr,Rt.nodeId??"gateway",{openEditor:!0});return}if(fe&&me)try{const bi=await fetch(`${Xi}/api/sessions/${fe}`,{headers:{Authorization:`Bearer ${me}`}});if(bi.ok){const Ei=await bi.json();let Gi=null;if(Ei.workspaceId){const Ba=await fetch(`${Xi}/api/workspaces/${Ei.workspaceId}`,{headers:{Authorization:`Bearer ${me}`}});Ba.ok&&(Gi=await Ba.json())}const Gc=((Ni=Gi==null?void 0:Gi.rootPath)==null?void 0:Ni.trim())||((Ia=Ei.workspacePath)==null?void 0:Ia.trim())||null;if(Gc){Gi!=null&&Gi.id&&Oa(Gi.id,Ei.id),await go(Gc,(Gi==null?void 0:Gi.nodeId)??void 0,Ei.id);return}}}catch{}if(me)try{const bi=await fetch(`${Xi}/api/workspaces/last-active`,{headers:{Authorization:`Bearer ${me}`}});if(bi.ok){const Ei=await bi.json(),Gi=((ec=(ss=Ei.workspace)==null?void 0:ss.rootPath)==null?void 0:ec.trim())||zt,Gc=((Bu=Ei.session)==null?void 0:Bu.id)??fe;if((_l=Ei.workspace)!=null&&_l.id&&Gi&&Gc){Oa(Ei.workspace.id,Gc),await go(Gi,Ei.workspace.nodeId??(bt==null?void 0:bt.nodeId)??void 0,Gc);return}}}catch{}Hl("editor"),Os(!0)},[E,Z,fn,of,ns,st,yt,be.selectedThread,po,ps,Oa,kt,Np,It,fs,go,ql]);y.useEffect(()=>{if(!(Z!=null&&Z.workspaceRoot)||!st)return;let D=!1;return(async()=>{try{if(Z.surfaceId&&((await fetch(`${Xi}/api/workspace/list?path=${encodeURIComponent(Z.workspaceRoot)}&surfaceId=${encodeURIComponent(Z.surfaceId)}`)).ok||D))return;const ee=await fetch(`${Xi}/api/workspace/open`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:Z.workspaceRoot,sessionId:st,nodeId:Z.nodeId||"gateway"})});if(!ee.ok||D)return;const fe=await ee.json();if(D)return;Pe({surfaceId:fe.surfaceId,workspaceRoot:fe.workspaceRoot,nodeId:fe.nodeId});const he={open:$.current,remotePath:fe.workspaceRoot,surfaceId:fe.surfaceId,nodeId:fe.nodeId};ns(he)}catch{}})(),()=>{D=!0}},[Z==null?void 0:Z.nodeId,Z==null?void 0:Z.surfaceId,Z==null?void 0:Z.workspaceRoot,st]),y.useEffect(()=>{const D=La.current;La.current=ws.length,D!==null&&ws.length!==0&&(ws.length<=D||L.current||E||($.current=!0,R(!0)))},[ws.length]);const sy=y.useMemo(()=>ws.filter(D=>D.state==="undecided").map(D=>D.path),[ws]);y.useEffect(()=>{p(_s.theme)},[_s.theme]),y.useEffect(()=>{hl||_s.chat_provider&&_s.chat_provider!==Pt&&En(_s.chat_provider)},[_s.chat_provider,hl]),y.useEffect(()=>{var he,me;if(!(Mi&&Li==="win32"))return;const D=getComputedStyle(document.documentElement),ee=D.getPropertyValue("--background").trim(),fe=D.getPropertyValue("--foreground").trim();(me=(he=window.jaitDesktop)==null?void 0:he.setTitleBarOverlay)==null||me.call(he,{color:ee?`hsl(${ee})`:Wi==="dark"?"#202020":"#e8ecf1",symbolColor:fe?`hsl(${fe})`:Wi==="dark"?"#f2f2f2":"#0a0a0a",height:39})},[Wi,Li,Mi]),y.useEffect(()=>{if(!hl&&!Wl){const D=requestAnimationFrame(()=>o(!0));return fetch(`${Mn()}/health`,{signal:AbortSignal.timeout(4e3)}).then(ee=>ee.ok?ee.json():null).then(ee=>{ee&&typeof ee.hasUsers=="boolean"&&(us(ee.hasUsers),ee.hasUsers||qt("register"))}).catch(()=>{bu&&tA()&&(Eo("url"),Ci("Gateway is unreachable. Check the URL or try a different one."),_d(X1()??""))}),()=>cancelAnimationFrame(D)}},[hl,Wl]),y.useEffect(()=>{Wl&&st&&fl(st)},[Wl,st,fl]),y.useEffect(()=>{if(Ra==="login_required"){const D=requestAnimationFrame(()=>o(!0));return()=>cancelAnimationFrame(D)}},[Ra]),y.useEffect(()=>{(async()=>{if(!st){Xt(!1);return}try{const fe=await(await fetch(`${Xi}/api/consent/pending/${st}/approve-all`)).json();Xt(fe.approveAllEnabled===!0)}catch{Xt(!1)}})()},[st]);const oy=y.useCallback(async D=>{var he;const ee=f,fe=((he=_Q())==null?void 0:he.id)??null;p(D),i5(null);try{await pl({theme:D})}catch{p(ee),i5(fe)}},[f,pl]),PS=y.useCallback(D=>{D.preventDefault(),wu.current=!0;const ee=D.clientY,fe=Oe,he=window.innerHeight*.9,me=()=>{wu.current=!1,document.removeEventListener("mousemove",Ae),document.removeEventListener("mouseup",mt),window.removeEventListener("blur",bt),document.body.style.cursor="",document.body.style.userSelect=""},Ae=zt=>{if(!wu.current)return;const Rt=ee-zt.clientY;ge(Math.min(he,Math.max(160,fe+Rt)))},mt=()=>{me()},bt=()=>{me()};document.body.style.cursor="row-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",Ae),document.addEventListener("mouseup",mt),window.addEventListener("blur",bt)},[Oe]),LS=y.useCallback(D=>{D.preventDefault();const ee=D.clientX,fe=Le,he=window.innerWidth*.7,me=mt=>{const bt=mt.clientX-ee;et(Math.min(he,Math.max(280,fe+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)},[Le]),Bo=(Z==null?void 0:Z.workspaceRoot)??(fn==null?void 0:fn.rootPath)??null,Xd=y.useMemo(()=>Bo?yl.filter(D=>{if(!D.workspaceRoot)return!1;const ee=D.workspaceRoot.replace(/\\/g,"/").toLowerCase(),fe=Bo.replace(/\\/g,"/").toLowerCase();return ee===fe}):yl,[yl,Bo]),af=y.useCallback(async(D=null)=>{const ee=await Po(),fe=Bo,he=fe?ee.filter(Ae=>(Ae.workspaceRoot??"").replace(/\\/g,"/").toLowerCase()===fe.replace(/\\/g,"/").toLowerCase()):ee;if(D&&he.some(mt=>mt.id===D))return qs(D),D;if(Hn&&he.some(Ae=>Ae.id===Hn))return Hn;if(he.length>0){const Ae=he[he.length-1].id;return qs(Ae),Ae}return(await $i(st??"default",Bo??void 0)).id},[Po,qs,Hn,$i,st,Bo]),$S=y.useCallback(async D=>{c("chat"),Yd(),await af(D)},[af,Yd]),Vc=y.useCallback(async D=>{if(Af({showWorkspace:E,showTerminal:b,showWorkspaceTree:re,showWorkspaceEditor:ce,treeTab:ue},D)){if(D==="terminal"){Uc();return}of();return}if(D==="terminal"){c("chat"),of(),Yd(),await af();return}if(b&&Uc(),E||await Ep(),D==="editor"){ny();return}ry(D)},[Uc,of,af,Ep,ue,Yd,c,ny,ry,b,E,ce,re]),tx=y.useCallback(D=>{var ee,fe;(ee=Hs.current)==null||ee.insertChip(D),(fe=Hs.current)==null||fe.focus()},[]),DS=y.useCallback((D,ee,fe,he)=>{var Ae,mt;ee.trim()&&((Ae=Hs.current)==null||Ae.insertSegments(hyt(D,fe,he)),(mt=Hs.current)==null||mt.focus())},[]),rx=y.useCallback((D,ee,fe,he,me)=>{var bt,zt;const Ae=ee.trim();if(!Ae)return;const mt=D.replace(/^term-/,"").slice(0,8)||D;(bt=Hs.current)==null||bt.insertSegments(fyt({terminalId:D,name:mt,...fe?{workspaceRoot:fe}:{}},Ae,he,me)),(zt=Hs.current)==null||zt.focus()},[]),nx=y.useCallback(D=>{var ee,fe;D.selector&&((ee=Hs.current)==null||ee.insertSegments(pyt(D)),(fe=Hs.current)==null||fe.focus(),c("chat"))},[c]),IS=y.useCallback(async()=>{if(b){Uc();return}c("chat"),Yd(),await af()},[b,af,Yd,Uc]),ay=y.useCallback(async D=>{var fe;const ee=Xd.length===1&&((fe=Xd[0])==null?void 0:fe.id)===D;await vl(D),ee&&Uc()},[Xd,vl,Uc]),ix=y.useCallback(D=>{var me,Ae,mt;const ee=Xd.find(bt=>bt.id===D),fe=`detached-terminal-${D}-${Date.now()}`;Qht({id:fe,terminalId:D,token:kt??null,label:((me=ee==null?void 0:ee.metadata)==null?void 0:me.cwd)??`Terminal ${D.slice(0,6)}`,theme:Wi==="dark"?"dark":"light",workspaceRoot:(ee==null?void 0:ee.workspaceRoot)??Bo??null});const he=`${window.location.origin}${window.location.pathname}?detachedTerminal=${encodeURIComponent(fe)}`;if((Ae=window.jaitDesktop)!=null&&Ae.openWorkspaceWindow)window.jaitDesktop.openWorkspaceWindow({url:he,title:"Terminal"});else{const bt=window.open(he,`jait-detached-terminal-${D}`,"popup=yes,width=800,height=600,resizable=yes,scrollbars=yes");(mt=bt==null?void 0:bt.focus)==null||mt.call(bt)}},[Xd,kt,Wi,Bo]),lf=y.useCallback(D=>{D.length!==0&&(Bn(ee=>{const fe=[...ee];for(const he of D){const me=fe.findIndex(Ae=>Ae.path===he.path);me>=0?fe[me]=he:fe.push(he)}return fe}),As(ee=>{var fe;return ee??((fe=D[0])==null?void 0:fe.id)??null}))},[]),ug=y.useCallback(D=>nH(D,Z==null?void 0:Z.workspaceRoot)?(Z==null?void 0:Z.workspaceRoot)??null:fn!=null&&fn.rootPath&&nH(D,fn.rootPath)?fn.rootPath:null,[Z==null?void 0:Z.workspaceRoot,fn==null?void 0:fn.rootPath]),ly=y.useCallback(async D=>{var ee;try{const fe=ug(D);if(!fe){ai("File is outside the active workspace. Open its directory explicitly to browse it.");return}fe&&(!Z||Z.workspaceRoot!==fe)&&await Jn(fe,Z==null?void 0:Z.nodeId,st);const he={};kt&&(he.Authorization=`Bearer ${kt}`);const me=Z!=null&&Z.surfaceId&&fe===Z.workspaceRoot?`&surfaceId=${encodeURIComponent(Z.surfaceId)}`:"",Ae=D.split(/[/\\]/).pop()??D,mt=k_(Ae),bt=async()=>(E||($.current=!0,R(!0)),fs(),hs.current?!0:(await new Promise(cn=>requestAnimationFrame(()=>cn())),hs.current!=null)),zt=async(cn,Cn,Ni)=>{var ss;await bt()&&(await((ss=hs.current)==null?void 0:ss.openReviewDiff({path:cn,originalContent:Cn??"",modifiedContent:Ni,language:mt})),fs())},Rt=async(cn,Cn)=>{if(!fe)return!1;try{const Ni=await no.fileDiffs(fe),Ia=cn.replace(/\\/g,"/"),ss=Ni.find(ec=>ec.path===Ia)??Ni.find(ec=>Ia.endsWith(`/${ec.path}`));return ss?(await zt(cn,ss.original,Cn||ss.modified),!0):!1}catch{return!1}},Wr=await fetch(`${Xi}/api/workspace/backup?path=${encodeURIComponent(D)}${me}`,{headers:he});if(Wr.ok){const cn=await Wr.json();await zt(cn.path,cn.originalContent,cn.currentContent);return}const Qr=await((ee=hs.current)==null?void 0:ee.readFileByPath(D));if(Qr){if(await Rt(Qr.path,Qr.content))return;await zt(Qr.path,Qr.content,Qr.content);return}const ks=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}${me}`,{headers:he});if(!ks.ok)return;const rn=await ks.json();if(await Rt(rn.path,rn.content))return;await zt(rn.path,rn.content,rn.content);return}catch{}},[st,Z,Jn,ug,kt,E,fs]),sx=y.useCallback(async D=>{var ee;try{const fe=ug(D);if(!fe){const Ae=dl.find(mt=>mt.path===D);if(Ae){lf([Ae]),As(Ae.id),E||($.current=!0,R(!0)),fs();return}ai("File is outside the active workspace. Open its directory explicitly to browse it.");return}if(fe&&(!Z||Z.workspaceRoot!==fe)&&await Jn(fe,Z==null?void 0:Z.nodeId,st),await((ee=hs.current)==null?void 0:ee.openFileByPath(D))){E||($.current=!0,R(!0)),fs();return}const me=dl.find(Ae=>Ae.path===D);if(me)lf([me]),As(me.id);else{const Ae={};kt&&(Ae.Authorization=`Bearer ${kt}`);const mt=await fetch(`${Xi}/api/workspace/read?path=${encodeURIComponent(D)}`,{headers:Ae});if(!mt.ok)throw new Error(`Failed to open file: ${mt.status}`);const bt=await mt.json(),zt=D.split(/[\\/]/).pop()??D,Rt={id:bt.path,name:zt,path:bt.path,content:bt.content,language:k_(zt)};lf([Rt]),As(Rt.id)}E||($.current=!0,R(!0)),fs()}catch(fe){ai(fe instanceof Error?fe.message:"Failed to open linked file")}},[st,Z,lf,Jn,ug,E,fs,kt,dl]),BS=y.useCallback(async(D,ee)=>{try{const fe={"Content-Type":"application/json"};kt&&(fe.Authorization=`Bearer ${kt}`),await fetch(`${Xi}/api/workspace/apply-diff`,{method:"POST",headers:fe,body:JSON.stringify({path:D,content:ee})})}catch{}Tu(D)},[kt,Tu]),ox=y.useCallback(async D=>{const ee=Array.from(D),fe=await Promise.all(ee.filter(he=>he.size<1024*1024).map(async he=>{const me=await he.text(),Ae=he.webkitRelativePath||he.name;return{id:`${Ae}-${he.lastModified}`,name:he.name,path:Ae,content:me,language:k_(Ae)}}));lf(fe)},[lf]),qc=y.useCallback(async(D,ee,fe)=>{var he;return((he=hs.current)==null?void 0:he.searchFiles(D,ee,fe))??[]},[]),Pu=y.useCallback(async(D,ee,fe)=>{var ks,rn,cn;const he=fe!=null&&fe.length?fe:void 0,me=(he?U1(he):D).trim(),Ae=he!=null&&he.length?V1(he):ee!=null&&ee.length?ee.map(Cn=>({path:Cn.path,name:Cn.name,...Cn.lineRange?{lineRange:Cn.lineRange}:{}})):[],mt=he!=null&&he.length?rEe(he):[],bt=he!=null&&he.length?nEe(he):[];if(!me&&Ae.length===0&&mt.length===0&&bt.length===0)return null;const zt=[],Rt=new Set;if(Ae.length){const Cn=new Set;for(const Ni of Ae){const Ia=`${Ni.path}:${((ks=Ni.lineRange)==null?void 0:ks.startLine)??""}:${((rn=Ni.lineRange)==null?void 0:rn.endLine)??""}`;if(Cn.has(Ia))continue;Cn.add(Ia),Rt.add(Ni.path);const ss=_l=>Ni.lineRange?_l.split(`
|
|
1381
1381
|
`).slice(Ni.lineRange.startLine-1,Ni.lineRange.endLine).join(`
|
|
1382
1382
|
`):_l,ec=dl.find(_l=>_l.path===Ni.path);if(ec){zt.push({path:ec.path,content:ss(ec.content),...Ni.lineRange?{lineRange:Ni.lineRange}:{}});continue}const Bu=await((cn=hs.current)==null?void 0:cn.readReferencePath(Ni.path));if(Bu!=null&&Bu.length)for(const _l of Bu)zt.some(bi=>{var Ei,Gi,Gc,Ba;return bi.path===_l.path&&((Ei=bi.lineRange)==null?void 0:Ei.startLine)===((Gi=Ni.lineRange)==null?void 0:Gi.startLine)&&((Gc=bi.lineRange)==null?void 0:Gc.endLine)===((Ba=Ni.lineRange)==null?void 0:Ba.endLine)})||zt.push({path:_l.path,content:ss(_l.content),...Ni.lineRange?{lineRange:Ni.lineRange}:{}})}}const Wr=[];return mt.length>0&&Wr.push(`Referenced workspaces:
|
|
1383
1383
|
${mt.map(Cn=>`- ${Cn.path}`).join(`
|