@senpi/runtime 3.0.118 → 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 (306) hide show
  1. package/dist/actions/action-events.d.ts +7 -21
  2. package/dist/actions/action-events.d.ts.map +1 -1
  3. package/dist/actions/action-events.js +26 -54
  4. package/dist/actions/action-events.js.map +1 -1
  5. package/dist/actions/action-runtime-module.d.ts.map +1 -1
  6. package/dist/actions/action-runtime-module.js +7 -38
  7. package/dist/actions/action-runtime-module.js.map +1 -1
  8. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  9. package/dist/actions/close-position/close-position.action.js +15 -122
  10. package/dist/actions/close-position/close-position.action.js.map +1 -1
  11. package/dist/actions/decision-engine.d.ts.map +1 -1
  12. package/dist/actions/decision-engine.js +2 -15
  13. package/dist/actions/decision-engine.js.map +1 -1
  14. package/dist/actions/event-derivation.d.ts +2 -71
  15. package/dist/actions/event-derivation.d.ts.map +1 -1
  16. package/dist/actions/event-derivation.js +8 -251
  17. package/dist/actions/event-derivation.js.map +1 -1
  18. package/dist/actions/open-position/open-position.action.d.ts +2 -17
  19. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  20. package/dist/actions/open-position/open-position.action.js +56 -162
  21. package/dist/actions/open-position/open-position.action.js.map +1 -1
  22. package/dist/actions/position-tracker/position-tracker.action.d.ts +1 -2
  23. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  24. package/dist/actions/position-tracker/position-tracker.action.js +17 -62
  25. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  26. package/dist/actions/store/types.d.ts +2 -9
  27. package/dist/actions/store/types.d.ts.map +1 -1
  28. package/dist/actions/store/types.js.map +1 -1
  29. package/dist/actions/types.d.ts +0 -13
  30. package/dist/actions/types.d.ts.map +1 -1
  31. package/dist/actions/types.js +0 -13
  32. package/dist/actions/types.js.map +1 -1
  33. package/dist/cli/guide-commands.d.ts.map +1 -1
  34. package/dist/cli/guide-commands.js +16 -11
  35. package/dist/cli/guide-commands.js.map +1 -1
  36. package/dist/constants/dsl/index.d.ts +17 -6
  37. package/dist/constants/dsl/index.d.ts.map +1 -1
  38. package/dist/constants/dsl/index.js +17 -6
  39. package/dist/constants/dsl/index.js.map +1 -1
  40. package/dist/dsl/engine/floors.d.ts +25 -1
  41. package/dist/dsl/engine/floors.d.ts.map +1 -1
  42. package/dist/dsl/engine/floors.js +38 -6
  43. package/dist/dsl/engine/floors.js.map +1 -1
  44. package/dist/dsl/engine/index.d.ts +1 -1
  45. package/dist/dsl/engine/index.d.ts.map +1 -1
  46. package/dist/dsl/engine/index.js +1 -1
  47. package/dist/dsl/engine/index.js.map +1 -1
  48. package/dist/dsl/engine/round.d.ts +22 -2
  49. package/dist/dsl/engine/round.d.ts.map +1 -1
  50. package/dist/dsl/engine/round.js +78 -5
  51. package/dist/dsl/engine/round.js.map +1 -1
  52. package/dist/dsl/engine/tick.d.ts.map +1 -1
  53. package/dist/dsl/engine/tick.js +31 -16
  54. package/dist/dsl/engine/tick.js.map +1 -1
  55. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  56. package/dist/dsl/engine-client/event-mapping.js +0 -14
  57. package/dist/dsl/engine-client/event-mapping.js.map +1 -1
  58. package/dist/dsl/events/build-closed-event.d.ts +1 -16
  59. package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
  60. package/dist/dsl/events/build-closed-event.js +0 -6
  61. package/dist/dsl/events/build-closed-event.js.map +1 -1
  62. package/dist/dsl/events/handlers.d.ts +0 -7
  63. package/dist/dsl/events/handlers.d.ts.map +1 -1
  64. package/dist/dsl/events/handlers.js +7 -37
  65. package/dist/dsl/events/handlers.js.map +1 -1
  66. package/dist/dsl/events/initial-state.d.ts +1 -1
  67. package/dist/dsl/events/initial-state.d.ts.map +1 -1
  68. package/dist/dsl/events/initial-state.js +4 -7
  69. package/dist/dsl/events/initial-state.js.map +1 -1
  70. package/dist/dsl/monitor/create-monitor.d.ts +2 -6
  71. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  72. package/dist/dsl/monitor/create-monitor.js +9 -15
  73. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  74. package/dist/dsl/monitor/dsl-failure-events.d.ts +0 -2
  75. package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -1
  76. package/dist/dsl/monitor/dsl-failure-events.js +1 -2
  77. package/dist/dsl/monitor/dsl-failure-events.js.map +1 -1
  78. package/dist/dsl/monitor/exchange-sync.d.ts +8 -3
  79. package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -1
  80. package/dist/dsl/monitor/exchange-sync.js +16 -4
  81. package/dist/dsl/monitor/exchange-sync.js.map +1 -1
  82. package/dist/dsl/monitor/process-one-position.d.ts +0 -1
  83. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  84. package/dist/dsl/monitor/process-one-position.js +113 -62
  85. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  86. package/dist/dsl/plugin/index.d.ts +10 -12
  87. package/dist/dsl/plugin/index.d.ts.map +1 -1
  88. package/dist/dsl/plugin/index.js +14 -12
  89. package/dist/dsl/plugin/index.js.map +1 -1
  90. package/dist/health/types.d.ts +0 -13
  91. package/dist/health/types.d.ts.map +1 -1
  92. package/dist/health/types.js +0 -12
  93. package/dist/health/types.js.map +1 -1
  94. package/dist/index.d.ts +4 -27
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +206 -257
  97. package/dist/index.js.map +1 -1
  98. package/dist/runtime/action-registry.d.ts.map +1 -1
  99. package/dist/runtime/action-registry.js +3 -4
  100. package/dist/runtime/action-registry.js.map +1 -1
  101. package/dist/runtime/boot-skip.d.ts +73 -0
  102. package/dist/runtime/boot-skip.d.ts.map +1 -0
  103. package/dist/runtime/boot-skip.js +113 -0
  104. package/dist/runtime/boot-skip.js.map +1 -0
  105. package/dist/runtime/create-runtime-context.d.ts +2 -0
  106. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  107. package/dist/runtime/create-runtime-context.js +1 -0
  108. package/dist/runtime/create-runtime-context.js.map +1 -1
  109. package/dist/runtime/domain-events.d.ts.map +1 -1
  110. package/dist/runtime/domain-events.js +0 -7
  111. package/dist/runtime/domain-events.js.map +1 -1
  112. package/dist/runtime/lifecycle-events.d.ts +43 -10
  113. package/dist/runtime/lifecycle-events.d.ts.map +1 -1
  114. package/dist/runtime/lifecycle-events.js +83 -12
  115. package/dist/runtime/lifecycle-events.js.map +1 -1
  116. package/dist/runtime/lifecycle-reaper.d.ts +202 -0
  117. package/dist/runtime/lifecycle-reaper.d.ts.map +1 -0
  118. package/dist/runtime/lifecycle-reaper.js +390 -0
  119. package/dist/runtime/lifecycle-reaper.js.map +1 -0
  120. package/dist/runtime/reconcile-run.d.ts +3 -13
  121. package/dist/runtime/reconcile-run.d.ts.map +1 -1
  122. package/dist/runtime/reconcile-run.js +3 -4
  123. package/dist/runtime/reconcile-run.js.map +1 -1
  124. package/dist/runtime/reconcile-state.d.ts +0 -8
  125. package/dist/runtime/reconcile-state.d.ts.map +1 -1
  126. package/dist/runtime/reconcile-state.js +1 -4
  127. package/dist/runtime/reconcile-state.js.map +1 -1
  128. package/dist/runtime/run.d.ts +5 -1
  129. package/dist/runtime/run.d.ts.map +1 -1
  130. package/dist/runtime/run.js +1 -0
  131. package/dist/runtime/run.js.map +1 -1
  132. package/dist/runtime/runtime-schema.js +3 -3
  133. package/dist/runtime/runtime-schema.js.map +1 -1
  134. package/dist/runtime/runtime.d.ts +2 -1
  135. package/dist/runtime/runtime.d.ts.map +1 -1
  136. package/dist/runtime/runtime.js +4 -27
  137. package/dist/runtime/runtime.js.map +1 -1
  138. package/dist/runtime/supervisor/long-running-supervisor.d.ts +0 -13
  139. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  140. package/dist/runtime/supervisor/long-running-supervisor.js +0 -1
  141. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  142. package/dist/runtime/update-apply-deps.d.ts +23 -2
  143. package/dist/runtime/update-apply-deps.d.ts.map +1 -1
  144. package/dist/runtime/update-apply-deps.js +11 -5
  145. package/dist/runtime/update-apply-deps.js.map +1 -1
  146. package/dist/runtime/validate-dsl-position-tracking.d.ts.map +1 -1
  147. package/dist/runtime/validate-dsl-position-tracking.js +1 -2
  148. package/dist/runtime/validate-dsl-position-tracking.js.map +1 -1
  149. package/dist/runtime-api/handlers/ingest-signals.d.ts.map +1 -1
  150. package/dist/runtime-api/handlers/ingest-signals.js +0 -1
  151. package/dist/runtime-api/handlers/ingest-signals.js.map +1 -1
  152. package/dist/runtime-api/handlers/types.d.ts +0 -5
  153. package/dist/runtime-api/handlers/types.d.ts.map +1 -1
  154. package/dist/runtime-api/intake/intake-events.d.ts +1 -1
  155. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -1
  156. package/dist/runtime-api/intake/intake-events.js +3 -9
  157. package/dist/runtime-api/intake/intake-events.js.map +1 -1
  158. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  159. package/dist/runtime-api/intake/intake-mount.js +19 -4
  160. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  161. package/dist/runtime-api/intake/process-error-post.d.ts +1 -6
  162. package/dist/runtime-api/intake/process-error-post.d.ts.map +1 -1
  163. package/dist/runtime-api/intake/process-error-post.js +1 -5
  164. package/dist/runtime-api/intake/process-error-post.js.map +1 -1
  165. package/dist/runtime-api/intake/process-signal-post.d.ts +1 -7
  166. package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
  167. package/dist/runtime-api/intake/process-signal-post.js +0 -5
  168. package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
  169. package/dist/runtime-api/intake/scaffold-error-router.js.map +1 -1
  170. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  171. package/dist/runtime-api/intake/scanner-launcher.js +0 -15
  172. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  173. package/dist/runtime-api/intake/types.d.ts +0 -55
  174. package/dist/runtime-api/intake/types.d.ts.map +1 -1
  175. package/dist/runtime-api/routes/signals.d.ts +0 -2
  176. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  177. package/dist/runtime-api/routes/signals.js +1 -5
  178. package/dist/runtime-api/routes/signals.js.map +1 -1
  179. package/dist/runtime-api/routes/signals.schema.d.ts +0 -43
  180. package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
  181. package/dist/runtime-api/routes/signals.schema.js +0 -43
  182. package/dist/runtime-api/routes/signals.schema.js.map +1 -1
  183. package/dist/runtime-api/server.d.ts +1 -7
  184. package/dist/runtime-api/server.d.ts.map +1 -1
  185. package/dist/runtime-api/server.js +0 -1
  186. package/dist/runtime-api/server.js.map +1 -1
  187. package/dist/scanners/engine/engine.d.ts +1 -22
  188. package/dist/scanners/engine/engine.d.ts.map +1 -1
  189. package/dist/scanners/engine/engine.js +11 -78
  190. package/dist/scanners/engine/engine.js.map +1 -1
  191. package/dist/scanners/engine/lifecycle.d.ts +1 -7
  192. package/dist/scanners/engine/lifecycle.d.ts.map +1 -1
  193. package/dist/scanners/events.d.ts +0 -4
  194. package/dist/scanners/events.d.ts.map +1 -1
  195. package/dist/scanners/events.js +0 -2
  196. package/dist/scanners/events.js.map +1 -1
  197. package/dist/scanners/external/scaffold/delivery.py +25 -194
  198. package/dist/scanners/external/scaffold/scaffold.py +31 -172
  199. package/dist/scanners/external/scaffold/senpi_mcp.py +8 -150
  200. package/dist/scanners/external-scanner-receiver.d.ts +0 -17
  201. package/dist/scanners/external-scanner-receiver.d.ts.map +1 -1
  202. package/dist/scanners/external-scanner-receiver.js +0 -8
  203. package/dist/scanners/external-scanner-receiver.js.map +1 -1
  204. package/dist/scanners/runtime-module.d.ts +0 -1
  205. package/dist/scanners/runtime-module.d.ts.map +1 -1
  206. package/dist/scanners/runtime-module.js +9 -66
  207. package/dist/scanners/runtime-module.js.map +1 -1
  208. package/dist/skills-manager/manifest.d.ts.map +1 -1
  209. package/dist/skills-manager/manifest.js +1 -0
  210. package/dist/skills-manager/manifest.js.map +1 -1
  211. package/dist/skills-manager/skills-manifest.json +1 -0
  212. package/dist/telemetry/attributes.d.ts +0 -20
  213. package/dist/telemetry/attributes.d.ts.map +1 -1
  214. package/dist/telemetry/attributes.js +0 -24
  215. package/dist/telemetry/attributes.js.map +1 -1
  216. package/dist/telemetry/event-builders.d.ts +6 -81
  217. package/dist/telemetry/event-builders.d.ts.map +1 -1
  218. package/dist/telemetry/event-builders.js +17 -141
  219. package/dist/telemetry/event-builders.js.map +1 -1
  220. package/dist/telemetry/event-store.d.ts +0 -6
  221. package/dist/telemetry/event-store.d.ts.map +1 -1
  222. package/dist/telemetry/event-store.js +8 -12
  223. package/dist/telemetry/event-store.js.map +1 -1
  224. package/dist/telemetry/metrics.d.ts +2 -14
  225. package/dist/telemetry/metrics.d.ts.map +1 -1
  226. package/dist/telemetry/metrics.js +4 -19
  227. package/dist/telemetry/metrics.js.map +1 -1
  228. package/dist/telemetry/spans/redact-pii.d.ts.map +1 -1
  229. package/dist/telemetry/spans/redact-pii.js +2 -18
  230. package/dist/telemetry/spans/redact-pii.js.map +1 -1
  231. package/dist/telemetry/tracing.d.ts +0 -9
  232. package/dist/telemetry/tracing.d.ts.map +1 -1
  233. package/dist/telemetry/tracing.js +0 -36
  234. package/dist/telemetry/tracing.js.map +1 -1
  235. package/dist/types/dsl/index.d.ts +1 -12
  236. package/dist/types/dsl/index.d.ts.map +1 -1
  237. package/dist/types/runtime.d.ts +8 -0
  238. package/dist/types/runtime.d.ts.map +1 -1
  239. package/dist/types/scanner.d.ts +0 -15
  240. package/dist/types/scanner.d.ts.map +1 -1
  241. package/dist/utils/event-catalog.d.ts +91 -166
  242. package/dist/utils/event-catalog.d.ts.map +1 -1
  243. package/dist/utils/event-catalog.js +13 -18
  244. package/dist/utils/event-catalog.js.map +1 -1
  245. package/dist/utils/keyed-mutex.d.ts +3 -2
  246. package/dist/utils/keyed-mutex.d.ts.map +1 -1
  247. package/dist/utils/keyed-mutex.js +3 -2
  248. package/dist/utils/keyed-mutex.js.map +1 -1
  249. package/dist/utils/logger.d.ts +1 -4
  250. package/dist/utils/logger.d.ts.map +1 -1
  251. package/dist/utils/logger.js.map +1 -1
  252. package/dist/validate/recipe-checks.d.ts.map +1 -1
  253. package/dist/validate/recipe-checks.js +2 -2
  254. package/dist/validate/recipe-checks.js.map +1 -1
  255. package/openclaw.plugin.json +1 -1
  256. package/package.json +1 -1
  257. package/dist/actions/skipped-signal-results.d.ts +0 -25
  258. package/dist/actions/skipped-signal-results.d.ts.map +0 -1
  259. package/dist/actions/skipped-signal-results.js +0 -71
  260. package/dist/actions/skipped-signal-results.js.map +0 -1
  261. package/dist/runtime-api/intake/ingest-request.d.ts +0 -17
  262. package/dist/runtime-api/intake/ingest-request.d.ts.map +0 -1
  263. package/dist/runtime-api/intake/ingest-request.js +0 -34
  264. package/dist/runtime-api/intake/ingest-request.js.map +0 -1
  265. package/dist/runtime-api/intake/scaffold-tick-router.d.ts +0 -39
  266. package/dist/runtime-api/intake/scaffold-tick-router.d.ts.map +0 -1
  267. package/dist/runtime-api/intake/scaffold-tick-router.js +0 -122
  268. package/dist/runtime-api/intake/scaffold-tick-router.js.map +0 -1
  269. package/dist/scanners/external/scaffold/tick_facts.py +0 -130
  270. package/dist/scanners/external/scaffold/ulid.py +0 -58
  271. package/dist/telemetry/live-telemetry.d.ts +0 -238
  272. package/dist/telemetry/live-telemetry.d.ts.map +0 -1
  273. package/dist/telemetry/live-telemetry.js +0 -853
  274. package/dist/telemetry/live-telemetry.js.map +0 -1
  275. package/dist/telemetry/scanner-stats.d.ts +0 -143
  276. package/dist/telemetry/scanner-stats.d.ts.map +0 -1
  277. package/dist/telemetry/scanner-stats.js +0 -426
  278. package/dist/telemetry/scanner-stats.js.map +0 -1
  279. package/dist/telemetry/scanner-tick-feed.d.ts +0 -87
  280. package/dist/telemetry/scanner-tick-feed.d.ts.map +0 -1
  281. package/dist/telemetry/scanner-tick-feed.js +0 -48
  282. package/dist/telemetry/scanner-tick-feed.js.map +0 -1
  283. package/dist/telemetry/strategy-topology.d.ts +0 -99
  284. package/dist/telemetry/strategy-topology.d.ts.map +0 -1
  285. package/dist/telemetry/strategy-topology.js +0 -93
  286. package/dist/telemetry/strategy-topology.js.map +0 -1
  287. package/dist/telemetry/telemetry-publisher.d.ts +0 -63
  288. package/dist/telemetry/telemetry-publisher.d.ts.map +0 -1
  289. package/dist/telemetry/telemetry-publisher.js +0 -229
  290. package/dist/telemetry/telemetry-publisher.js.map +0 -1
  291. package/dist/telemetry/tick-frame.d.ts +0 -212
  292. package/dist/telemetry/tick-frame.d.ts.map +0 -1
  293. package/dist/telemetry/tick-frame.js +0 -421
  294. package/dist/telemetry/tick-frame.js.map +0 -1
  295. package/dist/telemetry/timeline-buffer.d.ts +0 -95
  296. package/dist/telemetry/timeline-buffer.d.ts.map +0 -1
  297. package/dist/telemetry/timeline-buffer.js +0 -237
  298. package/dist/telemetry/timeline-buffer.js.map +0 -1
  299. package/dist/utils/telemetry-required-log.d.ts +0 -60
  300. package/dist/utils/telemetry-required-log.d.ts.map +0 -1
  301. package/dist/utils/telemetry-required-log.js +0 -105
  302. package/dist/utils/telemetry-required-log.js.map +0 -1
  303. package/dist/utils/ulid.d.ts +0 -9
  304. package/dist/utils/ulid.d.ts.map +0 -1
  305. package/dist/utils/ulid.js +0 -43
  306. package/dist/utils/ulid.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
  * Effective floor, tier floors, and ROE/price helpers for dslTick.
3
3
  */
4
4
  import { createLogger } from "../../utils/logger.js";
5
- import { roundTo } from "./round.js";
5
+ import { roundProtectiveLevel } from "./round.js";
6
6
  const log = createLogger("[senpi-core][dsl-floors]");
7
7
  /** ROE % at given price. */
8
8
  export function computeCurrentROE(state, price) {
@@ -14,8 +14,8 @@ export function computeCurrentROE(state, price) {
14
14
  export function roeToPriceFloor(state, floorRoe) {
15
15
  const pct = floorRoe / 100 / state.leverage;
16
16
  if (state.direction === "LONG")
17
- return roundTo(state.entryPrice * (1 + pct));
18
- return roundTo(state.entryPrice * (1 - pct));
17
+ return roundProtectiveLevel(state.entryPrice * (1 + pct), state.direction);
18
+ return roundProtectiveLevel(state.entryPrice * (1 - pct), state.direction);
19
19
  }
20
20
  /**
21
21
  * Tier floor: % of current high-water ROE (`lock_hw_pct`).
@@ -47,8 +47,8 @@ export function phase1TrailingFloor(state) {
47
47
  const retraceRoePct = state.phase1.retraceThreshold;
48
48
  const retracePrice = retraceRoePct / 100 / state.leverage;
49
49
  if (state.direction === "LONG")
50
- return roundTo(hw * (1 - retracePrice));
51
- return roundTo(hw * (1 + retracePrice));
50
+ return roundProtectiveLevel(hw * (1 - retracePrice), state.direction);
51
+ return roundProtectiveLevel(hw * (1 + retracePrice), state.direction);
52
52
  }
53
53
  /** Phase 1 max-loss + trailing. When phase1 is disabled, only the absolute (max-loss) floor applies until tiers engage. */
54
54
  export function phase1BaseFloor(state) {
@@ -79,7 +79,39 @@ export function isBreach(state, price) {
79
79
  return price <= state.floorPrice;
80
80
  return price >= state.floorPrice;
81
81
  }
82
- /** Phase 1 only: consecutive breaches before exit (tier-level overrides removed in v2). */
82
+ /**
83
+ * Does the runtime's LAST KNOWN exchange stop sit at or beyond the floor, so that the venue —
84
+ * not the runtime — is the thing that should exit this position?
85
+ *
86
+ * This reads two locally cached fields and never asks the venue itself. What keeps them honest
87
+ * is the monitor's top-of-tick order-status check, which runs before this and clears both when
88
+ * the venue reports the stop gone (cancelled or rejected). The residual is a status neither the
89
+ * live set nor the gone set recognises: that fails open and leaves the cache as it was, so this
90
+ * still answers "we believe a stop is resting there" rather than "one is".
91
+ *
92
+ * **Phase 2 only, and that gate is load-bearing.** In phase 1 the exchange stop is only the
93
+ * `max_loss_pct` absolute floor (`exchangeStopLossTriggerPx`), which equals `floorPrice` for as
94
+ * long as the trailing floor has not risen above it — so without the gate this would answer
95
+ * "resting" on an ordinary phase-1 position and silently disable the breach close, which is the
96
+ * exit path that works today.
97
+ *
98
+ * `handoffStatus === "ok"` is deliberately not a second, independent answer: both sites that
99
+ * flip a position to `"ok"` mirror the backend's `activeSLOrderId` into `slOrderId` and its
100
+ * `tierFloorPrice` into `lastSyncedFloorPrice` as they do so, and `handleHandoffOk` re-mirrors
101
+ * on every subsequent poll — so this one predicate already covers backend-owned positions, and
102
+ * it must, because `dsl-engine` cannot close a position at all. The mirror on the registration
103
+ * tick is load-bearing: this predicate runs before `handleHandoffOk` in the tick.
104
+ */
105
+ export function hasRestingStopAtFloor(state) {
106
+ if (state.phase !== 2)
107
+ return false;
108
+ if (state.slOrderId == null || state.lastSyncedFloorPrice == null)
109
+ return false;
110
+ return state.direction === "LONG"
111
+ ? state.lastSyncedFloorPrice >= state.floorPrice
112
+ : state.lastSyncedFloorPrice <= state.floorPrice;
113
+ }
114
+ /** Consecutive breaches before exit, in either phase (tier-level overrides removed in v2). */
83
115
  export function resolveBreachesRequired(state) {
84
116
  return state.phase1.consecutiveBreachesRequired;
85
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"floors.js","sourceRoot":"","sources":["../../../src/dsl/engine/floors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"floors.js","sourceRoot":"","sources":["../../../src/dsl/engine/floors.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Pure DSL engine: rounding, state machine tick, exchange SL policy.
3
3
  */
4
- export { roundTo } from "./round.js";
4
+ export { roundProtectiveLevel } from "./round.js";
5
5
  export { dslTick } from "./tick.js";
6
6
  export { exchangeStopLossTriggerPx } from "./exchange-stop.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","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.d.ts","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,7 +1,7 @@
1
1
  /**
2
2
  * Pure DSL engine: rounding, state machine tick, exchange SL policy.
3
3
  */
4
- export { roundTo } from "./round.js";
4
+ export { roundProtectiveLevel } from "./round.js";
5
5
  export { dslTick } from "./tick.js";
6
6
  export { exchangeStopLossTriggerPx } from "./exchange-stop.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -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"}