@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,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression builders - fluent API for creating expressions
|
|
3
|
+
*/
|
|
4
|
+
import type { ArrayAccessExpr, BinaryExpr, BinaryOp, BindingExpr, BuiltinFn, CallExpr, Expression, LiteralExpr, ParamExpr, PropertyAccessExpr } from "../types/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Create a literal expression
|
|
7
|
+
*/
|
|
8
|
+
export declare function literal(value: number | string | boolean | Record<string, unknown> | unknown[] | null): LiteralExpr;
|
|
9
|
+
/**
|
|
10
|
+
* Create a parameter reference expression
|
|
11
|
+
*/
|
|
12
|
+
export declare function param(name: string): ParamExpr;
|
|
13
|
+
/**
|
|
14
|
+
* Create a binding reference expression
|
|
15
|
+
*/
|
|
16
|
+
export declare function binding(name: string): BindingExpr;
|
|
17
|
+
/**
|
|
18
|
+
* Create a binary expression
|
|
19
|
+
*/
|
|
20
|
+
export declare function binary(left: Expression, op: BinaryOp, right: Expression): BinaryExpr;
|
|
21
|
+
/**
|
|
22
|
+
* Create a function call expression
|
|
23
|
+
*/
|
|
24
|
+
export declare function call(fn: BuiltinFn, args: Expression[]): CallExpr;
|
|
25
|
+
/**
|
|
26
|
+
* Create an array access expression
|
|
27
|
+
*/
|
|
28
|
+
export declare function arrayAccess(array: Expression, index: Expression): ArrayAccessExpr;
|
|
29
|
+
/**
|
|
30
|
+
* Create a property access expression
|
|
31
|
+
*/
|
|
32
|
+
export declare function propertyAccess(object: Expression, property: string): PropertyAccessExpr;
|
|
33
|
+
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/builders/expressions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,EACX,SAAS,EACT,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,GAC5E,WAAW,CAeb;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAE7C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAEjD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAEpF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,QAAQ,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,CAEjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAEvF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression builders - fluent API for creating expressions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Create a literal expression
|
|
6
|
+
*/
|
|
7
|
+
export function literal(value) {
|
|
8
|
+
const type = typeof value === "string"
|
|
9
|
+
? value.startsWith("0x")
|
|
10
|
+
? "address"
|
|
11
|
+
: "string"
|
|
12
|
+
: typeof value === "boolean"
|
|
13
|
+
? "bool"
|
|
14
|
+
: typeof value === "number"
|
|
15
|
+
? Number.isInteger(value)
|
|
16
|
+
? "int"
|
|
17
|
+
: "float"
|
|
18
|
+
: "json";
|
|
19
|
+
return { kind: "literal", value, type };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a parameter reference expression
|
|
23
|
+
*/
|
|
24
|
+
export function param(name) {
|
|
25
|
+
return { kind: "param", name };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a binding reference expression
|
|
29
|
+
*/
|
|
30
|
+
export function binding(name) {
|
|
31
|
+
return { kind: "binding", name };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a binary expression
|
|
35
|
+
*/
|
|
36
|
+
export function binary(left, op, right) {
|
|
37
|
+
return { kind: "binary", op, left, right };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a function call expression
|
|
41
|
+
*/
|
|
42
|
+
export function call(fn, args) {
|
|
43
|
+
return { kind: "call", fn, args };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create an array access expression
|
|
47
|
+
*/
|
|
48
|
+
export function arrayAccess(array, index) {
|
|
49
|
+
return { kind: "array_access", array, index };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a property access expression
|
|
53
|
+
*/
|
|
54
|
+
export function propertyAccess(object, property) {
|
|
55
|
+
return { kind: "property_access", object, property };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../src/builders/expressions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,KAA6E;IAE7E,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ;QACZ,CAAC,CAAC,OAAO,KAAK,KAAK,SAAS;YAC1B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,OAAO;gBACX,CAAC,CAAC,MAAM,CAAC;IAEjB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,IAAgB,EAAE,EAAY,EAAE,KAAiB;IACtE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,EAAa,EAAE,IAAkB;IACpD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,KAAiB;IAC9D,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB,EAAE,QAAgB;IACjE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fluent API for building spells programmatically
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { spell, action, conditional } from "@grimoirelabs/core/builders";
|
|
7
|
+
*
|
|
8
|
+
* const mySpell = spell("MyStrategy")
|
|
9
|
+
* .version("1.0.0")
|
|
10
|
+
* .description("A sample strategy")
|
|
11
|
+
* .asset("USDC", { chain: 1, address: "0x..." })
|
|
12
|
+
* .step(
|
|
13
|
+
* conditional(binary(binding("balance"), ">", literal(1000)))
|
|
14
|
+
* .then("swapStep")
|
|
15
|
+
* .build()
|
|
16
|
+
* );
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export { spell } from "./spell-builder.js";
|
|
20
|
+
export type { SpellBuilder } from "./spell-builder.js";
|
|
21
|
+
export { action } from "./step-builder.js";
|
|
22
|
+
export type { ActionBuilder } from "./step-builder.js";
|
|
23
|
+
export { conditional } from "./step-builder.js";
|
|
24
|
+
export type { ConditionalBuilder } from "./step-builder.js";
|
|
25
|
+
export { repeat, forLoop, until } from "./step-builder.js";
|
|
26
|
+
export type { LoopBuilder } from "./step-builder.js";
|
|
27
|
+
export { parallel } from "./step-builder.js";
|
|
28
|
+
export type { ParallelBuilder } from "./step-builder.js";
|
|
29
|
+
export { compute } from "./step-builder.js";
|
|
30
|
+
export type { ComputeBuilder } from "./step-builder.js";
|
|
31
|
+
export { wait } from "./step-builder.js";
|
|
32
|
+
export type { WaitBuilder } from "./step-builder.js";
|
|
33
|
+
export { emit } from "./step-builder.js";
|
|
34
|
+
export type { EmitBuilder } from "./step-builder.js";
|
|
35
|
+
export { halt } from "./step-builder.js";
|
|
36
|
+
export type { HaltBuilder } from "./step-builder.js";
|
|
37
|
+
export { tryBlock } from "./step-builder.js";
|
|
38
|
+
export type { TryBuilder } from "./step-builder.js";
|
|
39
|
+
export { advisory } from "./step-builder.js";
|
|
40
|
+
export type { AdvisoryBuilder } from "./step-builder.js";
|
|
41
|
+
export { pipeline } from "./step-builder.js";
|
|
42
|
+
export type { PipelineBuilder } from "./step-builder.js";
|
|
43
|
+
export { param, literal, binding, binary, call, arrayAccess, propertyAccess, } from "./expressions.js";
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fluent API for building spells programmatically
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { spell, action, conditional } from "@grimoirelabs/core/builders";
|
|
7
|
+
*
|
|
8
|
+
* const mySpell = spell("MyStrategy")
|
|
9
|
+
* .version("1.0.0")
|
|
10
|
+
* .description("A sample strategy")
|
|
11
|
+
* .asset("USDC", { chain: 1, address: "0x..." })
|
|
12
|
+
* .step(
|
|
13
|
+
* conditional(binary(binding("balance"), ">", literal(1000)))
|
|
14
|
+
* .then("swapStep")
|
|
15
|
+
* .build()
|
|
16
|
+
* );
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export { spell } from "./spell-builder.js";
|
|
20
|
+
export { action } from "./step-builder.js";
|
|
21
|
+
export { conditional } from "./step-builder.js";
|
|
22
|
+
export { repeat, forLoop, until } from "./step-builder.js";
|
|
23
|
+
export { parallel } from "./step-builder.js";
|
|
24
|
+
export { compute } from "./step-builder.js";
|
|
25
|
+
export { wait } from "./step-builder.js";
|
|
26
|
+
export { emit } from "./step-builder.js";
|
|
27
|
+
export { halt } from "./step-builder.js";
|
|
28
|
+
export { tryBlock } from "./step-builder.js";
|
|
29
|
+
export { advisory } from "./step-builder.js";
|
|
30
|
+
export { pipeline } from "./step-builder.js";
|
|
31
|
+
export { param, literal, binding, binary, call, arrayAccess, propertyAccess, } from "./expressions.js";
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builders/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,OAAO,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spell builder - fluent API for creating SpellIR objects
|
|
3
|
+
*/
|
|
4
|
+
import type { Expression, SpellIR, SpellSource, Step, Trigger } from "../types/index.js";
|
|
5
|
+
/** Builder for creating SpellIR objects */
|
|
6
|
+
export declare class SpellBuilder {
|
|
7
|
+
private _id;
|
|
8
|
+
private _version;
|
|
9
|
+
private _meta;
|
|
10
|
+
private _aliases;
|
|
11
|
+
private _assets;
|
|
12
|
+
private _skills;
|
|
13
|
+
private _advisors;
|
|
14
|
+
private _params;
|
|
15
|
+
private _state;
|
|
16
|
+
private _steps;
|
|
17
|
+
private _guards;
|
|
18
|
+
private _triggers;
|
|
19
|
+
constructor(name: string);
|
|
20
|
+
/** Set the spell version */
|
|
21
|
+
version(version: string): SpellBuilder;
|
|
22
|
+
/** Set the spell description */
|
|
23
|
+
description(description: string): SpellBuilder;
|
|
24
|
+
/** Set the spell author */
|
|
25
|
+
author(address: string): SpellBuilder;
|
|
26
|
+
/** Add an asset definition */
|
|
27
|
+
asset(symbol: string, config: {
|
|
28
|
+
chain: number;
|
|
29
|
+
address: string;
|
|
30
|
+
decimals?: number;
|
|
31
|
+
}): SpellBuilder;
|
|
32
|
+
/** Add multiple assets */
|
|
33
|
+
assets(assets: Array<{
|
|
34
|
+
symbol: string;
|
|
35
|
+
chain: number;
|
|
36
|
+
address: string;
|
|
37
|
+
decimals?: number;
|
|
38
|
+
}>): SpellBuilder;
|
|
39
|
+
/** Add a venue alias */
|
|
40
|
+
alias(alias: string, config: {
|
|
41
|
+
chain: number;
|
|
42
|
+
address: string;
|
|
43
|
+
label?: string;
|
|
44
|
+
}): SpellBuilder;
|
|
45
|
+
/** Add multiple venue aliases */
|
|
46
|
+
aliases(aliases: Array<{
|
|
47
|
+
alias: string;
|
|
48
|
+
chain: number;
|
|
49
|
+
address: string;
|
|
50
|
+
label?: string;
|
|
51
|
+
}>): SpellBuilder;
|
|
52
|
+
/** Add a parameter */
|
|
53
|
+
param(name: string, config: {
|
|
54
|
+
type?: "number" | "bool" | "address" | "asset" | "string";
|
|
55
|
+
default?: unknown;
|
|
56
|
+
min?: number;
|
|
57
|
+
max?: number;
|
|
58
|
+
}): SpellBuilder;
|
|
59
|
+
/** Add multiple parameters */
|
|
60
|
+
params(params: Array<{
|
|
61
|
+
name: string;
|
|
62
|
+
type?: "number" | "bool" | "address" | "asset" | "string";
|
|
63
|
+
default?: unknown;
|
|
64
|
+
min?: number;
|
|
65
|
+
max?: number;
|
|
66
|
+
}>): SpellBuilder;
|
|
67
|
+
/** Add a persistent state field */
|
|
68
|
+
persistentState(name: string, type: "number" | "string" | "boolean"): SpellBuilder;
|
|
69
|
+
/** Add an ephemeral state field */
|
|
70
|
+
ephemeralState(name: string, type: "number" | "string" | "boolean"): SpellBuilder;
|
|
71
|
+
/** Add a skill */
|
|
72
|
+
skill(name: string, config: {
|
|
73
|
+
type: "swap" | "yield" | "lending" | "staking" | "bridge";
|
|
74
|
+
adapters: string[];
|
|
75
|
+
defaultConstraints?: {
|
|
76
|
+
maxSlippage?: number;
|
|
77
|
+
};
|
|
78
|
+
}): SpellBuilder;
|
|
79
|
+
/** Add an advisor */
|
|
80
|
+
advisor(name: string, config: {
|
|
81
|
+
model: string;
|
|
82
|
+
scope?: "read-only";
|
|
83
|
+
systemPrompt?: string;
|
|
84
|
+
skills?: string[];
|
|
85
|
+
allowedTools?: string[];
|
|
86
|
+
mcp?: string[];
|
|
87
|
+
defaultTimeout?: number;
|
|
88
|
+
defaultFallback?: boolean;
|
|
89
|
+
rateLimit?: {
|
|
90
|
+
maxCallsPerRun: number;
|
|
91
|
+
maxCallsPerHour: number;
|
|
92
|
+
};
|
|
93
|
+
}): SpellBuilder;
|
|
94
|
+
/** Add a guard */
|
|
95
|
+
guard(config: {
|
|
96
|
+
id: string;
|
|
97
|
+
check: Expression;
|
|
98
|
+
severity: "warn" | "revert" | "halt";
|
|
99
|
+
message: string;
|
|
100
|
+
}): SpellBuilder;
|
|
101
|
+
/** Add an advisory guard */
|
|
102
|
+
advisoryGuard(config: {
|
|
103
|
+
id: string;
|
|
104
|
+
advisor: string;
|
|
105
|
+
check: string;
|
|
106
|
+
severity: "warn" | "pause";
|
|
107
|
+
fallback: boolean;
|
|
108
|
+
}): SpellBuilder;
|
|
109
|
+
/** Add a trigger */
|
|
110
|
+
trigger(trigger: Trigger): SpellBuilder;
|
|
111
|
+
/** Add a step */
|
|
112
|
+
step(step: Step): SpellBuilder;
|
|
113
|
+
/** Add multiple steps */
|
|
114
|
+
steps(steps: Step[]): SpellBuilder;
|
|
115
|
+
/** Build the SpellIR object */
|
|
116
|
+
build(): SpellIR;
|
|
117
|
+
/** Build and return as SpellSource (for IR generator) */
|
|
118
|
+
buildSource(): SpellSource;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a new spell builder
|
|
122
|
+
*/
|
|
123
|
+
export declare function spell(name: string): SpellBuilder;
|
|
124
|
+
//# sourceMappingURL=spell-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spell-builder.d.ts","sourceRoot":"","sources":["../../src/builders/spell-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spell builder - fluent API for creating SpellIR objects
|
|
3
|
+
*/
|
|
4
|
+
/** Builder for creating SpellIR objects */
|
|
5
|
+
export class SpellBuilder {
|
|
6
|
+
_id;
|
|
7
|
+
_version;
|
|
8
|
+
_meta = {
|
|
9
|
+
name: "",
|
|
10
|
+
created: Date.now(),
|
|
11
|
+
hash: "",
|
|
12
|
+
};
|
|
13
|
+
_aliases = [];
|
|
14
|
+
_assets = [];
|
|
15
|
+
_skills = [];
|
|
16
|
+
_advisors = [];
|
|
17
|
+
_params = [];
|
|
18
|
+
_state = {
|
|
19
|
+
persistent: {},
|
|
20
|
+
ephemeral: {},
|
|
21
|
+
};
|
|
22
|
+
_steps = [];
|
|
23
|
+
_guards = [];
|
|
24
|
+
_triggers = [];
|
|
25
|
+
constructor(name) {
|
|
26
|
+
this._id = name
|
|
27
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2")
|
|
28
|
+
.replace(/\s+/g, "-")
|
|
29
|
+
.toLowerCase();
|
|
30
|
+
this._meta.name = name;
|
|
31
|
+
this._version = "1.0.0";
|
|
32
|
+
}
|
|
33
|
+
/** Set the spell version */
|
|
34
|
+
version(version) {
|
|
35
|
+
this._version = version;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/** Set the spell description */
|
|
39
|
+
description(description) {
|
|
40
|
+
this._meta.description = description;
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/** Set the spell author */
|
|
44
|
+
author(address) {
|
|
45
|
+
this._meta.author = address;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/** Add an asset definition */
|
|
49
|
+
asset(symbol, config) {
|
|
50
|
+
this._assets.push({
|
|
51
|
+
symbol,
|
|
52
|
+
chain: config.chain,
|
|
53
|
+
address: config.address,
|
|
54
|
+
decimals: config.decimals ?? 18,
|
|
55
|
+
});
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
/** Add multiple assets */
|
|
59
|
+
assets(assets) {
|
|
60
|
+
for (const a of assets) {
|
|
61
|
+
this._assets.push({
|
|
62
|
+
symbol: a.symbol,
|
|
63
|
+
chain: a.chain,
|
|
64
|
+
address: a.address,
|
|
65
|
+
decimals: a.decimals ?? 18,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
/** Add a venue alias */
|
|
71
|
+
alias(alias, config) {
|
|
72
|
+
this._aliases.push({
|
|
73
|
+
alias,
|
|
74
|
+
chain: config.chain,
|
|
75
|
+
address: config.address,
|
|
76
|
+
label: config.label ?? alias,
|
|
77
|
+
});
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/** Add multiple venue aliases */
|
|
81
|
+
aliases(aliases) {
|
|
82
|
+
for (const a of aliases) {
|
|
83
|
+
this._aliases.push({
|
|
84
|
+
alias: a.alias,
|
|
85
|
+
chain: a.chain,
|
|
86
|
+
address: a.address,
|
|
87
|
+
label: a.label ?? a.alias,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/** Add a parameter */
|
|
93
|
+
param(name, config) {
|
|
94
|
+
this._params.push({
|
|
95
|
+
name,
|
|
96
|
+
type: config.type ?? "number",
|
|
97
|
+
default: config.default ?? 0,
|
|
98
|
+
min: config.min,
|
|
99
|
+
max: config.max,
|
|
100
|
+
});
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
/** Add multiple parameters */
|
|
104
|
+
params(params) {
|
|
105
|
+
for (const p of params) {
|
|
106
|
+
this._params.push({
|
|
107
|
+
name: p.name,
|
|
108
|
+
type: p.type ?? "number",
|
|
109
|
+
default: p.default ?? 0,
|
|
110
|
+
min: p.min,
|
|
111
|
+
max: p.max,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/** Add a persistent state field */
|
|
117
|
+
persistentState(name, type) {
|
|
118
|
+
this._state.persistent[name] = {
|
|
119
|
+
type,
|
|
120
|
+
value: type === "number" ? 0 : type === "string" ? "" : false,
|
|
121
|
+
};
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
/** Add an ephemeral state field */
|
|
125
|
+
ephemeralState(name, type) {
|
|
126
|
+
this._state.ephemeral[name] = {
|
|
127
|
+
type,
|
|
128
|
+
value: type === "number" ? 0 : type === "string" ? "" : false,
|
|
129
|
+
};
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
/** Add a skill */
|
|
133
|
+
skill(name, config) {
|
|
134
|
+
this._skills.push({
|
|
135
|
+
name,
|
|
136
|
+
type: config.type,
|
|
137
|
+
adapters: config.adapters,
|
|
138
|
+
defaultConstraints: config.defaultConstraints,
|
|
139
|
+
});
|
|
140
|
+
return this;
|
|
141
|
+
}
|
|
142
|
+
/** Add an advisor */
|
|
143
|
+
advisor(name, config) {
|
|
144
|
+
this._advisors.push({
|
|
145
|
+
name,
|
|
146
|
+
model: config.model,
|
|
147
|
+
scope: config.scope ?? "read-only",
|
|
148
|
+
systemPrompt: config.systemPrompt,
|
|
149
|
+
skills: config.skills,
|
|
150
|
+
allowedTools: config.allowedTools,
|
|
151
|
+
mcp: config.mcp,
|
|
152
|
+
defaultTimeout: config.defaultTimeout,
|
|
153
|
+
defaultFallback: config.defaultFallback,
|
|
154
|
+
rateLimit: config.rateLimit,
|
|
155
|
+
});
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
/** Add a guard */
|
|
159
|
+
guard(config) {
|
|
160
|
+
this._guards.push({
|
|
161
|
+
id: config.id,
|
|
162
|
+
check: config.check,
|
|
163
|
+
severity: config.severity,
|
|
164
|
+
message: config.message,
|
|
165
|
+
});
|
|
166
|
+
return this;
|
|
167
|
+
}
|
|
168
|
+
/** Add an advisory guard */
|
|
169
|
+
advisoryGuard(config) {
|
|
170
|
+
this._guards.push({
|
|
171
|
+
id: config.id,
|
|
172
|
+
advisor: config.advisor,
|
|
173
|
+
check: config.check,
|
|
174
|
+
severity: config.severity,
|
|
175
|
+
fallback: config.fallback,
|
|
176
|
+
});
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
/** Add a trigger */
|
|
180
|
+
trigger(trigger) {
|
|
181
|
+
this._triggers.push(trigger);
|
|
182
|
+
return this;
|
|
183
|
+
}
|
|
184
|
+
/** Add a step */
|
|
185
|
+
step(step) {
|
|
186
|
+
this._steps.push(step);
|
|
187
|
+
return this;
|
|
188
|
+
}
|
|
189
|
+
/** Add multiple steps */
|
|
190
|
+
steps(steps) {
|
|
191
|
+
this._steps.push(...steps);
|
|
192
|
+
return this;
|
|
193
|
+
}
|
|
194
|
+
/** Build the SpellIR object */
|
|
195
|
+
build() {
|
|
196
|
+
return {
|
|
197
|
+
id: this._id,
|
|
198
|
+
version: this._version,
|
|
199
|
+
meta: this._meta,
|
|
200
|
+
aliases: this._aliases,
|
|
201
|
+
assets: this._assets,
|
|
202
|
+
skills: this._skills,
|
|
203
|
+
advisors: this._advisors,
|
|
204
|
+
params: this._params,
|
|
205
|
+
state: this._state,
|
|
206
|
+
steps: this._steps,
|
|
207
|
+
guards: this._guards,
|
|
208
|
+
triggers: this._triggers,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/** Build and return as SpellSource (for IR generator) */
|
|
212
|
+
buildSource() {
|
|
213
|
+
const skills = {};
|
|
214
|
+
for (const s of this._skills) {
|
|
215
|
+
skills[s.name] = {
|
|
216
|
+
type: s.type,
|
|
217
|
+
adapters: s.adapters,
|
|
218
|
+
default_constraints: s.defaultConstraints
|
|
219
|
+
? { max_slippage: s.defaultConstraints.maxSlippage }
|
|
220
|
+
: undefined,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
const advisors = {};
|
|
224
|
+
for (const a of this._advisors) {
|
|
225
|
+
advisors[a.name] = {
|
|
226
|
+
model: a.model,
|
|
227
|
+
scope: a.scope,
|
|
228
|
+
system_prompt: a.systemPrompt,
|
|
229
|
+
skills: a.skills,
|
|
230
|
+
allowed_tools: a.allowedTools,
|
|
231
|
+
mcp: a.mcp,
|
|
232
|
+
timeout: a.defaultTimeout,
|
|
233
|
+
fallback: a.defaultFallback,
|
|
234
|
+
rate_limit: a.rateLimit
|
|
235
|
+
? {
|
|
236
|
+
max_per_run: a.rateLimit.maxCallsPerRun,
|
|
237
|
+
max_per_hour: a.rateLimit.maxCallsPerHour,
|
|
238
|
+
}
|
|
239
|
+
: undefined,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
spell: this._id,
|
|
244
|
+
version: this._version,
|
|
245
|
+
description: this._meta.description,
|
|
246
|
+
assets: this._assets.reduce((acc, asset) => {
|
|
247
|
+
acc[asset.symbol] = {
|
|
248
|
+
chain: asset.chain,
|
|
249
|
+
address: asset.address,
|
|
250
|
+
decimals: asset.decimals,
|
|
251
|
+
};
|
|
252
|
+
return acc;
|
|
253
|
+
}, {}),
|
|
254
|
+
params: this._params.reduce((acc, p) => {
|
|
255
|
+
acc[p.name] = {
|
|
256
|
+
type: p.type,
|
|
257
|
+
default: p.default,
|
|
258
|
+
min: p.min,
|
|
259
|
+
max: p.max,
|
|
260
|
+
};
|
|
261
|
+
return acc;
|
|
262
|
+
}, {}),
|
|
263
|
+
state: {
|
|
264
|
+
persistent: this._state.persistent,
|
|
265
|
+
ephemeral: this._state.ephemeral,
|
|
266
|
+
},
|
|
267
|
+
skills,
|
|
268
|
+
advisors,
|
|
269
|
+
trigger: this._triggers.length > 0
|
|
270
|
+
? this._triggers[0]
|
|
271
|
+
: undefined,
|
|
272
|
+
steps: this._steps.map((step) => ({ ...step })),
|
|
273
|
+
guards: this._guards.map((g) => {
|
|
274
|
+
if ("advisor" in g) {
|
|
275
|
+
return {
|
|
276
|
+
id: g.id,
|
|
277
|
+
advisory: g.advisor,
|
|
278
|
+
check: g.check,
|
|
279
|
+
severity: g.severity,
|
|
280
|
+
fallback: g.fallback,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
return {
|
|
284
|
+
id: g.id,
|
|
285
|
+
check: String(g.check),
|
|
286
|
+
severity: g.severity,
|
|
287
|
+
message: g.message,
|
|
288
|
+
};
|
|
289
|
+
}),
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Create a new spell builder
|
|
295
|
+
*/
|
|
296
|
+
export function spell(name) {
|
|
297
|
+
return new SpellBuilder(name);
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=spell-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spell-builder.js","sourceRoot":"","sources":["../../src/builders/spell-builder.ts"],"names":[],"mappings":"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"}
|