refactor(plugin_system): 移除对部分组件的局部状态支持
根据新的设计,某些组件类型,如 ROUTER、EVENT_HANDLER 和 PROMPT,不应再支持局部启用/禁用状态。这些组件的状态应该在全局范围内进行管理。 此更改包括: - 在 `ComponentRegistry` 中引入 `_no_local_state_types` 集合,明确指定不支持局部状态的组件类型。 - 移除 `get_enabled_event_handlers` 和 `get_enabled_prompt_registry` 方法中的 `stream_id` 参数和局部状态检查逻辑,使其只返回全局启用的组件。 这一重构简化了状态管理逻辑,并使组件行为与设计意图保持一致。
This commit is contained in:
@@ -111,6 +111,13 @@ class ComponentRegistry:
|
|||||||
self._local_component_states: dict[str, dict[tuple[str, ComponentType], bool]] = {}
|
self._local_component_states: dict[str, dict[tuple[str, ComponentType], bool]] = {}
|
||||||
"""stream_id -> {(component_name, component_type): enabled_status}"""
|
"""stream_id -> {(component_name, component_type): enabled_status}"""
|
||||||
logger.info("组件注册中心初始化完成")
|
logger.info("组件注册中心初始化完成")
|
||||||
|
self._no_local_state_types: set[ComponentType] = {
|
||||||
|
ComponentType.ROUTER,
|
||||||
|
ComponentType.EVENT_HANDLER,
|
||||||
|
ComponentType.ROUTER,
|
||||||
|
ComponentType.PROMPT,
|
||||||
|
# 根据设计,COMMAND 和 PLUS_COMMAND 也不应支持局部状态
|
||||||
|
}
|
||||||
|
|
||||||
# == 注册方法 ==
|
# == 注册方法 ==
|
||||||
|
|
||||||
@@ -888,14 +895,11 @@ class ComponentRegistry:
|
|||||||
info = self.get_component_info(handler_name, ComponentType.EVENT_HANDLER)
|
info = self.get_component_info(handler_name, ComponentType.EVENT_HANDLER)
|
||||||
return info if isinstance(info, EventHandlerInfo) else None
|
return info if isinstance(info, EventHandlerInfo) else None
|
||||||
|
|
||||||
def get_enabled_event_handlers(self, stream_id: str | None = None) -> dict[str, type[BaseEventHandler]]:
|
def get_enabled_event_handlers(self) -> dict[str, type[BaseEventHandler]]:
|
||||||
"""获取启用的事件处理器, 可选地根据 stream_id 考虑局部状态"""
|
"""获取启用的事件处理器"""
|
||||||
all_handlers = self.get_event_handler_registry()
|
if not hasattr(self, "_enabled_event_handlers"):
|
||||||
available_handlers = {}
|
self._enabled_event_handlers: dict[str, type["BaseEventHandler"]] = {}
|
||||||
for name, handler_class in all_handlers.items():
|
return self._enabled_event_handlers.copy()
|
||||||
if self.is_component_available(name, ComponentType.EVENT_HANDLER, stream_id):
|
|
||||||
available_handlers[name] = handler_class
|
|
||||||
return available_handlers
|
|
||||||
|
|
||||||
# === Chatter 特定查询方法 ===
|
# === Chatter 特定查询方法 ===
|
||||||
def get_chatter_registry(self) -> dict[str, type[BaseChatter]]:
|
def get_chatter_registry(self) -> dict[str, type[BaseChatter]]:
|
||||||
@@ -925,14 +929,11 @@ class ComponentRegistry:
|
|||||||
self._prompt_registry: dict[str, type[BasePrompt]] = {}
|
self._prompt_registry: dict[str, type[BasePrompt]] = {}
|
||||||
return self._prompt_registry.copy()
|
return self._prompt_registry.copy()
|
||||||
|
|
||||||
def get_enabled_prompt_registry(self, stream_id: str | None = None) -> dict[str, type[BasePrompt]]:
|
def get_enabled_prompt_registry(self) -> dict[str, type[BasePrompt]]:
|
||||||
"""获取启用的Prompt注册表, 可选地根据 stream_id 考虑局部状态"""
|
"""获取启用的Prompt注册表"""
|
||||||
all_prompts = self.get_prompt_registry()
|
if not hasattr(self, "_enabled_prompt_registry"):
|
||||||
available_prompts = {}
|
self._enabled_prompt_registry: dict[str, type[BasePrompt]] = {}
|
||||||
for name, prompt_class in all_prompts.items():
|
return self._enabled_prompt_registry.copy()
|
||||||
if self.is_component_available(name, ComponentType.PROMPT, stream_id):
|
|
||||||
available_prompts[name] = prompt_class
|
|
||||||
return available_prompts
|
|
||||||
|
|
||||||
def get_registered_prompt_info(self, prompt_name: str) -> PromptInfo | None:
|
def get_registered_prompt_info(self, prompt_name: str) -> PromptInfo | None:
|
||||||
"""获取Prompt信息"""
|
"""获取Prompt信息"""
|
||||||
|
|||||||
Reference in New Issue
Block a user