local-deep-research 0.1.26__py3-none-any.whl → 0.2.2__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 (140) hide show
  1. local_deep_research/__init__.py +23 -22
  2. local_deep_research/__main__.py +16 -0
  3. local_deep_research/advanced_search_system/__init__.py +7 -0
  4. local_deep_research/advanced_search_system/filters/__init__.py +8 -0
  5. local_deep_research/advanced_search_system/filters/base_filter.py +38 -0
  6. local_deep_research/advanced_search_system/filters/cross_engine_filter.py +200 -0
  7. local_deep_research/advanced_search_system/findings/base_findings.py +81 -0
  8. local_deep_research/advanced_search_system/findings/repository.py +452 -0
  9. local_deep_research/advanced_search_system/knowledge/__init__.py +1 -0
  10. local_deep_research/advanced_search_system/knowledge/base_knowledge.py +151 -0
  11. local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +159 -0
  12. local_deep_research/advanced_search_system/questions/__init__.py +1 -0
  13. local_deep_research/advanced_search_system/questions/base_question.py +64 -0
  14. local_deep_research/advanced_search_system/questions/decomposition_question.py +445 -0
  15. local_deep_research/advanced_search_system/questions/standard_question.py +119 -0
  16. local_deep_research/advanced_search_system/repositories/__init__.py +7 -0
  17. local_deep_research/advanced_search_system/strategies/__init__.py +1 -0
  18. local_deep_research/advanced_search_system/strategies/base_strategy.py +118 -0
  19. local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +450 -0
  20. local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +312 -0
  21. local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +270 -0
  22. local_deep_research/advanced_search_system/strategies/standard_strategy.py +300 -0
  23. local_deep_research/advanced_search_system/tools/__init__.py +1 -0
  24. local_deep_research/advanced_search_system/tools/base_tool.py +100 -0
  25. local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +1 -0
  26. local_deep_research/advanced_search_system/tools/question_tools/__init__.py +1 -0
  27. local_deep_research/advanced_search_system/tools/search_tools/__init__.py +1 -0
  28. local_deep_research/api/__init__.py +5 -5
  29. local_deep_research/api/research_functions.py +154 -160
  30. local_deep_research/app.py +8 -0
  31. local_deep_research/citation_handler.py +25 -16
  32. local_deep_research/{config.py → config/config_files.py} +102 -110
  33. local_deep_research/config/llm_config.py +472 -0
  34. local_deep_research/config/search_config.py +77 -0
  35. local_deep_research/defaults/__init__.py +10 -5
  36. local_deep_research/defaults/main.toml +2 -2
  37. local_deep_research/defaults/search_engines.toml +60 -34
  38. local_deep_research/main.py +121 -19
  39. local_deep_research/migrate_db.py +147 -0
  40. local_deep_research/report_generator.py +87 -45
  41. local_deep_research/search_system.py +153 -283
  42. local_deep_research/setup_data_dir.py +35 -0
  43. local_deep_research/test_migration.py +178 -0
  44. local_deep_research/utilities/__init__.py +0 -0
  45. local_deep_research/utilities/db_utils.py +49 -0
  46. local_deep_research/{utilties → utilities}/enums.py +2 -2
  47. local_deep_research/{utilties → utilities}/llm_utils.py +63 -29
  48. local_deep_research/utilities/search_utilities.py +242 -0
  49. local_deep_research/{utilties → utilities}/setup_utils.py +4 -2
  50. local_deep_research/web/__init__.py +0 -1
  51. local_deep_research/web/app.py +86 -1709
  52. local_deep_research/web/app_factory.py +289 -0
  53. local_deep_research/web/database/README.md +70 -0
  54. local_deep_research/web/database/migrate_to_ldr_db.py +289 -0
  55. local_deep_research/web/database/migrations.py +447 -0
  56. local_deep_research/web/database/models.py +117 -0
  57. local_deep_research/web/database/schema_upgrade.py +107 -0
  58. local_deep_research/web/models/database.py +294 -0
  59. local_deep_research/web/models/settings.py +94 -0
  60. local_deep_research/web/routes/api_routes.py +559 -0
  61. local_deep_research/web/routes/history_routes.py +354 -0
  62. local_deep_research/web/routes/research_routes.py +715 -0
  63. local_deep_research/web/routes/settings_routes.py +1583 -0
  64. local_deep_research/web/services/research_service.py +947 -0
  65. local_deep_research/web/services/resource_service.py +149 -0
  66. local_deep_research/web/services/settings_manager.py +669 -0
  67. local_deep_research/web/services/settings_service.py +187 -0
  68. local_deep_research/web/services/socket_service.py +210 -0
  69. local_deep_research/web/static/css/custom_dropdown.css +277 -0
  70. local_deep_research/web/static/css/settings.css +1223 -0
  71. local_deep_research/web/static/css/styles.css +525 -48
  72. local_deep_research/web/static/js/components/custom_dropdown.js +428 -0
  73. local_deep_research/web/static/js/components/detail.js +348 -0
  74. local_deep_research/web/static/js/components/fallback/formatting.js +122 -0
  75. local_deep_research/web/static/js/components/fallback/ui.js +215 -0
  76. local_deep_research/web/static/js/components/history.js +487 -0
  77. local_deep_research/web/static/js/components/logpanel.js +949 -0
  78. local_deep_research/web/static/js/components/progress.js +1107 -0
  79. local_deep_research/web/static/js/components/research.js +1865 -0
  80. local_deep_research/web/static/js/components/results.js +766 -0
  81. local_deep_research/web/static/js/components/settings.js +3981 -0
  82. local_deep_research/web/static/js/components/settings_sync.js +106 -0
  83. local_deep_research/web/static/js/main.js +226 -0
  84. local_deep_research/web/static/js/services/api.js +253 -0
  85. local_deep_research/web/static/js/services/audio.js +31 -0
  86. local_deep_research/web/static/js/services/formatting.js +119 -0
  87. local_deep_research/web/static/js/services/pdf.js +622 -0
  88. local_deep_research/web/static/js/services/socket.js +882 -0
  89. local_deep_research/web/static/js/services/ui.js +546 -0
  90. local_deep_research/web/templates/base.html +72 -0
  91. local_deep_research/web/templates/components/custom_dropdown.html +47 -0
  92. local_deep_research/web/templates/components/log_panel.html +32 -0
  93. local_deep_research/web/templates/components/mobile_nav.html +22 -0
  94. local_deep_research/web/templates/components/settings_form.html +299 -0
  95. local_deep_research/web/templates/components/sidebar.html +21 -0
  96. local_deep_research/web/templates/pages/details.html +73 -0
  97. local_deep_research/web/templates/pages/history.html +51 -0
  98. local_deep_research/web/templates/pages/progress.html +57 -0
  99. local_deep_research/web/templates/pages/research.html +139 -0
  100. local_deep_research/web/templates/pages/results.html +59 -0
  101. local_deep_research/web/templates/settings_dashboard.html +78 -192
  102. local_deep_research/web/utils/__init__.py +0 -0
  103. local_deep_research/web/utils/formatters.py +76 -0
  104. local_deep_research/web_search_engines/engines/full_search.py +18 -16
  105. local_deep_research/web_search_engines/engines/meta_search_engine.py +182 -131
  106. local_deep_research/web_search_engines/engines/search_engine_arxiv.py +224 -139
  107. local_deep_research/web_search_engines/engines/search_engine_brave.py +88 -71
  108. local_deep_research/web_search_engines/engines/search_engine_ddg.py +48 -39
  109. local_deep_research/web_search_engines/engines/search_engine_github.py +415 -204
  110. local_deep_research/web_search_engines/engines/search_engine_google_pse.py +123 -90
  111. local_deep_research/web_search_engines/engines/search_engine_guardian.py +210 -157
  112. local_deep_research/web_search_engines/engines/search_engine_local.py +532 -369
  113. local_deep_research/web_search_engines/engines/search_engine_local_all.py +42 -36
  114. local_deep_research/web_search_engines/engines/search_engine_pubmed.py +358 -266
  115. local_deep_research/web_search_engines/engines/search_engine_searxng.py +212 -160
  116. local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +213 -170
  117. local_deep_research/web_search_engines/engines/search_engine_serpapi.py +84 -68
  118. local_deep_research/web_search_engines/engines/search_engine_wayback.py +186 -154
  119. local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +115 -77
  120. local_deep_research/web_search_engines/search_engine_base.py +174 -99
  121. local_deep_research/web_search_engines/search_engine_factory.py +192 -102
  122. local_deep_research/web_search_engines/search_engines_config.py +22 -15
  123. {local_deep_research-0.1.26.dist-info → local_deep_research-0.2.2.dist-info}/METADATA +177 -97
  124. local_deep_research-0.2.2.dist-info/RECORD +135 -0
  125. {local_deep_research-0.1.26.dist-info → local_deep_research-0.2.2.dist-info}/WHEEL +1 -2
  126. {local_deep_research-0.1.26.dist-info → local_deep_research-0.2.2.dist-info}/entry_points.txt +3 -0
  127. local_deep_research/defaults/llm_config.py +0 -338
  128. local_deep_research/utilties/search_utilities.py +0 -114
  129. local_deep_research/web/static/js/app.js +0 -3763
  130. local_deep_research/web/templates/api_keys_config.html +0 -82
  131. local_deep_research/web/templates/collections_config.html +0 -90
  132. local_deep_research/web/templates/index.html +0 -348
  133. local_deep_research/web/templates/llm_config.html +0 -120
  134. local_deep_research/web/templates/main_config.html +0 -89
  135. local_deep_research/web/templates/search_engines_config.html +0 -154
  136. local_deep_research/web/templates/settings.html +0 -519
  137. local_deep_research-0.1.26.dist-info/RECORD +0 -61
  138. local_deep_research-0.1.26.dist-info/top_level.txt +0 -1
  139. /local_deep_research/{utilties → config}/__init__.py +0 -0
  140. {local_deep_research-0.1.26.dist-info → local_deep_research-0.2.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,38 +1,36 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: local-deep-research
3
- Version: 0.1.26
3
+ Version: 0.2.2
4
4
  Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
5
- Author-email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
5
+ Author-Email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
6
6
  License: MIT License
7
-
8
- Copyright (c) 2025 LearningCircuit
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of this software and associated documentation files (the "Software"), to deal
12
- in the Software without restriction, including without limitation the rights
13
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
- copies of the Software, and to permit persons to whom the Software is
15
- furnished to do so, subject to the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be included in all
18
- copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
- SOFTWARE.
27
-
28
- Project-URL: Homepage, https://github.com/LearningCircuit/local-deep-research
29
- Project-URL: Bug Tracker, https://github.com/LearningCircuit/local-deep-research/issues
7
+
8
+ Copyright (c) 2025 LearningCircuit
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
30
28
  Classifier: Programming Language :: Python :: 3
31
29
  Classifier: License :: OSI Approved :: MIT License
32
30
  Classifier: Operating System :: OS Independent
33
- Requires-Python: >=3.8
34
- Description-Content-Type: text/markdown
35
- License-File: LICENSE
31
+ Project-URL: Homepage, https://github.com/LearningCircuit/local-deep-research
32
+ Project-URL: Bug Tracker, https://github.com/LearningCircuit/local-deep-research/issues
33
+ Requires-Python: >=3.10
36
34
  Requires-Dist: langchain>=0.3.18
37
35
  Requires-Dist: langchain-community>=0.3.17
38
36
  Requires-Dist: langchain-core>=0.3.34
@@ -45,7 +43,7 @@ Requires-Dist: typing_extensions>=4.12.2
45
43
  Requires-Dist: justext
46
44
  Requires-Dist: playwright
47
45
  Requires-Dist: beautifulsoup4
48
- Requires-Dist: flask>=2.0.1
46
+ Requires-Dist: flask>=3.1.0
49
47
  Requires-Dist: flask-cors>=3.0.10
50
48
  Requires-Dist: flask-socketio>=5.1.1
51
49
  Requires-Dist: sqlalchemy>=1.4.23
@@ -66,10 +64,52 @@ Requires-Dist: lxml>=4.9.2
66
64
  Requires-Dist: pdfplumber>=0.9.0
67
65
  Requires-Dist: unstructured>=0.10.0
68
66
  Requires-Dist: google-search-results
69
- Dynamic: license-file
67
+ Requires-Dist: importlib-resources>=6.5.2
68
+ Requires-Dist: setuptools>=78.1.0
69
+ Requires-Dist: flask-wtf>=1.2.2
70
+ Description-Content-Type: text/markdown
70
71
 
71
72
  # Local Deep Research
72
73
 
74
+ ## Features
75
+
76
+ - 🔍 **Advanced Research Capabilities**
77
+ - Automated deep research with intelligent follow-up questions
78
+ - Proper inline citation and source verification
79
+ - Multi-iteration analysis for comprehensive coverage
80
+ - Full webpage content analysis (not just snippets)
81
+
82
+ - 🤖 **Flexible LLM Support**
83
+ - Local AI processing with Ollama models
84
+ - Cloud LLM support (Claude, GPT)
85
+ - Supports all Langchain models
86
+ - Configurable model selection based on needs
87
+
88
+ - 📊 **Rich Output Options**
89
+ - Detailed research findings with proper citations
90
+ - Well-structured comprehensive research reports
91
+ - Quick summaries for rapid insights
92
+ - Source tracking and verification
93
+
94
+ - 🔒 **Privacy-Focused**
95
+ - Runs entirely on your machine when using local models
96
+ - Configurable search settings
97
+ - Transparent data handling
98
+
99
+ - 🌐 **Enhanced Search Integration**
100
+ - **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
101
+ - Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
102
+ - **Local RAG search for private documents** - search your own documents with vector embeddings
103
+ - Full webpage content retrieval and intelligent filtering
104
+
105
+ - 🎓 **Academic & Scientific Integration**
106
+ - Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
107
+ - Properly formatted citations from academic sources
108
+ - Report structure suitable for literature reviews
109
+ - Cross-disciplinary synthesis of information
110
+
111
+ | [Reddit](https://www.reddit.com/r/LocalDeepResearch/) | [Discord](https://discord.gg/ttcqQeFcJ3) |
112
+
73
113
  A powerful AI-powered research assistant that performs deep, iterative analysis using multiple LLMs and web searches. The system can be run locally for privacy or configured to use cloud-based LLMs for enhanced capabilities.
74
114
 
75
115
  <div align="center">
@@ -80,7 +120,15 @@ A powerful AI-powered research assistant that performs deep, iterative analysis
80
120
  </a>
81
121
  </div>
82
122
 
123
+ **Important for non-academic searches:** For normal web searches you will need SearXNG or an API key to a search provider like brave search or SerpAPI. The free searches are mostly academic search engines and will not help you for most normal searches.
124
+
125
+ ## Windows Installation
83
126
 
127
+ Download the [Windows Installer](https://github.com/LearningCircuit/local-deep-research/releases/download/v0.1.0/LocalDeepResearch_Setup.exe) for easy one-click installation.
128
+
129
+ **Requires Ollama (or other model provider configured in .env).**
130
+ Download from https://ollama.ai and then pull a model
131
+ ollama pull gemma3:12b
84
132
 
85
133
  ## Quick Start (not required if installed with windows installer)
86
134
 
@@ -129,6 +177,16 @@ For comprehensive Docker setup information, see:
129
177
  - [Docker Usage Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-usage-readme.md)
130
178
  - [Docker Compose Guide](https://github.com/LearningCircuit/local-deep-research/blob/main/docs/docker-compose-guide.md)
131
179
 
180
+ ## Migrating from Version 0.1.0
181
+
182
+ If you just upgraded from 0.1.0, and you want to preserve your configuration,
183
+ you will need to manually migrate from the old config files to the new settings
184
+ database:
185
+
186
+ ```bash
187
+ python -m local_deep_research.migrate_db
188
+ ```
189
+
132
190
  ## Programmatic Access
133
191
 
134
192
  Local Deep Research now provides a simple API for programmatic access to its research capabilities:
@@ -138,7 +196,7 @@ import os
138
196
  # Set environment variables to control the LLM
139
197
  os.environ["LDR_LLM__MODEL"] = "mistral" # Specify model name
140
198
 
141
- from local_deep_research import quick_summary, generate_report, analyze_documents
199
+ from local_deep_research import quick_summary, generate_report
142
200
 
143
201
  # Generate a quick research summary with custom parameters
144
202
  results = quick_summary(
@@ -154,44 +212,6 @@ print(results["summary"])
154
212
 
155
213
  These functions provide flexible options for customizing the search parameters, iterations, and output formats. For more examples, see the [programmatic access tutorial](https://github.com/LearningCircuit/local-deep-research/blob/main/examples/programmatic_access.ipynb).
156
214
 
157
-
158
- ## Features
159
-
160
- - 🔍 **Advanced Research Capabilities**
161
- - Automated deep research with intelligent follow-up questions
162
- - Proper inline citation and source verification
163
- - Multi-iteration analysis for comprehensive coverage
164
- - Full webpage content analysis (not just snippets)
165
-
166
- - 🤖 **Flexible LLM Support**
167
- - Local AI processing with Ollama models
168
- - Cloud LLM support (Claude, GPT)
169
- - Supports all Langchain models
170
- - Configurable model selection based on needs
171
-
172
- - 📊 **Rich Output Options**
173
- - Detailed research findings with proper citations
174
- - Well-structured comprehensive research reports
175
- - Quick summaries for rapid insights
176
- - Source tracking and verification
177
-
178
- - 🔒 **Privacy-Focused**
179
- - Runs entirely on your machine when using local models
180
- - Configurable search settings
181
- - Transparent data handling
182
-
183
- - 🌐 **Enhanced Search Integration**
184
- - **Auto-selection of search sources**: The "auto" search engine intelligently analyzes your query and selects the most appropriate search engine
185
- - Multiple search engines including Wikipedia, arXiv, PubMed, Semantic Scholar, and more
186
- - **Local RAG search for private documents** - search your own documents with vector embeddings
187
- - Full webpage content retrieval and intelligent filtering
188
-
189
- - 🎓 **Academic & Scientific Integration**
190
- - Direct integration with PubMed, arXiv, Wikipedia, Semantic Scholar
191
- - Properly formatted citations from academic sources
192
- - Report structure suitable for literature reviews
193
- - Cross-disciplinary synthesis of information
194
-
195
215
  ## Configuration System
196
216
 
197
217
  The package automatically creates and manages configuration files in your user directory:
@@ -206,7 +226,6 @@ When you first run the tool, it creates these configuration files:
206
226
  | File | Purpose |
207
227
  |------|---------|
208
228
  | `settings.toml` | General settings for research, web interface, and search |
209
- | `llm_config.py` | Advanced LLM configuration (rarely needs modification) |
210
229
  | `search_engines.toml` | Define and configure search engines |
211
230
  | `local_collections.toml` | Configure local document collections for RAG |
212
231
  | `.env` | Environment variables for configuration (recommended for API keys) |
@@ -219,7 +238,7 @@ The system supports multiple LLM providers:
219
238
 
220
239
  ### Local Models (via Ollama)
221
240
 
222
- 1. [Install Ollama](https://ollama.ai)
241
+ 1. [Install Ollama](https://ollama.ai)
223
242
  2. Pull a model: `ollama pull gemma3:12b` (recommended model)
224
243
  3. Ollama runs on port 11434 by default
225
244
 
@@ -233,13 +252,11 @@ ANTHROPIC_API_KEY=your-api-key-here # For Claude models
233
252
  OPENAI_API_KEY=your-openai-key-here # For GPT models
234
253
  OPENAI_ENDPOINT_API_KEY=your-key-here # For OpenRouter or similar services
235
254
 
236
- # Set your preferred LLM provider and model (no need to edit llm_config.py)
255
+ # Set your preferred LLM provider and model
237
256
  LDR_LLM__PROVIDER=ollama # Options: ollama, openai, anthropic, etc.
238
257
  LDR_LLM__MODEL=gemma3:12b # Model name to use
239
258
  ```
240
259
 
241
- > **Important:** In most cases, you don't need to modify the `llm_config.py` file. Simply set the `LDR_LLM__PROVIDER` and `LDR_LLM__MODEL` environment variables to use your preferred model.
242
-
243
260
  ### Supported LLM Providers
244
261
 
245
262
  The system supports multiple LLM providers:
@@ -373,10 +390,11 @@ LDR_SEARCH__QUESTIONS_PER_ITERATION=2
373
390
  The web interface offers several features:
374
391
 
375
392
  - **Dashboard**: Start and manage research queries
376
- - **Real-time Updates**: Track research progress
393
+ - **Real-time Updates**: Track research progress with improved logging
377
394
  - **Research History**: Access past queries
378
395
  - **PDF Export**: Download reports
379
396
  - **Research Management**: Terminate processes or delete records
397
+ - **Enhanced Settings Panel**: New unified settings UI with improved organization
380
398
 
381
399
  ## Command Line Interface
382
400
 
@@ -387,17 +405,19 @@ The CLI version allows you to:
387
405
  3. View results directly in the terminal
388
406
  4. Save reports automatically to the configured output directory
389
407
 
390
- ## Development Setup
408
+ ## Development Environment
391
409
 
392
- If you want to develop or modify the package, you can install it in development mode:
410
+ This project now uses PDM for dependency management. To set up a development environment:
393
411
 
394
412
  ```bash
395
- # Clone the repository
396
- git clone https://github.com/LearningCircuit/local-deep-research.git
397
- cd local-deep-research
413
+ # Install PDM if you don't have it
414
+ pip install pdm
415
+
416
+ # Install dependencies
417
+ pdm install --no-self
398
418
 
399
- # Install in development mode
400
- pip install -e .
419
+ # Activate the environment
420
+ pdm venv activate
401
421
  ```
402
422
 
403
423
  You can run the application directly using Python module syntax:
@@ -410,9 +430,82 @@ python -m local_deep_research.web.app
410
430
  python -m local_deep_research.main
411
431
  ```
412
432
 
433
+ For more information, see the [development documentation](docs/developing.md).
434
+
435
+ ## Unified Database
436
+
437
+ The application now uses a single unified database (`ldr.db`) for all settings and history, making configuration management simpler and more reliable.
438
+
439
+ ### Migration from v0.1.x
440
+
441
+ If you have existing data in legacy databases from v0.1.x, the application will automatically migrate your data when you first run v0.2.0.
442
+
443
+ ## Contributing
444
+
445
+ Contributions are welcome! Please feel free to submit a Pull Request.
446
+
447
+ ### Development Setup with PDM
448
+
449
+ This project uses PDM for dependency management. Here's how to set up your development environment:
450
+
451
+ ```bash
452
+ # Install PDM if you don't have it
453
+ pip install pdm
454
+
455
+ # Clone the repository
456
+ git clone https://github.com/LearningCircuit/local-deep-research.git
457
+ cd local-deep-research
458
+
459
+ # Install dependencies including dev dependencies
460
+ pdm install --no-self
461
+
462
+ # Set up pre-commit hooks
463
+ pdm run pre-commit install
464
+ pdm run pre-commit install-hooks
465
+
466
+ # Activate the virtual environment
467
+ pdm venv activate
468
+ ```
469
+
470
+ #### Common PDM Commands
471
+
472
+ ```bash
473
+ # Run linting checks
474
+ pdm run flake8
475
+ pdm run black .
476
+
477
+ # Run tests (when available)
478
+ pdm run pytest
479
+
480
+ # Add a new dependency
481
+ pdm add package-name
482
+
483
+ # Add a development dependency
484
+ pdm add -dG dev package-name
485
+ ```
486
+
487
+ ### Contributing Process
488
+
489
+ 1. Fork the repository
490
+ 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
491
+ 3. Make your changes
492
+ 4. Run linting checks to ensure code quality
493
+ 5. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
494
+ 6. Push to the branch (`git push origin feature/AmazingFeature`)
495
+ 7. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
496
+
497
+ We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.
498
+
499
+ ### Getting Help
500
+
501
+ Join our [Discord server](https://discord.gg/ttcqQeFcJ3) if you're planning to contribute. Let us know about your plans - we're always happy to guide new contributors and discuss feature ideas!
502
+
413
503
  ## Community & Support
414
504
 
415
- Join our [Discord server](https://discord.gg/2E6gYU2Z) to exchange ideas, discuss usage patterns, and share research approaches.
505
+ Join our [Discord server](https://discord.gg/ttcqQeFcJ3) to exchange ideas, discuss usage patterns, and
506
+ share research approaches.
507
+
508
+ Follow our [Subreddit](https://www.reddit.com/r/LocalDeepResearch/) for announcements, updates, and feature highlights.
416
509
 
417
510
  ## License
418
511
 
@@ -439,16 +532,3 @@ This project is licensed under the MIT License.
439
532
  > - [Support arXiv](https://arxiv.org/about/give)
440
533
  > - [Donate to DuckDuckGo](https://duckduckgo.com/donations)
441
534
  > - [Support PubMed/NCBI](https://www.nlm.nih.gov/pubs/donations/donations.html)
442
-
443
- ## Contributing
444
-
445
- Contributions are welcome! Please feel free to submit a Pull Request.
446
-
447
- 1. Fork the repository
448
- 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
449
- 3. Make your changes
450
- 4. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
451
- 5. Push to the branch (`git push origin feature/AmazingFeature`)
452
- 6. **Important:** Open a Pull Request against the `dev` branch, not the `main` branch
453
-
454
- We prefer all pull requests to be submitted against the `dev` branch for easier testing and integration before releasing to the main branch.
@@ -0,0 +1,135 @@
1
+ local_deep_research-0.2.2.dist-info/METADATA,sha256=MgFc30qd-f-kk07M_jDRZ7HAq8MzL92pDLxQ34YYQMU,19797
2
+ local_deep_research-0.2.2.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ local_deep_research-0.2.2.dist-info/entry_points.txt,sha256=GcXS501Rjh-P80S8db7hnrQ23mS_Jg27PwpVQVO77as,113
4
+ local_deep_research-0.2.2.dist-info/licenses/LICENSE,sha256=Qg2CaTdu6SWnSqk1_JtgBPp_Da-LdqJDhT1Vt1MUc5s,1072
5
+ local_deep_research/__init__.py,sha256=tczbsYNZQqfPAuVtz6OFyo-uUqjNQLelEIT2G7mPTwA,870
6
+ local_deep_research/__main__.py,sha256=LIxK5iS6aLAKMFBDpUS3V-jDcxchqi3eSUsI2jAZUXk,371
7
+ local_deep_research/advanced_search_system/__init__.py,sha256=sGusMj4eFIrhXR6QbOM16UDKB6aI-iS4IFivKWpMlh0,234
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=j-0bBFHEaLbfOJxIWH8MzNpQ2JIKn9zGwzzLbyn8tm0,7775
11
+ 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/knowledge/__init__.py,sha256=9zjQkdmomZCgZZP45fqw0E8UVpBjkzkyW7RpY0f8gY8,34
14
+ local_deep_research/advanced_search_system/knowledge/base_knowledge.py,sha256=CJhx3esyvIZC0G6nNfBE6PctP_1-xg42spXa6vhnk14,4019
15
+ local_deep_research/advanced_search_system/knowledge/standard_knowledge.py,sha256=-xUMYvl5lQPUshLggwxgP_ZnPyKp285MNS4XuFM1rts,4762
16
+ local_deep_research/advanced_search_system/questions/__init__.py,sha256=x8ZuR1mNk7TvJpixL6Dug5keIT2zE1QTo_vGejjKXLI,34
17
+ local_deep_research/advanced_search_system/questions/base_question.py,sha256=yYM-iPUF5YKtq04EcHSB-SFA5jhGD1bxmgu6BV2iuMI,1860
18
+ local_deep_research/advanced_search_system/questions/decomposition_question.py,sha256=-QtA5s5ya2FCMoAziU9CGpAUVPwHEphumMxIU_-NAgM,17405
19
+ local_deep_research/advanced_search_system/questions/standard_question.py,sha256=SRT5f8pFlcI-AT88CgmQZEnU6-XKpN2cppvMxO6mWXc,4561
20
+ local_deep_research/advanced_search_system/repositories/__init__.py,sha256=cCjAR9Z3BFZaN6_OYN9zJPvwcxCxgfp9oOeMqUmLX2c,145
21
+ 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=cK5DqvsjGlFyqKRtpl0-dI6cip32UIbGS8eqsuL9SjI,3781
23
+ local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py,sha256=eKCyxNVRnN7pOr-8LEzREbRkHX6ffa9hmjGwBYHHDDc,18129
24
+ local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py,sha256=n-UVHHpyRFtMmPdaDQ30wE2V839CWGrLOM-cVLtRUrE,12396
25
+ local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py,sha256=fiLTqCfpyoNlP_rRZB96gdi3KoOkCWk-Nw5fb7E9an4,10389
26
+ local_deep_research/advanced_search_system/strategies/standard_strategy.py,sha256=FbZAHiRAhfFCtA46Im0KxF5QNzursiz0SqhimvNiaXs,12747
27
+ local_deep_research/advanced_search_system/tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
28
+ local_deep_research/advanced_search_system/tools/base_tool.py,sha256=jEs4eroCvo0dHP_uF-5kLiQP7OfkD1YzNAD650a8Ktk,2865
29
+ local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
30
+ local_deep_research/advanced_search_system/tools/question_tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
31
+ local_deep_research/advanced_search_system/tools/search_tools/__init__.py,sha256=73jLuCKigwc9lJQ0uD3_F16dgCg4pL-F2cwC6tk9-oc,30
32
+ local_deep_research/api/__init__.py,sha256=-tJQp7Qm1aPg6fgfuw-w9dfNo8GzrJLOy2i3dG8Drl8,441
33
+ local_deep_research/api/research_functions.py,sha256=8Q_Rzfc0Qj2oLxzvFJIA4ms10uQC0a5SBHkIkSoPcw4,10908
34
+ local_deep_research/app.py,sha256=U_92UX0dpVAQoaXciVNy_By_AyDEWGlXSeTwFpohALQ,155
35
+ local_deep_research/citation_handler.py,sha256=KdfwHqSewPyP2OrxEGu9o15pJtFDYLUsLwOTHkQe8I8,4564
36
+ local_deep_research/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ local_deep_research/config/config_files.py,sha256=k6ptAKIvqGrhnRsfRjT9uD2xBLAiD0vqXoYxggF5mik,10041
38
+ local_deep_research/config/llm_config.py,sha256=KhuDbxjndU939rMCKmeYDctsx7fRoXMoQRv1AgtZKI4,16536
39
+ local_deep_research/config/search_config.py,sha256=-qacGuPOuOgPzSS0j2Nt7dBBah2cx4syIlm5KMrGzRo,2503
40
+ local_deep_research/defaults/.env.template,sha256=_eVCy4d_XwpGXy8n50CG3wH9xx2oqJCFKS7IbqgInDk,491
41
+ local_deep_research/defaults/__init__.py,sha256=C_0t0uZmtrVB4rM9NM9Wx8PJU5kFcT-qOHvws5W2iOg,1352
42
+ local_deep_research/defaults/local_collections.toml,sha256=zNa03PVnFrZ757JdZOuW6QDxkOc6ep5tG8baGBrMmXM,1778
43
+ local_deep_research/defaults/main.toml,sha256=4PfSKHXzPjesdh7IzLprJ_oaCxqum9PvuKEaxr_-iJI,1940
44
+ local_deep_research/defaults/search_engines.toml,sha256=XBnqCxzFvXa1HoKLcb_Jg4EGXMlgYOw1sm_CicSdYDM,8285
45
+ local_deep_research/main.py,sha256=umGmaQmW7bpx27wUAgSNjNr4oSHV6mDX5hoyfb22HEY,7033
46
+ local_deep_research/migrate_db.py,sha256=S1h6Bv0OJdRW4BaH7MIMrUXBRV_yqgH2T6LVOZKTQjI,4634
47
+ local_deep_research/report_generator.py,sha256=-G3KDEbsuU3PdxDfuo5v28DIX7RE1yJCCBU2KgRbNzI,9084
48
+ local_deep_research/search_system.py,sha256=MqaG435RzllyHlVuT7eCc_wC8_rCA4RLW7F5NDp9kxE,7108
49
+ local_deep_research/setup_data_dir.py,sha256=7MJa2MMdDUnktJVHwMpyNL2079-qylpIyyLpVbF5AUY,1134
50
+ local_deep_research/test_migration.py,sha256=cXY9WbpxLslNEa1vFwLMvcvKBbUe7Wosm--AqmPIPYM,6459
51
+ local_deep_research/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ local_deep_research/utilities/db_utils.py,sha256=pSxtGT6rGFf2-yrci0FW0UBUj51B7WOhzS0GfMeY7oQ,1226
53
+ local_deep_research/utilities/enums.py,sha256=yFwmodt93uETdQd7qyW4vOUhiAzZF-BHBbVYHKN7scU,223
54
+ local_deep_research/utilities/llm_utils.py,sha256=1O8faskPSnyave15cxOVXQcdcFrDybQA445m0OjnD9g,4877
55
+ local_deep_research/utilities/search_utilities.py,sha256=JiSRMiXZEgtpEbpmPbfoBtR5tARB6Su0wEeATFVz_9Y,9453
56
+ local_deep_research/utilities/setup_utils.py,sha256=0Us6doQ6xQtKzgtnN1C4L7sSgxzFKJ35FpmZdj1tCDM,213
57
+ local_deep_research/web/__init__.py,sha256=CynnuRxCf9mB0AHeylhF5yVZwdj0H6bxVrZtniw3xmE,44
58
+ local_deep_research/web/app.py,sha256=yOCi7ZT8bPjmX9N_2YkhYwFiIvf33VMDYeHRtLgBBE4,4213
59
+ local_deep_research/web/app_factory.py,sha256=vGQ7UL6zDIX8MSt2Z_CIOwkD5Phj-kXkPhN9KoJHW2E,9037
60
+ local_deep_research/web/database/README.md,sha256=eEDLqLIfOBRvc0TFh3J1HrtFbZceYmVgpjS3-oyZ5nI,2861
61
+ local_deep_research/web/database/migrate_to_ldr_db.py,sha256=-ltKuhgosPhybDsJ13BuvvHEDJTN4Jx6SiO6XvW0SKA,9823
62
+ local_deep_research/web/database/migrations.py,sha256=9u33vKB-Q9ixtd52hWitOZI2U5ULaEnoylccGoyQInU,16718
63
+ local_deep_research/web/database/models.py,sha256=MIxYWIQIovkrR65rFMxlDXn2iZXf5SIePIE_-vSmLXg,3489
64
+ local_deep_research/web/database/schema_upgrade.py,sha256=u3tx_tlsuzJw-NhvhKvQG6dqzwUckQkic0D3taZAt-k,2924
65
+ local_deep_research/web/models/database.py,sha256=NV4h0RU0ta408SkI_ZmquCplMTNH1Q4zxYJ4SHwmiGY,9489
66
+ local_deep_research/web/models/settings.py,sha256=rXBI9vY5k3ndR8dPd3fZJy-6HwYltQihhSBRq-sZutw,2314
67
+ local_deep_research/web/routes/api_routes.py,sha256=S0UdCmfm0v1GEM4UiSbI0PE3xUOxiGaYFR2ZOE0256U,19075
68
+ local_deep_research/web/routes/history_routes.py,sha256=6a_8nX349viuvi1zP5S7BaPPpAh133eTi1NVWO545A8,12622
69
+ local_deep_research/web/routes/research_routes.py,sha256=JlzaP1z-7XAP3E0nkEjLIfYj_NKf5qDcrjxBmUouAhM,23492
70
+ local_deep_research/web/routes/settings_routes.py,sha256=rEvvFCVWJ80zchnzXBv9SAnDXMvDPLGDjSUfLRlCCi0,60012
71
+ local_deep_research/web/services/research_service.py,sha256=sxvW4oNLiiKgQ8w0SblefzMmk8EEaNNOGd8oC96j85E,39556
72
+ local_deep_research/web/services/resource_service.py,sha256=yKgOC6GEOmHqRoGzwf52e19UaGCCS1DbDbOIXgWGvGc,4378
73
+ local_deep_research/web/services/settings_manager.py,sha256=ybnhSlByuKA2oJPElN2WI8bh-ZzC6lP08x0Gsz8Ycbk,24310
74
+ local_deep_research/web/services/settings_service.py,sha256=1XHvNBNs9gzor2AxOEDrqL-JsKyXKk5izCnoXAV78u8,5064
75
+ local_deep_research/web/services/socket_service.py,sha256=jZGXk6kesBOf4bAdLiT3V4Ofod12pGKTsvxr3ml8ydY,7272
76
+ local_deep_research/web/static/css/custom_dropdown.css,sha256=-pCx6oazWVgwqFAGq_eZ8OrTKMVQlgkKYCM6w-bACLs,7949
77
+ local_deep_research/web/static/css/settings.css,sha256=QZbjLz8zNQZvM_ROzQOH67ZHZHEQ8WohkIPJlsekqfk,24719
78
+ local_deep_research/web/static/css/styles.css,sha256=7CSiHzx9BNjGtE2Y9AVjn061y_x2qmpqN-6NoCLyLtY,34223
79
+ local_deep_research/web/static/js/components/custom_dropdown.js,sha256=Ot4Z0Du4an61-MSKwZmuq26qcmbjMUCTbzmUaoJKBdg,16835
80
+ local_deep_research/web/static/js/components/detail.js,sha256=LtSqfFwSAHEG5z3UbUox8--rhiegZJZ4Vs5n9QvDoPA,11755
81
+ local_deep_research/web/static/js/components/fallback/formatting.js,sha256=wvypkjJnvIqmotsbIAm6I_02kefro1cRkC9U0g8VvAM,3374
82
+ local_deep_research/web/static/js/components/fallback/ui.js,sha256=b2mbTrUGMdH6p5M2RandhUmjlKewuov3F6sKlzL73Wk,7407
83
+ local_deep_research/web/static/js/components/history.js,sha256=Tqn6tdFcj5QMZd_eW8YTIHPVQMEMFUQJlRaFv0waQFA,16100
84
+ local_deep_research/web/static/js/components/logpanel.js,sha256=bRYkOf-BRTAHrHx9cnF8wYMWVoCbyA7XevcJzTujQjg,42115
85
+ local_deep_research/web/static/js/components/progress.js,sha256=aTvtyZDQMkjyhqy62icuZuJ7Khyujgust6fpQFcRABk,41570
86
+ local_deep_research/web/static/js/components/research.js,sha256=eGcYMgprmwTG0ApZuzazqXsdUed7GbWEzBwnCNHJL3U,81074
87
+ local_deep_research/web/static/js/components/results.js,sha256=7fL18Yn0DwAjuelXvz-UlbDiLCFk-_UEEeqEjaDEVBA,32314
88
+ local_deep_research/web/static/js/components/settings.js,sha256=CgQQ8Bz1JW9n8zZIkTcZs5LgbtwB3MAGGwohQSgHlyc,167969
89
+ local_deep_research/web/static/js/components/settings_sync.js,sha256=LWDZ2EE8ChCxI5TPmPm9F4rOiYIEzEJxSCE1GLXk-2w,3925
90
+ local_deep_research/web/static/js/main.js,sha256=NHOcEVytPCvF5tz3yPWg8Qu5ghVs5-GWKmpaKB87oi4,8440
91
+ local_deep_research/web/static/js/services/api.js,sha256=AP24hrw6VBrEjQxIMnxrZuGFmrdm9MReSjjZ-AIKqr0,6776
92
+ local_deep_research/web/static/js/services/audio.js,sha256=-Sdjuq8U-isBEK4aLc-QMDedfGtEvsQc7FBJTEoAueM,857
93
+ local_deep_research/web/static/js/services/formatting.js,sha256=wBAVHls_TTzGLreqi7lHcm0dXPm7F0Itttpn8NEtzfg,3345
94
+ local_deep_research/web/static/js/services/pdf.js,sha256=LaKiovUcf2AJiEPzTMcnjyH6Pi0r3anIEXF9XNZLmLw,27345
95
+ local_deep_research/web/static/js/services/socket.js,sha256=tWvGR_6k1WvUwtVt2r-bfkbORPnl6mAmRH-ghUMfQUg,34555
96
+ local_deep_research/web/static/js/services/ui.js,sha256=XkJCUqhDjfeY58bExyurcFmWCYBbWRHSpsIABmWtU7s,16349
97
+ local_deep_research/web/static/sounds/README.md,sha256=yNfVJIpKoSHSdAEj-lpxkjGy8F-OMStXCiIo1fY5I-0,1003
98
+ local_deep_research/web/static/sounds/error.mp3,sha256=OM3K-pDxkPDCcptqb7c4bIwkHTQa7cLREs4xdYAODPs,3177
99
+ local_deep_research/web/static/sounds/success.mp3,sha256=8EJRxWER-dt6vG6X6GDK3DNb8zoNa_1eDzusYJVcWLI,11818
100
+ local_deep_research/web/templates/base.html,sha256=Rrg31ej7lqZtSu7B-PkJM9-9LMwdgvZ-G6s7PhV-_iU,3049
101
+ local_deep_research/web/templates/components/custom_dropdown.html,sha256=ELoC9PwM2sk7VJMr01pGegSFW6c3x3DhDv95DwwtuTw,2036
102
+ local_deep_research/web/templates/components/log_panel.html,sha256=hVyLTJMuU7iURSOKUZnB0Z8a7lcIUuT5m6mUVruYVuQ,1462
103
+ local_deep_research/web/templates/components/mobile_nav.html,sha256=rVOLbEp6lGrX8F8q24vTLTSdcP6xxi4wqBrBBrfb9Ek,865
104
+ local_deep_research/web/templates/components/settings_form.html,sha256=Z1eEQ_SFlioH24zrIDpjMQ-ajEJC2lLN4Tu8Y8uASLY,15987
105
+ local_deep_research/web/templates/components/sidebar.html,sha256=FLjlpwlXPoNd-NcBxWqiB-d7yg3uBtgoOVGD3pUeVf4,1014
106
+ local_deep_research/web/templates/pages/details.html,sha256=OYvSNfi8uFD1wNeHxWza1-xWMrT9c4V7U0ZEZnISlCU,2768
107
+ local_deep_research/web/templates/pages/history.html,sha256=ZS3QufL2beUVB9P_LvqIixvYfCT-EjtokQa9LRp5sUs,1982
108
+ local_deep_research/web/templates/pages/progress.html,sha256=tq9XRRZBm2KnnBxPlAa7cWWDAP-pqJeHGgtlul7UVSs,2550
109
+ local_deep_research/web/templates/pages/research.html,sha256=abrFM19P86U5uaNUZmJMl75pkJuAM4isZ2WBd6s5vGs,6965
110
+ local_deep_research/web/templates/pages/results.html,sha256=XKZVWo1CfbyjxMOntFO7IiF0_xX5r-JaJf7HDUSZTEY,2721
111
+ local_deep_research/web/templates/settings_dashboard.html,sha256=A1fBe1D29v8G3ys94_rIiBP6Ky-rtYL6TRbDluoBMPI,4342
112
+ local_deep_research/web/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
+ local_deep_research/web/utils/formatters.py,sha256=Gj_a0oFveNXHtvkiFe1rwlEtzYerMd0TtPO3Yh2e2bI,3155
114
+ local_deep_research/web_search_engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
+ local_deep_research/web_search_engines/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
+ local_deep_research/web_search_engines/engines/full_search.py,sha256=6Pi_wj9oAtDHAyLsIbWGBeS8QBv6yCJEJ87LN68Cp-k,4703
117
+ local_deep_research/web_search_engines/engines/meta_search_engine.py,sha256=92L7PKHh6DKV2ESxoycR_pXBYt_jC4XlTJAJKn9ptzk,12970
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
120
+ local_deep_research/web_search_engines/engines/search_engine_ddg.py,sha256=w9vRDpt_L0h5J-PWiNO_3J5uuRsfk5smlcIQjRofwB4,4649
121
+ 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
123
+ 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=7s2qcyslMNiwXQynYjm_9t8nL_MDfue8wuDrBhfpcEg,40506
125
+ local_deep_research/web_search_engines/engines/search_engine_local_all.py,sha256=zg963qnwg8XwUqc9DeBrFaDSEHVr-j7Bv76WhaEuyi8,5785
126
+ 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=wPYIl22SgXjIDYzcq62glGH2JZywCnZR31he1i7U1cE,18053
128
+ 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
130
+ local_deep_research/web_search_engines/engines/search_engine_wayback.py,sha256=rfRs7WJxa-H1DXSyduFHBMfpFwWEVRXLd8s_78iU8gU,17894
131
+ 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=mkIf6F-8-aooS47iqb8SanJ9shnl0UOVia8hr2xX0b0,12751
134
+ local_deep_research/web_search_engines/search_engines_config.py,sha256=GmwpCT6vfeq1wrdr1R-zu6WRQ5XxyE7921HPsgGm3gI,2771
135
+ local_deep_research-0.2.2.dist-info/RECORD,,
@@ -1,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: pdm-backend (2.4.4)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -1,3 +1,6 @@
1
1
  [console_scripts]
2
2
  ldr = local_deep_research.main:main
3
3
  ldr-web = local_deep_research.web.app:main
4
+
5
+ [gui_scripts]
6
+