mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-14 09:46:03 +00:00
chore(agent-runner): remove comment-only churn
This commit is contained in:
@@ -30,7 +30,7 @@ class MCPSessionStatus(enum.Enum):
|
||||
|
||||
|
||||
class RuntimeMCPSession:
|
||||
"""Runtime MCP session."""
|
||||
"""运行时 MCP 会话"""
|
||||
|
||||
ap: app.Application
|
||||
|
||||
@@ -384,12 +384,12 @@ class RuntimeMCPSession:
|
||||
return info
|
||||
|
||||
async def shutdown(self):
|
||||
"""Close the session and release resources."""
|
||||
"""关闭会话并清理资源"""
|
||||
try:
|
||||
# Signal the lifecycle task to exit.
|
||||
# 设置shutdown事件,通知lifecycle任务退出
|
||||
self._shutdown_event.set()
|
||||
|
||||
# Wait for the lifecycle task with a bounded timeout.
|
||||
# 等待lifecycle任务完成(带超时)
|
||||
if self._lifecycle_task and not self._lifecycle_task.done():
|
||||
try:
|
||||
await asyncio.wait_for(self._lifecycle_task, timeout=5.0)
|
||||
@@ -448,9 +448,9 @@ class RuntimeMCPSession:
|
||||
|
||||
# @loader.loader_class('mcp')
|
||||
class MCPLoader(loader.ToolLoader):
|
||||
"""MCP tool loader.
|
||||
"""MCP 工具加载器。
|
||||
|
||||
This loader owns all active MCP server connections.
|
||||
在此加载器中管理所有与 MCP Server 的连接。
|
||||
"""
|
||||
|
||||
sessions: dict[str, RuntimeMCPSession]
|
||||
@@ -505,14 +505,14 @@ class MCPLoader(loader.ToolLoader):
|
||||
self.ap.logger.debug(f'Started MCP server {server_config["name"]}({server_config["uuid"]})')
|
||||
|
||||
async def load_mcp_server(self, server_config: dict) -> RuntimeMCPSession:
|
||||
"""Load an MCP server into the runtime.
|
||||
"""加载 MCP 服务器到运行时
|
||||
|
||||
Args:
|
||||
server_config: Server config dict. Must include:
|
||||
- name: Server name.
|
||||
- mode: Connection mode (stdio/sse/http).
|
||||
- enable: Whether the server is enabled.
|
||||
- extra_args: Optional extra config.
|
||||
server_config: 服务器配置字典,必须包含:
|
||||
- name: 服务器名称
|
||||
- mode: 连接模式 (stdio/sse/http)
|
||||
- enable: 是否启用
|
||||
- extra_args: 额外的配置参数 (可选)
|
||||
"""
|
||||
uuid_ = server_config.get('uuid')
|
||||
is_transient = False
|
||||
@@ -560,7 +560,7 @@ class MCPLoader(loader.ToolLoader):
|
||||
return all_functions
|
||||
|
||||
async def has_tool(self, name: str) -> bool:
|
||||
"""Return whether a loaded MCP tool exists."""
|
||||
"""检查工具是否存在"""
|
||||
for session in self.sessions.values():
|
||||
for function in session.get_tools():
|
||||
if function.name == name:
|
||||
@@ -583,7 +583,7 @@ class MCPLoader(loader.ToolLoader):
|
||||
return None
|
||||
|
||||
async def invoke_tool(self, name: str, parameters: dict, query: pipeline_query.Query | None) -> typing.Any:
|
||||
"""Invoke a loaded MCP tool."""
|
||||
"""执行工具调用"""
|
||||
for session in self.sessions.values():
|
||||
for function in session.get_tools():
|
||||
if function.name == name:
|
||||
@@ -599,7 +599,7 @@ class MCPLoader(loader.ToolLoader):
|
||||
raise ValueError(f'Tool not found: {name}')
|
||||
|
||||
async def remove_mcp_server(self, server_name: str):
|
||||
"""Remove an MCP server from the runtime."""
|
||||
"""移除 MCP 服务器"""
|
||||
if server_name not in self.sessions:
|
||||
self.ap.logger.warning(f'MCP server {server_name} not found in sessions, skipping removal')
|
||||
return
|
||||
@@ -609,24 +609,24 @@ class MCPLoader(loader.ToolLoader):
|
||||
self.ap.logger.info(f'Removed MCP server: {server_name}')
|
||||
|
||||
def get_session(self, server_name: str) -> RuntimeMCPSession | None:
|
||||
"""Get an MCP session by server name."""
|
||||
"""获取指定名称的 MCP 会话"""
|
||||
return self.sessions.get(server_name)
|
||||
|
||||
def has_session(self, server_name: str) -> bool:
|
||||
"""Return whether a session exists for the server name."""
|
||||
"""检查是否存在指定名称的 MCP 会话"""
|
||||
return server_name in self.sessions
|
||||
|
||||
def get_all_server_names(self) -> list[str]:
|
||||
"""Return all loaded MCP server names."""
|
||||
"""获取所有已加载的 MCP 服务器名称"""
|
||||
return list(self.sessions.keys())
|
||||
|
||||
def get_server_tool_count(self, server_name: str) -> int:
|
||||
"""Return the number of tools exposed by one MCP server."""
|
||||
"""获取指定服务器的工具数量"""
|
||||
session = self.get_session(server_name)
|
||||
return len(session.get_tools()) if session else 0
|
||||
|
||||
def get_all_servers_info(self) -> dict[str, dict]:
|
||||
"""Return runtime information for all loaded MCP servers."""
|
||||
"""获取所有服务器的信息"""
|
||||
info = {}
|
||||
for server_name, session in self.sessions.items():
|
||||
tools = session.get_tools()
|
||||
@@ -640,7 +640,7 @@ class MCPLoader(loader.ToolLoader):
|
||||
return info
|
||||
|
||||
async def shutdown(self):
|
||||
"""Shut down all MCP sessions."""
|
||||
"""关闭所有工具"""
|
||||
self.ap.logger.info('Shutting down all MCP sessions...')
|
||||
for server_name, session in list(self.sessions.items()):
|
||||
try:
|
||||
|
||||
@@ -5,10 +5,10 @@ import typing
|
||||
|
||||
|
||||
def import_modules_in_pkg(pkg: typing.Any) -> None:
|
||||
"""Import all Python modules inside a package.
|
||||
|
||||
"""
|
||||
导入一个包内的所有模块
|
||||
Args:
|
||||
pkg: Package object to import from.
|
||||
pkg: 要导入的包对象
|
||||
"""
|
||||
pkg_path = os.path.dirname(pkg.__file__)
|
||||
import_dir(pkg_path)
|
||||
|
||||
Reference in New Issue
Block a user