PostgreSQL and Blob
Agentweaver.Persistence.Postgres stores outbox events and consumer inbox receipts in a service-owned schema. It does not create domain tables or a relay service.

Open full-size PNG · Open editable draw.io source

Open full-size PNG · Open editable draw.io source
Call EnqueueAsync with the same open connection and transaction as the domain state change. PostgreSQL assigns stream sequence numbers and enforces stable event IDs and idempotency keys.
ClaimAsync leases the earliest undelivered event per stream. AcknowledgeAsync accepts only a current, unexpired lease token.
OutboxRelay publishes through an injected IOutboxPublisher, then acknowledges only confirmed publishes with the current lease token. A failed, cancelled, or fenced publish remains unacknowledged and can be reclaimed; a publish may still have completed externally before a failure. The host calls RelayOnceAsync. The library does not start a daemon or provide exactly-once delivery.
Call AdmitAsync with the same transaction as consumer state and any new outbox event. Apply effects only for InboxAdmission.Admitted. Skip effects for InboxAdmission.Duplicate. Acknowledge delivery after commit.
Delivery remains at least once. The inbox prevents duplicate committed local effects when the consumer gates all effects on the receipt and transaction.
Agentweaver.ObjectStore.AzureBlob implements IObjectStore for opaque platform objects. It does not provide agent workspace storage, create a container, authorize callers, or fall back to disk.
The Blob container exists before adapter use. The caller owns authorization, authoritative references, retention, and upload-stream lifetime. Blob writes do not commit PostgreSQL references.
