sycommon-python-lib 0.2.5a17__tar.gz → 0.2.5a19__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.5a17 → sycommon_python_lib-0.2.5a19}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/mcp/tool_loader.py +54 -38
  4. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/http_sandbox_backend.py +40 -0
  5. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/pg_checkpoint_service.py +21 -1
  6. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  7. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/README.md +0 -0
  8. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/setup.cfg +0 -0
  9. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/__init__.py +0 -0
  10. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/cli.py +0 -0
  11. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/core/__init__.py +0 -0
  12. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/core/console.py +0 -0
  13. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/core/models.py +0 -0
  14. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/core/project.py +0 -0
  15. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/core/utils.py +0 -0
  16. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/README.md.tpl +0 -0
  18. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  20. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  21. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  22. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  23. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  24. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/api/query.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/app.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/db/service.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/model/parse.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/.env.tpl +0 -0
  40. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/.gitignore.tpl +0 -0
  41. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/Dockerfile.tpl +0 -0
  42. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/README.md.tpl +0 -0
  43. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/__init__.py +0 -0
  44. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/app.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/app.yaml.tpl +0 -0
  46. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  47. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/client/__init__.py.tpl +0 -0
  48. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/model/__init__.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/model/file_info.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/base/requirements.txt.tpl +0 -0
  51. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/README.md.tpl +0 -0
  52. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/__init__.py +0 -0
  53. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/app.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  57. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/README.md.tpl +0 -0
  59. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/__init__.py +0 -0
  60. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/api/__init__.py.tpl +0 -0
  61. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/api/echo.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  64. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/app.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/client/__init__.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/model/__init__.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/command/templates/web/tools/mq.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/nexus/__init__.py +0 -0
  70. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/__init__.py +0 -0
  71. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/__main__.py +0 -0
  72. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/agents/__init__.py +0 -0
  73. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/agents/factory.py +0 -0
  74. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/agents/prompts.py +0 -0
  75. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/__init__.py +0 -0
  76. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/browser.py +0 -0
  77. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/console.py +0 -0
  79. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/dom.py +0 -0
  80. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/network.py +0 -0
  81. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  82. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/performance.py +0 -0
  83. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  84. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/client.py +0 -0
  85. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/protocol.py +0 -0
  86. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cdp/repl.py +0 -0
  87. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/cli.py +0 -0
  88. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/__init__.py +0 -0
  89. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/cdp_cmd.py +0 -0
  90. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/chat_cmd.py +0 -0
  91. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/create_cmd.py +0 -0
  92. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/evaluate_cmd.py +0 -0
  93. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/init_cmd.py +0 -0
  94. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/memory_cmd.py +0 -0
  95. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/resume_cmd.py +0 -0
  96. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/rollback_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/commands/run_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/__init__.py +0 -0
  99. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/backend.py +0 -0
  100. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/config.py +0 -0
  101. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/display.py +0 -0
  102. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/git_integration.py +0 -0
  103. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/llm.py +0 -0
  104. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/core/state.py +0 -0
  105. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/evaluate/__init__.py +0 -0
  106. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/evaluate/api_evaluator.py +0 -0
  107. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/memory/__init__.py +0 -0
  108. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/memory/compressor.py +0 -0
  109. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/memory/full.py +0 -0
  110. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/memory/hot.py +0 -0
  111. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/memory/manager.py +0 -0
  112. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/memory/warm.py +0 -0
  113. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/mode/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/mode/create.py +0 -0
  115. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/mode/optimize.py +0 -0
  116. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/models/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/models/config_models.py +0 -0
  118. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/__init__.py +0 -0
  119. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/baseline_tests.py +0 -0
  120. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/checkpoint.py +0 -0
  121. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/convergence.py +0 -0
  122. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/diagnosis.py +0 -0
  123. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/engine.py +0 -0
  124. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/environment.py +0 -0
  125. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/experience.py +0 -0
  126. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/harness_prompts.py +0 -0
  127. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/history.py +0 -0
  128. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/optimization_logger.py +0 -0
  129. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/pre_validation.py +0 -0
  130. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/reward.py +0 -0
  131. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/strategy_bandit.py +0 -0
  132. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/strategy_generator.py +0 -0
  133. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/rl/strategy_prompts.py +0 -0
  134. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycli/skills/__init__.py +0 -0
  135. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/__init__.py +0 -0
  136. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/__init__.py +0 -0
  137. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/agent_manager.py +0 -0
  138. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/chat_events.py +0 -0
  139. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/deep_agent.py +0 -0
  140. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/mcp/__init__.py +0 -0
  141. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/mcp/models.py +0 -0
  142. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/multi_agent_team.py +0 -0
  143. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  145. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  146. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  147. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  148. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/sandbox/session.py +0 -0
  149. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/agent/summarization_utils.py +0 -0
  150. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/auth/__init__.py +0 -0
  151. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/auth/ldap_service.py +0 -0
  152. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/auth/oa_cache.py +0 -0
  153. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/auth/oa_crypto.py +0 -0
  154. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/auth/oa_service.py +0 -0
  155. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  156. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/Config.py +0 -0
  157. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/DatabaseConfig.py +0 -0
  158. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  159. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/EmbeddingConfig.py +0 -0
  160. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/LLMConfig.py +0 -0
  161. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/LangfuseConfig.py +0 -0
  162. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/MQConfig.py +0 -0
  163. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/PgConfig.py +0 -0
  164. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/RedisConfig.py +0 -0
  165. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/RerankerConfig.py +0 -0
  166. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/SentryConfig.py +0 -0
  167. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/XxlJobConfig.py +0 -0
  168. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/config/__init__.py +0 -0
  169. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/async_base_db_service.py +0 -0
  170. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/async_database_service.py +0 -0
  171. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/base_db_service.py +0 -0
  172. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/database_service.py +0 -0
  173. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/elasticsearch_service.py +0 -0
  174. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/redis_service.py +0 -0
  175. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/database/token_usage_db_service.py +0 -0
  176. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/health/__init__.py +0 -0
  177. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/health/health_check.py +0 -0
  178. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/health/metrics.py +0 -0
  179. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/health/ping.py +0 -0
  180. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/heartbeat_process/__init__.py +0 -0
  181. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  182. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  183. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  184. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/__init__.py +0 -0
  185. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/embedding.py +0 -0
  186. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/get_llm.py +0 -0
  187. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/llm_logger.py +0 -0
  188. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/llm_tokens.py +0 -0
  189. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  190. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  191. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  192. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/struct_token.py +0 -0
  193. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/sy_langfuse.py +0 -0
  194. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  195. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  196. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/token_usage_es_service.py +0 -0
  197. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  198. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/llm/usage_token.py +0 -0
  199. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/__init__.py +0 -0
  200. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/async_sql_logger.py +0 -0
  201. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/kafka_log.py +0 -0
  202. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/logger_levels.py +0 -0
  203. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/logger_wrapper.py +0 -0
  204. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/process_logger.py +0 -0
  205. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/logging/sql_logger.py +0 -0
  206. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/mcp_server/__init__.py +0 -0
  207. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/mcp_server/server.py +0 -0
  208. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/__init__.py +0 -0
  209. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/context.py +0 -0
  210. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/cors.py +0 -0
  211. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/docs.py +0 -0
  212. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/exception.py +0 -0
  213. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/middleware.py +0 -0
  214. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/monitor_memory.py +0 -0
  215. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/mq.py +0 -0
  216. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/sandbox.py +0 -0
  217. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/timeout.py +0 -0
  218. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/token_tracking.py +0 -0
  219. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  220. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/middleware/traceid.py +0 -0
  221. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/__init__.py +0 -0
  222. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/base_http.py +0 -0
  223. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/log.py +0 -0
  224. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/mcp_server_config.py +0 -0
  225. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/mqlistener_config.py +0 -0
  226. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/mqmsg_model.py +0 -0
  227. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/mqsend_config.py +0 -0
  228. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/sandbox.py +0 -0
  229. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/sso_user.py +0 -0
  230. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/token_usage.py +0 -0
  231. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/token_usage_mysql.py +0 -0
  232. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/models/xxljob_handler_config.py +0 -0
  233. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/notice/__init__.py +0 -0
  234. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  235. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/notice/wecom_message.py +0 -0
  236. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  237. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  238. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  239. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  240. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  241. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  242. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  243. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  244. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  245. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/sentry/__init__.py +0 -0
  246. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/sentry/sy_sentry.py +0 -0
  247. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/services.py +0 -0
  248. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/sse/__init__.py +0 -0
  249. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/sse/event.py +0 -0
  250. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/sse/sse.py +0 -0
  251. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/__init__.py +0 -0
  252. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/example.py +0 -0
  253. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/example2.py +0 -0
  254. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/feign.py +0 -0
  255. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/feign_client.py +0 -0
  256. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/nacos_client_base.py +0 -0
  257. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  258. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  259. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/nacos_service.py +0 -0
  260. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  261. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  262. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/synacos/param.py +0 -0
  263. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/deep_agent_server.py +0 -0
  264. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  265. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_deep_agent.py +0 -0
  266. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  267. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_email.py +0 -0
  268. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_encoding_cache.py +0 -0
  269. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_mcp_server.py +0 -0
  270. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  271. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_mq.py +0 -0
  272. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_oa_login.py +0 -0
  273. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_real_summarization.py +0 -0
  274. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_summarization_config.py +0 -0
  275. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tests/test_summarization_real.py +0 -0
  276. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/__init__.py +0 -0
  277. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/async_utils.py +0 -0
  278. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/docs.py +0 -0
  279. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/env.py +0 -0
  280. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/merge_headers.py +0 -0
  281. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/snowflake.py +0 -0
  282. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/syemail.py +0 -0
  283. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/tools/timing.py +0 -0
  284. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/xxljob/__init__.py +0 -0
  285. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon/xxljob/xxljob_service.py +0 -0
  286. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  287. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  288. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  289. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  290. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  291. {sycommon_python_lib-0.2.5a17 → sycommon_python_lib-0.2.5a19}/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.5a17
3
+ Version: 0.2.5a19
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.5a17"
3
+ version = "0.2.5a19"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -4,6 +4,7 @@
4
4
  发现工具并作为 LangChain BaseTool 注入 Agent。
5
5
  """
6
6
 
7
+ import asyncio
7
8
  import re
8
9
  import hashlib
9
10
  from typing import List, Optional, Callable, Awaitable, TYPE_CHECKING
@@ -45,45 +46,60 @@ def wrap_tool_with_error_handler(
45
46
  original_coroutine = tool.coroutine
46
47
  tool_name = tool.name
47
48
 
48
- async def _safe_coroutine(*args, **kwargs):
49
- try:
50
- result = await original_coroutine(*args, **kwargs)
51
- if on_tool_success:
52
- try:
53
- await on_tool_success(server_config_id, original_tool_name)
54
- except Exception:
55
- pass
56
- return result
57
- except Exception as e:
58
- from langchain_core.tools import ToolException
59
- err_type = type(e).__name__
60
- err_msg = str(e)[:500]
61
- SYLogger.warning(
62
- f"[MCP] 工具 '{tool_name}' 调用失败 ({err_type}): {err_msg}")
49
+ MAX_RETRIES = 2
50
+ RETRY_DELAY_BASE = 1.0 # 秒
63
51
 
64
- if on_tool_error:
65
- try:
66
- await on_tool_error(server_config_id, original_tool_name, f"{err_type}: {err_msg}")
67
- except Exception:
68
- pass
69
-
70
- # 如果是 MCP 服务器返回的业务错误,将原始错误信息传给 LLM
71
- if isinstance(e, ToolException):
72
- friendly_msg = (
73
- f"MCP 工具 '{tool_name}' 调用失败。\n"
74
- f"错误详情: {err_msg}\n"
75
- f"请根据错误信息判断是否可以不使用该工具继续完成任务。"
76
- )
77
- else:
78
- friendly_msg = (
79
- f"MCP 工具调用失败:工具 '{tool_name}' (服务器: {server_name}) 当前不可用。\n"
80
- f"错误类型: {err_type}\n"
81
- f"可能原因: MCP 服务器未启动、网络不可达或连接超时。\n"
82
- f"请尝试不使用该工具继续完成任务,或联系管理员检查 MCP 服务 '{server_name}'。"
83
- )
84
- if is_content_and_artifact:
85
- return friendly_msg, None
86
- return [friendly_msg]
52
+ async def _safe_coroutine(*args, **kwargs):
53
+ last_exception = None
54
+ for attempt in range(MAX_RETRIES + 1):
55
+ try:
56
+ result = await original_coroutine(*args, **kwargs)
57
+ if on_tool_success:
58
+ try:
59
+ await on_tool_success(server_config_id, original_tool_name)
60
+ except Exception:
61
+ pass
62
+ return result
63
+ except Exception as e:
64
+ last_exception = e
65
+ if attempt < MAX_RETRIES:
66
+ delay = RETRY_DELAY_BASE * (attempt + 1)
67
+ SYLogger.info(
68
+ f"[MCP] 工具 '{tool_name}' 第 {attempt + 1}/{MAX_RETRIES} 次重试 "
69
+ f"({type(e).__name__}: {str(e)[:200]}), {delay}s 后重试")
70
+ await asyncio.sleep(delay)
71
+ continue
72
+
73
+ # 重试耗尽,返回错误
74
+ from langchain_core.tools import ToolException
75
+ err_type = type(e).__name__
76
+ err_msg = str(e)[:500]
77
+ SYLogger.warning(
78
+ f"[MCP] 工具 '{tool_name}' 调用失败,已重试 {MAX_RETRIES} 次 "
79
+ f"({err_type}): {err_msg}")
80
+
81
+ if on_tool_error:
82
+ try:
83
+ await on_tool_error(server_config_id, original_tool_name, f"{err_type}: {err_msg}")
84
+ except Exception:
85
+ pass
86
+
87
+ if isinstance(e, ToolException):
88
+ friendly_msg = (
89
+ f"MCP 工具 '{tool_name}' 调用失败(已重试 {MAX_RETRIES} 次)。\n"
90
+ f"错误详情: {err_msg}\n"
91
+ f"请根据错误信息判断是否可以不使用该工具继续完成任务。"
92
+ )
93
+ else:
94
+ friendly_msg = (
95
+ f"MCP 工具调用失败:工具 '{tool_name}' (服务器: {server_name}) 当前不可用(已重试 {MAX_RETRIES} 次)。\n"
96
+ f"错误类型: {err_type}\n"
97
+ f"可能原因: MCP 服务器未启动、网络不可达或连接超时。\n"
98
+ f"请尝试不使用该工具继续完成任务,或联系管理员检查 MCP 服务 '{server_name}'。"
99
+ )
100
+ if is_content_and_artifact:
101
+ return friendly_msg, None
102
+ return [friendly_msg]
87
103
 
88
104
  tool.coroutine = _safe_coroutine
89
105
  return tool
@@ -42,6 +42,35 @@ def _read_file_safe(path: str) -> bytes:
42
42
  return f.read()
43
43
 
44
44
 
45
+ def filter_instances_by_owner(instances: list, user_id: str, timeout: float = 3.0) -> list:
46
+ """过滤掉不属于当前用户的本地沙箱实例。
47
+
48
+ 对每个实例调用 /v1/sandbox/health 获取 type 和 owner,
49
+ - remote 类型:始终保留(共享资源)
50
+ - local 类型:仅当 owner 与 user_id 匹配时保留(忽略大小写)
51
+ - health check 失败时保留实例(fail-open,由服务端 token 校验兜底)
52
+ """
53
+ filtered = []
54
+ for ins in instances:
55
+ sb_url = f"http://{ins['ip']}:{ins['port']}"
56
+ try:
57
+ resp = requests.get(f"{sb_url}/v1/sandbox/health", timeout=timeout)
58
+ if resp.status_code == 200:
59
+ data = resp.json()
60
+ sb_type = data.get("type", "remote")
61
+ owner = data.get("owner", "")
62
+ if sb_type == "local" and owner and owner.lower() != user_id.lower():
63
+ SYLogger.info(
64
+ f"[Sandbox] 过滤非所有者本地沙箱: {sb_url}, "
65
+ f"owner={owner}, user_id={user_id}"
66
+ )
67
+ continue
68
+ except Exception:
69
+ pass
70
+ filtered.append(ins)
71
+ return filtered
72
+
73
+
45
74
  class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
46
75
  """
47
76
  通过 HTTP API 连接远程沙箱容器
@@ -250,6 +279,11 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
250
279
  if not instances:
251
280
  raise RuntimeError(f"服务 [{service_name}] 无可用实例")
252
281
 
282
+ # 过滤掉不属于当前用户的本地沙箱
283
+ instances = filter_instances_by_owner(instances, user_id)
284
+ if not instances:
285
+ raise RuntimeError(f"服务 [{service_name}] 无可用实例(已过滤非所有者本地沙箱)")
286
+
253
287
  # 基于用户ID的负载均衡:使用哈希选择实例
254
288
  if load_balance and len(instances) > 1:
255
289
  hash_value = int(hashlib.md5(user_id.encode()).hexdigest(), 16)
@@ -320,6 +354,12 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
320
354
  SYLogger.warning(f"[Sandbox] Nacos 未发现可用服务: {self._nacos_service_name}")
321
355
  return False
322
356
 
357
+ # 过滤掉不属于当前用户的本地沙箱
358
+ instances = filter_instances_by_owner(instances, self._user_id)
359
+ if not instances:
360
+ SYLogger.warning(f"[Sandbox] 过滤后无可用服务: {self._nacos_service_name}")
361
+ return False
362
+
323
363
  instance = instances[0]
324
364
  new_url = f"http://{instance['ip']}:{instance['port']}"
325
365
 
@@ -14,6 +14,7 @@ PostgreSQL Checkpoint 服务
14
14
  # 获取 checkpointer
15
15
  checkpointer = await PgCheckpointService.get_checkpointer()
16
16
  """
17
+ import asyncio
17
18
  import logging
18
19
  from typing import Optional, Any
19
20
 
@@ -27,6 +28,9 @@ class PgCheckpointService(metaclass=SingletonMeta):
27
28
  _initialized: bool = False
28
29
  _config: Optional[PgConfig] = None
29
30
  _pool: Optional[Any] = None
31
+ _setup_attempts: int = 0
32
+ _max_setup_attempts: int = 10
33
+ _retry_interval: float = 5.0 # 重试间隔(秒)
30
34
 
31
35
  def __init__(self):
32
36
  pass
@@ -41,6 +45,18 @@ class PgCheckpointService(metaclass=SingletonMeta):
41
45
  if cls._initialized:
42
46
  return
43
47
 
48
+ # 超过最大重试次数则不再尝试
49
+ if cls._setup_attempts >= cls._max_setup_attempts:
50
+ logging.warning(
51
+ f"PgCheckpointService 已达到最大初始化重试次数 ({cls._max_setup_attempts}),不再重试")
52
+ return
53
+
54
+ # 非首次尝试时等待间隔
55
+ if cls._setup_attempts > 0:
56
+ await asyncio.sleep(cls._retry_interval)
57
+
58
+ cls._setup_attempts += 1
59
+
44
60
  try:
45
61
  if config is None:
46
62
  try:
@@ -102,12 +118,16 @@ class PgCheckpointService(metaclass=SingletonMeta):
102
118
  async def get_checkpointer(cls) -> Any:
103
119
  """获取 AsyncPostgresSaver 实例
104
120
 
121
+ 如果未初始化,会尝试重新初始化(最多 _max_setup_attempts 次)。
122
+
105
123
  Returns:
106
124
  AsyncPostgresSaver 实例
107
125
 
108
126
  Raises:
109
- RuntimeError: 如果服务未初始化
127
+ RuntimeError: 如果服务未初始化且重试次数已耗尽
110
128
  """
129
+ if not cls._initialized or not cls._checkpointer:
130
+ await cls.setup()
111
131
  if not cls._initialized or not cls._checkpointer:
112
132
  raise RuntimeError("PgCheckpointService 未初始化,请先调用 PgCheckpointService.setup()")
113
133
  return cls._checkpointer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.5a17
3
+ Version: 0.2.5a19
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown