edict-lang 1.2.0 → 1.6.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 (227) hide show
  1. package/README.md +39 -13
  2. package/dist/ast/nodes.d.ts +4 -3
  3. package/dist/ast/nodes.d.ts.map +1 -1
  4. package/dist/ast/nodes.js +1 -0
  5. package/dist/ast/nodes.js.map +1 -1
  6. package/dist/ast/type-constants.d.ts +12 -0
  7. package/dist/ast/type-constants.d.ts.map +1 -0
  8. package/dist/ast/type-constants.js +16 -0
  9. package/dist/ast/type-constants.js.map +1 -0
  10. package/dist/ast/types.d.ts +1 -1
  11. package/dist/ast/types.d.ts.map +1 -1
  12. package/dist/builtins/builtin-enums.d.ts +12 -0
  13. package/dist/builtins/builtin-enums.d.ts.map +1 -0
  14. package/dist/builtins/builtin-enums.js +45 -0
  15. package/dist/builtins/builtin-enums.js.map +1 -0
  16. package/dist/builtins/builtin-types.d.ts +20 -0
  17. package/dist/builtins/builtin-types.d.ts.map +1 -0
  18. package/dist/builtins/builtin-types.js +6 -0
  19. package/dist/builtins/builtin-types.js.map +1 -0
  20. package/dist/builtins/builtins.d.ts +3 -0
  21. package/dist/builtins/builtins.d.ts.map +1 -0
  22. package/dist/builtins/builtins.js +3 -0
  23. package/dist/builtins/builtins.js.map +1 -0
  24. package/dist/builtins/domains/array.d.ts +3 -0
  25. package/dist/builtins/domains/array.d.ts.map +1 -0
  26. package/dist/builtins/domains/array.js +236 -0
  27. package/dist/builtins/domains/array.js.map +1 -0
  28. package/dist/builtins/domains/core.d.ts +3 -0
  29. package/dist/builtins/domains/core.d.ts.map +1 -0
  30. package/dist/builtins/domains/core.js +45 -0
  31. package/dist/builtins/domains/core.js.map +1 -0
  32. package/dist/builtins/domains/crypto.d.ts +3 -0
  33. package/dist/builtins/domains/crypto.d.ts.map +1 -0
  34. package/dist/builtins/domains/crypto.js +49 -0
  35. package/dist/builtins/domains/crypto.js.map +1 -0
  36. package/dist/builtins/domains/datetime.d.ts +3 -0
  37. package/dist/builtins/domains/datetime.d.ts.map +1 -0
  38. package/dist/builtins/domains/datetime.js +45 -0
  39. package/dist/builtins/domains/datetime.js.map +1 -0
  40. package/dist/builtins/domains/http.d.ts +3 -0
  41. package/dist/builtins/domains/http.d.ts.map +1 -0
  42. package/dist/builtins/domains/http.js +55 -0
  43. package/dist/builtins/domains/http.js.map +1 -0
  44. package/dist/builtins/domains/int64.d.ts +3 -0
  45. package/dist/builtins/domains/int64.d.ts.map +1 -0
  46. package/dist/builtins/domains/int64.js +31 -0
  47. package/dist/builtins/domains/int64.js.map +1 -0
  48. package/dist/builtins/domains/io.d.ts +3 -0
  49. package/dist/builtins/domains/io.d.ts.map +1 -0
  50. package/dist/builtins/domains/io.js +79 -0
  51. package/dist/builtins/domains/io.js.map +1 -0
  52. package/dist/builtins/domains/json.d.ts +3 -0
  53. package/dist/builtins/domains/json.d.ts.map +1 -0
  54. package/dist/builtins/domains/json.js +47 -0
  55. package/dist/builtins/domains/json.js.map +1 -0
  56. package/dist/builtins/domains/math.d.ts +3 -0
  57. package/dist/builtins/domains/math.d.ts.map +1 -0
  58. package/dist/builtins/domains/math.js +47 -0
  59. package/dist/builtins/domains/math.js.map +1 -0
  60. package/dist/builtins/domains/option.d.ts +3 -0
  61. package/dist/builtins/domains/option.d.ts.map +1 -0
  62. package/dist/builtins/domains/option.js +56 -0
  63. package/dist/builtins/domains/option.js.map +1 -0
  64. package/dist/builtins/domains/random.d.ts +3 -0
  65. package/dist/builtins/domains/random.d.ts.map +1 -0
  66. package/dist/builtins/domains/random.js +50 -0
  67. package/dist/builtins/domains/random.js.map +1 -0
  68. package/dist/builtins/domains/regex.d.ts +3 -0
  69. package/dist/builtins/domains/regex.d.ts.map +1 -0
  70. package/dist/builtins/domains/regex.js +69 -0
  71. package/dist/builtins/domains/regex.js.map +1 -0
  72. package/dist/builtins/domains/result.d.ts +3 -0
  73. package/dist/builtins/domains/result.d.ts.map +1 -0
  74. package/dist/builtins/domains/result.js +84 -0
  75. package/dist/builtins/domains/result.js.map +1 -0
  76. package/dist/builtins/domains/string.d.ts +3 -0
  77. package/dist/builtins/domains/string.d.ts.map +1 -0
  78. package/dist/builtins/domains/string.js +139 -0
  79. package/dist/builtins/domains/string.js.map +1 -0
  80. package/dist/builtins/domains/type-conversion.d.ts +3 -0
  81. package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
  82. package/dist/builtins/domains/type-conversion.js +42 -0
  83. package/dist/builtins/domains/type-conversion.js.map +1 -0
  84. package/dist/builtins/host-helpers.d.ts +66 -0
  85. package/dist/builtins/host-helpers.d.ts.map +1 -0
  86. package/dist/builtins/host-helpers.js +127 -0
  87. package/dist/builtins/host-helpers.js.map +1 -0
  88. package/dist/builtins/registry.d.ts +48 -0
  89. package/dist/builtins/registry.d.ts.map +1 -0
  90. package/dist/builtins/registry.js +118 -0
  91. package/dist/builtins/registry.js.map +1 -0
  92. package/dist/check.d.ts +9 -2
  93. package/dist/check.d.ts.map +1 -1
  94. package/dist/check.js +30 -9
  95. package/dist/check.js.map +1 -1
  96. package/dist/checker/check.d.ts +18 -1
  97. package/dist/checker/check.d.ts.map +1 -1
  98. package/dist/checker/check.js +157 -108
  99. package/dist/checker/check.js.map +1 -1
  100. package/dist/checker/type-env.d.ts +2 -0
  101. package/dist/checker/type-env.d.ts.map +1 -1
  102. package/dist/checker/type-env.js +9 -0
  103. package/dist/checker/type-env.js.map +1 -1
  104. package/dist/codegen/browser-host-adapter.d.ts +29 -0
  105. package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
  106. package/dist/codegen/browser-host-adapter.js +51 -0
  107. package/dist/codegen/browser-host-adapter.js.map +1 -0
  108. package/dist/codegen/builtins.d.ts +2 -26
  109. package/dist/codegen/builtins.d.ts.map +1 -1
  110. package/dist/codegen/builtins.js +2 -341
  111. package/dist/codegen/builtins.js.map +1 -1
  112. package/dist/codegen/closures.d.ts +17 -0
  113. package/dist/codegen/closures.d.ts.map +1 -0
  114. package/dist/codegen/closures.js +140 -0
  115. package/dist/codegen/closures.js.map +1 -0
  116. package/dist/codegen/codegen.d.ts +6 -30
  117. package/dist/codegen/codegen.d.ts.map +1 -1
  118. package/dist/codegen/codegen.js +154 -1103
  119. package/dist/codegen/codegen.js.map +1 -1
  120. package/dist/codegen/collect-strings.d.ts +4 -0
  121. package/dist/codegen/collect-strings.d.ts.map +1 -0
  122. package/dist/codegen/collect-strings.js +76 -0
  123. package/dist/codegen/collect-strings.js.map +1 -0
  124. package/dist/codegen/compile-calls.d.ts +10 -0
  125. package/dist/codegen/compile-calls.d.ts.map +1 -0
  126. package/dist/codegen/compile-calls.js +374 -0
  127. package/dist/codegen/compile-calls.js.map +1 -0
  128. package/dist/codegen/compile-data.d.ts +22 -0
  129. package/dist/codegen/compile-data.d.ts.map +1 -0
  130. package/dist/codegen/compile-data.js +243 -0
  131. package/dist/codegen/compile-data.js.map +1 -0
  132. package/dist/codegen/compile-expr.d.ts +10 -0
  133. package/dist/codegen/compile-expr.d.ts.map +1 -0
  134. package/dist/codegen/compile-expr.js +156 -0
  135. package/dist/codegen/compile-expr.js.map +1 -0
  136. package/dist/codegen/compile-match.d.ts +7 -0
  137. package/dist/codegen/compile-match.d.ts.map +1 -0
  138. package/dist/codegen/compile-match.js +195 -0
  139. package/dist/codegen/compile-match.js.map +1 -0
  140. package/dist/codegen/compile-scalars.d.ts +25 -0
  141. package/dist/codegen/compile-scalars.d.ts.map +1 -0
  142. package/dist/codegen/compile-scalars.js +211 -0
  143. package/dist/codegen/compile-scalars.js.map +1 -0
  144. package/dist/codegen/hof-generators.d.ts +39 -0
  145. package/dist/codegen/hof-generators.d.ts.map +1 -0
  146. package/dist/codegen/hof-generators.js +336 -0
  147. package/dist/codegen/hof-generators.js.map +1 -0
  148. package/dist/codegen/host-adapter.d.ts +44 -0
  149. package/dist/codegen/host-adapter.d.ts.map +1 -0
  150. package/dist/codegen/host-adapter.js +9 -0
  151. package/dist/codegen/host-adapter.js.map +1 -0
  152. package/dist/codegen/imports.d.ts +15 -0
  153. package/dist/codegen/imports.d.ts.map +1 -0
  154. package/dist/codegen/imports.js +165 -0
  155. package/dist/codegen/imports.js.map +1 -0
  156. package/dist/codegen/node-host-adapter.d.ts +35 -0
  157. package/dist/codegen/node-host-adapter.d.ts.map +1 -0
  158. package/dist/codegen/node-host-adapter.js +155 -0
  159. package/dist/codegen/node-host-adapter.js.map +1 -0
  160. package/dist/codegen/runner.d.ts +36 -2
  161. package/dist/codegen/runner.d.ts.map +1 -1
  162. package/dist/codegen/runner.js +147 -271
  163. package/dist/codegen/runner.js.map +1 -1
  164. package/dist/codegen/types.d.ts +96 -0
  165. package/dist/codegen/types.d.ts.map +1 -0
  166. package/dist/codegen/types.js +63 -0
  167. package/dist/codegen/types.js.map +1 -0
  168. package/dist/compact/expand.d.ts +25 -0
  169. package/dist/compact/expand.d.ts.map +1 -0
  170. package/dist/compact/expand.js +199 -0
  171. package/dist/compact/expand.js.map +1 -0
  172. package/dist/compile.d.ts +2 -1
  173. package/dist/compile.d.ts.map +1 -1
  174. package/dist/compile.js +2 -2
  175. package/dist/compile.js.map +1 -1
  176. package/dist/contracts/translate.js.map +1 -1
  177. package/dist/contracts/verify.d.ts +10 -2
  178. package/dist/contracts/verify.d.ts.map +1 -1
  179. package/dist/contracts/verify.js +26 -21
  180. package/dist/contracts/verify.js.map +1 -1
  181. package/dist/effects/call-graph.d.ts.map +1 -1
  182. package/dist/effects/call-graph.js +27 -4
  183. package/dist/effects/call-graph.js.map +1 -1
  184. package/dist/effects/effect-check.d.ts +10 -2
  185. package/dist/effects/effect-check.d.ts.map +1 -1
  186. package/dist/effects/effect-check.js +12 -7
  187. package/dist/effects/effect-check.js.map +1 -1
  188. package/dist/errors/error-catalog.d.ts +1 -1
  189. package/dist/errors/error-catalog.d.ts.map +1 -1
  190. package/dist/errors/error-catalog.js +119 -0
  191. package/dist/errors/error-catalog.js.map +1 -1
  192. package/dist/errors/structured-errors.d.ts +28 -1
  193. package/dist/errors/structured-errors.d.ts.map +1 -1
  194. package/dist/errors/structured-errors.js +9 -0
  195. package/dist/errors/structured-errors.js.map +1 -1
  196. package/dist/index.d.ts +20 -9
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +26 -10
  199. package/dist/index.js.map +1 -1
  200. package/dist/lint/lint.d.ts +9 -0
  201. package/dist/lint/lint.d.ts.map +1 -0
  202. package/dist/lint/lint.js +354 -0
  203. package/dist/lint/lint.js.map +1 -0
  204. package/dist/lint/warnings.d.ts +54 -0
  205. package/dist/lint/warnings.d.ts.map +1 -0
  206. package/dist/lint/warnings.js +39 -0
  207. package/dist/lint/warnings.js.map +1 -0
  208. package/dist/mcp/create-server.d.ts.map +1 -1
  209. package/dist/mcp/create-server.js +66 -5
  210. package/dist/mcp/create-server.js.map +1 -1
  211. package/dist/mcp/handlers.d.ts +21 -5
  212. package/dist/mcp/handlers.d.ts.map +1 -1
  213. package/dist/mcp/handlers.js +65 -15
  214. package/dist/mcp/handlers.js.map +1 -1
  215. package/dist/mcp/prompts.d.ts +17 -0
  216. package/dist/mcp/prompts.d.ts.map +1 -0
  217. package/dist/mcp/prompts.js +181 -0
  218. package/dist/mcp/prompts.js.map +1 -0
  219. package/dist/mcp/server.js +1 -4
  220. package/dist/mcp/server.js.map +1 -1
  221. package/dist/resolver/resolve.d.ts.map +1 -1
  222. package/dist/resolver/resolve.js +62 -16
  223. package/dist/resolver/resolve.js.map +1 -1
  224. package/dist/validator/node-validators.d.ts.map +1 -1
  225. package/dist/validator/node-validators.js +60 -5
  226. package/dist/validator/node-validators.js.map +1 -1
  227. package/package.json +4 -2
package/README.md CHANGED
@@ -36,11 +36,22 @@ Contract Verifier ── unproven? → StructuredError + counterexample → Agen
36
36
  - **WASM compilation** — Verified programs compile to WebAssembly via binaryen and run in Node.js.
37
37
  - **MCP interface** — All tools exposed via [Model Context Protocol](https://modelcontextprotocol.io/) for direct agent integration.
38
38
 
39
+ ## Execution Model
40
+
41
+ Edict compiles to **WebAssembly** and runs in a sandboxed VM. This is a deliberate security decision — not a limitation:
42
+
43
+ - **No ambient authority** — compiled WASM cannot access the filesystem, network, or OS unless the host explicitly provides those capabilities via the pluggable `EdictHostAdapter` interface
44
+ - **Compile-time capability declaration** — the effect system (`io`, `reads`, `writes`, `fails`) lets the host inspect what a program requires _before_ running it
45
+ - **Runtime enforcement** — `RunLimits` controls execution timeout, memory ceiling, and filesystem sandboxing
46
+ - **Defense-in-depth** — agent-generated code that runs immediately needs stronger isolation than human-reviewed code. The effect system + WASM sandbox + host adapter pattern provides exactly that
47
+
48
+ Host capabilities available through adapters: filesystem (sandboxed), HTTP, crypto (SHA-256, MD5, HMAC), environment variables, CLI arguments. New capabilities are added by extending `EdictHostAdapter`.
49
+
39
50
  ## Quick Start
40
51
 
41
52
  ```bash
42
53
  npm install
43
- npm test # 488 tests, ~1.5s
54
+ npm test # 1073 tests across 62 files
44
55
  npm run mcp # start MCP server (stdio transport)
45
56
  ```
46
57
 
@@ -49,18 +60,25 @@ npm run mcp # start MCP server (stdio transport)
49
60
  | Tool | Description |
50
61
  |---|---|
51
62
  | `edict_schema` | Returns the full AST JSON Schema — the spec for how to write programs |
52
- | `edict_examples` | Returns 10 example programs as JSON ASTs |
63
+ | `edict_version` | Returns compiler version and capability info |
64
+ | `edict_examples` | Returns 18 example programs as JSON ASTs |
53
65
  | `edict_validate` | Validates AST structure (field names, types, node kinds) |
54
66
  | `edict_check` | Full pipeline: validate → resolve names → type check → effect check → verify contracts |
55
67
  | `edict_compile` | Compiles a checked AST to WASM (returns base64-encoded binary) |
56
68
  | `edict_run` | Executes a compiled WASM binary, returns output and exit code |
69
+ | `edict_patch` | Applies targeted AST patches by nodeId and re-checks |
70
+ | `edict_errors` | Returns machine-readable catalog of all error types |
71
+ | `edict_lint` | Runs non-blocking quality analysis and returns warnings |
57
72
 
58
73
  ### MCP Resources
59
74
 
60
75
  | URI | Description |
61
76
  |---|---|
62
- | `edict://schema` | The AST JSON Schema |
77
+ | `edict://schema` | The full AST JSON Schema |
78
+ | `edict://schema/minimal` | Minimal schema variant for token-efficient bootstrap |
63
79
  | `edict://examples` | All example programs |
80
+ | `edict://errors` | Machine-readable error catalog |
81
+ | `edict://schema/patch` | JSON Schema for the AST patch protocol |
64
82
 
65
83
  ## Example Program
66
84
 
@@ -134,15 +152,23 @@ src/
134
152
  ├── effects/ # Effect checking (call-graph propagation)
135
153
  ├── contracts/ # Contract verification (Z3/SMT integration)
136
154
  ├── codegen/ # WASM code generation (binaryen)
137
- │ ├── codegen.ts # AST → WASM compilation
138
- │ ├── runner.ts # WASM execution (Node.js WebAssembly API)
139
- │ ├── builtins.ts # Built-in functions (print)
155
+ │ ├── codegen.ts # AST → WASM module orchestration
156
+ │ ├── compile-expr.ts # Expression compilation
157
+ │ ├── compile-*.ts # Specialized compilers (calls, data, match, scalars)
158
+ │ ├── runner.ts # WASM execution (Node.js WebAssembly API)
159
+ │ ├── host-adapter.ts # EdictHostAdapter interface
160
+ │ ├── closures.ts # Closure capture and compilation
161
+ │ ├── hof-generators.ts # Higher-order function WASM generators
140
162
  │ └── string-table.ts # String interning for WASM memory
141
- ├── mcp/ # MCP server (tools + resources)
163
+ ├── builtins/ # Builtin registry and domain-specific builtins
164
+ ├── compact/ # Compact AST format (token-efficient for agents)
165
+ ├── lint/ # Non-blocking quality warnings
166
+ ├── patch/ # Surgical AST patching by nodeId
167
+ ├── mcp/ # MCP server (tools + resources + prompts)
142
168
  └── errors/ # Structured error types
143
169
 
144
- tests/ # 488 tests across 21 files
145
- examples/ # 10 example programs as JSON ASTs
170
+ tests/ # 1073 tests across 62 files
171
+ examples/ # 18 example programs as JSON ASTs
146
172
  schema/ # Auto-generated JSON Schema
147
173
  ```
148
174
 
@@ -150,7 +176,7 @@ schema/ # Auto-generated JSON Schema
150
176
 
151
177
  | Type | Example |
152
178
  |---|---|
153
- | Basic | `Int`, `Float`, `String`, `Bool` |
179
+ | Basic | `Int`, `Int64`, `Float`, `String`, `Bool` |
154
180
  | Array | `Array<Int>` |
155
181
  | Option | `Option<String>` |
156
182
  | Result | `Result<String, String>` |
@@ -178,9 +204,9 @@ Pre/post conditions are verified at compile time using Z3:
178
204
  "kind": "post",
179
205
  "id": "post-001",
180
206
  "condition": {
181
- "kind": "binop", "op": ">",
182
- "left": { "kind": "ident", "name": "result" },
183
- "right": { "kind": "ident", "name": "x" }
207
+ "kind": "binop", "id": "binop-001", "op": ">",
208
+ "left": { "kind": "ident", "id": "ident-result-001", "name": "result" },
209
+ "right": { "kind": "ident", "id": "ident-x-001", "name": "x" }
184
210
  }
185
211
  }
186
212
  ```
@@ -24,6 +24,7 @@ export interface Import {
24
24
  id: string;
25
25
  module: string;
26
26
  names: string[];
27
+ types?: Record<string, TypeExpr>;
27
28
  }
28
29
  export type Definition = FunctionDef | TypeDef | RecordDef | EnumDef | ConstDef;
29
30
  /**
@@ -35,7 +36,7 @@ export interface FunctionDef {
35
36
  name: string;
36
37
  params: Param[];
37
38
  effects: Effect[];
38
- returnType: TypeExpr;
39
+ returnType?: TypeExpr;
39
40
  contracts: Contract[];
40
41
  body: Expression[];
41
42
  }
@@ -102,7 +103,7 @@ export interface Param {
102
103
  kind: "param";
103
104
  id: string;
104
105
  name: string;
105
- type: TypeExpr;
106
+ type?: TypeExpr;
106
107
  }
107
108
  /**
108
109
  * Pre/post contract on a function.
@@ -252,6 +253,6 @@ export declare const VALID_DEFINITION_KINDS: readonly ["fn", "type", "record", "
252
253
  export declare const VALID_EXPRESSION_KINDS: readonly ["literal", "ident", "binop", "unop", "call", "if", "let", "match", "array", "tuple_expr", "record_expr", "enum_constructor", "access", "lambda", "block", "string_interp"];
253
254
  export declare const VALID_TYPE_KINDS: readonly ["basic", "array", "option", "result", "unit_type", "refined", "fn_type", "named", "tuple"];
254
255
  export declare const VALID_PATTERN_KINDS: readonly ["literal_pattern", "wildcard", "binding", "constructor"];
255
- export declare const VALID_BASIC_TYPE_NAMES: readonly ["Int", "Float", "String", "Bool"];
256
+ export declare const VALID_BASIC_TYPE_NAMES: readonly ["Int", "Int64", "Float", "String", "Bool"];
256
257
  export declare const ALL_VALID_KINDS: readonly ["module", "import", "fn", "type", "record", "enum", "const", "param", "field", "variant", "pre", "post", "arm", "field_init", "literal", "ident", "binop", "unop", "call", "if", "let", "match", "array", "tuple_expr", "record_expr", "enum_constructor", "access", "lambda", "block", "string_interp", "basic", "array", "option", "result", "unit_type", "refined", "fn_type", "named", "tuple", "literal_pattern", "wildcard", "binding", "constructor"];
257
258
  //# sourceMappingURL=nodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"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"}
package/dist/ast/nodes.js CHANGED
@@ -74,6 +74,7 @@ export const VALID_PATTERN_KINDS = [
74
74
  ];
75
75
  export const VALID_BASIC_TYPE_NAMES = [
76
76
  "Int",
77
+ "Int64",
77
78
  "Float",
78
79
  "String",
79
80
  "Bool",
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AAiBvD,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC5C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,OAAO;CACD,CAAC;AA4LX,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACvD,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CACH,CAAC;AAYX,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC;AA2I/E,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;IACP,OAAO;IACP,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,eAAe;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,iBAAiB;IACjB,UAAU;IACV,SAAS;IACT,aAAa;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,QAAQ;IACR,QAAQ;IACR,GAAG,sBAAsB;IACzB,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,MAAM;IACN,KAAK;IACL,YAAY;IACZ,GAAG,sBAAsB;IACzB,GAAG,gBAAgB;IACnB,GAAG,mBAAmB;CAChB,CAAC"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AAiBvD,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC5C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,OAAO;CACD,CAAC;AA6LX,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACvD,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,SAAS;CACH,CAAC;AAYX,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,KAAK,EAAE,GAAG,CAAU,CAAC;AA2I/E,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,MAAM;IACN,OAAO;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;IACP,OAAO;IACP,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,eAAe;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,SAAS;IACT,SAAS;IACT,OAAO;IACP,OAAO;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,iBAAiB;IACjB,UAAU;IACV,SAAS;IACT,aAAa;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,KAAK;IACL,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,QAAQ;IACR,QAAQ;IACR,GAAG,sBAAsB;IACzB,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,MAAM;IACN,KAAK;IACL,YAAY;IACZ,GAAG,sBAAsB;IACzB,GAAG,gBAAgB;IACnB,GAAG,mBAAmB;CAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { TypeExpr } from "./types.js";
2
+ export declare const INT_TYPE: TypeExpr;
3
+ export declare const INT64_TYPE: TypeExpr;
4
+ export declare const FLOAT_TYPE: TypeExpr;
5
+ export declare const STRING_TYPE: TypeExpr;
6
+ export declare const BOOL_TYPE: TypeExpr;
7
+ export declare const UNKNOWN_TYPE: TypeExpr;
8
+ export declare const ARRAY_INT_TYPE: TypeExpr;
9
+ export declare const OPTION_INT_TYPE: TypeExpr;
10
+ export declare const RESULT_INT_TYPE: TypeExpr;
11
+ export declare const RESULT_STRING_TYPE: TypeExpr;
12
+ //# sourceMappingURL=type-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-constants.d.ts","sourceRoot":"","sources":["../../src/ast/type-constants.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,QAAyC,CAAC;AACjE,eAAO,MAAM,UAAU,EAAE,QAA2C,CAAC;AACrE,eAAO,MAAM,UAAU,EAAE,QAA2C,CAAC;AACrE,eAAO,MAAM,WAAW,EAAE,QAA4C,CAAC;AACvE,eAAO,MAAM,SAAS,EAAE,QAA0C,CAAC;AACnE,eAAO,MAAM,YAAY,EAAE,QAA6C,CAAC;AACzE,eAAO,MAAM,cAAc,EAAE,QAA+C,CAAC;AAC7E,eAAO,MAAM,eAAe,EAAE,QAA8C,CAAC;AAC7E,eAAO,MAAM,eAAe,EAAE,QAA0D,CAAC;AACzF,eAAO,MAAM,kBAAkB,EAAE,QAAgE,CAAC"}
@@ -0,0 +1,16 @@
1
+ // =============================================================================
2
+ // Shared Type Constants — Singleton TypeExpr instances
3
+ // =============================================================================
4
+ // Avoids duplicating the same type constant objects across modules.
5
+ // Import these instead of defining local copies.
6
+ export const INT_TYPE = { kind: "basic", name: "Int" };
7
+ export const INT64_TYPE = { kind: "basic", name: "Int64" };
8
+ export const FLOAT_TYPE = { kind: "basic", name: "Float" };
9
+ export const STRING_TYPE = { kind: "basic", name: "String" };
10
+ export const BOOL_TYPE = { kind: "basic", name: "Bool" };
11
+ export const UNKNOWN_TYPE = { kind: "named", name: "unknown" };
12
+ export const ARRAY_INT_TYPE = { kind: "array", element: INT_TYPE };
13
+ export const OPTION_INT_TYPE = { kind: "option", inner: INT_TYPE };
14
+ export const RESULT_INT_TYPE = { kind: "result", ok: INT_TYPE, err: INT_TYPE };
15
+ export const RESULT_STRING_TYPE = { kind: "result", ok: STRING_TYPE, err: STRING_TYPE };
16
+ //# sourceMappingURL=type-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-constants.js","sourceRoot":"","sources":["../../src/ast/type-constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;AAChF,oEAAoE;AACpE,iDAAiD;AAIjD,MAAM,CAAC,MAAM,QAAQ,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACjE,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrE,MAAM,CAAC,MAAM,WAAW,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACvE,MAAM,CAAC,MAAM,SAAS,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,YAAY,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC"}
@@ -7,7 +7,7 @@ export type TypeExpr = BasicType | ArrayType | OptionType | ResultType | UnitTyp
7
7
  */
8
8
  export interface BasicType {
9
9
  kind: "basic";
10
- name: "Int" | "Float" | "String" | "Bool";
10
+ name: "Int" | "Int64" | "Float" | "String" | "Bool";
11
11
  }
12
12
  /**
13
13
  * Homogeneous array type.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,QAAQ,GACd,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,QAAQ,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB;AAID,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,QAAQ,GACd,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,SAAS,GACT,SAAS,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,QAAQ,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,QAAQ,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACxB;AAID,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { EnumDef } from "../ast/nodes.js";
2
+ /**
3
+ * Built-in Option enum: None | Some(value: Int)
4
+ */
5
+ export declare const OPTION_ENUM_DEF: EnumDef;
6
+ /**
7
+ * Built-in Result enum: Ok(value: Int) | Err(error: Int)
8
+ */
9
+ export declare const RESULT_ENUM_DEF: EnumDef;
10
+ /** All built-in enum definitions. */
11
+ export declare const BUILTIN_ENUMS: readonly EnumDef[];
12
+ //# sourceMappingURL=builtin-enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-enums.d.ts","sourceRoot":"","sources":["../../src/builtins/builtin-enums.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAY7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAgB7B,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAAuC,CAAC"}
@@ -0,0 +1,45 @@
1
+ // =============================================================================
2
+ // Built-in Enum Definitions — shared across resolver, checker, and codegen
3
+ // =============================================================================
4
+ // Single source of truth for Option and Result enum structures.
5
+ // Any change here propagates to all pipeline stages automatically.
6
+ import { INT_TYPE } from "../ast/type-constants.js";
7
+ /**
8
+ * Built-in Option enum: None | Some(value: Int)
9
+ */
10
+ export const OPTION_ENUM_DEF = {
11
+ kind: "enum",
12
+ id: "__builtin_option",
13
+ name: "Option",
14
+ variants: [
15
+ { kind: "variant", id: "__builtin_option_none", name: "None", fields: [] },
16
+ {
17
+ kind: "variant", id: "__builtin_option_some", name: "Some", fields: [
18
+ { kind: "field", id: "__builtin_option_some_value", name: "value", type: INT_TYPE },
19
+ ],
20
+ },
21
+ ],
22
+ };
23
+ /**
24
+ * Built-in Result enum: Ok(value: Int) | Err(error: Int)
25
+ */
26
+ export const RESULT_ENUM_DEF = {
27
+ kind: "enum",
28
+ id: "__builtin_result",
29
+ name: "Result",
30
+ variants: [
31
+ {
32
+ kind: "variant", id: "__builtin_result_ok", name: "Ok", fields: [
33
+ { kind: "field", id: "__builtin_result_ok_value", name: "value", type: INT_TYPE },
34
+ ],
35
+ },
36
+ {
37
+ kind: "variant", id: "__builtin_result_err", name: "Err", fields: [
38
+ { kind: "field", id: "__builtin_result_err_error", name: "error", type: INT_TYPE },
39
+ ],
40
+ },
41
+ ],
42
+ };
43
+ /** All built-in enum definitions. */
44
+ export const BUILTIN_ENUMS = [OPTION_ENUM_DEF, RESULT_ENUM_DEF];
45
+ //# sourceMappingURL=builtin-enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-enums.js","sourceRoot":"","sources":["../../src/builtins/builtin-enums.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,gEAAgE;AAChE,mEAAmE;AAGnE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACpC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACN,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1E;YACI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;gBAChE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,6BAA6B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACtF;SACJ;KACJ;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACpC,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE;QACN;YACI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,2BAA2B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACpF;SACJ;QACD;YACI,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aACrF;SACJ;KACJ;CACJ,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAuB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { FunctionType } from "../ast/types.js";
2
+ import type { HostContext } from "./host-helpers.js";
3
+ import type binaryen from "binaryen";
4
+ /** Co-located builtin definition — type signature + implementation together. */
5
+ export interface BuiltinDef {
6
+ /** Builtin function name (e.g., "print", "array_map"). */
7
+ name: string;
8
+ /** Edict-level function type signature (includes effects, params, returnType). */
9
+ type: FunctionType;
10
+ /** Implementation: host-imported or WASM-native. */
11
+ impl: BuiltinImpl;
12
+ }
13
+ export type BuiltinImpl = {
14
+ kind: "host";
15
+ factory: (ctx: HostContext) => Function;
16
+ } | {
17
+ kind: "wasm";
18
+ generator: (mod: binaryen.Module) => void;
19
+ };
20
+ //# sourceMappingURL=builtin-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-types.d.ts","sourceRoot":"","sources":["../../src/builtins/builtin-types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACvB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,IAAI,EAAE,YAAY,CAAC;IACnB,oDAAoD;IACpD,IAAI,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ // =============================================================================
2
+ // Builtin type definitions — shared by registry and domain files
3
+ // =============================================================================
4
+ // Extracted to break the circular import between registry.ts ↔ domain files.
5
+ export {};
6
+ //# sourceMappingURL=builtin-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-types.js","sourceRoot":"","sources":["../../src/builtins/builtin-types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iEAAiE;AACjE,gFAAgF;AAChF,6EAA6E"}
@@ -0,0 +1,3 @@
1
+ export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./registry.js";
2
+ export type { BuiltinFunction } from "./registry.js";
3
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/builtins/builtins.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export from canonical registry for backwards compatibility
2
+ export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./registry.js";
3
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/builtins/builtins.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BuiltinDef } from "../builtin-types.js";
2
+ export declare const ARRAY_BUILTINS: BuiltinDef[];
3
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/builtins/domains/array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA2OtD,eAAO,MAAM,cAAc,EAAE,UAAU,EAAqD,CAAC"}
@@ -0,0 +1,236 @@
1
+ // =============================================================================
2
+ // Array domain — host-imported array ops + WASM-native HOF builtins
3
+ // =============================================================================
4
+ import { INT_TYPE, BOOL_TYPE, ARRAY_INT_TYPE, OPTION_INT_TYPE } from "../../ast/type-constants.js";
5
+ import { getMemoryBuffer, writeArrayResult } from "../host-helpers.js";
6
+ import { generateArrayMap, generateArrayFilter, generateArrayReduce, generateArrayFind, generateArraySort } from "../../codegen/hof-generators.js";
7
+ // ── Host-imported array builtins ────────────────────────────────────────────
8
+ const HOST_ARRAY_BUILTINS = [
9
+ {
10
+ name: "array_length",
11
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
12
+ impl: {
13
+ kind: "host",
14
+ factory: (ctx) => (arrPtr) => {
15
+ return new DataView(getMemoryBuffer(ctx.state)).getInt32(arrPtr, true);
16
+ },
17
+ },
18
+ },
19
+ {
20
+ name: "array_get",
21
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: INT_TYPE },
22
+ impl: {
23
+ kind: "host",
24
+ factory: (ctx) => (arrPtr, index) => {
25
+ const view = new DataView(getMemoryBuffer(ctx.state));
26
+ const length = view.getInt32(arrPtr, true);
27
+ if (index < 0 || index >= length)
28
+ return 0;
29
+ return view.getInt32(arrPtr + 4 + index * 4, true);
30
+ },
31
+ },
32
+ },
33
+ {
34
+ name: "array_set",
35
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE, INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
36
+ impl: {
37
+ kind: "host",
38
+ factory: (ctx) => (arrPtr, index, value) => {
39
+ const view = new DataView(getMemoryBuffer(ctx.state));
40
+ const length = view.getInt32(arrPtr, true);
41
+ const elems = [];
42
+ for (let i = 0; i < length; i++) {
43
+ elems.push(i === index ? value : view.getInt32(arrPtr + 4 + i * 4, true));
44
+ }
45
+ return writeArrayResult(ctx.state, elems);
46
+ },
47
+ },
48
+ },
49
+ {
50
+ name: "array_push",
51
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
52
+ impl: {
53
+ kind: "host",
54
+ factory: (ctx) => (arrPtr, value) => {
55
+ const view = new DataView(getMemoryBuffer(ctx.state));
56
+ const length = view.getInt32(arrPtr, true);
57
+ const elems = [];
58
+ for (let i = 0; i < length; i++) {
59
+ elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
60
+ }
61
+ elems.push(value);
62
+ return writeArrayResult(ctx.state, elems);
63
+ },
64
+ },
65
+ },
66
+ {
67
+ name: "array_pop",
68
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
69
+ impl: {
70
+ kind: "host",
71
+ factory: (ctx) => (arrPtr) => {
72
+ const view = new DataView(getMemoryBuffer(ctx.state));
73
+ const length = view.getInt32(arrPtr, true);
74
+ if (length === 0)
75
+ return writeArrayResult(ctx.state, []);
76
+ const elems = [];
77
+ for (let i = 0; i < length - 1; i++) {
78
+ elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
79
+ }
80
+ return writeArrayResult(ctx.state, elems);
81
+ },
82
+ },
83
+ },
84
+ {
85
+ name: "array_concat",
86
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE, ARRAY_INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
87
+ impl: {
88
+ kind: "host",
89
+ factory: (ctx) => (aPtr, bPtr) => {
90
+ const view = new DataView(getMemoryBuffer(ctx.state));
91
+ const aLen = view.getInt32(aPtr, true);
92
+ const bLen = view.getInt32(bPtr, true);
93
+ const elems = [];
94
+ for (let i = 0; i < aLen; i++) {
95
+ elems.push(view.getInt32(aPtr + 4 + i * 4, true));
96
+ }
97
+ for (let i = 0; i < bLen; i++) {
98
+ elems.push(view.getInt32(bPtr + 4 + i * 4, true));
99
+ }
100
+ return writeArrayResult(ctx.state, elems);
101
+ },
102
+ },
103
+ },
104
+ {
105
+ name: "array_slice",
106
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE, INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
107
+ impl: {
108
+ kind: "host",
109
+ factory: (ctx) => (arrPtr, start, end) => {
110
+ const view = new DataView(getMemoryBuffer(ctx.state));
111
+ const length = view.getInt32(arrPtr, true);
112
+ const s = Math.max(0, Math.min(start, length));
113
+ const e = Math.max(s, Math.min(end, length));
114
+ const elems = [];
115
+ for (let i = s; i < e; i++) {
116
+ elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
117
+ }
118
+ return writeArrayResult(ctx.state, elems);
119
+ },
120
+ },
121
+ },
122
+ {
123
+ name: "array_isEmpty",
124
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
125
+ impl: {
126
+ kind: "host",
127
+ factory: (ctx) => (arrPtr) => {
128
+ return new DataView(getMemoryBuffer(ctx.state)).getInt32(arrPtr, true) === 0 ? 1 : 0;
129
+ },
130
+ },
131
+ },
132
+ {
133
+ name: "array_contains",
134
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE, INT_TYPE], effects: ["pure"], returnType: BOOL_TYPE },
135
+ impl: {
136
+ kind: "host",
137
+ factory: (ctx) => (arrPtr, value) => {
138
+ const view = new DataView(getMemoryBuffer(ctx.state));
139
+ const length = view.getInt32(arrPtr, true);
140
+ for (let i = 0; i < length; i++) {
141
+ if (view.getInt32(arrPtr + 4 + i * 4, true) === value)
142
+ return 1;
143
+ }
144
+ return 0;
145
+ },
146
+ },
147
+ },
148
+ {
149
+ name: "array_reverse",
150
+ type: { kind: "fn_type", params: [ARRAY_INT_TYPE], effects: ["pure"], returnType: ARRAY_INT_TYPE },
151
+ impl: {
152
+ kind: "host",
153
+ factory: (ctx) => (arrPtr) => {
154
+ const view = new DataView(getMemoryBuffer(ctx.state));
155
+ const length = view.getInt32(arrPtr, true);
156
+ const elems = [];
157
+ for (let i = length - 1; i >= 0; i--) {
158
+ elems.push(view.getInt32(arrPtr + 4 + i * 4, true));
159
+ }
160
+ return writeArrayResult(ctx.state, elems);
161
+ },
162
+ },
163
+ },
164
+ ];
165
+ // ── WASM-native HOF builtins ────────────────────────────────────────────────
166
+ const WASM_ARRAY_BUILTINS = [
167
+ {
168
+ name: "array_map",
169
+ type: {
170
+ kind: "fn_type",
171
+ params: [
172
+ ARRAY_INT_TYPE,
173
+ { kind: "fn_type", params: [INT_TYPE], effects: [], returnType: INT_TYPE },
174
+ ],
175
+ effects: ["pure"],
176
+ returnType: ARRAY_INT_TYPE,
177
+ },
178
+ impl: { kind: "wasm", generator: generateArrayMap },
179
+ },
180
+ {
181
+ name: "array_filter",
182
+ type: {
183
+ kind: "fn_type",
184
+ params: [
185
+ ARRAY_INT_TYPE,
186
+ { kind: "fn_type", params: [INT_TYPE], effects: [], returnType: BOOL_TYPE },
187
+ ],
188
+ effects: ["pure"],
189
+ returnType: ARRAY_INT_TYPE,
190
+ },
191
+ impl: { kind: "wasm", generator: generateArrayFilter },
192
+ },
193
+ {
194
+ name: "array_reduce",
195
+ type: {
196
+ kind: "fn_type",
197
+ params: [
198
+ ARRAY_INT_TYPE,
199
+ INT_TYPE,
200
+ { kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: [], returnType: INT_TYPE },
201
+ ],
202
+ effects: ["pure"],
203
+ returnType: INT_TYPE,
204
+ },
205
+ impl: { kind: "wasm", generator: generateArrayReduce },
206
+ },
207
+ {
208
+ name: "array_find",
209
+ type: {
210
+ kind: "fn_type",
211
+ params: [
212
+ ARRAY_INT_TYPE,
213
+ { kind: "fn_type", params: [INT_TYPE], effects: [], returnType: BOOL_TYPE },
214
+ ],
215
+ effects: ["pure"],
216
+ returnType: OPTION_INT_TYPE,
217
+ },
218
+ impl: { kind: "wasm", generator: generateArrayFind },
219
+ },
220
+ {
221
+ name: "array_sort",
222
+ type: {
223
+ kind: "fn_type",
224
+ params: [
225
+ ARRAY_INT_TYPE,
226
+ { kind: "fn_type", params: [INT_TYPE, INT_TYPE], effects: [], returnType: INT_TYPE },
227
+ ],
228
+ effects: ["pure"],
229
+ returnType: ARRAY_INT_TYPE,
230
+ },
231
+ impl: { kind: "wasm", generator: generateArraySort },
232
+ },
233
+ ];
234
+ // ── Combined export ─────────────────────────────────────────────────────────
235
+ export const ARRAY_BUILTINS = [...HOST_ARRAY_BUILTINS, ...WASM_ARRAY_BUILTINS];
236
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/builtins/domains/array.ts"],"names":[],"mappings":"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"}