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.
- local_deep_research/__version__.py +1 -1
- local_deep_research/advanced_search_system/filters/base_filter.py +2 -3
- local_deep_research/advanced_search_system/filters/cross_engine_filter.py +4 -5
- local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +298 -0
- local_deep_research/advanced_search_system/findings/repository.py +0 -3
- local_deep_research/advanced_search_system/strategies/base_strategy.py +1 -2
- local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +14 -18
- local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +4 -8
- local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +5 -6
- local_deep_research/advanced_search_system/strategies/source_based_strategy.py +2 -2
- local_deep_research/advanced_search_system/strategies/standard_strategy.py +9 -7
- local_deep_research/api/benchmark_functions.py +288 -0
- local_deep_research/api/research_functions.py +8 -4
- local_deep_research/benchmarks/README.md +162 -0
- local_deep_research/benchmarks/__init__.py +51 -0
- local_deep_research/benchmarks/benchmark_functions.py +353 -0
- local_deep_research/benchmarks/cli/__init__.py +16 -0
- local_deep_research/benchmarks/cli/benchmark_commands.py +338 -0
- local_deep_research/benchmarks/cli.py +347 -0
- local_deep_research/benchmarks/comparison/__init__.py +12 -0
- local_deep_research/benchmarks/comparison/evaluator.py +768 -0
- local_deep_research/benchmarks/datasets/__init__.py +53 -0
- local_deep_research/benchmarks/datasets/base.py +295 -0
- local_deep_research/benchmarks/datasets/browsecomp.py +116 -0
- local_deep_research/benchmarks/datasets/custom_dataset_template.py +98 -0
- local_deep_research/benchmarks/datasets/simpleqa.py +74 -0
- local_deep_research/benchmarks/datasets/utils.py +116 -0
- local_deep_research/benchmarks/datasets.py +31 -0
- local_deep_research/benchmarks/efficiency/__init__.py +14 -0
- local_deep_research/benchmarks/efficiency/resource_monitor.py +367 -0
- local_deep_research/benchmarks/efficiency/speed_profiler.py +214 -0
- local_deep_research/benchmarks/evaluators/__init__.py +18 -0
- local_deep_research/benchmarks/evaluators/base.py +74 -0
- local_deep_research/benchmarks/evaluators/browsecomp.py +83 -0
- local_deep_research/benchmarks/evaluators/composite.py +121 -0
- local_deep_research/benchmarks/evaluators/simpleqa.py +271 -0
- local_deep_research/benchmarks/graders.py +410 -0
- local_deep_research/benchmarks/metrics/README.md +80 -0
- local_deep_research/benchmarks/metrics/__init__.py +24 -0
- local_deep_research/benchmarks/metrics/calculation.py +385 -0
- local_deep_research/benchmarks/metrics/reporting.py +155 -0
- local_deep_research/benchmarks/metrics/visualization.py +205 -0
- local_deep_research/benchmarks/metrics.py +11 -0
- local_deep_research/benchmarks/optimization/__init__.py +32 -0
- local_deep_research/benchmarks/optimization/api.py +274 -0
- local_deep_research/benchmarks/optimization/metrics.py +20 -0
- local_deep_research/benchmarks/optimization/optuna_optimizer.py +1163 -0
- local_deep_research/benchmarks/runners.py +434 -0
- local_deep_research/benchmarks/templates.py +65 -0
- local_deep_research/config/llm_config.py +26 -23
- local_deep_research/config/search_config.py +1 -5
- local_deep_research/defaults/default_settings.json +108 -7
- local_deep_research/search_system.py +16 -8
- local_deep_research/utilities/db_utils.py +3 -6
- local_deep_research/utilities/es_utils.py +441 -0
- local_deep_research/utilities/log_utils.py +36 -0
- local_deep_research/utilities/search_utilities.py +8 -9
- local_deep_research/web/app.py +7 -9
- local_deep_research/web/app_factory.py +9 -12
- local_deep_research/web/database/migrations.py +8 -5
- local_deep_research/web/database/models.py +20 -0
- local_deep_research/web/database/schema_upgrade.py +5 -8
- local_deep_research/web/models/database.py +15 -18
- local_deep_research/web/routes/benchmark_routes.py +427 -0
- local_deep_research/web/routes/research_routes.py +13 -17
- local_deep_research/web/routes/settings_routes.py +264 -67
- local_deep_research/web/services/research_service.py +47 -57
- local_deep_research/web/services/settings_manager.py +1 -4
- local_deep_research/web/services/settings_service.py +4 -6
- local_deep_research/web/static/css/styles.css +12 -0
- local_deep_research/web/static/js/components/logpanel.js +164 -155
- local_deep_research/web/static/js/components/research.js +44 -3
- local_deep_research/web/static/js/components/settings.js +27 -0
- local_deep_research/web/static/js/services/socket.js +47 -0
- local_deep_research/web_search_engines/default_search_engines.py +38 -0
- local_deep_research/web_search_engines/engines/meta_search_engine.py +100 -33
- local_deep_research/web_search_engines/engines/search_engine_arxiv.py +31 -17
- local_deep_research/web_search_engines/engines/search_engine_brave.py +8 -3
- local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +343 -0
- local_deep_research/web_search_engines/engines/search_engine_google_pse.py +14 -6
- local_deep_research/web_search_engines/engines/search_engine_local.py +19 -23
- local_deep_research/web_search_engines/engines/search_engine_local_all.py +9 -12
- local_deep_research/web_search_engines/engines/search_engine_searxng.py +12 -17
- local_deep_research/web_search_engines/engines/search_engine_serpapi.py +8 -4
- local_deep_research/web_search_engines/search_engine_base.py +22 -5
- local_deep_research/web_search_engines/search_engine_factory.py +32 -11
- local_deep_research/web_search_engines/search_engines_config.py +14 -1
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/METADATA +10 -2
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/RECORD +92 -49
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/WHEEL +0 -0
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/entry_points.txt +0 -0
- {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
|
241
|
-
logger.
|
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
|
122
|
-
logger.
|
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
|
218
|
-
logger.
|
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
|
-
|
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
|
+
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:
|
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.
|
2
|
-
local_deep_research-0.
|
3
|
-
local_deep_research-0.
|
4
|
-
local_deep_research-0.
|
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=
|
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=
|
10
|
-
local_deep_research/advanced_search_system/filters/cross_engine_filter.py,sha256=
|
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=
|
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=
|
23
|
-
local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py,sha256=
|
24
|
-
local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py,sha256=
|
25
|
-
local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py,sha256=
|
26
|
-
local_deep_research/advanced_search_system/strategies/source_based_strategy.py,sha256=
|
27
|
-
local_deep_research/advanced_search_system/strategies/standard_strategy.py,sha256=
|
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/
|
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=
|
39
|
-
local_deep_research/config/search_config.py,sha256
|
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=
|
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=
|
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=
|
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/
|
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=
|
57
|
-
local_deep_research/web/app_factory.py,sha256=
|
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=
|
61
|
-
local_deep_research/web/database/models.py,sha256=
|
62
|
-
local_deep_research/web/database/schema_upgrade.py,sha256=
|
63
|
-
local_deep_research/web/models/database.py,sha256=
|
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=
|
68
|
-
local_deep_research/web/routes/settings_routes.py,sha256=
|
69
|
-
local_deep_research/web/services/research_service.py,sha256=
|
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=
|
72
|
-
local_deep_research/web/services/settings_service.py,sha256
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
118
|
-
local_deep_research/web_search_engines/engines/search_engine_arxiv.py,sha256=
|
119
|
-
local_deep_research/web_search_engines/engines/search_engine_brave.py,sha256=
|
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=
|
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=
|
125
|
-
local_deep_research/web_search_engines/engines/search_engine_local_all.py,sha256=
|
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=
|
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=
|
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=
|
133
|
-
local_deep_research/web_search_engines/search_engine_factory.py,sha256=
|
134
|
-
local_deep_research/web_search_engines/search_engines_config.py,sha256=
|
135
|
-
local_deep_research-0.
|
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,,
|
File without changes
|
{local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
{local_deep_research-0.3.12.dist-info → local_deep_research-0.4.0.dist-info}/licenses/LICENSE
RENAMED
File without changes
|