jesse 3.3.3__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.3/jesse.egg-info → jesse-3.3.4}/PKG-INFO +1 -1
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/agent_rules.md +22 -4
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/mcp_config.py +33 -1
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/live_trading.md +6 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/session_analysis.md +4 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/server.py +3 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/backtest.py +1 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/monte_carlo.py +3 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/optimization.py +3 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/backtest.py +4 -1
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/live.py +1 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/monte_carlo.py +7 -1
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/optimization.py +6 -1
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/session_analysis.py +30 -6
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/significance_test.py +4 -1
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/session_results.py +15 -8
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/significance_test.py +2 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/live_history.py +2 -1
- jesse-3.3.4/jesse/version.py +1 -0
- {jesse-3.3.3 → jesse-3.3.4/jesse.egg-info}/PKG-INFO +1 -1
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_dashboard_url.py +84 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_live_history.py +26 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_live_sessions.py +1 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_session_results.py +24 -0
- jesse-3.3.3/jesse/version.py +0 -1
- {jesse-3.3.3 → jesse-3.3.4}/LICENSE +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/MANIFEST.in +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/README.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/app.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/candle_pipelines/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/candle_pipelines/base_candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/candle_pipelines/gaussian_noise.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/candle_pipelines/gaussian_resampler.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/candle_pipelines/moving_block_bootstrap.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/cli.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/config.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/constants.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/ai_model_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/analysis_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/auth_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/backtest_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/candles_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/closed_trade_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/config_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/data_provider_credentials_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/e2e_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/exchange_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/file_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/live_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/lsp_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/mcp_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/monte_carlo_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/notification_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/optimization_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/order_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/period_templates_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/project_files_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/research_scripts_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/route_templates_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/session_results_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/significance_test_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/strategy_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/system_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/tabs_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/controllers/websocket_controller.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/enums/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/exceptions/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/exchanges/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/exchanges/exchange.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/exchanges/sandbox/Sandbox.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/exchanges/sandbox/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/factories/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/factories/candle_factory.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/factories/order_factory.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/helpers.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/acosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ad.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/adosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/adx.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/adxr.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/alligator.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/alma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ao.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/apo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/aroon.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/aroonosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/atr.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/avgprice.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/bandpass.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/beta.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/bollinger_bands.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/bollinger_bands_width.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/bop.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cci.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cfo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cg.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/chande.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/chop.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cksp.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cmo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/correl.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/correlation_cycle.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cvi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/cwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/damiani_volatmeter.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/dec_osc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/decycler.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/dema.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/devstop.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/di.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/dm.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/donchian.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/dpo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/dti.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/dx.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/edcf.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/efi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ema.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/emd.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/emv.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/epma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/er.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/eri.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/fisher.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/fosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/frama.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/fwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/gatorosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/gauss.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/heikin_ashi_candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/high_pass.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/high_pass_2_pole.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/hma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/hull_suit.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/hurst_exponent.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/hwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ichimoku_cloud.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ichimoku_cloud_seq.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ift_rsi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/itrend.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/jma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/jsa.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/kama.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/kaufmanstop.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/kdj.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/keltner.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/kst.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/kurtosis.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/kvo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/linearreg.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/linearreg_angle.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/linearreg_intercept.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/linearreg_slope.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/lrsi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/maaq.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mab.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/macd.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mama.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/marketfi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mass.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mcginley_dynamic.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mean_ad.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/median_ad.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/medprice.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mfi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/midpoint.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/midprice.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/minmax.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mom.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/mwdx.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/natr.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/nma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/nvi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/obv.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/pfe.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/pivot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/pma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ppo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/pvi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/pwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/qstick.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/reflex.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/roc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rocp.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rocr.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rocr100.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/roofing.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rsi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rsmk.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rsx.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/rvi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/safezonestop.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/sar.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/sinwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/skew.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/sma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/smma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/squeeze_momentum.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/sqwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/srsi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/srwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/stc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/stddev.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/stiffness.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/stochastic.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/stochf.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/supersmoother.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/supersmoother_3_pole.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/supertrend.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/support_resistance_with_break.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/swma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/t3.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/tema.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/trange.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/trendflex.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/trima.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/trix.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/tsf.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/tsi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ttm_squeeze.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ttm_trend.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/typprice.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ui.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/ultosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/var.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vi.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vidya.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vlma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/volume.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vosc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/voss.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vpci.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vpt.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vpwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vwap.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vwma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/vwmacd.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/wad.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/waddah_attr_explosion.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/wclprice.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/wilders.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/willr.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/wma.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/wt.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/zlema.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/indicators/zscore.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/info.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/libs/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/libs/custom_json/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/libs/dynamic_numpy_array/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/USAGE_LIMITS.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/agent_rules.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/auth.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/manager.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/backtest_management.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/backtest_metrics.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/candle.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/charts.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/configuration.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/credentials.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/indicator.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/monte_carlo.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/optimization.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/position_risk.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/research_scripts.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/significance_test.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/strategy.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/strategy_catalog.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/strategy_examples.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/resources/utilities.md +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/test.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/analysis.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/config.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/credentials.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/general.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/indicator.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/live.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/offload.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/project_files.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/research_scripts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/auth.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/config.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/credentials.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/general.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/indicator.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/locks.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/project_files.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/session_config.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/strategy.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/services/strategy_catalog.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/strategy.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/strategy_catalog.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/tools/strict_arguments.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/mcp/usage_limits.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/AiModel.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/BacktestSession.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Candle.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/ClosedTrade.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/DataProviderCredentials.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Exchange.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/ExchangeApiKeys.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/FuturesExchange.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/LiveChart.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/LiveEquitySnapshot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/LiveSession.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Log.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/MonteCarloSession.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/NotificationApiKeys.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/OpenTab.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/OptimizationSession.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Option.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Order.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Orderbook.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/PeriodTemplate.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Position.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Route.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/RouteTemplate.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/SignificanceTestSession.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/SpotExchange.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Ticker.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/Trade.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/models/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/backtest_mode.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/data_provider.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/exchange_api_keys.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/ApexOmniPerpetualTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/apex_omni_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-arm.dylib +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk-x86.dylib +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.dylib +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/libzklink_sdk.so +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-arm.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-pc.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk-x86.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.dll +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Apex/omni_files/zklink_sdk.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFutures.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinancePerpetualFuturesTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/BinanceUSSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Binance/binance_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/BitfinexSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bitfinex/bitfinex_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitSpotTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDCPerpetualTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/BybitUSDTPerpetualTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Bybit/bybit_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/CoinbaseSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Coinbase/coinbase_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateSpotMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/GateUSDTPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Gate/gate_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/HyperliquidPerpetualTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Hyperliquid/hyperliquid_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetualMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenPerpetualTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/KrakenSpotMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Kraken/kraken_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinFuturesMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinSpot.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinSpotMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/KuCoinUSDTPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/KuCoin/kucoin_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterMain.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetual.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/LighterPerpetualTestnet.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/lighter_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-darwin-arm64.dylib +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-amd64.so +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-linux-arm64.so +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/Lighter/signer_libs/lighter-signer-windows-amd64.dll +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/import_candles_mode/drivers/interface.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/monte_carlo_mode/MonteCarloRunner.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/monte_carlo_mode/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/notification_api_keys.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/optimize_mode/Optimize.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/optimize_mode/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/optimize_mode/fitness.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/significance_test_mode/SignificanceTestRunner.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/significance_test_mode/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/modes/utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/candle_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/closed_trade_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/data_provider_credentials_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/live_chart_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/live_equity_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/live_session_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/open_tab_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/order_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/period_template_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/repositories/route_template_repository.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/backtest.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/import_candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/ml.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/monte_carlo/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/monte_carlo/common.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/monte_carlo/monte_carlo_candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/monte_carlo/monte_carlo_trades.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/optimize/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/rule_significance_testing/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/rule_significance_testing/bootstrap.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/rule_significance_testing/common.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/rule_significance_testing/plots.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/rule_significance_testing/rule_significance.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/research/rule_significance_testing/simulator.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/routes/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/analysis_jobs.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/api.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/auth.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/broker.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/cache.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/candle_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/charts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/closed_trade_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/color.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/coordination_client.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/coordination_runtime.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/custom_candle_import.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/dashboard_url.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/db.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/e2e_database.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/env.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/exchange_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/failure.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/file.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/general_info.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/contracts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/credential_validation.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/errors.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/massive_stocks.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/providers/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/historical_data/registry.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/installer.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/jesse_trade.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/live_chart_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/logger.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/lsp.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/lsp_download.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/metrics.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/migrator.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/multiprocessing.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/nofollow_fs.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/notifier.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/order_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/position_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/process_tree.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/progress.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/progressbar.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/project_files.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/ray_runtime.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/redis.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/report.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/research_jobs.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/session_results.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/simulation_assumptions.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/strategy_handler/ExampleStrategy/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/strategy_handler/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/strategy_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/symbol_catalog.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/table.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/timescale.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/trading_hours.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/transformers.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/validators.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/web.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/services/ws_manager.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/200.html +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/404.html +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/-QFIf-8y.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/08VXUWAP.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/0ONmXmPL.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/1OJtSa29.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/2IIEA8gg.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/2LnYzLCR.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/32DixAac.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/32_DOadk.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/35Gd1l6b.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/3KuTZQMl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/3kHYRJ9h.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/43DmfD33.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/4G7pJPwS.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/5eyTD99u.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/6RTg0lbw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/6d_DINYp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/95zPyYrn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/9S921ylM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/9SuGUQxQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Agoi6m7K.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Aw9tIJeK.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B1E1h4Tw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B26H0THF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B2OO5cIa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B2kYdT-M.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B3Tmza7s.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B40NqdSB.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B4CnDxnp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B4t1Dpxy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B5-_aFwp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B55fAccV.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B5W6OYN7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B5e22D9r.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B5ulf6Jh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B68TUdTA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B6UiomQj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B6cMlEJd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B6kMFxG1.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B8J7ngcE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B8_t_EnB.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B9C647eN.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B9JPFI3C.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BA0WJkYB.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BB8QmrLY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BBDov63s.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BBRdoL6s.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BC-YRYM7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BD87b4dR.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BDNMzG2s.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BDy3RgVq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BEEn4gHE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BEtHBSE6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BGFFIZX_.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BGRKdXyl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BG_RkxjH.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BHVL4DrI.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BHWKrbxM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BI3Y1cOA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BIEGKqOo.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BIfCV4Ms.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BK0UMAm8.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BKD0O2_Q.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BKPLz4po.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BKcRqSit.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BKc_k7G-.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BKxtCVv1.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BLhvb9Y-.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BMrGqELX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BN08jTvb.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BOINE9jH.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BOotOW0E.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BQYoEE-E.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BRSARzao.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BRgglKlM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BSFCf8l4.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BSSBbjzH.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BSWPekZh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BSkKS2hE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BSt81nX4.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BTkZN-kY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BUvLBkUT.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BWB_6_ms.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BWPQTe0t.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BXViO-2h.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BY-ye-pC.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BYdfvclj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BYgofb2h.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BZ4HG2rr.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BZCL-v6S.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B_aZeMMh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/B_tTalzw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Ba7i2nA0.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BaTYBKiJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BacktestTabs.BijLvS3O.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BbAZZZ7p.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BbMWPibr.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bc_sGQ0U.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BdwtN8NV.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BeGwcela.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Beywemwu.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bf9kHOm6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BfbyNUB7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bh7THQLS.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BhjAJghj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BiX_3ZGn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bk0mhOc9.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bkml37m-.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BkrtENUF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bm3Qr25_.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BmHiIK7b.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bn7V5xpM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BnjxR4X6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bnr-372i.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bo9Dl7tn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BoEzQrVW.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BoK4YRpC.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BolyLLo5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bp8RYZPa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bpxkdeyh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BrD0VTWt.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bri6UV-V.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Brm5PLIv.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BtUnaqJ2.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Btx78D0D.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Buu8uHmp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BvzEE6Lm.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BwWrilGY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BwjZg7Kw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bx1FflLF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bxkupp3x.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/By-L4I7w.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/By1ptfmn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ByqV7_Wn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Bz4Y3fRF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BzGFDp20.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BzMNZVT7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/BzRncHX3.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C-LZuMrd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C-y9NEjX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C1BzkLxr.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C1IaaOeX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C25aelnV.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C2u17_gr.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C44XaChS.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C531GsRP.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C5_-GSwl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C7h46wYY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C8468PWD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C8Ef5oNN.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C8r90Shi.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CAi0_s86.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CC2rA5mh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CC3Dc58n.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CCQjLJmZ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CCUjCBK5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CDeNXAV0.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CErjEBUy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CFAvbRBv.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CGx505Mf.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CHQ94UKr.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CIPQ_RoX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CIpIsXEF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CJ3rzSJv.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CKgYSDhl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CNhAU_yo.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/COeFqPAd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/COju__tp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CQihkeLA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CRal5XOA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CRfGWb83.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CRyZUaTi.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CRzLMJPS.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CSDNxAMC.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CTweb8Dz.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CUKGrt9p.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CVaqCwHa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CW42rLZD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CWDvEqlu.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CXHoNUfW.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CXtmUGW6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CXuuVbXE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CYsHHI_Y.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CZLZPU9y.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CZiHAFz-.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CZoCCMwk.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CZsCp6_J.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/C_8bwKvT.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CaLoWpdj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CaP30uTv.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cb4Vim4T.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cba4tSYP.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CcwsVR0C.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CdkpiU2Y.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Ce441ncu.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Ceyelwdz.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cf9Ao90m.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CfSJPG6W.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cfl0F_Ix.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CfvQ0GVj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ChJth8dy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cimd5fb3.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CircleProgressbar.yGgm_qEa.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CjM6HreG.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CjSZG47B.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CkJ3IzwM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CkRax0sH.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cl4KV_tk.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ClA4MMiD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ClQpkZ_L.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ClamHrr6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cm7r79vr.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cn3B6b9t.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cnfgdmp5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CoKYUvtC.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CoMST1W2.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ComPDbET.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CopQ2nXW.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CowLSvep.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CozAH55r.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CpL23Fmb.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CpzslTdj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cr7JoK-F.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CrVSgIkM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CroGarxd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cs2F2srj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CsQS60Ue.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CsvMBhTu.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cu5M3efA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CvrMaf9k.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CximN0RY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CyaoTIaz.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/CytPyiJO.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Cz7rf_X8.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Czxs1Lr1.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D-9WcGfc.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D-kcNTYM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D-oSqn_W.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D-ptJ9y-.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D05T4iGw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D0mw5jGK.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D1Ny8MsW.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D2VuFIIh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D2ymy_yS.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D3hlyOfw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D4-rlkSU.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D5GhRiPb.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D5ROd09N.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D76weKjv.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D94iqX0Y.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D9y3cZ0N.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DBG_jd69.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DBrRvF6k.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DCMvuGdi.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DCQb3MpD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DD3ehtKZ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DDpmG2fV.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DDwmkQR0.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DE9FIzhz.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DEzv-VFF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DFfOA-Hn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DFfgcuRt.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DFwEHpFD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DGnxmmBi.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DHBI_yxQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DHPkxzYJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DHpiXF5c.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DIMkf-bt.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DISqw1ZD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DJW761E_.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DK0GhfdP.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DKCQ3kY7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DLJdWeDZ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DLMcThcU.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DLSXrvMj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DMUM7wLl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DMZUnbo6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DMnEoi8l.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DNvWHFeH.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DOTl9kKz.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DOwBwxAc.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DPDvM2ct.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DPUBG1Sa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DQ-b8cau.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DQPPsGdR.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DQU07tlD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DQeMqN38.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DQwYfKfQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DRFjx7u4.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DRQTUBBy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DSRkZAVd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DSh2HLQt.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DSxVysNG.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DT7zqm-g.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DTj74zXo.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DUxEecLs.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DV17i1UV.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DV3o63ZY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DVG0V4jx.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DVQuIRkW.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DWiCCCWX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DX9HmIul.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DXG-b-1a.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DXgieCCJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DYRyhno9.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DYlRzrDj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DZFCIeNp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DZWexK4Q.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D_Lu-MrJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D_Qp7VhD.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D_Sm39l5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/D_XYh1V1.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DajP-uHd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DauUninz.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DaxD0QDq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DaxQctDl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Db4fpp4X.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DbInun42.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dbw3yKNo.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dc0bEyG5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DdL9SqIa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DdZzhEjZ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dduc7CfM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/De2hgUGE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DezsRK8O.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Df2xbC6M.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DfC9-Oas.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DgPtEepw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DgfQ8roX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DhmEMT88.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DiqhDmo8.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Diy88_8O.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DjAgHZrJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DkiUMXvE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DkmNSMHY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DkqhCAOL.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dl3pNQBR.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DlxfLgwf.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DmFYnCc9.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DmHpPYUd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DmNVVboZ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dmf8Y0ON.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dmhjelgj.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DmnVzVBc.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DnKPLd6d.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DnToyrRv.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Do35n8oq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DpFanUEy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DpTtcPZs.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dpc0kmwU.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dq8dNoUO.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DqJzYO7Y.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DqXIJaHE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DrH0SRf2.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Ds29f9ZA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Ds9iBrvx.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dt39crSB.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dt9aNFbE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DtX02f_x.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DtiqU4Ud.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DtqQGdEG.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dw3KmPTn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/DxSv1ANE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dxj8dFzq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dxp_UTNE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dyqgk9ID.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Dz8kfdTw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/E1ZWqqYd.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/EJNjM-U5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/EUqPIrTm.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/EkTgQK41.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Ffc-wpi1.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/FvmIjYaQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/G2qN-x4c.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/HSRijeU2.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/HVfn8BjE.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/HbO86Wj8.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Hsn-rFuA.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Hza2DNlp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ICt9zdTY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/IKeJ43Xq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/IXshMDJQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Inter-VariableFont_slnt_wght.Cl4AQHp9.ttf +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/J0iKGLDy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/JVoApnG_.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/JjuYFqoF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/JpkrmRYq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/JxrqHDML.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/KgIFLbLy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/L2jIIa9o.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/LO_BkMJ8.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/LiveTabs.rsQh4sN8.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/MajH5w9w.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/NEE52Syq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/OwFc4i_0.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ProgressStatusText.BQK0FaGL.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/QZfQtQzF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/QoymgQo0.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/SOo6toE5.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/SRo1HocX.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/StrategiesSidebar.B-brLowb.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/TDhf81zB.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/TGksF7tq.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/TradeHistoryChart.Bs0aEPiQ.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/VbXTXTou.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/WF6tEroY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/WFnVOHr3.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/WGRu4rDx.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/WZ5HE0X3.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Y2pL5qgw.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/YdFKNLmY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/Z5eAx3Zn.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_3zCpt1T.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_7BVYBMY.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_b8AQjYy.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_id_.B7_JgFfA.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_id_.Cb3WvDCW.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_id_.j0n5fqTK.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/_z_6LxFK.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/aYLzAr85.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/axvP9fKg.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/b50CsBaQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/bBgN0Y0r.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/bTuwJoIa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/bWuRL8Ho.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/codicon.Brq4_Ui5.ttf +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/css.worker-B_vtbeex.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/dhy_KTgc.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/eENhBx9Z.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/editor.BVn6Eoal.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/entry.DU6LnkKz.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/error-404.DjFB7pgG.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/error-500.BG9pmads.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/fmXr3nnJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/foABv0nJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/fwtXNY1n.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/gEsa7Idh.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/gp-XZpBa.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/hBpBmjHp.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/hdxB67uV.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/hePW80VL.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/html.worker-C0o__ma4.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/i0X4ZdIN.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ibI1KQep.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/j5_BjaI1.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/json.worker-YsJGeJy7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/jz3gp08z.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/lP7_xLqx.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/live.BHsUui2i.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/logo-dark.tKoQPl1k.svg +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/logo-light.CS4l4ePq.png +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/mnTiCSRt.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/monte-carlo.SA-Jni4T.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/nFMaYfgc.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/nr791fC2.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/nrRF7I-f.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/nuxt-monaco-editor/node_modules/monaco-editor/esm/metadata.d.ts +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/nuxt-monaco-editor/node_modules/monaco-editor/esm/metadata.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/oN7GSZWc.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/onAF5SnQ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/oz_6vUea.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/paCCX65n.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/pages.2jeyaLEx.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/qpEHnBAB.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/sB-x3p7T.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/sBoK_t0W.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/sTdyETAW.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/significance-test.C3_9t58f.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/sltzmVWM.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/strategies.CZAezJwX.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/toggleHighContrast.BIHgMxab.css +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/ts.worker-BN13fC-t.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/u9_Y1g7K.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/uFMmaQO6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/uHUmCDd7.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/uR-B8b7I.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/u_o9HDF2.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/uhdI0v04.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/v-e-WZYS.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/v5am0c2l.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/vC0cNbDJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/vc9XnyOF.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/wbypxrpR.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/xAOFb7cl.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/xQegFPeJ.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/xgNQ-z8D.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/xk2_4sNk.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/y2WM_oP3.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/y_x7m0Ik.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/yjvMp0c6.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/_nuxt/yqdSDlAg.js +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/favicon.ico +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/favicons/android-chrome-192x192.png +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/favicons/android-chrome-512x512.png +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/favicons/apple-touch-icon.png +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/favicons/favicon-16x16.png +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/favicons/favicon-32x32.png +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/index.html +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/static/robots.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_app.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_closed_trades.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_exchanges.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_logs.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_orderbook.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_orders.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_positions.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_tickers.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/store/state_trades.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/CanAddClosedTradeToStore/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/RealStrategyRegression1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/RealStrategyRegression2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/RealStrategyRegression3/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Strategy.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test01/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test02/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test04/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test05/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test06/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test07/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test08/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test09/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test10/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test11/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test12/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test13/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test14/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test15/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test16/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test17/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test18/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test19/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test20/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test21/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test22/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test23/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test24/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test25/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test26/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test27/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test28/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test29/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test30/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test31/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test32/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test33/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test34/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test35/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test36/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test37/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test38/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test39/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test40/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test41/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test44/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test45/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test46/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test47/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/Test48/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestAddHorizontalLineToCandleChart/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestAddHorizontalLineToExtraChart/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestAddLineToCandleChart/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestAddLineToExtraChart/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestAfterMethod/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestAverageEntryPriceProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestBalanceAndFeeReductionWorksCorrectlyInSpotModeInBothBuyAndSellOrders/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestBalancesAreHandledCorrectlyForCancellingOrdersInSpot/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestBaseAndQuoteAssetProperties/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestBeforeMethod/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestBeforeTerminate/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionLong2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanCancelEntryOrdersAfterOpenPositionShort2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanOpenANewPositionImmediatelyAfterClosingViaUpdatePosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanRunWithoutShorting/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanSubmitStopLossOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanSubmitTakeProfitAndStopLossAtSameTimeInSpot/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeEqualToCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCanSubmitTakeProfitOrderWithSizeLessThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCannotSetStopLossOrderInGoLong/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCannotSetTakeProfitOrderInGoLong/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCannotSpendMoreThanAvailableBalance/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCannotSubmitStopLossOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCannotSubmitTakeProfitOrderWithSizeMoreThanCurrentPositionQty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCapitalPropertyRaisesNotImplementedError/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestClosedTradeAfterExitingTrade/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCommonWarmupStart/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCurrentRouteIndex1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestCurrentRouteIndex2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestDailyBalanceStoresPortfolioValue/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestDailyBalancesProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestDataRoutes1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestDataRoutes2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestDefaultHyperparameters/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestDnaMethod/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestEmptyStrategy/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestEntryOrdersAndExitOrdersProperties/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestExchangeTypeProperty1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestExchangeTypeProperty2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestFuturesExchangeAvailableMargin/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestGeneratedDataRouteExecutionBTC/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestGeneratedDataRouteExecutionETH/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestHasLongAndShortEntryOrdersPropertiesInFilters/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestHasLongEntryOrdersProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestHasShortEntryOrdersProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestIncreasedAndReducedCount/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestIncreasingShortPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestInsufficientMargin1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestInsufficientMargin2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestInsufficientMargin3/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLeverageProperty1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLeverageProperty2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLiquidationInCrossModeForShortTrade/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLiquidationInIsolatedModeForLongTrade/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLiquidationInIsolatedModeForShortTrade/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLogMethodInStrategyClass/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLongLifecycleAcrossTradingModes/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestLongSparseGap/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMarkPrice/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMarketOrderForLowPriceDifference/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMetrics1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMultiInstrumentReplayA/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMultiInstrumentReplayB/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryLongPositions/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestMultipleEntryOrdersUpdateEntryShortPositions/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOnCancelMethod/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOnClosePosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOnRouteOpenPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOnRouteOpenPosition2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOptimizationIsolation/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOrderIsStopLossProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOrderIsTakeProfitProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOrderPriceCannotBeGreaterThanZero/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOrderValueProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOrdersAreSortedBeforeExecution/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestOversizedReduceOnlyExitAccounting/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPortfolioValue/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPortfolioValueIncludesPositionValueAndOpenOrdersValue/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositionExchangeTypeProperty1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositionExchangeTypeProperty2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositionOpenIncreaseReduceCloseEventsInSpot/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositionTotalCostProperty/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositionWithLeverage1/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositionWithLeverage2/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestPositions/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestProperBalanceHanldingInSpotAfterOrderCancellation/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestProtectiveOrdersAcrossTradingModes/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestReduceOnlyMarketOrders/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestRuleSignificanceAlignment/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestRuleSignificanceFailure/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestShortInSpot/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestSparseTimestampRoutes/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceLongPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestStopLossPriceIsReplacedWithMarketOrderForBetterPriceShortPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestStopOrderShouldConsiderExecutedTakeProfitOrdersInSpot/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestStrategyChartsReport/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestStrategyVariablesAreResetBeforeOpeningNewPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientLongPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestTakeProfitPriceIsReplacedWithMarketOrderWhenMoreConvenientShortPosition/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestTerminate/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestTradingHours/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestUsageOfShouldCancelRaisesNotImplementedError/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestVanillaStrategy/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestWalletBalance/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/TestWithoutCancelMethod/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/strategies/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/testing_utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse/utils.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse.egg-info/SOURCES.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse.egg-info/dependency_links.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse.egg-info/entry_points.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse.egg-info/requires.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/jesse.egg-info/top_level.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/requirements.txt +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/setup.cfg +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/setup.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/conftest.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/data/__init__.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/data/test_candles_0.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/data/test_candles_1.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/data/test_candles_indicators.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/mcp_tool_adapters.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_backtest.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_backtest_session_chart_data.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_backtest_session_chart_images.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_broker.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_candle_copy.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_candle_service.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_candle_timeframe_filter.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_chart_data_serialization.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_completed_trade.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_config_safety.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_conflicting_orders.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_coordination.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_coordination_helpers.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_dynamic_numpy_array.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_e2e_database.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_exchange.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_helpers.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_historical_data_contracts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_import_and_backtest_request_boundaries.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_import_candle_drivers.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_import_candles.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_import_candles_workflow.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_indicators.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_isolated_backtest.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_jesse_trade_routes.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_live_session_chart_data.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_live_strategy_charts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_lsp.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_analysis.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_auth.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_candle_management.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_config.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_credentials.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_project_files.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_proxy.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_research_scripts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_resources.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_session_analysis_integration.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_strategy_catalog.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_strategy_reports.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_tool_offloading.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_usage_limits.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_mcp_worker_port.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_metrics.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_optimization_and_monte_carlo_session_failures.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_order.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_parent_strategy.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_position.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_price_gap_backtest.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_progressbar.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_ray_runtime.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_real_strategy_regression.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_research.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_research_monte_carlo.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_research_optimization_isolation.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_research_session_lifecycle.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_router.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_rule_significance_testing.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_session_scoped_configuration.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_significance_test_session.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_simulator_parity.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_spot_mode.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_candle.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_exchanges.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_logs.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_orderbook.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_orders.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_ticker.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_state_trades.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_trading_hours.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_trading_mode_contracts.py +0 -0
- {jesse-3.3.3 → jesse-3.3.4}/tests/test_utils.py +0 -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,
|
|
@@ -81,7 +81,8 @@ MAX_LIMIT = session_results.MAX_LIMIT
|
|
|
81
81
|
# the JSON-RPC message. Same 128 KiB (~30k tokens) budget as get_session_results pages.
|
|
82
82
|
MAX_RESPONSE_BYTES = 128 * 1024
|
|
83
83
|
# Reserved within that budget for what wraps the page after it is built: the route's "status",
|
|
84
|
-
# the MCP service's "action"
|
|
84
|
+
# the MCP service's "action", "location" (~130 bytes), and "session_dashboard_url_template" (one
|
|
85
|
+
# link, up to ~350 bytes for the longest valid DASHBOARD_URL), the JSON-RPC result object (~120
|
|
85
86
|
# bytes), and SSE framing (~25 bytes).
|
|
86
87
|
TRANSPORT_ALLOWANCE = 2 * 1024
|
|
87
88
|
# Cursors are small base64url JSON objects (~140 characters); anything longer is not one.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.3.4"
|
|
@@ -217,3 +217,87 @@ def test_session_tools_call_internal_api_but_link_to_public_dashboard(
|
|
|
217
217
|
|
|
218
218
|
assert requested_urls == [f'http://127.0.0.1:9000/{api_path}/sessions/session-id']
|
|
219
219
|
assert result['dashboard_url'] == f'https://jesse.example.com/#/{route}/session-id'
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def test_session_rows_get_their_own_dashboard_link(monkeypatch):
|
|
223
|
+
monkeypatch.setattr(mcp_config, 'DASHBOARD_URL', 'https://jesse.example.com')
|
|
224
|
+
rows = [{'id': 'abc-123', 'title': 'one'}, {'title': 'no id'}, 'not a row']
|
|
225
|
+
|
|
226
|
+
assert mcp_config.with_dashboard_urls('live', rows) == [
|
|
227
|
+
{'id': 'abc-123', 'title': 'one', 'dashboard_url': 'https://jesse.example.com/#/live/abc-123'},
|
|
228
|
+
{'title': 'no id', 'dashboard_url': ''},
|
|
229
|
+
'not a row',
|
|
230
|
+
]
|
|
231
|
+
assert rows[0] == {'id': 'abc-123', 'title': 'one'}
|
|
232
|
+
assert mcp_config.with_dashboard_urls('live', None) is None
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def test_dashboard_link_template_keeps_a_literal_session_id_placeholder(monkeypatch):
|
|
236
|
+
monkeypatch.setattr(mcp_config, 'DASHBOARD_URL', 'https://jesse.example.com')
|
|
237
|
+
template = mcp_config.dashboard_url_template('live')
|
|
238
|
+
assert template == 'https://jesse.example.com/#/live/{session_id}'
|
|
239
|
+
assert template.replace('{session_id}', 'abc-123') == mcp_config.dashboard_url('live', 'abc-123')
|
|
240
|
+
assert mcp_config.dashboard_url_template('unknown') == ''
|
|
241
|
+
|
|
242
|
+
monkeypatch.setattr(mcp_config, 'DASHBOARD_URL', None)
|
|
243
|
+
assert mcp_config.dashboard_url_template('live') == ''
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
SESSION_SERVICES = [
|
|
247
|
+
(backtest_service, 'backtest', 'backtest'),
|
|
248
|
+
(optimization_service, 'optimization', 'optimization'),
|
|
249
|
+
(monte_carlo_service, 'monte_carlo', 'monte-carlo'),
|
|
250
|
+
(significance_test_service, 'significance_test', 'significance-test'),
|
|
251
|
+
]
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def _fake_api(monkeypatch, service, status_code: int, payload: dict) -> None:
|
|
255
|
+
monkeypatch.setattr(mcp_config, 'JESSE_API_URL', 'http://127.0.0.1:9000')
|
|
256
|
+
monkeypatch.setattr(mcp_config, 'JESSE_PASSWORD', 'test-password')
|
|
257
|
+
monkeypatch.setattr(mcp_config, 'DASHBOARD_URL', 'https://jesse.example.com')
|
|
258
|
+
monkeypatch.setattr(
|
|
259
|
+
service.requests, 'post',
|
|
260
|
+
lambda _url, **_kwargs: SimpleNamespace(status_code=status_code, text='', json=lambda: payload),
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@pytest.mark.parametrize(('service', 'name', 'route'), SESSION_SERVICES)
|
|
265
|
+
def test_session_lists_link_every_row_to_the_public_dashboard(monkeypatch, service, name, route):
|
|
266
|
+
_fake_api(monkeypatch, service, 200, {'sessions': [{'id': 'first'}, {'id': 'second'}], 'count': 2})
|
|
267
|
+
|
|
268
|
+
result = getattr(service, f'get_{name}_sessions_service')()
|
|
269
|
+
|
|
270
|
+
assert [row['dashboard_url'] for row in result['sessions']] == [
|
|
271
|
+
f'https://jesse.example.com/#/{route}/first', f'https://jesse.example.com/#/{route}/second',
|
|
272
|
+
]
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
@pytest.mark.parametrize(('service', 'name', 'route'), SESSION_SERVICES)
|
|
276
|
+
def test_cancelling_a_session_still_returns_its_dashboard_link(monkeypatch, service, name, route):
|
|
277
|
+
_fake_api(monkeypatch, service, 202, {})
|
|
278
|
+
|
|
279
|
+
result = getattr(service, f'cancel_{name}_service')('session-id')
|
|
280
|
+
|
|
281
|
+
assert result['status'] == 'success'
|
|
282
|
+
assert result['dashboard_url'] == f'https://jesse.example.com/#/{route}/session-id'
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
@pytest.mark.parametrize(
|
|
286
|
+
('service', 'function_name', 'payload', 'route'),
|
|
287
|
+
[
|
|
288
|
+
(optimization_service, 'get_optimization_logs_service', {'logs': 'line'}, 'optimization'),
|
|
289
|
+
(optimization_service, 'terminate_optimization_service', {}, 'optimization'),
|
|
290
|
+
(monte_carlo_service, 'get_monte_carlo_logs_service', {'logs': 'line'}, 'monte-carlo'),
|
|
291
|
+
(monte_carlo_service, 'get_monte_carlo_equity_curves_service', {'trades': [], 'candles': []}, 'monte-carlo'),
|
|
292
|
+
(monte_carlo_service, 'terminate_monte_carlo_service', {}, 'monte-carlo'),
|
|
293
|
+
],
|
|
294
|
+
)
|
|
295
|
+
def test_other_single_session_reads_and_actions_return_the_dashboard_link(
|
|
296
|
+
monkeypatch, service, function_name, payload, route,
|
|
297
|
+
):
|
|
298
|
+
_fake_api(monkeypatch, service, 202 if function_name.startswith('terminate') else 200, payload)
|
|
299
|
+
|
|
300
|
+
result = getattr(service, function_name)('session-id')
|
|
301
|
+
|
|
302
|
+
assert result['status'] == 'success'
|
|
303
|
+
assert result['dashboard_url'] == f'https://jesse.example.com/#/{route}/session-id'
|