sycommon-python-lib 0.2.5a21__tar.gz → 0.2.5a23__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.5a21 → sycommon_python_lib-0.2.5a23}/PKG-INFO +9 -9
  2. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/pyproject.toml +9 -9
  3. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/mcp/models.py +4 -0
  4. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/mcp/tool_loader.py +7 -0
  5. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/auth/wecom_ldap_service.py +90 -78
  6. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/llm_with_token_tracking.py +53 -4
  7. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/usage_token.py +43 -3
  8. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon_python_lib.egg-info/PKG-INFO +9 -9
  9. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon_python_lib.egg-info/requires.txt +8 -8
  10. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/README.md +0 -0
  11. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/setup.cfg +0 -0
  12. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/__init__.py +0 -0
  13. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/cli.py +0 -0
  14. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/core/__init__.py +0 -0
  15. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/core/console.py +0 -0
  16. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/core/models.py +0 -0
  17. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/core/project.py +0 -0
  18. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/core/utils.py +0 -0
  19. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/__init__.py +0 -0
  20. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/README.md.tpl +0 -0
  21. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/__init__.py +0 -0
  22. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  23. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  24. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/api/query.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/app.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/db/service.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/model/parse.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/.env.tpl +0 -0
  43. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/.gitignore.tpl +0 -0
  44. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/Dockerfile.tpl +0 -0
  45. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/README.md.tpl +0 -0
  46. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/__init__.py +0 -0
  47. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/app.py.tpl +0 -0
  48. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/app.yaml.tpl +0 -0
  49. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/client/__init__.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/model/__init__.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/model/file_info.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/base/requirements.txt.tpl +0 -0
  54. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/README.md.tpl +0 -0
  55. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/__init__.py +0 -0
  56. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/app.py.tpl +0 -0
  57. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  59. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  60. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  61. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/README.md.tpl +0 -0
  62. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/__init__.py +0 -0
  63. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/api/__init__.py.tpl +0 -0
  64. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/api/echo.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/app.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/client/__init__.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/model/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/command/templates/web/tools/mq.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/nexus/__init__.py +0 -0
  73. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/__init__.py +0 -0
  74. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/__main__.py +0 -0
  75. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/agents/__init__.py +0 -0
  76. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/agents/factory.py +0 -0
  77. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/agents/prompts.py +0 -0
  78. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/__init__.py +0 -0
  79. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/browser.py +0 -0
  80. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/__init__.py +0 -0
  81. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/console.py +0 -0
  82. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/dom.py +0 -0
  83. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/network.py +0 -0
  84. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  85. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/performance.py +0 -0
  86. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  87. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/client.py +0 -0
  88. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/protocol.py +0 -0
  89. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cdp/repl.py +0 -0
  90. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/cli.py +0 -0
  91. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/__init__.py +0 -0
  92. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/cdp_cmd.py +0 -0
  93. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/chat_cmd.py +0 -0
  94. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/create_cmd.py +0 -0
  95. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/evaluate_cmd.py +0 -0
  96. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/init_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/memory_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/resume_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/rollback_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/commands/run_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/__init__.py +0 -0
  102. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/backend.py +0 -0
  103. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/config.py +0 -0
  104. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/display.py +0 -0
  105. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/git_integration.py +0 -0
  106. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/llm.py +0 -0
  107. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/core/state.py +0 -0
  108. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/evaluate/__init__.py +0 -0
  109. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/evaluate/api_evaluator.py +0 -0
  110. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/memory/__init__.py +0 -0
  111. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/memory/compressor.py +0 -0
  112. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/memory/full.py +0 -0
  113. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/memory/hot.py +0 -0
  114. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/memory/manager.py +0 -0
  115. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/memory/warm.py +0 -0
  116. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/mode/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/mode/create.py +0 -0
  118. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/mode/optimize.py +0 -0
  119. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/models/__init__.py +0 -0
  120. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/models/config_models.py +0 -0
  121. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/__init__.py +0 -0
  122. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/baseline_tests.py +0 -0
  123. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/checkpoint.py +0 -0
  124. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/convergence.py +0 -0
  125. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/diagnosis.py +0 -0
  126. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/engine.py +0 -0
  127. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/environment.py +0 -0
  128. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/experience.py +0 -0
  129. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/harness_prompts.py +0 -0
  130. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/history.py +0 -0
  131. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/optimization_logger.py +0 -0
  132. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/pre_validation.py +0 -0
  133. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/reward.py +0 -0
  134. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/strategy_bandit.py +0 -0
  135. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/strategy_generator.py +0 -0
  136. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/rl/strategy_prompts.py +0 -0
  137. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycli/skills/__init__.py +0 -0
  138. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/__init__.py +0 -0
  139. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/__init__.py +0 -0
  140. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/agent_manager.py +0 -0
  141. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/chat_events.py +0 -0
  142. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/deep_agent.py +0 -0
  143. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/mcp/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/multi_agent_team.py +0 -0
  145. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/__init__.py +0 -0
  146. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  147. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  148. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  149. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  150. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  151. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/sandbox/session.py +0 -0
  152. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/agent/summarization_utils.py +0 -0
  153. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/auth/__init__.py +0 -0
  154. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/auth/ldap_service.py +0 -0
  155. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/auth/oa_cache.py +0 -0
  156. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/auth/oa_crypto.py +0 -0
  157. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/auth/oa_service.py +0 -0
  158. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/Config.py +0 -0
  159. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/DatabaseConfig.py +0 -0
  160. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  161. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/EmbeddingConfig.py +0 -0
  162. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/LLMConfig.py +0 -0
  163. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/LangfuseConfig.py +0 -0
  164. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/MQConfig.py +0 -0
  165. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/PgConfig.py +0 -0
  166. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/RedisConfig.py +0 -0
  167. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/RerankerConfig.py +0 -0
  168. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/SentryConfig.py +0 -0
  169. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/XxlJobConfig.py +0 -0
  170. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/config/__init__.py +0 -0
  171. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/async_base_db_service.py +0 -0
  172. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/async_database_service.py +0 -0
  173. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/base_db_service.py +0 -0
  174. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/database_service.py +0 -0
  175. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/elasticsearch_service.py +0 -0
  176. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  177. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/redis_service.py +0 -0
  178. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/database/token_usage_db_service.py +0 -0
  179. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/health/__init__.py +0 -0
  180. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/health/health_check.py +0 -0
  181. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/health/metrics.py +0 -0
  182. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/health/ping.py +0 -0
  183. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/heartbeat_process/__init__.py +0 -0
  184. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  185. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  186. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  187. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/__init__.py +0 -0
  188. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/embedding.py +0 -0
  189. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/get_llm.py +0 -0
  190. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/llm_logger.py +0 -0
  191. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/llm_tokens.py +0 -0
  192. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  193. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  194. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/struct_token.py +0 -0
  195. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/sy_langfuse.py +0 -0
  196. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  197. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  198. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/token_usage_es_service.py +0 -0
  199. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  200. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/__init__.py +0 -0
  201. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/async_sql_logger.py +0 -0
  202. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/kafka_log.py +0 -0
  203. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/logger_levels.py +0 -0
  204. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/logger_wrapper.py +0 -0
  205. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/process_logger.py +0 -0
  206. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/logging/sql_logger.py +0 -0
  207. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/mcp_server/__init__.py +0 -0
  208. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/mcp_server/server.py +0 -0
  209. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/__init__.py +0 -0
  210. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/context.py +0 -0
  211. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/cors.py +0 -0
  212. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/docs.py +0 -0
  213. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/exception.py +0 -0
  214. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/middleware.py +0 -0
  215. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/monitor_memory.py +0 -0
  216. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/mq.py +0 -0
  217. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/sandbox.py +0 -0
  218. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/timeout.py +0 -0
  219. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/token_tracking.py +0 -0
  220. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  221. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/middleware/traceid.py +0 -0
  222. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/__init__.py +0 -0
  223. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/base_http.py +0 -0
  224. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/log.py +0 -0
  225. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/mcp_server_config.py +0 -0
  226. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/mqlistener_config.py +0 -0
  227. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/mqmsg_model.py +0 -0
  228. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/mqsend_config.py +0 -0
  229. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/sandbox.py +0 -0
  230. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/sso_user.py +0 -0
  231. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/token_usage.py +0 -0
  232. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/token_usage_mysql.py +0 -0
  233. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/models/xxljob_handler_config.py +0 -0
  234. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/notice/__init__.py +0 -0
  235. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  236. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/notice/wecom_message.py +0 -0
  237. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  238. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  239. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  240. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  241. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  242. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  243. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  244. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  245. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  246. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/sentry/__init__.py +0 -0
  247. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/sentry/sy_sentry.py +0 -0
  248. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/services.py +0 -0
  249. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/sse/__init__.py +0 -0
  250. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/sse/event.py +0 -0
  251. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/sse/sse.py +0 -0
  252. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/__init__.py +0 -0
  253. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/example.py +0 -0
  254. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/example2.py +0 -0
  255. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/feign.py +0 -0
  256. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/feign_client.py +0 -0
  257. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/nacos_client_base.py +0 -0
  258. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  259. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  260. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/nacos_service.py +0 -0
  261. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  262. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  263. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/synacos/param.py +0 -0
  264. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/deep_agent_server.py +0 -0
  265. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  266. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_deep_agent.py +0 -0
  267. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  268. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_email.py +0 -0
  269. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_encoding_cache.py +0 -0
  270. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_mcp_server.py +0 -0
  271. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  272. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_mq.py +0 -0
  273. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_oa_login.py +0 -0
  274. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_real_summarization.py +0 -0
  275. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_summarization_config.py +0 -0
  276. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tests/test_summarization_real.py +0 -0
  277. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/__init__.py +0 -0
  278. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/async_utils.py +0 -0
  279. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/docs.py +0 -0
  280. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/env.py +0 -0
  281. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/merge_headers.py +0 -0
  282. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/snowflake.py +0 -0
  283. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/syemail.py +0 -0
  284. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/tools/timing.py +0 -0
  285. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/xxljob/__init__.py +0 -0
  286. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon/xxljob/xxljob_service.py +0 -0
  287. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  288. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  289. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  290. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  291. {sycommon_python_lib-0.2.5a21 → sycommon_python_lib-0.2.5a23}/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.5a21
3
+ Version: 0.2.5a23
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -9,16 +9,16 @@ Requires-Dist: aiohttp==3.13.5
9
9
  Requires-Dist: aiomysql==0.3.2
10
10
  Requires-Dist: anyio==4.13.0
11
11
  Requires-Dist: decorator==5.3.1
12
- Requires-Dist: deepagents==0.6.3
13
- Requires-Dist: elasticsearch==9.4.0
14
- Requires-Dist: fastapi==0.136.1
12
+ Requires-Dist: deepagents==0.6.4
13
+ Requires-Dist: elasticsearch==9.4.1
14
+ Requires-Dist: fastapi==0.136.3
15
15
  Requires-Dist: jinja2==3.1.6
16
16
  Requires-Dist: kafka-python==2.3.1
17
- Requires-Dist: langchain==1.3.1
17
+ Requires-Dist: langchain==1.3.2
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.1
21
+ Requires-Dist: langgraph==1.2.2
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
@@ -33,10 +33,10 @@ Requires-Dist: python-multipart==0.0.29
33
33
  Requires-Dist: pyyaml==6.0.3
34
34
  Requires-Dist: redis==7.4.0
35
35
  Requires-Dist: sentry-sdk[fastapi]==2.60.0
36
- Requires-Dist: sqlalchemy[asyncio]==2.0.49
37
- Requires-Dist: starlette[full]==1.0.1
36
+ Requires-Dist: sqlalchemy[asyncio]==2.0.50
37
+ Requires-Dist: starlette[full]==1.1.0
38
38
  Requires-Dist: tiktoken==0.13.0
39
- Requires-Dist: uvicorn==0.47.0
39
+ Requires-Dist: uvicorn==0.48.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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.5a21"
3
+ version = "0.2.5a23"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -10,16 +10,16 @@ dependencies = [
10
10
  "aiomysql==0.3.2",
11
11
  "anyio==4.13.0",
12
12
  "decorator==5.3.1",
13
- "deepagents==0.6.3",
14
- "elasticsearch==9.4.0",
15
- "fastapi==0.136.1",
13
+ "deepagents==0.6.4",
14
+ "elasticsearch==9.4.1",
15
+ "fastapi==0.136.3",
16
16
  "jinja2==3.1.6",
17
17
  "kafka-python==2.3.1",
18
- "langchain==1.3.1",
18
+ "langchain==1.3.2",
19
19
  "langchain-core==1.4.0",
20
20
  "langchain-openai==1.2.1",
21
21
  "langfuse==4.6.1",
22
- "langgraph==1.2.1",
22
+ "langgraph==1.2.2",
23
23
  "langgraph-checkpoint-postgres==3.1.0",
24
24
  "langgraph-checkpoint-redis==0.4.1",
25
25
  "ldap3==2.9.1",
@@ -34,10 +34,10 @@ dependencies = [
34
34
  "pyyaml==6.0.3",
35
35
  "redis==7.4.0",
36
36
  "sentry-sdk[fastapi]==2.60.0",
37
- "sqlalchemy[asyncio]==2.0.49",
38
- "starlette[full]==1.0.1",
37
+ "sqlalchemy[asyncio]==2.0.50",
38
+ "starlette[full]==1.1.0",
39
39
  "tiktoken==0.13.0",
40
- "uvicorn==0.47.0",
40
+ "uvicorn==0.48.0",
41
41
  "wecom-aibot-python-sdk==1.0.2",
42
42
  "twine==6.2.0",
43
43
  "minio==7.2.20",
@@ -8,6 +8,7 @@ class MCPToolStatus(BaseModel):
8
8
  """MCP 工具可用状态"""
9
9
  tool_name: str
10
10
  description: Optional[str] = None
11
+ display_name: Optional[str] = None
11
12
  available: bool = True
12
13
  last_check_at: Optional[str] = None
13
14
  last_error: Optional[str] = None
@@ -17,6 +18,7 @@ class MCPServerConfig(BaseModel):
17
18
  id: str
18
19
  user_id: Optional[str] = None
19
20
  name: str
21
+ alias: Optional[str] = None
20
22
  server_url: str
21
23
  description: Optional[str] = None
22
24
  headers: Optional[dict] = None
@@ -31,6 +33,7 @@ class MCPServerConfig(BaseModel):
31
33
 
32
34
  class MCPServerCreateRequest(BaseModel):
33
35
  name: str
36
+ alias: Optional[str] = None
34
37
  server_url: str
35
38
  description: Optional[str] = None
36
39
  headers: Optional[dict] = None
@@ -39,6 +42,7 @@ class MCPServerCreateRequest(BaseModel):
39
42
 
40
43
  class MCPServerUpdateRequest(BaseModel):
41
44
  name: Optional[str] = None
45
+ alias: Optional[str] = None
42
46
  server_url: Optional[str] = None
43
47
  description: Optional[str] = None
44
48
  headers: Optional[dict] = None
@@ -122,6 +122,7 @@ def _make_user_id_interceptor(user_id: str):
122
122
  async def load_mcp_tools(
123
123
  configs: List[MCPServerConfig],
124
124
  user_id: str = None,
125
+ tool_display_names: Optional[dict] = None,
125
126
  on_tool_success: Optional[Callable[[str, str], Awaitable[None]]] = None,
126
127
  on_tool_error: Optional[Callable[[str, str, str], Awaitable[None]]] = None,
127
128
  on_batch_available: Optional[Callable[[
@@ -135,6 +136,7 @@ async def load_mcp_tools(
135
136
  Args:
136
137
  configs: MCP 服务器配置列表(仅 enabled 的会被处理)
137
138
  user_id: 当前用户 ID,通过 interceptor 注入到每次 MCP 工具调用的 header 中
139
+ tool_display_names: 可选的工具中文显示名映射 {tool_full_name: display_name}
138
140
  on_tool_success: 单个工具调用成功回调
139
141
  on_tool_error: 单个工具调用失败回调
140
142
  on_batch_available: 服务器连接成功后批量标记工具可用回调 (config_id, tool_names)
@@ -186,6 +188,11 @@ async def load_mcp_tools(
186
188
  lc_tool.name = f"mcp__{key}__{original_name}"
187
189
  if lc_tool.description and not lc_tool.description.startswith("[MCP"):
188
190
  lc_tool.description = f"[MCP:{config.name}] {lc_tool.description}"
191
+ # 注入中文别名到 description,让 LLM 能识别用户说的中文名
192
+ if tool_display_names:
193
+ dn = tool_display_names.get(lc_tool.name)
194
+ if dn:
195
+ lc_tool.description = f"[别名: {dn}] {lc_tool.description}"
189
196
  lc_tool = wrap_tool_with_error_handler(
190
197
  lc_tool, config.id, config.name, original_name,
191
198
  on_tool_success=on_tool_success,
@@ -293,8 +293,8 @@ class WeComLDAPService(metaclass=SingletonMeta):
293
293
 
294
294
  # ─── LDAP 查询 ───
295
295
 
296
- def _load_ldap_index_sync(self) -> _LDAPIndex:
297
- """同步加载 LDAP 用户索引"""
296
+ def _load_ldap_index_sync(self, max_retries: int = 10, retry_interval: float = 1.0) -> _LDAPIndex:
297
+ """同步加载 LDAP 用户索引(所有 URL 均失败则重试)"""
298
298
  import ldap3
299
299
 
300
300
  self._ensure_configs()
@@ -303,86 +303,98 @@ class WeComLDAPService(metaclass=SingletonMeta):
303
303
  bind_user = f"{config.username}@{config.default_dc}"
304
304
  raw_users = []
305
305
 
306
- for url in config.urls:
307
- try:
308
- server = ldap3.Server(
309
- url.rstrip("/"),
310
- get_info=ldap3.ALL,
311
- connect_timeout=5,
312
- )
313
- conn = ldap3.Connection(
314
- server,
315
- user=bind_user,
316
- password=config.password,
317
- auto_bind=True,
318
- receive_timeout=30,
319
- )
320
-
321
- # 搜索盛业(大陆)和盛业(香港)两个 OU
322
- for ou_base in [
323
- f"OU=盛业(大陆),{config.base}",
324
- f"OU=盛业(香港),{config.base}",
325
- ]:
326
- conn.search(
327
- search_base=ou_base,
328
- search_filter="(objectClass=user)",
329
- search_scope=ldap3.SUBTREE,
330
- attributes=[
331
- "cn",
332
- "sAMAccountName",
333
- "sn",
334
- "mail",
335
- "department",
336
- "title",
337
- "telephoneNumber",
338
- "distinguishedName",
339
- ],
340
- size_limit=0,
306
+ for attempt in range(1, max_retries + 1):
307
+ raw_users = []
308
+ last_error = None
309
+ for url in config.urls:
310
+ try:
311
+ server = ldap3.Server(
312
+ url.rstrip("/"),
313
+ get_info=ldap3.ALL,
314
+ connect_timeout=5,
315
+ )
316
+ conn = ldap3.Connection(
317
+ server,
318
+ user=bind_user,
319
+ password=config.password,
320
+ auto_bind=True,
321
+ receive_timeout=30,
341
322
  )
342
323
 
343
- for entry in conn.entries:
344
- cn = str(entry.cn).strip() if entry.cn else ""
345
- sam = (
346
- str(entry.sAMAccountName).strip()
347
- if entry.sAMAccountName
348
- else ""
349
- )
350
- if not cn or not sam or sam.startswith("$"):
351
- continue
352
-
353
- raw_users.append(
354
- {
355
- "cn": cn,
356
- "sAMAccountName": sam,
357
- "sn": str(entry.sn).strip() if entry.sn else "",
358
- "mail": str(entry.mail).strip()
359
- if entry.mail
360
- else "",
361
- "department": str(entry.department).strip()
362
- if entry.department
363
- else "",
364
- "title": str(entry.title).strip()
365
- if entry.title
366
- else "",
367
- "telephoneNumber": str(
368
- entry.telephoneNumber
369
- ).strip()
370
- if entry.telephoneNumber
371
- else "",
372
- "distinguishedName": str(
373
- entry.distinguishedName
374
- ).strip()
375
- if entry.distinguishedName
376
- else "",
377
- }
324
+ for ou_base in [
325
+ f"OU=盛业(大陆),{config.base}",
326
+ f"OU=盛业(香港),{config.base}",
327
+ ]:
328
+ conn.search(
329
+ search_base=ou_base,
330
+ search_filter="(objectClass=user)",
331
+ search_scope=ldap3.SUBTREE,
332
+ attributes=[
333
+ "cn",
334
+ "sAMAccountName",
335
+ "sn",
336
+ "mail",
337
+ "department",
338
+ "title",
339
+ "telephoneNumber",
340
+ "distinguishedName",
341
+ ],
342
+ size_limit=0,
378
343
  )
379
344
 
380
- conn.unbind()
381
- break # 第一个可用的 LDAP 服务器成功即停止
382
-
383
- except Exception as e:
384
- SYLogger.warning(f"[WeComLDAP] LDAP 连接 {url} 失败: {e}")
385
- continue
345
+ for entry in conn.entries:
346
+ cn = str(entry.cn).strip() if entry.cn else ""
347
+ sam = (
348
+ str(entry.sAMAccountName).strip()
349
+ if entry.sAMAccountName
350
+ else ""
351
+ )
352
+ if not cn or not sam or sam.startswith("$"):
353
+ continue
354
+
355
+ raw_users.append(
356
+ {
357
+ "cn": cn,
358
+ "sAMAccountName": sam,
359
+ "sn": str(entry.sn).strip() if entry.sn else "",
360
+ "mail": str(entry.mail).strip()
361
+ if entry.mail
362
+ else "",
363
+ "department": str(entry.department).strip()
364
+ if entry.department
365
+ else "",
366
+ "title": str(entry.title).strip()
367
+ if entry.title
368
+ else "",
369
+ "telephoneNumber": str(
370
+ entry.telephoneNumber
371
+ ).strip()
372
+ if entry.telephoneNumber
373
+ else "",
374
+ "distinguishedName": str(
375
+ entry.distinguishedName
376
+ ).strip()
377
+ if entry.distinguishedName
378
+ else "",
379
+ }
380
+ )
381
+
382
+ conn.unbind()
383
+ break # 任一 URL 成功即停止
384
+
385
+ except Exception as e:
386
+ last_error = e
387
+ SYLogger.warning(f"[WeComLDAP] LDAP 连接 {url} 失败 (第 {attempt} 次): {e}")
388
+ continue
389
+ else:
390
+ # 所有 URL 都失败
391
+ if attempt < max_retries:
392
+ time.sleep(retry_interval)
393
+ continue
394
+ else:
395
+ SYLogger.error(f"[WeComLDAP] LDAP 全部 {max_retries} 次重试均失败,最后一次错误: {last_error}")
396
+
397
+ break # 成功则跳出重试循环
386
398
 
387
399
  index = _LDAPIndex()
388
400
  index.build(raw_users)
@@ -99,7 +99,7 @@ class LLMWithTokenTracking(BaseChatModel):
99
99
  def _clamp_max_tokens(self, messages, **kwargs):
100
100
  """动态调整 max_tokens,确保 input + max_output 不超过上下文窗口
101
101
 
102
- 每次 LLM 调用前,估算当前 input tokens,
102
+ 每次 LLM 调用前,精确计算当前 input tokens,
103
103
  将 max_tokens = min(配置的 maxOutputTokens, context_window - input - buffer)
104
104
  """
105
105
  if not self.llmConfig or not self.llmConfig.maxTokens:
@@ -108,17 +108,66 @@ class LLMWithTokenTracking(BaseChatModel):
108
108
  if not max_output:
109
109
  return
110
110
 
111
- from langchain_core.messages.utils import count_tokens_approximately
112
111
  try:
113
- input_est = count_tokens_approximately(messages, chars_per_token=2.0)
112
+ input_est = self._count_tokens(messages)
114
113
  except Exception:
115
114
  return
116
115
 
117
- buffer = 4096
116
+ buffer = 8192
118
117
  available = self.llmConfig.maxTokens - input_est - buffer
119
118
  dynamic_max = min(max_output, max(available, 1024))
120
119
  self.llm.max_tokens = dynamic_max
121
120
 
121
+ @staticmethod
122
+ def _count_tokens(messages) -> int:
123
+ """精确计算 messages 的 token 数
124
+
125
+ 优先使用 tiktoken(OpenAI 兼容模型),否则回退到字符估算。
126
+ 中文等非 ASCII 文本 chars_per_token 约 1.0-1.5,比英文 2.0-4.0 更密集。
127
+ """
128
+ total_chars = 0
129
+ for msg in messages:
130
+ content = getattr(msg, 'content', '')
131
+ if isinstance(content, str):
132
+ total_chars += len(content)
133
+ elif isinstance(content, list):
134
+ for part in content:
135
+ if isinstance(part, str):
136
+ total_chars += len(part)
137
+ elif isinstance(part, dict):
138
+ total_chars += len(str(part))
139
+
140
+ # 检查是否有高比例非 ASCII(中文/日文等)
141
+ sample = str(total_chars)
142
+ non_ascii = sum(1 for c in sample if ord(c) > 127)
143
+ ratio = non_ascii / max(len(sample), 1)
144
+
145
+ # 中文等语言 chars_per_token 约 1.5,英文约 4.0
146
+ chars_per_token = 1.5 if ratio > 0.3 else 3.5
147
+
148
+ # 尝试 tiktoken 精确计数
149
+ try:
150
+ import tiktoken
151
+ enc = tiktoken.get_encoding("cl100k_base")
152
+ token_count = 0
153
+ for msg in messages:
154
+ content = getattr(msg, 'content', '')
155
+ if isinstance(content, str):
156
+ token_count += len(enc.encode(content))
157
+ elif isinstance(content, list):
158
+ for part in content:
159
+ if isinstance(part, str):
160
+ token_count += len(enc.encode(part))
161
+ elif isinstance(part, dict):
162
+ token_count += len(enc.encode(str(part)))
163
+ # 加上消息格式开销(role、separator 等)
164
+ return token_count + len(messages) * 4
165
+ except Exception:
166
+ pass
167
+
168
+ # 回退:字符估算 + 每条消息 4 token 格式开销
169
+ return int(total_chars / chars_per_token) + len(messages) * 4
170
+
122
171
  def _generate(self, messages, stop=None, run_manager=None, **kwargs):
123
172
  """
124
173
  同步生成 - 核心方法
@@ -174,17 +174,57 @@ class LLMWithAutoTokenUsage(BaseChatModel):
174
174
  if not max_output:
175
175
  return
176
176
 
177
- from langchain_core.messages.utils import count_tokens_approximately
178
177
  try:
179
- input_est = count_tokens_approximately(messages, chars_per_token=2.0)
178
+ input_est = self._count_tokens(messages)
180
179
  except Exception:
181
180
  return
182
181
 
183
- buffer = 4096
182
+ buffer = 8192
184
183
  available = self.llmConfig.maxTokens - input_est - buffer
185
184
  dynamic_max = min(max_output, max(available, 1024))
186
185
  self.llm.max_tokens = dynamic_max
187
186
 
187
+ @staticmethod
188
+ def _count_tokens(messages) -> int:
189
+ """精确计算 messages 的 token 数"""
190
+ total_chars = 0
191
+ for msg in messages:
192
+ content = getattr(msg, 'content', '')
193
+ if isinstance(content, str):
194
+ total_chars += len(content)
195
+ elif isinstance(content, list):
196
+ for part in content:
197
+ if isinstance(part, str):
198
+ total_chars += len(part)
199
+ elif isinstance(part, dict):
200
+ total_chars += len(str(part))
201
+
202
+ # 尝试 tiktoken 精确计数
203
+ try:
204
+ import tiktoken
205
+ enc = tiktoken.get_encoding("cl100k_base")
206
+ token_count = 0
207
+ for msg in messages:
208
+ content = getattr(msg, 'content', '')
209
+ if isinstance(content, str):
210
+ token_count += len(enc.encode(content))
211
+ elif isinstance(content, list):
212
+ for part in content:
213
+ if isinstance(part, str):
214
+ token_count += len(enc.encode(part))
215
+ elif isinstance(part, dict):
216
+ token_count += len(enc.encode(str(part)))
217
+ return token_count + len(messages) * 4
218
+ except Exception:
219
+ pass
220
+
221
+ # 回退:字符估算(中文 1.5,英文 3.5)
222
+ sample = str(total_chars)
223
+ non_ascii = sum(1 for c in sample if ord(c) > 127)
224
+ ratio = non_ascii / max(len(sample), 1)
225
+ chars_per_token = 1.5 if ratio > 0.3 else 3.5
226
+ return int(total_chars / chars_per_token) + len(messages) * 4
227
+
188
228
  # ========== 实现BaseChatModel抽象方法 ==========
189
229
  def _generate(self, messages, stop=None, run_manager=None, **kwargs):
190
230
  self._clamp_max_tokens(messages, **kwargs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.5a21
3
+ Version: 0.2.5a23
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -9,16 +9,16 @@ Requires-Dist: aiohttp==3.13.5
9
9
  Requires-Dist: aiomysql==0.3.2
10
10
  Requires-Dist: anyio==4.13.0
11
11
  Requires-Dist: decorator==5.3.1
12
- Requires-Dist: deepagents==0.6.3
13
- Requires-Dist: elasticsearch==9.4.0
14
- Requires-Dist: fastapi==0.136.1
12
+ Requires-Dist: deepagents==0.6.4
13
+ Requires-Dist: elasticsearch==9.4.1
14
+ Requires-Dist: fastapi==0.136.3
15
15
  Requires-Dist: jinja2==3.1.6
16
16
  Requires-Dist: kafka-python==2.3.1
17
- Requires-Dist: langchain==1.3.1
17
+ Requires-Dist: langchain==1.3.2
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.1
21
+ Requires-Dist: langgraph==1.2.2
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
@@ -33,10 +33,10 @@ Requires-Dist: python-multipart==0.0.29
33
33
  Requires-Dist: pyyaml==6.0.3
34
34
  Requires-Dist: redis==7.4.0
35
35
  Requires-Dist: sentry-sdk[fastapi]==2.60.0
36
- Requires-Dist: sqlalchemy[asyncio]==2.0.49
37
- Requires-Dist: starlette[full]==1.0.1
36
+ Requires-Dist: sqlalchemy[asyncio]==2.0.50
37
+ Requires-Dist: starlette[full]==1.1.0
38
38
  Requires-Dist: tiktoken==0.13.0
39
- Requires-Dist: uvicorn==0.47.0
39
+ Requires-Dist: uvicorn==0.48.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
@@ -3,16 +3,16 @@ aiohttp==3.13.5
3
3
  aiomysql==0.3.2
4
4
  anyio==4.13.0
5
5
  decorator==5.3.1
6
- deepagents==0.6.3
7
- elasticsearch==9.4.0
8
- fastapi==0.136.1
6
+ deepagents==0.6.4
7
+ elasticsearch==9.4.1
8
+ fastapi==0.136.3
9
9
  jinja2==3.1.6
10
10
  kafka-python==2.3.1
11
- langchain==1.3.1
11
+ langchain==1.3.2
12
12
  langchain-core==1.4.0
13
13
  langchain-openai==1.2.1
14
14
  langfuse==4.6.1
15
- langgraph==1.2.1
15
+ langgraph==1.2.2
16
16
  langgraph-checkpoint-postgres==3.1.0
17
17
  langgraph-checkpoint-redis==0.4.1
18
18
  ldap3==2.9.1
@@ -27,10 +27,10 @@ python-multipart==0.0.29
27
27
  pyyaml==6.0.3
28
28
  redis==7.4.0
29
29
  sentry-sdk[fastapi]==2.60.0
30
- sqlalchemy[asyncio]==2.0.49
31
- starlette[full]==1.0.1
30
+ sqlalchemy[asyncio]==2.0.50
31
+ starlette[full]==1.1.0
32
32
  tiktoken==0.13.0
33
- uvicorn==0.47.0
33
+ uvicorn==0.48.0
34
34
  wecom-aibot-python-sdk==1.0.2
35
35
  twine==6.2.0
36
36
  minio==7.2.20