Commit graph

9 commits

Author SHA1 Message Date
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