@senpi/trading-recipe 1.0.41 → 1.0.43

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 (127) hide show
  1. package/dist/cli/guide-commands.d.ts.map +1 -1
  2. package/dist/cli/guide-commands.js +75 -62
  3. package/dist/cli/guide-commands.js.map +1 -1
  4. package/dist/cli/senpi-commands.d.ts +2 -1
  5. package/dist/cli/senpi-commands.d.ts.map +1 -1
  6. package/dist/cli/senpi-commands.js +203 -1
  7. package/dist/cli/senpi-commands.js.map +1 -1
  8. package/dist/constants/dsl/index.d.ts +11 -7
  9. package/dist/constants/dsl/index.d.ts.map +1 -1
  10. package/dist/constants/dsl/index.js +11 -7
  11. package/dist/constants/dsl/index.js.map +1 -1
  12. package/dist/dsl/config/exit-block.d.ts +2 -0
  13. package/dist/dsl/config/exit-block.d.ts.map +1 -1
  14. package/dist/dsl/config/parse-phase.d.ts +0 -3
  15. package/dist/dsl/config/parse-phase.d.ts.map +1 -1
  16. package/dist/dsl/config/parse-phase.js +12 -45
  17. package/dist/dsl/config/parse-phase.js.map +1 -1
  18. package/dist/dsl/config/parse-plugin-config.d.ts.map +1 -1
  19. package/dist/dsl/config/parse-plugin-config.js +28 -4
  20. package/dist/dsl/config/parse-plugin-config.js.map +1 -1
  21. package/dist/dsl/config/parse-preset.d.ts.map +1 -1
  22. package/dist/dsl/config/parse-preset.js +36 -22
  23. package/dist/dsl/config/parse-preset.js.map +1 -1
  24. package/dist/dsl/config/parse-tiers.d.ts.map +1 -1
  25. package/dist/dsl/config/parse-tiers.js +11 -10
  26. package/dist/dsl/config/parse-tiers.js.map +1 -1
  27. package/dist/dsl/config/parse-timeouts.d.ts +11 -6
  28. package/dist/dsl/config/parse-timeouts.d.ts.map +1 -1
  29. package/dist/dsl/config/parse-timeouts.js +4 -4
  30. package/dist/dsl/config/parse-timeouts.js.map +1 -1
  31. package/dist/dsl/config/raw-types.d.ts +14 -18
  32. package/dist/dsl/config/raw-types.d.ts.map +1 -1
  33. package/dist/dsl/config/unknown-keys.d.ts +1 -5
  34. package/dist/dsl/config/unknown-keys.d.ts.map +1 -1
  35. package/dist/dsl/config/unknown-keys.js +42 -26
  36. package/dist/dsl/config/unknown-keys.js.map +1 -1
  37. package/dist/dsl/config/validation.d.ts +1 -1
  38. package/dist/dsl/config/validation.d.ts.map +1 -1
  39. package/dist/dsl/config/validation.js.map +1 -1
  40. package/dist/dsl/engine/exchange-stop.d.ts +2 -3
  41. package/dist/dsl/engine/exchange-stop.d.ts.map +1 -1
  42. package/dist/dsl/engine/exchange-stop.js +2 -3
  43. package/dist/dsl/engine/exchange-stop.js.map +1 -1
  44. package/dist/dsl/engine/floors.d.ts +3 -5
  45. package/dist/dsl/engine/floors.d.ts.map +1 -1
  46. package/dist/dsl/engine/floors.js +14 -31
  47. package/dist/dsl/engine/floors.js.map +1 -1
  48. package/dist/dsl/engine/state-updates.d.ts.map +1 -1
  49. package/dist/dsl/engine/state-updates.js +2 -2
  50. package/dist/dsl/engine/state-updates.js.map +1 -1
  51. package/dist/dsl/engine/tick.d.ts.map +1 -1
  52. package/dist/dsl/engine/tick.js +66 -52
  53. package/dist/dsl/engine/tick.js.map +1 -1
  54. package/dist/dsl/events/handlers.d.ts +5 -2
  55. package/dist/dsl/events/handlers.d.ts.map +1 -1
  56. package/dist/dsl/events/handlers.js +117 -9
  57. package/dist/dsl/events/handlers.js.map +1 -1
  58. package/dist/dsl/events/initial-state.d.ts +0 -2
  59. package/dist/dsl/events/initial-state.d.ts.map +1 -1
  60. package/dist/dsl/events/initial-state.js +8 -20
  61. package/dist/dsl/events/initial-state.js.map +1 -1
  62. package/dist/dsl/index.d.ts +1 -1
  63. package/dist/dsl/index.d.ts.map +1 -1
  64. package/dist/dsl/index.js.map +1 -1
  65. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  66. package/dist/dsl/monitor/create-monitor.js +11 -13
  67. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  68. package/dist/dsl/monitor/exchange-sync.js +2 -2
  69. package/dist/dsl/monitor/exchange-sync.js.map +1 -1
  70. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  71. package/dist/dsl/monitor/process-one-position.js +20 -10
  72. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  73. package/dist/dsl/plugin/index.d.ts +24 -2
  74. package/dist/dsl/plugin/index.d.ts.map +1 -1
  75. package/dist/dsl/plugin/index.js +158 -118
  76. package/dist/dsl/plugin/index.js.map +1 -1
  77. package/dist/dsl/plugin/options.d.ts +0 -2
  78. package/dist/dsl/plugin/options.d.ts.map +1 -1
  79. package/dist/index.d.ts +1 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +92 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/runtime/create-runtime-context.d.ts +1 -1
  84. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  85. package/dist/runtime/load-trading-recipe.js +1 -1
  86. package/dist/runtime/load-trading-recipe.js.map +1 -1
  87. package/dist/runtime/map-exit-config.d.ts +2 -2
  88. package/dist/runtime/map-exit-config.d.ts.map +1 -1
  89. package/dist/runtime/map-exit-config.js +28 -19
  90. package/dist/runtime/map-exit-config.js.map +1 -1
  91. package/dist/runtime/reconcile-state.d.ts.map +1 -1
  92. package/dist/runtime/reconcile-state.js +36 -33
  93. package/dist/runtime/reconcile-state.js.map +1 -1
  94. package/dist/runtime/run.d.ts +2 -0
  95. package/dist/runtime/run.d.ts.map +1 -1
  96. package/dist/runtime/run.js +1 -0
  97. package/dist/runtime/run.js.map +1 -1
  98. package/dist/runtime/runtime.d.ts +2 -0
  99. package/dist/runtime/runtime.d.ts.map +1 -1
  100. package/dist/runtime/runtime.js +4 -1
  101. package/dist/runtime/runtime.js.map +1 -1
  102. package/dist/runtime/trading-recipe-schema.d.ts +5825 -5873
  103. package/dist/runtime/trading-recipe-schema.d.ts.map +1 -1
  104. package/dist/runtime/trading-recipe-schema.js +14 -8
  105. package/dist/runtime/trading-recipe-schema.js.map +1 -1
  106. package/dist/scripts/run-dsl-standalone-live.js +10 -17
  107. package/dist/scripts/run-dsl-standalone-live.js.map +1 -1
  108. package/dist/scripts/run-dsl-standalone-mock.js +10 -17
  109. package/dist/scripts/run-dsl-standalone-mock.js.map +1 -1
  110. package/dist/state/state-manager.d.ts +33 -15
  111. package/dist/state/state-manager.d.ts.map +1 -1
  112. package/dist/state/state-manager.js +196 -99
  113. package/dist/state/state-manager.js.map +1 -1
  114. package/dist/types/action.d.ts +1 -1
  115. package/dist/types/action.d.ts.map +1 -1
  116. package/dist/types/dsl/index.d.ts +77 -27
  117. package/dist/types/dsl/index.d.ts.map +1 -1
  118. package/examples/strategies/dsl-showcase.yaml +25 -26
  119. package/examples/strategies/dsl.yaml +13 -17
  120. package/examples/strategies/fox-minimal-loosened.yaml +23 -17
  121. package/examples/strategies/fox-minimal.yaml +13 -17
  122. package/examples/strategies/minimal.yaml +13 -17
  123. package/examples/strategies/viper.yaml +13 -17
  124. package/examples/strategies/wolf.yaml +22 -20
  125. package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +15 -19
  126. package/openclaw.plugin.json +1 -1
  127. 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;AAkUH,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;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"}
@@ -23,6 +23,9 @@ Quick commands:
23
23
  senpi guide scanners Scanner types and config fields
24
24
  senpi guide actions Action types and decision modes
25
25
  senpi guide dsl DSL exit: phases, lock modes, tiers, time-based cuts
26
+ senpi dsl positions Active DSL positions (CLI inspection)
27
+ senpi dsl inspect Full DSL state for one asset
28
+ senpi dsl closes Archived closes with reason
26
29
  senpi guide examples Print minimal strategy YAML
27
30
  senpi guide schema Full YAML schema field reference
28
31
  senpi guide version Plugin version and changelog URL
@@ -142,70 +145,83 @@ Decision modes:
142
145
  No LLM call. Use with tight DSL stops to manage risk.
143
146
  `.trim();
144
147
  const DSL_TEXT = `
145
- DSL exit engine — two-phase trailing stop-loss
148
+ DSL exit engine — two-phase trailing stop-loss (DSL v2)
146
149
  ─────────────────────────────────────────────────────────────────────────────
147
150
 
148
151
  The DSL monitors open positions on a configurable interval and closes them
149
- when price breaches the computed floor. Tier floors use lock_hw_pct (% of
150
- current high-water ROE); the floor trails every tick in phase 2. Phase 1
151
- adds max_loss + phase1 retrace from high-water; optional time-based cuts.
152
+ when price breaches the computed floor or when preset time cuts fire.
153
+ Phase 1: max_loss absolute floor + phase1 retrace from high-water; consecutive
154
+ breach counting applies only in phase 1. Phase 2: tier floors from lock_hw_pct
155
+ (% of current high-water ROE); phase 2 begins when price crosses the first
156
+ tier (no phase2_trigger_tier). Optional hard_timeout, weak_peak_cut, and
157
+ dead_weight_cut live on the preset (not nested under phase1). hard_timeout
158
+ applies only in phase 1: entering phase 2 before the interval elapses cancels it;
159
+ same tick as first tier (phase 2) skips hard_timeout in favor of tier advance.
152
160
 
153
161
  exit:
154
162
  engine: dsl
155
- interval_seconds: 30 # how often the price monitor runs
156
-
157
- dsl_presets:
158
- <preset_name>:
159
- phase1: ...
160
- phase2_trigger_tier: 0
161
- phase2: ...
163
+ interval_seconds: 30
164
+
165
+ # Recommended: one flat preset (no nested map name).
166
+ dsl_preset:
167
+ hard_timeout: ... # optional; same level as phase1 / phase2
168
+ weak_peak_cut: ...
169
+ dead_weight_cut: ...
170
+ phase1: ...
171
+ phase2: ...
172
+
173
+ # Alternative: multiple named presets (set exit.preset when 2+ keys).
174
+ # dsl_presets:
175
+ # dsl: { phase1: ..., phase2: ... }
176
+ # aggressive: { ... }
177
+ # preset: dsl
162
178
 
163
179
  ──────────────────────────────────────────────────────────────────────────────
164
- Phase 1 — Fixed floor + high-water trailing (separate from phase 2)
165
- Active from entry until the tier at phase2_trigger_tier is crossed.
180
+ Phase 1 — Fixed floor + high-water trailing
166
181
  Floor = max(absolute_floor, trailing_floor). Absolute floor from max_loss_pct
167
182
  (entry × (1 − max_loss_pct/100/leverage) for LONG). Trailing uses phase1
168
- retrace_threshold (ROE %) from high-water — set explicitly; not inferred from tiers.
183
+ retrace_threshold (ROE %) from high-water.
169
184
 
170
185
  phase1:
171
- # enabled: false # optional; default true — false = skip Phase 1 floor/cuts; start in phase 2 (HW retrace only until tiers)
186
+ # enabled: false # optional; default true — false = skip Phase 1 logic; tiers can still advance
172
187
  max_loss_pct: 3.0 # e.g. 3% max loss at 1×
173
188
  retrace_threshold: 10 # ROE % retrace from HWM in phase 1 (required when enabled)
174
- consecutive_breaches_required: 3 # ticks below floor before exit (required when enabled)
175
- # Exchange SL in Phase 1 only: max_loss absolute floor; retrace/tier-tight exits use closePosition.
176
- # Optional time-based cuts (each: enabled, interval_in_minutes):
177
- # hard_timeout, weak_peak_cut (min_value ROE %), dead_weight_cut
189
+ consecutive_breaches_required: 3 # ticks below floor before exit in phase 1 only (required when enabled)
190
+ # Exchange SL in Phase 1: max_loss absolute floor only; tighter engine floors use closePosition.
178
191
 
179
192
  ──────────────────────────────────────────────────────────────────────────────
180
- Phase 2 — Tiers + trailing floor (high-water retrace)
181
- Starts when price reaches the tier at phase2_trigger_tier (0 = first tier; must be < number of tiers).
182
- Floor = max(tier_floor, trailing_floor). Retrace values are ROE %; the
183
- engine divides by leverage for price (e.g. 1.5% ROE at 10× = 0.15% below HW).
184
- Exchange SL: full effective floor is kept on the exchange (editPosition syncs tier/phase
185
- and floor moves). This absolute-only Phase 1 rule does not apply in Phase 2.
186
-
187
- phase2_trigger_tier: 0
193
+ Phase 2 — Tier floors (no per-tier breaches or retrace YAML)
194
+ Floor = tier floor from lock_hw_pct once the tier is active. Price below
195
+ effective floor closes immediately (no consecutive breach counter in phase 2).
196
+ Exchange SL tracks the full effective floor (editPosition on tier/phase and moves).
188
197
 
189
198
  phase2:
190
- # enabled: false # optional; default true — false = never switch to phase 2; tiers still apply in phase 1
191
- retrace_threshold: 1.5 # default ROE % retrace from HWM (required when phase 2 used)
192
- consecutive_breaches_required: 1 # required (per-tier breaches still required on each tier)
193
-
199
+ # enabled: false # optional; default true — false = never enter phase 2
194
200
  tiers:
195
- # trigger_pct = ROE % from entry that activates this tier
196
- # lock_hw_pct = required; % of current high-water ROE to lock (0–100); floor trails every tick in phase 2
197
- # breaches = required on every tier (consecutive breach ticks before exit)
198
- # retrace = ROE % retrace for this tier (overrides retrace_threshold)
199
- - { trigger_pct: 10, lock_hw_pct: 50, breaches: 1 }
200
- - { trigger_pct: 20, lock_hw_pct: 70, breaches: 1 }
201
- - { trigger_pct: 30, lock_hw_pct: 73, retrace: 1.2, breaches: 1 }
202
- - { trigger_pct: 50, lock_hw_pct: 80, retrace: 1.0, breaches: 1 }
201
+ # trigger_pct = ROE % from entry that activates this tier (strictly increasing list)
202
+ # lock_hw_pct = required; % of current high-water ROE to lock (0–100)
203
+ - { trigger_pct: 10, lock_hw_pct: 50 }
204
+ - { trigger_pct: 20, lock_hw_pct: 70 }
205
+
206
+ Legacy keys removed: phase2_trigger_tier; phase2.retrace_threshold / consecutive_breaches_required;
207
+ tier breaches / retrace; phase1-nested time cuts (use preset hard_timeout / weak_peak_cut / dead_weight_cut).
203
208
 
204
209
  ──────────────────────────────────────────────────────────────────────────────
205
210
  State and events
206
- Per-position state at {stateDir}/strategies/{id}/... . Close reason preserved
207
- on pendingClose retry (phase1_timeout, weak_peak_cut, dead_weight_cut, dsl_breach).
208
- Events: dsl.created, dsl.tier_advanced, dsl.sl_updated, dsl.phase_changed, position.closed
211
+ Per-position state under stateDir; on-disk version must match the runtime.
212
+ Close reasons include exchange_sl_hit, hard_timeout, weak_peak_cut, dead_weight_cut, dsl_breach, etc.
213
+ Close reason is preserved on pendingClose retry. DSL bus events: dsl.created, dsl.tier_advanced,
214
+ dsl.sl_updated, dsl.phase_changed, dsl.closed, dsl.deleted, and hook position.closed /
215
+ position.increased / position.decreased.
216
+
217
+ ──────────────────────────────────────────────────────────────────────────────
218
+ Commands
219
+ senpi dsl positions List active DSL-tracked positions
220
+ senpi dsl positions --json Output as JSON
221
+ senpi dsl inspect <asset> Full state for one position (e.g. SOL, xyz:GOLD)
222
+ senpi dsl inspect <asset> --json Output full DslState as JSON
223
+ senpi dsl closes List archived closes with reason and PnL
224
+ senpi dsl closes --limit 20 Limit output
209
225
  `.trim();
210
226
  const SCHEMA_TEXT = `
211
227
  YAML schema — top-level keys
@@ -254,17 +270,18 @@ actions[]
254
270
  exit
255
271
  engine string No dsl
256
272
  interval_seconds number No Default 30; integer 5–3600 (Zod + DSL parse)
257
- preset string No Default preset name (first dsl_presets key if omitted)
258
- dsl_presets object No Presets keyed by name (preferred)
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)
259
276
  dsl object No Legacy alias for dsl_presets
260
277
  sm_flip any No Non-DSL exit hook data (allowed; ignored by DSL parse)
261
278
 
262
- Preset: phase1 (optional enabled; max_loss_pct, retrace_threshold ROE %,
263
- consecutive_breaches_required; optional time cuts), phase2_trigger_tier
264
- (required int 0 and < tier count), phase2 (optional enabled; retrace_threshold ROE %,
265
- consecutive_breaches_required, tiers). phase1.enabled and phase2.enabled
266
- cannot both be false. Each tier must include lock_hw_pct [0,100] and breaches
267
- (≥ 1). Unknown keys under exit / presets / phase1 / phase2 / tiers throw
279
+ Preset: max_loss_pct (or phase1.max_loss_pct), phase1 (optional enabled;
280
+ max_loss_pct, retrace_threshold ROE %, consecutive_breaches_required),
281
+ phase2 (optional enabled; tiers only trigger_pct, lock_hw_pct per row),
282
+ optional hard_timeout / weak_peak_cut / dead_weight_cut at preset root.
283
+ phase1.enabled and phase2.enabled cannot both be false. Each tier row:
284
+ lock_hw_pct [0,100]. Unknown keys under exit / presets / phase1 / phase2 / tiers throw
268
285
  DslConfigValidationError (UNKNOWN_DSL_CONFIG_KEY) at load. DSL parse also
269
286
  enforces strictly increasing trigger_pct per tier list, bounds on
270
287
  interval/max_loss/trigger/lock_hw, and integer breach counts; see dsl-reference
@@ -305,18 +322,14 @@ actions:
305
322
  exit:
306
323
  engine: dsl
307
324
  interval_seconds: 60
308
- dsl_presets:
309
- default:
310
- phase1:
311
- consecutive_breaches_required: 3
312
- max_loss_pct: 5.0
313
- retrace_threshold: 10
314
- phase2_trigger_tier: 0
315
- phase2:
316
- retrace_threshold: 1.5
317
- consecutive_breaches_required: 1
318
- tiers:
319
- - { trigger_pct: 1, lock_hw_pct: 50, breaches: 1 }
325
+ dsl_preset:
326
+ phase1:
327
+ consecutive_breaches_required: 3
328
+ max_loss_pct: 5.0
329
+ retrace_threshold: 10
330
+ phase2:
331
+ tiers:
332
+ - { trigger_pct: 1, lock_hw_pct: 50 }
320
333
  `.trim();
321
334
  /**
322
335
  * Register `senpi guide [subcommand]` on the senpi Commander subprogram.
@@ -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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"}
@@ -12,9 +12,10 @@ export declare function registerSenpiCli(program: {
12
12
  interface CommanderCommand {
13
13
  command(name: string, desc?: string): CommanderCommand;
14
14
  description(desc: string): CommanderCommand;
15
+ argument(name: string, description?: string): CommanderCommand;
15
16
  option(flags: string, description?: string): CommanderCommand;
16
17
  requiredOption(flags: string, description?: string): CommanderCommand;
17
- action(fn: (opts: Record<string, unknown>) => void | Promise<void>): CommanderCommand;
18
+ action(fn: ((opts: Record<string, unknown>) => void | Promise<void>) | ((arg: string, opts: Record<string, unknown>) => void | Promise<void>)): CommanderCommand;
18
19
  }
19
20
  export {};
20
21
  //# sourceMappingURL=senpi-commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CAkHN;AAED,kEAAkE;AAClE,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,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACvF"}
1
+ {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CAkXN;AAkBD,kEAAkE;AAClE,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,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}
@@ -13,7 +13,7 @@ import { VERSION } from "../version.js";
13
13
  */
14
14
  export function registerSenpiCli(program) {
15
15
  const senpi = program.command("senpi");
16
- senpi.description("Senpi trading recipe: trading-recipe create, list, delete");
16
+ senpi.description("Senpi trading recipe: trading-recipe create/list/delete; dsl positions/inspect/closes; config");
17
17
  registerSenpiConfigCommands(senpi);
18
18
  const tradingRecipe = senpi.command("trading-recipe");
19
19
  tradingRecipe.description("Manage trading recipes");
@@ -112,6 +112,208 @@ export function registerSenpiCli(program) {
112
112
  console.log(`${r.id}\t\t${r.source ?? "(inline)"}\t\t${r.status ?? "—"}`);
113
113
  }
114
114
  });
115
+ const dsl = senpi.command("dsl");
116
+ dsl.description("Inspect DSL exit engine state (active positions, inspect, archives)");
117
+ dsl
118
+ .command("positions")
119
+ .description("List active DSL-tracked positions across running recipes")
120
+ .option("-r, --recipe <id>", "Filter by recipe id")
121
+ .option("-a, --address <addr>", "Filter by strategy address")
122
+ .option("--json", "Print raw JSON from the gateway")
123
+ .action(async (opts) => {
124
+ const params = {};
125
+ if (typeof opts.recipe === "string" && opts.recipe.length > 0)
126
+ params.recipeId = opts.recipe;
127
+ if (typeof opts.address === "string" && opts.address.length > 0)
128
+ params.address = opts.address;
129
+ const result = spawnSync(process.argv[0], [process.argv[1], "gateway", "call", "senpi.listDslPositions", "--json", "--params", JSON.stringify(params)], { stdio: ["inherit", "pipe", "inherit"], cwd: process.cwd(), encoding: "utf8" });
130
+ if (result.status !== 0) {
131
+ process.exitCode = result.status ?? 1;
132
+ console.error("\nTip: If the gateway is not running, start it with: openclaw gateway run");
133
+ return;
134
+ }
135
+ let data;
136
+ try {
137
+ data = JSON.parse(result.stdout ?? "{}");
138
+ }
139
+ catch {
140
+ process.stdout.write(result.stdout ?? "");
141
+ return;
142
+ }
143
+ const inner = (data.payload ?? data);
144
+ const positions = (inner.positions ?? []);
145
+ if (opts.json) {
146
+ console.log(JSON.stringify({ ok: data.ok, positions }, null, 2));
147
+ return;
148
+ }
149
+ if (positions.length === 0) {
150
+ console.log("No active DSL positions.");
151
+ return;
152
+ }
153
+ console.log("Recipe\tAddress\tAsset\tDir\tEntry\tLast\tROE%\tPhase\tTier\tFloor\tBreaches\tElapsed");
154
+ for (const p of positions) {
155
+ const addr = truncateAddr(p.address);
156
+ const tier = p.currentTierIndex === null || p.currentTierIndex === undefined ? "-" : String(p.currentTierIndex);
157
+ const roe = typeof p.currentROE === "number" && Number.isFinite(p.currentROE)
158
+ ? `${p.currentROE.toFixed(1)}%`
159
+ : "—";
160
+ const elapsed = typeof p.elapsedMinutes === "number" && Number.isFinite(p.elapsedMinutes)
161
+ ? `${Math.round(p.elapsedMinutes)}m`
162
+ : "—";
163
+ console.log([
164
+ p.recipeId,
165
+ addr,
166
+ p.asset,
167
+ p.direction,
168
+ String(p.entryPrice),
169
+ String(p.lastPrice),
170
+ roe,
171
+ String(p.phase),
172
+ tier,
173
+ String(p.floorPrice),
174
+ `${p.currentBreachCount}/${p.breachesRequired}`,
175
+ elapsed,
176
+ ].join("\t"));
177
+ }
178
+ });
179
+ dsl
180
+ .command("inspect")
181
+ .description("Show full DSL state for an open position by asset symbol")
182
+ .argument("<asset>", "Asset (e.g. SOL, BTC, xyz:GOLD)")
183
+ .option("-r, --recipe <id>", "Filter by recipe id")
184
+ .option("-a, --address <addr>", "Filter by strategy address")
185
+ .option("--json", "Print raw JSON from the gateway")
186
+ .action(async (asset, opts) => {
187
+ const params = { asset };
188
+ if (typeof opts.recipe === "string" && opts.recipe.length > 0)
189
+ params.recipeId = opts.recipe;
190
+ if (typeof opts.address === "string" && opts.address.length > 0)
191
+ params.address = opts.address;
192
+ const result = spawnSync(process.argv[0], [process.argv[1], "gateway", "call", "senpi.getDslPositionState", "--json", "--params", JSON.stringify(params)], { stdio: ["inherit", "pipe", "inherit"], cwd: process.cwd(), encoding: "utf8" });
193
+ if (result.status !== 0) {
194
+ process.exitCode = result.status ?? 1;
195
+ console.error("\nTip: If the gateway is not running, start it with: openclaw gateway run");
196
+ return;
197
+ }
198
+ let data;
199
+ try {
200
+ data = JSON.parse(result.stdout ?? "{}");
201
+ }
202
+ catch {
203
+ process.stdout.write(result.stdout ?? "");
204
+ return;
205
+ }
206
+ if (data.ok === false) {
207
+ const err = data.error;
208
+ console.error(err?.message ?? "Request failed.");
209
+ process.exitCode = 1;
210
+ return;
211
+ }
212
+ const inner = (data.payload ?? data);
213
+ const rows = (inner.positions ?? []);
214
+ if (opts.json) {
215
+ console.log(JSON.stringify({ ok: true, positions: rows }, null, 2));
216
+ return;
217
+ }
218
+ for (const row of rows) {
219
+ const s = row.state;
220
+ const w = truncateAddr(s.wallet);
221
+ console.log(`Position: ${s.asset} ${s.direction} (recipe: ${row.recipeId}, wallet: ${w})`);
222
+ console.log(`Entry: ${s.entryPrice} | Last: ${s.lastPrice} | Size: ${s.size} | Leverage: ${s.leverage}x`);
223
+ console.log(`High Water: ${s.highWaterPrice} (${s.hwTimestamp}) | HW ROE: ${fmtPct(s.highWaterRoe)}`);
224
+ console.log(`Phase: ${s.phase} (since ${s.phaseSince}) | Tier: ${s.currentTierIndex ?? "—"} of ${s.tiers.length} (since ${s.tierSince ?? "—"})`);
225
+ console.log(`Floor: ${s.floorPrice} | Tier Floor: ${s.tierFloorPrice} | Trailing Floor: ${s.trailingFloor}`);
226
+ console.log(`Current ROE: ${fmtPct(s.currentROE)} | Peak ROE: ${fmtPct(s.peakROE)} | Retrace: ${fmtPct(s.retracePct)}`);
227
+ console.log(`Breaches: ${s.currentBreachCount}/${s.breachesRequired} | Distance to Floor: ${fmtPct(s.distancePct)} | Next tier ROE: ${s.distanceToNextTierPct == null ? "—" : fmtPct(s.distanceToNextTierPct)}`);
228
+ console.log(`Exchange SL: ${s.lastSyncedFloorPrice ?? "—"} (synced ${s.slOrderIdUpdatedAt ?? "—"}) | SL Order: ${s.slOrderId ?? "—"}`);
229
+ console.log(`Ticks: ${s.tickCount} | Elapsed: ${s.elapsedMinutes}m | Created: ${s.createdAt}`);
230
+ if (rows.length > 1)
231
+ console.log("");
232
+ }
233
+ });
234
+ dsl
235
+ .command("closes")
236
+ .description("List archived (closed) DSL positions with reason and ROE")
237
+ .option("-r, --recipe <id>", "Filter by recipe id")
238
+ .option("-a, --address <addr>", "Filter by strategy address")
239
+ .option("-l, --limit <n>", "Max rows after merge")
240
+ .option("--json", "Print raw JSON from the gateway")
241
+ .action(async (opts) => {
242
+ const params = {};
243
+ if (typeof opts.recipe === "string" && opts.recipe.length > 0)
244
+ params.recipeId = opts.recipe;
245
+ if (typeof opts.address === "string" && opts.address.length > 0)
246
+ params.address = opts.address;
247
+ if (typeof opts.limit === "string" && opts.limit.length > 0) {
248
+ const n = Number.parseInt(opts.limit, 10);
249
+ if (Number.isFinite(n))
250
+ params.limit = n;
251
+ }
252
+ const result = spawnSync(process.argv[0], [process.argv[1], "gateway", "call", "senpi.listDslArchives", "--json", "--params", JSON.stringify(params)], { stdio: ["inherit", "pipe", "inherit"], cwd: process.cwd(), encoding: "utf8" });
253
+ if (result.status !== 0) {
254
+ process.exitCode = result.status ?? 1;
255
+ console.error("\nTip: If the gateway is not running, start it with: openclaw gateway run");
256
+ return;
257
+ }
258
+ let data;
259
+ try {
260
+ data = JSON.parse(result.stdout ?? "{}");
261
+ }
262
+ catch {
263
+ process.stdout.write(result.stdout ?? "");
264
+ return;
265
+ }
266
+ const inner = (data.payload ?? data);
267
+ const closes = (inner.closes ?? []);
268
+ if (opts.json) {
269
+ console.log(JSON.stringify({ ok: data.ok, closes }, null, 2));
270
+ return;
271
+ }
272
+ if (closes.length === 0) {
273
+ console.log("No archived DSL closes.");
274
+ return;
275
+ }
276
+ console.log("Recipe\tAddress\tAsset\tDir\tEntry\tLast\tROE%\tReason\tPhase\tTier\tClosed At\tElapsed");
277
+ for (const c of closes) {
278
+ const addr = truncateAddr(c.address);
279
+ const roe = typeof c.currentROE === "number" && Number.isFinite(c.currentROE)
280
+ ? `${c.currentROE.toFixed(1)}%`
281
+ : "—";
282
+ const tier = c.currentTierIndex === null || c.currentTierIndex === undefined ? "-" : String(c.currentTierIndex);
283
+ const elapsed = typeof c.elapsedMinutes === "number" && Number.isFinite(c.elapsedMinutes)
284
+ ? `${Math.round(c.elapsedMinutes)}m`
285
+ : "—";
286
+ console.log([
287
+ c.recipeId,
288
+ addr,
289
+ c.asset,
290
+ c.direction,
291
+ String(c.entryPrice),
292
+ String(c.lastPrice),
293
+ roe,
294
+ c.closeReason,
295
+ String(c.phase),
296
+ tier,
297
+ c.closedAt,
298
+ elapsed,
299
+ ].join("\t"));
300
+ }
301
+ });
115
302
  registerGuideCommands(senpi, VERSION);
116
303
  }
304
+ function truncateAddr(addr) {
305
+ const trimmed = addr.trim();
306
+ if (!trimmed) {
307
+ return "";
308
+ }
309
+ if (trimmed.length <= 14) {
310
+ return trimmed;
311
+ }
312
+ return `${trimmed.slice(0, 6)}...${trimmed.slice(-4)}`;
313
+ }
314
+ function fmtPct(n) {
315
+ if (n == null || !Number.isFinite(n))
316
+ return "—";
317
+ return `${n.toFixed(2)}%`;
318
+ }
117
319
  //# sourceMappingURL=senpi-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"senpi-commands.js","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiF;IAEjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAqB,CAAC;IAC3D,KAAK,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAC;IAE/E,2BAA2B,CAAC,KAAc,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAqB,CAAC;IAC1E,aAAa,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAEpD,aAAa;SACV,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;SAC5D,MAAM,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;SAChE,MAAM,CAAC,kBAAkB,EAAE,2DAA2D,CAAC;SACvF,MAAM,CAAC,KAAK,EAAE,IAA4D,EAAE,EAAE;QAC7E,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC;QACpD,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CACX,oJAAoJ,CACrJ,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CACX,0NAA0N,CAC3N,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,OAAe,CAAC;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAK,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1E,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAC1E,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,0DAA0D,CAAC,CAAC;gBACjH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,OAAQ,CAAC;QAC1B,CAAC;QACD,MAAM,MAAM,GAA4B;YACtC,wBAAwB,EAAE,OAAO;YACjC,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChG,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;YACzI,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,aAAa;SACV,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,cAAuB,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CACX,4LAA4L,CAC7L,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EACf,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EACxG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CACzC,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,aAAa;SACV,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;YAC/H,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO;QACT,CAAC;QACD,IAAI,IAAwJ,CAAC;QAC7J,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAgB,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,IAAI,UAAU,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"senpi-commands.js","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,13 @@
2
2
  * Centralized constants for the DSL feature.
3
3
  */
4
4
  export declare const COMPONENT_TYPE_EXIT_DSL: "exit/dsl";
5
- /** DSL subscribes to the same hook event names as the rest of the runtime. */
5
+ /** DSL subscribes to the same hook event names as the rest of the runtime, plus size-change events. */
6
6
  export declare const EVENTS: {
7
7
  readonly POSITION_OPENED: "on_position_opened";
8
8
  readonly POSITION_CLOSED: "on_position_closed";
9
9
  readonly POSITION_FLIPPED: "on_position_flipped";
10
+ readonly POSITION_INCREASED: "position.increased";
11
+ readonly POSITION_DECREASED: "position.decreased";
10
12
  };
11
13
  export declare const DSL_EVENTS: {
12
14
  readonly CREATED: "dsl.created";
@@ -16,23 +18,25 @@ export declare const DSL_EVENTS: {
16
18
  readonly CLOSED: "dsl.closed";
17
19
  readonly CLOSE_PENDING: "dsl.close_pending";
18
20
  readonly SETTINGS_UPDATED: "dsl.settings_updated";
21
+ readonly DELETED: "dsl.deleted";
19
22
  };
20
23
  export declare const DEFAULT_STATE_DIR = ".dsl-state";
21
- export declare const DSL_STATE_VERSION = 2;
24
+ /** On-disk DSL state schema version (v1 = DSL engine v2; no migration from older files). */
25
+ export declare const DSL_STATE_VERSION = 1;
22
26
  /** Close reasons for DSL state (closeReason) and position.closed (reason). */
23
27
  export declare const CLOSE_REASON: {
24
28
  readonly MANUAL_CLOSE: "manual_close";
25
29
  readonly CLOSED_EXTERNALLY: "closed_externally";
26
- readonly SL_HIT: "sl_hit";
30
+ readonly EXCHANGE_SL_HIT: "exchange_sl_hit";
27
31
  readonly DSL_BREACH: "dsl_breach";
28
32
  readonly FLIPPED: "flipped";
29
33
  readonly CLOSE_POSITION_FAILED: "close_position_failed";
30
- /** Phase 1 hard timeout elapsed. */
31
- readonly PHASE1_TIMEOUT: "phase1_timeout";
32
- /** Phase 1 weak peak cut (peak ROE below minValue and current < peak). */
34
+ readonly HARD_TIMEOUT: "hard_timeout";
33
35
  readonly WEAK_PEAK_CUT: "weak_peak_cut";
34
- /** Phase 1 dead weight cut (never gone positive after interval). */
35
36
  readonly DEAD_WEIGHT_CUT: "dead_weight_cut";
37
+ readonly POSITION_INCREASED: "position_increased";
38
+ readonly POSITION_DECREASED: "position_decreased";
39
+ readonly DSL_DELETED: "dsl_deleted";
36
40
  };
37
41
  export type CloseReason = (typeof CLOSE_REASON)[keyof typeof CLOSE_REASON];
38
42
  export declare const MIN_INTERVAL_SECONDS = 5;
@@ -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,8EAA8E;AAC9E,eAAO,MAAM,MAAM;;;;CAIT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC;AAEX,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;IAOvB,oCAAoC;;IAEpC,0EAA0E;;IAE1E,oEAAoE;;CAE5D,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,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"}
@@ -3,11 +3,13 @@
3
3
  */
4
4
  import { HOOK_EVENT } from "../../types/hooks.js";
5
5
  export const COMPONENT_TYPE_EXIT_DSL = "exit/dsl";
6
- /** DSL subscribes to the same hook event names as the rest of the runtime. */
6
+ /** DSL subscribes to the same hook event names as the rest of the runtime, plus size-change events. */
7
7
  export const EVENTS = {
8
8
  POSITION_OPENED: HOOK_EVENT.ON_POSITION_OPENED,
9
9
  POSITION_CLOSED: HOOK_EVENT.ON_POSITION_CLOSED,
10
10
  POSITION_FLIPPED: HOOK_EVENT.ON_POSITION_FLIPPED,
11
+ POSITION_INCREASED: "position.increased",
12
+ POSITION_DECREASED: "position.decreased",
11
13
  };
12
14
  export const DSL_EVENTS = {
13
15
  CREATED: "dsl.created",
@@ -17,23 +19,25 @@ export const DSL_EVENTS = {
17
19
  CLOSED: "dsl.closed",
18
20
  CLOSE_PENDING: "dsl.close_pending",
19
21
  SETTINGS_UPDATED: "dsl.settings_updated",
22
+ DELETED: "dsl.deleted",
20
23
  };
21
24
  export const DEFAULT_STATE_DIR = ".dsl-state";
22
- export const DSL_STATE_VERSION = 2;
25
+ /** On-disk DSL state schema version (v1 = DSL engine v2; no migration from older files). */
26
+ export const DSL_STATE_VERSION = 1;
23
27
  /** Close reasons for DSL state (closeReason) and position.closed (reason). */
24
28
  export const CLOSE_REASON = {
25
29
  MANUAL_CLOSE: "manual_close",
26
30
  CLOSED_EXTERNALLY: "closed_externally",
27
- SL_HIT: "sl_hit",
31
+ EXCHANGE_SL_HIT: "exchange_sl_hit",
28
32
  DSL_BREACH: "dsl_breach",
29
33
  FLIPPED: "flipped",
30
34
  CLOSE_POSITION_FAILED: "close_position_failed",
31
- /** Phase 1 hard timeout elapsed. */
32
- PHASE1_TIMEOUT: "phase1_timeout",
33
- /** Phase 1 weak peak cut (peak ROE below minValue and current < peak). */
35
+ HARD_TIMEOUT: "hard_timeout",
34
36
  WEAK_PEAK_CUT: "weak_peak_cut",
35
- /** Phase 1 dead weight cut (never gone positive after interval). */
36
37
  DEAD_WEIGHT_CUT: "dead_weight_cut",
38
+ POSITION_INCREASED: "position_increased",
39
+ POSITION_DECREASED: "position_decreased",
40
+ DSL_DELETED: "dsl_deleted",
37
41
  };
38
42
  export const MIN_INTERVAL_SECONDS = 5;
39
43
  /** Upper bound for `exit.interval_seconds` (validation spec). */
@@ -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,8EAA8E;AAC9E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;CACxC,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;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,oCAAoC;IACpC,cAAc,EAAE,gBAAgB;IAChC,0EAA0E;IAC1E,aAAa,EAAE,eAAe;IAC9B,oEAAoE;IACpE,eAAe,EAAE,iBAAiB;CAC1B,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,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"}
@@ -6,6 +6,8 @@ export interface ExitBlockConfig {
6
6
  engine?: string;
7
7
  interval_seconds?: number;
8
8
  preset?: string;
9
+ /** Single preset; normalized to dsl_presets.dsl before parse (mutually exclusive with non-empty dsl_presets). */
10
+ dsl_preset?: RawPreset;
9
11
  dsl_presets?: Record<string, RawPreset>;
10
12
  }
11
13
  //# 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,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,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"}