sycommon-python-lib 0.2.5a35__tar.gz → 0.2.5a36__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/deep_agent.py +39 -11
  4. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/summarization_utils.py +4 -3
  5. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/traceid.py +0 -3
  6. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_client.py +14 -94
  7. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +3 -24
  8. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +35 -14
  9. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +2 -20
  10. sycommon_python_lib-0.2.5a36/src/sycommon/tests/test_consumer_loss_rootcause.py +399 -0
  11. sycommon_python_lib-0.2.5a36/src/sycommon/tests/test_fix_verification.py +404 -0
  12. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  13. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon_python_lib.egg-info/SOURCES.txt +2 -0
  14. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/README.md +0 -0
  15. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/setup.cfg +0 -0
  16. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/cli.py +0 -0
  18. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/core/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/core/console.py +0 -0
  20. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/core/models.py +0 -0
  21. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/core/project.py +0 -0
  22. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/core/utils.py +0 -0
  23. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/__init__.py +0 -0
  24. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/README.md.tpl +0 -0
  25. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/__init__.py +0 -0
  26. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  27. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  28. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  29. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  30. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  31. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  32. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  33. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/api/query.py.tpl +0 -0
  34. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  35. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  36. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/app.py.tpl +0 -0
  37. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  38. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  39. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  40. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  41. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/db/service.py.tpl +0 -0
  42. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  43. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/model/parse.py.tpl +0 -0
  44. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  45. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  46. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/.env.tpl +0 -0
  47. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/.gitignore.tpl +0 -0
  48. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/Dockerfile.tpl +0 -0
  49. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/README.md.tpl +0 -0
  50. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/__init__.py +0 -0
  51. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/app.py.tpl +0 -0
  52. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/app.yaml.tpl +0 -0
  53. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  54. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/client/__init__.py.tpl +0 -0
  55. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/model/__init__.py.tpl +0 -0
  56. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/model/file_info.py.tpl +0 -0
  57. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/base/requirements.txt.tpl +0 -0
  58. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/README.md.tpl +0 -0
  59. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/__init__.py +0 -0
  60. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/app.py.tpl +0 -0
  61. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  62. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  63. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  64. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  65. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/README.md.tpl +0 -0
  66. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/__init__.py +0 -0
  67. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/api/__init__.py.tpl +0 -0
  68. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/api/echo.py.tpl +0 -0
  69. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  70. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  71. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/app.py.tpl +0 -0
  72. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/client/__init__.py.tpl +0 -0
  73. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/model/__init__.py.tpl +0 -0
  74. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  75. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/command/templates/web/tools/mq.py.tpl +0 -0
  76. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/nexus/__init__.py +0 -0
  77. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/__main__.py +0 -0
  79. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/agents/__init__.py +0 -0
  80. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/agents/factory.py +0 -0
  81. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/agents/prompts.py +0 -0
  82. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/__init__.py +0 -0
  83. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/browser.py +0 -0
  84. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/__init__.py +0 -0
  85. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/console.py +0 -0
  86. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/dom.py +0 -0
  87. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/network.py +0 -0
  88. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  89. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/performance.py +0 -0
  90. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  91. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/client.py +0 -0
  92. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/protocol.py +0 -0
  93. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cdp/repl.py +0 -0
  94. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/cli.py +0 -0
  95. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/__init__.py +0 -0
  96. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/cdp_cmd.py +0 -0
  97. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/chat_cmd.py +0 -0
  98. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/create_cmd.py +0 -0
  99. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/evaluate_cmd.py +0 -0
  100. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/init_cmd.py +0 -0
  101. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/memory_cmd.py +0 -0
  102. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/resume_cmd.py +0 -0
  103. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/rollback_cmd.py +0 -0
  104. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/commands/run_cmd.py +0 -0
  105. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/__init__.py +0 -0
  106. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/backend.py +0 -0
  107. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/config.py +0 -0
  108. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/display.py +0 -0
  109. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/git_integration.py +0 -0
  110. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/llm.py +0 -0
  111. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/core/state.py +0 -0
  112. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/evaluate/__init__.py +0 -0
  113. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/evaluate/api_evaluator.py +0 -0
  114. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/memory/__init__.py +0 -0
  115. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/memory/compressor.py +0 -0
  116. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/memory/full.py +0 -0
  117. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/memory/hot.py +0 -0
  118. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/memory/manager.py +0 -0
  119. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/memory/warm.py +0 -0
  120. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/mode/__init__.py +0 -0
  121. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/mode/create.py +0 -0
  122. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/mode/optimize.py +0 -0
  123. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/models/__init__.py +0 -0
  124. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/models/config_models.py +0 -0
  125. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/__init__.py +0 -0
  126. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/baseline_tests.py +0 -0
  127. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/checkpoint.py +0 -0
  128. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/convergence.py +0 -0
  129. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/diagnosis.py +0 -0
  130. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/engine.py +0 -0
  131. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/environment.py +0 -0
  132. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/experience.py +0 -0
  133. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/harness_prompts.py +0 -0
  134. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/history.py +0 -0
  135. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/optimization_logger.py +0 -0
  136. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/pre_validation.py +0 -0
  137. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/reward.py +0 -0
  138. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/strategy_bandit.py +0 -0
  139. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/strategy_generator.py +0 -0
  140. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/rl/strategy_prompts.py +0 -0
  141. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycli/skills/__init__.py +0 -0
  142. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/__init__.py +0 -0
  143. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/__init__.py +0 -0
  144. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/agent_manager.py +0 -0
  145. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/chat_events.py +0 -0
  146. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/mcp/__init__.py +0 -0
  147. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/mcp/models.py +0 -0
  148. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/mcp/tool_loader.py +0 -0
  149. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/multi_agent_team.py +0 -0
  150. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/__init__.py +0 -0
  151. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  152. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  153. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
  154. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  155. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  156. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/agent/sandbox/session.py +0 -0
  157. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/auth/__init__.py +0 -0
  158. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/auth/ldap_service.py +0 -0
  159. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/auth/oa_cache.py +0 -0
  160. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/auth/oa_crypto.py +0 -0
  161. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/auth/oa_service.py +0 -0
  162. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/auth/wecom_ldap_service.py +0 -0
  163. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/Config.py +0 -0
  164. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/DatabaseConfig.py +0 -0
  165. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  166. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/EmbeddingConfig.py +0 -0
  167. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/LLMConfig.py +0 -0
  168. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/LangfuseConfig.py +0 -0
  169. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/MQConfig.py +0 -0
  170. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/PgConfig.py +0 -0
  171. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/RedisConfig.py +0 -0
  172. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/RerankerConfig.py +0 -0
  173. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/SentryConfig.py +0 -0
  174. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/XxlJobConfig.py +0 -0
  175. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/config/__init__.py +0 -0
  176. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/async_base_db_service.py +0 -0
  177. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/async_database_service.py +0 -0
  178. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/base_db_service.py +0 -0
  179. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/database_service.py +0 -0
  180. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/elasticsearch_service.py +0 -0
  181. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/pg_checkpoint_service.py +0 -0
  182. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/redis_service.py +0 -0
  183. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/database/token_usage_db_service.py +0 -0
  184. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/health/__init__.py +0 -0
  185. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/health/health_check.py +0 -0
  186. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/health/metrics.py +0 -0
  187. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/health/ping.py +0 -0
  188. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/heartbeat_process/__init__.py +0 -0
  189. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  190. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  191. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  192. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/__init__.py +0 -0
  193. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/embedding.py +0 -0
  194. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/get_llm.py +0 -0
  195. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/llm_logger.py +0 -0
  196. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/llm_tokens.py +0 -0
  197. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  198. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  199. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  200. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/struct_token.py +0 -0
  201. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/sy_langfuse.py +0 -0
  202. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  203. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  204. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/token_usage_es_service.py +0 -0
  205. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  206. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/token_utils.py +0 -0
  207. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/llm/usage_token.py +0 -0
  208. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/__init__.py +0 -0
  209. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/async_sql_logger.py +0 -0
  210. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/kafka_log.py +0 -0
  211. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/logger_levels.py +0 -0
  212. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/logger_wrapper.py +0 -0
  213. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/process_logger.py +0 -0
  214. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/logging/sql_logger.py +0 -0
  215. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/mcp_server/__init__.py +0 -0
  216. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/mcp_server/server.py +0 -0
  217. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/__init__.py +0 -0
  218. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/context.py +0 -0
  219. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/cors.py +0 -0
  220. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/docs.py +0 -0
  221. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/exception.py +0 -0
  222. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/middleware.py +0 -0
  223. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/monitor_memory.py +0 -0
  224. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/mq.py +0 -0
  225. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/sandbox.py +0 -0
  226. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/timeout.py +0 -0
  227. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/token_tracking.py +0 -0
  228. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/middleware/tool_result_truncation.py +0 -0
  229. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/__init__.py +0 -0
  230. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/base_http.py +0 -0
  231. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/log.py +0 -0
  232. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/mcp_server_config.py +0 -0
  233. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/mqlistener_config.py +0 -0
  234. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/mqmsg_model.py +0 -0
  235. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/mqsend_config.py +0 -0
  236. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/sandbox.py +0 -0
  237. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/sso_user.py +0 -0
  238. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/token_usage.py +0 -0
  239. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/token_usage_mysql.py +0 -0
  240. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/models/xxljob_handler_config.py +0 -0
  241. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/notice/__init__.py +0 -0
  242. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  243. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/notice/wecom_message.py +0 -0
  244. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  245. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  246. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  247. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  248. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  249. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/sentry/__init__.py +0 -0
  250. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/sentry/sy_sentry.py +0 -0
  251. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/services.py +0 -0
  252. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/sse/__init__.py +0 -0
  253. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/sse/event.py +0 -0
  254. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/sse/sse.py +0 -0
  255. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/__init__.py +0 -0
  256. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/example.py +0 -0
  257. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/example2.py +0 -0
  258. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/feign.py +0 -0
  259. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/feign_client.py +0 -0
  260. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/nacos_client_base.py +0 -0
  261. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  262. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  263. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/nacos_service.py +0 -0
  264. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  265. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  266. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/synacos/param.py +0 -0
  267. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/deep_agent_server.py +0 -0
  268. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  269. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_deep_agent.py +0 -0
  270. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
  271. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_email.py +0 -0
  272. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_encoding_cache.py +0 -0
  273. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_mcp_server.py +0 -0
  274. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  275. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_mq.py +0 -0
  276. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_oa_login.py +0 -0
  277. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_real_summarization.py +0 -0
  278. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_summarization_config.py +0 -0
  279. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_summarization_real.py +0 -0
  280. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
  281. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/__init__.py +0 -0
  282. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/async_utils.py +0 -0
  283. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/docs.py +0 -0
  284. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/env.py +0 -0
  285. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/merge_headers.py +0 -0
  286. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/snowflake.py +0 -0
  287. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/syemail.py +0 -0
  288. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/tools/timing.py +0 -0
  289. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/xxljob/__init__.py +0 -0
  290. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon/xxljob/xxljob_service.py +0 -0
  291. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  292. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  293. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  294. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  295. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/tests/test_asyncio_logging.py +0 -0
  296. {sycommon_python_lib-0.2.5a35 → sycommon_python_lib-0.2.5a36}/tests/test_sycli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.5a35
3
+ Version: 0.2.5a36
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.5a35"
3
+ version = "0.2.5a36"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -201,26 +201,41 @@ def _patch_agent_streaming(agent):
201
201
  model_, effective_response_format = _get_bound_model(request)
202
202
  messages = request.messages
203
203
 
204
- # 🔑 根治摘要泄漏:将 lc_source="summarization" 的 HumanMessage 从模型输入中移除
204
+ # 🔑 根治摘要泄漏:将 lc_source="summarization" 的 HumanMessage 内容
205
+ # 注入到 system_message 而非直接丢弃,保持记忆连续性。
205
206
  # 根因分析(2026-06-06 端到端测试确认):
206
- # 1. SummarizationMiddleware 将摘要(可达 40K+ 字符)注入为 HumanMessage
207
- # 2. 即使转为 SystemMessage + <system_directive> 指令,模型仍会将其作为
208
- # AIMessageChunk 直接回显(Round 20 泄漏了 40K 字符摘要原文)
209
- # 3. LangGraph StreamMessagesHandler._find_and_emit_messages 会递归遍历
210
- # Command.update 中的 _summarization_event,将 summary_message HumanMessage
211
- # 发射到 stream_mode="messages" 流中(deep_agent.py:624 的 lc_source 过滤
212
- # 能捕获 HumanMessage,但模型自己输出的 AIMessageChunk 无法过滤)
213
- # 修复策略:从模型输入中完全移除摘要 HumanMessage,不注入任何形式的摘要内容
214
- # 摘要仍保留在 LangGraph _summarization_event 状态中,供后续压缩轮次使用
207
+ # 1. SummarizationMiddleware 将摘要注入为 HumanMessage
208
+ # 2. 模型看到 HumanMessage 后容易将其作为对话内容回显/复述
209
+ # 3. 之前完全移除摘要导致压缩后模型丢失所有记忆
210
+ # 修复策略:提取摘要内容 注入 SystemMessage(模型视其为指令/背景知识,
211
+ # 回显概率远低于 HumanMessage)→ messages 中移除原始 HumanMessage
212
+ _summary_text = None
215
213
  _filtered_messages = []
216
214
  for _msg in messages:
217
215
  if (isinstance(_msg, HumanMessage)
218
216
  and getattr(_msg, "additional_kwargs", {}).get("lc_source") == "summarization"):
219
- SYLogger.debug("[DeepAgent] 摘要 HumanMessage 已从模型输入中移除(防止回显泄漏)")
217
+ _raw = _msg.content or ""
218
+ # 去掉 <internal_context_data> 包装标签,提取纯摘要
219
+ _summary_text = re.sub(
220
+ r'</?internal_context_data>', '', _raw, flags=re.DOTALL
221
+ ).strip()
222
+ SYLogger.debug("[DeepAgent] 摘要已从 HumanMessage 提取,将注入 system_message")
220
223
  else:
221
224
  _filtered_messages.append(_msg)
222
225
  messages = _filtered_messages
223
226
 
227
+ if _summary_text and request.system_message:
228
+ from deepagents.middleware._utils import append_to_system_message
229
+ _summary_directive = (
230
+ "\n\n<system_context>\n"
231
+ "以下是之前对话历史的压缩摘要,作为你的内部记忆使用。"
232
+ "把它当作你自己的回忆,绝对不要在回复中重复、复述或引用此内容的任何部分。\n"
233
+ f"{_summary_text}\n"
234
+ "</system_context>"
235
+ )
236
+ _new_sys = append_to_system_message(request.system_message, _summary_directive)
237
+ request = request.override(system_message=_new_sys)
238
+
224
239
  if request.system_message:
225
240
  messages = [request.system_message, *messages]
226
241
 
@@ -621,6 +636,19 @@ class DeepAgent:
621
636
  else:
622
637
  content = raw_content or ""
623
638
 
639
+ # 🔑 Defense 3: 清理 AI 输出中的摘要泄漏标签(安全网)
640
+ # 即使摘要已注入 SystemMessage,模型仍可能在极少数情况下回显标签
641
+ if msg_type in ("AIMessage", "AIMessageChunk") and content:
642
+ for _pat in [
643
+ r'<internal_context_data>.*?</internal_context_data>',
644
+ r'<compressed_history>.*?</compressed_history>',
645
+ r'<system_context>.*?</system_context>',
646
+ ]:
647
+ if re.search(_pat, content, re.DOTALL):
648
+ content = re.sub(_pat, '', content, flags=re.DOTALL)
649
+ SYLogger.warning("[DeepAgent] AI 输出包含摘要泄漏标签,已清理")
650
+ content = content.strip()
651
+
624
652
  if msg_type in ("AIMessage", "AIMessageChunk"):
625
653
  # 🔑 提取 reasoning_content(思考/推理内容)
626
654
  # 模型在 thinking 模式下会将推理过程放在 reasoning_content 字段,
@@ -182,9 +182,10 @@ _orig_build_new_messages = _OrigDeepAgentsSumm._build_new_messages_with_path
182
182
  def _patched_build_new_messages(self, summary, file_path):
183
183
  content = (
184
184
  "<internal_context_data>\n"
185
- "IMPORTANT - INTERNAL SYSTEM DATA - DO NOT OUTPUT, PARAPHRASE, OR REFERENCE "
186
- "ANY PART OF THIS BLOCK IN YOUR RESPONSE. "
187
- "Use this information only as internal background knowledge to understand context.\n\n"
185
+ "[系统内部记忆]\n"
186
+ "这是你的内部记忆,帮助你回忆之前的对话。"
187
+ "把它当作你自己的回忆,而不是要输出的内容。"
188
+ "绝对不要在回复中提及、复述或引用此内容的任何部分。\n\n"
188
189
  )
189
190
  if file_path is not None:
190
191
  content += (
@@ -40,10 +40,7 @@ def setup_trace_id_handler(app):
40
40
  request_body = json.loads(raw_text)
41
41
  else:
42
42
  request_body = await request.json()
43
- # 截断过大的 JSON body(如包含 base64 文件内容的请求)
44
43
  body_str = json.dumps(request_body, ensure_ascii=False)
45
- if len(body_str) > 5000:
46
- request_body = {"_truncated": f"请求体 {len(body_str)} 字节,已省略"}
47
44
  except Exception:
48
45
  try:
49
46
  request_body = await request.json()
@@ -74,7 +74,6 @@ class RabbitMQClient:
74
74
 
75
75
  # 并发控制
76
76
  self._connect_lock = asyncio.Lock()
77
- self._reconnect_semaphore = asyncio.Semaphore(1)
78
77
 
79
78
  # 异步任务并发控制(方案C:收到即ACK + create_task,复用 prefetch_count)
80
79
  self.prefetch_count = kwargs.get('prefetch_count', 2)
@@ -235,9 +234,8 @@ class RabbitMQClient:
235
234
  # 不符合命名规范或无队列名,清空队列引用
236
235
  self._queue = None
237
236
 
238
- async def _cleanup_before_reconnect(self) -> None:
239
- """重连前彻底清理旧资源,防止内存泄露"""
240
- # 1. 取消正在运行的后台 handler 任务
237
+ async def _cleanup_running_tasks(self) -> None:
238
+ """仅清理后台 handler 任务(不做任何破坏性清理,不调 queue.cancel、不关通道)"""
241
239
  if self._running_tasks:
242
240
  for t in list(self._running_tasks):
243
241
  if not t.done():
@@ -252,37 +250,8 @@ class RabbitMQClient:
252
250
  pass
253
251
  self._running_tasks.clear()
254
252
 
255
- # 2. 清理连接关闭回调(移除对 self/loop 的引用)
256
- if self._channel_conn:
257
- try:
258
- if self._channel_conn.close_callbacks:
259
- self._channel_conn.close_callbacks.clear()
260
- except Exception:
261
- pass
262
-
263
- # 3. 停止消费
264
- try:
265
- if self._consumer_tag and self._queue:
266
- await self._queue.cancel(self._consumer_tag)
267
- except Exception:
268
- pass
269
-
270
- # 4. 关闭旧通道
271
- if self._channel and not self._channel.is_closed:
272
- try:
273
- await self._channel.close()
274
- except Exception:
275
- pass
276
-
277
- # 5. 置空所有引用
278
- self._channel = None
279
- self._channel_conn = None
280
- self._exchange = None
281
- self._queue = None
282
- self._consumer_tag = None
283
-
284
253
  async def connect(self) -> None:
285
- """连接方法"""
254
+ """连接方法 — 信任 aio-pika Robust 自动恢复,不注册 on_conn_closed"""
286
255
  if self._closed:
287
256
  raise RuntimeError("客户端已关闭,无法重新连接")
288
257
 
@@ -296,31 +265,17 @@ class RabbitMQClient:
296
265
  was_consuming = self._consumer_tag is not None
297
266
 
298
267
  try:
299
- # 1. 彻底清理旧资源(防止内存泄露)
300
- await self._cleanup_before_reconnect()
301
-
302
- # 2. 获取新资源
303
- self._channel, self._channel_conn = await self.connection_pool.acquire_channel()
304
-
305
- # 3. 设置连接关闭回调
306
- loop = asyncio.get_running_loop()
268
+ # 仅清理后台 handler 任务(不调 queue.cancel、不关通道、不清回调)
269
+ await self._cleanup_running_tasks()
307
270
 
308
- def on_conn_closed(conn, exc):
309
- if self._closed:
310
- return
311
- logger.warning(f"检测到底层连接关闭: {exc}")
312
- try:
313
- if not loop.is_closed():
314
- asyncio.run_coroutine_threadsafe(
315
- self._safe_reconnect(), loop)
316
- except RuntimeError:
317
- pass
318
-
319
- if self._channel_conn:
320
- self._channel_conn.close_callbacks.add(on_conn_closed)
321
-
322
- # 4. 重建 Exchange/Queue
323
- await self._rebuild_resources()
271
+ # 如果已有通道且未关闭,直接复用(aio-pika Robust 自动恢复的)
272
+ if self._channel and not self._channel.is_closed:
273
+ # 通道还活着,只需重建 exchange/queue 绑定
274
+ await self._rebuild_resources()
275
+ else:
276
+ # 通道不可用,从连接池获取新通道
277
+ self._channel, self._channel_conn = await self.connection_pool.acquire_channel()
278
+ await self._rebuild_resources()
324
279
 
325
280
  except Exception as e:
326
281
  logger.error(f"客户端连接失败: {str(e)}", exc_info=True)
@@ -329,7 +284,7 @@ class RabbitMQClient:
329
284
  self._queue = None
330
285
  raise
331
286
 
332
- # 5. 恢复消费
287
+ # 恢复消费
333
288
  if was_consuming and self._message_handler:
334
289
  if self._queue:
335
290
  logger.info("🔄 检测到重连前处于消费状态,尝试自动恢复消费...")
@@ -341,41 +296,6 @@ class RabbitMQClient:
341
296
  else:
342
297
  logger.warning("⚠️ 队列对象无效,暂缓恢复消费,等待监控器兜底")
343
298
 
344
- async def _safe_reconnect(self):
345
- """安全重连任务(不限制重试次数,由连接监控器兜底)
346
-
347
- 内存安全保证:
348
- - 每次重试前通过 connect() -> _cleanup_before_reconnect() 彻底清理旧资源
349
- - _cleanup_before_reconnect 会取消后台任务、关闭旧通道、清除回调引用
350
- - connect() 持有 _connect_lock 保证不会并发创建重复资源
351
- - 拉长失败间隔,避免频繁重连累积未清理的资源
352
- """
353
- async with self._reconnect_semaphore:
354
- if self._closed or await self.is_connected:
355
- return
356
- logger.info("触发后台安全重连...")
357
- attempt = 0
358
- while not self._closed:
359
- if await self.is_connected:
360
- return
361
- attempt += 1
362
- try:
363
- # 前5次间隔5秒,之后每5次拉长到30秒,避免频繁创建/销毁资源
364
- if attempt <= 5:
365
- await asyncio.sleep(5)
366
- else:
367
- logger.info(f"已连续失败 {attempt} 次,等待30秒后继续...")
368
- await asyncio.sleep(30)
369
-
370
- # connect() 内部会先调用 _cleanup_before_reconnect() 清理旧资源
371
- # 确保不会累积未关闭的通道/回调/任务
372
- await self.connect()
373
- if await self.is_connected:
374
- return
375
- except Exception as e:
376
- logger.warning(
377
- f"后台重连尝试 {attempt} 失败: {e}")
378
-
379
299
  async def set_message_handler(self, handler: Callable) -> None:
380
300
  if not callable(handler):
381
301
  raise TypeError("消息处理器必须是可调用对象")
@@ -28,7 +28,8 @@ class RabbitMQClientManager(RabbitMQCoreService):
28
28
 
29
29
  @classmethod
30
30
  async def _clean_client_resources(cls, client: RabbitMQClient) -> None:
31
- """彻底清理客户端资源,防止重连时内存泄露"""
31
+ """清理客户端资源 — 不做破坏性清理(不调 stop_consuming/queue.cancel、不清 close_callbacks)
32
+ 信任 aio-pika Robust 自动恢复机制,只清理后台任务和置空引用。"""
32
33
  # 1. 取消正在运行的后台 handler 任务
33
34
  if client._running_tasks:
34
35
  for t in list(client._running_tasks):
@@ -43,29 +44,7 @@ class RabbitMQClientManager(RabbitMQCoreService):
43
44
  pass
44
45
  client._running_tasks.clear()
45
46
 
46
- # 2. 清理连接关闭回调(移除对 client/loop 的闭包引用)
47
- if client._channel_conn:
48
- try:
49
- if client._channel_conn.close_callbacks:
50
- client._channel_conn.close_callbacks.clear()
51
- except Exception:
52
- pass
53
-
54
- # 3. 停止消费
55
- try:
56
- if client._consumer_tag:
57
- await client.stop_consuming()
58
- except Exception as e:
59
- logger.warning(f"停止消费逻辑异常: {str(e)}")
60
-
61
- # 4. 关闭通道
62
- if client._channel and not client._channel.is_closed:
63
- try:
64
- await client._channel.close()
65
- except Exception as e:
66
- logger.warning(f"关闭通道异常: {str(e)}")
67
-
68
- # 5. 置空所有引用
47
+ # 2. 置空引用(不调 queue.cancel、不关通道、不清 close_callbacks)
69
48
  client._channel = None
70
49
  client._channel_conn = None
71
50
  client._exchange = None
@@ -16,7 +16,8 @@ class RabbitMQConnectionMonitor(RabbitMQClientManager):
16
16
 
17
17
  @classmethod
18
18
  async def _monitor_connections(cls):
19
- """连接监控任务:定期检查所有客户端连接状态和消费者健康"""
19
+ """连接监控任务:定期检查所有客户端连接状态和消费者健康
20
+ 信任 aio-pika Robust 自动恢复,Monitor 只做兜底检测+安全重启。"""
20
21
  logger.info("RabbitMQ连接监控任务启动")
21
22
  while not cls._is_shutdown:
22
23
  try:
@@ -43,20 +44,22 @@ class RabbitMQConnectionMonitor(RabbitMQClientManager):
43
44
  # 检查所有客户端连接
44
45
  for client_name, client in list(cls._clients.items()):
45
46
  try:
46
- # 跳过正在重连的客户端(任务存在于_reconnect_tasks且未完成)
47
+ # 跳过正在重连的客户端
47
48
  if client_name in cls._reconnect_tasks:
48
49
  continue
49
50
 
50
51
  client_connected = await client.is_connected
52
+
53
+ # 连接断开 → 尝试重连(不做破坏性清理)
51
54
  if not client_connected:
52
55
  logger.warning(
53
- f"客户端 '{client_name}' 连接异常,触发重连")
56
+ f"客户端 '{client_name}' 连接异常,尝试重连")
54
57
  task = asyncio.create_task(
55
58
  cls._reconnect_client_with_cleanup(client_name, client))
56
59
  cls._reconnect_tasks[client_name] = task
57
60
  continue
58
61
 
59
- # 消费者健康检查:handler存在但消费者丢失,重启消费任务
62
+ # 消费者健康检查:handler存在但消费者丢失
60
63
  if client._message_handler and client._consumer_tag is None:
61
64
  logger.warning(
62
65
  f"客户端 '{client_name}' 消费者丢失(handler存在但无consumer_tag),重新注册消费")
@@ -73,7 +76,7 @@ class RabbitMQConnectionMonitor(RabbitMQClientManager):
73
76
 
74
77
  @classmethod
75
78
  async def _restart_consumer_if_needed(cls, client_name: str):
76
- """重启消费任务(如果任务已结束或不存在)"""
79
+ """重启消费任务(修复假死问题:不仅看 task.done(),还要看 consumer_tag)"""
77
80
  try:
78
81
  from sycommon.rabbitmq.rabbitmq_service_consumer_manager import RabbitMQConsumerManager
79
82
 
@@ -81,16 +84,34 @@ class RabbitMQConnectionMonitor(RabbitMQClientManager):
81
84
  if client_name not in RabbitMQConsumerManager._message_handlers:
82
85
  return
83
86
 
84
- # 清理已结束的消费任务
85
- if client_name in RabbitMQConsumerManager._consumer_tasks:
86
- if RabbitMQConsumerManager._consumer_tasks[client_name].done():
87
- del RabbitMQConsumerManager._consumer_tasks[client_name]
88
- else:
89
- # 任务还在运行,无需重启
90
- return
87
+ # 检查消费任务状态
88
+ task_exists = client_name in RabbitMQConsumerManager._consumer_tasks
89
+ task = RabbitMQConsumerManager._consumer_tasks.get(client_name)
90
+ has_tag = client_name in RabbitMQConsumerManager._consumer_tags
91
+
92
+ # task 已结束 → 清理并重启
93
+ if task_exists and task.done():
94
+ del RabbitMQConsumerManager._consumer_tasks[client_name]
95
+ logger.info(f"消费者 '{client_name}' 任务已结束,重新创建")
96
+ await RabbitMQConsumerManager.start_consumer(client_name)
97
+ return
98
+
99
+ # task 还在运行但没有 consumer_tag → 假死!取消旧 task 并重启
100
+ if task_exists and not task.done() and not has_tag:
101
+ logger.warning(
102
+ f"消费者 '{client_name}' 检测到假死 (task运行中但无consumer_tag),强制取消并重启")
103
+ task.cancel()
104
+ try:
105
+ await asyncio.wait_for(task, timeout=5.0)
106
+ except (asyncio.TimeoutError, asyncio.CancelledError):
107
+ pass
108
+ del RabbitMQConsumerManager._consumer_tasks[client_name]
109
+ await RabbitMQConsumerManager.start_consumer(client_name)
110
+ logger.info(f"✅ 消费者 '{client_name}' 假死恢复完成")
111
+ return
112
+
113
+ # task 运行中且有 tag → 正常,无需处理
91
114
 
92
- await RabbitMQConsumerManager.start_consumer(client_name)
93
- logger.info(f"✅ 消费者 '{client_name}' 已重新注册")
94
115
  except Exception as e:
95
116
  logger.error(f"重启消费者 '{client_name}' 失败: {e}", exc_info=True)
96
117
 
@@ -177,34 +177,16 @@ class RabbitMQConsumerManager(RabbitMQClientManager):
177
177
  logger.error(
178
178
  f"消费者 '{client_name}' 发生异常: {str(e)}", exc_info=True)
179
179
  finally:
180
- # 确保清理消费者标记
180
+ # 清理 consumer tag 记录(不调 stop_consuming,不杀 RobustQueue._consumers)
181
181
  if client_name in cls._consumer_tags:
182
182
  del cls._consumer_tags[client_name]
183
- # 停止客户端消费状态
184
- try:
185
- await client.stop_consuming()
186
- except Exception:
187
- pass
183
+ client._consumer_tag = None
188
184
  logger.info(f"消费者 '{client_name}' 任务已结束")
189
185
 
190
186
  task = asyncio.create_task(
191
187
  consume_task(), name=f"consumer-{client_name}")
192
188
  cls._consumer_tasks[client_name] = task
193
189
 
194
- def task_done_callback(t: asyncio.Task) -> None:
195
- try:
196
- if t.done():
197
- exc = t.exception()
198
- if exc and not isinstance(exc, asyncio.CancelledError):
199
- logger.error(f"消费者任务 '{client_name}' 异常结束: {exc}")
200
- except asyncio.CancelledError:
201
- pass
202
- except Exception as e:
203
- logger.error(f"回调处理异常: {e}")
204
-
205
- task.add_done_callback(task_done_callback)
206
- logger.info(f"消费者任务 '{client_name}' 已创建")
207
-
208
190
  @classmethod
209
191
  async def shutdown_consumers(cls, timeout: float = 15.0) -> None:
210
192
  """关闭所有消费者 (增强版:确保资源彻底释放)"""