Skip to content

Artifacts (artifact refs + stores)

AbstractVision supports “artifact-first” outputs: return a small JSON dict that points to a stored blob instead of inlining bytes.

Code pointers: - Store interface + helpers: ../../src/abstractvision/artifacts.py - Orchestration logic: VisionManager._maybe_store() in ../../src/abstractvision/vision_manager.py

See also: - Getting started (REPL stores outputs by default): docs/getting-started.md

Output shapes

VisionManager returns:

  • Without a store: GeneratedAsset (../../src/abstractvision/types.py)
  • contains bytes (data), mime_type, and best-effort metadata
  • With a store: an artifact ref dict (via MediaStore.store_bytes(...))
  • minimum shape: {"$artifact": "<id>"} (is_artifact_ref() checks this)
  • common fields: content_type, sha256, filename, size_bytes, metadata

LocalAssetStore (standalone mode)

LocalAssetStore stores files under ~/.abstractvision/assets by default (../../src/abstractvision/artifacts.py):

  • Blob: ~/.abstractvision/assets/<artifact_id>.<ext>
  • Metadata: ~/.abstractvision/assets/<artifact_id>.meta.json

Minimal usage:

from abstractvision import LocalAssetStore, VisionManager
from abstractvision.backends import OpenAICompatibleBackendConfig, OpenAICompatibleVisionBackend

store = LocalAssetStore()
backend = OpenAICompatibleVisionBackend(config=OpenAICompatibleBackendConfig(base_url="http://localhost:1234/v1"))
vm = VisionManager(backend=backend, store=store)

ref = vm.generate_image("a watercolor painting of a lighthouse")
blob = store.load_bytes(ref["$artifact"])  # type: ignore[index]

RuntimeArtifactStoreAdapter (framework mode)

RuntimeArtifactStoreAdapter is a duck-typed adapter for an external artifact store (designed for AbstractRuntime), so AbstractVision can depend on an artifact store without a hard dependency (../../src/abstractvision/artifacts.py).

Related: - AbstractRuntime: https://github.com/lpalbou/abstractruntime