@senpi/trading-recipe 1.0.21

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 (553) hide show
  1. package/README.md +117 -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 +215 -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 +275 -0
  33. package/dist/actions/open-position/open-position.action.js.map +1 -0
  34. package/dist/actions/types.d.ts +123 -0
  35. package/dist/actions/types.d.ts.map +1 -0
  36. package/dist/actions/types.js +3 -0
  37. package/dist/actions/types.js.map +1 -0
  38. package/dist/cli/guide-commands.d.ts +26 -0
  39. package/dist/cli/guide-commands.d.ts.map +1 -0
  40. package/dist/cli/guide-commands.js +345 -0
  41. package/dist/cli/guide-commands.js.map +1 -0
  42. package/dist/cli/senpi-commands.d.ts +20 -0
  43. package/dist/cli/senpi-commands.d.ts.map +1 -0
  44. package/dist/cli/senpi-commands.js +115 -0
  45. package/dist/cli/senpi-commands.js.map +1 -0
  46. package/dist/constants/dsl/index.d.ts +45 -0
  47. package/dist/constants/dsl/index.d.ts.map +1 -0
  48. package/dist/constants/dsl/index.js +45 -0
  49. package/dist/constants/dsl/index.js.map +1 -0
  50. package/dist/context/context-builder.d.ts +14 -0
  51. package/dist/context/context-builder.d.ts.map +1 -0
  52. package/dist/context/context-builder.js +36 -0
  53. package/dist/context/context-builder.js.map +1 -0
  54. package/dist/context/index.d.ts +5 -0
  55. package/dist/context/index.d.ts.map +1 -0
  56. package/dist/context/index.js +5 -0
  57. package/dist/context/index.js.map +1 -0
  58. package/dist/context/interpolate.d.ts +6 -0
  59. package/dist/context/interpolate.d.ts.map +1 -0
  60. package/dist/context/interpolate.js +15 -0
  61. package/dist/context/interpolate.js.map +1 -0
  62. package/dist/context/providers/asset-trend.provider.d.ts +42 -0
  63. package/dist/context/providers/asset-trend.provider.d.ts.map +1 -0
  64. package/dist/context/providers/asset-trend.provider.js +94 -0
  65. package/dist/context/providers/asset-trend.provider.js.map +1 -0
  66. package/dist/context/providers/index.d.ts +5 -0
  67. package/dist/context/providers/index.d.ts.map +1 -0
  68. package/dist/context/providers/index.js +5 -0
  69. package/dist/context/providers/index.js.map +1 -0
  70. package/dist/context/providers/regime.provider.d.ts +14 -0
  71. package/dist/context/providers/regime.provider.d.ts.map +1 -0
  72. package/dist/context/providers/regime.provider.js +29 -0
  73. package/dist/context/providers/regime.provider.js.map +1 -0
  74. package/dist/context/providers/signal.provider.d.ts +11 -0
  75. package/dist/context/providers/signal.provider.d.ts.map +1 -0
  76. package/dist/context/providers/signal.provider.js +27 -0
  77. package/dist/context/providers/signal.provider.js.map +1 -0
  78. package/dist/context/providers/strategy.provider.d.ts +14 -0
  79. package/dist/context/providers/strategy.provider.d.ts.map +1 -0
  80. package/dist/context/providers/strategy.provider.js +68 -0
  81. package/dist/context/providers/strategy.provider.js.map +1 -0
  82. package/dist/context/types.d.ts +30 -0
  83. package/dist/context/types.d.ts.map +1 -0
  84. package/dist/context/types.js +2 -0
  85. package/dist/context/types.js.map +1 -0
  86. package/dist/dsl/config/index.d.ts +59 -0
  87. package/dist/dsl/config/index.d.ts.map +1 -0
  88. package/dist/dsl/config/index.js +171 -0
  89. package/dist/dsl/config/index.js.map +1 -0
  90. package/dist/dsl/constants/index.d.ts +3 -0
  91. package/dist/dsl/constants/index.d.ts.map +1 -0
  92. package/dist/dsl/constants/index.js +3 -0
  93. package/dist/dsl/constants/index.js.map +1 -0
  94. package/dist/dsl/engine/index.d.ts +7 -0
  95. package/dist/dsl/engine/index.d.ts.map +1 -0
  96. package/dist/dsl/engine/index.js +310 -0
  97. package/dist/dsl/engine/index.js.map +1 -0
  98. package/dist/dsl/events/bus-types.d.ts +7 -0
  99. package/dist/dsl/events/bus-types.d.ts.map +1 -0
  100. package/dist/dsl/events/bus-types.js +6 -0
  101. package/dist/dsl/events/bus-types.js.map +1 -0
  102. package/dist/dsl/events/guards.d.ts +17 -0
  103. package/dist/dsl/events/guards.d.ts.map +1 -0
  104. package/dist/dsl/events/guards.js +94 -0
  105. package/dist/dsl/events/guards.js.map +1 -0
  106. package/dist/dsl/events/handlers.d.ts +15 -0
  107. package/dist/dsl/events/handlers.d.ts.map +1 -0
  108. package/dist/dsl/events/handlers.js +252 -0
  109. package/dist/dsl/events/handlers.js.map +1 -0
  110. package/dist/dsl/events/index.d.ts +4 -0
  111. package/dist/dsl/events/index.d.ts.map +1 -0
  112. package/dist/dsl/events/index.js +4 -0
  113. package/dist/dsl/events/index.js.map +1 -0
  114. package/dist/dsl/index.d.ts +13 -0
  115. package/dist/dsl/index.d.ts.map +1 -0
  116. package/dist/dsl/index.js +35 -0
  117. package/dist/dsl/index.js.map +1 -0
  118. package/dist/dsl/monitor/index.d.ts +18 -0
  119. package/dist/dsl/monitor/index.d.ts.map +1 -0
  120. package/dist/dsl/monitor/index.js +310 -0
  121. package/dist/dsl/monitor/index.js.map +1 -0
  122. package/dist/dsl/plugin/index.d.ts +29 -0
  123. package/dist/dsl/plugin/index.d.ts.map +1 -0
  124. package/dist/dsl/plugin/index.js +85 -0
  125. package/dist/dsl/plugin/index.js.map +1 -0
  126. package/dist/dsl/types/index.d.ts +3 -0
  127. package/dist/dsl/types/index.d.ts.map +1 -0
  128. package/dist/dsl/types/index.js +3 -0
  129. package/dist/dsl/types/index.js.map +1 -0
  130. package/dist/health/index.d.ts +9 -0
  131. package/dist/health/index.d.ts.map +1 -0
  132. package/dist/health/index.js +9 -0
  133. package/dist/health/index.js.map +1 -0
  134. package/dist/index.d.ts +95 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +235 -0
  137. package/dist/index.js.map +1 -0
  138. package/dist/leverage/max-leverage-cache.d.ts +10 -0
  139. package/dist/leverage/max-leverage-cache.d.ts.map +1 -0
  140. package/dist/leverage/max-leverage-cache.js +51 -0
  141. package/dist/leverage/max-leverage-cache.js.map +1 -0
  142. package/dist/leverage/resolve-leverage.d.ts +9 -0
  143. package/dist/leverage/resolve-leverage.d.ts.map +1 -0
  144. package/dist/leverage/resolve-leverage.js +15 -0
  145. package/dist/leverage/resolve-leverage.js.map +1 -0
  146. package/dist/risk/index.d.ts +9 -0
  147. package/dist/risk/index.d.ts.map +1 -0
  148. package/dist/risk/index.js +9 -0
  149. package/dist/risk/index.js.map +1 -0
  150. package/dist/runtime/action-registry.d.ts +12 -0
  151. package/dist/runtime/action-registry.d.ts.map +1 -0
  152. package/dist/runtime/action-registry.js +20 -0
  153. package/dist/runtime/action-registry.js.map +1 -0
  154. package/dist/runtime/build-action-scan-payload.d.ts +20 -0
  155. package/dist/runtime/build-action-scan-payload.d.ts.map +1 -0
  156. package/dist/runtime/build-action-scan-payload.js +40 -0
  157. package/dist/runtime/build-action-scan-payload.js.map +1 -0
  158. package/dist/runtime/bus.d.ts +6 -0
  159. package/dist/runtime/bus.d.ts.map +1 -0
  160. package/dist/runtime/bus.js +19 -0
  161. package/dist/runtime/bus.js.map +1 -0
  162. package/dist/runtime/create-action-context.d.ts +34 -0
  163. package/dist/runtime/create-action-context.d.ts.map +1 -0
  164. package/dist/runtime/create-action-context.js +22 -0
  165. package/dist/runtime/create-action-context.js.map +1 -0
  166. package/dist/runtime/create-actions.d.ts +30 -0
  167. package/dist/runtime/create-actions.d.ts.map +1 -0
  168. package/dist/runtime/create-actions.js +71 -0
  169. package/dist/runtime/create-actions.js.map +1 -0
  170. package/dist/runtime/create-runtime-context.d.ts +35 -0
  171. package/dist/runtime/create-runtime-context.d.ts.map +1 -0
  172. package/dist/runtime/create-runtime-context.js +33 -0
  173. package/dist/runtime/create-runtime-context.js.map +1 -0
  174. package/dist/runtime/create-scanner-module.d.ts +14 -0
  175. package/dist/runtime/create-scanner-module.d.ts.map +1 -0
  176. package/dist/runtime/create-scanner-module.js +26 -0
  177. package/dist/runtime/create-scanner-module.js.map +1 -0
  178. package/dist/runtime/create-scanner-providers-for-run.d.ts +20 -0
  179. package/dist/runtime/create-scanner-providers-for-run.d.ts.map +1 -0
  180. package/dist/runtime/create-scanner-providers-for-run.js +34 -0
  181. package/dist/runtime/create-scanner-providers-for-run.js.map +1 -0
  182. package/dist/runtime/default-state-dir.d.ts +10 -0
  183. package/dist/runtime/default-state-dir.d.ts.map +1 -0
  184. package/dist/runtime/default-state-dir.js +22 -0
  185. package/dist/runtime/default-state-dir.js.map +1 -0
  186. package/dist/runtime/env-resolve.d.ts +17 -0
  187. package/dist/runtime/env-resolve.d.ts.map +1 -0
  188. package/dist/runtime/env-resolve.js +45 -0
  189. package/dist/runtime/env-resolve.js.map +1 -0
  190. package/dist/runtime/hook-system.d.ts +7 -0
  191. package/dist/runtime/hook-system.d.ts.map +1 -0
  192. package/dist/runtime/hook-system.js +16 -0
  193. package/dist/runtime/hook-system.js.map +1 -0
  194. package/dist/runtime/index.d.ts +37 -0
  195. package/dist/runtime/index.d.ts.map +1 -0
  196. package/dist/runtime/index.js +26 -0
  197. package/dist/runtime/index.js.map +1 -0
  198. package/dist/runtime/load-trading-strategy.d.ts +23 -0
  199. package/dist/runtime/load-trading-strategy.d.ts.map +1 -0
  200. package/dist/runtime/load-trading-strategy.js +130 -0
  201. package/dist/runtime/load-trading-strategy.js.map +1 -0
  202. package/dist/runtime/map-exit-config.d.ts +12 -0
  203. package/dist/runtime/map-exit-config.d.ts.map +1 -0
  204. package/dist/runtime/map-exit-config.js +91 -0
  205. package/dist/runtime/map-exit-config.js.map +1 -0
  206. package/dist/runtime/map-strategies-registration.d.ts +12 -0
  207. package/dist/runtime/map-strategies-registration.d.ts.map +1 -0
  208. package/dist/runtime/map-strategies-registration.js +52 -0
  209. package/dist/runtime/map-strategies-registration.js.map +1 -0
  210. package/dist/runtime/map-strategies.d.ts +12 -0
  211. package/dist/runtime/map-strategies.d.ts.map +1 -0
  212. package/dist/runtime/map-strategies.js +66 -0
  213. package/dist/runtime/map-strategies.js.map +1 -0
  214. package/dist/runtime/notifications.d.ts +12 -0
  215. package/dist/runtime/notifications.d.ts.map +1 -0
  216. package/dist/runtime/notifications.js +83 -0
  217. package/dist/runtime/notifications.js.map +1 -0
  218. package/dist/runtime/parse-interval.d.ts +11 -0
  219. package/dist/runtime/parse-interval.d.ts.map +1 -0
  220. package/dist/runtime/parse-interval.js +35 -0
  221. package/dist/runtime/parse-interval.js.map +1 -0
  222. package/dist/runtime/reconcile-state.d.ts +25 -0
  223. package/dist/runtime/reconcile-state.d.ts.map +1 -0
  224. package/dist/runtime/reconcile-state.js +112 -0
  225. package/dist/runtime/reconcile-state.js.map +1 -0
  226. package/dist/runtime/risk-guard.d.ts +6 -0
  227. package/dist/runtime/risk-guard.d.ts.map +1 -0
  228. package/dist/runtime/risk-guard.js +14 -0
  229. package/dist/runtime/risk-guard.js.map +1 -0
  230. package/dist/runtime/run.d.ts +21 -0
  231. package/dist/runtime/run.d.ts.map +1 -0
  232. package/dist/runtime/run.js +35 -0
  233. package/dist/runtime/run.js.map +1 -0
  234. package/dist/runtime/runtime.d.ts +40 -0
  235. package/dist/runtime/runtime.d.ts.map +1 -0
  236. package/dist/runtime/runtime.js +251 -0
  237. package/dist/runtime/runtime.js.map +1 -0
  238. package/dist/runtime/scanner-registry.d.ts +22 -0
  239. package/dist/runtime/scanner-registry.d.ts.map +1 -0
  240. package/dist/runtime/scanner-registry.js +83 -0
  241. package/dist/runtime/scanner-registry.js.map +1 -0
  242. package/dist/runtime/strategy-registry.d.ts +49 -0
  243. package/dist/runtime/strategy-registry.d.ts.map +1 -0
  244. package/dist/runtime/strategy-registry.js +156 -0
  245. package/dist/runtime/strategy-registry.js.map +1 -0
  246. package/dist/runtime/trading-strategy-config.d.ts +6 -0
  247. package/dist/runtime/trading-strategy-config.d.ts.map +1 -0
  248. package/dist/runtime/trading-strategy-config.js +5 -0
  249. package/dist/runtime/trading-strategy-config.js.map +1 -0
  250. package/dist/runtime/trading-strategy-schema.d.ts +20093 -0
  251. package/dist/runtime/trading-strategy-schema.d.ts.map +1 -0
  252. package/dist/runtime/trading-strategy-schema.js +115 -0
  253. package/dist/runtime/trading-strategy-schema.js.map +1 -0
  254. package/dist/scanners/__tests__/fixtures/index.d.ts +3 -0
  255. package/dist/scanners/__tests__/fixtures/index.d.ts.map +1 -0
  256. package/dist/scanners/__tests__/fixtures/index.js +3 -0
  257. package/dist/scanners/__tests__/fixtures/index.js.map +1 -0
  258. package/dist/scanners/__tests__/fixtures/scan-results.d.ts +23 -0
  259. package/dist/scanners/__tests__/fixtures/scan-results.d.ts.map +1 -0
  260. package/dist/scanners/__tests__/fixtures/scan-results.js +128 -0
  261. package/dist/scanners/__tests__/fixtures/scan-results.js.map +1 -0
  262. package/dist/scanners/__tests__/fixtures/signals.d.ts +18 -0
  263. package/dist/scanners/__tests__/fixtures/signals.d.ts.map +1 -0
  264. package/dist/scanners/__tests__/fixtures/signals.js +84 -0
  265. package/dist/scanners/__tests__/fixtures/signals.js.map +1 -0
  266. package/dist/scanners/__tests__/test-helpers.d.ts +4 -0
  267. package/dist/scanners/__tests__/test-helpers.d.ts.map +1 -0
  268. package/dist/scanners/__tests__/test-helpers.js +23 -0
  269. package/dist/scanners/__tests__/test-helpers.js.map +1 -0
  270. package/dist/scanners/artifacts.d.ts +119 -0
  271. package/dist/scanners/artifacts.d.ts.map +1 -0
  272. package/dist/scanners/artifacts.js +72 -0
  273. package/dist/scanners/artifacts.js.map +1 -0
  274. package/dist/scanners/create-scanner.d.ts +13 -0
  275. package/dist/scanners/create-scanner.d.ts.map +1 -0
  276. package/dist/scanners/create-scanner.js +11 -0
  277. package/dist/scanners/create-scanner.js.map +1 -0
  278. package/dist/scanners/engine/config-validator.d.ts +7 -0
  279. package/dist/scanners/engine/config-validator.d.ts.map +1 -0
  280. package/dist/scanners/engine/config-validator.js +16 -0
  281. package/dist/scanners/engine/config-validator.js.map +1 -0
  282. package/dist/scanners/engine/data-providers.d.ts +47 -0
  283. package/dist/scanners/engine/data-providers.d.ts.map +1 -0
  284. package/dist/scanners/engine/data-providers.js +8 -0
  285. package/dist/scanners/engine/data-providers.js.map +1 -0
  286. package/dist/scanners/engine/engine.d.ts +76 -0
  287. package/dist/scanners/engine/engine.d.ts.map +1 -0
  288. package/dist/scanners/engine/engine.js +399 -0
  289. package/dist/scanners/engine/engine.js.map +1 -0
  290. package/dist/scanners/engine/index.d.ts +9 -0
  291. package/dist/scanners/engine/index.d.ts.map +1 -0
  292. package/dist/scanners/engine/index.js +7 -0
  293. package/dist/scanners/engine/index.js.map +1 -0
  294. package/dist/scanners/engine/input-resolver.d.ts +21 -0
  295. package/dist/scanners/engine/input-resolver.d.ts.map +1 -0
  296. package/dist/scanners/engine/input-resolver.js +149 -0
  297. package/dist/scanners/engine/input-resolver.js.map +1 -0
  298. package/dist/scanners/engine/lifecycle.d.ts +21 -0
  299. package/dist/scanners/engine/lifecycle.d.ts.map +1 -0
  300. package/dist/scanners/engine/lifecycle.js +2 -0
  301. package/dist/scanners/engine/lifecycle.js.map +1 -0
  302. package/dist/scanners/engine/result-builder.d.ts +30 -0
  303. package/dist/scanners/engine/result-builder.d.ts.map +1 -0
  304. package/dist/scanners/engine/result-builder.js +129 -0
  305. package/dist/scanners/engine/result-builder.js.map +1 -0
  306. package/dist/scanners/engine/strategy-registry.d.ts +45 -0
  307. package/dist/scanners/engine/strategy-registry.d.ts.map +1 -0
  308. package/dist/scanners/engine/strategy-registry.js +93 -0
  309. package/dist/scanners/engine/strategy-registry.js.map +1 -0
  310. package/dist/scanners/events.d.ts +41 -0
  311. package/dist/scanners/events.d.ts.map +1 -0
  312. package/dist/scanners/events.js +33 -0
  313. package/dist/scanners/events.js.map +1 -0
  314. package/dist/scanners/implementations/emerging-movers.d.ts +215 -0
  315. package/dist/scanners/implementations/emerging-movers.d.ts.map +1 -0
  316. package/dist/scanners/implementations/emerging-movers.js +709 -0
  317. package/dist/scanners/implementations/emerging-movers.js.map +1 -0
  318. package/dist/scanners/implementations/index.d.ts +8 -0
  319. package/dist/scanners/implementations/index.d.ts.map +1 -0
  320. package/dist/scanners/implementations/index.js +8 -0
  321. package/dist/scanners/implementations/index.js.map +1 -0
  322. package/dist/scanners/implementations/indicators.d.ts +40 -0
  323. package/dist/scanners/implementations/indicators.d.ts.map +1 -0
  324. package/dist/scanners/implementations/indicators.js +114 -0
  325. package/dist/scanners/implementations/indicators.js.map +1 -0
  326. package/dist/scanners/implementations/liquidation-watchdog.d.ts +74 -0
  327. package/dist/scanners/implementations/liquidation-watchdog.d.ts.map +1 -0
  328. package/dist/scanners/implementations/liquidation-watchdog.js +268 -0
  329. package/dist/scanners/implementations/liquidation-watchdog.js.map +1 -0
  330. package/dist/scanners/implementations/market-regime.d.ts +52 -0
  331. package/dist/scanners/implementations/market-regime.d.ts.map +1 -0
  332. package/dist/scanners/implementations/market-regime.js +201 -0
  333. package/dist/scanners/implementations/market-regime.js.map +1 -0
  334. package/dist/scanners/implementations/momentum.d.ts +21 -0
  335. package/dist/scanners/implementations/momentum.d.ts.map +1 -0
  336. package/dist/scanners/implementations/momentum.js +128 -0
  337. package/dist/scanners/implementations/momentum.js.map +1 -0
  338. package/dist/scanners/implementations/oi-tracker.d.ts +13 -0
  339. package/dist/scanners/implementations/oi-tracker.d.ts.map +1 -0
  340. package/dist/scanners/implementations/oi-tracker.js +67 -0
  341. package/dist/scanners/implementations/oi-tracker.js.map +1 -0
  342. package/dist/scanners/implementations/opportunity.d.ts +104 -0
  343. package/dist/scanners/implementations/opportunity.d.ts.map +1 -0
  344. package/dist/scanners/implementations/opportunity.js +441 -0
  345. package/dist/scanners/implementations/opportunity.js.map +1 -0
  346. package/dist/scanners/implementations/prescreener.d.ts +20 -0
  347. package/dist/scanners/implementations/prescreener.d.ts.map +1 -0
  348. package/dist/scanners/implementations/prescreener.js +97 -0
  349. package/dist/scanners/implementations/prescreener.js.map +1 -0
  350. package/dist/scanners/implementations/sm-flip.d.ts +43 -0
  351. package/dist/scanners/implementations/sm-flip.d.ts.map +1 -0
  352. package/dist/scanners/implementations/sm-flip.js +200 -0
  353. package/dist/scanners/implementations/sm-flip.js.map +1 -0
  354. package/dist/scanners/index.d.ts +25 -0
  355. package/dist/scanners/index.d.ts.map +1 -0
  356. package/dist/scanners/index.js +18 -0
  357. package/dist/scanners/index.js.map +1 -0
  358. package/dist/scanners/input-descriptors.d.ts +61 -0
  359. package/dist/scanners/input-descriptors.d.ts.map +1 -0
  360. package/dist/scanners/input-descriptors.js +43 -0
  361. package/dist/scanners/input-descriptors.js.map +1 -0
  362. package/dist/scanners/protocol/context.d.ts +75 -0
  363. package/dist/scanners/protocol/context.d.ts.map +1 -0
  364. package/dist/scanners/protocol/context.js +2 -0
  365. package/dist/scanners/protocol/context.js.map +1 -0
  366. package/dist/scanners/protocol/hooks.d.ts +18 -0
  367. package/dist/scanners/protocol/hooks.d.ts.map +1 -0
  368. package/dist/scanners/protocol/hooks.js +12 -0
  369. package/dist/scanners/protocol/hooks.js.map +1 -0
  370. package/dist/scanners/protocol/index.d.ts +5 -0
  371. package/dist/scanners/protocol/index.d.ts.map +1 -0
  372. package/dist/scanners/protocol/index.js +2 -0
  373. package/dist/scanners/protocol/index.js.map +1 -0
  374. package/dist/scanners/protocol/scanner.d.ts +47 -0
  375. package/dist/scanners/protocol/scanner.d.ts.map +1 -0
  376. package/dist/scanners/protocol/scanner.js +2 -0
  377. package/dist/scanners/protocol/scanner.js.map +1 -0
  378. package/dist/scanners/providers/adapter.d.ts +23 -0
  379. package/dist/scanners/providers/adapter.d.ts.map +1 -0
  380. package/dist/scanners/providers/adapter.js +227 -0
  381. package/dist/scanners/providers/adapter.js.map +1 -0
  382. package/dist/scanners/providers/cache.d.ts +20 -0
  383. package/dist/scanners/providers/cache.d.ts.map +1 -0
  384. package/dist/scanners/providers/cache.js +61 -0
  385. package/dist/scanners/providers/cache.js.map +1 -0
  386. package/dist/scanners/providers/client.d.ts +53 -0
  387. package/dist/scanners/providers/client.d.ts.map +1 -0
  388. package/dist/scanners/providers/client.js +174 -0
  389. package/dist/scanners/providers/client.js.map +1 -0
  390. package/dist/scanners/providers/factory.d.ts +43 -0
  391. package/dist/scanners/providers/factory.d.ts.map +1 -0
  392. package/dist/scanners/providers/factory.js +192 -0
  393. package/dist/scanners/providers/factory.js.map +1 -0
  394. package/dist/scanners/providers/types.d.ts +61 -0
  395. package/dist/scanners/providers/types.d.ts.map +1 -0
  396. package/dist/scanners/providers/types.js +6 -0
  397. package/dist/scanners/providers/types.js.map +1 -0
  398. package/dist/scanners/runtime-module.d.ts +54 -0
  399. package/dist/scanners/runtime-module.d.ts.map +1 -0
  400. package/dist/scanners/runtime-module.js +90 -0
  401. package/dist/scanners/runtime-module.js.map +1 -0
  402. package/dist/scanners/scanner-definition.d.ts +58 -0
  403. package/dist/scanners/scanner-definition.d.ts.map +1 -0
  404. package/dist/scanners/scanner-definition.js +19 -0
  405. package/dist/scanners/scanner-definition.js.map +1 -0
  406. package/dist/scanners/schema-utils.d.ts +6 -0
  407. package/dist/scanners/schema-utils.d.ts.map +1 -0
  408. package/dist/scanners/schema-utils.js +14 -0
  409. package/dist/scanners/schema-utils.js.map +1 -0
  410. package/dist/scanners/score-utils.d.ts +19 -0
  411. package/dist/scanners/score-utils.d.ts.map +1 -0
  412. package/dist/scanners/score-utils.js +47 -0
  413. package/dist/scanners/score-utils.js.map +1 -0
  414. package/dist/scanners/store/fs-utils.d.ts +12 -0
  415. package/dist/scanners/store/fs-utils.d.ts.map +1 -0
  416. package/dist/scanners/store/fs-utils.js +47 -0
  417. package/dist/scanners/store/fs-utils.js.map +1 -0
  418. package/dist/scanners/store/index.d.ts +5 -0
  419. package/dist/scanners/store/index.d.ts.map +1 -0
  420. package/dist/scanners/store/index.js +5 -0
  421. package/dist/scanners/store/index.js.map +1 -0
  422. package/dist/scanners/store/runtime-store.d.ts +50 -0
  423. package/dist/scanners/store/runtime-store.d.ts.map +1 -0
  424. package/dist/scanners/store/runtime-store.js +91 -0
  425. package/dist/scanners/store/runtime-store.js.map +1 -0
  426. package/dist/scanners/store/shared-artifact-store.d.ts +31 -0
  427. package/dist/scanners/store/shared-artifact-store.d.ts.map +1 -0
  428. package/dist/scanners/store/shared-artifact-store.js +89 -0
  429. package/dist/scanners/store/shared-artifact-store.js.map +1 -0
  430. package/dist/scanners/store/signal-store.d.ts +36 -0
  431. package/dist/scanners/store/signal-store.d.ts.map +1 -0
  432. package/dist/scanners/store/signal-store.js +135 -0
  433. package/dist/scanners/store/signal-store.js.map +1 -0
  434. package/dist/scanners/types.d.ts +115 -0
  435. package/dist/scanners/types.d.ts.map +1 -0
  436. package/dist/scanners/types.js +3 -0
  437. package/dist/scanners/types.js.map +1 -0
  438. package/dist/scripts/run-dsl-standalone-live.d.ts +27 -0
  439. package/dist/scripts/run-dsl-standalone-live.d.ts.map +1 -0
  440. package/dist/scripts/run-dsl-standalone-live.js +207 -0
  441. package/dist/scripts/run-dsl-standalone-live.js.map +1 -0
  442. package/dist/scripts/run-dsl-standalone-mock.d.ts +13 -0
  443. package/dist/scripts/run-dsl-standalone-mock.d.ts.map +1 -0
  444. package/dist/scripts/run-dsl-standalone-mock.js +255 -0
  445. package/dist/scripts/run-dsl-standalone-mock.js.map +1 -0
  446. package/dist/senpi/client.d.ts +77 -0
  447. package/dist/senpi/client.d.ts.map +1 -0
  448. package/dist/senpi/client.js +523 -0
  449. package/dist/senpi/client.js.map +1 -0
  450. package/dist/senpi/constants.d.ts +7 -0
  451. package/dist/senpi/constants.d.ts.map +1 -0
  452. package/dist/senpi/constants.js +7 -0
  453. package/dist/senpi/constants.js.map +1 -0
  454. package/dist/senpi/index.d.ts +3 -0
  455. package/dist/senpi/index.d.ts.map +1 -0
  456. package/dist/senpi/index.js +2 -0
  457. package/dist/senpi/index.js.map +1 -0
  458. package/dist/senpi/types.d.ts +132 -0
  459. package/dist/senpi/types.d.ts.map +1 -0
  460. package/dist/senpi/types.js +3 -0
  461. package/dist/senpi/types.js.map +1 -0
  462. package/dist/state/index.d.ts +3 -0
  463. package/dist/state/index.d.ts.map +1 -0
  464. package/dist/state/index.js +3 -0
  465. package/dist/state/index.js.map +1 -0
  466. package/dist/state/paths.d.ts +8 -0
  467. package/dist/state/paths.d.ts.map +1 -0
  468. package/dist/state/paths.js +19 -0
  469. package/dist/state/paths.js.map +1 -0
  470. package/dist/state/state-manager.d.ts +58 -0
  471. package/dist/state/state-manager.d.ts.map +1 -0
  472. package/dist/state/state-manager.js +221 -0
  473. package/dist/state/state-manager.js.map +1 -0
  474. package/dist/strategy/index.d.ts +2 -0
  475. package/dist/strategy/index.d.ts.map +1 -0
  476. package/dist/strategy/index.js +2 -0
  477. package/dist/strategy/index.js.map +1 -0
  478. package/dist/strategy/strategy-state.d.ts +48 -0
  479. package/dist/strategy/strategy-state.d.ts.map +1 -0
  480. package/dist/strategy/strategy-state.js +185 -0
  481. package/dist/strategy/strategy-state.js.map +1 -0
  482. package/dist/types/action.d.ts +15 -0
  483. package/dist/types/action.d.ts.map +1 -0
  484. package/dist/types/action.js +2 -0
  485. package/dist/types/action.js.map +1 -0
  486. package/dist/types/dsl/index.d.ts +215 -0
  487. package/dist/types/dsl/index.d.ts.map +1 -0
  488. package/dist/types/dsl/index.js +5 -0
  489. package/dist/types/dsl/index.js.map +1 -0
  490. package/dist/types/event-bus.d.ts +11 -0
  491. package/dist/types/event-bus.d.ts.map +1 -0
  492. package/dist/types/event-bus.js +6 -0
  493. package/dist/types/event-bus.js.map +1 -0
  494. package/dist/types/hooks.d.ts +27 -0
  495. package/dist/types/hooks.d.ts.map +1 -0
  496. package/dist/types/hooks.js +15 -0
  497. package/dist/types/hooks.js.map +1 -0
  498. package/dist/types/index.d.ts +6 -0
  499. package/dist/types/index.d.ts.map +1 -0
  500. package/dist/types/index.js +6 -0
  501. package/dist/types/index.js.map +1 -0
  502. package/dist/types/notification.d.ts +4 -0
  503. package/dist/types/notification.d.ts.map +1 -0
  504. package/dist/types/notification.js +3 -0
  505. package/dist/types/notification.js.map +1 -0
  506. package/dist/types/runtime.d.ts +18 -0
  507. package/dist/types/runtime.d.ts.map +1 -0
  508. package/dist/types/runtime.js +2 -0
  509. package/dist/types/runtime.js.map +1 -0
  510. package/dist/types/scanner.d.ts +59 -0
  511. package/dist/types/scanner.d.ts.map +1 -0
  512. package/dist/types/scanner.js +13 -0
  513. package/dist/types/scanner.js.map +1 -0
  514. package/dist/types/strategy.d.ts +100 -0
  515. package/dist/types/strategy.d.ts.map +1 -0
  516. package/dist/types/strategy.js +2 -0
  517. package/dist/types/strategy.js.map +1 -0
  518. package/dist/utils/logger/dsl.d.ts +8 -0
  519. package/dist/utils/logger/dsl.d.ts.map +1 -0
  520. package/dist/utils/logger/dsl.js +7 -0
  521. package/dist/utils/logger/dsl.js.map +1 -0
  522. package/dist/utils/logger.d.ts +13 -0
  523. package/dist/utils/logger.d.ts.map +1 -0
  524. package/dist/utils/logger.js +65 -0
  525. package/dist/utils/logger.js.map +1 -0
  526. package/dist/utils/response.d.ts +14 -0
  527. package/dist/utils/response.d.ts.map +1 -0
  528. package/dist/utils/response.js +44 -0
  529. package/dist/utils/response.js.map +1 -0
  530. package/dist/version.d.ts +2 -0
  531. package/dist/version.d.ts.map +1 -0
  532. package/dist/version.js +2 -0
  533. package/dist/version.js.map +1 -0
  534. package/examples/.env.example +15 -0
  535. package/examples/README.md +75 -0
  536. package/examples/scanners-consumer-quickstart.mjs +134 -0
  537. package/examples/scanners-emerging-movers-v4.mjs +285 -0
  538. package/examples/scanners-liquidation-watchdog.mjs +331 -0
  539. package/examples/scanners-live-mcp.mjs +208 -0
  540. package/examples/scanners-multi-strategy.mjs +165 -0
  541. package/examples/scanners-scheduled-events.mjs +95 -0
  542. package/examples/scanners-senpi-provider-client.mjs +182 -0
  543. package/examples/scanners-single-strategy.mjs +198 -0
  544. package/examples/strategies/README.md +45 -0
  545. package/examples/strategies/dsl-showcase.yaml +60 -0
  546. package/examples/strategies/fox-minimal-loosened.yaml +201 -0
  547. package/examples/strategies/fox-minimal.yaml +209 -0
  548. package/examples/strategies/minimal.yaml +49 -0
  549. package/examples/strategies/viper.yaml +64 -0
  550. package/examples/strategies/wolf.yaml +62 -0
  551. package/examples/yamls/sample-with-dsl-and-emerging-movers.yaml +116 -0
  552. package/openclaw.plugin.json +15 -0
  553. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senpi-commands.js","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
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 the rest of the runtime. */
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
+ };
11
+ export declare const DSL_EVENTS: {
12
+ readonly CREATED: "dsl.created";
13
+ readonly PHASE_CHANGED: "dsl.phase_changed";
14
+ readonly TIER_ADVANCED: "dsl.tier_advanced";
15
+ readonly SL_UPDATED: "dsl.sl_updated";
16
+ readonly CLOSED: "dsl.closed";
17
+ readonly CLOSE_PENDING: "dsl.close_pending";
18
+ readonly SETTINGS_UPDATED: "dsl.settings_updated";
19
+ };
20
+ export declare const DEFAULT_STATE_DIR = ".dsl-state";
21
+ export declare const DSL_STATE_VERSION = 2;
22
+ /** Close reasons for DSL state (closeReason) and position.closed (reason). */
23
+ export declare const CLOSE_REASON: {
24
+ readonly MANUAL_CLOSE: "manual_close";
25
+ readonly CLOSED_EXTERNALLY: "closed_externally";
26
+ readonly SL_HIT: "sl_hit";
27
+ readonly DSL_BREACH: "dsl_breach";
28
+ readonly FLIPPED: "flipped";
29
+ readonly CLOSE_POSITION_FAILED: "close_position_failed";
30
+ /** Phase 1 hard timeout elapsed. */
31
+ readonly PHASE1_TIMEOUT: "phase1_timeout";
32
+ /** Phase 1 weak peak cut (peak ROE below minValue and current < peak). */
33
+ readonly WEAK_PEAK_CUT: "weak_peak_cut";
34
+ /** Phase 1 dead weight cut (never gone positive after interval). */
35
+ readonly DEAD_WEIGHT_CUT: "dead_weight_cut";
36
+ };
37
+ export type CloseReason = (typeof CLOSE_REASON)[keyof typeof CLOSE_REASON];
38
+ export declare const MIN_INTERVAL_SECONDS = 5;
39
+ export declare const DEFAULT_INTERVAL_MS = 30000;
40
+ export declare const MAX_CONSECUTIVE_CLOSE_FAILURES = 3;
41
+ export declare const MCP_TOOL_PREFIX = "senpi.";
42
+ export declare const PHASE1_DEFAULT_BREACHES = 3;
43
+ export declare const PHASE2_DEFAULT_BREACHES = 1;
44
+ export declare const PRICE_DECIMALS = 4;
45
+ //# 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,8EAA8E;AAC9E,eAAO,MAAM,MAAM;;;;CAIT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC;AAEX,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,8EAA8E;AAC9E,eAAO,MAAM,YAAY;;;;;;;IAOvB,oCAAoC;;IAEpC,0EAA0E;;IAE1E,oEAAoE;;CAE5D,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAC3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,cAAc,IAAI,CAAC"}
@@ -0,0 +1,45 @@
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 the rest of the runtime. */
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
+ };
12
+ export const DSL_EVENTS = {
13
+ CREATED: "dsl.created",
14
+ PHASE_CHANGED: "dsl.phase_changed",
15
+ TIER_ADVANCED: "dsl.tier_advanced",
16
+ SL_UPDATED: "dsl.sl_updated",
17
+ CLOSED: "dsl.closed",
18
+ CLOSE_PENDING: "dsl.close_pending",
19
+ SETTINGS_UPDATED: "dsl.settings_updated",
20
+ };
21
+ export const DEFAULT_STATE_DIR = ".dsl-state";
22
+ export const DSL_STATE_VERSION = 2;
23
+ /** Close reasons for DSL state (closeReason) and position.closed (reason). */
24
+ export const CLOSE_REASON = {
25
+ MANUAL_CLOSE: "manual_close",
26
+ CLOSED_EXTERNALLY: "closed_externally",
27
+ SL_HIT: "sl_hit",
28
+ DSL_BREACH: "dsl_breach",
29
+ FLIPPED: "flipped",
30
+ CLOSE_POSITION_FAILED: "close_position_failed",
31
+ /** Phase 1 hard timeout elapsed. */
32
+ PHASE1_TIMEOUT: "phase1_timeout",
33
+ /** Phase 1 weak peak cut (peak ROE below minValue and current < peak). */
34
+ WEAK_PEAK_CUT: "weak_peak_cut",
35
+ /** Phase 1 dead weight cut (never gone positive after interval). */
36
+ DEAD_WEIGHT_CUT: "dead_weight_cut",
37
+ };
38
+ export const MIN_INTERVAL_SECONDS = 5;
39
+ export const DEFAULT_INTERVAL_MS = 30_000;
40
+ export const MAX_CONSECUTIVE_CLOSE_FAILURES = 3;
41
+ export const MCP_TOOL_PREFIX = "senpi.";
42
+ export const PHASE1_DEFAULT_BREACHES = 3;
43
+ export const PHASE2_DEFAULT_BREACHES = 1;
44
+ export const PRICE_DECIMALS = 4;
45
+ //# 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,8EAA8E;AAC9E,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,eAAe,EAAE,UAAU,CAAC,kBAAkB;IAC9C,gBAAgB,EAAE,UAAU,CAAC,mBAAmB;CACxC,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,aAAa;IACtB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB;IAClC,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,uBAAuB;IAC9C,oCAAoC;IACpC,cAAc,EAAE,gBAAgB;IAChC,0EAA0E;IAC1E,aAAa,EAAE,eAAe;IAC9B,oEAAoE;IACpE,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAGX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,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;AAQpB,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;CAUpC;AAID,wBAAgB,oBAAoB,IAAI,qBAAqB,CAO5D"}
@@ -0,0 +1,36 @@
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 { signalProvider } from "./providers/signal.provider.js";
8
+ import { strategyProvider } from "./providers/strategy.provider.js";
9
+ import { regimeProvider } from "./providers/regime.provider.js";
10
+ import { assetTrendProvider } from "./providers/asset-trend.provider.js";
11
+ // ─── RuntimeContextBuilder ──────────────────────────────────────────────────
12
+ export class RuntimeContextBuilder {
13
+ providers = new Map();
14
+ register(provider) {
15
+ this.providers.set(provider.type, provider);
16
+ }
17
+ async build(entries, request) {
18
+ const results = await Promise.all(entries.map(async (entry) => {
19
+ const provider = this.providers.get(entry.type);
20
+ if (!provider)
21
+ return [entry.value, null];
22
+ return [entry.value, await provider.resolve(request, entry)];
23
+ }));
24
+ return Object.fromEntries(results);
25
+ }
26
+ }
27
+ // ─── Factory ────────────────────────────────────────────────────────────────
28
+ export function createContextBuilder() {
29
+ const builder = new RuntimeContextBuilder();
30
+ builder.register(signalProvider);
31
+ builder.register(strategyProvider);
32
+ builder.register(regimeProvider);
33
+ builder.register(assetTrendProvider);
34
+ return builder;
35
+ }
36
+ //# 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,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,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,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAU,CAAC;QACxE,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,gBAAgB,CAAC,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjC,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, 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,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, 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,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,eA2ChC,CAAC"}
@@ -0,0 +1,94 @@
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
+ if (!request.readSharedArtifact) {
68
+ // Without artifact access, try to compute from event metadata
69
+ return null;
70
+ }
71
+ // The asset-trend provider needs candle data. Since context providers
72
+ // don't have direct access to candle providers, we return the asset
73
+ // information for the LLM to consider along with the signal metadata.
74
+ // The actual trend computation happens when candle data is available
75
+ // through the scanner module's signal metadata.
76
+ //
77
+ // If the signal has marketRegime metadata, use it as a proxy.
78
+ const meta = signal.meta;
79
+ if (meta?.marketRegime) {
80
+ return {
81
+ asset,
82
+ marketRegime: meta.marketRegime,
83
+ signalDirection: signal.direction,
84
+ signalScore: signal.score,
85
+ };
86
+ }
87
+ return {
88
+ asset,
89
+ signalDirection: signal.direction,
90
+ signalScore: signal.score,
91
+ };
92
+ },
93
+ };
94
+ //# 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 { strategyProvider } from "./strategy.provider.js";
3
+ export { regimeProvider } from "./regime.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,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,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 { strategyProvider } from "./strategy.provider.js";
3
+ export { regimeProvider } from "./regime.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,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAyB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { ContextProvider } from "../types.js";
2
+ /**
3
+ * Market regime context provider.
4
+ *
5
+ * Loads the `market-regime` shared artifact published by the market-regime
6
+ * scanner. Returns the current regime classification for use in action
7
+ * decision prompts and directional gating.
8
+ *
9
+ * entry.value is ignored — this provider always returns the current regime.
10
+ *
11
+ * Requires `readSharedArtifact` on the request. Returns null if unavailable.
12
+ */
13
+ export declare const regimeProvider: ContextProvider;
14
+ //# sourceMappingURL=regime.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regime.provider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/regime.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,EAAE,eAoB5B,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Market regime context provider.
3
+ *
4
+ * Loads the `market-regime` shared artifact published by the market-regime
5
+ * scanner. Returns the current regime classification for use in action
6
+ * decision prompts and directional gating.
7
+ *
8
+ * entry.value is ignored — this provider always returns the current regime.
9
+ *
10
+ * Requires `readSharedArtifact` on the request. Returns null if unavailable.
11
+ */
12
+ export const regimeProvider = {
13
+ type: "regime",
14
+ async resolve(request, _entry) {
15
+ if (!request.readSharedArtifact || !request.address)
16
+ return null;
17
+ const artifact = await request.readSharedArtifact(request.address, "market-regime");
18
+ if (!artifact)
19
+ return null;
20
+ return {
21
+ regime: artifact.regime,
22
+ confidence: artifact.confidence,
23
+ btcBias: artifact.btcBias,
24
+ ethBias: artifact.ethBias,
25
+ timestamp: artifact.timestamp,
26
+ };
27
+ },
28
+ };
29
+ //# sourceMappingURL=regime.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regime.provider.js","sourceRoot":"","sources":["../../../src/context/providers/regime.provider.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,IAAI,EAAE,QAAQ;IAEd,KAAK,CAAC,OAAO,CAAC,OAA+B,EAAE,MAAoB;QACjE,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAEjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAC/C,OAAO,CAAC,OAAO,EACf,eAAe,CAChB,CAAC;QACF,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;IACJ,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.value = 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,EAAE,eAAe,EAAwC,MAAM,aAAa,CAAC;AAGzF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,eAkB5B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Signal context provider.
3
+ * Resolves scanner signals by scanner name via ScannerRuntimeModule.
4
+ *
5
+ * entry.value = 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
+ // Prefer scannerModule for cross-scanner access
13
+ if (request.scannerModule) {
14
+ const signals = await request.scannerModule.querySignals({
15
+ scannerId: entry.value,
16
+ address: request.address,
17
+ });
18
+ return signals?.length ? signals : null;
19
+ }
20
+ // Fallback: extract from the triggering event's scanResult
21
+ const scanResult = request.event.data.scanResult;
22
+ if (!scanResult?.signals?.length)
23
+ return null;
24
+ return scanResult.signals;
25
+ },
26
+ };
27
+ //# 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":"AAGA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,IAAI,EAAE,QAAQ;IAEd,KAAK,CAAC,OAAO,CAAC,OAA+B,EAAE,KAAmB;QAChE,gDAAgD;QAChD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC;gBACvD,SAAS,EAAE,KAAK,CAAC,KAAK;gBACtB,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"}
@@ -0,0 +1,14 @@
1
+ import type { ContextProvider } from "../types.js";
2
+ /**
3
+ * Strategy context provider.
4
+ * Resolves strategy data slices from the live StrategyState.
5
+ *
6
+ * entry.value selects the data slice:
7
+ * "open_positions" → clearinghouse positions (fetched if needed)
8
+ * "clearinghouse" → account value, margin, unrealizedPnl, withdrawable
9
+ * "past_trades" → recent closed trades
10
+ * "open_orders" → open orders
11
+ * "details" → strategy details (name, status, PnL)
12
+ */
13
+ export declare const strategyProvider: ContextProvider;
14
+ //# sourceMappingURL=strategy.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.provider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/strategy.provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAwC,MAAM,aAAa,CAAC;AAEzF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA4D9B,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Strategy context provider.
3
+ * Resolves strategy data slices from the live StrategyState.
4
+ *
5
+ * entry.value selects the data slice:
6
+ * "open_positions" → clearinghouse positions (fetched if needed)
7
+ * "clearinghouse" → account value, margin, unrealizedPnl, withdrawable
8
+ * "past_trades" → recent closed trades
9
+ * "open_orders" → open orders
10
+ * "details" → strategy details (name, status, PnL)
11
+ */
12
+ export const strategyProvider = {
13
+ type: "strategy",
14
+ async resolve(request, entry) {
15
+ const state = request.strategyState;
16
+ if (!state)
17
+ return null;
18
+ switch (entry.value) {
19
+ case "open_positions": {
20
+ let positions = state.getOpenPositions();
21
+ if (!positions) {
22
+ const ch = await state.fetchClearinghouseState();
23
+ positions = ch?.positions;
24
+ }
25
+ return positions ?? null;
26
+ }
27
+ case "clearinghouse": {
28
+ let ch = state.getClearinghouseState();
29
+ if (!ch) {
30
+ ch = await state.fetchClearinghouseState();
31
+ }
32
+ if (!ch)
33
+ return null;
34
+ return {
35
+ accountValue: ch.accountValue,
36
+ totalMarginUsed: ch.totalMarginUsed,
37
+ totalUnrealizedPnl: ch.totalUnrealizedPnl,
38
+ totalNtlPos: ch.totalNtlPos,
39
+ withdrawable: ch.withdrawable,
40
+ };
41
+ }
42
+ case "past_trades": {
43
+ let trades = state.getPastTrades();
44
+ if (!trades) {
45
+ trades = await state.fetchPastTrades();
46
+ }
47
+ return trades ?? null;
48
+ }
49
+ case "open_orders": {
50
+ let orders = state.getOpenOrders();
51
+ if (!orders) {
52
+ orders = await state.fetchOpenOrders();
53
+ }
54
+ return orders ?? null;
55
+ }
56
+ case "details": {
57
+ let details = state.getDetails();
58
+ if (!details) {
59
+ details = await state.fetchDetails();
60
+ }
61
+ return details ?? null;
62
+ }
63
+ default:
64
+ return null;
65
+ }
66
+ },
67
+ };
68
+ //# sourceMappingURL=strategy.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.provider.js","sourceRoot":"","sources":["../../../src/context/providers/strategy.provider.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,UAAU;IAEhB,KAAK,CAAC,OAAO,CAAC,OAA+B,EAAE,KAAmB;QAChE,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,IAAI,SAAS,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,uBAAuB,EAAE,CAAC;oBACjD,SAAS,GAAG,EAAE,EAAE,SAAS,CAAC;gBAC5B,CAAC;gBACD,OAAO,SAAS,IAAI,IAAI,CAAC;YAC3B,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,IAAI,EAAE,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;gBACvC,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,EAAE,GAAG,MAAM,KAAK,CAAC,uBAAuB,EAAE,CAAC;gBAC7C,CAAC;gBACD,IAAI,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACrB,OAAO;oBACL,YAAY,EAAE,EAAE,CAAC,YAAY;oBAC7B,eAAe,EAAE,EAAE,CAAC,eAAe;oBACnC,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;oBACzC,WAAW,EAAE,EAAE,CAAC,WAAW;oBAC3B,YAAY,EAAE,EAAE,CAAC,YAAY;iBAC9B,CAAC;YACJ,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,MAAM,IAAI,IAAI,CAAC;YACxB,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC;gBACzC,CAAC;gBACD,OAAO,MAAM,IAAI,IAAI,CAAC;YACxB,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvC,CAAC;gBACD,OAAO,OAAO,IAAI,IAAI,CAAC;YACzB,CAAC;YAED;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { HookEvent } from "../types/hooks.js";
2
+ import type { StrategyState } from "../types/strategy.js";
3
+ import type { ScannerRuntimeModule } from "../scanners/runtime-module.js";
4
+ /** Single context entry from YAML — always an object with type + value. */
5
+ export interface ContextEntry {
6
+ type: string;
7
+ value: string;
8
+ }
9
+ /** Reads a shared artifact by key for the given strategy address. */
10
+ export type SharedArtifactReader = <T = unknown>(address: string, key: string) => Promise<T | null>;
11
+ /** Request passed to every context provider. */
12
+ export interface ContextProviderRequest {
13
+ event: HookEvent;
14
+ address?: string;
15
+ strategyState?: StrategyState;
16
+ scannerModule?: ScannerRuntimeModule;
17
+ /** Optional reader for scanner shared artifacts (e.g., market-regime). */
18
+ readSharedArtifact?: SharedArtifactReader;
19
+ }
20
+ /** A typed resolver that produces context data. */
21
+ export interface ContextProvider {
22
+ readonly type: string;
23
+ resolve(request: ContextProviderRequest, entry: ContextEntry): Promise<unknown>;
24
+ }
25
+ /** Builds combined context record from multiple providers. */
26
+ export interface ContextBuilder {
27
+ register(provider: ContextProvider): void;
28
+ build(entries: ContextEntry[], request: ContextProviderRequest): Promise<Record<string, unknown>>;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,OAAO,EAC7C,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAEvB,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;CAC3C;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjF;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnG"}