@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.
Files changed (205) hide show
  1. package/dist/builders/expressions.d.ts +33 -0
  2. package/dist/builders/expressions.d.ts.map +1 -0
  3. package/dist/builders/expressions.js +57 -0
  4. package/dist/builders/expressions.js.map +1 -0
  5. package/dist/builders/index.d.ts +44 -0
  6. package/dist/builders/index.d.ts.map +1 -0
  7. package/dist/builders/index.js +32 -0
  8. package/dist/builders/index.js.map +1 -0
  9. package/dist/builders/spell-builder.d.ts +124 -0
  10. package/dist/builders/spell-builder.d.ts.map +1 -0
  11. package/dist/builders/spell-builder.js +299 -0
  12. package/dist/builders/spell-builder.js.map +1 -0
  13. package/dist/builders/step-builder.d.ts +212 -0
  14. package/dist/builders/step-builder.d.ts.map +1 -0
  15. package/dist/builders/step-builder.js +499 -0
  16. package/dist/builders/step-builder.js.map +1 -0
  17. package/dist/compiler/expression-parser.d.ts +14 -0
  18. package/dist/compiler/expression-parser.d.ts.map +1 -0
  19. package/dist/compiler/expression-parser.js +460 -0
  20. package/dist/compiler/expression-parser.js.map +1 -0
  21. package/dist/compiler/grimoire/ast.d.ts +450 -0
  22. package/dist/compiler/grimoire/ast.d.ts.map +1 -0
  23. package/dist/compiler/grimoire/ast.js +19 -0
  24. package/dist/compiler/grimoire/ast.js.map +1 -0
  25. package/dist/compiler/grimoire/errors.d.ts +65 -0
  26. package/dist/compiler/grimoire/errors.d.ts.map +1 -0
  27. package/dist/compiler/grimoire/errors.js +86 -0
  28. package/dist/compiler/grimoire/errors.js.map +1 -0
  29. package/dist/compiler/grimoire/index.d.ts +24 -0
  30. package/dist/compiler/grimoire/index.d.ts.map +1 -0
  31. package/dist/compiler/grimoire/index.js +63 -0
  32. package/dist/compiler/grimoire/index.js.map +1 -0
  33. package/dist/compiler/grimoire/parser.d.ts +135 -0
  34. package/dist/compiler/grimoire/parser.d.ts.map +1 -0
  35. package/dist/compiler/grimoire/parser.js +2148 -0
  36. package/dist/compiler/grimoire/parser.js.map +1 -0
  37. package/dist/compiler/grimoire/tokenizer.d.ts +59 -0
  38. package/dist/compiler/grimoire/tokenizer.d.ts.map +1 -0
  39. package/dist/compiler/grimoire/tokenizer.js +509 -0
  40. package/dist/compiler/grimoire/tokenizer.js.map +1 -0
  41. package/dist/compiler/grimoire/transformer.d.ts +71 -0
  42. package/dist/compiler/grimoire/transformer.d.ts.map +1 -0
  43. package/dist/compiler/grimoire/transformer.js +1011 -0
  44. package/dist/compiler/grimoire/transformer.js.map +1 -0
  45. package/dist/compiler/index.d.ts +45 -0
  46. package/dist/compiler/index.d.ts.map +1 -0
  47. package/dist/compiler/index.js +97 -0
  48. package/dist/compiler/index.js.map +1 -0
  49. package/dist/compiler/ir-generator.d.ts +16 -0
  50. package/dist/compiler/ir-generator.d.ts.map +1 -0
  51. package/dist/compiler/ir-generator.js +997 -0
  52. package/dist/compiler/ir-generator.js.map +1 -0
  53. package/dist/compiler/validator.d.ts +15 -0
  54. package/dist/compiler/validator.d.ts.map +1 -0
  55. package/dist/compiler/validator.js +401 -0
  56. package/dist/compiler/validator.js.map +1 -0
  57. package/dist/index.d.ts +16 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +17 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/runtime/circuit-breaker.d.ts +59 -0
  62. package/dist/runtime/circuit-breaker.d.ts.map +1 -0
  63. package/dist/runtime/circuit-breaker.js +155 -0
  64. package/dist/runtime/circuit-breaker.js.map +1 -0
  65. package/dist/runtime/context.d.ts +92 -0
  66. package/dist/runtime/context.d.ts.map +1 -0
  67. package/dist/runtime/context.js +219 -0
  68. package/dist/runtime/context.js.map +1 -0
  69. package/dist/runtime/error-classifier.d.ts +16 -0
  70. package/dist/runtime/error-classifier.d.ts.map +1 -0
  71. package/dist/runtime/error-classifier.js +38 -0
  72. package/dist/runtime/error-classifier.js.map +1 -0
  73. package/dist/runtime/expression-evaluator.d.ts +36 -0
  74. package/dist/runtime/expression-evaluator.d.ts.map +1 -0
  75. package/dist/runtime/expression-evaluator.js +391 -0
  76. package/dist/runtime/expression-evaluator.js.map +1 -0
  77. package/dist/runtime/index.d.ts +12 -0
  78. package/dist/runtime/index.d.ts.map +1 -0
  79. package/dist/runtime/index.js +11 -0
  80. package/dist/runtime/index.js.map +1 -0
  81. package/dist/runtime/interpreter.d.ts +59 -0
  82. package/dist/runtime/interpreter.d.ts.map +1 -0
  83. package/dist/runtime/interpreter.js +414 -0
  84. package/dist/runtime/interpreter.js.map +1 -0
  85. package/dist/runtime/skills/registry.d.ts +11 -0
  86. package/dist/runtime/skills/registry.d.ts.map +1 -0
  87. package/dist/runtime/skills/registry.js +73 -0
  88. package/dist/runtime/skills/registry.js.map +1 -0
  89. package/dist/runtime/sqlite-state-store.d.ts +28 -0
  90. package/dist/runtime/sqlite-state-store.d.ts.map +1 -0
  91. package/dist/runtime/sqlite-state-store.js +180 -0
  92. package/dist/runtime/sqlite-state-store.js.map +1 -0
  93. package/dist/runtime/state-store.d.ts +52 -0
  94. package/dist/runtime/state-store.d.ts.map +1 -0
  95. package/dist/runtime/state-store.js +32 -0
  96. package/dist/runtime/state-store.js.map +1 -0
  97. package/dist/runtime/steps/action.d.ts +17 -0
  98. package/dist/runtime/steps/action.d.ts.map +1 -0
  99. package/dist/runtime/steps/action.js +430 -0
  100. package/dist/runtime/steps/action.js.map +1 -0
  101. package/dist/runtime/steps/advisory.d.ts +28 -0
  102. package/dist/runtime/steps/advisory.d.ts.map +1 -0
  103. package/dist/runtime/steps/advisory.js +209 -0
  104. package/dist/runtime/steps/advisory.js.map +1 -0
  105. package/dist/runtime/steps/compute.d.ts +9 -0
  106. package/dist/runtime/steps/compute.d.ts.map +1 -0
  107. package/dist/runtime/steps/compute.js +74 -0
  108. package/dist/runtime/steps/compute.js.map +1 -0
  109. package/dist/runtime/steps/conditional.d.ts +14 -0
  110. package/dist/runtime/steps/conditional.d.ts.map +1 -0
  111. package/dist/runtime/steps/conditional.js +58 -0
  112. package/dist/runtime/steps/conditional.js.map +1 -0
  113. package/dist/runtime/steps/emit.d.ts +9 -0
  114. package/dist/runtime/steps/emit.d.ts.map +1 -0
  115. package/dist/runtime/steps/emit.js +70 -0
  116. package/dist/runtime/steps/emit.js.map +1 -0
  117. package/dist/runtime/steps/halt.d.ts +9 -0
  118. package/dist/runtime/steps/halt.d.ts.map +1 -0
  119. package/dist/runtime/steps/halt.js +19 -0
  120. package/dist/runtime/steps/halt.js.map +1 -0
  121. package/dist/runtime/steps/loop.d.ts +14 -0
  122. package/dist/runtime/steps/loop.d.ts.map +1 -0
  123. package/dist/runtime/steps/loop.js +109 -0
  124. package/dist/runtime/steps/loop.js.map +1 -0
  125. package/dist/runtime/steps/parallel.d.ts +9 -0
  126. package/dist/runtime/steps/parallel.d.ts.map +1 -0
  127. package/dist/runtime/steps/parallel.js +87 -0
  128. package/dist/runtime/steps/parallel.js.map +1 -0
  129. package/dist/runtime/steps/pipeline.d.ts +9 -0
  130. package/dist/runtime/steps/pipeline.d.ts.map +1 -0
  131. package/dist/runtime/steps/pipeline.js +125 -0
  132. package/dist/runtime/steps/pipeline.js.map +1 -0
  133. package/dist/runtime/steps/try.d.ts +13 -0
  134. package/dist/runtime/steps/try.d.ts.map +1 -0
  135. package/dist/runtime/steps/try.js +222 -0
  136. package/dist/runtime/steps/try.js.map +1 -0
  137. package/dist/runtime/steps/wait.d.ts +9 -0
  138. package/dist/runtime/steps/wait.d.ts.map +1 -0
  139. package/dist/runtime/steps/wait.js +38 -0
  140. package/dist/runtime/steps/wait.js.map +1 -0
  141. package/dist/types/actions.d.ts +162 -0
  142. package/dist/types/actions.d.ts.map +1 -0
  143. package/dist/types/actions.js +5 -0
  144. package/dist/types/actions.js.map +1 -0
  145. package/dist/types/execution.d.ts +276 -0
  146. package/dist/types/execution.d.ts.map +1 -0
  147. package/dist/types/execution.js +5 -0
  148. package/dist/types/execution.js.map +1 -0
  149. package/dist/types/expressions.d.ts +100 -0
  150. package/dist/types/expressions.d.ts.map +1 -0
  151. package/dist/types/expressions.js +48 -0
  152. package/dist/types/expressions.js.map +1 -0
  153. package/dist/types/index.d.ts +14 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/index.js +5 -0
  156. package/dist/types/index.js.map +1 -0
  157. package/dist/types/ir.d.ts +187 -0
  158. package/dist/types/ir.d.ts.map +1 -0
  159. package/dist/types/ir.js +5 -0
  160. package/dist/types/ir.js.map +1 -0
  161. package/dist/types/policy.d.ts +123 -0
  162. package/dist/types/policy.d.ts.map +1 -0
  163. package/dist/types/policy.js +5 -0
  164. package/dist/types/policy.js.map +1 -0
  165. package/dist/types/primitives.d.ts +76 -0
  166. package/dist/types/primitives.d.ts.map +1 -0
  167. package/dist/types/primitives.js +10 -0
  168. package/dist/types/primitives.js.map +1 -0
  169. package/dist/types/steps.d.ts +226 -0
  170. package/dist/types/steps.d.ts.map +1 -0
  171. package/dist/types/steps.js +5 -0
  172. package/dist/types/steps.js.map +1 -0
  173. package/dist/venues/index.d.ts +6 -0
  174. package/dist/venues/index.d.ts.map +1 -0
  175. package/dist/venues/index.js +26 -0
  176. package/dist/venues/index.js.map +1 -0
  177. package/dist/venues/types.d.ts +40 -0
  178. package/dist/venues/types.d.ts.map +1 -0
  179. package/dist/venues/types.js +5 -0
  180. package/dist/venues/types.js.map +1 -0
  181. package/dist/wallet/executor.d.ts +109 -0
  182. package/dist/wallet/executor.d.ts.map +1 -0
  183. package/dist/wallet/executor.js +354 -0
  184. package/dist/wallet/executor.js.map +1 -0
  185. package/dist/wallet/index.d.ts +14 -0
  186. package/dist/wallet/index.d.ts.map +1 -0
  187. package/dist/wallet/index.js +13 -0
  188. package/dist/wallet/index.js.map +1 -0
  189. package/dist/wallet/keystore.d.ts +44 -0
  190. package/dist/wallet/keystore.d.ts.map +1 -0
  191. package/dist/wallet/keystore.js +296 -0
  192. package/dist/wallet/keystore.js.map +1 -0
  193. package/dist/wallet/provider.d.ts +111 -0
  194. package/dist/wallet/provider.d.ts.map +1 -0
  195. package/dist/wallet/provider.js +309 -0
  196. package/dist/wallet/provider.js.map +1 -0
  197. package/dist/wallet/tx-builder.d.ts +85 -0
  198. package/dist/wallet/tx-builder.d.ts.map +1 -0
  199. package/dist/wallet/tx-builder.js +290 -0
  200. package/dist/wallet/tx-builder.js.map +1 -0
  201. package/dist/wallet/types.d.ts +116 -0
  202. package/dist/wallet/types.d.ts.map +1 -0
  203. package/dist/wallet/types.js +86 -0
  204. package/dist/wallet/types.js.map +1 -0
  205. 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":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAW,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQlG,2CAA2C;AAC3C,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,SAAS,CAA2B;gBAEhC,IAAI,EAAE,MAAM;IASxB,4BAA4B;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAKtC,gCAAgC;IAChC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY;IAK9C,2BAA2B;IAC3B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAKrC,8BAA8B;IAC9B,KAAK,CACH,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,YAAY;IAUf,0BAA0B;IAC1B,MAAM,CACJ,MAAM,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,GACD,YAAY;IAYf,wBAAwB;IACxB,KAAK,CACH,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,YAAY;IAUf,iCAAiC;IACjC,OAAO,CACL,OAAO,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,GACD,YAAY;IAYf,sBAAsB;IACtB,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;QAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACA,YAAY;IAWf,8BAA8B;IAC9B,MAAM,CACJ,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;QAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC,GACD,YAAY;IAaf,mCAAmC;IACnC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY;IAQlF,mCAAmC;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY;IAQjF,kBAAkB;IAClB,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;QAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,kBAAkB,CAAC,EAAE;YACnB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,GACA,YAAY;IAUf,qBAAqB;IACrB,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE;YACV,cAAc,EAAE,MAAM,CAAC;YACvB,eAAe,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,GACA,YAAY;IAgBf,kBAAkB;IAClB,KAAK,CAAC,MAAM,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,YAAY;IAUhB,4BAA4B;IAC5B,aAAa,CAAC,MAAM,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC3B,QAAQ,EAAE,OAAO,CAAC;KACnB,GAAG,YAAY;IAWhB,oBAAoB;IACpB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY;IAKvC,iBAAiB;IACjB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY;IAK9B,yBAAyB;IACzB,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY;IAKlC,+BAA+B;IAC/B,KAAK,IAAI,OAAO;IAiBhB,yDAAyD;IACzD,WAAW,IAAI,WAAW;CAwH3B;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAEhD"}
@@ -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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"}