jesse 3.3.2__tar.gz → 3.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.
- {jesse-3.3.2/jesse.egg-info → jesse-3.3.4}/PKG-INFO +3 -2
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/agent_rules.md +22 -4
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/mcp_config.py +33 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/live_trading.md +6 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/session_analysis.md +4 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/server.py +3 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/backtest.py +1 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/monte_carlo.py +3 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/optimization.py +3 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/backtest.py +4 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/live.py +1 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/monte_carlo.py +7 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/optimization.py +6 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/session_analysis.py +30 -6
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/significance_test.py +4 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/session_results.py +15 -8
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/significance_test.py +2 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/monte_carlo_mode/MonteCarloRunner.py +4 -3
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/optimize_mode/Optimize.py +4 -3
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/monte_carlo/monte_carlo_candles.py +2 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/monte_carlo/monte_carlo_trades.py +2 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/optimize/__init__.py +2 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/analysis_jobs.py +127 -69
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/live_history.py +2 -1
- jesse-3.3.4/jesse/services/nofollow_fs.py +667 -0
- jesse-3.3.4/jesse/services/process_tree.py +435 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/project_files.py +72 -125
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/ray_runtime.py +24 -1
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/research_jobs.py +153 -55
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/strategy_handler/__init__.py +37 -10
- jesse-3.3.4/jesse/version.py +1 -0
- {jesse-3.3.2 → jesse-3.3.4/jesse.egg-info}/PKG-INFO +3 -2
- {jesse-3.3.2 → jesse-3.3.4}/jesse.egg-info/SOURCES.txt +2 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse.egg-info/requires.txt +6 -1
- {jesse-3.3.2 → jesse-3.3.4}/requirements.txt +3 -1
- jesse-3.3.4/tests/conftest.py +61 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_dashboard_url.py +84 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_analysis.py +24 -21
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_candle_management.py +1 -11
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_live_history.py +28 -10
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_live_sessions.py +1 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_project_files.py +24 -10
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_proxy.py +14 -7
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_research_scripts.py +4 -7
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_session_results.py +24 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_strategy_reports.py +8 -2
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_tool_offloading.py +2 -5
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_ray_runtime.py +51 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_research_monte_carlo.py +70 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_research_optimization_isolation.py +54 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_research_session_lifecycle.py +44 -0
- jesse-3.3.2/jesse/version.py +0 -1
- jesse-3.3.2/tests/conftest.py +0 -17
- {jesse-3.3.2 → jesse-3.3.4}/LICENSE +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/MANIFEST.in +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/README.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/app.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/candle_pipelines/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/candle_pipelines/base_candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/candle_pipelines/gaussian_noise.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/candle_pipelines/gaussian_resampler.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/candle_pipelines/moving_block_bootstrap.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/cli.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/config.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/constants.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/ai_model_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/analysis_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/auth_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/backtest_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/candles_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/closed_trade_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/config_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/data_provider_credentials_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/e2e_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/exchange_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/file_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/live_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/lsp_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/mcp_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/monte_carlo_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/notification_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/optimization_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/order_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/period_templates_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/project_files_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/research_scripts_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/route_templates_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/session_results_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/significance_test_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/strategy_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/system_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/tabs_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/controllers/websocket_controller.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/enums/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/exceptions/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/exchanges/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/exchanges/exchange.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/exchanges/sandbox/Sandbox.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/exchanges/sandbox/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/factories/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/factories/candle_factory.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/factories/order_factory.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/helpers.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/acosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ad.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/adosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/adx.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/adxr.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/alligator.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/alma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ao.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/apo.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/aroon.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/aroonosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/atr.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/avgprice.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/bandpass.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/beta.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/bollinger_bands.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/bollinger_bands_width.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/bop.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cci.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cfo.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cg.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/chande.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/chop.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cksp.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cmo.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/correl.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/correlation_cycle.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cvi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/cwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/damiani_volatmeter.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/dec_osc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/decycler.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/dema.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/devstop.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/di.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/dm.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/donchian.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/dpo.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/dti.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/dx.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/edcf.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/efi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ema.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/emd.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/emv.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/epma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/er.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/eri.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/fisher.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/fosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/frama.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/fwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/gatorosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/gauss.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/heikin_ashi_candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/high_pass.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/high_pass_2_pole.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/hma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/hull_suit.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/hurst_exponent.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/hwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ichimoku_cloud.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ichimoku_cloud_seq.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ift_rsi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/itrend.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/jma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/jsa.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/kama.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/kaufmanstop.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/kdj.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/keltner.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/kst.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/kurtosis.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/kvo.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/linearreg.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/linearreg_angle.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/linearreg_intercept.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/linearreg_slope.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/lrsi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/maaq.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mab.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/macd.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mama.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/marketfi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mass.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mcginley_dynamic.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mean_ad.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/median_ad.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/medprice.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mfi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/midpoint.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/midprice.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/minmax.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mom.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/mwdx.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/natr.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/nma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/nvi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/obv.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/pfe.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/pivot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/pma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ppo.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/pvi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/pwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/qstick.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/reflex.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/roc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rocp.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rocr.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rocr100.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/roofing.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rsi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rsmk.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rsx.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/rvi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/safezonestop.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/sar.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/sinwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/skew.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/sma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/smma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/squeeze_momentum.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/sqwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/srsi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/srwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/stc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/stddev.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/stiffness.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/stochastic.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/stochf.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/supersmoother.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/supersmoother_3_pole.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/supertrend.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/support_resistance_with_break.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/swma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/t3.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/tema.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/trange.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/trendflex.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/trima.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/trix.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/tsf.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/tsi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ttm_squeeze.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ttm_trend.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/typprice.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ui.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/ultosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/var.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vi.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vidya.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vlma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/volume.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vosc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/voss.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vpci.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vpt.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vpwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vwap.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vwma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/vwmacd.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/wad.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/waddah_attr_explosion.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/wclprice.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/wilders.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/willr.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/wma.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/wt.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/zlema.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/indicators/zscore.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/info.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/libs/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/libs/custom_json/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/libs/dynamic_numpy_array/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/USAGE_LIMITS.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/agent_rules.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/auth.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/manager.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/backtest_management.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/backtest_metrics.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/candle.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/charts.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/configuration.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/credentials.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/indicator.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/monte_carlo.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/optimization.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/position_risk.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/research_scripts.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/significance_test.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/strategy.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/strategy_catalog.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/strategy_examples.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/resources/utilities.md +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/test.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/analysis.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/config.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/credentials.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/general.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/indicator.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/live.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/offload.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/project_files.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/research_scripts.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/auth.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/config.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/credentials.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/general.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/indicator.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/locks.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/project_files.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/session_config.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/strategy.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/services/strategy_catalog.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/strategy.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/strategy_catalog.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/tools/strict_arguments.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/mcp/usage_limits.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/AiModel.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/BacktestSession.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Candle.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/ClosedTrade.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/DataProviderCredentials.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Exchange.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/ExchangeApiKeys.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/FuturesExchange.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/LiveChart.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/LiveEquitySnapshot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/LiveSession.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Log.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/MonteCarloSession.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/NotificationApiKeys.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/OpenTab.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/OptimizationSession.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Option.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Order.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Orderbook.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/PeriodTemplate.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Position.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Route.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/RouteTemplate.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/SignificanceTestSession.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/SpotExchange.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Ticker.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/Trade.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/models/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/backtest_mode.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/data_provider.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/exchange_api_keys.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/apex_omni_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-arm.dylib +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-x86.dylib +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.dylib +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.so +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-arm.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-pc.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-x86.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.dll +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFutures.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFuturesTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceUSSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/binance_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/BitfinexSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/bitfinex_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpotTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetualTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetualTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/bybit_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/CoinbaseSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/coinbase_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateSpotMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/gate_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/hyperliquid_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetualMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetualTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenSpotMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/kraken_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinFuturesMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinSpot.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinSpotMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinUSDTPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/kucoin_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterMain.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetual.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetualTestnet.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/lighter_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-darwin-arm64.dylib +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-amd64.so +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-arm64.so +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-windows-amd64.dll +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/interface.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/monte_carlo_mode/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/notification_api_keys.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/optimize_mode/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/optimize_mode/fitness.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/significance_test_mode/SignificanceTestRunner.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/significance_test_mode/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/modes/utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/candle_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/closed_trade_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/data_provider_credentials_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/live_chart_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/live_equity_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/live_session_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/open_tab_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/order_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/period_template_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/repositories/route_template_repository.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/backtest.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/import_candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/ml.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/monte_carlo/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/monte_carlo/common.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/rule_significance_testing/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/rule_significance_testing/bootstrap.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/rule_significance_testing/common.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/rule_significance_testing/plots.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/rule_significance_testing/rule_significance.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/research/rule_significance_testing/simulator.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/routes/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/api.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/auth.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/broker.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/cache.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/candle_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/charts.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/closed_trade_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/color.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/coordination_client.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/coordination_runtime.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/custom_candle_import.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/dashboard_url.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/db.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/e2e_database.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/env.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/exchange_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/failure.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/file.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/general_info.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/contracts.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/credential_validation.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/errors.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/massive_stocks.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/providers/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/historical_data/registry.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/installer.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/jesse_trade.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/live_chart_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/logger.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/lsp.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/lsp_download.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/metrics.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/migrator.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/multiprocessing.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/notifier.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/order_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/position_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/progress.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/progressbar.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/redis.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/report.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/session_results.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/simulation_assumptions.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/strategy_handler/ExampleStrategy/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/strategy_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/symbol_catalog.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/table.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/timescale.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/trading_hours.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/transformers.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/validators.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/web.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/services/ws_manager.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/200.html +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/404.html +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/-QFIf-8y.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/08VXUWAP.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/0ONmXmPL.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/1OJtSa29.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/2IIEA8gg.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/2LnYzLCR.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/32DixAac.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/32_DOadk.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/35Gd1l6b.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/3KuTZQMl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/3kHYRJ9h.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/43DmfD33.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/4G7pJPwS.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/5eyTD99u.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/6RTg0lbw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/6d_DINYp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/95zPyYrn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/9S921ylM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/9SuGUQxQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Agoi6m7K.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Aw9tIJeK.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B1E1h4Tw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B26H0THF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B2OO5cIa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B2kYdT-M.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B3Tmza7s.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B40NqdSB.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B4CnDxnp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B4t1Dpxy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B5-_aFwp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B55fAccV.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B5W6OYN7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B5e22D9r.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B5ulf6Jh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B68TUdTA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B6UiomQj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B6cMlEJd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B6kMFxG1.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B8J7ngcE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B8_t_EnB.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B9C647eN.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B9JPFI3C.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BA0WJkYB.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BB8QmrLY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BBDov63s.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BBRdoL6s.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BC-YRYM7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BD87b4dR.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BDNMzG2s.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BDy3RgVq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BEEn4gHE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BEtHBSE6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BGFFIZX_.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BGRKdXyl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BG_RkxjH.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BHVL4DrI.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BHWKrbxM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BI3Y1cOA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BIEGKqOo.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BIfCV4Ms.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BK0UMAm8.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BKD0O2_Q.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BKPLz4po.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BKcRqSit.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BKc_k7G-.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BKxtCVv1.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BLhvb9Y-.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BMrGqELX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BN08jTvb.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BOINE9jH.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BOotOW0E.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BQYoEE-E.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BRSARzao.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BRgglKlM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BSFCf8l4.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BSSBbjzH.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BSWPekZh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BSkKS2hE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BSt81nX4.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BTkZN-kY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BUvLBkUT.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BWB_6_ms.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BWPQTe0t.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BXViO-2h.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BY-ye-pC.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BYdfvclj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BYgofb2h.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BZ4HG2rr.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BZCL-v6S.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B_aZeMMh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/B_tTalzw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Ba7i2nA0.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BaTYBKiJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BacktestTabs.BijLvS3O.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BbAZZZ7p.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BbMWPibr.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bc_sGQ0U.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BdwtN8NV.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BeGwcela.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Beywemwu.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bf9kHOm6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BfbyNUB7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bh7THQLS.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BhjAJghj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BiX_3ZGn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bk0mhOc9.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bkml37m-.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BkrtENUF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bm3Qr25_.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BmHiIK7b.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bn7V5xpM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BnjxR4X6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bnr-372i.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bo9Dl7tn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BoEzQrVW.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BoK4YRpC.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BolyLLo5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bp8RYZPa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bpxkdeyh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BrD0VTWt.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bri6UV-V.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Brm5PLIv.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BtUnaqJ2.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Btx78D0D.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Buu8uHmp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BvzEE6Lm.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BwWrilGY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BwjZg7Kw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bx1FflLF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bxkupp3x.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/By-L4I7w.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/By1ptfmn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ByqV7_Wn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Bz4Y3fRF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BzGFDp20.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BzMNZVT7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/BzRncHX3.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C-LZuMrd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C-y9NEjX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C1BzkLxr.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C1IaaOeX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C25aelnV.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C2u17_gr.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C44XaChS.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C531GsRP.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C5_-GSwl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C7h46wYY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C8468PWD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C8Ef5oNN.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C8r90Shi.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CAi0_s86.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CC2rA5mh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CC3Dc58n.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CCQjLJmZ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CCUjCBK5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CDeNXAV0.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CErjEBUy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CFAvbRBv.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CGx505Mf.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CHQ94UKr.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CIPQ_RoX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CIpIsXEF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CJ3rzSJv.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CKgYSDhl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CNhAU_yo.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/COeFqPAd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/COju__tp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CQihkeLA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CRal5XOA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CRfGWb83.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CRyZUaTi.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CRzLMJPS.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CSDNxAMC.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CTweb8Dz.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CUKGrt9p.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CVaqCwHa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CW42rLZD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CWDvEqlu.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CXHoNUfW.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CXtmUGW6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CXuuVbXE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CYsHHI_Y.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CZLZPU9y.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CZiHAFz-.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CZoCCMwk.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CZsCp6_J.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/C_8bwKvT.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CaLoWpdj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CaP30uTv.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cb4Vim4T.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cba4tSYP.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CcwsVR0C.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CdkpiU2Y.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Ce441ncu.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Ceyelwdz.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cf9Ao90m.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CfSJPG6W.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cfl0F_Ix.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CfvQ0GVj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ChJth8dy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cimd5fb3.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CircleProgressbar.yGgm_qEa.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CjM6HreG.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CjSZG47B.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CkJ3IzwM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CkRax0sH.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cl4KV_tk.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ClA4MMiD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ClQpkZ_L.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ClamHrr6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cm7r79vr.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cn3B6b9t.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cnfgdmp5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CoKYUvtC.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CoMST1W2.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ComPDbET.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CopQ2nXW.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CowLSvep.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CozAH55r.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CpL23Fmb.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CpzslTdj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cr7JoK-F.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CrVSgIkM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CroGarxd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cs2F2srj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CsQS60Ue.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CsvMBhTu.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cu5M3efA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CvrMaf9k.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CximN0RY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CyaoTIaz.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/CytPyiJO.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Cz7rf_X8.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Czxs1Lr1.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D-9WcGfc.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D-kcNTYM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D-oSqn_W.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D-ptJ9y-.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D05T4iGw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D0mw5jGK.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D1Ny8MsW.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D2VuFIIh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D2ymy_yS.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D3hlyOfw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D4-rlkSU.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D5GhRiPb.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D5ROd09N.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D76weKjv.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D94iqX0Y.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D9y3cZ0N.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DBG_jd69.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DBrRvF6k.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DCMvuGdi.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DCQb3MpD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DD3ehtKZ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DDpmG2fV.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DDwmkQR0.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DE9FIzhz.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DEzv-VFF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DFfOA-Hn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DFfgcuRt.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DFwEHpFD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DGnxmmBi.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DHBI_yxQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DHPkxzYJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DHpiXF5c.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DIMkf-bt.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DISqw1ZD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DJW761E_.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DK0GhfdP.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DKCQ3kY7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DLJdWeDZ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DLMcThcU.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DLSXrvMj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DMUM7wLl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DMZUnbo6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DMnEoi8l.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DNvWHFeH.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DOTl9kKz.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DOwBwxAc.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DPDvM2ct.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DPUBG1Sa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DQ-b8cau.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DQPPsGdR.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DQU07tlD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DQeMqN38.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DQwYfKfQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DRFjx7u4.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DRQTUBBy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DSRkZAVd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DSh2HLQt.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DSxVysNG.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DT7zqm-g.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DTj74zXo.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DUxEecLs.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DV17i1UV.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DV3o63ZY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DVG0V4jx.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DVQuIRkW.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DWiCCCWX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DX9HmIul.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DXG-b-1a.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DXgieCCJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DYRyhno9.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DYlRzrDj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DZFCIeNp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DZWexK4Q.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D_Lu-MrJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D_Qp7VhD.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D_Sm39l5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/D_XYh1V1.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DajP-uHd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DauUninz.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DaxD0QDq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DaxQctDl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Db4fpp4X.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DbInun42.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dbw3yKNo.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dc0bEyG5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DdL9SqIa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DdZzhEjZ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dduc7CfM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/De2hgUGE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DezsRK8O.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Df2xbC6M.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DfC9-Oas.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DgPtEepw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DgfQ8roX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DhmEMT88.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DiqhDmo8.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Diy88_8O.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DjAgHZrJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DkiUMXvE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DkmNSMHY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DkqhCAOL.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dl3pNQBR.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DlxfLgwf.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DmFYnCc9.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DmHpPYUd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DmNVVboZ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dmf8Y0ON.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dmhjelgj.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DmnVzVBc.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DnKPLd6d.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DnToyrRv.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Do35n8oq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DpFanUEy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DpTtcPZs.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dpc0kmwU.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dq8dNoUO.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DqJzYO7Y.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DqXIJaHE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DrH0SRf2.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Ds29f9ZA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Ds9iBrvx.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dt39crSB.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dt9aNFbE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DtX02f_x.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DtiqU4Ud.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DtqQGdEG.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dw3KmPTn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/DxSv1ANE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dxj8dFzq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dxp_UTNE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dyqgk9ID.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Dz8kfdTw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/E1ZWqqYd.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/EJNjM-U5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/EUqPIrTm.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/EkTgQK41.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Ffc-wpi1.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/FvmIjYaQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/G2qN-x4c.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/HSRijeU2.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/HVfn8BjE.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/HbO86Wj8.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Hsn-rFuA.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Hza2DNlp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ICt9zdTY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/IKeJ43Xq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/IXshMDJQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Inter-VariableFont_slnt_wght.Cl4AQHp9.ttf +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/J0iKGLDy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/JVoApnG_.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/JjuYFqoF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/JpkrmRYq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/JxrqHDML.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/KgIFLbLy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/L2jIIa9o.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/LO_BkMJ8.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/LiveTabs.rsQh4sN8.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/MajH5w9w.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/NEE52Syq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/OwFc4i_0.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ProgressStatusText.BQK0FaGL.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/QZfQtQzF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/QoymgQo0.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/SOo6toE5.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/SRo1HocX.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/StrategiesSidebar.B-brLowb.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/TDhf81zB.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/TGksF7tq.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/TradeHistoryChart.Bs0aEPiQ.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/VbXTXTou.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/WF6tEroY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/WFnVOHr3.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/WGRu4rDx.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/WZ5HE0X3.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Y2pL5qgw.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/YdFKNLmY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/Z5eAx3Zn.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_3zCpt1T.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_7BVYBMY.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_b8AQjYy.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_id_.B7_JgFfA.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_id_.Cb3WvDCW.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_id_.j0n5fqTK.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/_z_6LxFK.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/aYLzAr85.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/axvP9fKg.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/b50CsBaQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/bBgN0Y0r.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/bTuwJoIa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/bWuRL8Ho.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/codicon.Brq4_Ui5.ttf +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/css.worker-B_vtbeex.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/dhy_KTgc.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/eENhBx9Z.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/editor.BVn6Eoal.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/entry.DU6LnkKz.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/error-404.DjFB7pgG.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/error-500.BG9pmads.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/fmXr3nnJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/foABv0nJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/fwtXNY1n.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/gEsa7Idh.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/gp-XZpBa.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/hBpBmjHp.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/hdxB67uV.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/hePW80VL.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/html.worker-C0o__ma4.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/i0X4ZdIN.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ibI1KQep.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/j5_BjaI1.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/json.worker-YsJGeJy7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/jz3gp08z.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/lP7_xLqx.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/live.BHsUui2i.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/logo-dark.tKoQPl1k.svg +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/logo-light.CS4l4ePq.png +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/mnTiCSRt.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/monte-carlo.SA-Jni4T.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/nFMaYfgc.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/nr791fC2.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/nrRF7I-f.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/nuxt-monaco-editor/node_modules/monaco-editor/esm/metadata.d.ts +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/nuxt-monaco-editor/node_modules/monaco-editor/esm/metadata.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/oN7GSZWc.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/onAF5SnQ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/oz_6vUea.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/paCCX65n.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/pages.2jeyaLEx.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/qpEHnBAB.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/sB-x3p7T.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/sBoK_t0W.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/sTdyETAW.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/significance-test.C3_9t58f.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/sltzmVWM.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/strategies.CZAezJwX.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/toggleHighContrast.BIHgMxab.css +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/ts.worker-BN13fC-t.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/u9_Y1g7K.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/uFMmaQO6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/uHUmCDd7.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/uR-B8b7I.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/u_o9HDF2.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/uhdI0v04.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/v-e-WZYS.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/v5am0c2l.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/vC0cNbDJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/vc9XnyOF.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/wbypxrpR.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/xAOFb7cl.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/xQegFPeJ.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/xgNQ-z8D.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/xk2_4sNk.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/y2WM_oP3.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/y_x7m0Ik.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/yjvMp0c6.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/_nuxt/yqdSDlAg.js +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/favicon.ico +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/favicons/android-chrome-192x192.png +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/favicons/android-chrome-512x512.png +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/favicons/apple-touch-icon.png +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/favicons/favicon-16x16.png +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/favicons/favicon-32x32.png +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/index.html +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/static/robots.txt +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_app.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_closed_trades.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_exchanges.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_logs.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_orderbook.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_orders.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_positions.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_tickers.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/store/state_trades.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/CanAddClosedTradeToStore/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/RealStrategyRegression1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/RealStrategyRegression2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/RealStrategyRegression3/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Strategy.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test01/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test02/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test04/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test05/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test06/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test07/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test08/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test09/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test10/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test11/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test12/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test13/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test14/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test15/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test16/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test17/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test18/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test19/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test20/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test21/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test22/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test23/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test24/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test25/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test26/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test27/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test28/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test29/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test30/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test31/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test32/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test33/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test34/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test35/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test36/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test37/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test38/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test39/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test40/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test41/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test44/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test45/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test46/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test47/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/Test48/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestAddHorizontalLineToCandleChart/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestAddHorizontalLineToExtraChart/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestAddLineToCandleChart/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestAddLineToExtraChart/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestAfterMethod/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestAverageEntryPriceProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestBalanceAndFeeReductionWorksCorrectlyInSpotModeInBothBuyAndSellOrders/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestBalancesAreHandledCorrectlyForCancellingOrdersInSpot/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestBaseAndQuoteAssetProperties/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestBeforeMethod/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestBeforeTerminate/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanOpenANewPositionImmediatelyAfterClosingViaUpdatePosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanRunWithoutShorting/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanSubmitTakeProfitAndStopLossAtSameTimeInSpot/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCannotSetStopLossOrderInGoLong/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCannotSetTakeProfitOrderInGoLong/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCannotSpendMoreThanAvailableBalance/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCannotSubmitStopLossOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCannotSubmitTakeProfitOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCapitalPropertyRaisesNotImplementedError/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestClosedTradeAfterExitingTrade/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCommonWarmupStart/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCurrentRouteIndex1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestCurrentRouteIndex2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestDailyBalanceStoresPortfolioValue/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestDailyBalancesProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestDataRoutes1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestDataRoutes2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestDefaultHyperparameters/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestDnaMethod/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestEmptyStrategy/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestEntryOrdersAndExitOrdersProperties/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestExchangeTypeProperty1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestExchangeTypeProperty2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestFuturesExchangeAvailableMargin/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestGeneratedDataRouteExecutionBTC/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestGeneratedDataRouteExecutionETH/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestHasLongAndShortEntryOrdersPropertiesInFilters/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestHasLongEntryOrdersProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestHasShortEntryOrdersProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestIncreasedAndReducedCount/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestIncreasingShortPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestInsufficientMargin1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestInsufficientMargin2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestInsufficientMargin3/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLeverageProperty1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLeverageProperty2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLiquidationInCrossModeForShortTrade/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLiquidationInIsolatedModeForLongTrade/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLiquidationInIsolatedModeForShortTrade/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLogMethodInStrategyClass/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLongLifecycleAcrossTradingModes/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestLongSparseGap/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMarkPrice/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMarketOrderForLowPriceDifference/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMetrics1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMultiInstrumentReplayA/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMultiInstrumentReplayB/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryLongPositions/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryShortPositions/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOnCancelMethod/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOnClosePosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOnRouteOpenPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOnRouteOpenPosition2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOptimizationIsolation/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOrderIsStopLossProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOrderIsTakeProfitProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOrderPriceCannotBeGreaterThanZero/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOrderValueProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOrdersAreSortedBeforeExecution/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestOversizedReduceOnlyExitAccounting/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPortfolioValue/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPortfolioValueIncludesPositionValueAndOpenOrdersValue/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositionExchangeTypeProperty1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositionExchangeTypeProperty2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositionOpenIncreaseReduceCloseEventsInSpot/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositionTotalCostProperty/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositionWithLeverage1/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositionWithLeverage2/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestPositions/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestProperBalanceHanldingInSpotAfterOrderCancellation/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestProtectiveOrdersAcrossTradingModes/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestReduceOnlyMarketOrders/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestRuleSignificanceAlignment/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestRuleSignificanceFailure/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestShortInSpot/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestSparseTimestampRoutes/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceLongPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceShortPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestStopOrderShouldConsiderExecutedTakeProfitOrdersInSpot/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestStrategyChartsReport/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestStrategyVariablesAreResetBeforeOpeningNewPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientLongPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientShortPosition/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestTerminate/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestTradingHours/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestUsageOfShouldCancelRaisesNotImplementedError/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestVanillaStrategy/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestWalletBalance/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/TestWithoutCancelMethod/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/strategies/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/testing_utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse/utils.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse.egg-info/dependency_links.txt +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse.egg-info/entry_points.txt +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/jesse.egg-info/top_level.txt +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/setup.cfg +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/setup.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/data/__init__.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/data/test_candles_0.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/data/test_candles_1.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/data/test_candles_indicators.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/mcp_tool_adapters.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_backtest.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_backtest_session_chart_data.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_backtest_session_chart_images.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_broker.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_candle_copy.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_candle_service.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_candle_timeframe_filter.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_chart_data_serialization.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_completed_trade.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_config_safety.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_conflicting_orders.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_coordination.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_coordination_helpers.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_dynamic_numpy_array.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_e2e_database.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_exchange.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_helpers.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_historical_data_contracts.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_import_and_backtest_request_boundaries.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_import_candle_drivers.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_import_candles.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_import_candles_workflow.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_indicators.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_isolated_backtest.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_jesse_trade_routes.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_live_session_chart_data.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_live_strategy_charts.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_lsp.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_auth.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_config.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_credentials.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_resources.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_session_analysis_integration.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_strategy_catalog.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_usage_limits.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_mcp_worker_port.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_metrics.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_optimization_and_monte_carlo_session_failures.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_order.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_parent_strategy.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_position.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_price_gap_backtest.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_progressbar.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_real_strategy_regression.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_research.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_router.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_rule_significance_testing.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_session_scoped_configuration.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_significance_test_session.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_simulator_parity.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_spot_mode.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_candle.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_exchanges.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_logs.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_orderbook.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_orders.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_ticker.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_state_trades.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_trading_hours.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_trading_mode_contracts.py +0 -0
- {jesse-3.3.2 → jesse-3.3.4}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jesse
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.4
|
|
4
4
|
Summary: A trading framework for cryptocurrencies
|
|
5
5
|
Home-page: https://jesse.trade
|
|
6
6
|
Author: Saleh Mir
|
|
@@ -42,7 +42,8 @@ Requires-Dist: PyJWT~=2.11.0
|
|
|
42
42
|
Requires-Dist: cryptography~=42.0.5
|
|
43
43
|
Requires-Dist: ecdsa>=0.16.0
|
|
44
44
|
Requires-Dist: optuna~=4.2.0
|
|
45
|
-
Requires-Dist: ray
|
|
45
|
+
Requires-Dist: ray; sys_platform != "win32"
|
|
46
|
+
Requires-Dist: ray>=2.48.0; sys_platform == "win32"
|
|
46
47
|
Requires-Dist: eth-account~=0.13.5
|
|
47
48
|
Requires-Dist: msgpack~=1.1.0
|
|
48
49
|
Requires-Dist: starkbank-ecdsa~=1.1.0
|
|
@@ -193,27 +193,45 @@ Code Generation:
|
|
|
193
193
|
|
|
194
194
|
### CRITICAL: Always surface the dashboard URL in every reply that reports a session
|
|
195
195
|
|
|
196
|
-
Every backtest, optimization, Monte Carlo,
|
|
197
|
-
response from the MCP carries a `dashboard_url` field. This is
|
|
198
|
-
leverage piece of information you give the user — one click and they
|
|
196
|
+
Every backtest, optimization, Monte Carlo, rule significance test, and
|
|
197
|
+
live/paper session response from the MCP carries a `dashboard_url` field. This is
|
|
198
|
+
the single highest-leverage piece of information you give the user — one click and they
|
|
199
199
|
see the equity curve, trades table, scenario charts, and everything
|
|
200
200
|
else you can't fit in a chat reply.
|
|
201
201
|
|
|
202
|
+
Where to find it:
|
|
203
|
+
- Responses about one session (create/update draft, run, start, stop, cancel, notes,
|
|
204
|
+
`get_*_session`, and every `get_session_results` summary or section page): the
|
|
205
|
+
top-level `dashboard_url`.
|
|
206
|
+
- Session lists (`get_backtest_sessions`, `get_optimization_sessions`,
|
|
207
|
+
`get_monte_carlo_sessions`, `get_significance_test_sessions`, `get_live_sessions`):
|
|
208
|
+
each session row has its own `dashboard_url`.
|
|
209
|
+
- `get_live_trades` / `get_live_orders`: replace `{session_id}` in
|
|
210
|
+
`session_dashboard_url_template` with a record's `session_id`.
|
|
211
|
+
|
|
202
212
|
You MUST include the dashboard URL whenever you mention a session in
|
|
203
213
|
a user-facing reply. This is not optional. It applies to:
|
|
204
214
|
- Final result summaries ("Backtest finished. Sharpe = …")
|
|
205
215
|
- Interim progress updates ("Running, 40% done")
|
|
206
216
|
- Error reports ("Stopped with exception …")
|
|
207
217
|
- Iteration logs in optimization workflows
|
|
218
|
+
- Live/paper sessions you list, start, stop, or report on
|
|
208
219
|
- The Markdown report file (see below)
|
|
209
220
|
|
|
221
|
+
Lead with the link, not the ID. A session ID is of no use to the user on its own:
|
|
222
|
+
when they ask for "the URL", "the link", or just "the one running on <exchange>",
|
|
223
|
+
the answer starts with the dashboard link of that session. If you only know the
|
|
224
|
+
session from an earlier reply, call the list tool or `get_session_results` again to
|
|
225
|
+
get its `dashboard_url` rather than answering with the ID.
|
|
226
|
+
|
|
210
227
|
Format:
|
|
211
228
|
- **Chat replies**: Markdown link using the exact `dashboard_url` value, e.g.
|
|
212
229
|
`[View on dashboard](<dashboard_url>)`. Never rewrite its host or port;
|
|
213
230
|
it already points at the address the user opens the dashboard from.
|
|
214
231
|
- **Report file**: a `Dashboard:` line with the plain URL
|
|
215
232
|
- If `dashboard_url` is empty in the response, say "dashboard URL
|
|
216
|
-
unavailable" — do NOT silently omit the line
|
|
233
|
+
unavailable" — do NOT silently omit the line, and do NOT build one from a
|
|
234
|
+
host or port you guessed.
|
|
217
235
|
|
|
218
236
|
Do not wait for the user to ask for the URL. If you just received a
|
|
219
237
|
response with a `dashboard_url`, the URL goes in your next reply.
|
|
@@ -8,7 +8,7 @@ are stored here to avoid circular imports.
|
|
|
8
8
|
The worker entry point (jesse.mcp.server) sets these values before registering tools.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
from typing import Optional
|
|
11
|
+
from typing import Any, Optional
|
|
12
12
|
from urllib.parse import quote
|
|
13
13
|
|
|
14
14
|
# Internal Jesse API URL. Tools call the API on this machine through it (loopback or the
|
|
@@ -83,3 +83,35 @@ def dashboard_url(category: str, session_id: str) -> str:
|
|
|
83
83
|
if not path or not session_id:
|
|
84
84
|
return ''
|
|
85
85
|
return f"{DASHBOARD_URL}/#/{path}/{quote(str(session_id), safe='')}"
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def with_dashboard_urls(category: str, sessions: Any) -> Any:
|
|
89
|
+
"""
|
|
90
|
+
Return the rows of a session list with each one's `dashboard_url` added (from its `id`).
|
|
91
|
+
|
|
92
|
+
The user asks for "the link to the one running on X" far more often than for an ID, so
|
|
93
|
+
every list a tool returns carries the links ready to use. Anything that is not a list of
|
|
94
|
+
session rows is returned unchanged.
|
|
95
|
+
"""
|
|
96
|
+
if not isinstance(sessions, list):
|
|
97
|
+
return sessions
|
|
98
|
+
return [
|
|
99
|
+
{**row, 'dashboard_url': dashboard_url(category, row.get('id'))} if isinstance(row, dict) else row
|
|
100
|
+
for row in sessions
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def dashboard_url_template(category: str) -> str:
|
|
105
|
+
"""
|
|
106
|
+
The dashboard link of any session of a category, with a literal `{session_id}` placeholder.
|
|
107
|
+
|
|
108
|
+
For responses that name many sessions under a fixed size budget (the live history pages):
|
|
109
|
+
one constant-size field instead of a link per session. Session IDs are UUIDs, so they need
|
|
110
|
+
no escaping when they replace the placeholder.
|
|
111
|
+
"""
|
|
112
|
+
if not DASHBOARD_URL:
|
|
113
|
+
return ''
|
|
114
|
+
path = _DASHBOARD_PATHS.get(category)
|
|
115
|
+
if not path:
|
|
116
|
+
return ''
|
|
117
|
+
return f"{DASHBOARD_URL}/#/{path}/{{session_id}}"
|
|
@@ -48,6 +48,12 @@ session's saved credential values redacted. For a period across sessions ("my tr
|
|
|
48
48
|
days"), use `get_live_trades` / `get_live_orders` (Jesse's records, not the exchange account's
|
|
49
49
|
history; live only unless `mode` says otherwise). See `jesse://session_analysis`.
|
|
50
50
|
|
|
51
|
+
Every one of these, like the tools above, returns the session's dashboard link: `dashboard_url` on
|
|
52
|
+
a single session's response and on each row of `get_live_sessions()`, and
|
|
53
|
+
`session_dashboard_url_template` (replace `{session_id}`) on the history pages. When the user asks
|
|
54
|
+
for a session, or for its URL, answer with that link first; the session ID alone does not help
|
|
55
|
+
them. Opening it loads the session into a dashboard Live tab.
|
|
56
|
+
|
|
51
57
|
## What stopping does
|
|
52
58
|
|
|
53
59
|
Stopping asks the session process to end; a running session notices within about a second, one
|
|
@@ -38,6 +38,10 @@ get_session_results(session_type="backtest", session_id="<uuid>", section="trade
|
|
|
38
38
|
find session IDs. `get_backtest_session` and the other `get_*_session` tools return the
|
|
39
39
|
raw dashboard record, including every trade and curve point; prefer
|
|
40
40
|
`get_session_results` for reading results.
|
|
41
|
+
- Every successful `get_session_results` response (summary or section) has `dashboard_url`,
|
|
42
|
+
and every row of the list tools has its own. Give the user that link whenever you mention
|
|
43
|
+
a session, and lead with it when they ask for a session or its URL; the ID alone does not
|
|
44
|
+
help them.
|
|
41
45
|
|
|
42
46
|
Live and paper sessions:
|
|
43
47
|
- Readable only when the live trading plugin is installed and enabled
|
|
@@ -57,6 +57,9 @@ INSTRUCTIONS = (
|
|
|
57
57
|
"Read stored session results, including live/paper sessions, with get_session_results "
|
|
58
58
|
"(summary first); Jesse's recorded live/paper trades and orders of a date window across "
|
|
59
59
|
"sessions with get_live_trades / get_live_orders (not the exchange account's history). "
|
|
60
|
+
"Whenever you mention a session to the user, or they ask for its URL or link, give the "
|
|
61
|
+
"`dashboard_url` from the tool response as a link, before any other detail; a session ID "
|
|
62
|
+
"alone is of no use to them. "
|
|
60
63
|
"To analyze, compare, or chart results, use run_analysis, which runs in a "
|
|
61
64
|
"temporary workspace and never needs research_scripts/; see jesse://session_analysis."
|
|
62
65
|
)
|
|
@@ -274,6 +274,9 @@ def register_monte_carlo_tools(mcp):
|
|
|
274
274
|
title_search: Case-insensitive substring on title.
|
|
275
275
|
status_filter: One of "draft", "running", "finished", "stopped", "terminated".
|
|
276
276
|
date_filter: One of "7_days", "30_days", "90_days".
|
|
277
|
+
|
|
278
|
+
Each session row has "dashboard_url", its page on the dashboard: give the user that
|
|
279
|
+
link, not the bare ID.
|
|
277
280
|
"""
|
|
278
281
|
return await run_blocking(
|
|
279
282
|
get_monte_carlo_sessions_service,
|
|
@@ -225,6 +225,9 @@ def register_optimization_tools(mcp):
|
|
|
225
225
|
title_search: case-insensitive title substring.
|
|
226
226
|
status_filter: "running" | "paused" | "finished" | "stopped" | "terminated".
|
|
227
227
|
date_filter: "today" | "this_week" | "this_month" | "this_year".
|
|
228
|
+
|
|
229
|
+
Each session row has "dashboard_url", its page on the dashboard: give the user that
|
|
230
|
+
link, not the bare ID.
|
|
228
231
|
"""
|
|
229
232
|
return await run_blocking(
|
|
230
233
|
get_optimization_sessions_service,
|
|
@@ -452,6 +452,7 @@ def update_backtest_draft_service(backtest_id: str, state: str) -> dict:
|
|
|
452
452
|
'status': 'success',
|
|
453
453
|
'backtest_id': backtest_id,
|
|
454
454
|
'draft_state': state_dict,
|
|
455
|
+
'dashboard_url': mcp_config.dashboard_url('backtest', backtest_id),
|
|
455
456
|
'message': 'Backtest draft updated successfully'
|
|
456
457
|
}
|
|
457
458
|
elif response.status_code == 401:
|
|
@@ -541,6 +542,7 @@ def update_backtest_notes_service(
|
|
|
541
542
|
'description': description,
|
|
542
543
|
'strategy_code_keys': list(parsed_strategy_codes.keys()) if parsed_strategy_codes else [],
|
|
543
544
|
'strategy_codes_captured': len(parsed_strategy_codes) if parsed_strategy_codes else 0,
|
|
545
|
+
'dashboard_url': mcp_config.dashboard_url('backtest', session_id),
|
|
544
546
|
'message': 'Backtest session notes updated successfully'
|
|
545
547
|
}
|
|
546
548
|
|
|
@@ -700,7 +702,7 @@ def get_backtest_sessions_service(
|
|
|
700
702
|
data = response.json()
|
|
701
703
|
return {
|
|
702
704
|
'status': 'success',
|
|
703
|
-
'sessions': data.get('sessions', []),
|
|
705
|
+
'sessions': mcp_config.with_dashboard_urls('backtest', data.get('sessions', [])),
|
|
704
706
|
'count': data.get('count', 0),
|
|
705
707
|
'message': f'Retrieved {data.get("count", 0)} backtest session(s)'
|
|
706
708
|
}
|
|
@@ -890,6 +892,7 @@ def cancel_backtest_service(session_id: str) -> dict:
|
|
|
890
892
|
return {
|
|
891
893
|
'status': 'success',
|
|
892
894
|
'session_id': session_id,
|
|
895
|
+
'dashboard_url': mcp_config.dashboard_url('backtest', session_id),
|
|
893
896
|
'message': f'Backtest {session_id} cancellation requested'
|
|
894
897
|
}
|
|
895
898
|
elif response.status_code == 401:
|
|
@@ -807,6 +807,7 @@ def update_live_session_notes_service(session_id: str, title: Optional[str] = No
|
|
|
807
807
|
'session_id': session_id,
|
|
808
808
|
'title': title,
|
|
809
809
|
'description': description,
|
|
810
|
+
'dashboard_url': mcp_config.dashboard_url('live', session_id),
|
|
810
811
|
'message': 'Session notes updated.',
|
|
811
812
|
}
|
|
812
813
|
|
|
@@ -330,6 +330,7 @@ def update_monte_carlo_draft_service(session_id: str, state: str) -> dict:
|
|
|
330
330
|
'status': 'success',
|
|
331
331
|
'session_id': session_id,
|
|
332
332
|
'draft_state': state_dict,
|
|
333
|
+
'dashboard_url': mcp_config.dashboard_url('monte_carlo', session_id),
|
|
333
334
|
'message': 'Monte Carlo draft updated successfully',
|
|
334
335
|
}
|
|
335
336
|
if response.status_code == 401:
|
|
@@ -371,6 +372,7 @@ def update_monte_carlo_notes_service(
|
|
|
371
372
|
'description': description,
|
|
372
373
|
'strategy_code_keys': list(parsed_codes.keys()) if parsed_codes else [],
|
|
373
374
|
'strategy_codes_captured': len(parsed_codes) if parsed_codes else 0,
|
|
375
|
+
'dashboard_url': mcp_config.dashboard_url('monte_carlo', session_id),
|
|
374
376
|
'message': 'Monte Carlo session notes updated successfully',
|
|
375
377
|
}
|
|
376
378
|
return result
|
|
@@ -448,7 +450,7 @@ def get_monte_carlo_sessions_service(
|
|
|
448
450
|
data = response.json()
|
|
449
451
|
return {
|
|
450
452
|
'status': 'success',
|
|
451
|
-
'sessions': data.get('sessions', []),
|
|
453
|
+
'sessions': mcp_config.with_dashboard_urls('monte_carlo', data.get('sessions', [])),
|
|
452
454
|
'count': data.get('count', 0),
|
|
453
455
|
'message': f'Retrieved {data.get("count", 0)} Monte Carlo session(s)',
|
|
454
456
|
}
|
|
@@ -480,6 +482,7 @@ def get_monte_carlo_equity_curves_service(session_id: str) -> dict:
|
|
|
480
482
|
'session_id': session_id,
|
|
481
483
|
'trades': data.get('trades'),
|
|
482
484
|
'candles': data.get('candles'),
|
|
485
|
+
'dashboard_url': mcp_config.dashboard_url('monte_carlo', session_id),
|
|
483
486
|
'message': 'Equity curves retrieved successfully',
|
|
484
487
|
}
|
|
485
488
|
if response.status_code == 404:
|
|
@@ -511,6 +514,7 @@ def get_monte_carlo_logs_service(session_id: str) -> dict:
|
|
|
511
514
|
'status': 'success',
|
|
512
515
|
'session_id': session_id,
|
|
513
516
|
'logs': data.get('logs', ''),
|
|
517
|
+
'dashboard_url': mcp_config.dashboard_url('monte_carlo', session_id),
|
|
514
518
|
'message': 'Logs retrieved successfully',
|
|
515
519
|
}
|
|
516
520
|
if response.status_code == 404:
|
|
@@ -687,6 +691,7 @@ def cancel_monte_carlo_service(session_id: str) -> dict:
|
|
|
687
691
|
)
|
|
688
692
|
if response.status_code == 202:
|
|
689
693
|
return {'status': 'success', 'session_id': session_id,
|
|
694
|
+
'dashboard_url': mcp_config.dashboard_url('monte_carlo', session_id),
|
|
690
695
|
'message': f'Monte Carlo {session_id} cancellation requested'}
|
|
691
696
|
if response.status_code == 401:
|
|
692
697
|
return {'status': 'error', 'message': 'Authentication failed'}
|
|
@@ -712,6 +717,7 @@ def terminate_monte_carlo_service(session_id: str) -> dict:
|
|
|
712
717
|
)
|
|
713
718
|
if response.status_code == 202:
|
|
714
719
|
return {'status': 'success', 'session_id': session_id,
|
|
720
|
+
'dashboard_url': mcp_config.dashboard_url('monte_carlo', session_id),
|
|
715
721
|
'message': f'Monte Carlo {session_id} terminated'}
|
|
716
722
|
if response.status_code == 401:
|
|
717
723
|
return {'status': 'error', 'message': 'Authentication failed'}
|
|
@@ -330,6 +330,7 @@ def update_optimization_draft_service(session_id: str, state: str) -> dict:
|
|
|
330
330
|
'status': 'success',
|
|
331
331
|
'session_id': session_id,
|
|
332
332
|
'draft_state': state_dict,
|
|
333
|
+
'dashboard_url': mcp_config.dashboard_url('optimization', session_id),
|
|
333
334
|
'message': 'Optimization draft updated successfully',
|
|
334
335
|
}
|
|
335
336
|
if response.status_code == 401:
|
|
@@ -371,6 +372,7 @@ def update_optimization_notes_service(
|
|
|
371
372
|
'description': description,
|
|
372
373
|
'strategy_code_keys': list(parsed_codes.keys()) if parsed_codes else [],
|
|
373
374
|
'strategy_codes_captured': len(parsed_codes) if parsed_codes else 0,
|
|
375
|
+
'dashboard_url': mcp_config.dashboard_url('optimization', session_id),
|
|
374
376
|
'message': 'Optimization session notes updated successfully',
|
|
375
377
|
}
|
|
376
378
|
return result
|
|
@@ -448,7 +450,7 @@ def get_optimization_sessions_service(
|
|
|
448
450
|
data = response.json()
|
|
449
451
|
return {
|
|
450
452
|
'status': 'success',
|
|
451
|
-
'sessions': data.get('sessions', []),
|
|
453
|
+
'sessions': mcp_config.with_dashboard_urls('optimization', data.get('sessions', [])),
|
|
452
454
|
'count': data.get('count', 0),
|
|
453
455
|
'message': f'Retrieved {data.get("count", 0)} optimization session(s)',
|
|
454
456
|
}
|
|
@@ -479,6 +481,7 @@ def get_optimization_logs_service(session_id: str) -> dict:
|
|
|
479
481
|
'status': 'success',
|
|
480
482
|
'session_id': session_id,
|
|
481
483
|
'logs': data.get('logs', ''),
|
|
484
|
+
'dashboard_url': mcp_config.dashboard_url('optimization', session_id),
|
|
482
485
|
'message': 'Logs retrieved successfully',
|
|
483
486
|
}
|
|
484
487
|
if response.status_code == 404:
|
|
@@ -687,6 +690,7 @@ def cancel_optimization_service(session_id: str) -> dict:
|
|
|
687
690
|
)
|
|
688
691
|
if response.status_code == 202:
|
|
689
692
|
return {'status': 'success', 'session_id': session_id,
|
|
693
|
+
'dashboard_url': mcp_config.dashboard_url('optimization', session_id),
|
|
690
694
|
'message': f'Optimization {session_id} cancellation requested'}
|
|
691
695
|
if response.status_code == 401:
|
|
692
696
|
return {'status': 'error', 'message': 'Authentication failed'}
|
|
@@ -712,6 +716,7 @@ def terminate_optimization_service(session_id: str) -> dict:
|
|
|
712
716
|
)
|
|
713
717
|
if response.status_code == 202:
|
|
714
718
|
return {'status': 'success', 'session_id': session_id,
|
|
719
|
+
'dashboard_url': mcp_config.dashboard_url('optimization', session_id),
|
|
715
720
|
'message': f'Optimization {session_id} terminated'}
|
|
716
721
|
if response.status_code == 401:
|
|
717
722
|
return {'status': 'error', 'message': 'Authentication failed'}
|
|
@@ -7,6 +7,7 @@ running Jesse, so these tools work the same when the assistant runs on another c
|
|
|
7
7
|
"""
|
|
8
8
|
from typing import Any, List, Optional
|
|
9
9
|
|
|
10
|
+
import jesse.mcp.mcp_config as mcp_config
|
|
10
11
|
from .project_files import CANCEL_TIMEOUT_SECONDS, REQUEST_TIMEOUT_SECONDS, TRANSFER_TIMEOUT_SECONDS, _call
|
|
11
12
|
|
|
12
13
|
# Result pages are bounded by the API (128 KiB of JSON), but a large Monte Carlo record is
|
|
@@ -14,47 +15,70 @@ from .project_files import CANCEL_TIMEOUT_SECONDS, REQUEST_TIMEOUT_SECONDS, TRAN
|
|
|
14
15
|
RESULTS_TIMEOUT_SECONDS = 60
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
def _succeeded(result: dict) -> bool:
|
|
19
|
+
return result.get('status') == 'success'
|
|
20
|
+
|
|
21
|
+
|
|
17
22
|
def get_session_results_service(session_type: str, session_id: str, section: str = 'summary',
|
|
18
23
|
offset: int = 0, limit: int = 50) -> dict:
|
|
19
|
-
|
|
24
|
+
result = _call(
|
|
20
25
|
'get_session_results', '/session-results/get',
|
|
21
26
|
{'session_type': session_type, 'session_id': session_id, 'section': section, 'offset': offset, 'limit': limit},
|
|
22
27
|
RESULTS_TIMEOUT_SECONDS,
|
|
23
28
|
)
|
|
29
|
+
if _succeeded(result):
|
|
30
|
+
# From the type and ID the API echoes back (validated and normalized), so every summary and
|
|
31
|
+
# section page of an existing session carries its link. Page budgets cover the items only.
|
|
32
|
+
result['dashboard_url'] = mcp_config.dashboard_url(result.get('session_type'), result.get('session_id'))
|
|
33
|
+
return result
|
|
24
34
|
|
|
25
35
|
|
|
26
36
|
def get_live_sessions_service(limit: int = 20, offset: int = 0, status_filter: Optional[str] = None,
|
|
27
37
|
mode_filter: Optional[str] = None, title_search: Optional[str] = None) -> dict:
|
|
28
|
-
|
|
38
|
+
result = _call(
|
|
29
39
|
'get_live_sessions', '/session-results/live-sessions',
|
|
30
40
|
{'limit': limit, 'offset': offset, 'status_filter': status_filter, 'mode_filter': mode_filter,
|
|
31
41
|
'title_search': title_search},
|
|
32
42
|
RESULTS_TIMEOUT_SECONDS,
|
|
33
43
|
)
|
|
44
|
+
if _succeeded(result):
|
|
45
|
+
result['sessions'] = mcp_config.with_dashboard_urls('live', result.get('sessions'))
|
|
46
|
+
return result
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _with_session_link_template(result: dict) -> dict:
|
|
50
|
+
"""
|
|
51
|
+
Add the live session link template to a history page. A page is cut to a byte budget on the
|
|
52
|
+
Jesse host (live_history.MAX_RESPONSE_BYTES), so it gets this one constant-size field, which
|
|
53
|
+
fits the budget's transport allowance, rather than a link per session.
|
|
54
|
+
"""
|
|
55
|
+
if _succeeded(result):
|
|
56
|
+
result['session_dashboard_url_template'] = mcp_config.dashboard_url_template('live')
|
|
57
|
+
return result
|
|
34
58
|
|
|
35
59
|
|
|
36
60
|
def get_live_trades_service(start: Any = None, end: Any = None, recent_days: Any = None, mode: Any = 'live',
|
|
37
61
|
exchange: Any = None, symbol: Any = None, session_id: Any = None,
|
|
38
62
|
order: Any = 'newest_first', cursor: Any = None, limit: Any = 100) -> dict:
|
|
39
|
-
return _call(
|
|
63
|
+
return _with_session_link_template(_call(
|
|
40
64
|
'get_live_trades', '/session-results/live-trades',
|
|
41
65
|
{'start': start, 'end': end, 'recent_days': recent_days, 'mode': mode, 'exchange': exchange,
|
|
42
66
|
'symbol': symbol, 'session_id': session_id, 'order': order, 'cursor': cursor, 'limit': limit},
|
|
43
67
|
RESULTS_TIMEOUT_SECONDS,
|
|
44
|
-
)
|
|
68
|
+
))
|
|
45
69
|
|
|
46
70
|
|
|
47
71
|
def get_live_orders_service(start: Any = None, end: Any = None, recent_days: Any = None, mode: Any = 'live',
|
|
48
72
|
exchange: Any = None, symbol: Any = None, session_id: Any = None,
|
|
49
73
|
time_field: Any = 'created_at', status: Any = None, order: Any = 'newest_first',
|
|
50
74
|
cursor: Any = None, limit: Any = 100) -> dict:
|
|
51
|
-
return _call(
|
|
75
|
+
return _with_session_link_template(_call(
|
|
52
76
|
'get_live_orders', '/session-results/live-orders',
|
|
53
77
|
{'start': start, 'end': end, 'recent_days': recent_days, 'mode': mode, 'exchange': exchange,
|
|
54
78
|
'symbol': symbol, 'session_id': session_id, 'time_field': time_field, 'status': status, 'order': order,
|
|
55
79
|
'cursor': cursor, 'limit': limit},
|
|
56
80
|
RESULTS_TIMEOUT_SECONDS,
|
|
57
|
-
)
|
|
81
|
+
))
|
|
58
82
|
|
|
59
83
|
|
|
60
84
|
def run_analysis_service(code: str, inputs: Optional[List[dict]] = None, timeout_minutes: int = 5) -> dict:
|
|
@@ -258,6 +258,7 @@ def update_significance_test_draft_service(session_id: str, state: str) -> dict:
|
|
|
258
258
|
'status': 'success',
|
|
259
259
|
'session_id': session_id,
|
|
260
260
|
'draft_state': state_dict,
|
|
261
|
+
'dashboard_url': mcp_config.dashboard_url('significance_test', session_id),
|
|
261
262
|
'message': 'Significance test draft updated successfully',
|
|
262
263
|
}
|
|
263
264
|
if response.status_code == 401:
|
|
@@ -299,6 +300,7 @@ def update_significance_test_notes_service(
|
|
|
299
300
|
'description': description,
|
|
300
301
|
'strategy_code_keys': list(parsed_codes.keys()) if parsed_codes else [],
|
|
301
302
|
'strategy_codes_captured': len(parsed_codes) if parsed_codes else 0,
|
|
303
|
+
'dashboard_url': mcp_config.dashboard_url('significance_test', session_id),
|
|
302
304
|
'message': 'Significance test session notes updated successfully',
|
|
303
305
|
}
|
|
304
306
|
return result
|
|
@@ -376,7 +378,7 @@ def get_significance_test_sessions_service(
|
|
|
376
378
|
data = response.json()
|
|
377
379
|
return {
|
|
378
380
|
'status': 'success',
|
|
379
|
-
'sessions': data.get('sessions', []),
|
|
381
|
+
'sessions': mcp_config.with_dashboard_urls('significance_test', data.get('sessions', [])),
|
|
380
382
|
'count': data.get('count', 0),
|
|
381
383
|
'message': f'Retrieved {data.get("count", 0)} significance test session(s)',
|
|
382
384
|
}
|
|
@@ -491,6 +493,7 @@ def cancel_significance_test_service(session_id: str) -> dict:
|
|
|
491
493
|
)
|
|
492
494
|
if response.status_code == 202:
|
|
493
495
|
return {'status': 'success', 'session_id': session_id,
|
|
496
|
+
'dashboard_url': mcp_config.dashboard_url('significance_test', session_id),
|
|
494
497
|
'message': f'Significance test {session_id} cancellation requested'}
|
|
495
498
|
if response.status_code == 401:
|
|
496
499
|
return {'status': 'error', 'message': 'Authentication failed'}
|
|
@@ -77,7 +77,9 @@ _HISTORY_COMMON = """
|
|
|
77
77
|
your code the complete selection on the Jesse host in its own database view.
|
|
78
78
|
|
|
79
79
|
Each record carries session_id; "sessions" describes the sessions on this page (title,
|
|
80
|
-
mode, exchange, status; {"exists": false} for a deleted one)
|
|
80
|
+
mode, exchange, status; {"exists": false} for a deleted one). To link a session for the
|
|
81
|
+
user, replace {session_id} in "session_dashboard_url_template" with its ID ("" when
|
|
82
|
+
no dashboard URL is known; a deleted session has no page). "is_active" and a
|
|
81
83
|
stopped status for a session left marked running come from Jesse's worker registry at
|
|
82
84
|
that moment, best effort, not from the page's database view. Saved key and
|
|
83
85
|
notification credential values are redacted per record's session (every saved key's
|
|
@@ -130,7 +132,9 @@ def register_session_results_tools(mcp):
|
|
|
130
132
|
"session_id", "session_status", "status_note" (for unfinished runs), "title", "form",
|
|
131
133
|
results, "error" (exception + traceback tail) and "sections"/"counts". For other
|
|
132
134
|
sections: {"section", "items", "offset", "limit", "returned", "total",
|
|
133
|
-
"next_offset", "has_more", "truncated_by_size"}.
|
|
135
|
+
"next_offset", "has_more", "truncated_by_size"}. Every successful response, summary
|
|
136
|
+
or section, also has "dashboard_url": the session's page on the dashboard. Give the
|
|
137
|
+
user that link, not the bare session ID. Values are exactly as stored;
|
|
134
138
|
NaN/infinite numbers are null. Errors: {"status": "error", "error_type", "message"}
|
|
135
139
|
with error_type "not_found", "invalid_request", "item_too_large" (use
|
|
136
140
|
run_analysis), "offset_too_large", "live_plugin_unavailable" (live sessions need
|
|
@@ -161,9 +165,11 @@ def register_session_results_tools(mcp):
|
|
|
161
165
|
Returns:
|
|
162
166
|
dict: {"status": "success", "sessions": [{"id", "title", "status", "is_active",
|
|
163
167
|
"session_mode", "exchange", "routes", "created_at", "updated_at", "finished_at",
|
|
164
|
-
"has_error"}], "next_offset"} or an error with error_type
|
|
165
|
-
"live_plugin_unavailable" or "invalid_request".
|
|
166
|
-
|
|
168
|
+
"has_error", "dashboard_url"}], "next_offset"} or an error with error_type
|
|
169
|
+
"live_plugin_unavailable" or "invalid_request". "dashboard_url" opens that session
|
|
170
|
+
on the dashboard: when the user asks for a session or its link, answer with it, not
|
|
171
|
+
with the bare ID. Read one with get_session_results(session_type="live",
|
|
172
|
+
session_id=...).
|
|
167
173
|
"""
|
|
168
174
|
return await run_blocking(get_live_sessions_service, limit, offset, status_filter, mode_filter, title_search)
|
|
169
175
|
|
|
@@ -197,7 +203,8 @@ def register_session_results_tools(mcp):
|
|
|
197
203
|
dict: {"status": "success", "dataset": "live_trades", "source", "range",
|
|
198
204
|
"filters", "order", "items", "limit", "returned", "total", "has_more",
|
|
199
205
|
"truncated_by_size", "truncated_by_orders", "all_records_returned", "next_page",
|
|
200
|
-
"sessions", "
|
|
206
|
+
"sessions", "session_dashboard_url_template", "open_trades_not_included", "note",
|
|
207
|
+
"paging"} or an error with
|
|
201
208
|
error_type "invalid_request", "invalid_cursor", "mode_mismatch",
|
|
202
209
|
"too_many_orders" (a trade with over 10,000 executed orders), "item_too_large",
|
|
203
210
|
"live_plugin_unavailable", "read_failed", "authentication_failed", or
|
|
@@ -230,8 +237,8 @@ def register_session_results_tools(mcp):
|
|
|
230
237
|
dict: {"status": "success", "dataset": "live_orders", "source", "range",
|
|
231
238
|
"filters", "order", "items", "limit", "returned", "total", "has_more",
|
|
232
239
|
"truncated_by_size", "truncated_by_orders" (always false), "all_records_returned",
|
|
233
|
-
"next_page", "sessions", "
|
|
234
|
-
get_live_trades.
|
|
240
|
+
"next_page", "sessions", "session_dashboard_url_template", "counts_by_status",
|
|
241
|
+
"note", "paging"} or an error like get_live_trades.
|
|
235
242
|
"""
|
|
236
243
|
mcp.tool()(get_live_orders)
|
|
237
244
|
# A misspelled filter must be refused, not dropped, and the text "null" must stay text: either
|
|
@@ -221,6 +221,8 @@ def register_significance_test_tools(mcp):
|
|
|
221
221
|
|
|
222
222
|
Returns:
|
|
223
223
|
{ "status": "success", "sessions": [...], "count": int, "message": ... }
|
|
224
|
+
Each session row has "dashboard_url", its page on the dashboard: give the user
|
|
225
|
+
that link, not the bare ID.
|
|
224
226
|
"""
|
|
225
227
|
return await run_blocking(
|
|
226
228
|
get_significance_test_sessions_service,
|
|
@@ -5,7 +5,7 @@ import ray
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
import jesse.helpers as jh
|
|
7
7
|
from jesse.services.progress import publish_status
|
|
8
|
-
from jesse.services.ray_runtime import initialize_ray
|
|
8
|
+
from jesse.services.ray_runtime import UnsupportedRayVersionError, initialize_ray
|
|
9
9
|
import jesse.services.logger as logger
|
|
10
10
|
from jesse import exceptions
|
|
11
11
|
from jesse.services.redis import sync_publish, is_process_active
|
|
@@ -82,8 +82,9 @@ class MonteCarloRunner:
|
|
|
82
82
|
initialize_ray(self.cpu_cores)
|
|
83
83
|
logger.log_monte_carlo(f"Successfully started Monte Carlo session with {self.cpu_cores} CPU cores", session_id=self.session_id)
|
|
84
84
|
self.ray_started_here = True
|
|
85
|
-
except MemoryError:
|
|
86
|
-
# Startup memory limits also cover Ray services and the worker heap
|
|
85
|
+
except (MemoryError, UnsupportedRayVersionError):
|
|
86
|
+
# Startup memory limits also cover Ray services and the worker heap, and
|
|
87
|
+
# fewer CPUs cannot make an unsupported Ray start.
|
|
87
88
|
raise
|
|
88
89
|
except Exception as e:
|
|
89
90
|
logger.log_monte_carlo(f"Error initializing Ray: {e}. Falling back to 1 CPU.", session_id=self.session_id)
|
|
@@ -7,7 +7,7 @@ import ray
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
import jesse.helpers as jh
|
|
9
9
|
from jesse.services.progress import publish_status
|
|
10
|
-
from jesse.services.ray_runtime import initialize_ray
|
|
10
|
+
from jesse.services.ray_runtime import UnsupportedRayVersionError, initialize_ray
|
|
11
11
|
import jesse.services.logger as logger
|
|
12
12
|
from jesse import exceptions
|
|
13
13
|
from jesse.services.redis import sync_publish
|
|
@@ -163,8 +163,9 @@ class Optimizer:
|
|
|
163
163
|
initialize_ray(self.cpu_cores)
|
|
164
164
|
logger.log_optimize_mode(f"Successfully started optimization session with {self.cpu_cores} CPU cores", self.session_id )
|
|
165
165
|
self.ray_started_here = True
|
|
166
|
-
except MemoryError:
|
|
167
|
-
# Startup memory limits also cover Ray services and the worker heap
|
|
166
|
+
except (MemoryError, UnsupportedRayVersionError):
|
|
167
|
+
# Startup memory limits also cover Ray services and the worker heap, and
|
|
168
|
+
# fewer CPUs cannot make an unsupported Ray start.
|
|
168
169
|
raise
|
|
169
170
|
except Exception as e:
|
|
170
171
|
logger.log_optimize_mode(f"Error initializing Ray: {e}. Falling back to 1 CPU.", self.session_id )
|
|
@@ -6,6 +6,7 @@ import os
|
|
|
6
6
|
from datetime import datetime
|
|
7
7
|
import jesse.helpers as jh
|
|
8
8
|
from jesse.research import backtest
|
|
9
|
+
from jesse.services.ray_runtime import initialize_ray
|
|
9
10
|
import matplotlib
|
|
10
11
|
matplotlib.use('Agg') # Use non-interactive backend
|
|
11
12
|
from matplotlib import pyplot as plt
|
|
@@ -132,7 +133,7 @@ def monte_carlo_candles(
|
|
|
132
133
|
ray_started_here = False
|
|
133
134
|
if not ray.is_initialized():
|
|
134
135
|
try:
|
|
135
|
-
|
|
136
|
+
initialize_ray(cpu_cores)
|
|
136
137
|
print(f"Successfully started Monte Carlo simulation with {cpu_cores} CPU cores")
|
|
137
138
|
ray_started_here = True
|
|
138
139
|
except Exception as e:
|
|
@@ -7,6 +7,7 @@ import os
|
|
|
7
7
|
from datetime import datetime
|
|
8
8
|
import jesse.helpers as jh
|
|
9
9
|
from jesse.research import backtest
|
|
10
|
+
from jesse.services.ray_runtime import initialize_ray
|
|
10
11
|
from jesse.services.simulation_assumptions import resolve_annualization
|
|
11
12
|
import matplotlib
|
|
12
13
|
matplotlib.use('Agg') # Use non-interactive backend
|
|
@@ -156,7 +157,7 @@ def monte_carlo_trades(
|
|
|
156
157
|
ray_started_here = False
|
|
157
158
|
if not ray.is_initialized():
|
|
158
159
|
try:
|
|
159
|
-
|
|
160
|
+
initialize_ray(cpu_cores)
|
|
160
161
|
print(f"Successfully started Monte Carlo simulation with {cpu_cores} CPU cores")
|
|
161
162
|
ray_started_here = True
|
|
162
163
|
except Exception as e:
|
|
@@ -14,6 +14,7 @@ from jesse import exceptions
|
|
|
14
14
|
from jesse.config import config as jesse_config, set_config
|
|
15
15
|
from jesse.research.backtest import _reset_research_runtime_state
|
|
16
16
|
from jesse.research.monte_carlo.common import DEFAULT_CPU_USAGE_RATIO, MIN_CPU_CORES
|
|
17
|
+
from jesse.services.ray_runtime import initialize_ray
|
|
17
18
|
|
|
18
19
|
from jesse.routes import router
|
|
19
20
|
|
|
@@ -227,7 +228,7 @@ def _execute_optimize(
|
|
|
227
228
|
# ------------------------------------------------------------ init Ray
|
|
228
229
|
ray_started_here = False
|
|
229
230
|
if not ray.is_initialized():
|
|
230
|
-
|
|
231
|
+
initialize_ray(cpu_cores)
|
|
231
232
|
ray_started_here = True
|
|
232
233
|
|
|
233
234
|
best_trials: list = []
|