edict-lang 0.1.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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +202 -0
  3. package/dist/ast/nodes.d.ts +248 -0
  4. package/dist/ast/nodes.d.ts.map +1 -0
  5. package/dist/ast/nodes.js +95 -0
  6. package/dist/ast/nodes.js.map +1 -0
  7. package/dist/ast/types.d.ts +78 -0
  8. package/dist/ast/types.d.ts.map +1 -0
  9. package/dist/ast/types.js +7 -0
  10. package/dist/ast/types.js.map +1 -0
  11. package/dist/check.d.ts +19 -0
  12. package/dist/check.d.ts.map +1 -0
  13. package/dist/check.js +49 -0
  14. package/dist/check.js.map +1 -0
  15. package/dist/checker/check.d.ts +7 -0
  16. package/dist/checker/check.d.ts.map +1 -0
  17. package/dist/checker/check.js +548 -0
  18. package/dist/checker/check.js.map +1 -0
  19. package/dist/checker/type-env.d.ts +24 -0
  20. package/dist/checker/type-env.d.ts.map +1 -0
  21. package/dist/checker/type-env.js +67 -0
  22. package/dist/checker/type-env.js.map +1 -0
  23. package/dist/checker/types-equal.d.ts +18 -0
  24. package/dist/checker/types-equal.d.ts.map +1 -0
  25. package/dist/checker/types-equal.js +79 -0
  26. package/dist/checker/types-equal.js.map +1 -0
  27. package/dist/codegen/builtins.d.ts +27 -0
  28. package/dist/codegen/builtins.d.ts.map +1 -0
  29. package/dist/codegen/builtins.js +54 -0
  30. package/dist/codegen/builtins.js.map +1 -0
  31. package/dist/codegen/codegen.d.ts +32 -0
  32. package/dist/codegen/codegen.d.ts.map +1 -0
  33. package/dist/codegen/codegen.js +1192 -0
  34. package/dist/codegen/codegen.js.map +1 -0
  35. package/dist/codegen/runner.d.ts +16 -0
  36. package/dist/codegen/runner.d.ts.map +1 -0
  37. package/dist/codegen/runner.js +82 -0
  38. package/dist/codegen/runner.js.map +1 -0
  39. package/dist/codegen/string-table.d.ts +35 -0
  40. package/dist/codegen/string-table.d.ts.map +1 -0
  41. package/dist/codegen/string-table.js +62 -0
  42. package/dist/codegen/string-table.js.map +1 -0
  43. package/dist/compile.d.ts +18 -0
  44. package/dist/compile.d.ts.map +1 -0
  45. package/dist/compile.js +40 -0
  46. package/dist/compile.js.map +1 -0
  47. package/dist/contracts/translate.d.ts +39 -0
  48. package/dist/contracts/translate.d.ts.map +1 -0
  49. package/dist/contracts/translate.js +372 -0
  50. package/dist/contracts/translate.js.map +1 -0
  51. package/dist/contracts/verify.d.ts +8 -0
  52. package/dist/contracts/verify.d.ts.map +1 -0
  53. package/dist/contracts/verify.js +400 -0
  54. package/dist/contracts/verify.js.map +1 -0
  55. package/dist/contracts/z3-context.d.ts +14 -0
  56. package/dist/contracts/z3-context.d.ts.map +1 -0
  57. package/dist/contracts/z3-context.js +24 -0
  58. package/dist/contracts/z3-context.js.map +1 -0
  59. package/dist/effects/call-graph.d.ts +21 -0
  60. package/dist/effects/call-graph.d.ts.map +1 -0
  61. package/dist/effects/call-graph.js +135 -0
  62. package/dist/effects/call-graph.js.map +1 -0
  63. package/dist/effects/effect-check.d.ts +13 -0
  64. package/dist/effects/effect-check.d.ts.map +1 -0
  65. package/dist/effects/effect-check.js +48 -0
  66. package/dist/effects/effect-check.js.map +1 -0
  67. package/dist/errors/structured-errors.d.ts +193 -0
  68. package/dist/errors/structured-errors.d.ts.map +1 -0
  69. package/dist/errors/structured-errors.js +96 -0
  70. package/dist/errors/structured-errors.js.map +1 -0
  71. package/dist/index.d.ts +34 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +37 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/mcp/create-server.d.ts +3 -0
  76. package/dist/mcp/create-server.d.ts.map +1 -0
  77. package/dist/mcp/create-server.js +157 -0
  78. package/dist/mcp/create-server.js.map +1 -0
  79. package/dist/mcp/handlers.d.ts +44 -0
  80. package/dist/mcp/handlers.d.ts.map +1 -0
  81. package/dist/mcp/handlers.js +112 -0
  82. package/dist/mcp/handlers.js.map +1 -0
  83. package/dist/mcp/server.d.ts +3 -0
  84. package/dist/mcp/server.d.ts.map +1 -0
  85. package/dist/mcp/server.js +129 -0
  86. package/dist/mcp/server.js.map +1 -0
  87. package/dist/resolver/levenshtein.d.ts +12 -0
  88. package/dist/resolver/levenshtein.d.ts.map +1 -0
  89. package/dist/resolver/levenshtein.js +54 -0
  90. package/dist/resolver/levenshtein.js.map +1 -0
  91. package/dist/resolver/resolve.d.ts +7 -0
  92. package/dist/resolver/resolve.d.ts.map +1 -0
  93. package/dist/resolver/resolve.js +393 -0
  94. package/dist/resolver/resolve.js.map +1 -0
  95. package/dist/resolver/scope.d.ts +34 -0
  96. package/dist/resolver/scope.d.ts.map +1 -0
  97. package/dist/resolver/scope.js +51 -0
  98. package/dist/resolver/scope.js.map +1 -0
  99. package/dist/validator/id-tracker.d.ts +14 -0
  100. package/dist/validator/id-tracker.d.ts.map +1 -0
  101. package/dist/validator/id-tracker.js +28 -0
  102. package/dist/validator/id-tracker.js.map +1 -0
  103. package/dist/validator/node-validators.d.ts +6 -0
  104. package/dist/validator/node-validators.d.ts.map +1 -0
  105. package/dist/validator/node-validators.js +808 -0
  106. package/dist/validator/node-validators.js.map +1 -0
  107. package/dist/validator/validate.d.ts +17 -0
  108. package/dist/validator/validate.d.ts.map +1 -0
  109. package/dist/validator/validate.js +27 -0
  110. package/dist/validator/validate.js.map +1 -0
  111. package/package.json +75 -0
@@ -0,0 +1,48 @@
1
+ // =============================================================================
2
+ // Effect Checker
3
+ // =============================================================================
4
+ // Single-pass analysis: verify that each function's declared effects cover
5
+ // the effects of the functions it calls.
6
+ import { effectViolation, effectInPure } from "../errors/structured-errors.js";
7
+ import { buildCallGraph } from "./call-graph.js";
8
+ /**
9
+ * Check effect consistency across all functions in the module.
10
+ *
11
+ * For each function, iterates its call edges (skipping imports):
12
+ * - If caller is `pure`: any callee with non-pure effects → `effect_in_pure` error
13
+ * - If caller is not `pure`: missing caller effects → `effect_violation` error
14
+ *
15
+ * Returns an empty array if all effects are consistent.
16
+ */
17
+ export function effectCheck(module) {
18
+ const { graph, functionDefs, importedNames } = buildCallGraph(module);
19
+ const errors = [];
20
+ for (const [fnName, fn] of functionDefs) {
21
+ const edges = graph.get(fnName) ?? [];
22
+ const callerEffects = new Set(fn.effects);
23
+ const isPure = callerEffects.has("pure");
24
+ for (const edge of edges) {
25
+ // Skip imported functions — effect-opaque
26
+ if (importedNames.has(edge.calleeName))
27
+ continue;
28
+ // Skip unknown callees (e.g., parameters used as functions)
29
+ const callee = functionDefs.get(edge.calleeName);
30
+ if (!callee)
31
+ continue;
32
+ const calleeNonPure = callee.effects.filter(e => e !== "pure");
33
+ if (calleeNonPure.length === 0)
34
+ continue;
35
+ if (isPure) {
36
+ errors.push(effectInPure(fn.id, fnName, edge.callSiteNodeId, edge.calleeName, calleeNonPure));
37
+ }
38
+ else {
39
+ const missing = calleeNonPure.filter(e => !callerEffects.has(e));
40
+ if (missing.length > 0) {
41
+ errors.push(effectViolation(fn.id, fnName, missing, edge.callSiteNodeId, edge.calleeName));
42
+ }
43
+ }
44
+ }
45
+ }
46
+ return errors;
47
+ }
48
+ //# sourceMappingURL=effect-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-check.js","sourceRoot":"","sources":["../../src/effects/effect-check.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAChF,2EAA2E;AAC3E,yCAAyC;AAIzC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC3C,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,0CAA0C;YAC1C,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,SAAS;YAEjD,4DAA4D;YAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;YAC/D,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEzC,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC,YAAY,CACpB,EAAE,CAAC,EAAE,EACL,MAAM,EACN,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,UAAU,EACf,aAAa,CAChB,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC,eAAe,CACvB,EAAE,CAAC,EAAE,EACL,MAAM,EACN,OAAO,EACP,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,UAAU,CAClB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,193 @@
1
+ import type { Effect } from "../ast/nodes.js";
2
+ import type { TypeExpr } from "../ast/types.js";
3
+ /**
4
+ * Union of all compiler errors (Phase 1–4).
5
+ */
6
+ export type StructuredError = DuplicateIdError | UnknownNodeKindError | MissingFieldError | InvalidFieldTypeError | InvalidEffectError | InvalidOperatorError | InvalidBasicTypeName | ConflictingEffectsError | UndefinedReferenceError | DuplicateDefinitionError | UnknownRecordError | UnknownEnumError | UnknownVariantError | TypeMismatchError | ArityMismatchError | NotAFunctionError | UnknownFieldError | MissingRecordFieldsError | EffectViolationError | EffectInPureError | ContractFailureError | VerificationTimeoutError | UndecidablePredicateError | PreconditionNotMetError;
7
+ export interface DuplicateIdError {
8
+ error: "duplicate_id";
9
+ nodeId: string;
10
+ firstPath: string;
11
+ secondPath: string;
12
+ }
13
+ export interface UnknownNodeKindError {
14
+ error: "unknown_node_kind";
15
+ path: string;
16
+ received: string;
17
+ validKinds: readonly string[];
18
+ }
19
+ export interface MissingFieldError {
20
+ error: "missing_field";
21
+ path: string;
22
+ nodeId: string | null;
23
+ field: string;
24
+ expectedFormat: string;
25
+ }
26
+ export interface InvalidFieldTypeError {
27
+ error: "invalid_field_type";
28
+ path: string;
29
+ nodeId: string | null;
30
+ field: string;
31
+ expectedFormat: string;
32
+ actualFormat: string;
33
+ }
34
+ export interface InvalidEffectError {
35
+ error: "invalid_effect";
36
+ path: string;
37
+ nodeId: string | null;
38
+ received: string;
39
+ validEffects: readonly string[];
40
+ }
41
+ export interface InvalidOperatorError {
42
+ error: "invalid_operator";
43
+ path: string;
44
+ nodeId: string | null;
45
+ received: string;
46
+ validOperators: readonly string[];
47
+ }
48
+ export interface InvalidBasicTypeName {
49
+ error: "invalid_basic_type_name";
50
+ path: string;
51
+ nodeId: string | null;
52
+ received: string;
53
+ validNames: readonly string[];
54
+ }
55
+ export interface ConflictingEffectsError {
56
+ error: "conflicting_effects";
57
+ path: string;
58
+ nodeId: string | null;
59
+ effectsFound: string[];
60
+ }
61
+ export interface UndefinedReferenceError {
62
+ error: "undefined_reference";
63
+ nodeId: string | null;
64
+ name: string;
65
+ candidates: string[];
66
+ }
67
+ export interface DuplicateDefinitionError {
68
+ error: "duplicate_definition";
69
+ nodeId: string | null;
70
+ name: string;
71
+ firstNodeId: string | null;
72
+ }
73
+ export interface UnknownRecordError {
74
+ error: "unknown_record";
75
+ nodeId: string | null;
76
+ name: string;
77
+ candidates: string[];
78
+ }
79
+ export interface UnknownEnumError {
80
+ error: "unknown_enum";
81
+ nodeId: string | null;
82
+ name: string;
83
+ candidates: string[];
84
+ }
85
+ export interface UnknownVariantError {
86
+ error: "unknown_variant";
87
+ nodeId: string | null;
88
+ enumName: string;
89
+ variantName: string;
90
+ availableVariants: string[];
91
+ }
92
+ export interface TypeMismatchError {
93
+ error: "type_mismatch";
94
+ nodeId: string | null;
95
+ expected: TypeExpr;
96
+ actual: TypeExpr;
97
+ }
98
+ export interface ArityMismatchError {
99
+ error: "arity_mismatch";
100
+ nodeId: string | null;
101
+ expected: number;
102
+ actual: number;
103
+ }
104
+ export interface NotAFunctionError {
105
+ error: "not_a_function";
106
+ nodeId: string | null;
107
+ actualType: TypeExpr;
108
+ }
109
+ export interface UnknownFieldError {
110
+ error: "unknown_field";
111
+ nodeId: string | null;
112
+ recordName: string;
113
+ fieldName: string;
114
+ availableFields: string[];
115
+ }
116
+ export interface MissingRecordFieldsError {
117
+ error: "missing_record_fields";
118
+ nodeId: string | null;
119
+ recordName: string;
120
+ missingFields: string[];
121
+ }
122
+ export declare function duplicateId(nodeId: string, firstPath: string, secondPath: string): DuplicateIdError;
123
+ export declare function unknownNodeKind(path: string, received: string, validKinds: readonly string[]): UnknownNodeKindError;
124
+ export declare function missingField(path: string, nodeId: string | null, field: string, expectedFormat: string): MissingFieldError;
125
+ export declare function invalidFieldType(path: string, nodeId: string | null, field: string, expectedFormat: string, actualFormat: string): InvalidFieldTypeError;
126
+ export declare function invalidEffect(path: string, nodeId: string | null, received: string, validEffects: readonly string[]): InvalidEffectError;
127
+ export declare function invalidOperator(path: string, nodeId: string | null, received: string, validOperators: readonly string[]): InvalidOperatorError;
128
+ export declare function invalidBasicTypeName(path: string, nodeId: string | null, received: string, validNames: readonly string[]): InvalidBasicTypeName;
129
+ export declare function conflictingEffects(path: string, nodeId: string | null, effectsFound: string[]): ConflictingEffectsError;
130
+ export declare function undefinedReference(nodeId: string | null, name: string, candidates: string[]): UndefinedReferenceError;
131
+ export declare function duplicateDefinition(nodeId: string | null, name: string, firstNodeId: string | null): DuplicateDefinitionError;
132
+ export declare function unknownRecord(nodeId: string | null, name: string, candidates: string[]): UnknownRecordError;
133
+ export declare function unknownEnum(nodeId: string | null, name: string, candidates: string[]): UnknownEnumError;
134
+ export declare function unknownVariant(nodeId: string | null, enumName: string, variantName: string, availableVariants: string[]): UnknownVariantError;
135
+ export declare function typeMismatch(nodeId: string | null, expected: TypeExpr, actual: TypeExpr): TypeMismatchError;
136
+ export declare function arityMismatch(nodeId: string | null, expected: number, actual: number): ArityMismatchError;
137
+ export declare function notAFunction(nodeId: string | null, actualType: TypeExpr): NotAFunctionError;
138
+ export declare function unknownField(nodeId: string | null, recordName: string, fieldName: string, availableFields: string[]): UnknownFieldError;
139
+ export declare function missingRecordFields(nodeId: string | null, recordName: string, missingFields: string[]): MissingRecordFieldsError;
140
+ export interface EffectViolationError {
141
+ error: "effect_violation";
142
+ nodeId: string | null;
143
+ functionName: string;
144
+ missingEffects: Effect[];
145
+ callSiteNodeId: string | null;
146
+ calleeName: string;
147
+ }
148
+ export interface EffectInPureError {
149
+ error: "effect_in_pure";
150
+ nodeId: string | null;
151
+ functionName: string;
152
+ callSiteNodeId: string | null;
153
+ calleeName: string;
154
+ calleeEffects: Effect[];
155
+ }
156
+ export declare function effectViolation(nodeId: string | null, functionName: string, missingEffects: Effect[], callSiteNodeId: string | null, calleeName: string): EffectViolationError;
157
+ export declare function effectInPure(nodeId: string | null, functionName: string, callSiteNodeId: string | null, calleeName: string, calleeEffects: Effect[]): EffectInPureError;
158
+ export interface ContractFailureError {
159
+ error: "contract_failure";
160
+ nodeId: string;
161
+ contractId: string;
162
+ functionName: string;
163
+ contractKind: "pre" | "post";
164
+ counterexample: Record<string, unknown>;
165
+ }
166
+ export interface VerificationTimeoutError {
167
+ error: "verification_timeout";
168
+ nodeId: string;
169
+ contractId: string;
170
+ functionName: string;
171
+ timeoutMs: number;
172
+ }
173
+ export interface UndecidablePredicateError {
174
+ error: "undecidable_predicate";
175
+ nodeId: string;
176
+ contractId: string;
177
+ functionName: string;
178
+ unsupportedNodeKind: string;
179
+ }
180
+ export interface PreconditionNotMetError {
181
+ error: "precondition_not_met";
182
+ nodeId: string;
183
+ callSiteId: string;
184
+ callerName: string;
185
+ calleeName: string;
186
+ contractId: string;
187
+ counterexample: Record<string, unknown>;
188
+ }
189
+ export declare function contractFailure(nodeId: string, contractId: string, functionName: string, contractKind: "pre" | "post", counterexample: Record<string, unknown>): ContractFailureError;
190
+ export declare function verificationTimeout(nodeId: string, contractId: string, functionName: string, timeoutMs: number): VerificationTimeoutError;
191
+ export declare function undecidablePredicate(nodeId: string, contractId: string, functionName: string, unsupportedNodeKind: string): UndecidablePredicateError;
192
+ export declare function preconditionNotMet(nodeId: string, callSiteId: string, callerName: string, calleeName: string, contractId: string, counterexample: Record<string, unknown>): PreconditionNotMetError;
193
+ //# sourceMappingURL=structured-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-errors.d.ts","sourceRoot":"","sources":["../../src/errors/structured-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ // =============================================================================
2
+ // Edict Structured Errors
3
+ // =============================================================================
4
+ // Every compiler error is a structured JSON object with enough context
5
+ // for an agent to self-repair. No human-readable strings.
6
+ // =============================================================================
7
+ // Phase 1 error constructors
8
+ // =============================================================================
9
+ export function duplicateId(nodeId, firstPath, secondPath) {
10
+ return { error: "duplicate_id", nodeId, firstPath, secondPath };
11
+ }
12
+ export function unknownNodeKind(path, received, validKinds) {
13
+ return { error: "unknown_node_kind", path, received, validKinds };
14
+ }
15
+ export function missingField(path, nodeId, field, expectedFormat) {
16
+ return { error: "missing_field", path, nodeId, field, expectedFormat };
17
+ }
18
+ export function invalidFieldType(path, nodeId, field, expectedFormat, actualFormat) {
19
+ return { error: "invalid_field_type", path, nodeId, field, expectedFormat, actualFormat };
20
+ }
21
+ export function invalidEffect(path, nodeId, received, validEffects) {
22
+ return { error: "invalid_effect", path, nodeId, received, validEffects };
23
+ }
24
+ export function invalidOperator(path, nodeId, received, validOperators) {
25
+ return {
26
+ error: "invalid_operator",
27
+ path,
28
+ nodeId,
29
+ received,
30
+ validOperators,
31
+ };
32
+ }
33
+ export function invalidBasicTypeName(path, nodeId, received, validNames) {
34
+ return { error: "invalid_basic_type_name", path, nodeId, received, validNames };
35
+ }
36
+ export function conflictingEffects(path, nodeId, effectsFound) {
37
+ return { error: "conflicting_effects", path, nodeId, effectsFound };
38
+ }
39
+ // =============================================================================
40
+ // Phase 2 error constructors
41
+ // =============================================================================
42
+ export function undefinedReference(nodeId, name, candidates) {
43
+ return { error: "undefined_reference", nodeId, name, candidates };
44
+ }
45
+ export function duplicateDefinition(nodeId, name, firstNodeId) {
46
+ return { error: "duplicate_definition", nodeId, name, firstNodeId };
47
+ }
48
+ export function unknownRecord(nodeId, name, candidates) {
49
+ return { error: "unknown_record", nodeId, name, candidates };
50
+ }
51
+ export function unknownEnum(nodeId, name, candidates) {
52
+ return { error: "unknown_enum", nodeId, name, candidates };
53
+ }
54
+ export function unknownVariant(nodeId, enumName, variantName, availableVariants) {
55
+ return { error: "unknown_variant", nodeId, enumName, variantName, availableVariants };
56
+ }
57
+ export function typeMismatch(nodeId, expected, actual) {
58
+ return { error: "type_mismatch", nodeId, expected, actual };
59
+ }
60
+ export function arityMismatch(nodeId, expected, actual) {
61
+ return { error: "arity_mismatch", nodeId, expected, actual };
62
+ }
63
+ export function notAFunction(nodeId, actualType) {
64
+ return { error: "not_a_function", nodeId, actualType };
65
+ }
66
+ export function unknownField(nodeId, recordName, fieldName, availableFields) {
67
+ return { error: "unknown_field", nodeId, recordName, fieldName, availableFields };
68
+ }
69
+ export function missingRecordFields(nodeId, recordName, missingFields) {
70
+ return { error: "missing_record_fields", nodeId, recordName, missingFields };
71
+ }
72
+ // =============================================================================
73
+ // Phase 3 error constructors
74
+ // =============================================================================
75
+ export function effectViolation(nodeId, functionName, missingEffects, callSiteNodeId, calleeName) {
76
+ return { error: "effect_violation", nodeId, functionName, missingEffects, callSiteNodeId, calleeName };
77
+ }
78
+ export function effectInPure(nodeId, functionName, callSiteNodeId, calleeName, calleeEffects) {
79
+ return { error: "effect_in_pure", nodeId, functionName, callSiteNodeId, calleeName, calleeEffects };
80
+ }
81
+ // =============================================================================
82
+ // Phase 4 error constructors
83
+ // =============================================================================
84
+ export function contractFailure(nodeId, contractId, functionName, contractKind, counterexample) {
85
+ return { error: "contract_failure", nodeId, contractId, functionName, contractKind, counterexample };
86
+ }
87
+ export function verificationTimeout(nodeId, contractId, functionName, timeoutMs) {
88
+ return { error: "verification_timeout", nodeId, contractId, functionName, timeoutMs };
89
+ }
90
+ export function undecidablePredicate(nodeId, contractId, functionName, unsupportedNodeKind) {
91
+ return { error: "undecidable_predicate", nodeId, contractId, functionName, unsupportedNodeKind };
92
+ }
93
+ export function preconditionNotMet(nodeId, callSiteId, callerName, calleeName, contractId, counterexample) {
94
+ return { error: "precondition_not_met", nodeId, callSiteId, callerName, calleeName, contractId, counterexample };
95
+ }
96
+ //# sourceMappingURL=structured-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-errors.js","sourceRoot":"","sources":["../../src/errors/structured-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export { validate } from "./validator/validate.js";
2
+ export type { ValidationResult, ValidationSuccess, ValidationFailure, } from "./validator/validate.js";
3
+ export { resolve } from "./resolver/resolve.js";
4
+ export { Scope } from "./resolver/scope.js";
5
+ export type { SymbolKind, SymbolInfo } from "./resolver/scope.js";
6
+ export { levenshteinDistance, findCandidates } from "./resolver/levenshtein.js";
7
+ export { typeCheck } from "./checker/check.js";
8
+ export { TypeEnv } from "./checker/type-env.js";
9
+ export { typesEqual, isUnknown, resolveType } from "./checker/types-equal.js";
10
+ export { effectCheck } from "./effects/effect-check.js";
11
+ export { buildCallGraph, collectCalls } from "./effects/call-graph.js";
12
+ export type { CallEdge, CallGraph } from "./effects/call-graph.js";
13
+ export { contractVerify } from "./contracts/verify.js";
14
+ export { getZ3, resetZ3 } from "./contracts/z3-context.js";
15
+ export { translateExpr, translateExprList, createParamVariables } from "./contracts/translate.js";
16
+ export type { TranslationContext, TranslationError } from "./contracts/translate.js";
17
+ export { check } from "./check.js";
18
+ export type { CheckResult } from "./check.js";
19
+ export type { EdictModule, Import, Definition, FunctionDef, TypeDef, RecordDef, EnumDef, ConstDef, RecordField, EnumVariant, Param, Contract, Effect, Expression, Literal, Identifier, BinaryOp, BinaryOperator, UnaryOp, UnaryOperator, Call, IfExpr, LetExpr, MatchExpr, MatchArm, Pattern, LiteralPattern, WildcardPattern, BindingPattern, ConstructorPattern, ArrayExpr, TupleExpr, RecordExpr, EnumConstructor, FieldAccess, LambdaExpr, BlockExpr, FieldInit, } from "./ast/nodes.js";
20
+ export type { TypeExpr, BasicType, ArrayType, OptionType, ResultType, UnitType, RefinedType, FunctionType, NamedType, TupleType, } from "./ast/types.js";
21
+ export type { StructuredError, DuplicateIdError, UnknownNodeKindError, MissingFieldError, InvalidFieldTypeError, InvalidEffectError, InvalidOperatorError, InvalidBasicTypeName, ConflictingEffectsError, UndefinedReferenceError, DuplicateDefinitionError, UnknownRecordError, UnknownEnumError, UnknownVariantError, TypeMismatchError, ArityMismatchError, NotAFunctionError, UnknownFieldError, MissingRecordFieldsError, EffectViolationError, EffectInPureError, ContractFailureError, VerificationTimeoutError, UndecidablePredicateError, PreconditionNotMetError, } from "./errors/structured-errors.js";
22
+ export { duplicateId, unknownNodeKind, missingField, invalidFieldType, invalidEffect, invalidOperator, invalidBasicTypeName, conflictingEffects, } from "./errors/structured-errors.js";
23
+ export { undefinedReference, duplicateDefinition, unknownRecord, unknownEnum, unknownVariant, typeMismatch, arityMismatch, notAFunction, unknownField, missingRecordFields, } from "./errors/structured-errors.js";
24
+ export { effectViolation, effectInPure, } from "./errors/structured-errors.js";
25
+ export { contractFailure, verificationTimeout, undecidablePredicate, preconditionNotMet, } from "./errors/structured-errors.js";
26
+ export { compile } from "./codegen/codegen.js";
27
+ export type { CompileResult, CompileSuccess, CompileFailure, } from "./codegen/codegen.js";
28
+ export { run } from "./codegen/runner.js";
29
+ export type { RunResult } from "./codegen/runner.js";
30
+ export { compileAndRun } from "./compile.js";
31
+ export type { CompileAndRunResult, CompileAndRunSuccess, CompileAndRunFailure, } from "./compile.js";
32
+ export { StringTable } from "./codegen/string-table.js";
33
+ export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./codegen/builtins.js";
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ // =============================================================================
2
+ // Edict Public API
3
+ // =============================================================================
4
+ // Phase 1 — Validation
5
+ export { validate } from "./validator/validate.js";
6
+ // Phase 2 — Name Resolution
7
+ export { resolve } from "./resolver/resolve.js";
8
+ export { Scope } from "./resolver/scope.js";
9
+ export { levenshteinDistance, findCandidates } from "./resolver/levenshtein.js";
10
+ // Phase 2 — Type Checking
11
+ export { typeCheck } from "./checker/check.js";
12
+ export { TypeEnv } from "./checker/type-env.js";
13
+ export { typesEqual, isUnknown, resolveType } from "./checker/types-equal.js";
14
+ // Phase 3 — Effect Checking
15
+ export { effectCheck } from "./effects/effect-check.js";
16
+ export { buildCallGraph, collectCalls } from "./effects/call-graph.js";
17
+ // Phase 4 — Contract Verification
18
+ export { contractVerify } from "./contracts/verify.js";
19
+ export { getZ3, resetZ3 } from "./contracts/z3-context.js";
20
+ export { translateExpr, translateExprList, createParamVariables } from "./contracts/translate.js";
21
+ // Pipeline
22
+ export { check } from "./check.js";
23
+ // Error constructors — Phase 1
24
+ export { duplicateId, unknownNodeKind, missingField, invalidFieldType, invalidEffect, invalidOperator, invalidBasicTypeName, conflictingEffects, } from "./errors/structured-errors.js";
25
+ // Error constructors — Phase 2
26
+ export { undefinedReference, duplicateDefinition, unknownRecord, unknownEnum, unknownVariant, typeMismatch, arityMismatch, notAFunction, unknownField, missingRecordFields, } from "./errors/structured-errors.js";
27
+ // Error constructors — Phase 3
28
+ export { effectViolation, effectInPure, } from "./errors/structured-errors.js";
29
+ // Error constructors — Phase 4
30
+ export { contractFailure, verificationTimeout, undecidablePredicate, preconditionNotMet, } from "./errors/structured-errors.js";
31
+ // Phase 5 — Code generation
32
+ export { compile } from "./codegen/codegen.js";
33
+ export { run } from "./codegen/runner.js";
34
+ export { compileAndRun } from "./compile.js";
35
+ export { StringTable } from "./codegen/string-table.js";
36
+ export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./codegen/builtins.js";
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAOnD,4BAA4B;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,0BAA0B;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE9E,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvE,kCAAkC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA2FnC,+BAA+B;AAC/B,OAAO,EACH,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,EACH,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACtB,MAAM,+BAA+B,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,EACH,eAAe,EACf,YAAY,GACf,MAAM,+BAA+B,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,4BAA4B;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function createEdictServer(): McpServer;
3
+ //# sourceMappingURL=create-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBpE,wBAAgB,iBAAiB,IAAI,SAAS,CA+L7C"}
@@ -0,0 +1,157 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { z } from "zod";
3
+ import { handleSchema, handleExamples, handleValidate, handleCheck, handleCompile, handleRun, handleVersion, } from "./handlers.js";
4
+ // =============================================================================
5
+ // Server setup
6
+ // =============================================================================
7
+ export function createEdictServer() {
8
+ const server = new McpServer({
9
+ name: "edict-compiler",
10
+ version: "0.1.0",
11
+ });
12
+ // =============================================================================
13
+ // Tools
14
+ // =============================================================================
15
+ // edict_schema — Return the JSON Schema for EdictModule
16
+ server.tool("edict_schema", {}, async () => {
17
+ const result = handleSchema();
18
+ return {
19
+ content: [{ type: "text", text: JSON.stringify(result.schema) }],
20
+ };
21
+ });
22
+ // edict_version — Return capability info
23
+ server.tool("edict_version", {}, async () => {
24
+ const result = handleVersion();
25
+ return {
26
+ content: [
27
+ {
28
+ type: "text",
29
+ text: JSON.stringify(result, null, 2),
30
+ },
31
+ ],
32
+ };
33
+ });
34
+ // edict_examples — Return all example programs
35
+ server.tool("edict_examples", {}, async () => {
36
+ const result = handleExamples();
37
+ return {
38
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
39
+ };
40
+ });
41
+ // edict_validate — Validate an AST against the JSON schema
42
+ server.tool("edict_validate", "Validate an Edict AST against the compiler's JSON schema without typing or compiling. Use this as a first pass.", {
43
+ ast: z.any().describe("The Edict JSON AST to validate"),
44
+ }, async ({ ast }) => {
45
+ const result = handleValidate(ast);
46
+ if (result.ok) {
47
+ return { content: [{ type: "text", text: "AST is schema-valid." }] };
48
+ }
49
+ else {
50
+ return {
51
+ content: [
52
+ { type: "text", text: JSON.stringify({ errors: result.errors }, null, 2) },
53
+ ],
54
+ isError: true,
55
+ };
56
+ }
57
+ });
58
+ // edict_check — Type check, effect check, and verify contracts
59
+ server.tool("edict_check", "Run the full semantic checker (name resolution, type checking, effect checking, contract verification) on an AST.", {
60
+ ast: z.any().describe("The Edict JSON AST to check"),
61
+ }, async ({ ast }) => {
62
+ const result = await handleCheck(ast);
63
+ if (result.ok) {
64
+ return { content: [{ type: "text", text: "AST passed all semantic checks." }] };
65
+ }
66
+ else {
67
+ return {
68
+ content: [
69
+ { type: "text", text: JSON.stringify({ errors: result.errors }, null, 2) },
70
+ ],
71
+ isError: true,
72
+ };
73
+ }
74
+ });
75
+ // edict_compile — Compile a checked AST to a base64 encoded WASM module
76
+ server.tool("edict_compile", "Compile a semantically valid Edict AST into a WebAssembly module. Returns the WASM binary encoded as a base64 string.", {
77
+ ast: z.any().describe("The Edict JSON AST to compile"),
78
+ }, async ({ ast }) => {
79
+ const result = await handleCompile(ast);
80
+ if (result.ok && result.wasm) {
81
+ return {
82
+ content: [
83
+ {
84
+ type: "text",
85
+ text: JSON.stringify({
86
+ message: "Compilation successful.",
87
+ wasm: result.wasm,
88
+ binarySize: result.wasm.length, // rough estimate
89
+ }, null, 2),
90
+ },
91
+ ],
92
+ };
93
+ }
94
+ else {
95
+ return {
96
+ content: [
97
+ { type: "text", text: JSON.stringify({ errors: result.errors }, null, 2) },
98
+ ],
99
+ isError: true,
100
+ };
101
+ }
102
+ });
103
+ // edict_run — Run a base64 encoded WASM module and return its output
104
+ server.tool("edict_run", "Execute a compiled WebAssembly module (provided as base64) using the Edict runtime host. Returns standard output and exit code.", {
105
+ wasmBase64: z.string().describe("The base64 encoded WebAssembly module to execute"),
106
+ }, async ({ wasmBase64 }) => {
107
+ try {
108
+ const result = await handleRun(wasmBase64);
109
+ return {
110
+ content: [
111
+ {
112
+ type: "text",
113
+ text: JSON.stringify(result, null, 2),
114
+ },
115
+ ],
116
+ };
117
+ }
118
+ catch (err) {
119
+ return {
120
+ content: [{ type: "text", text: String(err) }],
121
+ isError: true,
122
+ };
123
+ }
124
+ });
125
+ // =============================================================================
126
+ // Resources
127
+ // =============================================================================
128
+ server.resource("schema", "edict://schema", {
129
+ description: "The full JSON Schema defining valid Edict AST programs",
130
+ mimeType: "application/json",
131
+ }, async () => {
132
+ const result = handleSchema();
133
+ return {
134
+ contents: [
135
+ {
136
+ uri: "edict://schema",
137
+ mimeType: "application/json",
138
+ text: JSON.stringify(result.schema, null, 2),
139
+ },
140
+ ],
141
+ };
142
+ });
143
+ server.resource("examples", "edict://examples", { description: "10 example Edict programs as JSON ASTs", mimeType: "application/json" }, async () => {
144
+ const result = handleExamples();
145
+ return {
146
+ contents: [
147
+ {
148
+ uri: "edict://examples",
149
+ mimeType: "application/json",
150
+ text: JSON.stringify(result, null, 2),
151
+ },
152
+ ],
153
+ };
154
+ });
155
+ return server;
156
+ }
157
+ //# sourceMappingURL=create-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"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"}