@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
package/dist/vite.js CHANGED
@@ -1,34 +1,14 @@
1
- /**
2
- * Vite plugin for MEL files.
3
- */
4
- import { compileMelToModuleCode } from "./mel-module.js";
5
- function normalizeId(id) {
6
- const [withoutQuery] = id.split("?", 1);
7
- return withoutQuery;
8
- }
9
- function testRegex(regex, value) {
10
- regex.lastIndex = 0;
11
- return regex.test(value);
12
- }
13
- /**
14
- * Compile `.mel` files into ESM modules that export compiled DomainSchema.
15
- */
16
- export function melPlugin(options = {}) {
17
- const include = options.include ?? /\.mel$/;
18
- return {
19
- name: "manifesto:mel",
20
- enforce: "pre",
21
- transform(source, id) {
22
- const sourceId = normalizeId(id);
23
- if (!testRegex(include, sourceId)) {
24
- return null;
25
- }
26
- return {
27
- code: compileMelToModuleCode(source, sourceId),
28
- map: null,
29
- };
30
- },
31
- };
32
- }
33
- export default melPlugin;
1
+ import {
2
+ unpluginMel
3
+ } from "./chunk-BH25NHMN.js";
4
+ import "./chunk-D62NIFP4.js";
5
+ import "./chunk-MKLDAZ2Z.js";
6
+
7
+ // src/vite.ts
8
+ var melPlugin = unpluginMel.vite;
9
+ var vite_default = melPlugin;
10
+ export {
11
+ vite_default as default,
12
+ melPlugin
13
+ };
34
14
  //# sourceMappingURL=vite.js.map
package/dist/vite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAUzD,SAAS,WAAW,CAAC,EAAU;IAC7B,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,KAAa;IAC7C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAE5C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,KAAK;QACd,SAAS,CAAC,MAAc,EAAE,EAAU;YAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC9C,GAAG,EAAE,IAAI;aACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"sources":["../src/vite.ts"],"sourcesContent":["/**\n * Vite plugin for MEL files.\n */\n\nimport { unpluginMel } from \"./unplugin.js\";\n\nexport type { MelPluginOptions, MelCodegenOptions } from \"./unplugin.js\";\nexport const melPlugin = unpluginMel.vite;\nexport default melPlugin;\n"],"mappings":";;;;;;;AAOO,IAAM,YAAY,YAAY;AACrC,IAAO,eAAQ;","names":[]}
@@ -0,0 +1,8 @@
1
+ import * as unplugin from 'unplugin';
2
+ import { M as MelPluginOptions } from './unplugin-6wnvFiEo.js';
3
+ export { a as MelCodegenOptions } from './unplugin-6wnvFiEo.js';
4
+ import '@manifesto-ai/codegen';
5
+
6
+ declare const melPlugin: (options: MelPluginOptions) => unplugin.WebpackPluginInstance;
7
+
8
+ export { MelPluginOptions, melPlugin as default, melPlugin };
@@ -0,0 +1,14 @@
1
+ import {
2
+ unpluginMel
3
+ } from "./chunk-BH25NHMN.js";
4
+ import "./chunk-D62NIFP4.js";
5
+ import "./chunk-MKLDAZ2Z.js";
6
+
7
+ // src/webpack.ts
8
+ var melPlugin = unpluginMel.webpack;
9
+ var webpack_default = melPlugin;
10
+ export {
11
+ webpack_default as default,
12
+ melPlugin
13
+ };
14
+ //# sourceMappingURL=webpack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/webpack.ts"],"sourcesContent":["/**\n * Webpack plugin for MEL files.\n */\n\nimport { unpluginMel } from \"./unplugin.js\";\n\nexport type { MelPluginOptions, MelCodegenOptions } from \"./unplugin.js\";\nexport const melPlugin = unpluginMel.webpack;\nexport default melPlugin;\n"],"mappings":";;;;;;;AAOO,IAAM,YAAY,YAAY;AACrC,IAAO,kBAAQ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifesto-ai/compiler",
3
- "version": "1.6.2",
3
+ "version": "1.8.0",
4
4
  "description": "Manifesto Compiler - MEL (Manifesto Expression Language) to DomainSchema compiler",
5
5
  "author": "eggplantiny <eggplantiny@gmail.com>",
6
6
  "license": "MIT",
@@ -20,8 +20,7 @@
20
20
  "semantic",
21
21
  "domain-schema",
22
22
  "deterministic",
23
- "schema-generation",
24
- "ai"
23
+ "schema-generation"
25
24
  ],
26
25
  "type": "module",
27
26
  "main": "./dist/index.js",
@@ -33,36 +32,53 @@
33
32
  },
34
33
  "./vite": {
35
34
  "types": "./dist/vite.d.ts",
36
- "import": "./dist/vite.js",
37
- "default": "./dist/vite.js"
35
+ "import": "./dist/vite.js"
36
+ },
37
+ "./webpack": {
38
+ "types": "./dist/webpack.d.ts",
39
+ "import": "./dist/webpack.js"
40
+ },
41
+ "./rollup": {
42
+ "types": "./dist/rollup.d.ts",
43
+ "import": "./dist/rollup.js"
44
+ },
45
+ "./esbuild": {
46
+ "types": "./dist/esbuild.d.ts",
47
+ "import": "./dist/esbuild.js"
48
+ },
49
+ "./rspack": {
50
+ "types": "./dist/rspack.d.ts",
51
+ "import": "./dist/rspack.js"
52
+ },
53
+ "./node-loader": {
54
+ "types": "./dist/node-loader.d.ts",
55
+ "import": "./dist/node-loader.js"
38
56
  },
39
57
  "./loader": {
40
- "types": "./dist/loader.d.ts",
41
- "import": "./dist/loader.js",
42
- "require": "./loader.cjs",
43
- "default": "./dist/loader.js"
58
+ "types": "./dist/node-loader.d.ts",
59
+ "import": "./dist/node-loader.js"
44
60
  }
45
61
  },
46
62
  "peerDependencies": {
47
63
  "@anthropic-ai/sdk": "^0.26.0",
64
+ "@manifesto-ai/codegen": "^0.1.0",
48
65
  "@manifesto-ai/core": "^2.0.0",
49
66
  "@manifesto-ai/host": "^2.0.0",
50
67
  "openai": "^4.0.0",
51
68
  "vite": "^5.0.0 || ^6.0.0 || ^7.0.0",
52
- "webpack": "^5.0.0",
53
69
  "zod": "^4.3.6"
54
70
  },
55
71
  "peerDependenciesMeta": {
56
72
  "@anthropic-ai/sdk": {
57
73
  "optional": true
58
74
  },
59
- "openai": {
75
+ "@manifesto-ai/codegen": {
60
76
  "optional": true
61
77
  },
62
- "vite": {
78
+ "openai": {
63
79
  "optional": true
64
80
  },
65
- "webpack": {
81
+ "vite": {
66
82
  "optional": true
67
83
  }
68
84
  },
@@ -71,28 +87,30 @@
71
87
  "ink-select-input": "^6.2.0",
72
88
  "ink-spinner": "^5.0.0",
73
89
  "meow": "^14.0.0",
74
- "react": "^19.2.4"
90
+ "react": "^19.2.4",
91
+ "unplugin": "^3.0.0"
75
92
  },
76
93
  "devDependencies": {
77
94
  "@anthropic-ai/sdk": "^0.72.1",
78
- "@types/node": "^25.2.3",
95
+ "@types/node": "^25.5.0",
79
96
  "@types/react": "^19.2.14",
80
97
  "dotenv": "^17.3.1",
81
- "openai": "^6.22.0",
98
+ "openai": "^6.32.0",
82
99
  "tsx": "^4.21.0",
83
100
  "typescript": "^5.9.3",
84
101
  "vite": "^7.3.1",
85
- "vitest": "^4.0.18",
86
- "webpack": "^5.105.2",
102
+ "vitest": "^4.1.0",
103
+ "webpack": "^5.105.3",
87
104
  "zod": "^4.3.6",
88
- "@manifesto-ai/core": "2.5.0"
105
+ "@manifesto-ai/core": "2.7.0",
106
+ "@manifesto-ai/codegen": "0.1.2",
107
+ "@manifesto-ai/world": "2.4.2"
89
108
  },
90
109
  "files": [
91
- "dist",
92
- "loader.cjs"
110
+ "dist"
93
111
  ],
94
112
  "scripts": {
95
- "build": "tsc",
113
+ "build": "tsup",
96
114
  "test": "vitest run",
97
115
  "test:watch": "vitest",
98
116
  "example": "npx tsx examples/simple-compile.ts",
@@ -1,6 +0,0 @@
1
- /**
2
- * Analyzer Module - Semantic analysis for MEL
3
- */
4
- export * from "./scope.js";
5
- export * from "./validator.js";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analyzer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Analyzer Module - Semantic analysis for MEL
3
- */
4
- export * from "./scope.js";
5
- export * from "./validator.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyzer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -1,77 +0,0 @@
1
- /**
2
- * Scope Analysis for MEL
3
- * Tracks variable scopes and resolves identifiers
4
- * Based on MEL SPEC v0.3.1 Section 4.10
5
- */
6
- import type { ProgramNode } from "../parser/ast.js";
7
- import type { Diagnostic } from "../diagnostics/types.js";
8
- import type { SourceLocation } from "../lexer/source-location.js";
9
- /**
10
- * Symbol kinds
11
- */
12
- export type SymbolKind = "state" | "computed" | "param" | "action" | "iteration";
13
- /**
14
- * Symbol information
15
- */
16
- export interface Symbol {
17
- name: string;
18
- kind: SymbolKind;
19
- location: SourceLocation;
20
- type?: string;
21
- }
22
- /**
23
- * Scope represents a lexical scope
24
- */
25
- export declare class Scope {
26
- readonly parent: Scope | null;
27
- readonly symbols: Map<string, Symbol>;
28
- readonly kind: "domain" | "action" | "guard";
29
- constructor(kind: "domain" | "action" | "guard", parent?: Scope | null);
30
- /**
31
- * Define a new symbol in this scope
32
- */
33
- define(symbol: Symbol): void;
34
- /**
35
- * Look up a symbol, searching parent scopes if not found
36
- */
37
- lookup(name: string): Symbol | undefined;
38
- /**
39
- * Check if a symbol is defined in this scope (not parent scopes)
40
- */
41
- isDefined(name: string): boolean;
42
- }
43
- /**
44
- * Result of scope analysis
45
- */
46
- export interface ScopeAnalysisResult {
47
- scopes: Map<string, Scope>;
48
- diagnostics: Diagnostic[];
49
- }
50
- /**
51
- * Scope Analyzer - builds scope tree and checks for errors
52
- */
53
- export declare class ScopeAnalyzer {
54
- private diagnostics;
55
- private scopes;
56
- private currentScope;
57
- private domainScope;
58
- /**
59
- * Analyze a MEL program
60
- */
61
- analyze(program: ProgramNode): ScopeAnalysisResult;
62
- private analyzeDomain;
63
- private analyzeComputedExpr;
64
- private analyzeAction;
65
- private analyzeStmt;
66
- private analyzeExpr;
67
- private checkIdentifier;
68
- private checkSystemIdent;
69
- private validatePath;
70
- private defineSymbol;
71
- private error;
72
- }
73
- /**
74
- * Analyze a MEL program for scope issues
75
- */
76
- export declare function analyzeScope(program: ProgramNode): ScopeAnalysisResult;
77
- //# sourceMappingURL=scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/analyzer/scope.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EASZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAIlE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,KAAK;IAChB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;gBAEjC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,EAAE,MAAM,GAAE,KAAK,GAAG,IAAW;IAK5E;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMxC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGjC;AAID;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAsB;IAEzC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB;IAclD,OAAO,CAAC,aAAa;IA0CrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,WAAW;IAgDnB,OAAO,CAAC,WAAW;IAgEnB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,gBAAgB;IAuCxB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,KAAK;CAQd;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,CAGtE"}
@@ -1,296 +0,0 @@
1
- /**
2
- * Scope Analysis for MEL
3
- * Tracks variable scopes and resolves identifiers
4
- * Based on MEL SPEC v0.3.1 Section 4.10
5
- */
6
- /**
7
- * Scope represents a lexical scope
8
- */
9
- export class Scope {
10
- parent;
11
- symbols = new Map();
12
- kind;
13
- constructor(kind, parent = null) {
14
- this.kind = kind;
15
- this.parent = parent;
16
- }
17
- /**
18
- * Define a new symbol in this scope
19
- */
20
- define(symbol) {
21
- this.symbols.set(symbol.name, symbol);
22
- }
23
- /**
24
- * Look up a symbol, searching parent scopes if not found
25
- */
26
- lookup(name) {
27
- const symbol = this.symbols.get(name);
28
- if (symbol)
29
- return symbol;
30
- return this.parent?.lookup(name);
31
- }
32
- /**
33
- * Check if a symbol is defined in this scope (not parent scopes)
34
- */
35
- isDefined(name) {
36
- return this.symbols.has(name);
37
- }
38
- }
39
- /**
40
- * Scope Analyzer - builds scope tree and checks for errors
41
- */
42
- export class ScopeAnalyzer {
43
- diagnostics = [];
44
- scopes = new Map();
45
- currentScope = null;
46
- domainScope = null;
47
- /**
48
- * Analyze a MEL program
49
- */
50
- analyze(program) {
51
- this.diagnostics = [];
52
- this.scopes = new Map();
53
- this.currentScope = null;
54
- this.domainScope = null;
55
- this.analyzeDomain(program.domain);
56
- return {
57
- scopes: this.scopes,
58
- diagnostics: this.diagnostics,
59
- };
60
- }
61
- analyzeDomain(domain) {
62
- // Create domain scope
63
- const scope = new Scope("domain");
64
- this.domainScope = scope;
65
- this.currentScope = scope;
66
- this.scopes.set("domain", scope);
67
- // First pass: collect all state and computed names
68
- for (const member of domain.members) {
69
- if (member.kind === "state") {
70
- for (const field of member.fields) {
71
- this.defineSymbol({
72
- name: field.name,
73
- kind: "state",
74
- location: field.location,
75
- });
76
- }
77
- }
78
- else if (member.kind === "computed") {
79
- this.defineSymbol({
80
- name: member.name,
81
- kind: "computed",
82
- location: member.location,
83
- });
84
- }
85
- else if (member.kind === "action") {
86
- this.defineSymbol({
87
- name: member.name,
88
- kind: "action",
89
- location: member.location,
90
- });
91
- }
92
- }
93
- // Second pass: analyze expressions and bodies
94
- for (const member of domain.members) {
95
- if (member.kind === "computed") {
96
- this.analyzeComputedExpr(member);
97
- }
98
- else if (member.kind === "action") {
99
- this.analyzeAction(member);
100
- }
101
- }
102
- }
103
- analyzeComputedExpr(computed) {
104
- // Computed expressions have access to state and other computed values
105
- this.analyzeExpr(computed.expression, "computed");
106
- }
107
- analyzeAction(action) {
108
- // Create action scope with params
109
- const scope = new Scope("action", this.domainScope);
110
- this.currentScope = scope;
111
- this.scopes.set(`action.${action.name}`, scope);
112
- // Define parameters
113
- for (const param of action.params) {
114
- scope.define({
115
- name: param.name,
116
- kind: "param",
117
- location: param.location,
118
- });
119
- }
120
- // Analyze body
121
- for (const stmt of action.body) {
122
- this.analyzeStmt(stmt);
123
- }
124
- this.currentScope = this.domainScope;
125
- }
126
- analyzeStmt(stmt) {
127
- switch (stmt.kind) {
128
- case "when":
129
- this.analyzeExpr(stmt.condition, "action");
130
- for (const inner of stmt.body) {
131
- this.analyzeStmt(inner);
132
- }
133
- break;
134
- case "onceIntent":
135
- if (stmt.condition) {
136
- this.analyzeExpr(stmt.condition, "action");
137
- }
138
- for (const inner of stmt.body) {
139
- this.analyzeStmt(inner);
140
- }
141
- break;
142
- case "once":
143
- // Marker is a path, need to validate
144
- this.validatePath(stmt.marker);
145
- if (stmt.condition) {
146
- this.analyzeExpr(stmt.condition, "action");
147
- }
148
- for (const inner of stmt.body) {
149
- this.analyzeStmt(inner);
150
- }
151
- break;
152
- case "patch":
153
- this.validatePath(stmt.path);
154
- if (stmt.value) {
155
- this.analyzeExpr(stmt.value, "action");
156
- }
157
- break;
158
- case "effect":
159
- for (const arg of stmt.args) {
160
- if (arg.isPath) {
161
- this.validatePath(arg.value);
162
- }
163
- else {
164
- this.analyzeExpr(arg.value, "action");
165
- }
166
- }
167
- break;
168
- }
169
- }
170
- analyzeExpr(expr, context) {
171
- switch (expr.kind) {
172
- case "identifier":
173
- this.checkIdentifier(expr.name, expr.location, context);
174
- break;
175
- case "systemIdent":
176
- this.checkSystemIdent(expr.path, expr.location, context);
177
- break;
178
- case "propertyAccess":
179
- this.analyzeExpr(expr.object, context);
180
- break;
181
- case "indexAccess":
182
- this.analyzeExpr(expr.object, context);
183
- this.analyzeExpr(expr.index, context);
184
- break;
185
- case "functionCall":
186
- for (const arg of expr.args) {
187
- this.analyzeExpr(arg, context);
188
- }
189
- break;
190
- case "binary":
191
- this.analyzeExpr(expr.left, context);
192
- this.analyzeExpr(expr.right, context);
193
- break;
194
- case "unary":
195
- this.analyzeExpr(expr.operand, context);
196
- break;
197
- case "ternary":
198
- this.analyzeExpr(expr.condition, context);
199
- this.analyzeExpr(expr.consequent, context);
200
- this.analyzeExpr(expr.alternate, context);
201
- break;
202
- case "objectLiteral":
203
- for (const prop of expr.properties) {
204
- this.analyzeExpr(prop.value, context);
205
- }
206
- break;
207
- case "arrayLiteral":
208
- for (const elem of expr.elements) {
209
- this.analyzeExpr(elem, context);
210
- }
211
- break;
212
- case "iterationVar":
213
- // v0.3.2: $item only (reduce pattern deprecated, $acc removed)
214
- // $item is valid in filter/map predicates
215
- // For now, we don't validate the context
216
- break;
217
- case "literal":
218
- // Nothing to check
219
- break;
220
- }
221
- }
222
- checkIdentifier(name, location, context) {
223
- const symbol = this.currentScope?.lookup(name);
224
- if (!symbol) {
225
- this.error(`Undefined identifier '${name}'`, location, "E_UNDEFINED");
226
- return;
227
- }
228
- // Check access rules
229
- if (context === "computed") {
230
- // Computed can only access state and other computed values
231
- if (symbol.kind === "param") {
232
- this.error(`Cannot access parameter '${name}' in computed expression`, location, "E_INVALID_ACCESS");
233
- }
234
- }
235
- }
236
- checkSystemIdent(path, location, context) {
237
- const [namespace, ...rest] = path;
238
- // E001: $system.* in computed
239
- if (namespace === "system" && context === "computed") {
240
- this.error(`Cannot use $system.* in computed expressions (non-deterministic)`, location, "E001");
241
- }
242
- // E003: Invalid $system reference
243
- if (namespace === "system") {
244
- const validKeys = ["uuid", "timestamp", "random"];
245
- const key = rest[0];
246
- if (key && !validKeys.includes(key)) {
247
- this.error(`Invalid system value '$system.${key}'. Valid values: ${validKeys.join(", ")}`, location, "E003");
248
- }
249
- }
250
- // E003: Invalid $meta reference
251
- if (namespace === "meta") {
252
- const validKeys = ["intentId", "actionName", "timestamp"];
253
- const key = rest[0];
254
- if (key && !validKeys.includes(key)) {
255
- this.error(`Invalid meta value '$meta.${key}'. Valid values: ${validKeys.join(", ")}`, location, "E003");
256
- }
257
- }
258
- }
259
- validatePath(path) {
260
- if (!path || !path.segments)
261
- return;
262
- // Check first segment is a valid identifier
263
- const first = path.segments[0];
264
- if (first?.kind === "propertySegment") {
265
- const symbol = this.currentScope?.lookup(first.name);
266
- if (!symbol) {
267
- this.error(`Undefined identifier '${first.name}' in path`, path.location, "E_UNDEFINED");
268
- }
269
- }
270
- }
271
- defineSymbol(symbol) {
272
- if (!this.currentScope)
273
- return;
274
- if (this.currentScope.isDefined(symbol.name)) {
275
- this.error(`Duplicate identifier '${symbol.name}'`, symbol.location, "E_DUPLICATE");
276
- return;
277
- }
278
- this.currentScope.define(symbol);
279
- }
280
- error(message, location, code) {
281
- this.diagnostics.push({
282
- severity: "error",
283
- code,
284
- message,
285
- location,
286
- });
287
- }
288
- }
289
- /**
290
- * Analyze a MEL program for scope issues
291
- */
292
- export function analyzeScope(program) {
293
- const analyzer = new ScopeAnalyzer();
294
- return analyzer.analyze(program);
295
- }
296
- //# sourceMappingURL=scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/analyzer/scope.ts"],"names":[],"mappings":"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"}