refactor: update message gateway handling and remove adapter references
- Changed the message sending method to return DeliveryBatch instead of DeliveryReceipt in integration.py. - Removed AdapterDeclarationPayload and related references from envelope.py, replacing them with MessageGatewayStateUpdatePayload and MessageGatewayStateUpdateResultPayload. - Updated runner_main.py to remove adapter-related logic and methods, focusing on message gateway functionality. - Added tests for message gateway runtime state synchronization and action bridge functionality in test files.
This commit is contained in:
@@ -25,7 +25,6 @@ import tomllib
|
||||
from src.common.logger import get_console_handler, get_logger, initialize_logging
|
||||
from src.plugin_runtime import ENV_HOST_VERSION, ENV_IPC_ADDRESS, ENV_PLUGIN_DIRS, ENV_SESSION_TOKEN
|
||||
from src.plugin_runtime.protocol.envelope import (
|
||||
AdapterDeclarationPayload,
|
||||
BootstrapPluginPayload,
|
||||
ComponentDeclaration,
|
||||
Envelope,
|
||||
@@ -219,7 +218,7 @@ class PluginRunner:
|
||||
"""为插件实例创建并注入 PluginContext。
|
||||
|
||||
对新版 MaiBotPlugin(具有 _set_context 方法):创建 PluginContext 并注入。
|
||||
对旧版 LegacyPluginAdapter(具有 _set_context 方法,由适配器代理):同上。
|
||||
对旧版 LegacyPluginAdapter(具有 _set_context 方法,由兼容代理封装):同上。
|
||||
"""
|
||||
if not hasattr(instance, "_set_context"):
|
||||
return
|
||||
@@ -293,7 +292,7 @@ class PluginRunner:
|
||||
self._rpc_client.register_method("plugin.invoke_command", self._handle_invoke)
|
||||
self._rpc_client.register_method("plugin.invoke_action", self._handle_invoke)
|
||||
self._rpc_client.register_method("plugin.invoke_tool", self._handle_invoke)
|
||||
self._rpc_client.register_method("plugin.invoke_adapter", self._handle_invoke)
|
||||
self._rpc_client.register_method("plugin.invoke_message_gateway", self._handle_invoke)
|
||||
self._rpc_client.register_method("plugin.emit_event", self._handle_event_invoke)
|
||||
self._rpc_client.register_method("plugin.invoke_hook", self._handle_hook_invoke)
|
||||
self._rpc_client.register_method("plugin.invoke_workflow_step", self._handle_workflow_step)
|
||||
@@ -331,29 +330,6 @@ class PluginRunner:
|
||||
"""撤销 bootstrap 期间为插件签发的能力令牌。"""
|
||||
await self._bootstrap_plugin(meta, capabilities_required=[])
|
||||
|
||||
def _collect_adapter_declaration(self, meta: PluginMeta) -> Optional[AdapterDeclarationPayload]:
|
||||
"""从插件实例中提取适配器声明。
|
||||
|
||||
Args:
|
||||
meta: 待提取声明的插件元数据。
|
||||
|
||||
Returns:
|
||||
Optional[AdapterDeclarationPayload]: 若插件声明了适配器角色,则返回
|
||||
经过校验的适配器声明;否则返回 ``None``。
|
||||
|
||||
Raises:
|
||||
ValueError: 插件导出的适配器声明结构非法时抛出。
|
||||
"""
|
||||
instance = meta.instance
|
||||
if not hasattr(instance, "get_adapter_info"):
|
||||
return None
|
||||
|
||||
adapter_info = instance.get_adapter_info()
|
||||
if adapter_info is None:
|
||||
return None
|
||||
|
||||
return AdapterDeclarationPayload.model_validate(adapter_info)
|
||||
|
||||
async def _register_plugin(self, meta: PluginMeta) -> bool:
|
||||
"""向 Host 注册单个插件。
|
||||
|
||||
@@ -379,17 +355,10 @@ class PluginRunner:
|
||||
for comp_info in instance.get_components()
|
||||
)
|
||||
|
||||
try:
|
||||
adapter = self._collect_adapter_declaration(meta)
|
||||
except Exception as exc:
|
||||
logger.error(f"插件 {meta.plugin_id} 适配器声明非法: {exc}", exc_info=True)
|
||||
return False
|
||||
|
||||
reg_payload = RegisterPluginPayload(
|
||||
plugin_id=meta.plugin_id,
|
||||
plugin_version=meta.version,
|
||||
components=components,
|
||||
adapter=adapter,
|
||||
capabilities_required=meta.capabilities_required,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user