~95% on SimpleQA (e.g. Qwen3.6-27B on a 3090). Supports all local and cloud LLMs (llama.cpp, Ollama, Google, ...). 10+ search engines - arXiv, PubMed, your private documents. Everything Local & Encrypted.
36676 matches across 22 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .pre-commit-hooks/custom-checks.py | 122 | def _format_string_references_exception(self, node): |
| LOW | .pre-commit-hooks/custom-checks.py | 146 | def _string_concat_references_exception(self, node): |
| LOW | .pre-commit-hooks/check-fixture-duplication.py | 78 | def find_module_level_fixture_redefinitions( |
| LOW | …e-commit-hooks/check-settings-manager-thread-safety.py | 81 | def _check_body_for_unsafe_calls(self, node) -> None: |
| LOW | …e-commit-hooks/check-settings-manager-thread-safety.py | 117 | def _is_get_settings_manager_call(call_node: ast.Call) -> bool: |
| LOW | .pre-commit-hooks/check-sensitive-logging.py | 183 | def _check_exc_info_on_warning(self, node: ast.Call) -> None: |
| LOW | .pre-commit-hooks/check-sensitive-logging.py | 205 | def _check_exception_var_in_log(self, node: ast.Call) -> None: |
| LOW | .pre-commit-hooks/check-sensitive-logging.py | 270 | def _check_expression_for_sensitive_data( |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 229 | def _check_statements_recursive( |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 34 | def _check_function_for_pattern(self, func_node) -> None: |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 62 | def _get_session_var_from_assign(self, assign_node: ast.Assign) -> str: |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 93 | def _has_session_close_in_finally( |
| LOW | .pre-commit-hooks/check-settings-key-namespace.py | 88 | def _extract_frozenset_strings(node): |
| LOW | tests/test_api_settings_validation.py | 16 | def test_temperature_validation(self): |
| LOW | tests/test_api_settings_validation.py | 48 | def test_provider_name_normalization(self): |
| LOW | tests/test_api_settings_validation.py | 65 | def test_search_results_validation(self): |
| LOW | tests/test_api_settings_validation.py | 84 | def test_quick_summary_with_invalid_provider(self, mock_init): |
| LOW | tests/test_api_settings_validation.py | 96 | def test_quick_summary_with_missing_api_key(self, mock_init): |
| LOW | tests/test_api_settings_validation.py | 118 | def test_settings_with_circular_references(self): |
| LOW | tests/test_api_settings_validation.py | 140 | def test_environment_variable_type_conversion(self, monkeypatch): |
| LOW | tests/test_api_settings_validation.py | 158 | def test_invalid_environment_variable_values(self, monkeypatch): |
| LOW | tests/test_api_settings_validation.py | 170 | def test_environment_variable_precedence(self, monkeypatch): |
| LOW | tests/test_api_settings_validation.py | 194 | def test_minimal_configuration(self): |
| LOW | tests/test_api_settings_validation.py | 207 | def test_common_research_presets(self): |
| LOW | tests/test_api_settings_validation.py | 291 | def test_legacy_setting_names(self): |
| LOW | tests/test_context_overflow_detection.py | 42 | def test_context_overflow_detection_no_overflow(self, token_callback): |
| LOW | tests/test_context_overflow_detection.py | 71 | def test_context_overflow_detection_with_overflow(self, token_callback): |
| LOW | tests/test_context_overflow_detection.py | 101 | def test_ollama_raw_metrics_capture(self, token_callback): |
| LOW | tests/test_context_overflow_detection.py | 134 | def test_context_limit_from_research_context(self): |
| LOW | tests/test_context_overflow_detection.py | 152 | def test_prompt_size_estimation(self, token_callback): |
| LOW | tests/test_context_overflow_detection.py | 176 | def test_overflow_warning_logged(self, mock_logger, token_callback): |
| LOW | tests/test_context_overflow_detection.py | 209 | def test_estimated_overflow_for_non_ollama_provider( |
| LOW | tests/test_context_overflow_detection.py | 247 | def test_provider_confirmed_total_context_overflow( |
| LOW | tests/test_context_overflow_detection.py | 285 | def test_estimated_total_context_overflow_for_non_ollama( |
| LOW | tests/test_context_overflow_detection.py | 327 | def test_estimated_total_context_overflow_via_llm_output( |
| LOW | tests/test_context_overflow_detection.py | 380 | def test_estimated_path_fires_on_subsequent_calls_after_first_truncation( |
| LOW | tests/test_context_overflow_detection.py | 393 | def llm_output_overflow_response(): |
| LOW | tests/test_context_overflow_detection.py | 422 | def test_estimated_overflow_skipped_when_context_limit_none( |
| LOW | tests/test_context_overflow_detection.py | 450 | def test_estimated_overflow_zero_prompt_estimate( |
| LOW | tests/test_context_overflow_detection.py | 475 | def test_estimated_overflow_without_on_llm_start( |
| LOW | tests/test_context_overflow_detection.py | 504 | def test_ollama_context_overflow_real(self): |
| LOW | tests/TESTING_PROPOSAL.md | 263 | def test_create_documents_empty(citation_handler): |
| LOW | tests/TESTING_PROPOSAL.md | 269 | def test_create_documents_string(citation_handler): |
| LOW | tests/test_utils.py | 61 | def assert_search_result_format(result: Dict[str, Any]): |
| LOW | tests/test_utils.py | 111 | def create_test_research_context(query: str = "test query") -> Dict[str, Any]: |
| LOW | tests/test_utils.py | 156 | def assert_progress_callback_called( |
| LOW | tests/test_search_system_factory_high_value.py | 26 | def test_all_entries_are_dicts(self): |
| LOW | tests/test_search_system_factory_high_value.py | 30 | def test_all_entries_have_name_key(self): |
| LOW | tests/test_search_system_factory_high_value.py | 34 | def test_all_entries_have_description_key(self): |
| LOW | tests/test_search_system_factory_high_value.py | 38 | def test_all_names_are_nonempty_strings(self): |
| LOW | tests/test_search_system_factory_high_value.py | 43 | def test_all_descriptions_are_nonempty_strings(self): |
| LOW | tests/test_search_system_factory_high_value.py | 78 | def test_returns_copy_not_original(self): |
| LOW | tests/test_search_system_factory_high_value.py | 82 | def test_copy_has_same_length(self): |
| LOW | tests/test_search_system_factory_high_value.py | 86 | def test_copy_has_same_content(self): |
| LOW | tests/test_search_system_factory_high_value.py | 90 | def test_modifying_returned_list_does_not_affect_original(self): |
| LOW | tests/test_search_system_factory_high_value.py | 96 | def test_removing_from_returned_list_does_not_affect_original(self): |
| LOW | tests/test_search_system_factory_high_value.py | 106 | def test_all_contains_more_than_available(self): |
| LOW | tests/test_search_system_factory_high_value.py | 109 | def test_all_starts_with_available(self): |
| LOW | tests/test_search_system_factory_high_value.py | 114 | def test_all_entries_have_required_keys(self): |
| LOW | tests/test_search_system_factory_high_value.py | 118 | def test_no_duplicate_names_in_all(self): |
| 26941 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | docker-compose.gpu.override.yml | 1 | # ============================================================================ |
| MEDIUM | docker-compose.gpu.override.yml | 3 | # ============================================================================ |
| MEDIUM | docker-compose.gpu.override.yml | 21 | # ============================================================================ |
| MEDIUM | docker-compose.unraid.yml | 1 | # ============================================================================ |
| MEDIUM | docker-compose.unraid.yml | 3 | # ============================================================================ |
| MEDIUM | docker-compose.unraid.yml | 16 | # ============================================================================ |
| MEDIUM | .file-whitelist.txt | 1 | # ============================================================================ |
| MEDIUM | .file-whitelist.txt | 11 | # ============================================================================ |
| MEDIUM | .file-whitelist.txt | 13 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 15 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 23 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 25 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 40 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 42 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 56 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 58 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 66 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 68 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 77 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 79 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 96 | # --------------------------------------------------------------------------- |
| MEDIUM | .file-whitelist.txt | 99 | # --------------------------------------------------------------------------- |
| MEDIUM | pyproject.toml | 402 | # --------------------------------------------------------------------------- |
| MEDIUM | pyproject.toml | 404 | # --------------------------------------------------------------------------- |
| MEDIUM | .grype.yaml | 9 | # ========================================================================== |
| MEDIUM | .grype.yaml | 11 | # ========================================================================== |
| MEDIUM | .grype.yaml | 65 | # ========================================================================== |
| MEDIUM | .grype.yaml | 70 | # ========================================================================== |
| MEDIUM | .grype.yaml | 120 | # ========================================================================== |
| MEDIUM | .grype.yaml | 128 | # ========================================================================== |
| MEDIUM | .grype.yaml | 144 | # ========================================================================== |
| MEDIUM | .grype.yaml | 146 | # ========================================================================== |
| MEDIUM | docker-compose.yml | 34 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 36 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 46 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 48 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 54 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 59 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 66 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 68 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 74 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 78 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 82 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 85 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 88 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 94 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 99 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 105 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 108 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 114 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 118 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 126 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 130 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 133 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 139 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 141 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 1 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 3 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 17 | # ============================================================================ |
| MEDIUM | docker-compose.yml | 156 | # ============================================================================ |
| 5083 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 177 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-css-class-prefix.py | 178 | print(f"Error reading {file_path}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 331 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-css-class-prefix.py | 332 | print(f"Error reading {file_path}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 450 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-css-class-prefix.py | 451 | print(f"Error reading {file_path}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-absolute-module-paths.py | 115 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-absolute-module-paths.py | 116 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/check-absolute-module-paths.py | 133 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-absolute-module-paths.py | 134 | print(f"Error parsing {filename}: {e}") |
| LOW | .pre-commit-hooks/check-absolute-module-paths.py | 148 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-absolute-module-paths.py | 149 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/check-env-vars.py | 276 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-env-vars.py | 277 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/check-env-vars.py | 294 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-env-vars.py | 295 | print(f"Error parsing {filename}: {e}") |
| LOW | .pre-commit-hooks/check-pathlib-usage.py | 147 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-pathlib-usage.py | 148 | print(f"Error reading {filepath}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-utcnow-parens.py | 34 | except Exception: |
| LOW | .pre-commit-hooks/check-double-escaping.py | 130 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-double-escaping.py | 131 | print(f"Error checking {file_path}: {e}") |
| LOW | .pre-commit-hooks/check-url-security.py | 143 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-url-security.py | 144 | print(f"Error checking {file_path}: {e}") |
| LOW | .pre-commit-hooks/fix-exception-logging.py | 234 | except Exception: |
| LOW | .pre-commit-hooks/check-silent-cleanup.py | 187 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-silent-cleanup.py | 188 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/check-silent-cleanup.py | 209 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-silent-cleanup.py | 210 | print(f"Error parsing {filename}: {e}") |
| LOW | .pre-commit-hooks/custom-checks.py | 497 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/custom-checks.py | 498 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/custom-checks.py | 524 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/custom-checks.py | 525 | print(f"Error parsing {filename}: {e}") |
| LOW | …e-commit-hooks/check-settings-manager-thread-safety.py | 149 | except Exception as e: |
| MEDIUM | …e-commit-hooks/check-settings-manager-thread-safety.py | 150 | print(f"Error checking {filepath}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-sensitive-logging.py | 426 | except Exception as e: |
| LOW | .pre-commit-hooks/check-open-encoding.py | 140 | except Exception: |
| LOW | .pre-commit-hooks/check-safe-requests.py | 99 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-safe-requests.py | 100 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/check-safe-requests.py | 117 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-safe-requests.py | 118 | print(f"Error parsing {filename}: {e}") |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 408 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-service-context-managers.py | 409 | print(f"Error reading {filename}: {e}") |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 428 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-service-context-managers.py | 429 | print(f"Error parsing {filename}: {e}") |
| LOW | .pre-commit-hooks/check-deprecated-settings-wrapper.py | 63 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-deprecated-settings-wrapper.py | 64 | print(f"Error checking {filepath}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 130 | except Exception as e: |
| MEDIUM | .pre-commit-hooks/check-session-context-manager.py | 131 | print(f"Error checking {filepath}: {e}", file=sys.stderr) |
| LOW | .pre-commit-hooks/check-settings-key-namespace.py | 197 | except Exception: |
| LOW | .pre-commit-hooks/check-settings-key-namespace.py | 216 | except Exception: |
| LOW | .pre-commit-hooks/check-unmarked-sleep.py | 155 | except Exception as exc: |
| LOW | .pre-commit-hooks/check-loguru-formatting.py | 38 | except Exception as exc: |
| LOW | .pre-commit-hooks/check-golden-master-settings.py | 45 | except Exception: |
| LOW | .pre-commit-hooks/check-silent-exceptions.py | 75 | except Exception as exc: |
| LOW | tests/test_api_settings_validation.py | 132 | except Exception as e: |
| LOW | tests/test_context_overflow_detection.py | 540 | except Exception as e: |
| LOW | tests/conftest.py | 86 | except Exception: |
| LOW | tests/conftest.py | 286 | except Exception as e: |
| LOW | tests/conftest.py | 347 | except Exception as e: |
| LOW | tests/conftest.py | 359 | except Exception: |
| 1687 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | .pre-commit-hooks/check-service-context-managers.py | 195 | # Create a fake function body from module-level statements |
| MEDIUM | tests/conftest.py | 289 | # Create a test client |
| MEDIUM | tests/conftest.py | 551 | # Create a mock module |
| MEDIUM | tests/test_openai_api_key_usage.py | 109 | # Create a mock LLM instance |
| MEDIUM | tests/test_reexport_modules.py | 80 | # Create a fake config.config_files module |
| MEDIUM | tests/test_google_pse.py | 102 | # Create a mock engine directly |
| MEDIUM | tests/test_report_generator.py | 314 | # Define a structure with multiple sections |
| MEDIUM | tests/test_report_generator.py | 362 | # Define a structure with 5 sections |
| MEDIUM | tests/test_settings_manager.py | 226 | session = SessionLocal() # Create a new session instance for this test |
| MEDIUM | tests/test_settings_manager.py | 262 | # Create a new session for this test |
| MEDIUM | tests/mock_llm_config.py | 13 | # Create a mock module |
| MEDIUM | tests/test_search_engines_enhanced.py | 159 | # Create a mock paper object |
| MEDIUM | tests/test_search_engines_enhanced.py | 275 | # Create a minimal settings snapshot for the factory |
| MEDIUM | tests/test_api_key_configuration.py | 119 | # Create a mock LLM instance |
| MEDIUM | tests/test_api_key_configuration.py | 142 | # Create a mock LLM instance |
| MEDIUM | tests/test_api_key_configuration.py | 168 | # Create a mock LLM instance |
| MEDIUM | tests/test_api_key_configuration.py | 192 | # Create a mock LLM instance with invoke method |
| MEDIUM | tests/test_search_system.py | 49 | # Create a mock strategy class and instance |
| MEDIUM | tests/test_search_system.py | 72 | # Create the search system (will use default source-based strategy) |
| MEDIUM | tests/test_search_system.py | 75 | # Create a mock progress callback |
| MEDIUM | tests/test_search_system.py | 303 | # Create a mock callback |
| MEDIUM | tests/test_search_system.py | 323 | # Create a mock strategy class and instance |
| MEDIUM | tests/test_search_system.py | 378 | # Create the search system (uses source-based strategy by default) |
| MEDIUM | tests/metrics/test_query_utils.py | 11 | # Create a model for SQLAlchemy column testing |
| MEDIUM | tests/settings/test_generate_config_docs.py | 292 | # Create a minimal project structure with a bad JSON file |
| MEDIUM | tests/database/test_database_init.py | 232 | # Create a research record |
| MEDIUM | tests/database/test_database_init.py | 277 | # Create a benchmark run with results |
| MEDIUM | tests/database/test_benchmark_models.py | 100 | # Create a benchmark run first |
| MEDIUM | tests/database/test_benchmark_models.py | 210 | # Create a benchmark run |
| MEDIUM | tests/database/test_benchmark_models.py | 273 | # Create a run |
| MEDIUM | tests/database/test_benchmark_models.py | 399 | # Create a completed run |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 1309 | # Create main database |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 960 | # Create a regular (unencrypted) SQLite database |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 2465 | # Create main database |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 2827 | # Create main database |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 3135 | # Create main database |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 4225 | # Create an encrypted database first |
| MEDIUM | tests/database/test_sqlcipher_integration.py | 4287 | # Create an encrypted database with a table |
| MEDIUM | tests/database/test_orm_conversions.py | 81 | # Create a research entry first with UUID |
| MEDIUM | tests/database/test_alembic_migrations.py | 526 | # Create a corrupted alembic_version table |
| MEDIUM | tests/database/test_alembic_migrations.py | 3677 | # Create an engine with invalid credentials in URL |
| MEDIUM | tests/database/test_alembic_migrations.py | 4015 | # Create a mock migrations directory structure |
| MEDIUM | tests/database/test_alembic_migrations.py | 4020 | # Create a world-writable migration file |
| MEDIUM | tests/database/test_alembic_migrations.py | 319 | # Create a few more tables to simulate existing database |
| MEDIUM | tests/database/test_alembic_migrations.py | 1109 | # Create a conflicting table structure |
| MEDIUM | tests/database/test_alembic_migrations.py | 2252 | # Create a partial state - some tables but not all |
| MEDIUM | tests/database/test_alembic_migrations.py | 2754 | # Create a very long string |
| MEDIUM | tests/database/test_alembic_migrations.py | 3641 | # Create a read-only directory scenario |
| MEDIUM | tests/database/test_alembic_migrations.py | 3812 | # Create a scenario that will cause a migration error |
| MEDIUM | tests/database/test_alembic_migrations.py | 3958 | # Create a mock symlinked path scenario |
| MEDIUM | tests/database/test_alembic_migrations.py | 4041 | # Create a mock migrations directory with secure files |
| MEDIUM | tests/database/test_alembic_migrations.py | 4065 | # Create a mock migrations directory (permissions don't matter) |
| MEDIUM | tests/database/test_alembic_migrations.py | 4432 | # Create a fresh Alembic database |
| MEDIUM | tests/database/test_alembic_migrations.py | 4437 | # Create a pre-Alembic database and upgrade it |
| MEDIUM | tests/database/test_auth_db.py | 90 | # Create the file |
| MEDIUM | tests/database/test_auth_db.py | 153 | # Create the file so init is skipped |
| MEDIUM | tests/database/test_auth_db.py | 362 | # Create an engine |
| MEDIUM | tests/database/test_auth_db.py | 390 | # Create an engine |
| MEDIUM | tests/database/test_encrypted_db_manager.py | 106 | # Create the database file |
| MEDIUM | tests/database/test_encrypted_db_manager.py | 911 | # Create a plain SQLite database (no encryption needed for this test) |
| 300 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/test_report_generator_edge_cases.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_structure_parsing.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_structure_parsing.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_structure_parsing.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_structure_parsing.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_structure_parsing.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_section_generation.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_section_generation.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_section_generation.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_section_generation.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/report/test_report_section_generation.py | 0 | create a report generator with mocked dependencies. |
| HIGH | tests/metrics/test_token_counter_high_value.py | 0 | create a tokencountingcallback with sensible defaults. |
| HIGH | tests/metrics/test_token_counter_logic.py | 0 | create a tokencountingcallback with sensible defaults. |
| HIGH | tests/metrics/test_token_counter_coverage.py | 0 | create a tokencountingcallback with sensible defaults. |
| HIGH | tests/database/test_alembic_migrations.py | 0 | insert into task_metadata (task_id, status, task_type) values {values} |
| HIGH | tests/database/test_alembic_migrations.py | 0 | insert into task_metadata (task_id, status, task_type) values {values} |
| HIGH | tests/database/test_alembic_migrations.py | 0 | insert into task_metadata (task_id, status, task_type) values {values} |
| HIGH | tests/database/test_alembic_migrations.py | 0 | insert into task_metadata (task_id, status, task_type) values {values} |
| HIGH | …d_search_system/evidence/test_evaluator_integration.py | 0 | claim: test type: inference source: test confidence: 0.5 reasoning: test quote: test |
| HIGH | …d_search_system/evidence/test_evaluator_integration.py | 0 | claim: test type: inference source: test confidence: 0.5 reasoning: test quote: test |
| HIGH | …d_search_system/evidence/test_evaluator_integration.py | 0 | claim: test type: inference source: test confidence: 0.5 reasoning: test quote: test |
| HIGH | …dvanced_search_system/strategies/test_base_strategy.py | 0 | concrete implementation for testing abstract base class. |
| HIGH | tests/news/test_rating_system_behavior.py | 0 | concrete implementation for testing abstract base class. |
| HIGH | tests/news/test_base_recommender_behavior.py | 0 | concrete implementation for testing abstract base class. |
| HIGH | tests/citation_handlers/test_base_citation_handler.py | 0 | concrete implementation for testing abstract base class. |
| HIGH | tests/llm/providers/test_openai_base.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | tests/llm/providers/test_openai_base_deep_coverage.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | tests/llm_providers/test_openai_base.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | …sts/llm_providers/implementations/test_xai_provider.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | …/llm_providers/implementations/test_openai_provider.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | …m_providers/implementations/test_anthropic_provider.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | …/llm_providers/implementations/test_google_provider.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | …s/llm_providers/implementations/test_ionos_provider.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | …_providers/implementations/test_openrouter_provider.py | 0 | raises valueerror when no model name is provided (no silent default). |
| HIGH | tests/security/test_safe_requests_hook.py | 0 | import requests response = requests.get("http://example.com") |
| HIGH | tests/security/test_safe_requests_hook.py | 0 | import requests response = requests.get("http://example.com") |
| HIGH | tests/security/test_safe_requests_hook.py | 0 | import requests response = requests.get("http://example.com") |
| HIGH | tests/security/test_safe_requests_hook.py | 0 | import requests response = requests.get("http://example.com") |
| HIGH | …arch_library/routes/test_rag_routes_upload_coverage.py | 0 | context manager providing an authenticated test client with mocking. |
| HIGH | …ts/research_library/routes/test_rag_routes_coverage.py | 0 | context manager providing an authenticated test client with mocking. |
| HIGH | …ch_library/routes/test_rag_routes_indexing_coverage.py | 0 | context manager providing an authenticated test client with mocking. |
| HIGH | …search_library/routes/test_rag_routes_deep_coverage.py | 0 | context manager providing an authenticated test client with mocking. |
| HIGH | …h_library/routes/test_library_routes_extra_coverage.py | 0 | return a magicmock that satisfies login_required db_manager check. |
| HIGH | tests/web/routes/test_settings_routes_deep_coverage2.py | 0 | return a magicmock that satisfies login_required db_manager check. |
| HIGH | tests/web/routes/test_api_routes_coverage.py | 0 | return a magicmock that satisfies login_required db_manager check. |
| HIGH | tests/followup_research/test_routes_coverage.py | 0 | return a magicmock that satisfies login_required db_manager check. |
| HIGH | …h_library/routes/test_library_routes_extra_coverage.py | 0 | build a mock context-manager for get_user_db_session. |
| HIGH | tests/web/routes/test_history_routes_extended.py | 0 | build a mock context-manager for get_user_db_session. |
| HIGH | tests/web/routes/test_settings_routes_deep_coverage2.py | 0 | build a mock context-manager for get_user_db_session. |
| HIGH | tests/web/routes/test_api_routes_coverage.py | 0 | build a mock context-manager for get_user_db_session. |
| HIGH | tests/followup_research/test_routes_coverage.py | 0 | build a mock context-manager for get_user_db_session. |
| HIGH | …h_library/routes/test_library_routes_extra_coverage.py | 0 | issue an authenticated post request and return the response. |
| HIGH | tests/web/routes/test_api_routes_coverage.py | 0 | issue an authenticated post request and return the response. |
| HIGH | tests/followup_research/test_routes_coverage.py | 0 | issue an authenticated post request and return the response. |
| HIGH | …ary/services/test_library_service_collections_stats.py | 0 | patch get_user_db_session as a proper context manager. |
| HIGH | …arch_library/services/test_library_service_coverage.py | 0 | patch get_user_db_session as a proper context manager. |
| HIGH | …rch_library/services/test_library_service_crud_deep.py | 0 | patch get_user_db_session as a proper context manager. |
| HIGH | tests/exporters/test_latex_exporter.py | 0 | test handling of markdown with tables, code, lists. |
| HIGH | tests/exporters/test_pdf_exporter.py | 0 | test handling of markdown with tables, code, lists. |
| HIGH | tests/exporters/test_quarto_exporter.py | 0 | test handling of markdown with tables, code, lists. |
| 118 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .pre-commit-hooks/check-env-vars.py | 237 | # Check if the left side is a system var |
| LOW | .pre-commit-hooks/check-image-pinning.sh | 61 | # Check if any image lines lack @sha256 |
| LOW | .pre-commit-hooks/check-url-security.py | 29 | # Check if the file imports or includes URL validation |
| LOW | .pre-commit-hooks/check-url-security.py | 82 | # Check if it's preceded by validation |
| LOW | .pre-commit-hooks/fix-exception-logging.py | 210 | # Check if the variable is still used anywhere in nearby lines |
| LOW | .pre-commit-hooks/check-silent-cleanup.py | 48 | # Check if the handler is "except Exception:" or bare "except:" |
| LOW | .pre-commit-hooks/check-silent-cleanup.py | 55 | # Check if handler body is *only* `pass` (no logging, no raise) |
| LOW | .pre-commit-hooks/custom-checks.py | 270 | # Check if this class inherits from Base (SQLAlchemy model) |
| LOW | .pre-commit-hooks/custom-checks.py | 399 | # Check if line has allowed patterns first |
| LOW | .pre-commit-hooks/custom-checks.py | 457 | # Check if this file is allowed to use datetime.now() |
| LOW | .pre-commit-hooks/custom-checks.py | 476 | # Check if it's already using UTC |
| LOW | .pre-commit-hooks/check-external-resources.py | 73 | # Check if line contains external patterns |
| LOW | .pre-commit-hooks/check-external-resources.py | 76 | # Check if it's an allowed exception |
| LOW | .pre-commit-hooks/check-pdm-lock.sh | 2 | # Check if pdm.lock is in sync with pyproject.toml |
| LOW | .pre-commit-hooks/check-sensitive-logging.py | 138 | # Check if it's a logger call |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 89 | # Check if it's a service class |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 93 | # Check if it's a function returning a resource |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 359 | # Check if this is a safe instantiation |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 38 | # Check if this is a session assignment |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 50 | # Check if finally has session.close() |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 104 | # Check if it's our session variable |
| LOW | .pre-commit-hooks/check-unmarked-sleep.py | 89 | # Check if enclosing function or class has @pytest.mark.slow |
| LOW | .pre-commit-hooks/check-golden-master-settings.py | 34 | # Check if regeneration changed the file |
| LOW | tests/test_context_overflow_detection.py | 532 | # Check if overflow was detected |
| LOW | tests/run_followup_tests.sh | 13 | # Check if server is running |
| LOW | tests/test_openai_api_key_e2e.py | 83 | # Check if API key exists in settings or environment |
| LOW | tests/test_google_pse.py | 92 | # Check if API key and search engine ID are set (should be from our mocks) |
| LOW | tests/test_database_initialization.py | 131 | # Check if settings table is queryable |
| LOW | tests/test_citation_handler.py | 61 | # Check if the correct number of documents was created |
| LOW | tests/test_citation_handler.py | 86 | # Check if indexes were correctly offset |
| LOW | tests/test_citation_handler.py | 106 | # Check if sources are correctly formatted with citation numbers |
| LOW | tests/test_citation_handler.py | 119 | # Check if LLM was called with the correct prompt |
| LOW | tests/test_citation_handler.py | 123 | # Check if prompt contains expected elements |
| LOW | tests/run_all_tests.py | 444 | # Check if we're in a headless environment (CI) |
| LOW | tests/test_search_system.py | 125 | # Check if the correct strategy type was created |
| LOW | tests/test_search_system.py | 167 | # Check if the correct strategy type was created |
| LOW | tests/test_search_system.py | 207 | # Check if the correct strategy type was created |
| LOW | tests/test_search_system.py | 237 | # Check if the correct strategy type was created |
| LOW | tests/metrics/test_research_metrics_extended.py | 377 | # Check if current is better than baseline |
| LOW | tests/metrics/test_token_counter_extended.py | 151 | # Set usage_metadata to None to force response_metadata path |
| LOW | tests/settings/env_vars/test_env_var_usage.py | 155 | # Check if file is allowed to use os.environ |
| LOW | tests/database/test_database_init.py | 103 | # Check if pysqlcipher3 is available |
| LOW | tests/database/test_sqlcipher_integration.py | 805 | # Check if it changed (it shouldn't for an already-initialized DB) |
| LOW | tests/database/test_sqlcipher_integration.py | 2304 | # Check if encryption is actually applied |
| LOW | tests/database/test_sqlcipher_integration.py | 4184 | # Check if salt was actually applied |
| LOW | tests/database/test_alembic_migrations.py | 2427 | # Check if 'key' has unique constraint |
| LOW | tests/database/test_no_raw_sql.py | 67 | # Check if it's in a comment or docstring |
| LOW | tests/database/test_no_raw_sql.py | 76 | # Check if it's an allowed pattern |
| LOW | tests/database/test_no_raw_sql.py | 143 | # Check if file has database operations |
| LOW | tests/database/test_no_raw_sql.py | 154 | # Check if it has ORM imports |
| LOW | tests/database/test_schema_stability.py | 143 | # Check if there are new tables that might be renames |
| LOW | tests/deletion/test_document_deletion.py | 209 | # Check if document is in any collection |
| LOW | tests/test_llm/test_llm_benchmarks.py | 24 | # Check if we have a predefined answer |
| LOW | …i_tests_with_login/pytest_tests/test_start_research.py | 70 | # Check if model appears in logs |
| LOW | tests/infrastructure_tests/test_urls_js.py | 118 | # Check if the URL exists in backend (with some flexibility for parameter names) |
| LOW | tests/infrastructure_tests/test_urls_js.py | 343 | # Check if this is an allowed duplicate |
| LOW | tests/accessibility_tests/test_accessibility_backend.py | 86 | # Check if there are any fieldsets |
| LOW | tests/security/test_xss_prevention.py | 280 | # Check if CSP header is present (it's a good security practice) |
| LOW | tests/security/test_repo_guardrails.py | 91 | # Check if this pattern matches a binary extension |
| LOW | tests/security/test_csrf_protection.py | 116 | # Check if it's a CSRF error specifically |
| 356 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 136 | |
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 183 | |
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 337 | |
| LOW | .pre-commit-hooks/check-css-class-prefix.py | 456 | |
| LOW | .pre-commit-hooks/check-absolute-module-paths.py | 140 | |
| LOW | .pre-commit-hooks/check-absolute-module-paths.py | 187 | |
| LOW | .pre-commit-hooks/check-absolute-module-paths.py | 154 | |
| LOW | .pre-commit-hooks/check-env-vars.py | 106 | |
| LOW | .pre-commit-hooks/check-env-vars.py | 185 | |
| LOW | .pre-commit-hooks/check-env-vars.py | 227 | |
| LOW | .pre-commit-hooks/check-double-escaping.py | 30 | |
| LOW | .pre-commit-hooks/fix-exception-logging.py | 200 | |
| LOW | .pre-commit-hooks/check-layer-imports.py | 53 | |
| LOW | .pre-commit-hooks/check-silent-cleanup.py | 70 | |
| LOW | .pre-commit-hooks/custom-checks.py | 431 | |
| LOW | .pre-commit-hooks/custom-checks.py | 58 | |
| LOW | .pre-commit-hooks/custom-checks.py | 173 | |
| LOW | .pre-commit-hooks/custom-checks.py | 269 | |
| LOW | .pre-commit-hooks/check-external-resources.py | 57 | |
| LOW | …e-commit-hooks/check-settings-manager-thread-safety.py | 55 | |
| LOW | .pre-commit-hooks/check-sensitive-logging.py | 270 | |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 117 | |
| LOW | .pre-commit-hooks/check-service-context-managers.py | 229 | |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 34 | |
| LOW | .pre-commit-hooks/check-session-context-manager.py | 93 | |
| LOW | .pre-commit-hooks/check-settings-key-namespace.py | 51 | |
| LOW | .pre-commit-hooks/_commit_analysis.py | 199 | |
| LOW | tests/test_openai_api_key_e2e.py | 44 | |
| LOW | tests/test_llm_provider_integration.py | 196 | |
| LOW | tests/test_llm_provider_integration.py | 332 | |
| LOW | tests/run_all_tests.py | 530 | |
| LOW | tests/run_all_tests.py | 77 | |
| LOW | tests/run_all_tests.py | 250 | |
| LOW | tests/settings/test_settings_manager.py | 598 | |
| LOW | tests/settings/test_settings_defaults_integrity.py | 318 | |
| LOW | tests/database/test_sqlcipher_integration.py | 564 | |
| LOW | tests/database/test_sqlcipher_integration.py | 3632 | |
| LOW | tests/database/test_sqlcipher_integration.py | 3720 | |
| LOW | tests/database/test_sqlcipher_integration.py | 4041 | |
| LOW | tests/database/test_sqlcipher_integration.py | 4684 | |
| LOW | tests/database/test_sqlcipher_integration.py | 4718 | |
| LOW | tests/database/test_alembic_migrations.py | 4162 | |
| LOW | tests/database/test_alembic_migrations.py | 6367 | |
| LOW | tests/database/test_auth_db.py | 147 | |
| LOW | tests/database/test_auth_db.py | 180 | |
| LOW | tests/database/test_auth_db.py | 220 | |
| LOW | tests/database/test_encryption_threads.py | 112 | |
| LOW | tests/database/test_encryption_threads.py | 155 | |
| LOW | tests/database/test_no_raw_sql.py | 15 | |
| LOW | tests/database/test_no_raw_sql.py | 181 | |
| LOW | tests/database/test_encrypted_db_manager.py | 27 | |
| LOW | tests/database/test_encrypted_db_manager.py | 123 | |
| LOW | tests/database/test_encrypted_db_manager.py | 193 | |
| LOW | tests/database/test_encrypted_db_manager.py | 307 | |
| LOW | tests/database/test_encrypted_db_manager.py | 351 | |
| LOW | tests/database/test_encrypted_db_manager.py | 888 | |
| LOW | tests/database/test_encrypted_db_manager.py | 1254 | |
| LOW | tests/database/test_encrypted_db_manager.py | 1336 | |
| LOW | tests/database/test_session_context.py | 59 | |
| LOW | tests/database/test_session_context.py | 82 | |
| 665 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/mock_modules.py | 16 | Create a mock module with specified attributes. Args: module_name: Name of the module to create |
| HIGH | examples/optimization/run_gemini_benchmark.py | 87 | Run benchmarks with Gemini Flash via OpenRouter. Args: examples: Number of examples to evaluate for ea |
| HIGH | examples/benchmarks/run_browsecomp.py | 62 | Run BrowseComp benchmark with proper decryption using canary field. Args: num_examples: Number of exam |
| HIGH | src/local_deep_research/database/sqlcipher_utils.py | 77 | Create and store a new random salt for a database. This should be called when creating a new database. The |
| HIGH | src/local_deep_research/database/sqlcipher_utils.py | 534 | Create a properly configured SQLCipher connection. Implements the full PRAGMA sequence with proper error clean |
| HIGH | src/local_deep_research/database/session_context.py | 84 | Context manager that ensures proper database session with encryption. Now uses thread-local sessions for better |
| HIGH | src/local_deep_research/database/library_init.py | 288 | Get the ID of a source type by name. Args: username: User to query for type_name: Name of sour |
| HIGH | src/local_deep_research/database/encrypted_db.py | 283 | Create a properly initialized SQLCipher connection. Follows the canonical SQLCipher initialization order: set k |
| HIGH | …ced_search_system/filters/journal_reputation_filter.py | 657 | Analyze journal reputation via 1 SearXNG search + 1 LLM call. This is Tier 4 — the last-resort scoring path. On |
| HIGH | …ced_search_system/filters/followup_relevance_filter.py | 26 | Filter search results by relevance to the follow-up query. Args: results: List of source d |
| HIGH | src/local_deep_research/llm/providers/openai_base.py | 32 | Factory function for OpenAI-compatible LLMs. Args: model_name: Name of the model to use |
| HIGH | src/local_deep_research/llm/providers/base.py | 23 | Create and return a LangChain chat model instance. Subclasses MUST override this method. Args: |
| HIGH | …_deep_research/llm/providers/implementations/openai.py | 31 | Factory function for OpenAI LLMs. Args: model_name: Name of the model to use temperatur |
| HIGH | …ep_research/llm/providers/implementations/anthropic.py | 31 | Factory function for Anthropic LLMs. Args: model_name: Name of the model to use tempera |
| HIGH | …_deep_research/llm/providers/implementations/ollama.py | 96 | Factory function for Ollama LLMs. Args: model_name: Name of the model to use temperatur |
| HIGH | src/local_deep_research/embeddings/embeddings_config.py | 132 | Get embeddings instance based on provider and model. Args: provider: Embedding provider to use (if Non |
| HIGH | src/local_deep_research/embeddings/providers/base.py | 33 | Create an embeddings instance for this provider. Args: model: Name of the embedding model |
| HIGH | …esearch/embeddings/providers/implementations/openai.py | 47 | Create OpenAI embeddings instance. Args: model: Model name (defaults to text-embedding-3-s |
| HIGH | …esearch/embeddings/splitters/text_splitter_registry.py | 34 | Get text splitter based on type. Args: splitter_type: Type of splitter ('recursive', 'token', 'sentenc |
| HIGH | src/local_deep_research/chat/service.py | 192 | Add a durable message (query/followup/response) to a chat session. Content is required and stored inli |
| HIGH | src/local_deep_research/chat/service.py | 397 | Get a chat session by ID. Args: session_id: ID of the session Returns: |
| HIGH | src/local_deep_research/chat/service.py | 762 | Archive a chat session. Refuses to archive while a research is still in_progress for the sessi |
| HIGH | src/local_deep_research/config/thread_settings.py | 77 | Get setting from context only - no database access from threads. Args: key: Setting key to retrieve |
| HIGH | src/local_deep_research/security/safe_requests.py | 149 | Make a safe HTTP GET request with SSRF protection. Args: url: URL to request params: URL param |
| HIGH | src/local_deep_research/security/safe_requests.py | 285 | Make a safe HTTP POST request with SSRF protection. Args: url: URL to request data: Data to se |
| HIGH | src/local_deep_research/security/safe_requests.py | 590 | `safe_get` plus exponential-backoff retry on transient errors. Retries on: * ``requests.ConnectionError`` |
| HIGH | …local_deep_research/security/notification_validator.py | 179 | Validate a notification service URL for security issues. This function prevents SSRF attacks by valida |
| HIGH | …local_deep_research/security/notification_validator.py | 332 | Strict validation that raises an exception on invalid URLs. Args: url: Service URL to vali |
| HIGH | src/local_deep_research/security/url_builder.py | 42 | Build a base URL from application settings with intelligent fallbacks. This function handles the common patter |
| HIGH | src/local_deep_research/security/url_builder.py | 92 | Build a complete URL from base URL and path. Args: base_url: Base URL (e.g., "https://myapp.com") |
| HIGH | src/local_deep_research/security/url_builder.py | 130 | Validate a constructed URL. Args: url: URL to validate allowed_schemes: List of allowed scheme |
| HIGH | src/local_deep_research/security/path_validator.py | 35 | Validate and sanitize a user-provided path. Args: user_input: The user-provided path strin |
| HIGH | src/local_deep_research/security/path_validator.py | 94 | Validate a user-provided absolute filesystem path for local indexing. This is for features like local |
| HIGH | src/local_deep_research/security/path_validator.py | 206 | Re-sanitize a validated path for static analyzer recognition. This method takes an already-validated P |
| HIGH | src/local_deep_research/security/path_validator.py | 243 | Validate a model file path specifically. Args: model_path: Path to the model file |
| HIGH | src/local_deep_research/security/path_validator.py | 286 | Validate a path within the data directory. Args: file_path: Path relative to data root |
| HIGH | src/local_deep_research/security/path_validator.py | 315 | Validate a configuration file path. Args: config_path: Path to config file con |
| HIGH | src/local_deep_research/security/module_whitelist.py | 181 | Safely import a class from a module, validating against both whitelists. This function provides secure dynamic |
| HIGH | src/local_deep_research/security/filename_sanitizer.py | 28 | Sanitize an uploaded filename for safe filesystem storage. Args: filename: Raw filename from the upload. |
| HIGH | src/local_deep_research/security/url_validator.py | 287 | Validate that a callback URL is well-formed and safe for HTTP/HTTPS use. This is stricter than is_safe |
| HIGH | src/local_deep_research/security/network_utils.py | 11 | Check if hostname is a private/local IP address. Recognizes: - Localhost values (127.0.0.1, localhost, [::1], 0 |
| HIGH | …_research/security/file_integrity/integrity_manager.py | 109 | Create or update integrity record for a file. Args: file_path: Path to file to record |
| HIGH | …deep_research/security/file_integrity/base_verifier.py | 67 | Calculate SHA256 checksum of file. Can be overridden by subclasses for different algorithms. |
| HIGH | …eep_research/research_library/routes/library_routes.py | 74 | Get authenticated user password from session store with fallback to g.user_password. Args: username: T |
| HIGH | src/local_deep_research/exporters/odt_exporter.py | 61 | Convert markdown content to ODT using Pandoc. The conversion runs entirely in memory: markdown is piped to |
| HIGH | src/local_deep_research/exporters/quarto_exporter.py | 57 | Convert markdown content to Quarto format. Args: markdown_content: The markdown text to convert |
| HIGH | src/local_deep_research/exporters/ris_exporter.py | 50 | Extract references from markdown and convert to RIS format. Args: markdown_content: The markdown te |
| HIGH | src/local_deep_research/exporters/latex_exporter.py | 49 | Convert markdown content to LaTeX. Args: markdown_content: The markdown text to convert |
| HIGH | src/local_deep_research/exporters/pdf_exporter.py | 53 | Convert markdown content to PDF using existing PDFService. Args: markdown_content: The markdown tex |
| HIGH | …l_deep_research/web/services/pdf_extraction_service.py | 24 | Extract text and metadata from PDF in a single pass. This method opens the PDF only once and extracts |
| HIGH | …c/local_deep_research/web/services/resource_service.py | 95 | Delete a resource from the database Args: resource_id (int): The ID of the resource to delete Ret |
| HIGH | src/local_deep_research/mcp/client.py | 450 | Run an async coroutine synchronously. Helper for running async MCP operations from sync code. Args: |
| HIGH | src/local_deep_research/storage/factory.py | 20 | Get a report storage instance that always uses database with optional file backup. Args: session: Database |
| HIGH | src/local_deep_research/utilities/type_utils.py | 13 | Convert a value to boolean, handling string representations. This is a standalone utility for converting any v |
| HIGH | src/local_deep_research/utilities/url_utils.py | 33 | Normalize a URL to ensure it has a proper scheme and format. Args: raw_url: The raw URL string to norm |
| HIGH | src/local_deep_research/news/core/card_factory.py | 60 | Get or create the storage instance. Args: session: SQLAlchemy session. If not provided, attempts to |
| HIGH | src/local_deep_research/news/core/card_factory.py | 104 | Create a new card of the specified type. Args: card_type: Type of card to create ('news', |
| HIGH | …/local_deep_research/benchmarks/benchmark_functions.py | 39 | Run SimpleQA benchmark evaluation. Args: num_examples: Number of examples to evaluate search_i |
| HIGH | …/local_deep_research/benchmarks/benchmark_functions.py | 126 | Run BrowseComp benchmark evaluation. Args: num_examples: Number of examples to evaluate search |
| HIGH | …/local_deep_research/benchmarks/benchmark_functions.py | 213 | Run xbench-DeepSearch benchmark evaluation. Args: num_examples: Number of examples to evaluate (defaul |
| 39 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .pre-commit-hooks/check-journal-quality-readonly.py | 15 | |
| LOW | tests/database/test_schema_index_completeness.py | 13 | |
| LOW | tests/database/test_journal_migrations_encrypted.py | 14 | |
| LOW | tests/database/test_research_strategy_fk_regression.py | 14 | |
| LOW | tests/database/test_fk_targets_resolve.py | 9 | |
| LOW | …sts/database/test_journal_rebuild_data_preservation.py | 20 | |
| LOW | tests/advanced_search_system/filters/conftest.py | 12 | |
| LOW | tests/advanced_search_system/tools/test_fetch_modes.py | 8 | |
| LOW | tests/integration/test_journal_quality_release_gate.py | 49 | |
| LOW | tests/journal_quality/test_lookup_institution_keys.py | 8 | |
| LOW | tests/journal_quality/test_openalex_common.py | 9 | |
| LOW | tests/journal_quality/test_openalex_schema_drift.py | 11 | |
| LOW | …s/journal_quality/test_institutions_malformed_lines.py | 11 | |
| LOW | tests/journal_quality/test_predatory_min_floor.py | 10 | |
| LOW | tests/mcp/test_server_coverage.py | 20 | |
| LOW | tests/mcp/test_validation.py | 11 | |
| LOW | tests/mcp/test_client_coverage.py | 30 | |
| LOW | tests/mcp/test_server_validators.py | 9 | |
| LOW | tests/mcp/test_mcp_client.py | 17 | |
| LOW | tests/mcp/test_mcp_call_tool_parsing.py | 16 | |
| LOW | tests/mcp/test_mcp_client_gaps.py | 25 | |
| LOW | tests/mcp/test_server.py | 14 | |
| LOW | tests/mcp/test_mcp_client_server_integration.py | 15 | |
| LOW | tests/mcp/test_edge_cases.py | 13 | |
| LOW | tests/mcp/test_integration.py | 13 | |
| LOW | tests/mcp/test_mcp_strategy.py | 18 | |
| LOW | tests/error_handling/test_openai_compat_errors.py | 9 | |
| LOW | tests/performance/mcp/test_concurrent_mcp_calls.py | 24 | |
| LOW | tests/performance/mcp/test_mcp_client_server_live.py | 16 | |
| LOW | tests/performance/_shared/build_eval_dataset.py | 25 | |
| LOW | tests/performance/_shared/run_full_search.py | 19 | |
| LOW | tests/performance/relevance_filter/eval_prompt.py | 17 | |
| LOW | tests/performance/relevance_filter/test_live.py | 19 | |
| LOW | tests/performance/relevance_filter/eval_models.py | 20 | |
| LOW | src/local_deep_research/__init__.py | 10 | |
| LOW | src/local_deep_research/search_system_factory.py | 12 | |
| LOW | src/local_deep_research/search_system_factory.py | 12 | |
| LOW | src/local_deep_research/search_system_factory.py | 12 | |
| LOW | src/local_deep_research/metrics/__init__.py | 3 | |
| LOW | src/local_deep_research/metrics/__init__.py | 3 | |
| LOW | src/local_deep_research/metrics/__init__.py | 4 | |
| LOW | src/local_deep_research/metrics/__init__.py | 4 | |
| LOW | src/local_deep_research/metrics/pricing/__init__.py | 8 | |
| LOW | src/local_deep_research/metrics/pricing/__init__.py | 9 | |
| LOW | src/local_deep_research/metrics/pricing/__init__.py | 10 | |
| LOW | src/local_deep_research/settings/__init__.py | 8 | |
| LOW | src/local_deep_research/settings/__init__.py | 9 | |
| LOW | src/local_deep_research/settings/__init__.py | 9 | |
| LOW | src/local_deep_research/settings/__init__.py | 9 | |
| LOW | src/local_deep_research/settings/__init__.py | 9 | |
| LOW | src/local_deep_research/settings/__init__.py | 9 | |
| LOW | src/local_deep_research/settings/__init__.py | 16 | |
| LOW | src/local_deep_research/settings/__init__.py | 16 | |
| LOW | src/local_deep_research/database/models/__init__.py | 6 | |
| LOW | src/local_deep_research/database/models/__init__.py | 7 | |
| LOW | src/local_deep_research/database/models/__init__.py | 8 | |
| LOW | src/local_deep_research/database/models/__init__.py | 9 | |
| LOW | src/local_deep_research/database/models/__init__.py | 9 | |
| LOW | src/local_deep_research/database/models/__init__.py | 9 | |
| LOW | src/local_deep_research/database/models/__init__.py | 9 | |
| 427 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_openai_api_key_e2e.py | 63 | # Step 1: Authenticate |
| LOW | tests/test_openai_api_key_e2e.py | 70 | # Step 2: Configure settings |
| LOW | tests/test_openai_api_key_e2e.py | 108 | # Step 3: Test LLM initialization |
| LOW | tests/test_openai_api_key_e2e.py | 119 | # Step 4: Test simple LLM call |
| LOW | tests/test_openai_api_key_e2e.py | 142 | # Step 5: Test research functionality |
| LOW | tests/database/test_alembic_migrations.py | 4528 | # Step 1: Migrate to 0001 only |
| LOW | tests/database/test_alembic_migrations.py | 4532 | # Step 2: Insert data |
| LOW | tests/database/test_alembic_migrations.py | 4559 | # Step 3: Upgrade to head (0005) |
| LOW | tests/database/test_alembic_migrations.py | 4563 | # Step 4: Verify data survived |
| LOW | tests/database/test_alembic_migrations.py | 4576 | # Step 5: Verify new columns exist |
| LOW | tests/database/test_alembic_migrations.py | 4608 | # Step 6: Another run_migrations should be no-op |
| LOW | tests/deletion/test_cascade_integration.py | 241 | # Step 1: Delete chunks (no FK, manual cleanup required) |
| LOW | tests/deletion/test_cascade_integration.py | 247 | # Step 2: Delete document (CASCADE handles blob and collection links) |
| LOW | tests/deletion/test_cascade_integration.py | 406 | # Step 1: Delete chunks (no FK, manual cleanup) |
| LOW | tests/deletion/test_cascade_integration.py | 411 | # Step 2: Delete RAG index |
| LOW | tests/deletion/test_cascade_integration.py | 416 | # Step 3: Delete collection (CASCADE handles folders, links) |
| LOW | tests/chat/test_chat_e2e_flows.py | 18 | # Step 1: Create session |
| LOW | tests/chat/test_chat_e2e_flows.py | 29 | # Step 2: Send a message |
| LOW | tests/chat/test_chat_e2e_flows.py | 43 | # Step 3: Get messages |
| LOW | tests/security/test_csrf_e2e_flow.py | 30 | # Step 1: GET /auth/login to get a CSRF token for registration |
| LOW | tests/security/test_csrf_e2e_flow.py | 42 | # Step 2: Register (auto-logs in the user) |
| LOW | tests/security/test_csrf_e2e_flow.py | 61 | # Step 3: Get API CSRF token from /auth/csrf-token |
| LOW | tests/security/test_csrf_e2e_flow.py | 68 | # Step 4: POST /api/start_research WITH CSRF token — should pass CSRF |
| LOW | tests/security/test_csrf_e2e_flow.py | 88 | # Step 5: POST /api/start_research WITHOUT CSRF token — should be rejected |
| LOW | tests/web/routes/test_search_favorites.py | 457 | # Step 1: Get empty favorites |
| LOW | tests/web/routes/test_search_favorites.py | 464 | # Step 2: Add searxng to favorites |
| LOW | tests/web/routes/test_search_favorites.py | 473 | # Step 3: Add arxiv to favorites |
| LOW | tests/web/routes/test_search_favorites.py | 483 | # Step 4: Remove searxng from favorites |
| LOW | tests/ui_tests/test_research_workflow_ci.js | 197 | // We need to check if there's any research in progress or check the page structure |
| LOW | tests/ui_tests/test_research_diagnosis.js | 75 | // Step 1: Authenticate |
| LOW | tests/ui_tests/test_research_diagnosis.js | 80 | // Step 2: Go to home page |
| LOW | tests/ui_tests/test_research_diagnosis.js | 86 | // Step 3: Check what's on the page |
| LOW | tests/ui_tests/test_research_diagnosis.js | 151 | // Step 4: Fill the form |
| LOW | tests/ui_tests/test_research_diagnosis.js | 190 | // Step 5: Check JavaScript state |
| LOW | tests/ui_tests/test_research_diagnosis.js | 235 | // Step 6: Submit the form |
| LOW | tests/ui_tests/test_research_diagnosis.js | 279 | // Step 7: Summary |
| LOW | …ts/ui_tests/NO_CI_executes_research_followup_simple.js | 41 | // Step 1: Login |
| LOW | …ts/ui_tests/NO_CI_executes_research_followup_simple.js | 55 | // Step 2: Navigate to parent research |
| LOW | …ts/ui_tests/NO_CI_executes_research_followup_simple.js | 65 | // Step 3: Test direct API call for follow-up |
| LOW | …sts/ui_tests/NO_CI_executes_research_fixed_research.js | 27 | // Step 1: Authenticate |
| LOW | …sts/ui_tests/NO_CI_executes_research_fixed_research.js | 32 | // Step 2: Navigate to home |
| LOW | …sts/ui_tests/NO_CI_executes_research_fixed_research.js | 39 | // Step 3: Configure model |
| LOW | …sts/ui_tests/NO_CI_executes_research_fixed_research.js | 47 | // Step 4: Enter query |
| LOW | …sts/ui_tests/NO_CI_executes_research_fixed_research.js | 53 | // Step 5: Submit research |
| LOW | …sts/ui_tests/NO_CI_executes_research_fixed_research.js | 69 | // Step 6: Verify research started |
| LOW | tests/ui_tests/test_metrics_display.js | 17 | // Step 1: Create and authenticate user |
| LOW | tests/ui_tests/test_metrics_display.js | 27 | // Step 2: Start a simple research |
| LOW | tests/ui_tests/test_metrics_display.js | 54 | // Step 3: Wait a bit for metrics to be generated |
| LOW | tests/ui_tests/test_metrics_display.js | 58 | // Step 4: Go to metrics page |
| LOW | tests/ui_tests/test_metrics_display.js | 63 | // Step 5: Check what's on the page (with error handling) |
| LOW | tests/ui_tests/DEBUG_research_submit_debug.js | 49 | // Step 1: Login |
| LOW | tests/ui_tests/DEBUG_research_submit_debug.js | 73 | // Step 2: Wait for form to load |
| LOW | tests/ui_tests/DEBUG_research_submit_debug.js | 98 | // Step 3: Fill the form |
| LOW | tests/ui_tests/DEBUG_research_submit_debug.js | 148 | // Step 4: Check form values |
| LOW | tests/ui_tests/DEBUG_research_submit_debug.js | 166 | // Step 5: Submit the form |
| LOW | tests/ui_tests/test_research_search_analysis.js | 42 | // Step 1: Authentication |
| LOW | tests/ui_tests/test_research_search_analysis.js | 47 | // Step 2: Navigate to research page |
| LOW | tests/ui_tests/test_research_search_analysis.js | 58 | // Step 3: Fill in research question |
| LOW | tests/ui_tests/test_research_search_analysis.js | 172 | // Step 4: Submit research |
| LOW | tests/ui_tests/test_research_search_analysis.js | 208 | // Step 5: Analyze current state |
| 86 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/test_api_settings_e2e.py | 80 | """Test detailed_research with comprehensive settings. |
| MEDIUM | tests/run_all_tests.py | 593 | # Legacy comprehensive testing - runs some tests multiple times (< 15min) |
| MEDIUM | …earch_system/filters/test_followup_relevance_filter.py | 328 | assert call_args.count("A") < 200 # Definitely truncated from original |
| MEDIUM | …_system/strategies/test_topic_organization_strategy.py | 783 | """Format topic findings creates comprehensive output.""" |
| LOW | …ed_search_system/questions/test_browsecomp_question.py | 692 | # Should not raise, just return False |
| MEDIUM | …_system/questions/test_flexible_browsecomp_question.py | 257 | assert call_args.count("A") < 500 # Definitely truncated from original |
| MEDIUM | tests/infrastructure_tests/test_urls_js.py | 39 | # More robust extraction pattern that handles multiline and comments |
| LOW | tests/content_fetcher/test_html_content_extraction.py | 155 | # Should not crash, just return minimal/empty output |
| LOW | tests/security/test_safe_requests_hook.py | 224 | # Should not raise, just return True (let other tools handle syntax) |
| MEDIUM | tests/security/test_url_validator_extended.py | 96 | # is_safe_url -- comprehensive scheme / option / pattern tests |
| MEDIUM | tests/security/test_safe_requests_retries.py | 186 | # 30s band absorbs clock jitter and test-harness latency. |
| LOW | tests/research_library/test_utils.py | 457 | # Should not raise an error, just return False |
| LOW | …esearch_library/downloaders/test_biorxiv_downloader.py | 70 | # Should not raise, just return False |
| MEDIUM | tests/research_library/routes/test_rag_routes.py | 2506 | # Create comprehensive mock for SettingsManager |
| MEDIUM | tests/error_handling/test_error_categorization.py | 301 | """Tests for comprehensive error analysis.""" |
| MEDIUM | tests/ui_tests/run_api_key_test.sh | 38 | # Run the comprehensive test |
| MEDIUM | tests/ui_tests/test_register_full_flow.js | 350 | // Uses AuthHelper for robust CI-compatible registration with proper timeouts |
| MEDIUM | tests/ui_tests/test_register_full_flow.js | 372 | // Use AuthHelper which has robust CI-compatible registration logic |
| MEDIUM | tests/ui_tests/test_checkbox_settings.js | 342 | // Toggle checkbox using robust method |
| MEDIUM | tests/ui_tests/test_checkbox_settings.js | 384 | // Toggle using robust method |
| MEDIUM | tests/ui_tests/test_checkbox_settings.js | 485 | // Toggle the checkbox using robust method |
| MEDIUM | tests/ui_tests/test_research_submit.js | 88 | // Submit the form with robust retry logic |
| LOW | tests/news/test_card_factory_extended.py | 777 | # This should not raise, just return None |
| LOW | …citation_handlers/test_precision_extraction_handler.py | 817 | # Should just return the LLM response without extraction modifications |
| MEDIUM | tests/document_loaders/test_loader_registry_coverage.py | 307 | # get_loader_for_path - comprehensive coverage |
| MEDIUM | tests/pdf_tests/test_file_validator.py | 242 | """Tests for validate_upload comprehensive method.""" |
| MEDIUM | tests/health_check/test_endpoints_health.py | 67 | """Run comprehensive health check and print summary""" |
| LOW | …ch_engines/rate_limiting/test_tracker_quality_stats.py | 512 | # Should not raise, just return early |
| MEDIUM | examples/optimization/strategy_benchmark_plan.py | 141 | num_examples=NUM_EXAMPLES, # Use 500 examples for robust evaluation |
| MEDIUM | examples/optimization/strategy_benchmark_plan.py | 185 | num_examples=NUM_EXAMPLES, # Use 500 examples for robust evaluation |
| MEDIUM | examples/optimization/strategy_benchmark_plan.py | 229 | num_examples=NUM_EXAMPLES, # Use 500 examples for robust evaluation |
| MEDIUM | examples/optimization/strategy_benchmark_plan.py | 274 | num_examples=NUM_EXAMPLES, # Use 500 examples for robust evaluation |
| LOW | examples/api_usage/simple_client_example.py | 37 | # Now just use it - no more CSRF hassles! |
| MEDIUM | …es/api_usage/programmatic/advanced_features_example.py | 54 | # Generate a comprehensive report |
| MEDIUM | …/api_usage/programmatic/simple_programmatic_example.py | 75 | # Generate a comprehensive report |
| MEDIUM | …pi_usage/programmatic/api_public_contract_guardrail.py | 32 | # DO NOT MODIFY this function — it is the test harness for the guardrail |
| MEDIUM | examples/benchmarks/claude_grading/run_benchmark.sh | 26 | # Use a long timeout for comprehensive benchmarks |
| MEDIUM | .github/workflows/file-whitelist-check.yml | 2 | # Enhanced security checks with comprehensive file type detection |
| MEDIUM | .github/workflows/gitleaks.yml | 37 | fetch-depth: 0 # Fetch full history for comprehensive secret scanning |
| MEDIUM | .github/workflows/playwright-webkit-tests.yml | 142 | # - mobile-ui-audit: comprehensive mobile UI quality checks |
| MEDIUM | .github/workflows/playwright-webkit-tests.yml | 298 | # - mobile-ui-audit: comprehensive mobile UI quality checks |
| MEDIUM | .github/scripts/file-whitelist-check.sh | 4 | # Enhanced security checks with comprehensive file type detection |
| MEDIUM | .github/scripts/file-whitelist-check.sh | 57 | # Use a more robust approach that handles edge cases |
| MEDIUM | src/local_deep_research/report_generator.py | 422 | # Section-level prompt - more comprehensive |
| MEDIUM | src/local_deep_research/search_system.py | 29 | strategy_name: str = "source-based", # Default to comprehensive research strategy |
| MEDIUM | …ced_search_system/filters/journal_reputation_filter.py | 91 | # controls — the comprehensive pattern audited in log_sanitizer, |
| MEDIUM | …arch/advanced_search_system/strategies/mcp_strategy.py | 1596 | prompt = f"""Based on the research conducted, provide a comprehensive answer to the query. |
| MEDIUM | …earch_system/strategies/constrained_search_strategy.py | 144 | # Add comprehensive debug summary |
| MEDIUM | …earch_system/strategies/constrained_search_strategy.py | 358 | # Continue searching to build a comprehensive list |
| MEDIUM | …earch_system/strategies/constrained_search_strategy.py | 398 | # Generic comprehensive queries |
| MEDIUM | …earch_system/strategies/constrained_search_strategy.py | 860 | """Format comprehensive debug summary.""" |
| MEDIUM | …earch_system/strategies/constrained_search_strategy.py | 1052 | """Execute a comprehensive search using source-based strategy for complex queries.""" |
| MEDIUM | …/advanced_search_system/strategies/modular_strategy.py | 739 | prompt = f"""Based on the search results, provide a comprehensive answer to: {query} |
| MEDIUM | …earch_system/strategies/topic_organization_strategy.py | 1675 | # Part 2: Generate comprehensive summary based on the topic sections |
| MEDIUM | …arch_system/strategies/iterative_reasoning_strategy.py | 734 | # Create comprehensive answer |
| MEDIUM | …arch_system/strategies/iterative_reasoning_strategy.py | 750 | # Add comprehensive final synthesis to findings |
| MEDIUM | …_system/strategies/recursive_decomposition_strategy.py | 340 | synthesis_prompt = f"""Based on the following subtask results, provide a comprehensive answer to the original qu |
| MEDIUM | …rch_system/strategies/browsecomp_optimized_strategy.py | 715 | # Add comprehensive findings |
| MEDIUM | …em/strategies/followup/enhanced_contextual_followup.py | 69 | # Build comprehensive context |
| MEDIUM | …advanced_search_system/knowledge/standard_knowledge.py | 30 | prompt = f"""Based on the following query and questions, generate comprehensive knowledge: |
| 29 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | .gitleaks.toml | 205 | '''your-api-key-here''', |
| HIGH | docker-compose.yml | 91 | # - LDR_LLM_OPENAI_API_KEY=<your-api-key> # Lock OpenAI API key |
| HIGH | docker-compose.yml | 92 | # - LDR_LLM_ANTHROPIC_API_KEY=<your-api-key> # Lock Anthropic API key |
| HIGH | docker-compose.yml | 102 | # - LDR_LLM_OPENAI_ENDPOINT_API_KEY=<your-api-key> |
| HIGH | docker-compose.yml | 111 | # - LDR_LLM_OPENAI_ENDPOINT_API_KEY=<your-api-key> |
| HIGH | tests/test_openai_api_key_e2e.py | 18 | export LDR_LLM_OPENAI_API_KEY=your_api_key |
| HIGH | docs/faq.md | 346 | export LDR_LLM_OPENAI_ENDPOINT_API_KEY="<your-api-key>" |
| HIGH | docs/faq.md | 357 | - LDR_LLM_OPENAI_ENDPOINT_API_KEY=<your-api-key> |
| HIGH | docs/docker-compose-guide.md | 140 | - LDR_LLM_OPENAI_ENDPOINT_API_KEY=<your-api-key> |
| HIGH | docs/troubleshooting-openai-api-key.md | 19 | export OPENAI_API_KEY=sk-your-api-key |
| HIGH | docs/troubleshooting-openai-api-key.md | 42 | export OPENAI_API_KEY=sk-your-api-key |
| HIGH | docs/troubleshooting-openai-api-key.md | 54 | settings_manager.set_setting("llm.openai.api_key", "sk-your-api-key") |
| HIGH | docs/troubleshooting-openai-api-key.md | 74 | -H "Authorization: Bearer YOUR_API_KEY" |
| HIGH | docs/troubleshooting-openai-api-key.md | 218 | settings_manager.set_setting("llm.openai.api_key", "your-api-key") |
| HIGH | docs/env_configuration.md | 75 | export LDR_LLM_OPENAI_ENDPOINT_API_KEY="<your-api-key>" |
| HIGH | docs/env_configuration.md | 89 | - LDR_LLM_OPENAI_ENDPOINT_API_KEY=<your-api-key> |
| HIGH | docs/env_configuration.md | 105 | export LDR_LLM_OPENAI_ENDPOINT_API_KEY="<your-api-key>" |
| HIGH | docs/env_configuration.md | 115 | -e LDR_LLM_OPENAI_API_KEY=your-api-key-here \ |
| HIGH | docs/env_configuration.md | 153 | export LDR_LLM_ANTHROPIC_API_KEY=your-api-key-here |
| HIGH | docs/env_configuration.md | 156 | set LDR_LLM_ANTHROPIC_API_KEY=your-api-key-here |
| HIGH | examples/optimization/README.md | 47 | python update_llm_config.py --model "google/gemini-2.0-flash" --provider "openai_endpoint" --endpoint "https://openrou |
| HIGH | examples/optimization/README.md | 52 | python run_gemini_benchmark.py --api-key "your-api-key" --examples 10 |
| HIGH | examples/optimization/update_llm_config.py | 14 | pdm run python examples/optimization/update_llm_config.py --model "google/gemini-2.0-flash" --provider "openai_endpo |
| HIGH | examples/benchmarks/run_gemini_benchmark.py | 13 | pdm run python examples/benchmarks/run_gemini_benchmark.py --api-key YOUR_API_KEY |
| HIGH | …deep_research/web_search_engines/search_engine_base.py | 664 | "YOUR_API_KEY", |
| HIGH | …deep_research/web_search_engines/search_engine_base.py | 666 | "your_api_key", |
| HIGH | …deep_research/web_search_engines/search_engine_base.py | 667 | "your-api-key", |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | tests/security/test_file_integrity_manager_coverage.py | 919 | session.query.return_value.filter_by.return_value.order_by.return_value.limit.assert_called() |
| CRITICAL | tests/js/deletion/delete-modules.test.js | 115 | const deleteCall = window.api.fetchWithErrorHandling.mock.calls.find( |
| CRITICAL | tests/web/auth/test_cleanup_middleware.py | 332 | mock_db_session.query.return_value.filter_by.return_value.limit.assert_called_with( |
| CRITICAL | tests/web/routes/test_history_routes_coverage.py | 246 | chain.group_by.return_value.order_by.return_value.limit.assert_called_with( |
| CRITICAL | tests/web/routes/test_history_routes_coverage.py | 249 | chain.group_by.return_value.order_by.return_value.limit.return_value.offset.assert_called_with( |
| CRITICAL | tests/web/routes/test_history_routes_coverage.py | 269 | chain.group_by.return_value.order_by.return_value.limit.assert_called_with( |
| CRITICAL | tests/news/test_rating_storage_extended.py | 529 | mock_query.filter_by.return_value.order_by.return_value.limit.assert_called_with( |
| CRITICAL | tests/news/test_folder_manager_behavior.py | 268 | session.query.return_value.filter_by.return_value.update.assert_called() |
| CRITICAL | tests/news/test_folder_manager_behavior.py | 277 | session.query.return_value.filter_by.return_value.update.assert_called() |
| CRITICAL | tests/news/test_folder_manager_extended.py | 255 | mock_session.query.return_value.filter_by.return_value.update.assert_called_once_with( |
| CRITICAL | tests/news/test_folder_manager_extended.py | 271 | mock_session.query.return_value.filter_by.return_value.update.assert_called_once_with( |
| CRITICAL | tests/news/rating_system/test_storage.py | 373 | mock_query.order_by.return_value.limit.return_value.offset.assert_called_once_with( |
| CRITICAL | .github/workflows/welcome-first-time.yml | 59 | const opts = github.rest.issues.listForRepo.endpoint.merge({ |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docker-compose.gpu.override.yml | 1 | # ============================================================================ |
| LOW | docker-compose.unraid.yml | 1 | # ============================================================================ |
| LOW | .hadolint.yaml | 1 | # Hadolint configuration file |
| LOW | .hadolint.yaml | 21 | # caching. npm ci, npm run build, and pdm install have different change |
| LOW | .file-whitelist.txt | 1 | # ============================================================================ |
| LOW | pyproject.toml | 401 | |
| LOW | pyproject.toml | 421 | # `name` is set explicitly so towncrier never tries to import the |
| LOW | docker-compose.yml | 1 | # ============================================================================ |
| LOW | docker-compose.yml | 41 | # Only use environment variables if you want to enforce specific settings |
| LOW | docker-compose.yml | 61 | # Example - to expose on port 8080 instead of 5000: |
| LOW | docker-compose.yml | 81 | # Register your initial account FIRST, then set this to false. |
| LOW | docker-compose.yml | 101 | # - LDR_LLM_OPENAI_ENDPOINT_URL=https://openrouter.ai/api/v1 |
| LOW | docker-compose.yml | 121 | # - LDR_LLM_LMSTUDIO_API_KEY=<api-key-if-required> # optional; leave out for unauth instances |
| LOW | docker-compose.yml | 141 | # ============================================================================ |
| LOW | eslint.config.js | 241 | "chai-friendly/no-unused-expressions": "error", |
| LOW | eslint.config.js | 301 | confirm: "readonly", |
| LOW | bearer.yml | 1 | # Bearer SAST Scanner Configuration |
| LOW | bearer.yml | 21 | |
| LOW | bearer.yml | 41 | # - validate_local_filesystem_path(): Explicit traversal checks + safe_join() |
| LOW | bearer.yml | 61 | # -------------------------------------------------------------- |
| LOW | bearer.yml | 81 | # - escapeHtml() inline fallbacks in component files |
| LOW | bearer.yml | 101 | # Observable timing alerts (javascript_lang_observable_timing) |
| LOW | community_benchmark_results/benchmark_template.yaml | 61 | test_details: |
| LOW | tests/settings/test_settings_defaults_integrity.py | 41 | KNOWN_UNUSED = { |
| LOW | tests/settings/test_settings_defaults_integrity.py | 61 | "llm.model", |
| LOW | tests/database/test_settings_models.py | 421 | # Note: onupdate might not trigger in SQLite without proper configuration |
| LOW | tests/database/test_migration_0010.py | 221 | # Relies on 0010 using server_default="0" (SQL-side, applied by |
| LOW | tests/database/test_paper_dedup_integration.py | 461 | assert len(all_papers) == 1, ( |
| LOW | tests/database/test_paper_dedup_integration.py | 481 | # dedup coverage above (test_same_doi_deduped_across_two_sources, |
| LOW | tests/database/test_sqlcipher_connection_factory.py | 341 | # the inline SQLCipher creator inside create_thread_safe_session_for_metrics. |
| LOW | tests/chat/test_chat_research_history_integration.py | 101 | # stored inline (snapshot semantics). The "fetch from |
| LOW | tests/security/test_xss_prevention.py | 221 | # DOM-based XSS happens when client-side JavaScript uses untrusted data |
| LOW | tests/security/test_xss_prevention.py | 241 | @pytest.mark.skip(reason="documentation/placeholder test - not implemented") |
| LOW | tests/security/test_auth_security.py | 21 | LDR uses SQLCipher encryption for user databases. |
| LOW | tests/security/test_auth_security.py | 121 | """Test that logout completely invalidates the session.""" |
| LOW | tests/security/test_sql_injection.py | 281 | # - session.query() - ✓ Safe (parameterized) |
| LOW | tests/security/test_csrf_protection.py | 161 | # Tokens should be stable within same session |
| LOW | tests/security/test_csrf_protection.py | 181 | assert get_response.status_code in [200, 302, 404] # Should work |
| LOW | tests/security/test_csrf_protection.py | 201 | # - Request body (for form submissions) |
| LOW | tests/js/components/logpanel.test.js | 301 | // Force the panel into an expanded state so addConsoleLog goes |
| LOW | …_library/services/test_library_rag_service_coverage.py | 1481 | # Patch FAISS.load_local ONCE, around both threads. Patching |
| LOW | tests/web/queue/test_processor_v2_real.py | 881 | # Rollback happened after the commit failure. |
| LOW | …sts/ui_tests/chat/test_chat_report_content_refactor.js | 361 | PROGRESS_SHOT_INTERVAL_MS / 1000 |
| LOW | tests/news/test_flask_api_scheduler_coverage.py | 21 | import pytest |
| LOW | scripts/dev/restart_server.sh | 1 | #!/bin/bash |
| LOW | .github/FUNDING.yml | 1 | # These are supported funding model platforms |
| LOW | .github/workflows/release-gate.yml | 1 | name: Release Gate |
| LOW | .github/workflows/release-gate.yml | 161 | |
| LOW | .github/workflows/release-gate.yml | 221 | |
| LOW | .github/workflows/release-gate.yml | 281 | # ============================================ |
| LOW | .github/workflows/release-gate.yml | 301 | # │ because PDM applies overrides differently. │ |
| LOW | .github/workflows/docker-publish.yml | 1 | name: Publish Docker image |
| LOW | .github/workflows/docker-publish.yml | 201 | # binary from GitHub releases by exact tag, which is the same |
| LOW | .github/workflows/compose-published-smoke.yml | 1 | name: Compose Published-Image Smoke |
| LOW | .github/workflows/compose-published-smoke.yml | 121 | sleep 10 |
| LOW | .github/workflows/release.yml | 81 | # SECURITY GATE - All security scans must pass before release proceeds |
| LOW | .github/workflows/release.yml | 401 | # release-env jobs together: prerelease-docker, publish-docker, |
| LOW | .github/workflows/release.yml | 421 | # future edit to prerelease-docker.yml that references an unrelated |
| LOW | .github/workflows/release.yml | 581 | # Compose the release body before creation so the published body is |
| LOW | .github/workflows/release.yml | 641 | HAND_NOTES=$(cat "$RELEASE_NOTES_FILE") |
| 88 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/test_search_engines_enhanced.py | 167 | Mock(name="John Doe"), |
| LOW | tests/mock_fixtures.py | 122 | "authors": [{"name": "John Doe"}, {"name": "Jane Smith"}], |
| LOW | tests/database/test_credential_store_behavior.py | 340 | special_user = "user@example.com" |
| LOW | tests/database/backup/test_backup_service.py | 3261 | "user@example.com", # Email format |
| LOW | …/advanced_search_system/evidence/test_base_evidence.py | 120 | metadata = {"author": "John Doe", "publication": "Science Journal"} |
| LOW | …/advanced_search_system/evidence/test_base_evidence.py | 129 | assert evidence.metadata["author"] == "John Doe" |
| LOW | …system/strategies/test_browsecomp_entity_pure_logic.py | 85 | e = _entity("Acme Corp") |
| LOW | …system/strategies/test_browsecomp_entity_pure_logic.py | 87 | assert "Acme Corp" in g.entities |
| LOW | …system/strategies/test_browsecomp_entity_pure_logic.py | 222 | score = self._call("Acme Corp") |
| LOW | …h_system/strategies/test_evidence_based_v2_extended.py | 126 | mock_strategy._extract_author.return_value = "John Doe" |
| LOW | …h_system/strategies/test_evidence_based_v2_extended.py | 128 | author = mock_strategy._extract_author({"author": "John Doe"}) |
| LOW | …h_system/strategies/test_evidence_based_v2_extended.py | 130 | assert author == "John Doe" |
| LOW | tests/js/utils/form-validation.test.js | 271 | expect(emailLike('user@example.com')).toBeNull(); |
| LOW | …/research_library/downloaders/test_arxiv_downloader.py | 254 | assert "John Doe" in metadata |
| LOW | …esearch_library/downloaders/test_metadata_extractor.py | 80 | "author": {"name": "Jane Doe"}, |
| LOW | …esearch_library/downloaders/test_metadata_extractor.py | 90 | assert "Jane Doe" in result |
| LOW | …rary/downloaders/test_html_downloader_deep_coverage.py | 407 | <meta name="author" content="John Doe"> |
| LOW | …rary/downloaders/test_html_downloader_deep_coverage.py | 416 | assert meta["author"] == "John Doe" |
| LOW | …ibrary/downloaders/test_metadata_extractor_expanded.py | 157 | item = {"headline": "Story", "author": "Jane Doe"} |
| LOW | …ibrary/downloaders/test_metadata_extractor_expanded.py | 160 | assert "Jane Doe" in text |
| LOW | tests/search_engines/conftest.py | 138 | "authors": ["John Doe", "Jane Smith"], |
| LOW | …sts/search_engines/test_search_engine_stackexchange.py | 345 | "display_name": "John Doe", |
| LOW | …sts/search_engines/test_search_engine_stackexchange.py | 375 | assert previews[0]["author"] == "John Doe" |
| LOW | tests/search_engines/test_search_engine_retriever.py | 184 | "author": "John Doe", |
| LOW | tests/search_engines/test_search_engine_retriever.py | 194 | assert result["author"] == "John Doe" |
| LOW | tests/search_engines/test_search_engine_paperless.py | 307 | "correspondent_name": "Acme Corp", |
| LOW | tests/search_engines/test_search_engine_paperless.py | 321 | assert preview["author"] == "Acme Corp" |
| LOW | tests/search_engines/test_search_engine_arxiv.py | 106 | mock_result.authors = [Mock(name="John Doe"), Mock(name="Jane Smith")] |
| LOW | tests/search_engines/test_search_engine_zenodo.py | 132 | {"name": "Jane Doe"}, |
| LOW | tests/search_engines/test_search_engine_zenodo.py | 136 | assert result == ["John Smith", "Jane Doe"] |
| LOW | tests/utilities/test_citation_normalizer.py | 79 | result = _parse_authors_list(["John Smith", "Jane Doe"]) |
| LOW | tests/news/test_base_recommender.py | 4114 | user_id = "user@example.com" |
| LOW | tests/news/test_base_subscription.py | 4630 | user_id = "user@example.com" |
| LOW | tests/news/test_preference_storage.py | 868 | "user_id": "user@example.com", |
| LOW | tests/news/test_preference_storage.py | 875 | result = storage.get_user_preferences("user@example.com") |
| LOW | tests/news/test_preference_storage.py | 877 | assert result["user_id"] == "user@example.com" |
| LOW | tests/news/test_base_card_extended.py | 879 | "people": ["John Doe", "Jane Smith"], |
| LOW | tests/news/test_base_card_extended.py | 885 | assert "John Doe" in card.entities["people"] |
| LOW | tests/document_loaders/test_upload_integration.py | 218 | assert "John Doe" in extracted or "name" in extracted |
| LOW | …_engines/engines/test_search_engine_serper_coverage.py | 100 | "attributes": {"Author": "Jane Doe"}, |
| LOW | …_engines/engines/test_search_engine_serper_coverage.py | 111 | assert p["attributes"] == {"Author": "Jane Doe"} |
| LOW | …_search_engines/engines/test_search_engine_openalex.py | 164 | {"author": {"display_name": "John Doe"}}, |
| LOW | …_search_engines/engines/test_search_engine_openalex.py | 189 | assert "John Doe" in previews[0]["authors"] |
| LOW | …_search_engines/engines/test_search_engine_openalex.py | 492 | "authors": "John Doe", |
| LOW | …_search_engines/engines/test_search_engine_openalex.py | 506 | assert results[0]["metadata"]["authors"] == "John Doe" |
| LOW | …engines/engines/test_search_engine_semantic_scholar.py | 502 | "authors": [{"name": "John Doe"}], |
| LOW | …_search_engines/engines/test_search_engine_guardian.py | 259 | "byline": "John Doe", |
| LOW | …_search_engines/engines/test_search_engine_guardian.py | 373 | "author": "John Doe", |
| LOW | …_search_engines/engines/test_search_engine_guardian.py | 455 | "author": "John Doe", |
| LOW | tests/web_search_engines/engines/test_arxiv_coverage.py | 802 | engine.search_by_author("John Doe") |
| LOW | tests/web_search_engines/engines/test_arxiv_coverage.py | 803 | mock_run.assert_called_once_with('au:"John Doe"') |
| LOW | tests/web_search_engines/engines/test_arxiv_coverage.py | 810 | engine.search_by_author("Jane Doe", max_results=50) |
| LOW | …_search_engines/engines/test_search_engine_nasa_ads.py | 492 | "authors": "John Doe", |
| LOW | …_search_engines/engines/test_search_engine_nasa_ads.py | 506 | assert results[0]["metadata"]["authors"] == "John Doe" |
| LOW | …search_engines/engines/test_search_engine_retriever.py | 151 | "author": "John Doe", |
| LOW | …search_engines/engines/test_search_engine_retriever.py | 160 | assert result["author"] == "John Doe" |
| LOW | …search_engines/engines/test_search_engine_paperless.py | 394 | "correspondent_name": "John Doe", |
| LOW | …web_search_engines/engines/test_search_engine_arxiv.py | 657 | engine.search_by_author("John Doe") |
| LOW | …web_search_engines/engines/test_search_engine_arxiv.py | 659 | mock_run.assert_called_once_with('au:"John Doe"') |
| LOW | …web_search_engines/engines/test_search_engine_arxiv.py | 675 | engine.search_by_author("John Doe", max_results=50) |
| 1 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | .pre-commit-hooks/recommend-pr-description-update.py | 64 | The ``currentBranch`` key is a single object (or null) — not an array. |
| HIGH | tests/config/test_thread_settings_high_value.py | 128 | # embeddings.openai.dimensions defaults to JSON null, then |
| HIGH | tests/web/warning_checks/test_hardware.py | 305 | config_file.write_text('{"port": null}', encoding="utf-8") |
| HIGH | tests/news/test_topic_generator_coverage.py | 113 | result = self._run_with_llm_content('[123, "Valid", null, true]') |
| HIGH | src/local_deep_research/config/thread_settings.py | 25 | # (e.g. embeddings.openai.dimensions, which defaults to JSON null) into the |
| HIGH | src/local_deep_research/security/url_validator.py | 500 | if (!url || typeof url !== 'string') { |
| HIGH | src/local_deep_research/security/url_validator.py | 531 | if (trustedDomains.length > 0 && parsed.hostname) { |
| HIGH | src/local_deep_research/security/url_validator.py | 552 | if (!url) return null; |
| HIGH | src/local_deep_research/security/url_validator.py | 556 | return null; |
| HIGH | src/local_deep_research/security/url_validator.py | 572 | return null; |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …ch_library/routes/test_rag_routes_indexing_coverage.py | 366 | |
| MEDIUM | …search_library/routes/test_rag_routes_deep_coverage.py | 1147 | |
| MEDIUM | …search_library/routes/test_rag_routes_deep_coverage.py | 1174 | |
| MEDIUM | …search_library/routes/test_rag_routes_deep_coverage.py | 1199 | |
| MEDIUM | tests/web/queue/test_queue_manager.py | 35 | |
| MEDIUM | tests/web/routes/test_context_overflow_coverage.py | 649 | |
| MEDIUM | tests/web/routes/test_context_overflow_coverage.py | 873 | |
| MEDIUM | tests/web/routes/test_context_overflow_api_http.py | 329 | |
| MEDIUM | tests/web/routes/test_context_overflow_api_http.py | 477 | |
| MEDIUM | …rch_engines/engines/test_embedding_manager_coverage.py | 422 | |
| MEDIUM | …rch_engines/engines/test_embedding_manager_coverage.py | 567 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/test_programmatic_custom_llm_retriever.py | 77 | # Using gemma3n:e4b as requested |
| HIGH | .github/workflows/release.yml | 586 | # 1. AI-generated narrative (model = vars.AI_MODEL). Fed the |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/ui_tests/test_lib/test_results.js | 203 | print() { |
| HIGH | …cal_deep_research/web/static/js/components/settings.js | 2511 | * @return True if the content is valid. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …tation_handlers/test_forced_answer_citation_handler.py | 90 | content = "I cannot provide a specific answer based on the sources." |
| MEDIUM | examples/optimization/example_quick_optimization.py | 35 | This is just for demonstration purposes. |
| MEDIUM | examples/optimization/example_quick_optimization.py | 274 | "\nNote: This is a simulation for demonstration purposes only. Real optimization" |
| MEDIUM | examples/optimization/multi_benchmark_simulation.py | 176 | """Simulates Optuna optimizer for demonstration purposes.""" |
| MEDIUM | examples/optimization/multi_benchmark_simulation.py | 406 | print("\nNote: This is a simulation for demonstration purposes only.") |
| MEDIUM | .github/workflows/codeql.yml | 61 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | docker-compose.gpu.override.yml | 11 | # Usage: |
| LOW | src/local_deep_research/web/routes/route_registry.py | 360 | # Example usage |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/security/test_env_vars_hook.py | 120 | def process_data(data): |
| LOW | tests/utilities/test_thread_context.py | 221 | def my_function(): |
| LOW | tests/utilities/test_db_utils.py | 242 | def my_function(): |