LICENSE
MANIFEST.in
README.md
pyproject.toml
pytest.ini
requirements.txt
setup.cfg
./dashboard/__init__.py
./dashboard/backend/__init__.py
./dashboard/backend/account_email.py
./dashboard/backend/auth.py
./dashboard/backend/dashboard_cli.py
./dashboard/backend/main.py
./dashboard/backend/observability.py
./dashboard/backend/rate_limit.py
./dashboard/backend/user_paths.py
./dashboard/backend/api/__init__.py
./dashboard/backend/api/alerts.py
./dashboard/backend/api/auth.py
./dashboard/backend/api/history.py
./dashboard/backend/api/market.py
./dashboard/backend/api/projections.py
./dashboard/backend/api/refresh.py
./dashboard/backend/api/stocks.py
./dashboard/backend/models/__init__.py
./dashboard/backend/models/market.py
./dashboard/backend/models/projection.py
./dashboard/backend/models/stock.py
./dashboard/backend/services/__init__.py
./dashboard/backend/services/data_loader.py
./src/__init__.py
./src/alerts/__init__.py
./src/alerts/alert_engine.py
./src/alerts/alert_orchestrator.py
./src/alerts/alert_paths.py
./src/alerts/alert_rules.py
./src/alerts/alert_runner.py
./src/alerts/alert_storage.py
./src/alerts/alert_worker.py
./src/alerts/delivery_status.py
./src/alerts/job_processor.py
./src/alerts/market_snapshot.py
./src/alerts/symbol_prices.py
./src/alerts/user_alert_storage.py
./src/alerts/notifiers/__init__.py
./src/alerts/notifiers/delivery_retry.py
./src/alerts/notifiers/email_delivery.py
./src/alerts/notifiers/email_notifier.py
./src/alerts/notifiers/webhook_notifier.py
./src/analysis/__init__.py
./src/analysis/ai_summarizer.py
./src/analysis/analyzer.py
./src/analysis/projector.py
./src/cli/__init__.py
./src/cli/alerts_commands.py
./src/cli/commands.py
./src/core/__init__.py
./src/core/config.py
./src/core/logger.py
./src/services/__init__.py
./src/services/api_client.py
./src/services/data_fetcher.py
./src/services/index_fetcher.py
./src/services/stock_screener.py
./src/storage/__init__.py
./src/storage/account_tokens.py
./src/storage/alert_jobs.py
./src/storage/alert_watches.py
./src/storage/data_storage.py
./src/storage/database.py
./src/storage/health.py
./src/storage/rate_limits.py
./src/storage/session.py
./src/storage/user_alerts.py
./src/storage/users.py
./src/utils/__init__.py
./src/utils/company_names.py
./src/utils/tickers.py
./src/workflows/__init__.py
./src/workflows/tracker.py
config/alerts.example.json
config/alerts.json
config/exchanges.json
config/filters.json
dashboard/__init__.py
dashboard/backend/__init__.py
dashboard/backend/account_email.py
dashboard/backend/auth.py
dashboard/backend/dashboard_cli.py
dashboard/backend/main.py
dashboard/backend/observability.py
dashboard/backend/rate_limit.py
dashboard/backend/user_paths.py
dashboard/backend/api/__init__.py
dashboard/backend/api/alerts.py
dashboard/backend/api/auth.py
dashboard/backend/api/history.py
dashboard/backend/api/market.py
dashboard/backend/api/projections.py
dashboard/backend/api/refresh.py
dashboard/backend/api/stocks.py
dashboard/backend/models/__init__.py
dashboard/backend/models/market.py
dashboard/backend/models/projection.py
dashboard/backend/models/stock.py
dashboard/backend/services/__init__.py
dashboard/backend/services/data_loader.py
dashboard/backend/static/index.html
dashboard/backend/static/symbols-catalog.json
dashboard/backend/static/assets/html2canvas-CV27MlW6.js
dashboard/backend/static/assets/index-DGCkEN6k.js
dashboard/backend/static/assets/index-prxLT78s.css
dashboard/backend/static/assets/index.es-C-AE4meG.js
dashboard/backend/static/assets/jspdf.es.min-CpuUiYD8.js
dashboard/backend/static/assets/purify.es-JEAr64Sr.js
docs/ADVANCED.md
docs/ALERTING_DESIGN.md
docs/ARCHITECTURE.md
docs/CONFIGURATION.md
docs/DASHBOARD_DESIGN.md
docs/DEPLOYMENT.md
docs/MULTI_USER.md
docs/PROJECT_STATUS.md
docs/README.md
docs/STOCK_PROJECTIONS.md
docs/TROUBLESHOOTING.md
docs/USAGE.md
market_helm.egg-info/PKG-INFO
market_helm.egg-info/SOURCES.txt
market_helm.egg-info/dependency_links.txt
market_helm.egg-info/entry_points.txt
market_helm.egg-info/requires.txt
market_helm.egg-info/top_level.txt
src/__init__.py
src/alerts/__init__.py
src/alerts/alert_engine.py
src/alerts/alert_orchestrator.py
src/alerts/alert_paths.py
src/alerts/alert_rules.py
src/alerts/alert_runner.py
src/alerts/alert_storage.py
src/alerts/alert_worker.py
src/alerts/delivery_status.py
src/alerts/job_processor.py
src/alerts/market_snapshot.py
src/alerts/symbol_prices.py
src/alerts/user_alert_storage.py
src/alerts/notifiers/__init__.py
src/alerts/notifiers/delivery_retry.py
src/alerts/notifiers/email_delivery.py
src/alerts/notifiers/email_notifier.py
src/alerts/notifiers/webhook_notifier.py
src/analysis/__init__.py
src/analysis/ai_summarizer.py
src/analysis/analyzer.py
src/analysis/projector.py
src/cli/__init__.py
src/cli/alerts_commands.py
src/cli/commands.py
src/core/__init__.py
src/core/config.py
src/core/logger.py
src/services/__init__.py
src/services/api_client.py
src/services/data_fetcher.py
src/services/index_fetcher.py
src/services/stock_screener.py
src/storage/__init__.py
src/storage/account_tokens.py
src/storage/alert_jobs.py
src/storage/alert_watches.py
src/storage/data_storage.py
src/storage/database.py
src/storage/health.py
src/storage/rate_limits.py
src/storage/session.py
src/storage/user_alerts.py
src/storage/users.py
src/utils/__init__.py
src/utils/company_names.py
src/utils/tickers.py
src/workflows/__init__.py
src/workflows/tracker.py
tests/__init__.py
tests/conftest.py
tests/alerts/test_alert_engine.py
tests/alerts/test_alert_engine_cooldown_nonfinite.py
tests/alerts/test_alert_engine_cooldown_overflow.py
tests/alerts/test_alert_engine_corrupt_config.py
tests/alerts/test_alert_engine_dirty_name.py
tests/alerts/test_alert_engine_empty_notifications.py
tests/alerts/test_alert_engine_history_write.py
tests/alerts/test_alert_engine_missing_id.py
tests/alerts/test_alert_engine_operator_soft_fail.py
tests/alerts/test_alert_engine_screening_symbols.py
tests/alerts/test_alert_engine_stock_shape.py
tests/alerts/test_alert_orchestrator.py
tests/alerts/test_alert_orchestrator_nonfinite.py
tests/alerts/test_alert_paths.py
tests/alerts/test_alert_paths_corrupt_config.py
tests/alerts/test_alert_paths_defaults_shape.py
tests/alerts/test_alert_paths_env_injection.py
tests/alerts/test_alert_paths_env_rmw.py
tests/alerts/test_alert_paths_notifications_shape.py
tests/alerts/test_alert_rules.py
tests/alerts/test_alert_rules_filters_shape.py
tests/alerts/test_alert_rules_nonfinite.py
tests/alerts/test_alert_runner.py
tests/alerts/test_alert_runner_live_fetch_cap.py
tests/alerts/test_alert_storage.py
tests/alerts/test_alert_storage_corrupt_history.py
tests/alerts/test_alert_storage_rmw_concurrency.py
tests/alerts/test_alert_storage_trigger_timestamp.py
tests/alerts/test_alert_worker.py
tests/alerts/test_alert_worker_interval_ceiling.py
tests/alerts/test_alert_worker_log_nonfinite.py
tests/alerts/test_delivery_retry.py
tests/alerts/test_delivery_retry_ceilings.py
tests/alerts/test_delivery_retry_nonfinite_env.py
tests/alerts/test_delivery_status.py
tests/alerts/test_email_delivery.py
tests/alerts/test_email_delivery_symbols.py
tests/alerts/test_email_from_sanitization.py
tests/alerts/test_email_header_injection.py
tests/alerts/test_email_hosted_recipients.py
tests/alerts/test_email_hosted_smtp_isolation.py
tests/alerts/test_email_notifier.py
tests/alerts/test_email_smtp_port.py
tests/alerts/test_job_processor.py
tests/alerts/test_job_processor_concurrent_deliver.py
tests/alerts/test_job_processor_deliver_payload.py
tests/alerts/test_job_processor_overlapping_deliver.py
tests/alerts/test_job_processor_overlapping_ticks.py
tests/alerts/test_job_processor_stale_timestamp.py
tests/alerts/test_mailgun_api_base.py
tests/alerts/test_mailgun_domain_safety.py
tests/alerts/test_market_snapshot.py
tests/alerts/test_symbol_prices.py
tests/alerts/test_user_alert_storage.py
tests/alerts/test_webhook_hosted_isolation.py
tests/alerts/test_webhook_notifier.py
tests/alerts/test_webhook_notifier_symbols.py
tests/alerts/test_webhook_url_safety.py
tests/analysis/__init__.py
tests/analysis/test_ai_summarizer.py
tests/analysis/test_ai_summarizer_demo_shapes.py
tests/analysis/test_ai_summarizer_nonfinite.py
tests/analysis/test_ai_summarizer_openai_nonfinite.py
tests/analysis/test_analyzer.py
tests/analysis/test_analyzer_compare_exchange_keys.py
tests/analysis/test_analyzer_compare_exchanges.py
tests/analysis/test_analyzer_exchange_sentinel_keys.py
tests/analysis/test_analyzer_missing_columns.py
tests/analysis/test_projector.py
tests/analysis/test_projector_dirty_rows.py
tests/analysis/test_projector_non_list_root.py
tests/analysis/test_projector_summary_all_nonfinite.py
tests/cli/test_alerts_commands.py
tests/cli/test_alerts_commands_condition_shape.py
tests/cli/test_alerts_commands_corrupt_config.py
tests/cli/test_alerts_commands_notifications_shape.py
tests/cli/test_commands.py
tests/cli/test_commands_display_results.py
tests/cli/test_commands_top_n_positive.py
tests/cli/test_run_alert_test_hosted_email_seed.py
tests/core/__init__.py
tests/core/test_config.py
tests/core/test_config_indices_shape.py
tests/core/test_config_stock_tracker_env.py
tests/core/test_logger.py
tests/dashboard/__init__.py
tests/dashboard/backend/__init__.py
tests/dashboard/backend/test_auth.py
tests/dashboard/backend/test_cors_origins.py
tests/dashboard/backend/test_dashboard_cli.py
tests/dashboard/backend/test_data_info_loader_oserror.py
tests/dashboard/backend/test_observability.py
tests/dashboard/backend/test_rate_limit.py
tests/dashboard/backend/test_spa_fallback.py
tests/dashboard/backend/test_startup_alert_check.py
tests/dashboard/backend/test_user_paths.py
tests/dashboard/backend/api/__init__.py
tests/dashboard/backend/api/test_account_lifecycle.py
tests/dashboard/backend/api/test_account_management.py
tests/dashboard/backend/api/test_alerts_api.py
tests/dashboard/backend/api/test_alerts_auth_deleted_user.py
tests/dashboard/backend/api/test_alerts_blank_alert_id.py
tests/dashboard/backend/api/test_alerts_blank_symbol.py
tests/dashboard/backend/api/test_alerts_config_corrupt_hosted.py
tests/dashboard/backend/api/test_alerts_config_hosted_format_isolation.py
tests/dashboard/backend/api/test_alerts_config_limits.py
tests/dashboard/backend/api/test_alerts_cooldown_file_mode.py
tests/dashboard/backend/api/test_alerts_cooldown_negative.py
tests/dashboard/backend/api/test_alerts_cooldown_nonfinite.py
tests/dashboard/backend/api/test_alerts_defaults_placeholder_webhook.py
tests/dashboard/backend/api/test_alerts_delivery_integration.py
tests/dashboard/backend/api/test_alerts_duplicate_ids.py
tests/dashboard/backend/api/test_alerts_health_open.py
tests/dashboard/backend/api/test_alerts_quotes_auth.py
tests/dashboard/backend/api/test_alerts_quotes_get_cap.py
tests/dashboard/backend/api/test_alerts_status_nondict.py
tests/dashboard/backend/api/test_alerts_symbols_auth.py
tests/dashboard/backend/api/test_alerts_threshold_nonfinite.py
tests/dashboard/backend/api/test_alerts_threshold_required.py
tests/dashboard/backend/api/test_alerts_webhook_env_injection.py
tests/dashboard/backend/api/test_api.py
tests/dashboard/backend/api/test_auth_api.py
tests/dashboard/backend/api/test_auth_email_validation.py
tests/dashboard/backend/api/test_auth_password_length.py
tests/dashboard/backend/api/test_auth_register_atomicity.py
tests/dashboard/backend/api/test_auth_token_length.py
tests/dashboard/backend/api/test_history_catalog.py
tests/dashboard/backend/api/test_history_summary_nonfinite.py
tests/dashboard/backend/api/test_history_summary_symbols.py
tests/dashboard/backend/api/test_history_tracked_symbols.py
tests/dashboard/backend/api/test_hosted_read_probes_auth.py
tests/dashboard/backend/api/test_market_dirty_change_percent.py
tests/dashboard/backend/api/test_market_overview_index_name.py
tests/dashboard/backend/api/test_movers_dirty_name.py
tests/dashboard/backend/api/test_multi_user_alerts_api.py
tests/dashboard/backend/api/test_opportunities_dirty_confidence.py
tests/dashboard/backend/api/test_opportunities_dirty_name.py
tests/dashboard/backend/api/test_opportunities_label_sentinels.py
tests/dashboard/backend/api/test_opportunities_padded_symbols.py
tests/dashboard/backend/api/test_opportunities_recommendation_field.py
tests/dashboard/backend/api/test_opportunities_schema_edges.py
tests/dashboard/backend/api/test_projections_summary_nonfinite.py
tests/dashboard/backend/api/test_refresh.py
tests/dashboard/backend/api/test_refresh_cancel_single_flight.py
tests/dashboard/backend/api/test_refresh_concurrent_start.py
tests/dashboard/backend/api/test_refresh_env_ceilings.py
tests/dashboard/backend/api/test_session_revocation.py
tests/dashboard/backend/api/test_stocks_dirty_name_and_labels.py
tests/dashboard/backend/api/test_stocks_historical_projections.py
tests/dashboard/backend/api/test_stocks_schema_edges.py
tests/dashboard/backend/api/test_summary_demo_shapes.py
tests/dashboard/backend/api/test_summary_nonfinite_json.py
tests/dashboard/backend/services/__init__.py
tests/dashboard/backend/services/test_data_loader.py
tests/dashboard/backend/services/test_data_loader_default_dir.py
tests/dashboard/backend/services/test_data_loader_malformed_dates.py
tests/dashboard/backend/services/test_data_loader_projection_edges.py
tests/dashboard/backend/services/test_data_loader_summary_nonfinite.py
tests/dashboard/backend/services/test_data_loader_summary_shape.py
tests/integration/test_postgresql_storage.py
tests/scripts/test_version_sync.py
tests/services/__init__.py
tests/services/test_api_client.py
tests/services/test_api_client_nonfinite_quotes.py
tests/services/test_api_client_retry_after.py
tests/services/test_api_client_retry_after_ceiling.py
tests/services/test_data_fetcher.py
tests/services/test_data_fetcher_max_symbols.py
tests/services/test_index_fetcher.py
tests/services/test_index_fetcher_cache_shape.py
tests/services/test_rate_limiter_budget.py
tests/services/test_stock_screener.py
tests/services/test_stock_screener_filters_shape.py
tests/services/test_stock_screener_scalar_filters.py
tests/storage/__init__.py
tests/storage/test_alert_jobs.py
tests/storage/test_alert_jobs_claim_concurrency.py
tests/storage/test_alert_jobs_claim_limit.py
tests/storage/test_alert_jobs_lock_ownership.py
tests/storage/test_alert_jobs_retry_delay_ceiling.py
tests/storage/test_alert_watches.py
tests/storage/test_alert_watches_blank_symbol.py
tests/storage/test_alert_watches_config_limits.py
tests/storage/test_alert_watches_cooldown_ceiling.py
tests/storage/test_alert_watches_cooldown_nonfinite.py
tests/storage/test_alert_watches_delivery_timestamp.py
tests/storage/test_alert_watches_duplicate_ids.py
tests/storage/test_alert_watches_threshold_required.py
tests/storage/test_alert_watches_trigger_timestamp.py
tests/storage/test_data_storage.py
tests/storage/test_data_storage_atomic.py
tests/storage/test_data_storage_projection_markdown.py
tests/storage/test_data_storage_summary_json.py
tests/storage/test_database.py
tests/storage/test_database_mkdir_oserror.py
tests/storage/test_rate_limits.py
tests/storage/test_session.py
tests/storage/test_session_payload_shape.py
tests/storage/test_session_token_length.py
tests/storage/test_user_alerts.py
tests/storage/test_user_alerts_config_shape.py
tests/storage/test_user_alerts_webhook_preserve.py
tests/storage/test_user_alerts_webhook_rmw.py
tests/storage/test_user_data_cascade.py
tests/storage/test_users.py
tests/storage/test_users_email_validation.py
tests/storage/test_users_password_length.py
tests/storage/test_users_scrypt_bounds.py
tests/utils/__init__.py
tests/utils/test_company_names.py
tests/utils/test_company_names_catalog_nonfinite.py
tests/utils/test_company_names_enrich_shape.py
tests/utils/test_tickers.py
tests/workflows/__init__.py
tests/workflows/test_tracker.py
tests/workflows/test_tracker_analyze_volume.py
tests/workflows/test_tracker_fetch_volume_rank.py
tests/workflows/test_tracker_nonpositive_top_n.py
tests/workflows/test_tracker_watch_symbol_dirty_rows.py