sycommon-python-lib 0.2.1a30__tar.gz → 0.2.1a31__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 (168) hide show
  1. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/background_execution.py +62 -16
  4. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  5. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/README.md +0 -0
  6. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/setup.cfg +0 -0
  7. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/__init__.py +0 -0
  8. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/cli.py +0 -0
  9. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/core/__init__.py +0 -0
  10. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/core/console.py +0 -0
  11. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/core/models.py +0 -0
  12. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/core/project.py +0 -0
  13. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/core/utils.py +0 -0
  14. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/templates/__init__.py +0 -0
  15. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/templates/agent/__init__.py +0 -0
  16. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/templates/base/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/command/templates/web/__init__.py +0 -0
  18. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/__init__.py +0 -0
  20. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/01_basic_agent.py +0 -0
  21. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/02_tool_agent.py +0 -0
  22. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/03_structured_output.py +0 -0
  23. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/04_memory_agent.py +0 -0
  24. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/05_streaming.py +0 -0
  25. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/06_multi_agent.py +0 -0
  26. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/07_skills_agent.py +0 -0
  27. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/08_middleware.py +0 -0
  28. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/09_interrupt.py +0 -0
  29. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/10_custom_llm.py +0 -0
  30. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/11_complex_workflow.py +0 -0
  31. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/12_batch_processing.py +0 -0
  32. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/__init__.py +0 -0
  33. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/01_basic_monitoring.py +0 -0
  34. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/02_permission_control.py +0 -0
  35. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/03_tool_skill_filter.py +0 -0
  36. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/04_caching_retry.py +0 -0
  37. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/05_sanitization.py +0 -0
  38. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/06_tracking.py +0 -0
  39. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/07_advanced.py +0 -0
  40. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/08_progressive_skills.py +0 -0
  41. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/__init__.py +0 -0
  42. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/middleware/override_examples.py +0 -0
  43. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/examples/virtual_employee_demo.py +0 -0
  44. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/exports.py +0 -0
  45. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/get_agent.py +0 -0
  46. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/sandbox/__init__.py +0 -0
  47. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  48. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/sandbox/http_sandbox_backend.py +0 -0
  49. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  50. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  51. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/sandbox/session.py +0 -0
  52. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/skills/__init__.py +0 -0
  53. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/skills/examples/faq_handler/scripts/search.py +0 -0
  54. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/skills/exports.py +0 -0
  55. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/agent/virtual_employee.py +0 -0
  56. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/Config.py +0 -0
  57. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/DatabaseConfig.py +0 -0
  58. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  59. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/EmbeddingConfig.py +0 -0
  60. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/LLMConfig.py +0 -0
  61. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/LangfuseConfig.py +0 -0
  62. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/MQConfig.py +0 -0
  63. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/RedisConfig.py +0 -0
  64. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/RerankerConfig.py +0 -0
  65. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/SentryConfig.py +0 -0
  66. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/config/__init__.py +0 -0
  67. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/async_base_db_service.py +0 -0
  68. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/async_database_service.py +0 -0
  69. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/base_db_service.py +0 -0
  70. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/database_service.py +0 -0
  71. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/elasticsearch_service.py +0 -0
  72. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/redis_service.py +0 -0
  73. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/database/token_usage_db_service.py +0 -0
  74. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/health/__init__.py +0 -0
  75. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/health/health_check.py +0 -0
  76. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/health/metrics.py +0 -0
  77. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/health/ping.py +0 -0
  78. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/heartbeat_process/__init__.py +0 -0
  79. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  80. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  81. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  82. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/__init__.py +0 -0
  83. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/embedding.py +0 -0
  84. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/get_llm.py +0 -0
  85. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/llm_logger.py +0 -0
  86. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/llm_tokens.py +0 -0
  87. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  88. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  89. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  90. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/struct_token.py +0 -0
  91. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/sy_langfuse.py +0 -0
  92. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/token_usage_es_service.py +0 -0
  93. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  94. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/llm/usage_token.py +0 -0
  95. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/__init__.py +0 -0
  96. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/async_sql_logger.py +0 -0
  97. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/kafka_log.py +0 -0
  98. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/logger_levels.py +0 -0
  99. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/logger_wrapper.py +0 -0
  100. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/process_logger.py +0 -0
  101. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/logging/sql_logger.py +0 -0
  102. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/__init__.py +0 -0
  103. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/context.py +0 -0
  104. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/cors.py +0 -0
  105. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/docs.py +0 -0
  106. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/exception.py +0 -0
  107. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/middleware.py +0 -0
  108. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/monitor_memory.py +0 -0
  109. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/mq.py +0 -0
  110. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/sandbox.py +0 -0
  111. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/timeout.py +0 -0
  112. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/middleware/traceid.py +0 -0
  113. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/base_http.py +0 -0
  115. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/log.py +0 -0
  116. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/mqlistener_config.py +0 -0
  117. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/mqmsg_model.py +0 -0
  118. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/mqsend_config.py +0 -0
  119. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/sandbox.py +0 -0
  120. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/sso_user.py +0 -0
  121. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/token_usage.py +0 -0
  122. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/models/token_usage_mysql.py +0 -0
  123. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/notice/__init__.py +0 -0
  124. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  125. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  126. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  127. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  128. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  129. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  130. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  131. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  132. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  133. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  134. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/sentry/__init__.py +0 -0
  135. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/sentry/sy_sentry.py +0 -0
  136. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/services.py +0 -0
  137. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/sse/__init__.py +0 -0
  138. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/sse/event.py +0 -0
  139. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/sse/sse.py +0 -0
  140. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/__init__.py +0 -0
  141. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/example.py +0 -0
  142. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/example2.py +0 -0
  143. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/feign.py +0 -0
  144. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/feign_client.py +0 -0
  145. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/nacos_client_base.py +0 -0
  146. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  147. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  148. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/nacos_service.py +0 -0
  149. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  150. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  151. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/synacos/param.py +0 -0
  152. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tests/deep_agent_server.py +0 -0
  153. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tests/test_deep_agent.py +0 -0
  154. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tests/test_email.py +0 -0
  155. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tests/test_mq.py +0 -0
  156. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/__init__.py +0 -0
  157. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/async_utils.py +0 -0
  158. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/docs.py +0 -0
  159. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/env.py +0 -0
  160. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/merge_headers.py +0 -0
  161. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/snowflake.py +0 -0
  162. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/syemail.py +0 -0
  163. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon/tools/timing.py +0 -0
  164. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  165. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  166. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  167. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  168. {sycommon_python_lib-0.2.1a30 → sycommon_python_lib-0.2.1a31}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a30
3
+ Version: 0.2.1a31
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.1a30"
3
+ version = "0.2.1a31"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -168,6 +168,8 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
168
168
  backend: 后端实例或工厂函数。如果为 None,从 ToolRuntime 获取。
169
169
  """
170
170
  self._backend = backend
171
+ # 缓存已解析的 backend(在 wrap_model_call 中首次获取后会缓存)
172
+ self._resolved_backend: BackendProtocol | None = None
171
173
 
172
174
  # 预创建工具(会在 wrap_model_call 中根据 backend 能力过滤)
173
175
  self.tools = [
@@ -176,14 +178,58 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
176
178
  self._create_kill_process_tool(),
177
179
  ]
178
180
 
179
- def _get_backend(self, runtime: ToolRuntime) -> BackendProtocol:
180
- """获取 backend 实例"""
181
- if self._backend is None:
182
- # 从 runtime 获取 backend
183
- return runtime.config.get("configurable", {}).get("backend")
184
- if callable(self._backend):
185
- return self._backend(runtime)
186
- return self._backend
181
+ def _get_backend_from_tool_runtime(self, runtime: ToolRuntime) -> BackendProtocol | None:
182
+ """从 ToolRuntime 获取 backend(工具函数中使用)"""
183
+ if self._resolved_backend is not None:
184
+ return self._resolved_backend
185
+
186
+ if self._backend is not None:
187
+ if callable(self._backend):
188
+ return self._backend(runtime)
189
+ return self._backend
190
+
191
+ # 尝试从 runtime.config 获取
192
+ config = getattr(runtime, 'config', None)
193
+ if config:
194
+ backend = config.get("configurable", {}).get("backend")
195
+ if backend:
196
+ self._resolved_backend = backend
197
+ return backend
198
+
199
+ # 尝试从 state 获取
200
+ state = getattr(runtime, 'state', None)
201
+ if state is not None:
202
+ self._resolved_backend = state
203
+ return state
204
+
205
+ return None
206
+
207
+ def _get_backend_from_runtime(self, runtime) -> BackendProtocol | None:
208
+ """从 Runtime 获取 backend(wrap_model_call 中使用)"""
209
+ if self._resolved_backend is not None:
210
+ return self._resolved_backend
211
+
212
+ if self._backend is not None:
213
+ if callable(self._backend):
214
+ # 构造 ToolRuntime 来调用工厂函数
215
+ from langchain.tools import ToolRuntime
216
+ config = getattr(runtime, 'config', {})
217
+ tool_runtime = ToolRuntime(
218
+ state=None,
219
+ context=getattr(runtime, 'context', None),
220
+ stream_writer=getattr(runtime, 'stream_writer', None),
221
+ store=getattr(runtime, 'store', None),
222
+ config=config,
223
+ tool_call_id=None,
224
+ )
225
+ backend = self._backend(tool_runtime)
226
+ if backend:
227
+ self._resolved_backend = backend
228
+ return backend
229
+ self._resolved_backend = self._backend
230
+ return self._backend
231
+
232
+ return None
187
233
 
188
234
  def _create_execute_background_tool(self) -> BaseTool:
189
235
  """创建 execute_background 工具"""
@@ -193,7 +239,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
193
239
  runtime: ToolRuntime[None, BackgroundExecutionState],
194
240
  timeout: Annotated[int, "命令最大运行时间(秒),默认 600 秒"] = 600,
195
241
  ) -> str:
196
- backend = self._get_backend(runtime)
242
+ backend = self._get_backend_from_tool_runtime(runtime)
197
243
 
198
244
  if not _supports_background_execution(backend):
199
245
  return "Error: 后台执行不可用。请确保 backend 实现了 execute_background 方法。"
@@ -215,7 +261,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
215
261
  runtime: ToolRuntime[None, BackgroundExecutionState],
216
262
  timeout: Annotated[int, "命令最大运行时间(秒),默认 600 秒"] = 600,
217
263
  ) -> str:
218
- backend = self._get_backend(runtime)
264
+ backend = self._get_backend_from_tool_runtime(runtime)
219
265
 
220
266
  if not _supports_background_execution(backend):
221
267
  return "Error: 后台执行不可用。请确保 backend 实现了 execute_background 方法。"
@@ -246,7 +292,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
246
292
  process_id: Annotated[str, "要检查的进程 ID"],
247
293
  runtime: ToolRuntime[None, BackgroundExecutionState],
248
294
  ) -> str:
249
- backend = self._get_backend(runtime)
295
+ backend = self._get_backend_from_tool_runtime(runtime)
250
296
 
251
297
  if not _supports_background_execution(backend):
252
298
  return "Error: 后台执行不可用。"
@@ -280,7 +326,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
280
326
  process_id: Annotated[str, "要检查的进程 ID"],
281
327
  runtime: ToolRuntime[None, BackgroundExecutionState],
282
328
  ) -> str:
283
- backend = self._get_backend(runtime)
329
+ backend = self._get_backend_from_tool_runtime(runtime)
284
330
 
285
331
  if not _supports_background_execution(backend):
286
332
  return "Error: 后台执行不可用。"
@@ -324,7 +370,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
324
370
  process_id: Annotated[str, "要终止的进程 ID"],
325
371
  runtime: ToolRuntime[None, BackgroundExecutionState],
326
372
  ) -> str:
327
- backend = self._get_backend(runtime)
373
+ backend = self._get_backend_from_tool_runtime(runtime)
328
374
 
329
375
  if not _supports_background_execution(backend):
330
376
  return "Error: 后台执行不可用。"
@@ -349,7 +395,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
349
395
  process_id: Annotated[str, "要终止的进程 ID"],
350
396
  runtime: ToolRuntime[None, BackgroundExecutionState],
351
397
  ) -> str:
352
- backend = self._get_backend(runtime)
398
+ backend = self._get_backend_from_tool_runtime(runtime)
353
399
 
354
400
  if not _supports_background_execution(backend):
355
401
  return "Error: 后台执行不可用。"
@@ -384,7 +430,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
384
430
  ) -> ModelResponse[ResponseT]:
385
431
  """在 model call 前添加工具和系统提示"""
386
432
  # 检查 backend 是否支持后台执行
387
- backend = self._get_backend(request.runtime) # type: ignore
433
+ backend = self._get_backend_from_runtime(request.runtime) # type: ignore
388
434
  if not _supports_background_execution(backend):
389
435
  # 不支持则直接透传
390
436
  return handler(request)
@@ -420,7 +466,7 @@ class BackgroundExecutionMiddleware(AgentMiddleware[BackgroundExecutionState, Co
420
466
  ) -> ModelResponse[ResponseT]:
421
467
  """(async) 在 model call 前添加工具和系统提示"""
422
468
  # 检查 backend 是否支持后台执行
423
- backend = self._get_backend(request.runtime) # type: ignore
469
+ backend = self._get_backend_from_runtime(request.runtime) # type: ignore
424
470
  if not _supports_background_execution(backend):
425
471
  return await handler(request)
426
472
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a30
3
+ Version: 0.2.1a31
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown