sycommon-python-lib 0.2.6a14__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/PKG-INFO +23 -22
  2. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/pyproject.toml +23 -22
  3. sycommon_python_lib-0.2.7/src/sycli/acp/__init__.py +25 -0
  4. sycommon_python_lib-0.2.7/src/sycli/acp/registry.py +223 -0
  5. sycommon_python_lib-0.2.7/src/sycli/acp/server.py +33 -0
  6. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cli.py +1 -3
  7. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/acp_cmd.py +28 -32
  8. sycommon_python_lib-0.2.7/src/sycli/simple_chat_agent.py +181 -0
  9. sycommon_python_lib-0.2.7/src/sycommon/agent/acp/__init__.py +64 -0
  10. sycommon_python_lib-0.2.7/src/sycommon/agent/acp/client.py +679 -0
  11. sycommon_python_lib-0.2.7/src/sycommon/agent/acp/fetch.py +190 -0
  12. sycommon_python_lib-0.2.7/src/sycommon/agent/acp/ssh_init.py +228 -0
  13. sycommon_python_lib-0.2.7/src/sycommon/agent/acp/tool.py +270 -0
  14. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/deep_agent.py +552 -393
  15. sycommon_python_lib-0.2.7/src/sycommon/agent/mcp/tool_loader.py +445 -0
  16. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/model_request_prep.py +139 -0
  17. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/sandbox_path_guard.py +166 -0
  18. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/sensitive_guard.py +587 -0
  19. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/sitecustomize.py +300 -0
  20. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/skill_api_whitelist.py +440 -0
  21. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/skill_wl_check.py +123 -0
  22. sycommon_python_lib-0.2.7/src/sycommon/agent/middleware/skill_write_guard.py +71 -0
  23. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/multi_agent_team.py +118 -8
  24. sycommon_python_lib-0.2.7/src/sycommon/agent/reasoning_content_patch.py +88 -0
  25. sycommon_python_lib-0.2.7/src/sycommon/agent/resume_compactor.py +183 -0
  26. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/file_ops.py +379 -93
  27. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/http_sandbox_backend.py +665 -218
  28. sycommon_python_lib-0.2.7/src/sycommon/agent/sandbox/minio_sync.py +1033 -0
  29. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/summarization_utils.py +23 -14
  30. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/auth/ldap_service.py +26 -7
  31. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/auth/wecom_ldap_service.py +238 -47
  32. sycommon_python_lib-0.2.7/src/sycommon/config/ACPAgentConfig.py +77 -0
  33. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/Config.py +6 -1
  34. sycommon_python_lib-0.2.7/src/sycommon/config/LLMConfig.py +27 -0
  35. sycommon_python_lib-0.2.7/src/sycommon/config/SkillApiWhitelistConfig.py +87 -0
  36. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/pg_checkpoint_service.py +18 -4
  37. sycommon_python_lib-0.2.7/src/sycommon/database/resilient_pg_saver.py +159 -0
  38. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/heartbeat_process/heartbeat_config.py +12 -3
  39. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/get_llm.py +86 -44
  40. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/llm_logger.py +40 -0
  41. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/sy_langfuse.py +13 -0
  42. sycommon_python_lib-0.2.7/src/sycommon/llm/token_utils.py +169 -0
  43. sycommon_python_lib-0.2.7/src/sycommon/logging/kafka_log.py +706 -0
  44. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/log_masker.py +60 -2
  45. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/process_logger.py +9 -0
  46. sycommon_python_lib-0.2.7/src/sycommon/middleware/context.py +21 -0
  47. sycommon_python_lib-0.2.7/src/sycommon/middleware/sandbox.py +1958 -0
  48. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/tool_result_truncation.py +5 -4
  49. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/traceid.py +84 -45
  50. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/sandbox.py +15 -10
  51. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_client.py +196 -91
  52. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_pool.py +4 -3
  53. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +27 -4
  54. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +5 -1
  55. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_service_core.py +8 -0
  56. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/services.py +8 -1
  57. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/nacos_service.py +5 -0
  58. sycommon_python_lib-0.2.7/src/sycommon/tests/test_consume_dedup.py +194 -0
  59. sycommon_python_lib-0.2.7/src/sycommon/tests/test_consumer_recovery_fix.py +334 -0
  60. sycommon_python_lib-0.2.7/src/sycommon/tests/test_consumer_tags_sync.py +151 -0
  61. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_dynamic_max_tokens.py +80 -10
  62. sycommon_python_lib-0.2.7/src/sycommon/tests/test_exp_concurrent_migrate.py +174 -0
  63. sycommon_python_lib-0.2.7/src/sycommon/tests/test_exp_delete_queue_with_consumers.py +145 -0
  64. sycommon_python_lib-0.2.7/src/sycommon/tests/test_fault_injection_real.py +502 -0
  65. sycommon_python_lib-0.2.7/src/sycommon/tests/test_heartbeat_timeout.py +282 -0
  66. sycommon_python_lib-0.2.7/src/sycommon/tests/test_integration_real_broker.py +381 -0
  67. sycommon_python_lib-0.2.7/src/sycommon/tests/test_mq_config_driven.py +238 -0
  68. sycommon_python_lib-0.2.7/src/sycommon/tests/test_queue_priority_fallback.py +259 -0
  69. sycommon_python_lib-0.2.7/src/sycommon/tests/test_queue_priority_upgrade_timing.py +257 -0
  70. sycommon_python_lib-0.2.7/src/sycommon/tests/test_reconnect_scenarios.py +336 -0
  71. sycommon_python_lib-0.2.7/src/sycommon/tests/test_upgrade_aio_pika.py +153 -0
  72. sycommon_python_lib-0.2.7/src/sycommon/tests/test_upgrade_langgraph_stream.py +140 -0
  73. sycommon_python_lib-0.2.7/src/sycommon/tests/test_upgrade_verification.py +161 -0
  74. sycommon_python_lib-0.2.7/src/sycommon/tools/user_id.py +106 -0
  75. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon_python_lib.egg-info/PKG-INFO +23 -22
  76. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon_python_lib.egg-info/SOURCES.txt +47 -1
  77. sycommon_python_lib-0.2.7/src/sycommon_python_lib.egg-info/requires.txt +41 -0
  78. sycommon_python_lib-0.2.7/tests/test_acp_tool.py +392 -0
  79. sycommon_python_lib-0.2.7/tests/test_llm_apikey_contextvar.py +36 -0
  80. sycommon_python_lib-0.2.7/tests/test_resilient_pg_saver.py +259 -0
  81. sycommon_python_lib-0.2.7/tests/test_sandbox_path_guard.py +297 -0
  82. sycommon_python_lib-0.2.7/tests/test_sensitive_guard.py +466 -0
  83. sycommon_python_lib-0.2.7/tests/test_simple_chat_agent.py +126 -0
  84. sycommon_python_lib-0.2.7/tests/test_skill_regex_upgrade.py +85 -0
  85. sycommon_python_lib-0.2.7/tests/test_skill_write_guard.py +122 -0
  86. sycommon_python_lib-0.2.7/tests/test_streaming_e2e.py +238 -0
  87. sycommon_python_lib-0.2.7/tests/test_sync_skills_to_sandbox.py +207 -0
  88. sycommon_python_lib-0.2.7/tests/test_upload_concurrency.py +207 -0
  89. sycommon_python_lib-0.2.7/tests/test_upload_e2e_http.py +224 -0
  90. sycommon_python_lib-0.2.6a14/src/sycli/acp/__init__.py +0 -48
  91. sycommon_python_lib-0.2.6a14/src/sycli/acp/registry.py +0 -155
  92. sycommon_python_lib-0.2.6a14/src/sycli/acp/server.py +0 -69
  93. sycommon_python_lib-0.2.6a14/src/sycommon/agent/mcp/tool_loader.py +0 -275
  94. sycommon_python_lib-0.2.6a14/src/sycommon/agent/sandbox/minio_sync.py +0 -568
  95. sycommon_python_lib-0.2.6a14/src/sycommon/config/LLMConfig.py +0 -20
  96. sycommon_python_lib-0.2.6a14/src/sycommon/llm/token_utils.py +0 -103
  97. sycommon_python_lib-0.2.6a14/src/sycommon/logging/kafka_log.py +0 -428
  98. sycommon_python_lib-0.2.6a14/src/sycommon/middleware/context.py +0 -5
  99. sycommon_python_lib-0.2.6a14/src/sycommon/middleware/sandbox.py +0 -1230
  100. sycommon_python_lib-0.2.6a14/src/sycommon_python_lib.egg-info/requires.txt +0 -40
  101. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/README.md +0 -0
  102. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/setup.cfg +0 -0
  103. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/__init__.py +0 -0
  104. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/cli.py +0 -0
  105. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/core/__init__.py +0 -0
  106. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/core/console.py +0 -0
  107. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/core/models.py +0 -0
  108. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/core/project.py +0 -0
  109. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/core/utils.py +0 -0
  110. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/__init__.py +0 -0
  111. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/README.md.tpl +0 -0
  112. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/__init__.py +0 -0
  113. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
  114. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
  115. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
  116. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
  117. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
  118. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
  119. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/api/__init__.py.tpl +0 -0
  120. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/api/query.py.tpl +0 -0
  121. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
  122. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
  123. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/app.py.tpl +0 -0
  124. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/client/__init__.py.tpl +0 -0
  125. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/db/__init__.py.tpl +0 -0
  126. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
  127. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
  128. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/db/service.py.tpl +0 -0
  129. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/model/__init__.py.tpl +0 -0
  130. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/model/parse.py.tpl +0 -0
  131. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
  132. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/agent/tools/mq.py.tpl +0 -0
  133. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/.env.tpl +0 -0
  134. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/.gitignore.tpl +0 -0
  135. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/Dockerfile.tpl +0 -0
  136. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/README.md.tpl +0 -0
  137. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/__init__.py +0 -0
  138. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/app.py.tpl +0 -0
  139. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/app.yaml.tpl +0 -0
  140. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
  141. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/client/__init__.py.tpl +0 -0
  142. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/model/__init__.py.tpl +0 -0
  143. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/model/file_info.py.tpl +0 -0
  144. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/base/requirements.txt.tpl +0 -0
  145. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/README.md.tpl +0 -0
  146. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/__init__.py +0 -0
  147. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/app.py.tpl +0 -0
  148. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
  149. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/commands/hello.py.tpl +0 -0
  150. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/pyproject.toml.tpl +0 -0
  151. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
  152. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/README.md.tpl +0 -0
  153. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/__init__.py +0 -0
  154. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/api/__init__.py.tpl +0 -0
  155. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/api/echo.py.tpl +0 -0
  156. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
  157. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
  158. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/app.py.tpl +0 -0
  159. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/client/__init__.py.tpl +0 -0
  160. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/model/__init__.py.tpl +0 -0
  161. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/tools/__init__.py.tpl +0 -0
  162. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/command/templates/web/tools/mq.py.tpl +0 -0
  163. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/nexus/__init__.py +0 -0
  164. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/__init__.py +0 -0
  165. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/__main__.py +0 -0
  166. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/acp/config.py +0 -0
  167. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/acp/executor.py +0 -0
  168. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/agents/__init__.py +0 -0
  169. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/agents/factory.py +0 -0
  170. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/agents/prompts.py +0 -0
  171. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/__init__.py +0 -0
  172. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/browser.py +0 -0
  173. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/__init__.py +0 -0
  174. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/console.py +0 -0
  175. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/dom.py +0 -0
  176. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/network.py +0 -0
  177. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/page_errors.py +0 -0
  178. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/performance.py +0 -0
  179. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/capabilities/screenshot.py +0 -0
  180. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/client.py +0 -0
  181. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/protocol.py +0 -0
  182. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/cdp/repl.py +0 -0
  183. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/__init__.py +0 -0
  184. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/cdp_cmd.py +0 -0
  185. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/chat_cmd.py +0 -0
  186. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/create_cmd.py +0 -0
  187. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/evaluate_cmd.py +0 -0
  188. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/init_cmd.py +0 -0
  189. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/memory_cmd.py +0 -0
  190. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/resume_cmd.py +0 -0
  191. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/rollback_cmd.py +0 -0
  192. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/commands/run_cmd.py +0 -0
  193. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/__init__.py +0 -0
  194. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/backend.py +0 -0
  195. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/config.py +0 -0
  196. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/display.py +0 -0
  197. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/git_integration.py +0 -0
  198. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/llm.py +0 -0
  199. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/core/state.py +0 -0
  200. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/evaluate/__init__.py +0 -0
  201. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/evaluate/api_evaluator.py +0 -0
  202. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/memory/__init__.py +0 -0
  203. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/memory/compressor.py +0 -0
  204. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/memory/full.py +0 -0
  205. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/memory/hot.py +0 -0
  206. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/memory/manager.py +0 -0
  207. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/memory/warm.py +0 -0
  208. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/mode/__init__.py +0 -0
  209. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/mode/create.py +0 -0
  210. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/mode/optimize.py +0 -0
  211. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/models/__init__.py +0 -0
  212. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/models/config_models.py +0 -0
  213. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/__init__.py +0 -0
  214. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/baseline_tests.py +0 -0
  215. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/checkpoint.py +0 -0
  216. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/convergence.py +0 -0
  217. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/diagnosis.py +0 -0
  218. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/engine.py +0 -0
  219. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/environment.py +0 -0
  220. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/experience.py +0 -0
  221. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/harness_prompts.py +0 -0
  222. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/history.py +0 -0
  223. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/optimization_logger.py +0 -0
  224. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/pre_validation.py +0 -0
  225. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/reward.py +0 -0
  226. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/strategy_bandit.py +0 -0
  227. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/strategy_generator.py +0 -0
  228. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/rl/strategy_prompts.py +0 -0
  229. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycli/skills/__init__.py +0 -0
  230. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/__init__.py +0 -0
  231. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/__init__.py +0 -0
  232. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/agent_manager.py +0 -0
  233. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/chat_events.py +0 -0
  234. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/mcp/__init__.py +0 -0
  235. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/mcp/models.py +0 -0
  236. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/__init__.py +0 -0
  237. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/consistent_hash.py +0 -0
  238. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  239. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  240. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/agent/sandbox/session.py +0 -0
  241. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/auth/__init__.py +0 -0
  242. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/auth/oa_cache.py +0 -0
  243. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/auth/oa_crypto.py +0 -0
  244. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/auth/oa_service.py +0 -0
  245. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/DatabaseConfig.py +0 -0
  246. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  247. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/EmbeddingConfig.py +0 -0
  248. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/LangfuseConfig.py +0 -0
  249. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/MQConfig.py +0 -0
  250. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/PgConfig.py +0 -0
  251. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/RedisConfig.py +0 -0
  252. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/RerankerConfig.py +0 -0
  253. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/SentryConfig.py +0 -0
  254. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/XxlJobConfig.py +0 -0
  255. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/__init__.py +0 -0
  256. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/config/config_change_notifier.py +0 -0
  257. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/async_base_db_service.py +0 -0
  258. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/async_database_service.py +0 -0
  259. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/base_db_service.py +0 -0
  260. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/database_service.py +0 -0
  261. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/elasticsearch_service.py +0 -0
  262. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/redis_service.py +0 -0
  263. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/database/token_usage_db_service.py +0 -0
  264. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/health/__init__.py +0 -0
  265. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/health/health_check.py +0 -0
  266. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/health/metrics.py +0 -0
  267. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/health/ping.py +0 -0
  268. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/heartbeat_process/__init__.py +0 -0
  269. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  270. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  271. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/__init__.py +0 -0
  272. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/embedding.py +0 -0
  273. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/llm_tokens.py +0 -0
  274. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  275. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  276. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  277. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/struct_token.py +0 -0
  278. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  279. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
  280. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/token_usage_es_service.py +0 -0
  281. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  282. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/llm/usage_token.py +0 -0
  283. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/__init__.py +0 -0
  284. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/async_sql_logger.py +0 -0
  285. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/logger_levels.py +0 -0
  286. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/logger_wrapper.py +0 -0
  287. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/logging/sql_logger.py +0 -0
  288. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/mcp_server/__init__.py +0 -0
  289. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/mcp_server/server.py +0 -0
  290. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/__init__.py +0 -0
  291. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/cors.py +0 -0
  292. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/docs.py +0 -0
  293. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/exception.py +0 -0
  294. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/middleware.py +0 -0
  295. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/monitor_memory.py +0 -0
  296. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/mq.py +0 -0
  297. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/timeout.py +0 -0
  298. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/middleware/token_tracking.py +0 -0
  299. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/__init__.py +0 -0
  300. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/base_http.py +0 -0
  301. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/log.py +0 -0
  302. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/mcp_server_config.py +0 -0
  303. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/mqlistener_config.py +0 -0
  304. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/mqmsg_model.py +0 -0
  305. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/mqsend_config.py +0 -0
  306. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/sso_user.py +0 -0
  307. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/token_usage.py +0 -0
  308. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/token_usage_mysql.py +0 -0
  309. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/models/xxljob_handler_config.py +0 -0
  310. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/notice/__init__.py +0 -0
  311. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  312. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/notice/wecom_message.py +0 -0
  313. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  314. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  315. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  316. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  317. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/sentry/__init__.py +0 -0
  318. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/sentry/sy_sentry.py +0 -0
  319. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/sse/__init__.py +0 -0
  320. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/sse/event.py +0 -0
  321. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/sse/sse.py +0 -0
  322. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/__init__.py +0 -0
  323. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/example.py +0 -0
  324. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/example2.py +0 -0
  325. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/feign.py +0 -0
  326. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/feign_client.py +0 -0
  327. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/nacos_client_base.py +0 -0
  328. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  329. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  330. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  331. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  332. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/synacos/param.py +0 -0
  333. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/deep_agent_server.py +0 -0
  334. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_consistent_hash.py +0 -0
  335. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
  336. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_consumer_recovery.py +0 -0
  337. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_deep_agent.py +0 -0
  338. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_email.py +0 -0
  339. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_encoding_cache.py +0 -0
  340. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_fix_verification.py +0 -0
  341. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_mcp_server.py +0 -0
  342. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
  343. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_mq.py +0 -0
  344. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_oa_login.py +0 -0
  345. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_real_summarization.py +0 -0
  346. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_summarization_config.py +0 -0
  347. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_summarization_real.py +0 -0
  348. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
  349. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/__init__.py +0 -0
  350. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/async_utils.py +0 -0
  351. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/docs.py +0 -0
  352. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/env.py +0 -0
  353. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/merge_headers.py +0 -0
  354. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/snowflake.py +0 -0
  355. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/syemail.py +0 -0
  356. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/tools/timing.py +0 -0
  357. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/xxljob/__init__.py +0 -0
  358. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon/xxljob/xxljob_service.py +0 -0
  359. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  360. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  361. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
  362. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/tests/test_asyncio_logging.py +0 -0
  363. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/tests/test_config_change_notifier.py +0 -0
  364. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/tests/test_hotreload_snapshot.py +0 -0
  365. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/tests/test_log_masker.py +0 -0
  366. {sycommon_python_lib-0.2.6a14 → sycommon_python_lib-0.2.7}/tests/test_sycli.py +0 -0
@@ -1,49 +1,50 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.6a14
3
+ Version: 0.2.7
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
- Requires-Dist: aio-pika==9.6.2
8
- Requires-Dist: aiohttp==3.14.1
7
+ Requires-Dist: aio-pika==10.0.1
8
+ Requires-Dist: aiohttp==3.14.3
9
9
  Requires-Dist: aiomysql==0.3.2
10
- Requires-Dist: anyio==4.13.0
10
+ Requires-Dist: anyio==4.14.2
11
11
  Requires-Dist: decorator==5.3.1
12
- Requires-Dist: deepagents==0.6.10
12
+ Requires-Dist: deepagents==0.7.1
13
13
  Requires-Dist: elasticsearch==9.4.1
14
- Requires-Dist: fastapi==0.137.0
14
+ Requires-Dist: fastapi==0.141.1
15
15
  Requires-Dist: jinja2==3.1.6
16
- Requires-Dist: kafka-python==3.0.0
17
- Requires-Dist: langchain==1.3.9
18
- Requires-Dist: langchain-core==1.4.7
19
- Requires-Dist: langchain-openai==1.3.2
20
- Requires-Dist: langfuse==4.7.1
21
- Requires-Dist: langgraph==1.2.5
22
- Requires-Dist: langgraph-checkpoint-postgres==3.1.0
23
- Requires-Dist: langgraph-checkpoint-redis==0.4.1
16
+ Requires-Dist: kafka-python==3.0.9
17
+ Requires-Dist: langchain==1.3.14
18
+ Requires-Dist: langchain-core==1.5.3
19
+ Requires-Dist: langchain-openai==1.4.1
20
+ Requires-Dist: langfuse==4.14.2
21
+ Requires-Dist: langgraph==1.2.10
22
+ Requires-Dist: langgraph-checkpoint-postgres==3.1.1
23
+ Requires-Dist: langgraph-checkpoint-redis==0.5.1
24
24
  Requires-Dist: ldap3==2.9.1
25
25
  Requires-Dist: loguru==0.7.3
26
- Requires-Dist: mysql-connector-python==9.7.0
26
+ Requires-Dist: mysql-connector-python==26.7.0
27
27
  Requires-Dist: nacos-sdk-python<3.0,==2.0.11
28
28
  Requires-Dist: psutil==7.2.2
29
- Requires-Dist: pyxxl==0.4.7
29
+ Requires-Dist: pyxxl==0.4.8
30
30
  Requires-Dist: pydantic==2.13.4
31
31
  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.62.0
36
- Requires-Dist: sqlalchemy[asyncio]==2.0.50
35
+ Requires-Dist: sentry-sdk[fastapi]==2.66.1
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
- Requires-Dist: uvicorn==0.49.0
39
+ Requires-Dist: uvicorn==0.52.1
40
40
  Requires-Dist: wecom-aibot-python-sdk==1.0.2
41
- Requires-Dist: twine==6.2.0
41
+ Requires-Dist: twine==7.0.0
42
42
  Requires-Dist: minio==7.2.20
43
- Requires-Dist: langchain-mcp-adapters==0.3.0
43
+ Requires-Dist: langchain-mcp-adapters==0.3.1
44
44
  Requires-Dist: fastapi-mcp==0.4.0
45
45
  Requires-Dist: psycopg[binary,pool]==3.3.4
46
- Requires-Dist: acp-sdk>=1.0.3
46
+ Requires-Dist: agent-client-protocol==0.12.0
47
+ Requires-Dist: pypinyin==0.55.0
47
48
 
48
49
  # sycommon-python-lib
49
50
 
@@ -1,50 +1,51 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.6a14"
3
+ version = "0.2.7"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
7
7
  dependencies = [
8
- "aio-pika==9.6.2",
9
- "aiohttp==3.14.1",
8
+ "aio-pika==10.0.1",
9
+ "aiohttp==3.14.3",
10
10
  "aiomysql==0.3.2",
11
- "anyio==4.13.0",
11
+ "anyio==4.14.2",
12
12
  "decorator==5.3.1",
13
- "deepagents==0.6.10",
13
+ "deepagents==0.7.1",
14
14
  "elasticsearch==9.4.1",
15
- "fastapi==0.137.0",
15
+ "fastapi==0.141.1",
16
16
  "jinja2==3.1.6",
17
- "kafka-python==3.0.0",
18
- "langchain==1.3.9",
19
- "langchain-core==1.4.7",
20
- "langchain-openai==1.3.2",
21
- "langfuse==4.7.1",
22
- "langgraph==1.2.5",
23
- "langgraph-checkpoint-postgres==3.1.0",
24
- "langgraph-checkpoint-redis==0.4.1",
17
+ "kafka-python==3.0.9",
18
+ "langchain==1.3.14",
19
+ "langchain-core==1.5.3",
20
+ "langchain-openai==1.4.1",
21
+ "langfuse==4.14.2",
22
+ "langgraph==1.2.10",
23
+ "langgraph-checkpoint-postgres==3.1.1",
24
+ "langgraph-checkpoint-redis==0.5.1",
25
25
  "ldap3==2.9.1",
26
26
  "loguru==0.7.3",
27
- "mysql-connector-python==9.7.0",
27
+ "mysql-connector-python==26.7.0",
28
28
  "nacos-sdk-python==2.0.11,<3.0",
29
29
  "psutil==7.2.2",
30
- "pyxxl==0.4.7",
30
+ "pyxxl==0.4.8",
31
31
  "pydantic==2.13.4",
32
32
  "python-dotenv==1.2.2",
33
33
  "python-multipart==0.0.32",
34
34
  "pyyaml==6.0.3",
35
35
  "redis==7.4.0",
36
- "sentry-sdk[fastapi]==2.62.0",
37
- "sqlalchemy[asyncio]==2.0.50",
36
+ "sentry-sdk[fastapi]==2.66.1",
37
+ "sqlalchemy[asyncio]==2.0.51",
38
38
  "starlette[full]==1.3.1",
39
39
  "tiktoken==0.13.0",
40
- "uvicorn==0.49.0",
40
+ "uvicorn==0.52.1",
41
41
  "wecom-aibot-python-sdk==1.0.2",
42
- "twine==6.2.0",
42
+ "twine==7.0.0",
43
43
  "minio==7.2.20",
44
- "langchain-mcp-adapters==0.3.0",
44
+ "langchain-mcp-adapters==0.3.1",
45
45
  "fastapi-mcp==0.4.0",
46
46
  "psycopg[binary,pool]==3.3.4",
47
- "acp-sdk>=1.0.3",
47
+ "agent-client-protocol==0.12.0",
48
+ "pypinyin==0.55.0",
48
49
  ]
49
50
 
50
51
  [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 server exposing CLI tools as agents")
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 server exposing CLI tools as agents."""
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 server (blocking)
21
+ 5. Start Zed ACP agent over stdio (blocking)
21
22
 
22
23
  Args:
23
- args: Parsed argparse namespace with config, host, port, project_root.
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
- config_path = Path(args.config) if args.config else sycli_dir / "acp.yaml"
37
- if not config_path.exists():
38
- config_path = sycli_dir / "acp.json"
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
- error(f"ACP config not found at {sycli_dir / 'acp.yaml'}")
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
- # .sycli/acp.yaml
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 Server Configuration")
77
- info(f"Config: {config_path}")
78
- info(f"Host: {config.host}")
79
- info(f"Port: {config.port}")
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 server
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 server...")
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 server stopped.")
103
+ warning("ACP agent stopped.")
108
104
  return 0
109
105
  except Exception as e:
110
- error(f"ACP server failed: {e}")
106
+ error(f"ACP agent failed: {e}")
111
107
  import traceback
112
108
 
113
109
  traceback.print_exc()