sycommon-python-lib 0.2.1a48__tar.gz → 0.2.1a50__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 (194) hide show
  1. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/__init__.py +1 -1
  4. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/chat_events.py +19 -11
  5. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/deep_agent.py +11 -4
  6. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/multi_agent_team.py +4 -2
  7. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/sandbox/http_sandbox_backend.py +13 -30
  8. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/kafka_log.py +1 -2
  9. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/sandbox.py +27 -0
  10. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/sandbox.py +13 -0
  11. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  12. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/README.md +0 -0
  13. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/setup.cfg +0 -0
  14. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/__init__.py +0 -0
  15. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/cli.py +0 -0
  16. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/core/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/core/console.py +0 -0
  18. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/core/models.py +0 -0
  19. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/core/project.py +0 -0
  20. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/core/utils.py +0 -0
  21. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/templates/__init__.py +0 -0
  22. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/templates/agent/__init__.py +0 -0
  23. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/templates/base/__init__.py +0 -0
  24. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/command/templates/web/__init__.py +0 -0
  25. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/__init__.py +0 -0
  26. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/__main__.py +0 -0
  27. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/agents/__init__.py +0 -0
  28. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/agents/factory.py +0 -0
  29. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/agents/prompts.py +0 -0
  30. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/cli.py +0 -0
  31. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/__init__.py +0 -0
  32. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/chat_cmd.py +0 -0
  33. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/create_cmd.py +0 -0
  34. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/evaluate_cmd.py +0 -0
  35. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/init_cmd.py +0 -0
  36. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/memory_cmd.py +0 -0
  37. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/resume_cmd.py +0 -0
  38. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/rollback_cmd.py +0 -0
  39. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/commands/run_cmd.py +0 -0
  40. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/__init__.py +0 -0
  41. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/backend.py +0 -0
  42. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/config.py +0 -0
  43. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/display.py +0 -0
  44. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/git_integration.py +0 -0
  45. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/llm.py +0 -0
  46. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/core/state.py +0 -0
  47. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/evaluate/__init__.py +0 -0
  48. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/evaluate/api_evaluator.py +0 -0
  49. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/memory/__init__.py +0 -0
  50. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/memory/compressor.py +0 -0
  51. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/memory/full.py +0 -0
  52. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/memory/hot.py +0 -0
  53. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/memory/manager.py +0 -0
  54. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/memory/warm.py +0 -0
  55. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/mode/__init__.py +0 -0
  56. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/mode/create.py +0 -0
  57. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/mode/optimize.py +0 -0
  58. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/models/__init__.py +0 -0
  59. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/models/config_models.py +0 -0
  60. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/__init__.py +0 -0
  61. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/convergence.py +0 -0
  62. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/engine.py +0 -0
  63. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/history.py +0 -0
  64. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/reward.py +0 -0
  65. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/strategy_bandit.py +0 -0
  66. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/strategy_generator.py +0 -0
  67. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/rl/strategy_prompts.py +0 -0
  68. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycli/skills/__init__.py +0 -0
  69. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/__init__.py +0 -0
  70. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/agent_manager.py +0 -0
  71. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/sandbox/__init__.py +0 -0
  72. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  73. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  74. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  75. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/agent/sandbox/session.py +0 -0
  76. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/auth/__init__.py +0 -0
  77. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/auth/ldap_service.py +0 -0
  78. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/Config.py +0 -0
  79. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/DatabaseConfig.py +0 -0
  80. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  81. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/EmbeddingConfig.py +0 -0
  82. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/LLMConfig.py +0 -0
  83. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/LangfuseConfig.py +0 -0
  84. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/MQConfig.py +0 -0
  85. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/RedisConfig.py +0 -0
  86. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/RerankerConfig.py +0 -0
  87. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/SentryConfig.py +0 -0
  88. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/XxlJobConfig.py +0 -0
  89. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/config/__init__.py +0 -0
  90. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/async_base_db_service.py +0 -0
  91. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/async_database_service.py +0 -0
  92. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/base_db_service.py +0 -0
  93. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/database_service.py +0 -0
  94. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/elasticsearch_service.py +0 -0
  95. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/redis_service.py +0 -0
  96. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/database/token_usage_db_service.py +0 -0
  97. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/health/__init__.py +0 -0
  98. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/health/health_check.py +0 -0
  99. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/health/metrics.py +0 -0
  100. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/health/ping.py +0 -0
  101. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/heartbeat_process/__init__.py +0 -0
  102. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  103. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  104. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  105. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/__init__.py +0 -0
  106. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/embedding.py +0 -0
  107. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/get_llm.py +0 -0
  108. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/llm_logger.py +0 -0
  109. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/llm_tokens.py +0 -0
  110. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  111. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  112. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  113. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/struct_token.py +0 -0
  114. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/sy_langfuse.py +0 -0
  115. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/token_usage_es_service.py +0 -0
  116. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  117. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/llm/usage_token.py +0 -0
  118. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/__init__.py +0 -0
  119. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/async_sql_logger.py +0 -0
  120. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/logger_levels.py +0 -0
  121. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/logger_wrapper.py +0 -0
  122. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/process_logger.py +0 -0
  123. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/logging/sql_logger.py +0 -0
  124. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/__init__.py +0 -0
  125. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/background_execution.py +0 -0
  126. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/context.py +0 -0
  127. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/cors.py +0 -0
  128. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/docs.py +0 -0
  129. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/exception.py +0 -0
  130. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/middleware.py +0 -0
  131. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/monitor_memory.py +0 -0
  132. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/mq.py +0 -0
  133. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/timeout.py +0 -0
  134. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/token_tracking.py +0 -0
  135. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/middleware/traceid.py +0 -0
  136. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/__init__.py +0 -0
  137. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/base_http.py +0 -0
  138. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/log.py +0 -0
  139. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/mqlistener_config.py +0 -0
  140. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/mqmsg_model.py +0 -0
  141. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/mqsend_config.py +0 -0
  142. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/sso_user.py +0 -0
  143. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/token_usage.py +0 -0
  144. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/token_usage_mysql.py +0 -0
  145. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/models/xxljob_handler_config.py +0 -0
  146. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/notice/__init__.py +0 -0
  147. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  148. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  149. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  150. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  151. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  152. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  153. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  154. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  155. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  156. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  157. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/sentry/__init__.py +0 -0
  158. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/sentry/sy_sentry.py +0 -0
  159. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/services.py +0 -0
  160. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/sse/__init__.py +0 -0
  161. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/sse/event.py +0 -0
  162. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/sse/sse.py +0 -0
  163. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/__init__.py +0 -0
  164. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/example.py +0 -0
  165. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/example2.py +0 -0
  166. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/feign.py +0 -0
  167. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/feign_client.py +0 -0
  168. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/nacos_client_base.py +0 -0
  169. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  170. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  171. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/nacos_service.py +0 -0
  172. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  173. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  174. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/synacos/param.py +0 -0
  175. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tests/deep_agent_server.py +0 -0
  176. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tests/test_deep_agent.py +0 -0
  177. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tests/test_email.py +0 -0
  178. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tests/test_mq.py +0 -0
  179. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/__init__.py +0 -0
  180. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/async_utils.py +0 -0
  181. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/docs.py +0 -0
  182. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/env.py +0 -0
  183. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/merge_headers.py +0 -0
  184. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/snowflake.py +0 -0
  185. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/syemail.py +0 -0
  186. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/tools/timing.py +0 -0
  187. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/xxljob/__init__.py +0 -0
  188. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon/xxljob/xxljob_service.py +0 -0
  189. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  190. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  191. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  192. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  193. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  194. {sycommon_python_lib-0.2.1a48 → sycommon_python_lib-0.2.1a50}/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.1a48
3
+ Version: 0.2.1a50
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.1a48"
3
+ version = "0.2.1a50"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -45,7 +45,7 @@ Agent 模块
45
45
  from sycommon.agent import ChatEventBuilder
46
46
 
47
47
  event = ChatEventBuilder.ai_chunk("你好")
48
- event = ChatEventBuilder.tool_call("execute", {"command": "ls"}, "call_123")
48
+ event = ChatEventBuilder.tool_call("execute", {"command": "ls"}, tool_call_id="call_123")
49
49
 
50
50
  # 5. 通过 Services.plugins 接入
51
51
  from fastapi import FastAPI
@@ -16,7 +16,7 @@
16
16
  # 构建事件
17
17
  event = ChatEventBuilder.ai_chunk("你好世界", agent="助手") # 单人
18
18
  event = ChatEventBuilder.ai_chunk("你好世界", agent="后端工程师") # 团队
19
- event = ChatEventBuilder.tool_call("execute", {"command": "ls"}, "call_123", agent="助手")
19
+ event = ChatEventBuilder.tool_call("execute", {"command": "ls"}, tool_call_id="call_123", agent="助手")
20
20
  event = ChatEventBuilder.progress("agent", 1, agent="助手")
21
21
 
22
22
  # 转换为字典(用于 JSON 序列化)
@@ -189,7 +189,8 @@ class ChatEventBuilder:
189
189
  def tool_call(
190
190
  name: str,
191
191
  args: Dict[str, Any],
192
- id: str = "",
192
+ tool_call_id: str = "",
193
+ id: Optional[str] = None,
193
194
  agent: Optional[str] = None,
194
195
  ) -> ChatEvent:
195
196
  """
@@ -198,22 +199,26 @@ class ChatEventBuilder:
198
199
  Args:
199
200
  name: 工具名称
200
201
  args: 工具参数
201
- id: 工具调用 ID(用于匹配结果)
202
+ tool_call_id: 工具调用 ID(LLM 生成的,用于匹配 tool_result)
203
+ id: AIMessage 自身的消息 ID(来自 BaseMessage.id)
202
204
  agent: 调用工具的 Agent 名称(可选,团队模式使用)
203
205
 
204
206
  Returns:
205
207
  ChatEvent: 工具调用事件
206
208
  """
207
- data = {"name": name, "args": args, "id": id}
209
+ data = {"name": name, "args": args, "tool_call_id": tool_call_id}
210
+ if id:
211
+ data["id"] = id
208
212
  if agent:
209
213
  data["agent"] = agent
210
214
  return ChatEvent(EventType.TOOL_CALL, data)
211
215
 
212
216
  @staticmethod
213
217
  def tool_result(
214
- id: str,
218
+ tool_call_id: str,
215
219
  name: str,
216
220
  content: str,
221
+ id: Optional[str] = None,
217
222
  args: Optional[Dict[str, Any]] = None,
218
223
  success: bool = True,
219
224
  agent: Optional[str] = None,
@@ -222,9 +227,10 @@ class ChatEventBuilder:
222
227
  构建工具执行结果事件
223
228
 
224
229
  Args:
225
- id: 工具调用 ID(与 tool_call 匹配)
230
+ tool_call_id: 工具调用 ID(与 tool_call 匹配)
226
231
  name: 工具名称
227
232
  content: 工具执行输出
233
+ id: ToolMessage 自身的消息 ID(来自 BaseMessage.id)
228
234
  args: 工具参数(可选,方便前端显示)
229
235
  success: 执行是否成功
230
236
  agent: 执行工具的 Agent 名称(可选,团队模式使用)
@@ -233,11 +239,13 @@ class ChatEventBuilder:
233
239
  ChatEvent: 工具结果事件
234
240
  """
235
241
  data = {
236
- "id": id,
242
+ "tool_call_id": tool_call_id,
237
243
  "name": name,
238
244
  "content": content,
239
245
  "success": success,
240
246
  }
247
+ if id:
248
+ data["id"] = id
241
249
  if args:
242
250
  data["args"] = args
243
251
  if agent:
@@ -373,14 +381,14 @@ def ai_chunk_event(content: str, **kwargs) -> Dict[str, Any]:
373
381
  return ChatEventBuilder.ai_chunk(content, **kwargs).to_dict()
374
382
 
375
383
 
376
- def tool_call_event(name: str, args: Dict, id: str = "", **kwargs) -> Dict[str, Any]:
384
+ def tool_call_event(name: str, args: Dict, tool_call_id: str = "", id: Optional[str] = None, **kwargs) -> Dict[str, Any]:
377
385
  """创建工具调用事件字典"""
378
- return ChatEventBuilder.tool_call(name, args, id, **kwargs).to_dict()
386
+ return ChatEventBuilder.tool_call(name, args, tool_call_id, id=id, **kwargs).to_dict()
379
387
 
380
388
 
381
- def tool_result_event(id: str, name: str, content: str, **kwargs) -> Dict[str, Any]:
389
+ def tool_result_event(tool_call_id: str, name: str, content: str, id: Optional[str] = None, **kwargs) -> Dict[str, Any]:
382
390
  """创建工具结果事件字典"""
383
- return ChatEventBuilder.tool_result(id, name, content, **kwargs).to_dict()
391
+ return ChatEventBuilder.tool_result(tool_call_id, name, content, id=id, **kwargs).to_dict()
384
392
 
385
393
 
386
394
  def agent_switch_event(agent: str, **kwargs) -> Dict[str, Any]:
@@ -85,6 +85,10 @@ DEFAULT_SYSTEM_PROMPT = """你是智能助手,使用中文和我对话。
85
85
  - 沙箱环境具有外网访问权限
86
86
  - 所有文件操作(下载、读取、写入、执行)都必须使用相对路径或 ./ 开头的路径
87
87
  - 禁止使用 /tmp/、/var/ 等系统目录,始终使用当前工作目录 ./
88
+ - 文件组织规范:
89
+ - ./output/ — 运行时产生的输出文件(图片、数据文件、日志等)
90
+ - ./projects/ — 生成的代码文件或完整项目(如新建 Python 脚本、Web 项目等)
91
+ - 写入前先创建目录,如 mkdir -p output projects
88
92
  """
89
93
 
90
94
 
@@ -300,7 +304,7 @@ class DeepAgent:
300
304
  except json.JSONDecodeError:
301
305
  pass # 还没接收完整,下次继续
302
306
 
303
- # 发送 tool_call 事件,前端根据 id 更新
307
+ # 发送 tool_call 事件,前端根据 tool_call_id 更新
304
308
  tc_id = existing_tc["id"]
305
309
  if tc_id:
306
310
  current_args = existing_tc["args"]
@@ -312,7 +316,8 @@ class DeepAgent:
312
316
  event = ChatEventBuilder.tool_call(
313
317
  name=existing_tc["name"],
314
318
  args=current_args,
315
- id=tc_id,
319
+ tool_call_id=tc_id,
320
+ id=getattr(msg, "id", None),
316
321
  agent=DEFAULT_AGENT_NAME,
317
322
  )
318
323
  existing_tc["_sent"] = True
@@ -355,7 +360,8 @@ class DeepAgent:
355
360
  event = ChatEventBuilder.tool_call(
356
361
  name=existing_tc["name"],
357
362
  args=existing_tc["args"],
358
- id=tc_id,
363
+ tool_call_id=tc_id,
364
+ id=getattr(msg, "id", None),
359
365
  agent=DEFAULT_AGENT_NAME,
360
366
  )
361
367
  if on_event:
@@ -401,8 +407,9 @@ class DeepAgent:
401
407
  )
402
408
 
403
409
  event = ChatEventBuilder.tool_result(
404
- id=tool_call_id, name=tool_name or "unknown",
410
+ tool_call_id=tool_call_id, name=tool_name or "unknown",
405
411
  content=content, args=tool_args, success=is_success,
412
+ id=getattr(msg, "id", None),
406
413
  agent=DEFAULT_AGENT_NAME,
407
414
  )
408
415
  if on_event:
@@ -347,7 +347,8 @@ class MultiAgentTeam:
347
347
  yield event
348
348
 
349
349
  event = ChatEventBuilder.tool_call(
350
- name=tc_name, args=tc_args, id=tc_id, agent=tc_agent,
350
+ name=tc_name, args=tc_args, tool_call_id=tc_id, agent=tc_agent,
351
+ id=getattr(msg, "id", None),
351
352
  )
352
353
  if on_event:
353
354
  await on_event(event)
@@ -398,9 +399,10 @@ class MultiAgentTeam:
398
399
  )
399
400
 
400
401
  event = ChatEventBuilder.tool_result(
401
- id=tool_call_id, name=tool_name or "unknown",
402
+ tool_call_id=tool_call_id, name=tool_name or "unknown",
402
403
  content=content, args=tool_args, success=is_success,
403
404
  agent=result_agent,
405
+ id=getattr(msg, "id", None),
404
406
  )
405
407
  if on_event:
406
408
  await on_event(event)
@@ -11,6 +11,8 @@ import base64
11
11
  import os
12
12
  import shlex
13
13
  import ssl
14
+ import sys
15
+ import tempfile
14
16
  import requests
15
17
  from pathlib import Path
16
18
  from typing import Optional, List
@@ -406,41 +408,22 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
406
408
  """用户ID"""
407
409
  return self._user_id
408
410
 
409
- # ============== 命令隔离 ==============
410
-
411
- # 沙箱容器内用户工作空间的根目录
412
- _WORKSPACE_ROOT = "/workspace"
411
+ # 沙箱容器内用户数据的实际根目录(与 sandbox server file_ops 路径对齐)
412
+ # 线上 Linux 沙箱容器固定为 /data/sycommon_sandbox
413
+ # 本地调试(macOS/Windows)使用环境变量 SANDBOX_WORKSPACE 或系统临时目录
414
+ _WORKSPACE_ROOT = os.environ.get(
415
+ "SANDBOX_WORKSPACE",
416
+ "/data/sycommon_sandbox" if sys.platform != "darwin" and sys.platform != "win32"
417
+ else os.path.join(tempfile.gettempdir(), "sycommon_sandbox")
418
+ )
413
419
 
414
420
  def _wrap_command_isolation(self, command: str) -> str:
415
- """使用 unshare --mount 包裹命令,实现文件系统隔离
416
-
417
- 在独立的 mount namespace 中:
418
- 1. 将用户工作目录 bind mount 到隔离视图
419
- 2. 隐藏其他用户的工作目录
420
- 3. 保留系统工具可用
421
+ """包裹命令,确保在用户工作目录下执行
421
422
 
422
- 原理:
423
- unshare --mount 创建新的 mount namespace
424
- 在其中 mount --make-private / 使挂载对其他用户不可见
425
- 然后只挂载当前用户的目录,其他用户目录自然不可见
423
+ 仅负责工作目录定位,文件系统隔离由沙箱服务端保证。
426
424
  """
427
425
  user_dir = f"{self._WORKSPACE_ROOT}/{self._user_id}"
428
-
429
- # 使用 unshare --mount 创建隔离的 mount namespace
430
- # 关键步骤:
431
- # 1. mount --make-private / → 本 namespace 的挂载不影响其他进程
432
- # 2. 确保 user_dir 存在
433
- # 3. 在用户目录下执行命令
434
- # 这样 find / 等命令仍然可以遍历系统目录,但看不到其他用户的 workspace
435
- wrapped = (
436
- f"unshare --mount -- bash -c '"
437
- f"mount --make-private / 2>/dev/null; "
438
- f"mkdir -p {user_dir}; "
439
- f"cd {user_dir}; "
440
- f"exec bash -c {shlex.quote(command)}"
441
- f"'"
442
- )
443
- return wrapped
426
+ return f"mkdir -p {user_dir} && cd {user_dir} && {command.strip()}"
444
427
 
445
428
  # ============== 执行命令 ==============
446
429
 
@@ -5,7 +5,6 @@ import socket
5
5
  import threading
6
6
  import traceback
7
7
  import asyncio
8
- import pprint
9
8
  from datetime import datetime
10
9
 
11
10
  from kafka import KafkaProducer
@@ -305,7 +304,7 @@ class SYLogger:
305
304
  logger.info(log_json)
306
305
 
307
306
  if check_env_flag(['DEV_LOG']):
308
- pprint.pprint(log_dict)
307
+ print(log_dict)
309
308
 
310
309
  @staticmethod
311
310
  def info(msg: any, *args, **kwargs):
@@ -38,6 +38,7 @@ from sycommon.models.sandbox import (
38
38
  ExecuteRequest, ExecuteResponse,
39
39
  UploadRequest, UploadResponse,
40
40
  DownloadRequest, DownloadResponse,
41
+ DeleteRequest, DeleteResponse,
41
42
  FileInfo, LsRequest, LsResponse,
42
43
  TreeNode, TreeRequest, TreeResponse,
43
44
  GlobRequest, GrepRequest, GrepMatch,
@@ -904,6 +905,32 @@ COMMAND_EOF
904
905
  except Exception as e:
905
906
  return UploadResponse(path=file_path, error=str(e))
906
907
 
908
+ @sandbox_router.post("/delete", response_model=DeleteResponse)
909
+ async def delete_file(req: DeleteRequest):
910
+ """删除文件或目录"""
911
+ workspace = get_user_workspace(req.user_id)
912
+ try:
913
+ file_path = resolve_sandbox_path(req.path, workspace)
914
+ except ValueError as e:
915
+ return DeleteResponse(path=req.path, error=str(e))
916
+
917
+ if not os.path.exists(file_path):
918
+ return DeleteResponse(path=file_path, error="file_not_found")
919
+
920
+ try:
921
+ if os.path.isdir(file_path):
922
+ if not req.recursive:
923
+ return DeleteResponse(path=file_path, error="is_directory, set recursive=true")
924
+ import shutil
925
+ shutil.rmtree(file_path)
926
+ else:
927
+ os.remove(file_path)
928
+
929
+ return DeleteResponse(path=file_path, error=None)
930
+
931
+ except Exception as e:
932
+ return DeleteResponse(path=file_path, error=str(e))
933
+
907
934
  @sandbox_router.post("/download", response_model=DownloadResponse)
908
935
  async def download_file(req: DownloadRequest):
909
936
  """下载文件"""
@@ -145,6 +145,19 @@ class WriteResponse(BaseModel):
145
145
  path: Optional[str] = None
146
146
 
147
147
 
148
+ class DeleteRequest(BaseModel):
149
+ """删除文件/目录请求"""
150
+ path: str
151
+ user_id: str
152
+ recursive: bool = False
153
+
154
+
155
+ class DeleteResponse(BaseModel):
156
+ """删除文件/目录响应"""
157
+ path: Optional[str] = None
158
+ error: Optional[str] = None
159
+
160
+
148
161
  class EditRequest(BaseModel):
149
162
  """编辑文件请求"""
150
163
  file_path: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a48
3
+ Version: 0.2.1a50
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown