edict-lang 1.5.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.
- package/README.md +39 -13
- package/dist/ast/nodes.d.ts +1 -0
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/ast/nodes.js.map +1 -1
- package/dist/builtins/builtin-types.d.ts +20 -0
- package/dist/builtins/builtin-types.d.ts.map +1 -0
- package/dist/builtins/builtin-types.js +6 -0
- package/dist/builtins/builtin-types.js.map +1 -0
- package/dist/builtins/builtins.d.ts +2 -23
- package/dist/builtins/builtins.d.ts.map +1 -1
- package/dist/builtins/builtins.js +2 -690
- package/dist/builtins/builtins.js.map +1 -1
- package/dist/builtins/domains/array.d.ts +3 -0
- package/dist/builtins/domains/array.d.ts.map +1 -0
- package/dist/builtins/domains/array.js +236 -0
- package/dist/builtins/domains/array.js.map +1 -0
- package/dist/builtins/domains/core.d.ts +3 -0
- package/dist/builtins/domains/core.d.ts.map +1 -0
- package/dist/builtins/domains/core.js +45 -0
- package/dist/builtins/domains/core.js.map +1 -0
- package/dist/builtins/domains/crypto.d.ts +3 -0
- package/dist/builtins/domains/crypto.d.ts.map +1 -0
- package/dist/builtins/domains/crypto.js +49 -0
- package/dist/builtins/domains/crypto.js.map +1 -0
- package/dist/builtins/domains/datetime.d.ts +3 -0
- package/dist/builtins/domains/datetime.d.ts.map +1 -0
- package/dist/builtins/domains/datetime.js +45 -0
- package/dist/builtins/domains/datetime.js.map +1 -0
- package/dist/builtins/domains/http.d.ts +3 -0
- package/dist/builtins/domains/http.d.ts.map +1 -0
- package/dist/builtins/domains/http.js +55 -0
- package/dist/builtins/domains/http.js.map +1 -0
- package/dist/builtins/domains/int64.d.ts +3 -0
- package/dist/builtins/domains/int64.d.ts.map +1 -0
- package/dist/builtins/domains/int64.js +31 -0
- package/dist/builtins/domains/int64.js.map +1 -0
- package/dist/builtins/domains/io.d.ts +3 -0
- package/dist/builtins/domains/io.d.ts.map +1 -0
- package/dist/builtins/domains/io.js +79 -0
- package/dist/builtins/domains/io.js.map +1 -0
- package/dist/builtins/domains/json.d.ts +3 -0
- package/dist/builtins/domains/json.d.ts.map +1 -0
- package/dist/builtins/domains/json.js +47 -0
- package/dist/builtins/domains/json.js.map +1 -0
- package/dist/builtins/domains/math.d.ts +3 -0
- package/dist/builtins/domains/math.d.ts.map +1 -0
- package/dist/builtins/domains/math.js +47 -0
- package/dist/builtins/domains/math.js.map +1 -0
- package/dist/builtins/domains/option.d.ts +3 -0
- package/dist/builtins/domains/option.d.ts.map +1 -0
- package/dist/builtins/domains/option.js +56 -0
- package/dist/builtins/domains/option.js.map +1 -0
- package/dist/builtins/domains/random.d.ts +3 -0
- package/dist/builtins/domains/random.d.ts.map +1 -0
- package/dist/builtins/domains/random.js +50 -0
- package/dist/builtins/domains/random.js.map +1 -0
- package/dist/builtins/domains/regex.d.ts +3 -0
- package/dist/builtins/domains/regex.d.ts.map +1 -0
- package/dist/builtins/domains/regex.js +69 -0
- package/dist/builtins/domains/regex.js.map +1 -0
- package/dist/builtins/domains/result.d.ts +3 -0
- package/dist/builtins/domains/result.d.ts.map +1 -0
- package/dist/builtins/domains/result.js +84 -0
- package/dist/builtins/domains/result.js.map +1 -0
- package/dist/builtins/domains/string.d.ts +3 -0
- package/dist/builtins/domains/string.d.ts.map +1 -0
- package/dist/builtins/domains/string.js +139 -0
- package/dist/builtins/domains/string.js.map +1 -0
- package/dist/builtins/domains/type-conversion.d.ts +3 -0
- package/dist/builtins/domains/type-conversion.d.ts.map +1 -0
- package/dist/builtins/domains/type-conversion.js +42 -0
- package/dist/builtins/domains/type-conversion.js.map +1 -0
- package/dist/builtins/host-helpers.d.ts +66 -0
- package/dist/builtins/host-helpers.d.ts.map +1 -0
- package/dist/builtins/host-helpers.js +127 -0
- package/dist/builtins/host-helpers.js.map +1 -0
- package/dist/builtins/registry.d.ts +48 -0
- package/dist/builtins/registry.d.ts.map +1 -0
- package/dist/builtins/registry.js +118 -0
- package/dist/builtins/registry.js.map +1 -0
- package/dist/check.d.ts +9 -2
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +30 -9
- package/dist/check.js.map +1 -1
- package/dist/checker/check.d.ts +18 -1
- package/dist/checker/check.d.ts.map +1 -1
- package/dist/checker/check.js +88 -82
- package/dist/checker/check.js.map +1 -1
- package/dist/codegen/codegen.d.ts +4 -9
- package/dist/codegen/codegen.d.ts.map +1 -1
- package/dist/codegen/codegen.js +50 -171
- package/dist/codegen/codegen.js.map +1 -1
- package/dist/codegen/compile-calls.d.ts.map +1 -1
- package/dist/codegen/compile-calls.js +36 -6
- package/dist/codegen/compile-calls.js.map +1 -1
- package/dist/codegen/compile-data.js +1 -1
- package/dist/codegen/compile-data.js.map +1 -1
- package/dist/codegen/compile-expr.d.ts +10 -0
- package/dist/codegen/compile-expr.d.ts.map +1 -0
- package/dist/codegen/compile-expr.js +156 -0
- package/dist/codegen/compile-expr.js.map +1 -0
- package/dist/codegen/compile-match.js +1 -1
- package/dist/codegen/compile-match.js.map +1 -1
- package/dist/codegen/compile-scalars.d.ts.map +1 -1
- package/dist/codegen/compile-scalars.js +9 -8
- package/dist/codegen/compile-scalars.js.map +1 -1
- package/dist/codegen/imports.d.ts +4 -1
- package/dist/codegen/imports.d.ts.map +1 -1
- package/dist/codegen/imports.js +4 -1
- package/dist/codegen/imports.js.map +1 -1
- package/dist/codegen/runner.d.ts +1 -1
- package/dist/codegen/runner.d.ts.map +1 -1
- package/dist/codegen/runner.js +3 -2
- package/dist/codegen/runner.js.map +1 -1
- package/dist/codegen/types.d.ts +5 -0
- package/dist/codegen/types.d.ts.map +1 -1
- package/dist/codegen/types.js.map +1 -1
- package/dist/compact/expand.d.ts.map +1 -1
- package/dist/compact/expand.js +1 -0
- package/dist/compact/expand.js.map +1 -1
- package/dist/compile.js +1 -1
- package/dist/compile.js.map +1 -1
- package/dist/contracts/verify.d.ts +10 -2
- package/dist/contracts/verify.d.ts.map +1 -1
- package/dist/contracts/verify.js +26 -21
- package/dist/contracts/verify.js.map +1 -1
- package/dist/effects/call-graph.d.ts.map +1 -1
- package/dist/effects/call-graph.js +21 -2
- package/dist/effects/call-graph.js.map +1 -1
- package/dist/effects/effect-check.d.ts +10 -2
- package/dist/effects/effect-check.d.ts.map +1 -1
- package/dist/effects/effect-check.js +12 -7
- package/dist/effects/effect-check.js.map +1 -1
- package/dist/errors/structured-errors.d.ts +22 -0
- package/dist/errors/structured-errors.d.ts.map +1 -1
- package/dist/errors/structured-errors.js +6 -0
- package/dist/errors/structured-errors.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/create-server.js +1 -1
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/handlers.d.ts +3 -1
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +12 -4
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/resolver/resolve.d.ts.map +1 -1
- package/dist/resolver/resolve.js +40 -8
- package/dist/resolver/resolve.js.map +1 -1
- package/dist/validator/node-validators.d.ts.map +1 -1
- package/dist/validator/node-validators.js +26 -0
- package/dist/validator/node-validators.js.map +1 -1
- package/package.json +1 -1
- package/dist/codegen/host-functions.d.ts +0 -35
- package/dist/codegen/host-functions.d.ts.map +0 -1
- package/dist/codegen/host-functions.js +0 -680
- package/dist/codegen/host-functions.js.map +0 -1
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 #
|
|
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
|
-
| `
|
|
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
|
|
138
|
-
│ ├──
|
|
139
|
-
│ ├──
|
|
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
|
-
├──
|
|
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/ #
|
|
145
|
-
examples/ #
|
|
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
|
```
|
package/dist/ast/nodes.d.ts
CHANGED
package/dist/ast/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC;AAElE,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAMjC,CAAC;AAMX;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/ast/nodes.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/nodes.js.map
CHANGED
|
@@ -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;
|
|
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,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"}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
/** Edict-level function type signature (includes effects, params, returnType) */
|
|
4
|
-
type: FunctionType;
|
|
5
|
-
/** WASM import: [module, base] names */
|
|
6
|
-
wasmImport: [string, string];
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* All built-in functions.
|
|
10
|
-
*
|
|
11
|
-
* `print` takes a String and returns a String (the value printed).
|
|
12
|
-
* At the WASM level, it's imported as host.print(ptr, len) → ptr
|
|
13
|
-
* (returns the same pointer for passthrough).
|
|
14
|
-
*/
|
|
15
|
-
export declare const BUILTIN_FUNCTIONS: ReadonlyMap<string, BuiltinFunction>;
|
|
16
|
-
/**
|
|
17
|
-
* Check if a name refers to a built-in function.
|
|
18
|
-
*/
|
|
19
|
-
export declare function isBuiltin(name: string): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Get the built-in function definition, or undefined.
|
|
22
|
-
*/
|
|
23
|
-
export declare function getBuiltin(name: string): BuiltinFunction | undefined;
|
|
1
|
+
export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./registry.js";
|
|
2
|
+
export type { BuiltinFunction } from "./registry.js";
|
|
24
3
|
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/builtins/builtins.ts"],"names":[],"mappings":"
|
|
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"}
|