@runfusion/fusion 0.76.0-beta.3 → 0.77.0-beta.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/dist/bin.js +13802 -9587
- package/dist/child-process-worker.js +6472 -4028
- package/dist/client/.vite/manifest.json +280 -269
- package/dist/client/assets/AgentDetailView-0G9qFd4j.js +13 -0
- package/dist/client/assets/{AgentDetailView-Cc3ATg8a.css → AgentDetailView-jzgy1BAS.css} +1 -1
- package/dist/client/assets/{AgentPermissionPolicyEditor--u9jyUf2.js → AgentPermissionPolicyEditor-BM68g7wo.js} +1 -1
- package/dist/client/assets/AgentsView-DkOUZWw4.js +24 -0
- package/dist/client/assets/ChatView-BPSm2JIH.js +13 -0
- package/dist/client/assets/{CommandCenter-CSRYoveB.js → CommandCenter-DxRSFWNc.js} +26 -26
- package/dist/client/assets/CommandCenter-ilm-DbtI.css +1 -0
- package/dist/client/assets/{DevServerView-B9So_oYx.js → DevServerView-DO-bqJFE.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-BhyDL_2m.js → DirectoryPicker-Cp2gddTE.js} +1 -1
- package/dist/client/assets/DocumentsView-D0E-3G96.js +1 -0
- package/dist/client/assets/EvalsView-BoFVq5hw.js +1 -0
- package/dist/client/assets/ExperimentalAgentOnboardingModal-CS1Sdogm.js +1 -0
- package/dist/client/assets/{GoalsView-B6X5_0Ve.js → GoalsView-sybf7JY4.js} +1 -1
- package/dist/client/assets/InsightsView-nHa7aShn.js +11 -0
- package/dist/client/assets/{MemoryView-DN_3IFmA.css → MemoryView-CdpQqPJJ.css} +1 -1
- package/dist/client/assets/MemoryView-D0IG44za.js +3 -0
- package/dist/client/assets/{PiExtensionsManager-B8At6fO8.js → PiExtensionsManager-CU76weJe.js} +2 -2
- package/dist/client/assets/PluginManager-DyT8XbcG.js +1 -0
- package/dist/client/assets/{PullRequestView-B1hZFrWo.js → PullRequestView-CnxWUSen.js} +2 -2
- package/dist/client/assets/{ReportModal-C46V_zEa.js → ReportModal-CMrmMQjD.js} +5 -5
- package/dist/client/assets/{ResearchView-D8G85BYN.js → ResearchView-BTytQSgy.js} +2 -2
- package/dist/client/assets/{SecretsView-CTri9LRK.js → SecretsView-BuSH5J87.js} +1 -1
- package/dist/client/assets/SessionTerminal-D04kYRrT.js +2 -0
- package/dist/client/assets/SettingsModal-C0FY8MPW.css +1 -0
- package/dist/client/assets/{SettingsModal-rUQcSTJp.js → SettingsModal-Dm-ngbRr.js} +1 -1
- package/dist/client/assets/{SettingsModal-DmfMotcd.css → SettingsModal-Ds0Yj47X.css} +1 -1
- package/dist/client/assets/SettingsModal-xSLhH7Tr.js +21 -0
- package/dist/client/assets/{SettingsTextareaRow-BirlBcem.js → SettingsTextareaRow-CHPgocEp.js} +1 -1
- package/dist/client/assets/{SetupWizardModal-xnCBM9EL.js → SetupWizardModal-y88aXNIQ.js} +2 -2
- package/dist/client/assets/{SkillsView-O5U0ep50.js → SkillsView-CYyQW1Hv.js} +1 -1
- package/dist/client/assets/{WorkflowNodeEditor-BX4d2qqF.js → WorkflowNodeEditor-hYeoz1X8.js} +3 -3
- package/dist/client/assets/{agent-import-generation-DnqVkPkz.js → agent-import-generation-CjiYXzCr.js} +1 -1
- package/dist/client/assets/agentsOrgChartLayout-C0UP_X3z.js +1 -0
- package/dist/client/assets/app-BgpuMvTU.js +13 -0
- package/dist/client/assets/app-BlexHhbW.js +13 -0
- package/dist/client/assets/app-BsuUOR0P.js +13 -0
- package/dist/client/assets/app-DQVOujmO.js +13 -0
- package/dist/client/assets/app-DjyTRx1N.js +5 -0
- package/dist/client/assets/app-Dniggype.js +13 -0
- package/dist/client/assets/app-EV-lyZ0T.js +5 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-gi467xY0.js → architectureDiagram-3BPJPVTR-Dd6GPcqM.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-B_gpcYiR.js → blockDiagram-GPEHLZMM-CC6pLxlz.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-DeylEYsQ.js → c4Diagram-AAUBKEIU-DxMP_l6y.js} +1 -1
- package/dist/client/assets/channel-DlCEMoEf.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-BL2WY0HN.js → chunk-2J33WTMH-BKYToL43.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-BkLExGMe.js → chunk-4BX2VUAB-Bg6rjQb3.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CSTvCF5T.js → chunk-55IACEB6-CPUwbbGa.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-9J8pKk4x.js → chunk-727SXJPM-DScQBCvv.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-DXC1vPWr.js → chunk-AQP2D5EJ-DbX7uaXK.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CFRUb-zD.js → chunk-FMBD7UC4-DvYKea1c.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-B87HFYS8.js → chunk-ND2GUHAM-CH-Tvw7w.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CTjHiGbd.js → chunk-QZHKN3VN-CbyEvOoM.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-Bc92O8Ks.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bc92O8Ks.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-D3Edq3L9.js → cose-bilkent-S5V4N54A-BPB5fV3A.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-CwwbeQfN.js → dagre-BM42HDAG-CilYJ3rR.js} +1 -1
- package/dist/client/assets/{dashboard-view-QxQwJFLz.js → dashboard-view-BnGe8cWo.js} +1 -1
- package/dist/client/assets/{dashboard-view-BLAoW3D4.js → dashboard-view-DnVf3tmI.js} +1 -1
- package/dist/client/assets/{dashboard-view-DAlJxqiJ.js → dashboard-view-DoLU6FxZ.js} +1 -1
- package/dist/client/assets/{dashboard-view-aPzfv99T.js → dashboard-view-dChSM_So.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-koJWWXE4.js → diagram-2AECGRRQ-m9u1Qhyx.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-Yob5cOKT.js → diagram-5GNKFQAL-DVr7Kf0N.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-DelvFSkK.js → diagram-KO2AKTUF-D7sgJDFx.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-CMput2h2.js → diagram-LMA3HP47-DNKNDS6r.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-04VXDl79.js → diagram-OG6HWLK6-1Bff4FWn.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-C9iP8Uyp.js → erDiagram-TEJ5UH35-DGua1UHN.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-DENQvu_t.js → flowDiagram-I6XJVG4X-UDfDtwsE.js} +1 -1
- package/dist/client/assets/{folder-open-D-554oji.js → folder-open-CteOypVk.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-BqOttZAT.js → ganttDiagram-6RSMTGT7-COdmD328.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CDcydi-5.js → gitGraphDiagram-PVQCEYII-SUSls7Kw.js} +1 -1
- package/dist/client/assets/index-0ovTXt3t.css +1 -0
- package/dist/client/assets/index-DpCHwyiD.js +2818 -0
- package/dist/client/assets/{infoDiagram-5YYISTIA-B5LQQnxt.js → infoDiagram-5YYISTIA-e_DloXj7.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DpFEt7D2.js → ishikawaDiagram-YF4QCWOH-DVWqihXg.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-MELtgu22.js → journeyDiagram-JHISSGLW-BcPY-XP0.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-h33PLATd.js → kanban-definition-UN3LZRKU-BCFG2Jle.js} +1 -1
- package/dist/client/assets/{mermaid.core-Dk2mUPOq.js → mermaid.core-5yPje9Bi.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-B_T4O2-B.js → mindmap-definition-RKZ34NQL-DDApeT3K.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-B1YIFkRl.js → pieDiagram-4H26LBE5-N61_jyeP.js} +1 -1
- package/dist/client/assets/{puzzle-hvecxlpJ.js → puzzle-BkaCP30D.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BoGQR_hO.js → quadrantDiagram-W4KKPZXB-C5qHiApF.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-BSDmUBIx.js → requirementDiagram-4Y6WPE33-C71okgzt.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Dz_GqOa5.js → sankeyDiagram-5OEKKPKP-B2iKyLjB.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-B6twjYUH.js → sequenceDiagram-3UESZ5HK-DfdoYKKk.js} +1 -1
- package/dist/client/assets/{shield-alert-BX4WRJOv.js → shield-alert-BNSeDB8l.js} +1 -1
- package/dist/client/assets/standing-instructions-template-pZtzo1lK.js +20 -0
- package/dist/client/assets/standing-instructions-template-w7Ouw_37.css +1 -0
- package/dist/client/assets/{stateDiagram-AJRCARHV-DuwqWLx-.js → stateDiagram-AJRCARHV-lS-sUi12.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-BHNVJYJU-Bu8Sk187.js → stateDiagram-v2-BHNVJYJU-DXJNDrV9.js} +1 -1
- package/dist/client/assets/{timeline-definition-PNZ67QCA-BS6VnqSI.js → timeline-definition-PNZ67QCA-CCwvX81K.js} +1 -1
- package/dist/client/assets/{upload-CaDoyaMW.js → upload-CDovVbu2.js} +1 -1
- package/dist/client/assets/useDiscoveredSkillsCache-BYqP-afh.js +1 -0
- package/dist/client/assets/{users-C5uCLwVM.js → users-CTqECGLo.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-CUbzqT5Y.js → vennDiagram-CIIHVFJN-DaiR5nv9.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-Mv-NotFS.js → wardley-L42UT6IY-hA5IHyPW.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-DuYpvLZX.js → wardleyDiagram-YWT4CUSO-CILUNESc.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-24_7QXdw.js → xychartDiagram-2RQKCTM6-72eNMmjz.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +10671 -6904
- package/dist/migrations/0059_fn_9037_tasks_source_agent_index.sql +3 -0
- package/dist/migrations/0060_fn_9059_workspace_coordination_leases.sql +10 -0
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/plugin-sdk/index.d.ts +190 -9
- package/dist/plugin-sdk/index.js +74 -28
- package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-claude-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-claude-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +1096 -73
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-grok-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-grok-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +302 -71
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-linear-import/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-linear-import/package.json +1 -1
- package/dist/plugins/fusion-plugin-omp-runtime/bundled.js +83 -29
- package/dist/plugins/fusion-plugin-omp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-quality/bundled.js +176 -46
- package/dist/plugins/fusion-plugin-quality/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-roadmap/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-todos/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-todos/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/bundled.js +74 -28
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +1 -1
- package/skill/fusion/references/extension-tools.md +2 -0
- package/dist/client/assets/AgentDetailView-T767kKTg.js +0 -13
- package/dist/client/assets/AgentsView-6Ifu7qDr.js +0 -24
- package/dist/client/assets/ChatView-BV3lixQi.js +0 -13
- package/dist/client/assets/CommandCenter-CE4rYjHn.css +0 -1
- package/dist/client/assets/DocumentsView-pbERA7O-.js +0 -1
- package/dist/client/assets/EvalsView-DJQ4ltCg.js +0 -1
- package/dist/client/assets/ExperimentalAgentOnboardingModal-BwJuzkzB.js +0 -1
- package/dist/client/assets/InsightsView-CJgI0J7S.js +0 -11
- package/dist/client/assets/MemoryView-BHq1AHPu.js +0 -3
- package/dist/client/assets/PluginManager-k7hV7_9e.js +0 -1
- package/dist/client/assets/SessionTerminal-BRf6r4Vp.js +0 -2
- package/dist/client/assets/SettingsModal-B30rPfYC.css +0 -1
- package/dist/client/assets/SettingsModal-D0RBeZik.js +0 -21
- package/dist/client/assets/agentsOrgChartLayout-CKuzbhFf.js +0 -1
- package/dist/client/assets/app-B2FwULu2.js +0 -5
- package/dist/client/assets/app-B6nJaqAl.js +0 -13
- package/dist/client/assets/app-CGXZeIRc.js +0 -13
- package/dist/client/assets/app-CGtkeBF5.js +0 -13
- package/dist/client/assets/app-CNzN1Plu.js +0 -13
- package/dist/client/assets/app-DLs-f5yM.js +0 -13
- package/dist/client/assets/app-DsvtcRUG.js +0 -5
- package/dist/client/assets/channel-BoE8DeM4.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-qnbLX_9_.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-qnbLX_9_.js +0 -1
- package/dist/client/assets/index-CXTd3LAB.css +0 -1
- package/dist/client/assets/index-CtYRoouR.js +0 -2818
- package/dist/client/assets/standing-instructions-template-BJY317CC.js +0 -20
- package/dist/client/assets/standing-instructions-template-Ddi_4TIk.css +0 -1
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import{r as a,j as t}from"./vendor-react-SZ_qB27O.js";import{c as ci,ar as Dt,ap as wt,aq as Ca,cK as Ds,dt as Qi,du as Yi,dv as ua,av as X,dw as Ji,dx as It,dy as Tt,dz as Sa,dA as Zi,dB as eo,dC as to,dD as no,dE as ao,dF as so,bh as io,c$ as Ma,dG as ke,aZ as oo,cw as li,c3 as yn,dH as ro,am as kn,dI as co,dJ as lo,bS as uo,F as mo,aJ as ho,b3 as wn,Y as fo,da as go,dK as po,dL as vo,f as bo,aX as wo,dM as xo,dN as di,dO as ui,dP as yo,dQ as ko,K as Co,dR as So,dS as Mo,dT as Is,dU as No,dV as Ro,dW as Ls,y as jo,dX as Ao,q as To,u as Eo,aH as Do,dY as ma,C as hn,dZ as fn,d_ as Ps,cX as Fs,v as ha,P as pt,V as Io,bU as $s,dd as _s,dc as Lo,X as zs,aI as Po,d$ as Fo,x as fa,e0 as ga,e1 as Bs,e2 as pa,e3 as Os,e4 as Hs,e5 as Us,e6 as $o,e7 as _o,cW as Ks}from"./index-CtYRoouR.js";import{u as _e}from"./vendor-i18n-Duky4gdQ.js";import{SessionTerminal as Vs}from"./SessionTerminal-BRf6r4Vp.js";import"./vendor-codemirror-CcrtqoCy.js";import"./vendor-reactflow-BlIeoTu4.js";import"./vendor-xterm-BNq00GSj.js";import"./shield-alert-BX4WRJOv.js";/**
|
|
2
|
-
* @license lucide-react v1.7.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const zo=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],mi=ci("hash",zo);/**
|
|
7
|
-
* @license lucide-react v1.7.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const Bo=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],Oo=ci("tag",Bo);function gn(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function Ho(){try{typeof import.meta<"u"}catch{}try{if(typeof localStorage<"u")return localStorage.getItem("kb-debug-room-open")==="1"}catch{}return!1}function va(i,o){const m=Ho(),g=o?.warm===!0,u=gn(),h=new Map;let k=!1,C=!1;return{mark(j){k||C||!m||h.has(j)||h.set(j,gn())},complete:j=>{if(!m||k||C){k=!0;return}k=!0,h.set("complete",gn());const I=Array.from(h.entries()).sort((E,N)=>E[1]-N[1]);let M=u;const s={};for(const[E,N]of I)s[E]=Math.max(0,N-M),M=N;const v=Math.max(0,gn()-u);try{console.debug("[room-open]",{roomId:i,warm:g,totalMs:v,phases:s,...j??{}})}catch{}},cancel(){C=!0,k=!0}}}const $e="fusion:chat-active-room";class hi extends Error{roomId;constructor(o,m){super(o),this.name="RoomMessageDeliveredButReplyFailedError",this.roomId=m}}function Na(i){return[...i].sort((o,m)=>new Date(m.updatedAt).getTime()-new Date(o.updatedAt).getTime())}function Ge(i,o){const m=i.findIndex(u=>u.id===o.id);if(m===-1)return Na([o,...i]);const g=[...i];return g[m]=o,Na(g)}function Ie(i){try{return JSON.parse(i.data)}catch{return null}}function ba(i){return i.slice().reverse()}function Uo(i,o,m){return{id:`temp-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,roomId:i,role:"user",content:o,thinkingOutput:null,metadata:null,senderAgentId:null,mentions:[],...m?.length?{attachments:m}:{},createdAt:new Date().toISOString()}}function Ws(i,o,m){if(i.some(u=>u.id===o.id))return i;const g=m?i.findIndex(u=>u.id===m):-1;if(g>=0){const u=[...i];return u[g]=o,u}if(o.role==="user"){const u=i.findIndex(h=>h.role==="user"&&h.id.startsWith("temp-")&&h.content.trim()===o.content.trim());if(u>=0){const h=[...i];return h[u]=o,h}}return[...i,o]}function Ko(i,o){const{t:m}=_e("app"),g=`${Dt.CHAT_ROOMS}:${i??"global"}`,u=`${Dt.ACTIVE_CHAT_ROOM_ID}:${i??"global"}`,h=a.useCallback(c=>`${Dt.CHAT_ROOM_MESSAGES_PREFIX}${i??"global"}:${c}`,[i]),k=a.useCallback(c=>`${Dt.CHAT_ROOM_MEMBERS_PREFIX}${i??"global"}:${c}`,[i]),[C,b]=a.useState(()=>{const c=wt(g,{maxAgeMs:Ca});return Array.isArray(c)?c:[]}),[j,I]=a.useState(()=>C.length===0),[M,s]=a.useState(null),[v,E]=a.useState(()=>{const c=wt(u,{maxAgeMs:Ds});return c?C.find(p=>p.id===c)??null:null}),[N,S]=a.useState([]),[l,L]=a.useState([]),[F,U]=a.useState(!1),B=a.useRef(C),T=a.useRef(v),Q=a.useRef(0),se=a.useRef(i);B.current=C,T.current=v,se.current!==i&&(se.current=i,Q.current+=1);const Y=a.useCallback(async c=>{if(!c){S([]),L([]),U(!1);return}const p=va(c.id,{warm:!1});p.mark("select");const y=wt(h(c.id),{maxAgeMs:Qi}),f=wt(k(c.id),{maxAgeMs:Ca}),A=Array.isArray(y)&&y.length>0,_=Array.isArray(f)&&f.length>0;A||_?(p.mark("cache-hit"),A&&(L(y),p.mark("hydrate")),_&&S(f),U(!1)):(L([]),U(!0));try{const[J,ve]=await Promise.all([Yi(c.id,i),ua(c.id,{limit:100,order:"desc"},i)]);p.mark("members-fetch"),p.mark("messages-fetch"),X(k(c.id),J.members,{maxBytes:5e5});const ee=ba(ve.messages);X(h(c.id),ee,{maxBytes:5e5}),T.current?.id===c.id&&(S(J.members),L(ee),p.mark("hydrate"))}catch{!A&&!_&&(S([]),L([]))}finally{U(!1),p.complete({warm:A,membersCached:_})}},[k,h,i]),D=a.useCallback(async()=>{B.current.length===0&&I(!0);try{const c=await Ji({},i),p=Na(c.rooms);b(p),X(g,p,{maxBytes:5e5}),s(null);const y=wt(u,{maxAgeMs:Ds})??It($e,i);if(y){const f=p.find(A=>A.id===y)??null;f?(E(f),Y(f)):(Tt($e,i),X(u,"",{maxBytes:5e5}))}}catch(c){const p=c instanceof Error?c.message:m("chatRooms.error.failedToLoad","Failed to load chat rooms");s(p),o?.(p,"error")}finally{I(!1)}},[u,o,Y,i,g]),O=a.useCallback(c=>{if(!c){T.current=null,E(null),Tt($e,i),X(u,"",{maxBytes:5e5}),Y(null);return}const p=B.current.find(y=>y.id===c)??null;T.current=p,E(p),p&&(Sa($e,p.id,i),X(u,p.id,{maxBytes:5e5}),Y(p))},[u,Y,i]),R=a.useCallback(async c=>{const y=(await Zi({name:c.name,memberAgentIds:c.memberAgentIds},i)).room;return b(f=>Ge(f,y)),T.current=y,E(y),Sa($e,y.id,i),X(u,y.id,{maxBytes:5e5}),await Y(y),y},[u,Y,i]),$=a.useCallback(async(c,p)=>{const f=(await eo(c,p,i)).room;return b(A=>Ge(A,f)),T.current?.id===f.id&&(T.current=f,E(f)),f},[i]),ce=a.useCallback(async c=>{await to(c,i),b(p=>p.filter(y=>y.id!==c)),X(h(c),[],{maxBytes:5e5}),X(k(c),[],{maxBytes:5e5}),T.current?.id===c&&(T.current=null,E(null),S([]),L([]),Tt($e,i),X(u,"",{maxBytes:5e5}))},[u,k,h,i]),ae=a.useCallback(async(c,p)=>{const y=T.current,f=y?.id;if(!f)throw new Error(m("chatRooms.error.selectRoomFirst","Select a room before sending a message"));const A=va(f,{warm:!1}),_=p?.files?.map(ee=>({id:`upload-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,filename:ee.name,originalName:ee.name,mimeType:ee.type||"application/octet-stream",size:ee.size,createdAt:new Date().toISOString()})),J=Uo(f,c,_?.length?_:p?.attachments);T.current?.id===f&&L(ee=>{const he=[...ee,J];return X(h(f),he,{maxBytes:5e5}),he});let ve=!1;try{const ee=[];if(p?.files?.length)for(const fe of p.files)try{const ze=await no(f,fe,i);ee.push(ze.attachment)}catch{throw new Error(m("chatRooms.error.failedToUpload","Failed to upload attachment: {{filename}}",{filename:fe.name}))}const he=[...p?.attachments??[],...ee],Ce=await ao(f,{content:c,...he.length?{attachments:he}:{}},i);ve=!0;try{p?.onDelivered?.()}catch{}Ce.message?.createdAt&&y&&b(fe=>Ge(fe,{...y,updatedAt:Ce.message.createdAt})),T.current?.id===f&&L(fe=>{const ze=Ws(fe,Ce.message,J.id);return X(h(f),ze,{maxBytes:5e5}),ze});const ie=await ua(f,{limit:100,order:"desc"},i),Le=ba(ie.messages);if(X(h(f),Le,{maxBytes:5e5}),T.current?.id!==f)return;L(Le),A.mark("hydrate")}catch(ee){let he=null;try{const ie=await ua(f,{limit:100,order:"desc"},i);he=ba(ie.messages),X(h(f),he,{maxBytes:5e5}),T.current?.id===f&&(L(he),A.mark("hydrate"))}catch{!ve&&T.current?.id===f&&L(ie=>{const Le=ie.filter(fe=>fe.id!==J.id);return X(h(f),Le,{maxBytes:5e5}),Le})}const Ce=he?.some(ie=>ie.role==="user"&&ie.content.trim()===J.content.trim());if(ve||Ce){const ie=ee instanceof Error&&ee.message.trim()?ee.message:m("chatRooms.error.deliveredButRefreshFailed","Message delivered, but failed to refresh room replies");throw new hi(ie,f)}throw ee}finally{A.complete({source:"send-room-message"})}},[h,i]),me=a.useCallback(async c=>{!c||!B.current.some(p=>p.id===c)||(await so(c,i),X(h(c),[],{maxBytes:5e5}),T.current?.id===c&&L([]))},[h,i]);return a.useEffect(()=>{D()},[D]),a.useEffect(()=>{const c=Q.current,p=i?`/api/events?projectId=${encodeURIComponent(i)}`:"/api/events";return io(p,{onReconnect:()=>{Ma({view:"useChatRooms",trigger:"sse-reconnect",projectId:i,replayAttempted:!1});const y=T.current?.id;if(y){const f=va(y,{warm:!0});f.mark("sse-reconnect-refresh"),D().finally(()=>f.complete({source:"sse-reconnect"}));return}D()},events:{"chat:room:created":y=>{if(Q.current!==c)return;const f=Ie(y);f&&b(A=>Ge(A,f))},"chat:room:updated":y=>{if(Q.current!==c)return;const f=Ie(y);f&&(b(A=>Ge(A,f)),T.current?.id===f.id&&(T.current=f,E(f)))},"chat:room:deleted":y=>{if(Q.current!==c)return;const f=Ie(y);f?.id&&(b(A=>A.filter(_=>_.id!==f.id)),X(h(f.id),[],{maxBytes:5e5}),X(k(f.id),[],{maxBytes:5e5}),T.current?.id===f.id&&(T.current=null,E(null),S([]),L([]),Tt($e,i),X(u,"",{maxBytes:5e5})))},"chat:room:member:added":y=>{if(Q.current!==c)return;const f=Ie(y);!f||T.current?.id!==f.roomId||S(A=>{if(A.some(J=>J.agentId===f.agentId))return A;const _=[...A,f];return X(k(f.roomId),_,{maxBytes:5e5}),_})},"chat:room:member:removed":y=>{if(Q.current!==c)return;const f=Ie(y);!f||T.current?.id!==f.roomId||S(A=>{const _=A.filter(J=>J.agentId!==f.agentId);return X(k(f.roomId),_,{maxBytes:5e5}),_})},"chat:room:message:added":y=>{if(Q.current!==c)return;const f=Ie(y);f&&(b(A=>{const _=A.find(J=>J.id===f.roomId);return _?Ge(A,{..._,updatedAt:f.createdAt}):A}),T.current?.id===f.roomId&&L(A=>{const _=Ws(A,f);return _===A?A:(X(h(f.roomId),_,{maxBytes:5e5}),_)}))},"chat:room:message:updated":y=>{if(Q.current!==c)return;const f=Ie(y);!f||T.current?.id!==f.roomId||L(A=>{const _=A.map(J=>J.id===f.id?f:J);return X(h(f.roomId),_,{maxBytes:5e5}),_})},"chat:room:message:deleted":y=>{if(Q.current!==c)return;const f=Ie(y);f?.id&&L(A=>{const _=A.filter(ve=>ve.id!==f.id),J=T.current?.id;return J&&X(h(J),_,{maxBytes:5e5}),_})},"chat:room:messages:cleared":y=>{if(Q.current!==c)return;const f=Ie(y);f?.roomId&&(X(h(f.roomId),[],{maxBytes:5e5}),T.current?.id===f.roomId&&L([]),b(A=>{const _=A.find(J=>J.id===f.roomId);return _?Ge(A,{..._,updatedAt:new Date().toISOString()}):A}))}}})},[u,k,h,i,D]),a.useEffect(()=>{v&&(C.some(c=>c.id===v.id)||(T.current=null,E(null),S([]),L([]),Tt($e,i),X(u,"",{maxBytes:5e5})))},[v,u,i,C]),{rooms:C,roomsLoading:j,roomsError:M,activeRoom:v,activeRoomMembers:N,messages:l,messagesLoading:F,selectRoom:O,createRoom:R,updateRoomSettings:$,deleteRoom:ce,sendRoomMessage:ae,clearRoom:me,refreshRooms:D}}const Et={direct:"fusion:chat-unread:direct",room:"fusion:chat-unread:rooms"},Xs=200;function Ra(i){if(!i)return null;const o=new Date(i).getTime();return Number.isFinite(o)?o:null}function fi(i){const o=Object.entries(i);if(o.length<=Xs)return i;const m=o.map(([g,u])=>({id:g,timestamp:u,value:Ra(u)??0})).sort((g,u)=>u.value-g.value).slice(0,Xs);return Object.fromEntries(m.map(({id:g,timestamp:u})=>[g,u]))}function pn(i){if(!i)return{};try{const o=JSON.parse(i);if(!o||typeof o!="object")return{};const m={};for(const[g,u]of Object.entries(o))typeof g=="string"&&typeof u=="string"&&(m[g]=u);return fi(m)}catch{return{}}}function Vo(i){const[o,m]=a.useState(()=>{try{return pn(It(Et.direct,i))}catch{return{}}}),[g,u]=a.useState(()=>{try{return pn(It(Et.room,i))}catch{return{}}});a.useEffect(()=>{try{m(pn(It(Et.direct,i)))}catch{m({})}try{u(pn(It(Et.room,i)))}catch{u({})}},[i]);const h=a.useMemo(()=>({direct:o,room:g}),[o,g]),k=a.useCallback((M,s)=>{const v=fi(s);try{Sa(Et[M],JSON.stringify(v),i)}catch{}return v},[i]),C=a.useCallback((M,s)=>{if(M==="direct"){m(v=>k(M,s(v)));return}u(v=>k(M,s(v)))},[k]),b=a.useCallback((M,s,v)=>{const E=Ra(v);if(E===null)return!1;const N=h[M][s],S=Ra(N);return S===null?!0:E>S},[h]),j=a.useCallback((M,s,v)=>{if(!s)return;const E=v??new Date().toISOString();C(M,N=>({...N,[s]:E}))},[C]),I=a.useCallback((M,s)=>{s.length!==0&&C(M,v=>{const E={...v};for(const N of s)N.id&&(E[N.id]=N.lastActivityAt??new Date().toISOString());return E})},[C]);return{isUnread:b,markRead:j,markAllRead:I}}const Wo=["",...ro];function qs({level:i,onChange:o,defaultThinkingLevel:m="off",showTargetSection:g=!0,models:u=[],favoriteProviders:h=[],favoriteModels:k=[],agents:C=[],agentId:b,modelProvider:j,modelId:I,onChangeModel:M,disabled:s=!1}){const{t:v}=_e("app"),[E,N]=a.useState(!1),[S,l]=a.useState(()=>b&&b!==ke?"agent":"model"),L=a.useRef(null),F=i??"",U=j&&I?`${j}/${I}`:"",B=b&&b!==ke?b:"",T=F!==""||g&&(!!U||!!B),Q="chat-thinking-level-listbox";a.useEffect(()=>{if(!E)return;const c=p=>{const y=p.target;if(!(y instanceof Node))return;const f=L.current?.contains(y),A=y instanceof Element&&!!y.closest(".model-combobox-dropdown--portal");!f&&!A&&N(!1)};return document.addEventListener("pointerdown",c),()=>document.removeEventListener("pointerdown",c)},[E]),a.useEffect(()=>{N(!1),l(B?"agent":"model")},[F,B,U]);const se=a.useMemo(()=>C.find(c=>c.id===B),[C,B]),Y=c=>c===""?v("modelSelection.thinkingDefault","Default ({{level}})",{level:m??"off"}):v(`models.options.${c}`,c==="xhigh"?"Very High":c.charAt(0).toUpperCase()+c.slice(1)),D=c=>{N(!1),o(c)},O=c=>{const p=c.indexOf("/");p<=0||(N(!1),M?.({modelProvider:c.slice(0,p),modelId:c.slice(p+1)}))},R=c=>{c&&(N(!1),M?.({agentId:c}))},$=c=>{l(c)},ce=c=>{c.key==="Escape"&&N(!1)},ae=(c,p)=>{if(c.key==="Escape"){c.preventDefault(),N(!1);return}(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),D(p))},me=(c,p)=>{if(c.key==="Escape"){c.preventDefault(),N(!1);return}(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),R(p))};return t.jsxs("div",{className:"chat-thinking-level-root",ref:L,children:[t.jsx("button",{type:"button",className:`btn-icon chat-thinking-btn${T?" chat-thinking-btn--active":""}`,"data-testid":"chat-thinking-btn","aria-haspopup":"dialog","aria-expanded":E,"aria-controls":Q,"aria-label":v("chat.thinkingLevelButton","Thinking level"),title:v("chat.thinkingLevelButton","Thinking level"),disabled:s,onClick:()=>N(c=>!c),onKeyDown:ce,children:t.jsx(oo,{size:16})}),E?t.jsxs("div",{className:"chat-thinking-popover",role:"presentation","data-testid":"chat-thinking-popover",children:[g?t.jsxs("section",{className:"chat-thinking-target-section","aria-label":v("chat.modelAgentSection","Model / Agent"),children:[t.jsx("div",{className:"chat-thinking-section-title",children:v("chat.modelAgentSection","Model / Agent")}),t.jsxs("div",{className:"chat-thinking-mode-toggle","data-testid":"chat-thinking-mode-toggle",children:[t.jsx("button",{type:"button",className:`chat-thinking-mode-btn${S==="model"?" chat-thinking-mode-btn--active":""}`,"data-testid":"chat-thinking-mode-model","aria-pressed":S==="model",onPointerDown:c=>{c.button===0&&$("model")},onClick:c=>{c.detail===0&&$("model")},children:v("chat.newChatModeModel","Model")}),t.jsx("button",{type:"button",className:`chat-thinking-mode-btn${S==="agent"?" chat-thinking-mode-btn--active":""}`,"data-testid":"chat-thinking-mode-agent","aria-pressed":S==="agent",onPointerDown:c=>{c.button===0&&$("agent")},onClick:c=>{c.detail===0&&$("agent")},children:v("chat.newChatModeAgent","Agent")})]}),S==="model"?t.jsxs("div",{className:"chat-thinking-model-picker","data-testid":"chat-thinking-model-picker",children:[t.jsx(li,{models:u,value:U,onChange:O,label:v("chat.newChatModeModel","Model"),placeholder:v("chat.selectModel","Select a model"),disabled:!M||u.length===0,favoriteProviders:h,favoriteModels:k,menuWidth:"readable"}),u.length===0?t.jsx("div",{className:"chat-thinking-empty","data-testid":"chat-thinking-model-empty",children:v("chat.noModelsAvailable","No models available")}):null]}):t.jsx("div",{className:"chat-thinking-agent-list","data-testid":"chat-thinking-agent-list",children:C.length===0?t.jsx("div",{className:"chat-thinking-empty","data-testid":"chat-thinking-agent-empty",children:v("chat.noAgentsAvailable","No agents available")}):C.map(c=>{const p=B===c.id;return t.jsxs("button",{type:"button",className:`chat-thinking-agent-item${p?" chat-thinking-agent-item--selected":""}`,"data-testid":`chat-thinking-agent-${c.id}`,"aria-pressed":p,disabled:!M,onClick:()=>R(c.id),onKeyDown:y=>me(y,c.id),children:[t.jsx(yn,{size:16}),t.jsx("span",{className:"chat-thinking-agent-name",children:c.name||c.id}),c.role?t.jsx("span",{className:"chat-thinking-agent-role",children:c.role}):null]},c.id)})}),se?t.jsx("div",{className:"chat-thinking-current-target","data-testid":"chat-thinking-current-agent",children:v("chat.currentAgentTarget","Current agent: {{name}}",{name:se.name||se.id})}):U?t.jsx("div",{className:"chat-thinking-current-target","data-testid":"chat-thinking-current-model",children:v("chat.currentModelTarget","Current model: {{model}}",{model:U})}):t.jsx("div",{className:"chat-thinking-current-target","data-testid":"chat-thinking-current-default",children:v("chat.currentDefaultTarget","Using the default chat target")})]}):null,t.jsxs("section",{className:"chat-thinking-level-section","aria-label":v("chat.thinkingLevelButton","Thinking level"),children:[t.jsx("div",{className:"chat-thinking-section-title",children:v("chat.thinkingLevelSection","Thinking level")}),t.jsx("div",{id:Q,className:"chat-thinking-popover-list",role:"listbox","aria-label":v("chat.thinkingLevelButton","Thinking level"),children:Wo.map(c=>{const p=F===c;return t.jsx("button",{type:"button",role:"option","aria-selected":p,className:`chat-thinking-popover-option${p?" active":""}`,"data-testid":`chat-thinking-option-${c||"default"}`,onClick:()=>D(c),onKeyDown:y=>ae(y,c),children:Y(c)},c||"default")})})]})]}):null]})}function Gs(i){return i.trim().toLowerCase().replace(/[\s-]+/g,"_").replace(/_+/g,"_")}function gi(i,o){const m=o.trim();if(!m)return!0;const g=Gs(m);return Gs(i).includes(g)||i.toLowerCase().includes(m.toLowerCase())}function Qs({agents:i,filter:o,highlightedIndex:m,visible:g,onSelect:u,position:h="below",roomMemberIds:k,roomName:C}){const{t:b}=_e("app"),j=a.useMemo(()=>i.filter(N=>gi(N.name,o)),[i,o]),I=!!k,M=I&&o.trim().length>0,s=a.useMemo(()=>I?j.filter(N=>k?.has(N.id)):j,[j,k,I]),v=a.useMemo(()=>I?j.filter(N=>!k?.has(N.id)):[],[j,k,I]),E=M?[...s,...v]:s;return g?t.jsx("div",{className:`agent-mention-popup agent-mention-popup--${h}`,"data-testid":"agent-mention-popup",role:"listbox","aria-label":b("agentMention.suggestionsLabel","Agent mention suggestions"),children:E.length===0?t.jsx("div",{className:"agent-mention-empty",children:b("agentMention.noAgentsFound","No agents found")}):t.jsxs(t.Fragment,{children:[I&&t.jsx("div",{className:"agent-mention-section-header","data-testid":"agent-mention-members-header",children:C?b("agentMention.membersOf","Members of #{{roomName}}",{roomName:C}):b("agentMention.roomMembers","Room members")}),s.map((N,S)=>t.jsxs("button",{type:"button",className:`agent-mention-item${S===m?" agent-mention-item--highlighted":""}`,"data-testid":`agent-mention-item-${N.id}`,onMouseDown:l=>l.preventDefault(),onClick:()=>u(N),role:"option","aria-selected":S===m,children:[t.jsx(kn,{agent:N,size:20}),I&&t.jsx("span",{className:"status-dot agent-mention-member-dot","aria-label":b("agentMention.roomMemberBadge","Room member")}),t.jsx("span",{className:"agent-mention-name",children:N.name}),t.jsx("span",{className:"agent-mention-role",children:N.role})]},N.id)),I&&!M&&v.length>0&&t.jsx("div",{className:"agent-mention-hint","data-testid":"agent-mention-other-hint",children:b("agentMention.typeToSearch","Type to search other agents")}),I&&M&&v.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"agent-mention-section-header","data-testid":"agent-mention-others-header",children:b("agentMention.otherAgents","Other agents")}),v.map((N,S)=>{const l=s.length+S;return t.jsxs("button",{type:"button",className:`agent-mention-item${l===m?" agent-mention-item--highlighted":""}`,"data-testid":`agent-mention-item-${N.id}`,onMouseDown:L=>L.preventDefault(),onClick:()=>u(N),role:"option","aria-selected":l===m,children:[t.jsx(kn,{agent:N,size:20}),t.jsx("span",{className:"agent-mention-name",children:N.name}),t.jsx("span",{className:"agent-mention-role",children:N.role})]},N.id)})]})]})}):null}function Xo(i,o){return i+o}function qo({visible:i,position:o,tasks:m,files:g,selectedIndex:u,onSelectTask:h,onSelectFile:k,loading:C}){const{t:b}=_e("app");if(!i)return null;const j=m.length>0,I=g.length>0;return t.jsxs("div",{className:"file-mention-popup",style:{top:o.top,left:o.left},"data-testid":"file-mention-popup",onMouseDown:M=>{M.preventDefault()},children:[C&&t.jsx("div",{className:"file-mention-popup-loading","data-testid":"file-mention-loading",children:t.jsx("span",{className:"spinner"})}),!C&&!j&&!I&&t.jsx("div",{className:"file-mention-popup-empty","data-testid":"file-mention-empty",children:b("fileMention.empty","No tasks or files found")}),!C&&(j||I)&&t.jsxs("div",{className:"file-mention-popup-groups",children:[j&&t.jsxs("div",{className:"file-mention-popup-group",children:[t.jsx("div",{className:"file-mention-popup-group-header",children:b("fileMention.taskHeader","Tasks")}),t.jsx("ul",{className:"file-mention-popup-list",role:"listbox","aria-label":b("fileMention.taskMatches","Task matches"),children:m.map((M,s)=>{const v=s;return t.jsxs("li",{className:`file-mention-popup-item${v===u?" file-mention-popup-item--selected":""}`,onClick:()=>h(M),role:"option","aria-selected":v===u,"data-testid":`task-mention-item-${v}`,children:[t.jsx("span",{className:"file-mention-popup-icon",children:t.jsx(mi,{})}),t.jsxs("div",{className:"file-mention-popup-info",children:[t.jsxs("div",{className:"file-mention-popup-task-row",children:[t.jsx("span",{className:"file-mention-popup-task-id",children:M.id}),t.jsx("span",{className:`file-mention-popup-column-badge file-mention-popup-column-badge--${M.column}`,children:M.column})]}),t.jsx("span",{className:"file-mention-popup-item-path",children:M.title})]})]},M.id)})})]}),I&&t.jsxs("div",{className:"file-mention-popup-group",children:[t.jsx("div",{className:"file-mention-popup-group-header",children:b("fileMention.fileHeader","Files")}),t.jsx("ul",{className:"file-mention-popup-list",role:"listbox","aria-label":b("fileMention.fileMatches","File matches"),children:g.map((M,s)=>{const v=Xo(m.length,s),E=co(M.path);return t.jsxs("li",{className:`file-mention-popup-item${v===u?" file-mention-popup-item--selected":""}`,onClick:()=>k(M),role:"option","aria-selected":v===u,"data-testid":`file-mention-item-${v}`,children:[t.jsx("span",{className:"file-mention-popup-icon",children:t.jsx(lo,{})}),t.jsxs("div",{className:"file-mention-popup-info",children:[t.jsx("span",{className:"file-mention-popup-item-name",children:M.name}),E&&t.jsx("span",{className:"file-mention-popup-item-path",children:E})]})]},M.path)})})]})]})]})}function Go(i,o=[],m){const g=i.trim().replace(/^#/,""),u=(k,C)=>m?m(k,C):C;if(!g)return{ok:!1,error:u("createRoom.nameRequired","Room name is required.")};if(/[A-Z]/.test(g))return{ok:!1,error:u("createRoom.lowercase","Use lowercase letters only.")};const h=g.toLowerCase();return h.length>80?{ok:!1,error:u("createRoom.maxLength","Room names can be at most 80 characters.")}:/^[a-z0-9_-]+$/.test(h)?/^[-_]|[-_]$/.test(h)?{ok:!1,error:u("createRoom.noEdgeChars","Room names cannot start or end with a hyphen or underscore.")}:o.some(k=>k.toLowerCase()===h)?{ok:!1,error:u("createRoom.duplicate","A room with this name already exists.")}:{ok:!0,name:h}:{ok:!1,error:u("createRoom.validChars","Use lowercase letters, numbers, hyphens, or underscores only.")}}function Qo({isOpen:i,onClose:o,onCreate:m,projectId:g,existingRoomNames:u=[]}){const{t:h}=_e("app"),[k,C]=a.useState(""),[b,j]=a.useState([]),[I,M]=a.useState(""),[s,v]=a.useState([]),[E,N]=a.useState(!1),[S,l]=a.useState(null),[L,F]=a.useState(!1),U=a.useRef(null),B=a.useRef(null);a.useEffect(()=>{i&&(B.current=document.activeElement instanceof HTMLElement?document.activeElement:null,N(!0),l(null),uo(void 0,g).then(R=>j(R)).catch(()=>{j([]),l(h("createRoom.failedLoadAgents","Failed to load agents."))}).finally(()=>N(!1)))},[i,g]),a.useEffect(()=>{if(!i){C(""),M(""),v([]),l(null),F(!1);return}const R=window.requestAnimationFrame(()=>U.current?.focus());return()=>window.cancelAnimationFrame(R)},[i]),a.useEffect(()=>{if(!i)return;const R=$=>{$.key==="Escape"&&o()};return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[i,o]),a.useEffect(()=>{i||B.current?.focus()},[i]);const T=a.useMemo(()=>Go(k,u,h),[k,u,h]),Q=a.useMemo(()=>{const R=I.trim().toLowerCase();return R?b.filter($=>$.name.toLowerCase().includes(R)):b},[b,I]),se=a.useMemo(()=>b.filter(R=>s.includes(R.id)),[b,s]),Y=T.ok&&s.length>0&&!L&&!E;if(!i)return null;const D=R=>{L||v($=>$.includes(R)?$.filter(ce=>ce!==R):[...$,R])},O=async()=>{if(!T.ok){l(T.error);return}if(s.length===0){l(h("createRoom.selectMember","Select at least one member."));return}l(null),F(!0);try{await m({name:T.name,displayName:`#${T.name}`,memberAgentIds:s}),o()}catch(R){l(R instanceof Error?R.message:h("createRoom.failedCreate","Failed to create room."))}finally{F(!1)}};return t.jsx(mo,{windowKey:"create-room",title:h("createRoom.title","Create room"),ariaLabel:h("createRoom.title","Create room"),onClose:o,modal:!0,hideHeader:!0,dragHandleSelector:".modal-header",className:"floating-window--create-room",defaultSize:{width:640,height:640},minSize:{width:360,height:400},persistGeometryKey:"floating-window:create-room",suspendGeometryPersistenceOnMobile:!0,suspendGeometryPersistenceOnShortViewport:!0,closeOnOutsidePointerDown:!0,layer:"utility",children:t.jsxs("div",{className:"modal create-room-modal",children:[t.jsxs("div",{className:"modal-header",children:[t.jsx("h3",{children:h("createRoom.title","Create room")}),t.jsx("button",{type:"button",className:"modal-close","aria-label":h("actions.close","Close"),onClick:o,children:"×"})]}),t.jsxs("div",{className:"form-group create-room-modal-name-group",children:[t.jsx("label",{htmlFor:"create-room-name",children:h("createRoom.nameLabel","Room name")}),t.jsxs("div",{className:"create-room-modal-name-field",children:[t.jsx("span",{"aria-hidden":"true",className:"create-room-modal-name-hash",children:"#"}),t.jsx("input",{ref:U,id:"create-room-name",className:"input",value:k,disabled:L,onChange:R=>{const $=R.target.value.replace(/^#/,"").replace(/\s+/g,"-").toLowerCase();C($)}})]}),!T.ok&&t.jsx("div",{className:"form-error",children:T.error})]}),t.jsxs("div",{className:"form-group",children:[t.jsx("label",{htmlFor:"create-room-member-search",children:h("createRoom.members","Members")}),t.jsx("input",{id:"create-room-member-search",className:"input",placeholder:h("createRoom.searchAgents","Search agents"),value:I,disabled:L,onChange:R=>M(R.target.value)})]}),se.length>0&&t.jsx("div",{className:"create-room-modal-selected","data-testid":"create-room-selected-chips",children:se.map(R=>t.jsxs("button",{type:"button",className:"btn btn-sm create-room-modal-chip",onClick:()=>D(R.id),disabled:L,children:[R.name," ×"]},R.id))}),t.jsx("div",{className:"create-room-modal-member-list","data-testid":"create-room-member-list",children:E?t.jsx("div",{className:"create-room-modal-empty",children:t.jsx(ho,{label:h("createRoom.loadingAgents","Loading agents...")})}):Q.length===0?t.jsx("div",{className:"create-room-modal-empty",children:b.length===0?h("createRoom.noAgents","No agents in this project yet."):h("createRoom.noMatch","No agents match your search.")}):Q.map(R=>{const $=s.includes(R.id);return t.jsxs("button",{type:"button",className:`create-room-modal-member-row${$?" create-room-modal-member-row--selected":""}`,onClick:()=>D(R.id),disabled:L,children:[t.jsx(kn,{agent:R,size:20}),t.jsx("span",{children:R.name}),t.jsx("span",{className:"create-room-modal-member-role",children:R.role})]},R.id)})}),S&&t.jsx("div",{className:"form-group",children:t.jsx("div",{className:"form-error",children:S})}),t.jsxs("div",{className:"modal-actions",children:[t.jsx("button",{type:"button",className:"btn",onClick:o,disabled:L,children:h("actions.cancel","Cancel")}),t.jsx("button",{type:"button",className:"btn btn-primary",onClick:()=>void O(),disabled:!Y,children:L?h("createRoom.creating","Creating..."):h("createRoom.create","Create room")})]})]})})}function Yo({cliSessionId:i,tier:o,projectId:m,renderTranscript:g,renderComposer:u,queuedCount:h=0,terminalProps:k}){const{t:C}=_e("app"),b=o==="generic",[j,I]=a.useState(b?"terminal":"transcript");if(b)return t.jsx("div",{className:"cli-chat-surface cli-chat-surface--generic","data-tier":"generic",children:t.jsx(Vs,{sessionId:i,projectId:m,...k})});const M=j==="terminal";return t.jsxs("div",{className:"cli-chat-surface","data-tier":o,"data-view":j,children:[t.jsxs("div",{className:"cli-chat-surface__toolbar",role:"tablist","aria-label":C("cliChat.viewToggleLabel","Chat view"),children:[t.jsxs("button",{type:"button",role:"tab","aria-selected":!M,className:`cli-chat-surface__tab${M?"":" is-active"}`,onClick:()=>I("transcript"),children:[t.jsx(wn,{size:14,"aria-hidden":"true"}),t.jsx("span",{children:C("cliChat.transcriptTab","Transcript")})]}),t.jsxs("button",{type:"button",role:"tab","aria-selected":M,className:`cli-chat-surface__tab${M?" is-active":""}`,onClick:()=>I("terminal"),children:[t.jsx(fo,{size:14,"aria-hidden":"true"}),t.jsx("span",{children:C("cliChat.terminalTab","Terminal")})]})]}),t.jsx("div",{className:"cli-chat-surface__body",children:M?t.jsx(Vs,{sessionId:i,projectId:m,...k}):g()}),!M&&t.jsxs("div",{className:"cli-chat-surface__composer",children:[h>0&&t.jsx("div",{className:"cli-chat-surface__queued",role:"status","aria-live":"polite",children:C("cliChat.queued","{{count}} message queued — will send when the agent is ready",{count:h})}),u()]})]})}const Jo=200,Zo=8,er=8;function Ys(){return new DOMException("The operation was aborted.","AbortError")}function Js(i,o){return o.aborted?Promise.reject(Ys()):new Promise((m,g)=>{const u=()=>g(Ys());o.addEventListener("abort",u,{once:!0}),i.then(h=>{o.removeEventListener("abort",u),m(h)},h=>{o.removeEventListener("abort",u),g(h)})})}function Zs(i,o,m){const g=i.slice(0,o),u=i.slice(o+1),h=u.match(/[\s]|$/),k=h?h.index??u.length:u.length,C=u.slice(k);return`${g}${m}${C}`}function tr(i={}){const{projectId:o,workspace:m="project"}=i,[g,u]=a.useState(!1),[h,k]=a.useState(""),[C,b]=a.useState(-1),[j,I]=a.useState([]),[M,s]=a.useState([]),[v,E]=a.useState(!1),[N,S]=a.useState(0),l=a.useRef(null),L=a.useRef(null),F=[...j.map(D=>({kind:"task",task:D})),...M.map(D=>({kind:"file",file:D}))];a.useEffect(()=>()=>{l.current&&clearTimeout(l.current),L.current?.abort()},[]);const U=a.useCallback((D,O)=>{if(O<0||O>D.length){u(!1);return}const R=$=>/[a-zA-Z0-9/_.-]/.test($);for(let $=O-1;$>=0;$--){if(D[$]==="#"){if($===0){const ae=D.slice($+1,O);b($),k(ae),S(0),u(!0);return}const ce=D[$-1];if(/[\s,.;:!?'"()[\]{}]/.test(ce)){const ae=D.slice($+1,O);b($),k(ae),S(0),u(!0);return}u(!1);return}if(!R(D[$])){u(!1);return}}u(!1)},[]),B=a.useCallback(()=>{L.current?.abort(),u(!1),k(""),b(-1),I([]),s([]),S(0),E(!1)},[]),T=a.useCallback(async D=>{if(!D.trim()){I([]),s([]),E(!1);return}L.current?.abort();const O=new AbortController;L.current=O;try{E(!0);const[R,$]=await Promise.allSettled([Js(go(20,0,o,D),O.signal),Js(po(D,m,o),O.signal)]);if(O.signal.aborted)return;const ce=R.status==="fulfilled"?R.value.slice(0,Zo).map(me=>({id:me.id,title:me.title??"",column:me.column})):[],ae=$.status==="fulfilled"?$.value.files.slice(0,er):[];I(ce),s(ae),S(0)}catch(R){R.name!=="AbortError"&&(I([]),s([]))}finally{O.signal.aborted||E(!1)}},[m,o]);a.useEffect(()=>{if(g)return l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{T(h)},Jo),()=>{l.current&&clearTimeout(l.current)}},[h,g,T]);const Q=a.useCallback((D,O)=>!g||C<0?O:Zs(O,C,`#${D.id}`),[g,C]),se=a.useCallback((D,O)=>!g||C<0?O:Zs(O,C,`#${D.path}`),[g,C]),Y=a.useCallback((D,O)=>{if(!g||F.length===0)return!1;switch(D.key){case"ArrowDown":return D.preventDefault(),S(R=>Math.min(R+1,F.length-1)),!0;case"ArrowUp":return D.preventDefault(),S(R=>Math.max(R-1,0)),!0;case"Enter":case"Tab":return F[N]?(D.preventDefault(),!0):!1;case"Escape":return D.preventDefault(),B(),!0;default:return!1}},[g,F,N,B]);return{mentionActive:g,tasks:j,files:M,combinedItems:F,loading:v,mentionQuery:h,selectedIndex:N,setSelectedIndex:S,detectMention:U,selectTask:Q,selectFile:se,dismissMention:B,handleKeyDown:Y}}const wa=new Map,xn=new Map;function Aa(i){return i??"global"}function ja(i){return`${Dt.DISCOVERED_SKILLS_PREFIX}${Aa(i)}`}function vt(i){return wt(ja(i),{maxAgeMs:Ca})}function nr(i,o){for(const m of xn.get(i)??[])m(o)}async function ar(i){const o=Aa(i),m=wa.get(o);if(m)return m;const g=bo(i).finally(()=>{wa.delete(o)});return wa.set(o,g),g}function sr(i){const[o,m]=a.useState(()=>vt(i)??[]),[g,u]=a.useState(()=>vt(i)===null),h=a.useRef(vt(i)!==null),k=Aa(i);a.useEffect(()=>{const j=vt(i)??[];m(j),u(vt(i)===null),h.current=vt(i)!==null},[i]),a.useEffect(()=>{const j=xn.get(k)??new Set;return j.add(m),xn.set(k,j),()=>{j.delete(m),j.size===0&&xn.delete(k)}},[k]);const C=a.useCallback(async()=>{try{const j=await ar(i);h.current=!0,X(ja(i),j,{maxBytes:5e5}),nr(k,j)}catch{h.current||vo(ja(i))}finally{u(!1)}},[i,k]);a.useEffect(()=>{C()},[C]);const b=a.useCallback(async()=>{u(!0),await C()},[C]);return{skills:o,loading:g,refresh:b}}function ir(i,o){const m=i.reduce((g,u)=>g+(u.content?.length??0),0)+(o?.length??0);return Math.ceil(m/4)}function ei(i){if(!Number.isFinite(i)||i<=0)return"0";if(i<1e3)return String(Math.round(i));const o=i/1e3;return o<10?`~${Number(o.toFixed(1))}k`:`${Math.round(o)}k`}const Ta=640,or=200,rr=200,bt=8;function Nr(i){const o=i.trim();return o?`${o}
|
|
12
|
-
|
|
13
|
-
`:""}function cr(i,o,m,g,u,h,k){const C=Math.max(bt,h-g-bt),b=Math.max(bt,k-u-bt),j=m?i-g:i;return{x:Math.min(Math.max(bt,j),C),y:Math.min(Math.max(bt,o),b)}}const ti="__SKIP__";let xa=!1;function lr(i,o=Ta){return i>o?"auto":"hidden"}function dr(i,o=Ta){return Math.max(40,Math.min(i,o))}function ur(i,o){const m=new Date(i),u=new Date().getTime()-m.getTime(),h=Math.floor(u/1e3),k=Math.floor(h/60),C=Math.floor(k/60),b=Math.floor(C/24);return h<60?o("chat.relativeTimeJustNow","just now"):k<60?o("chat.relativeTimeMinutes","{{count}}m ago",{count:k}):C<24?o("chat.relativeTimeHours","{{count}}h ago",{count:C}):b<7?o("chat.relativeTimeDays","{{count}}d ago",{count:b}):m.toLocaleDateString()}const mr=280,vn=180,bn=500,ni="fusion:chat-sidebar-width",ya="fusion:chat-scope",hr="fusion:chat-draft:";function ai(i,o){return i.slice(o+1).find(m=>m.role==="user")?.content}function si(i,o){return o?`${hr}${i}:${o}`:null}function ii(i){if(!i)return"";try{return localStorage.getItem(i)??""}catch{return""}}const fr=["image/png","image/jpeg","image/gif","image/webp","video/mp4","video/webm","video/quicktime","text/plain","text/markdown","application/json","text/yaml","text/x-toml","text/csv","application/xml"],oi="image/png,image/jpeg,image/gif,image/webp,video/mp4,video/webm,video/quicktime,.txt,.md,.json,.yaml,.yml,.toml,.csv,.xml",ka=$o;function gr(i,o){const m=i.slice(0,o),g=/(^|[\s\n])@([\w-]*)$/.exec(m);if(!g)return null;const u=g[2]??"",h=m.length-u.length-1;return{filter:u,start:h,end:o}}function pr(i){const o=i?.runtimeConfig;if(!o||typeof o!="object")return null;const m=Reflect.get(o,"modelProvider"),g=Reflect.get(o,"modelId");return typeof m!="string"||m.trim().length===0||typeof g!="string"||g.trim().length===0?null:{provider:m,modelId:g}}function ri(i,o,m){if(i?.modelProvider&&i?.modelId)return{provider:i.modelProvider,modelId:i.modelId};const g=pr(o??void 0);return g||(m.provider&&m.modelId?{provider:m.provider,modelId:m.modelId}:null)}function vr({projectId:i,defaultModel:o,defaultKind:m,defaultAgentId:g,defaultThinkingLevel:u,defaultSelectedThinkingLevel:h,onClose:k,onCreate:C}){const{t:b}=_e("app"),[j,I]=a.useState(m??"agent"),{agents:M,loading:s}=di(i),[v,E]=a.useState(g??""),{models:N,favoriteProviders:S,favoriteModels:l,loading:L,refresh:F}=ui(),U=o.provider&&o.modelId?`${o.provider}/${o.modelId}`:"",[B,T]=a.useState(U),[Q,se]=a.useState(h??""),[Y,D]=a.useState(S),[O,R]=a.useState(l);a.useEffect(()=>{D(S)},[S]),a.useEffect(()=>{R(l)},[l]),a.useEffect(()=>{m&&I(m)},[m]),a.useEffect(()=>{g&&E(p=>p||g)},[g]),a.useEffect(()=>{U&&T(p=>p||U)},[U]),a.useEffect(()=>{h&&se(p=>p||h)},[h]);const $=a.useCallback(async p=>{const y=Y,A=y.includes(p)?y.filter(_=>_!==p):[p,...y];D(A);try{await Ks({favoriteProviders:A,favoriteModels:O}),await F()}catch{D(y)}},[Y,O,F]),ce=a.useCallback(async p=>{const y=O,A=y.includes(p)?y.filter(_=>_!==p):[p,...y];R(A);try{await Ks({favoriteProviders:Y,favoriteModels:A}),await F()}catch{R(y)}},[O,Y,F]),ae=B||U,me=p=>{if(p.preventDefault(),j==="agent"){if(!v)return;C({agentId:v});return}if(!ae)return;const y=ae.indexOf("/");if(y<=0)return;const f=ae.slice(0,y),A=ae.slice(y+1);C({agentId:ke,modelProvider:f,modelId:A,thinkingLevel:Q||void 0})},c=j==="agent"?!v:!ae;return t.jsx("div",{className:"chat-new-dialog-backdrop chat-view-dialog-backdrop",onClick:k,role:"dialog","aria-modal":"true",children:t.jsxs("div",{className:"chat-new-dialog chat-view-dialog",onClick:p=>p.stopPropagation(),children:[t.jsx("h3",{children:b("chat.newChatTitle","New Chat")}),t.jsxs("div",{className:"chat-new-dialog-mode-toggle","data-testid":"chat-new-dialog-mode-toggle",children:[t.jsx("button",{type:"button",className:`chat-new-dialog-mode-btn${j==="agent"?" chat-new-dialog-mode-btn--active":""}`,"data-testid":"chat-new-dialog-mode-agent",onClick:()=>{I("agent")},children:b("chat.newChatModeAgent","Agent")}),t.jsx("button",{type:"button",className:`chat-new-dialog-mode-btn${j==="model"?" chat-new-dialog-mode-btn--active":""}`,"data-testid":"chat-new-dialog-mode-model",onClick:()=>{I("model"),E(""),T(p=>p||U)},children:b("chat.newChatModeModel","Model")})]}),t.jsxs("form",{onSubmit:me,children:[j==="agent"&&t.jsxs("label",{className:"chat-new-dialog-model-label",children:[b("chat.newChatModeAgent","Agent"),s?t.jsx("div",{className:"chat-new-dialog-loading",children:b("chat.loadingAgents","Loading agents...")}):M.length===0?t.jsx("div",{className:"chat-new-dialog-empty",children:b("chat.noAgentsAvailable","No agents available")}):t.jsx("div",{className:"chat-new-dialog-agent-list",children:M.map(p=>t.jsxs("button",{type:"button",className:`chat-new-dialog-agent-item${v===p.id?" chat-new-dialog-agent-item--selected":""}`,onClick:()=>E(p.id),"data-testid":`agent-option-${p.id}`,children:[t.jsx(yn,{size:16}),t.jsx("span",{className:"chat-new-dialog-agent-name",children:p.name}),t.jsx("span",{className:"chat-new-dialog-agent-role",children:p.role})]},p.id))})]}),j==="model"&&t.jsx("div",{className:"chat-new-dialog-model-dropdown","data-testid":"chat-new-dialog-model-section",children:L?t.jsx("div",{className:"chat-new-dialog-loading",children:b("chat.loadingModels","Loading models...")}):t.jsx(li,{models:N,value:B,onChange:T,label:b("chat.newChatModeModel","Model"),placeholder:b("chat.selectModel","Select a model"),favoriteProviders:Y,onToggleFavorite:$,favoriteModels:O,onToggleModelFavorite:ce,showThinkingLevel:!0,thinkingLevel:Q,onThinkingLevelChange:se,defaultThinkingLevel:u??"off"})}),t.jsxs("div",{className:"chat-new-dialog-actions",children:[t.jsx("button",{type:"button",className:"btn btn-sm",onClick:k,children:b("chat.cancel","Cancel")}),t.jsx("button",{type:"submit",className:"btn btn-sm btn-primary",disabled:c,children:b("chat.create","Create")})]})]})]})})}function Rr({projectId:i,addToast:o,floating:m=!1,compactLayout:g=!1,onPopOut:u,onMaximize:h,onMinimize:k,onClose:C,chatCommandContext:b,initialComposerDraft:j,initialComposerDraftNonce:I,onSendAsReport:M}){const{t:s}=_e("app");a.useEffect(()=>(Ma({view:"ChatView",trigger:xa?"route-active":"remount",projectId:i,replayAttempted:!1}),xa=!1,()=>{xa=!0,Ma({view:"ChatView",trigger:"route-inactive",projectId:i,replayAttempted:!1})}),[i]);const[v,E]=a.useState(null);a.useEffect(()=>{let e=!1;return E(null),wo(i).then(n=>{e||E(n)}).catch(()=>{e||E(null)}),()=>{e=!0}},[i]);const N=v?.defaultThinkingLevel??"off",S=a.useMemo(()=>v?.chatDefaultKind==="agent"&&v.chatDefaultAgentId?{kind:"agent",agentId:v.chatDefaultAgentId}:v?.chatDefaultKind==="model"&&v.chatDefaultModelProvider&&v.chatDefaultModelId?{kind:"model",modelProvider:v.chatDefaultModelProvider,modelId:v.chatDefaultModelId,thinkingLevel:v.chatDefaultThinkingLevel}:null,[v]),{activeSession:l,sessionsLoading:L,messages:F,messagesLoading:U,isStreaming:B,streamingText:T,streamingThinking:Q,streamingToolCalls:se,selectSession:Y,createSession:D,archiveSession:O,archivedSessions:R,refreshArchivedSessions:$,unarchiveSession:ce,renameSession:ae,pinSession:me,pinnedCount:c,setSessionModel:p,setSessionThinkingLevel:y,deleteSession:f,tags:A=[],selectedTagId:_,setSelectedTagId:J,createTag:ve,renameTag:ee,deleteTag:he,setSessionTags:Ce,sendMessage:ie,editMessageAndResend:Le,stopStreaming:fe,pendingMessages:ze,clearPendingMessage:Cn,loadMoreMessages:Ea,hasMoreMessages:Sn,searchQuery:pi,setSearchQuery:vi,filteredSessions:Be,agentsMap:Mn}=xo(i,o),[bi,Nn]=a.useState(!1),Oe=!0,[P,Qe]=a.useState(()=>{try{if(localStorage.getItem(ya)==="rooms"&&Oe)return"rooms"}catch{}return"direct"}),x=Ko(i,o),{isUnread:Da,markRead:de}=Vo(i),[q,oe]=a.useState(()=>{const e=si(P,P==="rooms"?x.activeRoom?.id:l?.id);return ii(e)}),[G,Se]=a.useState(null),[Ye,wi]=a.useState(!1),Rn=a.useRef(null),Ia=(e,n,r,d)=>{typeof window>"u"||Se({sessionId:e,anchorX:n,anchorY:r,anchorRight:d?.anchorRight??!1,x:n,y:r})};a.useLayoutEffect(()=>{if(!G||!Rn.current||typeof window>"u")return;const e=Rn.current,n=e.getBoundingClientRect(),r=n.width||e.offsetWidth||rr,d=n.height||e.offsetHeight,w=cr(G.anchorX,G.anchorY,G.anchorRight,r,d,window.innerWidth,window.innerHeight);(w.x!==G.x||w.y!==G.y)&&Se({...G,...w})},[G]);const[Lt,Pt]=a.useState(null),[jn,An]=a.useState(""),[La,Ft]=a.useState(null),[Pa,$t]=a.useState(null),[Tn,Fa]=a.useState(""),[En,xt]=a.useState(null),[Dn,$a]=a.useState(""),[_a,_t]=a.useState(null),[yt,He]=a.useState(!0),[Je,In]=a.useState(mr),[xi,zt]=a.useState(!1),{agentsMap:za}=di(i),be=a.useMemo(()=>Mn.size>0?Mn:za,[za,Mn]),{models:Ln,favoriteProviders:yi,favoriteModels:ki,defaultProvider:Ba,defaultModelId:Oa}=ui(),Bt=a.useMemo(()=>({provider:Ba,modelId:Oa}),[Oa,Ba]),Ci=a.useMemo(()=>S?.kind==="model"?{provider:S.modelProvider,modelId:S.modelId}:Bt,[S,Bt]),{skills:Pn,loading:Si}=sr(i),[Ze,Ue]=a.useState(!1),[kt,Ct]=a.useState(""),[et,Ke]=a.useState(0),[tt,nt]=a.useState(""),[Me,at]=a.useState(!1),[Ot,Ht]=a.useState(0),[Fn,st]=a.useState(-1),[ge,Ut]=a.useState([]),[Ha,it]=a.useState(!1),[Ua,Kt]=a.useState(!1),[ot,Ka]=a.useState({}),[Vt,Ne]=a.useState(!1),[Wt,St]=a.useState(!1),{pushNav:Va}=yo(),[,Xt]=a.useState(!1),[Mi,Ni]=a.useState({top:0,left:0}),V=tr({projectId:i}),$n=a.useCallback(e=>{if(!e||!V.mentionActive)return;const n=e.getBoundingClientRect();Ni({top:n.top-260,left:n.left+8})},[V.mentionActive]),Wa=a.useRef(null),Xa=a.useRef(null),qa=a.useRef(null),Ga=a.useRef(null),le=a.useRef(!1),qt=a.useRef(null),Qa=a.useRef(null),Pe=a.useRef(null),Gt=a.useRef(0),_n=a.useRef(null),Mt=a.useRef(null),Re=a.useRef(null),re=a.useRef(null),zn=a.useRef(null),rt=a.useRef(null),[Bn,Ri]=a.useState(()=>new Set),Qt=a.useRef(!1),je=a.useRef(null),Ae=a.useRef(null),Z=a.useRef(null),Yt=a.useRef(null),Ya=a.useRef(void 0),On=a.useRef(!1),Jt=a.useRef(null),Ja=a.useRef([]),ct=a.useRef(0),Nt=a.useRef(new Map),Hn=a.useRef(!1),Zt=ko(),Ve=Zt==="mobile",Un=Zt==="tablet",Za=a.useRef(null),[ji,es]=a.useState(!1);a.useLayoutEffect(()=>{if(!m){es(!1);return}const e=Za.current;if(!e||typeof ResizeObserver>"u")return;const n=()=>{es(e.getBoundingClientRect().width<=768)};n();const r=new ResizeObserver(n);return r.observe(e),()=>r.disconnect()},[m]);const H=Ve||ji||g;a.useEffect(()=>{l?.id&&de("direct",l.id,l.lastMessageAt??l.updatedAt)},[l?.id,l?.lastMessageAt,l?.updatedAt,de]),a.useEffect(()=>{x.activeRoom?.id&&de("room",x.activeRoom.id,x.activeRoom.updatedAt)},[x.activeRoom?.id,x.activeRoom?.updatedAt,de]),a.useEffect(()=>{if(!l?.id||F.length===0)return;const e=F[F.length-1];de("direct",l.id,e?.createdAt??l.lastMessageAt??l.updatedAt)},[l?.id,l?.lastMessageAt,l?.updatedAt,de,F]),a.useEffect(()=>{if(!x.activeRoom?.id||x.messages.length===0)return;const e=x.messages[x.messages.length-1];de("room",x.activeRoom.id,e?.createdAt??x.activeRoom.updatedAt)},[de,x.activeRoom?.id,x.activeRoom?.updatedAt,x.messages]),a.useEffect(()=>{try{const e=localStorage.getItem(ni);if(!e)return;const n=Number.parseInt(e,10);if(Number.isNaN(n))return;const r=Math.max(vn,Math.min(bn,n));In(r)}catch{}},[]),a.useEffect(()=>{try{const e=localStorage.getItem(ya);if(e==="direct"){Qe("direct");return}e==="rooms"&&Oe&&Qe("rooms")}catch{}},[Oe]),a.useEffect(()=>{try{localStorage.setItem(ya,P)}catch{}},[Oe,P]);const ue=si(P,P==="rooms"?x.activeRoom?.id:l?.id),Kn=a.useRef(ue),Vn=a.useRef(!1);a.useEffect(()=>{if(ue!==Kn.current){if(Kn.current=ue,Vn.current){Vn.current=!1;return}oe(ii(ue))}},[ue]),a.useEffect(()=>{if(!(!ue||Kn.current!==ue))try{if(q){localStorage.setItem(ue,q);return}localStorage.removeItem(ue)}catch{}},[ue,q]);const te=P==="rooms"&&!!x.activeRoom,{keyboardOverlap:ts,keyboardOpen:en}=Co({enabled:(H||Un)&&(!!l||te),allowNonMobileViewport:Un}),Rt=Un&&en,tn=a.useMemo(()=>{const e=kt.trim().toLowerCase();return(e?Pn.filter(r=>r.name.toLowerCase().includes(e)):Pn).slice(0,10)},[Pn,kt]),Wn=a.useMemo(()=>b?So(kt,Us):[],[b,kt]),we=a.useMemo(()=>{const e=Wn.map(r=>({kind:"command",command:r,disabled:!b?.agentRunning})),n=tn.map(r=>({kind:"skill",skill:r}));return[...e,...n]},[Wn,tn,b]),lt=a.useMemo(()=>Array.from(be.values()),[be]),Te=a.useMemo(()=>P!=="rooms"||!x.activeRoom?null:{roomId:x.activeRoom.id,roomName:x.activeRoom.name,memberIds:new Set(x.activeRoomMembers.map(e=>e.agentId))},[Oe,P,x.activeRoom,x.activeRoomMembers]),We=a.useMemo(()=>{const e=lt.filter(d=>gi(d.name,tt));if(!Te)return e;const n=e.filter(d=>Te.memberIds.has(d.id));if(tt.trim().length===0)return n;const r=e.filter(d=>!Te.memberIds.has(d.id));return[...n,...r]},[lt,tt,Te]),Xn=a.useMemo(()=>{const e=new Map;for(const n of lt)e.set(n.name.toLowerCase(),n);return e},[lt]),Ai=a.useMemo(()=>tn.map(e=>e.id).join("\0"),[tn]);a.useEffect(()=>{Ke(0)},[Ai]),a.useEffect(()=>{Ht(0)},[tt,Me]),a.useEffect(()=>()=>{Re.current!==null&&window.clearTimeout(Re.current)},[]),a.useEffect(()=>{const e=Xa.current;if(!e||!Sn||U)return;const n=new IntersectionObserver(r=>{r[0].isIntersecting&&Ea()},{threshold:.1});return n.observe(e),()=>n.disconnect()},[Sn,U,Ea]);const dt=a.useCallback(()=>te?x.activeRoom?.id??null:l?.id??null,[te,x.activeRoom?.id,l?.id]),ns=a.useCallback((e,n)=>typeof CSS<"u"&&typeof CSS.escape=="function"?e.querySelector(`.chat-message[data-message-id="${CSS.escape(n)}"]`):e.querySelector(`.chat-message[data-message-id="${n.replace(/"/g,'\\"')}"]`),[]),as=a.useCallback(()=>{const e=re.current;if(!e)return;const n=e.getBoundingClientRect().top,r=new Set;e.querySelectorAll(".chat-message--assistant:not(.chat-message--failure)[data-message-id]").forEach(d=>{const w=d.getAttribute("data-message-id");w&&d.getBoundingClientRect().top<n&&r.add(w)}),Ri(d=>d.size===r.size&&Array.from(d).every(w=>r.has(w))?d:r)},[]),nn=a.useCallback(()=>{!re.current||rt.current!==null||(rt.current=window.requestAnimationFrame(()=>{rt.current=null,as()}))},[as]),an=a.useCallback(()=>{const e=re.current,n=dt();if(!e||!n)return;const r=e.scrollTop,d=e.querySelectorAll(".chat-message[data-message-id]"),w=Array.from(d).find(K=>K.offsetTop+K.offsetHeight>=r)??d[0]??null,z=w?.getAttribute("data-message-id")??null,W=w?w.offsetTop-r:0;Mt.current={threadId:n,scrollTop:r,scrollHeight:e.scrollHeight,clientHeight:e.clientHeight,anchorMessageId:z,anchorOffset:W,wasPinnedBefore:!le.current,capturedAtMs:typeof performance<"u"?performance.now():Date.now()}},[dt]),ss=a.useCallback(()=>{const e=re.current;if(!e)return;const r=e.scrollTop+e.clientHeight>=e.scrollHeight-50;Kt(!r),le.current=!r,an(),nn()},[an,nn]),Ee=a.useCallback((e,n)=>{if(!e.isConnected||!n?.force&&le.current)return;let r=0,d=0,w=-1;const z=6,W=()=>{if(e.isConnected&&!(!n?.force&&le.current)){if(e.scrollTop=e.scrollHeight,e.scrollHeight===w?d+=1:(d=0,w=e.scrollHeight),r+=1,r>=z||d>=2){Kt(!1),le.current=!1;return}window.requestAnimationFrame(W)}};W()},[]),ut=te?x.messages:F;a.useLayoutEffect(()=>(nn(),()=>{rt.current!==null&&(window.cancelAnimationFrame(rt.current),rt.current=null)}),[ut,nn]),a.useLayoutEffect(()=>{const e=re.current,n=dt(),r=Mt.current;if(!e||!n||!r||r.threadId!==n||r.wasPinnedBefore)return;const d=(typeof performance<"u"?performance.now():Date.now())-r.capturedAtMs,w=e.scrollHeight>e.clientHeight,z=d>3e3,W=r.scrollTop<=0&&r.anchorOffset<=0&&w;if(!le.current||z||W){Mt.current=null;return}let K=r.scrollTop;if(r.anchorMessageId){const pe=ns(e,r.anchorMessageId);pe?K=pe.offsetTop-r.anchorOffset:K=r.scrollTop+(e.scrollHeight-r.scrollHeight)}else K=r.scrollTop+(e.scrollHeight-r.scrollHeight);e.scrollTop=Math.max(0,K),le.current=!0,Kt(!0),Mt.current=null},[ut,dt,ns]);const qn=a.useCallback(e=>{},[ut.length,te]),xe=a.useCallback(e=>{qn(e);const n=re.current;n&&(Mt.current=null,le.current=!1,Ee(n))},[Ee,qn]);a.useLayoutEffect(()=>{Pe.current!==null&&(window.clearTimeout(Pe.current),Pe.current=null);const e=te?x.activeRoom?.id??null:l?.id??null;if(!e){qt.current=null;return}const n={threadId:e,loaded:te?!x.messagesLoading:!U,hasMessages:te?x.messages.length>0:F.length>0},r=qt.current,d=r?.threadId!==e,w=r?.threadId===e&&!r.loaded&&n.loaded,z=r?.threadId===e&&!r.hasMessages&&n.hasMessages;if(!(r===null||d||w||z))return;const K=re.current;if(K)return qn(d?"thread-change":w?"finished-loading":z?"first-messages":"mount"),Ee(K,{force:!0}),te||(Pe.current=window.setTimeout(()=>{if(Pe.current=null,le.current)return;const pe=re.current;pe&&Ee(pe)},250)),qt.current=n,()=>{Pe.current!==null&&(window.clearTimeout(Pe.current),Pe.current=null)}},[te,x.activeRoom?.id,x.messages.length,x.messagesLoading,l?.id,F.length,U,Ee]),a.useEffect(()=>{!B||le.current||xe("streaming")},[B,T,Q,xe]),a.useEffect(()=>{const e=dt();if(!e){Gt.current=0,_n.current=null;return}if(_n.current!==e){_n.current=e,Gt.current=ut.length;return}const n=Gt.current,r=ut.length,d=r>n,w=!le.current;Gt.current=r,d&&w&&xe("new-message")},[ut,dt,xe]),a.useEffect(()=>{ts<=0||!re.current||xe("keyboard")},[ts,xe]),Mo(Ve&&en),a.useLayoutEffect(()=>{if(!Ve||!l&&!te||typeof window>"u")return;const e=zn.current,n=window.visualViewport;if(!e||!n)return;const r=w=>{if(!(w instanceof HTMLElement))return!1;if(w.tagName==="TEXTAREA")return!0;if(w.tagName!=="INPUT")return!1;const z=w.type.toLowerCase();return["","text","search","email","url","tel","password","number"].includes(z)},d=()=>{if(Qt.current){e.classList.remove("chat-thread--keyboard-active"),e.style.setProperty("--chat-keyboard-accessory-clearance","0px"),e.style.transform="",e.style.willChange="";return}const w=Math.max(0,window.innerHeight-n.offsetTop-n.height),z=n.offsetTop||0;e.style.setProperty("--vv-height",`${n.height}px`),e.style.setProperty("--vv-offset-top",`${z}px`),e.style.setProperty("--keyboard-overlap",`${w}px`);const W=(w>0||z>0)&&r(document.activeElement);e.classList.toggle("chat-thread--keyboard-active",W),e.style.setProperty("--chat-keyboard-accessory-clearance",W&&pa()?"calc(var(--space-2xl) + var(--space-md))":"0px"),W&&z>0?(e.style.transform=`translateY(${z}px)`,e.style.willChange="transform"):(e.style.transform="",e.style.willChange="")};return d(),n.addEventListener("resize",d),n.addEventListener("scroll",d),document.addEventListener("focusin",d),document.addEventListener("focusout",d),window.addEventListener("pageshow",d),document.addEventListener("visibilitychange",d),()=>{n.removeEventListener("resize",d),n.removeEventListener("scroll",d),document.removeEventListener("focusin",d),document.removeEventListener("focusout",d),window.removeEventListener("pageshow",d),document.removeEventListener("visibilitychange",d),e.classList.remove("chat-thread--keyboard-active"),e.style.setProperty("--chat-keyboard-accessory-clearance","0px"),e.style.transform="",e.style.willChange=""}},[l,Ve,te]),a.useEffect(()=>{const e=()=>Se(null);if(G)return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[G]),a.useEffect(()=>{if(!Ve||!en)return;const e=n=>{n.target?.closest(".chat-messages")||n.preventDefault()};return document.addEventListener("touchmove",e,{passive:!1}),()=>{document.removeEventListener("touchmove",e)}},[Ve,en]),a.useEffect(()=>{const e=Qa.current;if(Qa.current=P,P==="rooms"&&!x.activeRoom){qt.current=null;return}if(!(P==="direct"&&(e===null||e==="rooms"))&&!(P==="rooms"&&(e===null||e==="direct")))return;const d=re.current;d&&(Ee(d,{force:!0}),le.current=!1,Kt(!1))},[P,x.activeRoom,Ee]),a.useEffect(()=>{if(!l&&!te||te&&!H)return;const e=()=>{const r=!le.current;an(),r&&H&&re.current&&xe("visibility-restore")},n=()=>{document.visibilityState==="visible"&&e()};return document.addEventListener("visibilitychange",n),window.addEventListener("pageshow",e),()=>{document.removeEventListener("visibilitychange",n),window.removeEventListener("pageshow",e)}},[H,Ve,l,te,an,xe]),a.useEffect(()=>{if(te||typeof ResizeObserver>"u")return;const e=re.current;if(!e)return;const n=new ResizeObserver(()=>{le.current||Ee(e)});return n.observe(e),()=>{n.disconnect()}},[te,Ee,l?.id,P]),a.useEffect(()=>{Ja.current=ge},[ge]),a.useEffect(()=>()=>{for(const e of Ja.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);for(const e of Nt.current.values())window.clearTimeout(e);Nt.current.clear()},[]);const mt=a.useCallback(e=>{if(!e||e.length===0)return;const n=[];for(const r of Array.from(e)){if(!fr.includes(r.type))continue;const d=r.type.startsWith("image/");n.push({file:r,previewUrl:d?URL.createObjectURL(r):""})}n.length>0&&Ut(r=>[...r,...n])},[]),is=a.useCallback(e=>{Ut(n=>{const r=n[e];return r?.previewUrl&&URL.revokeObjectURL(r.previewUrl),n.filter((d,w)=>w!==e)})},[]),os=a.useCallback(e=>{mt(e.clipboardData?.files)},[mt]),ht=a.useCallback(async e=>{try{return await D(e),Nn(!1),H&&He(!1),!0}catch{return o(s("chat.failedToCreateSession","Failed to create chat session"),"error"),!1}},[D,o,H,s]),sn=a.useCallback(()=>{if(v?.chatNewSessionMode==="always-default"&&S){if(S.kind==="agent"){ht({agentId:S.agentId});return}ht({agentId:ke,modelProvider:S.modelProvider,modelId:S.modelId,thinkingLevel:S.thinkingLevel});return}Nn(!0)},[S,v?.chatNewSessionMode,ht]),ne=a.useCallback(e=>{const n=e??Z.current;if(!n)return;const r=Zt==="tablet"?or:Ta;n.style.height="auto",n.style.height=`${dr(n.scrollHeight,r)}px`,n.style.overflowY=lr(n.scrollHeight,r)},[Zt]),Ti=Is({textareaRef:Z,value:q,onChange:oe,onResize:()=>ne(Z.current),projectId:i}),Ei=Is({textareaRef:Yt,value:q,onChange:oe,onResize:()=>ne(Yt.current),projectId:i}),Di=a.useCallback(e=>{Z.current=e,e&&ne(e)},[ne]),Ii=a.useCallback(e=>{Yt.current=e,e&&ne(e)},[ne]);a.useLayoutEffect(()=>{ne(P==="rooms"?Yt.current:Z.current),On.current&&(On.current=!1,Z.current?.focus())},[P,q,l?.id,x.activeRoom?.id,ne]),a.useEffect(()=>{if(I===void 0||I===Ya.current||!j?.trim())return;Ya.current=I;const e=n=>{n&&(Vn.current=!0),Qe("direct"),On.current=!0,oe(j)};if(!B&&v?.chatNewSessionMode==="always-default"&&S){const n=S.kind==="agent"?{agentId:S.agentId}:{agentId:ke,modelProvider:S.modelProvider,modelId:S.modelId,thinkingLevel:S.thinkingLevel};ht(n).then(r=>e(r||P!=="direct"));return}e(P!=="direct")},[S,P,v?.chatNewSessionMode,ht,j,I,B,ne]);const ft=a.useCallback(()=>{if(oe(""),ue)try{localStorage.removeItem(ue)}catch{}Ue(!1),Ct(""),at(!1),nt(""),st(-1),Ut(e=>{for(const n of e)n.previewUrl&&URL.revokeObjectURL(n.previewUrl);return[]})},[ue]),Xe=a.useCallback(e=>{Ut(n=>{const r=n.filter(d=>e.has(d.file));for(const d of r)d.previewUrl&&URL.revokeObjectURL(d.previewUrl);return n.filter(d=>!e.has(d.file))})},[]),Gn=a.useCallback(()=>{const e=q.trim(),n=ge.map(d=>d.file);if(!e&&n.length===0||!l)return;if(b){const d=No(e,Us);if(d){if(!b.agentRunning){o(s("chat.commandNoRunningAgent","No running agent to steer"),"warning");return}if(n.length>0){o(s("chat.commandNoAttachments","Attachments aren't supported with commands — remove them before sending"),"warning");return}ft(),d.command.run({taskId:b.taskId,projectId:b.projectId,remainder:d.remainder}).then(()=>{o(s("chat.commandSteerSuccess","Sent to the running agent"),"success")}).catch(w=>{const z=w instanceof Error&&w.message.trim()?w.message:s("chat.commandSteerFailed","Failed to send to the running agent");o(z,"error")});return}}if(e==="/clear"||e==="/new"){if(n.length>0){o(s("chat.clearNoAttachments","Remove the attachments before running /clear or /new — they would be discarded unsent"),"warning");return}if(l.agentId.startsWith(Ro)){ft(),o(s("chat.newNotAllowedForTaskChat","This chat is tied to a task — /new and /clear can't clear it"),"warning");return}ft(),Cn(),fe(),D({agentId:l.agentId,modelProvider:l.modelProvider??void 0,modelId:l.modelId??void 0,thinkingLevel:l.thinkingLevel??void 0}).catch(()=>{o(s("chat.failedToClearConversation","Failed to clear conversation"),"error")});return}if(B&&n.length>0){o(s("chat.attachmentsNotQueued","Attachments can't be queued while a reply is streaming — wait for it to finish"),"warning");return}const r=new Set(n);oe("");try{ie(e,n,{onAccepted:()=>Xe(r),onDelivered:()=>Xe(r),onFailed:()=>{oe(d=>d||e)}})}catch{oe(e)}},[q,ge,l,ft,fe,Cn,D,o,ie,b,B,Xe,s]),Qn=a.useCallback(async()=>{const e=q.trim(),n=ge.map(r=>r.file);if(!(!e&&n.length===0)){if(P==="rooms"){if(!x.activeRoom)return;if(e==="/clear"||e==="/new"){if(n.length>0){o(s("chat.clearNoAttachments","Remove the attachments before running /clear or /new — they would be discarded unsent"),"warning");return}ft();try{await x.clearRoom(x.activeRoom.id)}catch{o(s("chat.failedToClearRoomConversation","Failed to clear room conversation"),"error")}return}if(Hn.current)return;Hn.current=!0;const r=q,d=new Set(n);oe("");try{await x.sendRoomMessage(e,{files:n,onDelivered:()=>Xe(d)}),Xe(d)}catch(w){if(w instanceof hi){Xe(d);const W=w.message.trim()?w.message:s("chat.messageSentButReplyFailed","Message sent, but assistant reply failed");o(s("chat.messageSentButReplyFailedDetail","Message sent, but assistant reply failed: {{detail}}",{detail:W}),"error");return}oe(r);const z=w instanceof Error&&w.message.trim()?w.message:s("chat.failedToSendRoomMessage","Failed to send room message");o(z,"error")}finally{Hn.current=!1}return}Gn()}},[q,ge,Oe,P,x,x.clearRoom,ft,o,Gn,Xe]),on=a.useCallback(async e=>{if(P==="rooms"){if(!x.activeRoom)return;try{await x.sendRoomMessage(e)}catch(n){const r=n instanceof Error&&n.message.trim()?n.message:s("chat.failedToSendRoomMessage","Failed to send room message");o(r,"error")}return}l&&ie(e)},[l,o,Oe,P,x,ie,s]),Yn=a.useCallback(e=>{oe(n=>{const r=ka(n);if(!r)return n;const d=`/skill:${e.name} `,w=n.slice(0,r.start)+d+n.slice(r.end);return window.requestAnimationFrame(()=>{Z.current&&(ne(Z.current),Z.current.focus())}),w}),Ue(!1),Ct(""),Ke(0)},[ne]),Jn=a.useCallback((e,n)=>{if(n){o(s("chat.commandNoRunningAgent","No running agent to steer"),"warning");return}oe(r=>{const d=ka(r);if(!d)return r;const w=`${e.trigger} `,z=r.slice(0,d.start)+w+r.slice(d.end);return window.requestAnimationFrame(()=>{Z.current&&(ne(Z.current),Z.current.focus())}),z}),Ue(!1),Ct(""),Ke(0)},[ne,o,s]),rn=a.useCallback(e=>{const n=Z.current;if(!n||Fn<0)return;const r=n.selectionStart??ct.current,d=n.selectionEnd??r,w=Math.max(r,d),z=Math.min(Fn,w),K=`${`@${e.name.replace(/\s+/g,"_")}`} `,pe=q.slice(0,z)+K+q.slice(w),gt=z+K.length;oe(pe),at(!1),nt(""),Ht(0),st(-1),window.requestAnimationFrame(()=>{Z.current&&(ne(Z.current),Z.current.focus(),Z.current.setSelectionRange(gt,gt))})},[Fn,q,ne]),jt=a.useCallback((e,n)=>{const d=Z.current?.selectionStart??ct.current,w=q.lastIndexOf("#",d),z=w>=0?w+n.length:e.length;oe(e),V.dismissMention(),Xt(!1),window.requestAnimationFrame(()=>{Z.current&&(ne(Z.current),Z.current.focus(),Z.current.setSelectionRange(z,z))})},[V,q,ne]),rs=a.useCallback(e=>{if(ct.current=e.currentTarget.selectionStart??ct.current,V.mentionActive&&V.combinedItems.length>0){if(V.handleKeyDown(e,q),e.key==="Enter"||e.key==="Tab"){const n=V.combinedItems[V.selectedIndex];n?.kind==="task"?jt(V.selectTask(n.task,q),`#${n.task.id}`):n?.kind==="file"&&jt(V.selectFile(n.file,q),`#${n.file.path}`)}return}if(Me&&e.key==="ArrowDown"){e.preventDefault(),We.length>0&&Ht(n=>(n+1)%We.length);return}if(Me&&e.key==="ArrowUp"){e.preventDefault(),We.length>0&&Ht(n=>n===0?We.length-1:n-1);return}if(Me&&e.key==="Enter"){e.preventDefault();const n=We[Ot]??We[0];n&&rn(n);return}if(Me&&e.key==="Escape"){e.preventDefault(),at(!1),nt(""),st(-1);return}if(Ze&&e.key==="ArrowDown"){e.preventDefault(),we.length>0&&Ke(n=>(n+1)%we.length);return}if(Ze&&e.key==="ArrowUp"){e.preventDefault(),we.length>0&&Ke(n=>n===0?we.length-1:n-1);return}if(Ze&&(e.key==="Enter"||e.key==="Tab")&&we.length>0){e.preventDefault();const n=we[et]??we[0];n?.kind==="skill"?Yn(n.skill):n?.kind==="command"&&Jn(n.command,n.disabled);return}if(Ze&&e.key==="Escape"){e.preventDefault(),Ue(!1);return}e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),Qn())},[Me,We,Ot,rn,Ze,we,et,Yn,Jn,Qn,V,jt,q]),cn=a.useCallback((e,n)=>{const r=gr(e,n);if(r){at(!0),nt(r.filter),st(r.start);return}at(!1),nt(""),st(-1)},[]),cs=a.useCallback(e=>{const n=e.target,r=n.value,d=n.selectionStart??r.length;ne(n),ct.current=d,oe(r);const w=ka(r);w?(Ue(!0),Ct(w.filter)):(Ue(!1),Ct("")),cn(r,d),V.detectMention(r,d),Xt(V.mentionActive),V.mentionActive&&$n(n)},[cn,ne]),ln=a.useCallback(e=>{const n=e.currentTarget,r=n.selectionStart??n.value.length;ct.current=r,cn(n.value,r),V.detectMention(n.value,r),Xt(V.mentionActive),V.mentionActive&&$n(n)},[cn,V,$n]),ls=a.useCallback(e=>{e.key!=="Escape"&&ln(e)},[ln]),ds=a.useCallback(()=>{typeof window<"u"&&window.innerWidth<=768&&(Qt.current=!0,je.current!==null&&window.clearTimeout(je.current),je.current=window.setTimeout(()=>{Qt.current=!1,je.current=null},450),(window.scrollY!==0||window.scrollX!==0)&&window.scrollTo(0,0),Ae.current!==null&&window.clearTimeout(Ae.current),Ae.current=window.setTimeout(()=>{Ae.current=null,document.activeElement?.tagName!=="TEXTAREA"&&(window.scrollY!==0||window.scrollX!==0)&&window.scrollTo(0,0)},350)),Re.current!==null&&window.clearTimeout(Re.current),Re.current=window.setTimeout(()=>{Ue(!1),at(!1),nt(""),st(-1),Xt(!1),V.dismissMention(),Re.current=null},120)},[V]),us=a.useCallback(()=>{Qt.current=!1,je.current!==null&&(window.clearTimeout(je.current),je.current=null),Re.current!==null&&(window.clearTimeout(Re.current),Re.current=null),Ae.current!==null&&(window.clearTimeout(Ae.current),Ae.current=null)},[]);a.useEffect(()=>()=>{je.current!==null&&window.clearTimeout(je.current),Ae.current!==null&&window.clearTimeout(Ae.current)},[]);const ms=a.useCallback(async e=>{Se(null);try{await O(e),o(s("chat.conversationArchived","Conversation archived"),"success")}catch{o(s("chat.failedToArchiveConversation","Failed to archive conversation"),"error")}},[O,o]),Li=a.useCallback(async e=>{try{await ce(e),o(s("chat.conversationRestored","Conversation restored"),"success")}catch{o(s("chat.failedToRestoreConversation","Failed to restore conversation"),"error")}},[ce,o,s]),hs=a.useCallback(e=>{const n=Be.find(r=>r.id===e)??(l?.id===e?l:null);Se(null),Ne(!1),An(n?.title??""),Pt({sessionId:e,title:n?.title??""})},[l,Be]),fs=a.useCallback(async()=>{if(Lt)try{await ae(Lt.sessionId,jn),Pt(null),An(""),o(s("chat.conversationRenamed","Conversation renamed"),"success")}catch{}},[o,Lt,ae,jn,s]),gs=a.useCallback(async(e,n)=>{Se(null),Ne(!1);try{await me(e,n),o(n?s("chat.conversationPinned","Conversation pinned"):s("chat.conversationUnpinned","Conversation unpinned"),"success")}catch{}},[o,me,s]),Pi=a.useCallback(async e=>{Ft(null),Se(null);try{await f(e),o(s("chat.conversationDeleted","Conversation deleted"),"success")}catch{o(s("chat.failedToDeleteConversation","Failed to delete conversation"),"error")}},[f,o]),At=a.useCallback(e=>{try{localStorage.setItem(ni,String(e))}catch{}},[]),Fi=a.useCallback(e=>{if(H||Rt)return;e.preventDefault(),e.stopPropagation();const n=e.currentTarget;typeof n.setPointerCapture=="function"&&n.setPointerCapture(e.pointerId);const r=e.clientX,d=Je;let w=d;document.body.style.userSelect="none";const z=K=>{const pe=K.clientX-r,gt=Math.max(vn,Math.min(bn,d+pe));w=gt,In(gt),At(gt)},W=K=>{typeof n.releasePointerCapture=="function"&&n.releasePointerCapture(K.pointerId),document.body.style.userSelect="",document.removeEventListener("pointermove",z),document.removeEventListener("pointerup",W),At(w)};document.addEventListener("pointermove",z),document.addEventListener("pointerup",W)},[H,At,Je,Rt]),$i=a.useCallback(e=>{if(H||Rt||e.key!=="ArrowLeft"&&e.key!=="ArrowRight")return;e.preventDefault();const n=e.shiftKey?50:10,r=e.key==="ArrowLeft"?-n:n,d=Math.max(vn,Math.min(bn,Je+r));In(d),At(d)},[H,At,Je,Rt]),ps=a.useCallback(e=>{const n=Be.find(r=>r.id===e);de("direct",e,n?.lastMessageAt??n?.updatedAt),Y(e),Ne(!1),H&&He(!1)},[Be,H,de,Y]),Zn=a.useCallback(()=>{Y(""),He(!0),Ne(!1)},[Y]),ea=a.useCallback(()=>{x.selectRoom(null),He(!0),Ne(!1)},[x]),_i=()=>t.jsxs("div",{className:"chat-empty-state",children:[t.jsx(wn,{size:48,strokeWidth:1.5}),t.jsx("h2",{children:s("chat.startNewConversation","Start a new conversation")}),t.jsxs("button",{className:"btn btn-primary",onClick:sn,children:[t.jsx(pt,{size:16}),s("chat.newChat","New Chat")]})]}),De=ri(l,l?.agentId?be.get(l.agentId)??null:null,Bt),ta=a.useMemo(()=>{if(!De?.provider||!De.modelId)return null;const e=Ln.find(n=>n.provider===De.provider&&n.id===De.modelId);return e?.contextWindow?e.contextWindow:null},[De?.modelId,De?.provider,Ln]),zi=a.useMemo(()=>ir(F,B?T:void 0),[B,F,T]),Fe=Ls(De?.provider,De?.modelId),qe=De?.provider??null,na=!!(l||B||F.length>0),dn=H&&!yt&&(P==="rooms"?te:na),un=H?dn:P==="rooms"?te:!!l,vs=a.useRef(un);a.useEffect(()=>{const e=vs.current;vs.current=un,H&&(e||!un||Va({type:"view",revert:P==="rooms"?ea:Zn}))},[P,Zn,ea,un,H,Va]);const bs=l?.agentId===ke?Fe??"Fusion":l?.title||be.get(l?.agentId??"")?.name||l?.agentId||"Chat",Bi=l?.title||s("chat.untitledSession","Untitled"),Oi=!!(Fe&&Fe!==bs),Hi=!H&&na&&ta!==null,ws=ei(zi),mn=ta!==null?ei(ta):null,aa=mn?s("chat.contextWindowAria","Estimated {{used}} of {{total}} context tokens",{used:ws,total:mn}):null,Ui=dn&&P==="direct"&&!!l,xs=dn&&P==="direct",ys=dn&&P==="rooms",sa=be.get(l?.agentId??"")?.name||(l?.agentId===ke?Fe??"Fusion":l?.agentId?.slice(0,30)??"Fusion"),ia=!1,oa=l?.agentId===ke,Ki=e=>e.length>50?`${e.slice(0,50)}…`:e;a.useEffect(()=>{if(!Vt)return;const e=n=>{qa.current?.contains(n.target)||Ne(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[Vt]),a.useEffect(()=>{if(!Wt)return;const e=r=>{Ga.current?.contains(r.target)||St(!1)},n=r=>{r.key==="Escape"&&St(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",n),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",n)}},[Wt]),a.useEffect(()=>{(!H||P!=="direct"||yt)&&Ne(!1)},[H,P,yt]),a.useEffect(()=>{St(!1)},[x.activeRoom?.id]);const ks=a.useCallback((e,n)=>{const r=Nt.current.get(e);r&&window.clearTimeout(r),Ka(w=>({...w,[e]:n}));const d=window.setTimeout(()=>{Ka(w=>{const{[e]:z,...W}=w;return W}),Nt.current.delete(e)},2e3);Nt.current.set(e,d)},[]),Cs=a.useCallback(async(e,n)=>{const r=await jo(n);ks(e,r?"success":"error")},[ks]),ra=l?.agentId===ke,ca=a.useCallback((e,n,r,d,w=!0)=>{const z=ra&&r==="assistant",W=w&&r==="assistant"&&M?Ao(n,s("chat.reportFallbackTitle","Chat report")):null;if(!(!z&&!W?.handoff))return t.jsxs(t.Fragment,{children:[z&&t.jsx("button",{type:"button",className:`btn-icon chat-message-copy-action${ot[e]==="success"?" chat-message-copy-action--success":""}${ot[e]==="error"?" chat-message-copy-action--error":""}`,"data-testid":d??`chat-copy-response-${e}`,"aria-label":ot[e]==="success"?s("chat.responseCopied","Response copied"):ot[e]==="error"?s("chat.copyFailed","Copy failed"):s("chat.copyResponse","Copy response"),onClick:()=>{Cs(e,n)},children:ot[e]==="success"?t.jsx(To,{size:14}):t.jsx(Eo,{size:14})}),W?.handoff&&t.jsx("button",{type:"button",className:"btn-icon","data-testid":`chat-send-as-report-${e}`,"aria-label":s("chat.sendAsReport","Send as report"),onClick:()=>{W.truncated&&o(s("chat.reportTrimmed","Message trimmed to 2000 characters for mail"),"warning"),M?.(W.handoff)},children:t.jsx(Do,{size:14})})]})},[o,ot,Cs,M,ra,s]),la=a.useCallback(e=>{const n=re.current;if(!n)return;const r=`[data-testid="chat-message-${e}"]`,d=n.querySelector(r);if(!d)return;const w=d.getBoundingClientRect().top-n.getBoundingClientRect().top+n.scrollTop,z=typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;n.scrollTo({top:w,behavior:z?"auto":"smooth"})},[]),Ss=l?.cliExecutorAdapterId??null,da=!!Ss,Vi=Ss==="generic"?"generic":"hybrid",Wi=l?.cliSessionFile||l?.id||"",Ms=!da&&!B,Ns=()=>t.jsxs("div",{className:"chat-messages",ref:re,onScroll:ss,children:[t.jsx("div",{ref:Xa,className:"chat-load-more-sentinel",children:Sn&&U&&t.jsx("div",{className:"chat-loading-older",children:s("chat.loadingOlderMessages","Loading older messages…")})}),B?t.jsxs(t.Fragment,{children:[F.map((e,n)=>t.jsx(ga,{message:e,forcePlain:!1,agentName:sa,hideAssistantIdentity:oa,showAssistantModelTag:ia,activeModelTag:Fe,activeModelProvider:qe,activeSessionId:l?.id??null,projectId:i,mentionAgentsByName:Xn,roomContext:null,copyAction:ca(e.id,e.content,e.role),onScrollToTop:la,isTopClipped:Bn.has(e.id),isAwaitingQuestionAnswer:e.role==="assistant"&&n===F.length-1&&!B,submittedQuestionAnswer:ai(F,n),onQuestionSubmit:on,canEdit:Ms,onEditMessage:Le},e.id)),t.jsx(_o,{streamingText:T,streamingThinking:Q,streamingToolCalls:se,forcePlain:!1,agentName:sa,hideAssistantIdentity:oa,showAssistantModelTag:ia,activeModelTag:Fe,activeModelProvider:qe,copyAction:ra&&T?ca("__streaming__",T,"assistant","chat-copy-response-streaming",!1):void 0,onQuestionSubmit:on})]}):U?t.jsx("div",{className:"chat-empty-state",children:s("chat.loadingMessages","Loading messages...")}):F.length===0&&!l?_i():F.length===0&&l?t.jsx("div",{className:"chat-empty-state",children:s("chat.noMessagesYet","No messages yet. Start the conversation!")}):t.jsx(t.Fragment,{children:F.map((e,n)=>t.jsx(ga,{message:e,forcePlain:!1,agentName:sa,hideAssistantIdentity:oa,showAssistantModelTag:ia,activeModelTag:Fe,activeModelProvider:qe,activeSessionId:l?.id??null,projectId:i,mentionAgentsByName:Xn,roomContext:null,copyAction:ca(e.id,e.content,e.role),onScrollToTop:la,isTopClipped:Bn.has(e.id),isAwaitingQuestionAnswer:e.role==="assistant"&&n===F.length-1&&!B,submittedQuestionAnswer:ai(F,n),onQuestionSubmit:on,canEdit:Ms,onEditMessage:Le},e.id))}),t.jsx("div",{ref:Wa})]}),Rs=()=>t.jsxs("div",{className:"chat-input-area",children:[t.jsx("input",{ref:Jt,type:"file","data-testid":"chat-file-input",accept:oi,multiple:!0,style:{display:"none"},onChange:e=>{mt(e.target.files),e.target.value=""}}),Ze&&t.jsx("div",{className:"chat-skill-menu","data-testid":"chat-skill-menu",role:"listbox","aria-label":s("chat.skillSuggestions","Skill suggestions"),children:Si&&Wn.length===0?t.jsx("div",{className:"chat-skill-menu-empty",children:s("chat.loadingSkills","Loading skills…")}):we.length===0?t.jsx("div",{className:"chat-skill-menu-empty",children:kt?s("chat.noSkillsFound","No skills found"):s("chat.noSkillsAvailable","No skills available")}):we.map((e,n)=>e.kind==="command"?t.jsxs("button",{type:"button",role:"option","aria-selected":n===et,"aria-disabled":e.disabled,className:`chat-skill-menu-item chat-command-menu-item${n===et?" chat-skill-menu-item--highlighted":""}${e.disabled?" chat-command-menu-item--disabled":""}`,onMouseDown:r=>r.preventDefault(),onMouseEnter:()=>Ke(n),onClick:()=>Jn(e.command,e.disabled),children:[t.jsx("span",{className:"chat-skill-menu-item-name",children:e.command.trigger}),t.jsx("span",{className:"chat-skill-menu-item-description",children:e.disabled?s("chat.commandNoRunningAgentHint","No running agent to steer"):e.command.description})]},`command-${e.command.trigger}`):t.jsxs("button",{type:"button",role:"option","aria-selected":n===et,className:`chat-skill-menu-item${n===et?" chat-skill-menu-item--highlighted":""}`,onMouseDown:r=>r.preventDefault(),onMouseEnter:()=>Ke(n),onClick:()=>Yn(e.skill),children:[t.jsx("span",{className:"chat-skill-menu-item-name",children:e.skill.name}),t.jsx("span",{className:"chat-skill-menu-item-description",title:e.skill.relativePath,children:e.skill.relativePath})]},e.skill.id))}),ge.length>0&&t.jsx("div",{className:"chat-attachment-previews","data-testid":"chat-attachment-previews",children:ge.map((e,n)=>t.jsxs("div",{className:"chat-attachment-preview","data-testid":`chat-attachment-preview-${n}`,children:[e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.file.name}):t.jsx("span",{className:"chat-attachment-preview-name",children:e.file.name}),t.jsx("button",{type:"button",className:"chat-attachment-remove",onClick:()=>is(n),"data-testid":`chat-attachment-remove-${n}`,"aria-label":`Remove ${e.file.name}`,children:"×"})]},e.previewUrl||`${e.file.name}-${n}`))}),ze.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"chat-pending-stack","data-testid":"chat-pending-stack",children:ze.map((e,n)=>t.jsxs("div",{className:"chat-pending-message","data-testid":"chat-pending-indicator",children:[t.jsx("span",{children:s("chat.queuedMessage","Queued: {{preview}}",{preview:Ki(e)})}),t.jsx("button",{type:"button",className:"chat-pending-message-dismiss","aria-label":s("chat.dismissQueuedMessage","Dismiss queued message"),"data-testid":`chat-pending-dismiss-${n}`,onClick:()=>Cn(n),children:"×"})]},`${n}-${e}`))}),t.jsx("div",{className:"chat-pending-divider","aria-hidden":"true"})]}),t.jsxs("div",{className:"chat-input-row",children:[t.jsx("button",{type:"button",className:"btn-icon chat-attach-btn","data-testid":"chat-attach-btn","aria-label":s("chat.attachFiles","Attach files"),onClick:()=>Jt.current?.click(),children:t.jsx(Bs,{size:16})}),!da&&t.jsx(qs,{level:l?.thinkingLevel,defaultThinkingLevel:N,models:Ln,favoriteProviders:yi,favoriteModels:ki,agents:Array.from(be.values()),agentId:l?.agentId,modelProvider:l?.modelProvider,modelId:l?.modelId,onChange:e=>{l&&y(l.id,e)},onChangeModel:e=>{l&&p(l.id,e)},disabled:!l}),t.jsxs("div",{className:`chat-input-wrapper${Ha?" chat-input-wrapper--dragover":""}`,onDragOver:e=>{e.preventDefault(),it(!0)},onDragLeave:()=>it(!1),onDrop:e=>{e.preventDefault(),it(!1),mt(e.dataTransfer.files)},children:[t.jsx("textarea",{ref:Di,className:"chat-input-textarea",placeholder:s("chat.typeMessage","Type a message..."),value:q,onChange:cs,onKeyDown:rs,onKeyUp:ls,onClick:ln,onBlur:ds,onFocus:us,onPaste:os,onTouchStart:e=>{typeof window>"u"||window.innerWidth>768||pa()&&(document.activeElement,e.currentTarget)},rows:1,"data-testid":"chat-input"}),t.jsx(Qs,{agents:lt,filter:tt,highlightedIndex:Ot,visible:Me,onSelect:rn,position:"below",roomMemberIds:Te?.memberIds,roomName:Te?.roomName}),t.jsx(qo,{visible:V.mentionActive&&!Me,position:Mi,tasks:V.tasks,files:V.files,selectedIndex:V.selectedIndex,onSelectTask:e=>{jt(V.selectTask(e,q),`#${e.id}`)},onSelectFile:e=>{jt(V.selectFile(e,q),`#${e.path}`)},loading:V.loading})]}),t.jsx(Os,{...Ti.micProps}),t.jsx(Hs,{isStreaming:B,canSend:!!(q.trim()||ge.length>0),onSend:Gn,onStop:fe})]})]}),Xi=H?void 0:{width:`${Je}px`},js=Ye?R:Be,As=js.filter(e=>e.pinnedAt!=null),Ts=js.filter(e=>e.pinnedAt==null),ye=G?Be.find(e=>e.id===G.sessionId)??(l?.id===G.sessionId?l:void 0):void 0,Es=a.useCallback(async()=>{const e=Tn.trim();if(!e)return;let n;try{n=await ve(e)}catch{o(s("chat.failedToCreateTag","Failed to create tag"),"error");return}if(G?.sessionId){const r=(ye?.tags??[]).map(d=>d.id);if(!r.includes(n.id))try{await Ce(G.sessionId,[...r,n.id])}catch{o(s("chat.failedToUpdateTags","Failed to update tags"),"error");return}}Fa("")},[o,G,ye,ve,Tn,Ce,s]),qi=Ui?t.jsxs("div",{className:"chat-mobile-session-menu",ref:qa,children:[t.jsxs("button",{type:"button",className:"btn chat-mobile-session-trigger","data-testid":"chat-mobile-session-trigger","aria-haspopup":"menu","aria-expanded":Vt,onClick:()=>Ne(e=>!e),children:[qe?t.jsx(ma,{provider:qe,size:"md"}):t.jsx(yn,{size:16}),t.jsx("span",{className:"chat-thread-header-title",children:Bi}),t.jsx(hn,{size:16,"aria-hidden":"true"})]}),Vt&&t.jsxs("div",{className:"chat-mobile-session-dropdown",role:"menu","data-testid":"chat-mobile-session-dropdown",children:[[{id:"pinned",label:s("chat.pinned","Pinned"),testId:"chat-mobile-pinned-divider",sessions:As},{id:"recent",label:s("chat.recent","Recent"),testId:"chat-mobile-recent-divider",sessions:Ts}].filter(e=>e.sessions.length>0).map(e=>t.jsxs("section",{className:"chat-session-section","data-testid":`chat-mobile-session-section-${e.id}`,children:[t.jsx("div",{className:"chat-pinned-divider","data-testid":e.testId,children:e.label}),e.sessions.map(n=>t.jsxs("div",{className:`chat-mobile-session-option-row${l?.id===n.id?" chat-mobile-session-option-row--active":""}`,role:"none",children:[t.jsx("button",{type:"button",role:"menuitem",className:`chat-mobile-session-option${l?.id===n.id?" chat-mobile-session-option--active":""}`,"data-testid":`chat-mobile-session-option-${n.id}`,onClick:()=>ps(n.id),children:t.jsxs("span",{className:"chat-mobile-session-option-title",children:[n.title||s("chat.untitledSession","Untitled"),n.pinnedAt?t.jsx(fn,{className:"chat-session-pinned-indicator",size:14,"data-testid":`chat-session-pinned-indicator-${n.id}`,"aria-label":s("chat.pinned","Pinned")}):null]})}),t.jsx("button",{type:"button",className:"btn-icon chat-mobile-session-pin","data-testid":`chat-mobile-session-pin-${n.id}`,"aria-label":n.pinnedAt?s("chat.unpinConversationAria","Unpin conversation {{title}}",{title:n.title||s("chat.untitledSession","Untitled")}):s("chat.pinConversationAria","Pin conversation {{title}}",{title:n.title||s("chat.untitledSession","Untitled")}),title:!n.pinnedAt&&c>=3?s("chat.pinLimit","You can pin up to 3 conversations"):void 0,disabled:!n.pinnedAt&&c>=3,onClick:()=>gs(n.id,!n.pinnedAt),children:n.pinnedAt?t.jsx(Ps,{size:14}):t.jsx(fn,{size:14})}),t.jsx("button",{type:"button",className:"btn-icon chat-mobile-session-archive","data-testid":`chat-mobile-session-archive-${n.id}`,"aria-label":s("chat.archive","Archive"),onClick:()=>void ms(n.id),children:t.jsx(Fs,{size:14})}),t.jsx("button",{type:"button",className:"btn-icon chat-mobile-session-rename","data-testid":`chat-mobile-session-rename-${n.id}`,"aria-label":s("chat.renameConversationAria","Rename conversation {{title}}",{title:n.title||s("chat.untitledSession","Untitled")}),onClick:()=>hs(n.id),children:t.jsx(ha,{size:14})})]},n.id))]},e.id)),t.jsxs("button",{type:"button",role:"menuitem",className:"chat-mobile-session-new","data-testid":"chat-mobile-session-new",onClick:()=>{Ne(!1),sn()},children:[t.jsx(pt,{size:16,"aria-hidden":"true"}),t.jsx("span",{children:s("chat.newChat","New Chat")})]})]})]}):null,Gi=t.jsxs("div",{className:"chat-sidebar-scope-toggle chat-view-header-scope-toggle",role:"tablist","data-testid":"chat-sidebar-scope-toggle",children:[t.jsxs("button",{type:"button",role:"tab",className:`chat-sidebar-scope-btn${P==="direct"?" chat-sidebar-scope-btn--active":""}`,"aria-selected":P==="direct","data-testid":"chat-sidebar-scope-direct",onClick:()=>Qe("direct"),children:[t.jsx(wn,{size:14,"aria-hidden":"true"}),t.jsx("span",{children:s("chat.scopeDirect","Direct")})]}),t.jsxs("button",{type:"button",role:"tab",className:`chat-sidebar-scope-btn${P==="rooms"?" chat-sidebar-scope-btn--active":""}`,"aria-selected":P==="rooms","data-testid":"chat-sidebar-scope-rooms",onClick:()=>Qe("rooms"),children:[t.jsx(mi,{size:14,"aria-hidden":"true"}),t.jsx("span",{children:s("chat.scopeRooms","Rooms")})]})]});return t.jsxs("div",{ref:Za,className:`chat-view${m?" chat-view--floating":""}${H?" chat-view--narrow":""}${xs?" chat-view--mobile-direct-thread":""}`,children:[t.jsx(Io,{icon:wn,title:s("chat.title","Chat"),actions:t.jsxs(t.Fragment,{children:[xs?t.jsxs(t.Fragment,{children:[t.jsx("button",{className:"btn-icon chat-back-btn",onClick:Zn,"data-testid":"chat-back-btn","aria-label":s("chat.backToConversations","Back to conversations"),children:t.jsx($s,{size:16})}),qi]}):Gi,H?null:t.jsxs("button",{className:"btn btn-sm btn-primary chat-view-header-new-chat",onClick:sn,"data-testid":"chat-new-btn",children:[t.jsx(pt,{size:14}),s("chat.newChat","New Chat")]}),!m&&u?t.jsx("button",{type:"button",className:"btn-icon chat-view-header-icon",onClick:u,"aria-label":s("chat.popOut","Pop out chat"),title:s("chat.popOut","Pop out chat"),"data-testid":"chat-pop-out",children:t.jsx(_s,{size:16})}):null,m&&h?t.jsx("button",{type:"button",className:"btn-icon chat-view-header-icon",onClick:h,"aria-label":s("chat.maximizeToChatView","Open in Chat view"),title:s("chat.maximizeToChatView","Open in Chat view"),"data-testid":"chat-modal-maximize",children:t.jsx(_s,{size:16})}):null,m&&k?t.jsx("button",{type:"button",className:"btn-icon chat-view-header-icon",onClick:k,"aria-label":s("chat.minimizeToQuickChat","Minimize to quick chat"),title:s("chat.minimizeToQuickChat","Minimize to quick chat"),"data-testid":"chat-modal-minimize",children:t.jsx(Lo,{size:16})}):null,m&&C?t.jsx("button",{type:"button",className:"btn-icon chat-view-header-icon",onClick:C,"aria-label":s("chat.closeChat","Close chat"),title:s("chat.closeChat","Close chat"),"data-testid":"chat-modal-close",children:t.jsx(zs,{size:16})}):null]})}),t.jsxs("div",{className:"chat-view__body",children:[t.jsxs("div",{className:`chat-sidebar${yt?"":" chat-sidebar--hidden"}`,style:Xi,children:[P==="direct"?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"chat-sidebar-search-container",children:[t.jsxs("div",{className:"chat-sidebar-search-wrapper",children:[t.jsx(Po,{size:14,className:"chat-sidebar-search-icon"}),t.jsx("input",{type:"text",className:"chat-sidebar-search",placeholder:s("chat.searchConversations","Search conversations..."),value:pi,onChange:e=>vi(e.target.value),"data-testid":"chat-search-input"})]}),t.jsxs("label",{className:"chat-tag-filter",htmlFor:"chat-tag-filter",children:[t.jsx(Oo,{size:14,"aria-hidden":"true"}),t.jsxs("select",{id:"chat-tag-filter",value:_??"",onChange:e=>J(e.target.value||null),"data-testid":"chat-tag-filter","aria-label":s("chat.filterByTag","Filter conversations by tag"),children:[t.jsx("option",{value:"",children:s("chat.allTags","All tags")}),A.map(e=>t.jsx("option",{value:e.id,children:e.name},e.id))]}),_?t.jsx("button",{type:"button",className:"btn-icon","aria-label":s("chat.clearTagFilter","Clear tag filter"),onClick:()=>J(null),children:t.jsx(zs,{size:14})}):null]})]}),t.jsx("div",{className:"chat-archived-toggle",children:t.jsx("button",{type:"button",className:"btn btn-sm btn-secondary","data-testid":"chat-archived-toggle",onClick:()=>{const e=!Ye;wi(e),e&&$()},children:Ye?"Active conversations":"Archived conversations"})}),t.jsx("div",{className:"chat-session-list chat-sidebar-list",children:L?t.jsx("div",{className:"chat-empty-state chat-empty-state--padded",children:s("chat.loadingConversations","Loading...")}):(Ye?R:Be).length===0?t.jsx("div",{className:"chat-empty-state chat-empty-state--padded",children:s("chat.noConversationsYet","No conversations yet")}):t.jsx(t.Fragment,{children:[{id:"pinned",label:s("chat.pinned","Pinned"),testId:"chat-pinned-divider",sessions:As},{id:"recent",label:s("chat.recent","Recent"),testId:"chat-recent-divider",sessions:Ts}].filter(e=>e.sessions.length>0).map(e=>t.jsxs("section",{className:"chat-session-section","data-testid":`chat-session-section-${e.id}`,children:[t.jsx("div",{className:"chat-pinned-divider","data-testid":e.testId,children:e.label}),e.sessions.map(n=>{const r=l?.id===n.id,d=!r&&Da("direct",n.id,n.lastMessageAt??n.updatedAt),w=ri(n,be.get(n.agentId)??null,Bt),z=Ls(w?.provider,w?.modelId)??"Fusion",W=n.title||s("chat.untitledSession","Untitled");return t.jsxs("div",{className:`chat-session-item${r?" chat-session-item--active":""}`,onClick:()=>ps(n.id),onContextMenu:K=>{K.preventDefault(),Ia(n.id,K.clientX,K.clientY)},"data-testid":Ye?`chat-archived-session-${n.id}`:`chat-session-${n.id}`,children:[t.jsx("button",{type:"button",className:"btn-icon chat-session-menu-btn","data-testid":"chat-session-menu-btn","aria-label":s("chat.conversationActionsAria","Conversation actions for {{title}}",{title:W}),"aria-haspopup":"menu","aria-expanded":G?.sessionId===n.id,onClick:K=>{if(K.stopPropagation(),G?.sessionId===n.id){Se(null);return}const pe=K.currentTarget.getBoundingClientRect();Ia(n.id,pe.right,pe.bottom,{anchorRight:!0})},children:t.jsx(Fo,{size:14})}),t.jsxs("div",{className:"chat-session-title",children:[W,n.pinnedAt?t.jsx(fn,{className:"chat-session-pinned-indicator",size:14,"data-testid":`chat-session-pinned-indicator-${n.id}`,"aria-label":s("chat.pinned","Pinned")}):null,d?t.jsx("span",{className:"chat-unread-dot","data-testid":`chat-unread-dot-${n.id}`,"aria-label":s("chat.unreadMessages","Unread messages")}):null]}),t.jsx("div",{className:"chat-session-preview",children:n.lastMessagePreview||s("chat.noMessages","No messages")}),(n.tags??[]).length>0?t.jsx("div",{className:"chat-session-tags","data-testid":`chat-session-tags-${n.id}`,children:(n.tags??[]).map(K=>t.jsx("span",{className:"chat-session-tag",children:K.name},K.id))}):null,n.matchedMessagePreview?t.jsx("div",{className:"chat-session-preview chat-session-preview--matched","data-testid":`chat-session-matched-preview-${n.id}`,children:s("chat.matchedInMessage",'Matched: "{{preview}}"',{preview:n.matchedMessagePreview})}):null,Ye?t.jsx("button",{type:"button",className:"btn btn-sm btn-secondary","data-testid":`chat-archived-restore-${n.id}`,onClick:K=>{K.stopPropagation(),Li(n.id)},children:"Restore"}):null,t.jsxs("div",{className:"chat-session-meta",children:[t.jsxs("span",{className:"chat-session-meta-model",children:[w?.provider?t.jsx(ma,{provider:w.provider,size:"sm"}):null,t.jsx("span",{children:be.get(n.agentId)?.name||(n.agentId===ke?z:n.agentId.slice(0,30))})]}),t.jsx("span",{children:n.updatedAt?ur(n.updatedAt,s):""})]})]},n.id)})]},e.id))})})]}):t.jsxs("div",{className:"chat-sidebar-rooms","data-testid":"chat-sidebar-rooms",children:[!H&&t.jsx("div",{className:"chat-sidebar-rooms-header","data-testid":"chat-sidebar-rooms-header",children:t.jsxs("button",{type:"button",className:"btn btn-sm btn-primary","data-testid":"chat-create-room-btn",onClick:()=>zt(!0),children:[t.jsx(pt,{size:14}),s("chat.createRoom","Create room")]})}),x.rooms.length===0?t.jsx("div",{className:"chat-sidebar-rooms-empty","data-testid":"chat-sidebar-rooms-empty",children:s("chat.noRoomsYet","No rooms yet.")}):t.jsx("div",{className:"chat-session-list chat-sidebar-list",children:x.rooms.map(e=>{const n=x.activeRoom?.id===e.id,r=!n&&Da("room",e.id,e.updatedAt);return t.jsxs("div",{role:"button",tabIndex:0,className:`chat-room-item${n?" chat-room-item--active":""}`,"data-testid":`chat-room-item-${e.slug}`,onClick:()=>{de("room",e.id,e.updatedAt),x.selectRoom(e.id),H&&He(!1)},onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),de("room",e.id,e.updatedAt),x.selectRoom(e.id),H&&He(!1))},children:[t.jsxs("span",{className:"chat-room-item-details",children:[t.jsxs("span",{className:"chat-room-item-name-row",children:[t.jsxs("span",{className:"chat-room-item-name",children:["#",e.name]}),r?t.jsx("span",{className:"chat-unread-dot","data-testid":`chat-unread-dot-${e.id}`,"aria-label":s("chat.unreadMessages","Unread messages")}):null]}),n?t.jsx("span",{className:"chat-room-item-meta",children:s("chat.roomMemberCount","{{count}} member",{count:x.activeRoomMembers.length,defaultValue_one:"{{count}} member",defaultValue_other:"{{count}} members"})}):null]}),t.jsx("button",{type:"button",className:"btn-icon chat-room-item-delete","data-testid":`chat-room-delete-${e.slug}`,"aria-label":s("chat.deleteRoom","Delete room {{name}}",{name:e.name}),onClick:d=>{d.stopPropagation(),$t(e.id)},children:t.jsx(fa,{size:14})})]},e.id)})})]}),P==="rooms"?H?t.jsx("div",{className:"chat-sidebar-footer",children:t.jsxs("button",{type:"button",className:"btn btn-sm btn-primary chat-sidebar-footer-btn","data-testid":"chat-create-room-btn",onClick:()=>zt(!0),children:[t.jsx(pt,{size:14}),s("chat.createRoom","Create room")]})}):null:H?t.jsx("div",{className:"chat-sidebar-footer",children:t.jsxs("button",{className:"btn btn-sm btn-primary chat-sidebar-footer-btn",onClick:sn,"data-testid":"chat-new-btn",children:[t.jsx(pt,{size:14}),s("chat.newChat","New Chat")]})}):null]}),!H&&yt&&!Rt&&t.jsx("div",{className:"chat-sidebar-resize-handle",role:"separator","aria-orientation":"vertical","aria-valuemin":vn,"aria-valuemax":bn,"aria-valuenow":Je,"aria-label":s("chat.resizeSidebar","Resize chat sidebar"),tabIndex:0,onPointerDown:Fi,onKeyDown:$i}),G&&t.jsxs("div",{className:"chat-session-context-menu",ref:Rn,role:"menu",style:{top:G.y,left:G.x},onClick:e=>e.stopPropagation(),children:[t.jsxs("button",{onClick:()=>gs(G.sessionId,!ye?.pinnedAt),"data-testid":"chat-context-pin",title:c>=3&&!ye?.pinnedAt?s("chat.pinLimit","You can pin up to 3 conversations"):void 0,disabled:c>=3&&!ye?.pinnedAt,children:[ye?.pinnedAt?t.jsx(Ps,{size:14}):t.jsx(fn,{size:14}),ye?.pinnedAt?s("chat.unpin","Unpin"):s("chat.pin","Pin")]}),t.jsxs("button",{onClick:()=>hs(G.sessionId),"data-testid":"chat-context-rename",children:[t.jsx(ha,{size:14}),s("chat.rename","Rename")]}),t.jsxs("div",{className:"chat-session-tag-menu",role:"group","aria-label":s("chat.conversationTags","Conversation tags"),children:[A.map(e=>{const n=(ye?.tags??[]).some(r=>r.id===e.id);return t.jsxs("div",{className:"chat-tag-menu-item",children:[t.jsxs("button",{type:"button",role:"menuitemcheckbox","aria-checked":n,"data-testid":`chat-context-tag-${e.id}`,onClick:()=>void Ce(G.sessionId,n?(ye?.tags??[]).filter(r=>r.id!==e.id).map(r=>r.id):[...(ye?.tags??[]).map(r=>r.id),e.id]).catch(()=>o(s("chat.failedToUpdateTags","Failed to update tags"),"error")),children:[n?"✓ ":"",e.name]}),t.jsx("button",{type:"button",className:"btn-icon","aria-label":s("chat.renameTag","Rename tag {{name}}",{name:e.name}),"data-testid":`chat-context-rename-tag-${e.id}`,onClick:r=>{r.stopPropagation(),$a(e.name),xt(e)},children:t.jsx(ha,{size:14})}),t.jsx("button",{type:"button",className:"btn-icon","aria-label":s("chat.deleteTag","Delete tag {{name}}",{name:e.name}),"data-testid":`chat-context-delete-tag-${e.id}`,onClick:r=>{r.stopPropagation(),_t(e)},children:t.jsx(fa,{size:14})})]},e.id)}),t.jsxs("div",{className:"chat-tag-create-row",children:[t.jsx("input",{className:"input",value:Tn,placeholder:s("chat.newTag","New tag"),"aria-label":s("chat.newTag","New tag"),onChange:e=>Fa(e.target.value),onKeyDown:e=>{e.key==="Enter"&&(e.preventDefault(),Es())}}),t.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>void Es(),children:s("chat.addTag","Add")})]})]}),t.jsxs("button",{onClick:()=>ms(G.sessionId),"data-testid":"chat-context-archive",children:[t.jsx(Fs,{size:14}),s("chat.archive","Archive")]}),t.jsxs("button",{onClick:()=>{Se(null),Ft(G.sessionId)},"data-testid":"chat-context-delete",children:[t.jsx(fa,{size:14}),s("chat.delete","Delete")]})]}),Lt&&t.jsx("div",{className:"chat-new-dialog-backdrop chat-view-dialog-backdrop",onClick:()=>Pt(null),children:t.jsxs("div",{className:"chat-new-dialog chat-view-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"chat-rename-dialog-title",onClick:e=>e.stopPropagation(),children:[t.jsx("h3",{id:"chat-rename-dialog-title",children:s("chat.renameConversationTitle","Rename Conversation")}),t.jsx("p",{className:"chat-view-delete-dialog-copy",children:s("chat.renameConversationBody","Choose a new name for this conversation. Leave it blank to show Untitled.")}),t.jsx("label",{className:"chat-rename-label",htmlFor:"chat-rename-input",children:s("chat.conversationName","Conversation name")}),t.jsx("input",{id:"chat-rename-input",className:"input chat-rename-input",type:"text",value:jn,placeholder:s("chat.renamePlaceholder","Untitled"),"data-testid":"chat-rename-input",onChange:e=>An(e.target.value),onKeyDown:e=>{e.key==="Enter"&&(e.preventDefault(),fs())},autoFocus:!0}),t.jsxs("div",{className:"chat-new-dialog-actions",children:[t.jsx("button",{className:"btn btn-sm",onClick:()=>Pt(null),children:s("chat.cancel","Cancel")}),t.jsx("button",{className:"btn btn-sm btn-primary",onClick:()=>void fs(),"data-testid":"chat-rename-save",children:s("chat.save","Save")})]})]})}),En&&t.jsx("div",{className:"chat-new-dialog-backdrop chat-view-dialog-backdrop",onClick:()=>xt(null),children:t.jsxs("div",{className:"chat-new-dialog chat-view-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"chat-rename-tag-dialog-title",onClick:e=>e.stopPropagation(),children:[t.jsx("h3",{id:"chat-rename-tag-dialog-title",children:s("chat.renameTagTitle","Rename tag")}),t.jsx("label",{className:"chat-rename-label",htmlFor:"chat-rename-tag-input",children:s("chat.tagName","Tag name")}),t.jsx("input",{id:"chat-rename-tag-input",className:"input chat-rename-input",value:Dn,"data-testid":"chat-rename-tag-input",onChange:e=>$a(e.target.value),onKeyDown:e=>{e.key==="Enter"&&(e.preventDefault(),ee(En.id,Dn).then(()=>xt(null)).catch(()=>o(s("chat.failedToRenameTag","Failed to rename tag"),"error")))},autoFocus:!0}),t.jsxs("div",{className:"chat-new-dialog-actions",children:[t.jsx("button",{className:"btn btn-sm",onClick:()=>xt(null),children:s("chat.cancel","Cancel")}),t.jsx("button",{className:"btn btn-sm btn-primary","data-testid":"chat-rename-tag-save",onClick:()=>void ee(En.id,Dn).then(()=>xt(null)).catch(()=>o(s("chat.failedToRenameTag","Failed to rename tag"),"error")),children:s("chat.save","Save")})]})]})}),_a&&t.jsx("div",{className:"chat-new-dialog-backdrop chat-view-dialog-backdrop",onClick:()=>_t(null),children:t.jsxs("div",{className:"chat-new-dialog chat-view-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"chat-delete-tag-dialog-title",onClick:e=>e.stopPropagation(),children:[t.jsx("h3",{id:"chat-delete-tag-dialog-title",children:s("chat.deleteTagTitle","Delete tag?")}),t.jsx("p",{className:"chat-view-delete-dialog-copy",children:s("chat.deleteTagBody","This removes the tag from all conversations, but does not delete conversations.")}),t.jsxs("div",{className:"chat-new-dialog-actions",children:[t.jsx("button",{className:"btn btn-sm",onClick:()=>_t(null),children:s("chat.cancel","Cancel")}),t.jsx("button",{className:"btn btn-sm btn-danger","data-testid":"chat-delete-tag-confirm",onClick:()=>void he(_a.id).then(()=>_t(null)).catch(()=>o(s("chat.failedToDeleteTag","Failed to delete tag"),"error")),children:s("chat.delete","Delete")})]})]})}),La&&t.jsx("div",{className:"chat-new-dialog-backdrop chat-view-dialog-backdrop",onClick:()=>Ft(null),children:t.jsxs("div",{className:"chat-new-dialog chat-view-dialog",onClick:e=>e.stopPropagation(),children:[t.jsx("h3",{children:s("chat.deleteConversationTitle","Delete Conversation?")}),t.jsx("p",{className:"chat-view-delete-dialog-copy",children:s("chat.deleteConversationBody","This action cannot be undone. All messages in this conversation will be permanently deleted.")}),t.jsxs("div",{className:"chat-new-dialog-actions",children:[t.jsx("button",{className:"btn btn-sm",onClick:()=>Ft(null),children:s("chat.cancel","Cancel")}),t.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>void Pi(La),children:s("chat.delete","Delete")})]})]})}),Pa&&t.jsx("div",{className:"chat-new-dialog-backdrop chat-view-dialog-backdrop",onClick:()=>$t(null),children:t.jsxs("div",{className:"chat-new-dialog chat-view-dialog",onClick:e=>e.stopPropagation(),children:[t.jsx("h3",{children:s("chat.deleteRoomTitle","Delete Room?")}),t.jsx("p",{className:"chat-view-delete-dialog-copy",children:s("chat.deleteRoomBody","This action cannot be undone. This room and all its messages will be permanently deleted.")}),t.jsxs("div",{className:"chat-new-dialog-actions",children:[t.jsx("button",{className:"btn btn-sm",onClick:()=>$t(null),children:s("chat.cancel","Cancel")}),t.jsx("button",{className:"btn btn-sm btn-danger",onClick:()=>{(async()=>{try{await x.deleteRoom(Pa),$t(null)}catch{o(s("chat.failedToDeleteRoom","Failed to delete room"),"error")}})()},children:s("chat.delete","Delete")})]})]})}),P==="rooms"?t.jsxs("div",{ref:zn,className:"chat-thread",children:[x.activeRoom?t.jsxs(t.Fragment,{children:[(!H||ys)&&t.jsxs("div",{className:"chat-room-thread-header",children:[ys&&t.jsx("button",{className:"btn-icon",onClick:ea,"data-testid":"chat-back-btn",children:t.jsx($s,{size:16})}),t.jsxs("div",{className:"chat-room-switcher-menu",ref:Ga,children:[t.jsxs("button",{type:"button",className:"chat-room-switcher-trigger","data-testid":"chat-room-switcher-trigger","aria-haspopup":"menu","aria-expanded":Wt,onClick:()=>St(e=>!e),children:[t.jsxs("span",{className:"chat-thread-header-title",children:["#",x.activeRoom.name]}),t.jsx(hn,{size:16,"aria-hidden":"true"})]}),Wt&&t.jsx("div",{role:"menu",className:"chat-room-switcher-dropdown","data-testid":"chat-room-switcher-dropdown",children:x.rooms.map(e=>t.jsxs("button",{type:"button",role:"menuitem",className:`chat-room-switcher-option${e.id===x.activeRoom?.id?" chat-room-switcher-option--active":""}`,"data-testid":`chat-room-switcher-option-${e.id}`,onClick:()=>{de("room",e.id,e.updatedAt),x.selectRoom(e.id),St(!1)},children:["#",e.name]},e.id))})]}),t.jsx("div",{className:"chat-room-thread-members",children:x.activeRoomMembers.map(e=>t.jsx(kn,{agent:be.get(e.agentId)??{id:e.agentId,name:e.agentId.slice(0,30)}},e.agentId))})]}),t.jsxs("div",{className:"chat-messages",ref:re,onScroll:ss,children:[x.messagesLoading?t.jsx("div",{className:"chat-empty-state",children:s("chat.loadingMessages","Loading messages...")}):x.messages.filter(e=>e.content.trim()!==ti).length===0?t.jsx("div",{className:"chat-empty-state",children:s("chat.noMessagesYet","No messages yet. Start the conversation!")}):x.messages.filter(e=>e.content.trim()!==ti).map(e=>{const n=e.senderAgentId?be.get(e.senderAgentId)?.name??e.senderAgentId.slice(0,30):s("chat.you","You"),r={id:e.id,sessionId:e.roomId,role:e.role,content:e.content,thinkingOutput:e.thinkingOutput??void 0,toolCalls:void 0,fallbackInfo:void 0,attachments:e.attachments,createdAt:e.createdAt};return t.jsx(ga,{message:r,forcePlain:!1,agentName:n,hideAssistantIdentity:!1,showAssistantModelTag:!1,activeModelTag:null,activeModelProvider:null,activeSessionId:x.activeRoom?.id??null,projectId:i,mentionAgentsByName:Xn,roomContext:Te,onScrollToTop:la,isTopClipped:Bn.has(e.id),isAwaitingQuestionAnswer:!1,onQuestionSubmit:on},e.id)}),t.jsx("div",{ref:Wa})]}),x.activeRoom&&Ua&&t.jsxs("button",{type:"button",className:"btn btn-sm chat-jump-to-latest","data-testid":"chat-jump-to-latest",onClick:()=>xe("fab-click"),children:[t.jsx(hn,{size:14}),s("chat.latest","Latest")]})]}):t.jsx("div",{className:"chat-room-empty-pane","data-testid":"chat-rooms-empty-pane",children:s("chat.selectRoomOrCreate","Select a room or create one")}),x.activeRoom&&t.jsxs("div",{className:"chat-input-area",children:[t.jsx("input",{ref:Jt,type:"file",accept:oi,multiple:!0,style:{display:"none"},onChange:e=>{mt(e.target.files),e.target.value=""}}),ge.length>0&&t.jsx("div",{className:"chat-attachment-previews","data-testid":"chat-attachment-previews",children:ge.map((e,n)=>t.jsxs("div",{className:"chat-attachment-preview","data-testid":`chat-attachment-preview-${n}`,children:[e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.file.name}):t.jsx("span",{className:"chat-attachment-preview-name",children:e.file.name}),t.jsx("button",{type:"button",className:"chat-attachment-remove",onClick:()=>is(n),"data-testid":`chat-attachment-remove-${n}`,"aria-label":`Remove ${e.file.name}`,children:"×"})]},e.previewUrl||`${e.file.name}-${n}`))}),t.jsxs("div",{className:"chat-input-row",children:[t.jsx("button",{type:"button",className:"btn-icon chat-attach-btn","data-testid":"chat-attach-btn","aria-label":s("chat.attachFiles","Attach files"),onClick:()=>Jt.current?.click(),children:t.jsx(Bs,{size:16})}),t.jsx(qs,{level:x.activeRoom.thinkingLevel,defaultThinkingLevel:N,showTargetSection:!1,onChange:e=>{x.updateRoomSettings(x.activeRoom.id,{thinkingLevel:e||null}).catch(()=>{o(s("chat.failedToUpdateRoomThinkingLevel","Failed to update room thinking effort"),"error")})}}),t.jsxs("div",{className:`chat-input-wrapper${Ha?" chat-input-wrapper--dragover":""}`,onDragOver:e=>{e.preventDefault(),it(!0)},onDragLeave:()=>it(!1),onDrop:e=>{e.preventDefault(),it(!1),mt(e.dataTransfer.files)},children:[t.jsx("textarea",{ref:Ii,className:"chat-input-textarea",placeholder:s("chat.typeMessage","Type a message..."),value:q,onChange:cs,onKeyDown:rs,onKeyUp:ls,onClick:ln,onBlur:ds,onFocus:us,onPaste:os,onTouchStart:e=>{typeof window>"u"||window.innerWidth>768||pa()&&(document.activeElement,e.currentTarget)},rows:1,"data-testid":"chat-input"}),t.jsx(Qs,{agents:lt,filter:tt,highlightedIndex:Ot,visible:Me,onSelect:rn,position:"below",roomMemberIds:Te?.memberIds,roomName:Te?.roomName})]}),t.jsx(Os,{...Ei.micProps}),t.jsx(Hs,{isStreaming:!1,canSend:!!(q.trim()||ge.length>0),onSend:Qn})]})]})]}):t.jsxs("div",{ref:zn,className:"chat-thread",children:[!H&&(na||!H)&&t.jsx("div",{className:"chat-thread-header",children:t.jsxs("div",{className:"chat-thread-header-identity","data-testid":"chat-thread-header-identity",children:[qe?t.jsx(ma,{provider:qe,size:"md"}):t.jsx(yn,{size:16}),t.jsx("span",{className:"chat-thread-header-title",children:bs}),Oi&&t.jsx("span",{className:"chat-model-tag",children:Fe}),Hi&&mn&&aa?t.jsxs("span",{className:"chat-thread-header-context","data-testid":"chat-thread-context-window",title:aa,"aria-label":aa,children:[ws," / ",mn]}):null]})}),da?t.jsx(Yo,{cliSessionId:Wi,tier:Vi,projectId:i,renderTranscript:Ns,renderComposer:()=>l?Rs():null}):t.jsxs(t.Fragment,{children:[Ns(),Ua&&t.jsxs("button",{type:"button",className:"btn btn-sm chat-jump-to-latest","data-testid":"chat-jump-to-latest",onClick:()=>xe("fab-click"),children:[t.jsx(hn,{size:14}),s("chat.latest","Latest")]}),l&&Rs()]})]}),t.jsx(Qo,{isOpen:xi,onClose:()=>zt(!1),projectId:i,existingRoomNames:x.rooms.map(e=>e.name),onCreate:async e=>{await x.createRoom({name:e.name,memberAgentIds:e.memberAgentIds}),P!=="rooms"&&Qe("rooms"),zt(!1),H&&He(!1)}})]}),bi&&t.jsx(vr,{projectId:i,defaultModel:Ci,defaultKind:S?.kind,defaultAgentId:S?.kind==="agent"?S.agentId:void 0,defaultThinkingLevel:N,defaultSelectedThinkingLevel:S?.kind==="model"?S.thinkingLevel:void 0,onClose:()=>Nn(!1),onCreate:ht})]})}export{Rr as ChatView,Nr as buildIssueChatPrefill,dr as clampChatInputHeight,cr as resolveChatContextMenuPosition,lr as resolveChatInputOverflowY,ri as resolveSessionProvider};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.cc-date-range{position:relative;display:inline-block}.cc-date-range-trigger{display:inline-flex;align-items:center;gap:var(--space-xs)}.cc-date-range-popover{position:absolute;top:calc(100% + var(--space-xs));right:0;z-index:20;min-width:16rem;padding:var(--space-md);background:var(--surface-1, #1c1c1c);border:1px solid var(--border-subtle, color-mix(in srgb, #7f7f7f 25%, transparent));border-radius:var(--radius-md, 8px);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--space-md)}.cc-date-range-presets{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.cc-date-range-custom{display:flex;flex-direction:column;gap:var(--space-sm)}.cc-date-range-field{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);font-size:.8125rem;color:var(--text-muted)}.cc-date-range-field input{background:var(--surface-2, color-mix(in srgb, #7f7f7f 12%, transparent));border:1px solid var(--border-subtle, color-mix(in srgb, #7f7f7f 25%, transparent));border-radius:var(--radius-sm, 4px);color:var(--text);padding:var(--space-xs) var(--space-sm)}.cc-bar-chart,.cc-stacked-bar,.cc-sparkline,.cc-token-series,.cc-token-series-plot,.cc-token-series-axis,.cc-line-chart,.cc-radial-gauge,.cc-funnel,.cc-funnel-stage{min-inline-size:0;max-inline-size:100%}.cc-bar-chart{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.cc-bar-row{display:grid;grid-template-columns:minmax(calc(var(--space-2xl) * 2 + var(--space-lg)),32%) minmax(0,1fr) auto;align-items:center;gap:var(--space-sm)}.cc-bar-label{min-inline-size:0;display:inline-flex;align-items:center;gap:var(--space-xs);font-size:.8125rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cc-bar-label>.provider-icon{flex:0 0 auto}.cc-bar-label-text{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cc-model-label{min-inline-size:0;max-inline-size:100%;display:inline-flex;align-items:center;gap:var(--space-xs);vertical-align:middle}.cc-model-label .provider-icon{flex:0 0 auto}.cc-model-label-text{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cc-bar-track{min-inline-size:0;position:relative;block-size:var(--space-md);background:var(--surface-2);border-radius:var(--radius-sm);overflow:hidden}.cc-bar-fill{block-size:100%;background:var(--accent);border-radius:var(--radius-sm);transition:width var(--transition-normal)}.cc-bar-row:nth-child(8n+1) .cc-bar-fill{background:var(--accent)}.cc-bar-row:nth-child(8n+2) .cc-bar-fill{background:var(--todo)}.cc-bar-row:nth-child(8n+3) .cc-bar-fill{background:var(--in-progress)}.cc-bar-row:nth-child(8n+4) .cc-bar-fill{background:var(--in-review)}.cc-bar-row:nth-child(8n+5) .cc-bar-fill{background:var(--triage)}.cc-bar-row:nth-child(8n+6) .cc-bar-fill{background:var(--color-success)}.cc-bar-row:nth-child(8n+7) .cc-bar-fill{background:var(--color-warning)}.cc-bar-row:nth-child(8n) .cc-bar-fill{background:var(--color-error)}.cc-bar-value{min-inline-size:0;font-size:.8125rem;font-variant-numeric:tabular-nums;color:var(--text);overflow-wrap:anywhere;text-align:end}.cc-stacked-bar{display:flex;flex-direction:column;gap:var(--space-sm)}.cc-stacked-track{display:flex;block-size:var(--space-md);background:var(--surface-2);border-radius:var(--radius-sm);overflow:hidden}.cc-stacked-segment{block-size:100%;background:var(--accent);transition:width var(--transition-normal)}.cc-stacked-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-md)}.cc-stacked-legend-item{min-inline-size:0;display:flex;align-items:center;gap:var(--space-xs);font-size:.8125rem;color:var(--text-muted);overflow-wrap:anywhere}.cc-stacked-swatch{inline-size:var(--space-sm);block-size:var(--space-sm);border-radius:var(--radius-sm);background:var(--accent);display:inline-block}.cc-stacked-segment:nth-child(8n+1),.cc-stacked-legend-item:nth-child(8n+1) .cc-stacked-swatch{background:var(--accent)}.cc-stacked-segment:nth-child(8n+2),.cc-stacked-legend-item:nth-child(8n+2) .cc-stacked-swatch{background:var(--todo)}.cc-stacked-segment:nth-child(8n+3),.cc-stacked-legend-item:nth-child(8n+3) .cc-stacked-swatch{background:var(--in-progress)}.cc-stacked-segment:nth-child(8n+4),.cc-stacked-legend-item:nth-child(8n+4) .cc-stacked-swatch{background:var(--in-review)}.cc-stacked-segment:nth-child(8n+5),.cc-stacked-legend-item:nth-child(8n+5) .cc-stacked-swatch{background:var(--triage)}.cc-stacked-segment:nth-child(8n+6),.cc-stacked-legend-item:nth-child(8n+6) .cc-stacked-swatch{background:var(--color-success)}.cc-stacked-segment:nth-child(8n+7),.cc-stacked-legend-item:nth-child(8n+7) .cc-stacked-swatch{background:var(--color-warning)}.cc-stacked-segment:nth-child(8n),.cc-stacked-legend-item:nth-child(8n) .cc-stacked-swatch{background:var(--color-error)}.cc-sparkline{display:flex;align-items:flex-end;gap:1px;block-size:var(--space-2xl)}.cc-sparkline-bar{flex:1 1 0;min-inline-size:1px;background:var(--accent);border-radius:1px;transition:height var(--transition-normal)}.cc-sparkline-bar:nth-child(8n+1){background:var(--accent)}.cc-sparkline-bar:nth-child(8n+2){background:var(--todo)}.cc-sparkline-bar:nth-child(8n+3){background:var(--in-progress)}.cc-sparkline-bar:nth-child(8n+4){background:var(--in-review)}.cc-sparkline-bar:nth-child(8n+5){background:var(--triage)}.cc-sparkline-bar:nth-child(8n+6){background:var(--color-success)}.cc-sparkline-bar:nth-child(8n+7){background:var(--color-warning)}.cc-sparkline-bar:nth-child(8n){background:var(--color-error)}.cc-token-series{display:flex;flex-direction:column;gap:var(--space-sm);min-inline-size:0}.cc-token-series-plot{display:flex;align-items:flex-end;gap:var(--space-xs);block-size:clamp(calc(var(--space-2xl) * 2),24vw,calc(var(--space-2xl) * 5));padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 10%,transparent),transparent),var(--surface-1);overflow:hidden}.cc-token-series-bar{flex:1 1 0;min-inline-size:var(--space-xs);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 45%,var(--surface-2)));box-shadow:0 0 var(--space-sm) color-mix(in srgb,var(--accent) 24%,transparent);transition:height var(--transition-normal);animation:cc-token-series-rise var(--duration-normal) ease-out both}.cc-token-series-empty{inline-size:100%;block-size:2px;align-self:flex-end;border-radius:var(--radius-pill);background:var(--border-subtle)}.cc-token-series-axis{display:flex;justify-content:space-between;gap:var(--space-sm);color:var(--text-muted);font-size:.75rem;font-variant-numeric:tabular-nums}.cc-token-series-axis span{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cc-token-series-axis span:last-child{text-align:end}@keyframes cc-token-series-rise{0%{transform:scaleY(.82);opacity:.72}to{transform:scaleY(1);opacity:1}}@media(prefers-reduced-motion:reduce){.cc-token-series-bar{transition:none;animation:none}}@media(max-width:768px){.cc-token-series-plot{block-size:clamp(calc(var(--space-2xl) + var(--space-xl)),38vw,calc(var(--space-2xl) * 4));padding:var(--space-sm)}}.cc-line-chart{display:block;inline-size:100%;block-size:clamp(calc(var(--space-2xl) * 2),22vw,calc(var(--space-2xl) * 5));aspect-ratio:5 / 2;color:var(--accent);overflow:hidden}.cc-line-chart-series{color:var(--accent)}.cc-line-chart-series:nth-child(2n){color:var(--color-success)}.cc-line-chart-series:nth-child(3n){color:var(--color-warning)}.cc-line-chart-path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;animation:cc-line-chart-draw calc(var(--duration-slow) * 4) ease-out forwards}.cc-line-chart-point{fill:var(--surface-1);stroke:currentColor;stroke-width:2px}@keyframes cc-line-chart-draw{to{stroke-dashoffset:0}}@media(prefers-reduced-motion:reduce){.cc-line-chart-path{animation:none;stroke-dashoffset:0}}@media(max-width:768px){.cc-line-chart{block-size:clamp(calc(var(--space-2xl) * 2),44vw,calc(var(--space-2xl) * 4));aspect-ratio:auto}}.cc-recharts-chart,.cc-recharts-empty{inline-size:100%;block-size:calc(var(--space-2xl) * 7 + var(--space-lg));min-inline-size:0}.cc-recharts-chart .recharts-wrapper{inline-size:100%!important;max-inline-size:100%}.cc-recharts-chart .recharts-legend-wrapper{inset-inline:0!important;inset-block-start:auto!important;inset-block-end:0!important;inline-size:100%!important;max-inline-size:100%;overflow:hidden}.cc-recharts-chart .recharts-default-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs) var(--space-sm);inline-size:100%;max-inline-size:100%;margin:0;padding:0}.cc-recharts-chart .recharts-legend-item{display:inline-flex!important;align-items:center;max-inline-size:min(100%,calc(var(--space-2xl) * 5));margin-inline-end:0!important;min-inline-size:0}.cc-recharts-chart .recharts-legend-item-text{display:inline-block;min-inline-size:0;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}@media(max-width:768px){.cc-recharts-chart,.cc-recharts-empty{block-size:calc(var(--space-2xl) * 8 + var(--space-md))}.cc-model-label{max-inline-size:100%}}.cc-radial-gauge{min-inline-size:0;display:grid;place-items:center;gap:var(--space-sm);color:var(--text)}.cc-radial-gauge-ring{position:relative;display:grid;place-items:center;inline-size:clamp(calc(var(--space-2xl) * 3),32vw,calc(var(--space-2xl) * 4 + var(--space-lg)));aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at center,var(--surface-1) 0 54%,transparent 55%),conic-gradient(var(--accent) var(--cc-radial-value),var(--surface-2) 0);box-shadow:0 0 var(--space-lg) color-mix(in srgb,var(--accent) 35%,transparent);isolation:isolate;animation:cc-radial-gauge-pulse calc(var(--duration-slow) * 6) ease-in-out infinite}.cc-radial-gauge-ring:before{content:"";position:absolute;inset:var(--space-sm);border-radius:inherit;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:inset 0 0 var(--space-md) color-mix(in srgb,var(--accent) 22%,transparent);animation:cc-radial-gauge-sweep calc(var(--duration-slow) * 8) linear infinite}.cc-radial-gauge-core{position:relative;z-index:1;display:grid;place-items:center;inline-size:58%;aspect-ratio:1;background:var(--surface-1);border-radius:50%;box-shadow:inset 0 0 var(--space-md) var(--surface-2)}.cc-radial-gauge-value{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums}.cc-radial-gauge-label{max-inline-size:100%;color:var(--text-muted);font-size:.8125rem;overflow-wrap:anywhere;text-align:center}@keyframes cc-radial-gauge-pulse{0%,to{filter:saturate(1)}50%{filter:saturate(1.35)}}@keyframes cc-radial-gauge-sweep{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@media(prefers-reduced-motion:reduce){.cc-radial-gauge-ring,.cc-radial-gauge-ring:before{animation:none}}.cc-funnel{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.cc-funnel-stage{display:flex;flex-direction:column;gap:var(--space-xs)}.cc-funnel-header{min-inline-size:0;display:flex;justify-content:space-between;gap:var(--space-sm);font-size:.8125rem;color:var(--text-muted)}.cc-funnel-label,.cc-funnel-conversion,.cc-funnel-value{min-inline-size:0;overflow-wrap:anywhere}.cc-funnel-conversion{flex:0 1 auto;text-align:end}.cc-funnel-conversion{font-variant-numeric:tabular-nums}.cc-funnel-track{block-size:var(--space-lg);background:var(--surface-2);border-radius:var(--radius-sm);overflow:hidden}.cc-funnel-fill{block-size:100%;background:var(--accent);border-radius:var(--radius-sm);transition:width var(--transition-normal)}.cc-funnel-stage:nth-child(8n+1) .cc-funnel-fill{background:var(--accent)}.cc-funnel-stage:nth-child(8n+2) .cc-funnel-fill{background:var(--todo)}.cc-funnel-stage:nth-child(8n+3) .cc-funnel-fill{background:var(--in-progress)}.cc-funnel-stage:nth-child(8n+4) .cc-funnel-fill{background:var(--in-review)}.cc-funnel-stage:nth-child(8n+5) .cc-funnel-fill{background:var(--triage)}.cc-funnel-stage:nth-child(8n+6) .cc-funnel-fill{background:var(--color-success)}.cc-funnel-stage:nth-child(8n+7) .cc-funnel-fill{background:var(--color-warning)}.cc-funnel-stage:nth-child(8n) .cc-funnel-fill{background:var(--color-error)}.cc-funnel-value{font-size:.8125rem;font-variant-numeric:tabular-nums;color:var(--text)}.cc-chart-skeleton{block-size:var(--space-md);border-radius:var(--radius-sm);background:var(--surface-2);animation:cc-chart-pulse var(--duration-slow) ease-in-out infinite}@keyframes cc-chart-pulse{0%,to{opacity:.4}50%{opacity:.9}}@media(max-width:768px){.cc-bar-row{grid-template-columns:minmax(0,1fr) minmax(calc(var(--space-2xl) + var(--space-lg)),2fr);align-items:start}.cc-bar-label{max-inline-size:100%}.cc-bar-value{grid-column:1 / -1;justify-self:end;max-inline-size:100%}.cc-radial-gauge-ring{inline-size:clamp(calc(var(--space-2xl) * 2 + var(--space-lg)),44vw,calc(var(--space-2xl) * 4))}.cc-sparkline{block-size:clamp(var(--space-2xl),18vw,calc(var(--space-2xl) + var(--space-xl)))}}.cc-area{display:flex;flex-direction:column;gap:var(--space-lg);min-inline-size:0}.cc-area-section{display:flex;flex-direction:column;gap:var(--space-md);min-inline-size:0}.cc-area-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.cc-area-section-title{margin:0;font-size:.8125rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.cc-area .cc-recharts-chart,.cc-area .cc-recharts-empty{inline-size:100%;block-size:calc(var(--space-2xl) * 7 + var(--space-lg));min-inline-size:0}.cc-area .cc-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(var(--space-2xl) * 5)),1fr));gap:var(--space-md)}.cc-stat-sub{font-size:.75rem;color:var(--text-muted)}.cc-token-granularity{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-xs)}.cc-token-granularity .btn.active{border-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 14%,var(--surface-1))}@media(prefers-reduced-motion:reduce){.cc-token-count-live{animation:none}}@media(max-width:768px){.cc-area-section-header{align-items:flex-start;flex-direction:column}.cc-token-granularity{justify-content:flex-start;inline-size:100%}}.cc-table-wrap{max-inline-size:100%;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1);overflow-x:auto;overflow-y:hidden}.cc-table{inline-size:100%;border-collapse:collapse;font-size:.8125rem;font-variant-numeric:tabular-nums}.cc-table th,.cc-table td{padding:var(--space-sm) var(--space-md);text-align:right;border-bottom:1px solid var(--border-subtle);white-space:nowrap}.cc-table th:first-child,.cc-table td:first-child{text-align:left}.cc-table thead th{color:var(--text-muted);font-weight:600}.cc-table th.cc-sortable{cursor:pointer;user-select:none}.cc-table th.cc-sortable:hover{color:var(--text)}.cc-table tbody tr{cursor:pointer}.cc-table tbody tr.cc-row-selected{background:var(--surface-2)}.cc-table tbody tr.cc-row-selected td{color:var(--text)}.cc-github-resolved-table-wrap{box-shadow:var(--shadow-sm)}.cc-github-resolved-table{table-layout:fixed}.cc-github-resolved-table th,.cc-github-resolved-table td{border-color:var(--border-subtle);white-space:normal}.cc-github-resolved-table thead th{background:var(--surface-2)}.cc-github-resolved-table th:first-child,.cc-github-resolved-table td:first-child{inline-size:28%}.cc-github-resolved-table th:nth-child(2),.cc-github-resolved-table td:nth-child(2){inline-size:48%;text-align:left}.cc-github-resolved-table th:last-child,.cc-github-resolved-table td:last-child{inline-size:24%}.cc-github-resolved-table tbody tr{cursor:default;transition:background-color var(--duration-fast) ease}.cc-github-resolved-table tbody tr:hover{background:color-mix(in srgb,var(--accent) 8%,var(--surface-1))}.cc-github-resolved-table tbody tr:last-child td{border-block-end:0}.cc-github-resolved-issue-cell,.cc-github-resolved-task-cell,.cc-github-resolved-date-cell{vertical-align:top}.cc-github-resolved-issue-link{color:var(--accent);font-weight:600;overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent);text-underline-offset:var(--space-xs);transition:color var(--duration-fast) ease,text-decoration-color var(--duration-fast) ease}.cc-github-resolved-issue-link:hover{color:var(--text);text-decoration-color:currentColor}.cc-github-resolved-issue-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.cc-github-resolved-issue-ref{color:var(--text-muted);overflow-wrap:anywhere}.cc-github-resolved-task{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-xs);min-inline-size:0}.cc-github-resolved-task-title{color:var(--text);font-weight:600;overflow-wrap:anywhere}.cc-github-resolved-task-id{font-variant-numeric:tabular-nums;white-space:nowrap}.cc-github-resolved-date{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-xs);color:var(--text)}.cc-github-resolved-date-approx{white-space:nowrap}@media(min-width:769px)and (max-width:1024px){.cc-github-resolved-table th:first-child,.cc-github-resolved-table td:first-child{inline-size:32%}.cc-github-resolved-table th:nth-child(2),.cc-github-resolved-table td:nth-child(2){inline-size:44%}}@media(max-width:768px){.cc-github-resolved-table th,.cc-github-resolved-table td{padding:var(--space-sm)}.cc-github-resolved-table th:first-child,.cc-github-resolved-table td:first-child{inline-size:31%}.cc-github-resolved-table th:nth-child(2),.cc-github-resolved-table td:nth-child(2){inline-size:45%}.cc-github-resolved-table th:last-child,.cc-github-resolved-table td:last-child{inline-size:24%}.cc-github-resolved-date{justify-content:flex-start}}.cc-sort-caret{margin-inline-start:var(--space-xs);font-size:.7em;color:var(--accent)}.cc-unavailable{color:var(--text-muted);cursor:help;border-bottom:1px dotted var(--border-subtle)}.cc-loading-inline{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-lg);color:var(--text-muted)}.cc-area-empty,.cc-area-error{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-xl);color:var(--text-muted);text-align:center}.cc-area-error{color:var(--color-error)}.cc-pricing-note{font-size:.75rem;color:var(--text-muted)}.cc-team-area{display:flex;flex-direction:column;gap:var(--space-lg);min-inline-size:0}.cc-team-ops-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-md);min-inline-size:0}.cc-team-ops-card{min-inline-size:0;padding:var(--space-md);border:thin solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1)}.cc-team-ops-card--org{grid-column:1 / -1}.cc-team-ops-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-block-end:var(--space-md)}.cc-team-ops-card-header h3{margin:0;color:var(--text);font-size:.9375rem}.cc-team-ops-card-header p,.cc-team-muted{margin:var(--space-xs) 0 0;color:var(--text-muted);font-size:.8125rem}.cc-team-error{margin:0;color:var(--color-error);font-size:.8125rem}.cc-team-status-pill{display:inline-flex;flex:0 0 auto;align-items:center;gap:var(--space-xs);color:var(--text-muted);font-size:.8125rem}.cc-team-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);margin:0 0 var(--space-md)}.cc-team-facts div{min-inline-size:0}.cc-team-facts dt{color:var(--text-muted);font-size:.75rem}.cc-team-facts dd{margin:var(--space-xs) 0 0;color:var(--text);font-size:.875rem;overflow-wrap:anywhere}.cc-team-action{gap:var(--space-xs)}.cc-team-ops-card--heartbeat{grid-column:1 / -1}.cc-team-heartbeat-multiplier{margin-block-start:var(--space-md)}.cc-team-heartbeat-multiplier .heartbeat-multiplier-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.cc-team-heartbeat-multiplier .heartbeat-multiplier-slider{flex:1 1 calc(var(--space-2xl) * 5);min-inline-size:calc(var(--space-2xl) * 4)}.cc-team-org-scroll{max-block-size:calc(var(--space-2xl) * 13);overflow:auto;overscroll-behavior:contain;cursor:grab}.cc-team-org-scroll.is-dragging{cursor:grabbing;user-select:none}.cc-team-org-roots,.cc-team-org-children{display:flex;gap:var(--space-sm);margin:0;padding:0;list-style:none}.cc-team-org-scroll[data-layout=vertical] .cc-team-org-roots,.cc-team-org-scroll[data-layout=vertical] .cc-team-org-children{flex-direction:column}.cc-team-org-scroll[data-layout=vertical] .cc-team-org-children{margin-block-start:var(--space-sm);margin-inline-start:var(--space-xl);padding-inline-start:var(--space-md);border-inline-start:thin solid var(--border-subtle)}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-roots,.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children{flex-direction:row;align-items:flex-start;justify-content:center;gap:var(--space-md)}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children{position:relative;margin-block-start:var(--space-md);padding-block-start:var(--space-md)}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children:before,.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children:after,.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children>.cc-team-org-item:before{position:absolute;content:"";pointer-events:none}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children:before{inset-block-start:calc(var(--space-md) * -1);inset-inline-start:50%;block-size:var(--space-md);border-inline-start:thin solid var(--border-subtle)}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children:after{inset-block-start:calc(var(--space-md) / 2);inset-inline:0;border-block-start:thin solid var(--border-subtle)}.cc-team-org-item{min-inline-size:max-content}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-item{position:relative;display:flex;flex-direction:column;align-items:center}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children>.cc-team-org-item:before{inset-block-start:calc(var(--space-md) * -1);inset-inline-start:50%;block-size:var(--space-md);border-inline-start:thin solid var(--border-subtle)}.cc-team-org-card{display:inline-flex;min-inline-size:calc(var(--space-2xl) * 5);max-inline-size:calc(var(--space-2xl) * 10);padding:var(--space-sm);border:thin solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-2);box-shadow:var(--shadow-sm)}.cc-team-org-card-header{display:flex;align-items:center;gap:var(--space-sm);min-inline-size:0}.cc-team-org-avatar{display:inline-flex;flex:0 0 auto}.cc-team-org-name{color:var(--text);font-size:.8125rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cc-team-org-badge{flex:0 0 auto;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent) 12%,var(--surface-1));color:var(--text-muted);font-size:.75rem;text-transform:capitalize}.cc-team-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.cc-team-chart-panel{display:flex;flex-direction:column;gap:var(--space-md);min-inline-size:0;padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1);animation:cc-team-panel-reveal var(--duration-fast) ease-out both}.cc-team-spark-panel{grid-column:1 / -1}.cc-muted-hint,.cc-team-agent-role{color:var(--text-muted)}.cc-muted-hint{margin:0;font-size:.8125rem}.cc-team-agent-cell{display:inline-flex;align-items:center;gap:var(--space-sm);min-inline-size:0}.cc-team-agent-name,.cc-team-agent-role{display:block}.cc-team-agent-name{color:var(--text);font-weight:600}.cc-team-agent-role{font-size:.75rem;text-transform:capitalize}@keyframes cc-team-panel-reveal{0%{opacity:0;transform:translateY(var(--space-xs))}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.cc-team-chart-panel{animation:none}}@media(min-width:769px)and (max-width:1024px){.cc-area .cc-stat-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,calc(var(--space-2xl) * 5)),1fr))}.cc-team-chart-grid{min-inline-size:0;grid-template-columns:minmax(0,1fr)}.cc-team-spark-panel{grid-column:auto}}@media(max-width:768px){.cc-team-ops-grid,.cc-team-chart-grid{min-inline-size:0;grid-template-columns:minmax(0,1fr)}.cc-team-ops-card--org,.cc-team-ops-card--heartbeat,.cc-team-spark-panel{grid-column:auto}.cc-team-ops-card,.cc-team-chart-panel{padding:var(--space-sm)}.cc-team-ops-card-header{flex-direction:column}.cc-team-facts{grid-template-columns:minmax(0,1fr)}.cc-team-action{justify-content:center;inline-size:100%}.cc-team-org-scroll{max-block-size:calc(var(--space-2xl) * 10)}.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-roots,.cc-team-org-scroll[data-layout=horizontal] .cc-team-org-children{justify-content:flex-start;gap:var(--space-sm)}}.activity-feed{display:flex;flex-direction:column;gap:var(--space-lg);max-height:600px;overflow-y:auto;padding:var(--space-md)}@media(max-width:768px){.activity-feed{padding:var(--space-md) var(--space-lg)}}.activity-feed-group{display:flex;flex-direction:column;gap:var(--space-sm)}.activity-feed-group-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) 0;border-bottom:1px solid var(--border);margin-bottom:var(--space-sm);position:sticky;top:0;background:var(--surface);z-index:1}.activity-feed-group-date{font-size:13px;font-weight:600;color:var(--text);text-transform:uppercase;letter-spacing:.5px}.activity-feed-group-count{font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted);background:var(--card);padding:2px 8px;border-radius:var(--radius-sm)}.activity-feed-list{display:flex;flex-direction:column;gap:var(--space-sm)}.activity-feed-item{display:flex;gap:var(--space-md);padding:var(--space-md);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);transition:background-color var(--transition-fast)}.activity-feed-item:hover{background:var(--card-hover)}.activity-feed-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--surface);border-radius:var(--radius-md);flex-shrink:0}.activity-feed-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-xs)}.activity-feed-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.activity-feed-type{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.activity-feed-project-badge{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:11px;color:var(--todo);background:color-mix(in srgb,var(--todo) 10%,transparent);padding:2px 8px;border-radius:var(--radius-sm)}.activity-feed-details{display:flex;flex-direction:column;gap:2px}.activity-feed-task-id{font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.activity-feed-task-title{font-size:14px;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-feed-description{font-size:13px;color:var(--text-muted);line-height:1.4}.activity-feed-meta{display:flex;align-items:center;gap:var(--space-sm);margin-top:2px}.activity-feed-time{font-size:11px;color:var(--text-dim)}.activity-feed-loading{display:flex;align-items:center;justify-content:center;min-height:200px}.activity-feed-skeleton{display:flex;flex-direction:column;gap:var(--space-md);width:100%}.activity-feed-skeleton-item{display:flex;gap:var(--space-md);padding:var(--space-md)}.activity-feed-skeleton-icon{width:32px;height:32px;background:var(--border);border-radius:var(--radius-md);flex-shrink:0;animation:pulse 1.5s ease-in-out infinite}.activity-feed-skeleton-content{flex:1;display:flex;flex-direction:column;gap:var(--space-sm)}.activity-feed-skeleton-line{height:12px;background:var(--border);border-radius:var(--radius-sm);animation:pulse 1.5s ease-in-out infinite}.activity-feed-skeleton-line.short{width:60%}.activity-feed-error{display:flex;align-items:center;justify-content:center;min-height:200px;padding:var(--space-xl)}.activity-feed-error-message{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);color:var(--color-error);text-align:center}.activity-feed-empty{display:flex;align-items:center;justify-content:center;min-height:300px;padding:var(--space-xl)}.activity-feed-empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);color:var(--text-muted);text-align:center}.activity-feed-empty-state p{font-size:15px;font-weight:500;color:var(--text);margin:0}.activity-feed-empty-hint{font-size:13px;color:var(--text-dim);max-width:300px}.cc-agent-activity{display:grid;gap:var(--space-3);min-inline-size:0}.cc-agent-activity-mode,.cc-agent-activity-filters,.cc-agent-activity-target{display:flex;align-items:center;gap:var(--space-2);min-inline-size:0}.cc-agent-activity-filters{flex-wrap:wrap}.cc-agent-activity-filters .input{flex:1 1 auto;min-inline-size:0}.cc-agent-activity-range-note,.cc-agent-activity-end,.cc-agent-activity-copy small{color:var(--text-muted);font-size:var(--font-size-xs)}.cc-agent-activity-list{display:grid;gap:var(--space-2)}.cc-agent-activity-row{display:flex;align-items:center;gap:var(--space-2);min-inline-size:0;padding:var(--space-2);border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;text-align:left}button.cc-agent-activity-row{cursor:pointer;transition:background var(--transition-fast)}button.cc-agent-activity-row:hover,button.cc-agent-activity-row:focus-visible{background:color-mix(in srgb,var(--surface-2) 80%,transparent)}.cc-agent-activity-copy{display:grid;gap:var(--space-1);min-inline-size:0;overflow-wrap:anywhere}.cc-agent-activity-target .cc-agent-activity-row{flex:1 1 auto}@media(max-width:768px){.cc-agent-activity-mode,.cc-agent-activity-filters,.cc-agent-activity-target{align-items:stretch;flex-direction:column}.cc-agent-activity-mode .btn,.cc-agent-activity-filters .input,.cc-agent-activity-target .btn{inline-size:100%}.cc-agent-activity-row{align-items:flex-start}}@media(max-height:480px)and (max-width:768px){.cc-agent-activity{gap:var(--space-2)}}.cc-portability-card{display:flex;flex-direction:column;gap:var(--space-sm)}.cc-portability-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.cc-portability-import-label{color:var(--text);font-size:.8125rem}.cc-portability-import-input{min-block-size:calc(var(--space-2xl) * 3);resize:vertical}@media(max-width:768px){.cc-portability-actions{flex-direction:column}.cc-portability-actions .cc-controls-action{inline-size:100%;justify-content:center}}.cc-system-refresh{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-sm);color:var(--text-muted);font-size:.8125rem}.cc-system-refresh .btn-icon{flex:0 0 auto}.cc-system-node-selector{display:inline-flex;align-items:center;gap:var(--space-sm);color:var(--text)}.cc-system-node-selector .input{min-inline-size:10rem}.cc-system-gauges .cc-stat-card{min-block-size:100%}.cc-system-chart-grid{min-inline-size:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.cc-system-chart-grid .cc-stat-card{gap:var(--space-md)}.cc-system-section-title-with-icon{display:inline-flex;align-items:center;gap:var(--space-sm)}.cc-system-section-title-with-icon svg{color:var(--text-muted)}.cc-system-vitest-card{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1)}.cc-system-vitest-card .btn,.cc-system-toggle-row,.cc-system-threshold-row,.cc-system-threshold-controls{display:inline-flex;align-items:center;gap:var(--space-sm)}.cc-system-toggle-row,.cc-system-threshold-row{color:var(--text);font-size:.8125rem}.cc-system-threshold-controls input[type=range]{accent-color:var(--accent)}.cc-system-threshold-controls .input{inline-size:5rem}.cc-system-note{margin:0;color:var(--text-muted);font-size:.8125rem}.cc-system-note--error,.cc-system-value--critical{color:var(--color-error)}.cc-system-value--warning{color:var(--color-warning)}.cc-system-note--success{color:var(--color-success)}@media(max-width:768px){.cc-system-refresh{align-items:flex-start;justify-content:flex-start;flex-direction:column}.cc-system-chart-grid{grid-template-columns:minmax(0,1fr)}.cc-system-node-selector,.cc-system-vitest-card,.cc-system-toggle-row,.cc-system-threshold-row,.cc-system-threshold-controls{align-items:stretch;flex-direction:column;inline-size:100%}.cc-system-node-selector .input,.cc-system-vitest-card .btn,.cc-system-threshold-controls .input{inline-size:100%}}.cc-area-section-header.cc-system-controls-header{flex-direction:row;align-items:center;justify-content:space-between}@media(max-width:768px){.cc-area-section-header.cc-system-controls-header{flex-direction:row;align-items:center;justify-content:space-between}}.cc-syscontrols-grid{min-inline-size:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));gap:var(--space-md)}.cc-syscontrol-card{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md)}.cc-syscontrol-head{display:inline-flex;align-items:center;gap:var(--space-sm)}.cc-syscontrol-icon{color:var(--text-muted);flex:0 0 auto}.cc-syscontrol-title{font-weight:600}.cc-syscontrol-desc{margin:0;color:var(--text-muted);font-size:.8125rem;flex:1 1 auto}.cc-syscontrol-note{margin:0;color:var(--text-muted);font-size:.75rem;font-style:italic}.cc-syscontrol-cta{align-self:flex-start}.cc-syscontrols-banner{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);margin-block-end:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2, var(--surface))}.cc-syscontrols-banner--back{justify-content:space-between}.cc-syscontrols-banner--error{justify-content:space-between;border-color:var(--color-error)}.cc-syscontrols-job-status{font-size:.8125rem;color:var(--text-muted)}.cc-syscontrols-job-status--succeeded{color:var(--color-success)}.cc-syscontrols-job-status--failed{color:var(--color-error)}.cc-syscontrols-output{margin:0;padding:var(--space-md);max-block-size:20rem;overflow-y:auto;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2, var(--surface));font-family:var(--font-mono, ui-monospace, monospace);font-size:.75rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.cc-syscontrols-logs{display:flex;flex-direction:column}.cc-syscontrols-log-line{display:flex;gap:var(--space-sm);min-inline-size:0}.cc-syscontrols-log-line--warn .cc-syscontrols-log-message{color:var(--color-warning)}.cc-syscontrols-log-line--error .cc-syscontrols-log-message{color:var(--color-error)}.cc-syscontrols-log-time,.cc-syscontrols-log-prefix{color:var(--text-muted);flex:0 0 auto}.cc-syscontrols-log-message{word-break:break-word}.cc-mission-control{display:flex;flex-direction:column;gap:var(--space-lg)}.cc-mc-columns{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg)}.cc-mc-section{display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.cc-mc-muted{color:var(--text-muted);font-size:.85rem;margin:0}.cc-mc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.cc-mc-session,.cc-mc-node{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);border:1px solid var(--border-subtle, color-mix(in srgb, #ffffff 8%, transparent));border-radius:var(--radius-sm, 6px);background:var(--surface-1, color-mix(in srgb, #ffffff 2%, transparent));min-width:0}.cc-mc-node.inactive{opacity:.55}.cc-mc-session-purpose,.cc-mc-node-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.cc-mc-session-meta,.cc-mc-node-meta{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.cc-mc-badge{font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;padding:2px 6px;border-radius:var(--radius-sm, 6px);background:var(--surface-2, color-mix(in srgb, #3b82f6 15%, transparent));color:var(--text)}.cc-mc-badge.inactive{background:var(--surface-2, color-mix(in srgb, #ffffff 6%, transparent));color:var(--text-muted)}.cc-mc-task,.cc-mc-node-count{font-size:.75rem;color:var(--text-muted)}@media(max-width:768px),(max-height:480px){.cc-mc-columns{grid-template-columns:1fr}}.cc-controls{min-inline-size:0}.cc-controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);align-items:stretch}.cc-controls-card{min-inline-size:0;padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1)}.cc-controls-card--concurrency{grid-column:1 / -1}.cc-controls-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-block-end:var(--space-md)}.cc-controls-card-header h3{margin:0;color:var(--text);font-size:.9375rem}.cc-controls-card-header p,.cc-controls-muted{margin:var(--space-xs) 0 0;color:var(--text-muted);font-size:.8125rem}.cc-controls-error{margin:0;color:var(--color-error);font-size:.8125rem}.cc-controls-status-pill{display:inline-flex;flex:0 0 auto;align-items:center;gap:var(--space-xs);color:var(--text-muted);font-size:.8125rem}.cc-controls-action{gap:var(--space-xs)}.cc-controls-save-state{flex:0 0 auto;color:var(--text-muted);font-size:.8125rem}.cc-controls-save-state--saved{color:var(--color-success)}.cc-controls-save-state--error{color:var(--color-error)}.cc-controls-sliders{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:var(--space-md)}.cc-controls-slider{display:flex;align-self:stretch;min-inline-size:0;flex-direction:column;gap:var(--space-sm);color:var(--text);font-size:.8125rem}.cc-controls-slider-caption{color:var(--text-muted);font-size:.75rem}.cc-controls-slider-label{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.cc-controls-slider-label strong{color:var(--accent);font-variant-numeric:tabular-nums}.cc-controls-range-wrap{--cc-controls-range-thumb-size: calc(var(--space-lg) + var(--space-xs) / 2);position:relative;display:flex;align-items:center;inline-size:100%;min-inline-size:0}.cc-controls-range-wrap,.cc-controls-slider>input[type=range]{margin-block-start:auto}.cc-controls-use-marker{--use-pct: 0%;--use-offset: 0%;position:absolute;inset-block-start:50%;inset-inline-start:var(--use-offset, var(--use-pct));transform:translate(-50%,-50%);pointer-events:none}.cc-controls-slider input[type=range],.cc-controls-touch-slider{inline-size:100%;min-block-size:var(--space-xl);accent-color:var(--accent);touch-action:none}.cc-controls-slider input[type=range]::-webkit-slider-thumb,.cc-controls-touch-slider::-webkit-slider-thumb{width:var(--cc-controls-range-thumb-size);height:var(--cc-controls-range-thumb-size)}.cc-controls-slider input[type=range]::-moz-range-thumb,.cc-controls-touch-slider::-moz-range-thumb{width:var(--cc-controls-range-thumb-size);height:var(--cc-controls-range-thumb-size)}@media(max-width:768px){.cc-controls-grid{grid-template-columns:minmax(0,1fr)}.cc-controls-card{padding:var(--space-sm)}.cc-controls-card-header{flex-direction:column}.cc-controls-sliders{grid-template-columns:minmax(0,1fr)}.cc-controls-range-wrap{--cc-controls-range-thumb-size: var(--space-xl)}.cc-controls-slider input[type=range],.cc-controls-touch-slider{min-block-size:var(--space-2xl)}.cc-controls-slider input[type=range]::-webkit-slider-thumb,.cc-controls-touch-slider::-webkit-slider-thumb{inline-size:var(--space-xl);block-size:var(--space-xl)}.cc-controls-slider input[type=range]::-moz-range-thumb,.cc-controls-touch-slider::-moz-range-thumb{inline-size:var(--space-xl);block-size:var(--space-xl)}.cc-controls-action{justify-content:center;inline-size:100%}}.reliability-view{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--space-lg);height:100%;min-height:0;min-width:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.reliability-card{padding:var(--space-lg);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card)}.reliability-loading{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);height:100%;min-width:0;padding:var(--space-2xl);color:var(--text-muted)}.reliability-error{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);height:100%;min-width:0;padding:var(--space-2xl);text-align:center}.reliability-error p{color:var(--text-muted);margin:0}.reliability-headline-card{display:flex;flex-direction:column;gap:var(--space-sm)}.reliability-headline{font-size:1.75rem;font-weight:700}.reliability-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,calc(var(--space-2xl) * 12)),1fr));gap:var(--space-lg)}.reliability-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.reliability-chart-section{display:flex;flex-direction:column;gap:var(--space-sm);min-inline-size:0;margin-block-start:var(--space-md);padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1)}.reliability-chart-section h4{margin:0;color:var(--text-muted);font-size:var(--font-size-xs);font-weight:600}.reliability-chart-section .cc-recharts-chart,.reliability-chart-section .cc-recharts-empty{block-size:clamp(calc(var(--space-2xl) * 4),34vh,calc(var(--space-2xl) * 7))}.reliability-table{width:100%;border-collapse:collapse;margin-top:var(--space-sm)}.reliability-table th,.reliability-table td{text-align:left;padding:var(--space-xs) var(--space-sm);border-bottom:1px solid var(--border)}.reliability-stat-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs) 0}.reliability-muted{color:var(--text-muted)}.reliability-details{margin-top:var(--space-sm)}.reliability-details summary{color:var(--text-muted);cursor:pointer}.reliability-details-content{margin-top:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs);color:var(--text-muted)}.reliability-histogram{list-style:none;margin:var(--space-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.reliability-histogram li{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,6fr) minmax(0,1fr);align-items:center;gap:var(--space-sm)}.reliability-histogram-bar-wrap{width:100%;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-info) 15%,transparent);overflow:hidden}.reliability-histogram-bar{height:var(--space-md);background:var(--color-info)}@media(max-width:768px){.reliability-view,.reliability-loading,.reliability-error{padding-bottom:calc(var(--space-lg) + var(--mobile-nav-height) + env(safe-area-inset-bottom,0px) + var(--standalone-bottom-gap))}.reliability-grid{grid-template-columns:minmax(0,1fr)}.reliability-section-header{flex-direction:column;align-items:flex-start}.reliability-chart-section{padding:var(--space-sm)}.reliability-chart-section .cc-recharts-chart,.reliability-chart-section .cc-recharts-empty{block-size:clamp(calc(var(--space-2xl) * 3),46vh,calc(var(--space-2xl) * 6))}}.nodes-view{--nodes-view-spin-duration: calc(var(--duration-slow) * 4);--nodes-view-pulse-duration: calc(var(--duration-slow) * 5);display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-sm) var(--space-md) var(--space-xl)}.nodes-view-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm)}.nodes-view-title{display:flex;align-items:center;gap:var(--space-sm)}.nodes-view-title h2{margin:0;display:flex;align-items:center;gap:var(--space-sm)}.nodes-view-count{color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) / 4)}.nodes-view-actions{display:flex;gap:var(--space-sm)}.nodes-view-close{margin-left:auto}.nodes-view-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(var(--space-xl) * 5.833),1fr));gap:var(--space-sm)}.nodes-view-stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.nodes-view-stat span{display:inline-flex;align-items:center;gap:var(--space-sm);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs))}.nodes-view-stat strong{font-size:calc(var(--space-lg) + var(--space-xs) / 2)}.nodes-view-stat--online strong{color:var(--color-success)}.nodes-view-stat--offline strong{color:var(--color-error)}.nodes-view-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--space-lg) * 20),1fr));gap:var(--space-md)}.nodes-view-empty{padding:var(--space-xl);border:1px dashed var(--border);border-radius:var(--radius-md);text-align:center;color:var(--text-muted);display:flex;flex-direction:column;align-items:center;gap:var(--space-md)}.nodes-view-error{color:var(--color-error);font-size:calc(var(--space-md) + var(--space-xs) / 4)}.node-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-md);cursor:pointer;transition:border-color var(--transition-fast),transform var(--transition-fast)}.node-card:hover{border-color:var(--accent);transform:translateY(calc(var(--space-xs) * -.25))}.node-card:focus-visible{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.node-card--loading{min-height:calc(var(--space-xl) * 9.167);opacity:.55;pointer-events:none}.node-card__header{display:flex;align-items:center;justify-content:space-between}.node-card__title-wrap{display:flex;align-items:center;gap:var(--space-sm)}.node-card__icon{width:calc(var(--space-lg) * 2.125);height:calc(var(--space-lg) * 2.125);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.node-card__name{margin:0;font-size:calc(var(--space-md) + var(--space-xs));line-height:1.25}.node-card__meta-row{margin-top:var(--space-xs);display:flex;align-items:center;gap:var(--space-xs)}.node-card__type-badge{border:1px solid var(--border);border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-sm);font-size:calc(var(--space-sm) + var(--space-xs) * .75);color:var(--text-muted)}.node-card__status{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:calc(var(--space-sm) + var(--space-xs) * .75);font-weight:600}.node-card__status-indicator{width:var(--space-sm);height:var(--space-sm);border-radius:50%}.node-card__status--online .node-card__status-indicator{background:var(--color-success)}.node-card__status--offline .node-card__status-indicator,.node-card__status--error .node-card__status-indicator{background:var(--color-error)}.node-card__status--connecting .node-card__status-indicator{background:var(--color-warning)}.node-card__auth-indicator{display:inline-flex;align-items:center;margin-left:var(--space-xs);vertical-align:middle}.node-card__url{font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted);word-break:break-all}.node-card__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.node-card__metric{display:flex;flex-direction:column;gap:var(--space-xs)}.node-card__metric-label{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * .75);text-transform:uppercase;letter-spacing:.03em}.node-card__metric-value{font-size:calc(var(--space-md) + var(--space-xs));font-weight:600}.node-card__sync{display:flex;align-items:center;gap:var(--space-xs);margin-top:var(--space-sm);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.node-card__sync-dot{width:var(--space-sm);height:var(--space-sm);border-radius:50%;flex-shrink:0}.node-card__sync-time{color:var(--text-muted)}.nodes-view-stat--synced strong{color:var(--color-success)}.node-card__actions{display:flex;gap:var(--space-xs);flex-wrap:wrap}.node-card__action{display:inline-flex;align-items:center;gap:var(--space-xs)}.node-card__action--remove{margin-left:auto}.node-card__action--remove:not(.btn-danger){color:var(--color-error);border-color:color-mix(in srgb,var(--color-error) 45%,var(--border))}.node-card__action--remove.is-armed{background:color-mix(in srgb,var(--color-error) 14%,transparent)}.node-card__docker-badge{display:inline-flex;align-items:center;gap:var(--space-xs);border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-sm);font-size:calc(var(--space-sm) + var(--space-xs) * .75);background:color-mix(in srgb,var(--color-info) 15%,transparent);color:var(--color-info)}.node-card__docker-meta{display:flex;gap:var(--space-sm);margin-top:var(--space-xs);font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.node-card__docker-meta span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mesh-topology{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);min-height:calc(var(--space-2xl) * 6.25);padding:var(--space-md);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.mesh-topology__svg{width:100%;max-width:calc(var(--space-2xl) * 12.5);height:auto;aspect-ratio:1}.mesh-topology__node{transition:filter var(--transition-fast)}.mesh-topology__node:hover{filter:brightness(1.1)}.mesh-topology__node-circle{stroke:var(--border);stroke-width:calc(var(--space-xs) / 2);transition:fill var(--transition-fast)}.mesh-topology__node-label{font-size:calc(var(--space-sm) + var(--space-xs) * .75);fill:var(--text);font-weight:500}.mesh-topology__node-type-badge{fill:color-mix(in srgb,var(--surface) 75%,var(--bg));stroke:var(--border);stroke-width:calc(var(--space-xs) / 4)}.mesh-topology__node-type-text{font-size:calc(var(--space-sm) + var(--space-xs) / 2);font-weight:700;fill:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.mesh-topology__link{stroke:var(--border);stroke-width:calc((var(--space-xs) * 3) / 8);stroke-dasharray:var(--space-xs),var(--space-xs);opacity:.6}.mesh-topology__legend{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-md);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}.mesh-topology__legend-item{display:flex;align-items:center;gap:var(--space-sm)}.mesh-topology__notice{margin:var(--space-md) 0 0;text-align:center;color:var(--text-dim);font-size:calc(var(--space-sm) + var(--space-xs))}.mesh-topology__legend-dot{width:calc(var(--space-sm) + var(--space-xs) / 2);height:calc(var(--space-sm) + var(--space-xs) / 2);border-radius:50%;border:1px solid var(--border)}.mesh-topology--empty{justify-content:center}.mesh-topology__empty-state{text-align:center;color:var(--text-muted);font-size:calc(var(--space-md) + var(--space-xs) / 2)}.connect-node-modal{width:min(calc(var(--space-lg) * 30),calc(100vw - (var(--space-lg) * 2)))}.connect-node-form{display:flex;flex-direction:column;gap:var(--space-md)}.connect-node-form .form-group{padding:0;margin-top:0}.connect-node-form .form-group:last-of-type{margin-bottom:0}.connect-node-field{display:flex;flex-direction:column;gap:var(--space-xs)}.connect-node-field__input{width:100%}.connect-node-field__input[aria-invalid=true]{border-color:var(--color-error);background:color-mix(in srgb,var(--color-error) 5%,var(--surface))}.connect-node-field__input[aria-invalid=true]:focus-visible{border-color:var(--color-error);box-shadow:var(--glow-danger)}.connect-node-url-preview{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:color-mix(in srgb,var(--surface) 50%,var(--bg));border-radius:var(--radius-sm);border-left:var(--space-xs) solid var(--accent);font-size:calc(var(--space-sm) + var(--space-xs))}.connect-node-url-preview-label{color:var(--text-muted)}.connect-node-url-preview code{font-family:var(--font-mono);color:var(--text);font-size:calc(var(--space-sm) + var(--space-xs))}.connect-node-actions{display:flex;justify-content:flex-end;gap:var(--space-sm);padding:var(--modal-padding);border-top:1px solid var(--border)}.nodes-view-topology{margin-bottom:var(--space-md)}.nodes-view-section-title{font-size:calc(var(--space-md) + var(--space-xs) * .5);font-weight:600;color:var(--text);margin:0 0 var(--space-sm)}.nodes-view .node-status-indicator{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:calc(var(--space-sm) + var(--space-xs) * .625)}.nodes-view .node-status-indicator__label,.nodes-view .node-status-indicator--local{color:var(--text-muted)}.nodes-view .node-status-indicator--remote{color:var(--text)}.nodes-view .node-status-indicator__dot{width:var(--space-sm);height:var(--space-sm);border-radius:50%;position:relative;display:inline-block}.nodes-view .node-status-indicator__dot--online{background:var(--color-success);box-shadow:var(--glow-success)}.nodes-view .node-status-indicator__dot--offline,.nodes-view .node-status-indicator__dot--error{background:var(--color-error)}.nodes-view .node-status-indicator__dot--connecting{background:var(--color-warning);animation:pulse-warning var(--nodes-view-pulse-duration) ease-in-out infinite}.nodes-view .node-status-indicator__spinner{position:absolute;inset:0;border:calc(var(--space-xs) / 2) solid transparent;border-top-color:currentColor;border-radius:50%;animation:nodes-view-spinner-spin var(--nodes-view-spin-duration) linear infinite}.nodes-view .node-status-indicator__name{font-weight:500}.nodes-view .node-status-indicator__details{font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text-muted)}@keyframes pulse-warning{0%,to{opacity:1;box-shadow:var(--glow-warning)}50%{opacity:.6;box-shadow:var(--glow-warning)}}@keyframes nodes-view-spinner-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nodes-view .spin{animation:nodes-view-spinner-spin var(--nodes-view-spin-duration) linear infinite}@media(max-width:768px){.nodes-view{padding-inline:var(--space-sm)}.nodes-view-grid,.node-card__metrics{grid-template-columns:1fr}.node-card__docker-badge,.node-card__docker-meta{gap:var(--space-xs)}.node-card__docker-meta span{max-width:calc(var(--space-2xl) * 4.5)}.connect-node-modal{width:calc(100vw - (var(--space-md) * 2))}.connect-node-field__input{min-height:calc(var(--space-2xl) + var(--space-md))}.nodes-view-header{flex-wrap:wrap;gap:var(--space-sm)}.nodes-view-title h2{font-size:calc(var(--space-md) + var(--space-xs))}.nodes-view-title h2 svg{flex-shrink:0}.nodes-view-count{font-size:calc(var(--space-sm) + var(--space-xs))}.nodes-view-actions{flex-wrap:wrap;gap:var(--space-sm);width:100%;justify-content:flex-end}.nodes-view-close{min-height:calc(var(--space-xl) + var(--space-md));min-width:calc(var(--space-xl) + var(--space-md))}.nodes-view-actions .btn{min-height:calc(var(--space-xl) + var(--space-md))}.nodes-view-stats{grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.nodes-view-stat{padding:var(--space-xs) var(--space-sm)}.nodes-view-stat span{font-size:calc(var(--space-sm) + var(--space-xs) * .75)}.nodes-view-stat strong{font-size:calc(var(--space-md) + var(--space-xs) / 2)}.nodes-view-empty{padding:var(--space-xl) var(--space-md);text-align:center}.nodes-view-error{padding:var(--space-md);margin:var(--space-md) 0}.nodes-view-topology{padding:var(--space-sm) 0}.nodes-view-section-title{font-size:calc(var(--space-md) + var(--space-xs) / 4)}}.add-node-modal{width:min(calc(var(--space-lg) * 32.5),calc(100vw - (var(--space-lg) * 2)))}.add-node-modal__body{display:flex;flex-direction:column;gap:var(--space-md)}.add-node-modal__row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.add-node-modal__fieldset{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-sm)}.add-node-modal__fieldset legend{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * .625);padding:0 var(--space-xs)}.add-node-modal__storage-toggle{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-sm)}.add-node-modal__advanced-btn{align-self:flex-start}.add-node-modal__advanced{border:1px dashed var(--border);border-radius:var(--radius-sm);padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-sm)}.add-node-modal__textarea{min-height:calc(var(--space-2xl) * 2.25);resize:vertical;font-family:var(--font-mono)}.add-node-modal__description{font-size:calc(var(--space-sm) + var(--space-xs) * .625);color:var(--text-muted);margin-bottom:var(--space-sm);padding:0}.add-node-modal__field{display:flex;flex-direction:column;gap:var(--space-xs)}.add-node-modal__field>span{font-size:calc(var(--space-sm) + var(--space-xs) * .625);font-weight:600;color:var(--text-muted)}.add-node-modal__field .input{width:100%;padding:var(--space-sm) var(--space-md);font-size:calc(var(--space-md) + var(--space-xs) * .5)}.add-node-modal__field .input:focus-visible{border-color:var(--accent);box-shadow:var(--focus-ring-strong)}.add-node-modal__field .input[aria-invalid=true]{border-color:var(--color-error);background:color-mix(in srgb,var(--color-error) 5%,var(--surface))}.add-node-modal__field .input[aria-invalid=true]:focus{box-shadow:var(--glow-danger)}.add-node-modal__hint{font-size:calc(var(--space-sm) + var(--space-xs) * .375);color:var(--text-dim);margin-top:calc(var(--space-xs) / 2)}.add-node-modal__error{margin-top:calc(var(--space-xs) / 2)}.add-node-modal__type-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;background:var(--surface)}.add-node-modal__type-btn{flex:1;padding:calc(var(--space-sm) + var(--space-xs) / 2) var(--space-lg);border:none;background:transparent;color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs) * .625);font-weight:500;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.add-node-modal__type-btn:hover:not(:disabled){background:color-mix(in srgb,var(--bg) 50%,var(--surface))}.add-node-modal__type-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);z-index:1}.add-node-modal__type-btn.active{background:var(--accent);color:var(--bg)}.add-node-modal__type-btn:disabled{opacity:.6;cursor:not-allowed}.add-node-modal__remote-fields{display:grid;gap:var(--space-sm)}.add-node-modal__discovery-actions{display:flex;flex-direction:column;gap:var(--space-xs)}.add-node-modal__discovery-state{font-size:calc(var(--space-sm) + var(--space-xs) * .375);color:var(--color-success)}.add-node-modal__discovered-list{display:flex;flex-direction:column;gap:var(--space-xs)}.add-node-modal__discovered-card{padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.add-node-modal__discovered-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.add-node-modal__projects{display:flex;flex-direction:column;gap:var(--space-sm)}.add-node-modal__projects-title{margin:0;font-size:calc(var(--space-md) + var(--space-xs) * .5)}.add-node-modal__project-list{display:flex;flex-direction:column;gap:var(--space-sm)}.add-node-modal__project-card{padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-sm)}.add-node-modal__project-toggle{margin:0}@media(max-width:768px){.add-node-modal{width:calc(100vw - (var(--space-md) * 2))}.add-node-modal__type-toggle{width:100%}.add-node-modal__type-btn{flex:1;padding:var(--space-md) var(--space-lg)}.add-node-modal__field input{min-height:calc(var(--space-2xl) + var(--space-md));font-size:calc(var(--space-md) + var(--space-xs) * .5)}.add-node-modal__row{grid-template-columns:1fr}.add-node-modal__project-card{padding:var(--space-md)}.add-node-modal__discovered-row{flex-direction:column;align-items:flex-start}}.docker-tls-config{display:flex;flex-direction:column;gap:var(--space-md)}.docker-tls-config__fields{display:grid;gap:var(--space-md)}.docker-tls-config__field{display:flex;flex-direction:column;gap:var(--space-xs)}.docker-tls-config__field label{color:var(--text-muted)}@media(max-width:768px){.docker-tls-config .input{min-height:calc(var(--mobile-nav-height) - var(--space-sm))}}.docker-target-selector{display:flex;flex-direction:column;gap:var(--space-md)}.docker-target-selector__modes{display:flex;gap:var(--space-sm);flex-wrap:wrap}.docker-target-selector__mode-active{border-color:var(--todo);box-shadow:var(--focus-ring-strong)}.docker-target-selector__panel{display:grid;gap:var(--space-md)}.docker-target-selector__field{display:flex;flex-direction:column;gap:var(--space-xs)}.docker-target-selector__field label{color:var(--text-muted)}.docker-target-selector__context-row{display:grid;gap:var(--space-sm);grid-template-columns:minmax(0,1fr) auto;align-items:center}.docker-target-selector__status{color:var(--text-muted)}.docker-target-selector__success{color:var(--color-success)}.docker-target-selector__error{color:var(--color-error)}@media(max-width:768px){.docker-target-selector__modes .btn{min-height:calc(var(--mobile-nav-height) - var(--space-sm))}}.docker-onboarding{width:min(calc(var(--space-2xl) * 22.5),calc(100vw - (var(--space-lg) * 2)))}.docker-onboarding__body{display:flex;flex-direction:column;gap:var(--space-md)}.docker-onboarding__section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.docker-onboarding__section-title{margin:0;display:flex;align-items:center;gap:var(--space-sm);font-size:calc(var(--space-md) + var(--space-xs) / 2)}.docker-onboarding__field{display:flex;flex-direction:column;gap:var(--space-xs)}.docker-onboarding__inline-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.docker-onboarding__radio-group{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.docker-onboarding__type-toggle{display:flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.docker-onboarding__type-btn{flex:1;border:none;background:var(--surface);color:var(--text);padding:var(--space-sm) var(--space-md);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.docker-onboarding__type-btn+.docker-onboarding__type-btn{border-left:1px solid var(--border)}.docker-onboarding__type-btn.is-active{background:var(--todo);color:var(--bg)}.docker-onboarding__type-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);position:relative;z-index:1}.docker-onboarding__checkbox-group{display:flex;flex-direction:column;gap:var(--space-xs)}.docker-onboarding__kv-list{display:flex;flex-direction:column;gap:var(--space-sm)}.docker-onboarding__kv-list h5{margin:0;font-size:calc(var(--space-sm) + var(--space-xs))}.docker-onboarding__kv-row{display:grid;gap:var(--space-sm);align-items:center}.docker-onboarding__kv-row--env{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.docker-onboarding__kv-row--mount{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto}.docker-onboarding__kv-add{align-self:flex-start}.docker-onboarding__advanced-toggle{border:none;background:none;color:var(--text);padding:var(--space-xs);margin:calc(var(--space-xs) * -1);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;font-size:calc(var(--space-md) + var(--space-xs) / 2);font-weight:600}.docker-onboarding__advanced-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.docker-onboarding__advanced-toggle svg{transition:transform var(--transition-fast)}.docker-onboarding__advanced-toggle.is-expanded svg{transform:rotate(180deg)}.docker-onboarding__advanced-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--transition-fast)}.docker-onboarding__advanced-content>div{overflow:hidden;display:flex;flex-direction:column;gap:var(--space-sm)}.docker-onboarding__advanced-content.is-expanded{grid-template-rows:1fr}.docker-onboarding__tls-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.docker-onboarding__tls-fields .docker-onboarding__field:first-child{grid-column:1 / -1}@media(max-width:768px){.docker-onboarding{width:calc(100vw - (var(--space-md) * 2))}.docker-onboarding__inline-fields,.docker-onboarding__tls-fields,.docker-onboarding__kv-row{grid-template-columns:1fr}.docker-onboarding .input,.docker-onboarding .select,.docker-onboarding .btn{min-height:calc(var(--space-2xl) + var(--space-md))}.docker-onboarding__advanced-content{transition:none}}.settings-sync-log{display:flex;flex-direction:column;gap:var(--space-sm)}.settings-sync-log__header{display:flex;align-items:center;gap:var(--space-xs);cursor:pointer;padding:var(--space-xs) 0;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text);font:inherit;text-align:left;transition:background-color var(--transition-fast)}.settings-sync-log__header:hover{background:var(--surface-hover)}.settings-sync-log__header:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);background:var(--surface-hover)}.settings-sync-log__chevron{transform:rotate(0);transition:transform var(--transition-fast)}.settings-sync-log__chevron--expanded{transform:rotate(180deg)}.settings-sync-log__filters{display:flex;gap:var(--space-sm);align-items:center;flex-wrap:wrap}.settings-sync-log__filters label{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-xs);color:var(--text-muted)}.settings-sync-log__filters select{font-size:var(--font-size-xs);padding:4px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}.settings-sync-log__filters select:focus{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring)}.settings-sync-log__list{display:flex;flex-direction:column}.settings-sync-log__entry{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0;border-bottom:1px solid var(--border)}.settings-sync-log__entry:last-child{border-bottom:none}.settings-sync-log__entry-timestamp{font-size:var(--font-size-xs);color:var(--text-muted);min-width:140px}.settings-sync-log__entry-direction{display:flex;align-items:center;color:var(--text-muted)}.settings-sync-log__entry-result{display:inline-flex;padding:2px 8px;border-radius:999px;font-size:var(--font-size-2xs);font-weight:500}.settings-sync-log__badge--success{background:color-mix(in srgb,var(--color-success, #2da44e) 14%,transparent);color:var(--color-success, #2da44e)}.settings-sync-log__badge--conflict{background:color-mix(in srgb,var(--color-warning, #d29922) 14%,transparent);color:var(--color-warning, #d29922)}.settings-sync-log__badge--error{background:color-mix(in srgb,var(--color-error, #cf222e) 14%,transparent);color:var(--color-error, #cf222e)}.settings-sync-log__entry-node{font-weight:500;font-size:var(--font-size-xs)}.settings-sync-log__entry-details{font-size:var(--font-size-xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.settings-sync-log__empty{text-align:center;color:var(--text-muted);padding:var(--space-md);font-size:var(--font-size-sm)}.node-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);border:1px solid color-mix(in srgb,var(--accent) 36%,transparent);color:var(--text-muted);font-size:var(--font-size-2xs);width:fit-content;margin-top:4px}@media(max-width:768px){.settings-sync-conflict-modal__diff-panel{grid-template-columns:1fr}}.settings-sync-conflict-modal{max-width:860px;width:min(860px,calc(100vw - 32px))}.settings-sync-conflict-modal__conflict-list{display:flex;flex-direction:column;gap:var(--space-md);max-height:min(50vh,400px);overflow-y:auto}.settings-sync-conflict-modal__conflict-item{border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-md)}.settings-sync-conflict-modal__key{font-weight:600;font-family:monospace;margin-bottom:var(--space-sm)}.settings-sync-conflict-modal__diff-panel{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-sm)}.settings-sync-conflict-modal__diff-side{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.settings-sync-conflict-modal__diff-label{font-size:var(--font-size-xs);color:var(--text-muted);padding:4px 8px;border-bottom:1px solid var(--border);background:var(--surface)}.settings-sync-conflict-modal__diff-content{padding:var(--space-xs) var(--space-sm);white-space:pre;font-family:monospace;font-size:var(--font-size-xs);line-height:1.5;overflow-x:auto}.settings-sync-conflict-modal__resolution{display:flex;gap:var(--space-md);align-items:center}.settings-sync-conflict-modal__resolution label{display:flex;align-items:center;gap:var(--space-xs);cursor:pointer}.settings-sync-conflict-modal__resolution input[type=radio]{cursor:pointer}.settings-sync-conflict-modal__manual-input{width:100%;font-family:monospace;font-size:var(--font-size-xs);min-height:80px;margin-top:var(--space-xs);padding:var(--space-sm);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);resize:vertical}.settings-sync-conflict-modal__manual-input:focus{outline:none;border-color:var(--todo);box-shadow:var(--focus-ring)}.settings-sync-conflict-modal__bulk-actions{display:flex;gap:var(--space-xs);padding-top:var(--space-sm);border-top:1px solid var(--border)}.settings-sync-conflict-modal__footer{display:flex;justify-content:flex-end;gap:var(--space-xs)}.node-detail-modal{max-width:calc(var(--space-lg) * 53.75);width:min(calc(var(--space-lg) * 53.75),calc(100vw - (var(--space-lg) * 2)))}.node-detail-modal__body{display:flex;flex-direction:column;gap:var(--space-md);max-height:min(72vh,calc(var(--space-lg) * 42.5));overflow-y:auto}.node-detail-modal__section{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.node-detail-modal__section h4{margin:0 0 var(--space-sm) 0}.node-detail-modal__section-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.node-detail-modal__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.node-detail-modal__field{display:flex;flex-direction:column;gap:var(--space-xs)}.node-detail-modal__field--full{grid-column:span 2}.node-detail-modal__field span{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs))}.node-detail-modal__edit-actions{margin-top:var(--space-sm);display:flex;gap:var(--space-xs)}.node-detail-modal__project-list{margin:0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.node-detail-modal__project-item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm)}.node-detail-modal__project-item code{color:var(--text-muted)}.node-detail-modal__empty{margin:0;color:var(--text-muted)}.node-detail-modal__health-row{display:flex;flex-wrap:wrap;gap:var(--space-md)}.node-detail-modal__actions{justify-content:space-between}.node-detail-modal__docker-config{display:flex;flex-direction:column;gap:var(--space-sm)}.node-detail-modal__docker-toggle{align-self:flex-start}.node-detail-modal__docker-toggle-icon--expanded{transform:rotate(180deg)}.node-detail-modal__docker-config-content{display:flex;flex-direction:column;gap:var(--space-sm)}.node-detail-modal__docker-list{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-sm)}.node-detail-modal__docker-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-sm)}.node-detail-modal__docker-stack{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-sm)}.node-detail-modal__checkbox{display:flex;align-items:center;gap:var(--space-sm);color:var(--text-muted)}.node-detail-modal__docker-meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs))}.node-detail-modal__docker-recreate{color:var(--color-warning)}.node-detail-modal__docker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);margin-top:var(--space-sm)}.node-detail-modal__textarea{min-height:calc(var(--space-2xl) * 2.25);resize:vertical;font-family:var(--font-mono)}.node-detail-modal__sync-status{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-sm)}.node-detail-modal__sync-dot{width:calc(var(--space-sm) + var(--space-xs) / 2);height:calc(var(--space-sm) + var(--space-xs) / 2);border-radius:50%;flex-shrink:0}.node-detail-modal__sync-dot--synced{background:var(--color-success)}.node-detail-modal__sync-dot--diff,.node-detail-modal__sync-dot--pending{background:var(--color-warning)}.node-detail-modal__sync-dot--error{background:var(--color-error)}.node-detail-modal__sync-dot--never{background:var(--text-muted)}.node-detail-modal__sync-diff{color:var(--color-warning);font-size:calc(var(--space-sm) + var(--space-xs))}.node-detail-modal__sync-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm)}.node-detail-modal__sync-error{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm);background:color-mix(in srgb,var(--color-error) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-error) 30%,transparent);border-radius:var(--radius-sm);color:var(--color-error);font-size:calc(var(--space-sm) + var(--space-xs))}.node-detail-modal__sync-error-dismiss{background:transparent;border:none;color:var(--color-error);cursor:pointer;padding:calc(var(--space-xs) / 2);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}.node-detail-modal__sync-error-dismiss:hover{background:color-mix(in srgb,var(--color-error) 20%,transparent)}.node-detail-modal__sync-error-dismiss:focus-visible{outline:none;box-shadow:var(--focus-ring-strong);background:color-mix(in srgb,var(--color-error) 20%,transparent)}.docker-management{display:flex;flex-direction:column;gap:var(--space-md)}.docker-management__status-card{display:flex;flex-direction:column;gap:var(--space-sm);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.docker-management__status-row{display:inline-flex;align-items:center;gap:var(--space-sm)}.docker-management__status-dot{width:var(--space-sm);height:var(--space-sm);border-radius:50%}.docker-management__status-dot--success{background:var(--color-success)}.docker-management__status-dot--warning{background:var(--color-warning)}.docker-management__status-dot--error{background:var(--color-error)}.docker-management__status-meta{color:var(--text-muted);font-size:calc(var(--space-sm) + var(--space-xs));display:flex;gap:var(--space-md);flex-wrap:wrap}.docker-management__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.docker-management__info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.docker-management__log-viewer{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md)}.docker-management__log-viewer-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-sm)}.docker-management__log-viewer pre{margin:0;max-height:calc(var(--space-2xl) * 9.375);overflow-y:auto;font-family:var(--font-mono);font-size:calc(var(--space-sm) + var(--space-xs));color:var(--text);white-space:pre-wrap}.docker-management__env-list{margin:var(--space-sm) 0 0}.docker-management__env-list div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--space-sm);padding:var(--space-xs) 0}.docker-management__env-list dt{color:var(--text-muted);font-family:var(--font-mono)}.docker-management__env-list dd{margin:0;font-family:var(--font-mono);word-break:break-all}.docker-management__mounts-list{margin:var(--space-sm) 0 0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.docker-management__mounts-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}@media(max-width:768px){.node-detail-modal__grid,.node-detail-modal__docker-grid{grid-template-columns:1fr}.node-detail-modal__field--full{grid-column:span 1}.docker-management__actions{flex-direction:column}.docker-management__actions .btn{width:100%;justify-content:center}.docker-management__info-grid,.node-detail-modal__docker-row{grid-template-columns:1fr}.node-detail-modal__docker-toggle,.node-detail-modal__docker-config-content .btn{min-height:calc(var(--space-lg) * 2.25)}.docker-management__env-list div{grid-template-columns:1fr}.docker-management__mounts-list li{flex-direction:column;align-items:flex-start}.docker-management__log-viewer pre{max-height:calc(var(--space-2xl) * 6.25)}}.cc-area[data-testid=cc-area-funnel] .cc-area-section+.cc-area-section{margin-top:var(--space-lg)}.command-center{display:flex;flex:1;flex-direction:column;gap:0;min-height:0;inline-size:100%;padding:0}.cc-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:var(--space-md)}.cc-header{box-sizing:border-box;min-block-size:var(--view-header-min-height);padding:var(--space-lg) var(--space-xl);background:var(--surface)}@media(min-width:769px)and (min-height:481px){.cc-header{height:var(--view-header-min-height)}.cc-header>.cc-date-range{max-height:var(--view-header-content-row)}.cc-header>.cc-date-range .cc-date-range-trigger{min-height:0;max-height:var(--view-header-content-row);white-space:nowrap}}.cc-title{display:flex;align-items:center;gap:var(--space-sm);margin:0;font-size:1.125rem;font-weight:600;color:var(--text)}.cc-title svg{flex-shrink:0;color:var(--todo)}.cc-tablist{display:flex;flex-shrink:0;flex-wrap:wrap;gap:var(--space-xs);padding:var(--space-md) var(--space-xl) 0;border-bottom:1px solid var(--border-subtle)}.cc-tab{appearance:none;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);padding:var(--space-sm) var(--space-md);cursor:pointer;font-size:.8125rem;transition:color var(--transition-fast),border-color var(--transition-fast)}.cc-tab:hover{color:var(--text)}.cc-tab.active{color:var(--text);border-bottom-color:var(--accent)}.cc-tabpanel{flex:1;min-height:0;min-inline-size:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;outline:none;padding:var(--space-lg) var(--space-xl) var(--space-xl);-webkit-overflow-scrolling:touch}.cc-system-tab{display:flex;flex-direction:column;gap:var(--space-lg);min-inline-size:0}@media(max-width:768px){.cc-tabpanel{padding-bottom:calc(var(--space-lg) + env(safe-area-inset-bottom,0) + var(--standalone-bottom-gap))}.cc-system-tab{gap:var(--space-lg)}}.cc-overview{min-inline-size:0;display:flex;flex-direction:column;gap:var(--space-lg)}.cc-verification-requests{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md)}.cc-verification-requests__item{display:grid;grid-template-columns:minmax(calc(var(--space-2xl) * 2),auto) minmax(0,1fr);gap:var(--space-sm);align-items:start}.cc-verification-requests__task{padding:var(--space-sm) 0;color:var(--text-muted);font-size:.8125rem;font-variant-numeric:tabular-nums}@media(max-width:768px){.cc-verification-requests__item{grid-template-columns:1fr}}.cc-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,calc(var(--space-2xl) * 5)),1fr));gap:var(--space-md)}.cc-stat-card{container-type:inline-size;display:flex;flex-direction:column;gap:var(--space-sm);min-inline-size:0;padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1)}.cc-stat-label{font-size:.8125rem;color:var(--text-muted)}.cc-stat-value{max-width:100%;min-width:0;overflow:hidden;white-space:nowrap;font-size:clamp(.95rem,16cqi,2.4rem);line-height:1.1;font-variant-numeric:tabular-nums;color:var(--text)}.cc-stat-card--gauge{align-items:center;text-align:center}.cc-github-backfill-actions,.cc-productivity-backfill-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.cc-github-backfill-status,.cc-productivity-backfill-status{display:flex;flex-direction:column;gap:var(--space-xs);color:var(--text-muted);font-size:.75rem}.cc-github-backfill-status--error,.cc-productivity-backfill-status--error{color:var(--color-error)}.cc-github-backfill-status--warning,.cc-productivity-backfill-status--warning{color:var(--color-warning)}@media(max-width:768px){.cc-github-backfill-actions,.cc-productivity-backfill-actions{align-items:stretch;flex-direction:column}.cc-github-backfill-actions .btn,.cc-productivity-backfill-actions .btn{justify-content:center;inline-size:100%}}.cc-live-strip{position:relative;display:grid;grid-template-columns:minmax(calc(var(--space-2xl) * 5),1fr) minmax(calc(var(--space-2xl) * 8),2fr) minmax(calc(var(--space-2xl) * 5),1fr);align-items:center;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 7%,transparent),transparent),var(--surface-1);box-shadow:0 0 var(--space-lg) color-mix(in srgb,var(--accent) 9%,transparent);overflow:hidden;font-size:.8125rem}.cc-live-strip:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 10%,transparent),transparent);opacity:.25;transform:translate(-100%);animation:cc-live-signal-sweep calc(var(--duration-slow) * 8) linear infinite;pointer-events:none}.cc-live-strip-heading,.cc-live-strip-metrics,.cc-live-trend{min-inline-size:0;position:relative;z-index:1}.cc-live-strip-heading{display:flex;align-items:center;gap:var(--space-sm)}.cc-live-strip-label{color:var(--text);font-weight:600}.cc-live-strip-metrics{min-inline-size:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm)}.cc-live-metric{container-type:inline-size;min-inline-size:0;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--surface-2) 70%,transparent);animation:cc-live-signal-pulse calc(var(--duration-slow) * 6) ease-in-out infinite}.cc-live-metric-value{max-width:100%;min-width:0;overflow:hidden;white-space:nowrap;color:var(--text);font-size:clamp(.75rem,6cqi,1.125rem);font-weight:700;font-variant-numeric:tabular-nums}.cc-token-count-live{animation:cc-token-count-pop var(--duration-normal) ease-out both}@keyframes cc-token-count-pop{0%{transform:translateY(var(--space-xs));opacity:.7}to{transform:translateY(0);opacity:1}}.cc-live-metric-label,.cc-live-trend-label{color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.cc-live-trend{min-inline-size:0;display:flex;flex-direction:column;gap:var(--space-sm)}.cc-live-trend .cc-sparkline{block-size:calc(var(--space-2xl) + var(--space-sm))}.cc-live-trend .cc-sparkline-bar{box-shadow:0 0 var(--space-sm) color-mix(in srgb,var(--accent) 28%,transparent);animation:cc-live-signal-pulse calc(var(--duration-slow) * 5) ease-in-out infinite}@keyframes cc-live-signal-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes cc-live-signal-pulse{0%,to{opacity:.78}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.cc-live-strip:before,.cc-live-metric,.cc-live-trend .cc-sparkline-bar,.cc-token-count-live{animation:none}}.cc-overview-charts{min-inline-size:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);align-items:stretch}.cc-overview-chart-card{min-inline-size:0;position:relative;display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 6%,transparent),transparent),var(--surface-1);box-shadow:0 0 var(--space-lg) color-mix(in srgb,var(--accent) 7%,transparent);overflow:hidden;animation:cc-overview-chart-rise var(--duration-normal) ease-out both}.cc-overview-chart-card--trend{grid-column:1 / -1}.cc-overview-chart-card:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 8%,transparent),transparent);opacity:0;pointer-events:none;animation:cc-overview-chart-sheen calc(var(--duration-slow) * 7) ease-in-out infinite}.cc-overview-chart-header{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--space-xs)}.cc-overview-chart-header p{margin:0;color:var(--text-muted);font-size:.8125rem}.cc-overview-chart-card .cc-bar-chart,.cc-overview-chart-card .cc-sparkline,.cc-overview-chart-card .cc-recharts-chart,.cc-overview-chart-card .cc-recharts-empty{position:relative;z-index:1}.cc-overview-chart-card .cc-recharts-chart,.cc-overview-chart-card .cc-recharts-empty{inline-size:100%;block-size:calc(var(--space-2xl) * 7 + var(--space-lg));min-inline-size:0}.cc-overview-chart-card .cc-sparkline{block-size:calc(var(--space-2xl) * 2)}.cc-overview-chart-card .cc-bar-fill,.cc-overview-chart-card .cc-sparkline-bar{box-shadow:0 0 var(--space-sm) color-mix(in srgb,var(--accent) 30%,transparent)}@keyframes cc-overview-chart-rise{0%{opacity:0;transform:translateY(var(--space-sm))}to{opacity:1;transform:translateY(0)}}@keyframes cc-overview-chart-sheen{0%{opacity:0;transform:translate(-100%)}45%,55%{opacity:.35}to{opacity:0;transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.cc-overview-chart-card,.cc-overview-chart-card:before{animation:none}}@media(min-width:769px)and (max-width:1024px){.command-center{flex:1;min-block-size:0;overflow:hidden}.cc-tabpanel{flex:1;min-block-size:0;overflow-x:hidden;overflow-y:auto}.cc-live-strip,.cc-overview-charts,.cc-team-chart-grid{min-inline-size:0;grid-template-columns:minmax(0,1fr)}.cc-live-strip-metrics{min-inline-size:0;grid-template-columns:repeat(2,minmax(0,1fr))}.cc-overview-chart-card--trend,.cc-team-spark-panel{grid-column:auto}.cc-stat-grid,.cc-area .cc-stat-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,calc(var(--space-2xl) * 5)),1fr))}}@media(max-width:768px){.cc-stat-grid{min-inline-size:0;grid-template-columns:minmax(0,1fr)}.cc-live-strip{grid-template-columns:1fr}.cc-live-strip-metrics,.cc-overview-charts{min-inline-size:0;grid-template-columns:1fr}.cc-overview-chart-card--trend{grid-column:auto}}.cc-loading,.cc-error,.cc-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xl);color:var(--text-muted);text-align:center}.cc-error{color:var(--color-error)}.cc-loading .cc-chart-skeleton{block-size:var(--space-lg);border-radius:var(--radius-sm);background:var(--surface-2);animation:cc-shell-pulse var(--duration-slow) ease-in-out infinite}@keyframes cc-shell-pulse{0%,to{opacity:.4}50%{opacity:.9}}.cc-overview-engine-panel{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--surface-1)}.cc-overview-engine-panel-header{display:flex;align-items:center;gap:var(--space-sm);color:var(--text)}.cc-overview-engine-panel-title{font-size:.9375rem;font-weight:600}.cc-overview-engine-panel-status{margin:0;font-size:.8125rem;color:var(--text-muted)}.cc-overview-engine-nav{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-lg)}.cc-overview-engine-nav-btn{flex:1 1 auto;justify-content:center}
|