121 lines
2.5 KiB
Python
121 lines
2.5 KiB
Python
"""
|
|
协议适配器基类
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from dataclasses import dataclass, field
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
|
|
@dataclass
|
|
class AgentInfo:
|
|
"""Agent 信息"""
|
|
id: str
|
|
protocol: str
|
|
name: str = ""
|
|
description: str = ""
|
|
methods: List[str] = field(default_factory=list)
|
|
endpoint: str = ""
|
|
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
@dataclass
|
|
class Connection:
|
|
"""连接对象"""
|
|
agent_id: str
|
|
protocol: str
|
|
endpoint: str = ""
|
|
session: Any = None
|
|
metadata: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
def is_active(self) -> bool:
|
|
return self.session is not None
|
|
|
|
|
|
class ProtocolAdapter(ABC):
|
|
"""协议适配器基类"""
|
|
|
|
protocol_name: str = "base"
|
|
|
|
@abstractmethod
|
|
async def connect(self, agent_config: dict) -> Connection:
|
|
"""
|
|
建立与 Agent 的连接
|
|
|
|
Args:
|
|
agent_config: Agent 配置信息
|
|
|
|
Returns:
|
|
Connection 对象
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def call(
|
|
self,
|
|
connection: Connection,
|
|
method: str,
|
|
params: dict,
|
|
timeout: float = 30.0
|
|
) -> dict:
|
|
"""
|
|
调用 Agent 方法
|
|
|
|
Args:
|
|
connection: 连接对象
|
|
method: 方法名
|
|
params: 参数
|
|
timeout: 超时时间(秒)
|
|
|
|
Returns:
|
|
调用结果
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def discover(self, capability: str = "") -> List[AgentInfo]:
|
|
"""
|
|
发现 Agent
|
|
|
|
Args:
|
|
capability: 能力关键词(可选)
|
|
|
|
Returns:
|
|
Agent 信息列表
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def close(self, connection: Connection):
|
|
"""
|
|
关闭连接
|
|
|
|
Args:
|
|
connection: 连接对象
|
|
"""
|
|
pass
|
|
|
|
async def get_methods(self, connection: Connection) -> List[dict]:
|
|
"""
|
|
获取 Agent 支持的方法列表
|
|
|
|
Args:
|
|
connection: 连接对象
|
|
|
|
Returns:
|
|
方法列表
|
|
"""
|
|
return []
|
|
|
|
def validate_config(self, agent_config: dict) -> bool:
|
|
"""
|
|
验证 Agent 配置
|
|
|
|
Args:
|
|
agent_config: Agent 配置
|
|
|
|
Returns:
|
|
是否有效
|
|
"""
|
|
return True
|