sycommon-python-lib 0.2.10a19__tar.gz → 0.2.10a20__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.10a20}/PKG-INFO +2 -2
  2. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/pyproject.toml +2 -2
  3. sycommon_python_lib-0.2.10a20/src/sycommon/heartbeat_process/__init__.py +23 -0
  4. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/heartbeat_process/heartbeat_config.py +3 -42
  5. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +7 -13
  6. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +7 -206
  7. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/log_masker.py +30 -13
  8. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/traceid.py +21 -2
  9. sycommon_python_lib-0.2.10a20/src/sycommon/synacos/nacos_async_loop.py +110 -0
  10. sycommon_python_lib-0.2.10a20/src/sycommon/synacos/nacos_client_base.py +353 -0
  11. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/nacos_config_manager.py +73 -60
  12. sycommon_python_lib-0.2.10a20/src/sycommon/synacos/nacos_connection_alert_listener.py +132 -0
  13. sycommon_python_lib-0.2.10a20/src/sycommon/synacos/nacos_service.py +157 -0
  14. sycommon_python_lib-0.2.10a20/src/sycommon/synacos/nacos_service_discovery.py +127 -0
  15. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/nacos_service_registration.py +22 -50
  16. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon_python_lib.egg-info/PKG-INFO +2 -2
  17. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon_python_lib.egg-info/SOURCES.txt +2 -1
  18. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon_python_lib.egg-info/requires.txt +1 -1
  19. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_log_masker.py +72 -2
  20. sycommon_python_lib-0.2.10a19/src/sycommon/heartbeat_process/__init__.py +0 -67
  21. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_client_base.py +0 -177
  22. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -245
  23. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_service.py +0 -291
  24. sycommon_python_lib-0.2.10a19/src/sycommon/synacos/nacos_service_discovery.py +0 -245
  25. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/README.md +0 -0
  26. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/setup.cfg +0 -0
  27. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/__init__.py +0 -0
  28. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/cli.py +0 -0
  29. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/core/__init__.py +0 -0
  30. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/core/console.py +0 -0
  31. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/core/models.py +0 -0
  32. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/core/project.py +0 -0
  33. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/core/utils.py +0 -0
  34. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/__init__.py +0 -0
  35. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/README.md.tpl +0 -0
  36. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/__init__.py +0 -0
  37. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  44. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/api/query.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  46. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  47. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/app.py.tpl +0 -0
  48. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  49. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  50. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  51. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/db/service.py.tpl +0 -0
  53. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/model/parse.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  57. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/.env.tpl +0 -0
  58. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/.gitignore.tpl +0 -0
  59. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/Dockerfile.tpl +0 -0
  60. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/README.md.tpl +0 -0
  61. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/__init__.py +0 -0
  62. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/app.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/app.yaml.tpl +0 -0
  64. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/client/__init__.py.tpl +0 -0
  66. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/model/__init__.py.tpl +0 -0
  67. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/model/file_info.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/base/requirements.txt.tpl +0 -0
  69. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/README.md.tpl +0 -0
  70. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/__init__.py +0 -0
  71. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/app.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  74. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  75. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  76. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/README.md.tpl +0 -0
  77. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/api/__init__.py.tpl +0 -0
  79. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/api/echo.py.tpl +0 -0
  80. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  81. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  82. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/app.py.tpl +0 -0
  83. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/client/__init__.py.tpl +0 -0
  84. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/model/__init__.py.tpl +0 -0
  85. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  86. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/command/templates/web/tools/mq.py.tpl +0 -0
  87. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/nexus/__init__.py +0 -0
  88. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/__init__.py +0 -0
  89. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/__main__.py +0 -0
  90. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/acp/__init__.py +0 -0
  91. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/acp/config.py +0 -0
  92. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/acp/executor.py +0 -0
  93. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/acp/registry.py +0 -0
  94. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/acp/server.py +0 -0
  95. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/agents/__init__.py +0 -0
  96. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/agents/factory.py +0 -0
  97. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/agents/prompts.py +0 -0
  98. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/__init__.py +0 -0
  99. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/browser.py +0 -0
  100. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/__init__.py +0 -0
  101. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/console.py +0 -0
  102. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/dom.py +0 -0
  103. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/network.py +0 -0
  104. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  105. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/performance.py +0 -0
  106. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  107. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/client.py +0 -0
  108. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/protocol.py +0 -0
  109. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cdp/repl.py +0 -0
  110. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/cli.py +0 -0
  111. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/__init__.py +0 -0
  112. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/acp_cmd.py +0 -0
  113. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/acp_serve_cmd.py +0 -0
  114. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/cdp_cmd.py +0 -0
  115. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/chat_cmd.py +0 -0
  116. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/create_cmd.py +0 -0
  117. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/evaluate_cmd.py +0 -0
  118. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/init_cmd.py +0 -0
  119. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/memory_cmd.py +0 -0
  120. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/resume_cmd.py +0 -0
  121. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/rollback_cmd.py +0 -0
  122. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/commands/run_cmd.py +0 -0
  123. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/__init__.py +0 -0
  124. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/backend.py +0 -0
  125. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/config.py +0 -0
  126. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/display.py +0 -0
  127. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/git_integration.py +0 -0
  128. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/llm.py +0 -0
  129. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/core/state.py +0 -0
  130. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/evaluate/__init__.py +0 -0
  131. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/evaluate/api_evaluator.py +0 -0
  132. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/memory/__init__.py +0 -0
  133. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/memory/compressor.py +0 -0
  134. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/memory/full.py +0 -0
  135. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/memory/hot.py +0 -0
  136. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/memory/manager.py +0 -0
  137. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/memory/warm.py +0 -0
  138. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/mode/__init__.py +0 -0
  139. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/mode/create.py +0 -0
  140. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/mode/optimize.py +0 -0
  141. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/models/__init__.py +0 -0
  142. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/models/config_models.py +0 -0
  143. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/baseline_tests.py +0 -0
  145. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/checkpoint.py +0 -0
  146. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/convergence.py +0 -0
  147. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/diagnosis.py +0 -0
  148. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/engine.py +0 -0
  149. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/environment.py +0 -0
  150. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/experience.py +0 -0
  151. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/harness_prompts.py +0 -0
  152. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/history.py +0 -0
  153. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/optimization_logger.py +0 -0
  154. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/pre_validation.py +0 -0
  155. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/reward.py +0 -0
  156. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/strategy_bandit.py +0 -0
  157. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/strategy_generator.py +0 -0
  158. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/rl/strategy_prompts.py +0 -0
  159. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/simple_chat_agent.py +0 -0
  160. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycli/skills/__init__.py +0 -0
  161. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/__init__.py +0 -0
  162. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/__init__.py +0 -0
  163. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/acp/__init__.py +0 -0
  164. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/acp/client.py +0 -0
  165. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/acp/fetch.py +0 -0
  166. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/acp/server_adapter.py +0 -0
  167. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/acp/ssh_init.py +0 -0
  168. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/acp/tool.py +0 -0
  169. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/agent_manager.py +0 -0
  170. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/chat_events.py +0 -0
  171. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/deep_agent.py +0 -0
  172. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/mcp/__init__.py +0 -0
  173. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/mcp/models.py +0 -0
  174. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  175. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/middleware/model_request_prep.py +0 -0
  176. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/middleware/sandbox_path_guard.py +0 -0
  177. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/middleware/sensitive_guard.py +0 -0
  178. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/middleware/skill_write_guard.py +0 -0
  179. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/multi_agent_team.py +0 -0
  180. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/reasoning_content_patch.py +0 -0
  181. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/resume_compactor.py +0 -0
  182. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/__init__.py +0 -0
  183. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/consistent_hash.py +0 -0
  184. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  185. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  186. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  187. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  188. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  189. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/sandbox/session.py +0 -0
  190. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/skills_retry_patch.py +0 -0
  191. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/agent/summarization_utils.py +0 -0
  192. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/__init__.py +0 -0
  193. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/alert_sdk.py +0 -0
  194. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/ao.py +0 -0
  195. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/api.py +0 -0
  196. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/bridge.py +0 -0
  197. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/env.py +0 -0
  198. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/guard.py +0 -0
  199. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/monitor.py +0 -0
  200. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/queue.py +0 -0
  201. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/ratelimit.py +0 -0
  202. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/sdk.py +0 -0
  203. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/alert/sdk_selfcheck.py +0 -0
  204. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/auth/__init__.py +0 -0
  205. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/auth/ldap_service.py +0 -0
  206. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/auth/oa_cache.py +0 -0
  207. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/auth/oa_crypto.py +0 -0
  208. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/auth/oa_service.py +0 -0
  209. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  210. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/ACPAgentConfig.py +0 -0
  211. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/Config.py +0 -0
  212. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/DatabaseConfig.py +0 -0
  213. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/EgressPolicyConfig.py +0 -0
  214. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  215. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/EmbeddingConfig.py +0 -0
  216. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/LLMConfig.py +0 -0
  217. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/LangfuseConfig.py +0 -0
  218. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/MQConfig.py +0 -0
  219. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/PgConfig.py +0 -0
  220. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/RedisConfig.py +0 -0
  221. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/RerankerConfig.py +0 -0
  222. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/SentryConfig.py +0 -0
  223. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/XxlJobConfig.py +0 -0
  224. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/__init__.py +0 -0
  225. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/config/config_change_notifier.py +0 -0
  226. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/async_base_db_service.py +0 -0
  227. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/async_database_service.py +0 -0
  228. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/base_db_service.py +0 -0
  229. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/database_service.py +0 -0
  230. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/elasticsearch_service.py +0 -0
  231. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  232. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/redis_service.py +0 -0
  233. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/resilient_pg_saver.py +0 -0
  234. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/database/token_usage_db_service.py +0 -0
  235. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/health/__init__.py +0 -0
  236. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/health/health_check.py +0 -0
  237. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/health/metrics.py +0 -0
  238. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/health/ping.py +0 -0
  239. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/health/readiness.py +0 -0
  240. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/__init__.py +0 -0
  241. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/embedding.py +0 -0
  242. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/get_llm.py +0 -0
  243. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/llm_logger.py +0 -0
  244. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/llm_tokens.py +0 -0
  245. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  246. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  247. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  248. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/struct_token.py +0 -0
  249. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/sy_langfuse.py +0 -0
  250. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  251. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  252. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/token_usage_es_service.py +0 -0
  253. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  254. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/token_utils.py +0 -0
  255. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/llm/usage_token.py +0 -0
  256. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/__init__.py +0 -0
  257. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/async_sql_logger.py +0 -0
  258. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/bounded_kafka_sink.py +0 -0
  259. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/bounded_stdout_sink.py +0 -0
  260. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/kafka_log.py +0 -0
  261. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/logger_levels.py +0 -0
  262. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/logger_wrapper.py +0 -0
  263. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/process_logger.py +0 -0
  264. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/logging/sql_logger.py +0 -0
  265. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/mcp_server/__init__.py +0 -0
  266. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/mcp_server/server.py +0 -0
  267. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/__init__.py +0 -0
  268. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/context.py +0 -0
  269. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/cors.py +0 -0
  270. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/docs.py +0 -0
  271. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/egress_wall.py +0 -0
  272. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/exception.py +0 -0
  273. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/middleware.py +0 -0
  274. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/monitor_memory.py +0 -0
  275. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/mq.py +0 -0
  276. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/sandbox.py +0 -0
  277. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/sandbox_gateway.py +0 -0
  278. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/timeout.py +0 -0
  279. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/token_tracking.py +0 -0
  280. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  281. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/__init__.py +0 -0
  282. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/base_http.py +0 -0
  283. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/log.py +0 -0
  284. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/mcp_server_config.py +0 -0
  285. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/mqlistener_config.py +0 -0
  286. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/mqmsg_model.py +0 -0
  287. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/mqsend_config.py +0 -0
  288. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/sandbox.py +0 -0
  289. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/sso_user.py +0 -0
  290. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/token_usage.py +0 -0
  291. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/token_usage_mysql.py +0 -0
  292. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/models/xxljob_handler_config.py +0 -0
  293. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/notice/__init__.py +0 -0
  294. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  295. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/notice/wecom_message.py +0 -0
  296. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/agent/loop.py +0 -0
  297. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/agent/types.py +0 -0
  298. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/coding/__init__.py +0 -0
  299. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/coding/mcpserver.py +0 -0
  300. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/json_parse.py +0 -0
  301. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/message.py +0 -0
  302. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/model.py +0 -0
  303. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/retry.py +0 -0
  304. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/transcript.py +0 -0
  305. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/transform.py +0 -0
  306. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/usage.py +0 -0
  307. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/core/validation.py +0 -0
  308. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/mcp/__init__.py +0 -0
  309. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/mcp/client.py +0 -0
  310. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/mcp/jsonrpc.py +0 -0
  311. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/mcp/transport.py +0 -0
  312. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/__init__.py +0 -0
  313. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/anthropic_client.py +0 -0
  314. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/bedrock_client.py +0 -0
  315. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/faux.py +0 -0
  316. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/google_client.py +0 -0
  317. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/kimi_client.py +0 -0
  318. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/pi/providers/openai_client.py +0 -0
  319. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/delay_queue.py +0 -0
  320. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/mq_store.py +0 -0
  321. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  322. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbit_management_client.py +0 -0
  323. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  324. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  325. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  326. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  327. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  328. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  329. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  330. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  331. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/rabbitmq/topic_registry.py +0 -0
  332. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/sentry/__init__.py +0 -0
  333. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/sentry/sy_sentry.py +0 -0
  334. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/services.py +0 -0
  335. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/sse/__init__.py +0 -0
  336. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/sse/event.py +0 -0
  337. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/sse/sse.py +0 -0
  338. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/__init__.py +0 -0
  339. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/example.py +0 -0
  340. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/example2.py +0 -0
  341. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/feign.py +0 -0
  342. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/feign_client.py +0 -0
  343. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/synacos/param.py +0 -0
  344. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/deep_agent_server.py +0 -0
  345. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_backend_factory_compat.py +0 -0
  346. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consistent_hash.py +0 -0
  347. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consume_dedup.py +0 -0
  348. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consumer_broker_health.py +0 -0
  349. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
  350. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  351. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consumer_recovery_fix.py +0 -0
  352. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_consumer_tags_sync.py +0 -0
  353. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_db_keepalive.py +0 -0
  354. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_deep_agent.py +0 -0
  355. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  356. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_email.py +0 -0
  357. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_encoding_cache.py +0 -0
  358. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_env_tenant_helper.py +0 -0
  359. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_exp_concurrent_migrate.py +0 -0
  360. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_exp_delete_queue_with_consumers.py +0 -0
  361. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_fault_injection_real.py +0 -0
  362. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_fix_verification.py +0 -0
  363. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_heartbeat_timeout.py +0 -0
  364. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_integration_real_broker.py +0 -0
  365. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_mcp_server.py +0 -0
  366. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  367. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_mq.py +0 -0
  368. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_mq_config_driven.py +0 -0
  369. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_nacos_llm_real.py +0 -0
  370. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_oa_login.py +0 -0
  371. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_queue_priority_fallback.py +0 -0
  372. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_queue_priority_upgrade_timing.py +0 -0
  373. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_real_summarization.py +0 -0
  374. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_reconnect_scenarios.py +0 -0
  375. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_sandbox_glob_hardening.py +0 -0
  376. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_services_plugin_defaults.py +0 -0
  377. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_summarization_config.py +0 -0
  378. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_summarization_real.py +0 -0
  379. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
  380. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_upgrade_aio_pika.py +0 -0
  381. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_upgrade_langgraph_stream.py +0 -0
  382. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tests/test_upgrade_verification.py +0 -0
  383. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/__init__.py +0 -0
  384. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/async_utils.py +0 -0
  385. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/docs.py +0 -0
  386. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/env.py +0 -0
  387. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/merge_headers.py +0 -0
  388. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/snowflake.py +0 -0
  389. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/sso_token.py +0 -0
  390. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/syemail.py +0 -0
  391. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/time_utils.py +0 -0
  392. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/timing.py +0 -0
  393. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/tools/user_id.py +0 -0
  394. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/xxljob/__init__.py +0 -0
  395. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon/xxljob/xxljob_service.py +0 -0
  396. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  397. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  398. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  399. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_acp_tool.py +0 -0
  400. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_asyncio_logging.py +0 -0
  401. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_config_change_notifier.py +0 -0
  402. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_frame_alignment.py +0 -0
  403. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_hotreload_snapshot.py +0 -0
  404. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_kafka_upie_fix.py +0 -0
  405. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_llm_apikey_contextvar.py +0 -0
  406. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_print_capture.py +0 -0
  407. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_resilient_pg_saver.py +0 -0
  408. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_sandbox_path_guard.py +0 -0
  409. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_sensitive_guard.py +0 -0
  410. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_simple_chat_agent.py +0 -0
  411. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_skill_regex_upgrade.py +0 -0
  412. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_skill_write_guard.py +0 -0
  413. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_sql_params_full.py +0 -0
  414. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_streaming_e2e.py +0 -0
  415. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_summary_echo_break_loop.py +0 -0
  416. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_sycli.py +0 -0
  417. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_sylogger_fixes.py +0 -0
  418. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_sync_skills_to_sandbox.py +0 -0
  419. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_time_utils.py +0 -0
  420. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_traceid_omit_base64.py +0 -0
  421. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_unicode_decode_regress.py +0 -0
  422. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/tests/test_upload_concurrency.py +0 -0
  423. {sycommon_python_lib-0.2.10a19 → sycommon_python_lib-0.2.10a20}/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.10a20
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -24,7 +24,7 @@ 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
26
  Requires-Dist: mysql-connector-python==26.7.0
27
- Requires-Dist: nacos-sdk-python<3.0,==2.0.11
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.10a20"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -25,7 +25,7 @@ dependencies = [
25
25
  "ldap3==2.9.1",
26
26
  "loguru==0.7.3",
27
27
  "mysql-connector-python==26.7.0",
28
- "nacos-sdk-python==2.0.11,<3.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",
@@ -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 事件循环)
@@ -53,6 +53,11 @@ _DEFAULTS = {
53
53
  "maxListItems": 50, # list 元素上限,超过则只保留前 N 个 + 摘要
54
54
  "headTailKeep": 200, # 头尾截断时各自保留的字符数
55
55
  "dropIfBig": False, # 整体超过 maxSize 时:False=头尾截断摘要, True=整条丢弃
56
+ # 文本完整模式(2026-10-26 用户要求):True 时叶子标量不按 maxLength 折叠、
57
+ # 超长 list 不摘要——文本类请求/响应体完整落日志;文件类 base64 由
58
+ # traceid._omit_base64_content 按 content 键省略。字段名脱敏(mask/drop)
59
+ # 照常;maxSize 整条防线保留(Kafka 单条上限,日志系统自身保护)。
60
+ "fullText": True,
56
61
  }
57
62
 
58
63
  # 内部哨兵:sanitize 返回它表示「这个 key 应当从父 dict 中删除」
@@ -73,7 +78,7 @@ def _merge(*configs: dict) -> dict:
73
78
  list_keys = ("fields", "patterns", "drop", "dropLinePatterns", "maskLinePatterns")
74
79
  scalar_keys = (
75
80
  "enabled", "maxLength", "maxSize",
76
- "maxListItems", "headTailKeep", "dropIfBig",
81
+ "maxListItems", "headTailKeep", "dropIfBig", "fullText",
77
82
  )
78
83
 
79
84
  acc = {k: set() for k in list_keys}
@@ -179,7 +184,8 @@ class LogMasker(metaclass=SingletonMeta):
179
184
 
180
185
  return None
181
186
 
182
- def sanitize_deep_str(self, value: Any, key: Any = None) -> Any:
187
+ def sanitize_deep_str(self, value: Any, key: Any = None,
188
+ full: bool = False) -> Any:
183
189
  """深 JSON 字符串脱敏:把整体序列化的大 JSON 逐层展开后按字段裁剪。
184
190
 
185
191
  背景:traceid 等中间件把 response_body / request_body 传成「整体 JSON
@@ -187,24 +193,30 @@ class LogMasker(metaclass=SingletonMeta):
187
193
  ``...[N chars truncated]...``,排障时无法 json.loads 还原,中段字段
188
194
  (业务最关心的 data 部分)全部丢失。
189
195
 
190
- 做法:字符串先尝试 json.loads 还原为结构;dict/list 逐层递归(每个
191
- 叶子标量独立适用 maxLength),无法还原 / 解析失败则回退原字符串走
192
- 标量截断。递归产物是结构化 dict/list,最终由调用方决定序列化方式——
193
- 这样即使某个叶子被截断,其余字段仍完整可读。
196
+ 做法:字符串先尝试 json.loads 还原为结构;dict/list 逐层递归,无法
197
+ 还原 / 解析失败则回退原字符串走标量截断。递归产物是结构化 dict/list,
198
+ 最终由调用方决定序列化方式——这样即使某个叶子被截断,其余字段仍完整可读。
199
+
200
+ full=True(2026-10-26 用户要求:请求/响应文本完整打印):叶子不做
201
+ maxLength 折叠、超长 list 不摘要——文本类内容完整落日志;文件类
202
+ base64 由调用方(traceid._omit_base64_content)按 content 键省略。
203
+ 字段名脱敏(mask/drop)仍生效;整条防线由 maxSize 兜底(Kafka 单条
204
+ 上限,超限截断是日志系统自身保护,不能去掉)。
194
205
 
195
206
  仅本地裁剪,不脱字段名(mask/drop 语义不变——命中字段名的值照常
196
207
  掩码/删除)。
197
208
  """
198
209
  if not isinstance(value, str):
199
- return self.sanitize(value, key)
210
+ return self.sanitize(value, key, full=full)
211
+ no_fold = full or bool(self._config.get("fullText", True))
200
212
  try:
201
213
  parsed = json.loads(value)
202
214
  except (json.JSONDecodeError, ValueError):
203
- return self._truncate_str(value)
215
+ return value if no_fold else self._truncate_str(value)
204
216
  if not isinstance(parsed, (dict, list)):
205
217
  # "123" / "true" 这类 JSON 标量字符串:还原后反而丢引号语义,按原串截断
206
- return self._truncate_str(value)
207
- return self._sanitize_value(parsed, key, depth=0)
218
+ return value if no_fold else self._truncate_str(value)
219
+ return self._sanitize_value(parsed, key, depth=0, full=full)
208
220
 
209
221
  def _truncate_str(self, s: str) -> str:
210
222
  n = self._config.get("maxLength", 1000)
@@ -216,6 +228,7 @@ class LogMasker(metaclass=SingletonMeta):
216
228
  return f"{head}...[{len(s) - 2 * keep} chars truncated]...{tail}"
217
229
 
218
230
  def _summarize_list(self, items: list, key: Any) -> Any:
231
+ # 仅 fullText=false 且非 full 时到达(见 _sanitize_value list 分支)
219
232
  n = self._config.get("maxListItems", 50)
220
233
  # 始终对每个元素递归脱敏(内部大文本值也要按 maxLength 截断)
221
234
  if len(items) <= n:
@@ -249,7 +262,10 @@ class LogMasker(metaclass=SingletonMeta):
249
262
  value = value.isoformat()
250
263
 
251
264
  if isinstance(value, str):
252
- return value if full else self._truncate_str(value)
265
+ # fullText 模式(默认开): 文本完整, 不 maxLength 折叠 —
266
+ # maxSize 整条防线仍兜底; full 参数(SQL 参数路径)语义等价叠加
267
+ no_fold = full or bool(self._config.get("fullText", True))
268
+ return value if no_fold else self._truncate_str(value)
253
269
  if value is None or isinstance(value, (bool, int, float)):
254
270
  return value
255
271
 
@@ -267,10 +283,11 @@ class LogMasker(metaclass=SingletonMeta):
267
283
  out[k] = sv
268
284
  return out
269
285
 
270
- # 5. list:full 不摘要逐项递归;否则超长摘要
286
+ # 5. list:full/不摘要时逐项递归;否则超长摘要
271
287
  if isinstance(value, (list, tuple)):
272
288
  items = list(value)
273
- if full:
289
+ no_sum = full or bool(self._config.get("fullText", True))
290
+ if no_sum:
274
291
  return [self._sanitize_value(v, _child_key(key, i), depth + 1,
275
292
  full=full)
276
293
  for i, v in enumerate(items)]
@@ -111,15 +111,34 @@ def _gateway_user_ctx(request) -> list:
111
111
  return out
112
112
 
113
113
 
114
+ # base64/二进制启发式:长串且几乎全是 base64 字符集(无空格/换行/中文/标点)。
115
+ # 纯文本(分析报告、SQL、代码)必然含空格或 base64 字符集之外的字符,不会误伤。
116
+ _B64ISH_RE = re.compile(r"^[A-Za-z0-9+/=\s]{200,}$")
117
+
118
+
119
+ def _looks_like_base64(s: str) -> bool:
120
+ """判定超长字符串是否疑似 base64/二进制转写(PDF/图片等)。
121
+
122
+ 用户要求(2026-10-26):只有文件类 base64 省略,长【文本】完整打印。
123
+ 启发式:长度>1000 且去除空白后全部落在 base64 字符集内。普通长文本
124
+ 含空格/标点/中文,天然不满足。
125
+ """
126
+ if len(s) <= 1000:
127
+ return False
128
+ compact = "".join(s.split())
129
+ return bool(_B64ISH_RE.match(compact))
130
+
131
+
114
132
  def _omit_base64_content(obj: Any) -> None:
115
- """把结构化响应体里超长的 content 值(PDF/图片 base64)替换为省略占位。
133
+ """把结构化响应体里疑似 base64 的超长 content 值替换为省略占位。
116
134
 
117
135
  就地修改,dict/list 逐层递归。sanitize_deep_str 已把 JSON 字符串还原成
118
136
  结构化 dict/list——不能再 json.loads(传容器进去会 TypeError)。
137
+ 只省略「疑似 base64/二进制」;长纯文本完整保留(_looks_like_base64)。
119
138
  """
120
139
  if isinstance(obj, dict):
121
140
  c = obj.get("content")
122
- if c and len(str(c)) > 1000:
141
+ if c and _looks_like_base64(str(c)):
123
142
  obj["content"] = f"... (base64/binary content omitted, {len(str(c))} chars)"
124
143
  elif isinstance(obj, list):
125
144
  for item in obj: