sycommon-python-lib 0.2.5a18__tar.gz → 0.2.5a20__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.5a18 → sycommon_python_lib-0.2.5a20}/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/pyproject.toml +1 -1
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/mcp/tool_loader.py +54 -38
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/http_sandbox_backend.py +41 -1
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/sandbox.py +2 -2
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/README.md +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/api/query.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/db/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/db/service.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/model/parse.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/.env.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/.gitignore.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/Dockerfile.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/app.yaml.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/model/file_info.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/requirements.txt.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/commands/hello.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/pyproject.toml.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/api/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/nexus/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/__main__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/agents/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/agents/factory.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/agents/prompts.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/browser.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/console.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/dom.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/network.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/page_errors.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/performance.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/screenshot.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/client.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/protocol.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/repl.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cli.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/cdp_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/chat_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/create_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/evaluate_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/init_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/memory_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/resume_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/rollback_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/run_cmd.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/backend.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/display.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/git_integration.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/llm.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/state.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/evaluate/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/evaluate/api_evaluator.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/compressor.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/full.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/hot.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/warm.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/mode/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/mode/create.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/mode/optimize.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/models/config_models.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/baseline_tests.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/checkpoint.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/convergence.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/diagnosis.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/engine.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/environment.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/experience.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/harness_prompts.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/history.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/optimization_logger.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/pre_validation.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/reward.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/strategy_bandit.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/strategy_generator.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/strategy_prompts.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/skills/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/agent_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/chat_events.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/deep_agent.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/mcp/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/mcp/models.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/multi_agent_team.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/file_ops.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/summarization_utils.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/ldap_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/oa_cache.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/oa_crypto.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/oa_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/wecom_ldap_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/Config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/PgConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/XxlJobConfig.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/pg_checkpoint_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/struct_token.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/kafka_log.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/mcp_server/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/mcp_server/server.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/context.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/token_tracking.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/tool_result_truncation.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/traceid.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/mcp_server_config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/sandbox.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/models/xxljob_handler_config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/notice/wecom_message.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/services.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/feign.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/feign_client.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_consumer_recovery.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_encoding_cache.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_mcp_server.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_oa_login.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_real_summarization.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_summarization_config.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tests/test_summarization_real.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/xxljob/__init__.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/xxljob/xxljob_service.py +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
- {sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/tests/test_sycli.py +0 -0
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/mcp/tool_loader.py
RENAMED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
发现工具并作为 LangChain BaseTool 注入 Agent。
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
+
import asyncio
|
|
7
8
|
import re
|
|
8
9
|
import hashlib
|
|
9
10
|
from typing import List, Optional, Callable, Awaitable, TYPE_CHECKING
|
|
@@ -45,45 +46,60 @@ def wrap_tool_with_error_handler(
|
|
|
45
46
|
original_coroutine = tool.coroutine
|
|
46
47
|
tool_name = tool.name
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
result = await original_coroutine(*args, **kwargs)
|
|
51
|
-
if on_tool_success:
|
|
52
|
-
try:
|
|
53
|
-
await on_tool_success(server_config_id, original_tool_name)
|
|
54
|
-
except Exception:
|
|
55
|
-
pass
|
|
56
|
-
return result
|
|
57
|
-
except Exception as e:
|
|
58
|
-
from langchain_core.tools import ToolException
|
|
59
|
-
err_type = type(e).__name__
|
|
60
|
-
err_msg = str(e)[:500]
|
|
61
|
-
SYLogger.warning(
|
|
62
|
-
f"[MCP] 工具 '{tool_name}' 调用失败 ({err_type}): {err_msg}")
|
|
49
|
+
MAX_RETRIES = 2
|
|
50
|
+
RETRY_DELAY_BASE = 1.0 # 秒
|
|
63
51
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
52
|
+
async def _safe_coroutine(*args, **kwargs):
|
|
53
|
+
last_exception = None
|
|
54
|
+
for attempt in range(MAX_RETRIES + 1):
|
|
55
|
+
try:
|
|
56
|
+
result = await original_coroutine(*args, **kwargs)
|
|
57
|
+
if on_tool_success:
|
|
58
|
+
try:
|
|
59
|
+
await on_tool_success(server_config_id, original_tool_name)
|
|
60
|
+
except Exception:
|
|
61
|
+
pass
|
|
62
|
+
return result
|
|
63
|
+
except Exception as e:
|
|
64
|
+
last_exception = e
|
|
65
|
+
if attempt < MAX_RETRIES:
|
|
66
|
+
delay = RETRY_DELAY_BASE * (attempt + 1)
|
|
67
|
+
SYLogger.info(
|
|
68
|
+
f"[MCP] 工具 '{tool_name}' 第 {attempt + 1}/{MAX_RETRIES} 次重试 "
|
|
69
|
+
f"({type(e).__name__}: {str(e)[:200]}), {delay}s 后重试")
|
|
70
|
+
await asyncio.sleep(delay)
|
|
71
|
+
continue
|
|
72
|
+
|
|
73
|
+
# 重试耗尽,返回错误
|
|
74
|
+
from langchain_core.tools import ToolException
|
|
75
|
+
err_type = type(e).__name__
|
|
76
|
+
err_msg = str(e)[:500]
|
|
77
|
+
SYLogger.warning(
|
|
78
|
+
f"[MCP] 工具 '{tool_name}' 调用失败,已重试 {MAX_RETRIES} 次 "
|
|
79
|
+
f"({err_type}): {err_msg}")
|
|
80
|
+
|
|
81
|
+
if on_tool_error:
|
|
82
|
+
try:
|
|
83
|
+
await on_tool_error(server_config_id, original_tool_name, f"{err_type}: {err_msg}")
|
|
84
|
+
except Exception:
|
|
85
|
+
pass
|
|
86
|
+
|
|
87
|
+
if isinstance(e, ToolException):
|
|
88
|
+
friendly_msg = (
|
|
89
|
+
f"MCP 工具 '{tool_name}' 调用失败(已重试 {MAX_RETRIES} 次)。\n"
|
|
90
|
+
f"错误详情: {err_msg}\n"
|
|
91
|
+
f"请根据错误信息判断是否可以不使用该工具继续完成任务。"
|
|
92
|
+
)
|
|
93
|
+
else:
|
|
94
|
+
friendly_msg = (
|
|
95
|
+
f"MCP 工具调用失败:工具 '{tool_name}' (服务器: {server_name}) 当前不可用(已重试 {MAX_RETRIES} 次)。\n"
|
|
96
|
+
f"错误类型: {err_type}\n"
|
|
97
|
+
f"可能原因: MCP 服务器未启动、网络不可达或连接超时。\n"
|
|
98
|
+
f"请尝试不使用该工具继续完成任务,或联系管理员检查 MCP 服务 '{server_name}'。"
|
|
99
|
+
)
|
|
100
|
+
if is_content_and_artifact:
|
|
101
|
+
return friendly_msg, None
|
|
102
|
+
return [friendly_msg]
|
|
87
103
|
|
|
88
104
|
tool.coroutine = _safe_coroutine
|
|
89
105
|
return tool
|
|
@@ -42,6 +42,35 @@ def _read_file_safe(path: str) -> bytes:
|
|
|
42
42
|
return f.read()
|
|
43
43
|
|
|
44
44
|
|
|
45
|
+
def filter_instances_by_owner(instances: list, user_id: str, timeout: float = 3.0) -> list:
|
|
46
|
+
"""过滤掉不属于当前用户的本地沙箱实例。
|
|
47
|
+
|
|
48
|
+
对每个实例调用 /v1/sandbox/health 获取 type 和 owner,
|
|
49
|
+
- remote 类型:始终保留(共享资源)
|
|
50
|
+
- local 类型:仅当 owner 与 user_id 匹配时保留(忽略大小写)
|
|
51
|
+
- health check 失败时保留实例(fail-open,由服务端 token 校验兜底)
|
|
52
|
+
"""
|
|
53
|
+
filtered = []
|
|
54
|
+
for ins in instances:
|
|
55
|
+
sb_url = f"http://{ins['ip']}:{ins['port']}"
|
|
56
|
+
try:
|
|
57
|
+
resp = requests.get(f"{sb_url}/v1/sandbox/health", timeout=timeout)
|
|
58
|
+
if resp.status_code == 200:
|
|
59
|
+
data = resp.json()
|
|
60
|
+
sb_type = data.get("type", "remote")
|
|
61
|
+
owner = data.get("owner", "")
|
|
62
|
+
if sb_type == "local" and owner and owner.lower() != user_id.lower():
|
|
63
|
+
SYLogger.info(
|
|
64
|
+
f"[Sandbox] 过滤非所有者本地沙箱: {sb_url}, "
|
|
65
|
+
f"owner={owner}, user_id={user_id}"
|
|
66
|
+
)
|
|
67
|
+
continue
|
|
68
|
+
except Exception:
|
|
69
|
+
pass
|
|
70
|
+
filtered.append(ins)
|
|
71
|
+
return filtered
|
|
72
|
+
|
|
73
|
+
|
|
45
74
|
class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
46
75
|
"""
|
|
47
76
|
通过 HTTP API 连接远程沙箱容器
|
|
@@ -105,7 +134,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
105
134
|
nacos_group: Nacos 服务分组
|
|
106
135
|
"""
|
|
107
136
|
self._base_url = base_url.rstrip("/")
|
|
108
|
-
self._user_id = user_id
|
|
137
|
+
self._user_id = user_id.lower().replace(" ", "") if user_id else user_id
|
|
109
138
|
self._timeout = timeout
|
|
110
139
|
self._sync_dirs = sync_dirs or []
|
|
111
140
|
self._auto_sync = auto_sync
|
|
@@ -250,6 +279,11 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
250
279
|
if not instances:
|
|
251
280
|
raise RuntimeError(f"服务 [{service_name}] 无可用实例")
|
|
252
281
|
|
|
282
|
+
# 过滤掉不属于当前用户的本地沙箱
|
|
283
|
+
instances = filter_instances_by_owner(instances, user_id)
|
|
284
|
+
if not instances:
|
|
285
|
+
raise RuntimeError(f"服务 [{service_name}] 无可用实例(已过滤非所有者本地沙箱)")
|
|
286
|
+
|
|
253
287
|
# 基于用户ID的负载均衡:使用哈希选择实例
|
|
254
288
|
if load_balance and len(instances) > 1:
|
|
255
289
|
hash_value = int(hashlib.md5(user_id.encode()).hexdigest(), 16)
|
|
@@ -320,6 +354,12 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
320
354
|
SYLogger.warning(f"[Sandbox] Nacos 未发现可用服务: {self._nacos_service_name}")
|
|
321
355
|
return False
|
|
322
356
|
|
|
357
|
+
# 过滤掉不属于当前用户的本地沙箱
|
|
358
|
+
instances = filter_instances_by_owner(instances, self._user_id)
|
|
359
|
+
if not instances:
|
|
360
|
+
SYLogger.warning(f"[Sandbox] 过滤后无可用服务: {self._nacos_service_name}")
|
|
361
|
+
return False
|
|
362
|
+
|
|
323
363
|
instance = instances[0]
|
|
324
364
|
new_url = f"http://{instance['ip']}:{instance['port']}"
|
|
325
365
|
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/middleware/sandbox.py
RENAMED
|
@@ -208,9 +208,9 @@ cd "$_SANDBOX_WORKSPACE"
|
|
|
208
208
|
'''
|
|
209
209
|
|
|
210
210
|
def _sanitize_user_id(user_id: str) -> str:
|
|
211
|
-
"""
|
|
211
|
+
"""将用户名中的空格等特殊字符替换为下划线,确保路径安全。统一小写。"""
|
|
212
212
|
import re
|
|
213
|
-
return re.sub(r'[^a-zA-Z0-9._\-]', '_', user_id)
|
|
213
|
+
return re.sub(r'[^a-zA-Z0-9._\-]', '_', user_id.lower().replace(" ", ""))
|
|
214
214
|
|
|
215
215
|
|
|
216
216
|
def get_user_workspace(user_id: str) -> str:
|
|
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.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/__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
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/agent/app.py.tpl
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
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/.env.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/base/app.py.tpl
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
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/cli/app.py.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/command/templates/web/app.py.tpl
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
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/console.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/dom.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/cdp/capabilities/network.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
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/chat_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/create_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/evaluate_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/init_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/memory_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/resume_cmd.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/commands/rollback_cmd.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.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/core/git_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/evaluate/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/evaluate/api_evaluator.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/memory/compressor.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.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/models/config_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/baseline_tests.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.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/harness_prompts.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/optimization_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/pre_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/strategy_bandit.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/strategy_generator.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycli/rl/strategy_prompts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/agent_manager.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/chat_events.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/deep_agent.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/mcp/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/mcp/models.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/multi_agent_team.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/file_ops.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/agent/sandbox/session.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.5a18 → sycommon_python_lib-0.2.5a20}/src/sycommon/auth/ldap_service.py
RENAMED
|
File without changes
|
|
File without changes
|