Files
mai-bot/src/plugin_system/apis/plugin_service_api.py
DrSmoothl 2cb512120b feat(plugin-system): harden P0 safety with workflow timeout, service ACL, and contract validation
- enforce step timeout/cancellation in workflow engine
- add caller authorization boundary for cross-plugin service calls
- validate params_schema and return_schema at runtime
2026-02-21 16:11:52 +08:00

57 lines
2.1 KiB
Python

from typing import Any, Callable, Dict, Optional
from src.plugin_system.base.service_types import PluginServiceInfo
from src.plugin_system.core.plugin_service_registry import plugin_service_registry
def register_service(service_info: PluginServiceInfo, service_handler: Callable[..., Any]) -> bool:
"""注册插件服务。"""
return plugin_service_registry.register_service(service_info, service_handler)
def get_service(service_name: str, plugin_name: Optional[str] = None) -> Optional[PluginServiceInfo]:
"""获取插件服务元信息。"""
return plugin_service_registry.get_service(service_name, plugin_name)
def get_service_handler(service_name: str, plugin_name: Optional[str] = None) -> Optional[Callable[..., Any]]:
"""获取插件服务处理函数。"""
return plugin_service_registry.get_service_handler(service_name, plugin_name)
def list_services(plugin_name: Optional[str] = None, enabled_only: bool = False) -> Dict[str, PluginServiceInfo]:
"""列出插件服务。"""
return plugin_service_registry.list_services(plugin_name=plugin_name, enabled_only=enabled_only)
def enable_service(service_name: str, plugin_name: Optional[str] = None) -> bool:
"""启用插件服务。"""
return plugin_service_registry.enable_service(service_name, plugin_name)
def disable_service(service_name: str, plugin_name: Optional[str] = None) -> bool:
"""禁用插件服务。"""
return plugin_service_registry.disable_service(service_name, plugin_name)
def unregister_service(service_name: str, plugin_name: Optional[str] = None) -> bool:
"""注销插件服务。"""
return plugin_service_registry.unregister_service(service_name, plugin_name)
async def call_service(
service_name: str,
*args: Any,
plugin_name: Optional[str] = None,
caller_plugin: Optional[str] = None,
**kwargs: Any,
) -> Any:
"""调用插件服务。"""
return await plugin_service_registry.call_service(
service_name,
*args,
plugin_name=plugin_name,
caller_plugin=caller_plugin,
**kwargs,
)