@falai/agent 3.4.3 → 3.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/adapters/MemoryAdapter.d.ts +47 -0
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/MemoryAdapter.js +208 -0
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
- package/dist/cjs/adapters/MongoAdapter.d.ts +97 -0
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/MongoAdapter.js +200 -0
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts +169 -0
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/OpenSearchAdapter.js +475 -0
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +85 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.js +312 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/adapters/PrismaAdapter.d.ts +115 -0
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/PrismaAdapter.js +410 -0
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/adapters/RedisAdapter.d.ts +72 -0
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/RedisAdapter.js +290 -0
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +86 -0
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/adapters/SQLiteAdapter.js +341 -0
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/adapters/index.d.ts +17 -0
- package/dist/cjs/adapters/index.d.ts.map +1 -0
- package/dist/cjs/adapters/index.js +21 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/adapters/sessionRow.d.ts +22 -0
- package/dist/cjs/adapters/sessionRow.d.ts.map +1 -0
- package/dist/cjs/adapters/sessionRow.js +52 -0
- package/dist/cjs/adapters/sessionRow.js.map +1 -0
- package/dist/cjs/constants/index.d.ts +1 -0
- package/dist/cjs/constants/index.d.ts.map +1 -0
- package/dist/cjs/constants/index.js +4 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/core/Agent.d.ts +382 -0
- package/dist/cjs/core/Agent.d.ts.map +1 -0
- package/dist/cjs/core/Agent.js +1198 -0
- package/dist/cjs/core/Agent.js.map +1 -0
- package/dist/cjs/core/ResponseModal.d.ts +305 -0
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/core/ResponseModal.js +1414 -0
- package/dist/cjs/core/ResponseModal.js.map +1 -0
- package/dist/cjs/core/ToolLoopExecutor.d.ts +133 -0
- package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -0
- package/dist/cjs/core/ToolLoopExecutor.js +568 -0
- package/dist/cjs/core/ToolLoopExecutor.js.map +1 -0
- package/dist/cjs/core/createAgent.d.ts +35 -0
- package/dist/cjs/core/createAgent.d.ts.map +1 -0
- package/dist/cjs/core/createAgent.js +39 -0
- package/dist/cjs/core/createAgent.js.map +1 -0
- package/dist/cjs/index.d.ts +61 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +113 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/providers/AnthropicProvider.d.ts +46 -0
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/providers/AnthropicProvider.js +50 -0
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -0
- package/dist/cjs/providers/DeepSeekProvider.d.ts +47 -0
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -0
- package/dist/cjs/providers/DeepSeekProvider.js +42 -0
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -0
- package/dist/cjs/providers/FallbackAiProvider.d.ts +26 -0
- package/dist/cjs/providers/FallbackAiProvider.d.ts.map +1 -0
- package/dist/cjs/providers/FallbackAiProvider.js +54 -0
- package/dist/cjs/providers/FallbackAiProvider.js.map +1 -0
- package/dist/cjs/providers/GeminiProvider.d.ts +51 -0
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/providers/GeminiProvider.js +53 -0
- package/dist/cjs/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +80 -0
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -0
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +89 -0
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +61 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js +58 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -0
- package/dist/cjs/providers/OpenAIProvider.d.ts +40 -0
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/providers/OpenAIProvider.js +42 -0
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
- package/dist/cjs/providers/OpenRouterProvider.d.ts +56 -0
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/providers/OpenRouterProvider.js +45 -0
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/providers/ProviderAdapter.d.ts +126 -0
- package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -0
- package/dist/cjs/providers/ProviderAdapter.js +313 -0
- package/dist/cjs/providers/ProviderAdapter.js.map +1 -0
- package/dist/cjs/providers/ZaiProvider.d.ts +45 -0
- package/dist/cjs/providers/ZaiProvider.d.ts.map +1 -0
- package/dist/cjs/providers/ZaiProvider.js +51 -0
- package/dist/cjs/providers/ZaiProvider.js.map +1 -0
- package/dist/cjs/providers/index.d.ts +26 -0
- package/dist/cjs/providers/index.d.ts.map +1 -0
- package/dist/cjs/providers/index.js +30 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/utils/streamingMessage.d.ts +48 -0
- package/dist/cjs/utils/streamingMessage.d.ts.map +1 -0
- package/dist/cjs/utils/streamingMessage.js +210 -0
- package/dist/cjs/utils/streamingMessage.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SQLite adapter for persistence
|
|
4
|
+
* Lightweight, file-based database perfect for local development
|
|
5
|
+
*
|
|
6
|
+
* ## v2 Migration
|
|
7
|
+
*
|
|
8
|
+
* If upgrading from v1, run the following migration on your sessions table:
|
|
9
|
+
*
|
|
10
|
+
* ```sql
|
|
11
|
+
* -- SQLite 3.35.0+ supports DROP COLUMN:
|
|
12
|
+
* ALTER TABLE agent_sessions DROP COLUMN pending_transition;
|
|
13
|
+
* -- For older versions, recreate the table without pending_transition.
|
|
14
|
+
*
|
|
15
|
+
* ALTER TABLE agent_sessions ADD COLUMN pending_directive TEXT;
|
|
16
|
+
* ALTER TABLE agent_sessions ADD COLUMN signals TEXT;
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* `pending_directive` stores the JSON-serialized `Directive` that the pipeline
|
|
20
|
+
* applies at the start of the next turn. `signals` is a reserved TEXT (JSON)
|
|
21
|
+
* column for the v2.x Signals feature — pass-through only in v2.0.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.SQLiteAdapter = void 0;
|
|
25
|
+
const errors_js_1 = require("../types/errors.js");
|
|
26
|
+
const index_js_1 = require("../utils/index.js");
|
|
27
|
+
const sessionRow_js_1 = require("./sessionRow.js");
|
|
28
|
+
/**
|
|
29
|
+
* SQLite Adapter - Provider-style API for SQLite persistence
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import Database from 'better-sqlite3';
|
|
34
|
+
* import { Agent, SQLiteAdapter } from '@falai/agent';
|
|
35
|
+
*
|
|
36
|
+
* const db = new Database('agent.db');
|
|
37
|
+
*
|
|
38
|
+
* const agent = new Agent({
|
|
39
|
+
* name: "My Agent",
|
|
40
|
+
* provider: provider,
|
|
41
|
+
* persistence: {
|
|
42
|
+
* adapter: new SQLiteAdapter({ db }),
|
|
43
|
+
* userId: "user_123",
|
|
44
|
+
* },
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
class SQLiteAdapter {
|
|
49
|
+
constructor(options) {
|
|
50
|
+
this.db = options.db;
|
|
51
|
+
const sessionTable = options.tables?.sessions || "agent_sessions";
|
|
52
|
+
const messageTable = options.tables?.messages || "agent_messages";
|
|
53
|
+
this.sessionRepository = new SQLiteSessionRepository(this.db, sessionTable);
|
|
54
|
+
this.messageRepository = new SQLiteMessageRepository(this.db, messageTable);
|
|
55
|
+
}
|
|
56
|
+
async initialize() {
|
|
57
|
+
const sessionTable = "agent_sessions";
|
|
58
|
+
const messageTable = "agent_messages";
|
|
59
|
+
// Create sessions table
|
|
60
|
+
this.db.exec(`
|
|
61
|
+
CREATE TABLE IF NOT EXISTS ${sessionTable} (
|
|
62
|
+
id TEXT PRIMARY KEY,
|
|
63
|
+
user_id TEXT,
|
|
64
|
+
agent_name TEXT,
|
|
65
|
+
status TEXT DEFAULT 'active',
|
|
66
|
+
current_flow TEXT,
|
|
67
|
+
current_step TEXT,
|
|
68
|
+
collected_data TEXT,
|
|
69
|
+
pending_directive TEXT,
|
|
70
|
+
signals TEXT,
|
|
71
|
+
message_count INTEGER DEFAULT 0,
|
|
72
|
+
last_message_at TEXT,
|
|
73
|
+
completed_at TEXT,
|
|
74
|
+
version INTEGER,
|
|
75
|
+
created_at TEXT NOT NULL,
|
|
76
|
+
updated_at TEXT NOT NULL
|
|
77
|
+
)
|
|
78
|
+
`);
|
|
79
|
+
// Migration: add the optimistic-concurrency version column to tables
|
|
80
|
+
// created by pre-2.4 versions
|
|
81
|
+
const sessionColumns = this.db
|
|
82
|
+
.prepare(`PRAGMA table_info(${sessionTable})`)
|
|
83
|
+
.all();
|
|
84
|
+
if (!sessionColumns.some((column) => column.name === "version")) {
|
|
85
|
+
this.db.exec(`ALTER TABLE ${sessionTable} ADD COLUMN version INTEGER`);
|
|
86
|
+
}
|
|
87
|
+
// Create indexes for sessions
|
|
88
|
+
this.db.exec(`
|
|
89
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON ${sessionTable}(user_id);
|
|
90
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_status ON ${sessionTable}(status);
|
|
91
|
+
`);
|
|
92
|
+
// Create messages table
|
|
93
|
+
this.db.exec(`
|
|
94
|
+
CREATE TABLE IF NOT EXISTS ${messageTable} (
|
|
95
|
+
id TEXT PRIMARY KEY,
|
|
96
|
+
session_id TEXT NOT NULL,
|
|
97
|
+
user_id TEXT,
|
|
98
|
+
role TEXT NOT NULL,
|
|
99
|
+
content TEXT NOT NULL,
|
|
100
|
+
flow TEXT,
|
|
101
|
+
step TEXT,
|
|
102
|
+
tool_calls TEXT,
|
|
103
|
+
event TEXT,
|
|
104
|
+
created_at TEXT NOT NULL,
|
|
105
|
+
FOREIGN KEY (session_id) REFERENCES ${sessionTable}(id) ON DELETE CASCADE
|
|
106
|
+
)
|
|
107
|
+
`);
|
|
108
|
+
// Create indexes for messages
|
|
109
|
+
this.db.exec(`
|
|
110
|
+
CREATE INDEX IF NOT EXISTS idx_messages_session_id ON ${messageTable}(session_id);
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_messages_user_id ON ${messageTable}(user_id);
|
|
112
|
+
`);
|
|
113
|
+
await Promise.resolve();
|
|
114
|
+
}
|
|
115
|
+
async disconnect() {
|
|
116
|
+
this.db.close();
|
|
117
|
+
await Promise.resolve();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.SQLiteAdapter = SQLiteAdapter;
|
|
121
|
+
/**
|
|
122
|
+
* SQLite Session Repository
|
|
123
|
+
*/
|
|
124
|
+
class SQLiteSessionRepository {
|
|
125
|
+
constructor(db, tableName) {
|
|
126
|
+
this.db = db;
|
|
127
|
+
this.tableName = tableName;
|
|
128
|
+
}
|
|
129
|
+
create(data) {
|
|
130
|
+
const id = data.id || (0, index_js_1.createSessionId)();
|
|
131
|
+
const now = new Date();
|
|
132
|
+
const session = {
|
|
133
|
+
...data,
|
|
134
|
+
id,
|
|
135
|
+
status: data.status || "active",
|
|
136
|
+
messageCount: data.messageCount || 0,
|
|
137
|
+
version: data.version ?? 1,
|
|
138
|
+
createdAt: now,
|
|
139
|
+
updatedAt: now,
|
|
140
|
+
};
|
|
141
|
+
const stmt = this.db.prepare(`
|
|
142
|
+
INSERT INTO ${this.tableName}
|
|
143
|
+
(id, user_id, agent_name, status, current_flow, current_step, collected_data, message_count, last_message_at, completed_at, version, created_at, updated_at)
|
|
144
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
145
|
+
`);
|
|
146
|
+
stmt.run(id, data.userId || null, data.agentName || null, session.status, data.currentFlow || null, data.currentStep || null, JSON.stringify(data.collectedData || {}), session.messageCount, data.lastMessageAt ? data.lastMessageAt.toISOString() : null, data.completedAt ? data.completedAt.toISOString() : null, session.version, now.toISOString(), now.toISOString());
|
|
147
|
+
return Promise.resolve(session);
|
|
148
|
+
}
|
|
149
|
+
findById(id) {
|
|
150
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.tableName} WHERE id = ?`);
|
|
151
|
+
const row = stmt.get(id);
|
|
152
|
+
return Promise.resolve(row ? (0, sessionRow_js_1.deserializeSessionRow)(row) : null);
|
|
153
|
+
}
|
|
154
|
+
findActiveByUserId(userId) {
|
|
155
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.tableName}
|
|
156
|
+
WHERE user_id = ? AND status = 'active'
|
|
157
|
+
ORDER BY created_at DESC
|
|
158
|
+
LIMIT 1`);
|
|
159
|
+
const row = stmt.get(userId);
|
|
160
|
+
return Promise.resolve(row ? (0, sessionRow_js_1.deserializeSessionRow)(row) : null);
|
|
161
|
+
}
|
|
162
|
+
findByUserId(userId, limit = 100) {
|
|
163
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.tableName}
|
|
164
|
+
WHERE user_id = ?
|
|
165
|
+
ORDER BY created_at DESC
|
|
166
|
+
LIMIT ?`);
|
|
167
|
+
const rows = stmt.all(userId, limit);
|
|
168
|
+
return Promise.resolve(rows.map((row) => (0, sessionRow_js_1.deserializeSessionRow)(row)));
|
|
169
|
+
}
|
|
170
|
+
async update(id, data, options) {
|
|
171
|
+
const fields = [];
|
|
172
|
+
const values = [];
|
|
173
|
+
if (data.status !== undefined) {
|
|
174
|
+
fields.push("status = ?");
|
|
175
|
+
values.push(data.status);
|
|
176
|
+
}
|
|
177
|
+
if (data.collectedData !== undefined) {
|
|
178
|
+
fields.push("collected_data = ?");
|
|
179
|
+
values.push(JSON.stringify(data.collectedData));
|
|
180
|
+
}
|
|
181
|
+
if (data.currentFlow !== undefined) {
|
|
182
|
+
fields.push("current_flow = ?");
|
|
183
|
+
values.push(data.currentFlow);
|
|
184
|
+
}
|
|
185
|
+
if (data.currentStep !== undefined) {
|
|
186
|
+
fields.push("current_step = ?");
|
|
187
|
+
values.push(data.currentStep);
|
|
188
|
+
}
|
|
189
|
+
if (data.messageCount !== undefined) {
|
|
190
|
+
fields.push("message_count = ?");
|
|
191
|
+
values.push(data.messageCount);
|
|
192
|
+
}
|
|
193
|
+
if (data.lastMessageAt !== undefined) {
|
|
194
|
+
fields.push("last_message_at = ?");
|
|
195
|
+
values.push(data.lastMessageAt.toISOString());
|
|
196
|
+
}
|
|
197
|
+
if (data.completedAt !== undefined) {
|
|
198
|
+
fields.push("completed_at = ?");
|
|
199
|
+
values.push(data.completedAt.toISOString());
|
|
200
|
+
}
|
|
201
|
+
fields.push("updated_at = ?");
|
|
202
|
+
values.push(new Date().toISOString());
|
|
203
|
+
if (options?.expectedVersion !== undefined) {
|
|
204
|
+
const expectedVersion = options.expectedVersion;
|
|
205
|
+
// Compare-and-swap in a single statement: rows without a stored version
|
|
206
|
+
// (pre-2.4) are accepted and adopt expectedVersion as their base
|
|
207
|
+
fields.push("version = COALESCE(version, ?) + 1");
|
|
208
|
+
values.push(expectedVersion);
|
|
209
|
+
values.push(id, expectedVersion);
|
|
210
|
+
const stmt = this.db.prepare(`UPDATE ${this.tableName}
|
|
211
|
+
SET ${fields.join(", ")}
|
|
212
|
+
WHERE id = ? AND (version IS NULL OR version = ?)`);
|
|
213
|
+
const result = stmt.run(...values);
|
|
214
|
+
if (result.changes === 0) {
|
|
215
|
+
const existing = await this.findById(id);
|
|
216
|
+
if (!existing)
|
|
217
|
+
return null;
|
|
218
|
+
throw new errors_js_1.SessionConflictError(id, expectedVersion, existing.version);
|
|
219
|
+
}
|
|
220
|
+
return await this.findById(id);
|
|
221
|
+
}
|
|
222
|
+
fields.push("version = COALESCE(version, 0) + 1");
|
|
223
|
+
values.push(id);
|
|
224
|
+
const stmt = this.db.prepare(`UPDATE ${this.tableName}
|
|
225
|
+
SET ${fields.join(", ")}
|
|
226
|
+
WHERE id = ?`);
|
|
227
|
+
const result = stmt.run(...values);
|
|
228
|
+
if (result.changes === 0)
|
|
229
|
+
return null;
|
|
230
|
+
return await this.findById(id);
|
|
231
|
+
}
|
|
232
|
+
async updateStatus(id, status, completedAt) {
|
|
233
|
+
return await this.update(id, { status, completedAt });
|
|
234
|
+
}
|
|
235
|
+
async updateCollectedData(id, collectedData) {
|
|
236
|
+
return await this.update(id, { collectedData });
|
|
237
|
+
}
|
|
238
|
+
async updateFlowStep(id, flow, step) {
|
|
239
|
+
return await this.update(id, {
|
|
240
|
+
currentFlow: flow,
|
|
241
|
+
currentStep: step,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
async incrementMessageCount(id) {
|
|
245
|
+
const stmt = this.db.prepare(`UPDATE ${this.tableName}
|
|
246
|
+
SET message_count = message_count + 1,
|
|
247
|
+
last_message_at = ?,
|
|
248
|
+
updated_at = ?
|
|
249
|
+
WHERE id = ?`);
|
|
250
|
+
const now = new Date();
|
|
251
|
+
const result = stmt.run(now.toISOString(), now.toISOString(), id);
|
|
252
|
+
if (result.changes === 0)
|
|
253
|
+
return null;
|
|
254
|
+
return await this.findById(id);
|
|
255
|
+
}
|
|
256
|
+
delete(id) {
|
|
257
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE id = ?`);
|
|
258
|
+
const result = stmt.run(id);
|
|
259
|
+
return Promise.resolve(result.changes > 0);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* SQLite Message Repository
|
|
264
|
+
*/
|
|
265
|
+
class SQLiteMessageRepository {
|
|
266
|
+
constructor(db, tableName) {
|
|
267
|
+
this.db = db;
|
|
268
|
+
this.tableName = tableName;
|
|
269
|
+
}
|
|
270
|
+
create(data) {
|
|
271
|
+
const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
272
|
+
const now = new Date();
|
|
273
|
+
const message = {
|
|
274
|
+
...data,
|
|
275
|
+
id,
|
|
276
|
+
createdAt: now,
|
|
277
|
+
};
|
|
278
|
+
const stmt = this.db.prepare(`
|
|
279
|
+
INSERT INTO ${this.tableName}
|
|
280
|
+
(id, session_id, user_id, role, content, flow, step, tool_calls, event, created_at)
|
|
281
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
282
|
+
`);
|
|
283
|
+
stmt.run(id, data.sessionId, data.userId || null, data.role, data.content, data.flow || null, data.step || null, JSON.stringify(data.toolCalls || null), JSON.stringify(data.event || null), now.toISOString());
|
|
284
|
+
return Promise.resolve(message);
|
|
285
|
+
}
|
|
286
|
+
findById(id) {
|
|
287
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.tableName} WHERE id = ?`);
|
|
288
|
+
const row = stmt.get(id);
|
|
289
|
+
return Promise.resolve(row ? this.deserializeMessage(row) : null);
|
|
290
|
+
}
|
|
291
|
+
findBySessionId(sessionId, limit = 1000) {
|
|
292
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.tableName}
|
|
293
|
+
WHERE session_id = ?
|
|
294
|
+
ORDER BY created_at ASC
|
|
295
|
+
LIMIT ?`);
|
|
296
|
+
const rows = stmt.all(sessionId, limit);
|
|
297
|
+
return Promise.resolve(rows.map((row) => this.deserializeMessage(row)));
|
|
298
|
+
}
|
|
299
|
+
findByUserId(userId, limit = 100) {
|
|
300
|
+
const stmt = this.db.prepare(`SELECT * FROM ${this.tableName}
|
|
301
|
+
WHERE user_id = ?
|
|
302
|
+
ORDER BY created_at DESC
|
|
303
|
+
LIMIT ?`);
|
|
304
|
+
const rows = stmt.all(userId, limit);
|
|
305
|
+
return Promise.resolve(rows.map((row) => this.deserializeMessage(row)));
|
|
306
|
+
}
|
|
307
|
+
delete(id) {
|
|
308
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE id = ?`);
|
|
309
|
+
const result = stmt.run(id);
|
|
310
|
+
return Promise.resolve(result.changes > 0);
|
|
311
|
+
}
|
|
312
|
+
deleteBySessionId(sessionId) {
|
|
313
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE session_id = ?`);
|
|
314
|
+
const result = stmt.run(sessionId);
|
|
315
|
+
return Promise.resolve(result.changes);
|
|
316
|
+
}
|
|
317
|
+
deleteByUserId(userId) {
|
|
318
|
+
const stmt = this.db.prepare(`DELETE FROM ${this.tableName} WHERE user_id = ?`);
|
|
319
|
+
const result = stmt.run(userId);
|
|
320
|
+
return Promise.resolve(result.changes);
|
|
321
|
+
}
|
|
322
|
+
deserializeMessage(row) {
|
|
323
|
+
return {
|
|
324
|
+
id: row.id,
|
|
325
|
+
sessionId: row.session_id,
|
|
326
|
+
userId: row.user_id || undefined,
|
|
327
|
+
role: row.role,
|
|
328
|
+
content: row.content,
|
|
329
|
+
flow: row.flow || undefined,
|
|
330
|
+
step: row.step || undefined,
|
|
331
|
+
toolCalls: row.tool_calls
|
|
332
|
+
? JSON.parse(row.tool_calls)
|
|
333
|
+
: undefined,
|
|
334
|
+
event: row.event
|
|
335
|
+
? JSON.parse(row.event)
|
|
336
|
+
: undefined,
|
|
337
|
+
createdAt: new Date(row.created_at),
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=SQLiteAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLiteAdapter.js","sourceRoot":"","sources":["../../../src/adapters/SQLiteAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database adapters for persistence
|
|
3
|
+
*/
|
|
4
|
+
export { PrismaAdapter } from "./PrismaAdapter.js";
|
|
5
|
+
export type { PrismaClient, FieldMappings, PrismaAdapterOptions, } from "./PrismaAdapter.js";
|
|
6
|
+
export { RedisAdapter } from "./RedisAdapter.js";
|
|
7
|
+
export type { RedisClient, RedisAdapterOptions } from "./RedisAdapter.js";
|
|
8
|
+
export { MongoAdapter } from "./MongoAdapter.js";
|
|
9
|
+
export type { MongoClient, MongoDatabase, MongoCollection, MongoAdapterOptions, } from "./MongoAdapter.js";
|
|
10
|
+
export { PostgreSQLAdapter } from "./PostgreSQLAdapter.js";
|
|
11
|
+
export type { PgClient, PgQueryResult, PostgreSQLAdapterOptions, } from "./PostgreSQLAdapter.js";
|
|
12
|
+
export { SQLiteAdapter } from "./SQLiteAdapter.js";
|
|
13
|
+
export type { SqliteDatabase, SqliteStatement, SQLiteAdapterOptions, } from "./SQLiteAdapter.js";
|
|
14
|
+
export { MemoryAdapter } from "./MemoryAdapter.js";
|
|
15
|
+
export { OpenSearchAdapter } from "./OpenSearchAdapter.js";
|
|
16
|
+
export type { OpenSearchClient, OpenSearchAdapterOptions, } from "./OpenSearchAdapter.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,eAAe,EACf,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Database adapters for persistence
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OpenSearchAdapter = exports.MemoryAdapter = exports.SQLiteAdapter = exports.PostgreSQLAdapter = exports.MongoAdapter = exports.RedisAdapter = exports.PrismaAdapter = void 0;
|
|
7
|
+
var PrismaAdapter_js_1 = require("./PrismaAdapter.js");
|
|
8
|
+
Object.defineProperty(exports, "PrismaAdapter", { enumerable: true, get: function () { return PrismaAdapter_js_1.PrismaAdapter; } });
|
|
9
|
+
var RedisAdapter_js_1 = require("./RedisAdapter.js");
|
|
10
|
+
Object.defineProperty(exports, "RedisAdapter", { enumerable: true, get: function () { return RedisAdapter_js_1.RedisAdapter; } });
|
|
11
|
+
var MongoAdapter_js_1 = require("./MongoAdapter.js");
|
|
12
|
+
Object.defineProperty(exports, "MongoAdapter", { enumerable: true, get: function () { return MongoAdapter_js_1.MongoAdapter; } });
|
|
13
|
+
var PostgreSQLAdapter_js_1 = require("./PostgreSQLAdapter.js");
|
|
14
|
+
Object.defineProperty(exports, "PostgreSQLAdapter", { enumerable: true, get: function () { return PostgreSQLAdapter_js_1.PostgreSQLAdapter; } });
|
|
15
|
+
var SQLiteAdapter_js_1 = require("./SQLiteAdapter.js");
|
|
16
|
+
Object.defineProperty(exports, "SQLiteAdapter", { enumerable: true, get: function () { return SQLiteAdapter_js_1.SQLiteAdapter; } });
|
|
17
|
+
var MemoryAdapter_js_1 = require("./MemoryAdapter.js");
|
|
18
|
+
Object.defineProperty(exports, "MemoryAdapter", { enumerable: true, get: function () { return MemoryAdapter_js_1.MemoryAdapter; } });
|
|
19
|
+
var OpenSearchAdapter_js_1 = require("./OpenSearchAdapter.js");
|
|
20
|
+
Object.defineProperty(exports, "OpenSearchAdapter", { enumerable: true, get: function () { return OpenSearchAdapter_js_1.OpenSearchAdapter; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAOtB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAGrB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAQrB,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA;AAO1B,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAOtB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared row-mapping for the SQL-shaped session adapters (PostgreSQL, SQLite)
|
|
3
|
+
* and date coercion for JSON-round-tripped values (Redis).
|
|
4
|
+
*
|
|
5
|
+
* One implementation so the adapters can't drift on what a stored session row
|
|
6
|
+
* means. PostgreSQL's driver returns JSONB pre-parsed and timestamptz as Date
|
|
7
|
+
* instances; SQLite returns strings — both shapes are accepted here.
|
|
8
|
+
*/
|
|
9
|
+
import type { SessionData } from "../types/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Coerce a raw stored value into a Date. Drivers variously hand back Date
|
|
12
|
+
* instances (node-postgres timestamptz) or ISO strings (SQLite, JSON blobs).
|
|
13
|
+
* `null`/`undefined` maps to `undefined`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function coerceDate(value: unknown): Date | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Map a raw snake_case row onto the camelCase SessionData interface.
|
|
18
|
+
* `collected_data` arrives JSONB-parsed on PostgreSQL and as a raw string on
|
|
19
|
+
* SQLite — both are handled. Exported for the adapter mapping tests.
|
|
20
|
+
*/
|
|
21
|
+
export declare function deserializeSessionRow<TData = Record<string, unknown>>(row: Record<string, unknown>): SessionData<TData>;
|
|
22
|
+
//# sourceMappingURL=sessionRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionRow.d.ts","sourceRoot":"","sources":["../../../src/adapters/sessionRow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAG3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,WAAW,CAAC,KAAK,CAAC,CAwBpB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared row-mapping for the SQL-shaped session adapters (PostgreSQL, SQLite)
|
|
4
|
+
* and date coercion for JSON-round-tripped values (Redis).
|
|
5
|
+
*
|
|
6
|
+
* One implementation so the adapters can't drift on what a stored session row
|
|
7
|
+
* means. PostgreSQL's driver returns JSONB pre-parsed and timestamptz as Date
|
|
8
|
+
* instances; SQLite returns strings — both shapes are accepted here.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.coerceDate = coerceDate;
|
|
12
|
+
exports.deserializeSessionRow = deserializeSessionRow;
|
|
13
|
+
/**
|
|
14
|
+
* Coerce a raw stored value into a Date. Drivers variously hand back Date
|
|
15
|
+
* instances (node-postgres timestamptz) or ISO strings (SQLite, JSON blobs).
|
|
16
|
+
* `null`/`undefined` maps to `undefined`.
|
|
17
|
+
*/
|
|
18
|
+
function coerceDate(value) {
|
|
19
|
+
if (value == null)
|
|
20
|
+
return undefined;
|
|
21
|
+
return value instanceof Date ? value : new Date(value);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Map a raw snake_case row onto the camelCase SessionData interface.
|
|
25
|
+
* `collected_data` arrives JSONB-parsed on PostgreSQL and as a raw string on
|
|
26
|
+
* SQLite — both are handled. Exported for the adapter mapping tests.
|
|
27
|
+
*/
|
|
28
|
+
function deserializeSessionRow(row) {
|
|
29
|
+
const collected = row.collected_data;
|
|
30
|
+
return {
|
|
31
|
+
id: row.id,
|
|
32
|
+
userId: row.user_id || undefined,
|
|
33
|
+
agentName: row.agent_name || undefined,
|
|
34
|
+
status: row.status,
|
|
35
|
+
currentFlow: row.current_flow || undefined,
|
|
36
|
+
currentStep: row.current_step || undefined,
|
|
37
|
+
collectedData: collected == null
|
|
38
|
+
? undefined
|
|
39
|
+
: typeof collected === "string"
|
|
40
|
+
? JSON.parse(collected)
|
|
41
|
+
: collected,
|
|
42
|
+
messageCount: row.message_count || 0,
|
|
43
|
+
lastMessageAt: coerceDate(row.last_message_at),
|
|
44
|
+
completedAt: coerceDate(row.completed_at),
|
|
45
|
+
version: row.version ?? undefined,
|
|
46
|
+
// created_at/updated_at are NOT NULL in every adapter's schema; the
|
|
47
|
+
// fallback only covers hand-crafted rows.
|
|
48
|
+
createdAt: coerceDate(row.created_at) ?? new Date(),
|
|
49
|
+
updatedAt: coerceDate(row.updated_at) ?? new Date(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=sessionRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionRow.js","sourceRoot":"","sources":["../../../src/adapters/sessionRow.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAaH,gCAGC;AAOD,sDA0BC;AAzCD;;;;GAIG;AACH,SAAgB,UAAU,CAAC,KAAc;IACvC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAe,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CACnC,GAA4B;IAE5B,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC;IACrC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,MAAM,EAAG,GAAG,CAAC,OAAkB,IAAI,SAAS;QAC5C,SAAS,EAAG,GAAG,CAAC,UAAqB,IAAI,SAAS;QAClD,MAAM,EAAE,GAAG,CAAC,MAAuB;QACnC,WAAW,EAAG,GAAG,CAAC,YAAuB,IAAI,SAAS;QACtD,WAAW,EAAG,GAAG,CAAC,YAAuB,IAAI,SAAS;QACtD,aAAa,EACX,SAAS,IAAI,IAAI;YACf,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,SAAS,KAAK,QAAQ;gBAC7B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAA+B;gBACtD,CAAC,CAAE,SAAuC;QAChD,YAAY,EAAG,GAAG,CAAC,aAAwB,IAAI,CAAC;QAChD,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC;QAC9C,WAAW,EAAE,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC;QACzC,OAAO,EAAG,GAAG,CAAC,OAAyB,IAAI,SAAS;QACpD,oEAAoE;QACpE,0CAA0C;QAC1C,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE;QACnD,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,0EAA0E"}
|