@jait/gateway 0.1.342 → 0.1.343

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/routes/chat.d.ts.map +1 -1
  2. package/dist/routes/chat.js +9 -3
  3. package/dist/routes/chat.js.map +1 -1
  4. package/dist/tools/agent-loop.d.ts.map +1 -1
  5. package/dist/tools/agent-loop.js +9 -1
  6. package/dist/tools/agent-loop.js.map +1 -1
  7. package/package.json +1 -1
  8. package/web-dist/assets/{_basePickBy-GxhPl4cw.js → _basePickBy-CfSAKRVo.js} +1 -1
  9. package/web-dist/assets/{_baseUniq-_aqA0yWV.js → _baseUniq-Kip5eUsQ.js} +1 -1
  10. package/web-dist/assets/{arc-DFHP6PBr.js → arc-D5a75-bQ.js} +1 -1
  11. package/web-dist/assets/{architectureDiagram-2XIMDMQ5-DYDDd4HP.js → architectureDiagram-2XIMDMQ5-CJEAaw0g.js} +1 -1
  12. package/web-dist/assets/{blockDiagram-WCTKOSBZ-BcyH-Sq_.js → blockDiagram-WCTKOSBZ-B3dp3Do4.js} +1 -1
  13. package/web-dist/assets/{c4Diagram-IC4MRINW-DnGmqSW5.js → c4Diagram-IC4MRINW-C1m5Cymw.js} +1 -1
  14. package/web-dist/assets/channel-t6kjpHJd.js +1 -0
  15. package/web-dist/assets/{chunk-4BX2VUAB-DLVgb-N8.js → chunk-4BX2VUAB-Dfy2RlO1.js} +1 -1
  16. package/web-dist/assets/{chunk-55IACEB6-CxCuZulC.js → chunk-55IACEB6-DKjCjdwc.js} +1 -1
  17. package/web-dist/assets/{chunk-FMBD7UC4-DyaFrKXB.js → chunk-FMBD7UC4-BjW1az1O.js} +1 -1
  18. package/web-dist/assets/{chunk-JSJVCQXG-CBFNLxUY.js → chunk-JSJVCQXG-IOt-M54X.js} +1 -1
  19. package/web-dist/assets/{chunk-KX2RTZJC-Ic8q3j2w.js → chunk-KX2RTZJC-V4CrFRWz.js} +1 -1
  20. package/web-dist/assets/{chunk-NQ4KR5QH-Bl9s0Rwm.js → chunk-NQ4KR5QH-Dl88RfcX.js} +1 -1
  21. package/web-dist/assets/{chunk-QZHKN3VN-b1R0Nt00.js → chunk-QZHKN3VN-D1jynUX_.js} +1 -1
  22. package/web-dist/assets/{chunk-WL4C6EOR-CzmmPFiR.js → chunk-WL4C6EOR-DT8Cg-s5.js} +1 -1
  23. package/web-dist/assets/classDiagram-VBA2DB6C-DvgxU7Td.js +1 -0
  24. package/web-dist/assets/classDiagram-v2-RAHNMMFH-DvgxU7Td.js +1 -0
  25. package/web-dist/assets/clone-zOJjVvSm.js +1 -0
  26. package/web-dist/assets/{cose-bilkent-S5V4N54A-Dksg3HjN.js → cose-bilkent-S5V4N54A-B2d0YYrF.js} +1 -1
  27. package/web-dist/assets/{dagre-KLK3FWXG-CYaryM-8.js → dagre-KLK3FWXG-BUtN_g_K.js} +1 -1
  28. package/web-dist/assets/{diagram-E7M64L7V-Bz0o9Aps.js → diagram-E7M64L7V-CGksthSH.js} +1 -1
  29. package/web-dist/assets/{diagram-IFDJBPK2-odi0yYmc.js → diagram-IFDJBPK2-a1a9V8n_.js} +1 -1
  30. package/web-dist/assets/{diagram-P4PSJMXO-DR6nI4mR.js → diagram-P4PSJMXO-DRbnm-p0.js} +1 -1
  31. package/web-dist/assets/{erDiagram-INFDFZHY-DiXdVG5L.js → erDiagram-INFDFZHY-CiFeDWLF.js} +1 -1
  32. package/web-dist/assets/{flowDiagram-PKNHOUZH-B47nONkI.js → flowDiagram-PKNHOUZH-Bs_i7peG.js} +1 -1
  33. package/web-dist/assets/{ganttDiagram-A5KZAMGK-Ct2N1zb-.js → ganttDiagram-A5KZAMGK-C24P955c.js} +1 -1
  34. package/web-dist/assets/{gitGraphDiagram-K3NZZRJ6-BaoIjSvR.js → gitGraphDiagram-K3NZZRJ6-we1iAgem.js} +1 -1
  35. package/web-dist/assets/{graph-DnaxxKey.js → graph-6D-yDR2w.js} +1 -1
  36. package/web-dist/assets/{index-CCEwWNBR.js → index-CdmevkTd.js} +4 -4
  37. package/web-dist/assets/{infoDiagram-LFFYTUFH-DQuPnytq.js → infoDiagram-LFFYTUFH-efV5JrNC.js} +1 -1
  38. package/web-dist/assets/{ishikawaDiagram-PHBUUO56-1rTr0O1X.js → ishikawaDiagram-PHBUUO56-CEG_E9ZG.js} +1 -1
  39. package/web-dist/assets/{journeyDiagram-4ABVD52K-iDJqUDY8.js → journeyDiagram-4ABVD52K-BNrI6Whm.js} +1 -1
  40. package/web-dist/assets/{kanban-definition-K7BYSVSG-BFCHbtFN.js → kanban-definition-K7BYSVSG-sq7M3Goj.js} +1 -1
  41. package/web-dist/assets/{layout-DyHe2fa3.js → layout-COS9HhA-.js} +1 -1
  42. package/web-dist/assets/{linear-Dnmvq5q-.js → linear-BcuXziMP.js} +1 -1
  43. package/web-dist/assets/{mindmap-definition-YRQLILUH-fA7pVIBx.js → mindmap-definition-YRQLILUH-rVyRFIBp.js} +1 -1
  44. package/web-dist/assets/{pieDiagram-SKSYHLDU-B_GQpJQh.js → pieDiagram-SKSYHLDU-C_ZYY1Uu.js} +1 -1
  45. package/web-dist/assets/{quadrantDiagram-337W2JSQ-DGokCABW.js → quadrantDiagram-337W2JSQ-B6fxV2aK.js} +1 -1
  46. package/web-dist/assets/{requirementDiagram-Z7DCOOCP-C684lgS-.js → requirementDiagram-Z7DCOOCP-CI0dAa8d.js} +1 -1
  47. package/web-dist/assets/{sankeyDiagram-WA2Y5GQK-Ch7jMKVd.js → sankeyDiagram-WA2Y5GQK-C6aYWcth.js} +1 -1
  48. package/web-dist/assets/{sequenceDiagram-2WXFIKYE-DNPKTwcu.js → sequenceDiagram-2WXFIKYE-DW3jX2jS.js} +1 -1
  49. package/web-dist/assets/{stateDiagram-RAJIS63D-BvOnc7SK.js → stateDiagram-RAJIS63D-D5-Mg86T.js} +1 -1
  50. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-VINrbKV3.js +1 -0
  51. package/web-dist/assets/{timeline-definition-YZTLITO2-B7KyLGx4.js → timeline-definition-YZTLITO2-Dz-WY3QD.js} +1 -1
  52. package/web-dist/assets/{treemap-KZPCXAKY-B8xDQUv8.js → treemap-KZPCXAKY-CJgZlCwI.js} +1 -1
  53. package/web-dist/assets/{vennDiagram-LZ73GAT5-BxWLw23z.js → vennDiagram-LZ73GAT5-a2ah8SX-.js} +1 -1
  54. package/web-dist/assets/{xychartDiagram-JWTSCODW-a4XEvuFM.js → xychartDiagram-JWTSCODW-BPSfzhL8.js} +1 -1
  55. package/web-dist/index.html +1 -1
  56. package/web-dist/assets/channel-BLBg6ixg.js +0 -1
  57. package/web-dist/assets/classDiagram-VBA2DB6C-CLEdVLAY.js +0 -1
  58. package/web-dist/assets/classDiagram-v2-RAHNMMFH-CLEdVLAY.js +0 -1
  59. package/web-dist/assets/clone-BHsy8p8S.js +0 -1
  60. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-DxawmOSR.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-CYaryM-8.js","./graph-DnaxxKey.js","./_baseUniq-_aqA0yWV.js","./layout-DyHe2fa3.js","./_basePickBy-GxhPl4cw.js","./clone-BHsy8p8S.js","./cose-bilkent-S5V4N54A-Dksg3HjN.js","./cytoscape.esm-BQaXIfA_.js","./c4Diagram-IC4MRINW-DnGmqSW5.js","./chunk-JSJVCQXG-CBFNLxUY.js","./flowDiagram-PKNHOUZH-B47nONkI.js","./chunk-FMBD7UC4-DyaFrKXB.js","./chunk-55IACEB6-CxCuZulC.js","./chunk-KX2RTZJC-Ic8q3j2w.js","./channel-BLBg6ixg.js","./erDiagram-INFDFZHY-DiXdVG5L.js","./gitGraphDiagram-K3NZZRJ6-BaoIjSvR.js","./chunk-4BX2VUAB-DLVgb-N8.js","./chunk-QZHKN3VN-b1R0Nt00.js","./treemap-KZPCXAKY-B8xDQUv8.js","./ganttDiagram-A5KZAMGK-Ct2N1zb-.js","./linear-Dnmvq5q-.js","./defaultLocale-DX6XiGOO.js","./infoDiagram-LFFYTUFH-DQuPnytq.js","./pieDiagram-SKSYHLDU-B_GQpJQh.js","./arc-DFHP6PBr.js","./quadrantDiagram-337W2JSQ-DGokCABW.js","./xychartDiagram-JWTSCODW-a4XEvuFM.js","./requirementDiagram-Z7DCOOCP-C684lgS-.js","./sequenceDiagram-2WXFIKYE-DNPKTwcu.js","./classDiagram-VBA2DB6C-CLEdVLAY.js","./chunk-WL4C6EOR-CzmmPFiR.js","./classDiagram-v2-RAHNMMFH-CLEdVLAY.js","./stateDiagram-RAJIS63D-BvOnc7SK.js","./chunk-NQ4KR5QH-Bl9s0Rwm.js","./stateDiagram-v2-FVOUBMTO-DxawmOSR.js","./journeyDiagram-4ABVD52K-iDJqUDY8.js","./timeline-definition-YZTLITO2-B7KyLGx4.js","./mindmap-definition-YRQLILUH-fA7pVIBx.js","./kanban-definition-K7BYSVSG-BFCHbtFN.js","./diagram-P4PSJMXO-DR6nI4mR.js","./diagram-IFDJBPK2-odi0yYmc.js","./blockDiagram-WCTKOSBZ-BcyH-Sq_.js","./architectureDiagram-2XIMDMQ5-DYDDd4HP.js","./diagram-E7M64L7V-Bz0o9Aps.js"])))=>i.map(i=>d[i]);
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-BUtN_g_K.js","./graph-6D-yDR2w.js","./_baseUniq-Kip5eUsQ.js","./layout-COS9HhA-.js","./_basePickBy-CfSAKRVo.js","./clone-zOJjVvSm.js","./cose-bilkent-S5V4N54A-B2d0YYrF.js","./cytoscape.esm-BQaXIfA_.js","./c4Diagram-IC4MRINW-C1m5Cymw.js","./chunk-JSJVCQXG-IOt-M54X.js","./flowDiagram-PKNHOUZH-Bs_i7peG.js","./chunk-FMBD7UC4-BjW1az1O.js","./chunk-55IACEB6-DKjCjdwc.js","./chunk-KX2RTZJC-V4CrFRWz.js","./channel-t6kjpHJd.js","./erDiagram-INFDFZHY-CiFeDWLF.js","./gitGraphDiagram-K3NZZRJ6-we1iAgem.js","./chunk-4BX2VUAB-Dfy2RlO1.js","./chunk-QZHKN3VN-D1jynUX_.js","./treemap-KZPCXAKY-CJgZlCwI.js","./ganttDiagram-A5KZAMGK-C24P955c.js","./linear-BcuXziMP.js","./defaultLocale-DX6XiGOO.js","./infoDiagram-LFFYTUFH-efV5JrNC.js","./pieDiagram-SKSYHLDU-C_ZYY1Uu.js","./arc-D5a75-bQ.js","./quadrantDiagram-337W2JSQ-B6fxV2aK.js","./xychartDiagram-JWTSCODW-BPSfzhL8.js","./requirementDiagram-Z7DCOOCP-CI0dAa8d.js","./sequenceDiagram-2WXFIKYE-DW3jX2jS.js","./classDiagram-VBA2DB6C-DvgxU7Td.js","./chunk-WL4C6EOR-DT8Cg-s5.js","./classDiagram-v2-RAHNMMFH-DvgxU7Td.js","./stateDiagram-RAJIS63D-D5-Mg86T.js","./chunk-NQ4KR5QH-Dl88RfcX.js","./stateDiagram-v2-FVOUBMTO-VINrbKV3.js","./journeyDiagram-4ABVD52K-BNrI6Whm.js","./timeline-definition-YZTLITO2-Dz-WY3QD.js","./mindmap-definition-YRQLILUH-rVyRFIBp.js","./kanban-definition-K7BYSVSG-sq7M3Goj.js","./diagram-P4PSJMXO-DRbnm-p0.js","./diagram-IFDJBPK2-a1a9V8n_.js","./blockDiagram-WCTKOSBZ-B3dp3Do4.js","./architectureDiagram-2XIMDMQ5-CJEAaw0g.js","./diagram-E7M64L7V-CGksthSH.js"])))=>i.map(i=>d[i]);
2
2
  var lhe=Object.defineProperty;var che=(e,r,n)=>r in e?lhe(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n;var Fe=(e,r,n)=>che(e,typeof r!="symbol"?r+"":r,n);function uhe(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 Vyt(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 eT={exports:{}},Vx={};/**
3
3
  * @license React
4
4
  * react-jsx-runtime.production.js
@@ -1096,8 +1096,8 @@ Please report this to https://github.com/markedjs/marked.`,r){let s="<p>An error
1096
1096
  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),h=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=h*p/c;const g={x:n.x<r.x?n.x+l:n.x-h+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),h===0&&(g.x=r.x),c===0&&(g.y=r.y),_t.debug(`abc89 top/bottom calc, Q ${c}, q ${p}, R ${h}, r ${l}`,g),g}else{n.x<r.x?l=r.x-a-i:l=i-a-r.x;let p=c*l/h,g=n.x<r.x?n.x+h-l:n.x-h+l,v=n.y<r.y?n.y+p:n.y-p;return _t.debug(`sides calc abc89, Q ${c}, q ${p}, R ${h}, r ${l}`,{_x:g,_y:v}),l===0&&(g=r.x,v=r.y),h===0&&(g=r.x),c===0&&(v=r.y),{x:g,y:v}}},"intersection"),vF=X((e,r)=>{_t.warn("abc88 cutPathAtIntersect",e,r);let n=[],i=e[0],s=!1;return e.forEach(o=>{if(_t.info("abc88 checking point",o,r),!FUe(r,o)&&!s){const a=HUe(r,i,o);_t.debug("abc88 inside",o,i,a),_t.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)?_t.warn("abc88 no intersect",a,n):n.push(a),s=!0}else _t.warn("abc88 outside",o,i),i=o,s||n.push(o)}),_t.debug("returning points",n),n},"cutPathAtIntersect");function ase(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(ase,"extractCornerPoints");var xF=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"),WUe=X(function(e){const{cornerPointPositions:r}=ase(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=xF(s,a,5),u=xF(o,a,5),c=u.x-l.x,h=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){_t.debug("Corner point fixing",Math.abs(o.x-s.x),Math.abs(o.y-s.y));const v=5;a.x===l.x?g={x:c<0?l.x-v+p:l.x+v-p,y:h<0?l.y-p:l.y+p}:g={x:c<0?l.x-p:l.x+p,y:h<0?l.y-v+p:l.y+v-p}}else _t.debug("Corner point skipping fixing",Math.abs(o.x-s.x),Math.abs(o.y-s.y));n.push(g,u)}else n.push(e[i]);return n},"fixCorners"),UUe=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"),VUe=X(function(e,r,n,i,s,o,a,l=!1){var L;const{handDrawnSeed:u}=ri();let c=r.points,h=!1;const p=s;var g=o;const v=[];for(const z in r.cssCompiledStyles)ane(z)||v.push(r.cssCompiledStyles[z]);_t.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])),_t.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&&(_t.info("to cluster abc88",n.get(r.toCluster)),c=vF(r.points,n.get(r.toCluster).node),h=!0),r.fromCluster&&(_t.debug("from cluster abc88",n.get(r.fromCluster),JSON.stringify(c,null,2)),c=vF(c.reverse(),n.get(r.fromCluster).node).reverse(),h=!0);let _=c.filter(z=>!Number.isNaN(z.y));const k=IUe(r.curve);k!=="rounded"&&(_=WUe(_));let w=k_;switch(k){case"linear":w=k_;break;case"basis":w=TA;break;case"cardinal":w=Fee;break;case"bumpX":w=$ee;break;case"bumpY":w=Dee;break;case"catmullRom":w=Wee;break;case"monotoneX":w=Yee;break;case"monotoneY":w=Xee;break;case"natural":w=Jee;break;case"step":w=Qee;break;case"stepAfter":w=tte;break;case"stepBefore":w=ete;break;case"rounded":w=k_;break;default:w=TA}const{x:C,y:j}=FBe(r),T=yIe().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,M=k==="rounded"?lse(cse(_,r),5):T(_);const P=Array.isArray(r.style)?r.style:[r.style];let H=P.find(z=>z==null?void 0:z.startsWith("stroke:")),$="";r.animate&&($="edge-animation-fast"),r.animation&&($="edge-animation-"+r.animation);let U=!1;if(r.look==="handDrawn"){const z=xr.svg(e);Object.assign([],_);const W=z.path(M,{roughness:.3,seed:u});A+=" transition",E=$r(W).select("path").attr("id",r.id).attr("class"," "+A+(r.classes?" "+r.classes:"")+($?" "+$:"")).attr("style",P?P.reduce((F,q)=>F+";"+q,""):"");let Y=E.attr("d");E.attr("d",Y),e.node().appendChild(E.node())}else{const z=v.join(";"),W=P?P.reduce((ee,ne)=>ee+ne+";",""):"",Y=(z?z+";"+W+";":W)+";"+(P?P.reduce((ee,ne)=>ee+";"+ne,""):"");E=e.append("path").attr("d",M).attr("id",r.id).attr("class"," "+A+(r.classes?" "+r.classes:"")+($?" "+$:"")).attr("style",Y),H=(L=Y.match(/stroke:([^;]+)/))==null?void 0:L[1],U=r.animate===!0||!!r.animation||z.includes("animation");const F=E.node(),q=typeof F.getTotalLength=="function"?F.getTotalLength():0,J=Pz[r.arrowTypeStart]||0,V=Pz[r.arrowTypeEnd]||0;if(r.look==="neo"&&!U){const ne=`stroke-dasharray: ${r.pattern==="dotted"||r.pattern==="dashed"?UUe(q,J,V):`0 ${J} ${q-J-V} ${V}`}; stroke-dashoffset: 0;`;E.attr("style",ne+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(z=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",z.x).attr("cy",z.y)});let I="";(ri().flowchart.arrowMarkerAbsolute||ri().state.arrowMarkerAbsolute)&&(I=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,I=I.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),_t.info("arrowTypeStart",r.arrowTypeStart),_t.info("arrowTypeEnd",r.arrowTypeEnd),$Ue(E,r,I,a,i,H);const K=Math.floor(c.length/2),R=c[K];rd.isLabelCoordinateInPath(R,E.attr("d"))||(h=!0);let B={};return h&&(B.updatedPath=c),B.originalPath=r.points,B},"insertEdge");function lse(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,h=a.y-l.y,p=u.x-a.x,g=u.y-a.y,v=Math.hypot(c,h),b=Math.hypot(p,g);if(v<s||b<s){n+=`L${a.x},${a.y}`;continue}const _=c/v,k=h/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),M=a.x-_*E,P=a.y-k*E,H=a.x+w*E,$=a.y+C*E;n+=`L${M},${P}`,n+=`Q${a.x},${a.y} ${H},${$}`}}return n}X(lse,"generateRoundedPath");function tO(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(tO,"calculateDeltaAndAngle");function cse(e,r){const n=e.map(s=>({...s}));if(e.length>=2&&ka[r.arrowTypeStart]){const s=ka[r.arrowTypeStart],o=e[0],a=e[1],{angle:l}=tO(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&&ka[r.arrowTypeEnd]){const s=ka[r.arrowTypeEnd],o=e[i-1],a=e[i-2],{angle:l}=tO(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(cse,"applyMarkerOffsetsToPoints");var qUe=X((e,r,n,i)=>{r.forEach(s=>{lVe[s](e,n,i)})},"insertMarkers"),GUe=X((e,r,n)=>{_t.trace("Making markers for ",n),e.append("defs").append("marker").attr("id",n+"_"+r+"-extensionStart").attr("class","marker extension "+r).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",n+"_"+r+"-extensionEnd").attr("class","marker extension "+r).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),KUe=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"),YUe=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"),XUe=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"),ZUe=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"),JUe=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"),QUe=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"),eVe=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"),tVe=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"),rVe=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"),nVe=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"),iVe=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"),sVe=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"),oVe=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
1097
1097
  L20,10
1098
1098
  M20,10
1099
- L0,20`)},"requirement_arrow"),aVe=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"),lVe={extension:GUe,composition:KUe,aggregation:YUe,dependency:XUe,lollipop:ZUe,point:JUe,circle:QUe,cross:eVe,barb:tVe,only_one:rVe,zero_or_one:nVe,one_or_more:iVe,zero_or_more:sVe,requirement_arrow:oVe,requirement_contains:aVe},cVe=qUe,uVe={common:hS,getConfig:Aa,insertCluster:gUe,insertEdge:VUe,insertEdgeLabel:BUe,insertMarkers:cVe,insertNode:ose,interpolateToCurve:pM,labelHelper:Fr,log:_t,positionEdgeLabel:zUe},$2={},use=X(e=>{for(const r of e)$2[r.name]=r},"registerLayoutLoaders"),dVe=X(()=>{use([{name:"dagre",loader:X(async()=>await Ge(()=>import("./dagre-KLK3FWXG-CYaryM-8.js"),__vite__mapDeps([47,48,49,50,51,52]),import.meta.url),"loader")},{name:"cose-bilkent",loader:X(async()=>await Ge(()=>import("./cose-bilkent-S5V4N54A-Dksg3HjN.js"),__vite__mapDeps([53,54]),import.meta.url),"loader")}])},"registerDefaultLayoutLoaders");dVe();var R1t=X(async(e,r)=>{if(!(e.layoutAlgorithm in $2))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const n=$2[e.layoutAlgorithm];return(await n.loader()).render(e,r,uVe,{algorithm:n.algorithm})},"render"),M1t=X((e="",{fallback:r="dagre"}={})=>{if(e in $2)return e;if(r in $2)return _t.warn(`Layout algorithm ${e} is not registered. Using ${r} as fallback.`),r;throw new Error(`Both layout algorithms ${e} and ${r} are not registered.`)},"getRegisteredLayoutAlgorithm"),hVe=zre(Object.keys,Object),fVe=Object.prototype,pVe=fVe.hasOwnProperty;function mVe(e){if(!Fj(e))return hVe(e);var r=[];for(var n in Object(e))pVe.call(e,n)&&n!="constructor"&&r.push(n);return r}var rO=D0(wd,"DataView"),nO=D0(wd,"Promise"),iO=D0(wd,"Set"),sO=D0(wd,"WeakMap"),bF="[object Map]",gVe="[object Object]",_F="[object Promise]",wF="[object Set]",SF="[object WeakMap]",kF="[object DataView]",yVe=$0(rO),vVe=$0(P2),xVe=$0(nO),bVe=$0(iO),_Ve=$0(sO),Lg=L0;(rO&&Lg(new rO(new ArrayBuffer(1)))!=kF||P2&&Lg(new P2)!=bF||nO&&Lg(nO.resolve())!=_F||iO&&Lg(new iO)!=wF||sO&&Lg(new sO)!=SF)&&(Lg=function(e){var r=L0(e),n=r==gVe?e.constructor:void 0,i=n?$0(n):"";if(i)switch(i){case yVe:return kF;case vVe:return bF;case xVe:return _F;case bVe:return wF;case _Ve:return SF}return r});var wVe="[object Map]",SVe="[object Set]",kVe=Object.prototype,CVe=kVe.hasOwnProperty;function CF(e){if(e==null)return!0;if(Hj(e)&&(M5(e)||typeof e=="string"||typeof e.splice=="function"||hM(e)||fM(e)||R5(e)))return!e.length;var r=Lg(e);if(r==wVe||r==SVe)return!e.size;if(Fj(e))return!mVe(e).length;for(var n in e)if(CVe.call(e,n))return!1;return!0}var dse="c4",jVe=X(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),TVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./c4Diagram-IC4MRINW-DnGmqSW5.js");return{diagram:r}},__vite__mapDeps([55,56]),import.meta.url);return{id:dse,diagram:e}},"loader"),NVe={id:dse,detector:jVe,loader:TVe},EVe=NVe,hse="flowchart",AVe=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"),OVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-B47nONkI.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:hse,diagram:e}},"loader"),RVe={id:hse,detector:AVe,loader:OVe},MVe=RVe,fse="flowchart-v2",PVe=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"),LVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-B47nONkI.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:fse,diagram:e}},"loader"),$Ve={id:fse,detector:PVe,loader:LVe},DVe=$Ve,pse="er",IVe=X(e=>/^\s*erDiagram/.test(e),"detector"),BVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./erDiagram-INFDFZHY-DiXdVG5L.js");return{diagram:r}},__vite__mapDeps([62,59,60,61]),import.meta.url);return{id:pse,diagram:e}},"loader"),zVe={id:pse,detector:IVe,loader:BVe},FVe=zVe,mse="gitGraph",HVe=X(e=>/^\s*gitGraph/.test(e),"detector"),WVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./gitGraphDiagram-K3NZZRJ6-BaoIjSvR.js");return{diagram:r}},__vite__mapDeps([63,64,65,66,49,51,52]),import.meta.url);return{id:mse,diagram:e}},"loader"),UVe={id:mse,detector:HVe,loader:WVe},VVe=UVe,gse="gantt",qVe=X(e=>/^\s*gantt/.test(e),"detector"),GVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./ganttDiagram-A5KZAMGK-Ct2N1zb-.js");return{diagram:r}},__vite__mapDeps([67,68,69]),import.meta.url);return{id:gse,diagram:e}},"loader"),KVe={id:gse,detector:qVe,loader:GVe},YVe=KVe,yse="info",XVe=X(e=>/^\s*info/.test(e),"detector"),ZVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./infoDiagram-LFFYTUFH-DQuPnytq.js");return{diagram:r}},__vite__mapDeps([70,66,49,51,52]),import.meta.url);return{id:yse,diagram:e}},"loader"),JVe={id:yse,detector:XVe,loader:ZVe},vse="pie",QVe=X(e=>/^\s*pie/.test(e),"detector"),eqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./pieDiagram-SKSYHLDU-B_GQpJQh.js");return{diagram:r}},__vite__mapDeps([71,64,66,49,51,52,72]),import.meta.url);return{id:vse,diagram:e}},"loader"),tqe={id:vse,detector:QVe,loader:eqe},xse="quadrantChart",rqe=X(e=>/^\s*quadrantChart/.test(e),"detector"),nqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./quadrantDiagram-337W2JSQ-DGokCABW.js");return{diagram:r}},__vite__mapDeps([73,68,69]),import.meta.url);return{id:xse,diagram:e}},"loader"),iqe={id:xse,detector:rqe,loader:nqe},sqe=iqe,bse="xychart",oqe=X(e=>/^\s*xychart(-beta)?/.test(e),"detector"),aqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./xychartDiagram-JWTSCODW-a4XEvuFM.js");return{diagram:r}},__vite__mapDeps([74,68,69]),import.meta.url);return{id:bse,diagram:e}},"loader"),lqe={id:bse,detector:oqe,loader:aqe},cqe=lqe,_se="requirement",uqe=X(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),dqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./requirementDiagram-Z7DCOOCP-C684lgS-.js");return{diagram:r}},__vite__mapDeps([75,59,60]),import.meta.url);return{id:_se,diagram:e}},"loader"),hqe={id:_se,detector:uqe,loader:dqe},fqe=hqe,wse="sequence",pqe=X(e=>/^\s*sequenceDiagram/.test(e),"detector"),mqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./sequenceDiagram-2WXFIKYE-DNPKTwcu.js");return{diagram:r}},__vite__mapDeps([76,56,65]),import.meta.url);return{id:wse,diagram:e}},"loader"),gqe={id:wse,detector:pqe,loader:mqe},yqe=gqe,Sse="class",vqe=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"),xqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./classDiagram-VBA2DB6C-CLEdVLAY.js");return{diagram:r}},__vite__mapDeps([77,78,58,56,59,60]),import.meta.url);return{id:Sse,diagram:e}},"loader"),bqe={id:Sse,detector:vqe,loader:xqe},_qe=bqe,kse="classDiagram",wqe=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"),Sqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./classDiagram-v2-RAHNMMFH-CLEdVLAY.js");return{diagram:r}},__vite__mapDeps([79,78,58,56,59,60]),import.meta.url);return{id:kse,diagram:e}},"loader"),kqe={id:kse,detector:wqe,loader:Sqe},Cqe=kqe,Cse="state",jqe=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"),Tqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./stateDiagram-RAJIS63D-BvOnc7SK.js");return{diagram:r}},__vite__mapDeps([80,81,59,60,48,49,50,51]),import.meta.url);return{id:Cse,diagram:e}},"loader"),Nqe={id:Cse,detector:jqe,loader:Tqe},Eqe=Nqe,jse="stateDiagram",Aqe=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"),Oqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./stateDiagram-v2-FVOUBMTO-DxawmOSR.js");return{diagram:r}},__vite__mapDeps([82,81,59,60]),import.meta.url);return{id:jse,diagram:e}},"loader"),Rqe={id:jse,detector:Aqe,loader:Oqe},Mqe=Rqe,Tse="journey",Pqe=X(e=>/^\s*journey/.test(e),"detector"),Lqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./journeyDiagram-4ABVD52K-iDJqUDY8.js");return{diagram:r}},__vite__mapDeps([83,58,56,72]),import.meta.url);return{id:Tse,diagram:e}},"loader"),$qe={id:Tse,detector:Pqe,loader:Lqe},Dqe=$qe,Iqe=X((e,r,n)=>{_t.debug(`rendering svg for syntax error
1100
- `);const i=MIe(r),s=i.append("g");i.attr("viewBox","0 0 2412 512"),ree(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"),Nse={draw:Iqe},Bqe=Nse,zqe={db:{},renderer:Nse,parser:{parse:X(()=>{},"parse")}},Fqe=zqe,Ese="flowchart-elk",Hqe=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"),Wqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-B47nONkI.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:Ese,diagram:e}},"loader"),Uqe={id:Ese,detector:Hqe,loader:Wqe},Vqe=Uqe,Ase="timeline",qqe=X(e=>/^\s*timeline/.test(e),"detector"),Gqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./timeline-definition-YZTLITO2-B7KyLGx4.js");return{diagram:r}},__vite__mapDeps([84,72]),import.meta.url);return{id:Ase,diagram:e}},"loader"),Kqe={id:Ase,detector:qqe,loader:Gqe},Yqe=Kqe,Ose="mindmap",Xqe=X(e=>/^\s*mindmap/.test(e),"detector"),Zqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./mindmap-definition-YRQLILUH-fA7pVIBx.js");return{diagram:r}},__vite__mapDeps([85,59,60]),import.meta.url);return{id:Ose,diagram:e}},"loader"),Jqe={id:Ose,detector:Xqe,loader:Zqe},Qqe=Jqe,Rse="kanban",eGe=X(e=>/^\s*kanban/.test(e),"detector"),tGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./kanban-definition-K7BYSVSG-BFCHbtFN.js");return{diagram:r}},__vite__mapDeps([86,58]),import.meta.url);return{id:Rse,diagram:e}},"loader"),rGe={id:Rse,detector:eGe,loader:tGe},nGe=rGe,Mse="sankey",iGe=X(e=>/^\s*sankey(-beta)?/.test(e),"detector"),sGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./sankeyDiagram-WA2Y5GQK-Ch7jMKVd.js");return{diagram:r}},[],import.meta.url);return{id:Mse,diagram:e}},"loader"),oGe={id:Mse,detector:iGe,loader:sGe},aGe=oGe,Pse="packet",lGe=X(e=>/^\s*packet(-beta)?/.test(e),"detector"),cGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./diagram-P4PSJMXO-DR6nI4mR.js");return{diagram:r}},__vite__mapDeps([87,64,66,49,51,52]),import.meta.url);return{id:Pse,diagram:e}},"loader"),uGe={id:Pse,detector:lGe,loader:cGe},Lse="radar",dGe=X(e=>/^\s*radar-beta/.test(e),"detector"),hGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./diagram-IFDJBPK2-odi0yYmc.js");return{diagram:r}},__vite__mapDeps([88,64,66,49,51,52]),import.meta.url);return{id:Lse,diagram:e}},"loader"),fGe={id:Lse,detector:dGe,loader:hGe},$se="block",pGe=X(e=>/^\s*block(-beta)?/.test(e),"detector"),mGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./blockDiagram-WCTKOSBZ-BcyH-Sq_.js");return{diagram:r}},__vite__mapDeps([89,58,52,49,48,61]),import.meta.url);return{id:$se,diagram:e}},"loader"),gGe={id:$se,detector:pGe,loader:mGe},yGe=gGe,Dse="architecture",vGe=X(e=>/^\s*architecture/.test(e),"detector"),xGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./architectureDiagram-2XIMDMQ5-DYDDd4HP.js");return{diagram:r}},__vite__mapDeps([90,64,66,49,51,52,54]),import.meta.url);return{id:Dse,diagram:e}},"loader"),bGe={id:Dse,detector:vGe,loader:xGe},_Ge=bGe,Ise="ishikawa",wGe=X(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),SGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./ishikawaDiagram-PHBUUO56-1rTr0O1X.js");return{diagram:r}},[],import.meta.url);return{id:Ise,diagram:e}},"loader"),kGe={id:Ise,detector:wGe,loader:SGe},Bse="venn",CGe=X(e=>/^\s*venn-beta/.test(e),"detector"),jGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./vennDiagram-LZ73GAT5-BxWLw23z.js");return{diagram:r}},[],import.meta.url);return{id:Bse,diagram:e}},"loader"),TGe={id:Bse,detector:CGe,loader:jGe},NGe=TGe,zse="treemap",EGe=X(e=>/^\s*treemap/.test(e),"detector"),AGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./diagram-E7M64L7V-Bz0o9Aps.js");return{diagram:r}},__vite__mapDeps([91,60,64,66,49,51,52,69]),import.meta.url);return{id:zse,diagram:e}},"loader"),OGe={id:zse,detector:EGe,loader:AGe},jF=!1,Xj=X(()=>{jF||(jF=!0,p5("error",Fqe,e=>e.toLowerCase().trim()==="error"),p5("---",{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("---")),hA(Vqe,Qqe,_Ge),hA(EVe,nGe,Cqe,_qe,FVe,YVe,JVe,tqe,fqe,yqe,DVe,MVe,Yqe,VVe,Mqe,Eqe,Dqe,sqe,aGe,uGe,cqe,yGe,fGe,kGe,OGe,NGe))},"addDiagrams"),RGe=X(async()=>{_t.debug("Loading registered diagrams");const r=(await Promise.allSettled(Object.entries(f0).map(async([n,{detector:i,loader:s}])=>{if(s)try{gA(n)}catch{try{const{diagram:o,id:a}=await s();p5(a,o,i)}catch(o){throw _t.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){_t.error(`Failed to load ${r.length} external diagrams`);for(const n of r)_t.error(n);throw new Error(`Failed to load ${r.length} external diagrams`)}},"loadRegisteredDiagrams"),MGe="graphics-document document";function Fse(e,r){e.attr("role",MGe),r!==""&&e.attr("aria-roledescription",r)}X(Fse,"setA11yDiagramInfo");function Hse(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(Hse,"addSVGa11yTitleDescription");var n0,oO=(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,h;const i=Aa(),s=LR(r,i);r=$He(r)+`
1099
+ L0,20`)},"requirement_arrow"),aVe=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"),lVe={extension:GUe,composition:KUe,aggregation:YUe,dependency:XUe,lollipop:ZUe,point:JUe,circle:QUe,cross:eVe,barb:tVe,only_one:rVe,zero_or_one:nVe,one_or_more:iVe,zero_or_more:sVe,requirement_arrow:oVe,requirement_contains:aVe},cVe=qUe,uVe={common:hS,getConfig:Aa,insertCluster:gUe,insertEdge:VUe,insertEdgeLabel:BUe,insertMarkers:cVe,insertNode:ose,interpolateToCurve:pM,labelHelper:Fr,log:_t,positionEdgeLabel:zUe},$2={},use=X(e=>{for(const r of e)$2[r.name]=r},"registerLayoutLoaders"),dVe=X(()=>{use([{name:"dagre",loader:X(async()=>await Ge(()=>import("./dagre-KLK3FWXG-BUtN_g_K.js"),__vite__mapDeps([47,48,49,50,51,52]),import.meta.url),"loader")},{name:"cose-bilkent",loader:X(async()=>await Ge(()=>import("./cose-bilkent-S5V4N54A-B2d0YYrF.js"),__vite__mapDeps([53,54]),import.meta.url),"loader")}])},"registerDefaultLayoutLoaders");dVe();var R1t=X(async(e,r)=>{if(!(e.layoutAlgorithm in $2))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const n=$2[e.layoutAlgorithm];return(await n.loader()).render(e,r,uVe,{algorithm:n.algorithm})},"render"),M1t=X((e="",{fallback:r="dagre"}={})=>{if(e in $2)return e;if(r in $2)return _t.warn(`Layout algorithm ${e} is not registered. Using ${r} as fallback.`),r;throw new Error(`Both layout algorithms ${e} and ${r} are not registered.`)},"getRegisteredLayoutAlgorithm"),hVe=zre(Object.keys,Object),fVe=Object.prototype,pVe=fVe.hasOwnProperty;function mVe(e){if(!Fj(e))return hVe(e);var r=[];for(var n in Object(e))pVe.call(e,n)&&n!="constructor"&&r.push(n);return r}var rO=D0(wd,"DataView"),nO=D0(wd,"Promise"),iO=D0(wd,"Set"),sO=D0(wd,"WeakMap"),bF="[object Map]",gVe="[object Object]",_F="[object Promise]",wF="[object Set]",SF="[object WeakMap]",kF="[object DataView]",yVe=$0(rO),vVe=$0(P2),xVe=$0(nO),bVe=$0(iO),_Ve=$0(sO),Lg=L0;(rO&&Lg(new rO(new ArrayBuffer(1)))!=kF||P2&&Lg(new P2)!=bF||nO&&Lg(nO.resolve())!=_F||iO&&Lg(new iO)!=wF||sO&&Lg(new sO)!=SF)&&(Lg=function(e){var r=L0(e),n=r==gVe?e.constructor:void 0,i=n?$0(n):"";if(i)switch(i){case yVe:return kF;case vVe:return bF;case xVe:return _F;case bVe:return wF;case _Ve:return SF}return r});var wVe="[object Map]",SVe="[object Set]",kVe=Object.prototype,CVe=kVe.hasOwnProperty;function CF(e){if(e==null)return!0;if(Hj(e)&&(M5(e)||typeof e=="string"||typeof e.splice=="function"||hM(e)||fM(e)||R5(e)))return!e.length;var r=Lg(e);if(r==wVe||r==SVe)return!e.size;if(Fj(e))return!mVe(e).length;for(var n in e)if(CVe.call(e,n))return!1;return!0}var dse="c4",jVe=X(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),TVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./c4Diagram-IC4MRINW-C1m5Cymw.js");return{diagram:r}},__vite__mapDeps([55,56]),import.meta.url);return{id:dse,diagram:e}},"loader"),NVe={id:dse,detector:jVe,loader:TVe},EVe=NVe,hse="flowchart",AVe=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"),OVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-Bs_i7peG.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:hse,diagram:e}},"loader"),RVe={id:hse,detector:AVe,loader:OVe},MVe=RVe,fse="flowchart-v2",PVe=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"),LVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-Bs_i7peG.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:fse,diagram:e}},"loader"),$Ve={id:fse,detector:PVe,loader:LVe},DVe=$Ve,pse="er",IVe=X(e=>/^\s*erDiagram/.test(e),"detector"),BVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./erDiagram-INFDFZHY-CiFeDWLF.js");return{diagram:r}},__vite__mapDeps([62,59,60,61]),import.meta.url);return{id:pse,diagram:e}},"loader"),zVe={id:pse,detector:IVe,loader:BVe},FVe=zVe,mse="gitGraph",HVe=X(e=>/^\s*gitGraph/.test(e),"detector"),WVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./gitGraphDiagram-K3NZZRJ6-we1iAgem.js");return{diagram:r}},__vite__mapDeps([63,64,65,66,49,51,52]),import.meta.url);return{id:mse,diagram:e}},"loader"),UVe={id:mse,detector:HVe,loader:WVe},VVe=UVe,gse="gantt",qVe=X(e=>/^\s*gantt/.test(e),"detector"),GVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./ganttDiagram-A5KZAMGK-C24P955c.js");return{diagram:r}},__vite__mapDeps([67,68,69]),import.meta.url);return{id:gse,diagram:e}},"loader"),KVe={id:gse,detector:qVe,loader:GVe},YVe=KVe,yse="info",XVe=X(e=>/^\s*info/.test(e),"detector"),ZVe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./infoDiagram-LFFYTUFH-efV5JrNC.js");return{diagram:r}},__vite__mapDeps([70,66,49,51,52]),import.meta.url);return{id:yse,diagram:e}},"loader"),JVe={id:yse,detector:XVe,loader:ZVe},vse="pie",QVe=X(e=>/^\s*pie/.test(e),"detector"),eqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./pieDiagram-SKSYHLDU-C_ZYY1Uu.js");return{diagram:r}},__vite__mapDeps([71,64,66,49,51,52,72]),import.meta.url);return{id:vse,diagram:e}},"loader"),tqe={id:vse,detector:QVe,loader:eqe},xse="quadrantChart",rqe=X(e=>/^\s*quadrantChart/.test(e),"detector"),nqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./quadrantDiagram-337W2JSQ-B6fxV2aK.js");return{diagram:r}},__vite__mapDeps([73,68,69]),import.meta.url);return{id:xse,diagram:e}},"loader"),iqe={id:xse,detector:rqe,loader:nqe},sqe=iqe,bse="xychart",oqe=X(e=>/^\s*xychart(-beta)?/.test(e),"detector"),aqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./xychartDiagram-JWTSCODW-BPSfzhL8.js");return{diagram:r}},__vite__mapDeps([74,68,69]),import.meta.url);return{id:bse,diagram:e}},"loader"),lqe={id:bse,detector:oqe,loader:aqe},cqe=lqe,_se="requirement",uqe=X(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),dqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./requirementDiagram-Z7DCOOCP-CI0dAa8d.js");return{diagram:r}},__vite__mapDeps([75,59,60]),import.meta.url);return{id:_se,diagram:e}},"loader"),hqe={id:_se,detector:uqe,loader:dqe},fqe=hqe,wse="sequence",pqe=X(e=>/^\s*sequenceDiagram/.test(e),"detector"),mqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./sequenceDiagram-2WXFIKYE-DW3jX2jS.js");return{diagram:r}},__vite__mapDeps([76,56,65]),import.meta.url);return{id:wse,diagram:e}},"loader"),gqe={id:wse,detector:pqe,loader:mqe},yqe=gqe,Sse="class",vqe=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"),xqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./classDiagram-VBA2DB6C-DvgxU7Td.js");return{diagram:r}},__vite__mapDeps([77,78,58,56,59,60]),import.meta.url);return{id:Sse,diagram:e}},"loader"),bqe={id:Sse,detector:vqe,loader:xqe},_qe=bqe,kse="classDiagram",wqe=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"),Sqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./classDiagram-v2-RAHNMMFH-DvgxU7Td.js");return{diagram:r}},__vite__mapDeps([79,78,58,56,59,60]),import.meta.url);return{id:kse,diagram:e}},"loader"),kqe={id:kse,detector:wqe,loader:Sqe},Cqe=kqe,Cse="state",jqe=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"),Tqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./stateDiagram-RAJIS63D-D5-Mg86T.js");return{diagram:r}},__vite__mapDeps([80,81,59,60,48,49,50,51]),import.meta.url);return{id:Cse,diagram:e}},"loader"),Nqe={id:Cse,detector:jqe,loader:Tqe},Eqe=Nqe,jse="stateDiagram",Aqe=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"),Oqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./stateDiagram-v2-FVOUBMTO-VINrbKV3.js");return{diagram:r}},__vite__mapDeps([82,81,59,60]),import.meta.url);return{id:jse,diagram:e}},"loader"),Rqe={id:jse,detector:Aqe,loader:Oqe},Mqe=Rqe,Tse="journey",Pqe=X(e=>/^\s*journey/.test(e),"detector"),Lqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./journeyDiagram-4ABVD52K-BNrI6Whm.js");return{diagram:r}},__vite__mapDeps([83,58,56,72]),import.meta.url);return{id:Tse,diagram:e}},"loader"),$qe={id:Tse,detector:Pqe,loader:Lqe},Dqe=$qe,Iqe=X((e,r,n)=>{_t.debug(`rendering svg for syntax error
1100
+ `);const i=MIe(r),s=i.append("g");i.attr("viewBox","0 0 2412 512"),ree(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"),Nse={draw:Iqe},Bqe=Nse,zqe={db:{},renderer:Nse,parser:{parse:X(()=>{},"parse")}},Fqe=zqe,Ese="flowchart-elk",Hqe=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"),Wqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./flowDiagram-PKNHOUZH-Bs_i7peG.js");return{diagram:r}},__vite__mapDeps([57,58,56,59,60,61]),import.meta.url);return{id:Ese,diagram:e}},"loader"),Uqe={id:Ese,detector:Hqe,loader:Wqe},Vqe=Uqe,Ase="timeline",qqe=X(e=>/^\s*timeline/.test(e),"detector"),Gqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./timeline-definition-YZTLITO2-Dz-WY3QD.js");return{diagram:r}},__vite__mapDeps([84,72]),import.meta.url);return{id:Ase,diagram:e}},"loader"),Kqe={id:Ase,detector:qqe,loader:Gqe},Yqe=Kqe,Ose="mindmap",Xqe=X(e=>/^\s*mindmap/.test(e),"detector"),Zqe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./mindmap-definition-YRQLILUH-rVyRFIBp.js");return{diagram:r}},__vite__mapDeps([85,59,60]),import.meta.url);return{id:Ose,diagram:e}},"loader"),Jqe={id:Ose,detector:Xqe,loader:Zqe},Qqe=Jqe,Rse="kanban",eGe=X(e=>/^\s*kanban/.test(e),"detector"),tGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./kanban-definition-K7BYSVSG-sq7M3Goj.js");return{diagram:r}},__vite__mapDeps([86,58]),import.meta.url);return{id:Rse,diagram:e}},"loader"),rGe={id:Rse,detector:eGe,loader:tGe},nGe=rGe,Mse="sankey",iGe=X(e=>/^\s*sankey(-beta)?/.test(e),"detector"),sGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./sankeyDiagram-WA2Y5GQK-C6aYWcth.js");return{diagram:r}},[],import.meta.url);return{id:Mse,diagram:e}},"loader"),oGe={id:Mse,detector:iGe,loader:sGe},aGe=oGe,Pse="packet",lGe=X(e=>/^\s*packet(-beta)?/.test(e),"detector"),cGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./diagram-P4PSJMXO-DRbnm-p0.js");return{diagram:r}},__vite__mapDeps([87,64,66,49,51,52]),import.meta.url);return{id:Pse,diagram:e}},"loader"),uGe={id:Pse,detector:lGe,loader:cGe},Lse="radar",dGe=X(e=>/^\s*radar-beta/.test(e),"detector"),hGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./diagram-IFDJBPK2-a1a9V8n_.js");return{diagram:r}},__vite__mapDeps([88,64,66,49,51,52]),import.meta.url);return{id:Lse,diagram:e}},"loader"),fGe={id:Lse,detector:dGe,loader:hGe},$se="block",pGe=X(e=>/^\s*block(-beta)?/.test(e),"detector"),mGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./blockDiagram-WCTKOSBZ-B3dp3Do4.js");return{diagram:r}},__vite__mapDeps([89,58,52,49,48,61]),import.meta.url);return{id:$se,diagram:e}},"loader"),gGe={id:$se,detector:pGe,loader:mGe},yGe=gGe,Dse="architecture",vGe=X(e=>/^\s*architecture/.test(e),"detector"),xGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./architectureDiagram-2XIMDMQ5-CJEAaw0g.js");return{diagram:r}},__vite__mapDeps([90,64,66,49,51,52,54]),import.meta.url);return{id:Dse,diagram:e}},"loader"),bGe={id:Dse,detector:vGe,loader:xGe},_Ge=bGe,Ise="ishikawa",wGe=X(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),SGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./ishikawaDiagram-PHBUUO56-CEG_E9ZG.js");return{diagram:r}},[],import.meta.url);return{id:Ise,diagram:e}},"loader"),kGe={id:Ise,detector:wGe,loader:SGe},Bse="venn",CGe=X(e=>/^\s*venn-beta/.test(e),"detector"),jGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./vennDiagram-LZ73GAT5-a2ah8SX-.js");return{diagram:r}},[],import.meta.url);return{id:Bse,diagram:e}},"loader"),TGe={id:Bse,detector:CGe,loader:jGe},NGe=TGe,zse="treemap",EGe=X(e=>/^\s*treemap/.test(e),"detector"),AGe=X(async()=>{const{diagram:e}=await Ge(async()=>{const{diagram:r}=await import("./diagram-E7M64L7V-CGksthSH.js");return{diagram:r}},__vite__mapDeps([91,60,64,66,49,51,52,69]),import.meta.url);return{id:zse,diagram:e}},"loader"),OGe={id:zse,detector:EGe,loader:AGe},jF=!1,Xj=X(()=>{jF||(jF=!0,p5("error",Fqe,e=>e.toLowerCase().trim()==="error"),p5("---",{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("---")),hA(Vqe,Qqe,_Ge),hA(EVe,nGe,Cqe,_qe,FVe,YVe,JVe,tqe,fqe,yqe,DVe,MVe,Yqe,VVe,Mqe,Eqe,Dqe,sqe,aGe,uGe,cqe,yGe,fGe,kGe,OGe,NGe))},"addDiagrams"),RGe=X(async()=>{_t.debug("Loading registered diagrams");const r=(await Promise.allSettled(Object.entries(f0).map(async([n,{detector:i,loader:s}])=>{if(s)try{gA(n)}catch{try{const{diagram:o,id:a}=await s();p5(a,o,i)}catch(o){throw _t.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){_t.error(`Failed to load ${r.length} external diagrams`);for(const n of r)_t.error(n);throw new Error(`Failed to load ${r.length} external diagrams`)}},"loadRegisteredDiagrams"),MGe="graphics-document document";function Fse(e,r){e.attr("role",MGe),r!==""&&e.attr("aria-roledescription",r)}X(Fse,"setA11yDiagramInfo");function Hse(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(Hse,"addSVGa11yTitleDescription");var n0,oO=(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,h;const i=Aa(),s=LR(r,i);r=$He(r)+`
1101
1101
  `;try{gA(s)}catch{const p=kMe(s);if(!p)throw new HQ(`Diagram ${s} not found.`);const{id:g,diagram:v}=await p();p5(g,v)}const{db:o,parser:a,renderer:l,init:u}=gA(s);return a.parser&&(a.parser.yy=o),(c=o.clear)==null||c.call(o),u==null||u(i),n.title&&((h=o.setDiagramTitle)==null||h.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),TF=[],PGe=X(()=>{TF.forEach(e=>{e()}),TF=[]},"attachFunctions"),LGe=X(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function Wse(e){const r=e.match(FQ);if(!r)return{text:e,metadata:{}};let n=zBe(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(Wse,"extractFrontMatter");var $Ge=X(e=>e.replace(/\r\n?/g,`
1102
1102
  `).replace(/<(\w+)([^>]*)>/g,(r,n,i)=>"<"+n+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),DGe=X(e=>{const{text:r,metadata:n}=Wse(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"),IGe=X(e=>{const r=rd.detectInit(e)??{},n=rd.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:SHe(e),directive:r}},"processDirectives");function LM(e){const r=$Ge(e),n=DGe(r),i=IGe(n.text),s=xM(n.config,i.directive);return e=LGe(i.text),{code:e,title:n.title,config:s}}X(LM,"preprocessDiagram");function Use(e){const r=new TextEncoder().encode(e),n=Array.from(r,i=>String.fromCodePoint(i)).join("");return btoa(n)}X(Use,"toBase64");var BGe=5e4,zGe="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",FGe="sandbox",HGe="loose",WGe="http://www.w3.org/2000/svg",UGe="http://www.w3.org/1999/xlink",VGe="http://www.w3.org/1999/xhtml",qGe="100%",GGe="100%",KGe="border:0;margin:0;",YGe="margin:0",XGe="allow-top-navigation-by-user-activation allow-popups",ZGe='The "iframe" tag is not supported by your browser.',JGe=["foreignobject"],QGe=["dominant-baseline"];function $M(e){const r=LM(e);return h5(),zMe(r.config??{}),r}X($M,"processAndSetConfigs");async function Vse(e,r){Xj();try{const{code:n,config:i}=$M(e);return{diagramType:(await Gse(n)).type,config:i}}catch(n){if(r!=null&&r.suppressErrors)return!1;throw n}}X(Vse,"parse");var NF=X((e,r,n=[])=>`
1103
1103
  .${e} ${r} { ${n.join(" !important; ")} !important; }`,"cssImportantStyles"),eKe=X((e,r=new Map)=>{let n="";if(e.themeCSS!==void 0&&(n+=`
@@ -1235,7 +1235,7 @@ WARNING: This link could potentially be dangerous`)){let n=window.open();if(n){t
1235
1235
  * Copyright (c) 2011 Fabrice Bellard
1236
1236
  */var zht=class{constructor(e,r,n,i={}){this._terminal=e,this._regex=r,this._handler=n,this._options=i}provideLinks(e,r){let n=Hht.computeLink(e,this._regex,this._terminal,this._handler);r(this._addCallbacks(n))}_addCallbacks(e){return e.map(r=>(r.leave=this._options.leave,r.hover=(n,i)=>{if(this._options.hover){let{range:s}=r;this._options.hover(n,i,s)}},r))}};function Fht(e){try{let r=new URL(e),n=r.password&&r.username?`${r.protocol}//${r.username}:${r.password}@${r.host}`:r.username?`${r.protocol}//${r.username}@${r.host}`:`${r.protocol}//${r.host}`;return e.toLocaleLowerCase().startsWith(n.toLocaleLowerCase())}catch{return!1}}var Hht=class jC{static computeLink(r,n,i,s){let o=new RegExp(n.source,(n.flags||"")+"g"),[a,l]=jC._getWindowedLineStrings(r-1,i),u=a.join(""),c,h=[];for(;c=o.exec(u);){let p=c[0];if(!Fht(p))continue;let[g,v]=jC._mapStrIdx(i,l,0,c.index),[b,_]=jC._mapStrIdx(i,g,v,p.length);if(g===-1||v===-1||b===-1||_===-1)continue;let k={start:{x:v+1,y:g+1},end:{x:_,y:b+1}};h.push({range:k,text:p,activate:s})}return h}static _getWindowedLineStrings(r,n){let i,s=r,o=r,a=0,l="",u=[];if(i=n.buffer.active.getLine(r)){let c=i.translateToString(!0);if(i.isWrapped&&c[0]!==" "){for(a=0;(i=n.buffer.active.getLine(--s))&&a<2048&&(l=i.translateToString(!0),a+=l.length,u.push(l),!(!i.isWrapped||l.indexOf(" ")!==-1)););u.reverse()}for(u.push(c),a=0;(i=n.buffer.active.getLine(++o))&&i.isWrapped&&a<2048&&(l=i.translateToString(!0),a+=l.length,u.push(l),l.indexOf(" ")===-1););}return[u,s]}static _mapStrIdx(r,n,i,s){let o=r.buffer.active,a=o.getNullCell(),l=i;for(;s;){let u=o.getLine(n);if(!u)return[-1,-1];for(let c=l;c<u.length;++c){u.getCell(c,a);let h=a.getChars();if(a.getWidth()&&(s-=h.length||1,c===u.length-1&&h==="")){let p=o.getLine(n+1);p&&p.isWrapped&&(p.getCell(0,a),a.getWidth()===2&&(s+=1))}if(s<0)return[n,c]}n++,l=0}return[n,l]}},Wht=/(https?|HTTPS?):[/]{2}[^\s"'!*(){}|\\\^<>`]*[^\s"':,.!?{}|\\\^~\[\]`()<>]/;function Uht(e,r){let n=window.open();if(n){try{n.opener=null}catch{}n.location.href=r}else console.warn("Opening link blocked as opener could not be cleared")}var Vht=class{constructor(e=Uht,r={}){this._handler=e,this._options=r}activate(e){this._terminal=e;let r=this._options,n=r.urlRegex||Wht;this._linkProvider=this._terminal.registerLinkProvider(new zht(this._terminal,n,this._handler,r))}dispose(){var e;(e=this._linkProvider)==null||e.dispose()}};function qht(e,r,n){if(!n||n.type!=="terminal.output"||n.terminalId!==r)return!1;if(!n.streamId||typeof n.seq!="number")return!0;const i=e.get(n.streamId)??-1;return n.seq<=i?!1:(e.set(n.streamId,n.seq),!0)}const L_=Mn(),Ght=P0();function $_(e){return e?{Authorization:`Bearer ${e}`}:{}}function lV(e){var r;return{...e,workspaceRoot:((r=e.metadata)==null?void 0:r.cwd)??e.workspaceRoot??null}}function Mb(e,r,n){const i=e.getPropertyValue(r).trim();return i?`hsl(${i})`:n}function cV(){const e=getComputedStyle(document.documentElement);return{background:Mb(e,"--background","#0a0a0a"),foreground:Mb(e,"--foreground","#e4e4e7"),cursor:Mb(e,"--foreground","#e4e4e7"),cursorAccent:Mb(e,"--background","#0a0a0a"),selectionBackground:Mb(e,"--primary","#2563eb")}}async function Kht(e,r){if(!(e!=null&&e.readText))return!1;try{const n=await e.readText();return n?(r(n),!0):!1}catch{return!1}}function Yht(e){const[r,n]=y.useState([]),[i,s]=y.useState(null),o=y.useCallback(async()=>{try{const p=(await(await fetch(`${L_}/api/terminals`,{headers:$_(e)})).json()).terminals.map(lV);return n(p),p}catch{return[]}},[e]),a=y.useRef(!1),l=y.useCallback(async(c,h,p)=>{if(a.current)return r[0]??{id:"",type:"terminal",state:"idle",sessionId:c,workspaceRoot:h??null,metadata:{}};a.current=!0;try{const g=await fetch(`${L_}/api/terminals`,{method:"POST",headers:{"Content-Type":"application/json",...$_(e)},body:JSON.stringify({sessionId:c,workspaceRoot:h,...p?{shell:p}:{}})}),v=lV(await g.json());return n(b=>[...b,v]),s(v.id),v}finally{a.current=!1}},[e,r]),u=y.useCallback(async c=>{await fetch(`${L_}/api/terminals/${c}`,{method:"DELETE",headers:$_(e)}),n(h=>h.filter(p=>p.id!==c)),s(h=>h===c?null:h)},[e]);return y.useEffect(()=>{o()},[o]),{terminals:r,activeTerminalId:i,setActiveTerminalId:s,createTerminal:l,killTerminal:u,refresh:o}}function Xht(e){const[r,n]=y.useState([]),i=y.useRef(!1);return y.useEffect(()=>{i.current||(i.current=!0,(async()=>{try{const o=await(await fetch(`${L_}/api/terminals/shells`,{headers:$_(e)})).json();n(o.shells??[])}catch{}})())},[e]),r}const d4=y.forwardRef(function({terminalId:r,className:n,token:i,workspaceRoot:s,onReferenceSelection:o},a){const l=y.useRef(null),u=y.useRef(null),c=y.useRef(null),h=y.useRef(null),p=y.useRef(null),g=poe(),[v,b]=y.useState(null);y.useImperativeHandle(a,()=>({focus(){var w;(w=u.current)==null||w.focus()}}),[]),y.useEffect(()=>{if(!l.current)return;const w=new $ht({cursorBlink:!0,fontSize:13,fontFamily:"'Cascadia Code', 'Fira Code', 'JetBrains Mono', monospace",theme:cV(),allowProposedApi:!0}),C=new Bht,j=new Vht;w.loadAddon(C),w.loadAddon(j),w.open(l.current);const T=()=>{const J=w.getSelection().trim();if(!J){p.current=null;return}const V=`${r}:${J}`;if(p.current===V)return;p.current=V;const ee=w.getSelectionPosition();o==null||o(r,J,s,ee==null?void 0:ee.start.y,ee==null?void 0:ee.end.y)};requestAnimationFrame(()=>{C.fit(),w.focus()});const A=setTimeout(()=>{C.fit(),w.focus()},150);u.current=w,c.current=C;let E=null,M=null,P=!1,H=1e3,$=!1;const U=3e4,I=new Map;function K(){M&&(clearTimeout(M),M=null)}function R(){E&&(E.onclose=null,E.close(),E=null,h.current=null)}function B(){if(P||typeof document<"u"&&document.hidden)return;const J=i?`?token=${encodeURIComponent(i)}`:"";E=new WebSocket(`${Ght}${J}`),h.current=E,E.onopen=()=>{H=1e3,E.send(JSON.stringify({type:"terminal.subscribe",terminalId:r}))},E.onmessage=V=>{try{const ee=JSON.parse(V.data);qht(I,r,ee.payload)&&w.write(ee.payload.data??"")}catch{}},E.onclose=()=>{!P&&!$&&(M=setTimeout(B,H),H=Math.min(H*1.5,U))},E.onerror=()=>{}}const L=()=>{const J=typeof document<"u"&&document.hidden;if($=J,J){K(),R();return}H=1e3,E||B()};B(),typeof document<"u"&&document.addEventListener("visibilitychange",L),w.onData(J=>{E&&E.readyState===WebSocket.OPEN&&E.send(JSON.stringify({type:"terminal.input",terminalId:r,data:J}))}),w.onResize(({cols:J,rows:V})=>{E&&E.readyState===WebSocket.OPEN&&E.send(JSON.stringify({type:"terminal.resize",terminalId:r,cols:J,rows:V})),fetch(`${L_}/api/terminals/${r}/resize`,{method:"POST",headers:{"Content-Type":"application/json",...$_(i)},body:JSON.stringify({cols:J,rows:V})})});const z=new ResizeObserver(()=>{requestAnimationFrame(()=>C.fit())});z.observe(l.current);const W=l.current,Y=()=>{window.setTimeout(T,0)},F=()=>{window.setTimeout(T,0)},q=J=>{J.preventDefault();const V=w.getSelection(),ee=W.getBoundingClientRect();b({x:J.clientX-ee.left,y:J.clientY-ee.top,hasSelection:!!V.trim()})};return W.addEventListener("mouseup",Y),W.addEventListener("keyup",F),W.addEventListener("contextmenu",q,{capture:!0}),()=>{P=!0,clearTimeout(A),K(),typeof document<"u"&&document.removeEventListener("visibilitychange",L),z.disconnect(),W.removeEventListener("mouseup",Y),W.removeEventListener("keyup",F),W.removeEventListener("contextmenu",q,{capture:!0}),R(),w.dispose(),u.current=null,c.current=null,h.current=null}},[r,i,s,o]),y.useEffect(()=>{const w=u.current;w&&(w.options.theme=cV())},[g]);const _=y.useCallback(()=>{var j;const w=u.current;if(!w)return;const C=w.getSelection().trim();C&&((j=navigator.clipboard)!=null&&j.writeText)&&navigator.clipboard.writeText(C),b(null),w.focus()},[]),k=y.useCallback(()=>{const w=u.current,C=h.current;w&&(Kht(navigator.clipboard,j=>{w.focus(),C&&C.readyState===WebSocket.OPEN&&C.send(JSON.stringify({type:"terminal.input",terminalId:r,data:j}))}),b(null),w.focus())},[r]);return d.jsxs("div",{className:`relative w-full overflow-hidden ${n??""}`,tabIndex:-1,onMouseDown:w=>{var C;v&&b(null),(w.target===w.currentTarget||(C=l.current)!=null&&C.contains(w.target))&&requestAnimationFrame(()=>{var j;return(j=u.current)==null?void 0:j.focus()})},children:[d.jsx("div",{ref:l,className:"h-full w-full",style:{minHeight:0}}),v&&d.jsxs("div",{className:"absolute z-50 min-w-[140px] rounded-md border border-border bg-popover py-1 shadow-md",style:{left:v.x,top:v.y},onMouseDown:w=>w.stopPropagation(),children:[d.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm text-popover-foreground hover:bg-accent hover:text-accent-foreground disabled:opacity-40 disabled:pointer-events-none",disabled:!v.hasSelection,onClick:_,children:[d.jsx(ru,{className:"h-3.5 w-3.5"}),"Copy"]}),d.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm text-popover-foreground hover:bg-accent hover:text-accent-foreground",onClick:k,children:[d.jsx(Oge,{className:"h-3.5 w-3.5"}),"Paste"]})]})]})}),Ak=16;function uV({terminals:e,activeTerminalId:r,onSelect:n,onCreate:i,onKill:s,onDetach:o,availableShells:a}){const[l,u]=y.useState(!1),c=y.useRef(null),h=y.useRef(null),[p,g]=y.useState(null);y.useEffect(()=>{if(!l)return;const b=_=>{c.current&&!c.current.contains(_.target)&&h.current&&!h.current.contains(_.target)&&u(!1)};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[l]);const v=a&&a.length>1;return d.jsxs("div",{className:"flex items-center gap-1 px-2 h-9 border-b bg-background shrink-0 overflow-x-auto",children:[e.map(b=>d.jsxs("div",{role:"tab",tabIndex:0,draggable:!0,onDragStart:_=>{_.dataTransfer.effectAllowed="copy",_.dataTransfer.setData(wQ,JSON.stringify(r9e(b.id,b.id.replace(/^term-/,"").slice(0,8),b.workspaceRoot)))},onDragEnd:_=>{if(!o)return;const k=_.clientX<=Ak||_.clientY<=Ak||_.clientX>=window.innerWidth-Ak||_.clientY>=window.innerHeight-Ak,w=_.dataTransfer.dropEffect==="none"&&(_.clientX===0||_.clientY===0);(k||w)&&o(b.id)},onClick:()=>n(b.id),onKeyDown:_=>{(_.key==="Enter"||_.key===" ")&&n(b.id)},className:`group flex items-center gap-1.5 h-6 px-2.5 text-xs rounded-sm border transition-colors cursor-pointer ${r===b.id?"bg-background text-foreground border-border shadow-sm":"text-muted-foreground border-transparent hover:text-foreground hover:bg-background/50 hover:border-border"}`,children:[d.jsx("span",{className:`w-1.5 h-1.5 rounded-full ${b.state==="running"?"bg-green-500":"bg-zinc-500"}`}),d.jsx("span",{className:"truncate max-w-[100px]",children:b.id.replace(/^term-/,"").slice(0,8)}),d.jsx("button",{onClick:_=>{_.stopPropagation(),s(b.id)},className:"text-muted-foreground hover:text-destructive ml-0.5 text-sm leading-none","aria-label":"Close terminal",children:"×"})]},b.id)),d.jsxs("div",{className:"flex items-center",children:[d.jsx("button",{onClick:()=>i(),className:"px-2 py-1 text-sm text-muted-foreground hover:text-foreground transition-colors","aria-label":"New terminal",children:"+"}),v&&d.jsx("button",{ref:h,onClick:()=>{var _;if(l){u(!1);return}const b=(_=h.current)==null?void 0:_.getBoundingClientRect();b&&g({top:b.bottom+4,left:b.left}),u(!0)},className:"px-0.5 py-1 text-muted-foreground hover:text-foreground transition-colors","aria-label":"Select shell type",children:d.jsx(al,{className:"h-3 w-3"})})]}),l&&v&&p&&d.jsx("div",{ref:c,className:"fixed z-50 min-w-[120px] rounded-md border bg-popover p-1 shadow-md",style:{top:p.top,left:p.left},children:a.map(b=>d.jsx("button",{onClick:()=>{i(b.shell),u(!1)},className:"flex w-full items-center rounded-sm px-2 py-1.5 text-xs hover:bg-accent hover:text-accent-foreground transition-colors",children:b.label},b.shell))})]})}const h4=Mn(),f1={gateway:"#22c55e",device:"#3b82f6",mesh:"#a855f7",host:"#6b7280"},dV={gateway:28,device:20,mesh:20,host:16};function Zht(e){if(e.length===0)return e;const r=[{type:"device",radius:150},{type:"mesh",radius:235},{type:"host",radius:325}],n=e.map(i=>i.data.type==="gateway"?{...i,x:0,y:0,fx:0,fy:0}:{...i});for(const{type:i,radius:s}of r){const o=n.filter(l=>l.data.type===i),a=o.length;a!==0&&o.forEach((l,u)=>{const c=-Math.PI/2+Math.PI*2/a*u;l.x=Math.cos(c)*s,l.y=Math.sin(c)*s})}return n}const Jht="M0 3.449L9.75 2.1V11.551H0zm10.949-1.564L24 0v11.551H10.949zM0 12.449h9.75v9.451L0 20.551zm10.949-.898H24V24l-13.051-1.869z";function Pb(e,r,n="0 0 24 24"){const i=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${n}" fill="${r}"><path d="${e}"/></svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(i)}`}function Lb(e){const r=new Image;return r.src=e,r}const Ok={windows:Lb(Pb(Jht,"#ffffff")),macos:Lb(Pb(fU.path,"#ffffff")),linux:Lb(Pb(Tct.path,"#ffffff")),android:Lb(Pb(jct.path,"#ffffff")),ios:Lb(Pb(fU.path,"#ffffff"))};function Qht(e){if(!e)return null;const r=e.toLowerCase();return r.includes("windows")?"windows":r.includes("macos")||r.includes("mac os")||r.includes("darwin")?"macos":r.includes("android")?"android":r.includes("ios")||r.includes("iphone")||r.includes("ipad")?"ios":r.includes("linux")||r.includes("ubuntu")||r.includes("debian")||r.includes("fedora")||r.includes("arch")||r.includes("centos")||r.includes("rhel")||r.includes("mint")||r.includes("manjaro")||r.includes("suse")||r.includes("alpine")?"linux":null}function eft(e){if("platform"in e&&typeof e.platform=="string"&&Ok[e.platform])return Ok[e.platform];if("osVersion"in e){const r=Qht(e.osVersion);if(r&&Ok[r])return Ok[r]}return null}function tft({node:e,onClose:r,onDeploy:n}){const i=e?e.type==="gateway"?ro:e.type==="device"?"platform"in e&&(e.platform==="android"||e.platform==="ios")?L4:Ea:e.type==="mesh"?Ci:"isRouter"in e&&e.isRouter?S1:Ea:Ea,s=e?f1[e.type]??"#6b7280":"#6b7280",o=e&&"sshReachable"in e&&e.sshReachable&&"agentStatus"in e&&e.agentStatus!=="running"&&"ip"in e;return d.jsx("div",{className:qe("absolute right-0 top-0 bottom-0 w-72 bg-background border-l z-10 flex flex-col transition-transform duration-200 ease-in-out",e?"translate-x-0":"translate-x-full"),children:e&&d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b shrink-0",children:[d.jsx("div",{className:"h-8 w-8 rounded-lg flex items-center justify-center shrink-0",style:{backgroundColor:`${s}22`,color:s},children:d.jsx(i,{className:"h-4 w-4"})}),d.jsxs("div",{className:"min-w-0 flex-1",children:[d.jsx("div",{className:"truncate text-sm font-medium",children:e.name}),d.jsx("div",{className:"text-xs text-muted-foreground capitalize",children:"isRouter"in e&&e.isRouter?"router":e.type})]}),d.jsx(ke,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:r,children:d.jsx(ti,{className:"h-3.5 w-3.5"})})]}),d.jsxs("div",{className:"flex-1 overflow-y-auto px-4 py-3 space-y-3 text-sm",children:[d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("span",{className:`h-2.5 w-2.5 rounded-full ${e.online?"bg-green-500":"bg-red-500"}`}),d.jsx("span",{children:e.online?"Online":"Offline"})]}),"platform"in e&&e.platform&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"Platform"}),d.jsx("span",{className:"flex items-center gap-1.5 capitalize",children:e.platform})]}),"ip"in e&&e.ip&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"IP Address"}),d.jsx("code",{className:"text-xs bg-muted px-2 py-0.5 rounded",children:e.ip})]}),"isRouter"in e&&e.isRouter&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"Role"}),d.jsx(tn,{variant:"secondary",className:"text-2xs",children:"Router"})]}),"version"in e&&e.version&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"Version"}),d.jsxs(tn,{variant:"secondary",className:"font-mono text-2xs",children:["v",e.version]})]}),"osVersion"in e&&e.osVersion&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"OS"}),d.jsx("span",{className:"text-xs",children:e.osVersion})]}),"mac"in e&&e.mac&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"MAC Address"}),d.jsx("code",{className:"text-xs bg-muted px-2 py-0.5 rounded",children:e.mac})]}),"providers"in e&&e.providers.length>0&&d.jsxs("div",{children:[d.jsx("span",{className:"text-muted-foreground block mb-1.5",children:"Providers"}),d.jsx("div",{className:"flex flex-wrap gap-1",children:e.providers.map(a=>d.jsxs(tn,{variant:"outline",className:"text-2xs",children:[d.jsx(Xo,{className:"h-2.5 w-2.5 mr-1"}),a]},a))})]}),"openPorts"in e&&e.openPorts.length>0&&d.jsxs("div",{children:[d.jsx("span",{className:"text-muted-foreground block mb-1.5",children:"Open Ports"}),d.jsx("div",{className:"flex flex-wrap gap-1",children:e.openPorts.map(a=>d.jsx(tn,{variant:"outline",className:"text-2xs font-mono",children:a},a))})]}),"sshReachable"in e&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"SSH"}),d.jsxs("span",{className:"flex items-center gap-1.5",children:[d.jsx(P4,{className:"h-3 w-3"}),e.sshReachable?"Reachable":"Not reachable"]})]}),"agentStatus"in e&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"Agent"}),d.jsx(tn,{variant:e.agentStatus==="running"?"default":"secondary",className:"text-2xs",children:e.agentStatus})]}),"registeredAt"in e&&e.registeredAt&&d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("span",{className:"text-muted-foreground",children:"Connected"}),d.jsx("span",{className:"text-xs",children:new Date(e.registeredAt).toLocaleString()})]}),"agentStatus"in e&&e.agentStatus==="running"&&"ip"in e&&d.jsx(ke,{size:"sm",variant:"outline",className:"w-full mt-2",asChild:!0,children:d.jsxs("a",{href:`http://${e.ip}:8000`,target:"_blank",rel:"noopener noreferrer",children:[d.jsx(Ci,{className:"h-3.5 w-3.5 mr-1.5"}),"Open Dashboard"]})}),o&&n&&d.jsxs(ke,{size:"sm",variant:"default",className:"w-full mt-2",onClick:()=>{n(e.ip),r()},children:[d.jsx(_8,{className:"h-3.5 w-3.5 mr-1.5"}),"Deploy Node"]})]})]})})}function rft({ip:e,token:r,sessionId:n,onClose:i}){const[s,o]=y.useState([]),[a,l]=y.useState("ready"),[u,c]=y.useState(""),[h,p]=y.useState(null),[g,v]=y.useState(!1),b=y.useRef(null);return y.useEffect(()=>{b.current&&(b.current.scrollTop=b.current.scrollHeight)},[s]),y.useEffect(()=>{if(!e||!g)return;o([]),l("starting");const _=new AbortController;return(async()=>{try{const w={"Content-Type":"application/json"};r&&(w.Authorization=`Bearer ${r}`);const C=await fetch(`${h4}/api/terminals`,{method:"POST",headers:w,body:JSON.stringify({sessionId:n}),signal:_.signal});if(!C.ok){o(A=>[...A,`Error: ${C.statusText}`]),l("error");return}const j=await C.json();p(j.id);const T=await fetch(`${h4}/api/network/deploy`,{method:"POST",headers:w,body:JSON.stringify({ip:e,username:u||"root",terminalId:j.id,sessionId:n}),signal:_.signal});if(!T.ok){const A=await T.json().catch(()=>null);o(E=>[...E,`Error: ${(A==null?void 0:A.error)??T.statusText}`]),l("error");return}await T.json().catch(()=>null),o([`Deploy started for ${u||"root"}@${e}.`,"Continue here in the embedded terminal below.","SSH and sudo prompts will appear in this side panel."]),l("running")}catch(w){_.signal.aborted||(o(C=>[...C,`Error: ${w instanceof Error?w.message:"Connection failed"}`]),l("error"))}})(),()=>_.abort()},[e,n,g,r,u]),e?d.jsxs("div",{className:"absolute inset-0 z-20 bg-background flex flex-col",children:[d.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 border-b shrink-0",children:[d.jsx(_8,{className:"h-4 w-4 text-primary"}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsxs("div",{className:"text-sm font-medium truncate",children:["Deploy to ",e]}),d.jsxs("div",{className:"text-2xs text-muted-foreground",children:[a==="ready"&&"Ready",a==="starting"&&"Preparing terminal...",a==="running"&&"Interactive session ready",a==="error"&&"Failed"]})]}),d.jsx(ke,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:i,children:d.jsx(ti,{className:"h-3.5 w-3.5"})})]}),g?d.jsxs(d.Fragment,{children:[d.jsxs("div",{ref:b,className:"shrink-0 overflow-y-auto border-b p-3 font-mono text-xs leading-5 space-y-0.5 max-h-32",children:[s.map((_,k)=>d.jsx("div",{className:qe(_.startsWith("✓")?"text-green-500":_.startsWith("✗")?"text-red-500":_.startsWith("[")?"text-blue-400":"text-muted-foreground"),children:_},k)),a==="starting"&&d.jsx("div",{className:"text-muted-foreground animate-pulse",children:"Preparing terminal..."})]}),h&&a==="running"&&d.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[d.jsxs("div",{className:"flex items-center justify-between border-b px-3 py-2 text-2xs text-muted-foreground",children:[d.jsx("span",{children:"Interactive deploy session"}),d.jsxs("span",{className:"truncate",children:["Terminal: ",h]})]}),d.jsx(d4,{terminalId:h,className:"flex-1 min-h-0",token:r})]}),a==="error"&&d.jsx("div",{className:"p-3 border-t shrink-0",children:d.jsx(ke,{size:"sm",variant:"outline",className:"w-full",onClick:()=>{v(!1),o([]),l("ready"),p(null)},children:"Try Again"})})]}):d.jsxs("div",{className:"flex-1 flex flex-col gap-3 p-4",children:[d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{className:"text-xs text-muted-foreground",children:"SSH Username"}),d.jsx("input",{type:"text",value:u,onChange:_=>c(_.target.value),placeholder:"root",className:"w-full px-3 py-2 text-sm rounded-md border bg-background",onKeyDown:_=>_.key==="Enter"&&v(!0)})]}),d.jsx("div",{className:"text-2xs text-muted-foreground",children:"Starts a real terminal inside this side panel. If SSH or sudo needs a password, it will prompt here directly."}),d.jsxs(ke,{className:"w-full",onClick:()=>v(!0),children:[d.jsx(_8,{className:"h-3.5 w-3.5 mr-1.5"}),"Deploy"]})]})]}):null}function nft({token:e,sessionId:r}){const n=y.useRef(null),i=y.useRef(void 0),[s,o]=y.useState({width:0,height:0}),[a,l]=y.useState(null),[u,c]=y.useState(!1),[h,p]=y.useState(null),[g,v]=y.useState(null),[b,_]=y.useState(null),[k,w]=y.useState(null),C=y.useCallback(()=>{const U={};return e&&(U.Authorization=`Bearer ${e}`),U},[e]),j=y.useRef(""),T=y.useCallback(async()=>{try{const U=await fetch(`${h4}/api/network/topology`,{headers:C()});if(U.ok){const I=await U.text();I!==j.current&&(j.current=I,l(JSON.parse(I))),v(null)}}catch(U){v(U instanceof Error?U.message:"Failed to fetch topology")}},[C]),A=y.useCallback(async()=>{c(!0),v(null);try{const U=await fetch(`${h4}/api/network/scan`,{method:"POST",headers:{...C(),"Content-Type":"application/json"},body:JSON.stringify({deep:!0})});if(!U.ok)throw new Error(`Scan failed: ${U.status}`);await T()}catch(U){v(U instanceof Error?U.message:"Scan failed")}finally{c(!1)}},[C,T]);y.useEffect(()=>{T();let U=null;const I=()=>{U||(U=setInterval(()=>void T(),6e4))},K=()=>{U&&(clearInterval(U),U=null)},R=()=>{document.hidden?K():I()};return document.addEventListener("visibilitychange",R),document.hidden||I(),()=>{K(),document.removeEventListener("visibilitychange",R)}},[T]),y.useEffect(()=>{const U=n.current;if(!U)return;const I=new ResizeObserver(([K])=>{K&&o({width:K.contentRect.width,height:K.contentRect.height})});return I.observe(U),()=>I.disconnect()},[]);const E=y.useMemo(()=>{if(!a)return{nodes:[],links:[]};const U=[],I=[];U.push({id:a.gateway.id,data:a.gateway});for(const K of a.devices)U.push({id:K.id,data:K}),I.push({source:K.id,target:"gateway",type:"connected"});for(const K of a.meshNodes)U.push({id:K.id,data:K}),I.push({source:K.id,target:"gateway",type:"connected"});for(const K of a.hosts)K.ip!==a.gateway.ip&&(U.push({id:K.id,data:K}),I.push({source:K.id,target:"gateway",type:"scanned"}));return{nodes:Zht(U),links:I}},[a]),M=y.useRef(!1);y.useEffect(()=>{M.current||E.nodes.length===0||(M.current=!0,requestAnimationFrame(()=>{const U=i.current;if(!U)return;const I=U.d3Force("charge");I&&typeof I.strength=="function"&&I.strength(-200);const K=U.d3Force("link");K&&typeof K.distance=="function"&&K.distance(80),U.zoom(3.5,0)}))},[E]);const P=y.useCallback((U,I,K)=>{const{data:R}=U,B=U.x??0,L=U.y??0,z=dV[R.type]??8,W=f1[R.type]??"#6b7280",Y=b===U.id,F=(h==null?void 0:h.id)===R.id;R.type==="gateway"&&(I.beginPath(),I.arc(B,L,z+4,0,2*Math.PI),I.fillStyle=`${W}33`,I.fill()),R.type==="host"&&"sshReachable"in R&&R.sshReachable&&(I.beginPath(),I.arc(B,L,z+3,0,2*Math.PI),I.strokeStyle="#f59e0b55",I.lineWidth=1.5/K,I.stroke()),(Y||F)&&(I.beginPath(),I.arc(B,L,z+2.5,0,2*Math.PI),I.strokeStyle=W,I.lineWidth=1.5/K,I.stroke()),I.beginPath(),I.arc(B,L,z,0,2*Math.PI),I.fillStyle=W,I.fill(),R.online&&(I.beginPath(),I.arc(B+z*.65,L-z*.65,2.5,0,2*Math.PI),I.fillStyle="#22c55e",I.fill(),I.strokeStyle="#0a0a0a",I.lineWidth=.5,I.stroke());const q=eft(R);if(q!=null&&q.complete&&q.naturalWidth>0){const ne=z*1.1;I.drawImage(q,B-ne/2,L-ne/2,ne,ne)}const J=Math.max(3.5,10/K);I.font=`${J}px -apple-system, BlinkMacSystemFont, sans-serif`,I.textAlign="center",I.textBaseline="top",I.fillStyle=Y?"#ffffff":"#a1a1aa";const V=R.name.length>20?R.name.slice(0,18)+"…":R.name;I.fillText(V,B,L+z+3),R.type==="gateway"?(I.font=`bold ${Math.max(3,8/K)}px -apple-system, BlinkMacSystemFont, sans-serif`,I.fillStyle="#22c55e",I.fillText("GATEWAY",B,L+z+3+J+2)):R.type==="host"&&"isRouter"in R&&R.isRouter&&(I.font=`bold ${Math.max(3,8/K)}px -apple-system, BlinkMacSystemFont, sans-serif`,I.fillStyle="#f59e0b",I.fillText("ROUTER",B,L+z+3+J+2));const ee="providers"in R&&Array.isArray(R.providers)?R.providers:[];if(ee.length>0){const ne=Math.max(2.5,7/K);I.font=`${ne}px -apple-system, BlinkMacSystemFont, sans-serif`,I.fillStyle="#a855f7";const de=R.type==="gateway"?J*2+6:J+5;I.fillText(ee.join(" · "),B,L+z+3+de)}if(R.type==="host"&&"openPorts"in R&&R.openPorts.length>0){const ne=R.openPorts.length,de=Math.max(2.5,7/K);I.font=`bold ${de}px -apple-system, BlinkMacSystemFont, sans-serif`,I.fillStyle="#3b82f6",I.textAlign="center",I.textBaseline="middle";const fe=B-z*.65,te=L-z*.65;I.beginPath(),I.arc(fe,te,3.5,0,2*Math.PI),I.fillStyle="#3b82f6",I.fill(),I.fillStyle="#ffffff",I.fillText(String(ne),fe,te)}},[b,h]),H=y.useCallback((U,I)=>{const K=U.source,R=U.target;(K==null?void 0:K.x)==null||(R==null?void 0:R.x)==null||(I.beginPath(),I.moveTo(K.x,K.y),I.lineTo(R.x,R.y),U.type==="connected"?(I.strokeStyle="#3b82f644",I.lineWidth=1.5,I.setLineDash([])):(I.strokeStyle="#6b728033",I.lineWidth=.5,I.setLineDash([4,4])),I.stroke(),I.setLineDash([]))},[]),$=a?1+a.devices.length+a.meshNodes.length+a.hosts.length:0;return d.jsxs("div",{className:"h-full flex flex-col",children:[d.jsxs("div",{className:"flex items-center justify-between gap-2 border-b px-4 py-3 shrink-0",children:[d.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[d.jsx(S1,{className:"h-4 w-4 text-primary"}),d.jsx("h2",{className:"text-sm font-semibold",children:"Network"}),$>0&&d.jsxs(tn,{variant:"secondary",className:"w-[4.75rem] justify-center px-1 text-2xs tabular-nums",children:[$," ",$===1?"node":"nodes"]}),(a==null?void 0:a.scannedAt)&&d.jsxs("span",{className:"text-2xs text-muted-foreground hidden sm:inline",children:["Last scan: ",new Date(a.scannedAt).toLocaleTimeString()]})]}),d.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[d.jsxs(ke,{size:"sm",variant:"outline",className:"h-7 px-2 text-xs sm:px-2.5",onClick:()=>void T(),children:[d.jsx(ja,{className:"h-3 w-3 sm:mr-1"}),d.jsx("span",{className:"hidden sm:inline",children:"Refresh"})]}),d.jsx(ke,{size:"sm",variant:"default",className:"h-7 px-2 text-xs sm:px-2.5",onClick:()=>void A(),disabled:u,children:u?d.jsxs(d.Fragment,{children:[d.jsx(ir,{className:"h-3 w-3 animate-spin sm:mr-1"}),d.jsx("span",{className:"hidden sm:inline",children:"Scanning..."})]}):d.jsxs(d.Fragment,{children:[d.jsx(fc,{className:"h-3 w-3 sm:mr-1"}),d.jsx("span",{className:"hidden sm:inline",children:a!=null&&a.scannedAt?"Rescan Network":"Discover Devices"})]})})]})]}),g&&d.jsxs("div",{className:"flex items-center gap-2 text-sm text-red-500 bg-red-500/10 px-4 py-2",children:[d.jsx(ti,{className:"h-3.5 w-3.5 shrink-0"}),g]}),d.jsxs("div",{className:"flex items-center gap-4 px-4 py-2 border-b text-2xs text-muted-foreground shrink-0 flex-wrap",children:[d.jsxs("span",{className:"flex items-center gap-1.5",children:[d.jsx("span",{className:"h-2.5 w-2.5 rounded-full",style:{backgroundColor:f1.gateway}}),"Gateway"]}),d.jsxs("span",{className:"flex items-center gap-1.5",children:[d.jsx("span",{className:"h-2.5 w-2.5 rounded-full",style:{backgroundColor:f1.device}}),"Connected Device"]}),d.jsxs("span",{className:"flex items-center gap-1.5",children:[d.jsx("span",{className:"h-2.5 w-2.5 rounded-full",style:{backgroundColor:f1.mesh}}),"Mesh Node"]}),d.jsxs("span",{className:"flex items-center gap-1.5",children:[d.jsx("span",{className:"h-2.5 w-2.5 rounded-full",style:{backgroundColor:f1.host}}),"Network Host"]}),d.jsxs("span",{className:"flex items-center gap-1.5",children:[d.jsx("span",{className:"h-2.5 w-2.5 rounded-full border border-amber-500/50",style:{backgroundColor:"transparent"}}),"SSH Available"]})]}),d.jsxs("div",{ref:n,className:"flex-1 min-h-0 relative bg-background overflow-hidden",children:[E.nodes.length>0&&s.width>0&&s.height>0?d.jsx(dP,{ref:i,width:s.width,height:s.height,graphData:E,nodeId:"id",nodeCanvasObject:P,nodePointerAreaPaint:(U,I,K)=>{const R=dV[U.data.type]??6;K.beginPath(),K.arc(U.x??0,U.y??0,R+4,0,2*Math.PI),K.fillStyle=I,K.fill()},linkCanvasObject:H,onNodeClick:U=>p(U.data),onNodeHover:U=>_((U==null?void 0:U.id)??null),cooldownTicks:80,d3VelocityDecay:.3,d3AlphaDecay:.02,minZoom:.65,maxZoom:8,enableNodeDrag:!0,enableZoomInteraction:!0,enablePanInteraction:!0,backgroundColor:"transparent"}):a?d.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-3",children:[d.jsx("div",{className:"h-12 w-12 rounded-full bg-muted flex items-center justify-center",children:d.jsx(Ea,{className:"h-6 w-6 text-muted-foreground"})}),d.jsx("div",{className:"text-sm font-medium",children:"No devices found"}),d.jsx("div",{className:"text-xs text-muted-foreground max-w-xs text-center",children:"Run a network scan to discover devices on your local network."}),d.jsxs(ke,{size:"sm",onClick:()=>void A(),className:"mt-2",children:[d.jsx(fc,{className:"h-3.5 w-3.5 mr-1.5"}),"Discover Devices"]})]}):d.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-3",children:[d.jsx(ir,{className:"h-8 w-8 animate-spin text-muted-foreground"}),d.jsx("span",{className:"text-sm text-muted-foreground",children:"Loading network topology..."})]}),d.jsx(tft,{node:h,onClose:()=>p(null),onDeploy:U=>w(U)}),d.jsx("div",{className:qe("absolute top-0 right-0 h-full w-80 border-l bg-background transition-transform duration-200 ease-in-out z-30",k?"translate-x-0":"translate-x-full"),children:d.jsx(rft,{ip:k,token:e,sessionId:r,onClose:()=>w(null)})})]})]})}function ift({platform:e,className:r}){switch(e){case"electron":return d.jsx(Ea,{className:r??"h-4 w-4"});case"react-native":return d.jsx(L4,{className:r??"h-4 w-4"});default:return d.jsx(Ci,{className:r??"h-4 w-4"})}}function hV({device:e,isLocal:r,isConnected:n,isLoading:i,onConnect:s}){const o=!r&&e.capabilities.includes("screen-share");return d.jsxs("div",{className:`flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm transition-colors
1237
1237
  ${n?"bg-green-500/10 border border-green-500/30":"bg-muted/50 hover:bg-muted/80"}`,children:[d.jsx("div",{className:`h-9 w-9 rounded-lg flex items-center justify-center shrink-0
1238
- ${n?"bg-green-500/15 text-green-500":r?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"}`,children:d.jsx(ift,{platform:e.platform,className:"h-4.5 w-4.5"})}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsxs("div",{className:"font-medium truncate text-sm",children:[e.name,r&&d.jsx("span",{className:"text-xs text-muted-foreground ml-1",children:"(you)"})]}),d.jsxs("div",{className:"text-xs text-muted-foreground mt-0.5",children:[e.platform,n&&d.jsx("span",{className:"text-green-500 ml-1",children:"· connected"})]})]}),o&&!n&&d.jsx(ke,{size:"sm",variant:"outline",className:"h-7 text-xs px-2.5 shrink-0",onClick:s,disabled:i,children:i?d.jsx(ir,{className:"h-3 w-3 animate-spin"}):d.jsxs(d.Fragment,{children:[d.jsx(oye,{className:"h-3 w-3 mr-1"}),"Connect"]})}),n&&d.jsxs(tn,{className:"bg-green-500/15 text-green-500 border-green-500/30 shrink-0 text-2xs",children:[d.jsx(iye,{className:"h-2.5 w-2.5 mr-0.5"})," live"]})]})}function sft({stream:e}){const r=y.useRef(null),n=y.useRef(null),[i,s]=y.useState(!1);y.useEffect(()=>{console.log(`[screen-share] RemoteScreen: stream=${!!e} tracks=${e==null?void 0:e.getTracks().map(a=>`${a.kind}:${a.readyState}`).join(",")} videoRef=${!!r.current}`),r.current&&e&&(r.current.srcObject=e)},[e]);const o=y.useCallback(()=>{const a=n.current;a&&(document.fullscreenElement?(document.exitFullscreen(),s(!1)):(a.requestFullscreen(),s(!0)))},[]);return y.useEffect(()=>{const a=()=>s(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",a),()=>document.removeEventListener("fullscreenchange",a)},[]),e?d.jsxs("div",{ref:n,className:"relative flex-1 group bg-black rounded-lg overflow-hidden",children:[d.jsx("video",{ref:r,autoPlay:!0,playsInline:!0,muted:!0,className:"w-full h-full object-contain bg-black"}),d.jsx("button",{onClick:o,className:"absolute top-2 right-2 p-1.5 rounded bg-black/60 text-white opacity-0 group-hover:opacity-100 transition-opacity",children:i?d.jsx(g9,{className:"h-3.5 w-3.5"}):d.jsx(m9,{className:"h-3.5 w-3.5"})})]}):d.jsx("div",{className:"flex-1 bg-black/20 rounded-lg flex items-center justify-center text-muted-foreground",children:d.jsxs("div",{className:"text-center",children:[d.jsx(U0e,{className:"h-10 w-10 mx-auto mb-3 opacity-40"}),d.jsx("p",{className:"text-sm font-medium",children:"Waiting for remote screen…"}),d.jsx("p",{className:"text-xs mt-1 opacity-60",children:"The remote device is preparing to share"})]})})}function oft({screenShare:e}){var o;const r=e.session,n=e.isViewer||e.isHost;console.log(`[screen-share] Panel render: isHost=${e.isHost} isViewer=${e.isViewer} isConnected=${n} remoteStream=${!!e.remoteStream} localStream=${!!e.localStream}`);const i=e.devices.filter(a=>a.id!==e.localDeviceId),s=e.devices.find(a=>a.id===e.localDeviceId);return d.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[e.pendingShareRequest&&!n&&d.jsx("div",{className:"p-3 border-b bg-amber-500/5",children:d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsx("div",{className:"h-9 w-9 rounded-lg bg-amber-500/15 text-amber-500 flex items-center justify-center shrink-0 mt-0.5",children:d.jsx(Q$,{className:"h-4.5 w-4.5"})}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("p",{className:"text-sm font-medium",children:"Screen share requested"}),d.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"A remote device wants to view your screen."}),d.jsxs("div",{className:"flex gap-2 mt-2",children:[d.jsxs(ke,{size:"sm",className:"h-7 text-xs px-3",onClick:()=>e.acceptPendingShare(),children:[d.jsx(Q$,{className:"h-3 w-3 mr-1"}),"Share Screen"]}),d.jsx(ke,{size:"sm",variant:"ghost",className:"h-7 text-xs px-2 text-muted-foreground",onClick:()=>e.rejectPendingShare(),children:"Decline"})]})]})]})}),n?d.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[d.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b bg-muted/20 shrink-0",children:[d.jsxs(tn,{className:"bg-green-500/15 text-green-500 border-green-500/30 text-2xs",children:[d.jsx(S1,{className:"h-2.5 w-2.5 mr-1"})," Live"]}),d.jsx("span",{className:"text-xs text-muted-foreground truncate flex-1",children:e.connectedDeviceId?((o=e.devices.find(a=>a.id===e.connectedDeviceId))==null?void 0:o.name)??e.connectedDeviceId:"Connected"}),r&&d.jsxs("span",{className:"text-2xs text-muted-foreground",children:[r.transport.routeMode.toUpperCase()," · ",r.transport.avgLatencyMs,"ms"]}),d.jsxs(ke,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2 text-destructive hover:text-destructive",onClick:()=>e.disconnect(),children:[d.jsx(ti,{className:"h-3 w-3 mr-1"}),"Disconnect"]})]}),e.error&&d.jsx("div",{className:"mx-2 p-2 rounded-md bg-red-500/10 text-red-500 text-xs border border-red-500/20",children:e.error}),e.isHost?d.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:d.jsxs("div",{className:"text-center",children:[d.jsx(Ig,{className:"h-10 w-10 mx-auto mb-3 opacity-40"}),d.jsx("p",{className:"text-sm font-medium",children:"Sharing your screen"}),d.jsx("p",{className:"text-xs mt-1 opacity-60",children:"A remote device is viewing this screen"}),r&&d.jsxs("p",{className:"text-xs mt-2 opacity-50",children:[d.jsx(S8,{className:"h-3 w-3 inline mr-0.5"}),r.viewers.length," viewer",r.viewers.length!==1?"s":""]})]})}):d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"flex-1 min-h-0 p-2",children:d.jsx(sft,{stream:e.remoteStream})}),r&&d.jsxs("div",{className:"flex items-center gap-3 px-3 py-1.5 border-t text-2xs text-muted-foreground shrink-0",children:[d.jsxs("span",{children:["Session ",r.id.slice(0,8)]}),d.jsx("span",{children:"·"}),d.jsxs("span",{children:["ICE: ",r.transport.iceConnectionState]}),d.jsx("span",{children:"·"}),d.jsxs("span",{children:[d.jsx(S8,{className:"h-2.5 w-2.5 inline mr-0.5"}),r.viewers.length," viewer",r.viewers.length!==1?"s":""]})]})]})]}):d.jsxs("div",{className:"flex flex-col gap-3 p-3 overflow-y-auto",children:[e.error&&d.jsx("div",{className:"p-2.5 rounded-md bg-red-500/10 text-red-500 text-xs border border-red-500/20",children:e.error}),d.jsxs("div",{className:"space-y-1.5",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("h3",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Remote Devices"}),d.jsx(ke,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>e.refreshState(),children:d.jsx(ja,{className:"h-3 w-3"})})]}),i.length===0?d.jsxs("div",{className:"py-6 text-center",children:[d.jsx(Ig,{className:"h-8 w-8 mx-auto mb-2 text-muted-foreground/40"}),d.jsx("p",{className:"text-xs text-muted-foreground font-medium",children:"No remote devices found"}),d.jsx("p",{className:"text-xs text-muted-foreground/60 mt-1 max-w-[200px] mx-auto",children:"Open Jait on another device (desktop app or mobile) to connect to it"})]}):d.jsx("div",{className:"space-y-1.5",children:i.map(a=>d.jsx(hV,{device:a,isLocal:!1,isConnected:!1,isLoading:e.loading&&e.connectedDeviceId===a.id,onConnect:()=>e.requestRemoteShare(a.id)},a.id))})]}),s&&d.jsxs("div",{className:"space-y-1.5",children:[d.jsx("h3",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"This Device"}),d.jsx(hV,{device:s,isLocal:!0,isConnected:!1,isLoading:!1,onConnect:()=>{}})]}),d.jsxs("div",{className:"px-2 py-2 rounded-md bg-muted/30 text-xs text-muted-foreground",children:[d.jsx("strong",{children:"Tip:"})," Ask your agent to connect to a device — e.g. “Show me my desktop screen”"]})]})]})}function wo(){return typeof window<"u"&&window.jaitDesktop?"electron":typeof window<"u"&&"Capacitor"in window?"capacitor":"web"}let Ju=null;function T7(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}async function aft(){var o;if(Ju)return Ju;const e=wo(),r=`jait-device-id-${e}`,n="deviceId";if(e==="electron"&&((o=window.jaitDesktop)!=null&&o.getSetting)){const a=window.jaitDesktop,l=await a.getSetting(n,null);if(l)return Ju=l,localStorage.setItem(r,l),l;const u=localStorage.getItem(r);if(u)return Ju=u,await a.setSetting(n,u),u;const c=T7(e);return Ju=c,localStorage.setItem(r,c),await a.setSetting(n,c),c}const i=localStorage.getItem(r);if(i)return Ju=i,i;const s=T7(e);return Ju=s,localStorage.setItem(r,s),s}function wP(){if(Ju)return Ju;const e=wo(),r=`jait-device-id-${e}`,n=localStorage.getItem(r);if(n)return Ju=n,n;const i=T7(e);return Ju=i,localStorage.setItem(r,i),i}const $b=Mn(),lft=P0(),zce="jait-screen-share-auto-approve";function Fce(){try{const e=localStorage.getItem(zce);return e?new Set(JSON.parse(e)):new Set}catch{return new Set}}function cft(e){const r=Fce();r.add(e),localStorage.setItem(zce,JSON.stringify([...r]))}function uft(){const e=wo(),r=navigator.userAgent;return e==="electron"?`Jait Desktop (${navigator.platform})`:e==="capacitor"?"Jait Mobile":r.includes("Chrome")?`Chrome (${navigator.platform})`:r.includes("Firefox")?`Firefox (${navigator.platform})`:r.includes("Safari")?`Safari (${navigator.platform})`:`Browser (${navigator.platform})`}const dft=[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"}];function hft(e={}){const{token:r}=e,[n,i]=y.useState({session:null,devices:[],localDeviceId:null,isHost:!1,isViewer:!1,isActive:!1,loading:!1,error:null,connectedDeviceId:null,pendingShareRequest:null}),s=y.useRef(null),o=y.useRef(null),a=y.useRef(null),l=y.useRef(null),u=y.useRef(wP()),c=y.useRef(null),h=y.useCallback(()=>{const T={"Content-Type":"application/json"};return r&&(T.Authorization=`Bearer ${r}`),T},[r]),p=y.useCallback(async()=>{const T=u.current,A=wo(),E=uft(),M=["screen-view"];A==="electron"&&M.push("screen-share","remote-input"),A==="web"&&M.push("screen-share");try{(await fetch(`${$b}/api/screen-share/devices/register`,{method:"POST",headers:h(),body:JSON.stringify({id:T,name:E,platform:A,capabilities:M})})).ok&&i(H=>({...H,localDeviceId:T}))}catch(P){console.error("Failed to register screen-share device:",P)}},[h]),g=y.useCallback(async()=>{try{const T=await fetch(`${$b}/api/screen-share/state`,{headers:h()});if(!T.ok)return;const A=await T.json();i(E=>{var M;return{...E,session:A.activeSession??E.session,devices:A.devices,isActive:((M=A.activeSession)==null?void 0:M.status)==="sharing"}})}catch(T){console.error("Failed to refresh screen-share state:",T)}},[h]),v=y.useCallback((T,A,E)=>{var P;console.log(`[screen-share] setupPeerConnection: isHost=${A} session=${E.slice(0,8)} prevPC=${!!s.current} stream=${!!T} device=${u.current}`),(P=s.current)==null||P.close();const M=new RTCPeerConnection({iceServers:dft});if(s.current=M,A&&T){const H=T.getTracks();console.log(`[screen-share] Adding ${H.length} track(s):`,H.map($=>`${$.kind}:${$.label}:${$.readyState}`)),H.forEach($=>M.addTrack($,T))}if(M.ontrack=H=>{const[$]=H.streams;console.log(`[screen-share] ontrack: streams=${H.streams.length} tracks=${$==null?void 0:$.getTracks().map(U=>`${U.kind}:${U.readyState}`).join(",")}`),$&&(a.current=$,console.log("[screen-share] remoteStreamRef set, triggering re-render"),i(U=>({...U})))},M.onicecandidate=H=>{var $;H.candidate&&(($=l.current)==null?void 0:$.readyState)===WebSocket.OPEN&&l.current.send(JSON.stringify({type:"screen-share:ice-candidate",payload:{sessionId:E,fromDeviceId:u.current,candidate:H.candidate.candidate,sdpMid:H.candidate.sdpMid,sdpMLineIndex:H.candidate.sdpMLineIndex}}))},M.oniceconnectionstatechange=()=>{console.log("[screen-share] ICE state:",M.iceConnectionState),(M.iceConnectionState==="disconnected"||M.iceConnectionState==="failed")&&i(H=>({...H,error:`Connection ${M.iceConnectionState}`}))},A&&M.createOffer().then(H=>{var $;M.setLocalDescription(H),console.log("[screen-share] Sending offer via WS"),($=l.current)==null||$.send(JSON.stringify({type:"screen-share:offer",payload:{sessionId:E,hostDeviceId:u.current,sdp:H.sdp}}))}),!A&&c.current){const H=c.current;c.current=null,console.log("[screen-share] Processing queued offer"),M.setRemoteDescription(new RTCSessionDescription({type:"offer",sdp:H.sdp})).then(()=>M.createAnswer()).then($=>{var U;M.setLocalDescription($),(U=l.current)==null||U.send(JSON.stringify({type:"screen-share:answer",payload:{sessionId:H.sessionId,viewerDeviceId:u.current,sdp:$.sdp}}))}).catch($=>console.error("[screen-share] Failed to process queued offer:",$))}},[]),b=y.useCallback(async T=>{var A,E;i(M=>({...M,loading:!0,error:null}));try{let M;if(!((A=navigator.mediaDevices)!=null&&A.getDisplayMedia))throw new Error("Screen sharing is not supported on this device. Use a desktop browser or the Electron app.");if(console.log("[screen-share] Requesting screen capture via getDisplayMedia..."),M=await navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:15,max:30}},audio:!1}),console.log("[screen-share] Screen capture obtained:",(E=M.getVideoTracks()[0])==null?void 0:E.label),o.current=M,!T){await p();const P=await fetch(`${$b}/api/screen-share/start`,{method:"POST",headers:h(),body:JSON.stringify({hostDeviceId:u.current})});if(!P.ok){const $=await P.json();throw new Error($.error)}const H=await P.json();T=H.session.id,i($=>({...$,session:H.session}))}i(P=>({...P,isHost:!0,isViewer:!1,isActive:!0,loading:!1})),console.log("[screen-share] Host capturing — setting up peer connection for session:",T),v(M,!0,T??"")}catch(M){console.error("[screen-share] Capture failed:",M),i(P=>({...P,loading:!1,isHost:!1,error:M instanceof Error?M.message:"Failed to start screen capture"}))}},[p,h,v]),_=y.useCallback(async T=>{i(A=>({...A,loading:!0,error:null,connectedDeviceId:T}));try{await p();const A=await fetch(`${$b}/api/screen-share/start`,{method:"POST",headers:h(),body:JSON.stringify({hostDeviceId:T,viewerDeviceIds:[u.current]})});if(!A.ok){const M=await A.json();throw new Error(M.error)}const{session:E}=await A.json();i(M=>({...M,session:E,isViewer:!0,isActive:!0,loading:!1})),console.log(`[screen-share] requestRemoteShare: HTTP done, session=${E.id.slice(0,8)} pcRef=${!!s.current}`),s.current?console.log("[screen-share] requestRemoteShare: PC already exists, skipping creation"):(console.log("[screen-share] requestRemoteShare: creating viewer PC (no WS-created PC yet)"),v(null,!1,E.id))}catch(A){i(E=>({...E,loading:!1,connectedDeviceId:null,error:A instanceof Error?A.message:"Failed to connect to remote device"}))}},[p,h,v]),k=y.useCallback(async()=>{var T,A;(T=o.current)==null||T.getTracks().forEach(E=>E.stop()),o.current=null,a.current=null,(A=s.current)==null||A.close(),s.current=null;try{await fetch(`${$b}/api/screen-share/stop`,{method:"POST",headers:h(),body:JSON.stringify({})})}catch{}i(E=>({...E,session:null,isHost:!1,isViewer:!1,isActive:!1,connectedDeviceId:null,pendingShareRequest:null}))},[h]),w=y.useCallback(()=>{const T=n.pendingShareRequest;T&&(i(A=>({...A,pendingShareRequest:null})),b(T.sessionId))},[n.pendingShareRequest,b]),C=y.useCallback(()=>{i(T=>({...T,pendingShareRequest:null}))},[]),j=y.useCallback(async()=>{if(!window.jaitDesktop)return[];try{return await window.jaitDesktop.getDesktopSources()}catch{return[]}},[]);return y.useEffect(()=>{if(!r||!window.jaitDesktop)return;let T=!0,A=null;const E=()=>{if(!T)return;const M=`${lft}${r?`?token=${r}`:""}`,P=new WebSocket(M);l.current=P,P.onopen=()=>{console.log("[screen-share] WS connected"),P.send(JSON.stringify({type:"subscribe",deviceId:u.current}))},P.onmessage=H=>{var $,U,I,K,R,B,L;try{const z=JSON.parse(H.data);switch(z.type.startsWith("screen-share:")&&console.log(`[screen-share] WS recv: ${z.type}`,JSON.stringify(z.payload).slice(0,300)),z.type){case"screen-share:state-update":{const W=z.payload;W.status==="idle"?(($=o.current)==null||$.getTracks().forEach(Y=>Y.stop()),o.current=null,a.current=null,(U=s.current)==null||U.close(),s.current=null,i(Y=>({...Y,session:null,isHost:!1,isViewer:!1,isActive:!1,connectedDeviceId:null,pendingShareRequest:null}))):i(Y=>({...Y,session:W,isActive:W.status==="sharing"}));break}case"screen-share:start-request":{const W=z.payload;if(console.log(`[screen-share] start-request: host=${W.hostDeviceId} local=${u.current} viewers=[${(I=W.viewerDeviceIds)==null?void 0:I.join(",")}] isHostMatch=${W.hostDeviceId===u.current} pcRef=${!!s.current}`),W.hostDeviceId===u.current){const Y=((K=W.viewerDeviceIds)==null?void 0:K[0])??"unknown",F=Fce();if(F.has(Y)||F.has("*")){console.log("[screen-share] Auto-approved share request from",Y),b(W.sessionId);break}wo()==="electron"&&((R=window.jaitDesktop)==null||R.notify({title:"Screen Share Request",body:"A remote device wants to view your screen."}).catch(()=>{}));const J=pi("Screen share requested",{description:"A remote device wants to view your screen.",duration:1/0,action:{label:"Always Allow",onClick:()=>{console.log("[screen-share] User accepted + enabled always-approve"),cft("*"),b(W.sessionId),pi.dismiss(J)}},cancel:{label:"Share Once",onClick:()=>{console.log("[screen-share] User accepted share request (once)"),b(W.sessionId),pi.dismiss(J)}}})}else if(!W.viewerDeviceIds||W.viewerDeviceIds.length===0||W.viewerDeviceIds.includes(u.current)){if(s.current){console.log("[screen-share] Viewer PC already set up, skipping duplicate start-request");break}o.current&&(o.current.getTracks().forEach(Y=>Y.stop()),o.current=null),console.log("[screen-share] Setting up as viewer for session:",W.sessionId,"host:",W.hostDeviceId),i(Y=>({...Y,isViewer:!0,isHost:!1,isActive:!0,connectedDeviceId:W.hostDeviceId})),v(null,!1,W.sessionId)}break}case"screen-share:offer":{const W=z.payload;if(W.hostDeviceId===u.current){console.log("[screen-share] Ignoring own offer (we are the host)");break}console.log(`[screen-share] Received offer from host=${W.hostDeviceId} pcRef=${!!s.current}`);const Y=s.current;Y?Y.setRemoteDescription(new RTCSessionDescription({type:"offer",sdp:W.sdp})).then(()=>Y.createAnswer()).then(F=>{var q;Y.setLocalDescription(F),console.log("[screen-share] Sending answer"),(q=l.current)==null||q.send(JSON.stringify({type:"screen-share:answer",payload:{sessionId:W.sessionId,viewerDeviceId:u.current,sdp:F.sdp}}))}).catch(F=>console.error("[screen-share] Offer handling failed:",F)):(console.log("[screen-share] PC not ready, queuing offer"),c.current=W);break}case"screen-share:answer":{const W=z.payload;if(W.viewerDeviceId===u.current){console.log("[screen-share] Ignoring own answer (we are the viewer)");break}console.log(`[screen-share] Received answer from viewer=${W.viewerDeviceId}`),(B=s.current)==null||B.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:W.sdp}));break}case"screen-share:ice-candidate":{const W=z.payload;if(W.fromDeviceId===u.current)break;console.log(`[screen-share] ICE candidate from=${W.fromDeviceId} pcRef=${!!s.current}`),(L=s.current)==null||L.addIceCandidate(new RTCIceCandidate({candidate:W.candidate,sdpMid:W.sdpMid,sdpMLineIndex:W.sdpMLineIndex}));break}}}catch{}},P.onclose=()=>{l.current=null,T&&(A=setTimeout(E,3e4))},P.onerror=()=>{}};return E(),()=>{var M;T=!1,A&&clearTimeout(A),(M=l.current)==null||M.close(),l.current=null}},[r]),y.useEffect(()=>{!r||!window.jaitDesktop||(p(),g())},[r,p,g]),y.useEffect(()=>{window.jaitDesktop&&(window.jaitDesktop.onScreenShareStart(()=>b()),window.jaitDesktop.onScreenShareStop(()=>k()))},[b,k]),{...n,requestRemoteShare:_,startHosting:b,disconnect:k,acceptPendingShare:w,rejectPendingShare:C,getDesktopSources:j,refreshState:g,localStream:o.current,remoteStream:a.current}}function fft(){return typeof window>"u"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}function SP(e){const{activeTheme:r}=EQ(),[n,i]=y.useState(fft);y.useEffect(()=>{if(typeof window>"u")return;const a=window.matchMedia("(prefers-color-scheme: dark)"),l=()=>i(a.matches);return l(),a.addEventListener("change",l),()=>a.removeEventListener("change",l)},[]);const s=(r==null?void 0:r.colorMode)??(e==="dark"||e==="system"&&n?"dark":"light"),o=(r==null?void 0:r.monacoThemeName)??(s==="dark"?"vs-dark":"vs");return y.useEffect(()=>{cRe({colorMode:s,monacoThemeName:o,theme:r})},[r,o,s]),{activeTheme:r,monacoThemeName:o,resolvedTheme:s}}function pft(e){const r=e==null?void 0:e.trim();return r?/^https?:\/\//i.test(r)?r:r.startsWith("/")?`${Mn()}${r}`:r:null}async function mft(e,r,n){const i=await fetch(`${Mn()}/api/workspace/write`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,content:r,surfaceId:n})});if(!i.ok){const s=await i.json().catch(()=>({}));throw new Error(s.message||`Failed to save file: ${i.statusText}`)}}function gft({detachedTabId:e}){const[r,n]=y.useState(()=>zF(e)),[i,s]=y.useState((r==null?void 0:r.tab.content)??""),[o,a]=y.useState(!1),[l,u]=y.useState(null),{monacoThemeName:c}=SP((r==null?void 0:r.theme)??"dark");y.useEffect(()=>{const v=()=>n(zF(e));return v(),window.addEventListener("storage",v),()=>window.removeEventListener("storage",v)},[e]),y.useEffect(()=>{r&&(document.title=r.title||r.tab.label||"Jait")},[r]),y.useEffect(()=>{s((r==null?void 0:r.tab.content)??"")},[r==null?void 0:r.tab.content]);const h=y.useMemo(()=>pft(r==null?void 0:r.tab.previewSrc),[r==null?void 0:r.tab.previewSrc]),p=y.useCallback(()=>{KKe(e),window.close()},[e]),g=y.useCallback(async()=>{if(!(!r||r.tab.type!=="file")){a(!0),u(null);try{await mft(r.tab.path,i,r.surfaceId??null)}catch(v){u(v instanceof Error?v.message:"Failed to save file")}finally{a(!1)}}},[i,r]);return r?d.jsxs("div",{className:"flex h-screen flex-col bg-muted/10 text-foreground",children:[d.jsxs("div",{className:"flex h-[35px] items-center gap-2 border-b bg-muted/30 px-3 shrink-0",children:[r.tab.type==="architecture"?d.jsx(RC,{className:"h-4 w-4 shrink-0"}):r.tab.type==="preview"?d.jsx(Ci,{className:"h-4 w-4 shrink-0"}):null,d.jsx("span",{className:"truncate text-sm font-medium",children:r.title}),d.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[r.tab.type==="file"&&d.jsxs(ke,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-xs",onClick:()=>{g()},disabled:o,children:[o?d.jsx(ir,{className:"mr-1 h-3 w-3 animate-spin"}):d.jsx(v9,{className:"mr-1 h-3 w-3"}),"Save"]}),r.tab.type==="preview"&&h&&d.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:"inline-flex",children:d.jsxs(ke,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-xs",children:[d.jsx(wm,{className:"mr-1 h-3 w-3"}),"Open"]})}),d.jsx(ke,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:p,children:d.jsx(ti,{className:"h-4 w-4"})})]})]}),l?d.jsx("div",{className:"border-b px-3 py-2 text-xs text-destructive",children:l}):null,d.jsx("div",{className:"min-h-0 flex-1 bg-background",children:r.tab.type==="diff"?d.jsx(w2,{className:"h-full",editorClassName:"h-full",original:r.tab.originalContent??"",modified:r.tab.modifiedContent??"",language:r.tab.language??"plaintext",renderSideBySide:!0,options:{minimap:{enabled:!1}}}):r.tab.type==="preview"?h?d.jsx("iframe",{src:h,title:r.title,className:"h-full w-full bg-white",sandbox:"allow-forms allow-modals allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"}):d.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Preview unavailable."}):r.tab.type==="architecture"?d.jsx(uO,{diagram:r.architectureDiagram??null,isGenerating:r.architectureGenerating,theme:r.theme}):r.tab.originalContent!=null?d.jsx(yoe,{path:r.tab.path,language:r.tab.language??"plaintext",value:i,originalContent:r.tab.originalContent,theme:c,onChange:v=>s(v??"")}):d.jsx(jj,{height:"100%",beforeMount:h0,theme:c,path:r.tab.path,language:r.tab.language??"plaintext",value:i,onChange:v=>s(v??""),options:{minimap:{enabled:!1},fontSize:13,automaticLayout:!0}})})]}):d.jsx("div",{className:"flex h-screen items-center justify-center bg-background text-sm text-muted-foreground",children:"Detached tab not found."})}const yft="jait:detached-terminal:";function kP(e){return`${yft}${e}`}function vft(e){localStorage.setItem(kP(e.id),JSON.stringify(e))}function fV(e){const r=localStorage.getItem(kP(e));if(!r)return null;try{return JSON.parse(r)}catch{return null}}function xft(e){localStorage.removeItem(kP(e))}function bft({detachedId:e}){const[r,n]=y.useState(()=>fV(e));SP((r==null?void 0:r.theme)??"dark"),y.useEffect(()=>{const s=()=>n(fV(e));return s(),window.addEventListener("storage",s),()=>window.removeEventListener("storage",s)},[e]),y.useEffect(()=>{r&&(document.title=r.label||"Terminal")},[r]);const i=y.useCallback(()=>{xft(e),window.close()},[e]);return r?d.jsxs("div",{className:"flex h-screen flex-col bg-background text-foreground",children:[d.jsxs("div",{className:"flex h-9 shrink-0 items-center justify-between border-b px-3",children:[d.jsx("span",{className:"truncate text-xs text-muted-foreground",children:r.label}),d.jsx("button",{onClick:i,className:"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors","aria-label":"Close",children:d.jsx(ti,{className:"h-4 w-4"})})]}),d.jsx(d4,{terminalId:r.terminalId,className:"flex-1",token:r.token,workspaceRoot:r.workspaceRoot})]}):d.jsx("div",{className:"flex h-screen items-center justify-center bg-background text-muted-foreground",children:"Terminal session not found."})}const r8=Mn();function _ft({platform:e}){switch(e){case"windows":case"macos":case"linux":return d.jsx(Ea,{className:"h-3.5 w-3.5"});case"android":case"ios":return d.jsx(L4,{className:"h-3.5 w-3.5"});default:return d.jsx(Ci,{className:"h-3.5 w-3.5"})}}function pV({open:e,onOpenChange:r,onSelect:n,gatewayOnly:i,initialPath:s,initialNodeId:o}){const[a,l]=y.useState(null),[u,c]=y.useState(null),[h,p]=y.useState([]),[g,v]=y.useState([]),[b,_]=y.useState(!1),[k,w]=y.useState(null),[C,j]=y.useState(""),[T,A]=y.useState(!1),[E,M]=y.useState([]),[P,H]=y.useState("gateway"),$=y.useCallback(Y=>{l(Y.path),c(Y.parent),p(Y.entries),j(Y.path)},[]),U=y.useCallback(async(Y,F)=>{const q=`${r8}/api/filesystem/browse?path=${encodeURIComponent(Y)}&nodeId=${encodeURIComponent(F)}`,J=await fetch(q);if(!J.ok){const V=await J.json().catch(()=>({message:"Failed to browse"}));throw new Error(V.message??"Failed to browse")}return await J.json()},[]),I=y.useCallback(async(Y,F)=>{try{_(!0),w(null),l(null),c(null),p([]);const q=`${r8}/api/filesystem/roots?nodeId=${encodeURIComponent(Y)}`,J=await fetch(q);if(!J.ok)throw new Error("Failed to load roots");const V=await J.json();if(v(V.roots),F)try{const ne=await U(F,Y);$(ne);return}catch{}const ee=V.roots.find(ne=>ne.name==="Home")??V.roots[0];if(ee){const ne=await U(ee.path,Y);$(ne)}}catch(q){w(q instanceof Error?q.message:"Failed to load")}finally{_(!1)}},[$,U]),K=y.useCallback(async(Y,F)=>{try{const q=await fetch(`${r8}/api/filesystem/nodes`);if(!q.ok)throw new Error("Failed to load nodes");const J=await q.json();M(J.nodes);const V=wo();let ee="gateway";if(Y&&J.nodes.some(ne=>ne.id===Y)&&(ee=Y),ee==="gateway"&&(V==="electron"||V==="capacitor")){const ne=wP(),de=J.nodes.find(fe=>fe.id===ne);de&&(ee=de.id)}H(ee),await I(ee,Y===ee?F:null)}catch(q){w(q instanceof Error?q.message:"Failed to load nodes")}},[I]);y.useEffect(()=>{if(e){if(i){H("gateway"),I("gateway",s);return}K(o,s)}},[e,i,o,s,K,I]);const R=y.useCallback(async(Y,F)=>{const q=F??P;try{_(!0),w(null);const J=await U(Y,q);$(J)}catch(J){w(J instanceof Error?J.message:"Failed to browse")}finally{_(!1)}},[$,U,P]),B=y.useCallback(Y=>{H(Y),I(Y)},[I]),L=y.useCallback(()=>{a&&(n(a,P),r(!1))},[a,P,n,r]),z=y.useCallback(()=>{C.trim()&&(R(C.trim()),A(!1))},[C,R]),W=h.filter(Y=>Y.type==="dir");return d.jsx(Yf,{open:e,onOpenChange:r,children:d.jsxs(Oh,{className:"max-w-md sm:max-w-lg p-0 gap-0 overflow-hidden",children:[d.jsx(Sh,{className:"px-4 pt-4 pb-2",children:d.jsxs(kh,{className:"flex items-center gap-2 text-base",children:[d.jsx(ph,{className:"h-4 w-4"}),"Open Workspace"]})}),!i&&E.length>1&&d.jsx("div",{className:"flex items-center gap-1 px-3 py-1.5 border-b bg-muted/20 overflow-x-auto",children:E.map(Y=>d.jsxs("button",{onClick:()=>B(Y.id),className:qe("flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs whitespace-nowrap transition-colors",P===Y.id?"bg-primary text-primary-foreground":"hover:bg-accent hover:text-accent-foreground text-muted-foreground"),children:[d.jsx(_ft,{platform:Y.platform}),d.jsx("span",{children:Y.name})]},Y.id))}),d.jsxs("div",{className:"flex items-center gap-1 px-3 py-1.5 border-b text-xs text-muted-foreground bg-muted/30",children:[g.filter(Y=>Y.name!=="Home").map(Y=>d.jsxs("button",{onClick:()=>void R(Y.path),className:"px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground flex items-center gap-1",title:Y.path,children:[d.jsx(m0e,{className:"h-3 w-3"}),d.jsx("span",{children:Y.name})]},Y.path)),d.jsx("button",{onClick:()=>{const Y=g.find(F=>F.name==="Home");Y&&R(Y.path)},className:"px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground flex items-center gap-1",title:"Home directory",children:d.jsx(GG,{className:"h-3 w-3"})}),d.jsx("div",{className:"h-3 w-px bg-border mx-1"}),u&&d.jsx("button",{onClick:()=>void R(u),className:"px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground flex items-center gap-1",title:"Go up",children:d.jsx(HG,{className:"h-3 w-3"})}),d.jsx("button",{onClick:()=>A(Y=>!Y),className:"ml-auto px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground text-2xs",children:T?"Browse":"Enter path"})]}),T&&d.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b bg-muted/20",children:[d.jsx("input",{type:"text",value:C,onChange:Y=>j(Y.target.value),onKeyDown:Y=>{Y.key==="Enter"&&z()},className:"flex-1 h-7 px-2 text-xs border rounded bg-background focus:outline-none focus:ring-1 focus:ring-ring",placeholder:"Enter absolute path...",autoFocus:!0}),d.jsx(ke,{size:"sm",variant:"secondary",className:"h-7 text-xs",onClick:z,children:"Go"})]}),d.jsx("div",{className:"px-3 py-1.5 text-xs font-mono text-muted-foreground truncate border-b",children:a??"..."}),d.jsx("div",{className:"overflow-y-auto min-h-[120px] max-h-[50vh]",children:d.jsxs("div",{className:"p-2",children:[b&&d.jsxs("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:[d.jsx(ir,{className:"h-4 w-4 animate-spin mr-2"}),"Loading..."]}),k&&d.jsx("div",{className:"text-destructive text-xs py-4 text-center",children:k}),!b&&!k&&W.length===0&&d.jsx("div",{className:"text-muted-foreground text-xs py-4 text-center",children:"No subdirectories"}),!b&&!k&&W.map(Y=>d.jsxs("button",{onClick:()=>void R(Y.path),className:qe("w-full flex items-center gap-2 px-2 py-1.5 rounded text-xs text-left","hover:bg-accent hover:text-accent-foreground transition-colors"),children:[d.jsx(f9,{className:"h-3.5 w-3.5 text-yellow-500 shrink-0"}),d.jsx("span",{className:"truncate",children:Y.name}),d.jsx(No,{className:"h-3 w-3 ml-auto text-muted-foreground shrink-0"})]},Y.path))]})}),d.jsxs(_v,{className:"px-4 py-3 border-t",children:[d.jsx(ke,{variant:"ghost",size:"sm",onClick:()=>r(!1),children:"Cancel"}),d.jsxs(ke,{size:"sm",onClick:L,disabled:!a,children:[d.jsx(ph,{className:"h-3.5 w-3.5 mr-1.5"}),"Open this folder"]})]})]})})}function wft({onRetry:e}){const[r,n]=y.useState(!1),i=()=>{n(!0),e(),setTimeout(()=>n(!1),3e3)};return d.jsx("div",{className:"flex h-screen w-full items-center justify-center bg-background text-foreground",children:d.jsxs("div",{className:"flex max-w-md flex-col items-center gap-6 px-6 text-center",children:[d.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-destructive/10",children:d.jsx(vye,{className:"h-10 w-10 text-destructive"})}),d.jsxs("div",{className:"space-y-2",children:[d.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Backend Unavailable"}),d.jsxs("p",{className:"text-sm text-muted-foreground",children:["Unable to connect to the Jait gateway at"," ",d.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 text-xs font-mono",children:Mn()})]}),d.jsx("p",{className:"text-sm text-muted-foreground",children:"Make sure the gateway is running and accessible, then try again."})]}),d.jsxs("button",{onClick:i,disabled:r,className:"inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow hover:bg-primary/90 transition-colors disabled:opacity-50",children:[d.jsx(ja,{className:`h-4 w-4 ${r?"animate-spin":""}`}),r?"Connecting…":"Retry Connection"]})]})})}function mV(e){return{id:e.id??`evt-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,source:e.source,title:e.title,detail:e.detail,createdAt:e.createdAt??new Date().toISOString()}}function gV(e){if(e.role!=="user")return null;const r=Array.isArray(e.displaySegments)&&e.displaySegments.length>0,n=e.content.trim(),i=typeof e.displayContent=="string"?e.displayContent.trim():"";return JSON.stringify({role:"user",content:n,displayContent:i,displaySegments:r?e.displaySegments:null})}function Sft(e,r){const n=new Map;for(const s of e){const o=gV(s);o&&n.set(o,(n.get(o)??0)+1)}const i=[];for(const s of r){if(!s.optimistic||s.role!=="user")continue;const o=gV(s);if(!o){i.push(s);continue}const a=n.get(o)??0;if(a>0){n.set(o,a-1);continue}i.push(s)}return i.length===0?e:[...e,...i]}const Gu=Mn(),kft=120,yV="Connection interrupted. Attempting to reconnect...";function n8(e){return e?{Authorization:`Bearer ${e}`}:{}}function vV(e){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function xV(e){if(!(e instanceof Error)||e.name==="AbortError")return!1;const r=e.message.toLowerCase();return r.includes("network error")||r.includes("failed to fetch")||r.includes("fetch failed")||r.includes("load failed")||r.includes("network connection was lost")||r.includes("the internet connection appears to be offline")}function bV(e){return!e.sessionId||e.isLoadingHistory?!1:e.isLoading}function _V(e){if(!(e!=null&&e.length))return;const r=e.flatMap(n=>n.type==="image"?[{name:n.name,mimeType:n.mimeType,data:n.data,preview:`data:${n.mimeType};base64,${n.data}`}]:[]);return r.length>0?r:void 0}function Cft(e,r,n,i){const[s,o]=y.useState({messages:[],isLoading:!1,isLoadingHistory:!1,promptCount:0,remainingPrompts:null,error:null,hitMaxRounds:!1}),[a,l]=y.useState(null),[u,c]=y.useState([]),[h,p]=y.useState([]),[g,v]=y.useState([]),[b,_]=y.useState(0),[k,w]=y.useState(null),[C,j]=y.useState(null),T=y.useRef(null),A=y.useRef(null),E=y.useRef(null),M=y.useRef(null),P=y.useRef(0),H=y.useRef(!1),$=y.useRef(!1),[U,I]=y.useState(0),K=y.useCallback(()=>{e&&(M.current===e&&T.current||($.current=!0,A.current=null,I(_e=>_e+1)))},[e]);y.useEffect(()=>{if(e===A.current)return;const _e=$.current;if($.current=!1,P.current+=1,A.current=e,E.current&&(E.current.abort(),E.current=null),!e){o({messages:[],isLoading:!1,isLoadingHistory:!1,promptCount:0,remainingPrompts:null,hitMaxRounds:!1,error:null}),c([]),p([]),v([]),w(null);return}let we=!1;o(St=>({...St,messages:_e?St.messages:[],isLoading:!1,isLoadingHistory:!0,error:null})),w(null);const Ke=new AbortController;return E.current=Ke,(async()=>{var St,vt;try{const Rt=await fetch(`${Gu}/api/sessions/${e}/stream?limit=${kft}`,{signal:Ke.signal,headers:n8(r)});if(Rt.status===401){n==null||n(),o(Qe=>({...Qe,isLoadingHistory:!1}));return}if(!Rt.ok||we)return;const Xt=(St=Rt.body)==null?void 0:St.getReader();if(!Xt)return;const Ot=new TextDecoder;let rr="",Ee=null;const Le=(Qe,Et)=>{const nt=Qe?[...Qe]:[],Yt=nt[nt.length-1];return(Yt==null?void 0:Yt.type)==="text"?nt[nt.length-1]={type:"text",content:Yt.content+Et}:nt.push({type:"text",content:Et}),nt},Ne=(Qe,Et)=>{const nt=Qe?[...Qe]:[],Yt=nt[nt.length-1];return(Yt==null?void 0:Yt.type)==="toolGroup"?Yt.callIds.includes(Et)||(nt[nt.length-1]={type:"toolGroup",callIds:[...Yt.callIds,Et]}):nt.push({type:"toolGroup",callIds:[Et]}),nt};let Be=null,it=null;const ft=()=>{if(it!==null&&(window.cancelAnimationFrame(it),it=null),we||!Be||!Ee)return;const Qe=Be,Et=Ee;Be=null,o(nt=>({...nt,messages:nt.messages.map(Yt=>Yt.id===Et?{...Yt,...Qe}:Yt)}))},st=Qe=>{Be={...Be??{},...Qe},it===null&&(it=window.requestAnimationFrame(()=>{it=null,ft()}))};let ot="",It,Xe="";for(;;){const{done:Qe,value:Et}=await Xt.read();if(Qe)break;if(we){Xt.cancel();break}rr+=Ot.decode(Et,{stream:!0});const nt=rr.split(`
1238
+ ${n?"bg-green-500/15 text-green-500":r?"bg-primary/10 text-primary":"bg-muted text-muted-foreground"}`,children:d.jsx(ift,{platform:e.platform,className:"h-4.5 w-4.5"})}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsxs("div",{className:"font-medium truncate text-sm",children:[e.name,r&&d.jsx("span",{className:"text-xs text-muted-foreground ml-1",children:"(you)"})]}),d.jsxs("div",{className:"text-xs text-muted-foreground mt-0.5",children:[e.platform,n&&d.jsx("span",{className:"text-green-500 ml-1",children:"· connected"})]})]}),o&&!n&&d.jsx(ke,{size:"sm",variant:"outline",className:"h-7 text-xs px-2.5 shrink-0",onClick:s,disabled:i,children:i?d.jsx(ir,{className:"h-3 w-3 animate-spin"}):d.jsxs(d.Fragment,{children:[d.jsx(oye,{className:"h-3 w-3 mr-1"}),"Connect"]})}),n&&d.jsxs(tn,{className:"bg-green-500/15 text-green-500 border-green-500/30 shrink-0 text-2xs",children:[d.jsx(iye,{className:"h-2.5 w-2.5 mr-0.5"})," live"]})]})}function sft({stream:e}){const r=y.useRef(null),n=y.useRef(null),[i,s]=y.useState(!1);y.useEffect(()=>{console.log(`[screen-share] RemoteScreen: stream=${!!e} tracks=${e==null?void 0:e.getTracks().map(a=>`${a.kind}:${a.readyState}`).join(",")} videoRef=${!!r.current}`),r.current&&e&&(r.current.srcObject=e)},[e]);const o=y.useCallback(()=>{const a=n.current;a&&(document.fullscreenElement?(document.exitFullscreen(),s(!1)):(a.requestFullscreen(),s(!0)))},[]);return y.useEffect(()=>{const a=()=>s(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",a),()=>document.removeEventListener("fullscreenchange",a)},[]),e?d.jsxs("div",{ref:n,className:"relative flex-1 group bg-black rounded-lg overflow-hidden",children:[d.jsx("video",{ref:r,autoPlay:!0,playsInline:!0,muted:!0,className:"w-full h-full object-contain bg-black"}),d.jsx("button",{onClick:o,className:"absolute top-2 right-2 p-1.5 rounded bg-black/60 text-white opacity-0 group-hover:opacity-100 transition-opacity",children:i?d.jsx(g9,{className:"h-3.5 w-3.5"}):d.jsx(m9,{className:"h-3.5 w-3.5"})})]}):d.jsx("div",{className:"flex-1 bg-black/20 rounded-lg flex items-center justify-center text-muted-foreground",children:d.jsxs("div",{className:"text-center",children:[d.jsx(U0e,{className:"h-10 w-10 mx-auto mb-3 opacity-40"}),d.jsx("p",{className:"text-sm font-medium",children:"Waiting for remote screen…"}),d.jsx("p",{className:"text-xs mt-1 opacity-60",children:"The remote device is preparing to share"})]})})}function oft({screenShare:e}){var o;const r=e.session,n=e.isViewer||e.isHost;console.log(`[screen-share] Panel render: isHost=${e.isHost} isViewer=${e.isViewer} isConnected=${n} remoteStream=${!!e.remoteStream} localStream=${!!e.localStream}`);const i=e.devices.filter(a=>a.id!==e.localDeviceId),s=e.devices.find(a=>a.id===e.localDeviceId);return d.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[e.pendingShareRequest&&!n&&d.jsx("div",{className:"p-3 border-b bg-amber-500/5",children:d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsx("div",{className:"h-9 w-9 rounded-lg bg-amber-500/15 text-amber-500 flex items-center justify-center shrink-0 mt-0.5",children:d.jsx(Q$,{className:"h-4.5 w-4.5"})}),d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("p",{className:"text-sm font-medium",children:"Screen share requested"}),d.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"A remote device wants to view your screen."}),d.jsxs("div",{className:"flex gap-2 mt-2",children:[d.jsxs(ke,{size:"sm",className:"h-7 text-xs px-3",onClick:()=>e.acceptPendingShare(),children:[d.jsx(Q$,{className:"h-3 w-3 mr-1"}),"Share Screen"]}),d.jsx(ke,{size:"sm",variant:"ghost",className:"h-7 text-xs px-2 text-muted-foreground",onClick:()=>e.rejectPendingShare(),children:"Decline"})]})]})]})}),n?d.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[d.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b bg-muted/20 shrink-0",children:[d.jsxs(tn,{className:"bg-green-500/15 text-green-500 border-green-500/30 text-2xs",children:[d.jsx(S1,{className:"h-2.5 w-2.5 mr-1"})," Live"]}),d.jsx("span",{className:"text-xs text-muted-foreground truncate flex-1",children:e.connectedDeviceId?((o=e.devices.find(a=>a.id===e.connectedDeviceId))==null?void 0:o.name)??e.connectedDeviceId:"Connected"}),r&&d.jsxs("span",{className:"text-2xs text-muted-foreground",children:[r.transport.routeMode.toUpperCase()," · ",r.transport.avgLatencyMs,"ms"]}),d.jsxs(ke,{variant:"ghost",size:"sm",className:"h-6 text-xs px-2 text-destructive hover:text-destructive",onClick:()=>e.disconnect(),children:[d.jsx(ti,{className:"h-3 w-3 mr-1"}),"Disconnect"]})]}),e.error&&d.jsx("div",{className:"mx-2 p-2 rounded-md bg-red-500/10 text-red-500 text-xs border border-red-500/20",children:e.error}),e.isHost?d.jsx("div",{className:"flex-1 flex items-center justify-center text-muted-foreground",children:d.jsxs("div",{className:"text-center",children:[d.jsx(Ig,{className:"h-10 w-10 mx-auto mb-3 opacity-40"}),d.jsx("p",{className:"text-sm font-medium",children:"Sharing your screen"}),d.jsx("p",{className:"text-xs mt-1 opacity-60",children:"A remote device is viewing this screen"}),r&&d.jsxs("p",{className:"text-xs mt-2 opacity-50",children:[d.jsx(S8,{className:"h-3 w-3 inline mr-0.5"}),r.viewers.length," viewer",r.viewers.length!==1?"s":""]})]})}):d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"flex-1 min-h-0 p-2",children:d.jsx(sft,{stream:e.remoteStream})}),r&&d.jsxs("div",{className:"flex items-center gap-3 px-3 py-1.5 border-t text-2xs text-muted-foreground shrink-0",children:[d.jsxs("span",{children:["Session ",r.id.slice(0,8)]}),d.jsx("span",{children:"·"}),d.jsxs("span",{children:["ICE: ",r.transport.iceConnectionState]}),d.jsx("span",{children:"·"}),d.jsxs("span",{children:[d.jsx(S8,{className:"h-2.5 w-2.5 inline mr-0.5"}),r.viewers.length," viewer",r.viewers.length!==1?"s":""]})]})]})]}):d.jsxs("div",{className:"flex flex-col gap-3 p-3 overflow-y-auto",children:[e.error&&d.jsx("div",{className:"p-2.5 rounded-md bg-red-500/10 text-red-500 text-xs border border-red-500/20",children:e.error}),d.jsxs("div",{className:"space-y-1.5",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("h3",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Remote Devices"}),d.jsx(ke,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>e.refreshState(),children:d.jsx(ja,{className:"h-3 w-3"})})]}),i.length===0?d.jsxs("div",{className:"py-6 text-center",children:[d.jsx(Ig,{className:"h-8 w-8 mx-auto mb-2 text-muted-foreground/40"}),d.jsx("p",{className:"text-xs text-muted-foreground font-medium",children:"No remote devices found"}),d.jsx("p",{className:"text-xs text-muted-foreground/60 mt-1 max-w-[200px] mx-auto",children:"Open Jait on another device (desktop app or mobile) to connect to it"})]}):d.jsx("div",{className:"space-y-1.5",children:i.map(a=>d.jsx(hV,{device:a,isLocal:!1,isConnected:!1,isLoading:e.loading&&e.connectedDeviceId===a.id,onConnect:()=>e.requestRemoteShare(a.id)},a.id))})]}),s&&d.jsxs("div",{className:"space-y-1.5",children:[d.jsx("h3",{className:"text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"This Device"}),d.jsx(hV,{device:s,isLocal:!0,isConnected:!1,isLoading:!1,onConnect:()=>{}})]}),d.jsxs("div",{className:"px-2 py-2 rounded-md bg-muted/30 text-xs text-muted-foreground",children:[d.jsx("strong",{children:"Tip:"})," Ask your agent to connect to a device — e.g. “Show me my desktop screen”"]})]})]})}function wo(){return typeof window<"u"&&window.jaitDesktop?"electron":typeof window<"u"&&"Capacitor"in window?"capacitor":"web"}let Ju=null;function T7(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}async function aft(){var o;if(Ju)return Ju;const e=wo(),r=`jait-device-id-${e}`,n="deviceId";if(e==="electron"&&((o=window.jaitDesktop)!=null&&o.getSetting)){const a=window.jaitDesktop,l=await a.getSetting(n,null);if(l)return Ju=l,localStorage.setItem(r,l),l;const u=localStorage.getItem(r);if(u)return Ju=u,await a.setSetting(n,u),u;const c=T7(e);return Ju=c,localStorage.setItem(r,c),await a.setSetting(n,c),c}const i=localStorage.getItem(r);if(i)return Ju=i,i;const s=T7(e);return Ju=s,localStorage.setItem(r,s),s}function wP(){if(Ju)return Ju;const e=wo(),r=`jait-device-id-${e}`,n=localStorage.getItem(r);if(n)return Ju=n,n;const i=T7(e);return Ju=i,localStorage.setItem(r,i),i}const $b=Mn(),lft=P0(),zce="jait-screen-share-auto-approve";function Fce(){try{const e=localStorage.getItem(zce);return e?new Set(JSON.parse(e)):new Set}catch{return new Set}}function cft(e){const r=Fce();r.add(e),localStorage.setItem(zce,JSON.stringify([...r]))}function uft(){const e=wo(),r=navigator.userAgent;return e==="electron"?`Jait Desktop (${navigator.platform})`:e==="capacitor"?"Jait Mobile":r.includes("Chrome")?`Chrome (${navigator.platform})`:r.includes("Firefox")?`Firefox (${navigator.platform})`:r.includes("Safari")?`Safari (${navigator.platform})`:`Browser (${navigator.platform})`}const dft=[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"}];function hft(e={}){const{token:r}=e,[n,i]=y.useState({session:null,devices:[],localDeviceId:null,isHost:!1,isViewer:!1,isActive:!1,loading:!1,error:null,connectedDeviceId:null,pendingShareRequest:null}),s=y.useRef(null),o=y.useRef(null),a=y.useRef(null),l=y.useRef(null),u=y.useRef(wP()),c=y.useRef(null),h=y.useCallback(()=>{const T={"Content-Type":"application/json"};return r&&(T.Authorization=`Bearer ${r}`),T},[r]),p=y.useCallback(async()=>{const T=u.current,A=wo(),E=uft(),M=["screen-view"];A==="electron"&&M.push("screen-share","remote-input"),A==="web"&&M.push("screen-share");try{(await fetch(`${$b}/api/screen-share/devices/register`,{method:"POST",headers:h(),body:JSON.stringify({id:T,name:E,platform:A,capabilities:M})})).ok&&i(H=>({...H,localDeviceId:T}))}catch(P){console.error("Failed to register screen-share device:",P)}},[h]),g=y.useCallback(async()=>{try{const T=await fetch(`${$b}/api/screen-share/state`,{headers:h()});if(!T.ok)return;const A=await T.json();i(E=>{var M;return{...E,session:A.activeSession??E.session,devices:A.devices,isActive:((M=A.activeSession)==null?void 0:M.status)==="sharing"}})}catch(T){console.error("Failed to refresh screen-share state:",T)}},[h]),v=y.useCallback((T,A,E)=>{var P;console.log(`[screen-share] setupPeerConnection: isHost=${A} session=${E.slice(0,8)} prevPC=${!!s.current} stream=${!!T} device=${u.current}`),(P=s.current)==null||P.close();const M=new RTCPeerConnection({iceServers:dft});if(s.current=M,A&&T){const H=T.getTracks();console.log(`[screen-share] Adding ${H.length} track(s):`,H.map($=>`${$.kind}:${$.label}:${$.readyState}`)),H.forEach($=>M.addTrack($,T))}if(M.ontrack=H=>{const[$]=H.streams;console.log(`[screen-share] ontrack: streams=${H.streams.length} tracks=${$==null?void 0:$.getTracks().map(U=>`${U.kind}:${U.readyState}`).join(",")}`),$&&(a.current=$,console.log("[screen-share] remoteStreamRef set, triggering re-render"),i(U=>({...U})))},M.onicecandidate=H=>{var $;H.candidate&&(($=l.current)==null?void 0:$.readyState)===WebSocket.OPEN&&l.current.send(JSON.stringify({type:"screen-share:ice-candidate",payload:{sessionId:E,fromDeviceId:u.current,candidate:H.candidate.candidate,sdpMid:H.candidate.sdpMid,sdpMLineIndex:H.candidate.sdpMLineIndex}}))},M.oniceconnectionstatechange=()=>{console.log("[screen-share] ICE state:",M.iceConnectionState),(M.iceConnectionState==="disconnected"||M.iceConnectionState==="failed")&&i(H=>({...H,error:`Connection ${M.iceConnectionState}`}))},A&&M.createOffer().then(H=>{var $;M.setLocalDescription(H),console.log("[screen-share] Sending offer via WS"),($=l.current)==null||$.send(JSON.stringify({type:"screen-share:offer",payload:{sessionId:E,hostDeviceId:u.current,sdp:H.sdp}}))}),!A&&c.current){const H=c.current;c.current=null,console.log("[screen-share] Processing queued offer"),M.setRemoteDescription(new RTCSessionDescription({type:"offer",sdp:H.sdp})).then(()=>M.createAnswer()).then($=>{var U;M.setLocalDescription($),(U=l.current)==null||U.send(JSON.stringify({type:"screen-share:answer",payload:{sessionId:H.sessionId,viewerDeviceId:u.current,sdp:$.sdp}}))}).catch($=>console.error("[screen-share] Failed to process queued offer:",$))}},[]),b=y.useCallback(async T=>{var A,E;i(M=>({...M,loading:!0,error:null}));try{let M;if(!((A=navigator.mediaDevices)!=null&&A.getDisplayMedia))throw new Error("Screen sharing is not supported on this device. Use a desktop browser or the Electron app.");if(console.log("[screen-share] Requesting screen capture via getDisplayMedia..."),M=await navigator.mediaDevices.getDisplayMedia({video:{width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:15,max:30}},audio:!1}),console.log("[screen-share] Screen capture obtained:",(E=M.getVideoTracks()[0])==null?void 0:E.label),o.current=M,!T){await p();const P=await fetch(`${$b}/api/screen-share/start`,{method:"POST",headers:h(),body:JSON.stringify({hostDeviceId:u.current})});if(!P.ok){const $=await P.json();throw new Error($.error)}const H=await P.json();T=H.session.id,i($=>({...$,session:H.session}))}i(P=>({...P,isHost:!0,isViewer:!1,isActive:!0,loading:!1})),console.log("[screen-share] Host capturing — setting up peer connection for session:",T),v(M,!0,T??"")}catch(M){console.error("[screen-share] Capture failed:",M),i(P=>({...P,loading:!1,isHost:!1,error:M instanceof Error?M.message:"Failed to start screen capture"}))}},[p,h,v]),_=y.useCallback(async T=>{i(A=>({...A,loading:!0,error:null,connectedDeviceId:T}));try{await p();const A=await fetch(`${$b}/api/screen-share/start`,{method:"POST",headers:h(),body:JSON.stringify({hostDeviceId:T,viewerDeviceIds:[u.current]})});if(!A.ok){const M=await A.json();throw new Error(M.error)}const{session:E}=await A.json();i(M=>({...M,session:E,isViewer:!0,isActive:!0,loading:!1})),console.log(`[screen-share] requestRemoteShare: HTTP done, session=${E.id.slice(0,8)} pcRef=${!!s.current}`),s.current?console.log("[screen-share] requestRemoteShare: PC already exists, skipping creation"):(console.log("[screen-share] requestRemoteShare: creating viewer PC (no WS-created PC yet)"),v(null,!1,E.id))}catch(A){i(E=>({...E,loading:!1,connectedDeviceId:null,error:A instanceof Error?A.message:"Failed to connect to remote device"}))}},[p,h,v]),k=y.useCallback(async()=>{var T,A;(T=o.current)==null||T.getTracks().forEach(E=>E.stop()),o.current=null,a.current=null,(A=s.current)==null||A.close(),s.current=null;try{await fetch(`${$b}/api/screen-share/stop`,{method:"POST",headers:h(),body:JSON.stringify({})})}catch{}i(E=>({...E,session:null,isHost:!1,isViewer:!1,isActive:!1,connectedDeviceId:null,pendingShareRequest:null}))},[h]),w=y.useCallback(()=>{const T=n.pendingShareRequest;T&&(i(A=>({...A,pendingShareRequest:null})),b(T.sessionId))},[n.pendingShareRequest,b]),C=y.useCallback(()=>{i(T=>({...T,pendingShareRequest:null}))},[]),j=y.useCallback(async()=>{if(!window.jaitDesktop)return[];try{return await window.jaitDesktop.getDesktopSources()}catch{return[]}},[]);return y.useEffect(()=>{if(!r||!window.jaitDesktop)return;let T=!0,A=null;const E=()=>{if(!T)return;const M=`${lft}${r?`?token=${r}`:""}`,P=new WebSocket(M);l.current=P,P.onopen=()=>{console.log("[screen-share] WS connected"),P.send(JSON.stringify({type:"subscribe",deviceId:u.current}))},P.onmessage=H=>{var $,U,I,K,R,B,L;try{const z=JSON.parse(H.data);switch(z.type.startsWith("screen-share:")&&console.log(`[screen-share] WS recv: ${z.type}`,JSON.stringify(z.payload).slice(0,300)),z.type){case"screen-share:state-update":{const W=z.payload;W.status==="idle"?(($=o.current)==null||$.getTracks().forEach(Y=>Y.stop()),o.current=null,a.current=null,(U=s.current)==null||U.close(),s.current=null,i(Y=>({...Y,session:null,isHost:!1,isViewer:!1,isActive:!1,connectedDeviceId:null,pendingShareRequest:null}))):i(Y=>({...Y,session:W,isActive:W.status==="sharing"}));break}case"screen-share:start-request":{const W=z.payload;if(console.log(`[screen-share] start-request: host=${W.hostDeviceId} local=${u.current} viewers=[${(I=W.viewerDeviceIds)==null?void 0:I.join(",")}] isHostMatch=${W.hostDeviceId===u.current} pcRef=${!!s.current}`),W.hostDeviceId===u.current){const Y=((K=W.viewerDeviceIds)==null?void 0:K[0])??"unknown",F=Fce();if(F.has(Y)||F.has("*")){console.log("[screen-share] Auto-approved share request from",Y),b(W.sessionId);break}wo()==="electron"&&((R=window.jaitDesktop)==null||R.notify({title:"Screen Share Request",body:"A remote device wants to view your screen."}).catch(()=>{}));const J=pi("Screen share requested",{description:"A remote device wants to view your screen.",duration:1/0,action:{label:"Always Allow",onClick:()=>{console.log("[screen-share] User accepted + enabled always-approve"),cft("*"),b(W.sessionId),pi.dismiss(J)}},cancel:{label:"Share Once",onClick:()=>{console.log("[screen-share] User accepted share request (once)"),b(W.sessionId),pi.dismiss(J)}}})}else if(!W.viewerDeviceIds||W.viewerDeviceIds.length===0||W.viewerDeviceIds.includes(u.current)){if(s.current){console.log("[screen-share] Viewer PC already set up, skipping duplicate start-request");break}o.current&&(o.current.getTracks().forEach(Y=>Y.stop()),o.current=null),console.log("[screen-share] Setting up as viewer for session:",W.sessionId,"host:",W.hostDeviceId),i(Y=>({...Y,isViewer:!0,isHost:!1,isActive:!0,connectedDeviceId:W.hostDeviceId})),v(null,!1,W.sessionId)}break}case"screen-share:offer":{const W=z.payload;if(W.hostDeviceId===u.current){console.log("[screen-share] Ignoring own offer (we are the host)");break}console.log(`[screen-share] Received offer from host=${W.hostDeviceId} pcRef=${!!s.current}`);const Y=s.current;Y?Y.setRemoteDescription(new RTCSessionDescription({type:"offer",sdp:W.sdp})).then(()=>Y.createAnswer()).then(F=>{var q;Y.setLocalDescription(F),console.log("[screen-share] Sending answer"),(q=l.current)==null||q.send(JSON.stringify({type:"screen-share:answer",payload:{sessionId:W.sessionId,viewerDeviceId:u.current,sdp:F.sdp}}))}).catch(F=>console.error("[screen-share] Offer handling failed:",F)):(console.log("[screen-share] PC not ready, queuing offer"),c.current=W);break}case"screen-share:answer":{const W=z.payload;if(W.viewerDeviceId===u.current){console.log("[screen-share] Ignoring own answer (we are the viewer)");break}console.log(`[screen-share] Received answer from viewer=${W.viewerDeviceId}`),(B=s.current)==null||B.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:W.sdp}));break}case"screen-share:ice-candidate":{const W=z.payload;if(W.fromDeviceId===u.current)break;console.log(`[screen-share] ICE candidate from=${W.fromDeviceId} pcRef=${!!s.current}`),(L=s.current)==null||L.addIceCandidate(new RTCIceCandidate({candidate:W.candidate,sdpMid:W.sdpMid,sdpMLineIndex:W.sdpMLineIndex}));break}}}catch{}},P.onclose=()=>{l.current=null,T&&(A=setTimeout(E,3e4))},P.onerror=()=>{}};return E(),()=>{var M;T=!1,A&&clearTimeout(A),(M=l.current)==null||M.close(),l.current=null}},[r]),y.useEffect(()=>{!r||!window.jaitDesktop||(p(),g())},[r,p,g]),y.useEffect(()=>{window.jaitDesktop&&(window.jaitDesktop.onScreenShareStart(()=>b()),window.jaitDesktop.onScreenShareStop(()=>k()))},[b,k]),{...n,requestRemoteShare:_,startHosting:b,disconnect:k,acceptPendingShare:w,rejectPendingShare:C,getDesktopSources:j,refreshState:g,localStream:o.current,remoteStream:a.current}}function fft(){return typeof window>"u"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}function SP(e){const{activeTheme:r}=EQ(),[n,i]=y.useState(fft);y.useEffect(()=>{if(typeof window>"u")return;const a=window.matchMedia("(prefers-color-scheme: dark)"),l=()=>i(a.matches);return l(),a.addEventListener("change",l),()=>a.removeEventListener("change",l)},[]);const s=(r==null?void 0:r.colorMode)??(e==="dark"||e==="system"&&n?"dark":"light"),o=(r==null?void 0:r.monacoThemeName)??(s==="dark"?"vs-dark":"vs");return y.useEffect(()=>{cRe({colorMode:s,monacoThemeName:o,theme:r})},[r,o,s]),{activeTheme:r,monacoThemeName:o,resolvedTheme:s}}function pft(e){const r=e==null?void 0:e.trim();return r?/^https?:\/\//i.test(r)?r:r.startsWith("/")?`${Mn()}${r}`:r:null}async function mft(e,r,n){const i=await fetch(`${Mn()}/api/workspace/write`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,content:r,surfaceId:n})});if(!i.ok){const s=await i.json().catch(()=>({}));throw new Error(s.message||`Failed to save file: ${i.statusText}`)}}function gft({detachedTabId:e}){const[r,n]=y.useState(()=>zF(e)),[i,s]=y.useState((r==null?void 0:r.tab.content)??""),[o,a]=y.useState(!1),[l,u]=y.useState(null),{monacoThemeName:c}=SP((r==null?void 0:r.theme)??"dark");y.useEffect(()=>{const v=()=>n(zF(e));return v(),window.addEventListener("storage",v),()=>window.removeEventListener("storage",v)},[e]),y.useEffect(()=>{r&&(document.title=r.title||r.tab.label||"Jait")},[r]),y.useEffect(()=>{s((r==null?void 0:r.tab.content)??"")},[r==null?void 0:r.tab.content]);const h=y.useMemo(()=>pft(r==null?void 0:r.tab.previewSrc),[r==null?void 0:r.tab.previewSrc]),p=y.useCallback(()=>{KKe(e),window.close()},[e]),g=y.useCallback(async()=>{if(!(!r||r.tab.type!=="file")){a(!0),u(null);try{await mft(r.tab.path,i,r.surfaceId??null)}catch(v){u(v instanceof Error?v.message:"Failed to save file")}finally{a(!1)}}},[i,r]);return r?d.jsxs("div",{className:"flex h-screen flex-col bg-muted/10 text-foreground",children:[d.jsxs("div",{className:"flex h-[35px] items-center gap-2 border-b bg-muted/30 px-3 shrink-0",children:[r.tab.type==="architecture"?d.jsx(RC,{className:"h-4 w-4 shrink-0"}):r.tab.type==="preview"?d.jsx(Ci,{className:"h-4 w-4 shrink-0"}):null,d.jsx("span",{className:"truncate text-sm font-medium",children:r.title}),d.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[r.tab.type==="file"&&d.jsxs(ke,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-xs",onClick:()=>{g()},disabled:o,children:[o?d.jsx(ir,{className:"mr-1 h-3 w-3 animate-spin"}):d.jsx(v9,{className:"mr-1 h-3 w-3"}),"Save"]}),r.tab.type==="preview"&&h&&d.jsx("a",{href:h,target:"_blank",rel:"noreferrer",className:"inline-flex",children:d.jsxs(ke,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2 text-xs",children:[d.jsx(wm,{className:"mr-1 h-3 w-3"}),"Open"]})}),d.jsx(ke,{type:"button",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:p,children:d.jsx(ti,{className:"h-4 w-4"})})]})]}),l?d.jsx("div",{className:"border-b px-3 py-2 text-xs text-destructive",children:l}):null,d.jsx("div",{className:"min-h-0 flex-1 bg-background",children:r.tab.type==="diff"?d.jsx(w2,{className:"h-full",editorClassName:"h-full",original:r.tab.originalContent??"",modified:r.tab.modifiedContent??"",language:r.tab.language??"plaintext",renderSideBySide:!0,options:{minimap:{enabled:!1}}}):r.tab.type==="preview"?h?d.jsx("iframe",{src:h,title:r.title,className:"h-full w-full bg-white",sandbox:"allow-forms allow-modals allow-pointer-lock allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"}):d.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Preview unavailable."}):r.tab.type==="architecture"?d.jsx(uO,{diagram:r.architectureDiagram??null,isGenerating:r.architectureGenerating,theme:r.theme}):r.tab.originalContent!=null?d.jsx(yoe,{path:r.tab.path,language:r.tab.language??"plaintext",value:i,originalContent:r.tab.originalContent,theme:c,onChange:v=>s(v??"")}):d.jsx(jj,{height:"100%",beforeMount:h0,theme:c,path:r.tab.path,language:r.tab.language??"plaintext",value:i,onChange:v=>s(v??""),options:{minimap:{enabled:!1},fontSize:13,automaticLayout:!0}})})]}):d.jsx("div",{className:"flex h-screen items-center justify-center bg-background text-sm text-muted-foreground",children:"Detached tab not found."})}const yft="jait:detached-terminal:";function kP(e){return`${yft}${e}`}function vft(e){localStorage.setItem(kP(e.id),JSON.stringify(e))}function fV(e){const r=localStorage.getItem(kP(e));if(!r)return null;try{return JSON.parse(r)}catch{return null}}function xft(e){localStorage.removeItem(kP(e))}function bft({detachedId:e}){const[r,n]=y.useState(()=>fV(e));SP((r==null?void 0:r.theme)??"dark"),y.useEffect(()=>{const s=()=>n(fV(e));return s(),window.addEventListener("storage",s),()=>window.removeEventListener("storage",s)},[e]),y.useEffect(()=>{r&&(document.title=r.label||"Terminal")},[r]);const i=y.useCallback(()=>{xft(e),window.close()},[e]);return r?d.jsxs("div",{className:"flex h-screen flex-col bg-background text-foreground",children:[d.jsxs("div",{className:"flex h-9 shrink-0 items-center justify-between border-b px-3",children:[d.jsx("span",{className:"truncate text-xs text-muted-foreground",children:r.label}),d.jsx("button",{onClick:i,className:"p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors","aria-label":"Close",children:d.jsx(ti,{className:"h-4 w-4"})})]}),d.jsx(d4,{terminalId:r.terminalId,className:"flex-1",token:r.token,workspaceRoot:r.workspaceRoot})]}):d.jsx("div",{className:"flex h-screen items-center justify-center bg-background text-muted-foreground",children:"Terminal session not found."})}const r8=Mn();function _ft({platform:e}){switch(e){case"windows":case"macos":case"linux":return d.jsx(Ea,{className:"h-3.5 w-3.5"});case"android":case"ios":return d.jsx(L4,{className:"h-3.5 w-3.5"});default:return d.jsx(Ci,{className:"h-3.5 w-3.5"})}}function pV({open:e,onOpenChange:r,onSelect:n,gatewayOnly:i,initialPath:s,initialNodeId:o}){const[a,l]=y.useState(null),[u,c]=y.useState(null),[h,p]=y.useState([]),[g,v]=y.useState([]),[b,_]=y.useState(!1),[k,w]=y.useState(null),[C,j]=y.useState(""),[T,A]=y.useState(!1),[E,M]=y.useState([]),[P,H]=y.useState("gateway"),$=y.useCallback(Y=>{l(Y.path),c(Y.parent),p(Y.entries),j(Y.path)},[]),U=y.useCallback(async(Y,F)=>{const q=`${r8}/api/filesystem/browse?path=${encodeURIComponent(Y)}&nodeId=${encodeURIComponent(F)}`,J=await fetch(q);if(!J.ok){const V=await J.json().catch(()=>({message:"Failed to browse"}));throw new Error(V.message??"Failed to browse")}return await J.json()},[]),I=y.useCallback(async(Y,F)=>{try{_(!0),w(null),l(null),c(null),p([]);const q=`${r8}/api/filesystem/roots?nodeId=${encodeURIComponent(Y)}`,J=await fetch(q);if(!J.ok)throw new Error("Failed to load roots");const V=await J.json();if(v(V.roots),F)try{const ne=await U(F,Y);$(ne);return}catch{}const ee=V.roots.find(ne=>ne.name==="Home")??V.roots[0];if(ee){const ne=await U(ee.path,Y);$(ne)}}catch(q){w(q instanceof Error?q.message:"Failed to load")}finally{_(!1)}},[$,U]),K=y.useCallback(async(Y,F)=>{try{const q=await fetch(`${r8}/api/filesystem/nodes`);if(!q.ok)throw new Error("Failed to load nodes");const J=await q.json();M(J.nodes);const V=wo();let ee="gateway";if(Y&&J.nodes.some(ne=>ne.id===Y)&&(ee=Y),ee==="gateway"&&(V==="electron"||V==="capacitor")){const ne=wP(),de=J.nodes.find(fe=>fe.id===ne);de&&(ee=de.id)}H(ee),await I(ee,Y===ee?F:null)}catch(q){w(q instanceof Error?q.message:"Failed to load nodes")}},[I]);y.useEffect(()=>{if(e){if(i){H("gateway"),I("gateway",s);return}K(o,s)}},[e,i,o,s,K,I]);const R=y.useCallback(async(Y,F)=>{const q=F??P;try{_(!0),w(null);const J=await U(Y,q);$(J)}catch(J){w(J instanceof Error?J.message:"Failed to browse")}finally{_(!1)}},[$,U,P]),B=y.useCallback(Y=>{H(Y),I(Y)},[I]),L=y.useCallback(()=>{a&&(n(a,P),r(!1))},[a,P,n,r]),z=y.useCallback(()=>{C.trim()&&(R(C.trim()),A(!1))},[C,R]),W=h.filter(Y=>Y.type==="dir");return d.jsx(Yf,{open:e,onOpenChange:r,children:d.jsxs(Oh,{className:"max-w-md sm:max-w-lg p-0 gap-0 overflow-hidden",children:[d.jsx(Sh,{className:"px-4 pt-4 pb-2",children:d.jsxs(kh,{className:"flex items-center gap-2 text-base",children:[d.jsx(ph,{className:"h-4 w-4"}),"Open Workspace"]})}),!i&&E.length>1&&d.jsx("div",{className:"flex items-center gap-1 px-3 py-1.5 border-b bg-muted/20 overflow-x-auto",children:E.map(Y=>d.jsxs("button",{onClick:()=>B(Y.id),className:qe("flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs whitespace-nowrap transition-colors",P===Y.id?"bg-primary text-primary-foreground":"hover:bg-accent hover:text-accent-foreground text-muted-foreground"),children:[d.jsx(_ft,{platform:Y.platform}),d.jsx("span",{children:Y.name})]},Y.id))}),d.jsxs("div",{className:"flex items-center gap-1 px-3 py-1.5 border-b text-xs text-muted-foreground bg-muted/30",children:[g.filter(Y=>Y.name!=="Home").map(Y=>d.jsxs("button",{onClick:()=>void R(Y.path),className:"px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground flex items-center gap-1",title:Y.path,children:[d.jsx(m0e,{className:"h-3 w-3"}),d.jsx("span",{children:Y.name})]},Y.path)),d.jsx("button",{onClick:()=>{const Y=g.find(F=>F.name==="Home");Y&&R(Y.path)},className:"px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground flex items-center gap-1",title:"Home directory",children:d.jsx(GG,{className:"h-3 w-3"})}),d.jsx("div",{className:"h-3 w-px bg-border mx-1"}),u&&d.jsx("button",{onClick:()=>void R(u),className:"px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground flex items-center gap-1",title:"Go up",children:d.jsx(HG,{className:"h-3 w-3"})}),d.jsx("button",{onClick:()=>A(Y=>!Y),className:"ml-auto px-1.5 py-0.5 rounded hover:bg-accent hover:text-accent-foreground text-2xs",children:T?"Browse":"Enter path"})]}),T&&d.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b bg-muted/20",children:[d.jsx("input",{type:"text",value:C,onChange:Y=>j(Y.target.value),onKeyDown:Y=>{Y.key==="Enter"&&z()},className:"flex-1 h-7 px-2 text-xs border rounded bg-background focus:outline-none focus:ring-1 focus:ring-ring",placeholder:"Enter absolute path...",autoFocus:!0}),d.jsx(ke,{size:"sm",variant:"secondary",className:"h-7 text-xs",onClick:z,children:"Go"})]}),d.jsx("div",{className:"px-3 py-1.5 text-xs font-mono text-muted-foreground truncate border-b",children:a??"..."}),d.jsx("div",{className:"overflow-y-auto min-h-[120px] max-h-[50vh]",children:d.jsxs("div",{className:"p-2",children:[b&&d.jsxs("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:[d.jsx(ir,{className:"h-4 w-4 animate-spin mr-2"}),"Loading..."]}),k&&d.jsx("div",{className:"text-destructive text-xs py-4 text-center",children:k}),!b&&!k&&W.length===0&&d.jsx("div",{className:"text-muted-foreground text-xs py-4 text-center",children:"No subdirectories"}),!b&&!k&&W.map(Y=>d.jsxs("button",{onClick:()=>void R(Y.path),className:qe("w-full flex items-center gap-2 px-2 py-1.5 rounded text-xs text-left","hover:bg-accent hover:text-accent-foreground transition-colors"),children:[d.jsx(f9,{className:"h-3.5 w-3.5 text-yellow-500 shrink-0"}),d.jsx("span",{className:"truncate",children:Y.name}),d.jsx(No,{className:"h-3 w-3 ml-auto text-muted-foreground shrink-0"})]},Y.path))]})}),d.jsxs(_v,{className:"px-4 py-3 border-t",children:[d.jsx(ke,{variant:"ghost",size:"sm",onClick:()=>r(!1),children:"Cancel"}),d.jsxs(ke,{size:"sm",onClick:L,disabled:!a,children:[d.jsx(ph,{className:"h-3.5 w-3.5 mr-1.5"}),"Open this folder"]})]})]})})}function wft({onRetry:e}){const[r,n]=y.useState(!1),i=()=>{n(!0),e(),setTimeout(()=>n(!1),3e3)};return d.jsx("div",{className:"flex h-screen w-full items-center justify-center bg-background text-foreground",children:d.jsxs("div",{className:"flex max-w-md flex-col items-center gap-6 px-6 text-center",children:[d.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-destructive/10",children:d.jsx(vye,{className:"h-10 w-10 text-destructive"})}),d.jsxs("div",{className:"space-y-2",children:[d.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Backend Unavailable"}),d.jsxs("p",{className:"text-sm text-muted-foreground",children:["Unable to connect to the Jait gateway at"," ",d.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 text-xs font-mono",children:Mn()})]}),d.jsx("p",{className:"text-sm text-muted-foreground",children:"Make sure the gateway is running and accessible, then try again."})]}),d.jsxs("button",{onClick:i,disabled:r,className:"inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow hover:bg-primary/90 transition-colors disabled:opacity-50",children:[d.jsx(ja,{className:`h-4 w-4 ${r?"animate-spin":""}`}),r?"Connecting…":"Retry Connection"]})]})})}function mV(e){return{id:e.id??`evt-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,source:e.source,title:e.title,detail:e.detail,createdAt:e.createdAt??new Date().toISOString()}}function gV(e){if(e.role!=="user")return null;const r=Array.isArray(e.displaySegments)&&e.displaySegments.length>0,n=e.content.trim(),i=typeof e.displayContent=="string"?e.displayContent.trim():"";return JSON.stringify({role:"user",content:n,displayContent:i,displaySegments:r?e.displaySegments:null})}function Sft(e,r){const n=new Map;for(const s of e){const o=gV(s);o&&n.set(o,(n.get(o)??0)+1)}const i=[];for(const s of r){if(!s.optimistic||s.role!=="user")continue;const o=gV(s);if(!o){i.push(s);continue}const a=n.get(o)??0;if(a>0){n.set(o,a-1);continue}i.push(s)}return i.length===0?e:[...e,...i]}const Gu=Mn(),kft=120,yV="Connection interrupted. Attempting to reconnect...";function n8(e){return e?{Authorization:`Bearer ${e}`}:{}}function vV(e){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`${e}-${crypto.randomUUID()}`:`${e}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function xV(e){if(!(e instanceof Error)||e.name==="AbortError")return!1;const r=e.message.toLowerCase();return r.includes("network error")||r.includes("failed to fetch")||r.includes("fetch failed")||r.includes("load failed")||r.includes("network connection was lost")||r.includes("the internet connection appears to be offline")}function bV(e){return!e.sessionId||e.isLoadingHistory?!1:e.isLoading||e.messageCount===0}function _V(e){if(!(e!=null&&e.length))return;const r=e.flatMap(n=>n.type==="image"?[{name:n.name,mimeType:n.mimeType,data:n.data,preview:`data:${n.mimeType};base64,${n.data}`}]:[]);return r.length>0?r:void 0}function Cft(e,r,n,i){const[s,o]=y.useState({messages:[],isLoading:!1,isLoadingHistory:!1,promptCount:0,remainingPrompts:null,error:null,hitMaxRounds:!1}),[a,l]=y.useState(null),[u,c]=y.useState([]),[h,p]=y.useState([]),[g,v]=y.useState([]),[b,_]=y.useState(0),[k,w]=y.useState(null),[C,j]=y.useState(null),T=y.useRef(null),A=y.useRef(null),E=y.useRef(null),M=y.useRef(null),P=y.useRef(0),H=y.useRef(!1),$=y.useRef(!1),[U,I]=y.useState(0),K=y.useCallback(()=>{e&&(M.current===e&&T.current||($.current=!0,A.current=null,I(_e=>_e+1)))},[e]);y.useEffect(()=>{if(e===A.current)return;const _e=$.current;if($.current=!1,P.current+=1,A.current=e,E.current&&(E.current.abort(),E.current=null),!e){o({messages:[],isLoading:!1,isLoadingHistory:!1,promptCount:0,remainingPrompts:null,hitMaxRounds:!1,error:null}),c([]),p([]),v([]),w(null);return}let we=!1;o(St=>({...St,messages:_e?St.messages:[],isLoading:!1,isLoadingHistory:!0,error:null})),w(null);const Ke=new AbortController;return E.current=Ke,(async()=>{var St,vt;try{const Rt=await fetch(`${Gu}/api/sessions/${e}/stream?limit=${kft}`,{signal:Ke.signal,headers:n8(r)});if(Rt.status===401){n==null||n(),o(Qe=>({...Qe,isLoadingHistory:!1}));return}if(!Rt.ok||we)return;const Xt=(St=Rt.body)==null?void 0:St.getReader();if(!Xt)return;const Ot=new TextDecoder;let rr="",Ee=null;const Le=(Qe,Et)=>{const nt=Qe?[...Qe]:[],Yt=nt[nt.length-1];return(Yt==null?void 0:Yt.type)==="text"?nt[nt.length-1]={type:"text",content:Yt.content+Et}:nt.push({type:"text",content:Et}),nt},Ne=(Qe,Et)=>{const nt=Qe?[...Qe]:[],Yt=nt[nt.length-1];return(Yt==null?void 0:Yt.type)==="toolGroup"?Yt.callIds.includes(Et)||(nt[nt.length-1]={type:"toolGroup",callIds:[...Yt.callIds,Et]}):nt.push({type:"toolGroup",callIds:[Et]}),nt};let Be=null,it=null;const ft=()=>{if(it!==null&&(window.cancelAnimationFrame(it),it=null),we||!Be||!Ee)return;const Qe=Be,Et=Ee;Be=null,o(nt=>({...nt,messages:nt.messages.map(Yt=>Yt.id===Et?{...Yt,...Qe}:Yt)}))},st=Qe=>{Be={...Be??{},...Qe},it===null&&(it=window.requestAnimationFrame(()=>{it=null,ft()}))};let ot="",It,Xe="";for(;;){const{done:Qe,value:Et}=await Xt.read();if(Qe)break;if(we){Xt.cancel();break}rr+=Ot.decode(Et,{stream:!0});const nt=rr.split(`
1239
1239
  `);rr=nt.pop()||"";for(const Yt of nt)if(Yt.startsWith("data: "))try{const et=JSON.parse(Yt.slice(6));if(tE(String(et.type??"unknown"),Yt.slice(6)),et.type==="snapshot"){const Ue=et.messages,Tt=et.streaming,Oe=Ue.map(kt=>{const at={id:kt.id,role:kt.role,content:kt.content,contextFlow:kt.contextFlow,thinking:kt.thinking};if(kt.role==="user"&&kt.segments&&kt.segments.length>0)at.displaySegments=yR(kt.segments),at.displayContent=X1(at.displaySegments),at.referencedFiles=Z1(at.displaySegments),at.attachments=_V(at.displaySegments);else if(kt.role==="user"){const pt=CJ(kt.content);pt.files.length>0&&(at.displayContent=pt.text,at.referencedFiles=pt.files,at.displaySegments=pt.displaySegments,at.attachments=_V(at.displaySegments))}else kt.segments&&kt.segments.length>0&&(at.segments=kt.segments);return kt.toolCalls&&kt.toolCalls.length>0&&(at.toolCalls=kt.toolCalls.map(pt=>{let cr=pt.status??(pt.ok?"success":"error");return(cr==="running"||cr==="pending")&&!Tt&&(cr="error"),{callId:pt.callId,tool:pt.tool,args:pt.args??{},status:cr,result:cr==="running"?void 0:{ok:!!pt.ok,message:pt.message??"Cancelled",data:pt.data??(pt.output!=null?{output:pt.output}:void 0)},streamingOutput:pt.streamingOutput,startedAt:pt.startedAt??0,completedAt:pt.completedAt??0}})),at}),ye=Oe[Oe.length-1];(ye==null?void 0:ye.role)==="assistant"&&(Ee=ye.id,ot=ye.content,It=ye.segments,Xe=ye.thinking??""),o(kt=>({...kt,messages:Sft(Oe,kt.messages),isLoadingHistory:!1,isLoading:Tt,error:null}))}else if(et.type==="token"&&Ee){const Ue=et.content;ot+=Ue,It=Le(It,Ue),st({content:ot,segments:It?[...It]:void 0})}else if(et.type==="thinking"&&Ee)Xe+=et.content,st({thinking:Xe});else if(et.type==="tool_call_delta"&&Ee){ft();const Ue=et.call_id,Tt=et.name_delta||"",Oe=et.args_delta||"";o(ye=>{var cr;const kt=ye.messages.find(Cr=>Cr.id===Ee);if((cr=kt==null?void 0:kt.toolCalls)==null?void 0:cr.find(Cr=>Cr.callId===Ue))return{...ye,messages:ye.messages.map(Cr=>{var un;return Cr.id===Ee?{...Cr,toolCalls:(un=Cr.toolCalls)==null?void 0:un.map(Wr=>Wr.callId===Ue?{...Wr,tool:Wr.tool+Tt,streamingArgs:(Wr.streamingArgs??"")+Oe}:Wr)}:Cr})};const pt={callId:Ue,tool:Tt,args:{},status:"pending",streamingArgs:Oe,startedAt:Date.now()};return{...ye,messages:ye.messages.map(Cr=>Cr.id===Ee?{...Cr,toolCalls:[...Cr.toolCalls??[],pt],segments:Ne(Cr.segments,Ue)}:Cr)}})}else if(et.type==="tool_start"&&Ee){ft();const Ue=et.call_id;o(Tt=>{var at;const Oe=Tt.messages.find(pt=>pt.id===Ee);if((at=Oe==null?void 0:Oe.toolCalls)==null?void 0:at.find(pt=>pt.callId===Ue))return{...Tt,messages:Tt.messages.map(pt=>{var cr;return pt.id===Ee?{...pt,toolCalls:(cr=pt.toolCalls)==null?void 0:cr.map(Cr=>Cr.callId===Ue?{...Cr,tool:et.tool,args:et.args??{},status:"running",streamingArgs:void 0}:Cr)}:pt})};const kt={callId:Ue,tool:et.tool,args:et.args??{},status:"running",startedAt:Date.now()};return{...Tt,messages:Tt.messages.map(pt=>pt.id===Ee?{...pt,toolCalls:[...pt.toolCalls??[],kt],segments:Ne(pt.segments,Ue)}:pt)}})}else if(et.type==="tool_output"&&Ee)o(Ue=>({...Ue,messages:Ue.messages.map(Tt=>{var Oe;return Tt.id!==Ee?Tt:{...Tt,toolCalls:(Oe=Tt.toolCalls)==null?void 0:Oe.map(ye=>ye.callId===et.call_id?{...ye,streamingOutput:(ye.streamingOutput??"")+et.content}:ye)}})}));else if(et.type==="tool_result"&&Ee){if(o(Ue=>({...Ue,messages:Ue.messages.map(Tt=>{var Oe;return Tt.id!==Ee?Tt:{...Tt,toolCalls:(Oe=Tt.toolCalls)==null?void 0:Oe.map(ye=>ye.callId===et.call_id?{...ye,status:et.ok?"success":"error",result:{ok:et.ok,message:et.message,data:et.data},completedAt:Date.now()}:ye)}})})),et.ok){const Ue=s.messages.find(Oe=>Oe.id===Ee),Tt=(vt=Ue==null?void 0:Ue.toolCalls)==null?void 0:vt.find(Oe=>Oe.callId===et.call_id);if(Tt){const Oe=Tt.tool.replace("_",".");if(Oe==="file.write"||Oe==="file.patch"||Oe==="edit"){const ye=et.data&&typeof et.data=="object"?et.data:void 0,kt=gO(Oe,Tt.args??{},ye,et.message)??"";if(kt){const at=kt.split("/").pop()??kt;p(pt=>pt.some(cr=>cr.path===kt)?pt:[...pt,{path:kt,name:at,state:"undecided"}])}}}}}else if(et.type==="todo_list"){const Ue=et.items;c(Ue)}else if(et.type==="context_usage")w(et);else if(et.type==="context_flow"&&Ee)o(Ue=>({...Ue,messages:Ue.messages.map(Tt=>Tt.id===Ee?{...Tt,contextFlow:{provider:String(et.provider??"jait"),model:typeof et.model=="string"?et.model:void 0,rounds:Array.isArray(et.rounds)?et.rounds:[]}}:Tt)}));else if(et.type==="provider_fallback")j({provider:"jait",workspacePath:"",isRemote:!1});else if(et.type==="session_info")j({provider:et.provider,workspacePath:et.workspacePath,isRemote:et.isRemote,remoteNode:et.remoteNode});else if(et.type==="file_changed"){const Ue=et.path,Tt=et.name;p(Oe=>Oe.find(kt=>kt.path===Ue)?Oe:[...Oe,{path:Ue,name:Tt,state:"undecided"}])}else et.type==="done"?(ft(),o(Ue=>(Ue.isLoading&&_(Tt=>Tt+1),{...Ue,isLoading:!1,promptCount:et.prompt_count??Ue.promptCount,remainingPrompts:et.remaining_prompts??Ue.remainingPrompts,messages:Ue.messages.map(Tt=>{var Oe;return(Oe=Tt.toolCalls)!=null&&Oe.some(ye=>ye.status==="running")?{...Tt,toolCalls:Tt.toolCalls.map(ye=>ye.status==="running"?{...ye,status:"error",result:{ok:!1,message:"Cancelled"},completedAt:Date.now()}:ye)}:Tt})}))):et.type==="error"&&o(Ue=>({...Ue,isLoading:!1,error:et.message}))}catch(et){if(!(et instanceof SyntaxError))throw et}}ft()}catch(Rt){if(Rt instanceof Error&&Rt.name==="AbortError")return;we||o(Xt=>({...Xt,isLoadingHistory:!1,error:_e&&xV(Rt)?yV:Xt.error}))}})(),()=>{we=!0,Ke.abort(),A.current=null}},[r,n,e,U]);const R=y.useCallback(()=>{!e||s.isLoading||K()},[K,e,s.isLoading]),B=y.useCallback(async(_e,we={})=>{var st,ot,It,Xe,Qe,Et;const{token:Ke,sessionId:St,onLoginRequired:vt}=we,Rt=Ke??r,Xt=vt??n,Ot=St??e,rr=vV("assistant"),Ee={id:vV("user"),role:"user",content:_e,optimistic:!0,...we.displayContent?{displayContent:we.displayContent}:{},...(st=we.referencedFiles)!=null&&st.length?{referencedFiles:we.referencedFiles}:{},...(ot=we.displaySegments)!=null&&ot.length?{displaySegments:we.displaySegments}:{},...(It=we.attachments)!=null&&It.length?{attachments:we.attachments}:{}};o(nt=>({...nt,messages:[...nt.messages,Ee,{id:rr,role:"assistant",content:""}],isLoading:!0,error:null,hitMaxRounds:!1})),c([]);const Le=new AbortController;T.current=Le,M.current=Ot,E.current&&(E.current.abort(),E.current=null);const Ne=++P.current,Be=()=>A.current!==Ot||P.current!==Ne;let it=null,ft=null;try{const nt={"Content-Type":"application/json"};Rt&&(nt.Authorization=`Bearer ${Rt}`);const Yt={content:_e,sessionId:Ot,...we.mode&&we.mode!=="agent"?{mode:we.mode}:{},...we.provider&&we.provider!=="jait"?{provider:we.provider}:{},...we.provider&&we.provider!=="jait"&&we.runtimeMode?{runtimeMode:we.runtimeMode}:{},...we.responseStyle&&we.responseStyle!=="normal"?{responseStyle:we.responseStyle}:{},...we.model?{model:we.model}:{},...(Xe=we.displaySegments)!=null&&Xe.length?{displaySegments:we.displaySegments}:{},...(Qe=we.attachments)!=null&&Qe.length?{attachments:we.attachments.map(Bt=>({name:Bt.name,mimeType:Bt.mimeType,data:Bt.data}))}:{}};tE("request",JSON.stringify(Yt));const et=await fetch(`${Gu}/api/chat`,{method:"POST",headers:nt,body:JSON.stringify(Yt),signal:Le.signal});if(et.status===401){const Bt=await et.json();if(Bt.detail==="login_required"||Bt.detail==="limit_reached")return o(jr=>({...jr,isLoading:!1,error:Bt.detail,messages:jr.messages.filter(Mt=>we.queued?Mt.id!==rr&&Mt.id!==Ee.id:!(Mt.id===rr&&!Mt.content&&!Mt.thinking&&(!Mt.toolCalls||Mt.toolCalls.length===0)))})),Bt.detail==="login_required"&&(Xt==null||Xt()),"retry"}if(!et.ok)throw new Error(`HTTP ${et.status}`);const Ue=(Et=et.body)==null?void 0:Et.getReader();if(!Ue)throw new Error("No response body");const Tt=new TextDecoder;let Oe="",ye="",kt=null,at;const pt=[],cr=[];let Cr="",un=!1;const Wr=Bt=>{const jr=cr[cr.length-1];(jr==null?void 0:jr.type)==="text"?jr.content+=Bt:cr.push({type:"text",content:Bt})},Ln=Bt=>{const jr=cr[cr.length-1];(jr==null?void 0:jr.type)==="toolGroup"?jr.callIds.includes(Bt)||jr.callIds.push(Bt):cr.push({type:"toolGroup",callIds:[Bt]})},nn=()=>{if(ft!==null&&(window.cancelAnimationFrame(ft),ft=null),Be()||!it)return;const Bt=it;it=null,o(jr=>({...jr,messages:jr.messages.map(Mt=>Mt.id===rr?{...Mt,...Bt}:Mt)}))},_n=(Bt,jr)=>{if(!Be()){if(it={...it??{},...Bt},jr!=null&&jr.immediate){nn();return}ft===null&&(ft=window.requestAnimationFrame(()=>{ft=null,nn()}))}};for(;;){const{done:Bt,value:jr}=await Ue.read();if(Bt)break;Cr+=Tt.decode(jr,{stream:!0});const Mt=Cr.split(`
1240
1240
  `);Cr=Mt.pop()||"";for(const Zn of Mt)if(Zn.startsWith("data: "))try{const ut=JSON.parse(Zn.slice(6));if(tE(String(ut.type??"unknown"),Zn.slice(6)),ut.type==="thinking")kt||(kt=Date.now()),ye+=ut.content,_n({thinking:ye});else if(ut.type==="token")kt&&!at&&(at=Math.round((Date.now()-kt)/1e3)),Oe+=ut.content,Wr(ut.content),_n({content:Oe,thinkingDuration:at,segments:[...cr]});else if(ut.type==="tool_call_delta"){const lr=ut.call_id,wn=ut.name_delta||"",Er=ut.args_delta||"",Vt=pt.findIndex(nr=>nr.callId===lr);Vt!==-1?pt[Vt]={...pt[Vt],tool:pt[Vt].tool+wn,streamingArgs:(pt[Vt].streamingArgs??"")+Er}:(pt.push({callId:lr,tool:wn,args:{},status:"pending",streamingArgs:Er,startedAt:Date.now()}),Ln(lr)),_n({toolCalls:[...pt],segments:[...cr]},{immediate:!0})}else if(ut.type==="tool_start"){const lr=ut.call_id,wn=pt.findIndex(Er=>Er.callId===lr);wn!==-1?pt[wn]={...pt[wn],tool:ut.tool,args:ut.args??{},status:"running",streamingArgs:void 0}:(pt.push({callId:lr,tool:ut.tool,args:ut.args??{},status:"running",startedAt:Date.now()}),Ln(lr)),_n({toolCalls:[...pt],segments:[...cr]},{immediate:!0})}else if(ut.type==="tool_output"){const lr=pt.findIndex(wn=>wn.callId===ut.call_id);lr!==-1&&(pt[lr]={...pt[lr],streamingOutput:(pt[lr].streamingOutput??"")+ut.content},_n({toolCalls:[...pt]},{immediate:!0}))}else if(ut.type==="tool_result"){const lr=pt.findIndex(wn=>wn.callId===ut.call_id);if(lr!==-1&&(pt[lr]={...pt[lr],status:ut.ok?"success":"error",result:{ok:ut.ok,message:ut.message,data:ut.data},completedAt:Date.now()},_n({toolCalls:[...pt]},{immediate:!0}),ut.ok)){const wn=pt[lr],Er=wn.tool.replace("_",".");if(Er==="file.write"||Er==="file.patch"||Er==="edit"){const Vt=ut.data&&typeof ut.data=="object"?ut.data:void 0,nr=gO(Er,wn.args??{},Vt,ut.message)??"";if(nr){const Oo=nr.split("/").pop()??nr;p(er=>er.some(be=>be.path===nr)?er:[...er,{path:nr,name:Oo,state:"undecided"}])}}}}else if(ut.type==="plan_complete"){const lr={plan_id:ut.plan_id,summary:ut.summary,actions:ut.actions??[]};l(lr)}else if(ut.type==="mode_notice"){const lr=`
1241
1241
 
@@ -1,2 +1,2 @@
1
- import{_ as a,l as s,L as n,e as i}from"./index-CCEwWNBR.js";import{p}from"./treemap-KZPCXAKY-B8xDQUv8.js";import"./_baseUniq-_aqA0yWV.js";import"./_basePickBy-GxhPl4cw.js";import"./clone-BHsy8p8S.js";var g={parse:a(async r=>{const e=await p("info",r);s.debug(e)},"parse")},v={version:"11.13.0"},d=a(()=>v.version,"getVersion"),m={getVersion:d},c=a((r,e,o)=>{s.debug(`rendering info diagram
1
+ import{_ as a,l as s,L as n,e as i}from"./index-CdmevkTd.js";import{p}from"./treemap-KZPCXAKY-CJgZlCwI.js";import"./_baseUniq-Kip5eUsQ.js";import"./_basePickBy-CfSAKRVo.js";import"./clone-zOJjVvSm.js";var g={parse:a(async r=>{const e=await p("info",r);s.debug(e)},"parse")},v={version:"11.13.0"},d=a(()=>v.version,"getVersion"),m={getVersion:d},c=a((r,e,o)=>{s.debug(`rendering info diagram
2
2
  `+r);const t=n(e);i(t,100,400,!0),t.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${o}`)},"draw"),l={draw:c},y={parser:g,db:m,renderer:l};export{y as diagram};
@@ -1,4 +1,4 @@
1
- import{_ as o,c as ot,a4 as ut,L as dt,as as yt,A as ft,k as pt,q as it,a as gt,b as kt,g as wt,s as mt,t as _t,e as bt}from"./index-CCEwWNBR.js";var tt=(function(){var e=o(function(M,t,s,i){for(s=s||{},i=M.length;i--;s[M[i]]=t);return s},"o"),h=[1,4],r=[1,14],a=[1,12],l=[1,13],y=[6,7,8],f=[1,20],d=[1,18],w=[1,19],c=[6,7,11],k=[1,6,13,14],g=[1,23],_=[1,24],x=[1,6,7,11,13,14],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(t,s,i,u,p,n,v){var m=n.length-1;switch(p){case 6:case 7:return u;case 15:u.addNode(n[m-1].length,n[m].trim());break;case 16:u.addNode(0,n[m].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:h},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:h},{6:r,7:[1,10],9:9,12:11,13:a,14:l},e(y,[2,3]),{1:[2,2]},e(y,[2,4]),e(y,[2,5]),{1:[2,6],6:r,12:15,13:a,14:l},{6:r,9:16,12:11,13:a,14:l},{6:f,7:d,10:17,11:w},e(c,[2,18],{14:[1,21]}),e(c,[2,16]),e(c,[2,17]),{6:f,7:d,10:22,11:w},{1:[2,7],6:r,12:15,13:a,14:l},e(k,[2,14],{7:g,11:_}),e(x,[2,8]),e(x,[2,9]),e(x,[2,10]),e(c,[2,15]),e(k,[2,13],{7:g,11:_}),e(x,[2,11]),e(x,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(t,s){if(s.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=s,i}},"parseError"),parse:o(function(t){var s=this,i=[0],u=[],p=[null],n=[],v=this.table,m="",I=0,S=0,L=2,E=1,R=n.slice.call(arguments,1),b=Object.create(this.lexer),C={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(C.yy[F]=this.yy[F]);b.setInput(t,C.yy),C.yy.lexer=b,C.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var T=b.yylloc;n.push(T);var D=b.options&&b.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(P){i.length=i.length-2*P,p.length=p.length-P,n.length=n.length-P}o(j,"popStack");function z(){var P;return P=u.pop()||b.lex()||E,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}o(z,"lex");for(var A,W,B,K,H={},X,V,et,Y;;){if(W=i[i.length-1],this.defaultActions[W]?B=this.defaultActions[W]:((A===null||typeof A>"u")&&(A=z()),B=v[W]&&v[W][A]),typeof B>"u"||!B.length||!B[0]){var Q="";Y=[];for(X in v[W])this.terminals_[X]&&X>L&&Y.push("'"+this.terminals_[X]+"'");b.showPosition?Q="Parse error on line "+(I+1)+`:
1
+ import{_ as o,c as ot,a4 as ut,L as dt,as as yt,A as ft,k as pt,q as it,a as gt,b as kt,g as wt,s as mt,t as _t,e as bt}from"./index-CdmevkTd.js";var tt=(function(){var e=o(function(M,t,s,i){for(s=s||{},i=M.length;i--;s[M[i]]=t);return s},"o"),h=[1,4],r=[1,14],a=[1,12],l=[1,13],y=[6,7,8],f=[1,20],d=[1,18],w=[1,19],c=[6,7,11],k=[1,6,13,14],g=[1,23],_=[1,24],x=[1,6,7,11,13,14],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(t,s,i,u,p,n,v){var m=n.length-1;switch(p){case 6:case 7:return u;case 15:u.addNode(n[m-1].length,n[m].trim());break;case 16:u.addNode(0,n[m].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:h},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:h},{6:r,7:[1,10],9:9,12:11,13:a,14:l},e(y,[2,3]),{1:[2,2]},e(y,[2,4]),e(y,[2,5]),{1:[2,6],6:r,12:15,13:a,14:l},{6:r,9:16,12:11,13:a,14:l},{6:f,7:d,10:17,11:w},e(c,[2,18],{14:[1,21]}),e(c,[2,16]),e(c,[2,17]),{6:f,7:d,10:22,11:w},{1:[2,7],6:r,12:15,13:a,14:l},e(k,[2,14],{7:g,11:_}),e(x,[2,8]),e(x,[2,9]),e(x,[2,10]),e(c,[2,15]),e(k,[2,13],{7:g,11:_}),e(x,[2,11]),e(x,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(t,s){if(s.recoverable)this.trace(t);else{var i=new Error(t);throw i.hash=s,i}},"parseError"),parse:o(function(t){var s=this,i=[0],u=[],p=[null],n=[],v=this.table,m="",I=0,S=0,L=2,E=1,R=n.slice.call(arguments,1),b=Object.create(this.lexer),C={yy:{}};for(var F in this.yy)Object.prototype.hasOwnProperty.call(this.yy,F)&&(C.yy[F]=this.yy[F]);b.setInput(t,C.yy),C.yy.lexer=b,C.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var T=b.yylloc;n.push(T);var D=b.options&&b.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(P){i.length=i.length-2*P,p.length=p.length-P,n.length=n.length-P}o(j,"popStack");function z(){var P;return P=u.pop()||b.lex()||E,typeof P!="number"&&(P instanceof Array&&(u=P,P=u.pop()),P=s.symbols_[P]||P),P}o(z,"lex");for(var A,W,B,K,H={},X,V,et,Y;;){if(W=i[i.length-1],this.defaultActions[W]?B=this.defaultActions[W]:((A===null||typeof A>"u")&&(A=z()),B=v[W]&&v[W][A]),typeof B>"u"||!B.length||!B[0]){var Q="";Y=[];for(X in v[W])this.terminals_[X]&&X>L&&Y.push("'"+this.terminals_[X]+"'");b.showPosition?Q="Parse error on line "+(I+1)+`:
2
2
  `+b.showPosition()+`
3
3
  Expecting `+Y.join(", ")+", got '"+(this.terminals_[A]||A)+"'":Q="Parse error on line "+(I+1)+": Unexpected "+(A==E?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(Q,{text:b.match,token:this.terminals_[A]||A,line:b.yylineno,loc:T,expected:Y})}if(B[0]instanceof Array&&B.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+A);switch(B[0]){case 1:i.push(A),p.push(b.yytext),n.push(b.yylloc),i.push(B[1]),A=null,S=b.yyleng,m=b.yytext,I=b.yylineno,T=b.yylloc;break;case 2:if(V=this.productions_[B[1]][1],H.$=p[p.length-V],H._$={first_line:n[n.length-(V||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(V||1)].first_column,last_column:n[n.length-1].last_column},D&&(H._$.range=[n[n.length-(V||1)].range[0],n[n.length-1].range[1]]),K=this.performAction.apply(H,[m,S,I,C.yy,B[1],p,n].concat(R)),typeof K<"u")return K;V&&(i=i.slice(0,-1*V*2),p=p.slice(0,-1*V),n=n.slice(0,-1*V)),i.push(this.productions_[B[1]][0]),p.push(H.$),n.push(H._$),et=v[i[i.length-2]][i[i.length-1]],i.push(et);break;case 3:return!0}}return!0},"parse")},O=(function(){var M={EOF:1,parseError:o(function(s,i){if(this.yy.parser)this.yy.parser.parseError(s,i);else throw new Error(s)},"parseError"),setInput:o(function(t,s){return this.yy=s||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var s=t.match(/(?:\r\n?|\n).*/g);return s?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:o(function(t){var s=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-s),this.offset-=s;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===u.length?this.yylloc.first_column:0)+u[u.length-i.length].length-i[0].length:this.yylloc.first_column-s},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-s]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(t){this.unput(this.match.slice(t))},"less"),pastInput:o(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var t=this.pastInput(),s=new Array(t.length+1).join("-");return t+this.upcomingInput()+`
@@ -1,4 +1,4 @@
1
- import{g as gt}from"./chunk-FMBD7UC4-DyaFrKXB.js";import{a as mt,g as lt,h as xt,d as kt}from"./chunk-JSJVCQXG-CBFNLxUY.js";import{g as _t,s as vt,a as bt,b as wt,t as Tt,q as St,_ as n,c as R,d as X,e as $t,A as Mt}from"./index-CCEwWNBR.js";import{d as et}from"./arc-DFHP6PBr.js";var U=(function(){var t=n(function(h,i,a,l){for(a=a||{},l=h.length;l--;a[h[l]]=i);return a},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],c=[1,10],r=[1,11],f=[1,12],u=[1,13],y=[1,14],g={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:n(function(i,a,l,d,p,o,b){var k=o.length-1;switch(p){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:d.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),d.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),d.setAccDescription(this.$);break;case 12:d.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:d.addTask(o[k-1],o[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:c,14:r,16:f,17:u,18:y},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:c,14:r,16:f,17:u,18:y},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:n(function(i,a){if(a.recoverable)this.trace(i);else{var l=new Error(i);throw l.hash=a,l}},"parseError"),parse:n(function(i){var a=this,l=[0],d=[],p=[null],o=[],b=this.table,k="",C=0,K=0,dt=2,Q=1,yt=o.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(i,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;o.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,p.length=p.length-w,o.length=o.length-w}n(pt,"popStack");function D(){var w;return w=d.pop()||_.lex()||Q,typeof w!="number"&&(w instanceof Array&&(d=w,w=d.pop()),w=a.symbols_[w]||w),w}n(D,"lex");for(var v,A,T,q,F={},N,M,tt,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((v===null||typeof v>"u")&&(v=D()),T=b[A]&&b[A][v]),typeof T>"u"||!T.length||!T[0]){var H="";z=[];for(N in b[A])this.terminals_[N]&&N>dt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?H="Parse error on line "+(C+1)+`:
1
+ import{g as gt}from"./chunk-FMBD7UC4-BjW1az1O.js";import{a as mt,g as lt,h as xt,d as kt}from"./chunk-JSJVCQXG-IOt-M54X.js";import{g as _t,s as vt,a as bt,b as wt,t as Tt,q as St,_ as n,c as R,d as X,e as $t,A as Mt}from"./index-CdmevkTd.js";import{d as et}from"./arc-D5a75-bQ.js";var U=(function(){var t=n(function(h,i,a,l){for(a=a||{},l=h.length;l--;a[h[l]]=i);return a},"o"),e=[6,8,10,11,12,14,16,17,18],s=[1,9],c=[1,10],r=[1,11],f=[1,12],u=[1,13],y=[1,14],g={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:n(function(i,a,l,d,p,o,b){var k=o.length-1;switch(p){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:d.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),d.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),d.setAccDescription(this.$);break;case 12:d.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:d.addTask(o[k-1],o[k]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:s,12:c,14:r,16:f,17:u,18:y},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:s,12:c,14:r,16:f,17:u,18:y},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:n(function(i,a){if(a.recoverable)this.trace(i);else{var l=new Error(i);throw l.hash=a,l}},"parseError"),parse:n(function(i){var a=this,l=[0],d=[],p=[null],o=[],b=this.table,k="",C=0,K=0,dt=2,Q=1,yt=o.slice.call(arguments,1),_=Object.create(this.lexer),I={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(I.yy[O]=this.yy[O]);_.setInput(i,I.yy),I.yy.lexer=_,I.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var Y=_.yylloc;o.push(Y);var ft=_.options&&_.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(w){l.length=l.length-2*w,p.length=p.length-w,o.length=o.length-w}n(pt,"popStack");function D(){var w;return w=d.pop()||_.lex()||Q,typeof w!="number"&&(w instanceof Array&&(d=w,w=d.pop()),w=a.symbols_[w]||w),w}n(D,"lex");for(var v,A,T,q,F={},N,M,tt,z;;){if(A=l[l.length-1],this.defaultActions[A]?T=this.defaultActions[A]:((v===null||typeof v>"u")&&(v=D()),T=b[A]&&b[A][v]),typeof T>"u"||!T.length||!T[0]){var H="";z=[];for(N in b[A])this.terminals_[N]&&N>dt&&z.push("'"+this.terminals_[N]+"'");_.showPosition?H="Parse error on line "+(C+1)+`:
2
2
  `+_.showPosition()+`
3
3
  Expecting `+z.join(", ")+", got '"+(this.terminals_[v]||v)+"'":H="Parse error on line "+(C+1)+": Unexpected "+(v==Q?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(H,{text:_.match,token:this.terminals_[v]||v,line:_.yylineno,loc:Y,expected:z})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+v);switch(T[0]){case 1:l.push(v),p.push(_.yytext),o.push(_.yylloc),l.push(T[1]),v=null,K=_.yyleng,k=_.yytext,C=_.yylineno,Y=_.yylloc;break;case 2:if(M=this.productions_[T[1]][1],F.$=p[p.length-M],F._$={first_line:o[o.length-(M||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(M||1)].first_column,last_column:o[o.length-1].last_column},ft&&(F._$.range=[o[o.length-(M||1)].range[0],o[o.length-1].range[1]]),q=this.performAction.apply(F,[k,K,C,I.yy,T[1],p,o].concat(yt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),p=p.slice(0,-1*M),o=o.slice(0,-1*M)),l.push(this.productions_[T[1]][0]),p.push(F.$),o.push(F._$),tt=b[l[l.length-2]][l[l.length-1]],l.push(tt);break;case 3:return!0}}return!0},"parse")},m=(function(){var h={EOF:1,parseError:n(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:n(function(i,a){return this.yy=a||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var a=i.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:n(function(i){var a=i.length,l=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===d.length?this.yylloc.first_column:0)+d[d.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
4
4
  `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(i){this.unput(this.match.slice(i))},"less"),pastInput:n(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var i=this.pastInput(),a=new Array(i.length+1).join("-");return i+this.upcomingInput()+`