tide-commander 0.53.2 → 0.53.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -355,7 +355,7 @@ To configure which server the app connects to, set `LISTEN_ALL_INTERFACES=1` on
355
355
  - Run `which claude` to verify installation
356
356
 
357
357
  **WebSocket disconnects**
358
- - Check that the server is running (default port 5174, or your configured `PORT`)
358
+ - Check that the server is running (default port 6200, or your configured `PORT`)
359
359
  - Look for CORS or firewall issues
360
360
 
361
361
  ## šŸ’¬ Community
@@ -137,7 +137,7 @@ Error generating stack: `+b.message+`
137
137
  float h = normalize(vWorldPosition + offset).y;
138
138
  gl_FragColor = vec4(mix(bottomColor, topColor, max(pow(max(h, 0.0), exponent), 0.0)), 1.0);
139
139
  }
140
- `,side:wk});i.add(new ke(o,r)),i.add(new sf(16777215,1));const c=n.fromScene(i,.04).texture;t.environment=c,n.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),onResizeStart:(e,t)=>this.drawingManager.startResize(e,t),onResizeMove:e=>this.drawingManager.updateResize(e),onResizeEnd:()=>this.drawingManager.finishResize(),onGroundClickOutsideArea:()=>this.inputEventHandlers.handleGroundClickOutsideArea(),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)=>I.updateBuildingPosition(e,t),onContextMenu:(e,t,n)=>this.callbackManager.triggerContextMenu(e,t,n),onActivity:()=>this.renderLoop.markActivity(),onToggleTerminal:()=>I.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.setBuildingAtPositionGetter(e=>{const t=this.buildingManager.getBuildingAtPosition(e);return t?{id:t.id}:null}),this.inputHandler.setBuildingPositionsGetter(()=>{const e=new Map;for(const[t,n]of this.buildingManager.getBuildingMeshData())e.set(t,n.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,n]of this.agentManager.getAgentMeshes())if(this.proceduralAnimator.has(t)&&n.animations.size===0){const i=n.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,n){for(const[,i]of t){const o=e.position.distanceTo(i.group.position),r=Math.max(.5,Math.min(2.5,o/15))*n,c=i.group.userData.isBoss===!0,d=i.group.getObjectByName("statusBar"),h=i.group.getObjectByName("nameLabelSprite");if(d){const f=c?2:1.6,g=2560/4096;d.scale.set(f*r,f*g*r,1)}if(h){const f=c?2.5:2,g=1024/8192;h.scale.set(f*r,f*g*r,1)}const p=i.group.getObjectByName("combinedUI");if(p){const f=c?2:1.6,g=1024/2048;p.scale.set(f*r,f*g*r,1)}if(!d&&!p){const f=i.group.getObjectByName("nameLabel");if(f){const v=.3*r;f.scale.set(v*(f.userData.aspectRatio||2),v,1)}const g=i.group.getObjectByName("manaBar");g&&g.scale.set(.9,.14,1);const y=i.group.getObjectByName("idleTimer");y&&y.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))*n,c=i.group.getObjectByName("buildingLabel");if(c){const d=.3*r;c.scale.set(d*(c.userData.aspectRatio||2),d,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,n){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createSpeechBubble(e,t,n)}showDelegationEffect(e,t){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createDelegationEffect(e,t)}addSubagentEffect(e,t,n,i){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.addSubagentEffect(e,t,n,i)}completeSubagentEffect(e){this.effectsManager.completeSubagentEffect(e)}removeSubagentEffect(e){this.effectsManager.removeSubagentEffect(e)}focusAgent(e){this.cameraManager.focusAgent(e)}callSubordinates(e){var r;const n=I.getState().agents.get(e);if(!n||!(n.isBoss||n.class==="boss")||!((r=n.subordinateIds)!=null&&r.length))return;const i=new nt(n.position.x,n.position.y,n.position.z),o=this.inputHandler.calculateFormationPositions(i,n.subordinateIds.length);this.effectsManager.createMoveOrderEffect(i.clone()),n.subordinateIds.forEach((c,d)=>{const h=this.agentManager.getAgentMeshes().get(c);I.moveAgent(c,o[d]),h&&this.movementAnimator.startMovement(c,h,o[d])})}setDrawingTool(e){this.drawingManager.setTool(e),I.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)}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 n=this.sceneCore.getCanvas();n.removeEventListener("webglcontextlost",this.onContextLost),n.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:_N.getUsage(),agentMeshCount:this.agentManager.getAgentMeshes().size,bossLineCount:0}}getRenderStats(){var t,n;const e=(n=(t=this.sceneCore.getRenderer())==null?void 0:t.info)==null?void 0:n.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 n;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),(n=this.resizeObserver)==null||n.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 Du="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 Qu(){return typeof window<"u"?window.__tidePersistedScene??null:null}function Wk(){return typeof window<"u"?window.__tidePersistedCanvas??null:null}function E2(){return typeof window<"u"?window.__tideWsConnected??!1:!1}function Pl(s){typeof window<"u"&&(window.__tidePersistedScene=s)}function Lu(s){typeof window<"u"&&(window.__tidePersistedCanvas=s)}function Kk(s){typeof window<"u"&&(window.__tideWsConnected=s)}function _2(s){typeof window<"u"&&(window.__tideIsPageUnloading=s)}function R2(){sessionStorage.setItem(Du,"true")}function pu(s){_2(!0),sessionStorage.removeItem(Du),Bk(),AN(),window.__tideScene&&(window.__tideScene=null);const e=Qu();e?(console.log("[App] Calling persistedScene.dispose()"),e.dispose(),Pl(null)):console.log("[App] No persistedScene to dispose"),Lu(null),Kk(!1);const t=document.getElementById("battlefield");t&&t.remove();const n=document.getElementById("app");n&&(n.innerHTML="")}function D2(){var i,o;if(window.__tideAppInitialized)return;if(window.__tideAppInitialized=!0,sessionStorage.getItem(Du)==="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=Qu();if(e){console.log("[App] Cleaning up stale persistedScene");try{e.dispose()}catch{}Pl(null)}const t=document.getElementById("battlefield"),n=Wk();t&&t!==n&&t.remove(),sessionStorage.removeItem(Du)}function L2(){typeof window>"u"||(D2(),window.addEventListener("pageshow",s=>{s.persisted&&(console.log("[App] Page restored from bfcache - cleaning up"),pu(),window.location.reload())}),window.onunload=()=>pu(),window.onbeforeunload=s=>{if(pu(),window.innerWidth<=768)return s.preventDefault(),""},window.addEventListener("pagehide",s=>{pu(`pagehide (persisted=${s.persisted})`)}))}L2();const R0={showTrees:!0,showBushes:!0,showHouse:!0,showLamps:!0,showGrass:!0,showClouds:!0,fogDensity:1,floorStyle:"concrete",brightness:1,skyColor:null},D0={saturation:2,roughness:.5,metalness:-1,emissiveBoost:0,envMapIntensity:1,wireframe:!1,colorMode:"normal"},L0={idleAnimation:"sit",workingAnimation:"sprint"},B2=0;function Vk(){const s={characterScale:2,indicatorScale:1,gridVisible:!0,timeMode:"day",terrain:R0,modelStyle:D0,animations:L0,fpsLimit:B2},e=ca(at.CONFIG,null);return e?{characterScale:e.characterScale??s.characterScale,indicatorScale:e.indicatorScale??s.indicatorScale,gridVisible:e.gridVisible??s.gridVisible,timeMode:e.timeMode??s.timeMode,terrain:{...R0,...e.terrain},modelStyle:{...D0,...e.modelStyle},animations:{...L0,...e.animations},fpsLimit:e.fpsLimit??s.fpsLimit}:s}function O2(s){Ia(at.CONFIG,s)}typeof window<"u"&&!window.__tideHmrRefreshListeners&&(window.__tideHmrRefreshListeners=new Set);function Yk(){console.log("[Tide HMR] Manual scene refresh triggered");const s=Qu();if(s){try{s.dispose()}catch(t){console.warn("[Tide HMR] Error disposing scene:",t)}Pl(null)}Lu(null),window.__tideScene&&(window.__tideScene=null);const e=document.getElementById("battlefield");if(e){const t=e.getContext("webgl2")||e.getContext("webgl");if(t){const n=t.getExtension("WEBGL_lose_context");n&&n.loseContext()}}window.__tideHmrPendingSceneChanges=!1,window.location.reload()}typeof window<"u"&&(window.__tideHmrSceneRefresh=Yk);function P2({canvasRef:s,selectionBoxRef:e,showToast:t,showAgentNotification:n,toolboxModal:i,contextMenu:o,setHoveredAgentPopup:r,setBuildingPopup:c,getBuildingPopup:d,openBuildingModal:h,openPM2LogsModal:p,openBossLogsModal:f,openDatabasePanel:g}){const y=x.useRef(null),v=x.useRef(null),w=x.useRef(null);return x.useEffect(()=>{if(!s.current||!e.current)return;let S=!1;const C=Qu(),N=Wk()===s.current;function _(){var M,E,z,T,R,D,O;(M=y.current)==null||M.setOnToast(t),(E=y.current)==null||E.setOnBuildingClick((P,K)=>{I.selectBuilding(P);const Y=I.getState().buildings.get(P);(Y==null?void 0:Y.type)==="folder"&&Y.folderPath?I.openFileExplorer(Y.folderPath):(Y==null?void 0:Y.type)==="server"||(Y==null?void 0:Y.type)==="boss"||(Y==null?void 0:Y.type)==="database"?(v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{c({buildingId:P,screenPos:K,fromClick:!0}),v.current=null},150)):h(P)}),(z=y.current)==null||z.setOnContextMenu((P,K,Y)=>{o.open(P,K,Y)}),(T=y.current)==null||T.setOnAgentHover(()=>{}),(R=y.current)==null||R.setOnBuildingHover((P,K)=>{const Y=d();if(P&&K){const $=I.getState().buildings.get(P);(($==null?void 0:$.type)==="server"||($==null?void 0:$.type)==="boss"||($==null?void 0:$.type)==="database")&&!(Y!=null&&Y.fromClick)&&c({buildingId:P,screenPos:K,fromClick:!1})}else Y!=null&&Y.fromClick||c(null)}),(D=y.current)==null||D.setOnGroundClick(()=>{c(null)}),(O=y.current)==null||O.setOnBuildingDoubleClick(P=>{var Y;v.current&&(clearTimeout(v.current),v.current=null),c(null);const K=I.getState().buildings.get(P);(K==null?void 0:K.type)==="server"&&((Y=K.pm2)!=null&&Y.enabled)?p==null||p(P):(K==null?void 0:K.type)==="boss"?f==null||f(P):(K==null?void 0:K.type)==="database"?g==null||g(P):(K==null?void 0:K.type)==="folder"&&K.folderPath?I.openFileExplorer(K.folderPath):h(P)})}if(C&&N){y.current=C,console.log("[Tide] Reusing existing scene (StrictMode remount)");const M=I.getState();C.syncAreas(),C.syncBuildings(),M.agents.size>0&&(console.log("[Tide] Re-syncing agents from store after remount:",M.agents.size),C.syncAgents(Array.from(M.agents.values()))),_()}else{const M=s.current,E=e.current,z=()=>{if(S){console.log("[Tide] Effect cleaned up before scene init, skipping");return}if(!M.isConnected||!E.isConnected){console.warn("[Tide] Canvas disconnected before initialization");return}(!M.clientWidth||!M.clientHeight)&&(console.log("[Tide] Canvas has no CSS dimensions, using window fallback"),M.style.width="100%",M.style.height="100%",M.offsetHeight),(!M.clientWidth||!M.clientHeight)&&(M.width=window.innerWidth,M.height=window.innerHeight),R2();try{const T=new M2(M,E);y.current=T,Pl(T),Lu(M);const R=Vk();T.setCharacterScale(R.characterScale),T.setIndicatorScale(R.indicatorScale),T.setGridVisible(R.gridVisible),T.setTimeMode(R.timeMode),T.setTerrainConfig(R.terrain),T.setFloorStyle(R.terrain.floorStyle,!0),T.setAgentModelStyle(R.modelStyle),T.setIdleAnimation(R.animations.idleAnimation),T.setWorkingAnimation(R.animations.workingAnimation),T.setFpsLimit(R.fpsLimit),T.syncAreas(),T.syncBuildings(),T.loadCharacterModels().then(()=>{console.log("[Tide] Character models ready");const D=I.getState();D.customAgentClasses.size>0&&(console.log("[Tide] Applying custom classes from store:",D.customAgentClasses.size),T.setCustomAgentClasses(D.customAgentClasses)),D.agents.size>0&&(console.log("[Tide] Syncing agents from store:",D.agents.size),T.syncAgents(Array.from(D.agents.values()))),T.upgradeAgentModels()}).catch(D=>{console.warn("[Tide] Some models failed to load, using fallback:",D)}),_()}catch(T){console.error("[Tide] Failed to initialize 3D scene:",T)}};w.current=requestAnimationFrame(z)}return _k({onAgentCreated:M=>{var E,z;(E=y.current)==null||E.addAgent(M),(z=window.__spawnModalSuccess)==null||z.call(window)},onAgentUpdated:(M,E)=>{var z;(z=y.current)==null||z.updateAgent(M,E)},onAgentDeleted:M=>{var E;(E=y.current)==null||E.removeAgent(M)},onAgentsSync:M=>{var E;(E=y.current)==null||E.syncAgents(M)},onAreasSync:()=>{var E,z;(E=y.current)==null||E.syncAreas();const M=Array.from(I.getState().agents.values());(z=y.current)==null||z.syncAgents(M)},onSpawnError:()=>{var M;(M=window.__spawnModalError)==null||M.call(window)},onSpawnSuccess:()=>{var M;(M=window.__spawnModalSuccess)==null||M.call(window)},onDirectoryNotFound:M=>{var E;(E=window.__spawnModalDirNotFound)==null||E.call(window,M)},onToolUse:(M,E,z)=>{var T;(T=y.current)==null||T.showToolBubble(M,E,z)},onDelegation:(M,E)=>{var z;(z=y.current)==null||z.showDelegationEffect(M,E)},onCustomClassesSync:M=>{var E,z;(E=y.current)==null||E.setCustomAgentClasses(M),(z=y.current)==null||z.upgradeAgentModels()},onBuildingUpdated:M=>{var E;(E=y.current)==null||E.updateBuilding(M)},onSubagentStarted:M=>{var E;(E=y.current)==null||E.addSubagentEffect(M.id,M.parentAgentId,M.name,M.subagentType)},onSubagentCompleted:M=>{var T;const E=I.getSubagent(M)||I.getSubagentByToolUseId(M),z=(E==null?void 0:E.id)||M;(T=y.current)==null||T.completeSubagentEffect(z),setTimeout(()=>{var R;(R=y.current)==null||R.removeSubagentEffect(z)},3e4)}}),()=>{var M;S=!0,w.current!==null&&(cancelAnimationFrame(w.current),w.current=null),!((M=s.current)!=null&&M.isConnected)&&y.current&&(console.log("[Tide] 3D canvas unmounted - disposing scene to free memory"),NN(),y.current.dispose(),y.current=null,Pl(null),Lu(null))}},[s.current,e.current]),y}let Il,er;try{Il=require("@capacitor/local-notifications").LocalNotifications,er=require("@capacitor/core").Capacitor}catch{}let I2=1;const z2="agent_alerts";function pf(){var s;return((s=er==null?void 0:er.isNativePlatform)==null?void 0:s.call(er))??!1}async function F2(){return pf()?(await Il.requestPermissions()).display==="granted":"Notification"in window?await Notification.requestPermission()==="granted":!1}async function H2(s){const{title:e,body:t,icon:n,data:i}=s;pf()?await Il.schedule({notifications:[{id:I2++,title:e,body:t,schedule:{at:new Date(Date.now()+100)},extra:i,channelId:z2,smallIcon:"ic_launcher",autoCancel:!0}]}):"Notification"in window&&Notification.permission==="granted"&&new Notification(e,{body:t,icon:n,data:i})}async function $2(s){pf()&&Il&&await Il.addListener("localNotificationActionPerformed",e=>{s&&e.notification.extra&&s(e.notification.extra)})}function U2({showToast:s,showAgentNotification:e}){const t=x.useRef(!1);x.useEffect(()=>{if(t.current||E2())return;t.current=!0,_k({onToast:s,onReconnect:()=>{I.triggerReconnect()},onAgentNotification:i=>{e(i)}}),Ol(),Kk(!0),F2(),$2(i=>{i.agentId&&typeof i.agentId=="string"&&I.selectAgent(i.agentId)});const n=()=>{console.log("[Tide] App resumed from background, reconnecting..."),setTimeout(()=>Ol(),100)};return window.addEventListener("tideAppResume",n),()=>{window.removeEventListener("tideAppResume",n)}},[s,e])}function G2(s){x.useEffect(()=>{let e="",t="",n=new Map;const i=o=>{var d;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},${((d=p.subordinateIds)==null?void 0:d.length)??0}`.split("").reduce((y,v)=>(y<<5)-y+v.charCodeAt(0),0);c.set(h,g),n.get(h)!==g&&(r=!0)}return c.size!==n.size&&(r=!0),{newVersion:c,changed:r}};return I.subscribe(()=>{var g;const o=I.getState(),r=Array.from(o.selectedAgentIds).sort().join(","),c=Array.from(o.selectedBuildingIds).sort().join(","),d=r!==e,h=c!==t,{newVersion:p,changed:f}=i(o.agents);(d||h||f)&&(e=r,t=c,n=p,(g=s.current)==null||g.refreshSelectionVisuals())})},[s])}function q2(s){x.useEffect(()=>{var n;(n=s.current)==null||n.syncAreas();let e=0,t=0;return I.subscribe(()=>{var c,d;const o=I.getState().areas;if(o.size!==e){e=o.size,t=Date.now(),(c=s.current)==null||c.syncAreas();return}let r=0;for(const[h,p]of o){let f=h.charCodeAt(0);f+=(p.width??0)+(p.height??0)+(p.radius??0),f+=Math.floor(p.center.x*100)+Math.floor(p.center.z*100),f+=(p.zIndex??0)*1e3;for(let g=0;g<p.name.length;g++)f+=p.name.charCodeAt(g);for(let g=0;g<p.color.length;g++)f+=p.color.charCodeAt(g);r^=f|0}r!==t&&(t=r,(d=s.current)==null||d.syncAreas())})},[s])}function W2(s){x.useEffect(()=>{var n;(n=s.current)==null||n.syncBuildings();let e=0,t=0;return I.subscribe(()=>{var c,d;const o=I.getState().buildings;if(o.size!==e){e=o.size,t=Date.now(),(c=s.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 f=`${p.style||""}${p.name}${p.status}`;for(let g=0;g<f.length;g++)r=(r<<5)-r+f.charCodeAt(g)|0}r!==t&&(t=r,(d=s.current)==null||d.syncBuildings())})},[s])}function K2(s,e){x.useEffect(()=>{var t;(t=s.current)==null||t.highlightArea(e)},[s,e])}function V2(s,e){x.useEffect(()=>{var t;(t=s.current)==null||t.setPowerSaving(e)},[s,e])}function Y2({sceneRef:s,spawnModal:e,commanderModal:t,explorerModal:n,spotlightModal:i,deleteConfirmModal:o,onRequestBuildingDelete:r}){x.useEffect(()=>{const c=d=>{var z,T,R,D;const h=I.getShortcuts(),p=d.target,f=p.tagName==="INPUT"||p.tagName==="TEXTAREA",g=h.find(O=>O.id==="deselect-all");if(ut(d,g)){const O=I.getState();if(O.activeTool==="rectangle"||O.activeTool==="circle"){(z=s.current)==null||z.setDrawingTool(null),typeof window<"u"&&window.__tideScene2D_setDrawingTool&&window.__tideScene2D_setDrawingTool(null);return}e.isOpen?e.close():O.terminalOpen?(I.setTerminalOpen(!1),document.activeElement instanceof HTMLElement&&document.activeElement.blur()):(I.deselectAll(),(T=s.current)==null||T.refreshSelectionVisuals())}for(let O=1;O<=9;O++){const P=h.find(K=>K.id===`select-agent-${O}`);if(ut(d,P)){d.preventDefault();const K=I.getState(),Y=O-1,$=Array.from(K.agents.keys());Y<$.length&&(I.selectAgent($[Y]),(R=s.current)==null||R.refreshSelectionVisuals());return}}const y=h.find(O=>O.id==="spawn-agent");if(ut(d,y)){d.preventDefault(),e.open();return}const v=h.find(O=>O.id==="toggle-commander-tab");if(ut(d,v)&&!f){d.preventDefault(),t.toggle();return}const w=h.find(O=>O.id==="toggle-commander");if(ut(d,w)){d.preventDefault(),t.toggle();return}const S=h.find(O=>O.id==="toggle-file-explorer");if(ut(d,S)){if(d.preventDefault(),n.isOpen)n.close();else{const O=Array.from(I.getState().areas.values()).filter(P=>P.directories&&P.directories.length>0);O.length>0&&n.open(O[0].id)}return}const C=h.find(O=>O.id==="toggle-spotlight");if(ut(d,C)||d.altKey&&!d.ctrlKey&&!d.metaKey&&d.code==="KeyP"){console.log("[useKeyboardShortcuts] Spotlight shortcut matched!",{spotlightShortcut:C,altKey:d.altKey,code:d.code}),d.preventDefault(),i.toggle();return}const A=h.find(O=>O.id==="toggle-2d-view");if(ut(d,A)){d.preventDefault();const O=I.getState().viewMode,P=O==="3d"?"2d":O==="2d"?"dashboard":"3d";I.setViewMode(P);return}const N=h.find(O=>O.id==="next-working-agent"),_=h.find(O=>O.id==="prev-working-agent");if((ut(d,N)||ut(d,_))&&!f){const O=I.getState();if(O.terminalOpen)return;const K=Array.from(O.agents.values()).filter(q=>q.status==="working");if(K.length===0)return;d.preventDefault();const Y=O.selectedAgentIds.size===1?Array.from(O.selectedAgentIds)[0]:null,$=Y?K.findIndex(q=>q.id===Y):-1;let L;ut(d,N)?L=$===-1?0:($+1)%K.length:L=$===-1?K.length-1:($-1+K.length)%K.length,I.selectAgent(K[L].id),(D=s.current)==null||D.refreshSelectionVisuals();return}const M=h.find(O=>O.id==="delete-selected"),E=h.find(O=>O.id==="delete-selected-backspace");if((ut(d,M)||ut(d,E))&&!f){const O=I.getState();if(O.selectedAgentIds.size>0){d.preventDefault(),o.open();return}if(O.selectedBuildingIds.size>0){d.preventDefault(),r();return}return}};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[s,e,t,n,i,o,r])}function X2(){const[s,e]=x.useState(!1);return window.__tideSetBackNavModal=e,x.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",Zx()||(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),Zx()||(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:s,setShowBackNavModal:e,handleLeave:()=>{e(!1);const n=window.__tideHistoryDepth??2;window.history.go(-(n+1))}}}const _m="agent-order-change";function Xk(s){const e=x.useMemo(()=>new Set(s.map(d=>d.id)),[s]),[t,n]=x.useState(()=>ca(at.AGENT_ORDER,[]));x.useEffect(()=>{const d=h=>{n(h.detail)};return window.addEventListener(_m,d),()=>{window.removeEventListener(_m,d)}},[]);const i=x.useMemo(()=>{const d=t.filter(g=>e.has(g)),h=s.filter(g=>!d.includes(g.id)).map(g=>g.id),p=[...d,...h],f=new Map(s.map(g=>[g.id,g]));return p.map(g=>f.get(g)).filter(g=>g!==void 0)},[s,t,e]),o=x.useCallback(d=>{n(d),Ia(at.AGENT_ORDER,d),window.dispatchEvent(new CustomEvent(_m,{detail:d}))},[]),r=x.useCallback((d,h)=>{const p=i.map(g=>g.id),[f]=p.splice(d,1);p.splice(h,0,f),o(p)},[i,o]),c=x.useCallback(()=>{n([]),Ia(at.AGENT_ORDER,[])},[]);return x.useEffect(()=>{if(e.size===0)return;const d=t.filter(h=>e.has(h));d.length!==t.length&&o(d)},[e,t,o]),{orderedAgents:i,moveAgent:r,resetOrder:c}}let ia,Ap;try{ia=require("@capacitor/core").Capacitor,Ap=require("@capacitor/core").CapacitorHttp}catch{}const ff="deivid11/tide-commander",Z2=`https://api.github.com/repos/${ff}/releases/latest`,Q2=`https://api.github.com/repos/${ff}/releases?per_page=3`,J2=3600*1e3,B0="app_update_dismissed_version",O0="0.53.2";function Zk(){var p;const[s,e]=x.useState({isChecking:!1,updateAvailable:!1,updateInfo:null,recentReleases:[],error:null,currentVersion:O0}),t=((p=ia==null?void 0:ia.getPlatform)==null?void 0:p.call(ia))==="android"||!1,n=f=>f.replace(/^v/,"").split(".").map(y=>parseInt(y,10)||0),i=(f,g)=>{const y=n(f),v=n(g),w=Math.max(y.length,v.length);for(let S=0;S<w;S++){const C=y[S]||0,A=v[S]||0;if(C>A)return 1;if(C<A)return-1}return 0},o=async f=>{var y;if(ia&&Ap&&((y=ia.isNativePlatform)==null?void 0:y.call(ia))===!0){const v=await Ap.get({url:f,headers:{Accept:"application/vnd.github.v3+json"}});return{data:v.data,status:v.status}}else{const v=await fetch(f,{headers:{Accept:"application/vnd.github.v3+json"}});return v.ok?{data:await v.json(),status:v.status}:{data:null,status:v.status}}},r=x.useCallback(async(f=!1)=>{e(g=>({...g,isChecking:!0,error:null}));try{const[g,y]=await Promise.all([o(Z2),o(Q2)]);if(g.status!==200)throw new Error(`GitHub API error: ${g.status}`);const v=g.data,w=v.tag_name;let S=[];y.status===200&&y.data&&(S=y.data.map(M=>({version:M.tag_name,name:M.name,publishedAt:M.published_at,releaseUrl:M.html_url})));const C=localStorage.getItem(B0);if(!f&&C===w)return e(M=>({...M,isChecking:!1,updateAvailable:!1,recentReleases:S})),null;if(!(i(w,O0)>0))return e(M=>({...M,isChecking:!1,updateAvailable:!1,recentReleases:S})),null;const N=v.assets.find(M=>M.name.endsWith(".apk")&&M.content_type==="application/vnd.android.package-archive"),_={version:w,name:v.name,changelog:v.body,releaseUrl:v.html_url,apkUrl:(N==null?void 0:N.browser_download_url)||null,apkSize:(N==null?void 0:N.size)||null,publishedAt:v.published_at};return e(M=>({...M,isChecking:!1,updateAvailable:!0,updateInfo:_,recentReleases:S})),_}catch(g){const y=g instanceof Error?g.message:"Failed to check for updates";return e(v=>({...v,isChecking:!1,error:y})),null}},[]),c=x.useCallback(async()=>{var f,g,y;if(!((f=s.updateInfo)!=null&&f.apkUrl)){(g=s.updateInfo)!=null&&g.releaseUrl&&window.open(s.updateInfo.releaseUrl,"_blank");return}if(!t){(y=s.updateInfo)!=null&&y.releaseUrl&&window.open(s.updateInfo.releaseUrl,"_blank");return}try{window.open(s.updateInfo.apkUrl,"_system"),e(v=>({...v,error:null}))}catch(v){const w=v instanceof Error?v.message:"Failed to open download";e(S=>({...S,error:w}))}},[s.updateInfo,t]),d=x.useCallback(()=>{s.updateInfo&&localStorage.setItem(B0,s.updateInfo.version),e(f=>({...f,updateAvailable:!1,updateInfo:null}))},[s.updateInfo]),h=x.useCallback(()=>{var f;(f=s.updateInfo)!=null&&f.releaseUrl?window.open(s.updateInfo.releaseUrl,"_blank"):window.open(`https://github.com/${ff}/releases`,"_blank")},[s.updateInfo]);return x.useEffect(()=>{if(!t)return;const f=setTimeout(()=>{r()},5e3),g=setInterval(()=>{r()},J2);return()=>{clearTimeout(f),clearInterval(g)}},[t,r]),{...s,isAndroid:t,checkForUpdate:r,downloadAndInstall:c,dismissUpdate:d,openReleasePage:h}}function Us(s){const e=x.useRef(null),t=x.useCallback(i=>{e.current=i.target,i.target===i.currentTarget&&i.stopPropagation()},[]),n=x.useCallback(i=>{i.target===i.currentTarget&&e.current===i.currentTarget&&(i.stopPropagation(),s()),e.current=null},[s]);return{handleMouseDown:t,handleClick:n}}const P0={historyLimit:500,hideCost:!0,showFPS:!1,powerSaving:!1,customAgentNames:[],experimental2DView:!1,experimentalVoiceAssistant:!1,experimentalTTS:!1};function eE(s,e,t,n){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 d;const r=s().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: ${(d=s().agents.get(i.id))==null?void 0:d.status}`)},updateAgentContextStats(i,o){const c=s().agents.get(i);c&&(e(d=>{const h=new Map(d.agents);h.set(i,{...c,contextStats:o,contextUsed:o.totalTokens,contextLimit:o.contextWindow}),d.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,d,h,p,f,g,y,v,w,S){console.log("[Store] spawnAgent called with:",{name:i,agentClass:o,cwd:r,position:c,sessionId:d,useChrome:h,permissionMode:p,initialSkillIds:f,provider:g,codexConfig:y,codexModel:v,model:w,customInstructions:S?`${S.length} chars`:void 0});const C=c?{x:c.x,y:0,z:c.z}:void 0,A={type:"spawn_agent",payload:{name:i,class:o,cwd:r,position:C,sessionId:d,useChrome:h,permissionMode:p,initialSkillIds:f,provider:g,codexConfig:y,codexModel:v,model:w,customInstructions:S}},N=n();if(!N){console.error("[Store] sendMessage is not defined! WebSocket may not be connected");return}N(A),console.log("[Store] Message sent to WebSocket")},createDirectoryAndSpawn(i,o,r){var c;(c=n())==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=n())==null||r({type:"send_command",payload:{agentId:i,command:o}})},refreshAgentContext(i){var o;(o=n())==null||o({type:"request_context_stats",payload:{agentId:i}})},moveAgent(i,o){var d;const c=s().agents.get(i);c&&(e(h=>{const p={...c,position:o},f=new Map(h.agents);f.set(i,p),h.agents=f}),t()),(d=n())==null||d({type:"move_agent",payload:{agentId:i,position:o}})},killAgent(i){var o;(o=n())==null||o({type:"kill_agent",payload:{agentId:i}})},stopAgent(i){var o;(o=n())==null||o({type:"stop_agent",payload:{agentId:i}})},clearContext(i){var o;(o=n())==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=n())==null||o({type:"collapse_context",payload:{agentId:i}})},removeAgentFromServer(i){var o;(o=n())==null||o({type:"remove_agent",payload:{agentId:i}})},renameAgent(i,o){var d;const c=s().agents.get(i);c&&(e(h=>{const p={...c,name:o},f=new Map(h.agents);f.set(i,p),h.agents=f}),t()),(d=n())==null||d({type:"rename_agent",payload:{agentId:i,name:o}})},updateAgentProperties(i,o){var d;const c=s().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 f=new Map(h.agents);f.set(i,p),h.agents=f}),t()),(d=n())==null||d({type:"update_agent_properties",payload:{agentId:i,updates:o}})},getTotalTokens(){let i=0;for(const o of s().agents.values())i+=o.tokensUsed;return i},getSelectedAgents(){const i=s(),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 d=s().agents.get(i);e(h=>{h.toolExecutions.unshift({agentId:i,agentName:(d==null?void 0:d.name)||"Unknown",toolName:o,toolInput:r,timestamp:Date.now()}),h.toolExecutions.length>200&&h.toolExecutions.pop()}),t()},addFileChange(i,o,r){const d=s().agents.get(i);e(h=>{h.fileChanges.unshift({agentId:i,agentName:(d==null?void 0:d.name)||"Unknown",action:o,filePath:r,timestamp:Date.now()}),h.fileChanges.length>200&&h.fileChanges.pop()}),t()},async loadToolHistory(){try{const o=await(await Ct(lt("/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 tE(s,e,t,n){return{addOutput(i,o){const r=n();e(c=>{const d=c.agentOutputs.get(i)||[];if(o.uuid&&d.some(g=>g.uuid===o.uuid))return;let h=[...d,o];h.length>200&&(h=h.slice(-200)),Bl.info(`Store: ${d.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 s().agentOutputs.get(i)||[]},addUserPromptToOutput(i,o){this.addOutput(i,{text:o,isStreaming:!1,timestamp:Date.now(),isUserPrompt:!0})},getLastPrompt(i){return s().lastPrompts.get(i)},setLastPrompt(i,o){e(r=>{r.lastPrompts.set(i,{text:o,timestamp:Date.now()})}),t()},preserveOutputs(){const i=s(),o=new Map;for(const[r,c]of i.agentOutputs)o.set(r,c.map(d=>({...d})));return o},mergeOutputsWithHistory(i,o,r){const c=[...o,...r];return c.sort((d,h)=>d.timestamp-h.timestamp),e(d=>{const h=new Map(d.agentOutputs);h.set(i,c),d.agentOutputs=h}),t(),c}}}function sE(s,e,t,n){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 d=r.get(c.agentId)||[],h={id:`${i.id}-${c.agentId}`,timestamp:i.timestamp,reportId:i.id,analysis:c};if(!d.some(p=>p.reportId===i.id)){const p=[h,...d];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 d=new Map(r.supervisor.narratives);d.set(i,c),r.supervisor.narratives=d}),t()},getNarratives(i){return s().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=n())==null||o({type:"set_supervisor_config",payload:i})},requestSupervisorReport(){var i;e(o=>{o.supervisor.generatingReport=!0}),t(),(i=n())==null||i({type:"request_supervisor_report",payload:{}})},requestAgentSupervisorHistory(i){var o;e(r=>{r.supervisor.loadingHistoryForAgent=i}),t(),(o=n())==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 s().supervisor.agentHistories.get(i)||[]},addAgentAnalysis(i,o){e(r=>{const c=new Map(r.supervisor.agentHistories),d=c.get(i)||[],h={id:`single-${Date.now()}-${i}`,timestamp:Date.now(),reportId:`single-${Date.now()}`,analysis:o};if(!d.some(f=>Math.abs(f.timestamp-h.timestamp)<5e3&&f.analysis.statusDescription===o.statusDescription)){const f=[h,...d];f.length>50&&f.pop(),c.set(i,f),r.supervisor.agentHistories=c}}),t()},isLoadingHistoryForAgent(i){return s().supervisor.loadingHistoryForAgent===i},hasHistoryBeenFetched(i){return s().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=n();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 s().supervisor.globalUsage}}}function nE(s,e,t,n){const i=()=>{var r;const o=Array.from(s().areas.values());(r=n())==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(s().areas.values()),c=r.length===0?-1:Math.max(...r.map(d=>d.zIndex??0));o.zIndex=c+1}e(r=>{r.areas.set(o.id,o)}),i(),t()},updateArea(o,r){s().areas.get(o)&&(e(h=>{Object.assign(h.areas.get(o),r)}),i(),t())},deleteArea(o){e(r=>{r.areas.delete(o),r.selectedAreaId===o&&(r.selectedAreaId=null)}),i(),t()},assignAgentToArea(o,r){const d=s().areas.get(r);d&&!d.assignedAgentIds.includes(o)&&(e(h=>{for(const p of h.areas.values()){const f=p.assignedAgentIds.indexOf(o);f!==-1&&p.assignedAgentIds.splice(f,1)}h.areas.get(r).assignedAgentIds.push(o)}),i(),t())},unassignAgentFromArea(o,r){const d=s().areas.get(r);if(d){const h=d.assignedAgentIds.indexOf(o);h!==-1&&(e(p=>{p.areas.get(r).assignedAgentIds.splice(h,1)}),i(),t())}},addDirectoryToArea(o,r){const d=s().areas.get(o);d&&!d.directories.includes(r)&&(e(h=>{h.areas.get(o).directories.push(r)}),i(),t())},removeDirectoryFromArea(o,r){const d=s().areas.get(o);if(d){const h=d.directories.indexOf(r);h!==-1&&(e(p=>{p.areas.get(o).directories.splice(h,1)}),i(),t())}},getAreaDirectories(o){const r=s().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,d=r.height/2;return o.x>=r.center.x-c&&o.x<=r.center.x+c&&o.z>=r.center.z-d&&o.z<=r.center.z+d}else if(r.type==="circle"&&r.radius){const c=o.x-r.center.x,d=o.z-r.center.z;return c*c+d*d<=r.radius*r.radius}return!1},getAreaForAgent(o){const r=s(),c=r.agents.get(o);if(!c)return null;for(const d of r.areas.values())if(this.isPositionInArea({x:c.position.x,z:c.position.z},d))return d;return null},setAreasFromServer(o){e(r=>{const c=new Map;for(let d=0;d<o.length;d++){const h=o[d];h.directories||(h.directories=[]),(h.zIndex===void 0||h.zIndex===null)&&(h.zIndex=d),h.archived===void 0&&(h.archived=!1),c.set(h.id,h)}r.areas=c}),t()},getAreasInZOrder(){return Array.from(s().areas.values()).sort((r,c)=>(r.zIndex??0)-(c.zIndex??0))},getNextZIndex(){const o=Array.from(s().areas.values());return o.length===0?0:Math.max(...o.map(c=>c.zIndex??0))+1},bringAreaToFront(o){const r=s(),c=r.areas.get(o);if(!c)return;const d=Array.from(r.areas.values()),h=d.length===0?-1:Math.max(...d.map(y=>y.zIndex??0)),p=h+1,f=c.zIndex??0,g=d.filter(y=>(y.zIndex??0)===h);f===h&&g.length===1||(e(y=>{y.areas.get(o).zIndex=p}),i(),t())},sendAreaToBack(o){const r=s(),c=r.areas.get(o);if(!c)return;const d=Array.from(r.areas.values()),h=Math.min(...d.map(g=>g.zIndex??0)),p=c.zIndex??0,f=d.filter(g=>(g.zIndex??0)===h);p===h&&f.length===1||(e(g=>{for(const y of g.areas.values())y.id!==o&&(y.zIndex=(y.zIndex??0)+1);g.areas.get(o).zIndex=0}),i(),t())},setAreaZIndex(o,r){s().areas.get(o)&&(e(h=>{h.areas.get(o).zIndex=r}),i(),t())},archiveArea(o,r){const d=s().areas.get(o);if(!(!d||d.archived)){if(r)for(const h of d.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=s(),d=c.areas.get(o);if(!d||!d.archived)return;const h=d.center,p=r||d.originalCenter||d.center,f=p.x-h.x,g=p.z-h.z,y=Array.from(c.areas.values()),w=(y.length===0?-1:Math.max(...y.map(S=>S.zIndex??0)))+1;e(S=>{const C=S.areas.get(o);if(C.archived=!1,C.archivedAt=void 0,C.center=p,C.zIndex=w,f!==0||g!==0)for(const A of C.assignedAgentIds){const N=S.agents.get(A);N&&(N.position={x:N.position.x+f,y:N.position.y,z:N.position.z+g})}}),i(),t()},getArchivedAreas(){return Array.from(s().areas.values()).filter(o=>o.archived===!0)},getVisibleAreas(){return Array.from(s().areas.values()).filter(o=>!o.archived)},isAgentInArchivedArea(o){const r=s();for(const c of r.areas.values())if(c.archived&&c.assignedAgentIds.includes(o))return!0;return!1}}}function aE(s,e,t,n){const i=()=>{var c;const r=Array.from(s().buildings.values());(c=n())==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 d of r)c.selectedBuildingIds.add(d)}),t()},toggleBuildingSelection(r){e(c=>{c.selectedBuildingIds.has(r)?c.selectedBuildingIds.delete(r):c.selectedBuildingIds.add(r)}),t()},isBuildingSelected(r){return s().selectedBuildingIds.has(r)},getSelectedBuildingIds(){return Array.from(s().selectedBuildingIds)},deleteSelectedBuildings(){var c,d,h;const r=s();for(const p of r.selectedBuildingIds){const f=r.buildings.get(p);((c=f==null?void 0:f.pm2)!=null&&c.enabled||(d=f==null?void 0:f.docker)!=null&&d.enabled)&&((h=n())==null||h({type:"building_command",payload:{buildingId:p,command:"delete"}}))}e(p=>{const f=new Map(p.buildings);for(const g of p.selectedBuildingIds)f.delete(g);p.buildings=f,p.selectedBuildingIds.clear()}),i(),t()},addBuilding(r){e(c=>{const d=new Map(c.buildings);d.set(r.id,r),c.buildings=d}),i(),t()},updateBuilding(r,c){const h=s().buildings.get(r);h&&(e(p=>{const f=new Map(p.buildings);f.set(r,{...h,...c}),p.buildings=f}),i(),t())},deleteBuilding(r){var h,p,f;const d=s().buildings.get(r);((h=d==null?void 0:d.pm2)!=null&&h.enabled||(p=d==null?void 0:d.docker)!=null&&p.enabled)&&((f=n())==null||f({type:"building_command",payload:{buildingId:r,command:"delete"}})),e(g=>{const y=new Map(g.buildings);y.delete(r),g.buildings=y,g.selectedBuildingIds.delete(r)}),i(),t()},moveBuilding(r,c){const h=s().buildings.get(r);h&&(e(p=>{const f=new Map(p.buildings);f.set(r,{...h,position:c}),p.buildings=f}),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 d;(d=n())==null||d({type:"building_command",payload:{buildingId:r,command:c}})},addBuildingLogs(r,c){e(d=>{const p=[...d.buildingLogs.get(r)||[],c];p.length>500&&p.splice(0,p.length-500);const f=new Map(d.buildingLogs);f.set(r,p),d.buildingLogs=f}),t()},getBuildingLogs(r){return s().buildingLogs.get(r)||[]},clearBuildingLogs(r){e(c=>{const d=new Map(c.buildingLogs);d.delete(r),c.buildingLogs=d}),t()},setBuildingsFromServer(r){e(c=>{const d=new Map;for(const h of r)d.set(h.id,h);c.buildings=d}),t()},updateBuildingFromServer(r){e(c=>{const d=new Map(c.buildings);d.set(r.id,r),c.buildings=d}),t()},removeBuildingFromServer(r){e(c=>{const d=new Map(c.buildings);d.delete(r),c.buildings=d,c.selectedBuildingIds.delete(r)}),t()},startLogStreaming(r,c=100){var h,p,f;const d=s().buildings.get(r);e(g=>{const y=new Map(g.streamingBuildingLogs);y.set(r,""),g.streamingBuildingLogs=y}),(h=d==null?void 0:d.docker)!=null&&h.enabled?(p=n())==null||p({type:"docker_logs_start",payload:{buildingId:r,lines:c}}):(f=n())==null||f({type:"pm2_logs_start",payload:{buildingId:r,lines:c}})},stopLogStreaming(r){var d,h,p;const c=s().buildings.get(r);(d=c==null?void 0:c.docker)!=null&&d.enabled?(h=n())==null||h({type:"docker_logs_stop",payload:{buildingId:r}}):(p=n())==null||p({type:"pm2_logs_stop",payload:{buildingId:r}})},appendStreamingLogChunk(r,c){e(d=>{const h=d.streamingBuildingLogs.get(r)||"",p=500*1024;let f=h+c;if(f.length>p){const y=f.indexOf(`
140
+ `,side:wk});i.add(new ke(o,r)),i.add(new sf(16777215,1));const c=n.fromScene(i,.04).texture;t.environment=c,n.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),onResizeStart:(e,t)=>this.drawingManager.startResize(e,t),onResizeMove:e=>this.drawingManager.updateResize(e),onResizeEnd:()=>this.drawingManager.finishResize(),onGroundClickOutsideArea:()=>this.inputEventHandlers.handleGroundClickOutsideArea(),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)=>I.updateBuildingPosition(e,t),onContextMenu:(e,t,n)=>this.callbackManager.triggerContextMenu(e,t,n),onActivity:()=>this.renderLoop.markActivity(),onToggleTerminal:()=>I.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.setBuildingAtPositionGetter(e=>{const t=this.buildingManager.getBuildingAtPosition(e);return t?{id:t.id}:null}),this.inputHandler.setBuildingPositionsGetter(()=>{const e=new Map;for(const[t,n]of this.buildingManager.getBuildingMeshData())e.set(t,n.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,n]of this.agentManager.getAgentMeshes())if(this.proceduralAnimator.has(t)&&n.animations.size===0){const i=n.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,n){for(const[,i]of t){const o=e.position.distanceTo(i.group.position),r=Math.max(.5,Math.min(2.5,o/15))*n,c=i.group.userData.isBoss===!0,d=i.group.getObjectByName("statusBar"),h=i.group.getObjectByName("nameLabelSprite");if(d){const f=c?2:1.6,g=2560/4096;d.scale.set(f*r,f*g*r,1)}if(h){const f=c?2.5:2,g=1024/8192;h.scale.set(f*r,f*g*r,1)}const p=i.group.getObjectByName("combinedUI");if(p){const f=c?2:1.6,g=1024/2048;p.scale.set(f*r,f*g*r,1)}if(!d&&!p){const f=i.group.getObjectByName("nameLabel");if(f){const v=.3*r;f.scale.set(v*(f.userData.aspectRatio||2),v,1)}const g=i.group.getObjectByName("manaBar");g&&g.scale.set(.9,.14,1);const y=i.group.getObjectByName("idleTimer");y&&y.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))*n,c=i.group.getObjectByName("buildingLabel");if(c){const d=.3*r;c.scale.set(d*(c.userData.aspectRatio||2),d,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,n){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createSpeechBubble(e,t,n)}showDelegationEffect(e,t){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.createDelegationEffect(e,t)}addSubagentEffect(e,t,n,i){this.effectsManager.setAgentMeshes(this.agentManager.getAgentMeshes()),this.effectsManager.addSubagentEffect(e,t,n,i)}completeSubagentEffect(e){this.effectsManager.completeSubagentEffect(e)}removeSubagentEffect(e){this.effectsManager.removeSubagentEffect(e)}focusAgent(e){this.cameraManager.focusAgent(e)}callSubordinates(e){var r;const n=I.getState().agents.get(e);if(!n||!(n.isBoss||n.class==="boss")||!((r=n.subordinateIds)!=null&&r.length))return;const i=new nt(n.position.x,n.position.y,n.position.z),o=this.inputHandler.calculateFormationPositions(i,n.subordinateIds.length);this.effectsManager.createMoveOrderEffect(i.clone()),n.subordinateIds.forEach((c,d)=>{const h=this.agentManager.getAgentMeshes().get(c);I.moveAgent(c,o[d]),h&&this.movementAnimator.startMovement(c,h,o[d])})}setDrawingTool(e){this.drawingManager.setTool(e),I.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)}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 n=this.sceneCore.getCanvas();n.removeEventListener("webglcontextlost",this.onContextLost),n.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:_N.getUsage(),agentMeshCount:this.agentManager.getAgentMeshes().size,bossLineCount:0}}getRenderStats(){var t,n;const e=(n=(t=this.sceneCore.getRenderer())==null?void 0:t.info)==null?void 0:n.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 n;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),(n=this.resizeObserver)==null||n.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 Du="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 Qu(){return typeof window<"u"?window.__tidePersistedScene??null:null}function Wk(){return typeof window<"u"?window.__tidePersistedCanvas??null:null}function E2(){return typeof window<"u"?window.__tideWsConnected??!1:!1}function Pl(s){typeof window<"u"&&(window.__tidePersistedScene=s)}function Lu(s){typeof window<"u"&&(window.__tidePersistedCanvas=s)}function Kk(s){typeof window<"u"&&(window.__tideWsConnected=s)}function _2(s){typeof window<"u"&&(window.__tideIsPageUnloading=s)}function R2(){sessionStorage.setItem(Du,"true")}function pu(s){_2(!0),sessionStorage.removeItem(Du),Bk(),AN(),window.__tideScene&&(window.__tideScene=null);const e=Qu();e?(console.log("[App] Calling persistedScene.dispose()"),e.dispose(),Pl(null)):console.log("[App] No persistedScene to dispose"),Lu(null),Kk(!1);const t=document.getElementById("battlefield");t&&t.remove();const n=document.getElementById("app");n&&(n.innerHTML="")}function D2(){var i,o;if(window.__tideAppInitialized)return;if(window.__tideAppInitialized=!0,sessionStorage.getItem(Du)==="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=Qu();if(e){console.log("[App] Cleaning up stale persistedScene");try{e.dispose()}catch{}Pl(null)}const t=document.getElementById("battlefield"),n=Wk();t&&t!==n&&t.remove(),sessionStorage.removeItem(Du)}function L2(){typeof window>"u"||(D2(),window.addEventListener("pageshow",s=>{s.persisted&&(console.log("[App] Page restored from bfcache - cleaning up"),pu(),window.location.reload())}),window.onunload=()=>pu(),window.onbeforeunload=s=>{if(pu(),window.innerWidth<=768)return s.preventDefault(),""},window.addEventListener("pagehide",s=>{pu(`pagehide (persisted=${s.persisted})`)}))}L2();const R0={showTrees:!0,showBushes:!0,showHouse:!0,showLamps:!0,showGrass:!0,showClouds:!0,fogDensity:1,floorStyle:"concrete",brightness:1,skyColor:null},D0={saturation:2,roughness:.5,metalness:-1,emissiveBoost:0,envMapIntensity:1,wireframe:!1,colorMode:"normal"},L0={idleAnimation:"sit",workingAnimation:"sprint"},B2=0;function Vk(){const s={characterScale:2,indicatorScale:1,gridVisible:!0,timeMode:"day",terrain:R0,modelStyle:D0,animations:L0,fpsLimit:B2},e=ca(at.CONFIG,null);return e?{characterScale:e.characterScale??s.characterScale,indicatorScale:e.indicatorScale??s.indicatorScale,gridVisible:e.gridVisible??s.gridVisible,timeMode:e.timeMode??s.timeMode,terrain:{...R0,...e.terrain},modelStyle:{...D0,...e.modelStyle},animations:{...L0,...e.animations},fpsLimit:e.fpsLimit??s.fpsLimit}:s}function O2(s){Ia(at.CONFIG,s)}typeof window<"u"&&!window.__tideHmrRefreshListeners&&(window.__tideHmrRefreshListeners=new Set);function Yk(){console.log("[Tide HMR] Manual scene refresh triggered");const s=Qu();if(s){try{s.dispose()}catch(t){console.warn("[Tide HMR] Error disposing scene:",t)}Pl(null)}Lu(null),window.__tideScene&&(window.__tideScene=null);const e=document.getElementById("battlefield");if(e){const t=e.getContext("webgl2")||e.getContext("webgl");if(t){const n=t.getExtension("WEBGL_lose_context");n&&n.loseContext()}}window.__tideHmrPendingSceneChanges=!1,window.location.reload()}typeof window<"u"&&(window.__tideHmrSceneRefresh=Yk);function P2({canvasRef:s,selectionBoxRef:e,showToast:t,showAgentNotification:n,toolboxModal:i,contextMenu:o,setHoveredAgentPopup:r,setBuildingPopup:c,getBuildingPopup:d,openBuildingModal:h,openPM2LogsModal:p,openBossLogsModal:f,openDatabasePanel:g}){const y=x.useRef(null),v=x.useRef(null),w=x.useRef(null);return x.useEffect(()=>{if(!s.current||!e.current)return;let S=!1;const C=Qu(),N=Wk()===s.current;function _(){var M,E,z,T,R,D,O;(M=y.current)==null||M.setOnToast(t),(E=y.current)==null||E.setOnBuildingClick((P,K)=>{I.selectBuilding(P);const Y=I.getState().buildings.get(P);(Y==null?void 0:Y.type)==="folder"&&Y.folderPath?I.openFileExplorer(Y.folderPath):(Y==null?void 0:Y.type)==="server"||(Y==null?void 0:Y.type)==="boss"||(Y==null?void 0:Y.type)==="database"?(v.current&&clearTimeout(v.current),v.current=setTimeout(()=>{c({buildingId:P,screenPos:K,fromClick:!0}),v.current=null},150)):h(P)}),(z=y.current)==null||z.setOnContextMenu((P,K,Y)=>{o.open(P,K,Y)}),(T=y.current)==null||T.setOnAgentHover(()=>{}),(R=y.current)==null||R.setOnBuildingHover((P,K)=>{const Y=d();if(P&&K){const $=I.getState().buildings.get(P);(($==null?void 0:$.type)==="server"||($==null?void 0:$.type)==="boss"||($==null?void 0:$.type)==="database")&&!(Y!=null&&Y.fromClick)&&c({buildingId:P,screenPos:K,fromClick:!1})}else Y!=null&&Y.fromClick||c(null)}),(D=y.current)==null||D.setOnGroundClick(()=>{c(null)}),(O=y.current)==null||O.setOnBuildingDoubleClick(P=>{var Y;v.current&&(clearTimeout(v.current),v.current=null),c(null);const K=I.getState().buildings.get(P);(K==null?void 0:K.type)==="server"&&((Y=K.pm2)!=null&&Y.enabled)?p==null||p(P):(K==null?void 0:K.type)==="boss"?f==null||f(P):(K==null?void 0:K.type)==="database"?g==null||g(P):(K==null?void 0:K.type)==="folder"&&K.folderPath?I.openFileExplorer(K.folderPath):h(P)})}if(C&&N){y.current=C,console.log("[Tide] Reusing existing scene (StrictMode remount)");const M=I.getState();C.syncAreas(),C.syncBuildings(),M.agents.size>0&&(console.log("[Tide] Re-syncing agents from store after remount:",M.agents.size),C.syncAgents(Array.from(M.agents.values()))),_()}else{const M=s.current,E=e.current,z=()=>{if(S){console.log("[Tide] Effect cleaned up before scene init, skipping");return}if(!M.isConnected||!E.isConnected){console.warn("[Tide] Canvas disconnected before initialization");return}(!M.clientWidth||!M.clientHeight)&&(console.log("[Tide] Canvas has no CSS dimensions, using window fallback"),M.style.width="100%",M.style.height="100%",M.offsetHeight),(!M.clientWidth||!M.clientHeight)&&(M.width=window.innerWidth,M.height=window.innerHeight),R2();try{const T=new M2(M,E);y.current=T,Pl(T),Lu(M);const R=Vk();T.setCharacterScale(R.characterScale),T.setIndicatorScale(R.indicatorScale),T.setGridVisible(R.gridVisible),T.setTimeMode(R.timeMode),T.setTerrainConfig(R.terrain),T.setFloorStyle(R.terrain.floorStyle,!0),T.setAgentModelStyle(R.modelStyle),T.setIdleAnimation(R.animations.idleAnimation),T.setWorkingAnimation(R.animations.workingAnimation),T.setFpsLimit(R.fpsLimit),T.syncAreas(),T.syncBuildings(),T.loadCharacterModels().then(()=>{console.log("[Tide] Character models ready");const D=I.getState();D.customAgentClasses.size>0&&(console.log("[Tide] Applying custom classes from store:",D.customAgentClasses.size),T.setCustomAgentClasses(D.customAgentClasses)),D.agents.size>0&&(console.log("[Tide] Syncing agents from store:",D.agents.size),T.syncAgents(Array.from(D.agents.values()))),T.upgradeAgentModels()}).catch(D=>{console.warn("[Tide] Some models failed to load, using fallback:",D)}),_()}catch(T){console.error("[Tide] Failed to initialize 3D scene:",T)}};w.current=requestAnimationFrame(z)}return _k({onAgentCreated:M=>{var E,z;(E=y.current)==null||E.addAgent(M),(z=window.__spawnModalSuccess)==null||z.call(window)},onAgentUpdated:(M,E)=>{var z;(z=y.current)==null||z.updateAgent(M,E)},onAgentDeleted:M=>{var E;(E=y.current)==null||E.removeAgent(M)},onAgentsSync:M=>{var E;(E=y.current)==null||E.syncAgents(M)},onAreasSync:()=>{var E,z;(E=y.current)==null||E.syncAreas();const M=Array.from(I.getState().agents.values());(z=y.current)==null||z.syncAgents(M)},onSpawnError:()=>{var M;(M=window.__spawnModalError)==null||M.call(window)},onSpawnSuccess:()=>{var M;(M=window.__spawnModalSuccess)==null||M.call(window)},onDirectoryNotFound:M=>{var E;(E=window.__spawnModalDirNotFound)==null||E.call(window,M)},onToolUse:(M,E,z)=>{var T;(T=y.current)==null||T.showToolBubble(M,E,z)},onDelegation:(M,E)=>{var z;(z=y.current)==null||z.showDelegationEffect(M,E)},onCustomClassesSync:M=>{var E,z;(E=y.current)==null||E.setCustomAgentClasses(M),(z=y.current)==null||z.upgradeAgentModels()},onBuildingUpdated:M=>{var E;(E=y.current)==null||E.updateBuilding(M)},onSubagentStarted:M=>{var E;(E=y.current)==null||E.addSubagentEffect(M.id,M.parentAgentId,M.name,M.subagentType)},onSubagentCompleted:M=>{var T;const E=I.getSubagent(M)||I.getSubagentByToolUseId(M),z=(E==null?void 0:E.id)||M;(T=y.current)==null||T.completeSubagentEffect(z),setTimeout(()=>{var R;(R=y.current)==null||R.removeSubagentEffect(z)},3e4)}}),()=>{var M;S=!0,w.current!==null&&(cancelAnimationFrame(w.current),w.current=null),!((M=s.current)!=null&&M.isConnected)&&y.current&&(console.log("[Tide] 3D canvas unmounted - disposing scene to free memory"),NN(),y.current.dispose(),y.current=null,Pl(null),Lu(null))}},[s.current,e.current]),y}let Il,er;try{Il=require("@capacitor/local-notifications").LocalNotifications,er=require("@capacitor/core").Capacitor}catch{}let I2=1;const z2="agent_alerts";function pf(){var s;return((s=er==null?void 0:er.isNativePlatform)==null?void 0:s.call(er))??!1}async function F2(){return pf()?(await Il.requestPermissions()).display==="granted":"Notification"in window?await Notification.requestPermission()==="granted":!1}async function H2(s){const{title:e,body:t,icon:n,data:i}=s;pf()?await Il.schedule({notifications:[{id:I2++,title:e,body:t,schedule:{at:new Date(Date.now()+100)},extra:i,channelId:z2,smallIcon:"ic_launcher",autoCancel:!0}]}):"Notification"in window&&Notification.permission==="granted"&&new Notification(e,{body:t,icon:n,data:i})}async function $2(s){pf()&&Il&&await Il.addListener("localNotificationActionPerformed",e=>{s&&e.notification.extra&&s(e.notification.extra)})}function U2({showToast:s,showAgentNotification:e}){const t=x.useRef(!1);x.useEffect(()=>{if(t.current||E2())return;t.current=!0,_k({onToast:s,onReconnect:()=>{I.triggerReconnect()},onAgentNotification:i=>{e(i)}}),Ol(),Kk(!0),F2(),$2(i=>{i.agentId&&typeof i.agentId=="string"&&I.selectAgent(i.agentId)});const n=()=>{console.log("[Tide] App resumed from background, reconnecting..."),setTimeout(()=>Ol(),100)};return window.addEventListener("tideAppResume",n),()=>{window.removeEventListener("tideAppResume",n)}},[s,e])}function G2(s){x.useEffect(()=>{let e="",t="",n=new Map;const i=o=>{var d;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},${((d=p.subordinateIds)==null?void 0:d.length)??0}`.split("").reduce((y,v)=>(y<<5)-y+v.charCodeAt(0),0);c.set(h,g),n.get(h)!==g&&(r=!0)}return c.size!==n.size&&(r=!0),{newVersion:c,changed:r}};return I.subscribe(()=>{var g;const o=I.getState(),r=Array.from(o.selectedAgentIds).sort().join(","),c=Array.from(o.selectedBuildingIds).sort().join(","),d=r!==e,h=c!==t,{newVersion:p,changed:f}=i(o.agents);(d||h||f)&&(e=r,t=c,n=p,(g=s.current)==null||g.refreshSelectionVisuals())})},[s])}function q2(s){x.useEffect(()=>{var n;(n=s.current)==null||n.syncAreas();let e=0,t=0;return I.subscribe(()=>{var c,d;const o=I.getState().areas;if(o.size!==e){e=o.size,t=Date.now(),(c=s.current)==null||c.syncAreas();return}let r=0;for(const[h,p]of o){let f=h.charCodeAt(0);f+=(p.width??0)+(p.height??0)+(p.radius??0),f+=Math.floor(p.center.x*100)+Math.floor(p.center.z*100),f+=(p.zIndex??0)*1e3;for(let g=0;g<p.name.length;g++)f+=p.name.charCodeAt(g);for(let g=0;g<p.color.length;g++)f+=p.color.charCodeAt(g);r^=f|0}r!==t&&(t=r,(d=s.current)==null||d.syncAreas())})},[s])}function W2(s){x.useEffect(()=>{var n;(n=s.current)==null||n.syncBuildings();let e=0,t=0;return I.subscribe(()=>{var c,d;const o=I.getState().buildings;if(o.size!==e){e=o.size,t=Date.now(),(c=s.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 f=`${p.style||""}${p.name}${p.status}`;for(let g=0;g<f.length;g++)r=(r<<5)-r+f.charCodeAt(g)|0}r!==t&&(t=r,(d=s.current)==null||d.syncBuildings())})},[s])}function K2(s,e){x.useEffect(()=>{var t;(t=s.current)==null||t.highlightArea(e)},[s,e])}function V2(s,e){x.useEffect(()=>{var t;(t=s.current)==null||t.setPowerSaving(e)},[s,e])}function Y2({sceneRef:s,spawnModal:e,commanderModal:t,explorerModal:n,spotlightModal:i,deleteConfirmModal:o,onRequestBuildingDelete:r}){x.useEffect(()=>{const c=d=>{var z,T,R,D;const h=I.getShortcuts(),p=d.target,f=p.tagName==="INPUT"||p.tagName==="TEXTAREA",g=h.find(O=>O.id==="deselect-all");if(ut(d,g)){const O=I.getState();if(O.activeTool==="rectangle"||O.activeTool==="circle"){(z=s.current)==null||z.setDrawingTool(null),typeof window<"u"&&window.__tideScene2D_setDrawingTool&&window.__tideScene2D_setDrawingTool(null);return}e.isOpen?e.close():O.terminalOpen?(I.setTerminalOpen(!1),document.activeElement instanceof HTMLElement&&document.activeElement.blur()):(I.deselectAll(),(T=s.current)==null||T.refreshSelectionVisuals())}for(let O=1;O<=9;O++){const P=h.find(K=>K.id===`select-agent-${O}`);if(ut(d,P)){d.preventDefault();const K=I.getState(),Y=O-1,$=Array.from(K.agents.keys());Y<$.length&&(I.selectAgent($[Y]),(R=s.current)==null||R.refreshSelectionVisuals());return}}const y=h.find(O=>O.id==="spawn-agent");if(ut(d,y)){d.preventDefault(),e.open();return}const v=h.find(O=>O.id==="toggle-commander-tab");if(ut(d,v)&&!f){d.preventDefault(),t.toggle();return}const w=h.find(O=>O.id==="toggle-commander");if(ut(d,w)){d.preventDefault(),t.toggle();return}const S=h.find(O=>O.id==="toggle-file-explorer");if(ut(d,S)){if(d.preventDefault(),n.isOpen)n.close();else{const O=Array.from(I.getState().areas.values()).filter(P=>P.directories&&P.directories.length>0);O.length>0&&n.open(O[0].id)}return}const C=h.find(O=>O.id==="toggle-spotlight");if(ut(d,C)||d.altKey&&!d.ctrlKey&&!d.metaKey&&d.code==="KeyP"){console.log("[useKeyboardShortcuts] Spotlight shortcut matched!",{spotlightShortcut:C,altKey:d.altKey,code:d.code}),d.preventDefault(),i.toggle();return}const A=h.find(O=>O.id==="toggle-2d-view");if(ut(d,A)){d.preventDefault();const O=I.getState().viewMode,P=O==="3d"?"2d":O==="2d"?"dashboard":"3d";I.setViewMode(P);return}const N=h.find(O=>O.id==="next-working-agent"),_=h.find(O=>O.id==="prev-working-agent");if((ut(d,N)||ut(d,_))&&!f){const O=I.getState();if(O.terminalOpen)return;const K=Array.from(O.agents.values()).filter(q=>q.status==="working");if(K.length===0)return;d.preventDefault();const Y=O.selectedAgentIds.size===1?Array.from(O.selectedAgentIds)[0]:null,$=Y?K.findIndex(q=>q.id===Y):-1;let L;ut(d,N)?L=$===-1?0:($+1)%K.length:L=$===-1?K.length-1:($-1+K.length)%K.length,I.selectAgent(K[L].id),(D=s.current)==null||D.refreshSelectionVisuals();return}const M=h.find(O=>O.id==="delete-selected"),E=h.find(O=>O.id==="delete-selected-backspace");if((ut(d,M)||ut(d,E))&&!f){const O=I.getState();if(O.selectedAgentIds.size>0){d.preventDefault(),o.open();return}if(O.selectedBuildingIds.size>0){d.preventDefault(),r();return}return}};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[s,e,t,n,i,o,r])}function X2(){const[s,e]=x.useState(!1);return window.__tideSetBackNavModal=e,x.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",Zx()||(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),Zx()||(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:s,setShowBackNavModal:e,handleLeave:()=>{e(!1);const n=window.__tideHistoryDepth??2;window.history.go(-(n+1))}}}const _m="agent-order-change";function Xk(s){const e=x.useMemo(()=>new Set(s.map(d=>d.id)),[s]),[t,n]=x.useState(()=>ca(at.AGENT_ORDER,[]));x.useEffect(()=>{const d=h=>{n(h.detail)};return window.addEventListener(_m,d),()=>{window.removeEventListener(_m,d)}},[]);const i=x.useMemo(()=>{const d=t.filter(g=>e.has(g)),h=s.filter(g=>!d.includes(g.id)).map(g=>g.id),p=[...d,...h],f=new Map(s.map(g=>[g.id,g]));return p.map(g=>f.get(g)).filter(g=>g!==void 0)},[s,t,e]),o=x.useCallback(d=>{n(d),Ia(at.AGENT_ORDER,d),window.dispatchEvent(new CustomEvent(_m,{detail:d}))},[]),r=x.useCallback((d,h)=>{const p=i.map(g=>g.id),[f]=p.splice(d,1);p.splice(h,0,f),o(p)},[i,o]),c=x.useCallback(()=>{n([]),Ia(at.AGENT_ORDER,[])},[]);return x.useEffect(()=>{if(e.size===0)return;const d=t.filter(h=>e.has(h));d.length!==t.length&&o(d)},[e,t,o]),{orderedAgents:i,moveAgent:r,resetOrder:c}}let ia,Ap;try{ia=require("@capacitor/core").Capacitor,Ap=require("@capacitor/core").CapacitorHttp}catch{}const ff="deivid11/tide-commander",Z2=`https://api.github.com/repos/${ff}/releases/latest`,Q2=`https://api.github.com/repos/${ff}/releases?per_page=3`,J2=3600*1e3,B0="app_update_dismissed_version",O0="0.53.4";function Zk(){var p;const[s,e]=x.useState({isChecking:!1,updateAvailable:!1,updateInfo:null,recentReleases:[],error:null,currentVersion:O0}),t=((p=ia==null?void 0:ia.getPlatform)==null?void 0:p.call(ia))==="android"||!1,n=f=>f.replace(/^v/,"").split(".").map(y=>parseInt(y,10)||0),i=(f,g)=>{const y=n(f),v=n(g),w=Math.max(y.length,v.length);for(let S=0;S<w;S++){const C=y[S]||0,A=v[S]||0;if(C>A)return 1;if(C<A)return-1}return 0},o=async f=>{var y;if(ia&&Ap&&((y=ia.isNativePlatform)==null?void 0:y.call(ia))===!0){const v=await Ap.get({url:f,headers:{Accept:"application/vnd.github.v3+json"}});return{data:v.data,status:v.status}}else{const v=await fetch(f,{headers:{Accept:"application/vnd.github.v3+json"}});return v.ok?{data:await v.json(),status:v.status}:{data:null,status:v.status}}},r=x.useCallback(async(f=!1)=>{e(g=>({...g,isChecking:!0,error:null}));try{const[g,y]=await Promise.all([o(Z2),o(Q2)]);if(g.status!==200)throw new Error(`GitHub API error: ${g.status}`);const v=g.data,w=v.tag_name;let S=[];y.status===200&&y.data&&(S=y.data.map(M=>({version:M.tag_name,name:M.name,publishedAt:M.published_at,releaseUrl:M.html_url})));const C=localStorage.getItem(B0);if(!f&&C===w)return e(M=>({...M,isChecking:!1,updateAvailable:!1,recentReleases:S})),null;if(!(i(w,O0)>0))return e(M=>({...M,isChecking:!1,updateAvailable:!1,recentReleases:S})),null;const N=v.assets.find(M=>M.name.endsWith(".apk")&&M.content_type==="application/vnd.android.package-archive"),_={version:w,name:v.name,changelog:v.body,releaseUrl:v.html_url,apkUrl:(N==null?void 0:N.browser_download_url)||null,apkSize:(N==null?void 0:N.size)||null,publishedAt:v.published_at};return e(M=>({...M,isChecking:!1,updateAvailable:!0,updateInfo:_,recentReleases:S})),_}catch(g){const y=g instanceof Error?g.message:"Failed to check for updates";return e(v=>({...v,isChecking:!1,error:y})),null}},[]),c=x.useCallback(async()=>{var f,g,y;if(!((f=s.updateInfo)!=null&&f.apkUrl)){(g=s.updateInfo)!=null&&g.releaseUrl&&window.open(s.updateInfo.releaseUrl,"_blank");return}if(!t){(y=s.updateInfo)!=null&&y.releaseUrl&&window.open(s.updateInfo.releaseUrl,"_blank");return}try{window.open(s.updateInfo.apkUrl,"_system"),e(v=>({...v,error:null}))}catch(v){const w=v instanceof Error?v.message:"Failed to open download";e(S=>({...S,error:w}))}},[s.updateInfo,t]),d=x.useCallback(()=>{s.updateInfo&&localStorage.setItem(B0,s.updateInfo.version),e(f=>({...f,updateAvailable:!1,updateInfo:null}))},[s.updateInfo]),h=x.useCallback(()=>{var f;(f=s.updateInfo)!=null&&f.releaseUrl?window.open(s.updateInfo.releaseUrl,"_blank"):window.open(`https://github.com/${ff}/releases`,"_blank")},[s.updateInfo]);return x.useEffect(()=>{if(!t)return;const f=setTimeout(()=>{r()},5e3),g=setInterval(()=>{r()},J2);return()=>{clearTimeout(f),clearInterval(g)}},[t,r]),{...s,isAndroid:t,checkForUpdate:r,downloadAndInstall:c,dismissUpdate:d,openReleasePage:h}}function Us(s){const e=x.useRef(null),t=x.useCallback(i=>{e.current=i.target,i.target===i.currentTarget&&i.stopPropagation()},[]),n=x.useCallback(i=>{i.target===i.currentTarget&&e.current===i.currentTarget&&(i.stopPropagation(),s()),e.current=null},[s]);return{handleMouseDown:t,handleClick:n}}const P0={historyLimit:500,hideCost:!0,showFPS:!1,powerSaving:!1,customAgentNames:[],experimental2DView:!1,experimentalVoiceAssistant:!1,experimentalTTS:!1};function eE(s,e,t,n){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 d;const r=s().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: ${(d=s().agents.get(i.id))==null?void 0:d.status}`)},updateAgentContextStats(i,o){const c=s().agents.get(i);c&&(e(d=>{const h=new Map(d.agents);h.set(i,{...c,contextStats:o,contextUsed:o.totalTokens,contextLimit:o.contextWindow}),d.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,d,h,p,f,g,y,v,w,S){console.log("[Store] spawnAgent called with:",{name:i,agentClass:o,cwd:r,position:c,sessionId:d,useChrome:h,permissionMode:p,initialSkillIds:f,provider:g,codexConfig:y,codexModel:v,model:w,customInstructions:S?`${S.length} chars`:void 0});const C=c?{x:c.x,y:0,z:c.z}:void 0,A={type:"spawn_agent",payload:{name:i,class:o,cwd:r,position:C,sessionId:d,useChrome:h,permissionMode:p,initialSkillIds:f,provider:g,codexConfig:y,codexModel:v,model:w,customInstructions:S}},N=n();if(!N){console.error("[Store] sendMessage is not defined! WebSocket may not be connected");return}N(A),console.log("[Store] Message sent to WebSocket")},createDirectoryAndSpawn(i,o,r){var c;(c=n())==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=n())==null||r({type:"send_command",payload:{agentId:i,command:o}})},refreshAgentContext(i){var o;(o=n())==null||o({type:"request_context_stats",payload:{agentId:i}})},moveAgent(i,o){var d;const c=s().agents.get(i);c&&(e(h=>{const p={...c,position:o},f=new Map(h.agents);f.set(i,p),h.agents=f}),t()),(d=n())==null||d({type:"move_agent",payload:{agentId:i,position:o}})},killAgent(i){var o;(o=n())==null||o({type:"kill_agent",payload:{agentId:i}})},stopAgent(i){var o;(o=n())==null||o({type:"stop_agent",payload:{agentId:i}})},clearContext(i){var o;(o=n())==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=n())==null||o({type:"collapse_context",payload:{agentId:i}})},removeAgentFromServer(i){var o;(o=n())==null||o({type:"remove_agent",payload:{agentId:i}})},renameAgent(i,o){var d;const c=s().agents.get(i);c&&(e(h=>{const p={...c,name:o},f=new Map(h.agents);f.set(i,p),h.agents=f}),t()),(d=n())==null||d({type:"rename_agent",payload:{agentId:i,name:o}})},updateAgentProperties(i,o){var d;const c=s().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 f=new Map(h.agents);f.set(i,p),h.agents=f}),t()),(d=n())==null||d({type:"update_agent_properties",payload:{agentId:i,updates:o}})},getTotalTokens(){let i=0;for(const o of s().agents.values())i+=o.tokensUsed;return i},getSelectedAgents(){const i=s(),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 d=s().agents.get(i);e(h=>{h.toolExecutions.unshift({agentId:i,agentName:(d==null?void 0:d.name)||"Unknown",toolName:o,toolInput:r,timestamp:Date.now()}),h.toolExecutions.length>200&&h.toolExecutions.pop()}),t()},addFileChange(i,o,r){const d=s().agents.get(i);e(h=>{h.fileChanges.unshift({agentId:i,agentName:(d==null?void 0:d.name)||"Unknown",action:o,filePath:r,timestamp:Date.now()}),h.fileChanges.length>200&&h.fileChanges.pop()}),t()},async loadToolHistory(){try{const o=await(await Ct(lt("/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 tE(s,e,t,n){return{addOutput(i,o){const r=n();e(c=>{const d=c.agentOutputs.get(i)||[];if(o.uuid&&d.some(g=>g.uuid===o.uuid))return;let h=[...d,o];h.length>200&&(h=h.slice(-200)),Bl.info(`Store: ${d.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 s().agentOutputs.get(i)||[]},addUserPromptToOutput(i,o){this.addOutput(i,{text:o,isStreaming:!1,timestamp:Date.now(),isUserPrompt:!0})},getLastPrompt(i){return s().lastPrompts.get(i)},setLastPrompt(i,o){e(r=>{r.lastPrompts.set(i,{text:o,timestamp:Date.now()})}),t()},preserveOutputs(){const i=s(),o=new Map;for(const[r,c]of i.agentOutputs)o.set(r,c.map(d=>({...d})));return o},mergeOutputsWithHistory(i,o,r){const c=[...o,...r];return c.sort((d,h)=>d.timestamp-h.timestamp),e(d=>{const h=new Map(d.agentOutputs);h.set(i,c),d.agentOutputs=h}),t(),c}}}function sE(s,e,t,n){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 d=r.get(c.agentId)||[],h={id:`${i.id}-${c.agentId}`,timestamp:i.timestamp,reportId:i.id,analysis:c};if(!d.some(p=>p.reportId===i.id)){const p=[h,...d];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 d=new Map(r.supervisor.narratives);d.set(i,c),r.supervisor.narratives=d}),t()},getNarratives(i){return s().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=n())==null||o({type:"set_supervisor_config",payload:i})},requestSupervisorReport(){var i;e(o=>{o.supervisor.generatingReport=!0}),t(),(i=n())==null||i({type:"request_supervisor_report",payload:{}})},requestAgentSupervisorHistory(i){var o;e(r=>{r.supervisor.loadingHistoryForAgent=i}),t(),(o=n())==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 s().supervisor.agentHistories.get(i)||[]},addAgentAnalysis(i,o){e(r=>{const c=new Map(r.supervisor.agentHistories),d=c.get(i)||[],h={id:`single-${Date.now()}-${i}`,timestamp:Date.now(),reportId:`single-${Date.now()}`,analysis:o};if(!d.some(f=>Math.abs(f.timestamp-h.timestamp)<5e3&&f.analysis.statusDescription===o.statusDescription)){const f=[h,...d];f.length>50&&f.pop(),c.set(i,f),r.supervisor.agentHistories=c}}),t()},isLoadingHistoryForAgent(i){return s().supervisor.loadingHistoryForAgent===i},hasHistoryBeenFetched(i){return s().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=n();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 s().supervisor.globalUsage}}}function nE(s,e,t,n){const i=()=>{var r;const o=Array.from(s().areas.values());(r=n())==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(s().areas.values()),c=r.length===0?-1:Math.max(...r.map(d=>d.zIndex??0));o.zIndex=c+1}e(r=>{r.areas.set(o.id,o)}),i(),t()},updateArea(o,r){s().areas.get(o)&&(e(h=>{Object.assign(h.areas.get(o),r)}),i(),t())},deleteArea(o){e(r=>{r.areas.delete(o),r.selectedAreaId===o&&(r.selectedAreaId=null)}),i(),t()},assignAgentToArea(o,r){const d=s().areas.get(r);d&&!d.assignedAgentIds.includes(o)&&(e(h=>{for(const p of h.areas.values()){const f=p.assignedAgentIds.indexOf(o);f!==-1&&p.assignedAgentIds.splice(f,1)}h.areas.get(r).assignedAgentIds.push(o)}),i(),t())},unassignAgentFromArea(o,r){const d=s().areas.get(r);if(d){const h=d.assignedAgentIds.indexOf(o);h!==-1&&(e(p=>{p.areas.get(r).assignedAgentIds.splice(h,1)}),i(),t())}},addDirectoryToArea(o,r){const d=s().areas.get(o);d&&!d.directories.includes(r)&&(e(h=>{h.areas.get(o).directories.push(r)}),i(),t())},removeDirectoryFromArea(o,r){const d=s().areas.get(o);if(d){const h=d.directories.indexOf(r);h!==-1&&(e(p=>{p.areas.get(o).directories.splice(h,1)}),i(),t())}},getAreaDirectories(o){const r=s().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,d=r.height/2;return o.x>=r.center.x-c&&o.x<=r.center.x+c&&o.z>=r.center.z-d&&o.z<=r.center.z+d}else if(r.type==="circle"&&r.radius){const c=o.x-r.center.x,d=o.z-r.center.z;return c*c+d*d<=r.radius*r.radius}return!1},getAreaForAgent(o){const r=s(),c=r.agents.get(o);if(!c)return null;for(const d of r.areas.values())if(this.isPositionInArea({x:c.position.x,z:c.position.z},d))return d;return null},setAreasFromServer(o){e(r=>{const c=new Map;for(let d=0;d<o.length;d++){const h=o[d];h.directories||(h.directories=[]),(h.zIndex===void 0||h.zIndex===null)&&(h.zIndex=d),h.archived===void 0&&(h.archived=!1),c.set(h.id,h)}r.areas=c}),t()},getAreasInZOrder(){return Array.from(s().areas.values()).sort((r,c)=>(r.zIndex??0)-(c.zIndex??0))},getNextZIndex(){const o=Array.from(s().areas.values());return o.length===0?0:Math.max(...o.map(c=>c.zIndex??0))+1},bringAreaToFront(o){const r=s(),c=r.areas.get(o);if(!c)return;const d=Array.from(r.areas.values()),h=d.length===0?-1:Math.max(...d.map(y=>y.zIndex??0)),p=h+1,f=c.zIndex??0,g=d.filter(y=>(y.zIndex??0)===h);f===h&&g.length===1||(e(y=>{y.areas.get(o).zIndex=p}),i(),t())},sendAreaToBack(o){const r=s(),c=r.areas.get(o);if(!c)return;const d=Array.from(r.areas.values()),h=Math.min(...d.map(g=>g.zIndex??0)),p=c.zIndex??0,f=d.filter(g=>(g.zIndex??0)===h);p===h&&f.length===1||(e(g=>{for(const y of g.areas.values())y.id!==o&&(y.zIndex=(y.zIndex??0)+1);g.areas.get(o).zIndex=0}),i(),t())},setAreaZIndex(o,r){s().areas.get(o)&&(e(h=>{h.areas.get(o).zIndex=r}),i(),t())},archiveArea(o,r){const d=s().areas.get(o);if(!(!d||d.archived)){if(r)for(const h of d.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=s(),d=c.areas.get(o);if(!d||!d.archived)return;const h=d.center,p=r||d.originalCenter||d.center,f=p.x-h.x,g=p.z-h.z,y=Array.from(c.areas.values()),w=(y.length===0?-1:Math.max(...y.map(S=>S.zIndex??0)))+1;e(S=>{const C=S.areas.get(o);if(C.archived=!1,C.archivedAt=void 0,C.center=p,C.zIndex=w,f!==0||g!==0)for(const A of C.assignedAgentIds){const N=S.agents.get(A);N&&(N.position={x:N.position.x+f,y:N.position.y,z:N.position.z+g})}}),i(),t()},getArchivedAreas(){return Array.from(s().areas.values()).filter(o=>o.archived===!0)},getVisibleAreas(){return Array.from(s().areas.values()).filter(o=>!o.archived)},isAgentInArchivedArea(o){const r=s();for(const c of r.areas.values())if(c.archived&&c.assignedAgentIds.includes(o))return!0;return!1}}}function aE(s,e,t,n){const i=()=>{var c;const r=Array.from(s().buildings.values());(c=n())==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 d of r)c.selectedBuildingIds.add(d)}),t()},toggleBuildingSelection(r){e(c=>{c.selectedBuildingIds.has(r)?c.selectedBuildingIds.delete(r):c.selectedBuildingIds.add(r)}),t()},isBuildingSelected(r){return s().selectedBuildingIds.has(r)},getSelectedBuildingIds(){return Array.from(s().selectedBuildingIds)},deleteSelectedBuildings(){var c,d,h;const r=s();for(const p of r.selectedBuildingIds){const f=r.buildings.get(p);((c=f==null?void 0:f.pm2)!=null&&c.enabled||(d=f==null?void 0:f.docker)!=null&&d.enabled)&&((h=n())==null||h({type:"building_command",payload:{buildingId:p,command:"delete"}}))}e(p=>{const f=new Map(p.buildings);for(const g of p.selectedBuildingIds)f.delete(g);p.buildings=f,p.selectedBuildingIds.clear()}),i(),t()},addBuilding(r){e(c=>{const d=new Map(c.buildings);d.set(r.id,r),c.buildings=d}),i(),t()},updateBuilding(r,c){const h=s().buildings.get(r);h&&(e(p=>{const f=new Map(p.buildings);f.set(r,{...h,...c}),p.buildings=f}),i(),t())},deleteBuilding(r){var h,p,f;const d=s().buildings.get(r);((h=d==null?void 0:d.pm2)!=null&&h.enabled||(p=d==null?void 0:d.docker)!=null&&p.enabled)&&((f=n())==null||f({type:"building_command",payload:{buildingId:r,command:"delete"}})),e(g=>{const y=new Map(g.buildings);y.delete(r),g.buildings=y,g.selectedBuildingIds.delete(r)}),i(),t()},moveBuilding(r,c){const h=s().buildings.get(r);h&&(e(p=>{const f=new Map(p.buildings);f.set(r,{...h,position:c}),p.buildings=f}),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 d;(d=n())==null||d({type:"building_command",payload:{buildingId:r,command:c}})},addBuildingLogs(r,c){e(d=>{const p=[...d.buildingLogs.get(r)||[],c];p.length>500&&p.splice(0,p.length-500);const f=new Map(d.buildingLogs);f.set(r,p),d.buildingLogs=f}),t()},getBuildingLogs(r){return s().buildingLogs.get(r)||[]},clearBuildingLogs(r){e(c=>{const d=new Map(c.buildingLogs);d.delete(r),c.buildingLogs=d}),t()},setBuildingsFromServer(r){e(c=>{const d=new Map;for(const h of r)d.set(h.id,h);c.buildings=d}),t()},updateBuildingFromServer(r){e(c=>{const d=new Map(c.buildings);d.set(r.id,r),c.buildings=d}),t()},removeBuildingFromServer(r){e(c=>{const d=new Map(c.buildings);d.delete(r),c.buildings=d,c.selectedBuildingIds.delete(r)}),t()},startLogStreaming(r,c=100){var h,p,f;const d=s().buildings.get(r);e(g=>{const y=new Map(g.streamingBuildingLogs);y.set(r,""),g.streamingBuildingLogs=y}),(h=d==null?void 0:d.docker)!=null&&h.enabled?(p=n())==null||p({type:"docker_logs_start",payload:{buildingId:r,lines:c}}):(f=n())==null||f({type:"pm2_logs_start",payload:{buildingId:r,lines:c}})},stopLogStreaming(r){var d,h,p;const c=s().buildings.get(r);(d=c==null?void 0:c.docker)!=null&&d.enabled?(h=n())==null||h({type:"docker_logs_stop",payload:{buildingId:r}}):(p=n())==null||p({type:"pm2_logs_stop",payload:{buildingId:r}})},appendStreamingLogChunk(r,c){e(d=>{const h=d.streamingBuildingLogs.get(r)||"",p=500*1024;let f=h+c;if(f.length>p){const y=f.indexOf(`
141
141
  `,f.length-p);y>0?f=f.slice(y+1):f=f.slice(-p)}const g=new Map(d.streamingBuildingLogs);g.set(r,f),d.streamingBuildingLogs=g}),t()},setStreamingStatus(r,c){e(d=>{const h=new Set(d.streamingBuildingIds);c?h.add(r):h.delete(r),d.streamingBuildingIds=h}),t()},getStreamingLogs(r){return s().streamingBuildingLogs.get(r)||""},clearStreamingLogs(r){e(c=>{const d=new Map(c.streamingBuildingLogs);d.delete(r),c.streamingBuildingLogs=d}),t()},isLogStreaming(r){return s().streamingBuildingIds.has(r)},sendBossBuildingCommand(r,c){var d;(d=n())==null||d({type:"boss_building_command",payload:{buildingId:r,command:c}})},assignBuildingsToBoSS(r,c){var p;const h=s().buildings.get(r);h&&(e(f=>{const g=new Map(f.buildings);g.set(r,{...h,subordinateBuildingIds:c}),f.buildings=g}),i(),t()),(p=n())==null||p({type:"assign_buildings",payload:{bossBuildingId:r,subordinateBuildingIds:c}})},startBossLogStreaming(r,c=50){var d;e(h=>{const p=new Map(h.bossStreamingLogs);p.set(r,[]),h.bossStreamingLogs=p}),(d=n())==null||d({type:"boss_building_logs_start",payload:{buildingId:r,lines:c}})},stopBossLogStreaming(r){var c;(c=n())==null||c({type:"boss_building_logs_stop",payload:{buildingId:r}})},appendBossStreamingLogChunk(r,c,d,h,p){e(f=>{const g=f.bossStreamingLogs.get(r)||[],y={subordinateId:c,subordinateName:d,chunk:h,timestamp:Date.now(),isError:p},v=[...g,y];v.length>1e3&&v.splice(0,v.length-1e3);const w=new Map(f.bossStreamingLogs);w.set(r,v),f.bossStreamingLogs=w}),t()},getBossStreamingLogs(r){return s().bossStreamingLogs.get(r)||[]},clearBossStreamingLogs(r){e(c=>{const d=new Map(c.bossStreamingLogs);d.delete(r),c.bossStreamingLogs=d}),t()},requestDockerContainersList(){var r;(r=n())==null||r({type:"docker_list_containers",payload:{}})},setDockerContainersList(r,c){e(d=>{d.dockerContainersList=r,d.dockerComposeProjectsList=c}),t()},getDockerContainersList(){return s().dockerContainersList},getDockerComposeProjectsList(){return s().dockerComposeProjectsList}};return o}function iE(s,e,t,n){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=s().permissionRequests.get(i);c&&(e(d=>{const h=new Map(d.permissionRequests);h.set(i,{...c,status:o?"approved":"denied"}),d.permissionRequests=h}),t(),setTimeout(()=>{e(d=>{const h=new Map(d.permissionRequests);h.delete(i),d.permissionRequests=h}),t()},2e3))},respondToPermissionRequest(i,o,r,c){var d;(d=n())==null||d({type:"permission_response",payload:{requestId:i,approved:o,reason:r,remember:c}})},getPendingPermissionsForAgent(i){return Array.from(s().permissionRequests.values()).filter(o=>o.agentId===i&&o.status==="pending")},clearAllPermissions(){e(i=>{i.permissionRequests=new Map}),t()}}}function oE(s,e,t,n){return{spawnBossAgent(i,o,r,c,d,h,p,f,g,y,v,w,S){var A;const C=c?{x:c.x,y:0,z:c.z}:void 0;(A=n())==null||A({type:"spawn_boss_agent",payload:{name:i,class:o,cwd:r,position:C,subordinateIds:d,useChrome:h,permissionMode:p,provider:f,codexConfig:g,codexModel:y,model:v,customInstructions:w,initialSkillIds:S}})},assignSubordinates(i,o){var r;(r=n())==null||r({type:"assign_subordinates",payload:{bossId:i,subordinateIds:o}})},removeSubordinate(i,o){var r;(r=n())==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=n())==null||r({type:"send_boss_command",payload:{bossId:i,command:o}})},requestDelegationHistory(i){var o;(o=n())==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)||[],d=c.findIndex(p=>p.id===i.id);if(d!==-1?c[d]=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),f=new Map(o.lastDelegationReceived);f.set(i.selectedAgentId,{bossName:(p==null?void 0:p.name)||"Boss",taskCommand:i.userCommand,timestamp:Date.now()}),o.lastDelegationReceived=f}((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 s().delegationHistories.get(i)||[]},getLastDelegationReceived(i){return s().lastDelegationReceived.get(i)||null},clearLastDelegationReceived(i){s().lastDelegationReceived.has(i)&&(e(r=>{const c=new Map(r.lastDelegationReceived);c.delete(i),r.lastDelegationReceived=c}),t())},updateBossSubordinates(i,o){const c=s().agents.get(i);c&&(e(d=>{const h={...c,subordinateIds:o},p=new Map(d.agents);p.set(i,h),d.agents=p}),t())},getSubordinates(i){const o=s(),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(d=>o.agents.get(d)).filter(d=>d!==void 0)},isBossAgent(i){const o=s().agents.get(i);return(o==null?void 0:o.isBoss)===!0||(o==null?void 0:o.class)==="boss"},getBossForAgent(i){const o=s(),r=o.agents.get(i);return r!=null&&r.bossId&&o.agents.get(r.bossId)||null},getAvailableSubordinates(){return Array.from(s().agents.values()).filter(i=>i.class!=="boss")},handleAgentTaskStarted(i,o,r,c){e(d=>{const h=new Map(d.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()}),d.agentTaskProgress=h}),t()},handleAgentTaskOutput(i,o,r){e(c=>{const d=c.agentTaskProgress.get(i);if(!d)return;const h=d.get(o);if(!h)return;const p=new Map(c.agentTaskProgress),f=new Map(d);f.set(o,{...h,output:[...h.output,r]}),p.set(i,f),c.agentTaskProgress=p}),t()},handleAgentTaskCompleted(i,o,r){e(c=>{const d=c.agentTaskProgress.get(i);if(!d)return;const h=d.get(o);if(!h)return;const p=new Map(c.agentTaskProgress),f=new Map(d);f.set(o,{...h,status:r?"completed":"failed",completedAt:Date.now()}),p.set(i,f),c.agentTaskProgress=p}),t()},getAgentTaskProgress(i){return s().agentTaskProgress.get(i)||new Map},clearAgentTaskProgress(i,o){e(r=>{if(o){const c=r.agentTaskProgress.get(i);if(c){const d=new Map(r.agentTaskProgress),h=new Map(c);h.delete(o),d.set(i,h),r.agentTaskProgress=d}}else{const c=new Map(r.agentTaskProgress);c.delete(i),r.agentTaskProgress=c}}),t()},clearAllSubordinatesContext(i){const r=s().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 d=n();console.log("[Store] clearAllSubordinatesContext: sendMessage available:",!!d);for(const h of r.subordinateIds)console.log("[Store] clearAllSubordinatesContext: Sending clear_context for subordinate:",h),d==null||d({type:"clear_context",payload:{agentId:h}});e(h=>{const p=new Map(h.agentOutputs);for(const f of r.subordinateIds||[])p.delete(f);h.agentOutputs=p}),t(),console.log("[Store] clearAllSubordinatesContext: Completed")}}}function rE(s,e,t,n){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 s().skills.get(i)},getAllSkills(){return Array.from(s().skills.values())},getSkillsForAgent(i){const o=s(),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=n())==null||o({type:"create_skill",payload:i})},updateSkill(i,o){var r;(r=n())==null||r({type:"update_skill",payload:{id:i,updates:o}})},deleteSkill(i){var o;(o=n())==null||o({type:"delete_skill",payload:{id:i}})},assignSkillToAgent(i,o){var r;(r=n())==null||r({type:"assign_skill",payload:{skillId:i,agentId:o}})},unassignSkillFromAgent(i,o){var r;(r=n())==null||r({type:"unassign_skill",payload:{skillId:i,agentId:o}})},requestAgentSkills(i){var o;(o=n())==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 s().customAgentClasses.get(i)},getAllCustomAgentClasses(){return Array.from(s().customAgentClasses.values())},createCustomAgentClass(i){var o;(o=n())==null||o({type:"create_custom_agent_class",payload:i})},updateCustomAgentClass(i,o){var r;(r=n())==null||r({type:"update_custom_agent_class",payload:{id:i,updates:o}})},deleteCustomAgentClass(i){var o;(o=n())==null||o({type:"delete_custom_agent_class",payload:{id:i}})}}}function lE(s,e,t){return{handleExecTaskStarted(n,i,o,r,c){e(d=>{const h={taskId:n,agentId:i,agentName:o,command:r,cwd:c,status:"running",output:[],startedAt:Date.now()};d.execTasks||(d.execTasks=new Map),d.execTasks.set(n,h)}),t()},handleExecTaskOutput(n,i,o,r){e(c=>{var h;const d=(h=c.execTasks)==null?void 0:h.get(n);if(d){const p=o.split(`
142
142
  `);for(const f of p)f.length>0&&d.output.push(r?`[stderr] ${f}`:f);d.output.length>500&&(d.output=d.output.slice(-500))}}),t()},handleExecTaskCompleted(n,i,o,r){e(c=>{var h;const d=(h=c.execTasks)==null?void 0:h.get(n);d&&(d.status=r?"completed":"failed",d.exitCode=o,d.completedAt=Date.now())}),t()},async stopExecTask(n){try{return(await fetch(`/api/exec/tasks/${n}`,{method:"DELETE"})).ok?(e(o=>{var c;const r=(c=o.execTasks)==null?void 0:c.get(n);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(n){const i=s();return i.execTasks?Array.from(i.execTasks.values()).filter(o=>o.agentId===n):[]},getAllExecTasks(){const n=s();return n.execTasks?Array.from(n.execTasks.values()):[]},getExecTask(n){var o;return(o=s().execTasks)==null?void 0:o.get(n)},clearCompletedExecTasks(n){e(i=>{if(i.execTasks)for(const[o,r]of i.execTasks.entries())r.agentId===n&&r.status!=="running"&&i.execTasks.delete(o)}),t()},clearAllExecTasks(n){e(i=>{if(i.execTasks)for(const[o,r]of i.execTasks.entries())r.agentId===n&&i.execTasks.delete(o)}),t()},removeExecTask(n){e(i=>{i.execTasks&&i.execTasks.delete(n)}),t()}}}function cE(s,e,t,n){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 s().secrets.get(i)},getSecretByKey(i){return Array.from(s().secrets.values()).find(o=>o.key===i)},getAllSecrets(){return Array.from(s().secrets.values())},createSecret(i){var o;(o=n())==null||o({type:"create_secret",payload:i})},updateSecret(i,o){var r;(r=n())==null||r({type:"update_secret",payload:{id:i,updates:o}})},deleteSecret(i){var o;(o=n())==null||o({type:"delete_secret",payload:{id:i}})}}}function I0(){return{connectionStatus:new Map,databases:new Map,tables:new Map,tableSchemas:new Map,queryResults:[],queryHistory:[],executingQuery:!1,activeConnectionId:null,activeDatabase:null}}function uE(s,e,t,n){const i=r=>{s().databaseState.has(r)||e(d=>{const h=new Map(d.databaseState);h.set(r,I0()),d.databaseState=h})};return{testDatabaseConnection(r,c){var d;(d=n())==null||d({type:"test_database_connection",payload:{buildingId:r,connectionId:c}})},setConnectionStatus(r,c,d){i(r),e(h=>{const p=h.databaseState.get(r);if(p){const f=new Map(p.connectionStatus);f.set(c,d);const g={...p,connectionStatus:f},y=new Map(h.databaseState);y.set(r,g),h.databaseState=y}}),t()},listDatabases(r,c){var d;(d=n())==null||d({type:"list_databases",payload:{buildingId:r,connectionId:c}})},setDatabases(r,c,d){i(r),e(h=>{const p=h.databaseState.get(r);if(p){const f=new Map(p.databases);f.set(c,d);const g={...p,databases:f},y=new Map(h.databaseState);y.set(r,g),h.databaseState=y}}),t()},listTables(r,c,d){var h;(h=n())==null||h({type:"list_tables",payload:{buildingId:r,connectionId:c,database:d}})},setTables(r,c,d,h){i(r);const p=`${c}:${d}`;e(f=>{const g=f.databaseState.get(r);if(g){const y=new Map(g.tables);y.set(p,h);const v={...g,tables:y},w=new Map(f.databaseState);w.set(r,v),f.databaseState=w}}),t()},getTableSchema(r,c,d,h){var p;(p=n())==null||p({type:"get_table_schema",payload:{buildingId:r,connectionId:c,database:d,table:h}})},setTableSchema(r,c,d,h,p){i(r);const f=`${c}:${d}:${h}`;e(g=>{const y=g.databaseState.get(r);if(y){const v=new Map(y.tableSchemas);v.set(f,p);const w={...y,tableSchemas:v},S=new Map(g.databaseState);S.set(r,w),g.databaseState=S}}),t()},executeQuery(r,c,d,h,p=1e3){var f;i(r),e(g=>{const y=g.databaseState.get(r);if(y){const v={...y,executingQuery:!0},w=new Map(g.databaseState);w.set(r,v),g.databaseState=w}}),t(),(f=n())==null||f({type:"execute_query",payload:{buildingId:r,connectionId:c,database:d,query:h,limit:p}})},setQueryResult(r,c){i(r),e(d=>{const h=d.databaseState.get(r);if(h){const p=[c,...h.queryResults].slice(0,20),f={...h,queryResults:p,executingQuery:!1},g=new Map(d.databaseState);g.set(r,f),d.databaseState=g}}),t()},setExecutingQuery(r,c){i(r),e(d=>{const h=d.databaseState.get(r);if(h){const p={...h,executingQuery:c},f=new Map(d.databaseState);f.set(r,p),d.databaseState=f}}),t()},requestQueryHistory(r,c=100){var d;(d=n())==null||d({type:"request_query_history",payload:{buildingId:r,limit:c}})},setQueryHistory(r,c){i(r),e(d=>{const h=d.databaseState.get(r);if(h){const p={...h,queryHistory:c},f=new Map(d.databaseState);f.set(r,p),d.databaseState=f}}),t()},toggleQueryFavorite(r,c){var d;(d=n())==null||d({type:"toggle_query_favorite",payload:{buildingId:r,queryId:c}})},deleteQueryFromHistory(r,c){var d;(d=n())==null||d({type:"delete_query_history",payload:{buildingId:r,queryId:c}})},clearQueryHistory(r){var c;(c=n())==null||c({type:"clear_query_history",payload:{buildingId:r}})},setActiveConnection(r,c){i(r),e(d=>{const h=d.databaseState.get(r);if(h){const p={...h,activeConnectionId:c,activeDatabase:null},f=new Map(d.databaseState);f.set(r,p),d.databaseState=f}}),t()},setActiveDatabase(r,c){i(r),e(d=>{const h=d.databaseState.get(r);if(h){const p={...h,activeDatabase:c},f=new Map(d.databaseState);f.set(r,p),d.databaseState=f}}),t()},getDatabaseState(r){return s().databaseState.get(r)||I0()},clearDatabaseState(r){e(c=>{const d=new Map(c.databaseState);d.delete(r),c.databaseState=d}),t()}}}function dE(s,e,t){return{async fetchSnapshots(){e(n=>{n.snapshotsLoading=!0,n.snapshotsError=null}),t();try{const n=await Ct(lt("/api/snapshots"));if(!n.ok)throw new Error(`Failed to fetch snapshots: ${n.statusText}`);const i=await n.json(),o=Array.isArray(i)?i:i.snapshots||[];this.setSnapshots(o)}catch(n){const i=n instanceof Error?n.message:"Failed to fetch snapshots";this.setError(i),console.error("Snapshot fetch error:",n)}finally{e(n=>{n.snapshotsLoading=!1}),t()}},setSnapshots(n){e(i=>{const o=new Map;n.forEach(r=>{o.set(r.id,r)}),i.snapshots=o}),t()},async createSnapshot(n,i,o,r,c,d){e(h=>{h.snapshotsLoading=!0,h.snapshotsError=null}),t();try{const h={agentId:n,agentName:i,title:o,description:r,outputs:c||[],files:d||[]},p=await Ct(lt("/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 f=await p.json();return await this.fetchSnapshots(),f}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(n){e(i=>{i.snapshotsLoading=!0,i.snapshotsError=null}),t();try{const i=await Ct(lt(`/api/snapshots/${n}`));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(n){e(i=>{i.currentSnapshot=n}),t()},async deleteSnapshot(n){var i;e(o=>{o.snapshotsLoading=!0,o.snapshotsError=null}),t();try{const o=await Ct(lt(`/api/snapshots/${n}`),{method:"DELETE"});if(!o.ok)throw new Error(`Failed to delete snapshot: ${o.statusText}`);await this.fetchSnapshots(),((i=s().currentSnapshot)==null?void 0:i.id)===n&&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(n,i){e(o=>{o.snapshotsLoading=!0,o.snapshotsError=null}),t();try{const o=i?{filePaths:i}:{},r=await Ct(lt(`/api/snapshots/${n}/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(n){e(i=>{i.snapshotsLoading=n}),t()},setError(n){e(i=>{i.snapshotsError=n}),t()},clearError(){this.setError(null)},reset(){e(n=>{n.snapshots=new Map,n.currentSnapshot=null,n.snapshotsLoading=!1,n.snapshotsError=null}),t()}}}function hE(s,e,t){return{addSubagent(n){e(i=>{const o=new Map(i.subagents);o.set(n.id,n),i.subagents=o}),t(),console.log(`[Subagent] Added: ${n.name} (${n.id}) for agent ${n.parentAgentId}`)},completeSubagent(n,i,o){e(r=>{let c=r.subagents.get(n);if(!c){for(const[,d]of r.subagents)if(d.toolUseId===n&&d.parentAgentId===i){c=d;break}}if(c){const d=new Map(r.subagents);d.set(c.id,{...c,status:o?"completed":"failed",completedAt:Date.now()}),r.subagents=d,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 f=new Map(h.subagents);f.delete(c.id),h.subagents=f}}),t()},3e4)}}),t()},getSubagentsForAgent(n){const i=s();return Array.from(i.subagents.values()).filter(o=>o.parentAgentId===n)},getSubagent(n){return s().subagents.get(n)},removeSubagent(n){e(i=>{const o=new Map(i.subagents);o.delete(n),i.subagents=o}),t()},getSubagentByToolUseId(n){const i=s();for(const[,o]of i.subagents)if(o.toolUseId===n)return o}}}function cn(s,e){if(s===e)return!0;if(s.length!==e.length)return!1;for(let t=0;t<s.length;t++)if(s[t]!==e[t])return!1;return!0}function Fa(s,e){if(s===e)return!0;if(s.size!==e.size)return!1;for(const[t,n]of s)if(e.get(t)!==n)return!1;return!0}function mE(s,e){if(s===e)return!0;if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function xt(s,e=Object.is){const[t,n]=x.useState(()=>s(I.getState())),i=x.useRef(t);return x.useEffect(()=>{i.current=t},[t]),x.useEffect(()=>{const o=()=>{const r=s(I.getState());e(i.current,r)||(i.current=r,n(r))};return o(),I.subscribe(o)},[s,e]),t}function ns(){const[,s]=x.useState({});return x.useEffect(()=>I.subscribe(()=>s({})),[]),I.getState()}function Ha(){return xt(x.useCallback(s=>s.agents,[]),Fa)}function Ju(){const s=Ha(),e=x.useRef([]),t=Array.from(s.values());return cn(e.current,t)||(e.current=t),e.current}function gf(s){return xt(x.useCallback(e=>s?e.agents.get(s):void 0,[s]))}function Qk(){return xt(x.useCallback(s=>s.selectedAgentIds,[]),mE)}function bf(s){const e=x.useRef([]),t=x.useRef(0),n=xt(x.useCallback(i=>s&&i.agentOutputs.get(s)||e.current,[s]),cn);return n.length!==t.current&&(Bl.info(`Selector: ${t.current} -> ${n.length}`,{agentId:s,lastText:n.length>0?n[n.length-1].text.slice(0,40):null},"useAgentOutputs"),t.current=n.length),n}function yf(){return xt(x.useCallback(s=>s.lastPrompts,[]),Fa)}function ed(){return xt(x.useCallback(s=>s.areas,[]),Fa)}function pE(){return xt(x.useCallback(s=>s.buildings,[]),Fa)}function Jk(){return xt(x.useCallback(s=>s.supervisor,[]))}function ho(){return xt(x.useCallback(s=>s.settings,[]))}function eS(){return xt(x.useCallback(s=>s.settings.hideCost,[]))}function fE(){return xt(x.useCallback(s=>s.settings.customAgentNames,[]),cn)}function gE(){return xt(x.useCallback(s=>s.shortcuts,[]),cn)}function tS(){return xt(x.useCallback(s=>s.mouseControls,[]))}function bE(){return xt(x.useCallback(s=>s.mouseControls.trackpad,[]))}function sS(){return xt(x.useCallback(s=>s.terminalOpen,[]))}function nS(){return xt(x.useCallback(s=>s.mobileView,[]))}function xf(){return xt(x.useCallback(s=>s.fileViewerPath,[]))}function yE(){return xt(x.useCallback(s=>s.fileViewerEditData,[]))}function xE(){return xt(x.useCallback(s=>s.explorerFolderPath,[]))}function vf(){return xt(x.useCallback(s=>s.contextModalAgentId,[]))}function aS(){return xt(x.useCallback(s=>s.toolExecutions,[]),cn)}function vE(){return xt(x.useCallback(s=>s.fileChanges,[]),cn)}function iS(){return xt(x.useCallback(s=>s.skills,[]),Fa)}function td(){const s=iS(),e=x.useRef([]),t=Array.from(s.values());return cn(e.current,t)||(e.current=t),e.current}function wE(s){return xt(x.useCallback(e=>s?e.skills.get(s):void 0,[s]))}function kE(s){const e=x.useRef([]),t=Ha(),n=iS();if(!s)return e.current;const i=t.get(s);return i?Array.from(n.values()).filter(r=>r.enabled?!!(r.assignedAgentIds.includes(s)||r.assignedAgentClasses.includes(i.class)):!1):e.current}function SE(){return xt(x.useCallback(s=>s.customAgentClasses,[]),Fa)}function Zn(){const s=SE(),e=x.useRef([]),t=Array.from(s.values());return cn(e.current,t)||(e.current=t),e.current}function jE(s){return xt(x.useCallback(e=>s?e.customAgentClasses.get(s):void 0,[s]))}function wf(){return xt(x.useCallback(s=>s.reconnectCount,[]))}function CE(){return xt(x.useCallback(s=>s.supervisor.globalUsage,[]))}function AE(){return xt(x.useCallback(s=>s.supervisor.refreshingUsage,[]))}function NE(s){const e=x.useRef(new Map);return xt(x.useCallback(t=>s&&t.agentTaskProgress.get(s)||e.current,[s]),Fa)}function TE(s){return xt(x.useCallback(e=>!s||!e.execTasks?[]:Array.from(e.execTasks.values()).filter(t=>t.agentId===s),[s]),cn)}function ME(){return xt(x.useCallback(s=>s.secrets,[]),Fa)}function EE(){const s=ME(),e=x.useRef([]),t=Array.from(s.values());return cn(e.current,t)||(e.current=t),e.current}const _E={connectionStatus:new Map,databases:new Map,tables:new Map,tableSchemas:new Map,queryResults:[],queryHistory:[],executingQuery:!1,activeConnectionId:null,activeDatabase:null};function kf(s){return xt(x.useCallback(e=>(s?e.databaseState.get(s):void 0)??_E,[s]))}function RE(s){return xt(x.useCallback(e=>{if(!s)return[];const t=e.databaseState.get(s);return(t==null?void 0:t.queryResults)??[]},[s]),cn)}function DE(s){return xt(x.useCallback(e=>{if(!s)return[];const t=e.databaseState.get(s);return(t==null?void 0:t.queryHistory)??[]},[s]),cn)}function LE(s){return xt(x.useCallback(e=>{if(!s)return!1;const t=e.databaseState.get(s);return(t==null?void 0:t.executingQuery)??!1},[s]))}function BE(){return xt(s=>s.dockerContainersList,cn)}function OE(){return xt(s=>s.currentSnapshot)}function PE(){return xt(s=>s.subagents,Fa)}function IE(s){return xt(x.useCallback(e=>s?Array.from(e.subagents.values()).filter(t=>t.parentAgentId===s):[],[s]),cn)}function zE(){return xt(s=>s.viewMode)}function FE(){return xt(x.useCallback(s=>s.overviewPanelOpen,[]))}class z0{constructor(){W(this,"state");W(this,"listeners",new Set);W(this,"sendMessage",null);W(this,"agentActions");W(this,"outputActions");W(this,"supervisorActions");W(this,"areaActions");W(this,"buildingActions");W(this,"permissionActions");W(this,"delegationActions");W(this,"skillActions");W(this,"execTaskActions");W(this,"secretActions");W(this,"databaseActions");W(this,"snapshotActions");W(this,"subagentActions");W(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,fileViewerEditData:null,explorerFolderPath: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=Qs(at.SCENE_VIEW_MODE,"3d");return r==="2d"||r==="3d"||r==="dashboard"?r:"3d"})(),overviewPanelOpen:!1};const e=()=>this.state,t=r=>{r(this.state)},n=()=>this.notify(),i=()=>this.sendMessage,o=()=>this.listeners.size;this.agentActions=eE(e,t,n,i),this.outputActions=tE(e,t,n,o),this.supervisorActions=sE(e,t,n,i),this.areaActions=nE(e,t,n,i),this.buildingActions=aE(e,t,n,i),this.permissionActions=iE(e,t,n,i),this.delegationActions=oE(e,t,n,i),this.skillActions=rE(e,t,n,i),this.execTaskActions=lE(e,t,n),this.secretActions=cE(e,t,n,i),this.databaseActions=uE(e,t,n,i),this.snapshotActions=dE(e,t,n),this.subagentActions=hE(e,t,n)}loadSettings(){const e=ca(at.SETTINGS,null);return e?{...P0,...e}:{...P0}}loadShortcuts(){const e=ca(at.SHORTCUTS,null);return e?Nm.map(n=>{const i=e.find(o=>o.id===n.id);return i?{...n,...i}:n}):[...Nm]}loadMouseControls(){var t;const e=ca(at.MOUSE_CONTROLS,null);return e?{bindings:Mm.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:{...Tm,...e.sensitivity},trackpad:{...hu,...e.trackpad,sensitivity:{...hu.sensitivity,...(t=e.trackpad)==null?void 0:t.sensitivity}}}:{bindings:[...Mm],sensitivity:{...Tm},trackpad:{...hu}}}loadMobileView(){const e=Qs(at.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,Yn(at.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,Yn(at.SCENE_VIEW_MODE,e),this.state.settings.experimental2DView=e==="2d",this.notify()}openTerminalOnMobile(e){console.log("[Store] openTerminalOnMobile called for agent:",e),gN("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){this.state.fileViewerPath=e,this.state.fileViewerEditData=t||null,this.notify()}clearFileViewerPath(){this.state.fileViewerPath=null,this.state.fileViewerEditData=null,this.notify()}setExplorerFolderPath(e){this.state.explorerFolderPath=e,this.notify()}openFileExplorer(e){this.state.explorerFolderPath=e,this.notify()}closeFileExplorer(){this.state.explorerFolderPath=null,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},Ia(at.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 n=this.state.shortcuts.findIndex(i=>i.id===e);n!==-1&&(this.state.shortcuts=[...this.state.shortcuts.slice(0,n),{...this.state.shortcuts[n],...t},...this.state.shortcuts.slice(n+1)],this.saveShortcuts(),this.notify())}resetShortcuts(){this.state.shortcuts=[...Nm],this.saveShortcuts(),this.notify()}saveShortcuts(){Ia(at.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 n=this.state.mouseControls.bindings.findIndex(i=>i.id===e);n!==-1&&(this.state.mouseControls.bindings=[...this.state.mouseControls.bindings.slice(0,n),{...this.state.mouseControls.bindings[n],...t},...this.state.mouseControls.bindings.slice(n+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:[...Mm],sensitivity:{...Tm},trackpad:{...hu}},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(){Ia(at.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)}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)}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 F0=1;function HE(){return typeof window<"u"?(window.__tideStore&&window.__tideStoreVersion===F0||(window.__tideStore=new z0,window.__tideStoreVersion=F0),window.__tideStore):new z0}const I=HE(),oS=x.createContext(null),$E={error:"āŒ",success:"āœ…",warning:"āš ļø",info:"ā„¹ļø"};let UE=0;function GE({children:s}){const[e,t]=x.useState(null),n=x.useRef([]),i=x.useRef(null),o=x.useCallback(()=>{if(n.current.length>0&&!e){const d=n.current.shift();t(d)}},[e]);x.useEffect(()=>{e||o()},[e,o]),x.useEffect(()=>{if(e&&e.duration>0)return i.current=window.setTimeout(()=>{t(null)},e.duration),()=>{i.current&&clearTimeout(i.current)}},[e]);const r=x.useCallback((d,h,p,f=5e3)=>{const y={id:++UE,type:d,title:h,message:p,duration:f};if(n.current.push(y),!e){const v=n.current.shift();t(v)}},[e]),c=x.useCallback(()=>{i.current&&clearTimeout(i.current),t(null)},[]);return a.jsxs(oS.Provider,{value:{showToast:r},children:[s,a.jsx("div",{id:"toast-container",children:e&&a.jsxs("div",{className:`toast ${e.type}`,children:[a.jsx("span",{className:"toast-icon",children:$E[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 rS(){const s=x.useContext(oS);if(!s)throw new Error("useToast must be used within ToastProvider");return s}const lo={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"}},ua=lo,Kn={bypass:{label:"Permissionless",description:"Skip all permission prompts (less safe, faster)"},interactive:{label:"Interactive",description:"Ask for approval before sensitive operations"}},On={"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:"🧩"}},Pn={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:"šŸš€"}},Np="<<<BOSS_CONTEXT_START>>>",H0="<<<BOSS_CONTEXT_END>>>",lr={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"}},Su={"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"}},$0={"":{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)"}},U0={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"}},G0={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"}},pl={mysql:{label:"MySQL",icon:"🐬",defaultPort:3306},postgresql:{label:"PostgreSQL",icon:"🐘",defaultPort:5432},oracle:{label:"Oracle",icon:"šŸ”¶",defaultPort:1521}},lS=x.createContext(null);function qE(s){const e=lo[s];if(e)return e.icon;const n=I.getState().customAgentClasses.get(s);return n?n.icon:"šŸ¤–"}function WE(s){const e=lo[s];if(e)return e.color;const n=I.getState().customAgentClasses.get(s);return n?n.color:"#888888"}const KE=3;function VE({children:s}){const[e,t]=x.useState([]),n=x.useRef(new Map);x.useEffect(()=>()=>{n.current.forEach(c=>clearTimeout(c))},[]);const i=x.useCallback(c=>{t(h=>h.filter(p=>p.id!==c));const d=n.current.get(c);d&&(clearTimeout(d),n.current.delete(c))},[]),o=x.useCallback(c=>{t(h=>{const p=[...h,c];if(p.length>KE){const f=p.shift();if(f){const g=n.current.get(f.id);g&&(clearTimeout(g),n.current.delete(f.id))}}return p});const d=window.setTimeout(()=>{i(c.id)},8e3);n.current.set(c.id,d),H2({title:`${c.agentName}: ${c.title}`,body:c.message,data:{type:"agent_notification",agentId:c.agentId,notificationId:c.id}})},[i]),r=x.useCallback(c=>{I.selectAgent(c.agentId),i(c.id)},[i]);return a.jsxs(lS.Provider,{value:{showAgentNotification:o},children:[s,a.jsx("div",{id:"agent-notification-container",children:e.map(c=>{const d=qE(c.agentClass),h=WE(c.agentClass);return a.jsxs("div",{className:"agent-notification",onClick:()=>r(c),style:{"--agent-color":h},children:[a.jsx("div",{className:"agent-notification-avatar",children:a.jsx("span",{className:"agent-notification-icon",children:d})}),a.jsxs("div",{className:"agent-notification-content",children:[a.jsxs("div",{className:"agent-notification-header",children:[a.jsx("span",{className:"agent-notification-name",children:c.agentName}),a.jsx("span",{className:"agent-notification-hint",children:"Click to focus"})]}),a.jsx("div",{className:"agent-notification-title",children:c.title}),a.jsx("div",{className:"agent-notification-message",children:c.message})]}),a.jsx("button",{className:"agent-notification-close",onClick:p=>{p.stopPropagation(),i(c.id)},children:"Ɨ"})]},c.id)})})]})}function YE(){const s=x.useContext(lS);if(!s)throw new Error("useAgentNotification must be used within AgentNotificationProvider");return s}function XE(s){return typeof s=="string"?s:"#"+s.toString(16).padStart(6,"0")}function Ci(s,e){const t=In[s];if(t)return{icon:t.icon,color:XE(t.color),description:t.description};const n=e.find(i=>i.id===s);return n?{icon:n.icon,color:n.color,description:n.description}:{icon:"šŸ¤–",color:"#888888"}}function ZE(s){return s>=1e6?(s/1e6).toFixed(1)+"M":s>=1e3?(s/1e3).toFixed(1)+"K":s.toString()}function Tp(s){return s>=1e6?(s/1e6).toFixed(1)+"M":s>=1e3?(s/1e3).toFixed(1)+"K":s.toString()}function QE(s){const e=Math.floor((Date.now()-s)/1e3);return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m`:e<86400?`${Math.floor(e/3600)}h`:`${Math.floor(e/86400)}d`}function Sf(s){const e=Math.floor((Date.now()-s)/1e3);if(e<5)return"just now";if(e<60)return`${e}s ago`;const t=Math.floor(e/60);if(t<60){const c=e%60;return c>0?`${t}m ${c}s ago`:`${t}m ago`}const n=Math.floor(t/60),i=t%60;if(n<24)return i>0?`${n}h ${i}m ago`:`${n}h ago`;const o=Math.floor(n/24),r=n%24;return r>0?`${o}d ${r}h ago`:`${o}d ago`}function vi(s,e){return s?e?s.replace(/\s*\(?\s*~?\$[\d,.]+\s*\)?/g,"").replace(/\s*cost[:\s]+~?\$[\d,.]+/gi,"").replace(/\s*price[:\s]+~?\$[\d,.]+/gi,"").replace(/\s*\(~?\$[\d,.]+\s*(?:USD|cost|spent)?\)/gi,"").replace(/\s*-\s*~?\$[\d,.]+\s*$/g,"").replace(/[^\S\n]+/g," ").trim():s:""}function JE(s){const e=Math.floor((Date.now()-s)/1e3);if(e<60)return`${e}s`;const t=Math.floor(e/60);if(t<60)return`${t}m`;const n=Math.floor(t/60);return n<24?`${n}h`:`${Math.floor(n/24)}d`}function Bu(s){const e=Math.floor((Date.now()-s)/1e3);if(e<60)return"just now";const t=Math.floor(e/60);if(t<60)return`${t}m ago`;const n=Math.floor(t/60);return n<24?`${n}h ago`:`${Math.floor(n/24)}d ago`}function cS(s){const e=s.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=s.contextUsed||0,n=s.contextLimit||2e5,i=Math.max(0,n-t);return{remainingPercent:i/n*100,usedPercent:t/n*100,hasData:!1,totalTokens:t,contextWindow:n,freeTokens:i}}function e_(s){return s<20?"#c85858":s<50?"#c89858":"#6a9a78"}function t_(s,e){const t=new Map;for(const n of s){const i=e(n.id),o=(i==null?void 0:i.id)||null;t.has(o)||t.set(o,[]),t.get(o).push(n)}return t}function s_(s,e){return[...s].sort((t,n)=>{if(t===null)return 1;if(n===null)return-1;const i=t?e(t):void 0,o=n?e(n):void 0;return((i==null?void 0:i.name)||"").localeCompare((o==null?void 0:o.name)||"")})}function q0({onOpenAreaExplorer:s}){const e=ns(),t=Array.from(e.agents.values()),n=Array.from(e.areas.values()),i=x.useMemo(()=>t.map(d=>d.id).sort().join(","),[t]),o=x.useRef(new Set);x.useEffect(()=>{for(const d of t){if(o.current.has(d.id))continue;I.getAgentSupervisorHistory(d.id).length===0&&!I.isLoadingHistoryForAgent(d.id)&&(o.current.add(d.id),I.requestAgentSupervisorHistory(d.id))}},[i]);const r=t_(t,d=>I.getAreaForAgent(d));for(const d of n)r.has(d.id)||r.set(d.id,[]);const c=s_(Array.from(r.keys()),d=>e.areas.get(d));return t.length===0&&n.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:"No Agents Deployed"}),a.jsx("div",{className:"empty-state-desc",children:'Click "+ New Agent" to deploy your first agent'})]}):a.jsxs("div",{className:"agents-list",children:[a.jsx("div",{className:"agents-list-header",children:"Areas & Agents"}),c.map(d=>{const h=r.get(d),p=d?e.areas.get(d):null;return a.jsxs("div",{className:"agents-group",children:[a.jsxs("div",{className:"agents-group-header",style:p?{borderLeftColor:p.color,background:`${p.color}15`}:void 0,children:[p?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:"agents-group-dot",style:{background:p.color}}),a.jsx("span",{className:"agents-group-name",children:p.name}),p.directories.length>0&&a.jsx("button",{className:"area-browse-btn",onClick:()=>s==null?void 0:s(p.id),title:"Browse files",children:"šŸ“‚"})]}):a.jsx("span",{className:"agents-group-name unassigned",children:"Unassigned"}),a.jsx("span",{className:"agents-group-count",children:h.length})]}),h.length>0&&a.jsx("div",{className:"agents-group-items",style:p?{background:`${p.color}08`}:void 0,children:h.map(f=>a.jsx(n_,{agent:f,area:p},f.id))})]},d||"unassigned")}),t.length>0&&a.jsx(a_,{agents:t})]})}const n_=x.memo(function({agent:e,area:t}){const n=ns(),i=Zn(),o=Ci(e.class,i),r=n.selectedAgentIds.has(e.id),[,c]=x.useState(0);x.useEffect(()=>{if(e.status==="idle"){const f=setInterval(()=>{c(g=>g+1)},15e3);return()=>clearInterval(f)}},[e.status]);const d=()=>{I.selectAgent(e.id)},h=e.status==="idle"&&e.lastActivity>0,p=e.lastActivity>0?hf(e.lastActivity):void 0;return a.jsxs("div",{className:`agent-item ${r?"selected":""}`,onClick:d,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:Sf(e.lastActivity),children:[" ","ā± ",JE(e.lastActivity)]})]})]}),a.jsx("div",{className:`agent-status-dot ${e.status}`})]})}),a_=x.memo(function({agents:e}){const t=ns(),n=Zn(),i=t.settings.hideCost,[o,r]=x.useState(()=>hp(at.GLOBAL_SUPERVISOR_COLLAPSED)),c=()=>{const p=!o;r(p),mp(at.GLOBAL_SUPERVISOR_COLLAPSED,p)},d=x.useMemo(()=>e.map(p=>{const f=I.getAgentSupervisorHistory(p.id),g=f.length>0?f[0]:null;return{agent:p,entry:g,timestamp:(g==null?void 0:g.timestamp)||p.lastActivity||0}}).filter(p=>p.entry!==null).sort((p,f)=>f.timestamp-p.timestamp),[e,t.supervisor.agentHistories]),h=d.length>0?d[0].timestamp:Date.now();return d.length===0?null:a.jsxs("div",{className:"global-supervisor-status",children:[a.jsxs("div",{className:"global-supervisor-header",onClick:c,children:[a.jsx("span",{className:"global-supervisor-toggle",children:o?"ā–¶":"ā–¼"}),a.jsx("span",{className:"global-supervisor-title",children:"Supervisor Status"}),a.jsx("span",{className:"global-supervisor-time",children:Bu(h)})]}),!o&&a.jsx("div",{className:"global-supervisor-list",children:d.map(({agent:p,entry:f})=>{const g=Ci(p.class,n),y=f.analysis;return a.jsxs("div",{className:"global-supervisor-item",onClick:()=>I.selectAgent(p.id),children:[a.jsxs("div",{className:"global-supervisor-item-header",children:[a.jsx("span",{className:"global-supervisor-progress-dot",style:{background:Fk[y.progress]||"#888"}}),a.jsx("span",{className:"global-supervisor-agent-icon",children:g.icon}),a.jsx("span",{className:"global-supervisor-agent-name",children:p.name}),a.jsx("span",{className:"global-supervisor-item-time",children:Bu(f.timestamp)})]}),a.jsx("div",{className:"global-supervisor-status-line",children:vi(y.statusDescription,i)}),a.jsx("div",{className:"global-supervisor-summary-text",children:vi(y.recentWorkSummary,i)})]},p.id)})})]})}),i_={idle:"idle",working:"walk",waiting:"sit",waiting_permission:"idle",error:"emote-no",offline:"static",orphaned:"idle"},W0={idle:4915102,working:4890367,waiting:16752202,waiting_permission:16763904,error:16730698,offline:8947848,orphaned:16752202};function dr({agentClass:s,modelFile:e,customModelFile:t,customModelUrl:n,modelScale:i=1,modelOffset:o,idleAnimation:r,status:c="idle",width:d=150,height:h=200}){const p=x.useRef(null),f=x.useRef(null),g=x.useRef(null),y=x.useRef(null),v=x.useRef(null),w=x.useRef(null),S=x.useRef(new Map),C=x.useRef(null),A=x.useRef(null),N=x.useRef(0),_=x.useRef(new kk),[M,E]=x.useState(!1),[z,T]=x.useState(!1),R=x.useRef(!1),D=x.useRef(0),O=x.useRef(new nt),P=x.useRef(!1),K=x.useRef({x:0,y:0}),Y=x.useRef({x:0,y:0});x.useEffect(()=>{const L=p.current;if(!L)return;T(!1);const q=new nf;q.background=new At(1710628),g.current=q;const V=new tf(45,d/h,.1,100);V.position.set(0,1.2,1.4),V.lookAt(0,.4,0),y.current=V;let G;try{G=new Sk({antialias:!0,alpha:!0})}catch{console.warn("[ModelPreview] WebGL context creation failed — too many active contexts"),T(!0);return}G.setSize(d,h),G.setPixelRatio(Math.min(window.devicePixelRatio,2)),G.setClearColor(1710628,1),L.appendChild(G.domElement),f.current=G;const B=new sf(16777215,1);q.add(B);const Q=new ir(16777215,1.5);Q.position.set(2,3,2),q.add(Q);const U=new ir(4890367,.6);U.position.set(-2,1,-1),q.add(U);const H=new up(1,32),te=new Ke({color:2763322,roughness:.8}),ae=new ke(H,te);ae.rotation.x=-Math.PI/2,ae.position.y=0,q.add(ae);const J=new oo(.35,.42,32),he=new Re({color:W0.idle,side:Hs,transparent:!0,opacity:.8}),me=new ke(J,he);me.rotation.x=-Math.PI/2,me.position.y=.01,q.add(me),A.current=me,E(!0);const pe=Ae=>{P.current=!0,K.current={x:Ae.clientX,y:Ae.clientY},L.style.cursor="grabbing"},ne=Ae=>{if(!P.current||!v.current)return;const ue=Ae.clientX-K.current.x,le=Ae.clientY-K.current.y;Y.current.y+=ue*.01,Y.current.x+=le*.01,Y.current.x=Math.max(-Math.PI/4,Math.min(Math.PI/4,Y.current.x)),v.current.rotation.y=Y.current.y,v.current.rotation.x=Y.current.x,K.current={x:Ae.clientX,y:Ae.clientY}},xe=()=>{P.current=!1,L.style.cursor="grab"},fe=()=>{P.current=!1,L.style.cursor="grab"};L.addEventListener("mousedown",pe),window.addEventListener("mousemove",ne),window.addEventListener("mouseup",xe),L.addEventListener("mouseleave",fe),L.style.cursor="grab";const Pe=()=>{N.current=requestAnimationFrame(Pe);const Ae=_.current.getDelta();if(w.current)w.current.update(Ae);else if(v.current&&!R.current){D.current+=Ae;const ue=D.current,re=Math.sin(ue*1.5)*.02,Le=Math.sin(ue*.8)*.01;v.current.position.set(O.current.x+Le,O.current.y+re,O.current.z)}f.current&&g.current&&y.current&&f.current.render(g.current,y.current)};return Pe(),()=>{if(cancelAnimationFrame(N.current),L.removeEventListener("mousedown",pe),window.removeEventListener("mousemove",ne),window.removeEventListener("mouseup",xe),L.removeEventListener("mouseleave",fe),v.current&&g.current&&(g.current.remove(v.current),v.current.traverse(Ae=>{var ue,le;Ae instanceof ke&&((ue=Ae.geometry)==null||ue.dispose(),Array.isArray(Ae.material)?Ae.material.forEach(Z=>{Z.map&&Z.map.dispose(),Z.dispose()}):Ae.material&&(Ae.material.map&&((le=Ae.material.map)==null||le.dispose()),Ae.material.dispose()))}),v.current=null),A.current&&g.current&&(g.current.remove(A.current),A.current.geometry.dispose(),A.current.material.dispose(),A.current=null),g.current&&(g.current.traverse(Ae=>{var ue;Ae instanceof ke&&((ue=Ae.geometry)==null||ue.dispose(),Ae.material instanceof yi&&Ae.material.dispose())}),g.current.clear()),w.current=null,C.current=null,S.current.clear(),f.current){try{const ue=f.current.getContext().getExtension("WEBGL_lose_context");ue&&ue.loseContext()}catch{}f.current.dispose(),L.contains(f.current.domElement)&&L.removeChild(f.current.domElement),f.current=null}g.current=null,y.current=null,E(!1)}},[d,h]),x.useEffect(()=>{if(!M||!g.current)return;const L=new lf,q=new cf;q.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),L.setDRACOLoader(q),L.setMeshoptDecoder(uf);let V=null;const G=B=>{v.current&&g.current&&(g.current.remove(v.current),v.current=null,w.current=null,C.current=null);const Q=B.scene;Q.scale.setScalar(i);const U=(o==null?void 0:o.x)??0,H=(o==null?void 0:o.y)??0,te=(o==null?void 0:o.z)??0;if(Q.position.set(U,te,H),Q.visible=!0,Y.current={x:0,y:0},Q.rotation.set(0,0,0),Q.traverse(ae=>{if(ae instanceof ke&&(ae.castShadow=!0,ae.receiveShadow=!0,ae.material)){const J=ae.material;J.map&&(J.map.colorSpace=qn)}}),g.current)if(g.current.add(Q),v.current=Q,O.current.copy(Q.position),B.animations.length>0){R.current=!0;const ae=new Nl(Q);w.current=ae,S.current.clear();for(const J of B.animations)S.current.set(J.name.toLowerCase(),J);if(r!==""){const J=r?S.current.get(r.toLowerCase())||B.animations[0]:S.current.get("idle")||B.animations[0];if(J){const he=ae.clipAction(J);he.reset().play(),C.current=he}}}else R.current=!1,w.current=null,S.current.clear()};if(t)V=URL.createObjectURL(t),console.log("[ModelPreview] Loading custom model from file:",t.name,"blob URL:",V),L.load(V,B=>{console.log("[ModelPreview] Successfully loaded custom model file, animations:",B.animations.length),G(B)},void 0,B=>{console.error("[ModelPreview] Failed to load custom model file:",B)});else if(n){const B=Nk(n);console.log("[ModelPreview] Loading custom model from URL:",n),L.load(B,Q=>{console.log("[ModelPreview] Successfully loaded custom model URL, animations:",Q.animations.length),G(Q)},void 0,Q=>{console.error("[ModelPreview] Failed to load custom model URL:",n,Q)})}else{const B=e||(s?nr[s]:void 0)||"character-male-a.glb";L.load(`/assets/characters/${B}`,G,void 0,Q=>{console.error("[ModelPreview] Failed to load model:",B,Q)})}return()=>{V&&URL.revokeObjectURL(V),q.dispose()}},[s,e,t,n,i,o,M]);const $=L=>{if(!w.current)return;const q=i_[L],V=S.current.get(q);if(!V){const B=S.current.get("idle");if(B){const Q=w.current.clipAction(B);Q.reset().play(),C.current=Q}return}const G=w.current.clipAction(V);L==="working"?G.timeScale=1.5:L==="error"&&(G.setLoop(yk,1),G.clampWhenFinished=!0),C.current&&C.current!==G?(C.current.fadeOut(.3),G.reset().fadeIn(.3).play()):G.reset().play(),C.current=G};return x.useEffect(()=>{if(M){if(A.current){const L=A.current.material;L.color.setHex(W0[c]),c==="working"?L.opacity=.6+Math.sin(Date.now()*.005)*.4:L.opacity=.8}$(c)}},[c,M]),x.useEffect(()=>{if(!M||!w.current||c!=="idle")return;if(r===""){C.current&&(C.current.stop(),C.current=null);return}const L=r?r.toLowerCase():"idle",q=S.current.get(L);if(q){const V=w.current.clipAction(q);C.current&&C.current!==V?(C.current.fadeOut(.3),V.reset().fadeIn(.3).play()):V.reset().play(),C.current=V}else C.current&&(C.current.stop(),C.current=null)},[r,M,c]),z?a.jsx("div",{className:"model-preview",style:{width:d,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:d,height:h,borderRadius:8,overflow:"hidden",background:"#1a1a24"}})}function Ai({value:s,onChange:e,onSubmit:t,placeholder:n="/path/to/folder",className:i="",directoriesOnly:o=!0,autoFocus:r=!1,hasError:c=!1,disabled:d=!1}){const[h,p]=x.useState([]),[f,g]=x.useState(-1),[y,v]=x.useState(!1),[w,S]=x.useState(!1),C=x.useRef(null),A=x.useRef(null),N=x.useRef(null),_=x.useCallback(async O=>{if(!O){p([]);return}S(!0);try{const P=new URLSearchParams({path:O,dirs:o?"true":"false",limit:"15"}),K=await Ct(lt(`/api/files/autocomplete?${P}`));if(K.ok){const Y=await K.json();p(Y.suggestions||[]),g(-1)}}catch(P){console.error("Failed to fetch path suggestions:",P)}finally{S(!1)}},[o]);x.useEffect(()=>(N.current&&clearTimeout(N.current),s&&y?N.current=setTimeout(()=>{_(s)},150):p([]),()=>{N.current&&clearTimeout(N.current)}),[s,y,_]);const M=O=>{e(O.target.value),v(!0)},E=x.useCallback(O=>{var K;const P=O.isDirectory?O.path+"/":O.path;e(P),v(O.isDirectory),g(-1),(K=C.current)==null||K.focus(),O.isDirectory&&_(P)},[e,_]),z=O=>{if(!y||h.length===0){O.key==="Enter"&&t&&(O.preventDefault(),t()),O.key==="Escape"&&v(!1);return}switch(O.key){case"ArrowDown":O.preventDefault(),g(P=>P<h.length-1?P+1:P);break;case"ArrowUp":O.preventDefault(),g(P=>P>0?P-1:-1);break;case"Tab":if(O.preventDefault(),h.length>0){const P=f>=0?f:0;E(h[P])}break;case"Enter":O.preventDefault(),f>=0&&h[f]?E(h[f]):t&&(v(!1),t());break;case"Escape":O.preventDefault(),v(!1),g(-1);break}},T=()=>{v(!0),s&&_(s)},R=()=>{setTimeout(()=>{v(!1),g(-1)},200)};x.useEffect(()=>{if(f>=0&&A.current){const P=A.current.querySelectorAll(".folder-input-suggestion")[f];P&&P.scrollIntoView({block:"nearest"})}},[f]);const D=["folder-input",i,c?"error":""].filter(Boolean).join(" ");return a.jsxs("div",{className:"folder-input-container",children:[a.jsx("input",{ref:C,type:"text",className:D,value:s,onChange:M,onKeyDown:z,onFocus:T,onBlur:R,placeholder:n,autoFocus:r,disabled:d,autoComplete:"off",spellCheck:!1}),y&&(h.length>0||w)&&a.jsx("div",{ref:A,className:"folder-input-suggestions",children:w&&h.length===0?a.jsx("div",{className:"folder-input-loading",children:"Loading..."}):h.map((O,P)=>a.jsxs("div",{className:`folder-input-suggestion ${P===f?"selected":""}`,onClick:()=>E(O),onMouseEnter:()=>g(P),children:[a.jsx("span",{className:"folder-input-suggestion-icon",children:O.isDirectory?"šŸ“":"šŸ“„"}),a.jsx("span",{className:"folder-input-suggestion-name",children:O.name}),O.isDirectory&&a.jsx("span",{className:"folder-input-suggestion-hint",children:"/"})]},O.path))})]})}function uS({agent:s,isOpen:e,onClose:t}){const n=td(),i=Zn(),[o,r]=x.useState(s.class),[c,d]=x.useState(s.permissionMode),[h,p]=x.useState(s.provider||"claude"),[f,g]=x.useState(s.codexConfig||{fullAuto:!0,sandbox:"workspace-write",approvalMode:"on-request",search:!1}),[y,v]=x.useState(s.model||"sonnet"),[w,S]=x.useState(s.codexModel||"gpt-5.3-codex"),[C,A]=x.useState(s.useChrome||!1),[N,_]=x.useState(s.cwd),[M,E]=x.useState(new Set),[z,T]=x.useState("");x.useMemo(()=>n.filter(U=>U.enabled&&(U.assignedAgentIds.includes(s.id)||U.assignedAgentClasses.includes(s.class))),[n,s.id,s.class]),x.useEffect(()=>{const U=n.filter(H=>H.assignedAgentIds.includes(s.id)).map(H=>H.id);E(new Set(U))},[n,s.id]),x.useEffect(()=>{if(e){r(s.class),d(s.permissionMode),p(s.provider||"claude"),g(s.codexConfig||{fullAuto:!0,sandbox:"workspace-write",approvalMode:"on-request",search:!1}),v(s.model||"sonnet"),S(s.codexModel||"gpt-5.3-codex"),A(s.useChrome||!1),_(s.cwd);const U=n.filter(H=>H.assignedAgentIds.includes(s.id)).map(H=>H.id);E(new Set(U))}},[e,s,n]);const R=x.useMemo(()=>n.filter(U=>U.enabled),[n]),D=x.useMemo(()=>{if(!z.trim())return R;const U=z.toLowerCase();return R.filter(H=>H.name.toLowerCase().includes(U)||H.description.toLowerCase().includes(U)||H.slug.toLowerCase().includes(U))},[R,z]),O=x.useMemo(()=>R.filter(U=>U.assignedAgentClasses.includes(o)),[R,o]),P=x.useCallback(U=>{E(H=>{const te=new Set(H);return te.has(U)?te.delete(U):te.add(U),te})},[]),K=x.useMemo(()=>{const U=i.find(H=>H.id===o);if(U!=null&&U.model)return U.model},[i,o]),Y=x.useMemo(()=>{const U=i.find(H=>H.id===o);if(U!=null&&U.customModelPath)return lt(`/api/custom-models/${U.id}`)},[i,o]),$=x.useMemo(()=>{const U=i.find(H=>H.id===o);return U==null?void 0:U.modelScale},[i,o]),L=x.useMemo(()=>i.find(U=>U.id===o),[i,o]),q=x.useMemo(()=>i.find(H=>H.id===o)?"scout":o,[i,o]),V=x.useMemo(()=>{if(o!==s.class||c!==s.permissionMode||h!==(s.provider||"claude")||h==="claude"&&y!==(s.model||"sonnet")||h==="codex"&&w!==(s.codexModel||"gpt-5.3-codex")||h==="codex"&&JSON.stringify(f||{})!==JSON.stringify(s.codexConfig||{})||C!==(s.useChrome||!1)||N!==s.cwd)return!0;const U=n.filter(te=>te.assignedAgentIds.includes(s.id)).map(te=>te.id).sort().join(","),H=Array.from(M).sort().join(",");return U!==H},[o,c,h,y,w,f,C,N,M,s,n]),G=()=>{const U={};o!==s.class&&(U.class=o),c!==s.permissionMode&&(U.permissionMode=c),h!==(s.provider||"claude")&&(U.provider=h),h==="codex"&&JSON.stringify(f||{})!==JSON.stringify(s.codexConfig||{})&&(U.codexConfig=f),h==="codex"&&w!==(s.codexModel||"gpt-5.3-codex")&&(U.codexModel=w),h==="claude"&&y!==(s.model||"sonnet")&&(U.model=y),C!==(s.useChrome||!1)&&(U.useChrome=C),N!==s.cwd&&(U.cwd=N);const H=n.filter(ae=>ae.assignedAgentIds.includes(s.id)).map(ae=>ae.id).sort().join(","),te=Array.from(M).sort().join(",");H!==te&&(U.skillIds=Array.from(M)),Object.keys(U).length>0&&I.updateAgentProperties(s.id,U),t()},{handleMouseDown:B,handleClick:Q}=Us(t);return e?a.jsx("div",{className:"modal-overlay visible",onMouseDown:B,onClick:Q,children:a.jsxs("div",{className:"modal agent-edit-modal",children:[a.jsxs("div",{className:"modal-header",children:["Edit Agent: ",s.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(dr,{agentClass:q,modelFile:K,customModelUrl:Y,modelScale:$,width:100,height:120})}),a.jsxs("div",{className:"spawn-class-section",children:[a.jsx("div",{className:"spawn-class-label",children:"Agent Class"}),a.jsxs("div",{className:"class-selector-inline",children:[i.map(U=>a.jsxs("button",{className:`class-chip ${o===U.id?"selected":""}`,onClick:()=>r(U.id),title:U.description,children:[a.jsx("span",{className:"class-chip-icon",children:U.icon}),a.jsx("span",{className:"class-chip-name",children:U.name})]},U.id)),Object.entries(lo).filter(([U])=>U!=="boss").map(([U,H])=>a.jsxs("button",{className:`class-chip ${o===U?"selected":""}`,onClick:()=>r(U),title:H.description,children:[a.jsx("span",{className:"class-chip-icon",children:H.icon}),a.jsx("span",{className:"class-chip-name",children:U.charAt(0).toUpperCase()+U.slice(1)})]},U))]})]})]}),(L==null?void 0:L.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:"This class has custom instructions"})]}),a.jsxs("div",{className:"custom-class-notice-info",children:[L.instructions.length," characters of CLAUDE.md instructions will be injected as system prompt"]})]}),a.jsxs("div",{className:"spawn-form-section",children:[a.jsxs("div",{className:"spawn-form-row",children:[a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:"Runtime"}),a.jsxs("div",{className:"spawn-select-row",children:[a.jsxs("button",{className:`spawn-select-btn ${h==="claude"?"selected":""}`,onClick:()=>p("claude"),children:[a.jsx("span",{children:"🧠"}),a.jsx("span",{children:"Claude"})]}),a.jsxs("button",{className:`spawn-select-btn ${h==="codex"?"selected":""}`,onClick:()=>p("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:"Permissions"}),a.jsx("div",{className:"spawn-select-row",children:Object.keys(Kn).map(U=>a.jsxs("button",{className:`spawn-select-btn ${c===U?"selected":""}`,onClick:()=>d(U),title:Kn[U].description,children:[a.jsx("span",{children:U==="bypass"?"⚔":"šŸ”"}),a.jsx("span",{children:Kn[U].label})]},U))})]})]}),a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:"Model"}),h==="claude"?a.jsx("div",{className:"spawn-select-row",children:Object.keys(Pn).map(U=>a.jsxs("button",{className:`spawn-select-btn ${y===U?"selected":""}`,onClick:()=>v(U),title:Pn[U].description,children:[a.jsx("span",{children:Pn[U].icon}),a.jsx("span",{children:Pn[U].label})]},U))}):h==="codex"?a.jsx("div",{className:"spawn-select-row spawn-select-row--codex-models",children:Object.keys(On).map(U=>a.jsxs("button",{className:`spawn-select-btn ${w===U?"selected":""}`,onClick:()=>S(U),title:On[U].description,children:[a.jsx("span",{children:On[U].icon}),a.jsx("span",{children:On[U].label})]},U))}):a.jsx("div",{className:"spawn-inline-hint",children:"Choose the Codex model for this agent."})]})}),h==="codex"&&a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:"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:f.fullAuto!==!1,onChange:U=>g(H=>({...H,fullAuto:U.target.checked}))}),a.jsx("span",{children:"Use `--full-auto`"})]}),a.jsxs("label",{className:"spawn-checkbox",children:[a.jsx("input",{type:"checkbox",checked:!!f.search,onChange:U=>g(H=>({...H,search:U.target.checked}))}),a.jsx("span",{children:"Enable live web search (`--search`)"})]}),f.fullAuto===!1&&a.jsxs(a.Fragment,{children:[a.jsxs("select",{className:"spawn-input",value:f.sandbox||"workspace-write",onChange:U=>g(H=>({...H,sandbox:U.target.value})),children:[a.jsx("option",{value:"read-only",children:"Sandbox: read-only"}),a.jsx("option",{value:"workspace-write",children:"Sandbox: workspace-write"}),a.jsx("option",{value:"danger-full-access",children:"Sandbox: danger-full-access"})]}),a.jsxs("select",{className:"spawn-input",value:f.approvalMode||"on-request",onChange:U=>g(H=>({...H,approvalMode:U.target.value})),children:[a.jsx("option",{value:"untrusted",children:"Approvals: untrusted"}),a.jsx("option",{value:"on-failure",children:"Approvals: on-failure"}),a.jsx("option",{value:"on-request",children:"Approvals: on-request"}),a.jsx("option",{value:"never",children:"Approvals: never"})]})]}),a.jsx("input",{type:"text",className:"spawn-input",placeholder:"Profile (optional)",value:f.profile||"",onChange:U=>g(H=>({...H,profile:U.target.value||void 0}))})]})]})}),h==="claude"&&y!==(s.model||"sonnet")&&a.jsx("div",{className:"model-change-notice",children:"Context preserved - will resume with new model"}),a.jsx("div",{className:"spawn-form-row spawn-options-row",children:a.jsxs("label",{className:"spawn-checkbox",children:[a.jsx("input",{type:"checkbox",checked:C,onChange:U=>A(U.target.checked),disabled:h!=="claude"}),a.jsx("span",{children:"🌐 Chrome Browser"})]})}),a.jsx("div",{className:"spawn-form-row",children:a.jsxs("div",{className:"spawn-field",children:[a.jsx("label",{className:"spawn-label",children:"Working Directory"}),a.jsx(Ai,{value:N,onChange:_,placeholder:"/path/to/directory",className:"spawn-input",directoriesOnly:!0})]})}),N!==s.cwd&&a.jsx("div",{className:"model-change-notice warning",children:"New session will start - context cannot be preserved across directory changes"}),a.jsxs("div",{className:"spawn-skills-section",children:[a.jsxs("label",{className:"spawn-label",children:["Skills ",a.jsx("span",{className:"spawn-label-hint",children:"(click to toggle)"})]}),R.length>6&&a.jsx("input",{type:"text",className:"spawn-input skill-search-input",placeholder:"Filter skills...",value:z,onChange:U=>T(U.target.value)}),a.jsx("div",{className:"skills-chips-compact",children:R.length===0?a.jsx("div",{className:"skills-empty",children:"No enabled skills available"}):D.length===0?a.jsxs("div",{className:"skills-empty",children:['No skills match "',z,'"']}):D.map(U=>{const H=O.includes(U),ae=M.has(U.id)||H;return a.jsxs("button",{className:`skill-chip ${ae?"selected":""} ${H?"class-based":""}`,onClick:()=>!H&&P(U.id),title:H?"Assigned via class":U.name,children:[ae&&a.jsx("span",{className:"skill-check",children:"āœ“"}),a.jsx("span",{className:"skill-chip-name",children:U.name}),U.builtin&&a.jsx("span",{className:"skill-chip-badge builtin",children:"TC"}),H&&a.jsx("span",{className:"skill-chip-badge",children:"class"})]},U.id)})})]})]})]}),a.jsxs("div",{className:"modal-footer",children:[a.jsx("button",{className:"btn btn-secondary",onClick:t,children:"Cancel"}),a.jsx("button",{className:"btn btn-primary",onClick:G,disabled:!V,children:"Save Changes"})]})]})}):null}function fl(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(1)}K`:s.toString()}function K0(s){return`${s.toFixed(1)}%`}function o_(s){return s>=80?"#ff4a4a":s>=60?"#ff9e4a":s>=40?"#ffd700":"#4aff9e"}const r_={systemPrompt:"#4a9eff",systemTools:"#9e4aff",messages:"#4aff9e",freeSpace:"rgba(255,255,255,0.1)",autocompactBuffer:"#ff9e4a"},l_={systemPrompt:"System Prompt",systemTools:"System Tools",messages:"Messages",freeSpace:"Free Space",autocompactBuffer:"Autocompact Buffer"},c_={systemPrompt:"Base instructions and persona for the agent",systemTools:"Tool definitions and capabilities available",messages:"Conversation history and user messages",freeSpace:"Available space for more conversation",autocompactBuffer:"Reserved for automatic context compaction"};function dS({agent:s,isOpen:e,onClose:t,onRefresh:n}){const i=s.contextStats,[o,r]=x.useState(!1),c=()=>{n&&!o&&(r(!0),n(),setTimeout(()=>r(!1),3e3))},d=["systemPrompt","systemTools","messages","autocompactBuffer","freeSpace"],h=x.useMemo(()=>i?d.map(y=>({key:y,...i.categories[y],label:l_[y],description:c_[y],color:r_[y]})):[],[i]),p=x.useMemo(()=>h.filter(y=>y.key!=="freeSpace"),[h]),{handleMouseDown:f,handleClick:g}=Us(t);return e?a.jsx("div",{className:"modal-overlay visible",onMouseDown:f,onClick:g,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.jsxs("span",{style:{flex:1},children:["Context Window: ",s.name]}),n&&a.jsxs("button",{className:"btn btn-primary",onClick:c,disabled:o||s.status!=="idle",style:{padding:"6px 12px",fontSize:"12px",display:"flex",alignItems:"center",gap:"6px"},title:s.status!=="idle"?"Agent must be idle to refresh":"Fetch context stats via /context command",children:[a.jsx("span",{style:{display:"inline-block",animation:o?"spin 1s linear infinite":"none"},children:o?"⟳":"↻"}),o?"Loading...":"Refresh"]})]}),a.jsx("div",{className:"modal-body",style:{padding:"16px"},children:i?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:"Model"}),a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:i.model})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:"Context Window"}),a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:fl(i.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:"Context Usage"}),a.jsxs("span",{style:{color:o_(i.usedPercent)},children:[fl(i.totalTokens)," / ",fl(i.contextWindow)," (",i.usedPercent,"%)"]})]}),a.jsx("div",{style:{height:"28px",background:"var(--bg-tertiary)",borderRadius:"6px",overflow:"hidden",display:"flex"},children:p.map(y=>y.percent>0&&a.jsx("div",{style:{width:`${y.percent}%`,background:y.color,height:"100%",minWidth:y.percent>.5?"2px":"0",transition:"width 0.3s ease"},title:`${y.label}: ${fl(y.tokens)} (${K0(y.percent)})`},y.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:"Token Breakdown"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"6px"},children:h.map(y=>a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"12px",padding:"10px 12px",background:y.key==="freeSpace"?"transparent":"var(--bg-secondary)",borderRadius:"6px",borderLeft:y.key==="freeSpace"?"3px dashed rgba(255,255,255,0.2)":`3px solid ${y.color}`,opacity:y.key==="freeSpace"?.7:1},children:[a.jsx("div",{style:{width:"12px",height:"12px",borderRadius:"3px",background:y.color,flexShrink:0,border:y.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:y.label}),a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:y.description})]}),a.jsxs("div",{style:{textAlign:"right"},children:[a.jsx("div",{style:{fontSize:"13px",fontWeight:500},children:fl(y.tokens)}),a.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:K0(y.percent)})]})]},y.key))})]}),a.jsxs("div",{style:{fontSize:"11px",color:"var(--text-muted)",textAlign:"center"},children:["Last updated: ",new Date(i.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:"No context data available yet"}),a.jsx("div",{style:{fontSize:"12px",marginBottom:"20px",opacity:.7},children:"Click the Refresh button above to fetch detailed stats"}),n&&a.jsxs("button",{className:"btn btn-primary",onClick:c,disabled:o||s.status!=="idle",style:{padding:"10px 24px",fontSize:"14px",display:"inline-flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{style:{display:"inline-block",animation:o?"spin 1s linear infinite":"none"},children:o?"⟳":"↻"}),o?"Fetching Stats...":"Fetch Context Stats"]}),s.status!=="idle"&&a.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",marginTop:"12px"},children:"Agent must be idle to fetch stats"})]})}),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:"Close"})})]})}):null}const u_=x.memo(function({tokensUsed:e,createdAt:t}){return a.jsxs("div",{className:"unit-stats",children:[a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:"Tokens"}),a.jsx("div",{className:"unit-stat-value",children:Tp(e)})]}),a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:"Uptime"}),a.jsx("div",{className:"unit-stat-value",children:QE(t)})]})]})}),hS=x.memo(function({contextInfo:e,onClick:t}){const{remainingPercent:n,hasData:i}=e;return a.jsxs("div",{className:"unit-context unit-context-clickable",onClick:t,title:i?"Click for detailed context breakdown":"Click to fetch context stats",style:{cursor:"pointer"},children:[a.jsxs("div",{className:"unit-stat-label",style:{display:"flex",alignItems:"center",gap:"4px"},children:[a.jsx("span",{children:"Remaining Context"}),i?a.jsx("span",{style:{fontSize:"10px",opacity:.6},children:"šŸ“Š"}):a.jsx("span",{style:{fontSize:"9px",color:"#ff9e4a",opacity:.8},title:"Click to fetch accurate stats",children:"āš ļø"})]}),i?a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"unit-context-bar",children:a.jsx("div",{className:"unit-context-fill",style:{width:`${n}%`,background:e_(n)}})}),a.jsxs("span",{className:"unit-context-value",children:[Math.round(n),"%"]})]}):a.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",fontStyle:"italic"},children:"Not retrieved yet"})]})}),d_=x.memo(function({lastActivity:e}){return a.jsxs("div",{className:"unit-idle-timer",title:"Time since last activity",style:{color:hf(e)},children:["ā± ",Sf(e)]})}),h_=x.memo(function({toolName:e}){return a.jsxs("div",{className:"unit-current-tool",children:[a.jsx("span",{className:"unit-stat-label",children:"Using:"}),a.jsx("span",{className:"unit-tool-name",children:e})]})}),m_=x.memo(function({task:e}){return a.jsxs("div",{className:"unit-task",children:[a.jsx("div",{className:"unit-stat-label",children:"Task"}),a.jsx("div",{className:"unit-task-text",children:e})]})}),p_=x.memo(function({cwd:e}){return a.jsxs("div",{className:"unit-cwd",children:[a.jsx("div",{className:"unit-stat-label",children:"CWD"}),a.jsx("div",{className:"unit-cwd-path",title:e,children:e})]})}),f_=x.memo(function({text:e,maxLength:t=150}){return a.jsxs("div",{className:"unit-last-prompt",children:[a.jsx("div",{className:"unit-stat-label",children:"Last Prompt"}),a.jsx("div",{className:"unit-last-prompt-text",children:e.length>t?e.slice(0,t)+"...":e})]})}),g_=x.memo(function({text:e,maxLength:t=200}){return a.jsxs("div",{className:"unit-last-message",children:[a.jsx("div",{className:"unit-stat-label",children:"Last Response"}),a.jsx("div",{className:"unit-last-message-text",children:e.length>t?e.slice(0,t)+"...":e})]})});function b_({agent:s,onFocusAgent:e,onKillAgent:t,onCallSubordinates:n,onOpenAreaExplorer:i}){var me,pe;const o=ns(),r=Zn(),{showToast:c}=rS(),d=o.agents.get(s.id)||s,h=Ci(d.class,r),p=r.find(ne=>ne.id===d.class),f=p==null?void 0:p.model,g=p!=null&&p.customModelPath?lt(`/api/custom-models/${p.id}`):void 0,y=p==null?void 0:p.modelScale,[v,w]=x.useState(!1),[S,C]=x.useState(d.name),A=x.useRef(null),[,N]=x.useState(0),[_,M]=x.useState(!0),[E,z]=x.useState(!1),[T,R]=x.useState([]),[D,O]=x.useState(null),[P,K]=x.useState(!1),[Y,$]=x.useState(!1),L=I.getAgentSupervisorHistory(d.id),q=I.isLoadingHistoryForAgent(d.id);x.useEffect(()=>{!I.hasHistoryBeenFetched(d.id)&&!q&&I.requestAgentSupervisorHistory(d.id)},[d.id,q]),x.useEffect(()=>{C(d.name)},[d.name]),x.useEffect(()=>{v&&A.current&&(A.current.focus(),A.current.select())},[v]),x.useEffect(()=>{if(d.status==="idle"){const ne=setInterval(()=>{N(xe=>xe+1)},15e3);return()=>clearInterval(ne)}},[d.status]),x.useEffect(()=>{d.permissionMode==="interactive"&&Ct(lt("/api/remembered-patterns")).then(ne=>ne.json()).then(R).catch(ne=>console.error("Failed to fetch remembered patterns:",ne))},[d.permissionMode]);const V=x.useMemo(()=>cS(d),[d.contextStats,d.contextUsed,d.contextLimit]),G=I.getAreaForAgent(d.id),B=o.agentOutputs.get(d.id)||[],Q=B.length>0?B[B.length-1]:null,U=o.lastPrompts.get(d.id),H=async(ne,xe)=>{try{(await Ct(lt(`/api/remembered-patterns/${ne}/${encodeURIComponent(xe)}`),{method:"DELETE"})).ok&&R(Pe=>Pe.filter(Ae=>!(Ae.tool===ne&&Ae.pattern===xe)))}catch(fe){console.error("Failed to remove pattern:",fe)}},te=async()=>{if(confirm("Clear all remembered permission patterns?"))try{(await Ct(lt("/api/remembered-patterns"),{method:"DELETE"})).ok&&R([])}catch(ne){console.error("Failed to clear patterns:",ne)}},ae=()=>{confirm("Are you sure you want to terminate this agent?")&&t(d.id)},J=()=>{const ne=S.trim();ne&&ne!==d.name?I.renameAgent(d.id,ne):C(d.name),w(!1)},he=ne=>{ne.key==="Enter"?J():ne.key==="Escape"&&(C(d.name),w(!1))};return a.jsxs("div",{className:"unit-panel",children:[a.jsx("div",{className:"unit-model-preview",children:a.jsx(dr,{agentClass:d.class,modelFile:f,customModelUrl:g,modelScale:y,status:d.status,width:80,height:80})}),a.jsxs("div",{className:"unit-panel-header",children:[a.jsx("div",{className:"unit-class-icon",style:{background:`${h.color}20`},children:h.icon}),a.jsxs("div",{className:"unit-header-info",children:[v?a.jsx("input",{ref:A,type:"text",className:"unit-name-input",value:S,onChange:ne=>C(ne.target.value),onBlur:J,onKeyDown:he}):a.jsx("div",{className:"unit-name unit-name-editable",onClick:()=>w(!0),title:"Click to rename",children:d.name}),a.jsxs("div",{className:"unit-status",children:[a.jsx("span",{style:{color:Mu[d.status]||Mu.default},children:d.status}),a.jsxs("span",{children:[" • ",d.class," • ",d.provider]})]}),d.status==="idle"&&d.lastActivity>0&&a.jsx(d_,{lastActivity:d.lastActivity})]}),a.jsxs("div",{className:"unit-header-actions",children:[a.jsx("button",{className:"unit-action-icon",onClick:()=>e(d.id),title:"Focus on agent",children:"šŸŽÆ"}),a.jsx("button",{className:"unit-action-icon",onClick:()=>K(!0),title:"Edit agent properties",children:"āœļø"}),(d.isBoss||d.class==="boss")&&d.subordinateIds&&d.subordinateIds.length>0&&a.jsx("button",{className:"unit-action-icon",onClick:()=>n==null?void 0:n(d.id),title:"Call subordinates",children:"šŸ“¢"}),a.jsx("button",{className:"unit-action-icon",onClick:()=>O("collapse"),title:"Collapse context",disabled:d.status!=="idle",children:"šŸ“¦"}),a.jsx("button",{className:"unit-action-icon warning",onClick:()=>O("clear"),title:"Clear context",children:"šŸ—‘ļø"}),a.jsx("button",{className:"unit-action-icon danger",onClick:ae,title:"Kill agent",children:"ā˜ ļø"})]})]}),G&&a.jsxs("div",{className:"unit-area",children:[a.jsx("span",{className:"unit-area-dot",style:{background:G.color}}),a.jsx("span",{className:"unit-area-name",children:G.name})]}),U&&a.jsx(f_,{text:U.text}),Q&&a.jsx(g_,{text:Q.text}),a.jsx(u_,{tokensUsed:d.tokensUsed,createdAt:d.createdAt}),a.jsx(hS,{contextInfo:V,onClick:()=>$(!0)}),d.currentTool&&a.jsx(h_,{toolName:d.currentTool}),d.currentTask&&a.jsx(m_,{task:d.currentTask}),a.jsx(p_,{cwd:d.cwd}),a.jsxs("div",{className:"unit-permission-mode",children:[a.jsx("div",{className:"unit-stat-label",children:"Permissions"}),a.jsxs("div",{className:"unit-permission-mode-value",title:(me=Kn[d.permissionMode])==null?void 0:me.description,children:[a.jsx("span",{className:"unit-permission-mode-icon",children:d.permissionMode==="bypass"?"⚔":"šŸ”"}),a.jsx("span",{className:"unit-permission-mode-label",children:((pe=Kn[d.permissionMode])==null?void 0:pe.label)||d.permissionMode})]})]}),d.permissionMode==="interactive"&&a.jsx(y_,{patterns:T,showPatterns:E,onToggle:()=>z(!E),onRemovePattern:H,onClearAll:te}),d.sessionId?a.jsxs("div",{className:"unit-resume-cmd",children:[a.jsx("div",{className:"unit-stat-label",children:"Resume Session"}),a.jsxs("div",{className:"unit-resume-cmd-text",title:"Click to copy",onClick:async()=>{try{await navigator.clipboard.writeText(`codex resume ${d.sessionId}`),c("success","Copied!","Resume command copied to clipboard",2e3)}catch{c("error","Error","Failed to copy to clipboard",3e3)}},children:["codex resume ",d.sessionId]})]}):a.jsxs("div",{className:"unit-resume-cmd",children:[a.jsx("div",{className:"unit-stat-label",children:"Session"}),a.jsx("div",{className:"unit-new-session-indicator",children:"New agent, new session"})]}),a.jsxs("div",{className:"unit-supervisor-history",children:[a.jsxs("div",{className:"unit-supervisor-history-header",onClick:()=>M(!_),children:[a.jsx("div",{className:"unit-stat-label",children:"Supervisor History"}),a.jsxs("span",{className:"unit-supervisor-history-toggle",children:[L.length>0&&a.jsx("span",{className:"unit-supervisor-history-count",children:L.length}),_?"ā–¼":"ā–¶"]})]}),_&&a.jsx("div",{className:"unit-supervisor-history-list",children:q?a.jsx("div",{className:"unit-supervisor-history-loading",children:"Loading..."}):L.length===0?a.jsx("div",{className:"unit-supervisor-history-empty",children:"No supervisor reports yet"}):L.slice(0,10).map((ne,xe)=>a.jsx(v_,{entry:ne,defaultExpanded:xe===0},ne.id))})]}),(d.isBoss||d.class==="boss")&&a.jsx(w_,{agent:d}),d.bossId&&a.jsx(S_,{agentId:d.id,bossId:d.bossId}),d.class!=="boss"&&!d.isBoss&&!d.bossId&&a.jsx(j_,{agentId:d.id}),D&&a.jsx(x_,{action:D,agentName:d.name,onClose:()=>O(null),onConfirm:()=>{D==="collapse"?I.collapseContext(d.id):I.clearContext(d.id),O(null)}}),a.jsx(uS,{agent:d,isOpen:P,onClose:()=>K(!1)}),a.jsx(dS,{agent:d,isOpen:Y,onClose:()=>$(!1),onRefresh:()=>{I.refreshAgentContext(d.id)}})]})}const y_=x.memo(function({patterns:e,showPatterns:t,onToggle:n,onRemovePattern:i,onClearAll:o}){return a.jsxs("div",{className:"unit-remembered-patterns",children:[a.jsxs("div",{className:"unit-remembered-patterns-header",onClick:n,children:[a.jsx("div",{className:"unit-stat-label",children:"Allowed Patterns"}),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:"No patterns remembered yet. Click āœ“+ when approving to remember."}):a.jsxs(a.Fragment,{children:[e.map((r,c)=>a.jsxs("div",{className:"unit-remembered-pattern-item",children:[a.jsx("span",{className:"unit-pattern-tool",children:r.tool}),a.jsx("span",{className:"unit-pattern-desc",title:r.pattern,children:r.description}),a.jsx("button",{className:"unit-pattern-remove",onClick:()=>i(r.tool,r.pattern),title:"Remove this pattern",children:"Ɨ"})]},c)),a.jsx("button",{className:"unit-patterns-clear-all",onClick:o,children:"Clear All"})]})})]})}),x_=x.memo(function({action:e,agentName:t,onClose:n,onConfirm:i}){const{handleMouseDown:o,handleClick:r}=Us(n);return a.jsx("div",{className:"modal-overlay visible",onMouseDown:o,onClick:r,children:a.jsxs("div",{className:"modal confirm-modal",children:[a.jsx("div",{className:"modal-header",children:e==="collapse"?"Collapse Context":"Clear Context"}),a.jsx("div",{className:"modal-body confirm-modal-body",children:e==="collapse"?a.jsxs(a.Fragment,{children:[a.jsxs("p",{children:["Collapse the conversation context for ",a.jsx("strong",{children:t}),"?"]}),a.jsx("p",{className:"confirm-modal-note",children:"This will summarize the conversation to save tokens while preserving important information."})]}):a.jsxs(a.Fragment,{children:[a.jsxs("p",{children:["Clear all context for ",a.jsx("strong",{children:t}),"?"]}),a.jsx("p",{className:"confirm-modal-note",children:"This will start a fresh session on the next command. All conversation history will be lost."})]})}),a.jsxs("div",{className:"modal-footer",children:[a.jsx("button",{className:"btn btn-secondary",onClick:n,children:"Cancel"}),a.jsx("button",{className:`btn ${e==="clear"?"btn-danger":"btn-primary"}`,onClick:i,autoFocus:!0,children:e==="collapse"?"Collapse":"Clear Context"})]})]})})}),v_=x.memo(function({entry:e,defaultExpanded:t=!1}){var f;const[n,i]=x.useState(t),o=ns(),{analysis:r}=e,c=o.settings.hideCost,d=vi(r.statusDescription,c),h=vi(r.recentWorkSummary,c),p=(f=r.concerns)==null?void 0:f.map(g=>vi(g,c)).filter(g=>g.length>0);return a.jsxs("div",{className:"supervisor-history-item",children:[a.jsxs("div",{className:"supervisor-history-item-header",onClick:()=>i(!n),children:[a.jsx("span",{className:"supervisor-history-progress-dot",style:{background:Fk[r.progress]||"#888"},title:r.progress}),a.jsx("span",{className:"supervisor-history-status",children:d}),a.jsx("span",{className:"supervisor-history-time",children:Bu(e.timestamp)})]}),n&&a.jsxs("div",{className:"supervisor-history-item-details",children:[a.jsxs("div",{className:"supervisor-history-summary",children:[a.jsx("strong",{children:"Summary:"})," ",h]}),p&&p.length>0&&a.jsxs("div",{className:"supervisor-history-concerns",children:[a.jsx("strong",{children:"Concerns:"}),a.jsx("ul",{children:p.map((g,y)=>a.jsx("li",{children:g},y))})]})]})]})}),w_=x.memo(function({agent:e}){const t=ns(),n=Zn(),[i,o]=x.useState(!0),[r,c]=x.useState(!0),d=x.useMemo(()=>{const y=t.agents.get(e.id);return!y||!y.isBoss&&y.class!=="boss"||!y.subordinateIds?[]:y.subordinateIds.map(v=>t.agents.get(v)).filter(v=>v!==void 0)},[t.agents,e.id]),h=I.getDelegationHistory(e.id),p=t.pendingDelegation,f=(p==null?void 0:p.bossId)===e.id;x.useEffect(()=>{I.requestDelegationHistory(e.id)},[e.id]);const g=ua.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:g.color},children:g.icon}),a.jsx("span",{className:"boss-title",children:"Boss Agent"})]}),a.jsxs("div",{className:"boss-subordinates",children:[a.jsxs("div",{className:"boss-subordinates-header",onClick:()=>o(!i),children:[a.jsxs("div",{className:"unit-stat-label",children:["Team (",d.length,")"]}),a.jsx("span",{className:"boss-toggle",children:i?"ā–¼":"ā–¶"})]}),i&&a.jsx("div",{className:"boss-subordinates-list",children:d.length===0?a.jsx("div",{className:"boss-subordinates-empty",children:'No subordinates assigned. Use "Manage Team" to add agents.'}):d.map(y=>{const v=Ci(y.class,n);return a.jsxs("div",{className:"boss-subordinate-item",onClick:()=>I.selectAgent(y.id),children:[a.jsx("span",{className:"boss-subordinate-icon",style:{color:v.color},children:v.icon}),a.jsx("span",{className:"boss-subordinate-name",children:y.name}),a.jsx("span",{className:`boss-subordinate-status status-${y.status}`,children:y.status}),a.jsx("button",{className:"boss-subordinate-unlink",onClick:w=>{w.stopPropagation(),I.removeSubordinate(e.id,y.id)},title:"Unlink subordinate",children:"āœ•"})]},y.id)})})]}),a.jsxs("div",{className:"boss-delegation-history",children:[a.jsxs("div",{className:"boss-delegation-history-header",onClick:()=>c(!r),children:[a.jsxs("div",{className:"unit-stat-label",children:["Delegation History (",h.length,")"]}),a.jsx("span",{className:"boss-toggle",children:r?"ā–¼":"ā–¶"})]}),r&&a.jsxs("div",{className:"boss-delegation-history-list",children:[f&&a.jsxs("div",{className:"boss-delegation-pending",children:[a.jsx("span",{className:"delegation-spinner",children:"ā³"}),"Analyzing request..."]}),h.length===0&&!f?a.jsx("div",{className:"boss-delegation-empty",children:"No delegation history yet. Send commands to this boss to delegate tasks."}):h.slice(0,10).map(y=>a.jsx(k_,{decision:y},y.id))]})]})]})}),k_=x.memo(function({decision:e}){const[t,n]=x.useState(!1),o=ns().agents.get(e.selectedAgentId),r=o?ua[o.class]:null,c={high:"#4aff9e",medium:"#ff9e4a",low:"#ff4a4a"};return a.jsxs("div",{className:"delegation-decision-item",children:[a.jsxs("div",{className:"delegation-decision-header",onClick:()=>n(!t),children:[a.jsx("span",{className:"delegation-decision-arrow",children:t?"ā–¼":"ā–¶"}),r&&a.jsx("span",{className:"delegation-decision-icon",style:{color:r.color},children:r.icon}),a.jsxs("span",{className:"delegation-decision-agent",children:["→ ",e.selectedAgentName]}),a.jsx("span",{className:"delegation-decision-confidence",style:{color:c[e.confidence]},title:`Confidence: ${e.confidence}`,children:e.confidence==="high"?"ā—ā—ā—":e.confidence==="medium"?"ā—ā—ā—‹":"ā—ā—‹ā—‹"}),a.jsx("span",{className:"delegation-decision-time",children:Bu(e.timestamp)})]}),t&&a.jsxs("div",{className:"delegation-decision-details",children:[a.jsxs("div",{className:"delegation-decision-command",children:[a.jsx("strong",{children:"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.jsx("strong",{children:"Reasoning:"})," ",e.reasoning]}),e.alternativeAgents.length>0&&a.jsxs("div",{className:"delegation-decision-alternatives",children:[a.jsx("strong",{children:"Alternatives:"})," ",e.alternativeAgents.join(", ")]})]})]})}),S_=x.memo(function({agentId:e,bossId:t}){const i=ns().agents.get(t);if(!i)return null;const o=ua.boss,r=c=>{c.stopPropagation(),I.removeSubordinate(t,e)};return a.jsxs("div",{className:"subordinate-badge",children:[a.jsx("span",{className:"subordinate-badge-icon",style:{color:o.color},children:o.icon}),a.jsxs("span",{className:"subordinate-badge-text",children:["Reports to: ",a.jsx("strong",{children:i.name})]}),a.jsx("button",{className:"subordinate-badge-goto",onClick:()=>I.selectAgent(t),title:"Go to boss",children:"→"}),a.jsx("button",{className:"subordinate-badge-unlink",onClick:r,title:"Unlink from boss",children:"āœ•"})]})}),j_=x.memo(function({agentId:e}){const t=ns(),[n,i]=x.useState(!1),o=Array.from(t.agents.values()).filter(d=>d.isBoss===!0||d.class==="boss");if(o.length===0)return null;const r=ua.boss,c=d=>{const h=t.agents.get(d);if(!h)return;const p=h.subordinateIds||[];I.assignSubordinates(d,[...p,e]),i(!1)};return a.jsx("div",{className:"link-to-boss-section",children:n?a.jsxs("div",{className:"link-to-boss-dropdown",children:[a.jsxs("div",{className:"link-to-boss-header",children:[a.jsx("span",{children:"Select a Boss"}),a.jsx("button",{className:"link-to-boss-close",onClick:()=>i(!1),children:"āœ•"})]}),a.jsx("div",{className:"link-to-boss-list",children:o.map(d=>{var h;return a.jsxs("div",{className:"link-to-boss-item",onClick:()=>c(d.id),children:[a.jsx("span",{className:"link-to-boss-item-icon",style:{color:r.color},children:r.icon}),a.jsx("span",{className:"link-to-boss-item-name",children:d.name}),a.jsxs("span",{className:"link-to-boss-item-count",children:[((h=d.subordinateIds)==null?void 0:h.length)||0," agents"]})]},d.id)})})]}):a.jsxs("button",{className:"link-to-boss-btn",onClick:()=>i(!0),children:[a.jsx("span",{className:"link-to-boss-icon",style:{color:r.color},children:r.icon}),a.jsx("span",{children:"Link to Boss"})]})})}),C_=x.memo(function({agents:e}){const t=Zn(),n=e.reduce((o,r)=>o+r.tokensUsed,0),i=e.filter(o=>o.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.jsxs("div",{className:"unit-name",children:[e.length," Agents Selected"]}),a.jsx("div",{className:"unit-status",children:"Group selection"})]})]}),a.jsxs("div",{className:"unit-stats",children:[a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:"Total Tokens"}),a.jsx("div",{className:"unit-stat-value",children:ZE(n)})]}),a.jsxs("div",{className:"unit-stat",children:[a.jsx("div",{className:"unit-stat-label",children:"Working"}),a.jsx("div",{className:"unit-stat-value",children:i})]})]}),a.jsx("div",{style:{padding:"8px 0",maxHeight:100,overflowY:"auto"},children:e.map(o=>a.jsx(A_,{agent:o,customClasses:t},o.id))}),a.jsx("div",{className:"unit-actions",children:a.jsx("button",{className:"unit-action-btn",onClick:()=>I.deselectAll(),children:"Deselect All"})})]})}),A_=x.memo(function({agent:e,customClasses:t}){const n=Ci(e.class,t);return a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"4px 0",fontSize:12},children:[a.jsx("span",{children:n.icon}),a.jsx("span",{style:{flex:1},children:e.name}),a.jsx("span",{style:{color:"var(--text-secondary)"},children:e.status})]})});function V0({onFocusAgent:s,onKillAgent:e,onCallSubordinates:t,onOpenAreaExplorer:n}){const i=ns(),o=I.getSelectedAgents();if(i.selectedAgentIds.size===0)return a.jsx(q0,{onOpenAreaExplorer:n});if(i.selectedAgentIds.size===1){const r=o[0];return r?a.jsx(b_,{agent:r,onFocusAgent:s,onKillAgent:e,onCallSubordinates:t,onOpenAreaExplorer:n}):a.jsx(q0,{onOpenAreaExplorer:n})}return a.jsx(C_,{agents:o})}function N_(s,e){const t={};return(s[s.length-1]===""?[...s,""]:s).join((t.padRight?" ":"")+","+(t.padLeft===!1?"":" ")).trim()}const T_=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,M_=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,E_={};function Y0(s,e){return(E_.jsx?M_:T_).test(s)}const __=/[ \t\n\f\r]/g;function R_(s){return typeof s=="object"?s.type==="text"?X0(s.value):!1:X0(s)}function X0(s){return s.replace(__,"")===""}class Gl{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}}Gl.prototype.normal={};Gl.prototype.property={};Gl.prototype.space=void 0;function mS(s,e){const t={},n={};for(const i of s)Object.assign(t,i.property),Object.assign(n,i.normal);return new Gl(t,n,e)}function Mp(s){return s.toLowerCase()}class un{constructor(e,t){this.attribute=t,this.property=e}}un.prototype.attribute="";un.prototype.booleanish=!1;un.prototype.boolean=!1;un.prototype.commaOrSpaceSeparated=!1;un.prototype.commaSeparated=!1;un.prototype.defined=!1;un.prototype.mustUseProperty=!1;un.prototype.number=!1;un.prototype.overloadedBoolean=!1;un.prototype.property="";un.prototype.spaceSeparated=!1;un.prototype.space=void 0;let D_=0;const jt=mo(),Ns=mo(),Ep=mo(),$e=mo(),is=mo(),cr=mo(),yn=mo();function mo(){return 2**++D_}const _p=Object.freeze(Object.defineProperty({__proto__:null,boolean:jt,booleanish:Ns,commaOrSpaceSeparated:yn,commaSeparated:cr,number:$e,overloadedBoolean:Ep,spaceSeparated:is},Symbol.toStringTag,{value:"Module"})),Rm=Object.keys(_p);class jf extends un{constructor(e,t,n,i){let o=-1;if(super(e,t),Z0(this,"space",i),typeof n=="number")for(;++o<Rm.length;){const r=Rm[o];Z0(this,Rm[o],(n&_p[r])===_p[r])}}}jf.prototype.defined=!0;function Z0(s,e,t){t&&(s[e]=t)}function mr(s){const e={},t={};for(const[n,i]of Object.entries(s.properties)){const o=new jf(n,s.transform(s.attributes||{},n),i,s.space);s.mustUseProperty&&s.mustUseProperty.includes(n)&&(o.mustUseProperty=!0),e[n]=o,t[Mp(n)]=n,t[Mp(o.attribute)]=n}return new Gl(e,t,s.space)}const pS=mr({properties:{ariaActiveDescendant:null,ariaAtomic:Ns,ariaAutoComplete:null,ariaBusy:Ns,ariaChecked:Ns,ariaColCount:$e,ariaColIndex:$e,ariaColSpan:$e,ariaControls:is,ariaCurrent:null,ariaDescribedBy:is,ariaDetails:null,ariaDisabled:Ns,ariaDropEffect:is,ariaErrorMessage:null,ariaExpanded:Ns,ariaFlowTo:is,ariaGrabbed:Ns,ariaHasPopup:null,ariaHidden:Ns,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:is,ariaLevel:$e,ariaLive:null,ariaModal:Ns,ariaMultiLine:Ns,ariaMultiSelectable:Ns,ariaOrientation:null,ariaOwns:is,ariaPlaceholder:null,ariaPosInSet:$e,ariaPressed:Ns,ariaReadOnly:Ns,ariaRelevant:null,ariaRequired:Ns,ariaRoleDescription:is,ariaRowCount:$e,ariaRowIndex:$e,ariaRowSpan:$e,ariaSelected:Ns,ariaSetSize:$e,ariaSort:null,ariaValueMax:$e,ariaValueMin:$e,ariaValueNow:$e,ariaValueText:null,role:null},transform(s,e){return e==="role"?e:"aria-"+e.slice(4).toLowerCase()}});function fS(s,e){return e in s?s[e]:e}function gS(s,e){return fS(s,e.toLowerCase())}const L_=mr({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:cr,acceptCharset:is,accessKey:is,action:null,allow:null,allowFullScreen:jt,allowPaymentRequest:jt,allowUserMedia:jt,alt:null,as:null,async:jt,autoCapitalize:null,autoComplete:is,autoFocus:jt,autoPlay:jt,blocking:is,capture:null,charSet:null,checked:jt,cite:null,className:is,cols:$e,colSpan:null,content:null,contentEditable:Ns,controls:jt,controlsList:is,coords:$e|cr,crossOrigin:null,data:null,dateTime:null,decoding:null,default:jt,defer:jt,dir:null,dirName:null,disabled:jt,download:Ep,draggable:Ns,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:jt,formTarget:null,headers:is,height:$e,hidden:Ep,high:$e,href:null,hrefLang:null,htmlFor:is,httpEquiv:is,id:null,imageSizes:null,imageSrcSet:null,inert:jt,inputMode:null,integrity:null,is:null,isMap:jt,itemId:null,itemProp:is,itemRef:is,itemScope:jt,itemType:is,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:jt,low:$e,manifest:null,max:null,maxLength:$e,media:null,method:null,min:null,minLength:$e,multiple:jt,muted:jt,name:null,nonce:null,noModule:jt,noValidate:jt,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:jt,optimum:$e,pattern:null,ping:is,placeholder:null,playsInline:jt,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:jt,referrerPolicy:null,rel:is,required:jt,reversed:jt,rows:$e,rowSpan:$e,sandbox:is,scope:null,scoped:jt,seamless:jt,selected:jt,shadowRootClonable:jt,shadowRootDelegatesFocus:jt,shadowRootMode:null,shape:null,size:$e,sizes:null,slot:null,span:$e,spellCheck:Ns,src:null,srcDoc:null,srcLang:null,srcSet:null,start:$e,step:null,style:null,tabIndex:$e,target:null,title:null,translate:null,type:null,typeMustMatch:jt,useMap:null,value:Ns,width:$e,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:is,axis:null,background:null,bgColor:null,border:$e,borderColor:null,bottomMargin:$e,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:jt,declare:jt,event:null,face:null,frame:null,frameBorder:null,hSpace:$e,leftMargin:$e,link:null,longDesc:null,lowSrc:null,marginHeight:$e,marginWidth:$e,noResize:jt,noHref:jt,noShade:jt,noWrap:jt,object:null,profile:null,prompt:null,rev:null,rightMargin:$e,rules:null,scheme:null,scrolling:Ns,standby:null,summary:null,text:null,topMargin:$e,valueType:null,version:null,vAlign:null,vLink:null,vSpace:$e,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:jt,disableRemotePlayback:jt,prefix:null,property:null,results:$e,security:null,unselectable:null},space:"html",transform:gS}),B_=mr({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:yn,accentHeight:$e,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:$e,amplitude:$e,arabicForm:null,ascent:$e,attributeName:null,attributeType:null,azimuth:$e,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:$e,by:null,calcMode:null,capHeight:$e,className:is,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:$e,diffuseConstant:$e,direction:null,display:null,dur:null,divisor:$e,dominantBaseline:null,download:jt,dx:null,dy:null,edgeMode:null,editable:null,elevation:$e,enableBackground:null,end:null,event:null,exponent:$e,externalResourcesRequired:null,fill:null,fillOpacity:$e,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:cr,g2:cr,glyphName:cr,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:$e,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:$e,horizOriginX:$e,horizOriginY:$e,id:null,ideographic:$e,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:$e,k:$e,k1:$e,k2:$e,k3:$e,k4:$e,kernelMatrix:yn,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:$e,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:$e,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:$e,overlineThickness:$e,paintOrder:null,panose1:null,path:null,pathLength:$e,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:is,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:$e,pointsAtY:$e,pointsAtZ:$e,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:yn,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:yn,rev:yn,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:yn,requiredFeatures:yn,requiredFonts:yn,requiredFormats:yn,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:$e,specularExponent:$e,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:$e,strikethroughThickness:$e,string:null,stroke:null,strokeDashArray:yn,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:$e,strokeOpacity:$e,strokeWidth:null,style:null,surfaceScale:$e,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:yn,tabIndex:$e,tableValues:null,target:null,targetX:$e,targetY:$e,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:yn,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:$e,underlineThickness:$e,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:$e,values:null,vAlphabetic:$e,vMathematical:$e,vectorEffect:null,vHanging:$e,vIdeographic:$e,version:null,vertAdvY:$e,vertOriginX:$e,vertOriginY:$e,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:$e,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:fS}),bS=mr({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(s,e){return"xlink:"+e.slice(5).toLowerCase()}}),yS=mr({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:gS}),xS=mr({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(s,e){return"xml:"+e.slice(3).toLowerCase()}}),O_={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"},P_=/[A-Z]/g,Q0=/-[a-z]/g,I_=/^data[-\w.:]+$/i;function z_(s,e){const t=Mp(e);let n=e,i=un;if(t in s.normal)return s.property[s.normal[t]];if(t.length>4&&t.slice(0,4)==="data"&&I_.test(e)){if(e.charAt(4)==="-"){const o=e.slice(5).replace(Q0,H_);n="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=e.slice(4);if(!Q0.test(o)){let r=o.replace(P_,F_);r.charAt(0)!=="-"&&(r="-"+r),e="data"+r}}i=jf}return new i(n,e)}function F_(s){return"-"+s.toLowerCase()}function H_(s){return s.charAt(1).toUpperCase()}const $_=mS([pS,L_,bS,yS,xS],"html"),Cf=mS([pS,B_,bS,yS,xS],"svg");function U_(s){return s.join(" ").trim()}var Xo={},Dm,J0;function G_(){if(J0)return Dm;J0=1;var s=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,t=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,o=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,r=/^[;\s]*/,c=/^\s+|\s+$/g,d=`
143
143
  `,h="/",p="*",f="",g="comment",y="declaration";function v(S,C){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];C=C||{};var A=1,N=1;function _(Y){var $=Y.match(e);$&&(A+=$.length);var L=Y.lastIndexOf(d);N=~L?Y.length-L:N+Y.length}function M(){var Y={line:A,column:N};return function($){return $.position=new E(Y),R(),$}}function E(Y){this.start=Y,this.end={line:A,column:N},this.source=C.source}E.prototype.content=S;function z(Y){var $=new Error(C.source+":"+A+":"+N+": "+Y);if($.reason=Y,$.filename=C.source,$.line=A,$.column=N,$.source=S,!C.silent)throw $}function T(Y){var $=Y.exec(S);if($){var L=$[0];return _(L),S=S.slice(L.length),$}}function R(){T(t)}function D(Y){var $;for(Y=Y||[];$=O();)$!==!1&&Y.push($);return Y}function O(){var Y=M();if(!(h!=S.charAt(0)||p!=S.charAt(1))){for(var $=2;f!=S.charAt($)&&(p!=S.charAt($)||h!=S.charAt($+1));)++$;if($+=2,f===S.charAt($-1))return z("End of comment missing");var L=S.slice(2,$-2);return N+=2,_(L),S=S.slice($),N+=2,Y({type:g,comment:L})}}function P(){var Y=M(),$=T(n);if($){if(O(),!T(i))return z("property missing ':'");var L=T(o),q=Y({type:y,property:w($[0].replace(s,f)),value:L?w(L[0].replace(s,f)):f});return T(r),q}}function K(){var Y=[];D(Y);for(var $;$=P();)$!==!1&&(Y.push($),D(Y));return Y}return R(),K()}function w(S){return S?S.replace(c,f):f}return Dm=v,Dm}var ev;function q_(){if(ev)return Xo;ev=1;var s=Xo&&Xo.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Xo,"__esModule",{value:!0}),Xo.default=t;const e=s(G_());function t(n,i){let o=null;if(!n||typeof n!="string")return o;const r=(0,e.default)(n),c=typeof i=="function";return r.forEach(d=>{if(d.type!=="declaration")return;const{property:h,value:p}=d;c?i(h,p,d):p&&(o=o||{},o[h]=p)}),o}return Xo}var gl={},tv;function W_(){if(tv)return gl;tv=1,Object.defineProperty(gl,"__esModule",{value:!0}),gl.camelCase=void 0;var s=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,t=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,i=/^-(ms)-/,o=function(h){return!h||t.test(h)||s.test(h)},r=function(h,p){return p.toUpperCase()},c=function(h,p){return"".concat(p,"-")},d=function(h,p){return p===void 0&&(p={}),o(h)?h:(h=h.toLowerCase(),p.reactCompat?h=h.replace(i,c):h=h.replace(n,c),h.replace(e,r))};return gl.camelCase=d,gl}var bl,sv;function K_(){if(sv)return bl;sv=1;var s=bl&&bl.__importDefault||function(i){return i&&i.__esModule?i:{default:i}},e=s(q_()),t=W_();function n(i,o){var r={};return!i||typeof i!="string"||(0,e.default)(i,function(c,d){c&&d&&(r[(0,t.camelCase)(c,o)]=d)}),r}return n.default=n,bl=n,bl}var V_=K_();const Y_=Vu(V_),vS=wS("end"),Af=wS("start");function wS(s){return e;function e(t){const n=t&&t.position&&t.position[s]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function X_(s){const e=Af(s),t=vS(s);if(e&&t)return{start:e,end:t}}function Tl(s){return!s||typeof s!="object"?"":"position"in s||"type"in s?nv(s.position):"start"in s||"end"in s?nv(s):"line"in s||"column"in s?Rp(s):""}function Rp(s){return av(s&&s.line)+":"+av(s&&s.column)}function nv(s){return Rp(s&&s.start)+"-"+Rp(s&&s.end)}function av(s){return s&&typeof s=="number"?s:1}class Ws extends Error{constructor(e,t,n){super(),typeof t=="string"&&(n=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 n=="string"){const d=n.indexOf(":");d===-1?o.ruleId=n:(o.source=n.slice(0,d),o.ruleId=n.slice(d+1))}if(!o.place&&o.ancestors&&o.ancestors){const d=o.ancestors[o.ancestors.length-1];d&&(o.place=d.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=Tl(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}}Ws.prototype.file="";Ws.prototype.name="";Ws.prototype.reason="";Ws.prototype.message="";Ws.prototype.stack="";Ws.prototype.column=void 0;Ws.prototype.line=void 0;Ws.prototype.ancestors=void 0;Ws.prototype.cause=void 0;Ws.prototype.fatal=void 0;Ws.prototype.place=void 0;Ws.prototype.ruleId=void 0;Ws.prototype.source=void 0;const Nf={}.hasOwnProperty,Z_=new Map,Q_=/[A-Z]/g,J_=new Set(["table","tbody","thead","tfoot","tr"]),eR=new Set(["td","th"]),kS="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function tR(s,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const t=e.filePath||void 0;let n;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=cR(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");n=lR(t,e.jsx,e.jsxs)}const i={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:n,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"?Cf:$_,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},o=SS(i,s,void 0);return o&&typeof o!="string"?o:i.create(s,i.Fragment,{children:o||void 0},void 0)}function SS(s,e,t){if(e.type==="element")return sR(s,e,t);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return nR(s,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return iR(s,e,t);if(e.type==="mdxjsEsm")return aR(s,e);if(e.type==="root")return oR(s,e,t);if(e.type==="text")return rR(s,e)}function sR(s,e,t){const n=s.schema;let i=n;e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(i=Cf,s.schema=i),s.ancestors.push(e);const o=CS(s,e.tagName,!1),r=uR(s,e);let c=Mf(s,e);return J_.has(e.tagName)&&(c=c.filter(function(d){return typeof d=="string"?!R_(d):!0})),jS(s,r,o,e),Tf(r,c),s.ancestors.pop(),s.schema=n,s.create(e,o,r,t)}function nR(s,e){if(e.data&&e.data.estree&&s.evaluater){const n=e.data.estree.body[0];return n.type,s.evaluater.evaluateExpression(n.expression)}zl(s,e.position)}function aR(s,e){if(e.data&&e.data.estree&&s.evaluater)return s.evaluater.evaluateProgram(e.data.estree);zl(s,e.position)}function iR(s,e,t){const n=s.schema;let i=n;e.name==="svg"&&n.space==="html"&&(i=Cf,s.schema=i),s.ancestors.push(e);const o=e.name===null?s.Fragment:CS(s,e.name,!0),r=dR(s,e),c=Mf(s,e);return jS(s,r,o,e),Tf(r,c),s.ancestors.pop(),s.schema=n,s.create(e,o,r,t)}function oR(s,e,t){const n={};return Tf(n,Mf(s,e)),s.create(e,s.Fragment,n,t)}function rR(s,e){return e.value}function jS(s,e,t,n){typeof t!="string"&&t!==s.Fragment&&s.passNode&&(e.node=n)}function Tf(s,e){if(e.length>0){const t=e.length>1?e:e[0];t&&(s.children=t)}}function lR(s,e,t){return n;function n(i,o,r,c){const h=Array.isArray(r.children)?t:e;return c?h(o,r,c):h(o,r)}}function cR(s,e){return t;function t(n,i,o,r){const c=Array.isArray(o.children),d=Af(n);return e(i,o,r,c,{columnNumber:d?d.column-1:void 0,fileName:s,lineNumber:d?d.line:void 0},void 0)}}function uR(s,e){const t={};let n,i;for(i in e.properties)if(i!=="children"&&Nf.call(e.properties,i)){const o=hR(s,i,e.properties[i]);if(o){const[r,c]=o;s.tableCellAlignToStyle&&r==="align"&&typeof c=="string"&&eR.has(e.tagName)?n=c:t[r]=c}}if(n){const o=t.style||(t.style={});o[s.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return t}function dR(s,e){const t={};for(const n of e.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&s.evaluater){const o=n.data.estree.body[0];o.type;const r=o.expression;r.type;const c=r.properties[0];c.type,Object.assign(t,s.evaluater.evaluateExpression(c.argument))}else zl(s,e.position);else{const i=n.name;let o;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&s.evaluater){const c=n.value.data.estree.body[0];c.type,o=s.evaluater.evaluateExpression(c.expression)}else zl(s,e.position);else o=n.value===null?!0:n.value;t[i]=o}return t}function Mf(s,e){const t=[];let n=-1;const i=s.passKeys?new Map:Z_;for(;++n<e.children.length;){const o=e.children[n];let r;if(s.passKeys){const d=o.type==="element"?o.tagName:o.type==="mdxJsxFlowElement"||o.type==="mdxJsxTextElement"?o.name:void 0;if(d){const h=i.get(d)||0;r=d+"-"+h,i.set(d,h+1)}}const c=SS(s,o,r);c!==void 0&&t.push(c)}return t}function hR(s,e,t){const n=z_(s.schema,e);if(!(t==null||typeof t=="number"&&Number.isNaN(t))){if(Array.isArray(t)&&(t=n.commaSeparated?N_(t):U_(t)),n.property==="style"){let i=typeof t=="object"?t:mR(s,String(t));return s.stylePropertyNameCase==="css"&&(i=pR(i)),["style",i]}return[s.elementAttributeNameCase==="react"&&n.space?O_[n.property]||n.property:n.attribute,t]}}function mR(s,e){try{return Y_(e,{reactCompat:!0})}catch(t){if(s.ignoreInvalidStyle)return{};const n=t,i=new Ws("Cannot parse `style` attribute",{ancestors:s.ancestors,cause:n,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw i.file=s.filePath||void 0,i.url=kS+"#cannot-parse-style-attribute",i}}function CS(s,e,t){let n;if(!t)n={type:"Literal",value:e};else if(e.includes(".")){const i=e.split(".");let o=-1,r;for(;++o<i.length;){const c=Y0(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}n=r}else n=Y0(e)&&!/^[a-z]/.test(e)?{type:"Identifier",name:e}:{type:"Literal",value:e};if(n.type==="Literal"){const i=n.value;return Nf.call(s.components,i)?s.components[i]:i}if(s.evaluater)return s.evaluater.evaluateExpression(n);zl(s)}function zl(s,e){const t=new Ws("Cannot handle MDX estrees without `createEvaluater`",{ancestors:s.ancestors,place:e,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw t.file=s.filePath||void 0,t.url=kS+"#cannot-handle-mdx-estrees-without-createevaluater",t}function pR(s){const e={};let t;for(t in s)Nf.call(s,t)&&(e[fR(t)]=s[t]);return e}function fR(s){let e=s.replace(Q_,gR);return e.slice(0,3)==="ms-"&&(e="-"+e),e}function gR(s){return"-"+s.toLowerCase()}const Lm={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"]},bR={};function Ef(s,e){const t=bR,n=typeof t.includeImageAlt=="boolean"?t.includeImageAlt:!0,i=typeof t.includeHtml=="boolean"?t.includeHtml:!0;return AS(s,n,i)}function AS(s,e,t){if(yR(s)){if("value"in s)return s.type==="html"&&!t?"":s.value;if(e&&"alt"in s&&s.alt)return s.alt;if("children"in s)return iv(s.children,e,t)}return Array.isArray(s)?iv(s,e,t):""}function iv(s,e,t){const n=[];let i=-1;for(;++i<s.length;)n[i]=AS(s[i],e,t);return n.join("")}function yR(s){return!!(s&&typeof s=="object")}const ov=document.createElement("i");function _f(s){const e="&"+s+";";ov.innerHTML=e;const t=ov.textContent;return t.charCodeAt(t.length-1)===59&&s!=="semi"||t===e?!1:t}function wn(s,e,t,n){const i=s.length;let o=0,r;if(e<0?e=-e>i?0:i+e:e=e>i?i:e,t=t>0?t:0,n.length<1e4)r=Array.from(n),r.unshift(e,t),s.splice(...r);else for(t&&s.splice(e,t);o<n.length;)r=n.slice(o,o+1e4),r.unshift(e,0),s.splice(...r),o+=1e4,e+=1e4}function Ln(s,e){return s.length>0?(wn(s,s.length,0,e),s):e}const rv={}.hasOwnProperty;function NS(s){const e={};let t=-1;for(;++t<s.length;)xR(e,s[t]);return e}function xR(s,e){let t;for(t in e){const i=(rv.call(s,t)?s[t]:void 0)||(s[t]={}),o=e[t];let r;if(o)for(r in o){rv.call(i,r)||(i[r]=[]);const c=o[r];vR(i[r],Array.isArray(c)?c:c?[c]:[])}}}function vR(s,e){let t=-1;const n=[];for(;++t<e.length;)(e[t].add==="after"?s:n).push(e[t]);wn(s,0,0,n)}function TS(s,e){const t=Number.parseInt(s,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 Vn(s){return s.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Zs=Ni(/[A-Za-z]/),qs=Ni(/[\dA-Za-z]/),wR=Ni(/[#-'*+\--9=?A-Z^-~]/);function Ou(s){return s!==null&&(s<32||s===127)}const Dp=Ni(/\d/),kR=Ni(/[\dA-Fa-f]/),SR=Ni(/[!-/:-@[-`{-~]/);function dt(s){return s!==null&&s<-2}function ss(s){return s!==null&&(s<0||s===32)}function Lt(s){return s===-2||s===-1||s===32}const sd=Ni(new RegExp("\\p{P}|\\p{S}","u")),co=Ni(/\s/);function Ni(s){return e;function e(t){return t!==null&&t>-1&&s.test(String.fromCharCode(t))}}function pr(s){const e=[];let t=-1,n=0,i=0;for(;++t<s.length;){const o=s.charCodeAt(t);let r="";if(o===37&&qs(s.charCodeAt(t+1))&&qs(s.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=s.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(s.slice(n,t),encodeURIComponent(r)),n=t+i+1,r=""),i&&(t+=i,i=0)}return e.join("")+s.slice(n)}function Ft(s,e,t,n){const i=n?n-1:Number.POSITIVE_INFINITY;let o=0;return r;function r(d){return Lt(d)?(s.enter(t),c(d)):e(d)}function c(d){return Lt(d)&&o++<i?(s.consume(d),c):(s.exit(t),e(d))}}const jR={tokenize:CR};function CR(s){const e=s.attempt(this.parser.constructs.contentInitial,n,i);let t;return e;function n(c){if(c===null){s.consume(c);return}return s.enter("lineEnding"),s.consume(c),s.exit("lineEnding"),Ft(s,e,"linePrefix")}function i(c){return s.enter("paragraph"),o(c)}function o(c){const d=s.enter("chunkText",{contentType:"text",previous:t});return t&&(t.next=d),t=d,r(c)}function r(c){if(c===null){s.exit("chunkText"),s.exit("paragraph"),s.consume(c);return}return dt(c)?(s.consume(c),s.exit("chunkText"),o):(s.consume(c),r)}}const AR={tokenize:NR},lv={tokenize:TR};function NR(s){const e=this,t=[];let n=0,i,o,r;return c;function c(N){if(n<t.length){const _=t[n];return e.containerState=_[1],s.attempt(_[0].continuation,d,h)(N)}return h(N)}function d(N){if(n++,e.containerState._closeFlow){e.containerState._closeFlow=void 0,i&&A();const _=e.events.length;let M=_,E;for(;M--;)if(e.events[M][0]==="exit"&&e.events[M][1].type==="chunkFlow"){E=e.events[M][1].end;break}C(n);let z=_;for(;z<e.events.length;)e.events[z][1].end={...E},z++;return wn(e.events,M+1,0,e.events.slice(_)),e.events.length=z,h(N)}return c(N)}function h(N){if(n===t.length){if(!i)return g(N);if(i.currentConstruct&&i.currentConstruct.concrete)return v(N);e.interrupt=!!(i.currentConstruct&&!i._gfmTableDynamicInterruptHack)}return e.containerState={},s.check(lv,p,f)(N)}function p(N){return i&&A(),C(n),g(N)}function f(N){return e.parser.lazy[e.now().line]=n!==t.length,r=e.now().offset,v(N)}function g(N){return e.containerState={},s.attempt(lv,y,v)(N)}function y(N){return n++,t.push([e.currentConstruct,e.containerState]),g(N)}function v(N){if(N===null){i&&A(),C(0),s.consume(N);return}return i=i||e.parser.flow(e.now()),s.enter("chunkFlow",{_tokenizer:i,contentType:"flow",previous:o}),w(N)}function w(N){if(N===null){S(s.exit("chunkFlow"),!0),C(0),s.consume(N);return}return dt(N)?(s.consume(N),S(s.exit("chunkFlow")),n=0,e.interrupt=void 0,c):(s.consume(N),w)}function S(N,_){const M=e.sliceStream(N);if(_&&M.push(null),N.previous=o,o&&(o.next=N),o=N,i.defineSkip(N.start),i.write(M),e.parser.lazy[N.start.line]){let E=i.events.length;for(;E--;)if(i.events[E][1].start.offset<r&&(!i.events[E][1].end||i.events[E][1].end.offset>r))return;const z=e.events.length;let T=z,R,D;for(;T--;)if(e.events[T][0]==="exit"&&e.events[T][1].type==="chunkFlow"){if(R){D=e.events[T][1].end;break}R=!0}for(C(n),E=z;E<e.events.length;)e.events[E][1].end={...D},E++;wn(e.events,T+1,0,e.events.slice(z)),e.events.length=E}}function C(N){let _=t.length;for(;_-- >N;){const M=t[_];e.containerState=M[1],M[0].exit.call(e,s)}t.length=N}function A(){i.write([null]),o=void 0,i=void 0,e.containerState._closeFlow=void 0}}function TR(s,e,t){return Ft(s,s.attempt(this.parser.constructs.document,e,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function hr(s){if(s===null||ss(s)||co(s))return 1;if(sd(s))return 2}function nd(s,e,t){const n=[];let i=-1;for(;++i<s.length;){const o=s[i].resolveAll;o&&!n.includes(o)&&(e=o(e,t),n.push(o))}return e}const Lp={name:"attention",resolveAll:MR,tokenize:ER};function MR(s,e){let t=-1,n,i,o,r,c,d,h,p;for(;++t<s.length;)if(s[t][0]==="enter"&&s[t][1].type==="attentionSequence"&&s[t][1]._close){for(n=t;n--;)if(s[n][0]==="exit"&&s[n][1].type==="attentionSequence"&&s[n][1]._open&&e.sliceSerialize(s[n][1]).charCodeAt(0)===e.sliceSerialize(s[t][1]).charCodeAt(0)){if((s[n][1]._close||s[t][1]._open)&&(s[t][1].end.offset-s[t][1].start.offset)%3&&!((s[n][1].end.offset-s[n][1].start.offset+s[t][1].end.offset-s[t][1].start.offset)%3))continue;d=s[n][1].end.offset-s[n][1].start.offset>1&&s[t][1].end.offset-s[t][1].start.offset>1?2:1;const f={...s[n][1].end},g={...s[t][1].start};cv(f,-d),cv(g,d),r={type:d>1?"strongSequence":"emphasisSequence",start:f,end:{...s[n][1].end}},c={type:d>1?"strongSequence":"emphasisSequence",start:{...s[t][1].start},end:g},o={type:d>1?"strongText":"emphasisText",start:{...s[n][1].end},end:{...s[t][1].start}},i={type:d>1?"strong":"emphasis",start:{...r.start},end:{...c.end}},s[n][1].end={...r.start},s[t][1].start={...c.end},h=[],s[n][1].end.offset-s[n][1].start.offset&&(h=Ln(h,[["enter",s[n][1],e],["exit",s[n][1],e]])),h=Ln(h,[["enter",i,e],["enter",r,e],["exit",r,e],["enter",o,e]]),h=Ln(h,nd(e.parser.constructs.insideSpan.null,s.slice(n+1,t),e)),h=Ln(h,[["exit",o,e],["enter",c,e],["exit",c,e],["exit",i,e]]),s[t][1].end.offset-s[t][1].start.offset?(p=2,h=Ln(h,[["enter",s[t][1],e],["exit",s[t][1],e]])):p=0,wn(s,n-1,t-n+3,h),t=n+h.length-p-2;break}}for(t=-1;++t<s.length;)s[t][1].type==="attentionSequence"&&(s[t][1].type="data");return s}function ER(s,e){const t=this.parser.constructs.attentionMarkers.null,n=this.previous,i=hr(n);let o;return r;function r(d){return o=d,s.enter("attentionSequence"),c(d)}function c(d){if(d===o)return s.consume(d),c;const h=s.exit("attentionSequence"),p=hr(d),f=!p||p===2&&i||t.includes(d),g=!i||i===2&&p||t.includes(n);return h._open=!!(o===42?f:f&&(i||!g)),h._close=!!(o===42?g:g&&(p||!f)),e(d)}}function cv(s,e){s.column+=e,s.offset+=e,s._bufferIndex+=e}const _R={name:"autolink",tokenize:RR};function RR(s,e,t){let n=0;return i;function i(y){return s.enter("autolink"),s.enter("autolinkMarker"),s.consume(y),s.exit("autolinkMarker"),s.enter("autolinkProtocol"),o}function o(y){return Zs(y)?(s.consume(y),r):y===64?t(y):h(y)}function r(y){return y===43||y===45||y===46||qs(y)?(n=1,c(y)):h(y)}function c(y){return y===58?(s.consume(y),n=0,d):(y===43||y===45||y===46||qs(y))&&n++<32?(s.consume(y),c):(n=0,h(y))}function d(y){return y===62?(s.exit("autolinkProtocol"),s.enter("autolinkMarker"),s.consume(y),s.exit("autolinkMarker"),s.exit("autolink"),e):y===null||y===32||y===60||Ou(y)?t(y):(s.consume(y),d)}function h(y){return y===64?(s.consume(y),p):wR(y)?(s.consume(y),h):t(y)}function p(y){return qs(y)?f(y):t(y)}function f(y){return y===46?(s.consume(y),n=0,p):y===62?(s.exit("autolinkProtocol").type="autolinkEmail",s.enter("autolinkMarker"),s.consume(y),s.exit("autolinkMarker"),s.exit("autolink"),e):g(y)}function g(y){if((y===45||qs(y))&&n++<63){const v=y===45?g:f;return s.consume(y),v}return t(y)}}const ql={partial:!0,tokenize:DR};function DR(s,e,t){return n;function n(o){return Lt(o)?Ft(s,i,"linePrefix")(o):i(o)}function i(o){return o===null||dt(o)?e(o):t(o)}}const MS={continuation:{tokenize:BR},exit:OR,name:"blockQuote",tokenize:LR};function LR(s,e,t){const n=this;return i;function i(r){if(r===62){const c=n.containerState;return c.open||(s.enter("blockQuote",{_container:!0}),c.open=!0),s.enter("blockQuotePrefix"),s.enter("blockQuoteMarker"),s.consume(r),s.exit("blockQuoteMarker"),o}return t(r)}function o(r){return Lt(r)?(s.enter("blockQuotePrefixWhitespace"),s.consume(r),s.exit("blockQuotePrefixWhitespace"),s.exit("blockQuotePrefix"),e):(s.exit("blockQuotePrefix"),e(r))}}function BR(s,e,t){const n=this;return i;function i(r){return Lt(r)?Ft(s,o,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(r):o(r)}function o(r){return s.attempt(MS,e,t)(r)}}function OR(s){s.exit("blockQuote")}const ES={name:"characterEscape",tokenize:PR};function PR(s,e,t){return n;function n(o){return s.enter("characterEscape"),s.enter("escapeMarker"),s.consume(o),s.exit("escapeMarker"),i}function i(o){return SR(o)?(s.enter("characterEscapeValue"),s.consume(o),s.exit("characterEscapeValue"),s.exit("characterEscape"),e):t(o)}}const _S={name:"characterReference",tokenize:IR};function IR(s,e,t){const n=this;let i=0,o,r;return c;function c(f){return s.enter("characterReference"),s.enter("characterReferenceMarker"),s.consume(f),s.exit("characterReferenceMarker"),d}function d(f){return f===35?(s.enter("characterReferenceMarkerNumeric"),s.consume(f),s.exit("characterReferenceMarkerNumeric"),h):(s.enter("characterReferenceValue"),o=31,r=qs,p(f))}function h(f){return f===88||f===120?(s.enter("characterReferenceMarkerHexadecimal"),s.consume(f),s.exit("characterReferenceMarkerHexadecimal"),s.enter("characterReferenceValue"),o=6,r=kR,p):(s.enter("characterReferenceValue"),o=7,r=Dp,p(f))}function p(f){if(f===59&&i){const g=s.exit("characterReferenceValue");return r===qs&&!_f(n.sliceSerialize(g))?t(f):(s.enter("characterReferenceMarker"),s.consume(f),s.exit("characterReferenceMarker"),s.exit("characterReference"),e)}return r(f)&&i++<o?(s.consume(f),p):t(f)}}const uv={partial:!0,tokenize:FR},dv={concrete:!0,name:"codeFenced",tokenize:zR};function zR(s,e,t){const n=this,i={partial:!0,tokenize:M};let o=0,r=0,c;return d;function d(E){return h(E)}function h(E){const z=n.events[n.events.length-1];return o=z&&z[1].type==="linePrefix"?z[2].sliceSerialize(z[1],!0).length:0,c=E,s.enter("codeFenced"),s.enter("codeFencedFence"),s.enter("codeFencedFenceSequence"),p(E)}function p(E){return E===c?(r++,s.consume(E),p):r<3?t(E):(s.exit("codeFencedFenceSequence"),Lt(E)?Ft(s,f,"whitespace")(E):f(E))}function f(E){return E===null||dt(E)?(s.exit("codeFencedFence"),n.interrupt?e(E):s.check(uv,w,_)(E)):(s.enter("codeFencedFenceInfo"),s.enter("chunkString",{contentType:"string"}),g(E))}function g(E){return E===null||dt(E)?(s.exit("chunkString"),s.exit("codeFencedFenceInfo"),f(E)):Lt(E)?(s.exit("chunkString"),s.exit("codeFencedFenceInfo"),Ft(s,y,"whitespace")(E)):E===96&&E===c?t(E):(s.consume(E),g)}function y(E){return E===null||dt(E)?f(E):(s.enter("codeFencedFenceMeta"),s.enter("chunkString",{contentType:"string"}),v(E))}function v(E){return E===null||dt(E)?(s.exit("chunkString"),s.exit("codeFencedFenceMeta"),f(E)):E===96&&E===c?t(E):(s.consume(E),v)}function w(E){return s.attempt(i,_,S)(E)}function S(E){return s.enter("lineEnding"),s.consume(E),s.exit("lineEnding"),C}function C(E){return o>0&&Lt(E)?Ft(s,A,"linePrefix",o+1)(E):A(E)}function A(E){return E===null||dt(E)?s.check(uv,w,_)(E):(s.enter("codeFlowValue"),N(E))}function N(E){return E===null||dt(E)?(s.exit("codeFlowValue"),A(E)):(s.consume(E),N)}function _(E){return s.exit("codeFenced"),e(E)}function M(E,z,T){let R=0;return D;function D($){return E.enter("lineEnding"),E.consume($),E.exit("lineEnding"),O}function O($){return E.enter("codeFencedFence"),Lt($)?Ft(E,P,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)($):P($)}function P($){return $===c?(E.enter("codeFencedFenceSequence"),K($)):T($)}function K($){return $===c?(R++,E.consume($),K):R>=r?(E.exit("codeFencedFenceSequence"),Lt($)?Ft(E,Y,"whitespace")($):Y($)):T($)}function Y($){return $===null||dt($)?(E.exit("codeFencedFence"),z($)):T($)}}}function FR(s,e,t){const n=this;return i;function i(r){return r===null?t(r):(s.enter("lineEnding"),s.consume(r),s.exit("lineEnding"),o)}function o(r){return n.parser.lazy[n.now().line]?t(r):e(r)}}const Bm={name:"codeIndented",tokenize:$R},HR={partial:!0,tokenize:UR};function $R(s,e,t){const n=this;return i;function i(h){return s.enter("codeIndented"),Ft(s,o,"linePrefix",5)(h)}function o(h){const p=n.events[n.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?d(h):dt(h)?s.attempt(HR,r,d)(h):(s.enter("codeFlowValue"),c(h))}function c(h){return h===null||dt(h)?(s.exit("codeFlowValue"),r(h)):(s.consume(h),c)}function d(h){return s.exit("codeIndented"),e(h)}}function UR(s,e,t){const n=this;return i;function i(r){return n.parser.lazy[n.now().line]?t(r):dt(r)?(s.enter("lineEnding"),s.consume(r),s.exit("lineEnding"),i):Ft(s,o,"linePrefix",5)(r)}function o(r){const c=n.events[n.events.length-1];return c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?e(r):dt(r)?i(r):t(r)}}const GR={name:"codeText",previous:WR,resolve:qR,tokenize:KR};function qR(s){let e=s.length-4,t=3,n,i;if((s[t][1].type==="lineEnding"||s[t][1].type==="space")&&(s[e][1].type==="lineEnding"||s[e][1].type==="space")){for(n=t;++n<e;)if(s[n][1].type==="codeTextData"){s[t][1].type="codeTextPadding",s[e][1].type="codeTextPadding",t+=2,e-=2;break}}for(n=t-1,e++;++n<=e;)i===void 0?n!==e&&s[n][1].type!=="lineEnding"&&(i=n):(n===e||s[n][1].type==="lineEnding")&&(s[i][1].type="codeTextData",n!==i+2&&(s[i][1].end=s[n-1][1].end,s.splice(i+2,n-i-2),e-=n-i-2,n=i+2),i=void 0);return s}function WR(s){return s!==96||this.events[this.events.length-1][1].type==="characterEscape"}function KR(s,e,t){let n=0,i,o;return r;function r(f){return s.enter("codeText"),s.enter("codeTextSequence"),c(f)}function c(f){return f===96?(s.consume(f),n++,c):(s.exit("codeTextSequence"),d(f))}function d(f){return f===null?t(f):f===32?(s.enter("space"),s.consume(f),s.exit("space"),d):f===96?(o=s.enter("codeTextSequence"),i=0,p(f)):dt(f)?(s.enter("lineEnding"),s.consume(f),s.exit("lineEnding"),d):(s.enter("codeTextData"),h(f))}function h(f){return f===null||f===32||f===96||dt(f)?(s.exit("codeTextData"),d(f)):(s.consume(f),h)}function p(f){return f===96?(s.consume(f),i++,p):i===n?(s.exit("codeTextSequence"),s.exit("codeText"),e(f)):(o.type="codeTextData",h(f))}}class VR{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 n=t??Number.POSITIVE_INFINITY;return n<this.left.length?this.left.slice(e,n):e>this.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){const i=t||0;this.setCursor(Math.trunc(e));const o=this.right.splice(this.right.length-i,Number.POSITIVE_INFINITY);return n&&yl(this.left,n),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),yl(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),yl(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);yl(this.right,t.reverse())}else{const t=this.right.splice(this.left.length+this.right.length-e,Number.POSITIVE_INFINITY);yl(this.left,t.reverse())}}}function yl(s,e){let t=0;if(e.length<1e4)s.push(...e);else for(;t<e.length;)s.push(...e.slice(t,t+1e4)),t+=1e4}function RS(s){const e={};let t=-1,n,i,o,r,c,d,h;const p=new VR(s);for(;++t<p.length;){for(;t in e;)t=e[t];if(n=p.get(t),t&&n[1].type==="chunkFlow"&&p.get(t-1)[1].type==="listItemPrefix"&&(d=n[1]._tokenizer.events,o=0,o<d.length&&d[o][1].type==="lineEndingBlank"&&(o+=2),o<d.length&&d[o][1].type==="content"))for(;++o<d.length&&d[o][1].type!=="content";)d[o][1].type==="chunkText"&&(d[o][1]._isInFirstContentOfListItem=!0,o++);if(n[0]==="enter")n[1].contentType&&(Object.assign(e,YR(p,t)),t=e[t],h=!0);else if(n[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&&(n[1].end={...p.get(i)[1].start},c=p.slice(i,t),c.unshift(n),p.splice(i,t-i+1,c))}}return wn(s,0,Number.POSITIVE_INFINITY,p.slice(0)),!h}function YR(s,e){const t=s.get(e)[1],n=s.get(e)[2];let i=e-1;const o=[];let r=t._tokenizer;r||(r=n.parser[t.contentType](t.start),t._contentTypeTextTrailing&&(r._contentTypeTextTrailing=!0));const c=r.events,d=[],h={};let p,f,g=-1,y=t,v=0,w=0;const S=[w];for(;y;){for(;s.get(++i)[1]!==y;);o.push(i),y._tokenizer||(p=n.sliceStream(y),y.next||p.push(null),f&&r.defineSkip(y.start),y._isInFirstContentOfListItem&&(r._gfmTasklistFirstContentOfListItem=!0),r.write(p),y._isInFirstContentOfListItem&&(r._gfmTasklistFirstContentOfListItem=void 0)),f=y,y=y.next}for(y=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,S.push(w),y._tokenizer=void 0,y.previous=void 0,y=y.next);for(r.events=[],y?(y._tokenizer=void 0,y.previous=void 0):S.pop(),g=S.length;g--;){const C=c.slice(S[g],S[g+1]),A=o.pop();d.push([A,A+C.length-1]),s.splice(A,2,C)}for(d.reverse(),g=-1;++g<d.length;)h[v+d[g][0]]=v+d[g][1],v+=d[g][1]-d[g][0]-1;return h}const XR={resolve:QR,tokenize:JR},ZR={partial:!0,tokenize:eD};function QR(s){return RS(s),s}function JR(s,e){let t;return n;function n(c){return s.enter("content"),t=s.enter("chunkContent",{contentType:"content"}),i(c)}function i(c){return c===null?o(c):dt(c)?s.check(ZR,r,o)(c):(s.consume(c),i)}function o(c){return s.exit("chunkContent"),s.exit("content"),e(c)}function r(c){return s.consume(c),s.exit("chunkContent"),t.next=s.enter("chunkContent",{contentType:"content",previous:t}),t=t.next,i}}function eD(s,e,t){const n=this;return i;function i(r){return s.exit("chunkContent"),s.enter("lineEnding"),s.consume(r),s.exit("lineEnding"),Ft(s,o,"linePrefix")}function o(r){if(r===null||dt(r))return t(r);const c=n.events[n.events.length-1];return!n.parser.constructs.disable.null.includes("codeIndented")&&c&&c[1].type==="linePrefix"&&c[2].sliceSerialize(c[1],!0).length>=4?e(r):s.interrupt(n.parser.constructs.flow,t,e)(r)}}function DS(s,e,t,n,i,o,r,c,d){const h=d||Number.POSITIVE_INFINITY;let p=0;return f;function f(C){return C===60?(s.enter(n),s.enter(i),s.enter(o),s.consume(C),s.exit(o),g):C===null||C===32||C===41||Ou(C)?t(C):(s.enter(n),s.enter(r),s.enter(c),s.enter("chunkString",{contentType:"string"}),w(C))}function g(C){return C===62?(s.enter(o),s.consume(C),s.exit(o),s.exit(i),s.exit(n),e):(s.enter(c),s.enter("chunkString",{contentType:"string"}),y(C))}function y(C){return C===62?(s.exit("chunkString"),s.exit(c),g(C)):C===null||C===60||dt(C)?t(C):(s.consume(C),C===92?v:y)}function v(C){return C===60||C===62||C===92?(s.consume(C),y):y(C)}function w(C){return!p&&(C===null||C===41||ss(C))?(s.exit("chunkString"),s.exit(c),s.exit(r),s.exit(n),e(C)):p<h&&C===40?(s.consume(C),p++,w):C===41?(s.consume(C),p--,w):C===null||C===32||C===40||Ou(C)?t(C):(s.consume(C),C===92?S:w)}function S(C){return C===40||C===41||C===92?(s.consume(C),w):w(C)}}function LS(s,e,t,n,i,o){const r=this;let c=0,d;return h;function h(y){return s.enter(n),s.enter(i),s.consume(y),s.exit(i),s.enter(o),p}function p(y){return c>999||y===null||y===91||y===93&&!d||y===94&&!c&&"_hiddenFootnoteSupport"in r.parser.constructs?t(y):y===93?(s.exit(o),s.enter(i),s.consume(y),s.exit(i),s.exit(n),e):dt(y)?(s.enter("lineEnding"),s.consume(y),s.exit("lineEnding"),p):(s.enter("chunkString",{contentType:"string"}),f(y))}function f(y){return y===null||y===91||y===93||dt(y)||c++>999?(s.exit("chunkString"),p(y)):(s.consume(y),d||(d=!Lt(y)),y===92?g:f)}function g(y){return y===91||y===92||y===93?(s.consume(y),c++,f):f(y)}}function BS(s,e,t,n,i,o){let r;return c;function c(g){return g===34||g===39||g===40?(s.enter(n),s.enter(i),s.consume(g),s.exit(i),r=g===40?41:g,d):t(g)}function d(g){return g===r?(s.enter(i),s.consume(g),s.exit(i),s.exit(n),e):(s.enter(o),h(g))}function h(g){return g===r?(s.exit(o),d(r)):g===null?t(g):dt(g)?(s.enter("lineEnding"),s.consume(g),s.exit("lineEnding"),Ft(s,h,"linePrefix")):(s.enter("chunkString",{contentType:"string"}),p(g))}function p(g){return g===r||g===null||dt(g)?(s.exit("chunkString"),h(g)):(s.consume(g),g===92?f:p)}function f(g){return g===r||g===92?(s.consume(g),p):p(g)}}function Ml(s,e){let t;return n;function n(i){return dt(i)?(s.enter("lineEnding"),s.consume(i),s.exit("lineEnding"),t=!0,n):Lt(i)?Ft(s,n,t?"linePrefix":"lineSuffix")(i):e(i)}}const tD={name:"definition",tokenize:nD},sD={partial:!0,tokenize:aD};function nD(s,e,t){const n=this;let i;return o;function o(y){return s.enter("definition"),r(y)}function r(y){return LS.call(n,s,c,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(y)}function c(y){return i=Vn(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),y===58?(s.enter("definitionMarker"),s.consume(y),s.exit("definitionMarker"),d):t(y)}function d(y){return ss(y)?Ml(s,h)(y):h(y)}function h(y){return DS(s,p,t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(y)}function p(y){return s.attempt(sD,f,f)(y)}function f(y){return Lt(y)?Ft(s,g,"whitespace")(y):g(y)}function g(y){return y===null||dt(y)?(s.exit("definition"),n.parser.defined.push(i),e(y)):t(y)}}function aD(s,e,t){return n;function n(c){return ss(c)?Ml(s,i)(c):t(c)}function i(c){return BS(s,o,t,"definitionTitle","definitionTitleMarker","definitionTitleString")(c)}function o(c){return Lt(c)?Ft(s,r,"whitespace")(c):r(c)}function r(c){return c===null||dt(c)?e(c):t(c)}}const iD={name:"hardBreakEscape",tokenize:oD};function oD(s,e,t){return n;function n(o){return s.enter("hardBreakEscape"),s.consume(o),i}function i(o){return dt(o)?(s.exit("hardBreakEscape"),e(o)):t(o)}}const rD={name:"headingAtx",resolve:lD,tokenize:cD};function lD(s,e){let t=s.length-2,n=3,i,o;return s[n][1].type==="whitespace"&&(n+=2),t-2>n&&s[t][1].type==="whitespace"&&(t-=2),s[t][1].type==="atxHeadingSequence"&&(n===t-1||t-4>n&&s[t-2][1].type==="whitespace")&&(t-=n+1===t?2:4),t>n&&(i={type:"atxHeadingText",start:s[n][1].start,end:s[t][1].end},o={type:"chunkText",start:s[n][1].start,end:s[t][1].end,contentType:"text"},wn(s,n,t-n+1,[["enter",i,e],["enter",o,e],["exit",o,e],["exit",i,e]])),s}function cD(s,e,t){let n=0;return i;function i(p){return s.enter("atxHeading"),o(p)}function o(p){return s.enter("atxHeadingSequence"),r(p)}function r(p){return p===35&&n++<6?(s.consume(p),r):p===null||ss(p)?(s.exit("atxHeadingSequence"),c(p)):t(p)}function c(p){return p===35?(s.enter("atxHeadingSequence"),d(p)):p===null||dt(p)?(s.exit("atxHeading"),e(p)):Lt(p)?Ft(s,c,"whitespace")(p):(s.enter("atxHeadingText"),h(p))}function d(p){return p===35?(s.consume(p),d):(s.exit("atxHeadingSequence"),c(p))}function h(p){return p===null||p===35||ss(p)?(s.exit("atxHeadingText"),c(p)):(s.consume(p),h)}}const uD=["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"],hv=["pre","script","style","textarea"],dD={concrete:!0,name:"htmlFlow",resolveTo:pD,tokenize:fD},hD={partial:!0,tokenize:bD},mD={partial:!0,tokenize:gD};function pD(s){let e=s.length;for(;e--&&!(s[e][0]==="enter"&&s[e][1].type==="htmlFlow"););return e>1&&s[e-2][1].type==="linePrefix"&&(s[e][1].start=s[e-2][1].start,s[e+1][1].start=s[e-2][1].start,s.splice(e-2,2)),s}function fD(s,e,t){const n=this;let i,o,r,c,d;return h;function h(H){return p(H)}function p(H){return s.enter("htmlFlow"),s.enter("htmlFlowData"),s.consume(H),f}function f(H){return H===33?(s.consume(H),g):H===47?(s.consume(H),o=!0,w):H===63?(s.consume(H),i=3,n.interrupt?e:B):Zs(H)?(s.consume(H),r=String.fromCharCode(H),S):t(H)}function g(H){return H===45?(s.consume(H),i=2,y):H===91?(s.consume(H),i=5,c=0,v):Zs(H)?(s.consume(H),i=4,n.interrupt?e:B):t(H)}function y(H){return H===45?(s.consume(H),n.interrupt?e:B):t(H)}function v(H){const te="CDATA[";return H===te.charCodeAt(c++)?(s.consume(H),c===te.length?n.interrupt?e:P:v):t(H)}function w(H){return Zs(H)?(s.consume(H),r=String.fromCharCode(H),S):t(H)}function S(H){if(H===null||H===47||H===62||ss(H)){const te=H===47,ae=r.toLowerCase();return!te&&!o&&hv.includes(ae)?(i=1,n.interrupt?e(H):P(H)):uD.includes(r.toLowerCase())?(i=6,te?(s.consume(H),C):n.interrupt?e(H):P(H)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?t(H):o?A(H):N(H))}return H===45||qs(H)?(s.consume(H),r+=String.fromCharCode(H),S):t(H)}function C(H){return H===62?(s.consume(H),n.interrupt?e:P):t(H)}function A(H){return Lt(H)?(s.consume(H),A):D(H)}function N(H){return H===47?(s.consume(H),D):H===58||H===95||Zs(H)?(s.consume(H),_):Lt(H)?(s.consume(H),N):D(H)}function _(H){return H===45||H===46||H===58||H===95||qs(H)?(s.consume(H),_):M(H)}function M(H){return H===61?(s.consume(H),E):Lt(H)?(s.consume(H),M):N(H)}function E(H){return H===null||H===60||H===61||H===62||H===96?t(H):H===34||H===39?(s.consume(H),d=H,z):Lt(H)?(s.consume(H),E):T(H)}function z(H){return H===d?(s.consume(H),d=null,R):H===null||dt(H)?t(H):(s.consume(H),z)}function T(H){return H===null||H===34||H===39||H===47||H===60||H===61||H===62||H===96||ss(H)?M(H):(s.consume(H),T)}function R(H){return H===47||H===62||Lt(H)?N(H):t(H)}function D(H){return H===62?(s.consume(H),O):t(H)}function O(H){return H===null||dt(H)?P(H):Lt(H)?(s.consume(H),O):t(H)}function P(H){return H===45&&i===2?(s.consume(H),L):H===60&&i===1?(s.consume(H),q):H===62&&i===4?(s.consume(H),Q):H===63&&i===3?(s.consume(H),B):H===93&&i===5?(s.consume(H),G):dt(H)&&(i===6||i===7)?(s.exit("htmlFlowData"),s.check(hD,U,K)(H)):H===null||dt(H)?(s.exit("htmlFlowData"),K(H)):(s.consume(H),P)}function K(H){return s.check(mD,Y,U)(H)}function Y(H){return s.enter("lineEnding"),s.consume(H),s.exit("lineEnding"),$}function $(H){return H===null||dt(H)?K(H):(s.enter("htmlFlowData"),P(H))}function L(H){return H===45?(s.consume(H),B):P(H)}function q(H){return H===47?(s.consume(H),r="",V):P(H)}function V(H){if(H===62){const te=r.toLowerCase();return hv.includes(te)?(s.consume(H),Q):P(H)}return Zs(H)&&r.length<8?(s.consume(H),r+=String.fromCharCode(H),V):P(H)}function G(H){return H===93?(s.consume(H),B):P(H)}function B(H){return H===62?(s.consume(H),Q):H===45&&i===2?(s.consume(H),B):P(H)}function Q(H){return H===null||dt(H)?(s.exit("htmlFlowData"),U(H)):(s.consume(H),Q)}function U(H){return s.exit("htmlFlow"),e(H)}}function gD(s,e,t){const n=this;return i;function i(r){return dt(r)?(s.enter("lineEnding"),s.consume(r),s.exit("lineEnding"),o):t(r)}function o(r){return n.parser.lazy[n.now().line]?t(r):e(r)}}function bD(s,e,t){return n;function n(i){return s.enter("lineEnding"),s.consume(i),s.exit("lineEnding"),s.attempt(ql,e,t)}}const yD={name:"htmlText",tokenize:xD};function xD(s,e,t){const n=this;let i,o,r;return c;function c(B){return s.enter("htmlText"),s.enter("htmlTextData"),s.consume(B),d}function d(B){return B===33?(s.consume(B),h):B===47?(s.consume(B),M):B===63?(s.consume(B),N):Zs(B)?(s.consume(B),T):t(B)}function h(B){return B===45?(s.consume(B),p):B===91?(s.consume(B),o=0,v):Zs(B)?(s.consume(B),A):t(B)}function p(B){return B===45?(s.consume(B),y):t(B)}function f(B){return B===null?t(B):B===45?(s.consume(B),g):dt(B)?(r=f,q(B)):(s.consume(B),f)}function g(B){return B===45?(s.consume(B),y):f(B)}function y(B){return B===62?L(B):B===45?g(B):f(B)}function v(B){const Q="CDATA[";return B===Q.charCodeAt(o++)?(s.consume(B),o===Q.length?w:v):t(B)}function w(B){return B===null?t(B):B===93?(s.consume(B),S):dt(B)?(r=w,q(B)):(s.consume(B),w)}function S(B){return B===93?(s.consume(B),C):w(B)}function C(B){return B===62?L(B):B===93?(s.consume(B),C):w(B)}function A(B){return B===null||B===62?L(B):dt(B)?(r=A,q(B)):(s.consume(B),A)}function N(B){return B===null?t(B):B===63?(s.consume(B),_):dt(B)?(r=N,q(B)):(s.consume(B),N)}function _(B){return B===62?L(B):N(B)}function M(B){return Zs(B)?(s.consume(B),E):t(B)}function E(B){return B===45||qs(B)?(s.consume(B),E):z(B)}function z(B){return dt(B)?(r=z,q(B)):Lt(B)?(s.consume(B),z):L(B)}function T(B){return B===45||qs(B)?(s.consume(B),T):B===47||B===62||ss(B)?R(B):t(B)}function R(B){return B===47?(s.consume(B),L):B===58||B===95||Zs(B)?(s.consume(B),D):dt(B)?(r=R,q(B)):Lt(B)?(s.consume(B),R):L(B)}function D(B){return B===45||B===46||B===58||B===95||qs(B)?(s.consume(B),D):O(B)}function O(B){return B===61?(s.consume(B),P):dt(B)?(r=O,q(B)):Lt(B)?(s.consume(B),O):R(B)}function P(B){return B===null||B===60||B===61||B===62||B===96?t(B):B===34||B===39?(s.consume(B),i=B,K):dt(B)?(r=P,q(B)):Lt(B)?(s.consume(B),P):(s.consume(B),Y)}function K(B){return B===i?(s.consume(B),i=void 0,$):B===null?t(B):dt(B)?(r=K,q(B)):(s.consume(B),K)}function Y(B){return B===null||B===34||B===39||B===60||B===61||B===96?t(B):B===47||B===62||ss(B)?R(B):(s.consume(B),Y)}function $(B){return B===47||B===62||ss(B)?R(B):t(B)}function L(B){return B===62?(s.consume(B),s.exit("htmlTextData"),s.exit("htmlText"),e):t(B)}function q(B){return s.exit("htmlTextData"),s.enter("lineEnding"),s.consume(B),s.exit("lineEnding"),V}function V(B){return Lt(B)?Ft(s,G,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(B):G(B)}function G(B){return s.enter("htmlTextData"),r(B)}}const Rf={name:"labelEnd",resolveAll:SD,resolveTo:jD,tokenize:CD},vD={tokenize:AD},wD={tokenize:ND},kD={tokenize:TD};function SD(s){let e=-1;const t=[];for(;++e<s.length;){const n=s[e][1];if(t.push(s[e]),n.type==="labelImage"||n.type==="labelLink"||n.type==="labelEnd"){const i=n.type==="labelImage"?4:2;n.type="data",e+=i}}return s.length!==t.length&&wn(s,0,s.length,t),s}function jD(s,e){let t=s.length,n=0,i,o,r,c;for(;t--;)if(i=s[t][1],o){if(i.type==="link"||i.type==="labelLink"&&i._inactive)break;s[t][0]==="enter"&&i.type==="labelLink"&&(i._inactive=!0)}else if(r){if(s[t][0]==="enter"&&(i.type==="labelImage"||i.type==="labelLink")&&!i._balanced&&(o=t,i.type!=="labelLink")){n=2;break}}else i.type==="labelEnd"&&(r=t);const d={type:s[o][1].type==="labelLink"?"link":"image",start:{...s[o][1].start},end:{...s[s.length-1][1].end}},h={type:"label",start:{...s[o][1].start},end:{...s[r][1].end}},p={type:"labelText",start:{...s[o+n+2][1].end},end:{...s[r-2][1].start}};return c=[["enter",d,e],["enter",h,e]],c=Ln(c,s.slice(o+1,o+n+3)),c=Ln(c,[["enter",p,e]]),c=Ln(c,nd(e.parser.constructs.insideSpan.null,s.slice(o+n+4,r-3),e)),c=Ln(c,[["exit",p,e],s[r-2],s[r-1],["exit",h,e]]),c=Ln(c,s.slice(r+1)),c=Ln(c,[["exit",d,e]]),wn(s,o,s.length,c),s}function CD(s,e,t){const n=this;let i=n.events.length,o,r;for(;i--;)if((n.events[i][1].type==="labelImage"||n.events[i][1].type==="labelLink")&&!n.events[i][1]._balanced){o=n.events[i][1];break}return c;function c(g){return o?o._inactive?f(g):(r=n.parser.defined.includes(Vn(n.sliceSerialize({start:o.end,end:n.now()}))),s.enter("labelEnd"),s.enter("labelMarker"),s.consume(g),s.exit("labelMarker"),s.exit("labelEnd"),d):t(g)}function d(g){return g===40?s.attempt(vD,p,r?p:f)(g):g===91?s.attempt(wD,p,r?h:f)(g):r?p(g):f(g)}function h(g){return s.attempt(kD,p,f)(g)}function p(g){return e(g)}function f(g){return o._balanced=!0,t(g)}}function AD(s,e,t){return n;function n(f){return s.enter("resource"),s.enter("resourceMarker"),s.consume(f),s.exit("resourceMarker"),i}function i(f){return ss(f)?Ml(s,o)(f):o(f)}function o(f){return f===41?p(f):DS(s,r,c,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(f)}function r(f){return ss(f)?Ml(s,d)(f):p(f)}function c(f){return t(f)}function d(f){return f===34||f===39||f===40?BS(s,h,t,"resourceTitle","resourceTitleMarker","resourceTitleString")(f):p(f)}function h(f){return ss(f)?Ml(s,p)(f):p(f)}function p(f){return f===41?(s.enter("resourceMarker"),s.consume(f),s.exit("resourceMarker"),s.exit("resource"),e):t(f)}}function ND(s,e,t){const n=this;return i;function i(c){return LS.call(n,s,o,r,"reference","referenceMarker","referenceString")(c)}function o(c){return n.parser.defined.includes(Vn(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)))?e(c):t(c)}function r(c){return t(c)}}function TD(s,e,t){return n;function n(o){return s.enter("reference"),s.enter("referenceMarker"),s.consume(o),s.exit("referenceMarker"),i}function i(o){return o===93?(s.enter("referenceMarker"),s.consume(o),s.exit("referenceMarker"),s.exit("reference"),e):t(o)}}const MD={name:"labelStartImage",resolveAll:Rf.resolveAll,tokenize:ED};function ED(s,e,t){const n=this;return i;function i(c){return s.enter("labelImage"),s.enter("labelImageMarker"),s.consume(c),s.exit("labelImageMarker"),o}function o(c){return c===91?(s.enter("labelMarker"),s.consume(c),s.exit("labelMarker"),s.exit("labelImage"),r):t(c)}function r(c){return c===94&&"_hiddenFootnoteSupport"in n.parser.constructs?t(c):e(c)}}const _D={name:"labelStartLink",resolveAll:Rf.resolveAll,tokenize:RD};function RD(s,e,t){const n=this;return i;function i(r){return s.enter("labelLink"),s.enter("labelMarker"),s.consume(r),s.exit("labelMarker"),s.exit("labelLink"),o}function o(r){return r===94&&"_hiddenFootnoteSupport"in n.parser.constructs?t(r):e(r)}}const Om={name:"lineEnding",tokenize:DD};function DD(s,e){return t;function t(n){return s.enter("lineEnding"),s.consume(n),s.exit("lineEnding"),Ft(s,e,"linePrefix")}}const ju={name:"thematicBreak",tokenize:LD};function LD(s,e,t){let n=0,i;return o;function o(h){return s.enter("thematicBreak"),r(h)}function r(h){return i=h,c(h)}function c(h){return h===i?(s.enter("thematicBreakSequence"),d(h)):n>=3&&(h===null||dt(h))?(s.exit("thematicBreak"),e(h)):t(h)}function d(h){return h===i?(s.consume(h),n++,d):(s.exit("thematicBreakSequence"),Lt(h)?Ft(s,c,"whitespace")(h):c(h))}}const rn={continuation:{tokenize:ID},exit:FD,name:"list",tokenize:PD},BD={partial:!0,tokenize:HD},OD={partial:!0,tokenize:zD};function PD(s,e,t){const n=this,i=n.events[n.events.length-1];let o=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,r=0;return c;function c(y){const v=n.containerState.type||(y===42||y===43||y===45?"listUnordered":"listOrdered");if(v==="listUnordered"?!n.containerState.marker||y===n.containerState.marker:Dp(y)){if(n.containerState.type||(n.containerState.type=v,s.enter(v,{_container:!0})),v==="listUnordered")return s.enter("listItemPrefix"),y===42||y===45?s.check(ju,t,h)(y):h(y);if(!n.interrupt||y===49)return s.enter("listItemPrefix"),s.enter("listItemValue"),d(y)}return t(y)}function d(y){return Dp(y)&&++r<10?(s.consume(y),d):(!n.interrupt||r<2)&&(n.containerState.marker?y===n.containerState.marker:y===41||y===46)?(s.exit("listItemValue"),h(y)):t(y)}function h(y){return s.enter("listItemMarker"),s.consume(y),s.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||y,s.check(ql,n.interrupt?t:p,s.attempt(BD,g,f))}function p(y){return n.containerState.initialBlankLine=!0,o++,g(y)}function f(y){return Lt(y)?(s.enter("listItemPrefixWhitespace"),s.consume(y),s.exit("listItemPrefixWhitespace"),g):t(y)}function g(y){return n.containerState.size=o+n.sliceSerialize(s.exit("listItemPrefix"),!0).length,e(y)}}function ID(s,e,t){const n=this;return n.containerState._closeFlow=void 0,s.check(ql,i,o);function i(c){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,Ft(s,e,"listItemIndent",n.containerState.size+1)(c)}function o(c){return n.containerState.furtherBlankLines||!Lt(c)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,r(c)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,s.attempt(OD,e,r)(c))}function r(c){return n.containerState._closeFlow=!0,n.interrupt=void 0,Ft(s,s.attempt(rn,e,t),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(c)}}function zD(s,e,t){const n=this;return Ft(s,i,"listItemIndent",n.containerState.size+1);function i(o){const r=n.events[n.events.length-1];return r&&r[1].type==="listItemIndent"&&r[2].sliceSerialize(r[1],!0).length===n.containerState.size?e(o):t(o)}}function FD(s){s.exit(this.containerState.type)}function HD(s,e,t){const n=this;return Ft(s,i,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(o){const r=n.events[n.events.length-1];return!Lt(o)&&r&&r[1].type==="listItemPrefixWhitespace"?e(o):t(o)}}const mv={name:"setextUnderline",resolveTo:$D,tokenize:UD};function $D(s,e){let t=s.length,n,i,o;for(;t--;)if(s[t][0]==="enter"){if(s[t][1].type==="content"){n=t;break}s[t][1].type==="paragraph"&&(i=t)}else s[t][1].type==="content"&&s.splice(t,1),!o&&s[t][1].type==="definition"&&(o=t);const r={type:"setextHeading",start:{...s[n][1].start},end:{...s[s.length-1][1].end}};return s[i][1].type="setextHeadingText",o?(s.splice(i,0,["enter",r,e]),s.splice(o+1,0,["exit",s[n][1],e]),s[n][1].end={...s[o][1].end}):s[n][1]=r,s.push(["exit",r,e]),s}function UD(s,e,t){const n=this;let i;return o;function o(h){let p=n.events.length,f;for(;p--;)if(n.events[p][1].type!=="lineEnding"&&n.events[p][1].type!=="linePrefix"&&n.events[p][1].type!=="content"){f=n.events[p][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||f)?(s.enter("setextHeadingLine"),i=h,r(h)):t(h)}function r(h){return s.enter("setextHeadingLineSequence"),c(h)}function c(h){return h===i?(s.consume(h),c):(s.exit("setextHeadingLineSequence"),Lt(h)?Ft(s,d,"lineSuffix")(h):d(h))}function d(h){return h===null||dt(h)?(s.exit("setextHeadingLine"),e(h)):t(h)}}const GD={tokenize:qD};function qD(s){const e=this,t=s.attempt(ql,n,s.attempt(this.parser.constructs.flowInitial,i,Ft(s,s.attempt(this.parser.constructs.flow,i,s.attempt(XR,i)),"linePrefix")));return t;function n(o){if(o===null){s.consume(o);return}return s.enter("lineEndingBlank"),s.consume(o),s.exit("lineEndingBlank"),e.currentConstruct=void 0,t}function i(o){if(o===null){s.consume(o);return}return s.enter("lineEnding"),s.consume(o),s.exit("lineEnding"),e.currentConstruct=void 0,t}}const WD={resolveAll:PS()},KD=OS("string"),VD=OS("text");function OS(s){return{resolveAll:PS(s==="text"?YD:void 0),tokenize:e};function e(t){const n=this,i=this.parser.constructs[s],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),d}function d(p){return h(p)?(t.exit("data"),o(p)):(t.consume(p),d)}function h(p){if(p===null)return!0;const f=i[p];let g=-1;if(f)for(;++g<f.length;){const y=f[g];if(!y.previous||y.previous.call(n,n.previous))return!0}return!1}}}function PS(s){return e;function e(t,n){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 s?s(t,n):t}}function YD(s,e){let t=0;for(;++t<=s.length;)if((t===s.length||s[t][1].type==="lineEnding")&&s[t-1][1].type==="data"){const n=s[t-1][1],i=e.sliceStream(n);let o=i.length,r=-1,c=0,d;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)d=!0,c++;else if(h!==-1){o++;break}}if(e._contentTypeTextTrailing&&t===s.length&&(c=0),c){const h={type:t===s.length||d||c<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:o?r:n.start._bufferIndex+r,_index:n.start._index+o,line:n.end.line,column:n.end.column-c,offset:n.end.offset-c},end:{...n.end}};n.end={...h.start},n.start.offset===n.end.offset?Object.assign(n,h):(s.splice(t,0,["enter",h,e],["exit",h,e]),t+=2)}t++}return s}const XD={42:rn,43:rn,45:rn,48:rn,49:rn,50:rn,51:rn,52:rn,53:rn,54:rn,55:rn,56:rn,57:rn,62:MS},ZD={91:tD},QD={[-2]:Bm,[-1]:Bm,32:Bm},JD={35:rD,42:ju,45:[mv,ju],60:dD,61:mv,95:ju,96:dv,126:dv},eL={38:_S,92:ES},tL={[-5]:Om,[-4]:Om,[-3]:Om,33:MD,38:_S,42:Lp,60:[_R,yD],91:_D,92:[iD,ES],93:Rf,95:Lp,96:GR},sL={null:[Lp,WD]},nL={null:[42,95]},aL={null:[]},iL=Object.freeze(Object.defineProperty({__proto__:null,attentionMarkers:nL,contentInitial:ZD,disable:aL,document:XD,flow:JD,flowInitial:QD,insideSpan:sL,string:eL,text:tL},Symbol.toStringTag,{value:"Module"}));function oL(s,e,t){let n={_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 d={attempt:z(M),check:z(E),consume:A,enter:N,exit:_,interrupt:z(E,{interrupt:!0})},h={code:null,containerState:{},defineSkip:w,events:[],now:v,parser:s,previous:null,sliceSerialize:g,sliceStream:y,write:f};let p=e.tokenize.call(h,d);return e.resolveAll&&o.push(e),h;function f(O){return r=Ln(r,O),S(),r[r.length-1]!==null?[]:(T(e,0),h.events=nd(o,h.events,h),h.events)}function g(O,P){return lL(y(O),P)}function y(O){return rL(r,O)}function v(){const{_bufferIndex:O,_index:P,line:K,column:Y,offset:$}=n;return{_bufferIndex:O,_index:P,line:K,column:Y,offset:$}}function w(O){i[O.line]=O.column,D()}function S(){let O;for(;n._index<r.length;){const P=r[n._index];if(typeof P=="string")for(O=n._index,n._bufferIndex<0&&(n._bufferIndex=0);n._index===O&&n._bufferIndex<P.length;)C(P.charCodeAt(n._bufferIndex));else C(P)}}function C(O){p=p(O)}function A(O){dt(O)?(n.line++,n.column=1,n.offset+=O===-3?2:1,D()):O!==-1&&(n.column++,n.offset++),n._bufferIndex<0?n._index++:(n._bufferIndex++,n._bufferIndex===r[n._index].length&&(n._bufferIndex=-1,n._index++)),h.previous=O}function N(O,P){const K=P||{};return K.type=O,K.start=v(),h.events.push(["enter",K,h]),c.push(K),K}function _(O){const P=c.pop();return P.end=v(),h.events.push(["exit",P,h]),P}function M(O,P){T(O,P.from)}function E(O,P){P.restore()}function z(O,P){return K;function K(Y,$,L){let q,V,G,B;return Array.isArray(Y)?U(Y):"tokenize"in Y?U([Y]):Q(Y);function Q(J){return he;function he(me){const pe=me!==null&&J[me],ne=me!==null&&J.null,xe=[...Array.isArray(pe)?pe:pe?[pe]:[],...Array.isArray(ne)?ne:ne?[ne]:[]];return U(xe)(me)}}function U(J){return q=J,V=0,J.length===0?L:H(J[V])}function H(J){return he;function he(me){return B=R(),G=J,J.partial||(h.currentConstruct=J),J.name&&h.parser.constructs.disable.null.includes(J.name)?ae():J.tokenize.call(P?Object.assign(Object.create(h),P):h,d,te,ae)(me)}}function te(J){return O(G,B),$}function ae(J){return B.restore(),++V<q.length?H(q[V]):L}}}function T(O,P){O.resolveAll&&!o.includes(O)&&o.push(O),O.resolve&&wn(h.events,P,h.events.length-P,O.resolve(h.events.slice(P),h)),O.resolveTo&&(h.events=O.resolveTo(h.events,h))}function R(){const O=v(),P=h.previous,K=h.currentConstruct,Y=h.events.length,$=Array.from(c);return{from:Y,restore:L};function L(){n=O,h.previous=P,h.currentConstruct=K,h.events.length=Y,c=$,D()}}function D(){n.line in i&&n.column<2&&(n.column=i[n.line],n.offset+=i[n.line]-1)}}function rL(s,e){const t=e.start._index,n=e.start._bufferIndex,i=e.end._index,o=e.end._bufferIndex;let r;if(t===i)r=[s[t].slice(n,o)];else{if(r=s.slice(t,i),n>-1){const c=r[0];typeof c=="string"?r[0]=c.slice(n):r.shift()}o>0&&r.push(s[i].slice(0,o))}return r}function lL(s,e){let t=-1;const n=[];let i;for(;++t<s.length;){const o=s[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-rd_RRZq_.js"></script>
22
+ <script type="module" crossorigin src="/assets/main-DYpODVvY.js"></script>
23
23
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-uS-d4TUT.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/vendor-three-4iQNXcoo.js">
25
25
  <link rel="stylesheet" crossorigin href="/assets/main-BIpLsrUu.css">
@@ -15,9 +15,10 @@ Usage:
15
15
  tide-commander stop
16
16
  tide-commander status
17
17
  tide-commander logs [--lines <n>] [--follow]
18
+ tide-commander version
18
19
 
19
20
  Options:
20
- -p, --port <port> Set server port (default: 5174)
21
+ -p, --port <port> Set server port (default: 6200)
21
22
  -H, --host <host> Set server host (default: 127.0.0.1)
22
23
  -l, --listen-all Listen on all network interfaces
23
24
  -f, --foreground Run in foreground (default is background)
@@ -32,7 +33,7 @@ function parseArgs(argv) {
32
33
  for (let i = 0; i < argv.length; i += 1) {
33
34
  const arg = argv[i];
34
35
  if (!arg.startsWith('-') && !commandParsed) {
35
- if (arg === 'start' || arg === 'stop' || arg === 'status' || arg === 'logs') {
36
+ if (arg === 'start' || arg === 'stop' || arg === 'status' || arg === 'logs' || arg === 'version') {
36
37
  options.command = arg;
37
38
  commandParsed = true;
38
39
  continue;
@@ -93,6 +94,10 @@ function parseArgs(argv) {
93
94
  case '--help':
94
95
  options.help = true;
95
96
  break;
97
+ case '-v':
98
+ case '--version':
99
+ options.command = 'version';
100
+ break;
96
101
  default:
97
102
  throw new Error(`Unknown argument: ${arg}`);
98
103
  }
@@ -155,17 +160,37 @@ function stopCommand() {
155
160
  return 0;
156
161
  }
157
162
  function statusCommand() {
163
+ // ANSI color codes
164
+ const cyan = '\x1b[36m';
165
+ const green = '\x1b[32m';
166
+ const red = '\x1b[31m';
167
+ const bright = '\x1b[1m';
168
+ const reset = '\x1b[0m';
169
+ const blue = '\x1b[34m';
158
170
  const pid = readPidFile();
159
171
  if (!pid) {
160
- console.log('Tide Commander is stopped');
172
+ console.log(`\n${red}${bright}⨯ Tide Commander is stopped${reset}\n`);
161
173
  return 1;
162
174
  }
163
175
  if (!isRunning(pid)) {
164
176
  clearPidFile();
165
- console.log('Tide Commander is stopped (stale PID file removed)');
177
+ console.log(`\n${red}${bright}⨯ Tide Commander is stopped${reset} (stale PID file removed)\n`);
166
178
  return 1;
167
179
  }
168
- console.log(`Tide Commander is running (PID: ${pid})`);
180
+ const port = process.env.PORT || '6200';
181
+ const host = process.env.HOST || 'localhost';
182
+ const url = `http://${host}:${port}`;
183
+ const uptime = getProcessUptime(pid);
184
+ const version = getPackageVersion();
185
+ console.log(`\n${cyan}${bright}🌊 Tide Commander Status${reset}`);
186
+ console.log(`${cyan}${'═'.repeat(60)}${reset}`);
187
+ console.log(`${green}āœ“ Running${reset} (PID: ${pid})`);
188
+ console.log(`${blue}${bright}šŸš€ Access: ${url}${reset}`);
189
+ console.log(` Version: ${version}`);
190
+ if (uptime) {
191
+ console.log(` Uptime: ${uptime}`);
192
+ }
193
+ console.log(`${cyan}${'═'.repeat(60)}${reset}\n`);
169
194
  return 0;
170
195
  }
171
196
  async function logsCommand(options) {
@@ -190,12 +215,65 @@ async function logsCommand(options) {
190
215
  });
191
216
  });
192
217
  }
218
+ function getPackageVersion() {
219
+ try {
220
+ const cliDir = path.dirname(fileURLToPath(import.meta.url));
221
+ const packagePath = path.join(cliDir, '..', '..', '..', '..', 'package.json');
222
+ const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
223
+ return packageJson.version;
224
+ }
225
+ catch {
226
+ return 'unknown';
227
+ }
228
+ }
229
+ function getProcessUptime(pid) {
230
+ try {
231
+ // Try to get process start time from /proc/[pid]/stat (Linux)
232
+ if (fs.existsSync(`/proc/${pid}/stat`)) {
233
+ const stat = fs.readFileSync(`/proc/${pid}/stat`, 'utf8').split(' ');
234
+ const starttime = Number(stat[21]); // starttime in jiffies
235
+ const uptimeFile = fs.readFileSync('/proc/uptime', 'utf8').split(' ')[0];
236
+ const systemUptimeJiffies = Number(uptimeFile) * 100; // convert to jiffies (assuming 100 Hz)
237
+ const processUptimeJiffies = systemUptimeJiffies - starttime;
238
+ const processUptimeSeconds = Math.floor(processUptimeJiffies / 100);
239
+ const hours = Math.floor(processUptimeSeconds / 3600);
240
+ const minutes = Math.floor((processUptimeSeconds % 3600) / 60);
241
+ const seconds = processUptimeSeconds % 60;
242
+ if (hours > 0) {
243
+ return `${hours}h ${minutes}m ${seconds}s`;
244
+ }
245
+ else if (minutes > 0) {
246
+ return `${minutes}m ${seconds}s`;
247
+ }
248
+ else {
249
+ return `${seconds}s`;
250
+ }
251
+ }
252
+ }
253
+ catch {
254
+ // Uptime not available (not on Linux or /proc not available)
255
+ }
256
+ return null;
257
+ }
258
+ function versionCommand() {
259
+ try {
260
+ const version = getPackageVersion();
261
+ console.log(`Tide Commander v${version}`);
262
+ }
263
+ catch {
264
+ console.error('Failed to read version information');
265
+ }
266
+ }
193
267
  async function main() {
194
268
  const options = parseArgs(process.argv.slice(2));
195
269
  if (options.help) {
196
270
  printHelp();
197
271
  return;
198
272
  }
273
+ if (options.command === 'version') {
274
+ versionCommand();
275
+ return;
276
+ }
199
277
  if (options.command === 'stop') {
200
278
  process.exit(stopCommand());
201
279
  }
@@ -221,7 +299,11 @@ async function main() {
221
299
  const runInForeground = options.foreground === true || process.env.TIDE_COMMANDER_FOREGROUND === '1';
222
300
  const existingPid = readPidFile();
223
301
  if (existingPid && isRunning(existingPid)) {
224
- console.log(`Tide Commander is already running (PID: ${existingPid})`);
302
+ const port = process.env.PORT || '6200';
303
+ const host = process.env.HOST || 'localhost';
304
+ const url = `http://${host}:${port}`;
305
+ console.log(`\n🌊 Tide Commander is already running (PID: ${existingPid})`);
306
+ console.log(`šŸš€ Open: ${url}\n`);
225
307
  return;
226
308
  }
227
309
  clearPidFile();
@@ -239,15 +321,22 @@ async function main() {
239
321
  writePidFile(child.pid);
240
322
  }
241
323
  child.unref();
242
- const port = process.env.PORT || '5174';
324
+ const port = process.env.PORT || '6200';
243
325
  const host = process.env.HOST || 'localhost';
244
326
  const url = `http://${host}:${port}`;
245
- console.log('\n🌊 Tide Commander');
246
- console.log('═══════════════════════════════════════════════════════════');
247
- console.log(`āœ“ Started in background (PID: ${child.pid ?? 'unknown'})`);
248
- console.log(`šŸš€ Open: ${url}`);
249
- console.log(`šŸ“ Logs: tail -f logs/server.log`);
250
- console.log('═══════════════════════════════════════════════════════════\n');
327
+ // ANSI color codes for beautiful output
328
+ const cyan = '\x1b[36m';
329
+ const green = '\x1b[32m';
330
+ const bright = '\x1b[1m';
331
+ const reset = '\x1b[0m';
332
+ const blue = '\x1b[34m';
333
+ console.log(`\n${cyan}${bright}🌊 Tide Commander${reset}`);
334
+ console.log(`${cyan}${'═'.repeat(60)}${reset}`);
335
+ console.log(`${green}āœ“${reset} Started in background (PID: ${child.pid ?? 'unknown'})`);
336
+ console.log(`${blue}${bright}šŸš€ Open: ${url}${reset}`);
337
+ console.log(` Version: ${getPackageVersion()}`);
338
+ console.log(`${green}šŸ“ Logs${reset}: tail -f logs/server.log`);
339
+ console.log(`${cyan}${'═'.repeat(60)}${reset}\n`);
251
340
  return;
252
341
  }
253
342
  if (child.pid) {
@@ -10,7 +10,7 @@ import * as websocket from './websocket/handler.js';
10
10
  import { getDataDir } from './data/index.js';
11
11
  import { logger, closeFileLogging, getLogFilePath } from './utils/logger.js';
12
12
  // Configuration
13
- const PORT = process.env.PORT || 5174;
13
+ const PORT = process.env.PORT || 6200;
14
14
  const HOST = process.env.HOST || (process.env.LISTEN_ALL_INTERFACES ? '::' : '127.0.0.1');
15
15
  // ============================================================================
16
16
  // Global Error Handlers
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tide-commander",
3
- "version": "0.53.2",
3
+ "version": "0.53.4",
4
4
  "description": "Visual multi-agent orchestrator and manager for Claude Code with 3D/2D interface",
5
5
  "type": "module",
6
6
  "bin": {