sycommon-python-lib 0.2.6a14__tar.gz → 0.2.7a1__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.6a14 → sycommon_python_lib-0.2.7a1}/PKG-INFO +12 -12
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/pyproject.toml +12 -12
- sycommon_python_lib-0.2.7a1/src/sycli/acp/__init__.py +25 -0
- sycommon_python_lib-0.2.7a1/src/sycli/acp/registry.py +223 -0
- sycommon_python_lib-0.2.7a1/src/sycli/acp/server.py +33 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cli.py +1 -3
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/acp_cmd.py +28 -32
- sycommon_python_lib-0.2.7a1/src/sycli/simple_chat_agent.py +181 -0
- sycommon_python_lib-0.2.7a1/src/sycommon/agent/acp/__init__.py +64 -0
- sycommon_python_lib-0.2.7a1/src/sycommon/agent/acp/client.py +679 -0
- sycommon_python_lib-0.2.7a1/src/sycommon/agent/acp/fetch.py +190 -0
- sycommon_python_lib-0.2.7a1/src/sycommon/agent/acp/ssh_init.py +228 -0
- sycommon_python_lib-0.2.7a1/src/sycommon/agent/acp/tool.py +270 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/deep_agent.py +3 -11
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/file_ops.py +166 -37
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/http_sandbox_backend.py +43 -17
- sycommon_python_lib-0.2.7a1/src/sycommon/config/ACPAgentConfig.py +77 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/Config.py +4 -1
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/kafka_log.py +18 -2
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/sandbox.py +7 -7
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_client.py +121 -85
- sycommon_python_lib-0.2.7a1/src/sycommon/tests/test_queue_priority_fallback.py +259 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon_python_lib.egg-info/PKG-INFO +12 -12
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon_python_lib.egg-info/SOURCES.txt +10 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon_python_lib.egg-info/requires.txt +11 -11
- sycommon_python_lib-0.2.7a1/tests/test_acp_tool.py +392 -0
- sycommon_python_lib-0.2.7a1/tests/test_simple_chat_agent.py +126 -0
- sycommon_python_lib-0.2.6a14/src/sycli/acp/__init__.py +0 -48
- sycommon_python_lib-0.2.6a14/src/sycli/acp/registry.py +0 -155
- sycommon_python_lib-0.2.6a14/src/sycli/acp/server.py +0 -69
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/README.md +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/api/query.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/db/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/db/service.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/model/parse.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/agent/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/.env.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/.gitignore.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/Dockerfile.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/app.yaml.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/model/file_info.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/base/requirements.txt.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/commands/hello.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/pyproject.toml.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/api/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/command/templates/web/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/nexus/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/__main__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/acp/config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/acp/executor.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/agents/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/agents/factory.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/agents/prompts.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/browser.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/console.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/dom.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/network.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/page_errors.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/performance.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/capabilities/screenshot.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/client.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/protocol.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/cdp/repl.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/cdp_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/chat_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/create_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/evaluate_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/init_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/memory_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/resume_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/rollback_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/commands/run_cmd.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/backend.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/display.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/git_integration.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/llm.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/core/state.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/evaluate/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/evaluate/api_evaluator.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/memory/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/memory/compressor.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/memory/full.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/memory/hot.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/memory/manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/memory/warm.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/mode/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/mode/create.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/mode/optimize.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/models/config_models.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/baseline_tests.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/checkpoint.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/convergence.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/diagnosis.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/engine.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/environment.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/experience.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/harness_prompts.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/history.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/optimization_logger.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/pre_validation.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/reward.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/strategy_bandit.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/strategy_generator.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/rl/strategy_prompts.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycli/skills/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/agent_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/chat_events.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/mcp/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/mcp/models.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/mcp/tool_loader.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/multi_agent_team.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/consistent_hash.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/agent/summarization_utils.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/auth/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/auth/ldap_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/auth/oa_cache.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/auth/oa_crypto.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/auth/oa_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/auth/wecom_ldap_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/PgConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/XxlJobConfig.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/config/config_change_notifier.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/pg_checkpoint_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/struct_token.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/token_utils.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/log_masker.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/mcp_server/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/mcp_server/server.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/context.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/token_tracking.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/tool_result_truncation.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/middleware/traceid.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/mcp_server_config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/sandbox.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/models/xxljob_handler_config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/notice/wecom_message.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/services.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/feign.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/feign_client.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_consistent_hash.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_consumer_recovery.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_encoding_cache.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_fix_verification.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_mcp_server.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_oa_login.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_real_summarization.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_summarization_config.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_summarization_real.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/xxljob/__init__.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon/xxljob/xxljob_service.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/tests/test_asyncio_logging.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/tests/test_config_change_notifier.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/tests/test_hotreload_snapshot.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/tests/test_log_masker.py +0 -0
- {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7a1}/tests/test_sycli.py +0 -0
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sycommon-python-lib
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7a1
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
Requires-Dist: aio-pika==9.6.2
|
|
8
8
|
Requires-Dist: aiohttp==3.14.1
|
|
9
9
|
Requires-Dist: aiomysql==0.3.2
|
|
10
|
-
Requires-Dist: anyio==4.
|
|
10
|
+
Requires-Dist: anyio==4.14.0
|
|
11
11
|
Requires-Dist: decorator==5.3.1
|
|
12
|
-
Requires-Dist: deepagents==0.6.
|
|
12
|
+
Requires-Dist: deepagents==0.6.11
|
|
13
13
|
Requires-Dist: elasticsearch==9.4.1
|
|
14
|
-
Requires-Dist: fastapi==0.
|
|
14
|
+
Requires-Dist: fastapi==0.138.0
|
|
15
15
|
Requires-Dist: jinja2==3.1.6
|
|
16
|
-
Requires-Dist: kafka-python==3.0.
|
|
17
|
-
Requires-Dist: langchain==1.3.
|
|
18
|
-
Requires-Dist: langchain-core==1.4.
|
|
16
|
+
Requires-Dist: kafka-python==3.0.2
|
|
17
|
+
Requires-Dist: langchain==1.3.10
|
|
18
|
+
Requires-Dist: langchain-core==1.4.8
|
|
19
19
|
Requires-Dist: langchain-openai==1.3.2
|
|
20
|
-
Requires-Dist: langfuse==4.
|
|
21
|
-
Requires-Dist: langgraph==1.2.
|
|
20
|
+
Requires-Dist: langfuse==4.9.1
|
|
21
|
+
Requires-Dist: langgraph==1.2.6
|
|
22
22
|
Requires-Dist: langgraph-checkpoint-postgres==3.1.0
|
|
23
23
|
Requires-Dist: langgraph-checkpoint-redis==0.4.1
|
|
24
24
|
Requires-Dist: ldap3==2.9.1
|
|
@@ -32,8 +32,8 @@ Requires-Dist: python-dotenv==1.2.2
|
|
|
32
32
|
Requires-Dist: python-multipart==0.0.32
|
|
33
33
|
Requires-Dist: pyyaml==6.0.3
|
|
34
34
|
Requires-Dist: redis==7.4.0
|
|
35
|
-
Requires-Dist: sentry-sdk[fastapi]==2.
|
|
36
|
-
Requires-Dist: sqlalchemy[asyncio]==2.0.
|
|
35
|
+
Requires-Dist: sentry-sdk[fastapi]==2.63.0
|
|
36
|
+
Requires-Dist: sqlalchemy[asyncio]==2.0.51
|
|
37
37
|
Requires-Dist: starlette[full]==1.3.1
|
|
38
38
|
Requires-Dist: tiktoken==0.13.0
|
|
39
39
|
Requires-Dist: uvicorn==0.49.0
|
|
@@ -43,7 +43,7 @@ Requires-Dist: minio==7.2.20
|
|
|
43
43
|
Requires-Dist: langchain-mcp-adapters==0.3.0
|
|
44
44
|
Requires-Dist: fastapi-mcp==0.4.0
|
|
45
45
|
Requires-Dist: psycopg[binary,pool]==3.3.4
|
|
46
|
-
Requires-Dist:
|
|
46
|
+
Requires-Dist: agent-client-protocol==0.10.1
|
|
47
47
|
|
|
48
48
|
# sycommon-python-lib
|
|
49
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sycommon-python-lib"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.7a1"
|
|
4
4
|
description = "Add your description here"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -8,18 +8,18 @@ dependencies = [
|
|
|
8
8
|
"aio-pika==9.6.2",
|
|
9
9
|
"aiohttp==3.14.1",
|
|
10
10
|
"aiomysql==0.3.2",
|
|
11
|
-
"anyio==4.
|
|
11
|
+
"anyio==4.14.0",
|
|
12
12
|
"decorator==5.3.1",
|
|
13
|
-
"deepagents==0.6.
|
|
13
|
+
"deepagents==0.6.11",
|
|
14
14
|
"elasticsearch==9.4.1",
|
|
15
|
-
"fastapi==0.
|
|
15
|
+
"fastapi==0.138.0",
|
|
16
16
|
"jinja2==3.1.6",
|
|
17
|
-
"kafka-python==3.0.
|
|
18
|
-
"langchain==1.3.
|
|
19
|
-
"langchain-core==1.4.
|
|
17
|
+
"kafka-python==3.0.2",
|
|
18
|
+
"langchain==1.3.10",
|
|
19
|
+
"langchain-core==1.4.8",
|
|
20
20
|
"langchain-openai==1.3.2",
|
|
21
|
-
"langfuse==4.
|
|
22
|
-
"langgraph==1.2.
|
|
21
|
+
"langfuse==4.9.1",
|
|
22
|
+
"langgraph==1.2.6",
|
|
23
23
|
"langgraph-checkpoint-postgres==3.1.0",
|
|
24
24
|
"langgraph-checkpoint-redis==0.4.1",
|
|
25
25
|
"ldap3==2.9.1",
|
|
@@ -33,8 +33,8 @@ dependencies = [
|
|
|
33
33
|
"python-multipart==0.0.32",
|
|
34
34
|
"pyyaml==6.0.3",
|
|
35
35
|
"redis==7.4.0",
|
|
36
|
-
"sentry-sdk[fastapi]==2.
|
|
37
|
-
"sqlalchemy[asyncio]==2.0.
|
|
36
|
+
"sentry-sdk[fastapi]==2.63.0",
|
|
37
|
+
"sqlalchemy[asyncio]==2.0.51",
|
|
38
38
|
"starlette[full]==1.3.1",
|
|
39
39
|
"tiktoken==0.13.0",
|
|
40
40
|
"uvicorn==0.49.0",
|
|
@@ -44,7 +44,7 @@ dependencies = [
|
|
|
44
44
|
"langchain-mcp-adapters==0.3.0",
|
|
45
45
|
"fastapi-mcp==0.4.0",
|
|
46
46
|
"psycopg[binary,pool]==3.3.4",
|
|
47
|
-
"
|
|
47
|
+
"agent-client-protocol==0.10.1",
|
|
48
48
|
]
|
|
49
49
|
|
|
50
50
|
[tool.setuptools]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""ACP (Agent Client Protocol — Zed) support for sycli.
|
|
2
|
+
|
|
3
|
+
把本地 CLI 工具暴露成 Zed ACP agent(stdio JSON-RPC),可被任何 ACP client
|
|
4
|
+
(Zed、或我们 sycommon 的 ACP client)连接调用。
|
|
5
|
+
|
|
6
|
+
使用官方 `agent-client-protocol`(import 名 `acp`)的 stdio transport,
|
|
7
|
+
照 examples/echo_agent.py 模板实现 Agent 协议。
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from sycli.acp.config import ACPConfig, ToolArgument, ToolDef
|
|
11
|
+
from sycli.acp.executor import build_cli_command, execute_command, stream_command
|
|
12
|
+
from sycli.acp.registry import CLIToolAgent, build_agents
|
|
13
|
+
from sycli.acp.server import run_acp_server
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"ACPConfig",
|
|
17
|
+
"CLIToolAgent",
|
|
18
|
+
"ToolArgument",
|
|
19
|
+
"ToolDef",
|
|
20
|
+
"build_agents",
|
|
21
|
+
"build_cli_command",
|
|
22
|
+
"execute_command",
|
|
23
|
+
"run_acp_server",
|
|
24
|
+
"stream_command",
|
|
25
|
+
]
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"""Zed ACP agent registry.
|
|
2
|
+
|
|
3
|
+
把 .sycli/acp.yaml 里声明的 CLI 工具暴露成一个 Zed ACP Agent(stdio)。
|
|
4
|
+
照官方 examples/echo_agent.py 模板实现 Agent 协议。
|
|
5
|
+
|
|
6
|
+
设计:一个 agent 进程承载多个 CLI 工具。prompt 到来时:
|
|
7
|
+
1. 从输入文本解析 `tool=<name>`(或第一段当作工具名),定位 ToolDef
|
|
8
|
+
2. build_cli_command 拼命令 → stream_command/execute_command 执行
|
|
9
|
+
3. 通过 session_update 把输出(逐行流式或一次性)推给 client
|
|
10
|
+
4. 返回 PromptResponse(stop_reason="end_turn")
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
from collections.abc import AsyncGenerator
|
|
17
|
+
from typing import TYPE_CHECKING, Any
|
|
18
|
+
from uuid import uuid4
|
|
19
|
+
|
|
20
|
+
from acp import (
|
|
21
|
+
Agent,
|
|
22
|
+
InitializeResponse,
|
|
23
|
+
NewSessionResponse,
|
|
24
|
+
PromptResponse,
|
|
25
|
+
text_block,
|
|
26
|
+
update_agent_message,
|
|
27
|
+
update_plan,
|
|
28
|
+
)
|
|
29
|
+
from acp.interfaces import Client
|
|
30
|
+
from acp.schema import (
|
|
31
|
+
AudioContentBlock,
|
|
32
|
+
ClientCapabilities,
|
|
33
|
+
EmbeddedResourceContentBlock,
|
|
34
|
+
HttpMcpServer,
|
|
35
|
+
ImageContentBlock,
|
|
36
|
+
Implementation,
|
|
37
|
+
McpServerStdio,
|
|
38
|
+
PlanEntry,
|
|
39
|
+
ResourceContentBlock,
|
|
40
|
+
SseMcpServer,
|
|
41
|
+
TextContentBlock,
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
from sycli.acp.executor import build_cli_command, execute_command, stream_command
|
|
45
|
+
|
|
46
|
+
if TYPE_CHECKING:
|
|
47
|
+
from sycli.acp.config import ACPConfig, ToolDef
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class CLIToolAgent(Agent):
|
|
51
|
+
"""一个承载多个 CLI 工具的 Zed ACP agent。
|
|
52
|
+
|
|
53
|
+
每次 prompt:解析工具名 → 执行对应 CLI → session_update 推输出。
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
_conn: Client | None = None
|
|
57
|
+
|
|
58
|
+
def __init__(self, config: "ACPConfig", project_root: str) -> None:
|
|
59
|
+
self._config = config
|
|
60
|
+
self._project_root = project_root
|
|
61
|
+
# 工具名 → ToolDef 索引,便于路由
|
|
62
|
+
self._tools_by_name: dict[str, "ToolDef"] = {t.name: t for t in config.tools}
|
|
63
|
+
|
|
64
|
+
# ---- Agent 协议回调 ----
|
|
65
|
+
def on_connect(self, conn: Client) -> None:
|
|
66
|
+
self._conn = conn
|
|
67
|
+
|
|
68
|
+
async def initialize(
|
|
69
|
+
self,
|
|
70
|
+
protocol_version: int,
|
|
71
|
+
client_capabilities: ClientCapabilities | None = None,
|
|
72
|
+
client_info: Implementation | None = None,
|
|
73
|
+
**kwargs: Any,
|
|
74
|
+
) -> InitializeResponse:
|
|
75
|
+
return InitializeResponse(protocol_version=protocol_version)
|
|
76
|
+
|
|
77
|
+
async def new_session(
|
|
78
|
+
self,
|
|
79
|
+
cwd: str,
|
|
80
|
+
additional_directories: list[str] | None = None,
|
|
81
|
+
mcp_servers: list[HttpMcpServer | SseMcpServer | McpServerStdio] | None = None,
|
|
82
|
+
**kwargs: Any,
|
|
83
|
+
) -> NewSessionResponse:
|
|
84
|
+
return NewSessionResponse(session_id=uuid4().hex)
|
|
85
|
+
|
|
86
|
+
async def prompt(
|
|
87
|
+
self,
|
|
88
|
+
prompt: list[
|
|
89
|
+
TextContentBlock
|
|
90
|
+
| ImageContentBlock
|
|
91
|
+
| AudioContentBlock
|
|
92
|
+
| ResourceContentBlock
|
|
93
|
+
| EmbeddedResourceContentBlock
|
|
94
|
+
],
|
|
95
|
+
session_id: str,
|
|
96
|
+
**kwargs: Any,
|
|
97
|
+
) -> PromptResponse:
|
|
98
|
+
assert self._conn is not None, "Agent 未连接"
|
|
99
|
+
|
|
100
|
+
# 1. 提取输入文本
|
|
101
|
+
input_text = _extract_input_text_from_blocks(prompt)
|
|
102
|
+
|
|
103
|
+
# 2. 路由到具体 CLI 工具
|
|
104
|
+
tool_def, remaining_input = _resolve_tool(input_text, self._tools_by_name)
|
|
105
|
+
|
|
106
|
+
if tool_def is None:
|
|
107
|
+
# 找不到工具,列出可用工具
|
|
108
|
+
available = ", ".join(self._tools_by_name.keys()) or "(无)"
|
|
109
|
+
await self._conn.session_update(
|
|
110
|
+
session_id=session_id,
|
|
111
|
+
update=update_agent_message(text_block(
|
|
112
|
+
f"❌ 未识别的 CLI 工具。可用工具: {available}\n"
|
|
113
|
+
f"用法: 第一个词为工具名,或用 tool=<name> 指定。"
|
|
114
|
+
)),
|
|
115
|
+
)
|
|
116
|
+
return PromptResponse(stop_reason="end_turn")
|
|
117
|
+
|
|
118
|
+
# 3. 上报计划(让 client 看到要执行什么)
|
|
119
|
+
await self._conn.session_update(
|
|
120
|
+
session_id=session_id,
|
|
121
|
+
update=update_plan([PlanEntry(
|
|
122
|
+
content=f"执行 CLI 工具: {tool_def.name} ({tool_def.command})",
|
|
123
|
+
priority="medium",
|
|
124
|
+
status="in_progress",
|
|
125
|
+
)]),
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
# 4. 拼命令 + 执行环境
|
|
129
|
+
command = build_cli_command(tool_def, remaining_input)
|
|
130
|
+
cwd = tool_def.working_dir or self._project_root
|
|
131
|
+
env = {**os.environ, **tool_def.env} if tool_def.env else None
|
|
132
|
+
|
|
133
|
+
# 5. 执行并推送输出
|
|
134
|
+
if tool_def.stream_output:
|
|
135
|
+
async for line in stream_command(
|
|
136
|
+
command, cwd=cwd, timeout=tool_def.timeout, env=env,
|
|
137
|
+
):
|
|
138
|
+
await self._conn.session_update(
|
|
139
|
+
session_id=session_id,
|
|
140
|
+
update=update_agent_message(text_block(line)),
|
|
141
|
+
)
|
|
142
|
+
else:
|
|
143
|
+
result = await execute_command(
|
|
144
|
+
command,
|
|
145
|
+
cwd=cwd,
|
|
146
|
+
timeout=tool_def.timeout,
|
|
147
|
+
env=env,
|
|
148
|
+
max_output_bytes=self._config.max_output_bytes,
|
|
149
|
+
stdin_input=remaining_input if tool_def.input_mode == "stdin" else None,
|
|
150
|
+
)
|
|
151
|
+
output = _format_execution_result(result, tool_def)
|
|
152
|
+
await self._conn.session_update(
|
|
153
|
+
session_id=session_id,
|
|
154
|
+
update=update_agent_message(text_block(output)),
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
return PromptResponse(stop_reason="end_turn")
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _extract_input_text_from_blocks(prompt: list[Any]) -> str:
|
|
161
|
+
"""从 prompt 内容块列表里拼接所有 text/plain 文本。"""
|
|
162
|
+
parts: list[str] = []
|
|
163
|
+
for block in prompt:
|
|
164
|
+
text = block.get("text", "") if isinstance(block, dict) else getattr(block, "text", "")
|
|
165
|
+
if text:
|
|
166
|
+
parts.append(text)
|
|
167
|
+
return "\n".join(parts)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _resolve_tool(
|
|
171
|
+
input_text: str, tools_by_name: dict[str, "ToolDef"]
|
|
172
|
+
) -> tuple["ToolDef | None", str]:
|
|
173
|
+
"""从输入文本解析工具名,返回 (ToolDef, 剩余输入)。
|
|
174
|
+
|
|
175
|
+
支持两种写法:
|
|
176
|
+
- `tool=<name> <args...>`(显式指定)
|
|
177
|
+
- `<name> <args...>`(第一段当工具名)
|
|
178
|
+
"""
|
|
179
|
+
stripped = input_text.strip()
|
|
180
|
+
if not stripped:
|
|
181
|
+
return None, ""
|
|
182
|
+
|
|
183
|
+
# tool=xxx 形式
|
|
184
|
+
if stripped.startswith("tool="):
|
|
185
|
+
head, _, rest = stripped.partition(" ")
|
|
186
|
+
name = head[len("tool="):].strip()
|
|
187
|
+
if name in tools_by_name:
|
|
188
|
+
return tools_by_name[name], rest.strip()
|
|
189
|
+
return None, stripped
|
|
190
|
+
|
|
191
|
+
# 第一段当工具名
|
|
192
|
+
first, _, rest = stripped.partition(" ")
|
|
193
|
+
if first in tools_by_name:
|
|
194
|
+
return tools_by_name[first], rest.strip()
|
|
195
|
+
return None, stripped
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def _format_execution_result(result: Any, tool_def: "ToolDef") -> str:
|
|
199
|
+
"""把 executor.ExecutionResult 格式化成给 client 看的文本。"""
|
|
200
|
+
if result.timed_out:
|
|
201
|
+
return f"Error: Command timed out after {tool_def.timeout}s\n{result.stdout}"
|
|
202
|
+
if result.exit_code not in tool_def.allowed_exit_codes:
|
|
203
|
+
parts = []
|
|
204
|
+
if result.stdout:
|
|
205
|
+
parts.append(result.stdout)
|
|
206
|
+
if result.stderr:
|
|
207
|
+
parts.append(f"[stderr]\n{result.stderr}")
|
|
208
|
+
parts.append(f"Exit code: {result.exit_code}")
|
|
209
|
+
return "\n".join(parts)
|
|
210
|
+
return result.stdout or "(no output)"
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def build_agents(config: "ACPConfig", project_root: str) -> CLIToolAgent:
|
|
214
|
+
"""创建承载所有 CLI 工具的 Zed ACP agent 实例。
|
|
215
|
+
|
|
216
|
+
Args:
|
|
217
|
+
config: ACP 配置(含 tools 列表)。
|
|
218
|
+
project_root: CLI 命令执行根目录。
|
|
219
|
+
|
|
220
|
+
Returns:
|
|
221
|
+
CLIToolAgent 实例,ready for acp.run_agent()。
|
|
222
|
+
"""
|
|
223
|
+
return CLIToolAgent(config=config, project_root=project_root)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Zed ACP server bootstrap for sycli.
|
|
2
|
+
|
|
3
|
+
启动一个 Zed ACP agent(stdio JSON-RPC),把 .sycli/acp.yaml 里声明的 CLI 工具
|
|
4
|
+
作为该 agent 的能力暴露。照官方 examples/echo_agent.py 的 run_agent 模式。
|
|
5
|
+
|
|
6
|
+
注意:Zed ACP 是 stdio 协议,不像旧 acp-sdk 走 HTTP/FastAPI/uvicorn。
|
|
7
|
+
每个 CLI 工具不是独立的 agent,而是同一个 agent 用「会话内识别指令 → 路由到
|
|
8
|
+
对应工具」的方式承载(一个 agent 进程,多工具)。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import TYPE_CHECKING
|
|
14
|
+
|
|
15
|
+
from sycli.acp.registry import build_agents
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from sycli.acp.config import ACPConfig
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def run_acp_server(config: ACPConfig, project_root: str) -> None:
|
|
22
|
+
"""启动 Zed ACP agent(阻塞,直到 client 断开或收到关闭信号)。
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
config: ACP 配置(来自 .sycli/acp.yaml),含 tools 列表。
|
|
26
|
+
project_root: CLI 命令执行的根目录。
|
|
27
|
+
"""
|
|
28
|
+
import asyncio
|
|
29
|
+
|
|
30
|
+
from acp import run_agent
|
|
31
|
+
|
|
32
|
+
agent = build_agents(config, project_root)
|
|
33
|
+
asyncio.run(run_agent(agent))
|
|
@@ -169,10 +169,8 @@ def _create_parser() -> argparse.ArgumentParser:
|
|
|
169
169
|
cdp_sub.add_parser("interactive", help="Start interactive CDP REPL")
|
|
170
170
|
|
|
171
171
|
# ── acp ──
|
|
172
|
-
p_acp = sub.add_parser("acp", help="Start ACP
|
|
172
|
+
p_acp = sub.add_parser("acp", help="Start Zed ACP agent exposing CLI tools over stdio")
|
|
173
173
|
p_acp.add_argument("--config", "-c", help="Path to ACP config file (default: .sycli/acp.yaml)")
|
|
174
|
-
p_acp.add_argument("--host", help="Override server host")
|
|
175
|
-
p_acp.add_argument("--port", "-p", type=int, help="Override server port")
|
|
176
174
|
p_acp.add_argument("--project-root", "-r", default=".", help="Project root directory")
|
|
177
175
|
|
|
178
176
|
# ── version ──
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
"""sycli acp command — start ACP
|
|
1
|
+
"""sycli acp command — start a Zed ACP agent exposing CLI tools over stdio."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import asyncio
|
|
5
6
|
import signal
|
|
6
7
|
import sys
|
|
7
8
|
from pathlib import Path
|
|
@@ -17,10 +18,10 @@ def handle_acp(args) -> int:
|
|
|
17
18
|
2. Load .sycli/acp.yaml (or --config path)
|
|
18
19
|
3. Validate tool definitions
|
|
19
20
|
4. Print registered agents summary
|
|
20
|
-
5. Start ACP
|
|
21
|
+
5. Start Zed ACP agent over stdio (blocking)
|
|
21
22
|
|
|
22
23
|
Args:
|
|
23
|
-
args: Parsed argparse namespace with config,
|
|
24
|
+
args: Parsed argparse namespace with config, project_root.
|
|
24
25
|
|
|
25
26
|
Returns:
|
|
26
27
|
Exit code (0 for success, 1 for error).
|
|
@@ -28,22 +29,23 @@ def handle_acp(args) -> int:
|
|
|
28
29
|
project_root = Path(args.project_root or ".").resolve()
|
|
29
30
|
sycli_dir = project_root / ".sycli"
|
|
30
31
|
|
|
31
|
-
if not sycli_dir.exists():
|
|
32
|
-
error(".sycli/ not found. Run `sycli init` first.")
|
|
33
|
-
return 1
|
|
34
|
-
|
|
35
32
|
# Determine config path
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
# 显式 --config 优先(允许指向任意位置,不强制 .sycli/);
|
|
34
|
+
# 否则回退到 <project_root>/.sycli/acp.{yaml,json}
|
|
35
|
+
if args.config:
|
|
36
|
+
config_path = Path(args.config)
|
|
37
|
+
else:
|
|
38
|
+
config_path = sycli_dir / "acp.yaml"
|
|
39
|
+
if not config_path.exists():
|
|
40
|
+
config_path = sycli_dir / "acp.json"
|
|
39
41
|
|
|
40
42
|
if not config_path.exists():
|
|
41
|
-
|
|
43
|
+
if not args.config and not sycli_dir.exists():
|
|
44
|
+
error(".sycli/ not found. Run `sycli init` first, or 用 --config 指定外部配置。")
|
|
45
|
+
error(f"ACP config not found at {config_path}")
|
|
42
46
|
error("Create one with your tool definitions. Example:")
|
|
43
47
|
error("""
|
|
44
|
-
#
|
|
45
|
-
host: "127.0.0.1"
|
|
46
|
-
port: 8100
|
|
48
|
+
# acp.yaml
|
|
47
49
|
tools:
|
|
48
50
|
- name: "git-status"
|
|
49
51
|
command: "git"
|
|
@@ -62,33 +64,28 @@ def handle_acp(args) -> int:
|
|
|
62
64
|
error(f"Failed to load ACP config: {e}")
|
|
63
65
|
return 1
|
|
64
66
|
|
|
65
|
-
# Override port/host from CLI args
|
|
66
|
-
if args.host:
|
|
67
|
-
config.host = args.host
|
|
68
|
-
if args.port:
|
|
69
|
-
config.port = args.port
|
|
70
|
-
|
|
71
67
|
if not config.tools:
|
|
72
68
|
error("No tools defined in ACP config. Add tools to acp.yaml.")
|
|
73
69
|
return 1
|
|
74
70
|
|
|
75
|
-
# Print summary
|
|
76
|
-
header("ACP
|
|
77
|
-
info(f"Config:
|
|
78
|
-
info(f"
|
|
79
|
-
info(f"
|
|
80
|
-
info(f"Agents: {len(config.tools)} registered")
|
|
71
|
+
# Print summary to stderr(stdout 留给 stdio JSON-RPC)
|
|
72
|
+
header("Zed ACP Agent Configuration")
|
|
73
|
+
info(f"Config: {config_path}")
|
|
74
|
+
info(f"Transport: stdio (JSON-RPC)")
|
|
75
|
+
info(f"Agents: {len(config.tools)} CLI tools exposed")
|
|
81
76
|
print()
|
|
82
77
|
for tool in config.tools:
|
|
83
78
|
desc = tool.description or "(no description)"
|
|
84
79
|
info(f" {tool.name}: {tool.command} {' '.join(tool.args) if tool.args else ''}")
|
|
85
80
|
info(f" {desc}")
|
|
86
81
|
print()
|
|
82
|
+
print("-" * 60, file=sys.stderr)
|
|
83
|
+
info("Agent ready — waiting for ACP client on stdin/stdout...")
|
|
84
|
+
print("-" * 60, file=sys.stderr)
|
|
87
85
|
|
|
88
|
-
# Start
|
|
86
|
+
# Start agent (stdio, blocking)
|
|
89
87
|
from sycli.acp.server import run_acp_server
|
|
90
88
|
|
|
91
|
-
# Graceful shutdown on SIGINT
|
|
92
89
|
_shutdown = False
|
|
93
90
|
|
|
94
91
|
def _signal_handler(sig, frame):
|
|
@@ -96,18 +93,17 @@ def handle_acp(args) -> int:
|
|
|
96
93
|
if _shutdown:
|
|
97
94
|
sys.exit(1)
|
|
98
95
|
_shutdown = True
|
|
99
|
-
warning("\nShutting down ACP
|
|
96
|
+
warning("\nShutting down ACP agent...")
|
|
100
97
|
|
|
101
98
|
signal.signal(signal.SIGINT, _signal_handler)
|
|
102
99
|
|
|
103
100
|
try:
|
|
104
|
-
success(f"Starting ACP server on http://{config.host}:{config.port}")
|
|
105
101
|
run_acp_server(config, str(project_root))
|
|
106
102
|
except KeyboardInterrupt:
|
|
107
|
-
warning("ACP
|
|
103
|
+
warning("ACP agent stopped.")
|
|
108
104
|
return 0
|
|
109
105
|
except Exception as e:
|
|
110
|
-
error(f"ACP
|
|
106
|
+
error(f"ACP agent failed: {e}")
|
|
111
107
|
import traceback
|
|
112
108
|
|
|
113
109
|
traceback.print_exc()
|