Skip to content

Add pluggable ingest bundle pipeline#179

Open
specode wants to merge 1 commit into
VectifyAI:mainfrom
specode:feat/pluggable-ingest-bundles
Open

Add pluggable ingest bundle pipeline#179
specode wants to merge 1 commit into
VectifyAI:mainfrom
specode:feat/pluggable-ingest-bundles

Conversation

@specode

@specode specode commented Jul 10, 2026

Copy link
Copy Markdown

───

Summary

Adds an opt-in pluggable bundle ingest pipeline for openkb add, alongside the existing legacy path (default remains legacy).

Documents are imported as a structured DocumentBundle (blocks, assets, links, provenance), then rendered into the current staging/commit flow so wiki mutation, registry, and long-doc behavior stay compatible.

Pipeline stages

  1. Importer — acquire source (file, url, feishu, plus plugins)
  2. Normalizer — convert to DocumentBundle (markdown, text, pdf-local, markitdown, image, plus plugins)
  3. Enricher — optional post-process (link_discovery, image_vision, plus plugins)
  4. Render + commit — stage artifacts and publish through existing mutation locks

Pluggability

External packages can register components via entry points:

• openkb.ingest.importers
• openkb.ingest.normalizers
• openkb.ingest.enrichers

Minimal example: examples/ingest-plugin/.

How to enable

CLI:

openkb add path/or/url --ingest-pipeline bundle

Config (.openkb/config.yaml):

ingest:
  pipeline: bundle
  importers:
    enabled: [file, url, feishu]
  normalizers:
    enabled: [markdown, text, pdf-local, markitdown, image]
  enrichers:
    enabled: [link_discovery, image_vision]
  link_discovery: false
  max_depth: 0
  max_documents: 50
  allow_domains: []

Compatibility

• Default pipeline is still legacy — no behavior change unless opted in
• Bundle path falls back to legacy for long documents when needed
• Reuses existing ingest lock / staging / publish path

Tests

• tests/test_ingest_bundle.py — pipeline, CLI dispatch, artifacts, plugins
• tests/test_ingest_boundaries.py — config, recursion limits, domains, protocol edges

───

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant