sycommon-python-lib 0.2.10a10__tar.gz → 0.2.10a12__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 (374) hide show
  1. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/health/readiness.py +95 -8
  4. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/kafka_log.py +47 -5
  5. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/logger_levels.py +9 -3
  6. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  7. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon_python_lib.egg-info/SOURCES.txt +1 -0
  8. sycommon_python_lib-0.2.10a12/tests/test_kafka_upie_fix.py +401 -0
  9. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/README.md +0 -0
  10. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/setup.cfg +0 -0
  11. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/__init__.py +0 -0
  12. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/cli.py +0 -0
  13. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/core/__init__.py +0 -0
  14. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/core/console.py +0 -0
  15. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/core/models.py +0 -0
  16. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/core/project.py +0 -0
  17. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/core/utils.py +0 -0
  18. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/README.md.tpl +0 -0
  20. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/__init__.py +0 -0
  21. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  22. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  23. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  24. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  25. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  26. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/api/query.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/app.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/db/service.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/model/parse.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/.env.tpl +0 -0
  42. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/.gitignore.tpl +0 -0
  43. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/Dockerfile.tpl +0 -0
  44. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/README.md.tpl +0 -0
  45. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/__init__.py +0 -0
  46. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/app.py.tpl +0 -0
  47. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/app.yaml.tpl +0 -0
  48. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/client/__init__.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/model/__init__.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/model/file_info.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/base/requirements.txt.tpl +0 -0
  53. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/README.md.tpl +0 -0
  54. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/__init__.py +0 -0
  55. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/app.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  57. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  59. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  60. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/README.md.tpl +0 -0
  61. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/__init__.py +0 -0
  62. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/api/__init__.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/api/echo.py.tpl +0 -0
  64. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/app.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/client/__init__.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/model/__init__.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/command/templates/web/tools/mq.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/nexus/__init__.py +0 -0
  72. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/__init__.py +0 -0
  73. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/__main__.py +0 -0
  74. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/acp/__init__.py +0 -0
  75. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/acp/config.py +0 -0
  76. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/acp/executor.py +0 -0
  77. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/acp/registry.py +0 -0
  78. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/acp/server.py +0 -0
  79. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/agents/__init__.py +0 -0
  80. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/agents/factory.py +0 -0
  81. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/agents/prompts.py +0 -0
  82. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/__init__.py +0 -0
  83. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/browser.py +0 -0
  84. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/__init__.py +0 -0
  85. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/console.py +0 -0
  86. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/dom.py +0 -0
  87. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/network.py +0 -0
  88. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  89. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/performance.py +0 -0
  90. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  91. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/client.py +0 -0
  92. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/protocol.py +0 -0
  93. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cdp/repl.py +0 -0
  94. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/cli.py +0 -0
  95. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/__init__.py +0 -0
  96. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/acp_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/acp_serve_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/cdp_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/chat_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/create_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/evaluate_cmd.py +0 -0
  102. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/init_cmd.py +0 -0
  103. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/memory_cmd.py +0 -0
  104. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/resume_cmd.py +0 -0
  105. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/rollback_cmd.py +0 -0
  106. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/commands/run_cmd.py +0 -0
  107. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/__init__.py +0 -0
  108. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/backend.py +0 -0
  109. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/config.py +0 -0
  110. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/display.py +0 -0
  111. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/git_integration.py +0 -0
  112. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/llm.py +0 -0
  113. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/core/state.py +0 -0
  114. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/evaluate/__init__.py +0 -0
  115. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/evaluate/api_evaluator.py +0 -0
  116. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/memory/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/memory/compressor.py +0 -0
  118. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/memory/full.py +0 -0
  119. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/memory/hot.py +0 -0
  120. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/memory/manager.py +0 -0
  121. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/memory/warm.py +0 -0
  122. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/mode/__init__.py +0 -0
  123. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/mode/create.py +0 -0
  124. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/mode/optimize.py +0 -0
  125. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/models/__init__.py +0 -0
  126. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/models/config_models.py +0 -0
  127. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/__init__.py +0 -0
  128. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/baseline_tests.py +0 -0
  129. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/checkpoint.py +0 -0
  130. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/convergence.py +0 -0
  131. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/diagnosis.py +0 -0
  132. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/engine.py +0 -0
  133. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/environment.py +0 -0
  134. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/experience.py +0 -0
  135. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/harness_prompts.py +0 -0
  136. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/history.py +0 -0
  137. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/optimization_logger.py +0 -0
  138. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/pre_validation.py +0 -0
  139. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/reward.py +0 -0
  140. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/strategy_bandit.py +0 -0
  141. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/strategy_generator.py +0 -0
  142. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/rl/strategy_prompts.py +0 -0
  143. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/simple_chat_agent.py +0 -0
  144. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycli/skills/__init__.py +0 -0
  145. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/__init__.py +0 -0
  146. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/__init__.py +0 -0
  147. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/acp/__init__.py +0 -0
  148. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/acp/client.py +0 -0
  149. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/acp/fetch.py +0 -0
  150. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/acp/server_adapter.py +0 -0
  151. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/acp/ssh_init.py +0 -0
  152. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/acp/tool.py +0 -0
  153. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/agent_manager.py +0 -0
  154. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/chat_events.py +0 -0
  155. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/deep_agent.py +0 -0
  156. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/mcp/__init__.py +0 -0
  157. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/mcp/models.py +0 -0
  158. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  159. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/middleware/model_request_prep.py +0 -0
  160. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/middleware/sandbox_path_guard.py +0 -0
  161. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/middleware/sensitive_guard.py +0 -0
  162. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/middleware/skill_write_guard.py +0 -0
  163. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/multi_agent_team.py +0 -0
  164. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/reasoning_content_patch.py +0 -0
  165. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/resume_compactor.py +0 -0
  166. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/__init__.py +0 -0
  167. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/consistent_hash.py +0 -0
  168. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  169. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  170. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  171. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  172. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  173. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/sandbox/session.py +0 -0
  174. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/skills_retry_patch.py +0 -0
  175. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/agent/summarization_utils.py +0 -0
  176. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/auth/__init__.py +0 -0
  177. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/auth/ldap_service.py +0 -0
  178. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/auth/oa_cache.py +0 -0
  179. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/auth/oa_crypto.py +0 -0
  180. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/auth/oa_service.py +0 -0
  181. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  182. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/ACPAgentConfig.py +0 -0
  183. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/Config.py +0 -0
  184. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/DatabaseConfig.py +0 -0
  185. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/EgressPolicyConfig.py +0 -0
  186. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  187. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/EmbeddingConfig.py +0 -0
  188. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/LLMConfig.py +0 -0
  189. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/LangfuseConfig.py +0 -0
  190. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/MQConfig.py +0 -0
  191. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/PgConfig.py +0 -0
  192. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/RedisConfig.py +0 -0
  193. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/RerankerConfig.py +0 -0
  194. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/SentryConfig.py +0 -0
  195. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/XxlJobConfig.py +0 -0
  196. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/__init__.py +0 -0
  197. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/config/config_change_notifier.py +0 -0
  198. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/async_base_db_service.py +0 -0
  199. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/async_database_service.py +0 -0
  200. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/base_db_service.py +0 -0
  201. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/database_service.py +0 -0
  202. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/elasticsearch_service.py +0 -0
  203. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  204. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/redis_service.py +0 -0
  205. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/resilient_pg_saver.py +0 -0
  206. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/database/token_usage_db_service.py +0 -0
  207. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/health/__init__.py +0 -0
  208. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/health/health_check.py +0 -0
  209. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/health/metrics.py +0 -0
  210. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/health/ping.py +0 -0
  211. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/heartbeat_process/__init__.py +0 -0
  212. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  213. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  214. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  215. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/__init__.py +0 -0
  216. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/embedding.py +0 -0
  217. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/get_llm.py +0 -0
  218. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/llm_logger.py +0 -0
  219. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/llm_tokens.py +0 -0
  220. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  221. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  222. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  223. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/struct_token.py +0 -0
  224. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/sy_langfuse.py +0 -0
  225. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  226. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  227. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/token_usage_es_service.py +0 -0
  228. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  229. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/token_utils.py +0 -0
  230. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/llm/usage_token.py +0 -0
  231. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/__init__.py +0 -0
  232. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/async_sql_logger.py +0 -0
  233. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/bounded_kafka_sink.py +0 -0
  234. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/bounded_stdout_sink.py +0 -0
  235. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/log_masker.py +0 -0
  236. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/logger_wrapper.py +0 -0
  237. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/process_logger.py +0 -0
  238. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/logging/sql_logger.py +0 -0
  239. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/mcp_server/__init__.py +0 -0
  240. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/mcp_server/server.py +0 -0
  241. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/__init__.py +0 -0
  242. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/context.py +0 -0
  243. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/cors.py +0 -0
  244. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/docs.py +0 -0
  245. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/egress_wall.py +0 -0
  246. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/exception.py +0 -0
  247. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/middleware.py +0 -0
  248. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/monitor_memory.py +0 -0
  249. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/mq.py +0 -0
  250. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/sandbox.py +0 -0
  251. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/sandbox_gateway.py +0 -0
  252. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/timeout.py +0 -0
  253. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/token_tracking.py +0 -0
  254. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  255. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/middleware/traceid.py +0 -0
  256. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/__init__.py +0 -0
  257. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/base_http.py +0 -0
  258. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/log.py +0 -0
  259. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/mcp_server_config.py +0 -0
  260. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/mqlistener_config.py +0 -0
  261. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/mqmsg_model.py +0 -0
  262. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/mqsend_config.py +0 -0
  263. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/sandbox.py +0 -0
  264. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/sso_user.py +0 -0
  265. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/token_usage.py +0 -0
  266. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/token_usage_mysql.py +0 -0
  267. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/models/xxljob_handler_config.py +0 -0
  268. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/notice/__init__.py +0 -0
  269. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  270. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/notice/wecom_message.py +0 -0
  271. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  272. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbit_management_client.py +0 -0
  273. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  274. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  275. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  276. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  277. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  278. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  279. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  280. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  281. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/sentry/__init__.py +0 -0
  282. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/sentry/sy_sentry.py +0 -0
  283. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/services.py +0 -0
  284. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/sse/__init__.py +0 -0
  285. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/sse/event.py +0 -0
  286. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/sse/sse.py +0 -0
  287. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/__init__.py +0 -0
  288. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/example.py +0 -0
  289. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/example2.py +0 -0
  290. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/feign.py +0 -0
  291. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/feign_client.py +0 -0
  292. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/nacos_client_base.py +0 -0
  293. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  294. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  295. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/nacos_service.py +0 -0
  296. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  297. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  298. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/synacos/param.py +0 -0
  299. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/deep_agent_server.py +0 -0
  300. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_backend_factory_compat.py +0 -0
  301. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consistent_hash.py +0 -0
  302. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consume_dedup.py +0 -0
  303. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consumer_broker_health.py +0 -0
  304. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
  305. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  306. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consumer_recovery_fix.py +0 -0
  307. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_consumer_tags_sync.py +0 -0
  308. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_db_keepalive.py +0 -0
  309. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_deep_agent.py +0 -0
  310. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  311. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_email.py +0 -0
  312. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_encoding_cache.py +0 -0
  313. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_env_tenant_helper.py +0 -0
  314. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_exp_concurrent_migrate.py +0 -0
  315. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_exp_delete_queue_with_consumers.py +0 -0
  316. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_fault_injection_real.py +0 -0
  317. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_fix_verification.py +0 -0
  318. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_heartbeat_timeout.py +0 -0
  319. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_integration_real_broker.py +0 -0
  320. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_mcp_server.py +0 -0
  321. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  322. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_mq.py +0 -0
  323. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_mq_config_driven.py +0 -0
  324. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_nacos_llm_real.py +0 -0
  325. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_oa_login.py +0 -0
  326. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_queue_priority_fallback.py +0 -0
  327. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_queue_priority_upgrade_timing.py +0 -0
  328. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_real_summarization.py +0 -0
  329. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_reconnect_scenarios.py +0 -0
  330. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_sandbox_glob_hardening.py +0 -0
  331. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_services_plugin_defaults.py +0 -0
  332. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_summarization_config.py +0 -0
  333. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_summarization_real.py +0 -0
  334. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
  335. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_upgrade_aio_pika.py +0 -0
  336. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_upgrade_langgraph_stream.py +0 -0
  337. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tests/test_upgrade_verification.py +0 -0
  338. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/__init__.py +0 -0
  339. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/async_utils.py +0 -0
  340. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/docs.py +0 -0
  341. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/env.py +0 -0
  342. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/merge_headers.py +0 -0
  343. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/snowflake.py +0 -0
  344. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/syemail.py +0 -0
  345. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/time_utils.py +0 -0
  346. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/timing.py +0 -0
  347. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/tools/user_id.py +0 -0
  348. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/xxljob/__init__.py +0 -0
  349. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon/xxljob/xxljob_service.py +0 -0
  350. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  351. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  352. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  353. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  354. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_acp_tool.py +0 -0
  355. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_asyncio_logging.py +0 -0
  356. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_config_change_notifier.py +0 -0
  357. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_hotreload_snapshot.py +0 -0
  358. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_llm_apikey_contextvar.py +0 -0
  359. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_log_masker.py +0 -0
  360. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_resilient_pg_saver.py +0 -0
  361. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_sandbox_path_guard.py +0 -0
  362. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_sensitive_guard.py +0 -0
  363. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_simple_chat_agent.py +0 -0
  364. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_skill_regex_upgrade.py +0 -0
  365. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_skill_write_guard.py +0 -0
  366. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_streaming_e2e.py +0 -0
  367. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_summary_echo_break_loop.py +0 -0
  368. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_sycli.py +0 -0
  369. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_sylogger_fixes.py +0 -0
  370. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_sync_skills_to_sandbox.py +0 -0
  371. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_time_utils.py +0 -0
  372. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_traceid_omit_base64.py +0 -0
  373. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_upload_concurrency.py +0 -0
  374. {sycommon_python_lib-0.2.10a10 → sycommon_python_lib-0.2.10a12}/tests/test_upload_e2e_http.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.10a10
3
+ Version: 0.2.10a12
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.10a10"
3
+ version = "0.2.10a12"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -7,9 +7,10 @@ from starlette.concurrency import run_in_threadpool
7
7
 
8
8
  from sycommon.logging.kafka_log import SYLogger
9
9
 
10
- # DB/Redis 拨测超时(秒);MQ 通道往返探活略宽
10
+ # DB/Redis 拨测超时(秒);MQ 通道往返与 LLM 真实补全略宽
11
11
  PROBE_TIMEOUT_SECONDS = 3.0
12
12
  MQ_PROBE_TIMEOUT_SECONDS = 5.0
13
+ LLM_PROBE_TIMEOUT_SECONDS = 8.0
13
14
 
14
15
  # 拨测结果 TTL 缓存(秒):K8s/Nacos/LB 多源轮询直接命中缓存,
15
16
  # 避免故障期间探针流量放大成对依赖的额外负载
@@ -17,10 +18,13 @@ PROBE_CACHE_TTL_SECONDS = 2.0
17
18
 
18
19
  # 等拨测锁超时(秒):底层库吞取消语义的兜底,防端点整体 wedged。
19
20
  # 预算必须覆盖最慢合法路径再加余量:MQ 撞换池窗口的兜底重探最坏
20
- # 2×MQ_PROBE_TIMEOUT —— 写小了会把正常慢探测误判成 wedged 答 stale
21
- # (对齐 Go lib fca8ee1 锁预算修复:TTL + 2×MQ + 余量)。
21
+ # 2×MQ_PROBE_TIMEOUT,LLM 网关慢响应最坏 1×LLM_PROBE_TIMEOUT —— 取两者
22
+ # 较大者再配余量(写小了会把正常慢探测误判成 wedged 答 stale,
23
+ # 对齐 Go lib fca8ee1 锁预算修复思路:TTL + 最慢组件 + 余量)。
22
24
  LOCK_WAIT_TIMEOUT_SECONDS = (
23
- PROBE_CACHE_TTL_SECONDS + 2 * MQ_PROBE_TIMEOUT_SECONDS + 5.0)
25
+ PROBE_CACHE_TTL_SECONDS
26
+ + max(2 * MQ_PROBE_TIMEOUT_SECONDS, LLM_PROBE_TIMEOUT_SECONDS)
27
+ + 5.0)
24
28
 
25
29
 
26
30
  def _skipped(reason: str) -> dict:
@@ -61,10 +65,11 @@ async def _probe_async_engine(engine) -> None:
61
65
  await connection.execute(text("SELECT 1"))
62
66
 
63
67
 
64
- async def _timed_probe(coro, timeout: float, probe_name: str) -> dict:
68
+ async def _timed_probe(coro, timeout: float, probe_name: str, **extra) -> dict:
65
69
  """单组件拨测统一包裹:计时 + 超时 + 异常→DOWN,互不影响其他组件。
66
70
 
67
71
  error 只含异常类型名(详见 _err_type_only);完整异常进 WARNING 日志。
72
+ extra 透传进 UP/DOWN 的 details(如 LLM 拨测的 model 名)。
68
73
  """
69
74
  start = time.monotonic()
70
75
  try:
@@ -76,6 +81,7 @@ async def _timed_probe(coro, timeout: float, probe_name: str) -> dict:
76
81
  "probe": probe_name,
77
82
  "error": "probe timeout",
78
83
  "latency_ms": round((time.monotonic() - start) * 1000, 1),
84
+ **extra,
79
85
  },
80
86
  }
81
87
  except Exception as e:
@@ -90,6 +96,7 @@ async def _timed_probe(coro, timeout: float, probe_name: str) -> dict:
90
96
  "probe": probe_name,
91
97
  "error": _err_type_only(e),
92
98
  "latency_ms": round((time.monotonic() - start) * 1000, 1),
99
+ **extra,
93
100
  },
94
101
  }
95
102
  return {
@@ -97,6 +104,7 @@ async def _timed_probe(coro, timeout: float, probe_name: str) -> dict:
97
104
  "details": {
98
105
  "probe": probe_name,
99
106
  "latency_ms": round((time.monotonic() - start) * 1000, 1),
107
+ **extra,
100
108
  },
101
109
  }
102
110
 
@@ -283,13 +291,92 @@ async def _probe_mq_pool_alive(pool) -> None:
283
291
  raise RuntimeError("mq connection not alive")
284
292
 
285
293
 
294
+ async def _check_llm() -> dict:
295
+ """LLM 拨测:配置里没有任何 LLMConfig → SKIPPED(纯中间件服务不掺和);
296
+ 有配置则取 default 模型发一条 "1+1=" 真实补全,收到非空回复即 UP。
297
+
298
+ 「能正常返回数据」的判定:通道通但 content 为空(网关 200 空补全)
299
+ 同样算 DOWN —— 空回复对消费方等于不可用。错误只回显类型名/HTTP
300
+ 状态码(同 _err_type_only 脱敏标准,网关错误文案可能内嵌上游信息)。
301
+ max_tokens 固定 16:拨测只要一个数字,防推理模型把输出预算烧满。
302
+ timeout 固定拨测预算(覆盖客户端默认 180s —— readiness 要求秒级)。
303
+ """
304
+ from sycommon.config.Config import Config
305
+
306
+ try:
307
+ cfg = Config()
308
+ default_cfg = cfg.get_default_llm_config()
309
+ model = default_cfg.get("model")
310
+ has_configs = bool(cfg.llm_configs)
311
+ except Exception:
312
+ has_configs = False
313
+ model = None
314
+
315
+ if not has_configs or not model:
316
+ if _declared("llm"):
317
+ return {
318
+ "status": "DOWN",
319
+ "details": {"reason": "llm declared but no LLMConfig loaded"},
320
+ }
321
+ return _skipped("no LLMConfig loaded")
322
+
323
+ async def _probe_llm_chat() -> None:
324
+ from langchain_core.messages import HumanMessage
325
+
326
+ from sycommon.llm.get_llm import get_llm
327
+
328
+ # thinking=False(指令模式):get_llm 注入
329
+ # chat_template_kwargs.enable_thinking=False —— 推理模型(默认条目
330
+ # Qwen3.8-Flash-Next 实测)开着思考时 16 token 全烧在 reasoning、
331
+ # content 为 None → 撞 length 上限被空回复哨兵误判 DOWN;关思考后
332
+ # 同一预算直接吐 "1 + 1 = 2"。max_tokens=16 同理:拨测只要一个数字,
333
+ # 防推理模型把输出预算烧满;timeout 固定拨测预算(覆盖客户端默认
334
+ # 180s —— readiness 要求秒级)。
335
+ llm = get_llm(
336
+ model,
337
+ wrap_structured=False,
338
+ thinking=False,
339
+ max_retries=1,
340
+ timeout=LLM_PROBE_TIMEOUT_SECONDS,
341
+ max_tokens=16,
342
+ temperature=0,
343
+ )
344
+ # 拨测无请求上下文,强制走 nacos 全局 apiKey
345
+ #(current_llm_api_key 为空时 resolve_api_key 自会回退配置值)。
346
+ resp = await llm.ainvoke([HumanMessage(content="1+1=")])
347
+ content = resp.content if hasattr(resp, "content") else ""
348
+ if isinstance(content, list): # 多模态 content 分片 → 拼纯文本
349
+ content = "".join(
350
+ part.get("text", "") for part in content
351
+ if isinstance(part, dict))
352
+ if not str(content).strip():
353
+ raise _EmptyCompletionError()
354
+
355
+ try:
356
+ return await _timed_probe(
357
+ _probe_llm_chat(), LLM_PROBE_TIMEOUT_SECONDS,
358
+ "chat completions", model=model)
359
+ except Exception as e:
360
+ SYLogger.warning(
361
+ f"[READINESS] llm check failed: {type(e).__name__}")
362
+ return {
363
+ "status": "DOWN",
364
+ "details": {"error": _err_type_only(e)},
365
+ }
366
+
367
+
368
+ class _EmptyCompletionError(Exception):
369
+ """空回复哨兵:类型名即脱敏文案(通道通但没吐字)。"""
370
+
371
+
286
372
  def setup_readiness_handler(app: FastAPI):
287
- """挂载 GET /actuator/health/readiness:按需拨测 DB/Redis/MQ。
373
+ """挂载 GET /actuator/health/readiness:按需拨测 DB/Redis/MQ/LLM。
288
374
 
289
375
  组件是否「在用」由各服务单例运行时状态判定(零配置):
290
376
  - database: DatabaseService/AsyncDatabaseService engine 存在
291
377
  - redis: RedisService.is_initialized()
292
378
  - mq: RabbitMQService.is_configured()(mq.yml 已加载)
379
+ - llm: Config 里存在 LLMConfig 条目(默认模型真实补全往返)
293
380
 
294
381
  在用组件任一 DOWN → HTTP 503;SKIPPED 不影响。
295
382
  结果带 PROBE_CACHE_TTL_SECONDS 缓存:多探针源(K8s/Nacos/LB)轮询
@@ -328,9 +415,9 @@ def setup_readiness_handler(app: FastAPI):
328
415
  # 单组件异常/导入失败不得炸掉整个 gather(否则取消兄弟任务);
329
416
  # gather return_exceptions + 逐个兜底
330
417
  results = await asyncio.gather(
331
- _check_database(), _check_redis(), _check_mq(),
418
+ _check_database(), _check_redis(), _check_mq(), _check_llm(),
332
419
  return_exceptions=True)
333
- names = ("database", "redis", "mq")
420
+ names = ("database", "redis", "mq", "llm")
334
421
  components = {}
335
422
  for name, res in zip(names, results):
336
423
  if isinstance(res, BaseException):
@@ -220,6 +220,20 @@ class KafkaSink:
220
220
  bootstrap_timeout_ms=10000:
221
221
  api_version 默认为 None,__init__ 会 eager bootstrap 拉取版本信息,
222
222
  broker 不可达时默认 30s 才超时。重建/惰性补建路径下 30s 太长,收到 10s。
223
+ enable_idempotence=False 的理由(2026-10-14 netsearch 生产事故复盘):
224
+ kafka-python 3.x 把 enable_idempotence 默认从 False 静默改为 True,
225
+ 日志 producer 被动卷进 PID/序列号/muted 整套幂等机制,触发两个库缺陷:
226
+ 1. retention 型 UnknownProducerIdError 活锁:broker 因 retention 清掉
227
+ producer state 后持续回 UPIE,客户端 KAFKA-5793 分支每次都重置序列号
228
+ 重试(该分支在 _can_retry 之前、不受 retries 约束),且
229
+ reset_sequence_for_partition 把 last_acked 一并弹掉(此后永远 -1),
230
+ 导致每次都判成 retention-based → 无限重试(现场转了 2 分钟)。
231
+ 2. muted.remove KeyError:幂等下 guarantee_message_order=True,批次被
232
+ 双重完成(本地 delivery timeout 一次 + broker 迟到响应一次)时
233
+ _dispatch_error 尾部裸 muted.remove(tp) 第二次抛 KeyError,直接炸
234
+ 出 "Uncaught error in kafka producer I/O thread"。
235
+ 日志管道不需要 exactly-once(可容忍重复/丢失),关掉幂等后 UPIE 走
236
+ 非重试分支直接 fail 进 errback(自愈信号),muted 集合彻底不用。
223
237
  """
224
238
  return KafkaProducer(
225
239
  bootstrap_servers=self._bootstrap_servers,
@@ -229,6 +243,7 @@ class KafkaSink:
229
243
  max_block_ms=5000,
230
244
  retries=5,
231
245
  request_timeout_ms=30000,
246
+ enable_idempotence=False,
232
247
  # delivery_timeout 由默认 120s 收紧到 45s:断网时批次最多积压 45s 就过期并触发
233
248
  # errback(自愈信号),而不是静默积压 2 分钟后才批量报错。约束:必须大于
234
249
  # linger_ms + request_timeout_ms(5 + 30000),45s 满足。
@@ -430,6 +445,11 @@ class KafkaSink:
430
445
  "sySpanId": "",
431
446
  "syBizId": "",
432
447
  "ptxId": "",
448
+ # 2026-10-14 补齐(Java starter-log 字段表 30 项全集对照):
449
+ # pSpanId/pAgentId 在 Java 侧从 MDC PspanId / pinpoint.agentId
450
+ # 读,常态空但键存在 — 缺键会让 ES mapping/平台列两侧不齐
451
+ "pSpanId": "",
452
+ "pAgentId": "",
433
453
  "time": record["time"].strftime("%Y-%m-%d %H:%M:%S,%f")[:-3],
434
454
  "day": datetime.now().strftime("%Y.%m.%d"),
435
455
  "msg": _msg_str,
@@ -570,11 +590,16 @@ class KafkaSink:
570
590
  引用,故全程用 _rebuild_lock 保护,并置 _rebuild_in_progress 让 write()
571
591
  在此期间跳过惰性建 producer,避免重复构造。
572
592
 
573
- 关键:close() 内部会 join sender 线程(sender.join(timeout)),而本方法
593
+ 关键一:close() 内部会 join sender 线程(sender.join(timeout)),而本方法
574
594
  正是从 sender 线程的 errback 链调进来的——若在锁内直接 close 旧 producer
575
- 会触发“在自己线程里 join 自己”的死锁。所以 flush/close 必须放在锁外,
576
- 且把 _rebuild_in_progress 始终维持到新 producer 就位,避免 join 期间又有
577
- write() 介入。绝不在锁内做 close 这种长阻塞。"""
595
+ 会触发"在自己线程里 join 自己"的死锁。所以 flush/close 必须放在锁外。
596
+
597
+ 关键二(2026-10-14 生产事故复盘):只放锁外还不够——errback 同步执行
598
+ flush(5s)+close(10s) 会让 kafka 的 IO 线程卡 15s(现场 14.9s,selector
599
+ 慢任务看门狗连报 blocking the event loop),期间网络收发全部停摆。因此
600
+ 整个 关旧/建新 挪到独立 daemon 线程执行,errback 立即返回。_rebuild_
601
+ in_progress 维持到新 producer 就位,期间 write() 跳过(日志丢弃语义与
602
+ 原重建窗口一致)。"""
578
603
  with self._rebuild_lock:
579
604
  if self._rebuild_in_progress:
580
605
  return # 已有重建在进行,不重入
@@ -583,7 +608,17 @@ class KafkaSink:
583
608
  # 摘引用:write() 见到 _producer is None 且 _rebuild_in_progress 会跳过
584
609
  self._producer = None
585
610
  self._producer_obj = None
586
- # flush/close 放锁外:close() 会 join sender 线程,绝不能在 sender 线程里持锁做
611
+ # 关旧/建新全在独立线程:绝不阻塞 kafka IO 线程(errback 调用方)与 loguru 线程
612
+ threading.Thread(
613
+ target=self._rebuild_worker, args=(old,),
614
+ name="kafka-sink-rebuild", daemon=True).start()
615
+
616
+ def _rebuild_worker(self, old):
617
+ """重建工作体(独立 daemon 线程内执行)。
618
+
619
+ close() 会 join sender 线程,绝不能在 sender 线程里做;bootstrap 不可达
620
+ 会抛,吞掉,下次失败计数还会再触发。"""
621
+ # flush/close 放锁外且放本线程:join sender 线程最长 ~15s,别拖任何人
587
622
  if old is not None:
588
623
  try:
589
624
  old.flush(timeout=5)
@@ -730,6 +765,13 @@ class KafkaLogger(metaclass=SingletonMeta):
730
765
  intercept_handler = _InterceptHandler()
731
766
  logging.root.handlers = [intercept_handler]
732
767
  logging.root.setLevel(logging.WARNING)
768
+ # kafka-python 内部日志降噪兜底(正常由 services.setup_logger_levels()
769
+ # 在插件链更早处设置;此处幂等重申):故障期间库的 WARNING 风暴
770
+ # (UnknownProducerIdError 重试/selector 慢任务/批次过期)经 root 桥接
771
+ # 回灌 loguru 后又要发往同一故障 topic,形成放大回路(2026-10-14 复盘)。
772
+ for _name in ("kafka", "kafka.net", "kafka.net.selector",
773
+ "kafka.net.connection", "kafka.producer"):
774
+ logging.getLogger(_name).setLevel(logging.ERROR)
733
775
 
734
776
  sys.excepthook = KafkaLogger._handle_exception
735
777
  # sys.excepthook 只管主线程;工作线程的未捕获异常走 threading.excepthook
@@ -6,9 +6,15 @@ def setup_logger_levels():
6
6
  # Nacos 客户端:仅输出WARNING及以上(屏蔽INFO级的心跳/注册日志)
7
7
  logging.getLogger("nacos.client").setLevel(logging.WARNING)
8
8
 
9
- # Kafka Python客户端:屏蔽INFO级的连接/版本检测日志
10
- logging.getLogger("kafka.net.connection").setLevel(logging.WARNING)
11
- logging.getLogger("kafka.producer").setLevel(logging.WARNING)
9
+ # Kafka Python客户端:屏蔽INFO级的连接/版本检测日志。
10
+ # kafka.* 整族压到 ERROR(2026-10-14 生产事故复盘):故障期间库自身持续打
11
+ # WARNING——retention 型 UnknownProducerIdError 风暴(每秒多条)、selector
12
+ # 慢任务看门狗(kafka.net.selector)、批次过期——经 stdlib root 桥接回灌
13
+ # loguru 后又要发往同一个正在故障的 topic,形成放大回路。这些 WARNING 的
14
+ # 价值在 ERR 都有(sender 线程崩溃/批次最终失败),全部静音。
15
+ for _name in ("kafka", "kafka.net", "kafka.net.selector",
16
+ "kafka.net.connection", "kafka.producer"):
17
+ logging.getLogger(_name).setLevel(logging.ERROR)
12
18
 
13
19
  # Uvicorn/FastAPI:屏蔽启动/应用初始化的INFO日志(保留ERROR/WARNING)
14
20
  # logging.getLogger("uvicorn").setLevel(logging.WARNING)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.10a10
3
+ Version: 0.2.10a12
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -352,6 +352,7 @@ tests/test_acp_tool.py
352
352
  tests/test_asyncio_logging.py
353
353
  tests/test_config_change_notifier.py
354
354
  tests/test_hotreload_snapshot.py
355
+ tests/test_kafka_upie_fix.py
355
356
  tests/test_llm_apikey_contextvar.py
356
357
  tests/test_log_masker.py
357
358
  tests/test_resilient_pg_saver.py