@manifesto-ai/compiler 1.6.1 → 1.7.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 (185) hide show
  1. package/README.md +64 -16
  2. package/dist/chunk-DJY6BFGK.js +74 -0
  3. package/dist/chunk-DJY6BFGK.js.map +1 -0
  4. package/dist/chunk-QP2LGMBA.js +4522 -0
  5. package/dist/chunk-QP2LGMBA.js.map +1 -0
  6. package/dist/chunk-QXLPDCLA.js +33 -0
  7. package/dist/chunk-QXLPDCLA.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 +2710 -11
  12. package/dist/index.js +2189 -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 +42 -24
  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.d.ts +0 -126
  44. package/dist/api/compile-mel.d.ts.map +0 -1
  45. package/dist/api/compile-mel.js +0 -129
  46. package/dist/api/compile-mel.js.map +0 -1
  47. package/dist/api/index.d.ts +0 -10
  48. package/dist/api/index.d.ts.map +0 -1
  49. package/dist/api/index.js +0 -9
  50. package/dist/api/index.js.map +0 -1
  51. package/dist/diagnostics/codes.d.ts +0 -25
  52. package/dist/diagnostics/codes.d.ts.map +0 -1
  53. package/dist/diagnostics/codes.js +0 -154
  54. package/dist/diagnostics/codes.js.map +0 -1
  55. package/dist/diagnostics/index.d.ts +0 -6
  56. package/dist/diagnostics/index.d.ts.map +0 -1
  57. package/dist/diagnostics/index.js +0 -6
  58. package/dist/diagnostics/index.js.map +0 -1
  59. package/dist/diagnostics/types.d.ts +0 -67
  60. package/dist/diagnostics/types.d.ts.map +0 -1
  61. package/dist/diagnostics/types.js +0 -58
  62. package/dist/diagnostics/types.js.map +0 -1
  63. package/dist/evaluation/context.d.ts +0 -91
  64. package/dist/evaluation/context.d.ts.map +0 -1
  65. package/dist/evaluation/context.js +0 -59
  66. package/dist/evaluation/context.js.map +0 -1
  67. package/dist/evaluation/evaluate-expr.d.ts +0 -24
  68. package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
  69. package/dist/evaluation/evaluate-expr.js +0 -576
  70. package/dist/evaluation/evaluate-expr.js.map +0 -1
  71. package/dist/evaluation/evaluate-patch.d.ts +0 -123
  72. package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
  73. package/dist/evaluation/evaluate-patch.js +0 -202
  74. package/dist/evaluation/evaluate-patch.js.map +0 -1
  75. package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
  76. package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
  77. package/dist/evaluation/evaluate-runtime-patch.js +0 -153
  78. package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
  79. package/dist/evaluation/index.d.ts +0 -15
  80. package/dist/evaluation/index.d.ts.map +0 -1
  81. package/dist/evaluation/index.js +0 -13
  82. package/dist/evaluation/index.js.map +0 -1
  83. package/dist/generator/index.d.ts +0 -7
  84. package/dist/generator/index.d.ts.map +0 -1
  85. package/dist/generator/index.js +0 -7
  86. package/dist/generator/index.js.map +0 -1
  87. package/dist/generator/ir.d.ts +0 -348
  88. package/dist/generator/ir.d.ts.map +0 -1
  89. package/dist/generator/ir.js +0 -709
  90. package/dist/generator/ir.js.map +0 -1
  91. package/dist/generator/lowering.d.ts +0 -11
  92. package/dist/generator/lowering.d.ts.map +0 -1
  93. package/dist/generator/lowering.js +0 -368
  94. package/dist/generator/lowering.js.map +0 -1
  95. package/dist/generator/normalizer.d.ts +0 -16
  96. package/dist/generator/normalizer.d.ts.map +0 -1
  97. package/dist/generator/normalizer.js +0 -181
  98. package/dist/generator/normalizer.js.map +0 -1
  99. package/dist/index.d.ts.map +0 -1
  100. package/dist/lexer/index.d.ts +0 -7
  101. package/dist/lexer/index.d.ts.map +0 -1
  102. package/dist/lexer/index.js +0 -7
  103. package/dist/lexer/index.js.map +0 -1
  104. package/dist/lexer/lexer.d.ts +0 -59
  105. package/dist/lexer/lexer.d.ts.map +0 -1
  106. package/dist/lexer/lexer.js +0 -433
  107. package/dist/lexer/lexer.js.map +0 -1
  108. package/dist/lexer/source-location.d.ts +0 -41
  109. package/dist/lexer/source-location.d.ts.map +0 -1
  110. package/dist/lexer/source-location.js +0 -33
  111. package/dist/lexer/source-location.js.map +0 -1
  112. package/dist/lexer/tokens.d.ts +0 -47
  113. package/dist/lexer/tokens.d.ts.map +0 -1
  114. package/dist/lexer/tokens.js +0 -73
  115. package/dist/lexer/tokens.js.map +0 -1
  116. package/dist/loader.d.ts +0 -23
  117. package/dist/loader.d.ts.map +0 -1
  118. package/dist/loader.js +0 -62
  119. package/dist/loader.js.map +0 -1
  120. package/dist/lowering/context.d.ts +0 -96
  121. package/dist/lowering/context.d.ts.map +0 -1
  122. package/dist/lowering/context.js +0 -42
  123. package/dist/lowering/context.js.map +0 -1
  124. package/dist/lowering/errors.d.ts +0 -84
  125. package/dist/lowering/errors.d.ts.map +0 -1
  126. package/dist/lowering/errors.js +0 -81
  127. package/dist/lowering/errors.js.map +0 -1
  128. package/dist/lowering/index.d.ts +0 -20
  129. package/dist/lowering/index.d.ts.map +0 -1
  130. package/dist/lowering/index.js +0 -13
  131. package/dist/lowering/index.js.map +0 -1
  132. package/dist/lowering/lower-expr.d.ts +0 -76
  133. package/dist/lowering/lower-expr.d.ts.map +0 -1
  134. package/dist/lowering/lower-expr.js +0 -351
  135. package/dist/lowering/lower-expr.js.map +0 -1
  136. package/dist/lowering/lower-patch.d.ts +0 -231
  137. package/dist/lowering/lower-patch.d.ts.map +0 -1
  138. package/dist/lowering/lower-patch.js +0 -146
  139. package/dist/lowering/lower-patch.js.map +0 -1
  140. package/dist/lowering/lower-runtime-patch.d.ts +0 -100
  141. package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
  142. package/dist/lowering/lower-runtime-patch.js +0 -49
  143. package/dist/lowering/lower-runtime-patch.js.map +0 -1
  144. package/dist/mel-module.d.ts +0 -13
  145. package/dist/mel-module.d.ts.map +0 -1
  146. package/dist/mel-module.js +0 -33
  147. package/dist/mel-module.js.map +0 -1
  148. package/dist/parser/ast.d.ts +0 -344
  149. package/dist/parser/ast.d.ts.map +0 -1
  150. package/dist/parser/ast.js +0 -24
  151. package/dist/parser/ast.js.map +0 -1
  152. package/dist/parser/index.d.ts +0 -7
  153. package/dist/parser/index.d.ts.map +0 -1
  154. package/dist/parser/index.js +0 -7
  155. package/dist/parser/index.js.map +0 -1
  156. package/dist/parser/parser.d.ts +0 -92
  157. package/dist/parser/parser.d.ts.map +0 -1
  158. package/dist/parser/parser.js +0 -892
  159. package/dist/parser/parser.js.map +0 -1
  160. package/dist/parser/precedence.d.ts +0 -44
  161. package/dist/parser/precedence.d.ts.map +0 -1
  162. package/dist/parser/precedence.js +0 -69
  163. package/dist/parser/precedence.js.map +0 -1
  164. package/dist/renderer/expr-node.d.ts +0 -172
  165. package/dist/renderer/expr-node.d.ts.map +0 -1
  166. package/dist/renderer/expr-node.js +0 -218
  167. package/dist/renderer/expr-node.js.map +0 -1
  168. package/dist/renderer/fragment.d.ts +0 -84
  169. package/dist/renderer/fragment.d.ts.map +0 -1
  170. package/dist/renderer/fragment.js +0 -172
  171. package/dist/renderer/fragment.js.map +0 -1
  172. package/dist/renderer/index.d.ts +0 -23
  173. package/dist/renderer/index.d.ts.map +0 -1
  174. package/dist/renderer/index.js +0 -27
  175. package/dist/renderer/index.js.map +0 -1
  176. package/dist/renderer/patch-op.d.ts +0 -82
  177. package/dist/renderer/patch-op.d.ts.map +0 -1
  178. package/dist/renderer/patch-op.js +0 -203
  179. package/dist/renderer/patch-op.js.map +0 -1
  180. package/dist/renderer/type-expr.d.ts +0 -61
  181. package/dist/renderer/type-expr.d.ts.map +0 -1
  182. package/dist/renderer/type-expr.js +0 -131
  183. package/dist/renderer/type-expr.js.map +0 -1
  184. package/dist/vite.d.ts.map +0 -1
  185. 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-DJY6BFGK.js";
4
+ import "./chunk-QXLPDCLA.js";
5
+ import "./chunk-QP2LGMBA.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-DJY6BFGK.js";
4
+ import "./chunk-QXLPDCLA.js";
5
+ import "./chunk-QP2LGMBA.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.1",
3
+ "version": "1.7.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,66 +32,85 @@
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
  },
69
85
  "dependencies": {
70
- "ink": "^6.6.0",
86
+ "ink": "^6.7.0",
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.0",
79
- "@types/react": "^19.2.10",
80
- "dotenv": "^17.2.3",
81
- "openai": "^6.17.0",
95
+ "@types/node": "^25.3.3",
96
+ "@types/react": "^19.2.14",
97
+ "dotenv": "^17.3.1",
98
+ "openai": "^6.25.0",
82
99
  "tsx": "^4.21.0",
83
100
  "typescript": "^5.9.3",
84
101
  "vite": "^7.3.1",
85
102
  "vitest": "^4.0.18",
86
- "webpack": "^5.102.0",
103
+ "webpack": "^5.105.3",
87
104
  "zod": "^4.3.6",
88
- "@manifesto-ai/core": "2.4.0"
105
+ "@manifesto-ai/codegen": "0.1.2",
106
+ "@manifesto-ai/world": "2.4.2",
107
+ "@manifesto-ai/core": "2.6.1"
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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"}