@manifesto-ai/compiler 1.6.2 → 1.8.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 (201) hide show
  1. package/README.md +67 -18
  2. package/dist/chunk-BH25NHMN.js +74 -0
  3. package/dist/chunk-BH25NHMN.js.map +1 -0
  4. package/dist/chunk-D62NIFP4.js +33 -0
  5. package/dist/chunk-D62NIFP4.js.map +1 -0
  6. package/dist/chunk-MKLDAZ2Z.js +6920 -0
  7. package/dist/chunk-MKLDAZ2Z.js.map +1 -0
  8. package/dist/esbuild.d.ts +8 -0
  9. package/dist/esbuild.js +14 -0
  10. package/dist/esbuild.js.map +1 -0
  11. package/dist/index.d.ts +2810 -11
  12. package/dist/index.js +2425 -43
  13. package/dist/index.js.map +1 -1
  14. package/dist/node-loader.d.ts +18 -0
  15. package/dist/node-loader.js +47 -0
  16. package/dist/node-loader.js.map +1 -0
  17. package/dist/rollup.d.ts +8 -0
  18. package/dist/rollup.js +14 -0
  19. package/dist/rollup.js.map +1 -0
  20. package/dist/rspack.d.ts +7 -0
  21. package/dist/rspack.js +14 -0
  22. package/dist/rspack.js.map +1 -0
  23. package/dist/unplugin-6wnvFiEo.d.ts +17 -0
  24. package/dist/vite.d.ts +8 -17
  25. package/dist/vite.js +13 -33
  26. package/dist/vite.js.map +1 -1
  27. package/dist/webpack.d.ts +8 -0
  28. package/dist/webpack.js +14 -0
  29. package/dist/webpack.js.map +1 -0
  30. package/package.json +40 -22
  31. package/dist/analyzer/index.d.ts +0 -6
  32. package/dist/analyzer/index.d.ts.map +0 -1
  33. package/dist/analyzer/index.js +0 -6
  34. package/dist/analyzer/index.js.map +0 -1
  35. package/dist/analyzer/scope.d.ts +0 -77
  36. package/dist/analyzer/scope.d.ts.map +0 -1
  37. package/dist/analyzer/scope.js +0 -296
  38. package/dist/analyzer/scope.js.map +0 -1
  39. package/dist/analyzer/validator.d.ts +0 -60
  40. package/dist/analyzer/validator.d.ts.map +0 -1
  41. package/dist/analyzer/validator.js +0 -439
  42. package/dist/analyzer/validator.js.map +0 -1
  43. package/dist/api/compile-mel-patch-collector.d.ts +0 -32
  44. package/dist/api/compile-mel-patch-collector.d.ts.map +0 -1
  45. package/dist/api/compile-mel-patch-collector.js +0 -425
  46. package/dist/api/compile-mel-patch-collector.js.map +0 -1
  47. package/dist/api/compile-mel-patch-expr.d.ts +0 -9
  48. package/dist/api/compile-mel-patch-expr.d.ts.map +0 -1
  49. package/dist/api/compile-mel-patch-expr.js +0 -179
  50. package/dist/api/compile-mel-patch-expr.js.map +0 -1
  51. package/dist/api/compile-mel-patch-location.d.ts +0 -10
  52. package/dist/api/compile-mel-patch-location.d.ts.map +0 -1
  53. package/dist/api/compile-mel-patch-location.js +0 -48
  54. package/dist/api/compile-mel-patch-location.js.map +0 -1
  55. package/dist/api/compile-mel-patch.d.ts +0 -6
  56. package/dist/api/compile-mel-patch.d.ts.map +0 -1
  57. package/dist/api/compile-mel-patch.js +0 -244
  58. package/dist/api/compile-mel-patch.js.map +0 -1
  59. package/dist/api/compile-mel.d.ts +0 -126
  60. package/dist/api/compile-mel.d.ts.map +0 -1
  61. package/dist/api/compile-mel.js +0 -114
  62. package/dist/api/compile-mel.js.map +0 -1
  63. package/dist/api/index.d.ts +0 -10
  64. package/dist/api/index.d.ts.map +0 -1
  65. package/dist/api/index.js +0 -9
  66. package/dist/api/index.js.map +0 -1
  67. package/dist/diagnostics/codes.d.ts +0 -25
  68. package/dist/diagnostics/codes.d.ts.map +0 -1
  69. package/dist/diagnostics/codes.js +0 -154
  70. package/dist/diagnostics/codes.js.map +0 -1
  71. package/dist/diagnostics/index.d.ts +0 -6
  72. package/dist/diagnostics/index.d.ts.map +0 -1
  73. package/dist/diagnostics/index.js +0 -6
  74. package/dist/diagnostics/index.js.map +0 -1
  75. package/dist/diagnostics/types.d.ts +0 -67
  76. package/dist/diagnostics/types.d.ts.map +0 -1
  77. package/dist/diagnostics/types.js +0 -58
  78. package/dist/diagnostics/types.js.map +0 -1
  79. package/dist/evaluation/context.d.ts +0 -91
  80. package/dist/evaluation/context.d.ts.map +0 -1
  81. package/dist/evaluation/context.js +0 -53
  82. package/dist/evaluation/context.js.map +0 -1
  83. package/dist/evaluation/evaluate-expr.d.ts +0 -24
  84. package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
  85. package/dist/evaluation/evaluate-expr.js +0 -577
  86. package/dist/evaluation/evaluate-expr.js.map +0 -1
  87. package/dist/evaluation/evaluate-patch.d.ts +0 -123
  88. package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
  89. package/dist/evaluation/evaluate-patch.js +0 -202
  90. package/dist/evaluation/evaluate-patch.js.map +0 -1
  91. package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
  92. package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
  93. package/dist/evaluation/evaluate-runtime-patch.js +0 -185
  94. package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
  95. package/dist/evaluation/index.d.ts +0 -15
  96. package/dist/evaluation/index.d.ts.map +0 -1
  97. package/dist/evaluation/index.js +0 -13
  98. package/dist/evaluation/index.js.map +0 -1
  99. package/dist/generator/index.d.ts +0 -7
  100. package/dist/generator/index.d.ts.map +0 -1
  101. package/dist/generator/index.js +0 -7
  102. package/dist/generator/index.js.map +0 -1
  103. package/dist/generator/ir.d.ts +0 -348
  104. package/dist/generator/ir.d.ts.map +0 -1
  105. package/dist/generator/ir.js +0 -715
  106. package/dist/generator/ir.js.map +0 -1
  107. package/dist/generator/lowering.d.ts +0 -11
  108. package/dist/generator/lowering.d.ts.map +0 -1
  109. package/dist/generator/lowering.js +0 -369
  110. package/dist/generator/lowering.js.map +0 -1
  111. package/dist/generator/normalizer.d.ts +0 -16
  112. package/dist/generator/normalizer.d.ts.map +0 -1
  113. package/dist/generator/normalizer.js +0 -181
  114. package/dist/generator/normalizer.js.map +0 -1
  115. package/dist/index.d.ts.map +0 -1
  116. package/dist/lexer/index.d.ts +0 -7
  117. package/dist/lexer/index.d.ts.map +0 -1
  118. package/dist/lexer/index.js +0 -7
  119. package/dist/lexer/index.js.map +0 -1
  120. package/dist/lexer/lexer.d.ts +0 -59
  121. package/dist/lexer/lexer.d.ts.map +0 -1
  122. package/dist/lexer/lexer.js +0 -433
  123. package/dist/lexer/lexer.js.map +0 -1
  124. package/dist/lexer/source-location.d.ts +0 -41
  125. package/dist/lexer/source-location.d.ts.map +0 -1
  126. package/dist/lexer/source-location.js +0 -33
  127. package/dist/lexer/source-location.js.map +0 -1
  128. package/dist/lexer/tokens.d.ts +0 -47
  129. package/dist/lexer/tokens.d.ts.map +0 -1
  130. package/dist/lexer/tokens.js +0 -73
  131. package/dist/lexer/tokens.js.map +0 -1
  132. package/dist/loader.d.ts +0 -23
  133. package/dist/loader.d.ts.map +0 -1
  134. package/dist/loader.js +0 -62
  135. package/dist/loader.js.map +0 -1
  136. package/dist/lowering/context.d.ts +0 -96
  137. package/dist/lowering/context.d.ts.map +0 -1
  138. package/dist/lowering/context.js +0 -42
  139. package/dist/lowering/context.js.map +0 -1
  140. package/dist/lowering/errors.d.ts +0 -84
  141. package/dist/lowering/errors.d.ts.map +0 -1
  142. package/dist/lowering/errors.js +0 -81
  143. package/dist/lowering/errors.js.map +0 -1
  144. package/dist/lowering/index.d.ts +0 -20
  145. package/dist/lowering/index.d.ts.map +0 -1
  146. package/dist/lowering/index.js +0 -13
  147. package/dist/lowering/index.js.map +0 -1
  148. package/dist/lowering/lower-expr.d.ts +0 -76
  149. package/dist/lowering/lower-expr.d.ts.map +0 -1
  150. package/dist/lowering/lower-expr.js +0 -366
  151. package/dist/lowering/lower-expr.js.map +0 -1
  152. package/dist/lowering/lower-patch.d.ts +0 -231
  153. package/dist/lowering/lower-patch.d.ts.map +0 -1
  154. package/dist/lowering/lower-patch.js +0 -146
  155. package/dist/lowering/lower-patch.js.map +0 -1
  156. package/dist/lowering/lower-runtime-patch.d.ts +0 -100
  157. package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
  158. package/dist/lowering/lower-runtime-patch.js +0 -49
  159. package/dist/lowering/lower-runtime-patch.js.map +0 -1
  160. package/dist/mel-module.d.ts +0 -13
  161. package/dist/mel-module.d.ts.map +0 -1
  162. package/dist/mel-module.js +0 -33
  163. package/dist/mel-module.js.map +0 -1
  164. package/dist/parser/ast.d.ts +0 -344
  165. package/dist/parser/ast.d.ts.map +0 -1
  166. package/dist/parser/ast.js +0 -24
  167. package/dist/parser/ast.js.map +0 -1
  168. package/dist/parser/index.d.ts +0 -7
  169. package/dist/parser/index.d.ts.map +0 -1
  170. package/dist/parser/index.js +0 -7
  171. package/dist/parser/index.js.map +0 -1
  172. package/dist/parser/parser.d.ts +0 -92
  173. package/dist/parser/parser.d.ts.map +0 -1
  174. package/dist/parser/parser.js +0 -892
  175. package/dist/parser/parser.js.map +0 -1
  176. package/dist/parser/precedence.d.ts +0 -44
  177. package/dist/parser/precedence.d.ts.map +0 -1
  178. package/dist/parser/precedence.js +0 -69
  179. package/dist/parser/precedence.js.map +0 -1
  180. package/dist/renderer/expr-node.d.ts +0 -172
  181. package/dist/renderer/expr-node.d.ts.map +0 -1
  182. package/dist/renderer/expr-node.js +0 -218
  183. package/dist/renderer/expr-node.js.map +0 -1
  184. package/dist/renderer/fragment.d.ts +0 -84
  185. package/dist/renderer/fragment.d.ts.map +0 -1
  186. package/dist/renderer/fragment.js +0 -172
  187. package/dist/renderer/fragment.js.map +0 -1
  188. package/dist/renderer/index.d.ts +0 -23
  189. package/dist/renderer/index.d.ts.map +0 -1
  190. package/dist/renderer/index.js +0 -27
  191. package/dist/renderer/index.js.map +0 -1
  192. package/dist/renderer/patch-op.d.ts +0 -82
  193. package/dist/renderer/patch-op.d.ts.map +0 -1
  194. package/dist/renderer/patch-op.js +0 -204
  195. package/dist/renderer/patch-op.js.map +0 -1
  196. package/dist/renderer/type-expr.d.ts +0 -61
  197. package/dist/renderer/type-expr.d.ts.map +0 -1
  198. package/dist/renderer/type-expr.js +0 -131
  199. package/dist/renderer/type-expr.js.map +0 -1
  200. package/dist/vite.d.ts.map +0 -1
  201. package/loader.cjs +0 -22
@@ -1,76 +0,0 @@
1
- /**
2
- * Expression Lowering
3
- *
4
- * Transforms MEL Canonical IR (7 kinds) to Core Runtime IR (30+ kinds).
5
- *
6
- * @see SPEC v0.4.0 §17
7
- */
8
- import type { ExprNode as CoreExprNode } from "@manifesto-ai/core";
9
- import type { ExprLoweringContext } from "./context.js";
10
- /**
11
- * MEL primitive value.
12
- */
13
- export type MelPrimitive = null | boolean | number | string;
14
- /**
15
- * MEL path segment.
16
- */
17
- export type MelPathSegment = {
18
- kind: "prop";
19
- name: string;
20
- };
21
- /**
22
- * MEL path node array.
23
- */
24
- export type MelPathNode = MelPathSegment[];
25
- /**
26
- * MEL system path as segment array.
27
- */
28
- export type MelSystemPath = string[];
29
- /**
30
- * MEL object field.
31
- */
32
- export type MelObjField = {
33
- key: string;
34
- value: MelExprNode;
35
- };
36
- /**
37
- * MEL Canonical IR (7 kinds).
38
- *
39
- * @see SPEC v0.4.0 §17.1.1
40
- */
41
- export type MelExprNode = {
42
- kind: "lit";
43
- value: MelPrimitive;
44
- } | {
45
- kind: "var";
46
- name: "item";
47
- } | {
48
- kind: "sys";
49
- path: MelSystemPath;
50
- } | {
51
- kind: "get";
52
- base?: MelExprNode;
53
- path: MelPathNode;
54
- } | {
55
- kind: "call";
56
- fn: string;
57
- args: MelExprNode[];
58
- } | {
59
- kind: "obj";
60
- fields: MelObjField[];
61
- } | {
62
- kind: "arr";
63
- elements: MelExprNode[];
64
- };
65
- /**
66
- * Lower MEL expression to Core expression.
67
- *
68
- * @param input - MEL canonical IR expression
69
- * @param ctx - Lowering context
70
- * @returns Core runtime IR expression
71
- * @throws LoweringError if expression cannot be lowered
72
- *
73
- * @see SPEC v0.4.0 §17.3
74
- */
75
- export declare function lowerExprNode(input: MelExprNode, ctx: ExprLoweringContext): CoreExprNode;
76
- //# sourceMappingURL=lower-expr.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lower-expr.d.ts","sourceRoot":"","sources":["../../src/lowering/lower-expr.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAWxD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC;AAI7C;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,mBAAmB,GACvB,YAAY,CA0Bd"}
@@ -1,366 +0,0 @@
1
- /**
2
- * Expression Lowering
3
- *
4
- * Transforms MEL Canonical IR (7 kinds) to Core Runtime IR (30+ kinds).
5
- *
6
- * @see SPEC v0.4.0 §17
7
- */
8
- import { invalidKindForContext, invalidSysPath, unknownCallFn, unknownNodeKind, unsupportedBase, } from "./errors.js";
9
- // ============ Lowering Function ============
10
- /**
11
- * Lower MEL expression to Core expression.
12
- *
13
- * @param input - MEL canonical IR expression
14
- * @param ctx - Lowering context
15
- * @returns Core runtime IR expression
16
- * @throws LoweringError if expression cannot be lowered
17
- *
18
- * @see SPEC v0.4.0 §17.3
19
- */
20
- export function lowerExprNode(input, ctx) {
21
- switch (input.kind) {
22
- case "lit":
23
- return lowerLit(input);
24
- case "var":
25
- return lowerVar(input, ctx);
26
- case "sys":
27
- return lowerSys(input, ctx);
28
- case "get":
29
- return lowerGet(input, ctx);
30
- case "call":
31
- return lowerCall(input, ctx);
32
- case "obj":
33
- return lowerObj(input, ctx);
34
- case "arr":
35
- return lowerArr(input, ctx);
36
- default:
37
- throw unknownNodeKind(input.kind);
38
- }
39
- }
40
- // ============ Individual Kind Lowering ============
41
- /**
42
- * Lower lit node.
43
- * Pass through - Core lit accepts any value.
44
- */
45
- function lowerLit(input) {
46
- return { kind: "lit", value: input.value };
47
- }
48
- /**
49
- * Lower var node.
50
- *
51
- * var(item) → get("$item")
52
- *
53
- * Only allowed in effect.args context (allowItem: true).
54
- *
55
- * @see FDR-MEL-068, SPEC §17.3.2
56
- */
57
- function lowerVar(input, ctx) {
58
- if (!ctx.allowItem) {
59
- throw invalidKindForContext("var", ctx.mode);
60
- }
61
- return { kind: "get", path: "$item" };
62
- }
63
- /**
64
- * Lower sys node.
65
- *
66
- * sys(["meta", "intentId"]) → get("meta.intentId")
67
- * sys(["input", "title"]) → get("input.title")
68
- * sys(["system", ...]) → LoweringError (forbidden in Translator path)
69
- *
70
- * @see FDR-MEL-067, FDR-MEL-071, SPEC §17.3.1
71
- */
72
- function lowerSys(input, ctx) {
73
- if (input.path.length === 0) {
74
- throw invalidSysPath(input.path);
75
- }
76
- const prefix = input.path[0];
77
- const allowedPrefixes = ctx.allowSysPaths?.prefixes ?? ["meta", "input"];
78
- if (!allowedPrefixes.includes(prefix)) {
79
- throw invalidSysPath(input.path);
80
- }
81
- // Core convention: no $ prefix for meta/input
82
- const path = input.path.join(".");
83
- return { kind: "get", path };
84
- }
85
- /**
86
- * Lower get node.
87
- *
88
- * PathNode[] → dot-notation string
89
- * get.base only supports var(item)
90
- *
91
- * @see FDR-MEL-066, SPEC §17.3.3, §17.3.4
92
- */
93
- function lowerGet(input, ctx) {
94
- const pathStr = input.path.map((seg) => seg.name).join(".");
95
- if (input.base === undefined) {
96
- return { kind: "get", path: pathStr };
97
- }
98
- // base must be var(item)
99
- if (input.base.kind === "var" && input.base.name === "item") {
100
- if (!ctx.allowItem) {
101
- throw invalidKindForContext("var", ctx.mode);
102
- }
103
- return { kind: "get", path: `$item.${pathStr}` };
104
- }
105
- throw unsupportedBase(input.base.kind);
106
- }
107
- /**
108
- * Lower call node.
109
- *
110
- * call(fn, args) → specialized Core node
111
- *
112
- * @see SPEC §17.3.5
113
- */
114
- function lowerCall(input, ctx) {
115
- const { fn, args } = input;
116
- // Binary operators: left, right
117
- if (isBinaryOp(fn)) {
118
- if (args.length !== 2) {
119
- throw unknownCallFn(fn);
120
- }
121
- const [left, right] = args;
122
- return {
123
- kind: fn,
124
- left: lowerExprNode(left, ctx),
125
- right: lowerExprNode(right, ctx),
126
- };
127
- }
128
- // Unary operators: arg
129
- if (isUnaryArgOp(fn)) {
130
- if (args.length !== 1) {
131
- throw unknownCallFn(fn);
132
- }
133
- return {
134
- kind: fn,
135
- arg: lowerExprNode(args[0], ctx),
136
- };
137
- }
138
- // Unary operators: str
139
- if (fn === "trim") {
140
- if (args.length !== 1) {
141
- throw unknownCallFn(fn);
142
- }
143
- return {
144
- kind: "trim",
145
- str: lowerExprNode(args[0], ctx),
146
- };
147
- }
148
- // Variadic operators: args
149
- if (isArgsOp(fn)) {
150
- return {
151
- kind: fn,
152
- args: args.map((a) => lowerExprNode(a, ctx)),
153
- };
154
- }
155
- // Conditional: if(cond, then, else)
156
- if (fn === "if") {
157
- if (args.length !== 3) {
158
- throw unknownCallFn(fn);
159
- }
160
- return {
161
- kind: "if",
162
- cond: lowerExprNode(args[0], ctx),
163
- then: lowerExprNode(args[1], ctx),
164
- else: lowerExprNode(args[2], ctx),
165
- };
166
- }
167
- if (fn === "field") {
168
- if (args.length !== 2) {
169
- throw unknownCallFn(fn);
170
- }
171
- const object = lowerExprNode(args[0], ctx);
172
- const property = args[1];
173
- if (property.kind !== "lit" || typeof property.value !== "string") {
174
- throw unknownCallFn(fn);
175
- }
176
- return {
177
- kind: "field",
178
- object,
179
- property: property.value,
180
- };
181
- }
182
- // Array operators: array
183
- if (isArrayArgOp(fn)) {
184
- if (args.length !== 1) {
185
- throw unknownCallFn(fn);
186
- }
187
- return {
188
- kind: fn,
189
- array: lowerExprNode(args[0], ctx),
190
- };
191
- }
192
- // Object operators: obj
193
- if (isObjArgOp(fn)) {
194
- if (args.length !== 1) {
195
- throw unknownCallFn(fn);
196
- }
197
- return {
198
- kind: fn,
199
- obj: lowerExprNode(args[0], ctx),
200
- };
201
- }
202
- // at(array, index)
203
- if (fn === "at") {
204
- if (args.length !== 2) {
205
- throw unknownCallFn(fn);
206
- }
207
- return {
208
- kind: "at",
209
- array: lowerExprNode(args[0], ctx),
210
- index: lowerExprNode(args[1], ctx),
211
- };
212
- }
213
- // includes(array, item)
214
- if (fn === "includes") {
215
- if (args.length !== 2) {
216
- throw unknownCallFn(fn);
217
- }
218
- return {
219
- kind: "includes",
220
- array: lowerExprNode(args[0], ctx),
221
- item: lowerExprNode(args[1], ctx),
222
- };
223
- }
224
- // filter, map, find, every, some: array, predicate/mapper
225
- if (isPredicateOp(fn)) {
226
- if (args.length !== 2) {
227
- throw unknownCallFn(fn);
228
- }
229
- const predicateCtx = { ...ctx, allowItem: true };
230
- if (fn === "map") {
231
- return {
232
- kind: "map",
233
- array: lowerExprNode(args[0], ctx),
234
- mapper: lowerExprNode(args[1], predicateCtx),
235
- };
236
- }
237
- return {
238
- kind: fn,
239
- array: lowerExprNode(args[0], ctx),
240
- predicate: lowerExprNode(args[1], predicateCtx),
241
- };
242
- }
243
- // slice(array, start, end?)
244
- if (fn === "slice") {
245
- if (args.length < 2 || args.length > 3) {
246
- throw unknownCallFn(fn);
247
- }
248
- const result = {
249
- kind: "slice",
250
- array: lowerExprNode(args[0], ctx),
251
- start: lowerExprNode(args[1], ctx),
252
- };
253
- if (args.length === 3) {
254
- result.end = lowerExprNode(args[2], ctx);
255
- }
256
- return result;
257
- }
258
- // substring(str, start, end?)
259
- if (fn === "substring") {
260
- if (args.length < 2 || args.length > 3) {
261
- throw unknownCallFn(fn);
262
- }
263
- const result = {
264
- kind: "substring",
265
- str: lowerExprNode(args[0], ctx),
266
- start: lowerExprNode(args[1], ctx),
267
- };
268
- if (args.length === 3) {
269
- result.end = lowerExprNode(args[2], ctx);
270
- }
271
- return result;
272
- }
273
- // append(array, ...items)
274
- if (fn === "append") {
275
- if (args.length < 1) {
276
- throw unknownCallFn(fn);
277
- }
278
- return {
279
- kind: "append",
280
- array: lowerExprNode(args[0], ctx),
281
- items: args.slice(1).map((a) => lowerExprNode(a, ctx)),
282
- };
283
- }
284
- // merge(...objects)
285
- if (fn === "merge") {
286
- return {
287
- kind: "merge",
288
- objects: args.map((a) => lowerExprNode(a, ctx)),
289
- };
290
- }
291
- throw unknownCallFn(fn);
292
- }
293
- /**
294
- * Lower obj node.
295
- *
296
- * obj({ fields: [{key, value}] }) → object({ fields: Record })
297
- *
298
- * @see SPEC §17
299
- */
300
- function lowerObj(input, ctx) {
301
- const fields = {};
302
- for (const field of input.fields) {
303
- fields[field.key] = lowerExprNode(field.value, ctx);
304
- }
305
- return { kind: "object", fields };
306
- }
307
- /**
308
- * Lower arr node.
309
- *
310
- * arr({ elements: [...] }) → lit([...evaluated])
311
- *
312
- * Note: Core doesn't have an "arr" kind, so we evaluate to lit
313
- * if all elements are literals, otherwise use concat/append pattern.
314
- * For simplicity, we'll create an evaluated array literal.
315
- *
316
- * @see SPEC §17
317
- */
318
- function lowerArr(input, ctx) {
319
- // If all elements are literals, we can create a lit array
320
- const allLiterals = input.elements.every((e) => e.kind === "lit");
321
- if (allLiterals) {
322
- const values = input.elements.map((e) => e.value);
323
- return { kind: "lit", value: values };
324
- }
325
- // Otherwise, we need to build the array using concat
326
- // Start with empty array and append each element
327
- const loweredElements = input.elements.map((e) => lowerExprNode(e, ctx));
328
- if (loweredElements.length === 0) {
329
- return { kind: "lit", value: [] };
330
- }
331
- // Use append pattern: append([], e1, e2, ...)
332
- return {
333
- kind: "append",
334
- array: { kind: "lit", value: [] },
335
- items: loweredElements,
336
- };
337
- }
338
- // ============ Operator Classification ============
339
- /** Binary operators: eq, neq, gt, gte, lt, lte, add, sub, mul, div, mod */
340
- function isBinaryOp(fn) {
341
- return [
342
- "eq", "neq", "gt", "gte", "lt", "lte",
343
- "add", "sub", "mul", "div", "mod",
344
- ].includes(fn);
345
- }
346
- /** Unary operators with 'arg' field: not, len, typeof, isNull */
347
- function isUnaryArgOp(fn) {
348
- return ["not", "len", "typeof", "isNull"].includes(fn);
349
- }
350
- /** Variadic operators with 'args' field: and, or, concat, coalesce */
351
- function isArgsOp(fn) {
352
- return ["and", "or", "concat", "coalesce"].includes(fn);
353
- }
354
- /** Array operators with 'array' field: first, last */
355
- function isArrayArgOp(fn) {
356
- return ["first", "last"].includes(fn);
357
- }
358
- /** Object operators with 'obj' field: keys, values, entries */
359
- function isObjArgOp(fn) {
360
- return ["keys", "values", "entries"].includes(fn);
361
- }
362
- /** Predicate operators: filter, find, every, some, map */
363
- function isPredicateOp(fn) {
364
- return ["filter", "find", "every", "some", "map"].includes(fn);
365
- }
366
- //# sourceMappingURL=lower-expr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lower-expr.js","sourceRoot":"","sources":["../../src/lowering/lower-expr.ts"],"names":[],"mappings":"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"}
@@ -1,231 +0,0 @@
1
- /**
2
- * Patch Lowering
3
- *
4
- * Transforms PatchFragment[] (MEL IR) to ConditionalPatchOp[] (Core IR).
5
- *
6
- * @see SPEC v0.4.0 §17.4, §17.5
7
- */
8
- import type { ExprNode as CoreExprNode } from "@manifesto-ai/core";
9
- import type { PatchLoweringContext } from "./context.js";
10
- import { MelExprNode } from "./lower-expr.js";
11
- /**
12
- * MEL TypeExpr (Translator output).
13
- */
14
- export type MelTypeExpr = {
15
- kind: "primitive";
16
- name: "string" | "number" | "boolean" | "null";
17
- } | {
18
- kind: "array";
19
- element: MelTypeExpr;
20
- } | {
21
- kind: "object";
22
- fields: MelTypeField[];
23
- } | {
24
- kind: "union";
25
- members: MelTypeExpr[];
26
- } | {
27
- kind: "literal";
28
- value: string | number | boolean | null;
29
- } | {
30
- kind: "ref";
31
- name: string;
32
- };
33
- /**
34
- * MEL TypeField.
35
- */
36
- export type MelTypeField = {
37
- name: string;
38
- type: MelTypeExpr;
39
- optional?: boolean;
40
- };
41
- /**
42
- * MEL PatchOp (Translator output - schema operations).
43
- *
44
- * @see SPEC v0.4.0 §17.4
45
- */
46
- export type MelPatchOp = {
47
- kind: "addType";
48
- typeName: string;
49
- typeExpr: MelTypeExpr;
50
- } | {
51
- kind: "addField";
52
- typeName: string;
53
- field: MelTypeField & {
54
- defaultValue?: unknown;
55
- };
56
- } | {
57
- kind: "setFieldType";
58
- path: string;
59
- typeExpr: MelTypeExpr;
60
- } | {
61
- kind: "setDefaultValue";
62
- path: string;
63
- value: unknown;
64
- } | {
65
- kind: "addConstraint";
66
- targetPath: string;
67
- rule: MelExprNode;
68
- message?: string;
69
- } | {
70
- kind: "addComputed";
71
- name: string;
72
- expr: MelExprNode;
73
- deps?: string[];
74
- } | {
75
- kind: "addActionAvailable";
76
- actionName: string;
77
- expr: MelExprNode;
78
- };
79
- /**
80
- * MEL PatchFragment (Translator output).
81
- *
82
- * Contains MEL IR expressions that need lowering.
83
- *
84
- * @see SPEC v0.4.0 §17.4
85
- */
86
- export interface MelPatchFragment {
87
- /**
88
- * Unique fragment identifier (content-addressed).
89
- */
90
- fragmentId: string;
91
- /**
92
- * Source intent identifier.
93
- */
94
- sourceIntentId: string;
95
- /**
96
- * Fragment operation with MEL IR expressions.
97
- */
98
- op: MelPatchOp;
99
- /**
100
- * Optional condition (MEL IR).
101
- * Preserved in output as Core IR.
102
- */
103
- condition?: MelExprNode;
104
- /**
105
- * Confidence score (0-1).
106
- */
107
- confidence: number;
108
- /**
109
- * Evidence strings.
110
- */
111
- evidence: string[];
112
- /**
113
- * Creation timestamp (ISO 8601).
114
- */
115
- createdAt: string;
116
- }
117
- /**
118
- * Lowered TypeExpr (Core format).
119
- */
120
- export type LoweredTypeExpr = {
121
- kind: "primitive";
122
- name: "string" | "number" | "boolean" | "null";
123
- } | {
124
- kind: "array";
125
- element: LoweredTypeExpr;
126
- } | {
127
- kind: "object";
128
- fields: LoweredTypeField[];
129
- } | {
130
- kind: "union";
131
- members: LoweredTypeExpr[];
132
- } | {
133
- kind: "literal";
134
- value: string | number | boolean | null;
135
- } | {
136
- kind: "ref";
137
- name: string;
138
- };
139
- /**
140
- * Lowered TypeField.
141
- */
142
- export type LoweredTypeField = {
143
- name: string;
144
- type: LoweredTypeExpr;
145
- optional?: boolean;
146
- };
147
- /**
148
- * Lowered PatchOp (Core IR expressions).
149
- *
150
- * Same structure as MelPatchOp but with Core IR expressions.
151
- */
152
- export type LoweredPatchOp = {
153
- kind: "addType";
154
- typeName: string;
155
- typeExpr: LoweredTypeExpr;
156
- } | {
157
- kind: "addField";
158
- typeName: string;
159
- field: LoweredTypeField & {
160
- defaultValue?: unknown;
161
- };
162
- } | {
163
- kind: "setFieldType";
164
- path: string;
165
- typeExpr: LoweredTypeExpr;
166
- } | {
167
- kind: "setDefaultValue";
168
- path: string;
169
- value: unknown;
170
- } | {
171
- kind: "addConstraint";
172
- targetPath: string;
173
- rule: CoreExprNode;
174
- message?: string;
175
- } | {
176
- kind: "addComputed";
177
- name: string;
178
- expr: CoreExprNode;
179
- deps?: string[];
180
- } | {
181
- kind: "addActionAvailable";
182
- actionName: string;
183
- expr: CoreExprNode;
184
- };
185
- /**
186
- * Schema conditional patch operation (intermediate IR for Translator → Host).
187
- *
188
- * Used for schema evolution operations (addType, addField, addComputed, etc.).
189
- * Preserves fragment condition for later evaluation.
190
- *
191
- * @see SPEC v0.4.0 §17.5
192
- */
193
- export interface SchemaConditionalPatchOp {
194
- /**
195
- * Fragment identifier (for tracing).
196
- */
197
- fragmentId: string;
198
- /**
199
- * Condition expression (Core IR).
200
- * If present, op is only applied when condition evaluates to true.
201
- *
202
- * @see FDR-MEL-073
203
- */
204
- condition?: CoreExprNode;
205
- /**
206
- * Lowered patch operation.
207
- */
208
- op: LoweredPatchOp;
209
- /**
210
- * Confidence (preserved from fragment).
211
- */
212
- confidence: number;
213
- }
214
- /**
215
- * @deprecated Use SchemaConditionalPatchOp instead.
216
- */
217
- export type ConditionalPatchOp = SchemaConditionalPatchOp;
218
- /**
219
- * Lower PatchFragment[] to SchemaConditionalPatchOp[].
220
- *
221
- * Transforms MEL IR expressions to Core IR expressions.
222
- * Preserves fragment conditions for evaluation phase.
223
- *
224
- * @param fragments - MEL IR patch fragments from Translator
225
- * @param ctx - Patch lowering context
226
- * @returns Core IR schema conditional patch operations
227
- *
228
- * @see SPEC v0.4.0 §17.5
229
- */
230
- export declare function lowerPatchFragments(fragments: MelPatchFragment[], ctx: PatchLoweringContext): SchemaConditionalPatchOp[];
231
- //# sourceMappingURL=lower-patch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lower-patch.d.ts","sourceRoot":"","sources":["../../src/lowering/lower-patch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAiB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI7D;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GAC5D;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClD,GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACzD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,EAAE,EAAE,UAAU,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GAChE;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,GAAG;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACtD,GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACzD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;IAEzB;;OAEG;IACH,EAAE,EAAE,cAAc,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAI1D;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,GAAG,EAAE,oBAAoB,GACxB,wBAAwB,EAAE,CAE5B"}