jesse 2.3.3__tar.gz → 2.3.4__tar.gz

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 (1088) hide show
  1. {jesse-2.3.3/jesse.egg-info → jesse-2.3.4}/PKG-INFO +1 -1
  2. {jesse-2.3.3 → jesse-2.3.4}/jesse/candle_pipelines/moving_block_bootstrap.py +7 -2
  3. {jesse-2.3.3 → jesse-2.3.4}/jesse/config.py +13 -5
  4. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/candles_controller.py +21 -2
  5. jesse-2.3.4/jesse/mcp/USAGE_LIMITS.md +147 -0
  6. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/backtest_management.md +1 -1
  7. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/monte_carlo.md +1 -1
  8. jesse-2.3.4/jesse/mcp/resources/optimization.md +222 -0
  9. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/__init__.py +4 -0
  10. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/backtest.py +5 -2
  11. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/monte_carlo.py +11 -2
  12. jesse-2.3.4/jesse/mcp/tools/optimization.py +285 -0
  13. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/__init__.py +13 -0
  14. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/backtest.py +2 -2
  15. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/candles.py +19 -1
  16. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/monte_carlo.py +6 -2
  17. jesse-2.3.4/jesse/mcp/tools/services/optimization.py +756 -0
  18. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/significance_test.py +2 -0
  19. jesse-2.3.4/jesse/mcp/usage_limits.py +462 -0
  20. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/backtest_mode.py +53 -15
  21. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/data_provider.py +47 -0
  22. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/__init__.py +40 -2
  23. jesse-2.3.4/jesse/modes/optimize_mode/__init__.py +165 -0
  24. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/significance_test_mode/__init__.py +39 -14
  25. jesse-2.3.4/jesse/version.py +1 -0
  26. {jesse-2.3.3 → jesse-2.3.4/jesse.egg-info}/PKG-INFO +1 -1
  27. {jesse-2.3.3 → jesse-2.3.4}/jesse.egg-info/SOURCES.txt +8 -0
  28. {jesse-2.3.3 → jesse-2.3.4}/setup.py +1 -1
  29. jesse-2.3.4/tests/test_config_safety.py +92 -0
  30. jesse-2.3.4/tests/test_mcp_usage_limits.py +325 -0
  31. jesse-2.3.4/tests/test_simulator_parity.py +79 -0
  32. jesse-2.3.3/jesse/modes/optimize_mode/__init__.py +0 -131
  33. jesse-2.3.3/jesse/version.py +0 -1
  34. {jesse-2.3.3 → jesse-2.3.4}/LICENSE +0 -0
  35. {jesse-2.3.3 → jesse-2.3.4}/MANIFEST.in +0 -0
  36. {jesse-2.3.3 → jesse-2.3.4}/README.md +0 -0
  37. {jesse-2.3.3 → jesse-2.3.4}/jesse/__init__.py +0 -0
  38. {jesse-2.3.3 → jesse-2.3.4}/jesse/candle_pipelines/__init__.py +0 -0
  39. {jesse-2.3.3 → jesse-2.3.4}/jesse/candle_pipelines/base_candles.py +0 -0
  40. {jesse-2.3.3 → jesse-2.3.4}/jesse/candle_pipelines/gaussian_noise.py +0 -0
  41. {jesse-2.3.3 → jesse-2.3.4}/jesse/candle_pipelines/gaussian_resampler.py +0 -0
  42. {jesse-2.3.3 → jesse-2.3.4}/jesse/cli.py +0 -0
  43. {jesse-2.3.3 → jesse-2.3.4}/jesse/constants.py +0 -0
  44. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/__init__.py +0 -0
  45. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/ai_model_controller.py +0 -0
  46. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/auth_controller.py +0 -0
  47. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/backtest_controller.py +0 -0
  48. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/closed_trade_controller.py +0 -0
  49. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/config_controller.py +0 -0
  50. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/exchange_controller.py +0 -0
  51. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/file_controller.py +0 -0
  52. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/live_controller.py +0 -0
  53. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/lsp_controller.py +0 -0
  54. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/monte_carlo_controller.py +0 -0
  55. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/notification_controller.py +0 -0
  56. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/optimization_controller.py +0 -0
  57. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/order_controller.py +0 -0
  58. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/significance_test_controller.py +0 -0
  59. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/strategy_controller.py +0 -0
  60. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/system_controller.py +0 -0
  61. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/tabs_controller.py +0 -0
  62. {jesse-2.3.3 → jesse-2.3.4}/jesse/controllers/websocket_controller.py +0 -0
  63. {jesse-2.3.3 → jesse-2.3.4}/jesse/enums/__init__.py +0 -0
  64. {jesse-2.3.3 → jesse-2.3.4}/jesse/exceptions/__init__.py +0 -0
  65. {jesse-2.3.3 → jesse-2.3.4}/jesse/exchanges/__init__.py +0 -0
  66. {jesse-2.3.3 → jesse-2.3.4}/jesse/exchanges/exchange.py +0 -0
  67. {jesse-2.3.3 → jesse-2.3.4}/jesse/exchanges/sandbox/Sandbox.py +0 -0
  68. {jesse-2.3.3 → jesse-2.3.4}/jesse/exchanges/sandbox/__init__.py +0 -0
  69. {jesse-2.3.3 → jesse-2.3.4}/jesse/factories/__init__.py +0 -0
  70. {jesse-2.3.3 → jesse-2.3.4}/jesse/factories/candle_factory.py +0 -0
  71. {jesse-2.3.3 → jesse-2.3.4}/jesse/factories/order_factory.py +0 -0
  72. {jesse-2.3.3 → jesse-2.3.4}/jesse/helpers.py +0 -0
  73. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/__init__.py +0 -0
  74. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/acosc.py +0 -0
  75. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ad.py +0 -0
  76. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/adosc.py +0 -0
  77. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/adx.py +0 -0
  78. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/adxr.py +0 -0
  79. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/alligator.py +0 -0
  80. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/alma.py +0 -0
  81. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ao.py +0 -0
  82. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/apo.py +0 -0
  83. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/aroon.py +0 -0
  84. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/aroonosc.py +0 -0
  85. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/atr.py +0 -0
  86. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/avgprice.py +0 -0
  87. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/bandpass.py +0 -0
  88. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/beta.py +0 -0
  89. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/bollinger_bands.py +0 -0
  90. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/bollinger_bands_width.py +0 -0
  91. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/bop.py +0 -0
  92. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cc.py +0 -0
  93. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cci.py +0 -0
  94. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cfo.py +0 -0
  95. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cg.py +0 -0
  96. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/chande.py +0 -0
  97. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/chop.py +0 -0
  98. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cksp.py +0 -0
  99. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cmo.py +0 -0
  100. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/correl.py +0 -0
  101. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/correlation_cycle.py +0 -0
  102. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cvi.py +0 -0
  103. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/cwma.py +0 -0
  104. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/damiani_volatmeter.py +0 -0
  105. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/dec_osc.py +0 -0
  106. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/decycler.py +0 -0
  107. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/dema.py +0 -0
  108. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/devstop.py +0 -0
  109. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/di.py +0 -0
  110. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/dm.py +0 -0
  111. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/donchian.py +0 -0
  112. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/dpo.py +0 -0
  113. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/dti.py +0 -0
  114. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/dx.py +0 -0
  115. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/edcf.py +0 -0
  116. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/efi.py +0 -0
  117. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ema.py +0 -0
  118. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/emd.py +0 -0
  119. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/emv.py +0 -0
  120. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/epma.py +0 -0
  121. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/er.py +0 -0
  122. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/eri.py +0 -0
  123. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/fisher.py +0 -0
  124. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/fosc.py +0 -0
  125. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/frama.py +0 -0
  126. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/fwma.py +0 -0
  127. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/gatorosc.py +0 -0
  128. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/gauss.py +0 -0
  129. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/heikin_ashi_candles.py +0 -0
  130. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/high_pass.py +0 -0
  131. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/high_pass_2_pole.py +0 -0
  132. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/hma.py +0 -0
  133. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/hull_suit.py +0 -0
  134. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/hurst_exponent.py +0 -0
  135. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/hwma.py +0 -0
  136. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ichimoku_cloud.py +0 -0
  137. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ichimoku_cloud_seq.py +0 -0
  138. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ift_rsi.py +0 -0
  139. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/itrend.py +0 -0
  140. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/jma.py +0 -0
  141. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/jsa.py +0 -0
  142. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/kama.py +0 -0
  143. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/kaufmanstop.py +0 -0
  144. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/kdj.py +0 -0
  145. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/keltner.py +0 -0
  146. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/kst.py +0 -0
  147. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/kurtosis.py +0 -0
  148. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/kvo.py +0 -0
  149. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/linearreg.py +0 -0
  150. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/linearreg_angle.py +0 -0
  151. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/linearreg_intercept.py +0 -0
  152. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/linearreg_slope.py +0 -0
  153. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/lrsi.py +0 -0
  154. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ma.py +0 -0
  155. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/maaq.py +0 -0
  156. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mab.py +0 -0
  157. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/macd.py +0 -0
  158. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mama.py +0 -0
  159. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/marketfi.py +0 -0
  160. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mass.py +0 -0
  161. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mcginley_dynamic.py +0 -0
  162. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mean_ad.py +0 -0
  163. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/median_ad.py +0 -0
  164. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/medprice.py +0 -0
  165. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mfi.py +0 -0
  166. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/midpoint.py +0 -0
  167. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/midprice.py +0 -0
  168. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/minmax.py +0 -0
  169. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mom.py +0 -0
  170. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/mwdx.py +0 -0
  171. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/natr.py +0 -0
  172. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/nma.py +0 -0
  173. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/nvi.py +0 -0
  174. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/obv.py +0 -0
  175. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/pfe.py +0 -0
  176. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/pivot.py +0 -0
  177. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/pma.py +0 -0
  178. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ppo.py +0 -0
  179. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/pvi.py +0 -0
  180. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/pwma.py +0 -0
  181. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/qstick.py +0 -0
  182. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/reflex.py +0 -0
  183. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rma.py +0 -0
  184. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/roc.py +0 -0
  185. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rocp.py +0 -0
  186. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rocr.py +0 -0
  187. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rocr100.py +0 -0
  188. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/roofing.py +0 -0
  189. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rsi.py +0 -0
  190. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rsmk.py +0 -0
  191. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rsx.py +0 -0
  192. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/rvi.py +0 -0
  193. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/safezonestop.py +0 -0
  194. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/sar.py +0 -0
  195. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/sinwma.py +0 -0
  196. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/skew.py +0 -0
  197. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/sma.py +0 -0
  198. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/smma.py +0 -0
  199. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/squeeze_momentum.py +0 -0
  200. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/sqwma.py +0 -0
  201. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/srsi.py +0 -0
  202. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/srwma.py +0 -0
  203. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/stc.py +0 -0
  204. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/stddev.py +0 -0
  205. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/stiffness.py +0 -0
  206. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/stochastic.py +0 -0
  207. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/stochf.py +0 -0
  208. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/supersmoother.py +0 -0
  209. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/supersmoother_3_pole.py +0 -0
  210. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/supertrend.py +0 -0
  211. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/support_resistance_with_break.py +0 -0
  212. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/swma.py +0 -0
  213. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/t3.py +0 -0
  214. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/tema.py +0 -0
  215. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/trange.py +0 -0
  216. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/trendflex.py +0 -0
  217. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/trima.py +0 -0
  218. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/trix.py +0 -0
  219. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/tsf.py +0 -0
  220. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/tsi.py +0 -0
  221. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ttm_squeeze.py +0 -0
  222. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ttm_trend.py +0 -0
  223. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/typprice.py +0 -0
  224. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ui.py +0 -0
  225. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/ultosc.py +0 -0
  226. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/var.py +0 -0
  227. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vi.py +0 -0
  228. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vidya.py +0 -0
  229. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vlma.py +0 -0
  230. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/volume.py +0 -0
  231. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vosc.py +0 -0
  232. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/voss.py +0 -0
  233. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vpci.py +0 -0
  234. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vpt.py +0 -0
  235. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vpwma.py +0 -0
  236. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vwap.py +0 -0
  237. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vwma.py +0 -0
  238. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/vwmacd.py +0 -0
  239. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/wad.py +0 -0
  240. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/waddah_attr_explosion.py +0 -0
  241. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/wclprice.py +0 -0
  242. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/wilders.py +0 -0
  243. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/willr.py +0 -0
  244. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/wma.py +0 -0
  245. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/wt.py +0 -0
  246. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/zlema.py +0 -0
  247. {jesse-2.3.3 → jesse-2.3.4}/jesse/indicators/zscore.py +0 -0
  248. {jesse-2.3.3 → jesse-2.3.4}/jesse/info.py +0 -0
  249. {jesse-2.3.3 → jesse-2.3.4}/jesse/libs/__init__.py +0 -0
  250. {jesse-2.3.3 → jesse-2.3.4}/jesse/libs/custom_json/__init__.py +0 -0
  251. {jesse-2.3.3 → jesse-2.3.4}/jesse/libs/dynamic_numpy_array/__init__.py +0 -0
  252. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/__init__.py +0 -0
  253. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/agent_rules.md +0 -0
  254. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/agent_rules.py +0 -0
  255. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/manager.py +0 -0
  256. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/mcp_config.py +0 -0
  257. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/__init__.py +0 -0
  258. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/backtest_metrics.md +0 -0
  259. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/candle.md +0 -0
  260. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/configuration.md +0 -0
  261. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/indicator.md +0 -0
  262. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/position_risk.md +0 -0
  263. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/significance_test.md +0 -0
  264. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/strategy.md +0 -0
  265. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/strategy_examples.md +0 -0
  266. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/resources/utilities.md +0 -0
  267. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/server.py +0 -0
  268. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/test.py +0 -0
  269. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/candles.py +0 -0
  270. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/config.py +0 -0
  271. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/general.py +0 -0
  272. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/indicator.py +0 -0
  273. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/auth.py +0 -0
  274. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/config.py +0 -0
  275. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/general.py +0 -0
  276. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/indicator.py +0 -0
  277. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/significance_test.py +0 -0
  278. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/services/strategy.py +0 -0
  279. {jesse-2.3.3 → jesse-2.3.4}/jesse/mcp/tools/strategy.py +0 -0
  280. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/AiModel.py +0 -0
  281. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/BacktestSession.py +0 -0
  282. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Candle.py +0 -0
  283. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/ClosedTrade.py +0 -0
  284. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Exchange.py +0 -0
  285. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/ExchangeApiKeys.py +0 -0
  286. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/FuturesExchange.py +0 -0
  287. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/LiveEquitySnapshot.py +0 -0
  288. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/LiveSession.py +0 -0
  289. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Log.py +0 -0
  290. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/MonteCarloSession.py +0 -0
  291. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/NotificationApiKeys.py +0 -0
  292. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/OpenTab.py +0 -0
  293. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/OptimizationSession.py +0 -0
  294. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Option.py +0 -0
  295. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Order.py +0 -0
  296. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Orderbook.py +0 -0
  297. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Position.py +0 -0
  298. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Route.py +0 -0
  299. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/SignificanceTestSession.py +0 -0
  300. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/SpotExchange.py +0 -0
  301. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Ticker.py +0 -0
  302. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/Trade.py +0 -0
  303. {jesse-2.3.3 → jesse-2.3.4}/jesse/models/__init__.py +0 -0
  304. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/__init__.py +0 -0
  305. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/exchange_api_keys.py +0 -0
  306. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetual.py +0 -0
  307. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualTestnet.py +0 -0
  308. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexProMain.py +0 -0
  309. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexProPerpetual.py +0 -0
  310. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexProPerpetualTestnet.py +0 -0
  311. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/__init__.py +0 -0
  312. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/apex_pro_utils.py +0 -0
  313. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/__init__.py +0 -0
  314. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-arm.dylib +0 -0
  315. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-x86.dylib +0 -0
  316. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.dylib +0 -0
  317. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.so +0 -0
  318. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-arm.py +0 -0
  319. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-pc.py +0 -0
  320. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-x86.py +0 -0
  321. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.dll +0 -0
  322. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.py +0 -0
  323. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceMain.py +0 -0
  324. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFutures.py +0 -0
  325. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFuturesTestnet.py +0 -0
  326. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceSpot.py +0 -0
  327. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceUSSpot.py +0 -0
  328. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/__init__.py +0 -0
  329. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Binance/binance_utils.py +0 -0
  330. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/BitfinexSpot.py +0 -0
  331. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/__init__.py +0 -0
  332. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/bitfinex_utils.py +0 -0
  333. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitMain.py +0 -0
  334. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpot.py +0 -0
  335. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpotTestnet.py +0 -0
  336. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetual.py +0 -0
  337. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetualTestnet.py +0 -0
  338. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetual.py +0 -0
  339. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetualTestnet.py +0 -0
  340. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/__init__.py +0 -0
  341. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/bybit_utils.py +0 -0
  342. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/CoinbaseSpot.py +0 -0
  343. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/__init__.py +0 -0
  344. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/coinbase_utils.py +0 -0
  345. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateSpot.py +0 -0
  346. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateSpotMain.py +0 -0
  347. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTMain.py +0 -0
  348. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTPerpetual.py +0 -0
  349. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Gate/__init__.py +0 -0
  350. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Gate/gate_utils.py +0 -0
  351. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetual.py +0 -0
  352. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualMain.py +0 -0
  353. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualTestnet.py +0 -0
  354. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/__init__.py +0 -0
  355. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/hyperliquid_utils.py +0 -0
  356. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterMain.py +0 -0
  357. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetual.py +0 -0
  358. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetualTestnet.py +0 -0
  359. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/__init__.py +0 -0
  360. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/lighter_utils.py +0 -0
  361. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/__init__.py +0 -0
  362. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-darwin-arm64.dylib +0 -0
  363. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-amd64.so +0 -0
  364. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-arm64.so +0 -0
  365. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-windows-amd64.dll +0 -0
  366. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/__init__.py +0 -0
  367. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/import_candles_mode/drivers/interface.py +0 -0
  368. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/monte_carlo_mode/MonteCarloRunner.py +0 -0
  369. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/monte_carlo_mode/__init__.py +0 -0
  370. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/notification_api_keys.py +0 -0
  371. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/optimize_mode/Optimize.py +0 -0
  372. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/optimize_mode/fitness.py +0 -0
  373. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/significance_test_mode/SignificanceTestRunner.py +0 -0
  374. {jesse-2.3.3 → jesse-2.3.4}/jesse/modes/utils.py +0 -0
  375. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/__init__.py +0 -0
  376. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/candle_repository.py +0 -0
  377. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/closed_trade_repository.py +0 -0
  378. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/live_equity_repository.py +0 -0
  379. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/live_session_repository.py +0 -0
  380. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/open_tab_repository.py +0 -0
  381. {jesse-2.3.3 → jesse-2.3.4}/jesse/repositories/order_repository.py +0 -0
  382. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/__init__.py +0 -0
  383. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/backtest.py +0 -0
  384. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/candles.py +0 -0
  385. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/import_candles.py +0 -0
  386. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/ml.py +0 -0
  387. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/monte_carlo/__init__.py +0 -0
  388. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/monte_carlo/common.py +0 -0
  389. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/monte_carlo/monte_carlo_candles.py +0 -0
  390. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/monte_carlo/monte_carlo_trades.py +0 -0
  391. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/optimize/__init__.py +0 -0
  392. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/rule_significance_testing/__init__.py +0 -0
  393. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/rule_significance_testing/bootstrap.py +0 -0
  394. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/rule_significance_testing/common.py +0 -0
  395. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/rule_significance_testing/plots.py +0 -0
  396. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/rule_significance_testing/rule_significance.py +0 -0
  397. {jesse-2.3.3 → jesse-2.3.4}/jesse/research/rule_significance_testing/simulator.py +0 -0
  398. {jesse-2.3.3 → jesse-2.3.4}/jesse/routes/__init__.py +0 -0
  399. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/__init__.py +0 -0
  400. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/api.py +0 -0
  401. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/auth.py +0 -0
  402. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/broker.py +0 -0
  403. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/cache.py +0 -0
  404. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/candle_service.py +0 -0
  405. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/charts.py +0 -0
  406. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/closed_trade_service.py +0 -0
  407. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/color.py +0 -0
  408. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/db.py +0 -0
  409. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/env.py +0 -0
  410. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/exchange_service.py +0 -0
  411. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/failure.py +0 -0
  412. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/file.py +0 -0
  413. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/general_info.py +0 -0
  414. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/installer.py +0 -0
  415. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/jesse_trade.py +0 -0
  416. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/logger.py +0 -0
  417. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/lsp.py +0 -0
  418. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/metrics.py +0 -0
  419. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/migrator.py +0 -0
  420. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/multiprocessing.py +0 -0
  421. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/notifier.py +0 -0
  422. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/order_service.py +0 -0
  423. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/position_service.py +0 -0
  424. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/progressbar.py +0 -0
  425. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/redis.py +0 -0
  426. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/report.py +0 -0
  427. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/strategy_handler/ExampleStrategy/__init__.py +0 -0
  428. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/strategy_handler/__init__.py +0 -0
  429. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/strategy_service.py +0 -0
  430. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/table.py +0 -0
  431. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/tradingview.py +0 -0
  432. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/transformers.py +0 -0
  433. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/validators.py +0 -0
  434. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/web.py +0 -0
  435. {jesse-2.3.3 → jesse-2.3.4}/jesse/services/ws_manager.py +0 -0
  436. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/200.html +0 -0
  437. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/404.html +0 -0
  438. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/-30QC5Em.js +0 -0
  439. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/-GAgPltI.js +0 -0
  440. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/2Hw4931b.js +0 -0
  441. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/2oJWbEOo.js +0 -0
  442. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/3TATJI7h.js +0 -0
  443. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/3e1v2bzS.js +0 -0
  444. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/3kbuJQcV.js +0 -0
  445. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/3xVqZejG.js +0 -0
  446. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/4Mf7C0D3.js +0 -0
  447. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/4OucEjoo.js +0 -0
  448. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/5LuOXUq_.js +0 -0
  449. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/5zVuxQ1w.js +0 -0
  450. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/727ZlQH0.js +0 -0
  451. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/7A4Fjokl.js +0 -0
  452. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/7O62HKoU.js +0 -0
  453. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/9C6ErRqt.js +0 -0
  454. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B-DoSBHF.js +0 -0
  455. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B-LnxVnd.js +0 -0
  456. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B-k3dvlD.js +0 -0
  457. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B-lZjTdr.js +0 -0
  458. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B0XVJmRM.js +0 -0
  459. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B0m2ddpp.js +0 -0
  460. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B0qRVHPH.js +0 -0
  461. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B14Poo8t.js +0 -0
  462. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B1SYOhNW.js +0 -0
  463. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B1bQXN8T.js +0 -0
  464. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B2Cf9XSq.js +0 -0
  465. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B2vK47Ag.js +0 -0
  466. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B39W0dQi.js +0 -0
  467. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B3S91Nkh.js +0 -0
  468. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B3ZDOciz.js +0 -0
  469. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B430Bg39.js +0 -0
  470. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B48N-Iqd.js +0 -0
  471. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B4VqtPa2.js +0 -0
  472. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B5HUNpoA.js +0 -0
  473. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B5auBHZD.js +0 -0
  474. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B5lbUyaz.js +0 -0
  475. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B5uW3Zvf.js +0 -0
  476. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B6W0miNI.js +0 -0
  477. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B7alP455.js +0 -0
  478. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B7mTdjB0.js +0 -0
  479. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B82gslCI.js +0 -0
  480. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B8ssZoUh.js +0 -0
  481. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B9wLZaAG.js +0 -0
  482. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BAng5TT0.js +0 -0
  483. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BC5c_5Pe.js +0 -0
  484. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BCrXIZq8.js +0 -0
  485. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BE9QQhgF.js +0 -0
  486. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BEBZ7ncR.js +0 -0
  487. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BEhvmC7f.js +0 -0
  488. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BFLt1xDp.js +0 -0
  489. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BFOHcciG.js +0 -0
  490. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BGBMSbrS.js +0 -0
  491. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BGLI1Hdo.js +0 -0
  492. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BHOwM8T6.js +0 -0
  493. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BHcFqGYU.js +0 -0
  494. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BHzLHzA5.js +0 -0
  495. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BIEUsx6d.js +0 -0
  496. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BILxekzW.js +0 -0
  497. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BJ4Li9vH.js +0 -0
  498. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BJGe-b2p.js +0 -0
  499. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BK9xJ97g.js +0 -0
  500. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BKlvTuyj.js +0 -0
  501. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BLhTXw86.js +0 -0
  502. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BLuZWbUW.js +0 -0
  503. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BMR_PYu6.js +0 -0
  504. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BMYPR7BL.js +0 -0
  505. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BMj5Y0dO.js +0 -0
  506. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BMl42z94.js +0 -0
  507. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BNHBcdi1.js +0 -0
  508. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BNVpGyOn.js +0 -0
  509. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BNioltXt.js +0 -0
  510. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BPT9niGB.js +0 -0
  511. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BPhBrDlE.js +0 -0
  512. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BQoSv7ci.js +0 -0
  513. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BQwtg7Y-.js +0 -0
  514. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BRk-K-rg.js +0 -0
  515. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BSxZ-RaX.js +0 -0
  516. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BTpWsGps.js +0 -0
  517. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BTwvJv7r.js +0 -0
  518. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BUEGK8hf.js +0 -0
  519. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BVUVsWT6.js +0 -0
  520. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BVr_1_27.js +0 -0
  521. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BVz_zdnA.js +0 -0
  522. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BWBTHuhh.js +0 -0
  523. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BWpeeIxA.js +0 -0
  524. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BX77sIaO.js +0 -0
  525. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BXSQBIz8.js +0 -0
  526. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BXW1EomU.js +0 -0
  527. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BXYnMxBe.js +0 -0
  528. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BXkSAIEj.js +0 -0
  529. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BY-TUvya.js +0 -0
  530. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BY6pwuIY.js +0 -0
  531. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BYtUz8ZP.js +0 -0
  532. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B_i9asfM.js +0 -0
  533. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/B_m7g4N7.js +0 -0
  534. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BacktestTabs.XpCeWK_e.css +0 -0
  535. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BbSNqyBO.js +0 -0
  536. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bc5xkKR1.js +0 -0
  537. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BdxkyMLR.js +0 -0
  538. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Be6lgOlo.js +0 -0
  539. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BeQkCIfX.js +0 -0
  540. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BfCpw3nA.js +0 -0
  541. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BfHTSMKl.js +0 -0
  542. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BfLuTCmN.js +0 -0
  543. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BfivnA6A.js +0 -0
  544. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BfjtVDDH.js +0 -0
  545. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bg-kzb6g.js +0 -0
  546. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BgDCqdQA.js +0 -0
  547. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BgYniUM_.js +0 -0
  548. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BiFfXF7O.js +0 -0
  549. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bid6LQhH.js +0 -0
  550. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BjABl1g7.js +0 -0
  551. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BjQB5zDj.js +0 -0
  552. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BknIz3MU.js +0 -0
  553. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bkuqu6BP.js +0 -0
  554. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bl1h29GH.js +0 -0
  555. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BlxRB_8X.js +0 -0
  556. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bo1m3BsC.js +0 -0
  557. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bo2ofWIv.js +0 -0
  558. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bo8A1zQE.js +0 -0
  559. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BoXegm-a.js +0 -0
  560. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bp6g37R7.js +0 -0
  561. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BpWG_bgh.js +0 -0
  562. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BrpqY1Pj.js +0 -0
  563. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BsOYHjMa.js +0 -0
  564. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BthQWCQV.js +0 -0
  565. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bu5BbsvL.js +0 -0
  566. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bu73EIfS.js +0 -0
  567. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BuapDI9Y.js +0 -0
  568. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BupSXVCO.js +0 -0
  569. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bvotw-X0.js +0 -0
  570. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bw0wYZmb.js +0 -0
  571. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bw305WKR.js +0 -0
  572. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BwXTMy5W.js +0 -0
  573. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BygKL3ZF.js +0 -0
  574. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BypH-vXm.js +0 -0
  575. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BzJJZx-M.js +0 -0
  576. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Bzb7OGdO.js +0 -0
  577. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/BzdBqhZe.js +0 -0
  578. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C-_shW-Y.js +0 -0
  579. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C-nORZOA.js +0 -0
  580. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C-wny61x.js +0 -0
  581. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C0YDwLjR.js +0 -0
  582. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C0nbwVuJ.js +0 -0
  583. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C1XDQQGZ.js +0 -0
  584. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C1tVc3UG.js +0 -0
  585. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C1w2a3ep.js +0 -0
  586. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C30yJ1fx.js +0 -0
  587. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C39BiMTA.js +0 -0
  588. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C3FkfJm5.js +0 -0
  589. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C3khCPGq.js +0 -0
  590. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C3mMm8J8.js +0 -0
  591. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C3t2pwGQ.js +0 -0
  592. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C5Y8tDhP.js +0 -0
  593. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C5wWYbrZ.js +0 -0
  594. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C6j12Q_x.js +0 -0
  595. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C75U4IDy.js +0 -0
  596. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C7L56vO4.js +0 -0
  597. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C7gG9l05.js +0 -0
  598. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C8M2exoo.js +0 -0
  599. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C8lEn-DE.js +0 -0
  600. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C9L3yaDO.js +0 -0
  601. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CA8MQk29.js +0 -0
  602. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CAQ2eGtk.js +0 -0
  603. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CB0Krxn9.js +0 -0
  604. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CB2ApiWb.js +0 -0
  605. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CC7BBK9k.js +0 -0
  606. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CCBS_C5_.js +0 -0
  607. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CDRgh1sM.js +0 -0
  608. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CD_QflpE.js +0 -0
  609. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CE8ZsA6f.js +0 -0
  610. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CEOY7oL4.js +0 -0
  611. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CG6Dc4jp.js +0 -0
  612. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CGVVOGHx.js +0 -0
  613. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CJaU5se_.js +0 -0
  614. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CKg9tqCS.js +0 -0
  615. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CM8KxXT1.js +0 -0
  616. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CMpz2oZS.js +0 -0
  617. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CMt9yHYq.js +0 -0
  618. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CN_Ckpq4.js +0 -0
  619. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/COJ4H7py.js +0 -0
  620. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/COK4E0Yg.js +0 -0
  621. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/COcR7UxN.js +0 -0
  622. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/COyJrUc7.js +0 -0
  623. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CPZi1zLr.js +0 -0
  624. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CQ0soPOq.js +0 -0
  625. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CQjiPCtT.js +0 -0
  626. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CS3Unz2-.js +0 -0
  627. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CSHBycmS.js +0 -0
  628. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CSp6iqVD.js +0 -0
  629. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CTNlIIiR.js +0 -0
  630. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CTRr51gU.js +0 -0
  631. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CTaRgM6i.js +0 -0
  632. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CUnW07Te.js +0 -0
  633. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CV9EbfTh.js +0 -0
  634. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CVO1_9PV.js +0 -0
  635. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CVw76BM1.js +0 -0
  636. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CXKOl_mN.js +0 -0
  637. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CYFUjXW1.js +0 -0
  638. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CYLhhvKT.js +0 -0
  639. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CYQontPO.js +0 -0
  640. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CYgUR4L5.js +0 -0
  641. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CZe0XNBd.js +0 -0
  642. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/C_scCXcs.js +0 -0
  643. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CafNBF8u.js +0 -0
  644. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CbfX1IO0.js +0 -0
  645. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cc5clBb7.js +0 -0
  646. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CdO5JTpU.js +0 -0
  647. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cf8iN4DR.js +0 -0
  648. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CfQXZHmo.js +0 -0
  649. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CfnpWUYo.js +0 -0
  650. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cgp1Zq-T.js +0 -0
  651. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Ci6OQyBP.js +0 -0
  652. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CircleProgressbar.Bqs-YaMH.css +0 -0
  653. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CjDtw9vr.js +0 -0
  654. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CkVqlDFX.js +0 -0
  655. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CkXjmgJE.js +0 -0
  656. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Ckkbw-AO.js +0 -0
  657. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ClGRhx96.js +0 -0
  658. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ClVF0v4p.js +0 -0
  659. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ClgVdteV.js +0 -0
  660. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CmCqftbK.js +0 -0
  661. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cnd3e8T2.js +0 -0
  662. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CpDEUYCj.js +0 -0
  663. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CrrKwR0a.js +0 -0
  664. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CsSk9TLD.js +0 -0
  665. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Csfq5Kiy.js +0 -0
  666. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CuFlys0T.js +0 -0
  667. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cuk6v7N8.js +0 -0
  668. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cv9koXgw.js +0 -0
  669. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CwjWoCRV.js +0 -0
  670. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CyIGOvEh.js +0 -0
  671. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CyVeKkvQ.js +0 -0
  672. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CyktbL80.js +0 -0
  673. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CyyQideA.js +0 -0
  674. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cz8P-rqG.js +0 -0
  675. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CzF1MCbP.js +0 -0
  676. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Cza_XSSt.js +0 -0
  677. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/CzouJOBO.js +0 -0
  678. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D-2ljcwZ.js +0 -0
  679. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D0UiDa5C.js +0 -0
  680. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D0r3Knsf.js +0 -0
  681. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D1J39qoi.js +0 -0
  682. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D2PfwrvU.js +0 -0
  683. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D2U3PnZ6.js +0 -0
  684. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D2Z7JJdl.js +0 -0
  685. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D4Tzg5kh.js +0 -0
  686. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D4h5O-jR.js +0 -0
  687. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D57wlKjU.js +0 -0
  688. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D5KoaKCx.js +0 -0
  689. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D5ZsypWT.js +0 -0
  690. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D5pd2Owo.js +0 -0
  691. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D7lU1fdU.js +0 -0
  692. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D7oLnXFd.js +0 -0
  693. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D8mZ0lfy.js +0 -0
  694. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D9-PGadD.js +0 -0
  695. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D9R-vmeu.js +0 -0
  696. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D9yiNO04.js +0 -0
  697. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DAi9KRSo.js +0 -0
  698. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DB0RB20n.js +0 -0
  699. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DBObHOpQ.js +0 -0
  700. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DBQeEorK.js +0 -0
  701. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DB_GagMm.js +0 -0
  702. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DCE3LsBG.js +0 -0
  703. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DDpSJMW6.js +0 -0
  704. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DDrv2Hr-.js +0 -0
  705. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DDtJtuOZ.js +0 -0
  706. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DEIpsLCJ.js +0 -0
  707. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DH5Ifo-i.js +0 -0
  708. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DHJKELXO.js +0 -0
  709. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DHo0CJ0O.js +0 -0
  710. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DIovg4uR.js +0 -0
  711. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DJlmqQ1C.js +0 -0
  712. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DKOGybHv.js +0 -0
  713. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DKXYxT9g.js +0 -0
  714. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DKykz6zU.js +0 -0
  715. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DLPipH_Q.js +0 -0
  716. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DLbgOhZU.js +0 -0
  717. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DLs3tTet.js +0 -0
  718. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DNquZEk8.js +0 -0
  719. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DOAuugfS.js +0 -0
  720. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DOk3G3cc.js +0 -0
  721. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DPvbFsQx.js +0 -0
  722. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DQ1-QYvQ.js +0 -0
  723. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DQPrWpt6.js +0 -0
  724. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DQVVAn-B.js +0 -0
  725. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DQsh_Aaj.js +0 -0
  726. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DRC6TkPh.js +0 -0
  727. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DREVFZK8.js +0 -0
  728. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DRNBmV_Q.js +0 -0
  729. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DRW-0cLl.js +0 -0
  730. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DRhBOlRY.js +0 -0
  731. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DRwtwsxC.js +0 -0
  732. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DUszq2jm.js +0 -0
  733. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DVG02705.js +0 -0
  734. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DVYH6Lj_.js +0 -0
  735. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DWGz5Zuj.js +0 -0
  736. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DWJ3fJO_.js +0 -0
  737. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DWXrMU9S.js +0 -0
  738. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DWedfzmr.js +0 -0
  739. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DXbdFlpD.js +0 -0
  740. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DYoNaHQp.js +0 -0
  741. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DYvnoCeB.js +0 -0
  742. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D_FR0PS1.js +0 -0
  743. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D_OY6ada.js +0 -0
  744. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/D_z4Izcz.js +0 -0
  745. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dayu4EKP.js +0 -0
  746. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DbXoA79R.js +0 -0
  747. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dbxjm_CC.js +0 -0
  748. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Ddv68eIx.js +0 -0
  749. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DeDIxzqb.js +0 -0
  750. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DeYg-96x.js +0 -0
  751. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Deuh7S70.js +0 -0
  752. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DfxzS6Rs.js +0 -0
  753. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dgyr3wWZ.js +0 -0
  754. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DhMKtDLN.js +0 -0
  755. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DhUJRlN_.js +0 -0
  756. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dhn9LcZ4.js +0 -0
  757. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dj6nwHGl.js +0 -0
  758. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DjGSmABO.js +0 -0
  759. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DjHMNizO.js +0 -0
  760. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DkBy-JyN.js +0 -0
  761. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DkLiglaE.js +0 -0
  762. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DmdQbaLT.js +0 -0
  763. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dmy2k9nq.js +0 -0
  764. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dn00JSTd.js +0 -0
  765. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DnULxvSX.js +0 -0
  766. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DoFvH58O.js +0 -0
  767. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DqwNpetd.js +0 -0
  768. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DrRCxMg5.js +0 -0
  769. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Drsz93k2.js +0 -0
  770. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Ds-gbosJ.js +0 -0
  771. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DsBKuouk.js +0 -0
  772. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DsWjAdsX.js +0 -0
  773. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dsg_Bt_b.js +0 -0
  774. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DtFQj3wx.js +0 -0
  775. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Du268qiB.js +0 -0
  776. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Du5NY7AG.js +0 -0
  777. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DvSxYeG4.js +0 -0
  778. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DwbJ8ElN.js +0 -0
  779. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DxSadP1t.js +0 -0
  780. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DxhURWN0.js +0 -0
  781. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DyIIwZ3D.js +0 -0
  782. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DyKutqhl.js +0 -0
  783. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/DyNMweEb.js +0 -0
  784. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dzg5qoeG.js +0 -0
  785. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Dzo8RikT.js +0 -0
  786. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/E3gJ1_iC.js +0 -0
  787. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/FNqbgIOG.js +0 -0
  788. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/GBQ2dnAY.js +0 -0
  789. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/HNqc6WRo.js +0 -0
  790. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/HnGAYVZD.js +0 -0
  791. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/HzYwdGDm.js +0 -0
  792. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/IWz_2f1F.js +0 -0
  793. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/IconCSS.RN4HczVp.css +0 -0
  794. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Inter-VariableFont_slnt_wght.Cl4AQHp9.ttf +0 -0
  795. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/IuBKFhSY.js +0 -0
  796. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/J9zdX7GW.js +0 -0
  797. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/JqZropPD.js +0 -0
  798. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/L9t79GZl.js +0 -0
  799. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/LGGdnPYs.js +0 -0
  800. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/LKU2TuZ1.js +0 -0
  801. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/LiveTabs.15UVtLVQ.css +0 -0
  802. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/MLM7CkNY.js +0 -0
  803. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/O1ng9rnZ.js +0 -0
  804. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/P4WzXJd0.js +0 -0
  805. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/PhLBBhN4.js +0 -0
  806. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Pj9gCBS1.js +0 -0
  807. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/PoHY5YXO.js +0 -0
  808. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Progress.CWZn3LuJ.css +0 -0
  809. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/QhoSD0DR.js +0 -0
  810. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/R900dpIa.js +0 -0
  811. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/SKMF96pI.js +0 -0
  812. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/SPD3sf1n.js +0 -0
  813. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/SZ2Mqkml.js +0 -0
  814. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/SmOacPCp.js +0 -0
  815. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/StrategiesSidebar.-h7ix9-v.css +0 -0
  816. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/T-Tgc4AT.js +0 -0
  817. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/TFAtbQgt.js +0 -0
  818. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/TU54ms6u.js +0 -0
  819. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/Tz6hzZYG.js +0 -0
  820. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/U3_6pjzv.js +0 -0
  821. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/UIAJJxZW.js +0 -0
  822. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/UL5zprDm.js +0 -0
  823. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/UMmp-gVE.js +0 -0
  824. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/VuadG5SK.js +0 -0
  825. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/XBlWyCtg.js +0 -0
  826. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/YJb9dmdj.js +0 -0
  827. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ZlaFEk-P.js +0 -0
  828. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ZvxA6pKh.js +0 -0
  829. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/_id_.BY-NJHml.css +0 -0
  830. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/_id_.DM7QJcru.css +0 -0
  831. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/_id_.J2oYSFWN.css +0 -0
  832. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ahYVQIuB.js +0 -0
  833. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ajMbGru0.js +0 -0
  834. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/atvbtKCR.js +0 -0
  835. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/bCA53EVm.js +0 -0
  836. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/bN70gL4F.js +0 -0
  837. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/beI9wp2w.js +0 -0
  838. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/cPjAOO0u.js +0 -0
  839. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/codicon.DCmgc-ay.ttf +0 -0
  840. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/din0uRiO.js +0 -0
  841. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/e4jU7D2d.js +0 -0
  842. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/eg146-Ew.js +0 -0
  843. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/entry.DZ1VJD8l.css +0 -0
  844. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/error-404.DZraUJun.css +0 -0
  845. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/error-500.XmAVHPl_.css +0 -0
  846. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/f0gtjltP.js +0 -0
  847. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/fje9CFhw.js +0 -0
  848. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/gFIMeB_R.js +0 -0
  849. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/gRuQeaLk.js +0 -0
  850. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ifBTmRxC.js +0 -0
  851. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/index.BCxjJPBI.css +0 -0
  852. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/index.BujPmbc0.css +0 -0
  853. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/index.DGzxCzt4.css +0 -0
  854. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/index.K8JdO5jA.css +0 -0
  855. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/index.lQPmb1y9.css +0 -0
  856. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/kKgrVRIu.js +0 -0
  857. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/logo-dark.tKoQPl1k.svg +0 -0
  858. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/logo-light.CS4l4ePq.png +0 -0
  859. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/m09vb5r-.js +0 -0
  860. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/m2LEI-9-.js +0 -0
  861. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/m4gc_qpA.js +0 -0
  862. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/m4uW47V2.js +0 -0
  863. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/mebxcVVE.js +0 -0
  864. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/nyqBNV6O.js +0 -0
  865. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/proSkrIW.js +0 -0
  866. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/pstGuDtS.js +0 -0
  867. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/qmhIZ77x.js +0 -0
  868. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/qpfuy3xp.js +0 -0
  869. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/sBY-W3BS.js +0 -0
  870. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/sacFqUAJ.js +0 -0
  871. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/sdHcTMYB.js +0 -0
  872. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/shcSOmrb.js +0 -0
  873. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/tRgbYopJ.js +0 -0
  874. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ul-Lp4lw.js +0 -0
  875. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/viurUhPG.js +0 -0
  876. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/w-ucz2PV.js +0 -0
  877. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/w4xAWTHa.js +0 -0
  878. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/w8dY5SsB.js +0 -0
  879. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/wI6OXr6j.js +0 -0
  880. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/xHi2X3m6.js +0 -0
  881. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/xI-RfyKK.js +0 -0
  882. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/xW4inM5L.js +0 -0
  883. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/xgbdnDAz.js +0 -0
  884. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/ySlJ1b_l.js +0 -0
  885. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/yf5bffbF.js +0 -0
  886. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/_nuxt/zocC4JxJ.js +0 -0
  887. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/favicon.ico +0 -0
  888. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/favicons/android-chrome-192x192.png +0 -0
  889. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/favicons/android-chrome-512x512.png +0 -0
  890. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/favicons/apple-touch-icon.png +0 -0
  891. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/favicons/favicon-16x16.png +0 -0
  892. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/favicons/favicon-32x32.png +0 -0
  893. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/index.html +0 -0
  894. {jesse-2.3.3 → jesse-2.3.4}/jesse/static/robots.txt +0 -0
  895. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/__init__.py +0 -0
  896. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_app.py +0 -0
  897. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_candles.py +0 -0
  898. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_closed_trades.py +0 -0
  899. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_exchanges.py +0 -0
  900. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_logs.py +0 -0
  901. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_orderbook.py +0 -0
  902. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_orders.py +0 -0
  903. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_positions.py +0 -0
  904. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_tickers.py +0 -0
  905. {jesse-2.3.3 → jesse-2.3.4}/jesse/store/state_trades.py +0 -0
  906. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/CanAddClosedTradeToStore/__init__.py +0 -0
  907. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Strategy.py +0 -0
  908. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test01/__init__.py +0 -0
  909. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test02/__init__.py +0 -0
  910. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test04/__init__.py +0 -0
  911. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test05/__init__.py +0 -0
  912. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test06/__init__.py +0 -0
  913. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test07/__init__.py +0 -0
  914. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test08/__init__.py +0 -0
  915. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test09/__init__.py +0 -0
  916. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test10/__init__.py +0 -0
  917. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test11/__init__.py +0 -0
  918. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test12/__init__.py +0 -0
  919. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test13/__init__.py +0 -0
  920. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test14/__init__.py +0 -0
  921. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test15/__init__.py +0 -0
  922. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test16/__init__.py +0 -0
  923. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test17/__init__.py +0 -0
  924. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test18/__init__.py +0 -0
  925. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test19/__init__.py +0 -0
  926. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test20/__init__.py +0 -0
  927. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test21/__init__.py +0 -0
  928. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test22/__init__.py +0 -0
  929. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test23/__init__.py +0 -0
  930. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test24/__init__.py +0 -0
  931. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test25/__init__.py +0 -0
  932. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test26/__init__.py +0 -0
  933. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test27/__init__.py +0 -0
  934. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test28/__init__.py +0 -0
  935. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test29/__init__.py +0 -0
  936. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test30/__init__.py +0 -0
  937. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test31/__init__.py +0 -0
  938. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test32/__init__.py +0 -0
  939. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test33/__init__.py +0 -0
  940. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test34/__init__.py +0 -0
  941. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test35/__init__.py +0 -0
  942. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test36/__init__.py +0 -0
  943. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test37/__init__.py +0 -0
  944. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test38/__init__.py +0 -0
  945. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test39/__init__.py +0 -0
  946. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test40/__init__.py +0 -0
  947. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test41/__init__.py +0 -0
  948. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test44/__init__.py +0 -0
  949. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test45/__init__.py +0 -0
  950. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test46/__init__.py +0 -0
  951. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test47/__init__.py +0 -0
  952. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/Test48/__init__.py +0 -0
  953. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestAddHorizontalLineToCandleChart/__init__.py +0 -0
  954. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestAddHorizontalLineToExtraChart/__init__.py +0 -0
  955. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestAddLineToCandleChart/__init__.py +0 -0
  956. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestAddLineToExtraChart/__init__.py +0 -0
  957. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestAfterMethod/__init__.py +0 -0
  958. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestAverageEntryPriceProperty/__init__.py +0 -0
  959. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestBalanceAndFeeReductionWorksCorrectlyInSpotModeInBothBuyAndSellOrders/__init__.py +0 -0
  960. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestBalancesAreHandledCorrectlyForCancellingOrdersInSpot/__init__.py +0 -0
  961. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestBaseAndQuoteAssetProperties/__init__.py +0 -0
  962. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestBeforeMethod/__init__.py +0 -0
  963. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestBeforeTerminate/__init__.py +0 -0
  964. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong1/__init__.py +0 -0
  965. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong2/__init__.py +0 -0
  966. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort1/__init__.py +0 -0
  967. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort2/__init__.py +0 -0
  968. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanOpenANewPositionImmediatelyAfterClosingViaUpdatePosition/__init__.py +0 -0
  969. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanRunWithoutShorting/__init__.py +0 -0
  970. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
  971. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
  972. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanSubmitTakeProfitAndStopLossAtSameTimeInSpot/__init__.py +0 -0
  973. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
  974. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
  975. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCannotSetStopLossOrderInGoLong/__init__.py +0 -0
  976. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCannotSetTakeProfitOrderInGoLong/__init__.py +0 -0
  977. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCannotSpendMoreThanAvailableBalance/__init__.py +0 -0
  978. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCannotSubmitStopLossOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
  979. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCannotSubmitTakeProfitOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
  980. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCapitalPropertyRaisesNotImplementedError/__init__.py +0 -0
  981. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestClosedTradeAfterExitingTrade/__init__.py +0 -0
  982. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCurrentRouteIndex1/__init__.py +0 -0
  983. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestCurrentRouteIndex2/__init__.py +0 -0
  984. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestDailyBalanceStoresPortfolioValue/__init__.py +0 -0
  985. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestDailyBalancesProperty/__init__.py +0 -0
  986. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestDataRoutes1/__init__.py +0 -0
  987. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestDataRoutes2/__init__.py +0 -0
  988. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestDefaultHyperparameters/__init__.py +0 -0
  989. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestDnaMethod/__init__.py +0 -0
  990. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestEmptyStrategy/__init__.py +0 -0
  991. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestEntryOrdersAndExitOrdersProperties/__init__.py +0 -0
  992. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestExchangeTypeProperty1/__init__.py +0 -0
  993. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestExchangeTypeProperty2/__init__.py +0 -0
  994. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestFuturesExchangeAvailableMargin/__init__.py +0 -0
  995. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestHasLongAndShortEntryOrdersPropertiesInFilters/__init__.py +0 -0
  996. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestHasLongEntryOrdersProperty/__init__.py +0 -0
  997. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestHasShortEntryOrdersProperty/__init__.py +0 -0
  998. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestIncreasedAndReducedCount/__init__.py +0 -0
  999. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestIncreasingShortPosition/__init__.py +0 -0
  1000. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestInsufficientMargin1/__init__.py +0 -0
  1001. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestInsufficientMargin2/__init__.py +0 -0
  1002. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestInsufficientMargin3/__init__.py +0 -0
  1003. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestLeverageProperty1/__init__.py +0 -0
  1004. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestLeverageProperty2/__init__.py +0 -0
  1005. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestLiquidationInCrossModeForShortTrade/__init__.py +0 -0
  1006. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestLiquidationInIsolatedModeForLongTrade/__init__.py +0 -0
  1007. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestLiquidationInIsolatedModeForShortTrade/__init__.py +0 -0
  1008. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestLogMethodInStrategyClass/__init__.py +0 -0
  1009. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestMarkPrice/__init__.py +0 -0
  1010. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestMarketOrderForLowPriceDifference/__init__.py +0 -0
  1011. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestMetrics1/__init__.py +0 -0
  1012. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryLongPositions/__init__.py +0 -0
  1013. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryShortPositions/__init__.py +0 -0
  1014. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOnCancelMethod/__init__.py +0 -0
  1015. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOnClosePosition/__init__.py +0 -0
  1016. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOnRouteOpenPosition/__init__.py +0 -0
  1017. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOnRouteOpenPosition2/__init__.py +0 -0
  1018. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOrderIsStopLossProperty/__init__.py +0 -0
  1019. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOrderIsTakeProfitProperty/__init__.py +0 -0
  1020. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOrderPriceCannotBeGreaterThanZero/__init__.py +0 -0
  1021. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOrderValueProperty/__init__.py +0 -0
  1022. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOrdersAreSortedBeforeExecution/__init__.py +0 -0
  1023. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestOversizedReduceOnlyExitAccounting/__init__.py +0 -0
  1024. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPortfolioValue/__init__.py +0 -0
  1025. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPortfolioValueIncludesPositionValueAndOpenOrdersValue/__init__.py +0 -0
  1026. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositionExchangeTypeProperty1/__init__.py +0 -0
  1027. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositionExchangeTypeProperty2/__init__.py +0 -0
  1028. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositionOpenIncreaseReduceCloseEventsInSpot/__init__.py +0 -0
  1029. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositionTotalCostProperty/__init__.py +0 -0
  1030. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositionWithLeverage1/__init__.py +0 -0
  1031. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositionWithLeverage2/__init__.py +0 -0
  1032. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestPositions/__init__.py +0 -0
  1033. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestProperBalanceHanldingInSpotAfterOrderCancellation/__init__.py +0 -0
  1034. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestReduceOnlyMarketOrders/__init__.py +0 -0
  1035. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestShortInSpot/__init__.py +0 -0
  1036. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceLongPosition/__init__.py +0 -0
  1037. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceShortPosition/__init__.py +0 -0
  1038. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestStopOrderShouldConsiderExecutedTakeProfitOrdersInSpot/__init__.py +0 -0
  1039. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestStrategyVariablesAreResetBeforeOpeningNewPosition/__init__.py +0 -0
  1040. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientLongPosition/__init__.py +0 -0
  1041. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientShortPosition/__init__.py +0 -0
  1042. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestTerminate/__init__.py +0 -0
  1043. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestUsageOfShouldCancelRaisesNotImplementedError/__init__.py +0 -0
  1044. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestVanillaStrategy/__init__.py +0 -0
  1045. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestWalletBalance/__init__.py +0 -0
  1046. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/TestWithoutCancelMethod/__init__.py +0 -0
  1047. {jesse-2.3.3 → jesse-2.3.4}/jesse/strategies/__init__.py +0 -0
  1048. {jesse-2.3.3 → jesse-2.3.4}/jesse/testing_utils.py +0 -0
  1049. {jesse-2.3.3 → jesse-2.3.4}/jesse/utils.py +0 -0
  1050. {jesse-2.3.3 → jesse-2.3.4}/jesse.egg-info/dependency_links.txt +0 -0
  1051. {jesse-2.3.3 → jesse-2.3.4}/jesse.egg-info/entry_points.txt +0 -0
  1052. {jesse-2.3.3 → jesse-2.3.4}/jesse.egg-info/requires.txt +0 -0
  1053. {jesse-2.3.3 → jesse-2.3.4}/jesse.egg-info/top_level.txt +0 -0
  1054. {jesse-2.3.3 → jesse-2.3.4}/requirements.txt +0 -0
  1055. {jesse-2.3.3 → jesse-2.3.4}/setup.cfg +0 -0
  1056. {jesse-2.3.3 → jesse-2.3.4}/tests/__init__.py +0 -0
  1057. {jesse-2.3.3 → jesse-2.3.4}/tests/data/__init__.py +0 -0
  1058. {jesse-2.3.3 → jesse-2.3.4}/tests/data/test_candles_0.py +0 -0
  1059. {jesse-2.3.3 → jesse-2.3.4}/tests/data/test_candles_1.py +0 -0
  1060. {jesse-2.3.3 → jesse-2.3.4}/tests/data/test_candles_indicators.py +0 -0
  1061. {jesse-2.3.3 → jesse-2.3.4}/tests/test_backtest.py +0 -0
  1062. {jesse-2.3.3 → jesse-2.3.4}/tests/test_broker.py +0 -0
  1063. {jesse-2.3.3 → jesse-2.3.4}/tests/test_candle_service.py +0 -0
  1064. {jesse-2.3.3 → jesse-2.3.4}/tests/test_chart_data_serialization.py +0 -0
  1065. {jesse-2.3.3 → jesse-2.3.4}/tests/test_completed_trade.py +0 -0
  1066. {jesse-2.3.3 → jesse-2.3.4}/tests/test_conflicting_orders.py +0 -0
  1067. {jesse-2.3.3 → jesse-2.3.4}/tests/test_dynamic_numpy_array.py +0 -0
  1068. {jesse-2.3.3 → jesse-2.3.4}/tests/test_exchange.py +0 -0
  1069. {jesse-2.3.3 → jesse-2.3.4}/tests/test_helpers.py +0 -0
  1070. {jesse-2.3.3 → jesse-2.3.4}/tests/test_import_candles.py +0 -0
  1071. {jesse-2.3.3 → jesse-2.3.4}/tests/test_indicators.py +0 -0
  1072. {jesse-2.3.3 → jesse-2.3.4}/tests/test_isolated_backtest.py +0 -0
  1073. {jesse-2.3.3 → jesse-2.3.4}/tests/test_lsp.py +0 -0
  1074. {jesse-2.3.3 → jesse-2.3.4}/tests/test_metrics.py +0 -0
  1075. {jesse-2.3.3 → jesse-2.3.4}/tests/test_order.py +0 -0
  1076. {jesse-2.3.3 → jesse-2.3.4}/tests/test_parent_strategy.py +0 -0
  1077. {jesse-2.3.3 → jesse-2.3.4}/tests/test_position.py +0 -0
  1078. {jesse-2.3.3 → jesse-2.3.4}/tests/test_research.py +0 -0
  1079. {jesse-2.3.3 → jesse-2.3.4}/tests/test_router.py +0 -0
  1080. {jesse-2.3.3 → jesse-2.3.4}/tests/test_spot_mode.py +0 -0
  1081. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_candle.py +0 -0
  1082. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_exchanges.py +0 -0
  1083. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_logs.py +0 -0
  1084. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_orderbook.py +0 -0
  1085. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_orders.py +0 -0
  1086. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_ticker.py +0 -0
  1087. {jesse-2.3.3 → jesse-2.3.4}/tests/test_state_trades.py +0 -0
  1088. {jesse-2.3.3 → jesse-2.3.4}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jesse
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: A trading framework for cryptocurrencies
5
5
  Home-page: https://jesse.trade
6
6
  Author: Saleh Mir
@@ -3,7 +3,7 @@ from .base_candles import BaseCandlesPipeline
3
3
 
4
4
 
5
5
  class MovingBlockBootstrapCandlesPipeline(BaseCandlesPipeline):
6
- def __init__(self, batch_size: int, **_ignored) -> None:
6
+ def __init__(self, batch_size: int, seed: int = None, **_ignored) -> None:
7
7
  """
8
8
  Generate synthetic candles by moving-block bootstrap on multivariate
9
9
  tuples of (delta_close, delta_high, delta_low).
@@ -14,6 +14,10 @@ class MovingBlockBootstrapCandlesPipeline(BaseCandlesPipeline):
14
14
  Size of the internal regeneration buffer in minutes. The pipeline
15
15
  derives a reasonable bootstrap block length from this, so there is
16
16
  no separate block-size argument.
17
+ seed : int, optional
18
+ Seed for the internal RNG. Leave None for independent random
19
+ scenarios (the normal case); pass an int for reproducible output
20
+ (used by tests asserting the fast and full simulators are identical).
17
21
  """
18
22
  super().__init__(batch_size)
19
23
 
@@ -25,7 +29,8 @@ class MovingBlockBootstrapCandlesPipeline(BaseCandlesPipeline):
25
29
  self._block_size = derived_block_size
26
30
 
27
31
  # Independent RNG per pipeline instance to avoid identical scenarios
28
- self._rng = np.random.default_rng()
32
+ # (seedable for reproducible tests).
33
+ self._rng = np.random.default_rng(seed)
29
34
 
30
35
  def _bootstrap_blocks(self, arr: np.ndarray, n: int) -> np.ndarray:
31
36
  """
@@ -137,20 +137,28 @@ def set_config(conf: dict) -> None:
137
137
  config['env']['logging'] = conf['logging']
138
138
  # exchanges
139
139
  for key, e in conf['exchanges'].items():
140
+ # The dashboard sends each exchange entry carrying its own 'name', but the
141
+ # exchanges map is keyed by exchange name and scripted/MCP callers pass the
142
+ # entries without a redundant 'name'. Fall back to the dict key so both the
143
+ # dashboard payload and the natural dict-keyed config (what /config returns)
144
+ # work. Without this, a missing 'name' raised KeyError deep inside a spawned
145
+ # backtest/RST worker, which then exited silently (the traceback was lost on
146
+ # the os._exit() that follows), leaving the MCP/dashboard session stuck.
147
+ name = e.get('name') or key
140
148
  if not jh.is_live() and e['type']:
141
149
  exchange_type = e['type']
142
150
  else:
143
- exchange_type = get_exchange_type(e['name'])
144
- config['env']['exchanges'][e['name']] = {
151
+ exchange_type = get_exchange_type(name)
152
+ config['env']['exchanges'][name] = {
145
153
  'fee': float(e['fee']),
146
154
  'type': exchange_type,
147
155
  'balance': float(e['balance'])
148
156
  }
149
- if config['env']['exchanges'][e['name']]['type'] == 'futures':
157
+ if config['env']['exchanges'][name]['type'] == 'futures':
150
158
  # 1x, 2x, 10x, 50x, etc. Enter as integers
151
- config['env']['exchanges'][e['name']]['futures_leverage'] = int(e.get('futures_leverage', 1))
159
+ config['env']['exchanges'][name]['futures_leverage'] = int(e.get('futures_leverage', 1))
152
160
  # accepted values are: 'cross' and 'isolated'
153
- config['env']['exchanges'][e['name']]['futures_leverage_mode'] = e.get('futures_leverage_mode', 'cross')
161
+ config['env']['exchanges'][name]['futures_leverage_mode'] = e.get('futures_leverage_mode', 'cross')
154
162
 
155
163
  # live mode only
156
164
  if jh.is_live():
@@ -96,10 +96,29 @@ def get_candle_import_status(request_json: CancelRequestJson, authorization: Opt
96
96
  return authenticator.unauthorized_response()
97
97
 
98
98
  running = bool(is_process_active(request_json.id))
99
- return JSONResponse({
99
+ response = {
100
100
  'import_id': request_json.id,
101
101
  'status': 'running' if running else 'finished',
102
- }, status_code=200)
102
+ }
103
+
104
+ # Attach live progress (percent complete, ETA, date reached so far) when the import
105
+ # is still running so callers can see real movement instead of a blind "running".
106
+ # When finished, clean up any lingering progress key.
107
+ import json
108
+ from jesse.services.redis import sync_redis
109
+ from jesse.modes.import_candles_mode import candle_import_progress_key
110
+ progress_key = candle_import_progress_key(request_json.id)
111
+ try:
112
+ if running:
113
+ raw = sync_redis.get(progress_key)
114
+ if raw:
115
+ response['progress'] = json.loads(raw)
116
+ else:
117
+ sync_redis.delete(progress_key)
118
+ except Exception:
119
+ pass
120
+
121
+ return JSONResponse(response, status_code=200)
103
122
 
104
123
 
105
124
  @router.post("/existing")
@@ -0,0 +1,147 @@
1
+ # MCP Usage Limits
2
+
3
+ The Jesse MCP server meters the *expensive* research-run tools so free-plan
4
+ users get a generous DAILY credit budget while premium users are unlimited.
5
+
6
+ ## What is metered
7
+
8
+ Each of these four "run" tools costs **1 credit** — no weighting:
9
+
10
+ | Tool | Credits |
11
+ |--------------------------|---------|
12
+ | `run_backtest` | 1 |
13
+ | `run_significance_test` | 1 |
14
+ | `run_monte_carlo` | 1 |
15
+ | `run_optimization` | 1 |
16
+
17
+ Everything else (config/candle/strategy/indicator reads, *draft*
18
+ creation/updates, status polls, `get_*_session`, logs, cancel/terminate,
19
+ purge, …) is FREE and unmetered.
20
+
21
+ Daily budgets (UTC day): **guests = 0** (no research runs without an account),
22
+ **free (logged-in) = 100**; any paid plan is **unlimited**.
23
+
24
+ All of the above are config constants in `jesse/mcp/usage_limits.py` and are
25
+ overridable via environment variables:
26
+
27
+ | Env var | Default | Meaning |
28
+ |--------------------------------------|---------|----------------------------------|
29
+ | `MCP_GUEST_DAILY_CREDITS` | 0 | Daily budget for guests (no token); 0 = needs an account|
30
+ | `MCP_FREE_DAILY_CREDITS` | 100 | Daily budget for free (logged-in)|
31
+ | `MCP_CREDIT_WEIGHT_BACKTEST` | 1 | Credit cost of `run_backtest` |
32
+ | `MCP_CREDIT_WEIGHT_SIGNIFICANCE_TEST`| 1 | Credit cost of `run_significance_test`|
33
+ | `MCP_CREDIT_WEIGHT_MONTE_CARLO` | 1 | Credit cost of `run_monte_carlo` |
34
+ | `MCP_CREDIT_WEIGHT_OPTIMIZATION` | 1 | Credit cost of `run_optimization`|
35
+ | `MCP_USAGE_METER` | local | Meter backend: `local` or `remote` |
36
+
37
+ ## How a user's plan is determined
38
+
39
+ Reuses Jesse's existing license system — a **read of an existing endpoint; nothing
40
+ is added on the backend**. `get_user_plan()` calls
41
+ `POST {JESSE_API_URL}/v2/user-info` with `Authorization: Bearer <LICENSE_API_TOKEN>`
42
+ (the same endpoint `jesse.services.general_info.get_general_info` already uses) and
43
+ reads the `plan` field (`free` / `guest` / `basic` / `pro` / `enterprise` /
44
+ `lifetime` / `premium` / …).
45
+
46
+ - Any PAID plan (anything that isn't `free`/`guest`) → always allowed (unlimited).
47
+ - **`free`** (logged in, not paid) → metered at the free budget (100/day); the
48
+ over-limit message notes that premium has no daily limit.
49
+ - **`guest`** — i.e. NO license token at all → guest budget is **0** by default, so
50
+ guests get **no research runs**; the message states that a free account is required.
51
+ A missing token means *guest*, NOT *error*, so this is deliberately not fail-open.
52
+ - **Plan undetermined** — a real backend error (token present but `/v2/user-info`
53
+ is unreachable / non-200 / malformed) → **FAIL OPEN** (allow the run, log a
54
+ warning). We never block a legit user because our own metering plumbing is down —
55
+ a soft limit, not a hard wall.
56
+
57
+ > The whole feature is **client-side**: the counter lives in the user's own Redis
58
+ > (see below) and the plan comes from the existing license read above. No new
59
+ > backend endpoint is required. A determined user can bypass a client-side limit;
60
+ > that's an accepted trade-off for a lenient, client-side limit.
61
+
62
+ ## Limit-reached response
63
+
64
+ When a user is over budget, the gated tool returns this structured dict (it does
65
+ NOT raise — that would break the MCP client). The `message` and `is_guest` differ
66
+ for guests (a free account is required) vs free users (premium has no daily limit):
67
+
68
+ ```json
69
+ {
70
+ "status": "limit_reached",
71
+ "message": "Daily free-plan limit reached (X of 100 research runs used today). Upgrade to premium for unlimited runs. Resets at 00:00 UTC.",
72
+ "used": 100,
73
+ "limit": 100,
74
+ "is_guest": false,
75
+ "reset_at": "2026-06-06T00:00:00+00:00"
76
+ }
77
+ ```
78
+
79
+ ## Meter backends
80
+
81
+ The counter lives behind a small `UsageMeter` interface with two
82
+ implementations, selected via `MCP_USAGE_METER`:
83
+
84
+ ### `local` (default) — `LocalUsageMeter`
85
+
86
+ Redis-backed daily counter (reuses `jesse.services.redis.sync_redis`).
87
+ One key per user/day: `jesse:mcp:usage:<user_id>:<YYYY-MM-DD>`, where
88
+ `<user_id>` is the `LICENSE_API_TOKEN` (or `anonymous`). The key is `INCRBY`'d
89
+ by the run's cost (1 credit) and given a TTL that expires at the next 00:00 UTC,
90
+ so the counter self-resets daily.
91
+
92
+ > **Security note:** the local meter is *bypassable* — the MCP server runs on
93
+ > the user's own machine and they control Redis. It is a soft/honest limit
94
+ > only. For a real, enforced limit use the remote meter below.
95
+
96
+ ### `remote` — `RemoteUsageMeter`
97
+
98
+ Delegates check+consume to the license backend, which owns the counter and is
99
+ authoritative (tamper-proof). **This backend endpoint does not exist yet** —
100
+ the client is written against the contract below for the backend team to
101
+ implement. Switch on with `export MCP_USAGE_METER=remote`.
102
+
103
+ #### Backend contract (to be implemented)
104
+
105
+ **Request**
106
+
107
+ ```
108
+ POST {JESSE_API_URL}/mcp-usage/consume
109
+ Authorization: Bearer <LICENSE_API_TOKEN>
110
+ Content-Type: application/json
111
+
112
+ { "credits": 1 }
113
+ ```
114
+
115
+ - The license token identifies the user. The backend looks up the user's plan.
116
+ - `credits` is the cost of the run the user is about to do (always 1 today).
117
+
118
+ **Behaviour**
119
+
120
+ - `premium` users: always `allowed: true` (the backend may skip counting).
121
+ - `free`/`guest` users: atomically check the user's daily budget and, if there
122
+ is room, consume `credits`. If consuming would exceed the limit, do NOT
123
+ consume and return `allowed: false`.
124
+ - The counter resets at 00:00 UTC each day.
125
+
126
+ **Response** (HTTP 200)
127
+
128
+ ```json
129
+ {
130
+ "allowed": true,
131
+ "used": 15,
132
+ "limit": 100,
133
+ "reset_at": "2026-06-06T00:00:00+00:00"
134
+ }
135
+ ```
136
+
137
+ | Field | Type | Meaning |
138
+ |------------|---------|------------------------------------------------------------|
139
+ | `allowed` | bool | Whether the run may proceed. |
140
+ | `used` | int | Credits used today (after this consume if allowed). |
141
+ | `limit` | int | The user's daily limit (omit/null for unlimited/premium). |
142
+ | `reset_at` | string | ISO8601 timestamp of the next reset (next 00:00 UTC). |
143
+
144
+ **Fail-open:** if the backend returns a non-200, non-JSON, or is unreachable,
145
+ the MCP client ALLOWS the run (and logs a warning) so transient backend issues
146
+ never block legit users.
147
+ ```
@@ -30,7 +30,7 @@ Default Configuration:
30
30
  "export_json": false,
31
31
  "export_chart": true,
32
32
  "export_tradingview": false,
33
- "fast_mode": false,
33
+ "fast_mode": true,
34
34
  "benchmark": true
35
35
  }
36
36
  ```
@@ -125,7 +125,7 @@ Stages a draft you can then run.
125
125
  - `num_scenarios` — int (default **200**, recommend 200–1000)
126
126
  - `run_trades` — bool (default **False**)
127
127
  - `run_candles` — bool (default **True**)
128
- - `fast_mode` — bool (default False; skip charts/heavy outputs)
128
+ - `fast_mode` — bool (default **True**; fast resampling-and-replay path, robust on synthetic candles — recommended)
129
129
  - `cpu_cores` — int (default: `cpu_count - 1`, capped at 4)
130
130
  - `pipeline_type` — str (default `"moving_block_bootstrap"`)
131
131
  - `pipeline_params` — optional JSON object string
@@ -0,0 +1,222 @@
1
+ # Hyperparameter Optimization via MCP
2
+
3
+ Optimization tunes a strategy's `hyperparameters()` to maximize an objective
4
+ (Sharpe by default) on a **training** window, and reports each candidate's
5
+ **out-of-sample** performance on a separate **testing** window. The train/test
6
+ split is the whole point: it lets you tell a genuinely good parameter set apart
7
+ from one that's overfit to the training data.
8
+
9
+ It answers: "what parameter values work best for this strategy, and do they hold
10
+ up on data they weren't tuned on?"
11
+
12
+ ## Preconditions (read before creating a draft)
13
+
14
+ 1. **The strategy must declare a non-empty `hyperparameters()`** list — that list
15
+ is what gets optimized. A strategy with no hyperparameters cannot be optimized
16
+ and the run stops with an `InvalidStrategy` error. Each entry looks like:
17
+ ```python
18
+ def hyperparameters(self):
19
+ return [
20
+ {'name': 'fast_period', 'type': int, 'min': 5, 'max': 25, 'default': 10},
21
+ {'name': 'slow_period', 'type': int, 'min': 26, 'max': 60, 'default': 30},
22
+ ]
23
+ ```
24
+ Types: `int`, `float`, or `categorical` (with an `options` list). The strategy
25
+ reads the chosen values via `self.hp['name']`.
26
+ 2. **Candles must exist for BOTH windows** (training and testing), plus ~warm-up
27
+ candles before each start. Don't pre-check — run it; on a candle shortage the
28
+ session stops with a clear message telling you exactly what to import, then
29
+ `import_candles()` and `rerun_optimization()`.
30
+
31
+ ## Key concepts
32
+
33
+ | Concept | What it means |
34
+ |---|---|
35
+ | **Training window** | `training_start_date` → `training_finish_date`. The in-sample period the optimizer tunes on. |
36
+ | **Testing window** | `testing_start_date` → `testing_finish_date`. The out-of-sample period each candidate is re-evaluated on (not used for tuning). Conventionally `testing_start_date == training_finish_date` (contiguous), but any non-overlapping ranges are fine. |
37
+ | **objective_function** | What to maximize. One of `sharpe` (default), `calmar`, `sortino`, `omega`, `serenity`, `smart sharpe`, `smart sortino`. |
38
+ | **trials** | Trials **per hyperparameter**. Total trials = `n_hyperparameters × trials`. With 2 hyperparameters and `trials=200`, the optimizer runs 400 trials. Lower it (e.g. 20–50) for a quick exploratory run. |
39
+ | **best_candidates** | The ranked top parameter sets, each with training AND testing metrics. |
40
+
41
+ ## Interpreting best_candidates (overfit detection)
42
+
43
+ Each finished session exposes `best_candidates`, ranked best-first by the
44
+ objective on the training window. The critical read is **training vs testing**:
45
+
46
+ | Pattern | Verdict |
47
+ |---|---|
48
+ | Strong on training **and** testing holds up close to training | **Trustworthy.** The parameters generalize — this is what you want. |
49
+ | Strong on training, **much weaker / negative on testing** | **Overfit.** Tuned to noise in the training window; don't deploy. |
50
+ | Mediocre on both | No edge from these parameters — the strategy/idea may not work. |
51
+ | Weak on training but strong on testing | Usually luck on the test window; treat with suspicion, prefer consistency. |
52
+
53
+ Each candidate carries:
54
+ - `rank` (`#1` is best by the training objective), `trial`, `params` (the tuned
55
+ values), `fitness` (the objective score), `dna` (a compact encoding),
56
+ - `training_metrics` and `testing_metrics` (full metric dicts each),
57
+ - `objective_metric` — a convenient `"<train> / <test>"` summary on the chosen
58
+ objective.
59
+
60
+ **Don't just pick rank #1.** Rank is by *training* fitness; the right choice is
61
+ the candidate whose **testing** metrics hold up best relative to its training
62
+ metrics (smallest train→test degradation), among the strong performers.
63
+
64
+ ## Tool reference
65
+
66
+ ### create_optimization_draft()
67
+ Stages a draft you can then run.
68
+ - `exchange` (default `"Binance Perpetual Futures"`)
69
+ - `routes` — JSON string array of route objects
70
+ - `data_routes` — JSON string array (default `"[]"`)
71
+ - `training_start_date`, `training_finish_date` — `YYYY-MM-DD`
72
+ - `testing_start_date`, `testing_finish_date` — `YYYY-MM-DD`
73
+ - `optimal_total` — int, target number of best candidates to surface (default 50)
74
+ - `objective_function` — str (default `"sharpe"`; see list above)
75
+ - `trials` — int, per hyperparameter (default 200)
76
+ - `best_candidates_count` — int (default 20)
77
+ - `warm_up_candles` — int (default 210)
78
+ - `fast_mode` — bool (default True)
79
+ - `cpu_cores` — int (default `cpu_count - 1`, capped at 4)
80
+ - `title`, `description`, `strategy_summary`, `hypothesis`, `rationale` — optional
81
+ notes metadata; auto-generated if omitted
82
+
83
+ Returns: `{ "status": "success", "session_id": "<uuid>", ... }`
84
+
85
+ ### update_optimization_draft(session_id, state)
86
+ Replace the whole `state` on an existing draft (read-modify-write).
87
+
88
+ ### update_optimization_notes(session_id, title?, description?, strategy_codes?)
89
+ Update notes — typically to record the chosen parameters and conclusion.
90
+
91
+ ### get_optimization_session(session_id)
92
+ Fetch full details — the primary polling tool.
93
+ ```json
94
+ {
95
+ "data": { "session": {
96
+ "id": "<uuid>",
97
+ "status": "running",
98
+ "completed_trials": 120,
99
+ "total_trials": 400,
100
+ "best_candidates": [
101
+ { "rank": "#1", "trial": "Trial 18",
102
+ "params": {"fast_period": 12, "slow_period": 35},
103
+ "fitness": 0.48, "dna": "...",
104
+ "training_metrics": {"sharpe_ratio": 2.13, "total": 38, ...},
105
+ "testing_metrics": {"sharpe_ratio": 1.72, "total": 17, ...},
106
+ "objective_metric": "2.13 / 1.72" }
107
+ ],
108
+ "objective_curve": [...],
109
+ "exception": null, "traceback": null
110
+ } },
111
+ "error": null, "message": "Optimization session retrieved successfully"
112
+ }
113
+ ```
114
+
115
+ ### get_optimization_sessions(limit?, offset?, title_search?, status_filter?, date_filter?)
116
+ List sessions (most recent first). `status_filter`: `draft`, `running`, `paused`,
117
+ `finished`, `stopped`, `terminated`.
118
+
119
+ ### get_optimization_logs(session_id)
120
+ Fetch the log file content. Useful when `status == "stopped"` to find the
121
+ underlying error, or to watch trial-by-trial progress on a long run.
122
+
123
+ ### run_optimization(session_id)
124
+ Fire-and-poll. Returns `{ "status": "started", ... }` when the server accepts.
125
+ Then keep checking `get_optimization_session` until a terminal status. See
126
+ "Checking for results" below.
127
+
128
+ ### rerun_optimization(session_id)
129
+ Reset (clears prior trials/best_candidates) and restart an existing session. Use
130
+ this to run a finished/stopped session again — e.g. after importing missing
131
+ candles or editing the strategy. Cancel a running session first.
132
+
133
+ ### cancel_optimization(session_id)
134
+ Cooperative cancel — stops at the next trial checkpoint; completed trials are kept.
135
+
136
+ ### terminate_optimization(session_id)
137
+ Hard stop — marks the session `terminated` and force-kills the worker. Prefer
138
+ `cancel_optimization` unless the worker is stuck.
139
+
140
+ ### purge_optimization_sessions(days_old?)
141
+ Delete old sessions. If `days_old` is omitted, deletes **all** sessions.
142
+
143
+ ## Checking for results
144
+
145
+ Optimization is the **slowest** of the modes — it runs `n_hyperparameters ×
146
+ trials` backtests, each on both the training and testing windows. Keep checking
147
+ until a terminal status (`finished`, `stopped`, `terminated`); never ask the user
148
+ to drive the loop. Watch `completed_trials / total_trials` for progress and ETA.
149
+
150
+ Adaptive check schedule (when `status == "running"`):
151
+
152
+ | Elapsed since fire | Check every |
153
+ |---|---|
154
+ | 0 – 1 min | 5 s |
155
+ | 1 – 5 min | 20 s |
156
+ | 5 – 30 min | 60 s |
157
+ | 30 – 120 min | 2 – 3 min |
158
+ | > 2 h | 5 min |
159
+
160
+ If `completed_trials > 0`, estimate ETA as
161
+ `elapsed × (total_trials / completed_trials)` and set the next check to roughly
162
+ `min(remaining_eta / 5, max_interval)`.
163
+
164
+ Status semantics:
165
+ - `running` / `paused` → keep checking
166
+ - `finished` → read `best_candidates`; report the train-vs-test verdict
167
+ - `stopped` → run failed; read `exception` (e.g. missing candles, or the strategy
168
+ has no hyperparameters) and `get_optimization_logs(sid)`, then report it
169
+ - `terminated` → user-initiated stop; report the partial state, don't retry
170
+ without the user's say-so
171
+
172
+ User-facing language: say **"checking for results"** in chat, not "polling".
173
+
174
+ ## Standard workflow
175
+
176
+ ```python
177
+ # 1. Stage the optimization (train then test, contiguous windows)
178
+ draft = create_optimization_draft(
179
+ exchange="Binance Perpetual Futures",
180
+ routes='[{"exchange":"Binance Perpetual Futures","strategy":"MyStrategy","symbol":"BTC-USDT","timeframe":"4h"}]',
181
+ training_start_date="2023-01-01", training_finish_date="2024-06-01",
182
+ testing_start_date="2024-06-01", testing_finish_date="2024-12-01",
183
+ objective_function="sharpe", trials=100,
184
+ hypothesis="MyStrategy's EMA periods generalize out-of-sample.",
185
+ )
186
+ sid = draft["session_id"]
187
+
188
+ # 2. Fire it
189
+ run_optimization(sid)
190
+
191
+ # 3. Keep checking until terminal (optimization is slow — widen the interval)
192
+ while True:
193
+ s = get_optimization_session(sid)
194
+ status = s["data"]["session"]["status"]
195
+ if status in ("finished", "stopped", "terminated"):
196
+ break
197
+ time.sleep(20)
198
+
199
+ # 4. Pick the candidate that generalizes best (smallest train->test drop)
200
+ session = s["data"]["session"]
201
+ if status == "finished":
202
+ cands = session["best_candidates"]
203
+ # report rank #1 plus train-vs-test for the top few; flag overfit candidates
204
+ elif status == "stopped":
205
+ # read session["exception"] / get_optimization_logs(sid); if missing candles,
206
+ # import_candles() for both windows (~2 months before each start) then rerun_optimization(sid)
207
+ ...
208
+ ```
209
+
210
+ ## Constraints / common errors
211
+
212
+ - **Strategy needs `hyperparameters()`** — empty list → `InvalidStrategy`, nothing
213
+ to optimize.
214
+ - **Candles for BOTH windows** — a shortage stops the session with a message
215
+ naming both windows; `import_candles()` then `rerun_optimization()`.
216
+ - **`trials` is per-hyperparameter** — total = `n_hyperparameters × trials`. Don't
217
+ set it huge on a multi-hyperparameter strategy unless you want a very long run.
218
+ - **At least one route is required.**
219
+ - **409 on the main endpoint** — the draft row already exists, which is why
220
+ `run_optimization` fires via the resume endpoint; you don't normally hit this.
221
+ - **CPU- and time-bound** — far heavier than a single backtest. Use a smaller
222
+ `trials` and short windows for a quick exploratory pass, then scale up.
@@ -39,6 +39,7 @@ from jesse.mcp.tools.candles import register_candles_tools
39
39
  from jesse.mcp.tools.indicator import register_indicator_tools
40
40
  from jesse.mcp.tools.significance_test import register_significance_test_tools
41
41
  from jesse.mcp.tools.monte_carlo import register_monte_carlo_tools
42
+ from jesse.mcp.tools.optimization import register_optimization_tools
42
43
 
43
44
  def register_tools(mcp):
44
45
  """
@@ -73,3 +74,6 @@ def register_tools(mcp):
73
74
 
74
75
  # Monte Carlo simulation tools (robustness analysis of finished strategies)
75
76
  register_monte_carlo_tools(mcp)
77
+
78
+ # Optimization tools (hyperparameter tuning with train/test split)
79
+ register_optimization_tools(mcp)
@@ -24,6 +24,7 @@ from .services import (
24
24
  cancel_backtest_service,
25
25
  purge_backtest_sessions_service
26
26
  )
27
+ from jesse.mcp.usage_limits import gated, CREDIT_WEIGHTS
27
28
 
28
29
  def register_backtest_tools(mcp):
29
30
  """
@@ -49,7 +50,7 @@ def register_backtest_tools(mcp):
49
50
  export_json: bool = False,
50
51
  export_chart: bool = True,
51
52
  export_tradingview: bool = False,
52
- fast_mode: bool = False,
53
+ fast_mode: bool = True,
53
54
  benchmark: bool = True,
54
55
  title: str = None,
55
56
  description: str = None,
@@ -90,7 +91,8 @@ def register_backtest_tools(mcp):
90
91
  export_json (bool): Export backtest results as JSON file
91
92
  export_chart (bool): Export chart data for visualization
92
93
  export_tradingview (bool): Export TradingView Pine Script for chart analysis
93
- fast_mode (bool): Enable fast mode for quicker execution (reduced precision)
94
+ fast_mode (bool): Enable fast mode for quicker execution (reduced precision).
95
+ Defaults to True. The agent may set it False for a full-precision run.
94
96
  benchmark (bool): Run benchmark comparison against buy-and-hold strategy
95
97
  title (str, optional): Human-readable note title for this MCP-created session.
96
98
  If omitted, Jesse MCP generates one from the first route.
@@ -431,6 +433,7 @@ def register_backtest_tools(mcp):
431
433
  )
432
434
 
433
435
  @mcp.tool()
436
+ @gated(weight=CREDIT_WEIGHTS["run_backtest"])
434
437
  def run_backtest(session_id: str) -> dict:
435
438
  """
436
439
  Trigger a backtest and return immediately (fire-and-poll pattern).
@@ -33,6 +33,7 @@ from .services import (
33
33
  terminate_monte_carlo_service,
34
34
  purge_monte_carlo_sessions_service,
35
35
  )
36
+ from jesse.mcp.usage_limits import gated, CREDIT_WEIGHTS
36
37
 
37
38
 
38
39
  def register_monte_carlo_tools(mcp):
@@ -48,7 +49,7 @@ def register_monte_carlo_tools(mcp):
48
49
  num_scenarios: int = 200,
49
50
  run_trades: bool = False,
50
51
  run_candles: bool = True,
51
- fast_mode: bool = False,
52
+ fast_mode: bool = True,
52
53
  cpu_cores: int = None,
53
54
  pipeline_type: str = 'moving_block_bootstrap',
54
55
  pipeline_params: str = None,
@@ -81,7 +82,14 @@ def register_monte_carlo_tools(mcp):
81
82
  run_candles: Whether to run the candles resampler (default True).
82
83
  Candles MC is the main mode — it resamples the underlying
83
84
  price series and re-runs the strategy on each variant.
84
- fast_mode: Skip charts/heavy outputs for speed (default False).
85
+ fast_mode: Use the fast resampling-and-replay path (default True).
86
+ Strongly recommended for candle Monte Carlo: the full
87
+ step-simulator can blow up on synthetic bootstrapped candles
88
+ (risk-sized strategies size positions off a momentarily tiny
89
+ ATR, the balance compounds to overflow, and scenarios die with
90
+ InsufficientMargin / Infinity). The fast path is robust and is
91
+ what the dashboard's healthy runs use. Only set False if you
92
+ specifically need the step simulator and accept those caveats.
85
93
  cpu_cores: Worker count. Defaults to (cpu_count - 1, capped at 4).
86
94
  pipeline_type: Candle resampling pipeline. Default
87
95
  "moving_block_bootstrap". Other options depend on the
@@ -306,6 +314,7 @@ def register_monte_carlo_tools(mcp):
306
314
  return get_monte_carlo_logs_service(session_id)
307
315
 
308
316
  @mcp.tool()
317
+ @gated(weight=CREDIT_WEIGHTS["run_monte_carlo"])
309
318
  def run_monte_carlo(session_id: str) -> dict:
310
319
  """
311
320
  Fire a Monte Carlo simulation for a previously created draft and return immediately.