sycommon-python-lib 0.2.4a6__tar.gz → 0.2.5a0__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.4a6 → sycommon_python_lib-0.2.5a0}/PKG-INFO +3 -3
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/pyproject.toml +3 -3
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/file_ops.py +24 -4
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/http_sandbox_backend.py +27 -3
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/minio_sync.py +26 -13
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/sandbox_recovery.py +3 -2
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/sandbox.py +277 -117
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/tool_result_truncation.py +92 -11
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/sandbox.py +1 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/feign.py +5 -2
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/feign_client.py +7 -4
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/PKG-INFO +3 -3
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/requires.txt +2 -2
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/README.md +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/query.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/db/service.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/model/parse.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/agent/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/.env.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/.gitignore.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/Dockerfile.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/app.yaml.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/model/file_info.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/base/requirements.txt.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/commands/hello.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/pyproject.toml.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/command/templates/web/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/nexus/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/__main__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/agents/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/agents/factory.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/agents/prompts.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/browser.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/console.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/dom.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/network.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/page_errors.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/performance.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/capabilities/screenshot.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/client.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/protocol.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cdp/repl.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/cli.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/cdp_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/chat_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/create_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/evaluate_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/init_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/memory_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/resume_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/rollback_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/commands/run_cmd.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/backend.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/display.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/git_integration.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/llm.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/core/state.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/evaluate/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/evaluate/api_evaluator.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/compressor.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/full.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/hot.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/memory/warm.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/mode/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/mode/create.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/mode/optimize.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/models/config_models.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/baseline_tests.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/checkpoint.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/convergence.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/diagnosis.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/engine.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/environment.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/experience.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/harness_prompts.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/history.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/optimization_logger.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/pre_validation.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/reward.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/strategy_bandit.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/strategy_generator.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/rl/strategy_prompts.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycli/skills/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/agent_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/chat_events.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/deep_agent.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/mcp/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/mcp/models.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/mcp/tool_loader.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/multi_agent_team.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/summarization_utils.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/auth/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/auth/ldap_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/auth/wecom_ldap_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/Config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/PgConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/XxlJobConfig.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/pg_checkpoint_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/struct_token.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/kafka_log.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/background_execution.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/context.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/token_tracking.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/middleware/traceid.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/models/xxljob_handler_config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/notice/wecom_message.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/services.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_real_summarization.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_summarization_config.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tests/test_summarization_real.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/xxljob/__init__.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/xxljob/xxljob_service.py +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
- {sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/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.
|
|
3
|
+
Version: 0.2.5a0
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -8,8 +8,8 @@ Requires-Dist: aio-pika>=9.6.2
|
|
|
8
8
|
Requires-Dist: aiohttp>=3.13.5
|
|
9
9
|
Requires-Dist: aiomysql>=0.3.2
|
|
10
10
|
Requires-Dist: anyio>=4.12.1
|
|
11
|
-
Requires-Dist: decorator>=5.3.
|
|
12
|
-
Requires-Dist: deepagents>=0.6.
|
|
11
|
+
Requires-Dist: decorator>=5.3.1
|
|
12
|
+
Requires-Dist: deepagents>=0.6.3
|
|
13
13
|
Requires-Dist: elasticsearch>=9.4.0
|
|
14
14
|
Requires-Dist: fastapi>=0.136.1
|
|
15
15
|
Requires-Dist: jinja2>=3.1.6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sycommon-python-lib"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.5a0"
|
|
4
4
|
description = "Add your description here"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -9,8 +9,8 @@ dependencies = [
|
|
|
9
9
|
"aiohttp>=3.13.5",
|
|
10
10
|
"aiomysql>=0.3.2",
|
|
11
11
|
"anyio>=4.12.1",
|
|
12
|
-
"decorator>=5.3.
|
|
13
|
-
"deepagents>=0.6.
|
|
12
|
+
"decorator>=5.3.1",
|
|
13
|
+
"deepagents>=0.6.3",
|
|
14
14
|
"elasticsearch>=9.4.0",
|
|
15
15
|
"fastapi>=0.136.1",
|
|
16
16
|
"jinja2>=3.1.6",
|
{sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/file_ops.py
RENAMED
|
@@ -289,15 +289,26 @@ class FileOperationsMixin:
|
|
|
289
289
|
self: "HTTPSandboxBackend",
|
|
290
290
|
file_path: str,
|
|
291
291
|
content: str,
|
|
292
|
+
*,
|
|
293
|
+
overwrite: bool = True, # 默认允许覆盖,兼容 deepagents offload 场景
|
|
292
294
|
) -> WriteResult:
|
|
293
|
-
"""写入文件
|
|
295
|
+
"""写入文件
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
file_path: 文件路径。
|
|
299
|
+
content: 文件内容。
|
|
300
|
+
overwrite: 是否允许覆盖已有文件,默认 True(兼容 deepagents 0.6.3
|
|
301
|
+
SummarizationMiddleware offload 场景,如 /large_tool_results/ 和
|
|
302
|
+
/conversation_history/ 路径)。设为 False 时,文件已存在返回错误。
|
|
303
|
+
"""
|
|
294
304
|
try:
|
|
295
305
|
self._ensure_synced_sync()
|
|
296
306
|
SYLogger.info(f"[Sandbox] 写入文件: {file_path} ({len(content)} 字符)")
|
|
297
307
|
result = self._post_sync(f"{SANDBOX_API_PREFIX}/write", {
|
|
298
308
|
"file_path": file_path,
|
|
299
309
|
"content": base64.b64encode(content.encode()).decode(),
|
|
300
|
-
"user_id": self.user_id
|
|
310
|
+
"user_id": self.user_id,
|
|
311
|
+
"overwrite": overwrite,
|
|
301
312
|
})
|
|
302
313
|
write_result = WriteResult(
|
|
303
314
|
error=result.get("error"),
|
|
@@ -317,16 +328,25 @@ class FileOperationsMixin:
|
|
|
317
328
|
file_path: str,
|
|
318
329
|
content: str,
|
|
319
330
|
*,
|
|
331
|
+
overwrite: bool = True, # 默认允许覆盖,兼容 deepagents offload 场景
|
|
320
332
|
timeout: int = None,
|
|
321
333
|
) -> WriteResult:
|
|
322
|
-
"""异步写入文件
|
|
334
|
+
"""异步写入文件
|
|
335
|
+
|
|
336
|
+
Args:
|
|
337
|
+
file_path: 文件路径。
|
|
338
|
+
content: 文件内容。
|
|
339
|
+
overwrite: 是否允许覆盖已有文件,默认 True。
|
|
340
|
+
timeout: 请求超时时间。
|
|
341
|
+
"""
|
|
323
342
|
try:
|
|
324
343
|
await self._ensure_synced_async()
|
|
325
344
|
SYLogger.info(f"[Sandbox] 异步写入文件: {file_path} ({len(content)} 字符)")
|
|
326
345
|
result = await self._post_async_with_failover(f"{SANDBOX_API_PREFIX}/write", {
|
|
327
346
|
"file_path": file_path,
|
|
328
347
|
"content": base64.b64encode(content.encode()).decode(),
|
|
329
|
-
"user_id": self.user_id
|
|
348
|
+
"user_id": self.user_id,
|
|
349
|
+
"overwrite": overwrite,
|
|
330
350
|
}, timeout=timeout)
|
|
331
351
|
write_result = WriteResult(
|
|
332
352
|
error=result.get("error"),
|
|
@@ -37,6 +37,11 @@ except ImportError:
|
|
|
37
37
|
_SSL_CONTEXT = ssl.create_default_context()
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
def _read_file_safe(path: str) -> bytes:
|
|
41
|
+
with open(path, "rb") as f:
|
|
42
|
+
return f.read()
|
|
43
|
+
|
|
44
|
+
|
|
40
45
|
class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
41
46
|
"""
|
|
42
47
|
通过 HTTP API 连接远程沙箱容器
|
|
@@ -210,6 +215,24 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
210
215
|
nacos_group=group,
|
|
211
216
|
)
|
|
212
217
|
|
|
218
|
+
@classmethod
|
|
219
|
+
async def afrom_nacos(
|
|
220
|
+
cls,
|
|
221
|
+
service_name: str,
|
|
222
|
+
user_id: str,
|
|
223
|
+
group: str = "DEFAULT_GROUP",
|
|
224
|
+
version: str = None,
|
|
225
|
+
timeout: int = 180,
|
|
226
|
+
sync_dirs: List[tuple[str, str]] = None,
|
|
227
|
+
auto_sync: bool = False,
|
|
228
|
+
load_balance: bool = True,
|
|
229
|
+
) -> "HTTPSandboxBackend":
|
|
230
|
+
"""异步从 Nacos 服务发现创建后端实例"""
|
|
231
|
+
return await asyncio.to_thread(
|
|
232
|
+
cls.from_nacos,
|
|
233
|
+
service_name, user_id, group, version, timeout, sync_dirs, auto_sync, load_balance,
|
|
234
|
+
)
|
|
235
|
+
|
|
213
236
|
# ============== 内部方法 - 同步版本 ==============
|
|
214
237
|
|
|
215
238
|
def _refresh_from_nacos_and_switch_sync(self) -> bool:
|
|
@@ -565,7 +588,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
565
588
|
else:
|
|
566
589
|
# 单文件
|
|
567
590
|
SYLogger.info(f"[Sandbox] 上传单文件: {local_path}")
|
|
568
|
-
content = await asyncio.to_thread(lambda:
|
|
591
|
+
content = await asyncio.to_thread(lambda p: _read_file_safe(p), local_dir)
|
|
569
592
|
upload_results = await self.aupload_files([(remote_path, content)], timeout=timeout)
|
|
570
593
|
if upload_results[0].error:
|
|
571
594
|
results[local_path] = {"success": 0, "failed": 1, "errors": [{"path": remote_path, "error": upload_results[0].error}]}
|
|
@@ -669,7 +692,8 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
669
692
|
def _read_batch():
|
|
670
693
|
items = []
|
|
671
694
|
for sandbox_path, local_file in batch_files:
|
|
672
|
-
|
|
695
|
+
with open(local_file, "rb") as f:
|
|
696
|
+
content = f.read()
|
|
673
697
|
items.append((sandbox_path, content))
|
|
674
698
|
return items
|
|
675
699
|
batch_items = await asyncio.to_thread(_read_batch)
|
|
@@ -1037,7 +1061,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
1037
1061
|
SYLogger.info(f"[Sandbox] 异步目录上传完成: {local_path}, 成功={result['success']}, 失败={result['failed']}")
|
|
1038
1062
|
else:
|
|
1039
1063
|
SYLogger.info(f"[Sandbox] 异步上传单文件: {local_path}")
|
|
1040
|
-
content = await asyncio.to_thread(lambda:
|
|
1064
|
+
content = await asyncio.to_thread(lambda p: _read_file_safe(p), local_dir)
|
|
1041
1065
|
upload_results = await self.aupload_files([(remote_path, content)], timeout=timeout)
|
|
1042
1066
|
if upload_results[0].error:
|
|
1043
1067
|
results[local_path] = {"success": 0, "failed": 1, "errors": [{"path": remote_path, "error": upload_results[0].error}]}
|
{sycommon_python_lib-0.2.4a6 → sycommon_python_lib-0.2.5a0}/src/sycommon/agent/sandbox/minio_sync.py
RENAMED
|
@@ -162,7 +162,7 @@ class MinioSyncService(metaclass=SingletonMeta):
|
|
|
162
162
|
return None
|
|
163
163
|
|
|
164
164
|
def get_presigned_url(self, object_key: str, expires_days: int = 7) -> Optional[str]:
|
|
165
|
-
"""生成预签名下载 URL"""
|
|
165
|
+
"""生成预签名下载 URL(同步)"""
|
|
166
166
|
if not self._client:
|
|
167
167
|
return None
|
|
168
168
|
try:
|
|
@@ -177,8 +177,12 @@ class MinioSyncService(metaclass=SingletonMeta):
|
|
|
177
177
|
f"[MinIO] Presigned URL failed: {object_key}, error={e}")
|
|
178
178
|
return None
|
|
179
179
|
|
|
180
|
+
async def aget_presigned_url(self, object_key: str, expires_days: int = 7) -> Optional[str]:
|
|
181
|
+
"""异步生成预签名下载 URL"""
|
|
182
|
+
return await asyncio.to_thread(self.get_presigned_url, object_key, expires_days)
|
|
183
|
+
|
|
180
184
|
def remove_object(self, object_key: str) -> bool:
|
|
181
|
-
"""从 MinIO
|
|
185
|
+
"""从 MinIO 删除文件(同步)"""
|
|
182
186
|
if not self._client:
|
|
183
187
|
return False
|
|
184
188
|
try:
|
|
@@ -189,12 +193,12 @@ class MinioSyncService(metaclass=SingletonMeta):
|
|
|
189
193
|
SYLogger.warning(f"[MinIO] Delete failed: {object_key}, error={e}")
|
|
190
194
|
return False
|
|
191
195
|
|
|
192
|
-
def
|
|
193
|
-
"""
|
|
196
|
+
async def aremove_object(self, object_key: str) -> bool:
|
|
197
|
+
"""异步从 MinIO 删除文件"""
|
|
198
|
+
return await asyncio.to_thread(self.remove_object, object_key)
|
|
194
199
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
"""
|
|
200
|
+
def remove_prefix(self, prefix: str) -> int:
|
|
201
|
+
"""删除 MinIO 中指定前缀下的所有对象(同步,用于目录删除)"""
|
|
198
202
|
if not self._client:
|
|
199
203
|
return 0
|
|
200
204
|
try:
|
|
@@ -210,6 +214,10 @@ class MinioSyncService(metaclass=SingletonMeta):
|
|
|
210
214
|
SYLogger.warning(f"[MinIO] Delete prefix failed: {prefix}, error={e}")
|
|
211
215
|
return 0
|
|
212
216
|
|
|
217
|
+
async def aremove_prefix(self, prefix: str) -> int:
|
|
218
|
+
"""异步删除 MinIO 中指定前缀下的所有对象"""
|
|
219
|
+
return await asyncio.to_thread(self.remove_prefix, prefix)
|
|
220
|
+
|
|
213
221
|
# ============== 查找最近副本 ==============
|
|
214
222
|
|
|
215
223
|
def find_latest_object_key(self, user_id: str, file_path: str) -> Optional[str]:
|
|
@@ -252,7 +260,7 @@ class MinioSyncService(metaclass=SingletonMeta):
|
|
|
252
260
|
SYLogger.warning(f"[MinIO] find_latest failed: {e}")
|
|
253
261
|
return None
|
|
254
262
|
|
|
255
|
-
async def
|
|
263
|
+
async def afind_latest_object_key(self, user_id: str, file_path: str) -> Optional[str]:
|
|
256
264
|
"""异步查找某个文件最近一天的 object key"""
|
|
257
265
|
return await asyncio.to_thread(self.find_latest_object_key, user_id, file_path)
|
|
258
266
|
|
|
@@ -473,12 +481,17 @@ class MinioSyncService(metaclass=SingletonMeta):
|
|
|
473
481
|
files_to_upload = []
|
|
474
482
|
for rel_path in batch:
|
|
475
483
|
try:
|
|
476
|
-
|
|
477
|
-
self._client.get_object,
|
|
484
|
+
def _download_object(bucket, key):
|
|
485
|
+
resp = self._client.get_object(bucket, key)
|
|
486
|
+
try:
|
|
487
|
+
return resp.read()
|
|
488
|
+
finally:
|
|
489
|
+
resp.close()
|
|
490
|
+
resp.release_conn()
|
|
491
|
+
|
|
492
|
+
content = await asyncio.to_thread(
|
|
493
|
+
_download_object, self._bucket, f"{prefix}{rel_path}"
|
|
478
494
|
)
|
|
479
|
-
content = response.read()
|
|
480
|
-
response.close()
|
|
481
|
-
response.release_conn()
|
|
482
495
|
files_to_upload.append((f"/{rel_path}", content))
|
|
483
496
|
except Exception as e:
|
|
484
497
|
SYLogger.warning(f"[MinIO] 下载文件失败: {rel_path}, error={e}")
|
|
@@ -123,7 +123,7 @@ class SandboxRecoveryManager:
|
|
|
123
123
|
bool: 切换成功返回 True,否则返回 False
|
|
124
124
|
"""
|
|
125
125
|
# 优先使用底层已有的切换逻辑(会尝试迁移工作空间文件)
|
|
126
|
-
switched = await self.backend.
|
|
126
|
+
switched = await asyncio.to_thread(self.backend._refresh_from_nacos_and_switch_sync)
|
|
127
127
|
|
|
128
128
|
if switched:
|
|
129
129
|
self._consecutive_failures = 0
|
|
@@ -149,7 +149,8 @@ class SandboxRecoveryManager:
|
|
|
149
149
|
SYLogger.error("[Sandbox] NacosService 未初始化")
|
|
150
150
|
return False
|
|
151
151
|
|
|
152
|
-
instances =
|
|
152
|
+
instances = await asyncio.to_thread(
|
|
153
|
+
nacos_manager.get_service_instances,
|
|
153
154
|
self.backend._nacos_service_name,
|
|
154
155
|
group=self.backend._nacos_group
|
|
155
156
|
)
|