sycommon-python-lib 0.2.5a7__tar.gz → 0.2.5a9__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.5a7 → sycommon_python_lib-0.2.5a9}/PKG-INFO +10 -9
  2. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/pyproject.toml +11 -10
  3. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/mcp/tool_loader.py +43 -36
  4. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/struct_token.py +57 -24
  5. sycommon_python_lib-0.2.5a9/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +100256 -0
  6. sycommon_python_lib-0.2.5a9/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +199998 -0
  7. sycommon_python_lib-0.2.5a9/src/sycommon/mcp_server/__init__.py +13 -0
  8. sycommon_python_lib-0.2.5a9/src/sycommon/mcp_server/server.py +184 -0
  9. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/middleware.py +4 -0
  10. sycommon_python_lib-0.2.5a9/src/sycommon/models/mcp_server_config.py +36 -0
  11. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_client.py +70 -31
  12. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +32 -7
  13. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +32 -2
  14. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +17 -2
  15. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/services.py +33 -1
  16. sycommon_python_lib-0.2.5a9/src/sycommon/tests/test_consumer_recovery.py +283 -0
  17. sycommon_python_lib-0.2.5a9/src/sycommon/tests/test_encoding_cache.py +148 -0
  18. sycommon_python_lib-0.2.5a9/src/sycommon/tests/test_mcp_server.py +401 -0
  19. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon_python_lib.egg-info/PKG-INFO +10 -9
  20. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon_python_lib.egg-info/SOURCES.txt +8 -0
  21. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon_python_lib.egg-info/requires.txt +9 -8
  22. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/README.md +0 -0
  23. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/setup.cfg +0 -0
  24. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/__init__.py +0 -0
  25. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/cli.py +0 -0
  26. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/core/__init__.py +0 -0
  27. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/core/console.py +0 -0
  28. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/core/models.py +0 -0
  29. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/core/project.py +0 -0
  30. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/core/utils.py +0 -0
  31. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/__init__.py +0 -0
  32. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/README.md.tpl +0 -0
  33. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/__init__.py +0 -0
  34. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/api/query.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  44. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/app.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  46. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  47. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  48. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/db/service.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/model/parse.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/.env.tpl +0 -0
  55. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/.gitignore.tpl +0 -0
  56. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/Dockerfile.tpl +0 -0
  57. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/README.md.tpl +0 -0
  58. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/__init__.py +0 -0
  59. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/app.py.tpl +0 -0
  60. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/app.yaml.tpl +0 -0
  61. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/client/__init__.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/model/__init__.py.tpl +0 -0
  64. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/model/file_info.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/base/requirements.txt.tpl +0 -0
  66. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/README.md.tpl +0 -0
  67. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/__init__.py +0 -0
  68. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/app.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  72. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/README.md.tpl +0 -0
  74. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/__init__.py +0 -0
  75. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/api/__init__.py.tpl +0 -0
  76. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/api/echo.py.tpl +0 -0
  77. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  78. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  79. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/app.py.tpl +0 -0
  80. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/client/__init__.py.tpl +0 -0
  81. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/model/__init__.py.tpl +0 -0
  82. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  83. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/command/templates/web/tools/mq.py.tpl +0 -0
  84. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/nexus/__init__.py +0 -0
  85. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/__init__.py +0 -0
  86. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/__main__.py +0 -0
  87. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/agents/__init__.py +0 -0
  88. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/agents/factory.py +0 -0
  89. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/agents/prompts.py +0 -0
  90. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/__init__.py +0 -0
  91. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/browser.py +0 -0
  92. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/__init__.py +0 -0
  93. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/console.py +0 -0
  94. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/dom.py +0 -0
  95. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/network.py +0 -0
  96. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  97. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/performance.py +0 -0
  98. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  99. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/client.py +0 -0
  100. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/protocol.py +0 -0
  101. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cdp/repl.py +0 -0
  102. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/cli.py +0 -0
  103. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/__init__.py +0 -0
  104. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/cdp_cmd.py +0 -0
  105. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/chat_cmd.py +0 -0
  106. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/create_cmd.py +0 -0
  107. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/evaluate_cmd.py +0 -0
  108. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/init_cmd.py +0 -0
  109. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/memory_cmd.py +0 -0
  110. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/resume_cmd.py +0 -0
  111. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/rollback_cmd.py +0 -0
  112. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/commands/run_cmd.py +0 -0
  113. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/backend.py +0 -0
  115. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/config.py +0 -0
  116. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/display.py +0 -0
  117. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/git_integration.py +0 -0
  118. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/llm.py +0 -0
  119. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/core/state.py +0 -0
  120. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/evaluate/__init__.py +0 -0
  121. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/evaluate/api_evaluator.py +0 -0
  122. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/memory/__init__.py +0 -0
  123. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/memory/compressor.py +0 -0
  124. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/memory/full.py +0 -0
  125. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/memory/hot.py +0 -0
  126. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/memory/manager.py +0 -0
  127. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/memory/warm.py +0 -0
  128. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/mode/__init__.py +0 -0
  129. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/mode/create.py +0 -0
  130. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/mode/optimize.py +0 -0
  131. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/models/__init__.py +0 -0
  132. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/models/config_models.py +0 -0
  133. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/__init__.py +0 -0
  134. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/baseline_tests.py +0 -0
  135. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/checkpoint.py +0 -0
  136. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/convergence.py +0 -0
  137. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/diagnosis.py +0 -0
  138. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/engine.py +0 -0
  139. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/environment.py +0 -0
  140. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/experience.py +0 -0
  141. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/harness_prompts.py +0 -0
  142. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/history.py +0 -0
  143. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/optimization_logger.py +0 -0
  144. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/pre_validation.py +0 -0
  145. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/reward.py +0 -0
  146. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/strategy_bandit.py +0 -0
  147. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/strategy_generator.py +0 -0
  148. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/rl/strategy_prompts.py +0 -0
  149. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycli/skills/__init__.py +0 -0
  150. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/__init__.py +0 -0
  151. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/__init__.py +0 -0
  152. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/agent_manager.py +0 -0
  153. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/chat_events.py +0 -0
  154. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/deep_agent.py +0 -0
  155. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/mcp/__init__.py +0 -0
  156. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/mcp/models.py +0 -0
  157. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/multi_agent_team.py +0 -0
  158. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/__init__.py +0 -0
  159. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  160. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  161. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  162. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  163. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  164. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/sandbox/session.py +0 -0
  165. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/agent/summarization_utils.py +0 -0
  166. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/auth/__init__.py +0 -0
  167. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/auth/ldap_service.py +0 -0
  168. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/auth/oa_cache.py +0 -0
  169. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/auth/oa_crypto.py +0 -0
  170. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/auth/oa_service.py +0 -0
  171. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  172. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/Config.py +0 -0
  173. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/DatabaseConfig.py +0 -0
  174. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  175. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/EmbeddingConfig.py +0 -0
  176. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/LLMConfig.py +0 -0
  177. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/LangfuseConfig.py +0 -0
  178. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/MQConfig.py +0 -0
  179. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/PgConfig.py +0 -0
  180. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/RedisConfig.py +0 -0
  181. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/RerankerConfig.py +0 -0
  182. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/SentryConfig.py +0 -0
  183. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/XxlJobConfig.py +0 -0
  184. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/config/__init__.py +0 -0
  185. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/async_base_db_service.py +0 -0
  186. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/async_database_service.py +0 -0
  187. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/base_db_service.py +0 -0
  188. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/database_service.py +0 -0
  189. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/elasticsearch_service.py +0 -0
  190. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  191. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/redis_service.py +0 -0
  192. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/database/token_usage_db_service.py +0 -0
  193. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/health/__init__.py +0 -0
  194. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/health/health_check.py +0 -0
  195. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/health/metrics.py +0 -0
  196. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/health/ping.py +0 -0
  197. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/heartbeat_process/__init__.py +0 -0
  198. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  199. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  200. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  201. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/__init__.py +0 -0
  202. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/embedding.py +0 -0
  203. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/get_llm.py +0 -0
  204. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/llm_logger.py +0 -0
  205. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/llm_tokens.py +0 -0
  206. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  207. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  208. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  209. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/sy_langfuse.py +0 -0
  210. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/token_usage_es_service.py +0 -0
  211. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  212. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/llm/usage_token.py +0 -0
  213. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/__init__.py +0 -0
  214. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/async_sql_logger.py +0 -0
  215. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/kafka_log.py +0 -0
  216. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/logger_levels.py +0 -0
  217. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/logger_wrapper.py +0 -0
  218. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/process_logger.py +0 -0
  219. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/logging/sql_logger.py +0 -0
  220. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/__init__.py +0 -0
  221. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/background_execution.py +0 -0
  222. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/context.py +0 -0
  223. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/cors.py +0 -0
  224. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/docs.py +0 -0
  225. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/exception.py +0 -0
  226. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/monitor_memory.py +0 -0
  227. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/mq.py +0 -0
  228. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/sandbox.py +0 -0
  229. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/timeout.py +0 -0
  230. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/token_tracking.py +0 -0
  231. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  232. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/middleware/traceid.py +0 -0
  233. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/__init__.py +0 -0
  234. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/base_http.py +0 -0
  235. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/log.py +0 -0
  236. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/mqlistener_config.py +0 -0
  237. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/mqmsg_model.py +0 -0
  238. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/mqsend_config.py +0 -0
  239. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/sandbox.py +0 -0
  240. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/sso_user.py +0 -0
  241. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/token_usage.py +0 -0
  242. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/token_usage_mysql.py +0 -0
  243. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/models/xxljob_handler_config.py +0 -0
  244. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/notice/__init__.py +0 -0
  245. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  246. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/notice/wecom_message.py +0 -0
  247. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  248. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  249. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  250. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  251. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  252. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/sentry/__init__.py +0 -0
  253. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/sentry/sy_sentry.py +0 -0
  254. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/sse/__init__.py +0 -0
  255. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/sse/event.py +0 -0
  256. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/sse/sse.py +0 -0
  257. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/__init__.py +0 -0
  258. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/example.py +0 -0
  259. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/example2.py +0 -0
  260. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/feign.py +0 -0
  261. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/feign_client.py +0 -0
  262. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/nacos_client_base.py +0 -0
  263. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  264. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  265. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/nacos_service.py +0 -0
  266. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  267. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  268. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/synacos/param.py +0 -0
  269. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/deep_agent_server.py +0 -0
  270. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_deep_agent.py +0 -0
  271. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_email.py +0 -0
  272. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  273. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_mq.py +0 -0
  274. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_oa_login.py +0 -0
  275. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_real_summarization.py +0 -0
  276. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_summarization_config.py +0 -0
  277. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tests/test_summarization_real.py +0 -0
  278. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/__init__.py +0 -0
  279. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/async_utils.py +0 -0
  280. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/docs.py +0 -0
  281. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/env.py +0 -0
  282. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/merge_headers.py +0 -0
  283. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/snowflake.py +0 -0
  284. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/syemail.py +0 -0
  285. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/tools/timing.py +0 -0
  286. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/xxljob/__init__.py +0 -0
  287. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon/xxljob/xxljob_service.py +0 -0
  288. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  289. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  290. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  291. {sycommon_python_lib-0.2.5a7 → sycommon_python_lib-0.2.5a9}/tests/test_sycli.py +0 -0
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.5a7
3
+ Version: 0.2.5a9
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
7
  Requires-Dist: aio-pika==9.6.2
8
8
  Requires-Dist: aiohttp==3.13.5
9
9
  Requires-Dist: aiomysql==0.3.2
10
- Requires-Dist: anyio==4.12.1
10
+ Requires-Dist: anyio==4.13.0
11
11
  Requires-Dist: decorator==5.3.1
12
- Requires-Dist: deepagents==0.6.1
12
+ Requires-Dist: deepagents==0.6.3
13
13
  Requires-Dist: elasticsearch==9.4.0
14
14
  Requires-Dist: fastapi==0.136.1
15
15
  Requires-Dist: jinja2==3.1.6
@@ -18,29 +18,30 @@ Requires-Dist: langchain==1.3.1
18
18
  Requires-Dist: langchain-core==1.4.0
19
19
  Requires-Dist: langchain-openai==1.2.1
20
20
  Requires-Dist: langfuse==4.6.1
21
- Requires-Dist: langgraph==1.2.0
21
+ Requires-Dist: langgraph==1.2.1
22
22
  Requires-Dist: langgraph-checkpoint-postgres==3.1.0
23
23
  Requires-Dist: langgraph-checkpoint-redis==0.4.1
24
24
  Requires-Dist: ldap3==2.9.1
25
25
  Requires-Dist: loguru==0.7.3
26
- Requires-Dist: mysql-connector-python==9.6.0
26
+ Requires-Dist: mysql-connector-python==9.7.0
27
27
  Requires-Dist: nacos-sdk-python<3.0,==2.0.11
28
28
  Requires-Dist: psutil==7.2.2
29
- Requires-Dist: pyxxl==0.4.6
29
+ Requires-Dist: pyxxl==0.4.7
30
30
  Requires-Dist: pydantic==2.13.4
31
31
  Requires-Dist: python-dotenv==1.2.2
32
32
  Requires-Dist: python-multipart==0.0.29
33
33
  Requires-Dist: pyyaml==6.0.3
34
- Requires-Dist: redis==7.3.0
34
+ Requires-Dist: redis==7.4.0
35
35
  Requires-Dist: sentry-sdk[fastapi]==2.60.0
36
- Requires-Dist: sqlalchemy[asyncio]==2.0.48
37
- Requires-Dist: starlette[full]==1.0.0
36
+ Requires-Dist: sqlalchemy[asyncio]==2.0.49
37
+ Requires-Dist: starlette[full]==1.0.1
38
38
  Requires-Dist: tiktoken==0.13.0
39
39
  Requires-Dist: uvicorn==0.47.0
40
40
  Requires-Dist: wecom-aibot-python-sdk==1.0.2
41
41
  Requires-Dist: twine==6.2.0
42
42
  Requires-Dist: minio==7.2.20
43
43
  Requires-Dist: langchain-mcp-adapters==0.2.2
44
+ Requires-Dist: fastapi-mcp==0.4.0
44
45
  Requires-Dist: psycopg[binary,pool]==3.3.4
45
46
 
46
47
  # sycommon-python-lib
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.5a7"
3
+ version = "0.2.5a9"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -8,9 +8,9 @@ dependencies = [
8
8
  "aio-pika==9.6.2",
9
9
  "aiohttp==3.13.5",
10
10
  "aiomysql==0.3.2",
11
- "anyio==4.12.1",
11
+ "anyio==4.13.0",
12
12
  "decorator==5.3.1",
13
- "deepagents==0.6.1",
13
+ "deepagents==0.6.3",
14
14
  "elasticsearch==9.4.0",
15
15
  "fastapi==0.136.1",
16
16
  "jinja2==3.1.6",
@@ -19,35 +19,36 @@ dependencies = [
19
19
  "langchain-core==1.4.0",
20
20
  "langchain-openai==1.2.1",
21
21
  "langfuse==4.6.1",
22
- "langgraph==1.2.0",
22
+ "langgraph==1.2.1",
23
23
  "langgraph-checkpoint-postgres==3.1.0",
24
24
  "langgraph-checkpoint-redis==0.4.1",
25
25
  "ldap3==2.9.1",
26
26
  "loguru==0.7.3",
27
- "mysql-connector-python==9.6.0",
27
+ "mysql-connector-python==9.7.0",
28
28
  "nacos-sdk-python==2.0.11,<3.0",
29
29
  "psutil==7.2.2",
30
- "pyxxl==0.4.6",
30
+ "pyxxl==0.4.7",
31
31
  "pydantic==2.13.4",
32
32
  "python-dotenv==1.2.2",
33
33
  "python-multipart==0.0.29",
34
34
  "pyyaml==6.0.3",
35
- "redis==7.3.0",
35
+ "redis==7.4.0",
36
36
  "sentry-sdk[fastapi]==2.60.0",
37
- "sqlalchemy[asyncio]==2.0.48",
38
- "starlette[full]==1.0.0",
37
+ "sqlalchemy[asyncio]==2.0.49",
38
+ "starlette[full]==1.0.1",
39
39
  "tiktoken==0.13.0",
40
40
  "uvicorn==0.47.0",
41
41
  "wecom-aibot-python-sdk==1.0.2",
42
42
  "twine==6.2.0",
43
43
  "minio==7.2.20",
44
44
  "langchain-mcp-adapters==0.2.2",
45
+ "fastapi-mcp==0.4.0",
45
46
  "psycopg[binary,pool]==3.3.4",
46
47
  ]
47
48
 
48
49
  [tool.setuptools]
49
50
  packages = {find = {where = ["src"], exclude = ["*.__pycache__", "*.__pycache__.*"]}}
50
- package-data = {command = ["templates/**/*", "templates/**/.*"]}
51
+ package-data = {command = ["templates/**/*", "templates/**/.*"], sycommon = ["llm/tiktoken_cache/*"]}
51
52
 
52
53
  [build-system]
53
54
  requires = ["setuptools"]
@@ -6,13 +6,16 @@
6
6
 
7
7
  import re
8
8
  import hashlib
9
- from typing import List, Optional, Callable, Awaitable
9
+ from typing import List, Optional, Callable, Awaitable, TYPE_CHECKING
10
10
 
11
11
  from langchain_core.tools import BaseTool
12
12
 
13
13
  from sycommon.logging.kafka_log import SYLogger
14
14
  from sycommon.agent.mcp.models import MCPServerConfig
15
15
 
16
+ if TYPE_CHECKING:
17
+ from langchain_mcp_adapters.interceptors import MCPToolCallRequest
18
+
16
19
 
17
20
  def sanitize_name(name: str) -> str:
18
21
  """将名称转为合法的标识符,中文等非ASCII字符做 transliterate"""
@@ -37,6 +40,8 @@ def wrap_tool_with_error_handler(
37
40
  on_tool_success: 异步回调 (server_config_id, tool_name) -> None
38
41
  on_tool_error: 异步回调 (server_config_id, tool_name, error_msg) -> None
39
42
  """
43
+ is_content_and_artifact = getattr(
44
+ tool, 'response_format', '') == 'content_and_artifact'
40
45
  original_coroutine = tool.coroutine
41
46
  tool_name = tool.name
42
47
 
@@ -52,7 +57,8 @@ def wrap_tool_with_error_handler(
52
57
  except Exception as e:
53
58
  err_type = type(e).__name__
54
59
  err_msg = str(e)[:500]
55
- SYLogger.warning(f"[MCP] 工具 '{tool_name}' 调用失败 ({err_type}): {err_msg}")
60
+ SYLogger.warning(
61
+ f"[MCP] 工具 '{tool_name}' 调用失败 ({err_type}): {err_msg}")
56
62
 
57
63
  if on_tool_error:
58
64
  try:
@@ -66,6 +72,8 @@ def wrap_tool_with_error_handler(
66
72
  f"可能原因: MCP 服务器未启动、网络不可达或连接超时。\n"
67
73
  f"请尝试不使用该工具继续完成任务,或联系管理员检查 MCP 服务 '{server_name}'。"
68
74
  )
75
+ if is_content_and_artifact:
76
+ return friendly_msg, None
69
77
  return [friendly_msg]
70
78
 
71
79
  tool.coroutine = _safe_coroutine
@@ -74,13 +82,10 @@ def wrap_tool_with_error_handler(
74
82
 
75
83
  def _make_user_id_interceptor(user_id: str):
76
84
  """创建 MCP 工具调用拦截器,注入 X-User-Id header"""
77
- from langchain_mcp_adapters.interceptors import MCPToolCallRequest, MCPToolCallResult
78
- from typing import Callable, Awaitable
79
-
80
85
  async def inject_user_id(
81
- request: MCPToolCallRequest,
82
- handler: Callable[[MCPToolCallRequest], Awaitable[MCPToolCallResult]],
83
- ) -> MCPToolCallResult:
86
+ request: "MCPToolCallRequest",
87
+ handler: Callable[["MCPToolCallRequest"], Awaitable],
88
+ ):
84
89
  headers = dict(request.headers or {})
85
90
  headers["X-User-Id"] = user_id
86
91
  request = request.override(headers=headers)
@@ -94,7 +99,8 @@ async def load_mcp_tools(
94
99
  user_id: str = None,
95
100
  on_tool_success: Optional[Callable[[str, str], Awaitable[None]]] = None,
96
101
  on_tool_error: Optional[Callable[[str, str, str], Awaitable[None]]] = None,
97
- on_batch_available: Optional[Callable[[str, list], Awaitable[None]]] = None,
102
+ on_batch_available: Optional[Callable[[
103
+ str, list], Awaitable[None]]] = None,
98
104
  on_server_failure: Optional[Callable[[str, str], Awaitable[None]]] = None,
99
105
  ) -> List[BaseTool]:
100
106
  """加载 MCP 工具列表
@@ -135,33 +141,32 @@ async def load_mcp_tools(
135
141
  client = MultiServerMCPClient(client_config)
136
142
 
137
143
  async with client.session(key) as session:
138
- from langchain_mcp_adapters.tools import _list_all_tools
144
+ from langchain_mcp_adapters.tools import _list_all_tools, convert_mcp_tool_to_langchain_tool
139
145
  raw_tools = await _list_all_tools(session)
140
146
 
141
- original_names = []
142
- for tool in raw_tools:
143
- original_name = tool.name
144
- original_names.append(original_name)
145
-
146
- from langchain_mcp_adapters.tools import convert_mcp_tool_to_langchain_tool
147
- lc_tool = convert_mcp_tool_to_langchain_tool(
148
- session,
149
- tool,
150
- connection=client_config[key],
151
- tool_interceptors=interceptors if interceptors else None,
152
- server_name=config.name,
153
- tool_name_prefix=False,
154
- )
155
-
156
- lc_tool.name = f"mcp__{key}__{original_name}"
157
- if lc_tool.description and not lc_tool.description.startswith("[MCP"):
158
- lc_tool.description = f"[MCP:{config.name}] {lc_tool.description}"
159
- wrap_tool_with_error_handler(
160
- lc_tool, config.id, config.name, original_name,
161
- on_tool_success=on_tool_success,
162
- on_tool_error=on_tool_error,
163
- )
164
- all_tools.append(lc_tool)
147
+ original_names = []
148
+ for tool in raw_tools:
149
+ original_name = tool.name
150
+ original_names.append(original_name)
151
+
152
+ lc_tool = convert_mcp_tool_to_langchain_tool(
153
+ None,
154
+ tool,
155
+ connection=client_config[key],
156
+ tool_interceptors=interceptors if interceptors else None,
157
+ server_name=config.name,
158
+ tool_name_prefix=False,
159
+ )
160
+
161
+ lc_tool.name = f"mcp__{key}__{original_name}"
162
+ if lc_tool.description and not lc_tool.description.startswith("[MCP"):
163
+ lc_tool.description = f"[MCP:{config.name}] {lc_tool.description}"
164
+ wrap_tool_with_error_handler(
165
+ lc_tool, config.id, config.name, original_name,
166
+ on_tool_success=on_tool_success,
167
+ on_tool_error=on_tool_error,
168
+ )
169
+ all_tools.append(lc_tool)
165
170
 
166
171
  if on_batch_available:
167
172
  try:
@@ -169,10 +174,12 @@ async def load_mcp_tools(
169
174
  except Exception as e:
170
175
  SYLogger.warning(f"[MCP] 写入工具状态失败: {e}")
171
176
 
172
- SYLogger.info(f"[MCP] 服务器 '{config.name}' 加载了 {len(raw_tools)} 个工具")
177
+ SYLogger.info(
178
+ f"[MCP] 服务器 '{config.name}' 加载了 {len(raw_tools)} 个工具")
173
179
 
174
180
  except Exception as e:
175
- SYLogger.warning(f"[MCP] 服务器 '{config.name}' ({config.server_url}) 连接失败,跳过: {e}")
181
+ SYLogger.warning(
182
+ f"[MCP] 服务器 '{config.name}' ({config.server_url}) 连接失败,跳过: {e}")
176
183
  if on_server_failure:
177
184
  try:
178
185
  await on_server_failure(config.id, str(e)[:300])
@@ -10,10 +10,55 @@ from sycommon.llm.llm_logger import LLMLogger
10
10
  from langfuse import Langfuse, LangfuseSpan, propagate_attributes
11
11
  from typing import Dict, List, Optional, Any
12
12
  import tiktoken
13
+ import os
14
+ import asyncio
13
15
  import threading
14
16
  import warnings
15
17
  warnings.filterwarnings("ignore", message="Pydantic serializer warnings")
16
18
 
19
+ # 设置 tiktoken 缓存目录为本地内置文件,避免首次使用时从远程下载 BPE 词表
20
+ os.environ["TIKTOKEN_CACHE_DIR"] = os.path.join(os.path.dirname(__file__), "tiktoken_cache")
21
+
22
+ # 模块级 encoding 单例,所有实例共享,只初始化一次
23
+ _cached_encoding = None
24
+ _cached_model_name = None
25
+ _encoding_lock = threading.Lock()
26
+
27
+
28
+ def _init_encoding_sync(model_name: str):
29
+ """同步初始化 tiktoken encoding(线程安全)"""
30
+ global _cached_encoding, _cached_model_name
31
+ with _encoding_lock:
32
+ if _cached_encoding is not None and _cached_model_name == model_name:
33
+ return _cached_encoding
34
+
35
+ try:
36
+ _cached_encoding = tiktoken.encoding_for_model(model_name)
37
+ _cached_model_name = model_name
38
+ except KeyError:
39
+ try:
40
+ _cached_encoding = tiktoken.get_encoding("cl100k_base")
41
+ except Exception as e:
42
+ SYLogger.error(f"tiktoken 初始化失败,将使用字符数近似估算: {e}")
43
+ except Exception as e:
44
+ SYLogger.error(f"tiktoken 初始化失败,将使用字符数近似估算: {e}")
45
+
46
+ return _cached_encoding
47
+
48
+
49
+ def _get_shared_encoding(model_name: str):
50
+ """获取模块级共享的 tiktoken encoding(同步路径,快速路径无锁)"""
51
+ if _cached_encoding is not None and _cached_model_name == model_name:
52
+ return _cached_encoding
53
+ return _init_encoding_sync(model_name)
54
+
55
+
56
+ async def _aget_shared_encoding(model_name: str):
57
+ """获取模块级共享的 tiktoken encoding(异步路径,不阻塞事件循环)"""
58
+ if _cached_encoding is not None and _cached_model_name == model_name:
59
+ return _cached_encoding
60
+ return await asyncio.to_thread(_init_encoding_sync, model_name)
61
+
17
62
 
18
63
  class StructuredRunnableWithToken(Runnable):
19
64
  """
@@ -49,32 +94,15 @@ class StructuredRunnableWithToken(Runnable):
49
94
  self.max_compression_attempts = max_compression_attempts # 最大压缩尝试次数
50
95
  self.is_native_mode = is_native_mode # 是否为原生模式
51
96
 
52
- # 初始化 Tokenizer(5秒超时保护)
97
+ # 初始化 Tokenizer(延迟到首次使用时初始化,避免在异步上下文中阻塞事件循环)
53
98
  self.encoding = None
54
-
55
- def _init_encoding():
56
- nonlocal encoding_result
57
- try:
58
- encoding_result = tiktoken.encoding_for_model(model_name)
59
- except KeyError:
60
- try:
61
- encoding_result = tiktoken.get_encoding("cl100k_base")
62
- except Exception as e:
63
- SYLogger.error(f"tiktoken get_encoding 失败: {e}")
64
- except Exception as e:
65
- SYLogger.error(f"tiktoken encoding_for_model 失败: {e}")
66
-
67
- encoding_result = None
68
- t = threading.Thread(target=_init_encoding, daemon=True)
69
- t.start()
70
- t.join(timeout=5)
71
- if t.is_alive():
72
- SYLogger.error("tiktoken 初始化超时(5s),将使用字符数近似估算")
73
- elif encoding_result is not None:
74
- self.encoding = encoding_result
99
+ self._encoding_initialized = False
75
100
 
76
101
  def _encode_text(self, text: str) -> int:
77
102
  """计算文本的 token 数量,encoding 不可用时按字符数近似估算"""
103
+ if not self._encoding_initialized:
104
+ self.encoding = _get_shared_encoding(self.model_name)
105
+ self._encoding_initialized = True
78
106
  if self.encoding:
79
107
  return len(self.encoding.encode(text))
80
108
  # 中文约 1.5 字符/token,英文约 4 字符/token,取中间值 2
@@ -466,10 +494,15 @@ class StructuredRunnableWithToken(Runnable):
466
494
  user_id=user_id
467
495
  )
468
496
 
469
- # 1. 适配输入
497
+ # 1. 确保 encoding 已初始化(异步路径,不阻塞事件循环)
498
+ if not self._encoding_initialized:
499
+ self.encoding = await _aget_shared_encoding(self.model_name)
500
+ self._encoding_initialized = True
501
+
502
+ # 2. 适配输入
470
503
  adapted_input = self._adapt_input(input)
471
504
 
472
- # 2. 检查并执行上下文压缩 (仅在异步模式且开启时)
505
+ # 3. 检查并执行上下文压缩 (仅在异步模式且开启时)
473
506
  if self.enable_compression:
474
507
  max_tokens = int(self.llmConfig.maxTokens * self.threshold_ratio)
475
508
  current_tokens = self._count_tokens(adapted_input)