@manifesto-ai/compiler 3.8.0 → 5.0.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.
Files changed (39) hide show
  1. package/README.md +2 -2
  2. package/dist/analyzer/expr-type-surface.d.ts +1 -0
  3. package/dist/analyzer/validator.d.ts +7 -4
  4. package/dist/api/compile-fragment-edit-result.d.ts +12 -0
  5. package/dist/api/compile-fragment-in-context.d.ts +3 -0
  6. package/dist/api/compile-fragment-json-validation.d.ts +13 -0
  7. package/dist/api/compile-fragment-options-validation.d.ts +15 -0
  8. package/dist/api/compile-fragment-reference-collector.d.ts +3 -0
  9. package/dist/api/compile-fragment-reference-types.d.ts +40 -0
  10. package/dist/api/compile-fragment-reference-utils.d.ts +5 -0
  11. package/dist/api/compile-fragment-source-utils.d.ts +36 -0
  12. package/dist/api/compile-fragment-types.d.ts +109 -0
  13. package/dist/api/compile-fragment-validation.d.ts +52 -0
  14. package/dist/api/compile-mel-patch-collector.d.ts +5 -6
  15. package/dist/api/compile-mel.d.ts +4 -4
  16. package/dist/api/index.d.ts +4 -2
  17. package/dist/{chunk-MB43CHXV.js → chunk-A356Y7I6.js} +1 -1
  18. package/dist/{chunk-M3P5RIDR.js → chunk-HOS3TLHW.js} +1 -1
  19. package/dist/chunk-JYNK3VUK.js +23 -0
  20. package/dist/esbuild.js +1 -1
  21. package/dist/evaluation/context.d.ts +32 -6
  22. package/dist/generator/ir.d.ts +25 -3
  23. package/dist/generator/lowering.d.ts +7 -6
  24. package/dist/index.d.ts +4 -2
  25. package/dist/index.js +18 -18
  26. package/dist/lowering/context.d.ts +7 -9
  27. package/dist/lowering/errors.d.ts +2 -2
  28. package/dist/lowering/lower-runtime-patch.d.ts +1 -1
  29. package/dist/node-loader.js +1 -1
  30. package/dist/parser/ast.d.ts +21 -2
  31. package/dist/parser/parser.d.ts +3 -0
  32. package/dist/rollup.js +1 -1
  33. package/dist/rspack.js +1 -1
  34. package/dist/source-map.d.ts +1 -0
  35. package/dist/unplugin.d.ts +1 -1
  36. package/dist/vite.js +1 -1
  37. package/dist/webpack.js +1 -1
  38. package/package.json +3 -3
  39. package/dist/chunk-PEO2YZ2Y.js +0 -12
@@ -5,16 +5,27 @@
5
5
  import type { Diagnostic } from "../diagnostics/types.js";
6
6
  import type { ProgramNode } from "../parser/ast.js";
7
7
  import type { MelExprNode } from "../lowering/lower-expr.js";
8
- import { type ExprNode as RuntimeExprNode, type FlowNode as RuntimeFlowNode, type PatchPath } from "@manifesto-ai/core";
8
+ import { type ExprNode as RuntimeExprNode, type FlowNode as RuntimeFlowNode } from "@manifesto-ai/core";
9
9
  /**
10
10
  * Core ExprNode types (simplified, matching core/schema/expr.ts)
11
11
  */
12
12
  export type CoreExprNode = RuntimeExprNode;
13
13
  export type CompilerExprNode = MelExprNode;
14
14
  /**
15
- * Core FlowNode types (matching core/schema/flow.ts)
15
+ * Core FlowNode type (kept attached to @manifesto-ai/core to avoid schema drift).
16
16
  */
17
17
  export type CoreFlowNode = RuntimeFlowNode;
18
+ type CompilerFlowPatchSegment = {
19
+ kind: "prop";
20
+ name: string;
21
+ } | {
22
+ kind: "index";
23
+ index: number;
24
+ } | {
25
+ kind: "expr";
26
+ expr: CompilerExprNode;
27
+ };
28
+ type CompilerFlowPatchPath = CompilerFlowPatchSegment[];
18
29
  export type CompilerFlowNode = {
19
30
  kind: "seq";
20
31
  steps: CompilerFlowNode[];
@@ -26,8 +37,12 @@ export type CompilerFlowNode = {
26
37
  } | {
27
38
  kind: "patch";
28
39
  op: "set" | "unset" | "merge";
29
- path: PatchPath;
40
+ path: CompilerFlowPatchPath;
30
41
  value?: CompilerExprNode;
42
+ } | {
43
+ kind: "causalGuard";
44
+ guardId: string;
45
+ body: CompilerFlowNode;
31
46
  } | {
32
47
  kind: "effect";
33
48
  type: string;
@@ -67,6 +82,10 @@ export interface StateSpec {
67
82
  fields: Record<string, FieldSpec>;
68
83
  fieldTypes?: Record<string, TypeDefinition>;
69
84
  }
85
+ export interface ContextSpec {
86
+ fields: Record<string, FieldSpec>;
87
+ fieldTypes?: Record<string, TypeDefinition>;
88
+ }
70
89
  /**
71
90
  * Computed field specification
72
91
  */
@@ -153,6 +172,7 @@ export interface DomainSchema {
153
172
  /** v0.3.3: Named type declarations */
154
173
  types: Record<string, TypeSpec>;
155
174
  state: StateSpec;
175
+ context?: ContextSpec;
156
176
  computed: ComputedSpec;
157
177
  actions: Record<string, ActionSpec>;
158
178
  meta?: {
@@ -167,6 +187,7 @@ export interface CanonicalDomainSchema {
167
187
  hash: string;
168
188
  types: Record<string, TypeSpec>;
169
189
  state: StateSpec;
190
+ context?: ContextSpec;
170
191
  computed: {
171
192
  fields: Record<string, CompilerComputedFieldSpec>;
172
193
  };
@@ -190,3 +211,4 @@ export declare function generateCanonical(program: ProgramNode): GenerateCanonic
190
211
  * Generate runtime-ready DomainSchema from MEL AST.
191
212
  */
192
213
  export declare function generate(program: ProgramNode): GenerateResult;
214
+ export {};
@@ -1,10 +1,11 @@
1
1
  /**
2
- * System Value Lowering
3
- * Transforms $system.* references into effect-based acquisition
4
- * Based on MEL SPEC v0.3.1 Section 5.4
2
+ * Retired System Value Lowering Compatibility Hook
3
+ *
4
+ * v5 keeps Core independent from MEL-owned storage. The previous lowering
5
+ * strategy used MEL namespace slots as runtime bookkeeping, which made Core
6
+ * and Host paths depend on MEL-specific shape. Current v5 MEL rejects
7
+ * `$system.*` and `$meta.*`; this compatibility hook remains a no-op for
8
+ * older callers that still pass the option.
5
9
  */
6
10
  import type { DomainSchema } from "./ir.js";
7
- /**
8
- * Apply system value lowering to a domain schema
9
- */
10
11
  export declare function lowerSystemValues(schema: DomainSchema): DomainSchema;
package/dist/index.d.ts CHANGED
@@ -10,8 +10,10 @@ export * from "./analyzer/index.js";
10
10
  export * from "./diagnostics/index.js";
11
11
  export * from "./generator/index.js";
12
12
  export { renderTypeExpr, renderTypeField, renderValue, renderExprNode, renderPatchOp, extractTypeName, renderFragment, renderFragments, renderFragmentsByKind, renderAsDomain, type TypeExpr, type TypeField, type ExprNode as RendererExprNode, type PatchOp, type AddTypeOp, type AddFieldOp, type SetFieldTypeOp, type SetDefaultValueOp, type AddConstraintOp, type AddComputedOp, type AddActionAvailableOp, type RenderOptions, type PatchFragment, type FragmentRenderOptions, } from "./renderer/index.js";
13
- export * from "./lowering/index.js";
14
- export * from "./evaluation/index.js";
13
+ export type { AllowedSysPrefix, ExprLoweringContext, PatchLoweringContext, LoweringErrorCode, MelPrimitive, MelPathSegment, MelPathNode, MelSystemPath, MelObjField, MelExprNode, MelTypeExpr, MelTypeField, MelPatchOp, MelPatchFragment, LoweredTypeExpr, LoweredTypeField, LoweredPatchOp, SchemaConditionalPatchOp,
14
+ /** @deprecated Use SchemaConditionalPatchOp */
15
+ ConditionalPatchOp, } from "./lowering/index.js";
16
+ export { DEFAULT_SCHEMA_CONTEXT, DEFAULT_ACTION_CONTEXT, DEFAULT_DISPATCHABLE_CONTEXT, EFFECT_ARGS_CONTEXT, DEFAULT_PATCH_CONTEXT, LoweringError, invalidKindForContext, unknownCallFn, invalidSysPath, unsupportedBase, invalidShape, unknownNodeKind, lowerExprNode, lowerPatchFragments, } from "./lowering/index.js";
15
17
  export * from "./api/index.js";
16
18
  export * from "./annotations.js";
17
19
  export * from "./schema-graph.js";
package/dist/index.js CHANGED
@@ -1,21 +1,21 @@
1
- import{$ as H,A as kt,B as vt,C as bt,D as w,E as Nt,F as Ct,G as z,H as Pt,I as $t,J as At,K as St,L as xt,M as wt,N as Rt,O as Ot,P as Ft,Q as jt,R as Tt,S as Dt,T as S,U as It,V as _t,W as Mt,X as qt,Y as Lt,Z as B,_ as K,a as Xn,aa as Ut,b as Yn,ba as J,c as Qn,ca as X,d as Zn,da as Vt,e as et,ea as Wt,f as nt,fa as Gt,g as tt,h as rt,i as at,j as ot,k as it,l as _,m as st,n as ut,o as ct,p as lt,q as dt,r as pt,s as ft,t as mt,u as gt,v as M,w as yt,x as ht,y as G,z as Et}from"./chunk-PEO2YZ2Y.js";var Y={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 Ht(e){return Y[e]}function Jt(e){let n=Y[e];return n?`${e}: ${n.message}`:e}function Q(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
- ${f}
4
- ${E}`}function me(e,n){return e.map(t=>Q(t,n)).join(`
1
+ import{$ as j,A as ze,B as He,C as Ke,D as x,E as Xe,F as Ye,G as R,H as W,I as z,J as H,K,L as X,M as Y,N as J,O as Q,P as Z,Q as ee,R as te,S as ne,T as re,U as ie,V as Je,W as w,X as D,Y as P,Z as Qe,_ as v,a as Ae,aa as Ze,b as Oe,ba as et,c as Te,ca as tt,d as be,e as Fe,f as Ce,g as Se,h as _e,i as Re,j as we,k as De,l as T,m as Pe,n as ve,o as je,p as Ie,q as Me,r as Le,s as Ue,t as Ve,u as qe,v as b,w as Ge,x as Be,y as _,z as We}from"./chunk-JYNK3VUK.js";var I={E001:{code:"E001",message:"$runtime.* and $context.* can be used only in bound action flow expressions",category:"semantic"},E002:{code:"E002",message:"Dollar namespace values cannot be used in state initializers",category:"semantic"},E003:{code:"E003",message:"Invalid or retired dollar namespace reference",category:"semantic"},E004:{code:"E004",message:"Identifier starts with reserved prefix '__sys__'",category:"syntax"},E005:{code:"E005",message:"available expression must be pure over schema and snapshot only",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"},E058:{code:"E058",message:"Source-map target does not map to the emitted DomainSchema",category:"semantic"},E_STALE_MODULE:{code:"E_STALE_MODULE",message:"baseModule source hash does not match baseSource",category:"semantic"},E_FRAGMENT_PARSE_FAILED:{code:"E_FRAGMENT_PARSE_FAILED",message:"Fragment failed its operation-specific parser",category:"syntax"},E_FRAGMENT_SCOPE_VIOLATION:{code:"E_FRAGMENT_SCOPE_VIOLATION",message:"Fragment violates the requested edit scope",category:"semantic"},E_TARGET_NOT_FOUND:{code:"E_TARGET_NOT_FOUND",message:"Edit target does not exist",category:"semantic"},E_TARGET_KIND_MISMATCH:{code:"E_TARGET_KIND_MISMATCH",message:"Edit target kind is invalid for the requested operation",category:"semantic"},E_UNSAFE_RENAME_AMBIGUOUS:{code:"E_UNSAFE_RENAME_AMBIGUOUS",message:"Rename cannot update references safely and deterministically",category:"semantic"},E_REMOVE_BLOCKED_BY_REFERENCES:{code:"E_REMOVE_BLOCKED_BY_REFERENCES",message:"Remove would leave references dangling",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 at(e){return I[e]}function ot(e){let t=I[e];return t?`${e}: ${t.message}`:e}function M(e,t){let{code:n,message:a,location:i}=e;if(!i||i.start.line===0&&i.start.column===0)return`[${n}] ${a}`;let{line:p,column:c}=i.start,g=`[${n}] ${a} (${p}:${c})`;if(!t)return g;let y=t.split(`
2
+ `)[p-1];if(!y)return g;let u=String(p).padStart(4," "),d=`${u} | ${y}`,s=Math.max(1,i.end.line===i.start.line?Math.min(i.end.column-c,y.length-c+1):1),E=`${" ".repeat(u.length+3+c-1)}${"^".repeat(s)}`;return`${g}
3
+ ${d}
4
+ ${E}`}function ae(e,t){return e.map(n=>M(n,t)).join(`
5
5
 
6
- `)}function tr(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 rr(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 ge,semanticPathToPatchPath as ye}from"@manifesto-ai/core";function Z(e){let n=structuredClone(e),t=!1;for(let[s,l]of Object.entries(n.actions)){let c=he(s);if(O(l.flow,c),c.slots.size!==0){t=!0;for(let y of c.slots.values())ve(n.state.fields,s,y);n.actions[s]={...l,flow:Ne(l.flow,c)}}}if(!t)return n;let{hash:r,...a}=n,o=ge(a);return{...a,hash:o}}function he(e){return{actionName:e,slots:new Map}}function Ee(e){switch(e){case"timestamp":case"time.now":return"number";default:return"string"}}function ke(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 ve(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:Ee(t.key),required:!1,default:null}}function be(e){return ye(e)}function O(e,n){switch(e.kind){case"seq":for(let t of e.steps)O(t,n);break;case"if":P(e.cond,n),O(e.then,n),e.else&&O(e.else,n);break;case"patch":e.value&&P(e.value,n);break;case"effect":for(let t of Object.values(e.params))P(t,n);break;case"fail":e.message&&P(e.message,n);break}}function P(e,n){if(e.kind==="get"&&e.path.startsWith("$system.")){let t=e.path.slice(8);if(!n.slots.has(t)){let r=ke(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&&P(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&&P(r,n);else"kind"in t&&P(t,n)}function Ne(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:be(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 Ce(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 Pe(e.members);case"object":return $e(e.fields)}}function Ce(e){return e===null?"null":typeof e=="string"?`"${ee(e)}"`:typeof e=="boolean"?e?"true":"false":String(e)}function Pe(e){return e.length===0?"never":e.map(k).join(" | ")}function $e(e){return e.length===0?"{}":`{ ${e.map(t=>{let r=t.optional?"?":"";return`${t.name}${r}: ${k(t.type)}`}).join(", ")} }`}function A(e,n){let t=k(e.type);return n!==void 0?`${e.name}: ${t} = ${$(n)}`:e.optional?`${e.name}?: ${t}`:`${e.name}: ${t}`}function $(e){return e===null||e===void 0?"null":typeof e=="string"?`"${ee(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map($).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([t,r])=>`${t}: ${$(r)}`).join(", ")} }`:String(e)}function ee(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 Ae(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 Se(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"?`"${xe(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 Ae(e){return e.startsWith("$meta.")||e.startsWith("$system.")||e.startsWith("$input.")?e:e.startsWith("data.")?e.slice(5):e}function Se(e){return`{ ${Object.entries(e).map(([t,r])=>`${t}: ${i(r)}`).join(", ")} }`}function xe(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}import{parsePath as ne}from"@manifesto-ai/core";var we={indent:" ",includeComments:!1,commentPrefix:"// "};function b(e,n){let t={...we,...n};switch(e.kind){case"addType":return Re(e,t);case"addField":return Oe(e,t);case"setFieldType":return Fe(e,t);case"setDefaultValue":return je(e,t);case"addConstraint":return Te(e,t);case"addComputed":return De(e,t);case"addActionAvailable":return Ie(e,t);default:return`// Unknown operation: ${JSON.stringify(e)}`}}function Re(e,n){let{indent:t}=n;if(e.typeExpr.kind==="object"){let r=e.typeExpr.fields.map(a=>`${t}${A(a)}`).join(`
6
+ `)}function lt(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 gt(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}}}}}function oe(e){return e}function f(e){switch(e.kind){case"primitive":return e.name;case"literal":return se(e.value);case"ref":return e.name;case"array":return`Array<${f(e.element)}>`;case"record":return`Record<${f(e.key)}, ${f(e.value)}>`;case"union":return de(e.members);case"object":return ce(e.fields)}}function se(e){return e===null?"null":typeof e=="string"?`"${L(e)}"`:typeof e=="boolean"?e?"true":"false":String(e)}function de(e){return e.length===0?"never":e.map(f).join(" | ")}function ce(e){return e.length===0?"{}":`{ ${e.map(n=>{let a=n.optional?"?":"";return`${n.name}${a}: ${f(n.type)}`}).join(", ")} }`}function $(e,t){let n=f(e.type);return t!==void 0?`${e.name}: ${n} = ${k(t)}`:e.optional?`${e.name}?: ${n}`:`${e.name}: ${n}`}function k(e){return e===null||e===void 0?"null":typeof e=="string"?`"${L(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map(k).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([n,a])=>`${n}: ${k(a)}`).join(", ")} }`:String(e)}function L(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function r(e){switch(e.kind){case"lit":return F(e.value);case"get":return me(e.path);case"eq":return`eq(${r(e.left)}, ${r(e.right)})`;case"neq":return`neq(${r(e.left)}, ${r(e.right)})`;case"gt":return`gt(${r(e.left)}, ${r(e.right)})`;case"gte":return`gte(${r(e.left)}, ${r(e.right)})`;case"lt":return`lt(${r(e.left)}, ${r(e.right)})`;case"lte":return`lte(${r(e.left)}, ${r(e.right)})`;case"and":return!e.args||!Array.isArray(e.args)?"and(/* malformed: args undefined */)":`and(${e.args.map(r).join(", ")})`;case"or":return!e.args||!Array.isArray(e.args)?"or(/* malformed: args undefined */)":`or(${e.args.map(r).join(", ")})`;case"not":return e.arg?`not(${r(e.arg)})`:"not(/* malformed: arg undefined */)";case"if":return`if(${r(e.cond)}, ${r(e.then)}, ${r(e.else)})`;case"add":return`add(${r(e.left)}, ${r(e.right)})`;case"sub":return`sub(${r(e.left)}, ${r(e.right)})`;case"mul":return`mul(${r(e.left)}, ${r(e.right)})`;case"div":return`div(${r(e.left)}, ${r(e.right)})`;case"mod":return`mod(${r(e.left)}, ${r(e.right)})`;case"concat":return!e.args||!Array.isArray(e.args)?"concat(/* malformed: args undefined */)":`concat(${e.args.map(r).join(", ")})`;case"substring":return e.end!==void 0?`substring(${r(e.str)}, ${r(e.start)}, ${r(e.end)})`:`substring(${r(e.str)}, ${r(e.start)})`;case"trim":return`trim(${r(e.str)})`;case"len":return`len(${r(e.arg)})`;case"at":return`at(${r(e.array)}, ${r(e.index)})`;case"first":return`first(${r(e.array)})`;case"last":return`last(${r(e.array)})`;case"slice":return e.end!==void 0?`slice(${r(e.array)}, ${r(e.start)}, ${r(e.end)})`:`slice(${r(e.array)}, ${r(e.start)})`;case"includes":return`includes(${r(e.array)}, ${r(e.item)})`;case"filter":return`filter(${r(e.array)}, ${r(e.predicate)})`;case"map":return`map(${r(e.array)}, ${r(e.mapper)})`;case"find":return`find(${r(e.array)}, ${r(e.predicate)})`;case"every":return`every(${r(e.array)}, ${r(e.predicate)})`;case"some":return`some(${r(e.array)}, ${r(e.predicate)})`;case"append":return!e.items||!Array.isArray(e.items)?`append(${r(e.array)}, /* malformed: items undefined */)`:`append(${r(e.array)}, ${e.items.map(r).join(", ")})`;case"object":return pe(e.fields);case"field":return`${r(e.object)}.${e.property}`;case"keys":return`keys(${r(e.obj)})`;case"values":return`values(${r(e.obj)})`;case"entries":return`entries(${r(e.obj)})`;case"merge":return!e.objects||!Array.isArray(e.objects)?"merge(/* malformed: objects undefined */)":`merge(${e.objects.map(r).join(", ")})`;case"typeof":return`typeof(${r(e.arg)})`;case"isNull":return`isNull(${r(e.arg)})`;case"coalesce":return!e.args||!Array.isArray(e.args)?"coalesce(/* malformed: args undefined */)":`coalesce(${e.args.map(r).join(", ")})`;default:return`/* unknown: ${JSON.stringify(e)} */`}}function F(e){return e===null||e===void 0?"null":typeof e=="string"?`"${ue(e)}"`:typeof e=="number"?String(e):typeof e=="boolean"?e?"true":"false":Array.isArray(e)?`[${e.map(F).join(", ")}]`:typeof e=="object"?`{ ${Object.entries(e).map(([n,a])=>`${n}: ${F(a)}`).join(", ")} }`:String(e)}function me(e){return e.startsWith("$meta.")||e.startsWith("$system.")||e.startsWith("$input.")?e:e.startsWith("data.")?e.slice(5):e}function pe(e){return`{ ${Object.entries(e).map(([n,a])=>`${n}: ${r(a)}`).join(", ")} }`}function ue(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}import{parsePath as U}from"@manifesto-ai/core";var le={indent:" ",includeComments:!1,commentPrefix:"// "};function h(e,t){let n={...le,...t};switch(e.kind){case"addType":return ge(e,n);case"addField":return fe(e,n);case"setFieldType":return ye(e,n);case"setDefaultValue":return Ee(e,n);case"addConstraint":return he(e,n);case"addComputed":return ke(e,n);case"addActionAvailable":return $e(e,n);default:return`// Unknown operation: ${JSON.stringify(e)}`}}function ge(e,t){let{indent:n}=t;if(e.typeExpr.kind==="object"){let a=e.typeExpr.fields.map(i=>`${n}${$(i)}`).join(`
7
7
  `);return`type ${e.typeName} {
8
- ${r}
9
- }`}return`type ${e.typeName} = ${k(e.typeExpr)}`}function Oe(e,n){let t=e.field;return"defaultValue"in t&&t.defaultValue!==void 0?A(t,t.defaultValue):A(t)}function Fe(e,n){let t=k(e.typeExpr),r=te(e.path),a=[];return n.includeComments&&a.push(`${n.commentPrefix}Change ${e.path} type to: ${t}`),a.push(`${r}: ${t}`),a.join(`
10
- `)}function je(e,n){let t=te(e.path),r=$(e.value),a=[];return n.includeComments&&a.push(`${n.commentPrefix}Set default value for ${e.path}`),a.push(`${t} = ${r}`),a.join(`
11
- `)}function Te(e,n){let t=i(e.rule),r=e.message?` - "${e.message}"`:"";return`${n.commentPrefix}Constraint on ${e.targetPath}: ${t}${r}`}function De(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 Ie(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 te(e){let n=ne(e);return n[n.length-1]??""}function re(e){let n=ne(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(`
8
+ ${a}
9
+ }`}return`type ${e.typeName} = ${f(e.typeExpr)}`}function fe(e,t){let n=e.field;return"defaultValue"in n&&n.defaultValue!==void 0?$(n,n.defaultValue):$(n)}function ye(e,t){let n=f(e.typeExpr),a=V(e.path),i=[];return t.includeComments&&i.push(`${t.commentPrefix}Change ${e.path} type to: ${n}`),i.push(`${a}: ${n}`),i.join(`
10
+ `)}function Ee(e,t){let n=V(e.path),a=k(e.value),i=[];return t.includeComments&&i.push(`${t.commentPrefix}Set default value for ${e.path}`),i.push(`${n} = ${a}`),i.join(`
11
+ `)}function he(e,t){let n=r(e.rule),a=e.message?` - "${e.message}"`:"";return`${t.commentPrefix}Constraint on ${e.targetPath}: ${n}${a}`}function ke(e,t){let n=r(e.expr),a=[];return t.includeComments&&e.deps&&e.deps.length>0&&a.push(`${t.commentPrefix}Dependencies: ${e.deps.join(", ")}`),a.push(`computed ${e.name} = ${n}`),a.join(`
12
+ `)}function $e(e,t){let n=r(e.expr),a=[];return t.includeComments&&a.push(`${t.commentPrefix}Add availability condition to ${e.actionName}`),a.push(`action ${e.actionName}() available when ${n} {`),a.push(`${t.indent}// action body...`),a.push("}"),a.join(`
13
+ `)}function V(e){let t=U(e);return t[t.length-1]??""}function q(e){let t=U(e);if(t.length>=2)return t[0]}var A={indent:" ",includeComments:!0,commentPrefix:"// ",includeMetadata:!0,includeEvidence:!1,includeConfidence:!0,includeFragmentId:!1};function C(e,t){let n={...A,...t},a=[];if(n.includeMetadata){if(n.includeFragmentId&&a.push(`${n.commentPrefix}Fragment: ${e.fragmentId}`),n.includeConfidence){let p=(e.confidence*100).toFixed(0);a.push(`${n.commentPrefix}Confidence: ${p}%`)}if(n.includeEvidence&&e.evidence.length>0){a.push(`${n.commentPrefix}Evidence:`);for(let p of e.evidence)a.push(`${n.commentPrefix} - ${p}`)}}let i=h(e.op,{indent:n.indent,includeComments:n.includeComments,commentPrefix:n.commentPrefix});return a.push(i),a.join(`
14
+ `)}function S(e,t){let n={...A,...t};return e.map(i=>C(i,n)).join(`
15
15
 
16
- `)}function ae(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 oe(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
- `);f.push(E),f.push("")}return f.push("}"),f.join(`
21
- `)}import{parsePath as _e}from"@manifesto-ai/core";function Me(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 qe(r,n,t),{data:r,computed:e.computed}}function qe(e,n,t){let r=_e(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 Le}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 Ue(e.path,n);case"eq":return ie(e.left,e.right,n);case"neq":return Ve(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 We(e.args,n);case"or":return Ge(e.args,n);case"not":return ze(e.arg,n);case"if":return Be(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 Ke(e.left,e.right,n);case"mod":return He(e.left,e.right,n);case"neg":return Je(e.arg,n);case"min":return Xe(e.args,n);case"max":return Ye(e.args,n);case"abs":return Qe(e.arg,n);case"floor":return Ze(e.arg,n);case"ceil":return en(e.arg,n);case"round":return nn(e.arg,n);case"sqrt":return tn(e.arg,n);case"pow":return rn(e.base,e.exponent,n);case"concat":return an(e.args,n);case"substring":return on(e.str,e.start,e.end,n);case"trim":return sn(e.str,n);case"len":return un(e.arg,n);case"at":return cn(e.array,e.index,n);case"first":return ln(e.array,n);case"last":return dn(e.array,n);case"slice":return pn(e.array,e.start,e.end,n);case"includes":return fn(e.array,e.item,n);case"filter":return mn(e.array,e.predicate,n);case"map":return gn(e.array,e.mapper,n);case"find":return yn(e.array,e.predicate,n);case"every":return hn(e.array,e.predicate,n);case"some":return En(e.array,e.predicate,n);case"append":return kn(e.array,e.items,n);case"sumArray":return vn(e.array,n);case"minArray":return bn(e.array,n);case"maxArray":return Nn(e.array,n);case"object":return Cn(e.fields,n);case"field":return Pn(e.object,e.property,n);case"keys":return $n(e.obj,n);case"values":return An(e.obj,n);case"entries":return Sn(e.obj,n);case"merge":return xn(e.objects,n);case"typeof":return wn(e.arg,n);case"isNull":return Rn(e.arg,n);case"coalesce":return On(e.args,n);default:return null}}function Ue(e,n){let t=Le(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 ie(e,n,t){let r=u(e,t),a=u(n,t);return D(r,a)}function Ve(e,n,t){let r=ie(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 We(e,n){for(let t of e){let r=u(t,n);if(r!==!0)return r===!1?!1:null}return!0}function Ge(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 ze(e,n){let t=u(e,n);return typeof t!="boolean"?null:!t}function Be(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 Ke(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 He(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 Je(e,n){let t=u(e,n);return typeof t=="number"?-t:null}function Xe(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 Ye(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 Qe(e,n){let t=u(e,n);return typeof t=="number"?Math.abs(t):null}function Ze(e,n){let t=u(e,n);return typeof t=="number"?Math.floor(t):null}function en(e,n){let t=u(e,n);return typeof t=="number"?Math.ceil(t):null}function nn(e,n){let t=u(e,n);return typeof t=="number"?Math.round(t):null}function tn(e,n){let t=u(e,n);return typeof t!="number"||t<0?null:Math.sqrt(t)}function rn(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 an(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 on(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 sn(e,n){let t=u(e,n);return typeof t!="string"?null:t.trim()}function un(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 cn(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 ln(e,n){let t=u(e,n);return!Array.isArray(t)||t.length===0?null:t[0]}function dn(e,n){let t=u(e,n);return!Array.isArray(t)||t.length===0?null:t[t.length-1]}function pn(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 fn(e,n,t){let r=u(e,t),a=u(n,t);return Array.isArray(r)?r.some(o=>D(o,a)):null}function mn(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 gn(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 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 a;if(s!==!1)return null}return null}function hn(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 En(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 kn(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 vn(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 bn(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 Nn(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 Cn(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 Pn(e,n,t){let r=u(e,t);return r===null||typeof r!="object"||Array.isArray(r)?null:r[n]??null}function $n(e,n){let t=u(e,n);return t===null||typeof t!="object"||Array.isArray(t)?null:Object.keys(t).sort(S)}function An(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 Sn(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 xn(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 wn(e,n){let t=u(e,n);return t===null?"null":Array.isArray(t)?"array":typeof t}function Rn(e,n){return u(e,n)===null}function On(e,n){for(let t of e){let r=u(t,n);if(r!=null)return r}return null}function Fn(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=Tn(a,o.op,s)}return{patches:t,skipped:r,finalSnapshot:a}}function jn(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 Tn(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 Dn(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 In(e,n){return e===void 0?!0:v(e,n)===!0}function _n(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 Mn,patchPathToDisplayString as se,setByPatchPath as qn,unsetByPatchPath as Ln}from"@manifesto-ai/core";var Un=new Set(["__proto__","constructor","prototype"]);function Vn(e,n){return de(e,n).patches}function de(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 C=v(c.condition,p);if(C!==!0){let fe=C===!1?"false":C===null?"null":"non-boolean";r.push({index:l,path:le(c.path),reason:fe});continue}}let g=zn(c.path,p);if(!g.ok){r.push({index:l,path:le(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=Wn(c.op,E,N);if(d!==null&&!(c.op==="unset"&&I(c.path)&&(!h||!ce(s[s.length-1].markerPath,E)))){if(t.push(d),o=Gn(o,d),c.op==="set"&&I(c.path)){s.push({markerPath:E,snapshot:o});continue}c.op==="unset"&&I(c.path)&&s.length>0&&ce(s[s.length-1].markerPath,E)&&s.pop()}}return{patches:t,skipped:r,warnings:a,finalSnapshot:o}}function Wn(e,n,t){switch(e){case"set":return{op:"set",path:n,value:t};case"unset":return{op:"unset",path:n};case"merge":return Kn(t)?{op:"merge",path:n,value:t}:{op:"set",path:n,value:null}}}function Gn(e,n){let t=e.data;return{data:(()=>{switch(n.op){case"set":return qn(t,n.path,n.value);case"unset":return Ln(t,n.path);case"merge":return Mn(t,n.path,n.value)}})(),computed:e.computed}}function zn(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(!pe(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=Bn(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 Bn(e){return typeof e=="number"&&Number.isInteger(e)&&Number.isFinite(e)&&e>=0?{kind:"index",index:e}:typeof e=="string"&&e.length>0&&pe(e)?{kind:"prop",name:e}:null}function pe(e){return e.length>0&&!Un.has(e)}function I(e){return ue(e,["$mel","__whenGuards"])||ue(e,["$mel","__onceScopeGuards"])}function ue(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 ce(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 le(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]":`${se(n)}.[expr]`}return n.length===0?"":se(n)}function Kn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var Hn="3.5.0";function Jn(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),C=z(h.program);c.push(...d.diagnostics,...C.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);let C=X(h.program,e,p.schema,J(Hn));c.push(...C.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=Z(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 ea(e){let n=_(e);return w(n.diagnostics)?{program:null,diagnostics:n.diagnostics}:M(n.tokens)}function na(e){return Jn(e).errors}export{$t as DEFAULT_ACTION_CONTEXT,At as DEFAULT_DISPATCHABLE_CONTEXT,xt as DEFAULT_PATCH_CONTEXT,Pt as DEFAULT_SCHEMA_CONTEXT,Y as DIAGNOSTIC_CODES,St as EFFECT_ARGS_CONTEXT,Xn as KEYWORDS,it as Lexer,wt as LoweringError,gt as Parser,ct as Precedence,Yn as RESERVED_KEYWORDS,yt as Scope,ht as ScopeAnalyzer,Ct as SemanticValidator,G as analyzeScope,V as applyPatchToWorkingSnapshot,K as buildAnnotationIndex,na as check,_n as classifyCondition,Jn as compile,Vt as compileMelDomain,Wt as compileMelModule,Gt as compileMelPatch,Et as createError,Me as createEvaluationContext,vt as createInfo,rt as createLocation,at as createPointLocation,tt as createPosition,nt as createToken,kt as createWarning,In as evaluateCondition,Fn as evaluateConditionalPatchOps,v as evaluateExpr,Dn as evaluatePatchExpressions,jn as evaluatePatches,Vn as evaluateRuntimePatches,de as evaluateRuntimePatchesWithTrace,Ut as extractSchemaGraph,re as extractTypeName,Nt as filterBySeverity,Q as formatDiagnostic,Jt as formatDiagnosticCode,me as formatDiagnostics,B as generate,Lt as generateCanonical,lt as getBinaryPrecedence,Ht as getDiagnosticInfo,et as getKeywordKind,w as hasErrors,Rt as invalidKindForContext,Tt as invalidShape,Ft as invalidSysPath,pt as isBinaryOp,bt as isError,st as isExprNode,Qn as isKeyword,Zn as isReserved,mt as isRightAssociative,ut as isStmtNode,ft as isUnaryOp,It as lowerExprNode,_t as lowerPatchFragments,qt as lowerRuntimePatch,Mt as lowerRuntimePatches,Z as lowerSystemValues,ot as mergeLocations,tr as normalizeExpr,rr as normalizeFunctionCall,M as parse,ea as parseSource,oe as renderAsDomain,i as renderExprNode,L as renderFragment,U as renderFragments,ae as renderFragmentsByKind,b as renderPatchOp,k as renderTypeExpr,A as renderTypeField,$ as renderValue,dt as tokenToBinaryOp,_ as tokenize,Ot as unknownCallFn,Dt as unknownNodeKind,jt as unsupportedBase,z as validateSemantics};
16
+ `)}function G(e,t){let n={...A,...t},a={};for(let p of e){let c=p.op.kind;a[c]||(a[c]=[]),a[c].push(p)}let i={};for(let[p,c]of Object.entries(a))i[p]=S(c,n);return i}function B(e,t,n){let i={...A,...n}.indent??" ",p=[],c=[],g=[],m=[],y=[],u=[];for(let s of t)switch(s.op.kind){case"addType":p.push(s);break;case"addField":case"setFieldType":c.push(s);break;case"setDefaultValue":g.push(s);break;case"addComputed":m.push(s);break;case"addConstraint":y.push(s);break;case"addActionAvailable":u.push(s);break}let d=[];if(d.push(`domain ${e} {`),c.length>0||g.length>0){d.push(`${i}state {`);for(let s of[...c,...g]){let l=h(s.op,{indent:i+i,includeComments:!1});d.push(`${i}${i}${l}`)}d.push(`${i}}`),d.push("")}for(let s of p){let E=h(s.op,{indent:i,includeComments:!1}).split(`
17
+ `).map(N=>`${i}${N}`).join(`
18
+ `);d.push(E),d.push("")}for(let s of m){let l=h(s.op,{indent:i,includeComments:!1});d.push(`${i}${l}`)}m.length>0&&d.push("");for(let s of y){let l=h(s.op,{indent:i,includeComments:!0});d.push(`${i}${l}`)}y.length>0&&d.push("");for(let s of u){let E=h(s.op,{indent:i,includeComments:!1}).split(`
19
+ `).map(N=>`${i}${N}`).join(`
20
+ `);d.push(E),d.push("")}return d.push("}"),d.join(`
21
+ `)}var Ne="3.5.0";function xe(e,t={}){let n=[],a=performance.now(),i=T(e);if(n.push({phase:"lex",durationMs:performance.now()-a,details:{tokenCount:i.tokens.length}}),x(i.diagnostics))return{schema:null,trace:n,warnings:i.diagnostics.filter(o=>o.severity==="warning"),errors:i.diagnostics.filter(o=>o.severity==="error"),success:!1};let p=performance.now(),c=b(i.tokens),g=c.diagnostics;if(n.push({phase:"parse",durationMs:performance.now()-p}),x(g))return{schema:null,trace:n,warnings:g.filter(o=>o.severity==="warning"),errors:g.filter(o=>o.severity==="error"),success:!1};let m=[],y=performance.now(),u=P(c.program);if(m.push(...u.diagnostics),!t.skipSemanticAnalysis){let o=_(u.program),O=R(u.program);m.push(...o.diagnostics,...O.diagnostics)}if(n.push({phase:"analyze",durationMs:performance.now()-y}),m.some(o=>o.severity==="error"))return{schema:null,trace:n,warnings:m.filter(o=>o.severity==="warning"),errors:m.filter(o=>o.severity==="error"),success:!1};let d=performance.now(),s=w(u.program);if(m.push(...s.diagnostics),n.push({phase:"generate",durationMs:performance.now()-d}),!t.skipSemanticAnalysis&&s.schema){let o=D(u.program,s.schema);m.push(...o.diagnostics);let O=j(u.program,e,s.schema,v(Ne));m.push(...O.diagnostics)}t.skipSemanticAnalysis&&m.push(...c.diagnostics);let l=m.filter(o=>o.severity==="error");if(s.schema===null||l.length>0)return{schema:null,trace:n,warnings:m.filter(o=>o.severity==="warning"),errors:l,success:!1};let E=s.schema;if(t.lowerSystemValues){let o=performance.now();E=E,n.push({phase:"lower",durationMs:performance.now()-o})}let N=m.filter(o=>o.severity==="warning");return{schema:E,trace:n,warnings:N,errors:m.filter(o=>o.severity==="error"),success:l.length===0}}function Kt(e){let t=T(e);return x(t.diagnostics)?{program:null,diagnostics:t.diagnostics}:b(t.tokens)}function Xt(e){return xe(e).errors}export{z as DEFAULT_ACTION_CONTEXT,H as DEFAULT_DISPATCHABLE_CONTEXT,X as DEFAULT_PATCH_CONTEXT,W as DEFAULT_SCHEMA_CONTEXT,I as DIAGNOSTIC_CODES,K as EFFECT_ARGS_CONTEXT,Ae as KEYWORDS,De as Lexer,Y as LoweringError,qe as Parser,je as Precedence,Oe as RESERVED_KEYWORDS,Ge as Scope,Be as ScopeAnalyzer,Ye as SemanticValidator,_ as analyzeScope,D as buildAnnotationIndex,Xt as check,xe as compile,tt as compileFragmentInContext,Ze as compileMelDomain,et as compileMelModule,We as createError,He as createInfo,_e as createLocation,Re as createPointLocation,Se as createPosition,Ce as createToken,ze as createWarning,Qe as extractSchemaGraph,q as extractTypeName,Xe as filterBySeverity,M as formatDiagnostic,ot as formatDiagnosticCode,ae as formatDiagnostics,w as generate,Je as generateCanonical,Ie as getBinaryPrecedence,at as getDiagnosticInfo,Fe as getKeywordKind,x as hasErrors,J as invalidKindForContext,te as invalidShape,Z as invalidSysPath,Le as isBinaryOp,Ke as isError,Pe as isExprNode,Te as isKeyword,be as isReserved,Ve as isRightAssociative,ve as isStmtNode,Ue as isUnaryOp,re as lowerExprNode,ie as lowerPatchFragments,oe as lowerSystemValues,we as mergeLocations,lt as normalizeExpr,gt as normalizeFunctionCall,b as parse,Kt as parseSource,B as renderAsDomain,r as renderExprNode,C as renderFragment,S as renderFragments,G as renderFragmentsByKind,h as renderPatchOp,f as renderTypeExpr,$ as renderTypeField,k as renderValue,Me as tokenToBinaryOp,T as tokenize,Q as unknownCallFn,ne as unknownNodeKind,ee as unsupportedBase,R as validateSemantics};
@@ -6,14 +6,14 @@
6
6
  * @see SPEC v0.4.0 §17.2
7
7
  */
8
8
  /**
9
- * Allowed system path prefixes.
9
+ * Allowed dollar path prefixes.
10
10
  *
11
- * In Translator path, only 'meta' and 'input' are allowed.
12
- * 'system' is forbidden (requires Flow execution).
11
+ * Current v5 lowering admits direct input and bound action context/runtime
12
+ * reads. Retired 'meta'/'system' prefixes are rejected before lowering.
13
13
  *
14
- * @see FDR-MEL-071
14
+ * @see ADR-027
15
15
  */
16
- export type AllowedSysPrefix = "meta" | "input";
16
+ export type AllowedSysPrefix = "input" | "runtime" | "context";
17
17
  /**
18
18
  * Context for single expression lowering.
19
19
  *
@@ -27,8 +27,7 @@ export interface ExprLoweringContext {
27
27
  */
28
28
  mode: "schema" | "action";
29
29
  /**
30
- * Allowed system path prefixes.
31
- * In Translator path: only ["meta", "input"]
30
+ * Allowed dollar path prefixes.
32
31
  *
33
32
  * @see FDR-MEL-071
34
33
  */
@@ -60,8 +59,7 @@ export interface ExprLoweringContext {
60
59
  */
61
60
  export interface PatchLoweringContext {
62
61
  /**
63
- * Allowed system path prefixes.
64
- * In Translator path: only ["meta", "input"]
62
+ * Allowed dollar path prefixes.
65
63
  *
66
64
  * @see FDR-MEL-071
67
65
  */
@@ -15,7 +15,7 @@ export type LoweringErrorCode =
15
15
  "INVALID_KIND_FOR_CONTEXT"
16
16
  /** Unknown function name in call node */
17
17
  | "UNKNOWN_CALL_FN"
18
- /** sys.system in Translator path */
18
+ /** Disallowed dollar namespace path */
19
19
  | "INVALID_SYS_PATH"
20
20
  /** get.base is not var(item) */
21
21
  | "UNSUPPORTED_BASE"
@@ -54,7 +54,7 @@ export declare function invalidKindForContext(kind: string, context: string, pat
54
54
  */
55
55
  export declare function unknownCallFn(fn: string, path?: string[]): LoweringError;
56
56
  /**
57
- * Create a lowering error for invalid sys path.
57
+ * Create a lowering error for invalid dollar namespace path.
58
58
  *
59
59
  * @example
60
60
  * throw invalidSysPath(["system", "uuid"]);
@@ -72,7 +72,7 @@ export interface MelRuntimePatch {
72
72
  * Runtime ConditionalPatchOp for snapshot state mutations.
73
73
  *
74
74
  * This is the intermediate representation between Translator output
75
- * and final concrete Patch[]. Host must call evaluateRuntimePatches()
75
+ * and final concrete Patch[]. Callers must call evaluateRuntimePatches()
76
76
  * to get concrete values.
77
77
  *
78
78
  * @see SPEC v0.4.0 §17.5, §20
@@ -1 +1 @@
1
- import{c as n}from"./chunk-M3P5RIDR.js";import"./chunk-PEO2YZ2Y.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-HOS3TLHW.js";import"./chunk-JYNK3VUK.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};
@@ -47,7 +47,7 @@ export interface AnnotationNode extends ASTNode {
47
47
  /**
48
48
  * Domain member types
49
49
  */
50
- export type DomainMember = StateNode | ComputedNode | ActionNode | FlowDeclNode;
50
+ export type DomainMember = StateNode | ContextNode | ComputedNode | ActionNode | FlowDeclNode;
51
51
  /**
52
52
  * Type declaration (v0.3.3)
53
53
  * Syntax: type Name = TypeExpr
@@ -75,6 +75,24 @@ export interface StateFieldNode extends ASTNode {
75
75
  typeExpr: TypeExprNode;
76
76
  initializer?: ExprNode;
77
77
  }
78
+ /**
79
+ * Context block declaration.
80
+ *
81
+ * Declares the shape of direct-injected external context. Values are supplied
82
+ * by the runtime, so context fields do not carry initializers.
83
+ */
84
+ export interface ContextNode extends ASTNode {
85
+ kind: "context";
86
+ fields: ContextFieldNode[];
87
+ }
88
+ /**
89
+ * Context field declaration.
90
+ */
91
+ export interface ContextFieldNode extends ASTNode {
92
+ kind: "contextField";
93
+ name: string;
94
+ typeExpr: TypeExprNode;
95
+ }
78
96
  /**
79
97
  * Computed value declaration
80
98
  */
@@ -271,7 +289,8 @@ export interface IdentifierExprNode extends ASTNode {
271
289
  name: string;
272
290
  }
273
291
  /**
274
- * System identifier expression ($system.*, $meta.*, $input.*)
292
+ * Dollar namespace identifier expression ($runtime.*, $context.*, $input.*,
293
+ * retired $system/$meta).
275
294
  */
276
295
  export interface SystemIdentExprNode extends ASTNode {
277
296
  kind: "systemIdent";
@@ -36,6 +36,8 @@ export declare class Parser {
36
36
  private parseDomainMember;
37
37
  private parseState;
38
38
  private parseStateField;
39
+ private parseContext;
40
+ private parseContextField;
39
41
  private parseComputed;
40
42
  private parseAction;
41
43
  private parseFlowDecl;
@@ -89,6 +91,7 @@ export declare class Parser {
89
91
  private check;
90
92
  private isOnceIntentContext;
91
93
  private isFlowDeclContext;
94
+ private isContextDeclContext;
92
95
  private isIncludeContext;
93
96
  private match;
94
97
  private consume;
package/dist/rollup.js CHANGED
@@ -1 +1 @@
1
- import{a as e}from"./chunk-MB43CHXV.js";import"./chunk-M3P5RIDR.js";import"./chunk-PEO2YZ2Y.js";var l=e.rollup,t=l;export{t as default,l as melPlugin};
1
+ import{a as e}from"./chunk-A356Y7I6.js";import"./chunk-HOS3TLHW.js";import"./chunk-JYNK3VUK.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-MB43CHXV.js";import"./chunk-M3P5RIDR.js";import"./chunk-PEO2YZ2Y.js";var t=e.rspack,o=t;export{o as default,t as melPlugin};
1
+ import{a as e}from"./chunk-A356Y7I6.js";import"./chunk-HOS3TLHW.js";import"./chunk-JYNK3VUK.js";var t=e.rspack,o=t;export{o as default,t as melPlugin};
@@ -68,3 +68,4 @@ export interface SourceMapExtractionResult {
68
68
  }
69
69
  export declare function createDefaultSourceMapEmissionContext(compilerVersion: string): SourceMapEmissionContext;
70
70
  export declare function extractSourceMap(program: ProgramNode, sourceText: string, schema: DomainSchema, ctx: SourceMapEmissionContext): SourceMapExtractionResult;
71
+ export declare function stableHashString(input: string): string;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Single implementation that targets Vite, Webpack, Rollup, esbuild, and Rspack.
5
5
  */
6
- import type { DomainSchema } from "@manifesto-ai/core";
6
+ import type { DomainSchema } from "./generator/ir.js";
7
7
  export type MelCodegenArtifact = {
8
8
  readonly schema: DomainSchema;
9
9
  readonly sourceId: string;
package/dist/vite.js CHANGED
@@ -1 +1 @@
1
- import{a as e}from"./chunk-MB43CHXV.js";import"./chunk-M3P5RIDR.js";import"./chunk-PEO2YZ2Y.js";var t=e.vite,o=t;export{o as default,t as melPlugin};
1
+ import{a as e}from"./chunk-A356Y7I6.js";import"./chunk-HOS3TLHW.js";import"./chunk-JYNK3VUK.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-MB43CHXV.js";import"./chunk-M3P5RIDR.js";import"./chunk-PEO2YZ2Y.js";var t=e.webpack,o=t;export{o as default,t as melPlugin};
1
+ import{a as e}from"./chunk-A356Y7I6.js";import"./chunk-HOS3TLHW.js";import"./chunk-JYNK3VUK.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.8.0",
3
+ "version": "5.0.0",
4
4
  "description": "Manifesto Compiler - MEL (Manifesto Expression Language) to DomainSchema compiler",
5
5
  "author": "eggplantiny <eggplantiny@gmail.com>",
6
6
  "license": "MIT",
@@ -61,7 +61,7 @@
61
61
  },
62
62
  "peerDependencies": {
63
63
  "@anthropic-ai/sdk": "^0.26.0",
64
- "@manifesto-ai/core": "^2.13.0",
64
+ "@manifesto-ai/core": "^5.0.0",
65
65
  "openai": "^4.0.0",
66
66
  "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
67
67
  "zod": "^4.3.6"
@@ -97,7 +97,7 @@
97
97
  "vitest": "^4.1.2",
98
98
  "webpack": "^5.106.1",
99
99
  "zod": "^4.3.6",
100
- "@manifesto-ai/core": "2.13.0"
100
+ "@manifesto-ai/core": "5.0.0"
101
101
  },
102
102
  "files": [
103
103
  "dist"