tide-commander 0.63.1 → 0.63.2
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.
|
@@ -146,7 +146,7 @@ Error generating stack: `+y.message+`
|
|
|
146
146
|
float h = normalize(vWorldPosition + offset).y;
|
|
147
147
|
gl_FragColor = vec4(mix(bottomColor, topColor, max(pow(max(h, 0.0), exponent), 0.0)), 1.0);
|
|
148
148
|
}
|
|
149
|
-
`,side:ij});i.add(new Te(o,r)),i.add(new og(16777215,1));const c=s.fromScene(i,.04).texture;t.environment=c,s.dispose(),o.dispose(),r.dispose()}createInputCallbacks(){return{onAgentClick:(e,t)=>this.inputEventHandlers.handleAgentClick(e,t),onAgentDoubleClick:e=>this.inputEventHandlers.handleAgentDoubleClick(e),onAgentHover:(e,t)=>this.inputEventHandlers.handleAgentHover(e,t),onGroundClick:()=>this.inputEventHandlers.handleGroundClick(),onMoveCommand:(e,t)=>this.inputEventHandlers.handleMoveCommand(e,t),onSelectionBox:(e,t)=>this.inputEventHandlers.handleSelectionBox(e,t),onDrawStart:e=>this.drawingManager.startDrawing(e),onDrawMove:e=>this.drawingManager.updateDrawing(e),onDrawEnd:e=>this.drawingManager.finishDrawing(e),onAreaRightClick:e=>this.inputEventHandlers.handleAreaRightClick(e),onAreaClick:e=>this.inputEventHandlers.handleAreaClick(e),onAreaDoubleClick:e=>this.inputEventHandlers.handleAreaDoubleClick(e),onResizeStart:(e,t)=>this.drawingManager.startResize(e,t),onResizeMove:e=>this.drawingManager.updateResize(e),onResizeEnd:()=>this.drawingManager.finishResize(),onGroundClickOutsideArea:()=>this.inputEventHandlers.handleGroundClickOutsideArea(),onFolderIconClick:(e,t)=>{var s;t?O.openFileExplorerForAreaFolder(e,t):O.openFileExplorerForArea(e),(s=this.onFolderIconClickCallback)==null||s.call(this,e)},onBuildingClick:(e,t)=>this.inputEventHandlers.handleBuildingClick(e,t),onBuildingDoubleClick:e=>this.inputEventHandlers.handleBuildingDoubleClick(e),onBuildingHover:(e,t)=>this.inputEventHandlers.handleBuildingHover(e,t),onBuildingDragStart:()=>{},onBuildingDragMove:(e,t)=>this.buildingManager.setBuildingPosition(e,t),onBuildingDragEnd:(e,t)=>O.updateBuildingPosition(e,t),onContextMenu:(e,t,s)=>this.callbackManager.triggerContextMenu(e,t,s),onActivity:()=>this.renderLoop.markActivity(),onToggleTerminal:()=>O.toggleTerminal()}}setupInputHandlerHelpers(){this.inputHandler.setDrawingModeChecker(()=>this.drawingManager.isInDrawingMode()),this.inputHandler.setResizeHandlers(()=>this.drawingManager.getResizeHandles(),()=>this.drawingManager.isCurrentlyResizing()),this.inputHandler.setAreaAtPositionGetter(e=>this.drawingManager.getAreaAtPosition(e)),this.inputHandler.setFolderIconMeshesGetter(()=>this.drawingManager.getFolderIconMeshes()),this.inputHandler.setBuildingAtPositionGetter(e=>{const t=this.buildingManager.getBuildingAtPosition(e);return t?{id:t.id}:null}),this.inputHandler.setBuildingPositionsGetter(()=>{const e=new Map;for(const[t,s]of this.buildingManager.getBuildingMeshData())e.set(t,s.group.position.clone());return e})}setupEventListeners(e){window.addEventListener("resize",this.onWindowResize),this.resizeObserver=new ResizeObserver(()=>this.onWindowResize()),e.parentElement&&this.resizeObserver.observe(e.parentElement),e.addEventListener("webglcontextlost",this.onContextLost),e.addEventListener("webglcontextrestored",this.onContextRestored)}updateInputHandlerReferences(){this.inputHandler.setReferences(this.battlefield.getGround(),this.agentManager.getAgentMeshes())}updateBattlefield(e,t){t-this.lastTimeUpdate>6e4&&(this.battlefield.updateTimeOfDay(),this.lastTimeUpdate=t),this.battlefield.updateGalacticAnimation(e),this.battlefield.updateCloudAnimation(e)}updateAnimations(e){const t=this.movementAnimator.update(this.agentManager.getAgentMeshes(),e);return this.effectsManager.update(),this.buildingManager.update(e),t}updateProceduralAnimations(e){if(this.proceduralBodiesDirty){this.proceduralBodiesCache.clear();for(const[t,s]of this.agentManager.getAgentMeshes())if(this.proceduralAnimator.has(t)&&s.animations.size===0){const i=s.group.getObjectByName("characterBody");i&&this.proceduralBodiesCache.set(t,i)}this.proceduralBodiesDirty=!1}this.proceduralBodiesCache.size>0&&this.proceduralAnimator.update(e,this.proceduralBodiesCache)}updateIndicatorScales(e,t,s){for(const[,i]of t){const o=e.position.distanceTo(i.group.position),r=Math.max(.5,Math.min(2.5,o/15))*s,c=i.group.userData.isBoss===!0,u=i.group.getObjectByName("statusBar"),h=i.group.getObjectByName("nameLabelSprite");if(u){const m=typeof u.userData.baseIndicatorScale=="number"?u.userData.baseIndicatorScale:c?2:1.6,g=typeof u.userData.aspectRatio=="number"?u.userData.aspectRatio:2560/4096;u.scale.set(m*r,m*g*r,1)}if(h){const m=typeof h.userData.baseIndicatorScale=="number"?h.userData.baseIndicatorScale:c?1.5:1.25,x=Math.max(c?1.35:1.1,Math.min(c?1.65:1.35,m)),w=typeof h.userData.aspectRatio=="number"?h.userData.aspectRatio:1024/4096;h.scale.set(x*r,x*w*r,1)}const p=i.group.getObjectByName("combinedUI");if(p){const m=typeof p.userData.baseIndicatorScale=="number"?p.userData.baseIndicatorScale:c?3:2.4,g=typeof p.userData.aspectRatio=="number"?p.userData.aspectRatio:1024/2048;p.scale.set(m*r,m*g*r,1)}if(!u&&!p){const m=i.group.getObjectByName("nameLabel");if(m){const x=.3*r;m.scale.set(x*(m.userData.aspectRatio||2),x,1)}const g=i.group.getObjectByName("manaBar");g&&g.scale.set(.9,.14,1);const b=i.group.getObjectByName("idleTimer");b&&b.scale.set(.9*r,.14*r,1)}}for(const[,i]of this.buildingManager.getBuildingMeshData()){const o=e.position.distanceTo(i.group.position),r=Math.max(.5,Math.min(2.5,o/15))*s,c=i.group.getObjectByName("buildingLabel");if(c){const u=.3*r;c.scale.set(u*(c.userData.aspectRatio||2),u,1)}}this.effectsManager.updateWithCamera(e)}async loadCharacterModels(){await this.agentManager.loadCharacterModels()}upgradeAgentModels(){this.agentManager.upgradeAgentModels(),this.updateInputHandlerReferences()}addAgent(e){this.agentManager.addAgent(e)}removeAgent(e){this.agentManager.removeAgent(e),this.updateInputHandlerReferences()}updateAgent(e,t=!1){this.agentManager.updateAgent(e,t)}syncAgents(e){this.agentManager.syncAgents(e)}setCustomAgentClasses(e){this.agentManager.setCustomAgentClasses(e)}refreshSelectionVisuals(){this.selectionManager.refreshSelectionVisuals()}createMoveOrderEffect(e){this.effectsManager.createMoveOrderEffect(e)}showToolBubble(e,t,s){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createSpeechBubble(e,t,s)}showDelegationEffect(e,t){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createDelegationEffect(e,t)}addSubagentEffect(e,t,s,i){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.addSubagentEffect(e,t,s,i)}completeSubagentEffect(e){this.effectsManager.completeSubagentEffect(e)}removeSubagentEffect(e){this.effectsManager.removeSubagentEffect(e)}focusAgent(e){this.cameraManager.focusAgent(e)}callSubordinates(e){var r;const s=O.getState().agents.get(e);if(!s||!(s.isBoss||s.class==="boss")||!((r=s.subordinateIds)!=null&&r.length))return;const i=new ut(s.position.x,s.position.y,s.position.z),o=this.inputHandler.calculateFormationPositions(i,s.subordinateIds.length);this.effectsManager.createMoveOrderEffect(i.clone()),s.subordinateIds.forEach((c,u)=>{const h=this.agentManager.getAgentMeshes().get(c);O.moveAgent(c,o[u]),h&&this.movementAnimator.startMovement(c,h,o[u])})}setDrawingTool(e){this.drawingManager.setTool(e),O.setActiveTool(e)}syncAreas(){this.drawingManager.syncFromStore()}highlightArea(e){this.drawingManager.highlightArea(e)}clearAreaSelection(){this.drawingManager.highlightArea(null)}addBuilding(e){this.buildingManager.addBuilding(e)}removeBuilding(e){this.buildingManager.removeBuilding(e)}updateBuilding(e){this.buildingManager.updateBuilding(e)}syncBuildings(){this.buildingManager.syncFromStore()}highlightBuilding(e){this.buildingManager.highlightBuilding(e)}setOnBuildingClick(e){this.callbackManager.setOnBuildingClick(e)}setOnBuildingDoubleClick(e){this.callbackManager.setOnBuildingDoubleClick(e)}setOnContextMenu(e){this.callbackManager.setOnContextMenu(e)}setOnAgentHover(e){this.callbackManager.setOnAgentHover(e)}setOnBuildingHover(e){this.callbackManager.setOnBuildingHover(e)}setOnGroundClick(e){this.callbackManager.setOnGroundClick(e)}setOnAreaDoubleClick(e){this.callbackManager.setOnAreaDoubleClick(e)}setOnFolderIconClick(e){this.onFolderIconClickCallback=e}setOnToast(e){this.agentManager.setOnToast(e)}setCharacterScale(e){this.agentManager.setCharacterScale(e),this.selectionManager.setCharacterScale(e)}setIndicatorScale(e){this.renderLoop.setIndicatorScale(e),this.effectsManager.setIndicatorScale(e)}setFpsLimit(e){this.renderLoop.setFpsLimit(e)}setPowerSaving(e){this.renderLoop.setPowerSaving(e)}setGridVisible(e){this.battlefield.setGridVisible(e)}setDebugTime(e){this.battlefield.setDebugTime(e)}setTimeMode(e){this.battlefield.setTimeMode(e)}setTerrainConfig(e){this.battlefield.setTerrainConfig(e),e.brightness!==void 0&&(this.drawingManager.setBrightness(e.brightness),this.buildingManager.setBrightness(e.brightness),this.agentManager.setBrightness(e.brightness))}setFloorStyle(e,t=!1){this.battlefield.setFloorStyle(e,t)}setIdleAnimation(e){this.agentManager.setIdleAnimation(e)}setWorkingAnimation(e){this.agentManager.setWorkingAnimation(e)}setAgentModelStyle(e){this.agentManager.setModelStyle(e)}getAgentModelStyle(){return this.agentManager.getModelStyle()}setGlobalSaturation(e){this.sceneCore.setSaturation(e)}getGlobalSaturation(){return this.sceneCore.getSaturation()}setPostProcessingEnabled(e){this.sceneCore.setPostProcessingEnabled(e)}reattach(e,t){var o,r;console.log("[SceneManager] Reattaching to new canvas (HMR)"),this.isReattaching=!0,this.renderLoop.stop(),(o=this.resizeObserver)==null||o.disconnect();const s=this.sceneCore.getCanvas();s.removeEventListener("webglcontextlost",this.onContextLost),s.removeEventListener("webglcontextrestored",this.onContextRestored),this.sceneCore.reattach(e),this.cameraManager.recreateControls(this.sceneCore.getRenderer()),this.sceneCore.updateCamera(this.cameraManager.getCamera()),e.addEventListener("webglcontextlost",this.onContextLost),e.addEventListener("webglcontextrestored",this.onContextRestored),this.inputHandler.reattach(e,t,this.cameraManager.getControls()),this.updateInputHandlerReferences(),e.parentElement&&((r=this.resizeObserver)==null||r.observe(e.parentElement)),this.onWindowResize();const i=(c=0)=>{this.isReattaching=!1,e.isConnected&&this.sceneCore.getRenderer()?(console.log("[SceneManager] Restarting animation loop after HMR reattach"),this.renderLoop.start()):c<10?(console.log(`[SceneManager] Canvas not connected, retrying... (attempt ${c+1})`),this.isReattaching=!0,requestAnimationFrame(()=>i(c+1))):console.warn("[SceneManager] Failed to restart animation loop - canvas never connected")};requestAnimationFrame(()=>i())}getMemoryDiagnostics(){var t;const e=this.sceneCore.getRenderer().info;return{threeJs:e!=null&&e.memory?{geometries:e.memory.geometries,textures:e.memory.textures,programs:((t=e.programs)==null?void 0:t.length)??0}:null,heap:kr.getUsage(),agentMeshCount:this.agentManager.getAgentMeshes().size,bossLineCount:0}}getRenderStats(){var t,s;const e=(s=(t=this.sceneCore.getRenderer())==null?void 0:t.info)==null?void 0:s.render;return e?{calls:e.calls,triangles:e.triangles,points:e.points,lines:e.lines}:null}get renderer(){return this.sceneCore.getRenderer()}logMemoryDiagnostics(){const e=this.getMemoryDiagnostics(),t=this.characterLoader.getCacheStats();console.group("%c[SceneManager Memory]","color: #ff6600; font-weight: bold"),e.threeJs&&console.log(`Three.js: ${e.threeJs.geometries} geometries, ${e.threeJs.textures} textures, ${e.threeJs.programs} programs`),e.heap&&console.log(`Heap: ${e.heap.usedMB}MB / ${e.heap.totalMB}MB (limit: ${e.heap.limitMB}MB)`),console.log(`Agent meshes: ${e.agentMeshCount}`),console.log(`CharacterLoader cache: ${t.builtInModels} built-in, ${t.customModels} custom`),t.modelNames.length>0&&console.log(` Built-in models: ${t.modelNames.join(", ")}`),t.customModelIds.length>0&&console.log(` Custom models: ${t.customModelIds.join(", ")}`),console.groupEnd()}dispose(){var s;console.log("%c[SceneManager] dispose() called - starting cleanup","color: #ff0000; font-weight: bold");const e=this.characterLoader.getCacheStats();console.log(`[SceneManager] Pre-dispose: ${e.builtInModels} built-in models, ${e.customModels} custom models`),this.renderLoop.stop(),window.removeEventListener("resize",this.onWindowResize);const t=this.sceneCore.getCanvas();t.removeEventListener("webglcontextlost",this.onContextLost),t.removeEventListener("webglcontextrestored",this.onContextRestored),(s=this.resizeObserver)==null||s.disconnect(),this.resizeObserver=null,this.inputHandler.dispose(),this.drawingManager.dispose(),this.buildingManager.dispose(),this.effectsManager.dispose(),this.agentManager.dispose(),this.selectionManager.dispose(),this.battlefield.dispose(),this.characterLoader.dispose(),this.cameraManager.dispose(),this.sceneCore.dispose(),console.log("%c[SceneManager] dispose() complete - all resources freed","color: #00ff00; font-weight: bold")}}const dd="tide_webgl_active";typeof window<"u"&&(window.__tidePersistedScene===void 0&&(window.__tidePersistedScene=null),window.__tidePersistedCanvas===void 0&&(window.__tidePersistedCanvas=null),window.__tideWsConnected===void 0&&(window.__tideWsConnected=!1),window.__tideIsPageUnloading===void 0&&(window.__tideIsPageUnloading=!1));function Rd(){return typeof window<"u"?window.__tidePersistedScene??null:null}function Wj(){return typeof window<"u"?window.__tidePersistedCanvas??null:null}function sR(){return typeof window<"u"?window.__tideWsConnected??!1:!1}function hc(n){typeof window<"u"&&(window.__tidePersistedScene=n)}function hd(n){typeof window<"u"&&(window.__tidePersistedCanvas=n)}function Vj(n){typeof window<"u"&&(window.__tideWsConnected=n)}function aR(n){typeof window<"u"&&(window.__tideIsPageUnloading=n)}function iR(){sessionStorage.setItem(dd,"true")}function Fu(n){aR(!0),sessionStorage.removeItem(dd),Lj(),Q2(),window.__tideScene&&(window.__tideScene=null);const e=Rd();e?(console.log("[App] Calling persistedScene.dispose()"),e.dispose(),hc(null)):console.log("[App] No persistedScene to dispose"),hd(null),Vj(!1);const t=document.getElementById("battlefield");t&&t.remove();const s=document.getElementById("app");s&&(s.innerHTML="")}function oR(){var i,o;if(window.__tideAppInitialized)return;if(window.__tideAppInitialized=!0,sessionStorage.getItem(dd)==="true"&&console.log("[App] Detected unclean shutdown from previous session - forcing cleanup"),window.__tideScene){console.log("[App] Cleaning up stale __tideScene reference");try{(o=(i=window.__tideScene).dispose)==null||o.call(i)}catch{}window.__tideScene=null}const e=Rd();if(e){console.log("[App] Cleaning up stale persistedScene");try{e.dispose()}catch{}hc(null)}const t=document.getElementById("battlefield"),s=Wj();t&&t!==s&&t.remove(),sessionStorage.removeItem(dd)}function rR(){typeof window>"u"||(oR(),window.addEventListener("pageshow",n=>{n.persisted&&(console.log("[App] Page restored from bfcache - cleaning up"),Fu(),window.location.reload())}),window.onunload=()=>Fu(),window.onbeforeunload=n=>{Fu()},window.addEventListener("pagehide",n=>{Fu(`pagehide (persisted=${n.persisted})`)}))}rR();const cw={showTrees:!0,showBushes:!0,showHouse:!0,showLamps:!0,showGrass:!0,showClouds:!0,fogDensity:1,floorStyle:"concrete",brightness:1,skyColor:null},uw={saturation:2,roughness:.5,metalness:-1,emissiveBoost:0,envMapIntensity:1,wireframe:!1,colorMode:"normal"},dw={idleAnimation:"sit",workingAnimation:"sprint"},lR=0;function Kj(){const n={characterScale:2,indicatorScale:1,gridVisible:!0,timeMode:"day",terrain:cw,modelStyle:uw,animations:dw,fpsLimit:lR},e=Aa(ht.CONFIG,null);return e?{characterScale:e.characterScale??n.characterScale,indicatorScale:e.indicatorScale??n.indicatorScale,gridVisible:e.gridVisible??n.gridVisible,timeMode:e.timeMode??n.timeMode,terrain:{...cw,...e.terrain},modelStyle:{...uw,...e.modelStyle},animations:{...dw,...e.animations},fpsLimit:e.fpsLimit??n.fpsLimit}:n}function cR(n){ei(ht.CONFIG,n)}typeof window<"u"&&!window.__tideHmrRefreshListeners&&(window.__tideHmrRefreshListeners=new Set);function Xj(){console.log("[Tide HMR] Manual scene refresh triggered");const n=Rd();if(n){try{n.dispose()}catch(t){console.warn("[Tide HMR] Error disposing scene:",t)}hc(null)}hd(null),window.__tideScene&&(window.__tideScene=null);const e=document.getElementById("battlefield");if(e){const t=e.getContext("webgl2")||e.getContext("webgl");if(t){const s=t.getExtension("WEBGL_lose_context");s&&s.loseContext()}}window.__tideHmrPendingSceneChanges=!1,window.location.reload()}typeof window<"u"&&(window.__tideHmrSceneRefresh=Xj);function uR({canvasRef:n,selectionBoxRef:e,showToast:t,showAgentNotification:s,toolboxModal:i,contextMenu:o,setHoveredAgentPopup:r,setBuildingPopup:c,getBuildingPopup:u,openBuildingModal:h,openPM2LogsModal:p,openBossLogsModal:m,openDatabasePanel:g}){const b=v.useRef(null),x=v.useRef(null),w=v.useRef(null);return v.useEffect(()=>{if(!n.current||!e.current)return;let k=!1;const S=Rd(),A=Wj()===n.current;function T(){var D,M,F,E,R,_,L,z;(D=b.current)==null||D.setOnToast(t),(M=b.current)==null||M.setOnBuildingClick(($,G)=>{O.selectBuilding($);const I=O.getState().buildings.get($);(I==null?void 0:I.type)==="folder"&&I.folderPath?O.openFileExplorer(I.folderPath):(I==null?void 0:I.type)==="server"||(I==null?void 0:I.type)==="boss"||(I==null?void 0:I.type)==="database"?(x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{c({buildingId:$,screenPos:G,fromClick:!0}),x.current=null},150)):h($)}),(F=b.current)==null||F.setOnContextMenu(($,G,I)=>{o.open($,G,I)}),(E=b.current)==null||E.setOnAgentHover(()=>{}),(R=b.current)==null||R.setOnBuildingHover(($,G)=>{const I=u();if($&&G){const q=O.getState().buildings.get($);((q==null?void 0:q.type)==="server"||(q==null?void 0:q.type)==="boss"||(q==null?void 0:q.type)==="database")&&!(I!=null&&I.fromClick)&&c({buildingId:$,screenPos:G,fromClick:!1})}else I!=null&&I.fromClick||c(null)}),(_=b.current)==null||_.setOnGroundClick(()=>{c(null)}),(L=b.current)==null||L.setOnAreaDoubleClick($=>{O.selectArea($),i.open()}),(z=b.current)==null||z.setOnBuildingDoubleClick($=>{var I;x.current&&(clearTimeout(x.current),x.current=null),c(null);const G=O.getState().buildings.get($);(G==null?void 0:G.type)==="server"&&((I=G.pm2)!=null&&I.enabled)?p==null||p($):(G==null?void 0:G.type)==="boss"?m==null||m($):(G==null?void 0:G.type)==="database"?g==null||g($):(G==null?void 0:G.type)==="folder"&&G.folderPath?O.openFileExplorer(G.folderPath):h($)})}if(S&&A){b.current=S,console.log("[Tide] Reusing existing scene (StrictMode remount)");const D=O.getState();S.syncAreas(),S.syncBuildings(),D.agents.size>0&&(console.log("[Tide] Re-syncing agents from store after remount:",D.agents.size),S.syncAgents(Array.from(D.agents.values()))),T()}else{const D=n.current,M=e.current,F=()=>{if(k){console.log("[Tide] Effect cleaned up before scene init, skipping");return}if(!D.isConnected||!M.isConnected){console.warn("[Tide] Canvas disconnected before initialization");return}(!D.clientWidth||!D.clientHeight)&&(console.log("[Tide] Canvas has no CSS dimensions, using window fallback"),D.style.width="100%",D.style.height="100%",D.offsetHeight),(!D.clientWidth||!D.clientHeight)&&(D.width=window.innerWidth,D.height=window.innerHeight),iR();try{const E=new nR(D,M);b.current=E,hc(E),hd(D);const R=Kj();E.setCharacterScale(R.characterScale),E.setIndicatorScale(R.indicatorScale),E.setGridVisible(R.gridVisible),E.setTimeMode(R.timeMode),E.setTerrainConfig(R.terrain),E.setFloorStyle(R.terrain.floorStyle,!0),E.setAgentModelStyle(R.modelStyle),E.setIdleAnimation(R.animations.idleAnimation),E.setWorkingAnimation(R.animations.workingAnimation),E.setFpsLimit(R.fpsLimit),E.syncAreas(),E.syncBuildings(),E.loadCharacterModels().then(()=>{console.log("[Tide] Character models ready");const _=O.getState();_.customAgentClasses.size>0&&(console.log("[Tide] Applying custom classes from store:",_.customAgentClasses.size),E.setCustomAgentClasses(_.customAgentClasses)),_.agents.size>0&&(console.log("[Tide] Syncing agents from store:",_.agents.size),E.syncAgents(Array.from(_.agents.values()))),E.upgradeAgentModels()}).catch(_=>{console.warn("[Tide] Some models failed to load, using fallback:",_)}),T()}catch(E){console.error("[Tide] Failed to initialize 3D scene:",E)}};w.current=requestAnimationFrame(F)}return _j({onAgentCreated:D=>{var M,F;(M=b.current)==null||M.addAgent(D),(F=window.__spawnModalSuccess)==null||F.call(window)},onAgentUpdated:(D,M)=>{var F;(F=b.current)==null||F.updateAgent(D,M)},onAgentDeleted:D=>{var M;(M=b.current)==null||M.removeAgent(D)},onAgentsSync:D=>{var M;(M=b.current)==null||M.syncAgents(D)},onAreasSync:()=>{var M,F;(M=b.current)==null||M.syncAreas();const D=Array.from(O.getState().agents.values());(F=b.current)==null||F.syncAgents(D)},onSpawnError:()=>{var D;(D=window.__spawnModalError)==null||D.call(window)},onSpawnSuccess:()=>{var D;(D=window.__spawnModalSuccess)==null||D.call(window)},onDirectoryNotFound:D=>{var M;(M=window.__spawnModalDirNotFound)==null||M.call(window,D)},onToolUse:(D,M,F)=>{var E;(E=b.current)==null||E.showToolBubble(D,M,F)},onDelegation:(D,M)=>{var F;(F=b.current)==null||F.showDelegationEffect(D,M)},onCustomClassesSync:D=>{var M,F;(M=b.current)==null||M.setCustomAgentClasses(D),(F=b.current)==null||F.upgradeAgentModels()},onBuildingUpdated:D=>{var M;(M=b.current)==null||M.updateBuilding(D)},onSubagentStarted:D=>{var M;(M=b.current)==null||M.addSubagentEffect(D.id,D.parentAgentId,D.name,D.subagentType)},onSubagentCompleted:D=>{var E;const M=O.getSubagent(D)||O.getSubagentByToolUseId(D),F=(M==null?void 0:M.id)||D;(E=b.current)==null||E.completeSubagentEffect(F),setTimeout(()=>{var R;(R=b.current)==null||R.removeSubagentEffect(F)},3e4)}}),()=>{var D;k=!0,w.current!==null&&(cancelAnimationFrame(w.current),w.current=null),!((D=n.current)!=null&&D.isConnected)&&b.current&&(console.log("[Tide] 3D canvas unmounted - disposing scene to free memory"),J2(),b.current.dispose(),b.current=null,hc(null),hd(null))}},[n.current,e.current]),b}let mc,Sr;try{mc=require("@capacitor/local-notifications").LocalNotifications,Sr=require("@capacitor/core").Capacitor}catch{}let dR=1;const hR="agent_alerts",Yj="tide-notification-tap";function mR(){return typeof window<"u"&&window.innerWidth<=768&&"ontouchstart"in window}function Zj(n){if(mR()){O.openTerminalOnMobile(n);return}O.selectAgent(n),O.setTerminalOpen(!0)}function gg(){var n;return((n=Sr==null?void 0:Sr.isNativePlatform)==null?void 0:n.call(Sr))??!1}async function pR(){return gg()?(await mc.requestPermissions()).display==="granted":"Notification"in window?await Notification.requestPermission()==="granted":!1}async function fR(n){const{title:e,body:t,icon:s,data:i}=n;if(gg())await mc.schedule({notifications:[{id:dR++,title:e,body:t,schedule:{at:new Date(Date.now()+100)},extra:i,channelId:hR,smallIcon:"ic_launcher",autoCancel:!0}]});else if("Notification"in window&&Notification.permission==="granted"){const o=new Notification(e,{body:t,icon:s,data:i});o.onclick=()=>{window.focus(),i&&window.dispatchEvent(new CustomEvent(Yj,{detail:i}))}}}async function gR(n){n&&window.addEventListener(Yj,e=>{const t=e;t.detail&&n(t.detail)}),gg()&&mc&&await mc.addListener("localNotificationActionPerformed",e=>{n&&e.notification.extra&&n(e.notification.extra)})}function bR({showToast:n,showAgentNotification:e}){const t=v.useRef(!1);v.useEffect(()=>{if(t.current||sR())return;t.current=!0,_j({onToast:n,onReconnect:()=>{O.triggerReconnect()},onAgentNotification:i=>{e(i)}}),dc(),Vj(!0),pR(),gR(i=>{i.type==="agent_notification"&&typeof i.agentId=="string"&&Zj(i.agentId)});const s=()=>{console.log("[Tide] App resumed from background, reconnecting..."),setTimeout(()=>dc(),100)};return window.addEventListener("tideAppResume",s),()=>{window.removeEventListener("tideAppResume",s)}},[n,e])}function yR(n){v.useEffect(()=>{let e="",t="",s=new Map;const i=o=>{var u;let r=!1;const c=new Map;for(const[h,p]of o){const g=`${p.position.x.toFixed(2)},${p.position.z.toFixed(2)},${p.status},${p.class},${p.isBoss},${((u=p.subordinateIds)==null?void 0:u.length)??0}`.split("").reduce((b,x)=>(b<<5)-b+x.charCodeAt(0),0);c.set(h,g),s.get(h)!==g&&(r=!0)}return c.size!==s.size&&(r=!0),{newVersion:c,changed:r}};return O.subscribe(()=>{var g;const o=O.getState(),r=Array.from(o.selectedAgentIds).sort().join(","),c=Array.from(o.selectedBuildingIds).sort().join(","),u=r!==e,h=c!==t,{newVersion:p,changed:m}=i(o.agents);(u||h||m)&&(e=r,t=c,s=p,(g=n.current)==null||g.refreshSelectionVisuals())})},[n])}function xR(n){v.useEffect(()=>{var s;(s=n.current)==null||s.syncAreas();let e=0,t=0;return O.subscribe(()=>{var c,u;const o=O.getState().areas;if(o.size!==e){e=o.size,t=Date.now(),(c=n.current)==null||c.syncAreas();return}let r=0;for(const[h,p]of o){let m=h.charCodeAt(0);m+=(p.width??0)+(p.height??0)+(p.radius??0),m+=Math.floor(p.center.x*100)+Math.floor(p.center.z*100),m+=(p.zIndex??0)*1e3;for(let g=0;g<p.name.length;g++)m+=p.name.charCodeAt(g);for(let g=0;g<p.color.length;g++)m+=p.color.charCodeAt(g);if(p.directoryGitCounts)for(const g of p.directoryGitCounts)m+=(g+1)*7;r^=m|0}r!==t&&(t=r,(u=n.current)==null||u.syncAreas())})},[n])}function vR(n){v.useEffect(()=>{var s;(s=n.current)==null||s.syncBuildings();let e=0,t=0;return O.subscribe(()=>{var c,u;const o=O.getState().buildings;if(o.size!==e){e=o.size,t=Date.now(),(c=n.current)==null||c.syncBuildings();return}let r=0;for(const[h,p]of o){r^=p.position.x*1e3+p.position.z|0,r^=(p.scale||1)*1e4|0;const m=`${p.style||""}${p.name}${p.status}${p.gitChangesCount||0}`;for(let g=0;g<m.length;g++)r=(r<<5)-r+m.charCodeAt(g)|0}r!==t&&(t=r,(u=n.current)==null||u.syncBuildings())})},[n])}function wR(n,e){v.useEffect(()=>{var t;(t=n.current)==null||t.highlightArea(e)},[n,e])}function kR(n,e){v.useEffect(()=>{var t;(t=n.current)==null||t.setPowerSaving(e)},[n,e])}function SR({sceneRef:n,spawnModal:e,commanderModal:t,explorerModal:s,spotlightModal:i,deleteConfirmModal:o,onRequestBuildingDelete:r}){v.useEffect(()=>{const c=u=>{var F,E,R,_;const h=O.getShortcuts(),p=u.target,m=p.tagName==="INPUT"||p.tagName==="TEXTAREA",g=h.find(L=>L.id==="deselect-all");if(mt(u,g)){if(gf()){u.preventDefault();return}const L=O.getState();if(L.activeTool==="rectangle"||L.activeTool==="circle"){(F=n.current)==null||F.setDrawingTool(null),typeof window<"u"&&window.__tideScene2D_setDrawingTool&&window.__tideScene2D_setDrawingTool(null);return}e.isOpen?e.close():L.terminalOpen?(O.setTerminalOpen(!1),document.activeElement instanceof HTMLElement&&document.activeElement.blur()):(O.deselectAll(),(E=n.current)==null||E.refreshSelectionVisuals())}for(let L=1;L<=9;L++){const z=h.find($=>$.id===`select-agent-${L}`);if(mt(u,z)){u.preventDefault();const $=O.getState(),G=L-1,I=Array.from($.agents.keys());G<I.length&&(O.selectAgent(I[G]),(R=n.current)==null||R.refreshSelectionVisuals());return}}const b=h.find(L=>L.id==="spawn-agent");if(mt(u,b)){u.preventDefault(),e.open();return}const x=h.find(L=>L.id==="toggle-commander-tab");if(mt(u,x)&&!m){u.preventDefault(),t.toggle();return}const w=h.find(L=>L.id==="toggle-commander");if(mt(u,w)){u.preventDefault(),t.toggle();return}const k=h.find(L=>L.id==="toggle-file-explorer");if(mt(u,k)){u.preventDefault();const L=O.getState();if(s.isOpen||L.explorerFolderPath!==null||L.explorerAreaId!==null)s.close(),O.closeFileExplorer();else{const $=O.getLastExplorerState();if(($==null?void 0:$.type)==="folder")O.openFileExplorer($.path);else if(($==null?void 0:$.type)==="area")if(L.areas.has($.areaId))s.open($.areaId);else{const G=Array.from(L.areas.values()).filter(I=>I.directories&&I.directories.length>0);G.length>0&&s.open(G[0].id)}else{const G=Array.from(L.areas.values()).filter(I=>I.directories&&I.directories.length>0);G.length>0&&s.open(G[0].id)}}return}const S=h.find(L=>L.id==="toggle-spotlight");if(mt(u,S)||u.altKey&&!u.ctrlKey&&!u.metaKey&&u.code==="KeyP"){console.log("[useKeyboardShortcuts] Spotlight shortcut matched!",{spotlightShortcut:S,altKey:u.altKey,code:u.code}),u.preventDefault(),i.toggle();return}const j=h.find(L=>L.id==="toggle-2d-view");if(mt(u,j)){u.preventDefault();const L=O.getState().viewMode,z=L==="3d"?"2d":L==="2d"?"dashboard":"3d";O.setViewMode(z);return}const A=h.find(L=>L.id==="next-working-agent"),T=h.find(L=>L.id==="prev-working-agent");if((mt(u,A)||mt(u,T))&&!m){const L=O.getState();if(L.terminalOpen)return;const $=Array.from(L.agents.values()).filter(H=>H.status==="working");if($.length===0)return;u.preventDefault();const G=L.selectedAgentIds.size===1?Array.from(L.selectedAgentIds)[0]:null,I=G?$.findIndex(H=>H.id===G):-1;let q;mt(u,A)?q=I===-1?0:(I+1)%$.length:q=I===-1?$.length-1:(I-1+$.length)%$.length,O.selectAgent($[q].id),(_=n.current)==null||_.refreshSelectionVisuals();return}const D=h.find(L=>L.id==="delete-selected"),M=h.find(L=>L.id==="delete-selected-backspace");if((mt(u,D)||mt(u,M))&&!m){const L=O.getState();if(L.selectedAgentIds.size>0){u.preventDefault(),o.open();return}if(L.selectedBuildingIds.size>0){u.preventDefault(),r();return}return}};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[n,e,t,s,i,o,r])}function jR(){const[n,e]=v.useState(!1);return window.__tideSetBackNavModal=e,v.useEffect(()=>{if(!(window.innerWidth<=768))return;if(window.__tideBackNavSetup){window.location.hash.includes("app")||(window.location.hash="#app");return}window.__tideBackNavSetup=!0,window.location.hash.includes("app")||(window.location.hash="#app");const i=()=>{var r;window.innerWidth>768||window.location.hash.includes("app")||(window.location.hash="#app",gf()||(r=window.__tideSetBackNavModal)==null||r.call(window,!0))},o=()=>{var r;window.innerWidth>768||(window.location.hash.includes("app")||(window.location.hash="#app"),window.location.hash==="#app"&&setTimeout(()=>{window.location.hash==="#app"&&!window.location.hash.includes("app2")&&(window.history.pushState(null,"","#app2"),window.history.pushState(null,"","#app"))},50),gf()||(r=window.__tideSetBackNavModal)==null||r.call(window,!0))};window.history.pushState(null,"","#app1"),window.history.pushState(null,"","#app2"),window.history.pushState(null,"","#app"),window.addEventListener("hashchange",i),window.addEventListener("popstate",o)},[]),{showBackNavModal:n,setShowBackNavModal:e,handleLeave:()=>{e(!1);const s=window.__tideHistoryDepth??2;window.history.go(-(s+1))}}}const wp="agent-order-change";function Qj(n){const e=v.useMemo(()=>new Set(n.map(u=>u.id)),[n]),[t,s]=v.useState(()=>Aa(ht.AGENT_ORDER,[]));v.useEffect(()=>{const u=h=>{s(h.detail)};return window.addEventListener(wp,u),()=>{window.removeEventListener(wp,u)}},[]);const i=v.useMemo(()=>{const u=t.filter(g=>e.has(g)),h=n.filter(g=>!u.includes(g.id)).map(g=>g.id),p=[...u,...h],m=new Map(n.map(g=>[g.id,g]));return p.map(g=>m.get(g)).filter(g=>g!==void 0)},[n,t,e]),o=v.useCallback(u=>{s(u),ei(ht.AGENT_ORDER,u),window.dispatchEvent(new CustomEvent(wp,{detail:u}))},[]),r=v.useCallback((u,h)=>{const p=i.map(g=>g.id),[m]=p.splice(u,1);p.splice(h,0,m),o(p)},[i,o]),c=v.useCallback(()=>{s([]),ei(ht.AGENT_ORDER,[])},[]);return v.useEffect(()=>{if(e.size===0)return;const u=t.filter(h=>e.has(h));u.length!==t.length&&o(u)},[e,t,o]),{orderedAgents:i,moveAgent:r,resetOrder:c}}let va,Mf;try{va=require("@capacitor/core").Capacitor,Mf=require("@capacitor/core").CapacitorHttp}catch{}const bg="deivid11/tide-commander",CR=`https://api.github.com/repos/${bg}/releases/latest`,AR=`https://api.github.com/repos/${bg}/releases?per_page=3`,NR=3600*1e3,hw="app_update_dismissed_version",mw="0.63.1";function Jj(){var p;const[n,e]=v.useState({isChecking:!1,updateAvailable:!1,updateInfo:null,recentReleases:[],error:null,currentVersion:mw}),t=((p=va==null?void 0:va.getPlatform)==null?void 0:p.call(va))==="android"||!1,s=m=>m.replace(/^v/,"").split(".").map(b=>parseInt(b,10)||0),i=(m,g)=>{const b=s(m),x=s(g),w=Math.max(b.length,x.length);for(let k=0;k<w;k++){const S=b[k]||0,j=x[k]||0;if(S>j)return 1;if(S<j)return-1}return 0},o=async m=>{var b;if(va&&Mf&&((b=va.isNativePlatform)==null?void 0:b.call(va))===!0){const x=await Mf.get({url:m,headers:{Accept:"application/vnd.github.v3+json"}});return{data:x.data,status:x.status}}else{const x=await fetch(m,{headers:{Accept:"application/vnd.github.v3+json"}});return x.ok?{data:await x.json(),status:x.status}:{data:null,status:x.status}}},r=v.useCallback(async(m=!1)=>{e(g=>({...g,isChecking:!0,error:null}));try{const[g,b]=await Promise.all([o(CR),o(AR)]);if(g.status!==200)throw new Error(`GitHub API error: ${g.status}`);const x=g.data,w=x.tag_name;let k=[];b.status===200&&b.data&&(k=b.data.map(D=>({version:D.tag_name,name:D.name,publishedAt:D.published_at,releaseUrl:D.html_url})));const S=localStorage.getItem(hw);if(!m&&S===w)return e(D=>({...D,isChecking:!1,updateAvailable:!1,recentReleases:k})),null;if(!(i(w,mw)>0))return e(D=>({...D,isChecking:!1,updateAvailable:!1,recentReleases:k})),null;const A=x.assets.find(D=>D.name.endsWith(".apk")&&D.content_type==="application/vnd.android.package-archive"),T={version:w,name:x.name,changelog:x.body,releaseUrl:x.html_url,apkUrl:(A==null?void 0:A.browser_download_url)||null,apkSize:(A==null?void 0:A.size)||null,publishedAt:x.published_at};return e(D=>({...D,isChecking:!1,updateAvailable:!0,updateInfo:T,recentReleases:k})),T}catch(g){const b=g instanceof Error?g.message:"Failed to check for updates";return e(x=>({...x,isChecking:!1,error:b})),null}},[]),c=v.useCallback(async()=>{var m,g,b;if(!((m=n.updateInfo)!=null&&m.apkUrl)){(g=n.updateInfo)!=null&&g.releaseUrl&&window.open(n.updateInfo.releaseUrl,"_blank");return}if(!t){(b=n.updateInfo)!=null&&b.releaseUrl&&window.open(n.updateInfo.releaseUrl,"_blank");return}try{window.open(n.updateInfo.apkUrl,"_system"),e(x=>({...x,error:null}))}catch(x){const w=x instanceof Error?x.message:"Failed to open download";e(k=>({...k,error:w}))}},[n.updateInfo,t]),u=v.useCallback(()=>{n.updateInfo&&localStorage.setItem(hw,n.updateInfo.version),e(m=>({...m,updateAvailable:!1,updateInfo:null}))},[n.updateInfo]),h=v.useCallback(()=>{var m;(m=n.updateInfo)!=null&&m.releaseUrl?window.open(n.updateInfo.releaseUrl,"_blank"):window.open(`https://github.com/${bg}/releases`,"_blank")},[n.updateInfo]);return v.useEffect(()=>{if(!t)return;const m=setTimeout(()=>{r()},5e3),g=setInterval(()=>{r()},NR);return()=>{clearTimeout(m),clearInterval(g)}},[t,r]),{...n,isAndroid:t,checkForUpdate:r,downloadAndInstall:c,dismissUpdate:u,openReleasePage:h}}function ss(n){const e=v.useRef(null),t=v.useCallback(i=>{e.current=i.target,i.target===i.currentTarget&&i.stopPropagation()},[]),s=v.useCallback(i=>{i.target===i.currentTarget&&e.current===i.currentTarget&&(i.stopPropagation(),n()),e.current=null},[n]);return{handleMouseDown:t,handleClick:s}}const TR=3e4;function MR(){const n=v.useRef(null);v.useEffect(()=>{const e=async()=>{var r,c;const t=O.getState(),s=new Map,i=new Map;for(const[u,h]of t.buildings){const p=h.folderPath||h.cwd;p&&(i.has(p)||i.set(p,[]),i.get(p).push(u))}for(const[u,h]of i)try{const p=await ot(Qe(`/api/files/git-status?path=${encodeURIComponent(u)}`));if(!p.ok)continue;const g=((r=(await p.json()).files)==null?void 0:r.length)||0;s.set(u,g);for(const b of h){const x=O.getState().buildings.get(b);x&&x.gitChangesCount!==g&&O.updateBuildingLocal(b,{gitChangesCount:g})}}catch{}const o=new Map;for(const[u,h]of t.areas)h.archived||!h.directories||h.directories.forEach((p,m)=>{p&&(o.has(p)||o.set(p,[]),o.get(p).push({areaId:u,dirIndex:m}))});if(o.size!==0)for(const[u,h]of o)try{let p;if(s.has(u))p=s.get(u);else{const g=await ot(Qe(`/api/files/git-status?path=${encodeURIComponent(u)}`));if(!g.ok)continue;p=((c=(await g.json()).files)==null?void 0:c.length)||0,s.set(u,p)}const m=new Map;for(const g of h)m.has(g.areaId)||m.set(g.areaId,[]),m.get(g.areaId).push({dirIndex:g.dirIndex,count:p});for(const[g,b]of m){const x=O.getState().areas.get(g);if(!x)continue;const w=x.directoryGitCounts?[...x.directoryGitCounts]:new Array(x.directories.length).fill(0);let k=!1;for(const{dirIndex:S,count:j}of b)w[S]!==j&&(w[S]=j,k=!0);k&&O.updateAreaLocal(g,{directoryGitCounts:w})}}catch{}};return e(),n.current=setInterval(e,TR),()=>{n.current&&(clearInterval(n.current),n.current=null)}},[])}const pw={historyLimit:500,hideCost:!0,showFPS:!1,powerSaving:!1,customAgentNames:[],experimental2DView:!1,experimentalVoiceAssistant:!1,experimentalTTS:!1,externalEditorCommand:""};function ER(n,e,t,s){return{setAgents(i){const o=new Map;for(const c of i)o.set(c.id,c),(c.class==="boss"||c.isBoss)&&console.log("[Store.setAgents] Boss agent:",c.name,"subordinateIds:",c.subordinateIds);const r=i.find(c=>c.status==="working");e(c=>{c.agents=o,r&&c.selectedAgentIds.size===0&&(c.selectedAgentIds.add(r.id),c.terminalOpen=!0)}),t()},addAgent(i){e(o=>{const r=new Map(o.agents);r.set(i.id,i),o.agents=r}),t()},updateAgent(i){var u;const r=n().agents.get(i.id),c=(r==null?void 0:r.status)!==i.status;c&&console.log(`[Store] Agent ${i.name} status update: ${r==null?void 0:r.status} → ${i.status}`),e(h=>{const p=new Map(h.agents);p.set(i.id,i),h.agents=p}),t(),c&&console.log(`[Store] Agent ${i.name} status now in store: ${(u=n().agents.get(i.id))==null?void 0:u.status}`)},updateAgentContextStats(i,o){const c=n().agents.get(i);c&&(e(u=>{const h=new Map(u.agents);h.set(i,{...c,contextStats:o,contextUsed:o.totalTokens,contextLimit:o.contextWindow}),u.agents=h}),t())},removeAgent(i){e(o=>{const r=new Map(o.agents);r.delete(i),o.agents=r,o.selectedAgentIds.delete(i),o.agentOutputs.delete(i)}),t()},selectAgent(i){e(o=>{o.selectedAgentIds.clear(),i&&(o.selectedAgentIds.add(i),o.lastSelectedAgentId=i),o.currentSnapshot=null}),t()},addToSelection(i){e(o=>{o.selectedAgentIds.has(i)?o.selectedAgentIds.delete(i):o.selectedAgentIds.add(i)}),t()},selectMultiple(i){e(o=>{o.selectedAgentIds.clear();for(const r of i)o.selectedAgentIds.add(r)}),t()},deselectAll(){e(i=>{i.selectedAgentIds.clear()}),t()},spawnAgent(i,o,r,c,u,h,p,m,g,b,x,w,k){console.log("[Store] spawnAgent called with:",{name:i,agentClass:o,cwd:r,position:c,sessionId:u,useChrome:h,permissionMode:p,initialSkillIds:m,provider:g,codexConfig:b,codexModel:x,model:w,customInstructions:k?`${k.length} chars`:void 0});const S=c?{x:c.x,y:0,z:c.z}:void 0,j={type:"spawn_agent",payload:{name:i,class:o,cwd:r,position:S,sessionId:u,useChrome:h,permissionMode:p,initialSkillIds:m,provider:g,codexConfig:b,codexModel:x,model:w,customInstructions:k}},A=s();if(!A){console.error("[Store] sendMessage is not defined! WebSocket may not be connected");return}A(j),console.log("[Store] Message sent to WebSocket")},createDirectoryAndSpawn(i,o,r){var c;(c=s())==null||c({type:"create_directory",payload:{path:i,name:o,class:r}})},sendCommand(i,o){var r;e(c=>{c.lastPrompts.set(i,{text:o,timestamp:Date.now()})}),t(),(r=s())==null||r({type:"send_command",payload:{agentId:i,command:o}})},refreshAgentContext(i){var o;(o=s())==null||o({type:"request_context_stats",payload:{agentId:i}})},moveAgent(i,o){var u;const c=n().agents.get(i);c&&(e(h=>{const p={...c,position:o},m=new Map(h.agents);m.set(i,p),h.agents=m}),t()),(u=s())==null||u({type:"move_agent",payload:{agentId:i,position:o}})},killAgent(i){var o;(o=s())==null||o({type:"kill_agent",payload:{agentId:i}})},stopAgent(i){var o;(o=s())==null||o({type:"stop_agent",payload:{agentId:i}})},clearContext(i){var o;(o=s())==null||o({type:"clear_context",payload:{agentId:i}}),e(r=>{const c=new Map(r.agentOutputs);c.delete(i),r.agentOutputs=c}),t()},collapseContext(i){var o;(o=s())==null||o({type:"collapse_context",payload:{agentId:i}})},removeAgentFromServer(i){var o;(o=s())==null||o({type:"remove_agent",payload:{agentId:i}})},renameAgent(i,o){var u;const c=n().agents.get(i);c&&(e(h=>{const p={...c,name:o},m=new Map(h.agents);m.set(i,p),h.agents=m}),t()),(u=s())==null||u({type:"rename_agent",payload:{agentId:i,name:o}})},updateAgentProperties(i,o){var u;const c=n().agents.get(i);c&&(e(h=>{const p={...c};o.class!==void 0&&(p.class=o.class),o.permissionMode!==void 0&&(p.permissionMode=o.permissionMode),o.model!==void 0&&(p.model=o.model),o.provider!==void 0&&(p.provider=o.provider),o.codexConfig!==void 0&&(p.codexConfig=o.codexConfig),o.codexModel!==void 0&&(p.codexModel=o.codexModel),o.useChrome!==void 0&&(p.useChrome=o.useChrome),o.cwd!==void 0&&(p.cwd=o.cwd);const m=new Map(h.agents);m.set(i,p),h.agents=m}),t()),(u=s())==null||u({type:"update_agent_properties",payload:{agentId:i,updates:o}})},getTotalTokens(){let i=0;for(const o of n().agents.values())i+=o.tokensUsed;return i},getSelectedAgents(){const i=n(),o=[];for(const r of i.selectedAgentIds){const c=i.agents.get(r);c&&o.push(c)}return o},addActivity(i){e(o=>{o.activities.unshift(i),o.activities.length>100&&o.activities.pop()}),t()},addToolExecution(i,o,r){const u=n().agents.get(i);e(h=>{h.toolExecutions.unshift({agentId:i,agentName:(u==null?void 0:u.name)||"Unknown",toolName:o,toolInput:r,timestamp:Date.now()}),h.toolExecutions.length>200&&h.toolExecutions.pop()}),t()},addFileChange(i,o,r){const u=n().agents.get(i);e(h=>{h.fileChanges.unshift({agentId:i,agentName:(u==null?void 0:u.name)||"Unknown",action:o,filePath:r,timestamp:Date.now()}),h.fileChanges.length>200&&h.fileChanges.pop()}),t()},async loadToolHistory(){try{const o=await(await ot(Qe("/api/agents/tool-history?limit=100"))).json();e(r=>{o.toolExecutions&&(r.toolExecutions=o.toolExecutions),o.fileChanges&&(r.fileChanges=o.fileChanges)}),t()}catch(i){console.error("[Store] Failed to load tool history:",i)}}}}function _R(n,e,t,s){return{addOutput(i,o){const r=s();e(c=>{const u=c.agentOutputs.get(i)||[];if(o.uuid&&u.some(g=>g.uuid===o.uuid))return;let h=[...u,o];h.length>200&&(h=h.slice(-200)),uc.info(`Store: ${u.length} -> ${h.length}`,{agentId:i,text:o.text.slice(0,60),isStreaming:o.isStreaming,listeners:r},"store:addOutput");const p=new Map(c.agentOutputs);p.set(i,h),c.agentOutputs=p}),t()},clearOutputs(i){e(o=>{const r=new Map(o.agentOutputs);r.delete(i),o.agentOutputs=r}),t()},getOutputs(i){return n().agentOutputs.get(i)||[]},addUserPromptToOutput(i,o){this.addOutput(i,{text:o,isStreaming:!1,timestamp:Date.now(),isUserPrompt:!0})},getLastPrompt(i){return n().lastPrompts.get(i)},setLastPrompt(i,o){e(r=>{r.lastPrompts.set(i,{text:o,timestamp:Date.now()})}),t()},preserveOutputs(){const i=n(),o=new Map;for(const[r,c]of i.agentOutputs)o.set(r,c.map(u=>({...u})));return o},mergeOutputsWithHistory(i,o,r){const c=[...o,...r];return c.sort((u,h)=>u.timestamp-h.timestamp),e(u=>{const h=new Map(u.agentOutputs);h.set(i,c),u.agentOutputs=h}),t(),c}}}function DR(n,e,t,s){return{setSupervisorReport(i){e(o=>{o.supervisor.lastReport=i,o.supervisor.lastReportTime=i.timestamp;const r=new Map(o.supervisor.agentHistories);for(const c of i.agentSummaries){const u=r.get(c.agentId)||[],h={id:`${i.id}-${c.agentId}`,timestamp:i.timestamp,reportId:i.id,analysis:c};if(!u.some(p=>p.reportId===i.id)){const p=[h,...u];p.length>50&&p.pop(),r.set(c.agentId,p)}}o.supervisor.agentHistories=r,o.supervisor.generatingReport=!1}),t()},addNarrative(i,o){e(r=>{const c=r.supervisor.narratives.get(i)||[];c.unshift(o),c.length>50&&c.pop();const u=new Map(r.supervisor.narratives);u.set(i,c),r.supervisor.narratives=u}),t()},getNarratives(i){return n().supervisor.narratives.get(i)||[]},setSupervisorStatus(i){e(o=>{o.supervisor.enabled=i.enabled,i.autoReportOnComplete!==void 0&&(o.supervisor.autoReportOnComplete=i.autoReportOnComplete),o.supervisor.lastReportTime=i.lastReportTime,o.supervisor.nextReportTime=i.nextReportTime}),t()},setSupervisorConfig(i){var o;(o=s())==null||o({type:"set_supervisor_config",payload:i})},requestSupervisorReport(){var i;e(o=>{o.supervisor.generatingReport=!0}),t(),(i=s())==null||i({type:"request_supervisor_report",payload:{}})},requestAgentSupervisorHistory(i){var o;e(r=>{r.supervisor.loadingHistoryForAgent=i}),t(),(o=s())==null||o({type:"request_agent_supervisor_history",payload:{agentId:i}})},setAgentSupervisorHistory(i){e(o=>{const r=new Map(o.supervisor.agentHistories);r.set(i.agentId,i.entries),o.supervisor.agentHistories=r,o.supervisor.historyFetchedForAgents.add(i.agentId),o.supervisor.loadingHistoryForAgent===i.agentId&&(o.supervisor.loadingHistoryForAgent=null)}),t()},getAgentSupervisorHistory(i){return n().supervisor.agentHistories.get(i)||[]},addAgentAnalysis(i,o){e(r=>{const c=new Map(r.supervisor.agentHistories),u=c.get(i)||[],h={id:`single-${Date.now()}-${i}`,timestamp:Date.now(),reportId:`single-${Date.now()}`,analysis:o};if(!u.some(m=>Math.abs(m.timestamp-h.timestamp)<5e3&&m.analysis.statusDescription===o.statusDescription)){const m=[h,...u];m.length>50&&m.pop(),c.set(i,m),r.supervisor.agentHistories=c}}),t()},isLoadingHistoryForAgent(i){return n().supervisor.loadingHistoryForAgent===i},hasHistoryBeenFetched(i){return n().supervisor.historyFetchedForAgents.has(i)},setGlobalUsage(i){console.log("[Supervisor] setGlobalUsage called with:",i),e(o=>{o.supervisor.globalUsage=i,o.supervisor.refreshingUsage=!1}),t()},requestGlobalUsage(){console.log("[Supervisor] requestGlobalUsage called"),e(o=>{o.supervisor.refreshingUsage=!0}),t();const i=s();console.log("[Supervisor] sendMessage function:",i?"available":"null"),i?(console.log("[Supervisor] Sending request_global_usage message"),i({type:"request_global_usage",payload:{}})):console.warn("[Supervisor] Cannot send request_global_usage - no sendMessage function")},getGlobalUsage(){return n().supervisor.globalUsage}}}function RR(n,e,t,s){const i=()=>{var r;const o=Array.from(n().areas.values());(r=s())==null||r({type:"sync_areas",payload:o})};return{setActiveTool(o){e(r=>{r.activeTool=o,o!=="select"&&(r.selectedAreaId=null)}),t()},selectArea(o){e(r=>{r.selectedAreaId=o}),t()},addArea(o){if(o.zIndex===void 0||o.zIndex===null){const r=Array.from(n().areas.values()),c=r.length===0?-1:Math.max(...r.map(u=>u.zIndex??0));o.zIndex=c+1}e(r=>{r.areas.set(o.id,o)}),i(),t()},updateArea(o,r){n().areas.get(o)&&(e(h=>{Object.assign(h.areas.get(o),r)}),i(),t())},updateAreaLocal(o,r){n().areas.get(o)&&(e(h=>{Object.assign(h.areas.get(o),r)}),t())},deleteArea(o){e(r=>{r.areas.delete(o),r.selectedAreaId===o&&(r.selectedAreaId=null)}),i(),t()},assignAgentToArea(o,r){const u=n().areas.get(r);u&&!u.assignedAgentIds.includes(o)&&(e(h=>{for(const p of h.areas.values()){const m=p.assignedAgentIds.indexOf(o);m!==-1&&p.assignedAgentIds.splice(m,1)}h.areas.get(r).assignedAgentIds.push(o)}),i(),t())},unassignAgentFromArea(o,r){const u=n().areas.get(r);if(u){const h=u.assignedAgentIds.indexOf(o);h!==-1&&(e(p=>{p.areas.get(r).assignedAgentIds.splice(h,1)}),i(),t())}},addDirectoryToArea(o,r){const u=n().areas.get(o);u&&!u.directories.includes(r)&&(e(h=>{h.areas.get(o).directories.push(r)}),i(),t())},removeDirectoryFromArea(o,r){const u=n().areas.get(o);if(u){const h=u.directories.indexOf(r);h!==-1&&(e(p=>{p.areas.get(o).directories.splice(h,1)}),i(),t())}},getAreaDirectories(o){const r=n().areas.get(o);return(r==null?void 0:r.directories)||[]},isPositionInArea(o,r){if(r.type==="rectangle"&&r.width&&r.height){const c=r.width/2,u=r.height/2;return o.x>=r.center.x-c&&o.x<=r.center.x+c&&o.z>=r.center.z-u&&o.z<=r.center.z+u}else if(r.type==="circle"&&r.radius){const c=o.x-r.center.x,u=o.z-r.center.z;return c*c+u*u<=r.radius*r.radius}return!1},getAreaForAgent(o){const r=n(),c=r.agents.get(o);if(!c)return null;for(const u of r.areas.values())if(this.isPositionInArea({x:c.position.x,z:c.position.z},u))return u;return null},setAreasFromServer(o){e(r=>{const c=new Map;for(let u=0;u<o.length;u++){const h=o[u];h.directories||(h.directories=[]),(h.zIndex===void 0||h.zIndex===null)&&(h.zIndex=u),h.archived===void 0&&(h.archived=!1),c.set(h.id,h)}r.areas=c}),t()},getAreasInZOrder(){return Array.from(n().areas.values()).sort((r,c)=>(r.zIndex??0)-(c.zIndex??0))},getNextZIndex(){const o=Array.from(n().areas.values());return o.length===0?0:Math.max(...o.map(c=>c.zIndex??0))+1},bringAreaToFront(o){const r=n(),c=r.areas.get(o);if(!c)return;const u=Array.from(r.areas.values()),h=u.length===0?-1:Math.max(...u.map(b=>b.zIndex??0)),p=h+1,m=c.zIndex??0,g=u.filter(b=>(b.zIndex??0)===h);m===h&&g.length===1||(e(b=>{b.areas.get(o).zIndex=p}),i(),t())},sendAreaToBack(o){const r=n(),c=r.areas.get(o);if(!c)return;const u=Array.from(r.areas.values()),h=Math.min(...u.map(g=>g.zIndex??0)),p=c.zIndex??0,m=u.filter(g=>(g.zIndex??0)===h);p===h&&m.length===1||(e(g=>{for(const b of g.areas.values())b.id!==o&&(b.zIndex=(b.zIndex??0)+1);g.areas.get(o).zIndex=0}),i(),t())},setAreaZIndex(o,r){n().areas.get(o)&&(e(h=>{h.areas.get(o).zIndex=r}),i(),t())},archiveArea(o,r){const u=n().areas.get(o);if(!(!u||u.archived)){if(r)for(const h of u.assignedAgentIds)r(h);e(h=>{const p=h.areas.get(o);p.archived=!0,p.archivedAt=Date.now(),p.originalCenter={...p.center},h.selectedAreaId===o&&(h.selectedAreaId=null)}),i(),t()}},restoreArchivedArea(o,r){const c=n(),u=c.areas.get(o);if(!u||!u.archived)return;const h=u.center,p=r||u.originalCenter||u.center,m=p.x-h.x,g=p.z-h.z,b=Array.from(c.areas.values()),w=(b.length===0?-1:Math.max(...b.map(k=>k.zIndex??0)))+1;e(k=>{const S=k.areas.get(o);if(S.archived=!1,S.archivedAt=void 0,S.center=p,S.zIndex=w,m!==0||g!==0)for(const j of S.assignedAgentIds){const A=k.agents.get(j);A&&(A.position={x:A.position.x+m,y:A.position.y,z:A.position.z+g})}}),i(),t()},getArchivedAreas(){return Array.from(n().areas.values()).filter(o=>o.archived===!0)},getVisibleAreas(){return Array.from(n().areas.values()).filter(o=>!o.archived)},isAgentInArchivedArea(o){const r=n();for(const c of r.areas.values())if(c.archived&&c.assignedAgentIds.includes(o))return!0;return!1}}}function LR(n,e,t,s){const i=()=>{var c;const r=Array.from(n().buildings.values());(c=s())==null||c({type:"sync_buildings",payload:r})},o={selectBuilding(r){e(c=>{c.selectedBuildingIds.clear(),r&&c.selectedBuildingIds.add(r)}),t()},selectMultipleBuildings(r){e(c=>{c.selectedBuildingIds.clear();for(const u of r)c.selectedBuildingIds.add(u)}),t()},toggleBuildingSelection(r){e(c=>{c.selectedBuildingIds.has(r)?c.selectedBuildingIds.delete(r):c.selectedBuildingIds.add(r)}),t()},isBuildingSelected(r){return n().selectedBuildingIds.has(r)},getSelectedBuildingIds(){return Array.from(n().selectedBuildingIds)},deleteSelectedBuildings(){var c,u,h;const r=n();for(const p of r.selectedBuildingIds){const m=r.buildings.get(p);((c=m==null?void 0:m.pm2)!=null&&c.enabled||(u=m==null?void 0:m.docker)!=null&&u.enabled)&&((h=s())==null||h({type:"building_command",payload:{buildingId:p,command:"delete"}}))}e(p=>{const m=new Map(p.buildings);for(const g of p.selectedBuildingIds)m.delete(g);p.buildings=m,p.selectedBuildingIds.clear()}),i(),t()},addBuilding(r){e(c=>{const u=new Map(c.buildings);u.set(r.id,r),c.buildings=u}),i(),t()},updateBuilding(r,c){const h=n().buildings.get(r);h&&(e(p=>{const m=new Map(p.buildings);m.set(r,{...h,...c}),p.buildings=m}),i(),t())},updateBuildingLocal(r,c){const h=n().buildings.get(r);h&&(e(p=>{const m=new Map(p.buildings);m.set(r,{...h,...c}),p.buildings=m}),t())},deleteBuilding(r){var h,p,m;const u=n().buildings.get(r);((h=u==null?void 0:u.pm2)!=null&&h.enabled||(p=u==null?void 0:u.docker)!=null&&p.enabled)&&((m=s())==null||m({type:"building_command",payload:{buildingId:r,command:"delete"}})),e(g=>{const b=new Map(g.buildings);b.delete(r),g.buildings=b,g.selectedBuildingIds.delete(r)}),i(),t()},moveBuilding(r,c){const h=n().buildings.get(r);h&&(e(p=>{const m=new Map(p.buildings);m.set(r,{...h,position:c}),p.buildings=m}),i(),t())},updateBuildingPosition(r,c){o.moveBuilding(r,c)},createBuilding(r){const c={...r,id:`building_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,status:"stopped",createdAt:Date.now()};o.addBuilding(c)},sendBuildingCommand(r,c){var u;(u=s())==null||u({type:"building_command",payload:{buildingId:r,command:c}})},addBuildingLogs(r,c){e(u=>{const p=[...u.buildingLogs.get(r)||[],c];p.length>500&&p.splice(0,p.length-500);const m=new Map(u.buildingLogs);m.set(r,p),u.buildingLogs=m}),t()},getBuildingLogs(r){return n().buildingLogs.get(r)||[]},clearBuildingLogs(r){e(c=>{const u=new Map(c.buildingLogs);u.delete(r),c.buildingLogs=u}),t()},setBuildingsFromServer(r){e(c=>{const u=new Map;for(const h of r)u.set(h.id,h);c.buildings=u}),t()},updateBuildingFromServer(r){e(c=>{const u=new Map(c.buildings);u.set(r.id,r),c.buildings=u}),t()},removeBuildingFromServer(r){e(c=>{const u=new Map(c.buildings);u.delete(r),c.buildings=u,c.selectedBuildingIds.delete(r)}),t()},startLogStreaming(r,c=100){var h,p,m;const u=n().buildings.get(r);e(g=>{const b=new Map(g.streamingBuildingLogs);b.set(r,""),g.streamingBuildingLogs=b}),(h=u==null?void 0:u.docker)!=null&&h.enabled?(p=s())==null||p({type:"docker_logs_start",payload:{buildingId:r,lines:c}}):(m=s())==null||m({type:"pm2_logs_start",payload:{buildingId:r,lines:c}})},stopLogStreaming(r){var u,h,p;const c=n().buildings.get(r);(u=c==null?void 0:c.docker)!=null&&u.enabled?(h=s())==null||h({type:"docker_logs_stop",payload:{buildingId:r}}):(p=s())==null||p({type:"pm2_logs_stop",payload:{buildingId:r}})},appendStreamingLogChunk(r,c){e(u=>{const h=u.streamingBuildingLogs.get(r)||"",p=500*1024;let m=h+c;if(m.length>p){const b=m.indexOf(`
|
|
149
|
+
`,side:ij});i.add(new Te(o,r)),i.add(new og(16777215,1));const c=s.fromScene(i,.04).texture;t.environment=c,s.dispose(),o.dispose(),r.dispose()}createInputCallbacks(){return{onAgentClick:(e,t)=>this.inputEventHandlers.handleAgentClick(e,t),onAgentDoubleClick:e=>this.inputEventHandlers.handleAgentDoubleClick(e),onAgentHover:(e,t)=>this.inputEventHandlers.handleAgentHover(e,t),onGroundClick:()=>this.inputEventHandlers.handleGroundClick(),onMoveCommand:(e,t)=>this.inputEventHandlers.handleMoveCommand(e,t),onSelectionBox:(e,t)=>this.inputEventHandlers.handleSelectionBox(e,t),onDrawStart:e=>this.drawingManager.startDrawing(e),onDrawMove:e=>this.drawingManager.updateDrawing(e),onDrawEnd:e=>this.drawingManager.finishDrawing(e),onAreaRightClick:e=>this.inputEventHandlers.handleAreaRightClick(e),onAreaClick:e=>this.inputEventHandlers.handleAreaClick(e),onAreaDoubleClick:e=>this.inputEventHandlers.handleAreaDoubleClick(e),onResizeStart:(e,t)=>this.drawingManager.startResize(e,t),onResizeMove:e=>this.drawingManager.updateResize(e),onResizeEnd:()=>this.drawingManager.finishResize(),onGroundClickOutsideArea:()=>this.inputEventHandlers.handleGroundClickOutsideArea(),onFolderIconClick:(e,t)=>{var s;t?O.openFileExplorerForAreaFolder(e,t):O.openFileExplorerForArea(e),(s=this.onFolderIconClickCallback)==null||s.call(this,e)},onBuildingClick:(e,t)=>this.inputEventHandlers.handleBuildingClick(e,t),onBuildingDoubleClick:e=>this.inputEventHandlers.handleBuildingDoubleClick(e),onBuildingHover:(e,t)=>this.inputEventHandlers.handleBuildingHover(e,t),onBuildingDragStart:()=>{},onBuildingDragMove:(e,t)=>this.buildingManager.setBuildingPosition(e,t),onBuildingDragEnd:(e,t)=>O.updateBuildingPosition(e,t),onContextMenu:(e,t,s)=>this.callbackManager.triggerContextMenu(e,t,s),onActivity:()=>this.renderLoop.markActivity(),onToggleTerminal:()=>O.toggleTerminal()}}setupInputHandlerHelpers(){this.inputHandler.setDrawingModeChecker(()=>this.drawingManager.isInDrawingMode()),this.inputHandler.setResizeHandlers(()=>this.drawingManager.getResizeHandles(),()=>this.drawingManager.isCurrentlyResizing()),this.inputHandler.setAreaAtPositionGetter(e=>this.drawingManager.getAreaAtPosition(e)),this.inputHandler.setFolderIconMeshesGetter(()=>this.drawingManager.getFolderIconMeshes()),this.inputHandler.setBuildingAtPositionGetter(e=>{const t=this.buildingManager.getBuildingAtPosition(e);return t?{id:t.id}:null}),this.inputHandler.setBuildingPositionsGetter(()=>{const e=new Map;for(const[t,s]of this.buildingManager.getBuildingMeshData())e.set(t,s.group.position.clone());return e})}setupEventListeners(e){window.addEventListener("resize",this.onWindowResize),this.resizeObserver=new ResizeObserver(()=>this.onWindowResize()),e.parentElement&&this.resizeObserver.observe(e.parentElement),e.addEventListener("webglcontextlost",this.onContextLost),e.addEventListener("webglcontextrestored",this.onContextRestored)}updateInputHandlerReferences(){this.inputHandler.setReferences(this.battlefield.getGround(),this.agentManager.getAgentMeshes())}updateBattlefield(e,t){t-this.lastTimeUpdate>6e4&&(this.battlefield.updateTimeOfDay(),this.lastTimeUpdate=t),this.battlefield.updateGalacticAnimation(e),this.battlefield.updateCloudAnimation(e)}updateAnimations(e){const t=this.movementAnimator.update(this.agentManager.getAgentMeshes(),e);return this.effectsManager.update(),this.buildingManager.update(e),t}updateProceduralAnimations(e){if(this.proceduralBodiesDirty){this.proceduralBodiesCache.clear();for(const[t,s]of this.agentManager.getAgentMeshes())if(this.proceduralAnimator.has(t)&&s.animations.size===0){const i=s.group.getObjectByName("characterBody");i&&this.proceduralBodiesCache.set(t,i)}this.proceduralBodiesDirty=!1}this.proceduralBodiesCache.size>0&&this.proceduralAnimator.update(e,this.proceduralBodiesCache)}updateIndicatorScales(e,t,s){for(const[,i]of t){const o=e.position.distanceTo(i.group.position),r=Math.max(.5,Math.min(2.5,o/15))*s,c=i.group.userData.isBoss===!0,u=i.group.getObjectByName("statusBar"),h=i.group.getObjectByName("nameLabelSprite");if(u){const m=typeof u.userData.baseIndicatorScale=="number"?u.userData.baseIndicatorScale:c?2:1.6,g=typeof u.userData.aspectRatio=="number"?u.userData.aspectRatio:2560/4096;u.scale.set(m*r,m*g*r,1)}if(h){const m=typeof h.userData.baseIndicatorScale=="number"?h.userData.baseIndicatorScale:c?1.5:1.25,x=Math.max(c?1.35:1.1,Math.min(c?1.65:1.35,m)),w=typeof h.userData.aspectRatio=="number"?h.userData.aspectRatio:1024/4096;h.scale.set(x*r,x*w*r,1)}const p=i.group.getObjectByName("combinedUI");if(p){const m=typeof p.userData.baseIndicatorScale=="number"?p.userData.baseIndicatorScale:c?3:2.4,g=typeof p.userData.aspectRatio=="number"?p.userData.aspectRatio:1024/2048;p.scale.set(m*r,m*g*r,1)}if(!u&&!p){const m=i.group.getObjectByName("nameLabel");if(m){const x=.3*r;m.scale.set(x*(m.userData.aspectRatio||2),x,1)}const g=i.group.getObjectByName("manaBar");g&&g.scale.set(.9,.14,1);const b=i.group.getObjectByName("idleTimer");b&&b.scale.set(.9*r,.14*r,1)}}for(const[,i]of this.buildingManager.getBuildingMeshData()){const o=e.position.distanceTo(i.group.position),r=Math.max(.5,Math.min(2.5,o/15))*s,c=i.group.getObjectByName("buildingLabel");if(c){const u=.3*r;c.scale.set(u*(c.userData.aspectRatio||2),u,1)}}this.effectsManager.updateWithCamera(e)}async loadCharacterModels(){await this.agentManager.loadCharacterModels()}upgradeAgentModels(){this.agentManager.upgradeAgentModels(),this.updateInputHandlerReferences()}addAgent(e){this.agentManager.addAgent(e)}removeAgent(e){this.agentManager.removeAgent(e),this.updateInputHandlerReferences()}updateAgent(e,t=!1){this.agentManager.updateAgent(e,t)}syncAgents(e){this.agentManager.syncAgents(e)}setCustomAgentClasses(e){this.agentManager.setCustomAgentClasses(e)}refreshSelectionVisuals(){this.selectionManager.refreshSelectionVisuals()}createMoveOrderEffect(e){this.effectsManager.createMoveOrderEffect(e)}showToolBubble(e,t,s){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createSpeechBubble(e,t,s)}showDelegationEffect(e,t){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createDelegationEffect(e,t)}addSubagentEffect(e,t,s,i){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.addSubagentEffect(e,t,s,i)}completeSubagentEffect(e){this.effectsManager.completeSubagentEffect(e)}removeSubagentEffect(e){this.effectsManager.removeSubagentEffect(e)}focusAgent(e){this.cameraManager.focusAgent(e)}callSubordinates(e){var r;const s=O.getState().agents.get(e);if(!s||!(s.isBoss||s.class==="boss")||!((r=s.subordinateIds)!=null&&r.length))return;const i=new ut(s.position.x,s.position.y,s.position.z),o=this.inputHandler.calculateFormationPositions(i,s.subordinateIds.length);this.effectsManager.createMoveOrderEffect(i.clone()),s.subordinateIds.forEach((c,u)=>{const h=this.agentManager.getAgentMeshes().get(c);O.moveAgent(c,o[u]),h&&this.movementAnimator.startMovement(c,h,o[u])})}setDrawingTool(e){this.drawingManager.setTool(e),O.setActiveTool(e)}syncAreas(){this.drawingManager.syncFromStore()}highlightArea(e){this.drawingManager.highlightArea(e)}clearAreaSelection(){this.drawingManager.highlightArea(null)}addBuilding(e){this.buildingManager.addBuilding(e)}removeBuilding(e){this.buildingManager.removeBuilding(e)}updateBuilding(e){this.buildingManager.updateBuilding(e)}syncBuildings(){this.buildingManager.syncFromStore()}highlightBuilding(e){this.buildingManager.highlightBuilding(e)}setOnBuildingClick(e){this.callbackManager.setOnBuildingClick(e)}setOnBuildingDoubleClick(e){this.callbackManager.setOnBuildingDoubleClick(e)}setOnContextMenu(e){this.callbackManager.setOnContextMenu(e)}setOnAgentHover(e){this.callbackManager.setOnAgentHover(e)}setOnBuildingHover(e){this.callbackManager.setOnBuildingHover(e)}setOnGroundClick(e){this.callbackManager.setOnGroundClick(e)}setOnAreaDoubleClick(e){this.callbackManager.setOnAreaDoubleClick(e)}setOnFolderIconClick(e){this.onFolderIconClickCallback=e}setOnToast(e){this.agentManager.setOnToast(e)}setCharacterScale(e){this.agentManager.setCharacterScale(e),this.selectionManager.setCharacterScale(e)}setIndicatorScale(e){this.renderLoop.setIndicatorScale(e),this.effectsManager.setIndicatorScale(e)}setFpsLimit(e){this.renderLoop.setFpsLimit(e)}setPowerSaving(e){this.renderLoop.setPowerSaving(e)}setGridVisible(e){this.battlefield.setGridVisible(e)}setDebugTime(e){this.battlefield.setDebugTime(e)}setTimeMode(e){this.battlefield.setTimeMode(e)}setTerrainConfig(e){this.battlefield.setTerrainConfig(e),e.brightness!==void 0&&(this.drawingManager.setBrightness(e.brightness),this.buildingManager.setBrightness(e.brightness),this.agentManager.setBrightness(e.brightness))}setFloorStyle(e,t=!1){this.battlefield.setFloorStyle(e,t)}setIdleAnimation(e){this.agentManager.setIdleAnimation(e)}setWorkingAnimation(e){this.agentManager.setWorkingAnimation(e)}setAgentModelStyle(e){this.agentManager.setModelStyle(e)}getAgentModelStyle(){return this.agentManager.getModelStyle()}setGlobalSaturation(e){this.sceneCore.setSaturation(e)}getGlobalSaturation(){return this.sceneCore.getSaturation()}setPostProcessingEnabled(e){this.sceneCore.setPostProcessingEnabled(e)}reattach(e,t){var o,r;console.log("[SceneManager] Reattaching to new canvas (HMR)"),this.isReattaching=!0,this.renderLoop.stop(),(o=this.resizeObserver)==null||o.disconnect();const s=this.sceneCore.getCanvas();s.removeEventListener("webglcontextlost",this.onContextLost),s.removeEventListener("webglcontextrestored",this.onContextRestored),this.sceneCore.reattach(e),this.cameraManager.recreateControls(this.sceneCore.getRenderer()),this.sceneCore.updateCamera(this.cameraManager.getCamera()),e.addEventListener("webglcontextlost",this.onContextLost),e.addEventListener("webglcontextrestored",this.onContextRestored),this.inputHandler.reattach(e,t,this.cameraManager.getControls()),this.updateInputHandlerReferences(),e.parentElement&&((r=this.resizeObserver)==null||r.observe(e.parentElement)),this.onWindowResize();const i=(c=0)=>{this.isReattaching=!1,e.isConnected&&this.sceneCore.getRenderer()?(console.log("[SceneManager] Restarting animation loop after HMR reattach"),this.renderLoop.start()):c<10?(console.log(`[SceneManager] Canvas not connected, retrying... (attempt ${c+1})`),this.isReattaching=!0,requestAnimationFrame(()=>i(c+1))):console.warn("[SceneManager] Failed to restart animation loop - canvas never connected")};requestAnimationFrame(()=>i())}getMemoryDiagnostics(){var t;const e=this.sceneCore.getRenderer().info;return{threeJs:e!=null&&e.memory?{geometries:e.memory.geometries,textures:e.memory.textures,programs:((t=e.programs)==null?void 0:t.length)??0}:null,heap:kr.getUsage(),agentMeshCount:this.agentManager.getAgentMeshes().size,bossLineCount:0}}getRenderStats(){var t,s;const e=(s=(t=this.sceneCore.getRenderer())==null?void 0:t.info)==null?void 0:s.render;return e?{calls:e.calls,triangles:e.triangles,points:e.points,lines:e.lines}:null}get renderer(){return this.sceneCore.getRenderer()}logMemoryDiagnostics(){const e=this.getMemoryDiagnostics(),t=this.characterLoader.getCacheStats();console.group("%c[SceneManager Memory]","color: #ff6600; font-weight: bold"),e.threeJs&&console.log(`Three.js: ${e.threeJs.geometries} geometries, ${e.threeJs.textures} textures, ${e.threeJs.programs} programs`),e.heap&&console.log(`Heap: ${e.heap.usedMB}MB / ${e.heap.totalMB}MB (limit: ${e.heap.limitMB}MB)`),console.log(`Agent meshes: ${e.agentMeshCount}`),console.log(`CharacterLoader cache: ${t.builtInModels} built-in, ${t.customModels} custom`),t.modelNames.length>0&&console.log(` Built-in models: ${t.modelNames.join(", ")}`),t.customModelIds.length>0&&console.log(` Custom models: ${t.customModelIds.join(", ")}`),console.groupEnd()}dispose(){var s;console.log("%c[SceneManager] dispose() called - starting cleanup","color: #ff0000; font-weight: bold");const e=this.characterLoader.getCacheStats();console.log(`[SceneManager] Pre-dispose: ${e.builtInModels} built-in models, ${e.customModels} custom models`),this.renderLoop.stop(),window.removeEventListener("resize",this.onWindowResize);const t=this.sceneCore.getCanvas();t.removeEventListener("webglcontextlost",this.onContextLost),t.removeEventListener("webglcontextrestored",this.onContextRestored),(s=this.resizeObserver)==null||s.disconnect(),this.resizeObserver=null,this.inputHandler.dispose(),this.drawingManager.dispose(),this.buildingManager.dispose(),this.effectsManager.dispose(),this.agentManager.dispose(),this.selectionManager.dispose(),this.battlefield.dispose(),this.characterLoader.dispose(),this.cameraManager.dispose(),this.sceneCore.dispose(),console.log("%c[SceneManager] dispose() complete - all resources freed","color: #00ff00; font-weight: bold")}}const dd="tide_webgl_active";typeof window<"u"&&(window.__tidePersistedScene===void 0&&(window.__tidePersistedScene=null),window.__tidePersistedCanvas===void 0&&(window.__tidePersistedCanvas=null),window.__tideWsConnected===void 0&&(window.__tideWsConnected=!1),window.__tideIsPageUnloading===void 0&&(window.__tideIsPageUnloading=!1));function Rd(){return typeof window<"u"?window.__tidePersistedScene??null:null}function Wj(){return typeof window<"u"?window.__tidePersistedCanvas??null:null}function sR(){return typeof window<"u"?window.__tideWsConnected??!1:!1}function hc(n){typeof window<"u"&&(window.__tidePersistedScene=n)}function hd(n){typeof window<"u"&&(window.__tidePersistedCanvas=n)}function Vj(n){typeof window<"u"&&(window.__tideWsConnected=n)}function aR(n){typeof window<"u"&&(window.__tideIsPageUnloading=n)}function iR(){sessionStorage.setItem(dd,"true")}function Fu(n){aR(!0),sessionStorage.removeItem(dd),Lj(),Q2(),window.__tideScene&&(window.__tideScene=null);const e=Rd();e?(console.log("[App] Calling persistedScene.dispose()"),e.dispose(),hc(null)):console.log("[App] No persistedScene to dispose"),hd(null),Vj(!1);const t=document.getElementById("battlefield");t&&t.remove();const s=document.getElementById("app");s&&(s.innerHTML="")}function oR(){var i,o;if(window.__tideAppInitialized)return;if(window.__tideAppInitialized=!0,sessionStorage.getItem(dd)==="true"&&console.log("[App] Detected unclean shutdown from previous session - forcing cleanup"),window.__tideScene){console.log("[App] Cleaning up stale __tideScene reference");try{(o=(i=window.__tideScene).dispose)==null||o.call(i)}catch{}window.__tideScene=null}const e=Rd();if(e){console.log("[App] Cleaning up stale persistedScene");try{e.dispose()}catch{}hc(null)}const t=document.getElementById("battlefield"),s=Wj();t&&t!==s&&t.remove(),sessionStorage.removeItem(dd)}function rR(){typeof window>"u"||(oR(),window.addEventListener("pageshow",n=>{n.persisted&&(console.log("[App] Page restored from bfcache - cleaning up"),Fu(),window.location.reload())}),window.onunload=()=>Fu(),window.onbeforeunload=n=>{Fu()},window.addEventListener("pagehide",n=>{Fu(`pagehide (persisted=${n.persisted})`)}))}rR();const cw={showTrees:!0,showBushes:!0,showHouse:!0,showLamps:!0,showGrass:!0,showClouds:!0,fogDensity:1,floorStyle:"concrete",brightness:1,skyColor:null},uw={saturation:2,roughness:.5,metalness:-1,emissiveBoost:0,envMapIntensity:1,wireframe:!1,colorMode:"normal"},dw={idleAnimation:"sit",workingAnimation:"sprint"},lR=0;function Kj(){const n={characterScale:2,indicatorScale:1,gridVisible:!0,timeMode:"day",terrain:cw,modelStyle:uw,animations:dw,fpsLimit:lR},e=Aa(ht.CONFIG,null);return e?{characterScale:e.characterScale??n.characterScale,indicatorScale:e.indicatorScale??n.indicatorScale,gridVisible:e.gridVisible??n.gridVisible,timeMode:e.timeMode??n.timeMode,terrain:{...cw,...e.terrain},modelStyle:{...uw,...e.modelStyle},animations:{...dw,...e.animations},fpsLimit:e.fpsLimit??n.fpsLimit}:n}function cR(n){ei(ht.CONFIG,n)}typeof window<"u"&&!window.__tideHmrRefreshListeners&&(window.__tideHmrRefreshListeners=new Set);function Xj(){console.log("[Tide HMR] Manual scene refresh triggered");const n=Rd();if(n){try{n.dispose()}catch(t){console.warn("[Tide HMR] Error disposing scene:",t)}hc(null)}hd(null),window.__tideScene&&(window.__tideScene=null);const e=document.getElementById("battlefield");if(e){const t=e.getContext("webgl2")||e.getContext("webgl");if(t){const s=t.getExtension("WEBGL_lose_context");s&&s.loseContext()}}window.__tideHmrPendingSceneChanges=!1,window.location.reload()}typeof window<"u"&&(window.__tideHmrSceneRefresh=Xj);function uR({canvasRef:n,selectionBoxRef:e,showToast:t,showAgentNotification:s,toolboxModal:i,contextMenu:o,setHoveredAgentPopup:r,setBuildingPopup:c,getBuildingPopup:u,openBuildingModal:h,openPM2LogsModal:p,openBossLogsModal:m,openDatabasePanel:g}){const b=v.useRef(null),x=v.useRef(null),w=v.useRef(null);return v.useEffect(()=>{if(!n.current||!e.current)return;let k=!1;const S=Rd(),A=Wj()===n.current;function T(){var D,M,F,E,R,_,L,z;(D=b.current)==null||D.setOnToast(t),(M=b.current)==null||M.setOnBuildingClick(($,G)=>{O.selectBuilding($);const I=O.getState().buildings.get($);(I==null?void 0:I.type)==="folder"&&I.folderPath?O.openFileExplorer(I.folderPath):(I==null?void 0:I.type)==="server"||(I==null?void 0:I.type)==="boss"||(I==null?void 0:I.type)==="database"?(x.current&&clearTimeout(x.current),x.current=setTimeout(()=>{c({buildingId:$,screenPos:G,fromClick:!0}),x.current=null},150)):h($)}),(F=b.current)==null||F.setOnContextMenu(($,G,I)=>{o.open($,G,I)}),(E=b.current)==null||E.setOnAgentHover(()=>{}),(R=b.current)==null||R.setOnBuildingHover(($,G)=>{const I=u();if($&&G){const q=O.getState().buildings.get($);((q==null?void 0:q.type)==="server"||(q==null?void 0:q.type)==="boss"||(q==null?void 0:q.type)==="database")&&!(I!=null&&I.fromClick)&&c({buildingId:$,screenPos:G,fromClick:!1})}else I!=null&&I.fromClick||c(null)}),(_=b.current)==null||_.setOnGroundClick(()=>{c(null)}),(L=b.current)==null||L.setOnAreaDoubleClick($=>{O.selectArea($),i.open()}),(z=b.current)==null||z.setOnBuildingDoubleClick($=>{var I;x.current&&(clearTimeout(x.current),x.current=null),c(null);const G=O.getState().buildings.get($);(G==null?void 0:G.type)==="server"&&((I=G.pm2)!=null&&I.enabled)?p==null||p($):(G==null?void 0:G.type)==="boss"?m==null||m($):(G==null?void 0:G.type)==="database"?g==null||g($):(G==null?void 0:G.type)==="folder"&&G.folderPath?O.openFileExplorer(G.folderPath):h($)})}if(S&&A){b.current=S,console.log("[Tide] Reusing existing scene (StrictMode remount)");const D=O.getState();S.syncAreas(),S.syncBuildings(),D.agents.size>0&&(console.log("[Tide] Re-syncing agents from store after remount:",D.agents.size),S.syncAgents(Array.from(D.agents.values()))),T()}else{const D=n.current,M=e.current,F=()=>{if(k){console.log("[Tide] Effect cleaned up before scene init, skipping");return}if(!D.isConnected||!M.isConnected){console.warn("[Tide] Canvas disconnected before initialization");return}(!D.clientWidth||!D.clientHeight)&&(console.log("[Tide] Canvas has no CSS dimensions, using window fallback"),D.style.width="100%",D.style.height="100%",D.offsetHeight),(!D.clientWidth||!D.clientHeight)&&(D.width=window.innerWidth,D.height=window.innerHeight),iR();try{const E=new nR(D,M);b.current=E,hc(E),hd(D);const R=Kj();E.setCharacterScale(R.characterScale),E.setIndicatorScale(R.indicatorScale),E.setGridVisible(R.gridVisible),E.setTimeMode(R.timeMode),E.setTerrainConfig(R.terrain),E.setFloorStyle(R.terrain.floorStyle,!0),E.setAgentModelStyle(R.modelStyle),E.setIdleAnimation(R.animations.idleAnimation),E.setWorkingAnimation(R.animations.workingAnimation),E.setFpsLimit(R.fpsLimit),E.syncAreas(),E.syncBuildings(),E.loadCharacterModels().then(()=>{console.log("[Tide] Character models ready");const _=O.getState();_.customAgentClasses.size>0&&(console.log("[Tide] Applying custom classes from store:",_.customAgentClasses.size),E.setCustomAgentClasses(_.customAgentClasses)),_.agents.size>0&&(console.log("[Tide] Syncing agents from store:",_.agents.size),E.syncAgents(Array.from(_.agents.values()))),E.upgradeAgentModels()}).catch(_=>{console.warn("[Tide] Some models failed to load, using fallback:",_)}),T()}catch(E){console.error("[Tide] Failed to initialize 3D scene:",E)}};w.current=requestAnimationFrame(F)}return _j({onAgentCreated:D=>{var M,F;(M=b.current)==null||M.addAgent(D),(F=window.__spawnModalSuccess)==null||F.call(window)},onAgentUpdated:(D,M)=>{var F;(F=b.current)==null||F.updateAgent(D,M)},onAgentDeleted:D=>{var M;(M=b.current)==null||M.removeAgent(D)},onAgentsSync:D=>{var M;(M=b.current)==null||M.syncAgents(D)},onAreasSync:()=>{var M,F;(M=b.current)==null||M.syncAreas();const D=Array.from(O.getState().agents.values());(F=b.current)==null||F.syncAgents(D)},onSpawnError:()=>{var D;(D=window.__spawnModalError)==null||D.call(window)},onSpawnSuccess:()=>{var D;(D=window.__spawnModalSuccess)==null||D.call(window)},onDirectoryNotFound:D=>{var M;(M=window.__spawnModalDirNotFound)==null||M.call(window,D)},onToolUse:(D,M,F)=>{var E;(E=b.current)==null||E.showToolBubble(D,M,F)},onDelegation:(D,M)=>{var F;(F=b.current)==null||F.showDelegationEffect(D,M)},onCustomClassesSync:D=>{var M,F;(M=b.current)==null||M.setCustomAgentClasses(D),(F=b.current)==null||F.upgradeAgentModels()},onBuildingUpdated:D=>{var M;(M=b.current)==null||M.updateBuilding(D)},onSubagentStarted:D=>{var M;(M=b.current)==null||M.addSubagentEffect(D.id,D.parentAgentId,D.name,D.subagentType)},onSubagentCompleted:D=>{var E;const M=O.getSubagent(D)||O.getSubagentByToolUseId(D),F=(M==null?void 0:M.id)||D;(E=b.current)==null||E.completeSubagentEffect(F),setTimeout(()=>{var R;(R=b.current)==null||R.removeSubagentEffect(F)},3e4)}}),()=>{var D;k=!0,w.current!==null&&(cancelAnimationFrame(w.current),w.current=null),!((D=n.current)!=null&&D.isConnected)&&b.current&&(console.log("[Tide] 3D canvas unmounted - disposing scene to free memory"),J2(),b.current.dispose(),b.current=null,hc(null),hd(null))}},[n.current,e.current]),b}let mc,Sr;try{mc=require("@capacitor/local-notifications").LocalNotifications,Sr=require("@capacitor/core").Capacitor}catch{}let dR=1;const hR="agent_alerts",Yj="tide-notification-tap";function mR(){return typeof window<"u"&&window.innerWidth<=768&&"ontouchstart"in window}function Zj(n){if(mR()){O.openTerminalOnMobile(n);return}O.selectAgent(n),O.setTerminalOpen(!0)}function gg(){var n;return((n=Sr==null?void 0:Sr.isNativePlatform)==null?void 0:n.call(Sr))??!1}async function pR(){return gg()?(await mc.requestPermissions()).display==="granted":"Notification"in window?await Notification.requestPermission()==="granted":!1}async function fR(n){const{title:e,body:t,icon:s,data:i}=n;if(gg())await mc.schedule({notifications:[{id:dR++,title:e,body:t,schedule:{at:new Date(Date.now()+100)},extra:i,channelId:hR,smallIcon:"ic_launcher",autoCancel:!0}]});else if("Notification"in window&&Notification.permission==="granted"){const o=new Notification(e,{body:t,icon:s,data:i});o.onclick=()=>{window.focus(),i&&window.dispatchEvent(new CustomEvent(Yj,{detail:i}))}}}async function gR(n){n&&window.addEventListener(Yj,e=>{const t=e;t.detail&&n(t.detail)}),gg()&&mc&&await mc.addListener("localNotificationActionPerformed",e=>{n&&e.notification.extra&&n(e.notification.extra)})}function bR({showToast:n,showAgentNotification:e}){const t=v.useRef(!1);v.useEffect(()=>{if(t.current||sR())return;t.current=!0,_j({onToast:n,onReconnect:()=>{O.triggerReconnect()},onAgentNotification:i=>{e(i)}}),dc(),Vj(!0),pR(),gR(i=>{i.type==="agent_notification"&&typeof i.agentId=="string"&&Zj(i.agentId)});const s=()=>{console.log("[Tide] App resumed from background, reconnecting..."),setTimeout(()=>dc(),100)};return window.addEventListener("tideAppResume",s),()=>{window.removeEventListener("tideAppResume",s)}},[n,e])}function yR(n){v.useEffect(()=>{let e="",t="",s=new Map;const i=o=>{var u;let r=!1;const c=new Map;for(const[h,p]of o){const g=`${p.position.x.toFixed(2)},${p.position.z.toFixed(2)},${p.status},${p.class},${p.isBoss},${((u=p.subordinateIds)==null?void 0:u.length)??0}`.split("").reduce((b,x)=>(b<<5)-b+x.charCodeAt(0),0);c.set(h,g),s.get(h)!==g&&(r=!0)}return c.size!==s.size&&(r=!0),{newVersion:c,changed:r}};return O.subscribe(()=>{var g;const o=O.getState(),r=Array.from(o.selectedAgentIds).sort().join(","),c=Array.from(o.selectedBuildingIds).sort().join(","),u=r!==e,h=c!==t,{newVersion:p,changed:m}=i(o.agents);(u||h||m)&&(e=r,t=c,s=p,(g=n.current)==null||g.refreshSelectionVisuals())})},[n])}function xR(n){v.useEffect(()=>{var s;(s=n.current)==null||s.syncAreas();let e=0,t=0;return O.subscribe(()=>{var c,u;const o=O.getState().areas;if(o.size!==e){e=o.size,t=Date.now(),(c=n.current)==null||c.syncAreas();return}let r=0;for(const[h,p]of o){let m=h.charCodeAt(0);m+=(p.width??0)+(p.height??0)+(p.radius??0),m+=Math.floor(p.center.x*100)+Math.floor(p.center.z*100),m+=(p.zIndex??0)*1e3;for(let g=0;g<p.name.length;g++)m+=p.name.charCodeAt(g);for(let g=0;g<p.color.length;g++)m+=p.color.charCodeAt(g);if(p.directoryGitCounts)for(const g of p.directoryGitCounts)m+=(g+1)*7;r^=m|0}r!==t&&(t=r,(u=n.current)==null||u.syncAreas())})},[n])}function vR(n){v.useEffect(()=>{var s;(s=n.current)==null||s.syncBuildings();let e=0,t=0;return O.subscribe(()=>{var c,u;const o=O.getState().buildings;if(o.size!==e){e=o.size,t=Date.now(),(c=n.current)==null||c.syncBuildings();return}let r=0;for(const[h,p]of o){r^=p.position.x*1e3+p.position.z|0,r^=(p.scale||1)*1e4|0;const m=`${p.style||""}${p.name}${p.status}${p.gitChangesCount||0}`;for(let g=0;g<m.length;g++)r=(r<<5)-r+m.charCodeAt(g)|0}r!==t&&(t=r,(u=n.current)==null||u.syncBuildings())})},[n])}function wR(n,e){v.useEffect(()=>{var t;(t=n.current)==null||t.highlightArea(e)},[n,e])}function kR(n,e){v.useEffect(()=>{var t;(t=n.current)==null||t.setPowerSaving(e)},[n,e])}function SR({sceneRef:n,spawnModal:e,commanderModal:t,explorerModal:s,spotlightModal:i,deleteConfirmModal:o,onRequestBuildingDelete:r}){v.useEffect(()=>{const c=u=>{var F,E,R,_;const h=O.getShortcuts(),p=u.target,m=p.tagName==="INPUT"||p.tagName==="TEXTAREA",g=h.find(L=>L.id==="deselect-all");if(mt(u,g)){if(gf()){u.preventDefault();return}const L=O.getState();if(L.activeTool==="rectangle"||L.activeTool==="circle"){(F=n.current)==null||F.setDrawingTool(null),typeof window<"u"&&window.__tideScene2D_setDrawingTool&&window.__tideScene2D_setDrawingTool(null);return}e.isOpen?e.close():L.terminalOpen?(O.setTerminalOpen(!1),document.activeElement instanceof HTMLElement&&document.activeElement.blur()):(O.deselectAll(),(E=n.current)==null||E.refreshSelectionVisuals())}for(let L=1;L<=9;L++){const z=h.find($=>$.id===`select-agent-${L}`);if(mt(u,z)){u.preventDefault();const $=O.getState(),G=L-1,I=Array.from($.agents.keys());G<I.length&&(O.selectAgent(I[G]),(R=n.current)==null||R.refreshSelectionVisuals());return}}const b=h.find(L=>L.id==="spawn-agent");if(mt(u,b)){u.preventDefault(),e.open();return}const x=h.find(L=>L.id==="toggle-commander-tab");if(mt(u,x)&&!m){u.preventDefault(),t.toggle();return}const w=h.find(L=>L.id==="toggle-commander");if(mt(u,w)){u.preventDefault(),t.toggle();return}const k=h.find(L=>L.id==="toggle-file-explorer");if(mt(u,k)){u.preventDefault();const L=O.getState();if(s.isOpen||L.explorerFolderPath!==null||L.explorerAreaId!==null)s.close(),O.closeFileExplorer();else{const $=O.getLastExplorerState();if(($==null?void 0:$.type)==="folder")O.openFileExplorer($.path);else if(($==null?void 0:$.type)==="area")if(L.areas.has($.areaId))s.open($.areaId);else{const G=Array.from(L.areas.values()).filter(I=>I.directories&&I.directories.length>0);G.length>0&&s.open(G[0].id)}else{const G=Array.from(L.areas.values()).filter(I=>I.directories&&I.directories.length>0);G.length>0&&s.open(G[0].id)}}return}const S=h.find(L=>L.id==="toggle-spotlight");if(mt(u,S)||u.altKey&&!u.ctrlKey&&!u.metaKey&&u.code==="KeyP"){console.log("[useKeyboardShortcuts] Spotlight shortcut matched!",{spotlightShortcut:S,altKey:u.altKey,code:u.code}),u.preventDefault(),i.toggle();return}const j=h.find(L=>L.id==="toggle-2d-view");if(mt(u,j)){u.preventDefault();const L=O.getState().viewMode,z=L==="3d"?"2d":L==="2d"?"dashboard":"3d";O.setViewMode(z);return}const A=h.find(L=>L.id==="next-working-agent"),T=h.find(L=>L.id==="prev-working-agent");if((mt(u,A)||mt(u,T))&&!m){const L=O.getState();if(L.terminalOpen)return;const $=Array.from(L.agents.values()).filter(H=>H.status==="working");if($.length===0)return;u.preventDefault();const G=L.selectedAgentIds.size===1?Array.from(L.selectedAgentIds)[0]:null,I=G?$.findIndex(H=>H.id===G):-1;let q;mt(u,A)?q=I===-1?0:(I+1)%$.length:q=I===-1?$.length-1:(I-1+$.length)%$.length,O.selectAgent($[q].id),(_=n.current)==null||_.refreshSelectionVisuals();return}const D=h.find(L=>L.id==="delete-selected"),M=h.find(L=>L.id==="delete-selected-backspace");if((mt(u,D)||mt(u,M))&&!m){const L=O.getState();if(L.selectedAgentIds.size>0){u.preventDefault(),o.open();return}if(L.selectedBuildingIds.size>0){u.preventDefault(),r();return}return}};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[n,e,t,s,i,o,r])}function jR(){const[n,e]=v.useState(!1);return window.__tideSetBackNavModal=e,v.useEffect(()=>{if(!(window.innerWidth<=768))return;if(window.__tideBackNavSetup){window.location.hash.includes("app")||(window.location.hash="#app");return}window.__tideBackNavSetup=!0,window.location.hash.includes("app")||(window.location.hash="#app");const i=()=>{var r;window.innerWidth>768||window.location.hash.includes("app")||(window.location.hash="#app",gf()||(r=window.__tideSetBackNavModal)==null||r.call(window,!0))},o=()=>{var r;window.innerWidth>768||(window.location.hash.includes("app")||(window.location.hash="#app"),window.location.hash==="#app"&&setTimeout(()=>{window.location.hash==="#app"&&!window.location.hash.includes("app2")&&(window.history.pushState(null,"","#app2"),window.history.pushState(null,"","#app"))},50),gf()||(r=window.__tideSetBackNavModal)==null||r.call(window,!0))};window.history.pushState(null,"","#app1"),window.history.pushState(null,"","#app2"),window.history.pushState(null,"","#app"),window.addEventListener("hashchange",i),window.addEventListener("popstate",o)},[]),{showBackNavModal:n,setShowBackNavModal:e,handleLeave:()=>{e(!1);const s=window.__tideHistoryDepth??2;window.history.go(-(s+1))}}}const wp="agent-order-change";function Qj(n){const e=v.useMemo(()=>new Set(n.map(u=>u.id)),[n]),[t,s]=v.useState(()=>Aa(ht.AGENT_ORDER,[]));v.useEffect(()=>{const u=h=>{s(h.detail)};return window.addEventListener(wp,u),()=>{window.removeEventListener(wp,u)}},[]);const i=v.useMemo(()=>{const u=t.filter(g=>e.has(g)),h=n.filter(g=>!u.includes(g.id)).map(g=>g.id),p=[...u,...h],m=new Map(n.map(g=>[g.id,g]));return p.map(g=>m.get(g)).filter(g=>g!==void 0)},[n,t,e]),o=v.useCallback(u=>{s(u),ei(ht.AGENT_ORDER,u),window.dispatchEvent(new CustomEvent(wp,{detail:u}))},[]),r=v.useCallback((u,h)=>{const p=i.map(g=>g.id),[m]=p.splice(u,1);p.splice(h,0,m),o(p)},[i,o]),c=v.useCallback(()=>{s([]),ei(ht.AGENT_ORDER,[])},[]);return v.useEffect(()=>{if(e.size===0)return;const u=t.filter(h=>e.has(h));u.length!==t.length&&o(u)},[e,t,o]),{orderedAgents:i,moveAgent:r,resetOrder:c}}let va,Mf;try{va=require("@capacitor/core").Capacitor,Mf=require("@capacitor/core").CapacitorHttp}catch{}const bg="deivid11/tide-commander",CR=`https://api.github.com/repos/${bg}/releases/latest`,AR=`https://api.github.com/repos/${bg}/releases?per_page=3`,NR=3600*1e3,hw="app_update_dismissed_version",mw="0.63.2";function Jj(){var p;const[n,e]=v.useState({isChecking:!1,updateAvailable:!1,updateInfo:null,recentReleases:[],error:null,currentVersion:mw}),t=((p=va==null?void 0:va.getPlatform)==null?void 0:p.call(va))==="android"||!1,s=m=>m.replace(/^v/,"").split(".").map(b=>parseInt(b,10)||0),i=(m,g)=>{const b=s(m),x=s(g),w=Math.max(b.length,x.length);for(let k=0;k<w;k++){const S=b[k]||0,j=x[k]||0;if(S>j)return 1;if(S<j)return-1}return 0},o=async m=>{var b;if(va&&Mf&&((b=va.isNativePlatform)==null?void 0:b.call(va))===!0){const x=await Mf.get({url:m,headers:{Accept:"application/vnd.github.v3+json"}});return{data:x.data,status:x.status}}else{const x=await fetch(m,{headers:{Accept:"application/vnd.github.v3+json"}});return x.ok?{data:await x.json(),status:x.status}:{data:null,status:x.status}}},r=v.useCallback(async(m=!1)=>{e(g=>({...g,isChecking:!0,error:null}));try{const[g,b]=await Promise.all([o(CR),o(AR)]);if(g.status!==200)throw new Error(`GitHub API error: ${g.status}`);const x=g.data,w=x.tag_name;let k=[];b.status===200&&b.data&&(k=b.data.map(D=>({version:D.tag_name,name:D.name,publishedAt:D.published_at,releaseUrl:D.html_url})));const S=localStorage.getItem(hw);if(!m&&S===w)return e(D=>({...D,isChecking:!1,updateAvailable:!1,recentReleases:k})),null;if(!(i(w,mw)>0))return e(D=>({...D,isChecking:!1,updateAvailable:!1,recentReleases:k})),null;const A=x.assets.find(D=>D.name.endsWith(".apk")&&D.content_type==="application/vnd.android.package-archive"),T={version:w,name:x.name,changelog:x.body,releaseUrl:x.html_url,apkUrl:(A==null?void 0:A.browser_download_url)||null,apkSize:(A==null?void 0:A.size)||null,publishedAt:x.published_at};return e(D=>({...D,isChecking:!1,updateAvailable:!0,updateInfo:T,recentReleases:k})),T}catch(g){const b=g instanceof Error?g.message:"Failed to check for updates";return e(x=>({...x,isChecking:!1,error:b})),null}},[]),c=v.useCallback(async()=>{var m,g,b;if(!((m=n.updateInfo)!=null&&m.apkUrl)){(g=n.updateInfo)!=null&&g.releaseUrl&&window.open(n.updateInfo.releaseUrl,"_blank");return}if(!t){(b=n.updateInfo)!=null&&b.releaseUrl&&window.open(n.updateInfo.releaseUrl,"_blank");return}try{window.open(n.updateInfo.apkUrl,"_system"),e(x=>({...x,error:null}))}catch(x){const w=x instanceof Error?x.message:"Failed to open download";e(k=>({...k,error:w}))}},[n.updateInfo,t]),u=v.useCallback(()=>{n.updateInfo&&localStorage.setItem(hw,n.updateInfo.version),e(m=>({...m,updateAvailable:!1,updateInfo:null}))},[n.updateInfo]),h=v.useCallback(()=>{var m;(m=n.updateInfo)!=null&&m.releaseUrl?window.open(n.updateInfo.releaseUrl,"_blank"):window.open(`https://github.com/${bg}/releases`,"_blank")},[n.updateInfo]);return v.useEffect(()=>{if(!t)return;const m=setTimeout(()=>{r()},5e3),g=setInterval(()=>{r()},NR);return()=>{clearTimeout(m),clearInterval(g)}},[t,r]),{...n,isAndroid:t,checkForUpdate:r,downloadAndInstall:c,dismissUpdate:u,openReleasePage:h}}function ss(n){const e=v.useRef(null),t=v.useCallback(i=>{e.current=i.target,i.target===i.currentTarget&&i.stopPropagation()},[]),s=v.useCallback(i=>{i.target===i.currentTarget&&e.current===i.currentTarget&&(i.stopPropagation(),n()),e.current=null},[n]);return{handleMouseDown:t,handleClick:s}}const TR=3e4;function MR(){const n=v.useRef(null);v.useEffect(()=>{const e=async()=>{var r,c;const t=O.getState(),s=new Map,i=new Map;for(const[u,h]of t.buildings){const p=h.folderPath||h.cwd;p&&(i.has(p)||i.set(p,[]),i.get(p).push(u))}for(const[u,h]of i)try{const p=await ot(Qe(`/api/files/git-status?path=${encodeURIComponent(u)}`));if(!p.ok)continue;const g=((r=(await p.json()).files)==null?void 0:r.length)||0;s.set(u,g);for(const b of h){const x=O.getState().buildings.get(b);x&&x.gitChangesCount!==g&&O.updateBuildingLocal(b,{gitChangesCount:g})}}catch{}const o=new Map;for(const[u,h]of t.areas)h.archived||!h.directories||h.directories.forEach((p,m)=>{p&&(o.has(p)||o.set(p,[]),o.get(p).push({areaId:u,dirIndex:m}))});if(o.size!==0)for(const[u,h]of o)try{let p;if(s.has(u))p=s.get(u);else{const g=await ot(Qe(`/api/files/git-status?path=${encodeURIComponent(u)}`));if(!g.ok)continue;p=((c=(await g.json()).files)==null?void 0:c.length)||0,s.set(u,p)}const m=new Map;for(const g of h)m.has(g.areaId)||m.set(g.areaId,[]),m.get(g.areaId).push({dirIndex:g.dirIndex,count:p});for(const[g,b]of m){const x=O.getState().areas.get(g);if(!x)continue;const w=x.directoryGitCounts?[...x.directoryGitCounts]:new Array(x.directories.length).fill(0);let k=!1;for(const{dirIndex:S,count:j}of b)w[S]!==j&&(w[S]=j,k=!0);k&&O.updateAreaLocal(g,{directoryGitCounts:w})}}catch{}};return e(),n.current=setInterval(e,TR),()=>{n.current&&(clearInterval(n.current),n.current=null)}},[])}const pw={historyLimit:500,hideCost:!0,showFPS:!1,powerSaving:!1,customAgentNames:[],experimental2DView:!1,experimentalVoiceAssistant:!1,experimentalTTS:!1,externalEditorCommand:""};function ER(n,e,t,s){return{setAgents(i){const o=new Map;for(const c of i)o.set(c.id,c),(c.class==="boss"||c.isBoss)&&console.log("[Store.setAgents] Boss agent:",c.name,"subordinateIds:",c.subordinateIds);const r=i.find(c=>c.status==="working");e(c=>{c.agents=o,r&&c.selectedAgentIds.size===0&&(c.selectedAgentIds.add(r.id),c.terminalOpen=!0)}),t()},addAgent(i){e(o=>{const r=new Map(o.agents);r.set(i.id,i),o.agents=r}),t()},updateAgent(i){var u;const r=n().agents.get(i.id),c=(r==null?void 0:r.status)!==i.status;c&&console.log(`[Store] Agent ${i.name} status update: ${r==null?void 0:r.status} → ${i.status}`),e(h=>{const p=new Map(h.agents);p.set(i.id,i),h.agents=p}),t(),c&&console.log(`[Store] Agent ${i.name} status now in store: ${(u=n().agents.get(i.id))==null?void 0:u.status}`)},updateAgentContextStats(i,o){const c=n().agents.get(i);c&&(e(u=>{const h=new Map(u.agents);h.set(i,{...c,contextStats:o,contextUsed:o.totalTokens,contextLimit:o.contextWindow}),u.agents=h}),t())},removeAgent(i){e(o=>{const r=new Map(o.agents);r.delete(i),o.agents=r,o.selectedAgentIds.delete(i),o.agentOutputs.delete(i)}),t()},selectAgent(i){e(o=>{o.selectedAgentIds.clear(),i&&(o.selectedAgentIds.add(i),o.lastSelectedAgentId=i),o.currentSnapshot=null}),t()},addToSelection(i){e(o=>{o.selectedAgentIds.has(i)?o.selectedAgentIds.delete(i):o.selectedAgentIds.add(i)}),t()},selectMultiple(i){e(o=>{o.selectedAgentIds.clear();for(const r of i)o.selectedAgentIds.add(r)}),t()},deselectAll(){e(i=>{i.selectedAgentIds.clear()}),t()},spawnAgent(i,o,r,c,u,h,p,m,g,b,x,w,k){console.log("[Store] spawnAgent called with:",{name:i,agentClass:o,cwd:r,position:c,sessionId:u,useChrome:h,permissionMode:p,initialSkillIds:m,provider:g,codexConfig:b,codexModel:x,model:w,customInstructions:k?`${k.length} chars`:void 0});const S=c?{x:c.x,y:0,z:c.z}:void 0,j={type:"spawn_agent",payload:{name:i,class:o,cwd:r,position:S,sessionId:u,useChrome:h,permissionMode:p,initialSkillIds:m,provider:g,codexConfig:b,codexModel:x,model:w,customInstructions:k}},A=s();if(!A){console.error("[Store] sendMessage is not defined! WebSocket may not be connected");return}A(j),console.log("[Store] Message sent to WebSocket")},createDirectoryAndSpawn(i,o,r){var c;(c=s())==null||c({type:"create_directory",payload:{path:i,name:o,class:r}})},sendCommand(i,o){var r;e(c=>{c.lastPrompts.set(i,{text:o,timestamp:Date.now()})}),t(),(r=s())==null||r({type:"send_command",payload:{agentId:i,command:o}})},refreshAgentContext(i){var o;(o=s())==null||o({type:"request_context_stats",payload:{agentId:i}})},moveAgent(i,o){var u;const c=n().agents.get(i);c&&(e(h=>{const p={...c,position:o},m=new Map(h.agents);m.set(i,p),h.agents=m}),t()),(u=s())==null||u({type:"move_agent",payload:{agentId:i,position:o}})},killAgent(i){var o;(o=s())==null||o({type:"kill_agent",payload:{agentId:i}})},stopAgent(i){var o;(o=s())==null||o({type:"stop_agent",payload:{agentId:i}})},clearContext(i){var o;(o=s())==null||o({type:"clear_context",payload:{agentId:i}}),e(r=>{const c=new Map(r.agentOutputs);c.delete(i),r.agentOutputs=c}),t()},collapseContext(i){var o;(o=s())==null||o({type:"collapse_context",payload:{agentId:i}})},removeAgentFromServer(i){var o;(o=s())==null||o({type:"remove_agent",payload:{agentId:i}})},renameAgent(i,o){var u;const c=n().agents.get(i);c&&(e(h=>{const p={...c,name:o},m=new Map(h.agents);m.set(i,p),h.agents=m}),t()),(u=s())==null||u({type:"rename_agent",payload:{agentId:i,name:o}})},updateAgentProperties(i,o){var u;const c=n().agents.get(i);c&&(e(h=>{const p={...c};o.class!==void 0&&(p.class=o.class),o.permissionMode!==void 0&&(p.permissionMode=o.permissionMode),o.model!==void 0&&(p.model=o.model),o.provider!==void 0&&(p.provider=o.provider),o.codexConfig!==void 0&&(p.codexConfig=o.codexConfig),o.codexModel!==void 0&&(p.codexModel=o.codexModel),o.useChrome!==void 0&&(p.useChrome=o.useChrome),o.cwd!==void 0&&(p.cwd=o.cwd);const m=new Map(h.agents);m.set(i,p),h.agents=m}),t()),(u=s())==null||u({type:"update_agent_properties",payload:{agentId:i,updates:o}})},getTotalTokens(){let i=0;for(const o of n().agents.values())i+=o.tokensUsed;return i},getSelectedAgents(){const i=n(),o=[];for(const r of i.selectedAgentIds){const c=i.agents.get(r);c&&o.push(c)}return o},addActivity(i){e(o=>{o.activities.unshift(i),o.activities.length>100&&o.activities.pop()}),t()},addToolExecution(i,o,r){const u=n().agents.get(i);e(h=>{h.toolExecutions.unshift({agentId:i,agentName:(u==null?void 0:u.name)||"Unknown",toolName:o,toolInput:r,timestamp:Date.now()}),h.toolExecutions.length>200&&h.toolExecutions.pop()}),t()},addFileChange(i,o,r){const u=n().agents.get(i);e(h=>{h.fileChanges.unshift({agentId:i,agentName:(u==null?void 0:u.name)||"Unknown",action:o,filePath:r,timestamp:Date.now()}),h.fileChanges.length>200&&h.fileChanges.pop()}),t()},async loadToolHistory(){try{const o=await(await ot(Qe("/api/agents/tool-history?limit=100"))).json();e(r=>{o.toolExecutions&&(r.toolExecutions=o.toolExecutions),o.fileChanges&&(r.fileChanges=o.fileChanges)}),t()}catch(i){console.error("[Store] Failed to load tool history:",i)}}}}function _R(n,e,t,s){return{addOutput(i,o){const r=s();e(c=>{const u=c.agentOutputs.get(i)||[];if(o.uuid&&u.some(g=>g.uuid===o.uuid))return;let h=[...u,o];h.length>200&&(h=h.slice(-200)),uc.info(`Store: ${u.length} -> ${h.length}`,{agentId:i,text:o.text.slice(0,60),isStreaming:o.isStreaming,listeners:r},"store:addOutput");const p=new Map(c.agentOutputs);p.set(i,h),c.agentOutputs=p}),t()},clearOutputs(i){e(o=>{const r=new Map(o.agentOutputs);r.delete(i),o.agentOutputs=r}),t()},getOutputs(i){return n().agentOutputs.get(i)||[]},addUserPromptToOutput(i,o){this.addOutput(i,{text:o,isStreaming:!1,timestamp:Date.now(),isUserPrompt:!0})},getLastPrompt(i){return n().lastPrompts.get(i)},setLastPrompt(i,o){e(r=>{r.lastPrompts.set(i,{text:o,timestamp:Date.now()})}),t()},preserveOutputs(){const i=n(),o=new Map;for(const[r,c]of i.agentOutputs)o.set(r,c.map(u=>({...u})));return o},mergeOutputsWithHistory(i,o,r){const c=[...o,...r];return c.sort((u,h)=>u.timestamp-h.timestamp),e(u=>{const h=new Map(u.agentOutputs);h.set(i,c),u.agentOutputs=h}),t(),c}}}function DR(n,e,t,s){return{setSupervisorReport(i){e(o=>{o.supervisor.lastReport=i,o.supervisor.lastReportTime=i.timestamp;const r=new Map(o.supervisor.agentHistories);for(const c of i.agentSummaries){const u=r.get(c.agentId)||[],h={id:`${i.id}-${c.agentId}`,timestamp:i.timestamp,reportId:i.id,analysis:c};if(!u.some(p=>p.reportId===i.id)){const p=[h,...u];p.length>50&&p.pop(),r.set(c.agentId,p)}}o.supervisor.agentHistories=r,o.supervisor.generatingReport=!1}),t()},addNarrative(i,o){e(r=>{const c=r.supervisor.narratives.get(i)||[];c.unshift(o),c.length>50&&c.pop();const u=new Map(r.supervisor.narratives);u.set(i,c),r.supervisor.narratives=u}),t()},getNarratives(i){return n().supervisor.narratives.get(i)||[]},setSupervisorStatus(i){e(o=>{o.supervisor.enabled=i.enabled,i.autoReportOnComplete!==void 0&&(o.supervisor.autoReportOnComplete=i.autoReportOnComplete),o.supervisor.lastReportTime=i.lastReportTime,o.supervisor.nextReportTime=i.nextReportTime}),t()},setSupervisorConfig(i){var o;(o=s())==null||o({type:"set_supervisor_config",payload:i})},requestSupervisorReport(){var i;e(o=>{o.supervisor.generatingReport=!0}),t(),(i=s())==null||i({type:"request_supervisor_report",payload:{}})},requestAgentSupervisorHistory(i){var o;e(r=>{r.supervisor.loadingHistoryForAgent=i}),t(),(o=s())==null||o({type:"request_agent_supervisor_history",payload:{agentId:i}})},setAgentSupervisorHistory(i){e(o=>{const r=new Map(o.supervisor.agentHistories);r.set(i.agentId,i.entries),o.supervisor.agentHistories=r,o.supervisor.historyFetchedForAgents.add(i.agentId),o.supervisor.loadingHistoryForAgent===i.agentId&&(o.supervisor.loadingHistoryForAgent=null)}),t()},getAgentSupervisorHistory(i){return n().supervisor.agentHistories.get(i)||[]},addAgentAnalysis(i,o){e(r=>{const c=new Map(r.supervisor.agentHistories),u=c.get(i)||[],h={id:`single-${Date.now()}-${i}`,timestamp:Date.now(),reportId:`single-${Date.now()}`,analysis:o};if(!u.some(m=>Math.abs(m.timestamp-h.timestamp)<5e3&&m.analysis.statusDescription===o.statusDescription)){const m=[h,...u];m.length>50&&m.pop(),c.set(i,m),r.supervisor.agentHistories=c}}),t()},isLoadingHistoryForAgent(i){return n().supervisor.loadingHistoryForAgent===i},hasHistoryBeenFetched(i){return n().supervisor.historyFetchedForAgents.has(i)},setGlobalUsage(i){console.log("[Supervisor] setGlobalUsage called with:",i),e(o=>{o.supervisor.globalUsage=i,o.supervisor.refreshingUsage=!1}),t()},requestGlobalUsage(){console.log("[Supervisor] requestGlobalUsage called"),e(o=>{o.supervisor.refreshingUsage=!0}),t();const i=s();console.log("[Supervisor] sendMessage function:",i?"available":"null"),i?(console.log("[Supervisor] Sending request_global_usage message"),i({type:"request_global_usage",payload:{}})):console.warn("[Supervisor] Cannot send request_global_usage - no sendMessage function")},getGlobalUsage(){return n().supervisor.globalUsage}}}function RR(n,e,t,s){const i=()=>{var r;const o=Array.from(n().areas.values());(r=s())==null||r({type:"sync_areas",payload:o})};return{setActiveTool(o){e(r=>{r.activeTool=o,o!=="select"&&(r.selectedAreaId=null)}),t()},selectArea(o){e(r=>{r.selectedAreaId=o}),t()},addArea(o){if(o.zIndex===void 0||o.zIndex===null){const r=Array.from(n().areas.values()),c=r.length===0?-1:Math.max(...r.map(u=>u.zIndex??0));o.zIndex=c+1}e(r=>{r.areas.set(o.id,o)}),i(),t()},updateArea(o,r){n().areas.get(o)&&(e(h=>{Object.assign(h.areas.get(o),r)}),i(),t())},updateAreaLocal(o,r){n().areas.get(o)&&(e(h=>{Object.assign(h.areas.get(o),r)}),t())},deleteArea(o){e(r=>{r.areas.delete(o),r.selectedAreaId===o&&(r.selectedAreaId=null)}),i(),t()},assignAgentToArea(o,r){const u=n().areas.get(r);u&&!u.assignedAgentIds.includes(o)&&(e(h=>{for(const p of h.areas.values()){const m=p.assignedAgentIds.indexOf(o);m!==-1&&p.assignedAgentIds.splice(m,1)}h.areas.get(r).assignedAgentIds.push(o)}),i(),t())},unassignAgentFromArea(o,r){const u=n().areas.get(r);if(u){const h=u.assignedAgentIds.indexOf(o);h!==-1&&(e(p=>{p.areas.get(r).assignedAgentIds.splice(h,1)}),i(),t())}},addDirectoryToArea(o,r){const u=n().areas.get(o);u&&!u.directories.includes(r)&&(e(h=>{h.areas.get(o).directories.push(r)}),i(),t())},removeDirectoryFromArea(o,r){const u=n().areas.get(o);if(u){const h=u.directories.indexOf(r);h!==-1&&(e(p=>{p.areas.get(o).directories.splice(h,1)}),i(),t())}},getAreaDirectories(o){const r=n().areas.get(o);return(r==null?void 0:r.directories)||[]},isPositionInArea(o,r){if(r.type==="rectangle"&&r.width&&r.height){const c=r.width/2,u=r.height/2;return o.x>=r.center.x-c&&o.x<=r.center.x+c&&o.z>=r.center.z-u&&o.z<=r.center.z+u}else if(r.type==="circle"&&r.radius){const c=o.x-r.center.x,u=o.z-r.center.z;return c*c+u*u<=r.radius*r.radius}return!1},getAreaForAgent(o){const r=n(),c=r.agents.get(o);if(!c)return null;for(const u of r.areas.values())if(this.isPositionInArea({x:c.position.x,z:c.position.z},u))return u;return null},setAreasFromServer(o){e(r=>{const c=new Map;for(let u=0;u<o.length;u++){const h=o[u];h.directories||(h.directories=[]),(h.zIndex===void 0||h.zIndex===null)&&(h.zIndex=u),h.archived===void 0&&(h.archived=!1),c.set(h.id,h)}r.areas=c}),t()},getAreasInZOrder(){return Array.from(n().areas.values()).sort((r,c)=>(r.zIndex??0)-(c.zIndex??0))},getNextZIndex(){const o=Array.from(n().areas.values());return o.length===0?0:Math.max(...o.map(c=>c.zIndex??0))+1},bringAreaToFront(o){const r=n(),c=r.areas.get(o);if(!c)return;const u=Array.from(r.areas.values()),h=u.length===0?-1:Math.max(...u.map(b=>b.zIndex??0)),p=h+1,m=c.zIndex??0,g=u.filter(b=>(b.zIndex??0)===h);m===h&&g.length===1||(e(b=>{b.areas.get(o).zIndex=p}),i(),t())},sendAreaToBack(o){const r=n(),c=r.areas.get(o);if(!c)return;const u=Array.from(r.areas.values()),h=Math.min(...u.map(g=>g.zIndex??0)),p=c.zIndex??0,m=u.filter(g=>(g.zIndex??0)===h);p===h&&m.length===1||(e(g=>{for(const b of g.areas.values())b.id!==o&&(b.zIndex=(b.zIndex??0)+1);g.areas.get(o).zIndex=0}),i(),t())},setAreaZIndex(o,r){n().areas.get(o)&&(e(h=>{h.areas.get(o).zIndex=r}),i(),t())},archiveArea(o,r){const u=n().areas.get(o);if(!(!u||u.archived)){if(r)for(const h of u.assignedAgentIds)r(h);e(h=>{const p=h.areas.get(o);p.archived=!0,p.archivedAt=Date.now(),p.originalCenter={...p.center},h.selectedAreaId===o&&(h.selectedAreaId=null)}),i(),t()}},restoreArchivedArea(o,r){const c=n(),u=c.areas.get(o);if(!u||!u.archived)return;const h=u.center,p=r||u.originalCenter||u.center,m=p.x-h.x,g=p.z-h.z,b=Array.from(c.areas.values()),w=(b.length===0?-1:Math.max(...b.map(k=>k.zIndex??0)))+1;e(k=>{const S=k.areas.get(o);if(S.archived=!1,S.archivedAt=void 0,S.center=p,S.zIndex=w,m!==0||g!==0)for(const j of S.assignedAgentIds){const A=k.agents.get(j);A&&(A.position={x:A.position.x+m,y:A.position.y,z:A.position.z+g})}}),i(),t()},getArchivedAreas(){return Array.from(n().areas.values()).filter(o=>o.archived===!0)},getVisibleAreas(){return Array.from(n().areas.values()).filter(o=>!o.archived)},isAgentInArchivedArea(o){const r=n();for(const c of r.areas.values())if(c.archived&&c.assignedAgentIds.includes(o))return!0;return!1}}}function LR(n,e,t,s){const i=()=>{var c;const r=Array.from(n().buildings.values());(c=s())==null||c({type:"sync_buildings",payload:r})},o={selectBuilding(r){e(c=>{c.selectedBuildingIds.clear(),r&&c.selectedBuildingIds.add(r)}),t()},selectMultipleBuildings(r){e(c=>{c.selectedBuildingIds.clear();for(const u of r)c.selectedBuildingIds.add(u)}),t()},toggleBuildingSelection(r){e(c=>{c.selectedBuildingIds.has(r)?c.selectedBuildingIds.delete(r):c.selectedBuildingIds.add(r)}),t()},isBuildingSelected(r){return n().selectedBuildingIds.has(r)},getSelectedBuildingIds(){return Array.from(n().selectedBuildingIds)},deleteSelectedBuildings(){var c,u,h;const r=n();for(const p of r.selectedBuildingIds){const m=r.buildings.get(p);((c=m==null?void 0:m.pm2)!=null&&c.enabled||(u=m==null?void 0:m.docker)!=null&&u.enabled)&&((h=s())==null||h({type:"building_command",payload:{buildingId:p,command:"delete"}}))}e(p=>{const m=new Map(p.buildings);for(const g of p.selectedBuildingIds)m.delete(g);p.buildings=m,p.selectedBuildingIds.clear()}),i(),t()},addBuilding(r){e(c=>{const u=new Map(c.buildings);u.set(r.id,r),c.buildings=u}),i(),t()},updateBuilding(r,c){const h=n().buildings.get(r);h&&(e(p=>{const m=new Map(p.buildings);m.set(r,{...h,...c}),p.buildings=m}),i(),t())},updateBuildingLocal(r,c){const h=n().buildings.get(r);h&&(e(p=>{const m=new Map(p.buildings);m.set(r,{...h,...c}),p.buildings=m}),t())},deleteBuilding(r){var h,p,m;const u=n().buildings.get(r);((h=u==null?void 0:u.pm2)!=null&&h.enabled||(p=u==null?void 0:u.docker)!=null&&p.enabled)&&((m=s())==null||m({type:"building_command",payload:{buildingId:r,command:"delete"}})),e(g=>{const b=new Map(g.buildings);b.delete(r),g.buildings=b,g.selectedBuildingIds.delete(r)}),i(),t()},moveBuilding(r,c){const h=n().buildings.get(r);h&&(e(p=>{const m=new Map(p.buildings);m.set(r,{...h,position:c}),p.buildings=m}),i(),t())},updateBuildingPosition(r,c){o.moveBuilding(r,c)},createBuilding(r){const c={...r,id:`building_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,status:"stopped",createdAt:Date.now()};o.addBuilding(c)},sendBuildingCommand(r,c){var u;(u=s())==null||u({type:"building_command",payload:{buildingId:r,command:c}})},addBuildingLogs(r,c){e(u=>{const p=[...u.buildingLogs.get(r)||[],c];p.length>500&&p.splice(0,p.length-500);const m=new Map(u.buildingLogs);m.set(r,p),u.buildingLogs=m}),t()},getBuildingLogs(r){return n().buildingLogs.get(r)||[]},clearBuildingLogs(r){e(c=>{const u=new Map(c.buildingLogs);u.delete(r),c.buildingLogs=u}),t()},setBuildingsFromServer(r){e(c=>{const u=new Map;for(const h of r)u.set(h.id,h);c.buildings=u}),t()},updateBuildingFromServer(r){e(c=>{const u=new Map(c.buildings);u.set(r.id,r),c.buildings=u}),t()},removeBuildingFromServer(r){e(c=>{const u=new Map(c.buildings);u.delete(r),c.buildings=u,c.selectedBuildingIds.delete(r)}),t()},startLogStreaming(r,c=100){var h,p,m;const u=n().buildings.get(r);e(g=>{const b=new Map(g.streamingBuildingLogs);b.set(r,""),g.streamingBuildingLogs=b}),(h=u==null?void 0:u.docker)!=null&&h.enabled?(p=s())==null||p({type:"docker_logs_start",payload:{buildingId:r,lines:c}}):(m=s())==null||m({type:"pm2_logs_start",payload:{buildingId:r,lines:c}})},stopLogStreaming(r){var u,h,p;const c=n().buildings.get(r);(u=c==null?void 0:c.docker)!=null&&u.enabled?(h=s())==null||h({type:"docker_logs_stop",payload:{buildingId:r}}):(p=s())==null||p({type:"pm2_logs_stop",payload:{buildingId:r}})},appendStreamingLogChunk(r,c){e(u=>{const h=u.streamingBuildingLogs.get(r)||"",p=500*1024;let m=h+c;if(m.length>p){const b=m.indexOf(`
|
|
150
150
|
`,m.length-p);b>0?m=m.slice(b+1):m=m.slice(-p)}const g=new Map(u.streamingBuildingLogs);g.set(r,m),u.streamingBuildingLogs=g}),t()},setStreamingStatus(r,c){e(u=>{const h=new Set(u.streamingBuildingIds);c?h.add(r):h.delete(r),u.streamingBuildingIds=h}),t()},getStreamingLogs(r){return n().streamingBuildingLogs.get(r)||""},clearStreamingLogs(r){e(c=>{const u=new Map(c.streamingBuildingLogs);u.delete(r),c.streamingBuildingLogs=u}),t()},isLogStreaming(r){return n().streamingBuildingIds.has(r)},sendBossBuildingCommand(r,c){var u;(u=s())==null||u({type:"boss_building_command",payload:{buildingId:r,command:c}})},assignBuildingsToBoSS(r,c){var p;const h=n().buildings.get(r);h&&(e(m=>{const g=new Map(m.buildings);g.set(r,{...h,subordinateBuildingIds:c}),m.buildings=g}),i(),t()),(p=s())==null||p({type:"assign_buildings",payload:{bossBuildingId:r,subordinateBuildingIds:c}})},startBossLogStreaming(r,c=50){var u;e(h=>{const p=new Map(h.bossStreamingLogs);p.set(r,[]),h.bossStreamingLogs=p}),(u=s())==null||u({type:"boss_building_logs_start",payload:{buildingId:r,lines:c}})},stopBossLogStreaming(r){var c;(c=s())==null||c({type:"boss_building_logs_stop",payload:{buildingId:r}})},appendBossStreamingLogChunk(r,c,u,h,p){e(m=>{const g=m.bossStreamingLogs.get(r)||[],b={subordinateId:c,subordinateName:u,chunk:h,timestamp:Date.now(),isError:p},x=[...g,b];x.length>1e3&&x.splice(0,x.length-1e3);const w=new Map(m.bossStreamingLogs);w.set(r,x),m.bossStreamingLogs=w}),t()},getBossStreamingLogs(r){return n().bossStreamingLogs.get(r)||[]},clearBossStreamingLogs(r){e(c=>{const u=new Map(c.bossStreamingLogs);u.delete(r),c.bossStreamingLogs=u}),t()},requestDockerContainersList(){var r;(r=s())==null||r({type:"docker_list_containers",payload:{}})},setDockerContainersList(r,c){e(u=>{u.dockerContainersList=r,u.dockerComposeProjectsList=c}),t()},getDockerContainersList(){return n().dockerContainersList},getDockerComposeProjectsList(){return n().dockerComposeProjectsList}};return o}function PR(n,e,t,s){return{addPermissionRequest(i){e(o=>{const r=new Map(o.permissionRequests);r.set(i.id,i),o.permissionRequests=r}),t()},resolvePermissionRequest(i,o){const c=n().permissionRequests.get(i);c&&(e(u=>{const h=new Map(u.permissionRequests);h.set(i,{...c,status:o?"approved":"denied"}),u.permissionRequests=h}),t(),setTimeout(()=>{e(u=>{const h=new Map(u.permissionRequests);h.delete(i),u.permissionRequests=h}),t()},2e3))},respondToPermissionRequest(i,o,r,c){var u;(u=s())==null||u({type:"permission_response",payload:{requestId:i,approved:o,reason:r,remember:c}})},getPendingPermissionsForAgent(i){return Array.from(n().permissionRequests.values()).filter(o=>o.agentId===i&&o.status==="pending")},clearAllPermissions(){e(i=>{i.permissionRequests=new Map}),t()}}}function BR(n,e,t,s){return{spawnBossAgent(i,o,r,c,u,h,p,m,g,b,x,w,k){var j;const S=c?{x:c.x,y:0,z:c.z}:void 0;(j=s())==null||j({type:"spawn_boss_agent",payload:{name:i,class:o,cwd:r,position:S,subordinateIds:u,useChrome:h,permissionMode:p,provider:m,codexConfig:g,codexModel:b,model:x,customInstructions:w,initialSkillIds:k}})},assignSubordinates(i,o){var r;(r=s())==null||r({type:"assign_subordinates",payload:{bossId:i,subordinateIds:o}})},removeSubordinate(i,o){var r;(r=s())==null||r({type:"remove_subordinate",payload:{bossId:i,subordinateId:o}})},sendBossCommand(i,o){var r;e(c=>{c.pendingDelegation={bossId:i,command:o}}),t(),(r=s())==null||r({type:"send_boss_command",payload:{bossId:i,command:o}})},requestDelegationHistory(i){var o;(o=s())==null||o({type:"request_delegation_history",payload:{bossId:i}})},handleDelegationDecision(i){e(o=>{var h;const r=new Map(o.delegationHistories),c=r.get(i.bossId)||[],u=c.findIndex(p=>p.id===i.id);if(u!==-1?c[u]=i:(c.unshift(i),c.length>100&&c.pop()),r.set(i.bossId,c),o.delegationHistories=r,i.status==="sent"&&i.selectedAgentId){const p=o.agents.get(i.bossId),m=new Map(o.lastDelegationReceived);m.set(i.selectedAgentId,{bossName:(p==null?void 0:p.name)||"Boss",taskCommand:i.userCommand,timestamp:Date.now()}),o.lastDelegationReceived=m}((h=o.pendingDelegation)==null?void 0:h.bossId)===i.bossId&&i.status!=="pending"&&(o.pendingDelegation=null)}),t()},setDelegationHistory(i,o){e(r=>{const c=new Map(r.delegationHistories);c.set(i,o),r.delegationHistories=c}),t()},getDelegationHistory(i){return n().delegationHistories.get(i)||[]},getLastDelegationReceived(i){return n().lastDelegationReceived.get(i)||null},clearLastDelegationReceived(i){n().lastDelegationReceived.has(i)&&(e(r=>{const c=new Map(r.lastDelegationReceived);c.delete(i),r.lastDelegationReceived=c}),t())},updateBossSubordinates(i,o){const c=n().agents.get(i);c&&(e(u=>{const h={...c,subordinateIds:o},p=new Map(u.agents);p.set(i,h),u.agents=p}),t())},getSubordinates(i){const o=n(),r=o.agents.get(i),c=(r==null?void 0:r.isBoss)===!0||(r==null?void 0:r.class)==="boss";return!r||!c||!r.subordinateIds?[]:r.subordinateIds.map(u=>o.agents.get(u)).filter(u=>u!==void 0)},isBossAgent(i){const o=n().agents.get(i);return(o==null?void 0:o.isBoss)===!0||(o==null?void 0:o.class)==="boss"},getBossForAgent(i){const o=n(),r=o.agents.get(i);return r!=null&&r.bossId&&o.agents.get(r.bossId)||null},getAvailableSubordinates(){return Array.from(n().agents.values()).filter(i=>i.class!=="boss")},handleAgentTaskStarted(i,o,r,c){e(u=>{const h=new Map(u.agentTaskProgress);let p=h.get(i);p||(p=new Map,h.set(i,p)),p.set(o,{agentId:o,agentName:r,taskDescription:c,status:"working",output:[],startedAt:Date.now()}),u.agentTaskProgress=h}),t()},handleAgentTaskOutput(i,o,r){e(c=>{const u=c.agentTaskProgress.get(i);if(!u)return;const h=u.get(o);if(!h)return;const p=new Map(c.agentTaskProgress),m=new Map(u);m.set(o,{...h,output:[...h.output,r]}),p.set(i,m),c.agentTaskProgress=p}),t()},handleAgentTaskCompleted(i,o,r){e(c=>{const u=c.agentTaskProgress.get(i);if(!u)return;const h=u.get(o);if(!h)return;const p=new Map(c.agentTaskProgress),m=new Map(u);m.set(o,{...h,status:r?"completed":"failed",completedAt:Date.now()}),p.set(i,m),c.agentTaskProgress=p}),t()},getAgentTaskProgress(i){return n().agentTaskProgress.get(i)||new Map},clearAgentTaskProgress(i,o){e(r=>{if(o){const c=r.agentTaskProgress.get(i);if(c){const u=new Map(r.agentTaskProgress),h=new Map(c);h.delete(o),u.set(i,h),r.agentTaskProgress=u}}else{const c=new Map(r.agentTaskProgress);c.delete(i),r.agentTaskProgress=c}}),t()},clearAllSubordinatesContext(i){const r=n().agents.get(i),c=(r==null?void 0:r.isBoss)===!0||(r==null?void 0:r.class)==="boss";if(console.log("[Store] clearAllSubordinatesContext called:",{bossId:i,bossName:r==null?void 0:r.name,isBoss:c,subordinateIds:r==null?void 0:r.subordinateIds}),!r||!c||!r.subordinateIds||r.subordinateIds.length===0){console.log("[Store] clearAllSubordinatesContext: No boss or subordinates found, returning early");return}const u=s();console.log("[Store] clearAllSubordinatesContext: sendMessage available:",!!u);for(const h of r.subordinateIds)console.log("[Store] clearAllSubordinatesContext: Sending clear_context for subordinate:",h),u==null||u({type:"clear_context",payload:{agentId:h}});e(h=>{const p=new Map(h.agentOutputs);for(const m of r.subordinateIds||[])p.delete(m);h.agentOutputs=p}),t(),console.log("[Store] clearAllSubordinatesContext: Completed")}}}function OR(n,e,t,s){return{setSkillsFromServer(i){e(o=>{const r=new Map;for(const c of i)r.set(c.id,c);o.skills=r}),t()},addSkillFromServer(i){e(o=>{const r=new Map(o.skills);r.set(i.id,i),o.skills=r}),t()},updateSkillFromServer(i){e(o=>{const r=new Map(o.skills);r.set(i.id,i),o.skills=r}),t()},removeSkillFromServer(i){e(o=>{const r=new Map(o.skills);r.delete(i),o.skills=r}),t()},getSkill(i){return n().skills.get(i)},getAllSkills(){return Array.from(n().skills.values())},getSkillsForAgent(i){const o=n(),r=o.agents.get(i);return r?Array.from(o.skills.values()).filter(c=>c.enabled?!!(c.assignedAgentIds.includes(i)||c.assignedAgentClasses.includes(r.class)):!1):[]},createSkill(i){var o;(o=s())==null||o({type:"create_skill",payload:i})},updateSkill(i,o){var r;(r=s())==null||r({type:"update_skill",payload:{id:i,updates:o}})},deleteSkill(i){var o;(o=s())==null||o({type:"delete_skill",payload:{id:i}})},assignSkillToAgent(i,o){var r;(r=s())==null||r({type:"assign_skill",payload:{skillId:i,agentId:o}})},unassignSkillFromAgent(i,o){var r;(r=s())==null||r({type:"unassign_skill",payload:{skillId:i,agentId:o}})},requestAgentSkills(i){var o;(o=s())==null||o({type:"request_agent_skills",payload:{agentId:i}})},setCustomAgentClassesFromServer(i){e(o=>{const r=new Map;for(const c of i)r.set(c.id,c);o.customAgentClasses=r}),t()},addCustomAgentClassFromServer(i){e(o=>{const r=new Map(o.customAgentClasses);r.set(i.id,i),o.customAgentClasses=r}),t()},updateCustomAgentClassFromServer(i){e(o=>{const r=new Map(o.customAgentClasses);r.set(i.id,i),o.customAgentClasses=r}),t()},removeCustomAgentClassFromServer(i){e(o=>{const r=new Map(o.customAgentClasses);r.delete(i),o.customAgentClasses=r}),t()},getCustomAgentClass(i){return n().customAgentClasses.get(i)},getAllCustomAgentClasses(){return Array.from(n().customAgentClasses.values())},createCustomAgentClass(i){var o;(o=s())==null||o({type:"create_custom_agent_class",payload:i})},updateCustomAgentClass(i,o){var r;(r=s())==null||r({type:"update_custom_agent_class",payload:{id:i,updates:o}})},deleteCustomAgentClass(i){var o;(o=s())==null||o({type:"delete_custom_agent_class",payload:{id:i}})}}}function IR(n,e,t){return{handleExecTaskStarted(s,i,o,r,c){e(u=>{const h={taskId:s,agentId:i,agentName:o,command:r,cwd:c,status:"running",output:[],startedAt:Date.now()};u.execTasks||(u.execTasks=new Map),u.execTasks.set(s,h)}),t()},handleExecTaskOutput(s,i,o,r){e(c=>{var h;const u=(h=c.execTasks)==null?void 0:h.get(s);if(u){const p=o.split(`
|
|
151
151
|
`);for(const m of p)m.length>0&&u.output.push(r?`[stderr] ${m}`:m);u.output.length>500&&(u.output=u.output.slice(-500))}}),t()},handleExecTaskCompleted(s,i,o,r){e(c=>{var h;const u=(h=c.execTasks)==null?void 0:h.get(s);u&&(u.status=r?"completed":"failed",u.exitCode=o,u.completedAt=Date.now())}),t()},async stopExecTask(s){try{return(await fetch(`/api/exec/tasks/${s}`,{method:"DELETE"})).ok?(e(o=>{var c;const r=(c=o.execTasks)==null?void 0:c.get(s);r&&r.status==="running"&&(r.status="failed",r.exitCode=-15,r.completedAt=Date.now(),r.output.push("[Task stopped by user]"))}),t(),!0):!1}catch(i){return console.error("Failed to stop exec task:",i),!1}},getExecTasks(s){const i=n();return i.execTasks?Array.from(i.execTasks.values()).filter(o=>o.agentId===s):[]},getAllExecTasks(){const s=n();return s.execTasks?Array.from(s.execTasks.values()):[]},getExecTask(s){var o;return(o=n().execTasks)==null?void 0:o.get(s)},clearCompletedExecTasks(s){e(i=>{if(i.execTasks)for(const[o,r]of i.execTasks.entries())r.agentId===s&&r.status!=="running"&&i.execTasks.delete(o)}),t()},clearAllExecTasks(s){e(i=>{if(i.execTasks)for(const[o,r]of i.execTasks.entries())r.agentId===s&&i.execTasks.delete(o)}),t()},removeExecTask(s){e(i=>{i.execTasks&&i.execTasks.delete(s)}),t()}}}function zR(n,e,t,s){return{setSecretsFromServer(i){e(o=>{const r=new Map;for(const c of i)r.set(c.id,c);o.secrets=r}),t()},addSecretFromServer(i){e(o=>{const r=new Map(o.secrets);r.set(i.id,i),o.secrets=r}),t()},updateSecretFromServer(i){e(o=>{const r=new Map(o.secrets);r.set(i.id,i),o.secrets=r}),t()},removeSecretFromServer(i){e(o=>{const r=new Map(o.secrets);r.delete(i),o.secrets=r}),t()},getSecret(i){return n().secrets.get(i)},getSecretByKey(i){return Array.from(n().secrets.values()).find(o=>o.key===i)},getAllSecrets(){return Array.from(n().secrets.values())},createSecret(i){var o;(o=s())==null||o({type:"create_secret",payload:i})},updateSecret(i,o){var r;(r=s())==null||r({type:"update_secret",payload:{id:i,updates:o}})},deleteSecret(i){var o;(o=s())==null||o({type:"delete_secret",payload:{id:i}})}}}function fw(){return{connectionStatus:new Map,databases:new Map,tables:new Map,tableSchemas:new Map,queryResults:[],queryHistory:[],executingQuery:!1,activeConnectionId:null,activeDatabase:null}}function FR(n,e,t,s){const i=r=>{n().databaseState.has(r)||e(u=>{const h=new Map(u.databaseState);h.set(r,fw()),u.databaseState=h})};return{testDatabaseConnection(r,c){var u;(u=s())==null||u({type:"test_database_connection",payload:{buildingId:r,connectionId:c}})},setConnectionStatus(r,c,u){i(r),e(h=>{const p=h.databaseState.get(r);if(p){const m=new Map(p.connectionStatus);m.set(c,u);const g={...p,connectionStatus:m},b=new Map(h.databaseState);b.set(r,g),h.databaseState=b}}),t()},listDatabases(r,c){var u;(u=s())==null||u({type:"list_databases",payload:{buildingId:r,connectionId:c}})},setDatabases(r,c,u){i(r),e(h=>{const p=h.databaseState.get(r);if(p){const m=new Map(p.databases);m.set(c,u);const g={...p,databases:m},b=new Map(h.databaseState);b.set(r,g),h.databaseState=b}}),t()},listTables(r,c,u){var h;(h=s())==null||h({type:"list_tables",payload:{buildingId:r,connectionId:c,database:u}})},setTables(r,c,u,h){i(r);const p=`${c}:${u}`;e(m=>{const g=m.databaseState.get(r);if(g){const b=new Map(g.tables);b.set(p,h);const x={...g,tables:b},w=new Map(m.databaseState);w.set(r,x),m.databaseState=w}}),t()},getTableSchema(r,c,u,h){var p;(p=s())==null||p({type:"get_table_schema",payload:{buildingId:r,connectionId:c,database:u,table:h}})},setTableSchema(r,c,u,h,p){i(r);const m=`${c}:${u}:${h}`;e(g=>{const b=g.databaseState.get(r);if(b){const x=new Map(b.tableSchemas);x.set(m,p);const w={...b,tableSchemas:x},k=new Map(g.databaseState);k.set(r,w),g.databaseState=k}}),t()},executeQuery(r,c,u,h,p=1e3){var m;i(r),e(g=>{const b=g.databaseState.get(r);if(b){const x={...b,executingQuery:!0},w=new Map(g.databaseState);w.set(r,x),g.databaseState=w}}),t(),(m=s())==null||m({type:"execute_query",payload:{buildingId:r,connectionId:c,database:u,query:h,limit:p}})},setQueryResult(r,c){i(r),e(u=>{const h=u.databaseState.get(r);if(h){const p=[c,...h.queryResults].slice(0,20),m={...h,queryResults:p,executingQuery:!1},g=new Map(u.databaseState);g.set(r,m),u.databaseState=g}}),t()},setExecutingQuery(r,c){i(r),e(u=>{const h=u.databaseState.get(r);if(h){const p={...h,executingQuery:c},m=new Map(u.databaseState);m.set(r,p),u.databaseState=m}}),t()},requestQueryHistory(r,c=100){var u;(u=s())==null||u({type:"request_query_history",payload:{buildingId:r,limit:c}})},setQueryHistory(r,c){i(r),e(u=>{const h=u.databaseState.get(r);if(h){const p={...h,queryHistory:c},m=new Map(u.databaseState);m.set(r,p),u.databaseState=m}}),t()},toggleQueryFavorite(r,c){var u;(u=s())==null||u({type:"toggle_query_favorite",payload:{buildingId:r,queryId:c}})},deleteQueryFromHistory(r,c){var u;(u=s())==null||u({type:"delete_query_history",payload:{buildingId:r,queryId:c}})},clearQueryHistory(r){var c;(c=s())==null||c({type:"clear_query_history",payload:{buildingId:r}})},setActiveConnection(r,c){i(r),e(u=>{const h=u.databaseState.get(r);if(h){const p={...h,activeConnectionId:c,activeDatabase:null},m=new Map(u.databaseState);m.set(r,p),u.databaseState=m}}),t()},setActiveDatabase(r,c){i(r),e(u=>{const h=u.databaseState.get(r);if(h){const p={...h,activeDatabase:c},m=new Map(u.databaseState);m.set(r,p),u.databaseState=m}}),t()},getDatabaseState(r){return n().databaseState.get(r)||fw()},clearDatabaseState(r){e(c=>{const u=new Map(c.databaseState);u.delete(r),c.databaseState=u}),t()}}}function $R(n,e,t){return{async fetchSnapshots(){e(s=>{s.snapshotsLoading=!0,s.snapshotsError=null}),t();try{const s=await ot(Qe("/api/snapshots"));if(!s.ok)throw new Error(`Failed to fetch snapshots: ${s.statusText}`);const i=await s.json(),o=Array.isArray(i)?i:i.snapshots||[];this.setSnapshots(o)}catch(s){const i=s instanceof Error?s.message:"Failed to fetch snapshots";this.setError(i),console.error("Snapshot fetch error:",s)}finally{e(s=>{s.snapshotsLoading=!1}),t()}},setSnapshots(s){e(i=>{const o=new Map;s.forEach(r=>{o.set(r.id,r)}),i.snapshots=o}),t()},async createSnapshot(s,i,o,r,c,u){e(h=>{h.snapshotsLoading=!0,h.snapshotsError=null}),t();try{const h={agentId:s,agentName:i,title:o,description:r,outputs:c||[],files:u||[]},p=await ot(Qe("/api/snapshots"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h)});if(!p.ok)throw new Error(`Failed to create snapshot: ${p.statusText}`);const m=await p.json();return await this.fetchSnapshots(),m}catch(h){const p=h instanceof Error?h.message:"Failed to create snapshot";throw this.setError(p),console.error("Snapshot creation error:",h),h}finally{e(h=>{h.snapshotsLoading=!1}),t()}},async loadSnapshot(s){e(i=>{i.snapshotsLoading=!0,i.snapshotsError=null}),t();try{const i=await ot(Qe(`/api/snapshots/${s}`));if(!i.ok)throw new Error(`Failed to load snapshot: ${i.statusText}`);const o=await i.json();this.setCurrentSnapshot(o)}catch(i){const o=i instanceof Error?i.message:"Failed to load snapshot";this.setError(o),console.error("Snapshot load error:",i)}finally{e(i=>{i.snapshotsLoading=!1}),t()}},setCurrentSnapshot(s){e(i=>{i.currentSnapshot=s}),t()},async deleteSnapshot(s){var i;e(o=>{o.snapshotsLoading=!0,o.snapshotsError=null}),t();try{const o=await ot(Qe(`/api/snapshots/${s}`),{method:"DELETE"});if(!o.ok)throw new Error(`Failed to delete snapshot: ${o.statusText}`);await this.fetchSnapshots(),((i=n().currentSnapshot)==null?void 0:i.id)===s&&this.setCurrentSnapshot(null)}catch(o){const r=o instanceof Error?o.message:"Failed to delete snapshot";throw this.setError(r),console.error("Snapshot deletion error:",o),o}finally{e(o=>{o.snapshotsLoading=!1}),t()}},async restoreFiles(s,i){e(o=>{o.snapshotsLoading=!0,o.snapshotsError=null}),t();try{const o=i?{filePaths:i}:{},r=await ot(Qe(`/api/snapshots/${s}/restore`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!r.ok)throw new Error(`Failed to restore files: ${r.statusText}`)}catch(o){const r=o instanceof Error?o.message:"Failed to restore files";throw this.setError(r),console.error("File restoration error:",o),o}finally{e(o=>{o.snapshotsLoading=!1}),t()}},setLoading(s){e(i=>{i.snapshotsLoading=s}),t()},setError(s){e(i=>{i.snapshotsError=s}),t()},clearError(){this.setError(null)},reset(){e(s=>{s.snapshots=new Map,s.currentSnapshot=null,s.snapshotsLoading=!1,s.snapshotsError=null}),t()}}}function HR(n,e,t){return{addSubagent(s){e(i=>{const o=new Map(i.subagents);o.set(s.id,s),i.subagents=o}),t(),console.log(`[Subagent] Added: ${s.name} (${s.id}) for agent ${s.parentAgentId}`)},completeSubagent(s,i,o){e(r=>{let c=r.subagents.get(s);if(!c){for(const[,u]of r.subagents)if(u.toolUseId===s&&u.parentAgentId===i){c=u;break}}if(c){const u=new Map(r.subagents);u.set(c.id,{...c,status:o?"completed":"failed",completedAt:Date.now()}),r.subagents=u,console.log(`[Subagent] Completed: ${c.name} (${c.id}) success=${o}`),setTimeout(()=>{e(h=>{const p=h.subagents.get(c.id);if(p&&(p.status==="completed"||p.status==="failed")){const m=new Map(h.subagents);m.delete(c.id),h.subagents=m}}),t()},3e4)}}),t()},getSubagentsForAgent(s){const i=n();return Array.from(i.subagents.values()).filter(o=>o.parentAgentId===s)},getSubagent(s){return n().subagents.get(s)},removeSubagent(s){e(i=>{const o=new Map(i.subagents);o.delete(s),i.subagents=o}),t()},getSubagentByToolUseId(s){const i=n();for(const[,o]of i.subagents)if(o.toolUseId===s)return o}}}function js(n,e){if(n===e)return!0;if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return!1;return!0}function si(n,e){if(n===e)return!0;if(n.size!==e.size)return!1;for(const[t,s]of n)if(e.get(t)!==s)return!1;return!0}function UR(n,e){if(n===e)return!0;if(n.size!==e.size)return!1;for(const t of n)if(!e.has(t))return!1;return!0}function Nt(n,e=Object.is){const[t,s]=v.useState(()=>n(O.getState())),i=v.useRef(t);return v.useEffect(()=>{i.current=t},[t]),v.useEffect(()=>{const o=()=>{const r=n(O.getState());e(i.current,r)||(i.current=r,s(r))};return o(),O.subscribe(o)},[n,e]),t}function hn(){const[,n]=v.useState({});return v.useEffect(()=>O.subscribe(()=>n({})),[]),O.getState()}function ai(){return Nt(v.useCallback(n=>n.agents,[]),si)}function Ld(){const n=ai(),e=v.useRef([]),t=Array.from(n.values());return js(e.current,t)||(e.current=t),e.current}function yg(n){return Nt(v.useCallback(e=>n?e.agents.get(n):void 0,[n]))}function e1(){return Nt(v.useCallback(n=>n.selectedAgentIds,[]),UR)}function xg(n){const e=v.useRef([]),t=v.useRef(0),s=Nt(v.useCallback(i=>n&&i.agentOutputs.get(n)||e.current,[n]),js);return s.length!==t.current&&(uc.info(`Selector: ${t.current} -> ${s.length}`,{agentId:n,lastText:s.length>0?s[s.length-1].text.slice(0,40):null},"useAgentOutputs"),t.current=s.length),s}function vg(){return Nt(v.useCallback(n=>n.lastPrompts,[]),si)}function Pd(){return Nt(v.useCallback(n=>n.areas,[]),si)}function GR(){return Nt(v.useCallback(n=>n.buildings,[]),si)}function t1(){return Nt(v.useCallback(n=>n.supervisor,[]))}function Do(){return Nt(v.useCallback(n=>n.settings,[]))}function n1(){return Nt(v.useCallback(n=>n.settings.hideCost,[]))}function qR(){return Nt(v.useCallback(n=>n.settings.customAgentNames,[]),js)}function WR(){return Nt(v.useCallback(n=>n.shortcuts,[]),js)}function s1(){return Nt(v.useCallback(n=>n.mouseControls,[]))}function VR(){return Nt(v.useCallback(n=>n.mouseControls.trackpad,[]))}function a1(){return Nt(v.useCallback(n=>n.terminalOpen,[]))}function i1(){return Nt(v.useCallback(n=>n.mobileView,[]))}function wg(){return Nt(v.useCallback(n=>n.fileViewerPath,[]))}function KR(){return Nt(v.useCallback(n=>n.fileViewerEditData,[]))}function XR(){return Nt(v.useCallback(n=>n.fileViewerSearchRoot,[]))}function YR(){return Nt(v.useCallback(n=>n.explorerFolderPath,[]))}function kg(){return Nt(v.useCallback(n=>n.contextModalAgentId,[]))}function o1(){return Nt(v.useCallback(n=>n.toolExecutions,[]),js)}function ZR(){return Nt(v.useCallback(n=>n.fileChanges,[]),js)}function r1(){return Nt(v.useCallback(n=>n.skills,[]),si)}function Bd(){const n=r1(),e=v.useRef([]),t=Array.from(n.values());return js(e.current,t)||(e.current=t),e.current}function QR(n){return Nt(v.useCallback(e=>n?e.skills.get(n):void 0,[n]))}function JR(n){const e=v.useRef([]),t=ai(),s=r1();if(!n)return e.current;const i=t.get(n);return i?Array.from(s.values()).filter(r=>r.enabled?!!(r.assignedAgentIds.includes(n)||r.assignedAgentClasses.includes(i.class)):!1):e.current}function eL(){return Nt(v.useCallback(n=>n.customAgentClasses,[]),si)}function ma(){const n=eL(),e=v.useRef([]),t=Array.from(n.values());return js(e.current,t)||(e.current=t),e.current}function l1(n){return Nt(v.useCallback(e=>n?e.customAgentClasses.get(n):void 0,[n]))}function Sg(){return Nt(v.useCallback(n=>n.reconnectCount,[]))}function tL(){return Nt(v.useCallback(n=>n.supervisor.globalUsage,[]))}function nL(){return Nt(v.useCallback(n=>n.supervisor.refreshingUsage,[]))}function sL(n){const e=v.useRef(new Map);return Nt(v.useCallback(t=>n&&t.agentTaskProgress.get(n)||e.current,[n]),si)}function aL(n){return Nt(v.useCallback(e=>!n||!e.execTasks?[]:Array.from(e.execTasks.values()).filter(t=>t.agentId===n),[n]),js)}function iL(){return Nt(v.useCallback(n=>n.secrets,[]),si)}function oL(){const n=iL(),e=v.useRef([]),t=Array.from(n.values());return js(e.current,t)||(e.current=t),e.current}const rL={connectionStatus:new Map,databases:new Map,tables:new Map,tableSchemas:new Map,queryResults:[],queryHistory:[],executingQuery:!1,activeConnectionId:null,activeDatabase:null};function jg(n){return Nt(v.useCallback(e=>(n?e.databaseState.get(n):void 0)??rL,[n]))}function lL(n){return Nt(v.useCallback(e=>{if(!n)return[];const t=e.databaseState.get(n);return(t==null?void 0:t.queryResults)??[]},[n]),js)}function cL(n){return Nt(v.useCallback(e=>{if(!n)return[];const t=e.databaseState.get(n);return(t==null?void 0:t.queryHistory)??[]},[n]),js)}function uL(n){return Nt(v.useCallback(e=>{if(!n)return!1;const t=e.databaseState.get(n);return(t==null?void 0:t.executingQuery)??!1},[n]))}function dL(){return Nt(n=>n.dockerContainersList,js)}function hL(){return Nt(n=>n.currentSnapshot)}function mL(){return Nt(n=>n.subagents,si)}function pL(n){return Nt(v.useCallback(e=>n?Array.from(e.subagents.values()).filter(t=>t.parentAgentId===n):[],[n]),js)}function fL(){return Nt(n=>n.viewMode)}function gL(){return Nt(v.useCallback(n=>n.overviewPanelOpen,[]))}class gw{constructor(){K(this,"state");K(this,"listeners",new Set);K(this,"sendMessage",null);K(this,"agentActions");K(this,"outputActions");K(this,"supervisorActions");K(this,"areaActions");K(this,"buildingActions");K(this,"permissionActions");K(this,"delegationActions");K(this,"skillActions");K(this,"execTaskActions");K(this,"secretActions");K(this,"databaseActions");K(this,"snapshotActions");K(this,"subagentActions");K(this,"statusPollInterval",null);this.state={agents:new Map,selectedAgentIds:new Set,lastSelectedAgentId:null,activities:[],isConnected:!1,areas:new Map,activeTool:null,selectedAreaId:null,buildings:new Map,selectedBuildingIds:new Set,buildingLogs:new Map,streamingBuildingLogs:new Map,streamingBuildingIds:new Set,bossStreamingLogs:new Map,agentOutputs:new Map,lastPrompts:new Map,toolExecutions:[],fileChanges:[],terminalOpen:!1,terminalResizing:!1,mobileView:this.loadMobileView(),settings:this.loadSettings(),shortcuts:this.loadShortcuts(),mouseControls:this.loadMouseControls(),fileViewerPath:null,fileViewerSearchRoot:null,fileViewerEditData:null,explorerFolderPath:null,explorerAreaId:null,contextModalAgentId:null,supervisor:{enabled:!0,autoReportOnComplete:!1,lastReport:null,narratives:new Map,lastReportTime:null,nextReportTime:null,agentHistories:new Map,loadingHistoryForAgent:null,historyFetchedForAgents:new Set,generatingReport:!1,globalUsage:null,refreshingUsage:!1},permissionRequests:new Map,delegationHistories:new Map,pendingDelegation:null,lastDelegationReceived:new Map,agentTaskProgress:new Map,skills:new Map,customAgentClasses:new Map,reconnectCount:0,execTasks:new Map,secrets:new Map,databaseState:new Map,dockerContainersList:[],dockerComposeProjectsList:[],snapshots:new Map,currentSnapshot:null,snapshotsLoading:!1,snapshotsError:null,lastSelectionViaSwipe:!1,lastSelectionViaDirectClick:!1,subagents:new Map,viewMode:(()=>{const r=rs(ht.SCENE_VIEW_MODE,"3d");return r==="2d"||r==="3d"||r==="dashboard"?r:"3d"})(),overviewPanelOpen:!1};const e=()=>this.state,t=r=>{r(this.state)},s=()=>this.notify(),i=()=>this.sendMessage,o=()=>this.listeners.size;this.agentActions=ER(e,t,s,i),this.outputActions=_R(e,t,s,o),this.supervisorActions=DR(e,t,s,i),this.areaActions=RR(e,t,s,i),this.buildingActions=LR(e,t,s,i),this.permissionActions=PR(e,t,s,i),this.delegationActions=BR(e,t,s,i),this.skillActions=OR(e,t,s,i),this.execTaskActions=IR(e,t,s),this.secretActions=zR(e,t,s,i),this.databaseActions=FR(e,t,s,i),this.snapshotActions=$R(e,t,s),this.subagentActions=HR(e,t,s)}loadSettings(){const e=Aa(ht.SETTINGS,null);return e?{...pw,...e}:{...pw}}loadShortcuts(){const e=Aa(ht.SHORTCUTS,null);return e?bp.map(s=>{const i=e.find(o=>o.id===s.id);return i?{...s,...i}:s}):[...bp]}loadMouseControls(){var t;const e=Aa(ht.MOUSE_CONTROLS,null);return e?{bindings:xp.map(i=>{var r;const o=(r=e.bindings)==null?void 0:r.find(c=>c.id===i.id);return o?{...i,...o}:i}),sensitivity:{...yp,...e.sensitivity},trackpad:{...Iu,...e.trackpad,sensitivity:{...Iu.sensitivity,...(t=e.trackpad)==null?void 0:t.sensitivity}}}:{bindings:[...xp],sensitivity:{...yp},trackpad:{...Iu}}}loadMobileView(){const e=rs(ht.MOBILE_VIEW,"");return e==="terminal"||e==="3d"?e:typeof window<"u"&&window.innerWidth<=768&&"ontouchstart"in window?"3d":"terminal"}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){this.listeners.forEach(e=>e())}getState(){return this.state}setSendMessage(e){this.sendMessage=e}setConnected(e){this.state.isConnected=e,this.notify()}triggerReconnect(){this.state.reconnectCount++,this.notify()}toggleTerminal(e){e&&!this.state.selectedAgentIds.has(e)&&(this.state.selectedAgentIds.clear(),this.state.selectedAgentIds.add(e)),this.state.terminalOpen=!this.state.terminalOpen,this.notify()}setTerminalOpen(e){if(console.log("[Store] setTerminalOpen called with:",e,"current:",this.state.terminalOpen),!e&&this.state.terminalOpen&&console.trace("[Store] Closing terminal - stack trace:"),this.state.terminalOpen=e,e&&(this.state.mobileView="terminal",this.state.selectedAgentIds.size===0&&this.state.agents.size>0&&!this.state.currentSnapshot)){const t=Array.from(this.state.agents.keys())[0];console.log("[Store] Auto-selecting first agent for terminal open:",t),this.state.selectedAgentIds=new Set([t])}this.notify(),console.log("[Store] After notify, terminalOpen:",this.state.terminalOpen)}setOverviewPanelOpen(e){this.state.overviewPanelOpen=e,this.notify()}setMobileView(e){if(console.log("[Store] setMobileView called:",e,"previous:",this.state.mobileView),this.state.mobileView=e,Js(ht.MOBILE_VIEW,e),e==="terminal"&&this.state.selectedAgentIds.size===0&&this.state.agents.size>0&&!this.state.currentSnapshot){const t=Array.from(this.state.agents.keys())[0];console.log("[Store] Auto-selecting first agent for terminal view:",t),this.state.selectedAgentIds=new Set([t]),this.state.terminalOpen=!0}this.notify()}setViewMode(e){this.state.viewMode=e,Js(ht.SCENE_VIEW_MODE,e),this.state.settings.experimental2DView=e==="2d",this.notify()}openTerminalOnMobile(e){console.log("[Store] openTerminalOnMobile called for agent:",e),H2("terminal"),this.state.selectedAgentIds.clear(),this.state.selectedAgentIds.add(e),this.state.terminalOpen=!0,this.state.mobileView="terminal",this.notify()}setTerminalResizing(e){this.state.terminalResizing=e,this.notify()}setLastSelectionViaSwipe(e){this.state.lastSelectionViaSwipe=e}consumeSwipeSelectionFlag(){const e=this.state.lastSelectionViaSwipe;return this.state.lastSelectionViaSwipe=!1,e}setLastSelectionViaDirectClick(e){this.state.lastSelectionViaDirectClick=e}consumeDirectClickSelectionFlag(){const e=this.state.lastSelectionViaDirectClick;return this.state.lastSelectionViaDirectClick=!1,e}setFileViewerPath(e,t,s){this.state.fileViewerPath=e,this.state.fileViewerEditData=t||null,this.state.fileViewerSearchRoot=s||null,this.notify()}clearFileViewerPath(){this.state.fileViewerPath=null,this.state.fileViewerEditData=null,this.state.fileViewerSearchRoot=null,this.notify()}getLastExplorerState(){try{const e=localStorage.getItem("file-explorer-last-opened");return e?JSON.parse(e):null}catch{return null}}setExplorerFolderPath(e){this.state.explorerFolderPath=e,this.notify()}openFileExplorer(e){this.state.explorerFolderPath=e,this.state.explorerAreaId=null,this.notify()}closeFileExplorer(){this.state.explorerFolderPath=null,this.state.explorerAreaId=null,this.notify()}openFileExplorerForArea(e){this.state.explorerFolderPath=null,this.state.explorerAreaId=e,this.notify()}openFileExplorerForAreaFolder(e,t){this.state.explorerAreaId=e,this.state.explorerFolderPath=t,this.notify()}setContextModalAgentId(e){this.state.contextModalAgentId=e,this.notify()}closeContextModal(){this.state.contextModalAgentId=null,this.notify()}updateSettings(e){this.state.settings={...this.state.settings,...e},ei(ht.SETTINGS,this.state.settings),this.notify()}getSettings(){return this.state.settings}getShortcuts(){return this.state.shortcuts}getShortcut(e){return this.state.shortcuts.find(t=>t.id===e)}updateShortcut(e,t){const s=this.state.shortcuts.findIndex(i=>i.id===e);s!==-1&&(this.state.shortcuts=[...this.state.shortcuts.slice(0,s),{...this.state.shortcuts[s],...t},...this.state.shortcuts.slice(s+1)],this.saveShortcuts(),this.notify())}resetShortcuts(){this.state.shortcuts=[...bp],this.saveShortcuts(),this.notify()}saveShortcuts(){ei(ht.SHORTCUTS,this.state.shortcuts)}getMouseControls(){return this.state.mouseControls}getMouseBinding(e){return this.state.mouseControls.bindings.find(t=>t.id===e)}updateMouseBinding(e,t){const s=this.state.mouseControls.bindings.findIndex(i=>i.id===e);s!==-1&&(this.state.mouseControls.bindings=[...this.state.mouseControls.bindings.slice(0,s),{...this.state.mouseControls.bindings[s],...t},...this.state.mouseControls.bindings.slice(s+1)],this.saveMouseControls(),this.notify())}updateCameraSensitivity(e){this.state.mouseControls.sensitivity={...this.state.mouseControls.sensitivity,...e},this.saveMouseControls(),this.notify()}resetMouseControls(){this.state.mouseControls={bindings:[...xp],sensitivity:{...yp},trackpad:{...Iu}},this.saveMouseControls(),this.notify()}getTrackpadConfig(){return this.state.mouseControls.trackpad}updateTrackpadConfig(e){this.state.mouseControls.trackpad={...this.state.mouseControls.trackpad,...e,sensitivity:{...this.state.mouseControls.trackpad.sensitivity,...e.sensitivity||{}}},this.saveMouseControls(),this.notify()}saveMouseControls(){ei(ht.MOUSE_CONTROLS,this.state.mouseControls)}startStatusPolling(){}stopStatusPolling(){this.statusPollInterval&&(clearInterval(this.statusPollInterval),this.statusPollInterval=null)}setAgents(...e){return this.agentActions.setAgents(...e)}addAgent(...e){return this.agentActions.addAgent(...e)}updateAgent(...e){return this.agentActions.updateAgent(...e)}updateAgentContextStats(...e){return this.agentActions.updateAgentContextStats(...e)}removeAgent(...e){return this.agentActions.removeAgent(...e)}selectAgent(...e){return this.agentActions.selectAgent(...e)}addToSelection(...e){return this.agentActions.addToSelection(...e)}selectMultiple(...e){return this.agentActions.selectMultiple(...e)}deselectAll(...e){return this.agentActions.deselectAll(...e)}spawnAgent(...e){return this.agentActions.spawnAgent(...e)}createDirectoryAndSpawn(...e){return this.agentActions.createDirectoryAndSpawn(...e)}sendCommand(...e){return this.agentActions.sendCommand(...e)}refreshAgentContext(...e){return this.agentActions.refreshAgentContext(...e)}moveAgent(...e){return this.agentActions.moveAgent(...e)}killAgent(...e){return this.agentActions.killAgent(...e)}stopAgent(...e){return this.agentActions.stopAgent(...e)}clearContext(...e){return this.agentActions.clearContext(...e)}collapseContext(...e){return this.agentActions.collapseContext(...e)}removeAgentFromServer(...e){return this.agentActions.removeAgentFromServer(...e)}renameAgent(...e){return this.agentActions.renameAgent(...e)}updateAgentProperties(...e){return this.agentActions.updateAgentProperties(...e)}getTotalTokens(){return this.agentActions.getTotalTokens()}getSelectedAgents(){return this.agentActions.getSelectedAgents()}addActivity(...e){return this.agentActions.addActivity(...e)}addToolExecution(...e){return this.agentActions.addToolExecution(...e)}addFileChange(...e){return this.agentActions.addFileChange(...e)}loadToolHistory(){return this.agentActions.loadToolHistory()}addOutput(...e){return this.outputActions.addOutput(...e)}clearOutputs(...e){return this.outputActions.clearOutputs(...e)}getOutputs(...e){return this.outputActions.getOutputs(...e)}addUserPromptToOutput(...e){return this.outputActions.addUserPromptToOutput(...e)}getLastPrompt(...e){return this.outputActions.getLastPrompt(...e)}setLastPrompt(...e){return this.outputActions.setLastPrompt(...e)}preserveOutputs(){return this.outputActions.preserveOutputs()}mergeOutputsWithHistory(...e){return this.outputActions.mergeOutputsWithHistory(...e)}setSupervisorReport(...e){return this.supervisorActions.setSupervisorReport(...e)}addNarrative(...e){return this.supervisorActions.addNarrative(...e)}getNarratives(...e){return this.supervisorActions.getNarratives(...e)}setSupervisorStatus(...e){return this.supervisorActions.setSupervisorStatus(...e)}setSupervisorConfig(...e){return this.supervisorActions.setSupervisorConfig(...e)}requestSupervisorReport(){return this.supervisorActions.requestSupervisorReport()}requestAgentSupervisorHistory(...e){return this.supervisorActions.requestAgentSupervisorHistory(...e)}setAgentSupervisorHistory(...e){return this.supervisorActions.setAgentSupervisorHistory(...e)}getAgentSupervisorHistory(...e){return this.supervisorActions.getAgentSupervisorHistory(...e)}addAgentAnalysis(...e){return this.supervisorActions.addAgentAnalysis(...e)}isLoadingHistoryForAgent(...e){return this.supervisorActions.isLoadingHistoryForAgent(...e)}hasHistoryBeenFetched(...e){return this.supervisorActions.hasHistoryBeenFetched(...e)}setGlobalUsage(...e){return this.supervisorActions.setGlobalUsage(...e)}requestGlobalUsage(){return this.supervisorActions.requestGlobalUsage()}getGlobalUsage(){return this.supervisorActions.getGlobalUsage()}setActiveTool(...e){return this.areaActions.setActiveTool(...e)}selectArea(...e){return this.areaActions.selectArea(...e)}addArea(...e){return this.areaActions.addArea(...e)}updateArea(...e){return this.areaActions.updateArea(...e)}updateAreaLocal(...e){return this.areaActions.updateAreaLocal(...e)}deleteArea(...e){return this.areaActions.deleteArea(...e)}assignAgentToArea(...e){return this.areaActions.assignAgentToArea(...e)}unassignAgentFromArea(...e){return this.areaActions.unassignAgentFromArea(...e)}addDirectoryToArea(...e){return this.areaActions.addDirectoryToArea(...e)}removeDirectoryFromArea(...e){return this.areaActions.removeDirectoryFromArea(...e)}getAreaDirectories(...e){return this.areaActions.getAreaDirectories(...e)}isPositionInArea(...e){return this.areaActions.isPositionInArea(...e)}getAreaForAgent(...e){return this.areaActions.getAreaForAgent(...e)}setAreasFromServer(...e){return this.areaActions.setAreasFromServer(...e)}getAreasInZOrder(...e){return this.areaActions.getAreasInZOrder(...e)}getNextZIndex(...e){return this.areaActions.getNextZIndex(...e)}bringAreaToFront(...e){return this.areaActions.bringAreaToFront(...e)}sendAreaToBack(...e){return this.areaActions.sendAreaToBack(...e)}setAreaZIndex(...e){return this.areaActions.setAreaZIndex(...e)}archiveArea(...e){return this.areaActions.archiveArea(...e)}restoreArchivedArea(...e){return this.areaActions.restoreArchivedArea(...e)}getArchivedAreas(...e){return this.areaActions.getArchivedAreas(...e)}getVisibleAreas(...e){return this.areaActions.getVisibleAreas(...e)}isAgentInArchivedArea(...e){return this.areaActions.isAgentInArchivedArea(...e)}selectBuilding(...e){return this.buildingActions.selectBuilding(...e)}selectMultipleBuildings(...e){return this.buildingActions.selectMultipleBuildings(...e)}toggleBuildingSelection(...e){return this.buildingActions.toggleBuildingSelection(...e)}isBuildingSelected(...e){return this.buildingActions.isBuildingSelected(...e)}getSelectedBuildingIds(){return this.buildingActions.getSelectedBuildingIds()}deleteSelectedBuildings(){return this.buildingActions.deleteSelectedBuildings()}addBuilding(...e){return this.buildingActions.addBuilding(...e)}updateBuilding(...e){return this.buildingActions.updateBuilding(...e)}updateBuildingLocal(...e){return this.buildingActions.updateBuildingLocal(...e)}deleteBuilding(...e){return this.buildingActions.deleteBuilding(...e)}moveBuilding(...e){return this.buildingActions.moveBuilding(...e)}updateBuildingPosition(...e){return this.buildingActions.updateBuildingPosition(...e)}createBuilding(...e){return this.buildingActions.createBuilding(...e)}sendBuildingCommand(...e){return this.buildingActions.sendBuildingCommand(...e)}addBuildingLogs(...e){return this.buildingActions.addBuildingLogs(...e)}getBuildingLogs(...e){return this.buildingActions.getBuildingLogs(...e)}clearBuildingLogs(...e){return this.buildingActions.clearBuildingLogs(...e)}setBuildingsFromServer(...e){return this.buildingActions.setBuildingsFromServer(...e)}updateBuildingFromServer(...e){return this.buildingActions.updateBuildingFromServer(...e)}removeBuildingFromServer(...e){return this.buildingActions.removeBuildingFromServer(...e)}startLogStreaming(...e){return this.buildingActions.startLogStreaming(...e)}stopLogStreaming(...e){return this.buildingActions.stopLogStreaming(...e)}appendStreamingLogChunk(...e){return this.buildingActions.appendStreamingLogChunk(...e)}setStreamingStatus(...e){return this.buildingActions.setStreamingStatus(...e)}getStreamingLogs(...e){return this.buildingActions.getStreamingLogs(...e)}clearStreamingLogs(...e){return this.buildingActions.clearStreamingLogs(...e)}isLogStreaming(...e){return this.buildingActions.isLogStreaming(...e)}sendBossBuildingCommand(...e){return this.buildingActions.sendBossBuildingCommand(...e)}assignBuildingsToBoSS(...e){return this.buildingActions.assignBuildingsToBoSS(...e)}startBossLogStreaming(...e){return this.buildingActions.startBossLogStreaming(...e)}stopBossLogStreaming(...e){return this.buildingActions.stopBossLogStreaming(...e)}appendBossStreamingLogChunk(...e){return this.buildingActions.appendBossStreamingLogChunk(...e)}getBossStreamingLogs(...e){return this.buildingActions.getBossStreamingLogs(...e)}clearBossStreamingLogs(...e){return this.buildingActions.clearBossStreamingLogs(...e)}requestDockerContainersList(){return this.buildingActions.requestDockerContainersList()}setDockerContainersList(...e){return this.buildingActions.setDockerContainersList(...e)}getDockerContainersList(){return this.buildingActions.getDockerContainersList()}getDockerComposeProjectsList(){return this.buildingActions.getDockerComposeProjectsList()}addPermissionRequest(...e){return this.permissionActions.addPermissionRequest(...e)}resolvePermissionRequest(...e){return this.permissionActions.resolvePermissionRequest(...e)}respondToPermissionRequest(...e){return this.permissionActions.respondToPermissionRequest(...e)}getPendingPermissionsForAgent(...e){return this.permissionActions.getPendingPermissionsForAgent(...e)}clearAllPermissions(...e){return this.permissionActions.clearAllPermissions(...e)}spawnBossAgent(...e){return this.delegationActions.spawnBossAgent(...e)}assignSubordinates(...e){return this.delegationActions.assignSubordinates(...e)}removeSubordinate(...e){return this.delegationActions.removeSubordinate(...e)}sendBossCommand(...e){return this.delegationActions.sendBossCommand(...e)}requestDelegationHistory(...e){return this.delegationActions.requestDelegationHistory(...e)}handleDelegationDecision(...e){return this.delegationActions.handleDelegationDecision(...e)}setDelegationHistory(...e){return this.delegationActions.setDelegationHistory(...e)}getDelegationHistory(...e){return this.delegationActions.getDelegationHistory(...e)}getLastDelegationReceived(...e){return this.delegationActions.getLastDelegationReceived(...e)}clearLastDelegationReceived(...e){return this.delegationActions.clearLastDelegationReceived(...e)}updateBossSubordinates(...e){return this.delegationActions.updateBossSubordinates(...e)}getSubordinates(...e){return this.delegationActions.getSubordinates(...e)}isBossAgent(...e){return this.delegationActions.isBossAgent(...e)}getBossForAgent(...e){return this.delegationActions.getBossForAgent(...e)}getAvailableSubordinates(){return this.delegationActions.getAvailableSubordinates()}handleAgentTaskStarted(...e){return this.delegationActions.handleAgentTaskStarted(...e)}handleAgentTaskOutput(...e){return this.delegationActions.handleAgentTaskOutput(...e)}handleAgentTaskCompleted(...e){return this.delegationActions.handleAgentTaskCompleted(...e)}getAgentTaskProgress(...e){return this.delegationActions.getAgentTaskProgress(...e)}clearAgentTaskProgress(...e){return this.delegationActions.clearAgentTaskProgress(...e)}clearAllSubordinatesContext(...e){return this.delegationActions.clearAllSubordinatesContext(...e)}setSkillsFromServer(...e){return this.skillActions.setSkillsFromServer(...e)}addSkillFromServer(...e){return this.skillActions.addSkillFromServer(...e)}updateSkillFromServer(...e){return this.skillActions.updateSkillFromServer(...e)}removeSkillFromServer(...e){return this.skillActions.removeSkillFromServer(...e)}getSkill(...e){return this.skillActions.getSkill(...e)}getAllSkills(){return this.skillActions.getAllSkills()}getSkillsForAgent(...e){return this.skillActions.getSkillsForAgent(...e)}createSkill(...e){return this.skillActions.createSkill(...e)}updateSkill(...e){return this.skillActions.updateSkill(...e)}deleteSkill(...e){return this.skillActions.deleteSkill(...e)}assignSkillToAgent(...e){return this.skillActions.assignSkillToAgent(...e)}unassignSkillFromAgent(...e){return this.skillActions.unassignSkillFromAgent(...e)}requestAgentSkills(...e){return this.skillActions.requestAgentSkills(...e)}setCustomAgentClassesFromServer(...e){return this.skillActions.setCustomAgentClassesFromServer(...e)}addCustomAgentClassFromServer(...e){return this.skillActions.addCustomAgentClassFromServer(...e)}updateCustomAgentClassFromServer(...e){return this.skillActions.updateCustomAgentClassFromServer(...e)}removeCustomAgentClassFromServer(...e){return this.skillActions.removeCustomAgentClassFromServer(...e)}getCustomAgentClass(...e){return this.skillActions.getCustomAgentClass(...e)}getAllCustomAgentClasses(){return this.skillActions.getAllCustomAgentClasses()}createCustomAgentClass(...e){return this.skillActions.createCustomAgentClass(...e)}updateCustomAgentClass(...e){return this.skillActions.updateCustomAgentClass(...e)}deleteCustomAgentClass(...e){return this.skillActions.deleteCustomAgentClass(...e)}handleExecTaskStarted(...e){return this.execTaskActions.handleExecTaskStarted(...e)}handleExecTaskOutput(...e){return this.execTaskActions.handleExecTaskOutput(...e)}handleExecTaskCompleted(...e){return this.execTaskActions.handleExecTaskCompleted(...e)}stopExecTask(...e){return this.execTaskActions.stopExecTask(...e)}getExecTasks(...e){return this.execTaskActions.getExecTasks(...e)}getAllExecTasks(){return this.execTaskActions.getAllExecTasks()}getExecTask(...e){return this.execTaskActions.getExecTask(...e)}clearCompletedExecTasks(...e){return this.execTaskActions.clearCompletedExecTasks(...e)}clearAllExecTasks(...e){return this.execTaskActions.clearAllExecTasks(...e)}removeExecTask(...e){return this.execTaskActions.removeExecTask(...e)}setSecretsFromServer(...e){return this.secretActions.setSecretsFromServer(...e)}addSecretFromServer(...e){return this.secretActions.addSecretFromServer(...e)}updateSecretFromServer(...e){return this.secretActions.updateSecretFromServer(...e)}removeSecretFromServer(...e){return this.secretActions.removeSecretFromServer(...e)}getSecret(...e){return this.secretActions.getSecret(...e)}getSecretByKey(...e){return this.secretActions.getSecretByKey(...e)}getAllSecrets(){return this.secretActions.getAllSecrets()}createSecret(...e){return this.secretActions.createSecret(...e)}updateSecret(...e){return this.secretActions.updateSecret(...e)}deleteSecret(...e){return this.secretActions.deleteSecret(...e)}testDatabaseConnection(...e){return this.databaseActions.testDatabaseConnection(...e)}setConnectionStatus(...e){return this.databaseActions.setConnectionStatus(...e)}listDatabases(...e){return this.databaseActions.listDatabases(...e)}setDatabases(...e){return this.databaseActions.setDatabases(...e)}listTables(...e){return this.databaseActions.listTables(...e)}setTables(...e){return this.databaseActions.setTables(...e)}getTableSchema(...e){return this.databaseActions.getTableSchema(...e)}setTableSchema(...e){return this.databaseActions.setTableSchema(...e)}executeQuery(...e){return this.databaseActions.executeQuery(...e)}setQueryResult(...e){return this.databaseActions.setQueryResult(...e)}setExecutingQuery(...e){return this.databaseActions.setExecutingQuery(...e)}requestQueryHistory(...e){return this.databaseActions.requestQueryHistory(...e)}setQueryHistory(...e){return this.databaseActions.setQueryHistory(...e)}toggleQueryFavorite(...e){return this.databaseActions.toggleQueryFavorite(...e)}deleteQueryFromHistory(...e){return this.databaseActions.deleteQueryFromHistory(...e)}clearQueryHistory(...e){return this.databaseActions.clearQueryHistory(...e)}setActiveConnection(...e){return this.databaseActions.setActiveConnection(...e)}setActiveDatabase(...e){return this.databaseActions.setActiveDatabase(...e)}getDatabaseState(...e){return this.databaseActions.getDatabaseState(...e)}clearDatabaseState(...e){return this.databaseActions.clearDatabaseState(...e)}fetchSnapshots(...e){return this.snapshotActions.fetchSnapshots(...e)}setSnapshots(...e){return this.snapshotActions.setSnapshots(...e)}createSnapshot(...e){return this.snapshotActions.createSnapshot(...e)}loadSnapshot(...e){return this.snapshotActions.loadSnapshot(...e)}setCurrentSnapshot(...e){return this.snapshotActions.setCurrentSnapshot(...e)}deleteSnapshot(...e){return this.snapshotActions.deleteSnapshot(...e)}restoreFiles(...e){return this.snapshotActions.restoreFiles(...e)}setLoading(...e){return this.snapshotActions.setLoading(...e)}setError(...e){return this.snapshotActions.setError(...e)}clearError(...e){return this.snapshotActions.clearError(...e)}reset(...e){return this.snapshotActions.reset(...e)}addSubagent(...e){return this.subagentActions.addSubagent(...e)}completeSubagent(...e){return this.subagentActions.completeSubagent(...e)}getSubagentsForAgent(...e){return this.subagentActions.getSubagentsForAgent(...e)}getSubagent(...e){return this.subagentActions.getSubagent(...e)}removeSubagent(...e){return this.subagentActions.removeSubagent(...e)}getSubagentByToolUseId(...e){return this.subagentActions.getSubagentByToolUseId(...e)}}const bw=1;function bL(){return typeof window<"u"?(window.__tideStore&&window.__tideStoreVersion===bw||(window.__tideStore=new gw,window.__tideStoreVersion=bw),window.__tideStore):new gw}const O=bL(),c1=v.createContext(null),yL={error:"❌",success:"✅",warning:"⚠️",info:"ℹ️"};let xL=0;function vL({children:n}){const[e,t]=v.useState(null),s=v.useRef([]),i=v.useRef(null),o=v.useCallback(()=>{if(s.current.length>0&&!e){const u=s.current.shift();t(u)}},[e]);v.useEffect(()=>{e||o()},[e,o]),v.useEffect(()=>{if(e&&e.duration>0)return i.current=window.setTimeout(()=>{t(null)},e.duration),()=>{i.current&&clearTimeout(i.current)}},[e]);const r=v.useCallback((u,h,p,m=5e3)=>{const b={id:++xL,type:u,title:h,message:p,duration:m};if(s.current.push(b),!e){const x=s.current.shift();t(x)}},[e]),c=v.useCallback(()=>{i.current&&clearTimeout(i.current),t(null)},[]);return a.jsxs(c1.Provider,{value:{showToast:r},children:[n,a.jsx("div",{id:"toast-container",children:e&&a.jsxs("div",{className:`toast ${e.type}`,children:[a.jsx("span",{className:"toast-icon",children:yL[e.type]}),a.jsxs("div",{className:"toast-content",children:[a.jsx("div",{className:"toast-title",children:e.title}),a.jsx("div",{className:"toast-message",children:e.message})]}),a.jsx("button",{className:"toast-close",onClick:c,children:"×"})]},e.id)})]})}function Cg(){const n=v.useContext(c1);if(!n)throw new Error("useToast must be used within ToastProvider");return n}const ti={scout:{icon:"🔍",color:"#4a9eff",description:"Codebase exploration, file discovery"},builder:{icon:"🔨",color:"#ff9e4a",description:"Feature implementation, writing code"},debugger:{icon:"🐛",color:"#ff4a4a",description:"Bug hunting, fixing issues"},architect:{icon:"📐",color:"#9e4aff",description:"Planning, design decisions"},warrior:{icon:"⚔️",color:"#ff4a9e",description:"Aggressive refactoring, migrations"},support:{icon:"💚",color:"#4aff9e",description:"Documentation, tests, cleanup"},boss:{icon:"👑",color:"#ffd700",description:"Team leader, delegates tasks to subordinates"}},Na=ti,ua={bypass:{label:"Permissionless",description:"Skip all permission prompts (less safe, faster)"},interactive:{label:"Interactive",description:"Ask for approval before sensitive operations"}},Zs={"gpt-5.3-codex":{label:"GPT-5.3 Codex",description:"Latest frontier agentic coding model",icon:"⚙️"},"gpt-5.2-codex":{label:"GPT-5.2 Codex",description:"Frontier agentic coding model",icon:"🧠"},"gpt-5.1-codex-max":{label:"GPT-5.1 Codex Max",description:"Codex-optimized flagship for deep and fast reasoning",icon:"🚀"},"gpt-5.1-codex-mini":{label:"GPT-5.1 Codex Mini",description:"Optimized for codex, cheaper and faster",icon:"⚡"},"gpt-5.2":{label:"GPT-5.2",description:"General frontier model with strong reasoning and coding",icon:"🧩"}},Qs={sonnet:{label:"Sonnet",description:"Balanced performance and cost (recommended)",icon:"⚡"},opus:{label:"Opus",description:"Most capable, higher cost",icon:"🧠"},haiku:{label:"Haiku",description:"Fast and economical",icon:"🚀"}},Ef="<<<BOSS_CONTEXT_START>>>",yw="<<<BOSS_CONTEXT_END>>>",Dr={server:{icon:"🖥️",color:"#4aff9e",description:"Service with start/stop commands and logs"},link:{icon:"🔗",color:"#4a9eff",description:"Quick links to URLs"},database:{icon:"🗄️",color:"#ff9e4a",description:"Database connection and queries"},docker:{icon:"🐳",color:"#4ac1ff",description:"Docker container management"},monitor:{icon:"📊",color:"#ff4a9e",description:"System metrics and monitoring"},folder:{icon:"📁",color:"#ffd700",description:"Folder shortcut - opens file explorer on click"},boss:{icon:"👑",color:"#ffd700",description:"Boss building - manages multiple buildings with unified controls"}},Yu={"server-rack":{label:"Server Rack",description:"Classic server rack with blinking LEDs"},tower:{label:"Control Tower",description:"Tall tower with rotating antenna"},dome:{label:"Data Dome",description:"Futuristic dome with energy ring"},pyramid:{label:"Power Pyramid",description:"Egyptian-style pyramid with glowing core"},desktop:{label:"Desktop PC",description:"Retro computer with monitor and keyboard"},"filing-cabinet":{label:"Filing Cabinet",description:"Office cabinet with sliding drawers"},satellite:{label:"Satellite Dish",description:"Communication dish with rotating receiver"},crystal:{label:"Data Crystal",description:"Floating crystal with energy particles"},factory:{label:"Mini Factory",description:"Industrial building with smoking chimney"},"command-center":{label:"Command Center",description:"Grand central hub for boss buildings with holographic rings"}},xw={"":{label:"Auto-detect",description:"Let PM2 detect the interpreter"},node:{label:"Node.js",description:"JavaScript/TypeScript runtime"},bun:{label:"Bun",description:"Bun JavaScript runtime"},python3:{label:"Python 3",description:"Python 3 interpreter"},python:{label:"Python 2",description:"Python 2 interpreter (legacy)"},java:{label:"Java",description:"Java runtime (use with -jar args)"},php:{label:"PHP",description:"PHP interpreter"},bash:{label:"Bash",description:"Bash shell script"},none:{label:"None (Binary)",description:"Direct execution (compiled binaries)"}},vw={no:{label:"No",description:"Do not automatically restart"},always:{label:"Always",description:"Always restart when stopped"},"unless-stopped":{label:"Unless Stopped",description:"Restart unless manually stopped"},"on-failure":{label:"On Failure",description:"Restart only on failure"}},ww={always:{label:"Always",description:"Always pull the image"},missing:{label:"If Missing",description:"Pull only if image not present"},never:{label:"Never",description:"Never pull, use local only"}},zl={mysql:{label:"MySQL",icon:"🐬",defaultPort:3306},postgresql:{label:"PostgreSQL",icon:"🐘",defaultPort:5432},oracle:{label:"Oracle",icon:"🔶",defaultPort:1521}},u1=v.createContext(null);function wL(n){const e=ti[n];if(e)return e.icon;const s=O.getState().customAgentClasses.get(n);return s?s.icon:"🤖"}function kL(n){const e=ti[n];if(e)return e.color;const s=O.getState().customAgentClasses.get(n);return s?s.color:"#888888"}const SL=3;function jL({children:n}){const{t:e}=Pe(["notifications"]),[t,s]=v.useState([]),i=v.useRef(new Map);v.useEffect(()=>()=>{i.current.forEach(u=>clearTimeout(u))},[]);const o=v.useCallback(u=>{s(p=>p.filter(m=>m.id!==u));const h=i.current.get(u);h&&(clearTimeout(h),i.current.delete(u))},[]),r=v.useCallback(u=>{s(p=>{const m=[...p,u];if(m.length>SL){const g=m.shift();if(g){const b=i.current.get(g.id);b&&(clearTimeout(b),i.current.delete(g.id))}}return m});const h=window.setTimeout(()=>{o(u.id)},8e3);i.current.set(u.id,h),fR({title:`${u.agentName}: ${u.title}`,body:u.message,data:{type:"agent_notification",agentId:u.agentId,notificationId:u.id}})},[o]),c=v.useCallback(u=>{Zj(u.agentId),o(u.id)},[o]);return a.jsxs(u1.Provider,{value:{showAgentNotification:r},children:[n,a.jsx("div",{id:"agent-notification-container",children:t.map(u=>{const h=wL(u.agentClass),p=kL(u.agentClass);return a.jsxs("div",{className:"agent-notification",onClick:()=>c(u),style:{"--agent-color":p},children:[a.jsx("div",{className:"agent-notification-avatar",children:a.jsx("span",{className:"agent-notification-icon",children:h})}),a.jsxs("div",{className:"agent-notification-content",children:[a.jsxs("div",{className:"agent-notification-header",children:[a.jsx("span",{className:"agent-notification-name",children:u.agentName}),a.jsx("span",{className:"agent-notification-hint",children:e("notifications:agent.clickToFocus")})]}),a.jsx("div",{className:"agent-notification-title",children:u.title}),a.jsx("div",{className:"agent-notification-message",children:u.message})]}),a.jsx("button",{className:"agent-notification-close",onClick:m=>{m.stopPropagation(),o(u.id)},children:"×"})]},u.id)})})]})}function CL(){const n=v.useContext(u1);if(!n)throw new Error("useAgentNotification must be used within AgentNotificationProvider");return n}function AL(n){return typeof n=="string"?n:"#"+n.toString(16).padStart(6,"0")}function Hi(n,e){const t=ea[n];if(t)return{icon:t.icon,color:AL(t.color),description:t.description};const s=e.find(i=>i.id===n);return s?{icon:s.icon,color:s.color,description:s.description}:{icon:"🤖",color:"#888888"}}function NL(n){const e=Math.floor((Date.now()-n)/1e3);if(e<60)return`${e}s`;const t=Math.floor(e/60);if(t<60)return`${t}m`;const s=Math.floor(t/60);return s<24?`${s}h`:`${Math.floor(s/24)}d`}function md(n){const e=Math.floor((Date.now()-n)/1e3);if(e<60)return"just now";const t=Math.floor(e/60);if(t<60)return`${t}m ago`;const s=Math.floor(t/60);return s<24?`${s}h ago`:`${Math.floor(s/24)}d ago`}function d1(n){const e=n.contextStats;if(e){const o=e.usedPercent,r=100-o,c=e.contextWindow-e.totalTokens;return{remainingPercent:r,usedPercent:o,hasData:!0,totalTokens:e.totalTokens,contextWindow:e.contextWindow,freeTokens:c}}const t=n.contextUsed||0,s=n.contextLimit||2e5,i=Math.max(0,s-t);return{remainingPercent:i/s*100,usedPercent:t/s*100,hasData:!1,totalTokens:t,contextWindow:s,freeTokens:i}}function TL(n){return n<20?"#c85858":n<50?"#c89858":"#6a9a78"}function ML(n,e){const t=new Map;for(const s of n){const i=e(s.id),o=(i==null?void 0:i.id)||null;t.has(o)||t.set(o,[]),t.get(o).push(s)}return t}function EL(n,e){return[...n].sort((t,s)=>{if(t===null)return 1;if(s===null)return-1;const i=t?e(t):void 0,o=s?e(s):void 0;return((i==null?void 0:i.name)||"").localeCompare((o==null?void 0:o.name)||"")})}function kw({onOpenAreaExplorer:n}){const{t:e}=Pe(["common"]),t=hn(),s=Array.from(t.agents.values()),i=Array.from(t.areas.values()),o=v.useMemo(()=>s.map(h=>h.id).sort().join(","),[s]),r=v.useRef(new Set);v.useEffect(()=>{for(const h of s){if(r.current.has(h.id))continue;O.getAgentSupervisorHistory(h.id).length===0&&!O.isLoadingHistoryForAgent(h.id)&&(r.current.add(h.id),O.requestAgentSupervisorHistory(h.id))}},[o]);const c=ML(s,h=>O.getAreaForAgent(h));for(const h of i)c.has(h.id)||c.set(h.id,[]);const u=EL(Array.from(c.keys()),h=>t.areas.get(h));return s.length===0&&i.length===0?a.jsxs("div",{className:"empty-state",children:[a.jsx("div",{className:"empty-state-icon",children:"⚔️"}),a.jsx("div",{className:"empty-state-title",children:e("agentsList.noAgentsDeployed")}),a.jsx("div",{className:"empty-state-desc",children:e("agentsList.clickNewAgent")})]}):a.jsxs("div",{className:"agents-list",children:[a.jsx("div",{className:"agents-list-header",children:e("agentsList.areasAndAgents")}),u.map(h=>{const p=c.get(h),m=h?t.areas.get(h):null;return a.jsxs("div",{className:"agents-group",children:[a.jsxs("div",{className:"agents-group-header",style:m?{borderLeftColor:m.color,background:`${m.color}15`}:void 0,children:[m?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:"agents-group-dot",style:{background:m.color}}),a.jsx("span",{className:"agents-group-name",children:m.name}),m.directories.length>0&&a.jsx("button",{className:"area-browse-btn",onClick:()=>n==null?void 0:n(m.id),title:e("agentsList.browseFiles"),children:"📂"})]}):a.jsx("span",{className:"agents-group-name unassigned",children:e("agentsList.unassigned")}),a.jsx("span",{className:"agents-group-count",children:p.length})]}),p.length>0&&a.jsx("div",{className:"agents-group-items",style:m?{background:`${m.color}08`}:void 0,children:p.map(g=>a.jsx(_L,{agent:g,area:m},g.id))})]},h||"unassigned")}),s.length>0&&a.jsx(DL,{agents:s})]})}const _L=v.memo(function({agent:e,area:t}){const s=hn(),i=ma(),o=Hi(e.class,i),r=s.selectedAgentIds.has(e.id),[,c]=v.useState(0);v.useEffect(()=>{if(e.status==="idle"){const m=setInterval(()=>{c(g=>g+1)},15e3);return()=>clearInterval(m)}},[e.status]);const u=()=>{O.selectAgent(e.id)},h=e.status==="idle"&&e.lastActivity>0,p=e.lastActivity>0?Md(e.lastActivity):void 0;return a.jsxs("div",{className:`agent-item ${r?"selected":""}`,onClick:u,children:[a.jsx("div",{className:"agent-item-icon",style:{background:`${o.color}20`},children:o.icon}),a.jsxs("div",{className:"agent-item-info",children:[a.jsx("div",{className:"agent-item-name",children:e.name}),a.jsxs("div",{className:"agent-item-status",children:[e.status,e.currentTool?` • ${e.currentTool}`:"",h&&a.jsxs("span",{className:"agent-item-idle",style:{color:p},title:Ed(e.lastActivity),children:[" ","⏱ ",NL(e.lastActivity)]})]})]}),a.jsx("div",{className:`agent-status-dot ${e.status}`})]})}),DL=v.memo(function({agents:e}){const{t}=Pe(["common"]),s=hn(),i=ma(),o=s.settings.hideCost,[r,c]=v.useState(()=>pf(ht.GLOBAL_SUPERVISOR_COLLAPSED)),u=()=>{const m=!r;c(m),ff(ht.GLOBAL_SUPERVISOR_COLLAPSED,m)},h=v.useMemo(()=>e.map(m=>{const g=O.getAgentSupervisorHistory(m.id),b=g.length>0?g[0]:null;return{agent:m,entry:b,timestamp:(b==null?void 0:b.timestamp)||m.lastActivity||0}}).filter(m=>m.entry!==null).sort((m,g)=>g.timestamp-m.timestamp),[e,s.supervisor.agentHistories]),p=h.length>0?h[0].timestamp:Date.now();return h.length===0?null:a.jsxs("div",{className:"global-supervisor-status",children:[a.jsxs("div",{className:"global-supervisor-header",onClick:u,children:[a.jsx("span",{className:"global-supervisor-toggle",children:r?"▶":"▼"}),a.jsx("span",{className:"global-supervisor-title",children:t("agentsList.supervisorStatus")}),a.jsx("span",{className:"global-supervisor-time",children:md(p)})]}),!r&&a.jsx("div",{className:"global-supervisor-list",children:h.map(({agent:m,entry:g})=>{const b=Hi(m.class,i),x=g.analysis;return a.jsxs("div",{className:"global-supervisor-item",onClick:()=>O.selectAgent(m.id),children:[a.jsxs("div",{className:"global-supervisor-item-header",children:[a.jsx("span",{className:"global-supervisor-progress-dot",style:{background:wj[x.progress]||"#888"}}),a.jsx("span",{className:"global-supervisor-agent-icon",children:b.icon}),a.jsx("span",{className:"global-supervisor-agent-name",children:m.name}),a.jsx("span",{className:"global-supervisor-item-time",children:md(g.timestamp)})]}),a.jsx("div",{className:"global-supervisor-status-line",children:Bi(x.statusDescription,o)}),a.jsx("div",{className:"global-supervisor-summary-text",children:Bi(x.recentWorkSummary,o)})]},m.id)})})]})}),RL={idle:"idle",working:"walk",waiting:"sit",waiting_permission:"idle",error:"emote-no",offline:"static",orphaned:"idle"},Sw={idle:4915102,working:4890367,waiting:16752202,waiting_permission:16763904,error:16730698,offline:8947848,orphaned:16752202};function Br({agentClass:n,modelFile:e,customModelFile:t,customModelUrl:s,modelScale:i=1,modelOffset:o,idleAnimation:r,status:c="idle",width:u=150,height:h=200}){const p=v.useRef(null),m=v.useRef(null),g=v.useRef(null),b=v.useRef(null),x=v.useRef(null),w=v.useRef(null),k=v.useRef(new Map),S=v.useRef(null),j=v.useRef(null),A=v.useRef(0),T=v.useRef(new oj),[D,M]=v.useState(!1),[F,E]=v.useState(!1),R=v.useRef(!1),_=v.useRef(0),L=v.useRef(new ut),z=v.useRef(!1),$=v.useRef({x:0,y:0}),G=v.useRef({x:0,y:0});v.useEffect(()=>{const q=p.current;if(!q)return;E(!1);const H=new rg;H.background=new Lt(1710628),g.current=H;const X=new ig(45,u/h,.1,100);X.position.set(0,1.2,1.4),X.lookAt(0,.4,0),b.current=X;let ee;try{ee=new rj({antialias:!0,alpha:!0})}catch{console.warn("[ModelPreview] WebGL context creation failed — too many active contexts"),E(!0);return}ee.setSize(u,h),ee.setPixelRatio(Math.min(window.devicePixelRatio,2)),ee.setClearColor(1710628,1),q.appendChild(ee.domElement),m.current=ee;const P=new og(16777215,1);H.add(P);const Y=new Mr(16777215,1.5);Y.position.set(2,3,2),H.add(Y);const Z=new Mr(4890367,.6);Z.position.set(-2,1,-1),H.add(Z);const B=new sf(1,32),V=new Je({color:2763322,roughness:.8}),J=new Te(B,V);J.rotation.x=-Math.PI/2,J.position.y=0,H.add(J);const Q=new Ao(.35,.42,32),W=new Fe({color:Sw.idle,side:ns,transparent:!0,opacity:.8}),ne=new Te(Q,W);ne.rotation.x=-Math.PI/2,ne.position.y=.01,H.add(ne),j.current=ne,M(!0);const se=me=>{z.current=!0,$.current={x:me.clientX,y:me.clientY},q.style.cursor="grabbing"},oe=me=>{if(!z.current||!x.current)return;const we=me.clientX-$.current.x,fe=me.clientY-$.current.y;G.current.y+=we*.01,G.current.x+=fe*.01,G.current.x=Math.max(-Math.PI/4,Math.min(Math.PI/4,G.current.x)),x.current.rotation.y=G.current.y,x.current.rotation.x=G.current.x,$.current={x:me.clientX,y:me.clientY}},ue=()=>{z.current=!1,q.style.cursor="grab"},ye=()=>{z.current=!1,q.style.cursor="grab"};q.addEventListener("mousedown",se),window.addEventListener("mousemove",oe),window.addEventListener("mouseup",ue),q.addEventListener("mouseleave",ye),q.style.cursor="grab";const le=()=>{A.current=requestAnimationFrame(le);const me=T.current.getDelta();if(w.current)w.current.update(me);else if(x.current&&!R.current){_.current+=me;const we=_.current,ae=Math.sin(we*1.5)*.02,ce=Math.sin(we*.8)*.01;x.current.position.set(L.current.x+ce,L.current.y+ae,L.current.z)}m.current&&g.current&&b.current&&m.current.render(g.current,b.current)};return le(),()=>{if(cancelAnimationFrame(A.current),q.removeEventListener("mousedown",se),window.removeEventListener("mousemove",oe),window.removeEventListener("mouseup",ue),q.removeEventListener("mouseleave",ye),x.current&&g.current&&(g.current.remove(x.current),x.current.traverse(me=>{var we,fe;me instanceof Te&&((we=me.geometry)==null||we.dispose(),Array.isArray(me.material)?me.material.forEach(he=>{he.map&&he.map.dispose(),he.dispose()}):me.material&&(me.material.map&&((fe=me.material.map)==null||fe.dispose()),me.material.dispose()))}),x.current=null),j.current&&g.current&&(g.current.remove(j.current),j.current.geometry.dispose(),j.current.material.dispose(),j.current=null),g.current&&(g.current.traverse(me=>{var we;me instanceof Te&&((we=me.geometry)==null||we.dispose(),me.material instanceof Pi&&me.material.dispose())}),g.current.clear()),w.current=null,S.current=null,k.current.clear(),m.current){try{const we=m.current.getContext().getExtension("WEBGL_lose_context");we&&we.loseContext()}catch{}m.current.dispose(),q.contains(m.current.domElement)&&q.removeChild(m.current.domElement),m.current=null}g.current=null,b.current=null,M(!1)}},[u,h]),v.useEffect(()=>{if(!D||!g.current)return;const q=new dg,H=new hg;H.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),q.setDRACOLoader(H),q.setMeshoptDecoder(mg);let X=null;const ee=P=>{x.current&&g.current&&(g.current.remove(x.current),x.current=null,w.current=null,S.current=null);const Y=P.scene;Y.scale.setScalar(i);const Z=(o==null?void 0:o.x)??0,B=(o==null?void 0:o.y)??0,V=(o==null?void 0:o.z)??0;if(Y.position.set(Z,V,B),Y.visible=!0,G.current={x:0,y:0},Y.rotation.set(0,0,0),Y.traverse(J=>{if(J instanceof Te&&(J.castShadow=!0,J.receiveShadow=!0,J.material)){const Q=J.material;Q.map&&(Q.map.colorSpace=la)}}),g.current)if(g.current.add(Y),x.current=Y,L.current.copy(Y.position),P.animations.length>0){R.current=!0;const J=new Ql(Y);w.current=J,k.current.clear();for(const Q of P.animations)k.current.set(Q.name.toLowerCase(),Q);if(r!==""){const Q=r?k.current.get(r.toLowerCase())||P.animations[0]:k.current.get("idle")||P.animations[0];if(Q){const W=J.clipAction(Q);W.reset().play(),S.current=W}}}else R.current=!1,w.current=null,k.current.clear()};if(t)X=URL.createObjectURL(t),console.log("[ModelPreview] Loading custom model from file:",t.name,"blob URL:",X),q.load(X,P=>{console.log("[ModelPreview] Successfully loaded custom model file, animations:",P.animations.length),ee(P)},void 0,P=>{console.error("[ModelPreview] Failed to load custom model file:",P)});else if(s){const P=Nj(s);console.log("[ModelPreview] Loading custom model from URL:",s),q.load(P,Y=>{console.log("[ModelPreview] Successfully loaded custom model URL, animations:",Y.animations.length),ee(Y)},void 0,Y=>{console.error("[ModelPreview] Failed to load custom model URL:",s,Y)})}else{const P=e||(n?Nr[n]:void 0)||"character-male-a.glb";q.load(`/assets/characters/${P}`,ee,void 0,Y=>{console.error("[ModelPreview] Failed to load model:",P,Y)})}return()=>{X&&URL.revokeObjectURL(X),H.dispose()}},[n,e,t,s,i,o,D]);const I=q=>{if(!w.current)return;const H=RL[q],X=k.current.get(H);if(!X){const P=k.current.get("idle");if(P){const Y=w.current.clipAction(P);Y.reset().play(),S.current=Y}return}const ee=w.current.clipAction(X);q==="working"?ee.timeScale=1.5:q==="error"&&(ee.setLoop(nj,1),ee.clampWhenFinished=!0),S.current&&S.current!==ee?(S.current.fadeOut(.3),ee.reset().fadeIn(.3).play()):ee.reset().play(),S.current=ee};return v.useEffect(()=>{if(D){if(j.current){const q=j.current.material;q.color.setHex(Sw[c]),c==="working"?q.opacity=.6+Math.sin(Date.now()*.005)*.4:q.opacity=.8}I(c)}},[c,D]),v.useEffect(()=>{if(!D||!w.current||c!=="idle")return;if(r===""){S.current&&(S.current.stop(),S.current=null);return}const q=r?r.toLowerCase():"idle",H=k.current.get(q);if(H){const X=w.current.clipAction(H);S.current&&S.current!==X?(S.current.fadeOut(.3),X.reset().fadeIn(.3).play()):X.reset().play(),S.current=X}else S.current&&(S.current.stop(),S.current=null)},[r,D,c]),F?a.jsx("div",{className:"model-preview",style:{width:u,height:h,borderRadius:8,overflow:"hidden",background:"#1a1a24",display:"flex",alignItems:"center",justifyContent:"center",color:"#666",fontSize:12,textAlign:"center",padding:8},children:"3D preview unavailable"}):a.jsx("div",{ref:p,className:"model-preview",style:{width:u,height:h,borderRadius:8,overflow:"hidden",background:"#1a1a24"}})}function Ui({value:n,onChange:e,onSubmit:t,placeholder:s="/path/to/folder",className:i="",directoriesOnly:o=!0,autoFocus:r=!1,hasError:c=!1,disabled:u=!1}){const[h,p]=v.useState([]),[m,g]=v.useState(-1),[b,x]=v.useState(!1),[w,k]=v.useState(!1),S=v.useRef(null),j=v.useRef(null),A=v.useRef(null),T=v.useCallback(async L=>{if(!L){p([]);return}k(!0);try{const z=new URLSearchParams({path:L,dirs:o?"true":"false",limit:"15"}),$=await ot(Qe(`/api/files/autocomplete?${z}`));if($.ok){const G=await $.json();p(G.suggestions||[]),g(-1)}}catch(z){console.error("Failed to fetch path suggestions:",z)}finally{k(!1)}},[o]);v.useEffect(()=>(A.current&&clearTimeout(A.current),n&&b?A.current=setTimeout(()=>{T(n)},150):p([]),()=>{A.current&&clearTimeout(A.current)}),[n,b,T]);const D=L=>{e(L.target.value),x(!0)},M=v.useCallback(L=>{var $;const z=L.isDirectory?L.path+"/":L.path;e(z),x(L.isDirectory),g(-1),($=S.current)==null||$.focus(),L.isDirectory&&T(z)},[e,T]),F=L=>{if(!b||h.length===0){L.key==="Enter"&&t&&(L.preventDefault(),t()),L.key==="Escape"&&x(!1);return}switch(L.key){case"ArrowDown":L.preventDefault(),g(z=>z<h.length-1?z+1:z);break;case"ArrowUp":L.preventDefault(),g(z=>z>0?z-1:-1);break;case"Tab":if(L.preventDefault(),h.length>0){const z=m>=0?m:0;M(h[z])}break;case"Enter":L.preventDefault(),m>=0&&h[m]?M(h[m]):t&&(x(!1),t());break;case"Escape":L.preventDefault(),x(!1),g(-1);break}},E=()=>{x(!0),n&&T(n)},R=()=>{setTimeout(()=>{x(!1),g(-1)},200)};v.useEffect(()=>{if(m>=0&&j.current){const z=j.current.querySelectorAll(".folder-input-suggestion")[m];z&&z.scrollIntoView({block:"nearest"})}},[m]);const _=["folder-input",i,c?"error":""].filter(Boolean).join(" ");return a.jsxs("div",{className:"folder-input-container",children:[a.jsx("input",{ref:S,type:"text",className:_,value:n,onChange:D,onKeyDown:F,onFocus:E,onBlur:R,placeholder:s,autoFocus:r,disabled:u,autoComplete:"off",spellCheck:!1}),b&&(h.length>0||w)&&a.jsx("div",{ref:j,className:"folder-input-suggestions",children:w&&h.length===0?a.jsx("div",{className:"folder-input-loading",children:"Loading..."}):h.map((L,z)=>a.jsxs("div",{className:`folder-input-suggestion ${z===m?"selected":""}`,onClick:()=>M(L),onMouseEnter:()=>g(z),children:[a.jsx("span",{className:"folder-input-suggestion-icon",children:L.isDirectory?"📁":"📄"}),a.jsx("span",{className:"folder-input-suggestion-name",children:L.name}),L.isDirectory&&a.jsx("span",{className:"folder-input-suggestion-hint",children:"/"})]},L.path))})]})}function h1({agent:n,isOpen:e,onClose:t}){const{t:s}=Pe(["terminal","common","tools"]),i=Bd(),o=ma(),[r,c]=v.useState(n.name),[u,h]=v.useState(n.class),[p,m]=v.useState(n.permissionMode),[g,b]=v.useState(n.provider||"claude"),[x,w]=v.useState(n.codexConfig||{fullAuto:!0,sandbox:"workspace-write",approvalMode:"on-request",search:!1}),[k,S]=v.useState(n.model||"sonnet"),[j,A]=v.useState(n.codexModel||"gpt-5.3-codex"),[T,D]=v.useState(n.useChrome||!1),[M,F]=v.useState(n.cwd),[E,R]=v.useState(new Set),[_,L]=v.useState("");v.useMemo(()=>i.filter(J=>J.enabled&&(J.assignedAgentIds.includes(n.id)||J.assignedAgentClasses.includes(n.class))),[i,n.id,n.class]),v.useEffect(()=>{const J=i.filter(Q=>Q.assignedAgentIds.includes(n.id)).map(Q=>Q.id);R(new Set(J))},[i,n.id]),v.useEffect(()=>{if(e){c(n.name),h(n.class),m(n.permissionMode),b(n.provider||"claude"),w(n.codexConfig||{fullAuto:!0,sandbox:"workspace-write",approvalMode:"on-request",search:!1}),S(n.model||"sonnet"),A(n.codexModel||"gpt-5.3-codex"),D(n.useChrome||!1),F(n.cwd);const J=i.filter(Q=>Q.assignedAgentIds.includes(n.id)).map(Q=>Q.id);R(new Set(J))}},[e,n,i]);const z=v.useMemo(()=>i.filter(J=>J.enabled),[i]),$=v.useMemo(()=>{if(!_.trim())return z;const J=_.toLowerCase();return z.filter(Q=>Q.name.toLowerCase().includes(J)||Q.description.toLowerCase().includes(J)||Q.slug.toLowerCase().includes(J))},[z,_]),G=v.useMemo(()=>z.filter(J=>J.assignedAgentClasses.includes(u)),[z,u]),I=v.useCallback(J=>{R(Q=>{const W=new Set(Q);return W.has(J)?W.delete(J):W.add(J),W})},[]),q=v.useMemo(()=>{const J=o.find(Q=>Q.id===u);if(J!=null&&J.model)return J.model},[o,u]),H=v.useMemo(()=>{const J=o.find(Q=>Q.id===u);if(J!=null&&J.customModelPath)return Qe(`/api/custom-models/${J.id}`)},[o,u]),X=v.useMemo(()=>{const J=o.find(Q=>Q.id===u);return J==null?void 0:J.modelScale},[o,u]),ee=v.useMemo(()=>o.find(J=>J.id===u),[o,u]),P=v.useMemo(()=>o.find(Q=>Q.id===u)?"scout":u,[o,u]),Y=v.useMemo(()=>{const J=r.trim();if(J&&J!==n.name||u!==n.class||p!==n.permissionMode||g!==(n.provider||"claude")||g==="claude"&&k!==(n.model||"sonnet")||g==="codex"&&j!==(n.codexModel||"gpt-5.3-codex")||g==="codex"&&JSON.stringify(x||{})!==JSON.stringify(n.codexConfig||{})||T!==(n.useChrome||!1)||M!==n.cwd)return!0;const Q=i.filter(ne=>ne.assignedAgentIds.includes(n.id)).map(ne=>ne.id).sort().join(","),W=Array.from(E).sort().join(",");return Q!==W},[r,u,p,g,k,j,x,T,M,E,n,i]),Z=()=>{const J=r.trim(),Q={};J&&J!==n.name&&O.renameAgent(n.id,J),u!==n.class&&(Q.class=u),p!==n.permissionMode&&(Q.permissionMode=p),g!==(n.provider||"claude")&&(Q.provider=g),g==="codex"&&JSON.stringify(x||{})!==JSON.stringify(n.codexConfig||{})&&(Q.codexConfig=x),g==="codex"&&j!==(n.codexModel||"gpt-5.3-codex")&&(Q.codexModel=j),g==="claude"&&k!==(n.model||"sonnet")&&(Q.model=k),T!==(n.useChrome||!1)&&(Q.useChrome=T),M!==n.cwd&&(Q.cwd=M);const W=i.filter(se=>se.assignedAgentIds.includes(n.id)).map(se=>se.id).sort().join(","),ne=Array.from(E).sort().join(",");W!==ne&&(Q.skillIds=Array.from(E)),Object.keys(Q).length>0&&O.updateAgentProperties(n.id,Q),t()},{handleMouseDown:B,handleClick:V}=ss(t);return e?a.jsx("div",{className:"modal-overlay visible",onMouseDown:B,onClick:V,children:a.jsxs("div",{className:"modal agent-edit-modal",children:[a.jsxs("div",{className:"modal-header",children:[s("terminal:spawn.editAgentTitle"),": ",r.trim()||n.name]}),a.jsxs("div",{className:"modal-body spawn-modal-body",children:[a.jsxs("div",{className:"spawn-top-section",children:[a.jsx("div",{className:"spawn-preview-compact",children:a.jsx(Br,{agentClass:P,modelFile:q,customModelUrl:H,modelScale:X,width:100,height:120})}),a.jsxs("div",{className:"spawn-class-section",children:[a.jsx("div",{className:"spawn-class-label",children:s("terminal:spawn.agentClass")}),a.jsxs("div",{className:"class-selector-inline",children:[o.map(J=>a.jsxs("button",{className:`class-chip ${u===J.id?"selected":""}`,onClick:()=>h(J.id),title:J.description,children:[a.jsx("span",{className:"class-chip-icon",children:J.icon}),a.jsx("span",{className:"class-chip-name",children:J.name})]},J.id)),Object.entries(ti).filter(([J])=>J!=="boss").map(([J,Q])=>a.jsxs("button",{className:`class-chip ${u===J?"selected":""}`,onClick:()=>h(J),title:Q.description,children:[a.jsx("span",{className:"class-chip-icon",children:Q.icon}),a.jsx("span",{className:"class-chip-name",children:J.charAt(0).toUpperCase()+J.slice(1)})]},J))]})]})]}),(ee==null?void 0:ee.instructions)&&a.jsxs("div",{className:"custom-class-notice",children:[a.jsxs("div",{className:"custom-class-notice-header",children:[a.jsx("span",{children:"📋"}),a.jsx("span",{children:s("terminal:spawn.hasCustomInstructions")})]}),a.jsx("div",{className:"custom-class-notice-info",children:s("terminal:spawn.instructionsInjected",{count:ee.instructions.length})})]}),a.jsxs("div",{className:"spawn-form-section",children:[a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:s("common:labels.name")}),a.jsx("input",{type:"text",className:"spawn-input",value:r,onChange:J=>c(J.target.value),placeholder:s("terminal:spawn.agentNamePlaceholder")})]})}),a.jsxs("div",{className:"spawn-form-row",children:[a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:s("common:labels.runtime")}),a.jsxs("div",{className:"spawn-select-row",children:[a.jsxs("button",{className:`spawn-select-btn ${g==="claude"?"selected":""}`,onClick:()=>b("claude"),children:[a.jsx("span",{children:"🧠"}),a.jsx("span",{children:"Claude"})]}),a.jsxs("button",{className:`spawn-select-btn ${g==="codex"?"selected":""}`,onClick:()=>b("codex"),children:[a.jsx("span",{children:"⚙️"}),a.jsx("span",{children:"Codex"})]})]})]}),a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:s("common:labels.permissions")}),a.jsx("div",{className:"spawn-select-row",children:Object.keys(ua).map(J=>a.jsxs("button",{className:`spawn-select-btn ${p===J?"selected":""}`,onClick:()=>m(J),title:ua[J].description,children:[a.jsx("span",{children:J==="bypass"?"⚡":"🔐"}),a.jsx("span",{children:ua[J].label})]},J))})]})]}),a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:s("common:labels.model")}),g==="claude"?a.jsx("div",{className:"spawn-select-row",children:Object.keys(Qs).map(J=>a.jsxs("button",{className:`spawn-select-btn ${k===J?"selected":""}`,onClick:()=>S(J),title:Qs[J].description,children:[a.jsx("span",{children:Qs[J].icon}),a.jsx("span",{children:Qs[J].label})]},J))}):g==="codex"?a.jsx("div",{className:"spawn-select-row spawn-select-row--codex-models",children:Object.keys(Zs).map(J=>a.jsxs("button",{className:`spawn-select-btn ${j===J?"selected":""}`,onClick:()=>A(J),title:Zs[J].description,children:[a.jsx("span",{children:Zs[J].icon}),a.jsx("span",{children:Zs[J].label})]},J))}):a.jsx("div",{className:"spawn-inline-hint",children:s("terminal:spawn.codex.configuration")})]})}),g==="codex"&&a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:s("terminal:spawn.codex.config")}),a.jsxs("div",{className:"spawn-options-row",style:{display:"flex",flexDirection:"column",gap:8},children:[a.jsxs("label",{className:"spawn-checkbox",children:[a.jsx("input",{type:"checkbox",checked:x.fullAuto!==!1,onChange:J=>w(Q=>({...Q,fullAuto:J.target.checked}))}),a.jsx("span",{children:s("terminal:spawn.codex.useFullAuto")})]}),a.jsxs("label",{className:"spawn-checkbox",children:[a.jsx("input",{type:"checkbox",checked:!!x.search,onChange:J=>w(Q=>({...Q,search:J.target.checked}))}),a.jsx("span",{children:s("terminal:spawn.codex.enableSearch")})]}),x.fullAuto===!1&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:"spawn-input",value:x.sandbox||"workspace-write",onChange:J=>w(Q=>({...Q,sandbox:J.target.value})),children:[a.jsx("option",{value:"read-only",children:s("terminal:spawn.codex.sandboxReadOnly")}),a.jsx("option",{value:"workspace-write",children:s("terminal:spawn.codex.sandboxWorkspaceWrite")}),a.jsx("option",{value:"danger-full-access",children:s("terminal:spawn.codex.sandboxDangerFullAccess")})]}),a.jsxs("select",{className:"spawn-input",value:x.approvalMode||"on-request",onChange:J=>w(Q=>({...Q,approvalMode:J.target.value})),children:[a.jsx("option",{value:"untrusted",children:s("terminal:spawn.codex.approvalsUntrusted")}),a.jsx("option",{value:"on-failure",children:s("terminal:spawn.codex.approvalsOnFailure")}),a.jsx("option",{value:"on-request",children:s("terminal:spawn.codex.approvalsOnRequest")}),a.jsx("option",{value:"never",children:s("terminal:spawn.codex.approvalsNever")})]})]}),a.jsx("input",{type:"text",className:"spawn-input",placeholder:s("terminal:spawn.codex.profileOptional"),value:x.profile||"",onChange:J=>w(Q=>({...Q,profile:J.target.value||void 0}))})]})]})}),g==="claude"&&k!==(n.model||"sonnet")&&a.jsx("div",{className:"model-change-notice",children:s("terminal:spawn.contextPreserved")}),a.jsx("div",{className:"spawn-form-row spawn-options-row",children:a.jsxs("label",{className:"spawn-checkbox",children:[a.jsx("input",{type:"checkbox",checked:T,onChange:J=>D(J.target.checked),disabled:g!=="claude"}),a.jsx("span",{children:s("terminal:spawn.chromeBrowser")})]})}),a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:s("terminal:spawn.workingDir")}),a.jsx(Ui,{value:M,onChange:F,placeholder:s("terminal:spawn.workingDirPlaceholder"),className:"spawn-input",directoriesOnly:!0})]})}),M!==n.cwd&&a.jsx("div",{className:"model-change-notice warning",children:s("terminal:spawn.newSessionWarning")}),a.jsxs("div",{className:"spawn-skills-section",children:[a.jsxs("label",{className:"spawn-label",children:[s("terminal:spawn.skills")," ",a.jsxs("span",{className:"spawn-label-hint",children:["(",s("terminal:spawn.clickToToggle"),")"]})]}),z.length>6&&a.jsx("input",{type:"text",className:"spawn-input skill-search-input",placeholder:s("terminal:spawn.filterSkills"),value:_,onChange:J=>L(J.target.value)}),a.jsx("div",{className:"skills-chips-compact",children:z.length===0?a.jsx("div",{className:"skills-empty",children:s("terminal:spawn.noEnabledSkills")}):$.length===0?a.jsx("div",{className:"skills-empty",children:s("terminal:spawn.noSkillsMatch",{query:_})}):$.map(J=>{const Q=G.includes(J),ne=E.has(J.id)||Q;return a.jsxs("button",{className:`skill-chip ${ne?"selected":""} ${Q?"class-based":""}`,onClick:()=>!Q&&I(J.id),title:Q?s("terminal:spawn.assignedViaClass"):J.name,children:[ne&&a.jsx("span",{className:"skill-check",children:"✓"}),a.jsx("span",{className:"skill-chip-name",children:J.name}),J.builtin&&a.jsx("span",{className:"skill-chip-badge builtin",children:"TC"}),Q&&a.jsx("span",{className:"skill-chip-badge",children:"class"})]},J.id)})})]})]})]}),a.jsxs("div",{className:"modal-footer",children:[a.jsx("button",{className:"btn btn-secondary",onClick:t,children:s("common:buttons.cancel")}),a.jsx("button",{className:"btn btn-primary",onClick:Z,disabled:!Y,children:s("common:buttons2.saveChanges")})]})]})}):null}var Od=qS();function Ro({children:n}){return typeof document>"u"?null:Od.createPortal(n,document.body)}function Fl(n){return n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:n.toString()}function jw(n){return`${n.toFixed(1)}%`}function LL(n){return n>=80?"#ff4a4a":n>=60?"#ff9e4a":n>=40?"#ffd700":"#4aff9e"}const PL={systemPrompt:"#4a9eff",systemTools:"#9e4aff",messages:"#4aff9e",freeSpace:"rgba(255,255,255,0.1)",autocompactBuffer:"#ff9e4a"},BL={systemPrompt:"terminal:context.systemPrompt",systemTools:"terminal:context.systemTools",messages:"terminal:context.messagesCategory",freeSpace:"terminal:context.freeSpace",autocompactBuffer:"terminal:context.autocompactBuffer"},OL={systemPrompt:"terminal:context.systemPromptDesc",systemTools:"terminal:context.systemToolsDesc",messages:"terminal:context.messagesDesc",freeSpace:"terminal:context.freeSpaceDesc",autocompactBuffer:"terminal:context.autocompactBufferDesc"};function m1({agent:n,isOpen:e,onClose:t,onRefresh:s}){const{t:i}=Pe(["terminal","common"]),o=n.contextStats,[r,c]=v.useState(!1),u=()=>{s&&!r&&(c(!0),s(),setTimeout(()=>c(!1),3e3))},h=["systemPrompt","systemTools","messages","autocompactBuffer","freeSpace"],p=v.useMemo(()=>o?h.map(x=>({key:x,...o.categories[x],label:i(BL[x]),description:i(OL[x]),color:PL[x]})):[],[o]),m=v.useMemo(()=>p.filter(x=>x.key!=="freeSpace"),[p]),{handleMouseDown:g,handleClick:b}=ss(t);return e?a.jsx(Ro,{children:a.jsx("div",{className:"modal-overlay visible",onMouseDown:g,onClick:b,children:a.jsxs("div",{className:"modal context-view-modal",style:{maxWidth:"520px"},children:[a.jsxs("div",{className:"modal-header",style:{display:"flex",alignItems:"center",gap:"12px"},children:[a.jsx("span",{style:{flex:1},children:i("terminal:context.contextWindow",{name:n.name})}),s&&a.jsxs("button",{className:"btn btn-primary",onClick:u,disabled:r||n.status!=="idle",style:{padding:"6px 12px",fontSize:"12px",display:"flex",alignItems:"center",gap:"6px"},title:n.status!=="idle"?i("terminal:context.agentMustBeIdle"):i("terminal:context.fetchContextStats"),children:[a.jsx("span",{style:{display:"inline-block",animation:r?"spin 1s linear infinite":"none"},children:r?"⟳":"↻"}),i(r?"common:status.loading":"common:buttons.refresh")]})]}),a.jsx("div",{className:"modal-body",style:{padding:"16px"},children:o?a.jsxs(a.Fragment,{children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"16px",padding:"8px 12px",background:"var(--bg-secondary)",borderRadius:"6px"},children:[a.jsxs("div",{children:[a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:i("terminal:context.model")}),a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:o.model})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:i("terminal:context.contextWindowLabel")}),a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:Fl(o.contextWindow)})]})]}),a.jsxs("div",{style:{marginBottom:"24px"},children:[a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"8px",fontSize:"13px"},children:[a.jsx("span",{children:i("terminal:context.contextUsage")}),a.jsxs("span",{style:{color:LL(o.usedPercent)},children:[Fl(o.totalTokens)," / ",Fl(o.contextWindow)," (",o.usedPercent,"%)"]})]}),a.jsx("div",{style:{height:"28px",background:"var(--bg-tertiary)",borderRadius:"6px",overflow:"hidden",display:"flex"},children:m.map(x=>x.percent>0&&a.jsx("div",{style:{width:`${x.percent}%`,background:x.color,height:"100%",minWidth:x.percent>.5?"2px":"0",transition:"width 0.3s ease"},title:`${x.label}: ${Fl(x.tokens)} (${jw(x.percent)})`},x.key))})]}),a.jsxs("div",{style:{marginBottom:"16px"},children:[a.jsx("div",{style:{fontSize:"12px",color:"var(--text-secondary)",marginBottom:"8px",textTransform:"uppercase",letterSpacing:"0.5px"},children:i("terminal:context.tokenBreakdown")}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:p.map(x=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px",padding:"10px 12px",background:x.key==="freeSpace"?"transparent":"var(--bg-secondary)",borderRadius:"6px",borderLeft:x.key==="freeSpace"?"3px dashed rgba(255,255,255,0.2)":`3px solid ${x.color}`,opacity:x.key==="freeSpace"?.7:1},children:[a.jsx("div",{style:{width:"12px",height:"12px",borderRadius:"3px",background:x.color,flexShrink:0,border:x.key==="freeSpace"?"1px dashed rgba(255,255,255,0.3)":"none"}}),a.jsxs("div",{style:{flex:1},children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:x.label}),a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:x.description})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:Fl(x.tokens)}),a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:jw(x.percent)})]})]},x.key))})]}),a.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",textAlign:"center"},children:i("terminal:context.lastUpdated",{time:new Date(o.lastUpdated).toLocaleTimeString()})})]}):a.jsxs("div",{style:{textAlign:"center",color:"var(--text-secondary)",padding:"32px"},children:[a.jsx("div",{style:{fontSize:"48px",marginBottom:"16px",opacity:.5},children:"📊"}),a.jsx("div",{style:{fontSize:"14px",marginBottom:"8px"},children:i("terminal:context.noContextData")}),a.jsx("div",{style:{fontSize:"12px",marginBottom:"20px",opacity:.7},children:i("terminal:context.clickRefresh")}),s&&a.jsxs("button",{className:"btn btn-primary",onClick:u,disabled:r||n.status!=="idle",style:{padding:"10px 24px",fontSize:"14px",display:"inline-flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{display:"inline-block",animation:r?"spin 1s linear infinite":"none"},children:r?"⟳":"↻"}),i(r?"terminal:context.fetchingStats":"terminal:context.fetchContextStats")]}),n.status!=="idle"&&a.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",marginTop:"12px"},children:i("terminal:context.agentMustBeIdle")})]})}),a.jsx("div",{className:"modal-footer",style:{display:"flex",justifyContent:"flex-end",padding:"12px 16px",borderTop:"1px solid var(--border-color)"},children:a.jsx("button",{className:"btn btn-secondary",onClick:t,children:i("common:buttons.close")})})]})})}):null}const IL=v.memo(function({tokensUsed:e,createdAt:t}){const{t:s}=Pe(["common"]);return a.jsxs("div",{className:"unit-stats",children:[a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:s("labels.tokens")}),a.jsx("div",{className:"unit-stat-value",children:mf(e)})]}),a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:s("labels.uptime")}),a.jsx("div",{className:"unit-stat-value",children:Sj(t)})]})]})}),p1=v.memo(function({contextInfo:e,onClick:t}){const{t:s}=Pe(["common"]),{remainingPercent:i,hasData:o}=e;return a.jsxs("div",{className:"unit-context unit-context-clickable",onClick:t,title:s(o?"unitPanel.remainingContext":"unitPanel.notRetrievedYet"),style:{cursor:"pointer"},children:[a.jsxs("div",{className:"unit-stat-label",style:{display:"flex",alignItems:"center",gap:"4px"},children:[a.jsx("span",{children:s("unitPanel.remainingContext")}),o?a.jsx("span",{style:{fontSize:"10px",opacity:.6},children:"📊"}):a.jsx("span",{style:{fontSize:"9px",color:"#ff9e4a",opacity:.8},title:s("unitPanel.notRetrievedYet"),children:"⚠️"})]}),o?a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"unit-context-bar",children:a.jsx("div",{className:"unit-context-fill",style:{width:`${i}%`,background:TL(i)}})}),a.jsxs("span",{className:"unit-context-value",children:[Math.round(i),"%"]})]}):a.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",fontStyle:"italic"},children:s("unitPanel.notRetrievedYet")})]})}),zL=v.memo(function({lastActivity:e}){const{t}=Pe(["common"]);return a.jsxs("div",{className:"unit-idle-timer",title:t("unitPanel.timeSinceActivity"),style:{color:Md(e)},children:["⏱ ",Ed(e)]})}),FL=v.memo(function({toolName:e}){const{t}=Pe(["common"]);return a.jsxs("div",{className:"unit-current-tool",children:[a.jsx("span",{className:"unit-stat-label",children:t("unitPanel.using")}),a.jsx("span",{className:"unit-tool-name",children:e})]})}),$L=v.memo(function({task:e}){const{t}=Pe(["common"]);return a.jsxs("div",{className:"unit-task",children:[a.jsx("div",{className:"unit-stat-label",children:t("labels.task")}),a.jsx("div",{className:"unit-task-text",children:e})]})}),HL=v.memo(function({cwd:e}){const{t}=Pe(["common"]);return a.jsxs("div",{className:"unit-cwd",children:[a.jsx("div",{className:"unit-stat-label",children:t("labels.cwd")}),a.jsx("div",{className:"unit-cwd-path",title:e,children:e})]})}),UL=v.memo(function({text:e,maxLength:t=150}){const{t:s}=Pe(["common"]);return a.jsxs("div",{className:"unit-last-prompt",children:[a.jsx("div",{className:"unit-stat-label",children:s("unitPanel.lastPrompt")}),a.jsx("div",{className:"unit-last-prompt-text",children:e.length>t?e.slice(0,t)+"...":e})]})}),GL=v.memo(function({text:e,maxLength:t=200}){const{t:s}=Pe(["common"]);return a.jsxs("div",{className:"unit-last-message",children:[a.jsx("div",{className:"unit-stat-label",children:s("unitPanel.lastResponse")}),a.jsx("div",{className:"unit-last-message-text",children:e.length>t?e.slice(0,t)+"...":e})]})});function qL({agent:n,onFocusAgent:e,onKillAgent:t,onCallSubordinates:s,onOpenAreaExplorer:i}){var se,oe;const{t:o}=Pe(["common"]),r=hn(),c=ma(),{showToast:u}=Cg(),h=r.agents.get(n.id)||n,p=Hi(h.class,c),m=c.find(ue=>ue.id===h.class),g=m==null?void 0:m.model,b=m!=null&&m.customModelPath?Qe(`/api/custom-models/${m.id}`):void 0,x=m==null?void 0:m.modelScale,[w,k]=v.useState(!1),[S,j]=v.useState(h.name),A=v.useRef(null),[,T]=v.useState(0),[D,M]=v.useState(!0),[F,E]=v.useState(!1),[R,_]=v.useState([]),[L,z]=v.useState(null),[$,G]=v.useState(!1),[I,q]=v.useState(!1),H=O.getAgentSupervisorHistory(h.id),X=O.isLoadingHistoryForAgent(h.id);v.useEffect(()=>{!O.hasHistoryBeenFetched(h.id)&&!X&&O.requestAgentSupervisorHistory(h.id)},[h.id,X]),v.useEffect(()=>{j(h.name)},[h.name]),v.useEffect(()=>{w&&A.current&&(A.current.focus(),A.current.select())},[w]),v.useEffect(()=>{if(h.status==="idle"){const ue=setInterval(()=>{T(ye=>ye+1)},15e3);return()=>clearInterval(ue)}},[h.status]),v.useEffect(()=>{h.permissionMode==="interactive"&&ot(Qe("/api/remembered-patterns")).then(ue=>ue.json()).then(_).catch(ue=>console.error("Failed to fetch remembered patterns:",ue))},[h.permissionMode]);const ee=v.useMemo(()=>d1(h),[h.contextStats,h.contextUsed,h.contextLimit]),P=O.getAreaForAgent(h.id),Y=r.agentOutputs.get(h.id)||[],Z=Y.length>0?Y[Y.length-1]:null,B=r.lastPrompts.get(h.id),V=async(ue,ye)=>{try{(await ot(Qe(`/api/remembered-patterns/${ue}/${encodeURIComponent(ye)}`),{method:"DELETE"})).ok&&_(me=>me.filter(we=>!(we.tool===ue&&we.pattern===ye)))}catch(le){console.error("Failed to remove pattern:",le)}},J=async()=>{if(confirm(o("confirm.clearPatterns")))try{(await ot(Qe("/api/remembered-patterns"),{method:"DELETE"})).ok&&_([])}catch(ue){console.error("Failed to clear patterns:",ue)}},Q=()=>{confirm(o("confirm.terminateAgent"))&&t(h.id)},W=()=>{const ue=S.trim();ue&&ue!==h.name?O.renameAgent(h.id,ue):j(h.name),k(!1)},ne=ue=>{ue.key==="Enter"?W():ue.key==="Escape"&&(j(h.name),k(!1))};return a.jsxs("div",{className:"unit-panel",children:[a.jsx("div",{className:"unit-model-preview",children:a.jsx(Br,{agentClass:h.class,modelFile:g,customModelUrl:b,modelScale:x,status:h.status,width:80,height:80})}),a.jsxs("div",{className:"unit-panel-header",children:[a.jsx("div",{className:"unit-class-icon",style:{background:`${p.color}20`},children:p.icon}),a.jsxs("div",{className:"unit-header-info",children:[w?a.jsx("input",{ref:A,type:"text",className:"unit-name-input",value:S,onChange:ue=>j(ue.target.value),onBlur:W,onKeyDown:ne}):a.jsx("div",{className:"unit-name unit-name-editable",onClick:()=>k(!0),title:o("unitPanel.clickToRename"),children:h.name}),a.jsxs("div",{className:"unit-status",children:[a.jsx("span",{style:{color:od[h.status]||od.default},children:h.status}),a.jsxs("span",{children:[" • ",h.class," • ",h.provider]})]}),h.status==="idle"&&h.lastActivity>0&&a.jsx(zL,{lastActivity:h.lastActivity})]}),a.jsxs("div",{className:"unit-header-actions",children:[a.jsx("button",{className:"unit-action-icon",onClick:()=>e(h.id),title:o("unitPanel.focusOnAgent"),children:"🎯"}),a.jsx("button",{className:"unit-action-icon",onClick:()=>G(!0),title:o("unitPanel.editProperties"),children:"✏️"}),(h.isBoss||h.class==="boss")&&h.subordinateIds&&h.subordinateIds.length>0&&a.jsx("button",{className:"unit-action-icon",onClick:()=>s==null?void 0:s(h.id),title:o("unitPanel.callSubordinates"),children:"📢"}),a.jsx("button",{className:"unit-action-icon",onClick:()=>z("collapse"),title:o("unitPanel.collapseContext"),disabled:h.status!=="idle",children:"📦"}),a.jsx("button",{className:"unit-action-icon warning",onClick:()=>z("clear"),title:o("unitPanel.clearContext"),children:"🗑️"}),a.jsx("button",{className:"unit-action-icon danger",onClick:Q,title:o("unitPanel.killAgent"),children:"☠️"})]})]}),P&&a.jsxs("div",{className:"unit-area",children:[a.jsx("span",{className:"unit-area-dot",style:{background:P.color}}),a.jsx("span",{className:"unit-area-name",children:P.name})]}),B&&a.jsx(UL,{text:B.text}),Z&&a.jsx(GL,{text:Z.text}),a.jsx(IL,{tokensUsed:h.tokensUsed,createdAt:h.createdAt}),a.jsx(p1,{contextInfo:ee,onClick:()=>q(!0)}),h.currentTool&&a.jsx(FL,{toolName:h.currentTool}),h.currentTask&&a.jsx($L,{task:h.currentTask}),a.jsx(HL,{cwd:h.cwd}),a.jsxs("div",{className:"unit-permission-mode",children:[a.jsx("div",{className:"unit-stat-label",children:o("unitPanel.permissions")}),a.jsxs("div",{className:"unit-permission-mode-value",title:(se=ua[h.permissionMode])==null?void 0:se.description,children:[a.jsx("span",{className:"unit-permission-mode-icon",children:h.permissionMode==="bypass"?"⚡":"🔐"}),a.jsx("span",{className:"unit-permission-mode-label",children:((oe=ua[h.permissionMode])==null?void 0:oe.label)||h.permissionMode})]})]}),h.permissionMode==="interactive"&&a.jsx(WL,{patterns:R,showPatterns:F,onToggle:()=>E(!F),onRemovePattern:V,onClearAll:J}),h.sessionId?a.jsxs("div",{className:"unit-resume-cmd",children:[a.jsx("div",{className:"unit-stat-label",children:o("unitPanel.resumeSession")}),a.jsxs("div",{className:"unit-resume-cmd-text",title:o("unitPanel.clickToCopy"),onClick:async()=>{try{await navigator.clipboard.writeText(`codex resume ${h.sessionId}`),u("success",o("toast.copied"),o("toast.resumeCommandCopied"),2e3)}catch{u("error",o("toast.errorTitle"),o("toast.failedToCopy"),3e3)}},children:["codex resume ",h.sessionId]})]}):a.jsxs("div",{className:"unit-resume-cmd",children:[a.jsx("div",{className:"unit-stat-label",children:o("unitPanel.session")}),a.jsx("div",{className:"unit-new-session-indicator",children:o("unitPanel.newSession")})]}),a.jsxs("div",{className:"unit-supervisor-history",children:[a.jsxs("div",{className:"unit-supervisor-history-header",onClick:()=>M(!D),children:[a.jsx("div",{className:"unit-stat-label",children:o("unitPanel.supervisorHistory")}),a.jsxs("span",{className:"unit-supervisor-history-toggle",children:[H.length>0&&a.jsx("span",{className:"unit-supervisor-history-count",children:H.length}),D?"▼":"▶"]})]}),D&&a.jsx("div",{className:"unit-supervisor-history-list",children:X?a.jsx("div",{className:"unit-supervisor-history-loading",children:o("status.loading")}):H.length===0?a.jsx("div",{className:"unit-supervisor-history-empty",children:o("unitPanel.noSupervisorReports")}):H.slice(0,10).map((ue,ye)=>a.jsx(KL,{entry:ue,defaultExpanded:ye===0},ue.id))})]}),(h.isBoss||h.class==="boss")&&a.jsx(XL,{agent:h}),h.bossId&&a.jsx(ZL,{agentId:h.id,bossId:h.bossId}),h.class!=="boss"&&!h.isBoss&&!h.bossId&&a.jsx(QL,{agentId:h.id}),L&&a.jsx(VL,{action:L,agentName:h.name,onClose:()=>z(null),onConfirm:()=>{L==="collapse"?O.collapseContext(h.id):O.clearContext(h.id),z(null)}}),a.jsx(h1,{agent:h,isOpen:$,onClose:()=>G(!1)}),a.jsx(m1,{agent:h,isOpen:I,onClose:()=>q(!1),onRefresh:()=>{O.refreshAgentContext(h.id)}})]})}const WL=v.memo(function({patterns:e,showPatterns:t,onToggle:s,onRemovePattern:i,onClearAll:o}){const{t:r}=Pe(["common"]);return a.jsxs("div",{className:"unit-remembered-patterns",children:[a.jsxs("div",{className:"unit-remembered-patterns-header",onClick:s,children:[a.jsx("div",{className:"unit-stat-label",children:r("unitPanel.allowedPatterns")}),a.jsxs("span",{className:"unit-remembered-patterns-toggle",children:[e.length>0&&a.jsx("span",{className:"unit-remembered-patterns-count",children:e.length}),t?"▼":"▶"]})]}),t&&a.jsx("div",{className:"unit-remembered-patterns-list",children:e.length===0?a.jsx("div",{className:"unit-remembered-patterns-empty",children:r("unitPanel.noPatterns")}):a.jsxs(a.Fragment,{children:[e.map((c,u)=>a.jsxs("div",{className:"unit-remembered-pattern-item",children:[a.jsx("span",{className:"unit-pattern-tool",children:c.tool}),a.jsx("span",{className:"unit-pattern-desc",title:c.pattern,children:c.description}),a.jsx("button",{className:"unit-pattern-remove",onClick:()=>i(c.tool,c.pattern),title:r("unitPanel.removePattern"),children:"×"})]},u)),a.jsx("button",{className:"unit-patterns-clear-all",onClick:o,children:r("buttons.clearAll")})]})})]})}),VL=v.memo(function({action:e,agentName:t,onClose:s,onConfirm:i}){const{t:o}=Pe(["common"]),{handleMouseDown:r,handleClick:c}=ss(s);return a.jsx("div",{className:"modal-overlay visible",onMouseDown:r,onClick:c,children:a.jsxs("div",{className:"modal confirm-modal",children:[a.jsx("div",{className:"modal-header",children:o(e==="collapse"?"unitPanel.collapseContextTitle":"unitPanel.clearContextTitle")}),a.jsx("div",{className:"modal-body confirm-modal-body",children:e==="collapse"?a.jsxs(a.Fragment,{children:[a.jsx("p",{dangerouslySetInnerHTML:{__html:o("unitPanel.collapseContextMsg",{name:t})}}),a.jsx("p",{className:"confirm-modal-note",children:o("unitPanel.collapseContextNote")})]}):a.jsxs(a.Fragment,{children:[a.jsx("p",{dangerouslySetInnerHTML:{__html:o("unitPanel.clearContextMsg",{name:t})}}),a.jsx("p",{className:"confirm-modal-note",children:o("unitPanel.clearContextNote")})]})}),a.jsxs("div",{className:"modal-footer",children:[a.jsx("button",{className:"btn btn-secondary",onClick:s,children:o("buttons.cancel")}),a.jsx("button",{className:`btn ${e==="clear"?"btn-danger":"btn-primary"}`,onClick:i,autoFocus:!0,children:o(e==="collapse"?"unitPanel.collapseBtn":"unitPanel.clearContextBtn")})]})]})})}),KL=v.memo(function({entry:e,defaultExpanded:t=!1}){var g;const{t:s}=Pe(["common"]),[i,o]=v.useState(t),r=hn(),{analysis:c}=e,u=r.settings.hideCost,h=Bi(c.statusDescription,u),p=Bi(c.recentWorkSummary,u),m=(g=c.concerns)==null?void 0:g.map(b=>Bi(b,u)).filter(b=>b.length>0);return a.jsxs("div",{className:"supervisor-history-item",children:[a.jsxs("div",{className:"supervisor-history-item-header",onClick:()=>o(!i),children:[a.jsx("span",{className:"supervisor-history-progress-dot",style:{background:wj[c.progress]||"#888"},title:c.progress}),a.jsx("span",{className:"supervisor-history-status",children:h}),a.jsx("span",{className:"supervisor-history-time",children:md(e.timestamp)})]}),i&&a.jsxs("div",{className:"supervisor-history-item-details",children:[a.jsxs("div",{className:"supervisor-history-summary",children:[a.jsxs("strong",{children:[s("labels.summary"),":"]})," ",p]}),m&&m.length>0&&a.jsxs("div",{className:"supervisor-history-concerns",children:[a.jsxs("strong",{children:[s("labels.concerns"),":"]}),a.jsx("ul",{children:m.map((b,x)=>a.jsx("li",{children:b},x))})]})]})]})}),XL=v.memo(function({agent:e}){const{t}=Pe(["common"]),s=hn(),i=ma(),[o,r]=v.useState(!0),[c,u]=v.useState(!0),h=v.useMemo(()=>{const x=s.agents.get(e.id);return!x||!x.isBoss&&x.class!=="boss"||!x.subordinateIds?[]:x.subordinateIds.map(w=>s.agents.get(w)).filter(w=>w!==void 0)},[s.agents,e.id]),p=O.getDelegationHistory(e.id),m=s.pendingDelegation,g=(m==null?void 0:m.bossId)===e.id;v.useEffect(()=>{O.requestDelegationHistory(e.id)},[e.id]);const b=Na.boss;return a.jsxs("div",{className:"boss-section",children:[a.jsxs("div",{className:"boss-header",children:[a.jsx("span",{className:"boss-crown-icon",style:{color:b.color},children:b.icon}),a.jsx("span",{className:"boss-title",children:t("unitPanel.bossAgent")})]}),a.jsxs("div",{className:"boss-subordinates",children:[a.jsxs("div",{className:"boss-subordinates-header",onClick:()=>r(!o),children:[a.jsxs("div",{className:"unit-stat-label",children:[t("labels.team")," (",h.length,")"]}),a.jsx("span",{className:"boss-toggle",children:o?"▼":"▶"})]}),o&&a.jsx("div",{className:"boss-subordinates-list",children:h.length===0?a.jsx("div",{className:"boss-subordinates-empty",children:t("unitPanel.noSubordinates")}):h.map(x=>{const w=Hi(x.class,i);return a.jsxs("div",{className:"boss-subordinate-item",onClick:()=>O.selectAgent(x.id),children:[a.jsx("span",{className:"boss-subordinate-icon",style:{color:w.color},children:w.icon}),a.jsx("span",{className:"boss-subordinate-name",children:x.name}),a.jsx("span",{className:`boss-subordinate-status status-${x.status}`,children:x.status}),a.jsx("button",{className:"boss-subordinate-unlink",onClick:k=>{k.stopPropagation(),O.removeSubordinate(e.id,x.id)},title:t("unitPanel.unlinkSubordinate"),children:"✕"})]},x.id)})})]}),a.jsxs("div",{className:"boss-delegation-history",children:[a.jsxs("div",{className:"boss-delegation-history-header",onClick:()=>u(!c),children:[a.jsxs("div",{className:"unit-stat-label",children:[t("unitPanel.delegationHistory")," (",p.length,")"]}),a.jsx("span",{className:"boss-toggle",children:c?"▼":"▶"})]}),c&&a.jsxs("div",{className:"boss-delegation-history-list",children:[g&&a.jsxs("div",{className:"boss-delegation-pending",children:[a.jsx("span",{className:"delegation-spinner",children:"⏳"}),t("unitPanel.analyzingRequest")]}),p.length===0&&!g?a.jsx("div",{className:"boss-delegation-empty",children:t("unitPanel.noDelegationHistory")}):p.slice(0,10).map(x=>a.jsx(YL,{decision:x},x.id))]})]})]})}),YL=v.memo(function({decision:e}){const{t}=Pe(["common"]),[s,i]=v.useState(!1),r=hn().agents.get(e.selectedAgentId),c=r?Na[r.class]:null,u={high:"#4aff9e",medium:"#ff9e4a",low:"#ff4a4a"};return a.jsxs("div",{className:"delegation-decision-item",children:[a.jsxs("div",{className:"delegation-decision-header",onClick:()=>i(!s),children:[a.jsx("span",{className:"delegation-decision-arrow",children:s?"▼":"▶"}),c&&a.jsx("span",{className:"delegation-decision-icon",style:{color:c.color},children:c.icon}),a.jsxs("span",{className:"delegation-decision-agent",children:["→ ",e.selectedAgentName]}),a.jsx("span",{className:"delegation-decision-confidence",style:{color:u[e.confidence]},title:t("unitPanel.confidence",{level:e.confidence}),children:e.confidence==="high"?"●●●":e.confidence==="medium"?"●●○":"●○○"}),a.jsx("span",{className:"delegation-decision-time",children:md(e.timestamp)})]}),s&&a.jsxs("div",{className:"delegation-decision-details",children:[a.jsxs("div",{className:"delegation-decision-command",children:[a.jsxs("strong",{children:[t("labels.command"),":"]}),a.jsx("div",{className:"delegation-command-text",children:e.userCommand.length>200?e.userCommand.slice(0,200)+"...":e.userCommand})]}),a.jsxs("div",{className:"delegation-decision-reasoning",children:[a.jsxs("strong",{children:[t("labels.reasoning"),":"]})," ",e.reasoning]}),e.alternativeAgents.length>0&&a.jsxs("div",{className:"delegation-decision-alternatives",children:[a.jsxs("strong",{children:[t("labels.alternatives"),":"]})," ",e.alternativeAgents.join(", ")]})]})]})}),ZL=v.memo(function({agentId:e,bossId:t}){const{t:s}=Pe(["common"]),o=hn().agents.get(t);if(!o)return null;const r=Na.boss,c=u=>{u.stopPropagation(),O.removeSubordinate(t,e)};return a.jsxs("div",{className:"subordinate-badge",children:[a.jsx("span",{className:"subordinate-badge-icon",style:{color:r.color},children:r.icon}),a.jsxs("span",{className:"subordinate-badge-text",children:[s("labels.reportsTo"),": ",a.jsx("strong",{children:o.name})]}),a.jsx("button",{className:"subordinate-badge-goto",onClick:()=>O.selectAgent(t),title:s("unitPanel.goToBoss"),children:"→"}),a.jsx("button",{className:"subordinate-badge-unlink",onClick:c,title:s("unitPanel.unlinkFromBoss"),children:"✕"})]})}),QL=v.memo(function({agentId:e}){const{t}=Pe(["common"]),s=hn(),[i,o]=v.useState(!1),r=Array.from(s.agents.values()).filter(h=>h.isBoss===!0||h.class==="boss");if(r.length===0)return null;const c=Na.boss,u=h=>{const p=s.agents.get(h);if(!p)return;const m=p.subordinateIds||[];O.assignSubordinates(h,[...m,e]),o(!1)};return a.jsx("div",{className:"link-to-boss-section",children:i?a.jsxs("div",{className:"link-to-boss-dropdown",children:[a.jsxs("div",{className:"link-to-boss-header",children:[a.jsx("span",{children:t("unitPanel.selectBoss")}),a.jsx("button",{className:"link-to-boss-close",onClick:()=>o(!1),children:"✕"})]}),a.jsx("div",{className:"link-to-boss-list",children:r.map(h=>{var p;return a.jsxs("div",{className:"link-to-boss-item",onClick:()=>u(h.id),children:[a.jsx("span",{className:"link-to-boss-item-icon",style:{color:c.color},children:c.icon}),a.jsx("span",{className:"link-to-boss-item-name",children:h.name}),a.jsx("span",{className:"link-to-boss-item-count",children:t("unitPanel.agentsCount",{count:((p=h.subordinateIds)==null?void 0:p.length)||0})})]},h.id)})})]}):a.jsxs("button",{className:"link-to-boss-btn",onClick:()=>o(!0),children:[a.jsx("span",{className:"link-to-boss-icon",style:{color:c.color},children:c.icon}),a.jsx("span",{children:t("unitPanel.linkToBoss")})]})})}),JL=v.memo(function({agents:e}){const{t}=Pe(["common"]),s=ma(),i=e.reduce((r,c)=>r+c.tokensUsed,0),o=e.filter(r=>r.status==="working").length;return a.jsxs("div",{className:"unit-panel",children:[a.jsxs("div",{className:"unit-panel-header",children:[a.jsx("div",{className:"unit-class-icon",style:{background:"#4a9eff20"},children:"👥"}),a.jsxs("div",{children:[a.jsx("div",{className:"unit-name",children:t("multiAgent.agentsSelected",{count:e.length})}),a.jsx("div",{className:"unit-status",children:t("multiAgent.groupSelection")})]})]}),a.jsxs("div",{className:"unit-stats",children:[a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:t("multiAgent.totalTokens")}),a.jsx("div",{className:"unit-stat-value",children:O2(i)})]}),a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:t("multiAgent.working")}),a.jsx("div",{className:"unit-stat-value",children:o})]})]}),a.jsx("div",{style:{padding:"8px 0",maxHeight:100,overflowY:"auto"},children:e.map(r=>a.jsx(eP,{agent:r,customClasses:s},r.id))}),a.jsx("div",{className:"unit-actions",children:a.jsx("button",{className:"unit-action-btn",onClick:()=>O.deselectAll(),children:t("buttons.deselectAll")})})]})}),eP=v.memo(function({agent:e,customClasses:t}){const s=Hi(e.class,t);return a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"4px 0",fontSize:12},children:[a.jsx("span",{children:s.icon}),a.jsx("span",{style:{flex:1},children:e.name}),a.jsx("span",{style:{color:"var(--text-secondary)"},children:e.status})]})});function Cw({onFocusAgent:n,onKillAgent:e,onCallSubordinates:t,onOpenAreaExplorer:s}){const i=hn(),o=O.getSelectedAgents();if(i.selectedAgentIds.size===0)return a.jsx(kw,{onOpenAreaExplorer:s});if(i.selectedAgentIds.size===1){const r=o[0];return r?a.jsx(qL,{agent:r,onFocusAgent:n,onKillAgent:e,onCallSubordinates:t,onOpenAreaExplorer:s}):a.jsx(kw,{onOpenAreaExplorer:s})}return a.jsx(JL,{agents:o})}function tP(n,e){const t={};return(n[n.length-1]===""?[...n,""]:n).join((t.padRight?" ":"")+","+(t.padLeft===!1?"":" ")).trim()}const nP=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sP=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,aP={};function Aw(n,e){return(aP.jsx?sP:nP).test(n)}const iP=/[ \t\n\f\r]/g;function oP(n){return typeof n=="object"?n.type==="text"?Nw(n.value):!1:Nw(n)}function Nw(n){return n.replace(iP,"")===""}class xc{constructor(e,t,s){this.normal=t,this.property=e,s&&(this.space=s)}}xc.prototype.normal={};xc.prototype.property={};xc.prototype.space=void 0;function f1(n,e){const t={},s={};for(const i of n)Object.assign(t,i.property),Object.assign(s,i.normal);return new xc(t,s,e)}function _f(n){return n.toLowerCase()}class Cs{constructor(e,t){this.attribute=t,this.property=e}}Cs.prototype.attribute="";Cs.prototype.booleanish=!1;Cs.prototype.boolean=!1;Cs.prototype.commaOrSpaceSeparated=!1;Cs.prototype.commaSeparated=!1;Cs.prototype.defined=!1;Cs.prototype.mustUseProperty=!1;Cs.prototype.number=!1;Cs.prototype.overloadedBoolean=!1;Cs.prototype.property="";Cs.prototype.spaceSeparated=!1;Cs.prototype.space=void 0;let rP=0;const Rt=Lo(),Gn=Lo(),Df=Lo(),Ye=Lo(),yn=Lo(),Rr=Lo(),Ls=Lo();function Lo(){return 2**++rP}const Rf=Object.freeze(Object.defineProperty({__proto__:null,boolean:Rt,booleanish:Gn,commaOrSpaceSeparated:Ls,commaSeparated:Rr,number:Ye,overloadedBoolean:Df,spaceSeparated:yn},Symbol.toStringTag,{value:"Module"})),kp=Object.keys(Rf);class Ag extends Cs{constructor(e,t,s,i){let o=-1;if(super(e,t),Tw(this,"space",i),typeof s=="number")for(;++o<kp.length;){const r=kp[o];Tw(this,kp[o],(s&Rf[r])===Rf[r])}}}Ag.prototype.defined=!0;function Tw(n,e,t){t&&(n[e]=t)}function Fr(n){const e={},t={};for(const[s,i]of Object.entries(n.properties)){const o=new Ag(s,n.transform(n.attributes||{},s),i,n.space);n.mustUseProperty&&n.mustUseProperty.includes(s)&&(o.mustUseProperty=!0),e[s]=o,t[_f(s)]=s,t[_f(o.attribute)]=s}return new xc(e,t,n.space)}const g1=Fr({properties:{ariaActiveDescendant:null,ariaAtomic:Gn,ariaAutoComplete:null,ariaBusy:Gn,ariaChecked:Gn,ariaColCount:Ye,ariaColIndex:Ye,ariaColSpan:Ye,ariaControls:yn,ariaCurrent:null,ariaDescribedBy:yn,ariaDetails:null,ariaDisabled:Gn,ariaDropEffect:yn,ariaErrorMessage:null,ariaExpanded:Gn,ariaFlowTo:yn,ariaGrabbed:Gn,ariaHasPopup:null,ariaHidden:Gn,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:yn,ariaLevel:Ye,ariaLive:null,ariaModal:Gn,ariaMultiLine:Gn,ariaMultiSelectable:Gn,ariaOrientation:null,ariaOwns:yn,ariaPlaceholder:null,ariaPosInSet:Ye,ariaPressed:Gn,ariaReadOnly:Gn,ariaRelevant:null,ariaRequired:Gn,ariaRoleDescription:yn,ariaRowCount:Ye,ariaRowIndex:Ye,ariaRowSpan:Ye,ariaSelected:Gn,ariaSetSize:Ye,ariaSort:null,ariaValueMax:Ye,ariaValueMin:Ye,ariaValueNow:Ye,ariaValueText:null,role:null},transform(n,e){return e==="role"?e:"aria-"+e.slice(4).toLowerCase()}});function b1(n,e){return e in n?n[e]:e}function y1(n,e){return b1(n,e.toLowerCase())}const lP=Fr({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Rr,acceptCharset:yn,accessKey:yn,action:null,allow:null,allowFullScreen:Rt,allowPaymentRequest:Rt,allowUserMedia:Rt,alt:null,as:null,async:Rt,autoCapitalize:null,autoComplete:yn,autoFocus:Rt,autoPlay:Rt,blocking:yn,capture:null,charSet:null,checked:Rt,cite:null,className:yn,cols:Ye,colSpan:null,content:null,contentEditable:Gn,controls:Rt,controlsList:yn,coords:Ye|Rr,crossOrigin:null,data:null,dateTime:null,decoding:null,default:Rt,defer:Rt,dir:null,dirName:null,disabled:Rt,download:Df,draggable:Gn,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:Rt,formTarget:null,headers:yn,height:Ye,hidden:Df,high:Ye,href:null,hrefLang:null,htmlFor:yn,httpEquiv:yn,id:null,imageSizes:null,imageSrcSet:null,inert:Rt,inputMode:null,integrity:null,is:null,isMap:Rt,itemId:null,itemProp:yn,itemRef:yn,itemScope:Rt,itemType:yn,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:Rt,low:Ye,manifest:null,max:null,maxLength:Ye,media:null,method:null,min:null,minLength:Ye,multiple:Rt,muted:Rt,name:null,nonce:null,noModule:Rt,noValidate:Rt,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:Rt,optimum:Ye,pattern:null,ping:yn,placeholder:null,playsInline:Rt,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:Rt,referrerPolicy:null,rel:yn,required:Rt,reversed:Rt,rows:Ye,rowSpan:Ye,sandbox:yn,scope:null,scoped:Rt,seamless:Rt,selected:Rt,shadowRootClonable:Rt,shadowRootDelegatesFocus:Rt,shadowRootMode:null,shape:null,size:Ye,sizes:null,slot:null,span:Ye,spellCheck:Gn,src:null,srcDoc:null,srcLang:null,srcSet:null,start:Ye,step:null,style:null,tabIndex:Ye,target:null,title:null,translate:null,type:null,typeMustMatch:Rt,useMap:null,value:Gn,width:Ye,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:yn,axis:null,background:null,bgColor:null,border:Ye,borderColor:null,bottomMargin:Ye,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:Rt,declare:Rt,event:null,face:null,frame:null,frameBorder:null,hSpace:Ye,leftMargin:Ye,link:null,longDesc:null,lowSrc:null,marginHeight:Ye,marginWidth:Ye,noResize:Rt,noHref:Rt,noShade:Rt,noWrap:Rt,object:null,profile:null,prompt:null,rev:null,rightMargin:Ye,rules:null,scheme:null,scrolling:Gn,standby:null,summary:null,text:null,topMargin:Ye,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Ye,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:Rt,disableRemotePlayback:Rt,prefix:null,property:null,results:Ye,security:null,unselectable:null},space:"html",transform:y1}),cP=Fr({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Ls,accentHeight:Ye,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Ye,amplitude:Ye,arabicForm:null,ascent:Ye,attributeName:null,attributeType:null,azimuth:Ye,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Ye,by:null,calcMode:null,capHeight:Ye,className:yn,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Ye,diffuseConstant:Ye,direction:null,display:null,dur:null,divisor:Ye,dominantBaseline:null,download:Rt,dx:null,dy:null,edgeMode:null,editable:null,elevation:Ye,enableBackground:null,end:null,event:null,exponent:Ye,externalResourcesRequired:null,fill:null,fillOpacity:Ye,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Rr,g2:Rr,glyphName:Rr,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Ye,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Ye,horizOriginX:Ye,horizOriginY:Ye,id:null,ideographic:Ye,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Ye,k:Ye,k1:Ye,k2:Ye,k3:Ye,k4:Ye,kernelMatrix:Ls,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Ye,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Ye,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Ye,overlineThickness:Ye,paintOrder:null,panose1:null,path:null,pathLength:Ye,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:yn,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Ye,pointsAtY:Ye,pointsAtZ:Ye,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Ls,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Ls,rev:Ls,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Ls,requiredFeatures:Ls,requiredFonts:Ls,requiredFormats:Ls,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Ye,specularExponent:Ye,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Ye,strikethroughThickness:Ye,string:null,stroke:null,strokeDashArray:Ls,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Ye,strokeOpacity:Ye,strokeWidth:null,style:null,surfaceScale:Ye,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Ls,tabIndex:Ye,tableValues:null,target:null,targetX:Ye,targetY:Ye,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Ls,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:Ye,underlineThickness:Ye,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Ye,values:null,vAlphabetic:Ye,vMathematical:Ye,vectorEffect:null,vHanging:Ye,vIdeographic:Ye,version:null,vertAdvY:Ye,vertOriginX:Ye,vertOriginY:Ye,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Ye,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:b1}),x1=Fr({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(n,e){return"xlink:"+e.slice(5).toLowerCase()}}),v1=Fr({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:y1}),w1=Fr({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(n,e){return"xml:"+e.slice(3).toLowerCase()}}),uP={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"},dP=/[A-Z]/g,Mw=/-[a-z]/g,hP=/^data[-\w.:]+$/i;function mP(n,e){const t=_f(e);let s=e,i=Cs;if(t in n.normal)return n.property[n.normal[t]];if(t.length>4&&t.slice(0,4)==="data"&&hP.test(e)){if(e.charAt(4)==="-"){const o=e.slice(5).replace(Mw,fP);s="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=e.slice(4);if(!Mw.test(o)){let r=o.replace(dP,pP);r.charAt(0)!=="-"&&(r="-"+r),e="data"+r}}i=Ag}return new i(s,e)}function pP(n){return"-"+n.toLowerCase()}function fP(n){return n.charAt(1).toUpperCase()}const gP=f1([g1,lP,x1,v1,w1],"html"),Ng=f1([g1,cP,x1,v1,w1],"svg");function bP(n){return n.join(" ").trim()}var br={},Sp,Ew;function yP(){if(Ew)return Sp;Ew=1;var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,t=/^\s*/,s=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,o=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,r=/^[;\s]*/,c=/^\s+|\s+$/g,u=`
|
|
152
152
|
`,h="/",p="*",m="",g="comment",b="declaration";function x(k,S){if(typeof k!="string")throw new TypeError("First argument must be a string");if(!k)return[];S=S||{};var j=1,A=1;function T(G){var I=G.match(e);I&&(j+=I.length);var q=G.lastIndexOf(u);A=~q?G.length-q:A+G.length}function D(){var G={line:j,column:A};return function(I){return I.position=new M(G),R(),I}}function M(G){this.start=G,this.end={line:j,column:A},this.source=S.source}M.prototype.content=k;function F(G){var I=new Error(S.source+":"+j+":"+A+": "+G);if(I.reason=G,I.filename=S.source,I.line=j,I.column=A,I.source=k,!S.silent)throw I}function E(G){var I=G.exec(k);if(I){var q=I[0];return T(q),k=k.slice(q.length),I}}function R(){E(t)}function _(G){var I;for(G=G||[];I=L();)I!==!1&&G.push(I);return G}function L(){var G=D();if(!(h!=k.charAt(0)||p!=k.charAt(1))){for(var I=2;m!=k.charAt(I)&&(p!=k.charAt(I)||h!=k.charAt(I+1));)++I;if(I+=2,m===k.charAt(I-1))return F("End of comment missing");var q=k.slice(2,I-2);return A+=2,T(q),k=k.slice(I),A+=2,G({type:g,comment:q})}}function z(){var G=D(),I=E(s);if(I){if(L(),!E(i))return F("property missing ':'");var q=E(o),H=G({type:b,property:w(I[0].replace(n,m)),value:q?w(q[0].replace(n,m)):m});return E(r),H}}function $(){var G=[];_(G);for(var I;I=z();)I!==!1&&(G.push(I),_(G));return G}return R(),$()}function w(k){return k?k.replace(c,m):m}return Sp=x,Sp}var _w;function xP(){if(_w)return br;_w=1;var n=br&&br.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(br,"__esModule",{value:!0}),br.default=t;const e=n(yP());function t(s,i){let o=null;if(!s||typeof s!="string")return o;const r=(0,e.default)(s),c=typeof i=="function";return r.forEach(u=>{if(u.type!=="declaration")return;const{property:h,value:p}=u;c?i(h,p,u):p&&(o=o||{},o[h]=p)}),o}return br}var $l={},Dw;function vP(){if(Dw)return $l;Dw=1,Object.defineProperty($l,"__esModule",{value:!0}),$l.camelCase=void 0;var n=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,t=/^[^-]+$/,s=/^-(webkit|moz|ms|o|khtml)-/,i=/^-(ms)-/,o=function(h){return!h||t.test(h)||n.test(h)},r=function(h,p){return p.toUpperCase()},c=function(h,p){return"".concat(p,"-")},u=function(h,p){return p===void 0&&(p={}),o(h)?h:(h=h.toLowerCase(),p.reactCompat?h=h.replace(i,c):h=h.replace(s,c),h.replace(e,r))};return $l.camelCase=u,$l}var Hl,Rw;function wP(){if(Rw)return Hl;Rw=1;var n=Hl&&Hl.__importDefault||function(i){return i&&i.__esModule?i:{default:i}},e=n(xP()),t=vP();function s(i,o){var r={};return!i||typeof i!="string"||(0,e.default)(i,function(c,u){c&&u&&(r[(0,t.camelCase)(c,o)]=u)}),r}return s.default=s,Hl=s,Hl}var kP=wP();const SP=Ad(kP),k1=S1("end"),Tg=S1("start");function S1(n){return e;function e(t){const s=t&&t.position&&t.position[n]||{};if(typeof s.line=="number"&&s.line>0&&typeof s.column=="number"&&s.column>0)return{line:s.line,column:s.column,offset:typeof s.offset=="number"&&s.offset>-1?s.offset:void 0}}}function jP(n){const e=Tg(n),t=k1(n);if(e&&t)return{start:e,end:t}}function tc(n){return!n||typeof n!="object"?"":"position"in n||"type"in n?Lw(n.position):"start"in n||"end"in n?Lw(n):"line"in n||"column"in n?Lf(n):""}function Lf(n){return Pw(n&&n.line)+":"+Pw(n&&n.column)}function Lw(n){return Lf(n&&n.start)+"-"+Lf(n&&n.end)}function Pw(n){return n&&typeof n=="number"?n:1}class ls extends Error{constructor(e,t,s){super(),typeof t=="string"&&(s=t,t=void 0);let i="",o={},r=!1;if(t&&("line"in t&&"column"in t?o={place:t}:"start"in t&&"end"in t?o={place:t}:"type"in t?o={ancestors:[t],place:t.position}:o={...t}),typeof e=="string"?i=e:!o.cause&&e&&(r=!0,i=e.message,o.cause=e),!o.ruleId&&!o.source&&typeof s=="string"){const u=s.indexOf(":");u===-1?o.ruleId=s:(o.source=s.slice(0,u),o.ruleId=s.slice(u+1))}if(!o.place&&o.ancestors&&o.ancestors){const u=o.ancestors[o.ancestors.length-1];u&&(o.place=u.position)}const c=o.place&&"start"in o.place?o.place.start:o.place;this.ancestors=o.ancestors||void 0,this.cause=o.cause||void 0,this.column=c?c.column:void 0,this.fatal=void 0,this.file="",this.message=i,this.line=c?c.line:void 0,this.name=tc(o.place)||"1:1",this.place=o.place||void 0,this.reason=this.message,this.ruleId=o.ruleId||void 0,this.source=o.source||void 0,this.stack=r&&o.cause&&typeof o.cause.stack=="string"?o.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}ls.prototype.file="";ls.prototype.name="";ls.prototype.reason="";ls.prototype.message="";ls.prototype.stack="";ls.prototype.column=void 0;ls.prototype.line=void 0;ls.prototype.ancestors=void 0;ls.prototype.cause=void 0;ls.prototype.fatal=void 0;ls.prototype.place=void 0;ls.prototype.ruleId=void 0;ls.prototype.source=void 0;const Mg={}.hasOwnProperty,CP=new Map,AP=/[A-Z]/g,NP=new Set(["table","tbody","thead","tfoot","tr"]),TP=new Set(["td","th"]),j1="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function MP(n,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const t=e.filePath||void 0;let s;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");s=OP(t,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");s=BP(t,e.jsx,e.jsxs)}const i={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:s,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:t,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?Ng:gP,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},o=C1(i,n,void 0);return o&&typeof o!="string"?o:i.create(n,i.Fragment,{children:o||void 0},void 0)}function C1(n,e,t){if(e.type==="element")return EP(n,e,t);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return _P(n,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return RP(n,e,t);if(e.type==="mdxjsEsm")return DP(n,e);if(e.type==="root")return LP(n,e,t);if(e.type==="text")return PP(n,e)}function EP(n,e,t){const s=n.schema;let i=s;e.tagName.toLowerCase()==="svg"&&s.space==="html"&&(i=Ng,n.schema=i),n.ancestors.push(e);const o=N1(n,e.tagName,!1),r=IP(n,e);let c=_g(n,e);return NP.has(e.tagName)&&(c=c.filter(function(u){return typeof u=="string"?!oP(u):!0})),A1(n,r,o,e),Eg(r,c),n.ancestors.pop(),n.schema=s,n.create(e,o,r,t)}function _P(n,e){if(e.data&&e.data.estree&&n.evaluater){const s=e.data.estree.body[0];return s.type,n.evaluater.evaluateExpression(s.expression)}pc(n,e.position)}function DP(n,e){if(e.data&&e.data.estree&&n.evaluater)return n.evaluater.evaluateProgram(e.data.estree);pc(n,e.position)}function RP(n,e,t){const s=n.schema;let i=s;e.name==="svg"&&s.space==="html"&&(i=Ng,n.schema=i),n.ancestors.push(e);const o=e.name===null?n.Fragment:N1(n,e.name,!0),r=zP(n,e),c=_g(n,e);return A1(n,r,o,e),Eg(r,c),n.ancestors.pop(),n.schema=s,n.create(e,o,r,t)}function LP(n,e,t){const s={};return Eg(s,_g(n,e)),n.create(e,n.Fragment,s,t)}function PP(n,e){return e.value}function A1(n,e,t,s){typeof t!="string"&&t!==n.Fragment&&n.passNode&&(e.node=s)}function Eg(n,e){if(e.length>0){const t=e.length>1?e:e[0];t&&(n.children=t)}}function BP(n,e,t){return s;function s(i,o,r,c){const h=Array.isArray(r.children)?t:e;return c?h(o,r,c):h(o,r)}}function OP(n,e){return t;function t(s,i,o,r){const c=Array.isArray(o.children),u=Tg(s);return e(i,o,r,c,{columnNumber:u?u.column-1:void 0,fileName:n,lineNumber:u?u.line:void 0},void 0)}}function IP(n,e){const t={};let s,i;for(i in e.properties)if(i!=="children"&&Mg.call(e.properties,i)){const o=FP(n,i,e.properties[i]);if(o){const[r,c]=o;n.tableCellAlignToStyle&&r==="align"&&typeof c=="string"&&TP.has(e.tagName)?s=c:t[r]=c}}if(s){const o=t.style||(t.style={});o[n.stylePropertyNameCase==="css"?"text-align":"textAlign"]=s}return t}function zP(n,e){const t={};for(const s of e.attributes)if(s.type==="mdxJsxExpressionAttribute")if(s.data&&s.data.estree&&n.evaluater){const o=s.data.estree.body[0];o.type;const r=o.expression;r.type;const c=r.properties[0];c.type,Object.assign(t,n.evaluater.evaluateExpression(c.argument))}else pc(n,e.position);else{const i=s.name;let o;if(s.value&&typeof s.value=="object")if(s.value.data&&s.value.data.estree&&n.evaluater){const c=s.value.data.estree.body[0];c.type,o=n.evaluater.evaluateExpression(c.expression)}else pc(n,e.position);else o=s.value===null?!0:s.value;t[i]=o}return t}function _g(n,e){const t=[];let s=-1;const i=n.passKeys?new Map:CP;for(;++s<e.children.length;){const o=e.children[s];let r;if(n.passKeys){const u=o.type==="element"?o.tagName:o.type==="mdxJsxFlowElement"||o.type==="mdxJsxTextElement"?o.name:void 0;if(u){const h=i.get(u)||0;r=u+"-"+h,i.set(u,h+1)}}const c=C1(n,o,r);c!==void 0&&t.push(c)}return t}function FP(n,e,t){const s=mP(n.schema,e);if(!(t==null||typeof t=="number"&&Number.isNaN(t))){if(Array.isArray(t)&&(t=s.commaSeparated?tP(t):bP(t)),s.property==="style"){let i=typeof t=="object"?t:$P(n,String(t));return n.stylePropertyNameCase==="css"&&(i=HP(i)),["style",i]}return[n.elementAttributeNameCase==="react"&&s.space?uP[s.property]||s.property:s.attribute,t]}}function $P(n,e){try{return SP(e,{reactCompat:!0})}catch(t){if(n.ignoreInvalidStyle)return{};const s=t,i=new ls("Cannot parse `style` attribute",{ancestors:n.ancestors,cause:s,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw i.file=n.filePath||void 0,i.url=j1+"#cannot-parse-style-attribute",i}}function N1(n,e,t){let s;if(!t)s={type:"Literal",value:e};else if(e.includes(".")){const i=e.split(".");let o=-1,r;for(;++o<i.length;){const c=Aw(i[o])?{type:"Identifier",name:i[o]}:{type:"Literal",value:i[o]};r=r?{type:"MemberExpression",object:r,property:c,computed:!!(o&&c.type==="Literal"),optional:!1}:c}s=r}else s=Aw(e)&&!/^[a-z]/.test(e)?{type:"Identifier",name:e}:{type:"Literal",value:e};if(s.type==="Literal"){const i=s.value;return Mg.call(n.components,i)?n.components[i]:i}if(n.evaluater)return n.evaluater.evaluateExpression(s);pc(n)}function pc(n,e){const t=new ls("Cannot handle MDX estrees without `createEvaluater`",{ancestors:n.ancestors,place:e,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw t.file=n.filePath||void 0,t.url=j1+"#cannot-handle-mdx-estrees-without-createevaluater",t}function HP(n){const e={};let t;for(t in n)Mg.call(n,t)&&(e[UP(t)]=n[t]);return e}function UP(n){let e=n.replace(AP,GP);return e.slice(0,3)==="ms-"&&(e="-"+e),e}function GP(n){return"-"+n.toLowerCase()}const jp={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]},qP={};function Dg(n,e){const t=qP,s=typeof t.includeImageAlt=="boolean"?t.includeImageAlt:!0,i=typeof t.includeHtml=="boolean"?t.includeHtml:!0;return T1(n,s,i)}function T1(n,e,t){if(WP(n)){if("value"in n)return n.type==="html"&&!t?"":n.value;if(e&&"alt"in n&&n.alt)return n.alt;if("children"in n)return Bw(n.children,e,t)}return Array.isArray(n)?Bw(n,e,t):""}function Bw(n,e,t){const s=[];let i=-1;for(;++i<n.length;)s[i]=T1(n[i],e,t);return s.join("")}function WP(n){return!!(n&&typeof n=="object")}const Ow=document.createElement("i");function Rg(n){const e="&"+n+";";Ow.innerHTML=e;const t=Ow.textContent;return t.charCodeAt(t.length-1)===59&&n!=="semi"||t===e?!1:t}function Os(n,e,t,s){const i=n.length;let o=0,r;if(e<0?e=-e>i?0:i+e:e=e>i?i:e,t=t>0?t:0,s.length<1e4)r=Array.from(s),r.unshift(e,t),n.splice(...r);else for(t&&n.splice(e,t);o<s.length;)r=s.slice(o,o+1e4),r.unshift(e,0),n.splice(...r),o+=1e4,e+=1e4}function Xs(n,e){return n.length>0?(Os(n,n.length,0,e),n):e}const Iw={}.hasOwnProperty;function M1(n){const e={};let t=-1;for(;++t<n.length;)VP(e,n[t]);return e}function VP(n,e){let t;for(t in e){const i=(Iw.call(n,t)?n[t]:void 0)||(n[t]={}),o=e[t];let r;if(o)for(r in o){Iw.call(i,r)||(i[r]=[]);const c=o[r];KP(i[r],Array.isArray(c)?c:c?[c]:[])}}}function KP(n,e){let t=-1;const s=[];for(;++t<e.length;)(e[t].add==="after"?n:s).push(e[t]);Os(n,0,0,s)}function E1(n,e){const t=Number.parseInt(n,e);return t<9||t===11||t>13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||(t&65535)===65535||(t&65535)===65534||t>1114111?"�":String.fromCodePoint(t)}function da(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ms=Gi(/[A-Za-z]/),os=Gi(/[\dA-Za-z]/),XP=Gi(/[#-'*+\--9=?A-Z^-~]/);function pd(n){return n!==null&&(n<32||n===127)}const Pf=Gi(/\d/),YP=Gi(/[\dA-Fa-f]/),ZP=Gi(/[!-/:-@[-`{-~]/);function bt(n){return n!==null&&n<-2}function gn(n){return n!==null&&(n<0||n===32)}function Ht(n){return n===-2||n===-1||n===32}const Id=Gi(new RegExp("\\p{P}|\\p{S}","u")),Eo=Gi(/\s/);function Gi(n){return e;function e(t){return t!==null&&t>-1&&n.test(String.fromCharCode(t))}}function $r(n){const e=[];let t=-1,s=0,i=0;for(;++t<n.length;){const o=n.charCodeAt(t);let r="";if(o===37&&os(n.charCodeAt(t+1))&&os(n.charCodeAt(t+2)))i=2;else if(o<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(o))||(r=String.fromCharCode(o));else if(o>55295&&o<57344){const c=n.charCodeAt(t+1);o<56320&&c>56319&&c<57344?(r=String.fromCharCode(o,c),i=1):r="�"}else r=String.fromCharCode(o);r&&(e.push(n.slice(s,t),encodeURIComponent(r)),s=t+i+1,r=""),i&&(t+=i,i=0)}return e.join("")+n.slice(s)}function Kt(n,e,t,s){const i=s?s-1:Number.POSITIVE_INFINITY;let o=0;return r;function r(u){return Ht(u)?(n.enter(t),c(u)):e(u)}function c(u){return Ht(u)&&o++<i?(n.consume(u),c):(n.exit(t),e(u))}}const QP={tokenize:JP};function JP(n){const e=n.attempt(this.parser.constructs.contentInitial,s,i);let t;return e;function s(c){if(c===null){n.consume(c);return}return n.enter("lineEnding"),n.consume(c),n.exit("lineEnding"),Kt(n,e,"linePrefix")}function i(c){return n.enter("paragraph"),o(c)}function o(c){const u=n.enter("chunkText",{contentType:"text",previous:t});return t&&(t.next=u),t=u,r(c)}function r(c){if(c===null){n.exit("chunkText"),n.exit("paragraph"),n.consume(c);return}return bt(c)?(n.consume(c),n.exit("chunkText"),o):(n.consume(c),r)}}const eB={tokenize:tB},zw={tokenize:nB};function tB(n){const e=this,t=[];let s=0,i,o,r;return c;function c(A){if(s<t.length){const T=t[s];return e.containerState=T[1],n.attempt(T[0].continuation,u,h)(A)}return h(A)}function u(A){if(s++,e.containerState._closeFlow){e.containerState._closeFlow=void 0,i&&j();const T=e.events.length;let D=T,M;for(;D--;)if(e.events[D][0]==="exit"&&e.events[D][1].type==="chunkFlow"){M=e.events[D][1].end;break}S(s);let F=T;for(;F<e.events.length;)e.events[F][1].end={...M},F++;return Os(e.events,D+1,0,e.events.slice(T)),e.events.length=F,h(A)}return c(A)}function h(A){if(s===t.length){if(!i)return g(A);if(i.currentConstruct&&i.currentConstruct.concrete)return x(A);e.interrupt=!!(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return e.containerState={},n.check(zw,p,m)(A)}function p(A){return i&&j(),S(s),g(A)}function m(A){return e.parser.lazy[e.now().line]=s!==t.length,r=e.now().offset,x(A)}function g(A){return e.containerState={},n.attempt(zw,b,x)(A)}function b(A){return s++,t.push([e.currentConstruct,e.containerState]),g(A)}function x(A){if(A===null){i&&j(),S(0),n.consume(A);return}return i=i||e.parser.flow(e.now()),n.enter("chunkFlow",{_tokenizer:i,contentType:"flow",previous:o}),w(A)}function w(A){if(A===null){k(n.exit("chunkFlow"),!0),S(0),n.consume(A);return}return bt(A)?(n.consume(A),k(n.exit("chunkFlow")),s=0,e.interrupt=void 0,c):(n.consume(A),w)}function k(A,T){const D=e.sliceStream(A);if(T&&D.push(null),A.previous=o,o&&(o.next=A),o=A,i.defineSkip(A.start),i.write(D),e.parser.lazy[A.start.line]){let M=i.events.length;for(;M--;)if(i.events[M][1].start.offset<r&&(!i.events[M][1].end||i.events[M][1].end.offset>r))return;const F=e.events.length;let E=F,R,_;for(;E--;)if(e.events[E][0]==="exit"&&e.events[E][1].type==="chunkFlow"){if(R){_=e.events[E][1].end;break}R=!0}for(S(s),M=F;M<e.events.length;)e.events[M][1].end={..._},M++;Os(e.events,E+1,0,e.events.slice(F)),e.events.length=M}}function S(A){let T=t.length;for(;T-- >A;){const D=t[T];e.containerState=D[1],D[0].exit.call(e,n)}t.length=A}function j(){i.write([null]),o=void 0,i=void 0,e.containerState._closeFlow=void 0}}function nB(n,e,t){return Kt(n,n.attempt(this.parser.constructs.document,e,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Or(n){if(n===null||gn(n)||Eo(n))return 1;if(Id(n))return 2}function zd(n,e,t){const s=[];let i=-1;for(;++i<n.length;){const o=n[i].resolveAll;o&&!s.includes(o)&&(e=o(e,t),s.push(o))}return e}const Bf={name:"attention",resolveAll:sB,tokenize:aB};function sB(n,e){let t=-1,s,i,o,r,c,u,h,p;for(;++t<n.length;)if(n[t][0]==="enter"&&n[t][1].type==="attentionSequence"&&n[t][1]._close){for(s=t;s--;)if(n[s][0]==="exit"&&n[s][1].type==="attentionSequence"&&n[s][1]._open&&e.sliceSerialize(n[s][1]).charCodeAt(0)===e.sliceSerialize(n[t][1]).charCodeAt(0)){if((n[s][1]._close||n[t][1]._open)&&(n[t][1].end.offset-n[t][1].start.offset)%3&&!((n[s][1].end.offset-n[s][1].start.offset+n[t][1].end.offset-n[t][1].start.offset)%3))continue;u=n[s][1].end.offset-n[s][1].start.offset>1&&n[t][1].end.offset-n[t][1].start.offset>1?2:1;const m={...n[s][1].end},g={...n[t][1].start};Fw(m,-u),Fw(g,u),r={type:u>1?"strongSequence":"emphasisSequence",start:m,end:{...n[s][1].end}},c={type:u>1?"strongSequence":"emphasisSequence",start:{...n[t][1].start},end:g},o={type:u>1?"strongText":"emphasisText",start:{...n[s][1].end},end:{...n[t][1].start}},i={type:u>1?"strong":"emphasis",start:{...r.start},end:{...c.end}},n[s][1].end={...r.start},n[t][1].start={...c.end},h=[],n[s][1].end.offset-n[s][1].start.offset&&(h=Xs(h,[["enter",n[s][1],e],["exit",n[s][1],e]])),h=Xs(h,[["enter",i,e],["enter",r,e],["exit",r,e],["enter",o,e]]),h=Xs(h,zd(e.parser.constructs.insideSpan.null,n.slice(s+1,t),e)),h=Xs(h,[["exit",o,e],["enter",c,e],["exit",c,e],["exit",i,e]]),n[t][1].end.offset-n[t][1].start.offset?(p=2,h=Xs(h,[["enter",n[t][1],e],["exit",n[t][1],e]])):p=0,Os(n,s-1,t-s+3,h),t=s+h.length-p-2;break}}for(t=-1;++t<n.length;)n[t][1].type==="attentionSequence"&&(n[t][1].type="data");return n}function aB(n,e){const t=this.parser.constructs.attentionMarkers.null,s=this.previous,i=Or(s);let o;return r;function r(u){return o=u,n.enter("attentionSequence"),c(u)}function c(u){if(u===o)return n.consume(u),c;const h=n.exit("attentionSequence"),p=Or(u),m=!p||p===2&&i||t.includes(u),g=!i||i===2&&p||t.includes(s);return h._open=!!(o===42?m:m&&(i||!g)),h._close=!!(o===42?g:g&&(p||!m)),e(u)}}function Fw(n,e){n.column+=e,n.offset+=e,n._bufferIndex+=e}const iB={name:"autolink",tokenize:oB};function oB(n,e,t){let s=0;return i;function i(b){return n.enter("autolink"),n.enter("autolinkMarker"),n.consume(b),n.exit("autolinkMarker"),n.enter("autolinkProtocol"),o}function o(b){return ms(b)?(n.consume(b),r):b===64?t(b):h(b)}function r(b){return b===43||b===45||b===46||os(b)?(s=1,c(b)):h(b)}function c(b){return b===58?(n.consume(b),s=0,u):(b===43||b===45||b===46||os(b))&&s++<32?(n.consume(b),c):(s=0,h(b))}function u(b){return b===62?(n.exit("autolinkProtocol"),n.enter("autolinkMarker"),n.consume(b),n.exit("autolinkMarker"),n.exit("autolink"),e):b===null||b===32||b===60||pd(b)?t(b):(n.consume(b),u)}function h(b){return b===64?(n.consume(b),p):XP(b)?(n.consume(b),h):t(b)}function p(b){return os(b)?m(b):t(b)}function m(b){return b===46?(n.consume(b),s=0,p):b===62?(n.exit("autolinkProtocol").type="autolinkEmail",n.enter("autolinkMarker"),n.consume(b),n.exit("autolinkMarker"),n.exit("autolink"),e):g(b)}function g(b){if((b===45||os(b))&&s++<63){const x=b===45?g:m;return n.consume(b),x}return t(b)}}const vc={partial:!0,tokenize:rB};function rB(n,e,t){return s;function s(o){return Ht(o)?Kt(n,i,"linePrefix")(o):i(o)}function i(o){return o===null||bt(o)?e(o):t(o)}}const _1={continuation:{tokenize:cB},exit:uB,name:"blockQuote",tokenize:lB};function lB(n,e,t){const s=this;return i;function i(r){if(r===62){const c=s.containerState;return c.open||(n.enter("blockQuote",{_container:!0}),c.open=!0),n.enter("blockQuotePrefix"),n.enter("blockQuoteMarker"),n.consume(r),n.exit("blockQuoteMarker"),o}return t(r)}function o(r){return Ht(r)?(n.enter("blockQuotePrefixWhitespace"),n.consume(r),n.exit("blockQuotePrefixWhitespace"),n.exit("blockQuotePrefix"),e):(n.exit("blockQuotePrefix"),e(r))}}function cB(n,e,t){const s=this;return i;function i(r){return Ht(r)?Kt(n,o,"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(r):o(r)}function o(r){return n.attempt(_1,e,t)(r)}}function uB(n){n.exit("blockQuote")}const D1={name:"characterEscape",tokenize:dB};function dB(n,e,t){return s;function s(o){return n.enter("characterEscape"),n.enter("escapeMarker"),n.consume(o),n.exit("escapeMarker"),i}function i(o){return ZP(o)?(n.enter("characterEscapeValue"),n.consume(o),n.exit("characterEscapeValue"),n.exit("characterEscape"),e):t(o)}}const R1={name:"characterReference",tokenize:hB};function hB(n,e,t){const s=this;let i=0,o,r;return c;function c(m){return n.enter("characterReference"),n.enter("characterReferenceMarker"),n.consume(m),n.exit("characterReferenceMarker"),u}function u(m){return m===35?(n.enter("characterReferenceMarkerNumeric"),n.consume(m),n.exit("characterReferenceMarkerNumeric"),h):(n.enter("characterReferenceValue"),o=31,r=os,p(m))}function h(m){return m===88||m===120?(n.enter("characterReferenceMarkerHexadecimal"),n.consume(m),n.exit("characterReferenceMarkerHexadecimal"),n.enter("characterReferenceValue"),o=6,r=YP,p):(n.enter("characterReferenceValue"),o=7,r=Pf,p(m))}function p(m){if(m===59&&i){const g=n.exit("characterReferenceValue");return r===os&&!Rg(s.sliceSerialize(g))?t(m):(n.enter("characterReferenceMarker"),n.consume(m),n.exit("characterReferenceMarker"),n.exit("characterReference"),e)}return r(m)&&i++<o?(n.consume(m),p):t(m)}}const $w={partial:!0,tokenize:pB},Hw={concrete:!0,name:"codeFenced",tokenize:mB};function mB(n,e,t){const s=this,i={partial:!0,tokenize:D};let o=0,r=0,c;return u;function u(M){return h(M)}function h(M){const F=s.events[s.events.length-1];return o=F&&F[1].type==="linePrefix"?F[2].sliceSerialize(F[1],!0).length:0,c=M,n.enter("codeFenced"),n.enter("codeFencedFence"),n.enter("codeFencedFenceSequence"),p(M)}function p(M){return M===c?(r++,n.consume(M),p):r<3?t(M):(n.exit("codeFencedFenceSequence"),Ht(M)?Kt(n,m,"whitespace")(M):m(M))}function m(M){return M===null||bt(M)?(n.exit("codeFencedFence"),s.interrupt?e(M):n.check($w,w,T)(M)):(n.enter("codeFencedFenceInfo"),n.enter("chunkString",{contentType:"string"}),g(M))}function g(M){return M===null||bt(M)?(n.exit("chunkString"),n.exit("codeFencedFenceInfo"),m(M)):Ht(M)?(n.exit("chunkString"),n.exit("codeFencedFenceInfo"),Kt(n,b,"whitespace")(M)):M===96&&M===c?t(M):(n.consume(M),g)}function b(M){return M===null||bt(M)?m(M):(n.enter("codeFencedFenceMeta"),n.enter("chunkString",{contentType:"string"}),x(M))}function x(M){return M===null||bt(M)?(n.exit("chunkString"),n.exit("codeFencedFenceMeta"),m(M)):M===96&&M===c?t(M):(n.consume(M),x)}function w(M){return n.attempt(i,T,k)(M)}function k(M){return n.enter("lineEnding"),n.consume(M),n.exit("lineEnding"),S}function S(M){return o>0&&Ht(M)?Kt(n,j,"linePrefix",o+1)(M):j(M)}function j(M){return M===null||bt(M)?n.check($w,w,T)(M):(n.enter("codeFlowValue"),A(M))}function A(M){return M===null||bt(M)?(n.exit("codeFlowValue"),j(M)):(n.consume(M),A)}function T(M){return n.exit("codeFenced"),e(M)}function D(M,F,E){let R=0;return _;function _(I){return M.enter("lineEnding"),M.consume(I),M.exit("lineEnding"),L}function L(I){return M.enter("codeFencedFence"),Ht(I)?Kt(M,z,"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(I):z(I)}function z(I){return I===c?(M.enter("codeFencedFenceSequence"),$(I)):E(I)}function $(I){return I===c?(R++,M.consume(I),$):R>=r?(M.exit("codeFencedFenceSequence"),Ht(I)?Kt(M,G,"whitespace")(I):G(I)):E(I)}function G(I){return I===null||bt(I)?(M.exit("codeFencedFence"),F(I)):E(I)}}}function pB(n,e,t){const s=this;return i;function i(r){return r===null?t(r):(n.enter("lineEnding"),n.consume(r),n.exit("lineEnding"),o)}function o(r){return s.parser.lazy[s.now().line]?t(r):e(r)}}const Cp={name:"codeIndented",tokenize:gB},fB={partial:!0,tokenize:bB};function gB(n,e,t){const s=this;return i;function i(h){return n.enter("codeIndented"),Kt(n,o,"linePrefix",5)(h)}function o(h){const p=s.events[s.events.length-1];return p&&p[1].type==="linePrefix"&&p[2].sliceSerialize(p[1],!0).length>=4?r(h):t(h)}function r(h){return h===null?u(h):bt(h)?n.attempt(fB,r,u)(h):(n.enter("codeFlowValue"),c(h))}function c(h){return h===null||bt(h)?(n.exit("codeFlowValue"),r(h)):(n.consume(h),c)}function u(h){return n.exit("codeIndented"),e(h)}}function bB(n,e,t){const s=this;return i;function i(r){return s.parser.lazy[s.now().line]?t(r):bt(r)?(n.enter("lineEnding"),n.consume(r),n.exit("lineEnding"),i):Kt(n,o,"linePrefix",5)(r)}function o(r){const c=s.events[s.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?e(r):bt(r)?i(r):t(r)}}const yB={name:"codeText",previous:vB,resolve:xB,tokenize:wB};function xB(n){let e=n.length-4,t=3,s,i;if((n[t][1].type==="lineEnding"||n[t][1].type==="space")&&(n[e][1].type==="lineEnding"||n[e][1].type==="space")){for(s=t;++s<e;)if(n[s][1].type==="codeTextData"){n[t][1].type="codeTextPadding",n[e][1].type="codeTextPadding",t+=2,e-=2;break}}for(s=t-1,e++;++s<=e;)i===void 0?s!==e&&n[s][1].type!=="lineEnding"&&(i=s):(s===e||n[s][1].type==="lineEnding")&&(n[i][1].type="codeTextData",s!==i+2&&(n[i][1].end=n[s-1][1].end,n.splice(i+2,s-i-2),e-=s-i-2,s=i+2),i=void 0);return n}function vB(n){return n!==96||this.events[this.events.length-1][1].type==="characterEscape"}function wB(n,e,t){let s=0,i,o;return r;function r(m){return n.enter("codeText"),n.enter("codeTextSequence"),c(m)}function c(m){return m===96?(n.consume(m),s++,c):(n.exit("codeTextSequence"),u(m))}function u(m){return m===null?t(m):m===32?(n.enter("space"),n.consume(m),n.exit("space"),u):m===96?(o=n.enter("codeTextSequence"),i=0,p(m)):bt(m)?(n.enter("lineEnding"),n.consume(m),n.exit("lineEnding"),u):(n.enter("codeTextData"),h(m))}function h(m){return m===null||m===32||m===96||bt(m)?(n.exit("codeTextData"),u(m)):(n.consume(m),h)}function p(m){return m===96?(n.consume(m),i++,p):i===s?(n.exit("codeTextSequence"),n.exit("codeText"),e(m)):(o.type="codeTextData",h(m))}}class kB{constructor(e){this.left=e?[...e]:[],this.right=[]}get(e){if(e<0||e>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return e<this.left.length?this.left[e]:this.right[this.right.length-e+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(e,t){const s=t??Number.POSITIVE_INFINITY;return s<this.left.length?this.left.slice(e,s):e>this.left.length?this.right.slice(this.right.length-s+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-s+this.left.length).reverse())}splice(e,t,s){const i=t||0;this.setCursor(Math.trunc(e));const o=this.right.splice(this.right.length-i,Number.POSITIVE_INFINITY);return s&&Ul(this.left,s),o.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Ul(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Ul(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e<this.left.length){const t=this.left.splice(e,Number.POSITIVE_INFINITY);Ul(this.right,t.reverse())}else{const t=this.right.splice(this.left.length+this.right.length-e,Number.POSITIVE_INFINITY);Ul(this.left,t.reverse())}}}function Ul(n,e){let t=0;if(e.length<1e4)n.push(...e);else for(;t<e.length;)n.push(...e.slice(t,t+1e4)),t+=1e4}function L1(n){const e={};let t=-1,s,i,o,r,c,u,h;const p=new kB(n);for(;++t<p.length;){for(;t in e;)t=e[t];if(s=p.get(t),t&&s[1].type==="chunkFlow"&&p.get(t-1)[1].type==="listItemPrefix"&&(u=s[1]._tokenizer.events,o=0,o<u.length&&u[o][1].type==="lineEndingBlank"&&(o+=2),o<u.length&&u[o][1].type==="content"))for(;++o<u.length&&u[o][1].type!=="content";)u[o][1].type==="chunkText"&&(u[o][1]._isInFirstContentOfListItem=!0,o++);if(s[0]==="enter")s[1].contentType&&(Object.assign(e,SB(p,t)),t=e[t],h=!0);else if(s[1]._container){for(o=t,i=void 0;o--;)if(r=p.get(o),r[1].type==="lineEnding"||r[1].type==="lineEndingBlank")r[0]==="enter"&&(i&&(p.get(i)[1].type="lineEndingBlank"),r[1].type="lineEnding",i=o);else if(!(r[1].type==="linePrefix"||r[1].type==="listItemIndent"))break;i&&(s[1].end={...p.get(i)[1].start},c=p.slice(i,t),c.unshift(s),p.splice(i,t-i+1,c))}}return Os(n,0,Number.POSITIVE_INFINITY,p.slice(0)),!h}function SB(n,e){const t=n.get(e)[1],s=n.get(e)[2];let i=e-1;const o=[];let r=t._tokenizer;r||(r=s.parser[t.contentType](t.start),t._contentTypeTextTrailing&&(r._contentTypeTextTrailing=!0));const c=r.events,u=[],h={};let p,m,g=-1,b=t,x=0,w=0;const k=[w];for(;b;){for(;n.get(++i)[1]!==b;);o.push(i),b._tokenizer||(p=s.sliceStream(b),b.next||p.push(null),m&&r.defineSkip(b.start),b._isInFirstContentOfListItem&&(r._gfmTasklistFirstContentOfListItem=!0),r.write(p),b._isInFirstContentOfListItem&&(r._gfmTasklistFirstContentOfListItem=void 0)),m=b,b=b.next}for(b=t;++g<c.length;)c[g][0]==="exit"&&c[g-1][0]==="enter"&&c[g][1].type===c[g-1][1].type&&c[g][1].start.line!==c[g][1].end.line&&(w=g+1,k.push(w),b._tokenizer=void 0,b.previous=void 0,b=b.next);for(r.events=[],b?(b._tokenizer=void 0,b.previous=void 0):k.pop(),g=k.length;g--;){const S=c.slice(k[g],k[g+1]),j=o.pop();u.push([j,j+S.length-1]),n.splice(j,2,S)}for(u.reverse(),g=-1;++g<u.length;)h[x+u[g][0]]=x+u[g][1],x+=u[g][1]-u[g][0]-1;return h}const jB={resolve:AB,tokenize:NB},CB={partial:!0,tokenize:TB};function AB(n){return L1(n),n}function NB(n,e){let t;return s;function s(c){return n.enter("content"),t=n.enter("chunkContent",{contentType:"content"}),i(c)}function i(c){return c===null?o(c):bt(c)?n.check(CB,r,o)(c):(n.consume(c),i)}function o(c){return n.exit("chunkContent"),n.exit("content"),e(c)}function r(c){return n.consume(c),n.exit("chunkContent"),t.next=n.enter("chunkContent",{contentType:"content",previous:t}),t=t.next,i}}function TB(n,e,t){const s=this;return i;function i(r){return n.exit("chunkContent"),n.enter("lineEnding"),n.consume(r),n.exit("lineEnding"),Kt(n,o,"linePrefix")}function o(r){if(r===null||bt(r))return t(r);const c=s.events[s.events.length-1];return!s.parser.constructs.disable.null.includes("codeIndented")&&c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?e(r):n.interrupt(s.parser.constructs.flow,t,e)(r)}}function P1(n,e,t,s,i,o,r,c,u){const h=u||Number.POSITIVE_INFINITY;let p=0;return m;function m(S){return S===60?(n.enter(s),n.enter(i),n.enter(o),n.consume(S),n.exit(o),g):S===null||S===32||S===41||pd(S)?t(S):(n.enter(s),n.enter(r),n.enter(c),n.enter("chunkString",{contentType:"string"}),w(S))}function g(S){return S===62?(n.enter(o),n.consume(S),n.exit(o),n.exit(i),n.exit(s),e):(n.enter(c),n.enter("chunkString",{contentType:"string"}),b(S))}function b(S){return S===62?(n.exit("chunkString"),n.exit(c),g(S)):S===null||S===60||bt(S)?t(S):(n.consume(S),S===92?x:b)}function x(S){return S===60||S===62||S===92?(n.consume(S),b):b(S)}function w(S){return!p&&(S===null||S===41||gn(S))?(n.exit("chunkString"),n.exit(c),n.exit(r),n.exit(s),e(S)):p<h&&S===40?(n.consume(S),p++,w):S===41?(n.consume(S),p--,w):S===null||S===32||S===40||pd(S)?t(S):(n.consume(S),S===92?k:w)}function k(S){return S===40||S===41||S===92?(n.consume(S),w):w(S)}}function B1(n,e,t,s,i,o){const r=this;let c=0,u;return h;function h(b){return n.enter(s),n.enter(i),n.consume(b),n.exit(i),n.enter(o),p}function p(b){return c>999||b===null||b===91||b===93&&!u||b===94&&!c&&"_hiddenFootnoteSupport"in r.parser.constructs?t(b):b===93?(n.exit(o),n.enter(i),n.consume(b),n.exit(i),n.exit(s),e):bt(b)?(n.enter("lineEnding"),n.consume(b),n.exit("lineEnding"),p):(n.enter("chunkString",{contentType:"string"}),m(b))}function m(b){return b===null||b===91||b===93||bt(b)||c++>999?(n.exit("chunkString"),p(b)):(n.consume(b),u||(u=!Ht(b)),b===92?g:m)}function g(b){return b===91||b===92||b===93?(n.consume(b),c++,m):m(b)}}function O1(n,e,t,s,i,o){let r;return c;function c(g){return g===34||g===39||g===40?(n.enter(s),n.enter(i),n.consume(g),n.exit(i),r=g===40?41:g,u):t(g)}function u(g){return g===r?(n.enter(i),n.consume(g),n.exit(i),n.exit(s),e):(n.enter(o),h(g))}function h(g){return g===r?(n.exit(o),u(r)):g===null?t(g):bt(g)?(n.enter("lineEnding"),n.consume(g),n.exit("lineEnding"),Kt(n,h,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),p(g))}function p(g){return g===r||g===null||bt(g)?(n.exit("chunkString"),h(g)):(n.consume(g),g===92?m:p)}function m(g){return g===r||g===92?(n.consume(g),p):p(g)}}function nc(n,e){let t;return s;function s(i){return bt(i)?(n.enter("lineEnding"),n.consume(i),n.exit("lineEnding"),t=!0,s):Ht(i)?Kt(n,s,t?"linePrefix":"lineSuffix")(i):e(i)}}const MB={name:"definition",tokenize:_B},EB={partial:!0,tokenize:DB};function _B(n,e,t){const s=this;let i;return o;function o(b){return n.enter("definition"),r(b)}function r(b){return B1.call(s,n,c,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(b)}function c(b){return i=da(s.sliceSerialize(s.events[s.events.length-1][1]).slice(1,-1)),b===58?(n.enter("definitionMarker"),n.consume(b),n.exit("definitionMarker"),u):t(b)}function u(b){return gn(b)?nc(n,h)(b):h(b)}function h(b){return P1(n,p,t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(b)}function p(b){return n.attempt(EB,m,m)(b)}function m(b){return Ht(b)?Kt(n,g,"whitespace")(b):g(b)}function g(b){return b===null||bt(b)?(n.exit("definition"),s.parser.defined.push(i),e(b)):t(b)}}function DB(n,e,t){return s;function s(c){return gn(c)?nc(n,i)(c):t(c)}function i(c){return O1(n,o,t,"definitionTitle","definitionTitleMarker","definitionTitleString")(c)}function o(c){return Ht(c)?Kt(n,r,"whitespace")(c):r(c)}function r(c){return c===null||bt(c)?e(c):t(c)}}const RB={name:"hardBreakEscape",tokenize:LB};function LB(n,e,t){return s;function s(o){return n.enter("hardBreakEscape"),n.consume(o),i}function i(o){return bt(o)?(n.exit("hardBreakEscape"),e(o)):t(o)}}const PB={name:"headingAtx",resolve:BB,tokenize:OB};function BB(n,e){let t=n.length-2,s=3,i,o;return n[s][1].type==="whitespace"&&(s+=2),t-2>s&&n[t][1].type==="whitespace"&&(t-=2),n[t][1].type==="atxHeadingSequence"&&(s===t-1||t-4>s&&n[t-2][1].type==="whitespace")&&(t-=s+1===t?2:4),t>s&&(i={type:"atxHeadingText",start:n[s][1].start,end:n[t][1].end},o={type:"chunkText",start:n[s][1].start,end:n[t][1].end,contentType:"text"},Os(n,s,t-s+1,[["enter",i,e],["enter",o,e],["exit",o,e],["exit",i,e]])),n}function OB(n,e,t){let s=0;return i;function i(p){return n.enter("atxHeading"),o(p)}function o(p){return n.enter("atxHeadingSequence"),r(p)}function r(p){return p===35&&s++<6?(n.consume(p),r):p===null||gn(p)?(n.exit("atxHeadingSequence"),c(p)):t(p)}function c(p){return p===35?(n.enter("atxHeadingSequence"),u(p)):p===null||bt(p)?(n.exit("atxHeading"),e(p)):Ht(p)?Kt(n,c,"whitespace")(p):(n.enter("atxHeadingText"),h(p))}function u(p){return p===35?(n.consume(p),u):(n.exit("atxHeadingSequence"),c(p))}function h(p){return p===null||p===35||gn(p)?(n.exit("atxHeadingText"),c(p)):(n.consume(p),h)}}const IB=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Uw=["pre","script","style","textarea"],zB={concrete:!0,name:"htmlFlow",resolveTo:HB,tokenize:UB},FB={partial:!0,tokenize:qB},$B={partial:!0,tokenize:GB};function HB(n){let e=n.length;for(;e--&&!(n[e][0]==="enter"&&n[e][1].type==="htmlFlow"););return e>1&&n[e-2][1].type==="linePrefix"&&(n[e][1].start=n[e-2][1].start,n[e+1][1].start=n[e-2][1].start,n.splice(e-2,2)),n}function UB(n,e,t){const s=this;let i,o,r,c,u;return h;function h(B){return p(B)}function p(B){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(B),m}function m(B){return B===33?(n.consume(B),g):B===47?(n.consume(B),o=!0,w):B===63?(n.consume(B),i=3,s.interrupt?e:P):ms(B)?(n.consume(B),r=String.fromCharCode(B),k):t(B)}function g(B){return B===45?(n.consume(B),i=2,b):B===91?(n.consume(B),i=5,c=0,x):ms(B)?(n.consume(B),i=4,s.interrupt?e:P):t(B)}function b(B){return B===45?(n.consume(B),s.interrupt?e:P):t(B)}function x(B){const V="CDATA[";return B===V.charCodeAt(c++)?(n.consume(B),c===V.length?s.interrupt?e:z:x):t(B)}function w(B){return ms(B)?(n.consume(B),r=String.fromCharCode(B),k):t(B)}function k(B){if(B===null||B===47||B===62||gn(B)){const V=B===47,J=r.toLowerCase();return!V&&!o&&Uw.includes(J)?(i=1,s.interrupt?e(B):z(B)):IB.includes(r.toLowerCase())?(i=6,V?(n.consume(B),S):s.interrupt?e(B):z(B)):(i=7,s.interrupt&&!s.parser.lazy[s.now().line]?t(B):o?j(B):A(B))}return B===45||os(B)?(n.consume(B),r+=String.fromCharCode(B),k):t(B)}function S(B){return B===62?(n.consume(B),s.interrupt?e:z):t(B)}function j(B){return Ht(B)?(n.consume(B),j):_(B)}function A(B){return B===47?(n.consume(B),_):B===58||B===95||ms(B)?(n.consume(B),T):Ht(B)?(n.consume(B),A):_(B)}function T(B){return B===45||B===46||B===58||B===95||os(B)?(n.consume(B),T):D(B)}function D(B){return B===61?(n.consume(B),M):Ht(B)?(n.consume(B),D):A(B)}function M(B){return B===null||B===60||B===61||B===62||B===96?t(B):B===34||B===39?(n.consume(B),u=B,F):Ht(B)?(n.consume(B),M):E(B)}function F(B){return B===u?(n.consume(B),u=null,R):B===null||bt(B)?t(B):(n.consume(B),F)}function E(B){return B===null||B===34||B===39||B===47||B===60||B===61||B===62||B===96||gn(B)?D(B):(n.consume(B),E)}function R(B){return B===47||B===62||Ht(B)?A(B):t(B)}function _(B){return B===62?(n.consume(B),L):t(B)}function L(B){return B===null||bt(B)?z(B):Ht(B)?(n.consume(B),L):t(B)}function z(B){return B===45&&i===2?(n.consume(B),q):B===60&&i===1?(n.consume(B),H):B===62&&i===4?(n.consume(B),Y):B===63&&i===3?(n.consume(B),P):B===93&&i===5?(n.consume(B),ee):bt(B)&&(i===6||i===7)?(n.exit("htmlFlowData"),n.check(FB,Z,$)(B)):B===null||bt(B)?(n.exit("htmlFlowData"),$(B)):(n.consume(B),z)}function $(B){return n.check($B,G,Z)(B)}function G(B){return n.enter("lineEnding"),n.consume(B),n.exit("lineEnding"),I}function I(B){return B===null||bt(B)?$(B):(n.enter("htmlFlowData"),z(B))}function q(B){return B===45?(n.consume(B),P):z(B)}function H(B){return B===47?(n.consume(B),r="",X):z(B)}function X(B){if(B===62){const V=r.toLowerCase();return Uw.includes(V)?(n.consume(B),Y):z(B)}return ms(B)&&r.length<8?(n.consume(B),r+=String.fromCharCode(B),X):z(B)}function ee(B){return B===93?(n.consume(B),P):z(B)}function P(B){return B===62?(n.consume(B),Y):B===45&&i===2?(n.consume(B),P):z(B)}function Y(B){return B===null||bt(B)?(n.exit("htmlFlowData"),Z(B)):(n.consume(B),Y)}function Z(B){return n.exit("htmlFlow"),e(B)}}function GB(n,e,t){const s=this;return i;function i(r){return bt(r)?(n.enter("lineEnding"),n.consume(r),n.exit("lineEnding"),o):t(r)}function o(r){return s.parser.lazy[s.now().line]?t(r):e(r)}}function qB(n,e,t){return s;function s(i){return n.enter("lineEnding"),n.consume(i),n.exit("lineEnding"),n.attempt(vc,e,t)}}const WB={name:"htmlText",tokenize:VB};function VB(n,e,t){const s=this;let i,o,r;return c;function c(P){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(P),u}function u(P){return P===33?(n.consume(P),h):P===47?(n.consume(P),D):P===63?(n.consume(P),A):ms(P)?(n.consume(P),E):t(P)}function h(P){return P===45?(n.consume(P),p):P===91?(n.consume(P),o=0,x):ms(P)?(n.consume(P),j):t(P)}function p(P){return P===45?(n.consume(P),b):t(P)}function m(P){return P===null?t(P):P===45?(n.consume(P),g):bt(P)?(r=m,H(P)):(n.consume(P),m)}function g(P){return P===45?(n.consume(P),b):m(P)}function b(P){return P===62?q(P):P===45?g(P):m(P)}function x(P){const Y="CDATA[";return P===Y.charCodeAt(o++)?(n.consume(P),o===Y.length?w:x):t(P)}function w(P){return P===null?t(P):P===93?(n.consume(P),k):bt(P)?(r=w,H(P)):(n.consume(P),w)}function k(P){return P===93?(n.consume(P),S):w(P)}function S(P){return P===62?q(P):P===93?(n.consume(P),S):w(P)}function j(P){return P===null||P===62?q(P):bt(P)?(r=j,H(P)):(n.consume(P),j)}function A(P){return P===null?t(P):P===63?(n.consume(P),T):bt(P)?(r=A,H(P)):(n.consume(P),A)}function T(P){return P===62?q(P):A(P)}function D(P){return ms(P)?(n.consume(P),M):t(P)}function M(P){return P===45||os(P)?(n.consume(P),M):F(P)}function F(P){return bt(P)?(r=F,H(P)):Ht(P)?(n.consume(P),F):q(P)}function E(P){return P===45||os(P)?(n.consume(P),E):P===47||P===62||gn(P)?R(P):t(P)}function R(P){return P===47?(n.consume(P),q):P===58||P===95||ms(P)?(n.consume(P),_):bt(P)?(r=R,H(P)):Ht(P)?(n.consume(P),R):q(P)}function _(P){return P===45||P===46||P===58||P===95||os(P)?(n.consume(P),_):L(P)}function L(P){return P===61?(n.consume(P),z):bt(P)?(r=L,H(P)):Ht(P)?(n.consume(P),L):R(P)}function z(P){return P===null||P===60||P===61||P===62||P===96?t(P):P===34||P===39?(n.consume(P),i=P,$):bt(P)?(r=z,H(P)):Ht(P)?(n.consume(P),z):(n.consume(P),G)}function $(P){return P===i?(n.consume(P),i=void 0,I):P===null?t(P):bt(P)?(r=$,H(P)):(n.consume(P),$)}function G(P){return P===null||P===34||P===39||P===60||P===61||P===96?t(P):P===47||P===62||gn(P)?R(P):(n.consume(P),G)}function I(P){return P===47||P===62||gn(P)?R(P):t(P)}function q(P){return P===62?(n.consume(P),n.exit("htmlTextData"),n.exit("htmlText"),e):t(P)}function H(P){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(P),n.exit("lineEnding"),X}function X(P){return Ht(P)?Kt(n,ee,"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(P):ee(P)}function ee(P){return n.enter("htmlTextData"),r(P)}}const Lg={name:"labelEnd",resolveAll:ZB,resolveTo:QB,tokenize:JB},KB={tokenize:eO},XB={tokenize:tO},YB={tokenize:nO};function ZB(n){let e=-1;const t=[];for(;++e<n.length;){const s=n[e][1];if(t.push(n[e]),s.type==="labelImage"||s.type==="labelLink"||s.type==="labelEnd"){const i=s.type==="labelImage"?4:2;s.type="data",e+=i}}return n.length!==t.length&&Os(n,0,n.length,t),n}function QB(n,e){let t=n.length,s=0,i,o,r,c;for(;t--;)if(i=n[t][1],o){if(i.type==="link"||i.type==="labelLink"&&i._inactive)break;n[t][0]==="enter"&&i.type==="labelLink"&&(i._inactive=!0)}else if(r){if(n[t][0]==="enter"&&(i.type==="labelImage"||i.type==="labelLink")&&!i._balanced&&(o=t,i.type!=="labelLink")){s=2;break}}else i.type==="labelEnd"&&(r=t);const u={type:n[o][1].type==="labelLink"?"link":"image",start:{...n[o][1].start},end:{...n[n.length-1][1].end}},h={type:"label",start:{...n[o][1].start},end:{...n[r][1].end}},p={type:"labelText",start:{...n[o+s+2][1].end},end:{...n[r-2][1].start}};return c=[["enter",u,e],["enter",h,e]],c=Xs(c,n.slice(o+1,o+s+3)),c=Xs(c,[["enter",p,e]]),c=Xs(c,zd(e.parser.constructs.insideSpan.null,n.slice(o+s+4,r-3),e)),c=Xs(c,[["exit",p,e],n[r-2],n[r-1],["exit",h,e]]),c=Xs(c,n.slice(r+1)),c=Xs(c,[["exit",u,e]]),Os(n,o,n.length,c),n}function JB(n,e,t){const s=this;let i=s.events.length,o,r;for(;i--;)if((s.events[i][1].type==="labelImage"||s.events[i][1].type==="labelLink")&&!s.events[i][1]._balanced){o=s.events[i][1];break}return c;function c(g){return o?o._inactive?m(g):(r=s.parser.defined.includes(da(s.sliceSerialize({start:o.end,end:s.now()}))),n.enter("labelEnd"),n.enter("labelMarker"),n.consume(g),n.exit("labelMarker"),n.exit("labelEnd"),u):t(g)}function u(g){return g===40?n.attempt(KB,p,r?p:m)(g):g===91?n.attempt(XB,p,r?h:m)(g):r?p(g):m(g)}function h(g){return n.attempt(YB,p,m)(g)}function p(g){return e(g)}function m(g){return o._balanced=!0,t(g)}}function eO(n,e,t){return s;function s(m){return n.enter("resource"),n.enter("resourceMarker"),n.consume(m),n.exit("resourceMarker"),i}function i(m){return gn(m)?nc(n,o)(m):o(m)}function o(m){return m===41?p(m):P1(n,r,c,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(m)}function r(m){return gn(m)?nc(n,u)(m):p(m)}function c(m){return t(m)}function u(m){return m===34||m===39||m===40?O1(n,h,t,"resourceTitle","resourceTitleMarker","resourceTitleString")(m):p(m)}function h(m){return gn(m)?nc(n,p)(m):p(m)}function p(m){return m===41?(n.enter("resourceMarker"),n.consume(m),n.exit("resourceMarker"),n.exit("resource"),e):t(m)}}function tO(n,e,t){const s=this;return i;function i(c){return B1.call(s,n,o,r,"reference","referenceMarker","referenceString")(c)}function o(c){return s.parser.defined.includes(da(s.sliceSerialize(s.events[s.events.length-1][1]).slice(1,-1)))?e(c):t(c)}function r(c){return t(c)}}function nO(n,e,t){return s;function s(o){return n.enter("reference"),n.enter("referenceMarker"),n.consume(o),n.exit("referenceMarker"),i}function i(o){return o===93?(n.enter("referenceMarker"),n.consume(o),n.exit("referenceMarker"),n.exit("reference"),e):t(o)}}const sO={name:"labelStartImage",resolveAll:Lg.resolveAll,tokenize:aO};function aO(n,e,t){const s=this;return i;function i(c){return n.enter("labelImage"),n.enter("labelImageMarker"),n.consume(c),n.exit("labelImageMarker"),o}function o(c){return c===91?(n.enter("labelMarker"),n.consume(c),n.exit("labelMarker"),n.exit("labelImage"),r):t(c)}function r(c){return c===94&&"_hiddenFootnoteSupport"in s.parser.constructs?t(c):e(c)}}const iO={name:"labelStartLink",resolveAll:Lg.resolveAll,tokenize:oO};function oO(n,e,t){const s=this;return i;function i(r){return n.enter("labelLink"),n.enter("labelMarker"),n.consume(r),n.exit("labelMarker"),n.exit("labelLink"),o}function o(r){return r===94&&"_hiddenFootnoteSupport"in s.parser.constructs?t(r):e(r)}}const Ap={name:"lineEnding",tokenize:rO};function rO(n,e){return t;function t(s){return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),Kt(n,e,"linePrefix")}}const Zu={name:"thematicBreak",tokenize:lO};function lO(n,e,t){let s=0,i;return o;function o(h){return n.enter("thematicBreak"),r(h)}function r(h){return i=h,c(h)}function c(h){return h===i?(n.enter("thematicBreakSequence"),u(h)):s>=3&&(h===null||bt(h))?(n.exit("thematicBreak"),e(h)):t(h)}function u(h){return h===i?(n.consume(h),s++,u):(n.exit("thematicBreakSequence"),Ht(h)?Kt(n,c,"whitespace")(h):c(h))}}const ks={continuation:{tokenize:hO},exit:pO,name:"list",tokenize:dO},cO={partial:!0,tokenize:fO},uO={partial:!0,tokenize:mO};function dO(n,e,t){const s=this,i=s.events[s.events.length-1];let o=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,r=0;return c;function c(b){const x=s.containerState.type||(b===42||b===43||b===45?"listUnordered":"listOrdered");if(x==="listUnordered"?!s.containerState.marker||b===s.containerState.marker:Pf(b)){if(s.containerState.type||(s.containerState.type=x,n.enter(x,{_container:!0})),x==="listUnordered")return n.enter("listItemPrefix"),b===42||b===45?n.check(Zu,t,h)(b):h(b);if(!s.interrupt||b===49)return n.enter("listItemPrefix"),n.enter("listItemValue"),u(b)}return t(b)}function u(b){return Pf(b)&&++r<10?(n.consume(b),u):(!s.interrupt||r<2)&&(s.containerState.marker?b===s.containerState.marker:b===41||b===46)?(n.exit("listItemValue"),h(b)):t(b)}function h(b){return n.enter("listItemMarker"),n.consume(b),n.exit("listItemMarker"),s.containerState.marker=s.containerState.marker||b,n.check(vc,s.interrupt?t:p,n.attempt(cO,g,m))}function p(b){return s.containerState.initialBlankLine=!0,o++,g(b)}function m(b){return Ht(b)?(n.enter("listItemPrefixWhitespace"),n.consume(b),n.exit("listItemPrefixWhitespace"),g):t(b)}function g(b){return s.containerState.size=o+s.sliceSerialize(n.exit("listItemPrefix"),!0).length,e(b)}}function hO(n,e,t){const s=this;return s.containerState._closeFlow=void 0,n.check(vc,i,o);function i(c){return s.containerState.furtherBlankLines=s.containerState.furtherBlankLines||s.containerState.initialBlankLine,Kt(n,e,"listItemIndent",s.containerState.size+1)(c)}function o(c){return s.containerState.furtherBlankLines||!Ht(c)?(s.containerState.furtherBlankLines=void 0,s.containerState.initialBlankLine=void 0,r(c)):(s.containerState.furtherBlankLines=void 0,s.containerState.initialBlankLine=void 0,n.attempt(uO,e,r)(c))}function r(c){return s.containerState._closeFlow=!0,s.interrupt=void 0,Kt(n,n.attempt(ks,e,t),"linePrefix",s.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(c)}}function mO(n,e,t){const s=this;return Kt(n,i,"listItemIndent",s.containerState.size+1);function i(o){const r=s.events[s.events.length-1];return r&&r[1].type==="listItemIndent"&&r[2].sliceSerialize(r[1],!0).length===s.containerState.size?e(o):t(o)}}function pO(n){n.exit(this.containerState.type)}function fO(n,e,t){const s=this;return Kt(n,i,"listItemPrefixWhitespace",s.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(o){const r=s.events[s.events.length-1];return!Ht(o)&&r&&r[1].type==="listItemPrefixWhitespace"?e(o):t(o)}}const Gw={name:"setextUnderline",resolveTo:gO,tokenize:bO};function gO(n,e){let t=n.length,s,i,o;for(;t--;)if(n[t][0]==="enter"){if(n[t][1].type==="content"){s=t;break}n[t][1].type==="paragraph"&&(i=t)}else n[t][1].type==="content"&&n.splice(t,1),!o&&n[t][1].type==="definition"&&(o=t);const r={type:"setextHeading",start:{...n[s][1].start},end:{...n[n.length-1][1].end}};return n[i][1].type="setextHeadingText",o?(n.splice(i,0,["enter",r,e]),n.splice(o+1,0,["exit",n[s][1],e]),n[s][1].end={...n[o][1].end}):n[s][1]=r,n.push(["exit",r,e]),n}function bO(n,e,t){const s=this;let i;return o;function o(h){let p=s.events.length,m;for(;p--;)if(s.events[p][1].type!=="lineEnding"&&s.events[p][1].type!=="linePrefix"&&s.events[p][1].type!=="content"){m=s.events[p][1].type==="paragraph";break}return!s.parser.lazy[s.now().line]&&(s.interrupt||m)?(n.enter("setextHeadingLine"),i=h,r(h)):t(h)}function r(h){return n.enter("setextHeadingLineSequence"),c(h)}function c(h){return h===i?(n.consume(h),c):(n.exit("setextHeadingLineSequence"),Ht(h)?Kt(n,u,"lineSuffix")(h):u(h))}function u(h){return h===null||bt(h)?(n.exit("setextHeadingLine"),e(h)):t(h)}}const yO={tokenize:xO};function xO(n){const e=this,t=n.attempt(vc,s,n.attempt(this.parser.constructs.flowInitial,i,Kt(n,n.attempt(this.parser.constructs.flow,i,n.attempt(jB,i)),"linePrefix")));return t;function s(o){if(o===null){n.consume(o);return}return n.enter("lineEndingBlank"),n.consume(o),n.exit("lineEndingBlank"),e.currentConstruct=void 0,t}function i(o){if(o===null){n.consume(o);return}return n.enter("lineEnding"),n.consume(o),n.exit("lineEnding"),e.currentConstruct=void 0,t}}const vO={resolveAll:z1()},wO=I1("string"),kO=I1("text");function I1(n){return{resolveAll:z1(n==="text"?SO:void 0),tokenize:e};function e(t){const s=this,i=this.parser.constructs[n],o=t.attempt(i,r,c);return r;function r(p){return h(p)?o(p):c(p)}function c(p){if(p===null){t.consume(p);return}return t.enter("data"),t.consume(p),u}function u(p){return h(p)?(t.exit("data"),o(p)):(t.consume(p),u)}function h(p){if(p===null)return!0;const m=i[p];let g=-1;if(m)for(;++g<m.length;){const b=m[g];if(!b.previous||b.previous.call(s,s.previous))return!0}return!1}}}function z1(n){return e;function e(t,s){let i=-1,o;for(;++i<=t.length;)o===void 0?t[i]&&t[i][1].type==="data"&&(o=i,i++):(!t[i]||t[i][1].type!=="data")&&(i!==o+2&&(t[o][1].end=t[i-1][1].end,t.splice(o+2,i-o-2),i=o+2),o=void 0);return n?n(t,s):t}}function SO(n,e){let t=0;for(;++t<=n.length;)if((t===n.length||n[t][1].type==="lineEnding")&&n[t-1][1].type==="data"){const s=n[t-1][1],i=e.sliceStream(s);let o=i.length,r=-1,c=0,u;for(;o--;){const h=i[o];if(typeof h=="string"){for(r=h.length;h.charCodeAt(r-1)===32;)c++,r--;if(r)break;r=-1}else if(h===-2)u=!0,c++;else if(h!==-1){o++;break}}if(e._contentTypeTextTrailing&&t===n.length&&(c=0),c){const h={type:t===n.length||u||c<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:o?r:s.start._bufferIndex+r,_index:s.start._index+o,line:s.end.line,column:s.end.column-c,offset:s.end.offset-c},end:{...s.end}};s.end={...h.start},s.start.offset===s.end.offset?Object.assign(s,h):(n.splice(t,0,["enter",h,e],["exit",h,e]),t+=2)}t++}return n}const jO={42:ks,43:ks,45:ks,48:ks,49:ks,50:ks,51:ks,52:ks,53:ks,54:ks,55:ks,56:ks,57:ks,62:_1},CO={91:MB},AO={[-2]:Cp,[-1]:Cp,32:Cp},NO={35:PB,42:Zu,45:[Gw,Zu],60:zB,61:Gw,95:Zu,96:Hw,126:Hw},TO={38:R1,92:D1},MO={[-5]:Ap,[-4]:Ap,[-3]:Ap,33:sO,38:R1,42:Bf,60:[iB,WB],91:iO,92:[RB,D1],93:Lg,95:Bf,96:yB},EO={null:[Bf,vO]},_O={null:[42,95]},DO={null:[]},RO=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:_O,contentInitial:CO,disable:DO,document:jO,flow:NO,flowInitial:AO,insideSpan:EO,string:TO,text:MO},Symbol.toStringTag,{value:"Module"}));function LO(n,e,t){let s={_bufferIndex:-1,_index:0,line:t&&t.line||1,column:t&&t.column||1,offset:t&&t.offset||0};const i={},o=[];let r=[],c=[];const u={attempt:F(D),check:F(M),consume:j,enter:A,exit:T,interrupt:F(M,{interrupt:!0})},h={code:null,containerState:{},defineSkip:w,events:[],now:x,parser:n,previous:null,sliceSerialize:g,sliceStream:b,write:m};let p=e.tokenize.call(h,u);return e.resolveAll&&o.push(e),h;function m(L){return r=Xs(r,L),k(),r[r.length-1]!==null?[]:(E(e,0),h.events=zd(o,h.events,h),h.events)}function g(L,z){return BO(b(L),z)}function b(L){return PO(r,L)}function x(){const{_bufferIndex:L,_index:z,line:$,column:G,offset:I}=s;return{_bufferIndex:L,_index:z,line:$,column:G,offset:I}}function w(L){i[L.line]=L.column,_()}function k(){let L;for(;s._index<r.length;){const z=r[s._index];if(typeof z=="string")for(L=s._index,s._bufferIndex<0&&(s._bufferIndex=0);s._index===L&&s._bufferIndex<z.length;)S(z.charCodeAt(s._bufferIndex));else S(z)}}function S(L){p=p(L)}function j(L){bt(L)?(s.line++,s.column=1,s.offset+=L===-3?2:1,_()):L!==-1&&(s.column++,s.offset++),s._bufferIndex<0?s._index++:(s._bufferIndex++,s._bufferIndex===r[s._index].length&&(s._bufferIndex=-1,s._index++)),h.previous=L}function A(L,z){const $=z||{};return $.type=L,$.start=x(),h.events.push(["enter",$,h]),c.push($),$}function T(L){const z=c.pop();return z.end=x(),h.events.push(["exit",z,h]),z}function D(L,z){E(L,z.from)}function M(L,z){z.restore()}function F(L,z){return $;function $(G,I,q){let H,X,ee,P;return Array.isArray(G)?Z(G):"tokenize"in G?Z([G]):Y(G);function Y(Q){return W;function W(ne){const se=ne!==null&&Q[ne],oe=ne!==null&&Q.null,ue=[...Array.isArray(se)?se:se?[se]:[],...Array.isArray(oe)?oe:oe?[oe]:[]];return Z(ue)(ne)}}function Z(Q){return H=Q,X=0,Q.length===0?q:B(Q[X])}function B(Q){return W;function W(ne){return P=R(),ee=Q,Q.partial||(h.currentConstruct=Q),Q.name&&h.parser.constructs.disable.null.includes(Q.name)?J():Q.tokenize.call(z?Object.assign(Object.create(h),z):h,u,V,J)(ne)}}function V(Q){return L(ee,P),I}function J(Q){return P.restore(),++X<H.length?B(H[X]):q}}}function E(L,z){L.resolveAll&&!o.includes(L)&&o.push(L),L.resolve&&Os(h.events,z,h.events.length-z,L.resolve(h.events.slice(z),h)),L.resolveTo&&(h.events=L.resolveTo(h.events,h))}function R(){const L=x(),z=h.previous,$=h.currentConstruct,G=h.events.length,I=Array.from(c);return{from:G,restore:q};function q(){s=L,h.previous=z,h.currentConstruct=$,h.events.length=G,c=I,_()}}function _(){s.line in i&&s.column<2&&(s.column=i[s.line],s.offset+=i[s.line]-1)}}function PO(n,e){const t=e.start._index,s=e.start._bufferIndex,i=e.end._index,o=e.end._bufferIndex;let r;if(t===i)r=[n[t].slice(s,o)];else{if(r=n.slice(t,i),s>-1){const c=r[0];typeof c=="string"?r[0]=c.slice(s):r.shift()}o>0&&r.push(n[i].slice(0,o))}return r}function BO(n,e){let t=-1;const s=[];let i;for(;++t<n.length;){const o=n[t];let r;if(typeof o=="string")r=o;else switch(o){case-5:{r="\r";break}case-4:{r=`
|
package/dist/index.html
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<meta name="apple-mobile-web-app-title" content="Tide CMD" />
|
|
20
20
|
<link rel="apple-touch-icon" href="/assets/icons/icon-192.png" />
|
|
21
21
|
<title>Tide Commander</title>
|
|
22
|
-
<script type="module" crossorigin src="/assets/main-
|
|
22
|
+
<script type="module" crossorigin src="/assets/main-B2zwexWk.js"></script>
|
|
23
23
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-uS-d4TUT.js">
|
|
25
25
|
<link rel="modulepreload" crossorigin href="/assets/vendor-three-4iQNXcoo.js">
|
|
@@ -471,8 +471,23 @@ async function main() {
|
|
|
471
471
|
const port = meta?.port ?? process.env.PORT ?? '6200';
|
|
472
472
|
const host = meta?.host ?? process.env.HOST ?? 'localhost';
|
|
473
473
|
const url = `http://${host}:${port}`;
|
|
474
|
-
|
|
475
|
-
|
|
474
|
+
const dim = '\x1b[2m';
|
|
475
|
+
const yellow = '\x1b[33m';
|
|
476
|
+
const cyan = '\x1b[36m';
|
|
477
|
+
const bright = '\x1b[1m';
|
|
478
|
+
const reset = '\x1b[0m';
|
|
479
|
+
const blue = '\x1b[34m';
|
|
480
|
+
const _green = '\x1b[32m';
|
|
481
|
+
console.log(`\n${cyan}${bright}🌊 Tide Commander${reset} ${dim}(already running, PID: ${existingPid})${reset}`);
|
|
482
|
+
console.log(`${cyan}${'═'.repeat(60)}${reset}`);
|
|
483
|
+
console.log(`${blue}${bright}🚀 Open: ${url}${reset}`);
|
|
484
|
+
console.log(`${cyan}${'─'.repeat(60)}${reset}`);
|
|
485
|
+
console.log(`${dim}Commands:${reset}`);
|
|
486
|
+
console.log(` ${yellow}tide-commander status${reset} ${dim}Show server status & uptime${reset}`);
|
|
487
|
+
console.log(` ${yellow}tide-commander stop${reset} ${dim}Stop the server${reset}`);
|
|
488
|
+
console.log(` ${yellow}tide-commander logs -f${reset} ${dim}Follow live server logs${reset}`);
|
|
489
|
+
console.log(` ${yellow}tide-commander --help${reset} ${dim}Show all options${reset}`);
|
|
490
|
+
console.log(`${cyan}${'═'.repeat(60)}${reset}\n`);
|
|
476
491
|
return;
|
|
477
492
|
}
|
|
478
493
|
}
|
|
@@ -513,12 +528,19 @@ async function main() {
|
|
|
513
528
|
const bright = '\x1b[1m';
|
|
514
529
|
const reset = '\x1b[0m';
|
|
515
530
|
const blue = '\x1b[34m';
|
|
531
|
+
const dim = '\x1b[2m';
|
|
532
|
+
const yellow = '\x1b[33m';
|
|
516
533
|
console.log(`\n${cyan}${bright}🌊 Tide Commander${reset}`);
|
|
517
534
|
console.log(`${cyan}${'═'.repeat(60)}${reset}`);
|
|
518
535
|
console.log(`${green}✓${reset} Started in background (PID: ${child.pid ?? 'unknown'})`);
|
|
519
536
|
console.log(`${blue}${bright}🚀 Open: ${url}${reset}`);
|
|
520
537
|
console.log(` Version: ${getPackageVersion()}`);
|
|
521
|
-
console.log(`${
|
|
538
|
+
console.log(`${cyan}${'─'.repeat(60)}${reset}`);
|
|
539
|
+
console.log(`${dim}Commands:${reset}`);
|
|
540
|
+
console.log(` ${yellow}tide-commander status${reset} ${dim}Show server status & uptime${reset}`);
|
|
541
|
+
console.log(` ${yellow}tide-commander stop${reset} ${dim}Stop the server${reset}`);
|
|
542
|
+
console.log(` ${yellow}tide-commander logs -f${reset} ${dim}Follow live server logs${reset}`);
|
|
543
|
+
console.log(` ${yellow}tide-commander --help${reset} ${dim}Show all options${reset}`);
|
|
522
544
|
console.log(`${cyan}${'═'.repeat(60)}${reset}\n`);
|
|
523
545
|
return;
|
|
524
546
|
}
|