tide-commander 1.210.0 → 1.211.0

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 (123) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/assets/{AudioPlayer-CElliTTR.js → AudioPlayer-BkW6rbHa.js} +1 -1
  3. package/dist/assets/{BossLogsModal-DO0Vs1lM.js → BossLogsModal-CWJfLRLA.js} +1 -1
  4. package/dist/assets/{BossSpawnModal-BuDifEmB.js → BossSpawnModal-DMxCXROC.js} +1 -1
  5. package/dist/assets/{ControlsModal-DPcrW0oK.js → ControlsModal-BaSSGPXP.js} +1 -1
  6. package/dist/assets/{DockerLogsModal-DaGU7BRb.js → DockerLogsModal-C_Nb5L_a.js} +1 -1
  7. package/dist/assets/{EmbeddedEditor-BFwoN_46.js → EmbeddedEditor-CG0ULJUZ.js} +1 -1
  8. package/dist/assets/{FcStdViewer-D0qXXGZb.js → FcStdViewer-BgEgrxaw.js} +1 -1
  9. package/dist/assets/{GcodeViewer-DqMtMidS.js → GcodeViewer-CTlX7eA7.js} +1 -1
  10. package/dist/assets/{GlbViewer-B3jqR181.js → GlbViewer-CKaX8cFI.js} +1 -1
  11. package/dist/assets/{GmailOAuthSetup-G3QuK-qX.js → GmailOAuthSetup-1AhXjBRc.js} +1 -1
  12. package/dist/assets/{GoogleOAuthSetup-dCjYnCta.js → GoogleOAuthSetup-DqPgZjOY.js} +1 -1
  13. package/dist/assets/{IframeModal-DYJCvfYE.js → IframeModal-ClN_kGcP.js} +1 -1
  14. package/dist/assets/{IntegrationsPanel-M73zpDQj.js → IntegrationsPanel-ckrmRwYi.js} +2 -2
  15. package/dist/assets/{LogViewerModal-IwhEcaYj.js → LogViewerModal-D_eGItAQ.js} +1 -1
  16. package/dist/assets/{MonitoringModal-k5DVlUx4.js → MonitoringModal-BrsQN8tD.js} +1 -1
  17. package/dist/assets/{PM2LogsModal-CK08IAnZ.js → PM2LogsModal-CKfdmFqw.js} +1 -1
  18. package/dist/assets/{PluginsPanel-DAmAgJvL.js → PluginsPanel-Bfqcnrsb.js} +1 -1
  19. package/dist/assets/{RestoreArchivedAreaModal-BCn-HylF.js → RestoreArchivedAreaModal-oZSTlXhf.js} +1 -1
  20. package/dist/assets/{Scene2DCanvas-DZ3LFW07.js → Scene2DCanvas-B2oTAqlK.js} +1 -1
  21. package/dist/assets/{SceneManager-aCcayL_T.js → SceneManager-pnDsJdS-.js} +1 -1
  22. package/dist/assets/{SkillsPanel-mr09RF0o.js → SkillsPanel-AQimvs-1.js} +1 -1
  23. package/dist/assets/{SlackMultiInstanceSetup-JSGJZGh6.js → SlackMultiInstanceSetup-U4d0XsWJ.js} +1 -1
  24. package/dist/assets/SpawnModal-DgKO0K6L.js +1 -0
  25. package/dist/assets/{StatisticsModal-DyUUvnxL.js → StatisticsModal-DDC8OYen.js} +1 -1
  26. package/dist/assets/{StlViewer-B0mqqtbi.js → StlViewer-DJZ7Qgp0.js} +1 -1
  27. package/dist/assets/{SubordinateAssignmentModal-C7XdTSBc.js → SubordinateAssignmentModal-DCM6PpB_.js} +1 -1
  28. package/dist/assets/{ThreeAreaSelector-Cxtggsnt.js → ThreeAreaSelector-CjEcL3Kh.js} +1 -1
  29. package/dist/assets/{ThreeViewShortcuts-BqvxjuDQ.js → ThreeViewShortcuts-UakjRD8w.js} +1 -1
  30. package/dist/assets/{TriggerManagerPanel-BnTWDT1K.js → TriggerManagerPanel-C42VLQu6.js} +1 -1
  31. package/dist/assets/{VideoPlayer-jknjvQg9.js → VideoPlayer-UW43AiLH.js} +1 -1
  32. package/dist/assets/{WorkflowEditorPanel-CvWwQ2Rk.js → WorkflowEditorPanel-DUvf5X0c.js} +1 -1
  33. package/dist/assets/{abnfDiagram-VRR7QNED-CUyx8tcg.js → abnfDiagram-VRR7QNED-KDmvD_Gi.js} +1 -1
  34. package/dist/assets/{arc-x9pqF0PL.js → arc-D8Dnwz7O.js} +1 -1
  35. package/dist/assets/{architectureDiagram-ZJ3FMSHR-BL9aDWOo.js → architectureDiagram-ZJ3FMSHR-DzHUfCXK.js} +1 -1
  36. package/dist/assets/{area-logos-Dr_ZUFxK.js → area-logos-JqUib9Ux.js} +1 -1
  37. package/dist/assets/{blockDiagram-677ZJIJ3-CaM55zZQ.js → blockDiagram-677ZJIJ3-CwOc3I3e.js} +1 -1
  38. package/dist/assets/{c4Diagram-LMCZKHZV-CCXnyLaP.js → c4Diagram-LMCZKHZV-ByDTz6Pi.js} +1 -1
  39. package/dist/assets/channel-C9DXs2xS.js +1 -0
  40. package/dist/assets/{chunk-2Q5K7J3B-CUBfQrLS.js → chunk-2Q5K7J3B-CJ-5lUjr.js} +1 -1
  41. package/dist/assets/{chunk-32BRIVSS-CBsYvxtB.js → chunk-32BRIVSS-ClxbX6JR.js} +1 -1
  42. package/dist/assets/{chunk-5VM5RSS4-D9K_iBqe.js → chunk-5VM5RSS4-D-B4g6BP.js} +1 -1
  43. package/dist/assets/{chunk-EX3LRPZG-BArv7wZg.js → chunk-EX3LRPZG-DE_ym6tm.js} +1 -1
  44. package/dist/assets/{chunk-JWPE2WC7-nqIaplf_.js → chunk-JWPE2WC7-DbFNU_Ef.js} +1 -1
  45. package/dist/assets/{chunk-MOJQB5TN-D9-EvsXA.js → chunk-MOJQB5TN-BonkkykU.js} +1 -1
  46. package/dist/assets/{chunk-RYQCIY6F-DhEtjvXf.js → chunk-RYQCIY6F-CqaRznBG.js} +1 -1
  47. package/dist/assets/{chunk-V7JOEXUC-CloPxFmQ.js → chunk-V7JOEXUC-DI5OpSJo.js} +1 -1
  48. package/dist/assets/{chunk-VR4S4FIN-B_gj6T5J.js → chunk-VR4S4FIN-DzHJs5bu.js} +1 -1
  49. package/dist/assets/{chunk-XXDRQBXY-CYQuP2YZ.js → chunk-XXDRQBXY-x9Zsg6mD.js} +1 -1
  50. package/dist/assets/classDiagram-OUVF2IWQ-apBPMHmB.js +1 -0
  51. package/dist/assets/classDiagram-v2-EOCWNBFH-apBPMHmB.js +1 -0
  52. package/dist/assets/{cose-bilkent-JH36ORCC-CnNLLImF.js → cose-bilkent-JH36ORCC-B4Gh0RgK.js} +1 -1
  53. package/dist/assets/{cynefin-VYW2F7L2-CIlHlZVD.js → cynefin-VYW2F7L2-1rocbocI.js} +1 -1
  54. package/dist/assets/{cynefinDiagram-TSTJHNR4-DhQrqCi2.js → cynefinDiagram-TSTJHNR4-BCbOrdTH.js} +1 -1
  55. package/dist/assets/{dagre-VKFMJZFB-XKh2Tzhw.js → dagre-VKFMJZFB-CquTDGCQ.js} +1 -1
  56. package/dist/assets/{diagram-FQU43EPY-C7LI8otY.js → diagram-FQU43EPY-CtRps2DK.js} +1 -1
  57. package/dist/assets/{diagram-G47NLZAW-BMBTikTC.js → diagram-G47NLZAW-C8uHzoun.js} +1 -1
  58. package/dist/assets/{diagram-NH7WQ7WH-BW_TXoVZ.js → diagram-NH7WQ7WH-BzGxTXmO.js} +1 -1
  59. package/dist/assets/{diagram-OA4YK3LP-PDlY_6C8.js → diagram-OA4YK3LP-BoUlY6He.js} +1 -1
  60. package/dist/assets/{diagram-WEI45ONY-svn0tX11.js → diagram-WEI45ONY-EewNkn4I.js} +1 -1
  61. package/dist/assets/{ebnfDiagram-CCIWWBDH-BUIULs-0.js → ebnfDiagram-CCIWWBDH-DAp0_rYI.js} +1 -1
  62. package/dist/assets/{erDiagram-Q63AITRT-BiLmEbtK.js → erDiagram-Q63AITRT-CIDiaIv_.js} +1 -1
  63. package/dist/assets/{flowDiagram-23GEKE2U-Mc6PRVJ8.js → flowDiagram-23GEKE2U-ZQudeco2.js} +1 -1
  64. package/dist/assets/{ganttDiagram-NO4QXBWP-BRUNbUed.js → ganttDiagram-NO4QXBWP-DDa9u7Kj.js} +1 -1
  65. package/dist/assets/{gitGraphDiagram-IHSO6WYX-ezzuOWgX.js → gitGraphDiagram-IHSO6WYX-D0LPqp_M.js} +1 -1
  66. package/dist/assets/{index-D_NWG6YH.js → index-BMILmzZt.js} +3 -3
  67. package/dist/assets/{index-CdgtzuJp.js → index-BuW-OFAQ.js} +1 -1
  68. package/dist/assets/{index-BfLoArjP.js → index-CM0wRsAP.js} +1 -1
  69. package/dist/assets/{index-DfYkUGiD.js → index-CbjaD3wY.js} +2 -2
  70. package/dist/assets/{index-D8VUtdAF.js → index-CgtrBMsu.js} +1 -1
  71. package/dist/assets/index-CmZ79Am7.js +2 -0
  72. package/dist/assets/{index-BhcdiVTj.js → index-D0O_xUmt.js} +1 -1
  73. package/dist/assets/{index-Y6_p8QBS.js → index-DjZWtEFJ.js} +1 -1
  74. package/dist/assets/{index-SspfO_Hv.js → index-tU947Zt1.js} +1 -1
  75. package/dist/assets/{infoDiagram-FWYZ7A6U-BlWhqgLQ.js → infoDiagram-FWYZ7A6U-CD4Ws76i.js} +1 -1
  76. package/dist/assets/{ishikawaDiagram-FXEZZL3T-C52xQkXn.js → ishikawaDiagram-FXEZZL3T-DSEmTd2f.js} +1 -1
  77. package/dist/assets/{journeyDiagram-5HDEW3XC-DyobJuKu.js → journeyDiagram-5HDEW3XC-3_c5LjHs.js} +1 -1
  78. package/dist/assets/{kanban-definition-HUTT4EX6-D3TWdW5B.js → kanban-definition-HUTT4EX6-24lijuGn.js} +1 -1
  79. package/dist/assets/{linear-kXdtPjWH.js → linear-B_K6Qcv3.js} +1 -1
  80. package/dist/assets/{main-BmGgLw1j.css → main-6EJsyrfW.css} +1 -1
  81. package/dist/assets/main-D0r07JA_.js +344 -0
  82. package/dist/assets/{mermaid.core-jkxx9VU-.js → mermaid.core-B6sgvfs-.js} +4 -4
  83. package/dist/assets/{mindmap-definition-LN4V7U3C-CbFsW2ye.js → mindmap-definition-LN4V7U3C-BsAOrAHj.js} +1 -1
  84. package/dist/assets/{pegDiagram-2B236MQR-D2nH_y6d.js → pegDiagram-2B236MQR-DdfupKz5.js} +1 -1
  85. package/dist/assets/{pieDiagram-ENE6RG2P-CaK3PEMJ.js → pieDiagram-ENE6RG2P-D1YBZYdK.js} +1 -1
  86. package/dist/assets/{quadrantDiagram-ABIIQ3AL-UgYM7N6C.js → quadrantDiagram-ABIIQ3AL-Bw-hoDGQ.js} +1 -1
  87. package/dist/assets/{railroadDiagram-RFXS5EU6-CC2ZEDL4.js → railroadDiagram-RFXS5EU6-CkmO-Wgv.js} +1 -1
  88. package/dist/assets/{requirementDiagram-TGXJPOKE-nlqWI7vA.js → requirementDiagram-TGXJPOKE-CSI19yqY.js} +1 -1
  89. package/dist/assets/{sankeyDiagram-HTMAVEWB-9uWggzcO.js → sankeyDiagram-HTMAVEWB-BvLYUk8J.js} +1 -1
  90. package/dist/assets/{sequenceDiagram-DBY2YBRQ-0p9VY0Wu.js → sequenceDiagram-DBY2YBRQ-DSQLX4Eb.js} +1 -1
  91. package/dist/assets/{sizeCapture-X5ZJPWSS-B2sHn0MG.js → sizeCapture-X5ZJPWSS-DfyzoJ-u.js} +1 -1
  92. package/dist/assets/{stateDiagram-2N3HPSRC-DpATBmQQ.js → stateDiagram-2N3HPSRC-G3bxzIPH.js} +1 -1
  93. package/dist/assets/stateDiagram-v2-6OUMAXLB-DCUADcVF.js +1 -0
  94. package/dist/assets/{swimlanes-5IMT3BWC-BPpym6MS.js → swimlanes-5IMT3BWC-CDZGonhF.js} +2 -2
  95. package/dist/assets/swimlanesDiagram-G3AALYLV-Ddwy1JnL.js +8 -0
  96. package/dist/assets/{timeline-definition-FHXFAJF6-SrMCxAjV.js → timeline-definition-FHXFAJF6-C5QDZq49.js} +1 -1
  97. package/dist/assets/{vennDiagram-L72KCM5P-_9HfkXQN.js → vennDiagram-L72KCM5P-0a1v0gi5.js} +1 -1
  98. package/dist/assets/{wardleyDiagram-EHGQE667-EnATDQOK.js → wardleyDiagram-EHGQE667-DArhtjvR.js} +1 -1
  99. package/dist/assets/{web-BkIE9AAN.js → web-BU7b4YVF.js} +1 -1
  100. package/dist/assets/{web-CB0hTO4y.js → web-BgCc_AGi.js} +1 -1
  101. package/dist/assets/{web-6vks_1wd.js → web-BiQ9JdSl.js} +1 -1
  102. package/dist/assets/{xychartDiagram-FW5EYKEG-DlMpFz7X.js → xychartDiagram-FW5EYKEG-BIZcXzGL.js} +1 -1
  103. package/dist/build-info.json +1 -1
  104. package/dist/index.html +2 -2
  105. package/dist/src/packages/server/data/builtin-skills/conversation-history.js +3 -2
  106. package/dist/src/packages/server/data/event-queries.js +16 -6
  107. package/dist/src/packages/server/data/migrations/009_whatsapp_participant_jid.sql +9 -0
  108. package/dist/src/packages/server/data/migrations/010_whatsapp_participant_alt_jid.sql +9 -0
  109. package/dist/src/packages/server/integrations/whatsapp/whatsapp-client.js +6 -2
  110. package/dist/src/packages/server/integrations/whatsapp/whatsapp-routes.js +103 -2
  111. package/dist/src/packages/server/integrations/whatsapp/whatsapp-skill.js +11 -0
  112. package/dist/src/packages/server/integrations/whatsapp/whatsapp-trigger-handler.js +48 -5
  113. package/dist/src/packages/server/routes/event-routes.js +2 -0
  114. package/dist/src/packages/server/routes/files.js +169 -0
  115. package/package.json +1 -1
  116. package/dist/assets/SpawnModal-Rduhhunw.js +0 -1
  117. package/dist/assets/channel-W4AeOLhF.js +0 -1
  118. package/dist/assets/classDiagram-OUVF2IWQ-39XSHTF2.js +0 -1
  119. package/dist/assets/classDiagram-v2-EOCWNBFH-39XSHTF2.js +0 -1
  120. package/dist/assets/index-C9Axek5A.js +0 -2
  121. package/dist/assets/main-Bt4E0_YW.js +0 -344
  122. package/dist/assets/stateDiagram-v2-6OUMAXLB-CQH1oSae.js +0 -1
  123. package/dist/assets/swimlanesDiagram-G3AALYLV-BhNebkPx.js +0 -8
@@ -0,0 +1,2 @@
1
+ import{r as i,aV as $a,aW as la,Q as ha,aX as ga,j as e,aY as xa,u as ba,aZ as Pa,a_ as La,aq as za,a$ as Ra,b0 as Oa,aJ as _a,m as qt,S as k,z as Yt,b1 as Rt,b2 as ra,b3 as Pt,b4 as te,b5 as Da,s as h,L as wa,a1 as va,f as Ca,b6 as Ba,b7 as oa,b8 as ca,I as p,b9 as Fa,ba as ta,aM as ja,bb as Wa,t as ka,ak as Na,bc as ya,bd as Ha,be as Ua,bf as Ga,ap as Va,bg as Xa,bh as qa,bi as Ya,aP as Ka,aQ as Za,aR as Ja,bj as Qa,bk as en,bl as aa,_ as tn,V as an,bm as nn,bn as sn,bo as ln,bp as rn,bq as on,br as cn,bs as dn,bt as un,bu as pn,bv as Kt,bw as da,bx as mn,by as fn,bz as hn,E as gn,bA as xn,bB as bn,bC as _n,bD as wn,bE as vn,bF as Cn,bG as jn,bH as Qe,bI as kn,bJ as Nn,bK as yn,bL as Sn,bM as An,bN as ht,bO as En,bP as In,bQ as Mn,bR as Tn,n as $n,D as Pn,p as Zt,C as Ln,bS as zn}from"./main-D0r07JA_.js";import{g as Rn}from"./area-logos-JqUib9Ux.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DYBBrXTx.js";function On(f){const c=i.useRef(f);c.current=f,i.useEffect(()=>{if(!$a())return;let b=null,C=!1;return la.addListener("backButton",()=>{c.current()==="exit"&&la.exitApp()}).then(S=>{C?S.remove():b=S}),()=>{C=!0,b&&(b.remove(),b=null)}},[])}async function Dn(f){const c=ha(),b=await fetch(`${ga()}/api/agents/${f}/terminal`,{method:"POST",headers:{Authorization:`Bearer ${c}`}});if(!b.ok){const C=await b.json().catch(()=>({}));throw new Error((C==null?void 0:C.error)||`Failed to start terminal (${b.status})`)}return b.json()}async function Bn(f){const c=ha();await fetch(`${ga()}/api/agents/${f}/terminal`,{method:"DELETE",headers:{Authorization:`Bearer ${c}`}})}const gt=new Map;function Fn({agentId:f}){const[c,b]=i.useState(null),[C,S]=i.useState(null);return i.useEffect(()=>{let $=!1;const E=gt.get(f);return E&&(clearTimeout(E),gt.delete(f)),b(null),S(null),Dn(f).then(A=>{$||b(A.url)}).catch(A=>{$||S(A instanceof Error?A.message:"Failed to start terminal")}),()=>{$=!0;const A=gt.get(f);A&&clearTimeout(A),gt.set(f,setTimeout(()=>{gt.delete(f),Bn(f)},2500))}},[f]),C?e.jsx("div",{className:"flat-classic-terminal flat-classic-terminal--message",children:e.jsx("span",{children:C})}):c?e.jsx("div",{className:"flat-classic-terminal",children:e.jsx(xa,{terminalUrl:c,visible:!0})}):e.jsx("div",{className:"flat-classic-terminal flat-classic-terminal--message",children:e.jsx("span",{children:"Attaching to interactive session…"})})}const Wn=i.memo(function({className:c=""}){const{t:b}=ba(["common"]),[C,S]=Pa(),$=i.useRef(null),[E,A]=i.useState(null);i.useLayoutEffect(()=>{const N=$.current;if(!N)return;const _=N.querySelector(".view-mode-toggle__btn--active");_&&A({left:_.offsetLeft,width:_.offsetWidth})},[C]);const we=i.useCallback(N=>{if(N!==C){if(typeof window<"u"&&window.dispatchEvent(new CustomEvent("tide:viewmode-switch-pressed",{detail:{mode:N}})),N==="3d"){requestAnimationFrame(()=>S(N));return}S(N)}},[C,S]);return e.jsxs("div",{className:`view-mode-toggle ${c}`,ref:$,children:[E&&e.jsx("div",{className:"view-mode-toggle__indicator",style:{left:E.left,width:E.width}}),La.map(N=>e.jsxs("button",{className:`view-mode-toggle__btn ${C===N?"view-mode-toggle__btn--active":""}`,onClick:()=>we(N),title:b(`common:viewMode.descriptions.${N}`),children:[e.jsxs("span",{className:"view-mode-toggle__icon",children:[N==="2d"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),e.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),e.jsx("line",{x1:"12",y1:"3",x2:"12",y2:"21"})]}),N==="3d"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),e.jsx("path",{d:"M2 17l10 5 10-5"}),e.jsx("path",{d:"M2 12l10 5 10-5"})]}),N==="flat"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"3",width:"8",height:"8",rx:"1"}),e.jsx("rect",{x:"13",y:"3",width:"8",height:"8",rx:"1"}),e.jsx("rect",{x:"3",y:"13",width:"8",height:"8",rx:"1"}),e.jsx("rect",{x:"13",y:"13",width:"8",height:"8",rx:"1"})]}),N==="dashboard"&&e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("rect",{x:"3",y:"3",width:"7",height:"9",rx:"1"}),e.jsx("rect",{x:"14",y:"3",width:"7",height:"5",rx:"1"}),e.jsx("rect",{x:"14",y:"12",width:"7",height:"9",rx:"1"}),e.jsx("rect",{x:"3",y:"16",width:"7",height:"5",rx:"1"})]})]}),e.jsx("span",{className:"view-mode-toggle__label",children:b(`common:viewMode.labels.${N}`)})]},N))]})}),Lt=3,zt=280,ua=320,Jt=240,pa=64,Hn=["simple","chat","advanced"],ma={simple:"Simple",chat:"Chat",advanced:"Advanced"},fa={simple:"○",chat:"◐",advanced:"◉"},Un={simple:"Simple view — clean messages only",chat:"Chat view — assistant replies (no tool calls)",advanced:"Advanced view — everything including tools"},Qt="flat-clear-context",Sa="tide:flat-embedded-panels";function Aa(){try{const f=localStorage.getItem(Sa),c=f?JSON.parse(f):{};return c&&typeof c=="object"?c:{}}catch{return{}}}function ea(f,c){try{const b=Aa();c?b[f]=c:delete b[f],localStorage.setItem(Sa,JSON.stringify(b))}catch{}}function Gn(f){const c=f.split("/").filter(Boolean);return c.length===0?f:c.slice(-2).join("/")}function Vn(f){if(f.provider==="codex"){const $=f.codexModel||"gpt-5.6-luna",E=$n[$];return{model:(E==null?void 0:E.label)||$}}if(f.provider==="opencode")return{model:f.opencodeModel||"opencode"};if(f.provider==="grok"){const $=f.grokModel||Pn,E=f.effort,A=E?Zt[E]:void 0;return{model:$,effort:A==null?void 0:A.label}}if(f.provider==="pi"){const $=f.piModel||"pi default",E=f.effort,A=E?Zt[E]:void 0;return{model:$,effort:A==null?void 0:A.label}}const c=f.model||f.detectedModel||"default",b=Ln[c],C=f.effort,S=C?Zt[C]:void 0;return{model:(b==null?void 0:b.label)||c,effort:S==null?void 0:S.label}}function Xn(f,c){if(c.type==="rectangle"&&c.width&&c.height){const b=c.width/2,C=c.height/2;return f.x>=c.center.x-b&&f.x<=c.center.x+b&&f.z>=c.center.z-C&&f.z<=c.center.z+C}if(c.type==="circle"&&c.radius){const b=f.x-c.center.x,C=f.z-c.center.z;return b*b+C*C<=c.radius*c.radius}return!1}const qn=an.memo(function({agentId:c,terminalViewMode:b,onTerminalViewModeChange:C,inspectorOpen:S,onToggleInspector:$,onShowTaskBoard:E,onImageClick:A,onFileClick:we,onBashClick:N,onViewMarkdown:_,onRequestClearSubordinates:ve,keyboard:xt,canNavigateBack:We,canNavigateForward:et,onNavigateBack:Ce,onNavigateForward:je,agentInfoOpen:tt,onToggleAgentInfo:bt,onHeaderContextMenu:at,onBuildingContextMenu:re}){var a,s,r;const m=wa(c),M=Ca(),oe=nn(),ce=i.useRef(null),ae=i.useRef(null),H=(m==null?void 0:m.provider)??"claude",Le=H==="claude"||H==="codex"||H==="opencode"||H==="grok"||H==="pi",He=H==="pi"?`${H}:${(m==null?void 0:m.piModelProvider)??""}:${(m==null?void 0:m.piModel)??""}`:H==="opencode"?`${H}:${(m==null?void 0:m.opencodeModel)??""}`:H,ze=sn(c,!!m&&Le,6e4,He);ln(!0,c);const nt=c,_t=m,ke=!!oe.interactiveMode&&((m==null?void 0:m.provider)??"claude")==="claude"&&!!(m!=null&&m.sessionId),[Z,de]=i.useState(!1),[O,Ne]=i.useState(()=>Rt(k.SLASH_COMMAND_OUTPUTS_VISIBLE,!0)),ue=i.useCallback(()=>{Ne(t=>{const n=!t;return te(k.SLASH_COMMAND_OUTPUTS_VISIBLE,n),n})},[]),[Ue,Ge]=i.useState(null),Ve=i.useMemo(()=>{const t=Hn.map(n=>{const l=!Z&&b===n;return{id:`view-mode-${n}`,label:ma[n],icon:e.jsx("span",{className:"flat-terminal-wrapper__view-mode-icon",children:fa[n]}),shortcut:l?"✓":void 0,onClick:()=>{de(!1),C(n),Ge(null)}}});return ke&&t.push({id:"view-mode-classic-tui",label:"Classic TUI",icon:e.jsx(p,{name:"terminal",size:13}),shortcut:Z?"✓":void 0,onClick:()=>{de(n=>!n),Ge(null)}}),t},[ke,Z,b,C]),[ye,pe]=i.useState(!1),P=i.useCallback(()=>pe(!1),[]);_a("flat-chat-actions",ye,P),i.useEffect(()=>{const t=()=>pe(n=>!n);return window.addEventListener("tide:toggle-chat-actions",t),()=>window.removeEventListener("tide:toggle-chat-actions",t)},[]),i.useEffect(()=>{de(!1),pe(!1)},[c]),i.useEffect(()=>{!ke&&Z&&de(!1)},[ke,Z]),i.useEffect(()=>{const t=ae.current;if(!t)return;const n=o=>{o.button===3?(o.preventDefault(),o.stopPropagation(),Ce()):o.button===4&&(o.preventDefault(),o.stopPropagation(),je())},l=o=>{(o.button===3||o.button===4)&&o.preventDefault()};return t.addEventListener("mouseup",n),t.addEventListener("mousedown",l),()=>{t.removeEventListener("mouseup",n),t.removeEventListener("mousedown",l)}},[Ce,je]),i.useEffect(()=>{const t=ae.current;if(!t)return;let n=0,l=0,o=0;const v=250,j=600,d=80,T=1.5,I=g=>{let w=g instanceof HTMLElement?g:null;for(;w&&w!==t;){const B=window.getComputedStyle(w).overflowX;if((B==="auto"||B==="scroll")&&w.scrollWidth>w.clientWidth)return!0;w=w.parentElement}return!1},u=g=>{const w=Date.now();if(w<o){g.preventDefault();return}if(Math.abs(g.deltaX)<=Math.abs(g.deltaY)*T){n=0;return}if(I(g.target)){n=0;return}w-l>v&&(n=0),l=w,n+=g.deltaX,n<=-d?(n=0,o=w+j,g.preventDefault(),Ce()):n>=d&&(n=0,o=w+j,g.preventDefault(),je())};return t.addEventListener("wheel",u,{passive:!1}),()=>t.removeEventListener("wheel",u)},[Ce,je]);const U=va(),Se=i.useMemo(()=>{if(!m)return null;const t=new Set,n=[];for(const l of U.values())l.archived||l.directories.length===0||l.assignedAgentIds.includes(c)&&(t.add(l.id),n.push(l));for(const l of U.values())l.archived||l.directories.length===0||t.has(l.id)||Xn({x:m.position.x,z:m.position.z},l)&&(t.add(l.id),n.push(l));return n.length===0?null:n.flatMap(l=>l.directories.filter(o=>o&&o.trim().length>0).map(o=>({areaId:l.id,areaName:l.name,dir:o})))},[m,c,U]),{branches:me,fetchRemote:fe,fetchingDirs:wt}=rn(Se),[st,vt]=i.useState({}),[Xe,Ct]=i.useState(null),Re=i.useMemo(()=>{var v,j;const t=h.getAreaForAgent(c);if(!t)return[];const n=[],l=(v=t.directories.find(d=>d&&d.trim().length>0))==null?void 0:v.trim(),o=l?l.split("/").filter(Boolean).pop()||l:t.name;n.push({id:on(t.id),name:o,hasUrl:!!st[t.id],isDefault:!0});for(const d of M.values())d.type==="terminal"&&h.isPositionInArea(d.position,t)&&n.push({id:d.id,name:d.name,hasUrl:!!((j=d.terminalStatus)!=null&&j.url)});return n},[c,M,U,st]),J=i.useMemo(()=>{var l;const t=h.getAreaForAgent(c);if(!t)return[];const n=[];for(const o of M.values())o.type==="server"&&((l=o.pm2)!=null&&l.enabled)&&h.isPositionInArea(o.position,t)&&n.push({id:o.id,name:o.name});return n},[c,M]),qe=i.useMemo(()=>{const t=h.getAreaForAgent(c);if(!t)return[];const n=[];for(const l of M.values())l.type==="database"&&l.database&&h.isPositionInArea(l.position,t)&&n.push({id:l.id,name:l.name});return n},[c,M]),Oe=cn(),Ye=i.useMemo(()=>{const t=h.getAreaForAgent(c);if(!t)return[];const n=[];for(const l of M.values())if(l.type==="tests"&&h.isPositionInArea(l.position,t)){const o=!!l.folderPath&&Oe.some(v=>dn(v,l.folderPath));n.push({id:l.id,name:l.name,working:o})}return n},[c,M,Oe]),Ae=i.useMemo(()=>{const t=h.getAreaForAgent(c);if(!t)return[];const n=[];for(const l of M.values())l.type==="http"&&h.isPositionInArea(l.position,t)&&n.push({id:l.id,name:l.name});return n},[c,M]),jt=i.useMemo(()=>{var l;const t=h.getAreaForAgent(c);if(!t)return[];const n=[];for(const o of M.values())o.type==="slash-command"&&((l=o.slashCommand)!=null&&l.command)&&h.isPositionInArea(o.position,t)&&n.push({id:o.id,name:o.name,icon:o.icon,command:o.slashCommand.command});return n},[c,M]),[,Ot]=i.useReducer(t=>t+1,0),he=((a=ce.current)==null?void 0:a.search.searchMode)??!1,kt=i.useCallback(()=>{var t;(t=ce.current)==null||t.search.toggleSearch(),Ot()},[]),it=un(),Ee=it.isPending(Qt),[x,Q]=i.useState(null),z=x?M.get(x.buildingId):null,[Nt,D]=i.useState(""),[G,Ke]=i.useState(()=>pn()),L=i.useMemo(()=>{var t;return((t=h.getAreaForAgent(c))==null?void 0:t.id)??null},[c,M]),Ie=i.useCallback((t,n)=>{D(""),Q(l=>{const o=(l==null?void 0:l.buildingId)===n?null:{type:t,buildingId:n};return L&&ea(L,o),o})},[L]),ne=i.useCallback(()=>{D(""),Q(null),L&&ea(L,null)},[L]);i.useEffect(()=>{if((x==null?void 0:x.type)!=="pm2-logs")return;const t=x.buildingId;return h.startLogStreaming(t,200),()=>h.stopLogStreaming(t)},[x]),i.useEffect(()=>{if(Ct(null),(x==null?void 0:x.type)!=="terminal"||!Kt(x.buildingId))return;const t=da(x.buildingId);let n=!1;return mn(t).then(l=>{n||vt(o=>o[t]===l.url?o:{...o,[t]:l.url})}).catch(l=>{n||Ct(l instanceof Error?l.message:"Failed to start terminal")}),()=>{n=!0}},[x]);const{height:Dt,onResizeStart:Bt}=fn(),{sidePanelWidth:lt,handleSidePanelResizeStart:De}=hn(),[se,ge]=i.useState(()=>Rt(k.GIT_PANEL_OPEN,!1)),[Me,q]=i.useState(()=>Rt(k.BUILDINGS_PANEL_OPEN,!1)),[V,yt]=i.useState(!1),St=i.useCallback(()=>{yt(t=>!t)},[]),rt=i.useCallback(()=>yt(!1),[]),ot=i.useCallback(()=>{ge(t=>{const n=!t;return te(k.GIT_PANEL_OPEN,n),n})},[]),At=i.useCallback(()=>{q(t=>{const n=!t;return te(k.BUILDINGS_PANEL_OPEN,n),n})},[]),Ft=i.useCallback(()=>{ge(!1),te(k.GIT_PANEL_OPEN,!1)},[]),Wt=i.useCallback(()=>{q(!1),te(k.BUILDINGS_PANEL_OPEN,!1)},[]),ie=gn(),ee=i.useMemo(()=>({terminal:Re,"pm2-logs":J,database:qe,tests:Ye,http:Ae}),[Re,J,qe,Ye,Ae]);i.useEffect(()=>{if(!x)return;ee[x.type].some(n=>n.id===x.buildingId)||(D(""),Q(null))},[x,ee]);const ct=i.useRef(void 0);i.useEffect(()=>{var n;if(ct.current===L)return;ct.current=L;const t=L?Aa()[L]:void 0;D(""),t&&((n=ee[t.type])!=null&&n.some(l=>l.id===t.buildingId))?Q(t):Q(null)},[L,ee]),i.useEffect(()=>{const t=n=>{var v;const l=n.detail;if(!(l!=null&&l.buildingId)||!(l!=null&&l.type)||!((v=ee[l.type])!=null&&v.some(j=>j.id===l.buildingId)))return;l.handled=!0,D("");const o={type:l.type,buildingId:l.buildingId};Q(o),L&&ea(L,o)};return window.addEventListener("tide:dock-building-flat",t),()=>window.removeEventListener("tide:dock-building-flat",t)},[ee,L]);const[Be,xe]=i.useState(!1),Te=i.useRef(null);if(i.useEffect(()=>{if(!Be)return;const t=n=>{Te.current&&!Te.current.contains(n.target)&&xe(!1)};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[Be]),!m)return e.jsx("div",{className:"flat-chat flat-chat--empty",children:e.jsxs("div",{className:"flat-chat__placeholder",children:[e.jsx("span",{className:"flat-chat__placeholder-icon",children:"💬"}),e.jsx("span",{className:"flat-chat__placeholder-text",children:"Select an agent to start chatting"})]})});const Ze=!!m.contextStats,{totalTokens:Ht,contextWindow:Je,usedPercent:$e}=ja(m),dt=Math.round($e*10)/10,X=$e>=80?"#ff4a4a":$e>=60?"#ff9e4a":$e>=40?"#ffd700":"#4aff9e",ut=(Ht/1e3).toFixed(1),pt=(Je/1e3).toFixed(1),Ut=xn(Je),mt=bn(ze.snapshot),le=mt?Math.max(0,Math.min(100,mt.utilization)):null,Pe=((s=ze.snapshot)==null?void 0:s.provider)==="opencode"&&ze.snapshot.plan==="free",Et=Pe?"#4aff9e":le===null?"var(--text-muted)":zn(le),Y=Pe?"Free":le===null?ze.loading?"…":"—":`${Math.round(le)}%`,K=m.cwd,It=K?Gn(K):null,be=((r=m.subordinateIds)==null?void 0:r.length)||0,Mt=be>0;return e.jsxs("div",{ref:ae,className:`flat-terminal-wrapper ${se||Me||V?"flat-terminal-wrapper--with-side-panel":""}`,style:{"--guake-side-panel-width":`min(${lt}px, 70%)`},children:[e.jsxs("div",{className:"flat-terminal-wrapper__header",children:[e.jsxs("div",{className:`flat-terminal-wrapper__header-main ${tt?"flat-terminal-wrapper__header-main--active":""}`,onClick:bt,onContextMenu:t=>{t.preventDefault(),t.stopPropagation(),at({x:t.clientX,y:t.clientY})},title:tt?"Hide agent info":"Show agent info",children:[e.jsxs("span",{className:`flat-terminal-wrapper__header-avatar${m.status==="working"?" is-working":""}`,children:[e.jsx(ka,{agent:m,size:28}),m.status==="working"&&e.jsx(ta,{animated:!0,size:12,className:"flat-terminal-wrapper__header-activity"})]}),e.jsxs("span",{className:"flat-terminal-wrapper__header-info",children:[e.jsxs("span",{className:"flat-terminal-wrapper__header-identity",children:[e.jsx("span",{className:"flat-terminal-wrapper__header-name",children:m.name}),e.jsx(_n,{name:m.name,id:m.id})]}),e.jsx("span",{className:"flat-terminal-wrapper__header-status",style:{color:ya(m.status)},title:m.status==="error"&&m.lastError?m.lastError:void 0,children:m.status})]}),m.taskLabel&&e.jsxs("span",{className:"flat-terminal-wrapper__header-task",title:m.taskLabel,children:["📋 ",m.taskLabel]}),e.jsxs("span",{className:"flat-terminal-wrapper__header-model",children:[e.jsx(Na,{agent:m,alt:`${m.name} provider`,className:"flat-terminal-wrapper__header-provider-icon"}),(()=>{const{model:t,effort:n}=Vn(m);return e.jsxs("span",{className:"flat-terminal-wrapper__header-model-chip",title:n?`Model: ${t} · Effort: ${n}`:`Model: ${t}`,children:[e.jsx("span",{className:"flat-terminal-wrapper__header-model-name",children:t}),n&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"flat-terminal-wrapper__header-model-sep","aria-hidden":"true",children:"·"}),e.jsx("span",{className:"flat-terminal-wrapper__header-model-effort",children:n})]})]})})()]})]}),e.jsxs("div",{className:"flat-terminal-wrapper__header-meta",children:[e.jsx("div",{className:"flat-terminal-wrapper__view-mode",children:e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__view-mode-btn flat-terminal-wrapper__view-mode-trigger${Ue?" flat-terminal-wrapper__view-mode-trigger--open":""}`,onClick:t=>{const n=t.currentTarget.getBoundingClientRect();Ge({x:n.left,y:n.bottom+4})},title:Z?"Classic TUI — attach to the live interactive claude session in a terminal":Un[b],"aria-haspopup":"menu","aria-expanded":!!Ue,"aria-label":"Message view mode",children:[e.jsx("span",{className:"flat-terminal-wrapper__view-mode-icon","aria-hidden":"true",children:Z?e.jsx(p,{name:"terminal",size:13}):fa[b]}),e.jsx("span",{className:"flat-terminal-wrapper__view-mode-label",children:Z?"Classic TUI":ma[b]}),e.jsx(p,{name:"caret-down",size:9})]})}),e.jsxs("div",{className:"flat-terminal-wrapper__actions",role:"group","aria-label":"Terminal actions",children:[e.jsx("button",{type:"button",className:"flat-terminal-wrapper__action-btn",onClick:Ce,disabled:!We,title:"Back to previous agent","aria-label":"Back to previous agent",children:e.jsx(p,{name:"arrow-left",size:14})}),e.jsx("button",{type:"button",className:"flat-terminal-wrapper__action-btn",onClick:je,disabled:!et,title:"Forward to next agent","aria-label":"Forward to next agent",children:e.jsx(p,{name:"arrow-right",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${he?"flat-terminal-wrapper__action-btn--active":""}`,onClick:kt,title:he?"Close search":"Search messages","aria-pressed":he,children:e.jsx(p,{name:he?"cross":"search",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${O?"flat-terminal-wrapper__action-btn--active":""}`,onClick:ue,title:O?"Hide slash command output":"Show slash command output","aria-label":O?"Hide slash command output":"Show slash command output","aria-pressed":O,children:e.jsx(p,{name:O?"eye":"eye-closed",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn flat-terminal-wrapper__action-btn--danger ${Ee?"flat-terminal-wrapper__action-btn--confirm":""}`,onClick:()=>it.handleClick(Qt,()=>{var t;h.clearContext(c),(t=ce.current)==null||t.historyLoader.clearHistory()}),title:Ee?"Click again to confirm clear context":"Clear context",children:e.jsx(p,{name:Ee?"question":"clear",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${se?"flat-terminal-wrapper__action-btn--active":""}`,onClick:ot,title:se?"Hide git panel":"Show git changes","aria-pressed":se,children:e.jsx(p,{name:"git-branch",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${Me?"flat-terminal-wrapper__action-btn--active":""}`,onClick:At,title:Me?"Hide buildings panel":"Show area buildings","aria-pressed":Me,children:e.jsx(p,{name:"buildings",size:14})}),e.jsxs("div",{className:"flat-terminal-wrapper__more",ref:Te,children:[e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${Be?"flat-terminal-wrapper__action-btn--active":""}`,onClick:()=>xe(t=>!t),title:"More actions","aria-expanded":Be,children:"⋮"}),Be&&e.jsxs("div",{className:"flat-terminal-wrapper__more-menu",role:"menu",children:[e.jsxs("button",{type:"button",role:"menuitem",className:`flat-terminal-wrapper__more-item ${V?"flat-terminal-wrapper__more-item--active":""}`,onClick:()=>{St(),xe(!1)},title:V?"Hide Debug Panel":"Show Debug Panel",children:[e.jsx(p,{name:"bug",size:14}),e.jsx("span",{children:V?"Hide Debug Panel":"Show Debug Panel"})]}),e.jsx("div",{className:"flat-terminal-wrapper__more-divider"}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item",onClick:()=>{h.collapseContext(c),xe(!1)},disabled:m.status!=="idle",title:m.status!=="idle"?"Agent must be idle to collapse context":"Collapse context",children:[e.jsx(p,{name:"package",size:14}),e.jsx("span",{children:"Collapse context"})]}),Mt&&e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item flat-terminal-wrapper__more-item--danger",onClick:()=>{ve(c,be),xe(!1)},children:[e.jsx(p,{name:"crown",size:14}),e.jsxs("span",{children:["Clear ",be," subordinate",be===1?"":"s"]})]}),e.jsx("div",{className:"flat-terminal-wrapper__more-divider"}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item flat-terminal-wrapper__more-item--danger",onClick:()=>{h.killAgent(c),xe(!1)},children:[e.jsx(p,{name:"cross",size:14}),e.jsx("span",{children:"Remove agent"})]})]})]})]}),e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__inspector-toggle ${S?"flat-terminal-wrapper__inspector-toggle--active":""}`,onClick:$,title:S?"Hide inspector panel":"Show inspector panel","aria-label":S?"Hide inspector panel":"Show inspector panel","aria-pressed":S,children:[e.jsx("span",{className:"flat-terminal-wrapper__inspector-icon","aria-hidden":"true",children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"1.5",y:"2.5",width:"13",height:"11",rx:"1.5"}),e.jsx("line",{x1:"10",y1:"2.5",x2:"10",y2:"13.5"})]})}),e.jsx("span",{className:"flat-terminal-wrapper__inspector-label",children:"Inspector"})]}),e.jsx("button",{type:"button",className:"flat-terminal-wrapper__close",onClick:()=>h.deselectAll(),title:"Close chat","aria-label":"Close chat",children:e.jsx(p,{name:"cross",size:14})})]})]}),ye&&e.jsxs("div",{className:"flat-chat-actions-sheet-root",role:"presentation",children:[e.jsx("div",{className:"flat-chat-actions-sheet__backdrop",onClick:P}),e.jsxs("div",{className:"flat-chat-actions-sheet",role:"menu","aria-label":"Chat actions",children:[e.jsx("div",{className:"flat-chat-actions-sheet__grabber","aria-hidden":"true"}),e.jsxs("div",{className:"flat-chat-actions-sheet__title-row",children:[e.jsx("span",{className:"flat-chat-actions-sheet__title",children:m.name}),e.jsx("button",{type:"button",className:"flat-chat-actions-sheet__done",onClick:P,children:"Done"})]}),e.jsxs("div",{className:"flat-chat-actions-sheet__grid",children:[e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${he?"is-active":""}`,onClick:()=>{kt(),P()},children:[e.jsx(p,{name:he?"cross":"search",size:20}),e.jsx("span",{children:he?"Close search":"Search"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${O?"is-active":""}`,onClick:()=>{ue(),P()},children:[e.jsx(p,{name:O?"eye":"eye-closed",size:20}),e.jsx("span",{children:"Slash output"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${se?"is-active":""}`,onClick:()=>{ot(),P()},children:[e.jsx(p,{name:"git-branch",size:20}),e.jsx("span",{children:"Git changes"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${Me?"is-active":""}`,onClick:()=>{At(),P()},children:[e.jsx(p,{name:"buildings",size:20}),e.jsx("span",{children:"Buildings"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${V?"is-active":""}`,onClick:()=>{St(),P()},children:[e.jsx(p,{name:"bug",size:20}),e.jsx("span",{children:"Debug"})]})]}),e.jsxs("div",{className:"flat-chat-actions-sheet__list",children:[e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__row flat-chat-actions-sheet__row--danger ${Ee?"is-armed":""}`,onClick:()=>it.handleClick(Qt,()=>{var t;h.clearContext(c),(t=ce.current)==null||t.historyLoader.clearHistory(),P()}),children:[e.jsx(p,{name:Ee?"question":"clear",size:18}),e.jsx("span",{children:Ee?"Tap again to confirm clear":"Clear context"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-chat-actions-sheet__row",disabled:m.status!=="idle",onClick:()=>{h.collapseContext(c),P()},children:[e.jsx(p,{name:"package",size:18}),e.jsx("span",{children:"Collapse context"})]}),Mt&&e.jsxs("button",{type:"button",role:"menuitem",className:"flat-chat-actions-sheet__row flat-chat-actions-sheet__row--danger",onClick:()=>{ve(c,be),P()},children:[e.jsx(p,{name:"crown",size:18}),e.jsxs("span",{children:["Clear ",be," subordinate",be===1?"":"s"]})]}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-chat-actions-sheet__row flat-chat-actions-sheet__row--danger",onClick:()=>{h.killAgent(c),P()},children:[e.jsx(p,{name:"cross",size:18}),e.jsx("span",{children:"Remove agent"})]})]})]})]}),e.jsx(wn,{agent:m,onClick:E}),Z&&ke?e.jsx(Fn,{agentId:c}):nt&&_t?e.jsx(vn,{ref:ce,agentId:nt,agent:_t,viewMode:b,isOpen:!0,showSlashCommandOutputs:O,onImageClick:A,onFileClick:we,onBashClick:N,onViewMarkdown:_,keyboard:xt,hasModalOpen:!1},nt):null,x&&(z||Kt(x.buildingId))&&(()=>{var T,I;const t=x.type,n=Kt(x.buildingId),l=(z==null?void 0:z.name)??`Terminal — ${((T=Re.find(u=>u.id===x.buildingId))==null?void 0:T.name)??"area"}`,o=n?st[da(x.buildingId)]:(I=z==null?void 0:z.terminalStatus)==null?void 0:I.url,v={terminal:"terminal","pm2-logs":"scroll",database:"hard-drives",tests:"flask",http:"globe"},j=t==="terminal"&&!o,d=!j&&!n;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"guake-bottom-terminal-resize",onMouseDown:Bt,role:"separator","aria-orientation":"horizontal","aria-label":"Resize embedded panel"}),e.jsxs("div",{className:"flat-bottom-panel",role:"region","aria-label":`${l} panel`,style:{height:Dt},children:[e.jsxs("div",{className:"flat-bottom-panel__header",children:[e.jsxs("span",{className:"flat-bottom-panel__title",children:[e.jsx(p,{name:v[t],size:12}),e.jsx("span",{children:l}),j&&e.jsx("span",{className:"flat-bottom-panel__muted",children:"(starting...)"})]}),e.jsxs("span",{className:"flat-bottom-panel__header-actions",children:[t==="pm2-logs"&&z&&e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",className:"guake-bottom-terminal-filter",value:Nt,onChange:u=>D(u.target.value),placeholder:"Filter logs","aria-label":`Filter logs for ${z.name}`,spellCheck:!1}),e.jsx("select",{className:"guake-bottom-terminal-retention",value:G===null?"unlimited":String(G),onChange:u=>{const g=u.target.value==="unlimited"?null:Number(u.target.value);Ke(g),jn(g)},"aria-label":`Max log retention for ${z.name}`,children:Cn.map(u=>e.jsx("option",{value:u===null?"unlimited":String(u),children:u===null?"Unlimited":`${u.toLocaleString()} lines`},u===null?"unlimited":u))}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>h.clearStreamingLogs(x.buildingId),title:"Clear logs",children:e.jsx(p,{name:"trash",size:12})}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>h.sendBuildingCommand(x.buildingId,"restart"),title:"Restart",children:e.jsx(p,{name:"restart",size:12})})]}),d&&e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>{ne(),Qe(x.buildingId)},title:"Maximize — open as modal","aria-label":"Open as modal",children:e.jsx(p,{name:"fullscreen",size:12})}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:ne,title:"Close panel","aria-label":"Close panel",children:e.jsx(p,{name:"cross",size:12})})]})]}),e.jsx("div",{className:"flat-bottom-panel__body",children:t==="terminal"?o?e.jsx(xa,{terminalUrl:o,visible:!0}):e.jsx("div",{className:"flat-bottom-panel__placeholder",children:Xe??"Starting terminal..."}):t==="pm2-logs"?e.jsx(kn,{buildingId:x.buildingId,filterText:Nt,maxRetention:G}):z?t==="database"?e.jsx(Nn,{building:z}):t==="tests"?e.jsx("div",{className:"tests-panel-host",children:e.jsx(yn,{building:z,autoFocusSearch:!1})}):e.jsx("div",{className:"http-requests-panel-host",children:e.jsx(Sn,{building:z,autoFocusSearch:!1})}):null})]})]})})(),e.jsxs("div",{className:"flat-terminal-wrapper__statusbar",role:"contentinfo",children:[m.isDetached&&e.jsxs("span",{className:"flat-terminal-wrapper__detached",title:"Reattaching session...",children:[e.jsx(p,{name:"refresh",size:12}),e.jsx("span",{children:"Reattaching"})]}),K&&It&&e.jsxs("span",{className:"flat-terminal-wrapper__cwd",title:`Open in file explorer: ${K}`,"aria-label":`Open ${K} in file explorer`,role:"button",tabIndex:0,onClick:()=>h.openFileExplorer(K),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),h.openFileExplorer(K))},children:[e.jsx("span",{className:"flat-terminal-wrapper__cwd-icon",children:e.jsx(p,{name:"folder",size:12})}),e.jsx("span",{className:"flat-terminal-wrapper__cwd-text",children:It})]}),Se&&Se.map(({areaId:t,areaName:n,dir:l})=>{const o=me.get(l),v=wt.has(l),j=l.split("/").filter(Boolean).pop()||l;return e.jsxs("span",{className:"flat-terminal-wrapper__area-dir",title:`${n}: ${l}${o?` (${o.branch}${o.ahead?` ↑${o.ahead}`:""}${o.behind?` ↓${o.behind}`:""})`:""}`,onClick:()=>h.openFileExplorerForAreaFolder(t,l),children:[e.jsx(p,{name:"folder-open",size:12}),e.jsx("span",{className:"flat-terminal-wrapper__area-dir-name",children:j}),o&&e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"flat-terminal-wrapper__area-dir-branch",children:[e.jsx(p,{name:"git-branch",size:10})," ",o.branch]}),o.ahead>0&&e.jsxs("span",{className:"flat-terminal-wrapper__branch-ahead",title:`${o.ahead} ahead`,children:[e.jsx(p,{name:"arrow-up",size:9}),o.ahead]}),o.behind>0&&e.jsxs("span",{className:"flat-terminal-wrapper__branch-behind",title:`${o.behind} behind`,children:[e.jsx(p,{name:"arrow-down",size:9}),o.behind]}),e.jsx("span",{className:`flat-terminal-wrapper__area-fetch ${v?"flat-terminal-wrapper__area-fetch--fetching":""}`,title:"Git fetch",onClick:d=>{d.stopPropagation(),fe(l)},children:e.jsx(p,{name:v?"hourglass":"download",size:12})})]})]},`${t}:${l}`)}),e.jsx(An,{agentId:c,usageScope:He,disabled:!Le,contextSummary:Ze?`Context: ${ut}k / ${pt}k tokens (${dt}% used)`:void 0,children:e.jsxs("span",{className:"flat-terminal-wrapper__context",tabIndex:0,role:"button",onClick:()=>h.setContextModalAgentId(c),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),h.setContextModalAgentId(c))},title:Le?void 0:Ze?`Context usage: ${ut}k / ${pt}k tokens (${dt}% used). Click to view stats.`:"Click to fetch context stats",children:[e.jsxs("span",{className:"flat-terminal-wrapper__usage-bars",children:[e.jsxs("span",{className:"flat-terminal-wrapper__usage-gauge",title:`Session context: ${ut}k / ${pt}k tokens (${dt}% used)`,children:[e.jsxs("span",{className:"flat-terminal-wrapper__usage-label",children:["Ctx ",e.jsx("span",{className:"flat-terminal-wrapper__usage-window",children:Ut})]}),e.jsx("span",{className:"flat-terminal-wrapper__context-bar",children:e.jsx("span",{className:"flat-terminal-wrapper__context-bar-fill",style:{width:`${$e}%`,backgroundColor:X}})}),e.jsxs("span",{className:"flat-terminal-wrapper__usage-value",style:{color:X},children:[Math.round($e),"%"]})]}),e.jsxs("span",{className:"flat-terminal-wrapper__usage-gauge",title:mt?`Weekly usage: ${Math.round(le)}% used`:Pe?"OpenCode free-model capacity is dynamic; no weekly quota is published":ze.error||"Weekly usage is unavailable for this provider/account",children:[e.jsx("span",{className:"flat-terminal-wrapper__usage-label",children:"Week"}),e.jsx("span",{className:"flat-terminal-wrapper__context-bar",children:e.jsx("span",{className:"flat-terminal-wrapper__context-bar-fill",style:{width:`${le??0}%`,backgroundColor:Et}})}),e.jsx("span",{className:"flat-terminal-wrapper__usage-value",style:{color:Et},children:Y})]})]}),!Ze&&e.jsx("span",{className:"flat-terminal-wrapper__context-warning",title:"No context stats yet",children:e.jsx(p,{name:"warn",size:12})})]})}),e.jsx("div",{className:"flat-terminal-wrapper__statusbar-spacer","aria-hidden":"true"}),Re.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area terminals",children:Re.map(t=>{const n=(x==null?void 0:x.buildingId)===t.id;return t.isDefault?e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn flat-terminal-wrapper__building-btn--default ${n?"flat-terminal-wrapper__building-btn--active":""}`,title:`${n?"Hide":"Show"} area terminal: ${t.name}`,onClick:()=>{n?ne():Ie("terminal",t.id)},children:e.jsx(p,{name:"terminal",size:14})},t.id):e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${n?"flat-terminal-wrapper__building-btn--active":""} ${t.hasUrl?"":"flat-terminal-wrapper__building-btn--offline"}`,title:`${n?"Hide":"Show"} terminal: ${t.name}${t.hasUrl?"":" (starting...)"}`,onClick:()=>{if(n){ne();return}if(t.hasUrl&&ht(t.id)==="modal"){Qe(t.id);return}t.hasUrl||h.sendBuildingCommand(t.id,"start"),Ie("terminal",t.id)},onContextMenu:l=>{l.preventDefault(),l.stopPropagation(),re(t.id,{x:l.clientX,y:l.clientY})},children:e.jsx(p,{name:"terminal",size:14})},t.id)})}),J.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area PM2 logs",children:J.map(t=>{const n=(x==null?void 0:x.buildingId)===t.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${n?"flat-terminal-wrapper__building-btn--active":""}`,title:`${n?"Hide":"Show"} logs: ${t.name}`,onClick:()=>{n?ne():ht(t.id)==="modal"?Qe(t.id):Ie("pm2-logs",t.id)},onContextMenu:l=>{l.preventDefault(),l.stopPropagation(),re(t.id,{x:l.clientX,y:l.clientY})},children:e.jsx(p,{name:"scroll",size:14})},t.id)})}),qe.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area databases",children:qe.map(t=>{const n=(x==null?void 0:x.buildingId)===t.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${n?"flat-terminal-wrapper__building-btn--active":""}`,title:`${n?"Hide":"Show"} database: ${t.name}`,onClick:()=>{n?ne():ht(t.id)==="modal"?Qe(t.id):Ie("database",t.id)},onContextMenu:l=>{l.preventDefault(),l.stopPropagation(),re(t.id,{x:l.clientX,y:l.clientY})},children:e.jsx(p,{name:"hard-drives",size:14})},t.id)})}),Ye.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area tests",children:Ye.map(t=>{const n=(x==null?void 0:x.buildingId)===t.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${n?"flat-terminal-wrapper__building-btn--active":""} ${t.working?"flat-terminal-wrapper__building-btn--tests-working":""}`,title:t.working?`Running tests: ${t.name}`:`${n?"Hide":"Show"} tests: ${t.name}`,onClick:()=>{n?ne():ht(t.id)==="modal"?Qe(t.id):Ie("tests",t.id)},onContextMenu:l=>{l.preventDefault(),l.stopPropagation(),re(t.id,{x:l.clientX,y:l.clientY})},children:e.jsx(p,{name:"flask",size:14})},t.id)})}),jt.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area slash commands",children:jt.map(t=>e.jsx("button",{type:"button",className:"flat-terminal-wrapper__building-btn flat-terminal-wrapper__building-btn--slash-command",title:`Run ${t.name}: ${t.command}`,"aria-label":`Run ${t.name}`,"data-building-id":t.id,onClick:()=>{window.dispatchEvent(new CustomEvent("tide:open-slash-command-building",{detail:{buildingId:t.id}}))},onContextMenu:n=>{n.preventDefault(),n.stopPropagation(),re(t.id,{x:n.clientX,y:n.clientY})},children:t.icon?e.jsx("span",{className:"flat-terminal-wrapper__building-emoji","aria-hidden":"true",children:t.icon}):e.jsx(p,{name:"bolt",size:14})},t.id))}),Ae.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area HTTP requests",children:Ae.map(t=>{const n=(x==null?void 0:x.buildingId)===t.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${n?"flat-terminal-wrapper__building-btn--active":""}`,title:`${n?"Hide":"Show"} HTTP requests: ${t.name}`,onClick:()=>{n?ne():ht(t.id)==="modal"?Qe(t.id):Ie("http",t.id)},onContextMenu:l=>{l.preventDefault(),l.stopPropagation(),re(t.id,{x:l.clientX,y:l.clientY})},children:e.jsx(p,{name:"globe",size:14})},t.id)})}),e.jsx("div",{className:"flat-terminal-wrapper__theme",children:e.jsx(En,{iconOnly:!0})})]}),se&&e.jsx(In,{agentId:c,agents:ie,onClose:Ft,branchInfoMap:me,fetchRemote:fe,fetchingDirs:wt,onResizeStart:t=>De(t,"right")}),Me&&e.jsx(Mn,{agentId:c,onClose:Wt}),V&&e.jsx(Tn,{agentId:c,onClose:rt}),e.jsx(aa,{isOpen:Ue!==null,position:Ue??{x:0,y:0},worldPosition:{x:0,z:0},actions:Ve,onClose:()=>Ge(null)})]})}),Yn={groups:[],gridCols:1,gridRows:1,positions:new Map};function es({onAgentClick:f,onBuildingClick:c,onBuildingDoubleClick:b,onBuildingPopup:C,onAreaContextMenu:S,onOpenSpawnModal:$,onOpenBossSpawnModal:E,onOpenAreaModal:A}){const{t:we}=ba(["common"]),N=za(),_=i.useMemo(()=>N.size>0?N.values().next().value??null:null,[N]),ve=Ra(_===null),xt=Oa(),[We,et]=i.useState(null),[Ce,je]=i.useState(null),[tt,bt]=i.useState(null);_a("flatview-image-modal",We!==null,()=>et(null));const[at,re]=i.useState(null),[m,M]=i.useState(null),[oe,ce]=i.useState(null),[ae,H]=i.useState(null),[Le,He]=i.useState(!1),ze=i.useCallback(()=>{He(a=>!a)},[]),nt=i.useCallback(()=>{He(!1)},[]),[_t,ke]=i.useState(()=>{const a=qt(k.VIEW_MODE);return a==="simple"||a==="chat"||a==="advanced"?a:"simple"}),Z=i.useCallback(a=>{ke(a),Yt(k.VIEW_MODE,a)},[]);i.useEffect(()=>{const a=s=>{if(s.key!==k.VIEW_MODE)return;const r=s.newValue;(r==="simple"||r==="chat"||r==="advanced")&&ke(r)};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)},[]);const[de,O]=i.useState(()=>Rt(k.FLAT_INSPECTOR_OPEN,!1)),[Ne,ue]=i.useState(!1),Ue=i.useCallback(()=>ue(a=>!a),[]),Ge=i.useCallback(()=>ue(!1),[]);i.useEffect(()=>{window.dispatchEvent(new CustomEvent("tide-flat-agents-drawer-state",{detail:{open:Ne}}))},[Ne]),i.useEffect(()=>{window.dispatchEvent(new CustomEvent("tide-flat-inspector-state",{detail:{open:de}}))},[de]),i.useEffect(()=>{const a=()=>ue(l=>!l),s=()=>{O(l=>{const o=!l;return te(k.FLAT_INSPECTOR_OPEN,o),o})},r=()=>{ue(!1),O(!1),te(k.FLAT_INSPECTOR_OPEN,!1)},t=()=>ue(!1),n=()=>{O(!1),te(k.FLAT_INSPECTOR_OPEN,!1)};return window.addEventListener("tide-toggle-flat-agents-drawer",a),window.addEventListener("tide-toggle-flat-inspector",s),window.addEventListener("tide-close-flat-side-views",r),window.addEventListener("tide-close-flat-agents-drawer-only",t),window.addEventListener("tide-close-flat-inspector-only",n),()=>{window.removeEventListener("tide-toggle-flat-agents-drawer",a),window.removeEventListener("tide-toggle-flat-inspector",s),window.removeEventListener("tide-close-flat-side-views",r),window.removeEventListener("tide-close-flat-agents-drawer-only",t),window.removeEventListener("tide-close-flat-inspector-only",n)}},[]);const Ve=i.useRef(null),ye=i.useRef(null),[pe,P]=i.useState(()=>{const a=ra(k.FLAT_MIDDLE_WIDTH,0);return a>=zt?a:null}),[U,Se]=i.useState(()=>{const a=ra(k.FLAT_INSPECTOR_WIDTH,0);return a>=Jt?a:null}),me=i.useCallback(a=>{if(typeof window>"u")return a;const s=U!==null?Lt+U:0,r=window.innerWidth-pa-Lt-ua-s;return Math.max(zt,Math.min(Math.max(r,zt),a))},[U]),fe=i.useCallback(a=>{var n;if(typeof window>"u")return a;const s=(n=Ve.current)==null?void 0:n.querySelector(".flat-middle"),r=(s==null?void 0:s.getBoundingClientRect().width)??zt,t=window.innerWidth-pa-r-Lt-ua-Lt;return Math.max(Jt,Math.min(Math.max(t,Jt),a))},[]);i.useEffect(()=>{if(pe===null&&U===null)return;const a=()=>{P(s=>{if(s===null)return s;const r=me(s);return r===s?s:r}),Se(s=>{if(s===null)return s;const r=fe(s);return r===s?s:r})};return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[pe,U,me,fe]);const wt=i.useCallback(a=>{var r;if(a.button!==0)return;const s=(r=Ve.current)==null?void 0:r.querySelector(".flat-middle");s&&(a.currentTarget.setPointerCapture(a.pointerId),ye.current={kind:"middle",startX:a.clientX,startWidth:s.getBoundingClientRect().width,pointerId:a.pointerId},document.body.classList.add("flat-splitter-dragging"))},[]),st=i.useCallback(a=>{var r;if(a.button!==0)return;const s=(r=Ve.current)==null?void 0:r.querySelector(".flat-inspector");s&&(a.currentTarget.setPointerCapture(a.pointerId),ye.current={kind:"inspector",startX:a.clientX,startWidth:s.getBoundingClientRect().width,pointerId:a.pointerId},document.body.classList.add("flat-splitter-dragging"))},[]),vt=i.useCallback(a=>{const s=ye.current;if(!s||a.pointerId!==s.pointerId)return;const r=a.clientX-s.startX;s.kind==="middle"?P(me(s.startWidth+r)):Se(fe(s.startWidth-r))},[me,fe]),Xe=i.useCallback(a=>{const s=ye.current;if(!s||a.pointerId!==s.pointerId)return;try{a.currentTarget.releasePointerCapture(a.pointerId)}catch{}if(ye.current=null,document.body.classList.remove("flat-splitter-dragging"),!(Math.abs(a.clientX-s.startX)>2))return;const t=a.clientX-s.startX;if(s.kind==="middle"){const n=me(s.startWidth+t);P(n),Pt(k.FLAT_MIDDLE_WIDTH,n)}else{const n=fe(s.startWidth-t);Se(n),Pt(k.FLAT_INSPECTOR_WIDTH,n)}},[me,fe]),Ct=i.useCallback(()=>{P(null),Pt(k.FLAT_MIDDLE_WIDTH,0)},[]),Re=i.useCallback(()=>{Se(null),Pt(k.FLAT_INSPECTOR_WIDTH,0)},[]),[J,qe]=i.useState(()=>qt(k.FLAT_INSPECTOR_VIEW)==="tracking"?"tracking":"agent"),Oe=i.useCallback(a=>{qe(a),Yt(k.FLAT_INSPECTOR_VIEW,a)},[]),Ye=i.useCallback(()=>{O(a=>{const s=!a;return te(k.FLAT_INSPECTOR_OPEN,s),s})},[]),Ae=i.useCallback(()=>{O(!1),te(k.FLAT_INSPECTOR_OPEN,!1)},[]),jt=i.useCallback(()=>{Oe("tracking"),O(!0),te(k.FLAT_INSPECTOR_OPEN,!0)},[Oe]),Ot=Da(),he=i.useCallback((a,s)=>{et({url:a,name:s})},[]),kt=i.useCallback((a,s)=>{je({command:a,output:s,isLive:!1})},[]),it=i.useCallback((a,s)=>{var n;const r=N.size>0?Array.from(N)[0]:null,t=r?(n=h.getState().agents.get(r))==null?void 0:n.cwd:void 0;h.setFileViewerPath(a,s,t)},[N]),Ee=i.useCallback(a=>{bt(a)},[]),x=i.useCallback((a,s)=>{re({agentId:a,count:s})},[]),Q=i.useCallback(a=>{b?b(a):c(a)},[c,b]),z=i.useCallback(a=>{_&&M({agentId:_,position:a})},[_]),Nt=i.useCallback((a,s)=>{ce({buildingId:a,position:s})},[]);i.useEffect(()=>{He(!1)},[_]);const D=i.useRef([]),G=i.useRef(-1),Ke=i.useRef(!1),L=i.useRef(qt(k.LAST_OPENED_AGENT,"")||null),[Ie,ne]=i.useState(!1),[Dt,Bt]=i.useState(!1),lt=i.useRef(!1),De=i.useRef(null),se=i.useRef(!1),ge=i.useMemo(()=>new Set(xt),[xt]),Me=i.useMemo(()=>{const a=new Map(ve.map(r=>[r.id,r])),s=new Map;for(const r of ve)if((r.isBoss||r.class==="boss")&&r.subordinateIds&&r.subordinateIds.length>0){const t=r.subordinateIds.map(n=>a.get(n)).filter(n=>n!==void 0);t.length>0&&s.set(r.id,t)}return s},[ve]),q=i.useCallback(()=>{const a=D.current,s=G.current;ne(s>0),Bt(s>=0&&s<a.length-1)},[]),V=i.useCallback(a=>{const s=D.current;if(s.length===0)return;let r=G.current+a;for(;r>=0&&r<s.length;){const t=s[r];if(ge.has(t)){Ke.current=!0,G.current=r,q(),h.selectAgent(t);return}r+=a}},[ge,q]),yt=i.useCallback(()=>V(-1),[V]),St=i.useCallback(()=>V(1),[V]);On(i.useCallback(()=>{const a=D.current,s=G.current;return a.length>0&&s>0?(V(-1),"handled"):"exit"},[V]));const rt=i.useCallback((a,s)=>{if(typeof window>"u")return;const r=window.history.state,n={...typeof r=="object"&&r!==null?r:{},__flatAgentNav:{agentId:a}};s==="replace"?window.history.replaceState(n,"",window.location.href):window.history.pushState(n,"",window.location.href)},[]);i.useEffect(()=>{if(!_){lt.current=!1,De.current=null;return}if(!lt.current){rt(_,"replace"),lt.current=!0,De.current=_;return}if(se.current){se.current=!1,De.current=_;return}De.current!==_&&(rt(_,"push"),De.current=_)},[_,rt]),i.useEffect(()=>{const a=s=>{var l,o;const r=(o=(l=s.state)==null?void 0:l.__flatAgentNav)==null?void 0:o.agentId;if(!r||typeof r!="string"||!ge.has(r)||r===_)return;se.current=!0,Ke.current=!0;const t=D.current,n=t.lastIndexOf(r);n>=0?G.current=n:(t.push(r),G.current=t.length-1),q(),h.selectAgent(r)};return window.addEventListener("popstate",a),()=>window.removeEventListener("popstate",a)},[ge,_,q]),i.useEffect(()=>{if(!_){D.current=[],G.current=-1,q();return}if(L.current=_,Yt(k.LAST_OPENED_AGENT,_),Ke.current){Ke.current=!1,q();return}const a=D.current,s=G.current;if(s>=0&&a[s]===_){q();return}const r=s<a.length-1?a.slice(0,s+1):a.slice();r.push(_),r.length>100&&r.shift(),D.current=r,G.current=r.length-1,q()},[_,q]);const ot=i.useCallback(a=>{f(a),ue(!1)},[f]),At=_??"",Ft=i.useCallback(()=>{},[]),Wt=i.useCallback(a=>{ot(a)},[ot]),ie=de,[ee,ct]=i.useState(ie),[Be,xe]=i.useState(ie),Te=wa(Le||tt!==null||ee&&J==="agent"?_:null);i.useEffect(()=>{if(ie){ct(!0);return}xe(!1);const a=setTimeout(()=>ct(!1),240);return()=>clearTimeout(a)},[ie]),i.useEffect(()=>{if(!ee||!ie)return;let a=0;const s=requestAnimationFrame(()=>{a=requestAnimationFrame(()=>xe(!0))});return()=>{cancelAnimationFrame(s),cancelAnimationFrame(a)}},[ee,ie]);const Ze=i.useRef(null);i.useEffect(()=>{if(_)return;const a=s=>{if(s.key!==" "&&s.key!=="Backspace")return;const r=s.target;if(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable)return;const t=L.current;!t||!ge.has(t)||(s.preventDefault(),h.selectAgent(t))};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[_,ge]);const[Ht,Je]=i.useState(new Set),$e=i.useCallback(a=>{Je(s=>{const r=new Set(s);return r.has(a)?r.delete(a):r.add(a),r})},[]),dt=i.useCallback(a=>{Je(new Set(a))},[]),[X,ut]=i.useState(()=>typeof window<"u"&&window.matchMedia("(max-width: 768px)").matches);i.useEffect(()=>{if(typeof window>"u")return;const a=window.matchMedia("(max-width: 768px)"),s=r=>ut(r.matches);return a.addEventListener("change",s),()=>a.removeEventListener("change",s)},[]);const[pt,Ut]=i.useState(null),mt=i.useCallback(a=>{Ut(s=>s===a?null:a)},[]),le=va(),Pe=Ca(),[Et]=Ba(),Y=i.useMemo(()=>{if(_)return Yn;const a=new Map,s=[];for(const u of ve){const g=h.getAreaForAgent(u.id);if(!oa((g==null?void 0:g.id)??null))continue;if(!g||g.archived){s.push(u);continue}const w=a.get(g.id);w?w.push(u):a.set(g.id,[u])}const r=new Map,t=[];for(const u of Pe.values()){let g=!1;for(const w of le.values())if(!w.archived&&ca(w.id)&&h.isPositionInArea(u.position,w)){const B=r.get(w.id);B?B.push(u):r.set(w.id,[u]),g=!0;break}!g&&oa(null)&&t.push(u)}const n=[];for(const[,u]of le){if(u.archived||!ca(u.id))continue;const g=a.get(u.id),w=r.get(u.id)??[];(g&&g.length>0||w.length>0)&&n.push({area:u,agents:g??[],buildings:w})}(s.length>0||t.length>0)&&n.push({area:{id:"__unassigned__",name:"Unassigned",color:"#6272a4",center:{x:0,z:0},type:"circle",radius:0,directories:[],archived:!1,assignedAgentIds:[],zIndex:0},agents:s,buildings:t});const l=n.filter(u=>u.area.id!=="__unassigned__"),o=n.filter(u=>u.area.id==="__unassigned__");let v=1,j=1;const d=new Map;if(l.length>1){let u=1/0,g=-1/0,w=1/0,B=-1/0;for(const F of l)u=Math.min(u,F.area.center.x),g=Math.max(g,F.area.center.x),w=Math.min(w,F.area.center.z),B=Math.max(B,F.area.center.z);const _e=g-u||1,Tt=B-w||1;if(l.length<=4){v=l.length,j=1;const F=[...l].sort((W,Gt)=>W.area.center.x-Gt.area.center.x);for(let W=0;W<F.length;W++)d.set(F[W].area.id,{row:1,col:W+1})}else{const F=[...l].sort((y,R)=>y.area.center.x-R.area.center.x),W=[];for(let y=1;y<F.length;y++)W.push(F[y].area.center.x-F[y-1].area.center.x);const Gt=W.reduce((y,R)=>y+R,0)/W.length||1;let na=1;for(const y of W)y>Gt*1.3&&na++;v=Math.max(2,Math.min(na,l.length));const Vt=[...l].sort((y,R)=>y.area.center.z-R.area.center.z),$t=[];for(let y=1;y<Vt.length;y++)$t.push(Vt[y].area.center.z-Vt[y-1].area.center.z);const Ea=$t.reduce((y,R)=>y+R,0)/$t.length||1;let sa=1;for(const y of $t)y>Ea*1.3&&sa++;j=Math.max(2,Math.min(sa,l.length)),v=Math.max(v,Math.ceil(l.length/j)),j=Math.max(j,Math.ceil(l.length/v));const Ia=_e/v,Ma=Tt/j,Xt=new Set;for(const y of l){let R=Math.min(v-1,Math.max(0,Math.floor((y.area.center.x-u)/Ia))),Fe=Math.min(j-1,Math.max(0,Math.floor((y.area.center.z-w)/Ma))),ft=`${Fe},${R}`,ia=0;const Ta=j*v;for(;Xt.has(ft)&&ia<Ta;)R++,R>=v&&(R=0,Fe=(Fe+1)%j),ft=`${Fe},${R}`,ia++;Xt.has(ft)&&(Fe=j,R=0,ft=`${Fe},${R}`,j++),Xt.add(ft),d.set(y.area.id,{row:Fe+1,col:R+1})}}}const T=u=>{u.sort((g,w)=>{var _e,Tt,F,W;const B=(((_e=g.position)==null?void 0:_e.z)??0)-(((Tt=w.position)==null?void 0:Tt.z)??0);return B!==0?B:(((F=g.position)==null?void 0:F.x)??0)-(((W=w.position)==null?void 0:W.x)??0)})};for(const u of l)T(u.agents);for(const u of o)T(u.agents);const I=[...l,...o].sort((u,g)=>u.area.name.localeCompare(g.area.name,void 0,{sensitivity:"base",numeric:!0})||u.area.id.localeCompare(g.area.id));return d.clear(),I.forEach((u,g)=>{d.set(u.area.id,{row:Math.floor(g/v)+1,col:g%v+1})}),j=Math.max(1,Math.ceil(I.length/v)),{groups:I,gridCols:v,gridRows:j,positions:d}},[ve,le,Pe,Et,_]),K=i.useMemo(()=>{let a=0,s=0;for(const r of Y.groups)a+=r.agents.length,s+=r.agents.filter(t=>t.status==="working").length;return{areaCount:Y.groups.length,agentCount:a,workingCount:s}},[Y]),It=i.useMemo(()=>{if(!m)return[];const a=h.getState().agents.get(m.agentId);return a?[{id:"edit-agent",label:"Edit Agent",icon:e.jsx(p,{name:"edit",size:14}),onClick:()=>{window.dispatchEvent(new CustomEvent("tide:open-agent-edit",{detail:{agentId:a.id}}))}},{id:"open-chat",label:"Open Chat",icon:e.jsx(p,{name:"chat",size:14}),onClick:()=>f(a.id)},{id:"clone-agent",label:"Clone Agent",icon:e.jsx(p,{name:"clipboard",size:14}),onClick:()=>h.cloneAgent(a.id)},{id:"fork-agent",label:"Fork Agent (with history)",icon:e.jsx(p,{name:"git-branch",size:14}),onClick:()=>h.forkAgent(a.id)},{id:"delete-agent",label:"Delete Agent",icon:e.jsx(p,{name:"trash",size:14}),danger:!0,onClick:()=>{H({agentId:a.id,name:a.name})}}]:[]},[m,f]),be=i.useMemo(()=>{var l;if(!oe)return[];const a=Pe.get(oe.buildingId);if(!a)return[];const s=[],r=a.type==="server"||a.type==="docker"||a.type==="terminal",t=a.status==="running",n=a.type==="boss";if(s.push({id:"open",label:a.type==="database"?"Open Database":a.type==="folder"?"Open Folder":a.type==="tests"?"Open Tests":a.type==="http"?"Open Requests":a.type==="slash-command"?"Run Command":a.type==="boss"?"View Boss Logs":a.type==="terminal"?"Open Terminal":a.type==="server"&&((l=a.pm2)!=null&&l.enabled)?"View PM2 Logs":"Open",icon:e.jsx(p,{name:a.type==="database"?"database":a.type==="folder"?"folder":a.type==="tests"?"flask":a.type==="http"?"globe":a.type==="slash-command"?"envelope":a.type==="terminal"?"terminal":"eye",size:14}),onClick:()=>Q(a.id)}),r&&(t||s.push({id:"start",label:"Start",icon:e.jsx(p,{name:"play",size:14}),onClick:()=>h.sendBuildingCommand(a.id,"start")}),t&&(s.push({id:"restart",label:"Restart",icon:e.jsx(p,{name:"refresh",size:14}),onClick:()=>h.sendBuildingCommand(a.id,"restart")}),s.push({id:"stop",label:"Stop",icon:e.jsx(p,{name:"stop",size:14}),onClick:()=>h.sendBuildingCommand(a.id,"stop")}))),n&&a.subordinateBuildingIds&&a.subordinateBuildingIds.length>0&&(s.push({id:"start-all",label:"Start All Subordinates",icon:e.jsx(p,{name:"launch",size:14}),onClick:()=>{for(const o of a.subordinateBuildingIds)h.sendBuildingCommand(o,"start")}}),s.push({id:"stop-all",label:"Stop All Subordinates",icon:e.jsx(p,{name:"pause",size:14}),onClick:()=>{for(const o of a.subordinateBuildingIds)h.sendBuildingCommand(o,"stop")}}),s.push({id:"restart-all",label:"Restart All Subordinates",icon:e.jsx(p,{name:"restart",size:14}),onClick:()=>{for(const o of a.subordinateBuildingIds)h.sendBuildingCommand(o,"restart")}})),r&&s.push({id:"health-check",label:"Health Check",icon:e.jsx(p,{name:"health",size:14}),onClick:()=>h.sendBuildingCommand(a.id,"healthCheck")}),s.push({id:"divider-edit",label:"",divider:!0,onClick:()=>{}}),s.push({id:"edit",label:"Edit Building",icon:e.jsx(p,{name:"edit",size:14}),onClick:()=>{window.dispatchEvent(new CustomEvent("tide:building-edit",{detail:{buildingId:a.id}}))}}),s.push({id:"clone",label:"Clone Building",icon:e.jsx(p,{name:"copy",size:14}),onClick:()=>{h.createBuilding({name:`${a.name} (Copy)`,type:a.type,style:a.style,color:a.color,scale:a.scale,icon:a.icon,slashCommand:a.slashCommand,position:{x:a.position.x+2,z:a.position.z+2},cwd:a.cwd,folderPath:a.folderPath,commands:a.commands,pm2:a.pm2,docker:a.docker,database:a.database,terminal:a.terminal,urls:a.urls,subordinateBuildingIds:a.subordinateBuildingIds})}}),a.urls&&a.urls.length>0)for(const o of a.urls)s.push({id:`url-${o.label}`,label:o.label,icon:e.jsx(p,{name:"link",size:14}),onClick:()=>window.open(o.url,"_blank","noopener,noreferrer")});return s.push({id:"divider-danger",label:"",divider:!0,onClick:()=>{}}),s.push({id:"delete",label:"Delete Building",icon:e.jsx(p,{name:"trash",size:14}),danger:!0,onClick:()=>h.deleteBuilding(a.id)}),s},[oe,Pe,Q]),Mt=i.useCallback(a=>{Je(new Set([a])),requestAnimationFrame(()=>{const s=Ze.current;if(!s)return;const r=s.querySelector(`[data-area-id="${a}"]`);if(!r)return;const t=s.getBoundingClientRect(),l=r.getBoundingClientRect().top-t.top+s.scrollTop-8;s.scrollTo({top:Math.max(0,l),behavior:"smooth"})})},[]);return e.jsxs("div",{ref:Ve,className:`flat-view ${ie?"flat-view--with-inspector":""} ${_?"flat-view--has-chat":""} ${Ne?"flat-view--mobile-sidebar-open":""}`,style:(()=>{if(pe===null&&U===null)return;const a={};return pe!==null&&(a["--flat-middle-width"]=`${pe}px`),U!==null&&(a["--flat-inspector-width"]=`${U}px`),a})(),children:[Ne&&e.jsx("div",{className:"flat-mobile-sidebar-backdrop",onClick:Ge,"aria-hidden":"true"}),e.jsxs("div",{className:"flat-middle",children:[e.jsx("div",{className:"flat-middle__header",children:e.jsxs("div",{className:"flat-middle__actions",children:[e.jsx("button",{className:"flat-cta-btn flat-cta-btn--agent",onClick:$,title:"Create new agent",children:"+ Agent"}),e.jsx("button",{className:"flat-cta-btn flat-cta-btn--boss",onClick:E,title:"Create new boss agent",children:"+ Boss"}),e.jsx("button",{className:"flat-cta-btn flat-cta-btn--area",onClick:A,title:"Create new area",children:"+ Area"})]})}),e.jsx("div",{className:"flat-middle__content",children:e.jsx(Fa,{activeAgentId:At,onClose:Ft,onSelectAgent:Wt,expandedAreas:Ht,onToggleArea:$e,onSetExpandedAreas:dt,agentListRef:Ze})})]}),e.jsx("div",{className:"flat-splitter flat-splitter--middle",role:"separator","aria-orientation":"vertical","aria-label":"Resize agents panel",title:"Drag to resize · Double-click to reset",onPointerDown:wt,onPointerMove:vt,onPointerUp:Xe,onPointerCancel:Xe,onDoubleClick:Ct}),e.jsxs("div",{className:"flat-right",children:[e.jsxs("button",{type:"button",className:"flat-mobile-sidebar-toggle","aria-label":Ne?"Close agents sidebar":"Open agents sidebar","aria-expanded":Ne,onClick:Ue,children:[e.jsx(p,{name:"list",size:18}),e.jsx("span",{className:"flat-mobile-sidebar-toggle__label",children:"Agents"})]}),_?e.jsx(qn,{agentId:_,terminalViewMode:_t,onTerminalViewModeChange:Z,inspectorOpen:de,onToggleInspector:Ye,onShowTaskBoard:jt,onImageClick:he,onFileClick:it,onBashClick:kt,onViewMarkdown:Ee,onRequestClearSubordinates:x,keyboard:Ot,canNavigateBack:Ie,canNavigateForward:Dt,onNavigateBack:yt,onNavigateForward:St,agentInfoOpen:Le,onToggleAgentInfo:ze,onHeaderContextMenu:z,onBuildingContextMenu:Nt}):e.jsx("div",{className:"flat-chat flat-chat--empty",children:e.jsxs("div",{className:"flat-map",children:[e.jsxs("div",{className:"flat-map__header",children:[e.jsx("span",{className:"flat-map__title",children:"🗺️ Areas"}),e.jsx("span",{className:"flat-map__hint",children:"Click an area to focus it, or an agent to chat"}),e.jsxs("span",{className:"flat-map__stats",children:[e.jsxs("span",{children:[K.areaCount," areas"]}),e.jsxs("span",{children:[K.agentCount," agents"]}),K.workingCount>0&&e.jsxs("span",{className:"flat-map__stats-working",children:[e.jsx("span",{className:"flat-map__stats-dot","aria-hidden":"true"}),K.workingCount," working"]})]}),e.jsx(Wn,{className:"flat-map__view-mode"})]}),e.jsx("div",{className:"flat-map__grid",style:{gridTemplateColumns:X?"repeat(2, minmax(0, 1fr))":`repeat(${Y.gridCols}, 1fr)`},children:Y.groups.length===0?e.jsx("div",{className:"flat-map__empty",children:e.jsx("span",{children:"No areas or agents yet"})}):(X?[...Y.groups].sort((s,r)=>{const t=Y.positions.get(s.area.id),n=Y.positions.get(r.area.id);return!t&&!n?0:t?n?t.row-n.row||t.col-n.col:-1:1}):Y.groups).map(s=>{var j;const r=s.area.id,t=Y.positions.get(r),n=s.agents.filter(d=>d.status==="working").length,l=n>0,o=X&&pt!==r,v=X&&!o;return e.jsxs("div",{className:`flat-map-area-card${l?" flat-map-area-card--working":""}${o?" flat-map-area-card--collapsed":""}${v?" flat-map-area-card--expanded":""}`,style:{"--area-color":s.area.color,gridRow:X||t==null?void 0:t.row,gridColumn:X||t==null?void 0:t.col},onContextMenu:d=>{S&&(d.preventDefault(),d.stopPropagation(),S(r,{x:d.clientX,y:d.clientY}))},children:[e.jsxs("button",{type:"button",className:"flat-map-area-card__header",onClick:()=>X?mt(r):Mt(r),title:X?o?`Expand ${s.area.name}`:`Collapse ${s.area.name}`:`Focus ${s.area.name} in left panel`,"aria-expanded":X?!o:void 0,children:[e.jsx("span",{className:"flat-map-area-card__color",style:{background:s.area.color}}),((j=s.area.logo)==null?void 0:j.filename)&&e.jsx("img",{className:"flat-map-area-card__logo",src:Rn(s.area.logo.filename),alt:"","aria-hidden":"true",onError:d=>{d.currentTarget.style.display="none"}}),e.jsx("span",{className:"flat-map-area-card__name",children:s.area.name}),e.jsxs("span",{className:"flat-map-area-card__count",title:`${s.agents.length} agent${s.agents.length===1?"":"s"}`,"aria-label":`${s.agents.length} agent${s.agents.length===1?"":"s"}`,children:[e.jsx(p,{name:"users",size:10}),s.agents.length]}),l&&e.jsxs("span",{className:"flat-map-area-card__working",title:`${n} working agent${n===1?"":"s"}`,"aria-label":`${n} working agent${n===1?"":"s"}`,children:[e.jsx(ta,{animated:!0,size:12,className:"flat-map-area-card__working-glyph"}),e.jsx("span",{className:"flat-map-area-card__working-count",children:n})]}),X&&e.jsx(p,{name:o?"caret-down":"caret-up",size:11,className:"flat-map-area-card__caret"})]}),e.jsx("div",{className:"flat-map-area-card__agents",children:s.agents.map(d=>{const T=d.isBoss||d.class==="boss",I=T?Me.get(d.id):void 0,u=ja(d),g=u.usedPercent>=80?"#ff4a4a":u.usedPercent>=60?"#ff9e4a":u.usedPercent>=40?"#ffd700":"#4aff9e",w=`Context: ${(u.totalTokens/1e3).toFixed(1)}k / ${(u.contextWindow/1e3).toFixed(1)}k (${u.usedPercent}% used, ${u.freePercent}% free)`,B=d.latestTodos&&d.latestTodos.length>0||I&&I.length>0;return e.jsx(Wa,{todos:d.latestTodos,subordinates:I,position:"top",children:e.jsxs("button",{type:"button",className:`flat-map-agent-chip ${d.status}`,onClick:()=>f(d.id),onContextMenu:_e=>{_e.preventDefault(),_e.stopPropagation(),M({agentId:d.id,position:{x:_e.clientX,y:_e.clientY}})},title:B?void 0:`${T?"Boss · ":""}Open chat with ${d.name}
2
+ ${w}`,children:[e.jsx(ka,{agent:d,size:16}),T&&e.jsx("span",{className:"flat-map-agent-chip__crown","aria-hidden":"true",children:e.jsx(p,{name:"crown",size:11,color:"#ffd700",weight:"fill"})}),e.jsx("span",{className:"flat-map-agent-chip__name",children:d.name}),e.jsx(Na,{agent:d,alt:`${d.name} provider`,className:"flat-map-agent-chip__provider-icon"}),d.status==="working"?e.jsx(ta,{animated:!0,size:11,className:"flat-map-agent-chip__activity"}):e.jsx("span",{className:"flat-map-agent-chip__dot",style:{backgroundColor:ya(d.status)}}),d.latestTodos&&d.latestTodos.length>0&&e.jsx(Ha,{todos:d.latestTodos,maxDots:6}),T&&I&&I.length>0&&e.jsx(Ua,{subordinates:I,maxDots:6}),e.jsx("span",{className:"flat-map-agent-chip__context-bar","aria-hidden":"true",children:e.jsx("span",{className:"flat-map-agent-chip__context-bar-fill",style:{width:`${u.usedPercent}%`,backgroundColor:g}})})]})},d.id)})}),s.area.directories.length>0&&e.jsx("div",{className:"flat-map-area-card__folders",role:"group","aria-label":`${s.area.name} folders`,children:s.area.directories.map(d=>{const T=d.split("/").filter(Boolean).pop()||d;return e.jsxs("button",{type:"button",className:"flat-map-folder-chip",onClick:I=>{I.stopPropagation(),h.openFileExplorerForAreaFolder(r,d)},title:`Open in file explorer: ${d}`,children:[e.jsx(p,{name:"folder-open",size:12}),e.jsx("span",{className:"flat-map-folder-chip__name",children:T})]},d)})}),s.buildings.length>0&&e.jsx("div",{className:"flat-map-area-card__buildings",children:s.buildings.map(d=>{var I;const T=(I=Ga[d.type])==null?void 0:I.color;return e.jsxs("button",{type:"button",className:`flat-map-building-chip flat-map-building-chip--${d.status}`,style:T?{"--building-type-color":T}:void 0,onClick:u=>{if(d.type==="slash-command")Q(d.id);else if(C){const g=u.currentTarget.getBoundingClientRect();C(d.id,{x:g.right,y:g.top+g.height/2})}else Q(d.id)},onContextMenu:u=>{u.preventDefault(),u.stopPropagation(),ce({buildingId:d.id,position:{x:u.clientX,y:u.clientY}})},title:`${d.name} · ${d.type} · ${d.status}`,children:[e.jsx(p,{name:Va(d.type),size:12,color:T}),e.jsx("span",{className:"flat-map-building-chip__name",children:d.name}),e.jsx("span",{className:"flat-map-building-chip__dot",style:{backgroundColor:Xa(d.status)}})]},d.id)})})]},r)})})]})})]}),ie&&e.jsx("div",{className:"flat-splitter flat-splitter--inspector",role:"separator","aria-orientation":"vertical","aria-label":"Resize inspector panel",title:"Drag to resize · Double-click to reset",onPointerDown:st,onPointerMove:vt,onPointerUp:Xe,onPointerCancel:Xe,onDoubleClick:Re}),ee&&e.jsxs("aside",{className:`flat-inspector ${Be?"flat-inspector--open":"flat-inspector--closing"}`,"aria-label":"Inspector panel",children:[e.jsxs("div",{className:"flat-inspector__header",children:[e.jsxs("div",{className:"flat-inspector__tabs",role:"tablist","aria-label":"Inspector view",children:[e.jsx("button",{type:"button",role:"tab","aria-selected":J==="agent",className:`flat-inspector__tab ${J==="agent"?"flat-inspector__tab--active":""}`,onClick:()=>Oe("agent"),children:"Agent"}),e.jsx("button",{type:"button",role:"tab","aria-selected":J==="tracking",className:`flat-inspector__tab ${J==="tracking"?"flat-inspector__tab--active":""}`,onClick:()=>Oe("tracking"),children:"Tracking"})]}),e.jsx("button",{type:"button",className:"flat-inspector__close",onClick:Ae,title:"Close inspector","aria-label":"Close inspector",children:"✕"})]}),e.jsx("div",{className:"flat-inspector__body",children:J==="tracking"?e.jsx(qa,{activeAgentId:_??"",onSelectAgent:a=>{f(a),window.innerWidth<=768&&Ae()}}):_?Te?e.jsx(Ya,{agent:Te,onFocusAgent:a=>{f(a),window.innerWidth<=768&&Ae()},onKillAgent:a=>h.killAgent(a)}):e.jsx("div",{className:"flat-inspector__empty",children:e.jsx("span",{children:"Agent not found"})}):e.jsx("div",{className:"flat-inspector__empty",children:e.jsx("span",{children:"Select an agent to inspect"})})})]}),We&&e.jsx(Ka,{url:We.url,name:We.name,onClose:()=>et(null)}),Ce&&e.jsx(Za,{state:Ce,onClose:()=>je(null)}),e.jsx(Ja,{agent:Te??null,content:tt,onClose:()=>bt(null)}),at&&e.jsx(Qa,{action:"clear-subordinates",selectedAgentId:at.agentId,subordinateCount:at.count,onClose:()=>re(null),onClearHistory:()=>{}}),e.jsx(en,{agent:Te??null,isOpen:Le&&!!_,onClose:nt}),e.jsx(aa,{isOpen:m!==null,position:(m==null?void 0:m.position)??{x:0,y:0},worldPosition:{x:0,z:0},actions:It,onClose:()=>M(null)}),e.jsx(aa,{isOpen:oe!==null,position:(oe==null?void 0:oe.position)??{x:0,y:0},worldPosition:{x:0,z:0},actions:be,onClose:()=>ce(null)}),e.jsx(tn,{isOpen:ae!==null,title:we("common:confirm.removeAgentTitle"),message:we("common:confirm.removeAgentMessage",{name:(ae==null?void 0:ae.name)??""}),confirmLabel:we("common:buttons.remove"),cancelLabel:we("common:buttons.cancel"),variant:"danger",onConfirm:()=>{ae&&h.removeAgentFromServer(ae.agentId)},onClose:()=>H(null)})]})}export{es as FlatView};