@senpi/runtime 3.0.0-dev.runtime-phase-2.20260623210537 → 3.0.1-dev.openclaw-upgrade-mai.20260625140818

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 (215) hide show
  1. package/README.md +10 -9
  2. package/dist/actions/action-runtime-module.d.ts.map +1 -1
  3. package/dist/actions/action-runtime-module.js +1 -1
  4. package/dist/actions/action-runtime-module.js.map +1 -1
  5. package/dist/actions/decision-engine.d.ts.map +1 -1
  6. package/dist/actions/decision-engine.js +3 -0
  7. package/dist/actions/decision-engine.js.map +1 -1
  8. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  9. package/dist/actions/open-position/open-position.action.js +54 -14
  10. package/dist/actions/open-position/open-position.action.js.map +1 -1
  11. package/dist/actions/types.d.ts +10 -2
  12. package/dist/actions/types.d.ts.map +1 -1
  13. package/dist/actions/types.js +8 -0
  14. package/dist/actions/types.js.map +1 -1
  15. package/dist/cli/guide-commands.d.ts.map +1 -1
  16. package/dist/cli/guide-commands.js +80 -74
  17. package/dist/cli/guide-commands.js.map +1 -1
  18. package/dist/cli/senpi-commands.d.ts.map +1 -1
  19. package/dist/cli/senpi-commands.js +0 -108
  20. package/dist/cli/senpi-commands.js.map +1 -1
  21. package/dist/constants/dsl/index.d.ts +2 -0
  22. package/dist/constants/dsl/index.d.ts.map +1 -1
  23. package/dist/constants/dsl/index.js +2 -0
  24. package/dist/constants/dsl/index.js.map +1 -1
  25. package/dist/dsl/config/parse-tiers.d.ts.map +1 -1
  26. package/dist/dsl/config/parse-tiers.js +6 -2
  27. package/dist/dsl/config/parse-tiers.js.map +1 -1
  28. package/dist/dsl/engine-client/config-mapping.d.ts +7 -0
  29. package/dist/dsl/engine-client/config-mapping.d.ts.map +1 -1
  30. package/dist/dsl/engine-client/config-mapping.js +16 -2
  31. package/dist/dsl/engine-client/config-mapping.js.map +1 -1
  32. package/dist/dsl/events/handlers.d.ts +18 -2
  33. package/dist/dsl/events/handlers.d.ts.map +1 -1
  34. package/dist/dsl/events/handlers.js +302 -213
  35. package/dist/dsl/events/handlers.js.map +1 -1
  36. package/dist/dsl/monitor/create-monitor.d.ts +15 -0
  37. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  38. package/dist/dsl/monitor/create-monitor.js +46 -9
  39. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  40. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  41. package/dist/dsl/monitor/process-one-position.js +138 -77
  42. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  43. package/dist/dsl/plugin/index.d.ts +16 -1
  44. package/dist/dsl/plugin/index.d.ts.map +1 -1
  45. package/dist/dsl/plugin/index.js +35 -4
  46. package/dist/dsl/plugin/index.js.map +1 -1
  47. package/dist/dsl/plugin/options.d.ts +18 -0
  48. package/dist/dsl/plugin/options.d.ts.map +1 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/runtime/create-scanner-module.d.ts +4 -3
  53. package/dist/runtime/create-scanner-module.d.ts.map +1 -1
  54. package/dist/runtime/create-scanner-module.js +14 -5
  55. package/dist/runtime/create-scanner-module.js.map +1 -1
  56. package/dist/runtime/create-scanner-providers-for-run.d.ts.map +1 -1
  57. package/dist/runtime/create-scanner-providers-for-run.js +12 -1
  58. package/dist/runtime/create-scanner-providers-for-run.js.map +1 -1
  59. package/dist/runtime/load-runtime-config.js +1 -1
  60. package/dist/runtime/load-runtime-config.js.map +1 -1
  61. package/dist/runtime/map-strategies-registration.js +7 -8
  62. package/dist/runtime/map-strategies-registration.js.map +1 -1
  63. package/dist/runtime/map-strategies.d.ts.map +1 -1
  64. package/dist/runtime/map-strategies.js +12 -3
  65. package/dist/runtime/map-strategies.js.map +1 -1
  66. package/dist/runtime/reconcile-decide.d.ts +73 -0
  67. package/dist/runtime/reconcile-decide.d.ts.map +1 -0
  68. package/dist/runtime/reconcile-decide.js +186 -0
  69. package/dist/runtime/reconcile-decide.js.map +1 -0
  70. package/dist/runtime/reconcile-run.d.ts +62 -0
  71. package/dist/runtime/reconcile-run.d.ts.map +1 -0
  72. package/dist/runtime/reconcile-run.js +173 -0
  73. package/dist/runtime/reconcile-run.js.map +1 -0
  74. package/dist/runtime/reconcile-state.d.ts +44 -0
  75. package/dist/runtime/reconcile-state.d.ts.map +1 -1
  76. package/dist/runtime/reconcile-state.js +80 -44
  77. package/dist/runtime/reconcile-state.js.map +1 -1
  78. package/dist/runtime/risk-guard.d.ts.map +1 -1
  79. package/dist/runtime/risk-guard.js +17 -12
  80. package/dist/runtime/risk-guard.js.map +1 -1
  81. package/dist/runtime/runtime-schema.d.ts +2912 -1052
  82. package/dist/runtime/runtime-schema.d.ts.map +1 -1
  83. package/dist/runtime/runtime-schema.js +136 -42
  84. package/dist/runtime/runtime-schema.js.map +1 -1
  85. package/dist/runtime/runtime.d.ts +26 -0
  86. package/dist/runtime/runtime.d.ts.map +1 -1
  87. package/dist/runtime/runtime.js +254 -8
  88. package/dist/runtime/runtime.js.map +1 -1
  89. package/dist/runtime/scanner-registry.d.ts +1 -1
  90. package/dist/runtime/scanner-registry.d.ts.map +1 -1
  91. package/dist/runtime/scanner-registry.js +3 -12
  92. package/dist/runtime/scanner-registry.js.map +1 -1
  93. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  94. package/dist/runtime/supervisor/long-running-supervisor.js +1 -1
  95. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  96. package/dist/runtime/supervisor/orphan-sweep.js +1 -1
  97. package/dist/runtime/supervisor/orphan-sweep.js.map +1 -1
  98. package/dist/runtime/supervisor/supervisor-utils.d.ts +1 -1
  99. package/dist/runtime/supervisor/supervisor-utils.d.ts.map +1 -1
  100. package/dist/runtime/supervisor/supervisor-utils.js +1 -1
  101. package/dist/runtime/supervisor/supervisor-utils.js.map +1 -1
  102. package/dist/runtime-api/intake/acceptance-record.d.ts +10 -0
  103. package/dist/runtime-api/intake/acceptance-record.d.ts.map +1 -1
  104. package/dist/runtime-api/intake/acceptance-record.js +28 -0
  105. package/dist/runtime-api/intake/acceptance-record.js.map +1 -1
  106. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  107. package/dist/runtime-api/intake/intake-mount.js +28 -36
  108. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  109. package/dist/runtime-api/intake/process-signal-post.d.ts +20 -1
  110. package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
  111. package/dist/runtime-api/intake/process-signal-post.js +57 -6
  112. package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
  113. package/dist/runtime-api/intake/scanner-launcher.d.ts +18 -4
  114. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  115. package/dist/runtime-api/intake/scanner-launcher.js +24 -3
  116. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  117. package/dist/runtime-api/intake/types.d.ts +16 -0
  118. package/dist/runtime-api/intake/types.d.ts.map +1 -1
  119. package/dist/runtime-api/routes/signals.schema.d.ts +4 -0
  120. package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
  121. package/dist/runtime-api/routes/signals.schema.js +12 -0
  122. package/dist/runtime-api/routes/signals.schema.js.map +1 -1
  123. package/dist/scanners/external/scaffold/__main__.py +65 -24
  124. package/dist/scanners/external/scaffold/ctx.py +78 -0
  125. package/dist/scanners/external/scaffold/delivery.py +56 -22
  126. package/dist/scanners/external/scaffold/entrypoint_loader.py +42 -48
  127. package/dist/scanners/external/scaffold/journal.py +13 -2
  128. package/dist/scanners/external/scaffold/requirements.txt +11 -0
  129. package/dist/scanners/external/scaffold/scaffold.py +159 -128
  130. package/dist/scanners/external/scaffold/senpi_mcp.py +250 -0
  131. package/dist/scanners/external/scaffold/signal_envelope.py +177 -34
  132. package/dist/scanners/external/scaffold/state_manager.py +175 -0
  133. package/dist/scanners/external-scanner-receiver.d.ts +6 -0
  134. package/dist/scanners/external-scanner-receiver.d.ts.map +1 -1
  135. package/dist/scanners/external-scanner-receiver.js +14 -1
  136. package/dist/scanners/external-scanner-receiver.js.map +1 -1
  137. package/dist/scripts/run-dsl-standalone-live.d.ts +1 -1
  138. package/dist/scripts/run-dsl-standalone-live.js +5 -3
  139. package/dist/scripts/run-dsl-standalone-live.js.map +1 -1
  140. package/dist/senpi/client.d.ts +37 -4
  141. package/dist/senpi/client.d.ts.map +1 -1
  142. package/dist/senpi/client.js +101 -24
  143. package/dist/senpi/client.js.map +1 -1
  144. package/dist/state/state-manager.d.ts +17 -0
  145. package/dist/state/state-manager.d.ts.map +1 -1
  146. package/dist/state/state-manager.js +50 -4
  147. package/dist/state/state-manager.js.map +1 -1
  148. package/dist/strategy/strategy-state.d.ts +9 -1
  149. package/dist/strategy/strategy-state.d.ts.map +1 -1
  150. package/dist/strategy/strategy-state.js +62 -9
  151. package/dist/strategy/strategy-state.js.map +1 -1
  152. package/dist/tracking/constants.d.ts.map +1 -1
  153. package/dist/tracking/constants.js +2 -0
  154. package/dist/tracking/constants.js.map +1 -1
  155. package/dist/types/dsl/index.d.ts +1 -1
  156. package/dist/types/dsl/index.d.ts.map +1 -1
  157. package/dist/types/scanner.d.ts +7 -0
  158. package/dist/types/scanner.d.ts.map +1 -1
  159. package/dist/types/strategy.d.ts +3 -1
  160. package/dist/types/strategy.d.ts.map +1 -1
  161. package/dist/utils/keyed-mutex.d.ts +37 -0
  162. package/dist/utils/keyed-mutex.d.ts.map +1 -0
  163. package/dist/utils/keyed-mutex.js +77 -0
  164. package/dist/utils/keyed-mutex.js.map +1 -0
  165. package/examples/strategies/README.md +17 -12
  166. package/examples/strategies/iguana/README.md +135 -0
  167. package/examples/strategies/iguana/recipe.yaml +137 -0
  168. package/examples/strategies/iguana/scanners/scan.py +243 -0
  169. package/examples/strategies/iguana/scanners/scoring.py +152 -0
  170. package/examples/strategies/raptor/README.md +156 -0
  171. package/examples/strategies/raptor/recipe.yaml +154 -0
  172. package/examples/strategies/raptor/scanners/scan.py +349 -0
  173. package/examples/strategies/raptor/scanners/scoring.py +452 -0
  174. package/examples/strategies/spider/README.md +89 -0
  175. package/examples/strategies/spider/scalp/recipe.yaml +129 -0
  176. package/examples/strategies/spider/scalp/scanners/scan.py +219 -0
  177. package/examples/strategies/spider/scalp/scanners/scoring.py +179 -0
  178. package/examples/strategies/spider/swing/recipe.yaml +137 -0
  179. package/examples/strategies/spider/swing/scanners/scan.py +334 -0
  180. package/examples/strategies/spider/swing/scanners/scoring.py +184 -0
  181. package/examples/strategies/turbine/README.md +166 -0
  182. package/examples/strategies/turbine/recipe-runners.yaml +123 -0
  183. package/examples/strategies/turbine/recipe-volume.yaml +129 -0
  184. package/examples/strategies/turbine/scanners/scan.py +283 -0
  185. package/examples/strategies/turbine/scanners/scoring.py +190 -0
  186. package/openclaw.plugin.json +1 -1
  187. package/package.json +1 -1
  188. package/dist/scanners/external/liquidation-watchdog/README.md +0 -107
  189. package/dist/scanners/external/liquidation-watchdog/liquidation-watchdog.yaml +0 -48
  190. package/dist/scanners/external/liquidation-watchdog/producer.mjs +0 -336
  191. package/dist/scanners/external/momentum/README.md +0 -148
  192. package/dist/scanners/external/momentum/momentum.yaml +0 -116
  193. package/dist/scanners/external/momentum/producer.mjs +0 -251
  194. package/dist/scanners/external/shared/ingest.mjs +0 -112
  195. package/examples/README.md +0 -89
  196. package/examples/scanners-consumer-quickstart.mjs +0 -134
  197. package/examples/scanners-emerging-movers-v4.mjs +0 -287
  198. package/examples/scanners-liquidation-watchdog.mjs +0 -341
  199. package/examples/scanners-live-mcp.mjs +0 -208
  200. package/examples/scanners-multi-strategy.mjs +0 -165
  201. package/examples/scanners-position-tracker-e2e.mjs +0 -225
  202. package/examples/scanners-scheduled-events.mjs +0 -96
  203. package/examples/scanners-senpi-provider-client.mjs +0 -182
  204. package/examples/scanners-single-strategy.mjs +0 -198
  205. package/examples/strategies/dsl-showcase.yaml +0 -68
  206. package/examples/strategies/dsl.yaml +0 -51
  207. package/examples/strategies/fox-minimal-loosened.yaml +0 -240
  208. package/examples/strategies/fox-minimal.yaml +0 -242
  209. package/examples/strategies/minimal.yaml +0 -46
  210. package/examples/strategies/momentum/how-it-works.md +0 -48
  211. package/examples/strategies/momentum/momentum-guarded.yaml +0 -161
  212. package/examples/strategies/risk-showcase.yaml +0 -93
  213. package/examples/strategies/viper.yaml +0 -67
  214. package/examples/strategies/wolf.yaml +0 -72
  215. package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +0 -123
@@ -1,72 +0,0 @@
1
- name: wolf
2
- version: 1.0.0
3
- description: Aggressive — early entry on FIRST_JUMP from emerging_movers.
4
-
5
- strategy:
6
- wallet: "${WALLET_ADDRESS}"
7
- slots: 3
8
- margin_pct: 15
9
- trading_risk: aggressive
10
- enabled: true
11
-
12
- scanners:
13
- - name: emerging_movers
14
- type: emerging_movers
15
- interval: 20s
16
- config:
17
- topN: 25
18
- minRankJump: 5
19
- minTopTradersGain: 0.1
20
- minScansBeforeSignals: 2
21
- historyLimit: 60
22
- immediateJumpThreshold: 10
23
- deepClimbRankThreshold: 25
24
- contribExplosionMultiplier: 3.0
25
- firstJumpMinPrevRank: 30
26
-
27
- actions:
28
- - name: open_on_jump
29
- action_type: OPEN_POSITION
30
- decision_mode: llm
31
- decision_model: claude-sonnet-4-20250514
32
- scanners: [emerging_movers]
33
- min_confidence: 6
34
- params:
35
- order_type: FEE_OPTIMIZED_LIMIT
36
- fee_optimized_limit_options:
37
- ensure_execution_as_taker: true
38
- execution_timeout_seconds: 10
39
- context: [signal]
40
- decision_prompt: |
41
- Evaluate the signal. Reply with JSON: {"execute": true|false, "actionType": "OPEN_POSITION", "confidence": 1-10, "reasoning": "...", "payload": {"signals": [{"asset": "SYMBOL", "direction": "LONG"|"SHORT", "reason": "...", "leverage": <optional number>, "margin": <optional $ amount>}]}}.
42
-
43
- exit:
44
- engine: dsl
45
- interval_seconds: 30
46
- order_type: FEE_OPTIMIZED_LIMIT
47
- fee_optimized_limit_options:
48
- ensure_execution_as_taker: true
49
- execution_timeout_seconds: 10
50
- dsl_preset:
51
- hard_timeout:
52
- enabled: true
53
- interval_in_minutes: 90
54
- weak_peak_cut:
55
- enabled: true
56
- interval_in_minutes: 45
57
- min_value: 3
58
- dead_weight_cut:
59
- enabled: true
60
- interval_in_minutes: 30
61
- phase1:
62
- enabled: true
63
- max_loss_pct: 3.0
64
- retrace_threshold: 7
65
- consecutive_breaches_required: 3
66
- phase2:
67
- enabled: true
68
- tiers:
69
- - { trigger_pct: 7, lock_hw_pct: 40 }
70
- - { trigger_pct: 12, lock_hw_pct: 55 }
71
- - { trigger_pct: 15, lock_hw_pct: 75 }
72
- - { trigger_pct: 20, lock_hw_pct: 85 }
@@ -1,123 +0,0 @@
1
- name: wolf #required - name of the trading-recipe
2
- version: 1.0.0 #required
3
- description: > #required
4
- Autonomous aggressive multi-strategy trading. Enter early on emerging movers,
5
- protect with tight DSL, cut dead weight fast, rotate into strength.
6
-
7
- # Optional: send run summaries and alerts to Telegram (requires OpenClaw channels.telegram configured)
8
- # notifications:
9
- # telegram_chat_id: "123456789"
10
-
11
- # ── STRATEGY ──
12
- strategy: #required
13
- wallet: "0x71ce3f0e27c178cbdcf01c4d068278034df75fbc"
14
- slots: 3
15
- margin_pct: 10
16
- trading_risk: aggressive
17
- enabled: true
18
-
19
- # ── SCANNERS ──
20
- scanners: #required
21
- - name: emerging_movers #required
22
- type: emerging_movers #required
23
- interval: 20s #required
24
- blocked_assets: [] #optional
25
- config: #Can be different for each scanner.
26
- topN: 25
27
- minRankJump: 5
28
- minTopTradersGain: 0.1
29
- minScansBeforeSignals: 2
30
- historyLimit: 60
31
-
32
- actions: #required
33
- - name: wolf_entry #required
34
- action_type: OPEN_POSITION #required
35
- decision_mode: llm #required
36
- decision_model: claude-sonnet-4-6 #required
37
- scanners: [emerging_movers] #required
38
- min_confidence: 2 #required
39
- params:
40
- order_type: FEE_OPTIMIZED_LIMIT
41
- fee_optimized_limit_options:
42
- ensure_execution_as_taker: true
43
- execution_timeout_seconds: 15
44
- context: #optional
45
- - type: signal
46
- value: emerging_movers
47
- decision_prompt: | #optional
48
- You evaluate emerging mover signals for the WOLF multi-strategy system.
49
- WOLF enters early on first jumps — before the peak, not at it. Speed is edge.
50
-
51
- SIGNAL DATA:
52
- {{emerging_movers}}
53
-
54
- SIGNAL PRIORITY (strict — act on highest priority first):
55
- 1. FIRST_JUMP: Jumped 10+ ranks from #25+ in one scan, wasn't in top 50 before.
56
- ENTER IMMEDIATELY. 2 reasons is enough. vel > 0 is enough.
57
- 2. CONTRIB_EXPLOSION: 3x+ contribution spike from rank #20+. ENTER.
58
- Never downgrade for erratic history.
59
- 3. IMMEDIATE_MOVER: 10+ rank jump from #25+ but not first jump.
60
- ENTER if not erratic and not low velocity.
61
- 4. DEEP_CLIMBER: Steady climb from #30+, vel >= 0.03, 3+ reasons.
62
- Route to conservative strategy if available.
63
-
64
- ROUTING:
65
- - FIRST_JUMP/CONTRIB_EXPLOSION → aggressive strategy
66
- - DEEP_CLIMBER → conservative if available, else aggressive
67
- - Never duplicate same asset within one strategy (cross-strategy OK)
68
-
69
- ANTI-PATTERNS:
70
- - Rank #1-10 for 2+ scans = SKIP
71
- - 4+ reasons at rank #5 = SKIP
72
- - Counter to BTC hourly trend = SKIP
73
- - Burned asset today = SKIP
74
-
75
- ROTATION (slots full + FIRST_JUMP):
76
- - Weakest has negative ROE + SM conviction <= 1 → CUT, ENTER new
77
- - Weakest is Tier 2+ or SM conviction 3+ → HOLD
78
- - Positions younger than {{rotation_cooldown_minutes}}min → never rotate out
79
-
80
- XYZ EQUITIES: Ignore trader count. Use reasons + rank velocity.
81
-
82
- Respond with execute=true and actionType="OPEN_POSITION".
83
- Put trade details in the payload object:
84
- {
85
- "execute": true,
86
- "actionType": "OPEN_POSITION",
87
- "confidence": 1-10,
88
- "reasoning": "one sentence",
89
- "payload": {
90
- "signals": [
91
- { "asset": "<coin_ticker>", "direction": "LONG" or "SHORT", "reason": "one sentence", "rotate_out": "<asset_to_cut>", "leverage": "<optional number>", "margin": "<optional $ amount>" }
92
- ]
93
- }
94
- }
95
- Set execute=false if no trade should be taken.
96
-
97
- # ── EXIT ──
98
- exit: #required
99
- engine: dsl
100
- interval_seconds: 30
101
- order_type: FEE_OPTIMIZED_LIMIT
102
- fee_optimized_limit_options:
103
- ensure_execution_as_taker: true
104
- execution_timeout_seconds: 15
105
- dsl_preset:
106
- phase1:
107
- enabled: true
108
- consecutive_breaches_required: 3
109
- max_loss_pct: 3.0
110
- retrace_threshold: 10
111
- phase2:
112
- enabled: true
113
- tiers:
114
- - { trigger_pct: 10, lock_hw_pct: 50 }
115
- - { trigger_pct: 20, lock_hw_pct: 70 }
116
- - { trigger_pct: 30, lock_hw_pct: 73 }
117
- - { trigger_pct: 50, lock_hw_pct: 80 }
118
- - { trigger_pct: 75, lock_hw_pct: 85 }
119
- - { trigger_pct: 100, lock_hw_pct: 90 }
120
-
121
- # Send run summaries and alerts to this Telegram chat (requires OpenClaw channels.telegram configured)
122
- notifications:
123
- telegram_chat_id: "6263059192"