edict-lang 1.2.0 → 1.5.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 (141) hide show
  1. package/dist/ast/nodes.d.ts +3 -3
  2. package/dist/ast/nodes.d.ts.map +1 -1
  3. package/dist/ast/nodes.js +1 -0
  4. package/dist/ast/nodes.js.map +1 -1
  5. package/dist/ast/type-constants.d.ts +12 -0
  6. package/dist/ast/type-constants.d.ts.map +1 -0
  7. package/dist/ast/type-constants.js +16 -0
  8. package/dist/ast/type-constants.js.map +1 -0
  9. package/dist/ast/types.d.ts +1 -1
  10. package/dist/ast/types.d.ts.map +1 -1
  11. package/dist/builtins/builtin-enums.d.ts +12 -0
  12. package/dist/builtins/builtin-enums.d.ts.map +1 -0
  13. package/dist/builtins/builtin-enums.js +45 -0
  14. package/dist/builtins/builtin-enums.js.map +1 -0
  15. package/dist/builtins/builtins.d.ts +24 -0
  16. package/dist/builtins/builtins.d.ts.map +1 -0
  17. package/dist/builtins/builtins.js +691 -0
  18. package/dist/builtins/builtins.js.map +1 -0
  19. package/dist/checker/check.d.ts.map +1 -1
  20. package/dist/checker/check.js +81 -38
  21. package/dist/checker/check.js.map +1 -1
  22. package/dist/checker/type-env.d.ts +2 -0
  23. package/dist/checker/type-env.d.ts.map +1 -1
  24. package/dist/checker/type-env.js +9 -0
  25. package/dist/checker/type-env.js.map +1 -1
  26. package/dist/codegen/browser-host-adapter.d.ts +29 -0
  27. package/dist/codegen/browser-host-adapter.d.ts.map +1 -0
  28. package/dist/codegen/browser-host-adapter.js +51 -0
  29. package/dist/codegen/browser-host-adapter.js.map +1 -0
  30. package/dist/codegen/builtins.d.ts +2 -26
  31. package/dist/codegen/builtins.d.ts.map +1 -1
  32. package/dist/codegen/builtins.js +2 -341
  33. package/dist/codegen/builtins.js.map +1 -1
  34. package/dist/codegen/closures.d.ts +17 -0
  35. package/dist/codegen/closures.d.ts.map +1 -0
  36. package/dist/codegen/closures.js +140 -0
  37. package/dist/codegen/closures.js.map +1 -0
  38. package/dist/codegen/codegen.d.ts +11 -30
  39. package/dist/codegen/codegen.d.ts.map +1 -1
  40. package/dist/codegen/codegen.js +154 -982
  41. package/dist/codegen/codegen.js.map +1 -1
  42. package/dist/codegen/collect-strings.d.ts +4 -0
  43. package/dist/codegen/collect-strings.d.ts.map +1 -0
  44. package/dist/codegen/collect-strings.js +76 -0
  45. package/dist/codegen/collect-strings.js.map +1 -0
  46. package/dist/codegen/compile-calls.d.ts +10 -0
  47. package/dist/codegen/compile-calls.d.ts.map +1 -0
  48. package/dist/codegen/compile-calls.js +344 -0
  49. package/dist/codegen/compile-calls.js.map +1 -0
  50. package/dist/codegen/compile-data.d.ts +22 -0
  51. package/dist/codegen/compile-data.d.ts.map +1 -0
  52. package/dist/codegen/compile-data.js +243 -0
  53. package/dist/codegen/compile-data.js.map +1 -0
  54. package/dist/codegen/compile-match.d.ts +7 -0
  55. package/dist/codegen/compile-match.d.ts.map +1 -0
  56. package/dist/codegen/compile-match.js +195 -0
  57. package/dist/codegen/compile-match.js.map +1 -0
  58. package/dist/codegen/compile-scalars.d.ts +25 -0
  59. package/dist/codegen/compile-scalars.d.ts.map +1 -0
  60. package/dist/codegen/compile-scalars.js +210 -0
  61. package/dist/codegen/compile-scalars.js.map +1 -0
  62. package/dist/codegen/hof-generators.d.ts +39 -0
  63. package/dist/codegen/hof-generators.d.ts.map +1 -0
  64. package/dist/codegen/hof-generators.js +336 -0
  65. package/dist/codegen/hof-generators.js.map +1 -0
  66. package/dist/codegen/host-adapter.d.ts +44 -0
  67. package/dist/codegen/host-adapter.d.ts.map +1 -0
  68. package/dist/codegen/host-adapter.js +9 -0
  69. package/dist/codegen/host-adapter.js.map +1 -0
  70. package/dist/codegen/host-functions.d.ts +35 -0
  71. package/dist/codegen/host-functions.d.ts.map +1 -0
  72. package/dist/codegen/host-functions.js +680 -0
  73. package/dist/codegen/host-functions.js.map +1 -0
  74. package/dist/codegen/imports.d.ts +12 -0
  75. package/dist/codegen/imports.d.ts.map +1 -0
  76. package/dist/codegen/imports.js +162 -0
  77. package/dist/codegen/imports.js.map +1 -0
  78. package/dist/codegen/node-host-adapter.d.ts +35 -0
  79. package/dist/codegen/node-host-adapter.d.ts.map +1 -0
  80. package/dist/codegen/node-host-adapter.js +155 -0
  81. package/dist/codegen/node-host-adapter.js.map +1 -0
  82. package/dist/codegen/runner.d.ts +36 -2
  83. package/dist/codegen/runner.d.ts.map +1 -1
  84. package/dist/codegen/runner.js +146 -271
  85. package/dist/codegen/runner.js.map +1 -1
  86. package/dist/codegen/types.d.ts +91 -0
  87. package/dist/codegen/types.d.ts.map +1 -0
  88. package/dist/codegen/types.js +63 -0
  89. package/dist/codegen/types.js.map +1 -0
  90. package/dist/compact/expand.d.ts +25 -0
  91. package/dist/compact/expand.d.ts.map +1 -0
  92. package/dist/compact/expand.js +198 -0
  93. package/dist/compact/expand.js.map +1 -0
  94. package/dist/compile.d.ts +2 -1
  95. package/dist/compile.d.ts.map +1 -1
  96. package/dist/compile.js +1 -1
  97. package/dist/compile.js.map +1 -1
  98. package/dist/contracts/translate.js.map +1 -1
  99. package/dist/effects/call-graph.d.ts.map +1 -1
  100. package/dist/effects/call-graph.js +6 -2
  101. package/dist/effects/call-graph.js.map +1 -1
  102. package/dist/errors/error-catalog.d.ts +1 -1
  103. package/dist/errors/error-catalog.d.ts.map +1 -1
  104. package/dist/errors/error-catalog.js +119 -0
  105. package/dist/errors/error-catalog.js.map +1 -1
  106. package/dist/errors/structured-errors.d.ts +6 -1
  107. package/dist/errors/structured-errors.d.ts.map +1 -1
  108. package/dist/errors/structured-errors.js +3 -0
  109. package/dist/errors/structured-errors.js.map +1 -1
  110. package/dist/index.d.ts +17 -9
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +24 -10
  113. package/dist/index.js.map +1 -1
  114. package/dist/lint/lint.d.ts +9 -0
  115. package/dist/lint/lint.d.ts.map +1 -0
  116. package/dist/lint/lint.js +354 -0
  117. package/dist/lint/lint.js.map +1 -0
  118. package/dist/lint/warnings.d.ts +54 -0
  119. package/dist/lint/warnings.d.ts.map +1 -0
  120. package/dist/lint/warnings.js +39 -0
  121. package/dist/lint/warnings.js.map +1 -0
  122. package/dist/mcp/create-server.d.ts.map +1 -1
  123. package/dist/mcp/create-server.js +66 -5
  124. package/dist/mcp/create-server.js.map +1 -1
  125. package/dist/mcp/handlers.d.ts +18 -4
  126. package/dist/mcp/handlers.d.ts.map +1 -1
  127. package/dist/mcp/handlers.js +54 -12
  128. package/dist/mcp/handlers.js.map +1 -1
  129. package/dist/mcp/prompts.d.ts +17 -0
  130. package/dist/mcp/prompts.d.ts.map +1 -0
  131. package/dist/mcp/prompts.js +181 -0
  132. package/dist/mcp/prompts.js.map +1 -0
  133. package/dist/mcp/server.js +1 -4
  134. package/dist/mcp/server.js.map +1 -1
  135. package/dist/resolver/resolve.d.ts.map +1 -1
  136. package/dist/resolver/resolve.js +22 -8
  137. package/dist/resolver/resolve.js.map +1 -1
  138. package/dist/validator/node-validators.d.ts.map +1 -1
  139. package/dist/validator/node-validators.js +34 -5
  140. package/dist/validator/node-validators.js.map +1 -1
  141. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-functions.js","sourceRoot":"","sources":["../../src/codegen/host-functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import binaryen from "binaryen";
2
+ import type { EdictModule } from "../ast/nodes.js";
3
+ export interface ImportSig {
4
+ paramTypes: binaryen.Type[];
5
+ returnType: binaryen.Type;
6
+ }
7
+ /**
8
+ * Scan function bodies for calls to imported names and infer WASM types
9
+ * from the function's declared param/return types at call sites.
10
+ */
11
+ export declare function inferImportSignatures(module: EdictModule, importedNames: Set<string>): Map<string, ImportSig>;
12
+ //# sourceMappingURL=imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../src/codegen/imports.ts"],"names":[],"mappings":"AAKA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,iBAAiB,CAAC;AAO5E,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5B,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;CAC7B;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAiBxB"}
@@ -0,0 +1,162 @@
1
+ // =============================================================================
2
+ // Import Signature Inference — infer WASM types for module-level imports
3
+ // =============================================================================
4
+ // Extracted from codegen.ts for modularity.
5
+ import binaryen from "binaryen";
6
+ import { edictTypeToWasm } from "./types.js";
7
+ // =============================================================================
8
+ // Public API
9
+ // =============================================================================
10
+ /**
11
+ * Scan function bodies for calls to imported names and infer WASM types
12
+ * from the function's declared param/return types at call sites.
13
+ */
14
+ export function inferImportSignatures(module, importedNames) {
15
+ const sigs = new Map();
16
+ // Initialize with defaults
17
+ for (const name of importedNames) {
18
+ sigs.set(name, { paramTypes: [], returnType: binaryen.i32 });
19
+ }
20
+ // Multi-pass: run inference until stable (handles ordering deps like pow→sqrt)
21
+ for (let pass = 0; pass < 3; pass++) {
22
+ for (const def of module.definitions) {
23
+ if (def.kind !== "fn")
24
+ continue;
25
+ inferFromExprs(def.body, def, sigs, importedNames);
26
+ }
27
+ }
28
+ return sigs;
29
+ }
30
+ // =============================================================================
31
+ // Internal helpers
32
+ // =============================================================================
33
+ function inferFromExprs(exprs, enclosingFn, sigs, importedNames) {
34
+ for (const expr of exprs) {
35
+ inferFromExpr(expr, enclosingFn, sigs, importedNames);
36
+ }
37
+ }
38
+ function inferFromExpr(expr, enclosingFn, sigs, importedNames) {
39
+ if (expr.kind === "call" && expr.fn.kind === "ident" && importedNames.has(expr.fn.name)) {
40
+ const name = expr.fn.name;
41
+ // Infer param types from arguments
42
+ const paramTypes = expr.args.map(arg => inferTypeFromExpr(arg, enclosingFn, sigs));
43
+ // If any param is f64, promote all i32 numeric params to f64
44
+ // (JSON can't distinguish 2.0 from 2; Edict doesn't mix int/float in one function)
45
+ const hasFloat = paramTypes.some(t => t === binaryen.f64);
46
+ if (hasFloat) {
47
+ for (let j = 0; j < paramTypes.length; j++) {
48
+ if (paramTypes[j] === binaryen.i32 && expr.args[j]?.kind === "literal" &&
49
+ typeof expr.args[j].value === "number") {
50
+ paramTypes[j] = binaryen.f64;
51
+ }
52
+ }
53
+ }
54
+ // Infer return type from the enclosing function's return type
55
+ // (if this call is the last expression in the function body, it determines the return type)
56
+ const lastExprInBody = enclosingFn.body.length > 0
57
+ ? enclosingFn.body[enclosingFn.body.length - 1]
58
+ : null;
59
+ const returnType = isExprOrContains(lastExprInBody, expr) && enclosingFn.returnType
60
+ ? edictTypeToWasm(enclosingFn.returnType)
61
+ : binaryen.i32;
62
+ sigs.set(name, { paramTypes, returnType });
63
+ }
64
+ // Recurse into sub-expressions
65
+ switch (expr.kind) {
66
+ case "binop":
67
+ inferFromExpr(expr.left, enclosingFn, sigs, importedNames);
68
+ inferFromExpr(expr.right, enclosingFn, sigs, importedNames);
69
+ break;
70
+ case "unop":
71
+ inferFromExpr(expr.operand, enclosingFn, sigs, importedNames);
72
+ break;
73
+ case "call":
74
+ inferFromExpr(expr.fn, enclosingFn, sigs, importedNames);
75
+ for (const a of expr.args)
76
+ inferFromExpr(a, enclosingFn, sigs, importedNames);
77
+ break;
78
+ case "if":
79
+ inferFromExpr(expr.condition, enclosingFn, sigs, importedNames);
80
+ inferFromExprs(expr.then, enclosingFn, sigs, importedNames);
81
+ if (expr.else)
82
+ inferFromExprs(expr.else, enclosingFn, sigs, importedNames);
83
+ break;
84
+ case "let":
85
+ inferFromExpr(expr.value, enclosingFn, sigs, importedNames);
86
+ break;
87
+ case "block":
88
+ inferFromExprs(expr.body, enclosingFn, sigs, importedNames);
89
+ break;
90
+ case "match":
91
+ inferFromExpr(expr.target, enclosingFn, sigs, importedNames);
92
+ for (const arm of expr.arms)
93
+ inferFromExprs(arm.body, enclosingFn, sigs, importedNames);
94
+ break;
95
+ case "lambda":
96
+ inferFromExprs(expr.body, enclosingFn, sigs, importedNames);
97
+ break;
98
+ case "array":
99
+ for (const el of expr.elements)
100
+ inferFromExpr(el, enclosingFn, sigs, importedNames);
101
+ break;
102
+ case "record_expr":
103
+ for (const f of expr.fields)
104
+ inferFromExpr(f.value, enclosingFn, sigs, importedNames);
105
+ break;
106
+ case "access":
107
+ inferFromExpr(expr.target, enclosingFn, sigs, importedNames);
108
+ break;
109
+ default: break;
110
+ }
111
+ }
112
+ /**
113
+ * Infer the WASM type of an expression from its AST structure.
114
+ * Used during import signature inference (before we have a FunctionContext).
115
+ */
116
+ function inferTypeFromExpr(expr, enclosingFn, sigs) {
117
+ if (expr.kind === "literal") {
118
+ if (expr.type)
119
+ return edictTypeToWasm(expr.type);
120
+ if (typeof expr.value === "number" && !Number.isInteger(expr.value))
121
+ return binaryen.f64;
122
+ return binaryen.i32;
123
+ }
124
+ if (expr.kind === "ident") {
125
+ const param = enclosingFn.params.find(p => p.name === expr.name);
126
+ if (param)
127
+ return edictTypeToWasm(param.type);
128
+ return binaryen.i32;
129
+ }
130
+ if (expr.kind === "binop") {
131
+ // Arithmetic result type follows left operand
132
+ const cmpOps = ["==", "!=", "<", ">", "<=", ">=", "and", "or", "implies"];
133
+ if (cmpOps.includes(expr.op))
134
+ return binaryen.i32;
135
+ return inferTypeFromExpr(expr.left, enclosingFn, sigs);
136
+ }
137
+ if (expr.kind === "call" && expr.fn.kind === "ident") {
138
+ // Check inferred import sigs first, then fn defs
139
+ if (sigs?.has(expr.fn.name)) {
140
+ return sigs.get(expr.fn.name).returnType;
141
+ }
142
+ // Check enclosing module's function definitions
143
+ return binaryen.i32;
144
+ }
145
+ return binaryen.i32;
146
+ }
147
+ /**
148
+ * Check if target expression is or contains the needle (by reference).
149
+ */
150
+ function isExprOrContains(target, needle) {
151
+ if (!target)
152
+ return false;
153
+ if (target === needle)
154
+ return true;
155
+ switch (target.kind) {
156
+ case "call": return target.args.some(a => isExprOrContains(a, needle)) || isExprOrContains(target.fn, needle);
157
+ case "binop": return isExprOrContains(target.left, needle) || isExprOrContains(target.right, needle);
158
+ case "unop": return isExprOrContains(target.operand, needle);
159
+ default: return false;
160
+ }
161
+ }
162
+ //# sourceMappingURL=imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../src/codegen/imports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { EdictHostAdapter } from "./host-adapter.js";
2
+ /**
3
+ * Node.js implementation of the Edict host adapter.
4
+ *
5
+ * Uses Node.js-specific APIs for crypto, HTTP, and filesystem operations.
6
+ * This is the default adapter used when no adapter is explicitly specified.
7
+ */
8
+ export declare class NodeHostAdapter implements EdictHostAdapter {
9
+ private readonly sandboxDir?;
10
+ constructor(sandboxDir?: string);
11
+ sha256(data: string): string;
12
+ md5(data: string): string;
13
+ hmac(algo: string, key: string, data: string): string;
14
+ fetch(url: string, method: string, body?: string): {
15
+ ok: boolean;
16
+ data: string;
17
+ };
18
+ readFile(path: string): {
19
+ ok: true;
20
+ data: string;
21
+ } | {
22
+ ok: false;
23
+ error: string;
24
+ };
25
+ writeFile(path: string, content: string): {
26
+ ok: true;
27
+ } | {
28
+ ok: false;
29
+ error: string;
30
+ };
31
+ env(name: string): string;
32
+ args(): string[];
33
+ exit(code: number): never;
34
+ }
35
+ //# sourceMappingURL=node-host-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-host-adapter.d.ts","sourceRoot":"","sources":["../../src/codegen/node-host-adapter.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAuE1D;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;gBAEzB,UAAU,CAAC,EAAE,MAAM;IAM/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAUrD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAMhF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAoBjF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAiBrF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzB,IAAI,IAAI,MAAM,EAAE;IAIhB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAG5B"}
@@ -0,0 +1,155 @@
1
+ // =============================================================================
2
+ // Node.js Host Adapter — platform-specific operations for Node.js runtime
3
+ // =============================================================================
4
+ // Extracted from the monolithic host-functions.ts. Uses Node.js APIs:
5
+ // - node:crypto (createHash, createHmac)
6
+ // - node:child_process (execFileSync for sync HTTP)
7
+ // - node:fs (readFileSync, writeFileSync)
8
+ // - node:path (resolve)
9
+ import { createHash, createHmac } from "node:crypto";
10
+ import { execFileSync } from "node:child_process";
11
+ import { readFileSync, writeFileSync } from "node:fs";
12
+ import { resolve as pathResolve } from "node:path";
13
+ /** Max response body size (1 MB) — prevents WASM memory overflow. */
14
+ const HTTP_MAX_RESPONSE_BYTES = 1_048_576;
15
+ /** Max file size (1 MB) — prevents WASM memory overflow. */
16
+ const IO_MAX_FILE_BYTES = 1_048_576;
17
+ /**
18
+ * Validate that a resolved path is inside the sandbox directory.
19
+ * Returns the resolved absolute path on success, or an error string.
20
+ */
21
+ function validateSandboxPath(rawPath, sandboxDir) {
22
+ const resolved = pathResolve(sandboxDir, rawPath);
23
+ if (!resolved.startsWith(sandboxDir)) {
24
+ return { ok: false, error: `path_outside_sandbox: ${rawPath}` };
25
+ }
26
+ return { ok: true, path: resolved };
27
+ }
28
+ /**
29
+ * Perform a synchronous HTTP request by spawning a child Node process.
30
+ * Returns `{ok, data}` — ok=true for 2xx responses, ok=false for errors.
31
+ */
32
+ function syncFetch(url, method, body) {
33
+ const script = `
34
+ (async () => {
35
+ try {
36
+ const url = process.env.__EDICT_URL;
37
+ const method = process.env.__EDICT_METHOD;
38
+ const body = process.env.__EDICT_BODY;
39
+ const opts = { method };
40
+ if (body !== undefined && body !== "") {
41
+ opts.headers = {"Content-Type": "application/json"};
42
+ opts.body = body;
43
+ }
44
+ const res = await fetch(url, opts);
45
+ let text = await res.text();
46
+ if (text.length > ${HTTP_MAX_RESPONSE_BYTES}) text = text.slice(0, ${HTTP_MAX_RESPONSE_BYTES});
47
+ if (!res.ok) {
48
+ process.stdout.write(JSON.stringify({ok: false, data: res.status + " " + text}));
49
+ } else {
50
+ process.stdout.write(JSON.stringify({ok: true, data: text}));
51
+ }
52
+ } catch (e) {
53
+ process.stdout.write(JSON.stringify({ok: false, data: e.message || String(e)}));
54
+ }
55
+ })();
56
+ `;
57
+ const env = {
58
+ ...process.env,
59
+ __EDICT_URL: url,
60
+ __EDICT_METHOD: method,
61
+ };
62
+ if (body !== undefined) {
63
+ env.__EDICT_BODY = body;
64
+ }
65
+ try {
66
+ const stdout = execFileSync(process.execPath, ["-e", script], {
67
+ timeout: 10_000,
68
+ env,
69
+ maxBuffer: HTTP_MAX_RESPONSE_BYTES + 1024, // room for JSON framing
70
+ });
71
+ return JSON.parse(stdout.toString("utf-8"));
72
+ }
73
+ catch {
74
+ return { ok: false, data: "Request timed out or process error" };
75
+ }
76
+ }
77
+ /**
78
+ * Node.js implementation of the Edict host adapter.
79
+ *
80
+ * Uses Node.js-specific APIs for crypto, HTTP, and filesystem operations.
81
+ * This is the default adapter used when no adapter is explicitly specified.
82
+ */
83
+ export class NodeHostAdapter {
84
+ sandboxDir;
85
+ constructor(sandboxDir) {
86
+ this.sandboxDir = sandboxDir;
87
+ }
88
+ // ── Crypto ──────────────────────────────────────────────────────────
89
+ sha256(data) {
90
+ return createHash("sha256").update(data).digest("hex");
91
+ }
92
+ md5(data) {
93
+ return createHash("md5").update(data).digest("hex");
94
+ }
95
+ hmac(algo, key, data) {
96
+ try {
97
+ return createHmac(algo, key).update(data).digest("hex");
98
+ }
99
+ catch {
100
+ return ""; // invalid algorithm → empty string
101
+ }
102
+ }
103
+ // ── HTTP ────────────────────────────────────────────────────────────
104
+ fetch(url, method, body) {
105
+ return syncFetch(url, method, body);
106
+ }
107
+ // ── IO ──────────────────────────────────────────────────────────────
108
+ readFile(path) {
109
+ if (!this.sandboxDir) {
110
+ return { ok: false, error: "filesystem_not_configured" };
111
+ }
112
+ const validation = validateSandboxPath(path, this.sandboxDir);
113
+ if (!validation.ok) {
114
+ return { ok: false, error: validation.error };
115
+ }
116
+ try {
117
+ let content = readFileSync(validation.path, "utf-8");
118
+ if (content.length > IO_MAX_FILE_BYTES) {
119
+ content = content.slice(0, IO_MAX_FILE_BYTES);
120
+ }
121
+ return { ok: true, data: content };
122
+ }
123
+ catch (e) {
124
+ const msg = e instanceof Error ? e.message : String(e);
125
+ return { ok: false, error: msg };
126
+ }
127
+ }
128
+ writeFile(path, content) {
129
+ if (!this.sandboxDir) {
130
+ return { ok: false, error: "filesystem_not_configured" };
131
+ }
132
+ const validation = validateSandboxPath(path, this.sandboxDir);
133
+ if (!validation.ok) {
134
+ return { ok: false, error: validation.error };
135
+ }
136
+ try {
137
+ writeFileSync(validation.path, content, "utf-8");
138
+ return { ok: true };
139
+ }
140
+ catch (e) {
141
+ const msg = e instanceof Error ? e.message : String(e);
142
+ return { ok: false, error: msg };
143
+ }
144
+ }
145
+ env(name) {
146
+ return process.env[name] ?? "";
147
+ }
148
+ args() {
149
+ return process.argv.slice(2);
150
+ }
151
+ exit(code) {
152
+ throw new Error(`edict_exit:${code}`);
153
+ }
154
+ }
155
+ //# sourceMappingURL=node-host-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-host-adapter.js","sourceRoot":"","sources":["../../src/codegen/node-host-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,15 @@
1
+ import type { EdictHostAdapter } from "./host-adapter.js";
2
+ /** Configuration for execution sandbox limits */
3
+ export interface RunLimits {
4
+ /** Max execution time in ms (default: 5000, min: 100) */
5
+ timeoutMs?: number;
6
+ /** Max WASM memory in MB (compile-time, default: 1) */
7
+ maxMemoryMb?: number;
8
+ /** Sandbox directory for file IO builtins. If unset, readFile/writeFile return Err. */
9
+ sandboxDir?: string;
10
+ /** Optional host adapter for platform-specific operations. Defaults to NodeHostAdapter. */
11
+ adapter?: EdictHostAdapter;
12
+ }
1
13
  export interface RunResult {
2
14
  /** Captured stdout output */
3
15
  output: string;
@@ -5,12 +17,34 @@ export interface RunResult {
5
17
  exitCode: number;
6
18
  /** Return value from main (if any) */
7
19
  returnValue?: number;
20
+ /** Runtime limit error, if execution was killed */
21
+ error?: "execution_timeout" | "execution_oom";
22
+ /** Limit values that were enforced */
23
+ limitInfo?: {
24
+ timeoutMs?: number;
25
+ maxMemoryMb?: number;
26
+ };
8
27
  }
9
28
  /**
10
- * Run a compiled Edict WASM binary.
29
+ * Run a compiled Edict WASM binary with sandbox limits.
30
+ *
31
+ * Spawns a worker thread and enforces a timeout. If execution exceeds
32
+ * the timeout, the worker is terminated and a structured error is returned.
33
+ *
34
+ * @param wasm - The WASM binary (Uint8Array from codegen)
35
+ * @param entryFn - Name of the function to call (default: "main")
36
+ * @param limits - Optional execution limits (timeout, memory)
37
+ */
38
+ export declare function run(wasm: Uint8Array, entryFn?: string, limits?: RunLimits): Promise<RunResult>;
39
+ /**
40
+ * Direct (in-process) WASM execution — no worker thread, no timeout.
41
+ *
42
+ * Used by the worker thread internally and available for tests
43
+ * that don't need sandbox limits.
11
44
  *
12
45
  * @param wasm - The WASM binary (Uint8Array from codegen)
13
46
  * @param entryFn - Name of the function to call (default: "main")
47
+ * @param limits - Optional execution limits (sandboxDir for file IO)
14
48
  */
15
- export declare function run(wasm: Uint8Array, entryFn?: string): Promise<RunResult>;
49
+ export declare function runDirect(wasm: Uint8Array, entryFn?: string, limits?: RunLimits): Promise<RunResult>;
16
50
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/codegen/runner.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,SAAS;IACtB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,GAAG,CACrB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,MAAe,GACzB,OAAO,CAAC,SAAS,CAAC,CAgXpB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/codegen/runner.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAwB1D,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACtB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,mBAAmB,GAAG,eAAe,CAAC;IAC9C,sCAAsC;IACtC,SAAS,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CACrB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,MAAe,EACxB,MAAM,GAAE,SAAc,GACvB,OAAO,CAAC,SAAS,CAAC,CA0GpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC3B,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,MAAe,EACxB,MAAM,GAAE,SAAc,GACvB,OAAO,CAAC,SAAS,CAAC,CAiDpB"}