sycommon-python-lib 0.2.1a25__tar.gz → 0.2.1a27__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.
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/pyproject.toml +1 -1
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/http_sandbox_backend.py +34 -9
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/README.md +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/01_basic_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/02_tool_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/03_structured_output.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/04_memory_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/05_streaming.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/06_multi_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/07_skills_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/08_middleware.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/09_interrupt.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/10_custom_llm.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/11_complex_workflow.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/12_batch_processing.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/01_basic_monitoring.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/02_permission_control.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/03_tool_skill_filter.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/04_caching_retry.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/05_sanitization.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/06_tracking.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/07_advanced.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/08_progressive_skills.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/middleware/override_examples.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/examples/virtual_employee_demo.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/exports.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/get_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/file_ops.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/skills/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/skills/examples/faq_handler/scripts/search.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/skills/exports.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/virtual_employee.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/Config.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/struct_token.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/kafka_log.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/context.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/sandbox.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/traceid.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/services.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/feign.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/feign_client.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
- {sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
|
@@ -136,6 +136,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
136
136
|
Raises:
|
|
137
137
|
RuntimeError: 无法发现服务实例或 NacosService 未初始化
|
|
138
138
|
"""
|
|
139
|
+
SYLogger.info(f"[Sandbox] from_nacos 开始: service_name={service_name}, user_id={user_id}")
|
|
139
140
|
from sycommon.synacos.nacos_service import NacosService
|
|
140
141
|
|
|
141
142
|
# 获取单例实例
|
|
@@ -147,6 +148,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
147
148
|
"NacosService 未初始化,请确保服务启动时已调用 NacosService.setup_nacos(config)"
|
|
148
149
|
)
|
|
149
150
|
|
|
151
|
+
SYLogger.info(f"[Sandbox] 正在查询 Nacos 服务实例...")
|
|
150
152
|
instances = nacos_manager.get_service_instances(
|
|
151
153
|
service_name, group=group, target_version=version
|
|
152
154
|
)
|
|
@@ -158,7 +160,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
158
160
|
instance = instances[0]
|
|
159
161
|
base_url = f"http://{instance['ip']}:{instance['port']}"
|
|
160
162
|
|
|
161
|
-
SYLogger.info(f"Nacos 发现沙箱服务: {service_name} -> {base_url}")
|
|
163
|
+
SYLogger.info(f"[Sandbox] Nacos 发现沙箱服务: {service_name} -> {base_url}")
|
|
162
164
|
|
|
163
165
|
return cls(
|
|
164
166
|
base_url=base_url,
|
|
@@ -241,7 +243,12 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
241
243
|
def _post_sync_with_failover(self, endpoint: str, data: dict, timeout: int = None) -> dict:
|
|
242
244
|
"""带故障转移的同步 POST 请求"""
|
|
243
245
|
actual_timeout = timeout or self._timeout
|
|
244
|
-
|
|
246
|
+
# 执行命令的 HTTP 超时需要更长,给沙箱足够时间执行
|
|
247
|
+
# 只有在非 execute 端点时才加 30 秒缓冲
|
|
248
|
+
if "/execute" in endpoint:
|
|
249
|
+
http_timeout = actual_timeout + 60 # 执行命令给更多缓冲时间
|
|
250
|
+
else:
|
|
251
|
+
http_timeout = actual_timeout + 30
|
|
245
252
|
max_retries = 3
|
|
246
253
|
|
|
247
254
|
trace_id = SYLogger.get_trace_id()
|
|
@@ -249,18 +256,25 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
249
256
|
if trace_id:
|
|
250
257
|
headers["x-traceid-header"] = str(trace_id)
|
|
251
258
|
|
|
259
|
+
url = f"{self._base_url}{endpoint}"
|
|
260
|
+
SYLogger.info(f"[Sandbox] POST 请求开始: {url}, timeout={http_timeout}s, command_timeout={actual_timeout}s")
|
|
261
|
+
|
|
252
262
|
for attempt in range(max_retries):
|
|
253
263
|
try:
|
|
264
|
+
SYLogger.info(f"[Sandbox] POST 尝试 {attempt + 1}/{max_retries}: {url}")
|
|
254
265
|
resp = requests.post(
|
|
255
|
-
|
|
266
|
+
url,
|
|
256
267
|
json=data,
|
|
257
268
|
headers=headers if headers else None,
|
|
258
269
|
timeout=http_timeout
|
|
259
270
|
)
|
|
271
|
+
SYLogger.info(f"[Sandbox] POST 响应状态码: {resp.status_code}")
|
|
260
272
|
if resp.status_code >= 400:
|
|
261
273
|
SYLogger.error(f"[Sandbox] HTTP 错误 {resp.status_code}: {resp.text}")
|
|
262
274
|
resp.raise_for_status()
|
|
263
|
-
|
|
275
|
+
result = resp.json()
|
|
276
|
+
SYLogger.info(f"[Sandbox] POST 成功: {url}")
|
|
277
|
+
return result
|
|
264
278
|
|
|
265
279
|
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
|
266
280
|
SYLogger.warning(f"[Sandbox] 请求失败 (尝试 {attempt + 1}/{max_retries}): {self._base_url} - {e}")
|
|
@@ -300,8 +314,9 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
300
314
|
|
|
301
315
|
def execute(self, command: str, *, timeout: int = None) -> ExecuteResponse:
|
|
302
316
|
"""执行 shell 命令"""
|
|
317
|
+
SYLogger.info(f"[Sandbox] execute 开始: command={command}")
|
|
303
318
|
self._ensure_synced_sync()
|
|
304
|
-
SYLogger.info(f"[Sandbox]
|
|
319
|
+
SYLogger.info(f"[Sandbox] _ensure_synced_sync 完成,开始执行命令: {command}")
|
|
305
320
|
try:
|
|
306
321
|
result = self._post_sync(f"{SANDBOX_API_PREFIX}/execute", {
|
|
307
322
|
"command": command,
|
|
@@ -384,9 +399,10 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
384
399
|
SYLogger.info("[Sandbox] 没有配置同步目录")
|
|
385
400
|
return {}
|
|
386
401
|
|
|
402
|
+
SYLogger.info(f"[Sandbox] _sync_sync 开始, 共 {len(self._sync_dirs)} 个目录")
|
|
387
403
|
results = {}
|
|
388
|
-
for local_path, remote_path in self._sync_dirs:
|
|
389
|
-
SYLogger.info(f"[Sandbox]
|
|
404
|
+
for idx, (local_path, remote_path) in enumerate(self._sync_dirs):
|
|
405
|
+
SYLogger.info(f"[Sandbox] 同步目录 [{idx+1}/{len(self._sync_dirs)}]: {local_path} -> {remote_path}")
|
|
390
406
|
local_dir = Path(local_path)
|
|
391
407
|
|
|
392
408
|
if not local_dir.exists():
|
|
@@ -395,10 +411,13 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
395
411
|
continue
|
|
396
412
|
|
|
397
413
|
if local_dir.is_dir():
|
|
414
|
+
SYLogger.info(f"[Sandbox] 开始上传目录: {local_path}")
|
|
398
415
|
result = self._upload_directory_sync(str(local_dir), remote_path)
|
|
399
416
|
results[local_path] = result
|
|
417
|
+
SYLogger.info(f"[Sandbox] 目录上传完成: {local_path}, 成功={result['success']}, 失败={result['failed']}")
|
|
400
418
|
else:
|
|
401
419
|
# 单文件
|
|
420
|
+
SYLogger.info(f"[Sandbox] 上传单文件: {local_path}")
|
|
402
421
|
with open(local_dir, "rb") as f:
|
|
403
422
|
content = f.read()
|
|
404
423
|
upload_results = self.upload_files([(remote_path, content)])
|
|
@@ -408,7 +427,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
408
427
|
results[local_path] = {"success": 1, "failed": 0, "errors": []}
|
|
409
428
|
|
|
410
429
|
self._synced = True
|
|
411
|
-
SYLogger.info("[Sandbox]
|
|
430
|
+
SYLogger.info("[Sandbox] _sync_sync 完成")
|
|
412
431
|
return results
|
|
413
432
|
|
|
414
433
|
def sync(self) -> dict:
|
|
@@ -436,6 +455,8 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
436
455
|
if not local_path.is_dir():
|
|
437
456
|
raise NotADirectoryError(f"路径不是目录: {local_dir}")
|
|
438
457
|
|
|
458
|
+
SYLogger.info(f"[Sandbox] _upload_directory_sync 开始: {local_dir} -> {remote_path}")
|
|
459
|
+
|
|
439
460
|
exclude_patterns = [".git", "__pycache__", ".pyc", ".DS_Store", "node_modules"]
|
|
440
461
|
|
|
441
462
|
def should_exclude(name: str) -> bool:
|
|
@@ -467,8 +488,11 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
467
488
|
failed_count = 0
|
|
468
489
|
errors = []
|
|
469
490
|
|
|
470
|
-
for sandbox_path, local_file in files_to_upload:
|
|
491
|
+
for idx, (sandbox_path, local_file) in enumerate(files_to_upload):
|
|
471
492
|
try:
|
|
493
|
+
if idx % 10 == 0:
|
|
494
|
+
SYLogger.info(f"[Sandbox] 上传进度: {idx}/{len(files_to_upload)}")
|
|
495
|
+
|
|
472
496
|
with open(local_file, "rb") as f:
|
|
473
497
|
content = f.read()
|
|
474
498
|
|
|
@@ -488,6 +512,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
488
512
|
failed_count += 1
|
|
489
513
|
errors.append({"path": sandbox_path, "error": str(e)})
|
|
490
514
|
|
|
515
|
+
SYLogger.info(f"[Sandbox] _upload_directory_sync 完成: 成功={success_count}, 失败={failed_count}")
|
|
491
516
|
return {"success": success_count, "failed": failed_count, "errors": errors}
|
|
492
517
|
|
|
493
518
|
def _sync_workspace_sync(self) -> dict:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/base/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/command/templates/web/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/get_agent.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/file_ops.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/sandbox/session.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/skills/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/skills/exports.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/agent/virtual_employee.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/DatabaseConfig.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/EmbeddingConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/LLMConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/LangfuseConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/MQConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/RedisConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/RerankerConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/SentryConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/database/redis_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/health_check.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/health/metrics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/llm_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/llm_tokens.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/struct_token.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/sy_langfuse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/llm/usage_token.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/kafka_log.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/logger_levels.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/logger_wrapper.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/process_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/logging/sql_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/context.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/cors.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/docs.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/exception.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/sandbox.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/timeout.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/middleware/traceid.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/base_http.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/mqmsg_model.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/mqsend_config.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/sso_user.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/models/token_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/notice/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/notice/uvicorn_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/rabbitmq/rabbitmq_pool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sentry/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/sentry/sy_sentry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/example.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/example2.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/feign_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/synacos/nacos_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tests/test_deep_agent.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tests/test_email.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/async_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/merge_headers.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a25 → sycommon_python_lib-0.2.1a27}/src/sycommon/tools/snowflake.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|