@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.
- package/README.md +64 -16
- package/dist/chunk-DJY6BFGK.js +74 -0
- package/dist/chunk-DJY6BFGK.js.map +1 -0
- package/dist/chunk-QP2LGMBA.js +4522 -0
- package/dist/chunk-QP2LGMBA.js.map +1 -0
- package/dist/chunk-QXLPDCLA.js +33 -0
- package/dist/chunk-QXLPDCLA.js.map +1 -0
- package/dist/esbuild.d.ts +8 -0
- package/dist/esbuild.js +14 -0
- package/dist/esbuild.js.map +1 -0
- package/dist/index.d.ts +2710 -11
- package/dist/index.js +2189 -43
- package/dist/index.js.map +1 -1
- package/dist/node-loader.d.ts +18 -0
- package/dist/node-loader.js +47 -0
- package/dist/node-loader.js.map +1 -0
- package/dist/rollup.d.ts +8 -0
- package/dist/rollup.js +14 -0
- package/dist/rollup.js.map +1 -0
- package/dist/rspack.d.ts +7 -0
- package/dist/rspack.js +14 -0
- package/dist/rspack.js.map +1 -0
- package/dist/unplugin-6wnvFiEo.d.ts +17 -0
- package/dist/vite.d.ts +8 -17
- package/dist/vite.js +13 -33
- package/dist/vite.js.map +1 -1
- package/dist/webpack.d.ts +8 -0
- package/dist/webpack.js +14 -0
- package/dist/webpack.js.map +1 -0
- package/package.json +42 -24
- package/dist/analyzer/index.d.ts +0 -6
- package/dist/analyzer/index.d.ts.map +0 -1
- package/dist/analyzer/index.js +0 -6
- package/dist/analyzer/index.js.map +0 -1
- package/dist/analyzer/scope.d.ts +0 -77
- package/dist/analyzer/scope.d.ts.map +0 -1
- package/dist/analyzer/scope.js +0 -296
- package/dist/analyzer/scope.js.map +0 -1
- package/dist/analyzer/validator.d.ts +0 -60
- package/dist/analyzer/validator.d.ts.map +0 -1
- package/dist/analyzer/validator.js +0 -439
- package/dist/analyzer/validator.js.map +0 -1
- package/dist/api/compile-mel.d.ts +0 -126
- package/dist/api/compile-mel.d.ts.map +0 -1
- package/dist/api/compile-mel.js +0 -129
- package/dist/api/compile-mel.js.map +0 -1
- package/dist/api/index.d.ts +0 -10
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -9
- package/dist/api/index.js.map +0 -1
- package/dist/diagnostics/codes.d.ts +0 -25
- package/dist/diagnostics/codes.d.ts.map +0 -1
- package/dist/diagnostics/codes.js +0 -154
- package/dist/diagnostics/codes.js.map +0 -1
- package/dist/diagnostics/index.d.ts +0 -6
- package/dist/diagnostics/index.d.ts.map +0 -1
- package/dist/diagnostics/index.js +0 -6
- package/dist/diagnostics/index.js.map +0 -1
- package/dist/diagnostics/types.d.ts +0 -67
- package/dist/diagnostics/types.d.ts.map +0 -1
- package/dist/diagnostics/types.js +0 -58
- package/dist/diagnostics/types.js.map +0 -1
- package/dist/evaluation/context.d.ts +0 -91
- package/dist/evaluation/context.d.ts.map +0 -1
- package/dist/evaluation/context.js +0 -59
- package/dist/evaluation/context.js.map +0 -1
- package/dist/evaluation/evaluate-expr.d.ts +0 -24
- package/dist/evaluation/evaluate-expr.d.ts.map +0 -1
- package/dist/evaluation/evaluate-expr.js +0 -576
- package/dist/evaluation/evaluate-expr.js.map +0 -1
- package/dist/evaluation/evaluate-patch.d.ts +0 -123
- package/dist/evaluation/evaluate-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-patch.js +0 -202
- package/dist/evaluation/evaluate-patch.js.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.d.ts +0 -86
- package/dist/evaluation/evaluate-runtime-patch.d.ts.map +0 -1
- package/dist/evaluation/evaluate-runtime-patch.js +0 -153
- package/dist/evaluation/evaluate-runtime-patch.js.map +0 -1
- package/dist/evaluation/index.d.ts +0 -15
- package/dist/evaluation/index.d.ts.map +0 -1
- package/dist/evaluation/index.js +0 -13
- package/dist/evaluation/index.js.map +0 -1
- package/dist/generator/index.d.ts +0 -7
- package/dist/generator/index.d.ts.map +0 -1
- package/dist/generator/index.js +0 -7
- package/dist/generator/index.js.map +0 -1
- package/dist/generator/ir.d.ts +0 -348
- package/dist/generator/ir.d.ts.map +0 -1
- package/dist/generator/ir.js +0 -709
- package/dist/generator/ir.js.map +0 -1
- package/dist/generator/lowering.d.ts +0 -11
- package/dist/generator/lowering.d.ts.map +0 -1
- package/dist/generator/lowering.js +0 -368
- package/dist/generator/lowering.js.map +0 -1
- package/dist/generator/normalizer.d.ts +0 -16
- package/dist/generator/normalizer.d.ts.map +0 -1
- package/dist/generator/normalizer.js +0 -181
- package/dist/generator/normalizer.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lexer/index.d.ts +0 -7
- package/dist/lexer/index.d.ts.map +0 -1
- package/dist/lexer/index.js +0 -7
- package/dist/lexer/index.js.map +0 -1
- package/dist/lexer/lexer.d.ts +0 -59
- package/dist/lexer/lexer.d.ts.map +0 -1
- package/dist/lexer/lexer.js +0 -433
- package/dist/lexer/lexer.js.map +0 -1
- package/dist/lexer/source-location.d.ts +0 -41
- package/dist/lexer/source-location.d.ts.map +0 -1
- package/dist/lexer/source-location.js +0 -33
- package/dist/lexer/source-location.js.map +0 -1
- package/dist/lexer/tokens.d.ts +0 -47
- package/dist/lexer/tokens.d.ts.map +0 -1
- package/dist/lexer/tokens.js +0 -73
- package/dist/lexer/tokens.js.map +0 -1
- package/dist/loader.d.ts +0 -23
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -62
- package/dist/loader.js.map +0 -1
- package/dist/lowering/context.d.ts +0 -96
- package/dist/lowering/context.d.ts.map +0 -1
- package/dist/lowering/context.js +0 -42
- package/dist/lowering/context.js.map +0 -1
- package/dist/lowering/errors.d.ts +0 -84
- package/dist/lowering/errors.d.ts.map +0 -1
- package/dist/lowering/errors.js +0 -81
- package/dist/lowering/errors.js.map +0 -1
- package/dist/lowering/index.d.ts +0 -20
- package/dist/lowering/index.d.ts.map +0 -1
- package/dist/lowering/index.js +0 -13
- package/dist/lowering/index.js.map +0 -1
- package/dist/lowering/lower-expr.d.ts +0 -76
- package/dist/lowering/lower-expr.d.ts.map +0 -1
- package/dist/lowering/lower-expr.js +0 -351
- package/dist/lowering/lower-expr.js.map +0 -1
- package/dist/lowering/lower-patch.d.ts +0 -231
- package/dist/lowering/lower-patch.d.ts.map +0 -1
- package/dist/lowering/lower-patch.js +0 -146
- package/dist/lowering/lower-patch.js.map +0 -1
- package/dist/lowering/lower-runtime-patch.d.ts +0 -100
- package/dist/lowering/lower-runtime-patch.d.ts.map +0 -1
- package/dist/lowering/lower-runtime-patch.js +0 -49
- package/dist/lowering/lower-runtime-patch.js.map +0 -1
- package/dist/mel-module.d.ts +0 -13
- package/dist/mel-module.d.ts.map +0 -1
- package/dist/mel-module.js +0 -33
- package/dist/mel-module.js.map +0 -1
- package/dist/parser/ast.d.ts +0 -344
- package/dist/parser/ast.d.ts.map +0 -1
- package/dist/parser/ast.js +0 -24
- package/dist/parser/ast.js.map +0 -1
- package/dist/parser/index.d.ts +0 -7
- package/dist/parser/index.d.ts.map +0 -1
- package/dist/parser/index.js +0 -7
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/parser.d.ts +0 -92
- package/dist/parser/parser.d.ts.map +0 -1
- package/dist/parser/parser.js +0 -892
- package/dist/parser/parser.js.map +0 -1
- package/dist/parser/precedence.d.ts +0 -44
- package/dist/parser/precedence.d.ts.map +0 -1
- package/dist/parser/precedence.js +0 -69
- package/dist/parser/precedence.js.map +0 -1
- package/dist/renderer/expr-node.d.ts +0 -172
- package/dist/renderer/expr-node.d.ts.map +0 -1
- package/dist/renderer/expr-node.js +0 -218
- package/dist/renderer/expr-node.js.map +0 -1
- package/dist/renderer/fragment.d.ts +0 -84
- package/dist/renderer/fragment.d.ts.map +0 -1
- package/dist/renderer/fragment.js +0 -172
- package/dist/renderer/fragment.js.map +0 -1
- package/dist/renderer/index.d.ts +0 -23
- package/dist/renderer/index.d.ts.map +0 -1
- package/dist/renderer/index.js +0 -27
- package/dist/renderer/index.js.map +0 -1
- package/dist/renderer/patch-op.d.ts +0 -82
- package/dist/renderer/patch-op.d.ts.map +0 -1
- package/dist/renderer/patch-op.js +0 -203
- package/dist/renderer/patch-op.js.map +0 -1
- package/dist/renderer/type-expr.d.ts +0 -61
- package/dist/renderer/type-expr.d.ts.map +0 -1
- package/dist/renderer/type-expr.js +0 -131
- package/dist/renderer/type-expr.js.map +0 -1
- package/dist/vite.d.ts.map +0 -1
- package/loader.cjs +0 -22
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Semantic Validator for MEL
|
|
3
|
-
* Validates semantic rules beyond syntax
|
|
4
|
-
* Based on MEL SPEC v0.3.3 and FDR-MEL-*
|
|
5
|
-
*/
|
|
6
|
-
import type { ProgramNode } from "../parser/ast.js";
|
|
7
|
-
import type { Diagnostic } from "../diagnostics/types.js";
|
|
8
|
-
/**
|
|
9
|
-
* Result of semantic validation
|
|
10
|
-
*/
|
|
11
|
-
export interface ValidationResult {
|
|
12
|
-
valid: boolean;
|
|
13
|
-
diagnostics: Diagnostic[];
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Semantic Validator
|
|
17
|
-
*/
|
|
18
|
-
export declare class SemanticValidator {
|
|
19
|
-
private ctx;
|
|
20
|
-
/**
|
|
21
|
-
* Validate a MEL program
|
|
22
|
-
*/
|
|
23
|
-
validate(program: ProgramNode): ValidationResult;
|
|
24
|
-
private validateDomain;
|
|
25
|
-
/**
|
|
26
|
-
* v0.3.3: Validate state fields for W012 (anonymous object types)
|
|
27
|
-
*/
|
|
28
|
-
private validateState;
|
|
29
|
-
/**
|
|
30
|
-
* v0.3.3: Validate state field - check for anonymous object types (W012)
|
|
31
|
-
*/
|
|
32
|
-
private validateStateField;
|
|
33
|
-
/**
|
|
34
|
-
* v0.3.3: Check if a type expression contains anonymous object types
|
|
35
|
-
* Issues W012 warning for inline object types in state fields
|
|
36
|
-
*/
|
|
37
|
-
private checkAnonymousObjectType;
|
|
38
|
-
private validateAction;
|
|
39
|
-
/**
|
|
40
|
-
* v0.3.3: Validate available expression is pure (E005)
|
|
41
|
-
* No $system.*, no effects, no $input.*
|
|
42
|
-
*/
|
|
43
|
-
private validateAvailableExpr;
|
|
44
|
-
private validateGuardedStmt;
|
|
45
|
-
private validateWhen;
|
|
46
|
-
private validateOnce;
|
|
47
|
-
private validateOnceIntent;
|
|
48
|
-
private validatePatch;
|
|
49
|
-
private validateEffect;
|
|
50
|
-
private validateCondition;
|
|
51
|
-
private validateExpr;
|
|
52
|
-
private validateFunctionCall;
|
|
53
|
-
private error;
|
|
54
|
-
private warn;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Validate a MEL program semantically
|
|
58
|
-
*/
|
|
59
|
-
export declare function validateSemantics(program: ProgramNode): ValidationResult;
|
|
60
|
-
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/analyzer/validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EAcZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA0B1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAsC;IAEjD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB;IAUhD,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAuChC,OAAO,CAAC,cAAc;IAiBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAsE7B,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,YAAY;IAuDpB,OAAO,CAAC,oBAAoB;IAkK5B,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,IAAI;CAQb;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,CAGxE"}
|
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Semantic Validator for MEL
|
|
3
|
-
* Validates semantic rules beyond syntax
|
|
4
|
-
* Based on MEL SPEC v0.3.3 and FDR-MEL-*
|
|
5
|
-
*/
|
|
6
|
-
import { createWarning } from "../diagnostics/types.js";
|
|
7
|
-
function createContext() {
|
|
8
|
-
return {
|
|
9
|
-
inAction: false,
|
|
10
|
-
inGuard: false,
|
|
11
|
-
guardDepth: 0,
|
|
12
|
-
hasMarkerPatch: false,
|
|
13
|
-
diagnostics: [],
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Semantic Validator
|
|
18
|
-
*/
|
|
19
|
-
export class SemanticValidator {
|
|
20
|
-
ctx = createContext();
|
|
21
|
-
/**
|
|
22
|
-
* Validate a MEL program
|
|
23
|
-
*/
|
|
24
|
-
validate(program) {
|
|
25
|
-
this.ctx = createContext();
|
|
26
|
-
this.validateDomain(program.domain);
|
|
27
|
-
return {
|
|
28
|
-
valid: !this.ctx.diagnostics.some(d => d.severity === "error"),
|
|
29
|
-
diagnostics: this.ctx.diagnostics,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
validateDomain(domain) {
|
|
33
|
-
// Validate domain name
|
|
34
|
-
if (domain.name.startsWith("__")) {
|
|
35
|
-
this.error("Domain name cannot start with '__' (reserved prefix)", domain.location, "E_RESERVED_NAME");
|
|
36
|
-
}
|
|
37
|
-
// Validate members
|
|
38
|
-
for (const member of domain.members) {
|
|
39
|
-
switch (member.kind) {
|
|
40
|
-
case "state":
|
|
41
|
-
this.validateState(member);
|
|
42
|
-
break;
|
|
43
|
-
case "computed":
|
|
44
|
-
this.validateExpr(member.expression, "computed");
|
|
45
|
-
break;
|
|
46
|
-
case "action":
|
|
47
|
-
this.validateAction(member);
|
|
48
|
-
break;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* v0.3.3: Validate state fields for W012 (anonymous object types)
|
|
54
|
-
*/
|
|
55
|
-
validateState(state) {
|
|
56
|
-
for (const field of state.fields) {
|
|
57
|
-
this.validateStateField(field);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* v0.3.3: Validate state field - check for anonymous object types (W012)
|
|
62
|
-
*/
|
|
63
|
-
validateStateField(field) {
|
|
64
|
-
this.checkAnonymousObjectType(field.typeExpr, field.location);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* v0.3.3: Check if a type expression contains anonymous object types
|
|
68
|
-
* Issues W012 warning for inline object types in state fields
|
|
69
|
-
*/
|
|
70
|
-
checkAnonymousObjectType(typeExpr, fieldLocation) {
|
|
71
|
-
switch (typeExpr.kind) {
|
|
72
|
-
case "objectType":
|
|
73
|
-
// W012: Anonymous object type in state field
|
|
74
|
-
this.ctx.diagnostics.push(createWarning("W012", "Anonymous object type in state field. Use a named type declaration instead: type MyType = { ... }", typeExpr.location, {
|
|
75
|
-
suggestion: "Define this type using 'type TypeName = { ... }' and reference it by name",
|
|
76
|
-
}));
|
|
77
|
-
// Also check nested types
|
|
78
|
-
for (const f of typeExpr.fields) {
|
|
79
|
-
this.checkAnonymousObjectType(f.typeExpr, fieldLocation);
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
82
|
-
case "arrayType":
|
|
83
|
-
this.checkAnonymousObjectType(typeExpr.elementType, fieldLocation);
|
|
84
|
-
break;
|
|
85
|
-
case "recordType":
|
|
86
|
-
this.checkAnonymousObjectType(typeExpr.keyType, fieldLocation);
|
|
87
|
-
this.checkAnonymousObjectType(typeExpr.valueType, fieldLocation);
|
|
88
|
-
break;
|
|
89
|
-
case "unionType":
|
|
90
|
-
for (const t of typeExpr.types) {
|
|
91
|
-
this.checkAnonymousObjectType(t, fieldLocation);
|
|
92
|
-
}
|
|
93
|
-
break;
|
|
94
|
-
// simpleType and literalType are OK
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
validateAction(action) {
|
|
98
|
-
this.ctx.inAction = true;
|
|
99
|
-
// v0.3.3: E005 - available expression must be pure
|
|
100
|
-
if (action.available) {
|
|
101
|
-
this.validateAvailableExpr(action.available);
|
|
102
|
-
}
|
|
103
|
-
// FDR-MEL-020: All patch/effect must be inside guards
|
|
104
|
-
// Action body should only contain when/once statements
|
|
105
|
-
for (const stmt of action.body) {
|
|
106
|
-
this.validateGuardedStmt(stmt);
|
|
107
|
-
}
|
|
108
|
-
this.ctx.inAction = false;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* v0.3.3: Validate available expression is pure (E005)
|
|
112
|
-
* No $system.*, no effects, no $input.*
|
|
113
|
-
*/
|
|
114
|
-
validateAvailableExpr(expr) {
|
|
115
|
-
switch (expr.kind) {
|
|
116
|
-
case "systemIdent":
|
|
117
|
-
// E005: $system.* not allowed in available
|
|
118
|
-
if (expr.path[0] === "system") {
|
|
119
|
-
this.error("$system.* cannot be used in available condition (must be pure expression)", expr.location, "E005");
|
|
120
|
-
}
|
|
121
|
-
// E005: $input.* not allowed in available (no input at availability check)
|
|
122
|
-
if (expr.path[0] === "input") {
|
|
123
|
-
this.error("$input.* cannot be used in available condition (parameters not available at availability check)", expr.location, "E005");
|
|
124
|
-
}
|
|
125
|
-
break;
|
|
126
|
-
case "functionCall":
|
|
127
|
-
// Check for effect-like function calls (this is a basic check)
|
|
128
|
-
// In practice, effects are in statements, not expressions
|
|
129
|
-
// Recursively validate arguments
|
|
130
|
-
for (const arg of expr.args) {
|
|
131
|
-
this.validateAvailableExpr(arg);
|
|
132
|
-
}
|
|
133
|
-
break;
|
|
134
|
-
case "binary":
|
|
135
|
-
this.validateAvailableExpr(expr.left);
|
|
136
|
-
this.validateAvailableExpr(expr.right);
|
|
137
|
-
break;
|
|
138
|
-
case "unary":
|
|
139
|
-
this.validateAvailableExpr(expr.operand);
|
|
140
|
-
break;
|
|
141
|
-
case "ternary":
|
|
142
|
-
this.validateAvailableExpr(expr.condition);
|
|
143
|
-
this.validateAvailableExpr(expr.consequent);
|
|
144
|
-
this.validateAvailableExpr(expr.alternate);
|
|
145
|
-
break;
|
|
146
|
-
case "propertyAccess":
|
|
147
|
-
this.validateAvailableExpr(expr.object);
|
|
148
|
-
break;
|
|
149
|
-
case "indexAccess":
|
|
150
|
-
this.validateAvailableExpr(expr.object);
|
|
151
|
-
this.validateAvailableExpr(expr.index);
|
|
152
|
-
break;
|
|
153
|
-
case "objectLiteral":
|
|
154
|
-
for (const prop of expr.properties) {
|
|
155
|
-
this.validateAvailableExpr(prop.value);
|
|
156
|
-
}
|
|
157
|
-
break;
|
|
158
|
-
case "arrayLiteral":
|
|
159
|
-
for (const elem of expr.elements) {
|
|
160
|
-
this.validateAvailableExpr(elem);
|
|
161
|
-
}
|
|
162
|
-
break;
|
|
163
|
-
// literal, identifier, iterationVar are OK
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
validateGuardedStmt(stmt) {
|
|
167
|
-
switch (stmt.kind) {
|
|
168
|
-
case "when":
|
|
169
|
-
this.validateWhen(stmt);
|
|
170
|
-
break;
|
|
171
|
-
case "once":
|
|
172
|
-
this.validateOnce(stmt);
|
|
173
|
-
break;
|
|
174
|
-
case "onceIntent":
|
|
175
|
-
this.validateOnceIntent(stmt);
|
|
176
|
-
break;
|
|
177
|
-
case "patch":
|
|
178
|
-
this.validatePatch(stmt);
|
|
179
|
-
break;
|
|
180
|
-
case "effect":
|
|
181
|
-
this.validateEffect(stmt);
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
validateWhen(stmt) {
|
|
186
|
-
this.ctx.inGuard = true;
|
|
187
|
-
this.ctx.guardDepth++;
|
|
188
|
-
// FDR-MEL-025: Condition must be boolean
|
|
189
|
-
this.validateCondition(stmt.condition, "when");
|
|
190
|
-
for (const inner of stmt.body) {
|
|
191
|
-
this.validateGuardedStmt(inner);
|
|
192
|
-
}
|
|
193
|
-
this.ctx.guardDepth--;
|
|
194
|
-
if (this.ctx.guardDepth === 0) {
|
|
195
|
-
this.ctx.inGuard = false;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
validateOnce(stmt) {
|
|
199
|
-
this.ctx.inGuard = true;
|
|
200
|
-
this.ctx.guardDepth++;
|
|
201
|
-
this.ctx.hasMarkerPatch = false;
|
|
202
|
-
// Validate extra condition if present
|
|
203
|
-
if (stmt.condition) {
|
|
204
|
-
this.validateCondition(stmt.condition, "once");
|
|
205
|
-
}
|
|
206
|
-
// FDR-MEL-044: First statement should be marker patch
|
|
207
|
-
// The compiler auto-inserts this, but we can warn if user adds it manually
|
|
208
|
-
for (const inner of stmt.body) {
|
|
209
|
-
this.validateGuardedStmt(inner);
|
|
210
|
-
}
|
|
211
|
-
this.ctx.guardDepth--;
|
|
212
|
-
if (this.ctx.guardDepth === 0) {
|
|
213
|
-
this.ctx.inGuard = false;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
validateOnceIntent(stmt) {
|
|
217
|
-
this.ctx.inGuard = true;
|
|
218
|
-
this.ctx.guardDepth++;
|
|
219
|
-
if (stmt.condition) {
|
|
220
|
-
this.validateCondition(stmt.condition, "onceIntent");
|
|
221
|
-
}
|
|
222
|
-
for (const inner of stmt.body) {
|
|
223
|
-
this.validateGuardedStmt(inner);
|
|
224
|
-
}
|
|
225
|
-
this.ctx.guardDepth--;
|
|
226
|
-
if (this.ctx.guardDepth === 0) {
|
|
227
|
-
this.ctx.inGuard = false;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
validatePatch(stmt) {
|
|
231
|
-
// Patch must be inside a guard
|
|
232
|
-
if (!this.ctx.inGuard) {
|
|
233
|
-
this.error("Patch must be inside a guard (when, once, or onceIntent)", stmt.location, "E_UNGUARDED_PATCH");
|
|
234
|
-
}
|
|
235
|
-
// Validate value expression
|
|
236
|
-
if (stmt.value) {
|
|
237
|
-
this.validateExpr(stmt.value, "action");
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
validateEffect(stmt) {
|
|
241
|
-
// Effect must be inside a guard
|
|
242
|
-
if (!this.ctx.inGuard) {
|
|
243
|
-
this.error("Effect must be inside a guard (when, once, or onceIntent)", stmt.location, "E_UNGUARDED_EFFECT");
|
|
244
|
-
}
|
|
245
|
-
// FDR-MEL-018: No nested effects (effects can't contain effects)
|
|
246
|
-
// This is naturally enforced by the parser
|
|
247
|
-
// Validate effect arguments
|
|
248
|
-
for (const arg of stmt.args) {
|
|
249
|
-
if (!arg.isPath) {
|
|
250
|
-
this.validateExpr(arg.value, "action");
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
validateCondition(expr, guardType) {
|
|
255
|
-
// FDR-MEL-025: Condition must return boolean
|
|
256
|
-
// We can do basic static analysis for obvious non-boolean expressions
|
|
257
|
-
this.validateExpr(expr, "action");
|
|
258
|
-
// Warn about literals that aren't boolean
|
|
259
|
-
if (expr.kind === "literal" && typeof expr.value !== "boolean") {
|
|
260
|
-
this.warn(`Condition in ${guardType} is a non-boolean literal. Consider using a boolean expression`, expr.location, "W_NON_BOOL_COND");
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
validateExpr(expr, context) {
|
|
264
|
-
switch (expr.kind) {
|
|
265
|
-
case "functionCall":
|
|
266
|
-
this.validateFunctionCall(expr, context);
|
|
267
|
-
break;
|
|
268
|
-
case "binary":
|
|
269
|
-
this.validateExpr(expr.left, context);
|
|
270
|
-
this.validateExpr(expr.right, context);
|
|
271
|
-
break;
|
|
272
|
-
case "unary":
|
|
273
|
-
this.validateExpr(expr.operand, context);
|
|
274
|
-
break;
|
|
275
|
-
case "ternary":
|
|
276
|
-
this.validateExpr(expr.condition, context);
|
|
277
|
-
this.validateExpr(expr.consequent, context);
|
|
278
|
-
this.validateExpr(expr.alternate, context);
|
|
279
|
-
break;
|
|
280
|
-
case "propertyAccess":
|
|
281
|
-
this.validateExpr(expr.object, context);
|
|
282
|
-
break;
|
|
283
|
-
case "indexAccess":
|
|
284
|
-
this.validateExpr(expr.object, context);
|
|
285
|
-
this.validateExpr(expr.index, context);
|
|
286
|
-
break;
|
|
287
|
-
case "objectLiteral":
|
|
288
|
-
for (const prop of expr.properties) {
|
|
289
|
-
this.validateExpr(prop.value, context);
|
|
290
|
-
}
|
|
291
|
-
break;
|
|
292
|
-
case "arrayLiteral":
|
|
293
|
-
for (const elem of expr.elements) {
|
|
294
|
-
this.validateExpr(elem, context);
|
|
295
|
-
}
|
|
296
|
-
break;
|
|
297
|
-
case "systemIdent":
|
|
298
|
-
// E001: $system.* in computed
|
|
299
|
-
if (context === "computed" && expr.path[0] === "system") {
|
|
300
|
-
this.error("Cannot use $system.* in computed expressions (non-deterministic)", expr.location, "E001");
|
|
301
|
-
}
|
|
302
|
-
break;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
validateFunctionCall(expr, context) {
|
|
306
|
-
const { name, args, location } = expr;
|
|
307
|
-
// v0.3.3: E011 - reduce/fold/scan is forbidden
|
|
308
|
-
if (["reduce", "fold", "foldl", "foldr", "scan"].includes(name)) {
|
|
309
|
-
this.error(`Function '${name}' is forbidden. Use sum(), min(), max() for aggregation instead`, location, "E011");
|
|
310
|
-
}
|
|
311
|
-
// v0.3.3: E009/E010 - Primitive aggregation constraints
|
|
312
|
-
// sum(array), min(array), max(array) with single arg = array aggregation
|
|
313
|
-
if (["sum", "min", "max"].includes(name) && args.length === 1) {
|
|
314
|
-
// E009: Array aggregation only in computed
|
|
315
|
-
if (context === "action") {
|
|
316
|
-
this.error(`Primitive aggregation '${name}()' can only be used in computed expressions, not in actions`, location, "E009");
|
|
317
|
-
}
|
|
318
|
-
// E010: No composition - argument must be simple reference
|
|
319
|
-
const arg = args[0];
|
|
320
|
-
if (arg.kind === "functionCall") {
|
|
321
|
-
this.error(`Primitive aggregation '${name}()' does not allow composition. Use a direct reference, not '${arg.name}()'`, location, "E010");
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
// Validate known function signatures
|
|
325
|
-
switch (name) {
|
|
326
|
-
// FDR-MEL-042: eq/neq on primitives only
|
|
327
|
-
case "eq":
|
|
328
|
-
case "neq":
|
|
329
|
-
// We can't fully type-check at compile time, but we can note the requirement
|
|
330
|
-
break;
|
|
331
|
-
// FDR-MEL-026: len() on Array only
|
|
332
|
-
case "len":
|
|
333
|
-
// v0.3.3: sum() for array aggregation
|
|
334
|
-
case "sum":
|
|
335
|
-
if (args.length !== 1) {
|
|
336
|
-
this.error(`Function '${name}' expects 1 argument, got ${args.length}`, location, "E_ARG_COUNT");
|
|
337
|
-
}
|
|
338
|
-
break;
|
|
339
|
-
// Binary functions need exactly 2 args
|
|
340
|
-
case "add":
|
|
341
|
-
case "sub":
|
|
342
|
-
case "mul":
|
|
343
|
-
case "div":
|
|
344
|
-
case "mod":
|
|
345
|
-
case "gt":
|
|
346
|
-
case "gte":
|
|
347
|
-
case "lt":
|
|
348
|
-
case "lte":
|
|
349
|
-
if (args.length !== 2) {
|
|
350
|
-
this.error(`Function '${name}' expects 2 arguments, got ${args.length}`, location, "E_ARG_COUNT");
|
|
351
|
-
}
|
|
352
|
-
break;
|
|
353
|
-
// Unary functions need exactly 1 arg
|
|
354
|
-
case "not":
|
|
355
|
-
case "neg":
|
|
356
|
-
case "abs":
|
|
357
|
-
case "floor":
|
|
358
|
-
case "ceil":
|
|
359
|
-
case "round":
|
|
360
|
-
case "isNull":
|
|
361
|
-
case "isNotNull":
|
|
362
|
-
case "trim":
|
|
363
|
-
case "lower":
|
|
364
|
-
case "upper":
|
|
365
|
-
case "keys":
|
|
366
|
-
case "values":
|
|
367
|
-
case "entries":
|
|
368
|
-
case "first":
|
|
369
|
-
case "last":
|
|
370
|
-
if (args.length !== 1) {
|
|
371
|
-
this.error(`Function '${name}' expects 1 argument, got ${args.length}`, location, "E_ARG_COUNT");
|
|
372
|
-
}
|
|
373
|
-
break;
|
|
374
|
-
// Collection predicates need exactly 2 args
|
|
375
|
-
case "filter":
|
|
376
|
-
case "map":
|
|
377
|
-
case "find":
|
|
378
|
-
case "every":
|
|
379
|
-
case "some":
|
|
380
|
-
case "at":
|
|
381
|
-
case "includes":
|
|
382
|
-
if (args.length !== 2) {
|
|
383
|
-
this.error(`Function '${name}' expects 2 arguments, got ${args.length}`, location, "E_ARG_COUNT");
|
|
384
|
-
}
|
|
385
|
-
break;
|
|
386
|
-
// Variadic functions (at least 1 arg)
|
|
387
|
-
case "and":
|
|
388
|
-
case "or":
|
|
389
|
-
case "concat":
|
|
390
|
-
case "min":
|
|
391
|
-
case "max":
|
|
392
|
-
case "merge":
|
|
393
|
-
case "coalesce":
|
|
394
|
-
if (args.length < 1) {
|
|
395
|
-
this.error(`Function '${name}' expects at least 1 argument`, location, "E_ARG_COUNT");
|
|
396
|
-
}
|
|
397
|
-
break;
|
|
398
|
-
// Conditional needs exactly 3 args
|
|
399
|
-
case "if":
|
|
400
|
-
case "cond":
|
|
401
|
-
if (args.length !== 3) {
|
|
402
|
-
this.error(`Function '${name}' expects 3 arguments, got ${args.length}`, location, "E_ARG_COUNT");
|
|
403
|
-
}
|
|
404
|
-
break;
|
|
405
|
-
default:
|
|
406
|
-
// Unknown function - this might be caught by scope analysis
|
|
407
|
-
// or could be a user-defined function we don't know about
|
|
408
|
-
break;
|
|
409
|
-
}
|
|
410
|
-
// Recursively validate arguments
|
|
411
|
-
for (const arg of args) {
|
|
412
|
-
this.validateExpr(arg, context);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
error(message, location, code) {
|
|
416
|
-
this.ctx.diagnostics.push({
|
|
417
|
-
severity: "error",
|
|
418
|
-
code,
|
|
419
|
-
message,
|
|
420
|
-
location,
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
warn(message, location, code) {
|
|
424
|
-
this.ctx.diagnostics.push({
|
|
425
|
-
severity: "warning",
|
|
426
|
-
code,
|
|
427
|
-
message,
|
|
428
|
-
location,
|
|
429
|
-
});
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
/**
|
|
433
|
-
* Validate a MEL program semantically
|
|
434
|
-
*/
|
|
435
|
-
export function validateSemantics(program) {
|
|
436
|
-
const validator = new SemanticValidator();
|
|
437
|
-
return validator.validate(program);
|
|
438
|
-
}
|
|
439
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/analyzer/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MEL Text Ingest API
|
|
3
|
-
*
|
|
4
|
-
* Compiles MEL text to DomainSchema or RuntimeConditionalPatchOp[].
|
|
5
|
-
*
|
|
6
|
-
* @see SPEC v0.4.0 §19
|
|
7
|
-
*/
|
|
8
|
-
import type { Diagnostic } from "../diagnostics/types.js";
|
|
9
|
-
import type { DomainSchema } from "../generator/ir.js";
|
|
10
|
-
import type { RuntimeConditionalPatchOp } from "../lowering/lower-runtime-patch.js";
|
|
11
|
-
/**
|
|
12
|
-
* Trace entry for compilation steps.
|
|
13
|
-
*/
|
|
14
|
-
export interface CompileTrace {
|
|
15
|
-
phase: "lex" | "parse" | "analyze" | "generate" | "lower";
|
|
16
|
-
durationMs: number;
|
|
17
|
-
details?: Record<string, unknown>;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Domain compilation options.
|
|
21
|
-
*/
|
|
22
|
-
export interface CompileMelDomainOptions {
|
|
23
|
-
mode: "domain";
|
|
24
|
-
fnTableVersion?: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Domain compilation result.
|
|
28
|
-
*
|
|
29
|
-
* @see SPEC v0.4.0 §19.1
|
|
30
|
-
*/
|
|
31
|
-
export interface CompileMelDomainResult {
|
|
32
|
-
/**
|
|
33
|
-
* Compiled schema, or null if errors occurred.
|
|
34
|
-
*/
|
|
35
|
-
schema: DomainSchema | null;
|
|
36
|
-
/**
|
|
37
|
-
* Compilation trace.
|
|
38
|
-
*/
|
|
39
|
-
trace: CompileTrace[];
|
|
40
|
-
/**
|
|
41
|
-
* Warning diagnostics.
|
|
42
|
-
*/
|
|
43
|
-
warnings: Diagnostic[];
|
|
44
|
-
/**
|
|
45
|
-
* Error diagnostics.
|
|
46
|
-
*/
|
|
47
|
-
errors: Diagnostic[];
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Patch compilation options.
|
|
51
|
-
*/
|
|
52
|
-
export interface CompileMelPatchOptions {
|
|
53
|
-
mode: "patch";
|
|
54
|
-
/**
|
|
55
|
-
* Action name for context.
|
|
56
|
-
*/
|
|
57
|
-
actionName: string;
|
|
58
|
-
/**
|
|
59
|
-
* Allowed system path prefixes.
|
|
60
|
-
* Default: ["meta", "input"] (system is forbidden per §20.3).
|
|
61
|
-
*/
|
|
62
|
-
allowSysPaths?: {
|
|
63
|
-
prefixes: ("meta" | "input")[];
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Function table version.
|
|
67
|
-
*/
|
|
68
|
-
fnTableVersion?: string;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Patch compilation result.
|
|
72
|
-
*
|
|
73
|
-
* @see SPEC v0.4.0 §19.2
|
|
74
|
-
*/
|
|
75
|
-
export interface CompileMelPatchResult {
|
|
76
|
-
/**
|
|
77
|
-
* Compiled patch operations.
|
|
78
|
-
* These still contain Core IR expressions that need evaluation.
|
|
79
|
-
*/
|
|
80
|
-
ops: RuntimeConditionalPatchOp[];
|
|
81
|
-
/**
|
|
82
|
-
* Compilation trace.
|
|
83
|
-
*/
|
|
84
|
-
trace: CompileTrace[];
|
|
85
|
-
/**
|
|
86
|
-
* Warning diagnostics.
|
|
87
|
-
*/
|
|
88
|
-
warnings: Diagnostic[];
|
|
89
|
-
/**
|
|
90
|
-
* Error diagnostics.
|
|
91
|
-
*/
|
|
92
|
-
errors: Diagnostic[];
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Compile MEL text to DomainSchema.
|
|
96
|
-
*
|
|
97
|
-
* Takes a complete MEL domain definition and produces a DomainSchema
|
|
98
|
-
* suitable for use with core.compute().
|
|
99
|
-
*
|
|
100
|
-
* @param melText - MEL domain source text
|
|
101
|
-
* @param options - Compilation options
|
|
102
|
-
* @returns Compilation result with schema or errors
|
|
103
|
-
*
|
|
104
|
-
* @see SPEC v0.4.0 §19.1
|
|
105
|
-
*/
|
|
106
|
-
export declare function compileMelDomain(melText: string, options?: CompileMelDomainOptions): CompileMelDomainResult;
|
|
107
|
-
/**
|
|
108
|
-
* Compile MEL patch text to RuntimeConditionalPatchOp[].
|
|
109
|
-
*
|
|
110
|
-
* Takes MEL patch statements (set, unset, merge) and produces
|
|
111
|
-
* RuntimeConditionalPatchOp[] with Core IR expressions.
|
|
112
|
-
*
|
|
113
|
-
* The returned ops still contain expressions that need to be evaluated
|
|
114
|
-
* by evaluateRuntimePatches() to get concrete values.
|
|
115
|
-
*
|
|
116
|
-
* Constraints:
|
|
117
|
-
* - §20.3: $system.* is forbidden in Translator path
|
|
118
|
-
*
|
|
119
|
-
* @param melText - MEL patch source text
|
|
120
|
-
* @param options - Compilation options
|
|
121
|
-
* @returns Compilation result with ops or errors
|
|
122
|
-
*
|
|
123
|
-
* @see SPEC v0.4.0 §19.2
|
|
124
|
-
*/
|
|
125
|
-
export declare function compileMelPatch(melText: string, options: CompileMelPatchOptions): CompileMelPatchResult;
|
|
126
|
-
//# sourceMappingURL=compile-mel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compile-mel.d.ts","sourceRoot":"","sources":["../../src/api/compile-mel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAQpF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAE5B;;OAEG;IACH,KAAK,EAAE,YAAY,EAAE,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC;IAEnD;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,GAAG,EAAE,yBAAyB,EAAE,CAAC;IAEjC;;OAEG;IACH,KAAK,EAAE,YAAY,EAAE,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,uBAAuB,GAChC,sBAAsB,CAqExB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAqBvB"}
|