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.
- local_deep_research/__init__.py +1 -0
- 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 +15 -10
- 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 +58 -73
- 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 +30 -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.1.dist-info}/METADATA +10 -2
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/RECORD +93 -51
- local_deep_research/app.py +0 -8
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/WHEEL +0 -0
- {local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/entry_points.txt +0 -0
- {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
|
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,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
|
122
|
-
logger.
|
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
|
218
|
-
logger.
|
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
|
-
|
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.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:
|
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.
|
5
|
-
local_deep_research/__init__.py,sha256=
|
6
|
-
local_deep_research/__version__.py,sha256=
|
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=
|
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,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=
|
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/
|
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=
|
39
|
-
local_deep_research/config/search_config.py,sha256
|
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=
|
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=
|
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=
|
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/
|
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=
|
57
|
-
local_deep_research/web/app_factory.py,sha256=
|
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=
|
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=
|
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=
|
68
|
-
local_deep_research/web/routes/settings_routes.py,sha256=
|
69
|
-
local_deep_research/web/services/research_service.py,sha256=
|
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=
|
72
|
-
local_deep_research/web/services/settings_service.py,sha256
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
125
|
-
local_deep_research/web_search_engines/engines/search_engine_local_all.py,sha256=
|
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=
|
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=
|
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=
|
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.
|
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,,
|
local_deep_research/app.py
DELETED
File without changes
|
{local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/entry_points.txt
RENAMED
File without changes
|
{local_deep_research-0.3.12.dist-info → local_deep_research-0.4.1.dist-info}/licenses/LICENSE
RENAMED
File without changes
|