@falai/agent 3.4.3 → 3.4.4

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 (110) hide show
  1. package/dist/cjs/adapters/MemoryAdapter.d.ts +47 -0
  2. package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -0
  3. package/dist/cjs/adapters/MemoryAdapter.js +208 -0
  4. package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
  5. package/dist/cjs/adapters/MongoAdapter.d.ts +97 -0
  6. package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -0
  7. package/dist/cjs/adapters/MongoAdapter.js +200 -0
  8. package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
  9. package/dist/cjs/adapters/OpenSearchAdapter.d.ts +169 -0
  10. package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -0
  11. package/dist/cjs/adapters/OpenSearchAdapter.js +475 -0
  12. package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -0
  13. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +85 -0
  14. package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -0
  15. package/dist/cjs/adapters/PostgreSQLAdapter.js +312 -0
  16. package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
  17. package/dist/cjs/adapters/PrismaAdapter.d.ts +115 -0
  18. package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -0
  19. package/dist/cjs/adapters/PrismaAdapter.js +410 -0
  20. package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
  21. package/dist/cjs/adapters/RedisAdapter.d.ts +72 -0
  22. package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -0
  23. package/dist/cjs/adapters/RedisAdapter.js +290 -0
  24. package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
  25. package/dist/cjs/adapters/SQLiteAdapter.d.ts +86 -0
  26. package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -0
  27. package/dist/cjs/adapters/SQLiteAdapter.js +341 -0
  28. package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
  29. package/dist/cjs/adapters/index.d.ts +17 -0
  30. package/dist/cjs/adapters/index.d.ts.map +1 -0
  31. package/dist/cjs/adapters/index.js +21 -0
  32. package/dist/cjs/adapters/index.js.map +1 -0
  33. package/dist/cjs/adapters/sessionRow.d.ts +22 -0
  34. package/dist/cjs/adapters/sessionRow.d.ts.map +1 -0
  35. package/dist/cjs/adapters/sessionRow.js +52 -0
  36. package/dist/cjs/adapters/sessionRow.js.map +1 -0
  37. package/dist/cjs/constants/index.d.ts +1 -0
  38. package/dist/cjs/constants/index.d.ts.map +1 -0
  39. package/dist/cjs/constants/index.js +4 -0
  40. package/dist/cjs/constants/index.js.map +1 -0
  41. package/dist/cjs/core/Agent.d.ts +382 -0
  42. package/dist/cjs/core/Agent.d.ts.map +1 -0
  43. package/dist/cjs/core/Agent.js +1198 -0
  44. package/dist/cjs/core/Agent.js.map +1 -0
  45. package/dist/cjs/core/ResponseModal.d.ts +305 -0
  46. package/dist/cjs/core/ResponseModal.d.ts.map +1 -0
  47. package/dist/cjs/core/ResponseModal.js +1414 -0
  48. package/dist/cjs/core/ResponseModal.js.map +1 -0
  49. package/dist/cjs/core/ToolLoopExecutor.d.ts +133 -0
  50. package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -0
  51. package/dist/cjs/core/ToolLoopExecutor.js +568 -0
  52. package/dist/cjs/core/ToolLoopExecutor.js.map +1 -0
  53. package/dist/cjs/core/createAgent.d.ts +35 -0
  54. package/dist/cjs/core/createAgent.d.ts.map +1 -0
  55. package/dist/cjs/core/createAgent.js +39 -0
  56. package/dist/cjs/core/createAgent.js.map +1 -0
  57. package/dist/cjs/index.d.ts +61 -0
  58. package/dist/cjs/index.d.ts.map +1 -0
  59. package/dist/cjs/index.js +113 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/package.json +1 -0
  62. package/dist/cjs/providers/AnthropicProvider.d.ts +46 -0
  63. package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -0
  64. package/dist/cjs/providers/AnthropicProvider.js +50 -0
  65. package/dist/cjs/providers/AnthropicProvider.js.map +1 -0
  66. package/dist/cjs/providers/DeepSeekProvider.d.ts +47 -0
  67. package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -0
  68. package/dist/cjs/providers/DeepSeekProvider.js +42 -0
  69. package/dist/cjs/providers/DeepSeekProvider.js.map +1 -0
  70. package/dist/cjs/providers/FallbackAiProvider.d.ts +26 -0
  71. package/dist/cjs/providers/FallbackAiProvider.d.ts.map +1 -0
  72. package/dist/cjs/providers/FallbackAiProvider.js +54 -0
  73. package/dist/cjs/providers/FallbackAiProvider.js.map +1 -0
  74. package/dist/cjs/providers/GeminiProvider.d.ts +51 -0
  75. package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -0
  76. package/dist/cjs/providers/GeminiProvider.js +53 -0
  77. package/dist/cjs/providers/GeminiProvider.js.map +1 -0
  78. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +80 -0
  79. package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -0
  80. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +89 -0
  81. package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -0
  82. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +61 -0
  83. package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -0
  84. package/dist/cjs/providers/OpenAICompatibleProvider.js +58 -0
  85. package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -0
  86. package/dist/cjs/providers/OpenAIProvider.d.ts +40 -0
  87. package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -0
  88. package/dist/cjs/providers/OpenAIProvider.js +42 -0
  89. package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
  90. package/dist/cjs/providers/OpenRouterProvider.d.ts +56 -0
  91. package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -0
  92. package/dist/cjs/providers/OpenRouterProvider.js +45 -0
  93. package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
  94. package/dist/cjs/providers/ProviderAdapter.d.ts +126 -0
  95. package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -0
  96. package/dist/cjs/providers/ProviderAdapter.js +313 -0
  97. package/dist/cjs/providers/ProviderAdapter.js.map +1 -0
  98. package/dist/cjs/providers/ZaiProvider.d.ts +45 -0
  99. package/dist/cjs/providers/ZaiProvider.d.ts.map +1 -0
  100. package/dist/cjs/providers/ZaiProvider.js +51 -0
  101. package/dist/cjs/providers/ZaiProvider.js.map +1 -0
  102. package/dist/cjs/providers/index.d.ts +26 -0
  103. package/dist/cjs/providers/index.d.ts.map +1 -0
  104. package/dist/cjs/providers/index.js +30 -0
  105. package/dist/cjs/providers/index.js.map +1 -0
  106. package/dist/cjs/utils/streamingMessage.d.ts +48 -0
  107. package/dist/cjs/utils/streamingMessage.d.ts.map +1 -0
  108. package/dist/cjs/utils/streamingMessage.js +210 -0
  109. package/dist/cjs/utils/streamingMessage.js.map +1 -0
  110. package/package.json +1 -1
@@ -0,0 +1,85 @@
1
+ /**
2
+ * PostgreSQL adapter for persistence
3
+ * Raw SQL adapter for PostgreSQL with custom schemas
4
+ *
5
+ * ## v2 Migration
6
+ *
7
+ * If upgrading from v1, run the following migration on your sessions table:
8
+ *
9
+ * ```sql
10
+ * ALTER TABLE agent_sessions DROP COLUMN IF EXISTS pending_transition;
11
+ * ALTER TABLE agent_sessions ADD COLUMN IF NOT EXISTS pending_directive JSONB;
12
+ * ALTER TABLE agent_sessions ADD COLUMN IF NOT EXISTS signals JSONB;
13
+ * ```
14
+ *
15
+ * `pending_directive` stores the serialized `Directive` that the pipeline
16
+ * applies at the start of the next turn. `signals` is a reserved JSONB column
17
+ * for the v2.x Signals feature — pass-through only in v2.0.
18
+ */
19
+ import type { SessionRepository, MessageRepository, PersistenceAdapter } from "../types/index.js";
20
+ /**
21
+ * PostgreSQL query result interface
22
+ */
23
+ export interface PgQueryResult<T = Record<string, unknown>> {
24
+ rows: T[];
25
+ rowCount: number;
26
+ }
27
+ /**
28
+ * PostgreSQL client interface - matches pg (node-postgres)
29
+ */
30
+ export interface PgClient {
31
+ query<T = Record<string, unknown>>(sql: string, values?: unknown[]): Promise<PgQueryResult<T>>;
32
+ end(): Promise<void>;
33
+ }
34
+ /**
35
+ * Options for PostgreSQL adapter
36
+ */
37
+ export interface PostgreSQLAdapterOptions {
38
+ /**
39
+ * PostgreSQL client instance (from 'pg' package)
40
+ */
41
+ client: PgClient;
42
+ /**
43
+ * Table names (default: "agent_sessions" and "agent_messages")
44
+ */
45
+ tables?: {
46
+ sessions?: string;
47
+ messages?: string;
48
+ };
49
+ }
50
+ /**
51
+ * PostgreSQL Adapter - Provider-style API for PostgreSQL persistence
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * import { Client } from 'pg';
56
+ * import { Agent, PostgreSQLAdapter } from '@falai/agent';
57
+ *
58
+ * const client = new Client({
59
+ * host: 'localhost',
60
+ * port: 5432,
61
+ * database: 'myapp',
62
+ * user: 'postgres',
63
+ * password: 'password',
64
+ * });
65
+ * await client.connect();
66
+ *
67
+ * const agent = new Agent({
68
+ * name: "My Agent",
69
+ * provider: provider,
70
+ * persistence: {
71
+ * adapter: new PostgreSQLAdapter({ client }),
72
+ * userId: "user_123",
73
+ * },
74
+ * });
75
+ * ```
76
+ */
77
+ export declare class PostgreSQLAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
78
+ readonly sessionRepository: SessionRepository<TData>;
79
+ readonly messageRepository: MessageRepository;
80
+ private client;
81
+ constructor(options: PostgreSQLAdapterOptions);
82
+ initialize(): Promise<void>;
83
+ disconnect(): Promise<void>;
84
+ }
85
+ //# sourceMappingURL=PostgreSQLAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgreSQLAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/PostgreSQLAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EAIjB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAK3B;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,iBAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,kBAAkB,CAAC,KAAK,CAAC;IAClG,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,OAAO,CAAC,MAAM,CAAW;gBAEb,OAAO,EAAE,wBAAwB;IAiBvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0D3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ /**
3
+ * PostgreSQL adapter for persistence
4
+ * Raw SQL adapter for PostgreSQL with custom schemas
5
+ *
6
+ * ## v2 Migration
7
+ *
8
+ * If upgrading from v1, run the following migration on your sessions table:
9
+ *
10
+ * ```sql
11
+ * ALTER TABLE agent_sessions DROP COLUMN IF EXISTS pending_transition;
12
+ * ALTER TABLE agent_sessions ADD COLUMN IF NOT EXISTS pending_directive JSONB;
13
+ * ALTER TABLE agent_sessions ADD COLUMN IF NOT EXISTS signals JSONB;
14
+ * ```
15
+ *
16
+ * `pending_directive` stores the serialized `Directive` that the pipeline
17
+ * applies at the start of the next turn. `signals` is a reserved JSONB column
18
+ * for the v2.x Signals feature — pass-through only in v2.0.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.PostgreSQLAdapter = void 0;
22
+ const errors_js_1 = require("../types/errors.js");
23
+ const index_js_1 = require("../utils/index.js");
24
+ const sessionRow_js_1 = require("./sessionRow.js");
25
+ /**
26
+ * PostgreSQL Adapter - Provider-style API for PostgreSQL persistence
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { Client } from 'pg';
31
+ * import { Agent, PostgreSQLAdapter } from '@falai/agent';
32
+ *
33
+ * const client = new Client({
34
+ * host: 'localhost',
35
+ * port: 5432,
36
+ * database: 'myapp',
37
+ * user: 'postgres',
38
+ * password: 'password',
39
+ * });
40
+ * await client.connect();
41
+ *
42
+ * const agent = new Agent({
43
+ * name: "My Agent",
44
+ * provider: provider,
45
+ * persistence: {
46
+ * adapter: new PostgreSQLAdapter({ client }),
47
+ * userId: "user_123",
48
+ * },
49
+ * });
50
+ * ```
51
+ */
52
+ class PostgreSQLAdapter {
53
+ constructor(options) {
54
+ this.client = options.client;
55
+ const sessionTable = options.tables?.sessions || "agent_sessions";
56
+ const messageTable = options.tables?.messages || "agent_messages";
57
+ this.sessionRepository = new PostgreSQLSessionRepository(this.client, sessionTable);
58
+ this.messageRepository = new PostgreSQLMessageRepository(this.client, messageTable);
59
+ }
60
+ async initialize() {
61
+ // Create tables if they don't exist
62
+ const sessionTable = "agent_sessions";
63
+ const messageTable = "agent_messages";
64
+ await this.client.query(`
65
+ CREATE TABLE IF NOT EXISTS ${sessionTable} (
66
+ id VARCHAR(255) PRIMARY KEY,
67
+ user_id VARCHAR(255),
68
+ agent_name VARCHAR(255),
69
+ status VARCHAR(50) DEFAULT 'active',
70
+ current_flow VARCHAR(255),
71
+ current_step VARCHAR(255),
72
+ collected_data JSONB,
73
+ pending_directive JSONB,
74
+ signals JSONB,
75
+ message_count INTEGER DEFAULT 0,
76
+ last_message_at TIMESTAMP,
77
+ completed_at TIMESTAMP,
78
+ version INTEGER,
79
+ created_at TIMESTAMP DEFAULT NOW(),
80
+ updated_at TIMESTAMP DEFAULT NOW()
81
+ )
82
+ `);
83
+ // Migration: add the optimistic-concurrency version column to tables
84
+ // created by pre-2.4 versions
85
+ await this.client.query(`
86
+ ALTER TABLE ${sessionTable} ADD COLUMN IF NOT EXISTS version INTEGER
87
+ `);
88
+ await this.client.query(`
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
+ await this.client.query(`
93
+ CREATE TABLE IF NOT EXISTS ${messageTable} (
94
+ id VARCHAR(255) PRIMARY KEY,
95
+ session_id VARCHAR(255) NOT NULL,
96
+ user_id VARCHAR(255),
97
+ role VARCHAR(50) NOT NULL,
98
+ content TEXT NOT NULL,
99
+ flow VARCHAR(255),
100
+ step VARCHAR(255),
101
+ tool_calls JSONB,
102
+ event JSONB,
103
+ created_at TIMESTAMP DEFAULT NOW(),
104
+ FOREIGN KEY (session_id) REFERENCES ${sessionTable}(id) ON DELETE CASCADE
105
+ )
106
+ `);
107
+ await this.client.query(`
108
+ CREATE INDEX IF NOT EXISTS idx_messages_session_id ON ${messageTable}(session_id);
109
+ CREATE INDEX IF NOT EXISTS idx_messages_user_id ON ${messageTable}(user_id);
110
+ `);
111
+ }
112
+ async disconnect() {
113
+ await this.client.end();
114
+ }
115
+ }
116
+ exports.PostgreSQLAdapter = PostgreSQLAdapter;
117
+ /**
118
+ * PostgreSQL Session Repository
119
+ */
120
+ class PostgreSQLSessionRepository {
121
+ constructor(client, tableName) {
122
+ this.client = client;
123
+ this.tableName = tableName;
124
+ }
125
+ async create(data) {
126
+ const id = data.id || (0, index_js_1.createSessionId)();
127
+ const now = new Date();
128
+ const result = await this.client.query(`INSERT INTO ${this.tableName}
129
+ (id, user_id, agent_name, status, current_flow, current_step, collected_data, message_count, last_message_at, completed_at, version, created_at, updated_at)
130
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
131
+ RETURNING *`, [
132
+ id,
133
+ data.userId || null,
134
+ data.agentName || null,
135
+ data.status || "active",
136
+ data.currentFlow || null,
137
+ data.currentStep || null,
138
+ JSON.stringify(data.collectedData || {}),
139
+ data.messageCount || 0,
140
+ data.lastMessageAt ?? null,
141
+ data.completedAt ?? null,
142
+ data.version ?? 1,
143
+ now,
144
+ now,
145
+ ]);
146
+ return (0, sessionRow_js_1.deserializeSessionRow)(result.rows[0]);
147
+ }
148
+ async findById(id) {
149
+ const result = await this.client.query(`SELECT * FROM ${this.tableName} WHERE id = $1`, [id]);
150
+ return result.rows[0] ? (0, sessionRow_js_1.deserializeSessionRow)(result.rows[0]) : null;
151
+ }
152
+ async findActiveByUserId(userId) {
153
+ const result = await this.client.query(`SELECT * FROM ${this.tableName}
154
+ WHERE user_id = $1 AND status = 'active'
155
+ ORDER BY created_at DESC
156
+ LIMIT 1`, [userId]);
157
+ return result.rows[0] ? (0, sessionRow_js_1.deserializeSessionRow)(result.rows[0]) : null;
158
+ }
159
+ async findByUserId(userId, limit = 100) {
160
+ const result = await this.client.query(`SELECT * FROM ${this.tableName}
161
+ WHERE user_id = $1
162
+ ORDER BY created_at DESC
163
+ LIMIT $2`, [userId, limit]);
164
+ return result.rows.map((row) => (0, sessionRow_js_1.deserializeSessionRow)(row));
165
+ }
166
+ async update(id, data, options) {
167
+ const fields = [];
168
+ const values = [];
169
+ let paramIndex = 1;
170
+ if (data.status !== undefined) {
171
+ fields.push(`status = $${paramIndex++}`);
172
+ values.push(data.status);
173
+ }
174
+ if (data.collectedData !== undefined) {
175
+ fields.push(`collected_data = $${paramIndex++}`);
176
+ values.push(JSON.stringify(data.collectedData));
177
+ }
178
+ if (data.currentFlow !== undefined) {
179
+ fields.push(`current_flow = $${paramIndex++}`);
180
+ values.push(data.currentFlow);
181
+ }
182
+ if (data.currentStep !== undefined) {
183
+ fields.push(`current_step = $${paramIndex++}`);
184
+ values.push(data.currentStep);
185
+ }
186
+ if (data.messageCount !== undefined) {
187
+ fields.push(`message_count = $${paramIndex++}`);
188
+ values.push(data.messageCount);
189
+ }
190
+ if (data.lastMessageAt !== undefined) {
191
+ fields.push(`last_message_at = $${paramIndex++}`);
192
+ values.push(data.lastMessageAt);
193
+ }
194
+ if (data.completedAt !== undefined) {
195
+ fields.push(`completed_at = $${paramIndex++}`);
196
+ values.push(data.completedAt);
197
+ }
198
+ fields.push(`updated_at = $${paramIndex++}`);
199
+ values.push(new Date());
200
+ if (options?.expectedVersion !== undefined) {
201
+ const expectedVersion = options.expectedVersion;
202
+ // Compare-and-swap in a single statement: rows without a stored version
203
+ // (pre-2.4) are accepted and adopt expectedVersion as their base
204
+ fields.push(`version = COALESCE(version, $${paramIndex++}) + 1`);
205
+ values.push(expectedVersion);
206
+ const idParam = paramIndex++;
207
+ values.push(id);
208
+ const versionParam = paramIndex++;
209
+ values.push(expectedVersion);
210
+ const result = await this.client.query(`UPDATE ${this.tableName}
211
+ SET ${fields.join(", ")}
212
+ WHERE id = $${idParam} AND (version IS NULL OR version = $${versionParam})
213
+ RETURNING *`, values);
214
+ if (result.rows[0])
215
+ return (0, sessionRow_js_1.deserializeSessionRow)(result.rows[0]);
216
+ const existing = await this.findById(id);
217
+ if (!existing)
218
+ return null;
219
+ throw new errors_js_1.SessionConflictError(id, expectedVersion, existing.version);
220
+ }
221
+ fields.push(`version = COALESCE(version, 0) + 1`);
222
+ values.push(id);
223
+ const result = await this.client.query(`UPDATE ${this.tableName}
224
+ SET ${fields.join(", ")}
225
+ WHERE id = $${paramIndex}
226
+ RETURNING *`, values);
227
+ return result.rows[0] ? (0, sessionRow_js_1.deserializeSessionRow)(result.rows[0]) : null;
228
+ }
229
+ async updateStatus(id, status, completedAt) {
230
+ return await this.update(id, { status, completedAt });
231
+ }
232
+ async updateCollectedData(id, collectedData) {
233
+ return await this.update(id, { collectedData });
234
+ }
235
+ async updateFlowStep(id, flow, step) {
236
+ return await this.update(id, {
237
+ currentFlow: flow,
238
+ currentStep: step,
239
+ });
240
+ }
241
+ async incrementMessageCount(id) {
242
+ const result = await this.client.query(`UPDATE ${this.tableName}
243
+ SET message_count = message_count + 1,
244
+ last_message_at = NOW(),
245
+ updated_at = NOW()
246
+ WHERE id = $1
247
+ RETURNING *`, [id]);
248
+ return result.rows[0] ? (0, sessionRow_js_1.deserializeSessionRow)(result.rows[0]) : null;
249
+ }
250
+ async delete(id) {
251
+ const result = await this.client.query(`DELETE FROM ${this.tableName} WHERE id = $1`, [id]);
252
+ return result.rowCount > 0;
253
+ }
254
+ }
255
+ /**
256
+ * PostgreSQL Message Repository
257
+ */
258
+ class PostgreSQLMessageRepository {
259
+ constructor(client, tableName) {
260
+ this.client = client;
261
+ this.tableName = tableName;
262
+ }
263
+ async create(data) {
264
+ const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
265
+ const result = await this.client.query(`INSERT INTO ${this.tableName}
266
+ (id, session_id, user_id, role, content, flow, step, tool_calls, event, created_at)
267
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW())
268
+ RETURNING *`, [
269
+ id,
270
+ data.sessionId,
271
+ data.userId || null,
272
+ data.role,
273
+ data.content,
274
+ data.flow || null,
275
+ data.step || null,
276
+ JSON.stringify(data.toolCalls || null),
277
+ JSON.stringify(data.event || null),
278
+ ]);
279
+ return result.rows[0];
280
+ }
281
+ async findById(id) {
282
+ const result = await this.client.query(`SELECT * FROM ${this.tableName} WHERE id = $1`, [id]);
283
+ return result.rows[0] || null;
284
+ }
285
+ async findBySessionId(sessionId, limit = 1000) {
286
+ const result = await this.client.query(`SELECT * FROM ${this.tableName}
287
+ WHERE session_id = $1
288
+ ORDER BY created_at ASC
289
+ LIMIT $2`, [sessionId, limit]);
290
+ return result.rows;
291
+ }
292
+ async findByUserId(userId, limit = 100) {
293
+ const result = await this.client.query(`SELECT * FROM ${this.tableName}
294
+ WHERE user_id = $1
295
+ ORDER BY created_at DESC
296
+ LIMIT $2`, [userId, limit]);
297
+ return result.rows;
298
+ }
299
+ async delete(id) {
300
+ const result = await this.client.query(`DELETE FROM ${this.tableName} WHERE id = $1`, [id]);
301
+ return result.rowCount > 0;
302
+ }
303
+ async deleteBySessionId(sessionId) {
304
+ const result = await this.client.query(`DELETE FROM ${this.tableName} WHERE session_id = $1`, [sessionId]);
305
+ return result.rowCount;
306
+ }
307
+ async deleteByUserId(userId) {
308
+ const result = await this.client.query(`DELETE FROM ${this.tableName} WHERE user_id = $1`, [userId]);
309
+ return result.rowCount;
310
+ }
311
+ }
312
+ //# sourceMappingURL=PostgreSQLAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgreSQLAdapter.js","sourceRoot":"","sources":["../../../src/adapters/PostgreSQLAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Prisma adapter for persistence
3
+ * Simple, provider-like API with automatic schema creation
4
+ */
5
+ import type { SessionRepository, MessageRepository, SessionData, MessageData, PersistenceAdapter } from "../types/index.js";
6
+ /**
7
+ * Prisma model operations
8
+ */
9
+ export interface PrismaModel {
10
+ create: (params: {
11
+ data: Record<string, unknown>;
12
+ }) => Promise<Record<string, unknown>>;
13
+ findUnique: (params: {
14
+ where: Record<string, unknown>;
15
+ }) => Promise<Record<string, unknown> | null>;
16
+ findFirst: (params: {
17
+ where: Record<string, unknown>;
18
+ orderBy?: Record<string, string>;
19
+ }) => Promise<Record<string, unknown> | null>;
20
+ findMany: (params: {
21
+ where: Record<string, unknown>;
22
+ orderBy?: Record<string, string>;
23
+ take?: number;
24
+ }) => Promise<Array<Record<string, unknown>>>;
25
+ update: (params: {
26
+ where: Record<string, unknown>;
27
+ data: Record<string, unknown>;
28
+ }) => Promise<Record<string, unknown>>;
29
+ delete: (params: {
30
+ where: Record<string, unknown>;
31
+ }) => Promise<Record<string, unknown>>;
32
+ deleteMany: (params: {
33
+ where: Record<string, unknown>;
34
+ }) => Promise<{
35
+ count: number;
36
+ }>;
37
+ }
38
+ /**
39
+ * Prisma client interface - matches the shape of a generated Prisma client
40
+ */
41
+ export interface PrismaClient extends Record<string, unknown> {
42
+ $queryRaw?: <T = unknown>(query: TemplateStringsArray | string, ...values: unknown[]) => Promise<T>;
43
+ $executeRaw?: (query: TemplateStringsArray | string, ...values: unknown[]) => Promise<number>;
44
+ $disconnect?: () => Promise<void>;
45
+ }
46
+ /**
47
+ * Configuration for field mappings
48
+ */
49
+ export interface FieldMappings {
50
+ sessions?: Partial<Record<keyof SessionData, string>>;
51
+ messages?: Partial<Record<keyof MessageData, string>>;
52
+ }
53
+ /**
54
+ * Options for creating a Prisma adapter
55
+ */
56
+ export interface PrismaAdapterOptions {
57
+ /**
58
+ * Prisma client instance
59
+ */
60
+ prisma: PrismaClient;
61
+ /**
62
+ * Table/model names (defaults to 'agentSession' and 'agentMessage')
63
+ */
64
+ tables?: {
65
+ sessions?: string;
66
+ messages?: string;
67
+ };
68
+ /**
69
+ * Field mappings (optional, if your schema uses different field names)
70
+ */
71
+ fieldMappings?: FieldMappings;
72
+ /**
73
+ * Whether to auto-create tables if they don't exist (default: false)
74
+ * Note: Only works if your Prisma client has $executeRaw method
75
+ */
76
+ autoMigrate?: boolean;
77
+ }
78
+ /**
79
+ * Prisma Adapter - Provider-style API for Prisma persistence
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * import { PrismaClient } from '@prisma/client';
84
+ * import { Agent, PrismaAdapter } from '@falai/agent';
85
+ *
86
+ * const prisma = new PrismaClient();
87
+ *
88
+ * const agent = new Agent({
89
+ * name: "My Agent",
90
+ * provider: provider,
91
+ * persistence: {
92
+ * adapter: new PrismaAdapter({ prisma }),
93
+ * userId: "user_123",
94
+ * },
95
+ * });
96
+ * ```
97
+ */
98
+ export declare class PrismaAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
99
+ readonly sessionRepository: SessionRepository<TData>;
100
+ readonly messageRepository: MessageRepository;
101
+ private prisma;
102
+ private options;
103
+ private initialized;
104
+ constructor(options: PrismaAdapterOptions);
105
+ /**
106
+ * Initialize the adapter (check/create tables)
107
+ * Called automatically if autoMigrate is enabled
108
+ */
109
+ initialize(): Promise<void>;
110
+ /**
111
+ * Disconnect from the database
112
+ */
113
+ disconnect(): Promise<void>;
114
+ }
115
+ //# sourceMappingURL=PrismaAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrismaAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/PrismaAdapter.ts"],"names":[],"mappings":"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"}