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.
- local_deep_research-1.3.16/LICENSE +21 -0
- local_deep_research-1.3.16/PKG-INFO +614 -0
- local_deep_research-1.3.16/README.md +512 -0
- local_deep_research-1.3.16/pyproject.toml +268 -0
- local_deep_research-1.3.16/src/local_deep_research/__init__.py +17 -0
- local_deep_research-1.3.16/src/local_deep_research/__version__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/__init__.py +7 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/answer_decoding/__init__.py +5 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/answer_decoding/browsecomp_answer_decoder.py +422 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/README.md +219 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/__init__.py +25 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/adaptive_explorer.py +329 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/base_explorer.py +341 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/constraint_guided_explorer.py +436 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/diversity_explorer.py +457 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/parallel_explorer.py +252 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidate_exploration/progressive_explorer.py +261 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidates/__init__.py +5 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/candidates/base_candidate.py +59 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/README.md +150 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/__init__.py +35 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/base_constraint_checker.py +122 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/constraint_checker.py +223 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/constraint_satisfaction_tracker.py +386 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/dual_confidence_checker.py +424 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/evidence_analyzer.py +174 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/intelligent_constraint_relaxer.py +501 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/rejection_engine.py +143 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/strict_checker.py +259 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraint_checking/threshold_checker.py +213 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraints/__init__.py +6 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraints/base_constraint.py +58 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/constraints/constraint_analyzer.py +143 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/__init__.py +12 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/base_evidence.py +57 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/evaluator.py +159 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/evidence/requirements.py +122 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/__init__.py +8 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/base_filter.py +39 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +226 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/followup_relevance_filter.py +165 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +363 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/findings/base_findings.py +78 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/findings/repository.py +479 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/findings/topic.py +187 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +149 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/followup_context_manager.py +415 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +159 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/query_generation/adaptive_query_generator.py +405 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/__init__.py +19 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/atomic_fact_question.py +169 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/base_question.py +61 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/browsecomp_question.py +373 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +452 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/entity_aware_question.py +183 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/flexible_browsecomp_question.py +101 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/__init__.py +14 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/base_followup_question.py +91 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/llm_followup_question.py +93 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/followup/simple_followup_question.py +65 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/news_question.py +49 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/questions/standard_question.py +124 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/repositories/__init__.py +7 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/search_optimization/cross_constraint_manager.py +624 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/source_management/diversity_manager.py +613 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/__init__.py +43 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/adaptive_decomposition_strategy.py +564 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +226 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/browsecomp_entity_strategy.py +1037 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/browsecomp_optimized_strategy.py +779 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/concurrent_dual_confidence_strategy.py +444 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/constrained_search_strategy.py +1346 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/constraint_parallel_strategy.py +520 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/direct_search_strategy.py +213 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/dual_confidence_strategy.py +323 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/dual_confidence_with_rejection.py +220 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/early_stop_constrained_strategy.py +373 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/entity_aware_source_strategy.py +139 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy.py +1249 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy_v2.py +1337 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/focused_iteration_strategy.py +585 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/followup/__init__.py +10 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/followup/enhanced_contextual_followup.py +387 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/improved_evidence_based_strategy.py +782 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/iterative_reasoning_strategy.py +760 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/iterative_refinement_strategy.py +623 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +501 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/llm_driven_modular_strategy.py +865 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/modular_strategy.py +1144 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/news_strategy.py +284 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/parallel_constrained_strategy.py +506 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +470 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +296 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/recursive_decomposition_strategy.py +492 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/smart_decomposition_strategy.py +287 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/smart_query_strategy.py +517 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/source_based_strategy.py +460 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +341 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/strategies/topic_organization_strategy.py +1734 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/base_tool.py +123 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/api/__init__.py +47 -0
- local_deep_research-1.3.16/src/local_deep_research/api/benchmark_functions.py +361 -0
- local_deep_research-1.3.16/src/local_deep_research/api/client.py +488 -0
- local_deep_research-1.3.16/src/local_deep_research/api/research_functions.py +657 -0
- local_deep_research-1.3.16/src/local_deep_research/api/settings_utils.py +332 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/README.md +162 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/__init__.py +55 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/benchmark_functions.py +459 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/cli/__init__.py +16 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/cli/benchmark_commands.py +356 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/cli.py +372 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/comparison/__init__.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/comparison/evaluator.py +848 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/comparison/results.py +78 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/__init__.py +56 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/base.py +312 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/browsecomp.py +136 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/custom_dataset_template.py +96 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/simpleqa.py +73 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/utils.py +139 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets/xbench_deepsearch.py +278 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/datasets.py +22 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/efficiency/__init__.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/efficiency/resource_monitor.py +418 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/efficiency/speed_profiler.py +226 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/__init__.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/base.py +71 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/browsecomp.py +84 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/composite.py +124 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/evaluators/simpleqa.py +291 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/graders.py +610 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/README.md +80 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/__init__.py +24 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/calculation.py +396 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/reporting.py +168 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics/visualization.py +223 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/metrics.py +11 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/models/__init__.py +19 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/__init__.py +34 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/api.py +277 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/metrics.py +20 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/optimization/optuna_optimizer.py +1238 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/runners.py +493 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/templates.py +65 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/ui/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/web_api/__init__.py +6 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/web_api/benchmark_routes.py +931 -0
- local_deep_research-1.3.16/src/local_deep_research/benchmarks/web_api/benchmark_service.py +1444 -0
- local_deep_research-1.3.16/src/local_deep_research/citation_handler.py +106 -0
- local_deep_research-1.3.16/src/local_deep_research/citation_handlers/__init__.py +15 -0
- local_deep_research-1.3.16/src/local_deep_research/citation_handlers/base_citation_handler.py +110 -0
- local_deep_research-1.3.16/src/local_deep_research/citation_handlers/forced_answer_citation_handler.py +195 -0
- local_deep_research-1.3.16/src/local_deep_research/citation_handlers/precision_extraction_handler.py +584 -0
- local_deep_research-1.3.16/src/local_deep_research/citation_handlers/standard_citation_handler.py +97 -0
- local_deep_research-1.3.16/src/local_deep_research/cli/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/config/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/config/default_settings/database_settings.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/config/llm_config.py +1040 -0
- local_deep_research-1.3.16/src/local_deep_research/config/paths.py +126 -0
- local_deep_research-1.3.16/src/local_deep_research/config/search_config.py +152 -0
- local_deep_research-1.3.16/src/local_deep_research/config/thread_settings.py +126 -0
- local_deep_research-1.3.16/src/local_deep_research/constants.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/database/auth_db.py +59 -0
- local_deep_research-1.3.16/src/local_deep_research/database/credential_store_base.py +117 -0
- local_deep_research-1.3.16/src/local_deep_research/database/encrypted_db.py +620 -0
- local_deep_research-1.3.16/src/local_deep_research/database/encryption_check.py +103 -0
- local_deep_research-1.3.16/src/local_deep_research/database/initialize.py +218 -0
- local_deep_research-1.3.16/src/local_deep_research/database/library_init.py +199 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/__init__.py +168 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/active_research.py +53 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/auth.py +39 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/base.py +7 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/benchmark.py +277 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/cache.py +100 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/download_tracker.py +144 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/file_integrity.py +127 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/library.py +887 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/logs.py +74 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/metrics.py +209 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/news.py +262 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/providers.py +33 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/queue.py +50 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/queued_research.py +34 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/rate_limiting.py +64 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/reports.py +124 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/research.py +315 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/settings.py +108 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/user_base.py +9 -0
- local_deep_research-1.3.16/src/local_deep_research/database/models/user_news_search_history.py +47 -0
- local_deep_research-1.3.16/src/local_deep_research/database/queue_service.py +176 -0
- local_deep_research-1.3.16/src/local_deep_research/database/session_context.py +222 -0
- local_deep_research-1.3.16/src/local_deep_research/database/session_passwords.py +95 -0
- local_deep_research-1.3.16/src/local_deep_research/database/sqlcipher_compat.py +32 -0
- local_deep_research-1.3.16/src/local_deep_research/database/sqlcipher_utils.py +254 -0
- local_deep_research-1.3.16/src/local_deep_research/database/temp_auth.py +87 -0
- local_deep_research-1.3.16/src/local_deep_research/database/thread_local_session.py +180 -0
- local_deep_research-1.3.16/src/local_deep_research/database/thread_metrics.py +159 -0
- local_deep_research-1.3.16/src/local_deep_research/database/views/library_views.py +244 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/.env.template +15 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/__init__.py +47 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/default_settings.json +5772 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/google_settings.json +16 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/ionos_settings.json +16 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/openrouter_settings.json +16 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/llm_providers/xai_settings.json +16 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/research_library/library_settings.json +141 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/elasticsearch.json +282 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/paperless.json +252 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/parallel.json +198 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/scaleserp.json +259 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings/search_engines/serper.json +258 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_document_scheduler.json +72 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_nasa_ads.json +254 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_ollama_embeddings.json +16 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_openalex.json +252 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_search_config.json +14 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_security.json +38 -0
- local_deep_research-1.3.16/src/local_deep_research/defaults/settings_semantic_scholar.json +275 -0
- local_deep_research-1.3.16/src/local_deep_research/domain_classifier/__init__.py +6 -0
- local_deep_research-1.3.16/src/local_deep_research/domain_classifier/classifier.py +488 -0
- local_deep_research-1.3.16/src/local_deep_research/domain_classifier/models.py +46 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/__init__.py +35 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/embeddings_config.py +146 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/__init__.py +5 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/base.py +128 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/__init__.py +11 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/ollama.py +104 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/openai.py +163 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/providers/implementations/sentence_transformers.py +127 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/splitters/__init__.py +9 -0
- local_deep_research-1.3.16/src/local_deep_research/embeddings/splitters/text_splitter_registry.py +145 -0
- local_deep_research-1.3.16/src/local_deep_research/error_handling/__init__.py +13 -0
- local_deep_research-1.3.16/src/local_deep_research/error_handling/error_reporter.py +384 -0
- local_deep_research-1.3.16/src/local_deep_research/error_handling/report_generator.py +414 -0
- local_deep_research-1.3.16/src/local_deep_research/followup_research/__init__.py +15 -0
- local_deep_research-1.3.16/src/local_deep_research/followup_research/models.py +52 -0
- local_deep_research-1.3.16/src/local_deep_research/followup_research/routes.py +316 -0
- local_deep_research-1.3.16/src/local_deep_research/followup_research/service.py +214 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/__init__.py +37 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/database_init.py +45 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/failure_classifier.py +211 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/filters/__init__.py +12 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/filters/resource_filter.py +164 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/models/__init__.py +74 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/retry_manager.py +283 -0
- local_deep_research-1.3.16/src/local_deep_research/library/download_management/status_tracker.py +326 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/__init__.py +19 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/llm_registry.py +161 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/__init__.py +20 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/auto_discovery.py +269 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/anthropic.py +161 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/custom_openai_endpoint.py +111 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/google.py +132 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/ionos.py +70 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/lmstudio.py +114 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/ollama.py +344 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/openai.py +217 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/openrouter.py +71 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/implementations/xai.py +80 -0
- local_deep_research-1.3.16/src/local_deep_research/llm/providers/openai_base.py +339 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/__init__.py +13 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/database.py +71 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/__init__.py +12 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/cost_calculator.py +236 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/pricing_cache.py +108 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/pricing/pricing_fetcher.py +240 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/query_utils.py +51 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/search_tracker.py +442 -0
- local_deep_research-1.3.16/src/local_deep_research/metrics/token_counter.py +1931 -0
- local_deep_research-1.3.16/src/local_deep_research/news/__init__.py +40 -0
- local_deep_research-1.3.16/src/local_deep_research/news/api.py +1300 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/base_card.py +371 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/card_factory.py +349 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/card_storage.py +209 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/news_analyzer.py +448 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/relevance_service.py +156 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/search_integration.py +158 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/storage.py +269 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/storage_manager.py +456 -0
- local_deep_research-1.3.16/src/local_deep_research/news/core/utils.py +53 -0
- local_deep_research-1.3.16/src/local_deep_research/news/exceptions.py +191 -0
- local_deep_research-1.3.16/src/local_deep_research/news/flask_api.py +1476 -0
- local_deep_research-1.3.16/src/local_deep_research/news/folder_manager.py +225 -0
- local_deep_research-1.3.16/src/local_deep_research/news/preference_manager/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/news/preference_manager/base_preference.py +264 -0
- local_deep_research-1.3.16/src/local_deep_research/news/preference_manager/storage.py +209 -0
- local_deep_research-1.3.16/src/local_deep_research/news/rating_system/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/news/rating_system/base_rater.py +307 -0
- local_deep_research-1.3.16/src/local_deep_research/news/rating_system/storage.py +245 -0
- local_deep_research-1.3.16/src/local_deep_research/news/recommender/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/news/recommender/base_recommender.py +203 -0
- local_deep_research-1.3.16/src/local_deep_research/news/recommender/topic_based.py +321 -0
- local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/__init__.py +15 -0
- local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/base_subscription.py +250 -0
- local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/scheduler.py +1575 -0
- local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/search_subscription.py +253 -0
- local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/storage.py +343 -0
- local_deep_research-1.3.16/src/local_deep_research/news/subscription_manager/topic_subscription.py +312 -0
- local_deep_research-1.3.16/src/local_deep_research/news/utils/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/news/utils/headline_generator.py +85 -0
- local_deep_research-1.3.16/src/local_deep_research/news/utils/topic_generator.py +146 -0
- local_deep_research-1.3.16/src/local_deep_research/news/web.py +235 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/__init__.py +47 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/exceptions.py +27 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/manager.py +571 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/queue_helpers.py +412 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/service.py +340 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/api_quota_warning.jinja2 +6 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/auth_issue.jinja2 +5 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/research_completed.jinja2 +7 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/research_failed.jinja2 +7 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/research_queued.jinja2 +6 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/subscription_error.jinja2 +7 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/subscription_update.jinja2 +7 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates/test.jinja2 +5 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/templates.py +230 -0
- local_deep_research-1.3.16/src/local_deep_research/notifications/url_builder.py +97 -0
- local_deep_research-1.3.16/src/local_deep_research/report_generator.py +387 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/__init__.py +25 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/__init__.py +25 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/routes/__init__.py +5 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/routes/delete_routes.py +413 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/__init__.py +11 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/bulk_deletion.py +297 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/collection_deletion.py +327 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/services/document_deletion.py +435 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/utils/__init__.py +5 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/deletion/utils/cascade_helper.py +417 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/__init__.py +26 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/arxiv.py +232 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/base.py +379 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/biorxiv.py +196 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/direct_pdf.py +118 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/generic.py +162 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/openalex.py +213 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/pubmed.py +505 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/downloaders/semantic_scholar.py +175 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/routes/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/routes/library_routes.py +1378 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/routes/rag_routes.py +2693 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/services/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/services/download_service.py +1579 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/services/library_rag_service.py +1442 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/services/library_service.py +910 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/services/pdf_storage_manager.py +425 -0
- local_deep_research-1.3.16/src/local_deep_research/research_library/utils/__init__.py +186 -0
- local_deep_research-1.3.16/src/local_deep_research/research_scheduler/document_scheduler.py +97 -0
- local_deep_research-1.3.16/src/local_deep_research/research_scheduler/routes.py +52 -0
- local_deep_research-1.3.16/src/local_deep_research/search_system.py +376 -0
- local_deep_research-1.3.16/src/local_deep_research/search_system_factory.py +925 -0
- local_deep_research-1.3.16/src/local_deep_research/security/__init__.py +67 -0
- local_deep_research-1.3.16/src/local_deep_research/security/data_sanitizer.py +157 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/__init__.py +47 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/base_verifier.py +96 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/integrity_manager.py +597 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/verifiers/__init__.py +5 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_integrity/verifiers/faiss_verifier.py +51 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_upload_validator.py +188 -0
- local_deep_research-1.3.16/src/local_deep_research/security/file_write_verifier.py +127 -0
- local_deep_research-1.3.16/src/local_deep_research/security/network_utils.py +52 -0
- local_deep_research-1.3.16/src/local_deep_research/security/notification_validator.py +251 -0
- local_deep_research-1.3.16/src/local_deep_research/security/path_validator.py +391 -0
- local_deep_research-1.3.16/src/local_deep_research/security/rate_limiter.py +151 -0
- local_deep_research-1.3.16/src/local_deep_research/security/safe_requests.py +227 -0
- local_deep_research-1.3.16/src/local_deep_research/security/security_headers.py +303 -0
- local_deep_research-1.3.16/src/local_deep_research/security/ssrf_validator.py +236 -0
- local_deep_research-1.3.16/src/local_deep_research/security/url_builder.py +208 -0
- local_deep_research-1.3.16/src/local_deep_research/security/url_validator.py +458 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/README.md +70 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/__init__.py +11 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/base.py +117 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/__init__.py +27 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/bootstrap.py +60 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/db_config.py +72 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/news_scheduler.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/security.py +23 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_definitions/testing.py +34 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_registry.py +111 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/env_settings.py +347 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/logger.py +153 -0
- local_deep_research-1.3.16/src/local_deep_research/settings/manager.py +968 -0
- local_deep_research-1.3.16/src/local_deep_research/storage/__init__.py +13 -0
- local_deep_research-1.3.16/src/local_deep_research/storage/base.py +89 -0
- local_deep_research-1.3.16/src/local_deep_research/storage/database.py +145 -0
- local_deep_research-1.3.16/src/local_deep_research/storage/database_with_file_backup.py +108 -0
- local_deep_research-1.3.16/src/local_deep_research/storage/factory.py +74 -0
- local_deep_research-1.3.16/src/local_deep_research/storage/file.py +144 -0
- local_deep_research-1.3.16/src/local_deep_research/text_optimization/README.md +86 -0
- local_deep_research-1.3.16/src/local_deep_research/text_optimization/__init__.py +17 -0
- local_deep_research-1.3.16/src/local_deep_research/text_optimization/citation_formatter.py +1000 -0
- local_deep_research-1.3.16/src/local_deep_research/text_processing/__init__.py +11 -0
- local_deep_research-1.3.16/src/local_deep_research/text_processing/text_cleaner.py +39 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/db_utils.py +206 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/enums.py +18 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/es_utils.py +446 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/llm_utils.py +306 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/log_utils.py +305 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/search_cache.py +506 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/search_utilities.py +270 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/setup_utils.py +8 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/thread_context.py +99 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/threading_utils.py +104 -0
- local_deep_research-1.3.16/src/local_deep_research/utilities/url_utils.py +62 -0
- local_deep_research-1.3.16/src/local_deep_research/web/__init__.py +1 -0
- local_deep_research-1.3.16/src/local_deep_research/web/api.py +456 -0
- local_deep_research-1.3.16/src/local_deep_research/web/app.py +70 -0
- local_deep_research-1.3.16/src/local_deep_research/web/app_factory.py +783 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/__init__.py +9 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/cleanup_middleware.py +77 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/database_middleware.py +78 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/decorators.py +110 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/middleware_optimizer.py +65 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/queue_middleware.py +52 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/queue_middleware_v2.py +45 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/routes.py +522 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/session_cleanup.py +48 -0
- local_deep_research-1.3.16/src/local_deep_research/web/auth/session_manager.py +117 -0
- local_deep_research-1.3.16/src/local_deep_research/web/database/README.md +70 -0
- local_deep_research-1.3.16/src/local_deep_research/web/database/benchmark_schema.py +230 -0
- local_deep_research-1.3.16/src/local_deep_research/web/models/database.py +183 -0
- local_deep_research-1.3.16/src/local_deep_research/web/models/settings.py +95 -0
- local_deep_research-1.3.16/src/local_deep_research/web/queue/__init__.py +6 -0
- local_deep_research-1.3.16/src/local_deep_research/web/queue/manager.py +230 -0
- local_deep_research-1.3.16/src/local_deep_research/web/queue/processor_v2.py +836 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/api_routes.py +661 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/context_overflow_api.py +389 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/globals.py +22 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/history_routes.py +447 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/metrics_routes.py +2206 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/news_routes.py +242 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/research_routes.py +1631 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/research_routes_orm.py +455 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/route_registry.py +352 -0
- local_deep_research-1.3.16/src/local_deep_research/web/routes/settings_routes.py +2315 -0
- local_deep_research-1.3.16/src/local_deep_research/web/server_config.py +147 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/pdf_extraction_service.py +152 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/pdf_service.py +204 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/research_service.py +1839 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/research_sources_service.py +280 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/resource_service.py +148 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/settings_manager.py +748 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/settings_service.py +111 -0
- local_deep_research-1.3.16/src/local_deep_research/web/services/socket_service.py +262 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/.frontend-built +1 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/collection_details.css +1422 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/collections.css +747 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/components/history-icons.css +113 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/custom_dropdown.css +479 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/document_details.css +482 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/mobile-navigation.css +521 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/mobile-responsive.css +543 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/news-enhanced.css +434 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/news.css +1849 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/settings-mobile-fix.css +97 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/settings.css +1398 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/styles.css +2325 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/css/subscriptions.css +564 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/.vite/manifest.json +57 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/css/app.ocGwz2tF.css +1 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/bootstrap-icons.BeopsB42.woff +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/bootstrap-icons.mSm7cUeB.woff2 +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/fa-brands-400.BfBXV7Mm.woff2 +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/fa-regular-400.BVHPE7da.woff2 +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/fonts/fa-solid-900.8GirhLYJ.woff2 +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/js/app.Dhpzx65r.js +151 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/js/index.es.BXcsbyQc.js +5 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/dist/js/purify.es.Bzr520pe.js +2 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/favicon.png +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/app.js +84 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/collection_create.js +185 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/collection_details.js +610 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/collection_upload.js +769 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/collections_manager.js +228 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/checkbox_handler.js +223 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/custom_dropdown.js +507 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/detail.js +708 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/details.js +1202 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/fallback/formatting.js +122 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/fallback/ui.js +220 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/history.js +544 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/logpanel.js +1069 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/news.js +128 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/progress.js +1131 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/report_issue.js +49 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/research.js +2326 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/results.js +980 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/settings.js +4714 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/settings_sync.js +160 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/components/subscription-manager.js +435 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/config/urls.js +315 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/deletion/confirmation_modal.js +271 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/deletion/delete_manager.js +652 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/embedding_settings.js +628 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/followup.js +367 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/main.js +226 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/mobile-navigation.js +517 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/news-enhancements.js +139 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/pages/news.js +3556 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/pages/subscriptions.js +757 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/pdf_upload_handler.js +569 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/research_form.js +358 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/security/url-validator.js +145 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/security/xss-protection.js +387 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/api.js +254 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/audio.js +31 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/formatting.js +119 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/keyboard.js +202 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/pdf.js +961 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/socket.js +958 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/services/ui.js +570 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/js/utils/sanitizer.js +231 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/sounds/README.md +29 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/static/templates/followup_modal.html +47 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/auth/change_password.html +248 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/auth/login.html +408 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/auth/register.html +534 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/base.html +148 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/benchmark/dashboard.html +185 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/custom_dropdown.html +49 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/delete_confirmation_modal.html +66 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/followup_modal.html +42 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/log_panel.html +43 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/settings_form.html +340 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/sidebar.html +127 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/components/storage_mode_modal.html +253 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/benchmark.html +2912 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/benchmark_results.html +1339 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/benchmark_simple.html +453 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collection_create.html +100 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collection_details.html +199 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collection_upload.html +220 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/collections.html +62 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/context_overflow.html +1039 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/cost_analytics.html +1243 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/details.html +603 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/document_chunks.html +192 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/document_details.html +275 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/document_text.html +106 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/download_manager.html +1567 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/embedding_settings.html +559 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/history.html +54 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/library.html +1828 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/link_analytics.html +1318 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/metrics.html +2248 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/news-subscription-form.html +1011 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/news.html +366 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/news_cleaned.html +160 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/progress.html +57 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/research.html +208 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/results.html +125 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/star_reviews.html +802 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/pages/subscriptions.html +168 -0
- local_deep_research-1.3.16/src/local_deep_research/web/templates/settings_dashboard.html +129 -0
- local_deep_research-1.3.16/src/local_deep_research/web/utils/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web/utils/formatters.py +53 -0
- local_deep_research-1.3.16/src/local_deep_research/web/utils/rate_limiter.py +76 -0
- local_deep_research-1.3.16/src/local_deep_research/web/utils/templates.py +29 -0
- local_deep_research-1.3.16/src/local_deep_research/web/utils/vite_helper.py +101 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/default_search_engines.py +40 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/full_search.py +133 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +533 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/parallel_search_engine.py +758 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +519 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +293 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_collection.py +271 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +162 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +362 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_github.py +923 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +362 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +676 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_library.py +367 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_local.py +1438 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +170 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_nasa_ads.py +360 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_openalex.py +423 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_paperless.py +779 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +1781 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_retriever.py +196 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_scaleserp.py +371 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +554 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +647 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +266 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_serper.py +366 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_tavily.py +320 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +523 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_wikinews.py +527 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +302 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/__init__.py +14 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/__main__.py +9 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/cli.py +209 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/exceptions.py +21 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/llm/__init__.py +11 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/llm/detection.py +110 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/llm/wrapper.py +207 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/rate_limiting/tracker.py +761 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/retriever_registry.py +109 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/search_engine_base.py +656 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/search_engine_factory.py +618 -0
- local_deep_research-1.3.16/src/local_deep_research/web_search_engines/search_engines_config.py +366 -0
- local_deep_research-1.3.16/tests/CI_INTEGRATION.md +81 -0
- local_deep_research-1.3.16/tests/README.md +368 -0
- local_deep_research-1.3.16/tests/TESTING_COMPARISON.md +148 -0
- local_deep_research-1.3.16/tests/TESTING_PROPOSAL.md +294 -0
- local_deep_research-1.3.16/tests/TEST_OPTIMIZATION.md +52 -0
- local_deep_research-1.3.16/tests/TEST_ORGANIZATION.md +84 -0
- local_deep_research-1.3.16/tests/__init__.py +0 -0
- local_deep_research-1.3.16/tests/accessibility_tests/README.md +209 -0
- local_deep_research-1.3.16/tests/accessibility_tests/__init__.py +1 -0
- local_deep_research-1.3.16/tests/accessibility_tests/test_accessibility.js +344 -0
- local_deep_research-1.3.16/tests/accessibility_tests/test_accessibility_backend.py +333 -0
- local_deep_research-1.3.16/tests/api_tests/README.md +75 -0
- local_deep_research-1.3.16/tests/api_tests/__init__.py +1 -0
- local_deep_research-1.3.16/tests/api_tests/conftest.py +120 -0
- local_deep_research-1.3.16/tests/api_tests/fix_search_engines.py +92 -0
- local_deep_research-1.3.16/tests/api_tests/migrate_research_mode.py +114 -0
- local_deep_research-1.3.16/tests/api_tests/populate_search_engines.py +217 -0
- local_deep_research-1.3.16/tests/api_tests/run_api_tests.py +43 -0
- local_deep_research-1.3.16/tests/api_tests/run_basic_api_tests.py +50 -0
- local_deep_research-1.3.16/tests/api_tests/test_all_apis.py +254 -0
- local_deep_research-1.3.16/tests/api_tests/test_all_endpoints.py +463 -0
- local_deep_research-1.3.16/tests/api_tests/test_api_basic.py +103 -0
- local_deep_research-1.3.16/tests/api_tests/test_api_pytest.py +137 -0
- local_deep_research-1.3.16/tests/api_tests/test_browser_endpoint.py +94 -0
- local_deep_research-1.3.16/tests/api_tests/test_collections_api.py +389 -0
- local_deep_research-1.3.16/tests/api_tests/test_comprehensive_apis.py +337 -0
- local_deep_research-1.3.16/tests/api_tests/test_csrf_header.py +60 -0
- local_deep_research-1.3.16/tests/api_tests/test_fresh_session.py +144 -0
- local_deep_research-1.3.16/tests/api_tests/test_http_examples.py +144 -0
- local_deep_research-1.3.16/tests/api_tests/test_manual_browser_auth.py +95 -0
- local_deep_research-1.3.16/tests/api_tests/test_metrics_api.py +148 -0
- local_deep_research-1.3.16/tests/api_tests/test_proper_csrf.py +187 -0
- local_deep_research-1.3.16/tests/api_tests/test_research_api_debug.py +380 -0
- local_deep_research-1.3.16/tests/api_tests/test_research_creation.py +209 -0
- local_deep_research-1.3.16/tests/api_tests/test_rest_api.py +216 -0
- local_deep_research-1.3.16/tests/api_tests/test_rest_api_simple.py +192 -0
- local_deep_research-1.3.16/tests/api_tests/test_search_engines_api.py +158 -0
- local_deep_research-1.3.16/tests/api_tests/test_session_persistence.py +147 -0
- local_deep_research-1.3.16/tests/api_tests/test_simple_auth.py +125 -0
- local_deep_research-1.3.16/tests/api_tests/test_without_csrf.py +108 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/README.md +269 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/auth_helper.js +185 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/base_api_test.js +76 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/package.json +26 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/puppeteer_config.js +52 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/__init__.py +1 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/conftest.py +91 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_export_formats.py +410 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_model_parameter.py +75 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_research_completion.py +63 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_research_results.py +76 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_research_validation.py +60 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/pytest_tests/test_start_research.py +80 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/run_pytest_tests.py +32 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/test_export_minimal.js +118 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/test_helpers.js +163 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/test_research_api_enhanced.js +222 -0
- local_deep_research-1.3.16/tests/api_tests_with_login/test_research_api_pytest.py +281 -0
- local_deep_research-1.3.16/tests/auth_tests/__init__.py +1 -0
- local_deep_research-1.3.16/tests/auth_tests/conftest.py +43 -0
- local_deep_research-1.3.16/tests/auth_tests/run_auth_tests.py +69 -0
- local_deep_research-1.3.16/tests/auth_tests/test_auth_decorators.py +198 -0
- local_deep_research-1.3.16/tests/auth_tests/test_auth_integration.py +318 -0
- local_deep_research-1.3.16/tests/auth_tests/test_auth_rate_limiting.py +325 -0
- local_deep_research-1.3.16/tests/auth_tests/test_auth_routes.py +401 -0
- local_deep_research-1.3.16/tests/auth_tests/test_encrypted_db.py +236 -0
- local_deep_research-1.3.16/tests/auth_tests/test_inmemory_storage.py +223 -0
- local_deep_research-1.3.16/tests/auth_tests/test_session_manager.py +172 -0
- local_deep_research-1.3.16/tests/citation_bugs/README.md +39 -0
- local_deep_research-1.3.16/tests/citation_bugs/__init__.py +1 -0
- local_deep_research-1.3.16/tests/citation_bugs/test_citation_edge_cases.py +416 -0
- local_deep_research-1.3.16/tests/citation_bugs/test_citation_error_handling.py +387 -0
- local_deep_research-1.3.16/tests/citation_bugs/test_citation_export_formats.py +333 -0
- local_deep_research-1.3.16/tests/citation_bugs/test_citation_performance.py +359 -0
- local_deep_research-1.3.16/tests/citation_bugs/test_multiple_citations_bug.py +223 -0
- local_deep_research-1.3.16/tests/citation_handlers/__init__.py +1 -0
- local_deep_research-1.3.16/tests/citation_handlers/conftest.py +154 -0
- local_deep_research-1.3.16/tests/citation_handlers/test_forced_answer_citation_handler.py +502 -0
- local_deep_research-1.3.16/tests/citation_handlers/test_precision_extraction_handler.py +749 -0
- local_deep_research-1.3.16/tests/citation_handlers/test_standard_citation_handler.py +517 -0
- local_deep_research-1.3.16/tests/config/__init__.py +1 -0
- local_deep_research-1.3.16/tests/config/conftest.py +54 -0
- local_deep_research-1.3.16/tests/config/test_llm_config.py +555 -0
- local_deep_research-1.3.16/tests/config/test_paths.py +136 -0
- local_deep_research-1.3.16/tests/config/test_search_config.py +223 -0
- local_deep_research-1.3.16/tests/config/test_thread_settings.py +191 -0
- local_deep_research-1.3.16/tests/conftest.py +463 -0
- local_deep_research-1.3.16/tests/database/__init__.py +1 -0
- local_deep_research-1.3.16/tests/database/test_auth_models.py +197 -0
- local_deep_research-1.3.16/tests/database/test_benchmark_models.py +454 -0
- local_deep_research-1.3.16/tests/database/test_cache_models.py +357 -0
- local_deep_research-1.3.16/tests/database/test_database_init.py +493 -0
- local_deep_research-1.3.16/tests/database/test_encrypted_database_orm.py +482 -0
- local_deep_research-1.3.16/tests/database/test_encryption_threads.py +183 -0
- local_deep_research-1.3.16/tests/database/test_metrics_models.py +315 -0
- local_deep_research-1.3.16/tests/database/test_model_consolidation.py +71 -0
- local_deep_research-1.3.16/tests/database/test_multiuser_db.py +168 -0
- local_deep_research-1.3.16/tests/database/test_no_raw_sql.py +201 -0
- local_deep_research-1.3.16/tests/database/test_orm_conversions.py +278 -0
- local_deep_research-1.3.16/tests/database/test_rate_limiting_models.py +437 -0
- local_deep_research-1.3.16/tests/database/test_research_models.py +414 -0
- local_deep_research-1.3.16/tests/database/test_settings_models.py +421 -0
- local_deep_research-1.3.16/tests/database/test_sqlcipher_missing.py +108 -0
- local_deep_research-1.3.16/tests/deletion/__init__.py +1 -0
- local_deep_research-1.3.16/tests/deletion/test_cascade_integration.py +543 -0
- local_deep_research-1.3.16/tests/deletion/test_collection_deletion.py +484 -0
- local_deep_research-1.3.16/tests/deletion/test_document_deletion.py +415 -0
- local_deep_research-1.3.16/tests/domain_classifier/__init__.py +1 -0
- local_deep_research-1.3.16/tests/domain_classifier/conftest.py +84 -0
- local_deep_research-1.3.16/tests/domain_classifier/test_classifier.py +338 -0
- local_deep_research-1.3.16/tests/domain_classifier/test_models.py +88 -0
- local_deep_research-1.3.16/tests/download_stuff_for_local.py +32 -0
- local_deep_research-1.3.16/tests/embeddings/__init__.py +0 -0
- local_deep_research-1.3.16/tests/embeddings/conftest.py +56 -0
- local_deep_research-1.3.16/tests/embeddings/test_base_provider.py +226 -0
- local_deep_research-1.3.16/tests/embeddings/test_ollama_embeddings.py +275 -0
- local_deep_research-1.3.16/tests/error_handling/__init__.py +1 -0
- local_deep_research-1.3.16/tests/error_handling/conftest.py +56 -0
- local_deep_research-1.3.16/tests/error_handling/test_error_reporter.py +351 -0
- local_deep_research-1.3.16/tests/error_handling/test_report_generator.py +407 -0
- local_deep_research-1.3.16/tests/feature_tests/IMPLEMENTATION_GUIDE_241.md +114 -0
- local_deep_research-1.3.16/tests/feature_tests/README.md +26 -0
- local_deep_research-1.3.16/tests/feature_tests/__init__.py +5 -0
- local_deep_research-1.3.16/tests/feature_tests/test_custom_context.py +144 -0
- local_deep_research-1.3.16/tests/fix_tests/README.md +36 -0
- local_deep_research-1.3.16/tests/fix_tests/test_duplicate_links_fix.py +122 -0
- local_deep_research-1.3.16/tests/fix_tests/test_milestone_logging_fix.py +216 -0
- local_deep_research-1.3.16/tests/fixtures/README.md +53 -0
- local_deep_research-1.3.16/tests/fixtures/search_engine_mocks.py +251 -0
- local_deep_research-1.3.16/tests/fuzz/__init__.py +1 -0
- local_deep_research-1.3.16/tests/fuzz/conftest.py +31 -0
- local_deep_research-1.3.16/tests/fuzz/test_fuzz_security.py +630 -0
- local_deep_research-1.3.16/tests/fuzz/test_fuzz_utilities.py +111 -0
- local_deep_research-1.3.16/tests/health_check/README.md +271 -0
- local_deep_research-1.3.16/tests/health_check/run_quick_health_check.py +88 -0
- local_deep_research-1.3.16/tests/health_check/test_endpoints_health.py +125 -0
- local_deep_research-1.3.16/tests/health_check/test_endpoints_health.sh +119 -0
- local_deep_research-1.3.16/tests/infrastructure_tests/README.md +58 -0
- local_deep_research-1.3.16/tests/infrastructure_tests/__init__.py +11 -0
- local_deep_research-1.3.16/tests/infrastructure_tests/package.json +23 -0
- local_deep_research-1.3.16/tests/infrastructure_tests/test_route_registry.py +322 -0
- local_deep_research-1.3.16/tests/infrastructure_tests/test_urls.test.js +242 -0
- local_deep_research-1.3.16/tests/infrastructure_tests/test_urls_js.py +363 -0
- local_deep_research-1.3.16/tests/langchain_integration/README.md +183 -0
- local_deep_research-1.3.16/tests/langchain_integration/test_combined_llm_retriever.py +523 -0
- local_deep_research-1.3.16/tests/langchain_integration/test_custom_langchain_llm.py +354 -0
- local_deep_research-1.3.16/tests/langchain_integration/test_custom_langchain_retriever.py +468 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_api_debug.js +211 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_basic_functionality.js +167 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_clean_content.js +65 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_enhanced.js +114 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_error_debug.js +97 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_features.js +149 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_final.js +240 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_final_check.js +133 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_load_sequence.js +103 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_no_cache.js +80 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_render_debug.js +137 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_screenshots.js +114 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_status.js +68 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_ui_debug.js +129 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_visual_final.js +58 -0
- local_deep_research-1.3.16/tests/ldr-news-dev-files/redundant-tests/test_news_with_data.js +67 -0
- local_deep_research-1.3.16/tests/llm/__init__.py +1 -0
- local_deep_research-1.3.16/tests/llm/test_llm_registry.py +195 -0
- local_deep_research-1.3.16/tests/llm_providers/__init__.py +0 -0
- local_deep_research-1.3.16/tests/llm_providers/conftest.py +130 -0
- local_deep_research-1.3.16/tests/llm_providers/test_auto_discovery.py +305 -0
- local_deep_research-1.3.16/tests/llm_providers/test_custom_endpoint_ci_integration.py +145 -0
- local_deep_research-1.3.16/tests/llm_providers/test_custom_openai_endpoint.py +318 -0
- local_deep_research-1.3.16/tests/llm_providers/test_ollama_provider.py +373 -0
- local_deep_research-1.3.16/tests/llm_providers/test_openai_base.py +418 -0
- local_deep_research-1.3.16/tests/metrics/__init__.py +1 -0
- local_deep_research-1.3.16/tests/metrics/conftest.py +75 -0
- local_deep_research-1.3.16/tests/metrics/test_cost_calculator.py +380 -0
- local_deep_research-1.3.16/tests/metrics/test_database.py +206 -0
- local_deep_research-1.3.16/tests/metrics/test_pricing_cache.py +255 -0
- local_deep_research-1.3.16/tests/metrics/test_pricing_fetcher.py +290 -0
- local_deep_research-1.3.16/tests/metrics/test_query_utils.py +117 -0
- local_deep_research-1.3.16/tests/metrics/test_search_tracker.py +418 -0
- local_deep_research-1.3.16/tests/metrics/test_token_counter.py +733 -0
- local_deep_research-1.3.16/tests/mock_fixtures.py +248 -0
- local_deep_research-1.3.16/tests/mock_llm_config.py +58 -0
- local_deep_research-1.3.16/tests/mock_modules.py +186 -0
- local_deep_research-1.3.16/tests/news/test_api_exceptions.py +168 -0
- local_deep_research-1.3.16/tests/news/test_exceptions.py +196 -0
- local_deep_research-1.3.16/tests/notifications/__init__.py +0 -0
- local_deep_research-1.3.16/tests/notifications/test_manager.py +773 -0
- local_deep_research-1.3.16/tests/notifications/test_service.py +302 -0
- local_deep_research-1.3.16/tests/notifications/test_url_builder.py +298 -0
- local_deep_research-1.3.16/tests/package.json +11 -0
- local_deep_research-1.3.16/tests/pdf_tests/__init__.py +1 -0
- local_deep_research-1.3.16/tests/pdf_tests/test_file_validator.py +287 -0
- local_deep_research-1.3.16/tests/pdf_tests/test_pdf_upload.py +243 -0
- local_deep_research-1.3.16/tests/programmatic_access/test_ollama_integration.py +318 -0
- local_deep_research-1.3.16/tests/programmatic_access/test_programmatic_access.py +247 -0
- local_deep_research-1.3.16/tests/puppeteer/package.json +19 -0
- local_deep_research-1.3.16/tests/puppeteer/test_openai_api_key_ui.js +312 -0
- local_deep_research-1.3.16/tests/rate_limiting/test_rate_limiting.py +391 -0
- local_deep_research-1.3.16/tests/research_library/__init__.py +0 -0
- local_deep_research-1.3.16/tests/research_library/conftest.py +406 -0
- local_deep_research-1.3.16/tests/research_library/deletion/__init__.py +1 -0
- local_deep_research-1.3.16/tests/research_library/deletion/services/__init__.py +1 -0
- local_deep_research-1.3.16/tests/research_library/deletion/services/test_bulk_deletion.py +222 -0
- local_deep_research-1.3.16/tests/research_library/deletion/services/test_collection_deletion.py +259 -0
- local_deep_research-1.3.16/tests/research_library/deletion/services/test_document_deletion.py +317 -0
- local_deep_research-1.3.16/tests/research_library/deletion/utils/__init__.py +1 -0
- local_deep_research-1.3.16/tests/research_library/deletion/utils/test_cascade_helper.py +330 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/__init__.py +0 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_arxiv_downloader.py +328 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_base_downloader.py +314 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_biorxiv_downloader.py +235 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_direct_pdf_downloader.py +144 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_generic_downloader.py +420 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_openalex_downloader.py +197 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_pubmed_downloader.py +480 -0
- local_deep_research-1.3.16/tests/research_library/downloaders/test_semantic_scholar_downloader.py +219 -0
- local_deep_research-1.3.16/tests/research_library/services/__init__.py +0 -0
- local_deep_research-1.3.16/tests/research_library/services/test_download_service.py +632 -0
- local_deep_research-1.3.16/tests/research_library/services/test_library_rag_service.py +759 -0
- local_deep_research-1.3.16/tests/research_library/services/test_library_service.py +426 -0
- local_deep_research-1.3.16/tests/research_library/services/test_pdf_storage_manager.py +373 -0
- local_deep_research-1.3.16/tests/research_scheduler/__init__.py +1 -0
- local_deep_research-1.3.16/tests/research_scheduler/conftest.py +36 -0
- local_deep_research-1.3.16/tests/research_scheduler/test_document_scheduler.py +139 -0
- local_deep_research-1.3.16/tests/research_scheduler/test_routes.py +40 -0
- local_deep_research-1.3.16/tests/retriever_integration/__init__.py +1 -0
- local_deep_research-1.3.16/tests/retriever_integration/conftest.py +92 -0
- local_deep_research-1.3.16/tests/retriever_integration/test_api_integration.py +262 -0
- local_deep_research-1.3.16/tests/retriever_integration/test_e2e_basic.py +170 -0
- local_deep_research-1.3.16/tests/retriever_integration/test_factory_integration.py +117 -0
- local_deep_research-1.3.16/tests/retriever_integration/test_retriever_registry.py +127 -0
- local_deep_research-1.3.16/tests/retriever_integration/test_search_engine_retriever.py +205 -0
- local_deep_research-1.3.16/tests/run_all_tests.py +628 -0
- local_deep_research-1.3.16/tests/run_followup_tests.sh +118 -0
- local_deep_research-1.3.16/tests/search_engines/__init__.py +0 -0
- local_deep_research-1.3.16/tests/search_engines/conftest.py +101 -0
- local_deep_research-1.3.16/tests/search_engines/test_base_search_engine.py +232 -0
- local_deep_research-1.3.16/tests/search_engines/test_rate_limiter.py +244 -0
- local_deep_research-1.3.16/tests/search_engines/test_wikipedia_search.py +205 -0
- local_deep_research-1.3.16/tests/searxng/__init__.py +1 -0
- local_deep_research-1.3.16/tests/searxng/test_searxng.py +147 -0
- local_deep_research-1.3.16/tests/security/__init__.py +0 -0
- local_deep_research-1.3.16/tests/security/conftest.py +69 -0
- local_deep_research-1.3.16/tests/security/test_api_security.py +421 -0
- local_deep_research-1.3.16/tests/security/test_auth_security.py +371 -0
- local_deep_research-1.3.16/tests/security/test_cookie_security.py +412 -0
- local_deep_research-1.3.16/tests/security/test_csrf_protection.py +323 -0
- local_deep_research-1.3.16/tests/security/test_data_sanitizer.py +307 -0
- local_deep_research-1.3.16/tests/security/test_file_upload_validator.py +407 -0
- local_deep_research-1.3.16/tests/security/test_input_validation.py +492 -0
- local_deep_research-1.3.16/tests/security/test_path_validator.py +428 -0
- local_deep_research-1.3.16/tests/security/test_safe_requests_hook.py +225 -0
- local_deep_research-1.3.16/tests/security/test_security_headers.py +145 -0
- local_deep_research-1.3.16/tests/security/test_sql_injection.py +285 -0
- local_deep_research-1.3.16/tests/security/test_ssrf_validator.py +365 -0
- local_deep_research-1.3.16/tests/security/test_url_validator.py +485 -0
- local_deep_research-1.3.16/tests/security/test_xss_prevention.py +333 -0
- local_deep_research-1.3.16/tests/settings/env_vars/test_env_auto_generation.py +188 -0
- local_deep_research-1.3.16/tests/settings/env_vars/test_env_var_usage.py +343 -0
- local_deep_research-1.3.16/tests/settings/test_boolean_parsing.py +304 -0
- local_deep_research-1.3.16/tests/settings/test_checkbox_save.py +244 -0
- local_deep_research-1.3.16/tests/settings/test_env_settings.py +316 -0
- local_deep_research-1.3.16/tests/storage/__init__.py +1 -0
- local_deep_research-1.3.16/tests/storage/conftest.py +54 -0
- local_deep_research-1.3.16/tests/storage/test_composite_storage.py +222 -0
- local_deep_research-1.3.16/tests/storage/test_database_storage.py +268 -0
- local_deep_research-1.3.16/tests/storage/test_factory.py +134 -0
- local_deep_research-1.3.16/tests/storage/test_file_storage.py +283 -0
- local_deep_research-1.3.16/tests/strategies/__init__.py +1 -0
- local_deep_research-1.3.16/tests/strategies/compare_strategies_visual.py +382 -0
- local_deep_research-1.3.16/tests/strategies/test_adaptive_strategy.py +137 -0
- local_deep_research-1.3.16/tests/strategies/test_iterative_reasoning.py +230 -0
- local_deep_research-1.3.16/tests/strategies/test_search_system_iterative.py +104 -0
- local_deep_research-1.3.16/tests/test_api_key_configuration.py +468 -0
- local_deep_research-1.3.16/tests/test_api_key_settings.js +268 -0
- local_deep_research-1.3.16/tests/test_api_settings.py +224 -0
- local_deep_research-1.3.16/tests/test_api_settings_advanced.py +462 -0
- local_deep_research-1.3.16/tests/test_api_settings_e2e.py +417 -0
- local_deep_research-1.3.16/tests/test_api_settings_validation.py +314 -0
- local_deep_research-1.3.16/tests/test_ci_config.py +19 -0
- local_deep_research-1.3.16/tests/test_citation_handler.py +194 -0
- local_deep_research-1.3.16/tests/test_context_overflow_detection.py +304 -0
- local_deep_research-1.3.16/tests/test_database_initialization.py +166 -0
- local_deep_research-1.3.16/tests/test_followup_api.py +411 -0
- local_deep_research-1.3.16/tests/test_google_pse.py +153 -0
- local_deep_research-1.3.16/tests/test_link_analytics.py +418 -0
- local_deep_research-1.3.16/tests/test_llm/__init__.py +1 -0
- local_deep_research-1.3.16/tests/test_llm/run_llm_tests.sh +24 -0
- local_deep_research-1.3.16/tests/test_llm/test_api_llm_integration.py +314 -0
- local_deep_research-1.3.16/tests/test_llm/test_llm_benchmarks.py +259 -0
- local_deep_research-1.3.16/tests/test_llm/test_llm_edge_cases.py +432 -0
- local_deep_research-1.3.16/tests/test_llm/test_llm_integration.py +276 -0
- local_deep_research-1.3.16/tests/test_llm/test_llm_registry.py +203 -0
- local_deep_research-1.3.16/tests/test_llm_provider_integration.py +463 -0
- local_deep_research-1.3.16/tests/test_llm_rate_limiting.py +225 -0
- local_deep_research-1.3.16/tests/test_openai_api_key_e2e.py +258 -0
- local_deep_research-1.3.16/tests/test_openai_api_key_usage.py +302 -0
- local_deep_research-1.3.16/tests/test_programmatic_custom_llm_retriever.py +436 -0
- local_deep_research-1.3.16/tests/test_report_generator.py +307 -0
- local_deep_research-1.3.16/tests/test_search_cache_stampede.py +289 -0
- local_deep_research-1.3.16/tests/test_search_engines_enhanced.py +399 -0
- local_deep_research-1.3.16/tests/test_search_system.py +420 -0
- local_deep_research-1.3.16/tests/test_settings_manager.py +385 -0
- local_deep_research-1.3.16/tests/test_url_utils.py +132 -0
- local_deep_research-1.3.16/tests/test_url_utils_simple.py +44 -0
- local_deep_research-1.3.16/tests/test_utils.py +212 -0
- local_deep_research-1.3.16/tests/test_wikipedia_url_security.py +165 -0
- local_deep_research-1.3.16/tests/text_optimization/__init__.py +1 -0
- local_deep_research-1.3.16/tests/text_optimization/test_citation_formatter.py +767 -0
- local_deep_research-1.3.16/tests/text_optimization/test_integration.py +236 -0
- local_deep_research-1.3.16/tests/text_processing/__init__.py +1 -0
- local_deep_research-1.3.16/tests/text_processing/test_text_cleaner.py +77 -0
- local_deep_research-1.3.16/tests/ui_tests/DEBUG_metrics_thread_fix.js +106 -0
- local_deep_research-1.3.16/tests/ui_tests/DEBUG_mobile_debug.js +100 -0
- local_deep_research-1.3.16/tests/ui_tests/DEBUG_news_features_fixed.js +124 -0
- local_deep_research-1.3.16/tests/ui_tests/DEBUG_research_submit_debug.js +356 -0
- local_deep_research-1.3.16/tests/ui_tests/DEBUG_settings_mobile_fix.js +109 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_ajax_research_submission.js +156 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_complete_workflow.js +171 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_fixed_research.js +116 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_followup_simple.js +161 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_full_research_completion.js +225 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_multiple_research.js +290 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_fixed_model.js +190 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_submission.js +148 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_with_model.js +245 -0
- local_deep_research-1.3.16/tests/ui_tests/NO_CI_executes_research_research_working_config.js +214 -0
- local_deep_research-1.3.16/tests/ui_tests/README.md +230 -0
- local_deep_research-1.3.16/tests/ui_tests/UI_TEST_SUMMARY.md +66 -0
- local_deep_research-1.3.16/tests/ui_tests/__init__.py +1 -0
- local_deep_research-1.3.16/tests/ui_tests/auth_helper.js +573 -0
- local_deep_research-1.3.16/tests/ui_tests/browser_config.js +54 -0
- local_deep_research-1.3.16/tests/ui_tests/check_api_directly.js +110 -0
- local_deep_research-1.3.16/tests/ui_tests/check_available_models.js +81 -0
- local_deep_research-1.3.16/tests/ui_tests/check_chart_data.js +96 -0
- local_deep_research-1.3.16/tests/ui_tests/check_test_status.js +126 -0
- local_deep_research-1.3.16/tests/ui_tests/check_tests.js +98 -0
- local_deep_research-1.3.16/tests/ui_tests/library/test_collections_page.js +229 -0
- local_deep_research-1.3.16/tests/ui_tests/library/test_library_documents.js +283 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/README.md +40 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_layout_bugs_ci.js +793 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_all_pages_ci.js +338 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_diagnostic.js +468 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_nav_all_pages.js +410 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_navigation_authenticated.js +97 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_navigation_ci.js +599 -0
- local_deep_research-1.3.16/tests/ui_tests/mobile/test_mobile_ui_comprehensive.js +386 -0
- local_deep_research-1.3.16/tests/ui_tests/model_helper.js +104 -0
- local_deep_research-1.3.16/tests/ui_tests/news/test_scheduler_activity.js +155 -0
- local_deep_research-1.3.16/tests/ui_tests/news/test_scheduler_simple.js +49 -0
- local_deep_research-1.3.16/tests/ui_tests/news/test_scheduler_simple_standalone.js +54 -0
- local_deep_research-1.3.16/tests/ui_tests/package-lock.json +1128 -0
- local_deep_research-1.3.16/tests/ui_tests/package.json +41 -0
- local_deep_research-1.3.16/tests/ui_tests/puppeteer_config.js +170 -0
- local_deep_research-1.3.16/tests/ui_tests/run_all_tests.js +179 -0
- local_deep_research-1.3.16/tests/ui_tests/run_all_tests_comprehensive.js +334 -0
- local_deep_research-1.3.16/tests/ui_tests/run_all_ui_tests.js +314 -0
- local_deep_research-1.3.16/tests/ui_tests/run_api_key_test.sh +53 -0
- local_deep_research-1.3.16/tests/ui_tests/run_core_tests.js +179 -0
- local_deep_research-1.3.16/tests/ui_tests/run_metrics_tests.js +61 -0
- local_deep_research-1.3.16/tests/ui_tests/test-xss-protection.html +56 -0
- local_deep_research-1.3.16/tests/ui_tests/test_analysis_updated.md +196 -0
- local_deep_research-1.3.16/tests/ui_tests/test_api_key_comprehensive.js +507 -0
- local_deep_research-1.3.16/tests/ui_tests/test_api_key_enter_save.js +268 -0
- local_deep_research-1.3.16/tests/ui_tests/test_api_key_integrated.js +340 -0
- local_deep_research-1.3.16/tests/ui_tests/test_api_key_settings.js +370 -0
- local_deep_research-1.3.16/tests/ui_tests/test_api_key_simple_verify.js +131 -0
- local_deep_research-1.3.16/tests/ui_tests/test_api_key_via_api.js +185 -0
- local_deep_research-1.3.16/tests/ui_tests/test_auth_flow.js +160 -0
- local_deep_research-1.3.16/tests/ui_tests/test_autocomplete_selection.js +349 -0
- local_deep_research-1.3.16/tests/ui_tests/test_benchmark_settings.js +578 -0
- local_deep_research-1.3.16/tests/ui_tests/test_charts.js +87 -0
- local_deep_research-1.3.16/tests/ui_tests/test_check_research_thread.py +44 -0
- local_deep_research-1.3.16/tests/ui_tests/test_check_search_engines.js +123 -0
- local_deep_research-1.3.16/tests/ui_tests/test_check_user_database.js +116 -0
- local_deep_research-1.3.16/tests/ui_tests/test_checkbox_settings.js +640 -0
- local_deep_research-1.3.16/tests/ui_tests/test_concurrent_limit.js +160 -0
- local_deep_research-1.3.16/tests/ui_tests/test_context_overflow.js +279 -0
- local_deep_research-1.3.16/tests/ui_tests/test_context_overflow_standalone.js +280 -0
- local_deep_research-1.3.16/tests/ui_tests/test_cost_analytics.js +201 -0
- local_deep_research-1.3.16/tests/ui_tests/test_direct_mode.js +201 -0
- local_deep_research-1.3.16/tests/ui_tests/test_direct_uuid_insert.py +126 -0
- local_deep_research-1.3.16/tests/ui_tests/test_export_functionality.js +377 -0
- local_deep_research-1.3.16/tests/ui_tests/test_followup_api.js +62 -0
- local_deep_research-1.3.16/tests/ui_tests/test_followup_research.js +396 -0
- local_deep_research-1.3.16/tests/ui_tests/test_full_navigation.js +183 -0
- local_deep_research-1.3.16/tests/ui_tests/test_history_page.js +237 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics.js +70 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_browser.js +96 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_chart.js +12 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_charts.js +85 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_dashboard.js +410 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_display.js +132 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_full_flow.js +386 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_only.js +97 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_screenshot.js +83 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_subpages.js +69 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_verification.js +309 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_visibility.js +212 -0
- local_deep_research-1.3.16/tests/ui_tests/test_metrics_with_llm.js +310 -0
- local_deep_research-1.3.16/tests/ui_tests/test_mixed_id_handling.py +130 -0
- local_deep_research-1.3.16/tests/ui_tests/test_mobile_metrics.js +88 -0
- local_deep_research-1.3.16/tests/ui_tests/test_network_requests.js +93 -0
- local_deep_research-1.3.16/tests/ui_tests/test_news_breaking_table.js +305 -0
- local_deep_research-1.3.16/tests/ui_tests/test_news_js_loads.js +97 -0
- local_deep_research-1.3.16/tests/ui_tests/test_news_subscription_form.js +254 -0
- local_deep_research-1.3.16/tests/ui_tests/test_pages_browser.js +310 -0
- local_deep_research-1.3.16/tests/ui_tests/test_queue_simple.js +172 -0
- local_deep_research-1.3.16/tests/ui_tests/test_quick_screenshot.js +39 -0
- local_deep_research-1.3.16/tests/ui_tests/test_rate_limiting_chart.js +88 -0
- local_deep_research-1.3.16/tests/ui_tests/test_rate_limiting_settings.js +212 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_api.js +192 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_cancellation.js +305 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_details.js +342 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_diagnosis.js +337 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_diagnostic.js +81 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_form.js +174 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_results.js +175 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_search_analysis.js +358 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_searxng.js +126 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_simple.js +183 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_status.js +118 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_submit.js +147 -0
- local_deep_research-1.3.16/tests/ui_tests/test_research_verify.js +185 -0
- local_deep_research-1.3.16/tests/ui_tests/test_responsive_ui_comprehensive.js +473 -0
- local_deep_research-1.3.16/tests/ui_tests/test_settings_errors.js +108 -0
- local_deep_research-1.3.16/tests/ui_tests/test_settings_exploration.js +160 -0
- local_deep_research-1.3.16/tests/ui_tests/test_settings_page.js +66 -0
- local_deep_research-1.3.16/tests/ui_tests/test_settings_persistence.js +355 -0
- local_deep_research-1.3.16/tests/ui_tests/test_settings_save.js +101 -0
- local_deep_research-1.3.16/tests/ui_tests/test_settings_simple.js +161 -0
- local_deep_research-1.3.16/tests/ui_tests/test_simple_auth.js +103 -0
- local_deep_research-1.3.16/tests/ui_tests/test_simple_cost.js +152 -0
- local_deep_research-1.3.16/tests/ui_tests/test_simple_metrics.js +84 -0
- local_deep_research-1.3.16/tests/ui_tests/test_simple_research_api.py +114 -0
- local_deep_research-1.3.16/tests/ui_tests/test_star_reviews.js +157 -0
- local_deep_research-1.3.16/tests/ui_tests/test_suite.js +122 -0
- local_deep_research-1.3.16/tests/ui_tests/test_toast_notifications.js +344 -0
- local_deep_research-1.3.16/tests/ui_tests/test_trace_error.py +73 -0
- local_deep_research-1.3.16/tests/ui_tests/test_ui_screenshots.js +76 -0
- local_deep_research-1.3.16/tests/ui_tests/test_uuid_fresh_db.py +220 -0
- local_deep_research-1.3.16/tests/ui_tests/test_uuid_research.py +236 -0
- local_deep_research-1.3.16/tests/ui_tests/tests/news/test_subscription_form.js +285 -0
- local_deep_research-1.3.16/tests/utilities/__init__.py +1 -0
- local_deep_research-1.3.16/tests/utilities/conftest.py +110 -0
- local_deep_research-1.3.16/tests/utilities/test_db_utils.py +381 -0
- local_deep_research-1.3.16/tests/utilities/test_enums.py +151 -0
- local_deep_research-1.3.16/tests/utilities/test_es_utils.py +576 -0
- local_deep_research-1.3.16/tests/utilities/test_llm_utils.py +661 -0
- local_deep_research-1.3.16/tests/utilities/test_log_utils.py +623 -0
- local_deep_research-1.3.16/tests/utilities/test_search_cache.py +644 -0
- local_deep_research-1.3.16/tests/utilities/test_search_utilities.py +619 -0
- local_deep_research-1.3.16/tests/utilities/test_thread_context.py +333 -0
- local_deep_research-1.3.16/tests/utilities/test_threading_utils.py +422 -0
- local_deep_research-1.3.16/tests/utilities/test_url_utils.py +177 -0
- local_deep_research-1.3.16/tests/web_services/__init__.py +1 -0
- local_deep_research-1.3.16/tests/web_services/conftest.py +206 -0
- local_deep_research-1.3.16/tests/web_services/test_pdf_extraction_service.py +488 -0
- local_deep_research-1.3.16/tests/web_services/test_pdf_service.py +309 -0
- local_deep_research-1.3.16/tests/web_services/test_research_sources_service.py +809 -0
- local_deep_research-1.3.16/tests/web_services/test_resource_service.py +503 -0
- 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
|
+
[](https://github.com/LearningCircuit/local-deep-research/stargazers)
|
|
108
|
+
[](https://hub.docker.com/r/localdeepresearch/local-deep-research)
|
|
109
|
+
[](https://pypi.org/project/local-deep-research/)
|
|
110
|
+
|
|
111
|
+
[](https://trendshift.io/repositories/14116)
|
|
112
|
+
|
|
113
|
+
[](https://github.com/LearningCircuit/local-deep-research/commits/main)
|
|
114
|
+
[](https://github.com/LearningCircuit/local-deep-research/commits/main)
|
|
115
|
+
|
|
116
|
+
[](https://github.com/LearningCircuit/local-deep-research/tree/main/community_benchmark_results)
|
|
117
|
+
[](docs/SQLCIPHER_INSTALL.md)
|
|
118
|
+
|
|
119
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/security-tests.yml)
|
|
120
|
+
[](https://github.com/LearningCircuit/local-deep-research/security/code-scanning)
|
|
121
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/semgrep.yml)
|
|
122
|
+
[](https://securityscorecards.dev/viewer/?uri=github.com/LearningCircuit/local-deep-research)
|
|
123
|
+
|
|
124
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/tests.yml)
|
|
125
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/pre-commit.yml)
|
|
126
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/container-security.yml)
|
|
127
|
+
|
|
128
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/docker-publish.yml)
|
|
129
|
+
[](https://github.com/LearningCircuit/local-deep-research/actions/workflows/publish.yml)
|
|
130
|
+
|
|
131
|
+
[](https://discord.gg/ttcqQeFcJ3)
|
|
132
|
+
[](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
|
+
[](docs/SQLCIPHER_INSTALL.md)
|
|
164
|
+
[](docs/MIGRATION_GUIDE_v1.md)
|
|
165
|
+
[](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).
|