realtimex-deeptutor 0.5.0.post3__tar.gz → 0.5.0.post4__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 (301) hide show
  1. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/PKG-INFO +1 -1
  2. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/pyproject.toml +1 -1
  3. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor.egg-info/PKG-INFO +1 -1
  4. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/start_web.py +205 -0
  5. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/cli/start.py +1 -0
  6. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/LICENSE +0 -0
  7. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/README.md +0 -0
  8. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor/__init__.py +0 -0
  9. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor.egg-info/SOURCES.txt +0 -0
  10. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor.egg-info/dependency_links.txt +0 -0
  11. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor.egg-info/entry_points.txt +0 -0
  12. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor.egg-info/requires.txt +0 -0
  13. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/realtimex_deeptutor.egg-info/top_level.txt +0 -0
  14. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/__init__.py +0 -0
  15. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/audit_prompts.py +0 -0
  16. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/check_install.py +0 -0
  17. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/generate_roster.py +0 -0
  18. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/install_all.py +0 -0
  19. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/migrate_kb.py +0 -0
  20. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/start.py +0 -0
  21. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/scripts/sync_prompts_from_en.py +0 -0
  22. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/setup.cfg +0 -0
  23. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/__init__.py +0 -0
  24. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/__init__.py +0 -0
  25. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/base_agent.py +0 -0
  26. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/chat/__init__.py +0 -0
  27. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/chat/chat_agent.py +0 -0
  28. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/chat/prompts/en/chat_agent.yaml +0 -0
  29. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/chat/prompts/zh/chat_agent.yaml +0 -0
  30. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/chat/session_manager.py +0 -0
  31. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/__init__.py +0 -0
  32. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/edit_agent.py +0 -0
  33. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/narrator_agent.py +0 -0
  34. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/prompts/en/edit_agent.yaml +0 -0
  35. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/prompts/en/narrator_agent.yaml +0 -0
  36. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/prompts/zh/edit_agent.yaml +0 -0
  37. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/co_writer/prompts/zh/narrator_agent.yaml +0 -0
  38. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/__init__.py +0 -0
  39. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/agents/__init__.py +0 -0
  40. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/agents/chat_agent.py +0 -0
  41. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/agents/interactive_agent.py +0 -0
  42. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/agents/locate_agent.py +0 -0
  43. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/agents/summary_agent.py +0 -0
  44. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/guide_manager.py +0 -0
  45. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/en/chat_agent.yaml +0 -0
  46. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/en/interactive_agent.yaml +0 -0
  47. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/en/locate_agent.yaml +0 -0
  48. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/en/summary_agent.yaml +0 -0
  49. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/zh/chat_agent.yaml +0 -0
  50. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/zh/interactive_agent.yaml +0 -0
  51. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/zh/locate_agent.yaml +0 -0
  52. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/guide/prompts/zh/summary_agent.yaml +0 -0
  53. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/__init__.py +0 -0
  54. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/idea_generation_workflow.py +0 -0
  55. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/material_organizer_agent.py +0 -0
  56. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/prompts/en/idea_generation.yaml +0 -0
  57. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/prompts/en/material_organizer.yaml +0 -0
  58. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/prompts/zh/idea_generation.yaml +0 -0
  59. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/ideagen/prompts/zh/material_organizer.yaml +0 -0
  60. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/__init__.py +0 -0
  61. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/agents/__init__.py +0 -0
  62. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/agents/generate_agent.py +0 -0
  63. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/agents/relevance_analyzer.py +0 -0
  64. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/agents/retrieve_agent.py +0 -0
  65. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/coordinator.py +0 -0
  66. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/example.py +0 -0
  67. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/en/coordinator.yaml +0 -0
  68. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/en/generate_agent.yaml +0 -0
  69. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/en/relevance_analyzer.yaml +0 -0
  70. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/en/retrieve_agent.yaml +0 -0
  71. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/zh/coordinator.yaml +0 -0
  72. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/zh/generate_agent.yaml +0 -0
  73. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/zh/relevance_analyzer.yaml +0 -0
  74. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/question/prompts/zh/retrieve_agent.yaml +0 -0
  75. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/__init__.py +0 -0
  76. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/decompose_agent.py +0 -0
  77. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/manager_agent.py +0 -0
  78. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/note_agent.py +0 -0
  79. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/rephrase_agent.py +0 -0
  80. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/reporting_agent.py +0 -0
  81. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/agents/research_agent.py +0 -0
  82. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/data_structures.py +0 -0
  83. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/main.py +0 -0
  84. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/en/decompose_agent.yaml +0 -0
  85. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/en/manager_agent.yaml +0 -0
  86. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/en/note_agent.yaml +0 -0
  87. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/en/rephrase_agent.yaml +0 -0
  88. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/en/reporting_agent.yaml +0 -0
  89. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/en/research_agent.yaml +0 -0
  90. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/zh/decompose_agent.yaml +0 -0
  91. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/zh/manager_agent.yaml +0 -0
  92. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/zh/note_agent.yaml +0 -0
  93. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/zh/rephrase_agent.yaml +0 -0
  94. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/zh/reporting_agent.yaml +0 -0
  95. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/prompts/zh/research_agent.yaml +0 -0
  96. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/research_pipeline.py +0 -0
  97. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/utils/__init__.py +0 -0
  98. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/utils/citation_manager.py +0 -0
  99. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/utils/json_utils.py +0 -0
  100. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/research/utils/token_tracker.py +0 -0
  101. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/__init__.py +0 -0
  102. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/analysis_loop/__init__.py +0 -0
  103. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/analysis_loop/investigate_agent.py +0 -0
  104. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/analysis_loop/note_agent.py +0 -0
  105. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/main_solver.py +0 -0
  106. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/memory/__init__.py +0 -0
  107. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/memory/citation_memory.py +0 -0
  108. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/memory/investigate_memory.py +0 -0
  109. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/memory/solve_memory.py +0 -0
  110. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/analysis_loop/investigate_agent.yaml +0 -0
  111. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/analysis_loop/note_agent.yaml +0 -0
  112. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/solve_loop/manager_agent.yaml +0 -0
  113. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/solve_loop/precision_answer_agent.yaml +0 -0
  114. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/solve_loop/response_agent.yaml +0 -0
  115. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/solve_loop/solve_agent.yaml +0 -0
  116. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/en/solve_loop/tool_agent.yaml +0 -0
  117. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/analysis_loop/investigate_agent.yaml +0 -0
  118. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/analysis_loop/note_agent.yaml +0 -0
  119. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/solve_loop/manager_agent.yaml +0 -0
  120. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/solve_loop/precision_answer_agent.yaml +0 -0
  121. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/solve_loop/response_agent.yaml +0 -0
  122. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/solve_loop/solve_agent.yaml +0 -0
  123. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/prompts/zh/solve_loop/tool_agent.yaml +0 -0
  124. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/session_manager.py +0 -0
  125. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/__init__.py +0 -0
  126. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/citation_manager.py +0 -0
  127. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/manager_agent.py +0 -0
  128. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/precision_answer_agent.py +0 -0
  129. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/response_agent.py +0 -0
  130. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/solve_agent.py +0 -0
  131. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/solve_loop/tool_agent.py +0 -0
  132. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/__init__.py +0 -0
  133. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/config_validator.py +0 -0
  134. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/display_manager.py +0 -0
  135. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/error_handler.py +0 -0
  136. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/json_utils.py +0 -0
  137. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/performance_monitor.py +0 -0
  138. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/agents/solve/utils/token_tracker.py +0 -0
  139. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/__init__.py +0 -0
  140. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/main.py +0 -0
  141. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/__init__.py +0 -0
  142. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/agent_config.py +0 -0
  143. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/chat.py +0 -0
  144. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/co_writer.py +0 -0
  145. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/config.py +0 -0
  146. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/dashboard.py +0 -0
  147. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/guide.py +0 -0
  148. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/ideagen.py +0 -0
  149. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/knowledge.py +0 -0
  150. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/notebook.py +0 -0
  151. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/question.py +0 -0
  152. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/realtimex.py +0 -0
  153. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/research.py +0 -0
  154. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/settings.py +0 -0
  155. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/solve.py +0 -0
  156. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/routers/system.py +0 -0
  157. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/run_server.py +0 -0
  158. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/utils/history.py +0 -0
  159. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/utils/log_interceptor.py +0 -0
  160. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/utils/notebook_manager.py +0 -0
  161. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/utils/progress_broadcaster.py +0 -0
  162. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/api/utils/task_id_manager.py +0 -0
  163. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/cli/__init__.py +0 -0
  164. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/config/__init__.py +0 -0
  165. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/config/accessors.py +0 -0
  166. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/config/constants.py +0 -0
  167. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/config/defaults.py +0 -0
  168. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/config/schema.py +0 -0
  169. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/config/settings.py +0 -0
  170. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/core/errors.py +0 -0
  171. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/__init__.py +0 -0
  172. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/add_documents.py +0 -0
  173. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/config.py +0 -0
  174. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/example_add_documents.py +0 -0
  175. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/extract_numbered_items.py +0 -0
  176. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/initializer.py +0 -0
  177. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/kb.py +0 -0
  178. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/manager.py +0 -0
  179. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/progress_tracker.py +0 -0
  180. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/knowledge/start_kb.py +0 -0
  181. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/__init__.py +0 -0
  182. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/adapters/__init__.py +0 -0
  183. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/adapters/lightrag.py +0 -0
  184. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/adapters/llamaindex.py +0 -0
  185. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/config.py +0 -0
  186. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/handlers/__init__.py +0 -0
  187. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/handlers/console.py +0 -0
  188. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/handlers/file.py +0 -0
  189. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/handlers/websocket.py +0 -0
  190. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/logger.py +0 -0
  191. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/stats/__init__.py +0 -0
  192. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/logging/stats/llm_stats.py +0 -0
  193. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/__init__.py +0 -0
  194. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/config/__init__.py +0 -0
  195. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/config/knowledge_base_config.py +0 -0
  196. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/config/loader.py +0 -0
  197. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/config/unified_config.py +0 -0
  198. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/__init__.py +0 -0
  199. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/__init__.py +0 -0
  200. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/base.py +0 -0
  201. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/cohere.py +0 -0
  202. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/jina.py +0 -0
  203. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/ollama.py +0 -0
  204. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/openai_compatible.py +0 -0
  205. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/adapters/realtimex.py +0 -0
  206. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/client.py +0 -0
  207. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/config.py +0 -0
  208. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/embedding/provider.py +0 -0
  209. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/__init__.py +0 -0
  210. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/capabilities.py +0 -0
  211. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/client.py +0 -0
  212. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/cloud_provider.py +0 -0
  213. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/config.py +0 -0
  214. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/error_mapping.py +0 -0
  215. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/exceptions.py +0 -0
  216. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/factory.py +0 -0
  217. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/local_provider.py +0 -0
  218. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/providers/anthropic.py +0 -0
  219. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/providers/base_provider.py +0 -0
  220. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/providers/open_ai.py +0 -0
  221. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/realtimex_provider.py +0 -0
  222. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/registry.py +0 -0
  223. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/telemetry.py +0 -0
  224. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/types.py +0 -0
  225. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/llm/utils.py +0 -0
  226. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/prompt/__init__.py +0 -0
  227. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/prompt/manager.py +0 -0
  228. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/__init__.py +0 -0
  229. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/__init__.py +0 -0
  230. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/base.py +0 -0
  231. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/chunkers/__init__.py +0 -0
  232. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/chunkers/base.py +0 -0
  233. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/chunkers/fixed.py +0 -0
  234. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/chunkers/numbered_item.py +0 -0
  235. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/chunkers/semantic.py +0 -0
  236. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/embedders/__init__.py +0 -0
  237. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/embedders/base.py +0 -0
  238. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/embedders/openai.py +0 -0
  239. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/indexers/__init__.py +0 -0
  240. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/indexers/base.py +0 -0
  241. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/indexers/graph.py +0 -0
  242. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/indexers/lightrag.py +0 -0
  243. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/indexers/vector.py +0 -0
  244. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/parsers/__init__.py +0 -0
  245. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/parsers/base.py +0 -0
  246. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/parsers/markdown.py +0 -0
  247. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/parsers/pdf.py +0 -0
  248. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/parsers/text.py +0 -0
  249. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/retrievers/__init__.py +0 -0
  250. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/retrievers/base.py +0 -0
  251. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/retrievers/dense.py +0 -0
  252. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/retrievers/hybrid.py +0 -0
  253. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/retrievers/lightrag.py +0 -0
  254. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/components/routing.py +0 -0
  255. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/factory.py +0 -0
  256. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/pipeline.py +0 -0
  257. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/pipelines/__init__.py +0 -0
  258. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/pipelines/lightrag.py +0 -0
  259. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/pipelines/llamaindex.py +0 -0
  260. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/pipelines/raganything.py +0 -0
  261. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/pipelines/raganything_docling.py +0 -0
  262. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/service.py +0 -0
  263. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/types.py +0 -0
  264. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/utils/__init__.py +0 -0
  265. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/rag/utils/image_migration.py +0 -0
  266. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/__init__.py +0 -0
  267. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/base.py +0 -0
  268. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/consolidation.py +0 -0
  269. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/__init__.py +0 -0
  270. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/baidu.py +0 -0
  271. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/exa.py +0 -0
  272. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/jina.py +0 -0
  273. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/perplexity.py +0 -0
  274. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/serper.py +0 -0
  275. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/providers/tavily.py +0 -0
  276. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/search/types.py +0 -0
  277. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/settings/__init__.py +0 -0
  278. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/settings/interface_settings.py +0 -0
  279. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/setup/__init__.py +0 -0
  280. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/setup/init.py +0 -0
  281. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/tts/__init__.py +0 -0
  282. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/services/tts/config.py +0 -0
  283. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/__init__.py +0 -0
  284. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/code_executor.py +0 -0
  285. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/paper_search_tool.py +0 -0
  286. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/query_item_tool.py +0 -0
  287. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/question/__init__.py +0 -0
  288. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/question/exam_mimic.py +0 -0
  289. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/question/pdf_parser.py +0 -0
  290. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/question/question_extractor.py +0 -0
  291. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/rag_tool.py +0 -0
  292. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/tex_chunker.py +0 -0
  293. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/tex_downloader.py +0 -0
  294. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/tools/web_search.py +0 -0
  295. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/config_manager.py +0 -0
  296. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/document_validator.py +0 -0
  297. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/error_rate_tracker.py +0 -0
  298. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/error_utils.py +0 -0
  299. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/json_parser.py +0 -0
  300. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/network/circuit_breaker.py +0 -0
  301. {realtimex_deeptutor-0.5.0.post3 → realtimex_deeptutor-0.5.0.post4}/src/utils/realtimex.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: realtimex-deeptutor
3
- Version: 0.5.0.post3
3
+ Version: 0.5.0.post4
4
4
  Summary: RealTimeX DeepTutor - Intelligent learning companion with multi-agent collaboration and LightRAG
5
5
  License: Apache-2.0
6
6
  Requires-Python: >=3.10
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "realtimex-deeptutor"
10
- version = "0.5.0.post3"
10
+ version = "0.5.0.post4"
11
11
  description = "RealTimeX DeepTutor - Intelligent learning companion with multi-agent collaboration and LightRAG"
12
12
  requires-python = ">=3.10"
13
13
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: realtimex-deeptutor
3
- Version: 0.5.0.post3
3
+ Version: 0.5.0.post4
4
4
  Summary: RealTimeX DeepTutor - Intelligent learning companion with multi-agent collaboration and LightRAG
5
5
  License: Apache-2.0
6
6
  Requires-Python: >=3.10
@@ -69,6 +69,194 @@ else:
69
69
  return False
70
70
 
71
71
 
72
+ def check_port_in_use(port: int) -> tuple[bool, int | None]:
73
+ """
74
+ Check if a port is in use and return the PID of the process using it.
75
+
76
+ Uses connect test to check if something is actually LISTENING on the port,
77
+ rather than bind test which fails for TIME_WAIT state.
78
+
79
+ Args:
80
+ port: Port number to check
81
+
82
+ Returns:
83
+ Tuple of (is_in_use, pid_or_none)
84
+ """
85
+ import socket
86
+
87
+ # Use connect test to check if something is actually listening
88
+ # This avoids false positives from TIME_WAIT state
89
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
90
+ sock.settimeout(1)
91
+ try:
92
+ result = sock.connect_ex(("localhost", port))
93
+ if result != 0:
94
+ # Connection refused = nothing listening = port is free
95
+ return False, None
96
+ except (OSError, socket.timeout):
97
+ # Connection failed = port is free
98
+ return False, None
99
+ finally:
100
+ try:
101
+ sock.close()
102
+ except Exception:
103
+ pass
104
+
105
+ # Port is in use (connection succeeded), try to find the PID
106
+ pid = None
107
+ try:
108
+ if os.name == "nt":
109
+ # Windows: use netstat
110
+ result = subprocess.run(
111
+ ["netstat", "-ano"],
112
+ capture_output=True,
113
+ text=True,
114
+ timeout=5,
115
+ )
116
+ for line in result.stdout.splitlines():
117
+ if f":{port}" in line and "LISTENING" in line:
118
+ parts = line.split()
119
+ if parts:
120
+ try:
121
+ pid = int(parts[-1])
122
+ break
123
+ except ValueError:
124
+ pass
125
+ else:
126
+ # Unix: use lsof
127
+ result = subprocess.run(
128
+ ["lsof", "-ti", f":{port}"],
129
+ capture_output=True,
130
+ text=True,
131
+ timeout=5,
132
+ )
133
+ if result.returncode == 0 and result.stdout.strip():
134
+ # May return multiple PIDs, take the first one
135
+ try:
136
+ pid = int(result.stdout.strip().split()[0])
137
+ except (ValueError, IndexError):
138
+ pass
139
+ except Exception:
140
+ pass
141
+
142
+ return True, pid
143
+
144
+
145
+ def kill_process_on_port(port: int, force: bool = False) -> bool:
146
+ """
147
+ Kill the process using a specific port.
148
+
149
+ Args:
150
+ port: Port number
151
+ force: If True, use SIGKILL instead of SIGTERM
152
+
153
+ Returns:
154
+ True if process was killed successfully
155
+ """
156
+ in_use, pid = check_port_in_use(port)
157
+ if not in_use:
158
+ return True # Port is free
159
+
160
+ if pid is None:
161
+ print_flush(f"⚠️ Port {port} is in use but couldn't identify the process")
162
+ return False
163
+
164
+ print_flush(f" Stopping process {pid} on port {port}...")
165
+
166
+ try:
167
+ if os.name == "nt":
168
+ subprocess.run(["taskkill", "/F", "/PID", str(pid)], check=True, capture_output=True)
169
+ else:
170
+ sig = signal.SIGKILL if force else signal.SIGTERM
171
+ os.kill(pid, sig)
172
+ # Wait a moment for process to terminate
173
+ time.sleep(0.5)
174
+ # Check if still running, force kill if needed
175
+ if not force:
176
+ try:
177
+ os.kill(pid, 0) # Check if process exists
178
+ os.kill(pid, signal.SIGKILL)
179
+ time.sleep(0.3)
180
+ except ProcessLookupError:
181
+ pass # Process already terminated
182
+
183
+ # Verify port is now free
184
+ time.sleep(0.3)
185
+ in_use, _ = check_port_in_use(port)
186
+ if not in_use:
187
+ print_flush(f"✅ Port {port} is now free")
188
+ return True
189
+ else:
190
+ print_flush(f"⚠️ Port {port} still in use after killing process")
191
+ return False
192
+
193
+ except Exception as e:
194
+ print_flush(f"❌ Failed to kill process {pid}: {e}")
195
+ return False
196
+
197
+
198
+ def ensure_ports_available(backend_port: int, frontend_port: int, auto_kill: bool = False) -> bool:
199
+ """
200
+ Ensure required ports are available, optionally killing existing processes.
201
+
202
+ Args:
203
+ backend_port: Backend port number
204
+ frontend_port: Frontend port number
205
+ auto_kill: If True, automatically kill processes using the ports
206
+
207
+ Returns:
208
+ True if all ports are available
209
+ """
210
+ ports_to_check = [
211
+ (backend_port, "Backend"),
212
+ (frontend_port, "Frontend"),
213
+ ]
214
+
215
+ conflicts = []
216
+ for port, name in ports_to_check:
217
+ in_use, pid = check_port_in_use(port)
218
+ if in_use:
219
+ conflicts.append((port, name, pid))
220
+
221
+ if not conflicts:
222
+ return True
223
+
224
+ print_flush("")
225
+ print_flush("⚠️ Port conflict detected:")
226
+ for port, name, pid in conflicts:
227
+ pid_info = f" (PID: {pid})" if pid else ""
228
+ print_flush(f" - {name} port {port} is already in use{pid_info}")
229
+
230
+ if auto_kill:
231
+ print_flush("")
232
+ print_flush("🔄 AUTO_KILL_PORTS is enabled, cleaning up...")
233
+ all_freed = True
234
+ for port, name, _ in conflicts:
235
+ if not kill_process_on_port(port):
236
+ all_freed = False
237
+ return all_freed
238
+ else:
239
+ print_flush("")
240
+ print_flush("💡 To resolve this, you can either:")
241
+ print_flush(" 1. Set AUTO_KILL_PORTS=true to automatically clean up")
242
+ print_flush(" 2. Manually kill the processes:")
243
+ for port, name, pid in conflicts:
244
+ if pid:
245
+ if os.name == "nt":
246
+ print_flush(f" taskkill /F /PID {pid}")
247
+ else:
248
+ print_flush(f" kill -9 {pid}")
249
+ else:
250
+ if os.name == "nt":
251
+ print_flush(f" netstat -ano | findstr :{port}")
252
+ else:
253
+ print_flush(f" lsof -ti :{port} | xargs kill -9")
254
+ print_flush(" 3. Use different ports via environment variables:")
255
+ print_flush(" BACKEND_PORT=8002 FRONTEND_PORT=3783 uvx realtimex-deeptutor")
256
+ print_flush("")
257
+ return False
258
+
259
+
72
260
  def terminate_process_tree(process, name="Process", timeout=5):
73
261
  """
74
262
  Terminate a process and all its children (process group).
@@ -541,6 +729,23 @@ if __name__ == "__main__":
541
729
  print_flush(f"⚠️ Warning: Failed to initialize user directories: {e}")
542
730
  print_flush(" Continuing anyway...")
543
731
 
732
+ # Check for port conflicts before starting services
733
+ try:
734
+ from pathlib import Path
735
+
736
+ from src.services.setup import get_ports
737
+
738
+ backend_port, frontend_port = get_ports(
739
+ Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
740
+ )
741
+
742
+ auto_kill = os.environ.get("AUTO_KILL_PORTS", "").lower() in ("true", "1", "yes")
743
+ if not ensure_ports_available(backend_port, frontend_port, auto_kill=auto_kill):
744
+ sys.exit(1)
745
+ except Exception as e:
746
+ print_flush(f"⚠️ Warning: Failed to check ports: {e}")
747
+ print_flush(" Continuing anyway...")
748
+
544
749
  backend = None
545
750
  frontend = None
546
751
 
@@ -39,6 +39,7 @@ Examples:
39
39
  Environment Variables:
40
40
  FRONTEND_PORT Frontend port (default: 3782)
41
41
  BACKEND_PORT Backend port (default: 8001)
42
+ AUTO_KILL_PORTS Auto-kill processes using required ports (default: false)
42
43
  RTX_APP_ID RealTimeX App ID (auto-detected)
43
44
  API_BASE_URL Backend API URL (auto-configured)
44
45
  LOG_LEVEL Logging level (DEBUG, INFO, WARNING, ERROR)