Installation
Copy
npm install praisonai
Memory Adapter (Default)
Copy
import { MemoryDbAdapter, db } from 'praisonai';
// Create memory adapter
const adapter = new MemoryDbAdapter();
await adapter.connect();
// Or use the shortcut
const adapter2 = db({ type: 'memory' });
Session Operations
Copy
const adapter = db({ type: 'memory' });
await adapter.connect();
// Create session
await adapter.createSession({
id: 'session-1',
createdAt: Date.now(),
updatedAt: Date.now(),
metadata: { userId: 'user-123' }
});
// Get session
const session = await adapter.getSession('session-1');
// Update session
await adapter.updateSession('session-1', {
metadata: { lastActive: Date.now() }
});
// List sessions
const sessions = await adapter.listSessions(10, 0);
// Delete session
await adapter.deleteSession('session-1');
Message Operations
Copy
// Save message
await adapter.saveMessage({
id: 'msg-1',
sessionId: 'session-1',
role: 'user',
content: 'Hello!',
createdAt: Date.now()
});
await adapter.saveMessage({
id: 'msg-2',
sessionId: 'session-1',
role: 'assistant',
content: 'Hi there!',
createdAt: Date.now()
});
// Get messages (last N)
const messages = await adapter.getMessages('session-1', 50);
// Delete all messages in session
await adapter.deleteMessages('session-1');
Run Operations
Copy
// Create run
await adapter.createRun({
id: 'run-1',
sessionId: 'session-1',
status: 'running',
startedAt: Date.now()
});
// Update run
await adapter.updateRun('run-1', {
status: 'completed',
completedAt: Date.now(),
tokenUsage: {
promptTokens: 100,
completionTokens: 50,
totalTokens: 150
}
});
// Get run
const run = await adapter.getRun('run-1');
// List runs for session
const runs = await adapter.listRuns('session-1', 10);
Tool Call Operations
Copy
// Save tool call
await adapter.saveToolCall({
id: 'tc-1',
runId: 'run-1',
name: 'calculator',
arguments: '{"a": 1, "b": 2}',
status: 'completed',
result: '3',
startedAt: Date.now(),
completedAt: Date.now()
});
// Get tool calls for run
const toolCalls = await adapter.getToolCalls('run-1');
Trace Operations
Copy
// Create trace
await adapter.createTrace({
id: 'trace-1',
sessionId: 'session-1',
runId: 'run-1',
startedAt: Date.now(),
status: 'running'
});
// Create span
await adapter.createSpan({
id: 'span-1',
traceId: 'trace-1',
name: 'llm_call',
startedAt: Date.now(),
status: 'running'
});
// Update span
await adapter.updateSpan('span-1', {
status: 'completed',
completedAt: Date.now(),
attributes: { model: 'gpt-4o', tokens: 100 }
});
// Get spans
const spans = await adapter.getSpans('trace-1');
Adapter Protocol
Copy
import type { DbAdapter } from 'praisonai';
// Implement custom adapter
class MyCustomAdapter implements DbAdapter {
async connect(): Promise<void> { /* ... */ }
async disconnect(): Promise<void> { /* ... */ }
isConnected(): boolean { /* ... */ }
// Session operations
async createSession(session: DbSession): Promise<void> { /* ... */ }
async getSession(id: string): Promise<DbSession | null> { /* ... */ }
// ... other methods
}
Lifecycle
Copy
const adapter = db({ type: 'memory' });
// Connect
await adapter.connect();
console.log('Connected:', adapter.isConnected());
// Use adapter...
// Disconnect
await adapter.disconnect();

