tide-commander 1.181.0 → 1.182.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 +11 -0
- package/README.md +21 -1
- package/dist/assets/{AudioPlayer-BAtnEqGO.js → AudioPlayer-BwhOjJ2c.js} +1 -1
- package/dist/assets/{BossLogsModal-DKPlKlOF.js → BossLogsModal-DAHZQ1pi.js} +1 -1
- package/dist/assets/BossSpawnModal-E7SGuXA2.js +1 -0
- package/dist/assets/ControlsModal-bAaYejMT.js +1 -0
- package/dist/assets/{DockerLogsModal-hn265l_A.js → DockerLogsModal-BJx8N4kK.js} +1 -1
- package/dist/assets/{EmbeddedEditor-Cj5jPNh6.js → EmbeddedEditor-Be-cO4-9.js} +1 -1
- package/dist/assets/{FcStdViewer-CFxBBNQq.js → FcStdViewer-DEwQ08Bb.js} +1 -1
- package/dist/assets/{GcodeViewer-3z7qkN29.js → GcodeViewer-ncf61wWb.js} +1 -1
- package/dist/assets/{GlbViewer-CaOGrb_f.js → GlbViewer-D12gmnGd.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-Bk6jecTI.js → GmailOAuthSetup-C-GvDGQm.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-DVeeuuWe.js → GoogleOAuthSetup-BDjIAgur.js} +1 -1
- package/dist/assets/{IframeModal-wSJPMjiR.js → IframeModal-CCocGfa7.js} +1 -1
- package/dist/assets/{IntegrationsPanel-BorSz1f6.js → IntegrationsPanel-CBpaeiJG.js} +2 -2
- package/dist/assets/{LogViewerModal-Bc_8Tjwp.js → LogViewerModal-CaN7XU8z.js} +1 -1
- package/dist/assets/{MonitoringModal-_K-xK58O.js → MonitoringModal-I3nCNlbU.js} +1 -1
- package/dist/assets/{PM2LogsModal-RP5kh78y.js → PM2LogsModal-Bki_LCvj.js} +1 -1
- package/dist/assets/RestoreArchivedAreaModal-Ciy6t7et.js +1 -0
- package/dist/assets/{Scene2DCanvas-BD8gC5GG.js → Scene2DCanvas-DR56E5p7.js} +1 -1
- package/dist/assets/{SceneManager-B1FWKQrV.js → SceneManager-DKg8ugY_.js} +1 -1
- package/dist/assets/{SkillsPanel-B3sV8qgJ.js → SkillsPanel-C_dxzS6F.js} +2 -2
- package/dist/assets/{SlackMultiInstanceSetup-By9kD-7V.js → SlackMultiInstanceSetup-BwiTMMvL.js} +1 -1
- package/dist/assets/SpawnModal-DUMcIHoz.js +1 -0
- package/dist/assets/{StatisticsModal-k-Zow1Lc.js → StatisticsModal-BKXcBthy.js} +1 -1
- package/dist/assets/{StlViewer-CvwylgqD.js → StlViewer-DjdLvysP.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-BgZoihF2.js → SubordinateAssignmentModal-Rl4cdHpe.js} +1 -1
- package/dist/assets/{ThreeAreaSelector-CBoLZACl.js → ThreeAreaSelector-C-9JJ1Hh.js} +1 -1
- package/dist/assets/{ThreeViewShortcuts-CwWPyQ1I.js → ThreeViewShortcuts-DL0Hmuj0.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-8dCnF4zG.js → TriggerManagerPanel-BtCOoX1g.js} +1 -1
- package/dist/assets/{VideoPlayer-CFfNly_q.js → VideoPlayer-BoTr9gkT.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-DaoqmmDI.js → WorkflowEditorPanel-DlcSaDPD.js} +1 -1
- package/dist/assets/{abnfDiagram-VRR7QNED-AVCJRSGv.js → abnfDiagram-VRR7QNED-CEBRXYsw.js} +1 -1
- package/dist/assets/{arc-BozrtqGC.js → arc-COf9R405.js} +1 -1
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-DIbqkKKH.js → architectureDiagram-ZJ3FMSHR-DGBRfu4B.js} +1 -1
- package/dist/assets/{area-logos-_xssrP4-.js → area-logos-BRuKyQ5J.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-cUooA8WG.js → blockDiagram-677ZJIJ3-CN0t4U2k.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-BN-pAlnh.js → c4Diagram-LMCZKHZV-Cq0IftW5.js} +1 -1
- package/dist/assets/channel-DF_pUJhw.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-Df3QaYQM.js → chunk-2Q5K7J3B-adR2VoGA.js} +1 -1
- package/dist/assets/{chunk-32BRIVSS-eWsLMUAK.js → chunk-32BRIVSS-B6LCChZq.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-D8L5MdGs.js → chunk-5VM5RSS4-CcH2c7y_.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-D9F-m38t.js → chunk-EX3LRPZG-zBWa-mu2.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-CTPQZilc.js → chunk-JWPE2WC7-DBQlYiWn.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-BI5XLi89.js → chunk-MOJQB5TN-BjbsCplS.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-aUw8CA0H.js → chunk-RYQCIY6F-B946ZxlN.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-Bvn63xfp.js → chunk-V7JOEXUC-DEeYHnRT.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-DuQCapS-.js → chunk-VR4S4FIN-B_QmrVGt.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY--Q2M75o8.js → chunk-XXDRQBXY-cgYh6YrW.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-CeYNs9YM.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-CeYNs9YM.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-CnOCRlHl.js → cose-bilkent-JH36ORCC-DJUmw0Ip.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-CVOENzFv.js → cynefin-VYW2F7L2-BUxR220i.js} +1 -1
- package/dist/assets/{cynefinDiagram-TSTJHNR4-BLe8BxZL.js → cynefinDiagram-TSTJHNR4-nYR1MwE2.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-xtW7I5Nk.js → dagre-VKFMJZFB-A5VPim2l.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-BIr_QEk-.js → diagram-FQU43EPY-wdgwDoVg.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-BJd55qXW.js → diagram-G47NLZAW-CylyJQBQ.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-CZsKPct7.js → diagram-NH7WQ7WH-BOF1uKhH.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-BaG39QNH.js → diagram-OA4YK3LP-B0B5zmh5.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-ShUVdCXz.js → diagram-WEI45ONY-vKP2IU9q.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-T9Sx10gP.js → ebnfDiagram-CCIWWBDH-DM8hIEJM.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-CwT0KHCH.js → erDiagram-Q63AITRT-iuRH3hWX.js} +1 -1
- package/dist/assets/{flowDiagram-23GEKE2U-DpfmSS0V.js → flowDiagram-23GEKE2U-CddCUoGB.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-DFHqNARc.js → ganttDiagram-NO4QXBWP-CIfvQLcu.js} +1 -1
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-DiG1nj1m.js → gitGraphDiagram-IHSO6WYX-CbW0FQci.js} +1 -1
- package/dist/assets/index-B4YklnOy.js +1 -0
- package/dist/assets/{index-CeUo--0k.js → index-BmD7ycmn.js} +1 -1
- package/dist/assets/{index-B8WCuK1N.js → index-CIcFjlRX.js} +2 -2
- package/dist/assets/{index-BMINDCB0.js → index-CRhUiTuD.js} +3 -3
- package/dist/assets/{index-COqQ_1sL.css → index-D1GfjaTN.css} +1 -1
- package/dist/assets/index-DHuT10Pa.js +1 -0
- package/dist/assets/{index-BmmzETKL.js → index-DoJdznbY.js} +5 -5
- package/dist/assets/index-Du8eK_OX.js +1 -0
- package/dist/assets/index-HYcYan1q.js +19 -0
- package/dist/assets/index-HhAZ3SIm.js +2 -0
- package/dist/assets/{infoDiagram-FWYZ7A6U-CT7RBQSN.js → infoDiagram-FWYZ7A6U-C0it9hLc.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-Bv_eTPfi.js → ishikawaDiagram-FXEZZL3T-pKZnNgqp.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-BwKya-ih.js → journeyDiagram-5HDEW3XC-Ib9FpXdB.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-VrWxcMn7.js → kanban-definition-HUTT4EX6-aOTfe6f6.js} +1 -1
- package/dist/assets/{linear-BsocX-C-.js → linear-B_ipWlyx.js} +1 -1
- package/dist/assets/main-Bvn8CMZc.css +1 -0
- package/dist/assets/{main-B9DphKOa.js → main-m3NNcAo4.js} +115 -115
- package/dist/assets/{mermaid.core-Uz36XO2-.js → mermaid.core-EY9hyXLz.js} +4 -4
- package/dist/assets/{mindmap-definition-LN4V7U3C-Bv9DlPAr.js → mindmap-definition-LN4V7U3C-B_p1LOAa.js} +1 -1
- package/dist/assets/{pegDiagram-2B236MQR-CRG-2pCa.js → pegDiagram-2B236MQR-BgCd9rWg.js} +1 -1
- package/dist/assets/{pieDiagram-ENE6RG2P-dkVFz981.js → pieDiagram-ENE6RG2P-d8ofNooq.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-D6Y-oPfA.js → quadrantDiagram-ABIIQ3AL-27DPJdZF.js} +1 -1
- package/dist/assets/{railroadDiagram-RFXS5EU6-DnBPGcSS.js → railroadDiagram-RFXS5EU6-C7S8pppU.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-BfXBQgDX.js → requirementDiagram-TGXJPOKE-BbTkDbLO.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-B2plq2xb.js → sankeyDiagram-HTMAVEWB-lU57KWVw.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-5HYSSRy3.js → sequenceDiagram-DBY2YBRQ-Bg18P0LT.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-Dhd1V1RM.js → sizeCapture-X5ZJPWSS-FDhyxAiu.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-BawpJoTz.js → stateDiagram-2N3HPSRC-pp9KUH2d.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-BmoS7QDQ.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-BYunKpK9.js → swimlanes-5IMT3BWC-BCUZKORl.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-Da6QbdiL.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-BA1n8ny7.js → timeline-definition-FHXFAJF6-BaeOwVlH.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-DfSgfnDb.js → vennDiagram-L72KCM5P-BkhqU_hz.js} +1 -1
- package/dist/assets/{wardleyDiagram-EHGQE667-Ccum1Sj1.js → wardleyDiagram-EHGQE667-DvPxIC6q.js} +1 -1
- package/dist/assets/{web-24bQZmaT.js → web-BhVPxATx.js} +1 -1
- package/dist/assets/{web-CDfC-TTs.js → web-CR-app3U.js} +1 -1
- package/dist/assets/{web-C4jAxolp.js → web-DOiXCdVs.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-CZKJCuVt.js → xychartDiagram-FW5EYKEG-B9MrBAD_.js} +1 -1
- package/dist/build-info.json +1 -1
- package/dist/index.html +2 -2
- package/dist/locales/de/config.json +5 -0
- package/dist/locales/de/terminal.json +1 -0
- package/dist/locales/en/config.json +5 -0
- package/dist/locales/en/terminal.json +2 -0
- package/dist/locales/es/config.json +5 -0
- package/dist/locales/es/terminal.json +11 -0
- package/dist/locales/fr/config.json +5 -0
- package/dist/locales/fr/terminal.json +1 -0
- package/dist/locales/hi/config.json +5 -0
- package/dist/locales/hi/terminal.json +1 -0
- package/dist/locales/it/config.json +5 -0
- package/dist/locales/it/terminal.json +1 -0
- package/dist/locales/ja/config.json +5 -0
- package/dist/locales/ja/terminal.json +1 -0
- package/dist/locales/pt/config.json +5 -0
- package/dist/locales/pt/terminal.json +1 -0
- package/dist/locales/ru/config.json +5 -0
- package/dist/locales/ru/terminal.json +1 -0
- package/dist/locales/zh-CN/config.json +5 -0
- package/dist/locales/zh-CN/terminal.json +1 -0
- package/dist/src/packages/server/data/builtin-skills/boss-instructions.js +1 -1
- package/dist/src/packages/server/grok/backend.js +7 -10
- package/dist/src/packages/server/index.js +61 -34
- package/dist/src/packages/server/routes/files.js +45 -19
- package/dist/src/packages/server/services/global-file-search.js +281 -0
- package/dist/src/packages/server/websocket/handler.js +16 -6
- package/dist/src/packages/server/websocket/listeners/runtime-listeners.js +7 -0
- package/dist/src/packages/shared/agent-types.js +56 -4
- package/dist/src/packages/shared/file-search.js +49 -0
- package/dist/src/packages/shared/types.js +1 -0
- package/package.json +1 -1
- package/dist/assets/BossSpawnModal-CvFw8BPQ.js +0 -1
- package/dist/assets/ControlsModal-f4JvuTMY.js +0 -1
- package/dist/assets/RestoreArchivedAreaModal-C_cQr4Ay.js +0 -1
- package/dist/assets/SpawnModal-yPfAItLC.js +0 -1
- package/dist/assets/channel-Dz9gemPm.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-D29jX9yn.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-D29jX9yn.js +0 -1
- package/dist/assets/index-B5DZivhj.js +0 -19
- package/dist/assets/index-B_A7-K2O.js +0 -1
- package/dist/assets/index-CzZH0S0F.js +0 -1
- package/dist/assets/index-DHN-Bqnw.js +0 -1
- package/dist/assets/index-Dhfk8xKP.js +0 -2
- package/dist/assets/main-4CZSv3SH.css +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-ChimTXB4.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-4ZzygVvO.js +0 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`)}function $e(s,a){return`${s}:${rt(a)}`}function it(s,a,c,f){if(s.uuid&&a.has(s.uuid))return!1;if(s.uuid)return!0;const p=s.isUserPrompt?"user":"assistant",d=$e(p,s.text),M=s.timestamp||0,A=c.get(d);return A!==void 0&&Math.abs(M-A)<=ot?!1:M>f}function dt({isOpen:s,agents:a}){const c=
|
|
1
|
+
import{ay as He,r as t,s as I,d as Re,az as Ee,c as Oe,j as e,I as O,u as fe,aA as _e,aB as Te,aC as Be,aD as Ue,aE as Ke,aF as We,a5 as De,aG as Ve,aH as Ge,aI as qe,aJ as Je,J as Ye,m as Me,S as le,F as Xe,C as Qe,n as Ze,y as Ie,z as et,a0 as tt,aK as st,ap as X,aL as nt}from"./main-m3NNcAo4.js";import{FileExplorerPanel as at}from"./index-HYcYan1q.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-CBPuP1jE.js";const Se={status:"all",activity:"all",sort:"activity"},ct={"1h":3600*1e3,"6h":360*60*1e3,"24h":1440*60*1e3},Ae=20,me=3,lt={idle:"#4aff9e",working:"#4a9eff",waiting:"#ff9e4a",waiting_permission:"#ffcc00",error:"#ff4a4a",offline:"#888888",orphaned:"#ff9e4a"},ot=12e4;function rt(s){return s.trim().replace(/\r\n/g,`
|
|
2
|
+
`)}function $e(s,a){return`${s}:${rt(a)}`}function it(s,a,c,f){if(s.uuid&&a.has(s.uuid))return!1;if(s.uuid)return!0;const p=s.isUserPrompt?"user":"assistant",d=$e(p,s.text),M=s.timestamp||0,A=c.get(d);return A!==void 0&&Math.abs(M-A)<=ot?!1:M>f}function dt({isOpen:s,agents:a}){const c=He(),[f,p]=t.useState(new Map),d=t.useRef(new Set);t.useRef(a);const M=t.useMemo(()=>Array.from(a.keys()).sort().join(","),[a]),A=t.useMemo(()=>Array.from(a.values()).map(j=>`${j.id}:${j.sessionId||""}`).sort().join(","),[a]);t.useEffect(()=>{s||(d.current.clear(),p(new Map))},[s]),t.useEffect(()=>{if(!s)return;const j=new Set(Array.from(a.keys()));for(const i of d.current)j.has(i)||d.current.delete(i);let h=null;c>0&&(h=I.preserveOutputs(),d.current.clear());const v=async(i,b,$=0)=>{if(d.current.add(i.id),$>0&&await new Promise(x=>setTimeout(x,$)),p(x=>{const N=new Map(x);return N.set(i.id,{agentId:i.id,messages:[],loading:!0,hasMore:!1,totalCount:0}),N}),!i.sessionId){b&&b.length>0&&I.mergeOutputsWithHistory(i.id,[],b),p(x=>{const N=new Map(x);return N.set(i.id,{agentId:i.id,messages:[],loading:!1,hasMore:!1,totalCount:0}),N});return}try{const N=await(await Oe(Re(`/api/agents/${i.id}/history?limit=${Ee}&offset=0`))).json(),P=N.messages||[],W=P.length>0?Math.max(...P.map(C=>C.timestamp?new Date(C.timestamp).getTime():0)):0,J=new Set(P.map(C=>C.uuid).filter(C=>!!C)),V=new Map;for(const C of P){if(C.type!=="user"&&C.type!=="assistant")continue;const o=$e(C.type,C.content),L=C.timestamp?new Date(C.timestamp).getTime():0,K=V.get(o)??0;L>K&&V.set(o,L)}const G=I.getOutputs(i.id),U=(b&&b.length>0?[...b,...G]:G).filter(C=>it(C,J,V,W));I.clearOutputs(i.id);for(const C of U)I.addOutput(i.id,C);p(C=>{const o=new Map(C);return o.set(i.id,{agentId:i.id,messages:P,loading:!1,hasMore:N.hasMore||!1,totalCount:N.totalCount||0}),o})}catch(x){if(console.error(`Failed to load history for ${i.name}:`,x),b&&b.length>0){I.clearOutputs(i.id);for(const N of b)I.addOutput(i.id,N)}p(N=>{const P=new Map(N);return P.set(i.id,{agentId:i.id,messages:[],loading:!1,hasMore:!1,totalCount:0}),P})}},u=c>0?500:0,D=Array.from(a.values());for(const i of D)if(!d.current.has(i.id)){const b=h==null?void 0:h.get(i.id);v(i,b,u)}},[s,M,A,c]);const y=t.useRef(a),k=t.useRef(f);y.current=a,k.current=f;const w=t.useCallback(async j=>{const h=y.current.get(j),v=k.current.get(j);if(!(h!=null&&h.sessionId)||!v||!v.hasMore)return;const u=v.messages.length;try{const i=await(await fetch(Re(`/api/agents/${j}/history?limit=${Ee}&offset=${u}`))).json();i.messages&&i.messages.length>0&&p(b=>{const $=new Map(b),x=b.get(j);return x&&$.set(j,{...x,messages:[...i.messages,...x.messages],hasMore:i.hasMore||!1}),$})}catch(D){console.error(`Failed to load more history for agent ${j}:`,D)}},[]),E=t.useCallback(j=>{d.current.delete(j),p(h=>{const v=new Map(h),u=h.get(j);return u&&v.set(j,{...u,messages:[],hasMore:!1,totalCount:0,loading:!1}),v})},[]);return{histories:f,loadMoreHistory:w,clearAgentHistory:E}}function ut({command:s,onCommandChange:a,useTextarea:c,forceTextarea:f,onForceTextarea:p,onSend:d,canSend:M,attachedFiles:A,onAddFile:y,onRemoveFile:k,uploadFile:w,onAddPastedText:E,placeholder:j="Message...",className:h="",compact:v=!1,inputRef:u}){const D=t.useRef(null),i=t.useRef(null),b=t.useRef(c);t.useEffect(()=>{if(c&&!b.current&&i.current){const o=i.current;o.focus(),o.selectionStart=o.selectionEnd=o.value.length}b.current=c},[c]),t.useEffect(()=>{const o=i.current;if(!o||!c)return;o.style.height="auto";const L=v?120:180,K=Math.min(o.scrollHeight,L);o.style.height=`${K}px`},[s,c,v]);const $=t.useCallback(async o=>{const L=o.clipboardData.items;for(const _ of L)if(_.type.startsWith("image/")){o.preventDefault();const F=_.getAsFile();if(F){const z=await w(F);z&&y(z)}return}const K=o.clipboardData.files;if(K.length>0){o.preventDefault();for(const _ of K){const F=await w(_);F&&y(F)}return}const B=o.clipboardData.getData("text"),te=(B.match(/\n/g)||[]).length+1;if(te>5){o.preventDefault();const F=`[Pasted text #${E(B)} +${te} lines]`,z=o.target,se=z.selectionStart||0,ae=z.selectionEnd||0,ne=s.slice(0,se)+F+s.slice(ae);a(ne),c||p(!0)}},[s,a,c,p,w,y,E]),x=t.useCallback(async o=>{const L=o.target.files;if(L){for(const K of L){const B=await w(K);B&&y(B)}D.current&&(D.current.value="")}},[w,y]),N=t.useCallback(o=>{if(o.key==="Enter"&&o.shiftKey){c||(o.preventDefault(),p(!0));return}o.key==="Enter"&&(o.preventDefault(),d())},[c,p,d]),P=t.useCallback(o=>{},[]),W=t.useCallback(o=>{o.button===1&&(o.preventDefault(),o.stopPropagation())},[]),J=t.useCallback(o=>{i.current=o,u==null||u(o)},[u]),V=v?"agent-panel-input":"guake-input",G=v?"agent-panel-input-container":"guake-input-container",Q=v?"agent-panel-attach-btn":"guake-attach-btn",U=v?"agent-panel-send-btn":"",C=c?v?"agent-panel-input-expanded":"guake-input-expanded":"";return e.jsxs(e.Fragment,{children:[A.length>0&&e.jsx("div",{className:v?"agent-panel-attachments":"guake-attachments",children:A.map(o=>e.jsxs("div",{className:`${v?"agent-panel-attachment":"guake-attachment"} ${o.isImage?"is-image":""}`,children:[e.jsx("span",{className:v?"agent-panel-attachment-icon":"guake-attachment-icon",children:e.jsx(O,{name:o.isImage?"file":"paperclip",size:12})}),e.jsx("span",{className:v?"agent-panel-attachment-name":"guake-attachment-name",title:o.path,children:o.name}),!v&&e.jsxs("span",{className:"guake-attachment-size",children:["(",Math.round(o.size/1024),"KB)"]}),e.jsx("button",{className:v?"agent-panel-attachment-remove":"guake-attachment-remove",onClick:()=>k(o.id),title:"Remove",children:"×"})]},o.id))}),e.jsxs("div",{className:`${V} ${C} ${h}`,children:[e.jsx("input",{ref:D,type:"file",multiple:!0,onChange:x,style:{display:"none"},accept:"*"}),e.jsxs("div",{className:G,onAuxClick:W,children:[e.jsx("button",{className:Q,onClick:()=>{var o;return(o=D.current)==null?void 0:o.click()},title:"Attach file (or paste image)",children:e.jsx(O,{name:"paperclip",size:14})}),c?e.jsx("textarea",{ref:J,placeholder:j,value:s,onChange:o=>a(o.target.value),onKeyDown:N,onPaste:$,onMouseDown:P}):e.jsx("input",{ref:u,type:"text",placeholder:j,value:s,onChange:o=>a(o.target.value),onKeyDown:N,onPaste:$,onMouseDown:P}),e.jsx("button",{className:U,onClick:d,disabled:!M,title:"Send",children:e.jsx(O,{name:"send",size:14})})]})]})]})}function mt(s){const a=Math.floor(s/1e3),c=Math.floor(a/60),f=a%60;return`${c}:${f.toString().padStart(2,"0")}`}const ft=t.memo(function({agentId:a,isWorking:c,timestamp:f}){const{t:p}=fe(["terminal"]),[d,M]=t.useState(0);return t.useEffect(()=>{if(!c||!f){M(0);return}M(Date.now()-f);const A=setInterval(()=>{M(Date.now()-f)},1e3);return()=>clearInterval(A)},[c,f]),c?e.jsxs("div",{className:"guake-stop-bar",children:[e.jsx("span",{className:"guake-elapsed-timer",children:mt(d)}),e.jsxs("button",{className:"guake-stop-btn",onClick:()=>I.stopAgent(a),title:p("terminal:input.stopOperation"),children:[e.jsx("span",{className:"stop-icon",children:e.jsx(O,{name:"stop",size:12,weight:"fill"})}),e.jsx("span",{className:"stop-label",children:p("terminal:input.stop")})]})]}):null});function pt({agent:s,history:a,outputs:c,isExpanded:f,isFocused:p,advancedView:d,onExpand:M,onFocus:A,inputRef:y,onLoadMore:k,onClearHistory:w}){const{t:E}=fe(["terminal","common"]),j=_e(s.id),h=t.useRef(null),[v,u]=t.useState(!1),D=t.useRef(0),i=t.useRef(!1),[b,$]=t.useState(!0),[x,N]=t.useState(!1),[P,W]=t.useState(null),[J,V]=t.useState(null),[G,Q]=t.useState(null);Te(`commander-image-modal-${s.id}`,P!==null,()=>W(null));const{command:U,setCommand:C,forceTextarea:o,setForceTextarea:L,useTextarea:K,setPastedTexts:B,incrementPastedCount:te,resetPastedCount:_,attachedFiles:F,setAttachedFiles:z,removeAttachedFile:se,uploadFile:ae,expandPastedTexts:ne}=Be({selectedAgentId:s.id}),ce=U.trim().length>0||F.length>0,n=Ue({outputs:c,viewMode:d?"advanced":"simple"}),l=t.useMemo(()=>{const S=Ke(s);return{usedPercent:S.usedPercent,freePercent:S.freePercent,hasData:!!s.contextStats,totalTokens:S.totalTokens,contextWindow:S.contextWindow}},[s.contextStats,s.contextUsed,s.contextLimit]),g=t.useCallback(()=>{!v&&(a!=null&&a.hasMore)&&k&&(u(!0),D.current=h.current?h.current.scrollHeight-h.current.scrollTop:0,k())},[v,a==null?void 0:a.hasMore,k]);t.useEffect(()=>{v&&a&&!a.loading&&u(!1)},[a,v]);const m=t.useCallback(()=>{i.current=!0,$(!1)},[]),T=t.useRef(f),Z=t.useRef(p);t.useEffect(()=>{(f&&!T.current||p&&!Z.current)&&(i.current=!1,$(!0),N(!0)),T.current=f,Z.current=p},[f,p]);const ee=t.useRef(a==null?void 0:a.loading);t.useEffect(()=>{ee.current&&!(a!=null&&a.loading)&&(i.current=!1,$(!0),N(!0)),ee.current=a==null?void 0:a.loading},[a==null?void 0:a.loading]),t.useEffect(()=>{if(!x)return;const S=h.current;if(!S)return;const R=performance.now();let H=0,ue=-1,be;const ye=()=>{const{scrollTop:Fe,scrollHeight:Ne,clientHeight:Le}=S,ze=Ne-Fe-Le<=2;if(Math.abs(Ne-ue)<=1&&ze?H+=1:H=0,ue=Ne,H>=3){N(!1);return}if(performance.now()-R>5e3){N(!1);return}be=requestAnimationFrame(ye)};return be=requestAnimationFrame(ye),()=>cancelAnimationFrame(be)},[x]),t.useEffect(()=>{i.current||$(!0)},[n.length]);const q=t.useCallback(()=>!1,[]),ie=t.useCallback(S=>{const R=te();return B(H=>new Map(H).set(R,S)),R},[te,B]),he=t.useCallback(S=>{z(R=>[...R,S])},[z]),xe=t.useCallback(()=>{if(!ce)return;if(U.trim()==="/clear"&&F.length===0){I.clearContext(s.id),w(),C(""),L(!1),B(new Map),z([]),_();return}let S=ne(U.trim());if(F.length>0){const R=F.map(H=>H.isImage?`[Image: ${H.path}]`:`[File: ${H.path}]`).join(`
|
|
3
3
|
`);S=S?`${S}
|
|
4
4
|
|
|
5
|
-
${R}`:R}I.sendCommand(s.id,S),i.current=!1,$(!0),N(!0),C(""),L(!1),B(new Map),H([]),_()},[s.id,U,ce,F,ne,w,_,C,L,B,H]),ge=t.useCallback((S,R)=>{W({url:S,name:R})},[]),ve=t.useCallback((S,R)=>{const z=We(S,s.cwd),ue=z.line?{...R||{},targetLine:z.line}:R;I.setFileViewerPath(z.path,ue,s.cwd)},[s.cwd]),je=t.useCallback((S,R)=>{V({command:S,output:R,isLive:R==="Running..."})},[]),we=t.useCallback(S=>{Q(S)},[]),Ce=t.useCallback(()=>{N(!1),i.current=!0,$(!1)},[]),ke=t.useCallback(()=>W(null),[]),r=t.useCallback(()=>V(null),[]),Y=t.useCallback(()=>Q(null),[]),de=t.useCallback(S=>{S.stopPropagation(),M()},[M]),oe=lt[s.status]||"#888888",re=(a==null?void 0:a.messages)||[];return e.jsxs("div",{className:`agent-panel ${s.status==="working"?"working":""} ${f?"expanded":""} ${p?"focused":""}`,onClick:p?void 0:A,children:[e.jsxs("div",{className:"agent-panel-header",onClick:p?A:void 0,children:[e.jsxs("div",{className:"agent-panel-info",children:[e.jsx("span",{className:"agent-panel-status",style:{background:oe},title:s.status}),e.jsxs("span",{className:"agent-panel-name",children:[(s.isBoss||s.class==="boss")&&e.jsx("span",{className:"agent-panel-boss-crown",children:e.jsx(O,{name:"crown",size:14})}),s.name]}),e.jsx("span",{className:`agent-panel-status-label ${s.status}`,children:s.status}),e.jsx("span",{className:"agent-panel-class",children:s.class}),e.jsx("span",{className:`agent-panel-provider ${s.provider==="codex"?"codex":s.provider==="opencode"?"opencode":s.provider==="grok"?"grok":s.provider==="pi"?"pi":"claude"}`,children:s.provider||"claude"}),e.jsxs("span",{className:"agent-panel-id",title:`ID: ${s.id}`,children:["[",s.id.substring(0,4),"]"]}),s.taskLabel?e.jsxs("div",{className:"agent-panel-task agent-panel-task-label",title:s.taskLabel,children:[e.jsx(O,{name:"task",size:12})," ",s.taskLabel]}):s.currentTask?e.jsxs("div",{className:"agent-panel-task",title:s.currentTask,children:[s.currentTask.substring(0,40),"..."]}):null]}),e.jsxs("div",{className:"agent-panel-context",title:`Context: ${Math.round(l.usedPercent)}% used (${De(l.totalTokens)} / ${De(l.contextWindow)})`,children:[e.jsx("div",{className:"agent-panel-context-bar",style:{background:l.freePercent<20?"#ff4a4a":l.freePercent<50?"#ff9e4a":"#4aff9e",width:`${l.freePercent}%`}}),e.jsxs("span",{className:"agent-panel-context-text",children:[Math.round(l.freePercent),"%"]})]}),e.jsx("div",{className:"agent-panel-actions",children:e.jsx("button",{className:"agent-panel-expand",onClick:de,title:E(f?"commander.collapsePanel":"commander.expandPanel"),children:f?e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"4 14 10 14 10 20"}),e.jsx("polyline",{points:"20 10 14 10 14 4"}),e.jsx("line",{x1:"14",y1:"10",x2:"21",y2:"3"}),e.jsx("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]}):e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("polyline",{points:"9 21 3 21 3 15"}),e.jsx("line",{x1:"21",y1:"3",x2:"14",y2:"10"}),e.jsx("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]})})})]}),e.jsx("div",{className:"agent-panel-content",ref:h,children:a!=null&&a.loading?e.jsx("div",{className:"agent-panel-loading",children:E("common:status.loading")}):e.jsx(e.Fragment,{children:!re.length&&!n.length?e.jsxs("div",{className:"agent-panel-empty",children:[E("commander.noMessages"),!s.sessionId&&e.jsx("div",{style:{fontSize:"10px",color:"#666"},children:E("commander.noSessionId")})]}):e.jsx(Ve,{historyMessages:re,liveOutputs:n,agentId:s.id,viewMode:d?"advanced":"simple",selectedMessageIndex:null,isMessageSelected:q,onImageClick:ge,onFileClick:ve,onBashClick:je,onViewMarkdown:we,scrollContainerRef:h,onScrollTopReached:g,isLoadingMore:v,hasMore:a==null?void 0:a.hasMore,shouldAutoScroll:b,onUserScroll:m,pinToBottom:x,onPinCancel:Ce,isLoadingHistory:a==null?void 0:a.loading})})}),e.jsxs("div",{className:`guake-input-wrapper ${s.status==="working"?"has-stop-btn is-working":""}`,children:[e.jsx(ft,{agentId:s.id,isWorking:s.status==="working",timestamp:j==null?void 0:j.timestamp}),e.jsx(ut,{command:U,onCommandChange:C,useTextarea:K,forceTextarea:o,onForceTextarea:L,onSend:xe,canSend:ce,attachedFiles:F,onAddFile:he,onRemoveFile:se,uploadFile:ae,onAddPastedText:ie,placeholder:E("commander.command",{name:s.name}),compact:!1,inputRef:y})]}),P&&e.jsx(Ge,{url:P.url,name:P.name,onClose:ke}),J&&e.jsx(qe,{state:J,onClose:r}),e.jsx(Je,{agent:s,content:G,onClose:Y})]})}function ht({currentArea:s,onClose:a}){const{t:c}=fe(["terminal","common"]),[f,p]=t.useState(()=>{const u=new Set(Array.from(I.getState().agents.values()).map(D=>D.name));return Ye.find(D=>!u.has(D))||`Agent-${Date.now().toString(36)}`}),[d,M]=t.useState(()=>Me(le.LAST_CWD)),[A,y]=t.useState("scout"),[k,w]=t.useState("claude"),[E,j]=t.useState(!1),h=()=>{if(!f.trim()||!d.trim())return;j(!0),Ie(le.LAST_CWD,d);let u;s&&(u={x:s.center.x,z:s.center.z}),I.spawnAgent(f.trim(),A,d.trim(),u,void 0,void 0,void 0,void 0,k),setTimeout(()=>{a()},500)},v=u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),h()),u.key==="Escape"&&a()};return e.jsx("div",{className:"commander-spawn-overlay",onClick:a,children:e.jsxs("div",{className:"commander-spawn-form",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"commander-spawn-header",children:[e.jsx("h3",{children:c("spawn.addNewAgent")}),s&&e.jsxs("span",{className:"commander-spawn-area",children:[e.jsx("span",{className:"commander-spawn-area-dot",style:{background:s.color}}),s.name]})]}),e.jsxs("div",{className:"commander-spawn-body",children:[e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.name")}),e.jsx("input",{type:"text",value:f,onChange:u=>p(u.target.value),onKeyDown:v,autoFocus:!0})]}),e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.workingDirectory")}),e.jsx(Xe,{value:d,onChange:M,onSubmit:h,placeholder:c("spawn.workingDirPlaceholder"),directoriesOnly:!0})]}),e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.class")}),e.jsx("div",{className:"commander-spawn-classes",children:Qe.map(u=>e.jsxs("button",{className:`commander-spawn-class ${A===u.id?"selected":""}`,onClick:()=>y(u.id),children:[e.jsx(Ze,{classId:u.id,size:18,className:"commander-spawn-class-icon"}),e.jsx("span",{children:u.name})]},u.id))})]}),e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.runtime")}),e.jsxs("div",{className:"commander-spawn-classes",children:[e.jsxs("button",{className:`commander-spawn-class ${k==="claude"?"selected":""}`,onClick:()=>w("claude"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"brain",size:14})}),e.jsx("span",{children:"Claude"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="codex"?"selected":""}`,onClick:()=>w("codex"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"gear",size:14})}),e.jsx("span",{children:"Codex"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="opencode"?"selected":""}`,onClick:()=>w("opencode"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"status-pending",size:12,weight:"fill",color:"#4ade80"})}),e.jsx("span",{children:"OpenCode"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="grok"?"selected":""}`,onClick:()=>w("grok"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"status-pending",size:12,weight:"fill",color:"#6366f1"})}),e.jsx("span",{children:"Grok"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="pi"?"selected":""}`,onClick:()=>w("pi"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"status-pending",size:12,weight:"fill",color:"#a855f7"})}),e.jsx("span",{children:"Pi"})]})]})]})]}),e.jsxs("div",{className:"commander-spawn-footer",children:[e.jsx("button",{className:"commander-spawn-cancel",onClick:a,children:c("common:buttons.cancel")}),e.jsx("button",{className:"commander-spawn-submit",onClick:h,disabled:!f.trim()||!d.trim()||E,children:c(E?"common:buttons.deploying":"common:buttons.deploy")})]})]})})}const Pe=t.memo(function({agent:a,history:c,isExpanded:f,isFocused:p,advancedView:d,index:M,onExpand:A,onCollapse:y,onFocus:k,onInputRef:w,onLoadMore:E,onClearHistory:j}){const h=nt(a.id),v=t.useCallback(()=>{f?y():A(a.id)},[a.id,f,A,y]),u=t.useCallback(()=>{k(p?-1:M)},[M,p,k]),D=t.useCallback($=>{w(a.id,$)},[a.id,w]),i=t.useCallback(()=>{E(a.id)},[a.id,E]),b=t.useCallback(()=>{j(a.id)},[a.id,j]);return e.jsx(pt,{agent:a,history:c,outputs:h,isExpanded:f,isFocused:p,advancedView:d,onExpand:v,onFocus:u,inputRef:D,onLoadMore:i,onClearHistory:b})});function Ct({isOpen:s,onClose:a}){const{t:c}=fe(["terminal","common"]),f=et(),p=tt(),[d,M]=t.useState(()=>Me(le.COMMANDER_TAB,"all")),[A,y]=t.useState(0),[k,w]=t.useState(null),E=t.useRef(null),[j,h]=t.useState(0),[v,u]=t.useState(!1),[D,i]=t.useState(null),[b,$]=t.useState(!1),[x,N]=t.useState(()=>{try{const n=Me(le.COMMANDER_FILTERS,"");if(n)return{...Se,...JSON.parse(n)}}catch{}return Se}),P=t.useRef(new Map),W=t.useRef([]),J=t.useRef(0),V=t.useRef([]),G=t.useRef(d),{histories:Q,loadMoreHistory:U,clearAgentHistory:C}=dt({isOpen:s,agents:f});t.useEffect(()=>{s||(w(null),h(0),u(!1))},[s]);const o=t.useMemo(()=>{const n=Array.from(p.values()).sort((g,m)=>g.name.localeCompare(m.name)),l=[{id:"all",name:c("common:labels.all")}];for(const g of n)l.push({id:g.id,name:g.name,color:g.color});return l.push({id:"unassigned",name:c("commander.unassigned")}),l},[p]),L=t.useMemo(()=>d==="all"||d==="unassigned"?null:p.get(d)||null,[d,p]),K=t.useMemo(()=>{const n=new Map;n.set("all",f.size);let l=0;for(const g of f.values()){const m=I.getAreaForAgent(g.id);m?n.set(m.id,(n.get(m.id)||0)+1):l++}return n.set("unassigned",l),n},[f]),B=x.status!=="all"||x.activity!=="all"||x.sort!=="activity",te=(x.status!=="all"?1:0)+(x.activity!=="all"?1:0)+(x.sort!=="activity"?1:0),_=t.useMemo(()=>{const n=m=>m.isBoss===!0||m.class==="boss",l=Date.now();let g=Array.from(f.values());if(d==="unassigned"?g=g.filter(m=>!I.getAreaForAgent(m.id)):d!=="all"&&(g=g.filter(m=>{const T=I.getAreaForAgent(m.id);return(T==null?void 0:T.id)===d})),x.status!=="all"&&(g=g.filter(m=>{switch(x.status){case"working":return m.status==="working";case"idle":return m.status==="idle";case"error":return m.status==="error"||m.status==="waiting"||m.status==="waiting_permission";case"offline":return m.status==="offline"||m.status==="orphaned";default:return!0}})),x.activity!=="all"){const m=ct[x.activity];g=g.filter(T=>l-(T.lastActivity||0)<m)}return g.sort((m,T)=>{var Z,ee;if(n(m)&&!n(T))return-1;if(!n(m)&&n(T))return 1;switch(x.sort){case"activity":return(T.lastActivity||0)-(m.lastActivity||0);case"name":return m.name.localeCompare(T.name);case"created":return(m.createdAt||0)-(T.createdAt||0);case"context":{const q=((Z=m.contextStats)==null?void 0:Z.usedPercent)??(m.contextUsed||0)/(m.contextLimit||2e5)*100;return(((ee=T.contextStats)==null?void 0:ee.usedPercent)??(T.contextUsed||0)/(T.contextLimit||2e5)*100)-q}default:return(T.lastActivity||0)-(m.lastActivity||0)}}),g},[f,d,x]),F=Math.ceil(_.length/Ae),H=t.useMemo(()=>_.slice(A*Ae,(A+1)*Ae),[_,A]);W.current=H,E.current=k,J.current=j,V.current=o,G.current=d,Te("commander-expanded",k!==null,()=>w(null));const se=st();t.useEffect(()=>{s&&se&&(w(se),I.clearCommanderExpandRequest())},[s,se]);const ae=t.useCallback(()=>w(null),[]),ne=t.useCallback(n=>w(n),[]),ce=t.useCallback(n=>h(n),[]),pe=t.useCallback((n,l)=>{l?P.current.set(n,l):P.current.delete(n)},[]);return t.useEffect(()=>{y(0),Ie(le.COMMANDER_TAB,d)},[d]),t.useEffect(()=>{Ie(le.COMMANDER_FILTERS,JSON.stringify(x)),y(0)},[x]),t.useEffect(()=>{var l;if(!s||window.matchMedia("(pointer: coarse)").matches)return;const n=k||((l=W.current[j])==null?void 0:l.id);if(n){const g=P.current.get(n);g&&document.activeElement!==g&&setTimeout(()=>g.focus(),50)}},[s,j,k]),t.useEffect(()=>{if(!s)return;const n=l=>{const g=I.getShortcuts(),m=l.target,T=m.tagName==="INPUT"||m.tagName==="TEXTAREA",Z=W.current,ee=Z.length-1,q=E.current,ie=g.find(r=>r.id==="commander-close");if(X(l,ie)){const{fileViewerPath:r,contextModalAgentId:Y}=I.getState();if(r||Y)return;l.preventDefault(),l.stopImmediatePropagation(),q?w(null):a();return}const he=g.find(r=>r.id==="commander-vim-left");if(X(l,he)&&!q){l.preventDefault(),h(r=>r>0?r-1:r);return}const xe=g.find(r=>r.id==="commander-vim-right");if(X(l,xe)&&!q){l.preventDefault(),h(r=>r<ee?r+1:r);return}const ge=g.find(r=>r.id==="commander-vim-up");if(X(l,ge)&&!q){l.preventDefault(),h(r=>r>=me?r-me:r);return}const ve=g.find(r=>r.id==="commander-vim-down");if(X(l,ve)&&!q){l.preventDefault(),h(r=>r+me<=ee?r+me:r);return}const je=g.find(r=>r.id==="commander-expand");if(X(l,je)){if(l.preventDefault(),q)w(null);else{const r=Z[J.current];r&&w(r.id)}return}const we=g.find(r=>r.id==="commander-new-agent");if(X(l,we)){l.preventDefault(),u(!0);return}const Ce=g.find(r=>r.id==="commander-next-tab"),ke=g.find(r=>r.id==="commander-prev-tab");if(!T){const r=V.current;if(X(l,Ce)){const Y=I.getState().latestNotificationAgentId;if(Y){if(l.preventDefault(),l.stopPropagation(),!I.getState().agents.get(Y)){I.setLatestNotificationAgentId(null);return}const R=I.getAreaForAgent(Y);R&&r.some(z=>z.id===R.id)?M(R.id):M("unassigned"),w(Y),h(0),y(0),I.setLatestNotificationAgentId(null);return}l.preventDefault(),l.stopPropagation();const oe=(r.findIndex(re=>re.id===G.current)+1)%r.length;M(r[oe].id),h(0);return}if(X(l,ke)){l.preventDefault(),l.stopPropagation();const de=(r.findIndex(oe=>oe.id===G.current)-1+r.length)%r.length;M(r[de].id),h(0);return}}};return document.addEventListener("keydown",n,!0),()=>document.removeEventListener("keydown",n,!0)},[s,a]),s?e.jsx("div",{className:"commander-overlay",onClick:a,children:e.jsxs("div",{className:"commander-view",onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{className:"commander-header",children:[e.jsxs("div",{className:"commander-title-section",children:[e.jsx("h2",{className:"commander-title",children:c("commander.title")}),e.jsx("span",{className:"commander-shortcuts",children:c("commander.shortcuts")})]}),e.jsxs("div",{className:"commander-controls",children:[e.jsx("button",{className:`commander-view-toggle ${b?"active":""}`,onClick:()=>$(!b),title:c(b?"commander.simple":"commander.advanced"),children:b?e.jsxs(e.Fragment,{children:[e.jsx(O,{name:"target",size:12})," ",c("commander.advanced")]}):e.jsxs(e.Fragment,{children:[e.jsx(O,{name:"status-pending",size:12})," ",c("commander.simple")]})}),e.jsx("button",{className:"commander-add-btn",onClick:()=>u(!0),title:c("commander.addAgent"),children:c("commander.addAgent")}),e.jsx("button",{className:"commander-close",onClick:a,children:c("commander.close")})]})]}),e.jsx("div",{className:"commander-tabs",children:o.map(n=>{const l=n.id!=="all"&&n.id!=="unassigned"?p.get(n.id):null,g=l&&l.directories&&l.directories.length>0;return e.jsxs("button",{className:`commander-tab ${d===n.id?"active":""}`,onClick:()=>{M(n.id),h(0)},style:n.color?{borderBottomColor:d===n.id?n.color:"transparent"}:void 0,children:[n.color&&e.jsx("span",{className:"commander-tab-dot",style:{background:n.color}}),e.jsx("span",{children:n.name}),e.jsx("span",{className:"commander-tab-count",children:K.get(n.id)||0}),g&&e.jsx("span",{className:"commander-tab-folder",onClick:m=>{m.stopPropagation(),i(n.id)},title:c("commander.openFileExplorer"),children:e.jsx(O,{name:"folder",size:12})})]},n.id)})}),e.jsxs("div",{className:"commander-filters",children:[e.jsxs("div",{className:"commander-filter-group",children:[e.jsx("span",{className:"commander-filter-label",children:c("commander.filters.status")}),["all","working","idle","error","offline"].map(n=>e.jsx("button",{className:`commander-filter-btn ${x.status===n?"active":""}`,onClick:()=>N(l=>({...l,status:n})),children:n==="all"?c("commander.filters.all"):n==="error"?c("commander.filters.needsAttn"):n.charAt(0).toUpperCase()+n.slice(1)},n))]}),e.jsxs("div",{className:"commander-filter-group",children:[e.jsx("span",{className:"commander-filter-label",children:c("commander.filters.active")}),["all","1h","6h","24h"].map(n=>e.jsx("button",{className:`commander-filter-btn ${x.activity===n?"active":""}`,onClick:()=>N(l=>({...l,activity:n})),children:n==="all"?c("commander.filters.any"):`< ${n}`},n))]}),e.jsxs("div",{className:"commander-filter-group",children:[e.jsx("span",{className:"commander-filter-label",children:c("commander.filters.sort")}),["activity","name","created","context"].map(n=>e.jsx("button",{className:`commander-filter-btn ${x.sort===n?"active":""}`,onClick:()=>N(l=>({...l,sort:n})),children:n==="activity"?c("commander.filters.recent"):n==="context"?c("commander.filters.context"):n.charAt(0).toUpperCase()+n.slice(1)},n))]}),B&&e.jsx("button",{className:"commander-filter-clear",onClick:()=>N(Se),title:c("commander.clearFilters"),children:c("commander.filters.clearFilters",{count:te})})]}),F>1&&e.jsxs("div",{className:"commander-pagination",children:[e.jsxs("button",{className:"commander-page-btn",onClick:()=>y(n=>Math.max(0,n-1)),disabled:A===0,children:[e.jsx(O,{name:"caret-left",size:12})," ",c("commander.prev")]}),e.jsx("span",{className:"commander-page-info",children:c("commander.page",{current:A+1,total:F,count:_.length})}),e.jsxs("button",{className:"commander-page-btn",onClick:()=>y(n=>Math.min(F-1,n+1)),disabled:A===F-1,children:[c("commander.next")," ",e.jsx(O,{name:"caret-right",size:12})]})]}),e.jsx("div",{className:`commander-grid ${k?"has-expanded":""}`,"data-agent-count":k?1:H.length,children:H.length===0?e.jsx("div",{className:"commander-empty",children:c(d==="all"?"commander.noAgentsAll":d==="unassigned"?"commander.noAgentsUnassigned":"commander.noAgentsArea")}):k?(()=>{const n=f.get(k);return n?e.jsx(Pe,{agent:n,history:Q.get(n.id),isExpanded:!0,isFocused:!0,advancedView:b,index:0,onExpand:ne,onCollapse:ae,onFocus:ce,onInputRef:pe,onLoadMore:U,onClearHistory:C},n.id):null})():H.map((n,l)=>e.jsx(Pe,{agent:n,history:Q.get(n.id),isExpanded:!1,isFocused:l===j,advancedView:b,index:l,onExpand:ne,onCollapse:ae,onFocus:ce,onInputRef:pe,onLoadMore:U,onClearHistory:C},n.id))}),v&&e.jsx(ht,{currentArea:L,onClose:()=>u(!1)}),D&&e.jsx(at,{isOpen:!0,areaId:D,onClose:()=>i(null),onChangeArea:n=>i(n)})]})}):null}export{Ct as CommanderView};
|
|
5
|
+
${R}`:R}I.sendCommand(s.id,S),i.current=!1,$(!0),N(!0),C(""),L(!1),B(new Map),z([]),_()},[s.id,U,ce,F,ne,w,_,C,L,B,z]),ge=t.useCallback((S,R)=>{W({url:S,name:R})},[]),ve=t.useCallback((S,R)=>{const H=We(S,s.cwd),ue=H.line?{...R||{},targetLine:H.line}:R;I.setFileViewerPath(H.path,ue,s.cwd)},[s.cwd]),je=t.useCallback((S,R)=>{V({command:S,output:R,isLive:R==="Running..."})},[]),we=t.useCallback(S=>{Q(S)},[]),Ce=t.useCallback(()=>{N(!1),i.current=!0,$(!1)},[]),ke=t.useCallback(()=>W(null),[]),r=t.useCallback(()=>V(null),[]),Y=t.useCallback(()=>Q(null),[]),de=t.useCallback(S=>{S.stopPropagation(),M()},[M]),oe=lt[s.status]||"#888888",re=(a==null?void 0:a.messages)||[];return e.jsxs("div",{className:`agent-panel ${s.status==="working"?"working":""} ${f?"expanded":""} ${p?"focused":""}`,onClick:p?void 0:A,children:[e.jsxs("div",{className:"agent-panel-header",onClick:p?A:void 0,children:[e.jsxs("div",{className:"agent-panel-info",children:[e.jsx("span",{className:"agent-panel-status",style:{background:oe},title:s.status}),e.jsxs("span",{className:"agent-panel-name",children:[(s.isBoss||s.class==="boss")&&e.jsx("span",{className:"agent-panel-boss-crown",children:e.jsx(O,{name:"crown",size:14})}),s.name]}),e.jsx("span",{className:`agent-panel-status-label ${s.status}`,children:s.status}),e.jsx("span",{className:"agent-panel-class",children:s.class}),e.jsx("span",{className:`agent-panel-provider ${s.provider==="codex"?"codex":s.provider==="opencode"?"opencode":s.provider==="grok"?"grok":s.provider==="pi"?"pi":"claude"}`,children:s.provider||"claude"}),e.jsxs("span",{className:"agent-panel-id",title:`ID: ${s.id}`,children:["[",s.id.substring(0,4),"]"]}),s.taskLabel?e.jsxs("div",{className:"agent-panel-task agent-panel-task-label",title:s.taskLabel,children:[e.jsx(O,{name:"task",size:12})," ",s.taskLabel]}):s.currentTask?e.jsxs("div",{className:"agent-panel-task",title:s.currentTask,children:[s.currentTask.substring(0,40),"..."]}):null]}),e.jsxs("div",{className:"agent-panel-context",title:`Context: ${Math.round(l.usedPercent)}% used (${De(l.totalTokens)} / ${De(l.contextWindow)})`,children:[e.jsx("div",{className:"agent-panel-context-bar",style:{background:l.freePercent<20?"#ff4a4a":l.freePercent<50?"#ff9e4a":"#4aff9e",width:`${l.freePercent}%`}}),e.jsxs("span",{className:"agent-panel-context-text",children:[Math.round(l.freePercent),"%"]})]}),e.jsx("div",{className:"agent-panel-actions",children:e.jsx("button",{className:"agent-panel-expand",onClick:de,title:E(f?"commander.collapsePanel":"commander.expandPanel"),children:f?e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"4 14 10 14 10 20"}),e.jsx("polyline",{points:"20 10 14 10 14 4"}),e.jsx("line",{x1:"14",y1:"10",x2:"21",y2:"3"}),e.jsx("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]}):e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("polyline",{points:"9 21 3 21 3 15"}),e.jsx("line",{x1:"21",y1:"3",x2:"14",y2:"10"}),e.jsx("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]})})})]}),e.jsx("div",{className:"agent-panel-content",ref:h,children:a!=null&&a.loading?e.jsx("div",{className:"agent-panel-loading",children:E("common:status.loading")}):e.jsx(e.Fragment,{children:!re.length&&!n.length?e.jsxs("div",{className:"agent-panel-empty",children:[E("commander.noMessages"),!s.sessionId&&e.jsx("div",{style:{fontSize:"10px",color:"#666"},children:E("commander.noSessionId")})]}):e.jsx(Ve,{historyMessages:re,liveOutputs:n,agentId:s.id,viewMode:d?"advanced":"simple",selectedMessageIndex:null,isMessageSelected:q,onImageClick:ge,onFileClick:ve,onBashClick:je,onViewMarkdown:we,scrollContainerRef:h,onScrollTopReached:g,isLoadingMore:v,hasMore:a==null?void 0:a.hasMore,shouldAutoScroll:b,onUserScroll:m,pinToBottom:x,onPinCancel:Ce,isLoadingHistory:a==null?void 0:a.loading})})}),e.jsxs("div",{className:`guake-input-wrapper ${s.status==="working"?"has-stop-btn is-working":""}`,children:[e.jsx(ft,{agentId:s.id,isWorking:s.status==="working",timestamp:j==null?void 0:j.timestamp}),e.jsx(ut,{command:U,onCommandChange:C,useTextarea:K,forceTextarea:o,onForceTextarea:L,onSend:xe,canSend:ce,attachedFiles:F,onAddFile:he,onRemoveFile:se,uploadFile:ae,onAddPastedText:ie,placeholder:E("commander.command",{name:s.name}),compact:!1,inputRef:y})]}),P&&e.jsx(Ge,{url:P.url,name:P.name,onClose:ke}),J&&e.jsx(qe,{state:J,onClose:r}),e.jsx(Je,{agent:s,content:G,onClose:Y})]})}function ht({currentArea:s,onClose:a}){const{t:c}=fe(["terminal","common"]),[f,p]=t.useState(()=>{const u=new Set(Array.from(I.getState().agents.values()).map(D=>D.name));return Ye.find(D=>!u.has(D))||`Agent-${Date.now().toString(36)}`}),[d,M]=t.useState(()=>Me(le.LAST_CWD)),[A,y]=t.useState("scout"),[k,w]=t.useState("claude"),[E,j]=t.useState(!1),h=()=>{if(!f.trim()||!d.trim())return;j(!0),Ie(le.LAST_CWD,d);let u;s&&(u={x:s.center.x,z:s.center.z}),I.spawnAgent(f.trim(),A,d.trim(),u,void 0,void 0,void 0,void 0,k),setTimeout(()=>{a()},500)},v=u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),h()),u.key==="Escape"&&a()};return e.jsx("div",{className:"commander-spawn-overlay",onClick:a,children:e.jsxs("div",{className:"commander-spawn-form",onClick:u=>u.stopPropagation(),children:[e.jsxs("div",{className:"commander-spawn-header",children:[e.jsx("h3",{children:c("spawn.addNewAgent")}),s&&e.jsxs("span",{className:"commander-spawn-area",children:[e.jsx("span",{className:"commander-spawn-area-dot",style:{background:s.color}}),s.name]})]}),e.jsxs("div",{className:"commander-spawn-body",children:[e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.name")}),e.jsx("input",{type:"text",value:f,onChange:u=>p(u.target.value),onKeyDown:v,autoFocus:!0})]}),e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.workingDirectory")}),e.jsx(Xe,{value:d,onChange:M,onSubmit:h,placeholder:c("spawn.workingDirPlaceholder"),directoriesOnly:!0})]}),e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.class")}),e.jsx("div",{className:"commander-spawn-classes",children:Qe.map(u=>e.jsxs("button",{className:`commander-spawn-class ${A===u.id?"selected":""}`,onClick:()=>y(u.id),children:[e.jsx(Ze,{classId:u.id,size:18,className:"commander-spawn-class-icon"}),e.jsx("span",{children:u.name})]},u.id))})]}),e.jsxs("div",{className:"commander-spawn-field",children:[e.jsx("label",{children:c("common:labels.runtime")}),e.jsxs("div",{className:"commander-spawn-classes",children:[e.jsxs("button",{className:`commander-spawn-class ${k==="claude"?"selected":""}`,onClick:()=>w("claude"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"brain",size:14})}),e.jsx("span",{children:"Claude"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="codex"?"selected":""}`,onClick:()=>w("codex"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"gear",size:14})}),e.jsx("span",{children:"Codex"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="opencode"?"selected":""}`,onClick:()=>w("opencode"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"status-pending",size:12,weight:"fill",color:"#4ade80"})}),e.jsx("span",{children:"OpenCode"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="grok"?"selected":""}`,onClick:()=>w("grok"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"status-pending",size:12,weight:"fill",color:"#6366f1"})}),e.jsx("span",{children:"Grok"})]}),e.jsxs("button",{className:`commander-spawn-class ${k==="pi"?"selected":""}`,onClick:()=>w("pi"),children:[e.jsx("span",{className:"commander-spawn-class-icon",children:e.jsx(O,{name:"status-pending",size:12,weight:"fill",color:"#a855f7"})}),e.jsx("span",{children:"Pi"})]})]})]})]}),e.jsxs("div",{className:"commander-spawn-footer",children:[e.jsx("button",{className:"commander-spawn-cancel",onClick:a,children:c("common:buttons.cancel")}),e.jsx("button",{className:"commander-spawn-submit",onClick:h,disabled:!f.trim()||!d.trim()||E,children:c(E?"common:buttons.deploying":"common:buttons.deploy")})]})]})})}const Pe=t.memo(function({agent:a,history:c,isExpanded:f,isFocused:p,advancedView:d,index:M,onExpand:A,onCollapse:y,onFocus:k,onInputRef:w,onLoadMore:E,onClearHistory:j}){const h=nt(a.id),v=t.useCallback(()=>{f?y():A(a.id)},[a.id,f,A,y]),u=t.useCallback(()=>{k(p?-1:M)},[M,p,k]),D=t.useCallback($=>{w(a.id,$)},[a.id,w]),i=t.useCallback(()=>{E(a.id)},[a.id,E]),b=t.useCallback(()=>{j(a.id)},[a.id,j]);return e.jsx(pt,{agent:a,history:c,outputs:h,isExpanded:f,isFocused:p,advancedView:d,onExpand:v,onFocus:u,inputRef:D,onLoadMore:i,onClearHistory:b})});function Ct({isOpen:s,onClose:a}){const{t:c}=fe(["terminal","common"]),f=et(),p=tt(),[d,M]=t.useState(()=>Me(le.COMMANDER_TAB,"all")),[A,y]=t.useState(0),[k,w]=t.useState(null),E=t.useRef(null),[j,h]=t.useState(0),[v,u]=t.useState(!1),[D,i]=t.useState(null),[b,$]=t.useState(!1),[x,N]=t.useState(()=>{try{const n=Me(le.COMMANDER_FILTERS,"");if(n)return{...Se,...JSON.parse(n)}}catch{}return Se}),P=t.useRef(new Map),W=t.useRef([]),J=t.useRef(0),V=t.useRef([]),G=t.useRef(d),{histories:Q,loadMoreHistory:U,clearAgentHistory:C}=dt({isOpen:s,agents:f});t.useEffect(()=>{s||(w(null),h(0),u(!1))},[s]);const o=t.useMemo(()=>{const n=Array.from(p.values()).sort((g,m)=>g.name.localeCompare(m.name)),l=[{id:"all",name:c("common:labels.all")}];for(const g of n)l.push({id:g.id,name:g.name,color:g.color});return l.push({id:"unassigned",name:c("commander.unassigned")}),l},[p]),L=t.useMemo(()=>d==="all"||d==="unassigned"?null:p.get(d)||null,[d,p]),K=t.useMemo(()=>{const n=new Map;n.set("all",f.size);let l=0;for(const g of f.values()){const m=I.getAreaForAgent(g.id);m?n.set(m.id,(n.get(m.id)||0)+1):l++}return n.set("unassigned",l),n},[f]),B=x.status!=="all"||x.activity!=="all"||x.sort!=="activity",te=(x.status!=="all"?1:0)+(x.activity!=="all"?1:0)+(x.sort!=="activity"?1:0),_=t.useMemo(()=>{const n=m=>m.isBoss===!0||m.class==="boss",l=Date.now();let g=Array.from(f.values());if(d==="unassigned"?g=g.filter(m=>!I.getAreaForAgent(m.id)):d!=="all"&&(g=g.filter(m=>{const T=I.getAreaForAgent(m.id);return(T==null?void 0:T.id)===d})),x.status!=="all"&&(g=g.filter(m=>{switch(x.status){case"working":return m.status==="working";case"idle":return m.status==="idle";case"error":return m.status==="error"||m.status==="waiting"||m.status==="waiting_permission";case"offline":return m.status==="offline"||m.status==="orphaned";default:return!0}})),x.activity!=="all"){const m=ct[x.activity];g=g.filter(T=>l-(T.lastActivity||0)<m)}return g.sort((m,T)=>{var Z,ee;if(n(m)&&!n(T))return-1;if(!n(m)&&n(T))return 1;switch(x.sort){case"activity":return(T.lastActivity||0)-(m.lastActivity||0);case"name":return m.name.localeCompare(T.name);case"created":return(m.createdAt||0)-(T.createdAt||0);case"context":{const q=((Z=m.contextStats)==null?void 0:Z.usedPercent)??(m.contextUsed||0)/(m.contextLimit||2e5)*100;return(((ee=T.contextStats)==null?void 0:ee.usedPercent)??(T.contextUsed||0)/(T.contextLimit||2e5)*100)-q}default:return(T.lastActivity||0)-(m.lastActivity||0)}}),g},[f,d,x]),F=Math.ceil(_.length/Ae),z=t.useMemo(()=>_.slice(A*Ae,(A+1)*Ae),[_,A]);W.current=z,E.current=k,J.current=j,V.current=o,G.current=d,Te("commander-expanded",k!==null,()=>w(null));const se=st();t.useEffect(()=>{s&&se&&(w(se),I.clearCommanderExpandRequest())},[s,se]);const ae=t.useCallback(()=>w(null),[]),ne=t.useCallback(n=>w(n),[]),ce=t.useCallback(n=>h(n),[]),pe=t.useCallback((n,l)=>{l?P.current.set(n,l):P.current.delete(n)},[]);return t.useEffect(()=>{y(0),Ie(le.COMMANDER_TAB,d)},[d]),t.useEffect(()=>{Ie(le.COMMANDER_FILTERS,JSON.stringify(x)),y(0)},[x]),t.useEffect(()=>{var l;if(!s||window.matchMedia("(pointer: coarse)").matches)return;const n=k||((l=W.current[j])==null?void 0:l.id);if(n){const g=P.current.get(n);g&&document.activeElement!==g&&setTimeout(()=>g.focus(),50)}},[s,j,k]),t.useEffect(()=>{if(!s)return;const n=l=>{const g=I.getShortcuts(),m=l.target,T=m.tagName==="INPUT"||m.tagName==="TEXTAREA",Z=W.current,ee=Z.length-1,q=E.current,ie=g.find(r=>r.id==="commander-close");if(X(l,ie)){const{fileViewerPath:r,contextModalAgentId:Y}=I.getState();if(r||Y)return;l.preventDefault(),l.stopImmediatePropagation(),q?w(null):a();return}const he=g.find(r=>r.id==="commander-vim-left");if(X(l,he)&&!q){l.preventDefault(),h(r=>r>0?r-1:r);return}const xe=g.find(r=>r.id==="commander-vim-right");if(X(l,xe)&&!q){l.preventDefault(),h(r=>r<ee?r+1:r);return}const ge=g.find(r=>r.id==="commander-vim-up");if(X(l,ge)&&!q){l.preventDefault(),h(r=>r>=me?r-me:r);return}const ve=g.find(r=>r.id==="commander-vim-down");if(X(l,ve)&&!q){l.preventDefault(),h(r=>r+me<=ee?r+me:r);return}const je=g.find(r=>r.id==="commander-expand");if(X(l,je)){if(l.preventDefault(),q)w(null);else{const r=Z[J.current];r&&w(r.id)}return}const we=g.find(r=>r.id==="commander-new-agent");if(X(l,we)){l.preventDefault(),u(!0);return}const Ce=g.find(r=>r.id==="commander-next-tab"),ke=g.find(r=>r.id==="commander-prev-tab");if(!T){const r=V.current;if(X(l,Ce)){const Y=I.getState().latestNotificationAgentId;if(Y){if(l.preventDefault(),l.stopPropagation(),!I.getState().agents.get(Y)){I.setLatestNotificationAgentId(null);return}const R=I.getAreaForAgent(Y);R&&r.some(H=>H.id===R.id)?M(R.id):M("unassigned"),w(Y),h(0),y(0),I.setLatestNotificationAgentId(null);return}l.preventDefault(),l.stopPropagation();const oe=(r.findIndex(re=>re.id===G.current)+1)%r.length;M(r[oe].id),h(0);return}if(X(l,ke)){l.preventDefault(),l.stopPropagation();const de=(r.findIndex(oe=>oe.id===G.current)-1+r.length)%r.length;M(r[de].id),h(0);return}}};return document.addEventListener("keydown",n,!0),()=>document.removeEventListener("keydown",n,!0)},[s,a]),s?e.jsx("div",{className:"commander-overlay",onClick:a,children:e.jsxs("div",{className:"commander-view",onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{className:"commander-header",children:[e.jsxs("div",{className:"commander-title-section",children:[e.jsx("h2",{className:"commander-title",children:c("commander.title")}),e.jsx("span",{className:"commander-shortcuts",children:c("commander.shortcuts")})]}),e.jsxs("div",{className:"commander-controls",children:[e.jsx("button",{className:`commander-view-toggle ${b?"active":""}`,onClick:()=>$(!b),title:c(b?"commander.simple":"commander.advanced"),children:b?e.jsxs(e.Fragment,{children:[e.jsx(O,{name:"target",size:12})," ",c("commander.advanced")]}):e.jsxs(e.Fragment,{children:[e.jsx(O,{name:"status-pending",size:12})," ",c("commander.simple")]})}),e.jsx("button",{className:"commander-add-btn",onClick:()=>u(!0),title:c("commander.addAgent"),children:c("commander.addAgent")}),e.jsx("button",{className:"commander-close",onClick:a,children:c("commander.close")})]})]}),e.jsx("div",{className:"commander-tabs",children:o.map(n=>{const l=n.id!=="all"&&n.id!=="unassigned"?p.get(n.id):null,g=l&&l.directories&&l.directories.length>0;return e.jsxs("button",{className:`commander-tab ${d===n.id?"active":""}`,onClick:()=>{M(n.id),h(0)},style:n.color?{borderBottomColor:d===n.id?n.color:"transparent"}:void 0,children:[n.color&&e.jsx("span",{className:"commander-tab-dot",style:{background:n.color}}),e.jsx("span",{children:n.name}),e.jsx("span",{className:"commander-tab-count",children:K.get(n.id)||0}),g&&e.jsx("span",{className:"commander-tab-folder",onClick:m=>{m.stopPropagation(),i(n.id)},title:c("commander.openFileExplorer"),children:e.jsx(O,{name:"folder",size:12})})]},n.id)})}),e.jsxs("div",{className:"commander-filters",children:[e.jsxs("div",{className:"commander-filter-group",children:[e.jsx("span",{className:"commander-filter-label",children:c("commander.filters.status")}),["all","working","idle","error","offline"].map(n=>e.jsx("button",{className:`commander-filter-btn ${x.status===n?"active":""}`,onClick:()=>N(l=>({...l,status:n})),children:n==="all"?c("commander.filters.all"):n==="error"?c("commander.filters.needsAttn"):n.charAt(0).toUpperCase()+n.slice(1)},n))]}),e.jsxs("div",{className:"commander-filter-group",children:[e.jsx("span",{className:"commander-filter-label",children:c("commander.filters.active")}),["all","1h","6h","24h"].map(n=>e.jsx("button",{className:`commander-filter-btn ${x.activity===n?"active":""}`,onClick:()=>N(l=>({...l,activity:n})),children:n==="all"?c("commander.filters.any"):`< ${n}`},n))]}),e.jsxs("div",{className:"commander-filter-group",children:[e.jsx("span",{className:"commander-filter-label",children:c("commander.filters.sort")}),["activity","name","created","context"].map(n=>e.jsx("button",{className:`commander-filter-btn ${x.sort===n?"active":""}`,onClick:()=>N(l=>({...l,sort:n})),children:n==="activity"?c("commander.filters.recent"):n==="context"?c("commander.filters.context"):n.charAt(0).toUpperCase()+n.slice(1)},n))]}),B&&e.jsx("button",{className:"commander-filter-clear",onClick:()=>N(Se),title:c("commander.clearFilters"),children:c("commander.filters.clearFilters",{count:te})})]}),F>1&&e.jsxs("div",{className:"commander-pagination",children:[e.jsxs("button",{className:"commander-page-btn",onClick:()=>y(n=>Math.max(0,n-1)),disabled:A===0,children:[e.jsx(O,{name:"caret-left",size:12})," ",c("commander.prev")]}),e.jsx("span",{className:"commander-page-info",children:c("commander.page",{current:A+1,total:F,count:_.length})}),e.jsxs("button",{className:"commander-page-btn",onClick:()=>y(n=>Math.min(F-1,n+1)),disabled:A===F-1,children:[c("commander.next")," ",e.jsx(O,{name:"caret-right",size:12})]})]}),e.jsx("div",{className:`commander-grid ${k?"has-expanded":""}`,"data-agent-count":k?1:z.length,children:z.length===0?e.jsx("div",{className:"commander-empty",children:c(d==="all"?"commander.noAgentsAll":d==="unassigned"?"commander.noAgentsUnassigned":"commander.noAgentsArea")}):k?(()=>{const n=f.get(k);return n?e.jsx(Pe,{agent:n,history:Q.get(n.id),isExpanded:!0,isFocused:!0,advancedView:b,index:0,onExpand:ne,onCollapse:ae,onFocus:ce,onInputRef:pe,onLoadMore:U,onClearHistory:C},n.id):null})():z.map((n,l)=>e.jsx(Pe,{agent:n,history:Q.get(n.id),isExpanded:!1,isFocused:l===j,advancedView:b,index:l,onExpand:ne,onCollapse:ae,onFocus:ce,onInputRef:pe,onLoadMore:U,onClearHistory:C},n.id))}),v&&e.jsx(ht,{currentArea:L,onClose:()=>u(!1)}),D&&e.jsx(at,{isOpen:!0,areaId:D,onClose:()=>i(null),onChangeArea:n=>i(n)})]})}):null}export{Ct as CommanderView};
|
|
@@ -1 +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:64px;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-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-label{color:var(--text-muted);margin-right:2px}.flat-terminal-wrapper__context-free{color:var(--text-muted);font-size:10px}.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-icon{font-size:12px;line-height:1}.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-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
|
+
: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-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-label{color:var(--text-muted);margin-right:2px}.flat-terminal-wrapper__context-free{color:var(--text-muted);font-size:10px}.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-icon{font-size:12px;line-height:1}.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-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)}}
|
|
@@ -0,0 +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-m3NNcAo4.js";import{bZ as tr,b_ as sr,b$ as rr,c0 as nr,c1 as ir}from"./main-m3NNcAo4.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};
|