@mindexec/cli 0.2.370 → 0.2.371

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 Qu=Object.defineProperty;var em=(e,t,o)=>t in e?Qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var ul=(e,t,o)=>em(e,typeof t!="symbol"?t+"":t,o);import{j as n,r as g,a as tm}from"./vendor-react-BXzpOyCS.js";import{l as am,a as yt,s as Vt,b as nm,d as om,r as sm,c as rm,e as im,i as ml}from"./storage-C8yTm9Oa.js";import{r as Kr,g as ks,w as lm,a as Zs,d as pl,b as dm,t as qr,p as Id,v as cm,R as um,c as mm,u as pm,e as gm,f as gl,s as xt,i as sn,l as Qs,h as qn,j as Vo,k as Jn,m as Zn,n as Yo,o as Ra,q as hl,x as hm,y as Qn,z as fm,A as bm,B as ym,C as xm,D as Nd,E as Cm,F as Sm,G as ro,H as vr,I as km,J as wm,K as fl,L as jr,M as Ir,N as Ad,O as Xo,P as os,Q as io,S as bl,T as z,U as er,V as lo,W as vm,X as jm,Y as Im,Z as yl,_ as tr,$ as Nm,a0 as Am,a1 as Mm,a2 as Tm,a3 as Nr,a4 as Rm,a5 as Lm,a6 as Em,a7 as Pm,a8 as xl}from"./canvas-runtime-CcSvL_l6.js";import{e as _m,d as Dm}from"./vendor-msgpack-BE8aAsr3.js";import{R as f}from"./app-runtime-xD2Z3NdN.js";import{g as ar,A as Cl,a as ss}from"./index-BnDICYGs.js";import{r as Md}from"./productionAdapterConfig-C5jfk6oG.js";import{getSupabaseBrowserClient as ws}from"./supabaseAuthAdapter-Ct6_adpn.js";import{c as Bm,a as Om,r as Sl}from"./toolHandoff-D5e5f7t5.js";import{a as kl,s as Fm}from"./executionModeSettings-NJqurj-o.js";import{a as wl,p as $m}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";import{A as Yt,W as zm,c as Td,D as Um,E as Jr,R as pn,J as Zr,X as Ct,N as Ar,O as Hm,Q as gn,w as hn,I as fn,V as bn,l as gs,F as St,Y as Wm,Z as Mr,_ as hs,$ as yn,a0 as Rd,a1 as Vm,a2 as Ld,a3 as Ym,i as mo,a4 as Ed,a5 as Xm,a6 as vl,a7 as Gm,a8 as ua,a9 as jl,T as fs,aa as Il,ab as ho,ac as Km,ad as rs,ae as Pd,af as Tr,ag as qm,ah as Jm,f as Zm,ai as Qm,h as co,x as ep,aj as tp,ak as ap,al as Nl,am as Al,an as Ml,g as Tl,ao as Go,H as eo,ap as Ko,s as nr,aq as Rl,ar as np,as as or,at as Ll,au as qo,av as sr,aw as El,ax as Pl,ay as _l,az as op,aA as sp,aB as rp,aC as ip,n as lp,o as to,aD as dp,aE as cp,aF as up,aG as mp,aH as pp,aI as gp,aJ as hp,aK as fp}from"./vendor-icons-678PAT8P.js";const bp=1200,Ba="LocalBridgeOriginalNodeId";function kt(e){return typeof e=="object"&&e!==null}function da(e,t){const o=Number(e);return Number.isFinite(o)?o:t}function W(e){return typeof e=="string"?e:""}function _d(){return typeof window<"u"?{width:window.innerWidth||1280,height:window.innerHeight||720}:{width:1280,height:720}}function Rr(e,t,o){const r=Number(e),d=Number(t),m=Number(o);if(!Number.isFinite(r)||!Number.isFinite(d)||!Number.isFinite(m)||m<=0)return null;const p=1400/m,b=_d();return{x:b.width/2-r*p,y:b.height/2-d*p,scale:p}}function yp(e){return kt(e)?Rr(e.x??e.X,e.y??e.Y,e.z??e.Z):null}function xp(e){if(!kt(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=_d();return{x:(d.width/2-t)/r,y:(d.height/2-o)/r,z:1400/r}}function Cp(e){const t=String(e||"").trim();if(t)try{const o=JSON.parse(t);if(!kt(o))return;const r={};for(const[d,m]of Object.entries(o)){const p=yp(m);p&&(r[d]=p)}return Object.keys(r).length>0?r:void 0}catch{return}}function Sp(e){if(!e||Object.keys(e).length===0)return null;const t={};for(const[o,r]of Object.entries(e)){const d=xp(r);d&&(t[o]=d)}return Object.keys(t).length>0?JSON.stringify(t):null}function bs(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 vs(){return crypto.randomUUID()}function Qr(e){return kt(e)?"ContentType"in e||"Prompt"in e||"Response"in e||"PositionX"in e||"PositionY"in e||"SourceFilePath"in e||"ImageStack"in e:!1}function Dl(e){const t=W(e).trim();if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Lr(e){if(Array.isArray(e))return e;if(!kt(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=Dl(o);if(r)return Lr(r)}for(const t of["ContentJson","contentJson","content_json"])if(t in e){const o=Dl(e[t]);if(o)return Lr(o)}return Qr(e)?[e]:[]}function ei(e){return kt(e)?"BoardId"in e&&("Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e):!1}function Dd(e){if(!kt(e))return 0;for(const t of["Deletes","deletes"]){const o=e[t];if(Array.isArray(o))return o.length}return 0}function ys(e){return Lr(e).filter(Qr)}function Bd(e){return ys(e).length}function kp(e,t){var m;const o=[...ys(e)];if(!ei(t))return o;const r=new Set;for(const p of["Deletes","deletes"]){const b=t[p];if(Array.isArray(b))for(const u of b){const y=W(u).trim();y&&r.add(y)}}if(r.size>0)for(let p=o.length-1;p>=0;p-=1){const b=W((m=o[p])==null?void 0:m.Id).trim();b&&r.has(b)&&o.splice(p,1)}const d=new Map;o.forEach((p,b)=>{const u=W(p.Id).trim();u&&d.set(u,b)});for(const p of ys(t)){const b=W(p.Id).trim(),u=b?d.get(b):void 0;if(u!==void 0){o[u]=p;continue}b&&d.set(b,o.length),o.push(p)}return o}function Od(e){const t=Array.isArray(e)?e.filter(kt):[];return new Map(t.filter(o=>o.NodeId).map(o=>[String(o.NodeId),o]))}async function Er(e,t){for(const o of e)try{const r=await Kr(o,t);return{payload:JSON.parse(r.content),path:o}}catch{}return null}async function wp(e,t){const o=`.mindexec/boards/${e}.msgpack`,r=`boards/${e}.msgpack`;for(const b of[o,r])try{const u=await dm(b,t);return{payload:Dm(u),format:b===o?"msgpack":"legacy-msgpack",path:b}}catch{}const d=`.mindexec/boards/${e}.json`,m=`boards/${e}.json`,p=await Er([d,m],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}, ${m}`)}function Pr(e){const t=W(e.Id).trim()||W(e.BoardId).trim();return t?{Id:t,Title:W(e.Title)||null,Description:W(e.Description)||null,ThumbnailUrl:W(e.ThumbnailUrl)||null,CreatedAt:W(e.CreatedAt)||null,UpdatedAt:W(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:W(e.CameraBookmarks)||null}:null}function Bl(e){return!kt(e)||Qr(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 ti(e){if(Array.isArray(e))return e.filter(Bl).map(t=>Pr(t)).filter(t=>!!t);if(Bl(e)){const t=Pr(e);return t?[t]:[]}return[]}function vp(e){const t=e.toLowerCase();return jp(t)?"remote-control":Ip(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 jp(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 Ip(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 Np(e,t){const o=e.Metadata||{},r=o.ThumbnailUrl,d=o.OriginalUrl,m=o.OriginalPath;return qr(W(r)||W(d)||W(m)||W(e.Response),t)}function Ap(e,t,o){const r=e.ImageStack,d=Array.isArray(r==null?void 0:r.Variants)?r.Variants:[];if(d.length===0)return;const m=d.map((b,u)=>{const y=W(b.AssetId).trim(),w=qr(y,o)||t;return w?{variantId:W(b.VariantId)||`variant-${W(e.Id)||u}`,imageUrl:w,assetId:y||void 0,caption:W(b.Caption)||void 0,sourceNodeId:W(e.Id)||void 0,createdAtUtc:W(b.CreatedAtUtc)||void 0}:null}).filter(b=>!!b);if(m.length===0)return;const p=W(r==null?void 0:r.ActiveVariantId);return{activeVariantId:m.some(b=>b.variantId===p)?p:m[0].variantId,variants:m,kind:W(r==null?void 0:r.Kind)||"versions",title:W(r==null?void 0:r.Title)||void 0,updatedAtUtc:W(r==null?void 0:r.UpdatedAtUtc)||void 0}}function Mp(e,t){return!e||e.variants.length===0?t:(e.variants.find(r=>r.variantId===e.activeVariantId)??e.variants[0]).imageUrl||t}function Tp(e,t,o){var p,b,u,y,w,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:fo(e.imageUrl,t)||e.imageUrl,title:e.title,sourceNodeId:e.id,createdAtUtc:o}]:[];if(r.length===0)return null;const d=r.map(I=>({VariantId:I.variantId||vs(),AssetId:I.assetId||fo(I.imageUrl,t)||I.imageUrl,CreatedAtUtc:I.createdAtUtc||o,Caption:I.caption||I.title||null}));return{ActiveVariantId:(u=e.imageStack)!=null&&u.activeVariantId&&d.some(I=>{var D;return I.VariantId===((D=e.imageStack)==null?void 0:D.activeVariantId)})?e.imageStack.activeVariantId:d[0].VariantId||"",Variants:d,Kind:((y=e.imageStack)==null?void 0:y.kind)||(d.length>1?"pile":"versions"),Title:((w=e.imageStack)==null?void 0:w.title)||e.title||null,UpdatedAtUtc:((L=e.imageStack)==null?void 0:L.updatedAtUtc)||o}}function Rp(e,t){const o=e.Metadata||{};return qr(W(o.OriginalUrl)||W(o.OriginalPath)||W(o.SourceFilePath)||W(e.SourceFilePath)||W(e.Response),t)}function Lp(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 Ep(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 fo(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 Pp(e,t){const o=new Map;for(const r of e){const d=t.get(r.from),m=t.get(r.to);!d||!m||o.has(m)||o.set(m,d)}return o}function _p(e){const t=new Set;return e.map(o=>{var u,y;const r=((u=o.metadata)==null?void 0:u[Ba])||"",d=bs(r)?r:bs(o.id)?o.id:"",m=!!(d&&t.has(d)),p=d&&!m?d:vs(),b=((y=o.metadata)==null?void 0:y[Ba])!==p;return t.add(p),{node:b?{...o,metadata:{...o.metadata??{},[Ba]:p}}:o,originalId:p,assignedNodeId:!d||m,metadataStamped:b,duplicateOriginalId:m}})}function Dp(e,t,o,r,d){var y,w,L;const m=Ep(e.kind),p=m==="image"||m==="mask"?fo(e.imageUrl,d):"",b=["video","pdf","file","directory","embed"].includes(m)?fo(e.assetUrl||e.sourceFilePath||e.body,d):"",u={...e.metadata??{},[Ba]:t,ReactNodeId:e.id,ReactKind:e.kind};if(e.kind==="remote-monitor"&&(u.RemoteHub??(u.RemoteHub="Gated"),u.RemoteRoute??(u.RemoteRoute="Gated"),u.RemoteConnected??(u.RemoteConnected="0"),u.RemoteTotal??(u.RemoteTotal="30"),u.RemotePage??(u.RemotePage="1/1"),u.AdapterState??(u.AdapterState="adapter-gated")),e.kind==="remote-control"&&(u.SemanticType??(u.SemanticType="RemoteFleetDevice"),u.RemoteFleetSchemaVersion??(u.RemoteFleetSchemaVersion="remote-fleet-device@1"),u.RemoteRoute??(u.RemoteRoute="Gated"),u.RemoteInput??(u.RemoteInput="Off"),u.AdapterState??(u.AdapterState="adapter-gated")),e.kind==="mask"&&(u.ImageRouterMask??(u.ImageRouterMask="true"),u.SemanticType??(u.SemanticType="ImageEditMask")),e.kind==="embed"){const I=e.assetUrl||e.body||e.sourceFilePath||"";u.source??(u.source="embed"),u.renderMode??(u.renderMode="card"),u.provider??(u.provider="web"),u.sourceUrl??(u.sourceUrl=I),u.url??(u.url=I),u.AdapterState??(u.AdapterState="local-reference")}return e.kind==="video"&&(u.assetKind??(u.assetKind="video"),u.videoMode??(u.videoMode=(y=e.assetUrl)!=null&&y.startsWith(d)?"local_bridge":"local_reference"),u.AdapterState??(u.AdapterState=((w=e.metadata)==null?void 0:w.PromptOnly)==="true"?"adapter-gated":"local-reference")),(L=e.tags)!=null&&L.length&&(u.ReactTags=JSON.stringify(e.tags)),p&&(u.OriginalUrl=p,u.ThumbnailUrl=p),b&&(u.OriginalPath=b,u.SourceFilePath=b),{Id:t,ContentType:m,Prompt:e.title||m,Response:m==="image"||m==="mask"?p||e.body||null:m==="remote-monitor"?e.body||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":m==="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:u,ImageStack:m==="image"?Tp(e,d,r):null}}function Bp(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 Op(e,t,o){const r=W(e.ContentType)||"note",d=W(e.Prompt).trim(),m=W(e.Response).trim(),p=Lp(e.Metadata),b=W(e.Id).trim();b&&(p[Ba]??(p[Ba]=b));const y=["true","1","yes"].includes(String(p.ImageRouterMask||p.IsMask||"").trim().toLowerCase())?"mask":vp(r),w=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()),I=W(e.SourceFilePath)||p.OriginalPath||p.SourceFilePath||"",D=y==="video"||y==="pdf"||y==="file"||y==="directory"||y==="embed"?Rp(e,o):void 0,J=d||e.SourceFilePath||r||"LocalBridge node",$=y==="image"?m||d||"Image asset":y==="mask"?m||d||"Image mask asset":y==="remote-monitor"?m||d||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="remote-control"?m||d||I||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="pdf"||y==="file"||y==="directory"||y==="embed"?m||I||d||r:m||d||I||"",O=w?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,K=w||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,V=y==="image"||y==="mask"?Np(e,o):void 0,se=y==="image"?Ap(e,V,o):void 0,ne=!!(e.IsChunkedText||p.IsChunkedText==="true"),Ae=da(e.TotalLineCount??p.TotalLineCount,0),be=da(e.ScrollOffset,0),ze=da(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":J,body:$,x:da((t==null?void 0:t.PositionX)??e.PositionX,0),y:da((t==null?void 0:t.PositionY)??e.PositionY,0),width:Math.max(160,Math.min(900,da((t==null?void 0:t.Width)??e.Width,O))),height:Math.max(120,Math.min(900,da((t==null?void 0:t.Height)??e.Height,K))),status:e.IsLoading?"running":y==="ai-task"?"idle":void 0,imageUrl:Mp(se,V),imageStack:se,assetUrl:D,sourceFilePath:I||void 0,isChunkedText:ne||void 0,totalLineCount:ne?Ae:void 0,scrollOffset:ne?be:void 0,maxScroll:ne?ze:void 0,isExpanded:typeof e.IsExpanded=="boolean"?e.IsExpanded:void 0,originalHeight:da(e.OriginalHeight,0)||void 0,tags:w?["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"?Fp(p):y==="remote-control"?$p(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 Fp(e){return{RemoteHub:"Gated",RemoteRoute:"Gated",RemoteConnected:"0",RemoteTotal:"30",RemotePage:"1/1",AdapterState:"adapter-gated",...e}}function $p(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 zp(e,t){const o=[];for(const r of e){const d=String(r.Id||""),m=String(r.ParentId||"");!d||!m||!t.has(d)||!t.has(m)||o.push({id:`edge-local-${m}-${d}`,from:m,to:d,kind:"context"})}return o}async function Up(e=ks()){const t=await Kr(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return(Array.isArray(o)?o.filter(kt):[]).map(m=>Pr(m)).filter(m=>!!m).sort((m,p)=>String(p.UpdatedAt||"").localeCompare(String(m.UpdatedAt||"")))}async function Hp(e){try{const t=await Kr(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return Array.isArray(o)?o.filter(kt):[]}catch{return[]}}async function Wp(e,t,o,r=ks(),d=null){var mt,Me,de,Et,ce,Ue;if((mt=e.source)!=null&&mt.partialImport)throw new Error("This board was imported from a partial original payload. Export is blocked to avoid data loss.");if((Me=e.source)!=null&&Me.truncated)throw new Error("This board was truncated during import. Export is blocked to avoid data loss.");const m=(de=e.source)!=null&&de.exportedByReact?String(e.source.boardId||""):"",p=bs(m),b=bs(m)?m:vs(),u=new Date().toISOString(),y=_p(e.nodes),w=y.map(ee=>ee.node),L=new Map(y.map(ee=>[ee.node.id,ee.originalId])),I=Pp(e.edges,L),D=y.map(({node:ee,originalId:pt})=>Dp(ee,pt,I.get(pt),u,r)),J=y.map(({node:ee,originalId:pt})=>Bp(ee,pt)),$=t.scale>0?t.scale:1,O=(window.innerWidth/2-t.x)/$,K=(window.innerHeight/2-t.y)/$,V=1400/$,se=Number((d==null?void 0:d.x)??((Et=e.viewState)==null?void 0:Et.cursorX)??0),ne=Number((d==null?void 0:d.y)??((ce=e.viewState)==null?void 0:ce.cursorY)??0),Ae=(Ue=e.nodes.find(ee=>ee.kind==="image"&&ee.imageUrl))==null?void 0:Ue.imageUrl,be={Id:b,UserId:"00000000-0000-0000-0000-000000000000",Title:e.name||"Untitled Board",Description:"Exported from MindExec React",ThumbnailUrl:fo(Ae,r)||"",IsPublic:!1,CreatedAt:u,SyncedCloudBoardId:null,LastSyncedAt:null,LastCloudCopyStatus:null,UpdatedAt:u,LastCameraX:O,LastCameraY:K,LastCameraZ:V,LastCursorX:Number.isFinite(se)?se:0,LastCursorY:Number.isFinite(ne)?ne:0,CameraBookmarks:Sp(e.settings.cameraBookmarks)},ze=`.mindexec/boards/${b}.msgpack`,at=`.mindexec/boards/${b}.json`,nt=`.mindexec/boards/${b}.layout.json`,he=`.mindexec/boards/${b}.delta.json`,Z=`boards/${b}.delta.json`,ie=await Hp(r),oe=[be,...ie.filter(ee=>W(ee.Id)!==b)],wt=_m(D);await lm(ze,wt,o,r),await Zs(at,JSON.stringify(D,null,2),o,r),await Zs(nt,JSON.stringify(J,null,2),o,r),await Zs(".mindexec/boards/_metadata.json",JSON.stringify(oe,null,2),o,r);const F=await Promise.allSettled([pl(he,o,r),pl(Z,o,r)]);return f.emit("localBridge.board.exported",{boardId:b,nodes:D.length,edges:e.edges.length,snapshotFormat:"msgpack",msgpackBytes:wt.byteLength,jsonMirror:!0,deltaCleared:F.some(ee=>ee.status==="fulfilled"&&ee.value.success),reusedBoardId:p,stableNodeIds:y.length,assignedNodeIds:y.filter(ee=>ee.assignedNodeId).length,metadataStampedNodeIds:y.filter(ee=>ee.metadataStamped).length,duplicateOriginalNodeIds:y.filter(ee=>ee.duplicateOriginalId).length}),{metadata:be,source:{kind:"localBridge",boardId:b,loadedAt:u,originalNodeCount:D.length,renderedNodeCount:D.length,truncated:!1,exportedByReact:!0,snapshotFormat:"msgpack"},nodes:w,msgpackPath:ze,boardPath:at,layoutPath:nt}}async function Vp(e,t,o=ks()){const r=await wp(e.Id,o);let d=new Map;const m=await Er([`.mindexec/boards/${e.Id}.layout.json`,`boards/${e.Id}.layout.json`],o);m&&(d=Od(m.payload));let p=null;const b=await Er([`.mindexec/boards/${e.Id}.delta.json`,`boards/${e.Id}.delta.json`],o);b&&(p=b.payload);const u=p?ti(p)[0]:null,y=!!(p&&ei(p)),w=y?kp(r.payload,p):r.payload;return Fd(w,t,{boardId:(u==null?void 0:u.Id)??e.Id,title:(u==null?void 0:u.Title)||e.Title||"LocalBridge Board",updatedAt:(u==null?void 0:u.UpdatedAt)??e.UpdatedAt,layoutPayload:Array.from(d.values()),baseUrl:o,cameraBookmarks:(u==null?void 0:u.CameraBookmarks)??e.CameraBookmarks,lastCursorX:(u==null?void 0:u.LastCursorX)??e.LastCursorX,lastCursorY:(u==null?void 0:u.LastCursorY)??e.LastCursorY,deltaApplied:y,deltaUpserts:p?Bd(p):0,deltaDeletes:p?Dd(p):0,snapshotFormat:r.format})}function Fd(e,t,o={}){const r=ys(e),d=ei(e),m=o.deltaUpserts??(d?r.length:0),p=o.deltaDeletes??(d?Dd(e):0),b=o.layoutPayload?Od(o.layoutPayload):new Map,u=r.slice(0,bp),y=u.map(ne=>Op(ne,b.get(String(ne.Id||"")),o.baseUrl??ks())),w=new Set(y.map(ne=>ne.id)),L=zp(u,w),I=r.length>y.length,D=d,J=o.deltaApplied===!0,$=o.boardId||vs(),O=o.updatedAt||new Date().toISOString(),K=Number(o.lastCursorX),V=Number(o.lastCursorY),se=Number.isFinite(K)&&Number.isFinite(V);return f.emit("localBridge.board.loaded",{boardId:$,nodes:y.length,originalNodes:r.length,truncated:I,snapshotFormat:o.snapshotFormat,partialImport:D,deltaImport:d,deltaApplied:J,deltaUpserts:m,deltaDeletes:p}),{id:`localBridge:${$}`,name:o.title||"LocalBridge Board",nodes:y,edges:L,settings:{...t,cameraBookmarks:Cp(o.cameraBookmarks)},viewState:se?{cursorX:K,cursorY:V}:void 0,updatedAt:O,source:{kind:"localBridge",boardId:$,loadedAt:new Date().toISOString(),snapshotFormat:o.snapshotFormat,originalNodeCount:r.length,renderedNodeCount:y.length,truncated:I,partialImport:D,deltaImport:d,deltaApplied:J}}}const ai=["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(","),Yp=/^[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 Xp(e){if(Yp.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 $d(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 Gp(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 _r(e,t=new Date().toISOString()){return e&&!Number.isNaN(Date.parse(e))?e:t}function ni(e){return(e==null?void 0:e.trim().slice(0,90))||"Untitled Board"}function zd(e){const t=$d(e.content_json),o=_r(e.updated_at??t.updatedAt);return{id:e.id,name:ni(e.title??t.name),updatedAt:o,createdAt:_r(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 Kp(e,t){var w,L;const o=$d(e.content_json),r=_r(e.updated_at??o.updatedAt),d=Number((w=o.viewState)==null?void 0:w.cursorX),m=Number((L=o.viewState)==null?void 0:L.cursorY),p=Number(e.last_cursor_x),b=Number(e.last_cursor_y),u=Number.isFinite(d)&&Number.isFinite(m),y=Number.isFinite(p)&&Number.isFinite(b);return{id:e.id,name:ni(e.title??o.name),nodes:Array.isArray(o.nodes)?o.nodes:[],edges:Array.isArray(o.edges)?o.edges:[],settings:o.settings??t,viewState:u?{cursorX:d,cursorY:m}: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 oi(e){var u;const t=Md(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=ws(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:m,error:p}=await o.auth.getUser(),b=((u=m.user)==null?void 0:u.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 qp(e){const t=await oi(e);if(!t.userId)return[];const o=ws(e);if(!o)return[];f.emit("projectStorage.cloud.list.requested");const{data:r,error:d}=await o.from("boards").select(ai).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 m=(r??[]).map(zd);return f.emit("projectStorage.cloud.list.loaded",{count:m.length}),m}async function Jp(e,t,o){const r=await oi(e);if(!r.userId)return null;const d=ws(e);if(!d)return null;f.emit("projectStorage.cloud.load.requested",{boardId:t});const{data:m,error:p}=await d.from("boards").select(ai).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(!m)return null;const b=Kp(m,o);return f.emit("projectStorage.cloud.load.loaded",{boardId:t,nodes:b.nodes.length,edges:b.edges.length}),b}async function Zp(e,t,o,r=null){var se,ne;const d=await oi(e);if(!d.userId)return null;const m=ws(e);if(!m)return null;const p=Xp(t.id),b=new Date().toISOString(),u=ni(t.name),y=Number((r==null?void 0:r.x)??((se=t.viewState)==null?void 0:se.cursorX)??0),w=Number((r==null?void 0:r.y)??((ne=t.viewState)==null?void 0:ne.cursorY)??0),L={...t.viewState??{},cursorX:Number.isFinite(y)?y:0,cursorY:Number.isFinite(w)?w:0},I={...t,id:p,name:u,viewState:L,updatedAt:b},D={p_board_id:p,p_title:u,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:J}=await m.rpc("save_board_snapshot",D);if(J)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-rpc",boardId:p,message:J.message}),J;const $={content_json:Gp(I),updated_at:b},{data:O,error:K}=await m.from("boards").update($).eq("id",p).eq("user_id",d.userId).select(ai).maybeSingle();if(K)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-json-mirror",boardId:p,message:K.message}),K;const V=O?zd(O):{id:p,name:u,updatedAt:b,createdAt:b,nodeCount:t.nodes.length,edgeCount:t.edges.length,sourceKind:"cloud"};return f.emit("projectStorage.cloud.save.saved",{boardId:V.id,nodes:V.nodeCount,edges:V.edgeCount}),V}function Dr(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 Qp(e,t={},o=Dr(e),r){if(e.length===0)return{after:new Map,boundsAfter:o};const d=fg(t.mode),m=bg(t.order),p=yg(t.anchor),b=xg(t.sizeMode),u=Math.max(0,t.gapX??24),y=Math.max(0,t.gapY??24),w=Math.max(1,t.maxColumns??12),L=Br(t.quantile??.75,.05,.95),I=e.map(eg),D=ug(I,m),J=D.map(be=>be.width),$=D.map(be=>be.height),O=Math.max(1,t.cellWidth??Fl(J,L)),K=Math.max(1,t.cellHeight??Fl($,L)),V=Math.max(1,t.targetWidth??O),se=Math.max(1,t.targetHeight??K),ne=cg(p,o);if(d==="grid"){rg(D,b,V,se,O,K);const be=Ol(t.columns,w,o.maxX-o.minX,O,u);ag(D,ne.x,ne.y,be,O,K,u,y)}else if(d==="masonry"){ig(D,b==="preserve"?"uniformWidth":b,V);const ze=Ol(t.columns,w,o.maxX-o.minX,V,u);ng(D,ne.x,ne.y,ze,V,u,y)}else d==="stripHorizontal"?(lg(D,b==="preserve"?"uniformHeight":b,se),og(D,ne.x,ne.y,u,se)):(dg(D,b==="preserve"?"uniformWidth":b,V),sg(D,ne.x,ne.y,y,V));let Ae=new Map(D.map(be=>[be.id,tg(be)]));return p==="selectionBoundsCenter"&&(Ae=pg(o,Ae)),t.snapToGrid&&(Ae=gg(Ae,Math.max(1,t.gridSize??8))),{after:Ae,boundsAfter:Dr(Array.from(Ae.values()))}}function eg(e){return{...e,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function tg(e){return{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function ag(e,t,o,r,d,m,p,b){e.forEach((u,y)=>{const w=Math.floor(y/r),L=y%r,I=t+L*(d+p),D=o+w*(m+b);u.x=I+(d-u.width)/2,u.y=D+(m-u.height)/2})}function ng(e,t,o,r,d,m,p){const b=Array.from({length:r},()=>0);for(const u of e){const y=hg(b),w=t+y*(d+m);u.x=w+(d-u.width)/2,u.y=o+b[y],b[y]+=u.height+p}}function og(e,t,o,r,d){let m=t;for(const p of e)p.x=m,p.y=o+(d-p.height)/2,m+=p.width+r}function sg(e,t,o,r,d){let m=o;for(const p of e)p.x=t+(d-p.width)/2,p.y=m,m+=p.height+r}function rg(e,t,o,r,d,m){if(t==="fitCellDownOnly")for(const p of e){const b=Math.min(1,d/p.width,m/p.height);p.width*=b,p.height*=b}else t==="uniformWidth"?si(e,o):t==="uniformHeight"&&Ud(e,r)}function ig(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}si(e,o)}function lg(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}Ud(e,o)}function dg(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}si(e,o)}function si(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 Ud(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 Ol(e,t,o,r,d){if(typeof e=="number"&&e>0)return Math.round(Br(e,1,t));if(o<=1||r<=1)return 1;const m=Math.floor((o+d)/(r+d));return!Number.isFinite(m)||m<1?1:Math.round(Br(m,1,t))}function cg(e,t,o){return{x:t.minX,y:t.minY}}function ug(e,t){return t==="selectionOrder"?[...e].sort((o,r)=>o.selectionIndex-r.selectionIndex):mg(e)}function mg(e){const t=[...e].sort((u,y)=>u.y-y.y||u.x-y.x);if(t.length<=2)return t;const o=t.map(u=>u.height).sort((u,y)=>u-y),r=o[Math.floor(o.length/2)]??1,d=Math.max(16,r*.35),m=[];let p=[],b=Number.NaN;for(const u of t)p.length===0?(p=[u],b=u.y):Math.abs(u.y-b)<=d?(p.push(u),b=(b*(p.length-1)+u.y)/p.length):(m.push([...p].sort((y,w)=>y.x-w.x)),p=[u],b=u.y);return p.length>0&&m.push([...p].sort((u,y)=>u.x-y.x)),m.flat()}function pg(e,t){if(t.size===0)return t;const o=Dr(Array.from(t.values())),r=e.minX+(e.maxX-e.minX)/2,d=e.minY+(e.maxY-e.minY)/2,m=o.minX+(o.maxX-o.minX)/2,p=o.minY+(o.maxY-o.minY)/2,b=r-m,u=d-p;return new Map(Array.from(t.entries()).map(([y,w])=>[y,{...w,x:w.x+b,y:w.y+u}]))}function gg(e,t){return new Map(Array.from(e.entries()).map(([o,r])=>[o,{...r,x:$l(r.x,t),y:$l(r.y,t)}]))}function Fl(e,t){if(e.length===0)return 1;const o=[...e].sort((b,u)=>b-u),r=(o.length-1)*t,d=Math.floor(r),m=Math.min(o.length-1,d+1),p=r-d;return o[d]*(1-p)+o[m]*p}function hg(e){let t=0;for(let o=1;o<e.length;o+=1)e[o]<e[t]&&(t=o);return t}function $l(e,t){return Math.round(e/t)*t}function fg(e){const t=js(e);return t==="grid"?"grid":t==="striphorizontal"||t==="striph"?"stripHorizontal":t==="stripvertical"||t==="stripv"?"stripVertical":"masonry"}function bg(e){return js(e)==="selectionorder"?"selectionOrder":"spatialReading"}function yg(e){const t=js(e);return t==="selectionboundscenter"?"selectionBoundsCenter":t==="viewporttopleft"?"viewportTopLeft":"selectionBoundsTopLeft"}function xg(e){const t=js(e);return t==="fitcelldownonly"?"fitCellDownOnly":t==="uniformwidth"?"uniformWidth":t==="uniformheight"?"uniformHeight":"preserve"}function js(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")}function Br(e,t,o){return Math.min(o,Math.max(t,e))}const Hd=300,Wd=50*1024*1024,Cg=800;function we(e){return typeof e=="string"?e.length*2:0}function Sg(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 kg(e){let t=1024+we(e.id)+we(e.name)+we(e.updatedAt);return t+=e.nodes.reduce((o,r)=>o+Sg(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 Vd(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:kg(e)}}function zl(e,t={}){const o=t.maxEntries??Hd,r=t.maxBytes??Wd;let d=e.slice(Math.max(0,e.length-o)),m=d.reduce((p,b)=>p+b.estimatedBytes,0);for(;d.length>1&&m>r;){const[p,...b]=d;m-=(p==null?void 0:p.estimatedBytes)??0,d=b}return d}function La(e,t,o={}){const r=Vd(t,o),d=o.mergeWindowMs??Cg,m=e.slice(),p=m.at(-1);return p&&r.mergeKey&&p.mergeKey===r.mergeKey&&r.timestampMs-p.timestampMs<d?(m[m.length-1]={...p,description:r.description,timestampMs:r.timestampMs,estimatedBytes:Math.max(p.estimatedBytes,r.estimatedBytes)},zl(m,o)):(m.push(r),zl(m,o))}function wg(e,t,o={}){const r=Vd(t,o),d=o.maxEntries??Hd,m=o.maxBytes??Wd;let p=[r,...e].slice(0,d),b=p.reduce((u,y)=>u+y.estimatedBytes,0);for(;p.length>1&&b>m;){const u=p.at(-1);b-=(u==null?void 0:u.estimatedBytes)??0,p=p.slice(0,-1)}return p}function Is(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 ao(e,t){return!!Is(e,t)}function Yd(e){if(!e||!e.trim())return!1;const t=e.trim();return/^(https?:|blob:|data:|file:)/i.test(t)}function Xd(e){if(!e)return"";const t=Is(e,"OriginalPath");if(t)return t;const o=String(e.body||"").trim();return Yd(o)?"":o}function Gd(e){return e?Xd(e)||String(e.sourceFilePath||"").trim()||String(e.assetUrl||"").trim()||String(e.imageUrl||"").trim()||String(e.body||"").trim():""}function Kd(e){return Is(e,"ThumbnailUrl","thumbnailUrl")}function vg(e){if(!e||e.kind!=="image")return!1;if(ao(e,"ImageGenerationProvider")||ao(e,"GeneratedImageSourceWidth")||ao(e,"GeneratedImageSourceHeight")||ao(e,"CodexImageQuality")||ao(e,"ImageRouterRevisedPrompt"))return!0;const t=Is(e,"RequestedMediaOperation");return["text2image","image2image","inpaint"].includes(t.toLowerCase())}function ri(e){if(!e)return"";if(e.kind==="image"||e.kind==="mask"){const t=vg(e)?Xd(e):"",o=Kd(e),r=String(e.body||"").trim();return t||o||String(e.imageUrl||"").trim()||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()||(Yd(r)?r:"")}return Gd(e)||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()}function qd(e){if(!e)return"";const t=Gd(e)||e.title||e.kind;return String(t||"").replace(/\\/g,"/").replace(/\/+$/,"").split("/").filter(Boolean).pop()||e.title||e.kind}const jg=2048,Ig=16e3,rr=1024,ir=64,Ng=2048,lr=3,Ag=16,Mg=256,Tg=new Set(["text","note","memo","markdown","code","directory"]),Rg=/[\p{L}\p{M}\p{N}]{2,}/gu,Ul=4,Lg=8,Hl=1.35;function Eg(e){return Tg.has(String(e||"").trim().toLowerCase())}function Pg(e){const t=e.map(Dg),o=new Map,r=new Map,d=new Map,m=new Map;for(const p of t){o.set(p.id,p);for(const b of p.tokens)dr(r,b,p.id);for(const b of p.prefixes)dr(d,b,p.id);for(const b of p.ngrams)dr(m,b,p.id)}return{documents:t,documentById:o,tokenIndex:r,prefixIndex:d,ngramIndex:m}}function _g(e,t,o={}){const r=Math.max(1,Math.trunc(Number(o.limit||30))),d=cn(t),m=Wl(e,0,0,o.viewport,0);if(!d)return{hits:[],profile:m};const p=Array.from(Jd(d)),b=Array.from(Zd(p)),u=ec(d),y=Array.from(Qd(u)),w=new Map;for(const $ of p)cr(e.tokenIndex,$,w,8);for(const $ of b)cr(e.prefixIndex,$,w,$.length<=3?4:2);for(const $ of y)cr(e.ngramIndex,$,w,1.15);const L=$g(e,w,r),I=zg(o.allowedContentTypes),D=[];for(const $ of L){const O=e.documentById.get($);if(!O||I&&!I.has(O.contentType))continue;const K=Og(O,d,p,y);if(K<=0)continue;const V=Fg(O,o.viewport??null);D.push({nodeId:O.id,score:K+V,textScore:K,viewportBoost:V})}D.sort(($,O)=>O.score-$.score||$.nodeId.localeCompare(O.nodeId));const J=D.slice(0,r);return{hits:J,profile:Wl(e,L.length,J.length,o.viewport,J.filter($=>$.viewportBoost>0).length)}}function cn(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 m of o){if(/\s/u.test(m)){d||(r+=" ",d=!0);continue}Ug(m)||(r+=m,d=!1)}return r.trim()}function Jd(e){return new Set(e.match(Rg)??[])}function Zd(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 Qd(e){const t=new Set;if(!e.trim())return t;if(e.length<=lr)return t.add(e),t;for(let o=0;o<=e.length-lr;o+=1)t.add(e.slice(o,o+lr));return t}function Dg(e){const t=String(e.kind??"").trim().toLowerCase(),o=_a(e.prompt??e.title,jg),r=Eg(t)?_a(e.response??e.body,Ig):"",d=Bg(e.metadata,e.tags,e.metadataText),m=_a(e.sourceFilePath||e.assetUrl,Ng),p=cn(o),b=cn(r),u=cn(d),y=cn(m),w=cn(t),L=[p,u,y,b,w].filter(Boolean).join(" "),I=Jd(L);return{id:String(e.id),contentType:t,normalizedPrompt:p,normalizedResponse:b,normalizedMetadata:u,normalizedSourcePath:y,normalizedContentType:w,tokens:I,prefixes:Zd(I),ngrams:Qd(ec(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 Bg(e,t,o){const r=[];let d=0;if(e)for(const[m,p]of Object.entries(e)){if(d>=ir)break;!String(m??"").trim()&&!String(p??"").trim()||(r.push(_a(m,128)),String(p??"").trim()&&r.push(_a(p,rr)),d+=1)}return d<ir&&(t!=null&&t.length)&&(r.push("tags",_a(t.join(" "),rr)),d+=1),d<ir&&(o!=null&&o.trim())&&r.push("metadata",_a(o,rr)),r.join(" ")}function Og(e,t,o,r){let d=0;e.normalizedPrompt===t?d+=120:no(e.normalizedPrompt,t)&&(d+=54),no(e.normalizedMetadata,t)&&(d+=26),no(e.normalizedSourcePath,t)&&(d+=18),no(e.normalizedResponse,t)&&(d+=14),no(e.normalizedContentType,t)&&(d+=8);for(const m of o)e.tokens.has(m)&&(d+=7),e.normalizedPrompt.startsWith(m)&&(d+=10);for(const m of r)e.ngrams.has(m)&&(d+=.85);return d}function Fg(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),m=Math.abs(r-t.centerY)/Math.max(1,t.halfHeight),p=Math.sqrt(d*d+m*m);if(p<=1)return Ul+(1-p)*Lg;if(p<=Hl){const b=1-(p-1)/Math.max(.001,Hl-1);return Math.max(0,b)*(Ul*.75)}return 0}function $g(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*Ag,Mg)).map(([r])=>r)}function zg(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 Wl(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 dr(e,t,o){const r=e.get(t);if(r){r.add(o);return}e.set(t,new Set([o]))}function cr(e,t,o,r){const d=e.get(t);if(d)for(const m of d)o.set(m,(o.get(m)??0)+r)}function ec(e){let t="";for(const o of e)/\s/u.test(o)||(t+=o);return t}function _a(e,t){const o=String(e??"");return o.length<=t?o:o.slice(0,t)}function no(e,t){return!!(e&&t&&e.includes(t))}function Ug(e){const t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}const Hg=2147483647,Wg="LocalBridge access is enabled, but the bridge is not reachable. Restart LocalBridge, allow Chrome local-network access, then reload MindCanvas.",Vg="Local storage is unavailable in the hosted app until browser local storage or LocalBridge access is available.",Yg="Local storage is unavailable. Check the browser-local storage state or LocalBridge connection.",Xg="Cloud projects are unavailable until Supabase and Cloudflare R2 are configured.",Gg="Login is required before cloud projects can be used.",Kg="Cloud projects are unavailable.";function qg(e){return e.bridgeProviderConfigured||e.browserProviderConfigured||e.embeddedProviderConfigured}function Or(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 Jg(e){return Or(e,!1).isAvailable?"local":ii(e)?"cloud":Or(e,!0).isAvailable?"local":e.cloudConfigured?"cloud":"local"}function ii(e){return e.cloudConfigured&&e.cloudSessionAvailable}function Zg(e,t){return t.providerKind==="bridge"&&!t.bridgeReachable?Wg:e.hostedWebApp?Vg:Yg}function Qg(e){return e.cloudConfigured?ii(e)?Kg:Gg:Xg}function eh(e){var w,L,I;const t=ii(e),o=Or(e,!0),r=qg(e),d=e.cloudConfigured,m=o.isAvailable,p=t;let b=e.storedMode??Jg(e);b==="cloud"&&(!d||!p&&m)?b=m?"local":"cloud":b==="local"&&(!r&&d||!m&&p)&&(b="cloud");const u=e.cloudAccess,y=((w=u==null?void 0:u.denialReason)==null?void 0:w.trim())||void 0;return{currentMode:b,showLocalTab:r,showCloudTab:d,isLocalAvailable:o.isAvailable,isCloudAvailable:t,requiresCloudSignIn:e.cloudConfigured&&!t,canUseLocalProjects:m,canBrowseLocalWorkspace:o.canBrowseWorkspace,localProviderKind:o.providerKind,canUseCloudProjects:p,canSyncLocalToCloud:m&&p,cloudPlanKey:((L=u==null?void 0:u.planKey)==null?void 0:L.trim())||"free",cloudEntitlementStatus:((I=u==null?void 0:u.entitlementStatus)==null?void 0:I.trim())||(u?"active":"inactive"),currentCloudBoardCount:(u==null?void 0:u.currentBoardCount)??0,cloudBoardLimit:(u==null?void 0:u.cloudBoardLimit)??Hg,lockedCloudBoardCount:(u==null?void 0:u.lockedBoardCount)??0,canCreateCloudBoards:(u==null?void 0:u.canCreateBoard)??p,canUseManagedAi:(u==null?void 0:u.canUseManagedAi)??!1,canGenerateImage:(u==null?void 0:u.canGenerateImage)??!1,canUseContextPack:(u==null?void 0:u.canUseContextPack)??!1,cloudLimitMessage:y,localStatusMessage:o.isAvailable?void 0:Zg(e,o),cloudStatusMessage:p?void 0:Qg(e)}}function th(){const e=new Error("Queued operation was cancelled before it started.");return e.name="AbortError",e}class ah{constructor(){ul(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 m;return m=(async()=>{try{try{await d}catch{}if(r!=null&&r.aborted)throw th();return await o(r)}finally{this.tails.get(t)===m&&this.tails.delete(t)}})(),this.tails.set(t,m),m}clear(t){if(typeof t>"u"){this.tails.clear();return}this.tails.delete(t)}}const Fr="mindexec-local-mode-warning-dismissed-v1";function nh(){try{return window.localStorage.getItem(Fr)==="true"}catch{return!1}}function tc(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 oh(e,t,o){var d,m,p,b,u;if(e!=="connected")return t||tc(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,(m=o==null?void 0:o.exec)!=null&&m.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,(u=o==null?void 0:o.project)!=null&&u.isOpen?"project open":null].filter(Boolean);return r.length>0?`LocalBridge connected. ${r.join(" / ")}`:"LocalBridge connected."}function sh({state:e,message:t,status:o,hostedBridgeAccessEnabled:r,onRefresh:d,onEnableHostedBridge:m}){const p=g.useMemo(()=>e==="checking"?n.jsx(Yt,{size:14,className:"spin-icon"}):e==="connected"?n.jsx(zm,{size:14}):e==="blocked"?n.jsx(Td,{size:14}):e==="unavailable"?n.jsx(Um,{size:14}):n.jsx(Jr,{size:14}),[e]);return n.jsxs("div",{className:`runtime-status-pill runtime-status-pill--${e}`,title:oh(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:tc(e,o)}),e==="blocked"&&!r&&n.jsx("button",{type:"button",className:"runtime-status-pill__action",onClick:m,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(pn,{size:13})})]})}function rh({status:e,message:t}){const r={ready:{icon:n.jsx(Ar,{size:14}),label:"Saved locally",title:"Board state is saved in this browser."},syncing:{icon:n.jsx(Yt,{size:14,className:"spin-icon"}),label:"Saving",title:"Saving board state to this browser."},error:{icon:n.jsx(Zr,{size:14}),label:"Save error",title:"Board state could not be saved locally."},offline:{icon:n.jsx(Jr,{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 ih({visible:e}){const[t,o]=g.useState(nh);if(!e||t)return null;const r=()=>{o(!0);try{window.localStorage.setItem(Fr,"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":Fr,children:[n.jsx("div",{className:"runtime-local-warning__icon","aria-hidden":"true",children:n.jsx(Zr,{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(Ct,{size:14})})]})}function lh({bridgeState:e,bridgeMessage:t,bridgeStatus:o,syncStatus:r,syncMessage:d,hostedBridgeAccessEnabled:m,onRefreshBridge:p,onEnableHostedBridge:b,showLocalModeWarning:u=!0}){return n.jsxs("aside",{className:"runtime-status-cluster","aria-label":"Runtime status","data-testid":"runtime-status-cluster","data-local-mode-visible":u?"true":"false",children:[n.jsxs("div",{className:"runtime-status-row",children:[n.jsx(sh,{state:e,message:t,status:o,hostedBridgeAccessEnabled:m,onRefresh:p,onEnableHostedBridge:b}),n.jsx(rh,{status:r,message:d})]}),n.jsx(ih,{visible:u})]})}const dh=/^data:image\//i;function ch(e){const t=String(e||"").trim();if(!t)return{src:null,reason:"empty",urlKind:"empty"};const o=t.toLowerCase();return dh.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 ur({src:e,alt:t="",className:o="",testId:r="secure-image",traceId:d,kind:m="image",title:p}){const b=g.useMemo(()=>ch(e),[e]),[u,y]=g.useState(b.src?"loading":"blocked");g.useEffect(()=>{const D=b.src?"loading":"blocked";y(D),b.src||f.emit("secureImage.blocked",{id:d,kind:m,reason:b.reason,urlKind:b.urlKind})},[m,b.reason,b.src,b.urlKind,d]);const w=()=>{y("loaded"),f.emit("secureImage.loaded",{id:d,kind:m,urlKind:b.urlKind})},L=()=>{y("error"),f.emit("secureImage.error",{id:d,kind:m,urlKind:b.urlKind})},I=u==="blocked"?`Image blocked: ${b.reason||"unsupported source"}`:"Image failed to load";return n.jsxs("div",{className:`secure-image secure-image--${u} ${o}`.trim(),"data-testid":r,"data-secure-image-state":u,"data-secure-image-kind":m,title:u==="loaded"?p:I,children:[b.src&&n.jsx("img",{src:b.src,alt:t,loading:"lazy",decoding:"async",draggable:!1,onLoad:w,onError:L}),u==="loading"&&n.jsx("span",{className:"secure-image__loading","aria-hidden":"true",children:n.jsx("span",{})}),(u==="blocked"||u==="error")&&n.jsx("span",{className:"secure-image__fallback",role:"img","aria-label":I,children:u==="blocked"?n.jsx(Hm,{size:18}):n.jsx(Zr,{size:18})})]})}const uh={note:hs,text:St,"ai-task":gn,image:fn,mask:fn,video:bn,embed:yn,code:hn,markdown:St,"csv-table":St,memo:hs,pdf:St,file:Mr,directory:Wm,"template-launcher":St,"remote-monitor":gs,"remote-control":gs},mr=[{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."}],Vl=500,mh=48,ph=new Set(["mindcanvasagent","agentcommand"]),gh=new Set(["codenote","code-note"]),hh=["multidesktopmonitor","remotehubmonitor","remotefleetmonitor","smartviewmonitor"],fh=["remotedevice","remotefleetdevice","remotecontrol"];function bh(e){const t=xn(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=xn(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=xn(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-monitor"||t==="remotefleetmonitor"||o==="fleet-monitor"||r==="remote-fleet@1"||nc(e,["RemoteFleetViewMode","RemoteFleetHubStatus","RemoteFleetDevicesJson","RemoteFleetDeviceCount","RemoteFleetConnectedDeviceCount","RemoteFleetProjectionMode","RemoteFleetCanvasPagination","RemoteHub","RemoteRoute","RemotePage","RemoteVisibleBudget"])||ac(e,hh,["remote","monitor"])}function yh(e){const t=xn(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=xn(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=xn(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-control"||t==="remotefleetdevice"||o==="fleet-device"||r==="remote-fleet-device@1"||nc(e,["RemoteFleetDeviceId","RemoteFleetDeviceName","RemoteFleetDevicePlatform","RemoteFleetDeviceConnected","RemoteFleetDeviceCanControl","RemoteFleetSourceMonitorNodeId"])||ac(e,fh,["remote","control"])}function ac(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 xn(e,...t){const o=e.metadata??{};for(const d of t){const m=o[d];if(m!=null)return String(m)}const r=new Set(t.map(d=>d.toLowerCase()));for(const[d,m]of Object.entries(o))if(r.has(d.toLowerCase())&&m!==void 0&&m!==null)return String(m);return""}function nc(e,t){const o=e.metadata??{},r=new Set(t.map(d=>d.toLowerCase()));return Object.entries(o).some(([d,m])=>r.has(d.toLowerCase())&&m!==void 0&&m!==null&&String(m).trim()!=="")}const $r=[{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"}],xh=g.memo(function({node:t,selected:o,pulsing:r,connectionDraft:d,onSelect:m,onDragStart:p,onResizeStart:b,onPatch:u,onDelete:y,onDuplicate:w,onRun:L,onPin:I,onOpenResult:D,onToggleAiReference:J,onCopyNode:$,onCopyEmbedReference:O,onFitNodeHeight:K,onToggleNodeExpanded:V,onToggleWordWrap:se,onStageCompany:ne,onOpenCompanyGraph:Ae,onSyncCompanyGoal:be,onRefreshCompany:ze,onSetCompanyStatus:at,onRemoveCompany:nt,onOpenAsset:he,onOpenDirectorySettings:Z,onScanDirectory:ie,onCreateRemoteControl:oe,onGenerateTemplateCard:wt}){var En,jo,lt,$t,ka,Ga,na,Ka,te,Ve,qa,Pn,v,U,ae,Io,Ye,zt,Ut,Ja,Za,_n,Dn,Qa,Bn,wa,On,en,va,oa,Be,_e,tn,Fn,No;const F=String(((En=t.metadata)==null?void 0:En.AutomationNodeKind)||((jo=t.metadata)==null?void 0:jo.AutomationTemplateKey)||((lt=t.metadata)==null?void 0:lt.AutomationInferredKind)||"").trim().toLowerCase(),mt=String((($t=t.metadata)==null?void 0:$t.SemanticType)||((ka=t.metadata)==null?void 0:ka.semanticType)||"").trim().toLowerCase(),Me=t.kind==="memo"&&ph.has(mt),de=t.kind==="memo"&&gh.has(mt),Et=String(((Ga=t.metadata)==null?void 0:Ga.AgentCommandStatus)||"Draft"),ce=String(((na=t.metadata)==null?void 0:na.AgentCommandMode)||"Task"),Ue=String(((Ka=t.metadata)==null?void 0:Ka.AgentCommandRequestedRole)||"Researcher"),ee=String(((te=t.metadata)==null?void 0:te.CodeNoteStatus)||"Draft"),pt=String(((Ve=t.metadata)==null?void 0:Ve.CodeNoteSyncState)||"Unlinked"),Gt=String(((qa=t.metadata)==null?void 0:qa.CodeNoteKind)||"Feature"),Oa=Me?gn:de?hn:F==="image-generate"?fn:F==="video-generate"?bn:uh[t.kind],wn=d&&d.from!==t.id,bo=t.kind==="ai-task",Le=t.kind==="pdf"||t.kind==="file"||t.kind==="directory",Fa=bh(t),Kt=yh(t),Oe=Fa||Kt,Te=Fa?"monitor":Kt?"control":"",ue=t.kind==="template-launcher"||String(((Pn=t.metadata)==null?void 0:Pn.semanticType)||((v=t.metadata)==null?void 0:v.SemanticType)||"").toLowerCase()==="templatelauncher",vt=t.kind==="video",ve=t.kind==="embed",jt=t.kind==="mask",ye=t.kind==="memo",ot=t.kind==="markdown",st=t.kind==="csv-table",Fe=ye?Ah(t):null,pe=g.useRef(null),vn=vt?oc(t):"",qe=vt?Th(t):"",$e=ve?Rh(t):"",It=ve?Lh(t):"",yo=ve?Eh(t,$e):"",De=ve?Ph(t):"",Ee=(((U=t.imageStack)==null?void 0:U.variants)??[]).filter(x=>!!x.imageUrl),gt=Ee.find(x=>{var _;return x.variantId===((_=t.imageStack)==null?void 0:_.activeVariantId)})??Ee[0]??null,Pt=t.kind==="image"||jt?(gt==null?void 0:gt.imageUrl)||ri(t):"",pa=gt?Ee.findIndex(x=>x.variantId===gt.variantId):-1,$a=!Pt&&!Le&&!Oe&&!ue&&!vt&&!ve,xo=$a&&!ye,qt=t.isExpanded===!1&&Number(t.originalHeight??0)>t.height+1,jn=!Oe&&!["image","mask","video","embed","pdf","file","directory","template-launcher","remote-monitor","remote-control"].includes(t.kind),rt=t.aiEnabled!==!1,He=Mh(t),Je=!!(t.isChunkedText||((ae=t.metadata)==null?void 0:ae.IsChunkedText)==="true"),ga=Number(t.totalLineCount??((Io=t.metadata)==null?void 0:Io.TotalLineCount)??0),Co=t.sourceFilePath||((Ye=t.metadata)==null?void 0:Ye.FileName)||t.title,xe=Je?n.jsxs("div",{className:"node-chunked-text-state","data-testid":"node-chunked-text-state",title:Co,children:[n.jsx(St,{size:12}),n.jsx("strong",{children:"Chunked text"}),Number.isFinite(ga)&&ga>0&&n.jsxs("span",{children:[ga.toLocaleString()," lines"]})]}):null,Jt=t.kind==="directory"?(zt=t.metadata)==null?void 0:zt.Include:null,za=t.kind==="directory"?(Ut=t.metadata)==null?void 0:Ut.Exclude:null,In=t.kind==="directory"?(Ja=t.metadata)==null?void 0:Ja.DirectoryFileCount:null,Pe=t.kind==="directory"?(Za=t.metadata)==null?void 0:Za.DirectoryDirCount:null,Nt=t.kind==="directory"?(_n=t.metadata)==null?void 0:_n.DirectoryLastScanUtc:null,[Ua,Ha]=g.useState(!1),[Wa,We]=g.useState(null),[Ns,Nn]=g.useState(((Dn=t.metadata)==null?void 0:Dn.CompanyExecutionMode)||"Auto"),[ha,Va]=g.useState(((Qa=t.metadata)==null?void 0:Qa.CompanySubAgents)!=="false"),[Zt,fa]=g.useState(!1),[At,Ya]=g.useState(null),ba=g.useMemo(()=>st?wh(t.body,At):null,[At,st,t.body]),le=g.useMemo(()=>ue?Id(t.body):null,[ue,t.body]),ht=(le==null?void 0:le.options.find(x=>x.id===le.selectedOptionId))??(le==null?void 0:le.options[0])??null,Qt=cm(le),_t=mr.find(x=>x.key===Ns)||mr[0],Dt=String(((Bn=t.metadata)==null?void 0:Bn.CompanyStatus)||(t.companyMode?"Staged":"")).trim(),Bt=Dt.toLowerCase(),ea=Bt==="paused",ft=Bt==="archived",As=x=>{x.stopPropagation();const _=x.currentTarget.getBoundingClientRect();We(Sh(_)),Ha(re=>!re)},Ms=x=>{x.stopPropagation(),ne(t.id,{executionMode:_t.key,enableSubAgents:ha}),Ha(!1)},So=x=>{x.stopPropagation(),Ae(t.id)},ya=(x,_)=>{_.stopPropagation();const re=Ee.find(Qe=>Qe.variantId===x);!re||!t.imageStack||re.variantId===t.imageStack.activeVariantId||(f.emit("node.imageStack.variant",{nodeId:t.id,variantId:re.variantId,variantCount:Ee.length}),u(t.id,{imageUrl:re.imageUrl,imageStack:{...t.imageStack,activeVariantId:re.variantId,variants:Ee,updatedAtUtc:new Date().toISOString()},metadata:{...t.metadata??{},ImageStackActiveVariantId:re.variantId}}))},Ts=(x,_)=>{if(_.stopPropagation(),!!ye){if((Fe==null?void 0:Fe.key)===x){fa(!1);return}f.emit("node.memoColor.changed",{id:t.id,colorKey:x}),u(t.id,{metadata:{...t.metadata??{},memoColor:x,memoColorIsCustom:"true"}}),fa(!1)}},An=x=>{var Xe,$n;if(x.stopPropagation(),!Me)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."],Qe=["canvas-context","agent-command-planning","adapter-gated-execution"],Mt=["Canvas.ListAgentCommands","Canvas.UpdateAgentCommand","Canvas.PlanAgentCommand","Canvas.SetAgentCommandState"],Re=["MindCanvasAgent",ce,Ue],et=["Local React plan staged for this Agent Command.",`Role: ${Ue}`,`Mode: ${ce}`,`Objective: ${_.slice(0,220)}`,"External execution remains adapter-gated until LocalBridge/agent runtime is available."].join(`
1
+ var Qu=Object.defineProperty;var em=(e,t,o)=>t in e?Qu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var ul=(e,t,o)=>em(e,typeof t!="symbol"?t+"":t,o);import{j as n,r as g,a as tm}from"./vendor-react-BXzpOyCS.js";import{l as am,a as yt,s as Vt,b as nm,d as om,r as sm,c as rm,e as im,i as ml}from"./storage-C8yTm9Oa.js";import{r as Kr,g as ks,w as lm,a as Zs,d as pl,b as dm,t as qr,p as Id,v as cm,R as um,c as mm,u as pm,e as gm,f as gl,s as xt,i as sn,l as Qs,h as qn,j as Vo,k as Jn,m as Zn,n as Yo,o as Ra,q as hl,x as hm,y as Qn,z as fm,A as bm,B as ym,C as xm,D as Nd,E as Cm,F as Sm,G as ro,H as vr,I as km,J as wm,K as fl,L as jr,M as Ir,N as Ad,O as Xo,P as os,Q as io,S as bl,T as z,U as er,V as lo,W as vm,X as jm,Y as Im,Z as yl,_ as tr,$ as Nm,a0 as Am,a1 as Mm,a2 as Tm,a3 as Nr,a4 as Rm,a5 as Lm,a6 as Em,a7 as Pm,a8 as xl}from"./canvas-runtime-CcSvL_l6.js";import{e as _m,d as Dm}from"./vendor-msgpack-BE8aAsr3.js";import{R as f}from"./app-runtime-xD2Z3NdN.js";import{g as ar,A as Cl,a as ss}from"./index-D32iV1LN.js";import{r as Md}from"./productionAdapterConfig-C5jfk6oG.js";import{getSupabaseBrowserClient as ws}from"./supabaseAuthAdapter-C1dNnpk8.js";import{c as Bm,a as Om,r as Sl}from"./toolHandoff-D5e5f7t5.js";import{a as kl,s as Fm}from"./executionModeSettings-NJqurj-o.js";import{a as wl,p as $m}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";import{A as Yt,W as zm,c as Td,D as Um,E as Jr,R as pn,J as Zr,X as Ct,N as Ar,O as Hm,Q as gn,w as hn,I as fn,V as bn,l as gs,F as St,Y as Wm,Z as Mr,_ as hs,$ as yn,a0 as Rd,a1 as Vm,a2 as Ld,a3 as Ym,i as mo,a4 as Ed,a5 as Xm,a6 as vl,a7 as Gm,a8 as ua,a9 as jl,T as fs,aa as Il,ab as ho,ac as Km,ad as rs,ae as Pd,af as Tr,ag as qm,ah as Jm,f as Zm,ai as Qm,h as co,x as ep,aj as tp,ak as ap,al as Nl,am as Al,an as Ml,g as Tl,ao as Go,H as eo,ap as Ko,s as nr,aq as Rl,ar as np,as as or,at as Ll,au as qo,av as sr,aw as El,ax as Pl,ay as _l,az as op,aA as sp,aB as rp,aC as ip,n as lp,o as to,aD as dp,aE as cp,aF as up,aG as mp,aH as pp,aI as gp,aJ as hp,aK as fp}from"./vendor-icons-678PAT8P.js";const bp=1200,Ba="LocalBridgeOriginalNodeId";function kt(e){return typeof e=="object"&&e!==null}function da(e,t){const o=Number(e);return Number.isFinite(o)?o:t}function W(e){return typeof e=="string"?e:""}function _d(){return typeof window<"u"?{width:window.innerWidth||1280,height:window.innerHeight||720}:{width:1280,height:720}}function Rr(e,t,o){const r=Number(e),d=Number(t),m=Number(o);if(!Number.isFinite(r)||!Number.isFinite(d)||!Number.isFinite(m)||m<=0)return null;const p=1400/m,b=_d();return{x:b.width/2-r*p,y:b.height/2-d*p,scale:p}}function yp(e){return kt(e)?Rr(e.x??e.X,e.y??e.Y,e.z??e.Z):null}function xp(e){if(!kt(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=_d();return{x:(d.width/2-t)/r,y:(d.height/2-o)/r,z:1400/r}}function Cp(e){const t=String(e||"").trim();if(t)try{const o=JSON.parse(t);if(!kt(o))return;const r={};for(const[d,m]of Object.entries(o)){const p=yp(m);p&&(r[d]=p)}return Object.keys(r).length>0?r:void 0}catch{return}}function Sp(e){if(!e||Object.keys(e).length===0)return null;const t={};for(const[o,r]of Object.entries(e)){const d=xp(r);d&&(t[o]=d)}return Object.keys(t).length>0?JSON.stringify(t):null}function bs(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 vs(){return crypto.randomUUID()}function Qr(e){return kt(e)?"ContentType"in e||"Prompt"in e||"Response"in e||"PositionX"in e||"PositionY"in e||"SourceFilePath"in e||"ImageStack"in e:!1}function Dl(e){const t=W(e).trim();if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Lr(e){if(Array.isArray(e))return e;if(!kt(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=Dl(o);if(r)return Lr(r)}for(const t of["ContentJson","contentJson","content_json"])if(t in e){const o=Dl(e[t]);if(o)return Lr(o)}return Qr(e)?[e]:[]}function ei(e){return kt(e)?"BoardId"in e&&("Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e):!1}function Dd(e){if(!kt(e))return 0;for(const t of["Deletes","deletes"]){const o=e[t];if(Array.isArray(o))return o.length}return 0}function ys(e){return Lr(e).filter(Qr)}function Bd(e){return ys(e).length}function kp(e,t){var m;const o=[...ys(e)];if(!ei(t))return o;const r=new Set;for(const p of["Deletes","deletes"]){const b=t[p];if(Array.isArray(b))for(const u of b){const y=W(u).trim();y&&r.add(y)}}if(r.size>0)for(let p=o.length-1;p>=0;p-=1){const b=W((m=o[p])==null?void 0:m.Id).trim();b&&r.has(b)&&o.splice(p,1)}const d=new Map;o.forEach((p,b)=>{const u=W(p.Id).trim();u&&d.set(u,b)});for(const p of ys(t)){const b=W(p.Id).trim(),u=b?d.get(b):void 0;if(u!==void 0){o[u]=p;continue}b&&d.set(b,o.length),o.push(p)}return o}function Od(e){const t=Array.isArray(e)?e.filter(kt):[];return new Map(t.filter(o=>o.NodeId).map(o=>[String(o.NodeId),o]))}async function Er(e,t){for(const o of e)try{const r=await Kr(o,t);return{payload:JSON.parse(r.content),path:o}}catch{}return null}async function wp(e,t){const o=`.mindexec/boards/${e}.msgpack`,r=`boards/${e}.msgpack`;for(const b of[o,r])try{const u=await dm(b,t);return{payload:Dm(u),format:b===o?"msgpack":"legacy-msgpack",path:b}}catch{}const d=`.mindexec/boards/${e}.json`,m=`boards/${e}.json`,p=await Er([d,m],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}, ${m}`)}function Pr(e){const t=W(e.Id).trim()||W(e.BoardId).trim();return t?{Id:t,Title:W(e.Title)||null,Description:W(e.Description)||null,ThumbnailUrl:W(e.ThumbnailUrl)||null,CreatedAt:W(e.CreatedAt)||null,UpdatedAt:W(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:W(e.CameraBookmarks)||null}:null}function Bl(e){return!kt(e)||Qr(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 ti(e){if(Array.isArray(e))return e.filter(Bl).map(t=>Pr(t)).filter(t=>!!t);if(Bl(e)){const t=Pr(e);return t?[t]:[]}return[]}function vp(e){const t=e.toLowerCase();return jp(t)?"remote-control":Ip(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 jp(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 Ip(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 Np(e,t){const o=e.Metadata||{},r=o.ThumbnailUrl,d=o.OriginalUrl,m=o.OriginalPath;return qr(W(r)||W(d)||W(m)||W(e.Response),t)}function Ap(e,t,o){const r=e.ImageStack,d=Array.isArray(r==null?void 0:r.Variants)?r.Variants:[];if(d.length===0)return;const m=d.map((b,u)=>{const y=W(b.AssetId).trim(),w=qr(y,o)||t;return w?{variantId:W(b.VariantId)||`variant-${W(e.Id)||u}`,imageUrl:w,assetId:y||void 0,caption:W(b.Caption)||void 0,sourceNodeId:W(e.Id)||void 0,createdAtUtc:W(b.CreatedAtUtc)||void 0}:null}).filter(b=>!!b);if(m.length===0)return;const p=W(r==null?void 0:r.ActiveVariantId);return{activeVariantId:m.some(b=>b.variantId===p)?p:m[0].variantId,variants:m,kind:W(r==null?void 0:r.Kind)||"versions",title:W(r==null?void 0:r.Title)||void 0,updatedAtUtc:W(r==null?void 0:r.UpdatedAtUtc)||void 0}}function Mp(e,t){return!e||e.variants.length===0?t:(e.variants.find(r=>r.variantId===e.activeVariantId)??e.variants[0]).imageUrl||t}function Tp(e,t,o){var p,b,u,y,w,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:fo(e.imageUrl,t)||e.imageUrl,title:e.title,sourceNodeId:e.id,createdAtUtc:o}]:[];if(r.length===0)return null;const d=r.map(I=>({VariantId:I.variantId||vs(),AssetId:I.assetId||fo(I.imageUrl,t)||I.imageUrl,CreatedAtUtc:I.createdAtUtc||o,Caption:I.caption||I.title||null}));return{ActiveVariantId:(u=e.imageStack)!=null&&u.activeVariantId&&d.some(I=>{var D;return I.VariantId===((D=e.imageStack)==null?void 0:D.activeVariantId)})?e.imageStack.activeVariantId:d[0].VariantId||"",Variants:d,Kind:((y=e.imageStack)==null?void 0:y.kind)||(d.length>1?"pile":"versions"),Title:((w=e.imageStack)==null?void 0:w.title)||e.title||null,UpdatedAtUtc:((L=e.imageStack)==null?void 0:L.updatedAtUtc)||o}}function Rp(e,t){const o=e.Metadata||{};return qr(W(o.OriginalUrl)||W(o.OriginalPath)||W(o.SourceFilePath)||W(e.SourceFilePath)||W(e.Response),t)}function Lp(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 Ep(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 fo(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 Pp(e,t){const o=new Map;for(const r of e){const d=t.get(r.from),m=t.get(r.to);!d||!m||o.has(m)||o.set(m,d)}return o}function _p(e){const t=new Set;return e.map(o=>{var u,y;const r=((u=o.metadata)==null?void 0:u[Ba])||"",d=bs(r)?r:bs(o.id)?o.id:"",m=!!(d&&t.has(d)),p=d&&!m?d:vs(),b=((y=o.metadata)==null?void 0:y[Ba])!==p;return t.add(p),{node:b?{...o,metadata:{...o.metadata??{},[Ba]:p}}:o,originalId:p,assignedNodeId:!d||m,metadataStamped:b,duplicateOriginalId:m}})}function Dp(e,t,o,r,d){var y,w,L;const m=Ep(e.kind),p=m==="image"||m==="mask"?fo(e.imageUrl,d):"",b=["video","pdf","file","directory","embed"].includes(m)?fo(e.assetUrl||e.sourceFilePath||e.body,d):"",u={...e.metadata??{},[Ba]:t,ReactNodeId:e.id,ReactKind:e.kind};if(e.kind==="remote-monitor"&&(u.RemoteHub??(u.RemoteHub="Gated"),u.RemoteRoute??(u.RemoteRoute="Gated"),u.RemoteConnected??(u.RemoteConnected="0"),u.RemoteTotal??(u.RemoteTotal="30"),u.RemotePage??(u.RemotePage="1/1"),u.AdapterState??(u.AdapterState="adapter-gated")),e.kind==="remote-control"&&(u.SemanticType??(u.SemanticType="RemoteFleetDevice"),u.RemoteFleetSchemaVersion??(u.RemoteFleetSchemaVersion="remote-fleet-device@1"),u.RemoteRoute??(u.RemoteRoute="Gated"),u.RemoteInput??(u.RemoteInput="Off"),u.AdapterState??(u.AdapterState="adapter-gated")),e.kind==="mask"&&(u.ImageRouterMask??(u.ImageRouterMask="true"),u.SemanticType??(u.SemanticType="ImageEditMask")),e.kind==="embed"){const I=e.assetUrl||e.body||e.sourceFilePath||"";u.source??(u.source="embed"),u.renderMode??(u.renderMode="card"),u.provider??(u.provider="web"),u.sourceUrl??(u.sourceUrl=I),u.url??(u.url=I),u.AdapterState??(u.AdapterState="local-reference")}return e.kind==="video"&&(u.assetKind??(u.assetKind="video"),u.videoMode??(u.videoMode=(y=e.assetUrl)!=null&&y.startsWith(d)?"local_bridge":"local_reference"),u.AdapterState??(u.AdapterState=((w=e.metadata)==null?void 0:w.PromptOnly)==="true"?"adapter-gated":"local-reference")),(L=e.tags)!=null&&L.length&&(u.ReactTags=JSON.stringify(e.tags)),p&&(u.OriginalUrl=p,u.ThumbnailUrl=p),b&&(u.OriginalPath=b,u.SourceFilePath=b),{Id:t,ContentType:m,Prompt:e.title||m,Response:m==="image"||m==="mask"?p||e.body||null:m==="remote-monitor"?e.body||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":m==="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:u,ImageStack:m==="image"?Tp(e,d,r):null}}function Bp(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 Op(e,t,o){const r=W(e.ContentType)||"note",d=W(e.Prompt).trim(),m=W(e.Response).trim(),p=Lp(e.Metadata),b=W(e.Id).trim();b&&(p[Ba]??(p[Ba]=b));const y=["true","1","yes"].includes(String(p.ImageRouterMask||p.IsMask||"").trim().toLowerCase())?"mask":vp(r),w=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()),I=W(e.SourceFilePath)||p.OriginalPath||p.SourceFilePath||"",D=y==="video"||y==="pdf"||y==="file"||y==="directory"||y==="embed"?Rp(e,o):void 0,J=d||e.SourceFilePath||r||"LocalBridge node",$=y==="image"?m||d||"Image asset":y==="mask"?m||d||"Image mask asset":y==="remote-monitor"?m||d||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="remote-control"?m||d||I||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":y==="pdf"||y==="file"||y==="directory"||y==="embed"?m||I||d||r:m||d||I||"",O=w?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,K=w||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,V=y==="image"||y==="mask"?Np(e,o):void 0,se=y==="image"?Ap(e,V,o):void 0,ne=!!(e.IsChunkedText||p.IsChunkedText==="true"),Ae=da(e.TotalLineCount??p.TotalLineCount,0),be=da(e.ScrollOffset,0),ze=da(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":J,body:$,x:da((t==null?void 0:t.PositionX)??e.PositionX,0),y:da((t==null?void 0:t.PositionY)??e.PositionY,0),width:Math.max(160,Math.min(900,da((t==null?void 0:t.Width)??e.Width,O))),height:Math.max(120,Math.min(900,da((t==null?void 0:t.Height)??e.Height,K))),status:e.IsLoading?"running":y==="ai-task"?"idle":void 0,imageUrl:Mp(se,V),imageStack:se,assetUrl:D,sourceFilePath:I||void 0,isChunkedText:ne||void 0,totalLineCount:ne?Ae:void 0,scrollOffset:ne?be:void 0,maxScroll:ne?ze:void 0,isExpanded:typeof e.IsExpanded=="boolean"?e.IsExpanded:void 0,originalHeight:da(e.OriginalHeight,0)||void 0,tags:w?["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"?Fp(p):y==="remote-control"?$p(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 Fp(e){return{RemoteHub:"Gated",RemoteRoute:"Gated",RemoteConnected:"0",RemoteTotal:"30",RemotePage:"1/1",AdapterState:"adapter-gated",...e}}function $p(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 zp(e,t){const o=[];for(const r of e){const d=String(r.Id||""),m=String(r.ParentId||"");!d||!m||!t.has(d)||!t.has(m)||o.push({id:`edge-local-${m}-${d}`,from:m,to:d,kind:"context"})}return o}async function Up(e=ks()){const t=await Kr(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return(Array.isArray(o)?o.filter(kt):[]).map(m=>Pr(m)).filter(m=>!!m).sort((m,p)=>String(p.UpdatedAt||"").localeCompare(String(m.UpdatedAt||"")))}async function Hp(e){try{const t=await Kr(".mindexec/boards/_metadata.json",e),o=JSON.parse(t.content);return Array.isArray(o)?o.filter(kt):[]}catch{return[]}}async function Wp(e,t,o,r=ks(),d=null){var mt,Me,de,Et,ce,Ue;if((mt=e.source)!=null&&mt.partialImport)throw new Error("This board was imported from a partial original payload. Export is blocked to avoid data loss.");if((Me=e.source)!=null&&Me.truncated)throw new Error("This board was truncated during import. Export is blocked to avoid data loss.");const m=(de=e.source)!=null&&de.exportedByReact?String(e.source.boardId||""):"",p=bs(m),b=bs(m)?m:vs(),u=new Date().toISOString(),y=_p(e.nodes),w=y.map(ee=>ee.node),L=new Map(y.map(ee=>[ee.node.id,ee.originalId])),I=Pp(e.edges,L),D=y.map(({node:ee,originalId:pt})=>Dp(ee,pt,I.get(pt),u,r)),J=y.map(({node:ee,originalId:pt})=>Bp(ee,pt)),$=t.scale>0?t.scale:1,O=(window.innerWidth/2-t.x)/$,K=(window.innerHeight/2-t.y)/$,V=1400/$,se=Number((d==null?void 0:d.x)??((Et=e.viewState)==null?void 0:Et.cursorX)??0),ne=Number((d==null?void 0:d.y)??((ce=e.viewState)==null?void 0:ce.cursorY)??0),Ae=(Ue=e.nodes.find(ee=>ee.kind==="image"&&ee.imageUrl))==null?void 0:Ue.imageUrl,be={Id:b,UserId:"00000000-0000-0000-0000-000000000000",Title:e.name||"Untitled Board",Description:"Exported from MindExec React",ThumbnailUrl:fo(Ae,r)||"",IsPublic:!1,CreatedAt:u,SyncedCloudBoardId:null,LastSyncedAt:null,LastCloudCopyStatus:null,UpdatedAt:u,LastCameraX:O,LastCameraY:K,LastCameraZ:V,LastCursorX:Number.isFinite(se)?se:0,LastCursorY:Number.isFinite(ne)?ne:0,CameraBookmarks:Sp(e.settings.cameraBookmarks)},ze=`.mindexec/boards/${b}.msgpack`,at=`.mindexec/boards/${b}.json`,nt=`.mindexec/boards/${b}.layout.json`,he=`.mindexec/boards/${b}.delta.json`,Z=`boards/${b}.delta.json`,ie=await Hp(r),oe=[be,...ie.filter(ee=>W(ee.Id)!==b)],wt=_m(D);await lm(ze,wt,o,r),await Zs(at,JSON.stringify(D,null,2),o,r),await Zs(nt,JSON.stringify(J,null,2),o,r),await Zs(".mindexec/boards/_metadata.json",JSON.stringify(oe,null,2),o,r);const F=await Promise.allSettled([pl(he,o,r),pl(Z,o,r)]);return f.emit("localBridge.board.exported",{boardId:b,nodes:D.length,edges:e.edges.length,snapshotFormat:"msgpack",msgpackBytes:wt.byteLength,jsonMirror:!0,deltaCleared:F.some(ee=>ee.status==="fulfilled"&&ee.value.success),reusedBoardId:p,stableNodeIds:y.length,assignedNodeIds:y.filter(ee=>ee.assignedNodeId).length,metadataStampedNodeIds:y.filter(ee=>ee.metadataStamped).length,duplicateOriginalNodeIds:y.filter(ee=>ee.duplicateOriginalId).length}),{metadata:be,source:{kind:"localBridge",boardId:b,loadedAt:u,originalNodeCount:D.length,renderedNodeCount:D.length,truncated:!1,exportedByReact:!0,snapshotFormat:"msgpack"},nodes:w,msgpackPath:ze,boardPath:at,layoutPath:nt}}async function Vp(e,t,o=ks()){const r=await wp(e.Id,o);let d=new Map;const m=await Er([`.mindexec/boards/${e.Id}.layout.json`,`boards/${e.Id}.layout.json`],o);m&&(d=Od(m.payload));let p=null;const b=await Er([`.mindexec/boards/${e.Id}.delta.json`,`boards/${e.Id}.delta.json`],o);b&&(p=b.payload);const u=p?ti(p)[0]:null,y=!!(p&&ei(p)),w=y?kp(r.payload,p):r.payload;return Fd(w,t,{boardId:(u==null?void 0:u.Id)??e.Id,title:(u==null?void 0:u.Title)||e.Title||"LocalBridge Board",updatedAt:(u==null?void 0:u.UpdatedAt)??e.UpdatedAt,layoutPayload:Array.from(d.values()),baseUrl:o,cameraBookmarks:(u==null?void 0:u.CameraBookmarks)??e.CameraBookmarks,lastCursorX:(u==null?void 0:u.LastCursorX)??e.LastCursorX,lastCursorY:(u==null?void 0:u.LastCursorY)??e.LastCursorY,deltaApplied:y,deltaUpserts:p?Bd(p):0,deltaDeletes:p?Dd(p):0,snapshotFormat:r.format})}function Fd(e,t,o={}){const r=ys(e),d=ei(e),m=o.deltaUpserts??(d?r.length:0),p=o.deltaDeletes??(d?Dd(e):0),b=o.layoutPayload?Od(o.layoutPayload):new Map,u=r.slice(0,bp),y=u.map(ne=>Op(ne,b.get(String(ne.Id||"")),o.baseUrl??ks())),w=new Set(y.map(ne=>ne.id)),L=zp(u,w),I=r.length>y.length,D=d,J=o.deltaApplied===!0,$=o.boardId||vs(),O=o.updatedAt||new Date().toISOString(),K=Number(o.lastCursorX),V=Number(o.lastCursorY),se=Number.isFinite(K)&&Number.isFinite(V);return f.emit("localBridge.board.loaded",{boardId:$,nodes:y.length,originalNodes:r.length,truncated:I,snapshotFormat:o.snapshotFormat,partialImport:D,deltaImport:d,deltaApplied:J,deltaUpserts:m,deltaDeletes:p}),{id:`localBridge:${$}`,name:o.title||"LocalBridge Board",nodes:y,edges:L,settings:{...t,cameraBookmarks:Cp(o.cameraBookmarks)},viewState:se?{cursorX:K,cursorY:V}:void 0,updatedAt:O,source:{kind:"localBridge",boardId:$,loadedAt:new Date().toISOString(),snapshotFormat:o.snapshotFormat,originalNodeCount:r.length,renderedNodeCount:y.length,truncated:I,partialImport:D,deltaImport:d,deltaApplied:J}}}const ai=["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(","),Yp=/^[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 Xp(e){if(Yp.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 $d(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 Gp(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 _r(e,t=new Date().toISOString()){return e&&!Number.isNaN(Date.parse(e))?e:t}function ni(e){return(e==null?void 0:e.trim().slice(0,90))||"Untitled Board"}function zd(e){const t=$d(e.content_json),o=_r(e.updated_at??t.updatedAt);return{id:e.id,name:ni(e.title??t.name),updatedAt:o,createdAt:_r(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 Kp(e,t){var w,L;const o=$d(e.content_json),r=_r(e.updated_at??o.updatedAt),d=Number((w=o.viewState)==null?void 0:w.cursorX),m=Number((L=o.viewState)==null?void 0:L.cursorY),p=Number(e.last_cursor_x),b=Number(e.last_cursor_y),u=Number.isFinite(d)&&Number.isFinite(m),y=Number.isFinite(p)&&Number.isFinite(b);return{id:e.id,name:ni(e.title??o.name),nodes:Array.isArray(o.nodes)?o.nodes:[],edges:Array.isArray(o.edges)?o.edges:[],settings:o.settings??t,viewState:u?{cursorX:d,cursorY:m}: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 oi(e){var u;const t=Md(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=ws(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:m,error:p}=await o.auth.getUser(),b=((u=m.user)==null?void 0:u.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 qp(e){const t=await oi(e);if(!t.userId)return[];const o=ws(e);if(!o)return[];f.emit("projectStorage.cloud.list.requested");const{data:r,error:d}=await o.from("boards").select(ai).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 m=(r??[]).map(zd);return f.emit("projectStorage.cloud.list.loaded",{count:m.length}),m}async function Jp(e,t,o){const r=await oi(e);if(!r.userId)return null;const d=ws(e);if(!d)return null;f.emit("projectStorage.cloud.load.requested",{boardId:t});const{data:m,error:p}=await d.from("boards").select(ai).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(!m)return null;const b=Kp(m,o);return f.emit("projectStorage.cloud.load.loaded",{boardId:t,nodes:b.nodes.length,edges:b.edges.length}),b}async function Zp(e,t,o,r=null){var se,ne;const d=await oi(e);if(!d.userId)return null;const m=ws(e);if(!m)return null;const p=Xp(t.id),b=new Date().toISOString(),u=ni(t.name),y=Number((r==null?void 0:r.x)??((se=t.viewState)==null?void 0:se.cursorX)??0),w=Number((r==null?void 0:r.y)??((ne=t.viewState)==null?void 0:ne.cursorY)??0),L={...t.viewState??{},cursorX:Number.isFinite(y)?y:0,cursorY:Number.isFinite(w)?w:0},I={...t,id:p,name:u,viewState:L,updatedAt:b},D={p_board_id:p,p_title:u,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:J}=await m.rpc("save_board_snapshot",D);if(J)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-rpc",boardId:p,message:J.message}),J;const $={content_json:Gp(I),updated_at:b},{data:O,error:K}=await m.from("boards").update($).eq("id",p).eq("user_id",d.userId).select(ai).maybeSingle();if(K)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-json-mirror",boardId:p,message:K.message}),K;const V=O?zd(O):{id:p,name:u,updatedAt:b,createdAt:b,nodeCount:t.nodes.length,edgeCount:t.edges.length,sourceKind:"cloud"};return f.emit("projectStorage.cloud.save.saved",{boardId:V.id,nodes:V.nodeCount,edges:V.edgeCount}),V}function Dr(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 Qp(e,t={},o=Dr(e),r){if(e.length===0)return{after:new Map,boundsAfter:o};const d=fg(t.mode),m=bg(t.order),p=yg(t.anchor),b=xg(t.sizeMode),u=Math.max(0,t.gapX??24),y=Math.max(0,t.gapY??24),w=Math.max(1,t.maxColumns??12),L=Br(t.quantile??.75,.05,.95),I=e.map(eg),D=ug(I,m),J=D.map(be=>be.width),$=D.map(be=>be.height),O=Math.max(1,t.cellWidth??Fl(J,L)),K=Math.max(1,t.cellHeight??Fl($,L)),V=Math.max(1,t.targetWidth??O),se=Math.max(1,t.targetHeight??K),ne=cg(p,o);if(d==="grid"){rg(D,b,V,se,O,K);const be=Ol(t.columns,w,o.maxX-o.minX,O,u);ag(D,ne.x,ne.y,be,O,K,u,y)}else if(d==="masonry"){ig(D,b==="preserve"?"uniformWidth":b,V);const ze=Ol(t.columns,w,o.maxX-o.minX,V,u);ng(D,ne.x,ne.y,ze,V,u,y)}else d==="stripHorizontal"?(lg(D,b==="preserve"?"uniformHeight":b,se),og(D,ne.x,ne.y,u,se)):(dg(D,b==="preserve"?"uniformWidth":b,V),sg(D,ne.x,ne.y,y,V));let Ae=new Map(D.map(be=>[be.id,tg(be)]));return p==="selectionBoundsCenter"&&(Ae=pg(o,Ae)),t.snapToGrid&&(Ae=gg(Ae,Math.max(1,t.gridSize??8))),{after:Ae,boundsAfter:Dr(Array.from(Ae.values()))}}function eg(e){return{...e,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function tg(e){return{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function ag(e,t,o,r,d,m,p,b){e.forEach((u,y)=>{const w=Math.floor(y/r),L=y%r,I=t+L*(d+p),D=o+w*(m+b);u.x=I+(d-u.width)/2,u.y=D+(m-u.height)/2})}function ng(e,t,o,r,d,m,p){const b=Array.from({length:r},()=>0);for(const u of e){const y=hg(b),w=t+y*(d+m);u.x=w+(d-u.width)/2,u.y=o+b[y],b[y]+=u.height+p}}function og(e,t,o,r,d){let m=t;for(const p of e)p.x=m,p.y=o+(d-p.height)/2,m+=p.width+r}function sg(e,t,o,r,d){let m=o;for(const p of e)p.x=t+(d-p.width)/2,p.y=m,m+=p.height+r}function rg(e,t,o,r,d,m){if(t==="fitCellDownOnly")for(const p of e){const b=Math.min(1,d/p.width,m/p.height);p.width*=b,p.height*=b}else t==="uniformWidth"?si(e,o):t==="uniformHeight"&&Ud(e,r)}function ig(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}si(e,o)}function lg(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}Ud(e,o)}function dg(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}si(e,o)}function si(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 Ud(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 Ol(e,t,o,r,d){if(typeof e=="number"&&e>0)return Math.round(Br(e,1,t));if(o<=1||r<=1)return 1;const m=Math.floor((o+d)/(r+d));return!Number.isFinite(m)||m<1?1:Math.round(Br(m,1,t))}function cg(e,t,o){return{x:t.minX,y:t.minY}}function ug(e,t){return t==="selectionOrder"?[...e].sort((o,r)=>o.selectionIndex-r.selectionIndex):mg(e)}function mg(e){const t=[...e].sort((u,y)=>u.y-y.y||u.x-y.x);if(t.length<=2)return t;const o=t.map(u=>u.height).sort((u,y)=>u-y),r=o[Math.floor(o.length/2)]??1,d=Math.max(16,r*.35),m=[];let p=[],b=Number.NaN;for(const u of t)p.length===0?(p=[u],b=u.y):Math.abs(u.y-b)<=d?(p.push(u),b=(b*(p.length-1)+u.y)/p.length):(m.push([...p].sort((y,w)=>y.x-w.x)),p=[u],b=u.y);return p.length>0&&m.push([...p].sort((u,y)=>u.x-y.x)),m.flat()}function pg(e,t){if(t.size===0)return t;const o=Dr(Array.from(t.values())),r=e.minX+(e.maxX-e.minX)/2,d=e.minY+(e.maxY-e.minY)/2,m=o.minX+(o.maxX-o.minX)/2,p=o.minY+(o.maxY-o.minY)/2,b=r-m,u=d-p;return new Map(Array.from(t.entries()).map(([y,w])=>[y,{...w,x:w.x+b,y:w.y+u}]))}function gg(e,t){return new Map(Array.from(e.entries()).map(([o,r])=>[o,{...r,x:$l(r.x,t),y:$l(r.y,t)}]))}function Fl(e,t){if(e.length===0)return 1;const o=[...e].sort((b,u)=>b-u),r=(o.length-1)*t,d=Math.floor(r),m=Math.min(o.length-1,d+1),p=r-d;return o[d]*(1-p)+o[m]*p}function hg(e){let t=0;for(let o=1;o<e.length;o+=1)e[o]<e[t]&&(t=o);return t}function $l(e,t){return Math.round(e/t)*t}function fg(e){const t=js(e);return t==="grid"?"grid":t==="striphorizontal"||t==="striph"?"stripHorizontal":t==="stripvertical"||t==="stripv"?"stripVertical":"masonry"}function bg(e){return js(e)==="selectionorder"?"selectionOrder":"spatialReading"}function yg(e){const t=js(e);return t==="selectionboundscenter"?"selectionBoundsCenter":t==="viewporttopleft"?"viewportTopLeft":"selectionBoundsTopLeft"}function xg(e){const t=js(e);return t==="fitcelldownonly"?"fitCellDownOnly":t==="uniformwidth"?"uniformWidth":t==="uniformheight"?"uniformHeight":"preserve"}function js(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")}function Br(e,t,o){return Math.min(o,Math.max(t,e))}const Hd=300,Wd=50*1024*1024,Cg=800;function we(e){return typeof e=="string"?e.length*2:0}function Sg(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 kg(e){let t=1024+we(e.id)+we(e.name)+we(e.updatedAt);return t+=e.nodes.reduce((o,r)=>o+Sg(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 Vd(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:kg(e)}}function zl(e,t={}){const o=t.maxEntries??Hd,r=t.maxBytes??Wd;let d=e.slice(Math.max(0,e.length-o)),m=d.reduce((p,b)=>p+b.estimatedBytes,0);for(;d.length>1&&m>r;){const[p,...b]=d;m-=(p==null?void 0:p.estimatedBytes)??0,d=b}return d}function La(e,t,o={}){const r=Vd(t,o),d=o.mergeWindowMs??Cg,m=e.slice(),p=m.at(-1);return p&&r.mergeKey&&p.mergeKey===r.mergeKey&&r.timestampMs-p.timestampMs<d?(m[m.length-1]={...p,description:r.description,timestampMs:r.timestampMs,estimatedBytes:Math.max(p.estimatedBytes,r.estimatedBytes)},zl(m,o)):(m.push(r),zl(m,o))}function wg(e,t,o={}){const r=Vd(t,o),d=o.maxEntries??Hd,m=o.maxBytes??Wd;let p=[r,...e].slice(0,d),b=p.reduce((u,y)=>u+y.estimatedBytes,0);for(;p.length>1&&b>m;){const u=p.at(-1);b-=(u==null?void 0:u.estimatedBytes)??0,p=p.slice(0,-1)}return p}function Is(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 ao(e,t){return!!Is(e,t)}function Yd(e){if(!e||!e.trim())return!1;const t=e.trim();return/^(https?:|blob:|data:|file:)/i.test(t)}function Xd(e){if(!e)return"";const t=Is(e,"OriginalPath");if(t)return t;const o=String(e.body||"").trim();return Yd(o)?"":o}function Gd(e){return e?Xd(e)||String(e.sourceFilePath||"").trim()||String(e.assetUrl||"").trim()||String(e.imageUrl||"").trim()||String(e.body||"").trim():""}function Kd(e){return Is(e,"ThumbnailUrl","thumbnailUrl")}function vg(e){if(!e||e.kind!=="image")return!1;if(ao(e,"ImageGenerationProvider")||ao(e,"GeneratedImageSourceWidth")||ao(e,"GeneratedImageSourceHeight")||ao(e,"CodexImageQuality")||ao(e,"ImageRouterRevisedPrompt"))return!0;const t=Is(e,"RequestedMediaOperation");return["text2image","image2image","inpaint"].includes(t.toLowerCase())}function ri(e){if(!e)return"";if(e.kind==="image"||e.kind==="mask"){const t=vg(e)?Xd(e):"",o=Kd(e),r=String(e.body||"").trim();return t||o||String(e.imageUrl||"").trim()||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()||(Yd(r)?r:"")}return Gd(e)||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()}function qd(e){if(!e)return"";const t=Gd(e)||e.title||e.kind;return String(t||"").replace(/\\/g,"/").replace(/\/+$/,"").split("/").filter(Boolean).pop()||e.title||e.kind}const jg=2048,Ig=16e3,rr=1024,ir=64,Ng=2048,lr=3,Ag=16,Mg=256,Tg=new Set(["text","note","memo","markdown","code","directory"]),Rg=/[\p{L}\p{M}\p{N}]{2,}/gu,Ul=4,Lg=8,Hl=1.35;function Eg(e){return Tg.has(String(e||"").trim().toLowerCase())}function Pg(e){const t=e.map(Dg),o=new Map,r=new Map,d=new Map,m=new Map;for(const p of t){o.set(p.id,p);for(const b of p.tokens)dr(r,b,p.id);for(const b of p.prefixes)dr(d,b,p.id);for(const b of p.ngrams)dr(m,b,p.id)}return{documents:t,documentById:o,tokenIndex:r,prefixIndex:d,ngramIndex:m}}function _g(e,t,o={}){const r=Math.max(1,Math.trunc(Number(o.limit||30))),d=cn(t),m=Wl(e,0,0,o.viewport,0);if(!d)return{hits:[],profile:m};const p=Array.from(Jd(d)),b=Array.from(Zd(p)),u=ec(d),y=Array.from(Qd(u)),w=new Map;for(const $ of p)cr(e.tokenIndex,$,w,8);for(const $ of b)cr(e.prefixIndex,$,w,$.length<=3?4:2);for(const $ of y)cr(e.ngramIndex,$,w,1.15);const L=$g(e,w,r),I=zg(o.allowedContentTypes),D=[];for(const $ of L){const O=e.documentById.get($);if(!O||I&&!I.has(O.contentType))continue;const K=Og(O,d,p,y);if(K<=0)continue;const V=Fg(O,o.viewport??null);D.push({nodeId:O.id,score:K+V,textScore:K,viewportBoost:V})}D.sort(($,O)=>O.score-$.score||$.nodeId.localeCompare(O.nodeId));const J=D.slice(0,r);return{hits:J,profile:Wl(e,L.length,J.length,o.viewport,J.filter($=>$.viewportBoost>0).length)}}function cn(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 m of o){if(/\s/u.test(m)){d||(r+=" ",d=!0);continue}Ug(m)||(r+=m,d=!1)}return r.trim()}function Jd(e){return new Set(e.match(Rg)??[])}function Zd(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 Qd(e){const t=new Set;if(!e.trim())return t;if(e.length<=lr)return t.add(e),t;for(let o=0;o<=e.length-lr;o+=1)t.add(e.slice(o,o+lr));return t}function Dg(e){const t=String(e.kind??"").trim().toLowerCase(),o=_a(e.prompt??e.title,jg),r=Eg(t)?_a(e.response??e.body,Ig):"",d=Bg(e.metadata,e.tags,e.metadataText),m=_a(e.sourceFilePath||e.assetUrl,Ng),p=cn(o),b=cn(r),u=cn(d),y=cn(m),w=cn(t),L=[p,u,y,b,w].filter(Boolean).join(" "),I=Jd(L);return{id:String(e.id),contentType:t,normalizedPrompt:p,normalizedResponse:b,normalizedMetadata:u,normalizedSourcePath:y,normalizedContentType:w,tokens:I,prefixes:Zd(I),ngrams:Qd(ec(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 Bg(e,t,o){const r=[];let d=0;if(e)for(const[m,p]of Object.entries(e)){if(d>=ir)break;!String(m??"").trim()&&!String(p??"").trim()||(r.push(_a(m,128)),String(p??"").trim()&&r.push(_a(p,rr)),d+=1)}return d<ir&&(t!=null&&t.length)&&(r.push("tags",_a(t.join(" "),rr)),d+=1),d<ir&&(o!=null&&o.trim())&&r.push("metadata",_a(o,rr)),r.join(" ")}function Og(e,t,o,r){let d=0;e.normalizedPrompt===t?d+=120:no(e.normalizedPrompt,t)&&(d+=54),no(e.normalizedMetadata,t)&&(d+=26),no(e.normalizedSourcePath,t)&&(d+=18),no(e.normalizedResponse,t)&&(d+=14),no(e.normalizedContentType,t)&&(d+=8);for(const m of o)e.tokens.has(m)&&(d+=7),e.normalizedPrompt.startsWith(m)&&(d+=10);for(const m of r)e.ngrams.has(m)&&(d+=.85);return d}function Fg(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),m=Math.abs(r-t.centerY)/Math.max(1,t.halfHeight),p=Math.sqrt(d*d+m*m);if(p<=1)return Ul+(1-p)*Lg;if(p<=Hl){const b=1-(p-1)/Math.max(.001,Hl-1);return Math.max(0,b)*(Ul*.75)}return 0}function $g(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*Ag,Mg)).map(([r])=>r)}function zg(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 Wl(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 dr(e,t,o){const r=e.get(t);if(r){r.add(o);return}e.set(t,new Set([o]))}function cr(e,t,o,r){const d=e.get(t);if(d)for(const m of d)o.set(m,(o.get(m)??0)+r)}function ec(e){let t="";for(const o of e)/\s/u.test(o)||(t+=o);return t}function _a(e,t){const o=String(e??"");return o.length<=t?o:o.slice(0,t)}function no(e,t){return!!(e&&t&&e.includes(t))}function Ug(e){const t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}const Hg=2147483647,Wg="LocalBridge access is enabled, but the bridge is not reachable. Restart LocalBridge, allow Chrome local-network access, then reload MindCanvas.",Vg="Local storage is unavailable in the hosted app until browser local storage or LocalBridge access is available.",Yg="Local storage is unavailable. Check the browser-local storage state or LocalBridge connection.",Xg="Cloud projects are unavailable until Supabase and Cloudflare R2 are configured.",Gg="Login is required before cloud projects can be used.",Kg="Cloud projects are unavailable.";function qg(e){return e.bridgeProviderConfigured||e.browserProviderConfigured||e.embeddedProviderConfigured}function Or(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 Jg(e){return Or(e,!1).isAvailable?"local":ii(e)?"cloud":Or(e,!0).isAvailable?"local":e.cloudConfigured?"cloud":"local"}function ii(e){return e.cloudConfigured&&e.cloudSessionAvailable}function Zg(e,t){return t.providerKind==="bridge"&&!t.bridgeReachable?Wg:e.hostedWebApp?Vg:Yg}function Qg(e){return e.cloudConfigured?ii(e)?Kg:Gg:Xg}function eh(e){var w,L,I;const t=ii(e),o=Or(e,!0),r=qg(e),d=e.cloudConfigured,m=o.isAvailable,p=t;let b=e.storedMode??Jg(e);b==="cloud"&&(!d||!p&&m)?b=m?"local":"cloud":b==="local"&&(!r&&d||!m&&p)&&(b="cloud");const u=e.cloudAccess,y=((w=u==null?void 0:u.denialReason)==null?void 0:w.trim())||void 0;return{currentMode:b,showLocalTab:r,showCloudTab:d,isLocalAvailable:o.isAvailable,isCloudAvailable:t,requiresCloudSignIn:e.cloudConfigured&&!t,canUseLocalProjects:m,canBrowseLocalWorkspace:o.canBrowseWorkspace,localProviderKind:o.providerKind,canUseCloudProjects:p,canSyncLocalToCloud:m&&p,cloudPlanKey:((L=u==null?void 0:u.planKey)==null?void 0:L.trim())||"free",cloudEntitlementStatus:((I=u==null?void 0:u.entitlementStatus)==null?void 0:I.trim())||(u?"active":"inactive"),currentCloudBoardCount:(u==null?void 0:u.currentBoardCount)??0,cloudBoardLimit:(u==null?void 0:u.cloudBoardLimit)??Hg,lockedCloudBoardCount:(u==null?void 0:u.lockedBoardCount)??0,canCreateCloudBoards:(u==null?void 0:u.canCreateBoard)??p,canUseManagedAi:(u==null?void 0:u.canUseManagedAi)??!1,canGenerateImage:(u==null?void 0:u.canGenerateImage)??!1,canUseContextPack:(u==null?void 0:u.canUseContextPack)??!1,cloudLimitMessage:y,localStatusMessage:o.isAvailable?void 0:Zg(e,o),cloudStatusMessage:p?void 0:Qg(e)}}function th(){const e=new Error("Queued operation was cancelled before it started.");return e.name="AbortError",e}class ah{constructor(){ul(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 m;return m=(async()=>{try{try{await d}catch{}if(r!=null&&r.aborted)throw th();return await o(r)}finally{this.tails.get(t)===m&&this.tails.delete(t)}})(),this.tails.set(t,m),m}clear(t){if(typeof t>"u"){this.tails.clear();return}this.tails.delete(t)}}const Fr="mindexec-local-mode-warning-dismissed-v1";function nh(){try{return window.localStorage.getItem(Fr)==="true"}catch{return!1}}function tc(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 oh(e,t,o){var d,m,p,b,u;if(e!=="connected")return t||tc(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,(m=o==null?void 0:o.exec)!=null&&m.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,(u=o==null?void 0:o.project)!=null&&u.isOpen?"project open":null].filter(Boolean);return r.length>0?`LocalBridge connected. ${r.join(" / ")}`:"LocalBridge connected."}function sh({state:e,message:t,status:o,hostedBridgeAccessEnabled:r,onRefresh:d,onEnableHostedBridge:m}){const p=g.useMemo(()=>e==="checking"?n.jsx(Yt,{size:14,className:"spin-icon"}):e==="connected"?n.jsx(zm,{size:14}):e==="blocked"?n.jsx(Td,{size:14}):e==="unavailable"?n.jsx(Um,{size:14}):n.jsx(Jr,{size:14}),[e]);return n.jsxs("div",{className:`runtime-status-pill runtime-status-pill--${e}`,title:oh(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:tc(e,o)}),e==="blocked"&&!r&&n.jsx("button",{type:"button",className:"runtime-status-pill__action",onClick:m,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(pn,{size:13})})]})}function rh({status:e,message:t}){const r={ready:{icon:n.jsx(Ar,{size:14}),label:"Saved locally",title:"Board state is saved in this browser."},syncing:{icon:n.jsx(Yt,{size:14,className:"spin-icon"}),label:"Saving",title:"Saving board state to this browser."},error:{icon:n.jsx(Zr,{size:14}),label:"Save error",title:"Board state could not be saved locally."},offline:{icon:n.jsx(Jr,{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 ih({visible:e}){const[t,o]=g.useState(nh);if(!e||t)return null;const r=()=>{o(!0);try{window.localStorage.setItem(Fr,"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":Fr,children:[n.jsx("div",{className:"runtime-local-warning__icon","aria-hidden":"true",children:n.jsx(Zr,{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(Ct,{size:14})})]})}function lh({bridgeState:e,bridgeMessage:t,bridgeStatus:o,syncStatus:r,syncMessage:d,hostedBridgeAccessEnabled:m,onRefreshBridge:p,onEnableHostedBridge:b,showLocalModeWarning:u=!0}){return n.jsxs("aside",{className:"runtime-status-cluster","aria-label":"Runtime status","data-testid":"runtime-status-cluster","data-local-mode-visible":u?"true":"false",children:[n.jsxs("div",{className:"runtime-status-row",children:[n.jsx(sh,{state:e,message:t,status:o,hostedBridgeAccessEnabled:m,onRefresh:p,onEnableHostedBridge:b}),n.jsx(rh,{status:r,message:d})]}),n.jsx(ih,{visible:u})]})}const dh=/^data:image\//i;function ch(e){const t=String(e||"").trim();if(!t)return{src:null,reason:"empty",urlKind:"empty"};const o=t.toLowerCase();return dh.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 ur({src:e,alt:t="",className:o="",testId:r="secure-image",traceId:d,kind:m="image",title:p}){const b=g.useMemo(()=>ch(e),[e]),[u,y]=g.useState(b.src?"loading":"blocked");g.useEffect(()=>{const D=b.src?"loading":"blocked";y(D),b.src||f.emit("secureImage.blocked",{id:d,kind:m,reason:b.reason,urlKind:b.urlKind})},[m,b.reason,b.src,b.urlKind,d]);const w=()=>{y("loaded"),f.emit("secureImage.loaded",{id:d,kind:m,urlKind:b.urlKind})},L=()=>{y("error"),f.emit("secureImage.error",{id:d,kind:m,urlKind:b.urlKind})},I=u==="blocked"?`Image blocked: ${b.reason||"unsupported source"}`:"Image failed to load";return n.jsxs("div",{className:`secure-image secure-image--${u} ${o}`.trim(),"data-testid":r,"data-secure-image-state":u,"data-secure-image-kind":m,title:u==="loaded"?p:I,children:[b.src&&n.jsx("img",{src:b.src,alt:t,loading:"lazy",decoding:"async",draggable:!1,onLoad:w,onError:L}),u==="loading"&&n.jsx("span",{className:"secure-image__loading","aria-hidden":"true",children:n.jsx("span",{})}),(u==="blocked"||u==="error")&&n.jsx("span",{className:"secure-image__fallback",role:"img","aria-label":I,children:u==="blocked"?n.jsx(Hm,{size:18}):n.jsx(Zr,{size:18})})]})}const uh={note:hs,text:St,"ai-task":gn,image:fn,mask:fn,video:bn,embed:yn,code:hn,markdown:St,"csv-table":St,memo:hs,pdf:St,file:Mr,directory:Wm,"template-launcher":St,"remote-monitor":gs,"remote-control":gs},mr=[{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."}],Vl=500,mh=48,ph=new Set(["mindcanvasagent","agentcommand"]),gh=new Set(["codenote","code-note"]),hh=["multidesktopmonitor","remotehubmonitor","remotefleetmonitor","smartviewmonitor"],fh=["remotedevice","remotefleetdevice","remotecontrol"];function bh(e){const t=xn(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=xn(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=xn(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-monitor"||t==="remotefleetmonitor"||o==="fleet-monitor"||r==="remote-fleet@1"||nc(e,["RemoteFleetViewMode","RemoteFleetHubStatus","RemoteFleetDevicesJson","RemoteFleetDeviceCount","RemoteFleetConnectedDeviceCount","RemoteFleetProjectionMode","RemoteFleetCanvasPagination","RemoteHub","RemoteRoute","RemotePage","RemoteVisibleBudget"])||ac(e,hh,["remote","monitor"])}function yh(e){const t=xn(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),o=xn(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=xn(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-control"||t==="remotefleetdevice"||o==="fleet-device"||r==="remote-fleet-device@1"||nc(e,["RemoteFleetDeviceId","RemoteFleetDeviceName","RemoteFleetDevicePlatform","RemoteFleetDeviceConnected","RemoteFleetDeviceCanControl","RemoteFleetSourceMonitorNodeId"])||ac(e,fh,["remote","control"])}function ac(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 xn(e,...t){const o=e.metadata??{};for(const d of t){const m=o[d];if(m!=null)return String(m)}const r=new Set(t.map(d=>d.toLowerCase()));for(const[d,m]of Object.entries(o))if(r.has(d.toLowerCase())&&m!==void 0&&m!==null)return String(m);return""}function nc(e,t){const o=e.metadata??{},r=new Set(t.map(d=>d.toLowerCase()));return Object.entries(o).some(([d,m])=>r.has(d.toLowerCase())&&m!==void 0&&m!==null&&String(m).trim()!=="")}const $r=[{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"}],xh=g.memo(function({node:t,selected:o,pulsing:r,connectionDraft:d,onSelect:m,onDragStart:p,onResizeStart:b,onPatch:u,onDelete:y,onDuplicate:w,onRun:L,onPin:I,onOpenResult:D,onToggleAiReference:J,onCopyNode:$,onCopyEmbedReference:O,onFitNodeHeight:K,onToggleNodeExpanded:V,onToggleWordWrap:se,onStageCompany:ne,onOpenCompanyGraph:Ae,onSyncCompanyGoal:be,onRefreshCompany:ze,onSetCompanyStatus:at,onRemoveCompany:nt,onOpenAsset:he,onOpenDirectorySettings:Z,onScanDirectory:ie,onCreateRemoteControl:oe,onGenerateTemplateCard:wt}){var En,jo,lt,$t,ka,Ga,na,Ka,te,Ve,qa,Pn,v,U,ae,Io,Ye,zt,Ut,Ja,Za,_n,Dn,Qa,Bn,wa,On,en,va,oa,Be,_e,tn,Fn,No;const F=String(((En=t.metadata)==null?void 0:En.AutomationNodeKind)||((jo=t.metadata)==null?void 0:jo.AutomationTemplateKey)||((lt=t.metadata)==null?void 0:lt.AutomationInferredKind)||"").trim().toLowerCase(),mt=String((($t=t.metadata)==null?void 0:$t.SemanticType)||((ka=t.metadata)==null?void 0:ka.semanticType)||"").trim().toLowerCase(),Me=t.kind==="memo"&&ph.has(mt),de=t.kind==="memo"&&gh.has(mt),Et=String(((Ga=t.metadata)==null?void 0:Ga.AgentCommandStatus)||"Draft"),ce=String(((na=t.metadata)==null?void 0:na.AgentCommandMode)||"Task"),Ue=String(((Ka=t.metadata)==null?void 0:Ka.AgentCommandRequestedRole)||"Researcher"),ee=String(((te=t.metadata)==null?void 0:te.CodeNoteStatus)||"Draft"),pt=String(((Ve=t.metadata)==null?void 0:Ve.CodeNoteSyncState)||"Unlinked"),Gt=String(((qa=t.metadata)==null?void 0:qa.CodeNoteKind)||"Feature"),Oa=Me?gn:de?hn:F==="image-generate"?fn:F==="video-generate"?bn:uh[t.kind],wn=d&&d.from!==t.id,bo=t.kind==="ai-task",Le=t.kind==="pdf"||t.kind==="file"||t.kind==="directory",Fa=bh(t),Kt=yh(t),Oe=Fa||Kt,Te=Fa?"monitor":Kt?"control":"",ue=t.kind==="template-launcher"||String(((Pn=t.metadata)==null?void 0:Pn.semanticType)||((v=t.metadata)==null?void 0:v.SemanticType)||"").toLowerCase()==="templatelauncher",vt=t.kind==="video",ve=t.kind==="embed",jt=t.kind==="mask",ye=t.kind==="memo",ot=t.kind==="markdown",st=t.kind==="csv-table",Fe=ye?Ah(t):null,pe=g.useRef(null),vn=vt?oc(t):"",qe=vt?Th(t):"",$e=ve?Rh(t):"",It=ve?Lh(t):"",yo=ve?Eh(t,$e):"",De=ve?Ph(t):"",Ee=(((U=t.imageStack)==null?void 0:U.variants)??[]).filter(x=>!!x.imageUrl),gt=Ee.find(x=>{var _;return x.variantId===((_=t.imageStack)==null?void 0:_.activeVariantId)})??Ee[0]??null,Pt=t.kind==="image"||jt?(gt==null?void 0:gt.imageUrl)||ri(t):"",pa=gt?Ee.findIndex(x=>x.variantId===gt.variantId):-1,$a=!Pt&&!Le&&!Oe&&!ue&&!vt&&!ve,xo=$a&&!ye,qt=t.isExpanded===!1&&Number(t.originalHeight??0)>t.height+1,jn=!Oe&&!["image","mask","video","embed","pdf","file","directory","template-launcher","remote-monitor","remote-control"].includes(t.kind),rt=t.aiEnabled!==!1,He=Mh(t),Je=!!(t.isChunkedText||((ae=t.metadata)==null?void 0:ae.IsChunkedText)==="true"),ga=Number(t.totalLineCount??((Io=t.metadata)==null?void 0:Io.TotalLineCount)??0),Co=t.sourceFilePath||((Ye=t.metadata)==null?void 0:Ye.FileName)||t.title,xe=Je?n.jsxs("div",{className:"node-chunked-text-state","data-testid":"node-chunked-text-state",title:Co,children:[n.jsx(St,{size:12}),n.jsx("strong",{children:"Chunked text"}),Number.isFinite(ga)&&ga>0&&n.jsxs("span",{children:[ga.toLocaleString()," lines"]})]}):null,Jt=t.kind==="directory"?(zt=t.metadata)==null?void 0:zt.Include:null,za=t.kind==="directory"?(Ut=t.metadata)==null?void 0:Ut.Exclude:null,In=t.kind==="directory"?(Ja=t.metadata)==null?void 0:Ja.DirectoryFileCount:null,Pe=t.kind==="directory"?(Za=t.metadata)==null?void 0:Za.DirectoryDirCount:null,Nt=t.kind==="directory"?(_n=t.metadata)==null?void 0:_n.DirectoryLastScanUtc:null,[Ua,Ha]=g.useState(!1),[Wa,We]=g.useState(null),[Ns,Nn]=g.useState(((Dn=t.metadata)==null?void 0:Dn.CompanyExecutionMode)||"Auto"),[ha,Va]=g.useState(((Qa=t.metadata)==null?void 0:Qa.CompanySubAgents)!=="false"),[Zt,fa]=g.useState(!1),[At,Ya]=g.useState(null),ba=g.useMemo(()=>st?wh(t.body,At):null,[At,st,t.body]),le=g.useMemo(()=>ue?Id(t.body):null,[ue,t.body]),ht=(le==null?void 0:le.options.find(x=>x.id===le.selectedOptionId))??(le==null?void 0:le.options[0])??null,Qt=cm(le),_t=mr.find(x=>x.key===Ns)||mr[0],Dt=String(((Bn=t.metadata)==null?void 0:Bn.CompanyStatus)||(t.companyMode?"Staged":"")).trim(),Bt=Dt.toLowerCase(),ea=Bt==="paused",ft=Bt==="archived",As=x=>{x.stopPropagation();const _=x.currentTarget.getBoundingClientRect();We(Sh(_)),Ha(re=>!re)},Ms=x=>{x.stopPropagation(),ne(t.id,{executionMode:_t.key,enableSubAgents:ha}),Ha(!1)},So=x=>{x.stopPropagation(),Ae(t.id)},ya=(x,_)=>{_.stopPropagation();const re=Ee.find(Qe=>Qe.variantId===x);!re||!t.imageStack||re.variantId===t.imageStack.activeVariantId||(f.emit("node.imageStack.variant",{nodeId:t.id,variantId:re.variantId,variantCount:Ee.length}),u(t.id,{imageUrl:re.imageUrl,imageStack:{...t.imageStack,activeVariantId:re.variantId,variants:Ee,updatedAtUtc:new Date().toISOString()},metadata:{...t.metadata??{},ImageStackActiveVariantId:re.variantId}}))},Ts=(x,_)=>{if(_.stopPropagation(),!!ye){if((Fe==null?void 0:Fe.key)===x){fa(!1);return}f.emit("node.memoColor.changed",{id:t.id,colorKey:x}),u(t.id,{metadata:{...t.metadata??{},memoColor:x,memoColorIsCustom:"true"}}),fa(!1)}},An=x=>{var Xe,$n;if(x.stopPropagation(),!Me)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."],Qe=["canvas-context","agent-command-planning","adapter-gated-execution"],Mt=["Canvas.ListAgentCommands","Canvas.UpdateAgentCommand","Canvas.PlanAgentCommand","Canvas.SetAgentCommandState"],Re=["MindCanvasAgent",ce,Ue],et=["Local React plan staged for this Agent Command.",`Role: ${Ue}`,`Mode: ${ce}`,`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:ce,requestedRole:Ue,adapterState:((Xe=t.metadata)==null?void 0:Xe.AdapterState)??"adapter-gated"}),u(t.id,{tags:["Agent Command",Ue,"Planned"],metadata:{...t.metadata??{},AgentCommandStatus:"Planned",AgentCommandPlannerSummary:et,AgentCommandPlanSteps:JSON.stringify(re),AgentCommandPlannedSkills:JSON.stringify(Qe),AgentCommandPlannedTools:JSON.stringify(Mt),AgentCommandPlannedConcepts:JSON.stringify(Re),AgentCommandLastExplorationPhase:"planned-local",AdapterState:(($n=t.metadata)==null?void 0:$n.AdapterState)??"adapter-gated"}})},xa=x=>{var Mt,Re;if(x.stopPropagation(),!Me)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
  `),Qe=[`${_} Local React execution staged.`,`${_} Adapter gated; no external tools invoked.`];f.emit("mindcanvas.agentCommand.executed.local",{id:t.id,mode:ce,requestedRole:Ue,adapterState:((Mt=t.metadata)==null?void 0:Mt.AdapterState)??"adapter-gated"}),u(t.id,{status:"done",result:re,tags:["Agent Command",Ue,"Completed"],metadata:{...t.metadata??{},AgentCommandStatus:"Completed",AgentCommandLastExecutedAtUtc:_,AgentCommandConsoleLogs:JSON.stringify(Qe),AgentCommandResultLinks:JSON.stringify([]),AdapterState:((Re=t.metadata)==null?void 0:Re.AdapterState)??"adapter-gated"}})},Ca=(x,_,re,Qe)=>{var Re,et,Xe;if(x.stopPropagation(),!de)return;const Mt=_==="Implemented"?JSON.stringify([`local-code-note://${t.id}/implementation-handoff.md`]):((Re=t.metadata)==null?void 0:Re.CodeNoteOutputArtifacts)||"[]";f.emit("mindcanvas.codeNote.state",{id:t.id,status:_,syncState:re,reason:Qe,adapterState:((et=t.metadata)==null?void 0:et.AdapterState)??"local-canvas-only"}),u(t.id,{tags:["Code Note",_,re],metadata:{...t.metadata??{},CodeNoteStatus:_,CodeNoteSyncState:re,CodeNoteOutputArtifacts:Mt,..._==="Implemented"||_==="Reviewed"?{CodeNoteLastAppliedAtUtc:new Date().toISOString()}:{},AdapterState:((Xe=t.metadata)==null?void 0:Xe.AdapterState)??"local-canvas-only"}})},Ot=()=>{Va(x=>!x)},ko=async x=>{if(x.stopPropagation(),!qe||!pe.current){f.emit("node.video.unavailable",{id:t.id,reason:qe?"element-missing":"source-missing"});return}try{await pe.current.play(),f.emit("node.video.play",{id:t.id,sourceKind:Xl(qe)})}catch(_){f.emit("node.video.unavailable",{id:t.id,reason:_ instanceof Error?_.message:String(_)})}},Sa=x=>{if(x.stopPropagation(),!qe||!pe.current){f.emit("node.video.unavailable",{id:t.id,reason:qe?"element-missing":"source-missing"});return}pe.current.pause(),f.emit("node.video.pause",{id:t.id,sourceKind:Xl(qe)})},ta=x=>{x.stopPropagation(),$e&&O(t.id,$e)},Mn=x=>{u(t.id,{body:JSON.stringify(x),metadata:{...t.metadata??{},templateLauncherSelectedOptionId:x.selectedOptionId??""}})},it=(x,_)=>{if(_.stopPropagation(),!le)return;const re=pm(le,x);Mn(re),f.emit("templateCard.option.select",{nodeId:t.id,optionId:re.selectedOptionId??null})},Tn=(x,_)=>{if(!le)return;const re=gm(le,x,_);Mn(re),f.emit("templateCard.input.patch",{nodeId:t.id,key:x})},Ft=x=>{x.stopPropagation(),!(!le||Qt)&&wt(t.id,le.selectedOptionId??null,le.inputValues)},aa=jn&&Ua?n.jsxs("div",{className:"node-company-launcher","data-testid":"node-company-launcher",style:Wa?{left:Wa.left,top:Wa.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:mr.map(x=>n.jsxs("button",{type:"button",className:x.key===_t.key?"is-selected":"","data-company-mode":x.key,onClick:()=>Nn(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":ha,onClick:x=>{x.stopPropagation(),Ot()},children:[n.jsx("span",{className:"node-company-toggle-indicator","aria-hidden":"true",children:ha?"On":"Off"}),n.jsxs("span",{children:[n.jsx(Rd,{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:()=>Ha(!1),children:"Cancel"}),n.jsx("button",{type:"button",className:"btn btn-primary","data-testid":"node-company-run-confirm",onClick:Ms,children:"Stage Company"})]})]}):null,Rn={width:t.width,height:t.height,transform:`translate3d(${t.x}px, ${t.y}px, 0)`,...Fe?{"--memo-bg":Fe.surface,"--memo-border":Fe.border,"--memo-ink":Fe.ink,"--memo-ring":Fe.ring,"--memo-accent":Fe.swatch}:{}},bt=n.jsxs(n.Fragment,{children:[xo&&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:()=>J(t.id),children:n.jsx(Vm,{size:13})}),ye&&n.jsx("button",{type:"button",title:"Change memo color","aria-label":"Change memo color","aria-pressed":Zt,className:"is-memo-color-action","data-testid":"node-memo-color-open",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),fa(_=>!_)},children:n.jsx(Ld,{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(Ym,{size:13})}),n.jsx("button",{type:"button",title:Pt?"Copy image to clipboard":"Copy content","aria-label":Pt?"Copy image to clipboard":"Copy content",onPointerDown:x=>x.stopPropagation(),onClick:()=>$(t.id),children:n.jsx(mo,{size:13})}),n.jsx("button",{type:"button",title:"Duplicate node","aria-label":"Duplicate node","data-testid":"node-duplicate",onPointerDown:x=>x.stopPropagation(),onClick:()=>w(t.id),children:n.jsx(Ed,{size:13})}),$a&&n.jsx("button",{type:"button",title:"Fit text height","aria-label":"Fit text height",onPointerDown:x=>x.stopPropagation(),onClick:()=>K(t.id),children:n.jsx(Xm,{size:13})}),$a&&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:()=>V(t.id),children:qt?n.jsx(vl,{size:13}):n.jsx(Gm,{size:13})}),bo&&n.jsx("button",{type:"button",title:"Run node",onPointerDown:x=>x.stopPropagation(),onClick:()=>L(t.id),children:n.jsx(ua,{size:13})}),jn&&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?So:As,children:n.jsx(jl,{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(fs,{size:13})})]}),Xa=bo?n.jsxs("div",{className:"node-result-row","data-testid":"node-external-pins",children:[n.jsxs("button",{className:`node-pin node-pin--context ${wn?"can-receive":""}`,type:"button",title:"Context input",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),I(t.id,"context")},children:[n.jsx(Il,{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):I(t.id,"result")},children:[n.jsx(vl,{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(),I(t.id,"context")},children:[n.jsx(Il,{size:10}),n.jsx("span",{children:"Context"})]}),Ie=jt||Ee.length>1||ve||vt?n.jsxs("div",{className:"node-surface-badges","data-testid":"node-surface-badges",children:[jt&&n.jsx("span",{className:"node-mask-badge",title:"Image edit mask reference",children:"Mask"}),Ee.length>1&&n.jsxs("span",{className:"node-image-stack-badge",title:"Image stack variants",children:[Math.max(1,pa+1),"/",Ee.length]}),ve&&n.jsx("span",{className:"node-embed-badge",children:It==="youtube"?"YouTube":"Embed"}),vt&&n.jsx("span",{className:"node-video-badge",children:((wa=t.metadata)==null?void 0:wa.MediaModel)||((On=t.metadata)==null?void 0:On.MediaProvider)||"Video"})]}):null,fe=Ee.length>1||ve||vt||Le?n.jsxs("div",{className:"node-surface-actions","data-testid":"node-surface-actions",children:[Ee.length>1&&n.jsx("div",{className:"node-image-stack-rail","aria-label":"Image stack variants",children:Ee.map((x,_)=>n.jsx("button",{type:"button",className:x.variantId===(gt==null?void 0:gt.variantId)?"is-active":"",title:x.title||x.caption||`Variant ${_+1}`,"aria-label":`Show image variant ${_+1}`,onPointerDown:re=>re.stopPropagation(),onClick:re=>ya(x.variantId,re),children:n.jsx(ur,{src:x.imageUrl,traceId:`${t.id}:${x.variantId||_}`,kind:"image-stack-variant",testId:"node-image-stack-thumb"})},x.variantId||`${x.imageUrl}-${_}`))}),ve&&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(),$e&&he(t,"external")},children:[n.jsx(yn,{size:13}),n.jsx("span",{children:"Open"})]}),n.jsxs("button",{type:"button",title:"Copy URL","aria-label":"Copy URL",onPointerDown:x=>x.stopPropagation(),onClick:ta,children:[n.jsx(mo,{size:13}),n.jsx("span",{children:"Copy URL"})]})]}),vt&&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:ko,children:[n.jsx(ua,{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:Sa,children:[n.jsx(ho,{size:13}),n.jsx("span",{children:"Pause"})]})]}),Le&&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:()=>he(t,"preview"),children:[n.jsx(Km,{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:()=>he(t,"external"),children:[n.jsx(yn,{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:()=>ie(t.id),children:[n.jsx(pn,{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:()=>Z(t.id),children:[n.jsx(rs,{size:13}),n.jsx("span",{children:"Settings"})]})]})]}):null,Ze=Oe?null:n.jsxs("div",{className:"node-external-action-rail","data-testid":"node-external-action-rail",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[fe,n.jsx("div",{className:"node-external-rail__pins",children:Xa}),n.jsx("div",{className:"node-actions","data-testid":"node-actions",children:bt}),Me&&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:An,children:"Plan"}),n.jsx("button",{type:"button","data-testid":"node-agent-command-execute","data-agent-command-action":"execute",disabled:Et==="Running",onClick:xa,children:"Execute"})]}),de&&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=>Ca(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=>Ca(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=>Ca(x,ee,"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":Dt||"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:ft,onClick:()=>be(t.id),children:n.jsx(Pd,{size:12})}),n.jsx("button",{type:"button",title:"Refresh Company status","aria-label":"Refresh Company status","data-testid":"node-company-refresh",onClick:()=>ze(t.id),children:n.jsx(pn,{size:12})}),ft?n.jsx("button",{type:"button",title:"Company is archived","aria-label":"Company is archived","data-testid":"node-company-archived",disabled:!0,children:n.jsx(Tr,{size:12})}):ea?n.jsx("button",{type:"button",title:"Resume Company","aria-label":"Resume Company","data-testid":"node-company-resume",onClick:()=>at(t.id,"Staged"),children:n.jsx(ua,{size:12})}):n.jsx("button",{type:"button",title:"Pause Company","aria-label":"Pause Company","data-testid":"node-company-pause",onClick:()=>at(t.id,"Paused"),children:n.jsx(ho,{size:12})}),!ft&&n.jsx("button",{type:"button",title:"Archive Company","aria-label":"Archive Company","data-testid":"node-company-archive",onClick:()=>at(t.id,"Archived"),children:n.jsx(Tr,{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:()=>nt(t.id),children:n.jsx(Ct,{size:12})})]})]}),vo=Oe?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})]}),Ie,xe,Me&&n.jsxs("div",{className:"node-agent-command-state","data-testid":"node-agent-command-state","data-agent-command-status":Et,"data-agent-command-mode":ce,"data-agent-command-role":Ue,"data-agent-command-adapter-state":((en=t.metadata)==null?void 0:en.AdapterState)||"adapter-gated",children:[n.jsx(gn,{size:12}),n.jsx("strong",{children:"AC"}),n.jsx("span",{children:Et}),n.jsx("span",{children:ce}),n.jsx("span",{children:Ue})]}),de&&n.jsxs("div",{className:"node-code-note-state","data-testid":"node-code-note-state","data-code-note-status":ee,"data-code-note-sync-state":pt,"data-code-note-kind":Gt,"data-code-note-adapter-state":((va=t.metadata)==null?void 0:va.AdapterState)||"local-canvas-only",children:[n.jsx(hn,{size:12}),n.jsx("strong",{children:"CN"}),n.jsx("span",{children:ee}),n.jsx("span",{children:pt}),n.jsx("span",{children:Gt})]}),t.companyMode&&n.jsxs("div",{className:"node-company-state","data-testid":"node-company-state",children:[n.jsx(jl,{size:12}),n.jsx("strong",{children:((oa=t.metadata)==null?void 0:oa.CompanyExecutionModeLabel)||"Company staged"}),n.jsx("span",{children:((Be=t.metadata)==null?void 0:Be.CompanySubAgents)==="false"?"single-agent":"sub-agents"})]})]})});return n.jsxs("article",{className:`canvas-node canvas-node--${t.kind} ${Oe?"canvas-node--remote-surface":""} ${Fa?"canvas-node--remote-monitor-surface":""} ${Kt?"canvas-node--remote-control-surface":""} ${F?`canvas-node--automation-${F}`:""} ${Me?"canvas-node--agent-command":""} ${de?"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:Rn,"data-node-id":t.id,"data-automation-node-kind":F||void 0,"data-automation-external-policy":((_e=t.metadata)==null?void 0:_e.AutomationExternalActionPolicy)||void 0,"data-media-generation-contract":((tn=t.metadata)==null?void 0:tn.MediaGenerationContract)||void 0,"data-agent-command-node":Me?"true":void 0,"data-agent-command-status":Me?Et:void 0,"data-agent-command-mode":Me?ce:void 0,"data-agent-command-role":Me?Ue:void 0,"data-code-note-node":de?"true":void 0,"data-code-note-status":de?ee:void 0,"data-code-note-sync-state":de?pt:void 0,"data-code-note-kind":de?Gt:void 0,"data-remote-surface-chrome":Oe?"self-contained":void 0,"data-remote-surface-kind":Te||void 0,"data-remote-surface-title-owner":Oe?"inner-remote-view":void 0,"data-remote-surface-scroll-owner":Oe?"remote-page-rail":void 0,onPointerDown:x=>{m(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(),ie(t.id))},children:[!Oe&&n.jsxs("div",{className:"node-header",children:[n.jsx("span",{className:"node-kind",children:n.jsx(Oa,{size:14})}),n.jsx("input",{value:t.title,"aria-label":"Node title",readOnly:ue,onPointerDown:x=>x.stopPropagation(),onChange:x=>{ue||u(t.id,{title:x.target.value})}})]}),aa&&typeof document<"u"?tm.createPortal(aa,document.body):aa,ye&&Zt&&Fe&&n.jsx("div",{className:"node-memo-palette","data-testid":"node-memo-palette",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:$r.map(x=>n.jsx("button",{type:"button",className:x.key===Fe.key?"is-active":"",title:`${x.label} memo color`,"aria-label":`${x.label} memo color`,"aria-pressed":x.key===Fe.key,"data-memo-color":x.key,style:{"--memo-swatch":x.swatch,"--memo-swatch-ring":x.ring},onPointerDown:_=>_.stopPropagation(),onClick:_=>Ts(x.key,_)},x.key))}),Pt?n.jsx("div",{className:`node-image-wrap ${Ee.length>1?"node-image-wrap--stack":""} ${jt?"node-image-wrap--mask":""}`,"data-testid":jt?"node-mask-preview":Ee.length>1?"node-image-stack":void 0,children:n.jsx(ur,{src:Pt,traceId:t.id,kind:jt?"mask":"node-image",testId:"node-secure-image"})}):Fa?n.jsx(um,{node:t,onPatch:u,onCreateRemoteControl:oe}):Kt?n.jsx(mm,{node:t,onPatch:u}):ue?n.jsx("div",{className:"node-template-card","data-testid":"node-template-card",children:le&&ht?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:ht.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===ht.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:[ht.inputs.map(x=>n.jsx(Ch,{input:x,value:le.inputValues[x.key]??"",onChange:_=>Tn(x.key,_)},x.key)),ht.inputs.length===0&&n.jsx("p",{className:"node-template-card__empty",children:le.noInputsLabel||"No inputs needed."})]}),Qt&&n.jsx("div",{className:"node-template-card__validation",children:Qt}),n.jsxs("button",{type:"button",className:"node-template-card__generate","data-testid":"node-template-card-generate",disabled:!!Qt,onPointerDown:Ft,onClick:x=>x.stopPropagation(),children:[n.jsx(ua,{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."})}):ve?n.jsxs("div",{className:`node-embed-card ${De?"has-embed-thumbnail":"is-embed-link"}`,"data-testid":"node-embed-card",children:[n.jsx("div",{className:"node-embed-preview",children:De?n.jsx(ur,{src:De,traceId:t.id,kind:"embed-thumbnail",testId:"node-embed-thumbnail"}):n.jsxs("div",{className:"node-embed-placeholder",children:[n.jsx(yn,{size:24}),n.jsx("strong",{children:It==="youtube"?"YouTube":"Web embed"}),n.jsx("span",{children:yo||$e||"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;u(t.id,{body:_,assetUrl:_,metadata:{...t.metadata??{},sourceUrl:_,url:_}})}}),$e&&n.jsx("span",{className:"node-embed-source",title:$e,children:$e})]}):vt?n.jsxs("div",{className:`node-video-card ${qe?"has-video-source":"is-video-prompt"}`,"data-testid":"node-video-card",children:[qe?n.jsx("video",{ref:pe,src:qe,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(bn,{size:24}),n.jsx("strong",{children:"Video prompt"}),n.jsx("span",{children:((Fn=t.metadata)==null?void 0:Fn.MediaModel)||((No=t.metadata)==null?void 0:No.MediaProvider)||"Adapter gated"})]}),n.jsx("textarea",{value:t.body,"aria-label":"Video prompt or source",spellCheck:!1,onPointerDown:x=>x.stopPropagation(),onChange:x=>u(t.id,{body:x.target.value})}),qe&&n.jsx("span",{className:"node-video-source",title:vn,children:vn})]}):Le?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(Oa,{size:28})}),n.jsxs("div",{className:"node-asset-copy",children:[n.jsx("strong",{title:He,children:He}),n.jsx("span",{children:t.kind==="directory"?"Directory reference":t.kind==="pdf"?"PDF document":"File reference"}),t.kind==="directory"&&(Jt||za||In||Pe||Nt)&&n.jsxs("dl",{className:"node-asset-meta","data-testid":"node-directory-meta",children:[(In||Pe)&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Scanned"}),n.jsxs("dd",{children:[Number(In??0).toLocaleString()," files / ",Number(Pe??0).toLocaleString()," folders"]})]}),Jt&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Include"}),n.jsx("dd",{children:Jt})]}),za&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Exclude"}),n.jsx("dd",{children:za})]}),Nt&&n.jsxs(n.Fragment,{children:[n.jsx("dt",{children:"Updated"}),n.jsx("dd",{children:new Date(Nt).toLocaleString()})]})]})]})]}):st?n.jsxs("div",{className:"node-csv-card","data-testid":"node-csv-card",children:[n.jsx(kh,{preview:ba,sort:At,onSort:x=>{const _=(At==null?void 0:At.columnIndex)===x&&At.direction==="asc"?"desc":"asc";Ya({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=>u(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(Ih,{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=>u(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=>u(t.id,{body:x.target.value})})}),vo,Ze,n.jsx("button",{type:"button",className:"node-resize-handle",title:"Resize node","aria-label":"Resize node",onPointerDown:x=>b(t.id,x)})]})});function Ch({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 Sh(e){const r=Math.min(430,window.innerHeight-24),d=Math.max(12,window.innerWidth-332-12),m=Math.min(Math.max(e.right-332,12),d),p=e.bottom+8,b=e.top-r-8,u=Math.max(12,window.innerHeight-r-12),y=p<=u?p:Math.max(12,b);return{left:m,top:Math.min(y,u)}}function kh({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 m=(t==null?void 0:t.columnIndex)===d,p=m&&t.direction==="asc"?"descending":"ascending";return n.jsx("th",{"aria-sort":m?t.direction==="asc"?"ascending":"descending":"none",children:n.jsxs("button",{type:"button",className:`csv-table-header-button ${m?"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}`}),m&&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((m,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 wh(e,t){const o=vh(e,Vl+1);if(o.length===0)return null;const r=Math.min(mh,Math.max(...o.map(u=>u.length),1)),d=Yl(o[0],r).map((u,y)=>u.trim()||`Column ${y+1}`),m=o.slice(1,Vl+1).map(u=>Yl(u,r)),p=t?[...m].sort((u,y)=>jh(u[t.columnIndex]??"",y[t.columnIndex]??"",t.direction)):m,b=Math.max(0,String(e||"").split(/\r\n|\n|\r/).filter(u=>u.length>0).length-1);return{headers:d,rows:p,totalRows:b,columnCount:r,renderedRows:p.length,truncated:b>p.length}}function vh(e,t){const o=[];let r=[],d="",m=!1;const p=String(e||"").replace(/\r\n/g,`
4
4
  `).replace(/\r/g,`
@@ -1 +1 @@
1
- import{r as g,j as t}from"./vendor-react-BXzpOyCS.js";import{L as M}from"./LaunchLeadCapture-Btre_FaA.js";import{g as C,a as P}from"./index-BnDICYGs.js";import{p as E,P as N,r as _,c as x}from"./pricingCheckoutShell-O-DnwmbU.js";import{r as A}from"./productionAdapterConfig-C5jfk6oG.js";import{R as m}from"./app-runtime-xD2Z3NdN.js";import{getSupabaseBrowserClient as U}from"./supabaseAuthAdapter-Ct6_adpn.js";import{A as I,aS as L,c as D,N as $}from"./vendor-icons-678PAT8P.js";import"./canvas-runtime-CcSvL_l6.js";function f(e){return typeof e=="string"&&e.trim()?e.trim():null}function B(e){const o=Number(e);return Number.isFinite(o)?Math.max(1,Math.round(o)):1}function T(e){const o=B(e.quantity);return{price_id:e.priceId,return_url:e.returnUrl,email:e.email,quantity:o,source:"mindexec-react",sale_kind:"first_party",entitlement_kind:e.planKey,package_kind:e.planKey==="ltd"?"ltd":"subscription",plan_key:e.planKey,plan_code:e.planCode,price_stage:e.priceStage,metadata:{source:"mindexec-react",price_stage:e.priceStage,plan_key:e.planKey,plan_code:e.planCode,checkout_surface:"pricing"}}}async function O(e,o){var s;const u=A(e);if(!u.checkout.canAttempt)throw m.emit("pricing.checkout.provider.skipped",{mode:u.checkout.mode}),new Error(`Secure checkout adapter is not ready: ${u.checkout.mode}`);const l=U(e);if(!l)throw m.emit("pricing.checkout.provider.skipped",{mode:"config-missing"}),new Error("Supabase browser client is not available for checkout.");const{data:n,error:c}=await l.auth.getSession();if(c)throw m.emit("pricing.checkout.provider.sessionFailed",{message:c.message}),c;if(!((s=n.session)!=null&&s.access_token))throw m.emit("pricing.checkout.provider.sessionMissing"),new Error("Secure checkout requires a Supabase-authenticated session.");const p=T(o);m.emit("pricing.checkout.provider.started",{provider:"dodo",functionName:"dodo-create-checkout",priceStage:o.priceStage,priceId:o.priceId});const{data:r,error:a}=await l.functions.invoke("dodo-create-checkout",{body:p});if(a)throw m.emit("pricing.checkout.provider.failed",{provider:"dodo",message:a.message}),a;const h=f(r==null?void 0:r.checkout_url);if(!h){const i=f(r==null?void 0:r.reason)??f(r==null?void 0:r.error)??"checkout-url-missing";throw m.emit("pricing.checkout.provider.failed",{provider:"dodo",message:i}),new Error(`Dodo checkout did not return a checkout URL: ${i}`)}return m.emit("pricing.checkout.provider.ready",{provider:"dodo",hasSessionId:!!f(r==null?void 0:r.session_id)}),{mode:u.checkout.mode,canAttempt:!0,provider:"dodo",sessionId:f(r==null?void 0:r.session_id),checkoutUrl:h,userId:f(r==null?void 0:r.user_id)}}const d={currentStage:"STANDARD",ltdLimit:100,ltdSold:0,ltdRemaining:100,isLtdAvailable:!1,isClosed:!1,freeCloudBoardLimit:2,proMonthlyIncludedCredits:1e4,proMonthlyPriceUsd:12,proAnnualPriceUsd:96,ltdPriceUsd:149,managedAiMarkupMultiplier:1.7,localModeFreeEnabled:!0,byokFreeEnabled:!0};function b(e){return`$${e.toLocaleString("en-US",{maximumFractionDigits:2})}`}function R(e){return e?"Start Pro":"Sign in to continue"}function F(){return`${b(d.proMonthlyPriceUsd)} starting point`}function K(){return"Standard paid access should feel like a continuation of the free workflow, not a forced first step."}function z(){return[`Monthly Pro starts at ${b(d.proMonthlyPriceUsd)}`,`Annual target pricing is ${b(d.proAnnualPriceUsd)} per year`,`${d.freeCloudBoardLimit} cloud boards are available before paid limits matter`]}function H(){return A(P())}function Y(e){return"dodo_pro_monthly_v1"}function G(e){return"pro"}function k(e,o,u){const l=document.head.querySelector(e),n=l??o(),c=n.getAttribute("content"),p=!l;return p&&document.head.appendChild(n),n.setAttribute("content",u),()=>{p?n.remove():c===null?n.removeAttribute("content"):n.setAttribute("content",c)}}function j(e){const o=document.createElement("meta");return o.setAttribute("name",e),o}function w(e){const o=document.createElement("meta");return o.setAttribute("property",e),o}function J(){const e=document.title,o="MindExec Pricing",u="MindExec pricing for free local tools and MindCanvas projects. Start free with local tools, then upgrade when saved boards, cloud workflows, and AI support become important.",l="https://mindexec.pages.dev/pricing",n=document.head.querySelector('link[rel="canonical"]')??document.createElement("link"),c=!n.parentElement,p=n.getAttribute("href");n.setAttribute("rel","canonical"),n.setAttribute("href",l),c&&document.head.appendChild(n);const r={"@context":"https://schema.org","@type":"SoftwareApplication",name:"MindExec",applicationCategory:"ProductivityApplication",operatingSystem:"Web",description:"Local-first visual workspace with free markdown tools and paid MindCanvas project workflows.",url:l,offers:[{"@type":"Offer",name:"Free local tools",price:"0",priceCurrency:"USD"},{"@type":"Offer",name:"MindCanvas Pro",price:String(d.proMonthlyPriceUsd),priceCurrency:"USD"}]},a=document.head.querySelector("#pricing-structured-data")??document.createElement("script"),h=!a.parentElement,s=a.textContent;a.id="pricing-structured-data",a.type="application/ld+json",a.setAttribute("data-testid","pricing-structured-data"),a.textContent=JSON.stringify(r),h&&document.head.appendChild(a),document.title=o;const i=[k('meta[name="description"]',()=>j("description"),u),k('meta[name="robots"]',()=>j("robots"),"index,follow"),k('meta[property="og:title"]',()=>w("og:title"),o),k('meta[property="og:description"]',()=>w("og:description"),"Compare free local tools, MindCanvas Pro, and the current checkout offer."),k('meta[property="og:type"]',()=>w("og:type"),"website"),k('meta[property="og:url"]',()=>w("og:url"),l)];return()=>{document.title=e,i.forEach(y=>y()),c?n.remove():p===null?n.removeAttribute("href"):n.setAttribute("href",p),h?a.remove():a.textContent=s}}function oe({navigate:e}){const[o,u]=g.useState(()=>C()),[l,n]=g.useState(!1),c=g.useMemo(()=>H(),[]),[p,r]=g.useState(()=>{const s=C(),i=E();return s&&i?`Signed in as ${s.email}. Continue checkout when ready; payment remains adapter-gated.`:""}),a=g.useMemo(()=>z(),[]);g.useEffect(()=>J(),[]);const h=async()=>{const s=C();if(u(s),m.emit("pricing.checkout.requested",{stage:d.currentStage,signedIn:!!s}),!s){_(d.currentStage,"/pricing"),r("Sign in first to continue to secure checkout."),e("/login");return}if(n(!0),c.checkout.canAttempt)try{const i=G(d.currentStage),y=await O(P(),{priceId:Y(d.currentStage),priceStage:d.currentStage,planKey:i,planCode:i.toUpperCase(),email:s.email,returnUrl:new URL("/pricing?checkout=return",window.location.origin).toString()});x("pricing-checkout-provider-started"),r("Opening secure Dodo checkout..."),window.location.assign(y.checkoutUrl);return}catch(i){n(!1),r(`Secure checkout could not start: ${i instanceof Error?i.message:String(i)}`),m.emit("pricing.checkout.provider.failed",{stage:d.currentStage,message:i instanceof Error?i.message:String(i)});return}window.setTimeout(()=>{x("pricing-checkout-adapter-gated"),n(!1),r(`Checkout policy is ready for ${s.email}; secure payment adapter wiring is the remaining backend step.`),m.emit("pricing.checkout.adapter.gated",{stage:d.currentStage,signedIn:!0})},650)};return t.jsxs("div",{className:"page pricing-page","data-testid":"pricing-shell","data-pricing-stage":d.currentStage,"data-pricing-checkout-intent-key":N,"data-production-adapter-state":c.overallState,"data-pricing-checkout-provider-mode":c.checkout.mode,"data-pricing-checkout-provider-ready":c.checkout.canAttempt?"true":"false","data-client-secret-blocked":c.forbiddenClientSecretKeys.length>0?"true":"false",children:[t.jsxs("section",{className:"pricing-hero",children:[t.jsx("div",{className:"eyebrow",children:"Pricing"}),t.jsx("h1",{children:"Start free. Pay when the work becomes worth keeping."}),t.jsx("p",{children:"Free tools stay fast and local. MindCanvas becomes valuable when saved projects, cloud workflows, and AI-supported organization matter across larger boards."}),t.jsxs("div",{className:"action-row",children:[t.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/tools"),"data-testid":"pricing-browse-tools",children:"Browse free tools"}),t.jsx("button",{className:"btn btn-secondary",type:"button",onClick:()=>e("/mindcanvas"),"data-testid":"pricing-open-mindcanvas",children:"Open MindCanvas"})]})]}),t.jsxs("section",{className:"pricing-grid pricing-grid--detailed",children:[t.jsx(v,{label:"Free local tools",price:"$0",body:"Best for quick markdown, notes, clipboard work, and no-login utility tasks.",lines:["Markdown preview, outline, and README tools","Browser notepad and clipboard board","Local-first use with no required upload","Great for one-off jobs before a project exists"],action:"Use the free tools",onAction:()=>e("/tools")}),t.jsx(v,{label:"MindCanvas Pro",price:b(d.proMonthlyPriceUsd),suffix:"/month",body:"For saved boards, cloud projects, and AI-assisted organization once the work grows beyond a disposable tool session.",note:`Annual planning target: ${b(d.proAnnualPriceUsd)} per year`,lines:["Saved project workflows instead of one-off tool output","Cloud access when local-only is no longer enough",`${d.proMonthlyIncludedCredits.toLocaleString()} included monthly credits`,"Better fit for repeat work, larger docs, and visual organization"],action:R(o==null?void 0:o.email),icon:l?I:L,actionClass:"btn-primary",busy:l,onAction:h,status:p,testId:"pricing-pro-checkout"}),t.jsx(v,{label:"Current offer",price:F(),body:K(),lines:a,action:"Open MindCanvas first",onAction:()=>e("/mindcanvas")})]}),t.jsxs("section",{className:"pricing-compare",children:[t.jsxs("div",{children:[t.jsx("div",{className:"eyebrow",children:"Why pay later"}),t.jsx("h2",{children:"The free entry point should stay frictionless."}),t.jsx("p",{children:"Pricing works when it appears after the user already understands value. Public tools are for instant utility. Pro is for keeping the work alive after it becomes important."})]}),t.jsxs("div",{className:"pricing-compare-grid",children:[t.jsxs("article",{children:[t.jsx(D,{size:20}),t.jsx("h3",{children:"Stay free when"}),t.jsx("p",{children:"You only need a quick preview, outline, conversion, note, or snippet board with no ongoing project state."})]}),t.jsxs("article",{children:[t.jsx($,{size:20}),t.jsx("h3",{children:"Upgrade when"}),t.jsx("p",{children:"You want saved boards, repeat workflows, cloud access, or AI-assisted organization across bigger visual projects."})]})]})]}),t.jsx(M,{compact:!0,eyebrow:"Launch list",headline:"Not ready to buy today?",body:"Join the English launch list for checkout openings, launch offers, and short examples of serious MindCanvas workflows.",buttonText:"Notify me",sourceTag:"pricing"})]})}function v({label:e,price:o,suffix:u,body:l,note:n,lines:c,action:p,icon:r,actionClass:a,busy:h,status:s,testId:i,onAction:y}){return t.jsxs("article",{className:"pricing-card pricing-card--detailed",children:[t.jsx("div",{className:"card-label",children:e}),t.jsxs("h2",{children:[o,u&&t.jsx("span",{children:u})]}),t.jsx("p",{children:l}),n&&t.jsx("div",{className:"pricing-note",children:n}),t.jsx("ul",{children:c.map(S=>t.jsx("li",{children:S},S))}),t.jsxs("button",{className:`btn pricing-card-action ${a||"btn-secondary"}`,type:"button",disabled:h,onClick:y,"data-testid":i,children:[r&&t.jsx(r,{size:16,className:h?"spin-icon":void 0}),p]}),s&&t.jsx("p",{className:"pricing-status","data-testid":i?`${i}-status`:void 0,children:s})]})}export{oe as PricingPage};
1
+ import{r as g,j as t}from"./vendor-react-BXzpOyCS.js";import{L as M}from"./LaunchLeadCapture-Btre_FaA.js";import{g as C,a as P}from"./index-D32iV1LN.js";import{p as E,P as N,r as _,c as x}from"./pricingCheckoutShell-O-DnwmbU.js";import{r as A}from"./productionAdapterConfig-C5jfk6oG.js";import{R as m}from"./app-runtime-xD2Z3NdN.js";import{getSupabaseBrowserClient as U}from"./supabaseAuthAdapter-C1dNnpk8.js";import{A as I,aS as L,c as D,N as $}from"./vendor-icons-678PAT8P.js";import"./canvas-runtime-CcSvL_l6.js";function f(e){return typeof e=="string"&&e.trim()?e.trim():null}function B(e){const o=Number(e);return Number.isFinite(o)?Math.max(1,Math.round(o)):1}function T(e){const o=B(e.quantity);return{price_id:e.priceId,return_url:e.returnUrl,email:e.email,quantity:o,source:"mindexec-react",sale_kind:"first_party",entitlement_kind:e.planKey,package_kind:e.planKey==="ltd"?"ltd":"subscription",plan_key:e.planKey,plan_code:e.planCode,price_stage:e.priceStage,metadata:{source:"mindexec-react",price_stage:e.priceStage,plan_key:e.planKey,plan_code:e.planCode,checkout_surface:"pricing"}}}async function O(e,o){var s;const u=A(e);if(!u.checkout.canAttempt)throw m.emit("pricing.checkout.provider.skipped",{mode:u.checkout.mode}),new Error(`Secure checkout adapter is not ready: ${u.checkout.mode}`);const l=U(e);if(!l)throw m.emit("pricing.checkout.provider.skipped",{mode:"config-missing"}),new Error("Supabase browser client is not available for checkout.");const{data:n,error:c}=await l.auth.getSession();if(c)throw m.emit("pricing.checkout.provider.sessionFailed",{message:c.message}),c;if(!((s=n.session)!=null&&s.access_token))throw m.emit("pricing.checkout.provider.sessionMissing"),new Error("Secure checkout requires a Supabase-authenticated session.");const p=T(o);m.emit("pricing.checkout.provider.started",{provider:"dodo",functionName:"dodo-create-checkout",priceStage:o.priceStage,priceId:o.priceId});const{data:r,error:a}=await l.functions.invoke("dodo-create-checkout",{body:p});if(a)throw m.emit("pricing.checkout.provider.failed",{provider:"dodo",message:a.message}),a;const h=f(r==null?void 0:r.checkout_url);if(!h){const i=f(r==null?void 0:r.reason)??f(r==null?void 0:r.error)??"checkout-url-missing";throw m.emit("pricing.checkout.provider.failed",{provider:"dodo",message:i}),new Error(`Dodo checkout did not return a checkout URL: ${i}`)}return m.emit("pricing.checkout.provider.ready",{provider:"dodo",hasSessionId:!!f(r==null?void 0:r.session_id)}),{mode:u.checkout.mode,canAttempt:!0,provider:"dodo",sessionId:f(r==null?void 0:r.session_id),checkoutUrl:h,userId:f(r==null?void 0:r.user_id)}}const d={currentStage:"STANDARD",ltdLimit:100,ltdSold:0,ltdRemaining:100,isLtdAvailable:!1,isClosed:!1,freeCloudBoardLimit:2,proMonthlyIncludedCredits:1e4,proMonthlyPriceUsd:12,proAnnualPriceUsd:96,ltdPriceUsd:149,managedAiMarkupMultiplier:1.7,localModeFreeEnabled:!0,byokFreeEnabled:!0};function b(e){return`$${e.toLocaleString("en-US",{maximumFractionDigits:2})}`}function R(e){return e?"Start Pro":"Sign in to continue"}function F(){return`${b(d.proMonthlyPriceUsd)} starting point`}function K(){return"Standard paid access should feel like a continuation of the free workflow, not a forced first step."}function z(){return[`Monthly Pro starts at ${b(d.proMonthlyPriceUsd)}`,`Annual target pricing is ${b(d.proAnnualPriceUsd)} per year`,`${d.freeCloudBoardLimit} cloud boards are available before paid limits matter`]}function H(){return A(P())}function Y(e){return"dodo_pro_monthly_v1"}function G(e){return"pro"}function k(e,o,u){const l=document.head.querySelector(e),n=l??o(),c=n.getAttribute("content"),p=!l;return p&&document.head.appendChild(n),n.setAttribute("content",u),()=>{p?n.remove():c===null?n.removeAttribute("content"):n.setAttribute("content",c)}}function j(e){const o=document.createElement("meta");return o.setAttribute("name",e),o}function w(e){const o=document.createElement("meta");return o.setAttribute("property",e),o}function J(){const e=document.title,o="MindExec Pricing",u="MindExec pricing for free local tools and MindCanvas projects. Start free with local tools, then upgrade when saved boards, cloud workflows, and AI support become important.",l="https://mindexec.pages.dev/pricing",n=document.head.querySelector('link[rel="canonical"]')??document.createElement("link"),c=!n.parentElement,p=n.getAttribute("href");n.setAttribute("rel","canonical"),n.setAttribute("href",l),c&&document.head.appendChild(n);const r={"@context":"https://schema.org","@type":"SoftwareApplication",name:"MindExec",applicationCategory:"ProductivityApplication",operatingSystem:"Web",description:"Local-first visual workspace with free markdown tools and paid MindCanvas project workflows.",url:l,offers:[{"@type":"Offer",name:"Free local tools",price:"0",priceCurrency:"USD"},{"@type":"Offer",name:"MindCanvas Pro",price:String(d.proMonthlyPriceUsd),priceCurrency:"USD"}]},a=document.head.querySelector("#pricing-structured-data")??document.createElement("script"),h=!a.parentElement,s=a.textContent;a.id="pricing-structured-data",a.type="application/ld+json",a.setAttribute("data-testid","pricing-structured-data"),a.textContent=JSON.stringify(r),h&&document.head.appendChild(a),document.title=o;const i=[k('meta[name="description"]',()=>j("description"),u),k('meta[name="robots"]',()=>j("robots"),"index,follow"),k('meta[property="og:title"]',()=>w("og:title"),o),k('meta[property="og:description"]',()=>w("og:description"),"Compare free local tools, MindCanvas Pro, and the current checkout offer."),k('meta[property="og:type"]',()=>w("og:type"),"website"),k('meta[property="og:url"]',()=>w("og:url"),l)];return()=>{document.title=e,i.forEach(y=>y()),c?n.remove():p===null?n.removeAttribute("href"):n.setAttribute("href",p),h?a.remove():a.textContent=s}}function oe({navigate:e}){const[o,u]=g.useState(()=>C()),[l,n]=g.useState(!1),c=g.useMemo(()=>H(),[]),[p,r]=g.useState(()=>{const s=C(),i=E();return s&&i?`Signed in as ${s.email}. Continue checkout when ready; payment remains adapter-gated.`:""}),a=g.useMemo(()=>z(),[]);g.useEffect(()=>J(),[]);const h=async()=>{const s=C();if(u(s),m.emit("pricing.checkout.requested",{stage:d.currentStage,signedIn:!!s}),!s){_(d.currentStage,"/pricing"),r("Sign in first to continue to secure checkout."),e("/login");return}if(n(!0),c.checkout.canAttempt)try{const i=G(d.currentStage),y=await O(P(),{priceId:Y(d.currentStage),priceStage:d.currentStage,planKey:i,planCode:i.toUpperCase(),email:s.email,returnUrl:new URL("/pricing?checkout=return",window.location.origin).toString()});x("pricing-checkout-provider-started"),r("Opening secure Dodo checkout..."),window.location.assign(y.checkoutUrl);return}catch(i){n(!1),r(`Secure checkout could not start: ${i instanceof Error?i.message:String(i)}`),m.emit("pricing.checkout.provider.failed",{stage:d.currentStage,message:i instanceof Error?i.message:String(i)});return}window.setTimeout(()=>{x("pricing-checkout-adapter-gated"),n(!1),r(`Checkout policy is ready for ${s.email}; secure payment adapter wiring is the remaining backend step.`),m.emit("pricing.checkout.adapter.gated",{stage:d.currentStage,signedIn:!0})},650)};return t.jsxs("div",{className:"page pricing-page","data-testid":"pricing-shell","data-pricing-stage":d.currentStage,"data-pricing-checkout-intent-key":N,"data-production-adapter-state":c.overallState,"data-pricing-checkout-provider-mode":c.checkout.mode,"data-pricing-checkout-provider-ready":c.checkout.canAttempt?"true":"false","data-client-secret-blocked":c.forbiddenClientSecretKeys.length>0?"true":"false",children:[t.jsxs("section",{className:"pricing-hero",children:[t.jsx("div",{className:"eyebrow",children:"Pricing"}),t.jsx("h1",{children:"Start free. Pay when the work becomes worth keeping."}),t.jsx("p",{children:"Free tools stay fast and local. MindCanvas becomes valuable when saved projects, cloud workflows, and AI-supported organization matter across larger boards."}),t.jsxs("div",{className:"action-row",children:[t.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/tools"),"data-testid":"pricing-browse-tools",children:"Browse free tools"}),t.jsx("button",{className:"btn btn-secondary",type:"button",onClick:()=>e("/mindcanvas"),"data-testid":"pricing-open-mindcanvas",children:"Open MindCanvas"})]})]}),t.jsxs("section",{className:"pricing-grid pricing-grid--detailed",children:[t.jsx(v,{label:"Free local tools",price:"$0",body:"Best for quick markdown, notes, clipboard work, and no-login utility tasks.",lines:["Markdown preview, outline, and README tools","Browser notepad and clipboard board","Local-first use with no required upload","Great for one-off jobs before a project exists"],action:"Use the free tools",onAction:()=>e("/tools")}),t.jsx(v,{label:"MindCanvas Pro",price:b(d.proMonthlyPriceUsd),suffix:"/month",body:"For saved boards, cloud projects, and AI-assisted organization once the work grows beyond a disposable tool session.",note:`Annual planning target: ${b(d.proAnnualPriceUsd)} per year`,lines:["Saved project workflows instead of one-off tool output","Cloud access when local-only is no longer enough",`${d.proMonthlyIncludedCredits.toLocaleString()} included monthly credits`,"Better fit for repeat work, larger docs, and visual organization"],action:R(o==null?void 0:o.email),icon:l?I:L,actionClass:"btn-primary",busy:l,onAction:h,status:p,testId:"pricing-pro-checkout"}),t.jsx(v,{label:"Current offer",price:F(),body:K(),lines:a,action:"Open MindCanvas first",onAction:()=>e("/mindcanvas")})]}),t.jsxs("section",{className:"pricing-compare",children:[t.jsxs("div",{children:[t.jsx("div",{className:"eyebrow",children:"Why pay later"}),t.jsx("h2",{children:"The free entry point should stay frictionless."}),t.jsx("p",{children:"Pricing works when it appears after the user already understands value. Public tools are for instant utility. Pro is for keeping the work alive after it becomes important."})]}),t.jsxs("div",{className:"pricing-compare-grid",children:[t.jsxs("article",{children:[t.jsx(D,{size:20}),t.jsx("h3",{children:"Stay free when"}),t.jsx("p",{children:"You only need a quick preview, outline, conversion, note, or snippet board with no ongoing project state."})]}),t.jsxs("article",{children:[t.jsx($,{size:20}),t.jsx("h3",{children:"Upgrade when"}),t.jsx("p",{children:"You want saved boards, repeat workflows, cloud access, or AI-assisted organization across bigger visual projects."})]})]})]}),t.jsx(M,{compact:!0,eyebrow:"Launch list",headline:"Not ready to buy today?",body:"Join the English launch list for checkout openings, launch offers, and short examples of serious MindCanvas workflows.",buttonText:"Notify me",sourceTag:"pricing"})]})}function v({label:e,price:o,suffix:u,body:l,note:n,lines:c,action:p,icon:r,actionClass:a,busy:h,status:s,testId:i,onAction:y}){return t.jsxs("article",{className:"pricing-card pricing-card--detailed",children:[t.jsx("div",{className:"card-label",children:e}),t.jsxs("h2",{children:[o,u&&t.jsx("span",{children:u})]}),t.jsx("p",{children:l}),n&&t.jsx("div",{className:"pricing-note",children:n}),t.jsx("ul",{children:c.map(S=>t.jsx("li",{children:S},S))}),t.jsxs("button",{className:`btn pricing-card-action ${a||"btn-secondary"}`,type:"button",disabled:h,onClick:y,"data-testid":i,children:[r&&t.jsx(r,{size:16,className:h?"spin-icon":void 0}),p]}),s&&t.jsx("p",{className:"pricing-status","data-testid":i?`${i}-status`:void 0,children:s})]})}export{oe as PricingPage};