@mindexec/cli 0.2.374 → 0.2.375

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.
@@ -1,4 +1,4 @@
1
- var Em=Object.defineProperty;var _m=(e,t,o)=>t in e?Em(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Al=(e,t,o)=>_m(e,typeof t!="symbol"?t+"":t,o);import{j as n,r as g,a as Bm}from"./vendor-react-BXzpOyCS.js";import{l as Dm,a as vt,s as qt,b as Om,d as Fm,r as $m,c as zm,e as Um,i as Ml}from"./storage-BPqBi6qs.js";import{r as di,g as Ls,w as Hm,a as ur,d as Tl,b as Wm,t as ci,p as Jd,v as Vm,R as Ym,c as Gm,u as Km,e as Xm,f as Rl,s as pt,i as yn,l as mr,h as io,j as es,k as lo,m as co,n as ts,o as ua,q as Ll,x as xn,y as qm,z as Pl,A as Jm,B as Zm,C as Qm,D as ep,E as tp,F as Zd,G as ap,H as np,I as ga,J as Qd,T as op,K as sp,L as El,M as uo,N as ec,O as Or,P as Fr,Q as tc,S as as,U as gs,V as bo,W as _l,X as Y,Y as pr,Z as yo,_ as rp,$ as ip,a0 as lp,a1 as Bl,a2 as gr,a3 as dp,a4 as cp,a5 as up,a6 as mp,a7 as pp,a8 as gp,a9 as hp,aa as Dl,ab as fp,ac as bp,ad as yp,ae as xp}from"./canvas-runtime-CddXXjp9.js";import{e as Cp,d as Sp}from"./vendor-msgpack-BE8aAsr3.js";import{R as f}from"./app-runtime-xD2Z3NdN.js";import{g as hr,A as Ol,a as hs}from"./index-DIEPIn-L.js";import{r as ac}from"./productionAdapterConfig-C5jfk6oG.js";import{getSupabaseBrowserClient as Ps}from"./supabaseAuthAdapter-bSjZe3In.js";import{c as wp,a as kp,r as Fl}from"./toolHandoff-D5e5f7t5.js";import{a as $l,s as vp}from"./executionModeSettings-NJqurj-o.js";import{a as zl,p as jp}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";import{A as Jt,W as Ip,c as nc,D as Np,E as ui,R as In,J as mi,X as jt,N as $r,O as Ap,Q as Nn,w as An,I as Mn,V as Tn,l as vs,F as It,Y as Mp,Z as zr,_ as js,$ as Rn,a0 as oc,a1 as Tp,a2 as sc,a3 as Rp,i as So,a4 as rc,a5 as Lp,a6 as Ul,a7 as Pp,a8 as ha,a9 as Hl,T as Is,aa as Wl,ab as vo,ac as Ep,ad as fs,ae as ic,af as Ur,o as lc,ag as _p,ah as Bp,f as Dp,ai as Op,h as xo,x as Fp,aj as $p,ak as zp,al as Vl,am as Yl,an as Gl,g as Kl,ao as ns,H as mo,ap as os,s as fr,aq as Xl,ar as Up,as as br,at as ql,au as ss,av as yr,aw as Jl,ax as Zl,ay as Ql,az as Hp,aA as Wp,aB as Vp,aC as Yp,n as Gp,aD as Kp,aE as Xp,aF as qp,aG as Jp,aH as Zp,aI as Qp,aJ as eg,aK as tg}from"./vendor-icons-678PAT8P.js";const ag=1200,Ya="LocalBridgeOriginalNodeId";function Nt(e){return typeof e=="object"&&e!==null}function ma(e,t){const o=Number(e);return Number.isFinite(o)?o:t}function q(e){return typeof e=="string"?e:""}function dc(){return typeof window<"u"?{width:window.innerWidth||1280,height:window.innerHeight||720}:{width:1280,height:720}}function Hr(e,t,o){const r=Number(e),d=Number(t),c=Number(o);if(!Number.isFinite(r)||!Number.isFinite(d)||!Number.isFinite(c)||c<=0)return null;const p=1400/c,b=dc();return{x:b.width/2-r*p,y:b.height/2-d*p,scale:p}}function ng(e){return Nt(e)?Hr(e.x??e.X,e.y??e.Y,e.z??e.Z):null}function og(e){if(!Nt(e))return null;const t=Number(e.x),o=Number(e.y),r=Number(e.scale);if(!Number.isFinite(t)||!Number.isFinite(o)||!Number.isFinite(r)||r<=0)return null;const d=dc();return{x:(d.width/2-t)/r,y:(d.height/2-o)/r,z:1400/r}}function sg(e){const t=String(e||"").trim();if(t)try{const o=JSON.parse(t);if(!Nt(o))return;const r={};for(const[d,c]of Object.entries(o)){const p=ng(c);p&&(r[d]=p)}return Object.keys(r).length>0?r:void 0}catch{return}}function rg(e){if(!e||Object.keys(e).length===0)return null;const t={};for(const[o,r]of Object.entries(e)){const d=og(r);d&&(t[o]=d)}return Object.keys(t).length>0?JSON.stringify(t):null}function Ns(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function Es(){return crypto.randomUUID()}function pi(e){return Nt(e)?"ContentType"in e||"Prompt"in e||"Response"in e||"PositionX"in e||"PositionY"in e||"SourceFilePath"in e||"ImageStack"in e:!1}function ed(e){const t=q(e).trim();if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Wr(e){if(Array.isArray(e))return e;if(!Nt(e))return[];for(const t of["Nodes","nodes","Items","items","Content","content","Upserts","upserts"])if(t in e){const o=e[t];if(Array.isArray(o))return o;const r=ed(o);if(r)return Wr(r)}for(const t of["ContentJson","contentJson","content_json"])if(t in e){const o=ed(e[t]);if(o)return Wr(o)}return pi(e)?[e]:[]}function gi(e){return Nt(e)?"BoardId"in e&&("Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e):!1}function cc(e){if(!Nt(e))return 0;for(const t of["Deletes","deletes"]){const o=e[t];if(Array.isArray(o))return o.length}return 0}function As(e){return Wr(e).filter(pi)}function uc(e){return As(e).length}function ig(e,t){var c;const o=[...As(e)];if(!gi(t))return o;const r=new Set;for(const p of["Deletes","deletes"]){const b=t[p];if(Array.isArray(b))for(const m of b){const y=q(m).trim();y&&r.add(y)}}if(r.size>0)for(let p=o.length-1;p>=0;p-=1){const b=q((c=o[p])==null?void 0:c.Id).trim();b&&r.has(b)&&o.splice(p,1)}const d=new Map;o.forEach((p,b)=>{const m=q(p.Id).trim();m&&d.set(m,b)});for(const p of As(t)){const b=q(p.Id).trim(),m=b?d.get(b):void 0;if(m!==void 0){o[m]=p;continue}b&&d.set(b,o.length),o.push(p)}return o}function mc(e){const t=Array.isArray(e)?e.filter(Nt):[];return new Map(t.filter(o=>o.NodeId).map(o=>[String(o.NodeId),o]))}async function Vr(e,t){for(const o of e)try{const r=await di(o,t);return{payload:JSON.parse(r.content),path:o}}catch{}return null}async function lg(e,t){const o=`.mindexec/boards/${e}.msgpack`,r=`boards/${e}.msgpack`;for(const b of[o,r])try{const m=await Wm(b,t);return{payload:Sp(m),format:b===o?"msgpack":"legacy-msgpack",path:b}}catch{}const d=`.mindexec/boards/${e}.json`,c=`boards/${e}.json`,p=await Vr([d,c],t);if(p)return{payload:p.payload,format:p.path===d?"json":"legacy-json",path:p.path};throw new Error(`LocalBridge board file not found: ${o}, ${r}, ${d}, ${c}`)}function Yr(e){const t=q(e.Id).trim()||q(e.BoardId).trim();return t?{Id:t,Title:q(e.Title)||null,Description:q(e.Description)||null,ThumbnailUrl:q(e.ThumbnailUrl)||null,CreatedAt:q(e.CreatedAt)||null,UpdatedAt:q(e.UpdatedAt)||null,LastCameraX:Number.isFinite(Number(e.LastCameraX))?Number(e.LastCameraX):null,LastCameraY:Number.isFinite(Number(e.LastCameraY))?Number(e.LastCameraY):null,LastCameraZ:Number.isFinite(Number(e.LastCameraZ))?Number(e.LastCameraZ):null,LastCursorX:Number.isFinite(Number(e.LastCursorX))?Number(e.LastCursorX):null,LastCursorY:Number.isFinite(Number(e.LastCursorY))?Number(e.LastCursorY):null,CameraBookmarks:q(e.CameraBookmarks)||null}:null}function td(e){return!Nt(e)||pi(e)?!1:"Title"in e||"Description"in e||"ThumbnailUrl"in e||"IsPublic"in e||"LastCameraX"in e||"LastCameraY"in e||"LastCameraZ"in e||"CameraBookmarks"in e||"BoardId"in e||"Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e||"ContentJson"in e||"content_json"in e}function hi(e){if(Array.isArray(e))return e.filter(td).map(t=>Yr(t)).filter(t=>!!t);if(td(e)){const t=Yr(e);return t?[t]:[]}return[]}function dg(e){const t=e.toLowerCase();return cg(t)?"remote-control":ug(t)?"remote-monitor":t==="templatelauncher"||t==="template-launcher"||t.includes("template launcher")?"template-launcher":t.includes("directory")?"directory":t.includes("pdf")?"pdf":t.includes("file")?"file":t.includes("mask")?"mask":t.includes("image")?"image":t.includes("video")?"video":t.includes("embed")?"embed":t==="csv-table"||t.includes("csv-table")||t.includes("csv table")?"csv-table":t.includes("markdown")?"markdown":t.includes("code")?"code":t==="text"||t==="text/plain"||t.includes("plain-text")||t.includes("plain text")?"text":t.includes("ai")||t.includes("task")?"ai-task":t.includes("memo")?"memo":"note"}function cg(e){const t=e.trim().toLowerCase();if(!t)return!1;if(["remote-control","remote.control","remotecontrol","remote-device","remote.device","remotedevice","remote-fleet-device","remotefleet.device"].includes(t))return!0;const o=t.replace(/[^a-z0-9]+/g,"");return o.includes("remotecontrol")||o.includes("remotedevice")||o.includes("remotefleetdevice")}function ug(e){const t=e.trim().toLowerCase();if(!t)return!1;if(["remote-monitor","remote.monitor","remotemonitor","remote-hub-monitor","remotehub.monitor","remotehub-monitor","multi-desktop-monitor","multidesktop.monitor","smartview.monitor"].includes(t))return!0;const o=t.replace(/[^a-z0-9]+/g,"");return o.includes("remotemonitor")||o.includes("remotehubmonitor")||o.includes("multidesktopmonitor")||o.includes("smartviewmonitor")}function mg(e,t){const o=e.Metadata||{},r=o.ThumbnailUrl,d=o.OriginalUrl,c=o.OriginalPath;return ci(q(r)||q(d)||q(c)||q(e.Response),t)}function pg(e,t,o){const r=e.ImageStack,d=Array.isArray(r==null?void 0:r.Variants)?r.Variants:[];if(d.length===0)return;const c=d.map((b,m)=>{const y=q(b.AssetId).trim(),k=ci(y,o)||t;return k?{variantId:q(b.VariantId)||`variant-${q(e.Id)||m}`,imageUrl:k,assetId:y||void 0,caption:q(b.Caption)||void 0,sourceNodeId:q(e.Id)||void 0,createdAtUtc:q(b.CreatedAtUtc)||void 0}:null}).filter(b=>!!b);if(c.length===0)return;const p=q(r==null?void 0:r.ActiveVariantId);return{activeVariantId:c.some(b=>b.variantId===p)?p:c[0].variantId,variants:c,kind:q(r==null?void 0:r.Kind)||"versions",title:q(r==null?void 0:r.Title)||void 0,updatedAtUtc:q(r==null?void 0:r.UpdatedAtUtc)||void 0}}function gg(e,t){return!e||e.variants.length===0?t:(e.variants.find(r=>r.variantId===e.activeVariantId)??e.variants[0]).imageUrl||t}function hg(e,t,o){var p,b,m,y,k,L;const r=(b=(p=e.imageStack)==null?void 0:p.variants)!=null&&b.length?e.imageStack.variants:e.imageUrl?[{variantId:`${e.id}:image`,imageUrl:e.imageUrl,assetId:jo(e.imageUrl,t)||e.imageUrl,title:e.title,sourceNodeId:e.id,createdAtUtc:o}]:[];if(r.length===0)return null;const d=r.map(v=>({VariantId:v.variantId||Es(),AssetId:v.assetId||jo(v.imageUrl,t)||v.imageUrl,CreatedAtUtc:v.createdAtUtc||o,Caption:v.caption||v.title||null}));return{ActiveVariantId:(m=e.imageStack)!=null&&m.activeVariantId&&d.some(v=>{var B;return v.VariantId===((B=e.imageStack)==null?void 0:B.activeVariantId)})?e.imageStack.activeVariantId:d[0].VariantId||"",Variants:d,Kind:((y=e.imageStack)==null?void 0:y.kind)||(d.length>1?"pile":"versions"),Title:((k=e.imageStack)==null?void 0:k.title)||e.title||null,UpdatedAtUtc:((L=e.imageStack)==null?void 0:L.updatedAtUtc)||o}}function fg(e,t){const o=e.Metadata||{};return ci(q(o.OriginalUrl)||q(o.OriginalPath)||q(o.SourceFilePath)||q(e.SourceFilePath)||q(e.Response),t)}function bg(e){const t={};for(const[o,r]of Object.entries(e??{}))typeof r=="string"?t[o]=r:r!=null&&(t[o]=String(r));return t}function yg(e){switch(e){case"remote-monitor":return"remote-monitor";case"remote-control":return"remote-control";case"template-launcher":return"templateLauncher";case"directory":return"directory";case"pdf":return"pdf";case"file":return"file";case"image":return"image";case"mask":return"mask";case"video":return"video";case"embed":return"embed";case"code":return"code";case"markdown":return"markdown";case"csv-table":return"csv-table";case"memo":return"memo";case"text":return"text";case"ai-task":return"note";default:return"note"}}function jo(e,t){const o=String(e||"").trim();if(!o)return"";const r=t.replace(/\/+$/,"");return o.startsWith(`${r}/`)?o.slice(r.length+1):o.replace(/^\/+/,"")}function xg(e,t){const o=new Map;for(const r of e){const d=t.get(r.from),c=t.get(r.to);!d||!c||o.has(c)||o.set(c,d)}return o}function Cg(e){const t=new Set;return e.map(o=>{var m,y;const r=((m=o.metadata)==null?void 0:m[Ya])||"",d=Ns(r)?r:Ns(o.id)?o.id:"",c=!!(d&&t.has(d)),p=d&&!c?d:Es(),b=((y=o.metadata)==null?void 0:y[Ya])!==p;return t.add(p),{node:b?{...o,metadata:{...o.metadata??{},[Ya]:p}}:o,originalId:p,assignedNodeId:!d||c,metadataStamped:b,duplicateOriginalId:c}})}function Sg(e,t,o,r,d){var y,k,L;const c=yg(e.kind),p=c==="image"||c==="mask"?jo(e.imageUrl,d):"",b=["video","pdf","file","directory","embed"].includes(c)?jo(e.assetUrl||e.sourceFilePath||e.body,d):"",m={...e.metadata??{},[Ya]:t,ReactNodeId:e.id,ReactKind:e.kind};if(e.kind==="remote-monitor"&&(m.RemoteHub??(m.RemoteHub="Gated"),m.RemoteRoute??(m.RemoteRoute="Gated"),m.RemoteConnected??(m.RemoteConnected="0"),m.RemoteTotal??(m.RemoteTotal="30"),m.RemotePage??(m.RemotePage="1/1"),m.AdapterState??(m.AdapterState="adapter-gated")),e.kind==="remote-control"&&(m.SemanticType??(m.SemanticType="RemoteFleetDevice"),m.RemoteFleetSchemaVersion??(m.RemoteFleetSchemaVersion="remote-fleet-device@1"),m.RemoteRoute??(m.RemoteRoute="Gated"),m.RemoteInput??(m.RemoteInput="Off"),m.AdapterState??(m.AdapterState="adapter-gated")),e.kind==="mask"&&(m.ImageRouterMask??(m.ImageRouterMask="true"),m.SemanticType??(m.SemanticType="ImageEditMask")),e.kind==="embed"){const v=e.assetUrl||e.body||e.sourceFilePath||"";m.source??(m.source="embed"),m.renderMode??(m.renderMode="card"),m.provider??(m.provider="web"),m.sourceUrl??(m.sourceUrl=v),m.url??(m.url=v),m.AdapterState??(m.AdapterState="local-reference")}return e.kind==="video"&&(m.assetKind??(m.assetKind="video"),m.videoMode??(m.videoMode=(y=e.assetUrl)!=null&&y.startsWith(d)?"local_bridge":"local_reference"),m.AdapterState??(m.AdapterState=((k=e.metadata)==null?void 0:k.PromptOnly)==="true"?"adapter-gated":"local-reference")),(L=e.tags)!=null&&L.length&&(m.ReactTags=JSON.stringify(e.tags)),p&&(m.OriginalUrl=p,m.ThumbnailUrl=p),b&&(m.OriginalPath=b,m.SourceFilePath=b),{Id:t,ContentType:c,Prompt:e.title||c,Response:c==="image"||c==="mask"?p||e.body||null:c==="remote-monitor"?e.body||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":c==="remote-control"?e.body||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":b||e.body||null,PositionX:e.x,PositionY:e.y,PositionZ:0,IsLoading:e.status==="running",Width:Math.round(e.width),Height:Math.round(e.height),Children:[],ParentId:o||null,IsExpanded:!!e.isExpanded,OriginalHeight:Math.round(e.originalHeight??0),IsAiEnabled:e.aiEnabled!==!1,IsChunkedText:!!e.isChunkedText,TotalLineCount:Math.round(e.totalLineCount??0),SourceFilePath:e.sourceFilePath||b||null,ScrollOffset:e.scrollOffset??0,MaxScroll:e.maxScroll??0,CreatedAt:r,UpdatedAt:r,IsWordWrap:e.wordWrap??e.kind!=="code",Metadata:m,ImageStack:c==="image"?hg(e,d,r):null}}function wg(e,t){return{NodeId:t,PositionX:e.x,PositionY:e.y,PositionZ:0,Width:Math.round(e.width),Height:Math.round(e.height),IsExpanded:!!e.isExpanded,OriginalHeight:Math.round(e.originalHeight??0)}}function kg(e,t,o){const r=q(e.ContentType)||"note",d=q(e.Prompt).trim(),c=q(e.Response).trim(),p=bg(e.Metadata),b=q(e.Id).trim();b&&(p[Ya]??(p[Ya]=b));const y=["true","1","yes"].includes(String(p.ImageRouterMask||p.IsMask||"").trim().toLowerCase())?"mask":dg(r),k=y==="memo"&&["mindcanvasagent","agentcommand"].includes(String(p.SemanticType||p.semanticType||"").trim().toLowerCase()),L=y==="memo"&&["codenote","code-note"].includes(String(p.SemanticType||p.semanticType||"").trim().toLowerCase()),v=q(e.SourceFilePath)||p.OriginalPath||p.SourceFilePath||"",B=y==="video"||y==="pdf"||y==="file"||y==="directory"||y==="embed"?fg(e,o):void 0,D=d||e.SourceFilePath||r||"LocalBridge node",$=y==="image"?c||d||"Image asset":y==="mask"?c||d||"Image mask asset":y==="remote-monitor"?c||d||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="remote-control"?c||d||v||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="pdf"||y==="file"||y==="directory"||y==="embed"?c||v||d||r:c||d||v||"",F=k?500:L?400:y==="remote-monitor"?860:y==="remote-control"||y==="template-launcher"?560:y==="csv-table"?720:y==="embed"?460:y==="video"?420:y==="markdown"?380:y==="text"||y==="image"||y==="mask"?360:320,H=k||L?300:y==="remote-monitor"?640:y==="remote-control"?390:y==="template-launcher"?620:y==="csv-table"?420:y==="embed"?260:y==="video"?236:y==="markdown"?240:y==="text"?210:y==="image"||y==="mask"?260:180,W=y==="image"||y==="mask"?mg(e,o):void 0,ie=y==="image"?pg(e,W,o):void 0,se=!!(e.IsChunkedText||p.IsChunkedText==="true"),Ne=ma(e.TotalLineCount??p.TotalLineCount,0),pe=ma(e.ScrollOffset,0),ze=ma(e.MaxScroll,0);return{id:String(e.Id||crypto.randomUUID()),kind:y,title:y==="remote-monitor"?d||"Multi Desktop Monitor":y==="remote-control"?d||p.RemoteFleetDeviceName||"Remote Device":y==="template-launcher"?d||"Template Launcher":D,body:$,x:ma((t==null?void 0:t.PositionX)??e.PositionX,0),y:ma((t==null?void 0:t.PositionY)??e.PositionY,0),width:Math.max(160,Math.min(900,ma((t==null?void 0:t.Width)??e.Width,F))),height:Math.max(120,Math.min(900,ma((t==null?void 0:t.Height)??e.Height,H))),status:e.IsLoading?"running":y==="ai-task"?"idle":void 0,imageUrl:gg(ie,W),imageStack:ie,assetUrl:B,sourceFilePath:v||void 0,isChunkedText:se||void 0,totalLineCount:se?Ne:void 0,scrollOffset:se?pe:void 0,maxScroll:se?ze:void 0,isExpanded:typeof e.IsExpanded=="boolean"?e.IsExpanded:void 0,originalHeight:ma(e.OriginalHeight,0)||void 0,tags:k?["Agent Command",p.AgentCommandRequestedRole||"Researcher",p.AgentCommandStatus||"Draft"]:L?["Code Note",p.CodeNoteStatus||"Draft",p.CodeNoteSyncState||"Unlinked"]:y==="remote-monitor"?["Remote","Monitor","LocalBridge"]:y==="remote-control"?["Remote","Control","LocalBridge"]:["LocalBridge",r],metadata:y==="remote-monitor"?vg(p):y==="remote-control"?jg(p):p,role:e.IsAiEnabled?"ai-enabled":void 0,aiEnabled:typeof e.IsAiEnabled=="boolean"?e.IsAiEnabled:void 0,wordWrap:typeof e.IsWordWrap=="boolean"?e.IsWordWrap:void 0}}function vg(e){return{RemoteHub:"Gated",RemoteRoute:"Gated",RemoteConnected:"0",RemoteTotal:"30",RemotePage:"1/1",AdapterState:"adapter-gated",...e}}function jg(e){return{SemanticType:"RemoteFleetDevice",RemoteFleetSchemaVersion:"remote-fleet-device@1",RemoteFleetDeviceId:"",RemoteFleetDeviceName:"Remote Device",RemoteFleetDevicePlatform:"unknown",RemoteFleetDeviceConnected:"false",RemoteInput:"Off",RemoteHub:"Gated",RemoteRoute:"Gated",RemoteBaseUrl:"http://127.0.0.1:5147",AdapterState:"adapter-gated",...e}}function Ig(e,t){const o=[];for(const r of e){const d=String(r.Id||""),c=String(r.ParentId||"");!d||!c||!t.has(d)||!t.has(c)||o.push({id:`edge-local-${c}-${d}`,from:c,to:d,kind:"context"})}return o}async function Ng(e=Ls()){const t=await di(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return(Array.isArray(o)?o.filter(Nt):[]).map(c=>Yr(c)).filter(c=>!!c).sort((c,p)=>String(p.UpdatedAt||"").localeCompare(String(c.UpdatedAt||"")))}async function Ag(e){try{const t=await di(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return Array.isArray(o)?o.filter(Nt):[]}catch{return[]}}async function Mg(e,t,o,r=Ls(),d=null){var He,Tt,ge,We,at,nt;if((He=e.source)!=null&&He.partialImport)throw new Error("This board was imported from a partial original payload. Export is blocked to avoid data loss.");if((Tt=e.source)!=null&&Tt.truncated)throw new Error("This board was truncated during import. Export is blocked to avoid data loss.");const c=(ge=e.source)!=null&&ge.exportedByReact?String(e.source.boardId||""):"",p=Ns(c),b=Ns(c)?c:Es(),m=new Date().toISOString(),y=Cg(e.nodes),k=y.map(z=>z.node),L=new Map(y.map(z=>[z.node.id,z.originalId])),v=xg(e.edges,L),B=y.map(({node:z,originalId:gt})=>Sg(z,gt,v.get(gt),m,r)),D=y.map(({node:z,originalId:gt})=>wg(z,gt)),$=t.scale>0?t.scale:1,F=(window.innerWidth/2-t.x)/$,H=(window.innerHeight/2-t.y)/$,W=1400/$,ie=Number((d==null?void 0:d.x)??((We=e.viewState)==null?void 0:We.cursorX)??0),se=Number((d==null?void 0:d.y)??((at=e.viewState)==null?void 0:at.cursorY)??0),Ne=(nt=e.nodes.find(z=>z.kind==="image"&&z.imageUrl))==null?void 0:nt.imageUrl,pe={Id:b,UserId:"00000000-0000-0000-0000-000000000000",Title:e.name||"Untitled Board",Description:"Exported from MindExec React",ThumbnailUrl:jo(Ne,r)||"",IsPublic:!1,CreatedAt:m,SyncedCloudBoardId:null,LastSyncedAt:null,LastCloudCopyStatus:null,UpdatedAt:m,LastCameraX:F,LastCameraY:H,LastCameraZ:W,LastCursorX:Number.isFinite(ie)?ie:0,LastCursorY:Number.isFinite(se)?se:0,CameraBookmarks:rg(e.settings.cameraBookmarks)},ze=`.mindexec/boards/${b}.msgpack`,At=`.mindexec/boards/${b}.json`,Ue=`.mindexec/boards/${b}.layout.json`,K=`.mindexec/boards/${b}.delta.json`,V=`boards/${b}.delta.json`,de=await Ag(r),te=[pe,...de.filter(z=>q(z.Id)!==b)],Mt=Cp(B);await Hm(ze,Mt,o,r),await ur(At,JSON.stringify(B,null,2),o,r),await ur(Ue,JSON.stringify(D,null,2),o,r),await ur(".mindexec/boards/_metadata.json",JSON.stringify(te,null,2),o,r);const U=await Promise.allSettled([Tl(K,o,r),Tl(V,o,r)]);return f.emit("localBridge.board.exported",{boardId:b,nodes:B.length,edges:e.edges.length,snapshotFormat:"msgpack",msgpackBytes:Mt.byteLength,jsonMirror:!0,deltaCleared:U.some(z=>z.status==="fulfilled"&&z.value.success),reusedBoardId:p,stableNodeIds:y.length,assignedNodeIds:y.filter(z=>z.assignedNodeId).length,metadataStampedNodeIds:y.filter(z=>z.metadataStamped).length,duplicateOriginalNodeIds:y.filter(z=>z.duplicateOriginalId).length}),{metadata:pe,source:{kind:"localBridge",boardId:b,loadedAt:m,originalNodeCount:B.length,renderedNodeCount:B.length,truncated:!1,exportedByReact:!0,snapshotFormat:"msgpack"},nodes:k,msgpackPath:ze,boardPath:At,layoutPath:Ue}}async function Tg(e,t,o=Ls()){const r=await lg(e.Id,o);let d=new Map;const c=await Vr([`.mindexec/boards/${e.Id}.layout.json`,`boards/${e.Id}.layout.json`],o);c&&(d=mc(c.payload));let p=null;const b=await Vr([`.mindexec/boards/${e.Id}.delta.json`,`boards/${e.Id}.delta.json`],o);b&&(p=b.payload);const m=p?hi(p)[0]:null,y=!!(p&&gi(p)),k=y?ig(r.payload,p):r.payload;return pc(k,t,{boardId:(m==null?void 0:m.Id)??e.Id,title:(m==null?void 0:m.Title)||e.Title||"LocalBridge Board",updatedAt:(m==null?void 0:m.UpdatedAt)??e.UpdatedAt,layoutPayload:Array.from(d.values()),baseUrl:o,cameraBookmarks:(m==null?void 0:m.CameraBookmarks)??e.CameraBookmarks,lastCursorX:(m==null?void 0:m.LastCursorX)??e.LastCursorX,lastCursorY:(m==null?void 0:m.LastCursorY)??e.LastCursorY,deltaApplied:y,deltaUpserts:p?uc(p):0,deltaDeletes:p?cc(p):0,snapshotFormat:r.format})}function pc(e,t,o={}){const r=As(e),d=gi(e),c=o.deltaUpserts??(d?r.length:0),p=o.deltaDeletes??(d?cc(e):0),b=o.layoutPayload?mc(o.layoutPayload):new Map,m=r.slice(0,ag),y=m.map(se=>kg(se,b.get(String(se.Id||"")),o.baseUrl??Ls())),k=new Set(y.map(se=>se.id)),L=Ig(m,k),v=r.length>y.length,B=d,D=o.deltaApplied===!0,$=o.boardId||Es(),F=o.updatedAt||new Date().toISOString(),H=Number(o.lastCursorX),W=Number(o.lastCursorY),ie=Number.isFinite(H)&&Number.isFinite(W);return f.emit("localBridge.board.loaded",{boardId:$,nodes:y.length,originalNodes:r.length,truncated:v,snapshotFormat:o.snapshotFormat,partialImport:B,deltaImport:d,deltaApplied:D,deltaUpserts:c,deltaDeletes:p}),{id:`localBridge:${$}`,name:o.title||"LocalBridge Board",nodes:y,edges:L,settings:{...t,cameraBookmarks:sg(o.cameraBookmarks)},viewState:ie?{cursorX:H,cursorY:W}:void 0,updatedAt:F,source:{kind:"localBridge",boardId:$,loadedAt:new Date().toISOString(),snapshotFormat:o.snapshotFormat,originalNodeCount:r.length,renderedNodeCount:y.length,truncated:v,partialImport:B,deltaImport:d,deltaApplied:D}}}const fi=["id","user_id","title","description","content_json","thumbnail_url","is_public","created_at","updated_at","last_camera_x","last_camera_y","last_camera_z","last_cursor_x","last_cursor_y","camera_bookmarks"].join(","),Rg=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Lg(e){if(Rg.test(e))return e;if(typeof crypto<"u"&&"randomUUID"in crypto)return crypto.randomUUID();throw new Error("A browser crypto.randomUUID implementation is required to create cloud boards.")}function gc(e){if(!e)return{};if(Array.isArray(e))return{nodes:e};if(typeof e=="object")return e;if(typeof e!="string"||!e.trim())return{};try{const t=JSON.parse(e);if(Array.isArray(t))return{nodes:t};if(t&&typeof t=="object")return t}catch{return{}}return{}}function Pg(e){return JSON.stringify({id:e.id,name:e.name,nodes:e.nodes,edges:e.edges,settings:e.settings,viewState:e.viewState,updatedAt:e.updatedAt})}function Gr(e,t=new Date().toISOString()){return e&&!Number.isNaN(Date.parse(e))?e:t}function bi(e){return(e==null?void 0:e.trim().slice(0,90))||"Untitled Board"}function hc(e){const t=gc(e.content_json),o=Gr(e.updated_at??t.updatedAt);return{id:e.id,name:bi(e.title??t.name),updatedAt:o,createdAt:Gr(e.created_at,o),nodeCount:Array.isArray(t.nodes)?t.nodes.length:0,edgeCount:Array.isArray(t.edges)?t.edges.length:0,sourceKind:"cloud"}}function Eg(e,t){var k,L;const o=gc(e.content_json),r=Gr(e.updated_at??o.updatedAt),d=Number((k=o.viewState)==null?void 0:k.cursorX),c=Number((L=o.viewState)==null?void 0:L.cursorY),p=Number(e.last_cursor_x),b=Number(e.last_cursor_y),m=Number.isFinite(d)&&Number.isFinite(c),y=Number.isFinite(p)&&Number.isFinite(b);return{id:e.id,name:bi(e.title??o.name),nodes:Array.isArray(o.nodes)?o.nodes:[],edges:Array.isArray(o.edges)?o.edges:[],settings:o.settings??t,viewState:m?{cursorX:d,cursorY:c}:y?{cursorX:p,cursorY:b}:void 0,updatedAt:r,source:{kind:"cloud",boardId:e.id,loadedAt:new Date().toISOString(),snapshotFormat:"supabase.boards.content_json",originalNodeCount:Array.isArray(o.nodes)?o.nodes.length:0,renderedNodeCount:Array.isArray(o.nodes)?o.nodes.length:0}}}async function yi(e){var m;const t=ac(e);if(!t.cloudBoards.canAttempt)return f.emit("projectStorage.cloud.provider.skipped",{mode:t.cloudBoards.mode}),{userId:null,config:t,reason:t.cloudBoards.mode};const o=Ps(e);if(!o)return f.emit("projectStorage.cloud.provider.skipped",{mode:"config-missing"}),{userId:null,config:t,reason:"missing-client"};const{data:r,error:d}=await o.auth.getSession();if(d||!r.session)return f.emit("projectStorage.cloud.provider.sessionMissing",{message:(d==null?void 0:d.message)??"missing-session"}),{userId:null,config:t,reason:"missing-session"};const{data:c,error:p}=await o.auth.getUser(),b=((m=c.user)==null?void 0:m.id)??null;return p||!b?(f.emit("projectStorage.cloud.provider.sessionMissing",{message:(p==null?void 0:p.message)??"missing-user"}),{userId:null,config:t,reason:"missing-user"}):{userId:b,config:t,reason:"provider-ready"}}async function _g(e){const t=await yi(e);if(!t.userId)return[];const o=Ps(e);if(!o)return[];f.emit("projectStorage.cloud.list.requested");const{data:r,error:d}=await o.from("boards").select(fi).eq("user_id",t.userId).order("updated_at",{ascending:!1}).limit(50);if(d)throw f.emit("projectStorage.cloud.provider.failed",{operation:"list",message:d.message}),d;const c=(r??[]).map(hc);return f.emit("projectStorage.cloud.list.loaded",{count:c.length}),c}async function Bg(e,t,o){const r=await yi(e);if(!r.userId)return null;const d=Ps(e);if(!d)return null;f.emit("projectStorage.cloud.load.requested",{boardId:t});const{data:c,error:p}=await d.from("boards").select(fi).eq("user_id",r.userId).eq("id",t).maybeSingle();if(p)throw f.emit("projectStorage.cloud.provider.failed",{operation:"load",boardId:t,message:p.message}),p;if(!c)return null;const b=Eg(c,o);return f.emit("projectStorage.cloud.load.loaded",{boardId:t,nodes:b.nodes.length,edges:b.edges.length}),b}async function Dg(e,t,o,r=null){var ie,se;const d=await yi(e);if(!d.userId)return null;const c=Ps(e);if(!c)return null;const p=Lg(t.id),b=new Date().toISOString(),m=bi(t.name),y=Number((r==null?void 0:r.x)??((ie=t.viewState)==null?void 0:ie.cursorX)??0),k=Number((r==null?void 0:r.y)??((se=t.viewState)==null?void 0:se.cursorY)??0),L={...t.viewState??{},cursorX:Number.isFinite(y)?y:0,cursorY:Number.isFinite(k)?k:0},v={...t,id:p,name:m,viewState:L,updatedAt:b},B={p_board_id:p,p_title:m,p_description:null,p_thumbnail_url:null,p_is_public:!1,p_created_at:null,p_updated_at:b,p_last_camera_x:o.x,p_last_camera_y:o.y,p_last_camera_z:o.scale,p_last_cursor_x:L.cursorX,p_last_cursor_y:L.cursorY,p_camera_bookmarks:JSON.stringify(t.settings.cameraBookmarks??{}),p_nodes:[],p_include_json_mirror:!0};f.emit("projectStorage.cloud.save.requested",{boardId:p,sourceBoardId:t.id,nodes:t.nodes.length,edges:t.edges.length});const{error:D}=await c.rpc("save_board_snapshot",B);if(D)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-rpc",boardId:p,message:D.message}),D;const $={content_json:Pg(v),updated_at:b},{data:F,error:H}=await c.from("boards").update($).eq("id",p).eq("user_id",d.userId).select(fi).maybeSingle();if(H)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-json-mirror",boardId:p,message:H.message}),H;const W=F?hc(F):{id:p,name:m,updatedAt:b,createdAt:b,nodeCount:t.nodes.length,edgeCount:t.edges.length,sourceKind:"cloud"};return f.emit("projectStorage.cloud.save.saved",{boardId:W.id,nodes:W.nodeCount,edges:W.edgeCount}),W}function Kr(e){return e.length===0?{minX:0,minY:0,maxX:0,maxY:0}:e.reduce((t,o)=>({minX:Math.min(t.minX,o.x),minY:Math.min(t.minY,o.y),maxX:Math.max(t.maxX,o.x+o.width),maxY:Math.max(t.maxY,o.y+o.height)}),{minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY})}function Og(e,t={},o=Kr(e),r){if(e.length===0)return{after:new Map,boundsAfter:o};const d=th(t.mode),c=ah(t.order),p=nh(t.anchor),b=oh(t.sizeMode),m=Math.max(0,t.gapX??24),y=Math.max(0,t.gapY??24),k=Math.max(1,t.maxColumns??12),L=Xr(t.quantile??.75,.05,.95),v=e.map(Fg),B=qg(v,c),D=B.map(pe=>pe.width),$=B.map(pe=>pe.height),F=Math.max(1,t.cellWidth??nd(D,L)),H=Math.max(1,t.cellHeight??nd($,L)),W=Math.max(1,t.targetWidth??F),ie=Math.max(1,t.targetHeight??H),se=Xg(p,o);if(d==="grid"){Vg(B,b,W,ie,F,H);const pe=ad(t.columns,k,o.maxX-o.minX,F,m);zg(B,se.x,se.y,pe,F,H,m,y)}else if(d==="masonry"){Yg(B,b==="preserve"?"uniformWidth":b,W);const ze=ad(t.columns,k,o.maxX-o.minX,W,m);Ug(B,se.x,se.y,ze,W,m,y)}else d==="stripHorizontal"?(Gg(B,b==="preserve"?"uniformHeight":b,ie),Hg(B,se.x,se.y,m,ie)):(Kg(B,b==="preserve"?"uniformWidth":b,W),Wg(B,se.x,se.y,y,W));let Ne=new Map(B.map(pe=>[pe.id,$g(pe)]));return p==="selectionBoundsCenter"&&(Ne=Zg(o,Ne)),t.snapToGrid&&(Ne=Qg(Ne,Math.max(1,t.gridSize??8))),{after:Ne,boundsAfter:Kr(Array.from(Ne.values()))}}function Fg(e){return{...e,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function $g(e){return{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function zg(e,t,o,r,d,c,p,b){e.forEach((m,y)=>{const k=Math.floor(y/r),L=y%r,v=t+L*(d+p),B=o+k*(c+b);m.x=v+(d-m.width)/2,m.y=B+(c-m.height)/2})}function Ug(e,t,o,r,d,c,p){const b=Array.from({length:r},()=>0);for(const m of e){const y=eh(b),k=t+y*(d+c);m.x=k+(d-m.width)/2,m.y=o+b[y],b[y]+=m.height+p}}function Hg(e,t,o,r,d){let c=t;for(const p of e)p.x=c,p.y=o+(d-p.height)/2,c+=p.width+r}function Wg(e,t,o,r,d){let c=o;for(const p of e)p.x=t+(d-p.width)/2,p.y=c,c+=p.height+r}function Vg(e,t,o,r,d,c){if(t==="fitCellDownOnly")for(const p of e){const b=Math.min(1,d/p.width,c/p.height);p.width*=b,p.height*=b}else t==="uniformWidth"?xi(e,o):t==="uniformHeight"&&fc(e,r)}function Yg(e,t,o){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,o/r.width);r.width*=d,r.height*=d}return}xi(e,o)}function Gg(e,t,o){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,o/r.height);r.width*=d,r.height*=d}return}fc(e,o)}function Kg(e,t,o){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,o/r.width);r.width*=d,r.height*=d}return}xi(e,o)}function xi(e,t){for(const o of e){if(o.width<=0)continue;const r=t/o.width;o.width=t,o.height=Math.max(1,o.height*r)}}function fc(e,t){for(const o of e){if(o.height<=0)continue;const r=t/o.height;o.height=t,o.width=Math.max(1,o.width*r)}}function ad(e,t,o,r,d){if(typeof e=="number"&&e>0)return Math.round(Xr(e,1,t));if(o<=1||r<=1)return 1;const c=Math.floor((o+d)/(r+d));return!Number.isFinite(c)||c<1?1:Math.round(Xr(c,1,t))}function Xg(e,t,o){return{x:t.minX,y:t.minY}}function qg(e,t){return t==="selectionOrder"?[...e].sort((o,r)=>o.selectionIndex-r.selectionIndex):Jg(e)}function Jg(e){const t=[...e].sort((m,y)=>m.y-y.y||m.x-y.x);if(t.length<=2)return t;const o=t.map(m=>m.height).sort((m,y)=>m-y),r=o[Math.floor(o.length/2)]??1,d=Math.max(16,r*.35),c=[];let p=[],b=Number.NaN;for(const m of t)p.length===0?(p=[m],b=m.y):Math.abs(m.y-b)<=d?(p.push(m),b=(b*(p.length-1)+m.y)/p.length):(c.push([...p].sort((y,k)=>y.x-k.x)),p=[m],b=m.y);return p.length>0&&c.push([...p].sort((m,y)=>m.x-y.x)),c.flat()}function Zg(e,t){if(t.size===0)return t;const o=Kr(Array.from(t.values())),r=e.minX+(e.maxX-e.minX)/2,d=e.minY+(e.maxY-e.minY)/2,c=o.minX+(o.maxX-o.minX)/2,p=o.minY+(o.maxY-o.minY)/2,b=r-c,m=d-p;return new Map(Array.from(t.entries()).map(([y,k])=>[y,{...k,x:k.x+b,y:k.y+m}]))}function Qg(e,t){return new Map(Array.from(e.entries()).map(([o,r])=>[o,{...r,x:od(r.x,t),y:od(r.y,t)}]))}function nd(e,t){if(e.length===0)return 1;const o=[...e].sort((b,m)=>b-m),r=(o.length-1)*t,d=Math.floor(r),c=Math.min(o.length-1,d+1),p=r-d;return o[d]*(1-p)+o[c]*p}function eh(e){let t=0;for(let o=1;o<e.length;o+=1)e[o]<e[t]&&(t=o);return t}function od(e,t){return Math.round(e/t)*t}function th(e){const t=_s(e);return t==="grid"?"grid":t==="striphorizontal"||t==="striph"?"stripHorizontal":t==="stripvertical"||t==="stripv"?"stripVertical":"masonry"}function ah(e){return _s(e)==="selectionorder"?"selectionOrder":"spatialReading"}function nh(e){const t=_s(e);return t==="selectionboundscenter"?"selectionBoundsCenter":t==="viewporttopleft"?"viewportTopLeft":"selectionBoundsTopLeft"}function oh(e){const t=_s(e);return t==="fitcelldownonly"?"fitCellDownOnly":t==="uniformwidth"?"uniformWidth":t==="uniformheight"?"uniformHeight":"preserve"}function _s(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")}function Xr(e,t,o){return Math.min(o,Math.max(t,e))}const bc=300,yc=50*1024*1024,sh=800;function we(e){return typeof e=="string"?e.length*2:0}function rh(e){let t=256;if(t+=we(e.id),t+=we(e.kind),t+=we(e.title),t+=we(e.body),t+=we(e.result),t+=we(e.imageUrl),t+=we(e.assetUrl),t+=we(e.sourceFilePath),t+=(e.tags??[]).reduce((o,r)=>o+we(r),0),e.metadata)for(const[o,r]of Object.entries(e.metadata))t+=we(o)+we(r);return e.imageStack&&(t+=128+we(e.imageStack.title),t+=e.imageStack.variants.reduce((o,r)=>o+96+we(r.variantId)+we(r.imageUrl)+we(r.assetId)+we(r.title)+we(r.caption),0)),t}function ih(e){let t=1024+we(e.id)+we(e.name)+we(e.updatedAt);return t+=e.nodes.reduce((o,r)=>o+rh(r),0),t+=e.edges.length*128,t+=Object.entries(e.settings).reduce((o,[r,d])=>o+we(r)+we(typeof d=="string"?d:JSON.stringify(d)),0),t}function xc(e,t={}){var o,r;return{board:e,description:((o=t.description)==null?void 0:o.trim())||"Board change",mergeKey:((r=t.mergeKey)==null?void 0:r.trim())||null,timestampMs:t.timestampMs??Date.now(),estimatedBytes:ih(e)}}function sd(e,t={}){const o=t.maxEntries??bc,r=t.maxBytes??yc;let d=e.slice(Math.max(0,e.length-o)),c=d.reduce((p,b)=>p+b.estimatedBytes,0);for(;d.length>1&&c>r;){const[p,...b]=d;c-=(p==null?void 0:p.estimatedBytes)??0,d=b}return d}function $a(e,t,o={}){const r=xc(t,o),d=o.mergeWindowMs??sh,c=e.slice(),p=c.at(-1);return p&&r.mergeKey&&p.mergeKey===r.mergeKey&&r.timestampMs-p.timestampMs<d?(c[c.length-1]={...p,description:r.description,timestampMs:r.timestampMs,estimatedBytes:Math.max(p.estimatedBytes,r.estimatedBytes)},sd(c,o)):(c.push(r),sd(c,o))}function lh(e,t,o={}){const r=xc(t,o),d=o.maxEntries??bc,c=o.maxBytes??yc;let p=[r,...e].slice(0,d),b=p.reduce((m,y)=>m+y.estimatedBytes,0);for(;p.length>1&&b>c;){const m=p.at(-1);b-=(m==null?void 0:m.estimatedBytes)??0,p=p.slice(0,-1)}return p}function Bs(e,...t){const o=e==null?void 0:e.metadata;if(!o)return"";for(const r of t){const d=o[r];if(typeof d=="string"&&d.trim())return d.trim()}return""}function po(e,t){return!!Bs(e,t)}function Cc(e){if(!e||!e.trim())return!1;const t=e.trim();return/^(https?:|blob:|data:|file:)/i.test(t)}function Sc(e){if(!e)return"";const t=Bs(e,"OriginalPath");if(t)return t;const o=String(e.body||"").trim();return Cc(o)?"":o}function wc(e){return e?Sc(e)||String(e.sourceFilePath||"").trim()||String(e.assetUrl||"").trim()||String(e.imageUrl||"").trim()||String(e.body||"").trim():""}function kc(e){return Bs(e,"ThumbnailUrl","thumbnailUrl")}function dh(e){if(!e||e.kind!=="image")return!1;if(po(e,"ImageGenerationProvider")||po(e,"GeneratedImageSourceWidth")||po(e,"GeneratedImageSourceHeight")||po(e,"CodexImageQuality")||po(e,"ImageRouterRevisedPrompt"))return!0;const t=Bs(e,"RequestedMediaOperation");return["text2image","image2image","inpaint"].includes(t.toLowerCase())}function Ci(e){if(!e)return"";if(e.kind==="image"||e.kind==="mask"){const t=dh(e)?Sc(e):"",o=kc(e),r=String(e.body||"").trim();return t||o||String(e.imageUrl||"").trim()||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()||(Cc(r)?r:"")}return wc(e)||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()}function vc(e){if(!e)return"";const t=wc(e)||e.title||e.kind;return String(t||"").replace(/\\/g,"/").replace(/\/+$/,"").split("/").filter(Boolean).pop()||e.title||e.kind}const ch=2048,uh=16e3,xr=1024,Cr=64,mh=2048,Sr=3,ph=16,gh=256,hh=new Set(["text","note","memo","markdown","code","directory"]),fh=/[\p{L}\p{M}\p{N}]{2,}/gu,rd=4,bh=8,id=1.35;function yh(e){return hh.has(String(e||"").trim().toLowerCase())}function xh(e){const t=e.map(Sh),o=new Map,r=new Map,d=new Map,c=new Map;for(const p of t){o.set(p.id,p);for(const b of p.tokens)wr(r,b,p.id);for(const b of p.prefixes)wr(d,b,p.id);for(const b of p.ngrams)wr(c,b,p.id)}return{documents:t,documentById:o,tokenIndex:r,prefixIndex:d,ngramIndex:c}}function Ch(e,t,o={}){const r=Math.max(1,Math.trunc(Number(o.limit||30))),d=kn(t),c=ld(e,0,0,o.viewport,0);if(!d)return{hits:[],profile:c};const p=Array.from(jc(d)),b=Array.from(Ic(p)),m=Ac(d),y=Array.from(Nc(m)),k=new Map;for(const $ of p)kr(e.tokenIndex,$,k,8);for(const $ of b)kr(e.prefixIndex,$,k,$.length<=3?4:2);for(const $ of y)kr(e.ngramIndex,$,k,1.15);const L=jh(e,k,r),v=Ih(o.allowedContentTypes),B=[];for(const $ of L){const F=e.documentById.get($);if(!F||v&&!v.has(F.contentType))continue;const H=kh(F,d,p,y);if(H<=0)continue;const W=vh(F,o.viewport??null);B.push({nodeId:F.id,score:H+W,textScore:H,viewportBoost:W})}B.sort(($,F)=>F.score-$.score||$.nodeId.localeCompare(F.nodeId));const D=B.slice(0,r);return{hits:D,profile:ld(e,L.length,D.length,o.viewport,D.filter($=>$.viewportBoost>0).length)}}function kn(e){const t=String(e??"");if(!t.trim())return"";let o=t;try{o=t.normalize("NFKC")}catch{o=t}o=o.toLowerCase();let r="",d=!1;for(const c of o){if(/\s/u.test(c)){d||(r+=" ",d=!0);continue}Nh(c)||(r+=c,d=!1)}return r.trim()}function jc(e){return new Set(e.match(fh)??[])}function Ic(e){const t=new Set;for(const o of e){if(!o.trim())continue;const r=Math.min(8,o.length);for(let d=2;d<=r;d+=1)t.add(o.slice(0,d))}return t}function Nc(e){const t=new Set;if(!e.trim())return t;if(e.length<=Sr)return t.add(e),t;for(let o=0;o<=e.length-Sr;o+=1)t.add(e.slice(o,o+Sr));return t}function Sh(e){const t=String(e.kind??"").trim().toLowerCase(),o=Wa(e.prompt??e.title,ch),r=yh(t)?Wa(e.response??e.body,uh):"",d=wh(e.metadata,e.tags,e.metadataText),c=Wa(e.sourceFilePath||e.assetUrl,mh),p=kn(o),b=kn(r),m=kn(d),y=kn(c),k=kn(t),L=[p,m,y,b,k].filter(Boolean).join(" "),v=jc(L);return{id:String(e.id),contentType:t,normalizedPrompt:p,normalizedResponse:b,normalizedMetadata:m,normalizedSourcePath:y,normalizedContentType:k,tokens:v,prefixes:Ic(v),ngrams:Nc(Ac(L)),x:Number.isFinite(e.x)?e.x:0,y:Number.isFinite(e.y)?e.y:0,width:Number.isFinite(e.width)?e.width:1,height:Number.isFinite(e.height)?e.height:1}}function wh(e,t,o){const r=[];let d=0;if(e)for(const[c,p]of Object.entries(e)){if(d>=Cr)break;!String(c??"").trim()&&!String(p??"").trim()||(r.push(Wa(c,128)),String(p??"").trim()&&r.push(Wa(p,xr)),d+=1)}return d<Cr&&(t!=null&&t.length)&&(r.push("tags",Wa(t.join(" "),xr)),d+=1),d<Cr&&(o!=null&&o.trim())&&r.push("metadata",Wa(o,xr)),r.join(" ")}function kh(e,t,o,r){let d=0;e.normalizedPrompt===t?d+=120:go(e.normalizedPrompt,t)&&(d+=54),go(e.normalizedMetadata,t)&&(d+=26),go(e.normalizedSourcePath,t)&&(d+=18),go(e.normalizedResponse,t)&&(d+=14),go(e.normalizedContentType,t)&&(d+=8);for(const c of o)e.tokens.has(c)&&(d+=7),e.normalizedPrompt.startsWith(c)&&(d+=10);for(const c of r)e.ngrams.has(c)&&(d+=.85);return d}function vh(e,t){if(!t)return 0;const o=e.x+Math.max(1,e.width)/2,r=e.y+Math.max(1,e.height)/2,d=Math.abs(o-t.centerX)/Math.max(1,t.halfWidth),c=Math.abs(r-t.centerY)/Math.max(1,t.halfHeight),p=Math.sqrt(d*d+c*c);if(p<=1)return rd+(1-p)*bh;if(p<=id){const b=1-(p-1)/Math.max(.001,id-1);return Math.max(0,b)*(rd*.75)}return 0}function jh(e,t,o){return t.size===0?e.documents.map(r=>r.id):Array.from(t.entries()).sort((r,d)=>d[1]-r[1]||r[0].localeCompare(d[0])).slice(0,Math.max(o*ph,gh)).map(([r])=>r)}function Ih(e){if(!e)return null;const t=new Set(Array.from(e,o=>String(o||"").trim().toLowerCase()).filter(Boolean));return t.size>0?t:null}function ld(e,t,o,r,d){return{documentCount:e.documents.length,candidateCount:t,rankedCount:o,viewportBoosted:!!r,boostedCount:d,indexedTokenCount:e.tokenIndex.size,indexedPrefixCount:e.prefixIndex.size,indexedNGramCount:e.ngramIndex.size}}function wr(e,t,o){const r=e.get(t);if(r){r.add(o);return}e.set(t,new Set([o]))}function kr(e,t,o,r){const d=e.get(t);if(d)for(const c of d)o.set(c,(o.get(c)??0)+r)}function Ac(e){let t="";for(const o of e)/\s/u.test(o)||(t+=o);return t}function Wa(e,t){const o=String(e??"");return o.length<=t?o:o.slice(0,t)}function go(e,t){return!!(e&&t&&e.includes(t))}function Nh(e){const t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}const Ah=2147483647,Mh="LocalBridge access is enabled, but the bridge is not reachable. Restart LocalBridge, allow Chrome local-network access, then reload MindCanvas.",Th="Local storage is unavailable in the hosted app until browser local storage or LocalBridge access is available.",Rh="Local storage is unavailable. Check the browser-local storage state or LocalBridge connection.",Lh="Cloud projects are unavailable until Supabase and Cloudflare R2 are configured.",Ph="Login is required before cloud projects can be used.",Eh="Cloud projects are unavailable.";function _h(e){return e.bridgeProviderConfigured||e.browserProviderConfigured||e.embeddedProviderConfigured}function qr(e,t=!0){const o={isAvailable:!1,bridgeReachable:!1,browserLocalAvailable:!1,embeddedLocalAvailable:!1,providerKind:"none",canBrowseWorkspace:!1};return e.bridgeProviderConfigured&&e.bridgeReachable?{...o,isAvailable:!0,bridgeReachable:!0,providerKind:"bridge",canBrowseWorkspace:!0}:e.hostedWebApp&&e.hostedLocalBridgeAccessEnabled&&e.bridgeProviderConfigured?{...o,providerKind:"bridge"}:e.browserProviderConfigured&&(e.browserLocalAvailable||t&&e.browserLocalAvailableWhenEmpty===!0)?{...o,isAvailable:!0,browserLocalAvailable:!0,providerKind:"browser"}:e.embeddedProviderConfigured&&e.supportsEmbeddedLocal?{...o,isAvailable:!0,embeddedLocalAvailable:!0,providerKind:"embedded"}:o}function Bh(e){return qr(e,!1).isAvailable?"local":Si(e)?"cloud":qr(e,!0).isAvailable?"local":e.cloudConfigured?"cloud":"local"}function Si(e){return e.cloudConfigured&&e.cloudSessionAvailable}function Dh(e,t){return t.providerKind==="bridge"&&!t.bridgeReachable?Mh:e.hostedWebApp?Th:Rh}function Oh(e){return e.cloudConfigured?Si(e)?Eh:Ph:Lh}function Fh(e){var k,L,v;const t=Si(e),o=qr(e,!0),r=_h(e),d=e.cloudConfigured,c=o.isAvailable,p=t;let b=e.storedMode??Bh(e);b==="cloud"&&(!d||!p&&c)?b=c?"local":"cloud":b==="local"&&(!r&&d||!c&&p)&&(b="cloud");const m=e.cloudAccess,y=((k=m==null?void 0:m.denialReason)==null?void 0:k.trim())||void 0;return{currentMode:b,showLocalTab:r,showCloudTab:d,isLocalAvailable:o.isAvailable,isCloudAvailable:t,requiresCloudSignIn:e.cloudConfigured&&!t,canUseLocalProjects:c,canBrowseLocalWorkspace:o.canBrowseWorkspace,localProviderKind:o.providerKind,canUseCloudProjects:p,canSyncLocalToCloud:c&&p,cloudPlanKey:((L=m==null?void 0:m.planKey)==null?void 0:L.trim())||"free",cloudEntitlementStatus:((v=m==null?void 0:m.entitlementStatus)==null?void 0:v.trim())||(m?"active":"inactive"),currentCloudBoardCount:(m==null?void 0:m.currentBoardCount)??0,cloudBoardLimit:(m==null?void 0:m.cloudBoardLimit)??Ah,lockedCloudBoardCount:(m==null?void 0:m.lockedBoardCount)??0,canCreateCloudBoards:(m==null?void 0:m.canCreateBoard)??p,canUseManagedAi:(m==null?void 0:m.canUseManagedAi)??!1,canGenerateImage:(m==null?void 0:m.canGenerateImage)??!1,canUseContextPack:(m==null?void 0:m.canUseContextPack)??!1,cloudLimitMessage:y,localStatusMessage:o.isAvailable?void 0:Dh(e,o),cloudStatusMessage:p?void 0:Oh(e)}}function $h(){const e=new Error("Queued operation was cancelled before it started.");return e.name="AbortError",e}class zh{constructor(){Al(this,"tails",new Map)}isBusy(t){return this.tails.has(t)}enqueue(t,o,r){if(typeof o!="function")throw new TypeError("KeyedAsyncQueue operation is required.");const d=this.tails.get(t)??Promise.resolve();let c;return c=(async()=>{try{try{await d}catch{}if(r!=null&&r.aborted)throw $h();return await o(r)}finally{this.tails.get(t)===c&&this.tails.delete(t)}})(),this.tails.set(t,c),c}clear(t){if(typeof t>"u"){this.tails.clear();return}this.tails.delete(t)}}const Jr="mindexec-local-mode-warning-dismissed-v1";function Uh(){try{return window.localStorage.getItem(Jr)==="true"}catch{return!1}}function Mc(e,t){var o,r;if(e==="checking")return"Checking bridge";if(e==="connected"){const d=(r=(o=t==null?void 0:t.exec)==null?void 0:o.model)==null?void 0:r.trim();return d?`Bridge / ${d}`:"Bridge connected"}return e==="blocked"?"Bridge gated":e==="unavailable"?"Bridge unavailable":"Bridge idle"}function Hh(e,t,o){var d,c,p,b,m;if(e!=="connected")return t||Mc(e,o);const r=[o!=null&&o.version?`version ${o.version}`:null,(d=o==null?void 0:o.exec)!=null&&d.model?`model ${o.exec.model}`:null,(c=o==null?void 0:o.exec)!=null&&c.reasoningEffort?`reasoning ${o.exec.reasoningEffort}`:null,(p=o==null?void 0:o.exec)!=null&&p.serviceTier?`tier ${o.exec.serviceTier}`:null,(b=o==null?void 0:o.exec)!=null&&b.preferredProviderKind?`codex ${o.exec.preferredProviderKind}`:null,(m=o==null?void 0:o.project)!=null&&m.isOpen?"project open":null].filter(Boolean);return r.length>0?`LocalBridge connected. ${r.join(" / ")}`:"LocalBridge connected."}function Wh({state:e,message:t,status:o,hostedBridgeAccessEnabled:r,onRefresh:d,onEnableHostedBridge:c}){const p=g.useMemo(()=>e==="checking"?n.jsx(Jt,{size:14,className:"spin-icon"}):e==="connected"?n.jsx(Ip,{size:14}):e==="blocked"?n.jsx(nc,{size:14}):e==="unavailable"?n.jsx(Np,{size:14}):n.jsx(ui,{size:14}),[e]);return n.jsxs("div",{className:`runtime-status-pill runtime-status-pill--${e}`,title:Hh(e,t,o),"data-testid":"bridge-status-pill","data-bridge-state":e,"data-bridge-access":r?"enabled":"gated",children:[n.jsx("span",{className:"runtime-status-pill__icon","aria-hidden":"true",children:p}),n.jsx("span",{children:Mc(e,o)}),e==="blocked"&&!r&&n.jsx("button",{type:"button",className:"runtime-status-pill__action",onClick:c,children:"Enable"}),n.jsx("button",{type:"button",className:"runtime-status-pill__button",title:"Refresh LocalBridge","data-testid":"bridge-status-refresh",onClick:()=>void d(),disabled:e==="checking",children:n.jsx(In,{size:13})})]})}function Vh({status:e,message:t}){const r={ready:{icon:n.jsx($r,{size:14}),label:"Saved locally",title:"Board state is saved in this browser."},syncing:{icon:n.jsx(Jt,{size:14,className:"spin-icon"}),label:"Saving",title:"Saving board state to this browser."},error:{icon:n.jsx(mi,{size:14}),label:"Save error",title:"Board state could not be saved locally."},offline:{icon:n.jsx(ui,{size:14}),label:"Offline",title:"No sync adapter is connected."}}[e];return n.jsxs("div",{className:`runtime-status-pill runtime-status-pill--sync-${e}`,title:t||r.title,"data-testid":"sync-status-indicator","data-sync-status":e,children:[n.jsx("span",{className:"runtime-status-pill__icon","aria-hidden":"true",children:r.icon}),n.jsx("span",{children:r.label})]})}function Yh({visible:e}){const[t,o]=g.useState(Uh);if(!e||t)return null;const r=()=>{o(!0);try{window.localStorage.setItem(Jr,"true")}catch{}f.emit("runtimeStatus.localMode.dismissed")};return n.jsxs("section",{className:"runtime-local-warning",role:"status","data-testid":"local-mode-warning","data-local-mode-dismissed-key":Jr,children:[n.jsx("div",{className:"runtime-local-warning__icon","aria-hidden":"true",children:n.jsx(mi,{size:16})}),n.jsxs("div",{className:"runtime-local-warning__copy",children:[n.jsx("strong",{children:"Local Mode"}),n.jsx("span",{children:"Boards are saved in this browser. LocalBridge export creates a file-backed copy."})]}),n.jsx("button",{type:"button",title:"Dismiss local mode warning","data-testid":"local-mode-dismiss",onClick:r,children:n.jsx(jt,{size:14})})]})}function Gh({bridgeState:e,bridgeMessage:t,bridgeStatus:o,syncStatus:r,syncMessage:d,hostedBridgeAccessEnabled:c,onRefreshBridge:p,onEnableHostedBridge:b,showLocalModeWarning:m=!0}){return n.jsxs("aside",{className:"runtime-status-cluster","aria-label":"Runtime status","data-testid":"runtime-status-cluster","data-local-mode-visible":m?"true":"false",children:[n.jsxs("div",{className:"runtime-status-row",children:[n.jsx(Wh,{state:e,message:t,status:o,hostedBridgeAccessEnabled:c,onRefresh:p,onEnableHostedBridge:b}),n.jsx(Vh,{status:r,message:d})]}),n.jsx(Yh,{visible:m})]})}const Kh=/^data:image\//i;function Xh(e){const t=String(e||"").trim();if(!t)return{src:null,reason:"empty",urlKind:"empty"};const o=t.toLowerCase();return Kh.test(t)?{src:t,reason:null,urlKind:"data"}:o.startsWith("blob:")?{src:t,reason:null,urlKind:"blob"}:o.startsWith("https://")?{src:t,reason:null,urlKind:"https"}:o.startsWith("http://")?{src:t,reason:null,urlKind:"http"}:t.startsWith("//")?{src:t,reason:null,urlKind:"protocol-relative"}:t.startsWith("/")||t.startsWith("./")||t.startsWith("../")?{src:t,reason:null,urlKind:"relative"}:/^[a-z][a-z0-9+.-]*:/i.test(t)?{src:null,reason:"unsupported-protocol",urlKind:t.split(":",1)[0].toLowerCase()}:{src:t,reason:null,urlKind:"relative"}}function vr({src:e,alt:t="",className:o="",testId:r="secure-image",traceId:d,kind:c="image",title:p}){const b=g.useMemo(()=>Xh(e),[e]),[m,y]=g.useState(b.src?"loading":"blocked");g.useEffect(()=>{const B=b.src?"loading":"blocked";y(B),b.src||f.emit("secureImage.blocked",{id:d,kind:c,reason:b.reason,urlKind:b.urlKind})},[c,b.reason,b.src,b.urlKind,d]);const k=()=>{y("loaded"),f.emit("secureImage.loaded",{id:d,kind:c,urlKind:b.urlKind})},L=()=>{y("error"),f.emit("secureImage.error",{id:d,kind:c,urlKind:b.urlKind})},v=m==="blocked"?`Image blocked: ${b.reason||"unsupported source"}`:"Image failed to load";return n.jsxs("div",{className:`secure-image secure-image--${m} ${o}`.trim(),"data-testid":r,"data-secure-image-state":m,"data-secure-image-kind":c,title:m==="loaded"?p:v,children:[b.src&&n.jsx("img",{src:b.src,alt:t,loading:"lazy",decoding:"async",draggable:!1,onLoad:k,onError:L}),m==="loading"&&n.jsx("span",{className:"secure-image__loading","aria-hidden":"true",children:n.jsx("span",{})}),(m==="blocked"||m==="error")&&n.jsx("span",{className:"secure-image__fallback",role:"img","aria-label":v,children:m==="blocked"?n.jsx(Ap,{size:18}):n.jsx(mi,{size:18})})]})}const qh={note:js,text:It,"ai-task":Nn,image:Mn,mask:Mn,video:Tn,embed:Rn,code:An,markdown:It,"csv-table":It,memo:js,pdf:It,file:zr,directory:Mp,"template-launcher":It,"remote-monitor":vs,"remote-control":vs},jr=[{key:"Auto",label:"Auto Detect",description:"Infer whether this note is growth, revenue, build, or research work."},{key:"GeneralCompany",label:"General AI Company",description:"Balanced planning, practical work, and artifact production."},{key:"GrowthValidation",label:"Growth Validation",description:"Marketing loops, signals, messaging, distribution, and experiments."},{key:"RevenueAffiliate",label:"Revenue / Affiliate",description:"Affiliate discovery, keywords, content assets, and revenue experiments."},{key:"ProductBuild",label:"Product Build",description:"Specs, implementation-oriented work, artifacts, and approval gates."},{key:"ResearchOnly",label:"Research Only",description:"Evidence gathering, risks, synthesis, and recommendations."}],dd=500,Jh=48,Zh=new Set(["mindcanvasagent","agentcommand"]),Qh=new Set(["codenote","code-note"]),ef=["multidesktopmonitor","remotehubmonitor","remotefleetmonitor","smartviewmonitor"],tf=["remotedevice","remotefleetdevice","remotecontrol"],af=["top","right","bottom","left"];function nf(e){const t=Ln(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=Ln(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=Ln(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-monitor"||t==="remotefleetmonitor"||o==="fleet-monitor"||r==="remote-fleet@1"||Rc(e,["RemoteFleetViewMode","RemoteFleetHubStatus","RemoteFleetDevicesJson","RemoteFleetDeviceCount","RemoteFleetConnectedDeviceCount","RemoteFleetProjectionMode","RemoteFleetCanvasPagination","RemoteHub","RemoteRoute","RemotePage","RemoteVisibleBudget"])||Tc(e,ef,["remote","monitor"])}function of(e){const t=Ln(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=Ln(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=Ln(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-control"||t==="remotefleetdevice"||o==="fleet-device"||r==="remote-fleet-device@1"||Rc(e,["RemoteFleetDeviceId","RemoteFleetDeviceName","RemoteFleetDevicePlatform","RemoteFleetDeviceConnected","RemoteFleetDeviceCanControl","RemoteFleetSourceMonitorNodeId"])||Tc(e,tf,["remote","control"])}function Tc(e,t,o){const r=(e.tags??[]).map(b=>b.trim().toLowerCase()).filter(Boolean),d=o.every(b=>r.includes(b)),p=[e.title,e.body,e.sourceFilePath,e.assetUrl,...r].join(" ").toLowerCase().replace(/[^a-z0-9]+/g,"");return d||t.some(b=>p.includes(b))}function Ln(e,...t){const o=e.metadata??{};for(const d of t){const c=o[d];if(c!=null)return String(c)}const r=new Set(t.map(d=>d.toLowerCase()));for(const[d,c]of Object.entries(o))if(r.has(d.toLowerCase())&&c!==void 0&&c!==null)return String(c);return""}function Rc(e,t){const o=e.metadata??{},r=new Set(t.map(d=>d.toLowerCase()));return Object.entries(o).some(([d,c])=>r.has(d.toLowerCase())&&c!==void 0&&c!==null&&String(c).trim()!=="")}const Zr=[{key:"coral",label:"Coral",swatch:"#ff8052",ring:"rgba(255, 128, 82, 0.22)",surface:"#fff2eb",border:"rgba(255, 128, 82, 0.42)",ink:"#7c2d12"},{key:"amber",label:"Amber",swatch:"#f59e0b",ring:"rgba(245, 158, 11, 0.22)",surface:"#fffbeb",border:"rgba(245, 158, 11, 0.42)",ink:"#78350f"},{key:"sun",label:"Sun",swatch:"#ca8a04",ring:"rgba(202, 138, 4, 0.22)",surface:"#fef9c3",border:"rgba(202, 138, 4, 0.38)",ink:"#713f12"},{key:"sage",label:"Sage",swatch:"#65a30d",ring:"rgba(101, 163, 13, 0.22)",surface:"#f7fee7",border:"rgba(101, 163, 13, 0.38)",ink:"#365314"},{key:"mint",label:"Mint",swatch:"#10b981",ring:"rgba(16, 185, 129, 0.22)",surface:"#ecfdf5",border:"rgba(16, 185, 129, 0.36)",ink:"#064e3b"},{key:"sky",label:"Sky",swatch:"#3b82f6",ring:"rgba(59, 130, 246, 0.22)",surface:"#eff6ff",border:"rgba(59, 130, 246, 0.36)",ink:"#1e3a8a"},{key:"indigo",label:"Indigo",swatch:"#6366f1",ring:"rgba(99, 102, 241, 0.22)",surface:"#eef2ff",border:"rgba(99, 102, 241, 0.36)",ink:"#312e81"},{key:"violet",label:"Violet",swatch:"#8b5cf6",ring:"rgba(139, 92, 246, 0.22)",surface:"#f5f3ff",border:"rgba(139, 92, 246, 0.36)",ink:"#4c1d95"},{key:"rose",label:"Rose",swatch:"#f43f5e",ring:"rgba(244, 63, 94, 0.22)",surface:"#fff1f2",border:"rgba(244, 63, 94, 0.36)",ink:"#881337"},{key:"gray",label:"Gray",swatch:"#6b7280",ring:"rgba(107, 114, 128, 0.22)",surface:"#f9fafb",border:"rgba(107, 114, 128, 0.32)",ink:"#374151"},{key:"slate",label:"Slate",swatch:"#64748b",ring:"rgba(100, 116, 139, 0.22)",surface:"#f8fafc",border:"rgba(100, 116, 139, 0.32)",ink:"#334155"}],sf=g.memo(function({node:t,selected:o,pulsing:r,connectionDraft:d,onSelect:c,onDragStart:p,onResizeStart:b,onPatch:m,onDelete:y,onDuplicate:k,onRun:L,onPin:v,onConnectorDragStart:B,onOpenResult:D,onToggleAiReference:$,onCopyNode:F,onCopyEmbedReference:H,onFitNodeHeight:W,onToggleNodeExpanded:ie,onToggleWordWrap:se,onStageCompany:Ne,onOpenCompanyGraph:pe,onSyncCompanyGoal:ze,onRefreshCompany:At,onSetCompanyStatus:Ue,onRemoveCompany:K,onOpenAsset:V,onOpenDirectorySettings:de,onScanDirectory:te,onCreateRemoteControl:Mt,onGenerateTemplateCard:U}){var Po,lt,Yt,Ta,sn,ra,rn,ne,Ke,ln,Yn,j,X,oe,Eo,Fe,Gt,Kt,dn,cn,Gn,Kn,un,Xn,Ra,qn,mn,La,ia,_e,Pe,Pa,Jn,Ea,pn,gn;const He=String(((Po=t.metadata)==null?void 0:Po.AutomationNodeKind)||((lt=t.metadata)==null?void 0:lt.AutomationTemplateKey)||((Yt=t.metadata)==null?void 0:Yt.AutomationInferredKind)||"").trim().toLowerCase(),Tt=String(((Ta=t.metadata)==null?void 0:Ta.SemanticType)||((sn=t.metadata)==null?void 0:sn.semanticType)||"").trim().toLowerCase(),ge=t.kind==="memo"&&Zh.has(Tt),We=t.kind==="memo"&&Qh.has(Tt),at=String(((ra=t.metadata)==null?void 0:ra.AgentCommandStatus)||"Draft"),nt=String(((rn=t.metadata)==null?void 0:rn.AgentCommandMode)||"Task"),z=String(((ne=t.metadata)==null?void 0:ne.AgentCommandRequestedRole)||"Researcher"),gt=String(((Ke=t.metadata)==null?void 0:Ke.CodeNoteStatus)||"Draft"),ba=String(((ln=t.metadata)==null?void 0:ln.CodeNoteSyncState)||"Unlinked"),Ga=String(((Yn=t.metadata)==null?void 0:Yn.CodeNoteKind)||"Feature"),ya=ge?Nn:We?An:He==="image-generate"?Mn:He==="video-generate"?Tn:qh[t.kind],Bn=d&&d.from!==t.id,xa=t.kind==="ai-task",Ka=t.kind==="pdf"||t.kind==="file"||t.kind==="directory",Me=nf(t),Xa=of(t),Ve=Me||Xa,Ca=Me?"monitor":Xa?"control":"",ve=xa?"result":"context",fe=((j=d==null?void 0:d.target)==null?void 0:j.id)===t.id?d.target.side:null,Ds=(d==null?void 0:d.from)===t.id,Ae=t.kind==="template-launcher"||String(((X=t.metadata)==null?void 0:X.semanticType)||((oe=t.metadata)==null?void 0:oe.SemanticType)||"").toLowerCase()==="templatelauncher",Be=t.kind==="video",Te=t.kind==="embed",Rt=t.kind==="mask",be=t.kind==="memo",ot=t.kind==="markdown",st=t.kind==="csv-table",De=be?hf(t):null,me=g.useRef(null),Dn=Be?Lc(t):"",Ze=Be?bf(t):"",Oe=Te?yf(t):"",Lt=Te?xf(t):"",Io=Te?Cf(t,Oe):"",Ee=Te?Sf(t):"",Re=(((Eo=t.imageStack)==null?void 0:Eo.variants)??[]).filter(x=>!!x.imageUrl),ht=Re.find(x=>{var _;return x.variantId===((_=t.imageStack)==null?void 0:_.activeVariantId)})??Re[0]??null,$t=t.kind==="image"||Rt?(ht==null?void 0:ht.imageUrl)||Ci(t):"",Sa=ht?Re.findIndex(x=>x.variantId===ht.variantId):-1,qa=!$t&&!Ka&&!Ve&&!Ae&&!Be&&!Te,No=qa&&!be,Qt=t.isExpanded===!1&&Number(t.originalHeight??0)>t.height+1,On=!Ve&&!["image","mask","video","embed","pdf","file","directory","template-launcher","remote-monitor","remote-control"].includes(t.kind),rt=t.aiEnabled!==!1,Ye=ff(t),Qe=!!(t.isChunkedText||((Fe=t.metadata)==null?void 0:Fe.IsChunkedText)==="true"),wa=Number(t.totalLineCount??((Gt=t.metadata)==null?void 0:Gt.TotalLineCount)??0),Ao=t.sourceFilePath||((Kt=t.metadata)==null?void 0:Kt.FileName)||t.title,ye=Qe?n.jsxs("div",{className:"node-chunked-text-state","data-testid":"node-chunked-text-state",title:Ao,children:[n.jsx(It,{size:12}),n.jsx("strong",{children:"Chunked text"}),Number.isFinite(wa)&&wa>0&&n.jsxs("span",{children:[wa.toLocaleString()," lines"]})]}):null,ea=t.kind==="directory"?(dn=t.metadata)==null?void 0:dn.Include:null,Ja=t.kind==="directory"?(cn=t.metadata)==null?void 0:cn.Exclude:null,Fn=t.kind==="directory"?(Gn=t.metadata)==null?void 0:Gn.DirectoryFileCount:null,Le=t.kind==="directory"?(Kn=t.metadata)==null?void 0:Kn.DirectoryDirCount:null,Pt=t.kind==="directory"?(un=t.metadata)==null?void 0:un.DirectoryLastScanUtc:null,[Za,Qa]=g.useState(!1),[en,Ge]=g.useState(null),[Os,$n]=g.useState(((Xn=t.metadata)==null?void 0:Xn.CompanyExecutionMode)||"Auto"),[ka,tn]=g.useState(((Ra=t.metadata)==null?void 0:Ra.CompanySubAgents)!=="false"),[ta,va]=g.useState(!1),[Et,an]=g.useState(null),ja=g.useMemo(()=>st?cf(t.body,Et):null,[Et,st,t.body]),le=g.useMemo(()=>Ae?Jd(t.body):null,[Ae,t.body]),ft=(le==null?void 0:le.options.find(x=>x.id===le.selectedOptionId))??(le==null?void 0:le.options[0])??null,aa=Vm(le),zt=jr.find(x=>x.key===Os)||jr[0],Ut=String(((qn=t.metadata)==null?void 0:qn.CompanyStatus)||(t.companyMode?"Staged":"")).trim(),Ht=Ut.toLowerCase(),na=Ht==="paused",bt=Ht==="archived",Fs=x=>{x.stopPropagation();const _=x.currentTarget.getBoundingClientRect();Ge(lf(_)),Qa(re=>!re)},$s=x=>{x.stopPropagation(),Ne(t.id,{executionMode:zt.key,enableSubAgents:ka}),Qa(!1)},Mo=x=>{x.stopPropagation(),pe(t.id)},Ia=(x,_)=>{_.stopPropagation();const re=Re.find(xt=>xt.variantId===x);!re||!t.imageStack||re.variantId===t.imageStack.activeVariantId||(f.emit("node.imageStack.variant",{nodeId:t.id,variantId:re.variantId,variantCount:Re.length}),m(t.id,{imageUrl:re.imageUrl,imageStack:{...t.imageStack,activeVariantId:re.variantId,variants:Re,updatedAtUtc:new Date().toISOString()},metadata:{...t.metadata??{},ImageStackActiveVariantId:re.variantId}}))},zs=(x,_)=>{if(_.stopPropagation(),!!be){if((De==null?void 0:De.key)===x){va(!1);return}f.emit("node.memoColor.changed",{id:t.id,colorKey:x}),m(t.id,{metadata:{...t.metadata??{},memoColor:x,memoColorIsCustom:"true"}}),va(!1)}},zn=x=>{var Xe,St;if(x.stopPropagation(),!ge)return;const _=(t.body||t.title||"Agent command objective").trim(),re=["Clarify the objective and constraints.","Collect linked canvas context or code notes.","Draft an execution plan before external adapter use."],xt=["canvas-context","agent-command-planning","adapter-gated-execution"],dt=["Canvas.ListAgentCommands","Canvas.UpdateAgentCommand","Canvas.PlanAgentCommand","Canvas.SetAgentCommandState"],Ct=["MindCanvasAgent",nt,z],$e=["Local React plan staged for this Agent Command.",`Role: ${z}`,`Mode: ${nt}`,`Objective: ${_.slice(0,220)}`,"External execution remains adapter-gated until LocalBridge/agent runtime is available."].join(`
1
+ var Em=Object.defineProperty;var _m=(e,t,o)=>t in e?Em(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var Al=(e,t,o)=>_m(e,typeof t!="symbol"?t+"":t,o);import{j as n,r as g,a as Bm}from"./vendor-react-BXzpOyCS.js";import{l as Dm,a as vt,s as qt,b as Om,d as Fm,r as $m,c as zm,e as Um,i as Ml}from"./storage-BPqBi6qs.js";import{r as di,g as Ls,w as Hm,a as ur,d as Tl,b as Wm,t as ci,p as Jd,v as Vm,R as Ym,c as Gm,u as Km,e as Xm,f as Rl,s as pt,i as yn,l as mr,h as io,j as es,k as lo,m as co,n as ts,o as ua,q as Ll,x as xn,y as qm,z as Pl,A as Jm,B as Zm,C as Qm,D as ep,E as tp,F as Zd,G as ap,H as np,I as ga,J as Qd,T as op,K as sp,L as El,M as uo,N as ec,O as Or,P as Fr,Q as tc,S as as,U as gs,V as bo,W as _l,X as Y,Y as pr,Z as yo,_ as rp,$ as ip,a0 as lp,a1 as Bl,a2 as gr,a3 as dp,a4 as cp,a5 as up,a6 as mp,a7 as pp,a8 as gp,a9 as hp,aa as Dl,ab as fp,ac as bp,ad as yp,ae as xp}from"./canvas-runtime-CddXXjp9.js";import{e as Cp,d as Sp}from"./vendor-msgpack-BE8aAsr3.js";import{R as f}from"./app-runtime-xD2Z3NdN.js";import{g as hr,A as Ol,a as hs}from"./index-XYfODJ6k.js";import{r as ac}from"./productionAdapterConfig-C5jfk6oG.js";import{getSupabaseBrowserClient as Ps}from"./supabaseAuthAdapter-bSjZe3In.js";import{c as wp,a as kp,r as Fl}from"./toolHandoff-D5e5f7t5.js";import{a as $l,s as vp}from"./executionModeSettings-NJqurj-o.js";import{a as zl,p as jp}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";import{A as Jt,W as Ip,c as nc,D as Np,E as ui,R as In,J as mi,X as jt,N as $r,O as Ap,Q as Nn,w as An,I as Mn,V as Tn,l as vs,F as It,Y as Mp,Z as zr,_ as js,$ as Rn,a0 as oc,a1 as Tp,a2 as sc,a3 as Rp,i as So,a4 as rc,a5 as Lp,a6 as Ul,a7 as Pp,a8 as ha,a9 as Hl,T as Is,aa as Wl,ab as vo,ac as Ep,ad as fs,ae as ic,af as Ur,o as lc,ag as _p,ah as Bp,f as Dp,ai as Op,h as xo,x as Fp,aj as $p,ak as zp,al as Vl,am as Yl,an as Gl,g as Kl,ao as ns,H as mo,ap as os,s as fr,aq as Xl,ar as Up,as as br,at as ql,au as ss,av as yr,aw as Jl,ax as Zl,ay as Ql,az as Hp,aA as Wp,aB as Vp,aC as Yp,n as Gp,aD as Kp,aE as Xp,aF as qp,aG as Jp,aH as Zp,aI as Qp,aJ as eg,aK as tg}from"./vendor-icons-678PAT8P.js";const ag=1200,Ya="LocalBridgeOriginalNodeId";function Nt(e){return typeof e=="object"&&e!==null}function ma(e,t){const o=Number(e);return Number.isFinite(o)?o:t}function q(e){return typeof e=="string"?e:""}function dc(){return typeof window<"u"?{width:window.innerWidth||1280,height:window.innerHeight||720}:{width:1280,height:720}}function Hr(e,t,o){const r=Number(e),d=Number(t),c=Number(o);if(!Number.isFinite(r)||!Number.isFinite(d)||!Number.isFinite(c)||c<=0)return null;const p=1400/c,b=dc();return{x:b.width/2-r*p,y:b.height/2-d*p,scale:p}}function ng(e){return Nt(e)?Hr(e.x??e.X,e.y??e.Y,e.z??e.Z):null}function og(e){if(!Nt(e))return null;const t=Number(e.x),o=Number(e.y),r=Number(e.scale);if(!Number.isFinite(t)||!Number.isFinite(o)||!Number.isFinite(r)||r<=0)return null;const d=dc();return{x:(d.width/2-t)/r,y:(d.height/2-o)/r,z:1400/r}}function sg(e){const t=String(e||"").trim();if(t)try{const o=JSON.parse(t);if(!Nt(o))return;const r={};for(const[d,c]of Object.entries(o)){const p=ng(c);p&&(r[d]=p)}return Object.keys(r).length>0?r:void 0}catch{return}}function rg(e){if(!e||Object.keys(e).length===0)return null;const t={};for(const[o,r]of Object.entries(e)){const d=og(r);d&&(t[o]=d)}return Object.keys(t).length>0?JSON.stringify(t):null}function Ns(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e)}function Es(){return crypto.randomUUID()}function pi(e){return Nt(e)?"ContentType"in e||"Prompt"in e||"Response"in e||"PositionX"in e||"PositionY"in e||"SourceFilePath"in e||"ImageStack"in e:!1}function ed(e){const t=q(e).trim();if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Wr(e){if(Array.isArray(e))return e;if(!Nt(e))return[];for(const t of["Nodes","nodes","Items","items","Content","content","Upserts","upserts"])if(t in e){const o=e[t];if(Array.isArray(o))return o;const r=ed(o);if(r)return Wr(r)}for(const t of["ContentJson","contentJson","content_json"])if(t in e){const o=ed(e[t]);if(o)return Wr(o)}return pi(e)?[e]:[]}function gi(e){return Nt(e)?"BoardId"in e&&("Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e):!1}function cc(e){if(!Nt(e))return 0;for(const t of["Deletes","deletes"]){const o=e[t];if(Array.isArray(o))return o.length}return 0}function As(e){return Wr(e).filter(pi)}function uc(e){return As(e).length}function ig(e,t){var c;const o=[...As(e)];if(!gi(t))return o;const r=new Set;for(const p of["Deletes","deletes"]){const b=t[p];if(Array.isArray(b))for(const m of b){const y=q(m).trim();y&&r.add(y)}}if(r.size>0)for(let p=o.length-1;p>=0;p-=1){const b=q((c=o[p])==null?void 0:c.Id).trim();b&&r.has(b)&&o.splice(p,1)}const d=new Map;o.forEach((p,b)=>{const m=q(p.Id).trim();m&&d.set(m,b)});for(const p of As(t)){const b=q(p.Id).trim(),m=b?d.get(b):void 0;if(m!==void 0){o[m]=p;continue}b&&d.set(b,o.length),o.push(p)}return o}function mc(e){const t=Array.isArray(e)?e.filter(Nt):[];return new Map(t.filter(o=>o.NodeId).map(o=>[String(o.NodeId),o]))}async function Vr(e,t){for(const o of e)try{const r=await di(o,t);return{payload:JSON.parse(r.content),path:o}}catch{}return null}async function lg(e,t){const o=`.mindexec/boards/${e}.msgpack`,r=`boards/${e}.msgpack`;for(const b of[o,r])try{const m=await Wm(b,t);return{payload:Sp(m),format:b===o?"msgpack":"legacy-msgpack",path:b}}catch{}const d=`.mindexec/boards/${e}.json`,c=`boards/${e}.json`,p=await Vr([d,c],t);if(p)return{payload:p.payload,format:p.path===d?"json":"legacy-json",path:p.path};throw new Error(`LocalBridge board file not found: ${o}, ${r}, ${d}, ${c}`)}function Yr(e){const t=q(e.Id).trim()||q(e.BoardId).trim();return t?{Id:t,Title:q(e.Title)||null,Description:q(e.Description)||null,ThumbnailUrl:q(e.ThumbnailUrl)||null,CreatedAt:q(e.CreatedAt)||null,UpdatedAt:q(e.UpdatedAt)||null,LastCameraX:Number.isFinite(Number(e.LastCameraX))?Number(e.LastCameraX):null,LastCameraY:Number.isFinite(Number(e.LastCameraY))?Number(e.LastCameraY):null,LastCameraZ:Number.isFinite(Number(e.LastCameraZ))?Number(e.LastCameraZ):null,LastCursorX:Number.isFinite(Number(e.LastCursorX))?Number(e.LastCursorX):null,LastCursorY:Number.isFinite(Number(e.LastCursorY))?Number(e.LastCursorY):null,CameraBookmarks:q(e.CameraBookmarks)||null}:null}function td(e){return!Nt(e)||pi(e)?!1:"Title"in e||"Description"in e||"ThumbnailUrl"in e||"IsPublic"in e||"LastCameraX"in e||"LastCameraY"in e||"LastCameraZ"in e||"CameraBookmarks"in e||"BoardId"in e||"Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e||"ContentJson"in e||"content_json"in e}function hi(e){if(Array.isArray(e))return e.filter(td).map(t=>Yr(t)).filter(t=>!!t);if(td(e)){const t=Yr(e);return t?[t]:[]}return[]}function dg(e){const t=e.toLowerCase();return cg(t)?"remote-control":ug(t)?"remote-monitor":t==="templatelauncher"||t==="template-launcher"||t.includes("template launcher")?"template-launcher":t.includes("directory")?"directory":t.includes("pdf")?"pdf":t.includes("file")?"file":t.includes("mask")?"mask":t.includes("image")?"image":t.includes("video")?"video":t.includes("embed")?"embed":t==="csv-table"||t.includes("csv-table")||t.includes("csv table")?"csv-table":t.includes("markdown")?"markdown":t.includes("code")?"code":t==="text"||t==="text/plain"||t.includes("plain-text")||t.includes("plain text")?"text":t.includes("ai")||t.includes("task")?"ai-task":t.includes("memo")?"memo":"note"}function cg(e){const t=e.trim().toLowerCase();if(!t)return!1;if(["remote-control","remote.control","remotecontrol","remote-device","remote.device","remotedevice","remote-fleet-device","remotefleet.device"].includes(t))return!0;const o=t.replace(/[^a-z0-9]+/g,"");return o.includes("remotecontrol")||o.includes("remotedevice")||o.includes("remotefleetdevice")}function ug(e){const t=e.trim().toLowerCase();if(!t)return!1;if(["remote-monitor","remote.monitor","remotemonitor","remote-hub-monitor","remotehub.monitor","remotehub-monitor","multi-desktop-monitor","multidesktop.monitor","smartview.monitor"].includes(t))return!0;const o=t.replace(/[^a-z0-9]+/g,"");return o.includes("remotemonitor")||o.includes("remotehubmonitor")||o.includes("multidesktopmonitor")||o.includes("smartviewmonitor")}function mg(e,t){const o=e.Metadata||{},r=o.ThumbnailUrl,d=o.OriginalUrl,c=o.OriginalPath;return ci(q(r)||q(d)||q(c)||q(e.Response),t)}function pg(e,t,o){const r=e.ImageStack,d=Array.isArray(r==null?void 0:r.Variants)?r.Variants:[];if(d.length===0)return;const c=d.map((b,m)=>{const y=q(b.AssetId).trim(),k=ci(y,o)||t;return k?{variantId:q(b.VariantId)||`variant-${q(e.Id)||m}`,imageUrl:k,assetId:y||void 0,caption:q(b.Caption)||void 0,sourceNodeId:q(e.Id)||void 0,createdAtUtc:q(b.CreatedAtUtc)||void 0}:null}).filter(b=>!!b);if(c.length===0)return;const p=q(r==null?void 0:r.ActiveVariantId);return{activeVariantId:c.some(b=>b.variantId===p)?p:c[0].variantId,variants:c,kind:q(r==null?void 0:r.Kind)||"versions",title:q(r==null?void 0:r.Title)||void 0,updatedAtUtc:q(r==null?void 0:r.UpdatedAtUtc)||void 0}}function gg(e,t){return!e||e.variants.length===0?t:(e.variants.find(r=>r.variantId===e.activeVariantId)??e.variants[0]).imageUrl||t}function hg(e,t,o){var p,b,m,y,k,L;const r=(b=(p=e.imageStack)==null?void 0:p.variants)!=null&&b.length?e.imageStack.variants:e.imageUrl?[{variantId:`${e.id}:image`,imageUrl:e.imageUrl,assetId:jo(e.imageUrl,t)||e.imageUrl,title:e.title,sourceNodeId:e.id,createdAtUtc:o}]:[];if(r.length===0)return null;const d=r.map(v=>({VariantId:v.variantId||Es(),AssetId:v.assetId||jo(v.imageUrl,t)||v.imageUrl,CreatedAtUtc:v.createdAtUtc||o,Caption:v.caption||v.title||null}));return{ActiveVariantId:(m=e.imageStack)!=null&&m.activeVariantId&&d.some(v=>{var B;return v.VariantId===((B=e.imageStack)==null?void 0:B.activeVariantId)})?e.imageStack.activeVariantId:d[0].VariantId||"",Variants:d,Kind:((y=e.imageStack)==null?void 0:y.kind)||(d.length>1?"pile":"versions"),Title:((k=e.imageStack)==null?void 0:k.title)||e.title||null,UpdatedAtUtc:((L=e.imageStack)==null?void 0:L.updatedAtUtc)||o}}function fg(e,t){const o=e.Metadata||{};return ci(q(o.OriginalUrl)||q(o.OriginalPath)||q(o.SourceFilePath)||q(e.SourceFilePath)||q(e.Response),t)}function bg(e){const t={};for(const[o,r]of Object.entries(e??{}))typeof r=="string"?t[o]=r:r!=null&&(t[o]=String(r));return t}function yg(e){switch(e){case"remote-monitor":return"remote-monitor";case"remote-control":return"remote-control";case"template-launcher":return"templateLauncher";case"directory":return"directory";case"pdf":return"pdf";case"file":return"file";case"image":return"image";case"mask":return"mask";case"video":return"video";case"embed":return"embed";case"code":return"code";case"markdown":return"markdown";case"csv-table":return"csv-table";case"memo":return"memo";case"text":return"text";case"ai-task":return"note";default:return"note"}}function jo(e,t){const o=String(e||"").trim();if(!o)return"";const r=t.replace(/\/+$/,"");return o.startsWith(`${r}/`)?o.slice(r.length+1):o.replace(/^\/+/,"")}function xg(e,t){const o=new Map;for(const r of e){const d=t.get(r.from),c=t.get(r.to);!d||!c||o.has(c)||o.set(c,d)}return o}function Cg(e){const t=new Set;return e.map(o=>{var m,y;const r=((m=o.metadata)==null?void 0:m[Ya])||"",d=Ns(r)?r:Ns(o.id)?o.id:"",c=!!(d&&t.has(d)),p=d&&!c?d:Es(),b=((y=o.metadata)==null?void 0:y[Ya])!==p;return t.add(p),{node:b?{...o,metadata:{...o.metadata??{},[Ya]:p}}:o,originalId:p,assignedNodeId:!d||c,metadataStamped:b,duplicateOriginalId:c}})}function Sg(e,t,o,r,d){var y,k,L;const c=yg(e.kind),p=c==="image"||c==="mask"?jo(e.imageUrl,d):"",b=["video","pdf","file","directory","embed"].includes(c)?jo(e.assetUrl||e.sourceFilePath||e.body,d):"",m={...e.metadata??{},[Ya]:t,ReactNodeId:e.id,ReactKind:e.kind};if(e.kind==="remote-monitor"&&(m.RemoteHub??(m.RemoteHub="Gated"),m.RemoteRoute??(m.RemoteRoute="Gated"),m.RemoteConnected??(m.RemoteConnected="0"),m.RemoteTotal??(m.RemoteTotal="30"),m.RemotePage??(m.RemotePage="1/1"),m.AdapterState??(m.AdapterState="adapter-gated")),e.kind==="remote-control"&&(m.SemanticType??(m.SemanticType="RemoteFleetDevice"),m.RemoteFleetSchemaVersion??(m.RemoteFleetSchemaVersion="remote-fleet-device@1"),m.RemoteRoute??(m.RemoteRoute="Gated"),m.RemoteInput??(m.RemoteInput="Off"),m.AdapterState??(m.AdapterState="adapter-gated")),e.kind==="mask"&&(m.ImageRouterMask??(m.ImageRouterMask="true"),m.SemanticType??(m.SemanticType="ImageEditMask")),e.kind==="embed"){const v=e.assetUrl||e.body||e.sourceFilePath||"";m.source??(m.source="embed"),m.renderMode??(m.renderMode="card"),m.provider??(m.provider="web"),m.sourceUrl??(m.sourceUrl=v),m.url??(m.url=v),m.AdapterState??(m.AdapterState="local-reference")}return e.kind==="video"&&(m.assetKind??(m.assetKind="video"),m.videoMode??(m.videoMode=(y=e.assetUrl)!=null&&y.startsWith(d)?"local_bridge":"local_reference"),m.AdapterState??(m.AdapterState=((k=e.metadata)==null?void 0:k.PromptOnly)==="true"?"adapter-gated":"local-reference")),(L=e.tags)!=null&&L.length&&(m.ReactTags=JSON.stringify(e.tags)),p&&(m.OriginalUrl=p,m.ThumbnailUrl=p),b&&(m.OriginalPath=b,m.SourceFilePath=b),{Id:t,ContentType:c,Prompt:e.title||c,Response:c==="image"||c==="mask"?p||e.body||null:c==="remote-monitor"?e.body||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":c==="remote-control"?e.body||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":b||e.body||null,PositionX:e.x,PositionY:e.y,PositionZ:0,IsLoading:e.status==="running",Width:Math.round(e.width),Height:Math.round(e.height),Children:[],ParentId:o||null,IsExpanded:!!e.isExpanded,OriginalHeight:Math.round(e.originalHeight??0),IsAiEnabled:e.aiEnabled!==!1,IsChunkedText:!!e.isChunkedText,TotalLineCount:Math.round(e.totalLineCount??0),SourceFilePath:e.sourceFilePath||b||null,ScrollOffset:e.scrollOffset??0,MaxScroll:e.maxScroll??0,CreatedAt:r,UpdatedAt:r,IsWordWrap:e.wordWrap??e.kind!=="code",Metadata:m,ImageStack:c==="image"?hg(e,d,r):null}}function wg(e,t){return{NodeId:t,PositionX:e.x,PositionY:e.y,PositionZ:0,Width:Math.round(e.width),Height:Math.round(e.height),IsExpanded:!!e.isExpanded,OriginalHeight:Math.round(e.originalHeight??0)}}function kg(e,t,o){const r=q(e.ContentType)||"note",d=q(e.Prompt).trim(),c=q(e.Response).trim(),p=bg(e.Metadata),b=q(e.Id).trim();b&&(p[Ya]??(p[Ya]=b));const y=["true","1","yes"].includes(String(p.ImageRouterMask||p.IsMask||"").trim().toLowerCase())?"mask":dg(r),k=y==="memo"&&["mindcanvasagent","agentcommand"].includes(String(p.SemanticType||p.semanticType||"").trim().toLowerCase()),L=y==="memo"&&["codenote","code-note"].includes(String(p.SemanticType||p.semanticType||"").trim().toLowerCase()),v=q(e.SourceFilePath)||p.OriginalPath||p.SourceFilePath||"",B=y==="video"||y==="pdf"||y==="file"||y==="directory"||y==="embed"?fg(e,o):void 0,D=d||e.SourceFilePath||r||"LocalBridge node",$=y==="image"?c||d||"Image asset":y==="mask"?c||d||"Image mask asset":y==="remote-monitor"?c||d||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="remote-control"?c||d||v||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="pdf"||y==="file"||y==="directory"||y==="embed"?c||v||d||r:c||d||v||"",F=k?500:L?400:y==="remote-monitor"?860:y==="remote-control"||y==="template-launcher"?560:y==="csv-table"?720:y==="embed"?460:y==="video"?420:y==="markdown"?380:y==="text"||y==="image"||y==="mask"?360:320,H=k||L?300:y==="remote-monitor"?640:y==="remote-control"?390:y==="template-launcher"?620:y==="csv-table"?420:y==="embed"?260:y==="video"?236:y==="markdown"?240:y==="text"?210:y==="image"||y==="mask"?260:180,W=y==="image"||y==="mask"?mg(e,o):void 0,ie=y==="image"?pg(e,W,o):void 0,se=!!(e.IsChunkedText||p.IsChunkedText==="true"),Ne=ma(e.TotalLineCount??p.TotalLineCount,0),pe=ma(e.ScrollOffset,0),ze=ma(e.MaxScroll,0);return{id:String(e.Id||crypto.randomUUID()),kind:y,title:y==="remote-monitor"?d||"Multi Desktop Monitor":y==="remote-control"?d||p.RemoteFleetDeviceName||"Remote Device":y==="template-launcher"?d||"Template Launcher":D,body:$,x:ma((t==null?void 0:t.PositionX)??e.PositionX,0),y:ma((t==null?void 0:t.PositionY)??e.PositionY,0),width:Math.max(160,Math.min(900,ma((t==null?void 0:t.Width)??e.Width,F))),height:Math.max(120,Math.min(900,ma((t==null?void 0:t.Height)??e.Height,H))),status:e.IsLoading?"running":y==="ai-task"?"idle":void 0,imageUrl:gg(ie,W),imageStack:ie,assetUrl:B,sourceFilePath:v||void 0,isChunkedText:se||void 0,totalLineCount:se?Ne:void 0,scrollOffset:se?pe:void 0,maxScroll:se?ze:void 0,isExpanded:typeof e.IsExpanded=="boolean"?e.IsExpanded:void 0,originalHeight:ma(e.OriginalHeight,0)||void 0,tags:k?["Agent Command",p.AgentCommandRequestedRole||"Researcher",p.AgentCommandStatus||"Draft"]:L?["Code Note",p.CodeNoteStatus||"Draft",p.CodeNoteSyncState||"Unlinked"]:y==="remote-monitor"?["Remote","Monitor","LocalBridge"]:y==="remote-control"?["Remote","Control","LocalBridge"]:["LocalBridge",r],metadata:y==="remote-monitor"?vg(p):y==="remote-control"?jg(p):p,role:e.IsAiEnabled?"ai-enabled":void 0,aiEnabled:typeof e.IsAiEnabled=="boolean"?e.IsAiEnabled:void 0,wordWrap:typeof e.IsWordWrap=="boolean"?e.IsWordWrap:void 0}}function vg(e){return{RemoteHub:"Gated",RemoteRoute:"Gated",RemoteConnected:"0",RemoteTotal:"30",RemotePage:"1/1",AdapterState:"adapter-gated",...e}}function jg(e){return{SemanticType:"RemoteFleetDevice",RemoteFleetSchemaVersion:"remote-fleet-device@1",RemoteFleetDeviceId:"",RemoteFleetDeviceName:"Remote Device",RemoteFleetDevicePlatform:"unknown",RemoteFleetDeviceConnected:"false",RemoteInput:"Off",RemoteHub:"Gated",RemoteRoute:"Gated",RemoteBaseUrl:"http://127.0.0.1:5147",AdapterState:"adapter-gated",...e}}function Ig(e,t){const o=[];for(const r of e){const d=String(r.Id||""),c=String(r.ParentId||"");!d||!c||!t.has(d)||!t.has(c)||o.push({id:`edge-local-${c}-${d}`,from:c,to:d,kind:"context"})}return o}async function Ng(e=Ls()){const t=await di(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return(Array.isArray(o)?o.filter(Nt):[]).map(c=>Yr(c)).filter(c=>!!c).sort((c,p)=>String(p.UpdatedAt||"").localeCompare(String(c.UpdatedAt||"")))}async function Ag(e){try{const t=await di(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return Array.isArray(o)?o.filter(Nt):[]}catch{return[]}}async function Mg(e,t,o,r=Ls(),d=null){var He,Tt,ge,We,at,nt;if((He=e.source)!=null&&He.partialImport)throw new Error("This board was imported from a partial original payload. Export is blocked to avoid data loss.");if((Tt=e.source)!=null&&Tt.truncated)throw new Error("This board was truncated during import. Export is blocked to avoid data loss.");const c=(ge=e.source)!=null&&ge.exportedByReact?String(e.source.boardId||""):"",p=Ns(c),b=Ns(c)?c:Es(),m=new Date().toISOString(),y=Cg(e.nodes),k=y.map(z=>z.node),L=new Map(y.map(z=>[z.node.id,z.originalId])),v=xg(e.edges,L),B=y.map(({node:z,originalId:gt})=>Sg(z,gt,v.get(gt),m,r)),D=y.map(({node:z,originalId:gt})=>wg(z,gt)),$=t.scale>0?t.scale:1,F=(window.innerWidth/2-t.x)/$,H=(window.innerHeight/2-t.y)/$,W=1400/$,ie=Number((d==null?void 0:d.x)??((We=e.viewState)==null?void 0:We.cursorX)??0),se=Number((d==null?void 0:d.y)??((at=e.viewState)==null?void 0:at.cursorY)??0),Ne=(nt=e.nodes.find(z=>z.kind==="image"&&z.imageUrl))==null?void 0:nt.imageUrl,pe={Id:b,UserId:"00000000-0000-0000-0000-000000000000",Title:e.name||"Untitled Board",Description:"Exported from MindExec React",ThumbnailUrl:jo(Ne,r)||"",IsPublic:!1,CreatedAt:m,SyncedCloudBoardId:null,LastSyncedAt:null,LastCloudCopyStatus:null,UpdatedAt:m,LastCameraX:F,LastCameraY:H,LastCameraZ:W,LastCursorX:Number.isFinite(ie)?ie:0,LastCursorY:Number.isFinite(se)?se:0,CameraBookmarks:rg(e.settings.cameraBookmarks)},ze=`.mindexec/boards/${b}.msgpack`,At=`.mindexec/boards/${b}.json`,Ue=`.mindexec/boards/${b}.layout.json`,K=`.mindexec/boards/${b}.delta.json`,V=`boards/${b}.delta.json`,de=await Ag(r),te=[pe,...de.filter(z=>q(z.Id)!==b)],Mt=Cp(B);await Hm(ze,Mt,o,r),await ur(At,JSON.stringify(B,null,2),o,r),await ur(Ue,JSON.stringify(D,null,2),o,r),await ur(".mindexec/boards/_metadata.json",JSON.stringify(te,null,2),o,r);const U=await Promise.allSettled([Tl(K,o,r),Tl(V,o,r)]);return f.emit("localBridge.board.exported",{boardId:b,nodes:B.length,edges:e.edges.length,snapshotFormat:"msgpack",msgpackBytes:Mt.byteLength,jsonMirror:!0,deltaCleared:U.some(z=>z.status==="fulfilled"&&z.value.success),reusedBoardId:p,stableNodeIds:y.length,assignedNodeIds:y.filter(z=>z.assignedNodeId).length,metadataStampedNodeIds:y.filter(z=>z.metadataStamped).length,duplicateOriginalNodeIds:y.filter(z=>z.duplicateOriginalId).length}),{metadata:pe,source:{kind:"localBridge",boardId:b,loadedAt:m,originalNodeCount:B.length,renderedNodeCount:B.length,truncated:!1,exportedByReact:!0,snapshotFormat:"msgpack"},nodes:k,msgpackPath:ze,boardPath:At,layoutPath:Ue}}async function Tg(e,t,o=Ls()){const r=await lg(e.Id,o);let d=new Map;const c=await Vr([`.mindexec/boards/${e.Id}.layout.json`,`boards/${e.Id}.layout.json`],o);c&&(d=mc(c.payload));let p=null;const b=await Vr([`.mindexec/boards/${e.Id}.delta.json`,`boards/${e.Id}.delta.json`],o);b&&(p=b.payload);const m=p?hi(p)[0]:null,y=!!(p&&gi(p)),k=y?ig(r.payload,p):r.payload;return pc(k,t,{boardId:(m==null?void 0:m.Id)??e.Id,title:(m==null?void 0:m.Title)||e.Title||"LocalBridge Board",updatedAt:(m==null?void 0:m.UpdatedAt)??e.UpdatedAt,layoutPayload:Array.from(d.values()),baseUrl:o,cameraBookmarks:(m==null?void 0:m.CameraBookmarks)??e.CameraBookmarks,lastCursorX:(m==null?void 0:m.LastCursorX)??e.LastCursorX,lastCursorY:(m==null?void 0:m.LastCursorY)??e.LastCursorY,deltaApplied:y,deltaUpserts:p?uc(p):0,deltaDeletes:p?cc(p):0,snapshotFormat:r.format})}function pc(e,t,o={}){const r=As(e),d=gi(e),c=o.deltaUpserts??(d?r.length:0),p=o.deltaDeletes??(d?cc(e):0),b=o.layoutPayload?mc(o.layoutPayload):new Map,m=r.slice(0,ag),y=m.map(se=>kg(se,b.get(String(se.Id||"")),o.baseUrl??Ls())),k=new Set(y.map(se=>se.id)),L=Ig(m,k),v=r.length>y.length,B=d,D=o.deltaApplied===!0,$=o.boardId||Es(),F=o.updatedAt||new Date().toISOString(),H=Number(o.lastCursorX),W=Number(o.lastCursorY),ie=Number.isFinite(H)&&Number.isFinite(W);return f.emit("localBridge.board.loaded",{boardId:$,nodes:y.length,originalNodes:r.length,truncated:v,snapshotFormat:o.snapshotFormat,partialImport:B,deltaImport:d,deltaApplied:D,deltaUpserts:c,deltaDeletes:p}),{id:`localBridge:${$}`,name:o.title||"LocalBridge Board",nodes:y,edges:L,settings:{...t,cameraBookmarks:sg(o.cameraBookmarks)},viewState:ie?{cursorX:H,cursorY:W}:void 0,updatedAt:F,source:{kind:"localBridge",boardId:$,loadedAt:new Date().toISOString(),snapshotFormat:o.snapshotFormat,originalNodeCount:r.length,renderedNodeCount:y.length,truncated:v,partialImport:B,deltaImport:d,deltaApplied:D}}}const fi=["id","user_id","title","description","content_json","thumbnail_url","is_public","created_at","updated_at","last_camera_x","last_camera_y","last_camera_z","last_cursor_x","last_cursor_y","camera_bookmarks"].join(","),Rg=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Lg(e){if(Rg.test(e))return e;if(typeof crypto<"u"&&"randomUUID"in crypto)return crypto.randomUUID();throw new Error("A browser crypto.randomUUID implementation is required to create cloud boards.")}function gc(e){if(!e)return{};if(Array.isArray(e))return{nodes:e};if(typeof e=="object")return e;if(typeof e!="string"||!e.trim())return{};try{const t=JSON.parse(e);if(Array.isArray(t))return{nodes:t};if(t&&typeof t=="object")return t}catch{return{}}return{}}function Pg(e){return JSON.stringify({id:e.id,name:e.name,nodes:e.nodes,edges:e.edges,settings:e.settings,viewState:e.viewState,updatedAt:e.updatedAt})}function Gr(e,t=new Date().toISOString()){return e&&!Number.isNaN(Date.parse(e))?e:t}function bi(e){return(e==null?void 0:e.trim().slice(0,90))||"Untitled Board"}function hc(e){const t=gc(e.content_json),o=Gr(e.updated_at??t.updatedAt);return{id:e.id,name:bi(e.title??t.name),updatedAt:o,createdAt:Gr(e.created_at,o),nodeCount:Array.isArray(t.nodes)?t.nodes.length:0,edgeCount:Array.isArray(t.edges)?t.edges.length:0,sourceKind:"cloud"}}function Eg(e,t){var k,L;const o=gc(e.content_json),r=Gr(e.updated_at??o.updatedAt),d=Number((k=o.viewState)==null?void 0:k.cursorX),c=Number((L=o.viewState)==null?void 0:L.cursorY),p=Number(e.last_cursor_x),b=Number(e.last_cursor_y),m=Number.isFinite(d)&&Number.isFinite(c),y=Number.isFinite(p)&&Number.isFinite(b);return{id:e.id,name:bi(e.title??o.name),nodes:Array.isArray(o.nodes)?o.nodes:[],edges:Array.isArray(o.edges)?o.edges:[],settings:o.settings??t,viewState:m?{cursorX:d,cursorY:c}:y?{cursorX:p,cursorY:b}:void 0,updatedAt:r,source:{kind:"cloud",boardId:e.id,loadedAt:new Date().toISOString(),snapshotFormat:"supabase.boards.content_json",originalNodeCount:Array.isArray(o.nodes)?o.nodes.length:0,renderedNodeCount:Array.isArray(o.nodes)?o.nodes.length:0}}}async function yi(e){var m;const t=ac(e);if(!t.cloudBoards.canAttempt)return f.emit("projectStorage.cloud.provider.skipped",{mode:t.cloudBoards.mode}),{userId:null,config:t,reason:t.cloudBoards.mode};const o=Ps(e);if(!o)return f.emit("projectStorage.cloud.provider.skipped",{mode:"config-missing"}),{userId:null,config:t,reason:"missing-client"};const{data:r,error:d}=await o.auth.getSession();if(d||!r.session)return f.emit("projectStorage.cloud.provider.sessionMissing",{message:(d==null?void 0:d.message)??"missing-session"}),{userId:null,config:t,reason:"missing-session"};const{data:c,error:p}=await o.auth.getUser(),b=((m=c.user)==null?void 0:m.id)??null;return p||!b?(f.emit("projectStorage.cloud.provider.sessionMissing",{message:(p==null?void 0:p.message)??"missing-user"}),{userId:null,config:t,reason:"missing-user"}):{userId:b,config:t,reason:"provider-ready"}}async function _g(e){const t=await yi(e);if(!t.userId)return[];const o=Ps(e);if(!o)return[];f.emit("projectStorage.cloud.list.requested");const{data:r,error:d}=await o.from("boards").select(fi).eq("user_id",t.userId).order("updated_at",{ascending:!1}).limit(50);if(d)throw f.emit("projectStorage.cloud.provider.failed",{operation:"list",message:d.message}),d;const c=(r??[]).map(hc);return f.emit("projectStorage.cloud.list.loaded",{count:c.length}),c}async function Bg(e,t,o){const r=await yi(e);if(!r.userId)return null;const d=Ps(e);if(!d)return null;f.emit("projectStorage.cloud.load.requested",{boardId:t});const{data:c,error:p}=await d.from("boards").select(fi).eq("user_id",r.userId).eq("id",t).maybeSingle();if(p)throw f.emit("projectStorage.cloud.provider.failed",{operation:"load",boardId:t,message:p.message}),p;if(!c)return null;const b=Eg(c,o);return f.emit("projectStorage.cloud.load.loaded",{boardId:t,nodes:b.nodes.length,edges:b.edges.length}),b}async function Dg(e,t,o,r=null){var ie,se;const d=await yi(e);if(!d.userId)return null;const c=Ps(e);if(!c)return null;const p=Lg(t.id),b=new Date().toISOString(),m=bi(t.name),y=Number((r==null?void 0:r.x)??((ie=t.viewState)==null?void 0:ie.cursorX)??0),k=Number((r==null?void 0:r.y)??((se=t.viewState)==null?void 0:se.cursorY)??0),L={...t.viewState??{},cursorX:Number.isFinite(y)?y:0,cursorY:Number.isFinite(k)?k:0},v={...t,id:p,name:m,viewState:L,updatedAt:b},B={p_board_id:p,p_title:m,p_description:null,p_thumbnail_url:null,p_is_public:!1,p_created_at:null,p_updated_at:b,p_last_camera_x:o.x,p_last_camera_y:o.y,p_last_camera_z:o.scale,p_last_cursor_x:L.cursorX,p_last_cursor_y:L.cursorY,p_camera_bookmarks:JSON.stringify(t.settings.cameraBookmarks??{}),p_nodes:[],p_include_json_mirror:!0};f.emit("projectStorage.cloud.save.requested",{boardId:p,sourceBoardId:t.id,nodes:t.nodes.length,edges:t.edges.length});const{error:D}=await c.rpc("save_board_snapshot",B);if(D)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-rpc",boardId:p,message:D.message}),D;const $={content_json:Pg(v),updated_at:b},{data:F,error:H}=await c.from("boards").update($).eq("id",p).eq("user_id",d.userId).select(fi).maybeSingle();if(H)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-json-mirror",boardId:p,message:H.message}),H;const W=F?hc(F):{id:p,name:m,updatedAt:b,createdAt:b,nodeCount:t.nodes.length,edgeCount:t.edges.length,sourceKind:"cloud"};return f.emit("projectStorage.cloud.save.saved",{boardId:W.id,nodes:W.nodeCount,edges:W.edgeCount}),W}function Kr(e){return e.length===0?{minX:0,minY:0,maxX:0,maxY:0}:e.reduce((t,o)=>({minX:Math.min(t.minX,o.x),minY:Math.min(t.minY,o.y),maxX:Math.max(t.maxX,o.x+o.width),maxY:Math.max(t.maxY,o.y+o.height)}),{minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY})}function Og(e,t={},o=Kr(e),r){if(e.length===0)return{after:new Map,boundsAfter:o};const d=th(t.mode),c=ah(t.order),p=nh(t.anchor),b=oh(t.sizeMode),m=Math.max(0,t.gapX??24),y=Math.max(0,t.gapY??24),k=Math.max(1,t.maxColumns??12),L=Xr(t.quantile??.75,.05,.95),v=e.map(Fg),B=qg(v,c),D=B.map(pe=>pe.width),$=B.map(pe=>pe.height),F=Math.max(1,t.cellWidth??nd(D,L)),H=Math.max(1,t.cellHeight??nd($,L)),W=Math.max(1,t.targetWidth??F),ie=Math.max(1,t.targetHeight??H),se=Xg(p,o);if(d==="grid"){Vg(B,b,W,ie,F,H);const pe=ad(t.columns,k,o.maxX-o.minX,F,m);zg(B,se.x,se.y,pe,F,H,m,y)}else if(d==="masonry"){Yg(B,b==="preserve"?"uniformWidth":b,W);const ze=ad(t.columns,k,o.maxX-o.minX,W,m);Ug(B,se.x,se.y,ze,W,m,y)}else d==="stripHorizontal"?(Gg(B,b==="preserve"?"uniformHeight":b,ie),Hg(B,se.x,se.y,m,ie)):(Kg(B,b==="preserve"?"uniformWidth":b,W),Wg(B,se.x,se.y,y,W));let Ne=new Map(B.map(pe=>[pe.id,$g(pe)]));return p==="selectionBoundsCenter"&&(Ne=Zg(o,Ne)),t.snapToGrid&&(Ne=Qg(Ne,Math.max(1,t.gridSize??8))),{after:Ne,boundsAfter:Kr(Array.from(Ne.values()))}}function Fg(e){return{...e,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function $g(e){return{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function zg(e,t,o,r,d,c,p,b){e.forEach((m,y)=>{const k=Math.floor(y/r),L=y%r,v=t+L*(d+p),B=o+k*(c+b);m.x=v+(d-m.width)/2,m.y=B+(c-m.height)/2})}function Ug(e,t,o,r,d,c,p){const b=Array.from({length:r},()=>0);for(const m of e){const y=eh(b),k=t+y*(d+c);m.x=k+(d-m.width)/2,m.y=o+b[y],b[y]+=m.height+p}}function Hg(e,t,o,r,d){let c=t;for(const p of e)p.x=c,p.y=o+(d-p.height)/2,c+=p.width+r}function Wg(e,t,o,r,d){let c=o;for(const p of e)p.x=t+(d-p.width)/2,p.y=c,c+=p.height+r}function Vg(e,t,o,r,d,c){if(t==="fitCellDownOnly")for(const p of e){const b=Math.min(1,d/p.width,c/p.height);p.width*=b,p.height*=b}else t==="uniformWidth"?xi(e,o):t==="uniformHeight"&&fc(e,r)}function Yg(e,t,o){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,o/r.width);r.width*=d,r.height*=d}return}xi(e,o)}function Gg(e,t,o){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,o/r.height);r.width*=d,r.height*=d}return}fc(e,o)}function Kg(e,t,o){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,o/r.width);r.width*=d,r.height*=d}return}xi(e,o)}function xi(e,t){for(const o of e){if(o.width<=0)continue;const r=t/o.width;o.width=t,o.height=Math.max(1,o.height*r)}}function fc(e,t){for(const o of e){if(o.height<=0)continue;const r=t/o.height;o.height=t,o.width=Math.max(1,o.width*r)}}function ad(e,t,o,r,d){if(typeof e=="number"&&e>0)return Math.round(Xr(e,1,t));if(o<=1||r<=1)return 1;const c=Math.floor((o+d)/(r+d));return!Number.isFinite(c)||c<1?1:Math.round(Xr(c,1,t))}function Xg(e,t,o){return{x:t.minX,y:t.minY}}function qg(e,t){return t==="selectionOrder"?[...e].sort((o,r)=>o.selectionIndex-r.selectionIndex):Jg(e)}function Jg(e){const t=[...e].sort((m,y)=>m.y-y.y||m.x-y.x);if(t.length<=2)return t;const o=t.map(m=>m.height).sort((m,y)=>m-y),r=o[Math.floor(o.length/2)]??1,d=Math.max(16,r*.35),c=[];let p=[],b=Number.NaN;for(const m of t)p.length===0?(p=[m],b=m.y):Math.abs(m.y-b)<=d?(p.push(m),b=(b*(p.length-1)+m.y)/p.length):(c.push([...p].sort((y,k)=>y.x-k.x)),p=[m],b=m.y);return p.length>0&&c.push([...p].sort((m,y)=>m.x-y.x)),c.flat()}function Zg(e,t){if(t.size===0)return t;const o=Kr(Array.from(t.values())),r=e.minX+(e.maxX-e.minX)/2,d=e.minY+(e.maxY-e.minY)/2,c=o.minX+(o.maxX-o.minX)/2,p=o.minY+(o.maxY-o.minY)/2,b=r-c,m=d-p;return new Map(Array.from(t.entries()).map(([y,k])=>[y,{...k,x:k.x+b,y:k.y+m}]))}function Qg(e,t){return new Map(Array.from(e.entries()).map(([o,r])=>[o,{...r,x:od(r.x,t),y:od(r.y,t)}]))}function nd(e,t){if(e.length===0)return 1;const o=[...e].sort((b,m)=>b-m),r=(o.length-1)*t,d=Math.floor(r),c=Math.min(o.length-1,d+1),p=r-d;return o[d]*(1-p)+o[c]*p}function eh(e){let t=0;for(let o=1;o<e.length;o+=1)e[o]<e[t]&&(t=o);return t}function od(e,t){return Math.round(e/t)*t}function th(e){const t=_s(e);return t==="grid"?"grid":t==="striphorizontal"||t==="striph"?"stripHorizontal":t==="stripvertical"||t==="stripv"?"stripVertical":"masonry"}function ah(e){return _s(e)==="selectionorder"?"selectionOrder":"spatialReading"}function nh(e){const t=_s(e);return t==="selectionboundscenter"?"selectionBoundsCenter":t==="viewporttopleft"?"viewportTopLeft":"selectionBoundsTopLeft"}function oh(e){const t=_s(e);return t==="fitcelldownonly"?"fitCellDownOnly":t==="uniformwidth"?"uniformWidth":t==="uniformheight"?"uniformHeight":"preserve"}function _s(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")}function Xr(e,t,o){return Math.min(o,Math.max(t,e))}const bc=300,yc=50*1024*1024,sh=800;function we(e){return typeof e=="string"?e.length*2:0}function rh(e){let t=256;if(t+=we(e.id),t+=we(e.kind),t+=we(e.title),t+=we(e.body),t+=we(e.result),t+=we(e.imageUrl),t+=we(e.assetUrl),t+=we(e.sourceFilePath),t+=(e.tags??[]).reduce((o,r)=>o+we(r),0),e.metadata)for(const[o,r]of Object.entries(e.metadata))t+=we(o)+we(r);return e.imageStack&&(t+=128+we(e.imageStack.title),t+=e.imageStack.variants.reduce((o,r)=>o+96+we(r.variantId)+we(r.imageUrl)+we(r.assetId)+we(r.title)+we(r.caption),0)),t}function ih(e){let t=1024+we(e.id)+we(e.name)+we(e.updatedAt);return t+=e.nodes.reduce((o,r)=>o+rh(r),0),t+=e.edges.length*128,t+=Object.entries(e.settings).reduce((o,[r,d])=>o+we(r)+we(typeof d=="string"?d:JSON.stringify(d)),0),t}function xc(e,t={}){var o,r;return{board:e,description:((o=t.description)==null?void 0:o.trim())||"Board change",mergeKey:((r=t.mergeKey)==null?void 0:r.trim())||null,timestampMs:t.timestampMs??Date.now(),estimatedBytes:ih(e)}}function sd(e,t={}){const o=t.maxEntries??bc,r=t.maxBytes??yc;let d=e.slice(Math.max(0,e.length-o)),c=d.reduce((p,b)=>p+b.estimatedBytes,0);for(;d.length>1&&c>r;){const[p,...b]=d;c-=(p==null?void 0:p.estimatedBytes)??0,d=b}return d}function $a(e,t,o={}){const r=xc(t,o),d=o.mergeWindowMs??sh,c=e.slice(),p=c.at(-1);return p&&r.mergeKey&&p.mergeKey===r.mergeKey&&r.timestampMs-p.timestampMs<d?(c[c.length-1]={...p,description:r.description,timestampMs:r.timestampMs,estimatedBytes:Math.max(p.estimatedBytes,r.estimatedBytes)},sd(c,o)):(c.push(r),sd(c,o))}function lh(e,t,o={}){const r=xc(t,o),d=o.maxEntries??bc,c=o.maxBytes??yc;let p=[r,...e].slice(0,d),b=p.reduce((m,y)=>m+y.estimatedBytes,0);for(;p.length>1&&b>c;){const m=p.at(-1);b-=(m==null?void 0:m.estimatedBytes)??0,p=p.slice(0,-1)}return p}function Bs(e,...t){const o=e==null?void 0:e.metadata;if(!o)return"";for(const r of t){const d=o[r];if(typeof d=="string"&&d.trim())return d.trim()}return""}function po(e,t){return!!Bs(e,t)}function Cc(e){if(!e||!e.trim())return!1;const t=e.trim();return/^(https?:|blob:|data:|file:)/i.test(t)}function Sc(e){if(!e)return"";const t=Bs(e,"OriginalPath");if(t)return t;const o=String(e.body||"").trim();return Cc(o)?"":o}function wc(e){return e?Sc(e)||String(e.sourceFilePath||"").trim()||String(e.assetUrl||"").trim()||String(e.imageUrl||"").trim()||String(e.body||"").trim():""}function kc(e){return Bs(e,"ThumbnailUrl","thumbnailUrl")}function dh(e){if(!e||e.kind!=="image")return!1;if(po(e,"ImageGenerationProvider")||po(e,"GeneratedImageSourceWidth")||po(e,"GeneratedImageSourceHeight")||po(e,"CodexImageQuality")||po(e,"ImageRouterRevisedPrompt"))return!0;const t=Bs(e,"RequestedMediaOperation");return["text2image","image2image","inpaint"].includes(t.toLowerCase())}function Ci(e){if(!e)return"";if(e.kind==="image"||e.kind==="mask"){const t=dh(e)?Sc(e):"",o=kc(e),r=String(e.body||"").trim();return t||o||String(e.imageUrl||"").trim()||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()||(Cc(r)?r:"")}return wc(e)||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()}function vc(e){if(!e)return"";const t=wc(e)||e.title||e.kind;return String(t||"").replace(/\\/g,"/").replace(/\/+$/,"").split("/").filter(Boolean).pop()||e.title||e.kind}const ch=2048,uh=16e3,xr=1024,Cr=64,mh=2048,Sr=3,ph=16,gh=256,hh=new Set(["text","note","memo","markdown","code","directory"]),fh=/[\p{L}\p{M}\p{N}]{2,}/gu,rd=4,bh=8,id=1.35;function yh(e){return hh.has(String(e||"").trim().toLowerCase())}function xh(e){const t=e.map(Sh),o=new Map,r=new Map,d=new Map,c=new Map;for(const p of t){o.set(p.id,p);for(const b of p.tokens)wr(r,b,p.id);for(const b of p.prefixes)wr(d,b,p.id);for(const b of p.ngrams)wr(c,b,p.id)}return{documents:t,documentById:o,tokenIndex:r,prefixIndex:d,ngramIndex:c}}function Ch(e,t,o={}){const r=Math.max(1,Math.trunc(Number(o.limit||30))),d=kn(t),c=ld(e,0,0,o.viewport,0);if(!d)return{hits:[],profile:c};const p=Array.from(jc(d)),b=Array.from(Ic(p)),m=Ac(d),y=Array.from(Nc(m)),k=new Map;for(const $ of p)kr(e.tokenIndex,$,k,8);for(const $ of b)kr(e.prefixIndex,$,k,$.length<=3?4:2);for(const $ of y)kr(e.ngramIndex,$,k,1.15);const L=jh(e,k,r),v=Ih(o.allowedContentTypes),B=[];for(const $ of L){const F=e.documentById.get($);if(!F||v&&!v.has(F.contentType))continue;const H=kh(F,d,p,y);if(H<=0)continue;const W=vh(F,o.viewport??null);B.push({nodeId:F.id,score:H+W,textScore:H,viewportBoost:W})}B.sort(($,F)=>F.score-$.score||$.nodeId.localeCompare(F.nodeId));const D=B.slice(0,r);return{hits:D,profile:ld(e,L.length,D.length,o.viewport,D.filter($=>$.viewportBoost>0).length)}}function kn(e){const t=String(e??"");if(!t.trim())return"";let o=t;try{o=t.normalize("NFKC")}catch{o=t}o=o.toLowerCase();let r="",d=!1;for(const c of o){if(/\s/u.test(c)){d||(r+=" ",d=!0);continue}Nh(c)||(r+=c,d=!1)}return r.trim()}function jc(e){return new Set(e.match(fh)??[])}function Ic(e){const t=new Set;for(const o of e){if(!o.trim())continue;const r=Math.min(8,o.length);for(let d=2;d<=r;d+=1)t.add(o.slice(0,d))}return t}function Nc(e){const t=new Set;if(!e.trim())return t;if(e.length<=Sr)return t.add(e),t;for(let o=0;o<=e.length-Sr;o+=1)t.add(e.slice(o,o+Sr));return t}function Sh(e){const t=String(e.kind??"").trim().toLowerCase(),o=Wa(e.prompt??e.title,ch),r=yh(t)?Wa(e.response??e.body,uh):"",d=wh(e.metadata,e.tags,e.metadataText),c=Wa(e.sourceFilePath||e.assetUrl,mh),p=kn(o),b=kn(r),m=kn(d),y=kn(c),k=kn(t),L=[p,m,y,b,k].filter(Boolean).join(" "),v=jc(L);return{id:String(e.id),contentType:t,normalizedPrompt:p,normalizedResponse:b,normalizedMetadata:m,normalizedSourcePath:y,normalizedContentType:k,tokens:v,prefixes:Ic(v),ngrams:Nc(Ac(L)),x:Number.isFinite(e.x)?e.x:0,y:Number.isFinite(e.y)?e.y:0,width:Number.isFinite(e.width)?e.width:1,height:Number.isFinite(e.height)?e.height:1}}function wh(e,t,o){const r=[];let d=0;if(e)for(const[c,p]of Object.entries(e)){if(d>=Cr)break;!String(c??"").trim()&&!String(p??"").trim()||(r.push(Wa(c,128)),String(p??"").trim()&&r.push(Wa(p,xr)),d+=1)}return d<Cr&&(t!=null&&t.length)&&(r.push("tags",Wa(t.join(" "),xr)),d+=1),d<Cr&&(o!=null&&o.trim())&&r.push("metadata",Wa(o,xr)),r.join(" ")}function kh(e,t,o,r){let d=0;e.normalizedPrompt===t?d+=120:go(e.normalizedPrompt,t)&&(d+=54),go(e.normalizedMetadata,t)&&(d+=26),go(e.normalizedSourcePath,t)&&(d+=18),go(e.normalizedResponse,t)&&(d+=14),go(e.normalizedContentType,t)&&(d+=8);for(const c of o)e.tokens.has(c)&&(d+=7),e.normalizedPrompt.startsWith(c)&&(d+=10);for(const c of r)e.ngrams.has(c)&&(d+=.85);return d}function vh(e,t){if(!t)return 0;const o=e.x+Math.max(1,e.width)/2,r=e.y+Math.max(1,e.height)/2,d=Math.abs(o-t.centerX)/Math.max(1,t.halfWidth),c=Math.abs(r-t.centerY)/Math.max(1,t.halfHeight),p=Math.sqrt(d*d+c*c);if(p<=1)return rd+(1-p)*bh;if(p<=id){const b=1-(p-1)/Math.max(.001,id-1);return Math.max(0,b)*(rd*.75)}return 0}function jh(e,t,o){return t.size===0?e.documents.map(r=>r.id):Array.from(t.entries()).sort((r,d)=>d[1]-r[1]||r[0].localeCompare(d[0])).slice(0,Math.max(o*ph,gh)).map(([r])=>r)}function Ih(e){if(!e)return null;const t=new Set(Array.from(e,o=>String(o||"").trim().toLowerCase()).filter(Boolean));return t.size>0?t:null}function ld(e,t,o,r,d){return{documentCount:e.documents.length,candidateCount:t,rankedCount:o,viewportBoosted:!!r,boostedCount:d,indexedTokenCount:e.tokenIndex.size,indexedPrefixCount:e.prefixIndex.size,indexedNGramCount:e.ngramIndex.size}}function wr(e,t,o){const r=e.get(t);if(r){r.add(o);return}e.set(t,new Set([o]))}function kr(e,t,o,r){const d=e.get(t);if(d)for(const c of d)o.set(c,(o.get(c)??0)+r)}function Ac(e){let t="";for(const o of e)/\s/u.test(o)||(t+=o);return t}function Wa(e,t){const o=String(e??"");return o.length<=t?o:o.slice(0,t)}function go(e,t){return!!(e&&t&&e.includes(t))}function Nh(e){const t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}const Ah=2147483647,Mh="LocalBridge access is enabled, but the bridge is not reachable. Restart LocalBridge, allow Chrome local-network access, then reload MindCanvas.",Th="Local storage is unavailable in the hosted app until browser local storage or LocalBridge access is available.",Rh="Local storage is unavailable. Check the browser-local storage state or LocalBridge connection.",Lh="Cloud projects are unavailable until Supabase and Cloudflare R2 are configured.",Ph="Login is required before cloud projects can be used.",Eh="Cloud projects are unavailable.";function _h(e){return e.bridgeProviderConfigured||e.browserProviderConfigured||e.embeddedProviderConfigured}function qr(e,t=!0){const o={isAvailable:!1,bridgeReachable:!1,browserLocalAvailable:!1,embeddedLocalAvailable:!1,providerKind:"none",canBrowseWorkspace:!1};return e.bridgeProviderConfigured&&e.bridgeReachable?{...o,isAvailable:!0,bridgeReachable:!0,providerKind:"bridge",canBrowseWorkspace:!0}:e.hostedWebApp&&e.hostedLocalBridgeAccessEnabled&&e.bridgeProviderConfigured?{...o,providerKind:"bridge"}:e.browserProviderConfigured&&(e.browserLocalAvailable||t&&e.browserLocalAvailableWhenEmpty===!0)?{...o,isAvailable:!0,browserLocalAvailable:!0,providerKind:"browser"}:e.embeddedProviderConfigured&&e.supportsEmbeddedLocal?{...o,isAvailable:!0,embeddedLocalAvailable:!0,providerKind:"embedded"}:o}function Bh(e){return qr(e,!1).isAvailable?"local":Si(e)?"cloud":qr(e,!0).isAvailable?"local":e.cloudConfigured?"cloud":"local"}function Si(e){return e.cloudConfigured&&e.cloudSessionAvailable}function Dh(e,t){return t.providerKind==="bridge"&&!t.bridgeReachable?Mh:e.hostedWebApp?Th:Rh}function Oh(e){return e.cloudConfigured?Si(e)?Eh:Ph:Lh}function Fh(e){var k,L,v;const t=Si(e),o=qr(e,!0),r=_h(e),d=e.cloudConfigured,c=o.isAvailable,p=t;let b=e.storedMode??Bh(e);b==="cloud"&&(!d||!p&&c)?b=c?"local":"cloud":b==="local"&&(!r&&d||!c&&p)&&(b="cloud");const m=e.cloudAccess,y=((k=m==null?void 0:m.denialReason)==null?void 0:k.trim())||void 0;return{currentMode:b,showLocalTab:r,showCloudTab:d,isLocalAvailable:o.isAvailable,isCloudAvailable:t,requiresCloudSignIn:e.cloudConfigured&&!t,canUseLocalProjects:c,canBrowseLocalWorkspace:o.canBrowseWorkspace,localProviderKind:o.providerKind,canUseCloudProjects:p,canSyncLocalToCloud:c&&p,cloudPlanKey:((L=m==null?void 0:m.planKey)==null?void 0:L.trim())||"free",cloudEntitlementStatus:((v=m==null?void 0:m.entitlementStatus)==null?void 0:v.trim())||(m?"active":"inactive"),currentCloudBoardCount:(m==null?void 0:m.currentBoardCount)??0,cloudBoardLimit:(m==null?void 0:m.cloudBoardLimit)??Ah,lockedCloudBoardCount:(m==null?void 0:m.lockedBoardCount)??0,canCreateCloudBoards:(m==null?void 0:m.canCreateBoard)??p,canUseManagedAi:(m==null?void 0:m.canUseManagedAi)??!1,canGenerateImage:(m==null?void 0:m.canGenerateImage)??!1,canUseContextPack:(m==null?void 0:m.canUseContextPack)??!1,cloudLimitMessage:y,localStatusMessage:o.isAvailable?void 0:Dh(e,o),cloudStatusMessage:p?void 0:Oh(e)}}function $h(){const e=new Error("Queued operation was cancelled before it started.");return e.name="AbortError",e}class zh{constructor(){Al(this,"tails",new Map)}isBusy(t){return this.tails.has(t)}enqueue(t,o,r){if(typeof o!="function")throw new TypeError("KeyedAsyncQueue operation is required.");const d=this.tails.get(t)??Promise.resolve();let c;return c=(async()=>{try{try{await d}catch{}if(r!=null&&r.aborted)throw $h();return await o(r)}finally{this.tails.get(t)===c&&this.tails.delete(t)}})(),this.tails.set(t,c),c}clear(t){if(typeof t>"u"){this.tails.clear();return}this.tails.delete(t)}}const Jr="mindexec-local-mode-warning-dismissed-v1";function Uh(){try{return window.localStorage.getItem(Jr)==="true"}catch{return!1}}function Mc(e,t){var o,r;if(e==="checking")return"Checking bridge";if(e==="connected"){const d=(r=(o=t==null?void 0:t.exec)==null?void 0:o.model)==null?void 0:r.trim();return d?`Bridge / ${d}`:"Bridge connected"}return e==="blocked"?"Bridge gated":e==="unavailable"?"Bridge unavailable":"Bridge idle"}function Hh(e,t,o){var d,c,p,b,m;if(e!=="connected")return t||Mc(e,o);const r=[o!=null&&o.version?`version ${o.version}`:null,(d=o==null?void 0:o.exec)!=null&&d.model?`model ${o.exec.model}`:null,(c=o==null?void 0:o.exec)!=null&&c.reasoningEffort?`reasoning ${o.exec.reasoningEffort}`:null,(p=o==null?void 0:o.exec)!=null&&p.serviceTier?`tier ${o.exec.serviceTier}`:null,(b=o==null?void 0:o.exec)!=null&&b.preferredProviderKind?`codex ${o.exec.preferredProviderKind}`:null,(m=o==null?void 0:o.project)!=null&&m.isOpen?"project open":null].filter(Boolean);return r.length>0?`LocalBridge connected. ${r.join(" / ")}`:"LocalBridge connected."}function Wh({state:e,message:t,status:o,hostedBridgeAccessEnabled:r,onRefresh:d,onEnableHostedBridge:c}){const p=g.useMemo(()=>e==="checking"?n.jsx(Jt,{size:14,className:"spin-icon"}):e==="connected"?n.jsx(Ip,{size:14}):e==="blocked"?n.jsx(nc,{size:14}):e==="unavailable"?n.jsx(Np,{size:14}):n.jsx(ui,{size:14}),[e]);return n.jsxs("div",{className:`runtime-status-pill runtime-status-pill--${e}`,title:Hh(e,t,o),"data-testid":"bridge-status-pill","data-bridge-state":e,"data-bridge-access":r?"enabled":"gated",children:[n.jsx("span",{className:"runtime-status-pill__icon","aria-hidden":"true",children:p}),n.jsx("span",{children:Mc(e,o)}),e==="blocked"&&!r&&n.jsx("button",{type:"button",className:"runtime-status-pill__action",onClick:c,children:"Enable"}),n.jsx("button",{type:"button",className:"runtime-status-pill__button",title:"Refresh LocalBridge","data-testid":"bridge-status-refresh",onClick:()=>void d(),disabled:e==="checking",children:n.jsx(In,{size:13})})]})}function Vh({status:e,message:t}){const r={ready:{icon:n.jsx($r,{size:14}),label:"Saved locally",title:"Board state is saved in this browser."},syncing:{icon:n.jsx(Jt,{size:14,className:"spin-icon"}),label:"Saving",title:"Saving board state to this browser."},error:{icon:n.jsx(mi,{size:14}),label:"Save error",title:"Board state could not be saved locally."},offline:{icon:n.jsx(ui,{size:14}),label:"Offline",title:"No sync adapter is connected."}}[e];return n.jsxs("div",{className:`runtime-status-pill runtime-status-pill--sync-${e}`,title:t||r.title,"data-testid":"sync-status-indicator","data-sync-status":e,children:[n.jsx("span",{className:"runtime-status-pill__icon","aria-hidden":"true",children:r.icon}),n.jsx("span",{children:r.label})]})}function Yh({visible:e}){const[t,o]=g.useState(Uh);if(!e||t)return null;const r=()=>{o(!0);try{window.localStorage.setItem(Jr,"true")}catch{}f.emit("runtimeStatus.localMode.dismissed")};return n.jsxs("section",{className:"runtime-local-warning",role:"status","data-testid":"local-mode-warning","data-local-mode-dismissed-key":Jr,children:[n.jsx("div",{className:"runtime-local-warning__icon","aria-hidden":"true",children:n.jsx(mi,{size:16})}),n.jsxs("div",{className:"runtime-local-warning__copy",children:[n.jsx("strong",{children:"Local Mode"}),n.jsx("span",{children:"Boards are saved in this browser. LocalBridge export creates a file-backed copy."})]}),n.jsx("button",{type:"button",title:"Dismiss local mode warning","data-testid":"local-mode-dismiss",onClick:r,children:n.jsx(jt,{size:14})})]})}function Gh({bridgeState:e,bridgeMessage:t,bridgeStatus:o,syncStatus:r,syncMessage:d,hostedBridgeAccessEnabled:c,onRefreshBridge:p,onEnableHostedBridge:b,showLocalModeWarning:m=!0}){return n.jsxs("aside",{className:"runtime-status-cluster","aria-label":"Runtime status","data-testid":"runtime-status-cluster","data-local-mode-visible":m?"true":"false",children:[n.jsxs("div",{className:"runtime-status-row",children:[n.jsx(Wh,{state:e,message:t,status:o,hostedBridgeAccessEnabled:c,onRefresh:p,onEnableHostedBridge:b}),n.jsx(Vh,{status:r,message:d})]}),n.jsx(Yh,{visible:m})]})}const Kh=/^data:image\//i;function Xh(e){const t=String(e||"").trim();if(!t)return{src:null,reason:"empty",urlKind:"empty"};const o=t.toLowerCase();return Kh.test(t)?{src:t,reason:null,urlKind:"data"}:o.startsWith("blob:")?{src:t,reason:null,urlKind:"blob"}:o.startsWith("https://")?{src:t,reason:null,urlKind:"https"}:o.startsWith("http://")?{src:t,reason:null,urlKind:"http"}:t.startsWith("//")?{src:t,reason:null,urlKind:"protocol-relative"}:t.startsWith("/")||t.startsWith("./")||t.startsWith("../")?{src:t,reason:null,urlKind:"relative"}:/^[a-z][a-z0-9+.-]*:/i.test(t)?{src:null,reason:"unsupported-protocol",urlKind:t.split(":",1)[0].toLowerCase()}:{src:t,reason:null,urlKind:"relative"}}function vr({src:e,alt:t="",className:o="",testId:r="secure-image",traceId:d,kind:c="image",title:p}){const b=g.useMemo(()=>Xh(e),[e]),[m,y]=g.useState(b.src?"loading":"blocked");g.useEffect(()=>{const B=b.src?"loading":"blocked";y(B),b.src||f.emit("secureImage.blocked",{id:d,kind:c,reason:b.reason,urlKind:b.urlKind})},[c,b.reason,b.src,b.urlKind,d]);const k=()=>{y("loaded"),f.emit("secureImage.loaded",{id:d,kind:c,urlKind:b.urlKind})},L=()=>{y("error"),f.emit("secureImage.error",{id:d,kind:c,urlKind:b.urlKind})},v=m==="blocked"?`Image blocked: ${b.reason||"unsupported source"}`:"Image failed to load";return n.jsxs("div",{className:`secure-image secure-image--${m} ${o}`.trim(),"data-testid":r,"data-secure-image-state":m,"data-secure-image-kind":c,title:m==="loaded"?p:v,children:[b.src&&n.jsx("img",{src:b.src,alt:t,loading:"lazy",decoding:"async",draggable:!1,onLoad:k,onError:L}),m==="loading"&&n.jsx("span",{className:"secure-image__loading","aria-hidden":"true",children:n.jsx("span",{})}),(m==="blocked"||m==="error")&&n.jsx("span",{className:"secure-image__fallback",role:"img","aria-label":v,children:m==="blocked"?n.jsx(Ap,{size:18}):n.jsx(mi,{size:18})})]})}const qh={note:js,text:It,"ai-task":Nn,image:Mn,mask:Mn,video:Tn,embed:Rn,code:An,markdown:It,"csv-table":It,memo:js,pdf:It,file:zr,directory:Mp,"template-launcher":It,"remote-monitor":vs,"remote-control":vs},jr=[{key:"Auto",label:"Auto Detect",description:"Infer whether this note is growth, revenue, build, or research work."},{key:"GeneralCompany",label:"General AI Company",description:"Balanced planning, practical work, and artifact production."},{key:"GrowthValidation",label:"Growth Validation",description:"Marketing loops, signals, messaging, distribution, and experiments."},{key:"RevenueAffiliate",label:"Revenue / Affiliate",description:"Affiliate discovery, keywords, content assets, and revenue experiments."},{key:"ProductBuild",label:"Product Build",description:"Specs, implementation-oriented work, artifacts, and approval gates."},{key:"ResearchOnly",label:"Research Only",description:"Evidence gathering, risks, synthesis, and recommendations."}],dd=500,Jh=48,Zh=new Set(["mindcanvasagent","agentcommand"]),Qh=new Set(["codenote","code-note"]),ef=["multidesktopmonitor","remotehubmonitor","remotefleetmonitor","smartviewmonitor"],tf=["remotedevice","remotefleetdevice","remotecontrol"],af=["top","right","bottom","left"];function nf(e){const t=Ln(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=Ln(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=Ln(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-monitor"||t==="remotefleetmonitor"||o==="fleet-monitor"||r==="remote-fleet@1"||Rc(e,["RemoteFleetViewMode","RemoteFleetHubStatus","RemoteFleetDevicesJson","RemoteFleetDeviceCount","RemoteFleetConnectedDeviceCount","RemoteFleetProjectionMode","RemoteFleetCanvasPagination","RemoteHub","RemoteRoute","RemotePage","RemoteVisibleBudget"])||Tc(e,ef,["remote","monitor"])}function of(e){const t=Ln(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=Ln(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=Ln(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-control"||t==="remotefleetdevice"||o==="fleet-device"||r==="remote-fleet-device@1"||Rc(e,["RemoteFleetDeviceId","RemoteFleetDeviceName","RemoteFleetDevicePlatform","RemoteFleetDeviceConnected","RemoteFleetDeviceCanControl","RemoteFleetSourceMonitorNodeId"])||Tc(e,tf,["remote","control"])}function Tc(e,t,o){const r=(e.tags??[]).map(b=>b.trim().toLowerCase()).filter(Boolean),d=o.every(b=>r.includes(b)),p=[e.title,e.body,e.sourceFilePath,e.assetUrl,...r].join(" ").toLowerCase().replace(/[^a-z0-9]+/g,"");return d||t.some(b=>p.includes(b))}function Ln(e,...t){const o=e.metadata??{};for(const d of t){const c=o[d];if(c!=null)return String(c)}const r=new Set(t.map(d=>d.toLowerCase()));for(const[d,c]of Object.entries(o))if(r.has(d.toLowerCase())&&c!==void 0&&c!==null)return String(c);return""}function Rc(e,t){const o=e.metadata??{},r=new Set(t.map(d=>d.toLowerCase()));return Object.entries(o).some(([d,c])=>r.has(d.toLowerCase())&&c!==void 0&&c!==null&&String(c).trim()!=="")}const Zr=[{key:"coral",label:"Coral",swatch:"#ff8052",ring:"rgba(255, 128, 82, 0.22)",surface:"#fff2eb",border:"rgba(255, 128, 82, 0.42)",ink:"#7c2d12"},{key:"amber",label:"Amber",swatch:"#f59e0b",ring:"rgba(245, 158, 11, 0.22)",surface:"#fffbeb",border:"rgba(245, 158, 11, 0.42)",ink:"#78350f"},{key:"sun",label:"Sun",swatch:"#ca8a04",ring:"rgba(202, 138, 4, 0.22)",surface:"#fef9c3",border:"rgba(202, 138, 4, 0.38)",ink:"#713f12"},{key:"sage",label:"Sage",swatch:"#65a30d",ring:"rgba(101, 163, 13, 0.22)",surface:"#f7fee7",border:"rgba(101, 163, 13, 0.38)",ink:"#365314"},{key:"mint",label:"Mint",swatch:"#10b981",ring:"rgba(16, 185, 129, 0.22)",surface:"#ecfdf5",border:"rgba(16, 185, 129, 0.36)",ink:"#064e3b"},{key:"sky",label:"Sky",swatch:"#3b82f6",ring:"rgba(59, 130, 246, 0.22)",surface:"#eff6ff",border:"rgba(59, 130, 246, 0.36)",ink:"#1e3a8a"},{key:"indigo",label:"Indigo",swatch:"#6366f1",ring:"rgba(99, 102, 241, 0.22)",surface:"#eef2ff",border:"rgba(99, 102, 241, 0.36)",ink:"#312e81"},{key:"violet",label:"Violet",swatch:"#8b5cf6",ring:"rgba(139, 92, 246, 0.22)",surface:"#f5f3ff",border:"rgba(139, 92, 246, 0.36)",ink:"#4c1d95"},{key:"rose",label:"Rose",swatch:"#f43f5e",ring:"rgba(244, 63, 94, 0.22)",surface:"#fff1f2",border:"rgba(244, 63, 94, 0.36)",ink:"#881337"},{key:"gray",label:"Gray",swatch:"#6b7280",ring:"rgba(107, 114, 128, 0.22)",surface:"#f9fafb",border:"rgba(107, 114, 128, 0.32)",ink:"#374151"},{key:"slate",label:"Slate",swatch:"#64748b",ring:"rgba(100, 116, 139, 0.22)",surface:"#f8fafc",border:"rgba(100, 116, 139, 0.32)",ink:"#334155"}],sf=g.memo(function({node:t,selected:o,pulsing:r,connectionDraft:d,onSelect:c,onDragStart:p,onResizeStart:b,onPatch:m,onDelete:y,onDuplicate:k,onRun:L,onPin:v,onConnectorDragStart:B,onOpenResult:D,onToggleAiReference:$,onCopyNode:F,onCopyEmbedReference:H,onFitNodeHeight:W,onToggleNodeExpanded:ie,onToggleWordWrap:se,onStageCompany:Ne,onOpenCompanyGraph:pe,onSyncCompanyGoal:ze,onRefreshCompany:At,onSetCompanyStatus:Ue,onRemoveCompany:K,onOpenAsset:V,onOpenDirectorySettings:de,onScanDirectory:te,onCreateRemoteControl:Mt,onGenerateTemplateCard:U}){var Po,lt,Yt,Ta,sn,ra,rn,ne,Ke,ln,Yn,j,X,oe,Eo,Fe,Gt,Kt,dn,cn,Gn,Kn,un,Xn,Ra,qn,mn,La,ia,_e,Pe,Pa,Jn,Ea,pn,gn;const He=String(((Po=t.metadata)==null?void 0:Po.AutomationNodeKind)||((lt=t.metadata)==null?void 0:lt.AutomationTemplateKey)||((Yt=t.metadata)==null?void 0:Yt.AutomationInferredKind)||"").trim().toLowerCase(),Tt=String(((Ta=t.metadata)==null?void 0:Ta.SemanticType)||((sn=t.metadata)==null?void 0:sn.semanticType)||"").trim().toLowerCase(),ge=t.kind==="memo"&&Zh.has(Tt),We=t.kind==="memo"&&Qh.has(Tt),at=String(((ra=t.metadata)==null?void 0:ra.AgentCommandStatus)||"Draft"),nt=String(((rn=t.metadata)==null?void 0:rn.AgentCommandMode)||"Task"),z=String(((ne=t.metadata)==null?void 0:ne.AgentCommandRequestedRole)||"Researcher"),gt=String(((Ke=t.metadata)==null?void 0:Ke.CodeNoteStatus)||"Draft"),ba=String(((ln=t.metadata)==null?void 0:ln.CodeNoteSyncState)||"Unlinked"),Ga=String(((Yn=t.metadata)==null?void 0:Yn.CodeNoteKind)||"Feature"),ya=ge?Nn:We?An:He==="image-generate"?Mn:He==="video-generate"?Tn:qh[t.kind],Bn=d&&d.from!==t.id,xa=t.kind==="ai-task",Ka=t.kind==="pdf"||t.kind==="file"||t.kind==="directory",Me=nf(t),Xa=of(t),Ve=Me||Xa,Ca=Me?"monitor":Xa?"control":"",ve=xa?"result":"context",fe=((j=d==null?void 0:d.target)==null?void 0:j.id)===t.id?d.target.side:null,Ds=(d==null?void 0:d.from)===t.id,Ae=t.kind==="template-launcher"||String(((X=t.metadata)==null?void 0:X.semanticType)||((oe=t.metadata)==null?void 0:oe.SemanticType)||"").toLowerCase()==="templatelauncher",Be=t.kind==="video",Te=t.kind==="embed",Rt=t.kind==="mask",be=t.kind==="memo",ot=t.kind==="markdown",st=t.kind==="csv-table",De=be?hf(t):null,me=g.useRef(null),Dn=Be?Lc(t):"",Ze=Be?bf(t):"",Oe=Te?yf(t):"",Lt=Te?xf(t):"",Io=Te?Cf(t,Oe):"",Ee=Te?Sf(t):"",Re=(((Eo=t.imageStack)==null?void 0:Eo.variants)??[]).filter(x=>!!x.imageUrl),ht=Re.find(x=>{var _;return x.variantId===((_=t.imageStack)==null?void 0:_.activeVariantId)})??Re[0]??null,$t=t.kind==="image"||Rt?(ht==null?void 0:ht.imageUrl)||Ci(t):"",Sa=ht?Re.findIndex(x=>x.variantId===ht.variantId):-1,qa=!$t&&!Ka&&!Ve&&!Ae&&!Be&&!Te,No=qa&&!be,Qt=t.isExpanded===!1&&Number(t.originalHeight??0)>t.height+1,On=!Ve&&!["image","mask","video","embed","pdf","file","directory","template-launcher","remote-monitor","remote-control"].includes(t.kind),rt=t.aiEnabled!==!1,Ye=ff(t),Qe=!!(t.isChunkedText||((Fe=t.metadata)==null?void 0:Fe.IsChunkedText)==="true"),wa=Number(t.totalLineCount??((Gt=t.metadata)==null?void 0:Gt.TotalLineCount)??0),Ao=t.sourceFilePath||((Kt=t.metadata)==null?void 0:Kt.FileName)||t.title,ye=Qe?n.jsxs("div",{className:"node-chunked-text-state","data-testid":"node-chunked-text-state",title:Ao,children:[n.jsx(It,{size:12}),n.jsx("strong",{children:"Chunked text"}),Number.isFinite(wa)&&wa>0&&n.jsxs("span",{children:[wa.toLocaleString()," lines"]})]}):null,ea=t.kind==="directory"?(dn=t.metadata)==null?void 0:dn.Include:null,Ja=t.kind==="directory"?(cn=t.metadata)==null?void 0:cn.Exclude:null,Fn=t.kind==="directory"?(Gn=t.metadata)==null?void 0:Gn.DirectoryFileCount:null,Le=t.kind==="directory"?(Kn=t.metadata)==null?void 0:Kn.DirectoryDirCount:null,Pt=t.kind==="directory"?(un=t.metadata)==null?void 0:un.DirectoryLastScanUtc:null,[Za,Qa]=g.useState(!1),[en,Ge]=g.useState(null),[Os,$n]=g.useState(((Xn=t.metadata)==null?void 0:Xn.CompanyExecutionMode)||"Auto"),[ka,tn]=g.useState(((Ra=t.metadata)==null?void 0:Ra.CompanySubAgents)!=="false"),[ta,va]=g.useState(!1),[Et,an]=g.useState(null),ja=g.useMemo(()=>st?cf(t.body,Et):null,[Et,st,t.body]),le=g.useMemo(()=>Ae?Jd(t.body):null,[Ae,t.body]),ft=(le==null?void 0:le.options.find(x=>x.id===le.selectedOptionId))??(le==null?void 0:le.options[0])??null,aa=Vm(le),zt=jr.find(x=>x.key===Os)||jr[0],Ut=String(((qn=t.metadata)==null?void 0:qn.CompanyStatus)||(t.companyMode?"Staged":"")).trim(),Ht=Ut.toLowerCase(),na=Ht==="paused",bt=Ht==="archived",Fs=x=>{x.stopPropagation();const _=x.currentTarget.getBoundingClientRect();Ge(lf(_)),Qa(re=>!re)},$s=x=>{x.stopPropagation(),Ne(t.id,{executionMode:zt.key,enableSubAgents:ka}),Qa(!1)},Mo=x=>{x.stopPropagation(),pe(t.id)},Ia=(x,_)=>{_.stopPropagation();const re=Re.find(xt=>xt.variantId===x);!re||!t.imageStack||re.variantId===t.imageStack.activeVariantId||(f.emit("node.imageStack.variant",{nodeId:t.id,variantId:re.variantId,variantCount:Re.length}),m(t.id,{imageUrl:re.imageUrl,imageStack:{...t.imageStack,activeVariantId:re.variantId,variants:Re,updatedAtUtc:new Date().toISOString()},metadata:{...t.metadata??{},ImageStackActiveVariantId:re.variantId}}))},zs=(x,_)=>{if(_.stopPropagation(),!!be){if((De==null?void 0:De.key)===x){va(!1);return}f.emit("node.memoColor.changed",{id:t.id,colorKey:x}),m(t.id,{metadata:{...t.metadata??{},memoColor:x,memoColorIsCustom:"true"}}),va(!1)}},zn=x=>{var Xe,St;if(x.stopPropagation(),!ge)return;const _=(t.body||t.title||"Agent command objective").trim(),re=["Clarify the objective and constraints.","Collect linked canvas context or code notes.","Draft an execution plan before external adapter use."],xt=["canvas-context","agent-command-planning","adapter-gated-execution"],dt=["Canvas.ListAgentCommands","Canvas.UpdateAgentCommand","Canvas.PlanAgentCommand","Canvas.SetAgentCommandState"],Ct=["MindCanvasAgent",nt,z],$e=["Local React plan staged for this Agent Command.",`Role: ${z}`,`Mode: ${nt}`,`Objective: ${_.slice(0,220)}`,"External execution remains adapter-gated until LocalBridge/agent runtime is available."].join(`
2
2
  `);f.emit("mindcanvas.agentCommand.planned",{id:t.id,mode:nt,requestedRole:z,adapterState:((Xe=t.metadata)==null?void 0:Xe.AdapterState)??"adapter-gated"}),m(t.id,{tags:["Agent Command",z,"Planned"],metadata:{...t.metadata??{},AgentCommandStatus:"Planned",AgentCommandPlannerSummary:$e,AgentCommandPlanSteps:JSON.stringify(re),AgentCommandPlannedSkills:JSON.stringify(xt),AgentCommandPlannedTools:JSON.stringify(dt),AgentCommandPlannedConcepts:JSON.stringify(Ct),AgentCommandLastExplorationPhase:"planned-local",AdapterState:((St=t.metadata)==null?void 0:St.AdapterState)??"adapter-gated"}})},Na=x=>{var dt,Ct;if(x.stopPropagation(),!ge)return;const _=new Date().toISOString(),re=[`Agent Command: ${t.title||"Agent"}`,`Status: Completed locally at ${_}`,"","This React MindCanvas node preserves the original Agent Command workflow shape.","No external agent runtime was invoked; execution remains adapter-gated.","","Next action:","Connect LocalBridge/agent runtime or move this command into CodeMaster for a deeper implementation run."].join(`
3
3
  `),xt=[`${_} Local React execution staged.`,`${_} Adapter gated; no external tools invoked.`];f.emit("mindcanvas.agentCommand.executed.local",{id:t.id,mode:nt,requestedRole:z,adapterState:((dt=t.metadata)==null?void 0:dt.AdapterState)??"adapter-gated"}),m(t.id,{status:"done",result:re,tags:["Agent Command",z,"Completed"],metadata:{...t.metadata??{},AgentCommandStatus:"Completed",AgentCommandLastExecutedAtUtc:_,AgentCommandConsoleLogs:JSON.stringify(xt),AgentCommandResultLinks:JSON.stringify([]),AdapterState:((Ct=t.metadata)==null?void 0:Ct.AdapterState)??"adapter-gated"}})},Aa=(x,_,re,xt)=>{var Ct,$e,Xe;if(x.stopPropagation(),!We)return;const dt=_==="Implemented"?JSON.stringify([`local-code-note://${t.id}/implementation-handoff.md`]):((Ct=t.metadata)==null?void 0:Ct.CodeNoteOutputArtifacts)||"[]";f.emit("mindcanvas.codeNote.state",{id:t.id,status:_,syncState:re,reason:xt,adapterState:(($e=t.metadata)==null?void 0:$e.AdapterState)??"local-canvas-only"}),m(t.id,{tags:["Code Note",_,re],metadata:{...t.metadata??{},CodeNoteStatus:_,CodeNoteSyncState:re,CodeNoteOutputArtifacts:dt,..._==="Implemented"||_==="Reviewed"?{CodeNoteLastAppliedAtUtc:new Date().toISOString()}:{},AdapterState:((Xe=t.metadata)==null?void 0:Xe.AdapterState)??"local-canvas-only"}})},Wt=()=>{tn(x=>!x)},To=async x=>{if(x.stopPropagation(),!Ze||!me.current){f.emit("node.video.unavailable",{id:t.id,reason:Ze?"element-missing":"source-missing"});return}try{await me.current.play(),f.emit("node.video.play",{id:t.id,sourceKind:ud(Ze)})}catch(_){f.emit("node.video.unavailable",{id:t.id,reason:_ instanceof Error?_.message:String(_)})}},Ma=x=>{if(x.stopPropagation(),!Ze||!me.current){f.emit("node.video.unavailable",{id:t.id,reason:Ze?"element-missing":"source-missing"});return}me.current.pause(),f.emit("node.video.pause",{id:t.id,sourceKind:ud(Ze)})},oa=x=>{x.stopPropagation(),Oe&&H(t.id,Oe)},Un=x=>{m(t.id,{body:JSON.stringify(x),metadata:{...t.metadata??{},templateLauncherSelectedOptionId:x.selectedOptionId??""}})},it=(x,_)=>{if(_.stopPropagation(),!le)return;const re=Km(le,x);Un(re),f.emit("templateCard.option.select",{nodeId:t.id,optionId:re.selectedOptionId??null})},Hn=(x,_)=>{if(!le)return;const re=Xm(le,x,_);Un(re),f.emit("templateCard.input.patch",{nodeId:t.id,key:x})},Vt=x=>{x.stopPropagation(),!(!le||aa)&&U(t.id,le.selectedOptionId??null,le.inputValues)},sa=On&&Za?n.jsxs("div",{className:"node-company-launcher","data-testid":"node-company-launcher",style:en?{left:en.left,top:en.top}:void 0,onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[n.jsx("div",{className:"node-company-launcher__eyebrow",children:"Run As Company"}),n.jsx("h4",{children:"Turn this note into a background AI company"}),n.jsx("p",{children:"Pick the operating mode to stage on this node. External CompanyCore execution stays adapter-gated."}),n.jsx("div",{className:"node-company-mode-list",children:jr.map(x=>n.jsxs("button",{type:"button",className:x.key===zt.key?"is-selected":"","data-company-mode":x.key,onClick:()=>$n(x.key),children:[n.jsx("strong",{children:x.label}),n.jsx("span",{children:x.description})]},x.key))}),n.jsxs("button",{type:"button",className:"node-company-subagents","aria-pressed":ka,onClick:x=>{x.stopPropagation(),Wt()},children:[n.jsx("span",{className:"node-company-toggle-indicator","aria-hidden":"true",children:ka?"On":"Off"}),n.jsxs("span",{children:[n.jsx(oc,{size:13}),"Enable sub-agents for exploration waves and specialist handoff"]})]}),n.jsxs("div",{className:"node-company-launcher__actions",children:[n.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>Qa(!1),children:"Cancel"}),n.jsx("button",{type:"button",className:"btn btn-primary","data-testid":"node-company-run-confirm",onClick:$s,children:"Stage Company"})]})]}):null,Wn={width:t.width,height:t.height,transform:`translate3d(${t.x}px, ${t.y}px, 0)`,...De?{"--memo-bg":De.surface,"--memo-border":De.border,"--memo-ink":De.ink,"--memo-ring":De.ring,"--memo-accent":De.swatch}:{}},yt=n.jsxs(n.Fragment,{children:[No&&n.jsx("button",{type:"button",title:rt?"Disable AI reference":"Enable AI reference","aria-label":rt?"Disable AI reference":"Enable AI reference",className:rt?"is-active-ai":"is-inactive-ai",onPointerDown:x=>x.stopPropagation(),onClick:()=>$(t.id),children:n.jsx(Tp,{size:13})}),be&&n.jsx("button",{type:"button",title:"Change memo color","aria-label":"Change memo color","aria-pressed":ta,className:"is-memo-color-action","data-testid":"node-memo-color-open",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),va(_=>!_)},children:n.jsx(sc,{size:13})}),t.kind==="code"&&n.jsx("button",{type:"button",title:t.wordWrap===!1?"Enable word wrap":"Disable word wrap","aria-label":t.wordWrap===!1?"Enable word wrap":"Disable word wrap",onPointerDown:x=>x.stopPropagation(),onClick:()=>se(t.id),children:n.jsx(Rp,{size:13})}),n.jsx("button",{type:"button",title:$t?"Copy image to clipboard":"Copy content","aria-label":$t?"Copy image to clipboard":"Copy content",onPointerDown:x=>x.stopPropagation(),onClick:()=>F(t.id),children:n.jsx(So,{size:13})}),n.jsx("button",{type:"button",title:"Duplicate node","aria-label":"Duplicate node","data-testid":"node-duplicate",onPointerDown:x=>x.stopPropagation(),onClick:()=>k(t.id),children:n.jsx(rc,{size:13})}),qa&&n.jsx("button",{type:"button",title:"Fit text height","aria-label":"Fit text height",onPointerDown:x=>x.stopPropagation(),onClick:()=>W(t.id),children:n.jsx(Lp,{size:13})}),qa&&n.jsx("button",{type:"button",title:Qt?"Expand node":"Collapse node","aria-label":Qt?"Expand node":"Collapse node","aria-pressed":Qt,onPointerDown:x=>x.stopPropagation(),onClick:()=>ie(t.id),children:Qt?n.jsx(Ul,{size:13}):n.jsx(Pp,{size:13})}),xa&&n.jsx("button",{type:"button",title:"Run node",onPointerDown:x=>x.stopPropagation(),onClick:()=>L(t.id),children:n.jsx(ha,{size:13})}),On&&n.jsx("button",{type:"button",title:t.companyMode?"Open Company graph":"Run this note as Company","aria-label":t.companyMode?"Open Company graph":"Run this note as Company",className:t.companyMode?"is-company-action":"","data-testid":t.companyMode?"node-company-graph-open":"node-company-run-open",onPointerDown:x=>x.stopPropagation(),onClick:t.companyMode?Mo:Fs,children:n.jsx(Hl,{size:13})}),n.jsx("button",{type:"button",title:"Delete node","aria-label":"Delete node","data-testid":"node-delete",onPointerDown:x=>x.stopPropagation(),onClick:()=>y(t.id),children:n.jsx(Is,{size:13})})]}),nn=xa?n.jsxs("div",{className:"node-result-row","data-testid":"node-external-pins",children:[n.jsxs("button",{className:`node-pin node-pin--context ${Bn?"can-receive":""}`,type:"button",title:"Context input",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),v(t.id,"context","left")},children:[n.jsx(Wl,{size:10}),"Context"]}),n.jsxs("button",{className:`node-pin node-pin--result ${t.result?"has-result":""}`,type:"button",title:"Drag to connect this result to an input pin. Click to view the result.","data-testid":"node-result-open",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),t.result?D(t.id):v(t.id,"result","right")},children:[n.jsx(Ul,{size:11}),"Result"]})]}):n.jsxs("button",{className:`node-context-source ${d?"can-receive":""}`,type:"button",title:"Use this node as AI Task context",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),v(t.id,"context","right")},children:[n.jsx(Wl,{size:10}),n.jsx("span",{children:"Context"})]}),on=Ve?null:n.jsx("div",{className:"node-connector-handles","data-testid":"node-connector-handles","aria-hidden":!1,children:af.map(x=>n.jsx("button",{type:"button",className:`node-connector-handle node-connector-handle--${x} ${Ds&&(d==null?void 0:d.fromSide)===x?"is-source":""} ${fe===x?"is-target":""}`,title:`Drag from ${x} to connect`,"aria-label":`Drag ${x} connector`,"data-testid":"node-connector-handle","data-node-connector":"true","data-connector-node-id":t.id,"data-connector-side":x,"data-connector-kind":ve,onPointerDown:_=>B(t.id,x,ve,_)},x))}),Vn=Rt||Re.length>1||Te||Be?n.jsxs("div",{className:"node-surface-badges","data-testid":"node-surface-badges",children:[Rt&&n.jsx("span",{className:"node-mask-badge",title:"Image edit mask reference",children:"Mask"}),Re.length>1&&n.jsxs("span",{className:"node-image-stack-badge",title:"Image stack variants",children:[Math.max(1,Sa+1),"/",Re.length]}),Te&&n.jsx("span",{className:"node-embed-badge",children:Lt==="youtube"?"YouTube":"Embed"}),Be&&n.jsx("span",{className:"node-video-badge",children:((mn=t.metadata)==null?void 0:mn.MediaModel)||((La=t.metadata)==null?void 0:La.MediaProvider)||"Video"})]}):null,et=Re.length>1||Te||Be||Ka?n.jsxs("div",{className:"node-surface-actions","data-testid":"node-surface-actions",children:[Re.length>1&&n.jsx("div",{className:"node-image-stack-rail","aria-label":"Image stack variants",children:Re.map((x,_)=>n.jsx("button",{type:"button",className:x.variantId===(ht==null?void 0:ht.variantId)?"is-active":"",title:x.title||x.caption||`Variant ${_+1}`,"aria-label":`Show image variant ${_+1}`,onPointerDown:re=>re.stopPropagation(),onClick:re=>Ia(x.variantId,re),children:n.jsx(vr,{src:x.imageUrl,traceId:`${t.id}:${x.variantId||_}`,kind:"image-stack-variant",testId:"node-image-stack-thumb"})},x.variantId||`${x.imageUrl}-${_}`))}),Te&&n.jsxs("div",{className:"node-embed-actions",children:[n.jsxs("button",{type:"button",title:"Open embed","aria-label":"Open embed",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),Oe&&V(t,"external")},children:[n.jsx(Rn,{size:13}),n.jsx("span",{children:"Open"})]}),n.jsxs("button",{type:"button",title:"Copy URL","aria-label":"Copy URL",onPointerDown:x=>x.stopPropagation(),onClick:oa,children:[n.jsx(So,{size:13}),n.jsx("span",{children:"Copy URL"})]})]}),Be&&n.jsxs("div",{className:"node-video-actions",children:[n.jsxs("button",{type:"button",title:"Play video","aria-label":"Play video","data-testid":"node-video-play",onPointerDown:x=>x.stopPropagation(),onClick:To,children:[n.jsx(ha,{size:13}),n.jsx("span",{children:"Play"})]}),n.jsxs("button",{type:"button",title:"Pause video","aria-label":"Pause video","data-testid":"node-video-pause",onPointerDown:x=>x.stopPropagation(),onClick:Ma,children:[n.jsx(vo,{size:13}),n.jsx("span",{children:"Pause"})]})]}),Ka&&n.jsxs("div",{className:"node-asset-actions",children:[t.kind==="pdf"&&n.jsxs("button",{type:"button",title:"Preview PDF","data-testid":"node-pdf-preview",onPointerDown:x=>x.stopPropagation(),onClick:()=>V(t,"preview"),children:[n.jsx(Ep,{size:13}),n.jsx("span",{children:"Preview"})]}),t.kind!=="directory"&&n.jsxs("button",{type:"button",title:"Open in new tab",onPointerDown:x=>x.stopPropagation(),onClick:()=>V(t,"external"),children:[n.jsx(Rn,{size:13}),n.jsx("span",{children:"Open"})]}),t.kind==="directory"&&n.jsxs("button",{type:"button",title:"Scan folder","data-testid":"directory-scan",onPointerDown:x=>x.stopPropagation(),onClick:()=>te(t.id),children:[n.jsx(In,{size:13}),n.jsx("span",{children:"Scan"})]}),t.kind==="directory"&&n.jsxs("button",{type:"button",title:"Folder scan settings","data-testid":"directory-settings-open",onPointerDown:x=>x.stopPropagation(),onClick:()=>de(t.id),children:[n.jsx(fs,{size:13}),n.jsx("span",{children:"Settings"})]})]})]}):null,Ro=Ve?null:n.jsxs("div",{className:"node-external-action-rail","data-testid":"node-external-action-rail",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[et,n.jsx("div",{className:"node-external-rail__pins",children:nn}),n.jsx("div",{className:"node-actions","data-testid":"node-actions",children:yt}),ge&&n.jsxs("div",{className:"node-agent-command-actions","data-testid":"node-agent-command-actions",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[n.jsx("button",{type:"button","data-testid":"node-agent-command-plan","data-agent-command-action":"plan",onClick:zn,children:"Plan"}),n.jsx("button",{type:"button","data-testid":"node-agent-command-execute","data-agent-command-action":"execute",disabled:at==="Running",onClick:Na,children:"Execute"})]}),We&&n.jsxs("div",{className:"node-code-note-actions","data-testid":"node-code-note-actions",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[n.jsx("button",{type:"button","data-testid":"node-code-note-approve","data-code-note-action":"approve",onClick:x=>Aa(x,"Approved","Planned","approve-local"),children:"Approve"}),n.jsx("button",{type:"button","data-testid":"node-code-note-review","data-code-note-action":"review",onClick:x=>Aa(x,"Reviewed","InSync","review-local"),children:"Review"}),n.jsx("button",{type:"button","data-testid":"node-code-note-out-of-sync","data-code-note-action":"out-of-sync",onClick:x=>Aa(x,gt,"OutOfSync","mark-out-of-sync-local"),children:"Out of sync"})]}),t.companyMode&&n.jsxs("div",{className:"node-company-quick-actions","data-testid":"node-company-quick-actions","data-company-status":Ut||"Staged",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[n.jsx("button",{type:"button",title:"Update Company goal from this note","aria-label":"Update Company goal from this note","data-testid":"node-company-sync-goal",disabled:bt,onClick:()=>ze(t.id),children:n.jsx(ic,{size:12})}),n.jsx("button",{type:"button",title:"Refresh Company status","aria-label":"Refresh Company status","data-testid":"node-company-refresh",onClick:()=>At(t.id),children:n.jsx(In,{size:12})}),bt?n.jsx("button",{type:"button",title:"Company is archived","aria-label":"Company is archived","data-testid":"node-company-archived",disabled:!0,children:n.jsx(Ur,{size:12})}):na?n.jsx("button",{type:"button",title:"Resume Company","aria-label":"Resume Company","data-testid":"node-company-resume",onClick:()=>Ue(t.id,"Staged"),children:n.jsx(ha,{size:12})}):n.jsx("button",{type:"button",title:"Pause Company","aria-label":"Pause Company","data-testid":"node-company-pause",onClick:()=>Ue(t.id,"Paused"),children:n.jsx(vo,{size:12})}),!bt&&n.jsx("button",{type:"button",title:"Archive Company","aria-label":"Archive Company","data-testid":"node-company-archive",onClick:()=>Ue(t.id,"Archived"),children:n.jsx(Ur,{size:12})}),n.jsx("button",{type:"button",title:"Remove Company from this note","aria-label":"Remove Company from this note","data-testid":"node-company-remove",onClick:()=>K(t.id),children:n.jsx(jt,{size:12})})]})]}),Lo=Ve?null:n.jsx("div",{className:"node-external-rail","data-testid":"node-external-rail",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:n.jsxs("div",{className:"node-external-rail__meta",children:[n.jsxs("div",{className:"node-tags","data-testid":"node-external-tags",children:[(t.tags??[t.kind]).slice(0,3).map(x=>n.jsx("span",{children:x},x)),t.status&&n.jsx("span",{className:`node-status node-status--${t.status}`,children:t.status})]}),Vn,ye,ge&&n.jsxs("div",{className:"node-agent-command-state","data-testid":"node-agent-command-state","data-agent-command-status":at,"data-agent-command-mode":nt,"data-agent-command-role":z,"data-agent-command-adapter-state":((ia=t.metadata)==null?void 0:ia.AdapterState)||"adapter-gated",children:[n.jsx(Nn,{size:12}),n.jsx("strong",{children:"AC"}),n.jsx("span",{children:at}),n.jsx("span",{children:nt}),n.jsx("span",{children:z})]}),We&&n.jsxs("div",{className:"node-code-note-state","data-testid":"node-code-note-state","data-code-note-status":gt,"data-code-note-sync-state":ba,"data-code-note-kind":Ga,"data-code-note-adapter-state":((_e=t.metadata)==null?void 0:_e.AdapterState)||"local-canvas-only",children:[n.jsx(An,{size:12}),n.jsx("strong",{children:"CN"}),n.jsx("span",{children:gt}),n.jsx("span",{children:ba}),n.jsx("span",{children:Ga})]}),t.companyMode&&n.jsxs("div",{className:"node-company-state","data-testid":"node-company-state",children:[n.jsx(Hl,{size:12}),n.jsx("strong",{children:((Pe=t.metadata)==null?void 0:Pe.CompanyExecutionModeLabel)||"Company staged"}),n.jsx("span",{children:((Pa=t.metadata)==null?void 0:Pa.CompanySubAgents)==="false"?"single-agent":"sub-agents"})]})]})});return n.jsxs("article",{className:`canvas-node canvas-node--${t.kind} ${Ve?"canvas-node--remote-surface":""} ${Me?"canvas-node--remote-monitor-surface":""} ${Xa?"canvas-node--remote-control-surface":""} ${He?`canvas-node--automation-${He}`:""} ${ge?"canvas-node--agent-command":""} ${We?"canvas-node--code-note":""} ${o?"is-selected":""} ${r?"is-pulsing":""} ${rt?"":"is-ai-disabled"} ${t.wordWrap===!1?"is-nowrap":""} ${Qt?"is-collapsed":""} ${t.companyMode?`is-company-${t.companyMode}`:""}`,style:Wn,"data-node-id":t.id,"data-automation-node-kind":He||void 0,"data-automation-external-policy":((Jn=t.metadata)==null?void 0:Jn.AutomationExternalActionPolicy)||void 0,"data-media-generation-contract":((Ea=t.metadata)==null?void 0:Ea.MediaGenerationContract)||void 0,"data-agent-command-node":ge?"true":void 0,"data-agent-command-status":ge?at:void 0,"data-agent-command-mode":ge?nt:void 0,"data-agent-command-role":ge?z:void 0,"data-code-note-node":We?"true":void 0,"data-code-note-status":We?gt:void 0,"data-code-note-sync-state":We?ba:void 0,"data-code-note-kind":We?Ga:void 0,"data-remote-surface-chrome":Ve?"self-contained":void 0,"data-remote-surface-kind":Ca||void 0,"data-remote-surface-title-owner":Ve?"inner-remote-view":void 0,"data-remote-surface-scroll-owner":Ve?"remote-page-rail":void 0,onPointerDown:x=>{c(t.id,x.shiftKey||x.metaKey||x.ctrlKey),p(t.id,x)},onDoubleClick:x=>{if(t.kind!=="directory")return;const _=x.target instanceof HTMLElement?x.target:null;_!=null&&_.closest('button,input,textarea,select,[contenteditable="true"],[contenteditable=""]')||(x.stopPropagation(),te(t.id))},children:[!Ve&&n.jsxs("div",{className:"node-header",children:[n.jsx("span",{className:"node-kind",children:n.jsx(ya,{size:14})}),n.jsx("input",{value:t.title,"aria-label":"Node title",readOnly:Ae,onPointerDown:x=>x.stopPropagation(),onChange:x=>{Ae||m(t.id,{title:x.target.value})}})]}),sa&&typeof document<"u"?Bm.createPortal(sa,document.body):sa,be&&ta&&De&&n.jsx("div",{className:"node-memo-palette","data-testid":"node-memo-palette",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:Zr.map(x=>n.jsx("button",{type:"button",className:x.key===De.key?"is-active":"",title:`${x.label} memo color`,"aria-label":`${x.label} memo color`,"aria-pressed":x.key===De.key,"data-memo-color":x.key,style:{"--memo-swatch":x.swatch,"--memo-swatch-ring":x.ring},onPointerDown:_=>_.stopPropagation(),onClick:_=>zs(x.key,_)},x.key))}),$t?n.jsx("div",{className:`node-image-wrap ${Re.length>1?"node-image-wrap--stack":""} ${Rt?"node-image-wrap--mask":""}`,"data-testid":Rt?"node-mask-preview":Re.length>1?"node-image-stack":void 0,children:n.jsx(vr,{src:$t,traceId:t.id,kind:Rt?"mask":"node-image",testId:"node-secure-image"})}):Me?n.jsx(Ym,{node:t,onPatch:m,onCreateRemoteControl:Mt}):Xa?n.jsx(Gm,{node:t,onPatch:m}):Ae?n.jsx("div",{className:"node-template-card","data-testid":"node-template-card",children:le&&ft?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"node-template-card__summary",children:[n.jsx("strong",{children:le.prompt||le.description}),n.jsx("span",{children:ft.description||le.description})]}),n.jsx("div",{className:"node-template-card__options","data-testid":"node-template-card-options",children:le.options.map(x=>n.jsxs("button",{type:"button",className:x.id===ft.id?"is-active":"","data-testid":"node-template-card-option","data-option-id":x.id,onPointerDown:_=>_.stopPropagation(),onClick:_=>it(x.id,_),children:[n.jsx("strong",{children:x.label}),n.jsx("span",{children:x.description})]},x.id||x.templateId))}),n.jsxs("div",{className:"node-template-card__inputs","data-testid":"node-template-card-inputs",children:[ft.inputs.map(x=>n.jsx(rf,{input:x,value:le.inputValues[x.key]??"",onChange:_=>Hn(x.key,_)},x.key)),ft.inputs.length===0&&n.jsx("p",{className:"node-template-card__empty",children:le.noInputsLabel||"No inputs needed."})]}),aa&&n.jsx("div",{className:"node-template-card__validation",children:aa}),n.jsxs("button",{type:"button",className:"node-template-card__generate","data-testid":"node-template-card-generate",disabled:!!aa,onPointerDown:Vt,onClick:x=>x.stopPropagation(),children:[n.jsx(ha,{size:13}),n.jsx("span",{children:le.generateLabel||le.actionLabel||"Generate"})]})]}):n.jsx("div",{className:"node-template-card__missing",children:"Template card payload is unavailable."})}):Te?n.jsxs("div",{className:`node-embed-card ${Ee?"has-embed-thumbnail":"is-embed-link"}`,"data-testid":"node-embed-card",children:[n.jsx("div",{className:"node-embed-preview",children:Ee?n.jsx(vr,{src:Ee,traceId:t.id,kind:"embed-thumbnail",testId:"node-embed-thumbnail"}):n.jsxs("div",{className:"node-embed-placeholder",children:[n.jsx(Rn,{size:24}),n.jsx("strong",{children:Lt==="youtube"?"YouTube":"Web embed"}),n.jsx("span",{children:Io||Oe||"External link"})]})}),n.jsx("textarea",{value:t.body,"aria-label":"Embed URL or description",spellCheck:!1,onPointerDown:x=>x.stopPropagation(),onChange:x=>{const _=x.target.value;m(t.id,{body:_,assetUrl:_,metadata:{...t.metadata??{},sourceUrl:_,url:_}})}}),Oe&&n.jsx("span",{className:"node-embed-source",title:Oe,children:Oe})]}):Be?n.jsxs("div",{className:`node-video-card ${Ze?"has-video-source":"is-video-prompt"}`,"data-testid":"node-video-card",children:[Ze?n.jsx("video",{ref:me,src:Ze,className:"node-video-player","data-testid":"node-video-player",controls:!0,preload:"metadata",onPointerDown:x=>x.stopPropagation()}):n.jsxs("div",{className:"node-video-placeholder",children:[n.jsx(Tn,{size:24}),n.jsx("strong",{children:"Video prompt"}),n.jsx("span",{children:((pn=t.metadata)==null?void 0:pn.MediaModel)||((gn=t.metadata)==null?void 0:gn.MediaProvider)||"Adapter gated"})]}),n.jsx("textarea",{value:t.body,"aria-label":"Video prompt or source",spellCheck:!1,onPointerDown:x=>x.stopPropagation(),onChange:x=>m(t.id,{body:x.target.value})}),Ze&&n.jsx("span",{className:"node-video-source",title:Dn,children:Dn})]}):Ka?n.jsxs("div",{className:`node-asset-card node-asset-card--${t.kind}`,"data-testid":"node-asset-card",children:[n.jsx("div",{className:"node-asset-icon",children:n.jsx(ya,{size:28})}),n.jsxs("div",{className:"node-asset-copy",children:[n.jsx("strong",{title:Ye,children:Ye}),n.jsx("span",{children:t.kind==="directory"?"Directory reference":t.kind==="pdf"?"PDF document":"File reference"}),t.kind==="directory"&&(ea||Ja||Fn||Le||Pt)&&n.jsxs("dl",{className:"node-asset-meta","data-testid":"node-directory-meta",children:[(Fn||Le)&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Scanned"}),n.jsxs("dd",{children:[Number(Fn??0).toLocaleString()," files / ",Number(Le??0).toLocaleString()," folders"]})]}),ea&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Include"}),n.jsx("dd",{children:ea})]}),Ja&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Exclude"}),n.jsx("dd",{children:Ja})]}),Pt&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Updated"}),n.jsx("dd",{children:new Date(Pt).toLocaleString()})]})]})]})]}):st?n.jsxs("div",{className:"node-csv-card","data-testid":"node-csv-card",children:[n.jsx(df,{preview:ja,sort:Et,onSort:x=>{const _=(Et==null?void 0:Et.columnIndex)===x&&Et.direction==="asc"?"desc":"asc";an({columnIndex:x,direction:_}),f.emit("node.csvTable.sort",{id:t.id,columnIndex:x,direction:_})}}),n.jsx("textarea",{value:t.body,"aria-label":"CSV source",spellCheck:!1,wrap:"off",onPointerDown:x=>x.stopPropagation(),onChange:x=>m(t.id,{body:x.target.value})})]}):ot?n.jsxs("div",{className:"node-markdown-card","data-testid":"node-markdown-card",children:[n.jsx("div",{className:"node-markdown-preview mindcanvas-text-scrollable-view","data-testid":"node-markdown-preview","aria-label":"Markdown preview",children:n.jsx(pf,{value:t.body})}),n.jsx("textarea",{value:t.body,"aria-label":"Markdown source",spellCheck:!1,wrap:t.wordWrap===!1?"off":"soft",onPointerDown:x=>x.stopPropagation(),onChange:x=>m(t.id,{body:x.target.value})})]}):n.jsx(n.Fragment,{children:n.jsx("textarea",{value:t.body,"aria-label":"Node body",spellCheck:!1,wrap:t.wordWrap===!1?"off":"soft",onPointerDown:x=>x.stopPropagation(),onChange:x=>m(t.id,{body:x.target.value})})}),Lo,Ro,on,n.jsx("button",{type:"button",className:"node-resize-handle",title:"Resize node","aria-label":"Resize node",onPointerDown:x=>b(t.id,x)})]})});function rf({input:e,value:t,onChange:o}){return n.jsxs("label",{className:"node-template-card__field",children:[n.jsxs("span",{children:[n.jsx("strong",{children:e.label}),e.description&&n.jsx("small",{children:e.description})]}),e.type==="textarea"?n.jsx("textarea",{value:t,placeholder:e.placeholder,onPointerDown:r=>r.stopPropagation(),onChange:r=>o(r.target.value)}):e.type==="select"?n.jsx("select",{value:t,onPointerDown:r=>r.stopPropagation(),onChange:r=>o(r.target.value),children:(e.options??[]).map(r=>n.jsx("option",{value:r.value,children:r.label},r.value))}):n.jsx("input",{type:"text",value:t,placeholder:e.placeholder,onPointerDown:r=>r.stopPropagation(),onChange:r=>o(r.target.value)})]})}function lf(e){const r=Math.min(430,window.innerHeight-24),d=Math.max(12,window.innerWidth-332-12),c=Math.min(Math.max(e.right-332,12),d),p=e.bottom+8,b=e.top-r-8,m=Math.max(12,window.innerHeight-r-12),y=p<=m?p:Math.max(12,b);return{left:c,top:Math.min(y,m)}}function df({preview:e,sort:t,onSort:o}){return!e||e.headers.length===0?n.jsx("div",{className:"csv-table-scroll mindcanvas-text-scrollable-view","data-testid":"csv-table-preview","aria-label":"CSV table preview",children:n.jsx("p",{className:"node-md-empty",children:"Paste CSV source to preview a table."})}):n.jsxs("div",{className:"csv-table-scroll mindcanvas-text-scrollable-view","data-testid":"csv-table-preview","data-sort-column":(t==null?void 0:t.columnIndex)??"","data-sort-direction":(t==null?void 0:t.direction)??"","data-total-rows":e.totalRows,"data-rendered-rows":e.renderedRows,"aria-label":"CSV table preview",onPointerDown:r=>r.stopPropagation(),children:[n.jsxs("table",{className:"csv-table",children:[n.jsx("thead",{children:n.jsx("tr",{children:e.headers.map((r,d)=>{const c=(t==null?void 0:t.columnIndex)===d,p=c&&t.direction==="asc"?"descending":"ascending";return n.jsx("th",{"aria-sort":c?t.direction==="asc"?"ascending":"descending":"none",children:n.jsxs("button",{type:"button",className:`csv-table-header-button ${c?"is-active":""}`,"data-testid":`csv-table-sort-${d}`,"aria-label":`Sort CSV by ${r||`Column ${d+1}`} ${p}`,onClick:()=>o(d),children:[n.jsx("span",{children:r||`Column ${d+1}`}),c&&n.jsx("small",{children:t.direction==="asc"?"Asc":"Desc"})]})},`${r}-${d}`)})})}),n.jsx("tbody",{children:e.rows.map((r,d)=>n.jsx("tr",{children:e.headers.map((c,p)=>n.jsx("td",{className:"csv-table-cell",children:r[p]??""},`csv-cell-${d}-${p}`))},`csv-row-${d}`))})]}),n.jsxs("div",{className:"csv-table-status",children:[n.jsxs("span",{children:[e.totalRows.toLocaleString()," rows"]}),n.jsxs("span",{children:[e.columnCount.toLocaleString()," columns"]}),e.truncated&&n.jsxs("span",{children:["showing ",e.renderedRows.toLocaleString()]})]})]})}function cf(e,t){const o=uf(e,dd+1);if(o.length===0)return null;const r=Math.min(Jh,Math.max(...o.map(m=>m.length),1)),d=cd(o[0],r).map((m,y)=>m.trim()||`Column ${y+1}`),c=o.slice(1,dd+1).map(m=>cd(m,r)),p=t?[...c].sort((m,y)=>mf(m[t.columnIndex]??"",y[t.columnIndex]??"",t.direction)):c,b=Math.max(0,String(e||"").split(/\r\n|\n|\r/).filter(m=>m.length>0).length-1);return{headers:d,rows:p,totalRows:b,columnCount:r,renderedRows:p.length,truncated:b>p.length}}function uf(e,t){const o=[];let r=[],d="",c=!1;const p=String(e||"").replace(/\r\n/g,`
4
4
  `).replace(/\r/g,`