local-deep-research 0.3.12__py3-none-any.whl → 0.4.1__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 (94) hide show
  1. local_deep_research/__init__.py +1 -0
  2. local_deep_research/__version__.py +1 -1
  3. local_deep_research/advanced_search_system/filters/base_filter.py +2 -3
  4. local_deep_research/advanced_search_system/filters/cross_engine_filter.py +4 -5
  5. local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +298 -0
  6. local_deep_research/advanced_search_system/findings/repository.py +0 -3
  7. local_deep_research/advanced_search_system/strategies/base_strategy.py +1 -2
  8. local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +14 -18
  9. local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +4 -8
  10. local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +5 -6
  11. local_deep_research/advanced_search_system/strategies/source_based_strategy.py +2 -2
  12. local_deep_research/advanced_search_system/strategies/standard_strategy.py +9 -7
  13. local_deep_research/api/benchmark_functions.py +288 -0
  14. local_deep_research/api/research_functions.py +8 -4
  15. local_deep_research/benchmarks/README.md +162 -0
  16. local_deep_research/benchmarks/__init__.py +51 -0
  17. local_deep_research/benchmarks/benchmark_functions.py +353 -0
  18. local_deep_research/benchmarks/cli/__init__.py +16 -0
  19. local_deep_research/benchmarks/cli/benchmark_commands.py +338 -0
  20. local_deep_research/benchmarks/cli.py +347 -0
  21. local_deep_research/benchmarks/comparison/__init__.py +12 -0
  22. local_deep_research/benchmarks/comparison/evaluator.py +768 -0
  23. local_deep_research/benchmarks/datasets/__init__.py +53 -0
  24. local_deep_research/benchmarks/datasets/base.py +295 -0
  25. local_deep_research/benchmarks/datasets/browsecomp.py +116 -0
  26. local_deep_research/benchmarks/datasets/custom_dataset_template.py +98 -0
  27. local_deep_research/benchmarks/datasets/simpleqa.py +74 -0
  28. local_deep_research/benchmarks/datasets/utils.py +116 -0
  29. local_deep_research/benchmarks/datasets.py +31 -0
  30. local_deep_research/benchmarks/efficiency/__init__.py +14 -0
  31. local_deep_research/benchmarks/efficiency/resource_monitor.py +367 -0
  32. local_deep_research/benchmarks/efficiency/speed_profiler.py +214 -0
  33. local_deep_research/benchmarks/evaluators/__init__.py +18 -0
  34. local_deep_research/benchmarks/evaluators/base.py +74 -0
  35. local_deep_research/benchmarks/evaluators/browsecomp.py +83 -0
  36. local_deep_research/benchmarks/evaluators/composite.py +121 -0
  37. local_deep_research/benchmarks/evaluators/simpleqa.py +271 -0
  38. local_deep_research/benchmarks/graders.py +410 -0
  39. local_deep_research/benchmarks/metrics/README.md +80 -0
  40. local_deep_research/benchmarks/metrics/__init__.py +24 -0
  41. local_deep_research/benchmarks/metrics/calculation.py +385 -0
  42. local_deep_research/benchmarks/metrics/reporting.py +155 -0
  43. local_deep_research/benchmarks/metrics/visualization.py +205 -0
  44. local_deep_research/benchmarks/metrics.py +11 -0
  45. local_deep_research/benchmarks/optimization/__init__.py +32 -0
  46. local_deep_research/benchmarks/optimization/api.py +274 -0
  47. local_deep_research/benchmarks/optimization/metrics.py +20 -0
  48. local_deep_research/benchmarks/optimization/optuna_optimizer.py +1163 -0
  49. local_deep_research/benchmarks/runners.py +434 -0
  50. local_deep_research/benchmarks/templates.py +65 -0
  51. local_deep_research/config/llm_config.py +26 -23
  52. local_deep_research/config/search_config.py +1 -5
  53. local_deep_research/defaults/default_settings.json +108 -7
  54. local_deep_research/search_system.py +16 -8
  55. local_deep_research/utilities/db_utils.py +3 -6
  56. local_deep_research/utilities/es_utils.py +441 -0
  57. local_deep_research/utilities/log_utils.py +36 -0
  58. local_deep_research/utilities/search_utilities.py +8 -9
  59. local_deep_research/web/app.py +15 -10
  60. local_deep_research/web/app_factory.py +9 -12
  61. local_deep_research/web/database/migrations.py +8 -5
  62. local_deep_research/web/database/models.py +20 -0
  63. local_deep_research/web/database/schema_upgrade.py +5 -8
  64. local_deep_research/web/models/database.py +15 -18
  65. local_deep_research/web/routes/benchmark_routes.py +427 -0
  66. local_deep_research/web/routes/research_routes.py +13 -17
  67. local_deep_research/web/routes/settings_routes.py +264 -67
  68. local_deep_research/web/services/research_service.py +58 -73
  69. local_deep_research/web/services/settings_manager.py +1 -4
  70. local_deep_research/web/services/settings_service.py +4 -6
  71. local_deep_research/web/static/css/styles.css +12 -0
  72. local_deep_research/web/static/js/components/logpanel.js +164 -155
  73. local_deep_research/web/static/js/components/research.js +44 -3
  74. local_deep_research/web/static/js/components/settings.js +27 -0
  75. local_deep_research/web/static/js/services/socket.js +47 -0
  76. local_deep_research/web_search_engines/default_search_engines.py +38 -0
  77. local_deep_research/web_search_engines/engines/meta_search_engine.py +100 -33
  78. local_deep_research/web_search_engines/engines/search_engine_arxiv.py +31 -17
  79. local_deep_research/web_search_engines/engines/search_engine_brave.py +8 -3
  80. local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +343 -0
  81. local_deep_research/web_search_engines/engines/search_engine_google_pse.py +14 -6
  82. local_deep_research/web_search_engines/engines/search_engine_local.py +19 -23
  83. local_deep_research/web_search_engines/engines/search_engine_local_all.py +9 -12
  84. local_deep_research/web_search_engines/engines/search_engine_searxng.py +12 -17
  85. local_deep_research/web_search_engines/engines/search_engine_serpapi.py +8 -4
  86. local_deep_research/web_search_engines/search_engine_base.py +22 -5
  87. local_deep_research/web_search_engines/search_engine_factory.py +30 -11
  88. local_deep_research/web_search_engines/search_engines_config.py +14 -1
  89. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/METADATA +10 -2
  90. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/RECORD +93 -51
  91. local_deep_research/app.py +0 -8
  92. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/WHEEL +0 -0
  93. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/entry_points.txt +0 -0
  94. {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.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,14 @@ 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
+ api_key = get_db_setting(f"search.engine.web.{engine_name}.api_key")
53
+
54
+ # Still try to get from engine config if not found
51
55
  if not api_key:
52
56
  api_key = engine_config.get("api_key")
53
57
 
@@ -55,6 +59,12 @@ def create_search_engine(
55
59
  logger.info(f"Required API key for {engine_name} not found in settings.")
56
60
  return None
57
61
 
62
+ # Set the engine-specific environment variable if needed
63
+ # This is to support engines that directly check environment variables
64
+ if engine_name == "brave" and not os.getenv("BRAVE_API_KEY"):
65
+ os.environ["BRAVE_API_KEY"] = api_key
66
+ logger.info("Set BRAVE_API_KEY environment variable from database setting")
67
+
58
68
  # Check for LLM requirements
59
69
  if engine_config.get("requires_llm", False) and not llm:
60
70
  logger.info(
@@ -97,11 +107,15 @@ def create_search_engine(
97
107
  engine_config.get("requires_api_key", False)
98
108
  and "api_key" not in filtered_params
99
109
  ):
110
+ # First check for api_key_env in engine config
100
111
  api_key_env = engine_config.get("api_key_env")
101
112
  if api_key_env:
102
113
  api_key = os.getenv(api_key_env)
103
114
  if api_key:
104
115
  filtered_params["api_key"] = api_key
116
+ # If not found, use the api_key we got earlier
117
+ elif api_key:
118
+ filtered_params["api_key"] = api_key
105
119
 
106
120
  logger.info(
107
121
  f"Creating {engine_name} with filtered parameters: {filtered_params.keys()}"
@@ -118,8 +132,8 @@ def create_search_engine(
118
132
 
119
133
  return engine
120
134
 
121
- except Exception as e:
122
- logger.info(f"Failed to create search engine '{engine_name}': {str(e)}")
135
+ except Exception:
136
+ logger.exception(f"Failed to create search engine '{engine_name}'")
123
137
  return None
124
138
 
125
139
 
@@ -176,7 +190,14 @@ def _create_full_search_wrapper(
176
190
 
177
191
  # Special case for Brave which needs the API key directly
178
192
  if engine_name == "brave" and "api_key" in wrapper_init_params:
193
+ # First check environment variable
179
194
  brave_api_key = os.getenv("BRAVE_API_KEY")
195
+ # If not found, check database
196
+ if not brave_api_key:
197
+ from ..utilities.db_utils import get_db_setting
198
+
199
+ brave_api_key = get_db_setting("search.engine.web.brave.api_key")
200
+
180
201
  if brave_api_key:
181
202
  wrapper_params["api_key"] = brave_api_key
182
203
 
@@ -214,10 +235,8 @@ def _create_full_search_wrapper(
214
235
 
215
236
  return full_search
216
237
 
217
- except Exception as e:
218
- logger.error(
219
- f"Failed to create full search wrapper for {engine_name}: {str(e)}"
220
- )
238
+ except Exception:
239
+ logger.exception(f"Failed to create full search wrapper for {engine_name}")
221
240
  return base_engine
222
241
 
223
242
 
@@ -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.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
@@ -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
5
- local_deep_research/__init__.py,sha256=9wV3oonZMEHsE_JhyZU9P0hW2Uwv47zotGlbAB_gQiA,885
6
- local_deep_research/__version__.py,sha256=uzDtUmN3o6XGGV0Pkoi7vJCijlJJCOYCmLl8900CcXg,23
1
+ local_deep_research-0.4.1.dist-info/METADATA,sha256=qKbtKkvdX52q25NBq4-O4d7d74fjYmM5GyPxuB4TIRc,17352
2
+ local_deep_research-0.4.1.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ local_deep_research-0.4.1.dist-info/entry_points.txt,sha256=GcXS501Rjh-P80S8db7hnrQ23mS_Jg27PwpVQVO77as,113
4
+ local_deep_research-0.4.1.dist-info/licenses/LICENSE,sha256=Qg2CaTdu6SWnSqk1_JtgBPp_Da-LdqJDhT1Vt1MUc5s,1072
5
+ local_deep_research/__init__.py,sha256=BPWOE6L1vBgBshHlyzrrp0gYo6uR3ljiNBFDRK_3aIw,911
6
+ local_deep_research/__version__.py,sha256=pMtTmSUht-XtbR_7Doz6bsQqopJJd8rZ8I8zy2HwwoA,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,110 @@ 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/app.py,sha256=U_92UX0dpVAQoaXciVNy_By_AyDEWGlXSeTwFpohALQ,155
35
+ local_deep_research/api/benchmark_functions.py,sha256=Fnv5-qVK0mpNJN6TEbltj6jxfohXLvtlTmcSzQ08NHw,8953
36
+ local_deep_research/api/research_functions.py,sha256=jfpr6FdmtpLP_F63WvJPDptE6xqjzGpXyk0apkwe2Ns,9746
37
+ local_deep_research/benchmarks/README.md,sha256=H1o_Ig-pjTAK_dDki3MyoUTS1A_zClTLhuiieTe_UKk,4346
38
+ local_deep_research/benchmarks/__init__.py,sha256=O5uQKqUWoxiAvGEzbtCvcAhVuhKgyUksUjjE0fHv1DA,1287
39
+ local_deep_research/benchmarks/benchmark_functions.py,sha256=XAOnw1sTXP2EcZY2zB0722BqeDEVIOpwZq9CC-1IoF4,11949
40
+ local_deep_research/benchmarks/cli.py,sha256=H_BwN0L5E8gV3c4-VgflLXgWDr96gCCJsI6VFSu5uGA,11912
41
+ local_deep_research/benchmarks/cli/__init__.py,sha256=JhOZAHwwNR7dhdkrBYeHUM2zMIXkTJ9dbnD1toAXZjE,334
42
+ local_deep_research/benchmarks/cli/benchmark_commands.py,sha256=4jkJZQyket5l-0FbQkNYeZXN74SkIYDeVL_mM6fiFNY,11056
43
+ local_deep_research/benchmarks/comparison/__init__.py,sha256=rAlxI1L4o6LwYayGgEo4b1FXk9sVmb0RKU1OCFDvrCI,337
44
+ local_deep_research/benchmarks/comparison/evaluator.py,sha256=xKDbbRp9PrfBh-q1Fyq73s3p1K04lHaVeMriqbIiXQA,27892
45
+ local_deep_research/benchmarks/datasets.py,sha256=72ex3R8Vyu-9nMgsQhuDo0pQCEqrdxmOv9WzQp1jc34,1116
46
+ local_deep_research/benchmarks/datasets/__init__.py,sha256=FqZSUJHknRlyUBKoFNNMFhVPAsVPqThqOAaZnoKHCKk,1525
47
+ local_deep_research/benchmarks/datasets/base.py,sha256=lZKV5f3VExPYYMTdHkPnknbs2yoEhO4FdeGgjqxjzZg,9719
48
+ local_deep_research/benchmarks/datasets/browsecomp.py,sha256=WwQoKMd_8lwXf-sXITtKHpO1sMIIZIC9u-wG27-4KwA,4857
49
+ local_deep_research/benchmarks/datasets/custom_dataset_template.py,sha256=R4cjWluqhTKb2NkKiu_Db7bdDrq7__gIExbL6d09EIM,3391
50
+ local_deep_research/benchmarks/datasets/simpleqa.py,sha256=8v9SFzCl3qmXrmS3FLWX23J9cz_IjSupm83DRujww0M,2419
51
+ local_deep_research/benchmarks/datasets/utils.py,sha256=6Xl_kTEYNJIcqe-CBWHdSP3F6IMPNclgW8cpizvZGAU,4487
52
+ local_deep_research/benchmarks/efficiency/__init__.py,sha256=c7gQFL_9a-vzHNfS1XOSUjpWRN9Nv13CEuNvxvqrtyU,433
53
+ local_deep_research/benchmarks/efficiency/resource_monitor.py,sha256=vUM7BZZ_K94ZRutSfX7zmRWsK0KteoIuvhjGIuZJSoc,14026
54
+ local_deep_research/benchmarks/efficiency/speed_profiler.py,sha256=9ZWqG-R0esHZXTbVwfvyK2iUxojva5INuW0QcXiR5BQ,6849
55
+ local_deep_research/benchmarks/evaluators/__init__.py,sha256=2g1TYxeOuc0Z1obmBjsRl5lsPYmoOWXSTrPPZTyqbuQ,478
56
+ local_deep_research/benchmarks/evaluators/base.py,sha256=ZSnS6GhrfADPq0FWWBfvu72ZCREbXc6y01rWLuE1dM4,1972
57
+ local_deep_research/benchmarks/evaluators/browsecomp.py,sha256=3KLv_vRXKfqg-AmG8rwUNj93hzv1FwSYGjonWZ4chyc,2583
58
+ local_deep_research/benchmarks/evaluators/composite.py,sha256=MEO8D1oPHKyDeq455gMejLIqI_e6-WAss9mgvhxs7L4,4284
59
+ local_deep_research/benchmarks/evaluators/simpleqa.py,sha256=rBW5ttJn17CPthVQMldyZ84Jtj9nP7AKRdfVYaQZ4HE,10382
60
+ local_deep_research/benchmarks/graders.py,sha256=u1ZUIlAhII7TzxZJOvF-Ow1r1Axn5n2jMw5pFXU36b4,14087
61
+ local_deep_research/benchmarks/metrics.py,sha256=w-uaZy6jYm1MTrTwo0_6-Zxo8xf7BTC3tKPgeWqlEZQ,306
62
+ local_deep_research/benchmarks/metrics/README.md,sha256=d4bcXm7yTfkUNCRwLde-DjO36nJAQAIN0YPkjq1lCPw,2137
63
+ local_deep_research/benchmarks/metrics/__init__.py,sha256=1Cnvm3rOZRkQdQlr9fIgT-WN-CzeMoCIKLLZiLoLN1M,624
64
+ local_deep_research/benchmarks/metrics/calculation.py,sha256=o2qrRl2MrkIommn5N_PpQwo4b2GLwnM_B7hdkTnl2Tc,12209
65
+ local_deep_research/benchmarks/metrics/reporting.py,sha256=S-iQIrHV2-dNZqR29afZ9QnShPiCbRP9xgz0KMMSuys,5002
66
+ local_deep_research/benchmarks/metrics/visualization.py,sha256=f7CZzjAXJpqvHS-S-3hG7F2cX-jJiycV6nJZfdLJiQw,6512
67
+ local_deep_research/benchmarks/optimization/__init__.py,sha256=8RglpDuIMgXNKvgi1aBzVZRrJUZz5x5NgH7ziJtJQmw,946
68
+ local_deep_research/benchmarks/optimization/api.py,sha256=B-cYo6G_JVtpUnsITzdTCE1PYt1aiolhNP3TW6abgcg,9174
69
+ local_deep_research/benchmarks/optimization/metrics.py,sha256=7vl9NY4rp2FoGxSziIkMopC5tHMCHypIG1P5n7KKlh8,451
70
+ local_deep_research/benchmarks/optimization/optuna_optimizer.py,sha256=7fCg5wu2rITFITCtj6H-zqieq5vnDxKGncYSTer_T2A,42398
71
+ local_deep_research/benchmarks/runners.py,sha256=ktdEYgoVoQtToCJSKPMB7rF2fOzimFR4LvKjdpyncyE,15693
72
+ local_deep_research/benchmarks/templates.py,sha256=ooRYTbFmSQCKxHVuXAYofTDTXAQ9yDaAUtKGqRaHy2E,2276
36
73
  local_deep_research/citation_handler.py,sha256=MZVd6xl7g3xrWauFBPuVIC36z8onc-zQb8xI4dQXxsU,4307
37
74
  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
75
+ local_deep_research/config/llm_config.py,sha256=Y-56Bc05Kglh1jxTwa1xVLso7YBUGJqQHq3y_R-un34,16022
76
+ local_deep_research/config/search_config.py,sha256=-m4BkHHMvzNkIuZmximmE3T5_H-JU4UZubEc_cDpWH0,2130
40
77
  local_deep_research/defaults/.env.template,sha256=_eVCy4d_XwpGXy8n50CG3wH9xx2oqJCFKS7IbqgInDk,491
41
78
  local_deep_research/defaults/__init__.py,sha256=C_0t0uZmtrVB4rM9NM9Wx8PJU5kFcT-qOHvws5W2iOg,1352
42
- local_deep_research/defaults/default_settings.json,sha256=kVcfmw4n9eQLVLqf1CSdSehacMaKpeEpFmQ7TgpKzzk,120847
79
+ local_deep_research/defaults/default_settings.json,sha256=k5H2pRXiOb0OeCfmgFKZqS9Rh3myjtHZDbnVNdDXxnQ,124257
43
80
  local_deep_research/migrate_db.py,sha256=S1h6Bv0OJdRW4BaH7MIMrUXBRV_yqgH2T6LVOZKTQjI,4634
44
81
  local_deep_research/report_generator.py,sha256=-G3KDEbsuU3PdxDfuo5v28DIX7RE1yJCCBU2KgRbNzI,9084
45
- local_deep_research/search_system.py,sha256=dq9US9zoB7TSiMorsrFFrSHlR6MSqE0IP3NBKB3fP8U,7830
82
+ local_deep_research/search_system.py,sha256=DCBSLSUyLqPuHrgOuTlDizT_cnWRBICYKH-haMWWoDo,8412
46
83
  local_deep_research/setup_data_dir.py,sha256=7MJa2MMdDUnktJVHwMpyNL2079-qylpIyyLpVbF5AUY,1134
47
84
  local_deep_research/test_migration.py,sha256=cXY9WbpxLslNEa1vFwLMvcvKBbUe7Wosm--AqmPIPYM,6459
48
85
  local_deep_research/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- local_deep_research/utilities/db_utils.py,sha256=eEfMI_9xtRfJ3o1EES6BOFoGa2uRLR_mmyV6Jkd8KIQ,1557
86
+ local_deep_research/utilities/db_utils.py,sha256=wP7a4_WobK85HfAozuvmbhe1dQ3v4S8_LPjQ-JbXDzk,1523
50
87
  local_deep_research/utilities/enums.py,sha256=yFwmodt93uETdQd7qyW4vOUhiAzZF-BHBbVYHKN7scU,223
88
+ local_deep_research/utilities/es_utils.py,sha256=z3stDRyL1myxwsUWiBuGaUcHLlzmPgkqGsLQAq9XiWA,15393
51
89
  local_deep_research/utilities/llm_utils.py,sha256=1O8faskPSnyave15cxOVXQcdcFrDybQA445m0OjnD9g,4877
52
- local_deep_research/utilities/search_utilities.py,sha256=k4Eag-XJOZl4cRd4GO1z2WpvVPLLhZ-HuBD7RswhaQM,9604
90
+ local_deep_research/utilities/log_utils.py,sha256=c33QRH0nPnCmL0_6fqCgUdYJ14i3erEkLXiEIVPQ3RM,1037
91
+ local_deep_research/utilities/search_utilities.py,sha256=eew5w70tYTnm9J9Ov0TGCmgj6K7sW0e1qIgh_P7_7hc,9525
53
92
  local_deep_research/utilities/setup_utils.py,sha256=0Us6doQ6xQtKzgtnN1C4L7sSgxzFKJ35FpmZdj1tCDM,213
54
93
  local_deep_research/utilities/url_utils.py,sha256=8tvLoar3Mq7xHFM_b5kp8Nf2Kdykz4C7wTejjUcg4vA,1714
55
94
  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
95
+ local_deep_research/web/app.py,sha256=oDX022oim1tOawCdqN9uAtGeccvBGxIe7xtJenRLD3Y,3408
96
+ local_deep_research/web/app_factory.py,sha256=mBv79XlEQ-H9-oSlBJZjv3hBVjBGZZ5piI4CZCh-jBU,8131
58
97
  local_deep_research/web/database/README.md,sha256=eEDLqLIfOBRvc0TFh3J1HrtFbZceYmVgpjS3-oyZ5nI,2861
59
98
  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
99
+ local_deep_research/web/database/migrations.py,sha256=pCx0pFlVFtqVjyMDD4ckomETNw-15AtQPdm0rVfZNrw,1851
100
+ local_deep_research/web/database/models.py,sha256=mnSDANn27alB3EegWcKAflkXo4eh7kDETYKuV3ukO9g,4140
101
+ local_deep_research/web/database/schema_upgrade.py,sha256=C0ISwt7DcTT1aVAfqYA8RIUFFKSGxhVCKIB27MU3arY,2827
102
+ local_deep_research/web/models/database.py,sha256=I6FunWawSfZG5cWT2VI5euGsL5gtXEZbxBd2LsyL__c,9381
64
103
  local_deep_research/web/models/settings.py,sha256=rXBI9vY5k3ndR8dPd3fZJy-6HwYltQihhSBRq-sZutw,2314
65
104
  local_deep_research/web/routes/api_routes.py,sha256=7eWX5igAxtLJ2vcfcyRsJjApsdYX6zjpIp-ukthgf8M,19424
105
+ local_deep_research/web/routes/benchmark_routes.py,sha256=WqJcI394ec3pzigRGUa6GlyaaSoTZxyJuskueH7zCjM,15654
66
106
  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
107
+ local_deep_research/web/routes/research_routes.py,sha256=RkuT6VA5BlKzfeFzp3HvoEQajnUK34fFa8tto38NPps,23658
108
+ local_deep_research/web/routes/settings_routes.py,sha256=Yt4xVt6XcGPSEFuAkcQ4zlZ2r5dIbV3VNsWIXoGeflw,58606
109
+ local_deep_research/web/services/research_service.py,sha256=kHdonXtGDTSU2_jBlCP_deqMdydhxA_p7EabsR5kBkE,38812
70
110
  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
111
+ local_deep_research/web/services/settings_manager.py,sha256=Emo_QRnjVwi8HHT8N79io3SOUxPf_VwwwOHTTvJ1C-c,17238
112
+ local_deep_research/web/services/settings_service.py,sha256=-ZG78JR14GuhsaXIF4OQOqfRfrw2QIqYEKwTOFhsuFo,3497
73
113
  local_deep_research/web/services/socket_service.py,sha256=jZGXk6kesBOf4bAdLiT3V4Ofod12pGKTsvxr3ml8ydY,7272
74
114
  local_deep_research/web/static/css/custom_dropdown.css,sha256=-pCx6oazWVgwqFAGq_eZ8OrTKMVQlgkKYCM6w-bACLs,7949
75
115
  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
116
+ local_deep_research/web/static/css/styles.css,sha256=mTeGKLMMuqKSlZcBLIHtyNXFXH-3m1wC6NzmF77clWs,34634
77
117
  local_deep_research/web/static/js/components/custom_dropdown.js,sha256=Ot4Z0Du4an61-MSKwZmuq26qcmbjMUCTbzmUaoJKBdg,16835
78
118
  local_deep_research/web/static/js/components/detail.js,sha256=LtSqfFwSAHEG5z3UbUox8--rhiegZJZ4Vs5n9QvDoPA,11755
79
119
  local_deep_research/web/static/js/components/fallback/formatting.js,sha256=wvypkjJnvIqmotsbIAm6I_02kefro1cRkC9U0g8VvAM,3374
80
120
  local_deep_research/web/static/js/components/fallback/ui.js,sha256=b2mbTrUGMdH6p5M2RandhUmjlKewuov3F6sKlzL73Wk,7407
81
121
  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
122
+ local_deep_research/web/static/js/components/logpanel.js,sha256=HvBNnpk2alkEQ7_oZEmi7ctcHtH-rSNzzdLjJYy0O4I,40812
83
123
  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
124
+ local_deep_research/web/static/js/components/research.js,sha256=11hp74iqRpiOM3qHONF3xGsyNgqOdOBPsZyK0oDFgqY,82906
85
125
  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
126
+ local_deep_research/web/static/js/components/settings.js,sha256=ebOY2cYAlTx2-k1sjWMvCxdibF2vsLBqIV6IHYXob9k,169629
87
127
  local_deep_research/web/static/js/components/settings_sync.js,sha256=LWDZ2EE8ChCxI5TPmPm9F4rOiYIEzEJxSCE1GLXk-2w,3925
88
128
  local_deep_research/web/static/js/main.js,sha256=NHOcEVytPCvF5tz3yPWg8Qu5ghVs5-GWKmpaKB87oi4,8440
89
129
  local_deep_research/web/static/js/research_form.js,sha256=qOZK0z_BE_xx2a1sx5vTjsCTW-ggHES_uj5eunO9Bo8,3632
@@ -91,7 +131,7 @@ local_deep_research/web/static/js/services/api.js,sha256=AP24hrw6VBrEjQxIMnxrZuG
91
131
  local_deep_research/web/static/js/services/audio.js,sha256=-Sdjuq8U-isBEK4aLc-QMDedfGtEvsQc7FBJTEoAueM,857
92
132
  local_deep_research/web/static/js/services/formatting.js,sha256=wBAVHls_TTzGLreqi7lHcm0dXPm7F0Itttpn8NEtzfg,3345
93
133
  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
134
+ local_deep_research/web/static/js/services/socket.js,sha256=9h6XOi29nFJ42xGuxT0ZLN-7U1-MMmo9-mGC8KgCjT8,36805
95
135
  local_deep_research/web/static/js/services/ui.js,sha256=XkJCUqhDjfeY58bExyurcFmWCYBbWRHSpsIABmWtU7s,16349
96
136
  local_deep_research/web/static/sounds/README.md,sha256=yNfVJIpKoSHSdAEj-lpxkjGy8F-OMStXCiIo1fY5I-0,1003
97
137
  local_deep_research/web/static/sounds/error.mp3,sha256=OM3K-pDxkPDCcptqb7c4bIwkHTQa7cLREs4xdYAODPs,3177
@@ -112,24 +152,26 @@ local_deep_research/web/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
112
152
  local_deep_research/web/utils/formatters.py,sha256=Gj_a0oFveNXHtvkiFe1rwlEtzYerMd0TtPO3Yh2e2bI,3155
113
153
  local_deep_research/web/utils/templates.py,sha256=scBPbjUJqaFltFX37ZLsdcgPycPY7kMSew5mZWCG1H0,535
114
154
  local_deep_research/web_search_engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
+ local_deep_research/web_search_engines/default_search_engines.py,sha256=dJr2YUcTANYfqXSd_X1eQrpUTyKG3kGb-WBw3imX2dU,1368
115
156
  local_deep_research/web_search_engines/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
157
  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
158
+ local_deep_research/web_search_engines/engines/meta_search_engine.py,sha256=xnxeJw4t7Qp9oYO4e3oQf3I_IvNADFUpEy_REyB4HOQ,18243
159
+ local_deep_research/web_search_engines/engines/search_engine_arxiv.py,sha256=X7-MhP-j44_Xeq7l15e7RBNHkRnWcgeo3vK0T7sey_4,17133
160
+ local_deep_research/web_search_engines/engines/search_engine_brave.py,sha256=3rK70EYOyNemgkREFXJRD71nWx7Y3ye96-f34g-jVA0,9362
120
161
  local_deep_research/web_search_engines/engines/search_engine_ddg.py,sha256=w9vRDpt_L0h5J-PWiNO_3J5uuRsfk5smlcIQjRofwB4,4649
162
+ local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py,sha256=bEHWgcXpplRnuMSIbHAcYvqki17HpWS0lWyUEPQM_7M,12680
121
163
  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
164
+ local_deep_research/web_search_engines/engines/search_engine_google_pse.py,sha256=CXnVQ-o9hfZv3gQCNZdks9fRXRNzdP472i03xBkXgzg,11575
123
165
  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
166
+ local_deep_research/web_search_engines/engines/search_engine_local.py,sha256=RJEXb6wTPgTfQoOyuLYLZwqx0JU7yukehHiu4C0Zel4,41221
167
+ local_deep_research/web_search_engines/engines/search_engine_local_all.py,sha256=8hAYhacU15Vi13pjo0LRVt2tI5SqcONDwYwvdtg1HyY,5620
126
168
  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
169
+ local_deep_research/web_search_engines/engines/search_engine_searxng.py,sha256=amEK2ljX-6QtJPBUB9fS0bE48Q8SmYInO2LaSq_x-Rw,17867
128
170
  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
171
+ local_deep_research/web_search_engines/engines/search_engine_serpapi.py,sha256=_afKJVFV0xpdrO3vL71aORMIGmbe0y8o7Ly0_xXryDQ,8920
130
172
  local_deep_research/web_search_engines/engines/search_engine_wayback.py,sha256=rfRs7WJxa-H1DXSyduFHBMfpFwWEVRXLd8s_78iU8gU,17894
131
173
  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,,
174
+ local_deep_research/web_search_engines/search_engine_base.py,sha256=TFmkIGgzIkXFsk9jhGn2PYyxveOWzKQLrhpZy5qaggE,10803
175
+ local_deep_research/web_search_engines/search_engine_factory.py,sha256=73lwSenv7tK7eGIBOPh13hPdn0oZ9FC0EMjZx5YRPg4,11865
176
+ local_deep_research/web_search_engines/search_engines_config.py,sha256=bRly8zsoXvlQIovbVChnkhj4AsGJMzFlEiArrmsblrE,5375
177
+ local_deep_research-0.4.1.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- """
2
- Main entry point for the Local Deep Research application.
3
- """
4
-
5
- from src.local_deep_research.web.app import main
6
-
7
- if __name__ == "__main__":
8
- main()