local-deep-research 0.3.0__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/PKG-INFO +1 -1
  2. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/pyproject.toml +6 -1
  3. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/__init__.py +1 -1
  4. local_deep_research-0.3.1/src/local_deep_research/__version__.py +1 -0
  5. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/defaults/default_settings.json +182 -0
  6. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/services/settings_manager.py +1 -1
  7. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +44 -4
  8. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/LICENSE +0 -0
  9. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/README.md +0 -0
  10. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/__main__.py +0 -0
  11. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/__init__.py +0 -0
  12. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/filters/__init__.py +0 -0
  13. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/filters/base_filter.py +0 -0
  14. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +0 -0
  15. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/findings/base_findings.py +0 -0
  16. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/findings/repository.py +0 -0
  17. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/knowledge/__init__.py +0 -0
  18. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +0 -0
  19. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +0 -0
  20. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/questions/__init__.py +0 -0
  21. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/questions/base_question.py +0 -0
  22. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +0 -0
  23. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/questions/standard_question.py +0 -0
  24. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/repositories/__init__.py +0 -0
  25. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/__init__.py +0 -0
  26. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +0 -0
  27. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +0 -0
  28. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +0 -0
  29. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +0 -0
  30. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/source_based_strategy.py +0 -0
  31. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +0 -0
  32. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/tools/__init__.py +0 -0
  33. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/tools/base_tool.py +0 -0
  34. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +0 -0
  35. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +0 -0
  36. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +0 -0
  37. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/api/__init__.py +0 -0
  38. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/api/research_functions.py +0 -0
  39. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/app.py +0 -0
  40. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/citation_handler.py +0 -0
  41. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/config/__init__.py +0 -0
  42. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/config/llm_config.py +0 -0
  43. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/config/search_config.py +0 -0
  44. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/defaults/.env.template +0 -0
  45. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/defaults/__init__.py +0 -0
  46. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/main.py +0 -0
  47. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/migrate_db.py +0 -0
  48. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/report_generator.py +0 -0
  49. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/search_system.py +0 -0
  50. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/setup_data_dir.py +0 -0
  51. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/test_migration.py +0 -0
  52. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/utilities/__init__.py +0 -0
  53. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/utilities/db_utils.py +0 -0
  54. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/utilities/enums.py +0 -0
  55. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/utilities/llm_utils.py +0 -0
  56. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/utilities/search_utilities.py +0 -0
  57. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/utilities/setup_utils.py +0 -0
  58. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/__init__.py +0 -0
  59. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/app.py +0 -0
  60. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/app_factory.py +0 -0
  61. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/database/README.md +0 -0
  62. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/database/migrate_to_ldr_db.py +0 -0
  63. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/database/migrations.py +0 -0
  64. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/database/models.py +0 -0
  65. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/database/schema_upgrade.py +0 -0
  66. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/models/database.py +0 -0
  67. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/models/settings.py +0 -0
  68. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/routes/api_routes.py +0 -0
  69. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/routes/history_routes.py +0 -0
  70. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/routes/research_routes.py +0 -0
  71. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/routes/settings_routes.py +0 -0
  72. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/services/research_service.py +0 -0
  73. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/services/resource_service.py +0 -0
  74. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/services/settings_service.py +0 -0
  75. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/services/socket_service.py +0 -0
  76. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/css/custom_dropdown.css +0 -0
  77. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/css/settings.css +0 -0
  78. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/css/styles.css +0 -0
  79. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/custom_dropdown.js +0 -0
  80. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/detail.js +0 -0
  81. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/fallback/formatting.js +0 -0
  82. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/fallback/ui.js +0 -0
  83. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/history.js +0 -0
  84. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/logpanel.js +0 -0
  85. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/progress.js +0 -0
  86. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/research.js +0 -0
  87. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/results.js +0 -0
  88. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/settings.js +0 -0
  89. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/components/settings_sync.js +0 -0
  90. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/main.js +0 -0
  91. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/research_form.js +0 -0
  92. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/services/api.js +0 -0
  93. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/services/audio.js +0 -0
  94. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/services/formatting.js +0 -0
  95. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/services/pdf.js +0 -0
  96. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/services/socket.js +0 -0
  97. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/js/services/ui.js +0 -0
  98. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/sounds/README.md +0 -0
  99. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
  100. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
  101. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/base.html +0 -0
  102. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/components/custom_dropdown.html +0 -0
  103. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/components/log_panel.html +0 -0
  104. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/components/mobile_nav.html +0 -0
  105. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/components/settings_form.html +0 -0
  106. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/components/sidebar.html +0 -0
  107. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/pages/details.html +0 -0
  108. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/pages/history.html +0 -0
  109. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/pages/progress.html +0 -0
  110. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/pages/research.html +0 -0
  111. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/pages/results.html +0 -0
  112. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/templates/settings_dashboard.html +0 -0
  113. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/utils/__init__.py +0 -0
  114. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web/utils/formatters.py +0 -0
  115. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/__init__.py +0 -0
  116. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
  117. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/full_search.py +0 -0
  118. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +0 -0
  119. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +0 -0
  120. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +0 -0
  121. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_github.py +0 -0
  122. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +0 -0
  123. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +0 -0
  124. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_local.py +0 -0
  125. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +0 -0
  126. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +0 -0
  127. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +0 -0
  128. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +0 -0
  129. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +0 -0
  130. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +0 -0
  131. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +0 -0
  132. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/search_engine_base.py +0 -0
  133. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/search_engine_factory.py +0 -0
  134. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/src/local_deep_research/web_search_engines/search_engines_config.py +0 -0
  135. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/tests/__init__.py +0 -0
  136. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/tests/download_stuff_for_local_test.py +0 -0
  137. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/tests/searxng/test_searxng_instance.py +0 -0
  138. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/tests/searxng/test_searxng_integration.py +0 -0
  139. {local_deep_research-0.3.0 → local_deep_research-0.3.1}/tests/test_google_pse.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: local-deep-research
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
5
5
  Author-Email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
6
6
  License: MIT License
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "local-deep-research"
9
- version = "0.3.0"
9
+ dynamic = []
10
10
  description = "AI-powered research assistant with deep, iterative analysis using LLMs and web searches"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.10"
@@ -57,6 +57,7 @@ dependencies = [
57
57
  "setuptools>=78.1.0",
58
58
  "flask-wtf>=1.2.2",
59
59
  ]
60
+ version = "0.3.1"
60
61
 
61
62
  [project.license]
62
63
  file = "LICENSE"
@@ -88,6 +89,10 @@ include-package-data = true
88
89
  [tool.pdm]
89
90
  distribution = true
90
91
 
92
+ [tool.pdm.version]
93
+ source = "file"
94
+ path = "src/local_deep_research/__version__.py"
95
+
91
96
  [dependency-groups]
92
97
  dev = [
93
98
  "isort>=6.0.1",
@@ -2,10 +2,10 @@
2
2
  Local Deep Research - A tool for conducting deep research using AI.
3
3
  """
4
4
 
5
- __version__ = "0.2.0"
6
5
  __author__ = "Your Name"
7
6
  __description__ = "A tool for conducting deep research using AI"
8
7
 
8
+ from .__version__ import __version__
9
9
  from .config.llm_config import get_llm
10
10
  from .config.search_config import get_search
11
11
  from .report_generator import get_report_generator
@@ -0,0 +1 @@
1
+ __version__ = "0.3.1"
@@ -3810,5 +3810,187 @@
3810
3810
  "ui_element": "number",
3811
3811
  "value": 100,
3812
3812
  "visible": true
3813
+ },
3814
+ "search.engine.web.pubmed.use_in_auto_search": {
3815
+ "category": "pubmed",
3816
+ "description": "Include PubMed in auto search mode",
3817
+ "editable": true,
3818
+ "max_value": null,
3819
+ "min_value": null,
3820
+ "name": "Include in Auto Search",
3821
+ "options": null,
3822
+ "step": null,
3823
+ "type": "SEARCH",
3824
+ "ui_element": "checkbox",
3825
+ "value": true,
3826
+ "visible": true
3827
+ },
3828
+ "search.engine.web.arxiv.use_in_auto_search": {
3829
+ "category": "arxiv",
3830
+ "description": "Include ArXiv in auto search mode",
3831
+ "editable": true,
3832
+ "max_value": null,
3833
+ "min_value": null,
3834
+ "name": "Include in Auto Search",
3835
+ "options": null,
3836
+ "step": null,
3837
+ "type": "SEARCH",
3838
+ "ui_element": "checkbox",
3839
+ "value": true,
3840
+ "visible": true
3841
+ },
3842
+ "search.engine.web.searxng.use_in_auto_search": {
3843
+ "category": "searxng",
3844
+ "description": "Include SearXNG in auto search mode",
3845
+ "editable": true,
3846
+ "max_value": null,
3847
+ "min_value": null,
3848
+ "name": "Include in Auto Search",
3849
+ "options": null,
3850
+ "step": null,
3851
+ "type": "SEARCH",
3852
+ "ui_element": "checkbox",
3853
+ "value": true,
3854
+ "visible": true
3855
+ },
3856
+ "search.engine.web.github.use_in_auto_search": {
3857
+ "category": "github",
3858
+ "description": "Include GitHub in auto search mode",
3859
+ "editable": true,
3860
+ "max_value": null,
3861
+ "min_value": null,
3862
+ "name": "Include in Auto Search",
3863
+ "options": null,
3864
+ "step": null,
3865
+ "type": "SEARCH",
3866
+ "ui_element": "checkbox",
3867
+ "value": true,
3868
+ "visible": true
3869
+ },
3870
+ "search.engine.web.wikipedia.use_in_auto_search": {
3871
+ "category": "wikipedia",
3872
+ "description": "Include Wikipedia in auto search mode",
3873
+ "editable": true,
3874
+ "max_value": null,
3875
+ "min_value": null,
3876
+ "name": "Include in Auto Search",
3877
+ "options": null,
3878
+ "step": null,
3879
+ "type": "SEARCH",
3880
+ "ui_element": "checkbox",
3881
+ "value": true,
3882
+ "visible": true
3883
+ },
3884
+ "search.engine.web.brave.use_in_auto_search": {
3885
+ "category": "brave",
3886
+ "description": "Include Brave search in auto search mode",
3887
+ "editable": true,
3888
+ "max_value": null,
3889
+ "min_value": null,
3890
+ "name": "Include in Auto Search",
3891
+ "options": null,
3892
+ "step": null,
3893
+ "type": "SEARCH",
3894
+ "ui_element": "checkbox",
3895
+ "value": false,
3896
+ "visible": true
3897
+ },
3898
+ "search.engine.web.google_pse.use_in_auto_search": {
3899
+ "category": "google_pse",
3900
+ "description": "Include Google PSE in auto search mode",
3901
+ "editable": true,
3902
+ "max_value": null,
3903
+ "min_value": null,
3904
+ "name": "Include in Auto Search",
3905
+ "options": null,
3906
+ "step": null,
3907
+ "type": "SEARCH",
3908
+ "ui_element": "checkbox",
3909
+ "value": false,
3910
+ "visible": true
3911
+ },
3912
+ "search.engine.web.serpapi.use_in_auto_search": {
3913
+ "category": "serpapi",
3914
+ "description": "Include SerpAPI in auto search mode",
3915
+ "editable": true,
3916
+ "max_value": null,
3917
+ "min_value": null,
3918
+ "name": "Include in Auto Search",
3919
+ "options": null,
3920
+ "step": null,
3921
+ "type": "SEARCH",
3922
+ "ui_element": "checkbox",
3923
+ "value": false,
3924
+ "visible": true
3925
+ },
3926
+ "search.engine.web.wayback.use_in_auto_search": {
3927
+ "category": "wayback",
3928
+ "description": "Include Wayback in auto search mode",
3929
+ "editable": true,
3930
+ "max_value": null,
3931
+ "min_value": null,
3932
+ "name": "Include in Auto Search",
3933
+ "options": null,
3934
+ "step": null,
3935
+ "type": "SEARCH",
3936
+ "ui_element": "checkbox",
3937
+ "value": false,
3938
+ "visible": true
3939
+ },
3940
+ "search.engine.local.local_all.use_in_auto_search": {
3941
+ "category": "local_all",
3942
+ "description": "Include local documents in auto search mode",
3943
+ "editable": true,
3944
+ "max_value": null,
3945
+ "min_value": null,
3946
+ "name": "Include in Auto Search",
3947
+ "options": null,
3948
+ "step": null,
3949
+ "type": "SEARCH",
3950
+ "ui_element": "checkbox",
3951
+ "value": true,
3952
+ "visible": true
3953
+ },
3954
+ "search.engine.local.personal_notes.use_in_auto_search": {
3955
+ "category": "personal_notes",
3956
+ "description": "Include personal notes in auto search mode",
3957
+ "editable": true,
3958
+ "max_value": null,
3959
+ "min_value": null,
3960
+ "name": "Include in Auto Search",
3961
+ "options": null,
3962
+ "step": null,
3963
+ "type": "SEARCH",
3964
+ "ui_element": "checkbox",
3965
+ "value": false,
3966
+ "visible": true
3967
+ },
3968
+ "search.engine.local.project_docs.use_in_auto_search": {
3969
+ "category": "project_docs",
3970
+ "description": "Include project documents in auto search mode",
3971
+ "editable": true,
3972
+ "max_value": null,
3973
+ "min_value": null,
3974
+ "name": "Include in Auto Search",
3975
+ "options": null,
3976
+ "step": null,
3977
+ "type": "SEARCH",
3978
+ "ui_element": "checkbox",
3979
+ "value": false,
3980
+ "visible": true
3981
+ },
3982
+ "search.engine.local.research_papers.use_in_auto_search": {
3983
+ "category": "research_papers",
3984
+ "description": "Include research papers in auto search mode",
3985
+ "editable": true,
3986
+ "max_value": null,
3987
+ "min_value": null,
3988
+ "name": "Include in Auto Search",
3989
+ "options": null,
3990
+ "step": null,
3991
+ "type": "SEARCH",
3992
+ "ui_element": "checkbox",
3993
+ "value": false,
3994
+ "visible": true
3813
3995
  }
3814
3996
  }
@@ -34,7 +34,7 @@ def check_env_setting(key: str) -> str | None:
34
34
  is not set.
35
35
 
36
36
  """
37
- env_variable_name = f"LDR_{"_".join(key.split(".")).upper()}"
37
+ env_variable_name = f"LDR_{'_'.join(key.split('.')).upper()}"
38
38
  env_value = os.getenv(env_variable_name)
39
39
  if env_value is not None:
40
40
  logger.debug(f"Overriding {key} setting from environment variable.")
@@ -65,16 +65,43 @@ class MetaSearchEngine(BaseSearchEngine):
65
65
  )
66
66
 
67
67
  def _get_available_engines(self) -> List[str]:
68
- """Get list of available engines, excluding 'meta' and 'auto'"""
68
+ """Get list of available engines, excluding 'meta' and 'auto', based on user settings"""
69
69
  # Filter out 'meta' and 'auto' and check API key availability
70
70
  available = []
71
+
71
72
  for name, config_ in search_config().items():
72
73
  if name in ["meta", "auto"]:
73
74
  continue
74
75
 
76
+ # Determine if this is a local engine (starts with "local.")
77
+ is_local_engine = name.startswith("local.")
78
+
79
+ # Determine the appropriate setting path based on engine type
80
+ if is_local_engine:
81
+ # Format: search.engine.local.{engine_name}.use_in_auto_search
82
+ local_name = name.replace("local.", "")
83
+ auto_search_setting = (
84
+ f"search.engine.local.{local_name}.use_in_auto_search"
85
+ )
86
+ else:
87
+ # Format: search.engine.web.{engine_name}.use_in_auto_search
88
+ auto_search_setting = f"search.engine.web.{name}.use_in_auto_search"
89
+
90
+ # Get setting from database, default to False if not found
91
+ use_in_auto_search = get_db_setting(auto_search_setting, False)
92
+
93
+ # Skip engines that aren't enabled for auto search
94
+ if not use_in_auto_search:
95
+ logger.info(
96
+ f"Skipping {name} engine because it's not enabled for auto search"
97
+ )
98
+ continue
99
+
100
+ # Skip engines that require API keys if we don't want to use them
75
101
  if config_.get("requires_api_key", False) and not self.use_api_key_services:
76
102
  continue
77
103
 
104
+ # Skip engines that require API keys if the key is not available
78
105
  if config_.get("requires_api_key", False):
79
106
  api_key = config_.get("api_key")
80
107
  if not api_key:
@@ -82,9 +109,11 @@ class MetaSearchEngine(BaseSearchEngine):
82
109
 
83
110
  available.append(name)
84
111
 
85
- # Make sure we have at least one engine available
86
- if not available and "wikipedia" in search_config():
87
- available.append("wikipedia")
112
+ # If no engines are available, raise an error instead of falling back silently
113
+ if not available:
114
+ error_msg = "No search engines enabled for auto search. Please enable at least one engine in settings."
115
+ logger.error(error_msg)
116
+ raise RuntimeError(error_msg)
88
117
 
89
118
  return available
90
119
 
@@ -131,6 +160,17 @@ class MetaSearchEngine(BaseSearchEngine):
131
160
  except KeyError as e:
132
161
  logger.error(f"Missing key for engine {engine_name}: {str(e)}")
133
162
 
163
+ # Only proceed if we have engines available to choose from
164
+ if not engines_info:
165
+ logger.warning(
166
+ "No engine information available for prompt, using reliability-based sorting instead"
167
+ )
168
+ return sorted(
169
+ self.available_engines,
170
+ key=lambda x: search_config().get(x, {}).get("reliability", 0),
171
+ reverse=True,
172
+ )
173
+
134
174
  prompt = f"""You are a search query analyst. Consider this search query:
135
175
 
136
176
  QUERY: {query}