sycommon-python-lib 0.2.5a42__tar.gz → 0.2.6a1__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 (296) hide show
  1. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/deep_agent.py +50 -13
  4. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/multi_agent_team.py +9 -0
  5. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/auth/wecom_ldap_service.py +140 -3
  6. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  7. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/README.md +0 -0
  8. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/setup.cfg +0 -0
  9. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/__init__.py +0 -0
  10. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/cli.py +0 -0
  11. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/core/__init__.py +0 -0
  12. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/core/console.py +0 -0
  13. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/core/models.py +0 -0
  14. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/core/project.py +0 -0
  15. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/core/utils.py +0 -0
  16. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/README.md.tpl +0 -0
  18. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  20. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  21. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  22. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  23. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  24. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/api/query.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/app.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/db/service.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/model/parse.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/.env.tpl +0 -0
  40. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/.gitignore.tpl +0 -0
  41. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/Dockerfile.tpl +0 -0
  42. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/README.md.tpl +0 -0
  43. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/__init__.py +0 -0
  44. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/app.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/app.yaml.tpl +0 -0
  46. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  47. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/client/__init__.py.tpl +0 -0
  48. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/model/__init__.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/model/file_info.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/base/requirements.txt.tpl +0 -0
  51. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/README.md.tpl +0 -0
  52. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/__init__.py +0 -0
  53. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/app.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  57. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/README.md.tpl +0 -0
  59. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/__init__.py +0 -0
  60. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/api/__init__.py.tpl +0 -0
  61. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/api/echo.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  64. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/app.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/client/__init__.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/model/__init__.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/command/templates/web/tools/mq.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/nexus/__init__.py +0 -0
  70. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/__init__.py +0 -0
  71. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/__main__.py +0 -0
  72. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/agents/__init__.py +0 -0
  73. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/agents/factory.py +0 -0
  74. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/agents/prompts.py +0 -0
  75. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/__init__.py +0 -0
  76. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/browser.py +0 -0
  77. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/console.py +0 -0
  79. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/dom.py +0 -0
  80. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/network.py +0 -0
  81. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  82. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/performance.py +0 -0
  83. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  84. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/client.py +0 -0
  85. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/protocol.py +0 -0
  86. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cdp/repl.py +0 -0
  87. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/cli.py +0 -0
  88. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/__init__.py +0 -0
  89. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/cdp_cmd.py +0 -0
  90. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/chat_cmd.py +0 -0
  91. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/create_cmd.py +0 -0
  92. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/evaluate_cmd.py +0 -0
  93. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/init_cmd.py +0 -0
  94. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/memory_cmd.py +0 -0
  95. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/resume_cmd.py +0 -0
  96. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/rollback_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/commands/run_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/__init__.py +0 -0
  99. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/backend.py +0 -0
  100. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/config.py +0 -0
  101. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/display.py +0 -0
  102. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/git_integration.py +0 -0
  103. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/llm.py +0 -0
  104. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/core/state.py +0 -0
  105. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/evaluate/__init__.py +0 -0
  106. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/evaluate/api_evaluator.py +0 -0
  107. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/memory/__init__.py +0 -0
  108. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/memory/compressor.py +0 -0
  109. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/memory/full.py +0 -0
  110. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/memory/hot.py +0 -0
  111. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/memory/manager.py +0 -0
  112. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/memory/warm.py +0 -0
  113. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/mode/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/mode/create.py +0 -0
  115. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/mode/optimize.py +0 -0
  116. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/models/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/models/config_models.py +0 -0
  118. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/__init__.py +0 -0
  119. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/baseline_tests.py +0 -0
  120. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/checkpoint.py +0 -0
  121. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/convergence.py +0 -0
  122. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/diagnosis.py +0 -0
  123. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/engine.py +0 -0
  124. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/environment.py +0 -0
  125. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/experience.py +0 -0
  126. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/harness_prompts.py +0 -0
  127. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/history.py +0 -0
  128. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/optimization_logger.py +0 -0
  129. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/pre_validation.py +0 -0
  130. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/reward.py +0 -0
  131. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/strategy_bandit.py +0 -0
  132. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/strategy_generator.py +0 -0
  133. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/rl/strategy_prompts.py +0 -0
  134. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycli/skills/__init__.py +0 -0
  135. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/__init__.py +0 -0
  136. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/__init__.py +0 -0
  137. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/agent_manager.py +0 -0
  138. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/chat_events.py +0 -0
  139. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/mcp/__init__.py +0 -0
  140. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/mcp/models.py +0 -0
  141. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  142. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/__init__.py +0 -0
  143. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  144. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  145. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  146. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  147. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  148. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/sandbox/session.py +0 -0
  149. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/agent/summarization_utils.py +0 -0
  150. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/auth/__init__.py +0 -0
  151. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/auth/ldap_service.py +0 -0
  152. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/auth/oa_cache.py +0 -0
  153. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/auth/oa_crypto.py +0 -0
  154. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/auth/oa_service.py +0 -0
  155. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/Config.py +0 -0
  156. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/DatabaseConfig.py +0 -0
  157. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  158. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/EmbeddingConfig.py +0 -0
  159. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/LLMConfig.py +0 -0
  160. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/LangfuseConfig.py +0 -0
  161. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/MQConfig.py +0 -0
  162. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/PgConfig.py +0 -0
  163. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/RedisConfig.py +0 -0
  164. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/RerankerConfig.py +0 -0
  165. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/SentryConfig.py +0 -0
  166. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/XxlJobConfig.py +0 -0
  167. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/config/__init__.py +0 -0
  168. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/async_base_db_service.py +0 -0
  169. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/async_database_service.py +0 -0
  170. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/base_db_service.py +0 -0
  171. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/database_service.py +0 -0
  172. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/elasticsearch_service.py +0 -0
  173. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  174. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/redis_service.py +0 -0
  175. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/database/token_usage_db_service.py +0 -0
  176. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/health/__init__.py +0 -0
  177. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/health/health_check.py +0 -0
  178. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/health/metrics.py +0 -0
  179. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/health/ping.py +0 -0
  180. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/heartbeat_process/__init__.py +0 -0
  181. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  182. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  183. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  184. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/__init__.py +0 -0
  185. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/embedding.py +0 -0
  186. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/get_llm.py +0 -0
  187. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/llm_logger.py +0 -0
  188. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/llm_tokens.py +0 -0
  189. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  190. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  191. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  192. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/struct_token.py +0 -0
  193. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/sy_langfuse.py +0 -0
  194. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  195. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  196. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/token_usage_es_service.py +0 -0
  197. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  198. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/token_utils.py +0 -0
  199. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/llm/usage_token.py +0 -0
  200. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/__init__.py +0 -0
  201. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/async_sql_logger.py +0 -0
  202. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/kafka_log.py +0 -0
  203. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/logger_levels.py +0 -0
  204. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/logger_wrapper.py +0 -0
  205. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/process_logger.py +0 -0
  206. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/logging/sql_logger.py +0 -0
  207. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/mcp_server/__init__.py +0 -0
  208. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/mcp_server/server.py +0 -0
  209. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/__init__.py +0 -0
  210. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/context.py +0 -0
  211. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/cors.py +0 -0
  212. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/docs.py +0 -0
  213. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/exception.py +0 -0
  214. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/middleware.py +0 -0
  215. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/monitor_memory.py +0 -0
  216. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/mq.py +0 -0
  217. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/sandbox.py +0 -0
  218. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/timeout.py +0 -0
  219. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/token_tracking.py +0 -0
  220. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  221. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/middleware/traceid.py +0 -0
  222. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/__init__.py +0 -0
  223. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/base_http.py +0 -0
  224. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/log.py +0 -0
  225. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/mcp_server_config.py +0 -0
  226. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/mqlistener_config.py +0 -0
  227. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/mqmsg_model.py +0 -0
  228. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/mqsend_config.py +0 -0
  229. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/sandbox.py +0 -0
  230. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/sso_user.py +0 -0
  231. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/token_usage.py +0 -0
  232. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/token_usage_mysql.py +0 -0
  233. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/models/xxljob_handler_config.py +0 -0
  234. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/notice/__init__.py +0 -0
  235. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  236. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/notice/wecom_message.py +0 -0
  237. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  238. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  239. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  240. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  241. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  242. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  243. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  244. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  245. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  246. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/sentry/__init__.py +0 -0
  247. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/sentry/sy_sentry.py +0 -0
  248. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/services.py +0 -0
  249. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/sse/__init__.py +0 -0
  250. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/sse/event.py +0 -0
  251. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/sse/sse.py +0 -0
  252. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/__init__.py +0 -0
  253. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/example.py +0 -0
  254. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/example2.py +0 -0
  255. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/feign.py +0 -0
  256. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/feign_client.py +0 -0
  257. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/nacos_client_base.py +0 -0
  258. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  259. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  260. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/nacos_service.py +0 -0
  261. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  262. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  263. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/synacos/param.py +0 -0
  264. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/deep_agent_server.py +0 -0
  265. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
  266. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  267. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_deep_agent.py +0 -0
  268. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  269. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_email.py +0 -0
  270. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_encoding_cache.py +0 -0
  271. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_fix_verification.py +0 -0
  272. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_mcp_server.py +0 -0
  273. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  274. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_mq.py +0 -0
  275. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_oa_login.py +0 -0
  276. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_real_summarization.py +0 -0
  277. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_summarization_config.py +0 -0
  278. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_summarization_real.py +0 -0
  279. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
  280. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/__init__.py +0 -0
  281. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/async_utils.py +0 -0
  282. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/docs.py +0 -0
  283. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/env.py +0 -0
  284. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/merge_headers.py +0 -0
  285. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/snowflake.py +0 -0
  286. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/syemail.py +0 -0
  287. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/tools/timing.py +0 -0
  288. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/xxljob/__init__.py +0 -0
  289. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon/xxljob/xxljob_service.py +0 -0
  290. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  291. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  292. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  293. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  294. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  295. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/tests/test_asyncio_logging.py +0 -0
  296. {sycommon_python_lib-0.2.5a42 → sycommon_python_lib-0.2.6a1}/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.5a42
3
+ Version: 0.2.6a1
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.5a42"
3
+ version = "0.2.6a1"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -49,6 +49,7 @@ from langchain_core.messages import HumanMessage, BaseMessage, AIMessageChunk, A
49
49
  from langchain_core.tools import BaseTool, tool
50
50
 
51
51
  from sycommon.logging.kafka_log import SYLogger
52
+ from sycommon.tools.snowflake import Snowflake
52
53
  from sycommon.llm.get_llm import get_llm
53
54
  from sycommon.agent.sandbox.http_sandbox_backend import HTTPSandboxBackend
54
55
  from sycommon.agent.sandbox.sandbox_recovery import SandboxRecoveryManager
@@ -447,6 +448,11 @@ class DeepAgent:
447
448
  total_input_tokens = 0
448
449
  total_output_tokens = 0
449
450
 
451
+ # ── 设置 chat turn 级 trace_id ──
452
+ # 如果上层(HTTP 中间件等)已设置 trace_id 则沿用,否则生成新的
453
+ _chat_trace_id = SYLogger.get_trace_id() or str(Snowflake.id)
454
+ _trace_token = SYLogger.set_trace_id(_chat_trace_id)
455
+
450
456
  try:
451
457
  input_state = {"messages": [HumanMessage(content=message)]}
452
458
  if rubric:
@@ -911,6 +917,7 @@ class DeepAgent:
911
917
  SYLogger.warning(f"[DeepAgent] Token 兜底统计失败: {te}")
912
918
 
913
919
  event = ChatEventBuilder.done()
920
+ event.data["trace_id"] = _chat_trace_id
914
921
  if total_input_tokens > 0 or total_output_tokens > 0:
915
922
  event.data["input_tokens"] = total_input_tokens
916
923
  event.data["output_tokens"] = total_output_tokens
@@ -936,9 +943,12 @@ class DeepAgent:
936
943
  await on_event(event)
937
944
  yield event
938
945
  event = ChatEventBuilder.done()
946
+ event.data["trace_id"] = _chat_trace_id
939
947
  if on_event:
940
948
  await on_event(event)
941
949
  yield event
950
+ finally:
951
+ SYLogger.reset_trace_id(_trace_token)
942
952
 
943
953
  # ============== 内部方法 ==============
944
954
 
@@ -1267,16 +1277,31 @@ async def _sync_skill_to_minio(
1267
1277
  return count
1268
1278
 
1269
1279
 
1280
+ async def _get_minio_skill_version(minio_service, skill_name: str) -> str:
1281
+ """从 MinIO 全局 skills/ 路径下读取技能版本"""
1282
+ try:
1283
+ content = await asyncio.to_thread(
1284
+ minio_service._client.get_object,
1285
+ minio_service._bucket,
1286
+ f"skills/{skill_name}/SKILL.md",
1287
+ )
1288
+ data = content.read()
1289
+ content.close()
1290
+ return _parse_skill_version(data.decode("utf-8"))
1291
+ except Exception:
1292
+ return ""
1293
+
1294
+
1270
1295
  async def _sync_skills_to_sandbox(
1271
1296
  skills_dir: str,
1272
1297
  backend: HTTPSandboxBackend,
1273
1298
  ) -> None:
1274
1299
  """同步技能目录到沙箱和 MinIO(按版本检查,版本不一致则全量覆盖)
1275
1300
 
1276
- 遍历本地 skills_dir 下所有技能子目录,比较本地与沙箱的 SKILL.md version:
1277
- - 版本一致:跳过
1278
- - 版本不一致或沙箱无版本:删除旧目录,全量上传到沙箱和 MinIO
1279
- 同步完成后将技能名加入 backend._synced_skills,跳过后续懒同步。
1301
+ 版本检查优先级:
1302
+ 1. 沙箱 /skills/{name}/SKILL.md — 最快,无需额外 IO
1303
+ 2. MinIO skills/{name}/SKILL.md — 沙箱为空时(新 Pod / 新沙箱)的兜底
1304
+ 版本一致则跳过,不一致或无版本则全量上传到沙箱和 MinIO。
1280
1305
  """
1281
1306
  if not os.path.isdir(skills_dir):
1282
1307
  return
@@ -1315,9 +1340,9 @@ async def _sync_skills_to_sandbox(
1315
1340
  except Exception:
1316
1341
  pass
1317
1342
 
1318
- # 比较版本:一致则跳过
1343
+ # 比较版本:优先从沙箱读,沙箱无则从 MinIO 读
1344
+ remote_version = ""
1319
1345
  if skill_name in existing_dirs:
1320
- remote_version = ""
1321
1346
  try:
1322
1347
  remote_content = await backend.aread(
1323
1348
  f"/skills/{skill_name}/SKILL.md")
@@ -1326,14 +1351,26 @@ async def _sync_skills_to_sandbox(
1326
1351
  except Exception:
1327
1352
  pass
1328
1353
 
1329
- if remote_version and remote_version == local_version:
1330
- SYLogger.debug(
1331
- f"[DeepAgent] 技能版本一致,跳过: {skill_name} v{local_version}")
1332
- backend._synced_skills.add(skill_name)
1333
- skip_count += 1
1334
- continue
1354
+ # 沙箱无版本,尝试从 MinIO 全局 skills/ 读取
1355
+ if not remote_version and minio_service:
1356
+ remote_version = await _get_minio_skill_version(
1357
+ minio_service, skill_name)
1358
+
1359
+ if remote_version and remote_version == local_version:
1360
+ SYLogger.debug(
1361
+ f"[DeepAgent] 技能版本一致,跳过: {skill_name} v{local_version}")
1362
+ backend._synced_skills.add(skill_name)
1363
+ skip_count += 1
1364
+ # 沙箱为空但 MinIO 有(版本一致):只恢复到沙箱,不再上传 MinIO
1365
+ if skill_name not in existing_dirs:
1366
+ await backend.async_sync_dirs(
1367
+ [(src, f"/skills/{skill_name}")])
1368
+ SYLogger.info(
1369
+ f"[DeepAgent] 从本地恢复技能到沙箱: {skill_name} v{local_version}")
1370
+ continue
1335
1371
 
1336
- # 版本不一致或沙箱无版本,删除旧目录后全量覆盖
1372
+ # 版本不一致或无版本,删除旧目录后全量覆盖
1373
+ if skill_name in existing_dirs:
1337
1374
  try:
1338
1375
  await backend.aexecute(f"rm -rf /skills/{skill_name}")
1339
1376
  SYLogger.info(
@@ -37,6 +37,7 @@ from langchain_core.messages import HumanMessage, BaseMessage
37
37
  from langchain_core.tools import BaseTool, tool
38
38
 
39
39
  from sycommon.logging.kafka_log import SYLogger
40
+ from sycommon.tools.snowflake import Snowflake
40
41
  from sycommon.llm.get_llm import get_llm
41
42
  from sycommon.agent.sandbox.http_sandbox_backend import HTTPSandboxBackend
42
43
  from sycommon.tools.env import get_env_var
@@ -221,6 +222,10 @@ class MultiAgentTeam:
221
222
  current_agent = self.coordinator_name
222
223
  seen_tool_call_ids = set() # 去重:流式分片中同一 tool_call 多次到达
223
224
 
225
+ # ── 设置 chat turn 级 trace_id ──
226
+ _chat_trace_id = SYLogger.get_trace_id() or str(Snowflake.id)
227
+ _trace_token = SYLogger.set_trace_id(_chat_trace_id)
228
+
224
229
  try:
225
230
  async for chunk in self._astream_with_retry(
226
231
  {"messages": [HumanMessage(content=message)]},
@@ -420,6 +425,7 @@ class MultiAgentTeam:
420
425
  SYLogger.debug(f"[ai_message] {repr(ai_chunk_buffer[:100])}...")
421
426
 
422
427
  event = ChatEventBuilder.done()
428
+ event.data["trace_id"] = _chat_trace_id
423
429
  if on_event:
424
430
  await on_event(event)
425
431
  yield event
@@ -437,9 +443,12 @@ class MultiAgentTeam:
437
443
  await on_event(event)
438
444
  yield event
439
445
  event = ChatEventBuilder.done()
446
+ event.data["trace_id"] = _chat_trace_id
440
447
  if on_event:
441
448
  await on_event(event)
442
449
  yield event
450
+ finally:
451
+ SYLogger.reset_trace_id(_trace_token)
443
452
 
444
453
  # ============== 内部方法 ==============
445
454
 
@@ -73,7 +73,8 @@ class LDAPFullUser(BaseModel):
73
73
  class WeComLDAPUser(BaseModel):
74
74
  """企微-LDAP 关联用户(最终返回结果)"""
75
75
 
76
- wecom_userid: str # 企微 userid
76
+ wecom_userid: str # 企微 userid(明文工号,如 "0633")
77
+ employee_id: Optional[str] = None # 员工工号(与 wecom_userid 同值,语义更明确)
77
78
  wecom_name: str # 企微中文名
78
79
  wecom_english_name: Optional[str] = None # 企微英文名
79
80
  wecom_departments: List[str] = [] # 企微部门列表
@@ -603,8 +604,9 @@ class WeComLDAPService(metaclass=SingletonMeta):
603
604
 
604
605
  # 3. 合并返回
605
606
  result = await self._build_wecom_ldap_user(user_data, ldap_index)
606
- # 保留原始传入的 wecom_userid
607
- result.wecom_userid = wecom_userid
607
+ # 保留解码后的明文 userid(工号),而非原始密文
608
+ result.wecom_userid = decoded_userid
609
+ result.employee_id = decoded_userid
608
610
  return result
609
611
 
610
612
  async def get_all_users(self) -> List[WeComLDAPUser]:
@@ -623,6 +625,7 @@ class WeComLDAPService(metaclass=SingletonMeta):
623
625
  results = []
624
626
  for u in wecom_users:
625
627
  result = await self._build_wecom_ldap_user(u, ldap_index)
628
+ result.employee_id = result.wecom_userid
626
629
  results.append(result)
627
630
 
628
631
  matched = sum(1 for r in results if r.matched)
@@ -671,3 +674,137 @@ class WeComLDAPService(metaclass=SingletonMeta):
671
674
  if user.matched and user.ldap_user:
672
675
  return user.ldap_user.username
673
676
  return None
677
+
678
+ # ─── Redis 映射缓存 ───
679
+
680
+ # Redis key 前缀(保持与旧版 digital_work 命名兼容)
681
+ _UID_MAP_PREFIX = "digital_work:wecom_uid_map:"
682
+ _LDAP_TO_WECOM_PREFIX = "digital_work:ldap_to_wecom:"
683
+ _EMPLOYEE_ID_PREFIX = "digital_work:wecom_employee_id:"
684
+ _MAP_TTL = 7 * 24 * 3600 # 7 天
685
+
686
+ @staticmethod
687
+ def _get_redis():
688
+ """获取 RedisService(懒加载)"""
689
+ from sycommon.database.redis_service import RedisService
690
+ return RedisService
691
+
692
+ async def _get_cached_mapping(self, wecom_userid: str) -> Optional[str]:
693
+ """从 Redis 读取 wecom_userid -> unified_id 映射"""
694
+ try:
695
+ rs = self._get_redis()
696
+ val = await rs.get(f"{self._UID_MAP_PREFIX}{wecom_userid}")
697
+ if val:
698
+ return val
699
+ except Exception:
700
+ pass
701
+ return None
702
+
703
+ async def _set_cached_mapping(self, wecom_userid: str, unified_id: str):
704
+ """将 wecom_userid <-> unified_id 双向映射写入 Redis,同时保存工号"""
705
+ try:
706
+ rs = self._get_redis()
707
+ # 正向: wecom_userid -> unified_id (LDAP sAMAccountName)
708
+ await rs.set(
709
+ f"{self._UID_MAP_PREFIX}{wecom_userid}",
710
+ unified_id,
711
+ ex=self._MAP_TTL,
712
+ )
713
+ # 反向: unified_id -> wecom_userid(用于定时任务等主动推送场景)
714
+ await rs.set(
715
+ f"{self._LDAP_TO_WECOM_PREFIX}{unified_id}",
716
+ wecom_userid,
717
+ ex=self._MAP_TTL,
718
+ )
719
+ # 员工工号: unified_id -> wecom_userid(即工号,如 "0633")
720
+ await rs.set(
721
+ f"{self._EMPLOYEE_ID_PREFIX}{unified_id}",
722
+ wecom_userid,
723
+ ex=self._MAP_TTL,
724
+ )
725
+ except Exception as e:
726
+ SYLogger.warning(f"[WeComLDAP] 缓存映射到 Redis 失败: {e}")
727
+
728
+ async def resolve_unified_user_id(self, wecom_userid: str) -> str:
729
+ """将企微 userid 解析为统一 user_id(LDAP sAMAccountName)
730
+
731
+ 优先从 Redis 缓存读取,缓存未命中时查 LDAP 并写入 Redis。
732
+ 匹配到 LDAP 返回 sAMAccountName,否则直接使用企微 userid。
733
+
734
+ Args:
735
+ wecom_userid: 企微用户ID(如 "0633"、密文 open_userid)
736
+
737
+ Returns:
738
+ 统一 user_id(小写,如 "osulcode.xiao")
739
+ """
740
+ # 1. 查 Redis 缓存
741
+ cached = await self._get_cached_mapping(wecom_userid)
742
+ if cached:
743
+ return cached
744
+
745
+ # 2. 查企微 + LDAP
746
+ unified_id = wecom_userid
747
+ employee_id = wecom_userid # 默认用工号就是原始 userid
748
+ try:
749
+ result = await self.get_user_info(wecom_userid)
750
+ employee_id = result.wecom_userid # get_user_info 返回解码后的明文工号
751
+ if result.matched and result.ldap_user and result.ldap_user.username:
752
+ unified_id = result.ldap_user.username
753
+ SYLogger.info(
754
+ f"[WeComLDAP] 用户映射: wecom={wecom_userid} -> ldap={unified_id}")
755
+ else:
756
+ SYLogger.info(
757
+ f"[WeComLDAP] 用户映射: wecom={wecom_userid} -> 未匹配LDAP,回退={unified_id}")
758
+ except Exception as e:
759
+ SYLogger.warning(
760
+ f"[WeComLDAP] 解析统一 user_id 失败: wecom_userid={wecom_userid}, error={e}")
761
+
762
+ # 3. 写入 Redis 缓存(统一小写)
763
+ unified_id = unified_id.lower().replace(" ", "")
764
+ await self._set_cached_mapping(employee_id, unified_id)
765
+
766
+ return unified_id
767
+
768
+ async def get_employee_id(self, unified_id: str) -> Optional[str]:
769
+ """从 Redis 获取企微员工工号
770
+
771
+ Args:
772
+ unified_id: 统一用户 ID(LDAP sAMAccountName,如 "osulcode.xiao")
773
+
774
+ Returns:
775
+ 员工工号(如 "0633"),未找到返回 None
776
+ """
777
+ try:
778
+ rs = self._get_redis()
779
+ uid = unified_id.lower().replace(" ", "")
780
+ val = await rs.get(f"{self._EMPLOYEE_ID_PREFIX}{uid}")
781
+ if val:
782
+ return val
783
+ except Exception:
784
+ pass
785
+ return None
786
+
787
+ async def batch_set_uid_mapping(self, mapping: dict[str, str]):
788
+ """批量写入企微-LDAP 映射到 Redis(pipeline 优化,含反向映射和工号)
789
+
790
+ Args:
791
+ mapping: {wecom_userid: unified_id, ...}
792
+ """
793
+ if not mapping:
794
+ return
795
+ try:
796
+ rs = self._get_redis()
797
+ client = rs.get_client()
798
+ async with client.pipeline(transaction=True) as pipe:
799
+ for wecom_userid, unified_id in mapping.items():
800
+ uid = unified_id.lower().replace(" ", "")
801
+ # 正向
802
+ pipe.set(f"{self._UID_MAP_PREFIX}{wecom_userid}", uid, ex=self._MAP_TTL)
803
+ # 反向
804
+ pipe.set(f"{self._LDAP_TO_WECOM_PREFIX}{uid}", wecom_userid, ex=self._MAP_TTL)
805
+ # 员工工号
806
+ pipe.set(f"{self._EMPLOYEE_ID_PREFIX}{uid}", wecom_userid, ex=self._MAP_TTL)
807
+ await pipe.execute()
808
+ logging.info(f"[WeComLDAP] 批量写入 {len(mapping)} 条映射到 Redis")
809
+ except Exception as e:
810
+ SYLogger.warning(f"[WeComLDAP] 批量缓存映射到 Redis 失败: {e}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.5a42
3
+ Version: 0.2.6a1
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown