realtimex-deeptutor 0.5.0.post4__tar.gz → 0.5.0.post7__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.
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/PKG-INFO +1 -1
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/pyproject.toml +1 -1
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor.egg-info/PKG-INFO +1 -1
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/start_web.py +78 -2
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/narrator_agent.py +44 -20
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/realtimex.py +18 -2
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/config/unified_config.py +50 -9
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/tts/config.py +1 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/realtimex.py +39 -6
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/LICENSE +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/README.md +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor.egg-info/SOURCES.txt +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor.egg-info/dependency_links.txt +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor.egg-info/entry_points.txt +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor.egg-info/requires.txt +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor.egg-info/top_level.txt +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/audit_prompts.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/check_install.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/generate_roster.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/install_all.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/migrate_kb.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/start.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/sync_prompts_from_en.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/setup.cfg +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/base_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/chat_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/prompts/en/chat_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/prompts/zh/chat_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/session_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/edit_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/prompts/en/edit_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/prompts/en/narrator_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/prompts/zh/edit_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/prompts/zh/narrator_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/agents/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/agents/chat_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/agents/interactive_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/agents/locate_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/agents/summary_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/guide_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/en/chat_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/en/interactive_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/en/locate_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/en/summary_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/zh/chat_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/zh/interactive_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/zh/locate_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/prompts/zh/summary_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/idea_generation_workflow.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/material_organizer_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/prompts/en/idea_generation.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/prompts/en/material_organizer.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/prompts/zh/idea_generation.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/prompts/zh/material_organizer.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/agents/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/agents/generate_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/agents/relevance_analyzer.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/agents/retrieve_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/coordinator.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/example.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/en/coordinator.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/en/generate_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/en/relevance_analyzer.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/en/retrieve_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/zh/coordinator.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/zh/generate_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/zh/relevance_analyzer.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/prompts/zh/retrieve_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/decompose_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/manager_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/note_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/rephrase_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/reporting_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/agents/research_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/data_structures.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/main.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/en/decompose_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/en/manager_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/en/note_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/en/rephrase_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/en/reporting_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/en/research_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/zh/decompose_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/zh/manager_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/zh/note_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/zh/rephrase_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/zh/reporting_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/prompts/zh/research_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/research_pipeline.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/utils/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/utils/citation_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/utils/json_utils.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/research/utils/token_tracker.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/analysis_loop/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/analysis_loop/investigate_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/analysis_loop/note_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/main_solver.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/memory/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/memory/citation_memory.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/memory/investigate_memory.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/memory/solve_memory.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/analysis_loop/investigate_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/analysis_loop/note_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/solve_loop/manager_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/solve_loop/precision_answer_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/solve_loop/response_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/solve_loop/solve_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/en/solve_loop/tool_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/analysis_loop/investigate_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/analysis_loop/note_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/solve_loop/manager_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/solve_loop/precision_answer_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/solve_loop/response_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/solve_loop/solve_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/prompts/zh/solve_loop/tool_agent.yaml +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/session_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/citation_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/manager_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/precision_answer_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/response_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/solve_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/solve_loop/tool_agent.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/config_validator.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/display_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/error_handler.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/json_utils.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/performance_monitor.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/solve/utils/token_tracker.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/main.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/agent_config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/chat.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/co_writer.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/dashboard.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/guide.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/ideagen.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/knowledge.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/notebook.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/question.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/research.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/settings.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/solve.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/system.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/run_server.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/utils/history.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/utils/log_interceptor.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/utils/notebook_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/utils/progress_broadcaster.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/utils/task_id_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/cli/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/cli/start.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/config/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/config/accessors.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/config/constants.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/config/defaults.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/config/schema.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/config/settings.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/core/errors.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/add_documents.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/example_add_documents.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/extract_numbered_items.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/initializer.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/kb.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/progress_tracker.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/knowledge/start_kb.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/adapters/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/adapters/lightrag.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/adapters/llamaindex.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/handlers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/handlers/console.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/handlers/file.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/handlers/websocket.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/logger.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/stats/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/logging/stats/llm_stats.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/config/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/config/knowledge_base_config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/config/loader.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/cohere.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/jina.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/ollama.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/openai_compatible.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/adapters/realtimex.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/client.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/embedding/provider.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/capabilities.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/client.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/cloud_provider.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/config.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/error_mapping.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/exceptions.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/factory.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/local_provider.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/providers/anthropic.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/providers/base_provider.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/providers/open_ai.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/realtimex_provider.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/registry.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/telemetry.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/types.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/llm/utils.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/prompt/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/prompt/manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/chunkers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/chunkers/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/chunkers/fixed.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/chunkers/numbered_item.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/chunkers/semantic.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/embedders/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/embedders/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/embedders/openai.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/indexers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/indexers/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/indexers/graph.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/indexers/lightrag.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/indexers/vector.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/parsers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/parsers/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/parsers/markdown.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/parsers/pdf.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/parsers/text.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/retrievers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/retrievers/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/retrievers/dense.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/retrievers/hybrid.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/retrievers/lightrag.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/components/routing.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/factory.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/pipeline.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/pipelines/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/pipelines/lightrag.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/pipelines/llamaindex.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/pipelines/raganything.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/pipelines/raganything_docling.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/service.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/types.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/utils/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/rag/utils/image_migration.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/base.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/consolidation.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/baidu.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/exa.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/jina.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/perplexity.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/serper.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/providers/tavily.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/search/types.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/settings/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/settings/interface_settings.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/setup/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/setup/init.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/tts/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/code_executor.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/paper_search_tool.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/query_item_tool.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/question/__init__.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/question/exam_mimic.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/question/pdf_parser.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/question/question_extractor.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/rag_tool.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/tex_chunker.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/tex_downloader.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/tools/web_search.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/config_manager.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/document_validator.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/error_rate_tracker.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/error_utils.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/json_parser.py +0 -0
- {realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/utils/network/circuit_breaker.py +0 -0
|
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "realtimex-deeptutor"
|
|
10
|
-
version = "0.5.0.
|
|
10
|
+
version = "0.5.0.post7"
|
|
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"
|
|
@@ -20,6 +20,80 @@ if hasattr(sys.stdout, "reconfigure"):
|
|
|
20
20
|
sys.stdout.reconfigure(line_buffering=True)
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
class ExecutableResolver:
|
|
24
|
+
"""
|
|
25
|
+
Resolves bundled executables (uvx, uv, npx) to their actual paths.
|
|
26
|
+
Ported from ExecutableResolver.js
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
def __init__(self):
|
|
30
|
+
self._resources_root = None
|
|
31
|
+
|
|
32
|
+
def get_resources_root(self) -> Path | None:
|
|
33
|
+
"""
|
|
34
|
+
Get the resources root directory (~/.realtimex.ai)
|
|
35
|
+
Returns path to resources root or None if not found
|
|
36
|
+
"""
|
|
37
|
+
if self._resources_root:
|
|
38
|
+
return self._resources_root
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
home = Path.home()
|
|
42
|
+
self._resources_root = home / ".realtimex.ai"
|
|
43
|
+
return self._resources_root
|
|
44
|
+
except Exception as e:
|
|
45
|
+
print_flush(f"⚠️ [ExecutableResolver] Failed to resolve resources directory: {e}")
|
|
46
|
+
return None
|
|
47
|
+
|
|
48
|
+
def resolve_from_candidates(
|
|
49
|
+
self, env_var: str | None, candidates: list[Path | str]
|
|
50
|
+
) -> str | None:
|
|
51
|
+
"""
|
|
52
|
+
Find a valid executable from a list of candidate paths
|
|
53
|
+
"""
|
|
54
|
+
search_paths = []
|
|
55
|
+
if env_var:
|
|
56
|
+
search_paths.append(Path(env_var))
|
|
57
|
+
|
|
58
|
+
search_paths.extend([Path(c) for c in candidates])
|
|
59
|
+
|
|
60
|
+
for candidate in search_paths:
|
|
61
|
+
if not candidate:
|
|
62
|
+
continue
|
|
63
|
+
try:
|
|
64
|
+
if candidate.exists() and candidate.is_file():
|
|
65
|
+
return str(candidate)
|
|
66
|
+
except Exception:
|
|
67
|
+
pass
|
|
68
|
+
return None
|
|
69
|
+
|
|
70
|
+
def resolve_npx(self) -> str | None:
|
|
71
|
+
"""
|
|
72
|
+
Resolve npx to bundled executable
|
|
73
|
+
"""
|
|
74
|
+
resources_dir = self.get_resources_root()
|
|
75
|
+
if not resources_dir:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
node_version = os.environ.get("REALTIMEX_NPX_NODE_VERSION", "v22.16.0")
|
|
79
|
+
home = Path.home()
|
|
80
|
+
|
|
81
|
+
candidates = [
|
|
82
|
+
# User's NVM installation (most common case)
|
|
83
|
+
home / ".nvm" / "versions" / "node" / node_version / "bin" / "npx",
|
|
84
|
+
# NVM-installed node in resources dir (bundled)
|
|
85
|
+
resources_dir / ".nvm" / "versions" / "node" / node_version / "bin" / "npx",
|
|
86
|
+
# Windows NVM
|
|
87
|
+
Path("C:/nvm") / node_version / "npx.cmd",
|
|
88
|
+
# Bundled in Resources
|
|
89
|
+
resources_dir / "Resources" / "envs" / "Scripts" / "npx.cmd",
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
return self.resolve_from_candidates(
|
|
93
|
+
env_var=os.environ.get("REALTIMEX_NPX_PATH"), candidates=candidates
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
23
97
|
def print_flush(*args, **kwargs):
|
|
24
98
|
"""Print with flush=True by default"""
|
|
25
99
|
kwargs.setdefault("flush", True)
|
|
@@ -625,7 +699,9 @@ def _start_frontend_npx(frontend_port, backend_port):
|
|
|
625
699
|
"""Start frontend using published package via npx (production mode)"""
|
|
626
700
|
|
|
627
701
|
# Check if npx is available
|
|
628
|
-
|
|
702
|
+
resolver = ExecutableResolver()
|
|
703
|
+
npx_path = resolver.resolve_npx() or shutil.which("npx")
|
|
704
|
+
|
|
629
705
|
if not npx_path:
|
|
630
706
|
print_flush("❌ Error: 'npx' command not found!")
|
|
631
707
|
print_flush(" Please install Node.js and npm first.")
|
|
@@ -653,7 +729,7 @@ def _start_frontend_npx(frontend_port, backend_port):
|
|
|
653
729
|
if os.name == "nt":
|
|
654
730
|
env["PYTHONLEGACYWINDOWSSTDIO"] = "0"
|
|
655
731
|
|
|
656
|
-
npx_cmd =
|
|
732
|
+
npx_cmd = npx_path or "npx"
|
|
657
733
|
|
|
658
734
|
# Process group configuration
|
|
659
735
|
popen_kwargs = {
|
|
@@ -315,30 +315,54 @@ class NarratorAgent(BaseAgent):
|
|
|
315
315
|
self.logger.info(f"Starting TTS audio generation - ID: {audio_id}, Voice: {voice}")
|
|
316
316
|
|
|
317
317
|
try:
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
318
|
+
# Check if using RealTimeX SDK
|
|
319
|
+
if self.tts_config.get("source") == "realtimex":
|
|
320
|
+
from src.utils.realtimex import get_realtimex_sdk
|
|
321
|
+
|
|
322
|
+
sdk = get_realtimex_sdk()
|
|
323
|
+
|
|
324
|
+
# Use SDK to generate audio
|
|
325
|
+
audio_bytes = await sdk.tts.speak(
|
|
326
|
+
text=script,
|
|
327
|
+
voice=voice,
|
|
328
|
+
model=self.tts_config.get("model"),
|
|
329
|
+
provider=self.tts_config.get("provider")
|
|
330
|
+
if self.tts_config.get("provider") != "realtimexai"
|
|
331
|
+
else None,
|
|
332
|
+
speed=self.tts_config.get("speed"),
|
|
333
|
+
num_inference_steps=self.tts_config.get("quality"),
|
|
328
334
|
)
|
|
335
|
+
|
|
336
|
+
# Save bytes to file
|
|
337
|
+
with open(audio_path, "wb") as f:
|
|
338
|
+
f.write(audio_bytes)
|
|
339
|
+
|
|
329
340
|
else:
|
|
330
|
-
#
|
|
331
|
-
|
|
332
|
-
|
|
341
|
+
# Standard OpenAI/Azure implementation
|
|
342
|
+
binding = os.getenv("TTS_BINDING", "openai")
|
|
343
|
+
api_version = self.tts_config.get("api_version")
|
|
344
|
+
|
|
345
|
+
# Only use Azure client if binding is explicitly Azure,
|
|
346
|
+
# OR if binding is generic 'openai' but an Azure-specific api_version is present.
|
|
347
|
+
if binding == "azure_openai" or (binding == "openai" and api_version):
|
|
348
|
+
client = AsyncAzureOpenAI(
|
|
349
|
+
api_key=self.tts_config["api_key"],
|
|
350
|
+
azure_endpoint=self.tts_config["base_url"],
|
|
351
|
+
api_version=api_version,
|
|
352
|
+
)
|
|
353
|
+
else:
|
|
354
|
+
# Create OpenAI client with custom base_url
|
|
355
|
+
client = AsyncOpenAI(
|
|
356
|
+
base_url=self.tts_config["base_url"], api_key=self.tts_config["api_key"]
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
# Call OpenAI TTS API
|
|
360
|
+
response = await client.audio.speech.create(
|
|
361
|
+
model=self.tts_config["model"], voice=voice, input=script
|
|
333
362
|
)
|
|
334
363
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
model=self.tts_config["model"], voice=voice, input=script
|
|
338
|
-
)
|
|
339
|
-
|
|
340
|
-
# Save audio to file
|
|
341
|
-
await response.stream_to_file(audio_path)
|
|
364
|
+
# Save audio to file
|
|
365
|
+
await response.stream_to_file(audio_path)
|
|
342
366
|
|
|
343
367
|
self.logger.info(f"Audio saved to: {audio_path}")
|
|
344
368
|
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/api/routers/realtimex.py
RENAMED
|
@@ -83,12 +83,16 @@ async def get_providers():
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
from pydantic import BaseModel
|
|
86
|
+
from typing import Optional
|
|
86
87
|
|
|
87
88
|
|
|
88
89
|
class RTXConfigApplyRequest(BaseModel):
|
|
89
|
-
config_type: str # "llm" or "
|
|
90
|
+
config_type: str # "llm", "embedding" or "tts"
|
|
90
91
|
provider: str
|
|
91
92
|
model: str
|
|
93
|
+
voice: Optional[str] = None
|
|
94
|
+
speed: Optional[float] = None
|
|
95
|
+
quality: Optional[int] = None
|
|
92
96
|
|
|
93
97
|
|
|
94
98
|
@router.post("/realtimex/config/apply")
|
|
@@ -113,11 +117,20 @@ async def apply_rtx_config(request: RTXConfigApplyRequest):
|
|
|
113
117
|
config_type_enum = ConfigType.LLM
|
|
114
118
|
elif request.config_type == "embedding":
|
|
115
119
|
config_type_enum = ConfigType.EMBEDDING
|
|
120
|
+
elif request.config_type == "tts":
|
|
121
|
+
config_type_enum = ConfigType.TTS
|
|
116
122
|
else:
|
|
117
123
|
raise HTTPException(400, f"Invalid config type: {request.config_type}")
|
|
118
124
|
|
|
119
125
|
# Save RTX selection to rtx_active.json
|
|
120
|
-
if not set_rtx_active_config(
|
|
126
|
+
if not set_rtx_active_config(
|
|
127
|
+
request.config_type,
|
|
128
|
+
request.provider,
|
|
129
|
+
request.model,
|
|
130
|
+
request.voice,
|
|
131
|
+
request.speed,
|
|
132
|
+
request.quality,
|
|
133
|
+
):
|
|
121
134
|
raise HTTPException(500, "Failed to save RTX configuration")
|
|
122
135
|
|
|
123
136
|
# Set 'rtx' as the active config in unified config manager
|
|
@@ -129,6 +142,9 @@ async def apply_rtx_config(request: RTXConfigApplyRequest):
|
|
|
129
142
|
"config_type": request.config_type,
|
|
130
143
|
"provider": request.provider,
|
|
131
144
|
"model": request.model,
|
|
145
|
+
"voice": request.voice,
|
|
146
|
+
"speed": request.speed,
|
|
147
|
+
"quality": request.quality,
|
|
132
148
|
}
|
|
133
149
|
|
|
134
150
|
except HTTPException:
|
|
@@ -190,6 +190,22 @@ class UnifiedConfigManager:
|
|
|
190
190
|
self.set_active_config(ConfigType.EMBEDDING, "rtx")
|
|
191
191
|
logger.info("Auto-activated RealTimeX for Embedding")
|
|
192
192
|
|
|
193
|
+
# Auto-activate for TTS
|
|
194
|
+
tts_data = self._load_configs(ConfigType.TTS)
|
|
195
|
+
tts_active_id = tts_data.get("active_id", "default")
|
|
196
|
+
|
|
197
|
+
# Only auto-activate if still using default
|
|
198
|
+
if tts_active_id == "default":
|
|
199
|
+
rtx_tts_config = get_rtx_active_config("tts")
|
|
200
|
+
if not rtx_tts_config:
|
|
201
|
+
# Set default RTX TTS config
|
|
202
|
+
set_rtx_active_config("tts", "realtimexai", "tts-1")
|
|
203
|
+
logger.info("Auto-configured RealTimeX TTS with default model: tts-1")
|
|
204
|
+
|
|
205
|
+
# Activate RTX for TTS
|
|
206
|
+
self.set_active_config(ConfigType.TTS, "rtx")
|
|
207
|
+
logger.info("Auto-activated RealTimeX for TTS")
|
|
208
|
+
|
|
193
209
|
except ImportError:
|
|
194
210
|
# RTX utilities not available
|
|
195
211
|
pass
|
|
@@ -472,8 +488,8 @@ class UnifiedConfigManager:
|
|
|
472
488
|
if not should_use_realtimex_sdk():
|
|
473
489
|
return None
|
|
474
490
|
|
|
475
|
-
# Only LLM and
|
|
476
|
-
if config_type not in (ConfigType.LLM, ConfigType.EMBEDDING):
|
|
491
|
+
# Only LLM, Embedding, and TTS are supported via RTX
|
|
492
|
+
if config_type not in (ConfigType.LLM, ConfigType.EMBEDDING, ConfigType.TTS):
|
|
477
493
|
return None
|
|
478
494
|
|
|
479
495
|
# Get user's active selection (or use defaults)
|
|
@@ -482,15 +498,23 @@ class UnifiedConfigManager:
|
|
|
482
498
|
if active:
|
|
483
499
|
provider = active.get("provider", "realtimexai")
|
|
484
500
|
model = active.get("model", "")
|
|
501
|
+
voice = active.get("voice")
|
|
502
|
+
speed = active.get("speed")
|
|
503
|
+
quality = active.get("quality")
|
|
485
504
|
else:
|
|
486
505
|
# Use defaults
|
|
487
506
|
provider = "realtimexai"
|
|
507
|
+
voice = None
|
|
508
|
+
speed = None
|
|
509
|
+
quality = None
|
|
488
510
|
if config_type == ConfigType.LLM:
|
|
489
511
|
model = "gpt-4o-mini"
|
|
490
|
-
|
|
512
|
+
elif config_type == ConfigType.EMBEDDING:
|
|
491
513
|
model = "text-embedding-3-small"
|
|
514
|
+
elif config_type == ConfigType.TTS:
|
|
515
|
+
model = "tts-1"
|
|
492
516
|
|
|
493
|
-
|
|
517
|
+
config = {
|
|
494
518
|
"id": "rtx",
|
|
495
519
|
"name": "RealTimeX",
|
|
496
520
|
"is_default": False,
|
|
@@ -500,6 +524,16 @@ class UnifiedConfigManager:
|
|
|
500
524
|
"api_key": "—", # No API key needed
|
|
501
525
|
"base_url": "—", # Uses SDK proxy
|
|
502
526
|
}
|
|
527
|
+
|
|
528
|
+
# Add TTS-specific fields if present
|
|
529
|
+
if voice:
|
|
530
|
+
config["voice"] = voice
|
|
531
|
+
if speed is not None:
|
|
532
|
+
config["speed"] = speed
|
|
533
|
+
if quality is not None:
|
|
534
|
+
config["quality"] = quality
|
|
535
|
+
|
|
536
|
+
return config
|
|
503
537
|
|
|
504
538
|
except ImportError:
|
|
505
539
|
return None
|
|
@@ -602,15 +636,22 @@ class UnifiedConfigManager:
|
|
|
602
636
|
"id": "rtx",
|
|
603
637
|
"provider": rtx_active.get("provider", "realtimexai"),
|
|
604
638
|
"model": rtx_active.get("model", ""),
|
|
639
|
+
"voice": rtx_active.get("voice"), # Include voice for TTS
|
|
640
|
+
"speed": rtx_active.get("speed"), # Include speed for TTS
|
|
641
|
+
"quality": rtx_active.get("quality"), # Include quality for TTS
|
|
605
642
|
"source": "realtimex", # This tells services to use SDK
|
|
606
643
|
}
|
|
607
644
|
else:
|
|
608
645
|
# Return defaults when no selection exists yet
|
|
609
|
-
|
|
610
|
-
"gpt-4o-mini"
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
646
|
+
if config_type == ConfigType.LLM:
|
|
647
|
+
default_model = "gpt-4o-mini"
|
|
648
|
+
elif config_type == ConfigType.EMBEDDING:
|
|
649
|
+
default_model = "text-embedding-3-small"
|
|
650
|
+
elif config_type == ConfigType.TTS:
|
|
651
|
+
default_model = "tts-1"
|
|
652
|
+
else:
|
|
653
|
+
default_model = ""
|
|
654
|
+
|
|
614
655
|
return {
|
|
615
656
|
"id": "rtx",
|
|
616
657
|
"provider": "realtimexai",
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/services/tts/config.py
RENAMED
|
@@ -60,6 +60,7 @@ def get_tts_config() -> dict:
|
|
|
60
60
|
"base_url": config.get("base_url", ""),
|
|
61
61
|
"api_version": config.get("api_version"),
|
|
62
62
|
"voice": config.get("voice", "alloy"),
|
|
63
|
+
"source": config.get("source"), # "realtimex" when using RTX
|
|
63
64
|
}
|
|
64
65
|
except ImportError:
|
|
65
66
|
# Unified config service not yet available, fall back to env
|
|
@@ -45,6 +45,8 @@ def get_realtimex_sdk() -> "RealtimeXSDK":
|
|
|
45
45
|
"llm.chat", # For LLM completions
|
|
46
46
|
"llm.providers", # For listing available providers
|
|
47
47
|
"llm.embed", # For embeddings
|
|
48
|
+
"tts.speak", # For TTS
|
|
49
|
+
"tts.providers", # For listing TTS providers
|
|
48
50
|
]
|
|
49
51
|
)
|
|
50
52
|
)
|
|
@@ -160,21 +162,34 @@ async def get_cached_providers() -> dict:
|
|
|
160
162
|
try:
|
|
161
163
|
sdk = get_realtimex_sdk()
|
|
162
164
|
|
|
163
|
-
# Fetch
|
|
164
|
-
# In a real async environment we might use asyncio.gather, but sequential is safe
|
|
165
|
+
# Fetch all providers in parallel (conceptually)
|
|
165
166
|
llm_result = await sdk.llm.chat_providers()
|
|
166
167
|
embed_result = await sdk.llm.embed_providers()
|
|
168
|
+
tts_result = await sdk.tts.list_providers()
|
|
167
169
|
|
|
168
170
|
def serialize_provider(p):
|
|
169
|
-
return
|
|
171
|
+
# Handle both object and dict responses (SDK might return dicts for TTS)
|
|
172
|
+
if isinstance(p, dict):
|
|
173
|
+
# Normalize: ensure 'provider' key exists (SDK uses 'id' for TTS)
|
|
174
|
+
if "provider" not in p and "id" in p:
|
|
175
|
+
p["provider"] = p["id"]
|
|
176
|
+
return p
|
|
177
|
+
|
|
178
|
+
data = {
|
|
170
179
|
"provider": p.provider,
|
|
171
180
|
"models": [{"id": m.id, "name": m.name} for m in p.models],
|
|
172
181
|
}
|
|
182
|
+
# Add config metadata if available (for TTS advanced options)
|
|
183
|
+
if hasattr(p, "config"):
|
|
184
|
+
data["config"] = p.config
|
|
185
|
+
|
|
186
|
+
return data
|
|
173
187
|
|
|
174
188
|
_providers_cache = {
|
|
175
189
|
"rtx_enabled": True,
|
|
176
190
|
"llm": [serialize_provider(p) for p in llm_result.providers],
|
|
177
191
|
"embedding": [serialize_provider(p) for p in embed_result.providers],
|
|
192
|
+
"tts": [serialize_provider(p) for p in tts_result],
|
|
178
193
|
}
|
|
179
194
|
_providers_cache_time = time.time()
|
|
180
195
|
|
|
@@ -247,23 +262,41 @@ def get_rtx_active_config(config_type: str) -> Optional[dict]:
|
|
|
247
262
|
return data.get(config_type)
|
|
248
263
|
|
|
249
264
|
|
|
250
|
-
def set_rtx_active_config(
|
|
265
|
+
def set_rtx_active_config(
|
|
266
|
+
config_type: str,
|
|
267
|
+
provider: str,
|
|
268
|
+
model: str,
|
|
269
|
+
voice: Optional[str] = None,
|
|
270
|
+
speed: Optional[float] = None,
|
|
271
|
+
quality: Optional[int] = None,
|
|
272
|
+
) -> bool:
|
|
251
273
|
"""
|
|
252
274
|
Set the active RTX config for a specific config type.
|
|
253
275
|
|
|
254
276
|
Args:
|
|
255
|
-
config_type: "llm" or "
|
|
277
|
+
config_type: "llm", "embedding" or "tts"
|
|
256
278
|
provider: Provider name (e.g., "openai")
|
|
257
279
|
model: Model ID (e.g., "gpt-4o")
|
|
280
|
+
voice: Optional voice ID (for TTS)
|
|
281
|
+
speed: Optional speed multiplier (for TTS)
|
|
282
|
+
quality: Optional quality/inference steps (for TTS)
|
|
258
283
|
|
|
259
284
|
Returns:
|
|
260
285
|
True if saved successfully
|
|
261
286
|
"""
|
|
262
287
|
data = _load_rtx_active_config()
|
|
263
|
-
|
|
288
|
+
config = {
|
|
264
289
|
"provider": provider,
|
|
265
290
|
"model": model,
|
|
266
291
|
}
|
|
292
|
+
if voice:
|
|
293
|
+
config["voice"] = voice
|
|
294
|
+
if speed is not None:
|
|
295
|
+
config["speed"] = speed
|
|
296
|
+
if quality is not None:
|
|
297
|
+
config["quality"] = quality
|
|
298
|
+
|
|
299
|
+
data[config_type] = config
|
|
267
300
|
return _save_rtx_active_config(data)
|
|
268
301
|
|
|
269
302
|
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/realtimex_deeptutor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/audit_prompts.py
RENAMED
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/check_install.py
RENAMED
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/generate_roster.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/scripts/sync_prompts_from_en.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/base_agent.py
RENAMED
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/__init__.py
RENAMED
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/chat/chat_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/co_writer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/guide/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/ideagen/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{realtimex_deeptutor-0.5.0.post4 → realtimex_deeptutor-0.5.0.post7}/src/agents/question/example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|