@senpi/runtime 3.0.117 → 3.0.122

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 (321) hide show
  1. package/README.md +16 -0
  2. package/dist/actions/action-events.d.ts +7 -21
  3. package/dist/actions/action-events.d.ts.map +1 -1
  4. package/dist/actions/action-events.js +26 -54
  5. package/dist/actions/action-events.js.map +1 -1
  6. package/dist/actions/action-runtime-module.d.ts.map +1 -1
  7. package/dist/actions/action-runtime-module.js +7 -38
  8. package/dist/actions/action-runtime-module.js.map +1 -1
  9. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  10. package/dist/actions/close-position/close-position.action.js +15 -122
  11. package/dist/actions/close-position/close-position.action.js.map +1 -1
  12. package/dist/actions/decision-engine.d.ts.map +1 -1
  13. package/dist/actions/decision-engine.js +2 -15
  14. package/dist/actions/decision-engine.js.map +1 -1
  15. package/dist/actions/event-derivation.d.ts +2 -71
  16. package/dist/actions/event-derivation.d.ts.map +1 -1
  17. package/dist/actions/event-derivation.js +8 -251
  18. package/dist/actions/event-derivation.js.map +1 -1
  19. package/dist/actions/open-position/open-position.action.d.ts +2 -17
  20. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  21. package/dist/actions/open-position/open-position.action.js +56 -162
  22. package/dist/actions/open-position/open-position.action.js.map +1 -1
  23. package/dist/actions/position-tracker/position-tracker.action.d.ts +1 -2
  24. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  25. package/dist/actions/position-tracker/position-tracker.action.js +17 -62
  26. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  27. package/dist/actions/store/types.d.ts +2 -9
  28. package/dist/actions/store/types.d.ts.map +1 -1
  29. package/dist/actions/store/types.js.map +1 -1
  30. package/dist/actions/types.d.ts +0 -13
  31. package/dist/actions/types.d.ts.map +1 -1
  32. package/dist/actions/types.js +0 -13
  33. package/dist/actions/types.js.map +1 -1
  34. package/dist/cli/guide-commands.d.ts.map +1 -1
  35. package/dist/cli/guide-commands.js +16 -11
  36. package/dist/cli/guide-commands.js.map +1 -1
  37. package/dist/cli/senpi-commands.d.ts.map +1 -1
  38. package/dist/cli/senpi-commands.js +18 -7
  39. package/dist/cli/senpi-commands.js.map +1 -1
  40. package/dist/constants/dsl/index.d.ts +17 -6
  41. package/dist/constants/dsl/index.d.ts.map +1 -1
  42. package/dist/constants/dsl/index.js +17 -6
  43. package/dist/constants/dsl/index.js.map +1 -1
  44. package/dist/dsl/engine/floors.d.ts +25 -1
  45. package/dist/dsl/engine/floors.d.ts.map +1 -1
  46. package/dist/dsl/engine/floors.js +38 -6
  47. package/dist/dsl/engine/floors.js.map +1 -1
  48. package/dist/dsl/engine/index.d.ts +1 -1
  49. package/dist/dsl/engine/index.d.ts.map +1 -1
  50. package/dist/dsl/engine/index.js +1 -1
  51. package/dist/dsl/engine/index.js.map +1 -1
  52. package/dist/dsl/engine/round.d.ts +22 -2
  53. package/dist/dsl/engine/round.d.ts.map +1 -1
  54. package/dist/dsl/engine/round.js +78 -5
  55. package/dist/dsl/engine/round.js.map +1 -1
  56. package/dist/dsl/engine/tick.d.ts.map +1 -1
  57. package/dist/dsl/engine/tick.js +31 -16
  58. package/dist/dsl/engine/tick.js.map +1 -1
  59. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  60. package/dist/dsl/engine-client/event-mapping.js +0 -14
  61. package/dist/dsl/engine-client/event-mapping.js.map +1 -1
  62. package/dist/dsl/events/build-closed-event.d.ts +1 -16
  63. package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
  64. package/dist/dsl/events/build-closed-event.js +0 -6
  65. package/dist/dsl/events/build-closed-event.js.map +1 -1
  66. package/dist/dsl/events/handlers.d.ts +0 -7
  67. package/dist/dsl/events/handlers.d.ts.map +1 -1
  68. package/dist/dsl/events/handlers.js +7 -37
  69. package/dist/dsl/events/handlers.js.map +1 -1
  70. package/dist/dsl/events/initial-state.d.ts +1 -1
  71. package/dist/dsl/events/initial-state.d.ts.map +1 -1
  72. package/dist/dsl/events/initial-state.js +4 -7
  73. package/dist/dsl/events/initial-state.js.map +1 -1
  74. package/dist/dsl/monitor/create-monitor.d.ts +2 -6
  75. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  76. package/dist/dsl/monitor/create-monitor.js +9 -15
  77. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  78. package/dist/dsl/monitor/dsl-failure-events.d.ts +0 -2
  79. package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -1
  80. package/dist/dsl/monitor/dsl-failure-events.js +1 -2
  81. package/dist/dsl/monitor/dsl-failure-events.js.map +1 -1
  82. package/dist/dsl/monitor/exchange-sync.d.ts +8 -3
  83. package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -1
  84. package/dist/dsl/monitor/exchange-sync.js +16 -4
  85. package/dist/dsl/monitor/exchange-sync.js.map +1 -1
  86. package/dist/dsl/monitor/process-one-position.d.ts +0 -1
  87. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  88. package/dist/dsl/monitor/process-one-position.js +113 -62
  89. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  90. package/dist/dsl/plugin/index.d.ts +10 -12
  91. package/dist/dsl/plugin/index.d.ts.map +1 -1
  92. package/dist/dsl/plugin/index.js +14 -12
  93. package/dist/dsl/plugin/index.js.map +1 -1
  94. package/dist/health/types.d.ts +0 -13
  95. package/dist/health/types.d.ts.map +1 -1
  96. package/dist/health/types.js +0 -12
  97. package/dist/health/types.js.map +1 -1
  98. package/dist/index.d.ts +4 -27
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +206 -257
  101. package/dist/index.js.map +1 -1
  102. package/dist/runtime/action-registry.d.ts.map +1 -1
  103. package/dist/runtime/action-registry.js +3 -4
  104. package/dist/runtime/action-registry.js.map +1 -1
  105. package/dist/runtime/auto-update/coordinator.d.ts +16 -0
  106. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
  107. package/dist/runtime/auto-update/coordinator.js +129 -13
  108. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  109. package/dist/runtime/auto-update/run-update-command.d.ts.map +1 -1
  110. package/dist/runtime/auto-update/run-update-command.js +18 -14
  111. package/dist/runtime/auto-update/run-update-command.js.map +1 -1
  112. package/dist/runtime/auto-update/types.d.ts +17 -1
  113. package/dist/runtime/auto-update/types.d.ts.map +1 -1
  114. package/dist/runtime/auto-update/types.js +11 -0
  115. package/dist/runtime/auto-update/types.js.map +1 -1
  116. package/dist/runtime/boot-skip.d.ts +73 -0
  117. package/dist/runtime/boot-skip.d.ts.map +1 -0
  118. package/dist/runtime/boot-skip.js +113 -0
  119. package/dist/runtime/boot-skip.js.map +1 -0
  120. package/dist/runtime/create-runtime-context.d.ts +2 -0
  121. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  122. package/dist/runtime/create-runtime-context.js +1 -0
  123. package/dist/runtime/create-runtime-context.js.map +1 -1
  124. package/dist/runtime/domain-events.d.ts.map +1 -1
  125. package/dist/runtime/domain-events.js +0 -7
  126. package/dist/runtime/domain-events.js.map +1 -1
  127. package/dist/runtime/lifecycle-events.d.ts +43 -10
  128. package/dist/runtime/lifecycle-events.d.ts.map +1 -1
  129. package/dist/runtime/lifecycle-events.js +83 -12
  130. package/dist/runtime/lifecycle-events.js.map +1 -1
  131. package/dist/runtime/lifecycle-reaper.d.ts +202 -0
  132. package/dist/runtime/lifecycle-reaper.d.ts.map +1 -0
  133. package/dist/runtime/lifecycle-reaper.js +390 -0
  134. package/dist/runtime/lifecycle-reaper.js.map +1 -0
  135. package/dist/runtime/reconcile-run.d.ts +3 -13
  136. package/dist/runtime/reconcile-run.d.ts.map +1 -1
  137. package/dist/runtime/reconcile-run.js +3 -4
  138. package/dist/runtime/reconcile-run.js.map +1 -1
  139. package/dist/runtime/reconcile-state.d.ts +0 -8
  140. package/dist/runtime/reconcile-state.d.ts.map +1 -1
  141. package/dist/runtime/reconcile-state.js +1 -4
  142. package/dist/runtime/reconcile-state.js.map +1 -1
  143. package/dist/runtime/run.d.ts +5 -1
  144. package/dist/runtime/run.d.ts.map +1 -1
  145. package/dist/runtime/run.js +1 -0
  146. package/dist/runtime/run.js.map +1 -1
  147. package/dist/runtime/runtime-schema.js +3 -3
  148. package/dist/runtime/runtime-schema.js.map +1 -1
  149. package/dist/runtime/runtime.d.ts +2 -1
  150. package/dist/runtime/runtime.d.ts.map +1 -1
  151. package/dist/runtime/runtime.js +4 -27
  152. package/dist/runtime/runtime.js.map +1 -1
  153. package/dist/runtime/supervisor/long-running-supervisor.d.ts +0 -13
  154. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  155. package/dist/runtime/supervisor/long-running-supervisor.js +0 -1
  156. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  157. package/dist/runtime/update-apply-deps.d.ts +23 -2
  158. package/dist/runtime/update-apply-deps.d.ts.map +1 -1
  159. package/dist/runtime/update-apply-deps.js +11 -5
  160. package/dist/runtime/update-apply-deps.js.map +1 -1
  161. package/dist/runtime/validate-dsl-position-tracking.d.ts.map +1 -1
  162. package/dist/runtime/validate-dsl-position-tracking.js +1 -2
  163. package/dist/runtime/validate-dsl-position-tracking.js.map +1 -1
  164. package/dist/runtime-api/handlers/ingest-signals.d.ts.map +1 -1
  165. package/dist/runtime-api/handlers/ingest-signals.js +0 -1
  166. package/dist/runtime-api/handlers/ingest-signals.js.map +1 -1
  167. package/dist/runtime-api/handlers/types.d.ts +0 -5
  168. package/dist/runtime-api/handlers/types.d.ts.map +1 -1
  169. package/dist/runtime-api/intake/intake-events.d.ts +1 -1
  170. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -1
  171. package/dist/runtime-api/intake/intake-events.js +3 -9
  172. package/dist/runtime-api/intake/intake-events.js.map +1 -1
  173. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  174. package/dist/runtime-api/intake/intake-mount.js +19 -4
  175. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  176. package/dist/runtime-api/intake/process-error-post.d.ts +1 -6
  177. package/dist/runtime-api/intake/process-error-post.d.ts.map +1 -1
  178. package/dist/runtime-api/intake/process-error-post.js +1 -5
  179. package/dist/runtime-api/intake/process-error-post.js.map +1 -1
  180. package/dist/runtime-api/intake/process-signal-post.d.ts +1 -7
  181. package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
  182. package/dist/runtime-api/intake/process-signal-post.js +0 -5
  183. package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
  184. package/dist/runtime-api/intake/scaffold-error-router.js.map +1 -1
  185. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  186. package/dist/runtime-api/intake/scanner-launcher.js +0 -15
  187. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  188. package/dist/runtime-api/intake/types.d.ts +0 -55
  189. package/dist/runtime-api/intake/types.d.ts.map +1 -1
  190. package/dist/runtime-api/routes/signals.d.ts +0 -2
  191. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  192. package/dist/runtime-api/routes/signals.js +1 -5
  193. package/dist/runtime-api/routes/signals.js.map +1 -1
  194. package/dist/runtime-api/routes/signals.schema.d.ts +0 -43
  195. package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
  196. package/dist/runtime-api/routes/signals.schema.js +0 -43
  197. package/dist/runtime-api/routes/signals.schema.js.map +1 -1
  198. package/dist/runtime-api/server.d.ts +1 -7
  199. package/dist/runtime-api/server.d.ts.map +1 -1
  200. package/dist/runtime-api/server.js +0 -1
  201. package/dist/runtime-api/server.js.map +1 -1
  202. package/dist/scanners/engine/engine.d.ts +1 -22
  203. package/dist/scanners/engine/engine.d.ts.map +1 -1
  204. package/dist/scanners/engine/engine.js +11 -78
  205. package/dist/scanners/engine/engine.js.map +1 -1
  206. package/dist/scanners/engine/lifecycle.d.ts +1 -7
  207. package/dist/scanners/engine/lifecycle.d.ts.map +1 -1
  208. package/dist/scanners/events.d.ts +0 -4
  209. package/dist/scanners/events.d.ts.map +1 -1
  210. package/dist/scanners/events.js +0 -2
  211. package/dist/scanners/events.js.map +1 -1
  212. package/dist/scanners/external/scaffold/delivery.py +25 -194
  213. package/dist/scanners/external/scaffold/scaffold.py +31 -172
  214. package/dist/scanners/external/scaffold/senpi_mcp.py +8 -150
  215. package/dist/scanners/external-scanner-receiver.d.ts +0 -17
  216. package/dist/scanners/external-scanner-receiver.d.ts.map +1 -1
  217. package/dist/scanners/external-scanner-receiver.js +0 -8
  218. package/dist/scanners/external-scanner-receiver.js.map +1 -1
  219. package/dist/scanners/runtime-module.d.ts +0 -1
  220. package/dist/scanners/runtime-module.d.ts.map +1 -1
  221. package/dist/scanners/runtime-module.js +9 -66
  222. package/dist/scanners/runtime-module.js.map +1 -1
  223. package/dist/skills-manager/manifest.d.ts.map +1 -1
  224. package/dist/skills-manager/manifest.js +1 -0
  225. package/dist/skills-manager/manifest.js.map +1 -1
  226. package/dist/skills-manager/skills-manifest.json +1 -0
  227. package/dist/telemetry/attributes.d.ts +0 -20
  228. package/dist/telemetry/attributes.d.ts.map +1 -1
  229. package/dist/telemetry/attributes.js +0 -24
  230. package/dist/telemetry/attributes.js.map +1 -1
  231. package/dist/telemetry/event-builders.d.ts +6 -81
  232. package/dist/telemetry/event-builders.d.ts.map +1 -1
  233. package/dist/telemetry/event-builders.js +17 -141
  234. package/dist/telemetry/event-builders.js.map +1 -1
  235. package/dist/telemetry/event-store.d.ts +0 -6
  236. package/dist/telemetry/event-store.d.ts.map +1 -1
  237. package/dist/telemetry/event-store.js +8 -12
  238. package/dist/telemetry/event-store.js.map +1 -1
  239. package/dist/telemetry/metrics.d.ts +2 -14
  240. package/dist/telemetry/metrics.d.ts.map +1 -1
  241. package/dist/telemetry/metrics.js +4 -19
  242. package/dist/telemetry/metrics.js.map +1 -1
  243. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -1
  244. package/dist/telemetry/spans/redact-pii.js +2 -18
  245. package/dist/telemetry/spans/redact-pii.js.map +1 -1
  246. package/dist/telemetry/tracing.d.ts +0 -9
  247. package/dist/telemetry/tracing.d.ts.map +1 -1
  248. package/dist/telemetry/tracing.js +0 -36
  249. package/dist/telemetry/tracing.js.map +1 -1
  250. package/dist/types/dsl/index.d.ts +1 -12
  251. package/dist/types/dsl/index.d.ts.map +1 -1
  252. package/dist/types/runtime.d.ts +8 -0
  253. package/dist/types/runtime.d.ts.map +1 -1
  254. package/dist/types/scanner.d.ts +0 -15
  255. package/dist/types/scanner.d.ts.map +1 -1
  256. package/dist/utils/event-catalog.d.ts +91 -166
  257. package/dist/utils/event-catalog.d.ts.map +1 -1
  258. package/dist/utils/event-catalog.js +13 -18
  259. package/dist/utils/event-catalog.js.map +1 -1
  260. package/dist/utils/keyed-mutex.d.ts +3 -2
  261. package/dist/utils/keyed-mutex.d.ts.map +1 -1
  262. package/dist/utils/keyed-mutex.js +3 -2
  263. package/dist/utils/keyed-mutex.js.map +1 -1
  264. package/dist/utils/logger.d.ts +1 -4
  265. package/dist/utils/logger.d.ts.map +1 -1
  266. package/dist/utils/logger.js.map +1 -1
  267. package/dist/validate/recipe-checks.d.ts.map +1 -1
  268. package/dist/validate/recipe-checks.js +2 -2
  269. package/dist/validate/recipe-checks.js.map +1 -1
  270. package/openclaw.plugin.json +5 -1
  271. package/package.json +1 -1
  272. package/dist/actions/skipped-signal-results.d.ts +0 -25
  273. package/dist/actions/skipped-signal-results.d.ts.map +0 -1
  274. package/dist/actions/skipped-signal-results.js +0 -71
  275. package/dist/actions/skipped-signal-results.js.map +0 -1
  276. package/dist/runtime-api/intake/ingest-request.d.ts +0 -17
  277. package/dist/runtime-api/intake/ingest-request.d.ts.map +0 -1
  278. package/dist/runtime-api/intake/ingest-request.js +0 -34
  279. package/dist/runtime-api/intake/ingest-request.js.map +0 -1
  280. package/dist/runtime-api/intake/scaffold-tick-router.d.ts +0 -39
  281. package/dist/runtime-api/intake/scaffold-tick-router.d.ts.map +0 -1
  282. package/dist/runtime-api/intake/scaffold-tick-router.js +0 -122
  283. package/dist/runtime-api/intake/scaffold-tick-router.js.map +0 -1
  284. package/dist/scanners/external/scaffold/tick_facts.py +0 -130
  285. package/dist/scanners/external/scaffold/ulid.py +0 -58
  286. package/dist/telemetry/live-telemetry.d.ts +0 -238
  287. package/dist/telemetry/live-telemetry.d.ts.map +0 -1
  288. package/dist/telemetry/live-telemetry.js +0 -853
  289. package/dist/telemetry/live-telemetry.js.map +0 -1
  290. package/dist/telemetry/scanner-stats.d.ts +0 -143
  291. package/dist/telemetry/scanner-stats.d.ts.map +0 -1
  292. package/dist/telemetry/scanner-stats.js +0 -426
  293. package/dist/telemetry/scanner-stats.js.map +0 -1
  294. package/dist/telemetry/scanner-tick-feed.d.ts +0 -87
  295. package/dist/telemetry/scanner-tick-feed.d.ts.map +0 -1
  296. package/dist/telemetry/scanner-tick-feed.js +0 -48
  297. package/dist/telemetry/scanner-tick-feed.js.map +0 -1
  298. package/dist/telemetry/strategy-topology.d.ts +0 -99
  299. package/dist/telemetry/strategy-topology.d.ts.map +0 -1
  300. package/dist/telemetry/strategy-topology.js +0 -93
  301. package/dist/telemetry/strategy-topology.js.map +0 -1
  302. package/dist/telemetry/telemetry-publisher.d.ts +0 -63
  303. package/dist/telemetry/telemetry-publisher.d.ts.map +0 -1
  304. package/dist/telemetry/telemetry-publisher.js +0 -229
  305. package/dist/telemetry/telemetry-publisher.js.map +0 -1
  306. package/dist/telemetry/tick-frame.d.ts +0 -212
  307. package/dist/telemetry/tick-frame.d.ts.map +0 -1
  308. package/dist/telemetry/tick-frame.js +0 -421
  309. package/dist/telemetry/tick-frame.js.map +0 -1
  310. package/dist/telemetry/timeline-buffer.d.ts +0 -95
  311. package/dist/telemetry/timeline-buffer.d.ts.map +0 -1
  312. package/dist/telemetry/timeline-buffer.js +0 -237
  313. package/dist/telemetry/timeline-buffer.js.map +0 -1
  314. package/dist/utils/telemetry-required-log.d.ts +0 -60
  315. package/dist/utils/telemetry-required-log.d.ts.map +0 -1
  316. package/dist/utils/telemetry-required-log.js +0 -105
  317. package/dist/utils/telemetry-required-log.js.map +0 -1
  318. package/dist/utils/ulid.d.ts +0 -9
  319. package/dist/utils/ulid.d.ts.map +0 -1
  320. package/dist/utils/ulid.js +0 -43
  321. package/dist/utils/ulid.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dsl/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dsl/engine/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,5 +1,25 @@
1
1
  /**
2
- * Price rounding for DSL price levels.
2
+ * Rounding for DSL protective price levels (stops).
3
3
  */
4
- export declare function roundTo(value: number, decimals?: number): number;
4
+ /**
5
+ * Round a protective price level onto Hyperliquid's price grid, biased AWAY from the mark.
6
+ *
7
+ * A LONG's stop sits below the mark so it rounds down; a SHORT's sits above so it rounds up.
8
+ * THIS service's rounding may then only ever loosen a stop, never tighten it and never move it
9
+ * across the mark: the trading engine rejects `slTriggerPrice >= currentPrice` for a LONG (and
10
+ * `<=` for a SHORT) as "would execute immediately", and a rejected stop leaves the position with
11
+ * no exchange-side protection at all.
12
+ *
13
+ * It is not an end-to-end guarantee. The trading engine re-rounds what we send with
14
+ * `roundToDecimals(price, 6 - szDecimals)`, which is round-to-NEAREST (`utils.go:133-136`), so
15
+ * for an asset whose `szDecimals` forces fewer than 6 decimals it can still move a LONG floor
16
+ * back up by half a venue tick. Reading per-asset `szDecimals` is what would close that; until
17
+ * then the residual degrades to a rejection, which the phase-2 breach path now turns into an
18
+ * exit rather than a silent no-stop.
19
+ *
20
+ * Non-finite, zero and negative inputs are returned unchanged — there is no meaningful grid
21
+ * for them, and silently manufacturing a level would be worse than passing the caller's own
22
+ * value through to its validation.
23
+ */
24
+ export declare function roundProtectiveLevel(value: number, direction: "LONG" | "SHORT"): number;
5
25
  //# sourceMappingURL=round.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../../src/dsl/engine/round.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAuB,GAAG,MAAM,CAGhF"}
1
+ {"version":3,"file":"round.d.ts","sourceRoot":"","sources":["../../../src/dsl/engine/round.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoDH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAIvF"}
@@ -1,9 +1,82 @@
1
1
  /**
2
- * Price rounding for DSL price levels.
2
+ * Rounding for DSL protective price levels (stops).
3
3
  */
4
- import { PRICE_DECIMALS } from "../../constants/dsl/index.js";
5
- export function roundTo(value, decimals = PRICE_DECIMALS) {
6
- const f = 10 ** decimals;
7
- return Math.round(value * f) / f;
4
+ /** Hyperliquid's price rule: significant figures, then a per-asset decimal cap. */
5
+ const SIG_FIGS = 5;
6
+ /**
7
+ * `6 - szDecimals` is the perp decimal cap; 6 is its loosest value and the runtime has no
8
+ * per-asset `szDecimals`, so this is the tightest bound we can assert without one.
9
+ */
10
+ const MAX_DECIMALS = 6;
11
+ /** Decimal exponent of `value`, read off its shortest exponential form so no rounding can bump it. */
12
+ function decimalExponent(value) {
13
+ const s = value.toExponential();
14
+ return Number(s.slice(s.indexOf("e") + 1));
15
+ }
16
+ /**
17
+ * Quantise to `SIG_FIGS`, biased away from the mark.
18
+ *
19
+ * `Number(value.toPrecision(n))` is used rather than `Math.floor(value * 10 ** k)` because the
20
+ * latter carries binary floating-point artifacts (`8.29 * 1e4 === 82899.99999999999`) that
21
+ * silently drift the level by a tick. `toPrecision` gives the NEAREST grid value; we step one
22
+ * unit in the last place only when that landed on the wrong side.
23
+ */
24
+ function toSignificantFigures(value, roundDown) {
25
+ const nearest = Number(value.toPrecision(SIG_FIGS));
26
+ if (nearest === value)
27
+ return value;
28
+ const ulp = 10 ** (decimalExponent(value) - (SIG_FIGS - 1));
29
+ if (roundDown && nearest > value)
30
+ return Number((nearest - ulp).toPrecision(SIG_FIGS));
31
+ if (!roundDown && nearest < value)
32
+ return Number((nearest + ulp).toPrecision(SIG_FIGS));
33
+ return nearest;
34
+ }
35
+ /**
36
+ * Quantise to `MAX_DECIMALS`, biased away from the mark. Same nearest-then-step approach.
37
+ *
38
+ * Below the 1e-6 grid there is no representable protective level at all: rounding down gives 0,
39
+ * which is no stop, and rounding up gives 1e-6, which for a SHORT can sit multiples above the
40
+ * level asked for. Both are worse than passing the significant-figure value through and letting
41
+ * the venue's own validation answer. No Hyperliquid perp trades there, so this is a deliberate
42
+ * decision about an unreachable input rather than a supported price range — and it is why the
43
+ * "at most 6 decimals" guarantee is stated for inputs at or above 1e-6.
44
+ */
45
+ function toMaxDecimals(value, roundDown) {
46
+ const scale = 10 ** MAX_DECIMALS;
47
+ if (value < 1 / scale)
48
+ return value;
49
+ let units = Math.round(Number(value.toFixed(MAX_DECIMALS)) * scale);
50
+ if (roundDown && units / scale > value)
51
+ units -= 1;
52
+ if (!roundDown && units / scale < value)
53
+ units += 1;
54
+ return units / scale;
55
+ }
56
+ /**
57
+ * Round a protective price level onto Hyperliquid's price grid, biased AWAY from the mark.
58
+ *
59
+ * A LONG's stop sits below the mark so it rounds down; a SHORT's sits above so it rounds up.
60
+ * THIS service's rounding may then only ever loosen a stop, never tighten it and never move it
61
+ * across the mark: the trading engine rejects `slTriggerPrice >= currentPrice` for a LONG (and
62
+ * `<=` for a SHORT) as "would execute immediately", and a rejected stop leaves the position with
63
+ * no exchange-side protection at all.
64
+ *
65
+ * It is not an end-to-end guarantee. The trading engine re-rounds what we send with
66
+ * `roundToDecimals(price, 6 - szDecimals)`, which is round-to-NEAREST (`utils.go:133-136`), so
67
+ * for an asset whose `szDecimals` forces fewer than 6 decimals it can still move a LONG floor
68
+ * back up by half a venue tick. Reading per-asset `szDecimals` is what would close that; until
69
+ * then the residual degrades to a rejection, which the phase-2 breach path now turns into an
70
+ * exit rather than a silent no-stop.
71
+ *
72
+ * Non-finite, zero and negative inputs are returned unchanged — there is no meaningful grid
73
+ * for them, and silently manufacturing a level would be worse than passing the caller's own
74
+ * value through to its validation.
75
+ */
76
+ export function roundProtectiveLevel(value, direction) {
77
+ if (!Number.isFinite(value) || value <= 0)
78
+ return value;
79
+ const roundDown = direction === "LONG";
80
+ return toMaxDecimals(toSignificantFigures(value, roundDown), roundDown);
8
81
  }
9
82
  //# sourceMappingURL=round.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/dsl/engine/round.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,WAAmB,cAAc;IACtE,MAAM,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"round.js","sourceRoot":"","sources":["../../../src/dsl/engine/round.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mFAAmF;AACnF,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,sGAAsG;AACtG,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,KAAa,EAAE,SAAkB;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,SAAS,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,MAAM,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,IAAI,CAAC,SAAS,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,MAAM,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,SAAkB;IACtD,MAAM,KAAK,GAAG,EAAE,IAAI,YAAY,CAAC;IACjC,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACpE,IAAI,SAAS,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK;QAAE,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,SAAS,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK;QAAE,KAAK,IAAI,CAAC,CAAC;IACpD,OAAO,KAAK,GAAG,KAAK,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAA2B;IAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,SAAS,GAAG,SAAS,KAAK,MAAM,CAAC;IACvC,OAAO,aAAa,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tick.d.ts","sourceRoot":"","sources":["../../../src/dsl/engine/tick.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAexE,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAyMlF"}
1
+ {"version":3,"file":"tick.d.ts","sourceRoot":"","sources":["../../../src/dsl/engine/tick.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAgBxE,wBAAgB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAwNlF"}
@@ -2,7 +2,7 @@
2
2
  * Pure DSL tick: state + price → next state and actions.
3
3
  */
4
4
  import { CLOSE_REASON } from "../../constants/dsl/index.js";
5
- import { computeCurrentROE, computeTierFloor, effectiveFloor, isBreach, resolveBreachesRequired, tierIndexFromPrice, } from "./floors.js";
5
+ import { computeCurrentROE, computeTierFloor, effectiveFloor, hasRestingStopAtFloor, isBreach, resolveBreachesRequired, tierIndexFromPrice, } from "./floors.js";
6
6
  import { updateHighWater, writeDerivedFields } from "./state-updates.js";
7
7
  import { createLogger } from "../../utils/logger.js";
8
8
  const log = createLogger("[senpi-core][dsl-tick]");
@@ -25,23 +25,38 @@ export function dslTick(state, price, now) {
25
25
  let closeReason;
26
26
  const newTierIndexForBreach = tierIndexFromPrice(next, price);
27
27
  const prevTierIndexForBreach = next.currentTierIndex ?? -1;
28
- if (next.phase === 1) {
29
- if (isBreach(next, price)) {
30
- const breachesRequired = resolveBreachesRequired(next);
31
- const newCount = (next.currentBreachCount ?? 0) + 1;
32
- next = { ...next, currentBreachCount: newCount };
33
- if (newCount >= breachesRequired) {
34
- action = "close";
35
- closeReason = CLOSE_REASON.DSL_BREACH;
36
- next = { ...next, floorPrice: prevFloorPrice };
37
- }
38
- }
39
- else {
40
- const advancingTier = newTierIndexForBreach > prevTierIndexForBreach;
41
- if (!advancingTier)
42
- next = { ...next, currentBreachCount: 0 };
28
+ // Breach detection runs in BOTH phases. In phase 2 the exchange stop is normally what exits,
29
+ // but a stop the venue rejected (a level rounded onto the mark, say) leaves the floor on the
30
+ // wrong side of the mark with nothing resting behind it — which is a breach by definition, and
31
+ // dsl-engine cannot close a position, so the runtime is the only thing that can. This sits
32
+ // ahead of the `handoffStatus === "ok"` early return so a backend-owned position surfaces a
33
+ // breach too; `consecutiveBreachesRequired` still gives a resting stop time to fill first.
34
+ //
35
+ // The breach is COUNTED either way; only the close is withheld when a stop is already resting
36
+ // at the floor. Raising a close there would return at the `action === "close"` early return
37
+ // below, which skips the time cuts, the tier advance and the floor recompute — and the whole
38
+ // downstream half of the monitor tick, SL sync and heartbeat included — on every tick the mark
39
+ // spends at or under the floor. A stale `slOrderId` (a stop cancelled at the venue is never
40
+ // cleared, since the tick's `getOrderStatus` check only clears on `filled`) would then take
41
+ // `hard_timeout` down with it.
42
+ if (isBreach(next, price)) {
43
+ const breachesRequired = resolveBreachesRequired(next);
44
+ // Clamped at the threshold. In phase 1 the close bounded this; in phase 2 a withheld close
45
+ // does not, and an unbounded counter renders as `18432/1` in `senpi dsl` and fires the
46
+ // `breach_detected` span event on every tick it grows.
47
+ const newCount = Math.min((next.currentBreachCount ?? 0) + 1, breachesRequired);
48
+ next = { ...next, currentBreachCount: newCount };
49
+ if (newCount >= breachesRequired && !hasRestingStopAtFloor(next)) {
50
+ action = "close";
51
+ closeReason = CLOSE_REASON.DSL_BREACH;
52
+ next = { ...next, floorPrice: prevFloorPrice };
43
53
  }
44
54
  }
55
+ else {
56
+ const advancingTier = newTierIndexForBreach > prevTierIndexForBreach;
57
+ if (!advancingTier)
58
+ next = { ...next, currentBreachCount: 0 };
59
+ }
45
60
  if (action === "none") {
46
61
  const currentROE = computeCurrentROE(next, price);
47
62
  if (next.hardTimeout?.enabled) {
@@ -1 +1 @@
1
- {"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../src/dsl/engine/tick.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,GAAG,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAEnD,MAAM,UAAU,OAAO,CAAC,KAAe,EAAE,KAAa,EAAE,GAAW;IACjE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;IACxC,IAAI,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAE9C,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,iBAAiB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAChF,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC;IAChD,CAAC;IACD,oGAAoG;IACpG,gGAAgG;IAChG,mGAAmG;IACnG,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QACzD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAEjC,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,GAA4B,MAAM,CAAC;IAC7C,IAAI,WAA+B,CAAC;IAEpC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAE3D,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;YACjD,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;gBACjC,MAAM,GAAG,OAAO,CAAC;gBACjB,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC;gBACtC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;YACrE,IAAI,CAAC,aAAa;gBAAE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;YAC9B,mFAAmF;YACnF,uDAAuD;YACvD,MAAM,wBAAwB,GAC5B,IAAI,CAAC,KAAK,KAAK,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK;gBAC7B,qBAAqB,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC9B,MAAM,OAAO,GACX,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;gBACrF,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;oBAClD,MAAM,GAAG,OAAO,CAAC;oBACjB,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;YACrD,MAAM,OAAO,GACX,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;YACvF,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACvE,MAAM,GAAG,OAAO,CAAC;gBACjB,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;YACnD,MAAM,OAAO,GACX,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC;YACrF,MAAM,YAAY,GAChB,SAAS,KAAK,MAAM;gBAClB,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;gBACvC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACzC,IACE,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB;gBAC7C,YAAY;gBACZ,IAAI,CAAC,OAAO,GAAG,MAAM;gBACrB,UAAU,GAAG,IAAI,CAAC,OAAO,EACzB,CAAC;gBACD,MAAM,GAAG,OAAO,CAAC;gBACjB,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC;QACrD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC;QACxD,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,SAAS;YACvB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,IAAI;YACX,YAAY;YACZ,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC5C,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;IAE1B,IAAI,YAAY,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,WAAW,GAAG,IAAI,CAAC;QACnB,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,UAAU,GACd,IAAI,CAAC,SAAS,KAAK,MAAM;YACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,IAAI,GAAG;YACL,GAAG,IAAI;YACP,gBAAgB,EAAE,YAAY;YAC9B,cAAc,EAAE,SAAS;YACzB,UAAU;YACV,SAAS,EAAE,GAAG;SACf,CAAC;QACF,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACtD,YAAY,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,GAAG;gBACL,GAAG,IAAI;gBACP,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,GAAG;gBACf,kBAAkB,EAAE,CAAC;gBACrB,UAAU,EAAE,IAAI,CAAC,cAAc;gBAC/B,aAAa,EAAE,SAAS;aACzB,CAAC;YACF,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAChC,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC;QACxD,OAAO;YACL,WAAW;YACX,YAAY;YACZ,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACvD,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YACpD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC7C,KAAK,EAAE,IAAI;YACX,YAAY;SACb,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACzE,GAAG,CAAC,KAAK,CAAC,uEAAuE,EAAE;gBACjF,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aAC/B,CAAC,CAAC;YACH,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC/E,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YACtC,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnE,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,KAAK,CAAC;gBACvB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM;oBACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;oBAC7C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;YAC9C,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YACtC,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,cAAc,CAAC;IAExD,OAAO;QACL,WAAW;QACX,YAAY;QACZ,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QACtE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACpD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAC7C,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,YAAY,IAAI,WAAW,IAAI,YAAY;KAC1D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../src/dsl/engine/tick.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"event-mapping.d.ts","sourceRoot":"","sources":["../../../src/dsl/engine-client/event-mapping.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,wFAAwF;IACxF,aAAa,EAAE,MAAM,CAAC;IACtB,mGAAmG;IACnG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,aAAa,EAAE,uBAAuB,CAAC;IACvC,qGAAqG;IACrG,cAAc,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC3C;AA8BD,iFAAiF;AACjF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,aAAa,GACrB,cAAc,GAAG,IAAI,CAgGvB"}
1
+ {"version":3,"file":"event-mapping.d.ts","sourceRoot":"","sources":["../../../src/dsl/engine-client/event-mapping.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,wFAAwF;IACxF,aAAa,EAAE,MAAM,CAAC;IACtB,mGAAmG;IACnG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,aAAa,EAAE,uBAAuB,CAAC;IACvC,qGAAqG;IACrG,cAAc,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC3C;AAkBD,iFAAiF;AACjF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,aAAa,GACrB,cAAc,GAAG,IAAI,CA6FvB"}
@@ -15,17 +15,6 @@ function pickString(details, ...keys) {
15
15
  }
16
16
  return null;
17
17
  }
18
- /**
19
- * Provenance for a mapped event: the backend acted, and this is its own stamp of when. The stamp
20
- * comes off the wire, so it is checked here; an unusable one drops out on its own and never costs
21
- * the source, which is known from the call site rather than from the payload.
22
- */
23
- function backendProvenance(createdAt) {
24
- return {
25
- __dslSource: "backend",
26
- ...(typeof createdAt === "string" && createdAt.length > 0 ? { __backendEventAt: createdAt } : {}),
27
- };
28
- }
29
18
  /** Returns null for informational events or when required fields are missing. */
30
19
  export function mapBackendEventToBusEvent(event, context) {
31
20
  const details = event.details;
@@ -53,7 +42,6 @@ export function mapBackendEventToBusEvent(event, context) {
53
42
  __positionId: context.positionId ?? context.correlationId,
54
43
  timestamp: ts,
55
44
  ...(context.tierEnrichment ?? {}),
56
- ...backendProvenance(ts),
57
45
  },
58
46
  };
59
47
  }
@@ -87,7 +75,6 @@ export function mapBackendEventToBusEvent(event, context) {
87
75
  entryPrice: context.tierEnrichment?.entryPrice,
88
76
  correlationId: context.correlationId,
89
77
  timestamp: ts,
90
- ...backendProvenance(ts),
91
78
  },
92
79
  };
93
80
  }
@@ -109,7 +96,6 @@ export function mapBackendEventToBusEvent(event, context) {
109
96
  triggerReason: context.triggerReason,
110
97
  __positionId: context.positionId ?? context.correlationId,
111
98
  timestamp: ts,
112
- ...backendProvenance(ts),
113
99
  },
114
100
  };
115
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-mapping.js","sourceRoot":"","sources":["../../../src/dsl/engine-client/event-mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-mapping.js","sourceRoot":"","sources":["../../../src/dsl/engine-client/event-mapping.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,11 @@
1
1
  /**
2
2
  * Build {@link DslClosedEvent} payloads from a full {@link DslState} snapshot at close time.
3
3
  */
4
- import type { DslClosedEvent, DslEventSource, DslState } from "../../types/dsl/index.js";
4
+ import type { DslClosedEvent, DslState } from "../../types/dsl/index.js";
5
5
  export interface BuildDslClosedEventOptions {
6
6
  reason: string;
7
7
  closeReason: string;
8
8
  timestamp: string;
9
- /** The monitor tick emitting the close; omitted by a caller that has no tick in hand. */
10
- tickId?: string;
11
- /**
12
- * Which side produced this transition: our own monitor tick, or a relay of one the backend made.
13
- * Omitted by a caller that cannot attribute the close. It does NOT say whose stop was protecting
14
- * the position — a close our poll detected is `runtime` even when the backend placed the stop
15
- * that fired. The preceding `dsl.sl_updated` answers that.
16
- */
17
- source?: DslEventSource;
18
- /**
19
- * The backend's own stamp of when it acted, on a backend-sourced close. Loosely typed because it
20
- * reaches this builder from a wire payload; anything but a non-empty string drops out, and it
21
- * drops out on its own — a stamp we cannot use never costs the source beside it.
22
- */
23
- backendEventAt?: unknown;
24
9
  }
25
10
  /**
26
11
  * Maps archived/live state to the bus `dsl.closed` payload (including fields for notification formatting
@@ -1 +1 @@
1
- {"version":3,"file":"build-closed-event.d.ts","sourceRoot":"","sources":["../../../src/dsl/events/build-closed-event.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,0BAA0B,GAC/B,cAAc,CA2BhB"}
1
+ {"version":3,"file":"build-closed-event.d.ts","sourceRoot":"","sources":["../../../src/dsl/events/build-closed-event.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzE,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,0BAA0B,GAC/B,cAAc,CAsBhB"}
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Build {@link DslClosedEvent} payloads from a full {@link DslState} snapshot at close time.
3
3
  */
4
- import { PAYLOAD_KEY } from "../../utils/event-catalog.js";
5
4
  /**
6
5
  * Maps archived/live state to the bus `dsl.closed` payload (including fields for notification formatting
7
6
  * and deferred trade-history enrichment).
@@ -16,11 +15,6 @@ export function buildDslClosedEventFromState(state, opts) {
16
15
  closeReason: opts.closeReason,
17
16
  triggerReason: state.triggerReason,
18
17
  __positionId: state.positionId ?? state.correlationId,
19
- [PAYLOAD_KEY.tickId]: opts.tickId,
20
- __dslSource: opts.source,
21
- ...(typeof opts.backendEventAt === "string" && opts.backendEventAt.length > 0
22
- ? { __backendEventAt: opts.backendEventAt }
23
- : {}),
24
18
  timestamp: opts.timestamp,
25
19
  direction: state.direction,
26
20
  entryPrice: state.entryPrice,
@@ -1 +1 @@
1
- {"version":3,"file":"build-closed-event.js","sourceRoot":"","sources":["../../../src/dsl/events/build-closed-event.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAuB3D;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAe,EACf,IAAgC;IAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;QACpB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa;QACrD,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM;QACjC,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,CAAC,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YAC3E,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,cAAc,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"build-closed-event.js","sourceRoot":"","sources":["../../../src/dsl/events/build-closed-event.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAe,EACf,IAAgC;IAEhC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;QACpB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa;QACrD,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM;QACN,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC"}
@@ -20,13 +20,6 @@ export interface HandlePositionOpenedOpts {
20
20
  * on a flip (favorable polarity inverts).
21
21
  */
22
22
  carryNotifiedStop?: NotifiedStopCarry;
23
- /**
24
- * The tick that observed the change, for a caller that normalizes its payload before re-entering
25
- * the open path — the rebuild shapes (increase/decrease/flip) have no room for the id, so it is
26
- * read from the original payload and passed here instead. The monitor-driven reconcile passes its
27
- * tick here too; the boot reconcile runs before any tick exists and passes none.
28
- */
29
- tickId?: string;
30
23
  }
31
24
  export declare function createEventHandlers(config: DslPluginConfig, stateManager: StateManager, strategyStates: Map<string, StrategyState>, bus: SenpiEventBus, _baseDir: string): {
32
25
  handlePositionOpened: (payload: unknown, triggerReason?: DslCreatedTriggerReason, opts?: HandlePositionOpenedOpts) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dsl/events/handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAGf,uBAAuB,EACvB,mBAAmB,EAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAqBzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAgE5D,MAAM,WAAW,wBAAwB;IACvC,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1C,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GACf;IACD,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpI,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,qBAAqB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,uBAAuB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,uBAAuB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,2FAA2F;IAC3F,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD;;;;OAIG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG;;;;OAIG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClG,CAymBA"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dsl/events/handlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAGf,uBAAuB,EACvB,mBAAmB,EAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAqBzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAsC5D,MAAM,WAAW,wBAAwB;IACvC,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1C,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GACf;IACD,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpI,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,qBAAqB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,uBAAuB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,uBAAuB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,2FAA2F;IAC3F,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD;;;;OAIG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG;;;;OAIG;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClG,CAmmBA"}
@@ -13,29 +13,10 @@ import { normalizePositionOpenedEvent } from "./normalize-position-opened.js";
13
13
  import { stateKey } from "../../state/paths.js";
14
14
  import { normalizeDslCoinDex } from "../../utils/perp-coin.js";
15
15
  import { buildDslClosedEventFromState } from "./build-closed-event.js";
16
- import { PAYLOAD_KEY } from "../../utils/event-catalog.js";
17
16
  function now() {
18
17
  return new Date().toISOString();
19
18
  }
20
- /**
21
- * A meta field on an incoming bus payload: under `data` on a hook event, at the root on a flat one.
22
- * Anything but a non-empty string reads as absent.
23
- */
24
- function incomingMeta(payload, key) {
25
- if (!payload || typeof payload !== "object")
26
- return undefined;
27
- const p = payload;
28
- const raw = typeof p.data?.[key] === "string" ? p.data[key] : p[key];
29
- return typeof raw === "string" && raw.length > 0 ? raw : undefined;
30
- }
31
- /**
32
- * The tick id on an incoming bus payload. Absent on the boot reconcile, which runs before any tick
33
- * exists — and none is invented for it.
34
- */
35
- function incomingTickId(payload) {
36
- return incomingMeta(payload, PAYLOAD_KEY.tickId);
37
- }
38
- function buildDslCreatedPayload(event, presetName, preset, state, ts, tickId) {
19
+ function buildDslCreatedPayload(event, presetName, preset, state, ts) {
39
20
  const margin = (state.size * state.entryPrice) / state.leverage;
40
21
  return {
41
22
  address: event.address,
@@ -51,11 +32,6 @@ function buildDslCreatedPayload(event, presetName, preset, state, ts, tickId) {
51
32
  margin,
52
33
  triggerReason: state.triggerReason,
53
34
  __positionId: state.positionId ?? state.correlationId,
54
- [PAYLOAD_KEY.tickId]: tickId,
55
- // Every path into `dsl.created` is local — a position-tracker lifecycle event or a reconcile
56
- // adopt — so the runtime is always the actor. Said explicitly: absence has to keep meaning
57
- // "we do not know".
58
- __dslSource: "runtime",
59
35
  timestamp: ts,
60
36
  };
61
37
  }
@@ -95,9 +71,6 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
95
71
  if (!event)
96
72
  return;
97
73
  event = normalizePositionOpenedEvent(event);
98
- // A rebuild caller hands over a normalized event, which cannot hold the id — it passes the
99
- // original payload's tick instead. A direct bus open reads it off the payload it received.
100
- const tickId = opts?.tickId ?? incomingTickId(payload);
101
74
  const dexKey = event.dex ?? "";
102
75
  const posKey = stateKey(event.address, event.coin, dexKey);
103
76
  // Serialize concurrent opens on the same (address,coin,dex) key.
@@ -149,7 +122,7 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
149
122
  state.lastError = state.lastSlSyncError;
150
123
  state.lastErrorAt = now();
151
124
  await stateManager.setDslState(event.address, event.coin, event.dex ?? "", state);
152
- bus.emit(DSL_EVENTS.CREATED, buildDslCreatedPayload(event, presetName, preset, state, now(), tickId));
125
+ bus.emit(DSL_EVENTS.CREATED, buildDslCreatedPayload(event, presetName, preset, state, now()));
153
126
  return;
154
127
  }
155
128
  const shouldPlaceSl = opts?.placeSl !== false;
@@ -164,7 +137,7 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
164
137
  floor,
165
138
  });
166
139
  await stateManager.setDslState(event.address, event.coin, event.dex ?? "", state);
167
- bus.emit(DSL_EVENTS.CREATED, buildDslCreatedPayload(event, presetName, preset, state, now(), tickId));
140
+ bus.emit(DSL_EVENTS.CREATED, buildDslCreatedPayload(event, presetName, preset, state, now()));
168
141
  return;
169
142
  }
170
143
  slPlacementInProgress.add(posKey);
@@ -216,7 +189,7 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
216
189
  key: posKey,
217
190
  });
218
191
  await stateManager.setDslState(event.address, event.coin, event.dex ?? "", state);
219
- bus.emit(DSL_EVENTS.CREATED, buildDslCreatedPayload(event, presetName, preset, state, now(), tickId));
192
+ bus.emit(DSL_EVENTS.CREATED, buildDslCreatedPayload(event, presetName, preset, state, now()));
220
193
  }
221
194
  finally {
222
195
  slPlacementInProgress.delete(posKey);
@@ -296,9 +269,6 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
296
269
  reason: archiveCloseReason,
297
270
  closeReason: archiveCloseReason,
298
271
  timestamp: closedTs,
299
- // A monitor-caused close carries the monitor tick; an action-caused one carries the
300
- // scanner tick that drove the pass. Neither needs a branch — both ride the payload.
301
- tickId: incomingTickId(payload),
302
272
  }));
303
273
  });
304
274
  }
@@ -366,7 +336,7 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
366
336
  // it: the new direction is a different trade whose breakeven has not been
367
337
  // crossed. The rebuild resets all three and the first raise in the new
368
338
  // direction re-establishes them from scratch.
369
- await handlePositionOpened(openedPayload, "flipped", { tickId: incomingTickId(payload) });
339
+ await handlePositionOpened(openedPayload, "flipped");
370
340
  }
371
341
  async function handlePositionIncreased(payload) {
372
342
  let raw = null;
@@ -409,7 +379,7 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
409
379
  }
410
380
  });
411
381
  // archiveKey lock is released; handlePositionOpened re-acquires it safely.
412
- await handlePositionOpened(event, "position_increased", { carryNotifiedStop, tickId: incomingTickId(payload) });
382
+ await handlePositionOpened(event, "position_increased", { carryNotifiedStop });
413
383
  }
414
384
  async function handlePositionDecreased(payload) {
415
385
  let raw = null;
@@ -451,7 +421,7 @@ export function createEventHandlers(config, stateManager, strategyStates, bus, _
451
421
  }
452
422
  });
453
423
  // archiveKey lock is released; handlePositionOpened re-acquires it safely.
454
- await handlePositionOpened(event, "position_decreased", { carryNotifiedStop, tickId: incomingTickId(payload) });
424
+ await handlePositionOpened(event, "position_decreased", { carryNotifiedStop });
455
425
  }
456
426
  async function deleteDslsForStrategy(address) {
457
427
  const keys = await stateManager.listDslKeys(`${address}/`);