@falai/agent 0.3.11 → 0.3.12
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/README.md +92 -0
- package/dist/adapters/PrismaAdapter.d.ts +115 -0
- package/dist/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/adapters/PrismaAdapter.js +331 -0
- package/dist/adapters/PrismaAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +5 -0
- package/dist/adapters/index.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 +335 -0
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/adapters/index.d.ts +6 -0
- package/dist/cjs/adapters/index.d.ts.map +1 -0
- package/dist/cjs/adapters/index.js +9 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/core/Agent.d.ts +10 -0
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +23 -0
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +77 -0
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/core/PersistenceManager.js +153 -0
- package/dist/cjs/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +3 -0
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/agent.js.map +1 -1
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/persistence.d.ts +194 -0
- package/dist/cjs/types/persistence.d.ts.map +1 -0
- package/dist/cjs/types/persistence.js +7 -0
- package/dist/cjs/types/persistence.js.map +1 -0
- package/dist/core/Agent.d.ts +10 -0
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +23 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/PersistenceManager.d.ts +77 -0
- package/dist/core/PersistenceManager.d.ts.map +1 -0
- package/dist/core/PersistenceManager.js +149 -0
- package/dist/core/PersistenceManager.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/types/agent.d.ts +3 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/persistence.d.ts +194 -0
- package/dist/types/persistence.d.ts.map +1 -0
- package/dist/types/persistence.js +6 -0
- package/dist/types/persistence.js.map +1 -0
- package/docs/PERSISTENCE.md +419 -0
- package/examples/prisma-persistence.ts +313 -0
- package/examples/prisma-schema.example.prisma +74 -0
- package/package.json +9 -1
- package/src/adapters/PrismaAdapter.ts +510 -0
- package/src/adapters/index.ts +10 -0
- package/src/core/Agent.ts +31 -0
- package/src/core/PersistenceManager.ts +222 -0
- package/src/index.ts +21 -0
- package/src/types/agent.ts +3 -0
- package/src/types/index.ts +14 -0
- package/src/types/persistence.ts +234 -0
package/README.md
CHANGED
|
@@ -57,6 +57,27 @@
|
|
|
57
57
|
- **Domain Registry** - Organize capabilities by domain
|
|
58
58
|
- **Context Awareness** - Tools receive typed context automatically
|
|
59
59
|
|
|
60
|
+
</td>
|
|
61
|
+
</tr>
|
|
62
|
+
<tr>
|
|
63
|
+
<td width="50%">
|
|
64
|
+
|
|
65
|
+
### 💾 **Optional Persistence**
|
|
66
|
+
|
|
67
|
+
- **Provider Pattern** - Simple API like AI providers
|
|
68
|
+
- **Prisma Ready** - Built-in ORM adapter
|
|
69
|
+
- **Auto-save** - Automatic session & message persistence
|
|
70
|
+
- **Extensible** - Create adapters for any database
|
|
71
|
+
|
|
72
|
+
</td>
|
|
73
|
+
<td width="50%">
|
|
74
|
+
|
|
75
|
+
### 🎯 **Smart Routing**
|
|
76
|
+
|
|
77
|
+
- **Deterministic IDs** - Consistent identifiers across restarts
|
|
78
|
+
- **Route Scoping** - Control tool access per route
|
|
79
|
+
- **Rules & Prohibitions** - Fine-grained behavior control
|
|
80
|
+
|
|
60
81
|
</td>
|
|
61
82
|
</tr>
|
|
62
83
|
</table>
|
|
@@ -225,6 +246,7 @@ See [streaming-agent.ts](./examples/streaming-agent.ts) for complete examples.
|
|
|
225
246
|
- **[Getting Started](./docs/GETTING_STARTED.md)** - Your first agent in 5 minutes
|
|
226
247
|
- **[Constructor Options](./docs/CONSTRUCTOR_OPTIONS.md)** - Declarative vs Fluent API patterns
|
|
227
248
|
- **[Context Management](./docs/CONTEXT_MANAGEMENT.md)** - Persistent conversations & state management
|
|
249
|
+
- **[Persistence](./docs/PERSISTENCE.md)** - Optional database persistence with Prisma **(NEW!)**
|
|
228
250
|
- **[API Reference](./docs/API_REFERENCE.md)** - Complete API documentation
|
|
229
251
|
- **[Architecture](./docs/STRUCTURE.md)** - Package structure and design principles
|
|
230
252
|
|
|
@@ -595,6 +617,66 @@ const saveTool = defineTool("save_data", async (ctx, data) => {
|
|
|
595
617
|
|
|
596
618
|
See [Context Management Guide](./docs/CONTEXT_MANAGEMENT.md) for complete patterns and best practices.
|
|
597
619
|
|
|
620
|
+
### 💾 Optional Database Persistence (NEW!)
|
|
621
|
+
|
|
622
|
+
For **production applications** that need to persist sessions and messages:
|
|
623
|
+
|
|
624
|
+
```typescript
|
|
625
|
+
import { Agent, PrismaAdapter } from "@falai/agent";
|
|
626
|
+
import { PrismaClient } from "@prisma/client";
|
|
627
|
+
|
|
628
|
+
const prisma = new PrismaClient();
|
|
629
|
+
|
|
630
|
+
const agent = new Agent({
|
|
631
|
+
name: "My Agent",
|
|
632
|
+
ai: provider,
|
|
633
|
+
// ✨ Just add this!
|
|
634
|
+
persistence: {
|
|
635
|
+
adapter: new PrismaAdapter({ prisma }),
|
|
636
|
+
autoSave: true,
|
|
637
|
+
userId: "user_123",
|
|
638
|
+
},
|
|
639
|
+
});
|
|
640
|
+
|
|
641
|
+
// Access persistence manager
|
|
642
|
+
const persistence = agent.getPersistenceManager();
|
|
643
|
+
|
|
644
|
+
// Create a session
|
|
645
|
+
const session = await persistence.createSession({
|
|
646
|
+
userId: "user_123",
|
|
647
|
+
agentName: "My Agent",
|
|
648
|
+
});
|
|
649
|
+
|
|
650
|
+
// Load history
|
|
651
|
+
const history = await persistence.loadSessionHistory(session.id);
|
|
652
|
+
|
|
653
|
+
// Generate response
|
|
654
|
+
const response = await agent.respond({ history });
|
|
655
|
+
|
|
656
|
+
// Optionally Save message (automatically saves if autoSave: true)
|
|
657
|
+
await persistence.saveMessage({
|
|
658
|
+
sessionId: session.id,
|
|
659
|
+
role: "agent",
|
|
660
|
+
content: response.message,
|
|
661
|
+
});
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
**Features:**
|
|
665
|
+
|
|
666
|
+
- ✅ **Provider Pattern** - Simple API like AI providers
|
|
667
|
+
- ✅ **Prisma Built-in** - Ready-to-use ORM adapter
|
|
668
|
+
- ✅ **Auto-save** - Automatic message tracking
|
|
669
|
+
- ✅ **Custom Adapters** - Create for any database (MongoDB, Redis, etc.)
|
|
670
|
+
- ✅ **Lifecycle Integration** - Works seamlessly with context hooks
|
|
671
|
+
|
|
672
|
+
**Setup (3 steps):**
|
|
673
|
+
|
|
674
|
+
1. Install: `npm install @prisma/client prisma`
|
|
675
|
+
2. Copy schema from `examples/prisma-schema.example.prisma`
|
|
676
|
+
3. Run: `npx prisma generate && npx prisma migrate dev`
|
|
677
|
+
|
|
678
|
+
See [Persistence Guide](./docs/PERSISTENCE.md) for complete documentation and custom adapter examples.
|
|
679
|
+
|
|
598
680
|
### 📖 Domain Glossary
|
|
599
681
|
|
|
600
682
|
Teach your agent business-specific language:
|
|
@@ -751,6 +833,16 @@ const openrouterProvider = new OpenRouterProvider({
|
|
|
751
833
|
- 🔧 Two approaches: lifecycle hooks vs context provider
|
|
752
834
|
- 📝 Complete onboarding flow across multiple turns
|
|
753
835
|
|
|
836
|
+
### 💾 [Prisma Persistence](./examples/prisma-persistence.ts) **(NEW!)**
|
|
837
|
+
|
|
838
|
+
**Production-ready database persistence:**
|
|
839
|
+
|
|
840
|
+
- ✨ Provider pattern - simple as `new PrismaAdapter({ prisma })`
|
|
841
|
+
- 🗄️ Automatic session and message persistence
|
|
842
|
+
- 🔄 Seamless lifecycle hook integration
|
|
843
|
+
- 📊 Complete examples: basic, advanced, and minimal
|
|
844
|
+
- 🎯 3-step setup with Prisma ORM
|
|
845
|
+
|
|
754
846
|
### 🏢 [Business Onboarding](./examples/business-onboarding.ts)
|
|
755
847
|
|
|
756
848
|
**Production-ready business onboarding with advanced patterns:**
|
|
@@ -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/persistence";
|
|
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
|
+
* ai: provider,
|
|
91
|
+
* persistence: {
|
|
92
|
+
* adapter: new PrismaAdapter({ prisma }),
|
|
93
|
+
* userId: "user_123",
|
|
94
|
+
* },
|
|
95
|
+
* });
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare class PrismaAdapter implements PersistenceAdapter {
|
|
99
|
+
readonly sessionRepository: SessionRepository;
|
|
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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"}
|
|
@@ -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":"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"}
|
|
@@ -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,iBAAiB,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|