mindexec-ai 0.2.385

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.
Files changed (99) hide show
  1. package/README.md +354 -0
  2. package/codex-runtime.js +1339 -0
  3. package/launch-bridge.cjs +236 -0
  4. package/package.json +77 -0
  5. package/port-guard.cjs +232 -0
  6. package/remote-fast/osx-arm64/mindexec-remote-fast +0 -0
  7. package/remote-fast/osx-arm64/mindexec-remote-fast.deps.json +24 -0
  8. package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
  9. package/remote-fast/osx-arm64/mindexec-remote-fast.runtimeconfig.json +13 -0
  10. package/remote-fast/osx-x64/mindexec-remote-fast +0 -0
  11. package/remote-fast/osx-x64/mindexec-remote-fast.deps.json +24 -0
  12. package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
  13. package/remote-fast/osx-x64/mindexec-remote-fast.runtimeconfig.json +13 -0
  14. package/remote-fast/win-x64/mindexec-remote-fast.deps.json +24 -0
  15. package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
  16. package/remote-fast/win-x64/mindexec-remote-fast.exe +0 -0
  17. package/remote-fast/win-x64/mindexec-remote-fast.runtimeconfig.json +20 -0
  18. package/remote-hub.js +3106 -0
  19. package/scripts/auth-session-smoke.mjs +262 -0
  20. package/scripts/remote-agent-managed-smoke.mjs +291 -0
  21. package/scripts/remote-agent-package-smoke.mjs +64 -0
  22. package/scripts/remote-agent-ws-smoke.mjs +202 -0
  23. package/scripts/remote-fast-live-rate-smoke.mjs +355 -0
  24. package/scripts/remote-fast-mdm-browser-smoke.mjs +476 -0
  25. package/scripts/remote-fleet-render-smoke.mjs +1491 -0
  26. package/scripts/remote-frame-ws-smoke.mjs +234 -0
  27. package/scripts/remote-http-smoke.mjs +592 -0
  28. package/scripts/remote-hub-identity-smoke.mjs +146 -0
  29. package/scripts/remote-hub-scale-smoke.mjs +124 -0
  30. package/scripts/remote-hub-smoke.mjs +631 -0
  31. package/scripts/remote-input-ws-smoke.mjs +263 -0
  32. package/scripts/remote-registry-follower-smoke.mjs +752 -0
  33. package/scripts/setup-tree-sitter-grammars.mjs +80 -0
  34. package/server.js +15709 -0
  35. package/start-bridge.bat +32 -0
  36. package/start-bridge.sh +81 -0
  37. package/tree-sitter-grammars/README.md +18 -0
  38. package/tree-sitter-grammars/tree-sitter-c_sharp.wasm +0 -0
  39. package/tree-sitter-grammars/tree-sitter-go.wasm +0 -0
  40. package/tree-sitter-grammars/tree-sitter-java.wasm +0 -0
  41. package/tree-sitter-grammars/tree-sitter-javascript.wasm +0 -0
  42. package/tree-sitter-grammars/tree-sitter-python.wasm +0 -0
  43. package/tree-sitter-grammars/tree-sitter-rust.wasm +0 -0
  44. package/tree-sitter-grammars/tree-sitter-tsx.wasm +0 -0
  45. package/tree-sitter-grammars/tree-sitter-typescript.wasm +0 -0
  46. package/wwwroot/_headers +73 -0
  47. package/wwwroot/_redirects +1 -0
  48. package/wwwroot/appsettings.json +83 -0
  49. package/wwwroot/assets/AdminDashboardPage-B2vz2Px9.css +1 -0
  50. package/wwwroot/assets/AdminDashboardPage-DnuCHywn.js +1 -0
  51. package/wwwroot/assets/AppSidebar-DU2OgSiv.js +2 -0
  52. package/wwwroot/assets/AuthPages-BrH6kRcv.css +1 -0
  53. package/wwwroot/assets/AuthPages-Dgezl7Vj.js +1 -0
  54. package/wwwroot/assets/CodePage-7kgZlB3O.js +87 -0
  55. package/wwwroot/assets/CodePage-Bncc352E.css +1 -0
  56. package/wwwroot/assets/CompanyCorePage-ChBnq1ve.css +1 -0
  57. package/wwwroot/assets/CompanyCorePage-CzIZIIU_.js +13 -0
  58. package/wwwroot/assets/ExecutionModePage-B-etp_mc.js +18 -0
  59. package/wwwroot/assets/ExecutionModePage-TLuld9l3.css +1 -0
  60. package/wwwroot/assets/LaunchLeadCapture-Bx9LM0IX.js +1 -0
  61. package/wwwroot/assets/LaunchLeadCapture-CiRI1shz.css +1 -0
  62. package/wwwroot/assets/MarketingHome-BsyerRpe.js +1 -0
  63. package/wwwroot/assets/MarketingHome-DPzaYzA_.css +1 -0
  64. package/wwwroot/assets/MindCanvas-DtqOZnoW.css +1 -0
  65. package/wwwroot/assets/MindCanvas-zEDXzaxW.js +49 -0
  66. package/wwwroot/assets/PlanMasterPage-CJ36rep-.css +1 -0
  67. package/wwwroot/assets/PlanMasterPage-NZ_mPvaE.js +4 -0
  68. package/wwwroot/assets/PricingPage-Cg_0i_ZR.css +1 -0
  69. package/wwwroot/assets/PricingPage-Ylrn8l2g.js +1 -0
  70. package/wwwroot/assets/ToolPages-3M2KqA9k.js +28 -0
  71. package/wwwroot/assets/ToolPages-DIB187pZ.css +1 -0
  72. package/wwwroot/assets/YouTubeSearchPage-COv1oAA7.js +4 -0
  73. package/wwwroot/assets/YouTubeSearchPage-IPPa_BIH.css +1 -0
  74. package/wwwroot/assets/app-runtime-xD2Z3NdN.js +1 -0
  75. package/wwwroot/assets/canvas-runtime-BbicBcOj.js +44 -0
  76. package/wwwroot/assets/code-agent-runtime-B5PPZd1t.js +74 -0
  77. package/wwwroot/assets/executionModeSettings-NJqurj-o.js +1 -0
  78. package/wwwroot/assets/index-CQMKCp-t.js +2 -0
  79. package/wwwroot/assets/index-yNpEK-gp.css +1 -0
  80. package/wwwroot/assets/marketingTools-DN_rnHeB.js +4 -0
  81. package/wwwroot/assets/mindCanvasSearchWorker-BzPMsHOB.js +1 -0
  82. package/wwwroot/assets/mindexecution-mindcanvas.png +0 -0
  83. package/wwwroot/assets/mindexecution-prod-home-current.png +0 -0
  84. package/wwwroot/assets/mindexecution-prod-pricing-current.png +0 -0
  85. package/wwwroot/assets/pricingCheckoutShell-O-DnwmbU.js +1 -0
  86. package/wwwroot/assets/productionAdapterConfig-C5jfk6oG.js +1 -0
  87. package/wwwroot/assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js +1 -0
  88. package/wwwroot/assets/storage-TM3YrWaj.js +1 -0
  89. package/wwwroot/assets/supabaseAuthAdapter-DA43DeSY.js +44 -0
  90. package/wwwroot/assets/toolHandoff-D5e5f7t5.js +4 -0
  91. package/wwwroot/assets/vendor-icons-DE3gIReG.js +681 -0
  92. package/wwwroot/assets/vendor-msgpack-BE8aAsr3.js +1 -0
  93. package/wwwroot/assets/vendor-react-BXzpOyCS.js +40 -0
  94. package/wwwroot/favicon.svg +7 -0
  95. package/wwwroot/index.html +22 -0
  96. package/wwwroot/manifest.webmanifest +19 -0
  97. package/wwwroot/robots.txt +4 -0
  98. package/wwwroot/service-worker.js +7 -0
  99. package/wwwroot/sitemap.xml +39 -0
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/supabaseAuthAdapter-DA43DeSY.js","assets/productionAdapterConfig-C5jfk6oG.js","assets/canvas-runtime-BbicBcOj.js","assets/vendor-react-BXzpOyCS.js","assets/app-runtime-xD2Z3NdN.js","assets/vendor-icons-DE3gIReG.js","assets/MindCanvas-zEDXzaxW.js","assets/storage-TM3YrWaj.js","assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js","assets/vendor-msgpack-BE8aAsr3.js","assets/toolHandoff-D5e5f7t5.js","assets/executionModeSettings-NJqurj-o.js","assets/MindCanvas-DtqOZnoW.css","assets/PlanMasterPage-NZ_mPvaE.js","assets/PlanMasterPage-CJ36rep-.css","assets/PricingPage-Ylrn8l2g.js","assets/LaunchLeadCapture-Bx9LM0IX.js","assets/LaunchLeadCapture-CiRI1shz.css","assets/pricingCheckoutShell-O-DnwmbU.js","assets/PricingPage-Cg_0i_ZR.css","assets/AuthPages-Dgezl7Vj.js","assets/AuthPages-BrH6kRcv.css","assets/ToolPages-3M2KqA9k.js","assets/marketingTools-DN_rnHeB.js","assets/ToolPages-DIB187pZ.css","assets/YouTubeSearchPage-COv1oAA7.js","assets/YouTubeSearchPage-IPPa_BIH.css","assets/CompanyCorePage-CzIZIIU_.js","assets/CompanyCorePage-ChBnq1ve.css","assets/AdminDashboardPage-DnuCHywn.js","assets/AdminDashboardPage-B2vz2Px9.css","assets/CodePage-7kgZlB3O.js","assets/code-agent-runtime-B5PPZd1t.js","assets/CodePage-Bncc352E.css","assets/ExecutionModePage-B-etp_mc.js","assets/ExecutionModePage-TLuld9l3.css","assets/MarketingHome-BsyerRpe.js","assets/MarketingHome-DPzaYzA_.css","assets/AppSidebar-DU2OgSiv.js"])))=>i.map(i=>d[i]);
2
+ var q=Object.defineProperty;var G=(e,t,o)=>t in e?q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var x=(e,t,o)=>G(e,typeof t!="symbol"?t+"":t,o);import{r as i,j as r,R as Y}from"./vendor-react-BXzpOyCS.js";import{R as h,i as X}from"./app-runtime-xD2Z3NdN.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const c of a)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function o(a){const c={};return a.integrity&&(c.integrity=a.integrity),a.referrerPolicy&&(c.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?c.credentials="include":a.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function n(a){if(a.ep)return;a.ep=!0;const c=o(a);fetch(a.href,c)}})();const J="modulepreload",Q=function(e){return"/"+e},U={},b=function(t,o,n){let a=Promise.resolve();if(o&&o.length>0){let u=function(p){return Promise.all(p.map(d=>Promise.resolve(d).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),m=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));a=u(o.map(p=>{if(p=Q(p),p in U)return;U[p]=!0;const d=p.endsWith(".css"),y=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${y}`))return;const g=document.createElement("link");if(g.rel=d?"stylesheet":J,d||(g.as="script"),g.crossOrigin="",g.href=p,m&&g.setAttribute("nonce",m),document.head.appendChild(g),d)return new Promise((f,k)=>{g.addEventListener("load",f),g.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${p}`)))})}))}function c(u){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=u,window.dispatchEvent(s),!s.defaultPrevented)throw u}return a.then(u=>{for(const s of u||[])s.status==="rejected"&&c(s.reason);return t().catch(c)})},L="mindexec-local-auth-shell-v2",Z="mindexec-react-auth-shell-session-changed",ee="supabase-callback@mindexec.local";function te(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.userId=="string"&&typeof t.email=="string"&&t.provider==="Google"&&typeof t.signedInAt=="string")}function oe(e){const t=e.toLowerCase();return t.includes("access_token=")||t.includes("refresh_token=")||t.includes("provider_token=")||t.includes("provider_refresh_token=")||t.includes("expires_in=")||t.includes("token_type=")||t.includes("type=recovery")||t.includes("type=invite")||t.includes("error=")||t.includes("error_description=")||t.includes("code=")}function ae(e){const t=e.split("=",2)[0].toLowerCase();return t==="access_token"||t==="refresh_token"||t==="provider_token"||t==="provider_refresh_token"||t==="expires_in"||t==="expires_at"||t==="token_type"||t==="type"||t==="error"||t==="error_code"||t==="error_description"||t==="code"}function I(e){const t=e.trim().replace(/^[?#]/,"");return t?t.split("&").filter(Boolean).filter(n=>!ae(n)).join("&"):""}function ne(e){const t=(e||"").trim();if(!t||!t.startsWith("/")||t.startsWith("//")||t.includes("\\"))return"";try{const o=new URL(t,window.location.origin);return o.origin!==window.location.origin?"":`${o.pathname}${o.search}${o.hash}`}catch{return""}}function re(e){const t=new URL(e,window.location.origin),o=`${t.search}&${t.hash}`,n=oe(o);if(!n)return{hasAuthPayload:!1,cleanedPath:`${t.pathname}${t.search}${t.hash}`,shouldCreateLocalShell:!1,shouldRouteToMindCanvas:!1,hasError:!1,hasRecovery:!1,hasInvite:!1,hasCode:!1,hasToken:!1};const a=I(t.search),c=I(t.hash),u=/(?:^|[&#?])error=/i.test(o)||/(?:^|[&#?])error_description=/i.test(o),s=/(?:^|[&#?])type=recovery(?:&|$)/i.test(o),m=/(?:^|[&#?])type=invite(?:&|$)/i.test(o),p=/(?:^|[&#?])code=/i.test(o),d=/(?:^|[&#?])(?:access_token|refresh_token)=/i.test(o),y=ne(t.searchParams.get("next"));let g=`${t.pathname}${a?`?${a}`:""}${c?`#${c}`:""}`;const f=t.pathname==="/"||t.pathname==="",k=t.pathname==="/login",E=!u&&!s&&!m&&(p||d),l=E&&!y&&(f||k);if(y&&E)g=y;else if(l){const v=new URLSearchParams(a);v.delete("next");const S=v.toString();g=`/mindcanvas${S?`?${S}`:""}`}return{hasAuthPayload:n,cleanedPath:g,shouldCreateLocalShell:!u&&!s&&!m&&(p||d),shouldRouteToMindCanvas:l,hasError:u,hasRecovery:s,hasInvite:m,hasCode:p,hasToken:d}}function se(e){return`local-google-${e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||"user"}`}function O(e){try{window.dispatchEvent(new CustomEvent(Z,{detail:{signedIn:!!e,source:(e==null?void 0:e.source)??"cleared",hasEmail:!!(e!=null&&e.email)}}))}catch{}}function nt(){try{const e=window.localStorage.getItem(L);if(!e)return null;const t=JSON.parse(e);return te(t)?t:null}catch{return null}}function ie(e="builder@mindexec.local",t="manual-google-shell"){const o=e.trim().toLowerCase()||"builder@mindexec.local",n={userId:typeof crypto<"u"&&"randomUUID"in crypto?`local-google-${crypto.randomUUID()}`:se(o),email:o,provider:"Google",signedInAt:new Date().toISOString(),source:t};return B(n)}function B(e){try{window.localStorage.setItem(L,JSON.stringify(e))}catch{}return h.emit(e.source==="supabase-provider-session"?"auth.supabase.sessionShell":"auth.google.localShell",{provider:e.provider,hasEmail:!!e.email,source:e.source}),O(e),e}function rt(){try{window.localStorage.removeItem(L)}catch{}h.emit("auth.localShell.cleared"),O(null)}const le={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},ce="mindexec-production-adapter-runtime-env-loaded";function H(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function w(e,t){let o=e;for(const n of t){if(!H(o))return"";o=o[n]}return typeof o=="string"?o.trim():""}function de(e,t){let o=e;for(const n of t){if(!H(o)||!(n in o))return null;o=o[n]}if(typeof o=="boolean")return o;if(typeof o=="string"){const n=o.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}return null}function A(e,t,o){o&&(e[t]=o)}function ue(e,t,o){o!==null&&(e[t]=String(o))}function pe(e){return de(e,["ProjectStorage","CloudProjectsEnabled"])}function me(e){const t=w(e,["Supabase","Url"]),o=w(e,["Supabase","PublishableKey"])||w(e,["Supabase","Key"])||w(e,["Supabase","AnonKey"]),n=w(e,["Supabase","ServiceRoleKey"]);return!!(t&&o&&!n)}function he(e){const t={},o=pe(e),n=me(e),a=w(e,["Supabase","Url"]),c=w(e,["Supabase","PublishableKey"])||w(e,["Supabase","Key"])||w(e,["Supabase","AnonKey"]),u=w(e,["CloudflareR2","PublicBaseUrl"])||w(e,["CloudStorage","PublicBaseUrl"])||w(e,["CloudStorage","PublicUrl"]);return ue(t,"VITE_MINDEXEC_CLOUD_PROJECTS_ENABLED",o),n&&(A(t,"VITE_MINDEXEC_SUPABASE_URL",a),A(t,"VITE_MINDEXEC_SUPABASE_PUBLISHABLE_KEY",c)),A(t,"VITE_MINDEXEC_CLOUD_STORAGE_PUBLIC_URL",u),t}function ge(){return le??{}}function K(){return typeof window>"u"?{}:window.__MINDEXEC_PRODUCTION_ADAPTER_RUNTIME_ENV__??{}}function fe(e){if(!(typeof window>"u")){window.__MINDEXEC_PRODUCTION_ADAPTER_RUNTIME_ENV__={...K(),...e};try{window.dispatchEvent(new CustomEvent(ce,{detail:{keys:Object.keys(e).sort()}}))}catch{}}}function _(){return{...K(),...ge()}}let T=null;async function $(e=typeof fetch=="function"?fetch.bind(globalThis):null){return typeof window>"u"||!e?_():T||(T=(async()=>{try{const t=await e("/appsettings.json",{cache:"no-store",credentials:"same-origin"});if(!t.ok)return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:`http-${t.status}`}),_();const o=t.headers.get("content-type")||"";if(o&&!o.toLowerCase().includes("json"))return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:"non-json-response"}),_();const n=await t.json(),a=he(n);return fe(a),h.emit("productionAdapter.runtimeConfig.loaded",{source:"appsettings.json",keys:Object.keys(a).sort()}),_()}catch(t){return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:t instanceof Error?t.message:String(t)}),_()}})(),T)}function be({onRouteReplaced:e}){const t=i.useRef(!1);return i.useEffect(()=>{if(t.current)return;t.current=!0,(async()=>{const n=window.location.href,a=re(n);if(!a.hasAuthPayload)return;const c=await $();let u={mode:"not-checked",canAttempt:!1},s=!1,m="",p=!1,d=null,y=null;if(!a.hasError&&!a.hasRecovery&&!a.hasInvite&&(a.hasCode||a.hasToken)){const{completeSupabaseAuthCallback:f,resolveSupabaseAuthAdapterState:k,syncSupabaseAuthSessionToLocalBridge:E}=await b(async()=>{const{completeSupabaseAuthCallback:l,resolveSupabaseAuthAdapterState:v,syncSupabaseAuthSessionToLocalBridge:S}=await import("./supabaseAuthAdapter-DA43DeSY.js");return{completeSupabaseAuthCallback:l,resolveSupabaseAuthAdapterState:v,syncSupabaseAuthSessionToLocalBridge:S}},__vite__mapDeps([0,1,2,3,4,5]));u=k(c),p=u.canAttempt,d=f,y=E}if(p&&d)try{const f=await d(c,n);f.session&&(B({...f.session,source:"supabase-provider-session"}),s=!0,y&&await y(c,"auth-callback"))}catch(f){m=f instanceof Error?f.message:String(f)}else a.shouldCreateLocalShell&&ie(ee,"supabase-callback-shell");h.emit(a.hasError||m?"auth.callback.error":"auth.callback.cleaned",{cleanedPath:a.cleanedPath,shouldCreateLocalShell:!p&&a.shouldCreateLocalShell,shouldRouteToMindCanvas:a.shouldRouteToMindCanvas,hasCode:a.hasCode,hasToken:a.hasToken,hasRecovery:a.hasRecovery,hasInvite:a.hasInvite,providerMode:u.mode,providerAttempted:p,providerSessionCreated:s,providerError:m});const g=`${window.location.pathname}${window.location.search}${window.location.hash}`;a.cleanedPath!==g&&(window.history.replaceState({authCallbackCleaned:!0},"",a.cleanedPath),e("auth-callback-bootstrap"))})()},[e]),null}class ye extends i.Component{constructor(){super(...arguments);x(this,"state",{error:null});x(this,"retry",()=>{this.setState({error:null}),h.emit("runtime.errorBoundary.reset",{resetKey:this.props.resetKey,reason:"manual-retry"})})}static getDerivedStateFromError(o){return{error:o}}componentDidCatch(o,n){const a=(o==null?void 0:o.message)||"Unknown runtime error.";h.emit("runtime.errorBoundary.caught",{resetKey:this.props.resetKey,message:a,stack:(o==null?void 0:o.stack)||"",componentStack:n.componentStack}),console.error("[LoggingErrorBoundary] Unhandled React error.",o,n)}componentDidUpdate(o){o.resetKey!==this.props.resetKey&&this.state.error&&(this.setState({error:null}),h.emit("runtime.errorBoundary.reset",{from:o.resetKey,to:this.props.resetKey,reason:"route-change"}))}render(){const{error:o}=this.state;return o?r.jsx("div",{className:"page runtime-error-page","data-testid":"runtime-error-boundary","data-error-boundary-reset-key":this.props.resetKey,children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Runtime Guard"}),r.jsx("h1",{children:"Something broke inside this React surface."}),r.jsx("p",{children:"The error was captured locally so the whole app shell can stay recoverable."}),r.jsxs("div",{className:"runtime-error-message","data-testid":"runtime-error-boundary-message",children:[r.jsx("span",{className:"runtime-error-symbol","aria-hidden":"true",children:"!"}),r.jsx("span",{children:o.message||"Unknown runtime error."})]}),r.jsxs("div",{className:"action-row",children:[r.jsx("button",{className:"btn btn-primary",type:"button",onClick:this.retry,"data-testid":"runtime-error-boundary-retry",children:"Retry"}),this.props.onNavigateHome&&r.jsx("button",{className:"btn btn-secondary",type:"button",onClick:this.props.onNavigateHome,"data-testid":"runtime-error-boundary-home",children:"MindCanvas"})]})]})}):this.props.children}}const we="main",ve="h1",R="data-route-focus-target",ke=30;function Pe({route:e,rootSelector:t=we,selector:o=ve}){return i.useEffect(()=>{let n=!1,a=0;const c=u=>{if(n)return;const s=document.querySelector(t),m=(s==null?void 0:s.querySelector(o))??document.querySelector(o);for(const p of document.querySelectorAll(`[${R}="true"]`))p.removeAttribute(R);if(!m){if(u<ke){a=window.requestAnimationFrame(()=>c(u+1));return}h.emit("route.focusOnNavigate.skipped",{route:e,selector:o,reason:"missing-target",attempts:u});return}m.hasAttribute("tabindex")||m.setAttribute("tabindex","-1"),m.setAttribute(R,"true"),m.focus({preventScroll:!1}),h.emit("route.focusOnNavigate.applied",{route:e,selector:o,tagName:m.tagName.toLowerCase(),text:(m.textContent||"").trim().slice(0,90),attempts:u})};return a=window.requestAnimationFrame(()=>c(1)),()=>{n=!0,window.cancelAnimationFrame(a)}},[e,t,o]),null}const Ee=[{key:"markdown-viewer",liveUrl:"https://mdview-die.pages.dev",hostnames:["mdview.pages.dev","mdview-die.pages.dev","mdview.mindexec.io","markdown-viewer.pages.dev","markdown-viewer.mindexec.io"],title:"Free Online Markdown Viewer",heroEyebrow:"Free online markdown viewer",heroTitle:"Preview Markdown instantly in your browser",heroSubtitle:"Paste or open a markdown file, review the rendered result, and move bigger writing work into MindCanvas when it needs structure.",privacyNote:"Runs locally in your browser. No upload required."},{key:"bulk-markdown-viewer",liveUrl:"https://bulkmd.pages.dev",hostnames:["bulkmd.pages.dev","bulkmd.mindexec.io","bulk-markdown-viewer.pages.dev","bulk-markdown-viewer.mindexec.io"],title:"Bulk Markdown Viewer",heroEyebrow:"Bulk markdown preview",heroTitle:"Review multiple markdown snippets at once",heroSubtitle:"Paste a stack of markdown entries and scan them locally before turning the useful pieces into a MindCanvas board.",privacyNote:"Local browser-only preview. No account and no upload step."},{key:"readme-previewer",liveUrl:"https://readme-1o4.pages.dev",hostnames:["readme.pages.dev","readme-1o4.pages.dev","readme-previewer.pages.dev","readme.mindexec.io","readme-previewer.mindexec.io"],title:"README Previewer",heroEyebrow:"README previewer",heroTitle:"Preview README markdown before you publish",heroSubtitle:"Check headings, tables, links, and launch notes quickly, then keep bigger documentation work organized in MindCanvas.",privacyNote:"Local preview for README text. No repository access required."},{key:"markdown-to-html",liveUrl:"https://md2html-4r7.pages.dev",hostnames:["md2html.pages.dev","md2html-4r7.pages.dev","md2html.mindexec.io","markdown-to-html.pages.dev","markdown-to-html.mindexec.io"],title:"Markdown to HTML Preview",heroEyebrow:"Markdown to HTML",heroTitle:"Turn markdown into clean HTML preview",heroSubtitle:"Render markdown locally, copy the HTML shape, and move reusable publishing notes into MindCanvas.",privacyNote:"Conversion runs in-browser and keeps your text local."},{key:"markdown-outline",liveUrl:"https://mdoutln.pages.dev",hostnames:["mdoutln.pages.dev","mdoutln.mindexec.io","markdown-outline.pages.dev","markdown-outline.mindexec.io"],title:"Markdown Outline Generator",heroEyebrow:"Markdown outline generator",heroTitle:"Extract a document outline from markdown",heroSubtitle:"Scan headings, section depth, and missing structure before your document becomes a larger project.",privacyNote:"Outline extraction runs locally in this browser."},{key:"markdown-table-formatter",liveUrl:"https://mdtable-3ik.pages.dev",hostnames:["mdtable.pages.dev","mdtable-3ik.pages.dev","mdtable.mindexec.io","markdown-table-formatter.pages.dev","markdown-table-formatter.mindexec.io"],title:"Markdown Table Formatter",heroEyebrow:"Markdown table formatter",heroTitle:"Clean up markdown tables locally",heroSubtitle:"Paste a rough markdown table and get a cleaner version for docs, READMEs, and launch notes.",privacyNote:"Table formatting happens locally with no upload."},{key:"markdown-link-checker",liveUrl:"https://markdown-link-checker.pages.dev",hostnames:["mdcheck.pages.dev","markdown-link-checker.pages.dev","mdcheck.mindexec.io","markdown-link-checker.mindexec.io"],title:"Markdown Link Checker",heroEyebrow:"Markdown link checker",heroTitle:"Catch risky markdown links before publishing",heroSubtitle:"Find empty, localhost, JavaScript, and suspicious links locally before a README or docs page goes live.",privacyNote:"Link checks run locally against the pasted markdown."},{key:"browser-notepad",liveUrl:"https://quickpad.pages.dev",hostnames:["quickpad.pages.dev","quickpad.mindexec.io","browser-notepad.pages.dev","browser-notepad.mindexec.io"],title:"Browser Notepad",heroEyebrow:"Browser notepad",heroTitle:"Write quick notes without a sign-in",heroSubtitle:"Capture rough thoughts locally, then move the notes worth keeping into MindCanvas.",privacyNote:"Notes are stored locally in this browser unless you copy them elsewhere."},{key:"clipboard-board",liveUrl:"https://clipbrd.pages.dev",hostnames:["clipbrd.pages.dev","clipbrd.mindexec.io","clipboard-board.pages.dev","clipboard-board.mindexec.io"],title:"Local Clipboard Board",heroEyebrow:"Local clipboard board",heroTitle:"Collect snippets into a small local board",heroSubtitle:"Paste short ideas, snippets, and fragments into one local surface before promoting the useful set to MindCanvas.",privacyNote:"Clipboard notes stay local to this browser session."}];function N(e){const t=e.toLowerCase().replace(/^www\./,"");return Ee.find(o=>o.hostnames.some(n=>n.toLowerCase()===t))}const Ce={enabled:!1,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:"",heroEyebrow:"Free local tool",heroTitle:"",heroSubtitle:"",primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexec.pages.dev/mindcanvas",secondaryCtaText:"",secondaryCtaHref:"",publicUrl:"",privacyNote:"Runs locally in your browser. No login. No database storage."},_e={enableAgentWorkspace:!0,enableCodeWorkspace:!0,enablePlanWorkspace:!0,enableCompanyCore:!0,enableExecutionTest:!0,enableTemplateStudio:!0,enableProjectPopup:!0,enablePromptDebugger:!0,enablePointBadge:!0,enableResetData:!0},P={variantKey:"platform",slug:"mindexec",brandName:"MindExec",productName:"MindCanvas",appTitle:"MindExec",workspaceNounSingular:"canvas",workspaceNounPlural:"canvases",signInTitle:"Welcome Back",signUpTitle:"Create Account",signInSubtitle:"Sign in to access your MindCanvas workspace.",signUpSubtitle:"Sign up to start organizing your ideas on a visual canvas.",primaryCheckoutProvider:"dodo",runtimeHost:"",canonicalHost:"mindexec.pages.dev",features:_e,marketingTool:Ce};function z(e){const t=j(e),o=N(t);return o?Ae(t,o):{...P,runtimeHost:t,canonicalHost:P.canonicalHost,features:{...P.features},marketingTool:{...P.marketingTool}}}function Se(e){return e.marketingTool.enabled?D(e.marketingTool.homeRoute):"/"}function F(e){return e.marketingTool.enabled&&e.marketingTool.toolKey?`/tools/${e.marketingTool.toolKey}`:Se(e)}function Te(e,t){const o=j(e.canonicalHost||e.runtimeHost);return o?`https://${o}${D(t)}`:""}function V(e,t){if(e.marketingTool.enabled&&!e.marketingTool.allowMindCanvasRoute&&(t==="/mindcanvas"||t==="/mindmap"))return!1;switch(t){case"/agent":return e.features.enableAgentWorkspace;case"/code":return e.features.enableCodeWorkspace;case"/planmaster":case"/planagent":return e.features.enablePlanWorkspace;case"/company-core":return e.features.enableCompanyCore;case"/execution-mode":return e.features.enableExecutionTest;default:return!0}}function xe(e,t){const o=V(e,t),n=F(e),a=o?t:n;return{route:t,enabled:o,fallbackRoute:n,canonicalUrl:Te(e,a),title:Re(e,a),description:Me(e,a)}}function j(e){const t=String(e??"").trim();if(!t)return"";try{return new URL(t).hostname.trim().toLowerCase().replace(/^www\./,"")}catch{return t.trim().replace(/^https?:\/\//i,"").replace(/^www\./,"").replace(/\/+$/,"").toLowerCase()}}function D(e){if(!e||!String(e).trim())return"/";let t=String(e).trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&(t=t.replace(/\/+$/,"")),t||"/"}function Ae(e,t){const o=j(t.liveUrl)||e;return{...P,variantKey:"mini-tool",slug:t.key,brandName:t.title,productName:t.title,appTitle:`${t.title} - Free local browser tool`,runtimeHost:e,canonicalHost:o,features:{...P.features,enableAgentWorkspace:!1,enableCodeWorkspace:!1,enablePlanWorkspace:!1,enableCompanyCore:!1,enableExecutionTest:!1,enableTemplateStudio:!1,enableProjectPopup:!1,enablePromptDebugger:!1,enablePointBadge:!1,enableResetData:!1},marketingTool:{...P.marketingTool,enabled:!0,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:t.key,heroEyebrow:t.heroEyebrow,heroTitle:t.heroTitle,heroSubtitle:t.heroSubtitle,primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexec.pages.dev/mindcanvas",secondaryCtaText:"More free tools",secondaryCtaHref:"https://mindexec.pages.dev/tools",publicUrl:t.liveUrl,privacyNote:t.privacyNote}}}function Re(e,t){if(e.marketingTool.enabled&&t.startsWith("/tools/"))return e.appTitle;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas | MindExec";case"/planmaster":case"/planagent":return"PlanMaster | MindExec";case"/pricing":return"MindExec Pricing";case"/login":return e.signInTitle;case"/forgot-password":return"Reset your MindExec password";case"/reset-password":return"Set a new MindExec password";case"/tools":return"Free Browser Tools | MindExec";case"/youtube":return"YouTube Capture | MindExec";case"/code":return"CodeMaster | MindExec";case"/agent":return"Agent Workspace | MindExec";case"/execution-mode":return"Execution Mode | MindExec";case"/company-core":return"Company Core | MindExec";case"/admin/dashboard":return"Admin Dashboard | MindExec";case"/not-found":return"Content not found | MindExec";case"/":default:return e.appTitle}}function Me(e,t){if(e.marketingTool.enabled)return e.marketingTool.heroSubtitle||e.marketingTool.privacyNote;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas keeps notes, assets, AI tasks, and execution evidence together on a local-first visual board.";case"/planmaster":case"/planagent":return"PlanMaster turns goals into practical plans, stages, and execution checklists.";case"/pricing":return"MindExec pricing for free local tools and paid MindCanvas project workflows.";case"/tools":return"Free local browser tools that feed larger MindExec and MindCanvas workflows.";case"/code":case"/agent":return"CodeMaster previews code workflows and adapter-gated agent execution for local projects.";case"/execution-mode":return"Execution Mode tests deterministic browser-local Concept IR before live adapters are connected.";case"/company-core":return"Company Core organizes SaaS blueprint, growth, approval, and publishing decisions.";default:return"MindExec is an AI execution canvas for solo builders, researchers, developers, and creators."}}const Le=i.lazy(()=>b(async()=>{const{MindCanvas:e}=await import("./MindCanvas-zEDXzaxW.js");return{MindCanvas:e}},__vite__mapDeps([6,3,7,2,4,5,8,9,1,0,10,11,12])).then(({MindCanvas:e})=>({default:e}))),Ne=i.lazy(()=>b(async()=>{const{PlanMasterPage:e}=await import("./PlanMasterPage-NZ_mPvaE.js");return{PlanMasterPage:e}},__vite__mapDeps([13,3,7,2,4,5,8,14])).then(({PlanMasterPage:e})=>({default:e}))),je=i.lazy(()=>b(async()=>{const{PricingPage:e}=await import("./PricingPage-Ylrn8l2g.js");return{PricingPage:e}},__vite__mapDeps([15,3,16,4,5,17,18,1,0,2,19])).then(({PricingPage:e})=>({default:e}))),De=i.lazy(()=>b(async()=>{const{LoginPage:e}=await import("./AuthPages-Dgezl7Vj.js");return{LoginPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({LoginPage:e})=>({default:e}))),Ue=i.lazy(()=>b(async()=>{const{ForgotPasswordPage:e}=await import("./AuthPages-Dgezl7Vj.js");return{ForgotPasswordPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({ForgotPasswordPage:e})=>({default:e}))),Ie=i.lazy(()=>b(async()=>{const{ResetPasswordPage:e}=await import("./AuthPages-Dgezl7Vj.js");return{ResetPasswordPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({ResetPasswordPage:e})=>({default:e}))),Oe=i.lazy(()=>b(async()=>{const{ToolsDirectoryPage:e}=await import("./ToolPages-3M2KqA9k.js");return{ToolsDirectoryPage:e}},__vite__mapDeps([22,3,23,2,4,5,10,24])).then(({ToolsDirectoryPage:e})=>({default:e}))),Be=i.lazy(()=>b(async()=>{const{MarketingToolPage:e}=await import("./ToolPages-3M2KqA9k.js");return{MarketingToolPage:e}},__vite__mapDeps([22,3,23,2,4,5,10,24])).then(({MarketingToolPage:e})=>({default:e}))),He=i.lazy(()=>b(async()=>{const{YouTubeSearchPage:e}=await import("./YouTubeSearchPage-COv1oAA7.js");return{YouTubeSearchPage:e}},__vite__mapDeps([25,3,2,4,5,10,26])).then(({YouTubeSearchPage:e})=>({default:e}))),Ke=i.lazy(()=>b(async()=>{const{CompanyCorePage:e}=await import("./CompanyCorePage-CzIZIIU_.js");return{CompanyCorePage:e}},__vite__mapDeps([27,3,2,4,5,28])).then(({CompanyCorePage:e})=>({default:e}))),$e=i.lazy(()=>b(async()=>{const{AdminDashboardPage:e}=await import("./AdminDashboardPage-DnuCHywn.js");return{AdminDashboardPage:e}},__vite__mapDeps([29,3,1,4,0,2,5,30])).then(({AdminDashboardPage:e})=>({default:e}))),ze=i.lazy(()=>b(async()=>{const{CodePage:e}=await import("./CodePage-7kgZlB3O.js");return{CodePage:e}},__vite__mapDeps([31,3,2,4,5,11,8,32,33])).then(({CodePage:e})=>({default:e}))),Fe=i.lazy(()=>b(async()=>{const{ExecutionModePage:e}=await import("./ExecutionModePage-B-etp_mc.js");return{ExecutionModePage:e}},__vite__mapDeps([34,3,2,4,5,11,8,35])).then(({ExecutionModePage:e})=>({default:e}))),Ve=i.lazy(()=>b(async()=>{const{MarketingHome:e}=await import("./MarketingHome-BsyerRpe.js");return{MarketingHome:e}},__vite__mapDeps([36,3,16,4,5,17,23,37])).then(({MarketingHome:e})=>({default:e}))),We=i.lazy(()=>b(async()=>{const{AppSidebar:e}=await import("./AppSidebar-DU2OgSiv.js");return{AppSidebar:e}},__vite__mapDeps([38,3,1,4,5])).then(({AppSidebar:e})=>({default:e}))),qe=new Set(["/","/mindcanvas","/planmaster","/tools","/youtube","/code","/pricing","/company-core","/login"]);function Ge(e,t=window.location.hostname){const o=N(t);if(o&&(e==="/"||e==="/tools"))return`/tools/${o.key}`;if(e==="/agent")return"/agent";if(e==="/forgot-password")return"/forgot-password";if(e==="/reset-password")return"/reset-password";let n="/not-found";return e==="/"?n="/":e==="/mindmap"?n="/mindmap":e==="/planagent"?n="/planagent":e==="/execution-mode"?n="/execution-mode":e==="/not-found"?n="/not-found":e.startsWith("/tools/")&&(n=e),qe.has(e)?n=e:e==="/admin/dashboard"&&(n="/admin/dashboard"),n}function Ye(e,t=window.location.hostname){const o=z(t),n=Ge(e,t);return V(o,n)?n:F(o)}function W(e,t=window.location.hostname){const o=Ye(e,t);return{route:o,stalePath:o==="/not-found"&&e!=="/not-found"?e:""}}function M(e){const t=window.location.pathname,{route:o,stalePath:n}=W(t,window.location.hostname);return o==="/not-found"&&t!=="/not-found"?(window.history.replaceState({stalePath:t},"","/not-found"),h.emit("route.notFound.normalize",{source:e,from:n||t,to:"/not-found"})):D(t)!==o&&!(t==="/"&&o.startsWith("/tools/"))&&!(t==="/tools"&&o.startsWith("/tools/"))&&(window.history.replaceState({stalePath:t},"",o),h.emit("productProfile.route.fallback",{source:e,from:t,to:o})),o}function C(e,t,o){if(o===void 0){delete e.dataset[t];return}e.dataset[t]=o}function Xe(){const e=i.useMemo(()=>z(window.location.hostname),[]),t=i.useMemo(()=>N(window.location.hostname),[]),[o,n]=i.useState(()=>W(window.location.pathname,window.location.hostname).route),a=o==="/mindcanvas"||o==="/mindmap",[c,u]=i.useState(()=>a),s=i.useMemo(()=>xe(e,o),[e,o]),[m,p]=i.useState([]);i.useEffect(()=>{n(M("initial"));const l=()=>n(M("popstate"));return window.addEventListener("popstate",l),()=>window.removeEventListener("popstate",l)},[]);const d=i.useCallback(l=>{window.history.pushState({},"",l),n(l)},[]),y=i.useCallback(l=>{n(M(l))},[]);i.useEffect(()=>{!a||c||(u(!0),h.emit("route.keepAlive.mindcanvas",{route:o,mounted:!0,source:"route-activate"}))},[a,c,o]);const g=o==="/planmaster"||o==="/planagent",f=o.startsWith("/tools/")?o.slice(7):null,k=e.marketingTool.enabled&&e.marketingTool.hideAppChrome,E=c||a;return i.useEffect(()=>{const l=document.documentElement,v={productProfile:l.dataset.productProfile,productVariant:l.dataset.productVariant,canonicalHost:l.dataset.canonicalHost,routeCanonical:l.dataset.routeCanonical,routeEnabled:l.dataset.routeEnabled,marketingToolKey:l.dataset.marketingToolKey};return l.dataset.productProfile=e.slug,l.dataset.productVariant=e.variantKey,l.dataset.canonicalHost=e.canonicalHost,l.dataset.routeCanonical=s.canonicalUrl,l.dataset.routeEnabled=s.enabled?"true":"false",e.marketingTool.toolKey?l.dataset.marketingToolKey=e.marketingTool.toolKey:delete l.dataset.marketingToolKey,h.emit("productProfile.route.applied",{route:o,variantKey:e.variantKey,slug:e.slug,canonicalHost:e.canonicalHost,canonicalUrl:s.canonicalUrl,routeEnabled:s.enabled,fallbackRoute:s.fallbackRoute,marketingToolKey:e.marketingTool.toolKey}),()=>{C(l,"productProfile",v.productProfile),C(l,"productVariant",v.productVariant),C(l,"canonicalHost",v.canonicalHost),C(l,"routeCanonical",v.routeCanonical),C(l,"routeEnabled",v.routeEnabled),C(l,"marketingToolKey",v.marketingToolKey)}},[e.canonicalHost,e.marketingTool.toolKey,e.slug,e.variantKey,o,s.canonicalUrl,s.enabled,s.fallbackRoute]),r.jsxs("div",{className:`${a?"app app--canvas":"app"} ${k?"app--mini-tool":""}`,"data-product-profile":e.slug,"data-product-variant":e.variantKey,"data-canonical-host":e.canonicalHost,"data-route-enabled":s.enabled?"true":"false","data-route-canonical":s.canonicalUrl,"data-marketing-tool-key":e.marketingTool.toolKey||void 0,children:[!k&&r.jsx(i.Suspense,{fallback:r.jsx(Qe,{}),children:r.jsx(We,{route:o,navigate:d,canvasActions:a?m:[]})}),r.jsxs("main",{className:"app-main",children:[r.jsx(be,{onRouteReplaced:y}),r.jsx(Pe,{route:o}),r.jsx(ye,{resetKey:o,onNavigateHome:()=>d("/mindcanvas"),children:r.jsxs(i.Suspense,{fallback:r.jsx(Je,{route:o}),children:[o==="/"&&r.jsx(Ve,{navigate:d}),E&&r.jsx("section",{className:"route-keepalive route-keepalive--mindcanvas","data-testid":"mindcanvas-keepalive-host","data-route-keepalive":"mindcanvas","data-route-active":a?"true":"false",hidden:!a,"aria-hidden":a?void 0:"true",children:r.jsx(Le,{navigate:d,onSidebarActionsChange:p})}),g&&r.jsx(Ne,{navigate:d}),o==="/pricing"&&r.jsx(je,{navigate:d}),o==="/login"&&r.jsx(De,{navigate:d}),o==="/forgot-password"&&r.jsx(Ue,{navigate:d}),o==="/reset-password"&&r.jsx(Ie,{navigate:d}),o==="/tools"&&r.jsx(Oe,{navigate:d}),f&&r.jsx(Be,{toolKey:f,navigate:d,miniHost:(t==null?void 0:t.key)===f}),o==="/youtube"&&r.jsx(He,{navigate:d}),(o==="/code"||o==="/agent")&&r.jsx(ze,{}),o==="/execution-mode"&&r.jsx(Fe,{}),o==="/not-found"&&r.jsx(Ze,{navigate:d}),o==="/company-core"&&r.jsx(Ke,{}),o==="/admin/dashboard"&&r.jsx($e,{})]})})]})]})}function Je({route:e}){return i.useEffect(()=>{h.emit("route.lazyFallback.rendered",{route:e})},[e]),r.jsxs("div",{className:"route-lazy-fallback","data-testid":"route-lazy-fallback","data-route":e,children:[r.jsx("span",{className:"route-lazy-spinner","aria-hidden":"true"}),r.jsx("span",{children:"Loading MindExec surface..."})]})}function Qe(){return r.jsxs("aside",{className:"app-sidebar app-sidebar--loading","aria-label":"MindExec navigation loading",children:[r.jsx("div",{className:"sidebar-brand sidebar-placeholder"}),r.jsx("div",{className:"sidebar-divider"}),r.jsx("nav",{className:"sidebar-nav",children:Array.from({length:8},(e,t)=>r.jsx("div",{className:"sidebar-icon sidebar-placeholder"},t))}),r.jsx("div",{className:"sidebar-spacer"}),r.jsx("div",{className:"sidebar-icon sidebar-placeholder"})]})}function Ze({navigate:e}){return r.jsx("div",{className:"page not-found-page",children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Not Found"}),r.jsx("h1",{children:"Content not found."}),r.jsx("p",{children:"The route exists as a React shell so stale Blazor links land cleanly."}),r.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/"),children:"Go home"})]})})}X();async function et(){await $(),Y.createRoot(document.getElementById("root")).render(r.jsx(Xe,{}))}et();export{Z as A,b as _,_ as a,L as b,rt as c,ie as d,nt as g,$ as p,B as s};
@@ -0,0 +1 @@
1
+ :root{color-scheme:light;font-family:Inter,Noto Sans KR,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--ink: #0f172a;--copy: #334155;--muted: #64748b;--line: rgba(148, 163, 184, .28);--panel: rgba(255, 255, 255, .9);--panel-strong: rgba(255, 255, 255, .97);--blue: #2563eb;--teal: #0f766e;--orange: #f97316;--shadow: 0 18px 48px rgba(15, 23, 42, .14);--soft-shadow: 0 12px 28px rgba(15, 23, 42, .08)}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{min-width:320px;color:var(--ink);background:#f8fafc;overflow-x:hidden}button,input,textarea,select{font:inherit}button{border:0}.app{min-height:100vh}.app--canvas{width:100vw;height:100vh;overflow:hidden}.app-main{min-height:100vh;padding-left:56px}.app--mini-tool .app-main{padding-left:0}.app--canvas .app-main{height:100vh;min-height:0}.app-sidebar{position:fixed;inset:0 auto 0 0;z-index:300;width:56px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 6px;border-right:1px solid rgba(203,213,225,.76);background:linear-gradient(180deg,#f8fafcf5,#e2e8f0e6);box-shadow:8px 0 28px #0f172a0d;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);overflow-y:auto;scrollbar-width:none}.app-sidebar::-webkit-scrollbar{display:none}.sidebar-brand,.sidebar-icon{position:relative;width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;color:#64748b;background:transparent;cursor:pointer;transition:background .16s ease,color .16s ease,transform .16s ease}.sidebar-brand:hover,.sidebar-icon:hover,.sidebar-icon.is-active{color:#1d4ed8;background:#3b82f61c}.sidebar-icon.is-active:before{content:"";position:absolute;left:-6px;top:9px;width:3px;height:24px;border-radius:0 3px 3px 0;background:#2563eb}.sidebar-divider{width:28px;height:1px;background:#94a3b866}.sidebar-nav{display:grid;gap:6px}.sidebar-nav--context{padding-bottom:2px}.sidebar-divider--context{background:#2563eb2e}.sidebar-icon--context{color:#1d4ed8;background:#3b82f614}.sidebar-icon--context:hover,.sidebar-icon--context.is-active{color:#fff;background:#2563eb}.sidebar-spacer{flex:1}.sidebar-account-wrap{position:relative;width:42px;height:42px;flex:0 0 auto}.sidebar-account-wrap>.sidebar-icon{width:100%;height:100%}.sidebar-account-popover{position:fixed;left:64px;bottom:10px;z-index:3600;width:min(320px,calc(100vw - 84px));overflow:hidden;border:1px solid rgba(203,213,225,.9);border-radius:10px;color:#0f172a;background:#fffffffa;box-shadow:0 20px 50px #0f172a2e}.account-popover-head{display:flex;align-items:center;gap:12px;padding:14px;border-bottom:1px solid rgba(226,232,240,.95)}.account-popover-avatar{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:1px solid rgba(37,99,235,.24);border-radius:9px;color:#1d4ed8;background:#3b82f61a;font-size:15px;font-weight:900}.account-popover-title{min-width:0;display:grid;gap:2px}.account-popover-title span,.account-popover-credit-title{color:#64748b;font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.account-popover-title strong{overflow:hidden;color:#0f172a;font-size:14px;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.account-popover-title small{color:#64748b;font-size:12px;font-weight:700}.account-popover-credit{padding:12px 14px 14px;border-bottom:1px solid rgba(226,232,240,.95);background:linear-gradient(135deg,#0ea5e914,#f59e0b14),#f8fafc}.account-popover-credit-title{display:inline-flex;align-items:center;gap:6px}.account-popover-credit>strong{display:block;margin-top:6px;color:#0f172a;font-size:24px;line-height:1.05;font-weight:950}.account-popover-credit p{margin:8px 0 0;color:#475569;font-size:12px;line-height:1.45}.account-popover-credit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.account-popover-credit-grid div{min-width:0;padding:8px;border:1px solid rgba(203,213,225,.72);border-radius:8px;background:#ffffffc7}.account-popover-credit-grid span{display:block;color:#64748b;font-size:11px;font-weight:800}.account-popover-credit-grid b{display:block;overflow:hidden;margin-top:3px;color:#0f172a;font-size:12px;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.account-popover-actions{display:grid;gap:6px;padding:8px}.account-popover-action{min-height:38px;display:inline-flex;align-items:center;justify-content:flex-start;gap:9px;padding:0 11px;border:1px solid rgba(203,213,225,.82);border-radius:8px;color:#334155;background:#fff;cursor:pointer;font-size:13px;font-weight:850;transition:background .16s ease,border-color .16s ease,color .16s ease}.account-popover-action:hover{color:#1d4ed8;border-color:#2563eb47;background:#3b82f614}.account-popover-action--primary{color:#fff;border-color:#2563eb;background:#2563eb}.account-popover-action--primary:hover{color:#fff;border-color:#1d4ed8;background:#1d4ed8}.account-popover-action--danger{color:#be123c;border-color:#f43f5e3d;background:#fff1f2}.account-popover-action--danger:hover{color:#fff;border-color:#be123c;background:#be123c}.account-popover-action:disabled{cursor:progress;opacity:.68}.page{min-height:100vh;padding:36px 0 72px}.route-lazy-fallback{min-height:100vh;display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;color:#475569;background:linear-gradient(180deg,#f8fafc,#eef6ff 54%,#f8fafc);font-size:13px;font-weight:850}.route-lazy-spinner{width:18px;height:18px;border:2px solid rgba(37,99,235,.18);border-top-color:var(--primary);border-radius:999px;color:var(--primary);animation:spinIcon .9s linear infinite}.sidebar-placeholder{pointer-events:none;background:linear-gradient(135deg,#e2e8f0bf,#f1f5f980);box-shadow:inset 0 0 0 1px #94a3b833}.route-keepalive{min-height:100%}.route-keepalive[hidden]{display:none!important}.route-keepalive--mindcanvas{width:100%;min-height:100%}.tools-page,.tools-directory-page,.tool-home-page,.youtube-page,.execution-mode-page,.runtime-error-page,.not-found-page,.planmaster-page,.ops-page,.company-core-page,.admin-dashboard-page,.code-page{background:radial-gradient(circle at top left,rgba(8,145,178,.14),transparent 30%),radial-gradient(circle at top right,rgba(245,158,11,.12),transparent 28%),linear-gradient(180deg,#f8fafc,#eef6ff 54%,#f8fafc)}.tools-page>*,.tools-directory-page>*,.tool-home-page>*,.youtube-page>*,.execution-mode-page>*,.runtime-error-page>*,.not-found-page>*,.planmaster-page>*,.ops-page>*,.company-core-page>*,.admin-dashboard-page>*,.code-page>*{width:min(1180px,calc(100% - 40px));margin-inline:auto}.eyebrow{display:inline-flex;align-items:center;min-height:30px;padding:0 12px;border:1px solid rgba(15,118,110,.18);border-radius:999px;color:var(--teal);background:#fffc;font-size:12px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.section-head h1,.section-head h2{margin:12px 0 0;max-width:900px;font-size:clamp(34px,5vw,58px);line-height:1.02;font-weight:920;letter-spacing:0}.section-head p{max-width:780px;margin:20px 0 0;color:var(--copy);font-size:18px;line-height:1.8}.action-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 18px;border-radius:9px;border:1px solid transparent;cursor:pointer;font-weight:800}.btn-primary{color:#fff;background:#0f172a}.btn-secondary{color:#0f172a;background:#fff;border-color:#cbd5e1e6}.btn-ghost{color:#0f172a;background:#ffffff85;border-color:#cbd5e19e}.ops-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:28px}.ops-card{padding:24px;border:1px solid rgba(203,213,225,.76);border-radius:9px;background:#ffffffdb;box-shadow:var(--soft-shadow)}.card-label{color:var(--teal);font-size:12px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.ops-card h3{margin:12px 0 8px}.ops-card p{color:#475569;line-height:1.65}@media(max-width:960px){.ops-grid{grid-template-columns:1fr}}@media(max-width:640px){.app-main{padding-left:48px}.app-sidebar{width:48px;padding-inline:4px}.sidebar-brand,.sidebar-icon,.sidebar-account-wrap{width:38px;height:38px}.sidebar-account-popover{left:54px;bottom:8px;width:min(300px,calc(100vw - 64px))}.page{padding-top:24px}.section-head h1,.section-head h2{font-size:36px;line-height:1.04}.section-head p{font-size:15px}}
@@ -0,0 +1,4 @@
1
+ const t=[{id:"markdown-basics",title:"Markdown viewers and previews",description:"Fast tools for opening, previewing, and converting markdown without sending files to a server."},{id:"markdown-cleanup",title:"Markdown cleanup and checks",description:"Lightweight tools for outline extraction, table cleanup, and link review before publishing docs."},{id:"quick-capture",title:"Quick capture tools",description:"Local-first note and clipboard tools for rough thoughts, snippets, and small planning work."}],n=["# Free Online Markdown Viewer","","Use this tiny tool to preview markdown locally before the work becomes a larger MindCanvas project.","","## Launch checklist","","- Confirm the audience","- Keep the first offer simple","- Move reusable notes into MindCanvas","","| Channel | Job | Status |","| - | - | - |","| Reddit | Proof post | Draft |","| YouTube | Demo script | Next |","","When you need cloud sync, AI, or a larger visual workspace, move the work into MindCanvas."].join(`
2
+ `),r=["| name | role | price |","| - | - | - |","| starter | solo builder | 12 |","| pro | saved project workflows | 29 |"].join(`
3
+ `),i=["# Link review","","- [MindCanvas](/mindcanvas)","- [Local dev](http://localhost:5173)","- [Empty target]()","- [Unsafe action](javascript:alert(1))","- [Cloudflare](https://developers.cloudflare.com/)"].join(`
4
+ `),o=[{key:"markdown-viewer",label:"Viewer",chip:"Markdown",liveUrl:"https://mdview-die.pages.dev",hostnames:["mdview.pages.dev","mdview-die.pages.dev","mdview.mindexec.io","markdown-viewer.pages.dev","markdown-viewer.mindexec.io"],title:"Free Online Markdown Viewer",description:"Preview markdown locally in your browser and keep larger writing workflows ready for MindCanvas.",group:"markdown-basics",kind:"markdown-preview",heroEyebrow:"Free local markdown tool",heroTitle:"Preview markdown without uploading it",heroSubtitle:"Paste markdown, inspect the rendered result, and move durable work into MindCanvas when the note grows.",privacyNote:"Runs locally in your browser. No login. No database storage.",canvasTitle:"Markdown preview as a mini canvas",canvasSubtitle:"Source, preview, readouts, and next-step thinking stay visible at once.",toolbarTitle:"Preview lane",toolbarBody:"Use the source node, scan the result node, then move serious work forward.",badges:["Local only","Preview","MindCanvas handoff"],learningTitle:"A quick tool can still teach the product habit",learningBody:"The preview is the first object. MindCanvas becomes useful when context starts branching.",learningBullets:["Keep source and result side by side.","Treat output as reusable context.","Switch when one file becomes a workflow."],ctaTitle:"Need a saved workspace?",ctaBody:"Send the source and preview context to MindCanvas as a starting board.",relatedKeys:["bulk-markdown-viewer","readme-previewer","markdown-to-html"]},{key:"bulk-markdown-viewer",label:"Bulk",chip:"Bulk",liveUrl:"https://bulkmd.pages.dev",hostnames:["bulkmd.pages.dev","bulkmd.mindexec.io","bulk-markdown-viewer.pages.dev","bulk-markdown-viewer.mindexec.io"],title:"Bulk Markdown Viewer",description:"Review a stack of markdown snippets locally and use MindCanvas once the review needs structure.",group:"markdown-basics",kind:"markdown-preview",heroEyebrow:"Free local markdown stack",heroTitle:"Scan a small markdown stack in one place",heroSubtitle:"Paste multiple markdown sections and inspect the rendered output without a server round trip.",privacyNote:"Runs locally in your browser. No upload path is used.",canvasTitle:"Bulk review lane",canvasSubtitle:"Useful when a small pile is not yet a full project, but is no longer a single note.",toolbarTitle:"Stack preview",toolbarBody:"Keep the source stack and rendered result visible while you decide what matters.",badges:["Local only","Stack scan","No database"],learningTitle:"Stacks reveal structure",learningBody:"Once several files need comparison, a full MindCanvas board is the better container.",learningBullets:["Scan for repeated headings.","Collect reusable snippets.","Move the durable set to MindCanvas."],ctaTitle:"Turn the stack into a board",ctaBody:"Create a MindCanvas handoff with the source stack and an AI cleanup task.",relatedKeys:["markdown-viewer","markdown-outline","markdown-link-checker"]},{key:"readme-previewer",label:"README",chip:"README",liveUrl:"https://readme-1o4.pages.dev",hostnames:["readme.pages.dev","readme-1o4.pages.dev","readme-previewer.pages.dev","readme.mindexec.io","readme-previewer.mindexec.io"],title:"README Previewer",description:"Preview README-style markdown before publishing it to GitHub, docs, or a launch page.",group:"markdown-basics",kind:"markdown-preview",heroEyebrow:"Free README preview",heroTitle:"Check a README before it ships",heroSubtitle:"Preview local markdown and turn the next revision into a MindCanvas task when the document needs more work.",privacyNote:"Your README text stays in this browser session.",canvasTitle:"README review lane",canvasSubtitle:"Great for checking the first impression before opening a bigger docs workflow.",toolbarTitle:"README preview",toolbarBody:"Edit the source and scan the preview, headings, and next-step notes together.",badges:["README","Local preview","Docs handoff"],learningTitle:"Publishing starts with clarity",learningBody:"A README usually needs audience, promise, install path, and proof to sit together.",learningBullets:["Check the headline.","Look for missing setup steps.","Move revision work to MindCanvas."],ctaTitle:"Make revision work visible",ctaBody:"Send this README to MindCanvas with an AI task for cleanup.",relatedKeys:["markdown-viewer","markdown-link-checker","markdown-to-html"]},{key:"markdown-to-html",label:"HTML",chip:"HTML",liveUrl:"https://md2html-4r7.pages.dev",hostnames:["md2html.pages.dev","md2html-4r7.pages.dev","md2html.mindexec.io","markdown-to-html.pages.dev","markdown-to-html.mindexec.io"],title:"Markdown to HTML Preview",description:"Render markdown as HTML instantly in your browser, with no upload step.",group:"markdown-basics",kind:"markdown-preview",heroEyebrow:"Free markdown conversion",heroTitle:"Turn markdown into simple HTML locally",heroSubtitle:"Convert markdown for quick handoff, then use MindCanvas when conversion becomes part of a larger content workflow.",privacyNote:"Conversion runs locally in the browser.",canvasTitle:"Markdown conversion lane",canvasSubtitle:"Source and output stay paired so the conversion can become project context later.",toolbarTitle:"HTML output",toolbarBody:"Use copy for quick handoff or send the work to MindCanvas.",badges:["HTML","Copy output","Local"],learningTitle:"Conversion is often a step, not the whole job",learningBody:"MindCanvas helps when repeated conversion needs context, review, and follow-up tasks.",learningBullets:["Keep the source canonical.","Copy output when it is disposable.","Save the workflow when it repeats."],ctaTitle:"Keep repeated conversions organized",ctaBody:"Move source, output, and next action into a canvas.",relatedKeys:["markdown-viewer","readme-previewer","bulk-markdown-viewer"]},{key:"markdown-outline",label:"Outline",chip:"Outline",liveUrl:"https://mdoutln.pages.dev",hostnames:["mdoutln.pages.dev","mdoutln.mindexec.io","markdown-outline.pages.dev","markdown-outline.mindexec.io"],title:"Markdown Outline Generator",description:"Extract heading structure from markdown instantly and scan document hierarchy before larger edits.",group:"markdown-cleanup",kind:"markdown-outline",heroEyebrow:"Free markdown outline",heroTitle:"Reveal the skeleton of a markdown document",heroSubtitle:"Paste markdown and inspect the heading hierarchy locally before turning revisions into a larger workflow.",privacyNote:"Runs locally. No upload, login, or database save.",canvasTitle:"Outline as structure node",canvasSubtitle:"The source and hierarchy stay visible so weak sections are easier to spot.",toolbarTitle:"Hierarchy lane",toolbarBody:"Use the outline result to decide what needs rewriting.",badges:["Outline","Heading scan","Local"],learningTitle:"Structure is the first review pass",learningBody:"A weak outline usually predicts a weak document. Fixing structure is an ideal MindCanvas task.",learningBullets:["Find missing H2 sections.","Spot over-nested content.","Create a focused cleanup task."],ctaTitle:"Turn structure into action",ctaBody:"Send the source and outline to MindCanvas with a cleanup task.",relatedKeys:["markdown-viewer","bulk-markdown-viewer","readme-previewer"]},{key:"markdown-table-formatter",label:"Formatter",chip:"Tables",liveUrl:"https://mdtable-3ik.pages.dev",hostnames:["mdtable.pages.dev","mdtable-3ik.pages.dev","mdtable.mindexec.io","markdown-table-formatter.pages.dev","markdown-table-formatter.mindexec.io"],title:"Markdown Table Formatter",description:"Clean up markdown tables locally so they are easier to read in README files and docs.",group:"markdown-cleanup",kind:"markdown-table",heroEyebrow:"Free markdown table cleanup",heroTitle:"Make rough markdown tables readable",heroSubtitle:"Paste a messy table, format it locally, and move repeated docs cleanup into MindCanvas.",privacyNote:"Runs locally. Table text stays in your browser.",canvasTitle:"Table cleanup lane",canvasSubtitle:"Source and formatted table stay side by side for quick docs polishing.",toolbarTitle:"Formatter lane",toolbarBody:"Clean a table now; save the larger docs workflow later.",badges:["Tables","Formatter","Local"],learningTitle:"Small cleanup can be a product entry point",learningBody:"A table formatter solves a narrow job, then points to the broader docs workflow.",learningBullets:["Normalize columns.","Keep copyable output.","Move repeated cleanup into MindCanvas."],ctaTitle:"Organize the docs cleanup",ctaBody:"Send table source and formatted output to MindCanvas.",relatedKeys:["readme-previewer","markdown-to-html","bulk-markdown-viewer"]},{key:"markdown-link-checker",label:"Link Check",chip:"Links",liveUrl:"https://markdown-link-checker.pages.dev",hostnames:["mdcheck.pages.dev","markdown-link-checker.pages.dev","mdcheck.mindexec.io","markdown-link-checker.mindexec.io"],title:"Markdown Link Checker",description:"Scan markdown links locally and catch empty, dev-only, unsafe, or suspicious targets before publishing.",group:"markdown-cleanup",kind:"markdown-links",heroEyebrow:"Free markdown link review",heroTitle:"Catch risky markdown links before publishing",heroSubtitle:"Classify links locally, flag obvious problems, and move larger review work to MindCanvas.",privacyNote:"No crawling. No external requests. The checker classifies text locally.",canvasTitle:"Link review lane",canvasSubtitle:"Use this before publishing docs, launch notes, or README pages.",toolbarTitle:"Link scanner",toolbarBody:"Paste markdown and inspect warnings without hitting external sites.",badges:["No crawl","Warnings","Local"],learningTitle:"Link review belongs near publishing",learningBody:"Once link cleanup is tied to docs, launch, or support work, MindCanvas keeps the follow-up visible.",learningBullets:["Flag localhost links.","Reject empty targets.","Create a publish checklist."],ctaTitle:"Turn warnings into a checklist",ctaBody:"Send the report to MindCanvas as a review task.",relatedKeys:["readme-previewer","markdown-outline","bulk-markdown-viewer"]},{key:"browser-notepad",label:"Notes",chip:"Notes",liveUrl:"https://quickpad.pages.dev",hostnames:["quickpad.pages.dev","quickpad.mindexec.io","browser-notepad.pages.dev","browser-notepad.mindexec.io"],title:"Browser Notepad",description:"Take quick notes instantly with no sign-in, no upload, and no cloud storage.",group:"quick-capture",kind:"notepad",heroEyebrow:"Free browser note",heroTitle:"Capture a rough note before it disappears",heroSubtitle:"Write locally first. Move into MindCanvas when a quick note turns into decisions, tasks, or research.",privacyNote:"Local browser session only. No account required.",canvasTitle:"Quickpad as first node",canvasSubtitle:"A plain note becomes more useful when it can branch into context and action.",toolbarTitle:"Quickpad lane",toolbarBody:"Capture first, structure only when the thought is worth keeping.",badges:["Quick note","Local","No login"],learningTitle:"Notes become useful when they connect",learningBody:"The notepad is intentionally small. MindCanvas is where branching starts.",learningBullets:["Write the raw thought.","Extract one next action.","Move it when it deserves memory."],ctaTitle:"Turn this note into a board",ctaBody:"Send the note to MindCanvas with an AI task for next steps.",relatedKeys:["clipboard-board","markdown-viewer","bulk-markdown-viewer"]},{key:"clipboard-board",label:"Clipboard",chip:"Clipboard",liveUrl:"https://clipbrd.pages.dev",hostnames:["clipbrd.pages.dev","clipbrd.mindexec.io","clipboard-board.pages.dev","clipboard-board.mindexec.io"],title:"Local Clipboard Board",description:"Collect snippets, ideas, and pasted text into a lightweight local board.",group:"quick-capture",kind:"clipboard",heroEyebrow:"Free local clipboard board",heroTitle:"Collect loose fragments before they become a project",heroSubtitle:"Paste snippets into a local board, then move the useful pile to MindCanvas when connections emerge.",privacyNote:"Snippets stay local unless you choose to move them.",canvasTitle:"Snippet board lane",canvasSubtitle:"Useful for loose fragments that are not ready for a formal document.",toolbarTitle:"Clipboard lane",toolbarBody:"Add snippets, scan the pile, then promote it to MindCanvas.",badges:["Snippets","Local board","Capture"],learningTitle:"A pile becomes work when patterns appear",learningBody:"MindCanvas is the next step when snippets need grouping, saved context, or AI assistance.",learningBullets:["Collect without sorting too early.","Look for repeated themes.","Promote the useful set."],ctaTitle:"Promote the useful pile",ctaBody:"Send snippets to MindCanvas with a grouping task.",relatedKeys:["browser-notepad","markdown-viewer","bulk-markdown-viewer"]}];function s(e){return o.find(a=>a.key===e)}function l(){return t.map(e=>({...e,entries:o.filter(a=>a.group===e.id)})).filter(e=>e.entries.length>0)}export{s as a,i as b,n as c,r as d,l as g,o as m};
@@ -0,0 +1 @@
1
+ (function(){"use strict";const y=new Set(["text","note","memo","markdown","code","directory"]),X=/[\p{L}\p{M}\p{N}]{2,}/gu,I=4,k=8,g=1.35;function B(e){return y.has(String(e||"").trim().toLowerCase())}function D(e){const t=e.map(L),o=new Map,r=new Map,n=new Map,i=new Map;for(const s of t){o.set(s.id,s);for(const c of s.tokens)S(r,c,s.id);for(const c of s.prefixes)S(n,c,s.id);for(const c of s.ngrams)S(i,c,s.id)}return{documents:t,documentById:o,tokenIndex:r,prefixIndex:n,ngramIndex:i}}function z(e,t,o={}){const r=Math.max(1,Math.trunc(Number(o.limit||30))),n=A(t),i=O(e,0,0,o.viewport,0);if(!n)return{hits:[],profile:i};const s=Array.from(T(n)),c=Array.from(x(s)),f=w(n),E=Array.from(H(f)),l=new Map;for(const a of s)N(e.tokenIndex,a,l,8);for(const a of c)N(e.prefixIndex,a,l,a.length<=3?4:2);for(const a of E)N(e.ngramIndex,a,l,1.15);const h=G(e,l,r),m=V(o.allowedContentTypes),R=[];for(const a of h){const d=e.documentById.get(a);if(!d||m&&!m.has(d.contentType))continue;const p=U(d,n,s,E);if(p<=0)continue;const P=v(d,o.viewport??null);R.push({nodeId:d.id,score:p+P,textScore:p,viewportBoost:P})}R.sort((a,d)=>d.score-a.score||a.nodeId.localeCompare(d.nodeId));const M=R.slice(0,r);return{hits:M,profile:O(e,h.length,M.length,o.viewport,M.filter(a=>a.viewportBoost>0).length)}}function A(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="",n=!1;for(const i of o){if(/\s/u.test(i)){n||(r+=" ",n=!0);continue}q(i)||(r+=i,n=!1)}return r.trim()}function T(e){return new Set(e.match(X)??[])}function x(e){const t=new Set;for(const o of e){if(!o.trim())continue;const r=Math.min(8,o.length);for(let n=2;n<=r;n+=1)t.add(o.slice(0,n))}return t}function H(e){const t=new Set;if(!e.trim())return t;if(e.length<=3)return t.add(e),t;for(let o=0;o<=e.length-3;o+=1)t.add(e.slice(o,o+3));return t}function L(e){const t=String(e.kind??"").trim().toLowerCase(),o=u(e.prompt??e.title,2048),r=B(t)?u(e.response??e.body,16e3):"",n=W(e.metadata,e.tags,e.metadataText),i=u(e.sourceFilePath||e.assetUrl,2048),s=A(o),c=A(r),f=A(n),E=A(i),l=A(t),h=[s,f,E,c,l].filter(Boolean).join(" "),m=T(h);return{id:String(e.id),contentType:t,normalizedPrompt:s,normalizedResponse:c,normalizedMetadata:f,normalizedSourcePath:E,normalizedContentType:l,tokens:m,prefixes:x(m),ngrams:H(w(h)),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 W(e,t,o){const r=[];let n=0;if(e)for(const[i,s]of Object.entries(e)){if(n>=64)break;!String(i??"").trim()&&!String(s??"").trim()||(r.push(u(i,128)),String(s??"").trim()&&r.push(u(s,1024)),n+=1)}return n<64&&(t!=null&&t.length)&&(r.push("tags",u(t.join(" "),1024)),n+=1),n<64&&(o!=null&&o.trim())&&r.push("metadata",u(o,1024)),r.join(" ")}function U(e,t,o,r){let n=0;e.normalizedPrompt===t?n+=120:_(e.normalizedPrompt,t)&&(n+=54),_(e.normalizedMetadata,t)&&(n+=26),_(e.normalizedSourcePath,t)&&(n+=18),_(e.normalizedResponse,t)&&(n+=14),_(e.normalizedContentType,t)&&(n+=8);for(const i of o)e.tokens.has(i)&&(n+=7),e.normalizedPrompt.startsWith(i)&&(n+=10);for(const i of r)e.ngrams.has(i)&&(n+=.85);return n}function v(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,n=Math.abs(o-t.centerX)/Math.max(1,t.halfWidth),i=Math.abs(r-t.centerY)/Math.max(1,t.halfHeight),s=Math.sqrt(n*n+i*i);if(s<=1)return I+(1-s)*k;if(s<=g){const c=1-(s-1)/Math.max(.001,g-1);return Math.max(0,c)*(I*.75)}return 0}function G(e,t,o){return t.size===0?e.documents.map(r=>r.id):Array.from(t.entries()).sort((r,n)=>n[1]-r[1]||r[0].localeCompare(n[0])).slice(0,Math.max(o*16,256)).map(([r])=>r)}function V(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 O(e,t,o,r,n){return{documentCount:e.documents.length,candidateCount:t,rankedCount:o,viewportBoosted:!!r,boostedCount:n,indexedTokenCount:e.tokenIndex.size,indexedPrefixCount:e.prefixIndex.size,indexedNGramCount:e.ngramIndex.size}}function S(e,t,o){const r=e.get(t);if(r){r.add(o);return}e.set(t,new Set([o]))}function N(e,t,o,r){const n=e.get(t);if(n)for(const i of n)o.set(i,(o.get(i)??0)+r)}function w(e){let t="";for(const o of e)/\s/u.test(o)||(t+=o);return t}function u(e,t){const o=String(e??"");return o.length<=t?o:o.slice(0,t)}function _(e,t){return!!(e&&t&&e.includes(t))}function q(e){const t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}let b="",C=D([]);function F(e){const t=e;if(!t)return null;const o=Number(t.centerX),r=Number(t.centerY),n=Number(t.halfWidth),i=Number(t.halfHeight);return[o,r,n,i].every(Number.isFinite)?{centerX:o,centerY:r,halfWidth:Math.max(1,n),halfHeight:Math.max(1,i)}:null}function Y(e,t){b=String(e||""),C=D(t)}function j(e){const t=Number(e.seq||0),o=String(e.query||""),r=String(e.boardId||""),n=performance.now();if(!o.trim()||r!==b){self.postMessage({type:"SEARCH_RESULT",seq:t,query:o,boardId:r,hits:[],profile:{durationMs:0,documentCount:C.documents.length,candidateCount:0,rankedCount:0}});return}const i=F(e.viewport),s=Math.max(1,Math.min(30,Number(e.limit||8))),c=z(C,o,{limit:s,viewport:i});self.postMessage({type:"SEARCH_RESULT",seq:t,query:o,boardId:r,hits:c.hits.map(f=>({nodeId:f.nodeId,score:f.score,textScore:f.textScore,viewportBoost:f.viewportBoost})),profile:{durationMs:Number((performance.now()-n).toFixed(2)),documentCount:c.profile.documentCount,candidateCount:c.profile.candidateCount,rankedCount:c.profile.rankedCount,viewportBoosted:c.profile.viewportBoosted,boostedCount:c.profile.boostedCount,indexedTokenCount:c.profile.indexedTokenCount,indexedPrefixCount:c.profile.indexedPrefixCount,indexedNGramCount:c.profile.indexedNGramCount}})}self.onmessage=e=>{const t=e.data;if(!(!t||typeof t!="object")){if(t.type==="REBUILD_BOARD"){Y(String(t.boardId||""),Array.isArray(t.nodes)?t.nodes:[]);return}t.type==="SEARCH_QUERY"&&j(t)}},self.postMessage({type:"READY"})})();
@@ -0,0 +1 @@
1
+ import{R as i}from"./app-runtime-xD2Z3NdN.js";const n="mindexec-react-pricing-checkout-intent-v1";function o(e,t="/pricing"){const r={stage:e,sourcePath:t,requestedAt:new Date().toISOString()};try{window.sessionStorage.setItem(n,JSON.stringify(r))}catch{}return i.emit("pricing.checkout.intent.saved",{stage:e,sourcePath:t}),r}function s(){try{const e=window.sessionStorage.getItem(n);if(!e)return null;const t=JSON.parse(e);return!t||typeof t!="object"?null:{stage:String(t.stage||"STANDARD"),sourcePath:String(t.sourcePath||"/pricing"),requestedAt:String(t.requestedAt||"")}}catch{return null}}function a(e="cleared"){try{window.sessionStorage.removeItem(n)}catch{}i.emit("pricing.checkout.intent.cleared",{reason:e})}export{n as P,a as c,s as p,o as r};
@@ -0,0 +1 @@
1
+ const L=Object.freeze(["SUPABASE_SERVICE_ROLE_KEY","VITE_SUPABASE_SERVICE_ROLE_KEY","DODO_API_KEY","VITE_DODO_API_KEY","DODO_PAYMENTS_WEBHOOK_KEY","VITE_DODO_PAYMENTS_WEBHOOK_KEY","DODO_WEBHOOK_SECRET","VITE_DODO_WEBHOOK_SECRET","STRIPE_SECRET_KEY","VITE_STRIPE_SECRET_KEY","PAYPAL_CLIENT_SECRET","VITE_PAYPAL_CLIENT_SECRET","CLOUDFLARE_API_TOKEN","VITE_CLOUDFLARE_API_TOKEN","R2_SECRET_ACCESS_KEY","VITE_R2_SECRET_ACCESS_KEY"]),K=[/SERVICE_ROLE/i,/WEBHOOK.*(SECRET|KEY)/i,/DODO.*(SECRET|KEY|TOKEN)/i,/STRIPE.*SECRET/i,/PAYPAL.*SECRET/i,/CLOUDFLARE.*TOKEN/i,/R2.*SECRET/i],N=["VITE_MINDEXEC_SUPABASE_URL","VITE_SUPABASE_URL"],D=["VITE_MINDEXEC_SUPABASE_PUBLISHABLE_KEY","VITE_SUPABASE_PUBLISHABLE_KEY","VITE_MINDEXEC_SUPABASE_ANON_KEY","VITE_SUPABASE_ANON_KEY"],m=["VITE_MINDEXEC_FUNCTIONS_URL","VITE_SUPABASE_FUNCTIONS_URL"],P=["VITE_MINDEXEC_DODO_CHECKOUT_FUNCTION_URL"],b=["VITE_MINDEXEC_CLOUD_STORAGE_PUBLIC_URL"],v=["VITE_MINDEXEC_CLOUD_UPLOAD_FUNCTION_URL"],y=["VITE_MINDEXEC_ADMIN_FUNCTIONS_URL"],g=["VITE_MINDEXEC_CLOUD_PROJECTS_ENABLED"],B=[/REPLACE_WITH/i,/your-project-ref/i,/example\.com/i];function _(e,n){for(const t of n){const o=e[t],s=typeof o=="string"?o.trim():"";if(s)return{key:t,value:s}}return null}function Y(e,n){const t=_(e,n);if(!t)return null;const o=t.value.trim().toLowerCase();return["1","true","yes","on"].includes(o)?!0:["0","false","no","off"].includes(o)?!1:null}function F(e){try{const n=new URL(e);return n.protocol==="https:"?!0:n.protocol==="http:"&&["localhost","127.0.0.1","::1"].includes(n.hostname)}catch{return!1}}function d(e){return B.some(n=>n.test(e))}function V(e){const n=e==null?void 0:e.trim();return!n||d(n)||!F(n)?null:n.replace(/\/+$/,"")}function E(e,n,t=null){const o=_(e,n),s=(o==null?void 0:o.value)??t,r=V(s),u=o||t?[]:[...n];return s?d(s)?{state:"invalid",url:null,envKeys:o?[o.key]:[],missingEnvKeys:[],invalidReason:"replace placeholder public env value before live proof"}:r?{state:"ready",url:r,envKeys:o?[o.key]:[],missingEnvKeys:[]}:{state:"invalid",url:null,envKeys:o?[o.key]:[],missingEnvKeys:[],invalidReason:"public endpoints must use https or local loopback http"}:{state:"missing",url:null,envKeys:o?[o.key]:[],missingEnvKeys:u}}function k(e,n){const t=_(e,n);return t?d(t.value)?{state:"invalid",preview:R(t.value),envKeys:[t.key],missingEnvKeys:[]}:{state:t.value.length>=20?"ready":"invalid",preview:R(t.value),envKeys:[t.key],missingEnvKeys:[]}:{state:"missing",preview:null,envKeys:[],missingEnvKeys:[...n]}}function R(e){const n=e.trim();return n.length<=12?"***":`${n.slice(0,6)}...${n.slice(-4)}`}function h(e){if(!e)return null;try{return`${new URL(e).origin}/functions/v1`}catch{return null}}function I(e,n){return e?`${e}/${n}`:null}function M(e){return L.includes(e)||K.some(n=>n.test(e))}function H(e){return Object.keys(e).filter(n=>e[n]!==void 0&&e[n]!==null&&String(e[n]).trim()!=="").filter(M).sort((n,t)=>n.localeCompare(t))}function i(e,n,t){return e?{mode:"blocked-secret",canAttempt:!1,required:n}:t.some(o=>o.state==="invalid")?{mode:"config-invalid",canAttempt:!1,required:n}:t.every(o=>o.state==="ready")?{mode:"provider-ready",canAttempt:!0,required:n}:{mode:"config-missing",canAttempt:!1,required:n}}function p(e){return{mode:"config-missing",canAttempt:!1,required:e}}function X(e){return e.some(n=>n.mode==="blocked-secret")?"blocked-secret":e.some(n=>n.mode==="config-invalid")?"config-invalid":e.some(n=>n.mode==="provider-ready")?"provider-ready":"config-missing"}function j(e={}){const n=H(e),t=n.length>0,o=E(e,N),s=k(e,D),r=E(e,m,h(o.url)),u=E(e,P,I(r.url,"dodo-create-checkout")),l=E(e,b),c=E(e,v,I(r.url,"upload-file")),a=E(e,y,r.url),S=Y(e,g),C=i(t,["Supabase URL","Supabase anon key"],[o,s]),U=i(t,["Supabase URL","Supabase anon key"],[o,s]),O=i(t,["Supabase URL","Supabase anon key","Dodo checkout Edge Function"],[o,s,u]),T=S===!1?p(["Cloud projects enabled","Supabase URL","Supabase anon key"]):i(t,["Supabase URL","Supabase anon key"],[o,s]),A=S===!1?p(["Cloud projects enabled","Cloud public asset URL","Cloud upload Edge Function","Supabase anon key"]):i(t,["Cloud public asset URL","Cloud upload Edge Function","Supabase anon key"],[l,c,s]),f=i(t,["Admin Edge Function base URL","Supabase anon key"],[a,s]);return{overallState:X([C,U,O,T,A,f]),forbiddenClientSecretKeys:n,supabaseUrl:t?{...o,state:"blocked-secret"}:o,supabaseAnonKey:t?{...s,state:"blocked-secret"}:s,functionsBaseUrl:t?{...r,state:"blocked-secret"}:r,dodoCheckoutFunctionUrl:t?{...u,state:"blocked-secret"}:u,cloudStoragePublicBaseUrl:t?{...l,state:"blocked-secret"}:l,cloudStorageUploadFunctionUrl:t?{...c,state:"blocked-secret"}:c,adminFunctionsBaseUrl:t?{...a,state:"blocked-secret"}:a,auth:C,passwordReset:U,checkout:O,cloudBoards:T,cloudAssetUpload:A,adminData:f}}export{j as r};
@@ -0,0 +1 @@
1
+ function M(){return typeof window<"u"&&window.localStorage?window.localStorage:globalThis.localStorage??null}function D(e,o=M()){try{return(o==null?void 0:o.getItem(e))??null}catch{return null}}function G(e,o,t=M()){try{return t==null||t.setItem(e,o),!!t}catch{return!1}}function O(e,o=M()){try{return o==null||o.removeItem(e),!!o}catch{return!1}}function C(e,o=M()){const t=D(e,o);if(!t||t.trim().length===0)return null;try{return JSON.parse(t)}catch{return null}}function f(e,o,t=M()){try{return G(e,JSON.stringify(o),t)}catch{return!1}}const _="AiSettings",x="SystemSettings",L="GeneralSettings",w="AgentSettings",S="LastActiveBoardId",N="OpenTabs",W="openai/gpt-3.5-turbo",k="openai/gpt-4o-mini",T="gpt-5.5",H="gemini-3-flash-preview",Q="llama3",b="Tongyi-MAI/Z-Image-Turbo:free",X="google/veo-2",Z="1:1",j="16:9",A="low",l="medium",R="high",P="xhigh",J=new Set(["gpt-5.3-codex","gpt-5.2","gpt-5.2-codex"]),n={LocalOllama:0,BYOK:1,ManagedCloud:2,OpenAiCodex:3,GoogleGeminiCli:4},I={Provider:n.ManagedCloud,OllamaEndpoint:"http://localhost:11434",OllamaModel:Q,UserApiKey:"",ManagedCloudTextModel:W,ManagedCloudReasoningEffort:l,ByokTextModel:k,ByokReasoningEffort:l,CodexTextModel:T,CodexReasoningEffort:l,GeminiTextModel:H,ImageRouterApiKey:"",ImageRouterImageModel:b,ImageRouterVideoModel:X,ImageRouterImageAspectPresetId:Z,ImageRouterVideoAspectPresetId:j,CodeMasterInsightBundlesEnabled:!0,CodeMasterInsightBundleTimeoutMs:18e3,CodeMasterInsightBundleRetryCount:2,CodeMasterInsightBundleRetryCountDeep:3},h={ExecutionMode:"Concept"},m={GridSnapEnabled:!0,GridType:"dot",CursorMode:"lastNode",CursorDirection:"horizontal",CameraTraceMode:"cursor",ImageLoadSize:"default",AiNodeDefaultWidth:400,AiNodeDefaultHeight:200,ShowFullAiResponse:!1,MinimapEnabled:!1,SwapWheelZoomControls:!1},y={DirectInstructionQueueMode:"Append"};function q(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function s(e,o){if(!q(e))return;if(Object.prototype.hasOwnProperty.call(e,o))return e[o];const t=o.toLowerCase(),r=Object.keys(e).find(a=>a.toLowerCase()===t);return r?e[r]:void 0}function i(e,o,t){const r=s(e,o);if(typeof r!="string")return t;const a=r.trim();return a.length>0?a:t}function c(e,o,t){const r=s(e,o);return typeof r=="boolean"?r:t}function g(e,o,t){const r=s(e,o);return typeof r!="number"||!Number.isFinite(r)?t:Math.round(r)}function $(e,o,t){const r=s(e,o);if(typeof r=="number"&&Number.isFinite(r)){const d=Math.round(r);if(Object.values(n).includes(d))return d}switch(String(r??"").trim().toLowerCase()){case"localollama":case"local ollama":return n.LocalOllama;case"byok":return n.BYOK;case"managedcloud":case"managed cloud":return n.ManagedCloud;case"openaicodex":case"openai codex":return n.OpenAiCodex;case"googlegeminicli":case"gemini cli":return n.GoogleGeminiCli;default:return t}}function p(e,o=l){const t=String(e??"").trim().toLowerCase();return t===A||t===l||t===R||t===P?t:o}function B(e,o=T){let t=String(e??"").trim();return t.length>=2&&t.startsWith('"')&&t.endsWith('"')&&(t=t.slice(1,-1).trim()),t?J.has(t.toLowerCase())?B(o,T):t:o}function F(e){return String(e??"").trim()==="PureLLM"?"PureLLM":"Concept"}function K(e){const o=String(e??"").trim();return o==="Next"||o==="ReplacePending"?o:"Append"}function E(e,o=I){const t=i(e,"ByokTextModel",i(e,"ByokModel",o.ByokTextModel)),r=i(e,"ImageRouterImageModel",i(e,"ImageRouterModel",o.ImageRouterImageModel));return{Provider:$(e,"Provider",o.Provider),OllamaEndpoint:i(e,"OllamaEndpoint",o.OllamaEndpoint),OllamaModel:i(e,"OllamaModel",o.OllamaModel),UserApiKey:i(e,"UserApiKey",o.UserApiKey),ManagedCloudTextModel:i(e,"ManagedCloudTextModel",o.ManagedCloudTextModel),ManagedCloudReasoningEffort:p(s(e,"ManagedCloudReasoningEffort"),o.ManagedCloudReasoningEffort),ByokTextModel:t,ByokReasoningEffort:p(s(e,"ByokReasoningEffort"),o.ByokReasoningEffort),CodexTextModel:B(s(e,"CodexTextModel"),o.CodexTextModel),CodexReasoningEffort:p(s(e,"CodexReasoningEffort"),o.CodexReasoningEffort),GeminiTextModel:i(e,"GeminiTextModel",o.GeminiTextModel),ImageRouterApiKey:i(e,"ImageRouterApiKey",o.ImageRouterApiKey),ImageRouterImageModel:r,ImageRouterVideoModel:i(e,"ImageRouterVideoModel",o.ImageRouterVideoModel),ImageRouterImageAspectPresetId:i(e,"ImageRouterImageAspectPresetId",o.ImageRouterImageAspectPresetId),ImageRouterVideoAspectPresetId:i(e,"ImageRouterVideoAspectPresetId",o.ImageRouterVideoAspectPresetId),CodeMasterInsightBundlesEnabled:c(e,"CodeMasterInsightBundlesEnabled",o.CodeMasterInsightBundlesEnabled),CodeMasterInsightBundleTimeoutMs:g(e,"CodeMasterInsightBundleTimeoutMs",o.CodeMasterInsightBundleTimeoutMs),CodeMasterInsightBundleRetryCount:g(e,"CodeMasterInsightBundleRetryCount",o.CodeMasterInsightBundleRetryCount),CodeMasterInsightBundleRetryCountDeep:g(e,"CodeMasterInsightBundleRetryCountDeep",o.CodeMasterInsightBundleRetryCountDeep)}}function z(e,o=h){return{ExecutionMode:F(i(e,"ExecutionMode",o.ExecutionMode))}}function U(e,o=m){return{GridSnapEnabled:c(e,"GridSnapEnabled",o.GridSnapEnabled),GridType:i(e,"GridType",o.GridType),CursorMode:i(e,"CursorMode",o.CursorMode),CursorDirection:i(e,"CursorDirection",o.CursorDirection),CameraTraceMode:i(e,"CameraTraceMode",o.CameraTraceMode),ImageLoadSize:i(e,"ImageLoadSize",o.ImageLoadSize),AiNodeDefaultWidth:g(e,"AiNodeDefaultWidth",o.AiNodeDefaultWidth),AiNodeDefaultHeight:g(e,"AiNodeDefaultHeight",o.AiNodeDefaultHeight),ShowFullAiResponse:c(e,"ShowFullAiResponse",o.ShowFullAiResponse),MinimapEnabled:c(e,"MinimapEnabled",o.MinimapEnabled),SwapWheelZoomControls:c(e,"SwapWheelZoomControls",o.SwapWheelZoomControls)}}function V(e,o=y){return{DirectInstructionQueueMode:K(i(e,"DirectInstructionQueueMode",o.DirectInstructionQueueMode))}}function Y(e=I,o){const t=C(_,o);return t?{settings:E(t,e),source:"stored"}:{settings:{...e},source:"baseline"}}function v(e,o){return f(_,E(e),o)}function ee(e=h,o){const t=C(x,o);return t?{settings:z(t,e),source:"stored"}:{settings:{...e},source:"baseline"}}function oe(e,o){return f(x,z(e),o)}function te(e=m,o){const t=C(L,o);return t?{settings:U(t,e),source:"stored"}:{settings:{...e},source:"baseline"}}function re(e,o){return f(L,U(e),o)}function ne(e=y,o){const t=C(w,o);return t?{settings:V(t,e),source:"stored"}:{settings:{...e},source:"baseline"}}function ie(e,o){return f(w,V(e),o)}function Ee(e){const o=D(S,e);return o&&o.trim().length>0?o.trim():null}function Ce(e,o){const t=String(e??"").trim();return t?G(S,t,o):!1}function Te(e,o){return f(N,e,o)}function Se(e){const o=O(S,e),t=O(N,e);return o||t}function de(e){switch(e){case"Local Ollama":return n.LocalOllama;case"BYOK":return n.BYOK;case"Managed Cloud":return n.ManagedCloud;case"Gemini CLI":return n.GoogleGeminiCli;case"OpenAI Codex":default:return n.OpenAiCodex}}function ae(e){switch(e){case n.LocalOllama:return"Local Ollama";case n.BYOK:return"BYOK";case n.ManagedCloud:return"Managed Cloud";case n.GoogleGeminiCli:return"Gemini CLI";case n.OpenAiCodex:default:return"OpenAI Codex"}}function ue(e){return e==="Fast"?A:e==="Deep"?R:l}function se(e){const o=p(e);return o===A?"Fast":o===R||o===P?"Deep":"Normal"}function le(e){switch(e.Provider){case n.LocalOllama:return e.OllamaModel;case n.BYOK:return e.ByokTextModel;case n.ManagedCloud:return e.ManagedCloudTextModel;case n.GoogleGeminiCli:return e.GeminiTextModel;case n.OpenAiCodex:default:return e.CodexTextModel}}function ce(e){switch(e.Provider){case n.BYOK:return e.ByokReasoningEffort;case n.OpenAiCodex:return e.CodexReasoningEffort;case n.ManagedCloud:default:return e.ManagedCloudReasoningEffort}}function ge(e){return{GridSnapEnabled:e.gridSnap??!0,GridType:e.gridType??m.GridType,CursorMode:e.cursorMode??"center",CursorDirection:e.cursorDirection==="down"?"vertical":"horizontal",CameraTraceMode:e.cameraTraceMode??"none",ImageLoadSize:e.imageLoadSize??m.ImageLoadSize,AiNodeDefaultWidth:e.aiNodeDefaultWidth??340,AiNodeDefaultHeight:e.aiNodeDefaultHeight??196,ShowFullAiResponse:e.showFullAiResponse??!1,MinimapEnabled:e.minimapEnabled??!1,SwapWheelZoomControls:e.wheelMode??!1}}function me(e){return{ExecutionMode:F(e.executionMode)}}function Me(e){return{DirectInstructionQueueMode:K(e.directInstructionQueueMode)}}function fe(e,o=I){const t=de(e.aiProvider),r=String(e.model??"").trim(),a=ue(e.effort),d={...E(o),Provider:t,OllamaEndpoint:e.ollamaEndpoint||o.OllamaEndpoint,ImageRouterImageModel:e.imageRouterImageModel||o.ImageRouterImageModel,ImageRouterVideoModel:e.imageRouterVideoModel||o.ImageRouterVideoModel,ImageRouterImageAspectPresetId:e.imageRouterImageAspectPresetId||o.ImageRouterImageAspectPresetId,ImageRouterVideoAspectPresetId:e.imageRouterVideoAspectPresetId||o.ImageRouterVideoAspectPresetId,CodeMasterInsightBundlesEnabled:e.codeMasterInsightBundlesEnabled??o.CodeMasterInsightBundlesEnabled,CodeMasterInsightBundleTimeoutMs:e.codeMasterInsightBundleTimeoutMs??o.CodeMasterInsightBundleTimeoutMs,CodeMasterInsightBundleRetryCount:e.codeMasterInsightBundleRetryCount??o.CodeMasterInsightBundleRetryCount,CodeMasterInsightBundleRetryCountDeep:e.codeMasterInsightBundleRetryCountDeep??o.CodeMasterInsightBundleRetryCountDeep};return t===n.LocalOllama&&r?d.OllamaModel=r:t===n.BYOK&&r?(d.ByokTextModel=r,d.ByokReasoningEffort=a):t===n.ManagedCloud&&r?(d.ManagedCloudTextModel=r,d.ManagedCloudReasoningEffort=a):t===n.GoogleGeminiCli&&r?d.GeminiTextModel=r:r&&(d.CodexTextModel=B(r),d.CodexReasoningEffort=a),E(d)}function Ae(e,o){const t=Y(I,o).settings;return{ai:v(fe(e,t),o),system:oe(me(e),o),general:re(ge(e),o),agent:ie(Me(e),o)}}function Ie(e,o){return{...e,gridSnap:o.GridSnapEnabled,gridType:o.GridType==="line"||o.GridType==="particles"||o.GridType==="spirit"?o.GridType:"dot",cursorMode:o.CursorMode==="lastNode"?"lastNode":"center",cursorDirection:o.CursorDirection.toLowerCase()==="vertical"?"down":"right",cameraTraceMode:o.CameraTraceMode==="cursor"?"cursor":"none",imageLoadSize:o.ImageLoadSize==="original"?"original":"default",aiNodeDefaultWidth:o.AiNodeDefaultWidth,aiNodeDefaultHeight:o.AiNodeDefaultHeight,showFullAiResponse:o.ShowFullAiResponse,minimapEnabled:o.MinimapEnabled,wheelMode:o.SwapWheelZoomControls}}function pe(e,o){return{...e,aiProvider:ae(o.Provider),ollamaEndpoint:o.OllamaEndpoint,model:le(o),effort:se(ce(o)),imageRouterImageModel:o.ImageRouterImageModel,imageRouterVideoModel:o.ImageRouterVideoModel,imageRouterImageAspectPresetId:o.ImageRouterImageAspectPresetId,imageRouterVideoAspectPresetId:o.ImageRouterVideoAspectPresetId,codeMasterInsightBundlesEnabled:o.CodeMasterInsightBundlesEnabled,codeMasterInsightBundleTimeoutMs:o.CodeMasterInsightBundleTimeoutMs,codeMasterInsightBundleRetryCount:o.CodeMasterInsightBundleRetryCount,codeMasterInsightBundleRetryCountDeep:o.CodeMasterInsightBundleRetryCountDeep}}function Re(e,o){const t=Y(I,o),r=ee(h,o),a=te(m,o),d=ne(y,o);let u=e.settings;return a.source==="stored"&&(u=Ie(u,a.settings)),t.source==="stored"&&(u=pe(u,t.settings)),r.source==="stored"&&(u={...u,executionMode:r.settings.ExecutionMode}),d.source==="stored"&&(u={...u,directInstructionQueueMode:d.settings.DirectInstructionQueueMode}),u===e.settings?e:{...e,settings:u}}export{Re as a,Ce as b,Se as c,Te as d,oe as e,ie as f,ee as g,ne as h,F as i,Ee as l,K as n,Ae as p};
@@ -0,0 +1 @@
1
+ import{ak as b,al as B,am as x,an as R,ao as D}from"./canvas-runtime-BbicBcOj.js";import{R as n}from"./app-runtime-xD2Z3NdN.js";import{l as T,b as f,c as O,d as _}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const L={id:"mindcanvas-main",name:"Global Launch Workspace",updatedAt:new Date().toISOString(),settings:{wheelMode:!1,cursorDirection:"right",inputMode:"Text",model:D,effort:"Normal",appLanguage:"auto",gridSnap:!0,gridType:"dot",cursorMode:"center",cameraTraceMode:"none",imageLoadSize:"default",aiNodeDefaultWidth:340,aiNodeDefaultHeight:196,showFullAiResponse:!1,minimapEnabled:!1,aiProvider:"OpenAI Codex",ollamaEndpoint:"http://localhost:11434",imageRouterEnabled:!1,imageRouterImageModel:R,imageRouterVideoModel:x,imageRouterImageAspectPresetId:B,imageRouterVideoAspectPresetId:b,codeMasterInsightBundlesEnabled:!0,codeMasterInsightBundleTimeoutMs:18e3,codeMasterInsightBundleRetryCount:2,codeMasterInsightBundleRetryCountDeep:3,executionMode:"Concept",directInstructionQueueMode:"Append"},nodes:[{id:"node-agent-command",kind:"ai-task",title:"AI Task",body:"Turn a rough global SaaS idea into a launchable work plan. Keep the result practical: offer, channel, first landing page, and 7-day execution steps.",result:"Drafted execution plan: validate one English-first offer, publish a narrow landing page, collect 20 founder leads, and turn repeated questions into MindCanvas templates.",status:"done",role:"Business operator",tags:["AI Task","Result"],x:180,y:170,width:330,height:196},{id:"node-context",kind:"note",title:"Context",body:"Target: global solo builders who need one place for notes, evidence, AI runs, assets, and task graphs. Price in USD. Avoid Korea-only positioning.",tags:["Context"],x:-270,y:90,width:320,height:180},{id:"node-pricing",kind:"memo",title:"Pricing memory",body:"Free local tools -> MindCanvas Pro $12/mo. The paid step appears after the work becomes worth keeping.",tags:["Pricing"],x:585,y:110,width:300,height:158},{id:"node-output",kind:"code",title:"Reusable output",body:"Ship React canvas first. Keep LocalBridge and cloud hooks adapter-based so the UI does not wait on Blazor or C# services.",tags:["React","Runtime"],x:190,y:455,width:370,height:166}],edges:[{id:"edge-context-task",from:"node-context",to:"node-agent-command",kind:"context"},{id:"edge-task-output",from:"node-agent-command",to:"node-output",kind:"result"}]},u="mindexec-react-board-v1",s="mindexec-react-current-board-v2",p="mindexec-react-board-index-v2",M="mindexec-react-board-v2:";function i(e){return`${M}${e}`}function l(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function g(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.id=="string"&&Array.isArray(t.nodes)&&Array.isArray(t.edges)&&t.settings)}function v(e){var t,r;return{id:e.id,name:e.name||"Untitled",updatedAt:e.updatedAt||new Date().toISOString(),nodeCount:e.nodes.length,edgeCount:e.edges.length,sourceKind:(t=e.source)==null?void 0:t.kind,sourceBoardId:(r=e.source)==null?void 0:r.boardId}}function c(){const e=l(localStorage.getItem(p));return Array.isArray(e)?y(e.filter(t=>t&&typeof t.id=="string").sort(m)):[]}function S(e){const t=y(e);localStorage.setItem(p,JSON.stringify(t)),_(t.map(r=>({BoardId:r.id,Title:r.name||"Untitled"})))}function h(e){const t=c(),r=t.find(d=>d.id===e.id),a=[{...v(e),order:(r==null?void 0:r.order)??t.length},...t.filter(d=>d.id!==e.id)].sort(m);S(a)}function I(e,t){return typeof e.order=="number"&&Number.isFinite(e.order)?e.order:t}function m(e,t){const r=I(e,Number.MAX_SAFE_INTEGER)-I(t,Number.MAX_SAFE_INTEGER);return r!==0?r:String(t.updatedAt||"").localeCompare(String(e.updatedAt||""))}function y(e){const t=new Set;return e.filter(r=>!(r!=null&&r.id)||t.has(r.id)?!1:(t.add(r.id),!0)).sort(m).map((r,o)=>({...r,order:o}))}function E(e){localStorage.setItem(i(e.id),JSON.stringify(e)),h(e),localStorage.setItem(s,e.id),f(e.id),localStorage.setItem(u,JSON.stringify(e))}function A(){const e=l(localStorage.getItem(u));return g(e)?(E(e),e):null}function N(e){try{const t=localStorage.getItem(s)||T();if(t){const o=l(localStorage.getItem(i(t)));if(g(o))return localStorage.setItem(s,o.id),f(o.id),n.emit("board.restore",{source:"localStorage",boardId:o.id,nodes:o.nodes.length,edges:o.edges.length}),o}const r=A();return r?(n.emit("board.restore",{source:"legacyLocalStorage",boardId:r.id,nodes:r.nodes.length,edges:r.edges.length}),r):(n.emit("board.restore",{source:"fixture"}),e)}catch(t){return n.emit("board.restore",{source:"fixture",error:String(t)}),e}}function P(e){const t={...e,updatedAt:new Date().toISOString()};try{return E(t),n.emit("board.persist",{boardId:e.id,nodes:e.nodes.length,edges:e.edges.length}),!0}catch(r){return n.emit("board.persist.failed",{boardId:e.id,message:r instanceof Error?r.message:String(r)}),!1}}function F(){try{const e=c();return e.length>0?e:(A(),c())}catch{return[]}}function U(e){try{const t=l(localStorage.getItem(i(e)));return g(t)?(localStorage.setItem(s,t.id),f(t.id),n.emit("board.restore",{source:"localStorage",boardId:t.id,nodes:t.nodes.length,edges:t.edges.length}),t):null}catch(t){return n.emit("board.restore",{source:"localStorage",boardId:e,error:String(t)}),null}}function K(e,t){const r=t.trim().slice(0,90)||"Untitled Workspace";try{const o=l(localStorage.getItem(i(e)));if(!g(o))return!1;const a={...o,name:r,updatedAt:new Date().toISOString()};return localStorage.setItem(i(e),JSON.stringify(a)),h(a),localStorage.getItem(s)===e&&localStorage.setItem(u,JSON.stringify(a)),n.emit("board.rename",{boardId:e,source:"stored"}),!0}catch(o){return n.emit("board.rename.failed",{boardId:e,message:o instanceof Error?o.message:String(o)}),!1}}function G(e){try{const t=c(),r=new Map(e.map((a,d)=>[a,d])),o=t.map((a,d)=>({...a,order:r.has(a.id)?r.get(a.id):e.length+d})).sort(m).map((a,d)=>({...a,order:d}));return S(o),n.emit("board.tabs.reorder",{orderedIds:o.map(a=>a.id)}),o}catch(t){return n.emit("board.tabs.reorder.failed",{message:t instanceof Error?t.message:String(t)}),c()}}function J(e){try{localStorage.removeItem(i(e)),S(c().filter(t=>t.id!==e)),localStorage.getItem(s)===e&&localStorage.removeItem(s),n.emit("board.local.delete",{boardId:e})}catch(t){n.emit("board.local.delete.failed",{boardId:e,message:t instanceof Error?t.message:String(t)})}}function X(){const e=c().map(t=>t.id);for(const t of e)localStorage.removeItem(i(t));localStorage.removeItem(p),localStorage.removeItem(s),localStorage.removeItem(u),O()}export{F as a,U as b,K as c,J as d,X as e,L as i,N as l,G as r,P as s};