tide-commander 1.201.0 → 1.202.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 (125) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/assets/{AudioPlayer-jjttJ6SM.js → AudioPlayer-B7nGfgjR.js} +1 -1
  3. package/dist/assets/{BossLogsModal-DF0ar9g6.js → BossLogsModal-B2hKgPKR.js} +1 -1
  4. package/dist/assets/{BossSpawnModal-rJfm0Ijw.js → BossSpawnModal-smufSfcS.js} +1 -1
  5. package/dist/assets/ControlsModal-DFwNI_sS.js +1 -0
  6. package/dist/assets/{DockerLogsModal-ChSWCsD6.js → DockerLogsModal-CgpZgKz5.js} +1 -1
  7. package/dist/assets/{EmbeddedEditor-ChdfmuIg.js → EmbeddedEditor-B6e6Tjab.js} +1 -1
  8. package/dist/assets/{FcStdViewer-CdhcfLu8.js → FcStdViewer-Cvp018yY.js} +1 -1
  9. package/dist/assets/{GcodeViewer-CG5xftum.js → GcodeViewer-BkGC_S8k.js} +1 -1
  10. package/dist/assets/{GlbViewer-DvmBSNPm.js → GlbViewer-ksrBWqeR.js} +1 -1
  11. package/dist/assets/{GmailOAuthSetup-yhSITtw7.js → GmailOAuthSetup-CzIkxjus.js} +1 -1
  12. package/dist/assets/{GoogleOAuthSetup-ugg8hhwa.js → GoogleOAuthSetup-DfGNwK7j.js} +1 -1
  13. package/dist/assets/{IframeModal-Bjo_-SSc.js → IframeModal-BpLhEygR.js} +1 -1
  14. package/dist/assets/{IntegrationsPanel-JbfEFuTE.js → IntegrationsPanel-Bjemwaaf.js} +2 -2
  15. package/dist/assets/{LogViewerModal-CGGtQwwn.js → LogViewerModal-BN-2fkaY.js} +1 -1
  16. package/dist/assets/{MonitoringModal-D7VxK2C8.js → MonitoringModal-DOXLXC2b.js} +1 -1
  17. package/dist/assets/{PM2LogsModal-C-Ec4p65.js → PM2LogsModal-rbMVcXlW.js} +1 -1
  18. package/dist/assets/{RestoreArchivedAreaModal-BBZpQw8I.js → RestoreArchivedAreaModal-zP0f1MJs.js} +1 -1
  19. package/dist/assets/{Scene2DCanvas-Cpzgqdq1.js → Scene2DCanvas-o7560L-a.js} +1 -1
  20. package/dist/assets/{SceneManager-B9bEzlSi.js → SceneManager-BgDfVg6I.js} +1 -1
  21. package/dist/assets/{SkillsPanel-crpQci9P.js → SkillsPanel-CjPjIaWc.js} +2 -2
  22. package/dist/assets/{SlackMultiInstanceSetup-C1qkAM8r.js → SlackMultiInstanceSetup-DD_rPcgV.js} +1 -1
  23. package/dist/assets/SpawnModal-D8AMFrPu.js +1 -0
  24. package/dist/assets/{StatisticsModal-B14YGD66.js → StatisticsModal-Cj-JYH7n.js} +1 -1
  25. package/dist/assets/{StlViewer-D5EtQxO4.js → StlViewer-BTqw22H9.js} +1 -1
  26. package/dist/assets/{SubordinateAssignmentModal-_8NWXgEl.js → SubordinateAssignmentModal-BWeToc-Y.js} +1 -1
  27. package/dist/assets/{ThreeAreaSelector-Bnb65bJt.js → ThreeAreaSelector-BfXBY8Zd.js} +1 -1
  28. package/dist/assets/{ThreeViewShortcuts-AI4Mj9zr.js → ThreeViewShortcuts-BGgmAwlu.js} +1 -1
  29. package/dist/assets/{TriggerManagerPanel-aFrbWG0D.js → TriggerManagerPanel-C_jBXs4k.js} +1 -1
  30. package/dist/assets/{VideoPlayer-BSVjpcQa.js → VideoPlayer-C-ciwgiq.js} +1 -1
  31. package/dist/assets/{WorkflowEditorPanel-CgFXTubk.js → WorkflowEditorPanel-D09rBihK.js} +1 -1
  32. package/dist/assets/{abnfDiagram-VRR7QNED-LbVlypD7.js → abnfDiagram-VRR7QNED-Hvauvwpv.js} +1 -1
  33. package/dist/assets/{arc-DDqZ78fN.js → arc-8xGuxuLE.js} +1 -1
  34. package/dist/assets/{architectureDiagram-ZJ3FMSHR-BLfa7hLc.js → architectureDiagram-ZJ3FMSHR-DckJ-9FC.js} +1 -1
  35. package/dist/assets/{area-logos-ml30JJUi.js → area-logos-DKkCiybZ.js} +1 -1
  36. package/dist/assets/{blockDiagram-677ZJIJ3-CHWx5n03.js → blockDiagram-677ZJIJ3-DAJq6nFY.js} +1 -1
  37. package/dist/assets/{c4Diagram-LMCZKHZV-DvUxK9_Q.js → c4Diagram-LMCZKHZV-PGJGoAsg.js} +1 -1
  38. package/dist/assets/channel-BhAHX260.js +1 -0
  39. package/dist/assets/{chunk-2Q5K7J3B-BFtzwIJU.js → chunk-2Q5K7J3B-D1sP2fsh.js} +1 -1
  40. package/dist/assets/{chunk-32BRIVSS-CPbVoclL.js → chunk-32BRIVSS-RLL4h20T.js} +1 -1
  41. package/dist/assets/{chunk-5VM5RSS4-dTYGN5E5.js → chunk-5VM5RSS4-CevkAGFw.js} +1 -1
  42. package/dist/assets/{chunk-EX3LRPZG-CtqfsWRW.js → chunk-EX3LRPZG-D819msSu.js} +1 -1
  43. package/dist/assets/{chunk-JWPE2WC7-Bk6bqjv9.js → chunk-JWPE2WC7-CrfN0IY7.js} +1 -1
  44. package/dist/assets/{chunk-MOJQB5TN-UYfo6GD_.js → chunk-MOJQB5TN-BZ7Xp1xZ.js} +1 -1
  45. package/dist/assets/{chunk-RYQCIY6F-C8_6Iuf_.js → chunk-RYQCIY6F-w0k8a4aN.js} +1 -1
  46. package/dist/assets/{chunk-V7JOEXUC-CGdZK5My.js → chunk-V7JOEXUC-CR2m_ZLP.js} +1 -1
  47. package/dist/assets/{chunk-VR4S4FIN-C-HH5QTv.js → chunk-VR4S4FIN-BCJR0sNP.js} +1 -1
  48. package/dist/assets/{chunk-XXDRQBXY-B2n8y5qo.js → chunk-XXDRQBXY-BhsJv5YE.js} +1 -1
  49. package/dist/assets/classDiagram-OUVF2IWQ-DbI_Lbd-.js +1 -0
  50. package/dist/assets/classDiagram-v2-EOCWNBFH-DbI_Lbd-.js +1 -0
  51. package/dist/assets/compacting-bar.webp +0 -0
  52. package/dist/assets/{cose-bilkent-JH36ORCC-AB1HxIBy.js → cose-bilkent-JH36ORCC-BSXhVj_l.js} +1 -1
  53. package/dist/assets/{cynefin-VYW2F7L2-DTS_6pNv.js → cynefin-VYW2F7L2-D1Tm3Vt0.js} +1 -1
  54. package/dist/assets/{cynefinDiagram-TSTJHNR4-0oJZvAZy.js → cynefinDiagram-TSTJHNR4-DcvA_MXZ.js} +1 -1
  55. package/dist/assets/{dagre-VKFMJZFB-mOn_d4U5.js → dagre-VKFMJZFB-6I-LwvhB.js} +1 -1
  56. package/dist/assets/{diagram-FQU43EPY-DqHifujZ.js → diagram-FQU43EPY-BppVFL1M.js} +1 -1
  57. package/dist/assets/{diagram-G47NLZAW-BZ7eUs_p.js → diagram-G47NLZAW-BLGUCT6E.js} +1 -1
  58. package/dist/assets/{diagram-NH7WQ7WH-C3r43VXW.js → diagram-NH7WQ7WH-CEYltb_-.js} +1 -1
  59. package/dist/assets/{diagram-OA4YK3LP-D2RSBPAX.js → diagram-OA4YK3LP-B1EWuzbE.js} +1 -1
  60. package/dist/assets/{diagram-WEI45ONY-B9Nkjrlq.js → diagram-WEI45ONY-LDSoBbk8.js} +1 -1
  61. package/dist/assets/{ebnfDiagram-CCIWWBDH-B1RDvi6g.js → ebnfDiagram-CCIWWBDH-E4wZGnSz.js} +1 -1
  62. package/dist/assets/{erDiagram-Q63AITRT-B38eKAG5.js → erDiagram-Q63AITRT-Cmuko4DT.js} +1 -1
  63. package/dist/assets/{flowDiagram-23GEKE2U-C9txCjHm.js → flowDiagram-23GEKE2U-DZ_8svqD.js} +1 -1
  64. package/dist/assets/{ganttDiagram-NO4QXBWP-BGNoppCl.js → ganttDiagram-NO4QXBWP-BR4hcxxf.js} +1 -1
  65. package/dist/assets/{gitGraphDiagram-IHSO6WYX-qrryYqaT.js → gitGraphDiagram-IHSO6WYX-DKgytJlK.js} +1 -1
  66. package/dist/assets/{index-Drtp5UPa.js → index-B-Ykv2WD.js} +1 -1
  67. package/dist/assets/{index-CKVTIr6G.js → index-BBw8GgfS.js} +1 -1
  68. package/dist/assets/{index-ClvYehMs.js → index-BNbxKAb4.js} +1 -1
  69. package/dist/assets/index-Bbsb_wWh.css +1 -0
  70. package/dist/assets/index-CVEV_ET-.js +2 -0
  71. package/dist/assets/{index-BXNPTpxx.js → index-CXv8ZS0v.js} +5 -5
  72. package/dist/assets/{index-B4sdd8Y2.js → index-Ccq9kwRk.js} +1 -1
  73. package/dist/assets/{index-tE736Avl.js → index-DrxGAsVW.js} +1 -1
  74. package/dist/assets/index-MEQRanWH.js +2 -0
  75. package/dist/assets/{index-CYxytlNP.js → index-h-ZJIMFv.js} +3 -3
  76. package/dist/assets/{infoDiagram-FWYZ7A6U-DilAR8go.js → infoDiagram-FWYZ7A6U-IupeIGNJ.js} +1 -1
  77. package/dist/assets/{ishikawaDiagram-FXEZZL3T-B0cTGbt1.js → ishikawaDiagram-FXEZZL3T-BgnsuPSR.js} +1 -1
  78. package/dist/assets/{journeyDiagram-5HDEW3XC-eHbpGFin.js → journeyDiagram-5HDEW3XC-DH2sCeMM.js} +1 -1
  79. package/dist/assets/{kanban-definition-HUTT4EX6-BaSQRYl7.js → kanban-definition-HUTT4EX6-Wb6HQDBS.js} +1 -1
  80. package/dist/assets/{linear-BoUClmXF.js → linear-q6sA2iAt.js} +1 -1
  81. package/dist/assets/main-33HX-Nre.js +341 -0
  82. package/dist/assets/main-l3t22cX-.css +1 -0
  83. package/dist/assets/{mermaid.core-CGrC54u1.js → mermaid.core-DE8C8qk_.js} +4 -4
  84. package/dist/assets/{mindmap-definition-LN4V7U3C-BQWnb1yP.js → mindmap-definition-LN4V7U3C-Bs8A2u-b.js} +1 -1
  85. package/dist/assets/{pegDiagram-2B236MQR-Bs_4Go2e.js → pegDiagram-2B236MQR-CXEy-5xS.js} +1 -1
  86. package/dist/assets/{pieDiagram-ENE6RG2P-LCcCZeX5.js → pieDiagram-ENE6RG2P-0KEHZ6Qu.js} +1 -1
  87. package/dist/assets/{quadrantDiagram-ABIIQ3AL-CdlG1WsA.js → quadrantDiagram-ABIIQ3AL-B4ua4DRe.js} +1 -1
  88. package/dist/assets/{railroadDiagram-RFXS5EU6-CAcrzOwC.js → railroadDiagram-RFXS5EU6-BmumxmaP.js} +1 -1
  89. package/dist/assets/{requirementDiagram-TGXJPOKE-zgaCBhns.js → requirementDiagram-TGXJPOKE-BL46wZ-t.js} +1 -1
  90. package/dist/assets/{sankeyDiagram-HTMAVEWB-Cvn05yAi.js → sankeyDiagram-HTMAVEWB-DF7DCX_x.js} +1 -1
  91. package/dist/assets/{sequenceDiagram-DBY2YBRQ-C7oW7B56.js → sequenceDiagram-DBY2YBRQ-7ZltWf-f.js} +1 -1
  92. package/dist/assets/{sizeCapture-X5ZJPWSS-Z61MsHMO.js → sizeCapture-X5ZJPWSS-D-2cB5F9.js} +1 -1
  93. package/dist/assets/{stateDiagram-2N3HPSRC-CHjZ2LvZ.js → stateDiagram-2N3HPSRC-CIUa3aAc.js} +1 -1
  94. package/dist/assets/stateDiagram-v2-6OUMAXLB-B-vNeHDE.js +1 -0
  95. package/dist/assets/{swimlanes-5IMT3BWC-BOxFXKKq.js → swimlanes-5IMT3BWC-B-cxeKvb.js} +2 -2
  96. package/dist/assets/swimlanesDiagram-G3AALYLV-DMAH0FoM.js +8 -0
  97. package/dist/assets/{timeline-definition-FHXFAJF6-7Hw_U3c1.js → timeline-definition-FHXFAJF6-O6fJ1p9n.js} +1 -1
  98. package/dist/assets/{vennDiagram-L72KCM5P-DXOydhCz.js → vennDiagram-L72KCM5P-BiV5ZylZ.js} +1 -1
  99. package/dist/assets/{wardleyDiagram-EHGQE667-CHEopdXj.js → wardleyDiagram-EHGQE667-E4l00yC2.js} +1 -1
  100. package/dist/assets/{web-vmnQRY1J.js → web-CUkMR96i.js} +1 -1
  101. package/dist/assets/{web-BNIDHx-H.js → web-CfYEEkSC.js} +1 -1
  102. package/dist/assets/{web-DAWG2rda.js → web-DZ5Y-yBU.js} +1 -1
  103. package/dist/assets/{xychartDiagram-FW5EYKEG-BpNrwdIN.js → xychartDiagram-FW5EYKEG-B922Z30u.js} +1 -1
  104. package/dist/build-info.json +1 -1
  105. package/dist/index.html +2 -2
  106. package/dist/src/packages/server/claude/session-loader.js +128 -0
  107. package/dist/src/packages/server/grok/session-watcher.js +24 -0
  108. package/dist/src/packages/server/routes/agents.js +11 -8
  109. package/dist/src/packages/server/routes/sessions.js +25 -1
  110. package/dist/src/packages/server/routes/system.js +13 -0
  111. package/dist/src/packages/server/services/grok-usage-service.js +13 -3
  112. package/dist/src/packages/server/services/opencode-usage-service.js +49 -0
  113. package/package.json +1 -1
  114. package/dist/assets/ControlsModal-D4JLnO36.js +0 -1
  115. package/dist/assets/SpawnModal-CIuJWY6N.js +0 -1
  116. package/dist/assets/channel-CxofHie1.js +0 -1
  117. package/dist/assets/classDiagram-OUVF2IWQ-15eANucY.js +0 -1
  118. package/dist/assets/classDiagram-v2-EOCWNBFH-15eANucY.js +0 -1
  119. package/dist/assets/index-BdQoxlnS.js +0 -2
  120. package/dist/assets/index-BoiyspB0.js +0 -2
  121. package/dist/assets/index-DV4NCFbu.css +0 -1
  122. package/dist/assets/main-BdVckSM5.css +0 -1
  123. package/dist/assets/main-DuaHyH5t.js +0 -341
  124. package/dist/assets/stateDiagram-v2-6OUMAXLB-ePlfPVZw.js +0 -1
  125. package/dist/assets/swimlanesDiagram-G3AALYLV-ClgJ2Bw0.js +0 -8
@@ -1 +1 @@
1
- import{c as Ze,d as et,z as cs,a0 as us,f as ls,br as hs,b_ as fs,aa as ds,r as h,y as gs,S as _e,b$ as Ye,c0 as ms,c1 as ps,c2 as ys,as as As,c3 as ye,s as U,c4 as xs,j as d,I as V,V as Tt,c5 as Ft,n as Nt,c6 as Es,c7 as Dt,c8 as We,U as qe,m as Ms,ar as Gt,u as Oe,c9 as Rt,aC as Cs,ca as jt,cb as Is}from"./main-DuaHyH5t.js";import{cc as zn,cd as Kn,ce as On,cf as Un,cg as Gn}from"./main-DuaHyH5t.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DYBBrXTx.js";function ce(t){return Array.isArray?Array.isArray(t):Wt(t)==="[object Array]"}function _s(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-1/0?"-0":e}function Ss(t){return t==null?"":_s(t)}function oe(t){return typeof t=="string"}function Ht(t){return typeof t=="number"}function vs(t){return t===!0||t===!1||ws(t)&&Wt(t)=="[object Boolean]"}function Yt(t){return typeof t=="object"}function ws(t){return Yt(t)&&t!==null}function X(t){return t!=null}function Ve(t){return!t.trim().length}function Wt(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const bs="Incorrect 'index' type",Ls=t=>`Invalid value for key ${t}`,Ts=t=>`Pattern length exceeds max of ${t}.`,Fs=t=>`Missing ${t} property in key`,Ns=t=>`Property 'weight' in key '${t}' must be a positive integer`,kt=Object.prototype.hasOwnProperty;class Ds{constructor(e){this._keys=[],this._keyMap={};let n=0;e.forEach(r=>{let o=qt(r);this._keys.push(o),this._keyMap[o.id]=o,n+=o.weight}),this._keys.forEach(r=>{r.weight/=n})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function qt(t){let e=null,n=null,r=null,o=1,a=null;if(oe(t)||ce(t))r=t,e=$t(t),n=tt(t);else{if(!kt.call(t,"name"))throw new Error(Fs("name"));const c=t.name;if(r=c,kt.call(t,"weight")&&(o=t.weight,o<=0))throw new Error(Ns(c));e=$t(c),n=tt(c),a=t.getFn}return{path:e,id:n,weight:o,src:r,getFn:a}}function $t(t){return ce(t)?t:t.split(".")}function tt(t){return ce(t)?t.join("."):t}function Rs(t,e){let n=[],r=!1;const o=(a,c,u)=>{if(X(a))if(!c[u])n.push(a);else{let f=c[u];const l=a[f];if(!X(l))return;if(u===c.length-1&&(oe(l)||Ht(l)||vs(l)))n.push(Ss(l));else if(ce(l)){r=!0;for(let g=0,x=l.length;g<x;g+=1)o(l[g],c,u+1)}else c.length&&o(l,c,u+1)}};return o(t,oe(e)?e.split("."):e,0),r?n:n[0]}const js={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},ks={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(t,e)=>t.score===e.score?t.idx<e.idx?-1:1:t.score<e.score?-1:1},$s={location:0,threshold:.6,distance:100},Bs={useExtendedSearch:!1,getFn:Rs,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};var C={...ks,...js,...$s,...Bs};const Ps=/[^ ]+/g;function Qs(t=1,e=3){const n=new Map,r=Math.pow(10,e);return{get(o){const a=o.match(Ps).length;if(n.has(a))return n.get(a);const c=1/Math.pow(a,.5*t),u=parseFloat(Math.round(c*r)/r);return n.set(a,u),u},clear(){n.clear()}}}class at{constructor({getFn:e=C.getFn,fieldNormWeight:n=C.fieldNormWeight}={}){this.norm=Qs(n,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((n,r)=>{this._keysMap[n.id]=r})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,oe(this.docs[0])?this.docs.forEach((e,n)=>{this._addString(e,n)}):this.docs.forEach((e,n)=>{this._addObject(e,n)}),this.norm.clear())}add(e){const n=this.size();oe(e)?this._addString(e,n):this._addObject(e,n)}removeAt(e){this.records.splice(e,1);for(let n=e,r=this.size();n<r;n+=1)this.records[n].i-=1}getValueForItemAtKeyId(e,n){return e[this._keysMap[n]]}size(){return this.records.length}_addString(e,n){if(!X(e)||Ve(e))return;let r={v:e,i:n,n:this.norm.get(e)};this.records.push(r)}_addObject(e,n){let r={i:n,$:{}};this.keys.forEach((o,a)=>{let c=o.getFn?o.getFn(e):this.getFn(e,o.path);if(X(c)){if(ce(c)){let u=[];const f=[{nestedArrIndex:-1,value:c}];for(;f.length;){const{nestedArrIndex:l,value:g}=f.pop();if(X(g))if(oe(g)&&!Ve(g)){let x={v:g,i:l,n:this.norm.get(g)};u.push(x)}else ce(g)&&g.forEach((x,y)=>{f.push({nestedArrIndex:y,value:x})})}r.$[a]=u}else if(oe(c)&&!Ve(c)){let u={v:c,n:this.norm.get(c)};r.$[a]=u}}}),this.records.push(r)}toJSON(){return{keys:this.keys,records:this.records}}}function Vt(t,e,{getFn:n=C.getFn,fieldNormWeight:r=C.fieldNormWeight}={}){const o=new at({getFn:n,fieldNormWeight:r});return o.setKeys(t.map(qt)),o.setSources(e),o.create(),o}function zs(t,{getFn:e=C.getFn,fieldNormWeight:n=C.fieldNormWeight}={}){const{keys:r,records:o}=t,a=new at({getFn:e,fieldNormWeight:n});return a.setKeys(r),a.setIndexRecords(o),a}function Pe(t,{errors:e=0,currentLocation:n=0,expectedLocation:r=0,distance:o=C.distance,ignoreLocation:a=C.ignoreLocation}={}){const c=e/t.length;if(a)return c;const u=Math.abs(r-n);return o?c+u/o:u?1:c}function Ks(t=[],e=C.minMatchCharLength){let n=[],r=-1,o=-1,a=0;for(let c=t.length;a<c;a+=1){let u=t[a];u&&r===-1?r=a:!u&&r!==-1&&(o=a-1,o-r+1>=e&&n.push([r,o]),r=-1)}return t[a-1]&&a-r>=e&&n.push([r,a-1]),n}const me=32;function Os(t,e,n,{location:r=C.location,distance:o=C.distance,threshold:a=C.threshold,findAllMatches:c=C.findAllMatches,minMatchCharLength:u=C.minMatchCharLength,includeMatches:f=C.includeMatches,ignoreLocation:l=C.ignoreLocation}={}){if(e.length>me)throw new Error(Ts(me));const g=e.length,x=t.length,y=Math.max(0,Math.min(r,x));let E=a,A=y;const M=u>1||f,S=M?Array(x):[];let R;for(;(R=t.indexOf(e,A))>-1;){let B=Pe(e,{currentLocation:R,expectedLocation:y,distance:o,ignoreLocation:l});if(E=Math.min(B,E),A=R+g,M){let Y=0;for(;Y<g;)S[R+Y]=1,Y+=1}}A=-1;let w=[],j=1,K=g+x;const le=1<<g-1;for(let B=0;B<g;B+=1){let Y=0,G=K;for(;Y<G;)Pe(e,{errors:B,currentLocation:y+G,expectedLocation:y,distance:o,ignoreLocation:l})<=E?Y=G:K=G,G=Math.floor((K-Y)/2+Y);K=G;let ie=Math.max(1,y-G+1),re=c?x:Math.min(y+G,x)+g,J=Array(re+2);J[re+1]=(1<<B)-1;for(let O=re;O>=ie;O-=1){let W=O-1,N=n[t.charAt(W)];if(M&&(S[W]=+!!N),J[O]=(J[O+1]<<1|1)&N,B&&(J[O]|=(w[O+1]|w[O])<<1|1|w[O+1]),J[O]&le&&(j=Pe(e,{errors:B,currentLocation:W,expectedLocation:y,distance:o,ignoreLocation:l}),j<=E)){if(E=j,A=W,A<=y)break;ie=Math.max(1,2*y-A)}}if(Pe(e,{errors:B+1,currentLocation:y,expectedLocation:y,distance:o,ignoreLocation:l})>E)break;w=J}const he={isMatch:A>=0,score:Math.max(.001,j)};if(M){const B=Ks(S,u);B.length?f&&(he.indices=B):he.isMatch=!1}return he}function Us(t){let e={};for(let n=0,r=t.length;n<r;n+=1){const o=t.charAt(n);e[o]=(e[o]||0)|1<<r-n-1}return e}const ze=String.prototype.normalize?(t=>t.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,"")):(t=>t);class Xt{constructor(e,{location:n=C.location,threshold:r=C.threshold,distance:o=C.distance,includeMatches:a=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:u=C.minMatchCharLength,isCaseSensitive:f=C.isCaseSensitive,ignoreDiacritics:l=C.ignoreDiacritics,ignoreLocation:g=C.ignoreLocation}={}){if(this.options={location:n,threshold:r,distance:o,includeMatches:a,findAllMatches:c,minMatchCharLength:u,isCaseSensitive:f,ignoreDiacritics:l,ignoreLocation:g},e=f?e:e.toLowerCase(),e=l?ze(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const x=(E,A)=>{this.chunks.push({pattern:E,alphabet:Us(E),startIndex:A})},y=this.pattern.length;if(y>me){let E=0;const A=y%me,M=y-A;for(;E<M;)x(this.pattern.substr(E,me),E),E+=me;if(A){const S=y-me;x(this.pattern.substr(S),S)}}else x(this.pattern,0)}searchIn(e){const{isCaseSensitive:n,ignoreDiacritics:r,includeMatches:o}=this.options;if(e=n?e:e.toLowerCase(),e=r?ze(e):e,this.pattern===e){let M={isMatch:!0,score:0};return o&&(M.indices=[[0,e.length-1]]),M}const{location:a,distance:c,threshold:u,findAllMatches:f,minMatchCharLength:l,ignoreLocation:g}=this.options;let x=[],y=0,E=!1;this.chunks.forEach(({pattern:M,alphabet:S,startIndex:R})=>{const{isMatch:w,score:j,indices:K}=Os(e,M,S,{location:a+R,distance:c,threshold:u,findAllMatches:f,minMatchCharLength:l,includeMatches:o,ignoreLocation:g});w&&(E=!0),y+=j,w&&K&&(x=[...x,...K])});let A={isMatch:E,score:E?y/this.chunks.length:1};return E&&o&&(A.indices=x),A}}class ue{constructor(e){this.pattern=e}static isMultiMatch(e){return Bt(e,this.multiRegex)}static isSingleMatch(e){return Bt(e,this.singleRegex)}search(){}}function Bt(t,e){const n=t.match(e);return n?n[1]:null}class Gs extends ue{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const n=e===this.pattern;return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}}class Hs extends ue{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const r=e.indexOf(this.pattern)===-1;return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class Ys extends ue{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const n=e.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}}class Ws extends ue{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const n=!e.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class qs extends ue{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const n=e.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class Vs extends ue{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const n=!e.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class Jt extends ue{constructor(e,{location:n=C.location,threshold:r=C.threshold,distance:o=C.distance,includeMatches:a=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:u=C.minMatchCharLength,isCaseSensitive:f=C.isCaseSensitive,ignoreDiacritics:l=C.ignoreDiacritics,ignoreLocation:g=C.ignoreLocation}={}){super(e),this._bitapSearch=new Xt(e,{location:n,threshold:r,distance:o,includeMatches:a,findAllMatches:c,minMatchCharLength:u,isCaseSensitive:f,ignoreDiacritics:l,ignoreLocation:g})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class Zt extends ue{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let n=0,r;const o=[],a=this.pattern.length;for(;(r=e.indexOf(this.pattern,n))>-1;)n=r+a,o.push([r,n-1]);const c=!!o.length;return{isMatch:c,score:c?0:1,indices:o}}}const st=[Gs,Zt,Ys,Ws,Vs,qs,Hs,Jt],Pt=st.length,Xs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Js="|";function Zs(t,e={}){return t.split(Js).map(n=>{let r=n.trim().split(Xs).filter(a=>a&&!!a.trim()),o=[];for(let a=0,c=r.length;a<c;a+=1){const u=r[a];let f=!1,l=-1;for(;!f&&++l<Pt;){const g=st[l];let x=g.isMultiMatch(u);x&&(o.push(new g(x,e)),f=!0)}if(!f)for(l=-1;++l<Pt;){const g=st[l];let x=g.isSingleMatch(u);if(x){o.push(new g(x,e));break}}}return o})}const en=new Set([Jt.type,Zt.type]);class tn{constructor(e,{isCaseSensitive:n=C.isCaseSensitive,ignoreDiacritics:r=C.ignoreDiacritics,includeMatches:o=C.includeMatches,minMatchCharLength:a=C.minMatchCharLength,ignoreLocation:c=C.ignoreLocation,findAllMatches:u=C.findAllMatches,location:f=C.location,threshold:l=C.threshold,distance:g=C.distance}={}){this.query=null,this.options={isCaseSensitive:n,ignoreDiacritics:r,includeMatches:o,minMatchCharLength:a,findAllMatches:u,ignoreLocation:c,location:f,threshold:l,distance:g},e=n?e:e.toLowerCase(),e=r?ze(e):e,this.pattern=e,this.query=Zs(this.pattern,this.options)}static condition(e,n){return n.useExtendedSearch}searchIn(e){const n=this.query;if(!n)return{isMatch:!1,score:1};const{includeMatches:r,isCaseSensitive:o,ignoreDiacritics:a}=this.options;e=o?e:e.toLowerCase(),e=a?ze(e):e;let c=0,u=[],f=0;for(let l=0,g=n.length;l<g;l+=1){const x=n[l];u.length=0,c=0;for(let y=0,E=x.length;y<E;y+=1){const A=x[y],{isMatch:M,indices:S,score:R}=A.search(e);if(M){if(c+=1,f+=R,r){const w=A.constructor.type;en.has(w)?u=[...u,...S]:u.push(S)}}else{f=0,c=0,u.length=0;break}}if(c){let y={isMatch:!0,score:f/c};return r&&(y.indices=u),y}}return{isMatch:!1,score:1}}}const nt=[];function sn(...t){nt.push(...t)}function rt(t,e){for(let n=0,r=nt.length;n<r;n+=1){let o=nt[n];if(o.condition(t,e))return new o(t,e)}return new Xt(t,e)}const Ke={AND:"$and",OR:"$or"},ot={PATH:"$path",PATTERN:"$val"},it=t=>!!(t[Ke.AND]||t[Ke.OR]),nn=t=>!!t[ot.PATH],rn=t=>!ce(t)&&Yt(t)&&!it(t),Qt=t=>({[Ke.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function es(t,e,{auto:n=!0}={}){const r=o=>{let a=Object.keys(o);const c=nn(o);if(!c&&a.length>1&&!it(o))return r(Qt(o));if(rn(o)){const f=c?o[ot.PATH]:a[0],l=c?o[ot.PATTERN]:o[f];if(!oe(l))throw new Error(Ls(f));const g={keyId:tt(f),pattern:l};return n&&(g.searcher=rt(l,e)),g}let u={children:[],operator:a[0]};return a.forEach(f=>{const l=o[f];ce(l)&&l.forEach(g=>{u.children.push(r(g))})}),u};return it(t)||(t=Qt(t)),r(t)}function on(t,{ignoreFieldNorm:e=C.ignoreFieldNorm}){t.forEach(n=>{let r=1;n.matches.forEach(({key:o,norm:a,score:c})=>{const u=o?o.weight:null;r*=Math.pow(c===0&&u?Number.EPSILON:c,(u||1)*(e?1:a))}),n.score=r})}function an(t,e){const n=t.matches;e.matches=[],X(n)&&n.forEach(r=>{if(!X(r.indices)||!r.indices.length)return;const{indices:o,value:a}=r;let c={indices:o,value:a};r.key&&(c.key=r.key.src),r.idx>-1&&(c.refIndex=r.idx),e.matches.push(c)})}function cn(t,e){e.score=t.score}function un(t,e,{includeMatches:n=C.includeMatches,includeScore:r=C.includeScore}={}){const o=[];return n&&o.push(an),r&&o.push(cn),t.map(a=>{const{idx:c}=a,u={item:e[c],refIndex:c};return o.length&&o.forEach(f=>{f(a,u)}),u})}class ae{constructor(e,n={},r){this.options={...C,...n},this.options.useExtendedSearch,this._keyStore=new Ds(this.options.keys),this.setCollection(e,r)}setCollection(e,n){if(this._docs=e,n&&!(n instanceof at))throw new Error(bs);this._myIndex=n||Vt(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){X(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const n=[];for(let r=0,o=this._docs.length;r<o;r+=1){const a=this._docs[r];e(a,r)&&(this.removeAt(r),r-=1,o-=1,n.push(a))}return n}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:n=-1}={}){const{includeMatches:r,includeScore:o,shouldSort:a,sortFn:c,ignoreFieldNorm:u}=this.options;let f=oe(e)?oe(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return on(f,{ignoreFieldNorm:u}),a&&f.sort(c),Ht(n)&&n>-1&&(f=f.slice(0,n)),un(f,this._docs,{includeMatches:r,includeScore:o})}_searchStringList(e){const n=rt(e,this.options),{records:r}=this._myIndex,o=[];return r.forEach(({v:a,i:c,n:u})=>{if(!X(a))return;const{isMatch:f,score:l,indices:g}=n.searchIn(a);f&&o.push({item:a,idx:c,matches:[{score:l,value:a,norm:u,indices:g}]})}),o}_searchLogical(e){const n=es(e,this.options),r=(u,f,l)=>{if(!u.children){const{keyId:x,searcher:y}=u,E=this._findMatches({key:this._keyStore.get(x),value:this._myIndex.getValueForItemAtKeyId(f,x),searcher:y});return E&&E.length?[{idx:l,item:f,matches:E}]:[]}const g=[];for(let x=0,y=u.children.length;x<y;x+=1){const E=u.children[x],A=r(E,f,l);if(A.length)g.push(...A);else if(u.operator===Ke.AND)return[]}return g},o=this._myIndex.records,a={},c=[];return o.forEach(({$:u,i:f})=>{if(X(u)){let l=r(n,u,f);l.length&&(a[f]||(a[f]={idx:f,item:u,matches:[]},c.push(a[f])),l.forEach(({matches:g})=>{a[f].matches.push(...g)}))}}),c}_searchObjectList(e){const n=rt(e,this.options),{keys:r,records:o}=this._myIndex,a=[];return o.forEach(({$:c,i:u})=>{if(!X(c))return;let f=[];r.forEach((l,g)=>{f.push(...this._findMatches({key:l,value:c[g],searcher:n}))}),f.length&&a.push({idx:u,item:c,matches:f})}),a}_findMatches({key:e,value:n,searcher:r}){if(!X(n))return[];let o=[];if(ce(n))n.forEach(({v:a,i:c,n:u})=>{if(!X(a))return;const{isMatch:f,score:l,indices:g}=r.searchIn(a);f&&o.push({score:l,key:e,value:a,idx:c,norm:u,indices:g})});else{const{v:a,n:c}=n,{isMatch:u,score:f,indices:l}=r.searchIn(a);u&&o.push({score:f,key:e,value:a,norm:c,indices:l})}return o}}ae.version="7.1.0";ae.createIndex=Vt;ae.parseIndex=zs;ae.config=C;ae.parseQuery=es;sn(tn);function Ie(t){return t.trim().toLowerCase().split(/\s+/).filter(Boolean)}function ln(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Qe(t,e){const n=e.trim(),r=Ie(n);if(r.length<=1)return t.search(n);const[o,...a]=r.map(f=>t.search(f)),c=a.map(f=>{const l=new Map;for(const g of f)l.set(g.refIndex,g.score??1);return l}),u=[];for(const f of o){let l=f.score??1,g=!0;for(const x of c){const y=x.get(f.refIndex);if(y===void 0){g=!1;break}l+=y}g&&u.push({item:f.item,score:l/r.length})}return u.sort((f,l)=>(f.score??1)-(l.score??1)),u}function zt(t,e,n){return e===t?6:e.startsWith(t)?5:e.split(/[^a-z0-9]+/i).includes(t)?4:e.includes(t)?3:n.includes(t)?2:1}function hn(t,e,n){const r=Ie(t);if(r.length===0)return 1;const o=e.toLowerCase(),a=n.toLowerCase(),c=zt(r.join(" "),o,a);if(r.length===1)return c;let u=6;for(const f of r)u=Math.min(u,zt(f,o,a));return Math.max(c,u)}const fn=4;function Kt(t){return t.replace(/…|\.\.\./g," ").replace(/\s+/g," ").trim().toLowerCase()}const dn=24;function gn(t,e){const n=Kt(t),r=Kt(e);return n===r?!0:Math.min(n.length,r.length)<dn?!1:n.includes(r)||r.includes(n)}function mn(t,e){const n=[],r=o=>{!o||!o.text.trim()||n.length>=fn||n.some(a=>gn(a.text,o.text))||n.push(o)};t&&r({text:t,kind:"user"});for(const o of e??[])r(o);return n.length>0?n:void 0}async function pn(t){const e=new URLSearchParams({q:t}),n=await Ze(et(`/api/folders/search?${e.toString()}`));if(!n.ok){const o=await n.json().catch(()=>({}));throw new Error(o.error||`Failed to search folders: ${n.statusText}`)}const r=await n.json();return Array.isArray(r.folders)?r.folders:[]}const Ot=["agent","session","building","file","file-content","folder","area"],yn=2,An=2,xn=50,En=10,Mn=3,Cn=30,In=8,_n=3,Sn=15,Xe=5,Je=5;function vn(){const t=Gt(_e.SPOTLIGHT_TAB,"all");return ye.includes(t)?t:"all"}function Ut(){return Ms(_e.SPOTLIGHT_QUERY,"")}function wn(){const t=Gt(_e.AOP_CONFIG,{});return t.sortMode==="name"||t.sortMode==="status"||t.sortMode==="recent"?t.sortMode:"recent"}function bn({isOpen:t,onClose:e,onOpenSpawnModal:n,onOpenCommanderView:r,onOpenToolbox:o,onOpenFileExplorer:a,onOpenPM2LogsModal:c,onOpenBossLogsModal:u,onOpenDatabasePanel:f,onOpenMonitoringModal:l,onOpenSessionFinder:g,onOpenFileDetail:x}){const y=cs(),E=us(),A=ls(),M=hs(),S=fs(),R=ds(),w=h.useRef(e);w.current=e;const j=h.useRef(n);j.current=n;const K=h.useRef(r);K.current=r;const le=h.useRef(o);le.current=o;const he=h.useRef(a);he.current=a;const B=h.useRef(c);B.current=c;const Y=h.useRef(u);Y.current=u;const G=h.useRef(f);G.current=f;const ie=h.useRef(l);ie.current=l;const re=h.useRef(g);re.current=g;const J=h.useRef(x);J.current=x;const[F,O]=h.useState(Ut),[W,N]=h.useState(0),[v,ee]=h.useState(vn),[Ae,te]=h.useState([]),[ct,xe]=h.useState([]),[ut,Ee]=h.useState([]),[lt,Se]=h.useState(!1),[ht,ve]=h.useState(!1),[ft,we]=h.useState(!1),[dt,be]=h.useState(!1),[Le,Me]=h.useState({query:"",rows:[]}),[gt,mt]=h.useState(!1),[pt,yt]=h.useState(!1);h.useEffect(()=>{mt(!1),yt(!1)},[F,t]);const ts=h.useCallback(s=>{O(s),gs(_e.SPOTLIGHT_QUERY,s)},[]);h.useEffect(()=>{t&&(O(Ut()),N(0))},[t]),h.useEffect(()=>{if(!t){te([]),Se(!1);return}const s=F.trim();if(s.length<yn){te([]),Se(!1);return}te([]),Se(!0);let i=!1;const m=setTimeout(()=>{pn(s).then(I=>{i||te(I)}).catch(()=>{i||te([])}).finally(()=>{i||Se(!1)})},250);return()=>{i=!0,clearTimeout(m)}},[t,F]);const At=(M.fileSearchExcludeDirs??Ye).join(",");h.useEffect(()=>{if(!t){xe([]),ve(!1);return}const s=F.trim();if(s.length<An){xe([]),ve(!1);return}xe([]),ve(!0);let i=!1;const m=setTimeout(()=>{ms(s,{exclude:M.fileSearchExcludeDirs??[...Ye],limit:xn}).then(I=>{i||xe(I)}).catch(()=>{i||xe([])}).finally(()=>{i||ve(!1)})},250);return()=>{i=!0,clearTimeout(m)}},[t,F,At,M.fileSearchExcludeDirs]),h.useEffect(()=>{if(!t){Ee([]),we(!1);return}const s=F.trim();if(s.length<Mn){Ee([]),we(!1);return}Ee([]),we(!0);const i=new AbortController,m=setTimeout(()=>{ps(s,{exclude:M.fileSearchExcludeDirs??[...Ye],limit:Cn,signal:i.signal}).then(I=>{i.signal.aborted||Ee(I)}).catch(()=>{i.signal.aborted||Ee([])}).finally(()=>{i.signal.aborted||we(!1)})},300);return()=>{clearTimeout(m),i.abort()}},[t,F,At,M.fileSearchExcludeDirs]),h.useEffect(()=>{if(!t){Me({query:"",rows:[]}),be(!1);return}const s=F.trim();if(s.length<_n){Me({query:"",rows:[]}),be(!1);return}Me({query:"",rows:[]}),be(!0);let i=!1;const m=setTimeout(()=>{ys(s,{limit:Sn}).then(I=>{i||Me({query:s,rows:I})}).catch(()=>{i||Me({query:"",rows:[]})}).finally(()=>{i||be(!1)})},250);return()=>{i=!0,clearTimeout(m)}},[t,F]);const Ue=h.useCallback(s=>{ee(s),As(_e.SPOTLIGHT_TAB,s)},[]),xt=h.useRef(v);xt.current=v;const ss=h.useCallback(s=>{const i=ye.indexOf(xt.current),m=ye[(i+s+ye.length)%ye.length];Ue(m)},[Ue]);h.useEffect(()=>{N(0)},[v]);const Ge=U.getShortcuts(),Te=h.useMemo(()=>t?xs():{},[t]),Fe=h.useMemo(()=>{if(!t)return[];const s=window.matchMedia("(pointer: coarse)").matches,i=Ge.find(I=>I.id==="spawn-agent"),m=Ge.find(I=>I.id==="toggle-commander");return[{id:"cmd-spawn",type:"command",title:"Spawn New Agent",subtitle:s?"":i?Tt(i):"Alt+N",icon:d.jsx(V,{name:"plus",size:16}),action:()=>{w.current(),j.current()}},{id:"cmd-commander",type:"command",title:"Commander View",subtitle:s?"":m!=null&&m.key?Tt(m):"Tab",icon:d.jsx(V,{name:"dashboard",size:16}),action:()=>{w.current(),K.current()}},{id:"cmd-settings",type:"command",title:"Settings & Tools",subtitle:"Configure Tide Commander",icon:d.jsx(V,{name:"gear",size:16}),action:()=>{w.current(),le.current()}},{id:"cmd-monitoring",type:"command",title:"Monitoring & Logs",subtitle:"Triggers, workflows, events",icon:d.jsx(V,{name:"chart-line",size:16}),action:()=>{var I;w.current(),(I=ie.current)==null||I.call(ie)}}]},[t,Ge]),Ne=h.useMemo(()=>{const s=new Map;if(!t)return s;const i=Array.from(E.values());for(const m of y.values())for(const I of i)if(U.isPositionInArea({x:m.position.x,z:m.position.z},I)){s.set(m.id,I);break}return s},[t,y,E]),pe=h.useMemo(()=>t?Array.from(y.values()).map(s=>{const i=[];s.lastAssignedTask&&i.push(s.lastAssignedTask);const m=`${s.class} • ${s.cwd}`,I=Ne.get(s.id),k=(I==null?void 0:I.name)||"";let b=`${s.name} ${s.class} ${s.status} ${s.cwd}`;s.taskLabel&&(b+=` ${s.taskLabel}`),k&&(b+=` ${k}`),i.length>0&&(b+=` ${i.join(" ")}`);const $=Date.now()-s.lastActivity;let D;return s.lastAssignedTask&&(s.lastAssignedTask.length>150?D=s.lastAssignedTask.slice(0,150)+"...":D=s.lastAssignedTask),{id:`agent-${s.id}`,type:"agent",title:s.name,subtitle:m,lastUserInput:D,timeAway:$,icon:d.jsx(Nt,{agent:s,size:20}),_searchText:b,_userQueries:i,_agentId:s.id,_lastActivity:s.lastActivity,_taskLabel:s.taskLabel,_status:s.status,_provider:s.provider??"claude",_piModel:s.piModel,_piModelProvider:s.piModelProvider,_areaName:k||void 0,_areaColor:I==null?void 0:I.color,action:()=>{w.current(),Ft(s.id),U.selectAgent(s.id),U.getState().viewMode!=="flat"&&U.requestTerminalExpand()}}}):[],[t,y,Ne]),De=h.useMemo(()=>t?Array.from(E.values()).map(s=>{var i;return{id:`area-${s.id}`,type:"area",title:s.name,subtitle:`${s.assignedAgentIds.length} agents • ${((i=s.directories)==null?void 0:i.length)||0} folders`,icon:d.jsx(V,{name:"map",size:16}),action:()=>{w.current(),U.selectArea(s.id)}}}):[],[t,E]),Re=h.useMemo(()=>{const s=new Map;for(const i of pe)i._agentId&&s.set(i._agentId,i);return s},[pe]),Et=h.useMemo(()=>{const s=new Map;if(!t)return s;for(const i of y.values()){const m=Ne.get(i.id);if(!m||m.archived)continue;const I=s.get(m.id);I?I.push(i):s.set(m.id,[i])}return s},[t,y,Ne]),Mt=h.useMemo(()=>{const s=new Map;for(const i of S)s.has(i.agentId)||s.set(i.agentId,i.timestamp);return s},[S]),He=h.useMemo(()=>{if(!t)return[];const s=F.trim().toLowerCase(),i=Ie(s),m=Es({sortMode:wn(),agentsWithUnseenOutput:R,getLatestToolTimestamp:b=>Mt.get(b)}),I=Array.from(E.values()).filter(b=>!b.archived).filter(b=>{if(i.length===0)return!0;const $=b.name.toLowerCase();return i.some(D=>$.includes(D))}).sort((b,$)=>b.name.localeCompare($.name,void 0,{sensitivity:"base"})),k=[];for(const b of I){const $=b.name.toLowerCase(),D=i.filter(P=>!$.includes(P));let H=(Et.get(b.id)||[]).slice().sort(m).map(P=>Re.get(P.id)).filter(P=>!!P);D.length>0&&(H=H.filter(P=>{const Z=`${P.title} ${P.subtitle||""} ${P._searchText||""}`.toLowerCase();return D.every(Q=>Z.includes(Q))}),H.length===0)||!s&&H.length===0||k.push({areaId:b.id,areaName:b.name,areaColor:b.color,agents:H})}return k},[t,F,E,Et,Re,R,Mt]),je=h.useMemo(()=>t?Array.from(A.values()).filter(s=>s.type==="server"||s.type==="boss"||s.type==="database"||s.type==="tests").map(s=>{var D,q,H,P,Z;const i=s.status==="running"?"#4ade80":s.status==="stopped"?"#f87171":"#facc15",m=s.type==="boss"?"crown":s.type==="database"?"database":s.type==="tests"?"flask":"desktop",I=s.type==="boss"?"Boss":s.type==="database"?"Database":s.type==="tests"?"Tests":"Server";let k=`${I} • ${s.status}`;if(s.type==="database"&&((q=(D=s.database)==null?void 0:D.connections)!=null&&q.length)){const Q=s.database.connections[0];k+=` • ${Q.engine} @ ${Q.host}`}else s.type==="tests"&&s.folderPath?k=`${I} • ${s.folderPath}`:s.cwd&&(k+=` • ${s.cwd}`);const b=((H=s.pm2Status)==null?void 0:H.ports)||[];let $=`${s.name} ${s.type} ${s.status} ${s.cwd||""} ${((P=s.pm2)==null?void 0:P.name)||""}`;if(s.type==="tests"&&($+=` ${s.folderPath||""} tests junit maven`),b.length>0&&($+=` ${b.join(" ")}`),s.type==="database"&&((Z=s.database)!=null&&Z.connections))for(const Q of s.database.connections)$+=` ${Q.name} ${Q.engine} ${Q.host} ${Q.database||""} mysql postgresql sql`;return{id:`building-${s.id}`,type:"building",title:s.name,subtitle:k,_ports:b,icon:d.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[d.jsx(V,{name:"status-pending",size:10,weight:"fill",color:i}),d.jsx(V,{name:m,size:16})]}),_searchText:$,action:()=>{var Q;w.current(),s.type==="boss"?Y.current(s.id):s.type==="database"?G.current(s.id):s.type==="tests"?U.openTestsBuilding(s.id):s.type==="http"?U.openHttpBuilding(s.id):(Q=s.pm2)!=null&&Q.enabled&&B.current(s.id)}}}):[],[t,A]),Ct=h.useMemo(()=>t?Ae.map(s=>{const i=s.isGitRepo&&s.gitBranch?`${s.path} • ${s.gitBranch}`:s.path;return{id:`folder-${s.path}`,type:"folder",title:s.name,subtitle:i,matchedText:s.path,icon:d.jsx(V,{name:s.isGitRepo?"git-branch":"folder",size:16}),_searchText:`${s.name} ${s.path}`,_isGitRepo:s.isGitRepo,_gitBranch:s.gitBranch,action:()=>{w.current(),U.openFileExplorer(s.path)}}}):[],[t,Ae]),ke=h.useMemo(()=>t?ct.map(s=>{const i=s.areaName&&s.areaName!==s.projectName?`${s.projectName} · ${s.areaName}`:s.projectName;return{id:`file-${s.path}`,type:"file",title:s.name,subtitle:s.relativePath,matchedText:`${s.path} ${i}`,icon:Dt(s.path),_searchText:`${s.name} ${s.relativePath} ${s.path} ${s.projectName} ${s.areaName}`,_projectName:s.projectName,_areaName:s.areaName,action:()=>{w.current(),J.current({filePath:s.path,projectRoot:s.projectRoot,searchQuery:F.trim()})}}}):[],[t,ct,F]),$e=h.useMemo(()=>t?ut.map(s=>{const i=s.matches[0],m=s.areaName&&s.areaName!==s.projectName?`${s.projectName} · ${s.areaName}`:s.projectName;return{id:`file-content-${s.path}`,type:"file-content",title:s.name,subtitle:`${s.relativePath}${i!=null&&i.line?`:${i.line}`:""}`,matchedQuery:i==null?void 0:i.content,matchedText:`${s.path} ${m}`,icon:Dt(s.path),_projectName:s.projectName,_areaName:s.areaName,_lineNumber:i==null?void 0:i.line,action:()=>{w.current(),J.current({filePath:s.path,projectRoot:s.projectRoot,targetLine:i==null?void 0:i.line,searchQuery:F.trim()})}}}):[],[t,ut,F]),fe=h.useMemo(()=>{if(!t)return[];const s=i=>{const m=Date.now()-new Date(i).getTime();return!Number.isFinite(m)||m<0?"":m<36e5?`${Math.max(1,Math.floor(m/6e4))}m`:m<864e5?`${Math.floor(m/36e5)}h`:`${Math.floor(m/864e5)}d`};return Le.rows.map(i=>{const m=Array.from(y.values()).find(D=>D.sessionId===i.sessionId),I=m??(i.agentId?y.get(i.agentId):void 0),k=(i.firstPrompt||i.snippet||i.sessionId).slice(0,90),b=[i.projectPath||i.projectDir];I&&b.push(`→ ${I.name}${m?"":" (past session)"}`);const $=s(i.lastModified);return $&&b.push($),b.push(`${i.totalMatches}×`),{id:`session-${i.sessionId}`,type:"session",title:k,subtitle:b.join(" • "),matchedQuery:i.snippet||void 0,matchedExtracts:i.extracts&&i.extracts.length>0?i.extracts:void 0,_agentId:I==null?void 0:I.id,_sessionMatches:i.totalMatches,_provider:i.provider||"claude",icon:I?d.jsx(Nt,{agent:I,size:20}):d.jsx(V,{name:"history",size:16}),action:()=>{var q;w.current();const D=Array.from(U.getState().agents.values()).find(H=>H.sessionId===i.sessionId);D?(Ft(D.id),U.selectAgent(D.id),U.getState().viewMode!=="flat"&&U.requestTerminalExpand(),U.requestTerminalSearch(D.id,Le.query)):(q=re.current)==null||q.call(re,{initialQuery:Le.query,initialSessionKey:`${i.projectPath}::${i.sessionId}`})}}})},[t,Le,y]),It=h.useMemo(()=>new ae(pe,{keys:["title","subtitle","_searchText","lastUserInput"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[pe]),_t=h.useMemo(()=>new ae(Fe,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[Fe]),St=h.useMemo(()=>new ae(De,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[De]),vt=h.useMemo(()=>new ae(je,{keys:["title","subtitle","_searchText"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[je]),Ce=h.useMemo(()=>{if(!F.trim()){const p=[];p.push(...je);const _=[...pe].sort((T,z)=>{const ne=We(T._agentId,T._lastActivity,Te);return We(z._agentId,z._lastActivity,Te)-ne});p.push(..._),p.push(...De.slice(0,2));const L={};return Ot.forEach((T,z)=>{L[T]=z}),p.sort((T,z)=>(L[T.type]??999)-(L[z.type]??999)),p}const s=F.trim().toLowerCase(),i=Ie(s),m=Qe(It,F).slice(0,30),I=Qe(St,F).slice(0,2),k=Ct.slice(0,8),b=ke.slice(0,En),$=Qe(vt,F).filter(p=>{const _=p.score??1,L=`${p.item.title} ${p.item.subtitle||""} ${p.item._searchText||""}`.toLowerCase();return i.every(T=>L.includes(T))||_<=.2}).slice(0,4),D={agent:6,building:5,folder:4,file:4,"file-content":4,command:3,area:2,"modified-file":1,session:0},q=p=>hn(s,p.title,`${p.subtitle||""} ${p._searchText||""} ${p.matchedText||""}`),H=(p,_)=>{const L=(1-Math.min(1,_??1))*4;return q(p)*100+(D[p.type]??0)*5+L},P=new Map,Z=(p,_)=>{const L=P.get(p.type),T={item:p,score:H(p,_)};L?L.push(T):P.set(p.type,[T])},Q=new Map;for(const p of fe)p._agentId&&!Q.has(p._agentId)&&Q.set(p._agentId,p);for(const p of m){const _={...p.item};if(_._userQueries&&_._userQueries.length>0){const T=_._userQueries.find(z=>i.some(ne=>z.toLowerCase().includes(ne)));if(T){const z=T.toLowerCase(),ne=z.includes(s)?s:i.find(ge=>z.includes(ge))??s;if(T.length>200){const ge=z.indexOf(ne),bt=Math.max(0,ge-60),Lt=Math.min(T.length,ge+ne.length+100);_.matchedQuery=(bt>0?"...":"")+T.slice(bt,Lt)+(Lt<T.length?"...":"")}else _.matchedQuery=T}}const L=_._agentId?Q.get(_._agentId):void 0;if(L){_.matchedQuery||(_.matchedQuery=L.matchedQuery);const T=_.matchedQuery,z=(T==null?void 0:T.toLowerCase())??"";_.matchedExtracts=mn(T&&i.every(ne=>z.includes(ne))?T:void 0,L.matchedExtracts),_.action=L.action,_._sessionMatches=L._sessionMatches,_._searchText=`${_._searchText||""} ${L.matchedQuery||""} ${s}`}Z(_,p.score)}for(const[p,_]of Q){if(m.some(T=>T.item._agentId===p))continue;const L=Re.get(p);L&&Z({...L,matchedQuery:_.matchedQuery,matchedExtracts:_.matchedExtracts,action:_.action,_sessionMatches:_._sessionMatches,_searchText:`${L._searchText||""} ${_.matchedQuery||""} ${s}`},void 0)}for(const p of $)Z(p.item,p.score);for(const p of I)Z(p.item,p.score);for(const p of k)Z(p,void 0);for(const p of b)Z(p,void 0);for(const p of $e.slice(0,In))Z(p,void 0);const is=24*36e5,as=Date.now(),wt=p=>{const _=We(p.item._agentId,p.item._lastActivity,Te),L=Math.exp(-Math.LN2*Math.max(0,as-_)/is);return Math.log2(1+(p.item._sessionMatches??0))+4*L};for(const[p,_]of P)p==="agent"?_.sort((L,T)=>{const z=q(L.item),ne=q(T.item);if(ne!==z)return ne-z;const Be=wt(L),ge=wt(T);return ge!==Be?ge-Be:T.score-L.score}):_.sort((L,T)=>T.score-L.score);const de=[];for(const p of Ot){if(p==="session"){!pt&&fe.length>Xe?(de.push(...fe.slice(0,Xe)),de.push({id:"session-show-all",type:"session",title:`Show all conversations (${fe.length})`,subtitle:`${fe.length-Xe} more matches`,icon:d.jsx(V,{name:"arrow-down",size:16}),action:()=>yt(!0)})):de.push(...fe);continue}const _=P.get(p);if(_){if(p==="agent"&&!gt&&_.length>Je){for(const L of _.slice(0,Je))de.push(L.item);de.push({id:"agent-show-all",type:"agent",title:`Show all agents (${_.length})`,subtitle:`${_.length-Je} more matches`,icon:d.jsx(V,{name:"arrow-down",size:16}),action:()=>mt(!0)});continue}for(const L of _)de.push(L.item)}}return de},[F,It,St,vt,pe,Re,De,je,Ct,ke,$e,fe,Te,gt,pt]),se=h.useMemo(()=>{switch(v){case"agents":return Ce.filter(s=>s.type==="agent");case"buildings":return Ce.filter(s=>s.type==="building");case"commands":return F.trim()?Qe(_t,F).slice(0,3).map(s=>s.item):Fe;case"folders":return Ce.filter(s=>s.type==="folder");case"files":return ke;case"contents":return $e;case"areas":return He.flatMap(s=>s.agents);case"all":default:return Ce}},[v,Ce,He,ke,$e,F,_t,Fe]),ns=h.useMemo(()=>{const s=[];if(dt&&s.push("session"),ht&&s.push("file"),ft&&s.push("file-content"),lt&&s.push("folder"),v==="all")return s;const m={buildings:"building",folders:"folder",files:"file",contents:"file-content",agents:"agent",commands:"command"}[v];return m&&s.includes(m)?[m]:[]},[v,dt,ht,ft,lt]);h.useEffect(()=>{W>=se.length&&N(Math.max(0,se.length-1))},[se.length,W]);const rs=h.useCallback(s=>{if(s.altKey&&!s.ctrlKey&&!s.metaKey&&(s.key==="p"||s.key==="n"||s.key==="P"||s.key==="N")){s.preventDefault(),s.stopPropagation(),s.nativeEvent.stopImmediatePropagation();const i=s.key.toLowerCase();N(i==="p"?m=>m>0?m-1:se.length-1:m=>m<se.length-1?m+1:0);return}switch(s.key){case"Escape":s.preventDefault(),w.current();break;case"ArrowUp":s.preventDefault(),N(i=>i>0?i-1:se.length-1);break;case"ArrowDown":s.preventDefault(),N(i=>i<se.length-1?i+1:0);break;case"Enter":s.preventDefault(),se[W]&&se[W].action();break}},[se,W]),os=h.useCallback((s,i)=>{if(!i||!s)return s;const m=Ie(i);if(m.length===0)return s;const I=new RegExp(m.map(ln).sort((q,H)=>H.length-q.length).join("|"),"gi"),k=[];let b=0,$=0,D;for(;(D=I.exec(s))!==null;)D.index>b&&k.push(s.slice(b,D.index)),k.push(qe.createElement("mark",{key:$++,className:"spotlight-highlight"},D[0])),b=D.index+D[0].length;return b<s.length&&k.push(s.slice(b)),k.length>0?qe.createElement(qe.Fragment,null,...k):s},[]);return{query:F,setQuery:ts,selectedIndex:W,setSelectedIndex:N,results:se,loadingTypes:ns,activeTab:v,setActiveTab:Ue,cycleTab:ss,areaSections:He,handleKeyDown:rs,highlightMatch:os}}const Ln=h.forwardRef(function({query:e,onQueryChange:n,onKeyDown:r,onResetSelection:o},a){const{t:c}=Oe(["common"]);return d.jsxs("div",{className:"spotlight-input-wrapper",children:[d.jsx("span",{className:"spotlight-search-icon",children:"⌘"}),d.jsx("input",{ref:a,type:"text",className:"spotlight-input",placeholder:c("common:search.spotlightPlaceholder"),value:e,onChange:u=>{n(u.target.value),o()},onKeyDown:r,autoFocus:!0,spellCheck:!1}),d.jsxs("div",{className:"spotlight-input-hints",children:[d.jsx("span",{className:"spotlight-shortcut-hint",children:"↑↓"}),d.jsx("span",{className:"spotlight-shortcut-hint",children:"Enter"}),d.jsx("span",{className:"spotlight-shortcut-hint",children:"Esc"})]})]})}),Tn=h.memo(function({activeTab:e,onSelect:n}){const{t:r}=Oe(["terminal"]);return d.jsxs("div",{className:"spotlight-tabs",role:"tablist","aria-label":r("terminal:spotlight.tabsLabel"),children:[ye.map(o=>d.jsx("button",{type:"button",role:"tab","aria-selected":o===e,tabIndex:-1,className:`spotlight-tab${o===e?" active":""}`,onClick:()=>n(o),children:r(`terminal:spotlight.tabs.${o}`)},o)),d.jsx("span",{className:"spotlight-tabs-hint",children:d.jsx("kbd",{children:"Tab"})})]})}),Fn=h.forwardRef(function({results:e,loadingTypes:n,selectedIndex:r,query:o,activeTab:a,areaSections:c,highlightMatch:u,onSelectIndex:f},l){const{t:g}=Oe(["terminal"]),x=h.useRef(!1);h.useEffect(()=>{x.current=!1},[e]),h.useEffect(()=>{const A=typeof l=="function"?null:l==null?void 0:l.current;if(!A)return;const M=()=>{x.current=!0};return A.addEventListener("mousemove",M),()=>{A.removeEventListener("mousemove",M)}},[l,e]);const y={command:g("terminal:spotlight.categories.commands"),agent:g("terminal:spotlight.categories.agents"),building:g("terminal:spotlight.categories.infrastructure"),area:g("terminal:spotlight.categories.areas"),folder:g("terminal:spotlight.categories.folders"),file:g("terminal:spotlight.categories.files"),"file-content":g("terminal:spotlight.categories.fileContents"),"modified-file":g("terminal:spotlight.categories.modifiedFiles"),session:g("terminal:spotlight.categories.sessions")},E=h.useMemo(()=>{const A=[];let M=null,S=[];e.forEach((w,j)=>{w.type!==M&&(M!==null&&S.length>0&&A.push([M,S]),M=w.type,S=[]),S.push({result:w,index:j})}),M!==null&&S.length>0&&A.push([M,S]);for(const w of n)A.some(([j])=>j===w)||A.push([w,[]]);const R=["agent","session","building","file","file-content","folder","area","command"];return A.sort(([w],[j])=>R.indexOf(w)-R.indexOf(j)),A},[e,n]);if(h.useEffect(()=>{if(!l||typeof l=="function")return;const A=l.current;if(!A)return;const M=A.querySelector(".spotlight-item.selected");M&&M.scrollIntoView({block:"nearest",behavior:"smooth"})},[r,l]),a==="areas"){if(c.length===0)return d.jsx("div",{className:"spotlight-results",ref:l,children:d.jsx("div",{className:"spotlight-empty",children:g("terminal:spotlight.noResults")})});let A=0;return d.jsx("div",{className:"spotlight-results",ref:l,children:c.map(M=>d.jsxs("div",{children:[d.jsxs("div",{className:"spotlight-category-header spotlight-area-section-header",children:[d.jsx("span",{className:"spotlight-area-dot",style:{background:M.areaColor},"aria-hidden":"true"}),d.jsx("span",{className:"spotlight-area-name",children:M.areaName}),d.jsx("span",{className:"spotlight-area-count",children:M.agents.length})]}),M.agents.length===0?d.jsx("div",{className:"spotlight-area-empty",children:g("terminal:spotlight.noAgentsInArea")}):M.agents.map(S=>{const R=A++;return d.jsx(Rt,{result:S,isSelected:R===r,query:o,highlightMatch:u,onClick:()=>S.action(),onMouseEnter:()=>{x.current&&f(R)}},S.id)})]},M.areaId))})}return e.length===0&&n.length===0?d.jsx("div",{className:"spotlight-results",ref:l,children:d.jsx("div",{className:"spotlight-empty",children:g("terminal:spotlight.noResults")})}):d.jsx("div",{className:"spotlight-results",ref:l,children:E.map(([A,M])=>d.jsxs("div",{children:[(a==="all"||E.length>1)&&d.jsx("div",{className:"spotlight-category-header",children:y[A]||A}),n.includes(A)&&d.jsxs("div",{className:"spotlight-block-loading",role:"status",children:[d.jsx("span",{className:"spotlight-loading-spinner","aria-hidden":"true"}),g("terminal:spotlight.searching")]}),M.map(({result:S,index:R})=>d.jsx(Rt,{result:S,isSelected:R===r,query:o,highlightMatch:u,onClick:()=>S.action(),onMouseEnter:()=>{x.current&&f(R)}},S.id))]},A))})}),Nn=h.memo(function(){const{t:e}=Oe(["terminal"]);return d.jsxs("div",{className:"spotlight-footer",children:[d.jsxs("div",{className:"spotlight-footer-left",children:[d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"↑"}),d.jsx("kbd",{children:"↓"})," ",d.jsx("kbd",{children:"Alt+N"}),d.jsx("kbd",{children:"Alt+P"})," ",e("terminal:spotlight.navigate")]}),d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"Enter"})," ",e("terminal:spotlight.select")]}),d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"Tab"})," ",e("terminal:spotlight.switchTabs")]})]}),d.jsx("div",{className:"spotlight-footer-right",children:d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"Esc"})," ",e("common:buttons.close")]})})]})});function Dn({detail:t,onClose:e}){const[n,r]=h.useState(null),[o,a]=h.useState(!0),[c,u]=h.useState(null);Cs("spotlight-file-detail",!0,e),h.useEffect(()=>{const E=new AbortController;return a(!0),u(null),r(null),(async()=>{try{const M=await Ze(et(`/api/files/read?path=${encodeURIComponent(t.filePath)}`),{signal:E.signal}),S=await M.json();if(!M.ok)throw new Error(S.error||"Unable to read file");let R=null;if(!S.binary)try{const w=await Ze(et(`/api/files/git-original?path=${encodeURIComponent(t.filePath)}`),{signal:E.signal}),j=await w.json();w.ok&&!j.binary&&typeof j.content=="string"&&(R=j.content)}catch{}E.signal.aborted||r({filename:S.filename||t.filePath.split("/").pop()||t.filePath,content:typeof S.content=="string"?S.content:"",originalContent:R,binary:S.binary===!0})}catch(M){E.signal.aborted||u(M instanceof Error?M.message:"Unable to load file")}finally{E.signal.aborted||a(!1)}})(),()=>E.abort()},[t.filePath]),h.useEffect(()=>{const E=A=>{A.key==="Escape"&&(A.preventDefault(),A.stopImmediatePropagation(),e())};return document.addEventListener("keydown",E,!0),()=>document.removeEventListener("keydown",E,!0)},[e]);const f=()=>{U.revealFileInExplorer(t.filePath,t.projectRoot,t.targetLine),e()},l=(n==null?void 0:n.filename)||t.filePath,g=l.lastIndexOf(".")>=0?l.slice(l.lastIndexOf(".")):"",x=Is(g),y=(n==null?void 0:n.originalContent)!=null&&n.originalContent!==n.content;return d.jsx("div",{className:"guake-git-diff-modal-overlay",onClick:e,children:d.jsxs("div",{className:"guake-git-diff-modal",onClick:E=>E.stopPropagation(),children:[d.jsxs("div",{className:"guake-git-diff-modal-header",children:[d.jsxs("div",{className:"guake-git-diff-path spotlight-file-detail-path",title:t.filePath,children:[t.filePath,t.targetLine?d.jsxs("span",{className:"spotlight-file-detail-line",children:[":",t.targetLine]}):null]}),d.jsxs("button",{type:"button",className:"spotlight-file-detail-explorer",onClick:f,title:"Open in File Explorer",children:[d.jsx(V,{name:"folder-open",size:14}),"Open in File Explorer"]}),d.jsx("button",{className:"guake-git-close",onClick:e,title:"Close (Esc)",children:d.jsx(V,{name:"close",size:14})})]}),d.jsxs("div",{className:"guake-git-diff-content",children:[o&&d.jsx("div",{className:"guake-git-diff-loading-overlay",children:d.jsx("div",{className:"diff-image-spinner"})}),c&&d.jsx("div",{className:"spotlight-file-detail-message",children:c}),(n==null?void 0:n.binary)&&d.jsx("div",{className:"spotlight-file-detail-message",children:"Binary preview is available in the File Explorer."}),n&&!n.binary&&(y?d.jsx(jt,{originalContent:n.originalContent||"",modifiedContent:n.content,filename:n.filename,filePath:t.filePath,language:x,searchQuery:t.searchQuery,targetLine:t.targetLine}):d.jsx(jt,{originalContent:"",modifiedContent:n.content,filename:n.filename,filePath:t.filePath,language:x,initialModifiedOnly:!0,searchQuery:t.searchQuery,targetLine:t.targetLine,readOnly:!0}))]})]})})}const Rn=768;function Bn({isOpen:t,onClose:e,onOpenSpawnModal:n,onOpenCommanderView:r,onOpenToolbox:o,onOpenFileExplorer:a,onOpenPM2LogsModal:c,onOpenBossLogsModal:u,onOpenDatabasePanel:f,onOpenMonitoringModal:l,onOpenSessionFinder:g}){const x=h.useRef(null),y=h.useRef(null),E=h.useRef(null),A=h.useRef(0),[M,S]=h.useState(null),{query:R,setQuery:w,selectedIndex:j,setSelectedIndex:K,results:le,loadingTypes:he,activeTab:B,setActiveTab:Y,cycleTab:G,areaSections:ie,handleKeyDown:re,highlightMatch:J}=bn({isOpen:t,onClose:e,onOpenSpawnModal:n,onOpenCommanderView:r,onOpenToolbox:o,onOpenFileExplorer:a,onOpenPM2LogsModal:c,onOpenBossLogsModal:u,onOpenDatabasePanel:f,onOpenMonitoringModal:l,onOpenSessionFinder:g,onOpenFileDetail:S});A.current=le.length;const F=h.useRef(G);F.current=G,h.useEffect(()=>{t&&setTimeout(()=>{var N,v;(N=x.current)==null||N.focus(),(v=x.current)==null||v.select()},50)},[t]),h.useEffect(()=>{if(!t)return;const N=window.visualViewport;if(!N||window.innerWidth>Rn)return;const v=()=>{const ee=y.current;ee&&(ee.style.height=`${N.height}px`,ee.style.top=`${N.offsetTop}px`)};return v(),N.addEventListener("resize",v),N.addEventListener("scroll",v),()=>{N.removeEventListener("resize",v),N.removeEventListener("scroll",v);const ee=y.current;ee&&(ee.style.height="",ee.style.top="")}},[t]),h.useEffect(()=>{if(!t)return;const N=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),v.stopImmediatePropagation(),e();return}if(v.key==="Tab"){v.preventDefault(),v.stopPropagation(),v.stopImmediatePropagation(),F.current(v.shiftKey?-1:1);return}if(v.altKey&&!v.ctrlKey&&!v.metaKey&&(v.key==="n"||v.key==="p"||v.key==="N"||v.key==="P")){v.preventDefault(),v.stopPropagation(),v.stopImmediatePropagation();const ee=v.key.toLowerCase(),Ae=A.current;K(ee==="p"?te=>te>0?te-1:Ae-1:te=>te<Ae-1?te+1:0);return}};return window.addEventListener("keydown",N,{capture:!0}),()=>{window.removeEventListener("keydown",N,{capture:!0})}},[t,e]);const O=h.useCallback(N=>{N.target===N.currentTarget&&e()},[e]),W=h.useCallback(()=>{K(0)},[K]);return t?d.jsx("div",{ref:y,className:"spotlight-overlay",onClick:O,children:d.jsxs("div",{className:"spotlight-modal",children:[d.jsx(Ln,{ref:x,query:R,onQueryChange:w,onKeyDown:re,onResetSelection:W}),d.jsx(Tn,{activeTab:B,onSelect:Y}),d.jsx(Fn,{ref:E,results:le,loadingTypes:he,selectedIndex:j,query:R,activeTab:B,areaSections:ie,highlightMatch:J,onSelectIndex:K}),d.jsx(Nn,{})]})}):M?d.jsx(Dn,{detail:M,onClose:()=>S(null)}):null}export{zn as FILE_ICON_NAMES,Bn as Spotlight,Nn as SpotlightFooter,Ln as SpotlightInput,Rt as SpotlightItem,Fn as SpotlightResults,Kn as formatDuration,On as formatRelativeTime,Un as getAgentIcon,Dt as getFileIconFromPath,Gn as getTypeLabel,bn as useSpotlightSearch};
1
+ import{c as Ze,d as et,E as cs,a1 as us,f as ls,bs as hs,c1 as fs,ab as ds,r as h,z as gs,S as _e,c2 as We,c3 as ms,c4 as ps,c5 as ys,at as As,c6 as ye,s as G,c7 as Es,j as d,I as V,W as Tt,c8 as Ft,t as Dt,c9 as xs,ca as Nt,cb as Ye,V as qe,m as Ms,as as Ut,u as Oe,cc as Rt,aD as Cs,cd as jt,ce as Is}from"./main-33HX-Nre.js";import{cf as zn,cg as Kn,ch as On,ci as Gn,cj as Un}from"./main-33HX-Nre.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DYBBrXTx.js";function ce(t){return Array.isArray?Array.isArray(t):Yt(t)==="[object Array]"}function _s(t){if(typeof t=="string")return t;let e=t+"";return e=="0"&&1/t==-1/0?"-0":e}function Ss(t){return t==null?"":_s(t)}function oe(t){return typeof t=="string"}function Ht(t){return typeof t=="number"}function vs(t){return t===!0||t===!1||ws(t)&&Yt(t)=="[object Boolean]"}function Wt(t){return typeof t=="object"}function ws(t){return Wt(t)&&t!==null}function X(t){return t!=null}function Ve(t){return!t.trim().length}function Yt(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const bs="Incorrect 'index' type",Ls=t=>`Invalid value for key ${t}`,Ts=t=>`Pattern length exceeds max of ${t}.`,Fs=t=>`Missing ${t} property in key`,Ds=t=>`Property 'weight' in key '${t}' must be a positive integer`,kt=Object.prototype.hasOwnProperty;class Ns{constructor(e){this._keys=[],this._keyMap={};let n=0;e.forEach(r=>{let o=qt(r);this._keys.push(o),this._keyMap[o.id]=o,n+=o.weight}),this._keys.forEach(r=>{r.weight/=n})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function qt(t){let e=null,n=null,r=null,o=1,a=null;if(oe(t)||ce(t))r=t,e=$t(t),n=tt(t);else{if(!kt.call(t,"name"))throw new Error(Fs("name"));const c=t.name;if(r=c,kt.call(t,"weight")&&(o=t.weight,o<=0))throw new Error(Ds(c));e=$t(c),n=tt(c),a=t.getFn}return{path:e,id:n,weight:o,src:r,getFn:a}}function $t(t){return ce(t)?t:t.split(".")}function tt(t){return ce(t)?t.join("."):t}function Rs(t,e){let n=[],r=!1;const o=(a,c,u)=>{if(X(a))if(!c[u])n.push(a);else{let f=c[u];const l=a[f];if(!X(l))return;if(u===c.length-1&&(oe(l)||Ht(l)||vs(l)))n.push(Ss(l));else if(ce(l)){r=!0;for(let g=0,E=l.length;g<E;g+=1)o(l[g],c,u+1)}else c.length&&o(l,c,u+1)}};return o(t,oe(e)?e.split("."):e,0),r?n:n[0]}const js={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},ks={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(t,e)=>t.score===e.score?t.idx<e.idx?-1:1:t.score<e.score?-1:1},$s={location:0,threshold:.6,distance:100},Bs={useExtendedSearch:!1,getFn:Rs,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};var C={...ks,...js,...$s,...Bs};const Ps=/[^ ]+/g;function Qs(t=1,e=3){const n=new Map,r=Math.pow(10,e);return{get(o){const a=o.match(Ps).length;if(n.has(a))return n.get(a);const c=1/Math.pow(a,.5*t),u=parseFloat(Math.round(c*r)/r);return n.set(a,u),u},clear(){n.clear()}}}class at{constructor({getFn:e=C.getFn,fieldNormWeight:n=C.fieldNormWeight}={}){this.norm=Qs(n,3),this.getFn=e,this.isCreated=!1,this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((n,r)=>{this._keysMap[n.id]=r})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,oe(this.docs[0])?this.docs.forEach((e,n)=>{this._addString(e,n)}):this.docs.forEach((e,n)=>{this._addObject(e,n)}),this.norm.clear())}add(e){const n=this.size();oe(e)?this._addString(e,n):this._addObject(e,n)}removeAt(e){this.records.splice(e,1);for(let n=e,r=this.size();n<r;n+=1)this.records[n].i-=1}getValueForItemAtKeyId(e,n){return e[this._keysMap[n]]}size(){return this.records.length}_addString(e,n){if(!X(e)||Ve(e))return;let r={v:e,i:n,n:this.norm.get(e)};this.records.push(r)}_addObject(e,n){let r={i:n,$:{}};this.keys.forEach((o,a)=>{let c=o.getFn?o.getFn(e):this.getFn(e,o.path);if(X(c)){if(ce(c)){let u=[];const f=[{nestedArrIndex:-1,value:c}];for(;f.length;){const{nestedArrIndex:l,value:g}=f.pop();if(X(g))if(oe(g)&&!Ve(g)){let E={v:g,i:l,n:this.norm.get(g)};u.push(E)}else ce(g)&&g.forEach((E,y)=>{f.push({nestedArrIndex:y,value:E})})}r.$[a]=u}else if(oe(c)&&!Ve(c)){let u={v:c,n:this.norm.get(c)};r.$[a]=u}}}),this.records.push(r)}toJSON(){return{keys:this.keys,records:this.records}}}function Vt(t,e,{getFn:n=C.getFn,fieldNormWeight:r=C.fieldNormWeight}={}){const o=new at({getFn:n,fieldNormWeight:r});return o.setKeys(t.map(qt)),o.setSources(e),o.create(),o}function zs(t,{getFn:e=C.getFn,fieldNormWeight:n=C.fieldNormWeight}={}){const{keys:r,records:o}=t,a=new at({getFn:e,fieldNormWeight:n});return a.setKeys(r),a.setIndexRecords(o),a}function Pe(t,{errors:e=0,currentLocation:n=0,expectedLocation:r=0,distance:o=C.distance,ignoreLocation:a=C.ignoreLocation}={}){const c=e/t.length;if(a)return c;const u=Math.abs(r-n);return o?c+u/o:u?1:c}function Ks(t=[],e=C.minMatchCharLength){let n=[],r=-1,o=-1,a=0;for(let c=t.length;a<c;a+=1){let u=t[a];u&&r===-1?r=a:!u&&r!==-1&&(o=a-1,o-r+1>=e&&n.push([r,o]),r=-1)}return t[a-1]&&a-r>=e&&n.push([r,a-1]),n}const me=32;function Os(t,e,n,{location:r=C.location,distance:o=C.distance,threshold:a=C.threshold,findAllMatches:c=C.findAllMatches,minMatchCharLength:u=C.minMatchCharLength,includeMatches:f=C.includeMatches,ignoreLocation:l=C.ignoreLocation}={}){if(e.length>me)throw new Error(Ts(me));const g=e.length,E=t.length,y=Math.max(0,Math.min(r,E));let x=a,A=y;const M=u>1||f,S=M?Array(E):[];let R;for(;(R=t.indexOf(e,A))>-1;){let B=Pe(e,{currentLocation:R,expectedLocation:y,distance:o,ignoreLocation:l});if(x=Math.min(B,x),A=R+g,M){let W=0;for(;W<g;)S[R+W]=1,W+=1}}A=-1;let w=[],j=1,K=g+E;const le=1<<g-1;for(let B=0;B<g;B+=1){let W=0,U=K;for(;W<U;)Pe(e,{errors:B,currentLocation:y+U,expectedLocation:y,distance:o,ignoreLocation:l})<=x?W=U:K=U,U=Math.floor((K-W)/2+W);K=U;let ie=Math.max(1,y-U+1),re=c?E:Math.min(y+U,E)+g,J=Array(re+2);J[re+1]=(1<<B)-1;for(let O=re;O>=ie;O-=1){let Y=O-1,D=n[t.charAt(Y)];if(M&&(S[Y]=+!!D),J[O]=(J[O+1]<<1|1)&D,B&&(J[O]|=(w[O+1]|w[O])<<1|1|w[O+1]),J[O]&le&&(j=Pe(e,{errors:B,currentLocation:Y,expectedLocation:y,distance:o,ignoreLocation:l}),j<=x)){if(x=j,A=Y,A<=y)break;ie=Math.max(1,2*y-A)}}if(Pe(e,{errors:B+1,currentLocation:y,expectedLocation:y,distance:o,ignoreLocation:l})>x)break;w=J}const he={isMatch:A>=0,score:Math.max(.001,j)};if(M){const B=Ks(S,u);B.length?f&&(he.indices=B):he.isMatch=!1}return he}function Gs(t){let e={};for(let n=0,r=t.length;n<r;n+=1){const o=t.charAt(n);e[o]=(e[o]||0)|1<<r-n-1}return e}const ze=String.prototype.normalize?(t=>t.normalize("NFD").replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/g,"")):(t=>t);class Xt{constructor(e,{location:n=C.location,threshold:r=C.threshold,distance:o=C.distance,includeMatches:a=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:u=C.minMatchCharLength,isCaseSensitive:f=C.isCaseSensitive,ignoreDiacritics:l=C.ignoreDiacritics,ignoreLocation:g=C.ignoreLocation}={}){if(this.options={location:n,threshold:r,distance:o,includeMatches:a,findAllMatches:c,minMatchCharLength:u,isCaseSensitive:f,ignoreDiacritics:l,ignoreLocation:g},e=f?e:e.toLowerCase(),e=l?ze(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const E=(x,A)=>{this.chunks.push({pattern:x,alphabet:Gs(x),startIndex:A})},y=this.pattern.length;if(y>me){let x=0;const A=y%me,M=y-A;for(;x<M;)E(this.pattern.substr(x,me),x),x+=me;if(A){const S=y-me;E(this.pattern.substr(S),S)}}else E(this.pattern,0)}searchIn(e){const{isCaseSensitive:n,ignoreDiacritics:r,includeMatches:o}=this.options;if(e=n?e:e.toLowerCase(),e=r?ze(e):e,this.pattern===e){let M={isMatch:!0,score:0};return o&&(M.indices=[[0,e.length-1]]),M}const{location:a,distance:c,threshold:u,findAllMatches:f,minMatchCharLength:l,ignoreLocation:g}=this.options;let E=[],y=0,x=!1;this.chunks.forEach(({pattern:M,alphabet:S,startIndex:R})=>{const{isMatch:w,score:j,indices:K}=Os(e,M,S,{location:a+R,distance:c,threshold:u,findAllMatches:f,minMatchCharLength:l,includeMatches:o,ignoreLocation:g});w&&(x=!0),y+=j,w&&K&&(E=[...E,...K])});let A={isMatch:x,score:x?y/this.chunks.length:1};return x&&o&&(A.indices=E),A}}class ue{constructor(e){this.pattern=e}static isMultiMatch(e){return Bt(e,this.multiRegex)}static isSingleMatch(e){return Bt(e,this.singleRegex)}search(){}}function Bt(t,e){const n=t.match(e);return n?n[1]:null}class Us extends ue{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const n=e===this.pattern;return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}}class Hs extends ue{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const r=e.indexOf(this.pattern)===-1;return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class Ws extends ue{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const n=e.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,this.pattern.length-1]}}}class Ys extends ue{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const n=!e.startsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class qs extends ue{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const n=e.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class Vs extends ue{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const n=!e.endsWith(this.pattern);return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class Jt extends ue{constructor(e,{location:n=C.location,threshold:r=C.threshold,distance:o=C.distance,includeMatches:a=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:u=C.minMatchCharLength,isCaseSensitive:f=C.isCaseSensitive,ignoreDiacritics:l=C.ignoreDiacritics,ignoreLocation:g=C.ignoreLocation}={}){super(e),this._bitapSearch=new Xt(e,{location:n,threshold:r,distance:o,includeMatches:a,findAllMatches:c,minMatchCharLength:u,isCaseSensitive:f,ignoreDiacritics:l,ignoreLocation:g})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class Zt extends ue{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let n=0,r;const o=[],a=this.pattern.length;for(;(r=e.indexOf(this.pattern,n))>-1;)n=r+a,o.push([r,n-1]);const c=!!o.length;return{isMatch:c,score:c?0:1,indices:o}}}const st=[Us,Zt,Ws,Ys,Vs,qs,Hs,Jt],Pt=st.length,Xs=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Js="|";function Zs(t,e={}){return t.split(Js).map(n=>{let r=n.trim().split(Xs).filter(a=>a&&!!a.trim()),o=[];for(let a=0,c=r.length;a<c;a+=1){const u=r[a];let f=!1,l=-1;for(;!f&&++l<Pt;){const g=st[l];let E=g.isMultiMatch(u);E&&(o.push(new g(E,e)),f=!0)}if(!f)for(l=-1;++l<Pt;){const g=st[l];let E=g.isSingleMatch(u);if(E){o.push(new g(E,e));break}}}return o})}const en=new Set([Jt.type,Zt.type]);class tn{constructor(e,{isCaseSensitive:n=C.isCaseSensitive,ignoreDiacritics:r=C.ignoreDiacritics,includeMatches:o=C.includeMatches,minMatchCharLength:a=C.minMatchCharLength,ignoreLocation:c=C.ignoreLocation,findAllMatches:u=C.findAllMatches,location:f=C.location,threshold:l=C.threshold,distance:g=C.distance}={}){this.query=null,this.options={isCaseSensitive:n,ignoreDiacritics:r,includeMatches:o,minMatchCharLength:a,findAllMatches:u,ignoreLocation:c,location:f,threshold:l,distance:g},e=n?e:e.toLowerCase(),e=r?ze(e):e,this.pattern=e,this.query=Zs(this.pattern,this.options)}static condition(e,n){return n.useExtendedSearch}searchIn(e){const n=this.query;if(!n)return{isMatch:!1,score:1};const{includeMatches:r,isCaseSensitive:o,ignoreDiacritics:a}=this.options;e=o?e:e.toLowerCase(),e=a?ze(e):e;let c=0,u=[],f=0;for(let l=0,g=n.length;l<g;l+=1){const E=n[l];u.length=0,c=0;for(let y=0,x=E.length;y<x;y+=1){const A=E[y],{isMatch:M,indices:S,score:R}=A.search(e);if(M){if(c+=1,f+=R,r){const w=A.constructor.type;en.has(w)?u=[...u,...S]:u.push(S)}}else{f=0,c=0,u.length=0;break}}if(c){let y={isMatch:!0,score:f/c};return r&&(y.indices=u),y}}return{isMatch:!1,score:1}}}const nt=[];function sn(...t){nt.push(...t)}function rt(t,e){for(let n=0,r=nt.length;n<r;n+=1){let o=nt[n];if(o.condition(t,e))return new o(t,e)}return new Xt(t,e)}const Ke={AND:"$and",OR:"$or"},ot={PATH:"$path",PATTERN:"$val"},it=t=>!!(t[Ke.AND]||t[Ke.OR]),nn=t=>!!t[ot.PATH],rn=t=>!ce(t)&&Wt(t)&&!it(t),Qt=t=>({[Ke.AND]:Object.keys(t).map(e=>({[e]:t[e]}))});function es(t,e,{auto:n=!0}={}){const r=o=>{let a=Object.keys(o);const c=nn(o);if(!c&&a.length>1&&!it(o))return r(Qt(o));if(rn(o)){const f=c?o[ot.PATH]:a[0],l=c?o[ot.PATTERN]:o[f];if(!oe(l))throw new Error(Ls(f));const g={keyId:tt(f),pattern:l};return n&&(g.searcher=rt(l,e)),g}let u={children:[],operator:a[0]};return a.forEach(f=>{const l=o[f];ce(l)&&l.forEach(g=>{u.children.push(r(g))})}),u};return it(t)||(t=Qt(t)),r(t)}function on(t,{ignoreFieldNorm:e=C.ignoreFieldNorm}){t.forEach(n=>{let r=1;n.matches.forEach(({key:o,norm:a,score:c})=>{const u=o?o.weight:null;r*=Math.pow(c===0&&u?Number.EPSILON:c,(u||1)*(e?1:a))}),n.score=r})}function an(t,e){const n=t.matches;e.matches=[],X(n)&&n.forEach(r=>{if(!X(r.indices)||!r.indices.length)return;const{indices:o,value:a}=r;let c={indices:o,value:a};r.key&&(c.key=r.key.src),r.idx>-1&&(c.refIndex=r.idx),e.matches.push(c)})}function cn(t,e){e.score=t.score}function un(t,e,{includeMatches:n=C.includeMatches,includeScore:r=C.includeScore}={}){const o=[];return n&&o.push(an),r&&o.push(cn),t.map(a=>{const{idx:c}=a,u={item:e[c],refIndex:c};return o.length&&o.forEach(f=>{f(a,u)}),u})}class ae{constructor(e,n={},r){this.options={...C,...n},this.options.useExtendedSearch,this._keyStore=new Ns(this.options.keys),this.setCollection(e,r)}setCollection(e,n){if(this._docs=e,n&&!(n instanceof at))throw new Error(bs);this._myIndex=n||Vt(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){X(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const n=[];for(let r=0,o=this._docs.length;r<o;r+=1){const a=this._docs[r];e(a,r)&&(this.removeAt(r),r-=1,o-=1,n.push(a))}return n}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:n=-1}={}){const{includeMatches:r,includeScore:o,shouldSort:a,sortFn:c,ignoreFieldNorm:u}=this.options;let f=oe(e)?oe(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return on(f,{ignoreFieldNorm:u}),a&&f.sort(c),Ht(n)&&n>-1&&(f=f.slice(0,n)),un(f,this._docs,{includeMatches:r,includeScore:o})}_searchStringList(e){const n=rt(e,this.options),{records:r}=this._myIndex,o=[];return r.forEach(({v:a,i:c,n:u})=>{if(!X(a))return;const{isMatch:f,score:l,indices:g}=n.searchIn(a);f&&o.push({item:a,idx:c,matches:[{score:l,value:a,norm:u,indices:g}]})}),o}_searchLogical(e){const n=es(e,this.options),r=(u,f,l)=>{if(!u.children){const{keyId:E,searcher:y}=u,x=this._findMatches({key:this._keyStore.get(E),value:this._myIndex.getValueForItemAtKeyId(f,E),searcher:y});return x&&x.length?[{idx:l,item:f,matches:x}]:[]}const g=[];for(let E=0,y=u.children.length;E<y;E+=1){const x=u.children[E],A=r(x,f,l);if(A.length)g.push(...A);else if(u.operator===Ke.AND)return[]}return g},o=this._myIndex.records,a={},c=[];return o.forEach(({$:u,i:f})=>{if(X(u)){let l=r(n,u,f);l.length&&(a[f]||(a[f]={idx:f,item:u,matches:[]},c.push(a[f])),l.forEach(({matches:g})=>{a[f].matches.push(...g)}))}}),c}_searchObjectList(e){const n=rt(e,this.options),{keys:r,records:o}=this._myIndex,a=[];return o.forEach(({$:c,i:u})=>{if(!X(c))return;let f=[];r.forEach((l,g)=>{f.push(...this._findMatches({key:l,value:c[g],searcher:n}))}),f.length&&a.push({idx:u,item:c,matches:f})}),a}_findMatches({key:e,value:n,searcher:r}){if(!X(n))return[];let o=[];if(ce(n))n.forEach(({v:a,i:c,n:u})=>{if(!X(a))return;const{isMatch:f,score:l,indices:g}=r.searchIn(a);f&&o.push({score:l,key:e,value:a,idx:c,norm:u,indices:g})});else{const{v:a,n:c}=n,{isMatch:u,score:f,indices:l}=r.searchIn(a);u&&o.push({score:f,key:e,value:a,norm:c,indices:l})}return o}}ae.version="7.1.0";ae.createIndex=Vt;ae.parseIndex=zs;ae.config=C;ae.parseQuery=es;sn(tn);function Ie(t){return t.trim().toLowerCase().split(/\s+/).filter(Boolean)}function ln(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Qe(t,e){const n=e.trim(),r=Ie(n);if(r.length<=1)return t.search(n);const[o,...a]=r.map(f=>t.search(f)),c=a.map(f=>{const l=new Map;for(const g of f)l.set(g.refIndex,g.score??1);return l}),u=[];for(const f of o){let l=f.score??1,g=!0;for(const E of c){const y=E.get(f.refIndex);if(y===void 0){g=!1;break}l+=y}g&&u.push({item:f.item,score:l/r.length})}return u.sort((f,l)=>(f.score??1)-(l.score??1)),u}function zt(t,e,n){return e===t?6:e.startsWith(t)?5:e.split(/[^a-z0-9]+/i).includes(t)?4:e.includes(t)?3:n.includes(t)?2:1}function hn(t,e,n){const r=Ie(t);if(r.length===0)return 1;const o=e.toLowerCase(),a=n.toLowerCase(),c=zt(r.join(" "),o,a);if(r.length===1)return c;let u=6;for(const f of r)u=Math.min(u,zt(f,o,a));return Math.max(c,u)}const fn=4;function Kt(t){return t.replace(/…|\.\.\./g," ").replace(/\s+/g," ").trim().toLowerCase()}const dn=24;function gn(t,e){const n=Kt(t),r=Kt(e);return n===r?!0:Math.min(n.length,r.length)<dn?!1:n.includes(r)||r.includes(n)}function mn(t,e){const n=[],r=o=>{!o||!o.text.trim()||n.length>=fn||n.some(a=>gn(a.text,o.text))||n.push(o)};t&&r({text:t,kind:"user"});for(const o of e??[])r(o);return n.length>0?n:void 0}async function pn(t){const e=new URLSearchParams({q:t}),n=await Ze(et(`/api/folders/search?${e.toString()}`));if(!n.ok){const o=await n.json().catch(()=>({}));throw new Error(o.error||`Failed to search folders: ${n.statusText}`)}const r=await n.json();return Array.isArray(r.folders)?r.folders:[]}const Ot=["agent","session","building","file","file-content","folder","area"],yn=2,An=2,En=50,xn=10,Mn=3,Cn=30,In=8,_n=3,Sn=15,Xe=5,Je=5;function vn(){const t=Ut(_e.SPOTLIGHT_TAB,"all");return ye.includes(t)?t:"all"}function Gt(){return Ms(_e.SPOTLIGHT_QUERY,"")}function wn(){const t=Ut(_e.AOP_CONFIG,{});return t.sortMode==="name"||t.sortMode==="status"||t.sortMode==="recent"?t.sortMode:"recent"}function bn({isOpen:t,onClose:e,onOpenSpawnModal:n,onOpenCommanderView:r,onOpenToolbox:o,onOpenFileExplorer:a,onOpenPM2LogsModal:c,onOpenBossLogsModal:u,onOpenDatabasePanel:f,onOpenMonitoringModal:l,onOpenSessionFinder:g,onOpenFileDetail:E}){const y=cs(),x=us(),A=ls(),M=hs(),S=fs(),R=ds(),w=h.useRef(e);w.current=e;const j=h.useRef(n);j.current=n;const K=h.useRef(r);K.current=r;const le=h.useRef(o);le.current=o;const he=h.useRef(a);he.current=a;const B=h.useRef(c);B.current=c;const W=h.useRef(u);W.current=u;const U=h.useRef(f);U.current=f;const ie=h.useRef(l);ie.current=l;const re=h.useRef(g);re.current=g;const J=h.useRef(E);J.current=E;const[F,O]=h.useState(Gt),[Y,D]=h.useState(0),[v,ee]=h.useState(vn),[Ae,te]=h.useState([]),[ct,Ee]=h.useState([]),[ut,xe]=h.useState([]),[lt,Se]=h.useState(!1),[ht,ve]=h.useState(!1),[ft,we]=h.useState(!1),[dt,be]=h.useState(!1),[Le,Me]=h.useState({query:"",rows:[]}),[gt,mt]=h.useState(!1),[pt,yt]=h.useState(!1);h.useEffect(()=>{mt(!1),yt(!1)},[F,t]);const ts=h.useCallback(s=>{O(s),gs(_e.SPOTLIGHT_QUERY,s)},[]);h.useEffect(()=>{t&&(O(Gt()),D(0))},[t]),h.useEffect(()=>{if(!t){te([]),Se(!1);return}const s=F.trim();if(s.length<yn){te([]),Se(!1);return}te([]),Se(!0);let i=!1;const m=setTimeout(()=>{pn(s).then(I=>{i||te(I)}).catch(()=>{i||te([])}).finally(()=>{i||Se(!1)})},250);return()=>{i=!0,clearTimeout(m)}},[t,F]);const At=(M.fileSearchExcludeDirs??We).join(",");h.useEffect(()=>{if(!t){Ee([]),ve(!1);return}const s=F.trim();if(s.length<An){Ee([]),ve(!1);return}Ee([]),ve(!0);let i=!1;const m=setTimeout(()=>{ms(s,{exclude:M.fileSearchExcludeDirs??[...We],limit:En}).then(I=>{i||Ee(I)}).catch(()=>{i||Ee([])}).finally(()=>{i||ve(!1)})},250);return()=>{i=!0,clearTimeout(m)}},[t,F,At,M.fileSearchExcludeDirs]),h.useEffect(()=>{if(!t){xe([]),we(!1);return}const s=F.trim();if(s.length<Mn){xe([]),we(!1);return}xe([]),we(!0);const i=new AbortController,m=setTimeout(()=>{ps(s,{exclude:M.fileSearchExcludeDirs??[...We],limit:Cn,signal:i.signal}).then(I=>{i.signal.aborted||xe(I)}).catch(()=>{i.signal.aborted||xe([])}).finally(()=>{i.signal.aborted||we(!1)})},300);return()=>{clearTimeout(m),i.abort()}},[t,F,At,M.fileSearchExcludeDirs]),h.useEffect(()=>{if(!t){Me({query:"",rows:[]}),be(!1);return}const s=F.trim();if(s.length<_n){Me({query:"",rows:[]}),be(!1);return}Me({query:"",rows:[]}),be(!0);let i=!1;const m=setTimeout(()=>{ys(s,{limit:Sn}).then(I=>{i||Me({query:s,rows:I})}).catch(()=>{i||Me({query:"",rows:[]})}).finally(()=>{i||be(!1)})},250);return()=>{i=!0,clearTimeout(m)}},[t,F]);const Ge=h.useCallback(s=>{ee(s),As(_e.SPOTLIGHT_TAB,s)},[]),Et=h.useRef(v);Et.current=v;const ss=h.useCallback(s=>{const i=ye.indexOf(Et.current),m=ye[(i+s+ye.length)%ye.length];Ge(m)},[Ge]);h.useEffect(()=>{D(0)},[v]);const Ue=G.getShortcuts(),Te=h.useMemo(()=>t?Es():{},[t]),Fe=h.useMemo(()=>{if(!t)return[];const s=window.matchMedia("(pointer: coarse)").matches,i=Ue.find(I=>I.id==="spawn-agent"),m=Ue.find(I=>I.id==="toggle-commander");return[{id:"cmd-spawn",type:"command",title:"Spawn New Agent",subtitle:s?"":i?Tt(i):"Alt+N",icon:d.jsx(V,{name:"plus",size:16}),action:()=>{w.current(),j.current()}},{id:"cmd-commander",type:"command",title:"Commander View",subtitle:s?"":m!=null&&m.key?Tt(m):"Tab",icon:d.jsx(V,{name:"dashboard",size:16}),action:()=>{w.current(),K.current()}},{id:"cmd-settings",type:"command",title:"Settings & Tools",subtitle:"Configure Tide Commander",icon:d.jsx(V,{name:"gear",size:16}),action:()=>{w.current(),le.current()}},{id:"cmd-monitoring",type:"command",title:"Monitoring & Logs",subtitle:"Triggers, workflows, events",icon:d.jsx(V,{name:"chart-line",size:16}),action:()=>{var I;w.current(),(I=ie.current)==null||I.call(ie)}}]},[t,Ue]),De=h.useMemo(()=>{const s=new Map;if(!t)return s;const i=Array.from(x.values());for(const m of y.values())for(const I of i)if(G.isPositionInArea({x:m.position.x,z:m.position.z},I)){s.set(m.id,I);break}return s},[t,y,x]),pe=h.useMemo(()=>t?Array.from(y.values()).map(s=>{const i=[];s.lastAssignedTask&&i.push(s.lastAssignedTask);const m=`${s.class} • ${s.cwd}`,I=De.get(s.id),k=(I==null?void 0:I.name)||"";let b=`${s.name} ${s.class} ${s.status} ${s.cwd}`;s.taskLabel&&(b+=` ${s.taskLabel}`),k&&(b+=` ${k}`),i.length>0&&(b+=` ${i.join(" ")}`);const $=Date.now()-s.lastActivity;let N;return s.lastAssignedTask&&(s.lastAssignedTask.length>150?N=s.lastAssignedTask.slice(0,150)+"...":N=s.lastAssignedTask),{id:`agent-${s.id}`,type:"agent",title:s.name,subtitle:m,lastUserInput:N,timeAway:$,icon:d.jsx(Dt,{agent:s,size:20}),_searchText:b,_userQueries:i,_agentId:s.id,_lastActivity:s.lastActivity,_taskLabel:s.taskLabel,_status:s.status,_provider:s.provider??"claude",_piModel:s.piModel,_piModelProvider:s.piModelProvider,_areaName:k||void 0,_areaColor:I==null?void 0:I.color,action:()=>{w.current(),Ft(s.id),G.selectAgent(s.id),G.getState().viewMode!=="flat"&&G.requestTerminalExpand()}}}):[],[t,y,De]),Ne=h.useMemo(()=>t?Array.from(x.values()).map(s=>{var i;return{id:`area-${s.id}`,type:"area",title:s.name,subtitle:`${s.assignedAgentIds.length} agents • ${((i=s.directories)==null?void 0:i.length)||0} folders`,icon:d.jsx(V,{name:"map",size:16}),action:()=>{w.current(),G.selectArea(s.id)}}}):[],[t,x]),Re=h.useMemo(()=>{const s=new Map;for(const i of pe)i._agentId&&s.set(i._agentId,i);return s},[pe]),xt=h.useMemo(()=>{const s=new Map;if(!t)return s;for(const i of y.values()){const m=De.get(i.id);if(!m||m.archived)continue;const I=s.get(m.id);I?I.push(i):s.set(m.id,[i])}return s},[t,y,De]),Mt=h.useMemo(()=>{const s=new Map;for(const i of S)s.has(i.agentId)||s.set(i.agentId,i.timestamp);return s},[S]),He=h.useMemo(()=>{if(!t)return[];const s=F.trim().toLowerCase(),i=Ie(s),m=xs({sortMode:wn(),agentsWithUnseenOutput:R,getLatestToolTimestamp:b=>Mt.get(b)}),I=Array.from(x.values()).filter(b=>!b.archived).filter(b=>{if(i.length===0)return!0;const $=b.name.toLowerCase();return i.some(N=>$.includes(N))}).sort((b,$)=>b.name.localeCompare($.name,void 0,{sensitivity:"base"})),k=[];for(const b of I){const $=b.name.toLowerCase(),N=i.filter(P=>!$.includes(P));let H=(xt.get(b.id)||[]).slice().sort(m).map(P=>Re.get(P.id)).filter(P=>!!P);N.length>0&&(H=H.filter(P=>{const Z=`${P.title} ${P.subtitle||""} ${P._searchText||""}`.toLowerCase();return N.every(Q=>Z.includes(Q))}),H.length===0)||!s&&H.length===0||k.push({areaId:b.id,areaName:b.name,areaColor:b.color,agents:H})}return k},[t,F,x,xt,Re,R,Mt]),je=h.useMemo(()=>t?Array.from(A.values()).filter(s=>s.type==="server"||s.type==="boss"||s.type==="database"||s.type==="tests").map(s=>{var N,q,H,P,Z;const i=s.status==="running"?"#4ade80":s.status==="stopped"?"#f87171":"#facc15",m=s.type==="boss"?"crown":s.type==="database"?"database":s.type==="tests"?"flask":"desktop",I=s.type==="boss"?"Boss":s.type==="database"?"Database":s.type==="tests"?"Tests":"Server";let k=`${I} • ${s.status}`;if(s.type==="database"&&((q=(N=s.database)==null?void 0:N.connections)!=null&&q.length)){const Q=s.database.connections[0];k+=` • ${Q.engine} @ ${Q.host}`}else s.type==="tests"&&s.folderPath?k=`${I} • ${s.folderPath}`:s.cwd&&(k+=` • ${s.cwd}`);const b=((H=s.pm2Status)==null?void 0:H.ports)||[];let $=`${s.name} ${s.type} ${s.status} ${s.cwd||""} ${((P=s.pm2)==null?void 0:P.name)||""}`;if(s.type==="tests"&&($+=` ${s.folderPath||""} tests junit maven`),b.length>0&&($+=` ${b.join(" ")}`),s.type==="database"&&((Z=s.database)!=null&&Z.connections))for(const Q of s.database.connections)$+=` ${Q.name} ${Q.engine} ${Q.host} ${Q.database||""} mysql postgresql sql`;return{id:`building-${s.id}`,type:"building",title:s.name,subtitle:k,_ports:b,icon:d.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[d.jsx(V,{name:"status-pending",size:10,weight:"fill",color:i}),d.jsx(V,{name:m,size:16})]}),_searchText:$,action:()=>{var Q;w.current(),s.type==="boss"?W.current(s.id):s.type==="database"?U.current(s.id):s.type==="tests"?G.openTestsBuilding(s.id):s.type==="http"?G.openHttpBuilding(s.id):(Q=s.pm2)!=null&&Q.enabled&&B.current(s.id)}}}):[],[t,A]),Ct=h.useMemo(()=>t?Ae.map(s=>{const i=s.isGitRepo&&s.gitBranch?`${s.path} • ${s.gitBranch}`:s.path;return{id:`folder-${s.path}`,type:"folder",title:s.name,subtitle:i,matchedText:s.path,icon:d.jsx(V,{name:s.isGitRepo?"git-branch":"folder",size:16}),_searchText:`${s.name} ${s.path}`,_isGitRepo:s.isGitRepo,_gitBranch:s.gitBranch,action:()=>{w.current(),G.openFileExplorer(s.path)}}}):[],[t,Ae]),ke=h.useMemo(()=>t?ct.map(s=>{const i=s.areaName&&s.areaName!==s.projectName?`${s.projectName} · ${s.areaName}`:s.projectName;return{id:`file-${s.path}`,type:"file",title:s.name,subtitle:s.relativePath,matchedText:`${s.path} ${i}`,icon:Nt(s.path),_searchText:`${s.name} ${s.relativePath} ${s.path} ${s.projectName} ${s.areaName}`,_projectName:s.projectName,_areaName:s.areaName,action:()=>{w.current(),J.current({filePath:s.path,projectRoot:s.projectRoot,searchQuery:F.trim()})}}}):[],[t,ct,F]),$e=h.useMemo(()=>t?ut.map(s=>{const i=s.matches[0],m=s.areaName&&s.areaName!==s.projectName?`${s.projectName} · ${s.areaName}`:s.projectName;return{id:`file-content-${s.path}`,type:"file-content",title:s.name,subtitle:`${s.relativePath}${i!=null&&i.line?`:${i.line}`:""}`,matchedQuery:i==null?void 0:i.content,matchedText:`${s.path} ${m}`,icon:Nt(s.path),_projectName:s.projectName,_areaName:s.areaName,_lineNumber:i==null?void 0:i.line,action:()=>{w.current(),J.current({filePath:s.path,projectRoot:s.projectRoot,targetLine:i==null?void 0:i.line,searchQuery:F.trim()})}}}):[],[t,ut,F]),fe=h.useMemo(()=>{if(!t)return[];const s=i=>{const m=Date.now()-new Date(i).getTime();return!Number.isFinite(m)||m<0?"":m<36e5?`${Math.max(1,Math.floor(m/6e4))}m`:m<864e5?`${Math.floor(m/36e5)}h`:`${Math.floor(m/864e5)}d`};return Le.rows.map(i=>{const m=Array.from(y.values()).find(N=>N.sessionId===i.sessionId),I=m??(i.agentId?y.get(i.agentId):void 0),k=(i.firstPrompt||i.snippet||i.sessionId).slice(0,90),b=[i.projectPath||i.projectDir];I&&b.push(`→ ${I.name}${m?"":" (past session)"}`);const $=s(i.lastModified);return $&&b.push($),b.push(`${i.totalMatches}×`),{id:`session-${i.sessionId}`,type:"session",title:k,subtitle:b.join(" • "),matchedQuery:i.snippet||void 0,matchedExtracts:i.extracts&&i.extracts.length>0?i.extracts:void 0,_agentId:I==null?void 0:I.id,_sessionMatches:i.totalMatches,_provider:i.provider||"claude",icon:I?d.jsx(Dt,{agent:I,size:20}):d.jsx(V,{name:"history",size:16}),action:()=>{var q;w.current();const N=Array.from(G.getState().agents.values()).find(H=>H.sessionId===i.sessionId);N?(Ft(N.id),G.selectAgent(N.id),G.getState().viewMode!=="flat"&&G.requestTerminalExpand(),G.requestTerminalSearch(N.id,Le.query)):(q=re.current)==null||q.call(re,{initialQuery:Le.query,initialSessionKey:`${i.projectPath}::${i.sessionId}`})}}})},[t,Le,y]),It=h.useMemo(()=>new ae(pe,{keys:["title","subtitle","_searchText","lastUserInput"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[pe]),_t=h.useMemo(()=>new ae(Fe,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[Fe]),St=h.useMemo(()=>new ae(Ne,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[Ne]),vt=h.useMemo(()=>new ae(je,{keys:["title","subtitle","_searchText"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[je]),Ce=h.useMemo(()=>{if(!F.trim()){const p=[];p.push(...je);const _=[...pe].sort((T,z)=>{const ne=Ye(T._agentId,T._lastActivity,Te);return Ye(z._agentId,z._lastActivity,Te)-ne});p.push(..._),p.push(...Ne.slice(0,2));const L={};return Ot.forEach((T,z)=>{L[T]=z}),p.sort((T,z)=>(L[T.type]??999)-(L[z.type]??999)),p}const s=F.trim().toLowerCase(),i=Ie(s),m=Qe(It,F).slice(0,30),I=Qe(St,F).slice(0,2),k=Ct.slice(0,8),b=ke.slice(0,xn),$=Qe(vt,F).filter(p=>{const _=p.score??1,L=`${p.item.title} ${p.item.subtitle||""} ${p.item._searchText||""}`.toLowerCase();return i.every(T=>L.includes(T))||_<=.2}).slice(0,4),N={agent:6,building:5,folder:4,file:4,"file-content":4,command:3,area:2,"modified-file":1,session:0},q=p=>hn(s,p.title,`${p.subtitle||""} ${p._searchText||""} ${p.matchedText||""}`),H=(p,_)=>{const L=(1-Math.min(1,_??1))*4;return q(p)*100+(N[p.type]??0)*5+L},P=new Map,Z=(p,_)=>{const L=P.get(p.type),T={item:p,score:H(p,_)};L?L.push(T):P.set(p.type,[T])},Q=new Map;for(const p of fe)p._agentId&&!Q.has(p._agentId)&&Q.set(p._agentId,p);for(const p of m){const _={...p.item};if(_._userQueries&&_._userQueries.length>0){const T=_._userQueries.find(z=>i.some(ne=>z.toLowerCase().includes(ne)));if(T){const z=T.toLowerCase(),ne=z.includes(s)?s:i.find(ge=>z.includes(ge))??s;if(T.length>200){const ge=z.indexOf(ne),bt=Math.max(0,ge-60),Lt=Math.min(T.length,ge+ne.length+100);_.matchedQuery=(bt>0?"...":"")+T.slice(bt,Lt)+(Lt<T.length?"...":"")}else _.matchedQuery=T}}const L=_._agentId?Q.get(_._agentId):void 0;if(L){_.matchedQuery||(_.matchedQuery=L.matchedQuery);const T=_.matchedQuery,z=(T==null?void 0:T.toLowerCase())??"";_.matchedExtracts=mn(T&&i.every(ne=>z.includes(ne))?T:void 0,L.matchedExtracts),_.action=L.action,_._sessionMatches=L._sessionMatches,_._searchText=`${_._searchText||""} ${L.matchedQuery||""} ${s}`}Z(_,p.score)}for(const[p,_]of Q){if(m.some(T=>T.item._agentId===p))continue;const L=Re.get(p);L&&Z({...L,matchedQuery:_.matchedQuery,matchedExtracts:_.matchedExtracts,action:_.action,_sessionMatches:_._sessionMatches,_searchText:`${L._searchText||""} ${_.matchedQuery||""} ${s}`},void 0)}for(const p of $)Z(p.item,p.score);for(const p of I)Z(p.item,p.score);for(const p of k)Z(p,void 0);for(const p of b)Z(p,void 0);for(const p of $e.slice(0,In))Z(p,void 0);const is=24*36e5,as=Date.now(),wt=p=>{const _=Ye(p.item._agentId,p.item._lastActivity,Te),L=Math.exp(-Math.LN2*Math.max(0,as-_)/is);return Math.log2(1+(p.item._sessionMatches??0))+4*L};for(const[p,_]of P)p==="agent"?_.sort((L,T)=>{const z=q(L.item),ne=q(T.item);if(ne!==z)return ne-z;const Be=wt(L),ge=wt(T);return ge!==Be?ge-Be:T.score-L.score}):_.sort((L,T)=>T.score-L.score);const de=[];for(const p of Ot){if(p==="session"){!pt&&fe.length>Xe?(de.push(...fe.slice(0,Xe)),de.push({id:"session-show-all",type:"session",title:`Show all conversations (${fe.length})`,subtitle:`${fe.length-Xe} more matches`,icon:d.jsx(V,{name:"arrow-down",size:16}),action:()=>yt(!0)})):de.push(...fe);continue}const _=P.get(p);if(_){if(p==="agent"&&!gt&&_.length>Je){for(const L of _.slice(0,Je))de.push(L.item);de.push({id:"agent-show-all",type:"agent",title:`Show all agents (${_.length})`,subtitle:`${_.length-Je} more matches`,icon:d.jsx(V,{name:"arrow-down",size:16}),action:()=>mt(!0)});continue}for(const L of _)de.push(L.item)}}return de},[F,It,St,vt,pe,Re,Ne,je,Ct,ke,$e,fe,Te,gt,pt]),se=h.useMemo(()=>{switch(v){case"agents":return Ce.filter(s=>s.type==="agent");case"buildings":return Ce.filter(s=>s.type==="building");case"commands":return F.trim()?Qe(_t,F).slice(0,3).map(s=>s.item):Fe;case"folders":return Ce.filter(s=>s.type==="folder");case"files":return ke;case"contents":return $e;case"areas":return He.flatMap(s=>s.agents);case"all":default:return Ce}},[v,Ce,He,ke,$e,F,_t,Fe]),ns=h.useMemo(()=>{const s=[];if(dt&&s.push("session"),ht&&s.push("file"),ft&&s.push("file-content"),lt&&s.push("folder"),v==="all")return s;const m={buildings:"building",folders:"folder",files:"file",contents:"file-content",agents:"agent",commands:"command"}[v];return m&&s.includes(m)?[m]:[]},[v,dt,ht,ft,lt]);h.useEffect(()=>{Y>=se.length&&D(Math.max(0,se.length-1))},[se.length,Y]);const rs=h.useCallback(s=>{if(s.altKey&&!s.ctrlKey&&!s.metaKey&&(s.key==="p"||s.key==="n"||s.key==="P"||s.key==="N")){s.preventDefault(),s.stopPropagation(),s.nativeEvent.stopImmediatePropagation();const i=s.key.toLowerCase();D(i==="p"?m=>m>0?m-1:se.length-1:m=>m<se.length-1?m+1:0);return}switch(s.key){case"Escape":s.preventDefault(),w.current();break;case"ArrowUp":s.preventDefault(),D(i=>i>0?i-1:se.length-1);break;case"ArrowDown":s.preventDefault(),D(i=>i<se.length-1?i+1:0);break;case"Enter":s.preventDefault(),se[Y]&&se[Y].action();break}},[se,Y]),os=h.useCallback((s,i)=>{if(!i||!s)return s;const m=Ie(i);if(m.length===0)return s;const I=new RegExp(m.map(ln).sort((q,H)=>H.length-q.length).join("|"),"gi"),k=[];let b=0,$=0,N;for(;(N=I.exec(s))!==null;)N.index>b&&k.push(s.slice(b,N.index)),k.push(qe.createElement("mark",{key:$++,className:"spotlight-highlight"},N[0])),b=N.index+N[0].length;return b<s.length&&k.push(s.slice(b)),k.length>0?qe.createElement(qe.Fragment,null,...k):s},[]);return{query:F,setQuery:ts,selectedIndex:Y,setSelectedIndex:D,results:se,loadingTypes:ns,activeTab:v,setActiveTab:Ge,cycleTab:ss,areaSections:He,handleKeyDown:rs,highlightMatch:os}}const Ln=h.forwardRef(function({query:e,onQueryChange:n,onKeyDown:r,onResetSelection:o},a){const{t:c}=Oe(["common"]);return d.jsxs("div",{className:"spotlight-input-wrapper",children:[d.jsx("span",{className:"spotlight-search-icon",children:"⌘"}),d.jsx("input",{ref:a,type:"text",className:"spotlight-input",placeholder:c("common:search.spotlightPlaceholder"),value:e,onChange:u=>{n(u.target.value),o()},onKeyDown:r,autoFocus:!0,spellCheck:!1}),d.jsxs("div",{className:"spotlight-input-hints",children:[d.jsx("span",{className:"spotlight-shortcut-hint",children:"↑↓"}),d.jsx("span",{className:"spotlight-shortcut-hint",children:"Enter"}),d.jsx("span",{className:"spotlight-shortcut-hint",children:"Esc"})]})]})}),Tn=h.memo(function({activeTab:e,onSelect:n}){const{t:r}=Oe(["terminal"]);return d.jsxs("div",{className:"spotlight-tabs",role:"tablist","aria-label":r("terminal:spotlight.tabsLabel"),children:[ye.map(o=>d.jsx("button",{type:"button",role:"tab","aria-selected":o===e,tabIndex:-1,className:`spotlight-tab${o===e?" active":""}`,onClick:()=>n(o),children:r(`terminal:spotlight.tabs.${o}`)},o)),d.jsx("span",{className:"spotlight-tabs-hint",children:d.jsx("kbd",{children:"Tab"})})]})}),Fn=h.forwardRef(function({results:e,loadingTypes:n,selectedIndex:r,query:o,activeTab:a,areaSections:c,highlightMatch:u,onSelectIndex:f},l){const{t:g}=Oe(["terminal"]),E=h.useRef(!1);h.useEffect(()=>{E.current=!1},[e]),h.useEffect(()=>{const A=typeof l=="function"?null:l==null?void 0:l.current;if(!A)return;const M=()=>{E.current=!0};return A.addEventListener("mousemove",M),()=>{A.removeEventListener("mousemove",M)}},[l,e]);const y={command:g("terminal:spotlight.categories.commands"),agent:g("terminal:spotlight.categories.agents"),building:g("terminal:spotlight.categories.infrastructure"),area:g("terminal:spotlight.categories.areas"),folder:g("terminal:spotlight.categories.folders"),file:g("terminal:spotlight.categories.files"),"file-content":g("terminal:spotlight.categories.fileContents"),"modified-file":g("terminal:spotlight.categories.modifiedFiles"),session:g("terminal:spotlight.categories.sessions")},x=h.useMemo(()=>{const A=[];let M=null,S=[];e.forEach((w,j)=>{w.type!==M&&(M!==null&&S.length>0&&A.push([M,S]),M=w.type,S=[]),S.push({result:w,index:j})}),M!==null&&S.length>0&&A.push([M,S]);for(const w of n)A.some(([j])=>j===w)||A.push([w,[]]);const R=["agent","session","building","file","file-content","folder","area","command"];return A.sort(([w],[j])=>R.indexOf(w)-R.indexOf(j)),A},[e,n]);if(h.useEffect(()=>{if(!l||typeof l=="function")return;const A=l.current;if(!A)return;const M=A.querySelector(".spotlight-item.selected");M&&M.scrollIntoView({block:"nearest",behavior:"smooth"})},[r,l]),a==="areas"){if(c.length===0)return d.jsx("div",{className:"spotlight-results",ref:l,children:d.jsx("div",{className:"spotlight-empty",children:g("terminal:spotlight.noResults")})});let A=0;return d.jsx("div",{className:"spotlight-results",ref:l,children:c.map(M=>d.jsxs("div",{children:[d.jsxs("div",{className:"spotlight-category-header spotlight-area-section-header",children:[d.jsx("span",{className:"spotlight-area-dot",style:{background:M.areaColor},"aria-hidden":"true"}),d.jsx("span",{className:"spotlight-area-name",children:M.areaName}),d.jsx("span",{className:"spotlight-area-count",children:M.agents.length})]}),M.agents.length===0?d.jsx("div",{className:"spotlight-area-empty",children:g("terminal:spotlight.noAgentsInArea")}):M.agents.map(S=>{const R=A++;return d.jsx(Rt,{result:S,isSelected:R===r,query:o,highlightMatch:u,onClick:()=>S.action(),onMouseEnter:()=>{E.current&&f(R)}},S.id)})]},M.areaId))})}return e.length===0&&n.length===0?d.jsx("div",{className:"spotlight-results",ref:l,children:d.jsx("div",{className:"spotlight-empty",children:g("terminal:spotlight.noResults")})}):d.jsx("div",{className:"spotlight-results",ref:l,children:x.map(([A,M])=>d.jsxs("div",{children:[(a==="all"||x.length>1)&&d.jsx("div",{className:"spotlight-category-header",children:y[A]||A}),n.includes(A)&&d.jsxs("div",{className:"spotlight-block-loading",role:"status",children:[d.jsx("span",{className:"spotlight-loading-spinner","aria-hidden":"true"}),g("terminal:spotlight.searching")]}),M.map(({result:S,index:R})=>d.jsx(Rt,{result:S,isSelected:R===r,query:o,highlightMatch:u,onClick:()=>S.action(),onMouseEnter:()=>{E.current&&f(R)}},S.id))]},A))})}),Dn=h.memo(function(){const{t:e}=Oe(["terminal"]);return d.jsxs("div",{className:"spotlight-footer",children:[d.jsxs("div",{className:"spotlight-footer-left",children:[d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"↑"}),d.jsx("kbd",{children:"↓"})," ",d.jsx("kbd",{children:"Alt+N"}),d.jsx("kbd",{children:"Alt+P"})," ",e("terminal:spotlight.navigate")]}),d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"Enter"})," ",e("terminal:spotlight.select")]}),d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"Tab"})," ",e("terminal:spotlight.switchTabs")]})]}),d.jsx("div",{className:"spotlight-footer-right",children:d.jsxs("span",{className:"spotlight-footer-hint",children:[d.jsx("kbd",{children:"Esc"})," ",e("common:buttons.close")]})})]})});function Nn({detail:t,onClose:e}){const[n,r]=h.useState(null),[o,a]=h.useState(!0),[c,u]=h.useState(null);Cs("spotlight-file-detail",!0,e),h.useEffect(()=>{const x=new AbortController;return a(!0),u(null),r(null),(async()=>{try{const M=await Ze(et(`/api/files/read?path=${encodeURIComponent(t.filePath)}`),{signal:x.signal}),S=await M.json();if(!M.ok)throw new Error(S.error||"Unable to read file");let R=null;if(!S.binary)try{const w=await Ze(et(`/api/files/git-original?path=${encodeURIComponent(t.filePath)}`),{signal:x.signal}),j=await w.json();w.ok&&!j.binary&&typeof j.content=="string"&&(R=j.content)}catch{}x.signal.aborted||r({filename:S.filename||t.filePath.split("/").pop()||t.filePath,content:typeof S.content=="string"?S.content:"",originalContent:R,binary:S.binary===!0})}catch(M){x.signal.aborted||u(M instanceof Error?M.message:"Unable to load file")}finally{x.signal.aborted||a(!1)}})(),()=>x.abort()},[t.filePath]),h.useEffect(()=>{const x=A=>{A.key==="Escape"&&(A.preventDefault(),A.stopImmediatePropagation(),e())};return document.addEventListener("keydown",x,!0),()=>document.removeEventListener("keydown",x,!0)},[e]);const f=()=>{G.revealFileInExplorer(t.filePath,t.projectRoot,t.targetLine),e()},l=(n==null?void 0:n.filename)||t.filePath,g=l.lastIndexOf(".")>=0?l.slice(l.lastIndexOf(".")):"",E=Is(g),y=(n==null?void 0:n.originalContent)!=null&&n.originalContent!==n.content;return d.jsx("div",{className:"guake-git-diff-modal-overlay",onClick:e,children:d.jsxs("div",{className:"guake-git-diff-modal",onClick:x=>x.stopPropagation(),children:[d.jsxs("div",{className:"guake-git-diff-modal-header",children:[d.jsxs("div",{className:"guake-git-diff-path spotlight-file-detail-path",title:t.filePath,children:[t.filePath,t.targetLine?d.jsxs("span",{className:"spotlight-file-detail-line",children:[":",t.targetLine]}):null]}),d.jsxs("button",{type:"button",className:"spotlight-file-detail-explorer",onClick:f,title:"Open in File Explorer",children:[d.jsx(V,{name:"folder-open",size:14}),"Open in File Explorer"]}),d.jsx("button",{className:"guake-git-close",onClick:e,title:"Close (Esc)",children:d.jsx(V,{name:"close",size:14})})]}),d.jsxs("div",{className:"guake-git-diff-content",children:[o&&d.jsx("div",{className:"guake-git-diff-loading-overlay",children:d.jsx("div",{className:"diff-image-spinner"})}),c&&d.jsx("div",{className:"spotlight-file-detail-message",children:c}),(n==null?void 0:n.binary)&&d.jsx("div",{className:"spotlight-file-detail-message",children:"Binary preview is available in the File Explorer."}),n&&!n.binary&&(y?d.jsx(jt,{originalContent:n.originalContent||"",modifiedContent:n.content,filename:n.filename,filePath:t.filePath,language:E,searchQuery:t.searchQuery,targetLine:t.targetLine}):d.jsx(jt,{originalContent:"",modifiedContent:n.content,filename:n.filename,filePath:t.filePath,language:E,initialModifiedOnly:!0,searchQuery:t.searchQuery,targetLine:t.targetLine,readOnly:!0}))]})]})})}const Rn=768;function Bn({isOpen:t,onClose:e,onOpenSpawnModal:n,onOpenCommanderView:r,onOpenToolbox:o,onOpenFileExplorer:a,onOpenPM2LogsModal:c,onOpenBossLogsModal:u,onOpenDatabasePanel:f,onOpenMonitoringModal:l,onOpenSessionFinder:g}){const E=h.useRef(null),y=h.useRef(null),x=h.useRef(null),A=h.useRef(0),[M,S]=h.useState(null),{query:R,setQuery:w,selectedIndex:j,setSelectedIndex:K,results:le,loadingTypes:he,activeTab:B,setActiveTab:W,cycleTab:U,areaSections:ie,handleKeyDown:re,highlightMatch:J}=bn({isOpen:t,onClose:e,onOpenSpawnModal:n,onOpenCommanderView:r,onOpenToolbox:o,onOpenFileExplorer:a,onOpenPM2LogsModal:c,onOpenBossLogsModal:u,onOpenDatabasePanel:f,onOpenMonitoringModal:l,onOpenSessionFinder:g,onOpenFileDetail:S});A.current=le.length;const F=h.useRef(U);F.current=U,h.useEffect(()=>{t&&setTimeout(()=>{var D,v;(D=E.current)==null||D.focus(),(v=E.current)==null||v.select()},50)},[t]),h.useEffect(()=>{if(!t)return;const D=window.visualViewport;if(!D||window.innerWidth>Rn)return;const v=()=>{const ee=y.current;ee&&(ee.style.height=`${D.height}px`,ee.style.top=`${D.offsetTop}px`)};return v(),D.addEventListener("resize",v),D.addEventListener("scroll",v),()=>{D.removeEventListener("resize",v),D.removeEventListener("scroll",v);const ee=y.current;ee&&(ee.style.height="",ee.style.top="")}},[t]),h.useEffect(()=>{if(!t)return;const D=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),v.stopImmediatePropagation(),e();return}if(v.key==="Tab"){v.preventDefault(),v.stopPropagation(),v.stopImmediatePropagation(),F.current(v.shiftKey?-1:1);return}if(v.altKey&&!v.ctrlKey&&!v.metaKey&&(v.key==="n"||v.key==="p"||v.key==="N"||v.key==="P")){v.preventDefault(),v.stopPropagation(),v.stopImmediatePropagation();const ee=v.key.toLowerCase(),Ae=A.current;K(ee==="p"?te=>te>0?te-1:Ae-1:te=>te<Ae-1?te+1:0);return}};return window.addEventListener("keydown",D,{capture:!0}),()=>{window.removeEventListener("keydown",D,{capture:!0})}},[t,e]);const O=h.useCallback(D=>{D.target===D.currentTarget&&e()},[e]),Y=h.useCallback(()=>{K(0)},[K]);return t?d.jsx("div",{ref:y,className:"spotlight-overlay",onClick:O,children:d.jsxs("div",{className:"spotlight-modal",children:[d.jsx(Ln,{ref:E,query:R,onQueryChange:w,onKeyDown:re,onResetSelection:Y}),d.jsx(Tn,{activeTab:B,onSelect:W}),d.jsx(Fn,{ref:x,results:le,loadingTypes:he,selectedIndex:j,query:R,activeTab:B,areaSections:ie,highlightMatch:J,onSelectIndex:K}),d.jsx(Dn,{})]})}):M?d.jsx(Nn,{detail:M,onClose:()=>S(null)}):null}export{zn as FILE_ICON_NAMES,Bn as Spotlight,Dn as SpotlightFooter,Ln as SpotlightInput,Rt as SpotlightItem,Fn as SpotlightResults,Kn as formatDuration,On as formatRelativeTime,Gn as getAgentIcon,Nt as getFileIconFromPath,Un as getTypeLabel,bn as useSpotlightSearch};
@@ -0,0 +1 @@
1
+ :root{--bg-primary: #0d0d14;--bg-secondary: #14141e;--bg-tertiary: #1c1c28;--border-color: #2a2a3a;--text-primary: #d0d0d8;--text-secondary: #8a8a98;--text-muted: #606070;--accent-blue: #5a8fd4;--accent-green: #5cb88a;--accent-orange: #d4a05a;--accent-red: #d45a5a;--accent-purple: #8a6fbf;--accent-cyan: #5ab8c8;--accent-claude: #a06848;--accent-claude-light: #c8896a;--accent-pink: #5a8fd4;--accent-yellow: #d0d0d8;--font-size-base: 14px;--line-height-base: 1.5;--msg-user-bg: color-mix(in srgb, #5ab8c8 8%, transparent);--msg-user-highlight-bg: var(--msg-user-bg);--msg-user-border: #5ab8c8;--msg-user-text: #d0d0d8;--msg-assistant-bg: color-mix(in srgb, #5cb88a 8%, transparent);--msg-assistant-border: #5cb88a;--msg-assistant-text: #d0d0d8;--tool-use-bg: color-mix(in srgb, #d4a05a 8%, transparent);--tool-use-border: #d4a05a;--tool-use-text: #d4a05a;--tool-use-name: #d4a05a;--tool-result-bg: color-mix(in srgb, #8a6fbf 6%, transparent);--tool-result-border: #8a6fbf;--tool-result-text: #5cb88a;--context-bar-bg: #1c1c28;--context-bar-fill: #8a6fbf;--output-line-bg: transparent;--task-label-color: #5ab8c8;--selection-bg: color-mix(in srgb, #5ab8c8 28%, transparent);--selection-text: #d0d0d8;--accent-soft: color-mix(in srgb, #5a8fd4 14%, transparent);--thinking-accent: #8a6fbf;--status-working: #5ab8c8;--bg-hover: color-mix(in srgb, #5ab8c8 6%, transparent)}.view-mode-toggle{display:flex;gap:2px;position:relative;background:#0009;border-radius:6px;padding:3px;border:1px solid var(--border-color)}.view-mode-toggle__indicator{position:absolute;top:3px;bottom:3px;background:#d4a05a2e;border-radius:4px;transition:left .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1);pointer-events:none;z-index:0}.view-mode-toggle__btn{display:flex;align-items:center;gap:5px;padding:5px 10px;border:none;border-radius:4px;background:transparent;color:var(--text-secondary);font-size:11px;font-weight:600;font-family:JetBrains Mono,SF Mono,Fira Code,Consolas,monospace;cursor:pointer;transition:color .15s ease,background .15s ease;white-space:nowrap;position:relative;z-index:1}.view-mode-toggle__btn:hover:not(.view-mode-toggle__btn--active){background:#ffffff14;color:var(--text-primary)}.view-mode-toggle__btn--active{color:#d4a05a}.view-mode-toggle__btn--active svg{stroke:#d4a05a}.view-mode-toggle__icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.view-mode-toggle__label{line-height:1}.view-mode-toggle--floating{position:fixed;bottom:70px;left:60px;z-index:150;box-shadow:0 2px 8px #0000004d}@media(max-width:768px){.view-mode-toggle__btn{padding:10px 14px;min-height:44px;min-width:44px;font-size:12px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.view-mode-toggle__btn:active{opacity:.7;transform:scale(.95)}.view-mode-toggle__icon svg{width:16px;height:16px}.view-mode-toggle__label{font-size:11px}}@media(max-width:480px){.view-mode-toggle--floating{padding:3px}.view-mode-toggle__btn{padding:8px 10px;min-height:44px}.view-mode-toggle__label{display:none}}.app.view-mode-flat .guake-terminal{display:none}.flat-view{--flat-middle-width: 1fr;--flat-inspector-width: 320px;display:grid;grid-template-columns:var(--flat-middle-width) 3px 1fr;height:100%;width:100%;background:var(--bg-primary);overflow:hidden;padding-left:10px;box-sizing:border-box;transition:grid-template-columns .25s ease}.flat-view--with-inspector{grid-template-columns:var(--flat-middle-width) 3px 1fr 3px var(--flat-inspector-width)}.flat-splitter{position:relative;cursor:col-resize;background:color-mix(in srgb,var(--text-primary) 4%,transparent);touch-action:none;-webkit-user-select:none;user-select:none;transition:background .15s ease;z-index:2}.flat-splitter:before{content:"";position:absolute;top:0;bottom:0;left:-5px;right:-5px}.flat-splitter:hover{background:color-mix(in srgb,var(--accent-cyan) 45%,transparent)}body.flat-splitter-dragging{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.flat-splitter-dragging .flat-splitter{background:color-mix(in srgb,var(--accent-cyan) 60%,transparent)}body.flat-splitter-dragging .flat-view{transition:none!important}.flat-middle{display:flex;flex-direction:column;background:var(--bg-primary);border-right:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);overflow:hidden;min-width:280px}.flat-middle__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);flex-shrink:0;gap:12px}.flat-middle__title{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}.flat-middle__actions{display:flex;gap:6px;flex-shrink:0}.flat-middle__content{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.flat-middle__content::-webkit-scrollbar{width:6px}.flat-middle__content::-webkit-scrollbar-track{background:transparent}.flat-middle__content::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-primary) 10%,transparent);border-radius:3px}.flat-middle__content::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--text-primary) 20%,transparent)}.flat-cta-btn{padding:4px 10px;font-size:11px;font-weight:500;border:none;border-radius:4px;cursor:pointer;transition:all .15s ease;white-space:nowrap}.flat-cta-btn--agent{background:color-mix(in srgb,var(--accent-green) 15%,transparent);color:var(--accent-green)}.flat-cta-btn--agent:hover{background:color-mix(in srgb,var(--accent-green) 25%,transparent)}.flat-cta-btn--boss{background:color-mix(in srgb,var(--accent-yellow) 15%,transparent);color:var(--accent-yellow)}.flat-cta-btn--boss:hover{background:color-mix(in srgb,var(--accent-yellow) 25%,transparent)}.flat-cta-btn--building{background:color-mix(in srgb,var(--accent-cyan) 15%,transparent);color:var(--accent-cyan)}.flat-cta-btn--building:hover{background:color-mix(in srgb,var(--accent-cyan) 25%,transparent)}.flat-cta-btn--area{background:color-mix(in srgb,var(--accent-purple) 15%,transparent);color:var(--accent-purple)}.flat-cta-btn--area:hover{background:color-mix(in srgb,var(--accent-purple) 25%,transparent)}.flat-middle .agent-overview-panel{position:relative;inset:auto;width:100%;height:100%;border-right:none;flex:1;min-height:0;z-index:auto}.flat-middle .agent-overview-panel .aop-row-controls .close-btn{display:none}.flat-middle__content:has(>.agent-overview-panel){padding:0;overflow:hidden}.flat-right{display:flex;flex-direction:column;background:var(--bg-tertiary);overflow:hidden}.flat-chat{display:flex;flex-direction:column;height:100%}.flat-chat--empty{align-items:center;justify-content:center}.flat-chat__placeholder{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--text-muted)}.flat-chat__placeholder-icon{font-size:48px;opacity:.5}.flat-chat__placeholder-text{font-size:14px}.flat-map{display:flex;flex-direction:column;height:100%;padding:12px 16px;gap:10px;overflow-y:auto;position:relative}.flat-map::-webkit-scrollbar{width:6px}.flat-map::-webkit-scrollbar-track{background:transparent}.flat-map::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-primary) 10%,transparent);border-radius:3px}.flat-map::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--text-primary) 20%,transparent)}.flat-map__header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-shrink:0;padding-right:130px}.flat-map__title{font-size:13px;font-weight:600;color:var(--text-primary)}.flat-map__hint{font-size:11px;color:var(--text-muted)}.flat-map__stats{display:none}.flat-map__view-mode{position:absolute;top:10px;right:12px;z-index:5;background:color-mix(in srgb,var(--bg-secondary) 92%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-radius:999px;box-shadow:0 2px 8px color-mix(in srgb,#000 30%,transparent)}.flat-map__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;align-content:start}.flat-map__empty{grid-column:1/-1;display:flex;align-items:center;justify-content:center;padding:40px;color:var(--text-muted);font-size:13px}.flat-map-area-card{display:flex;flex-direction:column;position:relative;isolation:isolate;background:color-mix(in srgb,var(--area-color, var(--text-muted)) 12%,var(--bg-tertiary));border:1px solid color-mix(in srgb,var(--area-color, var(--text-muted)) 38%,transparent);border-radius:8px;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.flat-map-area-card:hover{border-color:color-mix(in srgb,var(--area-color, var(--text-muted)) 58%,transparent);box-shadow:0 2px 8px color-mix(in srgb,#000 25%,transparent)}.flat-map-area-card--working{border-color:color-mix(in srgb,var(--area-color, var(--text-muted)) 72%,var(--accent-cyan));box-shadow:0 0 0 1px #8be9fd2e}.flat-map-area-card__header{display:flex;align-items:center;gap:6px;padding:6px 8px;background:transparent;border:none;cursor:pointer;width:100%;text-align:left;color:var(--text-primary);font-size:12px;font-weight:600;transition:background .15s ease}.flat-map-area-card__header:hover{background:color-mix(in srgb,var(--text-primary) 4%,transparent)}.flat-map-area-card__color{width:8px;height:8px;border-radius:50%;flex-shrink:0}.flat-map-area-card__logo{position:absolute;right:8px;bottom:8px;width:88px;height:88px;max-width:55%;max-height:72%;object-fit:contain;opacity:.3;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:-1;border-radius:4px}.flat-map-area-card__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flat-map-area-card__count{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:500;color:var(--text-muted);background:color-mix(in srgb,var(--border-color) 55%,transparent);padding:1px 5px;border-radius:8px;flex-shrink:0}.flat-map-area-card__working{display:inline-flex;align-items:center;gap:3px;height:18px;padding:1px 5px;flex-shrink:0;color:var(--accent-cyan);background:#8be9fd1f;border:1px solid rgba(139,233,253,.32);border-radius:8px;box-shadow:0 0 7px #8be9fd29}.flat-map-area-card__working-glyph{color:currentColor}.flat-map-area-card__working-count{min-width:6px;font-size:9px;font-weight:700;line-height:1;text-align:center}.flat-map-area-card__caret{font-size:10px;color:var(--text-muted);flex-shrink:0;width:12px;text-align:center}.flat-map-area-card__agents{display:flex;flex-wrap:wrap;gap:4px;padding:0 8px 8px}.flat-map-agent-chip{position:relative;display:inline-flex;align-items:center;gap:5px;padding:3px 7px 6px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px;cursor:pointer;color:var(--text-secondary);font-size:11px;text-align:left;transition:background .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;min-width:0;overflow:hidden}.flat-map-agent-chip:hover{background:color-mix(in srgb,var(--text-primary) 8%,transparent);border-color:color-mix(in srgb,var(--text-primary) 10%,transparent);color:var(--text-primary)}.flat-map-agent-chip.working{background:color-mix(in srgb,var(--accent-cyan) 12%,transparent);border-color:color-mix(in srgb,var(--accent-cyan) 68%,var(--border-color));color:var(--text-primary);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-cyan) 14%,transparent)}.flat-map-agent-chip__name{min-width:0;overflow:hidden;text-overflow:ellipsis}.flat-map-agent-chip__dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.flat-map-agent-chip__provider-icon{width:12px;height:12px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 1px 2px color-mix(in srgb,#000 25%,transparent))}.flat-map-agent-chip__crown{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.flat-map-agent-chip__context-bar{position:absolute;left:0;right:0;bottom:0;height:2px;background:color-mix(in srgb,var(--border-color) 55%,transparent);pointer-events:none}.flat-map-agent-chip__context-bar-fill{display:block;height:100%;transition:width .2s ease,background-color .2s ease}.flat-map-agent-chip__activity{color:var(--accent-cyan)}.flat-map-area-card__buildings,.flat-map-area-card__folders{display:flex;flex-wrap:wrap;gap:4px;padding:6px 8px 8px;border-top:1px dashed color-mix(in srgb,var(--text-primary) 5%,transparent);margin-top:2px}.flat-map-folder-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;background:#ffffff06;border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:8px;cursor:pointer;color:var(--text-secondary);font-size:11px;font-family:JetBrains Mono,Fira Code,monospace;text-align:left;transition:background .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}.flat-map-folder-chip:hover{background:#ffffff12;border-color:#ffffff2e;color:var(--text-primary)}.flat-map-folder-chip__name{min-width:0;overflow:hidden;text-overflow:ellipsis}.flat-map-building-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;background:#ffffff06;border:1px dashed color-mix(in srgb,var(--text-primary) 8%,transparent);border-left:2px solid var(--building-type-color, color-mix(in srgb, var(--text-primary) 8%, transparent));border-radius:8px;cursor:pointer;color:var(--text-secondary);font-size:11px;text-align:left;transition:background .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;min-width:0;overflow:hidden}.flat-map-building-chip:hover{background:#ffffff12;border-color:#ffffff2e;border-left-color:var(--building-type-color, rgba(255, 255, 255, .18));color:var(--text-primary)}.flat-map-building-chip__name{min-width:0;overflow:hidden;text-overflow:ellipsis}.flat-map-building-chip__dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.flat-map-building-chip--error{border-color:#ff4a4a66}.flat-map-building-chip--running{border-style:solid;border-color:#4aff9e40}.flat-terminal-wrapper{display:flex;flex-direction:column;height:100%;min-height:0;position:relative;background:var(--bg-tertiary);overflow:hidden;--guake-side-panel-width: 380px}.flat-terminal-wrapper--with-side-panel>*:not(.guake-git-panel):not(.guake-buildings-panel):not(.guake-workflow-panel):not(.agent-debug-panel){margin-right:var(--guake-side-panel-width);transition:margin-right .2s ease}.flat-terminal-wrapper__header{display:flex;flex-direction:row;align-items:center;gap:12px;padding:10px 12px 6px;border-bottom:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);background:var(--bg-secondary);flex-shrink:0;min-height:40px;overflow:visible}.flat-terminal-wrapper__header-main{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 auto;overflow:visible;padding:4px 6px;margin:0;background:transparent;border:1px solid transparent;border-radius:8px;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .15s ease,border-color .15s ease}.flat-terminal-wrapper__header-main:hover{background:color-mix(in srgb,var(--text-primary) 4%,transparent);border-color:color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-terminal-wrapper__header-main--active{background:color-mix(in srgb,var(--accent-purple) 18%,transparent);border-color:color-mix(in srgb,var(--accent-purple) 45%,transparent)}.flat-terminal-wrapper__header-main--active:hover{background:color-mix(in srgb,var(--accent-purple) 26%,transparent)}.flat-terminal-wrapper__header-avatar{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;width:28px;height:28px;border-radius:8px;overflow:visible;transform-origin:center center;border:1.5px solid transparent;box-sizing:border-box}.flat-terminal-wrapper__header-avatar>*{display:block;width:100%;height:100%;object-fit:cover;border-radius:7px}.flat-terminal-wrapper__header-avatar.is-working{border-color:#8be9fd8c;z-index:1}.flat-terminal-wrapper__header-activity{position:absolute;top:-5px;right:-5px;width:12px;height:12px;padding:1px;border-radius:50%;color:var(--accent-green);box-sizing:content-box}.flat-terminal-wrapper__header-meta{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:0 0 auto;flex-wrap:nowrap}.flat-terminal-wrapper__statusbar{display:flex;align-items:center;gap:10px;padding:6px 12px;flex-shrink:0;background:var(--bg-secondary);border-top:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);min-height:32px;box-sizing:border-box}.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__cwd,.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__context{background:transparent;border-color:color-mix(in srgb,var(--text-primary) 4%,transparent)}.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__cwd,.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__context,.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__area-dir,.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__detached{font-size:10px}.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__usage-label,.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__usage-value{font-size:9px}.flat-terminal-wrapper__statusbar-spacer{flex:1 1 auto}.flat-terminal-wrapper__buildings{display:inline-flex;align-items:center;gap:4px;padding:2px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px}.flat-terminal-wrapper__building-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:22px;padding:0;color:var(--text-muted);background:transparent;border:none;border-radius:7px;cursor:pointer;transition:background .15s ease,color .15s ease}.flat-terminal-wrapper__building-btn:hover{color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 8%,transparent)}.flat-terminal-wrapper__building-btn--offline{color:color-mix(in srgb,var(--accent-orange) 75%,transparent)}.flat-terminal-wrapper__building-btn--offline:hover{color:var(--accent-orange)}.flat-terminal-wrapper__building-btn--default{color:color-mix(in srgb,var(--accent-cyan) 80%,var(--text-muted))}.flat-terminal-wrapper__building-btn--default:hover{color:var(--accent-cyan)}.flat-terminal-wrapper__building-btn--active{color:var(--text-primary);background:color-mix(in srgb,var(--accent-purple) 28%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-purple) 45%,transparent)}.flat-terminal-wrapper__building-btn--active:hover{background:color-mix(in srgb,var(--accent-purple) 36%,transparent)}.flat-terminal-wrapper__building-btn--tests-working{color:var(--accent-cyan);background:color-mix(in srgb,var(--accent-cyan) 14%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-cyan) 40%,transparent);animation:flat-tests-glow 1.4s ease-in-out infinite}.flat-terminal-wrapper__building-btn--tests-working svg{animation:flat-tests-shake 1.1s ease-in-out infinite}.flat-terminal-wrapper__building-btn--tests-working:hover{color:var(--accent-cyan);background:color-mix(in srgb,var(--accent-cyan) 22%,transparent)}.flat-terminal-wrapper__detached{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;font-size:11px;font-weight:500;color:var(--accent-orange);background:color-mix(in srgb,var(--accent-orange) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent-orange) 35%,transparent);border-radius:10px;animation:blink 1.6s ease-in-out infinite}.flat-terminal-wrapper__area-dir{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-family:SF Mono,Menlo,Consolas,monospace;color:var(--text-secondary);background:color-mix(in srgb,var(--text-primary) 3%,transparent);border:1px solid color-mix(in srgb,var(--text-primary) 5%,transparent);border-radius:10px;cursor:pointer;max-width:240px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s ease,color .15s ease,border-color .15s ease}.flat-terminal-wrapper__area-dir:hover{background:color-mix(in srgb,var(--text-primary) 8%,transparent);color:var(--text-primary);border-color:color-mix(in srgb,var(--text-primary) 14%,transparent)}.flat-terminal-wrapper__area-dir-name{overflow:hidden;text-overflow:ellipsis}.flat-terminal-wrapper__area-dir-branch{display:inline-flex;align-items:center;gap:3px;color:var(--accent-cyan);opacity:.85}.flat-terminal-wrapper__branch-ahead{display:inline-flex;align-items:center;color:var(--accent-green)}.flat-terminal-wrapper__branch-behind{display:inline-flex;align-items:center;color:var(--accent-orange)}.flat-terminal-wrapper__area-fetch{display:inline-flex;align-items:center;padding:1px 3px;border-radius:4px;color:var(--text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.flat-terminal-wrapper__area-fetch:hover{background:color-mix(in srgb,var(--text-primary) 8%,transparent);color:var(--text-primary)}.flat-terminal-wrapper__area-fetch--fetching{animation:blink 1s ease-in-out infinite}.flat-terminal-wrapper__actions{display:inline-flex;align-items:center;gap:4px;padding:2px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px}.flat-terminal-wrapper__action-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:24px;padding:0;font-size:12px;line-height:1;color:var(--text-muted);background:transparent;border:none;border-radius:7px;cursor:pointer;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.flat-terminal-wrapper__action-btn:hover:not(:disabled){color:var(--text-primary);background:color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-terminal-wrapper__action-btn:disabled{opacity:.35;cursor:not-allowed}.flat-terminal-wrapper__action-btn--active{color:var(--text-primary);background:color-mix(in srgb,var(--accent-purple) 28%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-purple) 45%,transparent)}.flat-terminal-wrapper__action-btn--active:hover{background:color-mix(in srgb,var(--accent-purple) 36%,transparent)}.flat-terminal-wrapper__action-btn--danger{color:color-mix(in srgb,var(--accent-red) 85%,transparent)}.flat-terminal-wrapper__action-btn--danger:hover{color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 12%,transparent)}.flat-terminal-wrapper__action-btn--confirm{color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 18%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-red) 50%,transparent);animation:blink 1s ease-in-out infinite}.flat-terminal-wrapper__more{position:relative;display:inline-flex}.flat-terminal-wrapper__more-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:220px;padding:4px;background:var(--bg-tertiary);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);border-radius:8px;box-shadow:0 8px 28px color-mix(in srgb,#000 45%,transparent);z-index:100}.flat-terminal-wrapper__more-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;font-size:12px;color:var(--text-primary);background:transparent;border:none;border-radius:6px;cursor:pointer;text-align:left;transition:background .15s ease,color .15s ease}.flat-terminal-wrapper__more-item:hover:not(:disabled){background:color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-terminal-wrapper__more-item:disabled{opacity:.45;cursor:not-allowed}.flat-terminal-wrapper__more-item--danger{color:color-mix(in srgb,var(--accent-red) 90%,transparent)}.flat-terminal-wrapper__more-item--danger:hover:not(:disabled){color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 12%,transparent)}.flat-terminal-wrapper__more-divider{height:1px;margin:4px 2px;background:color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-terminal-wrapper__header-info{display:flex;flex-direction:row;align-items:center;gap:6px;min-width:0;flex:1 1 auto;overflow:hidden}.flat-terminal-wrapper__header-identity{display:inline-flex;align-items:center;gap:4px;min-width:0;flex:1 1 auto;overflow:hidden}.flat-terminal-wrapper__header-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}.flat-terminal-wrapper__header-status{font-size:10px;text-transform:capitalize;flex-shrink:0}.flat-terminal-wrapper__header-task{font-size:11px;color:var(--text-muted);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:2px 8px;border-radius:10px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);flex-shrink:1}.flat-terminal-wrapper__header-model{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;min-width:0}.flat-terminal-wrapper__header-provider-icon{width:16px;height:16px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 1px 2px color-mix(in srgb,#000 25%,transparent))}.flat-terminal-wrapper__header-model-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-family:SF Mono,Menlo,Consolas,monospace;font-weight:600;color:var(--text-secondary);background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:999px;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.flat-terminal-wrapper__header-model-name{color:var(--text-primary);text-transform:lowercase;overflow:hidden;text-overflow:ellipsis}.flat-terminal-wrapper__header-model-sep{opacity:.6}.flat-terminal-wrapper__header-model-effort{color:var(--accent-purple);text-transform:lowercase}.flat-terminal-wrapper__cwd{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;font-size:11px;color:var(--text-secondary);background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px;cursor:pointer;max-width:240px;transition:background .15s ease,border-color .15s ease,color .15s ease}.flat-terminal-wrapper__cwd:hover{background:color-mix(in srgb,var(--text-primary) 8%,transparent);border-color:color-mix(in srgb,var(--text-primary) 14%,transparent);color:var(--text-primary)}.flat-terminal-wrapper__cwd-icon{font-size:12px;line-height:1}.flat-terminal-wrapper__cwd-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:SF Mono,Menlo,Consolas,monospace}.flat-terminal-wrapper__context{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;font-size:11px;color:var(--text-secondary);background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.flat-terminal-wrapper__context:hover{background:color-mix(in srgb,var(--text-primary) 8%,transparent);border-color:color-mix(in srgb,var(--text-primary) 14%,transparent)}.flat-terminal-wrapper__context-bar{position:relative;width:64px;height:5px;border-radius:3px;background:color-mix(in srgb,var(--text-primary) 8%,transparent);overflow:hidden}.flat-terminal-wrapper__context-bar-fill{position:absolute;left:0;top:0;height:100%;border-radius:3px;transition:width .2s ease,background-color .2s ease}.flat-terminal-wrapper__context-warning{font-size:11px;opacity:.8}.flat-terminal-wrapper__usage-bars{display:inline-flex;align-items:stretch;gap:8px}.flat-terminal-wrapper__usage-gauge{display:inline-flex;align-items:center;gap:5px;min-width:0}.flat-terminal-wrapper__usage-gauge+.flat-terminal-wrapper__usage-gauge{padding-left:8px;border-left:1px solid color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-terminal-wrapper__usage-label{color:var(--text-muted);font-family:SF Mono,Menlo,Consolas,monospace;font-size:9px;font-weight:600;line-height:1;text-transform:uppercase;white-space:nowrap}.flat-terminal-wrapper__usage-window{color:var(--text-secondary);font-weight:700;text-transform:none}.flat-terminal-wrapper__usage-value{overflow:hidden;font-family:SF Mono,Menlo,Consolas,monospace;font-size:9px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;text-align:right;text-overflow:ellipsis;white-space:nowrap}.flat-terminal-wrapper__view-mode{display:inline-flex;align-items:center;padding:2px;gap:2px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px}.flat-terminal-wrapper__view-mode-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;font-size:11px;font-weight:500;color:var(--text-muted);background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.flat-terminal-wrapper__view-mode-btn:hover{color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 4%,transparent)}.flat-terminal-wrapper__view-mode-btn--active{color:var(--text-primary);background:color-mix(in srgb,var(--accent-purple) 28%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-purple) 50%,transparent),0 1px 3px color-mix(in srgb,#000 25%,transparent)}.flat-terminal-wrapper__view-mode-btn--active:hover{background:color-mix(in srgb,var(--accent-purple) 36%,transparent)}.flat-terminal-wrapper__view-mode-trigger{color:var(--text-primary);gap:6px}.flat-terminal-wrapper__view-mode-trigger svg:last-child{opacity:.55;transition:opacity .15s ease,transform .15s ease}.flat-terminal-wrapper__view-mode-trigger:hover svg:last-child{opacity:1}.flat-terminal-wrapper__view-mode-trigger--open{background:color-mix(in srgb,var(--text-primary) 8%,transparent)}.flat-terminal-wrapper__view-mode-trigger--open svg:last-child{opacity:1;transform:rotate(180deg)}.flat-terminal-wrapper__view-mode-icon{font-size:13px;line-height:1}.flat-terminal-wrapper__view-mode-label{line-height:1}.flat-terminal-wrapper__theme{display:inline-flex;align-items:center}.flat-terminal-wrapper__theme .theme-selector-trigger{padding:4px 9px;font-size:11px;border-radius:10px;background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-terminal-wrapper__theme .theme-selector-trigger:hover{background:color-mix(in srgb,var(--text-primary) 8%,transparent);border-color:color-mix(in srgb,var(--text-primary) 14%,transparent)}.flat-terminal-wrapper__inspector-toggle{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;font-size:11px;font-weight:500;color:var(--text-secondary);background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.flat-terminal-wrapper__inspector-toggle:hover{color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 8%,transparent);border-color:color-mix(in srgb,var(--text-primary) 14%,transparent)}.flat-terminal-wrapper__inspector-toggle--active{color:var(--text-primary);background:color-mix(in srgb,var(--accent-purple) 22%,transparent);border-color:color-mix(in srgb,var(--accent-purple) 55%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent-purple) 35%,transparent),0 1px 3px color-mix(in srgb,#000 25%,transparent)}.flat-terminal-wrapper__inspector-toggle--active:hover{background:color-mix(in srgb,var(--accent-purple) 32%,transparent)}.flat-terminal-wrapper__inspector-icon{display:inline-flex;align-items:center;justify-content:center;line-height:1}.flat-terminal-wrapper__inspector-label{line-height:1}.flat-terminal-wrapper__close{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;color:var(--text-muted);background:color-mix(in srgb,var(--text-primary) 4%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:10px;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.flat-terminal-wrapper__close:hover{color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 12%,transparent);border-color:color-mix(in srgb,var(--accent-red) 40%,transparent)}@media(max-width:1100px){.flat-terminal-wrapper__view-mode-label,.flat-terminal-wrapper__inspector-label{display:none}.flat-terminal-wrapper__cwd{max-width:160px}}.flat-terminal-wrapper .guake-output{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px}.flat-terminal-wrapper .guake-output::-webkit-scrollbar{width:6px}.flat-terminal-wrapper .guake-output::-webkit-scrollbar-track{background:transparent}.flat-terminal-wrapper .guake-output::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-primary) 10%,transparent);border-radius:3px}.flat-terminal-wrapper .guake-input-container{position:relative;flex-shrink:0;border-top:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);background:var(--bg-secondary)}.flat-terminal-wrapper .guake-search-bar,.flat-terminal-wrapper .atp-search-bar{position:sticky;top:0;z-index:10;background:var(--bg-secondary)}.flat-terminal-wrapper .guake-handle,.flat-terminal-wrapper .atp-resize-handle{display:none}.flat-terminal-wrapper .compacting-indicator{padding:12px;margin:8px}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.flat-inspector{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;background:var(--bg-secondary);border-left:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);overflow:hidden;animation:flat-inspector-slide-in .22s ease}.flat-inspector__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);background:var(--bg-tertiary);flex-shrink:0}.flat-inspector__tabs{display:inline-flex;align-items:center;gap:4px;padding:2px;background:color-mix(in srgb,#000 25%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);border-radius:6px}.flat-inspector__tab{padding:4px 10px;font-size:12px;font-weight:500;color:var(--text-muted);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background .15s ease,color .15s ease}.flat-inspector__tab:hover{color:var(--text-primary)}.flat-inspector__tab--active{color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 8%,transparent)}.flat-inspector__close{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;font-size:13px;color:var(--text-muted);background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.flat-inspector__close:hover{color:var(--text-primary);background:color-mix(in srgb,var(--border-color) 55%,transparent);border-color:color-mix(in srgb,var(--text-primary) 10%,transparent)}.flat-inspector__body{flex:1 1 auto;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}.flat-inspector__body .unit-panel{flex:1 1 auto;min-height:0;min-width:0;padding:10px}.flat-inspector__empty{display:flex;align-items:center;justify-content:center;flex:1;color:var(--text-muted);font-size:13px}@keyframes flat-inspector-slide-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}.flat-mobile-sidebar-toggle,.flat-mobile-sidebar-backdrop{display:none}@media(max-width:1024px){.flat-view,.flat-view--with-inspector{grid-template-columns:1fr}.flat-splitter{display:none}.flat-right{grid-column:1/-1}.flat-right>.flat-terminal-wrapper,.flat-right>.flat-chat{flex:1 1 auto;min-height:0;height:auto}.flat-middle{position:fixed;top:0;left:0;bottom:0;width:min(380px,92vw);z-index:185;transform:translate(-110%);transition:transform .22s ease;border-right:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);box-shadow:6px 0 32px color-mix(in srgb,#000 60%,transparent)}.flat-view--mobile-sidebar-open .flat-middle{transform:translate(0)}.flat-mobile-sidebar-toggle{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;margin:10px 12px 0;padding:8px 12px;font-size:12px;font-weight:500;color:var(--text-primary);background:color-mix(in srgb,var(--bg-tertiary) 95%,transparent);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);border-radius:10px;cursor:pointer;min-height:36px;flex-shrink:0;transition:background .15s ease,border-color .15s ease}.flat-mobile-sidebar-toggle:hover,.flat-mobile-sidebar-toggle:active{background:color-mix(in srgb,var(--accent-purple) 28%,transparent);border-color:color-mix(in srgb,var(--accent-purple) 50%,transparent)}.flat-mobile-sidebar-toggle__label{line-height:1}.flat-mobile-sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:184;background:color-mix(in srgb,#000 68%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:flat-inspector-fade-in .18s ease}.flat-inspector{position:fixed;top:0;right:0;bottom:0;left:0;z-index:186;border-left:none;animation:none;transform:translate(100%);transition:transform .22s ease}.flat-inspector--open{transform:translate(0)}.flat-inspector--closing{transform:translate(100%)}.flat-inspector__tab{min-height:36px;padding:6px 14px}.flat-inspector__close{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}}.flat-chat-actions-sheet-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2050}.flat-chat-actions-sheet__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,#000 45%,transparent);animation:flat-sheet-fade .15s ease}.flat-chat-actions-sheet{position:absolute;left:0;right:0;bottom:var(--mobile-bottom-stack-height, 72px);display:flex;flex-direction:column;gap:10px;padding:8px 14px calc(14px + env(safe-area-inset-bottom,0px));background:var(--bg-tertiary);border:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);border-bottom:none;border-top-left-radius:18px;border-top-right-radius:18px;box-shadow:0 -12px 32px color-mix(in srgb,#000 50%,transparent);animation:flat-sheet-slide-up .2s cubic-bezier(.22,1,.36,1)}.flat-chat-actions-sheet__grabber{width:40px;height:4px;margin:2px auto;border-radius:999px;background:#ffffff38}.flat-chat-actions-sheet__title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.flat-chat-actions-sheet__title{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flat-chat-actions-sheet__done{flex-shrink:0;font-size:13px;font-weight:500;color:var(--accent-purple);background:none;border:none;padding:6px 4px;cursor:pointer}.flat-chat-actions-sheet__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.flat-chat-actions-sheet__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:64px;padding:8px 4px;font-size:11px;color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 5%,transparent);border:1px solid rgba(255,255,255,.07);border-radius:12px;cursor:pointer}.flat-chat-actions-sheet__item span{text-align:center;line-height:1.2}.flat-chat-actions-sheet__item.is-active{background:color-mix(in srgb,var(--accent-purple) 24%,transparent);border-color:color-mix(in srgb,var(--accent-purple) 50%,transparent)}.flat-chat-actions-sheet__list{display:flex;flex-direction:column;gap:2px}.flat-chat-actions-sheet__row{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:10px 12px;font-size:14px;color:var(--text-primary);background:transparent;border:none;border-radius:10px;cursor:pointer;text-align:left}.flat-chat-actions-sheet__row:active{background:color-mix(in srgb,var(--border-color) 55%,transparent)}.flat-chat-actions-sheet__row:disabled{opacity:.4;cursor:not-allowed}.flat-chat-actions-sheet__row--danger{color:color-mix(in srgb,var(--accent-red) 90%,transparent)}.flat-chat-actions-sheet__row.is-armed{color:var(--accent-red);background:color-mix(in srgb,var(--accent-red) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-red) 50%,transparent)}@keyframes flat-sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes flat-sheet-fade{0%{opacity:0}to{opacity:1}}@media(max-width:768px){.app.view-mode-flat .mobile-fab-toggle,.app.view-mode-flat .mobile-fab-menu,.app.view-mode-flat .voice-assistant-btn.mobile-voice-assistant{display:none!important}.app.view-mode-flat .flat-view{padding-left:0}.app.view-mode-flat .main-content{height:calc(100% - var(--mobile-bottom-stack-height, 72px))!important;max-height:calc(100% - var(--mobile-bottom-stack-height, 72px))!important;overflow:hidden}.app.view-mode-flat .flat-terminal-wrapper__header,.app.view-mode-flat .flat-inspector__header,.app.view-mode-flat .flat-middle__header,.app.view-mode-flat .flat-map__header{padding-top:calc(6px + env(safe-area-inset-top,0px))}.app.view-mode-flat .flat-terminal-wrapper__header{padding-top:calc(2px + env(safe-area-inset-top,0px))}.app.view-mode-flat .flat-inspector__body,.app.view-mode-flat .flat-middle__content{padding-bottom:var(--mobile-bottom-stack-height, 72px)}.flat-view{padding-left:56px}.flat-middle__header{flex-wrap:wrap;padding:6px 10px;gap:6px}.flat-middle__content{padding:8px}.flat-cta-btn{padding:8px 10px;font-size:11px;min-height:34px}.flat-chat--empty{align-items:stretch;justify-content:flex-start}.flat-map{width:100%;padding:0 10px 12px;gap:8px;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y}.app.view-mode-flat .flat-map__header{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title toggle" "stats stats";align-items:center;gap:3px 10px;position:sticky;top:0;z-index:8;margin:0 -10px;padding:calc(6px + env(safe-area-inset-top,0px)) 10px 8px;background:color-mix(in srgb,var(--bg-primary) 94%,transparent);border-bottom:1px solid color-mix(in srgb,var(--text-primary) 5%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.flat-map__title{grid-area:title;font-size:15px}.flat-map__hint{display:none}.flat-map__stats{grid-area:stats;display:flex;align-items:center;gap:8px;min-width:0;color:var(--text-muted);font-size:10px;font-family:SF Mono,Menlo,Consolas,monospace}.flat-map__stats-working{display:inline-flex;align-items:center;gap:4px;color:color-mix(in srgb,var(--status-working) 78%,var(--text-secondary))}.flat-map__stats-dot{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--status-working);box-shadow:0 0 6px color-mix(in srgb,var(--status-working) 55%,transparent)}.flat-map__view-mode{grid-area:toggle;position:relative;top:auto;right:auto;justify-self:end}.flat-map__view-mode .view-mode-toggle__btn{min-width:40px;min-height:40px;padding:6px 9px}.flat-map__grid{width:100%;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}.flat-map-area-card{min-width:0;grid-row:auto!important;grid-column:auto!important;border-radius:12px}.flat-map-area-card__header{padding:7px 8px;gap:6px;min-height:48px}.flat-map-area-card__name{font-size:12px}.flat-map-area-card__count{font-size:9px;padding:2px 5px}.flat-map-area-card__logo{position:static;width:22px;height:22px;max-width:22px;max-height:22px;flex-shrink:0;opacity:.82;z-index:0;border-radius:5px}.flat-map-area-card__caret{flex-shrink:0;margin-left:auto;opacity:.7}.flat-map-area-card--collapsed .flat-map-area-card__agents,.flat-map-area-card--collapsed .flat-map-area-card__buildings,.flat-map-area-card--collapsed .flat-map-area-card__folders{display:none}.flat-map-area-card--expanded{grid-column:1/-1!important;border-color:color-mix(in srgb,var(--area-color, var(--text-muted)) 72%,transparent);box-shadow:0 6px 18px color-mix(in srgb,#000 30%,transparent)}.flat-map-area-card__agents{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:2px 8px 8px}.flat-map-agent-chip{width:100%;padding:7px 10px 9px;font-size:12px;min-height:40px}.flat-map-area-card__folders,.flat-map-area-card__buildings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.flat-map-folder-chip,.flat-map-building-chip{width:100%;min-height:36px}.flat-terminal-wrapper__header{flex-wrap:nowrap;padding:6px 10px 4px;gap:8px;min-height:40px;overflow:visible}.flat-terminal-wrapper__header-main{flex:1 1 auto;min-width:0;overflow:hidden;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"avatar info" "avatar model";align-items:center;column-gap:8px;row-gap:0;padding:2px 4px}.flat-terminal-wrapper__header-avatar{grid-area:avatar}.flat-terminal-wrapper__header-info{grid-area:info;min-width:0;align-self:end}.flat-terminal-wrapper__header-identity{flex:1 1 auto;min-width:0}.flat-terminal-wrapper__header-name{flex:0 1 auto;min-width:0}.flat-terminal-wrapper__header-status{font-size:9px;padding:1px 6px;border-radius:999px;background:color-mix(in srgb,var(--border-color) 55%,transparent);max-width:72px;overflow:hidden;text-overflow:ellipsis}.flat-terminal-wrapper__header-model{grid-area:model;align-self:start;justify-self:start;min-width:0;max-width:100%;gap:4px}.flat-terminal-wrapper__header-provider-icon{width:11px;height:11px}.flat-terminal-wrapper__header-model-chip{padding:0;background:none;border:none;border-radius:0;font-size:9px;max-width:100%}.flat-terminal-wrapper__header-meta{flex:0 0 auto;justify-content:flex-end;flex-wrap:nowrap;gap:4px}.flat-terminal-wrapper__header-task{display:none}.flat-terminal-wrapper__header-avatar,.flat-terminal-wrapper__header-avatar>*{width:28px;height:28px}.flat-terminal-wrapper__action-btn,.flat-terminal-wrapper__building-btn{min-width:36px;min-height:36px}.flat-terminal-wrapper__statusbar{flex-wrap:wrap;padding:6px 10px;gap:6px;row-gap:6px}.flat-terminal-wrapper__action-btn,.flat-terminal-wrapper__building-btn,.flat-terminal-wrapper__close{width:28px;height:28px}.flat-terminal-wrapper__inspector-toggle{padding:4px 6px}.flat-terminal-wrapper__inspector-label,.flat-terminal-wrapper__actions{display:none}.flat-terminal-wrapper{--guake-side-panel-width: 100%;background:var(--bg-primary)}.flat-right{background:var(--bg-primary)}.flat-terminal-wrapper--with-side-panel>*:not(.guake-git-panel):not(.guake-buildings-panel):not(.guake-workflow-panel):not(.agent-debug-panel){margin-right:0}.flat-terminal-wrapper .guake-git-panel,.flat-terminal-wrapper .guake-buildings-panel,.flat-terminal-wrapper .guake-workflow-panel,.flat-terminal-wrapper .agent-debug-panel{width:100%}.flat-bottom-panel{height:180px}.flat-terminal-wrapper__view-mode,.flat-terminal-wrapper__close,.flat-terminal-wrapper__statusbar,.app.view-mode-flat .flat-mobile-sidebar-toggle,.app.view-mode-flat .flat-terminal-wrapper__inspector-toggle{display:none}}@media(max-width:480px){.flat-view{padding-left:52px}.flat-middle{width:100vw;max-width:100vw;box-shadow:none}.flat-middle__header{padding:8px 10px}.flat-middle__actions{gap:4px}.flat-cta-btn{padding:6px 8px;font-size:10px;min-height:32px}.flat-map-area-card__header{padding:8px 10px;font-size:13px}.flat-map-agent-chip{font-size:12px;padding:6px 8px 8px}.flat-terminal-wrapper__header-name{font-size:12px}.flat-terminal-wrapper__header-model-chip{max-width:100%}.flat-inspector__body{padding-bottom:env(safe-area-inset-bottom,0)}}@media(min-width:1400px){.flat-view{--flat-middle-width: minmax(280px, 400px);--flat-inspector-width: 360px}}@keyframes flat-inspector-fade-in{0%{opacity:0}to{opacity:1}}.flat-classic-terminal{flex:1 1 auto;min-height:0;display:flex;position:relative;overflow:hidden;background:var(--bg-primary)}.flat-classic-terminal .guake-bottom-terminal-embed{flex:1 1 auto;width:100%;height:100%;min-height:0}.flat-classic-terminal--message{align-items:center;justify-content:center;color:var(--text-muted);font-size:13px}.flat-bottom-panel{display:flex;flex-direction:column;flex-shrink:0;height:250px;min-height:0;background:var(--bg-secondary);border-top:1px solid color-mix(in srgb,var(--text-primary) 8%,transparent);overflow:hidden}.flat-bottom-panel__header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 10px;background:var(--bg-tertiary);border-bottom:1px solid color-mix(in srgb,var(--border-color) 55%,transparent);flex-shrink:0;min-height:28px}.flat-bottom-panel__title{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flat-bottom-panel__muted{color:var(--text-muted);font-weight:400;font-size:10px}.flat-bottom-panel__header-actions{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.flat-bottom-panel__close{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;color:var(--text-muted);background:transparent;border:none;border-radius:6px;cursor:pointer;transition:background .15s ease,color .15s ease}.flat-bottom-panel__close:hover{color:var(--text-primary);background:color-mix(in srgb,var(--text-primary) 8%,transparent)}.flat-bottom-panel__body{flex:1 1 auto;min-height:0;display:flex;background:var(--bg-primary)}.flat-bottom-panel__body>*{flex:1 1 auto;min-height:0}.flat-bottom-panel__placeholder{flex:1 1 auto;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:12px}@keyframes flat-tests-shake{0%,to{transform:rotate(0)}20%{transform:rotate(-14deg)}40%{transform:rotate(10deg)}60%{transform:rotate(-7deg)}80%{transform:rotate(4deg)}}@keyframes flat-tests-glow{0%,to{box-shadow:0 0 0 1px #8be9fd4d}50%{box-shadow:0 0 6px 1px #8be9fdb3}}
@@ -0,0 +1,2 @@
1
+ import{r as i,aX as Ra,aY as ca,Q as _a,aZ as wa,j as e,a_ as va,a$ as Oa,u as ia,b0 as Fa,b1 as Ba,b2 as ja,b3 as Wa,b4 as Ha,ak as Ua,b5 as Ga,b6 as Xa,aD as Ca,m as qt,S as E,z as Yt,b7 as aa,b8 as da,b9 as Lt,ba as he,bb as Va,s as b,L as ka,a1 as ya,f as Na,bc as qa,bd as ua,be as ma,I as d,bf as Ya,bg as na,aG as Sa,bh as Ka,t as Aa,ae as Ea,bi as Ia,bj as Za,bk as Ja,bl as Qa,aj as en,bm as tn,bn as an,bo as nn,aJ as sn,aK as ln,aL as rn,bp as on,bq as cn,br as sa,_ as dn,V as un,bs as mn,bt as pn,bu as fn,bv as hn,bw as gn,bx as xn,by as bn,bz as _n,bA as Kt,bB as pa,bC as wn,bD as vn,bE as jn,E as Cn,bF as kn,bG as yn,bH as Nn,bI as Sn,bJ as An,bK as En,bL as it,bM as In,bN as Mn,bO as Tn,bP as Ln,bQ as ft,bR as Pn,bS as $n,bT as Dn,bU as zn,n as Rn,D as On,p as Zt,C as Fn}from"./main-33HX-Nre.js";import{g as Bn}from"./area-logos-DKkCiybZ.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DYBBrXTx.js";function Wn(r){const l=i.useRef(r);l.current=r,i.useEffect(()=>{if(!Ra())return;let u=null,f=!1;return ca.addListener("backButton",()=>{l.current()==="exit"&&ca.exitApp()}).then(g=>{f?g.remove():u=g}),()=>{f=!0,u&&(u.remove(),u=null)}},[])}async function Hn(r){const l=_a(),u=await fetch(`${wa()}/api/agents/${r}/terminal`,{method:"POST",headers:{Authorization:`Bearer ${l}`}});if(!u.ok){const f=await u.json().catch(()=>({}));throw new Error((f==null?void 0:f.error)||`Failed to start terminal (${u.status})`)}return u.json()}async function Un(r){const l=_a();await fetch(`${wa()}/api/agents/${r}/terminal`,{method:"DELETE",headers:{Authorization:`Bearer ${l}`}})}const ht=new Map;function Gn({agentId:r}){const[l,u]=i.useState(null),[f,g]=i.useState(null);return i.useEffect(()=>{let C=!1;const j=ht.get(r);return j&&(clearTimeout(j),ht.delete(r)),u(null),g(null),Hn(r).then(N=>{C||u(N.url)}).catch(N=>{C||g(N instanceof Error?N.message:"Failed to start terminal")}),()=>{C=!0;const N=ht.get(r);N&&clearTimeout(N),ht.set(r,setTimeout(()=>{ht.delete(r),Un(r)},2500))}},[r]),f?e.jsx("div",{className:"flat-classic-terminal flat-classic-terminal--message",children:e.jsx("span",{children:f})}):l?e.jsx("div",{className:"flat-classic-terminal",children:e.jsx(va,{terminalUrl:l,visible:!0})}):e.jsx("div",{className:"flat-classic-terminal flat-classic-terminal--message",children:e.jsx("span",{children:"Attaching to interactive session…"})})}const Dt=new Map,Jt=new Map,Xn=6e4;function Vn(r){return r.provider==="pi"?r.quotaWindows.length>0||r.rateLimits!==null:r.provider==="opencode"?r.plan==="free"||r.quotaWindows.length>0:r.rateLimits!==null}function qn(r,l,u=!1){const f=Dt.get(l);if(!u&&f&&Vn(f.snapshot)&&Date.now()-f.fetchedAt<Xn)return Promise.resolve(f.snapshot);const g=Jt.get(l);if(g)return g;const C=Ba(r).then(j=>(Dt.set(l,{snapshot:j,fetchedAt:Date.now()}),j)).finally(()=>Jt.delete(l));return Jt.set(l,C),C}function Ma(r,l=!0,u=0,f=""){const g=f?`${r}:${f}`:r,[C,j]=i.useState(()=>{var Z;return((Z=Dt.get(g))==null?void 0:Z.snapshot)??null}),[N,L]=i.useState(g),[v,o]=i.useState(l&&!C),[M,z]=i.useState(null);i.useEffect(()=>{var Oe;if(!l){j(null),L(g),o(!1),z(null);return}let Z=!1;const Q=((Oe=Dt.get(g))==null?void 0:Oe.snapshot)??null;j(Q),L(g),o(!Q),z(null);const ee=(Fe=!1)=>{qn(r,g,Fe).then(J=>{Z||(j(J),L(g),o(!1),z(null))}).catch(J=>{Z||(o(!1),z(J.message||"Failed to load plan limits"))})};ee(!1);const Ne=u>0?window.setInterval(()=>ee(!0),u):null;return()=>{Z=!0,Ne!==null&&window.clearInterval(Ne)}},[r,g,l,u]);const K=N===g;return{snapshot:K?C:null,loading:K?v:l,error:K?M:null}}function Yn(r){var f,g,C,j,N,L,v;if(!r)return null;if(r.provider==="claude")return((f=r.rateLimits)==null?void 0:f.sevenDay)??null;if(r.provider==="codex")return((g=r.rateLimits)==null?void 0:g.weekly)??null;if(r.provider==="grok")return((C=r.rateLimits)==null?void 0:C.weekly)??null;if(r.provider==="opencode")return r.quotaWindows.find(o=>o.key==="weekly")??null;const l=r;return((j=l.quotaWindows)==null?void 0:j.find(o=>o.key==="weekly"))??((N=l.quotaWindows)==null?void 0:N.find(o=>o.key==="weekly-opus"))??((L=l.quotaWindows)==null?void 0:L.find(o=>o.key==="weekly-fable"))??((v=l.rateLimits)==null?void 0:v.sevenDay)??null}function fa(r){return Number.isFinite(r)?Math.abs(r)>=1e3?r.toLocaleString(void 0,{maximumFractionDigits:0}):r.toLocaleString(void 0,{maximumFractionDigits:2}):String(r)}function Kn(r,l){var g,C,j,N,L,v;const u=[];if((r.provider==="pi"||r.provider==="opencode")&&((g=r.quotaWindows)==null?void 0:g.length)>0){const o={session:l("terminal:usage.currentSession"),"five-hour":l("terminal:usage.fiveHourLimit"),daily:l("terminal:usage.dailyLimit"),weekly:l("terminal:usage.weeklyLimit"),"weekly-opus":l("terminal:usage.currentWeekOpus"),"weekly-fable":l("terminal:usage.currentWeekFable"),monthly:l("terminal:usage.monthlyLimit"),"on-demand":l("terminal:usage.onDemandLimit")};return r.quotaWindows.map(M=>({key:M.key,label:o[M.key]??M.key,window:M}))}if(!r.rateLimits)return u;if(r.provider==="claude"||r.provider==="pi"&&r.modelProvider==="anthropic"){const o=r,M=[{key:"fiveHour",label:l("terminal:usage.currentSession"),window:o.rateLimits.fiveHour},{key:"sevenDay",label:l("terminal:usage.currentWeekAll"),window:o.rateLimits.sevenDay},{key:"sevenDayOpus",label:l("terminal:usage.currentWeekOpus"),window:o.rateLimits.sevenDayOpus},{key:"sevenDayFable",label:l("terminal:usage.currentWeekFable"),window:o.rateLimits.sevenDayFable}];for(const z of M)(z.window||z.key==="sevenDayFable")&&u.push(z);return u}if(r.provider==="codex"){const o=r;return(C=o.rateLimits)!=null&&C.daily&&u.push({key:"daily",label:l("terminal:usage.dailyLimit"),window:o.rateLimits.daily}),(j=o.rateLimits)!=null&&j.weekly&&u.push({key:"weekly",label:l("terminal:usage.weeklyLimit"),window:o.rateLimits.weekly}),u}const f=r;return(N=f.rateLimits)!=null&&N.weekly&&u.push({key:"weekly",label:l("terminal:usage.weeklyLimit"),window:f.rateLimits.weekly}),(L=f.rateLimits)!=null&&L.monthly&&u.push({key:"monthly",label:l("terminal:usage.monthlyLimit"),window:f.rateLimits.monthly}),(v=f.rateLimits)!=null&&v.onDemand&&u.push({key:"onDemand",label:l("terminal:usage.onDemandLimit"),window:f.rateLimits.onDemand}),u}function Zn({agentId:r,usageScope:l,contextSummary:u}){const{t:f}=ia(["terminal","common"]),{snapshot:g,loading:C,error:j}=Ma(r,!0,0,l),N=g?Kn(g,f):[];return e.jsxs("div",{className:"plan-limits-tooltip",children:[u&&e.jsx("div",{className:"plan-limits-tooltip__context",children:u}),e.jsx("div",{className:"plan-limits-tooltip__title",children:f("terminal:usage.limits")}),C&&!g&&e.jsxs("div",{className:"plan-limits-tooltip__muted",children:[f("common:status.loading"),"…"]}),!C&&j&&!g&&e.jsx("div",{className:"plan-limits-tooltip__muted",children:f("terminal:usage.limitsError",{message:j})}),N.length>0?e.jsx("div",{className:"plan-limits-tooltip__gauges",children:N.map(({key:L,label:v,window:o})=>{const M=o?Math.max(0,Math.min(100,o.utilization)):0,z=ja(M),K=o!=null&&typeof o.used=="number"&&typeof o.limit=="number"&&Number.isFinite(o.used)&&Number.isFinite(o.limit);return e.jsxs("div",{className:"plan-limits-tooltip__gauge",children:[e.jsxs("div",{className:"plan-limits-tooltip__gauge-head",children:[e.jsx("span",{className:"plan-limits-tooltip__gauge-label",children:v}),e.jsx("span",{className:"plan-limits-tooltip__gauge-percent",style:{color:z},children:f("terminal:usage.percentUsed",{percent:Math.round(M)})})]}),e.jsx("div",{className:"plan-limits-tooltip__bar",children:e.jsx("div",{className:"plan-limits-tooltip__bar-fill",style:{width:`${M}%`,background:z}})}),e.jsxs("div",{className:"plan-limits-tooltip__reset",children:[o&&f("terminal:usage.resets",{time:Fa(o.resetsAt)}),K&&e.jsx("span",{style:{marginLeft:8},children:f("terminal:usage.creditsUsed",{used:fa(o.used),limit:fa(o.limit)})})]})]},L)})}):g&&!C&&e.jsx("div",{className:"plan-limits-tooltip__muted",children:g.rateLimitsError?f("terminal:usage.limitsError",{message:g.rateLimitsError}):g.cliHint})]})}function Jn({agentId:r,usageScope:l,disabled:u,contextSummary:f,children:g}){return e.jsx(Oa,{position:"top",maxWidth:320,disabled:u,className:"plan-limits-tooltip-wrapper",triggerStyle:{display:"inline-flex",alignItems:"center"},content:e.jsx(Zn,{agentId:r,usageScope:l,contextSummary:f}),children:g})}const Qn=i.memo(function({className:l=""}){const{t:u}=ia(["common"]),[f,g]=Wa(),C=i.useRef(null),[j,N]=i.useState(null);i.useLayoutEffect(()=>{const v=C.current;if(!v)return;const o=v.querySelector(".view-mode-toggle__btn--active");o&&N({left:o.offsetLeft,width:o.offsetWidth})},[f]);const L=i.useCallback(v=>{if(v!==f){if(typeof window<"u"&&window.dispatchEvent(new CustomEvent("tide:viewmode-switch-pressed",{detail:{mode:v}})),v==="3d"){requestAnimationFrame(()=>g(v));return}g(v)}},[f,g]);return e.jsxs("div",{className:`view-mode-toggle ${l}`,ref:C,children:[j&&e.jsx("div",{className:"view-mode-toggle__indicator",style:{left:j.left,width:j.width}}),Ha.map(v=>e.jsxs("button",{className:`view-mode-toggle__btn ${f===v?"view-mode-toggle__btn--active":""}`,onClick:()=>L(v),title:u(`common:viewMode.descriptions.${v}`),children:[e.jsxs("span",{className:"view-mode-toggle__icon",children:[v==="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"})]}),v==="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"})]}),v==="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"})]}),v==="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:u(`common:viewMode.labels.${v}`)})]},v))]})}),Pt=3,$t=280,ha=320,Qt=240,ga=64,es=["simple","chat","advanced"],xa={simple:"Simple",chat:"Chat",advanced:"Advanced"},ba={simple:"○",chat:"◐",advanced:"◉"},ts={simple:"Simple view — clean messages only",chat:"Chat view — assistant replies (no tool calls)",advanced:"Advanced view — everything including tools"},ea="flat-clear-context",Ta="tide:flat-embedded-panels";function La(){try{const r=localStorage.getItem(Ta),l=r?JSON.parse(r):{};return l&&typeof l=="object"?l:{}}catch{return{}}}function ta(r,l){try{const u=La();l?u[r]=l:delete u[r],localStorage.setItem(Ta,JSON.stringify(u))}catch{}}function as(r){const l=r.split("/").filter(Boolean);return l.length===0?r:l.slice(-2).join("/")}function ns(r){if(r.provider==="codex"){const C=r.codexModel||"gpt-5.6-luna",j=Rn[C];return{model:(j==null?void 0:j.label)||C}}if(r.provider==="opencode")return{model:r.opencodeModel||"opencode"};if(r.provider==="grok"){const C=r.grokModel||On,j=r.effort,N=j?Zt[j]:void 0;return{model:C,effort:N==null?void 0:N.label}}if(r.provider==="pi"){const C=r.piModel||"pi default",j=r.effort,N=j?Zt[j]:void 0;return{model:C,effort:N==null?void 0:N.label}}const l=r.model||r.detectedModel||"default",u=Fn[l],f=r.effort,g=f?Zt[f]:void 0;return{model:(u==null?void 0:u.label)||l,effort:g==null?void 0:g.label}}function ss(r,l){if(l.type==="rectangle"&&l.width&&l.height){const u=l.width/2,f=l.height/2;return r.x>=l.center.x-u&&r.x<=l.center.x+u&&r.z>=l.center.z-f&&r.z<=l.center.z+f}if(l.type==="circle"&&l.radius){const u=r.x-l.center.x,f=r.z-l.center.z;return u*u+f*f<=l.radius*l.radius}return!1}const is=un.memo(function({agentId:l,terminalViewMode:u,onTerminalViewModeChange:f,inspectorOpen:g,onToggleInspector:C,onShowTaskBoard:j,onImageClick:N,onFileClick:L,onBashClick:v,onViewMarkdown:o,onRequestClearSubordinates:M,keyboard:z,canNavigateBack:K,canNavigateForward:Z,onNavigateBack:Q,onNavigateForward:ee,agentInfoOpen:Ne,onToggleAgentInfo:Oe,onHeaderContextMenu:Fe,onBuildingContextMenu:J}){var Ye,Et,It;const p=ka(l),R=Na(),ge=mn(),xe=i.useRef(null),de=i.useRef(null),q=(p==null?void 0:p.provider)??"claude",Be=q==="claude"||q==="codex"||q==="opencode"||q==="grok"||q==="pi",Ze=q==="pi"?`${q}:${(p==null?void 0:p.piModelProvider)??""}:${(p==null?void 0:p.piModel)??""}`:q==="opencode"?`${q}:${(p==null?void 0:p.opencodeModel)??""}`:q,We=Ma(l,!!p&&Be,6e4,Ze);pn(!0,l);const lt=l,gt=p,Se=!!ge.interactiveMode&&((p==null?void 0:p.provider)??"claude")==="claude"&&!!(p!=null&&p.sessionId),[te,be]=i.useState(!1),[ae,ne]=i.useState(null),Ae=i.useMemo(()=>{const n=es.map(t=>{const a=!te&&u===t;return{id:`view-mode-${t}`,label:xa[t],icon:e.jsx("span",{className:"flat-terminal-wrapper__view-mode-icon",children:ba[t]}),shortcut:a?"✓":void 0,onClick:()=>{be(!1),f(t),ne(null)}}});return Se&&n.push({id:"view-mode-classic-tui",label:"Classic TUI",icon:e.jsx(d,{name:"terminal",size:13}),shortcut:te?"✓":void 0,onClick:()=>{be(t=>!t),ne(null)}}),n},[Se,te,u,f]),[xt,rt]=i.useState(!1),O=i.useCallback(()=>rt(!1),[]);Ca("flat-chat-actions",xt,O),i.useEffect(()=>{const n=()=>rt(t=>!t);return window.addEventListener("tide:toggle-chat-actions",n),()=>window.removeEventListener("tide:toggle-chat-actions",n)},[]),i.useEffect(()=>{be(!1),rt(!1)},[l]),i.useEffect(()=>{!Se&&te&&be(!1)},[Se,te]),i.useEffect(()=>{const n=de.current;if(!n)return;const t=s=>{s.button===3?(s.preventDefault(),s.stopPropagation(),Q()):s.button===4&&(s.preventDefault(),s.stopPropagation(),ee())},a=s=>{(s.button===3||s.button===4)&&s.preventDefault()};return n.addEventListener("mouseup",t),n.addEventListener("mousedown",a),()=>{n.removeEventListener("mouseup",t),n.removeEventListener("mousedown",a)}},[Q,ee]),i.useEffect(()=>{const n=de.current;if(!n)return;let t=0,a=0,s=0;const m=250,h=600,_=80,S=1.5,P=c=>{let A=c instanceof HTMLElement?c:null;for(;A&&A!==n;){const D=window.getComputedStyle(A).overflowX;if((D==="auto"||D==="scroll")&&A.scrollWidth>A.clientWidth)return!0;A=A.parentElement}return!1},k=c=>{const A=Date.now();if(A<s){c.preventDefault();return}if(Math.abs(c.deltaX)<=Math.abs(c.deltaY)*S){t=0;return}if(P(c.target)){t=0;return}A-a>m&&(t=0),a=A,t+=c.deltaX,t<=-_?(t=0,s=A+h,c.preventDefault(),Q()):t>=_&&(t=0,s=A+h,c.preventDefault(),ee())};return n.addEventListener("wheel",k,{passive:!1}),()=>n.removeEventListener("wheel",k)},[Q,ee]);const ue=ya(),_e=i.useMemo(()=>{if(!p)return null;const n=new Set,t=[];for(const a of ue.values())a.archived||a.directories.length===0||a.assignedAgentIds.includes(l)&&(n.add(a.id),t.push(a));for(const a of ue.values())a.archived||a.directories.length===0||n.has(a.id)||ss({x:p.position.x,z:p.position.z},a)&&(n.add(a.id),t.push(a));return t.length===0?null:t.flatMap(a=>a.directories.filter(s=>s&&s.trim().length>0).map(s=>({areaId:a.id,areaName:a.name,dir:s})))},[p,l,ue]),{branches:He,fetchRemote:se,fetchingDirs:Ue}=fn(_e),[me,Ee]=i.useState({}),[zt,bt]=i.useState(null),Ie=i.useMemo(()=>{var m,h;const n=b.getAreaForAgent(l);if(!n)return[];const t=[],a=(m=n.directories.find(_=>_&&_.trim().length>0))==null?void 0:m.trim(),s=a?a.split("/").filter(Boolean).pop()||a:n.name;t.push({id:hn(n.id),name:s,hasUrl:!!me[n.id],isDefault:!0});for(const _ of R.values())_.type==="terminal"&&b.isPositionInArea(_.position,n)&&t.push({id:_.id,name:_.name,hasUrl:!!((h=_.terminalStatus)!=null&&h.url)});return t},[l,R,ue,me]),we=i.useMemo(()=>{var a;const n=b.getAreaForAgent(l);if(!n)return[];const t=[];for(const s of R.values())s.type==="server"&&((a=s.pm2)!=null&&a.enabled)&&b.isPositionInArea(s.position,n)&&t.push({id:s.id,name:s.name});return t},[l,R]),Je=i.useMemo(()=>{const n=b.getAreaForAgent(l);if(!n)return[];const t=[];for(const a of R.values())a.type==="database"&&a.database&&b.isPositionInArea(a.position,n)&&t.push({id:a.id,name:a.name});return t},[l,R]),_t=gn(),ie=i.useMemo(()=>{const n=b.getAreaForAgent(l);if(!n)return[];const t=[];for(const a of R.values())if(a.type==="tests"&&b.isPositionInArea(a.position,n)){const s=!!a.folderPath&&_t.some(m=>xn(m,a.folderPath));t.push({id:a.id,name:a.name,working:s})}return t},[l,R,_t]),Qe=i.useMemo(()=>{const n=b.getAreaForAgent(l);if(!n)return[];const t=[];for(const a of R.values())a.type==="http"&&b.isPositionInArea(a.position,n)&&t.push({id:a.id,name:a.name});return t},[l,R]),[,et]=i.useReducer(n=>n+1,0),ve=((Ye=xe.current)==null?void 0:Ye.search.searchMode)??!1,tt=i.useCallback(()=>{var n;(n=xe.current)==null||n.search.toggleSearch(),et()},[]),ot=bn(),Me=ot.isPending(ea),[w,Te]=i.useState(null),F=w?R.get(w.buildingId):null,[wt,Le]=i.useState(""),[Ge,Rt]=i.useState(()=>_n()),B=i.useMemo(()=>{var n;return((n=b.getAreaForAgent(l))==null?void 0:n.id)??null},[l,R]),U=i.useCallback((n,t)=>{Le(""),Te(a=>{const s=(a==null?void 0:a.buildingId)===t?null:{type:n,buildingId:t};return B&&ta(B,s),s})},[B]),$=i.useCallback(()=>{Le(""),Te(null),B&&ta(B,null)},[B]);i.useEffect(()=>{if((w==null?void 0:w.type)!=="pm2-logs")return;const n=w.buildingId;return b.startLogStreaming(n,200),()=>b.stopLogStreaming(n)},[w]),i.useEffect(()=>{if(bt(null),(w==null?void 0:w.type)!=="terminal"||!Kt(w.buildingId))return;const n=pa(w.buildingId);let t=!1;return wn(n).then(a=>{t||Ee(s=>s[n]===a.url?s:{...s,[n]:a.url})}).catch(a=>{t||bt(a instanceof Error?a.message:"Failed to start terminal")}),()=>{t=!0}},[w]);const{height:at,onResizeStart:vt}=vn(),{sidePanelWidth:Ot,handleSidePanelResizeStart:Ft}=jn(),[Pe,jt]=i.useState(()=>aa(E.GIT_PANEL_OPEN,!1)),[pe,$e]=i.useState(()=>aa(E.BUILDINGS_PANEL_OPEN,!1)),[fe,je]=i.useState(!1),Ct=i.useCallback(()=>{je(n=>!n)},[]),le=i.useCallback(()=>je(!1),[]),Ce=i.useCallback(()=>{jt(n=>{const t=!n;return he(E.GIT_PANEL_OPEN,t),t})},[]),kt=i.useCallback(()=>{$e(n=>{const t=!n;return he(E.BUILDINGS_PANEL_OPEN,t),t})},[]),Bt=i.useCallback(()=>{jt(!1),he(E.GIT_PANEL_OPEN,!1)},[]),ct=i.useCallback(()=>{$e(!1),he(E.BUILDINGS_PANEL_OPEN,!1)},[]),yt=Cn(),De=i.useMemo(()=>({terminal:Ie,"pm2-logs":we,database:Je,tests:ie,http:Qe}),[Ie,we,Je,ie,Qe]);i.useEffect(()=>{if(!w)return;De[w.type].some(t=>t.id===w.buildingId)||(Le(""),Te(null))},[w,De]);const Nt=i.useRef(void 0);i.useEffect(()=>{var t;if(Nt.current===B)return;Nt.current=B;const n=B?La()[B]:void 0;Le(""),n&&((t=De[n.type])!=null&&t.some(a=>a.id===n.buildingId))?Te(n):Te(null)},[B,De]),i.useEffect(()=>{const n=t=>{var m;const a=t.detail;if(!(a!=null&&a.buildingId)||!(a!=null&&a.type)||!((m=De[a.type])!=null&&m.some(h=>h.id===a.buildingId)))return;a.handled=!0,Le("");const s={type:a.type,buildingId:a.buildingId};Te(s),B&&ta(B,s)};return window.addEventListener("tide:dock-building-flat",n),()=>window.removeEventListener("tide:dock-building-flat",n)},[De,B]);const[Xe,H]=i.useState(!1),ze=i.useRef(null);if(i.useEffect(()=>{if(!Xe)return;const n=t=>{ze.current&&!ze.current.contains(t.target)&&H(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[Xe]),!p)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 nt=!!p.contextStats,{totalTokens:Wt,contextWindow:dt,usedPercent:re}=Sa(p),st=Math.round(re*10)/10,St=re>=80?"#ff4a4a":re>=60?"#ff9e4a":re>=40?"#ffd700":"#4aff9e",Ve=(Wt/1e3).toFixed(1),ut=(dt/1e3).toFixed(1),Ht=kn(dt),G=Yn(We.snapshot),Re=G?Math.max(0,Math.min(100,G.utilization)):null,mt=((Et=We.snapshot)==null?void 0:Et.provider)==="opencode"&&We.snapshot.plan==="free",At=mt?"#4aff9e":Re===null?"var(--text-muted)":ja(Re),Ut=mt?"Free":Re===null?We.loading?"…":"—":`${Math.round(Re)}%`,oe=p.cwd,qe=oe?as(oe):null,ke=((It=p.subordinateIds)==null?void 0:It.length)||0,Y=ke>0;return e.jsxs("div",{ref:de,className:`flat-terminal-wrapper ${Pe||pe||fe?"flat-terminal-wrapper--with-side-panel":""}`,style:{"--guake-side-panel-width":`min(${Ot}px, 70%)`},children:[e.jsxs("div",{className:"flat-terminal-wrapper__header",children:[e.jsxs("div",{className:`flat-terminal-wrapper__header-main ${Ne?"flat-terminal-wrapper__header-main--active":""}`,onClick:Oe,onContextMenu:n=>{n.preventDefault(),n.stopPropagation(),Fe({x:n.clientX,y:n.clientY})},title:Ne?"Hide agent info":"Show agent info",children:[e.jsxs("span",{className:`flat-terminal-wrapper__header-avatar${p.status==="working"?" is-working":""}`,children:[e.jsx(Aa,{agent:p,size:28}),p.status==="working"&&e.jsx(na,{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:p.name}),e.jsx(yn,{name:p.name,id:p.id})]}),e.jsx("span",{className:"flat-terminal-wrapper__header-status",style:{color:Ia(p.status)},title:p.status==="error"&&p.lastError?p.lastError:void 0,children:p.status})]}),p.taskLabel&&e.jsxs("span",{className:"flat-terminal-wrapper__header-task",title:p.taskLabel,children:["📋 ",p.taskLabel]}),e.jsxs("span",{className:"flat-terminal-wrapper__header-model",children:[e.jsx(Ea,{agent:p,alt:`${p.name} provider`,className:"flat-terminal-wrapper__header-provider-icon"}),(()=>{const{model:n,effort:t}=ns(p);return e.jsxs("span",{className:"flat-terminal-wrapper__header-model-chip",title:t?`Model: ${n} · Effort: ${t}`:`Model: ${n}`,children:[e.jsx("span",{className:"flat-terminal-wrapper__header-model-name",children:n}),t&&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:t})]})]})})()]})]}),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${ae?" flat-terminal-wrapper__view-mode-trigger--open":""}`,onClick:n=>{const t=n.currentTarget.getBoundingClientRect();ne({x:t.left,y:t.bottom+4})},title:te?"Classic TUI — attach to the live interactive claude session in a terminal":ts[u],"aria-haspopup":"menu","aria-expanded":!!ae,"aria-label":"Message view mode",children:[e.jsx("span",{className:"flat-terminal-wrapper__view-mode-icon","aria-hidden":"true",children:te?e.jsx(d,{name:"terminal",size:13}):ba[u]}),e.jsx("span",{className:"flat-terminal-wrapper__view-mode-label",children:te?"Classic TUI":xa[u]}),e.jsx(d,{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:Q,disabled:!K,title:"Back to previous agent","aria-label":"Back to previous agent",children:e.jsx(d,{name:"arrow-left",size:14})}),e.jsx("button",{type:"button",className:"flat-terminal-wrapper__action-btn",onClick:ee,disabled:!Z,title:"Forward to next agent","aria-label":"Forward to next agent",children:e.jsx(d,{name:"arrow-right",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${ve?"flat-terminal-wrapper__action-btn--active":""}`,onClick:tt,title:ve?"Close search":"Search messages","aria-pressed":ve,children:e.jsx(d,{name:ve?"cross":"search",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn flat-terminal-wrapper__action-btn--danger ${Me?"flat-terminal-wrapper__action-btn--confirm":""}`,onClick:()=>ot.handleClick(ea,()=>{var n;b.clearContext(l),(n=xe.current)==null||n.historyLoader.clearHistory()}),title:Me?"Click again to confirm clear context":"Clear context",children:e.jsx(d,{name:Me?"question":"clear",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${Pe?"flat-terminal-wrapper__action-btn--active":""}`,onClick:Ce,title:Pe?"Hide git panel":"Show git changes","aria-pressed":Pe,children:e.jsx(d,{name:"git-branch",size:14})}),e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${pe?"flat-terminal-wrapper__action-btn--active":""}`,onClick:kt,title:pe?"Hide buildings panel":"Show area buildings","aria-pressed":pe,children:e.jsx(d,{name:"buildings",size:14})}),e.jsxs("div",{className:"flat-terminal-wrapper__more",ref:ze,children:[e.jsx("button",{type:"button",className:`flat-terminal-wrapper__action-btn ${Xe?"flat-terminal-wrapper__action-btn--active":""}`,onClick:()=>H(n=>!n),title:"More actions","aria-expanded":Xe,children:"⋮"}),Xe&&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 ${fe?"flat-terminal-wrapper__more-item--active":""}`,onClick:()=>{Ct(),H(!1)},title:fe?"Hide Debug Panel":"Show Debug Panel",children:[e.jsx(d,{name:"bug",size:14}),e.jsx("span",{children:fe?"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:()=>{b.collapseContext(l),H(!1)},disabled:p.status!=="idle",title:p.status!=="idle"?"Agent must be idle to collapse context":"Collapse context",children:[e.jsx(d,{name:"package",size:14}),e.jsx("span",{children:"Collapse context"})]}),Y&&e.jsxs("button",{type:"button",role:"menuitem",className:"flat-terminal-wrapper__more-item flat-terminal-wrapper__more-item--danger",onClick:()=>{M(l,ke),H(!1)},children:[e.jsx(d,{name:"crown",size:14}),e.jsxs("span",{children:["Clear ",ke," subordinate",ke===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:()=>{b.killAgent(l),H(!1)},children:[e.jsx(d,{name:"cross",size:14}),e.jsx("span",{children:"Remove agent"})]})]})]})]}),e.jsxs("button",{type:"button",className:`flat-terminal-wrapper__inspector-toggle ${g?"flat-terminal-wrapper__inspector-toggle--active":""}`,onClick:C,title:g?"Hide inspector panel":"Show inspector panel","aria-label":g?"Hide inspector panel":"Show inspector panel","aria-pressed":g,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:()=>b.deselectAll(),title:"Close chat","aria-label":"Close chat",children:e.jsx(d,{name:"cross",size:14})})]})]}),xt&&e.jsxs("div",{className:"flat-chat-actions-sheet-root",role:"presentation",children:[e.jsx("div",{className:"flat-chat-actions-sheet__backdrop",onClick:O}),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:p.name}),e.jsx("button",{type:"button",className:"flat-chat-actions-sheet__done",onClick:O,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 ${ve?"is-active":""}`,onClick:()=>{tt(),O()},children:[e.jsx(d,{name:ve?"cross":"search",size:20}),e.jsx("span",{children:ve?"Close search":"Search"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${Pe?"is-active":""}`,onClick:()=>{Ce(),O()},children:[e.jsx(d,{name:"git-branch",size:20}),e.jsx("span",{children:"Git changes"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${pe?"is-active":""}`,onClick:()=>{kt(),O()},children:[e.jsx(d,{name:"buildings",size:20}),e.jsx("span",{children:"Buildings"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:`flat-chat-actions-sheet__item ${fe?"is-active":""}`,onClick:()=>{Ct(),O()},children:[e.jsx(d,{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 ${Me?"is-armed":""}`,onClick:()=>ot.handleClick(ea,()=>{var n;b.clearContext(l),(n=xe.current)==null||n.historyLoader.clearHistory(),O()}),children:[e.jsx(d,{name:Me?"question":"clear",size:18}),e.jsx("span",{children:Me?"Tap again to confirm clear":"Clear context"})]}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-chat-actions-sheet__row",disabled:p.status!=="idle",onClick:()=>{b.collapseContext(l),O()},children:[e.jsx(d,{name:"package",size:18}),e.jsx("span",{children:"Collapse context"})]}),Y&&e.jsxs("button",{type:"button",role:"menuitem",className:"flat-chat-actions-sheet__row flat-chat-actions-sheet__row--danger",onClick:()=>{M(l,ke),O()},children:[e.jsx(d,{name:"crown",size:18}),e.jsxs("span",{children:["Clear ",ke," subordinate",ke===1?"":"s"]})]}),e.jsxs("button",{type:"button",role:"menuitem",className:"flat-chat-actions-sheet__row flat-chat-actions-sheet__row--danger",onClick:()=>{b.killAgent(l),O()},children:[e.jsx(d,{name:"cross",size:18}),e.jsx("span",{children:"Remove agent"})]})]})]})]}),e.jsx(Nn,{agent:p,onClick:j}),te&&Se?e.jsx(Gn,{agentId:l}):lt&&gt?e.jsx(Sn,{ref:xe,agentId:lt,agent:gt,viewMode:u,isOpen:!0,onImageClick:N,onFileClick:L,onBashClick:v,onViewMarkdown:o,keyboard:z,hasModalOpen:!1},lt):null,w&&(F||Kt(w.buildingId))&&(()=>{var S,P;const n=w.type,t=Kt(w.buildingId),a=(F==null?void 0:F.name)??`Terminal — ${((S=Ie.find(k=>k.id===w.buildingId))==null?void 0:S.name)??"area"}`,s=t?me[pa(w.buildingId)]:(P=F==null?void 0:F.terminalStatus)==null?void 0:P.url,m={terminal:"terminal","pm2-logs":"scroll",database:"hard-drives",tests:"flask",http:"globe"},h=n==="terminal"&&!s,_=!h&&!t;return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"guake-bottom-terminal-resize",onMouseDown:vt,role:"separator","aria-orientation":"horizontal","aria-label":"Resize embedded panel"}),e.jsxs("div",{className:"flat-bottom-panel",role:"region","aria-label":`${a} panel`,style:{height:at},children:[e.jsxs("div",{className:"flat-bottom-panel__header",children:[e.jsxs("span",{className:"flat-bottom-panel__title",children:[e.jsx(d,{name:m[n],size:12}),e.jsx("span",{children:a}),h&&e.jsx("span",{className:"flat-bottom-panel__muted",children:"(starting...)"})]}),e.jsxs("span",{className:"flat-bottom-panel__header-actions",children:[n==="pm2-logs"&&F&&e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",className:"guake-bottom-terminal-filter",value:wt,onChange:k=>Le(k.target.value),placeholder:"Filter logs","aria-label":`Filter logs for ${F.name}`,spellCheck:!1}),e.jsx("select",{className:"guake-bottom-terminal-retention",value:Ge===null?"unlimited":String(Ge),onChange:k=>{const c=k.target.value==="unlimited"?null:Number(k.target.value);Rt(c),En(c)},"aria-label":`Max log retention for ${F.name}`,children:An.map(k=>e.jsx("option",{value:k===null?"unlimited":String(k),children:k===null?"Unlimited":`${k.toLocaleString()} lines`},k===null?"unlimited":k))}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>b.clearStreamingLogs(w.buildingId),title:"Clear logs",children:e.jsx(d,{name:"trash",size:12})}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>b.sendBuildingCommand(w.buildingId,"restart"),title:"Restart",children:e.jsx(d,{name:"restart",size:12})})]}),_&&e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:()=>{$(),it(w.buildingId)},title:"Maximize — open as modal","aria-label":"Open as modal",children:e.jsx(d,{name:"fullscreen",size:12})}),e.jsx("button",{type:"button",className:"flat-bottom-panel__close",onClick:$,title:"Close panel","aria-label":"Close panel",children:e.jsx(d,{name:"cross",size:12})})]})]}),e.jsx("div",{className:"flat-bottom-panel__body",children:n==="terminal"?s?e.jsx(va,{terminalUrl:s,visible:!0}):e.jsx("div",{className:"flat-bottom-panel__placeholder",children:zt??"Starting terminal..."}):n==="pm2-logs"?e.jsx(In,{buildingId:w.buildingId,filterText:wt,maxRetention:Ge}):F?n==="database"?e.jsx(Mn,{building:F}):n==="tests"?e.jsx("div",{className:"tests-panel-host",children:e.jsx(Tn,{building:F,autoFocusSearch:!1})}):e.jsx("div",{className:"http-requests-panel-host",children:e.jsx(Ln,{building:F,autoFocusSearch:!1})}):null})]})]})})(),e.jsxs("div",{className:"flat-terminal-wrapper__statusbar",role:"contentinfo",children:[p.isDetached&&e.jsxs("span",{className:"flat-terminal-wrapper__detached",title:"Reattaching session...",children:[e.jsx(d,{name:"refresh",size:12}),e.jsx("span",{children:"Reattaching"})]}),oe&&qe&&e.jsxs("span",{className:"flat-terminal-wrapper__cwd",title:`Open in file explorer: ${oe}`,"aria-label":`Open ${oe} in file explorer`,role:"button",tabIndex:0,onClick:()=>b.openFileExplorer(oe),onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),b.openFileExplorer(oe))},children:[e.jsx("span",{className:"flat-terminal-wrapper__cwd-icon",children:e.jsx(d,{name:"folder",size:12})}),e.jsx("span",{className:"flat-terminal-wrapper__cwd-text",children:qe})]}),_e&&_e.map(({areaId:n,areaName:t,dir:a})=>{const s=He.get(a),m=Ue.has(a),h=a.split("/").filter(Boolean).pop()||a;return e.jsxs("span",{className:"flat-terminal-wrapper__area-dir",title:`${t}: ${a}${s?` (${s.branch}${s.ahead?` ↑${s.ahead}`:""}${s.behind?` ↓${s.behind}`:""})`:""}`,onClick:()=>b.openFileExplorerForAreaFolder(n,a),children:[e.jsx(d,{name:"folder-open",size:12}),e.jsx("span",{className:"flat-terminal-wrapper__area-dir-name",children:h}),s&&e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"flat-terminal-wrapper__area-dir-branch",children:[e.jsx(d,{name:"git-branch",size:10})," ",s.branch]}),s.ahead>0&&e.jsxs("span",{className:"flat-terminal-wrapper__branch-ahead",title:`${s.ahead} ahead`,children:[e.jsx(d,{name:"arrow-up",size:9}),s.ahead]}),s.behind>0&&e.jsxs("span",{className:"flat-terminal-wrapper__branch-behind",title:`${s.behind} behind`,children:[e.jsx(d,{name:"arrow-down",size:9}),s.behind]}),e.jsx("span",{className:`flat-terminal-wrapper__area-fetch ${m?"flat-terminal-wrapper__area-fetch--fetching":""}`,title:"Git fetch",onClick:_=>{_.stopPropagation(),se(a)},children:e.jsx(d,{name:m?"hourglass":"download",size:12})})]})]},`${n}:${a}`)}),e.jsx(Jn,{agentId:l,usageScope:Ze,disabled:!Be,contextSummary:nt?`Context: ${Ve}k / ${ut}k tokens (${st}% used)`:void 0,children:e.jsxs("span",{className:"flat-terminal-wrapper__context",tabIndex:0,role:"button",onClick:()=>b.setContextModalAgentId(l),onKeyDown:n=>{(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),b.setContextModalAgentId(l))},title:Be?void 0:nt?`Context usage: ${Ve}k / ${ut}k tokens (${st}% 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: ${Ve}k / ${ut}k tokens (${st}% used)`,children:[e.jsxs("span",{className:"flat-terminal-wrapper__usage-label",children:["Ctx ",e.jsx("span",{className:"flat-terminal-wrapper__usage-window",children:Ht})]}),e.jsx("span",{className:"flat-terminal-wrapper__context-bar",children:e.jsx("span",{className:"flat-terminal-wrapper__context-bar-fill",style:{width:`${re}%`,backgroundColor:St}})}),e.jsxs("span",{className:"flat-terminal-wrapper__usage-value",style:{color:St},children:[Math.round(re),"%"]})]}),e.jsxs("span",{className:"flat-terminal-wrapper__usage-gauge",title:G?`Weekly usage: ${Math.round(Re)}% used`:mt?"OpenCode free-model capacity is dynamic; no weekly quota is published":We.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:`${Re??0}%`,backgroundColor:At}})}),e.jsx("span",{className:"flat-terminal-wrapper__usage-value",style:{color:At},children:Ut})]})]}),!nt&&e.jsx("span",{className:"flat-terminal-wrapper__context-warning",title:"No context stats yet",children:e.jsx(d,{name:"warn",size:12})})]})}),e.jsx("div",{className:"flat-terminal-wrapper__statusbar-spacer","aria-hidden":"true"}),Ie.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area terminals",children:Ie.map(n=>{const t=(w==null?void 0:w.buildingId)===n.id;return n.isDefault?e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn flat-terminal-wrapper__building-btn--default ${t?"flat-terminal-wrapper__building-btn--active":""}`,title:`${t?"Hide":"Show"} area terminal: ${n.name}`,onClick:()=>{t?$():U("terminal",n.id)},children:e.jsx(d,{name:"terminal",size:14})},n.id):e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${t?"flat-terminal-wrapper__building-btn--active":""} ${n.hasUrl?"":"flat-terminal-wrapper__building-btn--offline"}`,title:`${t?"Hide":"Show"} terminal: ${n.name}${n.hasUrl?"":" (starting...)"}`,onClick:()=>{if(t){$();return}if(n.hasUrl&&ft(n.id)==="modal"){it(n.id);return}n.hasUrl||b.sendBuildingCommand(n.id,"start"),U("terminal",n.id)},onContextMenu:a=>{a.preventDefault(),a.stopPropagation(),J(n.id,{x:a.clientX,y:a.clientY})},children:e.jsx(d,{name:"terminal",size:14})},n.id)})}),we.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area PM2 logs",children:we.map(n=>{const t=(w==null?void 0:w.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${t?"flat-terminal-wrapper__building-btn--active":""}`,title:`${t?"Hide":"Show"} logs: ${n.name}`,onClick:()=>{t?$():ft(n.id)==="modal"?it(n.id):U("pm2-logs",n.id)},onContextMenu:a=>{a.preventDefault(),a.stopPropagation(),J(n.id,{x:a.clientX,y:a.clientY})},children:e.jsx(d,{name:"scroll",size:14})},n.id)})}),Je.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area databases",children:Je.map(n=>{const t=(w==null?void 0:w.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${t?"flat-terminal-wrapper__building-btn--active":""}`,title:`${t?"Hide":"Show"} database: ${n.name}`,onClick:()=>{t?$():ft(n.id)==="modal"?it(n.id):U("database",n.id)},onContextMenu:a=>{a.preventDefault(),a.stopPropagation(),J(n.id,{x:a.clientX,y:a.clientY})},children:e.jsx(d,{name:"hard-drives",size:14})},n.id)})}),ie.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area tests",children:ie.map(n=>{const t=(w==null?void 0:w.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${t?"flat-terminal-wrapper__building-btn--active":""} ${n.working?"flat-terminal-wrapper__building-btn--tests-working":""}`,title:n.working?`Running tests: ${n.name}`:`${t?"Hide":"Show"} tests: ${n.name}`,onClick:()=>{t?$():ft(n.id)==="modal"?it(n.id):U("tests",n.id)},onContextMenu:a=>{a.preventDefault(),a.stopPropagation(),J(n.id,{x:a.clientX,y:a.clientY})},children:e.jsx(d,{name:"flask",size:14})},n.id)})}),Qe.length>0&&e.jsx("span",{className:"flat-terminal-wrapper__buildings",role:"group","aria-label":"Area HTTP requests",children:Qe.map(n=>{const t=(w==null?void 0:w.buildingId)===n.id;return e.jsx("button",{type:"button",className:`flat-terminal-wrapper__building-btn ${t?"flat-terminal-wrapper__building-btn--active":""}`,title:`${t?"Hide":"Show"} HTTP requests: ${n.name}`,onClick:()=>{t?$():ft(n.id)==="modal"?it(n.id):U("http",n.id)},onContextMenu:a=>{a.preventDefault(),a.stopPropagation(),J(n.id,{x:a.clientX,y:a.clientY})},children:e.jsx(d,{name:"globe",size:14})},n.id)})}),e.jsx("div",{className:"flat-terminal-wrapper__theme",children:e.jsx(Pn,{iconOnly:!0})})]}),Pe&&e.jsx($n,{agentId:l,agents:yt,onClose:Bt,branchInfoMap:He,fetchRemote:se,fetchingDirs:Ue,onResizeStart:n=>Ft(n,"right")}),pe&&e.jsx(Dn,{agentId:l,onClose:ct}),fe&&e.jsx(zn,{agentId:l,onClose:le}),e.jsx(sa,{isOpen:ae!==null,position:ae??{x:0,y:0},worldPosition:{x:0,z:0},actions:Ae,onClose:()=>ne(null)})]})}),ls={groups:[],gridCols:1,gridRows:1,positions:new Map};function us({onAgentClick:r,onBuildingClick:l,onBuildingDoubleClick:u,onBuildingPopup:f,onAreaContextMenu:g,onOpenSpawnModal:C,onOpenBossSpawnModal:j,onOpenAreaModal:N}){const{t:L}=ia(["common"]),v=Ua(),o=i.useMemo(()=>v.size>0?v.values().next().value??null:null,[v]),M=Ga(o===null),z=Xa(),[K,Z]=i.useState(null),[Q,ee]=i.useState(null),[Ne,Oe]=i.useState(null);Ca("flatview-image-modal",K!==null,()=>Z(null));const[Fe,J]=i.useState(null),[p,R]=i.useState(null),[ge,xe]=i.useState(null),[de,q]=i.useState(null),[Be,Ze]=i.useState(!1),We=i.useCallback(()=>{Ze(t=>!t)},[]),lt=i.useCallback(()=>{Ze(!1)},[]),[gt,Se]=i.useState(()=>{const t=qt(E.VIEW_MODE);return t==="simple"||t==="chat"||t==="advanced"?t:"simple"}),te=i.useCallback(t=>{Se(t),Yt(E.VIEW_MODE,t)},[]);i.useEffect(()=>{const t=a=>{if(a.key!==E.VIEW_MODE)return;const s=a.newValue;(s==="simple"||s==="chat"||s==="advanced")&&Se(s)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[]);const[be,ae]=i.useState(()=>aa(E.FLAT_INSPECTOR_OPEN,!1)),[ne,Ae]=i.useState(!1),xt=i.useCallback(()=>Ae(t=>!t),[]),rt=i.useCallback(()=>Ae(!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:be}}))},[be]),i.useEffect(()=>{const t=()=>Ae(_=>!_),a=()=>{ae(_=>{const S=!_;return he(E.FLAT_INSPECTOR_OPEN,S),S})},s=()=>{Ae(!1),ae(!1),he(E.FLAT_INSPECTOR_OPEN,!1)},m=()=>Ae(!1),h=()=>{ae(!1),he(E.FLAT_INSPECTOR_OPEN,!1)};return window.addEventListener("tide-toggle-flat-agents-drawer",t),window.addEventListener("tide-toggle-flat-inspector",a),window.addEventListener("tide-close-flat-side-views",s),window.addEventListener("tide-close-flat-agents-drawer-only",m),window.addEventListener("tide-close-flat-inspector-only",h),()=>{window.removeEventListener("tide-toggle-flat-agents-drawer",t),window.removeEventListener("tide-toggle-flat-inspector",a),window.removeEventListener("tide-close-flat-side-views",s),window.removeEventListener("tide-close-flat-agents-drawer-only",m),window.removeEventListener("tide-close-flat-inspector-only",h)}},[]);const O=i.useRef(null),ue=i.useRef(null),[_e,He]=i.useState(()=>{const t=da(E.FLAT_MIDDLE_WIDTH,0);return t>=$t?t:null}),[se,Ue]=i.useState(()=>{const t=da(E.FLAT_INSPECTOR_WIDTH,0);return t>=Qt?t:null}),me=i.useCallback(t=>{if(typeof window>"u")return t;const a=se!==null?Pt+se:0,s=window.innerWidth-ga-Pt-ha-a;return Math.max($t,Math.min(Math.max(s,$t),t))},[se]),Ee=i.useCallback(t=>{var h;if(typeof window>"u")return t;const a=(h=O.current)==null?void 0:h.querySelector(".flat-middle"),s=(a==null?void 0:a.getBoundingClientRect().width)??$t,m=window.innerWidth-ga-s-Pt-ha-Pt;return Math.max(Qt,Math.min(Math.max(m,Qt),t))},[]);i.useEffect(()=>{if(_e===null&&se===null)return;const t=()=>{He(a=>{if(a===null)return a;const s=me(a);return s===a?a:s}),Ue(a=>{if(a===null)return a;const s=Ee(a);return s===a?a:s})};return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[_e,se,me,Ee]);const zt=i.useCallback(t=>{var s;if(t.button!==0)return;const a=(s=O.current)==null?void 0:s.querySelector(".flat-middle");a&&(t.currentTarget.setPointerCapture(t.pointerId),ue.current={kind:"middle",startX:t.clientX,startWidth:a.getBoundingClientRect().width,pointerId:t.pointerId},document.body.classList.add("flat-splitter-dragging"))},[]),bt=i.useCallback(t=>{var s;if(t.button!==0)return;const a=(s=O.current)==null?void 0:s.querySelector(".flat-inspector");a&&(t.currentTarget.setPointerCapture(t.pointerId),ue.current={kind:"inspector",startX:t.clientX,startWidth:a.getBoundingClientRect().width,pointerId:t.pointerId},document.body.classList.add("flat-splitter-dragging"))},[]),Ie=i.useCallback(t=>{const a=ue.current;if(!a||t.pointerId!==a.pointerId)return;const s=t.clientX-a.startX;a.kind==="middle"?He(me(a.startWidth+s)):Ue(Ee(a.startWidth-s))},[me,Ee]),we=i.useCallback(t=>{const a=ue.current;if(!a||t.pointerId!==a.pointerId)return;try{t.currentTarget.releasePointerCapture(t.pointerId)}catch{}if(ue.current=null,document.body.classList.remove("flat-splitter-dragging"),!(Math.abs(t.clientX-a.startX)>2))return;const m=t.clientX-a.startX;if(a.kind==="middle"){const h=me(a.startWidth+m);He(h),Lt(E.FLAT_MIDDLE_WIDTH,h)}else{const h=Ee(a.startWidth-m);Ue(h),Lt(E.FLAT_INSPECTOR_WIDTH,h)}},[me,Ee]),Je=i.useCallback(()=>{He(null),Lt(E.FLAT_MIDDLE_WIDTH,0)},[]),_t=i.useCallback(()=>{Ue(null),Lt(E.FLAT_INSPECTOR_WIDTH,0)},[]),[ie,Qe]=i.useState(()=>qt(E.FLAT_INSPECTOR_VIEW)==="tracking"?"tracking":"agent"),et=i.useCallback(t=>{Qe(t),Yt(E.FLAT_INSPECTOR_VIEW,t)},[]),ve=i.useCallback(()=>{ae(t=>{const a=!t;return he(E.FLAT_INSPECTOR_OPEN,a),a})},[]),tt=i.useCallback(()=>{ae(!1),he(E.FLAT_INSPECTOR_OPEN,!1)},[]),ot=i.useCallback(()=>{et("tracking"),ae(!0),he(E.FLAT_INSPECTOR_OPEN,!0)},[et]),Me=Va(),w=i.useCallback((t,a)=>{Z({url:t,name:a})},[]),Te=i.useCallback((t,a)=>{ee({command:t,output:a,isLive:!1})},[]),F=i.useCallback((t,a)=>{var h;const s=v.size>0?Array.from(v)[0]:null,m=s?(h=b.getState().agents.get(s))==null?void 0:h.cwd:void 0;b.setFileViewerPath(t,a,m)},[v]),wt=i.useCallback(t=>{Oe(t)},[]),Le=i.useCallback((t,a)=>{J({agentId:t,count:a})},[]),Ge=i.useCallback(t=>{u?u(t):l(t)},[l,u]),Rt=i.useCallback(t=>{o&&R({agentId:o,position:t})},[o]),B=i.useCallback((t,a)=>{xe({buildingId:t,position:a})},[]);i.useEffect(()=>{Ze(!1)},[o]);const U=i.useRef([]),$=i.useRef(-1),at=i.useRef(!1),vt=i.useRef(qt(E.LAST_OPENED_AGENT,"")||null),[Ot,Ft]=i.useState(!1),[Pe,jt]=i.useState(!1),pe=i.useRef(!1),$e=i.useRef(null),fe=i.useRef(!1),je=i.useMemo(()=>new Set(z),[z]),Ct=i.useMemo(()=>{const t=new Map(M.map(s=>[s.id,s])),a=new Map;for(const s of M)if((s.isBoss||s.class==="boss")&&s.subordinateIds&&s.subordinateIds.length>0){const m=s.subordinateIds.map(h=>t.get(h)).filter(h=>h!==void 0);m.length>0&&a.set(s.id,m)}return a},[M]),le=i.useCallback(()=>{const t=U.current,a=$.current;Ft(a>0),jt(a>=0&&a<t.length-1)},[]),Ce=i.useCallback(t=>{const a=U.current;if(a.length===0)return;let s=$.current+t;for(;s>=0&&s<a.length;){const m=a[s];if(je.has(m)){at.current=!0,$.current=s,le(),b.selectAgent(m);return}s+=t}},[je,le]),kt=i.useCallback(()=>Ce(-1),[Ce]),Bt=i.useCallback(()=>Ce(1),[Ce]);Wn(i.useCallback(()=>{const t=U.current,a=$.current;return t.length>0&&a>0?(Ce(-1),"handled"):"exit"},[Ce]));const ct=i.useCallback((t,a)=>{if(typeof window>"u")return;const s=window.history.state,h={...typeof s=="object"&&s!==null?s:{},__flatAgentNav:{agentId:t}};a==="replace"?window.history.replaceState(h,"",window.location.href):window.history.pushState(h,"",window.location.href)},[]);i.useEffect(()=>{if(!o){pe.current=!1,$e.current=null;return}if(!pe.current){ct(o,"replace"),pe.current=!0,$e.current=o;return}if(fe.current){fe.current=!1,$e.current=o;return}$e.current!==o&&(ct(o,"push"),$e.current=o)},[o,ct]),i.useEffect(()=>{const t=a=>{var _,S;const s=(S=(_=a.state)==null?void 0:_.__flatAgentNav)==null?void 0:S.agentId;if(!s||typeof s!="string"||!je.has(s)||s===o)return;fe.current=!0,at.current=!0;const m=U.current,h=m.lastIndexOf(s);h>=0?$.current=h:(m.push(s),$.current=m.length-1),le(),b.selectAgent(s)};return window.addEventListener("popstate",t),()=>window.removeEventListener("popstate",t)},[je,o,le]),i.useEffect(()=>{if(!o){U.current=[],$.current=-1,le();return}if(vt.current=o,Yt(E.LAST_OPENED_AGENT,o),at.current){at.current=!1,le();return}const t=U.current,a=$.current;if(a>=0&&t[a]===o){le();return}const s=a<t.length-1?t.slice(0,a+1):t.slice();s.push(o),s.length>100&&s.shift(),U.current=s,$.current=s.length-1,le()},[o,le]);const yt=i.useCallback(t=>{r(t),Ae(!1)},[r]),De=o??"",Nt=i.useCallback(()=>{},[]),Xe=i.useCallback(t=>{yt(t)},[yt]),H=be,[ze,nt]=i.useState(H),[Wt,dt]=i.useState(H),re=ka(Be||Ne!==null||ze&&ie==="agent"?o:null);i.useEffect(()=>{if(H){nt(!0);return}dt(!1);const t=setTimeout(()=>nt(!1),240);return()=>clearTimeout(t)},[H]),i.useEffect(()=>{if(!ze||!H)return;let t=0;const a=requestAnimationFrame(()=>{t=requestAnimationFrame(()=>dt(!0))});return()=>{cancelAnimationFrame(a),cancelAnimationFrame(t)}},[ze,H]);const st=i.useRef(null);i.useEffect(()=>{if(o)return;const t=a=>{if(a.key!==" "&&a.key!=="Backspace")return;const s=a.target;if(s.tagName==="INPUT"||s.tagName==="TEXTAREA"||s.isContentEditable)return;const m=vt.current;!m||!je.has(m)||(a.preventDefault(),b.selectAgent(m))};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[o,je]);const[St,Ve]=i.useState(new Set),ut=i.useCallback(t=>{Ve(a=>{const s=new Set(a);return s.has(t)?s.delete(t):s.add(t),s})},[]),Ht=i.useCallback(t=>{Ve(new Set(t))},[]),[G,Re]=i.useState(()=>typeof window<"u"&&window.matchMedia("(max-width: 768px)").matches);i.useEffect(()=>{if(typeof window>"u")return;const t=window.matchMedia("(max-width: 768px)"),a=s=>Re(s.matches);return t.addEventListener("change",a),()=>t.removeEventListener("change",a)},[]);const[mt,At]=i.useState(null),Ut=i.useCallback(t=>{At(a=>a===t?null:t)},[]),oe=ya(),qe=Na(),[ke]=qa(),Y=i.useMemo(()=>{if(o)return ls;const t=new Map,a=[];for(const x of M){const y=b.getAreaForAgent(x.id);if(!ua((y==null?void 0:y.id)??null))continue;if(!y||y.archived){a.push(x);continue}const T=t.get(y.id);T?T.push(x):t.set(y.id,[x])}const s=new Map,m=[];for(const x of qe.values()){let y=!1;for(const T of oe.values())if(!T.archived&&ma(T.id)&&b.isPositionInArea(x.position,T)){const ce=s.get(T.id);ce?ce.push(x):s.set(T.id,[x]),y=!0;break}!y&&ua(null)&&m.push(x)}const h=[];for(const[,x]of oe){if(x.archived||!ma(x.id))continue;const y=t.get(x.id),T=s.get(x.id)??[];(y&&y.length>0||T.length>0)&&h.push({area:x,agents:y??[],buildings:T})}(a.length>0||m.length>0)&&h.push({area:{id:"__unassigned__",name:"Unassigned",color:"#6272a4",center:{x:0,z:0},type:"circle",radius:0,directories:[],archived:!1,assignedAgentIds:[],zIndex:0},agents:a,buildings:m});const _=h.filter(x=>x.area.id!=="__unassigned__"),S=h.filter(x=>x.area.id==="__unassigned__");let P=1,k=1;const c=new Map;if(_.length>1){let x=1/0,y=-1/0,T=1/0,ce=-1/0;for(const X of _)x=Math.min(x,X.area.center.x),y=Math.max(y,X.area.center.x),T=Math.min(T,X.area.center.z),ce=Math.max(ce,X.area.center.z);const ye=y-x||1,Mt=ce-T||1;if(_.length<=4){P=_.length,k=1;const X=[..._].sort((V,Gt)=>V.area.center.x-Gt.area.center.x);for(let V=0;V<X.length;V++)c.set(X[V].area.id,{row:1,col:V+1})}else{const X=[..._].sort((I,W)=>I.area.center.x-W.area.center.x),V=[];for(let I=1;I<X.length;I++)V.push(X[I].area.center.x-X[I-1].area.center.x);const Gt=V.reduce((I,W)=>I+W,0)/V.length||1;let la=1;for(const I of V)I>Gt*1.3&&la++;P=Math.max(2,Math.min(la,_.length));const Xt=[..._].sort((I,W)=>I.area.center.z-W.area.center.z),Tt=[];for(let I=1;I<Xt.length;I++)Tt.push(Xt[I].area.center.z-Xt[I-1].area.center.z);const Pa=Tt.reduce((I,W)=>I+W,0)/Tt.length||1;let ra=1;for(const I of Tt)I>Pa*1.3&&ra++;k=Math.max(2,Math.min(ra,_.length)),P=Math.max(P,Math.ceil(_.length/k)),k=Math.max(k,Math.ceil(_.length/P));const $a=ye/P,Da=Mt/k,Vt=new Set;for(const I of _){let W=Math.min(P-1,Math.max(0,Math.floor((I.area.center.x-x)/$a))),Ke=Math.min(k-1,Math.max(0,Math.floor((I.area.center.z-T)/Da))),pt=`${Ke},${W}`,oa=0;const za=k*P;for(;Vt.has(pt)&&oa<za;)W++,W>=P&&(W=0,Ke=(Ke+1)%k),pt=`${Ke},${W}`,oa++;Vt.has(pt)&&(Ke=k,W=0,pt=`${Ke},${W}`,k++),Vt.add(pt),c.set(I.area.id,{row:Ke+1,col:W+1})}}}const A=x=>{x.sort((y,T)=>{var ye,Mt,X,V;const ce=(((ye=y.position)==null?void 0:ye.z)??0)-(((Mt=T.position)==null?void 0:Mt.z)??0);return ce!==0?ce:(((X=y.position)==null?void 0:X.x)??0)-(((V=T.position)==null?void 0:V.x)??0)})};for(const x of _)A(x.agents);for(const x of S)A(x.agents);const D=[..._,...S].sort((x,y)=>x.area.name.localeCompare(y.area.name,void 0,{sensitivity:"base",numeric:!0})||x.area.id.localeCompare(y.area.id));return c.clear(),D.forEach((x,y)=>{c.set(x.area.id,{row:Math.floor(y/P)+1,col:y%P+1})}),k=Math.max(1,Math.ceil(D.length/P)),{groups:D,gridCols:P,gridRows:k,positions:c}},[M,oe,qe,ke,o]),Ye=i.useMemo(()=>{let t=0,a=0;for(const s of Y.groups)t+=s.agents.length,a+=s.agents.filter(m=>m.status==="working").length;return{areaCount:Y.groups.length,agentCount:t,workingCount:a}},[Y]),Et=i.useMemo(()=>{if(!p)return[];const t=b.getState().agents.get(p.agentId);return t?[{id:"edit-agent",label:"Edit Agent",icon:e.jsx(d,{name:"edit",size:14}),onClick:()=>{window.dispatchEvent(new CustomEvent("tide:open-agent-edit",{detail:{agentId:t.id}}))}},{id:"open-chat",label:"Open Chat",icon:e.jsx(d,{name:"chat",size:14}),onClick:()=>r(t.id)},{id:"clone-agent",label:"Clone Agent",icon:e.jsx(d,{name:"clipboard",size:14}),onClick:()=>b.cloneAgent(t.id)},{id:"fork-agent",label:"Fork Agent (with history)",icon:e.jsx(d,{name:"git-branch",size:14}),onClick:()=>b.forkAgent(t.id)},{id:"delete-agent",label:"Delete Agent",icon:e.jsx(d,{name:"trash",size:14}),danger:!0,onClick:()=>{q({agentId:t.id,name:t.name})}}]:[]},[p,r]),It=i.useMemo(()=>{var _;if(!ge)return[];const t=qe.get(ge.buildingId);if(!t)return[];const a=[],s=t.type==="server"||t.type==="docker"||t.type==="terminal",m=t.status==="running",h=t.type==="boss";if(a.push({id:"open",label:t.type==="database"?"Open Database":t.type==="folder"?"Open Folder":t.type==="tests"?"Open Tests":t.type==="http"?"Open Requests":t.type==="boss"?"View Boss Logs":t.type==="terminal"?"Open Terminal":t.type==="server"&&((_=t.pm2)!=null&&_.enabled)?"View PM2 Logs":"Open",icon:e.jsx(d,{name:t.type==="database"?"database":t.type==="folder"?"folder":t.type==="tests"?"flask":t.type==="http"?"globe":t.type==="terminal"?"terminal":"eye",size:14}),onClick:()=>Ge(t.id)}),s&&(m||a.push({id:"start",label:"Start",icon:e.jsx(d,{name:"play",size:14}),onClick:()=>b.sendBuildingCommand(t.id,"start")}),m&&(a.push({id:"restart",label:"Restart",icon:e.jsx(d,{name:"refresh",size:14}),onClick:()=>b.sendBuildingCommand(t.id,"restart")}),a.push({id:"stop",label:"Stop",icon:e.jsx(d,{name:"stop",size:14}),onClick:()=>b.sendBuildingCommand(t.id,"stop")}))),h&&t.subordinateBuildingIds&&t.subordinateBuildingIds.length>0&&(a.push({id:"start-all",label:"Start All Subordinates",icon:e.jsx(d,{name:"launch",size:14}),onClick:()=>{for(const S of t.subordinateBuildingIds)b.sendBuildingCommand(S,"start")}}),a.push({id:"stop-all",label:"Stop All Subordinates",icon:e.jsx(d,{name:"pause",size:14}),onClick:()=>{for(const S of t.subordinateBuildingIds)b.sendBuildingCommand(S,"stop")}}),a.push({id:"restart-all",label:"Restart All Subordinates",icon:e.jsx(d,{name:"restart",size:14}),onClick:()=>{for(const S of t.subordinateBuildingIds)b.sendBuildingCommand(S,"restart")}})),s&&a.push({id:"health-check",label:"Health Check",icon:e.jsx(d,{name:"health",size:14}),onClick:()=>b.sendBuildingCommand(t.id,"healthCheck")}),a.push({id:"divider-edit",label:"",divider:!0,onClick:()=>{}}),a.push({id:"edit",label:"Edit Building",icon:e.jsx(d,{name:"edit",size:14}),onClick:()=>{window.dispatchEvent(new CustomEvent("tide:building-edit",{detail:{buildingId:t.id}}))}}),a.push({id:"clone",label:"Clone Building",icon:e.jsx(d,{name:"copy",size:14}),onClick:()=>{b.createBuilding({name:`${t.name} (Copy)`,type:t.type,style:t.style,color:t.color,scale:t.scale,position:{x:t.position.x+2,z:t.position.z+2},cwd:t.cwd,folderPath:t.folderPath,commands:t.commands,pm2:t.pm2,docker:t.docker,database:t.database,terminal:t.terminal,urls:t.urls,subordinateBuildingIds:t.subordinateBuildingIds})}}),t.urls&&t.urls.length>0)for(const S of t.urls)a.push({id:`url-${S.label}`,label:S.label,icon:e.jsx(d,{name:"link",size:14}),onClick:()=>window.open(S.url,"_blank","noopener,noreferrer")});return a.push({id:"divider-danger",label:"",divider:!0,onClick:()=>{}}),a.push({id:"delete",label:"Delete Building",icon:e.jsx(d,{name:"trash",size:14}),danger:!0,onClick:()=>b.deleteBuilding(t.id)}),a},[ge,qe,Ge]),n=i.useCallback(t=>{Ve(new Set([t])),requestAnimationFrame(()=>{const a=st.current;if(!a)return;const s=a.querySelector(`[data-area-id="${t}"]`);if(!s)return;const m=a.getBoundingClientRect(),_=s.getBoundingClientRect().top-m.top+a.scrollTop-8;a.scrollTo({top:Math.max(0,_),behavior:"smooth"})})},[]);return e.jsxs("div",{ref:O,className:`flat-view ${H?"flat-view--with-inspector":""} ${o?"flat-view--has-chat":""} ${ne?"flat-view--mobile-sidebar-open":""}`,style:(()=>{if(_e===null&&se===null)return;const t={};return _e!==null&&(t["--flat-middle-width"]=`${_e}px`),se!==null&&(t["--flat-inspector-width"]=`${se}px`),t})(),children:[ne&&e.jsx("div",{className:"flat-mobile-sidebar-backdrop",onClick:rt,"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:C,title:"Create new agent",children:"+ Agent"}),e.jsx("button",{className:"flat-cta-btn flat-cta-btn--boss",onClick:j,title:"Create new boss agent",children:"+ Boss"}),e.jsx("button",{className:"flat-cta-btn flat-cta-btn--area",onClick:N,title:"Create new area",children:"+ Area"})]})}),e.jsx("div",{className:"flat-middle__content",children:e.jsx(Ya,{activeAgentId:De,onClose:Nt,onSelectAgent:Xe,expandedAreas:St,onToggleArea:ut,onSetExpandedAreas:Ht,agentListRef:st})})]}),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:zt,onPointerMove:Ie,onPointerUp:we,onPointerCancel:we,onDoubleClick:Je}),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:xt,children:[e.jsx(d,{name:"list",size:18}),e.jsx("span",{className:"flat-mobile-sidebar-toggle__label",children:"Agents"})]}),o?e.jsx(is,{agentId:o,terminalViewMode:gt,onTerminalViewModeChange:te,inspectorOpen:be,onToggleInspector:ve,onShowTaskBoard:ot,onImageClick:w,onFileClick:F,onBashClick:Te,onViewMarkdown:wt,onRequestClearSubordinates:Le,keyboard:Me,canNavigateBack:Ot,canNavigateForward:Pe,onNavigateBack:kt,onNavigateForward:Bt,agentInfoOpen:Be,onToggleAgentInfo:We,onHeaderContextMenu:Rt,onBuildingContextMenu:B}):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:[Ye.areaCount," areas"]}),e.jsxs("span",{children:[Ye.agentCount," agents"]}),Ye.workingCount>0&&e.jsxs("span",{className:"flat-map__stats-working",children:[e.jsx("span",{className:"flat-map__stats-dot","aria-hidden":"true"}),Ye.workingCount," working"]})]}),e.jsx(Qn,{className:"flat-map__view-mode"})]}),e.jsx("div",{className:"flat-map__grid",style:{gridTemplateColumns:G?"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"})}):(G?[...Y.groups].sort((a,s)=>{const m=Y.positions.get(a.area.id),h=Y.positions.get(s.area.id);return!m&&!h?0:m?h?m.row-h.row||m.col-h.col:-1:1}):Y.groups).map(a=>{var k;const s=a.area.id,m=Y.positions.get(s),h=a.agents.filter(c=>c.status==="working").length,_=h>0,S=G&&mt!==s,P=G&&!S;return e.jsxs("div",{className:`flat-map-area-card${_?" flat-map-area-card--working":""}${S?" flat-map-area-card--collapsed":""}${P?" flat-map-area-card--expanded":""}`,style:{"--area-color":a.area.color,gridRow:G||m==null?void 0:m.row,gridColumn:G||m==null?void 0:m.col},onContextMenu:c=>{g&&(c.preventDefault(),c.stopPropagation(),g(s,{x:c.clientX,y:c.clientY}))},children:[e.jsxs("button",{type:"button",className:"flat-map-area-card__header",onClick:()=>G?Ut(s):n(s),title:G?S?`Expand ${a.area.name}`:`Collapse ${a.area.name}`:`Focus ${a.area.name} in left panel`,"aria-expanded":G?!S:void 0,children:[e.jsx("span",{className:"flat-map-area-card__color",style:{background:a.area.color}}),((k=a.area.logo)==null?void 0:k.filename)&&e.jsx("img",{className:"flat-map-area-card__logo",src:Bn(a.area.logo.filename),alt:"","aria-hidden":"true",onError:c=>{c.currentTarget.style.display="none"}}),e.jsx("span",{className:"flat-map-area-card__name",children:a.area.name}),e.jsxs("span",{className:"flat-map-area-card__count",title:`${a.agents.length} agent${a.agents.length===1?"":"s"}`,"aria-label":`${a.agents.length} agent${a.agents.length===1?"":"s"}`,children:[e.jsx(d,{name:"users",size:10}),a.agents.length]}),_&&e.jsxs("span",{className:"flat-map-area-card__working",title:`${h} working agent${h===1?"":"s"}`,"aria-label":`${h} working agent${h===1?"":"s"}`,children:[e.jsx(na,{animated:!0,size:12,className:"flat-map-area-card__working-glyph"}),e.jsx("span",{className:"flat-map-area-card__working-count",children:h})]}),G&&e.jsx(d,{name:S?"caret-down":"caret-up",size:11,className:"flat-map-area-card__caret"})]}),e.jsx("div",{className:"flat-map-area-card__agents",children:a.agents.map(c=>{const A=c.isBoss||c.class==="boss",D=A?Ct.get(c.id):void 0,x=Sa(c),y=x.usedPercent>=80?"#ff4a4a":x.usedPercent>=60?"#ff9e4a":x.usedPercent>=40?"#ffd700":"#4aff9e",T=`Context: ${(x.totalTokens/1e3).toFixed(1)}k / ${(x.contextWindow/1e3).toFixed(1)}k (${x.usedPercent}% used, ${x.freePercent}% free)`,ce=c.latestTodos&&c.latestTodos.length>0||D&&D.length>0;return e.jsx(Ka,{todos:c.latestTodos,subordinates:D,position:"top",children:e.jsxs("button",{type:"button",className:`flat-map-agent-chip ${c.status}`,onClick:()=>r(c.id),onContextMenu:ye=>{ye.preventDefault(),ye.stopPropagation(),R({agentId:c.id,position:{x:ye.clientX,y:ye.clientY}})},title:ce?void 0:`${A?"Boss · ":""}Open chat with ${c.name}
2
+ ${T}`,children:[e.jsx(Aa,{agent:c,size:16}),A&&e.jsx("span",{className:"flat-map-agent-chip__crown","aria-hidden":"true",children:e.jsx(d,{name:"crown",size:11,color:"#ffd700",weight:"fill"})}),e.jsx("span",{className:"flat-map-agent-chip__name",children:c.name}),e.jsx(Ea,{agent:c,alt:`${c.name} provider`,className:"flat-map-agent-chip__provider-icon"}),c.status==="working"?e.jsx(na,{animated:!0,size:11,className:"flat-map-agent-chip__activity"}):e.jsx("span",{className:"flat-map-agent-chip__dot",style:{backgroundColor:Ia(c.status)}}),c.latestTodos&&c.latestTodos.length>0&&e.jsx(Za,{todos:c.latestTodos,maxDots:6}),A&&D&&D.length>0&&e.jsx(Ja,{subordinates:D,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:`${x.usedPercent}%`,backgroundColor:y}})})]})},c.id)})}),a.area.directories.length>0&&e.jsx("div",{className:"flat-map-area-card__folders",role:"group","aria-label":`${a.area.name} folders`,children:a.area.directories.map(c=>{const A=c.split("/").filter(Boolean).pop()||c;return e.jsxs("button",{type:"button",className:"flat-map-folder-chip",onClick:D=>{D.stopPropagation(),b.openFileExplorerForAreaFolder(s,c)},title:`Open in file explorer: ${c}`,children:[e.jsx(d,{name:"folder-open",size:12}),e.jsx("span",{className:"flat-map-folder-chip__name",children:A})]},c)})}),a.buildings.length>0&&e.jsx("div",{className:"flat-map-area-card__buildings",children:a.buildings.map(c=>{var D;const A=(D=Qa[c.type])==null?void 0:D.color;return e.jsxs("button",{type:"button",className:`flat-map-building-chip flat-map-building-chip--${c.status}`,style:A?{"--building-type-color":A}:void 0,onClick:x=>{if(f){const y=x.currentTarget.getBoundingClientRect();f(c.id,{x:y.right,y:y.top+y.height/2})}else Ge(c.id)},onContextMenu:x=>{x.preventDefault(),x.stopPropagation(),xe({buildingId:c.id,position:{x:x.clientX,y:x.clientY}})},title:`${c.name} · ${c.type} · ${c.status}`,children:[e.jsx(d,{name:en(c.type),size:12,color:A}),e.jsx("span",{className:"flat-map-building-chip__name",children:c.name}),e.jsx("span",{className:"flat-map-building-chip__dot",style:{backgroundColor:tn(c.status)}})]},c.id)})})]},s)})})]})})]}),H&&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:bt,onPointerMove:Ie,onPointerUp:we,onPointerCancel:we,onDoubleClick:_t}),ze&&e.jsxs("aside",{className:`flat-inspector ${Wt?"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":ie==="agent",className:`flat-inspector__tab ${ie==="agent"?"flat-inspector__tab--active":""}`,onClick:()=>et("agent"),children:"Agent"}),e.jsx("button",{type:"button",role:"tab","aria-selected":ie==="tracking",className:`flat-inspector__tab ${ie==="tracking"?"flat-inspector__tab--active":""}`,onClick:()=>et("tracking"),children:"Tracking"})]}),e.jsx("button",{type:"button",className:"flat-inspector__close",onClick:tt,title:"Close inspector","aria-label":"Close inspector",children:"✕"})]}),e.jsx("div",{className:"flat-inspector__body",children:ie==="tracking"?e.jsx(an,{activeAgentId:o??"",onSelectAgent:t=>{r(t),window.innerWidth<=768&&tt()}}):o?re?e.jsx(nn,{agent:re,onFocusAgent:t=>{r(t),window.innerWidth<=768&&tt()},onKillAgent:t=>b.killAgent(t)}):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"})})})]}),K&&e.jsx(sn,{url:K.url,name:K.name,onClose:()=>Z(null)}),Q&&e.jsx(ln,{state:Q,onClose:()=>ee(null)}),e.jsx(rn,{agent:re??null,content:Ne,onClose:()=>Oe(null)}),Fe&&e.jsx(on,{action:"clear-subordinates",selectedAgentId:Fe.agentId,subordinateCount:Fe.count,onClose:()=>J(null),onClearHistory:()=>{}}),e.jsx(cn,{agent:re??null,isOpen:Be&&!!o,onClose:lt}),e.jsx(sa,{isOpen:p!==null,position:(p==null?void 0:p.position)??{x:0,y:0},worldPosition:{x:0,z:0},actions:Et,onClose:()=>R(null)}),e.jsx(sa,{isOpen:ge!==null,position:(ge==null?void 0:ge.position)??{x:0,y:0},worldPosition:{x:0,z:0},actions:It,onClose:()=>xe(null)}),e.jsx(dn,{isOpen:de!==null,title:L("common:confirm.removeAgentTitle"),message:L("common:confirm.removeAgentMessage",{name:(de==null?void 0:de.name)??""}),confirmLabel:L("common:buttons.remove"),cancelLabel:L("common:buttons.cancel"),variant:"danger",onConfirm:()=>{de&&b.removeAgentFromServer(de.agentId)},onClose:()=>q(null)})]})}export{us as FlatView};