From aecfc4b82f71e838b4567e7c3cc2f2d29c190d33 Mon Sep 17 00:00:00 2001 From: Konstantin Fickel Date: Fri, 13 Feb 2026 20:10:02 +0100 Subject: [PATCH] feat: add abstract Provider base class - Defines async generate() interface for generation backends - Takes target config, resolved prompt/model, and project dir --- bulkgen/providers/__init__.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/bulkgen/providers/__init__.py b/bulkgen/providers/__init__.py index e69de29..047aed1 100644 --- a/bulkgen/providers/__init__.py +++ b/bulkgen/providers/__init__.py @@ -0,0 +1,31 @@ +"""Provider abstraction for AI generation backends.""" + +from __future__ import annotations + +import abc +from pathlib import Path + +from bulkgen.config import TargetConfig + + +class Provider(abc.ABC): + """Abstract base for generation providers.""" + + @abc.abstractmethod + async def generate( + self, + target_name: str, + target_config: TargetConfig, + resolved_prompt: str, + resolved_model: str, + project_dir: Path, + ) -> None: + """Generate the target artifact and write it to *project_dir / target_name*. + + Args: + target_name: Output filename (relative to project_dir). + target_config: The parsed target configuration. + resolved_prompt: The fully resolved prompt text. + resolved_model: The resolved model name. + project_dir: The project working directory. + """