sycommon-python-lib 0.2.1a41__tar.gz → 0.2.1a43__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 (144) hide show
  1. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/sandbox/file_ops.py +8 -0
  4. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/sandbox/http_sandbox_backend.py +1 -0
  5. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/sandbox.py +24 -5
  6. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  7. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/README.md +0 -0
  8. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/setup.cfg +0 -0
  9. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/__init__.py +0 -0
  10. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/cli.py +0 -0
  11. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/core/__init__.py +0 -0
  12. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/core/console.py +0 -0
  13. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/core/models.py +0 -0
  14. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/core/project.py +0 -0
  15. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/core/utils.py +0 -0
  16. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/templates/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/templates/agent/__init__.py +0 -0
  18. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/templates/base/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/command/templates/web/__init__.py +0 -0
  20. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/__init__.py +0 -0
  21. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/__init__.py +0 -0
  22. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/agent_manager.py +0 -0
  23. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/chat_events.py +0 -0
  24. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/deep_agent.py +0 -0
  25. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/multi_agent_team.py +0 -0
  26. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/sandbox/__init__.py +0 -0
  27. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  28. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  29. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/agent/sandbox/session.py +0 -0
  30. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/auth/__init__.py +0 -0
  31. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/auth/ldap_service.py +0 -0
  32. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/Config.py +0 -0
  33. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/DatabaseConfig.py +0 -0
  34. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  35. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/EmbeddingConfig.py +0 -0
  36. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/LLMConfig.py +0 -0
  37. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/LangfuseConfig.py +0 -0
  38. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/MQConfig.py +0 -0
  39. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/RedisConfig.py +0 -0
  40. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/RerankerConfig.py +0 -0
  41. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/SentryConfig.py +0 -0
  42. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/config/__init__.py +0 -0
  43. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/async_base_db_service.py +0 -0
  44. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/async_database_service.py +0 -0
  45. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/base_db_service.py +0 -0
  46. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/database_service.py +0 -0
  47. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/elasticsearch_service.py +0 -0
  48. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/redis_service.py +0 -0
  49. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/database/token_usage_db_service.py +0 -0
  50. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/health/__init__.py +0 -0
  51. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/health/health_check.py +0 -0
  52. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/health/metrics.py +0 -0
  53. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/health/ping.py +0 -0
  54. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/heartbeat_process/__init__.py +0 -0
  55. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  56. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  57. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  58. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/__init__.py +0 -0
  59. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/embedding.py +0 -0
  60. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/get_llm.py +0 -0
  61. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/llm_logger.py +0 -0
  62. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/llm_tokens.py +0 -0
  63. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  64. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  65. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  66. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/struct_token.py +0 -0
  67. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/sy_langfuse.py +0 -0
  68. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/token_usage_es_service.py +0 -0
  69. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  70. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/llm/usage_token.py +0 -0
  71. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/__init__.py +0 -0
  72. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/async_sql_logger.py +0 -0
  73. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/kafka_log.py +0 -0
  74. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/logger_levels.py +0 -0
  75. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/logger_wrapper.py +0 -0
  76. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/process_logger.py +0 -0
  77. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/logging/sql_logger.py +0 -0
  78. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/__init__.py +0 -0
  79. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/background_execution.py +0 -0
  80. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/context.py +0 -0
  81. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/cors.py +0 -0
  82. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/docs.py +0 -0
  83. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/exception.py +0 -0
  84. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/middleware.py +0 -0
  85. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/monitor_memory.py +0 -0
  86. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/mq.py +0 -0
  87. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/timeout.py +0 -0
  88. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/middleware/traceid.py +0 -0
  89. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/__init__.py +0 -0
  90. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/base_http.py +0 -0
  91. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/log.py +0 -0
  92. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/mqlistener_config.py +0 -0
  93. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/mqmsg_model.py +0 -0
  94. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/mqsend_config.py +0 -0
  95. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/sandbox.py +0 -0
  96. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/sso_user.py +0 -0
  97. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/token_usage.py +0 -0
  98. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/models/token_usage_mysql.py +0 -0
  99. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/notice/__init__.py +0 -0
  100. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  101. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  102. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  103. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  104. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  105. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  106. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  107. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  108. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  109. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  110. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/sentry/__init__.py +0 -0
  111. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/sentry/sy_sentry.py +0 -0
  112. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/services.py +0 -0
  113. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/sse/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/sse/event.py +0 -0
  115. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/sse/sse.py +0 -0
  116. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/example.py +0 -0
  118. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/example2.py +0 -0
  119. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/feign.py +0 -0
  120. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/feign_client.py +0 -0
  121. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/nacos_client_base.py +0 -0
  122. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  123. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  124. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/nacos_service.py +0 -0
  125. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  126. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  127. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/synacos/param.py +0 -0
  128. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tests/deep_agent_server.py +0 -0
  129. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tests/test_deep_agent.py +0 -0
  130. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tests/test_email.py +0 -0
  131. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tests/test_mq.py +0 -0
  132. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/__init__.py +0 -0
  133. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/async_utils.py +0 -0
  134. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/docs.py +0 -0
  135. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/env.py +0 -0
  136. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/merge_headers.py +0 -0
  137. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/snowflake.py +0 -0
  138. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/syemail.py +0 -0
  139. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon/tools/timing.py +0 -0
  140. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  141. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  142. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  143. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  144. {sycommon_python_lib-0.2.1a41 → sycommon_python_lib-0.2.1a43}/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.1a41
3
+ Version: 0.2.1a43
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.1a41"
3
+ version = "0.2.1a43"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -140,15 +140,19 @@ class FileOperationsMixin:
140
140
  """列出目录内容"""
141
141
  try:
142
142
  self._ensure_synced_sync()
143
+ print(f"[Sandbox-DEBUG] ls() called with path={repr(path)}, user_id={repr(self.user_id)}", flush=True)
143
144
  SYLogger.info(f"[Sandbox] 列出目录: {path}")
144
145
  result = self._post_sync(f"{SANDBOX_API_PREFIX}/ls", {
145
146
  "path": path,
146
147
  "user_id": self.user_id
147
148
  })
149
+ print(f"[Sandbox-DEBUG] ls() raw result type={type(result).__name__}, repr={repr(result)[:500]}", flush=True)
148
150
  entries = [FileInfo(**item) for item in result]
151
+ print(f"[Sandbox-DEBUG] ls() parsed entries={len(entries)}", flush=True)
149
152
  SYLogger.info(f"[Sandbox] 目录内容: {len(entries)} 项")
150
153
  return LsResult(entries=entries)
151
154
  except Exception as e:
155
+ print(f"[Sandbox-DEBUG] ls() EXCEPTION: {type(e).__name__}: {e}", flush=True)
152
156
  SYLogger.error(f"[Sandbox] 列出目录失败: {e}")
153
157
  return LsResult(error=str(e))
154
158
 
@@ -156,15 +160,19 @@ class FileOperationsMixin:
156
160
  """异步列出目录内容(真正的异步实现)"""
157
161
  try:
158
162
  await self._ensure_synced_async()
163
+ print(f"[Sandbox-DEBUG] als() called with path={repr(path)}, user_id={repr(self.user_id)}, base_url={repr(self._base_url if hasattr(self, '_base_url') else 'N/A')}", flush=True)
159
164
  SYLogger.info(f"[Sandbox] 异步列出目录: {path}")
160
165
  result = await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/ls", {
161
166
  "path": path,
162
167
  "user_id": self.user_id
163
168
  })
169
+ print(f"[Sandbox-DEBUG] als() raw result type={type(result).__name__}, repr={repr(result)[:500]}", flush=True)
164
170
  entries = [FileInfo(**item) for item in result]
171
+ print(f"[Sandbox-DEBUG] als() parsed entries={len(entries)}, first 3 paths={[e.get('path','?') if isinstance(e, dict) else getattr(e, 'path','?') for e in entries[:3]]}", flush=True)
165
172
  SYLogger.info(f"[Sandbox] 目录内容: {len(entries)} 项")
166
173
  return LsResult(entries=entries)
167
174
  except Exception as e:
175
+ print(f"[Sandbox-DEBUG] als() EXCEPTION: {type(e).__name__}: {e}", flush=True)
168
176
  SYLogger.error(f"[Sandbox] 异步列出目录失败: {e}")
169
177
  return LsResult(error=str(e))
170
178
 
@@ -101,6 +101,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
101
101
  self._sync_dirs = sync_dirs or []
102
102
  self._auto_sync = auto_sync
103
103
  self._synced = False
104
+ self._workspace_verified = False
104
105
 
105
106
  # Nacos 配置(用于故障转移)
106
107
  self._nacos_service_name = nacos_service_name
@@ -619,14 +619,18 @@ COMMAND_EOF
619
619
  async def ls_info(req: LsRequest):
620
620
  """列出目录内容"""
621
621
  workspace = get_user_workspace(req.user_id)
622
+ print(f"[Sandbox-Server-DEBUG] /ls called: path={repr(req.path)}, user_id={repr(req.user_id)}, workspace={repr(workspace)}", flush=True)
622
623
  try:
623
624
  target_path = resolve_sandbox_path(req.path, workspace)
625
+ print(f"[Sandbox-Server-DEBUG] resolved target_path={repr(target_path)}", flush=True)
624
626
  except ValueError as e:
625
627
  SYLogger.error(f"[Sandbox Server] 列目录失败: {e}")
628
+ print(f"[Sandbox-Server-DEBUG] resolve_sandbox_path FAILED: {e}", flush=True)
626
629
  return []
627
630
 
628
631
  if not os.path.isdir(target_path):
629
632
  SYLogger.error(f"[Sandbox Server] 列目录失败: 目录不存在 {target_path}")
633
+ print(f"[Sandbox-Server-DEBUG] target_path is NOT a dir: {target_path}", flush=True)
630
634
  return []
631
635
 
632
636
  SYLogger.info(f"[Sandbox Server] 列出目录: {target_path}")
@@ -634,7 +638,11 @@ COMMAND_EOF
634
638
  try:
635
639
  with os.scandir(target_path) as it:
636
640
  for entry in it:
637
- info = FileInfo(path=os.path.join(target_path, entry.name))
641
+ # 返回虚拟路径(相对于用户工作空间),而不是绝对文件系统路径
642
+ # 这样 AI 后续操作(ls、read_file 等)能正确解析路径
643
+ abs_path = os.path.join(target_path, entry.name)
644
+ virtual_path = "/" + os.path.relpath(abs_path, workspace)
645
+ info = FileInfo(path=virtual_path)
638
646
  try:
639
647
  info.is_dir = entry.is_dir(follow_symlinks=False)
640
648
  if not info.is_dir:
@@ -646,6 +654,7 @@ COMMAND_EOF
646
654
  except Exception as e:
647
655
  SYLogger.error(f"[Sandbox Server] 列目录异常: {e}")
648
656
 
657
+ print(f"[Sandbox-Server-DEBUG] returning {len(results)} entries: {[r.path for r in results[:10]]}", flush=True)
649
658
  SYLogger.info(f"[Sandbox Server] 目录内容: {len(results)} 项")
650
659
  return results
651
660
 
@@ -849,7 +858,9 @@ COMMAND_EOF
849
858
 
850
859
  results = []
851
860
  for m in matches:
852
- info = FileInfo(path=m)
861
+ # 返回虚拟路径,与 ls 保持一致
862
+ virtual_path = "/" + os.path.relpath(m, workspace)
863
+ info = FileInfo(path=virtual_path)
853
864
  try:
854
865
  info.is_dir = os.path.isdir(m)
855
866
  if not info.is_dir:
@@ -903,6 +914,11 @@ COMMAND_EOF
903
914
  continue
904
915
 
905
916
  path_part = line[:first_colon]
917
+ # 将绝对路径转换为虚拟路径
918
+ try:
919
+ virtual_path_part = "/" + os.path.relpath(path_part, workspace)
920
+ except ValueError:
921
+ virtual_path_part = path_part
906
922
  try:
907
923
  line_num = int(line[first_colon + 1:second_colon])
908
924
  except ValueError:
@@ -910,7 +926,7 @@ COMMAND_EOF
910
926
  text_part = line[second_colon + 1:]
911
927
 
912
928
  matches.append(GrepMatch(
913
- path=path_part,
929
+ path=virtual_path_part,
914
930
  line=line_num,
915
931
  text=text_part
916
932
  ))
@@ -941,7 +957,9 @@ COMMAND_EOF
941
957
  try:
942
958
  for item in os.listdir(target_path):
943
959
  item_path = os.path.join(target_path, item)
944
- info = FileInfo(path=item_path)
960
+ # 返回虚拟路径
961
+ virtual_path = "/" + os.path.relpath(item_path, workspace)
962
+ info = FileInfo(path=virtual_path)
945
963
  try:
946
964
  info.is_dir = os.path.isdir(item_path)
947
965
  if not info.is_dir:
@@ -971,7 +989,8 @@ COMMAND_EOF
971
989
  return LsResponse(files=files, warning=f"Results truncated at {MAX_FILES} files")
972
990
 
973
991
  filepath = os.path.join(root, filename)
974
- file_info = FileInfo(path=filepath)
992
+ virtual_filepath = "/" + os.path.relpath(filepath, workspace)
993
+ file_info = FileInfo(path=virtual_filepath)
975
994
  try:
976
995
  file_info.is_dir = False
977
996
  file_info.size = os.path.getsize(filepath)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a41
3
+ Version: 0.2.1a43
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown