@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,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Redis adapter for persistence
|
|
4
|
+
* Uses Redis for fast session/message storage
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.RedisAdapter = void 0;
|
|
8
|
+
const errors_js_1 = require("../types/errors.js");
|
|
9
|
+
const index_js_1 = require("../utils/index.js");
|
|
10
|
+
const sessionRow_js_1 = require("./sessionRow.js");
|
|
11
|
+
/**
|
|
12
|
+
* Redis Adapter - Provider-style API for Redis persistence
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import Redis from 'ioredis';
|
|
17
|
+
* import { Agent, RedisAdapter } from '@falai/agent';
|
|
18
|
+
*
|
|
19
|
+
* const redis = new Redis();
|
|
20
|
+
*
|
|
21
|
+
* const agent = new Agent({
|
|
22
|
+
* name: "My Agent",
|
|
23
|
+
* provider: provider,
|
|
24
|
+
* persistence: {
|
|
25
|
+
* adapter: new RedisAdapter({ redis }),
|
|
26
|
+
* userId: "user_123",
|
|
27
|
+
* },
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
class RedisAdapter {
|
|
32
|
+
constructor(options) {
|
|
33
|
+
this.redis = options.redis;
|
|
34
|
+
this.keyPrefix = options.keyPrefix || "agent:";
|
|
35
|
+
this.sessionTTL = options.sessionTTL || 7 * 24 * 60 * 60; // 7 days
|
|
36
|
+
this.messageTTL = options.messageTTL || 30 * 24 * 60 * 60; // 30 days
|
|
37
|
+
this.sessionRepository = new RedisSessionRepository(this.redis, this.keyPrefix, this.sessionTTL);
|
|
38
|
+
this.messageRepository = new RedisMessageRepository(this.redis, this.keyPrefix, this.messageTTL);
|
|
39
|
+
}
|
|
40
|
+
async disconnect() {
|
|
41
|
+
await this.redis.quit();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.RedisAdapter = RedisAdapter;
|
|
45
|
+
/**
|
|
46
|
+
* Redis Session Repository
|
|
47
|
+
*/
|
|
48
|
+
class RedisSessionRepository {
|
|
49
|
+
constructor(redis, keyPrefix, ttl) {
|
|
50
|
+
this.redis = redis;
|
|
51
|
+
this.keyPrefix = keyPrefix;
|
|
52
|
+
this.ttl = ttl;
|
|
53
|
+
}
|
|
54
|
+
getKey(id) {
|
|
55
|
+
return `${this.keyPrefix}session:${id}`;
|
|
56
|
+
}
|
|
57
|
+
getUserKey(userId) {
|
|
58
|
+
return `${this.keyPrefix}user:${userId}:sessions`;
|
|
59
|
+
}
|
|
60
|
+
async create(data) {
|
|
61
|
+
const id = data.id || (0, index_js_1.createSessionId)();
|
|
62
|
+
const now = new Date();
|
|
63
|
+
const session = {
|
|
64
|
+
...data,
|
|
65
|
+
id,
|
|
66
|
+
createdAt: now,
|
|
67
|
+
updatedAt: now,
|
|
68
|
+
status: data.status || "active",
|
|
69
|
+
messageCount: data.messageCount || 0,
|
|
70
|
+
version: data.version ?? 1,
|
|
71
|
+
};
|
|
72
|
+
await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(session));
|
|
73
|
+
// Add to user's session list
|
|
74
|
+
if (data.userId) {
|
|
75
|
+
await this.redis.hset(this.getUserKey(data.userId), id, now.toISOString());
|
|
76
|
+
}
|
|
77
|
+
return session;
|
|
78
|
+
}
|
|
79
|
+
async findById(id) {
|
|
80
|
+
const data = await this.redis.get(this.getKey(id));
|
|
81
|
+
if (!data)
|
|
82
|
+
return null;
|
|
83
|
+
try {
|
|
84
|
+
const parsed = JSON.parse(data);
|
|
85
|
+
// JSON round-trips turn Dates into ISO strings — coerce on read so
|
|
86
|
+
// callers always get Date instances (parity with the SQL adapters).
|
|
87
|
+
return {
|
|
88
|
+
...parsed,
|
|
89
|
+
lastMessageAt: (0, sessionRow_js_1.coerceDate)(parsed.lastMessageAt),
|
|
90
|
+
completedAt: (0, sessionRow_js_1.coerceDate)(parsed.completedAt),
|
|
91
|
+
createdAt: (0, sessionRow_js_1.coerceDate)(parsed.createdAt) ?? new Date(),
|
|
92
|
+
updatedAt: (0, sessionRow_js_1.coerceDate)(parsed.updatedAt) ?? new Date(),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
index_js_1.logger.error(`Error parsing session data for id ${id}:`, error);
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async findActiveByUserId(userId) {
|
|
101
|
+
const sessionIds = await this.redis.hgetall(this.getUserKey(userId));
|
|
102
|
+
// Newest-first: the hash values ARE the sessions' createdAt ISO strings,
|
|
103
|
+
// which sort lexicographically. Iterating hash order instead would return
|
|
104
|
+
// an arbitrary active session, not the most recent one.
|
|
105
|
+
const newestFirst = Object.keys(sessionIds).sort((a, b) => sessionIds[b].localeCompare(sessionIds[a]));
|
|
106
|
+
for (const sessionId of newestFirst) {
|
|
107
|
+
const session = await this.findById(sessionId);
|
|
108
|
+
if (session && session.status === "active") {
|
|
109
|
+
return session;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
async findByUserId(userId, limit = 100) {
|
|
115
|
+
const sessionIds = await this.redis.hgetall(this.getUserKey(userId));
|
|
116
|
+
// Sort BEFORE limiting (hash values are the createdAt ISO strings) —
|
|
117
|
+
// limiting first would keep an arbitrary hash-order subset.
|
|
118
|
+
const newestFirst = Object.keys(sessionIds)
|
|
119
|
+
.sort((a, b) => sessionIds[b].localeCompare(sessionIds[a]))
|
|
120
|
+
.slice(0, limit);
|
|
121
|
+
const sessions = [];
|
|
122
|
+
for (const sessionId of newestFirst) {
|
|
123
|
+
const session = await this.findById(sessionId);
|
|
124
|
+
if (session) {
|
|
125
|
+
sessions.push(session);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return sessions;
|
|
129
|
+
}
|
|
130
|
+
async update(id, data, options) {
|
|
131
|
+
const existing = await this.findById(id);
|
|
132
|
+
if (!existing)
|
|
133
|
+
return null;
|
|
134
|
+
// Check-then-set on the stored JSON — not fully atomic (no WATCH/MULTI)
|
|
135
|
+
if (options?.expectedVersion !== undefined &&
|
|
136
|
+
existing.version !== undefined &&
|
|
137
|
+
existing.version !== options.expectedVersion) {
|
|
138
|
+
throw new errors_js_1.SessionConflictError(id, options.expectedVersion, existing.version);
|
|
139
|
+
}
|
|
140
|
+
const updated = {
|
|
141
|
+
...existing,
|
|
142
|
+
...data,
|
|
143
|
+
version: (existing.version ?? options?.expectedVersion ?? 0) + 1,
|
|
144
|
+
updatedAt: new Date(),
|
|
145
|
+
};
|
|
146
|
+
await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(updated));
|
|
147
|
+
return updated;
|
|
148
|
+
}
|
|
149
|
+
async updateStatus(id, status, completedAt) {
|
|
150
|
+
// An undefined completedAt must be omitted, not spread — update() writes
|
|
151
|
+
// whatever keys it receives, and SQL skips undefined columns.
|
|
152
|
+
return this.update(id, completedAt ? { status, completedAt } : { status });
|
|
153
|
+
}
|
|
154
|
+
async updateCollectedData(id, collectedData) {
|
|
155
|
+
return this.update(id, { collectedData });
|
|
156
|
+
}
|
|
157
|
+
async updateFlowStep(id, flow, step) {
|
|
158
|
+
// Mirror SQL's conditional column assembly: only defined values are written.
|
|
159
|
+
return this.update(id, {
|
|
160
|
+
...(flow !== undefined && { currentFlow: flow }),
|
|
161
|
+
...(step !== undefined && { currentStep: step }),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
async incrementMessageCount(id) {
|
|
165
|
+
const session = await this.findById(id);
|
|
166
|
+
if (!session)
|
|
167
|
+
return null;
|
|
168
|
+
// Bookkeeping write, deliberately NOT routed through update(): count bumps
|
|
169
|
+
// run alongside saveSessionState's version CAS every turn, so they must
|
|
170
|
+
// not move `version` (matches the SQL adapters' dedicated statement).
|
|
171
|
+
const updated = {
|
|
172
|
+
...session,
|
|
173
|
+
messageCount: (session.messageCount || 0) + 1,
|
|
174
|
+
lastMessageAt: new Date(),
|
|
175
|
+
updatedAt: new Date(),
|
|
176
|
+
};
|
|
177
|
+
await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(updated));
|
|
178
|
+
return updated;
|
|
179
|
+
}
|
|
180
|
+
async delete(id) {
|
|
181
|
+
// Look up first so the user index can be cleaned too — otherwise
|
|
182
|
+
// findActiveByUserId/findByUserId chase dead ids forever.
|
|
183
|
+
const existing = await this.findById(id);
|
|
184
|
+
if (!existing)
|
|
185
|
+
return false;
|
|
186
|
+
const result = await this.redis.del(this.getKey(id));
|
|
187
|
+
if (existing.userId) {
|
|
188
|
+
await this.redis.hdel(this.getUserKey(existing.userId), id);
|
|
189
|
+
}
|
|
190
|
+
return result > 0;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Redis Message Repository
|
|
195
|
+
*/
|
|
196
|
+
class RedisMessageRepository {
|
|
197
|
+
constructor(redis, keyPrefix, ttl) {
|
|
198
|
+
this.redis = redis;
|
|
199
|
+
this.keyPrefix = keyPrefix;
|
|
200
|
+
this.ttl = ttl;
|
|
201
|
+
}
|
|
202
|
+
getKey(id) {
|
|
203
|
+
return `${this.keyPrefix}message:${id}`;
|
|
204
|
+
}
|
|
205
|
+
getSessionKey(sessionId) {
|
|
206
|
+
return `${this.keyPrefix}session:${sessionId}:messages`;
|
|
207
|
+
}
|
|
208
|
+
async create(data) {
|
|
209
|
+
const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
210
|
+
const message = {
|
|
211
|
+
...data,
|
|
212
|
+
id,
|
|
213
|
+
createdAt: new Date(),
|
|
214
|
+
};
|
|
215
|
+
await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(message));
|
|
216
|
+
await this.redis.hset(this.getSessionKey(data.sessionId), id, message.createdAt.toISOString());
|
|
217
|
+
return message;
|
|
218
|
+
}
|
|
219
|
+
async findById(id) {
|
|
220
|
+
const data = await this.redis.get(this.getKey(id));
|
|
221
|
+
if (!data)
|
|
222
|
+
return null;
|
|
223
|
+
try {
|
|
224
|
+
const message = JSON.parse(data);
|
|
225
|
+
return { ...message, createdAt: (0, sessionRow_js_1.coerceDate)(message.createdAt) ?? new Date() };
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
index_js_1.logger.error(`Error parsing message data for id ${id}:`, error);
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async findBySessionId(sessionId, limit = 1000) {
|
|
233
|
+
const messageIds = await this.redis.hgetall(this.getSessionKey(sessionId));
|
|
234
|
+
// Fetch ALL candidates first — limiting before sorting would keep an
|
|
235
|
+
// arbitrary hash-order subset instead of the oldest messages. The fetches
|
|
236
|
+
// are independent, so run them concurrently instead of N serialized
|
|
237
|
+
// round trips.
|
|
238
|
+
const fetched = await Promise.all(Object.keys(messageIds).map((messageId) => this.findById(messageId)));
|
|
239
|
+
const messages = fetched.filter((m) => m !== null);
|
|
240
|
+
// Chronological order (matches PostgreSQL/Mongo adapters); limit applies
|
|
241
|
+
// only after sorting is meaningful.
|
|
242
|
+
return messages
|
|
243
|
+
.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
|
|
244
|
+
.slice(0, limit);
|
|
245
|
+
}
|
|
246
|
+
async findByUserId(userId, limit = 100) {
|
|
247
|
+
// Redis doesn't have efficient user-level querying
|
|
248
|
+
// This would require additional indexing
|
|
249
|
+
const pattern = `${this.keyPrefix}message:*`;
|
|
250
|
+
const keys = await this.redis.keys(pattern);
|
|
251
|
+
// Filter by userId BEFORE limiting — slicing keys first would drop
|
|
252
|
+
// matching messages that happen to sort after unrelated users' keys.
|
|
253
|
+
// ponytail: full keyspace scan per user query (pre-existing ceiling of
|
|
254
|
+
// this adapter); the upgrade path is a per-user message index.
|
|
255
|
+
const fetched = await Promise.all(keys.map((key) => this.redis.get(key)));
|
|
256
|
+
const messages = [];
|
|
257
|
+
for (const data of fetched) {
|
|
258
|
+
if (!data)
|
|
259
|
+
continue;
|
|
260
|
+
const parsed = JSON.parse(data);
|
|
261
|
+
if (parsed.userId === userId) {
|
|
262
|
+
messages.push({ ...parsed, createdAt: (0, sessionRow_js_1.coerceDate)(parsed.createdAt) ?? new Date() });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return messages
|
|
266
|
+
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
|
|
267
|
+
.slice(0, limit);
|
|
268
|
+
}
|
|
269
|
+
async delete(id) {
|
|
270
|
+
const result = await this.redis.del(this.getKey(id));
|
|
271
|
+
return result > 0;
|
|
272
|
+
}
|
|
273
|
+
async deleteBySessionId(sessionId) {
|
|
274
|
+
const messageIds = await this.redis.hgetall(this.getSessionKey(sessionId));
|
|
275
|
+
const keys = Object.keys(messageIds).map((id) => this.getKey(id));
|
|
276
|
+
if (keys.length === 0)
|
|
277
|
+
return 0;
|
|
278
|
+
const result = await this.redis.del(...keys);
|
|
279
|
+
await this.redis.del(this.getSessionKey(sessionId));
|
|
280
|
+
return result;
|
|
281
|
+
}
|
|
282
|
+
async deleteByUserId(userId) {
|
|
283
|
+
const messages = await this.findByUserId(userId);
|
|
284
|
+
const keys = messages.map((m) => this.getKey(m.id));
|
|
285
|
+
if (keys.length === 0)
|
|
286
|
+
return 0;
|
|
287
|
+
return await this.redis.del(...keys);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=RedisAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedisAdapter.js","sourceRoot":"","sources":["../../../src/adapters/RedisAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite adapter for persistence
|
|
3
|
+
* Lightweight, file-based database perfect for local development
|
|
4
|
+
*
|
|
5
|
+
* ## v2 Migration
|
|
6
|
+
*
|
|
7
|
+
* If upgrading from v1, run the following migration on your sessions table:
|
|
8
|
+
*
|
|
9
|
+
* ```sql
|
|
10
|
+
* -- SQLite 3.35.0+ supports DROP COLUMN:
|
|
11
|
+
* ALTER TABLE agent_sessions DROP COLUMN pending_transition;
|
|
12
|
+
* -- For older versions, recreate the table without pending_transition.
|
|
13
|
+
*
|
|
14
|
+
* ALTER TABLE agent_sessions ADD COLUMN pending_directive TEXT;
|
|
15
|
+
* ALTER TABLE agent_sessions ADD COLUMN signals TEXT;
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* `pending_directive` stores the JSON-serialized `Directive` that the pipeline
|
|
19
|
+
* applies at the start of the next turn. `signals` is a reserved TEXT (JSON)
|
|
20
|
+
* column for the v2.x Signals feature — pass-through only in v2.0.
|
|
21
|
+
*/
|
|
22
|
+
import type { SessionRepository, MessageRepository, PersistenceAdapter } from "../types/index.js";
|
|
23
|
+
/**
|
|
24
|
+
* SQLite database interface - matches better-sqlite3
|
|
25
|
+
*/
|
|
26
|
+
export interface SqliteDatabase {
|
|
27
|
+
prepare(sql: string): SqliteStatement;
|
|
28
|
+
exec(sql: string): void;
|
|
29
|
+
close(): void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* SQLite statement interface - matches better-sqlite3 Statement
|
|
33
|
+
*/
|
|
34
|
+
export interface SqliteStatement {
|
|
35
|
+
run(...params: unknown[]): {
|
|
36
|
+
changes: number;
|
|
37
|
+
lastInsertRowid: number;
|
|
38
|
+
};
|
|
39
|
+
get(...params: unknown[]): Record<string, unknown> | undefined;
|
|
40
|
+
all(...params: unknown[]): Array<Record<string, unknown>>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Options for SQLite adapter
|
|
44
|
+
*/
|
|
45
|
+
export interface SQLiteAdapterOptions {
|
|
46
|
+
/**
|
|
47
|
+
* SQLite database instance (better-sqlite3)
|
|
48
|
+
*/
|
|
49
|
+
db: SqliteDatabase;
|
|
50
|
+
/**
|
|
51
|
+
* Table names (default: "agent_sessions" and "agent_messages")
|
|
52
|
+
*/
|
|
53
|
+
tables?: {
|
|
54
|
+
sessions?: string;
|
|
55
|
+
messages?: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* SQLite Adapter - Provider-style API for SQLite persistence
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import Database from 'better-sqlite3';
|
|
64
|
+
* import { Agent, SQLiteAdapter } from '@falai/agent';
|
|
65
|
+
*
|
|
66
|
+
* const db = new Database('agent.db');
|
|
67
|
+
*
|
|
68
|
+
* const agent = new Agent({
|
|
69
|
+
* name: "My Agent",
|
|
70
|
+
* provider: provider,
|
|
71
|
+
* persistence: {
|
|
72
|
+
* adapter: new SQLiteAdapter({ db }),
|
|
73
|
+
* userId: "user_123",
|
|
74
|
+
* },
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export declare class SQLiteAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
|
|
79
|
+
readonly sessionRepository: SessionRepository<TData>;
|
|
80
|
+
readonly messageRepository: MessageRepository;
|
|
81
|
+
private db;
|
|
82
|
+
constructor(options: SQLiteAdapterOptions);
|
|
83
|
+
initialize(): Promise<void>;
|
|
84
|
+
disconnect(): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=SQLiteAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLiteAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/SQLiteAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAIjB,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAK3B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/D,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,EAAE,EAAE,cAAc,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,kBAAkB,CAAC,KAAK,CAAC;IAC9F,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,OAAO,CAAC,EAAE,CAAiB;gBAEf,OAAO,EAAE,oBAAoB;IAanC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiE3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAIlC"}
|