local-deep-research 0.6.0__tar.gz → 0.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (391) hide show
  1. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/PKG-INFO +2 -2
  2. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/README.md +1 -1
  3. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/pyproject.toml +1 -1
  4. local_deep_research-0.6.1/src/local_deep_research/__version__.py +1 -0
  5. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/benchmark_results.html +146 -8
  6. local_deep_research-0.6.1/tests/package.json +5 -0
  7. local_deep_research-0.6.1/tests/ui_tests/test_simple_cost.js +155 -0
  8. local_deep_research-0.6.0/src/local_deep_research/__version__.py +0 -1
  9. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/LICENSE +0 -0
  10. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/__init__.py +0 -0
  11. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/__init__.py +0 -0
  12. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/answer_decoding/__init__.py +0 -0
  13. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/answer_decoding/browsecomp_answer_decoder.py +0 -0
  14. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/README.md +0 -0
  15. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/__init__.py +0 -0
  16. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/adaptive_explorer.py +0 -0
  17. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/base_explorer.py +0 -0
  18. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/constraint_guided_explorer.py +0 -0
  19. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/diversity_explorer.py +0 -0
  20. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/parallel_explorer.py +0 -0
  21. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidate_exploration/progressive_explorer.py +0 -0
  22. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidates/__init__.py +0 -0
  23. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/candidates/base_candidate.py +0 -0
  24. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/README.md +0 -0
  25. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/__init__.py +0 -0
  26. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/base_constraint_checker.py +0 -0
  27. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/constraint_checker.py +0 -0
  28. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/constraint_satisfaction_tracker.py +0 -0
  29. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/dual_confidence_checker.py +0 -0
  30. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/evidence_analyzer.py +0 -0
  31. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/intelligent_constraint_relaxer.py +0 -0
  32. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/rejection_engine.py +0 -0
  33. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/strict_checker.py +0 -0
  34. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraint_checking/threshold_checker.py +0 -0
  35. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraints/__init__.py +0 -0
  36. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraints/base_constraint.py +0 -0
  37. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/constraints/constraint_analyzer.py +0 -0
  38. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/evidence/__init__.py +0 -0
  39. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/evidence/base_evidence.py +0 -0
  40. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/evidence/evaluator.py +0 -0
  41. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/evidence/requirements.py +0 -0
  42. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/filters/__init__.py +0 -0
  43. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/filters/base_filter.py +0 -0
  44. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +0 -0
  45. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +0 -0
  46. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/findings/base_findings.py +0 -0
  47. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/findings/repository.py +0 -0
  48. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/knowledge/__init__.py +0 -0
  49. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +0 -0
  50. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +0 -0
  51. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/query_generation/adaptive_query_generator.py +0 -0
  52. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/__init__.py +0 -0
  53. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/atomic_fact_question.py +0 -0
  54. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/base_question.py +0 -0
  55. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/browsecomp_question.py +0 -0
  56. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +0 -0
  57. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/entity_aware_question.py +0 -0
  58. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/questions/standard_question.py +0 -0
  59. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/repositories/__init__.py +0 -0
  60. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/search_optimization/cross_constraint_manager.py +0 -0
  61. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/source_management/diversity_manager.py +0 -0
  62. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/__init__.py +0 -0
  63. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/adaptive_decomposition_strategy.py +0 -0
  64. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +0 -0
  65. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/browsecomp_entity_strategy.py +0 -0
  66. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/browsecomp_optimized_strategy.py +0 -0
  67. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/concurrent_dual_confidence_strategy.py +0 -0
  68. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/constrained_search_strategy.py +0 -0
  69. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/constraint_parallel_strategy.py +0 -0
  70. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/direct_search_strategy.py +0 -0
  71. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/dual_confidence_strategy.py +0 -0
  72. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/dual_confidence_with_rejection.py +0 -0
  73. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/early_stop_constrained_strategy.py +0 -0
  74. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/entity_aware_source_strategy.py +0 -0
  75. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy.py +0 -0
  76. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy_v2.py +0 -0
  77. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/focused_iteration_strategy.py +0 -0
  78. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/improved_evidence_based_strategy.py +0 -0
  79. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/iterative_reasoning_strategy.py +0 -0
  80. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +0 -0
  81. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/llm_driven_modular_strategy.py +0 -0
  82. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/modular_strategy.py +0 -0
  83. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/parallel_constrained_strategy.py +0 -0
  84. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +0 -0
  85. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +0 -0
  86. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/recursive_decomposition_strategy.py +0 -0
  87. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/smart_decomposition_strategy.py +0 -0
  88. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/smart_query_strategy.py +0 -0
  89. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/source_based_strategy.py +0 -0
  90. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +0 -0
  91. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/tools/__init__.py +0 -0
  92. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/tools/base_tool.py +0 -0
  93. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +0 -0
  94. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +0 -0
  95. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +0 -0
  96. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/api/__init__.py +0 -0
  97. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/api/benchmark_functions.py +0 -0
  98. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/api/research_functions.py +0 -0
  99. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/README.md +0 -0
  100. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/__init__.py +0 -0
  101. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/benchmark_functions.py +0 -0
  102. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/cli/__init__.py +0 -0
  103. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/cli/benchmark_commands.py +0 -0
  104. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/cli.py +0 -0
  105. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/comparison/__init__.py +0 -0
  106. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/comparison/evaluator.py +0 -0
  107. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets/__init__.py +0 -0
  108. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets/base.py +0 -0
  109. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets/browsecomp.py +0 -0
  110. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets/custom_dataset_template.py +0 -0
  111. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets/simpleqa.py +0 -0
  112. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets/utils.py +0 -0
  113. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/datasets.py +0 -0
  114. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/efficiency/__init__.py +0 -0
  115. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/efficiency/resource_monitor.py +0 -0
  116. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/efficiency/speed_profiler.py +0 -0
  117. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/evaluators/__init__.py +0 -0
  118. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/evaluators/base.py +0 -0
  119. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/evaluators/browsecomp.py +0 -0
  120. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/evaluators/composite.py +0 -0
  121. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/evaluators/simpleqa.py +0 -0
  122. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/graders.py +0 -0
  123. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/metrics/README.md +0 -0
  124. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/metrics/__init__.py +0 -0
  125. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/metrics/calculation.py +0 -0
  126. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/metrics/reporting.py +0 -0
  127. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/metrics/visualization.py +0 -0
  128. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/metrics.py +0 -0
  129. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/models/__init__.py +0 -0
  130. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/models/benchmark_models.py +0 -0
  131. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/optimization/__init__.py +0 -0
  132. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/optimization/api.py +0 -0
  133. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/optimization/metrics.py +0 -0
  134. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/optimization/optuna_optimizer.py +0 -0
  135. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/runners.py +0 -0
  136. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/templates.py +0 -0
  137. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/ui/__init__.py +0 -0
  138. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/web_api/__init__.py +0 -0
  139. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/web_api/benchmark_routes.py +0 -0
  140. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/benchmarks/web_api/benchmark_service.py +0 -0
  141. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/citation_handler.py +0 -0
  142. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/citation_handlers/__init__.py +0 -0
  143. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/citation_handlers/base_citation_handler.py +0 -0
  144. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/citation_handlers/forced_answer_citation_handler.py +0 -0
  145. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/citation_handlers/precision_extraction_handler.py +0 -0
  146. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/citation_handlers/standard_citation_handler.py +0 -0
  147. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/config/__init__.py +0 -0
  148. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/config/llm_config.py +0 -0
  149. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/config/search_config.py +0 -0
  150. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/defaults/.env.template +0 -0
  151. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/defaults/__init__.py +0 -0
  152. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/defaults/default_settings.json +0 -0
  153. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/error_handling/__init__.py +0 -0
  154. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/error_handling/error_reporter.py +0 -0
  155. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/error_handling/report_generator.py +0 -0
  156. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/llm/__init__.py +0 -0
  157. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/llm/llm_registry.py +0 -0
  158. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/__init__.py +0 -0
  159. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/database.py +0 -0
  160. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/db_models.py +0 -0
  161. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/migrate_add_provider_to_token_usage.py +0 -0
  162. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/migrate_call_stack_tracking.py +0 -0
  163. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/migrate_enhanced_tracking.py +0 -0
  164. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/migrate_research_ratings.py +0 -0
  165. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/models.py +0 -0
  166. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/pricing/__init__.py +0 -0
  167. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/pricing/cost_calculator.py +0 -0
  168. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/pricing/pricing_cache.py +0 -0
  169. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/pricing/pricing_fetcher.py +0 -0
  170. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/query_utils.py +0 -0
  171. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/search_tracker.py +0 -0
  172. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/metrics/token_counter.py +0 -0
  173. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/migrate_db.py +0 -0
  174. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/report_generator.py +0 -0
  175. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/search_system.py +0 -0
  176. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/setup_data_dir.py +0 -0
  177. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/__init__.py +0 -0
  178. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/db_utils.py +0 -0
  179. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/enums.py +0 -0
  180. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/es_utils.py +0 -0
  181. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/llm_utils.py +0 -0
  182. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/log_utils.py +0 -0
  183. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/search_cache.py +0 -0
  184. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/search_utilities.py +0 -0
  185. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/setup_utils.py +0 -0
  186. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/thread_context.py +0 -0
  187. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/threading_utils.py +0 -0
  188. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/utilities/url_utils.py +0 -0
  189. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/__init__.py +0 -0
  190. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/api.py +0 -0
  191. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/app.py +0 -0
  192. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/app_factory.py +0 -0
  193. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/README.md +0 -0
  194. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/benchmark_schema.py +0 -0
  195. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/convert_research_id_to_string.py +0 -0
  196. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/migrate_to_ldr_db.py +0 -0
  197. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/migrations.py +0 -0
  198. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/models.py +0 -0
  199. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/schema_upgrade.py +0 -0
  200. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/database/uuid_migration.py +0 -0
  201. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/models/database.py +0 -0
  202. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/models/settings.py +0 -0
  203. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/api_routes.py +0 -0
  204. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/benchmark_routes.py +0 -0
  205. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/globals.py +0 -0
  206. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/history_routes.py +0 -0
  207. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/metrics_routes.py +0 -0
  208. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/research_routes.py +0 -0
  209. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/route_registry.py +0 -0
  210. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/routes/settings_routes.py +0 -0
  211. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/services/research_service.py +0 -0
  212. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/services/resource_service.py +0 -0
  213. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/services/settings_manager.py +0 -0
  214. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/services/settings_service.py +0 -0
  215. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/services/socket_service.py +0 -0
  216. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/css/custom_dropdown.css +0 -0
  217. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/css/settings.css +0 -0
  218. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/css/styles.css +0 -0
  219. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/custom_dropdown.js +0 -0
  220. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/detail.js +0 -0
  221. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/details.js +0 -0
  222. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/fallback/formatting.js +0 -0
  223. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/fallback/ui.js +0 -0
  224. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/history.js +0 -0
  225. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/logpanel.js +0 -0
  226. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/progress.js +0 -0
  227. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/research.js +0 -0
  228. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/results.js +0 -0
  229. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/settings.js +0 -0
  230. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/components/settings_sync.js +0 -0
  231. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/config/urls.js +0 -0
  232. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/main.js +0 -0
  233. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/research_form.js +0 -0
  234. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/api.js +0 -0
  235. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/audio.js +0 -0
  236. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/formatting.js +0 -0
  237. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/keyboard.js +0 -0
  238. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/pdf.js +0 -0
  239. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/socket.js +0 -0
  240. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/js/services/ui.js +0 -0
  241. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/sounds/README.md +0 -0
  242. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
  243. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
  244. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/base.html +0 -0
  245. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/components/custom_dropdown.html +0 -0
  246. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/components/log_panel.html +0 -0
  247. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/components/mobile_nav.html +0 -0
  248. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/components/settings_form.html +0 -0
  249. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/components/sidebar.html +0 -0
  250. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/benchmark.html +0 -0
  251. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/benchmark_simple.html +0 -0
  252. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/cost_analytics.html +0 -0
  253. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/details.html +0 -0
  254. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/history.html +0 -0
  255. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/metrics.html +0 -0
  256. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/progress.html +0 -0
  257. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/research.html +0 -0
  258. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/results.html +0 -0
  259. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/pages/star_reviews.html +0 -0
  260. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/templates/settings_dashboard.html +0 -0
  261. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/utils/__init__.py +0 -0
  262. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/utils/formatters.py +0 -0
  263. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web/utils/templates.py +0 -0
  264. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/__init__.py +0 -0
  265. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/default_search_engines.py +0 -0
  266. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
  267. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/full_search.py +0 -0
  268. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +0 -0
  269. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +0 -0
  270. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +0 -0
  271. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +0 -0
  272. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +0 -0
  273. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_github.py +0 -0
  274. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +0 -0
  275. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +0 -0
  276. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_local.py +0 -0
  277. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +0 -0
  278. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +0 -0
  279. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_retriever.py +0 -0
  280. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +0 -0
  281. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +0 -0
  282. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +0 -0
  283. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_tavily.py +0 -0
  284. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +0 -0
  285. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +0 -0
  286. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/rate_limiting/__init__.py +0 -0
  287. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/rate_limiting/__main__.py +0 -0
  288. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/rate_limiting/cli.py +0 -0
  289. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/rate_limiting/exceptions.py +0 -0
  290. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/rate_limiting/tracker.py +0 -0
  291. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/retriever_registry.py +0 -0
  292. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/search_engine_base.py +0 -0
  293. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/search_engine_factory.py +0 -0
  294. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/src/local_deep_research/web_search_engines/search_engines_config.py +0 -0
  295. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/CI_INTEGRATION.md +0 -0
  296. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/README.md +0 -0
  297. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/TESTING_COMPARISON.md +0 -0
  298. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/TESTING_PROPOSAL.md +0 -0
  299. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/TEST_OPTIMIZATION.md +0 -0
  300. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/__init__.py +0 -0
  301. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/accessibility_tests/README.md +0 -0
  302. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/accessibility_tests/__init__.py +0 -0
  303. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/accessibility_tests/test_accessibility.js +0 -0
  304. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/accessibility_tests/test_accessibility_backend.py +0 -0
  305. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/api_tests/README.md +0 -0
  306. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/api_tests/__init__.py +0 -0
  307. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/api_tests/test_api_basic.py +0 -0
  308. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/api_tests/test_api_pytest.py +0 -0
  309. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/api_tests/test_rest_api.py +0 -0
  310. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/api_tests/test_rest_api_simple.py +0 -0
  311. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/conftest.py +0 -0
  312. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/debug_url_utils.py +0 -0
  313. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/download_stuff_for_local.py +0 -0
  314. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/feature_tests/IMPLEMENTATION_GUIDE_241.md +0 -0
  315. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/feature_tests/README.md +0 -0
  316. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/feature_tests/__init__.py +0 -0
  317. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/feature_tests/test_custom_context.py +0 -0
  318. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/fix_tests/README.md +0 -0
  319. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/fix_tests/test_duplicate_links_fix.py +0 -0
  320. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/fix_tests/test_milestone_logging_fix.py +0 -0
  321. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/fixtures/README.md +0 -0
  322. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/fixtures/search_engine_mocks.py +0 -0
  323. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/health_check/README.md +0 -0
  324. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/health_check/run_quick_health_check.py +0 -0
  325. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/health_check/test_endpoints_health.py +0 -0
  326. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/health_check/test_endpoints_health.sh +0 -0
  327. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/infrastructure_tests/README.md +0 -0
  328. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/infrastructure_tests/__init__.py +0 -0
  329. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/infrastructure_tests/package.json +0 -0
  330. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/infrastructure_tests/test_route_registry.py +0 -0
  331. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/infrastructure_tests/test_urls.test.js +0 -0
  332. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/infrastructure_tests/test_urls_js.py +0 -0
  333. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/mock_fixtures.py +0 -0
  334. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/mock_llm_config.py +0 -0
  335. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/mock_modules.py +0 -0
  336. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/rate_limiting/test_rate_limiting.py +0 -0
  337. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/__init__.py +0 -0
  338. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/conftest.py +0 -0
  339. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/test_api_integration.py +0 -0
  340. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/test_e2e_basic.py +0 -0
  341. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/test_factory_integration.py +0 -0
  342. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/test_retriever_registry.py +0 -0
  343. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/retriever_integration/test_search_engine_retriever.py +0 -0
  344. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/run_all_tests.py +0 -0
  345. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/search_engines/test_wikipedia_search.py +0 -0
  346. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/searxng/__init__.py +0 -0
  347. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/searxng/test_searxng.py +0 -0
  348. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/strategies/__init__.py +0 -0
  349. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/strategies/compare_strategies_visual.py +0 -0
  350. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/strategies/test_adaptive_strategy.py +0 -0
  351. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/strategies/test_iterative_reasoning.py +0 -0
  352. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/strategies/test_search_system_iterative.py +0 -0
  353. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_ci_config.py +0 -0
  354. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_citation_handler.py +0 -0
  355. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_google_pse.py +0 -0
  356. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/__init__.py +0 -0
  357. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/run_llm_tests.sh +0 -0
  358. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/test_api_llm_integration.py +0 -0
  359. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/test_llm_benchmarks.py +0 -0
  360. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/test_llm_edge_cases.py +0 -0
  361. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/test_llm_integration.py +0 -0
  362. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_llm/test_llm_registry.py +0 -0
  363. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_orm_changes.py +0 -0
  364. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_report_generator.py +0 -0
  365. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_research_strategy_orm.py +0 -0
  366. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_search_engines_enhanced.py +0 -0
  367. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_search_system.py +0 -0
  368. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_settings_manager.py +0 -0
  369. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_url_utils.py +0 -0
  370. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_url_utils_simple.py +0 -0
  371. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_utils.py +0 -0
  372. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/test_wikipedia_url_security.py +0 -0
  373. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/README.md +0 -0
  374. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/__init__.py +0 -0
  375. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/run_all_tests.js +0 -0
  376. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_charts.js +0 -0
  377. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_cost_analytics.js +0 -0
  378. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_metrics.js +0 -0
  379. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_metrics_browser.js +0 -0
  380. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_metrics_chart.js +0 -0
  381. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_metrics_charts.js +0 -0
  382. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_metrics_only.js +0 -0
  383. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_network_requests.js +0 -0
  384. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_pages_browser.js +0 -0
  385. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_rate_limiting_settings.js +0 -0
  386. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_research_results.js +0 -0
  387. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_settings_errors.js +0 -0
  388. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_settings_page.js +0 -0
  389. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_settings_save.js +0 -0
  390. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_star_reviews.js +0 -0
  391. {local_deep_research-0.6.0 → local_deep_research-0.6.1}/tests/ui_tests/test_star_reviews_debug.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: local-deep-research
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
5
5
  Author-Email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>, djpetti <djpetti@gmail.com>
6
6
  License: MIT License
@@ -302,7 +302,7 @@ Early experiments on small SimpleQA dataset samples:
302
302
  | Configuration | Accuracy | Notes |
303
303
  |--------------|----------|--------|
304
304
  | gpt-4.1-mini + SearXNG + focused_iteration | 90-95% | Limited sample size |
305
- | gpt-4.1-mini + Tavily | Up to 95% | Limited sample size |
305
+ | gpt-4.1-mini + Tavily + focused_iteration | 90-95% | Limited sample size |
306
306
  | gemini-2.0-flash-001 + SearXNG | 82% | Single test run |
307
307
 
308
308
  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)
@@ -220,7 +220,7 @@ Early experiments on small SimpleQA dataset samples:
220
220
  | Configuration | Accuracy | Notes |
221
221
  |--------------|----------|--------|
222
222
  | gpt-4.1-mini + SearXNG + focused_iteration | 90-95% | Limited sample size |
223
- | gpt-4.1-mini + Tavily | Up to 95% | Limited sample size |
223
+ | gpt-4.1-mini + Tavily + focused_iteration | 90-95% | Limited sample size |
224
224
  | gemini-2.0-flash-001 + SearXNG | 82% | Single test run |
225
225
 
226
226
  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)
@@ -69,7 +69,7 @@ dependencies = [
69
69
  "aiohttp>=3.9.0",
70
70
  "tenacity>=8.0.0",
71
71
  ]
72
- version = "0.6.0"
72
+ version = "0.6.1"
73
73
 
74
74
  [project.license]
75
75
  file = "LICENSE"
@@ -0,0 +1 @@
1
+ __version__ = "0.6.1"
@@ -6,6 +6,7 @@
6
6
 
7
7
  {% block extra_head %}
8
8
  <meta name="csrf-token" content="{{ csrf_token() }}">
9
+ <meta name="app-version" content="{{ version }}">
9
10
  <style>
10
11
  .benchmark-results-card {
11
12
  width: 100%;
@@ -769,14 +770,21 @@ function createRunCard(run) {
769
770
  <div class="summary-label">Avg Time/Question</div>
770
771
  </div>
771
772
  <div class="summary-item">
772
- ${status === 'in_progress' ?
773
- `<button class="btn btn-outline btn-sm delete-btn" onclick="event.stopPropagation(); cancelAndDeleteBenchmarkRun(${run.id})" style="background: #3a1e1e !important; border-color: #f44336 !important; color: #f44336 !important;">
774
- <i class="fas fa-stop"></i> Cancel & Delete
775
- </button>` :
776
- `<button class="btn btn-outline btn-sm delete-btn" onclick="event.stopPropagation(); deleteBenchmarkRun(${run.id})">
777
- <i class="fas fa-trash"></i> Delete
778
- </button>`
779
- }
773
+ <div style="display: flex; gap: 8px;">
774
+ ${status === 'completed' ?
775
+ `<button class="btn btn-outline btn-sm" onclick="event.stopPropagation(); downloadBenchmarkYAML(${run.id})" style="background: #1e3a1e !important; border-color: #4caf50 !important; color: #4caf50 !important;">
776
+ <i class="fas fa-download"></i> YAML
777
+ </button>` : ''
778
+ }
779
+ ${status === 'in_progress' ?
780
+ `<button class="btn btn-outline btn-sm delete-btn" onclick="event.stopPropagation(); cancelAndDeleteBenchmarkRun(${run.id})" style="background: #3a1e1e !important; border-color: #f44336 !important; color: #f44336 !important;">
781
+ <i class="fas fa-stop"></i> Cancel & Delete
782
+ </button>` :
783
+ `<button class="btn btn-outline btn-sm delete-btn" onclick="event.stopPropagation(); deleteBenchmarkRun(${run.id})">
784
+ <i class="fas fa-trash"></i> Delete
785
+ </button>`
786
+ }
787
+ </div>
780
788
  <div class="summary-label">Actions</div>
781
789
  </div>
782
790
  </div>
@@ -1061,6 +1069,136 @@ async function cancelAndDeleteBenchmarkRun(runId) {
1061
1069
  }
1062
1070
  }
1063
1071
 
1072
+ async function downloadBenchmarkYAML(runId) {
1073
+ try {
1074
+ // Find the run in our local data
1075
+ const run = benchmarkRuns.find(r => r.id === runId);
1076
+ if (!run) {
1077
+ showAlert('Benchmark run not found', 'error');
1078
+ return;
1079
+ }
1080
+
1081
+ // Get current date for filename
1082
+ const date = new Date().toISOString().split('T')[0];
1083
+
1084
+ // Get app version from meta tag
1085
+ const appVersion = document.querySelector('meta[name="app-version"]')?.content || 'Could not fetch version';
1086
+
1087
+ // Extract model name and clean it for filename
1088
+ const modelName = run.search_config?.model_name || 'unknown-model';
1089
+ const cleanModelName = modelName.replace(/[^a-zA-Z0-9.-]/g, '-').toLowerCase();
1090
+
1091
+ // Get all relevant settings from database
1092
+ let localContextWindow = 'Could not fetch';
1093
+ let maxTokens = 'Could not fetch';
1094
+ let contextWindowUnrestricted = 'Could not fetch';
1095
+ let contextWindowSize = 'Could not fetch';
1096
+ let supportsMaxTokens = 'Could not fetch';
1097
+
1098
+ try {
1099
+ const settingsResponse = await fetch('/settings/api');
1100
+ if (settingsResponse.ok) {
1101
+ const data = await settingsResponse.json();
1102
+ if (data.status === 'success' && data.settings) {
1103
+ const settings = data.settings;
1104
+ // LLM settings - extract the 'value' property from each setting object
1105
+ localContextWindow = settings['llm.local_context_window_size']?.value || 'Could not fetch';
1106
+ maxTokens = settings['llm.max_tokens']?.value || 'Could not fetch';
1107
+ contextWindowUnrestricted = settings['llm.context_window_unrestricted']?.value !== undefined ?
1108
+ (settings['llm.context_window_unrestricted'].value ? 'Yes' : 'No') : 'Could not fetch';
1109
+ contextWindowSize = settings['llm.context_window_size']?.value || 'Could not fetch';
1110
+ supportsMaxTokens = settings['llm.supports_max_tokens']?.value !== undefined ?
1111
+ (settings['llm.supports_max_tokens'].value ? 'Yes' : 'No') : 'Could not fetch';
1112
+ }
1113
+ }
1114
+ } catch (e) {
1115
+ console.error('Could not fetch current settings:', e);
1116
+ }
1117
+
1118
+ // Calculate average search results if available
1119
+ const avgSearchResults = formatAvgSearchResults(run).replace(' results', '');
1120
+ const searchResultsNum = avgSearchResults !== 'N/A' ? avgSearchResults : '# Please fill in';
1121
+
1122
+ // Generate YAML content
1123
+ const yamlContent = `# Benchmark Result
1124
+ # Generated from Local Deep Research v${appVersion}
1125
+ # Date: ${date}
1126
+
1127
+ # Model Information
1128
+ model: ${modelName}
1129
+ model_provider: ${run.search_config?.provider || 'unknown'}
1130
+ quantization: # Please fill in if applicable
1131
+
1132
+ # Search Engine (critical for benchmark reproducibility)
1133
+ search_engine: ${run.search_config?.search_tool || 'unknown'}
1134
+ search_provider_version: # if known, e.g., "latest", "2024.1.0"
1135
+ average_results_per_query: ${searchResultsNum}
1136
+
1137
+ # Hardware
1138
+ hardware:
1139
+ gpu: # Please fill in
1140
+ ram: # Please fill in
1141
+ cpu: # Please fill in
1142
+
1143
+ # Benchmark Results
1144
+ results:
1145
+ dataset: SimpleQA
1146
+ total_questions: ${run.total_examples}
1147
+
1148
+ ${run.search_config?.search_strategy === 'focused_iteration' ? 'focused_iteration' : 'source_based'}:
1149
+ accuracy: ${run.overall_accuracy ? run.overall_accuracy.toFixed(1) : 0}% (${Math.round(run.overall_accuracy * run.total_examples / 100)}/${run.total_examples})
1150
+ iterations: ${run.search_config?.iterations || 'N/A'}
1151
+ questions_per_iteration: ${run.search_config?.questions_per_iteration || 'N/A'}
1152
+ avg_time_per_question: ${formatAvgProcessingTime(run)}
1153
+ total_tokens_used: # if available
1154
+
1155
+ # Configuration
1156
+ configuration:
1157
+ context_window: ${localContextWindow} # Current setting at download time - may differ from benchmark run
1158
+ temperature: ${run.search_config?.temperature || 'N/A'}
1159
+ max_tokens: ${maxTokens} # Current setting at download time
1160
+ local_provider_context_window_size: ${localContextWindow} # Current setting at download time
1161
+ context_window_unrestricted: ${contextWindowUnrestricted} # Current setting at download time
1162
+
1163
+ # Versions
1164
+ versions:
1165
+ ldr_version: ${appVersion}
1166
+ ollama_version: # if applicable
1167
+
1168
+ # Test Details
1169
+ test_details:
1170
+ date_tested: ${date}
1171
+ rate_limiting_issues: # yes/no
1172
+ search_failures: # number of failed searches, if any
1173
+
1174
+ # Notes
1175
+ notes: |
1176
+ # Add any observations, errors, or insights here
1177
+ # Search strategy: ${run.search_config?.search_strategy || 'unknown'}
1178
+ # Provider: ${run.search_config?.provider || 'unknown'}
1179
+ # Note: Configuration values are from current settings at download time,
1180
+ # not necessarily the values used during the benchmark run
1181
+ `;
1182
+
1183
+ // Create blob and download
1184
+ const blob = new Blob([yamlContent], { type: 'text/yaml' });
1185
+ const url = window.URL.createObjectURL(blob);
1186
+ const a = document.createElement('a');
1187
+ a.style.display = 'none';
1188
+ a.href = url;
1189
+ a.download = `${cleanModelName}_${date}.yaml`;
1190
+ document.body.appendChild(a);
1191
+ a.click();
1192
+ window.URL.revokeObjectURL(url);
1193
+ document.body.removeChild(a);
1194
+
1195
+ showAlert('Benchmark YAML downloaded! Hardware details are optional but helpful for performance context.', 'success');
1196
+ } catch (error) {
1197
+ console.error('Error downloading YAML:', error);
1198
+ showAlert('Error downloading YAML: ' + error.message, 'error');
1199
+ }
1200
+ }
1201
+
1064
1202
  async function deleteBenchmarkRun(runId) {
1065
1203
  try {
1066
1204
  const response = await fetch(`/benchmark/api/delete/${runId}`, {
@@ -0,0 +1,5 @@
1
+ {
2
+ "dependencies": {
3
+ "puppeteer": "^24.9.0"
4
+ }
5
+ }
@@ -0,0 +1,155 @@
1
+ const puppeteer = require('puppeteer');
2
+
3
+ (async () => {
4
+ const browser = await puppeteer.launch({
5
+ headless: false,
6
+ args: ['--no-sandbox'],
7
+ defaultViewport: { width: 1920, height: 1080 }
8
+ });
9
+
10
+ const page = await browser.newPage();
11
+
12
+ // Monitor console
13
+ page.on('console', msg => {
14
+ console.log(`CONSOLE ${msg.type()}: ${msg.text()}`);
15
+ });
16
+
17
+ // Monitor network
18
+ page.on('response', async (response) => {
19
+ if (response.url().includes('/metrics/api/cost-analytics')) {
20
+ console.log(`API Response: ${response.status()}`);
21
+ try {
22
+ const text = await response.text();
23
+ console.log('API Data:', text.substring(0, 200));
24
+ } catch (e) {}
25
+ }
26
+ });
27
+
28
+ console.log('Loading page...');
29
+ // Clear cache and reload
30
+ await page.setCacheEnabled(false);
31
+ await page.goto('http://localhost:5000/metrics/costs?' + Date.now(), {
32
+ waitUntil: 'domcontentloaded',
33
+ timeout: 15000
34
+ });
35
+
36
+ // Wait for initial load
37
+ await new Promise(resolve => setTimeout(resolve, 3000));
38
+
39
+ // Check loading state
40
+ const states = await page.evaluate(() => {
41
+ const loading = document.getElementById('loading');
42
+ const error = document.getElementById('error');
43
+ const content = document.getElementById('cost-content');
44
+ const noData = document.getElementById('no-data');
45
+
46
+ return {
47
+ loading: loading ? loading.style.display : 'not found',
48
+ error: error ? error.style.display : 'not found',
49
+ content: content ? content.style.display : 'not found',
50
+ noData: noData ? noData.style.display : 'not found'
51
+ };
52
+ });
53
+
54
+ console.log('Element states:', states);
55
+
56
+ // Try manual API call and simulate the loadCostData function
57
+ const apiTest = await page.evaluate(async () => {
58
+ try {
59
+ console.log('Starting manual API test...');
60
+ const response = await fetch('/metrics/api/cost-analytics?period=7d');
61
+ const data = await response.json();
62
+ console.log('API Response received:', data.status);
63
+ console.log('Total calls:', data.overview?.total_calls);
64
+ console.log('Total cost:', data.overview?.total_cost);
65
+
66
+ // Now simulate what the loadCostData function should do
67
+ if (data.status === 'success') {
68
+ console.log('Status is success');
69
+ if (data.overview.total_calls > 0) {
70
+ console.log('Total calls > 0, should show content');
71
+
72
+ // Try to manually call the show functions
73
+ function showContent() {
74
+ document.getElementById('loading').style.display = 'none';
75
+ document.getElementById('cost-content').style.display = 'block';
76
+ document.getElementById('error').style.display = 'none';
77
+ document.getElementById('no-data').style.display = 'none';
78
+ }
79
+
80
+ showContent();
81
+ console.log('Called showContent() manually');
82
+ } else {
83
+ console.log('Total calls is 0, should show no data');
84
+ }
85
+ } else {
86
+ console.log('Status is not success:', data.status);
87
+ }
88
+
89
+ return { success: true, data: data };
90
+ } catch (error) {
91
+ console.error('Manual API test failed:', error);
92
+ return { success: false, error: error.message };
93
+ }
94
+ });
95
+
96
+ console.log('Manual API test:', apiTest.success ? 'SUCCESS' : 'FAILED');
97
+ if (apiTest.success) {
98
+ console.log('API returned cost:', apiTest.data.overview?.total_cost);
99
+ console.log('API returned calls:', apiTest.data.overview?.total_calls);
100
+ }
101
+
102
+ // Test the actual logic from the page
103
+ const testLogic = await page.evaluate(() => {
104
+ // Simulate what the loadCostData function does
105
+ const testData = {
106
+ status: 'success',
107
+ overview: {
108
+ total_cost: 0.0,
109
+ total_calls: 58
110
+ }
111
+ };
112
+
113
+ console.log('Testing logic: total_calls =', testData.overview.total_calls);
114
+ console.log('Testing logic: total_cost =', testData.overview.total_cost);
115
+
116
+ if (testData.status === 'success') {
117
+ if (testData.overview.total_calls > 0) {
118
+ console.log('Should show content!');
119
+ return 'should_show_content';
120
+ } else {
121
+ console.log('Should show no data');
122
+ return 'should_show_no_data';
123
+ }
124
+ }
125
+ return 'unknown';
126
+ });
127
+
128
+ console.log('Logic test result:', testLogic);
129
+
130
+ // Wait a bit more
131
+ await new Promise(resolve => setTimeout(resolve, 3000));
132
+
133
+ // Check final states after manual showContent
134
+ const finalStates = await page.evaluate(() => {
135
+ const loading = document.getElementById('loading');
136
+ const error = document.getElementById('error');
137
+ const content = document.getElementById('cost-content');
138
+ const noData = document.getElementById('no-data');
139
+
140
+ return {
141
+ loading: loading ? loading.style.display : 'not found',
142
+ error: error ? error.style.display : 'not found',
143
+ content: content ? content.style.display : 'not found',
144
+ noData: noData ? noData.style.display : 'not found'
145
+ };
146
+ });
147
+
148
+ console.log('Final element states:', finalStates);
149
+
150
+ console.log('Taking screenshot...');
151
+ await page.screenshot({ path: './cost-debug.png', fullPage: true });
152
+
153
+ console.log('Done - check cost-debug.png');
154
+ await browser.close();
155
+ })();
@@ -1 +0,0 @@
1
- __version__ = "0.6.0"