local-deep-research 0.5.3__tar.gz → 0.5.4__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 (339) hide show
  1. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/PKG-INFO +1 -1
  2. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/pyproject.toml +1 -1
  3. local_deep_research-0.5.4/src/local_deep_research/__version__.py +1 -0
  4. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/css/styles.css +78 -3
  5. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/custom_dropdown.js +12 -0
  6. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/research.js +72 -25
  7. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/keyboard.js +46 -5
  8. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/research.html +17 -10
  9. local_deep_research-0.5.3/src/local_deep_research/__version__.py +0 -1
  10. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/LICENSE +0 -0
  11. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/README.md +0 -0
  12. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/__init__.py +0 -0
  13. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/__init__.py +0 -0
  14. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/answer_decoding/__init__.py +0 -0
  15. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/answer_decoding/browsecomp_answer_decoder.py +0 -0
  16. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/README.md +0 -0
  17. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/__init__.py +0 -0
  18. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/adaptive_explorer.py +0 -0
  19. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/base_explorer.py +0 -0
  20. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/constraint_guided_explorer.py +0 -0
  21. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/diversity_explorer.py +0 -0
  22. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/parallel_explorer.py +0 -0
  23. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidate_exploration/progressive_explorer.py +0 -0
  24. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidates/__init__.py +0 -0
  25. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/candidates/base_candidate.py +0 -0
  26. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/README.md +0 -0
  27. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/__init__.py +0 -0
  28. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/base_constraint_checker.py +0 -0
  29. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/constraint_checker.py +0 -0
  30. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/constraint_satisfaction_tracker.py +0 -0
  31. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/dual_confidence_checker.py +0 -0
  32. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/evidence_analyzer.py +0 -0
  33. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/intelligent_constraint_relaxer.py +0 -0
  34. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/rejection_engine.py +0 -0
  35. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/strict_checker.py +0 -0
  36. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraint_checking/threshold_checker.py +0 -0
  37. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraints/__init__.py +0 -0
  38. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraints/base_constraint.py +0 -0
  39. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/constraints/constraint_analyzer.py +0 -0
  40. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/evidence/__init__.py +0 -0
  41. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/evidence/base_evidence.py +0 -0
  42. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/evidence/evaluator.py +0 -0
  43. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/evidence/requirements.py +0 -0
  44. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/filters/__init__.py +0 -0
  45. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/filters/base_filter.py +0 -0
  46. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/filters/cross_engine_filter.py +0 -0
  47. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +0 -0
  48. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/findings/base_findings.py +0 -0
  49. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/findings/repository.py +0 -0
  50. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/knowledge/__init__.py +0 -0
  51. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/knowledge/base_knowledge.py +0 -0
  52. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +0 -0
  53. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/query_generation/adaptive_query_generator.py +0 -0
  54. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/__init__.py +0 -0
  55. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/atomic_fact_question.py +0 -0
  56. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/base_question.py +0 -0
  57. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/browsecomp_question.py +0 -0
  58. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/decomposition_question.py +0 -0
  59. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/entity_aware_question.py +0 -0
  60. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/questions/standard_question.py +0 -0
  61. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/repositories/__init__.py +0 -0
  62. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/search_optimization/cross_constraint_manager.py +0 -0
  63. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/source_management/diversity_manager.py +0 -0
  64. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/__init__.py +0 -0
  65. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/adaptive_decomposition_strategy.py +0 -0
  66. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/base_strategy.py +0 -0
  67. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/browsecomp_entity_strategy.py +0 -0
  68. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/browsecomp_optimized_strategy.py +0 -0
  69. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/concurrent_dual_confidence_strategy.py +0 -0
  70. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/constrained_search_strategy.py +0 -0
  71. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/constraint_parallel_strategy.py +0 -0
  72. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/direct_search_strategy.py +0 -0
  73. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/dual_confidence_strategy.py +0 -0
  74. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/dual_confidence_with_rejection.py +0 -0
  75. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/early_stop_constrained_strategy.py +0 -0
  76. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/entity_aware_source_strategy.py +0 -0
  77. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy.py +0 -0
  78. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/evidence_based_strategy_v2.py +0 -0
  79. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/focused_iteration_strategy.py +0 -0
  80. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/improved_evidence_based_strategy.py +0 -0
  81. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/iterative_reasoning_strategy.py +0 -0
  82. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +0 -0
  83. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/llm_driven_modular_strategy.py +0 -0
  84. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/modular_strategy.py +0 -0
  85. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/parallel_constrained_strategy.py +0 -0
  86. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +0 -0
  87. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +0 -0
  88. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/recursive_decomposition_strategy.py +0 -0
  89. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/smart_decomposition_strategy.py +0 -0
  90. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/smart_query_strategy.py +0 -0
  91. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/source_based_strategy.py +0 -0
  92. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/strategies/standard_strategy.py +0 -0
  93. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/tools/__init__.py +0 -0
  94. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/tools/base_tool.py +0 -0
  95. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/tools/knowledge_tools/__init__.py +0 -0
  96. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/tools/question_tools/__init__.py +0 -0
  97. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/advanced_search_system/tools/search_tools/__init__.py +0 -0
  98. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/api/__init__.py +0 -0
  99. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/api/benchmark_functions.py +0 -0
  100. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/api/research_functions.py +0 -0
  101. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/README.md +0 -0
  102. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/__init__.py +0 -0
  103. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/benchmark_functions.py +0 -0
  104. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/cli/__init__.py +0 -0
  105. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/cli/benchmark_commands.py +0 -0
  106. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/cli.py +0 -0
  107. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/comparison/__init__.py +0 -0
  108. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/comparison/evaluator.py +0 -0
  109. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets/__init__.py +0 -0
  110. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets/base.py +0 -0
  111. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets/browsecomp.py +0 -0
  112. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets/custom_dataset_template.py +0 -0
  113. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets/simpleqa.py +0 -0
  114. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets/utils.py +0 -0
  115. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/datasets.py +0 -0
  116. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/efficiency/__init__.py +0 -0
  117. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/efficiency/resource_monitor.py +0 -0
  118. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/efficiency/speed_profiler.py +0 -0
  119. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/evaluators/__init__.py +0 -0
  120. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/evaluators/base.py +0 -0
  121. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/evaluators/browsecomp.py +0 -0
  122. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/evaluators/composite.py +0 -0
  123. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/evaluators/simpleqa.py +0 -0
  124. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/graders.py +0 -0
  125. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/metrics/README.md +0 -0
  126. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/metrics/__init__.py +0 -0
  127. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/metrics/calculation.py +0 -0
  128. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/metrics/reporting.py +0 -0
  129. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/metrics/visualization.py +0 -0
  130. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/metrics.py +0 -0
  131. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/optimization/__init__.py +0 -0
  132. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/optimization/api.py +0 -0
  133. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/optimization/metrics.py +0 -0
  134. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/optimization/optuna_optimizer.py +0 -0
  135. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/runners.py +0 -0
  136. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/benchmarks/templates.py +0 -0
  137. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/citation_handler.py +0 -0
  138. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/citation_handlers/__init__.py +0 -0
  139. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/citation_handlers/base_citation_handler.py +0 -0
  140. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/citation_handlers/forced_answer_citation_handler.py +0 -0
  141. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/citation_handlers/precision_extraction_handler.py +0 -0
  142. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/citation_handlers/standard_citation_handler.py +0 -0
  143. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/config/__init__.py +0 -0
  144. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/config/llm_config.py +0 -0
  145. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/config/search_config.py +0 -0
  146. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/defaults/.env.template +0 -0
  147. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/defaults/__init__.py +0 -0
  148. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/defaults/default_settings.json +0 -0
  149. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/error_handling/__init__.py +0 -0
  150. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/error_handling/error_reporter.py +0 -0
  151. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/error_handling/report_generator.py +0 -0
  152. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/__init__.py +0 -0
  153. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/database.py +0 -0
  154. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/db_models.py +0 -0
  155. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/migrate_add_provider_to_token_usage.py +0 -0
  156. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/migrate_call_stack_tracking.py +0 -0
  157. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/migrate_enhanced_tracking.py +0 -0
  158. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/migrate_research_ratings.py +0 -0
  159. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/models.py +0 -0
  160. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/pricing/__init__.py +0 -0
  161. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/pricing/cost_calculator.py +0 -0
  162. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/pricing/pricing_cache.py +0 -0
  163. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/pricing/pricing_fetcher.py +0 -0
  164. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/query_utils.py +0 -0
  165. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/search_tracker.py +0 -0
  166. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/metrics/token_counter.py +0 -0
  167. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/migrate_db.py +0 -0
  168. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/report_generator.py +0 -0
  169. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/search_system.py +0 -0
  170. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/setup_data_dir.py +0 -0
  171. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/__init__.py +0 -0
  172. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/db_utils.py +0 -0
  173. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/enums.py +0 -0
  174. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/es_utils.py +0 -0
  175. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/llm_utils.py +0 -0
  176. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/log_utils.py +0 -0
  177. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/search_cache.py +0 -0
  178. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/search_utilities.py +0 -0
  179. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/setup_utils.py +0 -0
  180. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/threading_utils.py +0 -0
  181. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/utilities/url_utils.py +0 -0
  182. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/__init__.py +0 -0
  183. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/api.py +0 -0
  184. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/app.py +0 -0
  185. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/app_factory.py +0 -0
  186. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/database/README.md +0 -0
  187. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/database/migrate_to_ldr_db.py +0 -0
  188. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/database/migrations.py +0 -0
  189. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/database/models.py +0 -0
  190. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/database/schema_upgrade.py +0 -0
  191. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/models/database.py +0 -0
  192. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/models/settings.py +0 -0
  193. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/api_routes.py +0 -0
  194. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/benchmark_routes.py +0 -0
  195. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/globals.py +0 -0
  196. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/history_routes.py +0 -0
  197. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/metrics_routes.py +0 -0
  198. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/research_routes.py +0 -0
  199. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/routes/settings_routes.py +0 -0
  200. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/services/research_service.py +0 -0
  201. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/services/resource_service.py +0 -0
  202. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/services/settings_manager.py +0 -0
  203. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/services/settings_service.py +0 -0
  204. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/services/socket_service.py +0 -0
  205. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/css/custom_dropdown.css +0 -0
  206. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/css/settings.css +0 -0
  207. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/detail.js +0 -0
  208. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/details.js +0 -0
  209. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/fallback/formatting.js +0 -0
  210. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/fallback/ui.js +0 -0
  211. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/history.js +0 -0
  212. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/logpanel.js +0 -0
  213. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/progress.js +0 -0
  214. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/results.js +0 -0
  215. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/settings.js +0 -0
  216. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/components/settings_sync.js +0 -0
  217. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/main.js +0 -0
  218. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/research_form.js +0 -0
  219. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/api.js +0 -0
  220. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/audio.js +0 -0
  221. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/formatting.js +0 -0
  222. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/pdf.js +0 -0
  223. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/socket.js +0 -0
  224. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/js/services/ui.js +0 -0
  225. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/sounds/README.md +0 -0
  226. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/sounds/error.mp3 +0 -0
  227. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/static/sounds/success.mp3 +0 -0
  228. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/base.html +0 -0
  229. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/components/custom_dropdown.html +0 -0
  230. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/components/log_panel.html +0 -0
  231. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/components/mobile_nav.html +0 -0
  232. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/components/settings_form.html +0 -0
  233. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/components/sidebar.html +0 -0
  234. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/cost_analytics.html +0 -0
  235. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/details.html +0 -0
  236. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/history.html +0 -0
  237. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/metrics.html +0 -0
  238. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/progress.html +0 -0
  239. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/results.html +0 -0
  240. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/pages/star_reviews.html +0 -0
  241. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/templates/settings_dashboard.html +0 -0
  242. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/utils/__init__.py +0 -0
  243. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/utils/formatters.py +0 -0
  244. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web/utils/templates.py +0 -0
  245. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/__init__.py +0 -0
  246. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/default_search_engines.py +0 -0
  247. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/__init__.py +0 -0
  248. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/full_search.py +0 -0
  249. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/meta_search_engine.py +0 -0
  250. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_arxiv.py +0 -0
  251. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_brave.py +0 -0
  252. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_ddg.py +0 -0
  253. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +0 -0
  254. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_github.py +0 -0
  255. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_google_pse.py +0 -0
  256. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_guardian.py +0 -0
  257. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_local.py +0 -0
  258. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_local_all.py +0 -0
  259. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_pubmed.py +0 -0
  260. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_searxng.py +0 -0
  261. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +0 -0
  262. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_serpapi.py +0 -0
  263. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_wayback.py +0 -0
  264. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +0 -0
  265. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/search_engine_base.py +0 -0
  266. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/search_engine_factory.py +0 -0
  267. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/src/local_deep_research/web_search_engines/search_engines_config.py +0 -0
  268. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/CI_INTEGRATION.md +0 -0
  269. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/README.md +0 -0
  270. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/TESTING_COMPARISON.md +0 -0
  271. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/TESTING_PROPOSAL.md +0 -0
  272. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/__init__.py +0 -0
  273. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/accessibility_tests/README.md +0 -0
  274. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/accessibility_tests/__init__.py +0 -0
  275. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/accessibility_tests/test_accessibility.js +0 -0
  276. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/accessibility_tests/test_accessibility_backend.py +0 -0
  277. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/api_tests/README.md +0 -0
  278. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/api_tests/__init__.py +0 -0
  279. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/api_tests/test_api_basic.py +0 -0
  280. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/api_tests/test_api_pytest.py +0 -0
  281. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/api_tests/test_rest_api.py +0 -0
  282. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/api_tests/test_rest_api_simple.py +0 -0
  283. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/conftest.py +0 -0
  284. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/debug_url_utils.py +0 -0
  285. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/download_stuff_for_local.py +0 -0
  286. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/feature_tests/IMPLEMENTATION_GUIDE_241.md +0 -0
  287. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/feature_tests/README.md +0 -0
  288. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/feature_tests/__init__.py +0 -0
  289. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/feature_tests/test_custom_context.py +0 -0
  290. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/fix_tests/README.md +0 -0
  291. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/fix_tests/test_duplicate_links_fix.py +0 -0
  292. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/fixtures/README.md +0 -0
  293. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/fixtures/search_engine_mocks.py +0 -0
  294. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/health_check/README.md +0 -0
  295. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/health_check/run_quick_health_check.py +0 -0
  296. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/health_check/test_endpoints_health.py +0 -0
  297. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/health_check/test_endpoints_health.sh +0 -0
  298. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/mock_fixtures.py +0 -0
  299. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/mock_llm_config.py +0 -0
  300. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/mock_modules.py +0 -0
  301. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/run_all_tests.py +0 -0
  302. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/search_engines/test_wikipedia_search.py +0 -0
  303. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/searxng/__init__.py +0 -0
  304. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/searxng/test_searxng.py +0 -0
  305. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/strategies/__init__.py +0 -0
  306. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/strategies/compare_strategies_visual.py +0 -0
  307. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/strategies/test_adaptive_strategy.py +0 -0
  308. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/strategies/test_iterative_reasoning.py +0 -0
  309. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/strategies/test_search_system_iterative.py +0 -0
  310. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_ci_config.py +0 -0
  311. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_citation_handler.py +0 -0
  312. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_google_pse.py +0 -0
  313. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_report_generator.py +0 -0
  314. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_research_strategy_orm.py +0 -0
  315. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_search_engines_enhanced.py +0 -0
  316. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_search_system.py +0 -0
  317. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_settings_manager.py +0 -0
  318. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_url_utils.py +0 -0
  319. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_url_utils_simple.py +0 -0
  320. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_utils.py +0 -0
  321. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/test_wikipedia_url_security.py +0 -0
  322. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/README.md +0 -0
  323. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/__init__.py +0 -0
  324. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/run_all_tests.js +0 -0
  325. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_charts.js +0 -0
  326. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_cost_analytics.js +0 -0
  327. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_metrics.js +0 -0
  328. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_metrics_browser.js +0 -0
  329. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_metrics_chart.js +0 -0
  330. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_metrics_charts.js +0 -0
  331. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_metrics_only.js +0 -0
  332. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_network_requests.js +0 -0
  333. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_pages_browser.js +0 -0
  334. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_research_results.js +0 -0
  335. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_settings_errors.js +0 -0
  336. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_settings_page.js +0 -0
  337. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_settings_save.js +0 -0
  338. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/tests/ui_tests/test_star_reviews.js +0 -0
  339. {local_deep_research-0.5.3 → local_deep_research-0.5.4}/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.5.3
3
+ Version: 0.5.4
4
4
  Summary: AI-powered research assistant with deep, iterative analysis using LLMs and web searches
5
5
  Author-Email: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com>, HashedViking <6432677+HashedViking@users.noreply.github.com>
6
6
  License: MIT License
@@ -67,7 +67,7 @@ dependencies = [
67
67
  "kaleido==0.2.1",
68
68
  "aiohttp>=3.9.0",
69
69
  ]
70
- version = "0.5.3"
70
+ version = "0.5.4"
71
71
 
72
72
  [project.license]
73
73
  file = "LICENSE"
@@ -0,0 +1 @@
1
+ __version__ = "0.5.4"
@@ -119,6 +119,18 @@ a:hover {
119
119
  color: var(--text-primary);
120
120
  }
121
121
 
122
+ .sidebar-nav li a:focus {
123
+ outline: 2px solid var(--accent-primary);
124
+ outline-offset: -2px;
125
+ background-color: var(--bg-tertiary);
126
+ color: var(--text-primary);
127
+ }
128
+
129
+ .sidebar-nav li a:focus .nav-shortcut {
130
+ background-color: var(--accent-primary);
131
+ color: var(--text-primary);
132
+ }
133
+
122
134
  .sidebar-nav li.active {
123
135
  color: var(--accent-primary);
124
136
  background-color: rgba(110, 79, 246, 0.1);
@@ -130,13 +142,53 @@ a:hover {
130
142
  color: inherit;
131
143
  }
132
144
 
145
+ /* Navigation shortcuts */
146
+ .nav-shortcut {
147
+ margin-left: auto;
148
+ background-color: var(--bg-tertiary);
149
+ color: var(--text-muted);
150
+ padding: 0.2rem 0.5rem;
151
+ border-radius: 4px;
152
+ font-size: 0.75rem;
153
+ font-weight: 600;
154
+ min-width: 1.5rem;
155
+ text-align: center;
156
+ transition: all 0.2s;
157
+ }
158
+
159
+ .sidebar-nav li:hover .nav-shortcut {
160
+ background-color: var(--accent-primary);
161
+ color: var(--text-primary);
162
+ }
163
+
164
+ .sidebar-nav li.active .nav-shortcut {
165
+ background-color: var(--accent-primary);
166
+ color: var(--text-primary);
167
+ }
168
+
133
169
  .sidebar-footer {
134
170
  padding: 1rem 1.5rem;
135
171
  border-top: 1px solid var(--border-color);
136
172
  color: var(--text-muted);
137
173
  font-size: 0.875rem;
138
174
  display: flex;
139
- justify-content: center;
175
+ flex-direction: column;
176
+ align-items: center;
177
+ gap: 0.5rem;
178
+ }
179
+
180
+ .nav-hint {
181
+ font-size: 0.75rem;
182
+ opacity: 0.7;
183
+ margin: 0;
184
+ }
185
+
186
+ .nav-hint kbd {
187
+ background-color: var(--bg-tertiary);
188
+ padding: 0.1rem 0.3rem;
189
+ border-radius: 3px;
190
+ font-size: 0.7rem;
191
+ border: 1px solid var(--border-color);
140
192
  }
141
193
 
142
194
  /* Main Content */
@@ -1046,6 +1098,11 @@ textarea:focus, input[type="text"]:focus {
1046
1098
  justify-content: center;
1047
1099
  }
1048
1100
 
1101
+ /* Hide navigation shortcuts on small screens */
1102
+ .nav-shortcut {
1103
+ display: none;
1104
+ }
1105
+
1049
1106
  /* Active state fix for icon view */
1050
1107
  .sidebar-nav li.active {
1051
1108
  border-left-width: 3px;
@@ -1581,6 +1638,10 @@ textarea:focus, input[type="text"]:focus {
1581
1638
  border-radius: 8px;
1582
1639
  background-color: rgba(64, 191, 255, 0.05);
1583
1640
  border: 1px solid rgba(64, 191, 255, 0.1);
1641
+ width: 100%;
1642
+ text-align: left;
1643
+ font-family: inherit;
1644
+ font-size: inherit;
1584
1645
  }
1585
1646
 
1586
1647
  .advanced-options-toggle:hover {
@@ -1605,11 +1666,25 @@ textarea:focus, input[type="text"]:focus {
1605
1666
  .advanced-options-panel {
1606
1667
  background-color: rgba(42, 42, 58, 0.5);
1607
1668
  border-radius: 8px;
1608
- padding: 1.5rem;
1669
+ padding: 0 1.5rem;
1609
1670
  margin-bottom: 1.5rem;
1610
1671
  border: 1px solid var(--border-color);
1611
- display: none;
1612
1672
  box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.1);
1673
+ max-height: 0;
1674
+ overflow: hidden;
1675
+ opacity: 0;
1676
+ visibility: hidden;
1677
+ pointer-events: none;
1678
+ transition: all 0.3s ease;
1679
+ }
1680
+
1681
+ .advanced-options-toggle.open + .advanced-options-panel,
1682
+ .advanced-options-panel.expanded {
1683
+ max-height: 1000px;
1684
+ opacity: 1;
1685
+ visibility: visible;
1686
+ pointer-events: auto;
1687
+ padding: 1.5rem;
1613
1688
  }
1614
1689
 
1615
1690
  .form-row {
@@ -293,6 +293,18 @@
293
293
  }
294
294
  });
295
295
 
296
+ // Blur event - close dropdown when tabbing away
297
+ input.addEventListener('blur', (e) => {
298
+ // Small delay to allow click events on dropdown items to fire first
299
+ setTimeout(() => {
300
+ // Check if focus has moved to an element inside the dropdown
301
+ const activeElement = document.activeElement;
302
+ if (!dropdownList.contains(activeElement) && activeElement !== input) {
303
+ hideDropdown();
304
+ }
305
+ }, 150);
306
+ });
307
+
296
308
  // Keyboard navigation for dropdown
297
309
  input.addEventListener('keydown', (e) => {
298
310
  const items = dropdownList.querySelectorAll('.custom-dropdown-item');
@@ -436,8 +436,17 @@
436
436
  const savedState = localStorage.getItem('advancedOptionsOpen') === 'true';
437
437
 
438
438
  if (savedState) {
439
- advancedToggle.classList.add('open', 'expanded');
440
- advancedToggle.classList.toggle('expanded', true);
439
+ advancedToggle.classList.add('open');
440
+ advancedPanel.classList.add('expanded');
441
+
442
+ // Update ARIA attributes
443
+ advancedToggle.setAttribute('aria-expanded', 'true');
444
+
445
+ // Update screen reader text
446
+ const srText = advancedToggle.querySelector('.sr-only');
447
+ if (srText) {
448
+ srText.textContent = 'Click to collapse advanced options';
449
+ }
441
450
 
442
451
  // Update icon immediately
443
452
  const icon = advancedToggle.querySelector('i');
@@ -445,8 +454,18 @@
445
454
  icon.className = 'fas fa-chevron-up';
446
455
  }
447
456
  } else {
448
- advancedToggle.classList.remove('open', 'expanded');
449
- advancedToggle.classList.toggle('expanded', false);
457
+ advancedToggle.classList.remove('open');
458
+ advancedPanel.classList.remove('expanded');
459
+
460
+ // Update ARIA attributes
461
+ advancedToggle.setAttribute('aria-expanded', 'false');
462
+
463
+ // Update screen reader text
464
+ const srText = advancedToggle.querySelector('.sr-only');
465
+ if (srText) {
466
+ srText.textContent = 'Click to expand advanced options';
467
+ }
468
+
450
469
  // Ensure icon is correct
451
470
  const icon = advancedToggle.querySelector('i');
452
471
  if (icon) {
@@ -460,6 +479,15 @@
460
479
  const isOpen = advancedToggle.classList.toggle('open');
461
480
  advancedToggle.classList.toggle('expanded', isOpen);
462
481
 
482
+ // Update ARIA attributes for accessibility
483
+ this.setAttribute('aria-expanded', isOpen);
484
+
485
+ // Update screen reader text
486
+ const srText = this.querySelector('.sr-only');
487
+ if (srText) {
488
+ srText.textContent = isOpen ? 'Click to collapse advanced options' : 'Click to expand advanced options';
489
+ }
490
+
463
491
  // Save state to localStorage
464
492
  localStorage.setItem('advancedOptionsOpen', isOpen);
465
493
 
@@ -469,27 +497,40 @@
469
497
  icon.className = isOpen ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
470
498
  }
471
499
 
472
- // Animate using CSS transitions based on the 'expanded' class
473
- // No need for direct style manipulation or timeouts here if CSS is set up correctly
474
- // Example: CSS might have transition on max-height and opacity
475
- // If explicit display toggle is needed for transition logic:
476
- if (isOpen) {
477
- advancedPanel.style.display = 'block'; // Show before transition starts
478
- // Force reflow to ensure display:block is applied before transition
479
- advancedPanel.offsetHeight;
480
- advancedPanel.classList.add('expanded'); // Add class to trigger transition
481
- } else {
482
- advancedPanel.classList.remove('expanded'); // Remove class to trigger transition
483
- // Optionally hide with display:none after transition ends (using event listener)
484
- advancedPanel.addEventListener('transitionend', () => {
485
- if (!advancedPanel.classList.contains('expanded')) {
486
- advancedPanel.style.display = 'none';
487
- }
488
- }, { once: true });
500
+ // Update panel expanded class for CSS animation
501
+ advancedPanel.classList.toggle('expanded', isOpen);
502
+ });
503
+
504
+ // Add keyboard support for the advanced options toggle
505
+ advancedToggle.addEventListener('keydown', function(event) {
506
+ if (event.key === 'Enter' || event.key === ' ') {
507
+ event.preventDefault();
508
+ this.click(); // Trigger the click handler
489
509
  }
490
510
  });
491
511
  }
492
512
 
513
+ // Global keyboard shortcuts for this page
514
+ document.addEventListener('keydown', function(event) {
515
+ // Escape key: return focus to search field (override global Esc behavior when on search page)
516
+ if (event.key === 'Escape') {
517
+ if (queryInput && document.activeElement !== queryInput) {
518
+ event.preventDefault();
519
+ event.stopPropagation(); // Prevent global keyboard service from handling this
520
+ queryInput.focus();
521
+ queryInput.select(); // Select all text for easy replacement
522
+ }
523
+ }
524
+
525
+ // Ctrl/Cmd + Enter: submit form from anywhere on the page
526
+ if ((event.ctrlKey || event.metaKey) && event.key === 'Enter') {
527
+ if (form) {
528
+ event.preventDefault();
529
+ handleResearchSubmit(new Event('submit'));
530
+ }
531
+ }
532
+ });
533
+
493
534
  // Form submission
494
535
  form.addEventListener('submit', handleResearchSubmit);
495
536
 
@@ -505,15 +546,21 @@
505
546
  selectMode(this);
506
547
  } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {
507
548
  event.preventDefault();
508
- const previousMode = this.previousElementSibling;
509
- if (previousMode && previousMode.classList.contains('mode-option')) {
549
+ // Find the previous mode option, skipping hidden inputs
550
+ const allModeOptions = Array.from(document.querySelectorAll('.mode-option'));
551
+ const currentIndex = allModeOptions.indexOf(this);
552
+ const previousMode = allModeOptions[currentIndex - 1];
553
+ if (previousMode) {
510
554
  selectMode(previousMode);
511
555
  previousMode.focus();
512
556
  }
513
557
  } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {
514
558
  event.preventDefault();
515
- const nextMode = this.nextElementSibling;
516
- if (nextMode && nextMode.classList.contains('mode-option')) {
559
+ // Find the next mode option, skipping hidden inputs
560
+ const allModeOptions = Array.from(document.querySelectorAll('.mode-option'));
561
+ const currentIndex = allModeOptions.indexOf(this);
562
+ const nextMode = allModeOptions[currentIndex + 1];
563
+ if (nextMode) {
517
564
  selectMode(nextMode);
518
565
  nextMode.focus();
519
566
  }
@@ -8,12 +8,40 @@
8
8
  // Keyboard shortcut registry - simplified to just the essential ones
9
9
  const shortcuts = {
10
10
  'newSearch': {
11
- keys: ['ctrl+enter', 'cmd+enter'],
11
+ keys: ['escape'],
12
12
  description: 'Return to main search',
13
13
  handler: () => {
14
14
  // Always navigate to main research page
15
15
  window.location.href = '/';
16
16
  }
17
+ },
18
+ 'navNewResearch': {
19
+ keys: ['ctrl+shift+1'],
20
+ description: 'Go to New Research',
21
+ handler: () => {
22
+ window.location.href = '/';
23
+ }
24
+ },
25
+ 'navHistory': {
26
+ keys: ['ctrl+shift+2'],
27
+ description: 'Go to History',
28
+ handler: () => {
29
+ window.location.href = '/research/history';
30
+ }
31
+ },
32
+ 'navMetrics': {
33
+ keys: ['ctrl+shift+3'],
34
+ description: 'Go to Metrics',
35
+ handler: () => {
36
+ window.location.href = '/metrics';
37
+ }
38
+ },
39
+ 'navSettings': {
40
+ keys: ['ctrl+shift+4'],
41
+ description: 'Go to Settings',
42
+ handler: () => {
43
+ window.location.href = '/research/settings';
44
+ }
17
45
  }
18
46
  };
19
47
 
@@ -39,7 +67,7 @@
39
67
 
40
68
  // Match key
41
69
  const eventKey = event.key.toLowerCase();
42
- if (eventKey !== key && event.code.toLowerCase() !== `key${key}`) {
70
+ if (eventKey !== key && event.code.toLowerCase() !== `key${key}` && event.code.toLowerCase() !== `digit${key}`) {
43
71
  // Special handling for special keys
44
72
  if (key === '/' && eventKey !== '/') return false;
45
73
  else if (key === ',' && eventKey !== ',') return false;
@@ -70,9 +98,22 @@
70
98
  activeElement.contentEditable === 'true'
71
99
  );
72
100
 
73
- // Allow Escape even when typing
74
- if (isTyping && event.key !== 'Escape') {
75
- return;
101
+ // Skip shortcuts when typing, except for navigation shortcuts and Esc (unless on settings page)
102
+ if (isTyping) {
103
+ const isNavShortcut = event.ctrlKey && event.shiftKey && (
104
+ ['1', '2', '3', '4'].includes(event.key) ||
105
+ ['Digit1', 'Digit2', 'Digit3', 'Digit4'].includes(event.code)
106
+ );
107
+ const isEscOnSettingsPage = event.key === 'Escape' && window.location.pathname.includes('/settings');
108
+
109
+ // Debug navigation shortcuts
110
+ if (event.ctrlKey && event.shiftKey) {
111
+ console.log('Nav shortcut attempt:', event.key, event.code, 'isNavShortcut:', isNavShortcut);
112
+ }
113
+
114
+ if (!isNavShortcut && (event.key !== 'Escape' || isEscOnSettingsPage)) {
115
+ return;
116
+ }
76
117
  }
77
118
 
78
119
  // Debug log
@@ -35,7 +35,11 @@
35
35
  </span>
36
36
  <span class="hint-item">
37
37
  <i class="fas fa-home hint-icon"></i>
38
- <span class="hint-text"><kbd>Ctrl</kbd>+<kbd>Enter</kbd> returns here from anywhere</span>
38
+ <span class="hint-text"><kbd>Esc</kbd> returns here from anywhere</span>
39
+ </span>
40
+ <span class="hint-item">
41
+ <i class="fas fa-bars hint-icon"></i>
42
+ <span class="hint-text"><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>1-4</kbd> to navigate menu</span>
39
43
  </span>
40
44
  </div>
41
45
  </div>
@@ -65,13 +69,14 @@
65
69
  </fieldset>
66
70
  </div>
67
71
 
68
- <!-- Advanced Options -->
69
- <div class="advanced-options-toggle">
72
+ <!-- Advanced Options - positioned before start for configuration -->
73
+ <button type="button" class="advanced-options-toggle" aria-expanded="false" aria-controls="advanced-options-panel">
70
74
  <span class="toggle-text">Advanced Options</span>
71
- <i class="fas fa-chevron-down"></i>
72
- </div>
75
+ <i class="fas fa-chevron-down" aria-hidden="true"></i>
76
+ <span class="sr-only">Click to expand advanced options</span>
77
+ </button>
73
78
 
74
- <div class="advanced-options-panel">
79
+ <div class="advanced-options-panel" id="advanced-options-panel" aria-labelledby="advanced-options-toggle">
75
80
  <div class="form-row">
76
81
  <!-- Model Provider Selection -->
77
82
  <div class="form-group half">
@@ -151,6 +156,12 @@
151
156
  </div>
152
157
  </div>
153
158
 
159
+ <!-- Start Research Button -->
160
+ <div class="form-actions">
161
+ <button type="submit" class="btn btn-primary" id="start-research-btn"><i class="fas fa-rocket"></i> Start Research</button>
162
+ </div>
163
+
164
+ <!-- Audio Notifications -->
154
165
  <div class="form-options">
155
166
  <div class="form-option">
156
167
  <label for="notification-toggle" class="checkbox-label">
@@ -159,10 +170,6 @@
159
170
  </label>
160
171
  </div>
161
172
  </div>
162
-
163
- <div class="form-actions">
164
- <button type="submit" class="btn btn-primary" id="start-research-btn"><i class="fas fa-rocket"></i> Start Research</button>
165
- </div>
166
173
  </form>
167
174
  </div>
168
175
  </div>
@@ -1 +0,0 @@
1
- __version__ = "0.5.3"