"""Door A ingest — the consumer seam over the shared llm-ingestion-okf library. An addition IN FRONT of the loop (ingest-spec §1): a deterministic step that couples the framework to a real data source and materializes the extract as an OKF knowledge bundle, which the existing 8-step loop then consumes UNCHANGED. Zero model calls; no network. Since the first-consumer adoption (2026-07-16) the implementation IS the shared ``llm-ingestion-okf`` library (byte-compatible with the reference implementation; the repo-local goldens under ``examples/`` remain the fasit). This module is the ONE place the repo touches the library for Door A: it re-exports the library's typed surface and keeps the historical ``materialize`` signature. The offline invariant lives at this seam — the per-run network opt-in (``allow_network``) is NEVER passed, so an ``http`` source is refused fail-fast at the library's network gate (§8, local-only default). """ from __future__ import annotations from pathlib import Path from llm_ingestion_okf import ( Extraction, FileSource, HttpSource, IngestError, IngestResult, Manifest, ManifestError, MaterializationError, NetworkGateError, RenderError, SourceError, SqlSource, load_manifest, materialize_bundle, ) __all__ = [ "Extraction", "FileSource", "HttpSource", "IngestError", "IngestResult", "Manifest", "ManifestError", "MaterializationError", "NetworkGateError", "RenderError", "SourceError", "SqlSource", "load_manifest", "materialize", "materialize_bundle", ] def materialize(manifest_path: Path, bundle_dir: Path, ingested_at: str) -> list[Path]: """Materialize the manifest's extractions into ``bundle_dir`` (deterministic, §5). ``ingested_at`` is an EXPLICIT required argument (no wall-clock default, §5). Returns the generated concept-file paths in extraction order. Delegates to the library with its local-only defaults in force — no network opt-in, no transport injection. """ return list(materialize_bundle(manifest_path, bundle_dir, ingested_at).written)