From 3af8780f5143abfc69135b74e5350575418085cf Mon Sep 17 00:00:00 2001 From: AI Christianson Date: Mon, 24 Feb 2025 13:50:25 -0500 Subject: [PATCH] base types for abstracting output --- ra_aid/output/interface/base.py | 8 ++++++++ ra_aid/output/interface/models.py | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 ra_aid/output/interface/base.py create mode 100644 ra_aid/output/interface/models.py diff --git a/ra_aid/output/interface/base.py b/ra_aid/output/interface/base.py new file mode 100644 index 0000000..114e3e6 --- /dev/null +++ b/ra_aid/output/interface/base.py @@ -0,0 +1,8 @@ +from typing import Protocol +from .models import MarkdownPanel, StageHeader, TaskHeader, StatusMessage + +class OutputRenderer(Protocol): + def render_panel(self, panel: MarkdownPanel) -> None: ... + def render_stage(self, header: StageHeader) -> None: ... + def render_task(self, header: TaskHeader) -> None: ... + def render_status(self, message: StatusMessage) -> None: ... diff --git a/ra_aid/output/interface/models.py b/ra_aid/output/interface/models.py new file mode 100644 index 0000000..644a01a --- /dev/null +++ b/ra_aid/output/interface/models.py @@ -0,0 +1,24 @@ +from dataclasses import dataclass +from typing import Optional + +@dataclass +class MarkdownPanel: + content: str + title: Optional[str] = None + icon: Optional[str] = None + border_style: Optional[str] = None + +@dataclass +class StageHeader: + text: str + icon: Optional[str] = None + +@dataclass +class TaskHeader: + text: str + icon: Optional[str] = None + +@dataclass +class StatusMessage: + text: str + style: Optional[str] = None