📚 Event Engine Files Plugin

Introduction to Event Engine Files Plugin

@sullux/event-engine-files-plugin is a declarative domain ontology plugin for @sullux/event-engine providing content-addressable storage (CAS), multipart chunk streaming, virtual filesystem hierarchies, file version tagging, and granular capability-based access control.

Compiled directly via @sullux/event-ontology, it provides pre-compiled Ajv schema validation, SQLite DDL migrations, and deterministic deduplication.


Capabilities

  • Content-Addressable Storage (CAS): Immutable binary payloads indexed by cryptographic hash (blobId), eliminating duplication across identical files.
  • Multipart Chunk Streaming: Ingress large binary files in discrete chunks (file.blob.chunk.uploaded) with verified SHA-256 integrity checks.
  • Virtual Directory Hierarchies: Model hierarchical folders, symbolic links, and hard links across files.
  • Version Tagging: Tag and track immutable snapshots of evolving documents (file.version.tagged).
  • Granular Access Control: Issue and revoke capability grants (file.access.granted, file.access.revoked) and generate time-limited share links.

Ingress Pipeline

  ┌───────────────────────────────────────────────────────────┐
  │ 1. Ingress file.blob.registered (blobId, sizeInBytes)     │
  └─────────────────────────────┬─────────────────────────────┘
                                │
  ┌─────────────────────────────▼─────────────────────────────┐
  │ 2. Ingress file.blob.chunk.uploaded (offset, bytes, sha256)│
  └─────────────────────────────┬─────────────────────────────┘
                                │
  ┌─────────────────────────────▼─────────────────────────────┐
  │ 3. Ingress file.blob.verified -> Blob ready for links     │
  └─────────────────────────────┬─────────────────────────────┘
                                │
  ┌─────────────────────────────▼─────────────────────────────┐
  │ 4. Ingress file.link.created (parentId, name, blobId)     │
  └───────────────────────────────────────────────────────────┘