@grimoirelabs/core 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.
- package/dist/builders/expressions.d.ts +33 -0
- package/dist/builders/expressions.d.ts.map +1 -0
- package/dist/builders/expressions.js +57 -0
- package/dist/builders/expressions.js.map +1 -0
- package/dist/builders/index.d.ts +44 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +32 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/spell-builder.d.ts +124 -0
- package/dist/builders/spell-builder.d.ts.map +1 -0
- package/dist/builders/spell-builder.js +299 -0
- package/dist/builders/spell-builder.js.map +1 -0
- package/dist/builders/step-builder.d.ts +212 -0
- package/dist/builders/step-builder.d.ts.map +1 -0
- package/dist/builders/step-builder.js +499 -0
- package/dist/builders/step-builder.js.map +1 -0
- package/dist/compiler/expression-parser.d.ts +14 -0
- package/dist/compiler/expression-parser.d.ts.map +1 -0
- package/dist/compiler/expression-parser.js +460 -0
- package/dist/compiler/expression-parser.js.map +1 -0
- package/dist/compiler/grimoire/ast.d.ts +450 -0
- package/dist/compiler/grimoire/ast.d.ts.map +1 -0
- package/dist/compiler/grimoire/ast.js +19 -0
- package/dist/compiler/grimoire/ast.js.map +1 -0
- package/dist/compiler/grimoire/errors.d.ts +65 -0
- package/dist/compiler/grimoire/errors.d.ts.map +1 -0
- package/dist/compiler/grimoire/errors.js +86 -0
- package/dist/compiler/grimoire/errors.js.map +1 -0
- package/dist/compiler/grimoire/index.d.ts +24 -0
- package/dist/compiler/grimoire/index.d.ts.map +1 -0
- package/dist/compiler/grimoire/index.js +63 -0
- package/dist/compiler/grimoire/index.js.map +1 -0
- package/dist/compiler/grimoire/parser.d.ts +135 -0
- package/dist/compiler/grimoire/parser.d.ts.map +1 -0
- package/dist/compiler/grimoire/parser.js +2148 -0
- package/dist/compiler/grimoire/parser.js.map +1 -0
- package/dist/compiler/grimoire/tokenizer.d.ts +59 -0
- package/dist/compiler/grimoire/tokenizer.d.ts.map +1 -0
- package/dist/compiler/grimoire/tokenizer.js +509 -0
- package/dist/compiler/grimoire/tokenizer.js.map +1 -0
- package/dist/compiler/grimoire/transformer.d.ts +71 -0
- package/dist/compiler/grimoire/transformer.d.ts.map +1 -0
- package/dist/compiler/grimoire/transformer.js +1011 -0
- package/dist/compiler/grimoire/transformer.js.map +1 -0
- package/dist/compiler/index.d.ts +45 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +97 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/ir-generator.d.ts +16 -0
- package/dist/compiler/ir-generator.d.ts.map +1 -0
- package/dist/compiler/ir-generator.js +997 -0
- package/dist/compiler/ir-generator.js.map +1 -0
- package/dist/compiler/validator.d.ts +15 -0
- package/dist/compiler/validator.d.ts.map +1 -0
- package/dist/compiler/validator.js +401 -0
- package/dist/compiler/validator.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/circuit-breaker.d.ts +59 -0
- package/dist/runtime/circuit-breaker.d.ts.map +1 -0
- package/dist/runtime/circuit-breaker.js +155 -0
- package/dist/runtime/circuit-breaker.js.map +1 -0
- package/dist/runtime/context.d.ts +92 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +219 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/error-classifier.d.ts +16 -0
- package/dist/runtime/error-classifier.d.ts.map +1 -0
- package/dist/runtime/error-classifier.js +38 -0
- package/dist/runtime/error-classifier.js.map +1 -0
- package/dist/runtime/expression-evaluator.d.ts +36 -0
- package/dist/runtime/expression-evaluator.d.ts.map +1 -0
- package/dist/runtime/expression-evaluator.js +391 -0
- package/dist/runtime/expression-evaluator.js.map +1 -0
- package/dist/runtime/index.d.ts +12 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/interpreter.d.ts +59 -0
- package/dist/runtime/interpreter.d.ts.map +1 -0
- package/dist/runtime/interpreter.js +414 -0
- package/dist/runtime/interpreter.js.map +1 -0
- package/dist/runtime/skills/registry.d.ts +11 -0
- package/dist/runtime/skills/registry.d.ts.map +1 -0
- package/dist/runtime/skills/registry.js +73 -0
- package/dist/runtime/skills/registry.js.map +1 -0
- package/dist/runtime/sqlite-state-store.d.ts +28 -0
- package/dist/runtime/sqlite-state-store.d.ts.map +1 -0
- package/dist/runtime/sqlite-state-store.js +180 -0
- package/dist/runtime/sqlite-state-store.js.map +1 -0
- package/dist/runtime/state-store.d.ts +52 -0
- package/dist/runtime/state-store.d.ts.map +1 -0
- package/dist/runtime/state-store.js +32 -0
- package/dist/runtime/state-store.js.map +1 -0
- package/dist/runtime/steps/action.d.ts +17 -0
- package/dist/runtime/steps/action.d.ts.map +1 -0
- package/dist/runtime/steps/action.js +430 -0
- package/dist/runtime/steps/action.js.map +1 -0
- package/dist/runtime/steps/advisory.d.ts +28 -0
- package/dist/runtime/steps/advisory.d.ts.map +1 -0
- package/dist/runtime/steps/advisory.js +209 -0
- package/dist/runtime/steps/advisory.js.map +1 -0
- package/dist/runtime/steps/compute.d.ts +9 -0
- package/dist/runtime/steps/compute.d.ts.map +1 -0
- package/dist/runtime/steps/compute.js +74 -0
- package/dist/runtime/steps/compute.js.map +1 -0
- package/dist/runtime/steps/conditional.d.ts +14 -0
- package/dist/runtime/steps/conditional.d.ts.map +1 -0
- package/dist/runtime/steps/conditional.js +58 -0
- package/dist/runtime/steps/conditional.js.map +1 -0
- package/dist/runtime/steps/emit.d.ts +9 -0
- package/dist/runtime/steps/emit.d.ts.map +1 -0
- package/dist/runtime/steps/emit.js +70 -0
- package/dist/runtime/steps/emit.js.map +1 -0
- package/dist/runtime/steps/halt.d.ts +9 -0
- package/dist/runtime/steps/halt.d.ts.map +1 -0
- package/dist/runtime/steps/halt.js +19 -0
- package/dist/runtime/steps/halt.js.map +1 -0
- package/dist/runtime/steps/loop.d.ts +14 -0
- package/dist/runtime/steps/loop.d.ts.map +1 -0
- package/dist/runtime/steps/loop.js +109 -0
- package/dist/runtime/steps/loop.js.map +1 -0
- package/dist/runtime/steps/parallel.d.ts +9 -0
- package/dist/runtime/steps/parallel.d.ts.map +1 -0
- package/dist/runtime/steps/parallel.js +87 -0
- package/dist/runtime/steps/parallel.js.map +1 -0
- package/dist/runtime/steps/pipeline.d.ts +9 -0
- package/dist/runtime/steps/pipeline.d.ts.map +1 -0
- package/dist/runtime/steps/pipeline.js +125 -0
- package/dist/runtime/steps/pipeline.js.map +1 -0
- package/dist/runtime/steps/try.d.ts +13 -0
- package/dist/runtime/steps/try.d.ts.map +1 -0
- package/dist/runtime/steps/try.js +222 -0
- package/dist/runtime/steps/try.js.map +1 -0
- package/dist/runtime/steps/wait.d.ts +9 -0
- package/dist/runtime/steps/wait.d.ts.map +1 -0
- package/dist/runtime/steps/wait.js +38 -0
- package/dist/runtime/steps/wait.js.map +1 -0
- package/dist/types/actions.d.ts +162 -0
- package/dist/types/actions.d.ts.map +1 -0
- package/dist/types/actions.js +5 -0
- package/dist/types/actions.js.map +1 -0
- package/dist/types/execution.d.ts +276 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/execution.js +5 -0
- package/dist/types/execution.js.map +1 -0
- package/dist/types/expressions.d.ts +100 -0
- package/dist/types/expressions.d.ts.map +1 -0
- package/dist/types/expressions.js +48 -0
- package/dist/types/expressions.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/ir.d.ts +187 -0
- package/dist/types/ir.d.ts.map +1 -0
- package/dist/types/ir.js +5 -0
- package/dist/types/ir.js.map +1 -0
- package/dist/types/policy.d.ts +123 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/policy.js +5 -0
- package/dist/types/policy.js.map +1 -0
- package/dist/types/primitives.d.ts +76 -0
- package/dist/types/primitives.d.ts.map +1 -0
- package/dist/types/primitives.js +10 -0
- package/dist/types/primitives.js.map +1 -0
- package/dist/types/steps.d.ts +226 -0
- package/dist/types/steps.d.ts.map +1 -0
- package/dist/types/steps.js +5 -0
- package/dist/types/steps.js.map +1 -0
- package/dist/venues/index.d.ts +6 -0
- package/dist/venues/index.d.ts.map +1 -0
- package/dist/venues/index.js +26 -0
- package/dist/venues/index.js.map +1 -0
- package/dist/venues/types.d.ts +40 -0
- package/dist/venues/types.d.ts.map +1 -0
- package/dist/venues/types.js +5 -0
- package/dist/venues/types.js.map +1 -0
- package/dist/wallet/executor.d.ts +109 -0
- package/dist/wallet/executor.d.ts.map +1 -0
- package/dist/wallet/executor.js +354 -0
- package/dist/wallet/executor.js.map +1 -0
- package/dist/wallet/index.d.ts +14 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +13 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/keystore.d.ts +44 -0
- package/dist/wallet/keystore.d.ts.map +1 -0
- package/dist/wallet/keystore.js +296 -0
- package/dist/wallet/keystore.js.map +1 -0
- package/dist/wallet/provider.d.ts +111 -0
- package/dist/wallet/provider.d.ts.map +1 -0
- package/dist/wallet/provider.js +309 -0
- package/dist/wallet/provider.js.map +1 -0
- package/dist/wallet/tx-builder.d.ts +85 -0
- package/dist/wallet/tx-builder.d.ts.map +1 -0
- package/dist/wallet/tx-builder.js +290 -0
- package/dist/wallet/tx-builder.js.map +1 -0
- package/dist/wallet/types.d.ts +116 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/dist/wallet/types.js +86 -0
- package/dist/wallet/types.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Evaluator
|
|
3
|
+
* Evaluates Expression IR nodes to concrete values
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Evaluate an expression synchronously (for non-async expressions)
|
|
7
|
+
*/
|
|
8
|
+
export function evaluate(expr, ctx) {
|
|
9
|
+
switch (expr.kind) {
|
|
10
|
+
case "literal":
|
|
11
|
+
return expr.value;
|
|
12
|
+
case "param": {
|
|
13
|
+
const value = ctx.params.get(expr.name);
|
|
14
|
+
if (value === undefined) {
|
|
15
|
+
throw new Error(`Unknown parameter: ${expr.name}`);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
case "state": {
|
|
20
|
+
const stateMap = expr.scope === "persistent" ? ctx.state.persistent : ctx.state.ephemeral;
|
|
21
|
+
const value = stateMap.get(expr.key);
|
|
22
|
+
if (value === undefined) {
|
|
23
|
+
throw new Error(`Unknown state key: ${expr.scope}.${expr.key}`);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
case "binding": {
|
|
28
|
+
const value = ctx.bindings.get(expr.name);
|
|
29
|
+
if (value === undefined) {
|
|
30
|
+
throw new Error(`Unknown binding: ${expr.name}`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
case "item":
|
|
35
|
+
if (ctx.item !== undefined) {
|
|
36
|
+
return ctx.item;
|
|
37
|
+
}
|
|
38
|
+
if (ctx.bindings.has("item")) {
|
|
39
|
+
return ctx.bindings.get("item");
|
|
40
|
+
}
|
|
41
|
+
throw new Error("'item' is only available inside loops/pipelines");
|
|
42
|
+
case "index":
|
|
43
|
+
if (ctx.index !== undefined) {
|
|
44
|
+
return ctx.index;
|
|
45
|
+
}
|
|
46
|
+
if (ctx.bindings.has("index")) {
|
|
47
|
+
return ctx.bindings.get("index");
|
|
48
|
+
}
|
|
49
|
+
throw new Error("'index' is only available inside loops/pipelines");
|
|
50
|
+
case "binary":
|
|
51
|
+
return evaluateBinary(expr.op, evaluate(expr.left, ctx), evaluate(expr.right, ctx));
|
|
52
|
+
case "unary":
|
|
53
|
+
return evaluateUnary(expr.op, evaluate(expr.arg, ctx));
|
|
54
|
+
case "ternary": {
|
|
55
|
+
const condition = evaluate(expr.condition, ctx);
|
|
56
|
+
return condition ? evaluate(expr.then, ctx) : evaluate(expr.else, ctx);
|
|
57
|
+
}
|
|
58
|
+
case "call":
|
|
59
|
+
return evaluateCall(expr.fn, expr.args.map((a) => evaluate(a, ctx)));
|
|
60
|
+
case "array_access": {
|
|
61
|
+
const array = evaluate(expr.array, ctx);
|
|
62
|
+
const index = evaluate(expr.index, ctx);
|
|
63
|
+
if (!Array.isArray(array)) {
|
|
64
|
+
throw new Error("Cannot index non-array value");
|
|
65
|
+
}
|
|
66
|
+
if (typeof index !== "number") {
|
|
67
|
+
throw new Error("Array index must be a number");
|
|
68
|
+
}
|
|
69
|
+
return array[index];
|
|
70
|
+
}
|
|
71
|
+
case "property_access": {
|
|
72
|
+
const obj = evaluate(expr.object, ctx);
|
|
73
|
+
if (typeof obj !== "object" || obj === null) {
|
|
74
|
+
throw new Error("Cannot access property on non-object value");
|
|
75
|
+
}
|
|
76
|
+
return obj[expr.property];
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
throw new Error(`Unknown expression kind: ${expr.kind}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Evaluate an expression asynchronously (for blockchain queries)
|
|
84
|
+
*/
|
|
85
|
+
export async function evaluateAsync(expr, ctx) {
|
|
86
|
+
switch (expr.kind) {
|
|
87
|
+
case "call":
|
|
88
|
+
return evaluateCallAsync(expr.fn, expr.args, ctx);
|
|
89
|
+
case "binary": {
|
|
90
|
+
const [left, right] = await Promise.all([
|
|
91
|
+
evaluateAsync(expr.left, ctx),
|
|
92
|
+
evaluateAsync(expr.right, ctx),
|
|
93
|
+
]);
|
|
94
|
+
return evaluateBinary(expr.op, left, right);
|
|
95
|
+
}
|
|
96
|
+
case "unary":
|
|
97
|
+
return evaluateUnary(expr.op, await evaluateAsync(expr.arg, ctx));
|
|
98
|
+
case "ternary": {
|
|
99
|
+
const condition = await evaluateAsync(expr.condition, ctx);
|
|
100
|
+
return condition ? await evaluateAsync(expr.then, ctx) : await evaluateAsync(expr.else, ctx);
|
|
101
|
+
}
|
|
102
|
+
case "array_access": {
|
|
103
|
+
const array = await evaluateAsync(expr.array, ctx);
|
|
104
|
+
const index = await evaluateAsync(expr.index, ctx);
|
|
105
|
+
if (!Array.isArray(array)) {
|
|
106
|
+
throw new Error("Cannot index non-array value");
|
|
107
|
+
}
|
|
108
|
+
if (typeof index !== "number") {
|
|
109
|
+
throw new Error("Array index must be a number");
|
|
110
|
+
}
|
|
111
|
+
return array[index];
|
|
112
|
+
}
|
|
113
|
+
case "property_access": {
|
|
114
|
+
const obj = await evaluateAsync(expr.object, ctx);
|
|
115
|
+
if (typeof obj !== "object" || obj === null) {
|
|
116
|
+
throw new Error("Cannot access property on non-object value");
|
|
117
|
+
}
|
|
118
|
+
return obj[expr.property];
|
|
119
|
+
}
|
|
120
|
+
default:
|
|
121
|
+
// Non-async expressions
|
|
122
|
+
return evaluate(expr, ctx);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Evaluate binary operation
|
|
127
|
+
*/
|
|
128
|
+
function evaluateBinary(op, left, right) {
|
|
129
|
+
// Numeric operations
|
|
130
|
+
if (typeof left === "number" && typeof right === "number") {
|
|
131
|
+
switch (op) {
|
|
132
|
+
case "+":
|
|
133
|
+
return left + right;
|
|
134
|
+
case "-":
|
|
135
|
+
return left - right;
|
|
136
|
+
case "*":
|
|
137
|
+
return left * right;
|
|
138
|
+
case "/":
|
|
139
|
+
return left / right;
|
|
140
|
+
case "%":
|
|
141
|
+
return left % right;
|
|
142
|
+
case "<":
|
|
143
|
+
return left < right;
|
|
144
|
+
case ">":
|
|
145
|
+
return left > right;
|
|
146
|
+
case "<=":
|
|
147
|
+
return left <= right;
|
|
148
|
+
case ">=":
|
|
149
|
+
return left >= right;
|
|
150
|
+
case "==":
|
|
151
|
+
return left === right;
|
|
152
|
+
case "!=":
|
|
153
|
+
return left !== right;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// BigInt operations
|
|
157
|
+
if (typeof left === "bigint" && typeof right === "bigint") {
|
|
158
|
+
switch (op) {
|
|
159
|
+
case "+":
|
|
160
|
+
return left + right;
|
|
161
|
+
case "-":
|
|
162
|
+
return left - right;
|
|
163
|
+
case "*":
|
|
164
|
+
return left * right;
|
|
165
|
+
case "/":
|
|
166
|
+
return left / right;
|
|
167
|
+
case "%":
|
|
168
|
+
return left % right;
|
|
169
|
+
case "<":
|
|
170
|
+
return left < right;
|
|
171
|
+
case ">":
|
|
172
|
+
return left > right;
|
|
173
|
+
case "<=":
|
|
174
|
+
return left <= right;
|
|
175
|
+
case ">=":
|
|
176
|
+
return left >= right;
|
|
177
|
+
case "==":
|
|
178
|
+
return left === right;
|
|
179
|
+
case "!=":
|
|
180
|
+
return left !== right;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Mixed bigint/number comparisons
|
|
184
|
+
if ((typeof left === "bigint" && typeof right === "number") ||
|
|
185
|
+
(typeof left === "number" && typeof right === "bigint")) {
|
|
186
|
+
const l = BigInt(left);
|
|
187
|
+
const r = BigInt(right);
|
|
188
|
+
switch (op) {
|
|
189
|
+
case "<":
|
|
190
|
+
return l < r;
|
|
191
|
+
case ">":
|
|
192
|
+
return l > r;
|
|
193
|
+
case "<=":
|
|
194
|
+
return l <= r;
|
|
195
|
+
case ">=":
|
|
196
|
+
return l >= r;
|
|
197
|
+
case "==":
|
|
198
|
+
return l === r;
|
|
199
|
+
case "!=":
|
|
200
|
+
return l !== r;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// String concatenation
|
|
204
|
+
if (typeof left === "string" && typeof right === "string" && op === "+") {
|
|
205
|
+
return left + right;
|
|
206
|
+
}
|
|
207
|
+
// Boolean operations
|
|
208
|
+
if (typeof left === "boolean" && typeof right === "boolean") {
|
|
209
|
+
switch (op) {
|
|
210
|
+
case "AND":
|
|
211
|
+
return left && right;
|
|
212
|
+
case "OR":
|
|
213
|
+
return left || right;
|
|
214
|
+
case "==":
|
|
215
|
+
return left === right;
|
|
216
|
+
case "!=":
|
|
217
|
+
return left !== right;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Logical operations on truthy/falsy values
|
|
221
|
+
switch (op) {
|
|
222
|
+
case "AND":
|
|
223
|
+
return Boolean(left) && Boolean(right);
|
|
224
|
+
case "OR":
|
|
225
|
+
return Boolean(left) || Boolean(right);
|
|
226
|
+
case "==":
|
|
227
|
+
return left === right;
|
|
228
|
+
case "!=":
|
|
229
|
+
return left !== right;
|
|
230
|
+
}
|
|
231
|
+
throw new Error(`Unsupported binary operation: ${typeof left} ${op} ${typeof right}`);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Evaluate unary operation
|
|
235
|
+
*/
|
|
236
|
+
function evaluateUnary(op, arg) {
|
|
237
|
+
switch (op) {
|
|
238
|
+
case "NOT":
|
|
239
|
+
return !arg;
|
|
240
|
+
case "-":
|
|
241
|
+
if (typeof arg === "number")
|
|
242
|
+
return -arg;
|
|
243
|
+
if (typeof arg === "bigint")
|
|
244
|
+
return -arg;
|
|
245
|
+
throw new Error(`Cannot negate ${typeof arg}`);
|
|
246
|
+
case "ABS":
|
|
247
|
+
if (typeof arg === "number")
|
|
248
|
+
return Math.abs(arg);
|
|
249
|
+
if (typeof arg === "bigint")
|
|
250
|
+
return arg < 0n ? -arg : arg;
|
|
251
|
+
throw new Error(`Cannot take abs of ${typeof arg}`);
|
|
252
|
+
default:
|
|
253
|
+
throw new Error(`Unknown unary operator: ${op}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Evaluate synchronous function call
|
|
258
|
+
*/
|
|
259
|
+
function evaluateCall(fn, args) {
|
|
260
|
+
switch (fn) {
|
|
261
|
+
case "min": {
|
|
262
|
+
const [a, b] = args;
|
|
263
|
+
if (typeof a === "number" && typeof b === "number")
|
|
264
|
+
return Math.min(a, b);
|
|
265
|
+
if (typeof a === "bigint" && typeof b === "bigint")
|
|
266
|
+
return a < b ? a : b;
|
|
267
|
+
throw new Error("min requires two numbers");
|
|
268
|
+
}
|
|
269
|
+
case "max": {
|
|
270
|
+
const [a, b] = args;
|
|
271
|
+
if (typeof a === "number" && typeof b === "number")
|
|
272
|
+
return Math.max(a, b);
|
|
273
|
+
if (typeof a === "bigint" && typeof b === "bigint")
|
|
274
|
+
return a > b ? a : b;
|
|
275
|
+
throw new Error("max requires two numbers");
|
|
276
|
+
}
|
|
277
|
+
case "abs": {
|
|
278
|
+
const [a] = args;
|
|
279
|
+
if (typeof a === "number")
|
|
280
|
+
return Math.abs(a);
|
|
281
|
+
if (typeof a === "bigint")
|
|
282
|
+
return a < 0n ? -a : a;
|
|
283
|
+
throw new Error("abs requires a number");
|
|
284
|
+
}
|
|
285
|
+
case "sum": {
|
|
286
|
+
const [arr] = args;
|
|
287
|
+
if (!Array.isArray(arr))
|
|
288
|
+
throw new Error("sum requires an array");
|
|
289
|
+
if (arr.length === 0)
|
|
290
|
+
return 0;
|
|
291
|
+
if (typeof arr[0] === "bigint") {
|
|
292
|
+
return arr.reduce((sum, v) => sum + v, 0n);
|
|
293
|
+
}
|
|
294
|
+
return arr.reduce((sum, v) => sum + v, 0);
|
|
295
|
+
}
|
|
296
|
+
case "avg": {
|
|
297
|
+
const [arr] = args;
|
|
298
|
+
if (!Array.isArray(arr))
|
|
299
|
+
throw new Error("avg requires an array");
|
|
300
|
+
if (arr.length === 0)
|
|
301
|
+
return 0;
|
|
302
|
+
const sum = arr.reduce((s, v) => s + v, 0);
|
|
303
|
+
return sum / arr.length;
|
|
304
|
+
}
|
|
305
|
+
// Async functions should not be called synchronously
|
|
306
|
+
case "balance":
|
|
307
|
+
case "price":
|
|
308
|
+
case "get_apy":
|
|
309
|
+
case "get_health_factor":
|
|
310
|
+
case "get_position":
|
|
311
|
+
case "get_debt":
|
|
312
|
+
throw new Error(`Function '${fn}' requires async evaluation`);
|
|
313
|
+
default:
|
|
314
|
+
throw new Error(`Unknown function: ${fn}`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Evaluate async function call (blockchain queries)
|
|
319
|
+
*/
|
|
320
|
+
async function evaluateCallAsync(fn, argExprs, ctx) {
|
|
321
|
+
// First evaluate all arguments
|
|
322
|
+
const args = await Promise.all(argExprs.map((a) => evaluateAsync(a, ctx)));
|
|
323
|
+
switch (fn) {
|
|
324
|
+
case "balance": {
|
|
325
|
+
if (!ctx.queryBalance) {
|
|
326
|
+
throw new Error("Balance queries not available in this context");
|
|
327
|
+
}
|
|
328
|
+
const [asset, address] = args;
|
|
329
|
+
return ctx.queryBalance(asset, address);
|
|
330
|
+
}
|
|
331
|
+
case "price": {
|
|
332
|
+
if (!ctx.queryPrice) {
|
|
333
|
+
throw new Error("Price queries not available in this context");
|
|
334
|
+
}
|
|
335
|
+
const [base, quote, source] = args;
|
|
336
|
+
return ctx.queryPrice(base, quote, source);
|
|
337
|
+
}
|
|
338
|
+
case "get_apy": {
|
|
339
|
+
if (!ctx.queryApy) {
|
|
340
|
+
throw new Error("APY queries not available in this context");
|
|
341
|
+
}
|
|
342
|
+
const [venue, asset] = args;
|
|
343
|
+
return ctx.queryApy(venue, asset);
|
|
344
|
+
}
|
|
345
|
+
case "get_health_factor": {
|
|
346
|
+
if (!ctx.queryHealthFactor) {
|
|
347
|
+
throw new Error("Health factor queries not available in this context");
|
|
348
|
+
}
|
|
349
|
+
const [venue] = args;
|
|
350
|
+
return ctx.queryHealthFactor(venue);
|
|
351
|
+
}
|
|
352
|
+
case "get_position": {
|
|
353
|
+
if (!ctx.queryPosition) {
|
|
354
|
+
throw new Error("Position queries not available in this context");
|
|
355
|
+
}
|
|
356
|
+
const [venue, asset] = args;
|
|
357
|
+
return ctx.queryPosition(venue, asset);
|
|
358
|
+
}
|
|
359
|
+
case "get_debt": {
|
|
360
|
+
if (!ctx.queryDebt) {
|
|
361
|
+
throw new Error("Debt queries not available in this context");
|
|
362
|
+
}
|
|
363
|
+
const [venue, asset] = args;
|
|
364
|
+
return ctx.queryDebt(venue, asset);
|
|
365
|
+
}
|
|
366
|
+
// Sync functions
|
|
367
|
+
case "min":
|
|
368
|
+
case "max":
|
|
369
|
+
case "abs":
|
|
370
|
+
case "sum":
|
|
371
|
+
case "avg":
|
|
372
|
+
return evaluateCall(fn, args);
|
|
373
|
+
default:
|
|
374
|
+
throw new Error(`Unknown function: ${fn}`);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Create an evaluation context from execution context
|
|
379
|
+
*/
|
|
380
|
+
export function createEvalContext(execCtx) {
|
|
381
|
+
const params = new Map();
|
|
382
|
+
for (const param of execCtx.spell.params) {
|
|
383
|
+
params.set(param.name, execCtx.bindings.get(param.name) ?? param.default);
|
|
384
|
+
}
|
|
385
|
+
return {
|
|
386
|
+
params,
|
|
387
|
+
bindings: execCtx.bindings,
|
|
388
|
+
state: execCtx.state,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=expression-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-evaluator.js","sourceRoot":"","sources":["../../src/runtime/expression-evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime exports
|
|
3
|
+
*/
|
|
4
|
+
export { execute, type ExecuteOptions } from "./interpreter.js";
|
|
5
|
+
export type { AdvisoryHandler, AdvisoryHandlerInput } from "./steps/advisory.js";
|
|
6
|
+
export { createContext, InMemoryLedger, setBinding, getBinding, setPersistentState, setEphemeralState, markStepExecuted, isStepExecuted, getPersistentStateObject, type CreateContextOptions, } from "./context.js";
|
|
7
|
+
export { evaluate, evaluateAsync, createEvalContext, type EvalValue, type EvalContext, } from "./expression-evaluator.js";
|
|
8
|
+
export { classifyError, matchesCatchBlock } from "./error-classifier.js";
|
|
9
|
+
export { CircuitBreakerManager, type BreakerState, type BreakerRecord, type TimestampedEvent, type CircuitBreakerCheckResult, type CircuitBreakerTriggerResult, } from "./circuit-breaker.js";
|
|
10
|
+
export { type StateStore, type RunRecord, type RunMetrics, createRunRecord, } from "./state-store.js";
|
|
11
|
+
export { SqliteStateStore, type SqliteStateStoreOptions } from "./sqlite-state-store.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,GACjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime exports
|
|
3
|
+
*/
|
|
4
|
+
export { execute } from "./interpreter.js";
|
|
5
|
+
export { createContext, InMemoryLedger, setBinding, getBinding, setPersistentState, setEphemeralState, markStepExecuted, isStepExecuted, getPersistentStateObject, } from "./context.js";
|
|
6
|
+
export { evaluate, evaluateAsync, createEvalContext, } from "./expression-evaluator.js";
|
|
7
|
+
export { classifyError, matchesCatchBlock } from "./error-classifier.js";
|
|
8
|
+
export { CircuitBreakerManager, } from "./circuit-breaker.js";
|
|
9
|
+
export { createRunRecord, } from "./state-store.js";
|
|
10
|
+
export { SqliteStateStore } from "./sqlite-state-store.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAuB,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,GAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,qBAAqB,GAMtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAgC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spell Interpreter
|
|
3
|
+
* Executes compiled SpellIR
|
|
4
|
+
*/
|
|
5
|
+
import type { ExecutionResult } from "../types/execution.js";
|
|
6
|
+
import type { SpellIR } from "../types/ir.js";
|
|
7
|
+
import type { PolicySet } from "../types/policy.js";
|
|
8
|
+
import type { Address, ChainId } from "../types/primitives.js";
|
|
9
|
+
import type { VenueAdapter } from "../venues/types.js";
|
|
10
|
+
import { type ExecutionMode } from "../wallet/executor.js";
|
|
11
|
+
import { type Provider } from "../wallet/provider.js";
|
|
12
|
+
import type { Wallet } from "../wallet/types.js";
|
|
13
|
+
import { type AdvisoryHandler } from "./steps/advisory.js";
|
|
14
|
+
/**
|
|
15
|
+
* Options for executing a spell
|
|
16
|
+
*/
|
|
17
|
+
export interface ExecuteOptions {
|
|
18
|
+
/** The compiled spell */
|
|
19
|
+
spell: SpellIR;
|
|
20
|
+
/** Vault address */
|
|
21
|
+
vault: Address;
|
|
22
|
+
/** Chain ID */
|
|
23
|
+
chain: ChainId;
|
|
24
|
+
/** Parameter overrides */
|
|
25
|
+
params?: Record<string, unknown>;
|
|
26
|
+
/** Initial persistent state */
|
|
27
|
+
persistentState?: Record<string, unknown>;
|
|
28
|
+
/** Simulation mode (no actual transactions) */
|
|
29
|
+
simulate?: boolean;
|
|
30
|
+
/** Execution mode override */
|
|
31
|
+
executionMode?: ExecutionMode;
|
|
32
|
+
/** Wallet for signing and sending transactions */
|
|
33
|
+
wallet?: Wallet;
|
|
34
|
+
/** Provider override (optional) */
|
|
35
|
+
provider?: Provider;
|
|
36
|
+
/** RPC URL override */
|
|
37
|
+
rpcUrl?: string;
|
|
38
|
+
/** Gas multiplier */
|
|
39
|
+
gasMultiplier?: number;
|
|
40
|
+
/** Skip confirmation for testnets */
|
|
41
|
+
skipTestnetConfirmation?: boolean;
|
|
42
|
+
/** Confirmation prompt callback */
|
|
43
|
+
confirmCallback?: (message: string) => Promise<boolean>;
|
|
44
|
+
/** Progress updates callback */
|
|
45
|
+
progressCallback?: (message: string) => void;
|
|
46
|
+
/** Venue adapters */
|
|
47
|
+
adapters?: VenueAdapter[];
|
|
48
|
+
/** Policy set with risk controls (circuit breakers, etc.) */
|
|
49
|
+
policy?: PolicySet;
|
|
50
|
+
/** Advisor skill search directories */
|
|
51
|
+
advisorSkillsDirs?: string[];
|
|
52
|
+
/** Optional advisory handler for agent execution */
|
|
53
|
+
onAdvisory?: AdvisoryHandler;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Execute a compiled spell
|
|
57
|
+
*/
|
|
58
|
+
export declare function execute(options: ExecuteOptions): Promise<ExecutionResult>;
|
|
59
|
+
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/runtime/interpreter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAoB,eAAe,EAAc,MAAM,uBAAuB,CAAC;AAC3F,OAAO,KAAK,EAA+B,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAcjD,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAWhF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe;IACf,KAAK,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mCAAmC;IACnC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,qBAAqB;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAiL/E"}
|