feat: add abstract Provider base class

- Defines async generate() interface for generation backends
- Takes target config, resolved prompt/model, and project dir
This commit is contained in:
Konstantin Fickel 2026-02-13 20:10:02 +01:00
parent bedc0cc9ec
commit aecfc4b82f
Signed by: kfickel
GPG key ID: A793722F9933C1A5

View file

@ -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.
"""