sycommon-python-lib 0.2.10a19__tar.gz → 0.2.10a21__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 (423) hide show
  1. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/PKG-INFO +8 -8
  2. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/pyproject.toml +15 -8
  3. sycommon_python_lib-0.2.10a21/src/sycommon/heartbeat_process/__init__.py +23 -0
  4. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/heartbeat_process/heartbeat_config.py +3 -42
  5. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +7 -13
  6. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +7 -206
  7. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/kafka_log.py +44 -4
  8. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/log_masker.py +30 -13
  9. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/traceid.py +21 -2
  10. sycommon_python_lib-0.2.10a21/src/sycommon/synacos/nacos_async_loop.py +110 -0
  11. sycommon_python_lib-0.2.10a21/src/sycommon/synacos/nacos_client_base.py +353 -0
  12. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/nacos_config_manager.py +73 -60
  13. sycommon_python_lib-0.2.10a21/src/sycommon/synacos/nacos_connection_alert_listener.py +132 -0
  14. sycommon_python_lib-0.2.10a21/src/sycommon/synacos/nacos_service.py +157 -0
  15. sycommon_python_lib-0.2.10a21/src/sycommon/synacos/nacos_service_discovery.py +127 -0
  16. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/nacos_service_registration.py +22 -50
  17. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon_python_lib.egg-info/PKG-INFO +8 -8
  18. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon_python_lib.egg-info/SOURCES.txt +2 -1
  19. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon_python_lib.egg-info/requires.txt +7 -7
  20. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_log_masker.py +72 -2
  21. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_skill_regex_upgrade.py +13 -11
  22. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_sylogger_fixes.py +124 -36
  23. sycommon_python_lib-0.2.10a19/src/sycommon/heartbeat_process/__init__.py +0 -67
  24. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_client_base.py +0 -177
  25. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -245
  26. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_service.py +0 -291
  27. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_service_discovery.py +0 -245
  28. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/README.md +0 -0
  29. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/setup.cfg +0 -0
  30. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/__init__.py +0 -0
  31. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/cli.py +0 -0
  32. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/core/__init__.py +0 -0
  33. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/core/console.py +0 -0
  34. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/core/models.py +0 -0
  35. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/core/project.py +0 -0
  36. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/core/utils.py +0 -0
  37. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/__init__.py +0 -0
  38. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/README.md.tpl +0 -0
  39. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/__init__.py +0 -0
  40. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  44. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  46. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  47. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/api/query.py.tpl +0 -0
  48. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/app.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/db/service.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  57. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/model/parse.py.tpl +0 -0
  58. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  59. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  60. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/.env.tpl +0 -0
  61. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/.gitignore.tpl +0 -0
  62. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/Dockerfile.tpl +0 -0
  63. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/README.md.tpl +0 -0
  64. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/__init__.py +0 -0
  65. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/app.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/app.yaml.tpl +0 -0
  67. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/client/__init__.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/model/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/model/file_info.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/base/requirements.txt.tpl +0 -0
  72. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/README.md.tpl +0 -0
  73. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/__init__.py +0 -0
  74. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/app.py.tpl +0 -0
  75. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  76. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  77. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  78. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  79. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/README.md.tpl +0 -0
  80. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/__init__.py +0 -0
  81. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/api/__init__.py.tpl +0 -0
  82. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/api/echo.py.tpl +0 -0
  83. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  84. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  85. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/app.py.tpl +0 -0
  86. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/client/__init__.py.tpl +0 -0
  87. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/model/__init__.py.tpl +0 -0
  88. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  89. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/command/templates/web/tools/mq.py.tpl +0 -0
  90. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/nexus/__init__.py +0 -0
  91. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/__init__.py +0 -0
  92. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/__main__.py +0 -0
  93. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/acp/__init__.py +0 -0
  94. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/acp/config.py +0 -0
  95. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/acp/executor.py +0 -0
  96. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/acp/registry.py +0 -0
  97. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/acp/server.py +0 -0
  98. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/agents/__init__.py +0 -0
  99. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/agents/factory.py +0 -0
  100. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/agents/prompts.py +0 -0
  101. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/__init__.py +0 -0
  102. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/browser.py +0 -0
  103. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/__init__.py +0 -0
  104. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/console.py +0 -0
  105. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/dom.py +0 -0
  106. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/network.py +0 -0
  107. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  108. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/performance.py +0 -0
  109. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  110. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/client.py +0 -0
  111. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/protocol.py +0 -0
  112. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cdp/repl.py +0 -0
  113. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/cli.py +0 -0
  114. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/__init__.py +0 -0
  115. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/acp_cmd.py +0 -0
  116. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/acp_serve_cmd.py +0 -0
  117. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/cdp_cmd.py +0 -0
  118. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/chat_cmd.py +0 -0
  119. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/create_cmd.py +0 -0
  120. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/evaluate_cmd.py +0 -0
  121. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/init_cmd.py +0 -0
  122. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/memory_cmd.py +0 -0
  123. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/resume_cmd.py +0 -0
  124. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/rollback_cmd.py +0 -0
  125. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/commands/run_cmd.py +0 -0
  126. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/__init__.py +0 -0
  127. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/backend.py +0 -0
  128. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/config.py +0 -0
  129. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/display.py +0 -0
  130. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/git_integration.py +0 -0
  131. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/llm.py +0 -0
  132. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/core/state.py +0 -0
  133. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/evaluate/__init__.py +0 -0
  134. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/evaluate/api_evaluator.py +0 -0
  135. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/memory/__init__.py +0 -0
  136. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/memory/compressor.py +0 -0
  137. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/memory/full.py +0 -0
  138. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/memory/hot.py +0 -0
  139. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/memory/manager.py +0 -0
  140. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/memory/warm.py +0 -0
  141. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/mode/__init__.py +0 -0
  142. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/mode/create.py +0 -0
  143. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/mode/optimize.py +0 -0
  144. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/models/__init__.py +0 -0
  145. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/models/config_models.py +0 -0
  146. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/__init__.py +0 -0
  147. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/baseline_tests.py +0 -0
  148. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/checkpoint.py +0 -0
  149. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/convergence.py +0 -0
  150. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/diagnosis.py +0 -0
  151. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/engine.py +0 -0
  152. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/environment.py +0 -0
  153. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/experience.py +0 -0
  154. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/harness_prompts.py +0 -0
  155. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/history.py +0 -0
  156. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/optimization_logger.py +0 -0
  157. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/pre_validation.py +0 -0
  158. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/reward.py +0 -0
  159. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/strategy_bandit.py +0 -0
  160. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/strategy_generator.py +0 -0
  161. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/rl/strategy_prompts.py +0 -0
  162. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/simple_chat_agent.py +0 -0
  163. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycli/skills/__init__.py +0 -0
  164. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/__init__.py +0 -0
  165. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/__init__.py +0 -0
  166. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/acp/__init__.py +0 -0
  167. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/acp/client.py +0 -0
  168. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/acp/fetch.py +0 -0
  169. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/acp/server_adapter.py +0 -0
  170. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/acp/ssh_init.py +0 -0
  171. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/acp/tool.py +0 -0
  172. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/agent_manager.py +0 -0
  173. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/chat_events.py +0 -0
  174. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/deep_agent.py +0 -0
  175. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/mcp/__init__.py +0 -0
  176. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/mcp/models.py +0 -0
  177. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  178. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/middleware/model_request_prep.py +0 -0
  179. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/middleware/sandbox_path_guard.py +0 -0
  180. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/middleware/sensitive_guard.py +0 -0
  181. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/middleware/skill_write_guard.py +0 -0
  182. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/multi_agent_team.py +0 -0
  183. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/reasoning_content_patch.py +0 -0
  184. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/resume_compactor.py +0 -0
  185. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/__init__.py +0 -0
  186. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/consistent_hash.py +0 -0
  187. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  188. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  189. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  190. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  191. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  192. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/sandbox/session.py +0 -0
  193. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/skills_retry_patch.py +0 -0
  194. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/agent/summarization_utils.py +0 -0
  195. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/__init__.py +0 -0
  196. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/alert_sdk.py +0 -0
  197. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/ao.py +0 -0
  198. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/api.py +0 -0
  199. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/bridge.py +0 -0
  200. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/env.py +0 -0
  201. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/guard.py +0 -0
  202. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/monitor.py +0 -0
  203. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/queue.py +0 -0
  204. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/ratelimit.py +0 -0
  205. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/sdk.py +0 -0
  206. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/alert/sdk_selfcheck.py +0 -0
  207. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/auth/__init__.py +0 -0
  208. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/auth/ldap_service.py +0 -0
  209. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/auth/oa_cache.py +0 -0
  210. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/auth/oa_crypto.py +0 -0
  211. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/auth/oa_service.py +0 -0
  212. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  213. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/ACPAgentConfig.py +0 -0
  214. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/Config.py +0 -0
  215. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/DatabaseConfig.py +0 -0
  216. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/EgressPolicyConfig.py +0 -0
  217. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  218. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/EmbeddingConfig.py +0 -0
  219. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/LLMConfig.py +0 -0
  220. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/LangfuseConfig.py +0 -0
  221. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/MQConfig.py +0 -0
  222. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/PgConfig.py +0 -0
  223. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/RedisConfig.py +0 -0
  224. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/RerankerConfig.py +0 -0
  225. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/SentryConfig.py +0 -0
  226. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/XxlJobConfig.py +0 -0
  227. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/__init__.py +0 -0
  228. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/config/config_change_notifier.py +0 -0
  229. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/async_base_db_service.py +0 -0
  230. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/async_database_service.py +0 -0
  231. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/base_db_service.py +0 -0
  232. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/database_service.py +0 -0
  233. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/elasticsearch_service.py +0 -0
  234. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  235. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/redis_service.py +0 -0
  236. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/resilient_pg_saver.py +0 -0
  237. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/database/token_usage_db_service.py +0 -0
  238. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/health/__init__.py +0 -0
  239. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/health/health_check.py +0 -0
  240. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/health/metrics.py +0 -0
  241. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/health/ping.py +0 -0
  242. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/health/readiness.py +0 -0
  243. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/__init__.py +0 -0
  244. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/embedding.py +0 -0
  245. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/get_llm.py +0 -0
  246. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/llm_logger.py +0 -0
  247. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/llm_tokens.py +0 -0
  248. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  249. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  250. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  251. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/struct_token.py +0 -0
  252. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/sy_langfuse.py +0 -0
  253. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  254. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  255. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/token_usage_es_service.py +0 -0
  256. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  257. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/token_utils.py +0 -0
  258. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/llm/usage_token.py +0 -0
  259. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/__init__.py +0 -0
  260. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/async_sql_logger.py +0 -0
  261. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/bounded_kafka_sink.py +0 -0
  262. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/bounded_stdout_sink.py +0 -0
  263. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/logger_levels.py +0 -0
  264. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/logger_wrapper.py +0 -0
  265. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/process_logger.py +0 -0
  266. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/logging/sql_logger.py +0 -0
  267. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/mcp_server/__init__.py +0 -0
  268. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/mcp_server/server.py +0 -0
  269. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/__init__.py +0 -0
  270. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/context.py +0 -0
  271. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/cors.py +0 -0
  272. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/docs.py +0 -0
  273. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/egress_wall.py +0 -0
  274. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/exception.py +0 -0
  275. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/middleware.py +0 -0
  276. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/monitor_memory.py +0 -0
  277. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/mq.py +0 -0
  278. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/sandbox.py +0 -0
  279. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/sandbox_gateway.py +0 -0
  280. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/timeout.py +0 -0
  281. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/token_tracking.py +0 -0
  282. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  283. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/__init__.py +0 -0
  284. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/base_http.py +0 -0
  285. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/log.py +0 -0
  286. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/mcp_server_config.py +0 -0
  287. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/mqlistener_config.py +0 -0
  288. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/mqmsg_model.py +0 -0
  289. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/mqsend_config.py +0 -0
  290. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/sandbox.py +0 -0
  291. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/sso_user.py +0 -0
  292. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/token_usage.py +0 -0
  293. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/token_usage_mysql.py +0 -0
  294. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/models/xxljob_handler_config.py +0 -0
  295. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/notice/__init__.py +0 -0
  296. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  297. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/notice/wecom_message.py +0 -0
  298. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/agent/loop.py +0 -0
  299. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/agent/types.py +0 -0
  300. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/coding/__init__.py +0 -0
  301. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/coding/mcpserver.py +0 -0
  302. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/json_parse.py +0 -0
  303. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/message.py +0 -0
  304. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/model.py +0 -0
  305. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/retry.py +0 -0
  306. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/transcript.py +0 -0
  307. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/transform.py +0 -0
  308. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/usage.py +0 -0
  309. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/core/validation.py +0 -0
  310. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/mcp/__init__.py +0 -0
  311. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/mcp/client.py +0 -0
  312. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/mcp/jsonrpc.py +0 -0
  313. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/mcp/transport.py +0 -0
  314. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/__init__.py +0 -0
  315. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/anthropic_client.py +0 -0
  316. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/bedrock_client.py +0 -0
  317. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/faux.py +0 -0
  318. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/google_client.py +0 -0
  319. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/kimi_client.py +0 -0
  320. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/pi/providers/openai_client.py +0 -0
  321. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/delay_queue.py +0 -0
  322. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/mq_store.py +0 -0
  323. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  324. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbit_management_client.py +0 -0
  325. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  326. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  327. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  328. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  329. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  330. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  331. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  332. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  333. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/rabbitmq/topic_registry.py +0 -0
  334. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/sentry/__init__.py +0 -0
  335. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/sentry/sy_sentry.py +0 -0
  336. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/services.py +0 -0
  337. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/sse/__init__.py +0 -0
  338. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/sse/event.py +0 -0
  339. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/sse/sse.py +0 -0
  340. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/__init__.py +0 -0
  341. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/example.py +0 -0
  342. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/example2.py +0 -0
  343. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/feign.py +0 -0
  344. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/feign_client.py +0 -0
  345. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/synacos/param.py +0 -0
  346. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/deep_agent_server.py +0 -0
  347. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_backend_factory_compat.py +0 -0
  348. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consistent_hash.py +0 -0
  349. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consume_dedup.py +0 -0
  350. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consumer_broker_health.py +0 -0
  351. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
  352. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  353. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consumer_recovery_fix.py +0 -0
  354. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_consumer_tags_sync.py +0 -0
  355. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_db_keepalive.py +0 -0
  356. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_deep_agent.py +0 -0
  357. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  358. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_email.py +0 -0
  359. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_encoding_cache.py +0 -0
  360. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_env_tenant_helper.py +0 -0
  361. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_exp_concurrent_migrate.py +0 -0
  362. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_exp_delete_queue_with_consumers.py +0 -0
  363. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_fault_injection_real.py +0 -0
  364. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_fix_verification.py +0 -0
  365. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_heartbeat_timeout.py +0 -0
  366. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_integration_real_broker.py +0 -0
  367. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_mcp_server.py +0 -0
  368. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  369. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_mq.py +0 -0
  370. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_mq_config_driven.py +0 -0
  371. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_nacos_llm_real.py +0 -0
  372. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_oa_login.py +0 -0
  373. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_queue_priority_fallback.py +0 -0
  374. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_queue_priority_upgrade_timing.py +0 -0
  375. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_real_summarization.py +0 -0
  376. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_reconnect_scenarios.py +0 -0
  377. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_sandbox_glob_hardening.py +0 -0
  378. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_services_plugin_defaults.py +0 -0
  379. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_summarization_config.py +0 -0
  380. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_summarization_real.py +0 -0
  381. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
  382. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_upgrade_aio_pika.py +0 -0
  383. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_upgrade_langgraph_stream.py +0 -0
  384. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tests/test_upgrade_verification.py +0 -0
  385. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/__init__.py +0 -0
  386. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/async_utils.py +0 -0
  387. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/docs.py +0 -0
  388. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/env.py +0 -0
  389. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/merge_headers.py +0 -0
  390. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/snowflake.py +0 -0
  391. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/sso_token.py +0 -0
  392. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/syemail.py +0 -0
  393. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/time_utils.py +0 -0
  394. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/timing.py +0 -0
  395. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/tools/user_id.py +0 -0
  396. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/xxljob/__init__.py +0 -0
  397. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon/xxljob/xxljob_service.py +0 -0
  398. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  399. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  400. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  401. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_acp_tool.py +0 -0
  402. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_asyncio_logging.py +0 -0
  403. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_config_change_notifier.py +0 -0
  404. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_frame_alignment.py +0 -0
  405. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_hotreload_snapshot.py +0 -0
  406. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_kafka_upie_fix.py +0 -0
  407. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_llm_apikey_contextvar.py +0 -0
  408. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_print_capture.py +0 -0
  409. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_resilient_pg_saver.py +0 -0
  410. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_sandbox_path_guard.py +0 -0
  411. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_sensitive_guard.py +0 -0
  412. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_simple_chat_agent.py +0 -0
  413. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_skill_write_guard.py +0 -0
  414. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_sql_params_full.py +0 -0
  415. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_streaming_e2e.py +0 -0
  416. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_summary_echo_break_loop.py +0 -0
  417. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_sycli.py +0 -0
  418. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_sync_skills_to_sandbox.py +0 -0
  419. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_time_utils.py +0 -0
  420. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_traceid_omit_base64.py +0 -0
  421. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_unicode_decode_regress.py +0 -0
  422. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/tests/test_upload_concurrency.py +0 -0
  423. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a21}/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.10a19
3
+ Version: 0.2.10a21
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -14,17 +14,17 @@ Requires-Dist: elasticsearch==9.5.1
14
14
  Requires-Dist: fastapi==0.143.0
15
15
  Requires-Dist: jinja2==3.1.6
16
16
  Requires-Dist: kafka-python==3.0.11
17
- Requires-Dist: langchain==1.4.6
18
- Requires-Dist: langchain-core==1.6.12
19
- Requires-Dist: langchain-openai==1.7.2
20
- Requires-Dist: langfuse==5.0.2
21
- Requires-Dist: langgraph==1.2.16
17
+ Requires-Dist: langchain==1.4.7
18
+ Requires-Dist: langchain-core==1.7.0
19
+ Requires-Dist: langchain-openai==1.7.3
20
+ Requires-Dist: langfuse==5.0.4
21
+ Requires-Dist: langgraph==1.2.18
22
22
  Requires-Dist: langgraph-checkpoint-postgres==3.2.0
23
23
  Requires-Dist: langgraph-checkpoint-redis==0.5.2
24
24
  Requires-Dist: ldap3==2.9.1
25
25
  Requires-Dist: loguru==0.7.3
26
- Requires-Dist: mysql-connector-python==26.7.0
27
- Requires-Dist: nacos-sdk-python<3.0,==2.0.11
26
+ Requires-Dist: mysql-connector-python==26.10.0
27
+ Requires-Dist: nacos-sdk-python==3.2.0
28
28
  Requires-Dist: psutil==7.2.2
29
29
  Requires-Dist: pyxxl==0.4.8
30
30
  Requires-Dist: pydantic==2.14.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.10a19"
3
+ version = "0.2.10a21"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -15,17 +15,17 @@ dependencies = [
15
15
  "fastapi==0.143.0",
16
16
  "jinja2==3.1.6",
17
17
  "kafka-python==3.0.11",
18
- "langchain==1.4.6",
19
- "langchain-core==1.6.12",
20
- "langchain-openai==1.7.2",
21
- "langfuse==5.0.2",
22
- "langgraph==1.2.16",
18
+ "langchain==1.4.7",
19
+ "langchain-core==1.7.0",
20
+ "langchain-openai==1.7.3",
21
+ "langfuse==5.0.4",
22
+ "langgraph==1.2.18",
23
23
  "langgraph-checkpoint-postgres==3.2.0",
24
24
  "langgraph-checkpoint-redis==0.5.2",
25
25
  "ldap3==2.9.1",
26
26
  "loguru==0.7.3",
27
- "mysql-connector-python==26.7.0",
28
- "nacos-sdk-python==2.0.11,<3.0",
27
+ "mysql-connector-python==26.10.0",
28
+ "nacos-sdk-python==3.2.0",
29
29
  "psutil==7.2.2",
30
30
  "pyxxl==0.4.8",
31
31
  "pydantic==2.14.1",
@@ -60,8 +60,15 @@ build-backend = "setuptools.build_meta"
60
60
  [dependency-groups]
61
61
  dev = [
62
62
  "pytest>=9.0.3",
63
+ "pytest-asyncio>=1.3.0",
63
64
  ]
64
65
 
66
+ # asyncio_mode=auto:src/sycommon/tests 内的 async 测试(如
67
+ # test_consumer_loss_rootcause.py)无 @pytest.mark.asyncio 标记,
68
+ # STRICT 模式下直接报 "not natively supported"(2026-10-28 实测)。
69
+ [tool.pytest.ini_options]
70
+ asyncio_mode = "auto"
71
+
65
72
  [project.scripts]
66
73
  sycommon = "command.cli:main"
67
74
  sycli = "sycli.cli:main"
@@ -0,0 +1,23 @@
1
+ # -*- coding: utf-8 -*-
2
+ """心跳进程模块(RabbitMQ 连接监控部分保留)。
3
+
4
+ 历史:此进程原先同时承担 Nacos 心跳与 RabbitMQ 连接监控。迁移到
5
+ nacos-sdk-python 3.x(gRPC)后,Nacos 侧保活/断线重连/重注册全部由
6
+ SDK 内部完成(connection keepalive + redo 自动补注册),应用层心跳
7
+ 体系(线程心跳 + 本进程的 Nacos 心跳)已整体删除,本进程仅剩
8
+ RabbitMQ 连通性监控职责,由 RabbitMQService 按进程模式开关启用。
9
+ """
10
+
11
+ from sycommon.heartbeat_process.heartbeat_process_manager import HeartbeatProcessManager
12
+ from sycommon.heartbeat_process.heartbeat_config import (
13
+ RabbitMQMonitorConfig,
14
+ LogConfig
15
+ )
16
+
17
+ __all__ = [
18
+ 'HeartbeatProcessManager',
19
+ 'RabbitMQMonitorConfig',
20
+ 'LogConfig',
21
+ ]
22
+
23
+ __version__ = '2.0.0'
@@ -4,54 +4,15 @@
4
4
 
5
5
  用于在主进程和心跳进程之间传递配置信息。
6
6
  使用 dataclass 确保配置可序列化(multiprocessing 需要可序列化的对象)。
7
+
8
+ 注:Nacos 心跳配置(NacosHeartbeatConfig)已随 nacos-sdk-python 3.x
9
+ gRPC 迁移删除——SDK 内建连接保活与断线自动重注册,不再有应用层心跳。
7
10
  """
8
11
 
9
12
  from dataclasses import dataclass, field
10
13
  from typing import Optional, Dict, Any
11
14
 
12
15
 
13
- @dataclass
14
- class NacosHeartbeatConfig:
15
- """Nacos 心跳配置(可序列化)
16
-
17
- 用于独立进程中的 Nacos 心跳发送。
18
- 包含建立 Nacos 连接和发送心跳所需的所有信息。
19
- """
20
- server_addresses: str # Nacos 服务器地址,如 "nacos.example.com:8848"
21
- namespace_id: str # 命名空间 ID
22
- service_name: str # 服务名称
23
- real_ip: str # 服务真实 IP
24
- port: int # 服务端口
25
- version: Optional[str] = None # 服务版本
26
- heartbeat_interval: int = 15 # 心跳间隔(秒)
27
- heartbeat_timeout: int = 15 # 心跳超时(秒)
28
- username: Optional[str] = None # Nacos 用户名
29
- password: Optional[str] = None # Nacos 密码
30
-
31
- @classmethod
32
- def from_dict(cls, config: dict) -> 'NacosHeartbeatConfig':
33
- """从字典创建配置对象
34
-
35
- Args:
36
- config: Nacos 配置字典,通常来自 NacosService 的配置
37
-
38
- Returns:
39
- NacosHeartbeatConfig 实例
40
- """
41
- return cls(
42
- server_addresses=config.get('registerIp', ''),
43
- namespace_id=config.get('namespaceId', ''),
44
- service_name=config.get('serviceName', ''),
45
- real_ip=config.get('ip', ''),
46
- port=int(config.get('port', 8080)),
47
- version=config.get('version'),
48
- heartbeat_interval=int(config.get('heartbeatInterval', 15)),
49
- heartbeat_timeout=int(config.get('heartbeatTimeout', 15)),
50
- username=config.get('username'),
51
- password=config.get('password')
52
- )
53
-
54
-
55
16
  @dataclass
56
17
  class RabbitMQMonitorConfig:
57
18
  """RabbitMQ 连接监控配置(可序列化)
@@ -8,7 +8,7 @@
8
8
 
9
9
  注意:
10
10
  - MQ 消息消费/发送仍在主进程
11
- - 心跳进程只负责 Nacos 心跳和 MQ 连接监控
11
+ - 心跳进程只负责 MQ 连接监控(Nacos 心跳已随 gRPC SDK 迁移移除)
12
12
  - 通过环境变量 HEARTBEAT_PROCESS_MODE 或配置启用进程模式
13
13
  """
14
14
 
@@ -20,7 +20,6 @@ from multiprocessing.synchronize import Event as EventType
20
20
  from typing import Optional
21
21
 
22
22
  from sycommon.heartbeat_process.heartbeat_config import (
23
- NacosHeartbeatConfig,
24
23
  RabbitMQMonitorConfig,
25
24
  LogConfig
26
25
  )
@@ -66,12 +65,12 @@ class HeartbeatProcessManager:
66
65
 
67
66
  注意:
68
67
  - MQ 消息消费/发送仍在主进程
69
- - 心跳进程只负责 Nacos 心跳和 MQ 连接监控
68
+ - 心跳进程只负责 MQ 连接监控
70
69
 
71
70
  使用方式:
72
71
  # 方式一:代码开关
73
72
  HeartbeatProcessManager.enable_process_mode(True)
74
- HeartbeatProcessManager.start(nacos_config=config)
73
+ HeartbeatProcessManager.start(rabbitmq_config=config)
75
74
 
76
75
  # 方式二:环境变量
77
76
  os.environ['HEARTBEAT_PROCESS_MODE'] = 'true'
@@ -129,14 +128,12 @@ class HeartbeatProcessManager:
129
128
  @classmethod
130
129
  def start(
131
130
  cls,
132
- nacos_config: Optional[NacosHeartbeatConfig] = None,
133
131
  rabbitmq_config: Optional[RabbitMQMonitorConfig] = None,
134
132
  log_config: Optional[LogConfig] = None
135
133
  ) -> bool:
136
- """启动心跳进程
134
+ """启动心跳进程(RabbitMQ 连接监控)
137
135
 
138
136
  Args:
139
- nacos_config: Nacos 心跳配置
140
137
  rabbitmq_config: RabbitMQ 连接监控配置
141
138
  log_config: 日志配置(用于在独立进程中初始化日志系统)
142
139
 
@@ -144,7 +141,7 @@ class HeartbeatProcessManager:
144
141
  bool: 启动是否成功
145
142
 
146
143
  注意:
147
- - 心跳进程启动后,Nacos 心跳和 MQ 连接监控将在独立进程运行
144
+ - 心跳进程启动后,MQ 连接监控将在独立进程运行
148
145
  - MQ 消息的消费和发送仍在主进程
149
146
  - 主进程退出时会自动清理子进程
150
147
  """
@@ -156,7 +153,7 @@ class HeartbeatProcessManager:
156
153
  logger.warning("心跳进程已在运行")
157
154
  return True
158
155
 
159
- if nacos_config is None and rabbitmq_config is None:
156
+ if rabbitmq_config is None:
160
157
  logger.warning("未提供任何配置,跳过启动心跳进程")
161
158
  return False
162
159
 
@@ -170,7 +167,7 @@ class HeartbeatProcessManager:
170
167
  # 使用 fork 上下文创建进程
171
168
  cls._process = ctx.Process(
172
169
  target=cls._run_worker,
173
- args=(nacos_config, rabbitmq_config,
170
+ args=(rabbitmq_config,
174
171
  cls._stop_event, log_config),
175
172
  name="HeartbeatProcess",
176
173
  daemon=False # 非守护进程,确保能正确清理
@@ -191,7 +188,6 @@ class HeartbeatProcessManager:
191
188
 
192
189
  @staticmethod
193
190
  def _run_worker(
194
- nacos_config: Optional[NacosHeartbeatConfig],
195
191
  rabbitmq_config: Optional[RabbitMQMonitorConfig],
196
192
  stop_event: EventType,
197
193
  log_config: Optional[LogConfig] = None
@@ -201,7 +197,6 @@ class HeartbeatProcessManager:
201
197
  此函数在独立进程中执行。
202
198
 
203
199
  Args:
204
- nacos_config: Nacos 心跳配置
205
200
  rabbitmq_config: RabbitMQ 连接监控配置
206
201
  stop_event: 停止信号
207
202
  log_config: 日志配置
@@ -210,7 +205,6 @@ class HeartbeatProcessManager:
210
205
 
211
206
  worker = HeartbeatProcessWorker(
212
207
  stop_event=stop_event,
213
- nacos_config=nacos_config,
214
208
  rabbitmq_config=rabbitmq_config,
215
209
  log_config=log_config
216
210
  )
@@ -3,8 +3,10 @@
3
3
  心跳进程工作器
4
4
 
5
5
  在独立进程中运行,负责:
6
- 1. Nacos 心跳发送(定期向 Nacos 注册中心发送心跳)
7
- 2. RabbitMQ 连接存活监控(检查连接是否正常,发送告警)
6
+ 1. RabbitMQ 连接存活监控(检查连接是否正常,发送告警)
7
+
8
+ 注:Nacos 心跳已随 nacos-sdk-python 3.x gRPC 迁移删除——SDK 内建
9
+ 连接保活与断线自动重注册,不再有应用层心跳。
8
10
 
9
11
  不负责:
10
12
  - MQ 消息消费(在主进程中,业务逻辑可能 CPU 密集)
@@ -20,13 +22,10 @@
20
22
  import asyncio
21
23
  import signal
22
24
  import sys
23
- import threading
24
- import time
25
25
  from multiprocessing.synchronize import Event as EventType
26
26
  from typing import Optional
27
27
 
28
28
  from sycommon.heartbeat_process.heartbeat_config import (
29
- NacosHeartbeatConfig,
30
29
  RabbitMQMonitorConfig,
31
30
  LogConfig
32
31
  )
@@ -81,8 +80,7 @@ class HeartbeatProcessWorker:
81
80
  """心跳进程工作器 - 在独立进程中运行
82
81
 
83
82
  职责:
84
- 1. Nacos 心跳发送(定期向 Nacos 注册中心发送心跳)
85
- 2. RabbitMQ 连接监控(检查连接存活,发送告警)
83
+ 1. RabbitMQ 连接监控(检查连接存活,发送告警)
86
84
 
87
85
  不负责:
88
86
  - MQ 消息消费(在主进程中,业务逻辑可能 CPU 密集)
@@ -91,7 +89,6 @@ class HeartbeatProcessWorker:
91
89
 
92
90
  def __init__(
93
91
  self,
94
- nacos_config: Optional[NacosHeartbeatConfig] = None,
95
92
  rabbitmq_config: Optional[RabbitMQMonitorConfig] = None,
96
93
  stop_event: Optional[EventType] = None,
97
94
  log_config: Optional[LogConfig] = None
@@ -99,32 +96,18 @@ class HeartbeatProcessWorker:
99
96
  """初始化心跳进程工作器
100
97
 
101
98
  Args:
102
- nacos_config: Nacos 心跳配置
103
99
  rabbitmq_config: RabbitMQ 连接监控配置
104
100
  stop_event: 停止信号(multiprocessing.Event)
105
101
  log_config: 日志配置(用于初始化 SYLogger)
106
102
  """
107
- self.nacos_config = nacos_config
108
103
  self.rabbitmq_config = rabbitmq_config
109
104
  self.stop_event = stop_event
110
105
  self.log_config = log_config
111
106
 
112
- # Nacos 状态
113
- self.nacos_client = None
114
- self._nacos_heartbeat_thread: Optional[threading.Thread] = None
115
- self._nacos_alert_sent = False
116
- self._nacos_disconnect_count = 0
117
-
118
107
  # RabbitMQ 监控状态
119
108
  self._rabbitmq_alert_sent = False
120
109
  self._rabbitmq_disconnect_count = 0
121
110
 
122
- # 服务信息(用于告警)
123
- self._service_name = nacos_config.service_name if nacos_config else None
124
- self._service_host = None
125
- if nacos_config:
126
- self._service_host = f"{nacos_config.real_ip}:{nacos_config.port}"
127
-
128
111
  def run(self):
129
112
  """进程入口点
130
113
 
@@ -143,17 +126,13 @@ class HeartbeatProcessWorker:
143
126
 
144
127
  logger.info("心跳进程启动")
145
128
 
146
- # 3. 初始化并启动 Nacos 心跳
147
- if self.nacos_config:
148
- if self._init_nacos_client():
149
- self._start_nacos_heartbeat_thread()
150
129
 
151
- # 4. 启动 RabbitMQ 监控(asyncio 事件循环)
130
+ # 3. 启动 RabbitMQ 监控(asyncio 事件循环)
152
131
  if self.rabbitmq_config:
153
132
  self._run_rabbitmq_monitor()
154
133
  else:
155
134
  # 如果没有 RabbitMQ 配置,简单等待停止信号
156
- logger.info("未配置 RabbitMQ 监控,仅运行 Nacos 心跳")
135
+ logger.info("未配置 RabbitMQ 监控,等待停止信号")
157
136
  while not self.stop_event.is_set():
158
137
  self.stop_event.wait(timeout=1)
159
138
 
@@ -164,184 +143,6 @@ class HeartbeatProcessWorker:
164
143
  global logger
165
144
  logger.info(f"心跳进程收到信号 {signum},正在退出...")
166
145
 
167
- def _init_nacos_client(self) -> bool:
168
- """初始化 Nacos 客户端
169
-
170
- Returns:
171
- bool: 初始化是否成功
172
- """
173
- try:
174
- import nacos
175
- self.nacos_client = nacos.NacosClient(
176
- server_addresses=self.nacos_config.server_addresses,
177
- namespace=self.nacos_config.namespace_id,
178
- username=self.nacos_config.username,
179
- password=self.nacos_config.password
180
- )
181
- # SDK 默认单请求超时仅 3 秒,网络/DNS 抖动即抛
182
- # "All server are not available",放宽到 10 秒
183
- self.nacos_client.set_options(default_timeout=10)
184
- logger.info("Nacos 客户端初始化成功")
185
- return True
186
- except Exception as e:
187
- logger.error(f"Nacos 客户端初始化失败: {e}")
188
- return False
189
-
190
- def _start_nacos_heartbeat_thread(self):
191
- """启动 Nacos 心跳线程"""
192
- self._nacos_heartbeat_thread = threading.Thread(
193
- target=self._nacos_heartbeat_loop,
194
- name="NacosHeartbeatThread",
195
- daemon=True
196
- )
197
- self._nacos_heartbeat_thread.start()
198
- logger.info("Nacos 心跳线程已启动")
199
-
200
- def _nacos_heartbeat_loop(self):
201
- """Nacos 心跳循环
202
-
203
- 逻辑与现有的 NacosHeartbeatManager._send_heartbeat_loop() 一致。
204
- """
205
- consecutive_fail = 0
206
- consecutive_success = 0
207
-
208
- logger.info(
209
- f"Nacos 心跳循环启动 - "
210
- f"服务名: {self.nacos_config.service_name}, "
211
- f"间隔: {self.nacos_config.heartbeat_interval}秒"
212
- )
213
-
214
- while not self.stop_event.is_set():
215
- heartbeat_start_time = time.time()
216
-
217
- try:
218
- result = self._send_nacos_heartbeat()
219
-
220
- if result:
221
- consecutive_fail = 0
222
- consecutive_success += 1
223
- logger.info(
224
- f"Nacos 心跳成功,连续成功: {consecutive_success}次"
225
- )
226
-
227
- # 恢复通知
228
- if self._nacos_alert_sent and consecutive_success >= 1:
229
- self._nacos_alert_sent = False
230
- logger.info("Nacos 心跳已恢复,发送恢复通知")
231
- self._send_nacos_alert_sync(
232
- error_msg="心跳恢复正常",
233
- is_recovered=True,
234
- fail_count=0
235
- )
236
- else:
237
- consecutive_success = 0
238
- consecutive_fail += 1
239
- logger.warning(
240
- f"Nacos 心跳失败,连续失败: {consecutive_fail}次"
241
- )
242
- self._handle_nacos_failure(consecutive_fail)
243
-
244
- except Exception as e:
245
- consecutive_success = 0
246
- consecutive_fail += 1
247
- logger.error(f"Nacos 心跳异常: {e}")
248
- self._handle_nacos_failure(consecutive_fail)
249
-
250
- # 精确等待
251
- elapsed = time.time() - heartbeat_start_time
252
- remaining = max(0, self.nacos_config.heartbeat_interval - elapsed)
253
- if remaining > 0:
254
- self.stop_event.wait(remaining)
255
-
256
- logger.info("Nacos 心跳循环已停止")
257
-
258
- def _send_nacos_heartbeat(self) -> bool:
259
- """发送 Nacos 心跳
260
-
261
- Returns:
262
- bool: 心跳是否成功
263
- """
264
- if self.nacos_client is None:
265
- logger.warning("Nacos 客户端未初始化")
266
- return False
267
-
268
- try:
269
- result = self.nacos_client.send_heartbeat(
270
- service_name=self.nacos_config.service_name,
271
- ip=self.nacos_config.real_ip,
272
- port=int(self.nacos_config.port),
273
- cluster_name="DEFAULT",
274
- weight=1.0,
275
- metadata={"version": self.nacos_config.version} if self.nacos_config.version else None
276
- )
277
-
278
- if result:
279
- logger.debug(f"Nacos 心跳响应: {result}")
280
- return True
281
- else:
282
- logger.warning(f"Nacos 心跳返回空结果")
283
- return False
284
-
285
- except Exception as e:
286
- logger.error(f"Nacos 心跳发送异常: {e}")
287
- return False
288
-
289
- def _handle_nacos_failure(self, consecutive_fail: int):
290
- """处理 Nacos 心跳失败
291
-
292
- Args:
293
- consecutive_fail: 连续失败次数
294
- """
295
- # 连续失败 3 次后发送告警(仅发送一次)
296
- if consecutive_fail >= 3 and not self._nacos_alert_sent:
297
- self._nacos_alert_sent = True
298
- self._nacos_disconnect_count += 1
299
- logger.warning(
300
- f"Nacos 心跳连续失败{consecutive_fail}次,发送告警,"
301
- f"累计断开: {self._nacos_disconnect_count}次"
302
- )
303
- self._send_nacos_alert_sync(
304
- error_msg=f"心跳连续失败{consecutive_fail}次",
305
- is_recovered=False,
306
- fail_count=consecutive_fail
307
- )
308
-
309
- # 连续失败 5 次尝试重新初始化客户端
310
- if consecutive_fail >= 5:
311
- logger.error("Nacos 心跳连续失败5次,尝试重新初始化客户端")
312
- self._init_nacos_client()
313
-
314
- def _send_nacos_alert_sync(
315
- self,
316
- error_msg: str,
317
- is_recovered: bool,
318
- fail_count: int
319
- ):
320
- """同步发送 Nacos 告警
321
-
322
- 由于告警函数是异步的,需要创建新的事件循环来执行。
323
- """
324
- try:
325
- from sycommon.notice.uvicorn_monitor import send_nacos_disconnect_alert
326
-
327
- loop = asyncio.new_event_loop()
328
- asyncio.set_event_loop(loop)
329
- try:
330
- loop.run_until_complete(send_nacos_disconnect_alert(
331
- error_msg=error_msg,
332
- service_name=self.nacos_config.service_name,
333
- host=f"{self.nacos_config.real_ip}:{self.nacos_config.port}",
334
- disconnect_count=self._nacos_disconnect_count,
335
- fail_count=fail_count,
336
- is_recovered=is_recovered
337
- ))
338
- finally:
339
- loop.close()
340
-
341
- alert_type = "恢复" if is_recovered else "断开"
342
- logger.info(f"Nacos {alert_type}告警发送成功")
343
- except Exception as e:
344
- logger.error(f"发送 Nacos 告警失败: {e}")
345
146
 
346
147
  def _run_rabbitmq_monitor(self):
347
148
  """运行 RabbitMQ 连接监控(asyncio 事件循环)
@@ -481,7 +481,12 @@ class KafkaSink:
481
481
  # 与 trace/tenant 正文兜底共用,避免二次 json.loads。
482
482
  msg_obj = None
483
483
  try:
484
- _parsed = json.loads(record["message"])
484
+ # 🔴 ERROR 事件(str(message) 含 opt(exception=) 渲染的堆栈正文,
485
+ # 追加在 JSON 之后)整串 json.loads 会炸 "Extra data"——信封解析
486
+ # 全盘失效(ERROR 降级 INFO/丢 detail 的 2026-10-28 回归根因)。
487
+ # raw_decode 只取头部第一个完整 JSON 对象,尾部堆栈文本忽略
488
+ # (堆栈已由信封 detail 键携带,record.exception 在队列路径恒 None)。
489
+ _parsed = json.JSONDecoder().raw_decode(record["message"])[0]
485
490
  # 🔑 哨兵判定:仅 _log 信封(_sy_log_envelope=True)才解包;
486
491
  # 业务方传 JSON dict(即便含 message/trace_id 键)不当作信封
487
492
  # —— msg 原样透传整包 dict JSON,trace/tenant 不误读。
@@ -644,7 +649,14 @@ class KafkaSink:
644
649
  "reqSource": req_source,
645
650
  "serviceId": self.service_id,
646
651
  "logType": "biz",
647
- "logLevel": record["level"].name,
652
+ # 队列路径(_StrWithRecord 空 record)level.name 恒兜底 "INFO"
653
+ # —— ERROR 会被错标 INFO(平台按级别过滤时全部漏掉)。
654
+ # 信封正文 level 键兜底(_log/excepthook 路径都写)。
655
+ "logLevel": (
656
+ msg_obj.get("level")
657
+ if msg_obj is not None and msg_obj.get("level")
658
+ else record["level"].name
659
+ ),
648
660
  "className": class_name,
649
661
  "classShortName": _class_short,
650
662
  "method": caller_fn or record["function"],
@@ -863,7 +875,32 @@ class _InterceptHandler(logging.Handler):
863
875
  frame = frame.f_back
864
876
  depth += 1
865
877
 
866
- logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())
878
+ # 🔴 2026-10-28 残留闭合:裸文本经 BoundedKafkaSink 队列 str 化后
879
+ # level 恒兜底 INFO、exception 堆栈丢失(asyncio 兜底链 "Task
880
+ # exception was never retrieved" 即此路径)。包成 _sy_log_envelope
881
+ # 信封,write() 消费侧按哨兵解包回 level/detail/_threadName —— 与
882
+ # SYLogger._log / 三个 excepthook 发射器同款双通道机制。
883
+ # trace_id 不塞:留空走 write() 的 contextvar→Snowflake 既有兜底。
884
+ if not isinstance(level, str):
885
+ level = logging.getLevelName(record.levelno) or "INFO"
886
+ envelope: dict = {
887
+ "message": record.getMessage(),
888
+ "level": level,
889
+ "_sy_log_envelope": True,
890
+ }
891
+ if record.threadName:
892
+ envelope["_threadName"] = f"thread:{record.threadName}"
893
+ if record.exc_info and record.exc_info[0] is not None:
894
+ envelope["detail"] = "".join(
895
+ traceback.format_exception(*record.exc_info))
896
+ # opt(exception=...) 保留:stdout ERROR sink 仍靠它渲染彩色堆栈;
897
+ # 队列路径 str(message) 会在 JSON 后追加渲染文本,write() 的
898
+ # raw_decode 只取头部 JSON,尾部忽略(同 _log 路径)。
899
+ # stdout 侧可读性:JSON 信封一整行 + 下方渲染堆栈 —— 与 SYLogger._log
900
+ # 在生产 stdout 的既有形态一致(log_json 同样整行落 message),不引入
901
+ # 新的显示形态分歧。
902
+ logger.opt(depth=depth, exception=record.exc_info).log(
903
+ level, json.dumps(envelope, ensure_ascii=False))
867
904
 
868
905
 
869
906
  class KafkaLogger(metaclass=SingletonMeta):
@@ -1033,6 +1070,7 @@ class KafkaLogger(metaclass=SingletonMeta):
1033
1070
  "message": f"asyncio unhandled: {message}",
1034
1071
  "level": "ERROR",
1035
1072
  "detail": tb_str,
1073
+ "_sy_log_envelope": True,
1036
1074
  }, ensure_ascii=False)
1037
1075
 
1038
1076
  logger.opt(exception=True).error(error_msg)
@@ -1047,7 +1085,8 @@ class KafkaLogger(metaclass=SingletonMeta):
1047
1085
  error_msg = json.dumps({
1048
1086
  "trace_id": trace_id,
1049
1087
  "message": f"Uncaught exception: {exc_type.__name__}",
1050
- "level": "ERROR"
1088
+ "level": "ERROR",
1089
+ "_sy_log_envelope": True,
1051
1090
  }, ensure_ascii=False)
1052
1091
 
1053
1092
  logger.opt(exception=(exc_type, exc_value,
@@ -1071,6 +1110,7 @@ class KafkaLogger(metaclass=SingletonMeta):
1071
1110
  "level": "ERROR",
1072
1111
  "detail": "".join(traceback.format_exception(
1073
1112
  args.exc_type, args.exc_value, args.exc_traceback)),
1113
+ "_sy_log_envelope": True,
1074
1114
  }, ensure_ascii=False)
1075
1115
 
1076
1116
  logger.opt(exception=(args.exc_type, args.exc_value,