from dataclasses import dataclass, field from typing import Any @dataclass class EffectContext: terminal_width: int terminal_height: int scroll_cam: int ticker_height: int mic_excess: float grad_offset: float frame_number: int has_message: bool items: list = field(default_factory=list) @dataclass class EffectConfig: enabled: bool = True intensity: float = 1.0 params: dict[str, Any] = field(default_factory=dict) class EffectPlugin: name: str config: EffectConfig def process(self, buf: list[str], ctx: EffectContext) -> list[str]: raise NotImplementedError def configure(self, config: EffectConfig) -> None: raise NotImplementedError @dataclass class PipelineConfig: order: list[str] = field(default_factory=list) effects: dict[str, EffectConfig] = field(default_factory=dict)