feat: Enhance plugin runtime configuration and hook management
- Added `inactive_plugins` field to `RunnerReadyPayload` and `ReloadPluginResultPayload` to track plugins that are not activated due to being disabled or unmet dependencies. - Introduced `InspectPluginConfigPayload` and `InspectPluginConfigResultPayload` for inspecting plugin configuration metadata. - Implemented `PluginActivationStatus` enum to better represent plugin activation states. - Updated `_activate_plugin` method to return activation status and handle inactive plugins accordingly. - Added hooks for send service to allow modification of messages before and after sending. - Created new runtime routes for listing hook specifications in the WebUI. - Refactored plugin configuration handling to utilize runtime inspection for better accuracy and flexibility. - Enhanced error handling and logging for plugin configuration operations.
This commit is contained in:
@@ -288,6 +288,8 @@ class RunnerReadyPayload(BaseModel):
|
||||
"""已完成初始化的插件列表"""
|
||||
failed_plugins: List[str] = Field(default_factory=list, description="初始化失败的插件列表")
|
||||
"""初始化失败的插件列表"""
|
||||
inactive_plugins: List[str] = Field(default_factory=list, description="当前因禁用或依赖不可用而未激活的插件列表")
|
||||
"""当前因禁用或依赖不可用而未激活的插件列表"""
|
||||
|
||||
|
||||
# ====== 配置更新 ======
|
||||
@@ -311,6 +313,32 @@ class ValidatePluginConfigPayload(BaseModel):
|
||||
"""待校验的配置内容"""
|
||||
|
||||
|
||||
class InspectPluginConfigPayload(BaseModel):
|
||||
"""plugin.inspect_config 请求 payload。"""
|
||||
|
||||
config_data: Dict[str, Any] = Field(default_factory=dict, description="可选的配置内容")
|
||||
"""可选的配置内容"""
|
||||
use_provided_config: bool = Field(default=False, description="是否优先使用请求中携带的配置内容")
|
||||
"""是否优先使用请求中携带的配置内容"""
|
||||
|
||||
|
||||
class InspectPluginConfigResultPayload(BaseModel):
|
||||
"""plugin.inspect_config 响应 payload。"""
|
||||
|
||||
success: bool = Field(description="是否解析成功")
|
||||
"""是否解析成功"""
|
||||
default_config: Dict[str, Any] = Field(default_factory=dict, description="插件默认配置")
|
||||
"""插件默认配置"""
|
||||
config_schema: Dict[str, Any] = Field(default_factory=dict, description="插件配置 Schema")
|
||||
"""插件配置 Schema"""
|
||||
normalized_config: Dict[str, Any] = Field(default_factory=dict, description="归一化后的配置内容")
|
||||
"""归一化后的配置内容"""
|
||||
changed: bool = Field(default=False, description="是否在归一化过程中自动补齐或修正了配置")
|
||||
"""是否在归一化过程中自动补齐或修正了配置"""
|
||||
enabled: bool = Field(default=True, description="插件在当前配置下是否应被视为启用")
|
||||
"""插件在当前配置下是否应被视为启用"""
|
||||
|
||||
|
||||
class ValidatePluginConfigResultPayload(BaseModel):
|
||||
"""plugin.validate_config 响应 payload。"""
|
||||
|
||||
@@ -380,6 +408,8 @@ class ReloadPluginResultPayload(BaseModel):
|
||||
"""成功完成重载的插件列表"""
|
||||
unloaded_plugins: List[str] = Field(default_factory=list, description="本次已卸载的插件列表")
|
||||
"""本次已卸载的插件列表"""
|
||||
inactive_plugins: List[str] = Field(default_factory=list, description="本次处于未激活状态的插件列表")
|
||||
"""本次处于未激活状态的插件列表"""
|
||||
failed_plugins: Dict[str, str] = Field(default_factory=dict, description="重载失败的插件及原因")
|
||||
"""重载失败的插件及原因"""
|
||||
|
||||
@@ -395,6 +425,8 @@ class ReloadPluginsResultPayload(BaseModel):
|
||||
"""成功完成重载的插件列表"""
|
||||
unloaded_plugins: List[str] = Field(default_factory=list, description="本次已卸载的插件列表")
|
||||
"""本次已卸载的插件列表"""
|
||||
inactive_plugins: List[str] = Field(default_factory=list, description="本次处于未激活状态的插件列表")
|
||||
"""本次处于未激活状态的插件列表"""
|
||||
failed_plugins: Dict[str, str] = Field(default_factory=dict, description="重载失败的插件及原因")
|
||||
"""重载失败的插件及原因"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user