sycommon-python-lib 0.2.1b2__tar.gz → 0.2.1b3__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 (175) hide show
  1. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/PKG-INFO +3 -1
  2. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/pyproject.toml +3 -1
  3. sycommon_python_lib-0.2.1b3/src/sycommon/agent/__init__.py +150 -0
  4. sycommon_python_lib-0.2.1b3/src/sycommon/agent/agent_manager.py +398 -0
  5. sycommon_python_lib-0.2.1b3/src/sycommon/agent/chat_events.py +431 -0
  6. sycommon_python_lib-0.2.1b3/src/sycommon/agent/deep_agent.py +451 -0
  7. sycommon_python_lib-0.2.1b3/src/sycommon/agent/multi_agent_team.py +662 -0
  8. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/agent/sandbox/file_ops.py +156 -13
  9. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/agent/sandbox/http_sandbox_backend.py +365 -56
  10. sycommon_python_lib-0.2.1b3/src/sycommon/auth/__init__.py +36 -0
  11. sycommon_python_lib-0.2.1b3/src/sycommon/auth/ldap_service.py +340 -0
  12. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/background_execution.py +62 -16
  13. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/sandbox.py +142 -58
  14. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/sandbox.py +1 -0
  15. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/sso_user.py +6 -1
  16. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +1 -1
  17. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/services.py +70 -5
  18. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon_python_lib.egg-info/PKG-INFO +3 -1
  19. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon_python_lib.egg-info/SOURCES.txt +6 -30
  20. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon_python_lib.egg-info/requires.txt +2 -0
  21. sycommon_python_lib-0.2.1b2/src/sycommon/agent/__init__.py +0 -53
  22. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/01_basic_agent.py +0 -134
  23. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/02_tool_agent.py +0 -306
  24. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/03_structured_output.py +0 -326
  25. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/04_memory_agent.py +0 -349
  26. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/05_streaming.py +0 -332
  27. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/06_multi_agent.py +0 -460
  28. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/07_skills_agent.py +0 -436
  29. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/08_middleware.py +0 -295
  30. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/09_interrupt.py +0 -465
  31. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/10_custom_llm.py +0 -377
  32. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/11_complex_workflow.py +0 -502
  33. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/12_batch_processing.py +0 -457
  34. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/__init__.py +0 -44
  35. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/01_basic_monitoring.py +0 -492
  36. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/02_permission_control.py +0 -740
  37. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/03_tool_skill_filter.py +0 -806
  38. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/04_caching_retry.py +0 -728
  39. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/05_sanitization.py +0 -721
  40. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/06_tracking.py +0 -649
  41. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/07_advanced.py +0 -814
  42. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/08_progressive_skills.py +0 -930
  43. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/__init__.py +0 -40
  44. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/middleware/override_examples.py +0 -547
  45. sycommon_python_lib-0.2.1b2/src/sycommon/agent/examples/virtual_employee_demo.py +0 -463
  46. sycommon_python_lib-0.2.1b2/src/sycommon/agent/exports.py +0 -107
  47. sycommon_python_lib-0.2.1b2/src/sycommon/agent/get_agent.py +0 -205
  48. sycommon_python_lib-0.2.1b2/src/sycommon/agent/skills/__init__.py +0 -18
  49. sycommon_python_lib-0.2.1b2/src/sycommon/agent/skills/examples/faq_handler/scripts/search.py +0 -68
  50. sycommon_python_lib-0.2.1b2/src/sycommon/agent/skills/exports.py +0 -78
  51. sycommon_python_lib-0.2.1b2/src/sycommon/agent/virtual_employee.py +0 -774
  52. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/README.md +0 -0
  53. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/setup.cfg +0 -0
  54. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/__init__.py +0 -0
  55. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/cli.py +0 -0
  56. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/core/__init__.py +0 -0
  57. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/core/console.py +0 -0
  58. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/core/models.py +0 -0
  59. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/core/project.py +0 -0
  60. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/core/utils.py +0 -0
  61. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/templates/__init__.py +0 -0
  62. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/templates/agent/__init__.py +0 -0
  63. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/templates/base/__init__.py +0 -0
  64. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/command/templates/web/__init__.py +0 -0
  65. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/__init__.py +0 -0
  66. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/agent/sandbox/__init__.py +0 -0
  67. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  68. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  69. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/agent/sandbox/session.py +0 -0
  70. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/Config.py +0 -0
  71. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/DatabaseConfig.py +0 -0
  72. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  73. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/EmbeddingConfig.py +0 -0
  74. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/LLMConfig.py +0 -0
  75. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/LangfuseConfig.py +0 -0
  76. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/MQConfig.py +0 -0
  77. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/RedisConfig.py +0 -0
  78. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/RerankerConfig.py +0 -0
  79. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/SentryConfig.py +0 -0
  80. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/config/__init__.py +0 -0
  81. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/async_base_db_service.py +0 -0
  82. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/async_database_service.py +0 -0
  83. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/base_db_service.py +0 -0
  84. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/database_service.py +0 -0
  85. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/elasticsearch_service.py +0 -0
  86. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/redis_service.py +0 -0
  87. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/database/token_usage_db_service.py +0 -0
  88. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/health/__init__.py +0 -0
  89. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/health/health_check.py +0 -0
  90. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/health/metrics.py +0 -0
  91. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/health/ping.py +0 -0
  92. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/heartbeat_process/__init__.py +0 -0
  93. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  94. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  95. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  96. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/__init__.py +0 -0
  97. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/embedding.py +0 -0
  98. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/get_llm.py +0 -0
  99. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/llm_logger.py +0 -0
  100. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/llm_tokens.py +0 -0
  101. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  102. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  103. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  104. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/struct_token.py +0 -0
  105. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/sy_langfuse.py +0 -0
  106. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/token_usage_es_service.py +0 -0
  107. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  108. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/llm/usage_token.py +0 -0
  109. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/__init__.py +0 -0
  110. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/async_sql_logger.py +0 -0
  111. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/kafka_log.py +0 -0
  112. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/logger_levels.py +0 -0
  113. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/logger_wrapper.py +0 -0
  114. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/process_logger.py +0 -0
  115. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/logging/sql_logger.py +0 -0
  116. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/context.py +0 -0
  118. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/cors.py +0 -0
  119. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/docs.py +0 -0
  120. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/exception.py +0 -0
  121. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/middleware.py +0 -0
  122. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/monitor_memory.py +0 -0
  123. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/mq.py +0 -0
  124. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/timeout.py +0 -0
  125. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/middleware/traceid.py +0 -0
  126. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/__init__.py +0 -0
  127. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/base_http.py +0 -0
  128. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/log.py +0 -0
  129. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/mqlistener_config.py +0 -0
  130. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/mqmsg_model.py +0 -0
  131. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/mqsend_config.py +0 -0
  132. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/token_usage.py +0 -0
  133. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/models/token_usage_mysql.py +0 -0
  134. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/notice/__init__.py +0 -0
  135. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  136. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  137. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  138. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  139. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  140. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  141. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  142. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  143. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  144. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/sentry/__init__.py +0 -0
  145. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/sentry/sy_sentry.py +0 -0
  146. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/sse/__init__.py +0 -0
  147. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/sse/event.py +0 -0
  148. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/sse/sse.py +0 -0
  149. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/__init__.py +0 -0
  150. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/example.py +0 -0
  151. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/example2.py +0 -0
  152. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/feign.py +0 -0
  153. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/feign_client.py +0 -0
  154. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/nacos_client_base.py +0 -0
  155. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  156. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  157. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/nacos_service.py +0 -0
  158. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  159. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  160. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/synacos/param.py +0 -0
  161. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tests/deep_agent_server.py +0 -0
  162. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tests/test_deep_agent.py +0 -0
  163. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tests/test_email.py +0 -0
  164. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tests/test_mq.py +0 -0
  165. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/__init__.py +0 -0
  166. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/async_utils.py +0 -0
  167. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/docs.py +0 -0
  168. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/env.py +0 -0
  169. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/merge_headers.py +0 -0
  170. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/snowflake.py +0 -0
  171. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/syemail.py +0 -0
  172. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon/tools/timing.py +0 -0
  173. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  174. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  175. {sycommon_python_lib-0.2.1b2 → sycommon_python_lib-0.2.1b3}/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.1b2
3
+ Version: 0.2.1b3
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -19,6 +19,7 @@ Requires-Dist: langchain-core>=1.2.20
19
19
  Requires-Dist: langchain-openai>=1.1.11
20
20
  Requires-Dist: langfuse>=4.0.1
21
21
  Requires-Dist: langgraph>=1.1.3
22
+ Requires-Dist: ldap3>=2.9.1
22
23
  Requires-Dist: loguru>=0.7.3
23
24
  Requires-Dist: mysql-connector-python>=9.6.0
24
25
  Requires-Dist: nacos-sdk-python<3.0,>=2.0.9
@@ -33,6 +34,7 @@ Requires-Dist: sqlalchemy[asyncio]>=2.0.48
33
34
  Requires-Dist: starlette[full]>=1.0.0
34
35
  Requires-Dist: tiktoken>=0.12.0
35
36
  Requires-Dist: uvicorn>=0.42.0
37
+ Requires-Dist: wecom-aibot-python-sdk>=1.0.2
36
38
 
37
39
  # sycommon-python-lib
38
40
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.1b2"
3
+ version = "0.2.1b3"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -20,6 +20,7 @@ dependencies = [
20
20
  "langchain-openai>=1.1.11",
21
21
  "langfuse>=4.0.1",
22
22
  "langgraph>=1.1.3",
23
+ "ldap3>=2.9.1",
23
24
  "loguru>=0.7.3",
24
25
  "mysql-connector-python>=9.6.0",
25
26
  "nacos-sdk-python>=2.0.9,<3.0",
@@ -34,6 +35,7 @@ dependencies = [
34
35
  "starlette[full]>=1.0.0",
35
36
  "tiktoken>=0.12.0",
36
37
  "uvicorn>=0.42.0",
38
+ "wecom-aibot-python-sdk>=1.0.2",
37
39
  ]
38
40
 
39
41
  [tool.setuptools]
@@ -0,0 +1,150 @@
1
+ """
2
+ Agent 模块
3
+
4
+ 提供数字员工和数字团队的高级封装方案,方便后续其他服务接入使用。
5
+
6
+ 核心组件:
7
+ - DeepAgent: 数字员工(单 Agent)
8
+ - MultiAgentTeam: 数字团队(多 Agent 协作)
9
+ - SandboxBackend: 沙箱后端(用于代码执行)
10
+ - ChatEvent: 聊天事件(前后端交互数据结构)
11
+
12
+ 使用示例:
13
+
14
+ # 1. 简单的数字员工
15
+ from sycommon.agent import create_deep_agent
16
+
17
+ agent = await create_deep_agent(user_id="user123")
18
+ async for event in agent.chat("帮我写一个 Python 脚本"):
19
+ yield event.to_sse() # 直接转换为 SSE 格式
20
+
21
+ # 2. 自定义模型的数字员工
22
+ from sycommon.agent import create_deep_agent, AgentConfig
23
+
24
+ config = AgentConfig(
25
+ model_name="gpt-4o",
26
+ model_provider="openai",
27
+ system_prompt="你是一个后端工程师...",
28
+ )
29
+ agent = await create_deep_agent(user_id="user123", config=config)
30
+
31
+ # 3. 数字团队(多 Agent 协作)
32
+ from sycommon.agent import create_multi_agent_team, TeamMember
33
+
34
+ team = await create_multi_agent_team(
35
+ user_id="user123",
36
+ members=[
37
+ TeamMember(name="后端工程师", description="负责后端开发..."),
38
+ TeamMember(name="前端工程师", description="负责前端开发..."),
39
+ ],
40
+ )
41
+ async for event in team.chat("帮我开发一个 TODO 应用"):
42
+ yield event.to_sse()
43
+
44
+ # 4. 使用 ChatEventBuilder 构建事件
45
+ from sycommon.agent import ChatEventBuilder
46
+
47
+ event = ChatEventBuilder.ai_chunk("你好")
48
+ event = ChatEventBuilder.tool_call("execute", {"command": "ls"}, "call_123")
49
+
50
+ # 5. 通过 Services.plugins 接入
51
+ from fastapi import FastAPI
52
+ from sycommon.services import Services
53
+
54
+ app = Services.plugins(
55
+ app=FastAPI(),
56
+ deep_agent_service=True, # 启用数字员工服务
57
+ # 或
58
+ multi_agent_service=True, # 启用数字团队服务
59
+ )
60
+ """
61
+
62
+ from sycommon.agent.sandbox import (
63
+ HTTPSandboxBackend,
64
+ SandboxPool,
65
+ SandboxInstance,
66
+ SandboxRecoveryManager,
67
+ areset_all_sandboxes,
68
+ aget_sandbox_status,
69
+ )
70
+ from sycommon.agent.deep_agent import (
71
+ AgentConfig,
72
+ DeepAgent,
73
+ create_deep_agent,
74
+ )
75
+ from sycommon.agent.multi_agent_team import (
76
+ TeamMember,
77
+ TeamConfig,
78
+ MultiAgentTeam,
79
+ create_multi_agent_team,
80
+ )
81
+ from sycommon.agent.agent_manager import (
82
+ AgentManager,
83
+ AgentInfo,
84
+ get_agent_manager,
85
+ create_agent,
86
+ create_team,
87
+ get_agent,
88
+ destroy_agent,
89
+ )
90
+ from sycommon.agent.chat_events import (
91
+ ChatEvent,
92
+ ChatEventBuilder,
93
+ EventType,
94
+ DEFAULT_AGENT_NAME,
95
+ is_multi_agent_mode,
96
+ # 便捷函数
97
+ progress_event,
98
+ ai_chunk_event,
99
+ tool_call_event,
100
+ tool_result_event,
101
+ agent_switch_event,
102
+ parallel_agents_event,
103
+ agent_complete_event,
104
+ done_event,
105
+ error_event,
106
+ cancelled_event,
107
+ )
108
+
109
+ __all__ = [
110
+ # 沙箱
111
+ "HTTPSandboxBackend",
112
+ "SandboxPool",
113
+ "SandboxInstance",
114
+ "SandboxRecoveryManager",
115
+ "areset_all_sandboxes",
116
+ "aget_sandbox_status",
117
+
118
+ # 数字员工
119
+ "AgentConfig",
120
+ "DeepAgent",
121
+ "create_deep_agent",
122
+
123
+ # 数字团队
124
+ "TeamMember",
125
+ "TeamConfig",
126
+ "MultiAgentTeam",
127
+ "create_multi_agent_team",
128
+
129
+ # Agent 管理
130
+ "AgentManager",
131
+ "AgentInfo",
132
+ "get_agent_manager",
133
+
134
+ # 聊天事件
135
+ "ChatEvent",
136
+ "ChatEventBuilder",
137
+ "EventType",
138
+ "DEFAULT_AGENT_NAME",
139
+ "is_multi_agent_mode",
140
+ "progress_event",
141
+ "ai_chunk_event",
142
+ "tool_call_event",
143
+ "tool_result_event",
144
+ "agent_switch_event",
145
+ "parallel_agents_event",
146
+ "agent_complete_event",
147
+ "done_event",
148
+ "error_event",
149
+ "cancelled_event",
150
+ ]
@@ -0,0 +1,398 @@
1
+ """
2
+ Agent 管理器
3
+
4
+ 提供数字员工和数字团队的动态创建和管理能力。
5
+ 支持运行时动态创建、销毁、查询 Agent。
6
+
7
+ 使用示例:
8
+
9
+ from sycommon.agent import AgentManager, AgentConfig, TeamMember, TeamConfig
10
+
11
+ # 获取管理器实例
12
+ manager = AgentManager()
13
+
14
+ # 1. 创建单个数字员工
15
+ agent = await manager.create_agent(
16
+ user_id="user123",
17
+ config=AgentConfig(
18
+ model_name="gpt-4o",
19
+ system_prompt="你是后端工程师...",
20
+ ),
21
+ )
22
+
23
+ # 2. 创建数字团队
24
+ team = await manager.create_team(
25
+ user_id="user456",
26
+ members=[
27
+ TeamMember(name="后端工程师", description="负责后端开发"),
28
+ TeamMember(name="前端工程师", description="负责前端开发"),
29
+ ],
30
+ config=TeamConfig(model_name="gpt-4o"),
31
+ )
32
+
33
+ # 3. 获取已存在的 agent
34
+ agent = await manager.get_agent("user123")
35
+
36
+ # 4. 销毁 agent
37
+ await manager.destroy_agent("user123")
38
+
39
+ # 5. 列出所有 agent
40
+ agents = manager.list_agents()
41
+ """
42
+
43
+ import asyncio
44
+ from typing import Any, Dict, List, Optional, Union
45
+ from pathlib import Path
46
+
47
+ from pydantic import BaseModel
48
+ from sycommon.logging.kafka_log import SYLogger
49
+ from sycommon.agent.sandbox.http_sandbox_backend import HTTPSandboxBackend
50
+ from sycommon.agent.deep_agent import DeepAgent, AgentConfig, create_deep_agent
51
+ from sycommon.agent.multi_agent_team import MultiAgentTeam, TeamMember, TeamConfig, create_multi_agent_team
52
+ from sycommon.config.Config import SingletonMeta
53
+
54
+
55
+ class AgentInfo(BaseModel):
56
+ """Agent 信息(用于序列化返回)"""
57
+ user_id: str
58
+ type: str # "agent" 或 "team"
59
+ config: Dict[str, Any] = {}
60
+ members: List[Dict[str, str]] = [] # 团队成员信息
61
+ sandbox_backend: Optional[str] = None
62
+
63
+
64
+ class AgentManager(metaclass=SingletonMeta):
65
+ """
66
+ Agent 管理器
67
+
68
+ 负责数字员工和数字团队的生命周期管理:
69
+ - 创建/销毁 Agent
70
+ - 会话管理
71
+ - 配置管理
72
+ """
73
+
74
+ def __init__(self):
75
+ self._agents: Dict[str, Union[DeepAgent, MultiAgentTeam]] = {}
76
+ self._agent_configs: Dict[str, AgentInfo] = {}
77
+ self._sandbox_backends: Dict[str, HTTPSandboxBackend] = {}
78
+ self._lock = asyncio.Lock()
79
+
80
+ async def create_agent(
81
+ self,
82
+ user_id: str,
83
+ config: Optional[AgentConfig] = None,
84
+ project_root: Optional[Path] = None,
85
+ force_recreate: bool = False,
86
+ ) -> DeepAgent:
87
+ """
88
+ 创建或获取数字员工
89
+
90
+ Args:
91
+ user_id: 用户 ID
92
+ config: Agent 配置(AgentConfig 对象)
93
+ project_root: 项目根目录
94
+ force_recreate: 是否强制重新创建(即使已存在)
95
+
96
+ Returns:
97
+ DeepAgent: 数字员工实例
98
+ """
99
+ async with self._lock:
100
+ # 检查是否已存在
101
+ if not force_recreate and user_id in self._agents:
102
+ agent = self._agents[user_id]
103
+ if isinstance(agent, DeepAgent):
104
+ return agent
105
+
106
+ # 使用默认配置
107
+ if config is None:
108
+ config = AgentConfig()
109
+
110
+ # 创建 agent
111
+ agent = await create_deep_agent(
112
+ user_id=user_id,
113
+ config=config,
114
+ project_root=project_root,
115
+ )
116
+
117
+ # 保存引用
118
+ self._agents[user_id] = agent
119
+ self._agent_configs[user_id] = AgentInfo(
120
+ user_id=user_id,
121
+ type="agent",
122
+ config=config.model_dump(exclude={'tools'}), # 排除不可序列化的 tools
123
+ sandbox_backend=agent.sandbox_backend.base_url,
124
+ )
125
+ self._sandbox_backends[user_id] = agent.sandbox_backend
126
+
127
+ SYLogger.info(f"[AgentManager] 创建数字员工: {user_id}")
128
+ return agent
129
+
130
+ async def create_team(
131
+ self,
132
+ user_id: str,
133
+ members: List[TeamMember],
134
+ config: Optional[TeamConfig] = None,
135
+ project_root: Optional[Path] = None,
136
+ force_recreate: bool = False,
137
+ ) -> MultiAgentTeam:
138
+ """
139
+ 创建或获取数字团队
140
+
141
+ Args:
142
+ user_id: 用户 ID
143
+ members: 团队成员列表(TeamMember 对象)
144
+ config: 团队配置(TeamConfig 对象)
145
+ project_root: 项目根目录
146
+ force_recreate: 是否强制重新创建(即使已存在)
147
+
148
+ Returns:
149
+ MultiAgentTeam: 数字团队实例
150
+ """
151
+ async with self._lock:
152
+ # 检查是否已存在
153
+ if not force_recreate and user_id in self._agents:
154
+ agent = self._agents[user_id]
155
+ if isinstance(agent, MultiAgentTeam):
156
+ return agent
157
+
158
+ # 使用默认配置
159
+ if config is None:
160
+ config = TeamConfig()
161
+
162
+ # 创建团队
163
+ team = await create_multi_agent_team(
164
+ user_id=user_id,
165
+ members=members,
166
+ config=config,
167
+ project_root=project_root,
168
+ )
169
+
170
+ # 保存引用
171
+ self._agents[user_id] = team
172
+ self._agent_configs[user_id] = AgentInfo(
173
+ user_id=user_id,
174
+ type="team",
175
+ config=config.model_dump(exclude={'shared_tools'}), # 排除不可序列化的 tools
176
+ members=[{"name": m.name, "description": m.description} for m in members],
177
+ sandbox_backend=team.sandbox_backend.base_url,
178
+ )
179
+ self._sandbox_backends[user_id] = team.sandbox_backend
180
+
181
+ SYLogger.info(f"[AgentManager] 创建数字团队: {user_id}, 成员: {[m.name for m in members]}")
182
+ return team
183
+
184
+ async def get_agent(self, user_id: str) -> Optional[Union[DeepAgent, MultiAgentTeam]]:
185
+ """
186
+ 获取已存在的 Agent
187
+
188
+ Args:
189
+ user_id: 用户 ID
190
+
191
+ Returns:
192
+ DeepAgent | MultiAgentTeam | None: Agent 实例或 None
193
+ """
194
+ return self._agents.get(user_id)
195
+
196
+ async def get_or_create_agent(
197
+ self,
198
+ user_id: str,
199
+ config: Optional[AgentConfig] = None,
200
+ project_root: Optional[Path] = None,
201
+ ) -> DeepAgent:
202
+ """
203
+ 获取或创建数字员工
204
+
205
+ Args:
206
+ user_id: 用户 ID
207
+ config: Agent 配置
208
+ project_root: 项目根目录
209
+
210
+ Returns:
211
+ DeepAgent: 数字员工实例
212
+ """
213
+ agent = await self.get_agent(user_id)
214
+ if agent and isinstance(agent, DeepAgent):
215
+ return agent
216
+ return await self.create_agent(user_id, config, project_root)
217
+
218
+ async def get_or_create_team(
219
+ self,
220
+ user_id: str,
221
+ members: List[TeamMember],
222
+ config: Optional[TeamConfig] = None,
223
+ project_root: Optional[Path] = None,
224
+ ) -> MultiAgentTeam:
225
+ """
226
+ 获取或创建数字团队
227
+
228
+ Args:
229
+ user_id: 用户 ID
230
+ members: 团队成员列表
231
+ config: 团队配置
232
+ project_root: 项目根目录
233
+
234
+ Returns:
235
+ MultiAgentTeam: 数字团队实例
236
+ """
237
+ agent = await self.get_agent(user_id)
238
+ if agent and isinstance(agent, MultiAgentTeam):
239
+ return agent
240
+ return await self.create_team(user_id, members, config, project_root)
241
+
242
+ async def destroy_agent(self, user_id: str) -> bool:
243
+ """
244
+ 销毁 Agent
245
+
246
+ Args:
247
+ user_id: 用户 ID
248
+
249
+ Returns:
250
+ bool: 是否成功销毁
251
+ """
252
+ async with self._lock:
253
+ if user_id not in self._agents:
254
+ return False
255
+
256
+ # 清理引用
257
+ del self._agents[user_id]
258
+ if user_id in self._agent_configs:
259
+ del self._agent_configs[user_id]
260
+ if user_id in self._sandbox_backends:
261
+ del self._sandbox_backends[user_id]
262
+
263
+ SYLogger.info(f"[AgentManager] 销毁 Agent: {user_id}")
264
+ return True
265
+
266
+ def list_agents(self) -> List[AgentInfo]:
267
+ """
268
+ 列出所有 Agent
269
+
270
+ Returns:
271
+ List[AgentInfo]: Agent 信息列表
272
+ """
273
+ return list(self._agent_configs.values())
274
+
275
+ def get_agent_info(self, user_id: str) -> Optional[AgentInfo]:
276
+ """
277
+ 获取 Agent 信息
278
+
279
+ Args:
280
+ user_id: 用户 ID
281
+
282
+ Returns:
283
+ AgentInfo | None: Agent 信息
284
+ """
285
+ return self._agent_configs.get(user_id)
286
+
287
+ def is_multi_agent(self, user_id: str) -> bool:
288
+ """
289
+ 判断是否为多 Agent 模式
290
+
291
+ Args:
292
+ user_id: 用户 ID
293
+
294
+ Returns:
295
+ bool: True 表示数字团队,False 表示单个数字员工
296
+ """
297
+ info = self._agent_configs.get(user_id)
298
+ return info.type == "team" if info else False
299
+
300
+ @property
301
+ def count(self) -> int:
302
+ """当前 Agent 数量"""
303
+ return len(self._agents)
304
+
305
+ async def clear_all(self) -> int:
306
+ """
307
+ 清理所有 Agent
308
+
309
+ Returns:
310
+ int: 清理的 Agent 数量
311
+ """
312
+ async with self._lock:
313
+ count = len(self._agents)
314
+ self._agents.clear()
315
+ self._agent_configs.clear()
316
+ self._sandbox_backends.clear()
317
+ SYLogger.info(f"[AgentManager] 清理所有 Agent: {count} 个")
318
+ return count
319
+
320
+
321
+ # 全局便捷函数
322
+ def get_agent_manager() -> AgentManager:
323
+ """获取 Agent 管理器实例"""
324
+ return AgentManager()
325
+
326
+
327
+ async def create_agent(
328
+ user_id: str,
329
+ config: Optional[AgentConfig] = None,
330
+ project_root: Optional[Path] = None,
331
+ force_recreate: bool = False,
332
+ ) -> DeepAgent:
333
+ """
334
+ 便捷函数:创建数字员工
335
+
336
+ Args:
337
+ user_id: 用户 ID
338
+ config: Agent 配置(AgentConfig 对象)
339
+ project_root: 项目根目录
340
+ force_recreate: 是否强制重新创建
341
+
342
+ Returns:
343
+ DeepAgent: 数字员工实例
344
+ """
345
+ manager = get_agent_manager()
346
+ return await manager.create_agent(user_id, config, project_root, force_recreate)
347
+
348
+
349
+ async def create_team(
350
+ user_id: str,
351
+ members: List[TeamMember],
352
+ config: Optional[TeamConfig] = None,
353
+ project_root: Optional[Path] = None,
354
+ force_recreate: bool = False,
355
+ ) -> MultiAgentTeam:
356
+ """
357
+ 便捷函数:创建数字团队
358
+
359
+ Args:
360
+ user_id: 用户 ID
361
+ members: 团队成员列表(TeamMember 对象)
362
+ config: 团队配置(TeamConfig 对象)
363
+ project_root: 项目根目录
364
+ force_recreate: 是否强制重新创建
365
+
366
+ Returns:
367
+ MultiAgentTeam: 数字团队实例
368
+ """
369
+ manager = get_agent_manager()
370
+ return await manager.create_team(user_id, members, config, project_root, force_recreate)
371
+
372
+
373
+ async def get_agent(user_id: str) -> Optional[Union[DeepAgent, MultiAgentTeam]]:
374
+ """
375
+ 便捷函数:获取 Agent
376
+
377
+ Args:
378
+ user_id: 用户 ID
379
+
380
+ Returns:
381
+ DeepAgent | MultiAgentTeam | None: Agent 实例
382
+ """
383
+ manager = get_agent_manager()
384
+ return await manager.get_agent(user_id)
385
+
386
+
387
+ async def destroy_agent(user_id: str) -> bool:
388
+ """
389
+ 便捷函数:销毁 Agent
390
+
391
+ Args:
392
+ user_id: 用户 ID
393
+
394
+ Returns:
395
+ bool: 是否成功
396
+ """
397
+ manager = get_agent_manager()
398
+ return await manager.destroy_agent(user_id)