@manifesto-ai/compiler 3.5.0 → 3.6.0

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/dist/index.js CHANGED
@@ -1,21 +1,21 @@
1
- import{$ as Zn,A as Rn,B as Fn,C as jn,D as x,E as Tn,F as Dn,G as B,H as In,I as _n,J as Mn,K as Gn,L as qn,M as Ln,N as Un,O as Vn,P as Wn,Q as zn,R as Kn,S as Bn,T as w,U as Hn,V as Xn,W as Jn,X as Yn,Y as Qn,Z as H,_ as X,a as un,aa as er,b as cn,c as ln,d as dn,e as pn,f as fn,g as mn,h as gn,i as yn,j as hn,k as En,l as _,m as kn,n as vn,o as Nn,p as bn,q as Cn,r as Sn,s as Pn,t as $n,u as wn,v as M,w as An,x as xn,y as K,z as On}from"./chunk-XIAVDXPY.js";var J={E001:{code:"E001",message:"$system.* cannot be used in computed expressions (non-deterministic)",category:"semantic"},E002:{code:"E002",message:"$system.* cannot be used in state initializers",category:"semantic"},E003:{code:"E003",message:"Invalid $system reference",category:"semantic"},E004:{code:"E004",message:"Identifier starts with reserved prefix '__sys__'",category:"syntax"},E005:{code:"E005",message:"available expression must be pure (no Effects, no $system.*)",category:"semantic"},E006:{code:"E006",message:"fail must be inside a guard (when, once, or onceIntent)",category:"semantic"},E007:{code:"E007",message:"stop must be inside a guard (when, once, or onceIntent)",category:"semantic"},E008:{code:"E008",message:"stop message suggests waiting/pending - use 'Already processed' style instead",category:"semantic"},E009:{code:"E009",message:"Primitive aggregation (sum, min, max) only allowed in computed",category:"semantic"},E010:{code:"E010",message:"Primitive aggregation does not allow composition - use direct reference only",category:"semantic"},E011:{code:"E011",message:"reduce/fold/scan is forbidden - use sum, min, max for aggregation",category:"semantic"},E013:{code:"E013",message:"Circular include detected",category:"semantic"},E014:{code:"E014",message:"Include expansion depth exceeds limit",category:"semantic"},E015:{code:"E015",message:"Include target is not a declared flow",category:"semantic"},E016:{code:"E016",message:"Include not allowed in InnerStmt position",category:"semantic"},E017:{code:"E017",message:"once() not allowed in flow",category:"semantic"},E018:{code:"E018",message:"onceIntent not allowed in flow",category:"semantic"},E019:{code:"E019",message:"patch not allowed in flow",category:"semantic"},E020:{code:"E020",message:"effect not allowed in flow",category:"semantic"},E021:{code:"E021",message:"Flow parameter name conflicts with top-level identifier",category:"semantic"},E022:{code:"E022",message:"Flow and action share the same name",category:"semantic"},E023:{code:"E023",message:"Wrong number of arguments for included flow",category:"semantic"},E024:{code:"E024",message:"Include argument type mismatch",category:"type"},E030:{code:"E030",message:"Collection element type does not have an 'id' field",category:"type"},E030a:{code:"E030a",message:"Collection element 'id' field is not a primitive type",category:"type"},E030b:{code:"E030b",message:"Duplicate '.id' values detected in state initializer",category:"type"},E031:{code:"E031",message:"updateById/removeById not allowed in this context",category:"semantic"},E032:{code:"E032",message:"Nested transform primitive",category:"semantic"},E033:{code:"E033",message:"Transform primitive collection argument is not a state path",category:"semantic"},E034:{code:"E034",message:"Transform primitive in guard condition",category:"semantic"},E035:{code:"E035",message:"Transform primitive in available condition",category:"semantic"},E040:{code:"E040",message:"Circular computed dependency",category:"semantic"},E041:{code:"E041",message:"Computed references undeclared identifier",category:"semantic"},E042:{code:"E042",message:"State initializer references non-constant value",category:"semantic"},E043:{code:"E043",message:"Non-trivial union type cannot be lowered to FieldSpec",category:"type"},E044:{code:"E044",message:"Recursive named type cannot be lowered to FieldSpec",category:"type"},E045:{code:"E045",message:"Nullable type cannot be lowered to FieldSpec",category:"type"},E046:{code:"E046",message:"Record type cannot be lowered to FieldSpec",category:"type"},E047:{code:"E047",message:"dispatchable expression must be pure (state/computed/action parameters only)",category:"semantic"},E048:{code:"E048",message:"Transform primitive in dispatchable condition",category:"semantic"},E049:{code:"E049",message:"Invalid literal clamp bounds",category:"semantic"},E050:{code:"E050",message:"Invalid match() form",category:"semantic"},E051:{code:"E051",message:"Duplicate match() key",category:"semantic"},E052:{code:"E052",message:"Invalid argmax()/argmin() form",category:"semantic"},E_UNDEFINED:{code:"E_UNDEFINED",message:"Undefined identifier",category:"semantic"},E_DUPLICATE:{code:"E_DUPLICATE",message:"Duplicate identifier",category:"semantic"},E_INVALID_ACCESS:{code:"E_INVALID_ACCESS",message:"Invalid access to identifier in this context",category:"semantic"},E_UNGUARDED_STMT:{code:"E_UNGUARDED_STMT",message:"Statement must be inside a guard (when or once)",category:"semantic"},E_UNGUARDED_PATCH:{code:"E_UNGUARDED_PATCH",message:"Patch must be inside a guard",category:"semantic"},E_UNGUARDED_EFFECT:{code:"E_UNGUARDED_EFFECT",message:"Effect must be inside a guard",category:"semantic"},E_ARG_COUNT:{code:"E_ARG_COUNT",message:"Wrong number of arguments",category:"type"},E_TYPE_MISMATCH:{code:"E_TYPE_MISMATCH",message:"Type mismatch",category:"type"},W_NON_BOOL_COND:{code:"W_NON_BOOL_COND",message:"Condition may not be boolean",category:"semantic"},W_UNUSED:{code:"W_UNUSED",message:"Unused identifier",category:"semantic"},W012:{code:"W012",message:"Anonymous object type in state field - use named type declaration instead",category:"type"},MEL_LEXER:{code:"MEL_LEXER",message:"Lexer error",category:"syntax"},MEL_PARSER:{code:"MEL_PARSER",message:"Parser error",category:"syntax"}};function ar(e){return J[e]}function or(e){let t=J[e];return t?`${e}: ${t.message}`:e}function Y(e,t){let{code:n,message:r,location:a}=e;if(!a||a.start.line===0&&a.start.column===0)return`[${n}] ${r}`;let{line:o,column:i}=a.start,c=`[${n}] ${r} (${o}:${i})`;if(!t)return c;let y=t.split(`
2
- `)[o-1];if(!y)return c;let p=String(o).padStart(4," "),f=`${p} | ${y}`,d=Math.max(1,a.end.line===a.start.line?Math.min(a.end.column-i,y.length-i+1):1),E=`${" ".repeat(p.length+3+i-1)}${"^".repeat(d)}`;return`${c}
1
+ import{$ as H,A as yt,B as ht,C as Et,D as w,E as kt,F as vt,G as z,H as bt,I as Nt,J as Ct,K as Pt,L as $t,M as At,N as St,O as xt,P as wt,Q as Rt,R as Ot,S as Ft,T as S,U as jt,V as Tt,W as Dt,X as It,Y as _t,Z as B,_ as K,a as Kn,aa as Mt,b as Hn,ba as qt,c as Jn,ca as Lt,d as Xn,da as Ut,e as Yn,f as Qn,g as Zn,h as et,i as nt,j as tt,k as rt,l as _,m as at,n as ot,o as it,p as st,q as ut,r as ct,s as lt,t as dt,u as pt,v as M,w as ft,x as mt,y as G,z as gt}from"./chunk-JNATEPDW.js";var J={E001:{code:"E001",message:"$system.* cannot be used in computed expressions (non-deterministic)",category:"semantic"},E002:{code:"E002",message:"$system.* cannot be used in state initializers",category:"semantic"},E003:{code:"E003",message:"Invalid $system reference",category:"semantic"},E004:{code:"E004",message:"Identifier starts with reserved prefix '__sys__'",category:"syntax"},E005:{code:"E005",message:"available expression must be pure (no Effects, no $system.*)",category:"semantic"},E006:{code:"E006",message:"fail must be inside a guard (when, once, or onceIntent)",category:"semantic"},E007:{code:"E007",message:"stop must be inside a guard (when, once, or onceIntent)",category:"semantic"},E008:{code:"E008",message:"stop message suggests waiting/pending - use 'Already processed' style instead",category:"semantic"},E009:{code:"E009",message:"Primitive aggregation (sum, min, max) only allowed in computed",category:"semantic"},E010:{code:"E010",message:"Primitive aggregation does not allow composition - use direct reference only",category:"semantic"},E011:{code:"E011",message:"reduce/fold/scan is forbidden - use sum, min, max for aggregation",category:"semantic"},E013:{code:"E013",message:"Circular include detected",category:"semantic"},E014:{code:"E014",message:"Include expansion depth exceeds limit",category:"semantic"},E015:{code:"E015",message:"Include target is not a declared flow",category:"semantic"},E016:{code:"E016",message:"Include not allowed in InnerStmt position",category:"semantic"},E017:{code:"E017",message:"once() not allowed in flow",category:"semantic"},E018:{code:"E018",message:"onceIntent not allowed in flow",category:"semantic"},E019:{code:"E019",message:"patch not allowed in flow",category:"semantic"},E020:{code:"E020",message:"effect not allowed in flow",category:"semantic"},E021:{code:"E021",message:"Flow parameter name conflicts with top-level identifier",category:"semantic"},E022:{code:"E022",message:"Flow and action share the same name",category:"semantic"},E023:{code:"E023",message:"Wrong number of arguments for included flow",category:"semantic"},E024:{code:"E024",message:"Include argument type mismatch",category:"type"},E030:{code:"E030",message:"Collection element type does not have an 'id' field",category:"type"},E030a:{code:"E030a",message:"Collection element 'id' field is not a primitive type",category:"type"},E030b:{code:"E030b",message:"Duplicate '.id' values detected in state initializer",category:"type"},E031:{code:"E031",message:"updateById/removeById not allowed in this context",category:"semantic"},E032:{code:"E032",message:"Nested transform primitive",category:"semantic"},E033:{code:"E033",message:"Transform primitive collection argument is not a state path",category:"semantic"},E034:{code:"E034",message:"Transform primitive in guard condition",category:"semantic"},E035:{code:"E035",message:"Transform primitive in available condition",category:"semantic"},E040:{code:"E040",message:"Circular computed dependency",category:"semantic"},E041:{code:"E041",message:"Computed references undeclared identifier",category:"semantic"},E042:{code:"E042",message:"State initializer references non-constant value",category:"semantic"},E043:{code:"E043",message:"Non-trivial union type cannot be lowered to FieldSpec",category:"type"},E044:{code:"E044",message:"Recursive named type cannot be lowered to FieldSpec",category:"type"},E045:{code:"E045",message:"Nullable type cannot be lowered to FieldSpec",category:"type"},E046:{code:"E046",message:"Record type cannot be lowered to FieldSpec",category:"type"},E047:{code:"E047",message:"dispatchable expression must be pure (state/computed/action parameters only)",category:"semantic"},E048:{code:"E048",message:"Transform primitive in dispatchable condition",category:"semantic"},E049:{code:"E049",message:"Invalid literal clamp bounds",category:"semantic"},E050:{code:"E050",message:"Invalid match() form",category:"semantic"},E051:{code:"E051",message:"Duplicate match() key",category:"semantic"},E052:{code:"E052",message:"Invalid argmax()/argmin() form",category:"semantic"},E053:{code:"E053",message:"@meta can attach only to domain, type, type field, state field, computed, or action declarations",category:"syntax"},E054:{code:"E054",message:"Action-parameter annotations are not part of the current MEL syntax",category:"syntax"},E055:{code:"E055",message:"Annotation payloads must be JSON-like literals",category:"semantic"},E056:{code:"E056",message:"Annotation payload nesting exceeds the current MEL limit of 2 levels",category:"semantic"},E057:{code:"E057",message:"Annotation target does not map to the emitted DomainSchema",category:"semantic"},E_UNDEFINED:{code:"E_UNDEFINED",message:"Undefined identifier",category:"semantic"},E_DUPLICATE:{code:"E_DUPLICATE",message:"Duplicate identifier",category:"semantic"},E_INVALID_ACCESS:{code:"E_INVALID_ACCESS",message:"Invalid access to identifier in this context",category:"semantic"},E_UNGUARDED_STMT:{code:"E_UNGUARDED_STMT",message:"Statement must be inside a guard (when or once)",category:"semantic"},E_UNGUARDED_PATCH:{code:"E_UNGUARDED_PATCH",message:"Patch must be inside a guard",category:"semantic"},E_UNGUARDED_EFFECT:{code:"E_UNGUARDED_EFFECT",message:"Effect must be inside a guard",category:"semantic"},E_ARG_COUNT:{code:"E_ARG_COUNT",message:"Wrong number of arguments",category:"type"},E_TYPE_MISMATCH:{code:"E_TYPE_MISMATCH",message:"Type mismatch",category:"type"},W_NON_BOOL_COND:{code:"W_NON_BOOL_COND",message:"Condition may not be boolean",category:"semantic"},W_UNUSED:{code:"W_UNUSED",message:"Unused identifier",category:"semantic"},W012:{code:"W012",message:"Anonymous object type in state field - use named type declaration instead",category:"type"},MEL_LEXER:{code:"MEL_LEXER",message:"Lexer error",category:"syntax"},MEL_PARSER:{code:"MEL_PARSER",message:"Parser error",category:"syntax"}};function zt(e){return J[e]}function Bt(e){let n=J[e];return n?`${e}: ${n.message}`:e}function X(e,n){let{code:t,message:r,location:a}=e;if(!a||a.start.line===0&&a.start.column===0)return`[${t}] ${r}`;let{line:o,column:s}=a.start,l=`[${t}] ${r} (${o}:${s})`;if(!n)return l;let y=n.split(`
2
+ `)[o-1];if(!y)return l;let h=String(o).padStart(4," "),f=`${h} | ${y}`,p=Math.max(1,a.end.line===a.start.line?Math.min(a.end.column-s,y.length-s+1):1),E=`${" ".repeat(h.length+3+s-1)}${"^".repeat(p)}`;return`${l}
3
3
  ${f}
4
- ${E}`}function ve(e,t){return e.map(n=>Y(n,t)).join(`
4
+ ${E}`}function pe(e,n){return e.map(t=>X(t,n)).join(`
5
5
 
6
- `)}function pr(e,t,n){switch(e){case"+":return{kind:"add",left:t,right:n};case"-":return{kind:"sub",left:t,right:n};case"*":return{kind:"mul",left:t,right:n};case"/":return{kind:"div",left:t,right:n};case"%":return{kind:"mod",left:t,right:n};case"==":return{kind:"eq",left:t,right:n};case"!=":return{kind:"neq",left:t,right:n};case"<":return{kind:"lt",left:t,right:n};case"<=":return{kind:"lte",left:t,right:n};case">":return{kind:"gt",left:t,right:n};case">=":return{kind:"gte",left:t,right:n};case"&&":return{kind:"and",args:[t,n]};case"||":return{kind:"or",args:[t,n]};case"??":return{kind:"coalesce",args:[t,n]}}}function fr(e,t){switch(e){case"add":return{kind:"add",left:t[0],right:t[1]};case"sub":return{kind:"sub",left:t[0],right:t[1]};case"mul":return{kind:"mul",left:t[0],right:t[1]};case"div":return{kind:"div",left:t[0],right:t[1]};case"mod":return{kind:"mod",left:t[0],right:t[1]};case"neg":return{kind:"neg",arg:t[0]};case"abs":return{kind:"abs",arg:t[0]};case"min":return t.length===1?{kind:"minArray",array:t[0]}:{kind:"min",args:t};case"max":return t.length===1?{kind:"maxArray",array:t[0]}:{kind:"max",args:t};case"sum":return{kind:"sumArray",array:t[0]};case"floor":return{kind:"floor",arg:t[0]};case"ceil":return{kind:"ceil",arg:t[0]};case"round":return{kind:"round",arg:t[0]};case"sqrt":return{kind:"sqrt",arg:t[0]};case"pow":return{kind:"pow",base:t[0],exponent:t[1]};case"eq":return{kind:"eq",left:t[0],right:t[1]};case"neq":return{kind:"neq",left:t[0],right:t[1]};case"gt":return{kind:"gt",left:t[0],right:t[1]};case"gte":return{kind:"gte",left:t[0],right:t[1]};case"lt":return{kind:"lt",left:t[0],right:t[1]};case"lte":return{kind:"lte",left:t[0],right:t[1]};case"and":return{kind:"and",args:t};case"or":return{kind:"or",args:t};case"not":return{kind:"not",arg:t[0]};case"isNull":return{kind:"isNull",arg:t[0]};case"isNotNull":return{kind:"not",arg:{kind:"isNull",arg:t[0]}};case"typeof":return{kind:"typeof",arg:t[0]};case"coalesce":return{kind:"coalesce",args:t};case"concat":return{kind:"concat",args:t};case"trim":return{kind:"trim",str:t[0]};case"lower":case"toLowerCase":return{kind:"toLowerCase",str:t[0]};case"upper":case"toUpperCase":return{kind:"toUpperCase",str:t[0]};case"strlen":case"strLen":return{kind:"strLen",str:t[0]};case"substr":case"substring":return t[2]?{kind:"substring",str:t[0],start:t[1],end:t[2]}:{kind:"substring",str:t[0],start:t[1]};case"toString":return{kind:"toString",arg:t[0]};case"len":case"length":return{kind:"len",arg:t[0]};case"at":return{kind:"at",array:t[0],index:t[1]};case"first":return{kind:"first",array:t[0]};case"last":return{kind:"last",array:t[0]};case"slice":return t[2]?{kind:"slice",array:t[0],start:t[1],end:t[2]}:{kind:"slice",array:t[0],start:t[1]};case"includes":return{kind:"includes",array:t[0],item:t[1]};case"filter":return{kind:"filter",array:t[0],predicate:t[1]};case"map":return{kind:"map",array:t[0],mapper:t[1]};case"find":return{kind:"find",array:t[0],predicate:t[1]};case"every":return{kind:"every",array:t[0],predicate:t[1]};case"some":return{kind:"some",array:t[0],predicate:t[1]};case"append":return{kind:"append",array:t[0],items:t.slice(1)};case"keys":return{kind:"keys",obj:t[0]};case"values":return{kind:"values",obj:t[0]};case"entries":return{kind:"entries",obj:t[0]};case"merge":return{kind:"merge",objects:t};case"if":case"cond":return{kind:"if",cond:t[0],then:t[1],else:t[2]};default:return{kind:"object",fields:{__call:{kind:"lit",value:e},__args:{kind:"lit",value:t}}}}}import{hashSchemaSync as Ne,semanticPathToPatchPath as be}from"@manifesto-ai/core";function Q(e){let t=structuredClone(e),n=!1;for(let[i,c]of Object.entries(t.actions)){let l=Ce(i);if(R(c.flow,l),l.slots.size!==0){n=!0;for(let y of l.slots.values())$e(t.state.fields,i,y);t.actions[i]={...c,flow:Ae(c.flow,l)}}}if(!n)return t;let{hash:r,...a}=t,o=Ne(a);return{...a,hash:o}}function Ce(e){return{actionName:e,slots:new Map}}function Se(e){switch(e){case"timestamp":case"time.now":return"number";default:return"string"}}function Pe(e){return e.replaceAll(".","_")}function O(e,t){let n=e[t];if(n&&n.type==="object")return n.required=!1,n.default??={},n.fields??={},n;let r={type:"object",required:!1,default:{},fields:{}};return e[t]=r,r}function $e(e,t,n){let r=O(e,"$mel"),a=O(r.fields??(r.fields={}),"sys"),o=O(a.fields??(a.fields={}),t),i=O(o.fields??(o.fields={}),n.normalizedKey),c=i.fields??(i.fields={});c.intent={type:"string",required:!1,default:null},c.value={type:Se(n.key),required:!1,default:null}}function we(e){return be(e)}function R(e,t){switch(e.kind){case"seq":for(let n of e.steps)R(n,t);break;case"if":C(e.cond,t),R(e.then,t),e.else&&R(e.else,t);break;case"patch":e.value&&C(e.value,t);break;case"effect":for(let n of Object.values(e.params))C(n,t);break;case"fail":e.message&&C(e.message,t);break}}function C(e,t){if(e.kind==="get"&&e.path.startsWith("$system.")){let n=e.path.slice(8);if(!t.slots.has(n)){let r=Pe(n);t.slots.set(n,{key:n,normalizedKey:r,valuePath:`$mel.sys.${t.actionName}.${r}.value`,intentPath:`$mel.sys.${t.actionName}.${r}.intent`})}return}if(e.kind==="object"){for(let n of Object.values(e.fields))n&&typeof n=="object"&&"kind"in n&&C(n,t);return}for(let n of Object.values(e))if(typeof n=="object"&&n!==null)if(Array.isArray(n))for(let r of n)typeof r=="object"&&r!==null&&"kind"in r&&C(r,t);else"kind"in n&&C(n,t)}function Ae(e,t){if(t.slots.size===0)return e;let n=[];for(let c of t.slots.values()){let l={kind:"if",cond:{kind:"neq",left:{kind:"get",path:c.intentPath},right:{kind:"get",path:"meta.intentId"}},then:{kind:"seq",steps:[{kind:"patch",op:"set",path:we(c.intentPath),value:{kind:"get",path:"meta.intentId"}},{kind:"effect",type:"system.get",params:{key:{kind:"lit",value:c.key},into:{kind:"lit",value:c.valuePath}}}]}};n.push(l)}let r=[];for(let c of t.slots.values())r.push({kind:"eq",left:{kind:"get",path:c.intentPath},right:{kind:"get",path:"meta.intentId"}});let a=r.length===1?r[0]:{kind:"and",args:r},o=F(e,t),i={kind:"if",cond:a,then:o};return{kind:"seq",steps:[...n,i]}}function F(e,t){switch(e.kind){case"seq":return{kind:"seq",steps:e.steps.map(r=>F(r,t))};case"if":return{kind:"if",cond:h(e.cond,t),then:F(e.then,t),else:e.else?F(e.else,t):void 0};case"patch":return{kind:"patch",op:e.op,path:e.path,value:e.value?h(e.value,t):void 0};case"effect":let n={};for(let[r,a]of Object.entries(e.params))n[r]=h(a,t);return{kind:"effect",type:e.type,params:n};case"fail":return{kind:"fail",code:e.code,message:e.message?h(e.message,t):void 0};default:return e}}function h(e,t){if(e.kind==="get"&&e.path.startsWith("$system.")){let n=e.path.slice(8),r=t.slots.get(n);if(r)return{kind:"get",path:r.valuePath}}switch(e.kind){case"eq":case"neq":case"gt":case"gte":case"lt":case"lte":case"add":case"sub":case"mul":case"div":case"mod":return{kind:e.kind,left:h(e.left,t),right:h(e.right,t)};case"and":case"or":case"coalesce":case"concat":case"min":case"max":case"merge":return{kind:e.kind,args:e.args.map(r=>h(r,t))};case"not":case"neg":case"abs":case"floor":case"ceil":case"round":case"isNull":case"typeof":case"toString":case"len":case"keys":case"values":case"entries":case"first":case"last":return{kind:e.kind,arg:h(e.arg,t)};case"trim":case"toLowerCase":case"toUpperCase":case"strLen":return{kind:e.kind,str:h(e.str,t)};case"at":case"includes":return{kind:e.kind,array:h(e.array,t),index:h(e.index??e.item,t)};case"filter":case"map":case"find":case"every":case"some":return{kind:e.kind,array:h(e.array,t),predicate:h(e.predicate??e.mapper,t)};case"if":return{kind:"if",cond:h(e.cond,t),then:h(e.then,t),else:h(e.else,t)};case"field":return{kind:"field",object:h(e.object,t),property:e.property};case"object":let n={};for(let[r,a]of Object.entries(e.fields))n[r]=h(a,t);return{kind:"object",fields:n};case"append":return{kind:"append",array:h(e.array,t),items:e.items.map(r=>h(r,t))};default:return e}}function k(e){switch(e.kind){case"primitive":return e.name;case"literal":return xe(e.value);case"ref":return e.name;case"array":return`Array<${k(e.element)}>`;case"record":return`Record<${k(e.key)}, ${k(e.value)}>`;case"union":return Oe(e.members);case"object":return Re(e.fields)}}function xe(e){return e===null?"null":typeof e=="string"?`"${Z(e)}"`:typeof e=="boolean"?e?"true":"false":String(e)}function Oe(e){return e.length===0?"never":e.map(k).join(" | ")}function Re(e){return e.length===0?"{}":`{ ${e.map(n=>{let r=n.optional?"?":"";return`${n.name}${r}: ${k(n.type)}`}).join(", ")} }`}function P(e,t){let n=k(e.type);return t!==void 0?`${e.name}: ${n} = ${S(t)}`:e.optional?`${e.name}?: ${n}`:`${e.name}: ${n}`}function S(e){return e===null||e===void 0?"null":typeof e=="string"?`"${Z(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map(S).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([n,r])=>`${n}: ${S(r)}`).join(", ")} }`:String(e)}function Z(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function s(e){switch(e.kind){case"lit":return G(e.value);case"get":return Fe(e.path);case"eq":return`eq(${s(e.left)}, ${s(e.right)})`;case"neq":return`neq(${s(e.left)}, ${s(e.right)})`;case"gt":return`gt(${s(e.left)}, ${s(e.right)})`;case"gte":return`gte(${s(e.left)}, ${s(e.right)})`;case"lt":return`lt(${s(e.left)}, ${s(e.right)})`;case"lte":return`lte(${s(e.left)}, ${s(e.right)})`;case"and":return!e.args||!Array.isArray(e.args)?"and(/* malformed: args undefined */)":`and(${e.args.map(s).join(", ")})`;case"or":return!e.args||!Array.isArray(e.args)?"or(/* malformed: args undefined */)":`or(${e.args.map(s).join(", ")})`;case"not":return e.arg?`not(${s(e.arg)})`:"not(/* malformed: arg undefined */)";case"if":return`if(${s(e.cond)}, ${s(e.then)}, ${s(e.else)})`;case"add":return`add(${s(e.left)}, ${s(e.right)})`;case"sub":return`sub(${s(e.left)}, ${s(e.right)})`;case"mul":return`mul(${s(e.left)}, ${s(e.right)})`;case"div":return`div(${s(e.left)}, ${s(e.right)})`;case"mod":return`mod(${s(e.left)}, ${s(e.right)})`;case"concat":return!e.args||!Array.isArray(e.args)?"concat(/* malformed: args undefined */)":`concat(${e.args.map(s).join(", ")})`;case"substring":return e.end!==void 0?`substring(${s(e.str)}, ${s(e.start)}, ${s(e.end)})`:`substring(${s(e.str)}, ${s(e.start)})`;case"trim":return`trim(${s(e.str)})`;case"len":return`len(${s(e.arg)})`;case"at":return`at(${s(e.array)}, ${s(e.index)})`;case"first":return`first(${s(e.array)})`;case"last":return`last(${s(e.array)})`;case"slice":return e.end!==void 0?`slice(${s(e.array)}, ${s(e.start)}, ${s(e.end)})`:`slice(${s(e.array)}, ${s(e.start)})`;case"includes":return`includes(${s(e.array)}, ${s(e.item)})`;case"filter":return`filter(${s(e.array)}, ${s(e.predicate)})`;case"map":return`map(${s(e.array)}, ${s(e.mapper)})`;case"find":return`find(${s(e.array)}, ${s(e.predicate)})`;case"every":return`every(${s(e.array)}, ${s(e.predicate)})`;case"some":return`some(${s(e.array)}, ${s(e.predicate)})`;case"append":return!e.items||!Array.isArray(e.items)?`append(${s(e.array)}, /* malformed: items undefined */)`:`append(${s(e.array)}, ${e.items.map(s).join(", ")})`;case"object":return je(e.fields);case"field":return`${s(e.object)}.${e.property}`;case"keys":return`keys(${s(e.obj)})`;case"values":return`values(${s(e.obj)})`;case"entries":return`entries(${s(e.obj)})`;case"merge":return!e.objects||!Array.isArray(e.objects)?"merge(/* malformed: objects undefined */)":`merge(${e.objects.map(s).join(", ")})`;case"typeof":return`typeof(${s(e.arg)})`;case"isNull":return`isNull(${s(e.arg)})`;case"coalesce":return!e.args||!Array.isArray(e.args)?"coalesce(/* malformed: args undefined */)":`coalesce(${e.args.map(s).join(", ")})`;default:return`/* unknown: ${JSON.stringify(e)} */`}}function G(e){return e===null||e===void 0?"null":typeof e=="string"?`"${Te(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map(G).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([n,r])=>`${n}: ${G(r)}`).join(", ")} }`:String(e)}function Fe(e){return e.startsWith("$meta.")||e.startsWith("$system.")||e.startsWith("$input.")?e:e.startsWith("data.")?e.slice(5):e}function je(e){return`{ ${Object.entries(e).map(([n,r])=>`${n}: ${s(r)}`).join(", ")} }`}function Te(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}import{parsePath as ee}from"@manifesto-ai/core";var De={indent:" ",includeComments:!1,commentPrefix:"// "};function N(e,t){let n={...De,...t};switch(e.kind){case"addType":return Ie(e,n);case"addField":return _e(e,n);case"setFieldType":return Me(e,n);case"setDefaultValue":return Ge(e,n);case"addConstraint":return qe(e,n);case"addComputed":return Le(e,n);case"addActionAvailable":return Ue(e,n);default:return`// Unknown operation: ${JSON.stringify(e)}`}}function Ie(e,t){let{indent:n}=t;if(e.typeExpr.kind==="object"){let r=e.typeExpr.fields.map(a=>`${n}${P(a)}`).join(`
6
+ `)}function Zt(e,n,t){switch(e){case"+":return{kind:"add",left:n,right:t};case"-":return{kind:"sub",left:n,right:t};case"*":return{kind:"mul",left:n,right:t};case"/":return{kind:"div",left:n,right:t};case"%":return{kind:"mod",left:n,right:t};case"==":return{kind:"eq",left:n,right:t};case"!=":return{kind:"neq",left:n,right:t};case"<":return{kind:"lt",left:n,right:t};case"<=":return{kind:"lte",left:n,right:t};case">":return{kind:"gt",left:n,right:t};case">=":return{kind:"gte",left:n,right:t};case"&&":return{kind:"and",args:[n,t]};case"||":return{kind:"or",args:[n,t]};case"??":return{kind:"coalesce",args:[n,t]}}}function er(e,n){switch(e){case"add":return{kind:"add",left:n[0],right:n[1]};case"sub":return{kind:"sub",left:n[0],right:n[1]};case"mul":return{kind:"mul",left:n[0],right:n[1]};case"div":return{kind:"div",left:n[0],right:n[1]};case"mod":return{kind:"mod",left:n[0],right:n[1]};case"neg":return{kind:"neg",arg:n[0]};case"abs":return{kind:"abs",arg:n[0]};case"min":return n.length===1?{kind:"minArray",array:n[0]}:{kind:"min",args:n};case"max":return n.length===1?{kind:"maxArray",array:n[0]}:{kind:"max",args:n};case"sum":return{kind:"sumArray",array:n[0]};case"floor":return{kind:"floor",arg:n[0]};case"ceil":return{kind:"ceil",arg:n[0]};case"round":return{kind:"round",arg:n[0]};case"sqrt":return{kind:"sqrt",arg:n[0]};case"pow":return{kind:"pow",base:n[0],exponent:n[1]};case"eq":return{kind:"eq",left:n[0],right:n[1]};case"neq":return{kind:"neq",left:n[0],right:n[1]};case"gt":return{kind:"gt",left:n[0],right:n[1]};case"gte":return{kind:"gte",left:n[0],right:n[1]};case"lt":return{kind:"lt",left:n[0],right:n[1]};case"lte":return{kind:"lte",left:n[0],right:n[1]};case"and":return{kind:"and",args:n};case"or":return{kind:"or",args:n};case"not":return{kind:"not",arg:n[0]};case"isNull":return{kind:"isNull",arg:n[0]};case"isNotNull":return{kind:"not",arg:{kind:"isNull",arg:n[0]}};case"typeof":return{kind:"typeof",arg:n[0]};case"coalesce":return{kind:"coalesce",args:n};case"concat":return{kind:"concat",args:n};case"trim":return{kind:"trim",str:n[0]};case"lower":case"toLowerCase":return{kind:"toLowerCase",str:n[0]};case"upper":case"toUpperCase":return{kind:"toUpperCase",str:n[0]};case"strlen":case"strLen":return{kind:"strLen",str:n[0]};case"substr":case"substring":return n[2]?{kind:"substring",str:n[0],start:n[1],end:n[2]}:{kind:"substring",str:n[0],start:n[1]};case"toString":return{kind:"toString",arg:n[0]};case"len":case"length":return{kind:"len",arg:n[0]};case"at":return{kind:"at",array:n[0],index:n[1]};case"first":return{kind:"first",array:n[0]};case"last":return{kind:"last",array:n[0]};case"slice":return n[2]?{kind:"slice",array:n[0],start:n[1],end:n[2]}:{kind:"slice",array:n[0],start:n[1]};case"includes":return{kind:"includes",array:n[0],item:n[1]};case"filter":return{kind:"filter",array:n[0],predicate:n[1]};case"map":return{kind:"map",array:n[0],mapper:n[1]};case"find":return{kind:"find",array:n[0],predicate:n[1]};case"every":return{kind:"every",array:n[0],predicate:n[1]};case"some":return{kind:"some",array:n[0],predicate:n[1]};case"append":return{kind:"append",array:n[0],items:n.slice(1)};case"keys":return{kind:"keys",obj:n[0]};case"values":return{kind:"values",obj:n[0]};case"entries":return{kind:"entries",obj:n[0]};case"merge":return{kind:"merge",objects:n};case"if":case"cond":return{kind:"if",cond:n[0],then:n[1],else:n[2]};default:return{kind:"object",fields:{__call:{kind:"lit",value:e},__args:{kind:"lit",value:n}}}}}import{hashSchemaSync as fe,semanticPathToPatchPath as me}from"@manifesto-ai/core";function Y(e){let n=structuredClone(e),t=!1;for(let[s,l]of Object.entries(n.actions)){let c=ge(s);if(O(l.flow,c),c.slots.size!==0){t=!0;for(let y of c.slots.values())Ee(n.state.fields,s,y);n.actions[s]={...l,flow:ve(l.flow,c)}}}if(!t)return n;let{hash:r,...a}=n,o=fe(a);return{...a,hash:o}}function ge(e){return{actionName:e,slots:new Map}}function ye(e){switch(e){case"timestamp":case"time.now":return"number";default:return"string"}}function he(e){return e.replaceAll(".","_")}function R(e,n){let t=e[n];if(t&&t.type==="object")return t.required=!1,t.default??={},t.fields??={},t;let r={type:"object",required:!1,default:{},fields:{}};return e[n]=r,r}function Ee(e,n,t){let r=R(e,"$mel"),a=R(r.fields??(r.fields={}),"sys"),o=R(a.fields??(a.fields={}),n),s=R(o.fields??(o.fields={}),t.normalizedKey),l=s.fields??(s.fields={});l.intent={type:"string",required:!1,default:null},l.value={type:ye(t.key),required:!1,default:null}}function ke(e){return me(e)}function O(e,n){switch(e.kind){case"seq":for(let t of e.steps)O(t,n);break;case"if":C(e.cond,n),O(e.then,n),e.else&&O(e.else,n);break;case"patch":e.value&&C(e.value,n);break;case"effect":for(let t of Object.values(e.params))C(t,n);break;case"fail":e.message&&C(e.message,n);break}}function C(e,n){if(e.kind==="get"&&e.path.startsWith("$system.")){let t=e.path.slice(8);if(!n.slots.has(t)){let r=he(t);n.slots.set(t,{key:t,normalizedKey:r,valuePath:`$mel.sys.${n.actionName}.${r}.value`,intentPath:`$mel.sys.${n.actionName}.${r}.intent`})}return}if(e.kind==="object"){for(let t of Object.values(e.fields))t&&typeof t=="object"&&"kind"in t&&C(t,n);return}for(let t of Object.values(e))if(typeof t=="object"&&t!==null)if(Array.isArray(t))for(let r of t)typeof r=="object"&&r!==null&&"kind"in r&&C(r,n);else"kind"in t&&C(t,n)}function ve(e,n){if(n.slots.size===0)return e;let t=[];for(let l of n.slots.values()){let c={kind:"if",cond:{kind:"neq",left:{kind:"get",path:l.intentPath},right:{kind:"get",path:"meta.intentId"}},then:{kind:"seq",steps:[{kind:"patch",op:"set",path:ke(l.intentPath),value:{kind:"get",path:"meta.intentId"}},{kind:"effect",type:"system.get",params:{key:{kind:"lit",value:l.key},into:{kind:"lit",value:l.valuePath}}}]}};t.push(c)}let r=[];for(let l of n.slots.values())r.push({kind:"eq",left:{kind:"get",path:l.intentPath},right:{kind:"get",path:"meta.intentId"}});let a=r.length===1?r[0]:{kind:"and",args:r},o=F(e,n),s={kind:"if",cond:a,then:o};return{kind:"seq",steps:[...t,s]}}function F(e,n){switch(e.kind){case"seq":return{kind:"seq",steps:e.steps.map(r=>F(r,n))};case"if":return{kind:"if",cond:m(e.cond,n),then:F(e.then,n),else:e.else?F(e.else,n):void 0};case"patch":return{kind:"patch",op:e.op,path:e.path,value:e.value?m(e.value,n):void 0};case"effect":let t={};for(let[r,a]of Object.entries(e.params))t[r]=m(a,n);return{kind:"effect",type:e.type,params:t};case"fail":return{kind:"fail",code:e.code,message:e.message?m(e.message,n):void 0};default:return e}}function m(e,n){if(e.kind==="get"&&e.path.startsWith("$system.")){let t=e.path.slice(8),r=n.slots.get(t);if(r)return{kind:"get",path:r.valuePath}}switch(e.kind){case"eq":case"neq":case"gt":case"gte":case"lt":case"lte":case"add":case"sub":case"mul":case"div":case"mod":return{kind:e.kind,left:m(e.left,n),right:m(e.right,n)};case"and":case"or":case"coalesce":case"concat":case"min":case"max":case"merge":return{kind:e.kind,args:e.args.map(r=>m(r,n))};case"not":case"neg":case"abs":case"floor":case"ceil":case"round":case"isNull":case"typeof":case"toString":case"len":case"keys":case"values":case"entries":case"first":case"last":return{kind:e.kind,arg:m(e.arg,n)};case"trim":case"toLowerCase":case"toUpperCase":case"strLen":return{kind:e.kind,str:m(e.str,n)};case"at":case"includes":return{kind:e.kind,array:m(e.array,n),index:m(e.index??e.item,n)};case"filter":case"map":case"find":case"every":case"some":return{kind:e.kind,array:m(e.array,n),predicate:m(e.predicate??e.mapper,n)};case"if":return{kind:"if",cond:m(e.cond,n),then:m(e.then,n),else:m(e.else,n)};case"field":return{kind:"field",object:m(e.object,n),property:e.property};case"object":let t={};for(let[r,a]of Object.entries(e.fields))t[r]=m(a,n);return{kind:"object",fields:t};case"append":return{kind:"append",array:m(e.array,n),items:e.items.map(r=>m(r,n))};default:return e}}function k(e){switch(e.kind){case"primitive":return e.name;case"literal":return be(e.value);case"ref":return e.name;case"array":return`Array<${k(e.element)}>`;case"record":return`Record<${k(e.key)}, ${k(e.value)}>`;case"union":return Ne(e.members);case"object":return Ce(e.fields)}}function be(e){return e===null?"null":typeof e=="string"?`"${Q(e)}"`:typeof e=="boolean"?e?"true":"false":String(e)}function Ne(e){return e.length===0?"never":e.map(k).join(" | ")}function Ce(e){return e.length===0?"{}":`{ ${e.map(t=>{let r=t.optional?"?":"";return`${t.name}${r}: ${k(t.type)}`}).join(", ")} }`}function $(e,n){let t=k(e.type);return n!==void 0?`${e.name}: ${t} = ${P(n)}`:e.optional?`${e.name}?: ${t}`:`${e.name}: ${t}`}function P(e){return e===null||e===void 0?"null":typeof e=="string"?`"${Q(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map(P).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([t,r])=>`${t}: ${P(r)}`).join(", ")} }`:String(e)}function Q(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function i(e){switch(e.kind){case"lit":return q(e.value);case"get":return Pe(e.path);case"eq":return`eq(${i(e.left)}, ${i(e.right)})`;case"neq":return`neq(${i(e.left)}, ${i(e.right)})`;case"gt":return`gt(${i(e.left)}, ${i(e.right)})`;case"gte":return`gte(${i(e.left)}, ${i(e.right)})`;case"lt":return`lt(${i(e.left)}, ${i(e.right)})`;case"lte":return`lte(${i(e.left)}, ${i(e.right)})`;case"and":return!e.args||!Array.isArray(e.args)?"and(/* malformed: args undefined */)":`and(${e.args.map(i).join(", ")})`;case"or":return!e.args||!Array.isArray(e.args)?"or(/* malformed: args undefined */)":`or(${e.args.map(i).join(", ")})`;case"not":return e.arg?`not(${i(e.arg)})`:"not(/* malformed: arg undefined */)";case"if":return`if(${i(e.cond)}, ${i(e.then)}, ${i(e.else)})`;case"add":return`add(${i(e.left)}, ${i(e.right)})`;case"sub":return`sub(${i(e.left)}, ${i(e.right)})`;case"mul":return`mul(${i(e.left)}, ${i(e.right)})`;case"div":return`div(${i(e.left)}, ${i(e.right)})`;case"mod":return`mod(${i(e.left)}, ${i(e.right)})`;case"concat":return!e.args||!Array.isArray(e.args)?"concat(/* malformed: args undefined */)":`concat(${e.args.map(i).join(", ")})`;case"substring":return e.end!==void 0?`substring(${i(e.str)}, ${i(e.start)}, ${i(e.end)})`:`substring(${i(e.str)}, ${i(e.start)})`;case"trim":return`trim(${i(e.str)})`;case"len":return`len(${i(e.arg)})`;case"at":return`at(${i(e.array)}, ${i(e.index)})`;case"first":return`first(${i(e.array)})`;case"last":return`last(${i(e.array)})`;case"slice":return e.end!==void 0?`slice(${i(e.array)}, ${i(e.start)}, ${i(e.end)})`:`slice(${i(e.array)}, ${i(e.start)})`;case"includes":return`includes(${i(e.array)}, ${i(e.item)})`;case"filter":return`filter(${i(e.array)}, ${i(e.predicate)})`;case"map":return`map(${i(e.array)}, ${i(e.mapper)})`;case"find":return`find(${i(e.array)}, ${i(e.predicate)})`;case"every":return`every(${i(e.array)}, ${i(e.predicate)})`;case"some":return`some(${i(e.array)}, ${i(e.predicate)})`;case"append":return!e.items||!Array.isArray(e.items)?`append(${i(e.array)}, /* malformed: items undefined */)`:`append(${i(e.array)}, ${e.items.map(i).join(", ")})`;case"object":return $e(e.fields);case"field":return`${i(e.object)}.${e.property}`;case"keys":return`keys(${i(e.obj)})`;case"values":return`values(${i(e.obj)})`;case"entries":return`entries(${i(e.obj)})`;case"merge":return!e.objects||!Array.isArray(e.objects)?"merge(/* malformed: objects undefined */)":`merge(${e.objects.map(i).join(", ")})`;case"typeof":return`typeof(${i(e.arg)})`;case"isNull":return`isNull(${i(e.arg)})`;case"coalesce":return!e.args||!Array.isArray(e.args)?"coalesce(/* malformed: args undefined */)":`coalesce(${e.args.map(i).join(", ")})`;default:return`/* unknown: ${JSON.stringify(e)} */`}}function q(e){return e===null||e===void 0?"null":typeof e=="string"?`"${Ae(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map(q).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([t,r])=>`${t}: ${q(r)}`).join(", ")} }`:String(e)}function Pe(e){return e.startsWith("$meta.")||e.startsWith("$system.")||e.startsWith("$input.")?e:e.startsWith("data.")?e.slice(5):e}function $e(e){return`{ ${Object.entries(e).map(([t,r])=>`${t}: ${i(r)}`).join(", ")} }`}function Ae(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}import{parsePath as Z}from"@manifesto-ai/core";var Se={indent:" ",includeComments:!1,commentPrefix:"// "};function b(e,n){let t={...Se,...n};switch(e.kind){case"addType":return xe(e,t);case"addField":return we(e,t);case"setFieldType":return Re(e,t);case"setDefaultValue":return Oe(e,t);case"addConstraint":return Fe(e,t);case"addComputed":return je(e,t);case"addActionAvailable":return Te(e,t);default:return`// Unknown operation: ${JSON.stringify(e)}`}}function xe(e,n){let{indent:t}=n;if(e.typeExpr.kind==="object"){let r=e.typeExpr.fields.map(a=>`${t}${$(a)}`).join(`
7
7
  `);return`type ${e.typeName} {
8
8
  ${r}
9
- }`}return`type ${e.typeName} = ${k(e.typeExpr)}`}function _e(e,t){let n=e.field;return"defaultValue"in n&&n.defaultValue!==void 0?P(n,n.defaultValue):P(n)}function Me(e,t){let n=k(e.typeExpr),r=te(e.path),a=[];return t.includeComments&&a.push(`${t.commentPrefix}Change ${e.path} type to: ${n}`),a.push(`${r}: ${n}`),a.join(`
10
- `)}function Ge(e,t){let n=te(e.path),r=S(e.value),a=[];return t.includeComments&&a.push(`${t.commentPrefix}Set default value for ${e.path}`),a.push(`${n} = ${r}`),a.join(`
11
- `)}function qe(e,t){let n=s(e.rule),r=e.message?` - "${e.message}"`:"";return`${t.commentPrefix}Constraint on ${e.targetPath}: ${n}${r}`}function Le(e,t){let n=s(e.expr),r=[];return t.includeComments&&e.deps&&e.deps.length>0&&r.push(`${t.commentPrefix}Dependencies: ${e.deps.join(", ")}`),r.push(`computed ${e.name} = ${n}`),r.join(`
12
- `)}function Ue(e,t){let n=s(e.expr),r=[];return t.includeComments&&r.push(`${t.commentPrefix}Add availability condition to ${e.actionName}`),r.push(`action ${e.actionName}() available when ${n} {`),r.push(`${t.indent}// action body...`),r.push("}"),r.join(`
13
- `)}function te(e){let t=ee(e);return t[t.length-1]??""}function ne(e){let t=ee(e);if(t.length>=2)return t[0]}var j={indent:" ",includeComments:!0,commentPrefix:"// ",includeMetadata:!0,includeEvidence:!1,includeConfidence:!0,includeFragmentId:!1};function q(e,t){let n={...j,...t},r=[];if(n.includeMetadata){if(n.includeFragmentId&&r.push(`${n.commentPrefix}Fragment: ${e.fragmentId}`),n.includeConfidence){let o=(e.confidence*100).toFixed(0);r.push(`${n.commentPrefix}Confidence: ${o}%`)}if(n.includeEvidence&&e.evidence.length>0){r.push(`${n.commentPrefix}Evidence:`);for(let o of e.evidence)r.push(`${n.commentPrefix} - ${o}`)}}let a=N(e.op,{indent:n.indent,includeComments:n.includeComments,commentPrefix:n.commentPrefix});return r.push(a),r.join(`
14
- `)}function L(e,t){let n={...j,...t};return e.map(a=>q(a,n)).join(`
9
+ }`}return`type ${e.typeName} = ${k(e.typeExpr)}`}function we(e,n){let t=e.field;return"defaultValue"in t&&t.defaultValue!==void 0?$(t,t.defaultValue):$(t)}function Re(e,n){let t=k(e.typeExpr),r=ee(e.path),a=[];return n.includeComments&&a.push(`${n.commentPrefix}Change ${e.path} type to: ${t}`),a.push(`${r}: ${t}`),a.join(`
10
+ `)}function Oe(e,n){let t=ee(e.path),r=P(e.value),a=[];return n.includeComments&&a.push(`${n.commentPrefix}Set default value for ${e.path}`),a.push(`${t} = ${r}`),a.join(`
11
+ `)}function Fe(e,n){let t=i(e.rule),r=e.message?` - "${e.message}"`:"";return`${n.commentPrefix}Constraint on ${e.targetPath}: ${t}${r}`}function je(e,n){let t=i(e.expr),r=[];return n.includeComments&&e.deps&&e.deps.length>0&&r.push(`${n.commentPrefix}Dependencies: ${e.deps.join(", ")}`),r.push(`computed ${e.name} = ${t}`),r.join(`
12
+ `)}function Te(e,n){let t=i(e.expr),r=[];return n.includeComments&&r.push(`${n.commentPrefix}Add availability condition to ${e.actionName}`),r.push(`action ${e.actionName}() available when ${t} {`),r.push(`${n.indent}// action body...`),r.push("}"),r.join(`
13
+ `)}function ee(e){let n=Z(e);return n[n.length-1]??""}function ne(e){let n=Z(e);if(n.length>=2)return n[0]}var j={indent:" ",includeComments:!0,commentPrefix:"// ",includeMetadata:!0,includeEvidence:!1,includeConfidence:!0,includeFragmentId:!1};function L(e,n){let t={...j,...n},r=[];if(t.includeMetadata){if(t.includeFragmentId&&r.push(`${t.commentPrefix}Fragment: ${e.fragmentId}`),t.includeConfidence){let o=(e.confidence*100).toFixed(0);r.push(`${t.commentPrefix}Confidence: ${o}%`)}if(t.includeEvidence&&e.evidence.length>0){r.push(`${t.commentPrefix}Evidence:`);for(let o of e.evidence)r.push(`${t.commentPrefix} - ${o}`)}}let a=b(e.op,{indent:t.indent,includeComments:t.includeComments,commentPrefix:t.commentPrefix});return r.push(a),r.join(`
14
+ `)}function U(e,n){let t={...j,...n};return e.map(a=>L(a,t)).join(`
15
15
 
16
- `)}function re(e,t){let n={...j,...t},r={};for(let o of e){let i=o.op.kind;r[i]||(r[i]=[]),r[i].push(o)}let a={};for(let[o,i]of Object.entries(r))a[o]=L(i,n);return a}function ae(e,t,n){let a={...j,...n}.indent??" ",o=[],i=[],c=[],l=[],y=[],p=[];for(let d of t)switch(d.op.kind){case"addType":o.push(d);break;case"addField":case"setFieldType":i.push(d);break;case"setDefaultValue":c.push(d);break;case"addComputed":l.push(d);break;case"addConstraint":y.push(d);break;case"addActionAvailable":p.push(d);break}let f=[];if(f.push(`domain ${e} {`),i.length>0||c.length>0){f.push(`${a}state {`);for(let d of[...i,...c]){let g=N(d.op,{indent:a+a,includeComments:!1});f.push(`${a}${a}${g}`)}f.push(`${a}}`),f.push("")}for(let d of o){let E=N(d.op,{indent:a,includeComments:!1}).split(`
17
- `).map(b=>`${a}${b}`).join(`
18
- `);f.push(E),f.push("")}for(let d of l){let g=N(d.op,{indent:a,includeComments:!1});f.push(`${a}${g}`)}l.length>0&&f.push("");for(let d of y){let g=N(d.op,{indent:a,includeComments:!0});f.push(`${a}${g}`)}y.length>0&&f.push("");for(let d of p){let E=N(d.op,{indent:a,includeComments:!1}).split(`
19
- `).map(b=>`${a}${b}`).join(`
16
+ `)}function te(e,n){let t={...j,...n},r={};for(let o of e){let s=o.op.kind;r[s]||(r[s]=[]),r[s].push(o)}let a={};for(let[o,s]of Object.entries(r))a[o]=U(s,t);return a}function re(e,n,t){let a={...j,...t}.indent??" ",o=[],s=[],l=[],c=[],y=[],h=[];for(let p of n)switch(p.op.kind){case"addType":o.push(p);break;case"addField":case"setFieldType":s.push(p);break;case"setDefaultValue":l.push(p);break;case"addComputed":c.push(p);break;case"addConstraint":y.push(p);break;case"addActionAvailable":h.push(p);break}let f=[];if(f.push(`domain ${e} {`),s.length>0||l.length>0){f.push(`${a}state {`);for(let p of[...s,...l]){let g=b(p.op,{indent:a+a,includeComments:!1});f.push(`${a}${a}${g}`)}f.push(`${a}}`),f.push("")}for(let p of o){let E=b(p.op,{indent:a,includeComments:!1}).split(`
17
+ `).map(N=>`${a}${N}`).join(`
18
+ `);f.push(E),f.push("")}for(let p of c){let g=b(p.op,{indent:a,includeComments:!1});f.push(`${a}${g}`)}c.length>0&&f.push("");for(let p of y){let g=b(p.op,{indent:a,includeComments:!0});f.push(`${a}${g}`)}y.length>0&&f.push("");for(let p of h){let E=b(p.op,{indent:a,includeComments:!1}).split(`
19
+ `).map(N=>`${a}${N}`).join(`
20
20
  `);f.push(E),f.push("")}return f.push("}"),f.join(`
21
- `)}import{parsePath as Ve}from"@manifesto-ai/core";function We(e){return{snapshot:e.snapshot??{data:{},computed:{}},meta:e.meta,input:e.input??{},item:e.item}}function U(e,t,n){let r=structuredClone(e.data);return ze(r,t,n),{data:r,computed:e.computed}}function ze(e,t,n){let r=Ve(t),a=e;for(let i=0;i<r.length-1;i++){let c=r[i];(!(c in a)||typeof a[c]!="object")&&(a[c]={}),a=a[c]}let o=r[r.length-1];a[o]=n}import{parsePath as Ke}from"@manifesto-ai/core";function v(e,t){try{return u(e,t)}catch{return null}}function u(e,t){switch(e.kind){case"lit":return e.value;case"get":return Be(e.path,t);case"eq":return oe(e.left,e.right,t);case"neq":return He(e.left,e.right,t);case"gt":return T(e.left,e.right,t,(n,r)=>n>r);case"gte":return T(e.left,e.right,t,(n,r)=>n>=r);case"lt":return T(e.left,e.right,t,(n,r)=>n<r);case"lte":return T(e.left,e.right,t,(n,r)=>n<=r);case"and":return Xe(e.args,t);case"or":return Je(e.args,t);case"not":return Ye(e.arg,t);case"if":return Qe(e.cond,e.then,e.else,t);case"add":return V(e.left,e.right,t,(n,r)=>n+r);case"sub":return V(e.left,e.right,t,(n,r)=>n-r);case"mul":return V(e.left,e.right,t,(n,r)=>n*r);case"div":return Ze(e.left,e.right,t);case"mod":return et(e.left,e.right,t);case"neg":return tt(e.arg,t);case"min":return nt(e.args,t);case"max":return rt(e.args,t);case"abs":return at(e.arg,t);case"floor":return ot(e.arg,t);case"ceil":return it(e.arg,t);case"round":return st(e.arg,t);case"sqrt":return ut(e.arg,t);case"pow":return ct(e.base,e.exponent,t);case"concat":return lt(e.args,t);case"substring":return dt(e.str,e.start,e.end,t);case"trim":return pt(e.str,t);case"len":return ft(e.arg,t);case"at":return mt(e.array,e.index,t);case"first":return gt(e.array,t);case"last":return yt(e.array,t);case"slice":return ht(e.array,e.start,e.end,t);case"includes":return Et(e.array,e.item,t);case"filter":return kt(e.array,e.predicate,t);case"map":return vt(e.array,e.mapper,t);case"find":return Nt(e.array,e.predicate,t);case"every":return bt(e.array,e.predicate,t);case"some":return Ct(e.array,e.predicate,t);case"append":return St(e.array,e.items,t);case"sumArray":return Pt(e.array,t);case"minArray":return $t(e.array,t);case"maxArray":return wt(e.array,t);case"object":return At(e.fields,t);case"field":return xt(e.object,e.property,t);case"keys":return Ot(e.obj,t);case"values":return Rt(e.obj,t);case"entries":return Ft(e.obj,t);case"merge":return jt(e.objects,t);case"typeof":return Tt(e.arg,t);case"isNull":return Dt(e.arg,t);case"coalesce":return It(e.args,t);default:return null}}function Be(e,t){let n=Ke(e);return n[0]==="meta"?A(t.meta,n.slice(1)):n[0]==="input"?A(t.input,n.slice(1)):n[0]==="$item"?t.item===void 0?null:n.length===1?t.item:A(t.item,n.slice(1)):e in t.snapshot.computed?t.snapshot.computed[e]:A(t.snapshot.data,n)}function A(e,t){if(t.length===0)return e;if(e==null||typeof e!="object")return null;let[n,...r]=t,a=e[n];return r.length===0?a===void 0?null:a:A(a,r)}function oe(e,t,n){let r=u(e,n),a=u(t,n);return D(r,a)}function He(e,t,n){let r=oe(e,t,n);return r===null?null:!r}function T(e,t,n,r){let a=u(e,n),o=u(t,n);return typeof a!="number"||typeof o!="number"?null:r(a,o)}function D(e,t){if(e===t)return!0;if(e===null||t===null)return e===t;if(typeof e!=typeof t)return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((n,r)=>D(n,t[r]));if(typeof e=="object"&&typeof t=="object"){let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(a=>Object.prototype.hasOwnProperty.call(t,a)&&D(e[a],t[a]))}return!1}function Xe(e,t){for(let n of e){let r=u(n,t);if(r!==!0)return r===!1?!1:null}return!0}function Je(e,t){for(let n of e){let r=u(n,t);if(r===!0)return!0;if(r!==!1)return null}return!1}function Ye(e,t){let n=u(e,t);return typeof n!="boolean"?null:!n}function Qe(e,t,n,r){let a=u(e,r);return a===!0?u(t,r):a===!1?u(n,r):null}function V(e,t,n,r){let a=u(e,n),o=u(t,n);if(typeof a!="number"||typeof o!="number")return null;let i=r(a,o);return Number.isFinite(i)?i:null}function Ze(e,t,n){let r=u(e,n),a=u(t,n);return typeof r!="number"||typeof a!="number"||a===0?null:r/a}function et(e,t,n){let r=u(e,n),a=u(t,n);return typeof r!="number"||typeof a!="number"||a===0?null:r%a}function tt(e,t){let n=u(e,t);return typeof n=="number"?-n:null}function nt(e,t){if(e.length===0)return null;let n=null;for(let r of e){let a=u(r,t);if(typeof a!="number")return null;n=n===null?a:Math.min(n,a)}return n}function rt(e,t){if(e.length===0)return null;let n=null;for(let r of e){let a=u(r,t);if(typeof a!="number")return null;n=n===null?a:Math.max(n,a)}return n}function at(e,t){let n=u(e,t);return typeof n=="number"?Math.abs(n):null}function ot(e,t){let n=u(e,t);return typeof n=="number"?Math.floor(n):null}function it(e,t){let n=u(e,t);return typeof n=="number"?Math.ceil(n):null}function st(e,t){let n=u(e,t);return typeof n=="number"?Math.round(n):null}function ut(e,t){let n=u(e,t);return typeof n!="number"||n<0?null:Math.sqrt(n)}function ct(e,t,n){let r=u(e,n),a=u(t,n);if(typeof r!="number"||typeof a!="number")return null;let o=Math.pow(r,a);return Number.isFinite(o)?o:null}function lt(e,t){let n=[];for(let r of e){let a=u(r,t);if(typeof a!="string")return null;n.push(a)}return n.join("")}function dt(e,t,n,r){let a=u(e,r),o=u(t,r);if(typeof a!="string"||typeof o!="number")return null;if(n===void 0)return a.substring(o);let i=u(n,r);return typeof i!="number"?null:a.substring(o,i)}function pt(e,t){let n=u(e,t);return typeof n!="string"?null:n.trim()}function ft(e,t){let n=u(e,t);return Array.isArray(n)||typeof n=="string"?n.length:n!==null&&typeof n=="object"?Object.keys(n).length:null}function mt(e,t,n){let r=u(e,n),a=u(t,n);return Array.isArray(r)&&typeof a=="number"?a<0||a>=r.length?null:r[a]:typeof r=="object"&&r!==null&&!Array.isArray(r)&&typeof a=="string"?r[a]??null:null}function gt(e,t){let n=u(e,t);return!Array.isArray(n)||n.length===0?null:n[0]}function yt(e,t){let n=u(e,t);return!Array.isArray(n)||n.length===0?null:n[n.length-1]}function ht(e,t,n,r){let a=u(e,r),o=u(t,r);if(!Array.isArray(a)||typeof o!="number")return null;if(n===void 0)return a.slice(o);let i=u(n,r);return typeof i!="number"?null:a.slice(o,i)}function Et(e,t,n){let r=u(e,n),a=u(t,n);return Array.isArray(r)?r.some(o=>D(o,a)):null}function kt(e,t,n){let r=u(e,n);if(!Array.isArray(r))return null;let a=[];for(let o of r){let i={...n,item:o},c=u(t,i);if(c===!0)a.push(o);else if(c!==!1)return null}return a}function vt(e,t,n){let r=u(e,n);if(!Array.isArray(r))return null;let a=[];for(let o of r){let i={...n,item:o},c=u(t,i);a.push(c)}return a}function Nt(e,t,n){let r=u(e,n);if(!Array.isArray(r))return null;for(let a of r){let o={...n,item:a},i=u(t,o);if(i===!0)return a;if(i!==!1)return null}return null}function bt(e,t,n){let r=u(e,n);if(!Array.isArray(r))return null;for(let a of r){let o={...n,item:a},i=u(t,o);if(i===!1)return!1;if(i!==!0)return null}return!0}function Ct(e,t,n){let r=u(e,n);if(!Array.isArray(r))return null;for(let a of r){let o={...n,item:a},i=u(t,o);if(i===!0)return!0;if(i!==!1)return null}return!1}function St(e,t,n){let r=u(e,n);if(!Array.isArray(r))return null;let a=t.map(o=>u(o,n));return[...r,...a]}function Pt(e,t){let n=u(e,t);if(!Array.isArray(n))return null;let r=0;for(let a of n){if(typeof a!="number")return null;r+=a}return r}function $t(e,t){let n=u(e,t);if(!Array.isArray(n)||n.length===0)return null;let r=null;for(let a of n){if(typeof a!="number")return null;r=r===null?a:Math.min(r,a)}return r}function wt(e,t){let n=u(e,t);if(!Array.isArray(n)||n.length===0)return null;let r=null;for(let a of n){if(typeof a!="number")return null;r=r===null?a:Math.max(r,a)}return r}function At(e,t){let n={};for(let r of Object.keys(e).sort(w)){let a=e[r];n[r]=u(a,t)}return n}function xt(e,t,n){let r=u(e,n);return r===null||typeof r!="object"||Array.isArray(r)?null:r[t]??null}function Ot(e,t){let n=u(e,t);return n===null||typeof n!="object"||Array.isArray(n)?null:Object.keys(n).sort(w)}function Rt(e,t){let n=u(e,t);return n===null||typeof n!="object"||Array.isArray(n)?null:Object.keys(n).sort(w).map(r=>n[r])}function Ft(e,t){let n=u(e,t);return n===null||typeof n!="object"||Array.isArray(n)?null:Object.keys(n).sort(w).map(r=>[r,n[r]])}function jt(e,t){let n={};for(let r of e){let a=u(r,t);if(a===null||typeof a!="object"||Array.isArray(a))return null;Object.assign(n,a)}return n}function Tt(e,t){let n=u(e,t);return n===null?"null":Array.isArray(n)?"array":typeof n}function Dt(e,t){return u(e,t)===null}function It(e,t){for(let n of e){let r=u(n,t);if(r!=null)return r}return null}function _t(e,t){let n=[],r=[],a=t.snapshot;for(let o of e){let i={...t,snapshot:a};if(o.condition!==void 0){let l=v(o.condition,i);if(l!==!0){let y=l===!1?"false":l===null?"null":"non-boolean";r.push({fragmentId:o.fragmentId,reason:y});continue}}let c={fragmentId:o.fragmentId,op:o.op,confidence:o.confidence,conditionEvaluated:o.condition!==void 0};n.push(c),a=Gt(a,o.op,i)}return{patches:n,skipped:r,finalSnapshot:a}}function Mt(e,t){return e.filter(n=>n.condition===void 0?!0:v(n.condition,t)===!0).map(n=>({fragmentId:n.fragmentId,op:n.op,confidence:n.confidence,conditionEvaluated:n.condition!==void 0}))}function Gt(e,t,n){switch(t.kind){case"setDefaultValue":return U(e,t.path,t.value);case"addType":case"addField":case"setFieldType":case"addConstraint":case"addComputed":case"addActionAvailable":return e}}function qt(e,t){switch(e.kind){case"addType":case"addField":case"setFieldType":case"setDefaultValue":return e;case"addConstraint":return{...e};case"addComputed":return{...e};case"addActionAvailable":return{...e}}}function Lt(e,t){return e===void 0?!0:v(e,t)===!0}function Ut(e,t){if(e===void 0)return{passes:!0,reason:"no-condition"};let n=v(e,t);return n===!0?{passes:!0,reason:"true"}:n===!1?{passes:!1,reason:"false"}:n===null?{passes:!1,reason:"null"}:{passes:!1,reason:"non-boolean"}}import{mergeAtPatchPath as Vt,patchPathToDisplayString as ie,setByPatchPath as Wt,unsetByPatchPath as zt}from"@manifesto-ai/core";var Kt=new Set(["__proto__","constructor","prototype"]);function Bt(e,t){return le(e,t).patches}function le(e,t){let n=[],r=[],a=[],o=t.snapshot,i=[];for(let c=0;c<e.length;c++){let l=e[c],y=l.op==="set"&&I(l.path),p=i.length>0,f=y||!p?o:i[i.length-1].snapshot,d={...t,snapshot:f};if(l.condition!==void 0){let $=v(l.condition,d);if($!==!0){let ke=$===!1?"false":$===null?"null":"non-boolean";r.push({index:c,path:ce(l.path),reason:ke});continue}}let g=Jt(l.path,d);if(!g.ok){r.push({index:c,path:ce(l.path),reason:"invalid-path"}),a.push(`Skipped runtime patch at index ${c}: ${g.warning}`);continue}let E=g.path,b=l.value?v(l.value,d):void 0,m=Ht(l.op,E,b);if(m!==null&&!(l.op==="unset"&&I(l.path)&&(!p||!ue(i[i.length-1].markerPath,E)))){if(n.push(m),o=Xt(o,m),l.op==="set"&&I(l.path)){i.push({markerPath:E,snapshot:o});continue}l.op==="unset"&&I(l.path)&&i.length>0&&ue(i[i.length-1].markerPath,E)&&i.pop()}}return{patches:n,skipped:r,warnings:a,finalSnapshot:o}}function Ht(e,t,n){switch(e){case"set":return{op:"set",path:t,value:n};case"unset":return{op:"unset",path:t};case"merge":return Qt(n)?{op:"merge",path:t,value:n}:{op:"set",path:t,value:null}}}function Xt(e,t){let n=e.data;return{data:(()=>{switch(t.op){case"set":return Wt(n,t.path,t.value);case"unset":return zt(n,t.path);case"merge":return Vt(n,t.path,t.value)}})(),computed:e.computed}}function Jt(e,t){if(e.length===0)return{ok:!1,warning:"path is empty"};let n=[];for(let r=0;r<e.length;r++){let a=e[r];if(a.kind==="prop"){if(!de(a.name))return{ok:!1,warning:`invalid prop segment '${a.name}'`};n.push({kind:"prop",name:a.name});continue}let o=v(a.expr,t),i=Yt(o);if(i===null)return{ok:!1,warning:`expr segment at index ${r} resolved to invalid value`};n.push(i)}return{ok:!0,path:n}}function Yt(e){return typeof e=="number"&&Number.isInteger(e)&&Number.isFinite(e)&&e>=0?{kind:"index",index:e}:typeof e=="string"&&e.length>0&&de(e)?{kind:"prop",name:e}:null}function de(e){return e.length>0&&!Kt.has(e)}function I(e){return se(e,["$mel","__whenGuards"])||se(e,["$mel","__onceScopeGuards"])}function se(e,t){if(e.length<t.length)return!1;for(let n=0;n<t.length;n++){let r=e[n];if(r.kind!=="prop"||r.name!==t[n])return!1}return!0}function ue(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],a=t[n];if(r.kind!==a.kind||r.kind==="prop"&&a.kind==="prop"&&r.name!==a.name||r.kind==="index"&&a.kind==="index"&&r.index!==a.index)return!1}return!0}function ce(e){let t=[];for(let n of e){if(n.kind==="prop"){t.push({kind:"prop",name:n.name});continue}return t.length===0?"[expr]":`${ie(t)}.[expr]`}return t.length===0?"":ie(t)}function Qt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var Zt=new Set(["$item","$index","$array"]);function ta(e){let t=Object.keys(e.state.fields).filter(p=>!p.startsWith("$")),n=en(e),r=new Set(n),a=new Set(t),o=Object.keys(e.actions),i=[...t.map(p=>({id:W(p),kind:"state",name:p})),...n.map(p=>({id:z(p),kind:"computed",name:p})),...o.map(p=>({id:fe(p),kind:"action",name:p}))],c=new Set,l=[],y=(p,f,d)=>{if(!p||!f)return;let g=`${p}|${d}|${f}`;c.has(g)||(c.add(g),l.push({from:p,to:f,relation:d}))};for(let p of n){let f=e.computed.fields[p];if(f)for(let d of f.deps)y(pe(d,e,r,a),z(p),"feeds")}for(let p of o){let f=e.actions[p],d=fe(p);for(let g of tn(f.flow,e))a.has(g)&&y(d,W(g),"mutates");if(f.available)for(let g of Ee(f.available))y(pe(g,e,r,a),d,"unlocks")}return an({nodes:i,edges:l})}function en(e){let t=e.computed.fields,n=new Map,r=(a,o)=>{let i=n.get(a);if(i!==void 0)return i;if(o.has(a))return!1;o.add(a);let c=t[a];if(!c)return o.delete(a),n.set(a,!0),!0;for(let l of Ee(c.expr)){if(he(l))return o.delete(a),n.set(a,!1),!1;let y=me(l,t);if(y!==null&&!r(y,o))return o.delete(a),n.set(a,!1),!1}return o.delete(a),n.set(a,!0),!0};return Object.keys(t).filter(a=>r(a,new Set))}function tn(e,t){let n=new Set,r=(a,o)=>{if(a)switch(a.kind){case"seq":a.steps.forEach(i=>r(i,o));return;case"if":r(a.then,o),r(a.else,o);return;case"patch":{let i=nn(a.path);i&&n.add(i);return}case"effect":{let i=rn(a.params.into);i&&n.add(i);return}case"call":{if(o.has(a.flow))return;let i=t.actions[a.flow];if(!i)return;let c=new Set(o);c.add(a.flow),r(i.flow,c);return}case"halt":case"fail":return}};return r(e,new Set),[...n]}function nn(e){let[t]=e;return!t||t.kind!=="prop"||t.name.startsWith("$")?null:t.name}function rn(e){return typeof e!="object"||e===null||e.kind!=="lit"||typeof e.value!="string"?null:ge(e.value)}function pe(e,t,n,r){let a=me(e,t.computed.fields);if(a!==null&&n.has(a))return z(a);if(he(e))return null;let o=ge(e);return!o||!r.has(o)?null:W(o)}function me(e,t){if(Object.prototype.hasOwnProperty.call(t,e))return e;if(!e.startsWith("computed."))return null;let n=e.slice(9);return Object.prototype.hasOwnProperty.call(t,n)?n:null}function ge(e){let t=ye(e),n=t.startsWith("data.")?t.slice(5):t,r=/^([^.[\]]+)/.exec(n);if(!r)return null;let[a]=r.slice(1);return!a||a.startsWith("$")?null:a}function ye(e){return e.startsWith("/")?e.slice(1).replace(/\//g,"."):e}function he(e){let t=ye(e),n=t.startsWith("data.")?t.slice(5):t,a=/^([^.[\]]+)/.exec(n)?.[1]??"";return a.startsWith("$")?!Zt.has(a):!1}function Ee(e){let t=[],n=new WeakSet,r=a=>{if(a==null)return;if(Array.isArray(a)){a.forEach(r);return}if(typeof a!="object")return;let o=a;if(!n.has(o)&&(n.add(o),o.kind!=="lit")){if(o.kind==="get"&&typeof o.path=="string"){t.push(o.path);return}for(let i of Object.values(o))r(i)}};return r(e),t}function W(e){return`state:${e}`}function z(e){return`computed:${e}`}function fe(e){return`action:${e}`}function an(e){return Object.freeze({nodes:Object.freeze(e.nodes.map(t=>Object.freeze(t))),edges:Object.freeze([...e.edges].sort(on).map(t=>Object.freeze(t)))})}function on(e,t){return e.from.localeCompare(t.from)||e.to.localeCompare(t.to)||e.relation.localeCompare(t.relation)}function sn(e,t={}){let n=[],r=performance.now(),a=_(e);if(n.push({phase:"lex",durationMs:performance.now()-r,details:{tokenCount:a.tokens.length}}),x(a.diagnostics))return{schema:null,trace:n,warnings:a.diagnostics.filter(m=>m.severity==="warning"),errors:a.diagnostics.filter(m=>m.severity==="error"),success:!1};let o=performance.now(),i=M(a.tokens),c=i.diagnostics;if(n.push({phase:"parse",durationMs:performance.now()-o}),x(c))return{schema:null,trace:n,warnings:c.filter(m=>m.severity==="warning"),errors:c.filter(m=>m.severity==="error"),success:!1};let l=[],y=performance.now(),p=X(i.program);if(l.push(...p.diagnostics),!t.skipSemanticAnalysis){let m=K(p.program),$=B(p.program);l.push(...m.diagnostics,...$.diagnostics)}if(n.push({phase:"analyze",durationMs:performance.now()-y}),l.some(m=>m.severity==="error"))return{schema:null,trace:n,warnings:l.filter(m=>m.severity==="warning"),errors:l.filter(m=>m.severity==="error"),success:!1};let f=performance.now(),d=H(p.program);l.push(...d.diagnostics),n.push({phase:"generate",durationMs:performance.now()-f}),t.skipSemanticAnalysis&&l.push(...i.diagnostics);let g=l.filter(m=>m.severity==="error");if(d.schema===null||g.length>0)return{schema:null,trace:n,warnings:l.filter(m=>m.severity==="warning"),errors:g,success:!1};let E=d.schema;if(t.lowerSystemValues){let m=performance.now();E=Q(E),n.push({phase:"lower",durationMs:performance.now()-m})}let b=l.filter(m=>m.severity==="warning");return{schema:E,trace:n,warnings:b,errors:l.filter(m=>m.severity==="error"),success:g.length===0}}function la(e){let t=_(e);return x(t.diagnostics)?{program:null,diagnostics:t.diagnostics}:M(t.tokens)}function da(e){return sn(e).errors}export{_n as DEFAULT_ACTION_CONTEXT,Mn as DEFAULT_DISPATCHABLE_CONTEXT,qn as DEFAULT_PATCH_CONTEXT,In as DEFAULT_SCHEMA_CONTEXT,J as DIAGNOSTIC_CODES,Gn as EFFECT_ARGS_CONTEXT,un as KEYWORDS,En as Lexer,Ln as LoweringError,wn as Parser,Nn as Precedence,cn as RESERVED_KEYWORDS,An as Scope,xn as ScopeAnalyzer,Dn as SemanticValidator,K as analyzeScope,U as applyPatchToWorkingSnapshot,da as check,Ut as classifyCondition,sn as compile,Zn as compileMelDomain,er as compileMelPatch,On as createError,We as createEvaluationContext,Fn as createInfo,gn as createLocation,yn as createPointLocation,mn as createPosition,fn as createToken,Rn as createWarning,Lt as evaluateCondition,_t as evaluateConditionalPatchOps,v as evaluateExpr,qt as evaluatePatchExpressions,Mt as evaluatePatches,Bt as evaluateRuntimePatches,le as evaluateRuntimePatchesWithTrace,ta as extractSchemaGraph,ne as extractTypeName,Tn as filterBySeverity,Y as formatDiagnostic,or as formatDiagnosticCode,ve as formatDiagnostics,H as generate,Qn as generateCanonical,bn as getBinaryPrecedence,ar as getDiagnosticInfo,pn as getKeywordKind,x as hasErrors,Un as invalidKindForContext,Kn as invalidShape,Wn as invalidSysPath,Sn as isBinaryOp,jn as isError,kn as isExprNode,ln as isKeyword,dn as isReserved,$n as isRightAssociative,vn as isStmtNode,Pn as isUnaryOp,Hn as lowerExprNode,Xn as lowerPatchFragments,Yn as lowerRuntimePatch,Jn as lowerRuntimePatches,Q as lowerSystemValues,hn as mergeLocations,pr as normalizeExpr,fr as normalizeFunctionCall,M as parse,la as parseSource,ae as renderAsDomain,s as renderExprNode,q as renderFragment,L as renderFragments,re as renderFragmentsByKind,N as renderPatchOp,k as renderTypeExpr,P as renderTypeField,S as renderValue,Cn as tokenToBinaryOp,_ as tokenize,Vn as unknownCallFn,Bn as unknownNodeKind,zn as unsupportedBase,B as validateSemantics};
21
+ `)}import{parsePath as De}from"@manifesto-ai/core";function Ie(e){return{snapshot:e.snapshot??{data:{},computed:{}},meta:e.meta,input:e.input??{},item:e.item}}function V(e,n,t){let r=structuredClone(e.data);return _e(r,n,t),{data:r,computed:e.computed}}function _e(e,n,t){let r=De(n),a=e;for(let s=0;s<r.length-1;s++){let l=r[s];(!(l in a)||typeof a[l]!="object")&&(a[l]={}),a=a[l]}let o=r[r.length-1];a[o]=t}import{parsePath as Me}from"@manifesto-ai/core";function v(e,n){try{return u(e,n)}catch{return null}}function u(e,n){switch(e.kind){case"lit":return e.value;case"get":return qe(e.path,n);case"eq":return ae(e.left,e.right,n);case"neq":return Le(e.left,e.right,n);case"gt":return T(e.left,e.right,n,(t,r)=>t>r);case"gte":return T(e.left,e.right,n,(t,r)=>t>=r);case"lt":return T(e.left,e.right,n,(t,r)=>t<r);case"lte":return T(e.left,e.right,n,(t,r)=>t<=r);case"and":return Ue(e.args,n);case"or":return Ve(e.args,n);case"not":return We(e.arg,n);case"if":return Ge(e.cond,e.then,e.else,n);case"add":return W(e.left,e.right,n,(t,r)=>t+r);case"sub":return W(e.left,e.right,n,(t,r)=>t-r);case"mul":return W(e.left,e.right,n,(t,r)=>t*r);case"div":return ze(e.left,e.right,n);case"mod":return Be(e.left,e.right,n);case"neg":return Ke(e.arg,n);case"min":return He(e.args,n);case"max":return Je(e.args,n);case"abs":return Xe(e.arg,n);case"floor":return Ye(e.arg,n);case"ceil":return Qe(e.arg,n);case"round":return Ze(e.arg,n);case"sqrt":return en(e.arg,n);case"pow":return nn(e.base,e.exponent,n);case"concat":return tn(e.args,n);case"substring":return rn(e.str,e.start,e.end,n);case"trim":return an(e.str,n);case"len":return on(e.arg,n);case"at":return sn(e.array,e.index,n);case"first":return un(e.array,n);case"last":return cn(e.array,n);case"slice":return ln(e.array,e.start,e.end,n);case"includes":return dn(e.array,e.item,n);case"filter":return pn(e.array,e.predicate,n);case"map":return fn(e.array,e.mapper,n);case"find":return mn(e.array,e.predicate,n);case"every":return gn(e.array,e.predicate,n);case"some":return yn(e.array,e.predicate,n);case"append":return hn(e.array,e.items,n);case"sumArray":return En(e.array,n);case"minArray":return kn(e.array,n);case"maxArray":return vn(e.array,n);case"object":return bn(e.fields,n);case"field":return Nn(e.object,e.property,n);case"keys":return Cn(e.obj,n);case"values":return Pn(e.obj,n);case"entries":return $n(e.obj,n);case"merge":return An(e.objects,n);case"typeof":return Sn(e.arg,n);case"isNull":return xn(e.arg,n);case"coalesce":return wn(e.args,n);default:return null}}function qe(e,n){let t=Me(e);return t[0]==="meta"?x(n.meta,t.slice(1)):t[0]==="input"?x(n.input,t.slice(1)):t[0]==="$item"?n.item===void 0?null:t.length===1?n.item:x(n.item,t.slice(1)):e in n.snapshot.computed?n.snapshot.computed[e]:x(n.snapshot.data,t)}function x(e,n){if(n.length===0)return e;if(e==null||typeof e!="object")return null;let[t,...r]=n,a=e[t];return r.length===0?a===void 0?null:a:x(a,r)}function ae(e,n,t){let r=u(e,t),a=u(n,t);return D(r,a)}function Le(e,n,t){let r=ae(e,n,t);return r===null?null:!r}function T(e,n,t,r){let a=u(e,t),o=u(n,t);return typeof a!="number"||typeof o!="number"?null:r(a,o)}function D(e,n){if(e===n)return!0;if(e===null||n===null)return e===n;if(typeof e!=typeof n)return!1;if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((t,r)=>D(t,n[r]));if(typeof e=="object"&&typeof n=="object"){let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(a=>Object.prototype.hasOwnProperty.call(n,a)&&D(e[a],n[a]))}return!1}function Ue(e,n){for(let t of e){let r=u(t,n);if(r!==!0)return r===!1?!1:null}return!0}function Ve(e,n){for(let t of e){let r=u(t,n);if(r===!0)return!0;if(r!==!1)return null}return!1}function We(e,n){let t=u(e,n);return typeof t!="boolean"?null:!t}function Ge(e,n,t,r){let a=u(e,r);return a===!0?u(n,r):a===!1?u(t,r):null}function W(e,n,t,r){let a=u(e,t),o=u(n,t);if(typeof a!="number"||typeof o!="number")return null;let s=r(a,o);return Number.isFinite(s)?s:null}function ze(e,n,t){let r=u(e,t),a=u(n,t);return typeof r!="number"||typeof a!="number"||a===0?null:r/a}function Be(e,n,t){let r=u(e,t),a=u(n,t);return typeof r!="number"||typeof a!="number"||a===0?null:r%a}function Ke(e,n){let t=u(e,n);return typeof t=="number"?-t:null}function He(e,n){if(e.length===0)return null;let t=null;for(let r of e){let a=u(r,n);if(typeof a!="number")return null;t=t===null?a:Math.min(t,a)}return t}function Je(e,n){if(e.length===0)return null;let t=null;for(let r of e){let a=u(r,n);if(typeof a!="number")return null;t=t===null?a:Math.max(t,a)}return t}function Xe(e,n){let t=u(e,n);return typeof t=="number"?Math.abs(t):null}function Ye(e,n){let t=u(e,n);return typeof t=="number"?Math.floor(t):null}function Qe(e,n){let t=u(e,n);return typeof t=="number"?Math.ceil(t):null}function Ze(e,n){let t=u(e,n);return typeof t=="number"?Math.round(t):null}function en(e,n){let t=u(e,n);return typeof t!="number"||t<0?null:Math.sqrt(t)}function nn(e,n,t){let r=u(e,t),a=u(n,t);if(typeof r!="number"||typeof a!="number")return null;let o=Math.pow(r,a);return Number.isFinite(o)?o:null}function tn(e,n){let t=[];for(let r of e){let a=u(r,n);if(typeof a!="string")return null;t.push(a)}return t.join("")}function rn(e,n,t,r){let a=u(e,r),o=u(n,r);if(typeof a!="string"||typeof o!="number")return null;if(t===void 0)return a.substring(o);let s=u(t,r);return typeof s!="number"?null:a.substring(o,s)}function an(e,n){let t=u(e,n);return typeof t!="string"?null:t.trim()}function on(e,n){let t=u(e,n);return Array.isArray(t)||typeof t=="string"?t.length:t!==null&&typeof t=="object"?Object.keys(t).length:null}function sn(e,n,t){let r=u(e,t),a=u(n,t);return Array.isArray(r)&&typeof a=="number"?a<0||a>=r.length?null:r[a]:typeof r=="object"&&r!==null&&!Array.isArray(r)&&typeof a=="string"?r[a]??null:null}function un(e,n){let t=u(e,n);return!Array.isArray(t)||t.length===0?null:t[0]}function cn(e,n){let t=u(e,n);return!Array.isArray(t)||t.length===0?null:t[t.length-1]}function ln(e,n,t,r){let a=u(e,r),o=u(n,r);if(!Array.isArray(a)||typeof o!="number")return null;if(t===void 0)return a.slice(o);let s=u(t,r);return typeof s!="number"?null:a.slice(o,s)}function dn(e,n,t){let r=u(e,t),a=u(n,t);return Array.isArray(r)?r.some(o=>D(o,a)):null}function pn(e,n,t){let r=u(e,t);if(!Array.isArray(r))return null;let a=[];for(let o of r){let s={...t,item:o},l=u(n,s);if(l===!0)a.push(o);else if(l!==!1)return null}return a}function fn(e,n,t){let r=u(e,t);if(!Array.isArray(r))return null;let a=[];for(let o of r){let s={...t,item:o},l=u(n,s);a.push(l)}return a}function mn(e,n,t){let r=u(e,t);if(!Array.isArray(r))return null;for(let a of r){let o={...t,item:a},s=u(n,o);if(s===!0)return a;if(s!==!1)return null}return null}function gn(e,n,t){let r=u(e,t);if(!Array.isArray(r))return null;for(let a of r){let o={...t,item:a},s=u(n,o);if(s===!1)return!1;if(s!==!0)return null}return!0}function yn(e,n,t){let r=u(e,t);if(!Array.isArray(r))return null;for(let a of r){let o={...t,item:a},s=u(n,o);if(s===!0)return!0;if(s!==!1)return null}return!1}function hn(e,n,t){let r=u(e,t);if(!Array.isArray(r))return null;let a=n.map(o=>u(o,t));return[...r,...a]}function En(e,n){let t=u(e,n);if(!Array.isArray(t))return null;let r=0;for(let a of t){if(typeof a!="number")return null;r+=a}return r}function kn(e,n){let t=u(e,n);if(!Array.isArray(t)||t.length===0)return null;let r=null;for(let a of t){if(typeof a!="number")return null;r=r===null?a:Math.min(r,a)}return r}function vn(e,n){let t=u(e,n);if(!Array.isArray(t)||t.length===0)return null;let r=null;for(let a of t){if(typeof a!="number")return null;r=r===null?a:Math.max(r,a)}return r}function bn(e,n){let t={};for(let r of Object.keys(e).sort(S)){let a=e[r];t[r]=u(a,n)}return t}function Nn(e,n,t){let r=u(e,t);return r===null||typeof r!="object"||Array.isArray(r)?null:r[n]??null}function Cn(e,n){let t=u(e,n);return t===null||typeof t!="object"||Array.isArray(t)?null:Object.keys(t).sort(S)}function Pn(e,n){let t=u(e,n);return t===null||typeof t!="object"||Array.isArray(t)?null:Object.keys(t).sort(S).map(r=>t[r])}function $n(e,n){let t=u(e,n);return t===null||typeof t!="object"||Array.isArray(t)?null:Object.keys(t).sort(S).map(r=>[r,t[r]])}function An(e,n){let t={};for(let r of e){let a=u(r,n);if(a===null||typeof a!="object"||Array.isArray(a))return null;Object.assign(t,a)}return t}function Sn(e,n){let t=u(e,n);return t===null?"null":Array.isArray(t)?"array":typeof t}function xn(e,n){return u(e,n)===null}function wn(e,n){for(let t of e){let r=u(t,n);if(r!=null)return r}return null}function Rn(e,n){let t=[],r=[],a=n.snapshot;for(let o of e){let s={...n,snapshot:a};if(o.condition!==void 0){let c=v(o.condition,s);if(c!==!0){let y=c===!1?"false":c===null?"null":"non-boolean";r.push({fragmentId:o.fragmentId,reason:y});continue}}let l={fragmentId:o.fragmentId,op:o.op,confidence:o.confidence,conditionEvaluated:o.condition!==void 0};t.push(l),a=Fn(a,o.op,s)}return{patches:t,skipped:r,finalSnapshot:a}}function On(e,n){return e.filter(t=>t.condition===void 0?!0:v(t.condition,n)===!0).map(t=>({fragmentId:t.fragmentId,op:t.op,confidence:t.confidence,conditionEvaluated:t.condition!==void 0}))}function Fn(e,n,t){switch(n.kind){case"setDefaultValue":return V(e,n.path,n.value);case"addType":case"addField":case"setFieldType":case"addConstraint":case"addComputed":case"addActionAvailable":return e}}function jn(e,n){switch(e.kind){case"addType":case"addField":case"setFieldType":case"setDefaultValue":return e;case"addConstraint":return{...e};case"addComputed":return{...e};case"addActionAvailable":return{...e}}}function Tn(e,n){return e===void 0?!0:v(e,n)===!0}function Dn(e,n){if(e===void 0)return{passes:!0,reason:"no-condition"};let t=v(e,n);return t===!0?{passes:!0,reason:"true"}:t===!1?{passes:!1,reason:"false"}:t===null?{passes:!1,reason:"null"}:{passes:!1,reason:"non-boolean"}}import{mergeAtPatchPath as In,patchPathToDisplayString as oe,setByPatchPath as _n,unsetByPatchPath as Mn}from"@manifesto-ai/core";var qn=new Set(["__proto__","constructor","prototype"]);function Ln(e,n){return ce(e,n).patches}function ce(e,n){let t=[],r=[],a=[],o=n.snapshot,s=[];for(let l=0;l<e.length;l++){let c=e[l],y=c.op==="set"&&I(c.path),h=s.length>0,f=y||!h?o:s[s.length-1].snapshot,p={...n,snapshot:f};if(c.condition!==void 0){let A=v(c.condition,p);if(A!==!0){let de=A===!1?"false":A===null?"null":"non-boolean";r.push({index:l,path:ue(c.path),reason:de});continue}}let g=Wn(c.path,p);if(!g.ok){r.push({index:l,path:ue(c.path),reason:"invalid-path"}),a.push(`Skipped runtime patch at index ${l}: ${g.warning}`);continue}let E=g.path,N=c.value?v(c.value,p):void 0,d=Un(c.op,E,N);if(d!==null&&!(c.op==="unset"&&I(c.path)&&(!h||!se(s[s.length-1].markerPath,E)))){if(t.push(d),o=Vn(o,d),c.op==="set"&&I(c.path)){s.push({markerPath:E,snapshot:o});continue}c.op==="unset"&&I(c.path)&&s.length>0&&se(s[s.length-1].markerPath,E)&&s.pop()}}return{patches:t,skipped:r,warnings:a,finalSnapshot:o}}function Un(e,n,t){switch(e){case"set":return{op:"set",path:n,value:t};case"unset":return{op:"unset",path:n};case"merge":return zn(t)?{op:"merge",path:n,value:t}:{op:"set",path:n,value:null}}}function Vn(e,n){let t=e.data;return{data:(()=>{switch(n.op){case"set":return _n(t,n.path,n.value);case"unset":return Mn(t,n.path);case"merge":return In(t,n.path,n.value)}})(),computed:e.computed}}function Wn(e,n){if(e.length===0)return{ok:!1,warning:"path is empty"};let t=[];for(let r=0;r<e.length;r++){let a=e[r];if(a.kind==="prop"){if(!le(a.name))return{ok:!1,warning:`invalid prop segment '${a.name}'`};t.push({kind:"prop",name:a.name});continue}let o=v(a.expr,n),s=Gn(o);if(s===null)return{ok:!1,warning:`expr segment at index ${r} resolved to invalid value`};t.push(s)}return{ok:!0,path:t}}function Gn(e){return typeof e=="number"&&Number.isInteger(e)&&Number.isFinite(e)&&e>=0?{kind:"index",index:e}:typeof e=="string"&&e.length>0&&le(e)?{kind:"prop",name:e}:null}function le(e){return e.length>0&&!qn.has(e)}function I(e){return ie(e,["$mel","__whenGuards"])||ie(e,["$mel","__onceScopeGuards"])}function ie(e,n){if(e.length<n.length)return!1;for(let t=0;t<n.length;t++){let r=e[t];if(r.kind!=="prop"||r.name!==n[t])return!1}return!0}function se(e,n){if(e.length!==n.length)return!1;for(let t=0;t<e.length;t++){let r=e[t],a=n[t];if(r.kind!==a.kind||r.kind==="prop"&&a.kind==="prop"&&r.name!==a.name||r.kind==="index"&&a.kind==="index"&&r.index!==a.index)return!1}return!0}function ue(e){let n=[];for(let t of e){if(t.kind==="prop"){n.push({kind:"prop",name:t.name});continue}return n.length===0?"[expr]":`${oe(n)}.[expr]`}return n.length===0?"":oe(n)}function zn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Bn(e,n={}){let t=[],r=performance.now(),a=_(e);if(t.push({phase:"lex",durationMs:performance.now()-r,details:{tokenCount:a.tokens.length}}),w(a.diagnostics))return{schema:null,trace:t,warnings:a.diagnostics.filter(d=>d.severity==="warning"),errors:a.diagnostics.filter(d=>d.severity==="error"),success:!1};let o=performance.now(),s=M(a.tokens),l=s.diagnostics;if(t.push({phase:"parse",durationMs:performance.now()-o}),w(l))return{schema:null,trace:t,warnings:l.filter(d=>d.severity==="warning"),errors:l.filter(d=>d.severity==="error"),success:!1};let c=[],y=performance.now(),h=H(s.program);if(c.push(...h.diagnostics),!n.skipSemanticAnalysis){let d=G(h.program),A=z(h.program);c.push(...d.diagnostics,...A.diagnostics)}if(t.push({phase:"analyze",durationMs:performance.now()-y}),c.some(d=>d.severity==="error"))return{schema:null,trace:t,warnings:c.filter(d=>d.severity==="warning"),errors:c.filter(d=>d.severity==="error"),success:!1};let f=performance.now(),p=B(h.program);if(c.push(...p.diagnostics),t.push({phase:"generate",durationMs:performance.now()-f}),!n.skipSemanticAnalysis&&p.schema){let d=K(h.program,p.schema);c.push(...d.diagnostics)}n.skipSemanticAnalysis&&c.push(...s.diagnostics);let g=c.filter(d=>d.severity==="error");if(p.schema===null||g.length>0)return{schema:null,trace:t,warnings:c.filter(d=>d.severity==="warning"),errors:g,success:!1};let E=p.schema;if(n.lowerSystemValues){let d=performance.now();E=Y(E),t.push({phase:"lower",durationMs:performance.now()-d})}let N=c.filter(d=>d.severity==="warning");return{schema:E,trace:t,warnings:N,errors:c.filter(d=>d.severity==="error"),success:g.length===0}}function Xr(e){let n=_(e);return w(n.diagnostics)?{program:null,diagnostics:n.diagnostics}:M(n.tokens)}function Yr(e){return Bn(e).errors}export{Nt as DEFAULT_ACTION_CONTEXT,Ct as DEFAULT_DISPATCHABLE_CONTEXT,$t as DEFAULT_PATCH_CONTEXT,bt as DEFAULT_SCHEMA_CONTEXT,J as DIAGNOSTIC_CODES,Pt as EFFECT_ARGS_CONTEXT,Kn as KEYWORDS,rt as Lexer,At as LoweringError,pt as Parser,it as Precedence,Hn as RESERVED_KEYWORDS,ft as Scope,mt as ScopeAnalyzer,vt as SemanticValidator,G as analyzeScope,V as applyPatchToWorkingSnapshot,K as buildAnnotationIndex,Yr as check,Dn as classifyCondition,Bn as compile,qt as compileMelDomain,Lt as compileMelModule,Ut as compileMelPatch,gt as createError,Ie as createEvaluationContext,ht as createInfo,et as createLocation,nt as createPointLocation,Zn as createPosition,Qn as createToken,yt as createWarning,Tn as evaluateCondition,Rn as evaluateConditionalPatchOps,v as evaluateExpr,jn as evaluatePatchExpressions,On as evaluatePatches,Ln as evaluateRuntimePatches,ce as evaluateRuntimePatchesWithTrace,Mt as extractSchemaGraph,ne as extractTypeName,kt as filterBySeverity,X as formatDiagnostic,Bt as formatDiagnosticCode,pe as formatDiagnostics,B as generate,_t as generateCanonical,st as getBinaryPrecedence,zt as getDiagnosticInfo,Yn as getKeywordKind,w as hasErrors,St as invalidKindForContext,Ot as invalidShape,wt as invalidSysPath,ct as isBinaryOp,Et as isError,at as isExprNode,Jn as isKeyword,Xn as isReserved,dt as isRightAssociative,ot as isStmtNode,lt as isUnaryOp,jt as lowerExprNode,Tt as lowerPatchFragments,It as lowerRuntimePatch,Dt as lowerRuntimePatches,Y as lowerSystemValues,tt as mergeLocations,Zt as normalizeExpr,er as normalizeFunctionCall,M as parse,Xr as parseSource,re as renderAsDomain,i as renderExprNode,L as renderFragment,U as renderFragments,te as renderFragmentsByKind,b as renderPatchOp,k as renderTypeExpr,$ as renderTypeField,P as renderValue,ut as tokenToBinaryOp,_ as tokenize,xt as unknownCallFn,Ft as unknownNodeKind,Rt as unsupportedBase,z as validateSemantics};
@@ -6,7 +6,7 @@ import type { SourceLocation } from "./source-location.js";
6
6
  /**
7
7
  * All token kinds in MEL
8
8
  */
9
- export type TokenKind = "DOMAIN" | "STATE" | "COMPUTED" | "ACTION" | "EFFECT" | "WHEN" | "ONCE" | "PATCH" | "UNSET" | "MERGE" | "TRUE" | "FALSE" | "NULL" | "AS" | "AVAILABLE" | "DISPATCHABLE" | "FAIL" | "STOP" | "WITH" | "TYPE" | "IMPORT" | "FROM" | "EXPORT" | "PLUS" | "MINUS" | "STAR" | "SLASH" | "PERCENT" | "EQ_EQ" | "BANG_EQ" | "LT" | "LT_EQ" | "GT" | "GT_EQ" | "AMP_AMP" | "PIPE_PIPE" | "BANG" | "QUESTION_QUESTION" | "QUESTION" | "COLON" | "EQ" | "LPAREN" | "RPAREN" | "LBRACE" | "RBRACE" | "LBRACKET" | "RBRACKET" | "COMMA" | "SEMICOLON" | "DOT" | "PIPE" | "NUMBER" | "STRING" | "IDENTIFIER" | "SYSTEM_IDENT" | "ITEM" | "EOF" | "ERROR";
9
+ export type TokenKind = "DOMAIN" | "STATE" | "COMPUTED" | "ACTION" | "EFFECT" | "WHEN" | "ONCE" | "PATCH" | "UNSET" | "MERGE" | "TRUE" | "FALSE" | "NULL" | "AS" | "AVAILABLE" | "DISPATCHABLE" | "FAIL" | "STOP" | "WITH" | "TYPE" | "IMPORT" | "FROM" | "EXPORT" | "PLUS" | "MINUS" | "STAR" | "SLASH" | "PERCENT" | "EQ_EQ" | "BANG_EQ" | "LT" | "LT_EQ" | "GT" | "GT_EQ" | "AMP_AMP" | "PIPE_PIPE" | "BANG" | "QUESTION_QUESTION" | "QUESTION" | "COLON" | "EQ" | "AT" | "LPAREN" | "RPAREN" | "LBRACE" | "RBRACE" | "LBRACKET" | "RBRACKET" | "COMMA" | "SEMICOLON" | "DOT" | "PIPE" | "NUMBER" | "STRING" | "IDENTIFIER" | "SYSTEM_IDENT" | "ITEM" | "EOF" | "ERROR";
10
10
  /**
11
11
  * A token produced by the lexer
12
12
  */
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { Diagnostic } from "./diagnostics/types.js";
7
7
  export declare function formatDiagnostic(diagnostic: Diagnostic): string;
8
+ export declare function renderSchemaModuleCode(schema: unknown): string;
8
9
  /**
9
10
  * Compile MEL source and emit ESM source that exports the compiled schema.
10
11
  *
@@ -1 +1 @@
1
- import{b as n}from"./chunk-WE6GIOLD.js";import"./chunk-XIAVDXPY.js";import{readFile as i}from"fs/promises";import{fileURLToPath as c}from"url";function u(o){let[t]=o.split("?",1),[r]=t.split("#",1);return r}function s(o){return u(o).endsWith(".mel")}function a(o){try{return c(o)}catch{return o}}var h=async(o,t,r)=>s(o)?{...await r(o,t),shortCircuit:!0}:r(o,t),p=async(o,t,r)=>{if(!s(o))return r(o,t);let e=await i(new URL(o),"utf8");return{format:"module",source:n(e,a(o)),shortCircuit:!0}};export{p as load,h as resolve};
1
+ import{c as n}from"./chunk-BGYS7OOZ.js";import"./chunk-JNATEPDW.js";import{readFile as i}from"fs/promises";import{fileURLToPath as c}from"url";function u(o){let[t]=o.split("?",1),[r]=t.split("#",1);return r}function s(o){return u(o).endsWith(".mel")}function a(o){try{return c(o)}catch{return o}}var h=async(o,t,r)=>s(o)?{...await r(o,t),shortCircuit:!0}:r(o,t),p=async(o,t,r)=>{if(!s(o))return r(o,t);let e=await i(new URL(o),"utf8");return{format:"module",source:n(e,a(o)),shortCircuit:!0}};export{p as load,h as resolve};
@@ -31,10 +31,19 @@ export interface ImportNode extends ASTNode {
31
31
  export interface DomainNode extends ASTNode {
32
32
  kind: "domain";
33
33
  name: string;
34
+ annotations?: AnnotationNode[];
34
35
  /** v0.3.3: Named type declarations */
35
36
  types: TypeDeclNode[];
36
37
  members: DomainMember[];
37
38
  }
39
+ /**
40
+ * Structural annotation declaration.
41
+ */
42
+ export interface AnnotationNode extends ASTNode {
43
+ kind: "annotation";
44
+ tag: string;
45
+ payload?: ExprNode;
46
+ }
38
47
  /**
39
48
  * Domain member types
40
49
  */
@@ -46,6 +55,7 @@ export type DomainMember = StateNode | ComputedNode | ActionNode | FlowDeclNode;
46
55
  export interface TypeDeclNode extends ASTNode {
47
56
  kind: "typeDecl";
48
57
  name: string;
58
+ annotations?: AnnotationNode[];
49
59
  typeExpr: TypeExprNode;
50
60
  }
51
61
  /**
@@ -61,6 +71,7 @@ export interface StateNode extends ASTNode {
61
71
  export interface StateFieldNode extends ASTNode {
62
72
  kind: "stateField";
63
73
  name: string;
74
+ annotations?: AnnotationNode[];
64
75
  typeExpr: TypeExprNode;
65
76
  initializer?: ExprNode;
66
77
  }
@@ -70,6 +81,7 @@ export interface StateFieldNode extends ASTNode {
70
81
  export interface ComputedNode extends ASTNode {
71
82
  kind: "computed";
72
83
  name: string;
84
+ annotations?: AnnotationNode[];
73
85
  expression: ExprNode;
74
86
  }
75
87
  /**
@@ -78,6 +90,7 @@ export interface ComputedNode extends ASTNode {
78
90
  export interface ActionNode extends ASTNode {
79
91
  kind: "action";
80
92
  name: string;
93
+ annotations?: AnnotationNode[];
81
94
  params: ParamNode[];
82
95
  /** v0.3.2: Optional availability condition */
83
96
  available?: ExprNode;
@@ -101,6 +114,7 @@ export interface FlowDeclNode extends ASTNode {
101
114
  export interface ParamNode extends ASTNode {
102
115
  kind: "param";
103
116
  name: string;
117
+ annotations?: AnnotationNode[];
104
118
  typeExpr: TypeExprNode;
105
119
  }
106
120
  /**
@@ -233,6 +247,7 @@ export interface ObjectTypeNode extends ASTNode {
233
247
  export interface TypeFieldNode extends ASTNode {
234
248
  kind: "typeField";
235
249
  name: string;
250
+ annotations?: AnnotationNode[];
236
251
  typeExpr: TypeExprNode;
237
252
  optional: boolean;
238
253
  }
@@ -92,8 +92,12 @@ export declare class Parser {
92
92
  private isIncludeContext;
93
93
  private match;
94
94
  private consume;
95
+ private parseAnnotationList;
96
+ private parseAnnotation;
97
+ private reportUnsupportedAnnotations;
95
98
  private error;
96
99
  private errorAtCurrent;
100
+ private errorAtToken;
97
101
  }
98
102
  /**
99
103
  * Parse tokens into an AST
package/dist/rollup.js CHANGED
@@ -1 +1 @@
1
- import{a as e}from"./chunk-H5YT4Z3G.js";import"./chunk-WE6GIOLD.js";import"./chunk-XIAVDXPY.js";var l=e.rollup,t=l;export{t as default,l as melPlugin};
1
+ import{a as e}from"./chunk-SCNQFUUN.js";import"./chunk-BGYS7OOZ.js";import"./chunk-JNATEPDW.js";var l=e.rollup,t=l;export{t as default,l as melPlugin};
package/dist/rspack.js CHANGED
@@ -1 +1 @@
1
- import{a as e}from"./chunk-H5YT4Z3G.js";import"./chunk-WE6GIOLD.js";import"./chunk-XIAVDXPY.js";var t=e.rspack,o=t;export{o as default,t as melPlugin};
1
+ import{a as e}from"./chunk-SCNQFUUN.js";import"./chunk-BGYS7OOZ.js";import"./chunk-JNATEPDW.js";var t=e.rspack,o=t;export{o as default,t as melPlugin};
package/dist/vite.js CHANGED
@@ -1 +1 @@
1
- import{a as e}from"./chunk-H5YT4Z3G.js";import"./chunk-WE6GIOLD.js";import"./chunk-XIAVDXPY.js";var t=e.vite,o=t;export{o as default,t as melPlugin};
1
+ import{a as e}from"./chunk-SCNQFUUN.js";import"./chunk-BGYS7OOZ.js";import"./chunk-JNATEPDW.js";var t=e.vite,o=t;export{o as default,t as melPlugin};
package/dist/webpack.js CHANGED
@@ -1 +1 @@
1
- import{a as e}from"./chunk-H5YT4Z3G.js";import"./chunk-WE6GIOLD.js";import"./chunk-XIAVDXPY.js";var t=e.webpack,o=t;export{o as default,t as melPlugin};
1
+ import{a as e}from"./chunk-SCNQFUUN.js";import"./chunk-BGYS7OOZ.js";import"./chunk-JNATEPDW.js";var t=e.webpack,o=t;export{o as default,t as melPlugin};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifesto-ai/compiler",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "Manifesto Compiler - MEL (Manifesto Expression Language) to DomainSchema compiler",
5
5
  "author": "eggplantiny <eggplantiny@gmail.com>",
6
6
  "license": "MIT",
@@ -81,20 +81,20 @@
81
81
  "unplugin": "^3.0.0"
82
82
  },
83
83
  "devDependencies": {
84
- "@anthropic-ai/sdk": "^0.80.0",
85
- "@types/node": "^25.5.2",
84
+ "@anthropic-ai/sdk": "^0.88.0",
85
+ "@types/node": "^25.6.0",
86
86
  "@types/react": "^19.2.14",
87
87
  "dotenv": "^17.3.1",
88
88
  "ink": "^6.8.0",
89
89
  "ink-select-input": "^6.2.0",
90
90
  "ink-spinner": "^5.0.0",
91
91
  "meow": "^14.1.0",
92
- "openai": "^6.33.0",
93
- "react": "^19.2.4",
92
+ "openai": "^6.34.0",
93
+ "react": "^19.2.5",
94
94
  "tsx": "^4.21.0",
95
95
  "typescript": "^5.9.3",
96
- "vite": "^8.0.3",
97
- "vitest": "^4.1.2",
96
+ "vite": "^8.0.8",
97
+ "vitest": "^4.1.4",
98
98
  "webpack": "^5.105.4",
99
99
  "zod": "^4.3.6",
100
100
  "@manifesto-ai/core": "2.12.0"
@@ -1,4 +0,0 @@
1
- import{a as d}from"./chunk-WE6GIOLD.js";import{$ as f}from"./chunk-XIAVDXPY.js";import{createHash as u}from"crypto";import*as i from"path";import{createUnplugin as p}from"unplugin";var h=new Set(["transform","build","both"]);function l(e){return e.split("?",1)[0]}function y(e,t){return e.lastIndex=0,e.test(t)}function b(e){let t=l(e).replace(/\\/g,"/");if(!t)return"domain.mel";if(!i.isAbsolute(e))return t.replace(/^\.\//,"");let n=i.relative(process.cwd(),e);return!n||n.startsWith("..")||i.isAbsolute(n)?M(t):n.split(i.sep).join("/")}function M(e){let t=i.posix.basename(e)||"domain.mel",n=i.posix.extname(t),o=t.slice(0,t.length-n.length)||"domain",r=u("sha256").update(e).digest("hex").slice(0,12);return`external/${x(o)}--${r}${n}`}function x(e){return e.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||"domain"}function w(e){if(!e)return null;if(typeof e=="function")return{emit:e,timing:"transform"};if(typeof e=="object"&&typeof e.emit=="function"){let t=e.timing??"transform";if(!h.has(t))throw new TypeError(`manifesto:mel codegen timing must be one of "transform", "build", or "both" (received ${JSON.stringify(t)})`);return{emit:e.emit,timing:t}}throw new TypeError("manifesto:mel codegen must be a function or an object with a callable emit field")}var I=p((e={})=>{let t=e.include??/\.mel$/,n=new Map,o=w(e.codegen);return{name:"manifesto:mel",enforce:"pre",transformInclude(r){return y(t,l(r))},async transform(r,s){let m=l(s),a=f(r,{mode:"domain"});if(a.errors.length>0){let g=a.errors.map(d).join(`
2
- `);throw new Error(`MEL compilation failed for ${m}
3
- ${g}`)}if(!a.schema)throw new Error(`MEL compilation produced no schema for ${m}`);let c=b(m);return o&&((o.timing==="transform"||o.timing==="both")&&await o.emit({schema:a.schema,sourceId:c}),(o.timing==="build"||o.timing==="both")&&n.set(c,a.schema)),`export default ${JSON.stringify(a.schema,null,2)};
4
- `},async buildEnd(){if(!(!o||n.size===0))for(let[r,s]of n)await o.emit({schema:s,sourceId:r})}}});export{I as a};
@@ -1,4 +0,0 @@
1
- import{$ as n}from"./chunk-XIAVDXPY.js";function s(o){let r=o.location;if(!r)return`[${o.code}] ${o.message}`;let{line:e,column:t}=r.start;return`[${o.code}] ${o.message} (${e}:${t})`}function c(o,r){let e=n(o,{mode:"domain"});if(e.errors.length>0){let i=e.errors.map(s).join(`
2
- `);throw new Error(`MEL compilation failed for ${r}
3
- ${i}`)}if(!e.schema)throw new Error(`MEL compilation produced no schema for ${r}`);return`export default ${JSON.stringify(e.schema,null,2)};
4
- `}export{s as a,c as b};