local-deep-research 1.3.16__tar.gz

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 (1073) hide show
  1. local_deep_research-1.3.16/LICENSE +21 -0
  2. local_deep_research-1.3.16/PKG-INFO +614 -0
  3. local_deep_research-1.3.16/README.md +512 -0
  4. local_deep_research-1.3.16/pyproject.toml +268 -0
  5. local_deep_research-1.3.16/src/local_deep_research/__init__.py +17 -0
  6. local_deep_research-1.3.16/src/local_deep_research/__version__.py +1 -0
  7. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/__init__.py +7 -0
  8. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/answer_decoding/__init__.py +5 -0
  9. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/answer_decoding/browsecomp_answer_decoder.py +422 -0
  10. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/README.md +219 -0
  11. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/__init__.py +25 -0
  12. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/adaptive_explorer.py +329 -0
  13. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/base_explorer.py +341 -0
  14. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/constraint_guided_explorer.py +436 -0
  15. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/diversity_explorer.py +457 -0
  16. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/parallel_explorer.py +252 -0
  17. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/progressive_explorer.py +261 -0
  18. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidates/__init__.py +5 -0
  19. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidates/base_candidate.py +59 -0
  20. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/README.md +150 -0
  21. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/__init__.py +35 -0
  22. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/base_constraint_checker.py +122 -0
  23. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/constraint_checker.py +223 -0
  24. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/constraint_satisfaction_tracker.py +386 -0
  25. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/dual_confidence_checker.py +424 -0
  26. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/evidence_analyzer.py +174 -0
  27. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/intelligent_constraint_relaxer.py +501 -0
  28. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/rejection_engine.py +143 -0
  29. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/strict_checker.py +259 -0
  30. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/threshold_checker.py +213 -0
  31. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraints/__init__.py +6 -0
  32. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraints/base_constraint.py +58 -0
  33. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraints/constraint_analyzer.py +143 -0
  34. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/__init__.py +12 -0
  35. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/base_evidence.py +57 -0
  36. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/evaluator.py +159 -0
  37. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/requirements.py +122 -0
  38. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/__init__.py +8 -0
  39. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/base_filter.py +39 -0
  40. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +226 -0
  41. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/followup_relevance_filter.py +165 -0
  42. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +363 -0
  43. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/findings/base_findings.py +78 -0
  44. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/findings/repository.py +479 -0
  45. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/findings/topic.py +187 -0
  46. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/__init__.py +1 -0
  47. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +149 -0
  48. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/followup_context_manager.py +415 -0
  49. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +159 -0
  50. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/query_generation/adaptive_query_generator.py +405 -0
  51. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/__init__.py +19 -0
  52. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/atomic_fact_question.py +169 -0
  53. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/base_question.py +61 -0
  54. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/browsecomp_question.py +373 -0
  55. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +452 -0
  56. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/entity_aware_question.py +183 -0
  57. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/flexible_browsecomp_question.py +101 -0
  58. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/__init__.py +14 -0
  59. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/base_followup_question.py +91 -0
  60. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/llm_followup_question.py +93 -0
  61. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/simple_followup_question.py +65 -0
  62. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/news_question.py +49 -0
  63. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/standard_question.py +124 -0
  64. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/repositories/__init__.py +7 -0
  65. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/search_optimization/cross_constraint_manager.py +624 -0
  66. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/source_management/diversity_manager.py +613 -0
  67. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/__init__.py +43 -0
  68. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/adaptive_decomposition_strategy.py +564 -0
  69. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +226 -0
  70. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/browsecomp_entity_strategy.py +1037 -0
  71. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/browsecomp_optimized_strategy.py +779 -0
  72. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/concurrent_dual_confidence_strategy.py +444 -0
  73. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/constrained_search_strategy.py +1346 -0
  74. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/constraint_parallel_strategy.py +520 -0
  75. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/direct_search_strategy.py +213 -0
  76. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/dual_confidence_strategy.py +323 -0
  77. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/dual_confidence_with_rejection.py +220 -0
  78. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/early_stop_constrained_strategy.py +373 -0
  79. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/entity_aware_source_strategy.py +139 -0
  80. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy.py +1249 -0
  81. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy_v2.py +1337 -0
  82. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/focused_iteration_strategy.py +585 -0
  83. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/followup/__init__.py +10 -0
  84. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/followup/enhanced_contextual_followup.py +387 -0
  85. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/improved_evidence_based_strategy.py +782 -0
  86. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/iterative_reasoning_strategy.py +760 -0
  87. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/iterative_refinement_strategy.py +623 -0
  88. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +501 -0
  89. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/llm_driven_modular_strategy.py +865 -0
  90. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/modular_strategy.py +1144 -0
  91. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/news_strategy.py +284 -0
  92. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/parallel_constrained_strategy.py +506 -0
  93. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +470 -0
  94. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +296 -0
  95. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/recursive_decomposition_strategy.py +492 -0
  96. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/smart_decomposition_strategy.py +287 -0
  97. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/smart_query_strategy.py +517 -0
  98. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/source_based_strategy.py +460 -0
  99. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +341 -0
  100. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/topic_organization_strategy.py +1734 -0
  101. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/__init__.py +1 -0
  102. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/base_tool.py +123 -0
  103. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +1 -0
  104. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +1 -0
  105. local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +1 -0
  106. local_deep_research-1.3.16/src/local_deep_research/api/__init__.py +47 -0
  107. local_deep_research-1.3.16/src/local_deep_research/api/benchmark_functions.py +361 -0
  108. local_deep_research-1.3.16/src/local_deep_research/api/client.py +488 -0
  109. local_deep_research-1.3.16/src/local_deep_research/api/research_functions.py +657 -0
  110. local_deep_research-1.3.16/src/local_deep_research/api/settings_utils.py +332 -0
  111. local_deep_research-1.3.16/src/local_deep_research/benchmarks/README.md +162 -0
  112. local_deep_research-1.3.16/src/local_deep_research/benchmarks/__init__.py +55 -0
  113. local_deep_research-1.3.16/src/local_deep_research/benchmarks/benchmark_functions.py +459 -0
  114. local_deep_research-1.3.16/src/local_deep_research/benchmarks/cli/__init__.py +16 -0
  115. local_deep_research-1.3.16/src/local_deep_research/benchmarks/cli/benchmark_commands.py +356 -0
  116. local_deep_research-1.3.16/src/local_deep_research/benchmarks/cli.py +372 -0
  117. local_deep_research-1.3.16/src/local_deep_research/benchmarks/comparison/__init__.py +18 -0
  118. local_deep_research-1.3.16/src/local_deep_research/benchmarks/comparison/evaluator.py +848 -0
  119. local_deep_research-1.3.16/src/local_deep_research/benchmarks/comparison/results.py +78 -0
  120. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/__init__.py +56 -0
  121. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/base.py +312 -0
  122. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/browsecomp.py +136 -0
  123. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/custom_dataset_template.py +96 -0
  124. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/simpleqa.py +73 -0
  125. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/utils.py +139 -0
  126. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/xbench_deepsearch.py +278 -0
  127. local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets.py +22 -0
  128. local_deep_research-1.3.16/src/local_deep_research/benchmarks/efficiency/__init__.py +18 -0
  129. local_deep_research-1.3.16/src/local_deep_research/benchmarks/efficiency/resource_monitor.py +418 -0
  130. local_deep_research-1.3.16/src/local_deep_research/benchmarks/efficiency/speed_profiler.py +226 -0
  131. local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/__init__.py +18 -0
  132. local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/base.py +71 -0
  133. local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/browsecomp.py +84 -0
  134. local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/composite.py +124 -0
  135. local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/simpleqa.py +291 -0
  136. local_deep_research-1.3.16/src/local_deep_research/benchmarks/graders.py +610 -0
  137. local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/README.md +80 -0
  138. local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/__init__.py +24 -0
  139. local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/calculation.py +396 -0
  140. local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/reporting.py +168 -0
  141. local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/visualization.py +223 -0
  142. local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics.py +11 -0
  143. local_deep_research-1.3.16/src/local_deep_research/benchmarks/models/__init__.py +19 -0
  144. local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/__init__.py +34 -0
  145. local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/api.py +277 -0
  146. local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/metrics.py +20 -0
  147. local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/optuna_optimizer.py +1238 -0
  148. local_deep_research-1.3.16/src/local_deep_research/benchmarks/runners.py +493 -0
  149. local_deep_research-1.3.16/src/local_deep_research/benchmarks/templates.py +65 -0
  150. local_deep_research-1.3.16/src/local_deep_research/benchmarks/ui/__init__.py +1 -0
  151. local_deep_research-1.3.16/src/local_deep_research/benchmarks/web_api/__init__.py +6 -0
  152. local_deep_research-1.3.16/src/local_deep_research/benchmarks/web_api/benchmark_routes.py +931 -0
  153. local_deep_research-1.3.16/src/local_deep_research/benchmarks/web_api/benchmark_service.py +1444 -0
  154. local_deep_research-1.3.16/src/local_deep_research/citation_handler.py +106 -0
  155. local_deep_research-1.3.16/src/local_deep_research/citation_handlers/__init__.py +15 -0
  156. local_deep_research-1.3.16/src/local_deep_research/citation_handlers/base_citation_handler.py +110 -0
  157. local_deep_research-1.3.16/src/local_deep_research/citation_handlers/forced_answer_citation_handler.py +195 -0
  158. local_deep_research-1.3.16/src/local_deep_research/citation_handlers/precision_extraction_handler.py +584 -0
  159. local_deep_research-1.3.16/src/local_deep_research/citation_handlers/standard_citation_handler.py +97 -0
  160. local_deep_research-1.3.16/src/local_deep_research/cli/__init__.py +0 -0
  161. local_deep_research-1.3.16/src/local_deep_research/config/__init__.py +0 -0
  162. local_deep_research-1.3.16/src/local_deep_research/config/default_settings/database_settings.py +18 -0
  163. local_deep_research-1.3.16/src/local_deep_research/config/llm_config.py +1040 -0
  164. local_deep_research-1.3.16/src/local_deep_research/config/paths.py +126 -0
  165. local_deep_research-1.3.16/src/local_deep_research/config/search_config.py +152 -0
  166. local_deep_research-1.3.16/src/local_deep_research/config/thread_settings.py +126 -0
  167. local_deep_research-1.3.16/src/local_deep_research/constants.py +18 -0
  168. local_deep_research-1.3.16/src/local_deep_research/database/auth_db.py +59 -0
  169. local_deep_research-1.3.16/src/local_deep_research/database/credential_store_base.py +117 -0
  170. local_deep_research-1.3.16/src/local_deep_research/database/encrypted_db.py +620 -0
  171. local_deep_research-1.3.16/src/local_deep_research/database/encryption_check.py +103 -0
  172. local_deep_research-1.3.16/src/local_deep_research/database/initialize.py +218 -0
  173. local_deep_research-1.3.16/src/local_deep_research/database/library_init.py +199 -0
  174. local_deep_research-1.3.16/src/local_deep_research/database/models/__init__.py +168 -0
  175. local_deep_research-1.3.16/src/local_deep_research/database/models/active_research.py +53 -0
  176. local_deep_research-1.3.16/src/local_deep_research/database/models/auth.py +39 -0
  177. local_deep_research-1.3.16/src/local_deep_research/database/models/base.py +7 -0
  178. local_deep_research-1.3.16/src/local_deep_research/database/models/benchmark.py +277 -0
  179. local_deep_research-1.3.16/src/local_deep_research/database/models/cache.py +100 -0
  180. local_deep_research-1.3.16/src/local_deep_research/database/models/download_tracker.py +144 -0
  181. local_deep_research-1.3.16/src/local_deep_research/database/models/file_integrity.py +127 -0
  182. local_deep_research-1.3.16/src/local_deep_research/database/models/library.py +887 -0
  183. local_deep_research-1.3.16/src/local_deep_research/database/models/logs.py +74 -0
  184. local_deep_research-1.3.16/src/local_deep_research/database/models/metrics.py +209 -0
  185. local_deep_research-1.3.16/src/local_deep_research/database/models/news.py +262 -0
  186. local_deep_research-1.3.16/src/local_deep_research/database/models/providers.py +33 -0
  187. local_deep_research-1.3.16/src/local_deep_research/database/models/queue.py +50 -0
  188. local_deep_research-1.3.16/src/local_deep_research/database/models/queued_research.py +34 -0
  189. local_deep_research-1.3.16/src/local_deep_research/database/models/rate_limiting.py +64 -0
  190. local_deep_research-1.3.16/src/local_deep_research/database/models/reports.py +124 -0
  191. local_deep_research-1.3.16/src/local_deep_research/database/models/research.py +315 -0
  192. local_deep_research-1.3.16/src/local_deep_research/database/models/settings.py +108 -0
  193. local_deep_research-1.3.16/src/local_deep_research/database/models/user_base.py +9 -0
  194. local_deep_research-1.3.16/src/local_deep_research/database/models/user_news_search_history.py +47 -0
  195. local_deep_research-1.3.16/src/local_deep_research/database/queue_service.py +176 -0
  196. local_deep_research-1.3.16/src/local_deep_research/database/session_context.py +222 -0
  197. local_deep_research-1.3.16/src/local_deep_research/database/session_passwords.py +95 -0
  198. local_deep_research-1.3.16/src/local_deep_research/database/sqlcipher_compat.py +32 -0
  199. local_deep_research-1.3.16/src/local_deep_research/database/sqlcipher_utils.py +254 -0
  200. local_deep_research-1.3.16/src/local_deep_research/database/temp_auth.py +87 -0
  201. local_deep_research-1.3.16/src/local_deep_research/database/thread_local_session.py +180 -0
  202. local_deep_research-1.3.16/src/local_deep_research/database/thread_metrics.py +159 -0
  203. local_deep_research-1.3.16/src/local_deep_research/database/views/library_views.py +244 -0
  204. local_deep_research-1.3.16/src/local_deep_research/defaults/.env.template +15 -0
  205. local_deep_research-1.3.16/src/local_deep_research/defaults/__init__.py +47 -0
  206. local_deep_research-1.3.16/src/local_deep_research/defaults/default_settings.json +5772 -0
  207. local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/google_settings.json +16 -0
  208. local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/ionos_settings.json +16 -0
  209. local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/openrouter_settings.json +16 -0
  210. local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/xai_settings.json +16 -0
  211. local_deep_research-1.3.16/src/local_deep_research/defaults/research_library/library_settings.json +141 -0
  212. local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/elasticsearch.json +282 -0
  213. local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/paperless.json +252 -0
  214. local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/parallel.json +198 -0
  215. local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/scaleserp.json +259 -0
  216. local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/serper.json +258 -0
  217. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_document_scheduler.json +72 -0
  218. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_nasa_ads.json +254 -0
  219. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_ollama_embeddings.json +16 -0
  220. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_openalex.json +252 -0
  221. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_search_config.json +14 -0
  222. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_security.json +38 -0
  223. local_deep_research-1.3.16/src/local_deep_research/defaults/settings_semantic_scholar.json +275 -0
  224. local_deep_research-1.3.16/src/local_deep_research/domain_classifier/__init__.py +6 -0
  225. local_deep_research-1.3.16/src/local_deep_research/domain_classifier/classifier.py +488 -0
  226. local_deep_research-1.3.16/src/local_deep_research/domain_classifier/models.py +46 -0
  227. local_deep_research-1.3.16/src/local_deep_research/embeddings/__init__.py +35 -0
  228. local_deep_research-1.3.16/src/local_deep_research/embeddings/embeddings_config.py +146 -0
  229. local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/__init__.py +5 -0
  230. local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/base.py +128 -0
  231. local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/__init__.py +11 -0
  232. local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/ollama.py +104 -0
  233. local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/openai.py +163 -0
  234. local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/sentence_transformers.py +127 -0
  235. local_deep_research-1.3.16/src/local_deep_research/embeddings/splitters/__init__.py +9 -0
  236. local_deep_research-1.3.16/src/local_deep_research/embeddings/splitters/text_splitter_registry.py +145 -0
  237. local_deep_research-1.3.16/src/local_deep_research/error_handling/__init__.py +13 -0
  238. local_deep_research-1.3.16/src/local_deep_research/error_handling/error_reporter.py +384 -0
  239. local_deep_research-1.3.16/src/local_deep_research/error_handling/report_generator.py +414 -0
  240. local_deep_research-1.3.16/src/local_deep_research/followup_research/__init__.py +15 -0
  241. local_deep_research-1.3.16/src/local_deep_research/followup_research/models.py +52 -0
  242. local_deep_research-1.3.16/src/local_deep_research/followup_research/routes.py +316 -0
  243. local_deep_research-1.3.16/src/local_deep_research/followup_research/service.py +214 -0
  244. local_deep_research-1.3.16/src/local_deep_research/library/download_management/__init__.py +37 -0
  245. local_deep_research-1.3.16/src/local_deep_research/library/download_management/database_init.py +45 -0
  246. local_deep_research-1.3.16/src/local_deep_research/library/download_management/failure_classifier.py +211 -0
  247. local_deep_research-1.3.16/src/local_deep_research/library/download_management/filters/__init__.py +12 -0
  248. local_deep_research-1.3.16/src/local_deep_research/library/download_management/filters/resource_filter.py +164 -0
  249. local_deep_research-1.3.16/src/local_deep_research/library/download_management/models/__init__.py +74 -0
  250. local_deep_research-1.3.16/src/local_deep_research/library/download_management/retry_manager.py +283 -0
  251. local_deep_research-1.3.16/src/local_deep_research/library/download_management/status_tracker.py +326 -0
  252. local_deep_research-1.3.16/src/local_deep_research/llm/__init__.py +19 -0
  253. local_deep_research-1.3.16/src/local_deep_research/llm/llm_registry.py +161 -0
  254. local_deep_research-1.3.16/src/local_deep_research/llm/providers/__init__.py +20 -0
  255. local_deep_research-1.3.16/src/local_deep_research/llm/providers/auto_discovery.py +269 -0
  256. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/anthropic.py +161 -0
  257. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/custom_openai_endpoint.py +111 -0
  258. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/google.py +132 -0
  259. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/ionos.py +70 -0
  260. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/lmstudio.py +114 -0
  261. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/ollama.py +344 -0
  262. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/openai.py +217 -0
  263. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/openrouter.py +71 -0
  264. local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/xai.py +80 -0
  265. local_deep_research-1.3.16/src/local_deep_research/llm/providers/openai_base.py +339 -0
  266. local_deep_research-1.3.16/src/local_deep_research/metrics/__init__.py +13 -0
  267. local_deep_research-1.3.16/src/local_deep_research/metrics/database.py +71 -0
  268. local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/__init__.py +12 -0
  269. local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/cost_calculator.py +236 -0
  270. local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/pricing_cache.py +108 -0
  271. local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/pricing_fetcher.py +240 -0
  272. local_deep_research-1.3.16/src/local_deep_research/metrics/query_utils.py +51 -0
  273. local_deep_research-1.3.16/src/local_deep_research/metrics/search_tracker.py +442 -0
  274. local_deep_research-1.3.16/src/local_deep_research/metrics/token_counter.py +1931 -0
  275. local_deep_research-1.3.16/src/local_deep_research/news/__init__.py +40 -0
  276. local_deep_research-1.3.16/src/local_deep_research/news/api.py +1300 -0
  277. local_deep_research-1.3.16/src/local_deep_research/news/core/__init__.py +0 -0
  278. local_deep_research-1.3.16/src/local_deep_research/news/core/base_card.py +371 -0
  279. local_deep_research-1.3.16/src/local_deep_research/news/core/card_factory.py +349 -0
  280. local_deep_research-1.3.16/src/local_deep_research/news/core/card_storage.py +209 -0
  281. local_deep_research-1.3.16/src/local_deep_research/news/core/news_analyzer.py +448 -0
  282. local_deep_research-1.3.16/src/local_deep_research/news/core/relevance_service.py +156 -0
  283. local_deep_research-1.3.16/src/local_deep_research/news/core/search_integration.py +158 -0
  284. local_deep_research-1.3.16/src/local_deep_research/news/core/storage.py +269 -0
  285. local_deep_research-1.3.16/src/local_deep_research/news/core/storage_manager.py +456 -0
  286. local_deep_research-1.3.16/src/local_deep_research/news/core/utils.py +53 -0
  287. local_deep_research-1.3.16/src/local_deep_research/news/exceptions.py +191 -0
  288. local_deep_research-1.3.16/src/local_deep_research/news/flask_api.py +1476 -0
  289. local_deep_research-1.3.16/src/local_deep_research/news/folder_manager.py +225 -0
  290. local_deep_research-1.3.16/src/local_deep_research/news/preference_manager/__init__.py +0 -0
  291. local_deep_research-1.3.16/src/local_deep_research/news/preference_manager/base_preference.py +264 -0
  292. local_deep_research-1.3.16/src/local_deep_research/news/preference_manager/storage.py +209 -0
  293. local_deep_research-1.3.16/src/local_deep_research/news/rating_system/__init__.py +0 -0
  294. local_deep_research-1.3.16/src/local_deep_research/news/rating_system/base_rater.py +307 -0
  295. local_deep_research-1.3.16/src/local_deep_research/news/rating_system/storage.py +245 -0
  296. local_deep_research-1.3.16/src/local_deep_research/news/recommender/__init__.py +0 -0
  297. local_deep_research-1.3.16/src/local_deep_research/news/recommender/base_recommender.py +203 -0
  298. local_deep_research-1.3.16/src/local_deep_research/news/recommender/topic_based.py +321 -0
  299. local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/__init__.py +15 -0
  300. local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/base_subscription.py +250 -0
  301. local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/scheduler.py +1575 -0
  302. local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/search_subscription.py +253 -0
  303. local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/storage.py +343 -0
  304. local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/topic_subscription.py +312 -0
  305. local_deep_research-1.3.16/src/local_deep_research/news/utils/__init__.py +1 -0
  306. local_deep_research-1.3.16/src/local_deep_research/news/utils/headline_generator.py +85 -0
  307. local_deep_research-1.3.16/src/local_deep_research/news/utils/topic_generator.py +146 -0
  308. local_deep_research-1.3.16/src/local_deep_research/news/web.py +235 -0
  309. local_deep_research-1.3.16/src/local_deep_research/notifications/__init__.py +47 -0
  310. local_deep_research-1.3.16/src/local_deep_research/notifications/exceptions.py +27 -0
  311. local_deep_research-1.3.16/src/local_deep_research/notifications/manager.py +571 -0
  312. local_deep_research-1.3.16/src/local_deep_research/notifications/queue_helpers.py +412 -0
  313. local_deep_research-1.3.16/src/local_deep_research/notifications/service.py +340 -0
  314. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/api_quota_warning.jinja2 +6 -0
  315. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/auth_issue.jinja2 +5 -0
  316. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/research_completed.jinja2 +7 -0
  317. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/research_failed.jinja2 +7 -0
  318. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/research_queued.jinja2 +6 -0
  319. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/subscription_error.jinja2 +7 -0
  320. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/subscription_update.jinja2 +7 -0
  321. local_deep_research-1.3.16/src/local_deep_research/notifications/templates/test.jinja2 +5 -0
  322. local_deep_research-1.3.16/src/local_deep_research/notifications/templates.py +230 -0
  323. local_deep_research-1.3.16/src/local_deep_research/notifications/url_builder.py +97 -0
  324. local_deep_research-1.3.16/src/local_deep_research/report_generator.py +387 -0
  325. local_deep_research-1.3.16/src/local_deep_research/research_library/__init__.py +25 -0
  326. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/__init__.py +25 -0
  327. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/routes/__init__.py +5 -0
  328. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/routes/delete_routes.py +413 -0
  329. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/__init__.py +11 -0
  330. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/bulk_deletion.py +297 -0
  331. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/collection_deletion.py +327 -0
  332. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/document_deletion.py +435 -0
  333. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/utils/__init__.py +5 -0
  334. local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/utils/cascade_helper.py +417 -0
  335. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/__init__.py +26 -0
  336. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/arxiv.py +232 -0
  337. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/base.py +379 -0
  338. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/biorxiv.py +196 -0
  339. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/direct_pdf.py +118 -0
  340. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/generic.py +162 -0
  341. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/openalex.py +213 -0
  342. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/pubmed.py +505 -0
  343. local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/semantic_scholar.py +175 -0
  344. local_deep_research-1.3.16/src/local_deep_research/research_library/routes/__init__.py +1 -0
  345. local_deep_research-1.3.16/src/local_deep_research/research_library/routes/library_routes.py +1378 -0
  346. local_deep_research-1.3.16/src/local_deep_research/research_library/routes/rag_routes.py +2693 -0
  347. local_deep_research-1.3.16/src/local_deep_research/research_library/services/__init__.py +1 -0
  348. local_deep_research-1.3.16/src/local_deep_research/research_library/services/download_service.py +1579 -0
  349. local_deep_research-1.3.16/src/local_deep_research/research_library/services/library_rag_service.py +1442 -0
  350. local_deep_research-1.3.16/src/local_deep_research/research_library/services/library_service.py +910 -0
  351. local_deep_research-1.3.16/src/local_deep_research/research_library/services/pdf_storage_manager.py +425 -0
  352. local_deep_research-1.3.16/src/local_deep_research/research_library/utils/__init__.py +186 -0
  353. local_deep_research-1.3.16/src/local_deep_research/research_scheduler/document_scheduler.py +97 -0
  354. local_deep_research-1.3.16/src/local_deep_research/research_scheduler/routes.py +52 -0
  355. local_deep_research-1.3.16/src/local_deep_research/search_system.py +376 -0
  356. local_deep_research-1.3.16/src/local_deep_research/search_system_factory.py +925 -0
  357. local_deep_research-1.3.16/src/local_deep_research/security/__init__.py +67 -0
  358. local_deep_research-1.3.16/src/local_deep_research/security/data_sanitizer.py +157 -0
  359. local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/__init__.py +47 -0
  360. local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/base_verifier.py +96 -0
  361. local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/integrity_manager.py +597 -0
  362. local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/verifiers/__init__.py +5 -0
  363. local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/verifiers/faiss_verifier.py +51 -0
  364. local_deep_research-1.3.16/src/local_deep_research/security/file_upload_validator.py +188 -0
  365. local_deep_research-1.3.16/src/local_deep_research/security/file_write_verifier.py +127 -0
  366. local_deep_research-1.3.16/src/local_deep_research/security/network_utils.py +52 -0
  367. local_deep_research-1.3.16/src/local_deep_research/security/notification_validator.py +251 -0
  368. local_deep_research-1.3.16/src/local_deep_research/security/path_validator.py +391 -0
  369. local_deep_research-1.3.16/src/local_deep_research/security/rate_limiter.py +151 -0
  370. local_deep_research-1.3.16/src/local_deep_research/security/safe_requests.py +227 -0
  371. local_deep_research-1.3.16/src/local_deep_research/security/security_headers.py +303 -0
  372. local_deep_research-1.3.16/src/local_deep_research/security/ssrf_validator.py +236 -0
  373. local_deep_research-1.3.16/src/local_deep_research/security/url_builder.py +208 -0
  374. local_deep_research-1.3.16/src/local_deep_research/security/url_validator.py +458 -0
  375. local_deep_research-1.3.16/src/local_deep_research/settings/README.md +70 -0
  376. local_deep_research-1.3.16/src/local_deep_research/settings/__init__.py +11 -0
  377. local_deep_research-1.3.16/src/local_deep_research/settings/base.py +117 -0
  378. local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/__init__.py +27 -0
  379. local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/bootstrap.py +60 -0
  380. local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/db_config.py +72 -0
  381. local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/news_scheduler.py +18 -0
  382. local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/security.py +23 -0
  383. local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/testing.py +34 -0
  384. local_deep_research-1.3.16/src/local_deep_research/settings/env_registry.py +111 -0
  385. local_deep_research-1.3.16/src/local_deep_research/settings/env_settings.py +347 -0
  386. local_deep_research-1.3.16/src/local_deep_research/settings/logger.py +153 -0
  387. local_deep_research-1.3.16/src/local_deep_research/settings/manager.py +968 -0
  388. local_deep_research-1.3.16/src/local_deep_research/storage/__init__.py +13 -0
  389. local_deep_research-1.3.16/src/local_deep_research/storage/base.py +89 -0
  390. local_deep_research-1.3.16/src/local_deep_research/storage/database.py +145 -0
  391. local_deep_research-1.3.16/src/local_deep_research/storage/database_with_file_backup.py +108 -0
  392. local_deep_research-1.3.16/src/local_deep_research/storage/factory.py +74 -0
  393. local_deep_research-1.3.16/src/local_deep_research/storage/file.py +144 -0
  394. local_deep_research-1.3.16/src/local_deep_research/text_optimization/README.md +86 -0
  395. local_deep_research-1.3.16/src/local_deep_research/text_optimization/__init__.py +17 -0
  396. local_deep_research-1.3.16/src/local_deep_research/text_optimization/citation_formatter.py +1000 -0
  397. local_deep_research-1.3.16/src/local_deep_research/text_processing/__init__.py +11 -0
  398. local_deep_research-1.3.16/src/local_deep_research/text_processing/text_cleaner.py +39 -0
  399. local_deep_research-1.3.16/src/local_deep_research/utilities/__init__.py +0 -0
  400. local_deep_research-1.3.16/src/local_deep_research/utilities/db_utils.py +206 -0
  401. local_deep_research-1.3.16/src/local_deep_research/utilities/enums.py +18 -0
  402. local_deep_research-1.3.16/src/local_deep_research/utilities/es_utils.py +446 -0
  403. local_deep_research-1.3.16/src/local_deep_research/utilities/llm_utils.py +306 -0
  404. local_deep_research-1.3.16/src/local_deep_research/utilities/log_utils.py +305 -0
  405. local_deep_research-1.3.16/src/local_deep_research/utilities/search_cache.py +506 -0
  406. local_deep_research-1.3.16/src/local_deep_research/utilities/search_utilities.py +270 -0
  407. local_deep_research-1.3.16/src/local_deep_research/utilities/setup_utils.py +8 -0
  408. local_deep_research-1.3.16/src/local_deep_research/utilities/thread_context.py +99 -0
  409. local_deep_research-1.3.16/src/local_deep_research/utilities/threading_utils.py +104 -0
  410. local_deep_research-1.3.16/src/local_deep_research/utilities/url_utils.py +62 -0
  411. local_deep_research-1.3.16/src/local_deep_research/web/__init__.py +1 -0
  412. local_deep_research-1.3.16/src/local_deep_research/web/api.py +456 -0
  413. local_deep_research-1.3.16/src/local_deep_research/web/app.py +70 -0
  414. local_deep_research-1.3.16/src/local_deep_research/web/app_factory.py +783 -0
  415. local_deep_research-1.3.16/src/local_deep_research/web/auth/__init__.py +9 -0
  416. local_deep_research-1.3.16/src/local_deep_research/web/auth/cleanup_middleware.py +77 -0
  417. local_deep_research-1.3.16/src/local_deep_research/web/auth/database_middleware.py +78 -0
  418. local_deep_research-1.3.16/src/local_deep_research/web/auth/decorators.py +110 -0
  419. local_deep_research-1.3.16/src/local_deep_research/web/auth/middleware_optimizer.py +65 -0
  420. local_deep_research-1.3.16/src/local_deep_research/web/auth/queue_middleware.py +52 -0
  421. local_deep_research-1.3.16/src/local_deep_research/web/auth/queue_middleware_v2.py +45 -0
  422. local_deep_research-1.3.16/src/local_deep_research/web/auth/routes.py +522 -0
  423. local_deep_research-1.3.16/src/local_deep_research/web/auth/session_cleanup.py +48 -0
  424. local_deep_research-1.3.16/src/local_deep_research/web/auth/session_manager.py +117 -0
  425. local_deep_research-1.3.16/src/local_deep_research/web/database/README.md +70 -0
  426. local_deep_research-1.3.16/src/local_deep_research/web/database/benchmark_schema.py +230 -0
  427. local_deep_research-1.3.16/src/local_deep_research/web/models/database.py +183 -0
  428. local_deep_research-1.3.16/src/local_deep_research/web/models/settings.py +95 -0
  429. local_deep_research-1.3.16/src/local_deep_research/web/queue/__init__.py +6 -0
  430. local_deep_research-1.3.16/src/local_deep_research/web/queue/manager.py +230 -0
  431. local_deep_research-1.3.16/src/local_deep_research/web/queue/processor_v2.py +836 -0
  432. local_deep_research-1.3.16/src/local_deep_research/web/routes/api_routes.py +661 -0
  433. local_deep_research-1.3.16/src/local_deep_research/web/routes/context_overflow_api.py +389 -0
  434. local_deep_research-1.3.16/src/local_deep_research/web/routes/globals.py +22 -0
  435. local_deep_research-1.3.16/src/local_deep_research/web/routes/history_routes.py +447 -0
  436. local_deep_research-1.3.16/src/local_deep_research/web/routes/metrics_routes.py +2206 -0
  437. local_deep_research-1.3.16/src/local_deep_research/web/routes/news_routes.py +242 -0
  438. local_deep_research-1.3.16/src/local_deep_research/web/routes/research_routes.py +1631 -0
  439. local_deep_research-1.3.16/src/local_deep_research/web/routes/research_routes_orm.py +455 -0
  440. local_deep_research-1.3.16/src/local_deep_research/web/routes/route_registry.py +352 -0
  441. local_deep_research-1.3.16/src/local_deep_research/web/routes/settings_routes.py +2315 -0
  442. local_deep_research-1.3.16/src/local_deep_research/web/server_config.py +147 -0
  443. local_deep_research-1.3.16/src/local_deep_research/web/services/pdf_extraction_service.py +152 -0
  444. local_deep_research-1.3.16/src/local_deep_research/web/services/pdf_service.py +204 -0
  445. local_deep_research-1.3.16/src/local_deep_research/web/services/research_service.py +1839 -0
  446. local_deep_research-1.3.16/src/local_deep_research/web/services/research_sources_service.py +280 -0
  447. local_deep_research-1.3.16/src/local_deep_research/web/services/resource_service.py +148 -0
  448. local_deep_research-1.3.16/src/local_deep_research/web/services/settings_manager.py +748 -0
  449. local_deep_research-1.3.16/src/local_deep_research/web/services/settings_service.py +111 -0
  450. local_deep_research-1.3.16/src/local_deep_research/web/services/socket_service.py +262 -0
  451. local_deep_research-1.3.16/src/local_deep_research/web/static/.frontend-built +1 -0
  452. local_deep_research-1.3.16/src/local_deep_research/web/static/css/collection_details.css +1422 -0
  453. local_deep_research-1.3.16/src/local_deep_research/web/static/css/collections.css +747 -0
  454. local_deep_research-1.3.16/src/local_deep_research/web/static/css/components/history-icons.css +113 -0
  455. local_deep_research-1.3.16/src/local_deep_research/web/static/css/custom_dropdown.css +479 -0
  456. local_deep_research-1.3.16/src/local_deep_research/web/static/css/document_details.css +482 -0
  457. local_deep_research-1.3.16/src/local_deep_research/web/static/css/mobile-navigation.css +521 -0
  458. local_deep_research-1.3.16/src/local_deep_research/web/static/css/mobile-responsive.css +543 -0
  459. local_deep_research-1.3.16/src/local_deep_research/web/static/css/news-enhanced.css +434 -0
  460. local_deep_research-1.3.16/src/local_deep_research/web/static/css/news.css +1849 -0
  461. local_deep_research-1.3.16/src/local_deep_research/web/static/css/settings-mobile-fix.css +97 -0
  462. local_deep_research-1.3.16/src/local_deep_research/web/static/css/settings.css +1398 -0
  463. local_deep_research-1.3.16/src/local_deep_research/web/static/css/styles.css +2325 -0
  464. local_deep_research-1.3.16/src/local_deep_research/web/static/css/subscriptions.css +564 -0
  465. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/.vite/manifest.json +57 -0
  466. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/css/app.ocGwz2tF.css +1 -0
  467. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/bootstrap-icons.BeopsB42.woff +0 -0
  468. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/bootstrap-icons.mSm7cUeB.woff2 +0 -0
  469. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/fa-brands-400.BfBXV7Mm.woff2 +0 -0
  470. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/fa-regular-400.BVHPE7da.woff2 +0 -0
  471. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/fa-solid-900.8GirhLYJ.woff2 +0 -0
  472. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/js/app.Dhpzx65r.js +151 -0
  473. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/js/index.es.BXcsbyQc.js +5 -0
  474. local_deep_research-1.3.16/src/local_deep_research/web/static/dist/js/purify.es.Bzr520pe.js +2 -0
  475. local_deep_research-1.3.16/src/local_deep_research/web/static/favicon.png +0 -0
  476. local_deep_research-1.3.16/src/local_deep_research/web/static/js/app.js +84 -0
  477. local_deep_research-1.3.16/src/local_deep_research/web/static/js/collection_create.js +185 -0
  478. local_deep_research-1.3.16/src/local_deep_research/web/static/js/collection_details.js +610 -0
  479. local_deep_research-1.3.16/src/local_deep_research/web/static/js/collection_upload.js +769 -0
  480. local_deep_research-1.3.16/src/local_deep_research/web/static/js/collections_manager.js +228 -0
  481. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/checkbox_handler.js +223 -0
  482. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/custom_dropdown.js +507 -0
  483. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/detail.js +708 -0
  484. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/details.js +1202 -0
  485. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/fallback/formatting.js +122 -0
  486. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/fallback/ui.js +220 -0
  487. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/history.js +544 -0
  488. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/logpanel.js +1069 -0
  489. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/news.js +128 -0
  490. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/progress.js +1131 -0
  491. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/report_issue.js +49 -0
  492. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/research.js +2326 -0
  493. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/results.js +980 -0
  494. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/settings.js +4714 -0
  495. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/settings_sync.js +160 -0
  496. local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/subscription-manager.js +435 -0
  497. local_deep_research-1.3.16/src/local_deep_research/web/static/js/config/urls.js +315 -0
  498. local_deep_research-1.3.16/src/local_deep_research/web/static/js/deletion/confirmation_modal.js +271 -0
  499. local_deep_research-1.3.16/src/local_deep_research/web/static/js/deletion/delete_manager.js +652 -0
  500. local_deep_research-1.3.16/src/local_deep_research/web/static/js/embedding_settings.js +628 -0
  501. local_deep_research-1.3.16/src/local_deep_research/web/static/js/followup.js +367 -0
  502. local_deep_research-1.3.16/src/local_deep_research/web/static/js/main.js +226 -0
  503. local_deep_research-1.3.16/src/local_deep_research/web/static/js/mobile-navigation.js +517 -0
  504. local_deep_research-1.3.16/src/local_deep_research/web/static/js/news-enhancements.js +139 -0
  505. local_deep_research-1.3.16/src/local_deep_research/web/static/js/pages/news.js +3556 -0
  506. local_deep_research-1.3.16/src/local_deep_research/web/static/js/pages/subscriptions.js +757 -0
  507. local_deep_research-1.3.16/src/local_deep_research/web/static/js/pdf_upload_handler.js +569 -0
  508. local_deep_research-1.3.16/src/local_deep_research/web/static/js/research_form.js +358 -0
  509. local_deep_research-1.3.16/src/local_deep_research/web/static/js/security/url-validator.js +145 -0
  510. local_deep_research-1.3.16/src/local_deep_research/web/static/js/security/xss-protection.js +387 -0
  511. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/api.js +254 -0
  512. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/audio.js +31 -0
  513. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/formatting.js +119 -0
  514. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/keyboard.js +202 -0
  515. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/pdf.js +961 -0
  516. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/socket.js +958 -0
  517. local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/ui.js +570 -0
  518. local_deep_research-1.3.16/src/local_deep_research/web/static/js/utils/sanitizer.js +231 -0
  519. local_deep_research-1.3.16/src/local_deep_research/web/static/sounds/README.md +29 -0
  520. local_deep_research-1.3.16/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
  521. local_deep_research-1.3.16/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
  522. local_deep_research-1.3.16/src/local_deep_research/web/static/templates/followup_modal.html +47 -0
  523. local_deep_research-1.3.16/src/local_deep_research/web/templates/auth/change_password.html +248 -0
  524. local_deep_research-1.3.16/src/local_deep_research/web/templates/auth/login.html +408 -0
  525. local_deep_research-1.3.16/src/local_deep_research/web/templates/auth/register.html +534 -0
  526. local_deep_research-1.3.16/src/local_deep_research/web/templates/base.html +148 -0
  527. local_deep_research-1.3.16/src/local_deep_research/web/templates/benchmark/dashboard.html +185 -0
  528. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/custom_dropdown.html +49 -0
  529. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/delete_confirmation_modal.html +66 -0
  530. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/followup_modal.html +42 -0
  531. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/log_panel.html +43 -0
  532. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/settings_form.html +340 -0
  533. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/sidebar.html +127 -0
  534. local_deep_research-1.3.16/src/local_deep_research/web/templates/components/storage_mode_modal.html +253 -0
  535. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/benchmark.html +2912 -0
  536. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/benchmark_results.html +1339 -0
  537. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/benchmark_simple.html +453 -0
  538. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collection_create.html +100 -0
  539. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collection_details.html +199 -0
  540. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collection_upload.html +220 -0
  541. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collections.html +62 -0
  542. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/context_overflow.html +1039 -0
  543. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/cost_analytics.html +1243 -0
  544. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/details.html +603 -0
  545. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/document_chunks.html +192 -0
  546. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/document_details.html +275 -0
  547. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/document_text.html +106 -0
  548. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/download_manager.html +1567 -0
  549. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/embedding_settings.html +559 -0
  550. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/history.html +54 -0
  551. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/library.html +1828 -0
  552. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/link_analytics.html +1318 -0
  553. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/metrics.html +2248 -0
  554. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/news-subscription-form.html +1011 -0
  555. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/news.html +366 -0
  556. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/news_cleaned.html +160 -0
  557. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/progress.html +57 -0
  558. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/research.html +208 -0
  559. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/results.html +125 -0
  560. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/star_reviews.html +802 -0
  561. local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/subscriptions.html +168 -0
  562. local_deep_research-1.3.16/src/local_deep_research/web/templates/settings_dashboard.html +129 -0
  563. local_deep_research-1.3.16/src/local_deep_research/web/utils/__init__.py +0 -0
  564. local_deep_research-1.3.16/src/local_deep_research/web/utils/formatters.py +53 -0
  565. local_deep_research-1.3.16/src/local_deep_research/web/utils/rate_limiter.py +76 -0
  566. local_deep_research-1.3.16/src/local_deep_research/web/utils/templates.py +29 -0
  567. local_deep_research-1.3.16/src/local_deep_research/web/utils/vite_helper.py +101 -0
  568. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/__init__.py +0 -0
  569. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/default_search_engines.py +40 -0
  570. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
  571. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/full_search.py +133 -0
  572. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +533 -0
  573. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/parallel_search_engine.py +758 -0
  574. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +519 -0
  575. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +293 -0
  576. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_collection.py +271 -0
  577. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +162 -0
  578. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +362 -0
  579. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_github.py +923 -0
  580. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +362 -0
  581. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +676 -0
  582. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_library.py +367 -0
  583. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_local.py +1438 -0
  584. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +170 -0
  585. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_nasa_ads.py +360 -0
  586. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_openalex.py +423 -0
  587. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_paperless.py +779 -0
  588. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +1781 -0
  589. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_retriever.py +196 -0
  590. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_scaleserp.py +371 -0
  591. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +554 -0
  592. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +647 -0
  593. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +266 -0
  594. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_serper.py +366 -0
  595. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_tavily.py +320 -0
  596. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +523 -0
  597. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_wikinews.py +527 -0
  598. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +302 -0
  599. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/__init__.py +14 -0
  600. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/__main__.py +9 -0
  601. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/cli.py +209 -0
  602. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/exceptions.py +21 -0
  603. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/llm/__init__.py +11 -0
  604. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/llm/detection.py +110 -0
  605. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/llm/wrapper.py +207 -0
  606. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/tracker.py +761 -0
  607. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/retriever_registry.py +109 -0
  608. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/search_engine_base.py +656 -0
  609. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/search_engine_factory.py +618 -0
  610. local_deep_research-1.3.16/src/local_deep_research/web_search_engines/search_engines_config.py +366 -0
  611. local_deep_research-1.3.16/tests/CI_INTEGRATION.md +81 -0
  612. local_deep_research-1.3.16/tests/README.md +368 -0
  613. local_deep_research-1.3.16/tests/TESTING_COMPARISON.md +148 -0
  614. local_deep_research-1.3.16/tests/TESTING_PROPOSAL.md +294 -0
  615. local_deep_research-1.3.16/tests/TEST_OPTIMIZATION.md +52 -0
  616. local_deep_research-1.3.16/tests/TEST_ORGANIZATION.md +84 -0
  617. local_deep_research-1.3.16/tests/__init__.py +0 -0
  618. local_deep_research-1.3.16/tests/accessibility_tests/README.md +209 -0
  619. local_deep_research-1.3.16/tests/accessibility_tests/__init__.py +1 -0
  620. local_deep_research-1.3.16/tests/accessibility_tests/test_accessibility.js +344 -0
  621. local_deep_research-1.3.16/tests/accessibility_tests/test_accessibility_backend.py +333 -0
  622. local_deep_research-1.3.16/tests/api_tests/README.md +75 -0
  623. local_deep_research-1.3.16/tests/api_tests/__init__.py +1 -0
  624. local_deep_research-1.3.16/tests/api_tests/conftest.py +120 -0
  625. local_deep_research-1.3.16/tests/api_tests/fix_search_engines.py +92 -0
  626. local_deep_research-1.3.16/tests/api_tests/migrate_research_mode.py +114 -0
  627. local_deep_research-1.3.16/tests/api_tests/populate_search_engines.py +217 -0
  628. local_deep_research-1.3.16/tests/api_tests/run_api_tests.py +43 -0
  629. local_deep_research-1.3.16/tests/api_tests/run_basic_api_tests.py +50 -0
  630. local_deep_research-1.3.16/tests/api_tests/test_all_apis.py +254 -0
  631. local_deep_research-1.3.16/tests/api_tests/test_all_endpoints.py +463 -0
  632. local_deep_research-1.3.16/tests/api_tests/test_api_basic.py +103 -0
  633. local_deep_research-1.3.16/tests/api_tests/test_api_pytest.py +137 -0
  634. local_deep_research-1.3.16/tests/api_tests/test_browser_endpoint.py +94 -0
  635. local_deep_research-1.3.16/tests/api_tests/test_collections_api.py +389 -0
  636. local_deep_research-1.3.16/tests/api_tests/test_comprehensive_apis.py +337 -0
  637. local_deep_research-1.3.16/tests/api_tests/test_csrf_header.py +60 -0
  638. local_deep_research-1.3.16/tests/api_tests/test_fresh_session.py +144 -0
  639. local_deep_research-1.3.16/tests/api_tests/test_http_examples.py +144 -0
  640. local_deep_research-1.3.16/tests/api_tests/test_manual_browser_auth.py +95 -0
  641. local_deep_research-1.3.16/tests/api_tests/test_metrics_api.py +148 -0
  642. local_deep_research-1.3.16/tests/api_tests/test_proper_csrf.py +187 -0
  643. local_deep_research-1.3.16/tests/api_tests/test_research_api_debug.py +380 -0
  644. local_deep_research-1.3.16/tests/api_tests/test_research_creation.py +209 -0
  645. local_deep_research-1.3.16/tests/api_tests/test_rest_api.py +216 -0
  646. local_deep_research-1.3.16/tests/api_tests/test_rest_api_simple.py +192 -0
  647. local_deep_research-1.3.16/tests/api_tests/test_search_engines_api.py +158 -0
  648. local_deep_research-1.3.16/tests/api_tests/test_session_persistence.py +147 -0
  649. local_deep_research-1.3.16/tests/api_tests/test_simple_auth.py +125 -0
  650. local_deep_research-1.3.16/tests/api_tests/test_without_csrf.py +108 -0
  651. local_deep_research-1.3.16/tests/api_tests_with_login/README.md +269 -0
  652. local_deep_research-1.3.16/tests/api_tests_with_login/auth_helper.js +185 -0
  653. local_deep_research-1.3.16/tests/api_tests_with_login/base_api_test.js +76 -0
  654. local_deep_research-1.3.16/tests/api_tests_with_login/package.json +26 -0
  655. local_deep_research-1.3.16/tests/api_tests_with_login/puppeteer_config.js +52 -0
  656. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/__init__.py +1 -0
  657. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/conftest.py +91 -0
  658. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_export_formats.py +410 -0
  659. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_model_parameter.py +75 -0
  660. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_research_completion.py +63 -0
  661. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_research_results.py +76 -0
  662. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_research_validation.py +60 -0
  663. local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_start_research.py +80 -0
  664. local_deep_research-1.3.16/tests/api_tests_with_login/run_pytest_tests.py +32 -0
  665. local_deep_research-1.3.16/tests/api_tests_with_login/test_export_minimal.js +118 -0
  666. local_deep_research-1.3.16/tests/api_tests_with_login/test_helpers.js +163 -0
  667. local_deep_research-1.3.16/tests/api_tests_with_login/test_research_api_enhanced.js +222 -0
  668. local_deep_research-1.3.16/tests/api_tests_with_login/test_research_api_pytest.py +281 -0
  669. local_deep_research-1.3.16/tests/auth_tests/__init__.py +1 -0
  670. local_deep_research-1.3.16/tests/auth_tests/conftest.py +43 -0
  671. local_deep_research-1.3.16/tests/auth_tests/run_auth_tests.py +69 -0
  672. local_deep_research-1.3.16/tests/auth_tests/test_auth_decorators.py +198 -0
  673. local_deep_research-1.3.16/tests/auth_tests/test_auth_integration.py +318 -0
  674. local_deep_research-1.3.16/tests/auth_tests/test_auth_rate_limiting.py +325 -0
  675. local_deep_research-1.3.16/tests/auth_tests/test_auth_routes.py +401 -0
  676. local_deep_research-1.3.16/tests/auth_tests/test_encrypted_db.py +236 -0
  677. local_deep_research-1.3.16/tests/auth_tests/test_inmemory_storage.py +223 -0
  678. local_deep_research-1.3.16/tests/auth_tests/test_session_manager.py +172 -0
  679. local_deep_research-1.3.16/tests/citation_bugs/README.md +39 -0
  680. local_deep_research-1.3.16/tests/citation_bugs/__init__.py +1 -0
  681. local_deep_research-1.3.16/tests/citation_bugs/test_citation_edge_cases.py +416 -0
  682. local_deep_research-1.3.16/tests/citation_bugs/test_citation_error_handling.py +387 -0
  683. local_deep_research-1.3.16/tests/citation_bugs/test_citation_export_formats.py +333 -0
  684. local_deep_research-1.3.16/tests/citation_bugs/test_citation_performance.py +359 -0
  685. local_deep_research-1.3.16/tests/citation_bugs/test_multiple_citations_bug.py +223 -0
  686. local_deep_research-1.3.16/tests/citation_handlers/__init__.py +1 -0
  687. local_deep_research-1.3.16/tests/citation_handlers/conftest.py +154 -0
  688. local_deep_research-1.3.16/tests/citation_handlers/test_forced_answer_citation_handler.py +502 -0
  689. local_deep_research-1.3.16/tests/citation_handlers/test_precision_extraction_handler.py +749 -0
  690. local_deep_research-1.3.16/tests/citation_handlers/test_standard_citation_handler.py +517 -0
  691. local_deep_research-1.3.16/tests/config/__init__.py +1 -0
  692. local_deep_research-1.3.16/tests/config/conftest.py +54 -0
  693. local_deep_research-1.3.16/tests/config/test_llm_config.py +555 -0
  694. local_deep_research-1.3.16/tests/config/test_paths.py +136 -0
  695. local_deep_research-1.3.16/tests/config/test_search_config.py +223 -0
  696. local_deep_research-1.3.16/tests/config/test_thread_settings.py +191 -0
  697. local_deep_research-1.3.16/tests/conftest.py +463 -0
  698. local_deep_research-1.3.16/tests/database/__init__.py +1 -0
  699. local_deep_research-1.3.16/tests/database/test_auth_models.py +197 -0
  700. local_deep_research-1.3.16/tests/database/test_benchmark_models.py +454 -0
  701. local_deep_research-1.3.16/tests/database/test_cache_models.py +357 -0
  702. local_deep_research-1.3.16/tests/database/test_database_init.py +493 -0
  703. local_deep_research-1.3.16/tests/database/test_encrypted_database_orm.py +482 -0
  704. local_deep_research-1.3.16/tests/database/test_encryption_threads.py +183 -0
  705. local_deep_research-1.3.16/tests/database/test_metrics_models.py +315 -0
  706. local_deep_research-1.3.16/tests/database/test_model_consolidation.py +71 -0
  707. local_deep_research-1.3.16/tests/database/test_multiuser_db.py +168 -0
  708. local_deep_research-1.3.16/tests/database/test_no_raw_sql.py +201 -0
  709. local_deep_research-1.3.16/tests/database/test_orm_conversions.py +278 -0
  710. local_deep_research-1.3.16/tests/database/test_rate_limiting_models.py +437 -0
  711. local_deep_research-1.3.16/tests/database/test_research_models.py +414 -0
  712. local_deep_research-1.3.16/tests/database/test_settings_models.py +421 -0
  713. local_deep_research-1.3.16/tests/database/test_sqlcipher_missing.py +108 -0
  714. local_deep_research-1.3.16/tests/deletion/__init__.py +1 -0
  715. local_deep_research-1.3.16/tests/deletion/test_cascade_integration.py +543 -0
  716. local_deep_research-1.3.16/tests/deletion/test_collection_deletion.py +484 -0
  717. local_deep_research-1.3.16/tests/deletion/test_document_deletion.py +415 -0
  718. local_deep_research-1.3.16/tests/domain_classifier/__init__.py +1 -0
  719. local_deep_research-1.3.16/tests/domain_classifier/conftest.py +84 -0
  720. local_deep_research-1.3.16/tests/domain_classifier/test_classifier.py +338 -0
  721. local_deep_research-1.3.16/tests/domain_classifier/test_models.py +88 -0
  722. local_deep_research-1.3.16/tests/download_stuff_for_local.py +32 -0
  723. local_deep_research-1.3.16/tests/embeddings/__init__.py +0 -0
  724. local_deep_research-1.3.16/tests/embeddings/conftest.py +56 -0
  725. local_deep_research-1.3.16/tests/embeddings/test_base_provider.py +226 -0
  726. local_deep_research-1.3.16/tests/embeddings/test_ollama_embeddings.py +275 -0
  727. local_deep_research-1.3.16/tests/error_handling/__init__.py +1 -0
  728. local_deep_research-1.3.16/tests/error_handling/conftest.py +56 -0
  729. local_deep_research-1.3.16/tests/error_handling/test_error_reporter.py +351 -0
  730. local_deep_research-1.3.16/tests/error_handling/test_report_generator.py +407 -0
  731. local_deep_research-1.3.16/tests/feature_tests/IMPLEMENTATION_GUIDE_241.md +114 -0
  732. local_deep_research-1.3.16/tests/feature_tests/README.md +26 -0
  733. local_deep_research-1.3.16/tests/feature_tests/__init__.py +5 -0
  734. local_deep_research-1.3.16/tests/feature_tests/test_custom_context.py +144 -0
  735. local_deep_research-1.3.16/tests/fix_tests/README.md +36 -0
  736. local_deep_research-1.3.16/tests/fix_tests/test_duplicate_links_fix.py +122 -0
  737. local_deep_research-1.3.16/tests/fix_tests/test_milestone_logging_fix.py +216 -0
  738. local_deep_research-1.3.16/tests/fixtures/README.md +53 -0
  739. local_deep_research-1.3.16/tests/fixtures/search_engine_mocks.py +251 -0
  740. local_deep_research-1.3.16/tests/fuzz/__init__.py +1 -0
  741. local_deep_research-1.3.16/tests/fuzz/conftest.py +31 -0
  742. local_deep_research-1.3.16/tests/fuzz/test_fuzz_security.py +630 -0
  743. local_deep_research-1.3.16/tests/fuzz/test_fuzz_utilities.py +111 -0
  744. local_deep_research-1.3.16/tests/health_check/README.md +271 -0
  745. local_deep_research-1.3.16/tests/health_check/run_quick_health_check.py +88 -0
  746. local_deep_research-1.3.16/tests/health_check/test_endpoints_health.py +125 -0
  747. local_deep_research-1.3.16/tests/health_check/test_endpoints_health.sh +119 -0
  748. local_deep_research-1.3.16/tests/infrastructure_tests/README.md +58 -0
  749. local_deep_research-1.3.16/tests/infrastructure_tests/__init__.py +11 -0
  750. local_deep_research-1.3.16/tests/infrastructure_tests/package.json +23 -0
  751. local_deep_research-1.3.16/tests/infrastructure_tests/test_route_registry.py +322 -0
  752. local_deep_research-1.3.16/tests/infrastructure_tests/test_urls.test.js +242 -0
  753. local_deep_research-1.3.16/tests/infrastructure_tests/test_urls_js.py +363 -0
  754. local_deep_research-1.3.16/tests/langchain_integration/README.md +183 -0
  755. local_deep_research-1.3.16/tests/langchain_integration/test_combined_llm_retriever.py +523 -0
  756. local_deep_research-1.3.16/tests/langchain_integration/test_custom_langchain_llm.py +354 -0
  757. local_deep_research-1.3.16/tests/langchain_integration/test_custom_langchain_retriever.py +468 -0
  758. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_api_debug.js +211 -0
  759. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_basic_functionality.js +167 -0
  760. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_clean_content.js +65 -0
  761. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_enhanced.js +114 -0
  762. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_error_debug.js +97 -0
  763. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_features.js +149 -0
  764. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_final.js +240 -0
  765. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_final_check.js +133 -0
  766. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_load_sequence.js +103 -0
  767. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_no_cache.js +80 -0
  768. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_render_debug.js +137 -0
  769. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_screenshots.js +114 -0
  770. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_status.js +68 -0
  771. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_ui_debug.js +129 -0
  772. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_visual_final.js +58 -0
  773. local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_with_data.js +67 -0
  774. local_deep_research-1.3.16/tests/llm/__init__.py +1 -0
  775. local_deep_research-1.3.16/tests/llm/test_llm_registry.py +195 -0
  776. local_deep_research-1.3.16/tests/llm_providers/__init__.py +0 -0
  777. local_deep_research-1.3.16/tests/llm_providers/conftest.py +130 -0
  778. local_deep_research-1.3.16/tests/llm_providers/test_auto_discovery.py +305 -0
  779. local_deep_research-1.3.16/tests/llm_providers/test_custom_endpoint_ci_integration.py +145 -0
  780. local_deep_research-1.3.16/tests/llm_providers/test_custom_openai_endpoint.py +318 -0
  781. local_deep_research-1.3.16/tests/llm_providers/test_ollama_provider.py +373 -0
  782. local_deep_research-1.3.16/tests/llm_providers/test_openai_base.py +418 -0
  783. local_deep_research-1.3.16/tests/metrics/__init__.py +1 -0
  784. local_deep_research-1.3.16/tests/metrics/conftest.py +75 -0
  785. local_deep_research-1.3.16/tests/metrics/test_cost_calculator.py +380 -0
  786. local_deep_research-1.3.16/tests/metrics/test_database.py +206 -0
  787. local_deep_research-1.3.16/tests/metrics/test_pricing_cache.py +255 -0
  788. local_deep_research-1.3.16/tests/metrics/test_pricing_fetcher.py +290 -0
  789. local_deep_research-1.3.16/tests/metrics/test_query_utils.py +117 -0
  790. local_deep_research-1.3.16/tests/metrics/test_search_tracker.py +418 -0
  791. local_deep_research-1.3.16/tests/metrics/test_token_counter.py +733 -0
  792. local_deep_research-1.3.16/tests/mock_fixtures.py +248 -0
  793. local_deep_research-1.3.16/tests/mock_llm_config.py +58 -0
  794. local_deep_research-1.3.16/tests/mock_modules.py +186 -0
  795. local_deep_research-1.3.16/tests/news/test_api_exceptions.py +168 -0
  796. local_deep_research-1.3.16/tests/news/test_exceptions.py +196 -0
  797. local_deep_research-1.3.16/tests/notifications/__init__.py +0 -0
  798. local_deep_research-1.3.16/tests/notifications/test_manager.py +773 -0
  799. local_deep_research-1.3.16/tests/notifications/test_service.py +302 -0
  800. local_deep_research-1.3.16/tests/notifications/test_url_builder.py +298 -0
  801. local_deep_research-1.3.16/tests/package.json +11 -0
  802. local_deep_research-1.3.16/tests/pdf_tests/__init__.py +1 -0
  803. local_deep_research-1.3.16/tests/pdf_tests/test_file_validator.py +287 -0
  804. local_deep_research-1.3.16/tests/pdf_tests/test_pdf_upload.py +243 -0
  805. local_deep_research-1.3.16/tests/programmatic_access/test_ollama_integration.py +318 -0
  806. local_deep_research-1.3.16/tests/programmatic_access/test_programmatic_access.py +247 -0
  807. local_deep_research-1.3.16/tests/puppeteer/package.json +19 -0
  808. local_deep_research-1.3.16/tests/puppeteer/test_openai_api_key_ui.js +312 -0
  809. local_deep_research-1.3.16/tests/rate_limiting/test_rate_limiting.py +391 -0
  810. local_deep_research-1.3.16/tests/research_library/__init__.py +0 -0
  811. local_deep_research-1.3.16/tests/research_library/conftest.py +406 -0
  812. local_deep_research-1.3.16/tests/research_library/deletion/__init__.py +1 -0
  813. local_deep_research-1.3.16/tests/research_library/deletion/services/__init__.py +1 -0
  814. local_deep_research-1.3.16/tests/research_library/deletion/services/test_bulk_deletion.py +222 -0
  815. local_deep_research-1.3.16/tests/research_library/deletion/services/test_collection_deletion.py +259 -0
  816. local_deep_research-1.3.16/tests/research_library/deletion/services/test_document_deletion.py +317 -0
  817. local_deep_research-1.3.16/tests/research_library/deletion/utils/__init__.py +1 -0
  818. local_deep_research-1.3.16/tests/research_library/deletion/utils/test_cascade_helper.py +330 -0
  819. local_deep_research-1.3.16/tests/research_library/downloaders/__init__.py +0 -0
  820. local_deep_research-1.3.16/tests/research_library/downloaders/test_arxiv_downloader.py +328 -0
  821. local_deep_research-1.3.16/tests/research_library/downloaders/test_base_downloader.py +314 -0
  822. local_deep_research-1.3.16/tests/research_library/downloaders/test_biorxiv_downloader.py +235 -0
  823. local_deep_research-1.3.16/tests/research_library/downloaders/test_direct_pdf_downloader.py +144 -0
  824. local_deep_research-1.3.16/tests/research_library/downloaders/test_generic_downloader.py +420 -0
  825. local_deep_research-1.3.16/tests/research_library/downloaders/test_openalex_downloader.py +197 -0
  826. local_deep_research-1.3.16/tests/research_library/downloaders/test_pubmed_downloader.py +480 -0
  827. local_deep_research-1.3.16/tests/research_library/downloaders/test_semantic_scholar_downloader.py +219 -0
  828. local_deep_research-1.3.16/tests/research_library/services/__init__.py +0 -0
  829. local_deep_research-1.3.16/tests/research_library/services/test_download_service.py +632 -0
  830. local_deep_research-1.3.16/tests/research_library/services/test_library_rag_service.py +759 -0
  831. local_deep_research-1.3.16/tests/research_library/services/test_library_service.py +426 -0
  832. local_deep_research-1.3.16/tests/research_library/services/test_pdf_storage_manager.py +373 -0
  833. local_deep_research-1.3.16/tests/research_scheduler/__init__.py +1 -0
  834. local_deep_research-1.3.16/tests/research_scheduler/conftest.py +36 -0
  835. local_deep_research-1.3.16/tests/research_scheduler/test_document_scheduler.py +139 -0
  836. local_deep_research-1.3.16/tests/research_scheduler/test_routes.py +40 -0
  837. local_deep_research-1.3.16/tests/retriever_integration/__init__.py +1 -0
  838. local_deep_research-1.3.16/tests/retriever_integration/conftest.py +92 -0
  839. local_deep_research-1.3.16/tests/retriever_integration/test_api_integration.py +262 -0
  840. local_deep_research-1.3.16/tests/retriever_integration/test_e2e_basic.py +170 -0
  841. local_deep_research-1.3.16/tests/retriever_integration/test_factory_integration.py +117 -0
  842. local_deep_research-1.3.16/tests/retriever_integration/test_retriever_registry.py +127 -0
  843. local_deep_research-1.3.16/tests/retriever_integration/test_search_engine_retriever.py +205 -0
  844. local_deep_research-1.3.16/tests/run_all_tests.py +628 -0
  845. local_deep_research-1.3.16/tests/run_followup_tests.sh +118 -0
  846. local_deep_research-1.3.16/tests/search_engines/__init__.py +0 -0
  847. local_deep_research-1.3.16/tests/search_engines/conftest.py +101 -0
  848. local_deep_research-1.3.16/tests/search_engines/test_base_search_engine.py +232 -0
  849. local_deep_research-1.3.16/tests/search_engines/test_rate_limiter.py +244 -0
  850. local_deep_research-1.3.16/tests/search_engines/test_wikipedia_search.py +205 -0
  851. local_deep_research-1.3.16/tests/searxng/__init__.py +1 -0
  852. local_deep_research-1.3.16/tests/searxng/test_searxng.py +147 -0
  853. local_deep_research-1.3.16/tests/security/__init__.py +0 -0
  854. local_deep_research-1.3.16/tests/security/conftest.py +69 -0
  855. local_deep_research-1.3.16/tests/security/test_api_security.py +421 -0
  856. local_deep_research-1.3.16/tests/security/test_auth_security.py +371 -0
  857. local_deep_research-1.3.16/tests/security/test_cookie_security.py +412 -0
  858. local_deep_research-1.3.16/tests/security/test_csrf_protection.py +323 -0
  859. local_deep_research-1.3.16/tests/security/test_data_sanitizer.py +307 -0
  860. local_deep_research-1.3.16/tests/security/test_file_upload_validator.py +407 -0
  861. local_deep_research-1.3.16/tests/security/test_input_validation.py +492 -0
  862. local_deep_research-1.3.16/tests/security/test_path_validator.py +428 -0
  863. local_deep_research-1.3.16/tests/security/test_safe_requests_hook.py +225 -0
  864. local_deep_research-1.3.16/tests/security/test_security_headers.py +145 -0
  865. local_deep_research-1.3.16/tests/security/test_sql_injection.py +285 -0
  866. local_deep_research-1.3.16/tests/security/test_ssrf_validator.py +365 -0
  867. local_deep_research-1.3.16/tests/security/test_url_validator.py +485 -0
  868. local_deep_research-1.3.16/tests/security/test_xss_prevention.py +333 -0
  869. local_deep_research-1.3.16/tests/settings/env_vars/test_env_auto_generation.py +188 -0
  870. local_deep_research-1.3.16/tests/settings/env_vars/test_env_var_usage.py +343 -0
  871. local_deep_research-1.3.16/tests/settings/test_boolean_parsing.py +304 -0
  872. local_deep_research-1.3.16/tests/settings/test_checkbox_save.py +244 -0
  873. local_deep_research-1.3.16/tests/settings/test_env_settings.py +316 -0
  874. local_deep_research-1.3.16/tests/storage/__init__.py +1 -0
  875. local_deep_research-1.3.16/tests/storage/conftest.py +54 -0
  876. local_deep_research-1.3.16/tests/storage/test_composite_storage.py +222 -0
  877. local_deep_research-1.3.16/tests/storage/test_database_storage.py +268 -0
  878. local_deep_research-1.3.16/tests/storage/test_factory.py +134 -0
  879. local_deep_research-1.3.16/tests/storage/test_file_storage.py +283 -0
  880. local_deep_research-1.3.16/tests/strategies/__init__.py +1 -0
  881. local_deep_research-1.3.16/tests/strategies/compare_strategies_visual.py +382 -0
  882. local_deep_research-1.3.16/tests/strategies/test_adaptive_strategy.py +137 -0
  883. local_deep_research-1.3.16/tests/strategies/test_iterative_reasoning.py +230 -0
  884. local_deep_research-1.3.16/tests/strategies/test_search_system_iterative.py +104 -0
  885. local_deep_research-1.3.16/tests/test_api_key_configuration.py +468 -0
  886. local_deep_research-1.3.16/tests/test_api_key_settings.js +268 -0
  887. local_deep_research-1.3.16/tests/test_api_settings.py +224 -0
  888. local_deep_research-1.3.16/tests/test_api_settings_advanced.py +462 -0
  889. local_deep_research-1.3.16/tests/test_api_settings_e2e.py +417 -0
  890. local_deep_research-1.3.16/tests/test_api_settings_validation.py +314 -0
  891. local_deep_research-1.3.16/tests/test_ci_config.py +19 -0
  892. local_deep_research-1.3.16/tests/test_citation_handler.py +194 -0
  893. local_deep_research-1.3.16/tests/test_context_overflow_detection.py +304 -0
  894. local_deep_research-1.3.16/tests/test_database_initialization.py +166 -0
  895. local_deep_research-1.3.16/tests/test_followup_api.py +411 -0
  896. local_deep_research-1.3.16/tests/test_google_pse.py +153 -0
  897. local_deep_research-1.3.16/tests/test_link_analytics.py +418 -0
  898. local_deep_research-1.3.16/tests/test_llm/__init__.py +1 -0
  899. local_deep_research-1.3.16/tests/test_llm/run_llm_tests.sh +24 -0
  900. local_deep_research-1.3.16/tests/test_llm/test_api_llm_integration.py +314 -0
  901. local_deep_research-1.3.16/tests/test_llm/test_llm_benchmarks.py +259 -0
  902. local_deep_research-1.3.16/tests/test_llm/test_llm_edge_cases.py +432 -0
  903. local_deep_research-1.3.16/tests/test_llm/test_llm_integration.py +276 -0
  904. local_deep_research-1.3.16/tests/test_llm/test_llm_registry.py +203 -0
  905. local_deep_research-1.3.16/tests/test_llm_provider_integration.py +463 -0
  906. local_deep_research-1.3.16/tests/test_llm_rate_limiting.py +225 -0
  907. local_deep_research-1.3.16/tests/test_openai_api_key_e2e.py +258 -0
  908. local_deep_research-1.3.16/tests/test_openai_api_key_usage.py +302 -0
  909. local_deep_research-1.3.16/tests/test_programmatic_custom_llm_retriever.py +436 -0
  910. local_deep_research-1.3.16/tests/test_report_generator.py +307 -0
  911. local_deep_research-1.3.16/tests/test_search_cache_stampede.py +289 -0
  912. local_deep_research-1.3.16/tests/test_search_engines_enhanced.py +399 -0
  913. local_deep_research-1.3.16/tests/test_search_system.py +420 -0
  914. local_deep_research-1.3.16/tests/test_settings_manager.py +385 -0
  915. local_deep_research-1.3.16/tests/test_url_utils.py +132 -0
  916. local_deep_research-1.3.16/tests/test_url_utils_simple.py +44 -0
  917. local_deep_research-1.3.16/tests/test_utils.py +212 -0
  918. local_deep_research-1.3.16/tests/test_wikipedia_url_security.py +165 -0
  919. local_deep_research-1.3.16/tests/text_optimization/__init__.py +1 -0
  920. local_deep_research-1.3.16/tests/text_optimization/test_citation_formatter.py +767 -0
  921. local_deep_research-1.3.16/tests/text_optimization/test_integration.py +236 -0
  922. local_deep_research-1.3.16/tests/text_processing/__init__.py +1 -0
  923. local_deep_research-1.3.16/tests/text_processing/test_text_cleaner.py +77 -0
  924. local_deep_research-1.3.16/tests/ui_tests/DEBUG_metrics_thread_fix.js +106 -0
  925. local_deep_research-1.3.16/tests/ui_tests/DEBUG_mobile_debug.js +100 -0
  926. local_deep_research-1.3.16/tests/ui_tests/DEBUG_news_features_fixed.js +124 -0
  927. local_deep_research-1.3.16/tests/ui_tests/DEBUG_research_submit_debug.js +356 -0
  928. local_deep_research-1.3.16/tests/ui_tests/DEBUG_settings_mobile_fix.js +109 -0
  929. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_ajax_research_submission.js +156 -0
  930. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_complete_workflow.js +171 -0
  931. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_fixed_research.js +116 -0
  932. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_followup_simple.js +161 -0
  933. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_full_research_completion.js +225 -0
  934. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_multiple_research.js +290 -0
  935. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_fixed_model.js +190 -0
  936. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_submission.js +148 -0
  937. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_with_model.js +245 -0
  938. local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_working_config.js +214 -0
  939. local_deep_research-1.3.16/tests/ui_tests/README.md +230 -0
  940. local_deep_research-1.3.16/tests/ui_tests/UI_TEST_SUMMARY.md +66 -0
  941. local_deep_research-1.3.16/tests/ui_tests/__init__.py +1 -0
  942. local_deep_research-1.3.16/tests/ui_tests/auth_helper.js +573 -0
  943. local_deep_research-1.3.16/tests/ui_tests/browser_config.js +54 -0
  944. local_deep_research-1.3.16/tests/ui_tests/check_api_directly.js +110 -0
  945. local_deep_research-1.3.16/tests/ui_tests/check_available_models.js +81 -0
  946. local_deep_research-1.3.16/tests/ui_tests/check_chart_data.js +96 -0
  947. local_deep_research-1.3.16/tests/ui_tests/check_test_status.js +126 -0
  948. local_deep_research-1.3.16/tests/ui_tests/check_tests.js +98 -0
  949. local_deep_research-1.3.16/tests/ui_tests/library/test_collections_page.js +229 -0
  950. local_deep_research-1.3.16/tests/ui_tests/library/test_library_documents.js +283 -0
  951. local_deep_research-1.3.16/tests/ui_tests/mobile/README.md +40 -0
  952. local_deep_research-1.3.16/tests/ui_tests/mobile/test_layout_bugs_ci.js +793 -0
  953. local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_all_pages_ci.js +338 -0
  954. local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_diagnostic.js +468 -0
  955. local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_nav_all_pages.js +410 -0
  956. local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_navigation_authenticated.js +97 -0
  957. local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_navigation_ci.js +599 -0
  958. local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_ui_comprehensive.js +386 -0
  959. local_deep_research-1.3.16/tests/ui_tests/model_helper.js +104 -0
  960. local_deep_research-1.3.16/tests/ui_tests/news/test_scheduler_activity.js +155 -0
  961. local_deep_research-1.3.16/tests/ui_tests/news/test_scheduler_simple.js +49 -0
  962. local_deep_research-1.3.16/tests/ui_tests/news/test_scheduler_simple_standalone.js +54 -0
  963. local_deep_research-1.3.16/tests/ui_tests/package-lock.json +1128 -0
  964. local_deep_research-1.3.16/tests/ui_tests/package.json +41 -0
  965. local_deep_research-1.3.16/tests/ui_tests/puppeteer_config.js +170 -0
  966. local_deep_research-1.3.16/tests/ui_tests/run_all_tests.js +179 -0
  967. local_deep_research-1.3.16/tests/ui_tests/run_all_tests_comprehensive.js +334 -0
  968. local_deep_research-1.3.16/tests/ui_tests/run_all_ui_tests.js +314 -0
  969. local_deep_research-1.3.16/tests/ui_tests/run_api_key_test.sh +53 -0
  970. local_deep_research-1.3.16/tests/ui_tests/run_core_tests.js +179 -0
  971. local_deep_research-1.3.16/tests/ui_tests/run_metrics_tests.js +61 -0
  972. local_deep_research-1.3.16/tests/ui_tests/test-xss-protection.html +56 -0
  973. local_deep_research-1.3.16/tests/ui_tests/test_analysis_updated.md +196 -0
  974. local_deep_research-1.3.16/tests/ui_tests/test_api_key_comprehensive.js +507 -0
  975. local_deep_research-1.3.16/tests/ui_tests/test_api_key_enter_save.js +268 -0
  976. local_deep_research-1.3.16/tests/ui_tests/test_api_key_integrated.js +340 -0
  977. local_deep_research-1.3.16/tests/ui_tests/test_api_key_settings.js +370 -0
  978. local_deep_research-1.3.16/tests/ui_tests/test_api_key_simple_verify.js +131 -0
  979. local_deep_research-1.3.16/tests/ui_tests/test_api_key_via_api.js +185 -0
  980. local_deep_research-1.3.16/tests/ui_tests/test_auth_flow.js +160 -0
  981. local_deep_research-1.3.16/tests/ui_tests/test_autocomplete_selection.js +349 -0
  982. local_deep_research-1.3.16/tests/ui_tests/test_benchmark_settings.js +578 -0
  983. local_deep_research-1.3.16/tests/ui_tests/test_charts.js +87 -0
  984. local_deep_research-1.3.16/tests/ui_tests/test_check_research_thread.py +44 -0
  985. local_deep_research-1.3.16/tests/ui_tests/test_check_search_engines.js +123 -0
  986. local_deep_research-1.3.16/tests/ui_tests/test_check_user_database.js +116 -0
  987. local_deep_research-1.3.16/tests/ui_tests/test_checkbox_settings.js +640 -0
  988. local_deep_research-1.3.16/tests/ui_tests/test_concurrent_limit.js +160 -0
  989. local_deep_research-1.3.16/tests/ui_tests/test_context_overflow.js +279 -0
  990. local_deep_research-1.3.16/tests/ui_tests/test_context_overflow_standalone.js +280 -0
  991. local_deep_research-1.3.16/tests/ui_tests/test_cost_analytics.js +201 -0
  992. local_deep_research-1.3.16/tests/ui_tests/test_direct_mode.js +201 -0
  993. local_deep_research-1.3.16/tests/ui_tests/test_direct_uuid_insert.py +126 -0
  994. local_deep_research-1.3.16/tests/ui_tests/test_export_functionality.js +377 -0
  995. local_deep_research-1.3.16/tests/ui_tests/test_followup_api.js +62 -0
  996. local_deep_research-1.3.16/tests/ui_tests/test_followup_research.js +396 -0
  997. local_deep_research-1.3.16/tests/ui_tests/test_full_navigation.js +183 -0
  998. local_deep_research-1.3.16/tests/ui_tests/test_history_page.js +237 -0
  999. local_deep_research-1.3.16/tests/ui_tests/test_metrics.js +70 -0
  1000. local_deep_research-1.3.16/tests/ui_tests/test_metrics_browser.js +96 -0
  1001. local_deep_research-1.3.16/tests/ui_tests/test_metrics_chart.js +12 -0
  1002. local_deep_research-1.3.16/tests/ui_tests/test_metrics_charts.js +85 -0
  1003. local_deep_research-1.3.16/tests/ui_tests/test_metrics_dashboard.js +410 -0
  1004. local_deep_research-1.3.16/tests/ui_tests/test_metrics_display.js +132 -0
  1005. local_deep_research-1.3.16/tests/ui_tests/test_metrics_full_flow.js +386 -0
  1006. local_deep_research-1.3.16/tests/ui_tests/test_metrics_only.js +97 -0
  1007. local_deep_research-1.3.16/tests/ui_tests/test_metrics_screenshot.js +83 -0
  1008. local_deep_research-1.3.16/tests/ui_tests/test_metrics_subpages.js +69 -0
  1009. local_deep_research-1.3.16/tests/ui_tests/test_metrics_verification.js +309 -0
  1010. local_deep_research-1.3.16/tests/ui_tests/test_metrics_visibility.js +212 -0
  1011. local_deep_research-1.3.16/tests/ui_tests/test_metrics_with_llm.js +310 -0
  1012. local_deep_research-1.3.16/tests/ui_tests/test_mixed_id_handling.py +130 -0
  1013. local_deep_research-1.3.16/tests/ui_tests/test_mobile_metrics.js +88 -0
  1014. local_deep_research-1.3.16/tests/ui_tests/test_network_requests.js +93 -0
  1015. local_deep_research-1.3.16/tests/ui_tests/test_news_breaking_table.js +305 -0
  1016. local_deep_research-1.3.16/tests/ui_tests/test_news_js_loads.js +97 -0
  1017. local_deep_research-1.3.16/tests/ui_tests/test_news_subscription_form.js +254 -0
  1018. local_deep_research-1.3.16/tests/ui_tests/test_pages_browser.js +310 -0
  1019. local_deep_research-1.3.16/tests/ui_tests/test_queue_simple.js +172 -0
  1020. local_deep_research-1.3.16/tests/ui_tests/test_quick_screenshot.js +39 -0
  1021. local_deep_research-1.3.16/tests/ui_tests/test_rate_limiting_chart.js +88 -0
  1022. local_deep_research-1.3.16/tests/ui_tests/test_rate_limiting_settings.js +212 -0
  1023. local_deep_research-1.3.16/tests/ui_tests/test_research_api.js +192 -0
  1024. local_deep_research-1.3.16/tests/ui_tests/test_research_cancellation.js +305 -0
  1025. local_deep_research-1.3.16/tests/ui_tests/test_research_details.js +342 -0
  1026. local_deep_research-1.3.16/tests/ui_tests/test_research_diagnosis.js +337 -0
  1027. local_deep_research-1.3.16/tests/ui_tests/test_research_diagnostic.js +81 -0
  1028. local_deep_research-1.3.16/tests/ui_tests/test_research_form.js +174 -0
  1029. local_deep_research-1.3.16/tests/ui_tests/test_research_results.js +175 -0
  1030. local_deep_research-1.3.16/tests/ui_tests/test_research_search_analysis.js +358 -0
  1031. local_deep_research-1.3.16/tests/ui_tests/test_research_searxng.js +126 -0
  1032. local_deep_research-1.3.16/tests/ui_tests/test_research_simple.js +183 -0
  1033. local_deep_research-1.3.16/tests/ui_tests/test_research_status.js +118 -0
  1034. local_deep_research-1.3.16/tests/ui_tests/test_research_submit.js +147 -0
  1035. local_deep_research-1.3.16/tests/ui_tests/test_research_verify.js +185 -0
  1036. local_deep_research-1.3.16/tests/ui_tests/test_responsive_ui_comprehensive.js +473 -0
  1037. local_deep_research-1.3.16/tests/ui_tests/test_settings_errors.js +108 -0
  1038. local_deep_research-1.3.16/tests/ui_tests/test_settings_exploration.js +160 -0
  1039. local_deep_research-1.3.16/tests/ui_tests/test_settings_page.js +66 -0
  1040. local_deep_research-1.3.16/tests/ui_tests/test_settings_persistence.js +355 -0
  1041. local_deep_research-1.3.16/tests/ui_tests/test_settings_save.js +101 -0
  1042. local_deep_research-1.3.16/tests/ui_tests/test_settings_simple.js +161 -0
  1043. local_deep_research-1.3.16/tests/ui_tests/test_simple_auth.js +103 -0
  1044. local_deep_research-1.3.16/tests/ui_tests/test_simple_cost.js +152 -0
  1045. local_deep_research-1.3.16/tests/ui_tests/test_simple_metrics.js +84 -0
  1046. local_deep_research-1.3.16/tests/ui_tests/test_simple_research_api.py +114 -0
  1047. local_deep_research-1.3.16/tests/ui_tests/test_star_reviews.js +157 -0
  1048. local_deep_research-1.3.16/tests/ui_tests/test_suite.js +122 -0
  1049. local_deep_research-1.3.16/tests/ui_tests/test_toast_notifications.js +344 -0
  1050. local_deep_research-1.3.16/tests/ui_tests/test_trace_error.py +73 -0
  1051. local_deep_research-1.3.16/tests/ui_tests/test_ui_screenshots.js +76 -0
  1052. local_deep_research-1.3.16/tests/ui_tests/test_uuid_fresh_db.py +220 -0
  1053. local_deep_research-1.3.16/tests/ui_tests/test_uuid_research.py +236 -0
  1054. local_deep_research-1.3.16/tests/ui_tests/tests/news/test_subscription_form.js +285 -0
  1055. local_deep_research-1.3.16/tests/utilities/__init__.py +1 -0
  1056. local_deep_research-1.3.16/tests/utilities/conftest.py +110 -0
  1057. local_deep_research-1.3.16/tests/utilities/test_db_utils.py +381 -0
  1058. local_deep_research-1.3.16/tests/utilities/test_enums.py +151 -0
  1059. local_deep_research-1.3.16/tests/utilities/test_es_utils.py +576 -0
  1060. local_deep_research-1.3.16/tests/utilities/test_llm_utils.py +661 -0
  1061. local_deep_research-1.3.16/tests/utilities/test_log_utils.py +623 -0
  1062. local_deep_research-1.3.16/tests/utilities/test_search_cache.py +644 -0
  1063. local_deep_research-1.3.16/tests/utilities/test_search_utilities.py +619 -0
  1064. local_deep_research-1.3.16/tests/utilities/test_thread_context.py +333 -0
  1065. local_deep_research-1.3.16/tests/utilities/test_threading_utils.py +422 -0
  1066. local_deep_research-1.3.16/tests/utilities/test_url_utils.py +177 -0
  1067. local_deep_research-1.3.16/tests/web_services/__init__.py +1 -0
  1068. local_deep_research-1.3.16/tests/web_services/conftest.py +206 -0
  1069. local_deep_research-1.3.16/tests/web_services/test_pdf_extraction_service.py +488 -0
  1070. local_deep_research-1.3.16/tests/web_services/test_pdf_service.py +309 -0
  1071. local_deep_research-1.3.16/tests/web_services/test_research_sources_service.py +809 -0
  1072. local_deep_research-1.3.16/tests/web_services/test_resource_service.py +503 -0
  1073. local_deep_research-1.3.16/tests/web_services/test_socket_service.py +727 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 LearningCircuit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,614 @@
1
+ Metadata-Version: 2.1
2
+ Name: local-deep-research
3
+ Version: 1.3.16
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>, djpetti <djpetti@gmail.com>
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
+ Classifier: Programming Language :: Python :: 3
29
+ Classifier: License :: OSI Approved :: MIT License
30
+ Classifier: Operating System :: OS Independent
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.15,>=3.11
34
+ Requires-Dist: langchain~=1.1
35
+ Requires-Dist: langchain-community~=0.4
36
+ Requires-Dist: langchain-core~=1.1
37
+ Requires-Dist: langchain-ollama~=1.0
38
+ Requires-Dist: langchain-openai~=1.1
39
+ Requires-Dist: langchain-anthropic~=1.2
40
+ Requires-Dist: duckduckgo-search~=8.1
41
+ Requires-Dist: python-dateutil~=2.9
42
+ Requires-Dist: typing-extensions~=4.15
43
+ Requires-Dist: justext~=3.0
44
+ Requires-Dist: playwright~=1.56
45
+ Requires-Dist: beautifulsoup4~=4.14
46
+ Requires-Dist: flask~=3.1
47
+ Requires-Dist: flask-cors~=6.0
48
+ Requires-Dist: flask-socketio~=5.5
49
+ Requires-Dist: sqlalchemy~=2.0
50
+ Requires-Dist: sqlalchemy-utc~=0.14
51
+ Requires-Dist: wikipedia~=1.4
52
+ Requires-Dist: arxiv~=2.3
53
+ Requires-Dist: pypdf~=6.4
54
+ Requires-Dist: sentence-transformers~=5.1
55
+ Requires-Dist: faiss-cpu~=1.13
56
+ Requires-Dist: pydantic~=2.12
57
+ Requires-Dist: pydantic-settings~=2.12
58
+ Requires-Dist: toml~=0.10
59
+ Requires-Dist: platformdirs~=4.5
60
+ Requires-Dist: dynaconf~=3.2
61
+ Requires-Dist: requests~=2.32
62
+ Requires-Dist: tiktoken~=0.12
63
+ Requires-Dist: xmltodict~=1.0
64
+ Requires-Dist: lxml~=6.0
65
+ Requires-Dist: pdfplumber~=0.11
66
+ Requires-Dist: unstructured~=0.18
67
+ Requires-Dist: google-search-results~=2.4
68
+ Requires-Dist: importlib-resources~=6.5
69
+ Requires-Dist: setuptools~=80.9
70
+ Requires-Dist: flask-wtf~=1.2
71
+ Requires-Dist: optuna~=4.6
72
+ Requires-Dist: elasticsearch~=9.2
73
+ Requires-Dist: methodtools~=0.4
74
+ Requires-Dist: loguru~=0.7
75
+ Requires-Dist: cachetools~=6.2
76
+ Requires-Dist: matplotlib~=3.10
77
+ Requires-Dist: pandas~=2.3
78
+ Requires-Dist: plotly~=6.5
79
+ Requires-Dist: kaleido~=1.2
80
+ Requires-Dist: aiohttp~=3.13
81
+ Requires-Dist: tenacity~=9.1
82
+ Requires-Dist: apscheduler~=3.11
83
+ Requires-Dist: rich~=14.2
84
+ Requires-Dist: click~=8.3
85
+ Requires-Dist: flask-login~=0.6
86
+ Requires-Dist: flask-limiter~=4.1
87
+ Requires-Dist: sqlcipher3-binary~=0.5; sys_platform == "linux" and platform_machine == "x86_64"
88
+ Requires-Dist: sqlcipher3~=0.5; (platform_machine == "aarch64" or platform_machine == "arm64") and sys_platform == "linux"
89
+ Requires-Dist: sqlcipher3~=0.5; sys_platform != "linux"
90
+ Requires-Dist: lxml-html-clean~=0.4
91
+ Requires-Dist: weasyprint~=67.0
92
+ Requires-Dist: apprise~=1.9
93
+ Requires-Dist: markdown~=3.10
94
+ Requires-Dist: datasets~=4.4
95
+ Requires-Dist: pyarrow~=22.0
96
+ Requires-Dist: langchain-experimental~=0.4
97
+ Provides-Extra: vllm
98
+ Requires-Dist: torch>=2.0.0; extra == "vllm"
99
+ Requires-Dist: transformers>=4.30.0; extra == "vllm"
100
+ Requires-Dist: vllm>=0.4.0; extra == "vllm"
101
+ Description-Content-Type: text/markdown
102
+
103
+ # Local Deep Research
104
+
105
+ <div align="center">
106
+
107
+ [![GitHub stars](https://img.shields.io/github/stars/LearningCircuit/local-deep-research?style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/stargazers)
108
+ [![Docker Pulls](https://img.shields.io/docker/pulls/localdeepresearch/local-deep-research?style=for-the-badge)](https://hub.docker.com/r/localdeepresearch/local-deep-research)
109
+ [![PyPI Downloads](https://img.shields.io/pypi/dm/local-deep-research?style=for-the-badge)](https://pypi.org/project/local-deep-research/)
110
+
111
+ [![Trendshift](https://trendshift.io/api/badge/repositories/14116)](https://trendshift.io/repositories/14116)
112
+
113
+ [![Commits](https://img.shields.io/github/commit-activity/m/LearningCircuit/local-deep-research?style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/commits/main)
114
+ [![Last Commit](https://img.shields.io/github/last-commit/LearningCircuit/local-deep-research?style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/commits/main)
115
+
116
+ [![SimpleQA Accuracy](https://img.shields.io/badge/SimpleQA-~95%25_Accuracy-gold?style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/tree/main/community_benchmark_results)
117
+ [![SQLCipher](https://img.shields.io/badge/Database-SQLCipher_Encrypted-red?style=for-the-badge&logo=sqlite&logoColor=white)](docs/SQLCIPHER_INSTALL.md)
118
+
119
+ [![πŸ”’ Security](https://github.com/LearningCircuit/local-deep-research/actions/workflows/security-tests.yml/badge.svg?branch=main&style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/security-tests.yml)
120
+ [![CodeQL](https://github.com/LearningCircuit/local-deep-research/actions/workflows/codeql.yml/badge.svg?branch=main&style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/security/code-scanning)
121
+ [![πŸ” Semgrep](https://github.com/LearningCircuit/local-deep-research/actions/workflows/semgrep.yml/badge.svg?branch=main&style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/semgrep.yml)
122
+ [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/LearningCircuit/local-deep-research/badge)](https://securityscorecards.dev/viewer/?uri=github.com/LearningCircuit/local-deep-research)
123
+
124
+ [![βœ… All Tests](https://github.com/LearningCircuit/local-deep-research/actions/workflows/tests.yml/badge.svg?branch=main&style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/tests.yml)
125
+ [![πŸ”§ Pre-commit](https://github.com/LearningCircuit/local-deep-research/actions/workflows/pre-commit.yml/badge.svg?branch=main&style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/pre-commit.yml)
126
+ [![🐳 Container Security](https://github.com/LearningCircuit/local-deep-research/actions/workflows/container-security.yml/badge.svg?branch=main&style=for-the-badge)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/container-security.yml)
127
+
128
+ [![🐳 Docker Publish](https://github.com/LearningCircuit/local-deep-research/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/docker-publish.yml)
129
+ [![πŸ“¦ PyPI Publish](https://github.com/LearningCircuit/local-deep-research/actions/workflows/publish.yml/badge.svg)](https://github.com/LearningCircuit/local-deep-research/actions/workflows/publish.yml)
130
+
131
+ [![Discord](https://img.shields.io/discord/1352043059562680370?style=for-the-badge&logo=discord)](https://discord.gg/ttcqQeFcJ3)
132
+ [![Reddit](https://img.shields.io/badge/Reddit-r/LocalDeepResearch-FF4500?style=for-the-badge&logo=reddit)](https://www.reddit.com/r/LocalDeepResearch/)
133
+
134
+
135
+ **AI-powered research assistant for deep, iterative research**
136
+
137
+ *Performs deep, iterative research using multiple LLMs and search engines with proper citations*
138
+ </div>
139
+
140
+ ## πŸš€ What is Local Deep Research?
141
+
142
+ LDR is an AI research assistant that performs systematic research by:
143
+
144
+ - **Breaking down complex questions** into focused sub-queries
145
+ - **Searching multiple sources** in parallel (web, academic papers, local documents)
146
+ - **Verifying information** across sources for accuracy
147
+ - **Creating comprehensive reports** with proper citations
148
+
149
+ It aims to help researchers, students, and professionals find accurate information quickly while maintaining transparency about sources.
150
+
151
+ ## 🎯 Why Choose LDR?
152
+
153
+ - **Privacy-Focused**: Run entirely locally with Ollama + SearXNG
154
+ - **Flexible**: Use any LLM, any search engine, any vector store
155
+ - **Comprehensive**: Multiple research modes from quick summaries to detailed reports
156
+ - **Transparent**: Track costs and performance with built-in analytics
157
+ - **Open Source**: MIT licensed with an active community
158
+
159
+ ## πŸ”’ Security & Privacy
160
+
161
+ <div align="center">
162
+
163
+ [![AES-256](https://img.shields.io/badge/Encryption-AES--256-green?style=for-the-badge&logo=lock&logoColor=white)](docs/SQLCIPHER_INSTALL.md)
164
+ [![Per-User DB](https://img.shields.io/badge/Security-Per--User_Isolated_DB-purple?style=for-the-badge&logo=shield&logoColor=white)](docs/MIGRATION_GUIDE_v1.md)
165
+ [![Zero Knowledge](https://img.shields.io/badge/Privacy-Zero_Knowledge-blue?style=for-the-badge&logo=eye-slash&logoColor=white)](docs/SQLCIPHER_INSTALL.md)
166
+
167
+ </div>
168
+
169
+ - **Signal-level encryption**: SQLCipher with AES-256 (same technology used by Signal messenger) protects all user data at rest
170
+ - **Per-user isolated databases**: Each user has their own encrypted database - complete data isolation
171
+ - **Zero-knowledge architecture**: No password recovery mechanism ensures true privacy
172
+ - **Advanced key derivation**: PBKDF2-SHA512 with 256,000 iterations prevents brute-force attacks
173
+ - **Data integrity**: HMAC-SHA512 verification prevents tampering
174
+
175
+ ## πŸ“Š Performance
176
+
177
+ **~95% accuracy on SimpleQA benchmark** (preliminary results)
178
+ - Tested with GPT-4.1-mini + SearXNG + focused-iteration strategy
179
+ - Comparable to state-of-the-art AI research systems
180
+ - Local models can achieve similar performance with proper configuration
181
+ - [Join our community benchmarking effort β†’](https://github.com/LearningCircuit/local-deep-research/tree/main/community_benchmark_results)
182
+
183
+ ## ✨ Key Features
184
+
185
+ ### πŸ” Research Modes
186
+ - **Quick Summary** - Get answers in 30 seconds to 3 minutes with citations
187
+ - **Detailed Research** - Comprehensive analysis with structured findings
188
+ - **Report Generation** - Professional reports with sections and table of contents
189
+ - **Document Analysis** - Search your private documents with AI
190
+
191
+ ### πŸ› οΈ Advanced Capabilities
192
+ - **[LangChain Integration](docs/LANGCHAIN_RETRIEVER_INTEGRATION.md)** - Use any vector store as a search engine
193
+ - **[REST API](docs/api-quickstart.md)** - Authenticated HTTP access with per-user databases
194
+ - **[Benchmarking](docs/BENCHMARKING.md)** - Test and optimize your configuration
195
+ - **[Analytics Dashboard](docs/analytics-dashboard.md)** - Track costs, performance, and usage metrics
196
+ - **Real-time Updates** - WebSocket support for live research progress
197
+ - **Export Options** - Download results as PDF or Markdown
198
+ - **Research History** - Save, search, and revisit past research
199
+ - **Adaptive Rate Limiting** - Intelligent retry system that learns optimal wait times
200
+ - **Keyboard Shortcuts** - Navigate efficiently (ESC, Ctrl+Shift+1-5)
201
+ - **Per-User Encrypted Databases** - Secure, isolated data storage for each user
202
+
203
+ ### πŸ“° News & Research Subscriptions
204
+ - **Automated Research Digests** - Subscribe to topics and receive AI-powered research summaries
205
+ - **Customizable Frequency** - Daily, weekly, or custom schedules for research updates
206
+ - **Smart Filtering** - AI filters and summarizes only the most relevant developments
207
+ - **Multi-format Delivery** - Get updates as markdown reports or structured summaries
208
+ - **Topic & Query Support** - Track specific searches or broad research areas
209
+
210
+ ### 🌐 Search Sources
211
+
212
+ #### Free Search Engines
213
+ - **Academic**: arXiv, PubMed, Semantic Scholar
214
+ - **General**: Wikipedia, SearXNG
215
+ - **Technical**: GitHub, Elasticsearch
216
+ - **Historical**: Wayback Machine
217
+ - **News**: The Guardian, Wikinews
218
+
219
+ #### Premium Search Engines
220
+ - **Tavily** - AI-powered search
221
+ - **Google** - Via SerpAPI or Programmable Search Engine
222
+ - **Brave Search** - Privacy-focused web search
223
+
224
+ #### Custom Sources
225
+ - **Local Documents** - Search your files with AI
226
+ - **LangChain Retrievers** - Any vector store or database
227
+ - **Meta Search** - Combine multiple engines intelligently
228
+
229
+ [Full Search Engines Guide β†’](docs/search-engines.md)
230
+
231
+ ## ⚑ Quick Start
232
+
233
+ ### Option 1: Docker
234
+
235
+ ```bash
236
+ # Step 1: Pull and run SearXNG for optimal search results
237
+ docker run -d -p 8080:8080 --name searxng searxng/searxng
238
+
239
+ # Step 2: Pull and run Local Deep Research
240
+ docker run -d -p 5000:5000 --network host \
241
+ --name local-deep-research \
242
+ --volume 'deep-research:/data' \
243
+ -e LDR_DATA_DIR=/data \
244
+ localdeepresearch/local-deep-research
245
+ ```
246
+
247
+ ### Option 2: Docker Compose (Recommended)
248
+
249
+ LDR uses Docker compose to bundle the web app and all its dependencies so
250
+ you can get up and running quickly.
251
+
252
+ #### Option 2a: Quick Start (One Command)
253
+
254
+ **Default: CPU-only base (works on all platforms)**
255
+
256
+ The base configuration works on macOS (M1/M2/M3/M4 and Intel), Windows, and Linux without requiring any GPU hardware.
257
+
258
+ **Quick Start Command:**
259
+
260
+ **Note:** `curl -O` will overwrite existing docker-compose.yml files in the current directory.
261
+
262
+ Linux/macOS:
263
+
264
+ ```bash
265
+ curl -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.yml && docker compose up -d
266
+ ```
267
+
268
+ Windows (PowerShell required):
269
+
270
+ ```powershell
271
+ curl.exe -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.yml
272
+ if ($?) { docker compose up -d }
273
+ ```
274
+
275
+ **Use with a different model:**
276
+
277
+ ```bash
278
+ curl -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.yml && MODEL=gpt-oss:20b docker compose up -d
279
+ ```
280
+
281
+ ---
282
+
283
+ ##### **Option 2a-GPU: Add NVIDIA GPU Acceleration (Linux only)**
284
+
285
+ ⚠️ **Breaking Change:** If you previously used `docker compose up -d` with GPU support, you now need to use the override file (see commands below).
286
+
287
+ For users with NVIDIA GPUs who want hardware acceleration.
288
+
289
+ **Prerequisites:**
290
+
291
+ Install the NVIDIA Container Toolkit first (Ubuntu/Debian):
292
+
293
+ ```bash
294
+ # Install NVIDIA Container Toolkit (for GPU support)
295
+ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
296
+ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
297
+ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
298
+ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
299
+
300
+ sudo apt-get update
301
+ sudo apt-get install nvidia-container-toolkit -y
302
+ sudo systemctl restart docker
303
+
304
+ # Verify installation
305
+ nvidia-smi
306
+ ```
307
+
308
+ **Verify:** The `nvidia-smi` command should display your GPU information. If it fails, check your NVIDIA driver installation.
309
+
310
+ **Note:** For RHEL/CentOS/Fedora, Arch, or other Linux distributions, see the [NVIDIA Container Toolkit installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html).
311
+
312
+ **Quick Start Commands:**
313
+
314
+ **Note:** `curl -O` will overwrite existing files in the current directory.
315
+
316
+ ```bash
317
+ curl -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.yml && \
318
+ curl -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.gpu.override.yml && \
319
+ docker compose -f docker-compose.yml -f docker-compose.gpu.override.yml up -d
320
+ ```
321
+
322
+ **Use with a different model:**
323
+
324
+ ```bash
325
+ curl -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.yml && \
326
+ curl -O https://raw.githubusercontent.com/LearningCircuit/local-deep-research/main/docker-compose.gpu.override.yml && \
327
+ MODEL=gpt-oss:20b docker compose -f docker-compose.yml -f docker-compose.gpu.override.yml up -d
328
+ ```
329
+
330
+ **Optional: Create an alias for convenience**
331
+
332
+ ```bash
333
+ alias docker-compose-gpu='docker compose -f docker-compose.yml -f docker-compose.gpu.override.yml'
334
+ # Then simply use: docker-compose-gpu up -d
335
+ ```
336
+
337
+ ---
338
+
339
+ Open http://localhost:5000 after ~30 seconds. This starts LDR with SearXNG and all dependencies.
340
+
341
+ #### Option 2b: DIY docker-compose
342
+ See [docker-compose.yml](./docker-compose.yml) for a docker-compose file with reasonable defaults to get up and running with ollama, searxng, and local deep research all running locally.
343
+
344
+ Things you may want/need to configure:
345
+ * Ollama GPU driver
346
+ * Ollama context length (depends on available VRAM)
347
+ * Ollama keep alive (duration model will stay loaded into VRAM and idle before getting unloaded automatically)
348
+ * Deep Research model (depends on available VRAM and preference)
349
+
350
+ #### Option 2c: Use Cookie Cutter to tailor a docker-compose to your needs:
351
+
352
+ ##### Prerequisites
353
+
354
+ - [Docker](https://docs.docker.com/engine/install/)
355
+ - [Docker Compose](https://docs.docker.com/compose/install/)
356
+ - `cookiecutter`: Run `pip install --user cookiecutter`
357
+
358
+ Clone the repository:
359
+
360
+ ```bash
361
+ git clone https://github.com/LearningCircuit/local-deep-research.git
362
+ cd local-deep-research
363
+ ```
364
+
365
+ ### Configuring with Docker Compose
366
+
367
+ Cookiecutter will interactively guide you through the process of creating a
368
+ `docker-compose` configuration that meets your specific needs. This is the
369
+ recommended approach if you are not very familiar with Docker.
370
+
371
+ In the LDR repository, run the following command
372
+ to generate the compose file:
373
+
374
+ ```bash
375
+ cookiecutter cookiecutter-docker/
376
+ docker compose -f docker-compose.default.yml up
377
+ ```
378
+
379
+ [Docker Compose Guide β†’](docs/docker-compose-guide.md)
380
+
381
+ ### Option 3: Unraid
382
+
383
+ **For Unraid users:**
384
+
385
+ Local Deep Research is fully compatible with Unraid servers!
386
+
387
+ #### Quick Install (Template Method)
388
+
389
+ 1. Navigate to **Docker** tab β†’ **Docker Repositories**
390
+ 2. Add template repository:
391
+ ```
392
+ https://github.com/LearningCircuit/local-deep-research
393
+ ```
394
+ 3. Click **Add Container** β†’ Select **LocalDeepResearch** from template
395
+ 4. Configure paths (default: `/mnt/user/appdata/local-deep-research/`)
396
+ 5. Click **Apply**
397
+
398
+ #### Docker Compose Manager Plugin
399
+
400
+ If you prefer using Docker Compose on Unraid:
401
+
402
+ 1. Install "Docker Compose Manager" from Community Applications
403
+ 2. Create a new stack with the compose file from this repo
404
+ 3. Update volume paths to Unraid format (`/mnt/user/appdata/...`)
405
+
406
+ **Features on Unraid:**
407
+ - βœ… Pre-configured template with sensible defaults
408
+ - βœ… Automatic SearXNG and Ollama integration
409
+ - βœ… NVIDIA GPU passthrough support (optional)
410
+ - βœ… Integration with Unraid shares for document search
411
+ - βœ… Backup integration with CA Appdata Backup plugin
412
+
413
+ [Complete Unraid Setup Guide β†’](docs/deployment/unraid.md)
414
+
415
+ ### Option 4: Python Package
416
+
417
+ ```bash
418
+ # Step 1: Install the package
419
+ pip install local-deep-research
420
+
421
+ # Step 2: Setup SearXNG for best results
422
+ docker pull searxng/searxng
423
+ docker run -d -p 8080:8080 --name searxng searxng/searxng
424
+
425
+ # Step 3: Install Ollama from https://ollama.ai
426
+
427
+ # Step 4: Download a model
428
+ ollama pull gemma3:12b
429
+
430
+ # Step 5: Start the web interface
431
+ python -m local_deep_research.web.app
432
+ ```
433
+
434
+ > **Note:** For development from source, see the [Development Guide](docs/developing.md).
435
+
436
+ #### Optional Dependencies
437
+
438
+ VLLM support (for running transformer models directly):
439
+ ```bash
440
+ pip install "local-deep-research[vllm]"
441
+ ```
442
+ This installs torch, transformers, and vllm for advanced local model hosting. Most users running Ollama or LlamaCpp don't need this.
443
+
444
+ [Full Installation Guide β†’](https://github.com/LearningCircuit/local-deep-research/wiki/Installation)
445
+
446
+ ## πŸ’» Usage Examples
447
+
448
+ ### Python API
449
+ ```python
450
+ from local_deep_research.api import LDRClient, quick_query
451
+
452
+ # Option 1: Simplest - one line research
453
+ summary = quick_query("username", "password", "What is quantum computing?")
454
+ print(summary)
455
+
456
+ # Option 2: Client for multiple operations
457
+ client = LDRClient()
458
+ client.login("username", "password")
459
+ result = client.quick_research("What are the latest advances in quantum computing?")
460
+ print(result["summary"])
461
+ ```
462
+
463
+ ### HTTP API
464
+
465
+ *The code example below shows the basic API structure - for working examples, see the link below*
466
+
467
+ ```python
468
+ import requests
469
+ from bs4 import BeautifulSoup
470
+
471
+ # Create session and authenticate
472
+ session = requests.Session()
473
+ login_page = session.get("http://localhost:5000/auth/login")
474
+ soup = BeautifulSoup(login_page.text, "html.parser")
475
+ login_csrf = soup.find("input", {"name": "csrf_token"}).get("value")
476
+
477
+ # Login and get API CSRF token
478
+ session.post("http://localhost:5000/auth/login",
479
+ data={"username": "user", "password": "pass", "csrf_token": login_csrf})
480
+ csrf = session.get("http://localhost:5000/auth/csrf-token").json()["csrf_token"]
481
+
482
+ # Make API request
483
+ response = session.post("http://localhost:5000/api/start_research",
484
+ json={"query": "Your research question"},
485
+ headers={"X-CSRF-Token": csrf})
486
+ ```
487
+
488
+ πŸš€ **[Ready-to-use HTTP API Examples β†’ examples/api_usage/http/](examples/api_usage/http/)**
489
+ - βœ… **Automatic user creation** - works out of the box
490
+ - βœ… **Complete authentication** with CSRF handling
491
+ - βœ… **Result retry logic** - waits until research completes
492
+ - βœ… **Progress monitoring** and error handling
493
+
494
+ ### Command Line Tools
495
+
496
+ ```bash
497
+ # Run benchmarks from CLI
498
+ python -m local_deep_research.benchmarks --dataset simpleqa --examples 50
499
+
500
+ # Manage rate limiting
501
+ python -m local_deep_research.web_search_engines.rate_limiting status
502
+ python -m local_deep_research.web_search_engines.rate_limiting reset
503
+ ```
504
+
505
+ ## πŸ”— Enterprise Integration
506
+
507
+ Connect LDR to your existing knowledge base:
508
+
509
+ ```python
510
+ from local_deep_research.api import quick_summary
511
+
512
+ # Use your existing LangChain retriever
513
+ result = quick_summary(
514
+ query="What are our deployment procedures?",
515
+ retrievers={"company_kb": your_retriever},
516
+ search_tool="company_kb"
517
+ )
518
+ ```
519
+
520
+ Works with: FAISS, Chroma, Pinecone, Weaviate, Elasticsearch, and any LangChain-compatible retriever.
521
+
522
+ [Integration Guide β†’](docs/LANGCHAIN_RETRIEVER_INTEGRATION.md)
523
+
524
+ ## πŸ“Š Performance & Analytics
525
+
526
+ ### Benchmark Results
527
+ Early experiments on small SimpleQA dataset samples:
528
+
529
+ | Configuration | Accuracy | Notes |
530
+ |--------------|----------|--------|
531
+ | gpt-4.1-mini + SearXNG + focused_iteration | 90-95% | Limited sample size |
532
+ | gpt-4.1-mini + Tavily + focused_iteration | 90-95% | Limited sample size |
533
+ | gemini-2.0-flash-001 + SearXNG | 82% | Single test run |
534
+
535
+ Note: These are preliminary results from initial testing. Performance varies significantly based on query types, model versions, and configurations. [Run your own benchmarks β†’](docs/BENCHMARKING.md)
536
+
537
+ ### Built-in Analytics Dashboard
538
+ Track costs, performance, and usage with detailed metrics. [Learn more β†’](docs/analytics-dashboard.md)
539
+
540
+ ## πŸ€– Supported LLMs
541
+
542
+ ### Local Models (via Ollama)
543
+ - Llama 3, Mistral, Gemma, DeepSeek
544
+ - LLM processing stays local (search queries still go to web)
545
+ - No API costs
546
+
547
+ ### Cloud Models
548
+ - OpenAI (GPT-4, GPT-3.5)
549
+ - Anthropic (Claude 3)
550
+ - Google (Gemini)
551
+ - 100+ models via OpenRouter
552
+
553
+ [Model Setup β†’](docs/env_configuration.md)
554
+
555
+ ## πŸ“š Documentation
556
+
557
+ ### Getting Started
558
+ - [Installation Guide](https://github.com/LearningCircuit/local-deep-research/wiki/Installation)
559
+ - [Frequently Asked Questions](docs/faq.md)
560
+ - [API Quickstart](docs/api-quickstart.md)
561
+ - [Configuration Guide](docs/env_configuration.md)
562
+
563
+ ### Core Features
564
+ - [All Features Guide](docs/features.md)
565
+ - [Search Engines Guide](docs/search-engines.md)
566
+ - [Analytics Dashboard](docs/analytics-dashboard.md)
567
+
568
+ ### Advanced Features
569
+ - [LangChain Integration](docs/LANGCHAIN_RETRIEVER_INTEGRATION.md)
570
+ - [Benchmarking System](docs/BENCHMARKING.md)
571
+ - [Elasticsearch Setup](docs/elasticsearch_search_engine.md)
572
+ - [SearXNG Setup](docs/SearXNG-Setup.md)
573
+
574
+ ### Development
575
+ - [Docker Compose Guide](docs/docker-compose-guide.md)
576
+ - [Development Guide](docs/developing.md)
577
+ - [Security Guide](docs/security/CODEQL_GUIDE.md)
578
+ - [Release Guide](docs/RELEASE_GUIDE.md)
579
+
580
+ ### Examples & Tutorials
581
+ - [API Examples](examples/api_usage/)
582
+ - [Benchmark Examples](examples/benchmarks/)
583
+ - [Optimization Examples](examples/optimization/)
584
+
585
+ ## πŸ“° Featured In
586
+
587
+ > "Local Deep Research **deserves special mention** for those who prioritize privacy... **tuned to use open-source LLMs** that can run on consumer GPUs or even CPUs. Journalists, researchers, or companies with sensitive topics can investigate information **without queries ever hitting an external server**."
588
+ >
589
+ > β€” [Medium: Open-Source Deep Research AI Assistants](https://medium.com/@leucopsis/open-source-deep-research-ai-assistants-157462a59c14)
590
+
591
+ - [Hacker News](https://news.ycombinator.com/item?id=43330164) - Community discussion
592
+ - [Zhihu (ηŸ₯乎)](https://zhuanlan.zhihu.com/p/30886269290) - Chinese tech community coverage
593
+ - [BSAIL Lab: How useful is Deep Research in Academia?](https://uflbsail.net/uncategorized/how-useful-is-deep-research-in-academia/) - In-depth review by contributor [@djpetti](https://github.com/djpetti)
594
+ - [SearXNG LDR-Academic](https://github.com/porespellar/searxng-LDR-academic) - Academic-focused SearXNG fork with 12 research engines (arXiv, Google Scholar, PubMed, etc.) designed for LDR
595
+
596
+ > **Note:** Third-party projects are independently maintained. We link to them as useful resources but cannot guarantee their code quality or security.
597
+
598
+ ## 🀝 Community & Support
599
+
600
+ - [Discord](https://discord.gg/ttcqQeFcJ3) - Get help and share research techniques
601
+ - [Reddit](https://www.reddit.com/r/LocalDeepResearch/) - Updates and showcases
602
+ - [GitHub Issues](https://github.com/LearningCircuit/local-deep-research/issues) - Bug reports
603
+
604
+ ## πŸš€ Contributing
605
+
606
+ We welcome contributions! See our [Contributing Guide](CONTRIBUTING.md) to get started.
607
+
608
+ ## πŸ“„ License
609
+
610
+ MIT License - see [LICENSE](LICENSE) file.
611
+
612
+ Built with: [LangChain](https://github.com/hwchase17/langchain), [Ollama](https://ollama.ai), [SearXNG](https://searxng.org/), [FAISS](https://github.com/facebookresearch/faiss)
613
+
614
+ > **Support Free Knowledge:** Consider donating to [Wikipedia](https://donate.wikimedia.org), [arXiv](https://arxiv.org/about/give), or [PubMed](https://www.nlm.nih.gov/pubs/donations/donations.html).