sycommon-python-lib 0.2.5a12__tar.gz → 0.2.5a14__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 (291) hide show
  1. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/deep_agent.py +2 -11
  4. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/multi_agent_team.py +2 -45
  5. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/http_sandbox_backend.py +92 -166
  6. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/sandbox.py +17 -516
  7. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/sandbox.py +3 -0
  8. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/snowflake.py +32 -76
  9. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  10. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -1
  11. sycommon_python_lib-0.2.5a12/src/sycommon/middleware/background_execution.py +0 -568
  12. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/README.md +0 -0
  13. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/setup.cfg +0 -0
  14. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/__init__.py +0 -0
  15. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/cli.py +0 -0
  16. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/core/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/core/console.py +0 -0
  18. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/core/models.py +0 -0
  19. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/core/project.py +0 -0
  20. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/core/utils.py +0 -0
  21. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/__init__.py +0 -0
  22. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/README.md.tpl +0 -0
  23. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/__init__.py +0 -0
  24. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/api/query.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/app.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/db/service.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/model/parse.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  44. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/.env.tpl +0 -0
  45. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/.gitignore.tpl +0 -0
  46. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/Dockerfile.tpl +0 -0
  47. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/README.md.tpl +0 -0
  48. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/__init__.py +0 -0
  49. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/app.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/app.yaml.tpl +0 -0
  51. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/client/__init__.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/model/__init__.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/model/file_info.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/base/requirements.txt.tpl +0 -0
  56. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/README.md.tpl +0 -0
  57. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/__init__.py +0 -0
  58. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/app.py.tpl +0 -0
  59. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  60. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  61. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  62. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/README.md.tpl +0 -0
  64. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/__init__.py +0 -0
  65. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/api/__init__.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/api/echo.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/app.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/client/__init__.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/model/__init__.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/command/templates/web/tools/mq.py.tpl +0 -0
  74. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/nexus/__init__.py +0 -0
  75. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/__init__.py +0 -0
  76. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/__main__.py +0 -0
  77. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/agents/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/agents/factory.py +0 -0
  79. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/agents/prompts.py +0 -0
  80. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/__init__.py +0 -0
  81. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/browser.py +0 -0
  82. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/__init__.py +0 -0
  83. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/console.py +0 -0
  84. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/dom.py +0 -0
  85. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/network.py +0 -0
  86. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  87. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/performance.py +0 -0
  88. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  89. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/client.py +0 -0
  90. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/protocol.py +0 -0
  91. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cdp/repl.py +0 -0
  92. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/cli.py +0 -0
  93. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/__init__.py +0 -0
  94. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/cdp_cmd.py +0 -0
  95. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/chat_cmd.py +0 -0
  96. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/create_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/evaluate_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/init_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/memory_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/resume_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/rollback_cmd.py +0 -0
  102. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/commands/run_cmd.py +0 -0
  103. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/__init__.py +0 -0
  104. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/backend.py +0 -0
  105. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/config.py +0 -0
  106. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/display.py +0 -0
  107. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/git_integration.py +0 -0
  108. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/llm.py +0 -0
  109. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/core/state.py +0 -0
  110. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/evaluate/__init__.py +0 -0
  111. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/evaluate/api_evaluator.py +0 -0
  112. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/memory/__init__.py +0 -0
  113. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/memory/compressor.py +0 -0
  114. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/memory/full.py +0 -0
  115. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/memory/hot.py +0 -0
  116. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/memory/manager.py +0 -0
  117. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/memory/warm.py +0 -0
  118. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/mode/__init__.py +0 -0
  119. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/mode/create.py +0 -0
  120. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/mode/optimize.py +0 -0
  121. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/models/__init__.py +0 -0
  122. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/models/config_models.py +0 -0
  123. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/__init__.py +0 -0
  124. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/baseline_tests.py +0 -0
  125. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/checkpoint.py +0 -0
  126. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/convergence.py +0 -0
  127. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/diagnosis.py +0 -0
  128. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/engine.py +0 -0
  129. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/environment.py +0 -0
  130. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/experience.py +0 -0
  131. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/harness_prompts.py +0 -0
  132. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/history.py +0 -0
  133. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/optimization_logger.py +0 -0
  134. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/pre_validation.py +0 -0
  135. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/reward.py +0 -0
  136. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/strategy_bandit.py +0 -0
  137. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/strategy_generator.py +0 -0
  138. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/rl/strategy_prompts.py +0 -0
  139. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycli/skills/__init__.py +0 -0
  140. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/__init__.py +0 -0
  141. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/__init__.py +0 -0
  142. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/agent_manager.py +0 -0
  143. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/chat_events.py +0 -0
  144. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/mcp/__init__.py +0 -0
  145. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/mcp/models.py +0 -0
  146. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  147. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/__init__.py +0 -0
  148. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  149. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  150. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  151. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  152. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/sandbox/session.py +0 -0
  153. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/agent/summarization_utils.py +0 -0
  154. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/auth/__init__.py +0 -0
  155. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/auth/ldap_service.py +0 -0
  156. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/auth/oa_cache.py +0 -0
  157. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/auth/oa_crypto.py +0 -0
  158. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/auth/oa_service.py +0 -0
  159. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  160. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/Config.py +0 -0
  161. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/DatabaseConfig.py +0 -0
  162. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  163. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/EmbeddingConfig.py +0 -0
  164. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/LLMConfig.py +0 -0
  165. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/LangfuseConfig.py +0 -0
  166. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/MQConfig.py +0 -0
  167. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/PgConfig.py +0 -0
  168. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/RedisConfig.py +0 -0
  169. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/RerankerConfig.py +0 -0
  170. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/SentryConfig.py +0 -0
  171. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/XxlJobConfig.py +0 -0
  172. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/config/__init__.py +0 -0
  173. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/async_base_db_service.py +0 -0
  174. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/async_database_service.py +0 -0
  175. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/base_db_service.py +0 -0
  176. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/database_service.py +0 -0
  177. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/elasticsearch_service.py +0 -0
  178. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  179. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/redis_service.py +0 -0
  180. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/database/token_usage_db_service.py +0 -0
  181. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/health/__init__.py +0 -0
  182. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/health/health_check.py +0 -0
  183. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/health/metrics.py +0 -0
  184. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/health/ping.py +0 -0
  185. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/heartbeat_process/__init__.py +0 -0
  186. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  187. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  188. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  189. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/__init__.py +0 -0
  190. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/embedding.py +0 -0
  191. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/get_llm.py +0 -0
  192. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/llm_logger.py +0 -0
  193. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/llm_tokens.py +0 -0
  194. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  195. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  196. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  197. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/struct_token.py +0 -0
  198. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/sy_langfuse.py +0 -0
  199. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  200. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  201. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/token_usage_es_service.py +0 -0
  202. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  203. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/llm/usage_token.py +0 -0
  204. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/__init__.py +0 -0
  205. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/async_sql_logger.py +0 -0
  206. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/kafka_log.py +0 -0
  207. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/logger_levels.py +0 -0
  208. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/logger_wrapper.py +0 -0
  209. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/process_logger.py +0 -0
  210. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/logging/sql_logger.py +0 -0
  211. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/mcp_server/__init__.py +0 -0
  212. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/mcp_server/server.py +0 -0
  213. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/__init__.py +0 -0
  214. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/context.py +0 -0
  215. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/cors.py +0 -0
  216. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/docs.py +0 -0
  217. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/exception.py +0 -0
  218. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/middleware.py +0 -0
  219. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/monitor_memory.py +0 -0
  220. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/mq.py +0 -0
  221. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/timeout.py +0 -0
  222. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/token_tracking.py +0 -0
  223. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  224. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/middleware/traceid.py +0 -0
  225. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/__init__.py +0 -0
  226. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/base_http.py +0 -0
  227. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/log.py +0 -0
  228. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/mcp_server_config.py +0 -0
  229. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/mqlistener_config.py +0 -0
  230. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/mqmsg_model.py +0 -0
  231. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/mqsend_config.py +0 -0
  232. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/sso_user.py +0 -0
  233. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/token_usage.py +0 -0
  234. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/token_usage_mysql.py +0 -0
  235. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/models/xxljob_handler_config.py +0 -0
  236. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/notice/__init__.py +0 -0
  237. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  238. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/notice/wecom_message.py +0 -0
  239. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  240. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  241. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  242. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  243. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  244. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  245. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  246. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  247. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  248. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/sentry/__init__.py +0 -0
  249. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/sentry/sy_sentry.py +0 -0
  250. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/services.py +0 -0
  251. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/sse/__init__.py +0 -0
  252. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/sse/event.py +0 -0
  253. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/sse/sse.py +0 -0
  254. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/__init__.py +0 -0
  255. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/example.py +0 -0
  256. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/example2.py +0 -0
  257. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/feign.py +0 -0
  258. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/feign_client.py +0 -0
  259. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/nacos_client_base.py +0 -0
  260. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  261. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  262. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/nacos_service.py +0 -0
  263. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  264. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  265. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/synacos/param.py +0 -0
  266. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/deep_agent_server.py +0 -0
  267. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  268. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_deep_agent.py +0 -0
  269. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_email.py +0 -0
  270. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_encoding_cache.py +0 -0
  271. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_mcp_server.py +0 -0
  272. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  273. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_mq.py +0 -0
  274. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_oa_login.py +0 -0
  275. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_real_summarization.py +0 -0
  276. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_summarization_config.py +0 -0
  277. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tests/test_summarization_real.py +0 -0
  278. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/__init__.py +0 -0
  279. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/async_utils.py +0 -0
  280. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/docs.py +0 -0
  281. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/env.py +0 -0
  282. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/merge_headers.py +0 -0
  283. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/syemail.py +0 -0
  284. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/tools/timing.py +0 -0
  285. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/xxljob/__init__.py +0 -0
  286. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon/xxljob/xxljob_service.py +0 -0
  287. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  288. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  289. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  290. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  291. {sycommon_python_lib-0.2.5a12 → sycommon_python_lib-0.2.5a14}/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.5a12
3
+ Version: 0.2.5a14
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.5a12"
3
+ version = "0.2.5a14"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -49,7 +49,6 @@ from sycommon.llm.get_llm import get_llm
49
49
  from sycommon.agent.sandbox.http_sandbox_backend import HTTPSandboxBackend
50
50
  from sycommon.agent.sandbox.sandbox_recovery import SandboxRecoveryManager
51
51
  from sycommon.agent.chat_events import ChatEvent, ChatEventBuilder, DEFAULT_AGENT_NAME
52
- from sycommon.middleware.background_execution import BackgroundExecutionMiddleware
53
52
  from sycommon.middleware.token_tracking import TokenTrackingMiddleware
54
53
  from sycommon.middleware.tool_result_truncation import ToolResultTruncationMiddleware
55
54
  from deepagents.middleware.summarization import create_summarization_tool_middleware # noqa: F401 保留 re-export
@@ -118,9 +117,6 @@ class AgentConfig(BaseModel):
118
117
  # 调试模式
119
118
  debug: bool = False
120
119
 
121
- # 后台执行超时(秒)
122
- background_timeout: int = 600
123
-
124
120
  class Config:
125
121
  arbitrary_types_allowed = True
126
122
 
@@ -143,12 +139,8 @@ class DeepAgent:
143
139
  self.recovery_manager = recovery_manager
144
140
 
145
141
  async def cleanup(self):
146
- """清理资源:终止该用户的所有后台进程"""
147
- if self.sandbox_backend:
148
- try:
149
- await self.sandbox_backend.akill_all_processes()
150
- except Exception as e:
151
- SYLogger.warning(f"[DeepAgent] 清理后台进程失败: {e}")
142
+ """清理资源"""
143
+ pass
152
144
 
153
145
  async def chat(
154
146
  self,
@@ -653,7 +645,6 @@ async def create_deep_agent(
653
645
  "system_prompt": config.system_prompt,
654
646
  "debug": config.debug,
655
647
  "middleware": [
656
- BackgroundExecutionMiddleware(backend=sandbox_backend),
657
648
  ToolResultTruncationMiddleware(),
658
649
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
659
650
  summarization_mw,
@@ -42,7 +42,6 @@ from sycommon.agent.sandbox.http_sandbox_backend import HTTPSandboxBackend
42
42
  from sycommon.tools.env import get_env_var
43
43
  from sycommon.agent.sandbox.sandbox_recovery import SandboxRecoveryManager
44
44
  from sycommon.agent.chat_events import ChatEvent, ChatEventBuilder, DEFAULT_AGENT_NAME
45
- from sycommon.middleware.background_execution import BackgroundExecutionMiddleware
46
45
  from sycommon.middleware.token_tracking import TokenTrackingMiddleware
47
46
  from sycommon.middleware.tool_result_truncation import ToolResultTruncationMiddleware
48
47
  from deepagents.middleware.summarization import create_summarization_tool_middleware # noqa: F401 保留 re-export
@@ -109,42 +108,6 @@ class TeamMember(BaseModel):
109
108
  - 认真完成分配给你的任务
110
109
  - 与团队成员保持良好协作
111
110
  - 用中文回答问题
112
-
113
- ## 重要约束 - 沙箱执行环境
114
-
115
- ### 后台执行工具
116
-
117
- 沙箱提供了专门的后台执行工具,用于管理长时间运行的服务:
118
-
119
- - **execute_background(command, timeout=600)**: 在后台启动命令(不阻塞),返回 process_id
120
- - **check_process(process_id)**: 检查后台进程的状态
121
- - **kill_process(process_id)**: 终止后台进程
122
-
123
- ### 启动和测试服务的正确方式
124
-
125
- 当需要启动长时间运行的服务(如 FastAPI、数据库)时:
126
-
127
- ```python
128
- # 1. 后台启动服务
129
- result = execute_background(command="uvicorn main:app --host 0.0.0.0 --port 8000")
130
- process_id = result["process_id"]
131
-
132
- # 2. 等待服务启动
133
- execute(command="sleep 3")
134
-
135
- # 3. 测试服务
136
- execute(command="curl http://localhost:8000/health")
137
-
138
- # 4. 完成后终止服务(重要!)
139
- kill_process(process_id=process_id)
140
- ```
141
-
142
- ### 关键规则
143
-
144
- 1. **启动服务必须使用 execute_background** - 使用 execute 启动服务会超时
145
- 2. **记住 process_id** - 每次启动服务都会返回新的 process_id,需要保存用于后续操作
146
- 3. **测试完成后必须 kill_process** - 避免资源浪费
147
- 4. **使用 check_process 检查状态** - 可以查看服务是否还在运行
148
111
  """
149
112
 
150
113
  class Config:
@@ -228,12 +191,8 @@ class MultiAgentTeam:
228
191
  self.recovery_manager = recovery_manager
229
192
 
230
193
  async def cleanup(self):
231
- """清理资源:终止该用户的所有后台进程"""
232
- if self.sandbox_backend:
233
- try:
234
- await self.sandbox_backend.akill_all_processes()
235
- except Exception as e:
236
- SYLogger.warning(f"[MultiAgentTeam] 清理后台进程失败: {e}")
194
+ """清理资源"""
195
+ pass
237
196
 
238
197
  async def chat(
239
198
  self,
@@ -590,7 +549,6 @@ async def create_multi_agent_team(
590
549
 
591
550
  summarization_mw = build_summarization_middleware(model, config.model_name, sandbox_backend)
592
551
  middleware = [
593
- BackgroundExecutionMiddleware(backend=sandbox_backend),
594
552
  ToolResultTruncationMiddleware(),
595
553
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
596
554
  summarization_mw,
@@ -647,7 +605,6 @@ async def create_multi_agent_team(
647
605
  debug=config.debug,
648
606
  name=coord_name,
649
607
  middleware=[
650
- BackgroundExecutionMiddleware(backend=sandbox_backend),
651
608
  ToolResultTruncationMiddleware(),
652
609
  TokenTrackingMiddleware(model_name=config.model_name, user_id=user_id),
653
610
  coord_summarization_mw,
@@ -90,6 +90,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
90
90
  auto_sync: bool = False,
91
91
  nacos_service_name: str = None,
92
92
  nacos_group: str = "DEFAULT_GROUP",
93
+ token: str = None,
93
94
  ):
94
95
  """
95
96
  初始化 HTTP 沙箱后端
@@ -112,13 +113,17 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
112
113
  self._workspace_verified = False
113
114
  self._local_mode: Optional[bool] = None
114
115
 
115
- # Token authentication
116
- self._token = os.environ.get("SANDBOX_TOKEN", "")
116
+ # Token authentication: instance-level > env var
117
+ self._token = token if token is not None else os.environ.get("SANDBOX_TOKEN", "")
117
118
 
118
119
  # Nacos 配置(用于故障转移)
119
120
  self._nacos_service_name = nacos_service_name
120
121
  self._nacos_group = nacos_group
121
122
 
123
+ # 共享异步 HTTP 会话(连接池复用,惰性初始化)
124
+ self._async_session: Optional[aiohttp.ClientSession] = None
125
+ self._session_loop_id: Optional[int] = None # track which loop created the session
126
+
122
127
  # 生成 ID
123
128
  self._id = self._base_url.replace(
124
129
  "http://", ""
@@ -130,6 +135,55 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
130
135
  "/", "-"
131
136
  )
132
137
 
138
+ async def _get_async_session(self) -> aiohttp.ClientSession:
139
+ """获取或创建共享的 aiohttp ClientSession(连接池复用)
140
+
141
+ Handles the case where the backend was created in a different thread
142
+ (e.g. via asyncio.to_thread) by detecting loop mismatch and resetting.
143
+ """
144
+ try:
145
+ current_loop = asyncio.get_running_loop()
146
+ except RuntimeError:
147
+ current_loop = None
148
+
149
+ # If session was created on a different event loop, discard it
150
+ if self._async_session is not None and self._session_loop_id != id(current_loop):
151
+ try:
152
+ self._async_session.close()
153
+ except Exception:
154
+ pass
155
+ self._async_session = None
156
+
157
+ if self._async_session is None or self._async_session.closed:
158
+ connector = aiohttp.TCPConnector(
159
+ ssl=_SSL_CONTEXT,
160
+ limit=10,
161
+ limit_per_host=10,
162
+ keepalive_timeout=30,
163
+ enable_cleanup_closed=True,
164
+ )
165
+ self._async_session = aiohttp.ClientSession(connector=connector)
166
+ self._session_loop_id = id(current_loop)
167
+ return self._async_session
168
+
169
+ async def acleanup(self):
170
+ """关闭共享的异步 HTTP 会话,释放连接池资源"""
171
+ if self._async_session and not self._async_session.closed:
172
+ await self._async_session.close()
173
+ self._async_session = None
174
+
175
+ def cleanup(self):
176
+ """同步方式关闭共享会话(供非 async 上下文使用)"""
177
+ if self._async_session and not self._async_session.closed:
178
+ try:
179
+ loop = asyncio.get_running_loop()
180
+ loop.create_task(self._async_session.close())
181
+ except RuntimeError:
182
+ loop = asyncio.new_event_loop()
183
+ loop.run_until_complete(self._async_session.close())
184
+ loop.close()
185
+ self._async_session = None
186
+
133
187
  @classmethod
134
188
  def from_nacos(
135
189
  cls,
@@ -360,10 +414,11 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
360
414
  SYLogger.warning(f"[Sandbox] 请求失败 (尝试 {attempt + 1}/{max_retries}): {self._base_url} - {e}")
361
415
 
362
416
  if attempt < max_retries - 1:
417
+ backoff = 2 ** attempt
363
418
  switched = self._refresh_from_nacos_and_switch_sync()
364
419
  if not switched:
365
420
  import time
366
- time.sleep(1)
421
+ time.sleep(backoff)
367
422
  else:
368
423
  raise RuntimeError(f"沙箱服务不可用: {e}")
369
424
 
@@ -376,38 +431,32 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
376
431
  # ============== 内部方法 - 异步版本 ==============
377
432
 
378
433
  async def _post_async(self, endpoint: str, data: dict, timeout: int = None) -> dict:
379
- """异步 POST 请求(每次创建独立 session,避免跨 Task 共享导致超时上下文错误)"""
434
+ """异步 POST 请求(使用共享连接池)"""
380
435
  actual_timeout = timeout if timeout is not None else self._timeout
381
436
  if "/execute" in endpoint:
382
437
  http_timeout = actual_timeout + 60
383
438
  else:
384
439
  http_timeout = actual_timeout + 30
385
440
 
386
- trace_id = SYLogger.get_trace_id()
387
- headers = {"Content-Type": "application/json"}
388
- if trace_id:
389
- headers["x-traceid-header"] = str(trace_id)
390
- if self._token:
391
- headers["X-Sandbox-Token"] = self._token
441
+ headers = self._build_headers()
392
442
 
393
443
  url = f"{self._base_url}{endpoint}"
394
444
  SYLogger.info(f"[Sandbox] Async POST 请求开始: {url}, timeout={http_timeout}s")
395
445
 
396
446
  timeout_obj = aiohttp.ClientTimeout(total=http_timeout)
397
- connector = aiohttp.TCPConnector(ssl=_SSL_CONTEXT)
398
- async with aiohttp.ClientSession(connector=connector) as session:
399
- async with session.post(url, json=data, headers=headers, timeout=timeout_obj) as resp:
400
- SYLogger.info(f"[Sandbox] Async POST 响应状态码: {resp.status}")
401
- if resp.status >= 400:
402
- text = await resp.text()
403
- SYLogger.error(f"[Sandbox] HTTP 错误 {resp.status}: {text}")
404
- resp.raise_for_status()
405
- result = await resp.json()
406
- SYLogger.info(f"[Sandbox] Async POST 成功: {url}")
407
- return result
447
+ session = await self._get_async_session()
448
+ async with session.post(url, json=data, headers=headers, timeout=timeout_obj) as resp:
449
+ SYLogger.info(f"[Sandbox] Async POST 响应状态码: {resp.status}")
450
+ if resp.status >= 400:
451
+ text = await resp.text()
452
+ SYLogger.error(f"[Sandbox] HTTP 错误 {resp.status}: {text}")
453
+ resp.raise_for_status()
454
+ result = await resp.json()
455
+ SYLogger.info(f"[Sandbox] Async POST 成功: {url}")
456
+ return result
408
457
 
409
458
  async def _post_async_with_failover(self, endpoint: str, data: dict, timeout: int = None) -> dict:
410
- """带故障转移的异步 POST 请求"""
459
+ """带故障转移和指数退避的异步 POST 请求"""
411
460
  max_retries = 3
412
461
 
413
462
  for attempt in range(max_retries):
@@ -417,10 +466,12 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
417
466
  SYLogger.warning(f"[Sandbox] Async 请求失败 (尝试 {attempt + 1}/{max_retries}): {self._base_url} - {e}")
418
467
 
419
468
  if attempt < max_retries - 1:
469
+ # 指数退避: 1s, 2s
470
+ backoff = 2 ** attempt
420
471
  # 尝试故障转移
421
472
  switched = await asyncio.to_thread(self._refresh_from_nacos_and_switch_sync)
422
473
  if not switched:
423
- await asyncio.sleep(1)
474
+ await asyncio.sleep(backoff)
424
475
  else:
425
476
  raise RuntimeError(f"沙箱服务不可用: {e}")
426
477
 
@@ -489,20 +540,19 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
489
540
  SYLogger.info(f"[Sandbox] 使用环境变量 SANDBOX_WORKSPACE={env_workspace}")
490
541
  return self._workspace_root
491
542
 
492
- # 从沙箱服务端 health 接口获取(aiohttp 异步)
543
+ # 从沙箱服务端 health 接口获取(使用共享连接池)
493
544
  try:
494
545
  url = f"{self._base_url}{SANDBOX_API_PREFIX}/health"
495
- connector = aiohttp.TCPConnector(ssl=_SSL_CONTEXT)
496
546
  timeout_obj = aiohttp.ClientTimeout(total=10)
497
- async with aiohttp.ClientSession(connector=connector) as session:
498
- async with session.get(url, timeout=timeout_obj) as resp:
499
- if resp.status == 200:
500
- data = await resp.json()
501
- workspace = data.get("workspace", "")
502
- if workspace:
503
- self._workspace_root = workspace
504
- SYLogger.info(f"[Sandbox] 从沙箱服务端获取 WORKSPACE_ROOT={workspace}")
505
- return self._workspace_root
547
+ session = await self._get_async_session()
548
+ async with session.get(url, timeout=timeout_obj) as resp:
549
+ if resp.status == 200:
550
+ data = await resp.json()
551
+ workspace = data.get("workspace", "")
552
+ if workspace:
553
+ self._workspace_root = workspace
554
+ SYLogger.info(f"[Sandbox] 从沙箱服务端获取 WORKSPACE_ROOT={workspace}")
555
+ return self._workspace_root
506
556
  except Exception as e:
507
557
  SYLogger.warning(f"[Sandbox] 异步获取沙箱 workspace 失败: {e}")
508
558
 
@@ -725,129 +775,6 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
725
775
  SYLogger.info(f"[Sandbox] _upload_directory_async 完成: 成功={success_count}, 失败={failed_count}")
726
776
  return {"success": success_count, "failed": failed_count, "errors": errors}
727
777
 
728
- # ============== 后台进程执行 ==============
729
-
730
- def execute_background(self, command: str, *, timeout: int = 600) -> dict:
731
- """后台执行 shell 命令(不阻塞,立即返回 process_id)"""
732
- self._ensure_synced_sync()
733
- SYLogger.info(f"[Sandbox] 后台执行: {command}")
734
- try:
735
- result = self._post_sync(f"{SANDBOX_API_PREFIX}/execute_background", {
736
- "command": command.strip(),
737
- "user_id": self._user_id,
738
- "timeout": timeout
739
- })
740
- SYLogger.info(f"[Sandbox] 后台进程已启动: process_id={result['process_id']}")
741
- return result
742
- except Exception as e:
743
- SYLogger.error(f"[Sandbox] 后台执行失败: {e}")
744
- return {"process_id": None, "status": "error", "error": str(e)}
745
-
746
- async def aexecute_stream(self, command: str, *, timeout: int = None):
747
- """异步流式执行 shell 命令,yield SSE 事件字典
748
-
749
- 每个 yield 的格式: {"type": "output"|"done"|"error", "data": ..., "exit_code": ...}
750
- """
751
- await self._ensure_synced_async()
752
- actual_timeout = timeout if timeout is not None else self._timeout
753
- url = f"{self._base_url}{SANDBOX_API_PREFIX}/execute_stream"
754
- timeout_obj = aiohttp.ClientTimeout(total=actual_timeout + 60)
755
- connector = aiohttp.TCPConnector(ssl=_SSL_CONTEXT)
756
- async with aiohttp.ClientSession(connector=connector) as session:
757
- async with session.post(url, json={
758
- "command": command.strip(),
759
- "user_id": self._user_id,
760
- "timeout": actual_timeout
761
- }, timeout=timeout_obj) as resp:
762
- resp.raise_for_status()
763
- buffer = ""
764
- async for chunk in resp.content.iter_any():
765
- buffer += chunk.decode('utf-8', errors='replace')
766
- while "\n\n" in buffer:
767
- event_str, buffer = buffer.split("\n\n", 1)
768
- for line in event_str.strip().split("\n"):
769
- if line.startswith("data: "):
770
- import json
771
- yield json.loads(line[6:])
772
-
773
- async def aexecute_background(self, command: str, *, timeout: int = None) -> dict:
774
- """异步后台执行 shell 命令(服务端负责路径隔离)"""
775
- await self._ensure_synced_async()
776
- actual_timeout = timeout if timeout is not None else 600
777
- SYLogger.info(f"[Sandbox] 异步后台执行: {command}")
778
- try:
779
- result = await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/execute_background", {
780
- "command": command.strip(),
781
- "user_id": self._user_id,
782
- "timeout": actual_timeout
783
- }, timeout=actual_timeout)
784
- SYLogger.info(f"[Sandbox] 异步后台进程已启动: process_id={result['process_id']}")
785
- return result
786
- except Exception as e:
787
- SYLogger.error(f"[Sandbox] 异步后台执行失败: {e}")
788
- return {"process_id": None, "status": "error", "error": str(e)}
789
-
790
- async def acheck_process(self, process_id: str, *, timeout: int = None) -> dict:
791
- """异步检查后台进程状态"""
792
- try:
793
- result = await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/process_status", {
794
- "process_id": process_id,
795
- "user_id": self._user_id
796
- }, timeout=timeout)
797
- return result
798
- except Exception as e:
799
- SYLogger.error(f"[Sandbox] 异步检查进程失败: {e}")
800
- return {"process_id": process_id, "status": "error", "error": str(e)}
801
-
802
- async def akill_process(self, process_id: str, *, timeout: int = None) -> dict:
803
- """异步终止后台进程"""
804
- try:
805
- result = await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/kill_process", {
806
- "process_id": process_id,
807
- "user_id": self._user_id
808
- }, timeout=timeout)
809
- SYLogger.info(f"[Sandbox] 异步进程终止: {process_id}, status={result['status']}")
810
- return result
811
- except Exception as e:
812
- SYLogger.error(f"[Sandbox] 异步终止进程失败: {e}")
813
- return {"process_id": process_id, "status": "error", "error": str(e)}
814
-
815
- async def akill_all_processes(self, *, timeout: int = None) -> dict:
816
- """异步终止该用户的所有后台进程"""
817
- try:
818
- result = await self._post_async_with_failover(
819
- f"{SANDBOX_API_PREFIX}/kill_all_processes",
820
- {"user_id": self._user_id},
821
- timeout=timeout,
822
- )
823
- SYLogger.info(
824
- f"[Sandbox] 批量终止进程: "
825
- f"killed={result.get('killed_count', 0)}, "
826
- f"already_completed={result.get('already_completed', 0)}"
827
- )
828
- return result
829
- except Exception as e:
830
- SYLogger.error(f"[Sandbox] 批量终止进程失败: {e}")
831
- return {"killed_count": 0, "error": str(e)}
832
-
833
- # ============== 端口转发 ==============
834
-
835
- async def aport_forward(self, port: int, action: str = "list", *, timeout: int = None) -> dict:
836
- """异步端口转发管理"""
837
- return await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/port_forward", {
838
- "port": port,
839
- "user_id": self._user_id,
840
- "action": action,
841
- }, timeout=timeout)
842
-
843
- async def awatch(self, path: str = "/", event_types: list = None, *, timeout: int = None) -> dict:
844
- """异步查询文件变更"""
845
- return await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/watch", {
846
- "path": path,
847
- "user_id": self._user_id,
848
- "event_types": event_types,
849
- }, timeout=timeout)
850
-
851
778
  # ============== 批量操作 ==============
852
779
 
853
780
  def upload_files(self, files: List[tuple[str, bytes]]) -> List[FileUploadResponse]:
@@ -1193,7 +1120,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
1193
1120
  failed_count += 1
1194
1121
  errors.append({"path": sandbox_path, "error": str(e)})
1195
1122
 
1196
- max_workers = min(8, len(files_to_upload)) if files_to_upload else 1
1123
+ max_workers = min(4, len(files_to_upload)) if files_to_upload else 1
1197
1124
  with ThreadPoolExecutor(max_workers=max_workers) as executor:
1198
1125
  futures = [
1199
1126
  executor.submit(_upload_one, idx, sandbox_path, local_file)
@@ -1307,18 +1234,17 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
1307
1234
  raise
1308
1235
 
1309
1236
  async def ahealth_check(self, timeout: int = 10) -> dict:
1310
- """异步健康检查"""
1237
+ """异步健康检查(使用共享连接池)"""
1311
1238
  try:
1312
1239
  headers = self._build_headers()
1313
1240
  url = f"{self._base_url}{SANDBOX_API_PREFIX}/health"
1314
1241
  timeout_obj = aiohttp.ClientTimeout(total=timeout)
1315
- connector = aiohttp.TCPConnector(ssl=_SSL_CONTEXT)
1316
- async with aiohttp.ClientSession(connector=connector) as session:
1317
- async with session.get(url, headers=headers, timeout=timeout_obj) as resp:
1318
- resp.raise_for_status()
1319
- result = await resp.json()
1320
- SYLogger.info(f"[Sandbox] 异步健康检查成功: {result}")
1321
- return result
1242
+ session = await self._get_async_session()
1243
+ async with session.get(url, headers=headers, timeout=timeout_obj) as resp:
1244
+ resp.raise_for_status()
1245
+ result = await resp.json()
1246
+ SYLogger.info(f"[Sandbox] 异步健康检查成功: {result}")
1247
+ return result
1322
1248
  except Exception as e:
1323
1249
  SYLogger.error(f"[Sandbox] 异步健康检查失败: {e}")
1324
1250
  raise