@mindexec/cli 0.2.381 → 0.2.382
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/wwwroot/assets/{AdminDashboardPage-B4MSG01F.js → AdminDashboardPage-FNblYU8t.js} +1 -1
- package/wwwroot/assets/{AppSidebar-DLLJHBdZ.js → AppSidebar-BvftUzzb.js} +2 -2
- package/wwwroot/assets/{AuthPages-5GKA3wfI.js → AuthPages-D8C-Ozrp.js} +1 -1
- package/wwwroot/assets/{CodePage-CtcukAw7.js → CodePage-BGATDRar.js} +1 -1
- package/wwwroot/assets/{CompanyCorePage-CVw3X796.js → CompanyCorePage-Di4pU7hi.js} +1 -1
- package/wwwroot/assets/{ExecutionModePage-BxZvRmyD.js → ExecutionModePage-DUD0ObAq.js} +1 -1
- package/wwwroot/assets/{MindCanvas-D2KUYkht.js → MindCanvas-Bm3Wtjb6.js} +1 -1
- package/wwwroot/assets/{PlanMasterPage-juSUgUYZ.js → PlanMasterPage-FPAEsd3D.js} +1 -1
- package/wwwroot/assets/{PricingPage-CRYu70dw.js → PricingPage-GyyNbudR.js} +1 -1
- package/wwwroot/assets/{ToolPages-n6d8tLbT.js → ToolPages-Zm_oC47S.js} +1 -1
- package/wwwroot/assets/{YouTubeSearchPage-52qOcKbo.js → YouTubeSearchPage-GghzHObU.js} +1 -1
- package/wwwroot/assets/{canvas-runtime-D3amtMwe.js → canvas-runtime-CF8ukxQK.js} +3 -3
- package/wwwroot/assets/{index-DlyqQyXw.js → index-Dp7yFpgv.js} +2 -2
- package/wwwroot/assets/{storage-RP5Dyxmq.js → storage-CcZMLcgs.js} +1 -1
- package/wwwroot/assets/{supabaseAuthAdapter-CuJuASQT.js → supabaseAuthAdapter-CjOxTXgI.js} +1 -1
- package/wwwroot/index.html +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as c,j as t}from"./vendor-react-BXzpOyCS.js";import{g as Ce,y as je,A as Me,aM as Qe,aN as ze,aO as Ge,aP as _e}from"./canvas-runtime-D3amtMwe.js";import{R as g}from"./app-runtime-xD2Z3NdN.js";import{l as Ve,s as Xe}from"./executionModeSettings-NJqurj-o.js";import{an as Ye,a3 as Ze,R as et,b7 as tt,b5 as nt}from"./vendor-icons-DE3gIReG.js";import"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const Ee=["Concept.KernelHelp","Concept.Hash64","Concept.DefineComposite","Concept.Embed","Concept.Execute"],ot=0x0000000080000000n,F=11400714785074694791n,Z=14029467366897019727n,ve=1609587929392839161n,Ie=9650029242287828579n,we=2870177450012600261n;function m(e){return BigInt.asUintN(64,e)}function q(e,s){const o=BigInt(s);return m(m(e)<<o|m(e)>>64n-o)}function Y(e,s){let o=0n;for(let a=0;a<8;a+=1)o|=BigInt(e[s+a])<<BigInt(a*8);return m(o)}function st(e,s){return(e[s]|e[s+1]<<8|e[s+2]<<16|e[s+3]<<24)>>>0}function Q(e,s){let o=m(e+m(s*Z));return o=q(o,31),m(o*F)}function oe(e,s){let o=m(e^Q(0n,s));return o=m(o*F+Ie),o}function k(e){const s=e.trim();if(!s)throw new Error("signature is empty");const o=new TextEncoder().encode(s),a=o.length;let i=0,r;if(a>=32){let d=m(F+Z),w=m(Z),y=0n,N=m(-F);const u=a-32;for(;i<=u;)d=Q(d,Y(o,i)),i+=8,w=Q(w,Y(o,i)),i+=8,y=Q(y,Y(o,i)),i+=8,N=Q(N,Y(o,i)),i+=8;r=m(q(d,1)+q(w,7)+q(y,12)+q(N,18)),r=oe(r,d),r=oe(r,w),r=oe(r,y),r=oe(r,N)}else r=m(we);for(r=m(r+BigInt(a));i<=a-8;){const d=Q(0n,Y(o,i));r=m(r^d),r=m(q(r,27)*F+Ie),i+=8}for(i<=a-4&&(r=m(r^BigInt(st(o,i))*F),r=m(q(r,23)*Z+ve),i+=4);i<a;)r=m(r^BigInt(o[i])*we),r=m(q(r,11)*F),i+=1;return r=m(r^r>>33n),r=m(r*Z),r=m(r^r>>29n),r=m(r*ve),r=m(r^r>>32n),`0x${r.toString(16).padStart(16,"0")}`}const le=[{category:"Math.Double",signature:"MindExecution.Kernel.Add(System.Double,System.Double)",summary:"a+b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Sub(System.Double,System.Double)",summary:"a-b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Mul(System.Double,System.Double)",summary:"a*b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Div(System.Double,System.Double)",summary:"a/b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Min(System.Double,System.Double)",summary:"min(a,b)",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Max(System.Double,System.Double)",summary:"max(a,b)",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Round(System.Double)",summary:"round(x)",supported:!0},{category:"Math.Int64",signature:"MindExecution.Kernel.Add(System.Int64,System.Int64)",summary:"a+b",supported:!0},{category:"Math.Int64",signature:"MindExecution.Kernel.Sub(System.Int64,System.Int64)",summary:"a-b",supported:!0},{category:"Math.Int64",signature:"MindExecution.Kernel.Mul(System.Int64,System.Int64)",summary:"a*b",supported:!0},{category:"Compare.Double",signature:"MindExecution.Kernel.Gt(System.Double,System.Double)",summary:"a>b",supported:!0},{category:"Compare.Double",signature:"MindExecution.Kernel.Eq(System.Double,System.Double)",summary:"a==b",supported:!0},{category:"Logic",signature:"MindExecution.Kernel.IfElse(System.Boolean,System.Object,System.Object)",summary:"cond ? a : b",supported:!0},{category:"String",signature:"MindExecution.Kernel.Concat(System.String,System.String)",summary:"a+b",supported:!0},{category:"String",signature:"MindExecution.Kernel.Length(System.String)",summary:"len(s)",supported:!0},{category:"String",signature:"MindExecution.Kernel.ToString(System.Object)",summary:"x?.ToString()",supported:!0},{category:"Convert",signature:"MindExecution.Kernel.ToDouble(System.Object)",summary:"Convert.ToDouble",supported:!0},{category:"Convert",signature:"MindExecution.Kernel.ToInt64(System.Object)",summary:"Convert.ToInt64",supported:!0},{category:"Json",signature:"MindExecution.Kernel.Json.Parse(System.String)",summary:"parse JSON",supported:!0},{category:"Json",signature:"MindExecution.Kernel.Json.Stringify(System.Object)",summary:"serialize JSON",supported:!0},{category:"System",signature:"MindExecution.Kernel.System.GetManifest()",summary:"local manifest subset",supported:!0},{category:"System",signature:"MindExecution.Kernel.System.SignatureToId(System.String)",summary:"signature -> local 0x hash",supported:!0},{category:"Debug",signature:"MindExecution.Kernel.Print(System.Object)",summary:"ToString",supported:!0},{category:"Debug",signature:"MindExecution.Kernel.TypeOf(System.Object)",summary:"JavaScript type name",supported:!0},{category:"Time",signature:"MindExecution.Kernel.UtcNow()",summary:"UTC ISO timestamp",supported:!0},{category:"Hash",signature:"MindExecution.Kernel.Hash.Sha256(System.String)",summary:"adapter-gated in React shell",supported:!1}],Ke=new Map(le.map(e=>[k(e.signature),e]));function x(e){const s=typeof e=="number"?e:Number(e);if(!Number.isFinite(s))throw new Error(`Expected numeric value, got ${A(e)}.`);return s}function J(e){return Math.trunc(x(e))}function O(e,s){if(typeof e=="number"&&Number.isInteger(e)&&e>=0)return`0x${e.toString(16).padStart(16,"0")}`;if(typeof e!="string")throw new Error(`${s} must be a hex slot string or integer.`);const o=e.trim();if(/^0x[0-9a-f]{1,16}$/i.test(o))return`0x${o.slice(2).toLowerCase().padStart(16,"0")}`;if(/^\d+$/.test(o))return`0x${Number(o).toString(16).padStart(16,"0")}`;throw new Error(`${s} must be 0x[0-9a-f]{16}, short hex, or integer.`)}function rt(e){return`0x${(ot+BigInt(e)).toString(16).padStart(16,"0")}`}function Oe(e){const s=JSON.parse(e),o=Array.isArray(s.literals)?s.literals:[],a=Array.isArray(s.instructions)?s.instructions:[];if(a.length===0)throw new Error("IR must include an instructions array.");return{literals:o,instructions:a}}function $e(e){var o;if(typeof e=="string"&&e.trim().startsWith("$")){const a=e.trim().slice(1).trim();if(!a)throw new Error("target signature cannot be empty.");return{id:k(a),signature:a}}const s=O(e,"target");return{id:s,signature:(o=Ke.get(s))==null?void 0:o.signature}}function A(e){if(e===void 0)return"<unset>";if(e===null)return"<null>";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function it(e){if(!e||typeof e!="object")throw new Error("Literal entries must be objects.");const s=e,o=O(s.id??s.slot,"literal.id"),a=String(s.type??"json").toLowerCase(),i=s.value;return a==="null"?{slot:o,value:null}:a==="bool"?{slot:o,value:!!i}:a==="int"?{slot:o,value:J(i)}:a==="double"?{slot:o,value:x(i)}:a==="string"?{slot:o,value:String(i??"")}:{slot:o,value:i}}const at={"MindExecution.Kernel.Add(System.Double,System.Double)":e=>x(e[0])+x(e[1]),"MindExecution.Kernel.Sub(System.Double,System.Double)":e=>x(e[0])-x(e[1]),"MindExecution.Kernel.Mul(System.Double,System.Double)":e=>x(e[0])*x(e[1]),"MindExecution.Kernel.Div(System.Double,System.Double)":e=>x(e[1])===0?Number.NaN:x(e[0])/x(e[1]),"MindExecution.Kernel.Min(System.Double,System.Double)":e=>Math.min(x(e[0]),x(e[1])),"MindExecution.Kernel.Max(System.Double,System.Double)":e=>Math.max(x(e[0]),x(e[1])),"MindExecution.Kernel.Round(System.Double)":e=>Math.round(x(e[0])),"MindExecution.Kernel.Add(System.Int64,System.Int64)":e=>J(e[0])+J(e[1]),"MindExecution.Kernel.Sub(System.Int64,System.Int64)":e=>J(e[0])-J(e[1]),"MindExecution.Kernel.Mul(System.Int64,System.Int64)":e=>J(e[0])*J(e[1]),"MindExecution.Kernel.Gt(System.Double,System.Double)":e=>x(e[0])>x(e[1]),"MindExecution.Kernel.Eq(System.Double,System.Double)":e=>x(e[0])===x(e[1]),"MindExecution.Kernel.IfElse(System.Boolean,System.Object,System.Object)":e=>e[0]?e[1]:e[2],"MindExecution.Kernel.Concat(System.String,System.String)":e=>`${e[0]??""}${e[1]??""}`,"MindExecution.Kernel.Length(System.String)":e=>String(e[0]??"").length,"MindExecution.Kernel.ToString(System.Object)":e=>e[0]==null?"":String(e[0]),"MindExecution.Kernel.ToDouble(System.Object)":e=>x(e[0]),"MindExecution.Kernel.ToInt64(System.Object)":e=>J(e[0]),"MindExecution.Kernel.Json.Parse(System.String)":e=>JSON.parse(String(e[0]??"null")),"MindExecution.Kernel.Json.Stringify(System.Object)":e=>JSON.stringify(e[0]),"MindExecution.Kernel.System.GetManifest()":()=>le.map(e=>({...e,id:k(e.signature)})),"MindExecution.Kernel.System.SignatureToId(System.String)":e=>k(String(e[0]??"")),"MindExecution.Kernel.Print(System.Object)":e=>A(e[0]),"MindExecution.Kernel.TypeOf(System.Object)":e=>e[0]===null?"null":Array.isArray(e[0])?"array":typeof e[0],"MindExecution.Kernel.UtcNow()":()=>new Date().toISOString()};function Le(e){const s=e.trim();if(!s)return[];if(s.startsWith("[")){const o=JSON.parse(s);if(!Array.isArray(o))throw new Error("Watch JSON must be an array of slots.");return o.map(a=>O(a,"watch"))}return s.split(/[\s,]+/).filter(Boolean).map(o=>O(o,"watch"))}function Re(e,s,o,a,i,r=0){var N;if(r>8)throw new Error("FLOW recursion limit exceeded.");const d=new Map;for(const[u,l]of a.entries())d.set(u,l);for(const u of e){const{slot:l,value:$}=it(u);d.set(l,$),i.push(`${" ".repeat(r)}literal ${l} = ${A($)}`)}let w,y=!1;for(const[u,l]of s.entries()){const $=String(l.op??"").trim().toUpperCase();if($==="SET"){const f=O(l.dstSlot,`instructions[${u}].dstSlot`),C=O(l.srcSlot,`instructions[${u}].srcSlot`),L=d.get(C);d.set(f,L),i.push(`${" ".repeat(r)}${u}: SET ${f} = ${A(L)} from ${C}`);continue}if($==="CALL"){const f=$e(l.target??l.targetId),C=f.signature??((N=Ke.get(f.id))==null?void 0:N.signature),L=C?at[C]:void 0;if(!C||!L)throw new Error(`CALL target ${f.id} is not supported by the React local kernel.`);const U=(Array.isArray(l.args)?l.args.map(P=>O(P,`instructions[${u}].args`)):[]).map(P=>d.get(P)),I=L(U),R=l.dstSlot==null?null:O(l.dstSlot,`instructions[${u}].dstSlot`);R&&d.set(R,I),i.push(`${" ".repeat(r)}${u}: CALL ${C} -> ${R??"<no dst>"} = ${A(I)}`);continue}if($==="FLOW"){const f=$e(l.target??l.targetId),C=o.get(f.id);if(!C)throw new Error(`FLOW target ${f.id} is not registered in the React local composite registry.`);const L=Array.isArray(l.args)?l.args.map(R=>O(R,`instructions[${u}].args`)):[],j=new Map;for(const[R,P]of L.entries())j.set(rt(R),d.get(P));i.push(`${" ".repeat(r)}${u}: FLOW ${C.signature} (${f.id}) args=${L.length}`);const U=Re(C.literals,C.instructions,o,j,i,r+1),I=l.dstSlot==null?null:O(l.dstSlot,`instructions[${u}].dstSlot`);I&&U.didReturn&&d.set(I,U.returned),i.push(`${" ".repeat(r)}${u}: FLOW return -> ${I??"<no dst>"} = ${A(U.returned)}`);continue}if($==="RETURN"||$==="RET"){const f=l.srcSlot==null?null:O(l.srcSlot,`instructions[${u}].srcSlot`);w=f?d.get(f):void 0,y=!0,i.push(`${" ".repeat(r)}${u}: RETURN ${f??"<void>"} = ${A(w)}`);break}throw new Error(`Unknown op at instructions[${u}]: ${$||"<empty>"}`)}return{memory:d,returned:w,didReturn:y}}function ct(e,s,o=new Map){const{literals:a,instructions:i}=Oe(e),r=[],{memory:d,returned:w}=Re(a,i,o,new Map,r),y=Le(s),u=(y.length>0?y:Array.from(d.keys()).sort().slice(0,64)).map(l=>`- ${l} = ${A(d.get(l))}`);return[`OK: executed locally (atoms=${i.length}, literals=${a.length})`,`return: ${A(w)}`,"","trace:",...r,"",y.length>0?"watch:":"root user-space slots:",...u.length>0?u:["(none)"],"","adapter: local-react-shell"].join(`
|
|
1
|
+
import{r as c,j as t}from"./vendor-react-BXzpOyCS.js";import{g as Ce,y as je,A as Me,aM as Qe,aN as ze,aO as Ge,aP as _e}from"./canvas-runtime-CF8ukxQK.js";import{R as g}from"./app-runtime-xD2Z3NdN.js";import{l as Ve,s as Xe}from"./executionModeSettings-NJqurj-o.js";import{an as Ye,a3 as Ze,R as et,b7 as tt,b5 as nt}from"./vendor-icons-DE3gIReG.js";import"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const Ee=["Concept.KernelHelp","Concept.Hash64","Concept.DefineComposite","Concept.Embed","Concept.Execute"],ot=0x0000000080000000n,F=11400714785074694791n,Z=14029467366897019727n,ve=1609587929392839161n,Ie=9650029242287828579n,we=2870177450012600261n;function m(e){return BigInt.asUintN(64,e)}function q(e,s){const o=BigInt(s);return m(m(e)<<o|m(e)>>64n-o)}function Y(e,s){let o=0n;for(let a=0;a<8;a+=1)o|=BigInt(e[s+a])<<BigInt(a*8);return m(o)}function st(e,s){return(e[s]|e[s+1]<<8|e[s+2]<<16|e[s+3]<<24)>>>0}function Q(e,s){let o=m(e+m(s*Z));return o=q(o,31),m(o*F)}function oe(e,s){let o=m(e^Q(0n,s));return o=m(o*F+Ie),o}function k(e){const s=e.trim();if(!s)throw new Error("signature is empty");const o=new TextEncoder().encode(s),a=o.length;let i=0,r;if(a>=32){let d=m(F+Z),w=m(Z),y=0n,N=m(-F);const u=a-32;for(;i<=u;)d=Q(d,Y(o,i)),i+=8,w=Q(w,Y(o,i)),i+=8,y=Q(y,Y(o,i)),i+=8,N=Q(N,Y(o,i)),i+=8;r=m(q(d,1)+q(w,7)+q(y,12)+q(N,18)),r=oe(r,d),r=oe(r,w),r=oe(r,y),r=oe(r,N)}else r=m(we);for(r=m(r+BigInt(a));i<=a-8;){const d=Q(0n,Y(o,i));r=m(r^d),r=m(q(r,27)*F+Ie),i+=8}for(i<=a-4&&(r=m(r^BigInt(st(o,i))*F),r=m(q(r,23)*Z+ve),i+=4);i<a;)r=m(r^BigInt(o[i])*we),r=m(q(r,11)*F),i+=1;return r=m(r^r>>33n),r=m(r*Z),r=m(r^r>>29n),r=m(r*ve),r=m(r^r>>32n),`0x${r.toString(16).padStart(16,"0")}`}const le=[{category:"Math.Double",signature:"MindExecution.Kernel.Add(System.Double,System.Double)",summary:"a+b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Sub(System.Double,System.Double)",summary:"a-b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Mul(System.Double,System.Double)",summary:"a*b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Div(System.Double,System.Double)",summary:"a/b",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Min(System.Double,System.Double)",summary:"min(a,b)",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Max(System.Double,System.Double)",summary:"max(a,b)",supported:!0},{category:"Math.Double",signature:"MindExecution.Kernel.Round(System.Double)",summary:"round(x)",supported:!0},{category:"Math.Int64",signature:"MindExecution.Kernel.Add(System.Int64,System.Int64)",summary:"a+b",supported:!0},{category:"Math.Int64",signature:"MindExecution.Kernel.Sub(System.Int64,System.Int64)",summary:"a-b",supported:!0},{category:"Math.Int64",signature:"MindExecution.Kernel.Mul(System.Int64,System.Int64)",summary:"a*b",supported:!0},{category:"Compare.Double",signature:"MindExecution.Kernel.Gt(System.Double,System.Double)",summary:"a>b",supported:!0},{category:"Compare.Double",signature:"MindExecution.Kernel.Eq(System.Double,System.Double)",summary:"a==b",supported:!0},{category:"Logic",signature:"MindExecution.Kernel.IfElse(System.Boolean,System.Object,System.Object)",summary:"cond ? a : b",supported:!0},{category:"String",signature:"MindExecution.Kernel.Concat(System.String,System.String)",summary:"a+b",supported:!0},{category:"String",signature:"MindExecution.Kernel.Length(System.String)",summary:"len(s)",supported:!0},{category:"String",signature:"MindExecution.Kernel.ToString(System.Object)",summary:"x?.ToString()",supported:!0},{category:"Convert",signature:"MindExecution.Kernel.ToDouble(System.Object)",summary:"Convert.ToDouble",supported:!0},{category:"Convert",signature:"MindExecution.Kernel.ToInt64(System.Object)",summary:"Convert.ToInt64",supported:!0},{category:"Json",signature:"MindExecution.Kernel.Json.Parse(System.String)",summary:"parse JSON",supported:!0},{category:"Json",signature:"MindExecution.Kernel.Json.Stringify(System.Object)",summary:"serialize JSON",supported:!0},{category:"System",signature:"MindExecution.Kernel.System.GetManifest()",summary:"local manifest subset",supported:!0},{category:"System",signature:"MindExecution.Kernel.System.SignatureToId(System.String)",summary:"signature -> local 0x hash",supported:!0},{category:"Debug",signature:"MindExecution.Kernel.Print(System.Object)",summary:"ToString",supported:!0},{category:"Debug",signature:"MindExecution.Kernel.TypeOf(System.Object)",summary:"JavaScript type name",supported:!0},{category:"Time",signature:"MindExecution.Kernel.UtcNow()",summary:"UTC ISO timestamp",supported:!0},{category:"Hash",signature:"MindExecution.Kernel.Hash.Sha256(System.String)",summary:"adapter-gated in React shell",supported:!1}],Ke=new Map(le.map(e=>[k(e.signature),e]));function x(e){const s=typeof e=="number"?e:Number(e);if(!Number.isFinite(s))throw new Error(`Expected numeric value, got ${A(e)}.`);return s}function J(e){return Math.trunc(x(e))}function O(e,s){if(typeof e=="number"&&Number.isInteger(e)&&e>=0)return`0x${e.toString(16).padStart(16,"0")}`;if(typeof e!="string")throw new Error(`${s} must be a hex slot string or integer.`);const o=e.trim();if(/^0x[0-9a-f]{1,16}$/i.test(o))return`0x${o.slice(2).toLowerCase().padStart(16,"0")}`;if(/^\d+$/.test(o))return`0x${Number(o).toString(16).padStart(16,"0")}`;throw new Error(`${s} must be 0x[0-9a-f]{16}, short hex, or integer.`)}function rt(e){return`0x${(ot+BigInt(e)).toString(16).padStart(16,"0")}`}function Oe(e){const s=JSON.parse(e),o=Array.isArray(s.literals)?s.literals:[],a=Array.isArray(s.instructions)?s.instructions:[];if(a.length===0)throw new Error("IR must include an instructions array.");return{literals:o,instructions:a}}function $e(e){var o;if(typeof e=="string"&&e.trim().startsWith("$")){const a=e.trim().slice(1).trim();if(!a)throw new Error("target signature cannot be empty.");return{id:k(a),signature:a}}const s=O(e,"target");return{id:s,signature:(o=Ke.get(s))==null?void 0:o.signature}}function A(e){if(e===void 0)return"<unset>";if(e===null)return"<null>";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function it(e){if(!e||typeof e!="object")throw new Error("Literal entries must be objects.");const s=e,o=O(s.id??s.slot,"literal.id"),a=String(s.type??"json").toLowerCase(),i=s.value;return a==="null"?{slot:o,value:null}:a==="bool"?{slot:o,value:!!i}:a==="int"?{slot:o,value:J(i)}:a==="double"?{slot:o,value:x(i)}:a==="string"?{slot:o,value:String(i??"")}:{slot:o,value:i}}const at={"MindExecution.Kernel.Add(System.Double,System.Double)":e=>x(e[0])+x(e[1]),"MindExecution.Kernel.Sub(System.Double,System.Double)":e=>x(e[0])-x(e[1]),"MindExecution.Kernel.Mul(System.Double,System.Double)":e=>x(e[0])*x(e[1]),"MindExecution.Kernel.Div(System.Double,System.Double)":e=>x(e[1])===0?Number.NaN:x(e[0])/x(e[1]),"MindExecution.Kernel.Min(System.Double,System.Double)":e=>Math.min(x(e[0]),x(e[1])),"MindExecution.Kernel.Max(System.Double,System.Double)":e=>Math.max(x(e[0]),x(e[1])),"MindExecution.Kernel.Round(System.Double)":e=>Math.round(x(e[0])),"MindExecution.Kernel.Add(System.Int64,System.Int64)":e=>J(e[0])+J(e[1]),"MindExecution.Kernel.Sub(System.Int64,System.Int64)":e=>J(e[0])-J(e[1]),"MindExecution.Kernel.Mul(System.Int64,System.Int64)":e=>J(e[0])*J(e[1]),"MindExecution.Kernel.Gt(System.Double,System.Double)":e=>x(e[0])>x(e[1]),"MindExecution.Kernel.Eq(System.Double,System.Double)":e=>x(e[0])===x(e[1]),"MindExecution.Kernel.IfElse(System.Boolean,System.Object,System.Object)":e=>e[0]?e[1]:e[2],"MindExecution.Kernel.Concat(System.String,System.String)":e=>`${e[0]??""}${e[1]??""}`,"MindExecution.Kernel.Length(System.String)":e=>String(e[0]??"").length,"MindExecution.Kernel.ToString(System.Object)":e=>e[0]==null?"":String(e[0]),"MindExecution.Kernel.ToDouble(System.Object)":e=>x(e[0]),"MindExecution.Kernel.ToInt64(System.Object)":e=>J(e[0]),"MindExecution.Kernel.Json.Parse(System.String)":e=>JSON.parse(String(e[0]??"null")),"MindExecution.Kernel.Json.Stringify(System.Object)":e=>JSON.stringify(e[0]),"MindExecution.Kernel.System.GetManifest()":()=>le.map(e=>({...e,id:k(e.signature)})),"MindExecution.Kernel.System.SignatureToId(System.String)":e=>k(String(e[0]??"")),"MindExecution.Kernel.Print(System.Object)":e=>A(e[0]),"MindExecution.Kernel.TypeOf(System.Object)":e=>e[0]===null?"null":Array.isArray(e[0])?"array":typeof e[0],"MindExecution.Kernel.UtcNow()":()=>new Date().toISOString()};function Le(e){const s=e.trim();if(!s)return[];if(s.startsWith("[")){const o=JSON.parse(s);if(!Array.isArray(o))throw new Error("Watch JSON must be an array of slots.");return o.map(a=>O(a,"watch"))}return s.split(/[\s,]+/).filter(Boolean).map(o=>O(o,"watch"))}function Re(e,s,o,a,i,r=0){var N;if(r>8)throw new Error("FLOW recursion limit exceeded.");const d=new Map;for(const[u,l]of a.entries())d.set(u,l);for(const u of e){const{slot:l,value:$}=it(u);d.set(l,$),i.push(`${" ".repeat(r)}literal ${l} = ${A($)}`)}let w,y=!1;for(const[u,l]of s.entries()){const $=String(l.op??"").trim().toUpperCase();if($==="SET"){const f=O(l.dstSlot,`instructions[${u}].dstSlot`),C=O(l.srcSlot,`instructions[${u}].srcSlot`),L=d.get(C);d.set(f,L),i.push(`${" ".repeat(r)}${u}: SET ${f} = ${A(L)} from ${C}`);continue}if($==="CALL"){const f=$e(l.target??l.targetId),C=f.signature??((N=Ke.get(f.id))==null?void 0:N.signature),L=C?at[C]:void 0;if(!C||!L)throw new Error(`CALL target ${f.id} is not supported by the React local kernel.`);const U=(Array.isArray(l.args)?l.args.map(P=>O(P,`instructions[${u}].args`)):[]).map(P=>d.get(P)),I=L(U),R=l.dstSlot==null?null:O(l.dstSlot,`instructions[${u}].dstSlot`);R&&d.set(R,I),i.push(`${" ".repeat(r)}${u}: CALL ${C} -> ${R??"<no dst>"} = ${A(I)}`);continue}if($==="FLOW"){const f=$e(l.target??l.targetId),C=o.get(f.id);if(!C)throw new Error(`FLOW target ${f.id} is not registered in the React local composite registry.`);const L=Array.isArray(l.args)?l.args.map(R=>O(R,`instructions[${u}].args`)):[],j=new Map;for(const[R,P]of L.entries())j.set(rt(R),d.get(P));i.push(`${" ".repeat(r)}${u}: FLOW ${C.signature} (${f.id}) args=${L.length}`);const U=Re(C.literals,C.instructions,o,j,i,r+1),I=l.dstSlot==null?null:O(l.dstSlot,`instructions[${u}].dstSlot`);I&&U.didReturn&&d.set(I,U.returned),i.push(`${" ".repeat(r)}${u}: FLOW return -> ${I??"<no dst>"} = ${A(U.returned)}`);continue}if($==="RETURN"||$==="RET"){const f=l.srcSlot==null?null:O(l.srcSlot,`instructions[${u}].srcSlot`);w=f?d.get(f):void 0,y=!0,i.push(`${" ".repeat(r)}${u}: RETURN ${f??"<void>"} = ${A(w)}`);break}throw new Error(`Unknown op at instructions[${u}]: ${$||"<empty>"}`)}return{memory:d,returned:w,didReturn:y}}function ct(e,s,o=new Map){const{literals:a,instructions:i}=Oe(e),r=[],{memory:d,returned:w}=Re(a,i,o,new Map,r),y=Le(s),u=(y.length>0?y:Array.from(d.keys()).sort().slice(0,64)).map(l=>`- ${l} = ${A(d.get(l))}`);return[`OK: executed locally (atoms=${i.length}, literals=${a.length})`,`return: ${A(w)}`,"","trace:",...r,"",y.length>0?"watch:":"root user-space slots:",...u.length>0?u:["(none)"],"","adapter: local-react-shell"].join(`
|
|
2
2
|
`)}function lt(e,s,o=16){const a=`${e}
|
|
3
3
|
|
|
4
4
|
Description: ${s}`,i=Array.from({length:o},(d,w)=>{const y=BigInt(k(`${a}#${w}`)),N=Number(y&0xffffn)/32767.5-1;return Number(N.toFixed(6))}),r=a.trim().length===0?0:a.trim().split(/\s+/).length;return{input:a,vector:i,tokens:r}}const Ne=JSON.stringify({literals:[{id:"0x0000000000000000",type:"double",value:1},{id:"0x0000000000000001",type:"double",value:10}],instructions:[{op:"CALL",target:"$MindExecution.Kernel.Add(System.Double,System.Double)",args:["0x0000000000000000","0x0000000000000001"],dstSlot:"0x0000000000000002"},{op:"RETURN",srcSlot:"0x0000000000000002"}]},null,2),De=JSON.stringify({literals:[],instructions:[{op:"CALL",target:"$MindExecution.Kernel.Add(System.Double,System.Double)",args:["0x0000000080000000","0x0000000080000001"],dstSlot:"0x0000000000000000"},{op:"RETURN",srcSlot:"0x0000000000000000"}]},null,2);function dt(e,s){var a;const o=((a=e.latestRows)==null?void 0:a[0])||{};return{provider:e.provider||"LocalBridgeJsonConceptStore",adapterState:e.adapterState||"json-row-projection",nativeSqliteAdapterState:e.nativeSqliteAdapterState||"adapter-gated",paidEmbeddingAdapterState:e.paidEmbeddingAdapterState||"adapter-gated",originalTable:e.originalTable||"tbl_concepts",rowCount:Number(e.rowCount||0),indexPath:e.indexPath||"",latestRowId:(s==null?void 0:s.id)||o.id||"",latestRowSqlKey:(s==null?void 0:s.sqlKey)||o.sqlKey||"",latestRowSignature:(s==null?void 0:s.signature)||o.signature||"",sqliteReadyColumns:(e.sqliteReadyColumns||[]).slice(0,16)}}function ht(){const[e,s]=c.useState(Ne),[o,a]=c.useState(()=>Ve()),[i,r]=c.useState("MindExecution.Kernel.Add(System.Double,System.Double)"),[d,w]=c.useState("MindExecution.Dynamic.Sum(System.Double,System.Double)"),[y,N]=c.useState("Adds two double values through a browser-local FLOW composite."),[u,l]=c.useState(De),[$,f]=c.useState("MindExecution.Dynamic.Sum(System.Double,System.Double)"),[C,L]=c.useState("Adds two doubles through a Concept FLOW composite. Browser preview only."),[j,U]=c.useState([]),[I,R]=c.useState("0x0000000000000002"),[P,M]=c.useState(""),[z,de]=c.useState(!1),[H,se]=c.useState("idle"),[ue,pe]=c.useState(""),[Ae,me]=c.useState(""),[ke,ge]=c.useState(""),[h,xe]=c.useState(null),[p,Pe]=c.useState(null),[re,ie]=c.useState("idle"),[Se,he]=c.useState(""),G=c.useRef(0),_=c.useMemo(()=>le.map(n=>({...n,id:k(n.signature)})),[]),be=c.useMemo(()=>new Map(j.map(n=>[n.id,n])),[j]),T=o.executionMode,V=o.directInstructionQueueMode,ye=c.useCallback((n,S)=>{const v=Xe({...o,...n},S);a(v),g.emit("executionMode.settings.changed",{source:S,executionMode:v.executionMode,directInstructionQueueMode:v.directInstructionQueueMode})},[o]),Te=c.useCallback(()=>{de(!0),g.emit("executionMode.tool.run",{toolName:T==="PureLLM"?"PureLLM.AdapterGate":"Concept.Execute"}),g.emit("executionMode.run.local",{hasPrompt:!!e.trim(),mode:T,directInstructionQueueMode:V,adapterGated:T==="PureLLM"}),window.setTimeout(()=>{const n=e.trim();if(T==="PureLLM")M(["PureLLM mode selected.","","Live direct LLM execution is adapter-gated in this React shell.",`Queue mode: ${V}`,"","Use Concept mode for deterministic browser-local JSON IR testing until a verified Agent adapter is connected."].join(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Xm=Object.defineProperty;var qm=(e,t,n)=>t in e?Xm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Pl=(e,t,n)=>qm(e,typeof t!="symbol"?t+"":t,n);import{r as g,j as o,a as Jm}from"./vendor-react-BXzpOyCS.js";import{l as Zm,a as St,s as Xt,b as Qm,d as ep,r as tp,c as ap,e as np,i as El}from"./storage-RP5Dyxmq.js";import{r as pi,g as Ds,w as op,a as hr,d as _l,b as sp,t as gi,n as hi,c as Hr,e as rp,p as ic,v as ip,R as lp,f as dp,u as cp,h as up,i as Bl,s as at,j as io,l as fr,k as lo,m as ss,o as co,q as uo,x as rs,y as qt,z as Dl,A as Ua,B as mp,C as Ol,D as pp,E as gp,F as hp,G as fp,H as bp,I as yp,J as xp,K as Zt,L as lc,T as Cp,M as kp,N as $l,O as mo,P as dc,Q as Wr,S as Vr,U as cc,V as is,W as xs,X as xo,Y as Fl,Z as Y,_ as br,$ as Co,a0 as Sp,a1 as wp,a2 as Ul,a3 as zl,a4 as yr,a5 as vp,a6 as jp,a7 as Ip,a8 as Np,a9 as Ap,aa as Mp,ab as Tp,ac as Rp,ad as Lp,ae as Pp,af as Ep}from"./canvas-runtime-D3amtMwe.js";import{e as _p,d as Bp}from"./vendor-msgpack-BE8aAsr3.js";import{R as f}from"./app-runtime-xD2Z3NdN.js";import{g as xr,A as Hl,a as Cs}from"./index-DlyqQyXw.js";import{r as uc}from"./productionAdapterConfig-C5jfk6oG.js";import{getSupabaseBrowserClient as Os}from"./supabaseAuthAdapter-CuJuASQT.js";import{c as Dp,a as Op,r as Wl}from"./toolHandoff-D5e5f7t5.js";import{a as Vl,s as $p}from"./executionModeSettings-NJqurj-o.js";import{a as Yl,p as Fp}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";import{A as Up,D as zp,E as vn,w as jn,I as In,V as Nn,l as Ms,F as wt,J as Hp,N as Yr,O as Ts,Q as An,W as mc,Y as Wp,Z as pc,_ as Vp,i as wo,$ as gc,a0 as Yp,a1 as Gl,a2 as Gp,a3 as Ca,a4 as Kl,T as Rs,a5 as Xl,a6 as Io,a7 as Kp,R as Mn,a8 as ks,a9 as hc,aa as Gr,X as Et,o as fc,ab as Xp,ac as qp,f as Jp,ad as ql,ae as Zp,h as ko,x as Qp,af as eg,ag as tg,ah as Jl,ai as Zl,aj as Ql,g as ed,ak as ls,H as po,al as ds,s as Cr,am as td,an as Jt,c as ag,ao as ng,ap as kr,aq as ad,ar as og,as as cs,at as Sr,au as nd,av as od,aw as sd,ax as sg,ay as rg,az as ig,aA as lg,n as dg,aB as cg,aC as ug,aD as mg,aE as pg,aF as gg,aG as hg,aH as fg,aI as bg}from"./vendor-icons-DE3gIReG.js";const yg=1200,Ka="LocalBridgeOriginalNodeId";function vt(e){return typeof e=="object"&&e!==null}function ya(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function Z(e){return typeof e=="string"?e:""}function bc(){return typeof window<"u"?{width:window.innerWidth||1280,height:window.innerHeight||720}:{width:1280,height:720}}function Kr(e,t,n){const r=Number(e),d=Number(t),c=Number(n);if(!Number.isFinite(r)||!Number.isFinite(d)||!Number.isFinite(c)||c<=0)return null;const m=1400/c,y=bc();return{x:y.width/2-r*m,y:y.height/2-d*m,scale:m}}function xg(e){return vt(e)?Kr(e.x??e.X,e.y??e.Y,e.z??e.Z):null}function Cg(e){if(!vt(e))return null;const t=Number(e.x),n=Number(e.y),r=Number(e.scale);if(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return null;const d=bc();return{x:(d.width/2-t)/r,y:(d.height/2-n)/r,z:1400/r}}function kg(e){const t=String(e||"").trim();if(t)try{const n=JSON.parse(t);if(!vt(n))return;const r={};for(const[d,c]of Object.entries(n)){const m=xg(c);m&&(r[d]=m)}return Object.keys(r).length>0?r:void 0}catch{return}}function Sg(e){if(!e||Object.keys(e).length===0)return null;const t={};for(const[n,r]of Object.entries(e)){const d=Cg(r);d&&(t[n]=d)}return Object.keys(t).length>0?JSON.stringify(t):null}function Ls(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 $s(){return crypto.randomUUID()}function fi(e){return vt(e)?"ContentType"in e||"Prompt"in e||"Response"in e||"PositionX"in e||"PositionY"in e||"SourceFilePath"in e||"ImageStack"in e:!1}function rd(e){const t=Z(e).trim();if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Xr(e){if(Array.isArray(e))return e;if(!vt(e))return[];for(const t of["Nodes","nodes","Items","items","Content","content","Upserts","upserts"])if(t in e){const n=e[t];if(Array.isArray(n))return n;const r=rd(n);if(r)return Xr(r)}for(const t of["ContentJson","contentJson","content_json"])if(t in e){const n=rd(e[t]);if(n)return Xr(n)}return fi(e)?[e]:[]}function bi(e){return vt(e)?"BoardId"in e&&("Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e):!1}function yc(e){if(!vt(e))return 0;for(const t of["Deletes","deletes"]){const n=e[t];if(Array.isArray(n))return n.length}return 0}function Ps(e){return Xr(e).filter(fi)}function xc(e){return Ps(e).length}function wg(e,t){var c;const n=[...Ps(e)];if(!bi(t))return n;const r=new Set;for(const m of["Deletes","deletes"]){const y=t[m];if(Array.isArray(y))for(const p of y){const b=Z(p).trim();b&&r.add(b)}}if(r.size>0)for(let m=n.length-1;m>=0;m-=1){const y=Z((c=n[m])==null?void 0:c.Id).trim();y&&r.has(y)&&n.splice(m,1)}const d=new Map;n.forEach((m,y)=>{const p=Z(m.Id).trim();p&&d.set(p,y)});for(const m of Ps(t)){const y=Z(m.Id).trim(),p=y?d.get(y):void 0;if(p!==void 0){n[p]=m;continue}y&&d.set(y,n.length),n.push(m)}return n}function Cc(e){const t=Array.isArray(e)?e.filter(vt):[];return new Map(t.filter(n=>n.NodeId).map(n=>[String(n.NodeId),n]))}async function qr(e,t){for(const n of e)try{const r=await pi(n,t);return{payload:JSON.parse(r.content),path:n}}catch{}return null}async function vg(e,t){const n=`.mindexec/boards/${e}.msgpack`,r=`boards/${e}.msgpack`;for(const y of[n,r])try{const p=await sp(y,t);return{payload:Bp(p),format:y===n?"msgpack":"legacy-msgpack",path:y}}catch{}const d=`.mindexec/boards/${e}.json`,c=`boards/${e}.json`,m=await qr([d,c],t);if(m)return{payload:m.payload,format:m.path===d?"json":"legacy-json",path:m.path};throw new Error(`LocalBridge board file not found: ${n}, ${r}, ${d}, ${c}`)}function Jr(e){const t=Z(e.Id).trim()||Z(e.BoardId).trim();return t?{Id:t,Title:Z(e.Title)||null,Description:Z(e.Description)||null,ThumbnailUrl:Z(e.ThumbnailUrl)||null,CreatedAt:Z(e.CreatedAt)||null,UpdatedAt:Z(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:Z(e.CameraBookmarks)||null}:null}function id(e){return!vt(e)||fi(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 yi(e){if(Array.isArray(e))return e.filter(id).map(t=>Jr(t)).filter(t=>!!t);if(id(e)){const t=Jr(e);return t?[t]:[]}return[]}function jg(e){const t=e.toLowerCase();return Ig(t)?"remote-control":Ng(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 Ig(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 n=t.replace(/[^a-z0-9]+/g,"");return n.includes("remotecontrol")||n.includes("remotedevice")||n.includes("remotefleetdevice")}function Ng(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 n=t.replace(/[^a-z0-9]+/g,"");return n.includes("remotemonitor")||n.includes("remotehubmonitor")||n.includes("multidesktopmonitor")||n.includes("smartviewmonitor")}function Ag(e,t){const n=e.Metadata||{},r=n.ThumbnailUrl,d=n.OriginalUrl,c=n.OriginalPath;return gi(Z(r)||Z(d)||Z(c)||Z(e.Response),t)}function Mg(e,t,n){const r=e.ImageStack,d=Array.isArray(r==null?void 0:r.Variants)?r.Variants:[];if(d.length===0)return;const c=d.map((y,p)=>{const b=Z(y.AssetId).trim(),w=gi(b,n)||t;return w?{variantId:Z(y.VariantId)||`variant-${Z(e.Id)||p}`,imageUrl:w,assetId:b||void 0,caption:Z(y.Caption)||void 0,sourceNodeId:Z(e.Id)||void 0,createdAtUtc:Z(y.CreatedAtUtc)||void 0}:null}).filter(y=>!!y);if(c.length===0)return;const m=Z(r==null?void 0:r.ActiveVariantId);return{activeVariantId:c.some(y=>y.variantId===m)?m:c[0].variantId,variants:c,kind:Z(r==null?void 0:r.Kind)||"versions",title:Z(r==null?void 0:r.Title)||void 0,updatedAtUtc:Z(r==null?void 0:r.UpdatedAtUtc)||void 0}}function Tg(e,t){return!e||e.variants.length===0?t:(e.variants.find(r=>r.variantId===e.activeVariantId)??e.variants[0]).imageUrl||t}function Rg(e,t,n){var m,y,p,b,w,P;const r=(y=(m=e.imageStack)==null?void 0:m.variants)!=null&&y.length?e.imageStack.variants:e.imageUrl?[{variantId:`${e.id}:image`,imageUrl:e.imageUrl,assetId:No(e.imageUrl,t)||e.imageUrl,title:e.title,sourceNodeId:e.id,createdAtUtc:n}]:[];if(r.length===0)return null;const d=r.map(N=>({VariantId:N.variantId||$s(),AssetId:N.assetId||No(N.imageUrl,t)||N.imageUrl,CreatedAtUtc:N.createdAtUtc||n,Caption:N.caption||N.title||null}));return{ActiveVariantId:(p=e.imageStack)!=null&&p.activeVariantId&&d.some(N=>{var _;return N.VariantId===((_=e.imageStack)==null?void 0:_.activeVariantId)})?e.imageStack.activeVariantId:d[0].VariantId||"",Variants:d,Kind:((b=e.imageStack)==null?void 0:b.kind)||(d.length>1?"pile":"versions"),Title:((w=e.imageStack)==null?void 0:w.title)||e.title||null,UpdatedAtUtc:((P=e.imageStack)==null?void 0:P.updatedAtUtc)||n}}function Lg(e,t){const n=e.Metadata||{};return gi(Z(n.OriginalUrl)||Z(n.OriginalPath)||Z(n.SourceFilePath)||Z(e.SourceFilePath)||Z(e.Response),t)}function Pg(e){const t={};for(const[n,r]of Object.entries(e??{}))typeof r=="string"?t[n]=r:r!=null&&(t[n]=String(r));return t}function Eg(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 No(e,t){const n=String(e||"").trim();if(!n)return"";const r=t.replace(/\/+$/,"");return n.startsWith(`${r}/`)?n.slice(r.length+1):n.replace(/^\/+/,"")}function _g(e,t){const n=new Map;for(const r of e){const d=t.get(r.from),c=t.get(r.to);!d||!c||n.has(c)||n.set(c,d)}return n}function Bg(e){const t=new Set;return e.map(n=>{var p,b;const r=((p=n.metadata)==null?void 0:p[Ka])||"",d=Ls(r)?r:Ls(n.id)?n.id:"",c=!!(d&&t.has(d)),m=d&&!c?d:$s(),y=((b=n.metadata)==null?void 0:b[Ka])!==m;return t.add(m),{node:y?{...n,metadata:{...n.metadata??{},[Ka]:m}}:n,originalId:m,assignedNodeId:!d||c,metadataStamped:y,duplicateOriginalId:c}})}function Dg(e,t,n,r,d){var b,w,P;const c=Eg(e.kind),m=c==="image"||c==="mask"?No(e.imageUrl,d):"",y=["video","pdf","file","directory","embed"].includes(c)?No(e.assetUrl||e.sourceFilePath||e.body,d):"",p={...e.metadata??{},[Ka]:t,ReactNodeId:e.id,ReactKind:e.kind};if(e.kind==="remote-monitor"&&(p.RemoteHub??(p.RemoteHub="Gated"),p.RemoteRoute??(p.RemoteRoute="Gated"),p.RemoteConnected??(p.RemoteConnected="0"),p.RemoteTotal??(p.RemoteTotal="30"),p.RemotePage??(p.RemotePage="1/1"),p.AdapterState??(p.AdapterState="adapter-gated")),e.kind==="remote-control"&&(p.SemanticType??(p.SemanticType="RemoteFleetDevice"),p.RemoteFleetSchemaVersion??(p.RemoteFleetSchemaVersion="remote-fleet-device@1"),p.RemoteRoute??(p.RemoteRoute="Gated"),p.RemoteInput??(p.RemoteInput="Off"),p.AdapterState??(p.AdapterState="adapter-gated")),e.kind==="mask"&&(p.ImageRouterMask??(p.ImageRouterMask="true"),p.SemanticType??(p.SemanticType="ImageEditMask")),e.kind==="embed"){const N=e.assetUrl||e.body||e.sourceFilePath||"";p.source??(p.source="embed"),p.renderMode??(p.renderMode="card"),p.provider??(p.provider="web"),p.sourceUrl??(p.sourceUrl=N),p.url??(p.url=N),p.AdapterState??(p.AdapterState="local-reference")}return e.kind==="video"&&(p.assetKind??(p.assetKind="video"),p.videoMode??(p.videoMode=(b=e.assetUrl)!=null&&b.startsWith(d)?"local_bridge":"local_reference"),p.AdapterState??(p.AdapterState=((w=e.metadata)==null?void 0:w.PromptOnly)==="true"?"adapter-gated":"local-reference")),(P=e.tags)!=null&&P.length&&(p.ReactTags=JSON.stringify(e.tags)),m&&(p.OriginalUrl=m,p.ThumbnailUrl=m),y&&(p.OriginalPath=y,p.SourceFilePath=y),{Id:t,ContentType:c,Prompt:e.title||c,Response:c==="image"||c==="mask"?m||e.body||null:c==="remote-monitor"?e.body||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":c==="remote-control"?e.body||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":y||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:n||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||y||null,ScrollOffset:e.scrollOffset??0,MaxScroll:e.maxScroll??0,CreatedAt:r,UpdatedAt:r,IsWordWrap:e.wordWrap??e.kind!=="code",Metadata:p,ImageStack:c==="image"?Rg(e,d,r):null}}function Og(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 $g(e,t,n){const r=Z(e.ContentType)||"note",d=Z(e.Prompt).trim(),c=Z(e.Response).trim(),m=Pg(e.Metadata),y=Z(e.Id).trim();y&&(m[Ka]??(m[Ka]=y));const b=["true","1","yes"].includes(String(m.ImageRouterMask||m.IsMask||"").trim().toLowerCase())?"mask":jg(r),w=b==="memo"&&["mindcanvasagent","agentcommand"].includes(String(m.SemanticType||m.semanticType||"").trim().toLowerCase()),P=b==="memo"&&["codenote","code-note"].includes(String(m.SemanticType||m.semanticType||"").trim().toLowerCase()),N=Z(e.SourceFilePath)||m.OriginalPath||m.SourceFilePath||"",_=b==="video"||b==="pdf"||b==="file"||b==="directory"||b==="embed"?Lg(e,n):void 0,B=d||e.SourceFilePath||r||"LocalBridge node",F=b==="image"?c||d||"Image asset":b==="mask"?c||d||"Image mask asset":b==="remote-monitor"?c||d||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":b==="remote-control"?c||d||N||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":b==="pdf"||b==="file"||b==="directory"||b==="embed"?c||N||d||r:c||d||N||"",$=w?500:P?400:b==="remote-monitor"?860:b==="remote-control"||b==="template-launcher"?560:b==="csv-table"?720:b==="embed"?460:b==="video"?420:b==="markdown"?380:b==="text"||b==="image"||b==="mask"?360:320,H=w||P?300:b==="remote-monitor"?640:b==="remote-control"?390:b==="template-launcher"?620:b==="csv-table"?420:b==="embed"?260:b==="video"?236:b==="markdown"?240:b==="text"?210:b==="image"||b==="mask"?260:180,W=b==="image"||b==="mask"?Ag(e,n):void 0,re=b==="image"?Mg(e,W,n):void 0,se=!!(e.IsChunkedText||m.IsChunkedText==="true"),Ie=ya(e.TotalLineCount??m.TotalLineCount,0),fe=ya(e.ScrollOffset,0),He=ya(e.MaxScroll,0);return{id:String(e.Id||crypto.randomUUID()),kind:b,title:b==="remote-monitor"?d||"Multi Desktop Monitor":b==="remote-control"?d||m.RemoteFleetDeviceName||"Remote Device":b==="template-launcher"?d||"Template Launcher":B,body:F,x:ya((t==null?void 0:t.PositionX)??e.PositionX,0),y:ya((t==null?void 0:t.PositionY)??e.PositionY,0),width:Math.max(160,Math.min(900,ya((t==null?void 0:t.Width)??e.Width,$))),height:Math.max(120,Math.min(900,ya((t==null?void 0:t.Height)??e.Height,H))),status:e.IsLoading?"running":b==="ai-task"?"idle":void 0,imageUrl:Tg(re,W),imageStack:re,assetUrl:_,sourceFilePath:N||void 0,isChunkedText:se||void 0,totalLineCount:se?Ie:void 0,scrollOffset:se?fe:void 0,maxScroll:se?He:void 0,isExpanded:typeof e.IsExpanded=="boolean"?e.IsExpanded:void 0,originalHeight:ya(e.OriginalHeight,0)||void 0,tags:w?["Agent Command",m.AgentCommandRequestedRole||"Researcher",m.AgentCommandStatus||"Draft"]:P?["Code Note",m.CodeNoteStatus||"Draft",m.CodeNoteSyncState||"Unlinked"]:b==="remote-monitor"?["Remote","Monitor","LocalBridge"]:b==="remote-control"?["Remote","Control","LocalBridge"]:["LocalBridge",r],metadata:b==="remote-monitor"?Fg(m):b==="remote-control"?Ug(m):m,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 Fg(e){return{RemoteHub:"Gated",RemoteRoute:"Gated",RemoteConnected:"0",RemoteTotal:"30",RemotePage:"1/1",AdapterState:"adapter-gated",...e}}function Ug(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 zg(e,t){const n=[];for(const r of e){const d=String(r.Id||""),c=String(r.ParentId||"");!d||!c||!t.has(d)||!t.has(c)||n.push({id:`edge-local-${c}-${d}`,from:c,to:d,kind:"context"})}return n}async function Hg(e=Ds()){const t=await pi(".mindexec/boards/_metadata.json",e),n=JSON.parse(t.content);return(Array.isArray(n)?n.filter(vt):[]).map(c=>Jr(c)).filter(c=>!!c).sort((c,m)=>String(m.UpdatedAt||"").localeCompare(String(c.UpdatedAt||"")))}async function Wg(e){try{const t=await pi(".mindexec/boards/_metadata.json",e),n=JSON.parse(t.content);return Array.isArray(n)?n.filter(vt):[]}catch{return[]}}async function Vg(e,t,n,r=Ds(),d=null){var It,Ze,_e,$e,Me,Bt;if((It=e.source)!=null&&It.partialImport)throw new Error("This board was imported from a partial original payload. Export is blocked to avoid data loss.");if((Ze=e.source)!=null&&Ze.truncated)throw new Error("This board was truncated during import. Export is blocked to avoid data loss.");const c=(_e=e.source)!=null&&_e.exportedByReact?String(e.source.boardId||""):"",m=Ls(c),y=Ls(c)?c:$s(),p=new Date().toISOString(),b=Bg(e.nodes),w=b.map(U=>U.node),P=new Map(b.map(U=>[U.node.id,U.originalId])),N=_g(e.edges,P),_=b.map(({node:U,originalId:Be})=>Dg(U,Be,N.get(Be),p,r)),B=b.map(({node:U,originalId:Be})=>Og(U,Be)),F=t.scale>0?t.scale:1,$=(window.innerWidth/2-t.x)/F,H=(window.innerHeight/2-t.y)/F,W=1400/F,re=Number((d==null?void 0:d.x)??(($e=e.viewState)==null?void 0:$e.cursorX)??0),se=Number((d==null?void 0:d.y)??((Me=e.viewState)==null?void 0:Me.cursorY)??0),Ie=(Bt=e.nodes.find(U=>U.kind==="image"&&U.imageUrl))==null?void 0:Bt.imageUrl,fe={Id:y,UserId:"00000000-0000-0000-0000-000000000000",Title:e.name||"Untitled Board",Description:"Exported from MindExec React",ThumbnailUrl:No(Ie,r)||"",IsPublic:!1,CreatedAt:p,SyncedCloudBoardId:null,LastSyncedAt:null,LastCloudCopyStatus:null,UpdatedAt:p,LastCameraX:$,LastCameraY:H,LastCameraZ:W,LastCursorX:Number.isFinite(re)?re:0,LastCursorY:Number.isFinite(se)?se:0,CameraBookmarks:Sg(e.settings.cameraBookmarks)},He=`.mindexec/boards/${y}.msgpack`,jt=`.mindexec/boards/${y}.json`,ot=`.mindexec/boards/${y}.layout.json`,V=`.mindexec/boards/${y}.delta.json`,G=`boards/${y}.delta.json`,ie=await Wg(r),ae=[fe,...ie.filter(U=>Z(U.Id)!==y)],mt=_p(_);await op(He,mt,n,r),await hr(jt,JSON.stringify(_,null,2),n,r),await hr(ot,JSON.stringify(B,null,2),n,r),await hr(".mindexec/boards/_metadata.json",JSON.stringify(ae,null,2),n,r);const z=await Promise.allSettled([_l(V,n,r),_l(G,n,r)]);return f.emit("localBridge.board.exported",{boardId:y,nodes:_.length,edges:e.edges.length,snapshotFormat:"msgpack",msgpackBytes:mt.byteLength,jsonMirror:!0,deltaCleared:z.some(U=>U.status==="fulfilled"&&U.value.success),reusedBoardId:m,stableNodeIds:b.length,assignedNodeIds:b.filter(U=>U.assignedNodeId).length,metadataStampedNodeIds:b.filter(U=>U.metadataStamped).length,duplicateOriginalNodeIds:b.filter(U=>U.duplicateOriginalId).length}),{metadata:fe,source:{kind:"localBridge",boardId:y,loadedAt:p,originalNodeCount:_.length,renderedNodeCount:_.length,truncated:!1,exportedByReact:!0,snapshotFormat:"msgpack"},nodes:w,msgpackPath:He,boardPath:jt,layoutPath:ot}}async function Yg(e,t,n=Ds()){const r=await vg(e.Id,n);let d=new Map;const c=await qr([`.mindexec/boards/${e.Id}.layout.json`,`boards/${e.Id}.layout.json`],n);c&&(d=Cc(c.payload));let m=null;const y=await qr([`.mindexec/boards/${e.Id}.delta.json`,`boards/${e.Id}.delta.json`],n);y&&(m=y.payload);const p=m?yi(m)[0]:null,b=!!(m&&bi(m)),w=b?wg(r.payload,m):r.payload;return kc(w,t,{boardId:(p==null?void 0:p.Id)??e.Id,title:(p==null?void 0:p.Title)||e.Title||"LocalBridge Board",updatedAt:(p==null?void 0:p.UpdatedAt)??e.UpdatedAt,layoutPayload:Array.from(d.values()),baseUrl:n,cameraBookmarks:(p==null?void 0:p.CameraBookmarks)??e.CameraBookmarks,lastCursorX:(p==null?void 0:p.LastCursorX)??e.LastCursorX,lastCursorY:(p==null?void 0:p.LastCursorY)??e.LastCursorY,deltaApplied:b,deltaUpserts:m?xc(m):0,deltaDeletes:m?yc(m):0,snapshotFormat:r.format})}function kc(e,t,n={}){const r=Ps(e),d=bi(e),c=n.deltaUpserts??(d?r.length:0),m=n.deltaDeletes??(d?yc(e):0),y=n.layoutPayload?Cc(n.layoutPayload):new Map,p=r.slice(0,yg),b=p.map(se=>$g(se,y.get(String(se.Id||"")),n.baseUrl??Ds())),w=new Set(b.map(se=>se.id)),P=zg(p,w),N=r.length>b.length,_=d,B=n.deltaApplied===!0,F=n.boardId||$s(),$=n.updatedAt||new Date().toISOString(),H=Number(n.lastCursorX),W=Number(n.lastCursorY),re=Number.isFinite(H)&&Number.isFinite(W);return f.emit("localBridge.board.loaded",{boardId:F,nodes:b.length,originalNodes:r.length,truncated:N,snapshotFormat:n.snapshotFormat,partialImport:_,deltaImport:d,deltaApplied:B,deltaUpserts:c,deltaDeletes:m}),{id:`localBridge:${F}`,name:n.title||"LocalBridge Board",nodes:b,edges:P,settings:{...t,cameraBookmarks:kg(n.cameraBookmarks)},viewState:re?{cursorX:H,cursorY:W}:void 0,updatedAt:$,source:{kind:"localBridge",boardId:F,loadedAt:new Date().toISOString(),snapshotFormat:n.snapshotFormat,originalNodeCount:r.length,renderedNodeCount:b.length,truncated:N,partialImport:_,deltaImport:d,deltaApplied:B}}}const Sc=new Set(["research","web-search","analyze","summarize","create","decision","human-review","image-generate","video-generate","output","ai-task"]);function xi(e,t){const n=hi(e);return n!=="auto"?n:Ic(t)?"ko":Nc(t)?"ja":Ac(t)?"zh":"en"}function Gg(e,t){const n=xi(t,e),r=[...Sc].join(", ");return["Create a simple MindExec business execution flow for this objective:",e,"",Hr(n),`User-facing node "title" and "instruction" values MUST use ${rp(n)} unless the objective explicitly asks for another language.`,'JSON property names, internal "kind" values, and pin IDs MUST remain in English exactly as specified.',"","MindExec is not an n8n/Zapier-style automation grammar.","The user should feel they are arranging work sentences and business thinking, not triggers, apps, fields, JSON, webhooks, API steps, or low-level automation blocks.","","Most nodes will be rendered to the user as AI Task nodes.",'The "kind" field is primarily an internal execution intent hint that the user does not need to learn.',"Use image-generate or video-generate only when the graph truly needs an explicit media generation block.","",`Available internal intent hints: ${r}`,"","Return only JSON:","{",' "nodes": [',' { "kind": "research", "title": "Investigate market evidence", "instruction": "..." }'," ],",' "edges": [',' { "from": 0, "fromPin": "result", "to": 1, "toPin": "input" }'," ]","}","","Rules:","- 4 to 7 nodes.","- Use large business-language tasks, not low-level n8n/zapier steps.","- Think in this user model: AI Task = work sentence, Line = pass the previous result, Context = background thought/document.","- Do not create nodes for Trigger, Action, Webhook, HTTP request, app event, JSON parsing, iterator, filter, credential, or field mapping.","- Prefer a practical sequence for a solo global SaaS/business builder.","- Use only the available internal intent hints.","- Keep titles short and task-like, not category names such as Research, Analyze, Create, Web Search, or Output.","- Instructions should be natural-language work requests that a business owner would write.","- Preserve evidence/trust needs in the instruction when the task depends on current facts or source URLs.",'- Prefer "result" -> "input" edges unless a stronger pin contract is needed.'].join(`
|
|
1
|
+
var Xm=Object.defineProperty;var qm=(e,t,n)=>t in e?Xm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Pl=(e,t,n)=>qm(e,typeof t!="symbol"?t+"":t,n);import{r as g,j as o,a as Jm}from"./vendor-react-BXzpOyCS.js";import{l as Zm,a as St,s as Xt,b as Qm,d as ep,r as tp,c as ap,e as np,i as El}from"./storage-CcZMLcgs.js";import{r as pi,g as Ds,w as op,a as hr,d as _l,b as sp,t as gi,n as hi,c as Hr,e as rp,p as ic,v as ip,R as lp,f as dp,u as cp,h as up,i as Bl,s as at,j as io,l as fr,k as lo,m as ss,o as co,q as uo,x as rs,y as qt,z as Dl,A as Ua,B as mp,C as Ol,D as pp,E as gp,F as hp,G as fp,H as bp,I as yp,J as xp,K as Zt,L as lc,T as Cp,M as kp,N as $l,O as mo,P as dc,Q as Wr,S as Vr,U as cc,V as is,W as xs,X as xo,Y as Fl,Z as Y,_ as br,$ as Co,a0 as Sp,a1 as wp,a2 as Ul,a3 as zl,a4 as yr,a5 as vp,a6 as jp,a7 as Ip,a8 as Np,a9 as Ap,aa as Mp,ab as Tp,ac as Rp,ad as Lp,ae as Pp,af as Ep}from"./canvas-runtime-CF8ukxQK.js";import{e as _p,d as Bp}from"./vendor-msgpack-BE8aAsr3.js";import{R as f}from"./app-runtime-xD2Z3NdN.js";import{g as xr,A as Hl,a as Cs}from"./index-Dp7yFpgv.js";import{r as uc}from"./productionAdapterConfig-C5jfk6oG.js";import{getSupabaseBrowserClient as Os}from"./supabaseAuthAdapter-CjOxTXgI.js";import{c as Dp,a as Op,r as Wl}from"./toolHandoff-D5e5f7t5.js";import{a as Vl,s as $p}from"./executionModeSettings-NJqurj-o.js";import{a as Yl,p as Fp}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";import{A as Up,D as zp,E as vn,w as jn,I as In,V as Nn,l as Ms,F as wt,J as Hp,N as Yr,O as Ts,Q as An,W as mc,Y as Wp,Z as pc,_ as Vp,i as wo,$ as gc,a0 as Yp,a1 as Gl,a2 as Gp,a3 as Ca,a4 as Kl,T as Rs,a5 as Xl,a6 as Io,a7 as Kp,R as Mn,a8 as ks,a9 as hc,aa as Gr,X as Et,o as fc,ab as Xp,ac as qp,f as Jp,ad as ql,ae as Zp,h as ko,x as Qp,af as eg,ag as tg,ah as Jl,ai as Zl,aj as Ql,g as ed,ak as ls,H as po,al as ds,s as Cr,am as td,an as Jt,c as ag,ao as ng,ap as kr,aq as ad,ar as og,as as cs,at as Sr,au as nd,av as od,aw as sd,ax as sg,ay as rg,az as ig,aA as lg,n as dg,aB as cg,aC as ug,aD as mg,aE as pg,aF as gg,aG as hg,aH as fg,aI as bg}from"./vendor-icons-DE3gIReG.js";const yg=1200,Ka="LocalBridgeOriginalNodeId";function vt(e){return typeof e=="object"&&e!==null}function ya(e,t){const n=Number(e);return Number.isFinite(n)?n:t}function Z(e){return typeof e=="string"?e:""}function bc(){return typeof window<"u"?{width:window.innerWidth||1280,height:window.innerHeight||720}:{width:1280,height:720}}function Kr(e,t,n){const r=Number(e),d=Number(t),c=Number(n);if(!Number.isFinite(r)||!Number.isFinite(d)||!Number.isFinite(c)||c<=0)return null;const m=1400/c,y=bc();return{x:y.width/2-r*m,y:y.height/2-d*m,scale:m}}function xg(e){return vt(e)?Kr(e.x??e.X,e.y??e.Y,e.z??e.Z):null}function Cg(e){if(!vt(e))return null;const t=Number(e.x),n=Number(e.y),r=Number(e.scale);if(!Number.isFinite(t)||!Number.isFinite(n)||!Number.isFinite(r)||r<=0)return null;const d=bc();return{x:(d.width/2-t)/r,y:(d.height/2-n)/r,z:1400/r}}function kg(e){const t=String(e||"").trim();if(t)try{const n=JSON.parse(t);if(!vt(n))return;const r={};for(const[d,c]of Object.entries(n)){const m=xg(c);m&&(r[d]=m)}return Object.keys(r).length>0?r:void 0}catch{return}}function Sg(e){if(!e||Object.keys(e).length===0)return null;const t={};for(const[n,r]of Object.entries(e)){const d=Cg(r);d&&(t[n]=d)}return Object.keys(t).length>0?JSON.stringify(t):null}function Ls(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 $s(){return crypto.randomUUID()}function fi(e){return vt(e)?"ContentType"in e||"Prompt"in e||"Response"in e||"PositionX"in e||"PositionY"in e||"SourceFilePath"in e||"ImageStack"in e:!1}function rd(e){const t=Z(e).trim();if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Xr(e){if(Array.isArray(e))return e;if(!vt(e))return[];for(const t of["Nodes","nodes","Items","items","Content","content","Upserts","upserts"])if(t in e){const n=e[t];if(Array.isArray(n))return n;const r=rd(n);if(r)return Xr(r)}for(const t of["ContentJson","contentJson","content_json"])if(t in e){const n=rd(e[t]);if(n)return Xr(n)}return fi(e)?[e]:[]}function bi(e){return vt(e)?"BoardId"in e&&("Upserts"in e||"upserts"in e||"Deletes"in e||"deletes"in e):!1}function yc(e){if(!vt(e))return 0;for(const t of["Deletes","deletes"]){const n=e[t];if(Array.isArray(n))return n.length}return 0}function Ps(e){return Xr(e).filter(fi)}function xc(e){return Ps(e).length}function wg(e,t){var c;const n=[...Ps(e)];if(!bi(t))return n;const r=new Set;for(const m of["Deletes","deletes"]){const y=t[m];if(Array.isArray(y))for(const p of y){const b=Z(p).trim();b&&r.add(b)}}if(r.size>0)for(let m=n.length-1;m>=0;m-=1){const y=Z((c=n[m])==null?void 0:c.Id).trim();y&&r.has(y)&&n.splice(m,1)}const d=new Map;n.forEach((m,y)=>{const p=Z(m.Id).trim();p&&d.set(p,y)});for(const m of Ps(t)){const y=Z(m.Id).trim(),p=y?d.get(y):void 0;if(p!==void 0){n[p]=m;continue}y&&d.set(y,n.length),n.push(m)}return n}function Cc(e){const t=Array.isArray(e)?e.filter(vt):[];return new Map(t.filter(n=>n.NodeId).map(n=>[String(n.NodeId),n]))}async function qr(e,t){for(const n of e)try{const r=await pi(n,t);return{payload:JSON.parse(r.content),path:n}}catch{}return null}async function vg(e,t){const n=`.mindexec/boards/${e}.msgpack`,r=`boards/${e}.msgpack`;for(const y of[n,r])try{const p=await sp(y,t);return{payload:Bp(p),format:y===n?"msgpack":"legacy-msgpack",path:y}}catch{}const d=`.mindexec/boards/${e}.json`,c=`boards/${e}.json`,m=await qr([d,c],t);if(m)return{payload:m.payload,format:m.path===d?"json":"legacy-json",path:m.path};throw new Error(`LocalBridge board file not found: ${n}, ${r}, ${d}, ${c}`)}function Jr(e){const t=Z(e.Id).trim()||Z(e.BoardId).trim();return t?{Id:t,Title:Z(e.Title)||null,Description:Z(e.Description)||null,ThumbnailUrl:Z(e.ThumbnailUrl)||null,CreatedAt:Z(e.CreatedAt)||null,UpdatedAt:Z(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:Z(e.CameraBookmarks)||null}:null}function id(e){return!vt(e)||fi(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 yi(e){if(Array.isArray(e))return e.filter(id).map(t=>Jr(t)).filter(t=>!!t);if(id(e)){const t=Jr(e);return t?[t]:[]}return[]}function jg(e){const t=e.toLowerCase();return Ig(t)?"remote-control":Ng(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 Ig(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 n=t.replace(/[^a-z0-9]+/g,"");return n.includes("remotecontrol")||n.includes("remotedevice")||n.includes("remotefleetdevice")}function Ng(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 n=t.replace(/[^a-z0-9]+/g,"");return n.includes("remotemonitor")||n.includes("remotehubmonitor")||n.includes("multidesktopmonitor")||n.includes("smartviewmonitor")}function Ag(e,t){const n=e.Metadata||{},r=n.ThumbnailUrl,d=n.OriginalUrl,c=n.OriginalPath;return gi(Z(r)||Z(d)||Z(c)||Z(e.Response),t)}function Mg(e,t,n){const r=e.ImageStack,d=Array.isArray(r==null?void 0:r.Variants)?r.Variants:[];if(d.length===0)return;const c=d.map((y,p)=>{const b=Z(y.AssetId).trim(),w=gi(b,n)||t;return w?{variantId:Z(y.VariantId)||`variant-${Z(e.Id)||p}`,imageUrl:w,assetId:b||void 0,caption:Z(y.Caption)||void 0,sourceNodeId:Z(e.Id)||void 0,createdAtUtc:Z(y.CreatedAtUtc)||void 0}:null}).filter(y=>!!y);if(c.length===0)return;const m=Z(r==null?void 0:r.ActiveVariantId);return{activeVariantId:c.some(y=>y.variantId===m)?m:c[0].variantId,variants:c,kind:Z(r==null?void 0:r.Kind)||"versions",title:Z(r==null?void 0:r.Title)||void 0,updatedAtUtc:Z(r==null?void 0:r.UpdatedAtUtc)||void 0}}function Tg(e,t){return!e||e.variants.length===0?t:(e.variants.find(r=>r.variantId===e.activeVariantId)??e.variants[0]).imageUrl||t}function Rg(e,t,n){var m,y,p,b,w,P;const r=(y=(m=e.imageStack)==null?void 0:m.variants)!=null&&y.length?e.imageStack.variants:e.imageUrl?[{variantId:`${e.id}:image`,imageUrl:e.imageUrl,assetId:No(e.imageUrl,t)||e.imageUrl,title:e.title,sourceNodeId:e.id,createdAtUtc:n}]:[];if(r.length===0)return null;const d=r.map(N=>({VariantId:N.variantId||$s(),AssetId:N.assetId||No(N.imageUrl,t)||N.imageUrl,CreatedAtUtc:N.createdAtUtc||n,Caption:N.caption||N.title||null}));return{ActiveVariantId:(p=e.imageStack)!=null&&p.activeVariantId&&d.some(N=>{var _;return N.VariantId===((_=e.imageStack)==null?void 0:_.activeVariantId)})?e.imageStack.activeVariantId:d[0].VariantId||"",Variants:d,Kind:((b=e.imageStack)==null?void 0:b.kind)||(d.length>1?"pile":"versions"),Title:((w=e.imageStack)==null?void 0:w.title)||e.title||null,UpdatedAtUtc:((P=e.imageStack)==null?void 0:P.updatedAtUtc)||n}}function Lg(e,t){const n=e.Metadata||{};return gi(Z(n.OriginalUrl)||Z(n.OriginalPath)||Z(n.SourceFilePath)||Z(e.SourceFilePath)||Z(e.Response),t)}function Pg(e){const t={};for(const[n,r]of Object.entries(e??{}))typeof r=="string"?t[n]=r:r!=null&&(t[n]=String(r));return t}function Eg(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 No(e,t){const n=String(e||"").trim();if(!n)return"";const r=t.replace(/\/+$/,"");return n.startsWith(`${r}/`)?n.slice(r.length+1):n.replace(/^\/+/,"")}function _g(e,t){const n=new Map;for(const r of e){const d=t.get(r.from),c=t.get(r.to);!d||!c||n.has(c)||n.set(c,d)}return n}function Bg(e){const t=new Set;return e.map(n=>{var p,b;const r=((p=n.metadata)==null?void 0:p[Ka])||"",d=Ls(r)?r:Ls(n.id)?n.id:"",c=!!(d&&t.has(d)),m=d&&!c?d:$s(),y=((b=n.metadata)==null?void 0:b[Ka])!==m;return t.add(m),{node:y?{...n,metadata:{...n.metadata??{},[Ka]:m}}:n,originalId:m,assignedNodeId:!d||c,metadataStamped:y,duplicateOriginalId:c}})}function Dg(e,t,n,r,d){var b,w,P;const c=Eg(e.kind),m=c==="image"||c==="mask"?No(e.imageUrl,d):"",y=["video","pdf","file","directory","embed"].includes(c)?No(e.assetUrl||e.sourceFilePath||e.body,d):"",p={...e.metadata??{},[Ka]:t,ReactNodeId:e.id,ReactKind:e.kind};if(e.kind==="remote-monitor"&&(p.RemoteHub??(p.RemoteHub="Gated"),p.RemoteRoute??(p.RemoteRoute="Gated"),p.RemoteConnected??(p.RemoteConnected="0"),p.RemoteTotal??(p.RemoteTotal="30"),p.RemotePage??(p.RemotePage="1/1"),p.AdapterState??(p.AdapterState="adapter-gated")),e.kind==="remote-control"&&(p.SemanticType??(p.SemanticType="RemoteFleetDevice"),p.RemoteFleetSchemaVersion??(p.RemoteFleetSchemaVersion="remote-fleet-device@1"),p.RemoteRoute??(p.RemoteRoute="Gated"),p.RemoteInput??(p.RemoteInput="Off"),p.AdapterState??(p.AdapterState="adapter-gated")),e.kind==="mask"&&(p.ImageRouterMask??(p.ImageRouterMask="true"),p.SemanticType??(p.SemanticType="ImageEditMask")),e.kind==="embed"){const N=e.assetUrl||e.body||e.sourceFilePath||"";p.source??(p.source="embed"),p.renderMode??(p.renderMode="card"),p.provider??(p.provider="web"),p.sourceUrl??(p.sourceUrl=N),p.url??(p.url=N),p.AdapterState??(p.AdapterState="local-reference")}return e.kind==="video"&&(p.assetKind??(p.assetKind="video"),p.videoMode??(p.videoMode=(b=e.assetUrl)!=null&&b.startsWith(d)?"local_bridge":"local_reference"),p.AdapterState??(p.AdapterState=((w=e.metadata)==null?void 0:w.PromptOnly)==="true"?"adapter-gated":"local-reference")),(P=e.tags)!=null&&P.length&&(p.ReactTags=JSON.stringify(e.tags)),m&&(p.OriginalUrl=m,p.ThumbnailUrl=m),y&&(p.OriginalPath=y,p.SourceFilePath=y),{Id:t,ContentType:c,Prompt:e.title||c,Response:c==="image"||c==="mask"?m||e.body||null:c==="remote-monitor"?e.body||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":c==="remote-control"?e.body||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":y||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:n||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||y||null,ScrollOffset:e.scrollOffset??0,MaxScroll:e.maxScroll??0,CreatedAt:r,UpdatedAt:r,IsWordWrap:e.wordWrap??e.kind!=="code",Metadata:p,ImageStack:c==="image"?Rg(e,d,r):null}}function Og(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 $g(e,t,n){const r=Z(e.ContentType)||"note",d=Z(e.Prompt).trim(),c=Z(e.Response).trim(),m=Pg(e.Metadata),y=Z(e.Id).trim();y&&(m[Ka]??(m[Ka]=y));const b=["true","1","yes"].includes(String(m.ImageRouterMask||m.IsMask||"").trim().toLowerCase())?"mask":jg(r),w=b==="memo"&&["mindcanvasagent","agentcommand"].includes(String(m.SemanticType||m.semanticType||"").trim().toLowerCase()),P=b==="memo"&&["codenote","code-note"].includes(String(m.SemanticType||m.semanticType||"").trim().toLowerCase()),N=Z(e.SourceFilePath)||m.OriginalPath||m.SourceFilePath||"",_=b==="video"||b==="pdf"||b==="file"||b==="directory"||b==="embed"?Lg(e,n):void 0,B=d||e.SourceFilePath||r||"LocalBridge node",F=b==="image"?c||d||"Image asset":b==="mask"?c||d||"Image mask asset":b==="remote-monitor"?c||d||"RemoteHub monitor node. Frames and input stay adapter-gated until LocalBridge is connected.":b==="remote-control"?c||d||N||"Remote device control node. Frames and input stay adapter-gated until LocalBridge is connected.":b==="pdf"||b==="file"||b==="directory"||b==="embed"?c||N||d||r:c||d||N||"",$=w?500:P?400:b==="remote-monitor"?860:b==="remote-control"||b==="template-launcher"?560:b==="csv-table"?720:b==="embed"?460:b==="video"?420:b==="markdown"?380:b==="text"||b==="image"||b==="mask"?360:320,H=w||P?300:b==="remote-monitor"?640:b==="remote-control"?390:b==="template-launcher"?620:b==="csv-table"?420:b==="embed"?260:b==="video"?236:b==="markdown"?240:b==="text"?210:b==="image"||b==="mask"?260:180,W=b==="image"||b==="mask"?Ag(e,n):void 0,re=b==="image"?Mg(e,W,n):void 0,se=!!(e.IsChunkedText||m.IsChunkedText==="true"),Ie=ya(e.TotalLineCount??m.TotalLineCount,0),fe=ya(e.ScrollOffset,0),He=ya(e.MaxScroll,0);return{id:String(e.Id||crypto.randomUUID()),kind:b,title:b==="remote-monitor"?d||"Multi Desktop Monitor":b==="remote-control"?d||m.RemoteFleetDeviceName||"Remote Device":b==="template-launcher"?d||"Template Launcher":B,body:F,x:ya((t==null?void 0:t.PositionX)??e.PositionX,0),y:ya((t==null?void 0:t.PositionY)??e.PositionY,0),width:Math.max(160,Math.min(900,ya((t==null?void 0:t.Width)??e.Width,$))),height:Math.max(120,Math.min(900,ya((t==null?void 0:t.Height)??e.Height,H))),status:e.IsLoading?"running":b==="ai-task"?"idle":void 0,imageUrl:Tg(re,W),imageStack:re,assetUrl:_,sourceFilePath:N||void 0,isChunkedText:se||void 0,totalLineCount:se?Ie:void 0,scrollOffset:se?fe:void 0,maxScroll:se?He:void 0,isExpanded:typeof e.IsExpanded=="boolean"?e.IsExpanded:void 0,originalHeight:ya(e.OriginalHeight,0)||void 0,tags:w?["Agent Command",m.AgentCommandRequestedRole||"Researcher",m.AgentCommandStatus||"Draft"]:P?["Code Note",m.CodeNoteStatus||"Draft",m.CodeNoteSyncState||"Unlinked"]:b==="remote-monitor"?["Remote","Monitor","LocalBridge"]:b==="remote-control"?["Remote","Control","LocalBridge"]:["LocalBridge",r],metadata:b==="remote-monitor"?Fg(m):b==="remote-control"?Ug(m):m,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 Fg(e){return{RemoteHub:"Gated",RemoteRoute:"Gated",RemoteConnected:"0",RemoteTotal:"30",RemotePage:"1/1",AdapterState:"adapter-gated",...e}}function Ug(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 zg(e,t){const n=[];for(const r of e){const d=String(r.Id||""),c=String(r.ParentId||"");!d||!c||!t.has(d)||!t.has(c)||n.push({id:`edge-local-${c}-${d}`,from:c,to:d,kind:"context"})}return n}async function Hg(e=Ds()){const t=await pi(".mindexec/boards/_metadata.json",e),n=JSON.parse(t.content);return(Array.isArray(n)?n.filter(vt):[]).map(c=>Jr(c)).filter(c=>!!c).sort((c,m)=>String(m.UpdatedAt||"").localeCompare(String(c.UpdatedAt||"")))}async function Wg(e){try{const t=await pi(".mindexec/boards/_metadata.json",e),n=JSON.parse(t.content);return Array.isArray(n)?n.filter(vt):[]}catch{return[]}}async function Vg(e,t,n,r=Ds(),d=null){var It,Ze,_e,$e,Me,Bt;if((It=e.source)!=null&&It.partialImport)throw new Error("This board was imported from a partial original payload. Export is blocked to avoid data loss.");if((Ze=e.source)!=null&&Ze.truncated)throw new Error("This board was truncated during import. Export is blocked to avoid data loss.");const c=(_e=e.source)!=null&&_e.exportedByReact?String(e.source.boardId||""):"",m=Ls(c),y=Ls(c)?c:$s(),p=new Date().toISOString(),b=Bg(e.nodes),w=b.map(U=>U.node),P=new Map(b.map(U=>[U.node.id,U.originalId])),N=_g(e.edges,P),_=b.map(({node:U,originalId:Be})=>Dg(U,Be,N.get(Be),p,r)),B=b.map(({node:U,originalId:Be})=>Og(U,Be)),F=t.scale>0?t.scale:1,$=(window.innerWidth/2-t.x)/F,H=(window.innerHeight/2-t.y)/F,W=1400/F,re=Number((d==null?void 0:d.x)??(($e=e.viewState)==null?void 0:$e.cursorX)??0),se=Number((d==null?void 0:d.y)??((Me=e.viewState)==null?void 0:Me.cursorY)??0),Ie=(Bt=e.nodes.find(U=>U.kind==="image"&&U.imageUrl))==null?void 0:Bt.imageUrl,fe={Id:y,UserId:"00000000-0000-0000-0000-000000000000",Title:e.name||"Untitled Board",Description:"Exported from MindExec React",ThumbnailUrl:No(Ie,r)||"",IsPublic:!1,CreatedAt:p,SyncedCloudBoardId:null,LastSyncedAt:null,LastCloudCopyStatus:null,UpdatedAt:p,LastCameraX:$,LastCameraY:H,LastCameraZ:W,LastCursorX:Number.isFinite(re)?re:0,LastCursorY:Number.isFinite(se)?se:0,CameraBookmarks:Sg(e.settings.cameraBookmarks)},He=`.mindexec/boards/${y}.msgpack`,jt=`.mindexec/boards/${y}.json`,ot=`.mindexec/boards/${y}.layout.json`,V=`.mindexec/boards/${y}.delta.json`,G=`boards/${y}.delta.json`,ie=await Wg(r),ae=[fe,...ie.filter(U=>Z(U.Id)!==y)],mt=_p(_);await op(He,mt,n,r),await hr(jt,JSON.stringify(_,null,2),n,r),await hr(ot,JSON.stringify(B,null,2),n,r),await hr(".mindexec/boards/_metadata.json",JSON.stringify(ae,null,2),n,r);const z=await Promise.allSettled([_l(V,n,r),_l(G,n,r)]);return f.emit("localBridge.board.exported",{boardId:y,nodes:_.length,edges:e.edges.length,snapshotFormat:"msgpack",msgpackBytes:mt.byteLength,jsonMirror:!0,deltaCleared:z.some(U=>U.status==="fulfilled"&&U.value.success),reusedBoardId:m,stableNodeIds:b.length,assignedNodeIds:b.filter(U=>U.assignedNodeId).length,metadataStampedNodeIds:b.filter(U=>U.metadataStamped).length,duplicateOriginalNodeIds:b.filter(U=>U.duplicateOriginalId).length}),{metadata:fe,source:{kind:"localBridge",boardId:y,loadedAt:p,originalNodeCount:_.length,renderedNodeCount:_.length,truncated:!1,exportedByReact:!0,snapshotFormat:"msgpack"},nodes:w,msgpackPath:He,boardPath:jt,layoutPath:ot}}async function Yg(e,t,n=Ds()){const r=await vg(e.Id,n);let d=new Map;const c=await qr([`.mindexec/boards/${e.Id}.layout.json`,`boards/${e.Id}.layout.json`],n);c&&(d=Cc(c.payload));let m=null;const y=await qr([`.mindexec/boards/${e.Id}.delta.json`,`boards/${e.Id}.delta.json`],n);y&&(m=y.payload);const p=m?yi(m)[0]:null,b=!!(m&&bi(m)),w=b?wg(r.payload,m):r.payload;return kc(w,t,{boardId:(p==null?void 0:p.Id)??e.Id,title:(p==null?void 0:p.Title)||e.Title||"LocalBridge Board",updatedAt:(p==null?void 0:p.UpdatedAt)??e.UpdatedAt,layoutPayload:Array.from(d.values()),baseUrl:n,cameraBookmarks:(p==null?void 0:p.CameraBookmarks)??e.CameraBookmarks,lastCursorX:(p==null?void 0:p.LastCursorX)??e.LastCursorX,lastCursorY:(p==null?void 0:p.LastCursorY)??e.LastCursorY,deltaApplied:b,deltaUpserts:m?xc(m):0,deltaDeletes:m?yc(m):0,snapshotFormat:r.format})}function kc(e,t,n={}){const r=Ps(e),d=bi(e),c=n.deltaUpserts??(d?r.length:0),m=n.deltaDeletes??(d?yc(e):0),y=n.layoutPayload?Cc(n.layoutPayload):new Map,p=r.slice(0,yg),b=p.map(se=>$g(se,y.get(String(se.Id||"")),n.baseUrl??Ds())),w=new Set(b.map(se=>se.id)),P=zg(p,w),N=r.length>b.length,_=d,B=n.deltaApplied===!0,F=n.boardId||$s(),$=n.updatedAt||new Date().toISOString(),H=Number(n.lastCursorX),W=Number(n.lastCursorY),re=Number.isFinite(H)&&Number.isFinite(W);return f.emit("localBridge.board.loaded",{boardId:F,nodes:b.length,originalNodes:r.length,truncated:N,snapshotFormat:n.snapshotFormat,partialImport:_,deltaImport:d,deltaApplied:B,deltaUpserts:c,deltaDeletes:m}),{id:`localBridge:${F}`,name:n.title||"LocalBridge Board",nodes:b,edges:P,settings:{...t,cameraBookmarks:kg(n.cameraBookmarks)},viewState:re?{cursorX:H,cursorY:W}:void 0,updatedAt:$,source:{kind:"localBridge",boardId:F,loadedAt:new Date().toISOString(),snapshotFormat:n.snapshotFormat,originalNodeCount:r.length,renderedNodeCount:b.length,truncated:N,partialImport:_,deltaImport:d,deltaApplied:B}}}const Sc=new Set(["research","web-search","analyze","summarize","create","decision","human-review","image-generate","video-generate","output","ai-task"]);function xi(e,t){const n=hi(e);return n!=="auto"?n:Ic(t)?"ko":Nc(t)?"ja":Ac(t)?"zh":"en"}function Gg(e,t){const n=xi(t,e),r=[...Sc].join(", ");return["Create a simple MindExec business execution flow for this objective:",e,"",Hr(n),`User-facing node "title" and "instruction" values MUST use ${rp(n)} unless the objective explicitly asks for another language.`,'JSON property names, internal "kind" values, and pin IDs MUST remain in English exactly as specified.',"","MindExec is not an n8n/Zapier-style automation grammar.","The user should feel they are arranging work sentences and business thinking, not triggers, apps, fields, JSON, webhooks, API steps, or low-level automation blocks.","","Most nodes will be rendered to the user as AI Task nodes.",'The "kind" field is primarily an internal execution intent hint that the user does not need to learn.',"Use image-generate or video-generate only when the graph truly needs an explicit media generation block.","",`Available internal intent hints: ${r}`,"","Return only JSON:","{",' "nodes": [',' { "kind": "research", "title": "Investigate market evidence", "instruction": "..." }'," ],",' "edges": [',' { "from": 0, "fromPin": "result", "to": 1, "toPin": "input" }'," ]","}","","Rules:","- 4 to 7 nodes.","- Use large business-language tasks, not low-level n8n/zapier steps.","- Think in this user model: AI Task = work sentence, Line = pass the previous result, Context = background thought/document.","- Do not create nodes for Trigger, Action, Webhook, HTTP request, app event, JSON parsing, iterator, filter, credential, or field mapping.","- Prefer a practical sequence for a solo global SaaS/business builder.","- Use only the available internal intent hints.","- Keep titles short and task-like, not category names such as Research, Analyze, Create, Web Search, or Output.","- Instructions should be natural-language work requests that a business owner would write.","- Preserve evidence/trust needs in the instruction when the task depends on current facts or source URLs.",'- Prefer "result" -> "input" edges unless a stronger pin contract is needed.'].join(`
|
|
2
2
|
`)}function Kg(e){const t=Zg(e);if(!t)return null;let n;try{n=JSON.parse(t)}catch{return null}if(!wr(n)||!Array.isArray(n.nodes))return null;const r=n.nodes.slice(0,8).map(c=>{if(!wr(c))return null;const m=Jg(go(c.kind));if(!Sc.has(m))return null;const y=go(c.title).trim(),p=go(c.instruction).trim();return!y||!p?null:{kind:m,title:y.slice(0,90),instruction:p}}).filter(c=>!!c);if(r.length<2)return null;const d=Array.isArray(n.edges)?n.edges.slice(0,14).map(c=>{if(!wr(c))return null;const m=dd(c.from),y=dd(c.to);return m<0||y<0||m>=r.length||y>=r.length||m===y?null:{from:m,fromPin:go(c.fromPin).trim()||vc(r[m].kind),to:y,toPin:go(c.toPin).trim()||jc(r[y].kind)}}).filter(c=>!!c):[];return{nodes:r,edges:d.length>0?d:wc(r)}}function Xg(e,t){if(t==="en")return!0;const n=e.nodes.map(r=>`${r.title} ${r.instruction}`).join(" ");return t==="ko"?Ic(n):t==="ja"?Qg(n):t==="zh"?Ac(n):!0}function ld(e,t){const n=e.trim()||"the selected note",r=qg(n,t);return{nodes:r,edges:wc(r)}}function qg(e,t){return t==="ko"?[{kind:"research",title:"비즈니스 맥락 정리",instruction:`이 목표의 시장, 고객, 경쟁, 가격, 채널 맥락을 정리하세요: ${e}`},{kind:"web-search",title:"근거 있는 사실 수집",instruction:`이 목표에 중요한 최신 근거와 URL을 찾고, 링크와 불확실성을 함께 남기세요: ${e}`},{kind:"analyze",title:"핵심 기회 분석",instruction:`앞선 결과를 바탕으로 ${e}의 리스크, 차별점, 가장 빠른 매출 경로를 분석하세요.`},{kind:"create",title:"제안 초안 작성",instruction:`분석을 바탕으로 바로 테스트할 수 있는 오퍼, 랜딩 카피, 실험안, 실행 브리프를 작성하세요: ${e}`},{kind:"output",title:"다음 행동 정리",instruction:`${e} 실행 리포트를 정리하세요. 근거, 가정, 결정, 리스크, 다음 행동, 후속 flow 제안을 포함하세요.`}]:t==="ja"?[{kind:"research",title:"事業文脈を整理",instruction:`この目標の市場、顧客、競合、価格、チャネルを整理してください: ${e}`},{kind:"web-search",title:"根拠を集める",instruction:`この目標に重要な最新の根拠とURLを探し、リンクと不確実性を残してください: ${e}`},{kind:"analyze",title:"重要な機会を分析",instruction:`前の結果を使って、${e} のリスク、差別化、最短の収益化ルートを分析してください。`},{kind:"create",title:"提案を下書き",instruction:`分析をもとに、すぐ試せるオファー、ランディングコピー、実験案、実行ブリーフを作成してください: ${e}`},{kind:"output",title:"次の行動にまとめる",instruction:`${e} の実行レポートを作成し、根拠、仮説、判断、リスク、次の行動、後続flow案を含めてください。`}]:t==="zh"?[{kind:"research",title:"梳理业务背景",instruction:`梳理这个目标的市场、客户、竞争、价格和渠道背景: ${e}`},{kind:"web-search",title:"收集可信证据",instruction:`为这个目标寻找重要的最新证据和URL,并保留链接与不确定性: ${e}`},{kind:"analyze",title:"分析关键机会",instruction:`基于前面的结果,分析 ${e} 的风险、差异化和最快收入路径。`},{kind:"create",title:"起草商业提案",instruction:`把分析转成可以马上测试的报价、落地页文案、实验方案或执行简报: ${e}`},{kind:"output",title:"整理下一步行动",instruction:`整理 ${e} 的执行报告,包含证据、假设、决策、风险、下一步行动和后续flow建议。`}]:[{kind:"research",title:"Map the business context",instruction:`Map the market, customer, competitor, pricing, and channel context for this objective: ${e}`},{kind:"web-search",title:"Collect source-backed facts",instruction:`Find current source-backed facts and URLs that matter for this objective: ${e}. Preserve links and note uncertainty.`},{kind:"analyze",title:"Extract what matters",instruction:`Using the previous results, identify the important changes, risks, differentiation, and fastest path to revenue for: ${e}`},{kind:"create",title:"Draft the response",instruction:`Turn the analysis into a practical launch asset, offer, copy, experiment, or execution brief for: ${e}`},{kind:"output",title:"Turn it into next actions",instruction:`Compile the execution report for ${e}: source-backed evidence, assumptions, decision, risks, next actions, and a suggested follow-up flow.`}]}function Jg(e){const t=e.trim().toLowerCase();return t==="websearch"||t==="search"?"web-search":t==="image"?"image-generate":t==="video"?"video-generate":t==="task"?"ai-task":t||"ai-task"}function wc(e){return e.slice(0,-1).map((t,n)=>({from:n,fromPin:vc(t.kind),to:n+1,toPin:jc(e[n+1].kind)}))}function vc(e){switch(e){case"research":return"brief";case"web-search":return"summary";case"analyze":return"analysis";case"summarize":return"summary";case"create":return"draft";case"decision":return"decision";case"image-generate":return"image";case"video-generate":return"video";case"output":return"report";default:return"result"}}function jc(e){switch(e){case"research":return"goal";case"web-search":return"query";case"analyze":return"source";case"summarize":return"source";case"create":return"brief";case"decision":return"options";case"human-review":return"proposal";case"image-generate":return"prompt";case"video-generate":return"prompt";case"output":return"asset";default:return"input"}}function Zg(e){const t=e==null?void 0:e.trim();if(!t)return null;const n=t.indexOf("{"),r=t.lastIndexOf("}");return n>=0&&r>n?t.slice(n,r+1):null}function wr(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function go(e){return typeof e=="string"?e:""}function dd(e){if(typeof e=="number"&&Number.isInteger(e))return e;if(typeof e=="string"){const t=Number.parseInt(e,10);return Number.isInteger(t)?t:-1}return-1}function Ic(e){return!!(e&&/[\u1100-\u11ff\u3130-\u318f\uac00-\ud7af]/.test(e))}function Nc(e){return!!(e&&/[\u3040-\u30ff]/.test(e))}function Qg(e){return Nc(e)||!!(e&&/[\u4e00-\u9fff]/.test(e))}function Ac(e){return!!(e&&/[\u4e00-\u9fff]/.test(e))}const Ci=["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(","),eh=/^[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 th(e){if(eh.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 Mc(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 ah(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 Zr(e,t=new Date().toISOString()){return e&&!Number.isNaN(Date.parse(e))?e:t}function ki(e){return(e==null?void 0:e.trim().slice(0,90))||"Untitled Board"}function Tc(e){const t=Mc(e.content_json),n=Zr(e.updated_at??t.updatedAt);return{id:e.id,name:ki(e.title??t.name),updatedAt:n,createdAt:Zr(e.created_at,n),nodeCount:Array.isArray(t.nodes)?t.nodes.length:0,edgeCount:Array.isArray(t.edges)?t.edges.length:0,sourceKind:"cloud"}}function nh(e,t){var w,P;const n=Mc(e.content_json),r=Zr(e.updated_at??n.updatedAt),d=Number((w=n.viewState)==null?void 0:w.cursorX),c=Number((P=n.viewState)==null?void 0:P.cursorY),m=Number(e.last_cursor_x),y=Number(e.last_cursor_y),p=Number.isFinite(d)&&Number.isFinite(c),b=Number.isFinite(m)&&Number.isFinite(y);return{id:e.id,name:ki(e.title??n.name),nodes:Array.isArray(n.nodes)?n.nodes:[],edges:Array.isArray(n.edges)?n.edges:[],settings:n.settings??t,viewState:p?{cursorX:d,cursorY:c}:b?{cursorX:m,cursorY:y}:void 0,updatedAt:r,source:{kind:"cloud",boardId:e.id,loadedAt:new Date().toISOString(),snapshotFormat:"supabase.boards.content_json",originalNodeCount:Array.isArray(n.nodes)?n.nodes.length:0,renderedNodeCount:Array.isArray(n.nodes)?n.nodes.length:0}}}async function Si(e){var p;const t=uc(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 n=Os(e);if(!n)return f.emit("projectStorage.cloud.provider.skipped",{mode:"config-missing"}),{userId:null,config:t,reason:"missing-client"};const{data:r,error:d}=await n.auth.getSession();if(d||!r.session)return f.emit("projectStorage.cloud.provider.sessionMissing",{message:(d==null?void 0:d.message)??"missing-session"}),{userId:null,config:t,reason:"missing-session"};const{data:c,error:m}=await n.auth.getUser(),y=((p=c.user)==null?void 0:p.id)??null;return m||!y?(f.emit("projectStorage.cloud.provider.sessionMissing",{message:(m==null?void 0:m.message)??"missing-user"}),{userId:null,config:t,reason:"missing-user"}):{userId:y,config:t,reason:"provider-ready"}}async function oh(e){const t=await Si(e);if(!t.userId)return[];const n=Os(e);if(!n)return[];f.emit("projectStorage.cloud.list.requested");const{data:r,error:d}=await n.from("boards").select(Ci).eq("user_id",t.userId).order("updated_at",{ascending:!1}).limit(50);if(d)throw f.emit("projectStorage.cloud.provider.failed",{operation:"list",message:d.message}),d;const c=(r??[]).map(Tc);return f.emit("projectStorage.cloud.list.loaded",{count:c.length}),c}async function sh(e,t,n){const r=await Si(e);if(!r.userId)return null;const d=Os(e);if(!d)return null;f.emit("projectStorage.cloud.load.requested",{boardId:t});const{data:c,error:m}=await d.from("boards").select(Ci).eq("user_id",r.userId).eq("id",t).maybeSingle();if(m)throw f.emit("projectStorage.cloud.provider.failed",{operation:"load",boardId:t,message:m.message}),m;if(!c)return null;const y=nh(c,n);return f.emit("projectStorage.cloud.load.loaded",{boardId:t,nodes:y.nodes.length,edges:y.edges.length}),y}async function rh(e,t,n,r=null){var re,se;const d=await Si(e);if(!d.userId)return null;const c=Os(e);if(!c)return null;const m=th(t.id),y=new Date().toISOString(),p=ki(t.name),b=Number((r==null?void 0:r.x)??((re=t.viewState)==null?void 0:re.cursorX)??0),w=Number((r==null?void 0:r.y)??((se=t.viewState)==null?void 0:se.cursorY)??0),P={...t.viewState??{},cursorX:Number.isFinite(b)?b:0,cursorY:Number.isFinite(w)?w:0},N={...t,id:m,name:p,viewState:P,updatedAt:y},_={p_board_id:m,p_title:p,p_description:null,p_thumbnail_url:null,p_is_public:!1,p_created_at:null,p_updated_at:y,p_last_camera_x:n.x,p_last_camera_y:n.y,p_last_camera_z:n.scale,p_last_cursor_x:P.cursorX,p_last_cursor_y:P.cursorY,p_camera_bookmarks:JSON.stringify(t.settings.cameraBookmarks??{}),p_nodes:[],p_include_json_mirror:!0};f.emit("projectStorage.cloud.save.requested",{boardId:m,sourceBoardId:t.id,nodes:t.nodes.length,edges:t.edges.length});const{error:B}=await c.rpc("save_board_snapshot",_);if(B)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-rpc",boardId:m,message:B.message}),B;const F={content_json:ah(N),updated_at:y},{data:$,error:H}=await c.from("boards").update(F).eq("id",m).eq("user_id",d.userId).select(Ci).maybeSingle();if(H)throw f.emit("projectStorage.cloud.provider.failed",{operation:"save-json-mirror",boardId:m,message:H.message}),H;const W=$?Tc($):{id:m,name:p,updatedAt:y,createdAt:y,nodeCount:t.nodes.length,edgeCount:t.edges.length,sourceKind:"cloud"};return f.emit("projectStorage.cloud.save.saved",{boardId:W.id,nodes:W.nodeCount,edges:W.edgeCount}),W}function Qr(e){return e.length===0?{minX:0,minY:0,maxX:0,maxY:0}:e.reduce((t,n)=>({minX:Math.min(t.minX,n.x),minY:Math.min(t.minY,n.y),maxX:Math.max(t.maxX,n.x+n.width),maxY:Math.max(t.maxY,n.y+n.height)}),{minX:Number.POSITIVE_INFINITY,minY:Number.POSITIVE_INFINITY,maxX:Number.NEGATIVE_INFINITY,maxY:Number.NEGATIVE_INFINITY})}function ih(e,t={},n=Qr(e),r){if(e.length===0)return{after:new Map,boundsAfter:n};const d=vh(t.mode),c=jh(t.order),m=Ih(t.anchor),y=Nh(t.sizeMode),p=Math.max(0,t.gapX??24),b=Math.max(0,t.gapY??24),w=Math.max(1,t.maxColumns??12),P=ei(t.quantile??.75,.05,.95),N=e.map(lh),_=xh(N,c),B=_.map(fe=>fe.width),F=_.map(fe=>fe.height),$=Math.max(1,t.cellWidth??ud(B,P)),H=Math.max(1,t.cellHeight??ud(F,P)),W=Math.max(1,t.targetWidth??$),re=Math.max(1,t.targetHeight??H),se=yh(m,n);if(d==="grid"){gh(_,y,W,re,$,H);const fe=cd(t.columns,w,n.maxX-n.minX,$,p);ch(_,se.x,se.y,fe,$,H,p,b)}else if(d==="masonry"){hh(_,y==="preserve"?"uniformWidth":y,W);const He=cd(t.columns,w,n.maxX-n.minX,W,p);uh(_,se.x,se.y,He,W,p,b)}else d==="stripHorizontal"?(fh(_,y==="preserve"?"uniformHeight":y,re),mh(_,se.x,se.y,p,re)):(bh(_,y==="preserve"?"uniformWidth":y,W),ph(_,se.x,se.y,b,W));let Ie=new Map(_.map(fe=>[fe.id,dh(fe)]));return m==="selectionBoundsCenter"&&(Ie=kh(n,Ie)),t.snapToGrid&&(Ie=Sh(Ie,Math.max(1,t.gridSize??8))),{after:Ie,boundsAfter:Qr(Array.from(Ie.values()))}}function lh(e){return{...e,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function dh(e){return{x:e.x,y:e.y,width:Math.max(1,e.width),height:Math.max(1,e.height)}}function ch(e,t,n,r,d,c,m,y){e.forEach((p,b)=>{const w=Math.floor(b/r),P=b%r,N=t+P*(d+m),_=n+w*(c+y);p.x=N+(d-p.width)/2,p.y=_+(c-p.height)/2})}function uh(e,t,n,r,d,c,m){const y=Array.from({length:r},()=>0);for(const p of e){const b=wh(y),w=t+b*(d+c);p.x=w+(d-p.width)/2,p.y=n+y[b],y[b]+=p.height+m}}function mh(e,t,n,r,d){let c=t;for(const m of e)m.x=c,m.y=n+(d-m.height)/2,c+=m.width+r}function ph(e,t,n,r,d){let c=n;for(const m of e)m.x=t+(d-m.width)/2,m.y=c,c+=m.height+r}function gh(e,t,n,r,d,c){if(t==="fitCellDownOnly")for(const m of e){const y=Math.min(1,d/m.width,c/m.height);m.width*=y,m.height*=y}else t==="uniformWidth"?wi(e,n):t==="uniformHeight"&&Rc(e,r)}function hh(e,t,n){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,n/r.width);r.width*=d,r.height*=d}return}wi(e,n)}function fh(e,t,n){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,n/r.height);r.width*=d,r.height*=d}return}Rc(e,n)}function bh(e,t,n){if(t==="fitCellDownOnly"){for(const r of e){const d=Math.min(1,n/r.width);r.width*=d,r.height*=d}return}wi(e,n)}function wi(e,t){for(const n of e){if(n.width<=0)continue;const r=t/n.width;n.width=t,n.height=Math.max(1,n.height*r)}}function Rc(e,t){for(const n of e){if(n.height<=0)continue;const r=t/n.height;n.height=t,n.width=Math.max(1,n.width*r)}}function cd(e,t,n,r,d){if(typeof e=="number"&&e>0)return Math.round(ei(e,1,t));if(n<=1||r<=1)return 1;const c=Math.floor((n+d)/(r+d));return!Number.isFinite(c)||c<1?1:Math.round(ei(c,1,t))}function yh(e,t,n){return{x:t.minX,y:t.minY}}function xh(e,t){return t==="selectionOrder"?[...e].sort((n,r)=>n.selectionIndex-r.selectionIndex):Ch(e)}function Ch(e){const t=[...e].sort((p,b)=>p.y-b.y||p.x-b.x);if(t.length<=2)return t;const n=t.map(p=>p.height).sort((p,b)=>p-b),r=n[Math.floor(n.length/2)]??1,d=Math.max(16,r*.35),c=[];let m=[],y=Number.NaN;for(const p of t)m.length===0?(m=[p],y=p.y):Math.abs(p.y-y)<=d?(m.push(p),y=(y*(m.length-1)+p.y)/m.length):(c.push([...m].sort((b,w)=>b.x-w.x)),m=[p],y=p.y);return m.length>0&&c.push([...m].sort((p,b)=>p.x-b.x)),c.flat()}function kh(e,t){if(t.size===0)return t;const n=Qr(Array.from(t.values())),r=e.minX+(e.maxX-e.minX)/2,d=e.minY+(e.maxY-e.minY)/2,c=n.minX+(n.maxX-n.minX)/2,m=n.minY+(n.maxY-n.minY)/2,y=r-c,p=d-m;return new Map(Array.from(t.entries()).map(([b,w])=>[b,{...w,x:w.x+y,y:w.y+p}]))}function Sh(e,t){return new Map(Array.from(e.entries()).map(([n,r])=>[n,{...r,x:md(r.x,t),y:md(r.y,t)}]))}function ud(e,t){if(e.length===0)return 1;const n=[...e].sort((y,p)=>y-p),r=(n.length-1)*t,d=Math.floor(r),c=Math.min(n.length-1,d+1),m=r-d;return n[d]*(1-m)+n[c]*m}function wh(e){let t=0;for(let n=1;n<e.length;n+=1)e[n]<e[t]&&(t=n);return t}function md(e,t){return Math.round(e/t)*t}function vh(e){const t=Fs(e);return t==="grid"?"grid":t==="striphorizontal"||t==="striph"?"stripHorizontal":t==="stripvertical"||t==="stripv"?"stripVertical":"masonry"}function jh(e){return Fs(e)==="selectionorder"?"selectionOrder":"spatialReading"}function Ih(e){const t=Fs(e);return t==="selectionboundscenter"?"selectionBoundsCenter":t==="viewporttopleft"?"viewportTopLeft":"selectionBoundsTopLeft"}function Nh(e){const t=Fs(e);return t==="fitcelldownonly"?"fitCellDownOnly":t==="uniformwidth"?"uniformWidth":t==="uniformheight"?"uniformHeight":"preserve"}function Fs(e){return String(e??"").trim().toLowerCase().replace(/[^a-z0-9]/g,"")}function ei(e,t,n){return Math.min(n,Math.max(t,e))}const Lc=300,Pc=50*1024*1024,Ah=800;function ke(e){return typeof e=="string"?e.length*2:0}function Mh(e){let t=256;if(t+=ke(e.id),t+=ke(e.kind),t+=ke(e.title),t+=ke(e.body),t+=ke(e.result),t+=ke(e.imageUrl),t+=ke(e.assetUrl),t+=ke(e.sourceFilePath),t+=(e.tags??[]).reduce((n,r)=>n+ke(r),0),e.metadata)for(const[n,r]of Object.entries(e.metadata))t+=ke(n)+ke(r);return e.imageStack&&(t+=128+ke(e.imageStack.title),t+=e.imageStack.variants.reduce((n,r)=>n+96+ke(r.variantId)+ke(r.imageUrl)+ke(r.assetId)+ke(r.title)+ke(r.caption),0)),t}function Th(e){let t=1024+ke(e.id)+ke(e.name)+ke(e.updatedAt);return t+=e.nodes.reduce((n,r)=>n+Mh(r),0),t+=e.edges.length*128,t+=Object.entries(e.settings).reduce((n,[r,d])=>n+ke(r)+ke(typeof d=="string"?d:JSON.stringify(d)),0),t}function Ec(e,t={}){var n,r;return{board:e,description:((n=t.description)==null?void 0:n.trim())||"Board change",mergeKey:((r=t.mergeKey)==null?void 0:r.trim())||null,timestampMs:t.timestampMs??Date.now(),estimatedBytes:Th(e)}}function pd(e,t={}){const n=t.maxEntries??Lc,r=t.maxBytes??Pc;let d=e.slice(Math.max(0,e.length-n)),c=d.reduce((m,y)=>m+y.estimatedBytes,0);for(;d.length>1&&c>r;){const[m,...y]=d;c-=(m==null?void 0:m.estimatedBytes)??0,d=y}return d}function za(e,t,n={}){const r=Ec(t,n),d=n.mergeWindowMs??Ah,c=e.slice(),m=c.at(-1);return m&&r.mergeKey&&m.mergeKey===r.mergeKey&&r.timestampMs-m.timestampMs<d?(c[c.length-1]={...m,description:r.description,timestampMs:r.timestampMs,estimatedBytes:Math.max(m.estimatedBytes,r.estimatedBytes)},pd(c,n)):(c.push(r),pd(c,n))}function Rh(e,t,n={}){const r=Ec(t,n),d=n.maxEntries??Lc,c=n.maxBytes??Pc;let m=[r,...e].slice(0,d),y=m.reduce((p,b)=>p+b.estimatedBytes,0);for(;m.length>1&&y>c;){const p=m.at(-1);y-=(p==null?void 0:p.estimatedBytes)??0,m=m.slice(0,-1)}return m}function Us(e,...t){const n=e==null?void 0:e.metadata;if(!n)return"";for(const r of t){const d=n[r];if(typeof d=="string"&&d.trim())return d.trim()}return""}function ho(e,t){return!!Us(e,t)}function _c(e){if(!e||!e.trim())return!1;const t=e.trim();return/^(https?:|blob:|data:|file:)/i.test(t)}function Bc(e){if(!e)return"";const t=Us(e,"OriginalPath");if(t)return t;const n=String(e.body||"").trim();return _c(n)?"":n}function Dc(e){return e?Bc(e)||String(e.sourceFilePath||"").trim()||String(e.assetUrl||"").trim()||String(e.imageUrl||"").trim()||String(e.body||"").trim():""}function Oc(e){return Us(e,"ThumbnailUrl","thumbnailUrl")}function Lh(e){if(!e||e.kind!=="image")return!1;if(ho(e,"ImageGenerationProvider")||ho(e,"GeneratedImageSourceWidth")||ho(e,"GeneratedImageSourceHeight")||ho(e,"CodexImageQuality")||ho(e,"ImageRouterRevisedPrompt"))return!0;const t=Us(e,"RequestedMediaOperation");return["text2image","image2image","inpaint"].includes(t.toLowerCase())}function vi(e){if(!e)return"";if(e.kind==="image"||e.kind==="mask"){const t=Lh(e)?Bc(e):"",n=Oc(e),r=String(e.body||"").trim();return t||n||String(e.imageUrl||"").trim()||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()||(_c(r)?r:"")}return Dc(e)||String(e.assetUrl||"").trim()||String(e.sourceFilePath||"").trim()}function $c(e){if(!e)return"";const t=Dc(e)||e.title||e.kind;return String(t||"").replace(/\\/g,"/").replace(/\/+$/,"").split("/").filter(Boolean).pop()||e.title||e.kind}const Ph=2048,Eh=16e3,vr=1024,jr=64,_h=2048,Ir=3,Bh=16,Dh=256,Oh=new Set(["text","note","memo","markdown","code","directory"]),$h=/[\p{L}\p{M}\p{N}]{2,}/gu,gd=4,Fh=8,hd=1.35;function Uh(e){return Oh.has(String(e||"").trim().toLowerCase())}function zh(e){const t=e.map(Wh),n=new Map,r=new Map,d=new Map,c=new Map;for(const m of t){n.set(m.id,m);for(const y of m.tokens)Nr(r,y,m.id);for(const y of m.prefixes)Nr(d,y,m.id);for(const y of m.ngrams)Nr(c,y,m.id)}return{documents:t,documentById:n,tokenIndex:r,prefixIndex:d,ngramIndex:c}}function Hh(e,t,n={}){const r=Math.max(1,Math.trunc(Number(n.limit||30))),d=Sn(t),c=fd(e,0,0,n.viewport,0);if(!d)return{hits:[],profile:c};const m=Array.from(Fc(d)),y=Array.from(Uc(m)),p=Hc(d),b=Array.from(zc(p)),w=new Map;for(const F of m)Ar(e.tokenIndex,F,w,8);for(const F of y)Ar(e.prefixIndex,F,w,F.length<=3?4:2);for(const F of b)Ar(e.ngramIndex,F,w,1.15);const P=Kh(e,w,r),N=Xh(n.allowedContentTypes),_=[];for(const F of P){const $=e.documentById.get(F);if(!$||N&&!N.has($.contentType))continue;const H=Yh($,d,m,b);if(H<=0)continue;const W=Gh($,n.viewport??null);_.push({nodeId:$.id,score:H+W,textScore:H,viewportBoost:W})}_.sort((F,$)=>$.score-F.score||F.nodeId.localeCompare($.nodeId));const B=_.slice(0,r);return{hits:B,profile:fd(e,P.length,B.length,n.viewport,B.filter(F=>F.viewportBoost>0).length)}}function Sn(e){const t=String(e??"");if(!t.trim())return"";let n=t;try{n=t.normalize("NFKC")}catch{n=t}n=n.toLowerCase();let r="",d=!1;for(const c of n){if(/\s/u.test(c)){d||(r+=" ",d=!0);continue}qh(c)||(r+=c,d=!1)}return r.trim()}function Fc(e){return new Set(e.match($h)??[])}function Uc(e){const t=new Set;for(const n of e){if(!n.trim())continue;const r=Math.min(8,n.length);for(let d=2;d<=r;d+=1)t.add(n.slice(0,d))}return t}function zc(e){const t=new Set;if(!e.trim())return t;if(e.length<=Ir)return t.add(e),t;for(let n=0;n<=e.length-Ir;n+=1)t.add(e.slice(n,n+Ir));return t}function Wh(e){const t=String(e.kind??"").trim().toLowerCase(),n=Ya(e.prompt??e.title,Ph),r=Uh(t)?Ya(e.response??e.body,Eh):"",d=Vh(e.metadata,e.tags,e.metadataText),c=Ya(e.sourceFilePath||e.assetUrl,_h),m=Sn(n),y=Sn(r),p=Sn(d),b=Sn(c),w=Sn(t),P=[m,p,b,y,w].filter(Boolean).join(" "),N=Fc(P);return{id:String(e.id),contentType:t,normalizedPrompt:m,normalizedResponse:y,normalizedMetadata:p,normalizedSourcePath:b,normalizedContentType:w,tokens:N,prefixes:Uc(N),ngrams:zc(Hc(P)),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 Vh(e,t,n){const r=[];let d=0;if(e)for(const[c,m]of Object.entries(e)){if(d>=jr)break;!String(c??"").trim()&&!String(m??"").trim()||(r.push(Ya(c,128)),String(m??"").trim()&&r.push(Ya(m,vr)),d+=1)}return d<jr&&(t!=null&&t.length)&&(r.push("tags",Ya(t.join(" "),vr)),d+=1),d<jr&&(n!=null&&n.trim())&&r.push("metadata",Ya(n,vr)),r.join(" ")}function Yh(e,t,n,r){let d=0;e.normalizedPrompt===t?d+=120:fo(e.normalizedPrompt,t)&&(d+=54),fo(e.normalizedMetadata,t)&&(d+=26),fo(e.normalizedSourcePath,t)&&(d+=18),fo(e.normalizedResponse,t)&&(d+=14),fo(e.normalizedContentType,t)&&(d+=8);for(const c of n)e.tokens.has(c)&&(d+=7),e.normalizedPrompt.startsWith(c)&&(d+=10);for(const c of r)e.ngrams.has(c)&&(d+=.85);return d}function Gh(e,t){if(!t)return 0;const n=e.x+Math.max(1,e.width)/2,r=e.y+Math.max(1,e.height)/2,d=Math.abs(n-t.centerX)/Math.max(1,t.halfWidth),c=Math.abs(r-t.centerY)/Math.max(1,t.halfHeight),m=Math.sqrt(d*d+c*c);if(m<=1)return gd+(1-m)*Fh;if(m<=hd){const y=1-(m-1)/Math.max(.001,hd-1);return Math.max(0,y)*(gd*.75)}return 0}function Kh(e,t,n){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(n*Bh,Dh)).map(([r])=>r)}function Xh(e){if(!e)return null;const t=new Set(Array.from(e,n=>String(n||"").trim().toLowerCase()).filter(Boolean));return t.size>0?t:null}function fd(e,t,n,r,d){return{documentCount:e.documents.length,candidateCount:t,rankedCount:n,viewportBoosted:!!r,boostedCount:d,indexedTokenCount:e.tokenIndex.size,indexedPrefixCount:e.prefixIndex.size,indexedNGramCount:e.ngramIndex.size}}function Nr(e,t,n){const r=e.get(t);if(r){r.add(n);return}e.set(t,new Set([n]))}function Ar(e,t,n,r){const d=e.get(t);if(d)for(const c of d)n.set(c,(n.get(c)??0)+r)}function Hc(e){let t="";for(const n of e)/\s/u.test(n)||(t+=n);return t}function Ya(e,t){const n=String(e??"");return n.length<=t?n:n.slice(0,t)}function fo(e,t){return!!(e&&t&&e.includes(t))}function qh(e){const t=e.codePointAt(0)??0;return t<=31||t>=127&&t<=159}const Jh=2147483647,Zh="LocalBridge access is enabled, but the bridge is not reachable. Restart LocalBridge, allow Chrome local-network access, then reload MindCanvas.",Qh="Local storage is unavailable in the hosted app until browser local storage or LocalBridge access is available.",ef="Local storage is unavailable. Check the browser-local storage state or LocalBridge connection.",tf="Cloud projects are unavailable until Supabase and Cloudflare R2 are configured.",af="Login is required before cloud projects can be used.",nf="Cloud projects are unavailable.";function of(e){return e.bridgeProviderConfigured||e.browserProviderConfigured||e.embeddedProviderConfigured}function ti(e,t=!0){const n={isAvailable:!1,bridgeReachable:!1,browserLocalAvailable:!1,embeddedLocalAvailable:!1,providerKind:"none",canBrowseWorkspace:!1};return e.bridgeProviderConfigured&&e.bridgeReachable?{...n,isAvailable:!0,bridgeReachable:!0,providerKind:"bridge",canBrowseWorkspace:!0}:e.hostedWebApp&&e.hostedLocalBridgeAccessEnabled&&e.bridgeProviderConfigured?{...n,providerKind:"bridge"}:e.browserProviderConfigured&&(e.browserLocalAvailable||t&&e.browserLocalAvailableWhenEmpty===!0)?{...n,isAvailable:!0,browserLocalAvailable:!0,providerKind:"browser"}:e.embeddedProviderConfigured&&e.supportsEmbeddedLocal?{...n,isAvailable:!0,embeddedLocalAvailable:!0,providerKind:"embedded"}:n}function sf(e){return ti(e,!1).isAvailable?"local":ji(e)?"cloud":ti(e,!0).isAvailable?"local":e.cloudConfigured?"cloud":"local"}function ji(e){return e.cloudConfigured&&e.cloudSessionAvailable}function rf(e,t){return t.providerKind==="bridge"&&!t.bridgeReachable?Zh:e.hostedWebApp?Qh:ef}function lf(e){return e.cloudConfigured?ji(e)?nf:af:tf}function df(e){var w,P,N;const t=ji(e),n=ti(e,!0),r=of(e),d=e.cloudConfigured,c=n.isAvailable,m=t;let y=e.storedMode??sf(e);y==="cloud"&&(!d||!m&&c)?y=c?"local":"cloud":y==="local"&&(!r&&d||!c&&m)&&(y="cloud");const p=e.cloudAccess,b=((w=p==null?void 0:p.denialReason)==null?void 0:w.trim())||void 0;return{currentMode:y,showLocalTab:r,showCloudTab:d,isLocalAvailable:n.isAvailable,isCloudAvailable:t,requiresCloudSignIn:e.cloudConfigured&&!t,canUseLocalProjects:c,canBrowseLocalWorkspace:n.canBrowseWorkspace,localProviderKind:n.providerKind,canUseCloudProjects:m,canSyncLocalToCloud:c&&m,cloudPlanKey:((P=p==null?void 0:p.planKey)==null?void 0:P.trim())||"free",cloudEntitlementStatus:((N=p==null?void 0:p.entitlementStatus)==null?void 0:N.trim())||(p?"active":"inactive"),currentCloudBoardCount:(p==null?void 0:p.currentBoardCount)??0,cloudBoardLimit:(p==null?void 0:p.cloudBoardLimit)??Jh,lockedCloudBoardCount:(p==null?void 0:p.lockedBoardCount)??0,canCreateCloudBoards:(p==null?void 0:p.canCreateBoard)??m,canUseManagedAi:(p==null?void 0:p.canUseManagedAi)??!1,canGenerateImage:(p==null?void 0:p.canGenerateImage)??!1,canUseContextPack:(p==null?void 0:p.canUseContextPack)??!1,cloudLimitMessage:b,localStatusMessage:n.isAvailable?void 0:rf(e,n),cloudStatusMessage:m?void 0:lf(e)}}function cf(){const e=new Error("Queued operation was cancelled before it started.");return e.name="AbortError",e}class uf{constructor(){Pl(this,"tails",new Map)}isBusy(t){return this.tails.has(t)}enqueue(t,n,r){if(typeof n!="function")throw new TypeError("KeyedAsyncQueue operation is required.");const d=this.tails.get(t)??Promise.resolve();let c;return c=(async()=>{try{try{await d}catch{}if(r!=null&&r.aborted)throw cf();return await n(r)}finally{this.tails.get(t)===c&&this.tails.delete(t)}})(),this.tails.set(t,c),c}clear(t){if(typeof t>"u"){this.tails.clear();return}this.tails.delete(t)}}const mf=/^data:image\//i;function pf(e){const t=String(e||"").trim();if(!t)return{src:null,reason:"empty",urlKind:"empty"};const n=t.toLowerCase();return mf.test(t)?{src:t,reason:null,urlKind:"data"}:n.startsWith("blob:")?{src:t,reason:null,urlKind:"blob"}:n.startsWith("https://")?{src:t,reason:null,urlKind:"https"}:n.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 Mr({src:e,alt:t="",className:n="",testId:r="secure-image",traceId:d,kind:c="image",title:m}){const y=g.useMemo(()=>pf(e),[e]),[p,b]=g.useState(y.src?"loading":"blocked");g.useEffect(()=>{const _=y.src?"loading":"blocked";b(_),y.src||f.emit("secureImage.blocked",{id:d,kind:c,reason:y.reason,urlKind:y.urlKind})},[c,y.reason,y.src,y.urlKind,d]);const w=()=>{b("loaded"),f.emit("secureImage.loaded",{id:d,kind:c,urlKind:y.urlKind})},P=()=>{b("error"),f.emit("secureImage.error",{id:d,kind:c,urlKind:y.urlKind})},N=p==="blocked"?`Image blocked: ${y.reason||"unsupported source"}`:"Image failed to load";return o.jsxs("div",{className:`secure-image secure-image--${p} ${n}`.trim(),"data-testid":r,"data-secure-image-state":p,"data-secure-image-kind":c,title:p==="loaded"?m:N,children:[y.src&&o.jsx("img",{src:y.src,alt:t,loading:"lazy",decoding:"async",draggable:!1,onLoad:w,onError:P}),p==="loading"&&o.jsx("span",{className:"secure-image__loading","aria-hidden":"true",children:o.jsx("span",{})}),(p==="blocked"||p==="error")&&o.jsx("span",{className:"secure-image__fallback",role:"img","aria-label":N,children:p==="blocked"?o.jsx(Up,{size:18}):o.jsx(zp,{size:18})})]})}const gf={note:Ts,text:wt,"ai-task":vn,image:In,mask:In,video:Nn,embed:An,code:jn,markdown:wt,"csv-table":wt,memo:Ts,pdf:wt,file:Yr,directory:Hp,"template-launcher":wt,"remote-monitor":Ms,"remote-control":Ms},Tr=[{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."}],bd=500,hf=48,ff=new Set(["mindcanvasagent","agentcommand"]),bf=new Set(["codenote","code-note"]),yf=["multidesktopmonitor","remotehubmonitor","remotefleetmonitor","smartviewmonitor"],xf=["remotedevice","remotefleetdevice","remotecontrol"],Cf=["top","right","bottom","left"];function kf(e){const t=Tn(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),n=Tn(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=Tn(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-monitor"||t==="remotefleetmonitor"||n==="fleet-monitor"||r==="remote-fleet@1"||Vc(e,["RemoteFleetViewMode","RemoteFleetHubStatus","RemoteFleetDevicesJson","RemoteFleetDeviceCount","RemoteFleetConnectedDeviceCount","RemoteFleetProjectionMode","RemoteFleetCanvasPagination","RemoteHub","RemoteRoute","RemotePage","RemoteVisibleBudget"])||Wc(e,yf,["remote","monitor"])}function Sf(e){const t=Tn(e,"SemanticType","semanticType","RemoteFleetSemanticType").trim().toLowerCase(),n=Tn(e,"RemoteFleetNodeRole","remoteFleetNodeRole").trim().toLowerCase(),r=Tn(e,"RemoteFleetSchemaVersion","remoteFleetSchemaVersion").trim().toLowerCase();return e.kind==="remote-control"||t==="remotefleetdevice"||n==="fleet-device"||r==="remote-fleet-device@1"||Vc(e,["RemoteFleetDeviceId","RemoteFleetDeviceName","RemoteFleetDevicePlatform","RemoteFleetDeviceConnected","RemoteFleetDeviceCanControl","RemoteFleetSourceMonitorNodeId"])||Wc(e,xf,["remote","control"])}function Wc(e,t,n){const r=(e.tags??[]).map(y=>y.trim().toLowerCase()).filter(Boolean),d=n.every(y=>r.includes(y)),m=[e.title,e.body,e.sourceFilePath,e.assetUrl,...r].join(" ").toLowerCase().replace(/[^a-z0-9]+/g,"");return d||t.some(y=>m.includes(y))}function Tn(e,...t){const n=e.metadata??{};for(const d of t){const c=n[d];if(c!=null)return String(c)}const r=new Set(t.map(d=>d.toLowerCase()));for(const[d,c]of Object.entries(n))if(r.has(d.toLowerCase())&&c!==void 0&&c!==null)return String(c);return""}function Vc(e,t){const n=e.metadata??{},r=new Set(t.map(d=>d.toLowerCase()));return Object.entries(n).some(([d,c])=>r.has(d.toLowerCase())&&c!==void 0&&c!==null&&String(c).trim()!=="")}const ai=[{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"}],wf=g.memo(function({node:t,selected:n,selectionCount:r,pulsing:d,connectionDraft:c,onSelect:m,onDragStart:y,onResizeStart:p,onPatch:b,onDelete:w,onDuplicate:P,onRun:N,onPin:_,onConnectorDragStart:B,onOpenResult:F,onToggleAiReference:$,onCopyNode:H,onCopyEmbedReference:W,onFitNodeHeight:re,onToggleNodeExpanded:se,onToggleWordWrap:Ie,onStageCompany:fe,onOpenCompanyGraph:He,onSyncCompanyGoal:jt,onRefreshCompany:ot,onSetCompanyStatus:V,onRemoveCompany:G,onOpenAsset:ie,onOpenDirectorySettings:ae,onScanDirectory:mt,onCreateRemoteControl:z,onGenerateTemplateCard:It}){var Vn,Do,lt,Ht,Ra,rn,ua,ln,ne,Xe,dn,Yn,v,K,oe,Oo,ze,Wt,Vt,cn,un,Gn,Kn,mn,Xn,La,qn,pn,Pa,ma,Oe,Ee,Ea,_a,gn,Jn;const Ze=String(((Vn=t.metadata)==null?void 0:Vn.AutomationNodeKind)||((Do=t.metadata)==null?void 0:Do.AutomationTemplateKey)||((lt=t.metadata)==null?void 0:lt.AutomationInferredKind)||"").trim().toLowerCase(),_e=String(((Ht=t.metadata)==null?void 0:Ht.SemanticType)||((Ra=t.metadata)==null?void 0:Ra.semanticType)||"").trim().toLowerCase(),$e=t.kind==="memo"&&ff.has(_e),Me=t.kind==="memo"&&bf.has(_e),Bt=String(((rn=t.metadata)==null?void 0:rn.AgentCommandStatus)||"Draft"),U=String(((ua=t.metadata)==null?void 0:ua.AgentCommandMode)||"Task"),Be=String(((ln=t.metadata)==null?void 0:ln.AgentCommandRequestedRole)||"Researcher"),ea=String(((ne=t.metadata)==null?void 0:ne.CodeNoteStatus)||"Draft"),Xa=String(((Xe=t.metadata)==null?void 0:Xe.CodeNoteSyncState)||"Unlinked"),ta=String(((dn=t.metadata)==null?void 0:dn.CodeNoteKind)||"Feature"),qa=$e?vn:Me?jn:Ze==="image-generate"?In:Ze==="video-generate"?Nn:gf[t.kind],En=c&&c.from!==t.id,_n=t.kind==="ai-task",Te=t.kind==="pdf"||t.kind==="file"||t.kind==="directory",Ja=kf(t),aa=Sf(t),De=Ja||aa,Re=Ja?"monitor":aa?"control":"",pe=r>1,zs=_n?"result":"context",We=((Yn=c==null?void 0:c.target)==null?void 0:Yn.id)===t.id?c.target.side:null,na=(c==null?void 0:c.from)===t.id,Qe=t.kind==="template-launcher"||String(((v=t.metadata)==null?void 0:v.semanticType)||((K=t.metadata)==null?void 0:K.SemanticType)||"").toLowerCase()==="templatelauncher",pt=t.kind==="video",de=t.kind==="embed",Le=t.kind==="mask",Ve=t.kind==="memo",Ao=t.kind==="markdown",be=t.kind==="csv-table",Fe=Ve?Lf(t):null,oa=g.useRef(null),Dt=pt?Yc(t):"",Ne=pt?Ef(t):"",gt=de?_f(t):"",Ue=de?Bf(t):"",Mo=de?Df(t,gt):"",Za=de?Of(t):"",Ae=(((oe=t.imageStack)==null?void 0:oe.variants)??[]).filter(x=>!!x.imageUrl),Ye=Ae.find(x=>{var D;return x.variantId===((D=t.imageStack)==null?void 0:D.activeVariantId)})??Ae[0]??null,Sa=t.kind==="image"||Le?(Ye==null?void 0:Ye.imageUrl)||vi(t):"",To=Ye?Ae.findIndex(x=>x.variantId===Ye.variantId):-1,Bn=!Sa&&!Te&&!De&&!Qe&&!pt&&!de,Ro=Bn&&!Ve,st=t.isExpanded===!1&&Number(t.originalHeight??0)>t.height+1,Dn=!De&&!["image","mask","video","embed","pdf","file","directory","template-launcher","remote-monitor","remote-control"].includes(t.kind),rt=t.aiEnabled!==!1,Ge=Pf(t),et=!!(t.isChunkedText||((Oo=t.metadata)==null?void 0:Oo.IsChunkedText)==="true"),wa=Number(t.totalLineCount??((ze=t.metadata)==null?void 0:ze.TotalLineCount)??0),Lo=t.sourceFilePath||((Wt=t.metadata)==null?void 0:Wt.FileName)||t.title,ye=et?o.jsxs("div",{className:"node-chunked-text-state","data-testid":"node-chunked-text-state",title:Lo,children:[o.jsx(wt,{size:12}),o.jsx("strong",{children:"Chunked text"}),Number.isFinite(wa)&&wa>0&&o.jsxs("span",{children:[wa.toLocaleString()," lines"]})]}):null,sa=t.kind==="directory"?(Vt=t.metadata)==null?void 0:Vt.Include:null,Qa=t.kind==="directory"?(cn=t.metadata)==null?void 0:cn.Exclude:null,On=t.kind==="directory"?(un=t.metadata)==null?void 0:un.DirectoryFileCount:null,Pe=t.kind==="directory"?(Gn=t.metadata)==null?void 0:Gn.DirectoryDirCount:null,Nt=t.kind==="directory"?(Kn=t.metadata)==null?void 0:Kn.DirectoryLastScanUtc:null,[en,tn]=g.useState(!1),[an,Ke]=g.useState(null),[Hs,$n]=g.useState(((mn=t.metadata)==null?void 0:mn.CompanyExecutionMode)||"Auto"),[va,nn]=g.useState(((Xn=t.metadata)==null?void 0:Xn.CompanySubAgents)!=="false"),[ra,ja]=g.useState(!1),[At,on]=g.useState(null),Ia=g.useMemo(()=>be?Nf(t.body,At):null,[At,be,t.body]),ce=g.useMemo(()=>Qe?ic(t.body):null,[Qe,t.body]),ht=(ce==null?void 0:ce.options.find(x=>x.id===ce.selectedOptionId))??(ce==null?void 0:ce.options[0])??null,ia=ip(ce),Ot=Tr.find(x=>x.key===Hs)||Tr[0],$t=String(((La=t.metadata)==null?void 0:La.CompanyStatus)||(t.companyMode?"Staged":"")).trim(),Ft=$t.toLowerCase(),la=Ft==="paused",ft=Ft==="archived",Ws=x=>{x.stopPropagation();const D=x.currentTarget.getBoundingClientRect();Ke(jf(D)),tn(le=>!le)},Vs=x=>{x.stopPropagation(),fe(t.id,{executionMode:Ot.key,enableSubAgents:va}),tn(!1)},Po=x=>{x.stopPropagation(),He(t.id)},Na=(x,D)=>{D.stopPropagation();const le=Ae.find(Yt=>Yt.variantId===x);!le||!t.imageStack||le.variantId===t.imageStack.activeVariantId||(f.emit("node.imageStack.variant",{nodeId:t.id,variantId:le.variantId,variantCount:Ae.length}),b(t.id,{imageUrl:le.imageUrl,imageStack:{...t.imageStack,activeVariantId:le.variantId,variants:Ae,updatedAtUtc:new Date().toISOString()},metadata:{...t.metadata??{},ImageStackActiveVariantId:le.variantId}}))},Ys=(x,D)=>{if(D.stopPropagation(),!!Ve){if((Fe==null?void 0:Fe.key)===x){ja(!1);return}f.emit("node.memoColor.changed",{id:t.id,colorKey:x}),b(t.id,{metadata:{...t.metadata??{},memoColor:x,memoColorIsCustom:"true"}}),ja(!1)}},Fn=x=>{var xt,hn;if(x.stopPropagation(),!$e)return;const D=(t.body||t.title||"Agent command objective").trim(),le=["Clarify the objective and constraints.","Collect linked canvas context or code notes.","Draft an execution plan before external adapter use."],Yt=["canvas-context","agent-command-planning","adapter-gated-execution"],yt=["Canvas.ListAgentCommands","Canvas.UpdateAgentCommand","Canvas.PlanAgentCommand","Canvas.SetAgentCommandState"],dt=["MindCanvasAgent",U,Be],pa=["Local React plan staged for this Agent Command.",`Role: ${Be}`,`Mode: ${U}`,`Objective: ${D.slice(0,220)}`,"External execution remains adapter-gated until LocalBridge/agent runtime is available."].join(`
|
|
3
3
|
`);f.emit("mindcanvas.agentCommand.planned",{id:t.id,mode:U,requestedRole:Be,adapterState:((xt=t.metadata)==null?void 0:xt.AdapterState)??"adapter-gated"}),b(t.id,{tags:["Agent Command",Be,"Planned"],metadata:{...t.metadata??{},AgentCommandStatus:"Planned",AgentCommandPlannerSummary:pa,AgentCommandPlanSteps:JSON.stringify(le),AgentCommandPlannedSkills:JSON.stringify(Yt),AgentCommandPlannedTools:JSON.stringify(yt),AgentCommandPlannedConcepts:JSON.stringify(dt),AgentCommandLastExplorationPhase:"planned-local",AdapterState:((hn=t.metadata)==null?void 0:hn.AdapterState)??"adapter-gated"}})},Aa=x=>{var yt,dt;if(x.stopPropagation(),!$e)return;const D=new Date().toISOString(),le=[`Agent Command: ${t.title||"Agent"}`,`Status: Completed locally at ${D}`,"","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(`
|
|
4
4
|
`),Yt=[`${D} Local React execution staged.`,`${D} Adapter gated; no external tools invoked.`];f.emit("mindcanvas.agentCommand.executed.local",{id:t.id,mode:U,requestedRole:Be,adapterState:((yt=t.metadata)==null?void 0:yt.AdapterState)??"adapter-gated"}),b(t.id,{status:"done",result:le,tags:["Agent Command",Be,"Completed"],metadata:{...t.metadata??{},AgentCommandStatus:"Completed",AgentCommandLastExecutedAtUtc:D,AgentCommandConsoleLogs:JSON.stringify(Yt),AgentCommandResultLinks:JSON.stringify([]),AdapterState:((dt=t.metadata)==null?void 0:dt.AdapterState)??"adapter-gated"}})},Ma=(x,D,le,Yt)=>{var dt,pa,xt;if(x.stopPropagation(),!Me)return;const yt=D==="Implemented"?JSON.stringify([`local-code-note://${t.id}/implementation-handoff.md`]):((dt=t.metadata)==null?void 0:dt.CodeNoteOutputArtifacts)||"[]";f.emit("mindcanvas.codeNote.state",{id:t.id,status:D,syncState:le,reason:Yt,adapterState:((pa=t.metadata)==null?void 0:pa.AdapterState)??"local-canvas-only"}),b(t.id,{tags:["Code Note",D,le],metadata:{...t.metadata??{},CodeNoteStatus:D,CodeNoteSyncState:le,CodeNoteOutputArtifacts:yt,...D==="Implemented"||D==="Reviewed"?{CodeNoteLastAppliedAtUtc:new Date().toISOString()}:{},AdapterState:((xt=t.metadata)==null?void 0:xt.AdapterState)??"local-canvas-only"}})},Ut=()=>{nn(x=>!x)},Eo=async x=>{if(x.stopPropagation(),!Ne||!oa.current){f.emit("node.video.unavailable",{id:t.id,reason:Ne?"element-missing":"source-missing"});return}try{await oa.current.play(),f.emit("node.video.play",{id:t.id,sourceKind:xd(Ne)})}catch(D){f.emit("node.video.unavailable",{id:t.id,reason:D instanceof Error?D.message:String(D)})}},Ta=x=>{if(x.stopPropagation(),!Ne||!oa.current){f.emit("node.video.unavailable",{id:t.id,reason:Ne?"element-missing":"source-missing"});return}oa.current.pause(),f.emit("node.video.pause",{id:t.id,sourceKind:xd(Ne)})},da=x=>{x.stopPropagation(),gt&&W(t.id,gt)},Un=x=>{b(t.id,{body:JSON.stringify(x),metadata:{...t.metadata??{},templateLauncherSelectedOptionId:x.selectedOptionId??""}})},it=(x,D)=>{if(D.stopPropagation(),!ce)return;const le=cp(ce,x);Un(le),f.emit("templateCard.option.select",{nodeId:t.id,optionId:le.selectedOptionId??null})},zn=(x,D)=>{if(!ce)return;const le=up(ce,x,D);Un(le),f.emit("templateCard.input.patch",{nodeId:t.id,key:x})},zt=x=>{x.stopPropagation(),!(!ce||ia)&&It(t.id,ce.selectedOptionId??null,ce.inputValues)},ca=Dn&&en?o.jsxs("div",{className:"node-company-launcher","data-testid":"node-company-launcher",style:an?{left:an.left,top:an.top}:void 0,onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[o.jsx("div",{className:"node-company-launcher__eyebrow",children:"Run As Company"}),o.jsx("h4",{children:"Turn this note into a background AI company"}),o.jsx("p",{children:"Pick the operating mode to stage on this node. External CompanyCore execution stays adapter-gated."}),o.jsx("div",{className:"node-company-mode-list",children:Tr.map(x=>o.jsxs("button",{type:"button",className:x.key===Ot.key?"is-selected":"","data-company-mode":x.key,onClick:()=>$n(x.key),children:[o.jsx("strong",{children:x.label}),o.jsx("span",{children:x.description})]},x.key))}),o.jsxs("button",{type:"button",className:"node-company-subagents","aria-pressed":va,onClick:x=>{x.stopPropagation(),Ut()},children:[o.jsx("span",{className:"node-company-toggle-indicator","aria-hidden":"true",children:va?"On":"Off"}),o.jsxs("span",{children:[o.jsx(mc,{size:13}),"Enable sub-agents for exploration waves and specialist handoff"]})]}),o.jsxs("div",{className:"node-company-launcher__actions",children:[o.jsx("button",{type:"button",className:"btn btn-ghost",onClick:()=>tn(!1),children:"Cancel"}),o.jsx("button",{type:"button",className:"btn btn-primary","data-testid":"node-company-run-confirm",onClick:Vs,children:"Stage Company"})]})]}):null,Hn={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=o.jsxs(o.Fragment,{children:[Ro&&o.jsx("button",{type:"button",title:rt?"Disable AI reference":"Enable AI reference","aria-label":rt?"Disable AI reference":"Enable AI reference",className:rt?"is-active-ai":"is-inactive-ai",onPointerDown:x=>x.stopPropagation(),onClick:()=>$(t.id),children:o.jsx(Wp,{size:13})}),Ve&&o.jsx("button",{type:"button",title:"Change memo color","aria-label":"Change memo color","aria-pressed":ra,className:"is-memo-color-action","data-testid":"node-memo-color-open",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),ja(D=>!D)},children:o.jsx(pc,{size:13})}),t.kind==="code"&&o.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:()=>Ie(t.id),children:o.jsx(Vp,{size:13})}),o.jsx("button",{type:"button",title:Sa?"Copy image to clipboard":"Copy content","aria-label":Sa?"Copy image to clipboard":"Copy content",onPointerDown:x=>x.stopPropagation(),onClick:()=>H(t.id),children:o.jsx(wo,{size:13})}),o.jsx("button",{type:"button",title:"Duplicate node","aria-label":"Duplicate node","data-testid":"node-duplicate",onPointerDown:x=>x.stopPropagation(),onClick:()=>P(t.id),children:o.jsx(gc,{size:13})}),Bn&&o.jsx("button",{type:"button",title:"Fit text height","aria-label":"Fit text height",onPointerDown:x=>x.stopPropagation(),onClick:()=>re(t.id),children:o.jsx(Yp,{size:13})}),Bn&&o.jsx("button",{type:"button",title:st?"Expand node":"Collapse node","aria-label":st?"Expand node":"Collapse node","aria-pressed":st,onPointerDown:x=>x.stopPropagation(),onClick:()=>se(t.id),children:st?o.jsx(Gl,{size:13}):o.jsx(Gp,{size:13})}),_n&&o.jsx("button",{type:"button",title:"Run node",onPointerDown:x=>x.stopPropagation(),onClick:()=>N(t.id),children:o.jsx(Ca,{size:13})}),Dn&&o.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?Po:Ws,children:o.jsx(Kl,{size:13})}),o.jsx("button",{type:"button",title:"Delete node","aria-label":"Delete node","data-testid":"node-delete",onPointerDown:x=>x.stopPropagation(),onClick:()=>w(t.id),children:o.jsx(Rs,{size:13})})]});_n?(Xl,t.result,Gl):Xl;const sn=De?null:o.jsx("div",{className:"node-connector-handles","data-testid":"node-connector-handles","aria-hidden":!1,children:Cf.map(x=>o.jsx("button",{type:"button",className:`node-connector-handle node-connector-handle--${x} ${na&&(c==null?void 0:c.fromSide)===x?"is-source":""} ${We===x?"is-target":""}`,title:`Drag from ${x} to connect`,"aria-label":`Drag ${x} connector`,"data-testid":"node-connector-handle","data-node-connector":"true","data-connector-node-id":t.id,"data-connector-side":x,"data-connector-kind":zs,onPointerDown:D=>B(t.id,x,zs,D)},x))}),we=Le||Ae.length>1||de||pt?o.jsxs("div",{className:"node-surface-badges","data-testid":"node-surface-badges",children:[Le&&o.jsx("span",{className:"node-mask-badge",title:"Image edit mask reference",children:"Mask"}),Ae.length>1&&o.jsxs("span",{className:"node-image-stack-badge",title:"Image stack variants",children:[Math.max(1,To+1),"/",Ae.length]}),de&&o.jsx("span",{className:"node-embed-badge",children:Ue==="youtube"?"YouTube":"Embed"}),pt&&o.jsx("span",{className:"node-video-badge",children:((qn=t.metadata)==null?void 0:qn.MediaModel)||((pn=t.metadata)==null?void 0:pn.MediaProvider)||"Video"})]}):null,ge=Ae.length>1||de||pt||Te?o.jsxs("div",{className:"node-surface-actions","data-testid":"node-surface-actions",children:[Ae.length>1&&o.jsx("div",{className:"node-image-stack-rail","aria-label":"Image stack variants",children:Ae.map((x,D)=>o.jsx("button",{type:"button",className:x.variantId===(Ye==null?void 0:Ye.variantId)?"is-active":"",title:x.title||x.caption||`Variant ${D+1}`,"aria-label":`Show image variant ${D+1}`,onPointerDown:le=>le.stopPropagation(),onClick:le=>Na(x.variantId,le),children:o.jsx(Mr,{src:x.imageUrl,traceId:`${t.id}:${x.variantId||D}`,kind:"image-stack-variant",testId:"node-image-stack-thumb"})},x.variantId||`${x.imageUrl}-${D}`))}),de&&o.jsxs("div",{className:"node-embed-actions",children:[o.jsxs("button",{type:"button",title:"Open embed","aria-label":"Open embed",onPointerDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),gt&&ie(t,"external")},children:[o.jsx(An,{size:13}),o.jsx("span",{children:"Open"})]}),o.jsxs("button",{type:"button",title:"Copy URL","aria-label":"Copy URL",onPointerDown:x=>x.stopPropagation(),onClick:da,children:[o.jsx(wo,{size:13}),o.jsx("span",{children:"Copy URL"})]})]}),pt&&o.jsxs("div",{className:"node-video-actions",children:[o.jsxs("button",{type:"button",title:"Play video","aria-label":"Play video","data-testid":"node-video-play",onPointerDown:x=>x.stopPropagation(),onClick:Eo,children:[o.jsx(Ca,{size:13}),o.jsx("span",{children:"Play"})]}),o.jsxs("button",{type:"button",title:"Pause video","aria-label":"Pause video","data-testid":"node-video-pause",onPointerDown:x=>x.stopPropagation(),onClick:Ta,children:[o.jsx(Io,{size:13}),o.jsx("span",{children:"Pause"})]})]}),Te&&o.jsxs("div",{className:"node-asset-actions",children:[t.kind==="pdf"&&o.jsxs("button",{type:"button",title:"Preview PDF","data-testid":"node-pdf-preview",onPointerDown:x=>x.stopPropagation(),onClick:()=>ie(t,"preview"),children:[o.jsx(Kp,{size:13}),o.jsx("span",{children:"Preview"})]}),t.kind!=="directory"&&o.jsxs("button",{type:"button",title:"Open in new tab",onPointerDown:x=>x.stopPropagation(),onClick:()=>ie(t,"external"),children:[o.jsx(An,{size:13}),o.jsx("span",{children:"Open"})]}),t.kind==="directory"&&o.jsxs("button",{type:"button",title:"Scan folder","data-testid":"directory-scan",onPointerDown:x=>x.stopPropagation(),onClick:()=>mt(t.id),children:[o.jsx(Mn,{size:13}),o.jsx("span",{children:"Scan"})]}),t.kind==="directory"&&o.jsxs("button",{type:"button",title:"Folder scan settings","data-testid":"directory-settings-open",onPointerDown:x=>x.stopPropagation(),onClick:()=>ae(t.id),children:[o.jsx(ks,{size:13}),o.jsx("span",{children:"Settings"})]})]})]}):null,tt=!De&&!pe?o.jsxs("div",{className:"node-external-action-rail","data-testid":"node-external-action-rail",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[ge,o.jsx("div",{className:"node-external-rail__pins",children:null}),o.jsx("div",{className:"node-actions","data-testid":"node-actions",children:bt}),$e&&o.jsxs("div",{className:"node-agent-command-actions","data-testid":"node-agent-command-actions",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[o.jsx("button",{type:"button","data-testid":"node-agent-command-plan","data-agent-command-action":"plan",onClick:Fn,children:"Plan"}),o.jsx("button",{type:"button","data-testid":"node-agent-command-execute","data-agent-command-action":"execute",disabled:Bt==="Running",onClick:Aa,children:"Execute"})]}),Me&&o.jsxs("div",{className:"node-code-note-actions","data-testid":"node-code-note-actions",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[o.jsx("button",{type:"button","data-testid":"node-code-note-approve","data-code-note-action":"approve",onClick:x=>Ma(x,"Approved","Planned","approve-local"),children:"Approve"}),o.jsx("button",{type:"button","data-testid":"node-code-note-review","data-code-note-action":"review",onClick:x=>Ma(x,"Reviewed","InSync","review-local"),children:"Review"}),o.jsx("button",{type:"button","data-testid":"node-code-note-out-of-sync","data-code-note-action":"out-of-sync",onClick:x=>Ma(x,ea,"OutOfSync","mark-out-of-sync-local"),children:"Out of sync"})]}),t.companyMode&&o.jsxs("div",{className:"node-company-quick-actions","data-testid":"node-company-quick-actions","data-company-status":$t||"Staged",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:[o.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:()=>jt(t.id),children:o.jsx(hc,{size:12})}),o.jsx("button",{type:"button",title:"Refresh Company status","aria-label":"Refresh Company status","data-testid":"node-company-refresh",onClick:()=>ot(t.id),children:o.jsx(Mn,{size:12})}),ft?o.jsx("button",{type:"button",title:"Company is archived","aria-label":"Company is archived","data-testid":"node-company-archived",disabled:!0,children:o.jsx(Gr,{size:12})}):la?o.jsx("button",{type:"button",title:"Resume Company","aria-label":"Resume Company","data-testid":"node-company-resume",onClick:()=>V(t.id,"Staged"),children:o.jsx(Ca,{size:12})}):o.jsx("button",{type:"button",title:"Pause Company","aria-label":"Pause Company","data-testid":"node-company-pause",onClick:()=>V(t.id,"Paused"),children:o.jsx(Io,{size:12})}),!ft&&o.jsx("button",{type:"button",title:"Archive Company","aria-label":"Archive Company","data-testid":"node-company-archive",onClick:()=>V(t.id,"Archived"),children:o.jsx(Gr,{size:12})}),o.jsx("button",{type:"button",title:"Remove Company from this note","aria-label":"Remove Company from this note","data-testid":"node-company-remove",onClick:()=>G(t.id),children:o.jsx(Et,{size:12})})]})]}):null,Bo=!De&&!pe?o.jsx("div",{className:"node-external-rail","data-testid":"node-external-rail",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:o.jsxs("div",{className:"node-external-rail__meta",children:[o.jsxs("div",{className:"node-tags","data-testid":"node-external-tags",children:[(t.tags??[t.kind]).slice(0,3).map(x=>o.jsx("span",{children:x},x)),t.status&&o.jsx("span",{className:`node-status node-status--${t.status}`,children:t.status})]}),we,ye,$e&&o.jsxs("div",{className:"node-agent-command-state","data-testid":"node-agent-command-state","data-agent-command-status":Bt,"data-agent-command-mode":U,"data-agent-command-role":Be,"data-agent-command-adapter-state":((Pa=t.metadata)==null?void 0:Pa.AdapterState)||"adapter-gated",children:[o.jsx(vn,{size:12}),o.jsx("strong",{children:"AC"}),o.jsx("span",{children:Bt}),o.jsx("span",{children:U}),o.jsx("span",{children:Be})]}),Me&&o.jsxs("div",{className:"node-code-note-state","data-testid":"node-code-note-state","data-code-note-status":ea,"data-code-note-sync-state":Xa,"data-code-note-kind":ta,"data-code-note-adapter-state":((ma=t.metadata)==null?void 0:ma.AdapterState)||"local-canvas-only",children:[o.jsx(jn,{size:12}),o.jsx("strong",{children:"CN"}),o.jsx("span",{children:ea}),o.jsx("span",{children:Xa}),o.jsx("span",{children:ta})]}),t.companyMode&&o.jsxs("div",{className:"node-company-state","data-testid":"node-company-state",children:[o.jsx(Kl,{size:12}),o.jsx("strong",{children:((Oe=t.metadata)==null?void 0:Oe.CompanyExecutionModeLabel)||"Company staged"}),o.jsx("span",{children:((Ee=t.metadata)==null?void 0:Ee.CompanySubAgents)==="false"?"single-agent":"sub-agents"})]})]})}):null;return o.jsxs("article",{className:`canvas-node canvas-node--${t.kind} ${De?"canvas-node--remote-surface":""} ${Ja?"canvas-node--remote-monitor-surface":""} ${aa?"canvas-node--remote-control-surface":""} ${Ze?`canvas-node--automation-${Ze}`:""} ${$e?"canvas-node--agent-command":""} ${Me?"canvas-node--code-note":""} ${n?"is-selected":""} ${d?"is-pulsing":""} ${rt?"":"is-ai-disabled"} ${t.wordWrap===!1?"is-nowrap":""} ${st?"is-collapsed":""} ${t.companyMode?`is-company-${t.companyMode}`:""}`,style:Hn,"data-node-id":t.id,"data-automation-node-kind":Ze||void 0,"data-automation-external-policy":((Ea=t.metadata)==null?void 0:Ea.AutomationExternalActionPolicy)||void 0,"data-media-generation-contract":((_a=t.metadata)==null?void 0:_a.MediaGenerationContract)||void 0,"data-agent-command-node":$e?"true":void 0,"data-agent-command-status":$e?Bt:void 0,"data-agent-command-mode":$e?U:void 0,"data-agent-command-role":$e?Be:void 0,"data-code-note-node":Me?"true":void 0,"data-code-note-status":Me?ea:void 0,"data-code-note-sync-state":Me?Xa:void 0,"data-code-note-kind":Me?ta:void 0,"data-node-status":t.status||void 0,"data-selection-count":r,"data-node-chrome-suppressed":pe?"multi-selection":void 0,"data-remote-surface-chrome":De?"self-contained":void 0,"data-remote-surface-kind":Re||void 0,"data-remote-surface-title-owner":De?"inner-remote-view":void 0,"data-remote-surface-scroll-owner":De?"remote-page-rail":void 0,onPointerDown:x=>{m(t.id,x.shiftKey||x.metaKey||x.ctrlKey),y(t.id,x)},onDoubleClick:x=>{if(t.kind!=="directory")return;const D=x.target instanceof HTMLElement?x.target:null;D!=null&&D.closest('button,input,textarea,select,[contenteditable="true"],[contenteditable=""]')||(x.stopPropagation(),mt(t.id))},children:[!De&&o.jsxs("div",{className:"node-header",children:[o.jsx("span",{className:"node-kind",children:o.jsx(qa,{size:14})}),o.jsx("input",{value:t.title,"aria-label":"Node title",readOnly:Qe,onPointerDown:x=>x.stopPropagation(),onChange:x=>{Qe||b(t.id,{title:x.target.value})}}),t.status==="running"&&o.jsxs("span",{className:"node-run-state node-run-state--running","data-testid":"node-running-state",children:[o.jsx(Mn,{size:12}),o.jsx("span",{children:"Running"})]})]}),ca&&typeof document<"u"?Jm.createPortal(ca,document.body):ca,Ve&&ra&&Fe&&o.jsx("div",{className:"node-memo-palette","data-testid":"node-memo-palette",onPointerDown:x=>x.stopPropagation(),onClick:x=>x.stopPropagation(),children:ai.map(x=>o.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:D=>D.stopPropagation(),onClick:D=>Ys(x.key,D)},x.key))}),Sa?o.jsx("div",{className:`node-image-wrap ${Ae.length>1?"node-image-wrap--stack":""} ${Le?"node-image-wrap--mask":""}`,"data-testid":Le?"node-mask-preview":Ae.length>1?"node-image-stack":void 0,children:o.jsx(Mr,{src:Sa,traceId:t.id,kind:Le?"mask":"node-image",testId:"node-secure-image"})}):Ja?o.jsx(lp,{node:t,onPatch:b,onCreateRemoteControl:z}):aa?o.jsx(dp,{node:t,onPatch:b}):Qe?o.jsx("div",{className:"node-template-card","data-testid":"node-template-card",children:ce&&ht?o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"node-template-card__summary",children:[o.jsx("strong",{children:ce.prompt||ce.description}),o.jsx("span",{children:ht.description||ce.description})]}),o.jsx("div",{className:"node-template-card__options","data-testid":"node-template-card-options",children:ce.options.map(x=>o.jsxs("button",{type:"button",className:x.id===ht.id?"is-active":"","data-testid":"node-template-card-option","data-option-id":x.id,onPointerDown:D=>D.stopPropagation(),onClick:D=>it(x.id,D),children:[o.jsx("strong",{children:x.label}),o.jsx("span",{children:x.description})]},x.id||x.templateId))}),o.jsxs("div",{className:"node-template-card__inputs","data-testid":"node-template-card-inputs",children:[ht.inputs.map(x=>o.jsx(vf,{input:x,value:ce.inputValues[x.key]??"",onChange:D=>zn(x.key,D)},x.key)),ht.inputs.length===0&&o.jsx("p",{className:"node-template-card__empty",children:ce.noInputsLabel||"No inputs needed."})]}),ia&&o.jsx("div",{className:"node-template-card__validation",children:ia}),o.jsxs("button",{type:"button",className:"node-template-card__generate","data-testid":"node-template-card-generate",disabled:!!ia,onPointerDown:zt,onClick:x=>x.stopPropagation(),children:[o.jsx(Ca,{size:13}),o.jsx("span",{children:ce.generateLabel||ce.actionLabel||"Generate"})]})]}):o.jsx("div",{className:"node-template-card__missing",children:"Template card payload is unavailable."})}):de?o.jsxs("div",{className:`node-embed-card ${Za?"has-embed-thumbnail":"is-embed-link"}`,"data-testid":"node-embed-card",children:[o.jsx("div",{className:"node-embed-preview",children:Za?o.jsx(Mr,{src:Za,traceId:t.id,kind:"embed-thumbnail",testId:"node-embed-thumbnail"}):o.jsxs("div",{className:"node-embed-placeholder",children:[o.jsx(An,{size:24}),o.jsx("strong",{children:Ue==="youtube"?"YouTube":"Web embed"}),o.jsx("span",{children:Mo||gt||"External link"})]})}),o.jsx("textarea",{value:t.body,"aria-label":"Embed URL or description",spellCheck:!1,onPointerDown:x=>x.stopPropagation(),onChange:x=>{const D=x.target.value;b(t.id,{body:D,assetUrl:D,metadata:{...t.metadata??{},sourceUrl:D,url:D}})}}),gt&&o.jsx("span",{className:"node-embed-source",title:gt,children:gt})]}):pt?o.jsxs("div",{className:`node-video-card ${Ne?"has-video-source":"is-video-prompt"}`,"data-testid":"node-video-card",children:[Ne?o.jsx("video",{ref:oa,src:Ne,className:"node-video-player","data-testid":"node-video-player",controls:!0,preload:"metadata",onPointerDown:x=>x.stopPropagation()}):o.jsxs("div",{className:"node-video-placeholder",children:[o.jsx(Nn,{size:24}),o.jsx("strong",{children:"Video prompt"}),o.jsx("span",{children:((gn=t.metadata)==null?void 0:gn.MediaModel)||((Jn=t.metadata)==null?void 0:Jn.MediaProvider)||"Adapter gated"})]}),o.jsx("textarea",{value:t.body,"aria-label":"Video prompt or source",spellCheck:!1,onPointerDown:x=>x.stopPropagation(),onChange:x=>b(t.id,{body:x.target.value})}),Ne&&o.jsx("span",{className:"node-video-source",title:Dt,children:Dt})]}):Te?o.jsxs("div",{className:`node-asset-card node-asset-card--${t.kind}`,"data-testid":"node-asset-card",children:[o.jsx("div",{className:"node-asset-icon",children:o.jsx(qa,{size:28})}),o.jsxs("div",{className:"node-asset-copy",children:[o.jsx("strong",{title:Ge,children:Ge}),o.jsx("span",{children:t.kind==="directory"?"Directory reference":t.kind==="pdf"?"PDF document":"File reference"}),t.kind==="directory"&&(sa||Qa||On||Pe||Nt)&&o.jsxs("dl",{className:"node-asset-meta","data-testid":"node-directory-meta",children:[(On||Pe)&&o.jsxs(o.Fragment,{children:[o.jsx("dt",{children:"Scanned"}),o.jsxs("dd",{children:[Number(On??0).toLocaleString()," files / ",Number(Pe??0).toLocaleString()," folders"]})]}),sa&&o.jsxs(o.Fragment,{children:[o.jsx("dt",{children:"Include"}),o.jsx("dd",{children:sa})]}),Qa&&o.jsxs(o.Fragment,{children:[o.jsx("dt",{children:"Exclude"}),o.jsx("dd",{children:Qa})]}),Nt&&o.jsxs(o.Fragment,{children:[o.jsx("dt",{children:"Updated"}),o.jsx("dd",{children:new Date(Nt).toLocaleString()})]})]})]})]}):be?o.jsxs("div",{className:"node-csv-card","data-testid":"node-csv-card",children:[o.jsx(If,{preview:Ia,sort:At,onSort:x=>{const D=(At==null?void 0:At.columnIndex)===x&&At.direction==="asc"?"desc":"asc";on({columnIndex:x,direction:D}),f.emit("node.csvTable.sort",{id:t.id,columnIndex:x,direction:D})}}),o.jsx("textarea",{value:t.body,"aria-label":"CSV source",spellCheck:!1,wrap:"off",onPointerDown:x=>x.stopPropagation(),onChange:x=>b(t.id,{body:x.target.value})})]}):Ao?o.jsxs("div",{className:"node-markdown-card","data-testid":"node-markdown-card",children:[o.jsx("div",{className:"node-markdown-preview mindcanvas-text-scrollable-view","data-testid":"node-markdown-preview","aria-label":"Markdown preview",children:o.jsx(Tf,{value:t.body})}),o.jsx("textarea",{value:t.body,"aria-label":"Markdown source",spellCheck:!1,wrap:t.wordWrap===!1?"off":"soft",onPointerDown:x=>x.stopPropagation(),onChange:x=>b(t.id,{body:x.target.value})})]}):o.jsx(o.Fragment,{children:o.jsx("textarea",{value:t.body,"aria-label":"Node body",spellCheck:!1,wrap:t.wordWrap===!1?"off":"soft",onPointerDown:x=>x.stopPropagation(),onChange:x=>b(t.id,{body:x.target.value})})}),Bo,tt,sn,o.jsx("button",{type:"button",className:"node-resize-handle",title:"Resize node","aria-label":"Resize node",onPointerDown:x=>p(t.id,x)})]})});function vf({input:e,value:t,onChange:n}){return o.jsxs("label",{className:"node-template-card__field",children:[o.jsxs("span",{children:[o.jsx("strong",{children:e.label}),e.description&&o.jsx("small",{children:e.description})]}),e.type==="textarea"?o.jsx("textarea",{value:t,placeholder:e.placeholder,onPointerDown:r=>r.stopPropagation(),onChange:r=>n(r.target.value)}):e.type==="select"?o.jsx("select",{value:t,onPointerDown:r=>r.stopPropagation(),onChange:r=>n(r.target.value),children:(e.options??[]).map(r=>o.jsx("option",{value:r.value,children:r.label},r.value))}):o.jsx("input",{type:"text",value:t,placeholder:e.placeholder,onPointerDown:r=>r.stopPropagation(),onChange:r=>n(r.target.value)})]})}function jf(e){const r=Math.min(430,window.innerHeight-24),d=Math.max(12,window.innerWidth-332-12),c=Math.min(Math.max(e.right-332,12),d),m=e.bottom+8,y=e.top-r-8,p=Math.max(12,window.innerHeight-r-12),b=m<=p?m:Math.max(12,y);return{left:c,top:Math.min(b,p)}}function If({preview:e,sort:t,onSort:n}){return!e||e.headers.length===0?o.jsx("div",{className:"csv-table-scroll mindcanvas-text-scrollable-view","data-testid":"csv-table-preview","aria-label":"CSV table preview",children:o.jsx("p",{className:"node-md-empty",children:"Paste CSV source to preview a table."})}):o.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:[o.jsxs("table",{className:"csv-table",children:[o.jsx("thead",{children:o.jsx("tr",{children:e.headers.map((r,d)=>{const c=(t==null?void 0:t.columnIndex)===d,m=c&&t.direction==="asc"?"descending":"ascending";return o.jsx("th",{"aria-sort":c?t.direction==="asc"?"ascending":"descending":"none",children:o.jsxs("button",{type:"button",className:`csv-table-header-button ${c?"is-active":""}`,"data-testid":`csv-table-sort-${d}`,"aria-label":`Sort CSV by ${r||`Column ${d+1}`} ${m}`,onClick:()=>n(d),children:[o.jsx("span",{children:r||`Column ${d+1}`}),c&&o.jsx("small",{children:t.direction==="asc"?"Asc":"Desc"})]})},`${r}-${d}`)})})}),o.jsx("tbody",{children:e.rows.map((r,d)=>o.jsx("tr",{children:e.headers.map((c,m)=>o.jsx("td",{className:"csv-table-cell",children:r[m]??""},`csv-cell-${d}-${m}`))},`csv-row-${d}`))})]}),o.jsxs("div",{className:"csv-table-status",children:[o.jsxs("span",{children:[e.totalRows.toLocaleString()," rows"]}),o.jsxs("span",{children:[e.columnCount.toLocaleString()," columns"]}),e.truncated&&o.jsxs("span",{children:["showing ",e.renderedRows.toLocaleString()]})]})]})}function Nf(e,t){const n=Af(e,bd+1);if(n.length===0)return null;const r=Math.min(hf,Math.max(...n.map(p=>p.length),1)),d=yd(n[0],r).map((p,b)=>p.trim()||`Column ${b+1}`),c=n.slice(1,bd+1).map(p=>yd(p,r)),m=t?[...c].sort((p,b)=>Mf(p[t.columnIndex]??"",b[t.columnIndex]??"",t.direction)):c,y=Math.max(0,String(e||"").split(/\r\n|\n|\r/).filter(p=>p.length>0).length-1);return{headers:d,rows:m,totalRows:y,columnCount:r,renderedRows:m.length,truncated:y>m.length}}function Af(e,t){const n=[];let r=[],d="",c=!1;const m=String(e||"").replace(/\r\n/g,`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r,j as e}from"./vendor-react-BXzpOyCS.js";import{l as Le,i as Re}from"./storage-
|
|
1
|
+
import{r,j as e}from"./vendor-react-BXzpOyCS.js";import{l as Le,i as Re}from"./storage-CcZMLcgs.js";import{ag as ee,s as Y,ah as Te,c as q,ai as $e}from"./canvas-runtime-CF8ukxQK.js";import{R as j}from"./app-runtime-xD2Z3NdN.js";import{aH as Ee,E as te,g as ze,aJ as V,ad as se,aK as De,an as ae,aL as Ie,aM as Be,D as re,aN as Fe,aO as ne,R as Oe,c as Ue,F as Ge,T as _e,h as He,aA as Je,aP as Ke}from"./vendor-icons-DE3gIReG.js";import"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const ie="mindexec-react-planmaster-v1",le=["Planning","Product","Marketing","Monetization","Ops","Growth"],oe=["Pending","Running","Done","Blocked","Failed"],Ye=["Canvas.ListMindMapNodes","Plan.ListSteps","Plan.SetStepStatus","Plan.CreateNote"],qe=["Pending","Running","Done","Failed"],ce=["all","artifact","reflection","next_action","blocker","evidence","decision"],S="Launch MindExec React with a clear global USD path and one proof-producing user workflow.";function L(a){return typeof crypto<"u"&&"randomUUID"in crypto?`${a}-${crypto.randomUUID()}`:`${a}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function p(){return new Date().toISOString()}function I(){const a=p();return{goal:S,steps:de(S,0),notes:[{id:L("note"),kind:"reflection",agentName:"PlanMaster Local Planner",title:"Initial plan restored",body:"This React PlanMaster keeps the original planning habit alive without loading the Blazor PlanAgent surface.",metrics:"6 steps / local state",updatedAt:a}],updatedAt:a}}function Ve(){try{const a=window.localStorage.getItem(ie);if(!a)return I();const n=JSON.parse(a);return!Array.isArray(n.steps)||!Array.isArray(n.notes)?I():{goal:String(n.goal||S),steps:Xe(n.steps),notes:Qe(n.notes),updatedAt:String(n.updatedAt||p())}}catch{return I()}}function Xe(a){return a.map((n,o)=>{const i=n,R=le.includes(i.category)?i.category:"Planning",m=oe.includes(i.status)?i.status:"Pending",f=i.priority==="High"||i.priority==="Medium"||i.priority==="Low"?i.priority:"Medium";return{id:String(i.id||L("step")),stepNumber:Number(i.stepNumber||o+1),category:R,title:String(i.title||`Step ${o+1}`),detail:String(i.detail||""),status:m,note:i.note?String(i.note):void 0,priority:f,updatedAt:String(i.updatedAt||p())}}).sort((n,o)=>n.stepNumber-o.stepNumber)}function Qe(a){return a.map(n=>{const o=n,i=ce.includes(o.kind)?o.kind:"reflection";return{id:String(o.id||L("note")),kind:i,agentName:String(o.agentName||"PlanMaster Local Planner"),title:String(o.title||"Untitled note"),body:String(o.body||""),metrics:String(o.metrics||""),updatedAt:String(o.updatedAt||p())}}).sort((n,o)=>Date.parse(o.updatedAt)-Date.parse(n.updatedAt))}function We(a){window.localStorage.setItem(ie,JSON.stringify(a))}function Ze(a){const n=a.toLowerCase();return n.includes("talkagent")?"TalkAgent":n.includes("code")?"CodeGraph":n.includes("pricing")||n.includes("revenue")||n.includes("usd")?"USD offer":n.includes("tool")?"free-tool funnel":"MindExec"}function de(a,n){const o=Ze(a),i=p();return[{category:"Planning",title:"Define the success contract",detail:`Turn "${a.trim()||S}" into a measurable launch contract with proof, channel, risk, and finish criteria.`,priority:"High"},{category:"Product",title:`Ship the smallest useful ${o} workflow`,detail:"Keep the first workflow complete enough to prove value, but narrow enough to verify in one browser session.",priority:"High"},{category:"Marketing",title:"Publish one English-first proof asset",detail:"Create a short public artifact that shows before/after value and links directly to the working product surface.",priority:"High"},{category:"Monetization",title:"Connect the proof to a USD offer",detail:"Make the next paid step visible without blocking free utility value or local-first trust.",priority:"Medium"},{category:"Ops",title:"Verify runtime and rollback evidence",detail:"Run build, hosted route checks, console checks, and record the exact deployed bundle evidence.",priority:"Medium"},{category:"Growth",title:"Reuse the result as the next launch input",detail:"Capture learnings, customer language, and next actions back into MindCanvas or PlanMaster memory.",priority:"Low"}].map((m,f)=>({...m,id:L("step"),stepNumber:n+f+1,status:"Pending",updatedAt:i}))}function et(a,n,o){return["You are the MindExec PlanMaster local planner.",q(n),"Create categorized execution steps, concise evidence notes, and next actions.",o?"Use the current MindCanvas board context when it is available.":"Plan from the goal only; do not assume MindCanvas board context.","",`Goal: ${a.trim()||S}`].join(`
|
|
2
2
|
`)}function z(a,n,o,i=""){return{id:L("note"),kind:a,agentName:"PlanMaster Local Planner",title:n,body:o,metrics:i,updatedAt:p()}}function B(a){if(!a)return"-";const n=new Date(a);return Number.isNaN(n.getTime())?"-":n.toLocaleString(void 0,{month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit"})}function tt(a){return a==="Running"?"next_action":a==="Done"?"evidence":a==="Blocked"||a==="Failed"?"blocker":"reflection"}function at(a){return a.timestamp||a.timestamp===""?a.timestamp:void 0}function pt({navigate:a}){const[n,o]=r.useState(()=>Ve()),[i,R]=r.useState(()=>ee()),[m,f]=r.useState(()=>n.goal),[v,ue]=r.useState(!0),[F,pe]=r.useState(!0),[b,me]=r.useState(!0),[y,k]=r.useState(!1),[O,T]=r.useState(0),[N,he]=r.useState(10),[U,ge]=r.useState(!0),[$,xe]=r.useState("all"),[G,be]=r.useState(""),[C,je]=r.useState(1),[M,fe]=r.useState("Running"),[E,ye]=r.useState("Local PlanMaster tool contract run."),[Ne,P]=r.useState("Run a PlanMaster tool to inspect the local contract output."),[X,_]=r.useState([]),[Se,H]=r.useState(()=>Y()?"Not refreshed yet":"Access gated"),[Q,W]=r.useState(!1),J=r.useRef(),w=r.useMemo(()=>Te(i),[i]);r.useEffect(()=>{const t=()=>R(ee());return window.addEventListener("storage",t),window.addEventListener("focus",t),()=>{window.removeEventListener("storage",t),window.removeEventListener("focus",t)}},[]),r.useEffect(()=>(window.clearTimeout(J.current),J.current=window.setTimeout(()=>We(n),250),()=>window.clearTimeout(J.current)),[n]);const h=r.useCallback(t=>{o(s=>({...t(s),updatedAt:p()}))},[]),A=r.useMemo(()=>{const t=new Map;for(const l of oe)t.set(l,0);for(const l of n.steps)t.set(l.status,(t.get(l.status)||0)+1);const s=t.get("Done")||0,c=n.steps.length||1;return{total:n.steps.length,done:s,running:t.get("Running")||0,blocked:t.get("Blocked")||0,progress:Math.round(s/c*100)}},[n.steps]),ve=r.useMemo(()=>le.map(t=>({category:t,steps:n.steps.filter(s=>s.category===t)})),[n.steps]),Z=r.useMemo(()=>{const t=G.trim().toLowerCase();return n.notes.filter(s=>$!=="all"&&s.kind!==$?!1:t?`${s.title} ${s.body} ${s.metrics} ${s.agentName}`.toLowerCase().includes(t):!0)},[$,G,n.notes]),K=r.useCallback(()=>{const t=m.trim()||S,s=et(t,i,v),c=q(i);h(l=>{const u=b?l.steps.length:0,d=de(t,u),x=z("decision",b?"Appended a new plan session":"Generated a fresh plan",[`Goal: ${t}`,c].join(`
|
|
3
3
|
`),[`${d.length} steps`,v?"MindCanvas context enabled":"Standalone plan",`Language ${w.label}`].join(" / "));return j.emit("planmaster.plan.generated",{append:b,stepCount:d.length,appLanguage:i,promptChars:s.length}),{goal:t,steps:b?[...l.steps,...d]:d,notes:[x,...b?l.notes:[]],updatedAt:p()}}),T(0),k(!1)},[i,w.label,m,b,h,v]),g=r.useCallback((t,s,c)=>{h(l=>{const u=l.steps.find(x=>x.id===t);if(!u)return l;const d=z(tt(s),`Step ${u.stepNumber} marked ${s}`,c||u.detail,`${u.category} / ${u.priority}`);return j.emit("planmaster.step.status",{stepNumber:u.stepNumber,status:s}),j.emit("planmaster.execution.note",{kind:d.kind,title:d.title}),{...l,steps:l.steps.map(x=>x.id===t?{...x,status:s,note:c||x.note,updatedAt:p()}:x),notes:[d,...l.notes]}})},[h]),ke=r.useCallback(t=>{const s=q(i);if(j.emit("planmaster.tool.run",{toolName:t,appLanguage:i}),t==="Canvas.ListMindMapNodes"){const l=Le(Re),u=l.nodes.slice(0,60).map(d=>({id:d.id,contentType:d.kind,prompt:d.title,response:String(d.result||d.body||"").slice(0,500),isAiEnabled:d.aiEnabled!==!1}));P(JSON.stringify({boardId:l.id,boardTitle:l.name,appLanguage:i,languageInstruction:s,count:u.length,nodes:u},null,2));return}if(t==="Plan.ListSteps"){P(JSON.stringify({appLanguage:i,languageInstruction:s,steps:n.steps.map(l=>({stepNumber:l.stepNumber,category:l.category,title:l.title,status:l.status,note:l.note||""}))},null,2));return}if(t==="Plan.SetStepStatus"){const l=n.steps.find(u=>u.stepNumber===C);if(!l){P(`Error: stepNumber ${C} was not found.`);return}g(l.id,M,E.trim()||`Plan.SetStepStatus -> ${M}`),P(`Updated step ${C} status to '${M}'.`);return}const c=z("artifact","Plan.CreateNote local artifact",[E.trim()||"Created by the local PlanMaster tool contract panel.",s].join(`
|
|
4
4
|
`),`Plan.CreateNote / local shell / Language ${w.label}`);h(l=>({...l,notes:[c,...l.notes]})),j.emit("planmaster.execution.note",{kind:c.kind,title:c.title,source:"Plan.CreateNote"}),P(`Created PlanMaster note node: ${c.id}`)},[i,w.label,g,n.steps,E,M,C,h]),Ce=r.useCallback(()=>{if(F&&n.steps.length===0){K();return}const t=n.steps.find(s=>s.status==="Pending")||n.steps.find(s=>s.status==="Blocked");t&&(k(!0),T(s=>Math.min(N,s+1)),g(t.id,"Running","Local PlanMaster run selected this as the next active step."))},[F,K,N,g,n.steps]),Me=r.useCallback(()=>{const t=n.steps.find(c=>c.status==="Running");t&&g(t.id,"Done","Completed in the local PlanMaster run.");const s=n.steps.find(c=>c.status==="Pending");s&&O<N?(T(c=>c+1),g(s.id,"Running","Advanced to the next local execution step.")):k(!1)},[O,N,g,n.steps]),Pe=r.useCallback(()=>{k(!1),h(t=>({...t,notes:[z("reflection","Stopped local PlanMaster run","The local execution loop was stopped by the user."),...t.notes]}))},[h]),we=r.useCallback(()=>{const t=I();o(t),f(t.goal),k(!1),T(0),j.emit("planmaster.plan.generated",{reset:!0,stepCount:t.steps.length})},[]),Ae=r.useCallback(async()=>{if(!Y()){H("Access gated"),_([]);return}W(!0);try{const s=((await $e()).items||[]).slice(-12).reverse();_(s),H(s.length>0?`Updated ${new Date().toLocaleTimeString()}`:"No change feed items yet"),j.emit("planmaster.bridgeFeed.refreshed",{count:s.length})}catch(t){H(t instanceof Error?t.message:String(t)),_([])}finally{W(!1)}},[]);return e.jsxs("div",{className:"page planmaster-page","data-testid":"planmaster-app-language","data-app-language":i,"data-app-language-label":w.label,children:[e.jsxs("section",{className:"planmaster-hero",children:[e.jsxs("div",{children:[e.jsx("div",{className:"eyebrow",children:"PlanAgent / PlanMaster"}),e.jsx("h1",{children:"Turn a goal into an executable plan board."}),e.jsx("p",{children:"A React replacement for the original PlanMaster surface: goal intake, categorized steps, execution memory, and bridge feed visibility without loading the Blazor 3D agent canvas."})]}),e.jsxs("div",{className:"planmaster-hero-actions",children:[e.jsx("button",{className:"btn btn-secondary",type:"button",onClick:()=>a("/mindcanvas"),children:"Open MindCanvas"}),e.jsxs("button",{className:"btn btn-ghost",type:"button",onClick:we,children:[e.jsx(Ee,{size:16}),"Reset"]})]})]}),e.jsxs("section",{className:"planmaster-layout",children:[e.jsxs("aside",{className:"planmaster-control-panel",children:[e.jsxs("div",{className:"planmaster-panel-head",children:[e.jsx(te,{size:18}),e.jsx("strong",{children:"Agent control"})]}),e.jsxs("label",{className:"planmaster-field",children:[e.jsx("span",{children:"Goal"}),e.jsx("textarea",{"data-testid":"planmaster-goal-input",value:m,onChange:t=>f(t.target.value),placeholder:"Enter the agent goal..."})]}),e.jsxs("label",{className:"planmaster-check",children:[e.jsx("input",{type:"checkbox",checked:v,onChange:t=>ue(t.target.checked)}),e.jsx("span",{children:"Use current MindCanvas board as context"})]}),e.jsxs("label",{className:"planmaster-check",children:[e.jsx("input",{type:"checkbox",checked:F,disabled:!v,onChange:t=>pe(t.target.checked)}),e.jsx("span",{children:"Generate or update a plan before running"})]}),e.jsxs("label",{className:"planmaster-check",children:[e.jsx("input",{type:"checkbox",checked:b,onChange:t=>me(t.target.checked)}),e.jsx("span",{children:"Preserve canvas memory and append this run"})]}),e.jsxs("label",{className:"planmaster-field planmaster-field--compact",children:[e.jsx("span",{children:"Max iterations"}),e.jsx("input",{type:"number",min:1,max:30,value:N,onChange:t=>he(Math.max(1,Math.min(30,Number(t.target.value)||1)))})]}),e.jsxs("div",{className:"planmaster-command-grid",children:[e.jsxs("button",{className:"btn btn-primary",type:"button","data-testid":"planmaster-generate-plan",onClick:K,disabled:!m.trim(),children:[e.jsx(ze,{size:16}),"Generate plan"]}),e.jsxs("button",{className:"btn btn-secondary",type:"button",onClick:Ce,disabled:n.steps.length===0||y,children:[e.jsx(V,{size:16}),"Start"]}),e.jsxs("button",{className:"btn btn-secondary",type:"button",onClick:Me,disabled:!y,children:[e.jsx(se,{size:16}),"Advance"]}),e.jsxs("button",{className:"btn btn-ghost",type:"button",onClick:Pe,disabled:!y,children:[e.jsx(De,{size:16}),"Stop"]})]}),e.jsxs("div",{className:`planmaster-agent-status ${y?"is-running":""}`,children:[y?e.jsx(ae,{size:17,className:"spin-icon"}):e.jsx(Ie,{size:17}),e.jsx("span",{children:y?"Running local plan loop":"Idle"}),e.jsxs("b",{children:[O," / ",N]})]})]}),e.jsxs("main",{className:"planmaster-board",children:[e.jsxs("div",{className:"planmaster-board-head",children:[e.jsxs("div",{children:[e.jsx("span",{className:"card-label",children:"Plan canvas"}),e.jsx("h2",{"data-testid":"planmaster-board-goal",children:n.goal})]}),e.jsxs("div",{className:"planmaster-progress",children:[e.jsxs("strong",{children:[A.progress,"%"]}),e.jsxs("span",{children:[A.done," done"]})]})]}),e.jsxs("div",{className:"planmaster-metric-strip",children:[e.jsx(D,{icon:Be,label:"Steps",value:String(A.total)}),e.jsx(D,{icon:V,label:"Running",value:String(A.running)}),e.jsx(D,{icon:re,label:"Blocked",value:String(A.blocked)}),e.jsx(D,{icon:Fe,label:"Updated",value:B(n.updatedAt)})]}),e.jsx("div",{className:"planmaster-lanes",children:ve.map(t=>e.jsxs("section",{className:"planmaster-lane",children:[e.jsxs("div",{className:"planmaster-lane-head",children:[e.jsx("strong",{children:t.category}),e.jsx("span",{children:t.steps.length})]}),t.steps.length>0?t.steps.map(s=>e.jsx(nt,{step:s,onStatus:g},s.id)):e.jsx("div",{className:"planmaster-empty-lane",children:"No step yet"})]},t.category))})]}),e.jsxs("aside",{className:"planmaster-side",children:[e.jsxs("section",{className:"planmaster-tool-panel",children:[e.jsxs("div",{className:"planmaster-panel-head",children:[e.jsx(te,{size:18}),e.jsx("strong",{children:"Tool Contract"})]}),e.jsx("p",{children:"Original PlanMaster agent tools, simulated against local React state."}),e.jsx("div",{className:"planmaster-tool-grid",children:Ye.map(t=>e.jsx("button",{type:"button","data-tool-name":t,onClick:()=>ke(t),children:t},t))}),e.jsxs("div",{className:"planmaster-tool-form",children:[e.jsxs("label",{children:[e.jsx("span",{children:"stepNumber"}),e.jsx("input",{"data-testid":"planmaster-tool-step-number",type:"number",min:1,value:C,onChange:t=>je(Math.max(1,Number(t.target.value)||1))})]}),e.jsxs("label",{children:[e.jsx("span",{children:"status"}),e.jsx("select",{"data-testid":"planmaster-tool-status",value:M,onChange:t=>fe(t.target.value),children:qe.map(t=>e.jsx("option",{value:t,children:t},t))})]})]}),e.jsxs("label",{className:"planmaster-tool-note",children:[e.jsx("span",{children:"note/content"}),e.jsx("textarea",{"data-testid":"planmaster-tool-note",value:E,onChange:t=>ye(t.target.value)})]}),e.jsx("pre",{className:"planmaster-tool-output","data-testid":"planmaster-tool-output",children:Ne})]}),e.jsxs("section",{className:"planmaster-bridge-panel",children:[e.jsxs("div",{className:"planmaster-panel-head",children:[e.jsx(ne,{size:18}),e.jsx("strong",{children:"Bridge Feed"}),e.jsx("button",{type:"button",title:"Refresh bridge feed",onClick:Ae,disabled:Q,children:Q?e.jsx(ae,{size:15,className:"spin-icon"}):e.jsx(Oe,{size:15})})]}),e.jsxs("div",{className:"planmaster-bridge-status",children:[Y()?e.jsx(ne,{size:15}):e.jsx(Ue,{size:15}),Se]}),e.jsx("div",{className:"planmaster-feed-list",children:X.length>0?X.map((t,s)=>e.jsxs("article",{className:"planmaster-feed-item",children:[e.jsxs("div",{children:[e.jsx("strong",{children:t.changeType||"change"}),e.jsx("span",{children:B(at(t))})]}),e.jsx("p",{children:t.message||t.path||"(no details)"})]},`${t.timestamp||s}-${t.path||t.message||""}`)):e.jsx("div",{className:"planmaster-empty-lane",children:"No bridge feed items loaded."})})]}),e.jsxs("section",{className:`planmaster-memory-panel ${U?"":"is-collapsed"}`,children:[e.jsxs("div",{className:"planmaster-panel-head",children:[e.jsx(Ge,{size:18}),e.jsx("strong",{children:"Execution Memory"}),e.jsx("button",{type:"button",onClick:()=>ge(t=>!t),children:U?e.jsx(_e,{size:15}):e.jsx(He,{size:15})})]}),U&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"planmaster-memory-filters",children:ce.map(t=>e.jsx("button",{className:$===t?"is-selected":"",type:"button",onClick:()=>xe(t),children:t.replace("_"," ")},t))}),e.jsxs("label",{className:"planmaster-memory-search",children:[e.jsx(Je,{size:15}),e.jsx("input",{value:G,onChange:t=>be(t.target.value),placeholder:"Search memory notes..."})]}),e.jsx("div",{className:"planmaster-memory-list","data-testid":"planmaster-memory-list",children:Z.length>0?Z.map(t=>e.jsx(rt,{note:t},t.id)):e.jsx("div",{className:"planmaster-empty-lane",children:"No execution memory notes match the current filter."})})]})]})]})]})]})}function D({icon:a,label:n,value:o}){return e.jsxs("article",{className:"planmaster-metric",children:[e.jsx(a,{size:17}),e.jsx("span",{children:n}),e.jsx("strong",{children:o})]})}function nt({step:a,onStatus:n}){return e.jsxs("article",{className:`plan-step-card plan-step-card--${a.status.toLowerCase()}`,"data-testid":"planmaster-step-card","data-step-number":a.stepNumber,"data-step-status":a.status,children:[e.jsxs("div",{className:"plan-step-top",children:[e.jsxs("span",{children:["Step ",a.stepNumber]}),e.jsx(st,{status:a.status})]}),e.jsx("h3",{children:a.title}),e.jsx("p",{children:a.detail}),a.note&&e.jsx("div",{className:"plan-step-note",children:a.note}),e.jsxs("div",{className:"plan-step-footer",children:[e.jsx("span",{children:a.priority}),e.jsx("span",{children:B(a.updatedAt)})]}),e.jsxs("div",{className:"plan-step-actions",children:[e.jsx("button",{type:"button",onClick:()=>n(a.id,"Running"),children:"Run"}),e.jsx("button",{type:"button",onClick:()=>n(a.id,"Done"),children:"Done"}),e.jsx("button",{type:"button",onClick:()=>n(a.id,"Blocked"),children:"Block"}),e.jsx("button",{type:"button",onClick:()=>n(a.id,"Failed"),children:"Fail"})]})]})}function st({status:a}){const n=a==="Done"?se:a==="Blocked"||a==="Failed"?re:a==="Running"?V:Ke;return e.jsxs("span",{className:`plan-status-pill plan-status-pill--${a.toLowerCase()}`,children:[e.jsx(n,{size:13}),a]})}function rt({note:a}){return e.jsxs("article",{className:`execution-memory-item execution-memory-item--${a.kind.replace("_","-")}`,children:[e.jsxs("div",{className:"execution-memory-item-top",children:[e.jsx("span",{children:a.kind.replace("_"," ")}),e.jsx("time",{children:B(a.updatedAt)})]}),e.jsx("strong",{children:a.title}),a.metrics&&e.jsx("small",{children:a.metrics}),e.jsx("p",{children:a.body})]})}export{pt as PlanMasterPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as g,j as t}from"./vendor-react-BXzpOyCS.js";import{L as M}from"./LaunchLeadCapture-Bx9LM0IX.js";import{g as C,a as P}from"./index-DlyqQyXw.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-CuJuASQT.js";import{an as I,aQ as L,c as D,ad as $}from"./vendor-icons-DE3gIReG.js";import"./canvas-runtime-D3amtMwe.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-Bx9LM0IX.js";import{g as C,a as P}from"./index-Dp7yFpgv.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-CjOxTXgI.js";import{an as I,aQ as L,c as D,ad as $}from"./vendor-icons-DE3gIReG.js";import"./canvas-runtime-CF8ukxQK.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};
|