@falai/agent 0.3.11 → 0.3.20

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.
Files changed (101) hide show
  1. package/README.md +164 -0
  2. package/dist/adapters/MongoAdapter.d.ts +97 -0
  3. package/dist/adapters/MongoAdapter.d.ts.map +1 -0
  4. package/dist/adapters/MongoAdapter.js +163 -0
  5. package/dist/adapters/MongoAdapter.js.map +1 -0
  6. package/dist/adapters/PostgreSQLAdapter.d.ts +71 -0
  7. package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  8. package/dist/adapters/PostgreSQLAdapter.js +256 -0
  9. package/dist/adapters/PostgreSQLAdapter.js.map +1 -0
  10. package/dist/adapters/PrismaAdapter.d.ts +115 -0
  11. package/dist/adapters/PrismaAdapter.d.ts.map +1 -0
  12. package/dist/adapters/PrismaAdapter.js +331 -0
  13. package/dist/adapters/PrismaAdapter.js.map +1 -0
  14. package/dist/adapters/RedisAdapter.d.ts +71 -0
  15. package/dist/adapters/RedisAdapter.d.ts.map +1 -0
  16. package/dist/adapters/RedisAdapter.js +226 -0
  17. package/dist/adapters/RedisAdapter.js.map +1 -0
  18. package/dist/adapters/index.d.ts +12 -0
  19. package/dist/adapters/index.d.ts.map +1 -0
  20. package/dist/adapters/index.js +8 -0
  21. package/dist/adapters/index.js.map +1 -0
  22. package/dist/cjs/adapters/MongoAdapter.d.ts +97 -0
  23. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -0
  24. package/dist/cjs/adapters/MongoAdapter.js +167 -0
  25. package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
  26. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +71 -0
  27. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  28. package/dist/cjs/adapters/PostgreSQLAdapter.js +260 -0
  29. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
  30. package/dist/cjs/adapters/PrismaAdapter.d.ts +115 -0
  31. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -0
  32. package/dist/cjs/adapters/PrismaAdapter.js +335 -0
  33. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
  34. package/dist/cjs/adapters/RedisAdapter.d.ts +71 -0
  35. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -0
  36. package/dist/cjs/adapters/RedisAdapter.js +230 -0
  37. package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
  38. package/dist/cjs/adapters/index.d.ts +12 -0
  39. package/dist/cjs/adapters/index.d.ts.map +1 -0
  40. package/dist/cjs/adapters/index.js +15 -0
  41. package/dist/cjs/adapters/index.js.map +1 -0
  42. package/dist/cjs/core/Agent.d.ts +10 -0
  43. package/dist/cjs/core/Agent.d.ts.map +1 -1
  44. package/dist/cjs/core/Agent.js +23 -0
  45. package/dist/cjs/core/Agent.js.map +1 -1
  46. package/dist/cjs/core/PersistenceManager.d.ts +77 -0
  47. package/dist/cjs/core/PersistenceManager.d.ts.map +1 -0
  48. package/dist/cjs/core/PersistenceManager.js +153 -0
  49. package/dist/cjs/core/PersistenceManager.js.map +1 -0
  50. package/dist/cjs/index.d.ts +10 -0
  51. package/dist/cjs/index.d.ts.map +1 -1
  52. package/dist/cjs/index.js +12 -1
  53. package/dist/cjs/index.js.map +1 -1
  54. package/dist/cjs/types/agent.d.ts +3 -0
  55. package/dist/cjs/types/agent.d.ts.map +1 -1
  56. package/dist/cjs/types/agent.js.map +1 -1
  57. package/dist/cjs/types/index.d.ts +1 -0
  58. package/dist/cjs/types/index.d.ts.map +1 -1
  59. package/dist/cjs/types/persistence.d.ts +194 -0
  60. package/dist/cjs/types/persistence.d.ts.map +1 -0
  61. package/dist/cjs/types/persistence.js +7 -0
  62. package/dist/cjs/types/persistence.js.map +1 -0
  63. package/dist/core/Agent.d.ts +10 -0
  64. package/dist/core/Agent.d.ts.map +1 -1
  65. package/dist/core/Agent.js +23 -0
  66. package/dist/core/Agent.js.map +1 -1
  67. package/dist/core/PersistenceManager.d.ts +77 -0
  68. package/dist/core/PersistenceManager.d.ts.map +1 -0
  69. package/dist/core/PersistenceManager.js +149 -0
  70. package/dist/core/PersistenceManager.js.map +1 -0
  71. package/dist/index.d.ts +10 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +6 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/types/agent.d.ts +3 -0
  76. package/dist/types/agent.d.ts.map +1 -1
  77. package/dist/types/agent.js.map +1 -1
  78. package/dist/types/index.d.ts +1 -0
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/persistence.d.ts +194 -0
  81. package/dist/types/persistence.d.ts.map +1 -0
  82. package/dist/types/persistence.js +6 -0
  83. package/dist/types/persistence.js.map +1 -0
  84. package/docs/ADAPTERS.md +127 -0
  85. package/docs/API_REFERENCE.md +337 -0
  86. package/docs/PERSISTENCE.md +513 -0
  87. package/examples/prisma-persistence.ts +313 -0
  88. package/examples/prisma-schema.example.prisma +74 -0
  89. package/examples/redis-persistence.ts +89 -0
  90. package/package.json +29 -1
  91. package/src/adapters/MongoAdapter.ts +295 -0
  92. package/src/adapters/PostgreSQLAdapter.ts +417 -0
  93. package/src/adapters/PrismaAdapter.ts +510 -0
  94. package/src/adapters/RedisAdapter.ts +365 -0
  95. package/src/adapters/index.ts +28 -0
  96. package/src/core/Agent.ts +31 -0
  97. package/src/core/PersistenceManager.ts +222 -0
  98. package/src/index.ts +36 -0
  99. package/src/types/agent.ts +3 -0
  100. package/src/types/index.ts +14 -0
  101. package/src/types/persistence.ts +234 -0
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Prisma adapter for persistence
3
+ * Simple, provider-like API with automatic schema creation
4
+ */
5
+ /**
6
+ * Prisma Adapter - Provider-style API for Prisma persistence
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { PrismaClient } from '@prisma/client';
11
+ * import { Agent, PrismaAdapter } from '@falai/agent';
12
+ *
13
+ * const prisma = new PrismaClient();
14
+ *
15
+ * const agent = new Agent({
16
+ * name: "My Agent",
17
+ * ai: provider,
18
+ * persistence: {
19
+ * adapter: new PrismaAdapter({ prisma }),
20
+ * userId: "user_123",
21
+ * },
22
+ * });
23
+ * ```
24
+ */
25
+ export class PrismaAdapter {
26
+ constructor(options) {
27
+ this.initialized = false;
28
+ this.prisma = options.prisma;
29
+ this.options = {
30
+ prisma: options.prisma,
31
+ tables: {
32
+ sessions: options.tables?.sessions || "agentSession",
33
+ messages: options.tables?.messages || "agentMessage",
34
+ },
35
+ fieldMappings: options.fieldMappings,
36
+ autoMigrate: options.autoMigrate ?? false,
37
+ };
38
+ // Initialize repositories
39
+ this.sessionRepository = new PrismaSessionRepository(this.prisma, this.options.tables.sessions, this.options.fieldMappings?.sessions);
40
+ this.messageRepository = new PrismaMessageRepository(this.prisma, this.options.tables.messages, this.options.fieldMappings?.messages);
41
+ // Auto-initialize if configured
42
+ if (this.options.autoMigrate) {
43
+ this.initialize().catch((error) => {
44
+ console.error("[PrismaAdapter] Auto-migration failed:", error);
45
+ });
46
+ }
47
+ }
48
+ /**
49
+ * Initialize the adapter (check/create tables)
50
+ * Called automatically if autoMigrate is enabled
51
+ */
52
+ async initialize() {
53
+ if (this.initialized)
54
+ return;
55
+ if (this.options.autoMigrate && this.prisma.$executeRaw) {
56
+ // Note: This is a simplified example. In production, use Prisma Migrate.
57
+ console.warn("[PrismaAdapter] autoMigrate is experimental. Use Prisma Migrate for production.");
58
+ // Table creation would go here, but it's database-specific
59
+ // Better to rely on Prisma Migrate
60
+ await Promise.resolve(); // Satisfy async requirement
61
+ }
62
+ this.initialized = true;
63
+ }
64
+ /**
65
+ * Disconnect from the database
66
+ */
67
+ async disconnect() {
68
+ if (this.prisma.$disconnect) {
69
+ await this.prisma.$disconnect();
70
+ }
71
+ }
72
+ }
73
+ /**
74
+ * Prisma Session Repository
75
+ * Internal implementation - users should use PrismaAdapter instead
76
+ */
77
+ class PrismaSessionRepository {
78
+ constructor(prismaClient, tableName, fieldMappings) {
79
+ this.prisma = prismaClient;
80
+ this.tableName = tableName;
81
+ this.fieldMap = fieldMappings || {};
82
+ }
83
+ /**
84
+ * Map our standard field names to custom schema field names
85
+ */
86
+ mapFields(data) {
87
+ const mapped = {};
88
+ for (const [key, value] of Object.entries(data)) {
89
+ const mappedKey = this.fieldMap[key] || key;
90
+ mapped[mappedKey] = value;
91
+ }
92
+ return mapped;
93
+ }
94
+ /**
95
+ * Map custom schema field names back to our standard field names
96
+ */
97
+ unmapFields(data) {
98
+ if (!data)
99
+ return data;
100
+ const reverseMap = {};
101
+ for (const [standardKey, customKey] of Object.entries(this.fieldMap)) {
102
+ reverseMap[customKey] = standardKey;
103
+ }
104
+ const unmapped = {};
105
+ for (const [key, value] of Object.entries(data)) {
106
+ const unmappedKey = reverseMap[key] || key;
107
+ unmapped[unmappedKey] = value;
108
+ }
109
+ return unmapped;
110
+ }
111
+ getModel() {
112
+ return this.prisma[this.tableName];
113
+ }
114
+ async create(data) {
115
+ const mapped = this.mapFields(data);
116
+ const result = await this.getModel().create({
117
+ data: mapped,
118
+ });
119
+ return this.unmapFields(result);
120
+ }
121
+ async findById(id) {
122
+ const result = await this.getModel().findUnique({
123
+ where: { [this.fieldMap.id || "id"]: id },
124
+ });
125
+ return result ? this.unmapFields(result) : null;
126
+ }
127
+ async findActiveByUserId(userId) {
128
+ const result = await this.getModel().findFirst({
129
+ where: {
130
+ [this.fieldMap.userId || "userId"]: userId,
131
+ [this.fieldMap.status || "status"]: "active",
132
+ },
133
+ orderBy: {
134
+ [this.fieldMap.createdAt || "createdAt"]: "desc",
135
+ },
136
+ });
137
+ return result ? this.unmapFields(result) : null;
138
+ }
139
+ async findByUserId(userId, limit = 100) {
140
+ const results = await this.getModel().findMany({
141
+ where: {
142
+ [this.fieldMap.userId || "userId"]: userId,
143
+ },
144
+ orderBy: {
145
+ [this.fieldMap.createdAt || "createdAt"]: "desc",
146
+ },
147
+ take: limit,
148
+ });
149
+ return results.map((r) => this.unmapFields(r));
150
+ }
151
+ async update(id, data) {
152
+ const mapped = this.mapFields(data);
153
+ const result = await this.getModel().update({
154
+ where: { [this.fieldMap.id || "id"]: id },
155
+ data: {
156
+ ...mapped,
157
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
158
+ },
159
+ });
160
+ return this.unmapFields(result);
161
+ }
162
+ async updateStatus(id, status, completedAt) {
163
+ const data = {
164
+ [this.fieldMap.status || "status"]: status,
165
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
166
+ };
167
+ if (completedAt) {
168
+ data[this.fieldMap.completedAt || "completedAt"] = completedAt;
169
+ }
170
+ const result = await this.getModel().update({
171
+ where: { [this.fieldMap.id || "id"]: id },
172
+ data,
173
+ });
174
+ return this.unmapFields(result);
175
+ }
176
+ async updateCollectedData(id, collectedData) {
177
+ const result = await this.getModel().update({
178
+ where: { [this.fieldMap.id || "id"]: id },
179
+ data: {
180
+ [this.fieldMap.collectedData || "collectedData"]: collectedData,
181
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
182
+ },
183
+ });
184
+ return this.unmapFields(result);
185
+ }
186
+ async updateRouteState(id, route, state) {
187
+ const data = {
188
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
189
+ };
190
+ if (route !== undefined) {
191
+ data[this.fieldMap.currentRoute || "currentRoute"] = route;
192
+ }
193
+ if (state !== undefined) {
194
+ data[this.fieldMap.currentState || "currentState"] = state;
195
+ }
196
+ const result = await this.getModel().update({
197
+ where: { [this.fieldMap.id || "id"]: id },
198
+ data,
199
+ });
200
+ return this.unmapFields(result);
201
+ }
202
+ async incrementMessageCount(id) {
203
+ const result = await this.getModel().update({
204
+ where: { [this.fieldMap.id || "id"]: id },
205
+ data: {
206
+ [this.fieldMap.messageCount || "messageCount"]: { increment: 1 },
207
+ [this.fieldMap.lastMessageAt || "lastMessageAt"]: new Date(),
208
+ [this.fieldMap.updatedAt || "updatedAt"]: new Date(),
209
+ },
210
+ });
211
+ return this.unmapFields(result);
212
+ }
213
+ async delete(id) {
214
+ try {
215
+ await this.getModel().delete({
216
+ where: { [this.fieldMap.id || "id"]: id },
217
+ });
218
+ return true;
219
+ }
220
+ catch {
221
+ return false;
222
+ }
223
+ }
224
+ }
225
+ /**
226
+ * Prisma Message Repository
227
+ * Internal implementation - users should use PrismaAdapter instead
228
+ */
229
+ class PrismaMessageRepository {
230
+ constructor(prismaClient, tableName, fieldMappings) {
231
+ this.prisma = prismaClient;
232
+ this.tableName = tableName;
233
+ this.fieldMap = fieldMappings || {};
234
+ }
235
+ /**
236
+ * Map our standard field names to custom schema field names
237
+ */
238
+ mapFields(data) {
239
+ const mapped = {};
240
+ for (const [key, value] of Object.entries(data)) {
241
+ const mappedKey = this.fieldMap[key] || key;
242
+ mapped[mappedKey] = value;
243
+ }
244
+ return mapped;
245
+ }
246
+ /**
247
+ * Map custom schema field names back to our standard field names
248
+ */
249
+ unmapFields(data) {
250
+ if (!data)
251
+ return data;
252
+ const reverseMap = {};
253
+ for (const [standardKey, customKey] of Object.entries(this.fieldMap)) {
254
+ reverseMap[customKey] = standardKey;
255
+ }
256
+ const unmapped = {};
257
+ for (const [key, value] of Object.entries(data)) {
258
+ const unmappedKey = reverseMap[key] || key;
259
+ unmapped[unmappedKey] = value;
260
+ }
261
+ return unmapped;
262
+ }
263
+ getModel() {
264
+ return this.prisma[this.tableName];
265
+ }
266
+ async create(data) {
267
+ const mapped = this.mapFields(data);
268
+ const result = await this.getModel().create({
269
+ data: mapped,
270
+ });
271
+ return this.unmapFields(result);
272
+ }
273
+ async findById(id) {
274
+ const result = await this.getModel().findUnique({
275
+ where: { [this.fieldMap.id || "id"]: id },
276
+ });
277
+ return result ? this.unmapFields(result) : null;
278
+ }
279
+ async findBySessionId(sessionId, limit = 1000) {
280
+ const results = await this.getModel().findMany({
281
+ where: {
282
+ [this.fieldMap.sessionId || "sessionId"]: sessionId,
283
+ },
284
+ orderBy: {
285
+ [this.fieldMap.createdAt || "createdAt"]: "asc",
286
+ },
287
+ take: limit,
288
+ });
289
+ return results.map((r) => this.unmapFields(r));
290
+ }
291
+ async findByUserId(userId, limit = 100) {
292
+ const results = await this.getModel().findMany({
293
+ where: {
294
+ [this.fieldMap.userId || "userId"]: userId,
295
+ },
296
+ orderBy: {
297
+ [this.fieldMap.createdAt || "createdAt"]: "desc",
298
+ },
299
+ take: limit,
300
+ });
301
+ return results.map((r) => this.unmapFields(r));
302
+ }
303
+ async delete(id) {
304
+ try {
305
+ await this.getModel().delete({
306
+ where: { [this.fieldMap.id || "id"]: id },
307
+ });
308
+ return true;
309
+ }
310
+ catch {
311
+ return false;
312
+ }
313
+ }
314
+ async deleteBySessionId(sessionId) {
315
+ const result = await this.getModel().deleteMany({
316
+ where: {
317
+ [this.fieldMap.sessionId || "sessionId"]: sessionId,
318
+ },
319
+ });
320
+ return result.count || 0;
321
+ }
322
+ async deleteByUserId(userId) {
323
+ const result = await this.getModel().deleteMany({
324
+ where: {
325
+ [this.fieldMap.userId || "userId"]: userId,
326
+ },
327
+ });
328
+ return result.count || 0;
329
+ }
330
+ }
331
+ //# sourceMappingURL=PrismaAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrismaAdapter.js","sourceRoot":"","sources":["../../src/adapters/PrismaAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8FH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,aAAa;IASxB,YAAY,OAA6B;QAFjC,gBAAW,GAAG,KAAK,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE;gBACN,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,cAAc;gBACpD,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,cAAc;aACrD;YACD,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;SAC1C,CAAC;QAEF,0BAA0B;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,uBAAuB,CAClD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAS,EAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CACrC,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,IAAI,uBAAuB,CAClD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAS,EAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CACrC,CAAC;QAEF,gCAAgC;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxD,yEAAyE;YACzE,OAAO,CAAC,IAAI,CACV,iFAAiF,CAClF,CAAC;YACF,2DAA2D;YAC3D,mCAAmC;YACnC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,4BAA4B;QACvD,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,uBAAuB;IAK3B,YACE,YAA0B,EAC1B,SAAiB,EACjB,aAA0D;QAE1D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAA6B;QAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAwB,CAAC,IAAI,GAAG,CAAC;YACjE,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAA6B;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAmB,CAAC;QAEtC,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,UAAU,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;YAC3C,QAAQ,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,OAAO,QAAkC,CAAC;IAC5C,CAAC;IAEO,QAAQ;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAgB,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CACV,IAAyD;QAEzD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAA+B,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;SAC1C,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;YAC7C,KAAK,EAAE;gBACL,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM;gBAC1C,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,QAAQ;aAC7C;YACD,OAAO,EAAE;gBACP,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,MAAM;aACjD;SACF,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,KAAK,GAAG,GAAG;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;YAC7C,KAAK,EAAE;gBACL,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM;aAC3C;YACD,OAAO,EAAE;gBACP,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,MAAM;aACjD;YACD,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,IAAoD;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAA+B,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;YACzC,IAAI,EAAE;gBACJ,GAAG,MAAM;gBACT,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE;aACrD;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,EAAU,EACV,MAAqB,EACrB,WAAkB;QAElB,MAAM,IAAI,GAA4B;YACpC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM;YAC1C,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE;SACrD,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,aAAa,CAAC,GAAG,WAAW,CAAC;QACjE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;YACzC,IAAI;SACL,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,EAAU,EACV,aAAsC;QAEtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;YACzC,IAAI,EAAE;gBACJ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,eAAe,CAAC,EAAE,aAAa;gBAC/D,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE;aACrD;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,EAAU,EACV,KAAc,EACd,KAAc;QAEd,MAAM,IAAI,GAA4B;YACpC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE;SACrD,CAAC;QACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,cAAc,CAAC,GAAG,KAAK,CAAC;QAC7D,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,cAAc,CAAC,GAAG,KAAK,CAAC;QAC7D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;YACzC,IAAI;SACL,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAAU;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;YACzC,IAAI,EAAE;gBACJ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;gBAChE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,eAAe,CAAC,EAAE,IAAI,IAAI,EAAE;gBAC5D,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE;aACrD;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAC3B,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;aAC1C,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,uBAAuB;IAK3B,YACE,YAA0B,EAC1B,SAAiB,EACjB,aAA0D;QAE1D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAA6B;QAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAwB,CAAC,IAAI,GAAG,CAAC;YACjE,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAA6B;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAmB,CAAC;QAEtC,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,UAAU,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;YAC3C,QAAQ,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,OAAO,QAAkC,CAAC;IAC5C,CAAC;IAEO,QAAQ;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAgB,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CACV,IAA2C;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAA+B,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YAC1C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;SAC1C,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,SAAiB,EACjB,KAAK,GAAG,IAAI;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;YAC7C,KAAK,EAAE;gBACL,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,SAAS;aACpD;YACD,OAAO,EAAE;gBACP,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,KAAK;aAChD;YACD,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,KAAK,GAAG,GAAG;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;YAC7C,KAAK,EAAE;gBACL,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM;aAC3C;YACD,OAAO,EAAE;gBACP,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,MAAM;aACjD;YACD,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAC3B,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE;aAC1C,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE;gBACL,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,EAAE,SAAS;aACpD;SACF,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE;gBACL,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,MAAM;aAC3C;SACF,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Redis adapter for persistence
3
+ * Uses Redis for fast session/message storage
4
+ */
5
+ import type { SessionRepository, MessageRepository, PersistenceAdapter } from "../types/persistence";
6
+ /**
7
+ * Redis client interface - matches ioredis/redis clients
8
+ */
9
+ export interface RedisClient {
10
+ get(key: string): Promise<string | null>;
11
+ set(key: string, value: string): Promise<string | null>;
12
+ setex(key: string, seconds: number, value: string): Promise<string>;
13
+ del(...keys: string[]): Promise<number>;
14
+ keys(pattern: string): Promise<string[]>;
15
+ hgetall(key: string): Promise<Record<string, string>>;
16
+ hset(key: string, field: string, value: string): Promise<number>;
17
+ expire(key: string, seconds: number): Promise<number>;
18
+ quit(): Promise<string>;
19
+ }
20
+ /**
21
+ * Options for Redis adapter
22
+ */
23
+ export interface RedisAdapterOptions {
24
+ /**
25
+ * Redis client instance (ioredis or node-redis)
26
+ */
27
+ redis: RedisClient;
28
+ /**
29
+ * Key prefix for all keys (default: "agent:")
30
+ */
31
+ keyPrefix?: string;
32
+ /**
33
+ * TTL in seconds for sessions (default: 7 days)
34
+ */
35
+ sessionTTL?: number;
36
+ /**
37
+ * TTL in seconds for messages (default: 30 days)
38
+ */
39
+ messageTTL?: number;
40
+ }
41
+ /**
42
+ * Redis Adapter - Provider-style API for Redis persistence
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * import Redis from 'ioredis';
47
+ * import { Agent, RedisAdapter } from '@falai/agent';
48
+ *
49
+ * const redis = new Redis();
50
+ *
51
+ * const agent = new Agent({
52
+ * name: "My Agent",
53
+ * ai: provider,
54
+ * persistence: {
55
+ * adapter: new RedisAdapter({ redis }),
56
+ * userId: "user_123",
57
+ * },
58
+ * });
59
+ * ```
60
+ */
61
+ export declare class RedisAdapter implements PersistenceAdapter {
62
+ readonly sessionRepository: SessionRepository;
63
+ readonly messageRepository: MessageRepository;
64
+ private redis;
65
+ private keyPrefix;
66
+ private sessionTTL;
67
+ private messageTTL;
68
+ constructor(options: RedisAdapterOptions);
69
+ disconnect(): Promise<void>;
70
+ }
71
+ //# sourceMappingURL=RedisAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/RedisAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAIjB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,YAAa,YAAW,kBAAkB;IACrD,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,mBAAmB;IAmBlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Redis adapter for persistence
3
+ * Uses Redis for fast session/message storage
4
+ */
5
+ /**
6
+ * Redis Adapter - Provider-style API for Redis persistence
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import Redis from 'ioredis';
11
+ * import { Agent, RedisAdapter } from '@falai/agent';
12
+ *
13
+ * const redis = new Redis();
14
+ *
15
+ * const agent = new Agent({
16
+ * name: "My Agent",
17
+ * ai: provider,
18
+ * persistence: {
19
+ * adapter: new RedisAdapter({ redis }),
20
+ * userId: "user_123",
21
+ * },
22
+ * });
23
+ * ```
24
+ */
25
+ export class RedisAdapter {
26
+ constructor(options) {
27
+ this.redis = options.redis;
28
+ this.keyPrefix = options.keyPrefix || "agent:";
29
+ this.sessionTTL = options.sessionTTL || 7 * 24 * 60 * 60; // 7 days
30
+ this.messageTTL = options.messageTTL || 30 * 24 * 60 * 60; // 30 days
31
+ this.sessionRepository = new RedisSessionRepository(this.redis, this.keyPrefix, this.sessionTTL);
32
+ this.messageRepository = new RedisMessageRepository(this.redis, this.keyPrefix, this.messageTTL);
33
+ }
34
+ async disconnect() {
35
+ await this.redis.quit();
36
+ }
37
+ }
38
+ /**
39
+ * Redis Session Repository
40
+ */
41
+ class RedisSessionRepository {
42
+ constructor(redis, keyPrefix, ttl) {
43
+ this.redis = redis;
44
+ this.keyPrefix = keyPrefix;
45
+ this.ttl = ttl;
46
+ }
47
+ getKey(id) {
48
+ return `${this.keyPrefix}session:${id}`;
49
+ }
50
+ getUserKey(userId) {
51
+ return `${this.keyPrefix}user:${userId}:sessions`;
52
+ }
53
+ async create(data) {
54
+ const id = `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
55
+ const now = new Date();
56
+ const session = {
57
+ ...data,
58
+ id,
59
+ createdAt: now,
60
+ updatedAt: now,
61
+ status: data.status || "active",
62
+ messageCount: data.messageCount || 0,
63
+ };
64
+ await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(session));
65
+ // Add to user's session list
66
+ if (data.userId) {
67
+ await this.redis.hset(this.getUserKey(data.userId), id, now.toISOString());
68
+ }
69
+ return session;
70
+ }
71
+ async findById(id) {
72
+ const data = await this.redis.get(this.getKey(id));
73
+ if (!data)
74
+ return null;
75
+ try {
76
+ return JSON.parse(data);
77
+ }
78
+ catch (error) {
79
+ console.error(`Error parsing session data for id ${id}:`, error);
80
+ return null;
81
+ }
82
+ }
83
+ async findActiveByUserId(userId) {
84
+ const sessionIds = await this.redis.hgetall(this.getUserKey(userId));
85
+ for (const sessionId of Object.keys(sessionIds)) {
86
+ const session = await this.findById(sessionId);
87
+ if (session && session.status === "active") {
88
+ return session;
89
+ }
90
+ }
91
+ return null;
92
+ }
93
+ async findByUserId(userId, limit = 100) {
94
+ const sessionIds = await this.redis.hgetall(this.getUserKey(userId));
95
+ const sessions = [];
96
+ for (const sessionId of Object.keys(sessionIds).slice(0, limit)) {
97
+ const session = await this.findById(sessionId);
98
+ if (session) {
99
+ sessions.push(session);
100
+ }
101
+ }
102
+ return sessions.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
103
+ }
104
+ async update(id, data) {
105
+ const existing = await this.findById(id);
106
+ if (!existing)
107
+ return null;
108
+ const updated = {
109
+ ...existing,
110
+ ...data,
111
+ updatedAt: new Date(),
112
+ };
113
+ await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(updated));
114
+ return updated;
115
+ }
116
+ async updateStatus(id, status, completedAt) {
117
+ return this.update(id, { status, completedAt });
118
+ }
119
+ async updateCollectedData(id, collectedData) {
120
+ return this.update(id, { collectedData });
121
+ }
122
+ async updateRouteState(id, route, state) {
123
+ return this.update(id, { currentRoute: route, currentState: state });
124
+ }
125
+ async incrementMessageCount(id) {
126
+ const session = await this.findById(id);
127
+ if (!session)
128
+ return null;
129
+ return this.update(id, {
130
+ messageCount: (session.messageCount || 0) + 1,
131
+ lastMessageAt: new Date(),
132
+ });
133
+ }
134
+ async delete(id) {
135
+ const result = await this.redis.del(this.getKey(id));
136
+ return result > 0;
137
+ }
138
+ }
139
+ /**
140
+ * Redis Message Repository
141
+ */
142
+ class RedisMessageRepository {
143
+ constructor(redis, keyPrefix, ttl) {
144
+ this.redis = redis;
145
+ this.keyPrefix = keyPrefix;
146
+ this.ttl = ttl;
147
+ }
148
+ getKey(id) {
149
+ return `${this.keyPrefix}message:${id}`;
150
+ }
151
+ getSessionKey(sessionId) {
152
+ return `${this.keyPrefix}session:${sessionId}:messages`;
153
+ }
154
+ async create(data) {
155
+ const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
156
+ const message = {
157
+ ...data,
158
+ id,
159
+ createdAt: new Date(),
160
+ };
161
+ await this.redis.setex(this.getKey(id), this.ttl, JSON.stringify(message));
162
+ await this.redis.hset(this.getSessionKey(data.sessionId), id, message.createdAt.toISOString());
163
+ return message;
164
+ }
165
+ async findById(id) {
166
+ const data = await this.redis.get(this.getKey(id));
167
+ if (!data)
168
+ return null;
169
+ try {
170
+ return JSON.parse(data);
171
+ }
172
+ catch (error) {
173
+ console.error(`Error parsing message data for id ${id}:`, error);
174
+ return null;
175
+ }
176
+ }
177
+ async findBySessionId(sessionId, limit = 1000) {
178
+ const messageIds = await this.redis.hgetall(this.getSessionKey(sessionId));
179
+ const messages = [];
180
+ for (const messageId of Object.keys(messageIds).slice(0, limit)) {
181
+ const message = await this.findById(messageId);
182
+ if (message) {
183
+ messages.push(message);
184
+ }
185
+ }
186
+ return messages.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
187
+ }
188
+ async findByUserId(userId, limit = 100) {
189
+ // Redis doesn't have efficient user-level querying
190
+ // This would require additional indexing
191
+ const pattern = `${this.keyPrefix}message:*`;
192
+ const keys = await this.redis.keys(pattern);
193
+ const messages = [];
194
+ for (const key of keys.slice(0, limit)) {
195
+ const data = await this.redis.get(key);
196
+ if (data) {
197
+ const message = JSON.parse(data);
198
+ if (message.userId === userId) {
199
+ messages.push(message);
200
+ }
201
+ }
202
+ }
203
+ return messages.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
204
+ }
205
+ async delete(id) {
206
+ const result = await this.redis.del(this.getKey(id));
207
+ return result > 0;
208
+ }
209
+ async deleteBySessionId(sessionId) {
210
+ const messageIds = await this.redis.hgetall(this.getSessionKey(sessionId));
211
+ const keys = Object.keys(messageIds).map((id) => this.getKey(id));
212
+ if (keys.length === 0)
213
+ return 0;
214
+ const result = await this.redis.del(...keys);
215
+ await this.redis.del(this.getSessionKey(sessionId));
216
+ return result;
217
+ }
218
+ async deleteByUserId(userId) {
219
+ const messages = await this.findByUserId(userId);
220
+ const keys = messages.map((m) => this.getKey(m.id));
221
+ if (keys.length === 0)
222
+ return 0;
223
+ return await this.redis.del(...keys);
224
+ }
225
+ }
226
+ //# 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,12 @@
1
+ /**
2
+ * Database adapters for persistence
3
+ */
4
+ export { PrismaAdapter } from "./PrismaAdapter";
5
+ export type { PrismaClient, FieldMappings, PrismaAdapterOptions, } from "./PrismaAdapter";
6
+ export { RedisAdapter } from "./RedisAdapter";
7
+ export type { RedisClient, RedisAdapterOptions } from "./RedisAdapter";
8
+ export { MongoAdapter } from "./MongoAdapter";
9
+ export type { MongoClient, MongoDatabase, MongoCollection, MongoAdapterOptions, } from "./MongoAdapter";
10
+ export { PostgreSQLAdapter } from "./PostgreSQLAdapter";
11
+ export type { PgClient, PgQueryResult, PostgreSQLAdapterOptions, } from "./PostgreSQLAdapter";
12
+ //# sourceMappingURL=index.d.ts.map