Schema

Database tables, Drizzle migrations, and upgrading from v0.1.x.

Vault does not ship a database — you bring Drizzle + SQLite or Postgres. Schema is exported from vault-memory/schema.

Tables

claims

Core fact storage.

ColumnPurpose
idClaim UUID
entityDotted path key, e.g. user.timezone
textHuman-readable fact statement
typesemantic or episodic
source_agentWhich agent wrote this
conversation_idSource conversation
confidenceDefault 1.0
statusactive, superseded, or disputed
supersedesID of claim this replaced
embeddingJSON array of floats
created_atWhen stored
last_accessed_atUpdated on search return (decay)

agent_authority

Per-agent trust weights for conflict resolution.

ColumnPurpose
entityExact entity or wildcard (user.schedule.*)
agent_idAgent identifier
weight0–1 trust score

disputes

Audit trail when authority cannot resolve a conflict.

ColumnPurpose
claim_a_idIncoming (disputed) claim
claim_b_idIncumbent (active) claim
entitySubject of conflict
resolution_strategye.g. authority
resolved_opWinning claim id after resolution
resolved_atnull until resolved

entities (entity registry)

Canonical entity taxonomy for constrained extraction.

ColumnPurpose
keyCanonical entity key, e.g. user.timezone
descriptionHuman/LLM-readable subject description
aliasesOptional JSON array of alternate labels

Seed with seedEntities(db, seeds). Enable with useEntityRegistry: true on Memory config.

Drizzle import

import { claims, agentAuthority, disputes, entities } from "vault-memory/schema";

Creating tables

Drizzle migrations (recommended)

npx drizzle-kit generate
npx drizzle-kit push

Configure drizzle.config.ts to import schema from vault-memory/schema.

Raw SQL (dev / tests)

For a quick test, create the claims table directly — see Quickstart.

Upgrading from v0.1.x → v0.2.0

Breaking schema change — new tables required. Existing claims rows are valid as-is; upgrade is additive at the data level.

npm install vault-memory@latest
npx drizzle-kit generate   # picks up agentAuthority + disputes
npx drizzle-kit push

After migration, seed authority if you want multi-agent authority strategy:

import { seedAuthority, EXAMPLE_AUTHORITY_SEED } from "vault-memory";
await seedAuthority(db, EXAMPLE_AUTHORITY_SEED);

Claim status semantics

StatusIndexed?Searchable as active?
activeYesYes
supersededNoNo
disputedNoIncumbent remains active winner