@axiom-lattice/pg-stores
v1.0.70
Published
PG stores implementation for Axiom Lattice framework
Readme
@axiom-lattice/pg-stores
PostgreSQL store implementations for the Axiom Lattice framework.
Quick Start
import { configureStores } from "@axiom-lattice/core";
import { createPgStoreConfig } from "@axiom-lattice/pg-stores";
import { PostgresSaver } from "@langchain/langgraph-checkpoint-postgres";
// One connection string creates all PG stores
const stores = createPgStoreConfig(process.env.DATABASE_URL);
// Register all stores in one call
await configureStores({
...stores,
checkpoint: PostgresSaver.fromConnString(process.env.DATABASE_URL),
});createPgStoreConfig
Factory function that creates all PG store instances from a single connection string. Returns an object ready to spread into configureStores().
function createPgStoreConfig(connectionString: string): {
workspace: PostgreSQLWorkspaceStore;
project: PostgreSQLProjectStore;
eval: PostgreSQLEvalStore;
user: PostgreSQLUserStore;
tenant: PostgreSQLTenantStore;
userTenantLink: PostgreSQLUserTenantLinkStore;
channelBinding: ChannelBindingStore;
channelInstallation: PostgreSQLChannelInstallationStore;
thread: PostgreSQLThreadStore;
database: PostgreSQLDatabaseConfigStore;
metrics: PostgreSQLMetricsServerConfigStore;
mcp: PostgreSQLMcpServerConfigStore;
assistant: PostgreSQLAssistantStore;
workflowTracking: PostgreSQLWorkflowTrackingStore;
threadMessageQueue: ThreadMessageQueueStore;
schedule: PostgreSQLScheduleStorage;
}Stores with autoMigrate: true: eval, channelBinding, channelInstallation, workflowTracking, threadMessageQueue.
All others use autoMigrate: false (manual initialize() via configureStores).
Individual Store Usage
If you only need specific stores, construct them directly:
import { configureStores } from "@axiom-lattice/core";
import { PostgreSQLThreadStore, PostgreSQLAssistantStore } from "@axiom-lattice/pg-stores";
await configureStores({
thread: new PostgreSQLThreadStore({ poolConfig: process.env.DATABASE_URL }),
assistant: new PostgreSQLAssistantStore({ poolConfig: process.env.DATABASE_URL }),
});Available Stores
| Store | Class | Description |
|-------|-------|-------------|
| thread | PostgreSQLThreadStore | Thread CRUD |
| assistant | PostgreSQLAssistantStore | Assistant CRUD |
| skill | PostgreSQLSkillStore | Skill storage |
| workspace | PostgreSQLWorkspaceStore | Workspace management |
| project | PostgreSQLProjectStore | Project management |
| database | PostgreSQLDatabaseConfigStore | DB connection configs |
| metrics | PostgreSQLMetricsServerConfigStore | Metrics server configs |
| mcp | PostgreSQLMcpServerConfigStore | MCP server configs |
| user | PostgreSQLUserStore | User storage |
| tenant | PostgreSQLTenantStore | Tenant storage |
| userTenantLink | PostgreSQLUserTenantLinkStore | User-tenant links |
| threadMessageQueue | ThreadMessageQueueStore | Message queue persistence |
| workflowTracking | PostgreSQLWorkflowTrackingStore | Workflow run tracking |
| eval | PostgreSQLEvalStore | Evaluation storage |
| channelInstallation | PostgreSQLChannelInstallationStore | Channel installations |
| channelBinding | ChannelBindingStore | Sender-to-agent bindings |
| schedule | PostgreSQLScheduleStorage | Scheduled task persistence |
Constructor Options
All stores accept the same options pattern:
interface StoreOptions {
poolConfig: string | PoolConfig; // Connection string or PoolConfig object
autoMigrate?: boolean; // Run migrations automatically (default: true)
}Migration System
Each store manages its own schema migrations via MigrationManager. Migrations run during initialize().
// Manual control
const store = new PostgreSQLThreadStore({
poolConfig: process.env.DATABASE_URL,
autoMigrate: false,
});
await store.initialize(); // Migrations applied here