@senpi/runtime 1.0.95-dev.20260408174401

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 (755) hide show
  1. package/README.md +155 -0
  2. package/dist/actions/close-position/close-position.action.d.ts +16 -0
  3. package/dist/actions/close-position/close-position.action.d.ts.map +1 -0
  4. package/dist/actions/close-position/close-position.action.js +220 -0
  5. package/dist/actions/close-position/close-position.action.js.map +1 -0
  6. package/dist/actions/decision-engine.d.ts +32 -0
  7. package/dist/actions/decision-engine.d.ts.map +1 -0
  8. package/dist/actions/decision-engine.js +103 -0
  9. package/dist/actions/decision-engine.js.map +1 -0
  10. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts +12 -0
  11. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts.map +1 -0
  12. package/dist/actions/llm-decision/anthropic-llm-decision.js +74 -0
  13. package/dist/actions/llm-decision/anthropic-llm-decision.js.map +1 -0
  14. package/dist/actions/llm-decision/factory.d.ts +17 -0
  15. package/dist/actions/llm-decision/factory.d.ts.map +1 -0
  16. package/dist/actions/llm-decision/factory.js +29 -0
  17. package/dist/actions/llm-decision/factory.js.map +1 -0
  18. package/dist/actions/llm-decision/index.d.ts +8 -0
  19. package/dist/actions/llm-decision/index.d.ts.map +1 -0
  20. package/dist/actions/llm-decision/index.js +5 -0
  21. package/dist/actions/llm-decision/index.js.map +1 -0
  22. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +14 -0
  23. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -0
  24. package/dist/actions/llm-decision/openclaw-llm-decision.js +58 -0
  25. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -0
  26. package/dist/actions/llm-decision/shared.d.ts +41 -0
  27. package/dist/actions/llm-decision/shared.d.ts.map +1 -0
  28. package/dist/actions/llm-decision/shared.js +117 -0
  29. package/dist/actions/llm-decision/shared.js.map +1 -0
  30. package/dist/actions/open-position/open-position.action.d.ts +16 -0
  31. package/dist/actions/open-position/open-position.action.d.ts.map +1 -0
  32. package/dist/actions/open-position/open-position.action.js +278 -0
  33. package/dist/actions/open-position/open-position.action.js.map +1 -0
  34. package/dist/actions/position-tracker/position-tracker.action.d.ts +14 -0
  35. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -0
  36. package/dist/actions/position-tracker/position-tracker.action.js +201 -0
  37. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -0
  38. package/dist/actions/types.d.ts +123 -0
  39. package/dist/actions/types.d.ts.map +1 -0
  40. package/dist/actions/types.js +3 -0
  41. package/dist/actions/types.js.map +1 -0
  42. package/dist/cli/guide-commands.d.ts +27 -0
  43. package/dist/cli/guide-commands.d.ts.map +1 -0
  44. package/dist/cli/guide-commands.js +481 -0
  45. package/dist/cli/guide-commands.js.map +1 -0
  46. package/dist/cli/senpi-cli-config.d.ts +33 -0
  47. package/dist/cli/senpi-cli-config.d.ts.map +1 -0
  48. package/dist/cli/senpi-cli-config.js +130 -0
  49. package/dist/cli/senpi-cli-config.js.map +1 -0
  50. package/dist/cli/senpi-commands.d.ts +21 -0
  51. package/dist/cli/senpi-commands.d.ts.map +1 -0
  52. package/dist/cli/senpi-commands.js +471 -0
  53. package/dist/cli/senpi-commands.js.map +1 -0
  54. package/dist/cli/senpi-config-commands.d.ts +11 -0
  55. package/dist/cli/senpi-config-commands.d.ts.map +1 -0
  56. package/dist/cli/senpi-config-commands.js +113 -0
  57. package/dist/cli/senpi-config-commands.js.map +1 -0
  58. package/dist/constants/dsl/index.d.ts +62 -0
  59. package/dist/constants/dsl/index.d.ts.map +1 -0
  60. package/dist/constants/dsl/index.js +62 -0
  61. package/dist/constants/dsl/index.js.map +1 -0
  62. package/dist/context/context-builder.d.ts +14 -0
  63. package/dist/context/context-builder.d.ts.map +1 -0
  64. package/dist/context/context-builder.js +38 -0
  65. package/dist/context/context-builder.js.map +1 -0
  66. package/dist/context/index.d.ts +5 -0
  67. package/dist/context/index.d.ts.map +1 -0
  68. package/dist/context/index.js +5 -0
  69. package/dist/context/index.js.map +1 -0
  70. package/dist/context/interpolate.d.ts +6 -0
  71. package/dist/context/interpolate.d.ts.map +1 -0
  72. package/dist/context/interpolate.js +15 -0
  73. package/dist/context/interpolate.js.map +1 -0
  74. package/dist/context/providers/asset-trend.provider.d.ts +42 -0
  75. package/dist/context/providers/asset-trend.provider.d.ts.map +1 -0
  76. package/dist/context/providers/asset-trend.provider.js +90 -0
  77. package/dist/context/providers/asset-trend.provider.js.map +1 -0
  78. package/dist/context/providers/index.d.ts +5 -0
  79. package/dist/context/providers/index.d.ts.map +1 -0
  80. package/dist/context/providers/index.js +5 -0
  81. package/dist/context/providers/index.js.map +1 -0
  82. package/dist/context/providers/scanner-context.provider.d.ts +10 -0
  83. package/dist/context/providers/scanner-context.provider.d.ts.map +1 -0
  84. package/dist/context/providers/scanner-context.provider.js +20 -0
  85. package/dist/context/providers/scanner-context.provider.js.map +1 -0
  86. package/dist/context/providers/signal.provider.d.ts +11 -0
  87. package/dist/context/providers/signal.provider.d.ts.map +1 -0
  88. package/dist/context/providers/signal.provider.js +30 -0
  89. package/dist/context/providers/signal.provider.js.map +1 -0
  90. package/dist/context/providers/strategy.provider.d.ts +14 -0
  91. package/dist/context/providers/strategy.provider.d.ts.map +1 -0
  92. package/dist/context/providers/strategy.provider.js +71 -0
  93. package/dist/context/providers/strategy.provider.js.map +1 -0
  94. package/dist/context/types.d.ts +45 -0
  95. package/dist/context/types.d.ts.map +1 -0
  96. package/dist/context/types.js +18 -0
  97. package/dist/context/types.js.map +1 -0
  98. package/dist/debug.d.ts +2 -0
  99. package/dist/debug.d.ts.map +1 -0
  100. package/dist/debug.js +591 -0
  101. package/dist/debug.js.map +1 -0
  102. package/dist/dsl/config/exit-block.d.ts +11 -0
  103. package/dist/dsl/config/exit-block.d.ts.map +1 -0
  104. package/dist/dsl/config/exit-block.js +5 -0
  105. package/dist/dsl/config/exit-block.js.map +1 -0
  106. package/dist/dsl/config/index.d.ts +8 -0
  107. package/dist/dsl/config/index.d.ts.map +1 -0
  108. package/dist/dsl/config/index.js +6 -0
  109. package/dist/dsl/config/index.js.map +1 -0
  110. package/dist/dsl/config/parse-phase.d.ts +14 -0
  111. package/dist/dsl/config/parse-phase.d.ts.map +1 -0
  112. package/dist/dsl/config/parse-phase.js +78 -0
  113. package/dist/dsl/config/parse-phase.js.map +1 -0
  114. package/dist/dsl/config/parse-plugin-config.d.ts +8 -0
  115. package/dist/dsl/config/parse-plugin-config.d.ts.map +1 -0
  116. package/dist/dsl/config/parse-plugin-config.js +27 -0
  117. package/dist/dsl/config/parse-plugin-config.js.map +1 -0
  118. package/dist/dsl/config/parse-preset.d.ts +7 -0
  119. package/dist/dsl/config/parse-preset.d.ts.map +1 -0
  120. package/dist/dsl/config/parse-preset.js +99 -0
  121. package/dist/dsl/config/parse-preset.js.map +1 -0
  122. package/dist/dsl/config/parse-tiers.d.ts +7 -0
  123. package/dist/dsl/config/parse-tiers.d.ts.map +1 -0
  124. package/dist/dsl/config/parse-tiers.js +31 -0
  125. package/dist/dsl/config/parse-tiers.js.map +1 -0
  126. package/dist/dsl/config/parse-timeouts.d.ts +16 -0
  127. package/dist/dsl/config/parse-timeouts.d.ts.map +1 -0
  128. package/dist/dsl/config/parse-timeouts.js +75 -0
  129. package/dist/dsl/config/parse-timeouts.js.map +1 -0
  130. package/dist/dsl/config/raw-types.d.ts +45 -0
  131. package/dist/dsl/config/raw-types.d.ts.map +1 -0
  132. package/dist/dsl/config/raw-types.js +5 -0
  133. package/dist/dsl/config/raw-types.js.map +1 -0
  134. package/dist/dsl/config/unknown-keys.d.ts +7 -0
  135. package/dist/dsl/config/unknown-keys.d.ts.map +1 -0
  136. package/dist/dsl/config/unknown-keys.js +119 -0
  137. package/dist/dsl/config/unknown-keys.js.map +1 -0
  138. package/dist/dsl/config/validation.d.ts +21 -0
  139. package/dist/dsl/config/validation.d.ts.map +1 -0
  140. package/dist/dsl/config/validation.js +45 -0
  141. package/dist/dsl/config/validation.js.map +1 -0
  142. package/dist/dsl/constants/index.d.ts +3 -0
  143. package/dist/dsl/constants/index.d.ts.map +1 -0
  144. package/dist/dsl/constants/index.js +3 -0
  145. package/dist/dsl/constants/index.js.map +1 -0
  146. package/dist/dsl/engine/exchange-stop.d.ts +16 -0
  147. package/dist/dsl/engine/exchange-stop.d.ts.map +1 -0
  148. package/dist/dsl/engine/exchange-stop.js +20 -0
  149. package/dist/dsl/engine/exchange-stop.js.map +1 -0
  150. package/dist/dsl/engine/floors.d.ts +32 -0
  151. package/dist/dsl/engine/floors.d.ts.map +1 -0
  152. package/dist/dsl/engine/floors.js +115 -0
  153. package/dist/dsl/engine/floors.js.map +1 -0
  154. package/dist/dsl/engine/index.d.ts +7 -0
  155. package/dist/dsl/engine/index.d.ts.map +1 -0
  156. package/dist/dsl/engine/index.js +7 -0
  157. package/dist/dsl/engine/index.js.map +1 -0
  158. package/dist/dsl/engine/round.d.ts +5 -0
  159. package/dist/dsl/engine/round.d.ts.map +1 -0
  160. package/dist/dsl/engine/round.js +9 -0
  161. package/dist/dsl/engine/round.js.map +1 -0
  162. package/dist/dsl/engine/state-updates.d.ts +8 -0
  163. package/dist/dsl/engine/state-updates.d.ts.map +1 -0
  164. package/dist/dsl/engine/state-updates.js +60 -0
  165. package/dist/dsl/engine/state-updates.js.map +1 -0
  166. package/dist/dsl/engine/tick.d.ts +6 -0
  167. package/dist/dsl/engine/tick.d.ts.map +1 -0
  168. package/dist/dsl/engine/tick.js +174 -0
  169. package/dist/dsl/engine/tick.js.map +1 -0
  170. package/dist/dsl/events/bus-types.d.ts +7 -0
  171. package/dist/dsl/events/bus-types.d.ts.map +1 -0
  172. package/dist/dsl/events/bus-types.js +6 -0
  173. package/dist/dsl/events/bus-types.js.map +1 -0
  174. package/dist/dsl/events/guards.d.ts +17 -0
  175. package/dist/dsl/events/guards.d.ts.map +1 -0
  176. package/dist/dsl/events/guards.js +116 -0
  177. package/dist/dsl/events/guards.js.map +1 -0
  178. package/dist/dsl/events/handlers.d.ts +19 -0
  179. package/dist/dsl/events/handlers.d.ts.map +1 -0
  180. package/dist/dsl/events/handlers.js +387 -0
  181. package/dist/dsl/events/handlers.js.map +1 -0
  182. package/dist/dsl/events/index.d.ts +4 -0
  183. package/dist/dsl/events/index.d.ts.map +1 -0
  184. package/dist/dsl/events/index.js +4 -0
  185. package/dist/dsl/events/index.js.map +1 -0
  186. package/dist/dsl/events/initial-state.d.ts +7 -0
  187. package/dist/dsl/events/initial-state.d.ts.map +1 -0
  188. package/dist/dsl/events/initial-state.js +96 -0
  189. package/dist/dsl/events/initial-state.js.map +1 -0
  190. package/dist/dsl/events/normalize-position-opened.d.ts +10 -0
  191. package/dist/dsl/events/normalize-position-opened.d.ts.map +1 -0
  192. package/dist/dsl/events/normalize-position-opened.js +13 -0
  193. package/dist/dsl/events/normalize-position-opened.js.map +1 -0
  194. package/dist/dsl/index.d.ts +13 -0
  195. package/dist/dsl/index.d.ts.map +1 -0
  196. package/dist/dsl/index.js +37 -0
  197. package/dist/dsl/index.js.map +1 -0
  198. package/dist/dsl/monitor/create-monitor.d.ts +24 -0
  199. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -0
  200. package/dist/dsl/monitor/create-monitor.js +162 -0
  201. package/dist/dsl/monitor/create-monitor.js.map +1 -0
  202. package/dist/dsl/monitor/effective-dex.d.ts +7 -0
  203. package/dist/dsl/monitor/effective-dex.d.ts.map +1 -0
  204. package/dist/dsl/monitor/effective-dex.js +11 -0
  205. package/dist/dsl/monitor/effective-dex.js.map +1 -0
  206. package/dist/dsl/monitor/exchange-sync.d.ts +16 -0
  207. package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -0
  208. package/dist/dsl/monitor/exchange-sync.js +37 -0
  209. package/dist/dsl/monitor/exchange-sync.js.map +1 -0
  210. package/dist/dsl/monitor/index.d.ts +6 -0
  211. package/dist/dsl/monitor/index.d.ts.map +1 -0
  212. package/dist/dsl/monitor/index.js +5 -0
  213. package/dist/dsl/monitor/index.js.map +1 -0
  214. package/dist/dsl/monitor/market-price.d.ts +5 -0
  215. package/dist/dsl/monitor/market-price.d.ts.map +1 -0
  216. package/dist/dsl/monitor/market-price.js +24 -0
  217. package/dist/dsl/monitor/market-price.js.map +1 -0
  218. package/dist/dsl/monitor/process-one-position.d.ts +19 -0
  219. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -0
  220. package/dist/dsl/monitor/process-one-position.js +438 -0
  221. package/dist/dsl/monitor/process-one-position.js.map +1 -0
  222. package/dist/dsl/notifications/formatter.d.ts +18 -0
  223. package/dist/dsl/notifications/formatter.d.ts.map +1 -0
  224. package/dist/dsl/notifications/formatter.js +69 -0
  225. package/dist/dsl/notifications/formatter.js.map +1 -0
  226. package/dist/dsl/notifications/index.d.ts +19 -0
  227. package/dist/dsl/notifications/index.d.ts.map +1 -0
  228. package/dist/dsl/notifications/index.js +90 -0
  229. package/dist/dsl/notifications/index.js.map +1 -0
  230. package/dist/dsl/plugin/index.d.ts +66 -0
  231. package/dist/dsl/plugin/index.d.ts.map +1 -0
  232. package/dist/dsl/plugin/index.js +398 -0
  233. package/dist/dsl/plugin/index.js.map +1 -0
  234. package/dist/dsl/plugin/options.d.ts +40 -0
  235. package/dist/dsl/plugin/options.d.ts.map +1 -0
  236. package/dist/dsl/plugin/options.js +5 -0
  237. package/dist/dsl/plugin/options.js.map +1 -0
  238. package/dist/dsl/types/index.d.ts +3 -0
  239. package/dist/dsl/types/index.d.ts.map +1 -0
  240. package/dist/dsl/types/index.js +3 -0
  241. package/dist/dsl/types/index.js.map +1 -0
  242. package/dist/health/index.d.ts +29 -0
  243. package/dist/health/index.d.ts.map +1 -0
  244. package/dist/health/index.js +191 -0
  245. package/dist/health/index.js.map +1 -0
  246. package/dist/health/types.d.ts +114 -0
  247. package/dist/health/types.d.ts.map +1 -0
  248. package/dist/health/types.js +2 -0
  249. package/dist/health/types.js.map +1 -0
  250. package/dist/index.d.ts +102 -0
  251. package/dist/index.d.ts.map +1 -0
  252. package/dist/index.js +772 -0
  253. package/dist/index.js.map +1 -0
  254. package/dist/leverage/max-leverage-cache.d.ts +10 -0
  255. package/dist/leverage/max-leverage-cache.d.ts.map +1 -0
  256. package/dist/leverage/max-leverage-cache.js +51 -0
  257. package/dist/leverage/max-leverage-cache.js.map +1 -0
  258. package/dist/leverage/resolve-leverage.d.ts +9 -0
  259. package/dist/leverage/resolve-leverage.d.ts.map +1 -0
  260. package/dist/leverage/resolve-leverage.js +15 -0
  261. package/dist/leverage/resolve-leverage.js.map +1 -0
  262. package/dist/risk/index.d.ts +9 -0
  263. package/dist/risk/index.d.ts.map +1 -0
  264. package/dist/risk/index.js +9 -0
  265. package/dist/risk/index.js.map +1 -0
  266. package/dist/runtime/action-registry.d.ts +12 -0
  267. package/dist/runtime/action-registry.d.ts.map +1 -0
  268. package/dist/runtime/action-registry.js +22 -0
  269. package/dist/runtime/action-registry.js.map +1 -0
  270. package/dist/runtime/auto-update/command-runner.d.ts +20 -0
  271. package/dist/runtime/auto-update/command-runner.d.ts.map +1 -0
  272. package/dist/runtime/auto-update/command-runner.js +54 -0
  273. package/dist/runtime/auto-update/command-runner.js.map +1 -0
  274. package/dist/runtime/auto-update/coordinator.d.ts +90 -0
  275. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -0
  276. package/dist/runtime/auto-update/coordinator.js +336 -0
  277. package/dist/runtime/auto-update/coordinator.js.map +1 -0
  278. package/dist/runtime/auto-update/gateway-restart.d.ts +49 -0
  279. package/dist/runtime/auto-update/gateway-restart.d.ts.map +1 -0
  280. package/dist/runtime/auto-update/gateway-restart.js +105 -0
  281. package/dist/runtime/auto-update/gateway-restart.js.map +1 -0
  282. package/dist/runtime/auto-update/policy.d.ts +24 -0
  283. package/dist/runtime/auto-update/policy.d.ts.map +1 -0
  284. package/dist/runtime/auto-update/policy.js +42 -0
  285. package/dist/runtime/auto-update/policy.js.map +1 -0
  286. package/dist/runtime/auto-update/preflight.d.ts +16 -0
  287. package/dist/runtime/auto-update/preflight.d.ts.map +1 -0
  288. package/dist/runtime/auto-update/preflight.js +20 -0
  289. package/dist/runtime/auto-update/preflight.js.map +1 -0
  290. package/dist/runtime/auto-update/state-store.d.ts +29 -0
  291. package/dist/runtime/auto-update/state-store.d.ts.map +1 -0
  292. package/dist/runtime/auto-update/state-store.js +51 -0
  293. package/dist/runtime/auto-update/state-store.js.map +1 -0
  294. package/dist/runtime/auto-update/types.d.ts +105 -0
  295. package/dist/runtime/auto-update/types.d.ts.map +1 -0
  296. package/dist/runtime/auto-update/types.js +56 -0
  297. package/dist/runtime/auto-update/types.js.map +1 -0
  298. package/dist/runtime/auto-update/version-source.d.ts +23 -0
  299. package/dist/runtime/auto-update/version-source.d.ts.map +1 -0
  300. package/dist/runtime/auto-update/version-source.js +25 -0
  301. package/dist/runtime/auto-update/version-source.js.map +1 -0
  302. package/dist/runtime/build-action-scan-payload.d.ts +20 -0
  303. package/dist/runtime/build-action-scan-payload.d.ts.map +1 -0
  304. package/dist/runtime/build-action-scan-payload.js +36 -0
  305. package/dist/runtime/build-action-scan-payload.js.map +1 -0
  306. package/dist/runtime/bus.d.ts +6 -0
  307. package/dist/runtime/bus.d.ts.map +1 -0
  308. package/dist/runtime/bus.js +22 -0
  309. package/dist/runtime/bus.js.map +1 -0
  310. package/dist/runtime/create-action-context.d.ts +34 -0
  311. package/dist/runtime/create-action-context.d.ts.map +1 -0
  312. package/dist/runtime/create-action-context.js +22 -0
  313. package/dist/runtime/create-action-context.js.map +1 -0
  314. package/dist/runtime/create-actions.d.ts +30 -0
  315. package/dist/runtime/create-actions.d.ts.map +1 -0
  316. package/dist/runtime/create-actions.js +70 -0
  317. package/dist/runtime/create-actions.js.map +1 -0
  318. package/dist/runtime/create-runtime-context.d.ts +35 -0
  319. package/dist/runtime/create-runtime-context.d.ts.map +1 -0
  320. package/dist/runtime/create-runtime-context.js +35 -0
  321. package/dist/runtime/create-runtime-context.js.map +1 -0
  322. package/dist/runtime/create-scanner-module.d.ts +14 -0
  323. package/dist/runtime/create-scanner-module.d.ts.map +1 -0
  324. package/dist/runtime/create-scanner-module.js +31 -0
  325. package/dist/runtime/create-scanner-module.js.map +1 -0
  326. package/dist/runtime/create-scanner-providers-for-run.d.ts +20 -0
  327. package/dist/runtime/create-scanner-providers-for-run.d.ts.map +1 -0
  328. package/dist/runtime/create-scanner-providers-for-run.js +34 -0
  329. package/dist/runtime/create-scanner-providers-for-run.js.map +1 -0
  330. package/dist/runtime/default-state-dir.d.ts +10 -0
  331. package/dist/runtime/default-state-dir.d.ts.map +1 -0
  332. package/dist/runtime/default-state-dir.js +22 -0
  333. package/dist/runtime/default-state-dir.js.map +1 -0
  334. package/dist/runtime/env-resolve.d.ts +17 -0
  335. package/dist/runtime/env-resolve.d.ts.map +1 -0
  336. package/dist/runtime/env-resolve.js +45 -0
  337. package/dist/runtime/env-resolve.js.map +1 -0
  338. package/dist/runtime/hook-system.d.ts +7 -0
  339. package/dist/runtime/hook-system.d.ts.map +1 -0
  340. package/dist/runtime/hook-system.js +16 -0
  341. package/dist/runtime/hook-system.js.map +1 -0
  342. package/dist/runtime/index.d.ts +37 -0
  343. package/dist/runtime/index.d.ts.map +1 -0
  344. package/dist/runtime/index.js +26 -0
  345. package/dist/runtime/index.js.map +1 -0
  346. package/dist/runtime/load-runtime-config.d.ts +23 -0
  347. package/dist/runtime/load-runtime-config.d.ts.map +1 -0
  348. package/dist/runtime/load-runtime-config.js +176 -0
  349. package/dist/runtime/load-runtime-config.js.map +1 -0
  350. package/dist/runtime/map-exit-config.d.ts +11 -0
  351. package/dist/runtime/map-exit-config.d.ts.map +1 -0
  352. package/dist/runtime/map-exit-config.js +86 -0
  353. package/dist/runtime/map-exit-config.js.map +1 -0
  354. package/dist/runtime/map-strategies-registration.d.ts +14 -0
  355. package/dist/runtime/map-strategies-registration.d.ts.map +1 -0
  356. package/dist/runtime/map-strategies-registration.js +44 -0
  357. package/dist/runtime/map-strategies-registration.js.map +1 -0
  358. package/dist/runtime/map-strategies.d.ts +14 -0
  359. package/dist/runtime/map-strategies.d.ts.map +1 -0
  360. package/dist/runtime/map-strategies.js +64 -0
  361. package/dist/runtime/map-strategies.js.map +1 -0
  362. package/dist/runtime/notifications.d.ts +19 -0
  363. package/dist/runtime/notifications.d.ts.map +1 -0
  364. package/dist/runtime/notifications.js +88 -0
  365. package/dist/runtime/notifications.js.map +1 -0
  366. package/dist/runtime/parse-interval.d.ts +11 -0
  367. package/dist/runtime/parse-interval.d.ts.map +1 -0
  368. package/dist/runtime/parse-interval.js +35 -0
  369. package/dist/runtime/parse-interval.js.map +1 -0
  370. package/dist/runtime/recipe-version.d.ts +3 -0
  371. package/dist/runtime/recipe-version.d.ts.map +1 -0
  372. package/dist/runtime/recipe-version.js +3 -0
  373. package/dist/runtime/recipe-version.js.map +1 -0
  374. package/dist/runtime/reconcile-state.d.ts +37 -0
  375. package/dist/runtime/reconcile-state.d.ts.map +1 -0
  376. package/dist/runtime/reconcile-state.js +179 -0
  377. package/dist/runtime/reconcile-state.js.map +1 -0
  378. package/dist/runtime/risk-guard.d.ts +6 -0
  379. package/dist/runtime/risk-guard.d.ts.map +1 -0
  380. package/dist/runtime/risk-guard.js +14 -0
  381. package/dist/runtime/risk-guard.js.map +1 -0
  382. package/dist/runtime/run.d.ts +30 -0
  383. package/dist/runtime/run.d.ts.map +1 -0
  384. package/dist/runtime/run.js +46 -0
  385. package/dist/runtime/run.js.map +1 -0
  386. package/dist/runtime/runtime-config.d.ts +6 -0
  387. package/dist/runtime/runtime-config.d.ts.map +1 -0
  388. package/dist/runtime/runtime-config.js +5 -0
  389. package/dist/runtime/runtime-config.js.map +1 -0
  390. package/dist/runtime/runtime-schema.d.ts +1859 -0
  391. package/dist/runtime/runtime-schema.d.ts.map +1 -0
  392. package/dist/runtime/runtime-schema.js +110 -0
  393. package/dist/runtime/runtime-schema.js.map +1 -0
  394. package/dist/runtime/runtime-version.d.ts +19 -0
  395. package/dist/runtime/runtime-version.d.ts.map +1 -0
  396. package/dist/runtime/runtime-version.js +29 -0
  397. package/dist/runtime/runtime-version.js.map +1 -0
  398. package/dist/runtime/runtime.d.ts +53 -0
  399. package/dist/runtime/runtime.d.ts.map +1 -0
  400. package/dist/runtime/runtime.js +335 -0
  401. package/dist/runtime/runtime.js.map +1 -0
  402. package/dist/runtime/scanner-composition.d.ts +23 -0
  403. package/dist/runtime/scanner-composition.d.ts.map +1 -0
  404. package/dist/runtime/scanner-composition.js +168 -0
  405. package/dist/runtime/scanner-composition.js.map +1 -0
  406. package/dist/runtime/scanner-registry.d.ts +28 -0
  407. package/dist/runtime/scanner-registry.d.ts.map +1 -0
  408. package/dist/runtime/scanner-registry.js +114 -0
  409. package/dist/runtime/scanner-registry.js.map +1 -0
  410. package/dist/runtime/state-layout.d.ts +50 -0
  411. package/dist/runtime/state-layout.d.ts.map +1 -0
  412. package/dist/runtime/state-layout.js +89 -0
  413. package/dist/runtime/state-layout.js.map +1 -0
  414. package/dist/runtime/strategy-registry.d.ts +79 -0
  415. package/dist/runtime/strategy-registry.d.ts.map +1 -0
  416. package/dist/runtime/strategy-registry.js +265 -0
  417. package/dist/runtime/strategy-registry.js.map +1 -0
  418. package/dist/runtime/validate-dsl-position-tracking.d.ts +3 -0
  419. package/dist/runtime/validate-dsl-position-tracking.d.ts.map +1 -0
  420. package/dist/runtime/validate-dsl-position-tracking.js +27 -0
  421. package/dist/runtime/validate-dsl-position-tracking.js.map +1 -0
  422. package/dist/scanners/__tests__/default-engine-test-composition.d.ts +9 -0
  423. package/dist/scanners/__tests__/default-engine-test-composition.d.ts.map +1 -0
  424. package/dist/scanners/__tests__/default-engine-test-composition.js +84 -0
  425. package/dist/scanners/__tests__/default-engine-test-composition.js.map +1 -0
  426. package/dist/scanners/__tests__/fixtures/index.d.ts +3 -0
  427. package/dist/scanners/__tests__/fixtures/index.d.ts.map +1 -0
  428. package/dist/scanners/__tests__/fixtures/index.js +3 -0
  429. package/dist/scanners/__tests__/fixtures/index.js.map +1 -0
  430. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.d.ts +21 -0
  431. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.d.ts.map +1 -0
  432. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.js +199 -0
  433. package/dist/scanners/__tests__/fixtures/position-tracker-scenarios.js.map +1 -0
  434. package/dist/scanners/__tests__/fixtures/scan-results.d.ts +23 -0
  435. package/dist/scanners/__tests__/fixtures/scan-results.d.ts.map +1 -0
  436. package/dist/scanners/__tests__/fixtures/scan-results.js +128 -0
  437. package/dist/scanners/__tests__/fixtures/scan-results.js.map +1 -0
  438. package/dist/scanners/__tests__/fixtures/signals.d.ts +18 -0
  439. package/dist/scanners/__tests__/fixtures/signals.d.ts.map +1 -0
  440. package/dist/scanners/__tests__/fixtures/signals.js +84 -0
  441. package/dist/scanners/__tests__/fixtures/signals.js.map +1 -0
  442. package/dist/scanners/__tests__/test-helpers.d.ts +4 -0
  443. package/dist/scanners/__tests__/test-helpers.d.ts.map +1 -0
  444. package/dist/scanners/__tests__/test-helpers.js +23 -0
  445. package/dist/scanners/__tests__/test-helpers.js.map +1 -0
  446. package/dist/scanners/artifacts.d.ts +131 -0
  447. package/dist/scanners/artifacts.d.ts.map +1 -0
  448. package/dist/scanners/artifacts.js +72 -0
  449. package/dist/scanners/artifacts.js.map +1 -0
  450. package/dist/scanners/context-source-mapping.d.ts +4 -0
  451. package/dist/scanners/context-source-mapping.d.ts.map +1 -0
  452. package/dist/scanners/context-source-mapping.js +10 -0
  453. package/dist/scanners/context-source-mapping.js.map +1 -0
  454. package/dist/scanners/create-scanner.d.ts +13 -0
  455. package/dist/scanners/create-scanner.d.ts.map +1 -0
  456. package/dist/scanners/create-scanner.js +11 -0
  457. package/dist/scanners/create-scanner.js.map +1 -0
  458. package/dist/scanners/engine/config-validator.d.ts +7 -0
  459. package/dist/scanners/engine/config-validator.d.ts.map +1 -0
  460. package/dist/scanners/engine/config-validator.js +16 -0
  461. package/dist/scanners/engine/config-validator.js.map +1 -0
  462. package/dist/scanners/engine/data-providers.d.ts +48 -0
  463. package/dist/scanners/engine/data-providers.d.ts.map +1 -0
  464. package/dist/scanners/engine/data-providers.js +28 -0
  465. package/dist/scanners/engine/data-providers.js.map +1 -0
  466. package/dist/scanners/engine/engine.d.ts +92 -0
  467. package/dist/scanners/engine/engine.d.ts.map +1 -0
  468. package/dist/scanners/engine/engine.js +478 -0
  469. package/dist/scanners/engine/engine.js.map +1 -0
  470. package/dist/scanners/engine/index.d.ts +9 -0
  471. package/dist/scanners/engine/index.d.ts.map +1 -0
  472. package/dist/scanners/engine/index.js +7 -0
  473. package/dist/scanners/engine/index.js.map +1 -0
  474. package/dist/scanners/engine/input-resolver.d.ts +33 -0
  475. package/dist/scanners/engine/input-resolver.d.ts.map +1 -0
  476. package/dist/scanners/engine/input-resolver.js +216 -0
  477. package/dist/scanners/engine/input-resolver.js.map +1 -0
  478. package/dist/scanners/engine/lifecycle.d.ts +21 -0
  479. package/dist/scanners/engine/lifecycle.d.ts.map +1 -0
  480. package/dist/scanners/engine/lifecycle.js +2 -0
  481. package/dist/scanners/engine/lifecycle.js.map +1 -0
  482. package/dist/scanners/engine/result-builder.d.ts +30 -0
  483. package/dist/scanners/engine/result-builder.d.ts.map +1 -0
  484. package/dist/scanners/engine/result-builder.js +129 -0
  485. package/dist/scanners/engine/result-builder.js.map +1 -0
  486. package/dist/scanners/engine/strategy-registry.d.ts +48 -0
  487. package/dist/scanners/engine/strategy-registry.d.ts.map +1 -0
  488. package/dist/scanners/engine/strategy-registry.js +103 -0
  489. package/dist/scanners/engine/strategy-registry.js.map +1 -0
  490. package/dist/scanners/events.d.ts +41 -0
  491. package/dist/scanners/events.d.ts.map +1 -0
  492. package/dist/scanners/events.js +33 -0
  493. package/dist/scanners/events.js.map +1 -0
  494. package/dist/scanners/implementations/emerging-movers.d.ts +215 -0
  495. package/dist/scanners/implementations/emerging-movers.d.ts.map +1 -0
  496. package/dist/scanners/implementations/emerging-movers.js +713 -0
  497. package/dist/scanners/implementations/emerging-movers.js.map +1 -0
  498. package/dist/scanners/implementations/index.d.ts +9 -0
  499. package/dist/scanners/implementations/index.d.ts.map +1 -0
  500. package/dist/scanners/implementations/index.js +9 -0
  501. package/dist/scanners/implementations/index.js.map +1 -0
  502. package/dist/scanners/implementations/indicators.d.ts +40 -0
  503. package/dist/scanners/implementations/indicators.d.ts.map +1 -0
  504. package/dist/scanners/implementations/indicators.js +114 -0
  505. package/dist/scanners/implementations/indicators.js.map +1 -0
  506. package/dist/scanners/implementations/liquidation-watchdog.d.ts +66 -0
  507. package/dist/scanners/implementations/liquidation-watchdog.d.ts.map +1 -0
  508. package/dist/scanners/implementations/liquidation-watchdog.js +293 -0
  509. package/dist/scanners/implementations/liquidation-watchdog.js.map +1 -0
  510. package/dist/scanners/implementations/market-regime.d.ts +52 -0
  511. package/dist/scanners/implementations/market-regime.d.ts.map +1 -0
  512. package/dist/scanners/implementations/market-regime.js +205 -0
  513. package/dist/scanners/implementations/market-regime.js.map +1 -0
  514. package/dist/scanners/implementations/momentum.d.ts +21 -0
  515. package/dist/scanners/implementations/momentum.d.ts.map +1 -0
  516. package/dist/scanners/implementations/momentum.js +132 -0
  517. package/dist/scanners/implementations/momentum.js.map +1 -0
  518. package/dist/scanners/implementations/oi-tracker.d.ts +13 -0
  519. package/dist/scanners/implementations/oi-tracker.d.ts.map +1 -0
  520. package/dist/scanners/implementations/oi-tracker.js +71 -0
  521. package/dist/scanners/implementations/oi-tracker.js.map +1 -0
  522. package/dist/scanners/implementations/opportunity.d.ts +104 -0
  523. package/dist/scanners/implementations/opportunity.d.ts.map +1 -0
  524. package/dist/scanners/implementations/opportunity.js +445 -0
  525. package/dist/scanners/implementations/opportunity.js.map +1 -0
  526. package/dist/scanners/implementations/position-tracker.d.ts +120 -0
  527. package/dist/scanners/implementations/position-tracker.d.ts.map +1 -0
  528. package/dist/scanners/implementations/position-tracker.js +360 -0
  529. package/dist/scanners/implementations/position-tracker.js.map +1 -0
  530. package/dist/scanners/implementations/prescreener.d.ts +20 -0
  531. package/dist/scanners/implementations/prescreener.d.ts.map +1 -0
  532. package/dist/scanners/implementations/prescreener.js +101 -0
  533. package/dist/scanners/implementations/prescreener.js.map +1 -0
  534. package/dist/scanners/implementations/sm-flip.d.ts +43 -0
  535. package/dist/scanners/implementations/sm-flip.d.ts.map +1 -0
  536. package/dist/scanners/implementations/sm-flip.js +205 -0
  537. package/dist/scanners/implementations/sm-flip.js.map +1 -0
  538. package/dist/scanners/index.d.ts +26 -0
  539. package/dist/scanners/index.d.ts.map +1 -0
  540. package/dist/scanners/index.js +19 -0
  541. package/dist/scanners/index.js.map +1 -0
  542. package/dist/scanners/input-descriptors.d.ts +61 -0
  543. package/dist/scanners/input-descriptors.d.ts.map +1 -0
  544. package/dist/scanners/input-descriptors.js +43 -0
  545. package/dist/scanners/input-descriptors.js.map +1 -0
  546. package/dist/scanners/prepare-scanner-inputs.d.ts +12 -0
  547. package/dist/scanners/prepare-scanner-inputs.d.ts.map +1 -0
  548. package/dist/scanners/prepare-scanner-inputs.js +21 -0
  549. package/dist/scanners/prepare-scanner-inputs.js.map +1 -0
  550. package/dist/scanners/protocol/context.d.ts +95 -0
  551. package/dist/scanners/protocol/context.d.ts.map +1 -0
  552. package/dist/scanners/protocol/context.js +2 -0
  553. package/dist/scanners/protocol/context.js.map +1 -0
  554. package/dist/scanners/protocol/hooks.d.ts +18 -0
  555. package/dist/scanners/protocol/hooks.d.ts.map +1 -0
  556. package/dist/scanners/protocol/hooks.js +12 -0
  557. package/dist/scanners/protocol/hooks.js.map +1 -0
  558. package/dist/scanners/protocol/index.d.ts +5 -0
  559. package/dist/scanners/protocol/index.d.ts.map +1 -0
  560. package/dist/scanners/protocol/index.js +2 -0
  561. package/dist/scanners/protocol/index.js.map +1 -0
  562. package/dist/scanners/protocol/scanner.d.ts +47 -0
  563. package/dist/scanners/protocol/scanner.d.ts.map +1 -0
  564. package/dist/scanners/protocol/scanner.js +2 -0
  565. package/dist/scanners/protocol/scanner.js.map +1 -0
  566. package/dist/scanners/providers/adapter.d.ts +23 -0
  567. package/dist/scanners/providers/adapter.d.ts.map +1 -0
  568. package/dist/scanners/providers/adapter.js +227 -0
  569. package/dist/scanners/providers/adapter.js.map +1 -0
  570. package/dist/scanners/providers/cache.d.ts +20 -0
  571. package/dist/scanners/providers/cache.d.ts.map +1 -0
  572. package/dist/scanners/providers/cache.js +61 -0
  573. package/dist/scanners/providers/cache.js.map +1 -0
  574. package/dist/scanners/providers/client.d.ts +53 -0
  575. package/dist/scanners/providers/client.d.ts.map +1 -0
  576. package/dist/scanners/providers/client.js +174 -0
  577. package/dist/scanners/providers/client.js.map +1 -0
  578. package/dist/scanners/providers/factory.d.ts +43 -0
  579. package/dist/scanners/providers/factory.d.ts.map +1 -0
  580. package/dist/scanners/providers/factory.js +297 -0
  581. package/dist/scanners/providers/factory.js.map +1 -0
  582. package/dist/scanners/providers/types.d.ts +61 -0
  583. package/dist/scanners/providers/types.d.ts.map +1 -0
  584. package/dist/scanners/providers/types.js +6 -0
  585. package/dist/scanners/providers/types.js.map +1 -0
  586. package/dist/scanners/runtime-module.d.ts +79 -0
  587. package/dist/scanners/runtime-module.d.ts.map +1 -0
  588. package/dist/scanners/runtime-module.js +362 -0
  589. package/dist/scanners/runtime-module.js.map +1 -0
  590. package/dist/scanners/scanner-definition.d.ts +81 -0
  591. package/dist/scanners/scanner-definition.d.ts.map +1 -0
  592. package/dist/scanners/scanner-definition.js +19 -0
  593. package/dist/scanners/scanner-definition.js.map +1 -0
  594. package/dist/scanners/schema-utils.d.ts +6 -0
  595. package/dist/scanners/schema-utils.d.ts.map +1 -0
  596. package/dist/scanners/schema-utils.js +14 -0
  597. package/dist/scanners/schema-utils.js.map +1 -0
  598. package/dist/scanners/score-utils.d.ts +19 -0
  599. package/dist/scanners/score-utils.d.ts.map +1 -0
  600. package/dist/scanners/score-utils.js +47 -0
  601. package/dist/scanners/score-utils.js.map +1 -0
  602. package/dist/scanners/store/fs-utils.d.ts +12 -0
  603. package/dist/scanners/store/fs-utils.d.ts.map +1 -0
  604. package/dist/scanners/store/fs-utils.js +47 -0
  605. package/dist/scanners/store/fs-utils.js.map +1 -0
  606. package/dist/scanners/store/index.d.ts +5 -0
  607. package/dist/scanners/store/index.d.ts.map +1 -0
  608. package/dist/scanners/store/index.js +5 -0
  609. package/dist/scanners/store/index.js.map +1 -0
  610. package/dist/scanners/store/runtime-store.d.ts +50 -0
  611. package/dist/scanners/store/runtime-store.d.ts.map +1 -0
  612. package/dist/scanners/store/runtime-store.js +91 -0
  613. package/dist/scanners/store/runtime-store.js.map +1 -0
  614. package/dist/scanners/store/shared-artifact-store.d.ts +35 -0
  615. package/dist/scanners/store/shared-artifact-store.d.ts.map +1 -0
  616. package/dist/scanners/store/shared-artifact-store.js +89 -0
  617. package/dist/scanners/store/shared-artifact-store.js.map +1 -0
  618. package/dist/scanners/store/signal-store.d.ts +36 -0
  619. package/dist/scanners/store/signal-store.d.ts.map +1 -0
  620. package/dist/scanners/store/signal-store.js +135 -0
  621. package/dist/scanners/store/signal-store.js.map +1 -0
  622. package/dist/scanners/types.d.ts +115 -0
  623. package/dist/scanners/types.d.ts.map +1 -0
  624. package/dist/scanners/types.js +3 -0
  625. package/dist/scanners/types.js.map +1 -0
  626. package/dist/scripts/run-dsl-standalone-live.d.ts +48 -0
  627. package/dist/scripts/run-dsl-standalone-live.d.ts.map +1 -0
  628. package/dist/scripts/run-dsl-standalone-live.js +531 -0
  629. package/dist/scripts/run-dsl-standalone-live.js.map +1 -0
  630. package/dist/scripts/run-dsl-standalone-mock.d.ts +13 -0
  631. package/dist/scripts/run-dsl-standalone-mock.d.ts.map +1 -0
  632. package/dist/scripts/run-dsl-standalone-mock.js +264 -0
  633. package/dist/scripts/run-dsl-standalone-mock.js.map +1 -0
  634. package/dist/senpi/client.d.ts +99 -0
  635. package/dist/senpi/client.d.ts.map +1 -0
  636. package/dist/senpi/client.js +779 -0
  637. package/dist/senpi/client.js.map +1 -0
  638. package/dist/senpi/constants.d.ts +7 -0
  639. package/dist/senpi/constants.d.ts.map +1 -0
  640. package/dist/senpi/constants.js +7 -0
  641. package/dist/senpi/constants.js.map +1 -0
  642. package/dist/senpi/index.d.ts +3 -0
  643. package/dist/senpi/index.d.ts.map +1 -0
  644. package/dist/senpi/index.js +2 -0
  645. package/dist/senpi/index.js.map +1 -0
  646. package/dist/senpi/types.d.ts +162 -0
  647. package/dist/senpi/types.d.ts.map +1 -0
  648. package/dist/senpi/types.js +3 -0
  649. package/dist/senpi/types.js.map +1 -0
  650. package/dist/state/index.d.ts +3 -0
  651. package/dist/state/index.d.ts.map +1 -0
  652. package/dist/state/index.js +3 -0
  653. package/dist/state/index.js.map +1 -0
  654. package/dist/state/paths.d.ts +18 -0
  655. package/dist/state/paths.d.ts.map +1 -0
  656. package/dist/state/paths.js +51 -0
  657. package/dist/state/paths.js.map +1 -0
  658. package/dist/state/state-manager.d.ts +83 -0
  659. package/dist/state/state-manager.d.ts.map +1 -0
  660. package/dist/state/state-manager.js +380 -0
  661. package/dist/state/state-manager.js.map +1 -0
  662. package/dist/strategy/index.d.ts +2 -0
  663. package/dist/strategy/index.d.ts.map +1 -0
  664. package/dist/strategy/index.js +2 -0
  665. package/dist/strategy/index.js.map +1 -0
  666. package/dist/strategy/strategy-state.d.ts +51 -0
  667. package/dist/strategy/strategy-state.d.ts.map +1 -0
  668. package/dist/strategy/strategy-state.js +218 -0
  669. package/dist/strategy/strategy-state.js.map +1 -0
  670. package/dist/types/action.d.ts +15 -0
  671. package/dist/types/action.d.ts.map +1 -0
  672. package/dist/types/action.js +2 -0
  673. package/dist/types/action.js.map +1 -0
  674. package/dist/types/dsl/index.d.ts +286 -0
  675. package/dist/types/dsl/index.d.ts.map +1 -0
  676. package/dist/types/dsl/index.js +5 -0
  677. package/dist/types/dsl/index.js.map +1 -0
  678. package/dist/types/event-bus.d.ts +13 -0
  679. package/dist/types/event-bus.d.ts.map +1 -0
  680. package/dist/types/event-bus.js +6 -0
  681. package/dist/types/event-bus.js.map +1 -0
  682. package/dist/types/hooks.d.ts +30 -0
  683. package/dist/types/hooks.d.ts.map +1 -0
  684. package/dist/types/hooks.js +18 -0
  685. package/dist/types/hooks.js.map +1 -0
  686. package/dist/types/index.d.ts +6 -0
  687. package/dist/types/index.d.ts.map +1 -0
  688. package/dist/types/index.js +6 -0
  689. package/dist/types/index.js.map +1 -0
  690. package/dist/types/notification.d.ts +4 -0
  691. package/dist/types/notification.d.ts.map +1 -0
  692. package/dist/types/notification.js +3 -0
  693. package/dist/types/notification.js.map +1 -0
  694. package/dist/types/runtime.d.ts +18 -0
  695. package/dist/types/runtime.d.ts.map +1 -0
  696. package/dist/types/runtime.js +2 -0
  697. package/dist/types/runtime.js.map +1 -0
  698. package/dist/types/scanner.d.ts +59 -0
  699. package/dist/types/scanner.d.ts.map +1 -0
  700. package/dist/types/scanner.js +13 -0
  701. package/dist/types/scanner.js.map +1 -0
  702. package/dist/types/strategy.d.ts +106 -0
  703. package/dist/types/strategy.d.ts.map +1 -0
  704. package/dist/types/strategy.js +2 -0
  705. package/dist/types/strategy.js.map +1 -0
  706. package/dist/utils/clearing-house-staleness.d.ts +47 -0
  707. package/dist/utils/clearing-house-staleness.d.ts.map +1 -0
  708. package/dist/utils/clearing-house-staleness.js +73 -0
  709. package/dist/utils/clearing-house-staleness.js.map +1 -0
  710. package/dist/utils/logger/dsl.d.ts +8 -0
  711. package/dist/utils/logger/dsl.d.ts.map +1 -0
  712. package/dist/utils/logger/dsl.js +7 -0
  713. package/dist/utils/logger/dsl.js.map +1 -0
  714. package/dist/utils/logger.d.ts +23 -0
  715. package/dist/utils/logger.d.ts.map +1 -0
  716. package/dist/utils/logger.js +97 -0
  717. package/dist/utils/logger.js.map +1 -0
  718. package/dist/utils/perp-coin.d.ts +19 -0
  719. package/dist/utils/perp-coin.d.ts.map +1 -0
  720. package/dist/utils/perp-coin.js +40 -0
  721. package/dist/utils/perp-coin.js.map +1 -0
  722. package/dist/utils/response.d.ts +14 -0
  723. package/dist/utils/response.d.ts.map +1 -0
  724. package/dist/utils/response.js +44 -0
  725. package/dist/utils/response.js.map +1 -0
  726. package/dist/utils/retry.d.ts +19 -0
  727. package/dist/utils/retry.d.ts.map +1 -0
  728. package/dist/utils/retry.js +32 -0
  729. package/dist/utils/retry.js.map +1 -0
  730. package/dist/version.d.ts +6 -0
  731. package/dist/version.d.ts.map +1 -0
  732. package/dist/version.js +21 -0
  733. package/dist/version.js.map +1 -0
  734. package/examples/.env.example +25 -0
  735. package/examples/README.md +89 -0
  736. package/examples/scanners-consumer-quickstart.mjs +134 -0
  737. package/examples/scanners-emerging-movers-v4.mjs +287 -0
  738. package/examples/scanners-liquidation-watchdog.mjs +341 -0
  739. package/examples/scanners-live-mcp.mjs +208 -0
  740. package/examples/scanners-multi-strategy.mjs +165 -0
  741. package/examples/scanners-position-tracker-e2e.mjs +225 -0
  742. package/examples/scanners-scheduled-events.mjs +96 -0
  743. package/examples/scanners-senpi-provider-client.mjs +182 -0
  744. package/examples/scanners-single-strategy.mjs +198 -0
  745. package/examples/strategies/README.md +45 -0
  746. package/examples/strategies/dsl-showcase.yaml +63 -0
  747. package/examples/strategies/dsl.yaml +47 -0
  748. package/examples/strategies/fox-minimal-loosened.yaml +225 -0
  749. package/examples/strategies/fox-minimal.yaml +220 -0
  750. package/examples/strategies/minimal.yaml +44 -0
  751. package/examples/strategies/viper.yaml +59 -0
  752. package/examples/strategies/wolf.yaml +64 -0
  753. package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +115 -0
  754. package/openclaw.plugin.json +67 -0
  755. package/package.json +53 -0
@@ -0,0 +1,113 @@
1
+ /**
2
+ * openclaw senpi config — persist telegram-chat-id, senpi-jwt-token, state-dir.
3
+ */
4
+ import { formatConfigListValue, readSenpiCliStore, resetSenpiCliStore, SENPI_CLI_KEYS, setSenpiCliKey, unsetSenpiCliKey, } from "./senpi-cli-config.js";
5
+ const KNOWN_KEYS = new Set(Object.values(SENPI_CLI_KEYS));
6
+ function knownKeyOrExit(key) {
7
+ const k = key.trim();
8
+ if (!KNOWN_KEYS.has(k)) {
9
+ console.error(`Unknown key "${key}". Known keys: ${[...KNOWN_KEYS].sort().join(", ")}`);
10
+ process.exitCode = 1;
11
+ return undefined;
12
+ }
13
+ return k;
14
+ }
15
+ export function registerSenpiConfigCommands(senpi) {
16
+ const config = senpi.command("config");
17
+ config.description("Manage Senpi CLI preferences (~/.openclaw/senpi-cli.json)");
18
+ config
19
+ .command("set-chat-id <chatId>")
20
+ .description("Store Telegram chat ID for lifecycle notifications")
21
+ .action(async (...args) => {
22
+ const chatId = args[0];
23
+ const v = typeof chatId === "string" ? chatId.trim() : "";
24
+ if (!v) {
25
+ console.error("Usage: openclaw senpi config set-chat-id <chat_id>");
26
+ process.exitCode = 1;
27
+ return;
28
+ }
29
+ setSenpiCliKey(SENPI_CLI_KEYS.TELEGRAM_CHAT_ID, v);
30
+ console.log(`telegram-chat-id set (${v.length} chars). Restart the gateway to apply.`);
31
+ });
32
+ config
33
+ .command("set-senpi-jwt-token <token>")
34
+ .description("Store Senpi MCP JWT (Bearer); falls back after openclaw.json apiKey")
35
+ .action(async (...args) => {
36
+ const token = args[0];
37
+ const v = typeof token === "string" ? token.trim() : "";
38
+ if (!v) {
39
+ console.error("Usage: openclaw senpi config set-senpi-jwt-token <jwt>");
40
+ process.exitCode = 1;
41
+ return;
42
+ }
43
+ setSenpiCliKey(SENPI_CLI_KEYS.SENPI_JWT_TOKEN, v);
44
+ console.log("senpi-jwt-token stored. Restart the gateway to apply.");
45
+ });
46
+ config
47
+ .command("set-state-dir <dir>")
48
+ .description("Base Senpi state directory (registry + per-recipe state)")
49
+ .action(async (...args) => {
50
+ const dir = args[0];
51
+ const v = typeof dir === "string" ? dir.trim() : "";
52
+ if (!v) {
53
+ console.error("Usage: openclaw senpi config set-state-dir <path>");
54
+ process.exitCode = 1;
55
+ return;
56
+ }
57
+ setSenpiCliKey(SENPI_CLI_KEYS.STATE_DIR, v);
58
+ console.log(`state-dir set. Restart the gateway to apply.`);
59
+ });
60
+ config
61
+ .command("get <key>")
62
+ .description("Print one stored value from senpi-cli.json")
63
+ .action(async (...args) => {
64
+ const key = typeof args[0] === "string" ? args[0] : "";
65
+ const k = knownKeyOrExit(key);
66
+ if (!k)
67
+ return;
68
+ const store = readSenpiCliStore();
69
+ const v = store[k];
70
+ if (v === undefined || v.length === 0) {
71
+ console.log("(not set in senpi-cli.json)");
72
+ return;
73
+ }
74
+ if (k === SENPI_CLI_KEYS.SENPI_JWT_TOKEN) {
75
+ console.log(formatConfigListValue(k, v));
76
+ }
77
+ else {
78
+ console.log(v);
79
+ }
80
+ });
81
+ config
82
+ .command("list")
83
+ .description("List all Senpi CLI preferences (secrets masked)")
84
+ .action(async () => {
85
+ const store = readSenpiCliStore();
86
+ const order = [
87
+ SENPI_CLI_KEYS.TELEGRAM_CHAT_ID,
88
+ SENPI_CLI_KEYS.SENPI_JWT_TOKEN,
89
+ SENPI_CLI_KEYS.STATE_DIR,
90
+ ];
91
+ const w = Math.max(...order.map((x) => x.length));
92
+ for (const key of order) {
93
+ const label = `${key}:`.padEnd(w + 1);
94
+ console.log(`${label} ${formatConfigListValue(key, store[key])}`);
95
+ }
96
+ });
97
+ config
98
+ .command("unset <key>")
99
+ .description("Remove a key from senpi-cli.json")
100
+ .action(async (...args) => {
101
+ const key = typeof args[0] === "string" ? args[0] : "";
102
+ const k = knownKeyOrExit(key);
103
+ if (!k)
104
+ return;
105
+ unsetSenpiCliKey(k);
106
+ console.log(`${k} unset.`);
107
+ });
108
+ config.command("reset").description("Clear all Senpi CLI preferences").action(async () => {
109
+ resetSenpiCliStore();
110
+ console.log("All Senpi CLI preferences cleared.");
111
+ });
112
+ }
113
+ //# sourceMappingURL=senpi-config-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senpi-config-commands.js","sourceRoot":"","sources":["../../src/cli/senpi-config-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAElE,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CACX,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzE,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAgB,CAAC;AAC1B,CAAC;AAQD,MAAM,UAAU,2BAA2B,CACzC,KAAuB;IAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAqB,CAAC;IAC3D,MAAM,CAAC,WAAW,CAAC,2DAA2D,CAAC,CAAC;IAEhF,MAAM;SACH,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,cAAc,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,MAAM,wCAAwC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,6BAA6B,CAAC;SACtC,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,cAAc,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG;YACZ,cAAc,CAAC,gBAAgB;YAC/B,cAAc,CAAC,eAAe;YAC9B,cAAc,CAAC,SAAS;SAChB,CAAC;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;QACvF,kBAAkB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Centralized constants for the DSL feature.
3
+ */
4
+ export declare const COMPONENT_TYPE_EXIT_DSL: "exit/dsl";
5
+ /** DSL subscribes to the same hook event names as HookSystem.fire (position tracker, open/close actions). */
6
+ export declare const EVENTS: {
7
+ readonly POSITION_OPENED: "on_position_opened";
8
+ readonly POSITION_CLOSED: "on_position_closed";
9
+ readonly POSITION_FLIPPED: "on_position_flipped";
10
+ readonly POSITION_INCREASED: "on_position_increased";
11
+ readonly POSITION_DECREASED: "on_position_decreased";
12
+ };
13
+ export declare const DSL_EVENTS: {
14
+ readonly CREATED: "dsl.created";
15
+ readonly PHASE_CHANGED: "dsl.phase_changed";
16
+ readonly TIER_ADVANCED: "dsl.tier_advanced";
17
+ readonly SL_UPDATED: "dsl.sl_updated";
18
+ readonly CLOSED: "dsl.closed";
19
+ readonly CLOSE_PENDING: "dsl.close_pending";
20
+ readonly SETTINGS_UPDATED: "dsl.settings_updated";
21
+ readonly DELETED: "dsl.deleted";
22
+ };
23
+ export declare const DEFAULT_STATE_DIR = ".dsl-state";
24
+ /** On-disk DSL state schema version (v1 = DSL engine v2; no migration from older files). */
25
+ export declare const DSL_STATE_VERSION = 1;
26
+ /**
27
+ * Recipe YAML uses a single `exit.dsl_preset` object; after parse it becomes this key in
28
+ * DslPluginConfig.presets. position.opened may set preset to override (must match this name).
29
+ */
30
+ export declare const CANONICAL_DSL_PRESET_NAME = "default";
31
+ /** Validation / parse error paths for the lone recipe preset. */
32
+ export declare const EXIT_DSL_PRESET_PATH = "exit.dsl_preset";
33
+ /** Close reasons for DSL state (closeReason) and position.closed (reason). */
34
+ export declare const CLOSE_REASON: {
35
+ readonly MANUAL_CLOSE: "manual_close";
36
+ readonly CLOSED_EXTERNALLY: "closed_externally";
37
+ readonly EXCHANGE_SL_HIT: "exchange_sl_hit";
38
+ readonly DSL_BREACH: "dsl_breach";
39
+ readonly FLIPPED: "flipped";
40
+ readonly CLOSE_POSITION_FAILED: "close_position_failed";
41
+ readonly HARD_TIMEOUT: "hard_timeout";
42
+ readonly WEAK_PEAK_CUT: "weak_peak_cut";
43
+ readonly DEAD_WEIGHT_CUT: "dead_weight_cut";
44
+ readonly POSITION_INCREASED: "position_increased";
45
+ readonly POSITION_DECREASED: "position_decreased";
46
+ readonly DSL_DELETED: "dsl_deleted";
47
+ };
48
+ export type CloseReason = (typeof CLOSE_REASON)[keyof typeof CLOSE_REASON];
49
+ export declare const MIN_INTERVAL_SECONDS = 5;
50
+ /** Upper bound for `exit.interval_seconds` (validation spec). */
51
+ export declare const MAX_INTERVAL_SECONDS = 3600;
52
+ export declare const DEFAULT_INTERVAL_MS = 30000;
53
+ export declare const MAX_CONSECUTIVE_CLOSE_FAILURES = 3;
54
+ /** Log a warning when price is missing for this many consecutive monitor ticks. */
55
+ export declare const DSL_PRICE_FETCH_FAILURE_WARN_THRESHOLD = 5;
56
+ /** Number of retries for DSL SenpiClient calls (total attempts = retries + 1). */
57
+ export declare const DSL_EXTERNAL_RETRIES = 2;
58
+ /** Delay in ms between retries for DSL SenpiClient calls. */
59
+ export declare const DSL_EXTERNAL_RETRY_DELAY_MS = 500;
60
+ export declare const MCP_TOOL_PREFIX = "senpi.";
61
+ export declare const PRICE_DECIMALS = 4;
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,uBAAuB,EAAG,UAAmB,CAAC;AAE3D,6GAA6G;AAC7G,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;CASb,CAAC;AAEX,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,6DAA6D;AAC7D,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,cAAc,IAAI,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Centralized constants for the DSL feature.
3
+ */
4
+ import { HOOK_EVENT } from "../../types/hooks.js";
5
+ export const COMPONENT_TYPE_EXIT_DSL = "exit/dsl";
6
+ /** DSL subscribes to the same hook event names as HookSystem.fire (position tracker, open/close actions). */
7
+ export const EVENTS = {
8
+ POSITION_OPENED: HOOK_EVENT.ON_POSITION_OPENED,
9
+ POSITION_CLOSED: HOOK_EVENT.ON_POSITION_CLOSED,
10
+ POSITION_FLIPPED: HOOK_EVENT.ON_POSITION_FLIPPED,
11
+ POSITION_INCREASED: HOOK_EVENT.ON_POSITION_INCREASED,
12
+ POSITION_DECREASED: HOOK_EVENT.ON_POSITION_DECREASED,
13
+ };
14
+ export const DSL_EVENTS = {
15
+ CREATED: "dsl.created",
16
+ PHASE_CHANGED: "dsl.phase_changed",
17
+ TIER_ADVANCED: "dsl.tier_advanced",
18
+ SL_UPDATED: "dsl.sl_updated",
19
+ CLOSED: "dsl.closed",
20
+ CLOSE_PENDING: "dsl.close_pending",
21
+ SETTINGS_UPDATED: "dsl.settings_updated",
22
+ DELETED: "dsl.deleted",
23
+ };
24
+ export const DEFAULT_STATE_DIR = ".dsl-state";
25
+ /** On-disk DSL state schema version (v1 = DSL engine v2; no migration from older files). */
26
+ export const DSL_STATE_VERSION = 1;
27
+ /**
28
+ * Recipe YAML uses a single `exit.dsl_preset` object; after parse it becomes this key in
29
+ * DslPluginConfig.presets. position.opened may set preset to override (must match this name).
30
+ */
31
+ export const CANONICAL_DSL_PRESET_NAME = "default";
32
+ /** Validation / parse error paths for the lone recipe preset. */
33
+ export const EXIT_DSL_PRESET_PATH = "exit.dsl_preset";
34
+ /** Close reasons for DSL state (closeReason) and position.closed (reason). */
35
+ export const CLOSE_REASON = {
36
+ MANUAL_CLOSE: "manual_close",
37
+ CLOSED_EXTERNALLY: "closed_externally",
38
+ EXCHANGE_SL_HIT: "exchange_sl_hit",
39
+ DSL_BREACH: "dsl_breach",
40
+ FLIPPED: "flipped",
41
+ CLOSE_POSITION_FAILED: "close_position_failed",
42
+ HARD_TIMEOUT: "hard_timeout",
43
+ WEAK_PEAK_CUT: "weak_peak_cut",
44
+ DEAD_WEIGHT_CUT: "dead_weight_cut",
45
+ POSITION_INCREASED: "position_increased",
46
+ POSITION_DECREASED: "position_decreased",
47
+ DSL_DELETED: "dsl_deleted",
48
+ };
49
+ export const MIN_INTERVAL_SECONDS = 5;
50
+ /** Upper bound for `exit.interval_seconds` (validation spec). */
51
+ export const MAX_INTERVAL_SECONDS = 3600;
52
+ export const DEFAULT_INTERVAL_MS = 30_000;
53
+ export const MAX_CONSECUTIVE_CLOSE_FAILURES = 3;
54
+ /** Log a warning when price is missing for this many consecutive monitor ticks. */
55
+ export const DSL_PRICE_FETCH_FAILURE_WARN_THRESHOLD = 5;
56
+ /** Number of retries for DSL SenpiClient calls (total attempts = retries + 1). */
57
+ export const DSL_EXTERNAL_RETRIES = 2;
58
+ /** Delay in ms between retries for DSL SenpiClient calls. */
59
+ export const DSL_EXTERNAL_RETRY_DELAY_MS = 500;
60
+ export const MCP_TOOL_PREFIX = "senpi.";
61
+ export const PRICE_DECIMALS = 4;
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/dsl/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAmB,CAAC;AAE3D,6GAA6G;AAC7G,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;IAChD,kBAAkB,EAAE,UAAU,CAAC,qBAAqB;IACpD,kBAAkB,EAAE,UAAU,CAAC,qBAAqB;CAC5C,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;IACxC,OAAO,EAAE,aAAa;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,SAAS,CAAC;AAEnD,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAEtD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,WAAW,EAAE,aAAa;CAClB,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,mFAAmF;AACnF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * RuntimeContextBuilder: resolves context variables for LLM decision prompts.
3
+ *
4
+ * Each context type (e.g. "signal", "strategy") is backed by a ContextProvider
5
+ * that knows how to extract/compute its data from the event and runtime state.
6
+ */
7
+ import type { ContextBuilder as IContextBuilder, ContextEntry, ContextProvider, ContextProviderRequest } from "./types.js";
8
+ export declare class RuntimeContextBuilder implements IContextBuilder {
9
+ private providers;
10
+ register(provider: ContextProvider): void;
11
+ build(entries: ContextEntry[], request: ContextProviderRequest): Promise<Record<string, unknown>>;
12
+ }
13
+ export declare function createContextBuilder(): RuntimeContextBuilder;
14
+ //# sourceMappingURL=context-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/context/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,IAAI,eAAe,EACjC,YAAY,EACZ,eAAe,EACf,sBAAsB,EACvB,MAAM,YAAY,CAAC;AASpB,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,SAAS,CAAsC;IAEvD,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAInC,KAAK,CACT,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAWpC;AAID,wBAAgB,oBAAoB,IAAI,qBAAqB,CAO5D"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * RuntimeContextBuilder: resolves context variables for LLM decision prompts.
3
+ *
4
+ * Each context type (e.g. "signal", "strategy") is backed by a ContextProvider
5
+ * that knows how to extract/compute its data from the event and runtime state.
6
+ */
7
+ import { contextEntryKey as getContextEntryKey } from "./types.js";
8
+ import { signalProvider } from "./providers/signal.provider.js";
9
+ import { scannerContextProvider } from "./providers/scanner-context.provider.js";
10
+ import { strategyProvider } from "./providers/strategy.provider.js";
11
+ import { assetTrendProvider } from "./providers/asset-trend.provider.js";
12
+ // ─── RuntimeContextBuilder ──────────────────────────────────────────────────
13
+ export class RuntimeContextBuilder {
14
+ providers = new Map();
15
+ register(provider) {
16
+ this.providers.set(provider.type, provider);
17
+ }
18
+ async build(entries, request) {
19
+ const results = await Promise.all(entries.map(async (entry) => {
20
+ const provider = this.providers.get(entry.type);
21
+ const key = getContextEntryKey(entry);
22
+ if (!provider)
23
+ return [key, null];
24
+ return [key, await provider.resolve(request, entry)];
25
+ }));
26
+ return Object.fromEntries(results);
27
+ }
28
+ }
29
+ // ─── Factory ────────────────────────────────────────────────────────────────
30
+ export function createContextBuilder() {
31
+ const builder = new RuntimeContextBuilder();
32
+ builder.register(signalProvider);
33
+ builder.register(scannerContextProvider);
34
+ builder.register(strategyProvider);
35
+ builder.register(assetTrendProvider);
36
+ return builder;
37
+ }
38
+ //# sourceMappingURL=context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/context/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,+EAA+E;AAE/E,MAAM,OAAO,qBAAqB;IACxB,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEvD,QAAQ,CAAC,QAAyB;QAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAuB,EACvB,OAA+B;QAE/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAU,CAAC;YAC3C,OAAO,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAU,CAAC;QAChE,CAAC,CAAC,CACH,CAAC;QACF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF;AAED,+EAA+E;AAE/E,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { ContextEntry, ContextProviderRequest, ContextProvider, ContextBuilder, } from "./types.js";
2
+ export { RuntimeContextBuilder, createContextBuilder } from "./context-builder.js";
3
+ export { interpolatePrompt } from "./interpolate.js";
4
+ export { signalProvider, scannerContextProvider, strategyProvider } from "./providers/index.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // ─── Context Module ─────────────────────────────────────────────────────────
2
+ export { RuntimeContextBuilder, createContextBuilder } from "./context-builder.js";
3
+ export { interpolatePrompt } from "./interpolate.js";
4
+ export { signalProvider, scannerContextProvider, strategyProvider } from "./providers/index.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAS/E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Replace {{variable}} placeholders in a prompt template with values from context.
3
+ * Unresolved variables (no matching key or null value) are left as-is.
4
+ */
5
+ export declare function interpolatePrompt(template: string, context: Record<string, unknown>): string;
6
+ //# sourceMappingURL=interpolate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/context/interpolate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CASR"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Replace {{variable}} placeholders in a prompt template with values from context.
3
+ * Unresolved variables (no matching key or null value) are left as-is.
4
+ */
5
+ export function interpolatePrompt(template, context) {
6
+ return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
7
+ if (key in context && context[key] != null) {
8
+ return typeof context[key] === "string"
9
+ ? context[key]
10
+ : JSON.stringify(context[key], null, 2);
11
+ }
12
+ return match;
13
+ });
14
+ }
15
+ //# sourceMappingURL=interpolate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/context/interpolate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,OAAgC;IAEhC,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC/D,IAAI,GAAG,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC3C,OAAO,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;gBACrC,CAAC,CAAE,OAAO,CAAC,GAAG,CAAY;gBAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { ContextProvider } from "../types.js";
2
+ /** Asset-level trend direction. */
3
+ export declare enum AssetTrend {
4
+ UP = "UP",
5
+ DOWN = "DOWN",
6
+ NEUTRAL = "NEUTRAL"
7
+ }
8
+ /** Trend classification for one asset. */
9
+ export interface AssetTrendResult {
10
+ asset: string;
11
+ assetTrend: AssetTrend;
12
+ trendStrength: number;
13
+ timeframe: string;
14
+ }
15
+ /**
16
+ * Computes trend direction from raw OHLCV candle data.
17
+ *
18
+ * Uses EMA 8/21 crossover and price-vs-EMA position to determine direction.
19
+ * Returns trend classification with strength (0-1).
20
+ */
21
+ export declare function computeTrend(candles: Array<{
22
+ close: number;
23
+ high: number;
24
+ low: number;
25
+ }>, emaFast?: number, emaSlow?: number): {
26
+ trend: AssetTrend;
27
+ strength: number;
28
+ };
29
+ /**
30
+ * Asset trend context provider.
31
+ *
32
+ * Extracts the signal asset from the triggering event, fetches 1h candle
33
+ * data via the Senpi MCP client, and computes the asset's local trend
34
+ * direction using EMA crossover analysis.
35
+ *
36
+ * entry.value is ignored — this provider always analyzes the signal's asset.
37
+ *
38
+ * Returns null if candle data cannot be fetched or the signal asset
39
+ * cannot be determined.
40
+ */
41
+ export declare const assetTrendProvider: ContextProvider;
42
+ //# sourceMappingURL=asset-trend.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-trend.provider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/asset-trend.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,aAAa,CAAC;AAIrB,mCAAmC;AACnC,oBAAY,UAAU;IACpB,EAAE,OAAO;IACT,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5D,OAAO,SAAI,EACX,OAAO,SAAK,GACX;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkCzC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAsChC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { computeEma } from "../../scanners/implementations/indicators.js";
2
+ /** Asset-level trend direction. */
3
+ export var AssetTrend;
4
+ (function (AssetTrend) {
5
+ AssetTrend["UP"] = "UP";
6
+ AssetTrend["DOWN"] = "DOWN";
7
+ AssetTrend["NEUTRAL"] = "NEUTRAL";
8
+ })(AssetTrend || (AssetTrend = {}));
9
+ /**
10
+ * Computes trend direction from raw OHLCV candle data.
11
+ *
12
+ * Uses EMA 8/21 crossover and price-vs-EMA position to determine direction.
13
+ * Returns trend classification with strength (0-1).
14
+ */
15
+ export function computeTrend(candles, emaFast = 8, emaSlow = 21) {
16
+ if (candles.length < emaSlow + 1) {
17
+ return { trend: AssetTrend.NEUTRAL, strength: 0 };
18
+ }
19
+ const closes = candles.map((c) => c.close);
20
+ const emaF = computeEma(closes, emaFast);
21
+ const emaS = computeEma(closes, emaSlow);
22
+ const lastFast = emaF[emaF.length - 1];
23
+ const lastSlow = emaS[emaS.length - 1];
24
+ const lastClose = closes[closes.length - 1];
25
+ let score = 0;
26
+ // EMA crossover
27
+ if (lastFast > lastSlow)
28
+ score += 0.4;
29
+ else if (lastFast < lastSlow)
30
+ score -= 0.4;
31
+ // Price above/below slow EMA
32
+ if (lastClose > lastSlow)
33
+ score += 0.3;
34
+ else if (lastClose < lastSlow)
35
+ score -= 0.3;
36
+ // EMA spread magnitude (normalized by price)
37
+ const spread = Math.abs(lastFast - lastSlow) / lastSlow;
38
+ score += Math.sign(lastFast - lastSlow) * Math.min(spread * 10, 0.3);
39
+ const clamped = Math.max(-1, Math.min(1, score));
40
+ const strength = Math.abs(clamped);
41
+ const trend = clamped > 0.15 ? AssetTrend.UP : clamped < -0.15 ? AssetTrend.DOWN : AssetTrend.NEUTRAL;
42
+ return { trend, strength };
43
+ }
44
+ /**
45
+ * Asset trend context provider.
46
+ *
47
+ * Extracts the signal asset from the triggering event, fetches 1h candle
48
+ * data via the Senpi MCP client, and computes the asset's local trend
49
+ * direction using EMA crossover analysis.
50
+ *
51
+ * entry.value is ignored — this provider always analyzes the signal's asset.
52
+ *
53
+ * Returns null if candle data cannot be fetched or the signal asset
54
+ * cannot be determined.
55
+ */
56
+ export const assetTrendProvider = {
57
+ type: "asset-trend",
58
+ async resolve(request, _entry) {
59
+ // Extract signal asset from the triggering event
60
+ const scanResult = request.event.data?.scanResult;
61
+ const signal = scanResult?.signals?.[0];
62
+ if (!signal?.asset)
63
+ return null;
64
+ const asset = signal.asset;
65
+ // Fetch candle data via scanner module's underlying providers
66
+ // or from the event's scan result metadata
67
+ // The asset-trend provider needs candle data. Since context providers
68
+ // don't have direct access to candle providers, we return the asset
69
+ // information for the LLM to consider along with the signal metadata.
70
+ // The actual trend computation happens when candle data is available
71
+ // through the scanner module's signal metadata.
72
+ //
73
+ // If the signal has marketRegime metadata, use it as a proxy.
74
+ const meta = signal.meta;
75
+ if (meta?.marketRegime) {
76
+ return {
77
+ asset,
78
+ marketRegime: meta.marketRegime,
79
+ signalDirection: signal.direction,
80
+ signalScore: signal.score,
81
+ };
82
+ }
83
+ return {
84
+ asset,
85
+ signalDirection: signal.direction,
86
+ signalScore: signal.score,
87
+ };
88
+ },
89
+ };
90
+ //# sourceMappingURL=asset-trend.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-trend.provider.js","sourceRoot":"","sources":["../../../src/context/providers/asset-trend.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { signalProvider } from "./signal.provider.js";
2
+ export { scannerContextProvider } from "./scanner-context.provider.js";
3
+ export { strategyProvider } from "./strategy.provider.js";
4
+ export { assetTrendProvider, AssetTrend, type AssetTrendResult } from "./asset-trend.provider.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { signalProvider } from "./signal.provider.js";
2
+ export { scannerContextProvider } from "./scanner-context.provider.js";
3
+ export { strategyProvider } from "./strategy.provider.js";
4
+ export { assetTrendProvider, AssetTrend } from "./asset-trend.provider.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAyB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ContextProvider } from "../types.js";
2
+ /**
3
+ * Generic scanner-context provider.
4
+ *
5
+ * Resolves retained context emitted by a source scanner. In v1 each
6
+ * context-producing scanner exposes exactly one primary retained output,
7
+ * so the source scanner name alone is enough to address it.
8
+ */
9
+ export declare const scannerContextProvider: ContextProvider;
10
+ //# sourceMappingURL=scanner-context.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-context.provider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/scanner-context.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAapC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Generic scanner-context provider.
3
+ *
4
+ * Resolves retained context emitted by a source scanner. In v1 each
5
+ * context-producing scanner exposes exactly one primary retained output,
6
+ * so the source scanner name alone is enough to address it.
7
+ */
8
+ export const scannerContextProvider = {
9
+ type: "context",
10
+ async resolve(request, entry) {
11
+ if (entry.type !== "context") {
12
+ return null;
13
+ }
14
+ if (!request.readScannerContext || !request.address) {
15
+ return null;
16
+ }
17
+ return request.readScannerContext(request.address, entry.scanner);
18
+ },
19
+ };
20
+ //# sourceMappingURL=scanner-context.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-context.provider.js","sourceRoot":"","sources":["../../../src/context/providers/scanner-context.provider.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,IAAI,EAAE,SAAS;IAEf,KAAK,CAAC,OAAO,CAAC,OAA+B,EAAE,KAAmB;QAChE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ContextProvider } from "../types.js";
2
+ /**
3
+ * Signal context provider.
4
+ * Resolves scanner signals by scanner name via ScannerRuntimeModule.
5
+ *
6
+ * entry.scanner = scanner name (e.g. "emerging_movers", "oi_tracker")
7
+ * Uses scannerModule.querySignals() to get any scanner's latest signals.
8
+ * Falls back to event's scanResult when scannerModule is not available.
9
+ */
10
+ export declare const signalProvider: ContextProvider;
11
+ //# sourceMappingURL=signal.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.provider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/signal.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,aAAa,CAAC;AAGrB;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,eAqB5B,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Signal context provider.
3
+ * Resolves scanner signals by scanner name via ScannerRuntimeModule.
4
+ *
5
+ * entry.scanner = scanner name (e.g. "emerging_movers", "oi_tracker")
6
+ * Uses scannerModule.querySignals() to get any scanner's latest signals.
7
+ * Falls back to event's scanResult when scannerModule is not available.
8
+ */
9
+ export const signalProvider = {
10
+ type: "signal",
11
+ async resolve(request, entry) {
12
+ if (entry.type !== "signal") {
13
+ return null;
14
+ }
15
+ // Prefer scannerModule for cross-scanner access
16
+ if (request.scannerModule) {
17
+ const signals = await request.scannerModule.querySignals({
18
+ scannerId: entry.scanner,
19
+ address: request.address,
20
+ });
21
+ return signals?.length ? signals : null;
22
+ }
23
+ // Fallback: extract from the triggering event's scanResult
24
+ const scanResult = request.event.data.scanResult;
25
+ if (!scanResult?.signals?.length)
26
+ return null;
27
+ return scanResult.signals;
28
+ },
29
+ };
30
+ //# sourceMappingURL=signal.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.provider.js","sourceRoot":"","sources":["../../../src/context/providers/signal.provider.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,IAAI,EAAE,QAAQ;IAEd,KAAK,CAAC,OAAO,CAAC,OAA+B,EAAE,KAAmB;QAChE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gDAAgD;QAChD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC;gBACvD,SAAS,EAAE,KAAK,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YACH,OAAO,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,2DAA2D;QAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAA+C,CAAC;QACtF,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;CACF,CAAC"}