Commit graph

20 commits

Author SHA1 Message Date
452b3c4eb0
docs: add MIT license
All checks were successful
Continuous Integration / Build Package (push) Successful in 2m7s
Continuous Integration / Lint, Check & Test (push) Successful in 2m16s
2026-02-14 10:48:13 +01:00
a662d69559
ci: add forgejo pipeline with nix flake check and build 2026-02-14 10:45:28 +01:00
08952eb70f
feat: add git-hooks.nix pre-commit checks to flake
Add cachix/git-hooks.nix input and wire basedpyright, ruff,
ruff-format, and commitizen hooks into flake checks and devShell.
The basedpyright hook runs against a Nix-built venv so imports
resolve correctly in the sandbox.
2026-02-14 10:42:33 +01:00
a32e0f1b3e
feat: add home-manager module for programs.bulkgen.enable
Expose homeManagerModules.bulkgen and homeManagerModules.default
from the flake. The module provides programs.bulkgen.enable and
programs.bulkgen.package options, adding bulkgen to home.packages
when enabled.
2026-02-14 10:33:33 +01:00
6926d0492d
fix: update default image model from flux-pro to flux-pro-1.1
The flux-pro endpoint returns 403 Forbidden as it has been
deprecated by BlackForestLabs. flux-pro-1.1 is the current
supported version.
2026-02-14 10:25:08 +01:00
c818e6452e
feat: add nix flake with uv2nix packaging and pytest checks 2026-02-13 20:44:12 +01:00
09ff809e9a
chore: add basedpyright and ruff to dev dependencies 2026-02-13 20:29:47 +01:00
7ab25d49cb
refactor: switch to basedpyright, remove pydantic-settings
- Replace pyright with basedpyright in devenv.nix (custom hook)
- Add basedpyright to devenv packages
- Fix all basedpyright warnings: add DiGraph[str] type args, annotate
  class attributes, narrow SyncResponse, handle unused call results,
  suppress unavoidable Any from yaml.safe_load and untyped blackforest
- Replace pydantic-settings[yaml] with direct pyyaml dependency
- Update CLAUDE.md to reflect basedpyright and dependency changes
2026-02-13 20:25:28 +01:00
f71af1cfaf
docs: add CLAUDE.md development guide and README.md user docs
CLAUDE.md covers architecture, data flow, code style conventions,
provider specifics, and all commands needed for development.

README.md covers installation, quick start, full config format
reference, CLI usage, incremental builds, and environment variables.
2026-02-13 20:18:51 +01:00
d38682597c
feat: wire entry point to typer CLI app
Replace stub with import of bulkgen.cli.app
2026-02-13 20:14:37 +01:00
1d98c0010a
feat: add CLI commands (build, clean, graph)
- build: executes all or specific target with dependency resolution
- clean: removes generated artifacts and state file, preserves inputs
- graph: prints dependency graph with build stages
- Config discovery: finds single *.bulkgen.yaml in working directory
2026-02-13 20:14:16 +01:00
bb4b2e2b86
feat: add build orchestrator with incremental and parallel execution
- run_build() drives the full build pipeline
- Topological generations executed concurrently via asyncio.gather()
- Incremental builds: skip clean targets, rebuild dirty ones
- Error isolation: failed targets don't block independent branches
- State saved after each generation for crash resilience
2026-02-13 20:13:33 +01:00
15fdff7763
feat: add Mistral text generation provider
- Uses native async API (chat.complete_async)
- Appends text input file contents to prompt with headers
- Notes image inputs as attached references
- Writes raw LLM response directly to output file
2026-02-13 20:12:45 +01:00
45f590cf11
chore: add pyrightconfig.json pointing to devenv venv
Allows pyright to resolve third-party imports from .devenv/state/venv
2026-02-13 20:10:48 +01:00
aecfc4b82f
feat: add abstract Provider base class
- Defines async generate() interface for generation backends
- Takes target config, resolved prompt/model, and project dir
2026-02-13 20:10:02 +01:00
bedc0cc9ec
feat: add networkx dependency graph construction
- build_graph() creates a DAG from project config with validation
- get_build_order() wraps topological_generations() for parallel batches
- get_subgraph_for_target() extracts transitive deps for single-target builds
- Validates missing dependencies and cycle detection
2026-02-13 20:08:53 +01:00
ce2160bd6c
feat: add incremental build state tracking
- TargetState/BuildState pydantic models for .bulkgen.state.yaml
- SHA-256 hashing for files and strings
- is_target_dirty() checks output existence, input hashes, prompt, model, and extra params
- record_target_state() persists hashes after successful builds
- load_state()/save_state() for YAML serialization
2026-02-13 20:08:16 +01:00
bda2b8c8e7
feat: add pydantic config models for YAML parsing
- TargetType enum with IMAGE/TEXT variants
- Defaults, TargetConfig, ProjectConfig pydantic models
- infer_target_type() for extension-based type dispatch
- resolve_model() for default/override model resolution
- load_config() using yaml.safe_load + model_validate
2026-02-13 20:07:44 +01:00
53e402b119
feat: scaffold project structure with package dirs and mistralai dependency
- Create bulkgen/ package with __init__.py
- Create bulkgen/providers/ subpackage with __init__.py
- Add mistralai>=1.0.0 to dependencies
- Add [project.scripts] entry point and [build-system] with hatchling
- Add .bulkgen.state.yaml to .gitignore
2026-02-13 20:07:08 +01:00
4fd7f94db3
build: set up project for bulkgen 2026-02-13 19:32:47 +01:00