@senpi/trading-recipe 1.0.45 → 1.0.46

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 (38) hide show
  1. package/dist/cli/guide-commands.d.ts.map +1 -1
  2. package/dist/cli/guide-commands.js +1 -11
  3. package/dist/cli/guide-commands.js.map +1 -1
  4. package/dist/constants/dsl/index.d.ts +7 -0
  5. package/dist/constants/dsl/index.d.ts.map +1 -1
  6. package/dist/constants/dsl/index.js +7 -0
  7. package/dist/constants/dsl/index.js.map +1 -1
  8. package/dist/dsl/config/exit-block.d.ts +1 -3
  9. package/dist/dsl/config/exit-block.d.ts.map +1 -1
  10. package/dist/dsl/config/parse-phase.js +5 -5
  11. package/dist/dsl/config/parse-phase.js.map +1 -1
  12. package/dist/dsl/config/parse-plugin-config.d.ts.map +1 -1
  13. package/dist/dsl/config/parse-plugin-config.js +11 -41
  14. package/dist/dsl/config/parse-plugin-config.js.map +1 -1
  15. package/dist/dsl/config/parse-preset.js +2 -2
  16. package/dist/dsl/config/parse-preset.js.map +1 -1
  17. package/dist/dsl/config/parse-tiers.js +1 -1
  18. package/dist/dsl/config/parse-tiers.js.map +1 -1
  19. package/dist/dsl/config/unknown-keys.d.ts +1 -1
  20. package/dist/dsl/config/unknown-keys.d.ts.map +1 -1
  21. package/dist/dsl/config/unknown-keys.js +5 -58
  22. package/dist/dsl/config/unknown-keys.js.map +1 -1
  23. package/dist/runtime/load-trading-recipe.js +2 -2
  24. package/dist/runtime/load-trading-recipe.js.map +1 -1
  25. package/dist/runtime/map-exit-config.d.ts +2 -3
  26. package/dist/runtime/map-exit-config.d.ts.map +1 -1
  27. package/dist/runtime/map-exit-config.js +6 -28
  28. package/dist/runtime/map-exit-config.js.map +1 -1
  29. package/dist/runtime/runtime.d.ts.map +1 -1
  30. package/dist/runtime/runtime.js +3 -1
  31. package/dist/runtime/runtime.js.map +1 -1
  32. package/dist/runtime/trading-recipe-schema.d.ts +24 -19416
  33. package/dist/runtime/trading-recipe-schema.d.ts.map +1 -1
  34. package/dist/runtime/trading-recipe-schema.js +1 -39
  35. package/dist/runtime/trading-recipe-schema.js.map +1 -1
  36. package/examples/strategies/dsl-showcase.yaml +1 -1
  37. package/openclaw.plugin.json +1 -1
  38. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+UH,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CA2CN"}
1
+ {"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqUH,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CA2CN"}
@@ -162,7 +162,6 @@ exit:
162
162
  engine: dsl
163
163
  interval_seconds: 30
164
164
 
165
- # Recommended: one flat preset (no nested map name).
166
165
  dsl_preset:
167
166
  hard_timeout: ... # optional; same level as phase1 / phase2
168
167
  weak_peak_cut: ...
@@ -170,12 +169,6 @@ exit:
170
169
  phase1: ...
171
170
  phase2: ...
172
171
 
173
- # Alternative: multiple named presets (set exit.preset when 2+ keys).
174
- # dsl_presets:
175
- # dsl: { phase1: ..., phase2: ... }
176
- # aggressive: { ... }
177
- # preset: dsl
178
-
179
172
  ──────────────────────────────────────────────────────────────────────────────
180
173
  Phase 1 — Fixed floor + high-water trailing
181
174
  Floor = max(absolute_floor, trailing_floor). Absolute floor from max_loss_pct
@@ -270,10 +263,7 @@ actions[]
270
263
  exit
271
264
  engine string No dsl
272
265
  interval_seconds number No Default 30; integer 5–3600 (Zod + DSL parse)
273
- dsl_preset object No Single exit profile (preferred). Mutually exclusive with dsl_presets / dsl
274
- preset string No Required when dsl_presets has 2+ keys; with dsl_preset defaults to dsl
275
- dsl_presets object No Named preset map (advanced; use exit.preset to choose)
276
- dsl object No Legacy alias for dsl_presets
266
+ dsl_preset object No Single exit profile (required to start DslPlugin)
277
267
  sm_flip any No Non-DSL exit hook data (allowed; ignored by DSL parse)
278
268
 
279
269
  Preset: max_loss_pct (or phase1.max_loss_pct), phase1 (optional enabled;
@@ -1 +1 @@
1
- {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,13 @@ export declare const DSL_EVENTS: {
23
23
  export declare const DEFAULT_STATE_DIR = ".dsl-state";
24
24
  /** On-disk DSL state schema version (v1 = DSL engine v2; no migration from older files). */
25
25
  export declare const DSL_STATE_VERSION = 1;
26
+ /**
27
+ * Recipe YAML uses a single `exit.dsl_preset` object; after parse it becomes this key in
28
+ * DslPluginConfig.presets. position.opened may set preset to override (must match this name).
29
+ */
30
+ export declare const CANONICAL_DSL_PRESET_NAME = "default";
31
+ /** Validation / parse error paths for the lone recipe preset. */
32
+ export declare const EXIT_DSL_PRESET_PATH = "exit.dsl_preset";
26
33
  /** Close reasons for DSL state (closeReason) and position.closed (reason). */
27
34
  export declare const CLOSE_REASON: {
28
35
  readonly MANUAL_CLOSE: "manual_close";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,uBAAuB,EAAG,UAAmB,CAAC;AAE3D,uGAAuG;AACvG,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,cAAc,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,uBAAuB,EAAG,UAAmB,CAAC;AAE3D,uGAAuG;AACvG,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,cAAc,IAAI,CAAC"}
@@ -24,6 +24,13 @@ export const DSL_EVENTS = {
24
24
  export const DEFAULT_STATE_DIR = ".dsl-state";
25
25
  /** On-disk DSL state schema version (v1 = DSL engine v2; no migration from older files). */
26
26
  export const DSL_STATE_VERSION = 1;
27
+ /**
28
+ * Recipe YAML uses a single `exit.dsl_preset` object; after parse it becomes this key in
29
+ * DslPluginConfig.presets. position.opened may set preset to override (must match this name).
30
+ */
31
+ export const CANONICAL_DSL_PRESET_NAME = "default";
32
+ /** Validation / parse error paths for the lone recipe preset. */
33
+ export const EXIT_DSL_PRESET_PATH = "exit.dsl_preset";
27
34
  /** Close reasons for DSL state (closeReason) and position.closed (reason). */
28
35
  export const CLOSE_REASON = {
29
36
  MANUAL_CLOSE: "manual_close",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAmB,CAAC;AAE3D,uGAAuG;AACvG,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;IACxC,OAAO,EAAE,aAAa;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;CAClB,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,mFAAmF;AACnF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAmB,CAAC;AAE3D,uGAAuG;AACvG,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;IACxC,OAAO,EAAE,aAAa;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAEnD,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;CAClB,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,mFAAmF;AACnF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC"}
@@ -5,9 +5,7 @@ import type { RawPreset } from "./raw-types.js";
5
5
  export interface ExitBlockConfig {
6
6
  engine?: string;
7
7
  interval_seconds?: number;
8
- preset?: string;
9
- /** Single preset; normalized to dsl_presets.dsl before parse (mutually exclusive with non-empty dsl_presets). */
8
+ /** Single DSL exit profile (required when starting DslPlugin). */
10
9
  dsl_preset?: RawPreset;
11
- dsl_presets?: Record<string, RawPreset>;
12
10
  }
13
11
  //# sourceMappingURL=exit-block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exit-block.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/exit-block.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iHAAiH;IACjH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"exit-block.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/exit-block.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB"}
@@ -13,7 +13,7 @@ export function readPhase1(presetName, phase1, presetMaxLossPct) {
13
13
  throw new DslConfigValidationError([
14
14
  dslValidationIssue("INVALID_MAX_LOSS_PCT", !(maxLossPct > 0)
15
15
  ? "max_loss_pct must be > 0 when phase1.enabled is false"
16
- : "max_loss_pct must be <= 100", `dsl_presets.${presetName}.phase1.max_loss_pct`),
16
+ : "max_loss_pct must be <= 100", `${presetName}.phase1.max_loss_pct`),
17
17
  ]);
18
18
  }
19
19
  return {
@@ -28,19 +28,19 @@ export function readPhase1(presetName, phase1, presetMaxLossPct) {
28
28
  throw new DslConfigValidationError([
29
29
  dslValidationIssue("INVALID_MAX_LOSS_PCT", !(maxLossPct > 0)
30
30
  ? "phase1.max_loss_pct is required and must be > 0 (or set preset max_loss_pct)"
31
- : "phase1.max_loss_pct must be <= 100", `dsl_presets.${presetName}.phase1.max_loss_pct`),
31
+ : "phase1.max_loss_pct must be <= 100", `${presetName}.phase1.max_loss_pct`),
32
32
  ]);
33
33
  }
34
34
  const retraceThreshold = Number(phase1.retrace_threshold ?? phase1.retraceThreshold);
35
35
  if (!(retraceThreshold > 0)) {
36
36
  throw new DslConfigValidationError([
37
- dslValidationIssue("INVALID_RETRACE_THRESHOLD", "phase1.retrace_threshold is required and must be > 0 (ROE %)", `dsl_presets.${presetName}.phase1.retrace_threshold`),
37
+ dslValidationIssue("INVALID_RETRACE_THRESHOLD", "phase1.retrace_threshold is required and must be > 0 (ROE %)", `${presetName}.phase1.retrace_threshold`),
38
38
  ]);
39
39
  }
40
40
  const phase1Breaches = Number(phase1.consecutive_breaches_required ?? phase1.consecutiveBreachesRequired);
41
41
  if (!Number.isFinite(phase1Breaches) || phase1Breaches < 1 || !Number.isInteger(phase1Breaches)) {
42
42
  throw new DslConfigValidationError([
43
- dslValidationIssue("INVALID_CONSECUTIVE_BREACHES", "phase1.consecutive_breaches_required must be an integer >= 1", `dsl_presets.${presetName}.phase1.consecutive_breaches_required`),
43
+ dslValidationIssue("INVALID_CONSECUTIVE_BREACHES", "phase1.consecutive_breaches_required must be an integer >= 1", `${presetName}.phase1.consecutive_breaches_required`),
44
44
  ]);
45
45
  }
46
46
  return { maxLossPct, retraceThreshold, phase1Breaches, phase1Enabled: true };
@@ -60,7 +60,7 @@ export function readPhase2Scalars(presetName, phase2, requireTiersArray) {
60
60
  for (const k of legacyKeys) {
61
61
  if (phase2[k] != null) {
62
62
  throw new DslConfigValidationError([
63
- dslValidationIssue("LEGACY_PHASE2_FIELD", `phase2.${k} is no longer supported (phase 2 is exchange-SL driven; remove retrace and breach fields)`, `dsl_presets.${presetName}.phase2.${k}`),
63
+ dslValidationIssue("LEGACY_PHASE2_FIELD", `phase2.${k} is no longer supported (phase 2 is exchange-SL driven; remove retrace and breach fields)`, `${presetName}.phase2.${k}`),
64
64
  ]);
65
65
  }
66
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-phase.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-phase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-phase.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-phase.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-plugin-config.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/parse-plugin-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,0BAA0B,CAAC;AAOjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA2BvD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CA2B1E;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
1
+ {"version":3,"file":"parse-plugin-config.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/parse-plugin-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,0BAA0B,CAAC;AASjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAiB1E;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -1,55 +1,25 @@
1
1
  /**
2
2
  * Parse full exit block into runtime DslPluginConfig.
3
3
  */
4
- import { MIN_INTERVAL_SECONDS, MAX_INTERVAL_SECONDS, DEFAULT_INTERVAL_MS, } from "../../constants/dsl/index.js";
4
+ import { MIN_INTERVAL_SECONDS, MAX_INTERVAL_SECONDS, DEFAULT_INTERVAL_MS, CANONICAL_DSL_PRESET_NAME, EXIT_DSL_PRESET_PATH, } from "../../constants/dsl/index.js";
5
5
  import { validateIntervalSeconds } from "./validation.js";
6
6
  import { parsePreset } from "./parse-preset.js";
7
7
  import { validateExitBlockConfigUnknownKeys } from "./unknown-keys.js";
8
- function normalizeExitBlockConfig(raw) {
9
- const r = raw;
10
- const single = r.dsl_preset;
11
- const map = r.dsl_presets;
12
- if (single != null && typeof single === "object" && !Array.isArray(single)) {
13
- if (map != null && typeof map === "object" && Object.keys(map).length > 0) {
14
- throw new Error("exit.dsl_preset and exit.dsl_presets cannot both be set; use one or the other");
15
- }
16
- const presetName = typeof raw.preset === "string" && raw.preset.length > 0 ? raw.preset : "dsl";
17
- const out = {
18
- ...raw,
19
- dsl_presets: { [presetName]: single },
20
- preset: presetName,
21
- };
22
- delete out.dsl_preset;
23
- return out;
24
- }
25
- return raw;
26
- }
27
8
  export function parseDslPluginConfig(raw) {
28
- const normalized = normalizeExitBlockConfig(raw);
29
- validateExitBlockConfigUnknownKeys(normalized);
30
- const intervalSeconds = normalized.interval_seconds ?? 30;
9
+ validateExitBlockConfigUnknownKeys(raw);
10
+ const intervalSeconds = raw.interval_seconds ?? 30;
31
11
  validateIntervalSeconds(intervalSeconds, MIN_INTERVAL_SECONDS, MAX_INTERVAL_SECONDS);
32
12
  const intervalMs = intervalSeconds * 1000;
33
13
  const minIntervalMinutes = intervalMs / 60_000;
34
- const presetsRaw = normalized.dsl_presets ?? {};
35
- const presets = {};
36
- for (const [name, p] of Object.entries(presetsRaw)) {
37
- if (p && typeof p === "object")
38
- presets[name] = parsePreset(name, p, minIntervalMinutes);
39
- }
40
- const presetKeys = Object.keys(presets);
41
- if (presetKeys.length === 0) {
42
- throw new Error("At least one dsl_presets entry is required");
43
- }
44
- if (presetKeys.length > 1 && typeof normalized.preset !== "string") {
45
- throw new Error(`exit.preset is required when dsl_presets has more than one entry (keys: ${presetKeys.join(", ")}). ` +
46
- `Set preset: "<name>" to select one, or use a single canonical preset key (recommended: dsl).`);
47
- }
48
- const preset = typeof normalized.preset === "string" ? normalized.preset : presetKeys[0];
49
- if (!presets[preset]) {
50
- throw new Error(`Preset "${preset}" not found in dsl_presets`);
14
+ const single = raw.dsl_preset;
15
+ if (single == null || typeof single !== "object" || Array.isArray(single)) {
16
+ throw new Error("exit.dsl_preset is required and must be an object when configuring DSL");
51
17
  }
52
- return { intervalMs, preset, presets };
18
+ const parsed = parsePreset(EXIT_DSL_PRESET_PATH, single, minIntervalMinutes);
19
+ const presets = {
20
+ [CANONICAL_DSL_PRESET_NAME]: parsed,
21
+ };
22
+ return { intervalMs, preset: CANONICAL_DSL_PRESET_NAME, presets };
53
23
  }
54
24
  export function getDefaultIntervalMs() {
55
25
  return DEFAULT_INTERVAL_MS;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-plugin-config.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-plugin-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-plugin-config.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-plugin-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AAEvE,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,kCAAkC,CAAC,GAA8B,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACnD,uBAAuB,CAAC,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,eAAe,GAAG,IAAI,CAAC;IAC1C,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,CAAC;IAE/C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;IAC9B,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,oBAAoB,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAoC;QAC/C,CAAC,yBAAyB,CAAC,EAAE,MAAM;KACpC,CAAC;IACF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
@@ -8,7 +8,7 @@ import { parseTier } from "./parse-tiers.js";
8
8
  function assertNoLegacyPresetKeys(presetName, raw) {
9
9
  if (raw.phase2_trigger_tier != null) {
10
10
  throw new DslConfigValidationError([
11
- dslValidationIssue("LEGACY_PRESET_FIELD", "phase2_trigger_tier was removed; phase 2 starts at tier 0 (first tier)", `dsl_presets.${presetName}.phase2_trigger_tier`),
11
+ dslValidationIssue("LEGACY_PRESET_FIELD", "phase2_trigger_tier was removed; phase 2 starts at tier 0 (first tier)", `${presetName}.phase2_trigger_tier`),
12
12
  ]);
13
13
  }
14
14
  const p1 = raw.phase1;
@@ -16,7 +16,7 @@ function assertNoLegacyPresetKeys(presetName, raw) {
16
16
  for (const k of ["hard_timeout", "weak_peak_cut", "dead_weight_cut"]) {
17
17
  if (p1[k] != null) {
18
18
  throw new DslConfigValidationError([
19
- dslValidationIssue("LEGACY_PHASE1_FIELD", `phase1.${k} was removed; define ${k} at the preset root (same shape)`, `dsl_presets.${presetName}.phase1.${k}`),
19
+ dslValidationIssue("LEGACY_PHASE1_FIELD", `phase1.${k} was removed; define ${k} at the preset root (same shape)`, `${presetName}.phase1.${k}`),
20
20
  ]);
21
21
  }
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-preset.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-preset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-preset.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-preset.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { DslConfigValidationError, dslValidationIssue } from "./validation.js";
5
5
  export function parseTier(presetName, raw, tierIndex, tiersPathForErrors) {
6
- const path = (field) => `dsl_presets.${presetName}.${tiersPathForErrors}[${tierIndex}].${field}`;
6
+ const path = (field) => `${presetName}.${tiersPathForErrors}[${tierIndex}].${field}`;
7
7
  if (raw.breaches != null) {
8
8
  throw new DslConfigValidationError([
9
9
  dslValidationIssue("LEGACY_TIER_FIELD", 'tier.breaches is no longer supported (phase 2 breach counting removed)', path("breaches")),
@@ -1 +1 @@
1
- {"version":3,"file":"parse-tiers.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-tiers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,MAAM,UAAU,SAAS,CACvB,UAAkB,EAClB,GAAY,EACZ,SAAiB,EACjB,kBAA0B;IAE1B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAC7B,eAAe,UAAU,IAAI,kBAAkB,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;IAC3E,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,mBAAmB,EACnB,wEAAwE,EACxE,IAAI,CAAC,UAAU,CAAC,CACjB;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,IAAK,GAA+B,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;QAClF,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,mBAAmB,EACnB,qCAAqC,EACrC,IAAI,CAAC,SAAS,CAAC,CAChB;SACF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QAC1C,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,qBAAqB,EACrB,oCAAoC,EACpC,IAAI,CAAC,aAAa,CAAC,CACpB;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACpE,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,qBAAqB,EACrB,iDAAiD,EACjD,IAAI,CAAC,aAAa,CAAC,CACpB;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"parse-tiers.js","sourceRoot":"","sources":["../../../src/dsl/config/parse-tiers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG/E,MAAM,UAAU,SAAS,CACvB,UAAkB,EAClB,GAAY,EACZ,SAAiB,EACjB,kBAA0B;IAE1B,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAC7B,GAAG,UAAU,IAAI,kBAAkB,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,mBAAmB,EACnB,wEAAwE,EACxE,IAAI,CAAC,UAAU,CAAC,CACjB;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,IAAK,GAA+B,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;QAClF,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,mBAAmB,EACnB,qCAAqC,EACrC,IAAI,CAAC,SAAS,CAAC,CAChB;SACF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QAC1C,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,qBAAqB,EACrB,oCAAoC,EACpC,IAAI,CAAC,aAAa,CAAC,CACpB;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACpE,MAAM,IAAI,wBAAwB,CAAC;YACjC,kBAAkB,CAChB,qBAAqB,EACrB,iDAAiD,EACjD,IAAI,CAAC,aAAa,CAAC,CACpB;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC"}
@@ -2,6 +2,6 @@
2
2
  * Reject unknown keys in exit / DSL YAML so typos are not silently ignored.
3
3
  */
4
4
  export declare function validateRawExitBlockAndPresetsUnknownKeys(exit: Record<string, unknown>): void;
5
- /** Validate ExitBlockConfig for parseDslPluginConfig (may include dsl_preset before normalization). */
5
+ /** Validate ExitBlockConfig for parseDslPluginConfig. */
6
6
  export declare function validateExitBlockConfigUnknownKeys(raw: Record<string, unknown>): void;
7
7
  //# sourceMappingURL=unknown-keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unknown-keys.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/unknown-keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyJH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAqC7F;AAED,uGAAuG;AACvG,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA8BrF"}
1
+ {"version":3,"file":"unknown-keys.d.ts","sourceRoot":"","sources":["../../../src/dsl/config/unknown-keys.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuIH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAW7F;AAED,yDAAyD;AACzD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWrF"}
@@ -6,21 +6,11 @@ import { DslConfigValidationError, dslValidationIssue, } from "./validation.js";
6
6
  const EXIT_RECIPE_KEYS = new Set([
7
7
  "engine",
8
8
  "interval_seconds",
9
- "preset",
10
- /** Single preset object (sugar for dsl_presets.dsl + preset dsl). */
11
9
  "dsl_preset",
12
- "dsl_presets",
13
- "dsl",
14
10
  "sm_flip",
15
11
  ]);
16
- /** Keys allowed on ExitBlockConfig passed to parseDslPluginConfig (post-map). */
17
- const EXIT_BLOCK_CONFIG_KEYS = new Set([
18
- "engine",
19
- "interval_seconds",
20
- "preset",
21
- "dsl_preset",
22
- "dsl_presets",
23
- ]);
12
+ /** Keys allowed on ExitBlockConfig passed to parseDslPluginConfig. */
13
+ const EXIT_BLOCK_CONFIG_KEYS = new Set(["engine", "interval_seconds", "dsl_preset"]);
24
14
  const PRESET_KEYS = new Set([
25
15
  "tiers",
26
16
  "max_loss_pct",
@@ -105,66 +95,23 @@ function validatePresetObject(presetPath, raw, issues) {
105
95
  });
106
96
  }
107
97
  }
108
- /**
109
- * Validate raw `exit:` from the trading recipe (before map strips keys).
110
- * Validates every preset map present (`dsl_presets` and/or `dsl`) so typos are caught even when one block is shadowed by the other at runtime.
111
- */
112
- function presetMapNonEmpty(v) {
113
- return isPlainObject(v) && Object.keys(v).length > 0;
114
- }
115
98
  export function validateRawExitBlockAndPresetsUnknownKeys(exit) {
116
99
  const issues = [];
117
100
  addUnknownKeyIssues(issues, unknownKeyList(exit, EXIT_RECIPE_KEYS), "exit");
118
- const hasDslPreset = exit.dsl_preset != null && isPlainObject(exit.dsl_preset);
119
- const hasPresetsMap = presetMapNonEmpty(exit.dsl_presets);
120
- const hasDslAliasMap = presetMapNonEmpty(exit.dsl);
121
- if (hasDslPreset && (hasPresetsMap || hasDslAliasMap)) {
122
- issues.push(dslValidationIssue("DSL_PRESET_SOURCE_CONFLICT", "use only one of exit.dsl_preset (single preset) or exit.dsl_presets / exit.dsl (named map), not both", "exit"));
123
- }
124
- if (hasDslPreset && !hasPresetsMap && !hasDslAliasMap) {
101
+ if (exit.dsl_preset != null && isPlainObject(exit.dsl_preset)) {
125
102
  validatePresetObject("exit.dsl_preset", exit.dsl_preset, issues);
126
103
  }
127
- if (exit.dsl_presets != null && isPlainObject(exit.dsl_presets)) {
128
- for (const name of Object.keys(exit.dsl_presets)) {
129
- const p = exit.dsl_presets[name];
130
- if (!isPlainObject(p))
131
- continue;
132
- validatePresetObject(`exit.dsl_presets.${name}`, p, issues);
133
- }
134
- }
135
- if (exit.dsl != null && isPlainObject(exit.dsl)) {
136
- for (const name of Object.keys(exit.dsl)) {
137
- const p = exit.dsl[name];
138
- if (!isPlainObject(p))
139
- continue;
140
- validatePresetObject(`exit.dsl.${name}`, p, issues);
141
- }
142
- }
143
104
  if (issues.length > 0) {
144
105
  throw new DslConfigValidationError(issues);
145
106
  }
146
107
  }
147
- /** Validate ExitBlockConfig for parseDslPluginConfig (may include dsl_preset before normalization). */
108
+ /** Validate ExitBlockConfig for parseDslPluginConfig. */
148
109
  export function validateExitBlockConfigUnknownKeys(raw) {
149
110
  const issues = [];
150
111
  addUnknownKeyIssues(issues, unknownKeyList(raw, EXIT_BLOCK_CONFIG_KEYS), "exit");
151
- const hasDslPreset = raw.dsl_preset != null && isPlainObject(raw.dsl_preset);
152
- const hasPresetsMap = presetMapNonEmpty(raw.dsl_presets);
153
- if (hasDslPreset && hasPresetsMap) {
154
- issues.push(dslValidationIssue("DSL_PRESET_SOURCE_CONFLICT", "use only one of exit.dsl_preset or exit.dsl_presets, not both", "exit"));
155
- }
156
- if (hasDslPreset && !hasPresetsMap) {
112
+ if (raw.dsl_preset != null && isPlainObject(raw.dsl_preset)) {
157
113
  validatePresetObject("exit.dsl_preset", raw.dsl_preset, issues);
158
114
  }
159
- const presets = raw.dsl_presets;
160
- if (presets != null && isPlainObject(presets)) {
161
- for (const name of Object.keys(presets)) {
162
- const p = presets[name];
163
- if (!isPlainObject(p))
164
- continue;
165
- validatePresetObject(`exit.dsl_presets.${name}`, p, issues);
166
- }
167
- }
168
115
  if (issues.length > 0) {
169
116
  throw new DslConfigValidationError(issues);
170
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"unknown-keys.js","sourceRoot":"","sources":["../../../src/dsl/config/unknown-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unknown-keys.js","sourceRoot":"","sources":["../../../src/dsl/config/unknown-keys.ts"],"names":[],"mappings":"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"}
@@ -48,9 +48,9 @@ const HINTS = [
48
48
  hint: "Top-level 'name' is required and must be a non-empty string (e.g. name: my-recipe).",
49
49
  },
50
50
  {
51
- pathMatch: /^exit\.|\.exit\.|dsl_presets|\.dsl\./,
51
+ pathMatch: /^exit\.|\.exit\.|dsl_preset/,
52
52
  messageMatch: /required|Expected|derivable/,
53
- hint: "exit.dsl_preset (single object) or exit.dsl_presets (named map; exit.preset required if 2+ keys). max_loss_pct in phase1 or preset root; tiers use lock_hw_pct. Run: openclaw senpi guide exit",
53
+ hint: "exit.dsl_preset (object): max_loss_pct in phase1 or preset root; tiers use lock_hw_pct. Run: openclaw senpi guide exit",
54
54
  },
55
55
  {
56
56
  pathMatch: /^actions\.\d+\./,
@@ -1 +1 @@
1
- {"version":3,"file":"load-trading-recipe.js","sourceRoot":"","sources":["../../src/runtime/load-trading-recipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load-trading-recipe.js","sourceRoot":"","sources":["../../src/runtime/load-trading-recipe.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  /**
2
- * Map trading recipe exit to DSL plugin ExitBlockConfig.
3
- * `dsl_preset` expands to `dsl_presets.dsl` and `preset: dsl`. Otherwise uses `dsl_presets` or `dsl`.
2
+ * Map trading recipe exit to DSL plugin ExitBlockConfig (single exit.dsl_preset only).
4
3
  */
5
4
  import type { ExitBlockConfig } from "../dsl/config/index.js";
6
5
  import type { TradingRecipeExit } from "./trading-recipe-schema.js";
7
6
  /**
8
7
  * Adapt playbook exit to ExitBlockConfig for parseDslPluginConfig.
9
- * Uses exit.dsl_presets if present, else exit.dsl. Passes exit.interval_seconds and exit.engine.
8
+ * Only `exit.dsl_preset` is supported; passes exit.interval_seconds and exit.engine.
10
9
  */
11
10
  export declare function mapTradingRecipeExitToDslConfig(exit: TradingRecipeExit | undefined): ExitBlockConfig;
12
11
  //# sourceMappingURL=map-exit-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-exit-config.d.ts","sourceRoot":"","sources":["../../src/runtime/map-exit-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAgGpE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,eAAe,CAqCpG"}
1
+ {"version":3,"file":"map-exit-config.d.ts","sourceRoot":"","sources":["../../src/runtime/map-exit-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AA4FpE;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,eAAe,CAoBpG"}
@@ -1,11 +1,7 @@
1
1
  /**
2
- * Map trading recipe exit to DSL plugin ExitBlockConfig.
3
- * `dsl_preset` expands to `dsl_presets.dsl` and `preset: dsl`. Otherwise uses `dsl_presets` or `dsl`.
2
+ * Map trading recipe exit to DSL plugin ExitBlockConfig (single exit.dsl_preset only).
4
3
  */
5
4
  import { validateRawExitBlockAndPresetsUnknownKeys } from "../dsl/config/unknown-keys.js";
6
- function presetErrorPath(source, presetName) {
7
- return source === "dsl_preset" ? "exit.dsl_preset" : `exit.${source}.${presetName}`;
8
- }
9
5
  function deriveMaxLossPct(preset) {
10
6
  const n = preset.max_loss_pct;
11
7
  if (typeof n === "number" && n > 0)
@@ -16,7 +12,7 @@ function deriveMaxLossPct(preset) {
16
12
  }
17
13
  return undefined;
18
14
  }
19
- function buildPreset(name, rawObj, source) {
15
+ function buildPreset(rawObj) {
20
16
  const preset = {};
21
17
  if (Array.isArray(rawObj.tiers)) {
22
18
  preset.tiers = rawObj.tiers.map((t) => ({
@@ -32,7 +28,7 @@ function buildPreset(name, rawObj, source) {
32
28
  maxLoss = 1;
33
29
  }
34
30
  if (maxLoss == null || !(maxLoss > 0)) {
35
- throw new Error(`${presetErrorPath(source, name)}: max_loss_pct is required or must be set in preset.max_loss_pct or preset.phase1.max_loss_pct. Run: openclaw senpi guide exit`);
31
+ throw new Error("exit.dsl_preset: max_loss_pct is required or must be set in dsl_preset.max_loss_pct or dsl_preset.phase1.max_loss_pct. Run: openclaw senpi guide exit");
36
32
  }
37
33
  preset.max_loss_pct = maxLoss;
38
34
  if (rawObj.phase1 && typeof rawObj.phase1 === "object") {
@@ -66,7 +62,7 @@ function buildPreset(name, rawObj, source) {
66
62
  }
67
63
  /**
68
64
  * Adapt playbook exit to ExitBlockConfig for parseDslPluginConfig.
69
- * Uses exit.dsl_presets if present, else exit.dsl. Passes exit.interval_seconds and exit.engine.
65
+ * Only `exit.dsl_preset` is supported; passes exit.interval_seconds and exit.engine.
70
66
  */
71
67
  export function mapTradingRecipeExitToDslConfig(exit) {
72
68
  if (exit != null && typeof exit === "object") {
@@ -75,34 +71,16 @@ export function mapTradingRecipeExitToDslConfig(exit) {
75
71
  const rawExit = exit;
76
72
  const dslPresetSingle = rawExit?.dsl_preset;
77
73
  if (dslPresetSingle != null && typeof dslPresetSingle === "object" && !Array.isArray(dslPresetSingle)) {
78
- const built = buildPreset("", dslPresetSingle, "dsl_preset");
74
+ const built = buildPreset(dslPresetSingle);
79
75
  return {
80
76
  interval_seconds: exit?.interval_seconds ?? 30,
81
77
  ...(exit?.engine != null && { engine: exit.engine }),
82
- preset: "dsl",
83
- dsl_presets: { dsl: built },
78
+ dsl_preset: built,
84
79
  };
85
80
  }
86
- const presetsSource = exit?.dsl_presets ?? exit?.dsl;
87
- const sourceKey = exit?.dsl_presets != null ? "dsl_presets" : "dsl";
88
- if (!presetsSource || typeof presetsSource !== "object") {
89
- return {
90
- interval_seconds: exit?.interval_seconds ?? 30,
91
- ...(exit?.engine != null && { engine: exit.engine }),
92
- dsl_presets: {},
93
- };
94
- }
95
- const dsl_presets = {};
96
- for (const [name, raw] of Object.entries(presetsSource)) {
97
- if (!raw || typeof raw !== "object")
98
- continue;
99
- dsl_presets[name] = buildPreset(name, raw, sourceKey);
100
- }
101
81
  return {
102
82
  interval_seconds: exit?.interval_seconds ?? 30,
103
83
  ...(exit?.engine != null && { engine: exit.engine }),
104
- ...(typeof exit?.preset === "string" && exit.preset.length > 0 ? { preset: exit.preset } : {}),
105
- dsl_presets: dsl_presets,
106
84
  };
107
85
  }
108
86
  //# sourceMappingURL=map-exit-config.js.map