sycommon-python-lib 0.2.4a6__tar.gz → 0.2.5a0__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 (278) hide show
  1. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/PKG-INFO +3 -3
  2. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/pyproject.toml +3 -3
  3. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/file_ops.py +24 -4
  4. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/http_sandbox_backend.py +27 -3
  5. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/minio_sync.py +26 -13
  6. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/sandbox_recovery.py +3 -2
  7. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/sandbox.py +277 -117
  8. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/tool_result_truncation.py +92 -11
  9. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/sandbox.py +1 -0
  10. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/feign.py +5 -2
  11. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/feign_client.py +7 -4
  12. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/PKG-INFO +3 -3
  13. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/requires.txt +2 -2
  14. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/README.md +0 -0
  15. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/setup.cfg +0 -0
  16. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/cli.py +0 -0
  18. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/console.py +0 -0
  20. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/models.py +0 -0
  21. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/project.py +0 -0
  22. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/utils.py +0 -0
  23. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/__init__.py +0 -0
  24. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/README.md.tpl +0 -0
  25. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/__init__.py +0 -0
  26. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/query.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/app.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/service.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/model/parse.py.tpl +0 -0
  44. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  46. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/.env.tpl +0 -0
  47. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/.gitignore.tpl +0 -0
  48. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/Dockerfile.tpl +0 -0
  49. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/README.md.tpl +0 -0
  50. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/__init__.py +0 -0
  51. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/app.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/app.yaml.tpl +0 -0
  53. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/client/__init__.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/model/__init__.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/model/file_info.py.tpl +0 -0
  57. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/requirements.txt.tpl +0 -0
  58. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/README.md.tpl +0 -0
  59. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/__init__.py +0 -0
  60. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/app.py.tpl +0 -0
  61. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  64. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/README.md.tpl +0 -0
  66. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/__init__.py +0 -0
  67. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/__init__.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/echo.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/app.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/client/__init__.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/model/__init__.py.tpl +0 -0
  74. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  75. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/tools/mq.py.tpl +0 -0
  76. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/nexus/__init__.py +0 -0
  77. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/__main__.py +0 -0
  79. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/agents/__init__.py +0 -0
  80. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/agents/factory.py +0 -0
  81. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/agents/prompts.py +0 -0
  82. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/__init__.py +0 -0
  83. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/browser.py +0 -0
  84. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/__init__.py +0 -0
  85. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/console.py +0 -0
  86. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/dom.py +0 -0
  87. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/network.py +0 -0
  88. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  89. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/performance.py +0 -0
  90. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  91. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/client.py +0 -0
  92. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/protocol.py +0 -0
  93. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/repl.py +0 -0
  94. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cli.py +0 -0
  95. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/__init__.py +0 -0
  96. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/cdp_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/chat_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/create_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/evaluate_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/init_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/memory_cmd.py +0 -0
  102. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/resume_cmd.py +0 -0
  103. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/rollback_cmd.py +0 -0
  104. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/run_cmd.py +0 -0
  105. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/__init__.py +0 -0
  106. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/backend.py +0 -0
  107. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/config.py +0 -0
  108. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/display.py +0 -0
  109. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/git_integration.py +0 -0
  110. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/llm.py +0 -0
  111. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/state.py +0 -0
  112. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/evaluate/__init__.py +0 -0
  113. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/evaluate/api_evaluator.py +0 -0
  114. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/__init__.py +0 -0
  115. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/compressor.py +0 -0
  116. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/full.py +0 -0
  117. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/hot.py +0 -0
  118. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/manager.py +0 -0
  119. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/warm.py +0 -0
  120. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/mode/__init__.py +0 -0
  121. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/mode/create.py +0 -0
  122. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/mode/optimize.py +0 -0
  123. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/models/__init__.py +0 -0
  124. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/models/config_models.py +0 -0
  125. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/__init__.py +0 -0
  126. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/baseline_tests.py +0 -0
  127. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/checkpoint.py +0 -0
  128. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/convergence.py +0 -0
  129. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/diagnosis.py +0 -0
  130. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/engine.py +0 -0
  131. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/environment.py +0 -0
  132. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/experience.py +0 -0
  133. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/harness_prompts.py +0 -0
  134. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/history.py +0 -0
  135. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/optimization_logger.py +0 -0
  136. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/pre_validation.py +0 -0
  137. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/reward.py +0 -0
  138. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/strategy_bandit.py +0 -0
  139. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/strategy_generator.py +0 -0
  140. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/strategy_prompts.py +0 -0
  141. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/skills/__init__.py +0 -0
  142. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/__init__.py +0 -0
  143. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/agent_manager.py +0 -0
  145. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/chat_events.py +0 -0
  146. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/deep_agent.py +0 -0
  147. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/mcp/__init__.py +0 -0
  148. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/mcp/models.py +0 -0
  149. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  150. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/multi_agent_team.py +0 -0
  151. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/__init__.py +0 -0
  152. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  153. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/session.py +0 -0
  154. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/summarization_utils.py +0 -0
  155. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/auth/__init__.py +0 -0
  156. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/auth/ldap_service.py +0 -0
  157. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  158. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/Config.py +0 -0
  159. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/DatabaseConfig.py +0 -0
  160. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  161. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/EmbeddingConfig.py +0 -0
  162. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/LLMConfig.py +0 -0
  163. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/LangfuseConfig.py +0 -0
  164. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/MQConfig.py +0 -0
  165. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/PgConfig.py +0 -0
  166. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/RedisConfig.py +0 -0
  167. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/RerankerConfig.py +0 -0
  168. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/SentryConfig.py +0 -0
  169. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/XxlJobConfig.py +0 -0
  170. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/__init__.py +0 -0
  171. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/async_base_db_service.py +0 -0
  172. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/async_database_service.py +0 -0
  173. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/base_db_service.py +0 -0
  174. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/database_service.py +0 -0
  175. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/elasticsearch_service.py +0 -0
  176. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  177. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/redis_service.py +0 -0
  178. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/token_usage_db_service.py +0 -0
  179. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/__init__.py +0 -0
  180. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/health_check.py +0 -0
  181. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/metrics.py +0 -0
  182. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/ping.py +0 -0
  183. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/__init__.py +0 -0
  184. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  185. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  186. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  187. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/__init__.py +0 -0
  188. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/embedding.py +0 -0
  189. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/get_llm.py +0 -0
  190. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/llm_logger.py +0 -0
  191. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/llm_tokens.py +0 -0
  192. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  193. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  194. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  195. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/struct_token.py +0 -0
  196. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/sy_langfuse.py +0 -0
  197. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/token_usage_es_service.py +0 -0
  198. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  199. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/usage_token.py +0 -0
  200. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/__init__.py +0 -0
  201. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/async_sql_logger.py +0 -0
  202. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/kafka_log.py +0 -0
  203. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/logger_levels.py +0 -0
  204. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/logger_wrapper.py +0 -0
  205. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/process_logger.py +0 -0
  206. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/sql_logger.py +0 -0
  207. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/__init__.py +0 -0
  208. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/background_execution.py +0 -0
  209. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/context.py +0 -0
  210. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/cors.py +0 -0
  211. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/docs.py +0 -0
  212. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/exception.py +0 -0
  213. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/middleware.py +0 -0
  214. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/monitor_memory.py +0 -0
  215. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/mq.py +0 -0
  216. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/timeout.py +0 -0
  217. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/token_tracking.py +0 -0
  218. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/traceid.py +0 -0
  219. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/__init__.py +0 -0
  220. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/base_http.py +0 -0
  221. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/log.py +0 -0
  222. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/mqlistener_config.py +0 -0
  223. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/mqmsg_model.py +0 -0
  224. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/mqsend_config.py +0 -0
  225. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/sso_user.py +0 -0
  226. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/token_usage.py +0 -0
  227. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/token_usage_mysql.py +0 -0
  228. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/xxljob_handler_config.py +0 -0
  229. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/notice/__init__.py +0 -0
  230. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  231. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/notice/wecom_message.py +0 -0
  232. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  233. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  234. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  235. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  236. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  237. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  238. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  239. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  240. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  241. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sentry/__init__.py +0 -0
  242. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sentry/sy_sentry.py +0 -0
  243. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/services.py +0 -0
  244. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sse/__init__.py +0 -0
  245. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sse/event.py +0 -0
  246. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sse/sse.py +0 -0
  247. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/__init__.py +0 -0
  248. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/example.py +0 -0
  249. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/example2.py +0 -0
  250. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_client_base.py +0 -0
  251. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  252. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  253. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_service.py +0 -0
  254. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  255. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  256. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/param.py +0 -0
  257. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/deep_agent_server.py +0 -0
  258. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_deep_agent.py +0 -0
  259. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_email.py +0 -0
  260. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_mq.py +0 -0
  261. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_real_summarization.py +0 -0
  262. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_summarization_config.py +0 -0
  263. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_summarization_real.py +0 -0
  264. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/__init__.py +0 -0
  265. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/async_utils.py +0 -0
  266. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/docs.py +0 -0
  267. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/env.py +0 -0
  268. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/merge_headers.py +0 -0
  269. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/snowflake.py +0 -0
  270. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/syemail.py +0 -0
  271. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/timing.py +0 -0
  272. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/xxljob/__init__.py +0 -0
  273. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/xxljob/xxljob_service.py +0 -0
  274. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  275. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  276. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  277. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  278. {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/tests/test_sycli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.4a6
3
+ Version: 0.2.5a0
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -8,8 +8,8 @@ Requires-Dist: aio-pika>=9.6.2
8
8
  Requires-Dist: aiohttp>=3.13.5
9
9
  Requires-Dist: aiomysql>=0.3.2
10
10
  Requires-Dist: anyio>=4.12.1
11
- Requires-Dist: decorator>=5.3.0
12
- Requires-Dist: deepagents>=0.6.1
11
+ Requires-Dist: decorator>=5.3.1
12
+ Requires-Dist: deepagents>=0.6.3
13
13
  Requires-Dist: elasticsearch>=9.4.0
14
14
  Requires-Dist: fastapi>=0.136.1
15
15
  Requires-Dist: jinja2>=3.1.6
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.4a6"
3
+ version = "0.2.5a0"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -9,8 +9,8 @@ dependencies = [
9
9
  "aiohttp>=3.13.5",
10
10
  "aiomysql>=0.3.2",
11
11
  "anyio>=4.12.1",
12
- "decorator>=5.3.0",
13
- "deepagents>=0.6.1",
12
+ "decorator>=5.3.1",
13
+ "deepagents>=0.6.3",
14
14
  "elasticsearch>=9.4.0",
15
15
  "fastapi>=0.136.1",
16
16
  "jinja2>=3.1.6",
@@ -289,15 +289,26 @@ class FileOperationsMixin:
289
289
  self: "HTTPSandboxBackend",
290
290
  file_path: str,
291
291
  content: str,
292
+ *,
293
+ overwrite: bool = True, # 默认允许覆盖,兼容 deepagents offload 场景
292
294
  ) -> WriteResult:
293
- """写入文件"""
295
+ """写入文件
296
+
297
+ Args:
298
+ file_path: 文件路径。
299
+ content: 文件内容。
300
+ overwrite: 是否允许覆盖已有文件,默认 True(兼容 deepagents 0.6.3
301
+ SummarizationMiddleware offload 场景,如 /large_tool_results/ 和
302
+ /conversation_history/ 路径)。设为 False 时,文件已存在返回错误。
303
+ """
294
304
  try:
295
305
  self._ensure_synced_sync()
296
306
  SYLogger.info(f"[Sandbox] 写入文件: {file_path} ({len(content)} 字符)")
297
307
  result = self._post_sync(f"{SANDBOX_API_PREFIX}/write", {
298
308
  "file_path": file_path,
299
309
  "content": base64.b64encode(content.encode()).decode(),
300
- "user_id": self.user_id
310
+ "user_id": self.user_id,
311
+ "overwrite": overwrite,
301
312
  })
302
313
  write_result = WriteResult(
303
314
  error=result.get("error"),
@@ -317,16 +328,25 @@ class FileOperationsMixin:
317
328
  file_path: str,
318
329
  content: str,
319
330
  *,
331
+ overwrite: bool = True, # 默认允许覆盖,兼容 deepagents offload 场景
320
332
  timeout: int = None,
321
333
  ) -> WriteResult:
322
- """异步写入文件"""
334
+ """异步写入文件
335
+
336
+ Args:
337
+ file_path: 文件路径。
338
+ content: 文件内容。
339
+ overwrite: 是否允许覆盖已有文件,默认 True。
340
+ timeout: 请求超时时间。
341
+ """
323
342
  try:
324
343
  await self._ensure_synced_async()
325
344
  SYLogger.info(f"[Sandbox] 异步写入文件: {file_path} ({len(content)} 字符)")
326
345
  result = await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/write", {
327
346
  "file_path": file_path,
328
347
  "content": base64.b64encode(content.encode()).decode(),
329
- "user_id": self.user_id
348
+ "user_id": self.user_id,
349
+ "overwrite": overwrite,
330
350
  }, timeout=timeout)
331
351
  write_result = WriteResult(
332
352
  error=result.get("error"),
@@ -37,6 +37,11 @@ except ImportError:
37
37
  _SSL_CONTEXT = ssl.create_default_context()
38
38
 
39
39
 
40
+ def _read_file_safe(path: str) -> bytes:
41
+ with open(path, "rb") as f:
42
+ return f.read()
43
+
44
+
40
45
  class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
41
46
  """
42
47
  通过 HTTP API 连接远程沙箱容器
@@ -210,6 +215,24 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
210
215
  nacos_group=group,
211
216
  )
212
217
 
218
+ @classmethod
219
+ async def afrom_nacos(
220
+ cls,
221
+ service_name: str,
222
+ user_id: str,
223
+ group: str = "DEFAULT_GROUP",
224
+ version: str = None,
225
+ timeout: int = 180,
226
+ sync_dirs: List[tuple[str, str]] = None,
227
+ auto_sync: bool = False,
228
+ load_balance: bool = True,
229
+ ) -> "HTTPSandboxBackend":
230
+ """异步从 Nacos 服务发现创建后端实例"""
231
+ return await asyncio.to_thread(
232
+ cls.from_nacos,
233
+ service_name, user_id, group, version, timeout, sync_dirs, auto_sync, load_balance,
234
+ )
235
+
213
236
  # ============== 内部方法 - 同步版本 ==============
214
237
 
215
238
  def _refresh_from_nacos_and_switch_sync(self) -> bool:
@@ -565,7 +588,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
565
588
  else:
566
589
  # 单文件
567
590
  SYLogger.info(f"[Sandbox] 上传单文件: {local_path}")
568
- content = await asyncio.to_thread(lambda: open(local_dir, "rb").read())
591
+ content = await asyncio.to_thread(lambda p: _read_file_safe(p), local_dir)
569
592
  upload_results = await self.aupload_files([(remote_path, content)], timeout=timeout)
570
593
  if upload_results[0].error:
571
594
  results[local_path] = {"success": 0, "failed": 1, "errors": [{"path": remote_path, "error": upload_results[0].error}]}
@@ -669,7 +692,8 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
669
692
  def _read_batch():
670
693
  items = []
671
694
  for sandbox_path, local_file in batch_files:
672
- content = open(local_file, "rb").read()
695
+ with open(local_file, "rb") as f:
696
+ content = f.read()
673
697
  items.append((sandbox_path, content))
674
698
  return items
675
699
  batch_items = await asyncio.to_thread(_read_batch)
@@ -1037,7 +1061,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
1037
1061
  SYLogger.info(f"[Sandbox] 异步目录上传完成: {local_path}, 成功={result['success']}, 失败={result['failed']}")
1038
1062
  else:
1039
1063
  SYLogger.info(f"[Sandbox] 异步上传单文件: {local_path}")
1040
- content = await asyncio.to_thread(lambda: open(local_dir, "rb").read())
1064
+ content = await asyncio.to_thread(lambda p: _read_file_safe(p), local_dir)
1041
1065
  upload_results = await self.aupload_files([(remote_path, content)], timeout=timeout)
1042
1066
  if upload_results[0].error:
1043
1067
  results[local_path] = {"success": 0, "failed": 1, "errors": [{"path": remote_path, "error": upload_results[0].error}]}
@@ -162,7 +162,7 @@ class MinioSyncService(metaclass=SingletonMeta):
162
162
  return None
163
163
 
164
164
  def get_presigned_url(self, object_key: str, expires_days: int = 7) -> Optional[str]:
165
- """生成预签名下载 URL"""
165
+ """生成预签名下载 URL(同步)"""
166
166
  if not self._client:
167
167
  return None
168
168
  try:
@@ -177,8 +177,12 @@ class MinioSyncService(metaclass=SingletonMeta):
177
177
  f"[MinIO] Presigned URL failed: {object_key}, error={e}")
178
178
  return None
179
179
 
180
+ async def aget_presigned_url(self, object_key: str, expires_days: int = 7) -> Optional[str]:
181
+ """异步生成预签名下载 URL"""
182
+ return await asyncio.to_thread(self.get_presigned_url, object_key, expires_days)
183
+
180
184
  def remove_object(self, object_key: str) -> bool:
181
- """从 MinIO 删除文件"""
185
+ """从 MinIO 删除文件(同步)"""
182
186
  if not self._client:
183
187
  return False
184
188
  try:
@@ -189,12 +193,12 @@ class MinioSyncService(metaclass=SingletonMeta):
189
193
  SYLogger.warning(f"[MinIO] Delete failed: {object_key}, error={e}")
190
194
  return False
191
195
 
192
- def remove_prefix(self, prefix: str) -> int:
193
- """删除 MinIO 中指定前缀下的所有对象(用于目录删除)
196
+ async def aremove_object(self, object_key: str) -> bool:
197
+ """异步从 MinIO 删除文件"""
198
+ return await asyncio.to_thread(self.remove_object, object_key)
194
199
 
195
- Returns:
196
- 删除的对象数量
197
- """
200
+ def remove_prefix(self, prefix: str) -> int:
201
+ """删除 MinIO 中指定前缀下的所有对象(同步,用于目录删除)"""
198
202
  if not self._client:
199
203
  return 0
200
204
  try:
@@ -210,6 +214,10 @@ class MinioSyncService(metaclass=SingletonMeta):
210
214
  SYLogger.warning(f"[MinIO] Delete prefix failed: {prefix}, error={e}")
211
215
  return 0
212
216
 
217
+ async def aremove_prefix(self, prefix: str) -> int:
218
+ """异步删除 MinIO 中指定前缀下的所有对象"""
219
+ return await asyncio.to_thread(self.remove_prefix, prefix)
220
+
213
221
  # ============== 查找最近副本 ==============
214
222
 
215
223
  def find_latest_object_key(self, user_id: str, file_path: str) -> Optional[str]:
@@ -252,7 +260,7 @@ class MinioSyncService(metaclass=SingletonMeta):
252
260
  SYLogger.warning(f"[MinIO] find_latest failed: {e}")
253
261
  return None
254
262
 
255
- async def afinf_latest_object_key(self, user_id: str, file_path: str) -> Optional[str]:
263
+ async def afind_latest_object_key(self, user_id: str, file_path: str) -> Optional[str]:
256
264
  """异步查找某个文件最近一天的 object key"""
257
265
  return await asyncio.to_thread(self.find_latest_object_key, user_id, file_path)
258
266
 
@@ -473,12 +481,17 @@ class MinioSyncService(metaclass=SingletonMeta):
473
481
  files_to_upload = []
474
482
  for rel_path in batch:
475
483
  try:
476
- response = await asyncio.to_thread(
477
- self._client.get_object, self._bucket, f"{prefix}{rel_path}"
484
+ def _download_object(bucket, key):
485
+ resp = self._client.get_object(bucket, key)
486
+ try:
487
+ return resp.read()
488
+ finally:
489
+ resp.close()
490
+ resp.release_conn()
491
+
492
+ content = await asyncio.to_thread(
493
+ _download_object, self._bucket, f"{prefix}{rel_path}"
478
494
  )
479
- content = response.read()
480
- response.close()
481
- response.release_conn()
482
495
  files_to_upload.append((f"/{rel_path}", content))
483
496
  except Exception as e:
484
497
  SYLogger.warning(f"[MinIO] 下载文件失败: {rel_path}, error={e}")
@@ -123,7 +123,7 @@ class SandboxRecoveryManager:
123
123
  bool: 切换成功返回 True,否则返回 False
124
124
  """
125
125
  # 优先使用底层已有的切换逻辑(会尝试迁移工作空间文件)
126
- switched = await self.backend._refresh_from_nacos_and_switch()
126
+ switched = await asyncio.to_thread(self.backend._refresh_from_nacos_and_switch_sync)
127
127
 
128
128
  if switched:
129
129
  self._consecutive_failures = 0
@@ -149,7 +149,8 @@ class SandboxRecoveryManager:
149
149
  SYLogger.error("[Sandbox] NacosService 未初始化")
150
150
  return False
151
151
 
152
- instances = nacos_manager.get_service_instances(
152
+ instances = await asyncio.to_thread(
153
+ nacos_manager.get_service_instances,
153
154
  self.backend._nacos_service_name,
154
155
  group=self.backend._nacos_group
155
156
  )