local-deep-research 0.3.12__py3-none-any.whl → 0.4.0__py3-none-any.whl

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 (92) hide show
  1. local_deep_research/__version__.py +1 -1
  2. local_deep_research/advanced_search_system/filters/base_filter.py +2 -3
  3. local_deep_research/advanced_search_system/filters/cross_engine_filter.py +4 -5
  4. local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +298 -0
  5. local_deep_research/advanced_search_system/findings/repository.py +0 -3
  6. local_deep_research/advanced_search_system/strategies/base_strategy.py +1 -2
  7. local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +14 -18
  8. local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +4 -8
  9. local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +5 -6
  10. local_deep_research/advanced_search_system/strategies/source_based_strategy.py +2 -2
  11. local_deep_research/advanced_search_system/strategies/standard_strategy.py +9 -7
  12. local_deep_research/api/benchmark_functions.py +288 -0
  13. local_deep_research/api/research_functions.py +8 -4
  14. local_deep_research/benchmarks/README.md +162 -0
  15. local_deep_research/benchmarks/__init__.py +51 -0
  16. local_deep_research/benchmarks/benchmark_functions.py +353 -0
  17. local_deep_research/benchmarks/cli/__init__.py +16 -0
  18. local_deep_research/benchmarks/cli/benchmark_commands.py +338 -0
  19. local_deep_research/benchmarks/cli.py +347 -0
  20. local_deep_research/benchmarks/comparison/__init__.py +12 -0
  21. local_deep_research/benchmarks/comparison/evaluator.py +768 -0
  22. local_deep_research/benchmarks/datasets/__init__.py +53 -0
  23. local_deep_research/benchmarks/datasets/base.py +295 -0
  24. local_deep_research/benchmarks/datasets/browsecomp.py +116 -0
  25. local_deep_research/benchmarks/datasets/custom_dataset_template.py +98 -0
  26. local_deep_research/benchmarks/datasets/simpleqa.py +74 -0
  27. local_deep_research/benchmarks/datasets/utils.py +116 -0
  28. local_deep_research/benchmarks/datasets.py +31 -0
  29. local_deep_research/benchmarks/efficiency/__init__.py +14 -0
  30. local_deep_research/benchmarks/efficiency/resource_monitor.py +367 -0
  31. local_deep_research/benchmarks/efficiency/speed_profiler.py +214 -0
  32. local_deep_research/benchmarks/evaluators/__init__.py +18 -0
  33. local_deep_research/benchmarks/evaluators/base.py +74 -0
  34. local_deep_research/benchmarks/evaluators/browsecomp.py +83 -0
  35. local_deep_research/benchmarks/evaluators/composite.py +121 -0
  36. local_deep_research/benchmarks/evaluators/simpleqa.py +271 -0
  37. local_deep_research/benchmarks/graders.py +410 -0
  38. local_deep_research/benchmarks/metrics/README.md +80 -0
  39. local_deep_research/benchmarks/metrics/__init__.py +24 -0
  40. local_deep_research/benchmarks/metrics/calculation.py +385 -0
  41. local_deep_research/benchmarks/metrics/reporting.py +155 -0
  42. local_deep_research/benchmarks/metrics/visualization.py +205 -0
  43. local_deep_research/benchmarks/metrics.py +11 -0
  44. local_deep_research/benchmarks/optimization/__init__.py +32 -0
  45. local_deep_research/benchmarks/optimization/api.py +274 -0
  46. local_deep_research/benchmarks/optimization/metrics.py +20 -0
  47. local_deep_research/benchmarks/optimization/optuna_optimizer.py +1163 -0
  48. local_deep_research/benchmarks/runners.py +434 -0
  49. local_deep_research/benchmarks/templates.py +65 -0
  50. local_deep_research/config/llm_config.py +26 -23
  51. local_deep_research/config/search_config.py +1 -5
  52. local_deep_research/defaults/default_settings.json +108 -7
  53. local_deep_research/search_system.py +16 -8
  54. local_deep_research/utilities/db_utils.py +3 -6
  55. local_deep_research/utilities/es_utils.py +441 -0
  56. local_deep_research/utilities/log_utils.py +36 -0
  57. local_deep_research/utilities/search_utilities.py +8 -9
  58. local_deep_research/web/app.py +7 -9
  59. local_deep_research/web/app_factory.py +9 -12
  60. local_deep_research/web/database/migrations.py +8 -5
  61. local_deep_research/web/database/models.py +20 -0
  62. local_deep_research/web/database/schema_upgrade.py +5 -8
  63. local_deep_research/web/models/database.py +15 -18
  64. local_deep_research/web/routes/benchmark_routes.py +427 -0
  65. local_deep_research/web/routes/research_routes.py +13 -17
  66. local_deep_research/web/routes/settings_routes.py +264 -67
  67. local_deep_research/web/services/research_service.py +47 -57
  68. local_deep_research/web/services/settings_manager.py +1 -4
  69. local_deep_research/web/services/settings_service.py +4 -6
  70. local_deep_research/web/static/css/styles.css +12 -0
  71. local_deep_research/web/static/js/components/logpanel.js +164 -155
  72. local_deep_research/web/static/js/components/research.js +44 -3
  73. local_deep_research/web/static/js/components/settings.js +27 -0
  74. local_deep_research/web/static/js/services/socket.js +47 -0
  75. local_deep_research/web_search_engines/default_search_engines.py +38 -0
  76. local_deep_research/web_search_engines/engines/meta_search_engine.py +100 -33
  77. local_deep_research/web_search_engines/engines/search_engine_arxiv.py +31 -17
  78. local_deep_research/web_search_engines/engines/search_engine_brave.py +8 -3
  79. local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +343 -0
  80. local_deep_research/web_search_engines/engines/search_engine_google_pse.py +14 -6
  81. local_deep_research/web_search_engines/engines/search_engine_local.py +19 -23
  82. local_deep_research/web_search_engines/engines/search_engine_local_all.py +9 -12
  83. local_deep_research/web_search_engines/engines/search_engine_searxng.py +12 -17
  84. local_deep_research/web_search_engines/engines/search_engine_serpapi.py +8 -4
  85. local_deep_research/web_search_engines/search_engine_base.py +22 -5
  86. local_deep_research/web_search_engines/search_engine_factory.py +32 -11
  87. local_deep_research/web_search_engines/search_engines_config.py +14 -1
  88. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/METADATA +10 -2
  89. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/RECORD +92 -49
  90. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/WHEEL +0 -0
  91. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/entry_points.txt +0 -0
  92. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,15 +1,14 @@
1
1
  import json
2
- import logging
3
2
  from abc import ABC, abstractmethod
4
3
  from datetime import datetime
5
4
  from typing import Any, Dict, List, Optional
6
5
 
7
6
  from langchain_core.language_models import BaseLLM
7
+ from loguru import logger
8
8
 
9
+ from ..advanced_search_system.filters.base_filter import BaseFilter
9
10
  from ..config import search_config
10
11
 
11
- logger = logging.getLogger(__name__)
12
-
13
12
 
14
13
  class BaseSearchEngine(ABC):
15
14
  """
@@ -22,6 +21,8 @@ class BaseSearchEngine(ABC):
22
21
  llm: Optional[BaseLLM] = None,
23
22
  max_filtered_results: Optional[int] = None,
24
23
  max_results: Optional[int] = 10, # Default value if not provided
24
+ preview_filters: List[BaseFilter] | None = None,
25
+ content_filters: List[BaseFilter] | None = None,
25
26
  **kwargs,
26
27
  ):
27
28
  """
@@ -31,12 +32,22 @@ class BaseSearchEngine(ABC):
31
32
  llm: Optional language model for relevance filtering
32
33
  max_filtered_results: Maximum number of results to keep after filtering
33
34
  max_results: Maximum number of search results to return
35
+ preview_filters: Filters that will be applied to all previews
36
+ produced by the search engine, before relevancy checks.
37
+ content_filters: Filters that will be applied to the full content
38
+ produced by the search engine, after relevancy checks.
34
39
  **kwargs: Additional engine-specific parameters
35
40
  """
36
41
  if max_filtered_results is None:
37
42
  max_filtered_results = 5
38
43
  if max_results is None:
39
44
  max_results = 10
45
+ self._preview_filters: List[BaseFilter] = preview_filters
46
+ if self._preview_filters is None:
47
+ self._preview_filters = []
48
+ self._content_filters: List[BaseFilter] = content_filters
49
+ if self._content_filters is None:
50
+ self._content_filters = []
40
51
 
41
52
  self.llm = llm # LLM for relevance filtering
42
53
  self._max_filtered_results = int(max_filtered_results) # Ensure it's an integer
@@ -91,6 +102,9 @@ class BaseSearchEngine(ABC):
91
102
  )
92
103
  return []
93
104
 
105
+ for preview_filter in self._preview_filters:
106
+ previews = preview_filter.filter_results(previews, query)
107
+
94
108
  # Step 2: Filter previews for relevance with LLM
95
109
  filtered_items = self._filter_for_relevance(previews, query)
96
110
  if not filtered_items:
@@ -112,6 +126,9 @@ class BaseSearchEngine(ABC):
112
126
  else:
113
127
  results = self._get_full_content(filtered_items)
114
128
 
129
+ for content_filter in self._content_filters:
130
+ results = content_filter.filter_results(results, query)
131
+
115
132
  return results
116
133
 
117
134
  def invoke(self, query: str) -> List[Dict[str, Any]]:
@@ -237,8 +254,8 @@ Respond with ONLY the JSON array, no other text."""
237
254
  logger.debug(f"Response text without JSON array: {response_text}")
238
255
  return previews[: min(5, len(previews))]
239
256
 
240
- except Exception as e:
241
- logger.error(f"Relevance filtering error: {e}", exc_info=True)
257
+ except Exception:
258
+ logger.exception("Relevance filtering error")
242
259
  # Fall back to returning top results on error
243
260
  return previews[: min(5, len(previews))]
244
261
 
@@ -1,17 +1,14 @@
1
1
  import importlib
2
2
  import inspect
3
- import logging
4
3
  import os
5
4
  from typing import Any, Dict, Optional
6
5
 
6
+ from loguru import logger
7
+
7
8
  from ..utilities.db_utils import get_db_setting
8
9
  from .search_engine_base import BaseSearchEngine
9
10
  from .search_engines_config import default_search_engine, search_config
10
11
 
11
- # Setup logging
12
- logging.basicConfig(level=logging.INFO)
13
- logger = logging.getLogger(__name__)
14
-
15
12
 
16
13
  def create_search_engine(
17
14
  engine_name: str, llm=None, **kwargs
@@ -47,7 +44,16 @@ def create_search_engine(
47
44
 
48
45
  # Check for API key requirements
49
46
  if engine_config.get("requires_api_key", False):
47
+ # Check for API key in environment variables
50
48
  api_key = os.getenv(f"LDR_{engine_name.upper()}_API_KEY")
49
+
50
+ # If not found, check the database for the API key
51
+ if not api_key:
52
+ from ..utilities.db_utils import get_db_setting
53
+
54
+ api_key = get_db_setting(f"search.engine.web.{engine_name}.api_key")
55
+
56
+ # Still try to get from engine config if not found
51
57
  if not api_key:
52
58
  api_key = engine_config.get("api_key")
53
59
 
@@ -55,6 +61,12 @@ def create_search_engine(
55
61
  logger.info(f"Required API key for {engine_name} not found in settings.")
56
62
  return None
57
63
 
64
+ # Set the engine-specific environment variable if needed
65
+ # This is to support engines that directly check environment variables
66
+ if engine_name == "brave" and not os.getenv("BRAVE_API_KEY"):
67
+ os.environ["BRAVE_API_KEY"] = api_key
68
+ logger.info("Set BRAVE_API_KEY environment variable from database setting")
69
+
58
70
  # Check for LLM requirements
59
71
  if engine_config.get("requires_llm", False) and not llm:
60
72
  logger.info(
@@ -97,11 +109,15 @@ def create_search_engine(
97
109
  engine_config.get("requires_api_key", False)
98
110
  and "api_key" not in filtered_params
99
111
  ):
112
+ # First check for api_key_env in engine config
100
113
  api_key_env = engine_config.get("api_key_env")
101
114
  if api_key_env:
102
115
  api_key = os.getenv(api_key_env)
103
116
  if api_key:
104
117
  filtered_params["api_key"] = api_key
118
+ # If not found, use the api_key we got earlier
119
+ elif api_key:
120
+ filtered_params["api_key"] = api_key
105
121
 
106
122
  logger.info(
107
123
  f"Creating {engine_name} with filtered parameters: {filtered_params.keys()}"
@@ -118,8 +134,8 @@ def create_search_engine(
118
134
 
119
135
  return engine
120
136
 
121
- except Exception as e:
122
- logger.info(f"Failed to create search engine '{engine_name}': {str(e)}")
137
+ except Exception:
138
+ logger.exception(f"Failed to create search engine '{engine_name}'")
123
139
  return None
124
140
 
125
141
 
@@ -176,7 +192,14 @@ def _create_full_search_wrapper(
176
192
 
177
193
  # Special case for Brave which needs the API key directly
178
194
  if engine_name == "brave" and "api_key" in wrapper_init_params:
195
+ # First check environment variable
179
196
  brave_api_key = os.getenv("BRAVE_API_KEY")
197
+ # If not found, check database
198
+ if not brave_api_key:
199
+ from ..utilities.db_utils import get_db_setting
200
+
201
+ brave_api_key = get_db_setting("search.engine.web.brave.api_key")
202
+
180
203
  if brave_api_key:
181
204
  wrapper_params["api_key"] = brave_api_key
182
205
 
@@ -214,10 +237,8 @@ def _create_full_search_wrapper(
214
237
 
215
238
  return full_search
216
239
 
217
- except Exception as e:
218
- logger.error(
219
- f"Failed to create full search wrapper for {engine_name}: {str(e)}"
220
- )
240
+ except Exception:
241
+ logger.exception(f"Failed to create full search wrapper for {engine_name}")
221
242
  return base_engine
222
243
 
223
244
 
@@ -4,12 +4,20 @@ Loads search engine definitions from the user's configuration.
4
4
  """
5
5
 
6
6
  import json
7
+
7
8
  import logging
8
9
  from typing import Any, Dict, List
9
10
 
10
11
  from ..utilities.db_utils import get_db_setting
12
+ from .default_search_engines import get_default_elasticsearch_config
13
+
14
+ from functools import cache
15
+ from typing import Any, Dict, List
11
16
 
12
- logger = logging.getLogger(__name__)
17
+ from loguru import logger
18
+
19
+
20
+ from ..utilities.db_utils import get_db_setting
13
21
 
14
22
 
15
23
  def _extract_per_engine_config(raw_config: Dict[str, Any]) -> Dict[str, Dict[str, Any]]:
@@ -61,6 +69,11 @@ def search_config() -> Dict[str, Any]:
61
69
  # Add alias for 'auto' if it exists
62
70
  if "auto" in search_engines and "meta" not in search_engines:
63
71
  search_engines["meta"] = search_engines["auto"]
72
+
73
+ # Add Elasticsearch search engine if not already present
74
+ if "elasticsearch" not in search_engines:
75
+ logger.info("Adding default Elasticsearch search engine configuration")
76
+ search_engines["elasticsearch"] = get_default_elasticsearch_config()
64
77
 
65
78
  # Register local document collections
66
79
  local_collections_data = get_db_setting("search.engine.local", {})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: local-deep-research
3
- Version: 0.3.12
3
+ Version: 0.4.0
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
@@ -36,7 +36,7 @@ Requires-Dist: langchain-community>=0.3.17
36
36
  Requires-Dist: langchain-core>=0.3.34
37
37
  Requires-Dist: langchain-ollama>=0.2.3
38
38
  Requires-Dist: langchain-openai>=0.3.5
39
- Requires-Dist: langchain_anthropic>=0.3.7
39
+ Requires-Dist: langchain-anthropic>=0.3.13
40
40
  Requires-Dist: duckduckgo_search>=7.3.2
41
41
  Requires-Dist: python-dateutil>=2.9.0
42
42
  Requires-Dist: typing_extensions>=4.12.2
@@ -67,6 +67,14 @@ Requires-Dist: google-search-results
67
67
  Requires-Dist: importlib-resources>=6.5.2
68
68
  Requires-Dist: setuptools>=78.1.0
69
69
  Requires-Dist: flask-wtf>=1.2.2
70
+ Requires-Dist: optuna>=4.3.0
71
+ Requires-Dist: elasticsearch==8.14.0
72
+ Requires-Dist: methodtools>=0.4.7
73
+ Requires-Dist: loguru>=0.7.3
74
+ Requires-Dist: matplotlib>=3.10.3
75
+ Requires-Dist: pandas>=2.2.3
76
+ Requires-Dist: plotly>=6.0.1
77
+ Requires-Dist: kaleido==0.1.0
70
78
  Description-Content-Type: text/markdown
71
79
 
72
80
  # Local Deep Research
@@ -1,15 +1,16 @@
1
- local_deep_research-0.3.12.dist-info/METADATA,sha256=uKHXsYHDDDmmrMp_LyUo6xStbKJYfoACmBwA0_kTX8s,17101
2
- local_deep_research-0.3.12.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- local_deep_research-0.3.12.dist-info/entry_points.txt,sha256=GcXS501Rjh-P80S8db7hnrQ23mS_Jg27PwpVQVO77as,113
4
- local_deep_research-0.3.12.dist-info/licenses/LICENSE,sha256=Qg2CaTdu6SWnSqk1_JtgBPp_Da-LdqJDhT1Vt1MUc5s,1072
1
+ local_deep_research-0.4.0.dist-info/METADATA,sha256=7uDHSL-BSiWwI_X9EbHquJ0BUNbyHxyUAMLzPZYJKZs,17352
2
+ local_deep_research-0.4.0.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ local_deep_research-0.4.0.dist-info/entry_points.txt,sha256=GcXS501Rjh-P80S8db7hnrQ23mS_Jg27PwpVQVO77as,113
4
+ local_deep_research-0.4.0.dist-info/licenses/LICENSE,sha256=Qg2CaTdu6SWnSqk1_JtgBPp_Da-LdqJDhT1Vt1MUc5s,1072
5
5
  local_deep_research/__init__.py,sha256=9wV3oonZMEHsE_JhyZU9P0hW2Uwv47zotGlbAB_gQiA,885
6
- local_deep_research/__version__.py,sha256=uzDtUmN3o6XGGV0Pkoi7vJCijlJJCOYCmLl8900CcXg,23
6
+ local_deep_research/__version__.py,sha256=42STGor_9nKYXumfeV5tiyD_M8VdcddX7CEexmibPBk,22
7
7
  local_deep_research/advanced_search_system/__init__.py,sha256=sGusMj4eFIrhXR6QbOM16UDKB6aI-iS4IFivKWpMlh0,234
8
8
  local_deep_research/advanced_search_system/filters/__init__.py,sha256=2dXrV4skcVHI2Lb3BSL2Ajq0rnLeSw7kc1MbIynMxa4,190
9
- local_deep_research/advanced_search_system/filters/base_filter.py,sha256=dFNQ7U2dj4bf3voT73YhcG-w9eW-BTlc4F9kstFcETY,969
10
- local_deep_research/advanced_search_system/filters/cross_engine_filter.py,sha256=HzhlIrtQlMEPMIibW2ySzMB8aXV2hQBNfCWRo_AJJpM,8009
9
+ local_deep_research/advanced_search_system/filters/base_filter.py,sha256=58Ux0ppXafL8Vy2qbWioUBMqGtK1dgtSF5A68BP8M8Y,1010
10
+ local_deep_research/advanced_search_system/filters/cross_engine_filter.py,sha256=oUOjwaetqvErFDu3UOYyS9tFeK61VCJ0ts0ZPhlEGjk,7976
11
+ local_deep_research/advanced_search_system/filters/journal_reputation_filter.py,sha256=2vtcJq-UYL-v9P8TgViFTDWYhZhZEK4fDTDKKeQcXqM,10989
11
12
  local_deep_research/advanced_search_system/findings/base_findings.py,sha256=tTVEQZeGuTdJ1tDF8QAkiS5pWest8_lmbq3Oq5EPGeY,2052
12
- local_deep_research/advanced_search_system/findings/repository.py,sha256=nIdF114IaSNLjnjetbXE8s8C69djik3lywOiFvFI4Lk,19804
13
+ local_deep_research/advanced_search_system/findings/repository.py,sha256=Tcg6cjO7bwnMIMxVPIVbpFPS8FKICXKTfskoOUJxgM8,19659
13
14
  local_deep_research/advanced_search_system/knowledge/__init__.py,sha256=9zjQkdmomZCgZZP45fqw0E8UVpBjkzkyW7RpY0f8gY8,34
14
15
  local_deep_research/advanced_search_system/knowledge/base_knowledge.py,sha256=CJhx3esyvIZC0G6nNfBE6PctP_1-xg42spXa6vhnk14,4019
15
16
  local_deep_research/advanced_search_system/knowledge/standard_knowledge.py,sha256=-xUMYvl5lQPUshLggwxgP_ZnPyKp285MNS4XuFM1rts,4762
@@ -19,71 +20,111 @@ local_deep_research/advanced_search_system/questions/decomposition_question.py,s
19
20
  local_deep_research/advanced_search_system/questions/standard_question.py,sha256=SRT5f8pFlcI-AT88CgmQZEnU6-XKpN2cppvMxO6mWXc,4561
20
21
  local_deep_research/advanced_search_system/repositories/__init__.py,sha256=cCjAR9Z3BFZaN6_OYN9zJPvwcxCxgfp9oOeMqUmLX2c,145
21
22
  local_deep_research/advanced_search_system/strategies/__init__.py,sha256=upbslnB6Ns8RJ0-b1bH74-f5gZbo7evpx1dRrKEkzHA,35
22
- local_deep_research/advanced_search_system/strategies/base_strategy.py,sha256=NVowhf36DLeES302v0U6cWDCmQvNuV0cVj4glSculfQ,3975
23
- local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py,sha256=dKTgwXaXFxBqzUw_S434LdEvV4HL2CrR9K9KBaMYxOg,18473
24
- local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py,sha256=kbmzG3klXHgC9HfT6NTc9ipiHGzt1dnRPIfYqr23jLA,19150
25
- local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py,sha256=giuBMkkxUkdI4J9711bjM3ReMLTFfyt6irT4v-3ef_Q,10426
26
- local_deep_research/advanced_search_system/strategies/source_based_strategy.py,sha256=hMX91leNgCc2GPnLr9pQnXH8_6pfFv4BYqhrPBh2FTQ,17049
27
- local_deep_research/advanced_search_system/strategies/standard_strategy.py,sha256=Yqe5N3bUCDXjeSlP8__AORPYyHVY5sEb82zvpTU34r8,12774
23
+ local_deep_research/advanced_search_system/strategies/base_strategy.py,sha256=AwpLbhipSbdn8w272Mqe6tfYuGTUIxMNtuNxUdRIxaM,3949
24
+ local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py,sha256=jpJBgtSp1WT5y8cAxxenMoAe8IyXVHa-2EddaEKqmj0,18279
25
+ local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py,sha256=12uKT4KkMYRKbxutaNhiQTD6zILyDMGCB-XV24Cdc1I,19043
26
+ local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py,sha256=DUlh-wNg_VH-Ncjjt4zEVteZKqVl_tqxLwC7mb-eDJc,10412
27
+ local_deep_research/advanced_search_system/strategies/source_based_strategy.py,sha256=JZb5m07F2SxC40NvVAH794pdgRkw0XvIXxe3vLMNkyQ,17055
28
+ local_deep_research/advanced_search_system/strategies/standard_strategy.py,sha256=FlIRBtpLomgXqJc2tfZe7ItdOf3bkCMzf4C3zFobsa8,12927
28
29
  local_deep_research/advanced_search_system/tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
29
30
  local_deep_research/advanced_search_system/tools/base_tool.py,sha256=jEs4eroCvo0dHP_uF-5kLiQP7OfkD1YzNAD650a8Ktk,2865
30
31
  local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
31
32
  local_deep_research/advanced_search_system/tools/question_tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
32
33
  local_deep_research/advanced_search_system/tools/search_tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
33
34
  local_deep_research/api/__init__.py,sha256=KS5QcF5MzbUDPnXEzOAztcUw-HUQs4EVCH4k0YDMgCM,307
34
- local_deep_research/api/research_functions.py,sha256=SItLEuib94AXrhMsgmYDtykGrVmBPDKYHzzeDPhH688,9563
35
+ local_deep_research/api/benchmark_functions.py,sha256=Fnv5-qVK0mpNJN6TEbltj6jxfohXLvtlTmcSzQ08NHw,8953
36
+ local_deep_research/api/research_functions.py,sha256=jfpr6FdmtpLP_F63WvJPDptE6xqjzGpXyk0apkwe2Ns,9746
35
37
  local_deep_research/app.py,sha256=U_92UX0dpVAQoaXciVNy_By_AyDEWGlXSeTwFpohALQ,155
38
+ local_deep_research/benchmarks/README.md,sha256=H1o_Ig-pjTAK_dDki3MyoUTS1A_zClTLhuiieTe_UKk,4346
39
+ local_deep_research/benchmarks/__init__.py,sha256=O5uQKqUWoxiAvGEzbtCvcAhVuhKgyUksUjjE0fHv1DA,1287
40
+ local_deep_research/benchmarks/benchmark_functions.py,sha256=XAOnw1sTXP2EcZY2zB0722BqeDEVIOpwZq9CC-1IoF4,11949
41
+ local_deep_research/benchmarks/cli.py,sha256=H_BwN0L5E8gV3c4-VgflLXgWDr96gCCJsI6VFSu5uGA,11912
42
+ local_deep_research/benchmarks/cli/__init__.py,sha256=JhOZAHwwNR7dhdkrBYeHUM2zMIXkTJ9dbnD1toAXZjE,334
43
+ local_deep_research/benchmarks/cli/benchmark_commands.py,sha256=4jkJZQyket5l-0FbQkNYeZXN74SkIYDeVL_mM6fiFNY,11056
44
+ local_deep_research/benchmarks/comparison/__init__.py,sha256=rAlxI1L4o6LwYayGgEo4b1FXk9sVmb0RKU1OCFDvrCI,337
45
+ local_deep_research/benchmarks/comparison/evaluator.py,sha256=xKDbbRp9PrfBh-q1Fyq73s3p1K04lHaVeMriqbIiXQA,27892
46
+ local_deep_research/benchmarks/datasets.py,sha256=72ex3R8Vyu-9nMgsQhuDo0pQCEqrdxmOv9WzQp1jc34,1116
47
+ local_deep_research/benchmarks/datasets/__init__.py,sha256=FqZSUJHknRlyUBKoFNNMFhVPAsVPqThqOAaZnoKHCKk,1525
48
+ local_deep_research/benchmarks/datasets/base.py,sha256=lZKV5f3VExPYYMTdHkPnknbs2yoEhO4FdeGgjqxjzZg,9719
49
+ local_deep_research/benchmarks/datasets/browsecomp.py,sha256=WwQoKMd_8lwXf-sXITtKHpO1sMIIZIC9u-wG27-4KwA,4857
50
+ local_deep_research/benchmarks/datasets/custom_dataset_template.py,sha256=R4cjWluqhTKb2NkKiu_Db7bdDrq7__gIExbL6d09EIM,3391
51
+ local_deep_research/benchmarks/datasets/simpleqa.py,sha256=8v9SFzCl3qmXrmS3FLWX23J9cz_IjSupm83DRujww0M,2419
52
+ local_deep_research/benchmarks/datasets/utils.py,sha256=6Xl_kTEYNJIcqe-CBWHdSP3F6IMPNclgW8cpizvZGAU,4487
53
+ local_deep_research/benchmarks/efficiency/__init__.py,sha256=c7gQFL_9a-vzHNfS1XOSUjpWRN9Nv13CEuNvxvqrtyU,433
54
+ local_deep_research/benchmarks/efficiency/resource_monitor.py,sha256=vUM7BZZ_K94ZRutSfX7zmRWsK0KteoIuvhjGIuZJSoc,14026
55
+ local_deep_research/benchmarks/efficiency/speed_profiler.py,sha256=9ZWqG-R0esHZXTbVwfvyK2iUxojva5INuW0QcXiR5BQ,6849
56
+ local_deep_research/benchmarks/evaluators/__init__.py,sha256=2g1TYxeOuc0Z1obmBjsRl5lsPYmoOWXSTrPPZTyqbuQ,478
57
+ local_deep_research/benchmarks/evaluators/base.py,sha256=ZSnS6GhrfADPq0FWWBfvu72ZCREbXc6y01rWLuE1dM4,1972
58
+ local_deep_research/benchmarks/evaluators/browsecomp.py,sha256=3KLv_vRXKfqg-AmG8rwUNj93hzv1FwSYGjonWZ4chyc,2583
59
+ local_deep_research/benchmarks/evaluators/composite.py,sha256=MEO8D1oPHKyDeq455gMejLIqI_e6-WAss9mgvhxs7L4,4284
60
+ local_deep_research/benchmarks/evaluators/simpleqa.py,sha256=rBW5ttJn17CPthVQMldyZ84Jtj9nP7AKRdfVYaQZ4HE,10382
61
+ local_deep_research/benchmarks/graders.py,sha256=u1ZUIlAhII7TzxZJOvF-Ow1r1Axn5n2jMw5pFXU36b4,14087
62
+ local_deep_research/benchmarks/metrics.py,sha256=w-uaZy6jYm1MTrTwo0_6-Zxo8xf7BTC3tKPgeWqlEZQ,306
63
+ local_deep_research/benchmarks/metrics/README.md,sha256=d4bcXm7yTfkUNCRwLde-DjO36nJAQAIN0YPkjq1lCPw,2137
64
+ local_deep_research/benchmarks/metrics/__init__.py,sha256=1Cnvm3rOZRkQdQlr9fIgT-WN-CzeMoCIKLLZiLoLN1M,624
65
+ local_deep_research/benchmarks/metrics/calculation.py,sha256=o2qrRl2MrkIommn5N_PpQwo4b2GLwnM_B7hdkTnl2Tc,12209
66
+ local_deep_research/benchmarks/metrics/reporting.py,sha256=S-iQIrHV2-dNZqR29afZ9QnShPiCbRP9xgz0KMMSuys,5002
67
+ local_deep_research/benchmarks/metrics/visualization.py,sha256=f7CZzjAXJpqvHS-S-3hG7F2cX-jJiycV6nJZfdLJiQw,6512
68
+ local_deep_research/benchmarks/optimization/__init__.py,sha256=8RglpDuIMgXNKvgi1aBzVZRrJUZz5x5NgH7ziJtJQmw,946
69
+ local_deep_research/benchmarks/optimization/api.py,sha256=B-cYo6G_JVtpUnsITzdTCE1PYt1aiolhNP3TW6abgcg,9174
70
+ local_deep_research/benchmarks/optimization/metrics.py,sha256=7vl9NY4rp2FoGxSziIkMopC5tHMCHypIG1P5n7KKlh8,451
71
+ local_deep_research/benchmarks/optimization/optuna_optimizer.py,sha256=7fCg5wu2rITFITCtj6H-zqieq5vnDxKGncYSTer_T2A,42398
72
+ local_deep_research/benchmarks/runners.py,sha256=ktdEYgoVoQtToCJSKPMB7rF2fOzimFR4LvKjdpyncyE,15693
73
+ local_deep_research/benchmarks/templates.py,sha256=ooRYTbFmSQCKxHVuXAYofTDTXAQ9yDaAUtKGqRaHy2E,2276
36
74
  local_deep_research/citation_handler.py,sha256=MZVd6xl7g3xrWauFBPuVIC36z8onc-zQb8xI4dQXxsU,4307
37
75
  local_deep_research/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- local_deep_research/config/llm_config.py,sha256=swUQF_YgZnXZv0TcA0SVnrbwqKWxyvMmpXSLEVf4dTA,15894
39
- local_deep_research/config/search_config.py,sha256=JpG2kMj67IiowComaJE5b5hK-Ze-clvoequccUWuTUo,2174
76
+ local_deep_research/config/llm_config.py,sha256=Y-56Bc05Kglh1jxTwa1xVLso7YBUGJqQHq3y_R-un34,16022
77
+ local_deep_research/config/search_config.py,sha256=-m4BkHHMvzNkIuZmximmE3T5_H-JU4UZubEc_cDpWH0,2130
40
78
  local_deep_research/defaults/.env.template,sha256=_eVCy4d_XwpGXy8n50CG3wH9xx2oqJCFKS7IbqgInDk,491
41
79
  local_deep_research/defaults/__init__.py,sha256=C_0t0uZmtrVB4rM9NM9Wx8PJU5kFcT-qOHvws5W2iOg,1352
42
- local_deep_research/defaults/default_settings.json,sha256=kVcfmw4n9eQLVLqf1CSdSehacMaKpeEpFmQ7TgpKzzk,120847
80
+ local_deep_research/defaults/default_settings.json,sha256=k5H2pRXiOb0OeCfmgFKZqS9Rh3myjtHZDbnVNdDXxnQ,124257
43
81
  local_deep_research/migrate_db.py,sha256=S1h6Bv0OJdRW4BaH7MIMrUXBRV_yqgH2T6LVOZKTQjI,4634
44
82
  local_deep_research/report_generator.py,sha256=-G3KDEbsuU3PdxDfuo5v28DIX7RE1yJCCBU2KgRbNzI,9084
45
- local_deep_research/search_system.py,sha256=dq9US9zoB7TSiMorsrFFrSHlR6MSqE0IP3NBKB3fP8U,7830
83
+ local_deep_research/search_system.py,sha256=DCBSLSUyLqPuHrgOuTlDizT_cnWRBICYKH-haMWWoDo,8412
46
84
  local_deep_research/setup_data_dir.py,sha256=7MJa2MMdDUnktJVHwMpyNL2079-qylpIyyLpVbF5AUY,1134
47
85
  local_deep_research/test_migration.py,sha256=cXY9WbpxLslNEa1vFwLMvcvKBbUe7Wosm--AqmPIPYM,6459
48
86
  local_deep_research/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- local_deep_research/utilities/db_utils.py,sha256=eEfMI_9xtRfJ3o1EES6BOFoGa2uRLR_mmyV6Jkd8KIQ,1557
87
+ local_deep_research/utilities/db_utils.py,sha256=wP7a4_WobK85HfAozuvmbhe1dQ3v4S8_LPjQ-JbXDzk,1523
50
88
  local_deep_research/utilities/enums.py,sha256=yFwmodt93uETdQd7qyW4vOUhiAzZF-BHBbVYHKN7scU,223
89
+ local_deep_research/utilities/es_utils.py,sha256=z3stDRyL1myxwsUWiBuGaUcHLlzmPgkqGsLQAq9XiWA,15393
51
90
  local_deep_research/utilities/llm_utils.py,sha256=1O8faskPSnyave15cxOVXQcdcFrDybQA445m0OjnD9g,4877
52
- local_deep_research/utilities/search_utilities.py,sha256=k4Eag-XJOZl4cRd4GO1z2WpvVPLLhZ-HuBD7RswhaQM,9604
91
+ local_deep_research/utilities/log_utils.py,sha256=c33QRH0nPnCmL0_6fqCgUdYJ14i3erEkLXiEIVPQ3RM,1037
92
+ local_deep_research/utilities/search_utilities.py,sha256=eew5w70tYTnm9J9Ov0TGCmgj6K7sW0e1qIgh_P7_7hc,9525
53
93
  local_deep_research/utilities/setup_utils.py,sha256=0Us6doQ6xQtKzgtnN1C4L7sSgxzFKJ35FpmZdj1tCDM,213
54
94
  local_deep_research/utilities/url_utils.py,sha256=8tvLoar3Mq7xHFM_b5kp8Nf2Kdykz4C7wTejjUcg4vA,1714
55
95
  local_deep_research/web/__init__.py,sha256=CynnuRxCf9mB0AHeylhF5yVZwdj0H6bxVrZtniw3xmE,44
56
- local_deep_research/web/app.py,sha256=tl3PAf41NBYYGq0oeIKAZw_hVSB8JmjyF8jzvYPeAU0,3414
57
- local_deep_research/web/app_factory.py,sha256=rk5QCwpxrub6ptKsvjSDTNtq8d2RWbKo2LZLvL__fPo,8107
96
+ local_deep_research/web/app.py,sha256=88Nz686YhK6Q4eFI_YvThG-AqIzPTQahdbXqPxKNI5M,3333
97
+ local_deep_research/web/app_factory.py,sha256=mBv79XlEQ-H9-oSlBJZjv3hBVjBGZZ5piI4CZCh-jBU,8131
58
98
  local_deep_research/web/database/README.md,sha256=eEDLqLIfOBRvc0TFh3J1HrtFbZceYmVgpjS3-oyZ5nI,2861
59
99
  local_deep_research/web/database/migrate_to_ldr_db.py,sha256=-ltKuhgosPhybDsJ13BuvvHEDJTN4Jx6SiO6XvW0SKA,9823
60
- local_deep_research/web/database/migrations.py,sha256=2z8-5P8gJ8vIEzLTbswNx0Ui7ZNveSFoad6JesOKhJk,1695
61
- local_deep_research/web/database/models.py,sha256=MIxYWIQIovkrR65rFMxlDXn2iZXf5SIePIE_-vSmLXg,3489
62
- local_deep_research/web/database/schema_upgrade.py,sha256=u3tx_tlsuzJw-NhvhKvQG6dqzwUckQkic0D3taZAt-k,2924
63
- local_deep_research/web/models/database.py,sha256=NV4h0RU0ta408SkI_ZmquCplMTNH1Q4zxYJ4SHwmiGY,9489
100
+ local_deep_research/web/database/migrations.py,sha256=pCx0pFlVFtqVjyMDD4ckomETNw-15AtQPdm0rVfZNrw,1851
101
+ local_deep_research/web/database/models.py,sha256=mnSDANn27alB3EegWcKAflkXo4eh7kDETYKuV3ukO9g,4140
102
+ local_deep_research/web/database/schema_upgrade.py,sha256=C0ISwt7DcTT1aVAfqYA8RIUFFKSGxhVCKIB27MU3arY,2827
103
+ local_deep_research/web/models/database.py,sha256=I6FunWawSfZG5cWT2VI5euGsL5gtXEZbxBd2LsyL__c,9381
64
104
  local_deep_research/web/models/settings.py,sha256=rXBI9vY5k3ndR8dPd3fZJy-6HwYltQihhSBRq-sZutw,2314
65
105
  local_deep_research/web/routes/api_routes.py,sha256=7eWX5igAxtLJ2vcfcyRsJjApsdYX6zjpIp-ukthgf8M,19424
106
+ local_deep_research/web/routes/benchmark_routes.py,sha256=WqJcI394ec3pzigRGUa6GlyaaSoTZxyJuskueH7zCjM,15654
66
107
  local_deep_research/web/routes/history_routes.py,sha256=6a_8nX349viuvi1zP5S7BaPPpAh133eTi1NVWO545A8,12622
67
- local_deep_research/web/routes/research_routes.py,sha256=zSU21oAkZnADnuhJniShd8US8hpPDiYqQxUhalJwQeU,23685
68
- local_deep_research/web/routes/settings_routes.py,sha256=uvDEGQ4TtgGhoQBfz_Zbcd-tv2Rq_1hL3j0Jx_novJM,49635
69
- local_deep_research/web/services/research_service.py,sha256=gsveymwt4hKKwVGU2XqFYT27GeEsmSU7EOWrvDsUtnk,39656
108
+ local_deep_research/web/routes/research_routes.py,sha256=RkuT6VA5BlKzfeFzp3HvoEQajnUK34fFa8tto38NPps,23658
109
+ local_deep_research/web/routes/settings_routes.py,sha256=Yt4xVt6XcGPSEFuAkcQ4zlZ2r5dIbV3VNsWIXoGeflw,58606
110
+ local_deep_research/web/services/research_service.py,sha256=qHtPM5YOKQrtOSlKP3yhnZ0AjzTFQnH0aqUjsGBrVAs,38861
70
111
  local_deep_research/web/services/resource_service.py,sha256=yKgOC6GEOmHqRoGzwf52e19UaGCCS1DbDbOIXgWGvGc,4378
71
- local_deep_research/web/services/settings_manager.py,sha256=CHz_nd49BVRJiLALAjTHfmkKNy_Vr3ogCm5P-_633bk,17281
72
- local_deep_research/web/services/settings_service.py,sha256=SgmjhMvGZjJE63hKKaqY7kPGphnUyXcQG8NFN5rTizs,3550
112
+ local_deep_research/web/services/settings_manager.py,sha256=Emo_QRnjVwi8HHT8N79io3SOUxPf_VwwwOHTTvJ1C-c,17238
113
+ local_deep_research/web/services/settings_service.py,sha256=-ZG78JR14GuhsaXIF4OQOqfRfrw2QIqYEKwTOFhsuFo,3497
73
114
  local_deep_research/web/services/socket_service.py,sha256=jZGXk6kesBOf4bAdLiT3V4Ofod12pGKTsvxr3ml8ydY,7272
74
115
  local_deep_research/web/static/css/custom_dropdown.css,sha256=-pCx6oazWVgwqFAGq_eZ8OrTKMVQlgkKYCM6w-bACLs,7949
75
116
  local_deep_research/web/static/css/settings.css,sha256=QZbjLz8zNQZvM_ROzQOH67ZHZHEQ8WohkIPJlsekqfk,24719
76
- local_deep_research/web/static/css/styles.css,sha256=7CSiHzx9BNjGtE2Y9AVjn061y_x2qmpqN-6NoCLyLtY,34223
117
+ local_deep_research/web/static/css/styles.css,sha256=mTeGKLMMuqKSlZcBLIHtyNXFXH-3m1wC6NzmF77clWs,34634
77
118
  local_deep_research/web/static/js/components/custom_dropdown.js,sha256=Ot4Z0Du4an61-MSKwZmuq26qcmbjMUCTbzmUaoJKBdg,16835
78
119
  local_deep_research/web/static/js/components/detail.js,sha256=LtSqfFwSAHEG5z3UbUox8--rhiegZJZ4Vs5n9QvDoPA,11755
79
120
  local_deep_research/web/static/js/components/fallback/formatting.js,sha256=wvypkjJnvIqmotsbIAm6I_02kefro1cRkC9U0g8VvAM,3374
80
121
  local_deep_research/web/static/js/components/fallback/ui.js,sha256=b2mbTrUGMdH6p5M2RandhUmjlKewuov3F6sKlzL73Wk,7407
81
122
  local_deep_research/web/static/js/components/history.js,sha256=Tqn6tdFcj5QMZd_eW8YTIHPVQMEMFUQJlRaFv0waQFA,16100
82
- local_deep_research/web/static/js/components/logpanel.js,sha256=bRYkOf-BRTAHrHx9cnF8wYMWVoCbyA7XevcJzTujQjg,42115
123
+ local_deep_research/web/static/js/components/logpanel.js,sha256=HvBNnpk2alkEQ7_oZEmi7ctcHtH-rSNzzdLjJYy0O4I,40812
83
124
  local_deep_research/web/static/js/components/progress.js,sha256=aTvtyZDQMkjyhqy62icuZuJ7Khyujgust6fpQFcRABk,41570
84
- local_deep_research/web/static/js/components/research.js,sha256=LQmZNqRrxkqa61pGaXHLiHGh7SNiq5XNMqfGMKCRDzM,81074
125
+ local_deep_research/web/static/js/components/research.js,sha256=11hp74iqRpiOM3qHONF3xGsyNgqOdOBPsZyK0oDFgqY,82906
85
126
  local_deep_research/web/static/js/components/results.js,sha256=7fL18Yn0DwAjuelXvz-UlbDiLCFk-_UEEeqEjaDEVBA,32314
86
- local_deep_research/web/static/js/components/settings.js,sha256=XRjA62jfaTBAH4YwAMbVbtgJUm6KI87bxVP4E0fWu7E,168497
127
+ local_deep_research/web/static/js/components/settings.js,sha256=ebOY2cYAlTx2-k1sjWMvCxdibF2vsLBqIV6IHYXob9k,169629
87
128
  local_deep_research/web/static/js/components/settings_sync.js,sha256=LWDZ2EE8ChCxI5TPmPm9F4rOiYIEzEJxSCE1GLXk-2w,3925
88
129
  local_deep_research/web/static/js/main.js,sha256=NHOcEVytPCvF5tz3yPWg8Qu5ghVs5-GWKmpaKB87oi4,8440
89
130
  local_deep_research/web/static/js/research_form.js,sha256=qOZK0z_BE_xx2a1sx5vTjsCTW-ggHES_uj5eunO9Bo8,3632
@@ -91,7 +132,7 @@ local_deep_research/web/static/js/services/api.js,sha256=AP24hrw6VBrEjQxIMnxrZuG
91
132
  local_deep_research/web/static/js/services/audio.js,sha256=-Sdjuq8U-isBEK4aLc-QMDedfGtEvsQc7FBJTEoAueM,857
92
133
  local_deep_research/web/static/js/services/formatting.js,sha256=wBAVHls_TTzGLreqi7lHcm0dXPm7F0Itttpn8NEtzfg,3345
93
134
  local_deep_research/web/static/js/services/pdf.js,sha256=LaKiovUcf2AJiEPzTMcnjyH6Pi0r3anIEXF9XNZLmLw,27345
94
- local_deep_research/web/static/js/services/socket.js,sha256=tWvGR_6k1WvUwtVt2r-bfkbORPnl6mAmRH-ghUMfQUg,34555
135
+ local_deep_research/web/static/js/services/socket.js,sha256=9h6XOi29nFJ42xGuxT0ZLN-7U1-MMmo9-mGC8KgCjT8,36805
95
136
  local_deep_research/web/static/js/services/ui.js,sha256=XkJCUqhDjfeY58bExyurcFmWCYBbWRHSpsIABmWtU7s,16349
96
137
  local_deep_research/web/static/sounds/README.md,sha256=yNfVJIpKoSHSdAEj-lpxkjGy8F-OMStXCiIo1fY5I-0,1003
97
138
  local_deep_research/web/static/sounds/error.mp3,sha256=OM3K-pDxkPDCcptqb7c4bIwkHTQa7cLREs4xdYAODPs,3177
@@ -112,24 +153,26 @@ local_deep_research/web/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
112
153
  local_deep_research/web/utils/formatters.py,sha256=Gj_a0oFveNXHtvkiFe1rwlEtzYerMd0TtPO3Yh2e2bI,3155
113
154
  local_deep_research/web/utils/templates.py,sha256=scBPbjUJqaFltFX37ZLsdcgPycPY7kMSew5mZWCG1H0,535
114
155
  local_deep_research/web_search_engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
+ local_deep_research/web_search_engines/default_search_engines.py,sha256=dJr2YUcTANYfqXSd_X1eQrpUTyKG3kGb-WBw3imX2dU,1368
115
157
  local_deep_research/web_search_engines/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
158
  local_deep_research/web_search_engines/engines/full_search.py,sha256=GoBWvFh1eJS6esGNuFoMbq7GHaDMI_pqKX2RY136IXo,4709
117
- local_deep_research/web_search_engines/engines/meta_search_engine.py,sha256=qUFl8yw5l7sfH-BRpXXrNQ2KrQ9LsaslhG1glb2AOIM,14715
118
- local_deep_research/web_search_engines/engines/search_engine_arxiv.py,sha256=3k8R4pyqIZf0RDMqXDw08xIGsfkp4ZR9kePDbmeuaH0,16603
119
- local_deep_research/web_search_engines/engines/search_engine_brave.py,sha256=y1j4CSLM0Ujw1LSBiWg1ZBnc2BvrkhDCorrQLnUBVtM,9149
159
+ local_deep_research/web_search_engines/engines/meta_search_engine.py,sha256=xnxeJw4t7Qp9oYO4e3oQf3I_IvNADFUpEy_REyB4HOQ,18243
160
+ local_deep_research/web_search_engines/engines/search_engine_arxiv.py,sha256=X7-MhP-j44_Xeq7l15e7RBNHkRnWcgeo3vK0T7sey_4,17133
161
+ local_deep_research/web_search_engines/engines/search_engine_brave.py,sha256=3rK70EYOyNemgkREFXJRD71nWx7Y3ye96-f34g-jVA0,9362
120
162
  local_deep_research/web_search_engines/engines/search_engine_ddg.py,sha256=w9vRDpt_L0h5J-PWiNO_3J5uuRsfk5smlcIQjRofwB4,4649
163
+ local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py,sha256=bEHWgcXpplRnuMSIbHAcYvqki17HpWS0lWyUEPQM_7M,12680
121
164
  local_deep_research/web_search_engines/engines/search_engine_github.py,sha256=bojmx-R36eT_s20DGspAopkwqt6vKy4q_jH4foBt3Kk,31934
122
- local_deep_research/web_search_engines/engines/search_engine_google_pse.py,sha256=DuFtSUZgBR7nFBLZrbFMEuG-Rnv0cb-upHeGSDo7xRY,11177
165
+ local_deep_research/web_search_engines/engines/search_engine_google_pse.py,sha256=CXnVQ-o9hfZv3gQCNZdks9fRXRNzdP472i03xBkXgzg,11575
123
166
  local_deep_research/web_search_engines/engines/search_engine_guardian.py,sha256=bNCppKJNNvkmw-LR5vfpRABhdhsUwOJqpcRHVjcziNU,23390
124
- local_deep_research/web_search_engines/engines/search_engine_local.py,sha256=qTXfWqdqTq_MJXwVVuSM45sQoFcoXyrwEsJ97pbpVVY,41362
125
- local_deep_research/web_search_engines/engines/search_engine_local_all.py,sha256=vznpusmCBY9bLjD8EPrVhCb_8RZ8e9Wa8x386zv0pcM,5681
167
+ local_deep_research/web_search_engines/engines/search_engine_local.py,sha256=RJEXb6wTPgTfQoOyuLYLZwqx0JU7yukehHiu4C0Zel4,41221
168
+ local_deep_research/web_search_engines/engines/search_engine_local_all.py,sha256=8hAYhacU15Vi13pjo0LRVt2tI5SqcONDwYwvdtg1HyY,5620
126
169
  local_deep_research/web_search_engines/engines/search_engine_pubmed.py,sha256=O99qfbSz7RHqinAP_C0iod-ZaEGE5tyBbh1DJi2-VhQ,38495
127
- local_deep_research/web_search_engines/engines/search_engine_searxng.py,sha256=viCD1CVSym8als_o7LHbzwYlJ4jQIUPmmCxcXLjW4P4,18043
170
+ local_deep_research/web_search_engines/engines/search_engine_searxng.py,sha256=amEK2ljX-6QtJPBUB9fS0bE48Q8SmYInO2LaSq_x-Rw,17867
128
171
  local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py,sha256=jYs_TRM0izMfldsZ8NkCQsP-o6vCPXUjyxt0nIsxOVI,22799
129
- local_deep_research/web_search_engines/engines/search_engine_serpapi.py,sha256=OnoYL89WX1qWC6mOosSdgbJ-rXcIFmCVdrd6-qg7xes,8711
172
+ local_deep_research/web_search_engines/engines/search_engine_serpapi.py,sha256=_afKJVFV0xpdrO3vL71aORMIGmbe0y8o7Ly0_xXryDQ,8920
130
173
  local_deep_research/web_search_engines/engines/search_engine_wayback.py,sha256=rfRs7WJxa-H1DXSyduFHBMfpFwWEVRXLd8s_78iU8gU,17894
131
174
  local_deep_research/web_search_engines/engines/search_engine_wikipedia.py,sha256=UxYBSGD-XZGQantq_AdgtBA8FCKV0C6mEr6GS_vleQQ,10092
132
- local_deep_research/web_search_engines/search_engine_base.py,sha256=PLU_sAWhWKTOQWcv32GINuhLdIwB0sEQy-pp9oG9Ggo,9835
133
- local_deep_research/web_search_engines/search_engine_factory.py,sha256=DghAkQvLKRJYl5xb9AUjUv7ydAQ4rPi-TvzrmqdyGxE,10890
134
- local_deep_research/web_search_engines/search_engines_config.py,sha256=UAE6TfxFXrt-RvSfGQ_FRsOGGrsSs8VI3n1i-0Lfo2s,4929
135
- local_deep_research-0.3.12.dist-info/RECORD,,
175
+ local_deep_research/web_search_engines/search_engine_base.py,sha256=TFmkIGgzIkXFsk9jhGn2PYyxveOWzKQLrhpZy5qaggE,10803
176
+ local_deep_research/web_search_engines/search_engine_factory.py,sha256=QjnU6R3Q0irTXG7StoeOwhbhd5B4nRKO65hkuodpWWU,11926
177
+ local_deep_research/web_search_engines/search_engines_config.py,sha256=bRly8zsoXvlQIovbVChnkhj4AsGJMzFlEiArrmsblrE,5375
178
+ local_deep_research-0.4.0.dist-info/RECORD,,