tide-commander 1.183.0 → 1.185.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.
- package/CHANGELOG.md +26 -0
- package/dist/assets/{AudioPlayer-DntjtmFY.js → AudioPlayer-TfKZdQdw.js} +1 -1
- package/dist/assets/{BossLogsModal-DG0qGyyQ.js → BossLogsModal-CgKG5C3w.js} +1 -1
- package/dist/assets/{BossSpawnModal-BE3fqrEQ.js → BossSpawnModal-BnaEFEkJ.js} +1 -1
- package/dist/assets/{ControlsModal-BxUj2hcx.js → ControlsModal-AvbuOJ9Y.js} +1 -1
- package/dist/assets/{DockerLogsModal-DXXdFMWk.js → DockerLogsModal-DrTRT2MT.js} +1 -1
- package/dist/assets/{EmbeddedEditor-DIfzYNe4.js → EmbeddedEditor-DMupDd8L.js} +1 -1
- package/dist/assets/{FcStdViewer-CpbcvCQH.js → FcStdViewer-CEcufXLO.js} +1 -1
- package/dist/assets/{GcodeViewer-GZKkHWus.js → GcodeViewer-BXQEHh0Y.js} +1 -1
- package/dist/assets/{GlbViewer-CypOmYH4.js → GlbViewer-6fiqpbSa.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-CWO65KoU.js → GmailOAuthSetup-BuwjdMiu.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-ouG98zZm.js → GoogleOAuthSetup-ClbRVt1w.js} +1 -1
- package/dist/assets/{IframeModal-jC4LWAqj.js → IframeModal-DqeSTsXq.js} +1 -1
- package/dist/assets/{IntegrationsPanel-CFrTJ4yI.js → IntegrationsPanel-C-jmJexi.js} +2 -2
- package/dist/assets/{LogViewerModal-BYGOn-UY.js → LogViewerModal-B1OUt_oS.js} +1 -1
- package/dist/assets/{MonitoringModal-ChTpAg5E.js → MonitoringModal-CafOFiTh.js} +1 -1
- package/dist/assets/{PM2LogsModal-C6ilFV5X.js → PM2LogsModal-D2oQ8yqk.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-20aGB6m1.js → RestoreArchivedAreaModal-D_BzfRNl.js} +1 -1
- package/dist/assets/{Scene2DCanvas-B0JqO0Zp.js → Scene2DCanvas-Dzfxr9V5.js} +1 -1
- package/dist/assets/{SceneManager-DXwGU3ni.js → SceneManager-BwMwAay2.js} +1 -1
- package/dist/assets/{SkillsPanel-zL-QL8-4.js → SkillsPanel-DyZK8UQP.js} +1 -1
- package/dist/assets/{SlackMultiInstanceSetup-Cj4LKpWi.js → SlackMultiInstanceSetup-CWUCBxMA.js} +1 -1
- package/dist/assets/{SpawnModal-Dccw_k2y.js → SpawnModal-Ccif5JAe.js} +1 -1
- package/dist/assets/{StatisticsModal-BbGUKCIz.js → StatisticsModal-vpgsOAT6.js} +1 -1
- package/dist/assets/{StlViewer-BuS5d6ze.js → StlViewer-BxxTbq-w.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-DpVxp2ta.js → SubordinateAssignmentModal-DtE_BZez.js} +1 -1
- package/dist/assets/{ThreeAreaSelector-C7TNtwtl.js → ThreeAreaSelector-Bvv5Ircz.js} +1 -1
- package/dist/assets/{ThreeViewShortcuts-D5ZfDVjp.js → ThreeViewShortcuts-CDlyAOOo.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-BrN4V9vK.js → TriggerManagerPanel-C3Ay2hMn.js} +1 -1
- package/dist/assets/{VideoPlayer-9wDovE5Z.js → VideoPlayer-_XnlmxSU.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-DvkV8Z4_.js → WorkflowEditorPanel-AkJ0BxQS.js} +1 -1
- package/dist/assets/{abnfDiagram-VRR7QNED-Con3z51e.js → abnfDiagram-VRR7QNED-CxCVIsdN.js} +1 -1
- package/dist/assets/{arc-CWWQYHaK.js → arc-BFTKfTKo.js} +1 -1
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-CrrniEMZ.js → architectureDiagram-ZJ3FMSHR-D2RTnPfl.js} +1 -1
- package/dist/assets/{area-logos-F5U_sfIW.js → area-logos-DcI1D4Jw.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-MlV0Bx2X.js → blockDiagram-677ZJIJ3-63NzytPf.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-Bczl4ceN.js → c4Diagram-LMCZKHZV-Ct6Fnp-A.js} +1 -1
- package/dist/assets/channel-U6rGMshr.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-uMf2zApa.js → chunk-2Q5K7J3B-DWfz0K87.js} +1 -1
- package/dist/assets/{chunk-32BRIVSS-YQLvcU-w.js → chunk-32BRIVSS-Q4lVzeAL.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-Bv44lK_C.js → chunk-5VM5RSS4-Cdh4qUQO.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-BoWkmPlS.js → chunk-EX3LRPZG-CwEOE5WL.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-B71OUFoy.js → chunk-JWPE2WC7-C4pOoqX4.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-DGpbFjEE.js → chunk-MOJQB5TN-YuJPjTGW.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-CUaqIbqz.js → chunk-RYQCIY6F-D8R2rVlu.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-DoRxLReN.js → chunk-V7JOEXUC-DktEESWJ.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-B4AQrVEa.js → chunk-VR4S4FIN--eHC87JB.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-DZVLCDKR.js → chunk-XXDRQBXY-DLCg-eIA.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-DCeRaOmK.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-DCeRaOmK.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-CcOIOt1P.js → cose-bilkent-JH36ORCC-CF5-b77a.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-BwwhPetI.js → cynefin-VYW2F7L2-CzjbwIY5.js} +1 -1
- package/dist/assets/{cynefinDiagram-TSTJHNR4--V66_WT7.js → cynefinDiagram-TSTJHNR4-DFpmwdSb.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-CQidxhQe.js → dagre-VKFMJZFB-Cop8OyQf.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-gVCH6npm.js → diagram-FQU43EPY-BY2J7jd4.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-Crm2bCwK.js → diagram-G47NLZAW-CuQ8wthE.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-B5-91Me5.js → diagram-NH7WQ7WH-DbQQioTi.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-BL92CL4n.js → diagram-OA4YK3LP-CQJWT3JI.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-Ct4Y-e1G.js → diagram-WEI45ONY-FAUM8xdM.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-CgFnpcpk.js → ebnfDiagram-CCIWWBDH-DokJuDfN.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-F93obfaw.js → erDiagram-Q63AITRT-DJT-w4mK.js} +1 -1
- package/dist/assets/{flowDiagram-23GEKE2U-BjK3Ns-v.js → flowDiagram-23GEKE2U-BBePs1z6.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-Dhg1PlEG.js → ganttDiagram-NO4QXBWP-DFB2LkPp.js} +1 -1
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-BIvk5Sbm.js → gitGraphDiagram-IHSO6WYX-f23w1FRE.js} +1 -1
- package/dist/assets/index-BDDaoYcZ.js +2 -0
- package/dist/assets/{index-B8QkgKiD.js → index-BR-6QayQ.js} +2 -2
- package/dist/assets/{index-B9On-Gc2.js → index-Bft_2nWI.js} +1 -1
- package/dist/assets/index-C8v9u7Ys.css +1 -0
- package/dist/assets/{index-9tgJKfUx.js → index-D1vhQn4i.js} +1 -1
- package/dist/assets/{index-BpuIdv2X.js → index-DLmbhhuf.js} +1 -1
- package/dist/assets/{index-CGbeEcuO.js → index-DMx7tGNO.js} +1 -1
- package/dist/assets/{index-DyAtzN3k.js → index-O6O1FoDY.js} +1 -1
- package/dist/assets/{index-DT_iBBpR.js → index-mrMKBf3b.js} +3 -3
- package/dist/assets/{index-B4lIIYnl.js → index-yAoKz7VY.js} +1 -1
- package/dist/assets/{infoDiagram-FWYZ7A6U-D8y97kfq.js → infoDiagram-FWYZ7A6U-DNmEWboW.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-RsNvLRNJ.js → ishikawaDiagram-FXEZZL3T-BW5HmWUv.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-DDu6O4Xa.js → journeyDiagram-5HDEW3XC-CUu6A6f6.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-BdyQRxVX.js → kanban-definition-HUTT4EX6-4W43zOke.js} +1 -1
- package/dist/assets/{linear-CmFTyYvd.js → linear-DkURuoBE.js} +1 -1
- package/dist/assets/main-Cz0qHoVq.css +1 -0
- package/dist/assets/{main-DXG9arLM.js → main-DGmjsdfM.js} +137 -134
- package/dist/assets/{mermaid.core-Bt-11G2g.js → mermaid.core-B_tMX15A.js} +4 -4
- package/dist/assets/{mindmap-definition-LN4V7U3C-SmMMV-FP.js → mindmap-definition-LN4V7U3C-DDmy4J_Z.js} +1 -1
- package/dist/assets/{pegDiagram-2B236MQR-CWwvj4kG.js → pegDiagram-2B236MQR-Hr8MrSIW.js} +1 -1
- package/dist/assets/{pieDiagram-ENE6RG2P-gBVnKXU2.js → pieDiagram-ENE6RG2P-FpqyAiik.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-DsI4SV_G.js → quadrantDiagram-ABIIQ3AL-4XNAw-pD.js} +1 -1
- package/dist/assets/{railroadDiagram-RFXS5EU6-Xgn2AqX_.js → railroadDiagram-RFXS5EU6-Skfx7IMr.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-CNJSWaII.js → requirementDiagram-TGXJPOKE-Bv2Poa9i.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-7R-oTObT.js → sankeyDiagram-HTMAVEWB-Azi8ZQHU.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-DAJ_SkXi.js → sequenceDiagram-DBY2YBRQ-UJ725aLp.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-dXg2Btjz.js → sizeCapture-X5ZJPWSS-D6Yk1U74.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-QOa2unB0.js → stateDiagram-2N3HPSRC-LGWy8-A7.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-BgZKmDDt.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-DpGkTD0b.js → swimlanes-5IMT3BWC-k2Wu0JQN.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-O-DAJl2i.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-B3wYo6Z0.js → timeline-definition-FHXFAJF6-LduMJ6KS.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-DxRpcVln.js → vennDiagram-L72KCM5P-CjtozwKU.js} +1 -1
- package/dist/assets/{wardleyDiagram-EHGQE667-B-nj2Zec.js → wardleyDiagram-EHGQE667-CiIkpaMm.js} +1 -1
- package/dist/assets/{web-CaPWqQkM.js → web-BP-BguIQ.js} +1 -1
- package/dist/assets/{web-CZDCjMgt.js → web-C2LqVInh.js} +1 -1
- package/dist/assets/{web-Bq407zt-.js → web-DSnzrj-T.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-D2S19oqW.js → xychartDiagram-FW5EYKEG-DRk48Gz1.js} +1 -1
- package/dist/build-info.json +1 -1
- package/dist/index.html +2 -2
- package/dist/locales/de/terminal.json +3 -1
- package/dist/locales/en/terminal.json +3 -1
- package/dist/locales/es/terminal.json +3 -1
- package/dist/locales/fr/terminal.json +3 -1
- package/dist/locales/hi/terminal.json +3 -1
- package/dist/locales/it/terminal.json +3 -1
- package/dist/locales/ja/terminal.json +3 -1
- package/dist/locales/pt/terminal.json +3 -1
- package/dist/locales/ru/terminal.json +3 -1
- package/dist/locales/zh-CN/terminal.json +3 -1
- package/dist/src/packages/server/app.js +11 -0
- package/dist/src/packages/server/integrations/jira/jira-client.js +43 -0
- package/dist/src/packages/server/integrations/jira/jira-routes.js +27 -0
- package/dist/src/packages/server/integrations/jira/jira-skill.js +8 -0
- package/dist/src/packages/server/routes/files.js +128 -0
- package/package.json +1 -1
- package/dist/assets/channel-DhJKhZOl.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-F4DdT1bz.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-F4DdT1bz.js +0 -1
- package/dist/assets/index-C-LSKhvC.js +0 -2
- package/dist/assets/index-D1GfjaTN.css +0 -1
- package/dist/assets/main-CA-vQSSx.css +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-BoRtqceU.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-UzuviI8q.js +0 -8
|
@@ -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));animation:flat-map-area-working-pulse 2.4s ease-in-out infinite}.flat-map-area-card--working .flat-map-area-card__color{animation:flat-map-area-working-dot 1.2s ease-in-out infinite}.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-bars{display:inline-flex;align-items:center;gap:1.5px;height:10px}.flat-map-area-card__working-bars i{display:block;width:2px;height:100%;border-radius:2px;background:currentColor;transform-origin:center bottom;animation:flat-map-area-working-bar .72s ease-in-out infinite alternate}.flat-map-area-card__working-bars i:nth-child(2){animation-delay:-.48s}.flat-map-area-card__working-bars i:nth-child(3){animation-delay:-.24s}.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}@keyframes flat-map-area-working-pulse{0%,to{box-shadow:0 0 #8be9fd00}50%{box-shadow:0 0 14px color-mix(in srgb,var(--area-color, var(--text-muted)) 40%,color-mix(in srgb,var(--accent-cyan) 45%,transparent))}}@keyframes flat-map-area-working-dot{0%,to{transform:scale(1);box-shadow:0 0 #8be9fd00}50%{transform:scale(1.45);box-shadow:0 0 8px #8be9fde6}}@keyframes flat-map-area-working-bar{0%{transform:scaleY(.25);opacity:.55}to{transform:scaleY(1);opacity:1}}@media(prefers-reduced-motion:reduce){.flat-map-area-card--working{animation:none;box-shadow:0 0 0 1px #8be9fd38}.flat-map-area-card--working .flat-map-area-card__color{animation:none}.flat-map-area-card--working .flat-map-area-card__working-bars i{animation-duration:1.8s}}.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{overflow:visible;isolation:isolate;background-color:#4a9eff1f;background-image:linear-gradient(100deg,transparent 30%,rgba(180,230,255,.45) 49%,rgba(139,220,240,.3) 51%,transparent 70%),linear-gradient(100deg,transparent 32%,rgba(139,233,253,.3) 50%,transparent 68%);background-size:220% 100%,260% 100%;background-repeat:no-repeat,no-repeat;background-position:150% 0,150% 0;border-color:#8be9fdb3;color:var(--text-primary);box-shadow:0 0 8px #4a9eff59,inset 0 0 0 1px #8be9fd00;transform-origin:center;will-change:transform,background-position,box-shadow,border-color;animation:flat-map-agent-working-shimmer .75s linear infinite,flat-map-agent-working-shimmer-2 1.15s linear infinite,flat-map-agent-working-pulse 1.1s ease-in-out infinite,flat-map-agent-working-beat .85s ease-in-out infinite,flat-map-agent-working-iris 3.2s linear infinite}.flat-map-agent-chip.working:before{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:inherit;pointer-events:none;z-index:-1;background:conic-gradient(from 0deg,#8be9fd00,#8bc8fd8c,#a082e680,#dc82c873,#dcb48266,#8bc8fd8c,#8be9fd00);filter:blur(8px);transform-origin:center;will-change:transform,opacity;animation:flat-map-agent-working-spin 3.8s linear infinite,flat-map-agent-working-breath 2.6s ease-in-out infinite}.flat-map-agent-chip.working:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;z-index:1;background-image:radial-gradient(1px 1px at 18% 32%,rgba(255,255,255,.7) 0%,transparent 60%),radial-gradient(1px 1px at 72% 58%,rgba(200,240,255,.65) 0%,transparent 60%),radial-gradient(1.5px 1.5px at 42% 80%,rgba(220,200,255,.55) 0%,transparent 60%),radial-gradient(1px 1px at 88% 22%,rgba(255,255,255,.6) 0%,transparent 60%),radial-gradient(1px 1px at 12% 70%,rgba(210,190,255,.55) 0%,transparent 60%),radial-gradient(1px 1px at 58% 18%,rgba(255,255,255,.55) 0%,transparent 60%);mix-blend-mode:screen;opacity:.5;animation:flat-map-agent-working-twinkle 1.9s ease-in-out infinite}.flat-map-agent-chip.working .flat-map-agent-chip__dot{position:relative;z-index:2;box-shadow:0 0 6px #4a9effb3;animation:flat-map-agent-working-dot .65s ease-in-out infinite}.flat-map-agent-chip.working .flat-map-agent-chip__name,.flat-map-agent-chip.working .flat-map-agent-chip__provider-icon,.flat-map-agent-chip.working .flat-map-agent-chip__crown{position:relative;z-index:2}@keyframes flat-map-agent-working-shimmer{0%{background-position:150% 0,150% 0}to{background-position:-70% 0,150% 0}}@keyframes flat-map-agent-working-shimmer-2{0%{background-position:150% 0,150% 0}to{background-position:150% 0,-70% 0}}@keyframes flat-map-agent-working-pulse{0%,to{border-color:#4a9eff8c;box-shadow:0 0 6px #4a9eff59,inset 0 0 0 1px #8be9fd00}50%{border-color:#b4faff;box-shadow:0 0 18px #4a9effcc,0 0 30px #8be9fd59,inset 0 0 0 1px #b4faff8c}}@keyframes flat-map-agent-working-beat{0%,to{transform:scale(1)}35%{transform:scale(1.035)}55%{transform:scale(.99)}75%{transform:scale(1.015)}}@keyframes flat-map-agent-working-dot{0%,to{transform:scale(1);box-shadow:0 0 6px #4a9effb3}50%{transform:scale(1.7);box-shadow:0 0 12px #b4faff,0 0 22px #4a9effb3}}@keyframes flat-map-agent-working-iris{0%{border-color:#8be9fdb3}25%{border-color:#b482ffd9}50%{border-color:#ff78dccc}75%{border-color:#ffc878bf}to{border-color:#8be9fdb3}}@keyframes flat-map-agent-working-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes flat-map-agent-working-breath{0%,to{opacity:.3;filter:blur(7px)}40%{opacity:.7;filter:blur(11px)}70%{opacity:.45;filter:blur(8px)}}@keyframes flat-map-agent-working-twinkle{0%,to{opacity:.25;transform:translate(0) scale(.9)}25%{opacity:1;transform:translate(1px,-1px) scale(1.1)}50%{opacity:.55;transform:translate(-1px,1px) scale(.95)}75%{opacity:1;transform:translate(1px,1px) scale(1.15)}}@media(prefers-reduced-motion:reduce){.flat-map-agent-chip.working{animation:flat-map-agent-working-shimmer 5s linear infinite;background-image:linear-gradient(110deg,transparent 40%,rgba(139,233,253,.3) 50%,transparent 60%),linear-gradient(110deg,transparent 40%,rgba(139,233,253,0) 50%,transparent 60%);transform:none}.flat-map-agent-chip.working:before,.flat-map-agent-chip.working:after{animation:none;opacity:.3}.flat-map-agent-chip.working .flat-map-agent-chip__dot{animation:none}}.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-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;animation:flat-header-avatar-sway 1.2s ease-in-out infinite!important}html.low-power .flat-terminal-wrapper__header-avatar.is-working{animation:none!important}.flat-terminal-wrapper__header-avatar.is-working{z-index:1;will-change:transform;transform-origin:center center}.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__context-free,.flat-terminal-wrapper__statusbar .flat-terminal-wrapper__context-tokens{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--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__context-free{color:var(--text-muted);font-size:10px}.flat-terminal-wrapper__context-free,.flat-terminal-wrapper__context-tokens{flex:none;white-space:nowrap}.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-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1 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:56px;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-tokens{font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.flat-terminal-wrapper__context-warning{font-size:11px;opacity:.8}.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-name{flex:1 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}}@keyframes flat-header-avatar-sway{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as Rt,d as Tt,z as $t,a0 as Lt,f as kt,bp as jt,bN as Nt,bO as Pt,aa as Kt,r as d,y as zt,S as pe,bP as it,bQ as Qt,bR as Gt,ar as Ut,bS as fe,s as k,bT as Ot,j as m,I as Z,V as ot,bU as ct,n as at,bV as Wt,bW as ut,bX as Ie,U as $e,m as Ht,aq as At,u as be,bY as lt}from"./main-DXG9arLM.js";import{bZ as tr,b_ as sr,b$ as rr,c0 as nr,c1 as ir}from"./main-DXG9arLM.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-CBPuP1jE.js";function ie(s){return Array.isArray?Array.isArray(s):xt(s)==="[object Array]"}function Yt(s){if(typeof s=="string")return s;let e=s+"";return e=="0"&&1/s==-1/0?"-0":e}function Vt(s){return s==null?"":Yt(s)}function te(s){return typeof s=="string"}function yt(s){return typeof s=="number"}function qt(s){return s===!0||s===!1||Xt(s)&&xt(s)=="[object Boolean]"}function Et(s){return typeof s=="object"}function Xt(s){return Et(s)&&s!==null}function W(s){return s!=null}function Le(s){return!s.trim().length}function xt(s){return s==null?s===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(s)}const Jt="Incorrect 'index' type",Zt=s=>`Invalid value for key ${s}`,es=s=>`Pattern length exceeds max of ${s}.`,ts=s=>`Missing ${s} property in key`,ss=s=>`Property 'weight' in key '${s}' must be a positive integer`,ht=Object.prototype.hasOwnProperty;class rs{constructor(e){this._keys=[],this._keyMap={};let r=0;e.forEach(n=>{let i=Mt(n);this._keys.push(i),this._keyMap[i.id]=i,r+=i.weight}),this._keys.forEach(n=>{n.weight/=r})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Mt(s){let e=null,r=null,n=null,i=1,o=null;if(te(s)||ie(s))n=s,e=dt(s),r=ke(s);else{if(!ht.call(s,"name"))throw new Error(ts("name"));const c=s.name;if(n=c,ht.call(s,"weight")&&(i=s.weight,i<=0))throw new Error(ss(c));e=dt(c),r=ke(c),o=s.getFn}return{path:e,id:r,weight:i,src:n,getFn:o}}function dt(s){return ie(s)?s:s.split(".")}function ke(s){return ie(s)?s.join("."):s}function ns(s,e){let r=[],n=!1;const i=(o,c,a)=>{if(W(o))if(!c[a])r.push(o);else{let u=c[a];const h=o[u];if(!W(h))return;if(a===c.length-1&&(te(h)||yt(h)||qt(h)))r.push(Vt(h));else if(ie(h)){n=!0;for(let f=0,x=h.length;f<x;f+=1)i(h[f],c,a+1)}else c.length&&i(h,c,a+1)}};return i(s,te(e)?e.split("."):e,0),n?r:r[0]}const is={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},os={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(s,e)=>s.score===e.score?s.idx<e.idx?-1:1:s.score<e.score?-1:1},cs={location:0,threshold:.6,distance:100},as={useExtendedSearch:!1,getFn:ns,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};var C={...os,...is,...cs,...as};const us=/[^ ]+/g;function ls(s=1,e=3){const r=new Map,n=Math.pow(10,e);return{get(i){const o=i.match(us).length;if(r.has(o))return r.get(o);const c=1/Math.pow(o,.5*s),a=parseFloat(Math.round(c*n)/n);return r.set(o,a),a},clear(){r.clear()}}}class Qe{constructor({getFn:e=C.getFn,fieldNormWeight:r=C.fieldNormWeight}={}){this.norm=ls(r,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((r,n)=>{this._keysMap[r.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,te(this.docs[0])?this.docs.forEach((e,r)=>{this._addString(e,r)}):this.docs.forEach((e,r)=>{this._addObject(e,r)}),this.norm.clear())}add(e){const r=this.size();te(e)?this._addString(e,r):this._addObject(e,r)}removeAt(e){this.records.splice(e,1);for(let r=e,n=this.size();r<n;r+=1)this.records[r].i-=1}getValueForItemAtKeyId(e,r){return e[this._keysMap[r]]}size(){return this.records.length}_addString(e,r){if(!W(e)||Le(e))return;let n={v:e,i:r,n:this.norm.get(e)};this.records.push(n)}_addObject(e,r){let n={i:r,$:{}};this.keys.forEach((i,o)=>{let c=i.getFn?i.getFn(e):this.getFn(e,i.path);if(W(c)){if(ie(c)){let a=[];const u=[{nestedArrIndex:-1,value:c}];for(;u.length;){const{nestedArrIndex:h,value:f}=u.pop();if(W(f))if(te(f)&&!Le(f)){let x={v:f,i:h,n:this.norm.get(f)};a.push(x)}else ie(f)&&f.forEach((x,S)=>{u.push({nestedArrIndex:S,value:x})})}n.$[o]=a}else if(te(c)&&!Le(c)){let a={v:c,n:this.norm.get(c)};n.$[o]=a}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ct(s,e,{getFn:r=C.getFn,fieldNormWeight:n=C.fieldNormWeight}={}){const i=new Qe({getFn:r,fieldNormWeight:n});return i.setKeys(s.map(Mt)),i.setSources(e),i.create(),i}function hs(s,{getFn:e=C.getFn,fieldNormWeight:r=C.fieldNormWeight}={}){const{keys:n,records:i}=s,o=new Qe({getFn:e,fieldNormWeight:r});return o.setKeys(n),o.setIndexRecords(i),o}function we(s,{errors:e=0,currentLocation:r=0,expectedLocation:n=0,distance:i=C.distance,ignoreLocation:o=C.ignoreLocation}={}){const c=e/s.length;if(o)return c;const a=Math.abs(n-r);return i?c+a/i:a?1:c}function ds(s=[],e=C.minMatchCharLength){let r=[],n=-1,i=-1,o=0;for(let c=s.length;o<c;o+=1){let a=s[o];a&&n===-1?n=o:!a&&n!==-1&&(i=o-1,i-n+1>=e&&r.push([n,i]),n=-1)}return s[o-1]&&o-n>=e&&r.push([n,o-1]),r}const ue=32;function fs(s,e,r,{location:n=C.location,distance:i=C.distance,threshold:o=C.threshold,findAllMatches:c=C.findAllMatches,minMatchCharLength:a=C.minMatchCharLength,includeMatches:u=C.includeMatches,ignoreLocation:h=C.ignoreLocation}={}){if(e.length>ue)throw new Error(es(ue));const f=e.length,x=s.length,S=Math.max(0,Math.min(n,x));let E=o,y=S;const I=a>1||u,v=I?Array(x):[];let K;for(;(K=s.indexOf(e,y))>-1;){let P=we(e,{currentLocation:K,expectedLocation:S,distance:i,ignoreLocation:h});if(E=Math.min(P,E),y=K+f,I){let U=0;for(;U<f;)v[K+U]=1,U+=1}}y=-1;let b=[],H=1,G=f+x;const le=1<<f-1;for(let P=0;P<f;P+=1){let U=0,O=G;for(;U<O;)we(e,{errors:P,currentLocation:S+O,expectedLocation:S,distance:i,ignoreLocation:h})<=E?U=O:G=O,O=Math.floor((G-U)/2+U);G=O;let X=Math.max(1,S-O+1),J=c?x:Math.min(S+O,x)+f,B=Array(J+2);B[J+1]=(1<<P)-1;for(let M=J;M>=X;M-=1){let R=M-1,Y=r[s.charAt(R)];if(I&&(v[R]=+!!Y),B[M]=(B[M+1]<<1|1)&Y,P&&(B[M]|=(b[M+1]|b[M])<<1|1|b[M+1]),B[M]&le&&(H=we(e,{errors:P,currentLocation:R,expectedLocation:S,distance:i,ignoreLocation:h}),H<=E)){if(E=H,y=R,y<=S)break;X=Math.max(1,2*S-y)}}if(we(e,{errors:P+1,currentLocation:S,expectedLocation:S,distance:i,ignoreLocation:h})>E)break;b=B}const se={isMatch:y>=0,score:Math.max(.001,H)};if(I){const P=ds(v,a);P.length?u&&(se.indices=P):se.isMatch=!1}return se}function ms(s){let e={};for(let r=0,n=s.length;r<n;r+=1){const i=s.charAt(r);e[i]=(e[i]||0)|1<<n-r-1}return e}const _e=String.prototype.normalize?(s=>s.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,"")):(s=>s);class St{constructor(e,{location:r=C.location,threshold:n=C.threshold,distance:i=C.distance,includeMatches:o=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:a=C.minMatchCharLength,isCaseSensitive:u=C.isCaseSensitive,ignoreDiacritics:h=C.ignoreDiacritics,ignoreLocation:f=C.ignoreLocation}={}){if(this.options={location:r,threshold:n,distance:i,includeMatches:o,findAllMatches:c,minMatchCharLength:a,isCaseSensitive:u,ignoreDiacritics:h,ignoreLocation:f},e=u?e:e.toLowerCase(),e=h?_e(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const x=(E,y)=>{this.chunks.push({pattern:E,alphabet:ms(E),startIndex:y})},S=this.pattern.length;if(S>ue){let E=0;const y=S%ue,I=S-y;for(;E<I;)x(this.pattern.substr(E,ue),E),E+=ue;if(y){const v=S-ue;x(this.pattern.substr(v),v)}}else x(this.pattern,0)}searchIn(e){const{isCaseSensitive:r,ignoreDiacritics:n,includeMatches:i}=this.options;if(e=r?e:e.toLowerCase(),e=n?_e(e):e,this.pattern===e){let I={isMatch:!0,score:0};return i&&(I.indices=[[0,e.length-1]]),I}const{location:o,distance:c,threshold:a,findAllMatches:u,minMatchCharLength:h,ignoreLocation:f}=this.options;let x=[],S=0,E=!1;this.chunks.forEach(({pattern:I,alphabet:v,startIndex:K})=>{const{isMatch:b,score:H,indices:G}=fs(e,I,v,{location:o+K,distance:c,threshold:a,findAllMatches:u,minMatchCharLength:h,includeMatches:i,ignoreLocation:f});b&&(E=!0),S+=H,b&&G&&(x=[...x,...G])});let y={isMatch:E,score:E?S/this.chunks.length:1};return E&&i&&(y.indices=x),y}}class oe{constructor(e){this.pattern=e}static isMultiMatch(e){return ft(e,this.multiRegex)}static isSingleMatch(e){return ft(e,this.singleRegex)}search(){}}function ft(s,e){const r=s.match(e);return r?r[1]:null}class ps extends oe{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const r=e===this.pattern;return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}}class gs extends oe{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class As extends oe{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const r=e.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}}class ys extends oe{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const r=!e.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class Es extends oe{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const r=e.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class xs extends oe{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const r=!e.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class Ft extends oe{constructor(e,{location:r=C.location,threshold:n=C.threshold,distance:i=C.distance,includeMatches:o=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:a=C.minMatchCharLength,isCaseSensitive:u=C.isCaseSensitive,ignoreDiacritics:h=C.ignoreDiacritics,ignoreLocation:f=C.ignoreLocation}={}){super(e),this._bitapSearch=new St(e,{location:r,threshold:n,distance:i,includeMatches:o,findAllMatches:c,minMatchCharLength:a,isCaseSensitive:u,ignoreDiacritics:h,ignoreLocation:f})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class It extends oe{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let r=0,n;const i=[],o=this.pattern.length;for(;(n=e.indexOf(this.pattern,r))>-1;)r=n+o,i.push([n,r-1]);const c=!!i.length;return{isMatch:c,score:c?0:1,indices:i}}}const je=[ps,It,As,ys,xs,Es,gs,Ft],mt=je.length,Ms=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Cs="|";function Ss(s,e={}){return s.split(Cs).map(r=>{let n=r.trim().split(Ms).filter(o=>o&&!!o.trim()),i=[];for(let o=0,c=n.length;o<c;o+=1){const a=n[o];let u=!1,h=-1;for(;!u&&++h<mt;){const f=je[h];let x=f.isMultiMatch(a);x&&(i.push(new f(x,e)),u=!0)}if(!u)for(h=-1;++h<mt;){const f=je[h];let x=f.isSingleMatch(a);if(x){i.push(new f(x,e));break}}}return i})}const Fs=new Set([Ft.type,It.type]);class Is{constructor(e,{isCaseSensitive:r=C.isCaseSensitive,ignoreDiacritics:n=C.ignoreDiacritics,includeMatches:i=C.includeMatches,minMatchCharLength:o=C.minMatchCharLength,ignoreLocation:c=C.ignoreLocation,findAllMatches:a=C.findAllMatches,location:u=C.location,threshold:h=C.threshold,distance:f=C.distance}={}){this.query=null,this.options={isCaseSensitive:r,ignoreDiacritics:n,includeMatches:i,minMatchCharLength:o,findAllMatches:a,ignoreLocation:c,location:u,threshold:h,distance:f},e=r?e:e.toLowerCase(),e=n?_e(e):e,this.pattern=e,this.query=Ss(this.pattern,this.options)}static condition(e,r){return r.useExtendedSearch}searchIn(e){const r=this.query;if(!r)return{isMatch:!1,score:1};const{includeMatches:n,isCaseSensitive:i,ignoreDiacritics:o}=this.options;e=i?e:e.toLowerCase(),e=o?_e(e):e;let c=0,a=[],u=0;for(let h=0,f=r.length;h<f;h+=1){const x=r[h];a.length=0,c=0;for(let S=0,E=x.length;S<E;S+=1){const y=x[S],{isMatch:I,indices:v,score:K}=y.search(e);if(I){if(c+=1,u+=K,n){const b=y.constructor.type;Fs.has(b)?a=[...a,...v]:a.push(v)}}else{u=0,c=0,a.length=0;break}}if(c){let S={isMatch:!0,score:u/c};return n&&(S.indices=a),S}}return{isMatch:!1,score:1}}}const Ne=[];function ws(...s){Ne.push(...s)}function Pe(s,e){for(let r=0,n=Ne.length;r<n;r+=1){let i=Ne[r];if(i.condition(s,e))return new i(s,e)}return new St(s,e)}const De={AND:"$and",OR:"$or"},Ke={PATH:"$path",PATTERN:"$val"},ze=s=>!!(s[De.AND]||s[De.OR]),_s=s=>!!s[Ke.PATH],Ds=s=>!ie(s)&&Et(s)&&!ze(s),pt=s=>({[De.AND]:Object.keys(s).map(e=>({[e]:s[e]}))});function wt(s,e,{auto:r=!0}={}){const n=i=>{let o=Object.keys(i);const c=_s(i);if(!c&&o.length>1&&!ze(i))return n(pt(i));if(Ds(i)){const u=c?i[Ke.PATH]:o[0],h=c?i[Ke.PATTERN]:i[u];if(!te(h))throw new Error(Zt(u));const f={keyId:ke(u),pattern:h};return r&&(f.searcher=Pe(h,e)),f}let a={children:[],operator:o[0]};return o.forEach(u=>{const h=i[u];ie(h)&&h.forEach(f=>{a.children.push(n(f))})}),a};return ze(s)||(s=pt(s)),n(s)}function bs(s,{ignoreFieldNorm:e=C.ignoreFieldNorm}){s.forEach(r=>{let n=1;r.matches.forEach(({key:i,norm:o,score:c})=>{const a=i?i.weight:null;n*=Math.pow(c===0&&a?Number.EPSILON:c,(a||1)*(e?1:o))}),r.score=n})}function vs(s,e){const r=s.matches;e.matches=[],W(r)&&r.forEach(n=>{if(!W(n.indices)||!n.indices.length)return;const{indices:i,value:o}=n;let c={indices:i,value:o};n.key&&(c.key=n.key.src),n.idx>-1&&(c.refIndex=n.idx),e.matches.push(c)})}function Bs(s,e){e.score=s.score}function Rs(s,e,{includeMatches:r=C.includeMatches,includeScore:n=C.includeScore}={}){const i=[];return r&&i.push(vs),n&&i.push(Bs),s.map(o=>{const{idx:c}=o,a={item:e[c],refIndex:c};return i.length&&i.forEach(u=>{u(o,a)}),a})}class ee{constructor(e,r={},n){this.options={...C,...r},this.options.useExtendedSearch,this._keyStore=new rs(this.options.keys),this.setCollection(e,n)}setCollection(e,r){if(this._docs=e,r&&!(r instanceof Qe))throw new Error(Jt);this._myIndex=r||Ct(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){W(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const r=[];for(let n=0,i=this._docs.length;n<i;n+=1){const o=this._docs[n];e(o,n)&&(this.removeAt(n),n-=1,i-=1,r.push(o))}return r}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:r=-1}={}){const{includeMatches:n,includeScore:i,shouldSort:o,sortFn:c,ignoreFieldNorm:a}=this.options;let u=te(e)?te(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return bs(u,{ignoreFieldNorm:a}),o&&u.sort(c),yt(r)&&r>-1&&(u=u.slice(0,r)),Rs(u,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const r=Pe(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:o,i:c,n:a})=>{if(!W(o))return;const{isMatch:u,score:h,indices:f}=r.searchIn(o);u&&i.push({item:o,idx:c,matches:[{score:h,value:o,norm:a,indices:f}]})}),i}_searchLogical(e){const r=wt(e,this.options),n=(a,u,h)=>{if(!a.children){const{keyId:x,searcher:S}=a,E=this._findMatches({key:this._keyStore.get(x),value:this._myIndex.getValueForItemAtKeyId(u,x),searcher:S});return E&&E.length?[{idx:h,item:u,matches:E}]:[]}const f=[];for(let x=0,S=a.children.length;x<S;x+=1){const E=a.children[x],y=n(E,u,h);if(y.length)f.push(...y);else if(a.operator===De.AND)return[]}return f},i=this._myIndex.records,o={},c=[];return i.forEach(({$:a,i:u})=>{if(W(a)){let h=n(r,a,u);h.length&&(o[u]||(o[u]={idx:u,item:a,matches:[]},c.push(o[u])),h.forEach(({matches:f})=>{o[u].matches.push(...f)}))}}),c}_searchObjectList(e){const r=Pe(e,this.options),{keys:n,records:i}=this._myIndex,o=[];return i.forEach(({$:c,i:a})=>{if(!W(c))return;let u=[];n.forEach((h,f)=>{u.push(...this._findMatches({key:h,value:c[f],searcher:r}))}),u.length&&o.push({idx:a,item:c,matches:u})}),o}_findMatches({key:e,value:r,searcher:n}){if(!W(r))return[];let i=[];if(ie(r))r.forEach(({v:o,i:c,n:a})=>{if(!W(o))return;const{isMatch:u,score:h,indices:f}=n.searchIn(o);u&&i.push({score:h,key:e,value:o,idx:c,norm:a,indices:f})});else{const{v:o,n:c}=r,{isMatch:a,score:u,indices:h}=n.searchIn(o);a&&i.push({score:u,key:e,value:o,norm:c,indices:h})}return i}}ee.version="7.1.0";ee.createIndex=Ct;ee.parseIndex=hs;ee.config=C;ee.parseQuery=wt;ws(Is);async function Ts(s){const e=new URLSearchParams({q:s}),r=await Rt(Tt(`/api/folders/search?${e.toString()}`));if(!r.ok){const i=await r.json().catch(()=>({}));throw new Error(i.error||`Failed to search folders: ${r.statusText}`)}const n=await r.json();return Array.isArray(n.folders)?n.folders:[]}const $s=["command","agent","building","area","folder","file","modified-file","session"],Ls=2,ks=2,js=50,Ns=10,Ps=3,Ks=6;function zs(){const s=At(pe.SPOTLIGHT_TAB,"all");return fe.includes(s)?s:"all"}function gt(){return Ht(pe.SPOTLIGHT_QUERY,"")}function Qs(){const s=At(pe.AOP_CONFIG,{});return s.sortMode==="name"||s.sortMode==="status"||s.sortMode==="recent"?s.sortMode:"recent"}function Gs({isOpen:s,onClose:e,onOpenSpawnModal:r,onOpenCommanderView:n,onOpenToolbox:i,onOpenFileExplorer:o,onOpenPM2LogsModal:c,onOpenBossLogsModal:a,onOpenDatabasePanel:u,onOpenMonitoringModal:h,onOpenSessionFinder:f}){const x=$t(),S=Lt(),E=kt(),y=jt(),I=Nt(),v=Pt(),K=Kt(),b=d.useRef(e);b.current=e;const H=d.useRef(r);H.current=r;const G=d.useRef(n);G.current=n;const le=d.useRef(i);le.current=i;const se=d.useRef(o);se.current=o;const P=d.useRef(c);P.current=c;const U=d.useRef(a);U.current=a;const O=d.useRef(u);O.current=u;const X=d.useRef(h);X.current=h;const J=d.useRef(f);J.current=f;const[B,L]=d.useState(gt),[M,R]=d.useState(0),[Y,ce]=d.useState(zs),[Ge,ge]=d.useState([]),[Ue,Ae]=d.useState([]),[ye,Ee]=d.useState({query:"",rows:[]}),_t=d.useCallback(t=>{L(t),zt(pe.SPOTLIGHT_QUERY,t)},[]);d.useEffect(()=>{s&&(L(gt()),R(0))},[s]),d.useEffect(()=>{if(!s){ge([]);return}const t=B.trim();if(t.length<Ls){ge([]);return}let l=!1;const p=setTimeout(()=>{Ts(t).then(A=>{l||ge(A)}).catch(()=>{l||ge([])})},250);return()=>{l=!0,clearTimeout(p)}},[s,B]);const Dt=(y.fileSearchExcludeDirs??it).join(",");d.useEffect(()=>{if(!s){Ae([]);return}const t=B.trim();if(t.length<ks){Ae([]);return}let l=!1;const p=setTimeout(()=>{Qt(t,{exclude:y.fileSearchExcludeDirs??[...it],limit:js}).then(A=>{l||Ae(A)}).catch(()=>{l||Ae([])})},250);return()=>{l=!0,clearTimeout(p)}},[s,B,Dt,y.fileSearchExcludeDirs]),d.useEffect(()=>{if(!s){Ee({query:"",rows:[]});return}const t=B.trim();if(t.length<Ps){Ee({query:"",rows:[]});return}let l=!1;const p=setTimeout(()=>{Gt(t,{limit:Ks}).then(A=>{l||Ee({query:t,rows:A})}).catch(()=>{l||Ee({query:"",rows:[]})})},250);return()=>{l=!0,clearTimeout(p)}},[s,B]);const ve=d.useCallback(t=>{ce(t),Ut(pe.SPOTLIGHT_TAB,t)},[]),Oe=d.useRef(Y);Oe.current=Y;const bt=d.useCallback(t=>{const l=fe.indexOf(Oe.current),p=fe[(l+t+fe.length)%fe.length];ve(p)},[ve]);d.useEffect(()=>{R(0)},[Y]);const Be=k.getShortcuts(),me=d.useMemo(()=>s?Ot():{},[s]),xe=d.useMemo(()=>{if(!s)return[];const t=window.matchMedia("(pointer: coarse)").matches,l=Be.find(A=>A.id==="spawn-agent"),p=Be.find(A=>A.id==="toggle-commander");return[{id:"cmd-spawn",type:"command",title:"Spawn New Agent",subtitle:t?"":l?ot(l):"Alt+N",icon:m.jsx(Z,{name:"plus",size:16}),action:()=>{b.current(),H.current()}},{id:"cmd-commander",type:"command",title:"Commander View",subtitle:t?"":p!=null&&p.key?ot(p):"Tab",icon:m.jsx(Z,{name:"dashboard",size:16}),action:()=>{b.current(),G.current()}},{id:"cmd-settings",type:"command",title:"Settings & Tools",subtitle:"Configure Tide Commander",icon:m.jsx(Z,{name:"gear",size:16}),action:()=>{b.current(),le.current()}},{id:"cmd-monitoring",type:"command",title:"Monitoring & Logs",subtitle:"Triggers, workflows, events",icon:m.jsx(Z,{name:"chart-line",size:16}),action:()=>{var A;b.current(),(A=X.current)==null||A.call(X)}}]},[s,Be]),he=d.useMemo(()=>s?Array.from(x.values()).map(t=>{const l=(I||[]).filter(z=>z.agentId===t.id).map(z=>z.filePath),p=[...new Set(l)],A=p.map(z=>z.split("/").pop()||z),F=[];t.lastAssignedTask&&F.push(t.lastAssignedTask);const T=`${t.class} • ${t.cwd}`;let _=`${t.name} ${t.class} ${t.status} ${t.cwd}`;t.taskLabel&&(_+=` ${t.taskLabel}`),A.length>0&&(_+=` ${A.join(" ")} ${p.join(" ")}`),F.length>0&&(_+=` ${F.join(" ")}`);const j=Date.now()-t.lastActivity;let V;return t.lastAssignedTask&&(t.lastAssignedTask.length>150?V=t.lastAssignedTask.slice(0,150)+"...":V=t.lastAssignedTask),{id:`agent-${t.id}`,type:"agent",title:t.name,subtitle:T,lastUserInput:V,timeAway:j,icon:m.jsx(at,{agent:t,size:20}),_searchText:_,_modifiedFiles:p,_userQueries:F,_agentId:t.id,_lastActivity:t.lastActivity,_taskLabel:t.taskLabel,_status:t.status,action:()=>{b.current(),ct(t.id),k.selectAgent(t.id),k.getState().viewMode!=="flat"&&k.requestTerminalExpand()}}}):[],[s,x,I]),Me=d.useMemo(()=>s?Array.from(S.values()).map(t=>{var l;return{id:`area-${t.id}`,type:"area",title:t.name,subtitle:`${t.assignedAgentIds.length} agents • ${((l=t.directories)==null?void 0:l.length)||0} folders`,icon:m.jsx(Z,{name:"map",size:16}),action:()=>{b.current(),k.selectArea(t.id)}}}):[],[s,S]),We=d.useMemo(()=>{const t=new Map;for(const l of he)l._agentId&&t.set(l._agentId,l);return t},[he]),He=d.useMemo(()=>{const t=new Map;if(!s)return t;for(const l of x.values()){const p=k.getAreaForAgent(l.id);if(!p||p.archived)continue;const A=t.get(p.id);A?A.push(l):t.set(p.id,[l])}return t},[s,x,S]),Ye=d.useMemo(()=>{const t=new Map;for(const l of v)t.has(l.agentId)||t.set(l.agentId,l.timestamp);return t},[v]),Re=d.useMemo(()=>{if(!s)return[];const t=B.trim().toLowerCase(),l=Wt({sortMode:Qs(),agentsWithUnseenOutput:K,getLatestToolTimestamp:F=>Ye.get(F)}),p=Array.from(S.values()).filter(F=>!F.archived).filter(F=>t?F.name.toLowerCase().includes(t):!0).sort((F,T)=>F.name.localeCompare(T.name,void 0,{sensitivity:"base"})),A=[];for(const F of p){const _=(He.get(F.id)||[]).slice().sort(l).map(j=>We.get(j.id)).filter(j=>!!j);!t&&_.length===0||A.push({areaId:F.id,areaName:F.name,areaColor:F.color,agents:_})}return A},[s,B,S,He,We,K,Ye]),Ce=d.useMemo(()=>s?Array.from(E.values()).filter(t=>t.type==="server"||t.type==="boss"||t.type==="database"||t.type==="tests").map(t=>{var j,V,z,Fe,ae;const l=t.status==="running"?"#4ade80":t.status==="stopped"?"#f87171":"#facc15",p=t.type==="boss"?"crown":t.type==="database"?"database":t.type==="tests"?"flask":"desktop",A=t.type==="boss"?"Boss":t.type==="database"?"Database":t.type==="tests"?"Tests":"Server";let F=`${A} • ${t.status}`;if(t.type==="database"&&((V=(j=t.database)==null?void 0:j.connections)!=null&&V.length)){const N=t.database.connections[0];F+=` • ${N.engine} @ ${N.host}`}else t.type==="tests"&&t.folderPath?F=`${A} • ${t.folderPath}`:t.cwd&&(F+=` • ${t.cwd}`);const T=((z=t.pm2Status)==null?void 0:z.ports)||[];let _=`${t.name} ${t.type} ${t.status} ${t.cwd||""} ${((Fe=t.pm2)==null?void 0:Fe.name)||""}`;if(t.type==="tests"&&(_+=` ${t.folderPath||""} tests junit maven`),T.length>0&&(_+=` ${T.join(" ")}`),t.type==="database"&&((ae=t.database)!=null&&ae.connections))for(const N of t.database.connections)_+=` ${N.name} ${N.engine} ${N.host} ${N.database||""} mysql postgresql sql`;return{id:`building-${t.id}`,type:"building",title:t.name,subtitle:F,_ports:T,icon:m.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[m.jsx(Z,{name:"status-pending",size:10,weight:"fill",color:l}),m.jsx(Z,{name:p,size:16})]}),_searchText:_,action:()=>{var N;b.current(),t.type==="boss"?U.current(t.id):t.type==="database"?O.current(t.id):t.type==="tests"?k.openTestsBuilding(t.id):t.type==="http"?k.openHttpBuilding(t.id):(N=t.pm2)!=null&&N.enabled&&P.current(t.id)}}}):[],[s,E]),Ve=d.useMemo(()=>{if(!s)return[];const t=I||[],l=new Set,p=[];for(const A of t){if(l.has(A.filePath))continue;l.add(A.filePath);const F=A.filePath.split("/").pop()||A.filePath,T=A.action==="created"?"Created":A.action==="modified"?"Modified":A.action==="deleted"?"Deleted":"Read";if(p.push({id:`modified-${A.filePath}-${A.timestamp}`,type:"modified-file",title:F,subtitle:`${T} by ${A.agentName} • ${A.filePath}`,matchedText:A.filePath,icon:A.action==="deleted"?m.jsx(Z,{name:"trash",size:16}):ut(A.filePath),action:()=>{b.current();const _=Array.from(k.getState().areas.values());for(const j of _)for(const V of j.directories||[])if(A.filePath.startsWith(V)){k.setFileViewerPath(A.filePath),se.current(j.id);return}k.selectAgent(A.agentId)}}),p.length>=50)break}return p},[s,I]),qe=d.useMemo(()=>s?Ge.map(t=>{const l=t.isGitRepo&&t.gitBranch?`${t.path} • ${t.gitBranch}`:t.path;return{id:`folder-${t.path}`,type:"folder",title:t.name,subtitle:l,matchedText:t.path,icon:m.jsx(Z,{name:t.isGitRepo?"git-branch":"folder",size:16}),_searchText:`${t.name} ${t.path}`,_isGitRepo:t.isGitRepo,_gitBranch:t.gitBranch,action:()=>{b.current(),k.openFileExplorer(t.path)}}}):[],[s,Ge]),Se=d.useMemo(()=>s?Ue.map(t=>{const l=t.areaName&&t.areaName!==t.projectName?`${t.projectName} · ${t.areaName}`:t.projectName;return{id:`file-${t.path}`,type:"file",title:t.name,subtitle:t.relativePath,matchedText:`${t.path} ${l}`,icon:ut(t.path),_searchText:`${t.name} ${t.relativePath} ${t.path} ${t.projectName} ${t.areaName}`,_projectName:t.projectName,_areaName:t.areaName,action:()=>{b.current();const p=k.getState().areas.get(t.areaId),A=((p==null?void 0:p.directories)||[]).find(F=>F.replace(/\\/g,"/").replace(/\/+$/,"")===t.projectRoot.replace(/\/+$/,""))||t.projectRoot;k.revealFileInExplorer(t.path,A)}}}):[],[s,Ue]),Xe=d.useMemo(()=>{if(!s)return[];const t=l=>{const p=Date.now()-new Date(l).getTime();return!Number.isFinite(p)||p<0?"":p<36e5?`${Math.max(1,Math.floor(p/6e4))}m`:p<864e5?`${Math.floor(p/36e5)}h`:`${Math.floor(p/864e5)}d`};return ye.rows.map(l=>{const p=Array.from(x.values()).find(_=>_.sessionId===l.sessionId),A=(l.firstPrompt||l.snippet||l.sessionId).slice(0,90),F=[l.projectPath||l.projectDir];p&&F.push(`→ ${p.name}`);const T=t(l.lastModified);return T&&F.push(T),F.push(`${l.totalMatches}×`),{id:`session-${l.sessionId}`,type:"session",title:A,subtitle:F.join(" • "),matchedQuery:l.snippet||void 0,icon:p?m.jsx(at,{agent:p,size:20}):m.jsx(Z,{name:"history",size:16}),action:()=>{var j;b.current();const _=Array.from(k.getState().agents.values()).find(V=>V.sessionId===l.sessionId);_?(ct(_.id),k.selectAgent(_.id),k.getState().viewMode!=="flat"&&k.requestTerminalExpand(),k.requestTerminalSearch(_.id,ye.query)):(j=J.current)==null||j.call(J,{initialQuery:ye.query,initialSessionKey:`${l.projectPath}::${l.sessionId}`})}}})},[s,ye,x]),Je=d.useMemo(()=>new ee(he,{keys:["title","subtitle","_searchText","lastUserInput"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[he]),Ze=d.useMemo(()=>new ee(xe,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[xe]),et=d.useMemo(()=>new ee(Me,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[Me]),tt=d.useMemo(()=>new ee(Ve,{keys:["title","subtitle","matchedText"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[Ve]),st=d.useMemo(()=>new ee(Ce,{keys:["title","subtitle","_searchText"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[Ce]),de=d.useMemo(()=>{if(!B.trim()){const g=[];g.push(...Ce);const w=[...he].sort(($,Q)=>{const re=Ie($._agentId,$._lastActivity,me);return Ie(Q._agentId,Q._lastActivity,me)-re});g.push(...w),g.push(...xe.slice(0,2)),g.push(...Me.slice(0,2));const D={};return $s.forEach(($,Q)=>{D[$]=Q}),g.sort(($,Q)=>(D[$.type]??999)-(D[Q.type]??999)),g}const t=B.trim().toLowerCase(),l=Je.search(B).slice(0,8),p=Ze.search(B).slice(0,3),A=et.search(B).slice(0,2),F=tt.search(B).slice(0,3),T=qe.slice(0,8),_=Se.slice(0,Ns),j=st.search(B).filter(g=>{const w=g.score??1;return`${g.item.title} ${g.item.subtitle||""} ${g.item._searchText||""}`.toLowerCase().includes(t)||w<=.2}).slice(0,4),V={agent:6,building:5,folder:4,file:4,command:3,area:2,"modified-file":1,session:0},z=g=>{if(!t)return 1;const w=g.title.toLowerCase();return w===t?6:w.startsWith(t)?5:w.split(/[^a-z0-9]+/i).includes(t)?4:w.includes(t)?3:`${g.subtitle||""} ${g._searchText||""} ${g.matchedText||""}`.toLowerCase().includes(t)?2:1},Fe=(g,w)=>{const D=(1-Math.min(1,w??1))*4;return z(g)*100+(V[g.type]??0)*5+D},ae=new Map,N=(g,w)=>{const D=ae.get(g.type),$={item:g,score:Fe(g,w)};D?D.push($):ae.set(g.type,[$])};for(const g of l){const w={...g.item};if(w._modifiedFiles&&w._modifiedFiles.length>0){const D=w._modifiedFiles.filter($=>{var ne;const Q=((ne=$.split("/").pop())==null?void 0:ne.toLowerCase())||"",re=$.toLowerCase();return Q.includes(t)||re.includes(t)});D.length>0&&(w.matchedFiles=D)}if(w._userQueries&&w._userQueries.length>0){const D=w._userQueries.find($=>$.toLowerCase().includes(t));if(D)if(D.length>200){const Q=D.toLowerCase().indexOf(t),re=Math.max(0,Q-60),ne=Math.min(D.length,Q+t.length+100);w.matchedQuery=(re>0?"...":"")+D.slice(re,ne)+(ne<D.length?"...":"")}else w.matchedQuery=D}N(w,g.score)}for(const g of j)N(g.item,g.score);for(const g of p)N(g.item,g.score);for(const g of A)N(g.item,g.score);for(const g of F)N(g.item,g.score);for(const g of T)N(g,void 0);for(const g of _)N(g,void 0);for(const[g,w]of ae)g==="agent"?w.sort((D,$)=>{const Q=z(D.item),re=z($.item);if(re!==Q)return re-Q;const ne=Ie(D.item._agentId,D.item._lastActivity,me),nt=Ie($.item._agentId,$.item._lastActivity,me);return nt!==ne?nt-ne:$.score-D.score}):w.sort((D,$)=>$.score-D.score);const rt=g=>g.reduce((w,D)=>Math.max(w,D.score),-1),Te=[];Array.from(ae.values()).sort((g,w)=>rt(w)-rt(g)).forEach(g=>{for(const w of g)Te.push(w.item)});for(const g of Xe)Te.push(g);return Te},[B,Je,Ze,et,tt,st,xe,he,Me,Ce,qe,Se,Xe,me]),q=d.useMemo(()=>{switch(Y){case"agents":return de.filter(t=>t.type==="agent");case"buildings":return de.filter(t=>t.type==="building");case"commands":return de.filter(t=>t.type==="command");case"folders":return de.filter(t=>t.type==="folder");case"files":return Se;case"areas":return Re.flatMap(t=>t.agents);case"all":default:return de}},[Y,de,Re,Se]);d.useEffect(()=>{M>=q.length&&R(Math.max(0,q.length-1))},[q.length,M]);const vt=d.useCallback(t=>{if(t.altKey&&!t.ctrlKey&&!t.metaKey&&(t.key==="p"||t.key==="n"||t.key==="P"||t.key==="N")){t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation();const l=t.key.toLowerCase();R(l==="p"?p=>p>0?p-1:q.length-1:p=>p<q.length-1?p+1:0);return}switch(t.key){case"Escape":t.preventDefault(),b.current();break;case"ArrowUp":t.preventDefault(),R(l=>l>0?l-1:q.length-1);break;case"ArrowDown":t.preventDefault(),R(l=>l<q.length-1?l+1:0);break;case"Enter":t.preventDefault(),q[M]&&q[M].action();break}},[q,M]),Bt=d.useCallback((t,l)=>{if(!l||!t)return t;const p=t.toLowerCase(),A=l.toLowerCase(),F=[];let T=0,_=p.indexOf(A),j=0;for(;_!==-1;)_>T&&F.push(t.slice(T,_)),F.push($e.createElement("mark",{key:j++,className:"spotlight-highlight"},t.slice(_,_+l.length))),T=_+l.length,_=p.indexOf(A,T);return T<t.length&&F.push(t.slice(T)),F.length>0?$e.createElement($e.Fragment,null,...F):t},[]);return{query:B,setQuery:_t,selectedIndex:M,setSelectedIndex:R,results:q,activeTab:Y,setActiveTab:ve,cycleTab:bt,areaSections:Re,handleKeyDown:vt,highlightMatch:Bt}}const Us=d.forwardRef(function({query:e,onQueryChange:r,onKeyDown:n,onResetSelection:i},o){const{t:c}=be(["common"]);return m.jsxs("div",{className:"spotlight-input-wrapper",children:[m.jsx("span",{className:"spotlight-search-icon",children:"⌘"}),m.jsx("input",{ref:o,type:"text",className:"spotlight-input",placeholder:c("common:search.spotlightPlaceholder"),value:e,onChange:a=>{r(a.target.value),i()},onKeyDown:n,autoFocus:!0,spellCheck:!1}),m.jsxs("div",{className:"spotlight-input-hints",children:[m.jsx("span",{className:"spotlight-shortcut-hint",children:"↑↓"}),m.jsx("span",{className:"spotlight-shortcut-hint",children:"Enter"}),m.jsx("span",{className:"spotlight-shortcut-hint",children:"Esc"})]})]})}),Os=d.memo(function({activeTab:e,onSelect:r}){const{t:n}=be(["terminal"]);return m.jsxs("div",{className:"spotlight-tabs",role:"tablist","aria-label":n("terminal:spotlight.tabsLabel"),children:[fe.map(i=>m.jsx("button",{type:"button",role:"tab","aria-selected":i===e,tabIndex:-1,className:`spotlight-tab${i===e?" active":""}`,onClick:()=>r(i),children:n(`terminal:spotlight.tabs.${i}`)},i)),m.jsx("span",{className:"spotlight-tabs-hint",children:m.jsx("kbd",{children:"Tab"})})]})}),Ws=d.forwardRef(function({results:e,selectedIndex:r,query:n,activeTab:i,areaSections:o,highlightMatch:c,onSelectIndex:a},u){const{t:h}=be(["terminal"]),f=d.useRef(!1);d.useEffect(()=>{f.current=!1},[e]),d.useEffect(()=>{const E=typeof u=="function"?null:u==null?void 0:u.current;if(!E)return;const y=()=>{f.current=!0};return E.addEventListener("mousemove",y),()=>{E.removeEventListener("mousemove",y)}},[u,e]);const x={command:h("terminal:spotlight.categories.commands"),agent:h("terminal:spotlight.categories.agents"),building:h("terminal:spotlight.categories.infrastructure"),area:h("terminal:spotlight.categories.areas"),folder:h("terminal:spotlight.categories.folders"),file:h("terminal:spotlight.categories.files"),"modified-file":h("terminal:spotlight.categories.modifiedFiles"),session:h("terminal:spotlight.categories.sessions")},S=d.useMemo(()=>{const E=[];let y=null,I=[];return e.forEach((v,K)=>{v.type!==y&&(y!==null&&I.length>0&&E.push([y,I]),y=v.type,I=[]),I.push({result:v,index:K})}),y!==null&&I.length>0&&E.push([y,I]),E},[e]);if(d.useEffect(()=>{if(!u||typeof u=="function")return;const E=u.current;if(!E)return;const y=E.querySelector(".spotlight-item.selected");y&&y.scrollIntoView({block:"nearest",behavior:"smooth"})},[r,u]),i==="areas"){if(o.length===0)return m.jsx("div",{className:"spotlight-results",ref:u,children:m.jsx("div",{className:"spotlight-empty",children:h("terminal:spotlight.noResults")})});let E=0;return m.jsx("div",{className:"spotlight-results",ref:u,children:o.map(y=>m.jsxs("div",{children:[m.jsxs("div",{className:"spotlight-category-header spotlight-area-section-header",children:[m.jsx("span",{className:"spotlight-area-dot",style:{background:y.areaColor},"aria-hidden":"true"}),m.jsx("span",{className:"spotlight-area-name",children:y.areaName}),m.jsx("span",{className:"spotlight-area-count",children:y.agents.length})]}),y.agents.length===0?m.jsx("div",{className:"spotlight-area-empty",children:h("terminal:spotlight.noAgentsInArea")}):y.agents.map(I=>{const v=E++;return m.jsx(lt,{result:I,isSelected:v===r,query:n,highlightMatch:c,onClick:()=>I.action(),onMouseEnter:()=>{f.current&&a(v)}},I.id)})]},y.areaId))})}return e.length===0?m.jsx("div",{className:"spotlight-results",ref:u,children:m.jsx("div",{className:"spotlight-empty",children:h("terminal:spotlight.noResults")})}):m.jsx("div",{className:"spotlight-results",ref:u,children:S.map(([E,y])=>m.jsxs("div",{children:[S.length>1&&m.jsx("div",{className:"spotlight-category-header",children:x[E]||E}),y.map(({result:I,index:v})=>m.jsx(lt,{result:I,isSelected:v===r,query:n,highlightMatch:c,onClick:()=>I.action(),onMouseEnter:()=>{f.current&&a(v)}},I.id))]},E))})}),Hs=d.memo(function(){const{t:e}=be(["terminal"]);return m.jsxs("div",{className:"spotlight-footer",children:[m.jsxs("div",{className:"spotlight-footer-left",children:[m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"↑"}),m.jsx("kbd",{children:"↓"})," ",m.jsx("kbd",{children:"Alt+N"}),m.jsx("kbd",{children:"Alt+P"})," ",e("terminal:spotlight.navigate")]}),m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"Enter"})," ",e("terminal:spotlight.select")]}),m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"Tab"})," ",e("terminal:spotlight.switchTabs")]})]}),m.jsx("div",{className:"spotlight-footer-right",children:m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"Esc"})," ",e("common:buttons.close")]})})]})}),Ys=768;function Js({isOpen:s,onClose:e,onOpenSpawnModal:r,onOpenCommanderView:n,onOpenToolbox:i,onOpenFileExplorer:o,onOpenPM2LogsModal:c,onOpenBossLogsModal:a,onOpenDatabasePanel:u,onOpenMonitoringModal:h,onOpenSessionFinder:f}){const x=d.useRef(null),S=d.useRef(null),E=d.useRef(null),y=d.useRef(0),{query:I,setQuery:v,selectedIndex:K,setSelectedIndex:b,results:H,activeTab:G,setActiveTab:le,cycleTab:se,areaSections:P,handleKeyDown:U,highlightMatch:O}=Gs({isOpen:s,onClose:e,onOpenSpawnModal:r,onOpenCommanderView:n,onOpenToolbox:i,onOpenFileExplorer:o,onOpenPM2LogsModal:c,onOpenBossLogsModal:a,onOpenDatabasePanel:u,onOpenMonitoringModal:h,onOpenSessionFinder:f});y.current=H.length;const X=d.useRef(se);X.current=se,d.useEffect(()=>{s&&setTimeout(()=>{var L,M;(L=x.current)==null||L.focus(),(M=x.current)==null||M.select()},50)},[s]),d.useEffect(()=>{if(!s)return;const L=window.visualViewport;if(!L||window.innerWidth>Ys)return;const M=()=>{const R=S.current;R&&(R.style.height=`${L.height}px`,R.style.top=`${L.offsetTop}px`)};return M(),L.addEventListener("resize",M),L.addEventListener("scroll",M),()=>{L.removeEventListener("resize",M),L.removeEventListener("scroll",M);const R=S.current;R&&(R.style.height="",R.style.top="")}},[s]),d.useEffect(()=>{if(!s)return;const L=M=>{if(M.key==="Escape"){M.preventDefault(),M.stopPropagation(),M.stopImmediatePropagation(),e();return}if(M.key==="Tab"){M.preventDefault(),M.stopPropagation(),M.stopImmediatePropagation(),X.current(M.shiftKey?-1:1);return}if(M.altKey&&!M.ctrlKey&&!M.metaKey&&(M.key==="n"||M.key==="p"||M.key==="N"||M.key==="P")){M.preventDefault(),M.stopPropagation(),M.stopImmediatePropagation();const R=M.key.toLowerCase(),Y=y.current;b(R==="p"?ce=>ce>0?ce-1:Y-1:ce=>ce<Y-1?ce+1:0);return}};return window.addEventListener("keydown",L,{capture:!0}),()=>{window.removeEventListener("keydown",L,{capture:!0})}},[s,e]);const J=d.useCallback(L=>{L.target===L.currentTarget&&e()},[e]),B=d.useCallback(()=>{b(0)},[b]);return s?m.jsx("div",{ref:S,className:"spotlight-overlay",onClick:J,children:m.jsxs("div",{className:"spotlight-modal",children:[m.jsx(Us,{ref:x,query:I,onQueryChange:v,onKeyDown:U,onResetSelection:B}),m.jsx(Os,{activeTab:G,onSelect:le}),m.jsx(Ws,{ref:E,results:H,selectedIndex:K,query:I,activeTab:G,areaSections:P,highlightMatch:O,onSelectIndex:b}),m.jsx(Hs,{})]})}):null}export{tr as FILE_ICON_NAMES,Js as Spotlight,Hs as SpotlightFooter,Us as SpotlightInput,lt as SpotlightItem,Ws as SpotlightResults,sr as formatDuration,rr as formatRelativeTime,nr as getAgentIcon,ut as getFileIconFromPath,ir as getTypeLabel,Gs as useSpotlightSearch};
|
|
1
|
+
import{c as Rt,d as Tt,z as $t,a0 as Lt,f as kt,bp as jt,bN as Nt,bO as Pt,aa as Kt,r as d,y as zt,S as pe,bP as it,bQ as Qt,bR as Gt,ar as Ut,bS as fe,s as k,bT as Ot,j as m,I as Z,V as ot,bU as ct,n as at,bV as Wt,bW as ut,bX as Ie,U as $e,m as Ht,aq as At,u as be,bY as lt}from"./main-DGmjsdfM.js";import{bZ as tr,b_ as sr,b$ as rr,c0 as nr,c1 as ir}from"./main-DGmjsdfM.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-CBPuP1jE.js";function ie(s){return Array.isArray?Array.isArray(s):xt(s)==="[object Array]"}function Yt(s){if(typeof s=="string")return s;let e=s+"";return e=="0"&&1/s==-1/0?"-0":e}function Vt(s){return s==null?"":Yt(s)}function te(s){return typeof s=="string"}function yt(s){return typeof s=="number"}function qt(s){return s===!0||s===!1||Xt(s)&&xt(s)=="[object Boolean]"}function Et(s){return typeof s=="object"}function Xt(s){return Et(s)&&s!==null}function W(s){return s!=null}function Le(s){return!s.trim().length}function xt(s){return s==null?s===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(s)}const Jt="Incorrect 'index' type",Zt=s=>`Invalid value for key ${s}`,es=s=>`Pattern length exceeds max of ${s}.`,ts=s=>`Missing ${s} property in key`,ss=s=>`Property 'weight' in key '${s}' must be a positive integer`,ht=Object.prototype.hasOwnProperty;class rs{constructor(e){this._keys=[],this._keyMap={};let r=0;e.forEach(n=>{let i=Mt(n);this._keys.push(i),this._keyMap[i.id]=i,r+=i.weight}),this._keys.forEach(n=>{n.weight/=r})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function Mt(s){let e=null,r=null,n=null,i=1,o=null;if(te(s)||ie(s))n=s,e=dt(s),r=ke(s);else{if(!ht.call(s,"name"))throw new Error(ts("name"));const c=s.name;if(n=c,ht.call(s,"weight")&&(i=s.weight,i<=0))throw new Error(ss(c));e=dt(c),r=ke(c),o=s.getFn}return{path:e,id:r,weight:i,src:n,getFn:o}}function dt(s){return ie(s)?s:s.split(".")}function ke(s){return ie(s)?s.join("."):s}function ns(s,e){let r=[],n=!1;const i=(o,c,a)=>{if(W(o))if(!c[a])r.push(o);else{let u=c[a];const h=o[u];if(!W(h))return;if(a===c.length-1&&(te(h)||yt(h)||qt(h)))r.push(Vt(h));else if(ie(h)){n=!0;for(let f=0,x=h.length;f<x;f+=1)i(h[f],c,a+1)}else c.length&&i(h,c,a+1)}};return i(s,te(e)?e.split("."):e,0),n?r:r[0]}const is={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},os={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(s,e)=>s.score===e.score?s.idx<e.idx?-1:1:s.score<e.score?-1:1},cs={location:0,threshold:.6,distance:100},as={useExtendedSearch:!1,getFn:ns,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1};var C={...os,...is,...cs,...as};const us=/[^ ]+/g;function ls(s=1,e=3){const r=new Map,n=Math.pow(10,e);return{get(i){const o=i.match(us).length;if(r.has(o))return r.get(o);const c=1/Math.pow(o,.5*s),a=parseFloat(Math.round(c*n)/n);return r.set(o,a),a},clear(){r.clear()}}}class Qe{constructor({getFn:e=C.getFn,fieldNormWeight:r=C.fieldNormWeight}={}){this.norm=ls(r,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((r,n)=>{this._keysMap[r.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,te(this.docs[0])?this.docs.forEach((e,r)=>{this._addString(e,r)}):this.docs.forEach((e,r)=>{this._addObject(e,r)}),this.norm.clear())}add(e){const r=this.size();te(e)?this._addString(e,r):this._addObject(e,r)}removeAt(e){this.records.splice(e,1);for(let r=e,n=this.size();r<n;r+=1)this.records[r].i-=1}getValueForItemAtKeyId(e,r){return e[this._keysMap[r]]}size(){return this.records.length}_addString(e,r){if(!W(e)||Le(e))return;let n={v:e,i:r,n:this.norm.get(e)};this.records.push(n)}_addObject(e,r){let n={i:r,$:{}};this.keys.forEach((i,o)=>{let c=i.getFn?i.getFn(e):this.getFn(e,i.path);if(W(c)){if(ie(c)){let a=[];const u=[{nestedArrIndex:-1,value:c}];for(;u.length;){const{nestedArrIndex:h,value:f}=u.pop();if(W(f))if(te(f)&&!Le(f)){let x={v:f,i:h,n:this.norm.get(f)};a.push(x)}else ie(f)&&f.forEach((x,S)=>{u.push({nestedArrIndex:S,value:x})})}n.$[o]=a}else if(te(c)&&!Le(c)){let a={v:c,n:this.norm.get(c)};n.$[o]=a}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function Ct(s,e,{getFn:r=C.getFn,fieldNormWeight:n=C.fieldNormWeight}={}){const i=new Qe({getFn:r,fieldNormWeight:n});return i.setKeys(s.map(Mt)),i.setSources(e),i.create(),i}function hs(s,{getFn:e=C.getFn,fieldNormWeight:r=C.fieldNormWeight}={}){const{keys:n,records:i}=s,o=new Qe({getFn:e,fieldNormWeight:r});return o.setKeys(n),o.setIndexRecords(i),o}function we(s,{errors:e=0,currentLocation:r=0,expectedLocation:n=0,distance:i=C.distance,ignoreLocation:o=C.ignoreLocation}={}){const c=e/s.length;if(o)return c;const a=Math.abs(n-r);return i?c+a/i:a?1:c}function ds(s=[],e=C.minMatchCharLength){let r=[],n=-1,i=-1,o=0;for(let c=s.length;o<c;o+=1){let a=s[o];a&&n===-1?n=o:!a&&n!==-1&&(i=o-1,i-n+1>=e&&r.push([n,i]),n=-1)}return s[o-1]&&o-n>=e&&r.push([n,o-1]),r}const ue=32;function fs(s,e,r,{location:n=C.location,distance:i=C.distance,threshold:o=C.threshold,findAllMatches:c=C.findAllMatches,minMatchCharLength:a=C.minMatchCharLength,includeMatches:u=C.includeMatches,ignoreLocation:h=C.ignoreLocation}={}){if(e.length>ue)throw new Error(es(ue));const f=e.length,x=s.length,S=Math.max(0,Math.min(n,x));let E=o,y=S;const I=a>1||u,v=I?Array(x):[];let K;for(;(K=s.indexOf(e,y))>-1;){let P=we(e,{currentLocation:K,expectedLocation:S,distance:i,ignoreLocation:h});if(E=Math.min(P,E),y=K+f,I){let U=0;for(;U<f;)v[K+U]=1,U+=1}}y=-1;let b=[],H=1,G=f+x;const le=1<<f-1;for(let P=0;P<f;P+=1){let U=0,O=G;for(;U<O;)we(e,{errors:P,currentLocation:S+O,expectedLocation:S,distance:i,ignoreLocation:h})<=E?U=O:G=O,O=Math.floor((G-U)/2+U);G=O;let X=Math.max(1,S-O+1),J=c?x:Math.min(S+O,x)+f,B=Array(J+2);B[J+1]=(1<<P)-1;for(let M=J;M>=X;M-=1){let R=M-1,Y=r[s.charAt(R)];if(I&&(v[R]=+!!Y),B[M]=(B[M+1]<<1|1)&Y,P&&(B[M]|=(b[M+1]|b[M])<<1|1|b[M+1]),B[M]&le&&(H=we(e,{errors:P,currentLocation:R,expectedLocation:S,distance:i,ignoreLocation:h}),H<=E)){if(E=H,y=R,y<=S)break;X=Math.max(1,2*S-y)}}if(we(e,{errors:P+1,currentLocation:S,expectedLocation:S,distance:i,ignoreLocation:h})>E)break;b=B}const se={isMatch:y>=0,score:Math.max(.001,H)};if(I){const P=ds(v,a);P.length?u&&(se.indices=P):se.isMatch=!1}return se}function ms(s){let e={};for(let r=0,n=s.length;r<n;r+=1){const i=s.charAt(r);e[i]=(e[i]||0)|1<<n-r-1}return e}const _e=String.prototype.normalize?(s=>s.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,"")):(s=>s);class St{constructor(e,{location:r=C.location,threshold:n=C.threshold,distance:i=C.distance,includeMatches:o=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:a=C.minMatchCharLength,isCaseSensitive:u=C.isCaseSensitive,ignoreDiacritics:h=C.ignoreDiacritics,ignoreLocation:f=C.ignoreLocation}={}){if(this.options={location:r,threshold:n,distance:i,includeMatches:o,findAllMatches:c,minMatchCharLength:a,isCaseSensitive:u,ignoreDiacritics:h,ignoreLocation:f},e=u?e:e.toLowerCase(),e=h?_e(e):e,this.pattern=e,this.chunks=[],!this.pattern.length)return;const x=(E,y)=>{this.chunks.push({pattern:E,alphabet:ms(E),startIndex:y})},S=this.pattern.length;if(S>ue){let E=0;const y=S%ue,I=S-y;for(;E<I;)x(this.pattern.substr(E,ue),E),E+=ue;if(y){const v=S-ue;x(this.pattern.substr(v),v)}}else x(this.pattern,0)}searchIn(e){const{isCaseSensitive:r,ignoreDiacritics:n,includeMatches:i}=this.options;if(e=r?e:e.toLowerCase(),e=n?_e(e):e,this.pattern===e){let I={isMatch:!0,score:0};return i&&(I.indices=[[0,e.length-1]]),I}const{location:o,distance:c,threshold:a,findAllMatches:u,minMatchCharLength:h,ignoreLocation:f}=this.options;let x=[],S=0,E=!1;this.chunks.forEach(({pattern:I,alphabet:v,startIndex:K})=>{const{isMatch:b,score:H,indices:G}=fs(e,I,v,{location:o+K,distance:c,threshold:a,findAllMatches:u,minMatchCharLength:h,includeMatches:i,ignoreLocation:f});b&&(E=!0),S+=H,b&&G&&(x=[...x,...G])});let y={isMatch:E,score:E?S/this.chunks.length:1};return E&&i&&(y.indices=x),y}}class oe{constructor(e){this.pattern=e}static isMultiMatch(e){return ft(e,this.multiRegex)}static isSingleMatch(e){return ft(e,this.singleRegex)}search(){}}function ft(s,e){const r=s.match(e);return r?r[1]:null}class ps extends oe{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const r=e===this.pattern;return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}}class gs extends oe{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const n=e.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,e.length-1]}}}class As extends oe{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const r=e.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}}class ys extends oe{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const r=!e.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class Es extends oe{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const r=e.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}class xs extends oe{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const r=!e.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,e.length-1]}}}class Ft extends oe{constructor(e,{location:r=C.location,threshold:n=C.threshold,distance:i=C.distance,includeMatches:o=C.includeMatches,findAllMatches:c=C.findAllMatches,minMatchCharLength:a=C.minMatchCharLength,isCaseSensitive:u=C.isCaseSensitive,ignoreDiacritics:h=C.ignoreDiacritics,ignoreLocation:f=C.ignoreLocation}={}){super(e),this._bitapSearch=new St(e,{location:r,threshold:n,distance:i,includeMatches:o,findAllMatches:c,minMatchCharLength:a,isCaseSensitive:u,ignoreDiacritics:h,ignoreLocation:f})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class It extends oe{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let r=0,n;const i=[],o=this.pattern.length;for(;(n=e.indexOf(this.pattern,r))>-1;)r=n+o,i.push([n,r-1]);const c=!!i.length;return{isMatch:c,score:c?0:1,indices:i}}}const je=[ps,It,As,ys,xs,Es,gs,Ft],mt=je.length,Ms=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Cs="|";function Ss(s,e={}){return s.split(Cs).map(r=>{let n=r.trim().split(Ms).filter(o=>o&&!!o.trim()),i=[];for(let o=0,c=n.length;o<c;o+=1){const a=n[o];let u=!1,h=-1;for(;!u&&++h<mt;){const f=je[h];let x=f.isMultiMatch(a);x&&(i.push(new f(x,e)),u=!0)}if(!u)for(h=-1;++h<mt;){const f=je[h];let x=f.isSingleMatch(a);if(x){i.push(new f(x,e));break}}}return i})}const Fs=new Set([Ft.type,It.type]);class Is{constructor(e,{isCaseSensitive:r=C.isCaseSensitive,ignoreDiacritics:n=C.ignoreDiacritics,includeMatches:i=C.includeMatches,minMatchCharLength:o=C.minMatchCharLength,ignoreLocation:c=C.ignoreLocation,findAllMatches:a=C.findAllMatches,location:u=C.location,threshold:h=C.threshold,distance:f=C.distance}={}){this.query=null,this.options={isCaseSensitive:r,ignoreDiacritics:n,includeMatches:i,minMatchCharLength:o,findAllMatches:a,ignoreLocation:c,location:u,threshold:h,distance:f},e=r?e:e.toLowerCase(),e=n?_e(e):e,this.pattern=e,this.query=Ss(this.pattern,this.options)}static condition(e,r){return r.useExtendedSearch}searchIn(e){const r=this.query;if(!r)return{isMatch:!1,score:1};const{includeMatches:n,isCaseSensitive:i,ignoreDiacritics:o}=this.options;e=i?e:e.toLowerCase(),e=o?_e(e):e;let c=0,a=[],u=0;for(let h=0,f=r.length;h<f;h+=1){const x=r[h];a.length=0,c=0;for(let S=0,E=x.length;S<E;S+=1){const y=x[S],{isMatch:I,indices:v,score:K}=y.search(e);if(I){if(c+=1,u+=K,n){const b=y.constructor.type;Fs.has(b)?a=[...a,...v]:a.push(v)}}else{u=0,c=0,a.length=0;break}}if(c){let S={isMatch:!0,score:u/c};return n&&(S.indices=a),S}}return{isMatch:!1,score:1}}}const Ne=[];function ws(...s){Ne.push(...s)}function Pe(s,e){for(let r=0,n=Ne.length;r<n;r+=1){let i=Ne[r];if(i.condition(s,e))return new i(s,e)}return new St(s,e)}const De={AND:"$and",OR:"$or"},Ke={PATH:"$path",PATTERN:"$val"},ze=s=>!!(s[De.AND]||s[De.OR]),_s=s=>!!s[Ke.PATH],Ds=s=>!ie(s)&&Et(s)&&!ze(s),pt=s=>({[De.AND]:Object.keys(s).map(e=>({[e]:s[e]}))});function wt(s,e,{auto:r=!0}={}){const n=i=>{let o=Object.keys(i);const c=_s(i);if(!c&&o.length>1&&!ze(i))return n(pt(i));if(Ds(i)){const u=c?i[Ke.PATH]:o[0],h=c?i[Ke.PATTERN]:i[u];if(!te(h))throw new Error(Zt(u));const f={keyId:ke(u),pattern:h};return r&&(f.searcher=Pe(h,e)),f}let a={children:[],operator:o[0]};return o.forEach(u=>{const h=i[u];ie(h)&&h.forEach(f=>{a.children.push(n(f))})}),a};return ze(s)||(s=pt(s)),n(s)}function bs(s,{ignoreFieldNorm:e=C.ignoreFieldNorm}){s.forEach(r=>{let n=1;r.matches.forEach(({key:i,norm:o,score:c})=>{const a=i?i.weight:null;n*=Math.pow(c===0&&a?Number.EPSILON:c,(a||1)*(e?1:o))}),r.score=n})}function vs(s,e){const r=s.matches;e.matches=[],W(r)&&r.forEach(n=>{if(!W(n.indices)||!n.indices.length)return;const{indices:i,value:o}=n;let c={indices:i,value:o};n.key&&(c.key=n.key.src),n.idx>-1&&(c.refIndex=n.idx),e.matches.push(c)})}function Bs(s,e){e.score=s.score}function Rs(s,e,{includeMatches:r=C.includeMatches,includeScore:n=C.includeScore}={}){const i=[];return r&&i.push(vs),n&&i.push(Bs),s.map(o=>{const{idx:c}=o,a={item:e[c],refIndex:c};return i.length&&i.forEach(u=>{u(o,a)}),a})}class ee{constructor(e,r={},n){this.options={...C,...r},this.options.useExtendedSearch,this._keyStore=new rs(this.options.keys),this.setCollection(e,n)}setCollection(e,r){if(this._docs=e,r&&!(r instanceof Qe))throw new Error(Jt);this._myIndex=r||Ct(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){W(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=()=>!1){const r=[];for(let n=0,i=this._docs.length;n<i;n+=1){const o=this._docs[n];e(o,n)&&(this.removeAt(n),n-=1,i-=1,r.push(o))}return r}removeAt(e){this._docs.splice(e,1),this._myIndex.removeAt(e)}getIndex(){return this._myIndex}search(e,{limit:r=-1}={}){const{includeMatches:n,includeScore:i,shouldSort:o,sortFn:c,ignoreFieldNorm:a}=this.options;let u=te(e)?te(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return bs(u,{ignoreFieldNorm:a}),o&&u.sort(c),yt(r)&&r>-1&&(u=u.slice(0,r)),Rs(u,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(e){const r=Pe(e,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:o,i:c,n:a})=>{if(!W(o))return;const{isMatch:u,score:h,indices:f}=r.searchIn(o);u&&i.push({item:o,idx:c,matches:[{score:h,value:o,norm:a,indices:f}]})}),i}_searchLogical(e){const r=wt(e,this.options),n=(a,u,h)=>{if(!a.children){const{keyId:x,searcher:S}=a,E=this._findMatches({key:this._keyStore.get(x),value:this._myIndex.getValueForItemAtKeyId(u,x),searcher:S});return E&&E.length?[{idx:h,item:u,matches:E}]:[]}const f=[];for(let x=0,S=a.children.length;x<S;x+=1){const E=a.children[x],y=n(E,u,h);if(y.length)f.push(...y);else if(a.operator===De.AND)return[]}return f},i=this._myIndex.records,o={},c=[];return i.forEach(({$:a,i:u})=>{if(W(a)){let h=n(r,a,u);h.length&&(o[u]||(o[u]={idx:u,item:a,matches:[]},c.push(o[u])),h.forEach(({matches:f})=>{o[u].matches.push(...f)}))}}),c}_searchObjectList(e){const r=Pe(e,this.options),{keys:n,records:i}=this._myIndex,o=[];return i.forEach(({$:c,i:a})=>{if(!W(c))return;let u=[];n.forEach((h,f)=>{u.push(...this._findMatches({key:h,value:c[f],searcher:r}))}),u.length&&o.push({idx:a,item:c,matches:u})}),o}_findMatches({key:e,value:r,searcher:n}){if(!W(r))return[];let i=[];if(ie(r))r.forEach(({v:o,i:c,n:a})=>{if(!W(o))return;const{isMatch:u,score:h,indices:f}=n.searchIn(o);u&&i.push({score:h,key:e,value:o,idx:c,norm:a,indices:f})});else{const{v:o,n:c}=r,{isMatch:a,score:u,indices:h}=n.searchIn(o);a&&i.push({score:u,key:e,value:o,norm:c,indices:h})}return i}}ee.version="7.1.0";ee.createIndex=Ct;ee.parseIndex=hs;ee.config=C;ee.parseQuery=wt;ws(Is);async function Ts(s){const e=new URLSearchParams({q:s}),r=await Rt(Tt(`/api/folders/search?${e.toString()}`));if(!r.ok){const i=await r.json().catch(()=>({}));throw new Error(i.error||`Failed to search folders: ${r.statusText}`)}const n=await r.json();return Array.isArray(n.folders)?n.folders:[]}const $s=["command","agent","building","area","folder","file","modified-file","session"],Ls=2,ks=2,js=50,Ns=10,Ps=3,Ks=6;function zs(){const s=At(pe.SPOTLIGHT_TAB,"all");return fe.includes(s)?s:"all"}function gt(){return Ht(pe.SPOTLIGHT_QUERY,"")}function Qs(){const s=At(pe.AOP_CONFIG,{});return s.sortMode==="name"||s.sortMode==="status"||s.sortMode==="recent"?s.sortMode:"recent"}function Gs({isOpen:s,onClose:e,onOpenSpawnModal:r,onOpenCommanderView:n,onOpenToolbox:i,onOpenFileExplorer:o,onOpenPM2LogsModal:c,onOpenBossLogsModal:a,onOpenDatabasePanel:u,onOpenMonitoringModal:h,onOpenSessionFinder:f}){const x=$t(),S=Lt(),E=kt(),y=jt(),I=Nt(),v=Pt(),K=Kt(),b=d.useRef(e);b.current=e;const H=d.useRef(r);H.current=r;const G=d.useRef(n);G.current=n;const le=d.useRef(i);le.current=i;const se=d.useRef(o);se.current=o;const P=d.useRef(c);P.current=c;const U=d.useRef(a);U.current=a;const O=d.useRef(u);O.current=u;const X=d.useRef(h);X.current=h;const J=d.useRef(f);J.current=f;const[B,L]=d.useState(gt),[M,R]=d.useState(0),[Y,ce]=d.useState(zs),[Ge,ge]=d.useState([]),[Ue,Ae]=d.useState([]),[ye,Ee]=d.useState({query:"",rows:[]}),_t=d.useCallback(t=>{L(t),zt(pe.SPOTLIGHT_QUERY,t)},[]);d.useEffect(()=>{s&&(L(gt()),R(0))},[s]),d.useEffect(()=>{if(!s){ge([]);return}const t=B.trim();if(t.length<Ls){ge([]);return}let l=!1;const p=setTimeout(()=>{Ts(t).then(A=>{l||ge(A)}).catch(()=>{l||ge([])})},250);return()=>{l=!0,clearTimeout(p)}},[s,B]);const Dt=(y.fileSearchExcludeDirs??it).join(",");d.useEffect(()=>{if(!s){Ae([]);return}const t=B.trim();if(t.length<ks){Ae([]);return}let l=!1;const p=setTimeout(()=>{Qt(t,{exclude:y.fileSearchExcludeDirs??[...it],limit:js}).then(A=>{l||Ae(A)}).catch(()=>{l||Ae([])})},250);return()=>{l=!0,clearTimeout(p)}},[s,B,Dt,y.fileSearchExcludeDirs]),d.useEffect(()=>{if(!s){Ee({query:"",rows:[]});return}const t=B.trim();if(t.length<Ps){Ee({query:"",rows:[]});return}let l=!1;const p=setTimeout(()=>{Gt(t,{limit:Ks}).then(A=>{l||Ee({query:t,rows:A})}).catch(()=>{l||Ee({query:"",rows:[]})})},250);return()=>{l=!0,clearTimeout(p)}},[s,B]);const ve=d.useCallback(t=>{ce(t),Ut(pe.SPOTLIGHT_TAB,t)},[]),Oe=d.useRef(Y);Oe.current=Y;const bt=d.useCallback(t=>{const l=fe.indexOf(Oe.current),p=fe[(l+t+fe.length)%fe.length];ve(p)},[ve]);d.useEffect(()=>{R(0)},[Y]);const Be=k.getShortcuts(),me=d.useMemo(()=>s?Ot():{},[s]),xe=d.useMemo(()=>{if(!s)return[];const t=window.matchMedia("(pointer: coarse)").matches,l=Be.find(A=>A.id==="spawn-agent"),p=Be.find(A=>A.id==="toggle-commander");return[{id:"cmd-spawn",type:"command",title:"Spawn New Agent",subtitle:t?"":l?ot(l):"Alt+N",icon:m.jsx(Z,{name:"plus",size:16}),action:()=>{b.current(),H.current()}},{id:"cmd-commander",type:"command",title:"Commander View",subtitle:t?"":p!=null&&p.key?ot(p):"Tab",icon:m.jsx(Z,{name:"dashboard",size:16}),action:()=>{b.current(),G.current()}},{id:"cmd-settings",type:"command",title:"Settings & Tools",subtitle:"Configure Tide Commander",icon:m.jsx(Z,{name:"gear",size:16}),action:()=>{b.current(),le.current()}},{id:"cmd-monitoring",type:"command",title:"Monitoring & Logs",subtitle:"Triggers, workflows, events",icon:m.jsx(Z,{name:"chart-line",size:16}),action:()=>{var A;b.current(),(A=X.current)==null||A.call(X)}}]},[s,Be]),he=d.useMemo(()=>s?Array.from(x.values()).map(t=>{const l=(I||[]).filter(z=>z.agentId===t.id).map(z=>z.filePath),p=[...new Set(l)],A=p.map(z=>z.split("/").pop()||z),F=[];t.lastAssignedTask&&F.push(t.lastAssignedTask);const T=`${t.class} • ${t.cwd}`;let _=`${t.name} ${t.class} ${t.status} ${t.cwd}`;t.taskLabel&&(_+=` ${t.taskLabel}`),A.length>0&&(_+=` ${A.join(" ")} ${p.join(" ")}`),F.length>0&&(_+=` ${F.join(" ")}`);const j=Date.now()-t.lastActivity;let V;return t.lastAssignedTask&&(t.lastAssignedTask.length>150?V=t.lastAssignedTask.slice(0,150)+"...":V=t.lastAssignedTask),{id:`agent-${t.id}`,type:"agent",title:t.name,subtitle:T,lastUserInput:V,timeAway:j,icon:m.jsx(at,{agent:t,size:20}),_searchText:_,_modifiedFiles:p,_userQueries:F,_agentId:t.id,_lastActivity:t.lastActivity,_taskLabel:t.taskLabel,_status:t.status,action:()=>{b.current(),ct(t.id),k.selectAgent(t.id),k.getState().viewMode!=="flat"&&k.requestTerminalExpand()}}}):[],[s,x,I]),Me=d.useMemo(()=>s?Array.from(S.values()).map(t=>{var l;return{id:`area-${t.id}`,type:"area",title:t.name,subtitle:`${t.assignedAgentIds.length} agents • ${((l=t.directories)==null?void 0:l.length)||0} folders`,icon:m.jsx(Z,{name:"map",size:16}),action:()=>{b.current(),k.selectArea(t.id)}}}):[],[s,S]),We=d.useMemo(()=>{const t=new Map;for(const l of he)l._agentId&&t.set(l._agentId,l);return t},[he]),He=d.useMemo(()=>{const t=new Map;if(!s)return t;for(const l of x.values()){const p=k.getAreaForAgent(l.id);if(!p||p.archived)continue;const A=t.get(p.id);A?A.push(l):t.set(p.id,[l])}return t},[s,x,S]),Ye=d.useMemo(()=>{const t=new Map;for(const l of v)t.has(l.agentId)||t.set(l.agentId,l.timestamp);return t},[v]),Re=d.useMemo(()=>{if(!s)return[];const t=B.trim().toLowerCase(),l=Wt({sortMode:Qs(),agentsWithUnseenOutput:K,getLatestToolTimestamp:F=>Ye.get(F)}),p=Array.from(S.values()).filter(F=>!F.archived).filter(F=>t?F.name.toLowerCase().includes(t):!0).sort((F,T)=>F.name.localeCompare(T.name,void 0,{sensitivity:"base"})),A=[];for(const F of p){const _=(He.get(F.id)||[]).slice().sort(l).map(j=>We.get(j.id)).filter(j=>!!j);!t&&_.length===0||A.push({areaId:F.id,areaName:F.name,areaColor:F.color,agents:_})}return A},[s,B,S,He,We,K,Ye]),Ce=d.useMemo(()=>s?Array.from(E.values()).filter(t=>t.type==="server"||t.type==="boss"||t.type==="database"||t.type==="tests").map(t=>{var j,V,z,Fe,ae;const l=t.status==="running"?"#4ade80":t.status==="stopped"?"#f87171":"#facc15",p=t.type==="boss"?"crown":t.type==="database"?"database":t.type==="tests"?"flask":"desktop",A=t.type==="boss"?"Boss":t.type==="database"?"Database":t.type==="tests"?"Tests":"Server";let F=`${A} • ${t.status}`;if(t.type==="database"&&((V=(j=t.database)==null?void 0:j.connections)!=null&&V.length)){const N=t.database.connections[0];F+=` • ${N.engine} @ ${N.host}`}else t.type==="tests"&&t.folderPath?F=`${A} • ${t.folderPath}`:t.cwd&&(F+=` • ${t.cwd}`);const T=((z=t.pm2Status)==null?void 0:z.ports)||[];let _=`${t.name} ${t.type} ${t.status} ${t.cwd||""} ${((Fe=t.pm2)==null?void 0:Fe.name)||""}`;if(t.type==="tests"&&(_+=` ${t.folderPath||""} tests junit maven`),T.length>0&&(_+=` ${T.join(" ")}`),t.type==="database"&&((ae=t.database)!=null&&ae.connections))for(const N of t.database.connections)_+=` ${N.name} ${N.engine} ${N.host} ${N.database||""} mysql postgresql sql`;return{id:`building-${t.id}`,type:"building",title:t.name,subtitle:F,_ports:T,icon:m.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[m.jsx(Z,{name:"status-pending",size:10,weight:"fill",color:l}),m.jsx(Z,{name:p,size:16})]}),_searchText:_,action:()=>{var N;b.current(),t.type==="boss"?U.current(t.id):t.type==="database"?O.current(t.id):t.type==="tests"?k.openTestsBuilding(t.id):t.type==="http"?k.openHttpBuilding(t.id):(N=t.pm2)!=null&&N.enabled&&P.current(t.id)}}}):[],[s,E]),Ve=d.useMemo(()=>{if(!s)return[];const t=I||[],l=new Set,p=[];for(const A of t){if(l.has(A.filePath))continue;l.add(A.filePath);const F=A.filePath.split("/").pop()||A.filePath,T=A.action==="created"?"Created":A.action==="modified"?"Modified":A.action==="deleted"?"Deleted":"Read";if(p.push({id:`modified-${A.filePath}-${A.timestamp}`,type:"modified-file",title:F,subtitle:`${T} by ${A.agentName} • ${A.filePath}`,matchedText:A.filePath,icon:A.action==="deleted"?m.jsx(Z,{name:"trash",size:16}):ut(A.filePath),action:()=>{b.current();const _=Array.from(k.getState().areas.values());for(const j of _)for(const V of j.directories||[])if(A.filePath.startsWith(V)){k.setFileViewerPath(A.filePath),se.current(j.id);return}k.selectAgent(A.agentId)}}),p.length>=50)break}return p},[s,I]),qe=d.useMemo(()=>s?Ge.map(t=>{const l=t.isGitRepo&&t.gitBranch?`${t.path} • ${t.gitBranch}`:t.path;return{id:`folder-${t.path}`,type:"folder",title:t.name,subtitle:l,matchedText:t.path,icon:m.jsx(Z,{name:t.isGitRepo?"git-branch":"folder",size:16}),_searchText:`${t.name} ${t.path}`,_isGitRepo:t.isGitRepo,_gitBranch:t.gitBranch,action:()=>{b.current(),k.openFileExplorer(t.path)}}}):[],[s,Ge]),Se=d.useMemo(()=>s?Ue.map(t=>{const l=t.areaName&&t.areaName!==t.projectName?`${t.projectName} · ${t.areaName}`:t.projectName;return{id:`file-${t.path}`,type:"file",title:t.name,subtitle:t.relativePath,matchedText:`${t.path} ${l}`,icon:ut(t.path),_searchText:`${t.name} ${t.relativePath} ${t.path} ${t.projectName} ${t.areaName}`,_projectName:t.projectName,_areaName:t.areaName,action:()=>{b.current();const p=k.getState().areas.get(t.areaId),A=((p==null?void 0:p.directories)||[]).find(F=>F.replace(/\\/g,"/").replace(/\/+$/,"")===t.projectRoot.replace(/\/+$/,""))||t.projectRoot;k.revealFileInExplorer(t.path,A)}}}):[],[s,Ue]),Xe=d.useMemo(()=>{if(!s)return[];const t=l=>{const p=Date.now()-new Date(l).getTime();return!Number.isFinite(p)||p<0?"":p<36e5?`${Math.max(1,Math.floor(p/6e4))}m`:p<864e5?`${Math.floor(p/36e5)}h`:`${Math.floor(p/864e5)}d`};return ye.rows.map(l=>{const p=Array.from(x.values()).find(_=>_.sessionId===l.sessionId),A=(l.firstPrompt||l.snippet||l.sessionId).slice(0,90),F=[l.projectPath||l.projectDir];p&&F.push(`→ ${p.name}`);const T=t(l.lastModified);return T&&F.push(T),F.push(`${l.totalMatches}×`),{id:`session-${l.sessionId}`,type:"session",title:A,subtitle:F.join(" • "),matchedQuery:l.snippet||void 0,icon:p?m.jsx(at,{agent:p,size:20}):m.jsx(Z,{name:"history",size:16}),action:()=>{var j;b.current();const _=Array.from(k.getState().agents.values()).find(V=>V.sessionId===l.sessionId);_?(ct(_.id),k.selectAgent(_.id),k.getState().viewMode!=="flat"&&k.requestTerminalExpand(),k.requestTerminalSearch(_.id,ye.query)):(j=J.current)==null||j.call(J,{initialQuery:ye.query,initialSessionKey:`${l.projectPath}::${l.sessionId}`})}}})},[s,ye,x]),Je=d.useMemo(()=>new ee(he,{keys:["title","subtitle","_searchText","lastUserInput"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[he]),Ze=d.useMemo(()=>new ee(xe,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[xe]),et=d.useMemo(()=>new ee(Me,{keys:["title","subtitle"],threshold:.4,includeScore:!0,includeMatches:!0}),[Me]),tt=d.useMemo(()=>new ee(Ve,{keys:["title","subtitle","matchedText"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[Ve]),st=d.useMemo(()=>new ee(Ce,{keys:["title","subtitle","_searchText"],threshold:.4,ignoreLocation:!0,includeScore:!0,includeMatches:!0}),[Ce]),de=d.useMemo(()=>{if(!B.trim()){const g=[];g.push(...Ce);const w=[...he].sort(($,Q)=>{const re=Ie($._agentId,$._lastActivity,me);return Ie(Q._agentId,Q._lastActivity,me)-re});g.push(...w),g.push(...xe.slice(0,2)),g.push(...Me.slice(0,2));const D={};return $s.forEach(($,Q)=>{D[$]=Q}),g.sort(($,Q)=>(D[$.type]??999)-(D[Q.type]??999)),g}const t=B.trim().toLowerCase(),l=Je.search(B).slice(0,8),p=Ze.search(B).slice(0,3),A=et.search(B).slice(0,2),F=tt.search(B).slice(0,3),T=qe.slice(0,8),_=Se.slice(0,Ns),j=st.search(B).filter(g=>{const w=g.score??1;return`${g.item.title} ${g.item.subtitle||""} ${g.item._searchText||""}`.toLowerCase().includes(t)||w<=.2}).slice(0,4),V={agent:6,building:5,folder:4,file:4,command:3,area:2,"modified-file":1,session:0},z=g=>{if(!t)return 1;const w=g.title.toLowerCase();return w===t?6:w.startsWith(t)?5:w.split(/[^a-z0-9]+/i).includes(t)?4:w.includes(t)?3:`${g.subtitle||""} ${g._searchText||""} ${g.matchedText||""}`.toLowerCase().includes(t)?2:1},Fe=(g,w)=>{const D=(1-Math.min(1,w??1))*4;return z(g)*100+(V[g.type]??0)*5+D},ae=new Map,N=(g,w)=>{const D=ae.get(g.type),$={item:g,score:Fe(g,w)};D?D.push($):ae.set(g.type,[$])};for(const g of l){const w={...g.item};if(w._modifiedFiles&&w._modifiedFiles.length>0){const D=w._modifiedFiles.filter($=>{var ne;const Q=((ne=$.split("/").pop())==null?void 0:ne.toLowerCase())||"",re=$.toLowerCase();return Q.includes(t)||re.includes(t)});D.length>0&&(w.matchedFiles=D)}if(w._userQueries&&w._userQueries.length>0){const D=w._userQueries.find($=>$.toLowerCase().includes(t));if(D)if(D.length>200){const Q=D.toLowerCase().indexOf(t),re=Math.max(0,Q-60),ne=Math.min(D.length,Q+t.length+100);w.matchedQuery=(re>0?"...":"")+D.slice(re,ne)+(ne<D.length?"...":"")}else w.matchedQuery=D}N(w,g.score)}for(const g of j)N(g.item,g.score);for(const g of p)N(g.item,g.score);for(const g of A)N(g.item,g.score);for(const g of F)N(g.item,g.score);for(const g of T)N(g,void 0);for(const g of _)N(g,void 0);for(const[g,w]of ae)g==="agent"?w.sort((D,$)=>{const Q=z(D.item),re=z($.item);if(re!==Q)return re-Q;const ne=Ie(D.item._agentId,D.item._lastActivity,me),nt=Ie($.item._agentId,$.item._lastActivity,me);return nt!==ne?nt-ne:$.score-D.score}):w.sort((D,$)=>$.score-D.score);const rt=g=>g.reduce((w,D)=>Math.max(w,D.score),-1),Te=[];Array.from(ae.values()).sort((g,w)=>rt(w)-rt(g)).forEach(g=>{for(const w of g)Te.push(w.item)});for(const g of Xe)Te.push(g);return Te},[B,Je,Ze,et,tt,st,xe,he,Me,Ce,qe,Se,Xe,me]),q=d.useMemo(()=>{switch(Y){case"agents":return de.filter(t=>t.type==="agent");case"buildings":return de.filter(t=>t.type==="building");case"commands":return de.filter(t=>t.type==="command");case"folders":return de.filter(t=>t.type==="folder");case"files":return Se;case"areas":return Re.flatMap(t=>t.agents);case"all":default:return de}},[Y,de,Re,Se]);d.useEffect(()=>{M>=q.length&&R(Math.max(0,q.length-1))},[q.length,M]);const vt=d.useCallback(t=>{if(t.altKey&&!t.ctrlKey&&!t.metaKey&&(t.key==="p"||t.key==="n"||t.key==="P"||t.key==="N")){t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation();const l=t.key.toLowerCase();R(l==="p"?p=>p>0?p-1:q.length-1:p=>p<q.length-1?p+1:0);return}switch(t.key){case"Escape":t.preventDefault(),b.current();break;case"ArrowUp":t.preventDefault(),R(l=>l>0?l-1:q.length-1);break;case"ArrowDown":t.preventDefault(),R(l=>l<q.length-1?l+1:0);break;case"Enter":t.preventDefault(),q[M]&&q[M].action();break}},[q,M]),Bt=d.useCallback((t,l)=>{if(!l||!t)return t;const p=t.toLowerCase(),A=l.toLowerCase(),F=[];let T=0,_=p.indexOf(A),j=0;for(;_!==-1;)_>T&&F.push(t.slice(T,_)),F.push($e.createElement("mark",{key:j++,className:"spotlight-highlight"},t.slice(_,_+l.length))),T=_+l.length,_=p.indexOf(A,T);return T<t.length&&F.push(t.slice(T)),F.length>0?$e.createElement($e.Fragment,null,...F):t},[]);return{query:B,setQuery:_t,selectedIndex:M,setSelectedIndex:R,results:q,activeTab:Y,setActiveTab:ve,cycleTab:bt,areaSections:Re,handleKeyDown:vt,highlightMatch:Bt}}const Us=d.forwardRef(function({query:e,onQueryChange:r,onKeyDown:n,onResetSelection:i},o){const{t:c}=be(["common"]);return m.jsxs("div",{className:"spotlight-input-wrapper",children:[m.jsx("span",{className:"spotlight-search-icon",children:"⌘"}),m.jsx("input",{ref:o,type:"text",className:"spotlight-input",placeholder:c("common:search.spotlightPlaceholder"),value:e,onChange:a=>{r(a.target.value),i()},onKeyDown:n,autoFocus:!0,spellCheck:!1}),m.jsxs("div",{className:"spotlight-input-hints",children:[m.jsx("span",{className:"spotlight-shortcut-hint",children:"↑↓"}),m.jsx("span",{className:"spotlight-shortcut-hint",children:"Enter"}),m.jsx("span",{className:"spotlight-shortcut-hint",children:"Esc"})]})]})}),Os=d.memo(function({activeTab:e,onSelect:r}){const{t:n}=be(["terminal"]);return m.jsxs("div",{className:"spotlight-tabs",role:"tablist","aria-label":n("terminal:spotlight.tabsLabel"),children:[fe.map(i=>m.jsx("button",{type:"button",role:"tab","aria-selected":i===e,tabIndex:-1,className:`spotlight-tab${i===e?" active":""}`,onClick:()=>r(i),children:n(`terminal:spotlight.tabs.${i}`)},i)),m.jsx("span",{className:"spotlight-tabs-hint",children:m.jsx("kbd",{children:"Tab"})})]})}),Ws=d.forwardRef(function({results:e,selectedIndex:r,query:n,activeTab:i,areaSections:o,highlightMatch:c,onSelectIndex:a},u){const{t:h}=be(["terminal"]),f=d.useRef(!1);d.useEffect(()=>{f.current=!1},[e]),d.useEffect(()=>{const E=typeof u=="function"?null:u==null?void 0:u.current;if(!E)return;const y=()=>{f.current=!0};return E.addEventListener("mousemove",y),()=>{E.removeEventListener("mousemove",y)}},[u,e]);const x={command:h("terminal:spotlight.categories.commands"),agent:h("terminal:spotlight.categories.agents"),building:h("terminal:spotlight.categories.infrastructure"),area:h("terminal:spotlight.categories.areas"),folder:h("terminal:spotlight.categories.folders"),file:h("terminal:spotlight.categories.files"),"modified-file":h("terminal:spotlight.categories.modifiedFiles"),session:h("terminal:spotlight.categories.sessions")},S=d.useMemo(()=>{const E=[];let y=null,I=[];return e.forEach((v,K)=>{v.type!==y&&(y!==null&&I.length>0&&E.push([y,I]),y=v.type,I=[]),I.push({result:v,index:K})}),y!==null&&I.length>0&&E.push([y,I]),E},[e]);if(d.useEffect(()=>{if(!u||typeof u=="function")return;const E=u.current;if(!E)return;const y=E.querySelector(".spotlight-item.selected");y&&y.scrollIntoView({block:"nearest",behavior:"smooth"})},[r,u]),i==="areas"){if(o.length===0)return m.jsx("div",{className:"spotlight-results",ref:u,children:m.jsx("div",{className:"spotlight-empty",children:h("terminal:spotlight.noResults")})});let E=0;return m.jsx("div",{className:"spotlight-results",ref:u,children:o.map(y=>m.jsxs("div",{children:[m.jsxs("div",{className:"spotlight-category-header spotlight-area-section-header",children:[m.jsx("span",{className:"spotlight-area-dot",style:{background:y.areaColor},"aria-hidden":"true"}),m.jsx("span",{className:"spotlight-area-name",children:y.areaName}),m.jsx("span",{className:"spotlight-area-count",children:y.agents.length})]}),y.agents.length===0?m.jsx("div",{className:"spotlight-area-empty",children:h("terminal:spotlight.noAgentsInArea")}):y.agents.map(I=>{const v=E++;return m.jsx(lt,{result:I,isSelected:v===r,query:n,highlightMatch:c,onClick:()=>I.action(),onMouseEnter:()=>{f.current&&a(v)}},I.id)})]},y.areaId))})}return e.length===0?m.jsx("div",{className:"spotlight-results",ref:u,children:m.jsx("div",{className:"spotlight-empty",children:h("terminal:spotlight.noResults")})}):m.jsx("div",{className:"spotlight-results",ref:u,children:S.map(([E,y])=>m.jsxs("div",{children:[S.length>1&&m.jsx("div",{className:"spotlight-category-header",children:x[E]||E}),y.map(({result:I,index:v})=>m.jsx(lt,{result:I,isSelected:v===r,query:n,highlightMatch:c,onClick:()=>I.action(),onMouseEnter:()=>{f.current&&a(v)}},I.id))]},E))})}),Hs=d.memo(function(){const{t:e}=be(["terminal"]);return m.jsxs("div",{className:"spotlight-footer",children:[m.jsxs("div",{className:"spotlight-footer-left",children:[m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"↑"}),m.jsx("kbd",{children:"↓"})," ",m.jsx("kbd",{children:"Alt+N"}),m.jsx("kbd",{children:"Alt+P"})," ",e("terminal:spotlight.navigate")]}),m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"Enter"})," ",e("terminal:spotlight.select")]}),m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"Tab"})," ",e("terminal:spotlight.switchTabs")]})]}),m.jsx("div",{className:"spotlight-footer-right",children:m.jsxs("span",{className:"spotlight-footer-hint",children:[m.jsx("kbd",{children:"Esc"})," ",e("common:buttons.close")]})})]})}),Ys=768;function Js({isOpen:s,onClose:e,onOpenSpawnModal:r,onOpenCommanderView:n,onOpenToolbox:i,onOpenFileExplorer:o,onOpenPM2LogsModal:c,onOpenBossLogsModal:a,onOpenDatabasePanel:u,onOpenMonitoringModal:h,onOpenSessionFinder:f}){const x=d.useRef(null),S=d.useRef(null),E=d.useRef(null),y=d.useRef(0),{query:I,setQuery:v,selectedIndex:K,setSelectedIndex:b,results:H,activeTab:G,setActiveTab:le,cycleTab:se,areaSections:P,handleKeyDown:U,highlightMatch:O}=Gs({isOpen:s,onClose:e,onOpenSpawnModal:r,onOpenCommanderView:n,onOpenToolbox:i,onOpenFileExplorer:o,onOpenPM2LogsModal:c,onOpenBossLogsModal:a,onOpenDatabasePanel:u,onOpenMonitoringModal:h,onOpenSessionFinder:f});y.current=H.length;const X=d.useRef(se);X.current=se,d.useEffect(()=>{s&&setTimeout(()=>{var L,M;(L=x.current)==null||L.focus(),(M=x.current)==null||M.select()},50)},[s]),d.useEffect(()=>{if(!s)return;const L=window.visualViewport;if(!L||window.innerWidth>Ys)return;const M=()=>{const R=S.current;R&&(R.style.height=`${L.height}px`,R.style.top=`${L.offsetTop}px`)};return M(),L.addEventListener("resize",M),L.addEventListener("scroll",M),()=>{L.removeEventListener("resize",M),L.removeEventListener("scroll",M);const R=S.current;R&&(R.style.height="",R.style.top="")}},[s]),d.useEffect(()=>{if(!s)return;const L=M=>{if(M.key==="Escape"){M.preventDefault(),M.stopPropagation(),M.stopImmediatePropagation(),e();return}if(M.key==="Tab"){M.preventDefault(),M.stopPropagation(),M.stopImmediatePropagation(),X.current(M.shiftKey?-1:1);return}if(M.altKey&&!M.ctrlKey&&!M.metaKey&&(M.key==="n"||M.key==="p"||M.key==="N"||M.key==="P")){M.preventDefault(),M.stopPropagation(),M.stopImmediatePropagation();const R=M.key.toLowerCase(),Y=y.current;b(R==="p"?ce=>ce>0?ce-1:Y-1:ce=>ce<Y-1?ce+1:0);return}};return window.addEventListener("keydown",L,{capture:!0}),()=>{window.removeEventListener("keydown",L,{capture:!0})}},[s,e]);const J=d.useCallback(L=>{L.target===L.currentTarget&&e()},[e]),B=d.useCallback(()=>{b(0)},[b]);return s?m.jsx("div",{ref:S,className:"spotlight-overlay",onClick:J,children:m.jsxs("div",{className:"spotlight-modal",children:[m.jsx(Us,{ref:x,query:I,onQueryChange:v,onKeyDown:U,onResetSelection:B}),m.jsx(Os,{activeTab:G,onSelect:le}),m.jsx(Ws,{ref:E,results:H,selectedIndex:K,query:I,activeTab:G,areaSections:P,highlightMatch:O,onSelectIndex:b}),m.jsx(Hs,{})]})}):null}export{tr as FILE_ICON_NAMES,Js as Spotlight,Hs as SpotlightFooter,Us as SpotlightInput,lt as SpotlightItem,Ws as SpotlightResults,sr as formatDuration,rr as formatRelativeTime,nr as getAgentIcon,ut as getFileIconFromPath,ir as getTypeLabel,Gs as useSpotlightSearch};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{U as ts,u as rs,aa as _s,ab as vs,ac as Is,j as s,I as U,n as Es,ad as $s,ae as Ds,af as Ms,ag as Ls,r as o,ah as Ss,z as Xs,f as Ps,a0 as Ys,ai as Rs,aj as Gs,ak as Us,al as Fs,am as Hs,an as Zs,s as M,ao as Bs,ap as G}from"./main-DXG9arLM.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-CBPuP1jE.js";const bs=ts.memo(({agent:a,isSelected:z,isKeyboardFocused:F=!1,onSelect:L,onDoubleClick:r,onChat:g,onFocus:h,onKill:p,onDragStart:S})=>{const{t:x}=rs(["dashboard","common"]),X=_s().has(a.id),N=vs(a.status),H=Is(a),j=Ls(H),I=a.taskLabel?s.jsxs(s.Fragment,{children:[s.jsx(U,{name:"task",size:12})," ",a.taskLabel]}):a.currentTask||a.lastAssignedTask,m=a.status==="idle"&&a.lastActivity>0,[,Z]=ts.useState(0);return ts.useEffect(()=>{if(!m)return;const b=window.setInterval(()=>Z(q=>q+1),15e3);return()=>window.clearInterval(b)},[m]),s.jsxs("div",{className:`dash-card dash-card--${N} ${z?"dash-card--selected":""} ${F?"dash-card--keyboard-focused":""}`,"data-agent-id":a.id,onClick:()=>L(a.id),onDoubleClick:b=>{b.stopPropagation(),r(a.id)},onDragStart:b=>{S==null||S(a),b.dataTransfer.effectAllowed="move"},draggable:!0,title:x("cards.doubleClickHint"),children:[s.jsxs("div",{className:"dash-card__row1",children:[s.jsx("span",{className:`dash-card__status-dot dash-card__status-dot--${N}`}),s.jsx("span",{className:"dash-card__name",children:a.name}),s.jsxs("span",{className:"dash-card__class",children:[s.jsx(Es,{agent:a,size:14})," ",a.class]}),s.jsxs("span",{className:`dash-card__provider dash-card__provider--${a.provider}`,children:[s.jsx(U,{name:a.provider==="codex"||a.provider==="opencode"||a.provider==="grok"||a.provider==="pi"?"status-pending":"robot",size:11,weight:a.provider==="codex"||a.provider==="opencode"||a.provider==="grok"||a.provider==="pi"?"fill":"regular",color:a.provider==="codex"?"#a16207":a.provider==="opencode"?"#4ade80":a.provider==="grok"?"#6366f1":a.provider==="pi"?"#a855f7":void 0})," ",a.provider]}),X&&s.jsx("span",{className:"dash-card__unseen-badge",title:"New output available - click to view",children:"!"})]}),s.jsxs("div",{className:"dash-card__row2",children:[s.jsx("span",{className:`dash-card__status dash-card__status--${N}`,children:X?"Unseen":a.status}),s.jsxs("div",{className:"dash-card__context",children:[s.jsx("div",{className:"dash-card__context-bar",children:s.jsx("div",{className:`dash-card__context-fill dash-card__context-fill--${j}`,style:{width:`${H}%`}})}),s.jsxs("span",{className:`dash-card__context-pct dash-card__context-pct--${j}`,children:[H,"%"]})]})]}),s.jsxs("div",{className:"dash-card__row3",children:[s.jsxs("span",{className:"dash-card__workdir",title:a.cwd,children:[s.jsx(U,{name:"folder",size:11})," ",a.cwd.split("/").pop()||a.cwd]}),m&&s.jsxs("span",{className:"dash-card__idle-time",style:{color:Ms(a.lastActivity)},title:Ds(a.lastActivity),children:[s.jsx(U,{name:"status-waiting-input",size:10})," ",$s(a.lastActivity)]})]}),I&&s.jsx("div",{className:"dash-card__row4",children:s.jsx("span",{className:"dash-card__task",children:I})}),s.jsxs("div",{className:"dash-card__actions",children:[g&&s.jsx("button",{className:"dash-card__action-btn dash-card__action-btn--chat",onClick:b=>{b.stopPropagation(),g(a.id)},title:x("cards.openTerminal"),children:x("cards.chat")}),p&&s.jsx("button",{className:"dash-card__action-btn dash-card__action-btn--danger",onClick:b=>{b.stopPropagation(),p(a.id)},title:x("cards.killAgent"),children:x("cards.stop")})]})]})});bs.displayName="AgentCard";const fs=({buildings:a,onSelectBuilding:z})=>{const{t:F}=rs(["dashboard"]),L=o.useMemo(()=>Array.from(a.values()).sort((r,g)=>r.name.localeCompare(g.name)),[a]);return s.jsxs("div",{className:"dashboard-view__buildings",children:[s.jsxs("div",{className:"dashboard-view__buildings-header",children:[s.jsx("span",{className:"dashboard-view__buildings-title",children:F("buildings.title")}),s.jsx("span",{className:"dashboard-view__buildings-count",children:L.length})]}),s.jsx("div",{className:"dashboard-view__buildings-row",children:L.map(r=>{const g=vs(r.status),h=Ss(r.type);return s.jsxs("button",{className:`dash-pill dash-pill--${g}`,onClick:()=>z==null?void 0:z(r.id),title:`${r.name} (${r.type}) - ${r.status}`,children:[s.jsx("span",{className:"dash-pill__icon",children:s.jsx(U,{name:h,size:14})}),s.jsx("span",{className:"dash-pill__name",children:r.name}),s.jsx("span",{className:`dash-pill__dot dash-pill__dot--${g}`})]},r.id)})})]})};fs.displayName="BuildingPills";function qs({onSelectAgent:a,onFocusAgent:z,onKillAgent:F,onSelectBuilding:L,onOpenTerminal:r,onFocusZone:g}){const{t:h}=rs(["dashboard","common"]),p=Xs(),S=Ps(),x=Ys(),ns=Rs(),X=_s(),[N,H]=o.useState(""),[j,I]=o.useState("all"),[m,Z]=o.useState("zone"),[b,q]=o.useState(new Set),[k,J]=o.useState(null),[ps,K]=o.useState(null),[P,Q]=o.useState(!1),[w,B]=o.useState(null),W=o.useMemo(()=>{const e=Array.from(p.values());return{total:e.length,working:e.filter(d=>d.status==="working"||d.status==="waiting"||d.status==="waiting_permission").length,idle:e.filter(d=>d.status==="idle").length,error:e.filter(d=>d.status==="error"||d.status==="offline"||d.status==="orphaned").length}},[p]),is=o.useMemo(()=>m==="zone"?Gs(p,x):m==="status"?Us(p,X):Fs(p),[p,x,m,X]),T=o.useMemo(()=>{const e=N.toLowerCase().trim(),d=is.map(l=>({...l,agents:l.agents.filter(_=>{if(j==="working"){if(_.status!=="working"&&_.status!=="waiting"&&_.status!=="waiting_permission")return!1}else if(j==="error"&&_.status!=="error"&&_.status!=="offline"&&_.status!=="orphaned")return!1;return!(e&&!_.name.toLowerCase().includes(e)&&!_.class.toLowerCase().includes(e))})}));return m==="zone"?d:d.filter(l=>l.agents.length>0)},[is,j,N,m]),O=o.useCallback(e=>e.area?`area:${e.area.id}`:`${m}:${e.label}`,[m]),ss=o.useMemo(()=>T.map(e=>({...e,sortedAgents:m==="status"?Hs(e.agents,{prioritizeRecentlyIdle:!0}):Zs(e.agents)})),[T,m]),C=o.useMemo(()=>{const e=[];return ss.forEach(d=>{const l=O(d);b.has(l)||e.push(...d.sortedAgents)}),e},[ss,b,O]),ws=o.useCallback(e=>{q(d=>{const l=new Set(d);return l.has(e)?l.delete(e):l.add(e),l})},[]),gs=o.useCallback(e=>{r==null||r(e)},[r]),xs=o.useCallback(e=>{a==null||a(e),Q(!0),B(e)},[a]),js=o.useCallback(e=>{r==null||r(e)},[r]),Ns=o.useCallback(e=>{J(e)},[]),ks=o.useCallback((e,d)=>{e.preventDefault(),e.dataTransfer.dropEffect="move",K(d)},[]),Cs=o.useCallback(()=>{K(null)},[]),ys=o.useCallback(e=>{if(!k)return;if(e===null){const E=M.getState(),t=Array.from(E.areas.values()).find(n=>n.assignedAgentIds.includes(k.id));t&&M.unassignAgentFromArea(k.id,t.id),J(null),K(null);return}const d=x.get(e);if(!d)return;const l=Array.from(p.values()),_=Bs(d,l,k.position);M.updateAgent({...k,position:{...k.position,x:_.x,z:_.z}}),M.assignAgentToArea(k.id,e),J(null),K(null)},[k,x,p]);return o.useEffect(()=>{if(C.length===0){Q(!1),B(null);return}P&&(!w||!C.some(e=>e.id===w))&&(B(C[0].id),a==null||a(C[0].id))},[C,P,w,a]),o.useEffect(()=>{const e=t=>t instanceof HTMLElement?t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||t.isContentEditable:!1,d=t=>t instanceof HTMLElement?!!t.closest(".guake-terminal")||t.classList.contains("guake-input")||t.classList.contains("agent-panel-input"):!1,l=t=>{const n=Array.from(document.querySelectorAll(".dash-card[data-agent-id]")).find(A=>A.dataset.agentId===t);n==null||n.scrollIntoView({block:"nearest",inline:"nearest"})},_=(t,n)=>{var os,cs,ls,us,hs,ms;const A=Array.from(document.querySelectorAll(".dash-card[data-agent-id]")).map(i=>{const u=i.dataset.agentId;if(!u)return null;const y=i.getBoundingClientRect();return{id:u,centerX:y.left+y.width/2,centerY:y.top+y.height/2,height:y.height}}).filter(i=>i!==null).sort((i,u)=>i.centerY-u.centerY||i.centerX-u.centerX);if(A.length===0)return t;const es=A.reduce((i,u)=>i+u.height,0)/A.length,as=Math.max(18,es*.6),f=[];for(const i of A){const u=f[f.length-1];if(!u){f.push([{id:i.id,centerX:i.centerX,centerY:i.centerY}]);continue}const y=u.reduce((As,zs)=>As+zs.centerY,0)/u.length;Math.abs(i.centerY-y)<=as?u.push({id:i.id,centerX:i.centerX,centerY:i.centerY}):f.push([{id:i.id,centerX:i.centerX,centerY:i.centerY}])}f.forEach(i=>i.sort((u,y)=>u.centerX-y.centerX));const Y=f.findIndex(i=>i.some(u=>u.id===t));if(Y===-1)return((cs=(os=f[0])==null?void 0:os[0])==null?void 0:cs.id)??t;const $=f[Y],v=$.findIndex(i=>i.id===t);if(v===-1)return((us=(ls=f[0])==null?void 0:ls[0])==null?void 0:us.id)??t;if(n==="left")return((hs=$[Math.max(0,v-1)])==null?void 0:hs.id)??t;if(n==="right")return((ms=$[Math.min($.length-1,v+1)])==null?void 0:ms.id)??t;const V=n==="up"?Math.max(0,Y-1):Math.min(f.length-1,Y+1),c=f[V],R=$[v].centerX;let D=c[0],ds=Math.abs(D.centerX-R);for(const i of c){const u=Math.abs(i.centerX-R);u<ds&&(D=i,ds=u)}return(D==null?void 0:D.id)??t},E=t=>{const n=M.getShortcuts(),A=n.find(c=>c.id==="dashboard-selector-toggle"),es=n.find(c=>c.id==="dashboard-vim-left"),as=n.find(c=>c.id==="dashboard-vim-down"),f=n.find(c=>c.id==="dashboard-vim-up"),Y=n.find(c=>c.id==="dashboard-vim-right"),$=n.find(c=>c.id==="open-terminal"),v=M.getState();if(e(t.target))if(!v.terminalOpen&&d(t.target)&&document.activeElement instanceof HTMLElement)document.activeElement.blur();else return;if(G(t,A)){if(C.length===0)return;t.preventDefault(),t.stopPropagation(),Q(!0),B(c=>{const R=c&&C.some(D=>D.id===c)?c:C[0].id;return a==null||a(R),window.setTimeout(()=>l(R),0),R});return}const V=G(t,es)||t.key==="ArrowLeft"?"left":G(t,as)||t.key==="ArrowDown"?"down":G(t,f)||t.key==="ArrowUp"?"up":G(t,Y)||t.key==="ArrowRight"?"right":null;if(V&&P&&w){t.preventDefault(),t.stopPropagation();const c=_(w,V);c!==w&&(B(c),a==null||a(c),window.setTimeout(()=>l(c),0));return}if(G(t,$)){if(v.terminalOpen)return;if(P&&w&&v.agents.has(w)){t.preventDefault(),r==null||r(w);return}if(v.selectedAgentIds.size===1){t.preventDefault();const c=Array.from(v.selectedAgentIds)[0];r==null||r(c);return}if(v.lastSelectedAgentId&&v.agents.has(v.lastSelectedAgentId)){t.preventDefault(),r==null||r(v.lastSelectedAgentId);return}}};return document.addEventListener("keydown",E,!0),()=>document.removeEventListener("keydown",E,!0)},[C,P,w,r,a]),o.useEffect(()=>{const e=document.activeElement;e instanceof HTMLElement&&e.closest(".guake-terminal")&&!M.getState().terminalOpen&&e.blur()},[]),s.jsxs("div",{className:"dashboard-view",children:[s.jsxs("div",{className:"dashboard-view__topbar",children:[s.jsxs("div",{className:"dashboard-view__metrics",children:[s.jsxs("button",{className:`dashboard-view__metric-btn ${j==="all"?"dashboard-view__metric-btn--active":""}`,onClick:()=>I("all"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.total}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:labels.agents")})]}),s.jsxs("button",{className:`dashboard-view__metric-btn dashboard-view__metric-btn--working ${j==="working"?"dashboard-view__metric-btn--active":""}`,onClick:()=>I("working"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.working}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:status.working")})]}),s.jsxs("button",{className:"dashboard-view__metric-btn dashboard-view__metric-btn--idle ",onClick:()=>I("all"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.idle}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:status.idle")})]}),s.jsxs("button",{className:`dashboard-view__metric-btn dashboard-view__metric-btn--error ${j==="error"?"dashboard-view__metric-btn--active":""}`,onClick:()=>I("error"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.error}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:status.error")})]})]}),s.jsx("input",{className:"dashboard-view__search",type:"text",placeholder:h("searchPlaceholder"),value:N,onChange:e=>H(e.target.value)})]}),s.jsxs("div",{className:"dashboard-view__grouping",children:[s.jsx("button",{className:`dashboard-view__grouping-btn ${m==="zone"?"dashboard-view__grouping-btn--active":""}`,onClick:()=>Z("zone"),children:h("grouping.byZone")}),s.jsx("button",{className:`dashboard-view__grouping-btn ${m==="status"?"dashboard-view__grouping-btn--active":""}`,onClick:()=>Z("status"),children:h("grouping.byStatus")}),s.jsx("button",{className:`dashboard-view__grouping-btn ${m==="activity"?"dashboard-view__grouping-btn--active":""}`,onClick:()=>Z("activity"),children:h("grouping.byActivity")})]}),s.jsxs("div",{className:"dashboard-view__content",children:[ss.map(e=>{const d=O(e),l=b.has(d),_=e.sortedAgents,E=e.agents.filter(n=>n.status==="working"||n.status==="waiting"||n.status==="waiting_permission").length,t=e.agents.filter(n=>X.has(n.id)).length;return s.jsxs("div",{className:`dashboard-view__zone ${ps===(e.area?e.area.id:null)&&k?"dashboard-view__zone--drag-over":""}`,onDragOver:n=>ks(n,e.area?e.area.id:null),onDragLeave:Cs,onDrop:()=>ys(e.area?e.area.id:null),children:[s.jsxs("div",{className:"dashboard-view__zone-header",onClick:()=>ws(d),children:[s.jsxs("div",{className:"dashboard-view__zone-left",children:[s.jsx("span",{className:`dashboard-view__zone-chevron ${l?"dashboard-view__zone-chevron--collapsed":""}`,children:s.jsx(U,{name:"caret-down",size:12})}),s.jsx("span",{className:"dashboard-view__zone-dot",style:{backgroundColor:e.color}}),s.jsx("span",{className:"dashboard-view__zone-name",children:e.label}),s.jsxs("span",{className:"dashboard-view__zone-count",children:[h("agentCount",{count:e.agents.length}),E>0&&s.jsxs("span",{className:"dashboard-view__zone-working",children:[" · ",E," ",h("working")]}),t>0&&s.jsxs("span",{className:"dashboard-view__zone-unseen",children:[" · ",t," Unseen"]})]})]}),e.area&&g&&s.jsx("button",{className:"dashboard-view__zone-focus",onClick:n=>{n.stopPropagation(),g(e.area.id)},title:h("focusZone"),children:h("focusZone")})]}),!l&&s.jsx("div",{className:"dashboard-view__zone-grid",children:_.map(n=>s.jsx(bs,{agent:n,isSelected:ns.has(n.id),isKeyboardFocused:P&&w===n.id,onSelect:xs,onDoubleClick:gs,onChat:js,onFocus:z,onKill:F,onDragStart:Ns},n.id))})]},d)}),T.length===0&&s.jsx("div",{className:"dashboard-view__empty",children:N?h("noAgentsMatching",{search:N}):h("noAgentsSpawned")}),S.size>0&&s.jsx(fs,{buildings:S,onSelectBuilding:L})]})]})}export{qs as DashboardView};
|
|
1
|
+
import{U as ts,u as rs,aa as _s,ab as vs,ac as Is,j as s,I as U,n as Es,ad as $s,ae as Ds,af as Ms,ag as Ls,r as o,ah as Ss,z as Xs,f as Ps,a0 as Ys,ai as Rs,aj as Gs,ak as Us,al as Fs,am as Hs,an as Zs,s as M,ao as Bs,ap as G}from"./main-DGmjsdfM.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-CBPuP1jE.js";const bs=ts.memo(({agent:a,isSelected:z,isKeyboardFocused:F=!1,onSelect:L,onDoubleClick:r,onChat:g,onFocus:h,onKill:p,onDragStart:S})=>{const{t:x}=rs(["dashboard","common"]),X=_s().has(a.id),N=vs(a.status),H=Is(a),j=Ls(H),I=a.taskLabel?s.jsxs(s.Fragment,{children:[s.jsx(U,{name:"task",size:12})," ",a.taskLabel]}):a.currentTask||a.lastAssignedTask,m=a.status==="idle"&&a.lastActivity>0,[,Z]=ts.useState(0);return ts.useEffect(()=>{if(!m)return;const b=window.setInterval(()=>Z(q=>q+1),15e3);return()=>window.clearInterval(b)},[m]),s.jsxs("div",{className:`dash-card dash-card--${N} ${z?"dash-card--selected":""} ${F?"dash-card--keyboard-focused":""}`,"data-agent-id":a.id,onClick:()=>L(a.id),onDoubleClick:b=>{b.stopPropagation(),r(a.id)},onDragStart:b=>{S==null||S(a),b.dataTransfer.effectAllowed="move"},draggable:!0,title:x("cards.doubleClickHint"),children:[s.jsxs("div",{className:"dash-card__row1",children:[s.jsx("span",{className:`dash-card__status-dot dash-card__status-dot--${N}`}),s.jsx("span",{className:"dash-card__name",children:a.name}),s.jsxs("span",{className:"dash-card__class",children:[s.jsx(Es,{agent:a,size:14})," ",a.class]}),s.jsxs("span",{className:`dash-card__provider dash-card__provider--${a.provider}`,children:[s.jsx(U,{name:a.provider==="codex"||a.provider==="opencode"||a.provider==="grok"||a.provider==="pi"?"status-pending":"robot",size:11,weight:a.provider==="codex"||a.provider==="opencode"||a.provider==="grok"||a.provider==="pi"?"fill":"regular",color:a.provider==="codex"?"#a16207":a.provider==="opencode"?"#4ade80":a.provider==="grok"?"#6366f1":a.provider==="pi"?"#a855f7":void 0})," ",a.provider]}),X&&s.jsx("span",{className:"dash-card__unseen-badge",title:"New output available - click to view",children:"!"})]}),s.jsxs("div",{className:"dash-card__row2",children:[s.jsx("span",{className:`dash-card__status dash-card__status--${N}`,children:X?"Unseen":a.status}),s.jsxs("div",{className:"dash-card__context",children:[s.jsx("div",{className:"dash-card__context-bar",children:s.jsx("div",{className:`dash-card__context-fill dash-card__context-fill--${j}`,style:{width:`${H}%`}})}),s.jsxs("span",{className:`dash-card__context-pct dash-card__context-pct--${j}`,children:[H,"%"]})]})]}),s.jsxs("div",{className:"dash-card__row3",children:[s.jsxs("span",{className:"dash-card__workdir",title:a.cwd,children:[s.jsx(U,{name:"folder",size:11})," ",a.cwd.split("/").pop()||a.cwd]}),m&&s.jsxs("span",{className:"dash-card__idle-time",style:{color:Ms(a.lastActivity)},title:Ds(a.lastActivity),children:[s.jsx(U,{name:"status-waiting-input",size:10})," ",$s(a.lastActivity)]})]}),I&&s.jsx("div",{className:"dash-card__row4",children:s.jsx("span",{className:"dash-card__task",children:I})}),s.jsxs("div",{className:"dash-card__actions",children:[g&&s.jsx("button",{className:"dash-card__action-btn dash-card__action-btn--chat",onClick:b=>{b.stopPropagation(),g(a.id)},title:x("cards.openTerminal"),children:x("cards.chat")}),p&&s.jsx("button",{className:"dash-card__action-btn dash-card__action-btn--danger",onClick:b=>{b.stopPropagation(),p(a.id)},title:x("cards.killAgent"),children:x("cards.stop")})]})]})});bs.displayName="AgentCard";const fs=({buildings:a,onSelectBuilding:z})=>{const{t:F}=rs(["dashboard"]),L=o.useMemo(()=>Array.from(a.values()).sort((r,g)=>r.name.localeCompare(g.name)),[a]);return s.jsxs("div",{className:"dashboard-view__buildings",children:[s.jsxs("div",{className:"dashboard-view__buildings-header",children:[s.jsx("span",{className:"dashboard-view__buildings-title",children:F("buildings.title")}),s.jsx("span",{className:"dashboard-view__buildings-count",children:L.length})]}),s.jsx("div",{className:"dashboard-view__buildings-row",children:L.map(r=>{const g=vs(r.status),h=Ss(r.type);return s.jsxs("button",{className:`dash-pill dash-pill--${g}`,onClick:()=>z==null?void 0:z(r.id),title:`${r.name} (${r.type}) - ${r.status}`,children:[s.jsx("span",{className:"dash-pill__icon",children:s.jsx(U,{name:h,size:14})}),s.jsx("span",{className:"dash-pill__name",children:r.name}),s.jsx("span",{className:`dash-pill__dot dash-pill__dot--${g}`})]},r.id)})})]})};fs.displayName="BuildingPills";function qs({onSelectAgent:a,onFocusAgent:z,onKillAgent:F,onSelectBuilding:L,onOpenTerminal:r,onFocusZone:g}){const{t:h}=rs(["dashboard","common"]),p=Xs(),S=Ps(),x=Ys(),ns=Rs(),X=_s(),[N,H]=o.useState(""),[j,I]=o.useState("all"),[m,Z]=o.useState("zone"),[b,q]=o.useState(new Set),[k,J]=o.useState(null),[ps,K]=o.useState(null),[P,Q]=o.useState(!1),[w,B]=o.useState(null),W=o.useMemo(()=>{const e=Array.from(p.values());return{total:e.length,working:e.filter(d=>d.status==="working"||d.status==="waiting"||d.status==="waiting_permission").length,idle:e.filter(d=>d.status==="idle").length,error:e.filter(d=>d.status==="error"||d.status==="offline"||d.status==="orphaned").length}},[p]),is=o.useMemo(()=>m==="zone"?Gs(p,x):m==="status"?Us(p,X):Fs(p),[p,x,m,X]),T=o.useMemo(()=>{const e=N.toLowerCase().trim(),d=is.map(l=>({...l,agents:l.agents.filter(_=>{if(j==="working"){if(_.status!=="working"&&_.status!=="waiting"&&_.status!=="waiting_permission")return!1}else if(j==="error"&&_.status!=="error"&&_.status!=="offline"&&_.status!=="orphaned")return!1;return!(e&&!_.name.toLowerCase().includes(e)&&!_.class.toLowerCase().includes(e))})}));return m==="zone"?d:d.filter(l=>l.agents.length>0)},[is,j,N,m]),O=o.useCallback(e=>e.area?`area:${e.area.id}`:`${m}:${e.label}`,[m]),ss=o.useMemo(()=>T.map(e=>({...e,sortedAgents:m==="status"?Hs(e.agents,{prioritizeRecentlyIdle:!0}):Zs(e.agents)})),[T,m]),C=o.useMemo(()=>{const e=[];return ss.forEach(d=>{const l=O(d);b.has(l)||e.push(...d.sortedAgents)}),e},[ss,b,O]),ws=o.useCallback(e=>{q(d=>{const l=new Set(d);return l.has(e)?l.delete(e):l.add(e),l})},[]),gs=o.useCallback(e=>{r==null||r(e)},[r]),xs=o.useCallback(e=>{a==null||a(e),Q(!0),B(e)},[a]),js=o.useCallback(e=>{r==null||r(e)},[r]),Ns=o.useCallback(e=>{J(e)},[]),ks=o.useCallback((e,d)=>{e.preventDefault(),e.dataTransfer.dropEffect="move",K(d)},[]),Cs=o.useCallback(()=>{K(null)},[]),ys=o.useCallback(e=>{if(!k)return;if(e===null){const E=M.getState(),t=Array.from(E.areas.values()).find(n=>n.assignedAgentIds.includes(k.id));t&&M.unassignAgentFromArea(k.id,t.id),J(null),K(null);return}const d=x.get(e);if(!d)return;const l=Array.from(p.values()),_=Bs(d,l,k.position);M.updateAgent({...k,position:{...k.position,x:_.x,z:_.z}}),M.assignAgentToArea(k.id,e),J(null),K(null)},[k,x,p]);return o.useEffect(()=>{if(C.length===0){Q(!1),B(null);return}P&&(!w||!C.some(e=>e.id===w))&&(B(C[0].id),a==null||a(C[0].id))},[C,P,w,a]),o.useEffect(()=>{const e=t=>t instanceof HTMLElement?t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||t.isContentEditable:!1,d=t=>t instanceof HTMLElement?!!t.closest(".guake-terminal")||t.classList.contains("guake-input")||t.classList.contains("agent-panel-input"):!1,l=t=>{const n=Array.from(document.querySelectorAll(".dash-card[data-agent-id]")).find(A=>A.dataset.agentId===t);n==null||n.scrollIntoView({block:"nearest",inline:"nearest"})},_=(t,n)=>{var os,cs,ls,us,hs,ms;const A=Array.from(document.querySelectorAll(".dash-card[data-agent-id]")).map(i=>{const u=i.dataset.agentId;if(!u)return null;const y=i.getBoundingClientRect();return{id:u,centerX:y.left+y.width/2,centerY:y.top+y.height/2,height:y.height}}).filter(i=>i!==null).sort((i,u)=>i.centerY-u.centerY||i.centerX-u.centerX);if(A.length===0)return t;const es=A.reduce((i,u)=>i+u.height,0)/A.length,as=Math.max(18,es*.6),f=[];for(const i of A){const u=f[f.length-1];if(!u){f.push([{id:i.id,centerX:i.centerX,centerY:i.centerY}]);continue}const y=u.reduce((As,zs)=>As+zs.centerY,0)/u.length;Math.abs(i.centerY-y)<=as?u.push({id:i.id,centerX:i.centerX,centerY:i.centerY}):f.push([{id:i.id,centerX:i.centerX,centerY:i.centerY}])}f.forEach(i=>i.sort((u,y)=>u.centerX-y.centerX));const Y=f.findIndex(i=>i.some(u=>u.id===t));if(Y===-1)return((cs=(os=f[0])==null?void 0:os[0])==null?void 0:cs.id)??t;const $=f[Y],v=$.findIndex(i=>i.id===t);if(v===-1)return((us=(ls=f[0])==null?void 0:ls[0])==null?void 0:us.id)??t;if(n==="left")return((hs=$[Math.max(0,v-1)])==null?void 0:hs.id)??t;if(n==="right")return((ms=$[Math.min($.length-1,v+1)])==null?void 0:ms.id)??t;const V=n==="up"?Math.max(0,Y-1):Math.min(f.length-1,Y+1),c=f[V],R=$[v].centerX;let D=c[0],ds=Math.abs(D.centerX-R);for(const i of c){const u=Math.abs(i.centerX-R);u<ds&&(D=i,ds=u)}return(D==null?void 0:D.id)??t},E=t=>{const n=M.getShortcuts(),A=n.find(c=>c.id==="dashboard-selector-toggle"),es=n.find(c=>c.id==="dashboard-vim-left"),as=n.find(c=>c.id==="dashboard-vim-down"),f=n.find(c=>c.id==="dashboard-vim-up"),Y=n.find(c=>c.id==="dashboard-vim-right"),$=n.find(c=>c.id==="open-terminal"),v=M.getState();if(e(t.target))if(!v.terminalOpen&&d(t.target)&&document.activeElement instanceof HTMLElement)document.activeElement.blur();else return;if(G(t,A)){if(C.length===0)return;t.preventDefault(),t.stopPropagation(),Q(!0),B(c=>{const R=c&&C.some(D=>D.id===c)?c:C[0].id;return a==null||a(R),window.setTimeout(()=>l(R),0),R});return}const V=G(t,es)||t.key==="ArrowLeft"?"left":G(t,as)||t.key==="ArrowDown"?"down":G(t,f)||t.key==="ArrowUp"?"up":G(t,Y)||t.key==="ArrowRight"?"right":null;if(V&&P&&w){t.preventDefault(),t.stopPropagation();const c=_(w,V);c!==w&&(B(c),a==null||a(c),window.setTimeout(()=>l(c),0));return}if(G(t,$)){if(v.terminalOpen)return;if(P&&w&&v.agents.has(w)){t.preventDefault(),r==null||r(w);return}if(v.selectedAgentIds.size===1){t.preventDefault();const c=Array.from(v.selectedAgentIds)[0];r==null||r(c);return}if(v.lastSelectedAgentId&&v.agents.has(v.lastSelectedAgentId)){t.preventDefault(),r==null||r(v.lastSelectedAgentId);return}}};return document.addEventListener("keydown",E,!0),()=>document.removeEventListener("keydown",E,!0)},[C,P,w,r,a]),o.useEffect(()=>{const e=document.activeElement;e instanceof HTMLElement&&e.closest(".guake-terminal")&&!M.getState().terminalOpen&&e.blur()},[]),s.jsxs("div",{className:"dashboard-view",children:[s.jsxs("div",{className:"dashboard-view__topbar",children:[s.jsxs("div",{className:"dashboard-view__metrics",children:[s.jsxs("button",{className:`dashboard-view__metric-btn ${j==="all"?"dashboard-view__metric-btn--active":""}`,onClick:()=>I("all"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.total}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:labels.agents")})]}),s.jsxs("button",{className:`dashboard-view__metric-btn dashboard-view__metric-btn--working ${j==="working"?"dashboard-view__metric-btn--active":""}`,onClick:()=>I("working"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.working}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:status.working")})]}),s.jsxs("button",{className:"dashboard-view__metric-btn dashboard-view__metric-btn--idle ",onClick:()=>I("all"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.idle}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:status.idle")})]}),s.jsxs("button",{className:`dashboard-view__metric-btn dashboard-view__metric-btn--error ${j==="error"?"dashboard-view__metric-btn--active":""}`,onClick:()=>I("error"),children:[s.jsx("span",{className:"dashboard-view__metric-value",children:W.error}),s.jsx("span",{className:"dashboard-view__metric-label",children:h("common:status.error")})]})]}),s.jsx("input",{className:"dashboard-view__search",type:"text",placeholder:h("searchPlaceholder"),value:N,onChange:e=>H(e.target.value)})]}),s.jsxs("div",{className:"dashboard-view__grouping",children:[s.jsx("button",{className:`dashboard-view__grouping-btn ${m==="zone"?"dashboard-view__grouping-btn--active":""}`,onClick:()=>Z("zone"),children:h("grouping.byZone")}),s.jsx("button",{className:`dashboard-view__grouping-btn ${m==="status"?"dashboard-view__grouping-btn--active":""}`,onClick:()=>Z("status"),children:h("grouping.byStatus")}),s.jsx("button",{className:`dashboard-view__grouping-btn ${m==="activity"?"dashboard-view__grouping-btn--active":""}`,onClick:()=>Z("activity"),children:h("grouping.byActivity")})]}),s.jsxs("div",{className:"dashboard-view__content",children:[ss.map(e=>{const d=O(e),l=b.has(d),_=e.sortedAgents,E=e.agents.filter(n=>n.status==="working"||n.status==="waiting"||n.status==="waiting_permission").length,t=e.agents.filter(n=>X.has(n.id)).length;return s.jsxs("div",{className:`dashboard-view__zone ${ps===(e.area?e.area.id:null)&&k?"dashboard-view__zone--drag-over":""}`,onDragOver:n=>ks(n,e.area?e.area.id:null),onDragLeave:Cs,onDrop:()=>ys(e.area?e.area.id:null),children:[s.jsxs("div",{className:"dashboard-view__zone-header",onClick:()=>ws(d),children:[s.jsxs("div",{className:"dashboard-view__zone-left",children:[s.jsx("span",{className:`dashboard-view__zone-chevron ${l?"dashboard-view__zone-chevron--collapsed":""}`,children:s.jsx(U,{name:"caret-down",size:12})}),s.jsx("span",{className:"dashboard-view__zone-dot",style:{backgroundColor:e.color}}),s.jsx("span",{className:"dashboard-view__zone-name",children:e.label}),s.jsxs("span",{className:"dashboard-view__zone-count",children:[h("agentCount",{count:e.agents.length}),E>0&&s.jsxs("span",{className:"dashboard-view__zone-working",children:[" · ",E," ",h("working")]}),t>0&&s.jsxs("span",{className:"dashboard-view__zone-unseen",children:[" · ",t," Unseen"]})]})]}),e.area&&g&&s.jsx("button",{className:"dashboard-view__zone-focus",onClick:n=>{n.stopPropagation(),g(e.area.id)},title:h("focusZone"),children:h("focusZone")})]}),!l&&s.jsx("div",{className:"dashboard-view__zone-grid",children:_.map(n=>s.jsx(bs,{agent:n,isSelected:ns.has(n.id),isKeyboardFocused:P&&w===n.id,onSelect:xs,onDoubleClick:gs,onChat:js,onFocus:z,onKill:F,onDragStart:Ns},n.id))})]},d)}),T.length===0&&s.jsx("div",{className:"dashboard-view__empty",children:N?h("noAgentsMatching",{search:N}):h("noAgentsSpawned")}),S.size>0&&s.jsx(fs,{buildings:S,onSelectBuilding:L})]})]})}export{qs as DashboardView};
|