@happyvertical/smrt-ingestion
Durable tenant-scoped intake: receipts, evidence, analysis attempts, proposals, and an action journal, with inbox and review components for people.
What it gives you
Durable tenant-scoped intake: receipts, evidence, analysis attempts, proposals, and an action journal, with inbox and review components for people.
- 01Receipt identity is tenant, source, and delivery key; a source retries the same receive call after failure or lost acknowledgment
- 02Every read and write rechecks the host scope predicate; source metadata is never authority
- 03Configured source adapters for email, a watch folder, and vendor webhooks preserve bytes and never perform domain writes
Receive, analyze, journal
receive accepts bounded original byte buffers with stable part ids and becomes ready only after every part is durable. analyze appends immutable input revisions; claimAnalysis uses leases, monotonic fences, and attempt budgets. createAction, publishProposal, and appendPlan persist explicit intentions for the later review and execution layer; they approve nothing.
Deletion and retention
expire revokes access and pending work before removing bytes and calling the host purgeDerived callback. Interrupted deletion is retried by repairDeletions and sweepRetention. Minimal identities remain; content-bearing payloads are redacted. Only SQLite and PostgreSQL are supported.
Human review
IntakeInbox and IntakeReview mount through an authenticated host using the browser-safe IntakeReviewHost contract. The ingestion.inbox and ingestion.review recipes register those routes for a host to mount and declare no model navigation.
Package UI
Components in this package
Import these public components directly. When the package also exports playground entries, the next tab renders its real components with package-owned example data.
Package previews
No playground module yet
This package does not currently export a ./playground module. Its component names and import path remain available in the Components tab.
Intentionally not registered
Generated interface
REST
The exact route set comes from each model's @smrt({ api }) policy
and the application manifest—not from a second controller definition.
Generated REST, CLI, and MCP mutation of the persistence models is disabled. Hosts expose authorized DTO methods through their own authenticated transport.
Generated interface
MCP
AI tools are generated from the methods you explicitly include. Their inputs are validated against the same model metadata used by REST and CLI.
Generated REST, CLI, and MCP mutation of the persistence models is disabled. Hosts expose authorized DTO methods through their own authenticated transport.
Browser-native agent interface
WebMCP
The generated web definitions carry the same tool names, descriptions, and JSON Schema
inputs as MCP. smrt-web registers them with document.modelContext.
Generated REST, CLI, and MCP mutation of the persistence models is disabled. Hosts expose authorized DTO methods through their own authenticated transport.
Generated interface
CLI
The app CLI turns manifest resources into predictable operator commands while keeping package-specific actions close to their models.
Generated REST, CLI, and MCP mutation of the persistence models is disabled. Hosts expose authorized DTO methods through their own authenticated transport.