@rudderjs/ai 1.11.2 → 1.13.0
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/agent-run-store.d.ts +161 -0
- package/dist/agent-run-store.d.ts.map +1 -0
- package/dist/agent-run-store.js +98 -0
- package/dist/agent-run-store.js.map +1 -0
- package/dist/agent.d.ts +177 -8
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +100 -1
- package/dist/agent.js.map +1 -1
- package/dist/chat-mentions.d.ts +59 -0
- package/dist/chat-mentions.d.ts.map +1 -0
- package/dist/chat-mentions.js +81 -0
- package/dist/chat-mentions.js.map +1 -0
- package/dist/continuation-validation.d.ts +85 -0
- package/dist/continuation-validation.d.ts.map +1 -0
- package/dist/continuation-validation.js +166 -0
- package/dist/continuation-validation.js.map +1 -0
- package/dist/conversation-orm/index.d.ts +109 -0
- package/dist/conversation-orm/index.d.ts.map +1 -0
- package/dist/conversation-orm/index.js +211 -0
- package/dist/conversation-orm/index.js.map +1 -0
- package/dist/conversation-persistence.d.ts.map +1 -1
- package/dist/conversation-persistence.js +27 -3
- package/dist/conversation-persistence.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -7
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@rudderjs/ai/conversation-orm` - ORM-backed {@link ConversationStore}.
|
|
3
|
+
*
|
|
4
|
+
* Production-grade replacement for `MemoryConversationStore` (which is
|
|
5
|
+
* single-process, in-memory, and loses every thread on restart). Persists
|
|
6
|
+
* conversation threads and their messages via the registered `@rudderjs/orm`
|
|
7
|
+
* adapter - works across web processes, queue workers, and horizontally
|
|
8
|
+
* scaled deployments. Mirrors the `@rudderjs/ai/memory-orm` /
|
|
9
|
+
* `@rudderjs/ai/budget-orm` pattern.
|
|
10
|
+
*
|
|
11
|
+
* Wire it as the conversation store:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { setConversationStore } from '@rudderjs/ai'
|
|
15
|
+
* import { OrmConversationStore } from '@rudderjs/ai/conversation-orm'
|
|
16
|
+
*
|
|
17
|
+
* setConversationStore(new OrmConversationStore())
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The schema lives at {@link conversationOrmPrismaSchema} - copy it into your
|
|
21
|
+
* Prisma schema (or a new `prisma/schema/<file>.prisma` if you use the
|
|
22
|
+
* multi-file setup). On the native engine, add an equivalent migration; on
|
|
23
|
+
* Drizzle, define matching tables and register them via `tables: { ... }`.
|
|
24
|
+
*
|
|
25
|
+
* # Adapter coverage
|
|
26
|
+
*
|
|
27
|
+
* - Prisma - works out of the box; copy {@link conversationOrmPrismaSchema}.
|
|
28
|
+
* - Native - add a migration with the same columns.
|
|
29
|
+
* - Drizzle - define the two tables and register them on the `drizzle()`
|
|
30
|
+
* config.
|
|
31
|
+
*
|
|
32
|
+
* # Ordering & concurrency
|
|
33
|
+
*
|
|
34
|
+
* Messages carry a monotonic per-thread `position` so `load()` returns them
|
|
35
|
+
* in append order regardless of timestamp granularity. `append()` reads the
|
|
36
|
+
* current max position and assigns the next slots; like
|
|
37
|
+
* `OrmBudgetStorage.checkAndDebit`, the read-then-write is not isolated, so
|
|
38
|
+
* two concurrent appends to the SAME thread could collide on a position.
|
|
39
|
+
* Conversation threads are single-writer in practice (one user, one turn at
|
|
40
|
+
* a time), so this is a non-issue for typical apps. File an issue if you hit
|
|
41
|
+
* it; strict ordering needs a serializable transaction or a DB sequence.
|
|
42
|
+
*/
|
|
43
|
+
import { Model } from '@rudderjs/orm';
|
|
44
|
+
import type { AiMessage, ConversationStore, ConversationStoreListEntry, ConversationStoreMeta } from '../types.js';
|
|
45
|
+
/**
|
|
46
|
+
* The thread row backing {@link OrmConversationStore}. Exposed so apps that
|
|
47
|
+
* want their own queries (admin views, analytics) can use
|
|
48
|
+
* `AiConversationRecord.where(...).get()` directly.
|
|
49
|
+
*
|
|
50
|
+
* `userId` / `agent` mirror {@link ConversationStoreMeta} - `userId` scopes
|
|
51
|
+
* `list()`, `agent` carries the thread-segregation key the auto-persist
|
|
52
|
+
* machinery uses to keep one user's threads per agent class apart.
|
|
53
|
+
*/
|
|
54
|
+
export declare class AiConversationRecord extends Model {
|
|
55
|
+
static table: string;
|
|
56
|
+
static fillable: string[];
|
|
57
|
+
id: string;
|
|
58
|
+
title: string;
|
|
59
|
+
userId: string | null;
|
|
60
|
+
agent: string | null;
|
|
61
|
+
createdAt: Date;
|
|
62
|
+
updatedAt: Date | null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* One message row in a thread. `content` and `toolCalls` are JSON-encoded
|
|
66
|
+
* strings (so a `string` content and a `ContentPart[]` content both
|
|
67
|
+
* round-trip through a portable `text` column); `position` orders them.
|
|
68
|
+
*/
|
|
69
|
+
export declare class AiConversationMessageRecord extends Model {
|
|
70
|
+
static table: string;
|
|
71
|
+
static fillable: string[];
|
|
72
|
+
id: string;
|
|
73
|
+
conversationId: string;
|
|
74
|
+
position: number;
|
|
75
|
+
role: string;
|
|
76
|
+
/** JSON-encoded `string | ContentPart[]`. */
|
|
77
|
+
content: string;
|
|
78
|
+
toolCallId: string | null;
|
|
79
|
+
/** JSON-encoded `ToolCall[]` or null. */
|
|
80
|
+
toolCalls: string | null;
|
|
81
|
+
createdAt: Date;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* {@link ConversationStore} implementation that persists rows to the
|
|
85
|
+
* registered ORM adapter. Designed for production use - the in-process
|
|
86
|
+
* `MemoryConversationStore` is for tests and dev.
|
|
87
|
+
*/
|
|
88
|
+
export declare class OrmConversationStore implements ConversationStore {
|
|
89
|
+
create(title?: string, meta?: ConversationStoreMeta): Promise<string>;
|
|
90
|
+
load(conversationId: string): Promise<AiMessage[]>;
|
|
91
|
+
append(conversationId: string, messages: AiMessage[]): Promise<void>;
|
|
92
|
+
setTitle(conversationId: string, title: string): Promise<void>;
|
|
93
|
+
list(userId?: string): Promise<ConversationStoreListEntry[]>;
|
|
94
|
+
delete(conversationId: string): Promise<void>;
|
|
95
|
+
/** Throw the same not-found error shape as `MemoryConversationStore`. */
|
|
96
|
+
private requireThread;
|
|
97
|
+
/** Next monotonic position for the thread (0 when empty). */
|
|
98
|
+
private nextPosition;
|
|
99
|
+
}
|
|
100
|
+
/** Convenience factory mirroring `ormBudgetStorage()` / `OrmUserMemory`. */
|
|
101
|
+
export declare function ormConversationStore(): OrmConversationStore;
|
|
102
|
+
/**
|
|
103
|
+
* Reference Prisma schema for `OrmConversationStore`. Copy into your
|
|
104
|
+
* `prisma/schema/<file>.prisma`. SQLite stores the `text` content as TEXT;
|
|
105
|
+
* Postgres as `text`. The `@@index` keeps `list()` (by user) and `load()`
|
|
106
|
+
* (by thread, ordered) cheap.
|
|
107
|
+
*/
|
|
108
|
+
export declare const conversationOrmPrismaSchema = "model AiConversation {\n id String @id @default(cuid())\n title String\n userId String?\n /// Thread-segregation key - the agent class name by default\n agent String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n}\n\nmodel AiConversationMessage {\n id String @id @default(cuid())\n conversationId String\n /// Monotonic per-thread ordering\n position Int\n role String\n /// JSON-encoded `string | ContentPart[]`\n content String\n toolCallId String?\n /// JSON-encoded `ToolCall[]` or null\n toolCalls String?\n createdAt DateTime @default(now())\n\n @@index([conversationId, position])\n}\n";
|
|
109
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation-orm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AAIpB;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,OAAgB,KAAK,SAAsB;IAC3C,OAAgB,QAAQ,WAA4C;IAE5D,EAAE,EAAS,MAAM,CAAA;IACjB,KAAK,EAAM,MAAM,CAAA;IACjB,MAAM,EAAK,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAM,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;CAC/B;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,OAAgB,KAAK,SAA6B;IAClD,OAAgB,QAAQ,WAA+E;IAE/F,EAAE,EAAc,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAQ,MAAM,CAAA;IACtB,IAAI,EAAY,MAAM,CAAA;IAC9B,6CAA6C;IACrC,OAAO,EAAS,MAAM,CAAA;IACtB,UAAU,EAAM,MAAM,GAAG,IAAI,CAAA;IACrC,yCAAyC;IACjC,SAAS,EAAO,MAAM,GAAG,IAAI,CAAA;IAC7B,SAAS,EAAO,IAAI,CAAA;CAC7B;AAID;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IACtD,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IASrE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IASlD,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAO5D,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,yEAAyE;YAC3D,aAAa;IAK3B,6DAA6D;YAC/C,YAAY;CAO3B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,IAAI,oBAAoB,CAE3D;AAID;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,+tBA2BvC,CAAA"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@rudderjs/ai/conversation-orm` - ORM-backed {@link ConversationStore}.
|
|
3
|
+
*
|
|
4
|
+
* Production-grade replacement for `MemoryConversationStore` (which is
|
|
5
|
+
* single-process, in-memory, and loses every thread on restart). Persists
|
|
6
|
+
* conversation threads and their messages via the registered `@rudderjs/orm`
|
|
7
|
+
* adapter - works across web processes, queue workers, and horizontally
|
|
8
|
+
* scaled deployments. Mirrors the `@rudderjs/ai/memory-orm` /
|
|
9
|
+
* `@rudderjs/ai/budget-orm` pattern.
|
|
10
|
+
*
|
|
11
|
+
* Wire it as the conversation store:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { setConversationStore } from '@rudderjs/ai'
|
|
15
|
+
* import { OrmConversationStore } from '@rudderjs/ai/conversation-orm'
|
|
16
|
+
*
|
|
17
|
+
* setConversationStore(new OrmConversationStore())
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* The schema lives at {@link conversationOrmPrismaSchema} - copy it into your
|
|
21
|
+
* Prisma schema (or a new `prisma/schema/<file>.prisma` if you use the
|
|
22
|
+
* multi-file setup). On the native engine, add an equivalent migration; on
|
|
23
|
+
* Drizzle, define matching tables and register them via `tables: { ... }`.
|
|
24
|
+
*
|
|
25
|
+
* # Adapter coverage
|
|
26
|
+
*
|
|
27
|
+
* - Prisma - works out of the box; copy {@link conversationOrmPrismaSchema}.
|
|
28
|
+
* - Native - add a migration with the same columns.
|
|
29
|
+
* - Drizzle - define the two tables and register them on the `drizzle()`
|
|
30
|
+
* config.
|
|
31
|
+
*
|
|
32
|
+
* # Ordering & concurrency
|
|
33
|
+
*
|
|
34
|
+
* Messages carry a monotonic per-thread `position` so `load()` returns them
|
|
35
|
+
* in append order regardless of timestamp granularity. `append()` reads the
|
|
36
|
+
* current max position and assigns the next slots; like
|
|
37
|
+
* `OrmBudgetStorage.checkAndDebit`, the read-then-write is not isolated, so
|
|
38
|
+
* two concurrent appends to the SAME thread could collide on a position.
|
|
39
|
+
* Conversation threads are single-writer in practice (one user, one turn at
|
|
40
|
+
* a time), so this is a non-issue for typical apps. File an issue if you hit
|
|
41
|
+
* it; strict ordering needs a serializable transaction or a DB sequence.
|
|
42
|
+
*/
|
|
43
|
+
import { Model } from '@rudderjs/orm';
|
|
44
|
+
// ─── ORM Models ───────────────────────────────────────────
|
|
45
|
+
/**
|
|
46
|
+
* The thread row backing {@link OrmConversationStore}. Exposed so apps that
|
|
47
|
+
* want their own queries (admin views, analytics) can use
|
|
48
|
+
* `AiConversationRecord.where(...).get()` directly.
|
|
49
|
+
*
|
|
50
|
+
* `userId` / `agent` mirror {@link ConversationStoreMeta} - `userId` scopes
|
|
51
|
+
* `list()`, `agent` carries the thread-segregation key the auto-persist
|
|
52
|
+
* machinery uses to keep one user's threads per agent class apart.
|
|
53
|
+
*/
|
|
54
|
+
export class AiConversationRecord extends Model {
|
|
55
|
+
static table = 'aiConversation';
|
|
56
|
+
static fillable = ['title', 'userId', 'agent', 'updatedAt'];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* One message row in a thread. `content` and `toolCalls` are JSON-encoded
|
|
60
|
+
* strings (so a `string` content and a `ContentPart[]` content both
|
|
61
|
+
* round-trip through a portable `text` column); `position` orders them.
|
|
62
|
+
*/
|
|
63
|
+
export class AiConversationMessageRecord extends Model {
|
|
64
|
+
static table = 'aiConversationMessage';
|
|
65
|
+
static fillable = ['conversationId', 'position', 'role', 'content', 'toolCallId', 'toolCalls'];
|
|
66
|
+
}
|
|
67
|
+
// ─── ConversationStore adapter ────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* {@link ConversationStore} implementation that persists rows to the
|
|
70
|
+
* registered ORM adapter. Designed for production use - the in-process
|
|
71
|
+
* `MemoryConversationStore` is for tests and dev.
|
|
72
|
+
*/
|
|
73
|
+
export class OrmConversationStore {
|
|
74
|
+
async create(title, meta) {
|
|
75
|
+
const data = { title: title ?? 'New conversation' };
|
|
76
|
+
if (meta?.userId !== undefined)
|
|
77
|
+
data['userId'] = meta.userId;
|
|
78
|
+
if (meta?.agent !== undefined)
|
|
79
|
+
data['agent'] = meta.agent;
|
|
80
|
+
const created = await AiConversationRecord.create(data);
|
|
81
|
+
return created.id;
|
|
82
|
+
}
|
|
83
|
+
async load(conversationId) {
|
|
84
|
+
await this.requireThread(conversationId);
|
|
85
|
+
const rows = await AiConversationMessageRecord
|
|
86
|
+
.where('conversationId', conversationId)
|
|
87
|
+
.orderBy('position', 'ASC')
|
|
88
|
+
.get();
|
|
89
|
+
return rows.map(rowToMessage);
|
|
90
|
+
}
|
|
91
|
+
async append(conversationId, messages) {
|
|
92
|
+
await this.requireThread(conversationId);
|
|
93
|
+
if (messages.length === 0)
|
|
94
|
+
return;
|
|
95
|
+
let position = await this.nextPosition(conversationId);
|
|
96
|
+
for (const message of messages) {
|
|
97
|
+
await AiConversationMessageRecord.create(messageToRow(conversationId, position, message));
|
|
98
|
+
position++;
|
|
99
|
+
}
|
|
100
|
+
await AiConversationRecord.where('id', conversationId).updateAll({ updatedAt: new Date() });
|
|
101
|
+
}
|
|
102
|
+
async setTitle(conversationId, title) {
|
|
103
|
+
const updated = await AiConversationRecord
|
|
104
|
+
.where('id', conversationId)
|
|
105
|
+
.updateAll({ title, updatedAt: new Date() });
|
|
106
|
+
if (!updated)
|
|
107
|
+
throw notFound(conversationId);
|
|
108
|
+
}
|
|
109
|
+
async list(userId) {
|
|
110
|
+
let q = AiConversationRecord.query();
|
|
111
|
+
if (userId != null)
|
|
112
|
+
q = q.where('userId', userId);
|
|
113
|
+
const rows = await q.orderBy('updatedAt', 'DESC').get();
|
|
114
|
+
return rows.map(rowToListEntry);
|
|
115
|
+
}
|
|
116
|
+
async delete(conversationId) {
|
|
117
|
+
await AiConversationMessageRecord.where('conversationId', conversationId).deleteAll();
|
|
118
|
+
await AiConversationRecord.where('id', conversationId).deleteAll();
|
|
119
|
+
}
|
|
120
|
+
/** Throw the same not-found error shape as `MemoryConversationStore`. */
|
|
121
|
+
async requireThread(conversationId) {
|
|
122
|
+
const thread = await AiConversationRecord.where('id', conversationId).first();
|
|
123
|
+
if (!thread)
|
|
124
|
+
throw notFound(conversationId);
|
|
125
|
+
}
|
|
126
|
+
/** Next monotonic position for the thread (0 when empty). */
|
|
127
|
+
async nextPosition(conversationId) {
|
|
128
|
+
const last = await AiConversationMessageRecord
|
|
129
|
+
.where('conversationId', conversationId)
|
|
130
|
+
.orderBy('position', 'DESC')
|
|
131
|
+
.first();
|
|
132
|
+
return last ? last.position + 1 : 0;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** Convenience factory mirroring `ormBudgetStorage()` / `OrmUserMemory`. */
|
|
136
|
+
export function ormConversationStore() {
|
|
137
|
+
return new OrmConversationStore();
|
|
138
|
+
}
|
|
139
|
+
// ─── Schema reference ─────────────────────────────────────
|
|
140
|
+
/**
|
|
141
|
+
* Reference Prisma schema for `OrmConversationStore`. Copy into your
|
|
142
|
+
* `prisma/schema/<file>.prisma`. SQLite stores the `text` content as TEXT;
|
|
143
|
+
* Postgres as `text`. The `@@index` keeps `list()` (by user) and `load()`
|
|
144
|
+
* (by thread, ordered) cheap.
|
|
145
|
+
*/
|
|
146
|
+
export const conversationOrmPrismaSchema = `model AiConversation {
|
|
147
|
+
id String @id @default(cuid())
|
|
148
|
+
title String
|
|
149
|
+
userId String?
|
|
150
|
+
/// Thread-segregation key - the agent class name by default
|
|
151
|
+
agent String?
|
|
152
|
+
createdAt DateTime @default(now())
|
|
153
|
+
updatedAt DateTime @updatedAt
|
|
154
|
+
|
|
155
|
+
@@index([userId])
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
model AiConversationMessage {
|
|
159
|
+
id String @id @default(cuid())
|
|
160
|
+
conversationId String
|
|
161
|
+
/// Monotonic per-thread ordering
|
|
162
|
+
position Int
|
|
163
|
+
role String
|
|
164
|
+
/// JSON-encoded \`string | ContentPart[]\`
|
|
165
|
+
content String
|
|
166
|
+
toolCallId String?
|
|
167
|
+
/// JSON-encoded \`ToolCall[]\` or null
|
|
168
|
+
toolCalls String?
|
|
169
|
+
createdAt DateTime @default(now())
|
|
170
|
+
|
|
171
|
+
@@index([conversationId, position])
|
|
172
|
+
}
|
|
173
|
+
`;
|
|
174
|
+
// ─── Helpers ──────────────────────────────────────────────
|
|
175
|
+
function notFound(conversationId) {
|
|
176
|
+
return new Error(`[RudderJS AI] Conversation "${conversationId}" not found.`);
|
|
177
|
+
}
|
|
178
|
+
function messageToRow(conversationId, position, m) {
|
|
179
|
+
return {
|
|
180
|
+
conversationId,
|
|
181
|
+
position,
|
|
182
|
+
role: m.role,
|
|
183
|
+
content: JSON.stringify(m.content),
|
|
184
|
+
toolCallId: m.toolCallId ?? null,
|
|
185
|
+
toolCalls: m.toolCalls ? JSON.stringify(m.toolCalls) : null,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function rowToMessage(row) {
|
|
189
|
+
const out = {
|
|
190
|
+
role: row.role,
|
|
191
|
+
content: JSON.parse(row.content),
|
|
192
|
+
};
|
|
193
|
+
if (row.toolCallId != null)
|
|
194
|
+
out.toolCallId = row.toolCallId;
|
|
195
|
+
if (row.toolCalls != null)
|
|
196
|
+
out.toolCalls = JSON.parse(row.toolCalls);
|
|
197
|
+
return out;
|
|
198
|
+
}
|
|
199
|
+
function rowToListEntry(row) {
|
|
200
|
+
const out = {
|
|
201
|
+
id: row.id,
|
|
202
|
+
title: row.title,
|
|
203
|
+
createdAt: row.createdAt,
|
|
204
|
+
};
|
|
205
|
+
if (row.updatedAt != null)
|
|
206
|
+
out.updatedAt = row.updatedAt;
|
|
207
|
+
if (row.agent != null)
|
|
208
|
+
out.agent = row.agent;
|
|
209
|
+
return out;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation-orm/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-persistence.d.ts","sourceRoot":"","sources":["../src/conversation-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAA;AAEhF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAK,MAAM,KAAK,GAAG,kBAAkB,GAAG,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,EACpF,OAAO,EAAO,sBAAsB,GAAG,SAAS,GAC/C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAWpC;
|
|
1
|
+
{"version":3,"file":"conversation-persistence.d.ts","sourceRoot":"","sources":["../src/conversation-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAA;AAEhF;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAK,MAAM,KAAK,GAAG,kBAAkB,GAAG,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,EACpF,OAAO,EAAO,sBAAsB,GAAG,SAAS,GAC/C,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAWpC;AA0FD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,CAUvF;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAY,kBAAkB,EAClC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAK,uBAAuB,EACvC,KAAK,EAAW,MAAM,EACtB,OAAO,EAAS,kBAAkB,GAAG,SAAS,EAC9C,KAAK,EAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC,GACrF,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAY,kBAAkB,EAClC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAK,uBAAuB,EACvC,KAAK,EAAW,MAAM,EACtB,OAAO,EAAS,kBAAkB,GAAG,SAAS,EAC9C,KAAK,EAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,KAAK,mBAAmB,GAClF,mBAAmB,CAyCrB"}
|
|
@@ -63,11 +63,33 @@ async function preparePersistence(spec, agentClassName, store, callerHistory) {
|
|
|
63
63
|
else {
|
|
64
64
|
throw new Error('[RudderJS AI] ConversationalSpec must include either `user` or `id`.');
|
|
65
65
|
}
|
|
66
|
+
// Snapshot the trusted baseline before any limit slice — the validation
|
|
67
|
+
// hook compares the caller's incoming messages against the FULL persisted
|
|
68
|
+
// thread, not the windowed view fed to the model.
|
|
69
|
+
const persisted = loaded;
|
|
70
|
+
let windowed = loaded;
|
|
66
71
|
if (spec.historyLimit !== undefined && spec.historyLimit > 0) {
|
|
67
|
-
|
|
72
|
+
windowed = loaded.slice(-spec.historyLimit);
|
|
68
73
|
}
|
|
69
|
-
const history = [...
|
|
70
|
-
return { spec, store, convId, history };
|
|
74
|
+
const history = [...windowed, ...(callerHistory ?? [])];
|
|
75
|
+
return { spec, store, convId, history, persisted };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Run the caller-supplied `validate` continuation hook, if present. The
|
|
79
|
+
* "incoming" view is the caller's claimed prior conversation — their
|
|
80
|
+
* `options.messages` (full continuation list) when set, else
|
|
81
|
+
* `options.history`. Throws (propagating the rejection) when the hook does.
|
|
82
|
+
*/
|
|
83
|
+
async function runValidation(ctx, options) {
|
|
84
|
+
if (!options?.validate)
|
|
85
|
+
return;
|
|
86
|
+
const incoming = options.messages ?? options.history ?? [];
|
|
87
|
+
const opts = {};
|
|
88
|
+
if (options.approvedToolCallIds)
|
|
89
|
+
opts.approvedToolCallIds = options.approvedToolCallIds;
|
|
90
|
+
if (options.rejectedToolCallIds)
|
|
91
|
+
opts.rejectedToolCallIds = options.rejectedToolCallIds;
|
|
92
|
+
await options.validate(ctx.persisted, incoming, opts);
|
|
71
93
|
}
|
|
72
94
|
/**
|
|
73
95
|
* Compose the new turn's messages from the user input + the steps the
|
|
@@ -98,6 +120,7 @@ export async function runWithPersistence(spec, agentClassName, storeLookup, inpu
|
|
|
98
120
|
if (!store)
|
|
99
121
|
throw new Error('[RudderJS AI] No ConversationStore registered. Bind one via `setConversationStore()` or the `ai.conversations` DI key.');
|
|
100
122
|
const ctx = await preparePersistence(spec, agentClassName, store, options?.history);
|
|
123
|
+
await runValidation(ctx, options);
|
|
101
124
|
const effOptions = { ...options, history: ctx.history };
|
|
102
125
|
const response = await inner(effOptions);
|
|
103
126
|
await store.append(ctx.convId, newMessagesFromTurn(input, response));
|
|
@@ -123,6 +146,7 @@ export function runWithPersistenceStreaming(spec, agentClassName, storeLookup, i
|
|
|
123
146
|
let ctx;
|
|
124
147
|
try {
|
|
125
148
|
ctx = await preparePersistence(spec, agentClassName, store, options?.history);
|
|
149
|
+
await runValidation(ctx, options);
|
|
126
150
|
}
|
|
127
151
|
catch (err) {
|
|
128
152
|
rejectResponse(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-persistence.js","sourceRoot":"","sources":["../src/conversation-persistence.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAoF,EACpF,OAAgD;IAEhD,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IAClC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA,CAAE,6BAA6B;QAC5E,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAA;IAClC,IAAI,QAAQ,KAAK,KAAK,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IAC/C,OAAO,QAAQ,CAAA;AACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-persistence.js","sourceRoot":"","sources":["../src/conversation-persistence.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,11 +22,13 @@ export { zodToJsonSchema } from './zod-to-json-schema.js';
|
|
|
22
22
|
export { handoff, isHandoffTool } from './handoff.js';
|
|
23
23
|
export type { HandoffTool, HandoffOptions, HandoffSpec } from './handoff.js';
|
|
24
24
|
export { Agent, ConversableAgent, agent, stepCountIs, hasToolCall, setConversationStore, setUserMemory, resolveUserMemory } from './agent.js';
|
|
25
|
-
export type { InvalidToolArgumentsError } from './agent.js';
|
|
25
|
+
export type { InvalidToolArgumentsError, SubAgentResumeOptions, SubAgentResumeRequest, SubAgentResumeOutcome, SubAgentResumeManyOptions, SubAgentResumeManyResult, AsToolStreamingOption, ChunkProjector, } from './agent.js';
|
|
26
26
|
export { QueuedPromptBuilder } from './queue-job.js';
|
|
27
27
|
export { runOnConfig, runOnChunk, runOnBeforeToolCall, runOnAfterToolCall, runSequential, runOnUsage, runOnAbort, runOnError } from './middleware.js';
|
|
28
28
|
export { Output, type OutputWrapper } from './output.js';
|
|
29
29
|
export { MemoryConversationStore } from './conversation.js';
|
|
30
|
+
export { validateContinuation, assertValidContinuation, defaultContinuationValidator, ContinuationValidationError, } from './continuation-validation.js';
|
|
31
|
+
export type { ContinuationValidationResult, ContinuationRejectionCode, ContinuationValidator, ValidateContinuationOptions, } from './continuation-validation.js';
|
|
30
32
|
export { MemoryUserMemory, resolveRemembersSpec } from './memory.js';
|
|
31
33
|
export type { UserMemoryLookup } from './memory.js';
|
|
32
34
|
export { withMemoryInject } from './memory-inject.js';
|
|
@@ -34,6 +36,7 @@ export type { MemoryInjectOptions } from './memory-inject.js';
|
|
|
34
36
|
export { withMemoryExtract } from './memory-extract.js';
|
|
35
37
|
export type { MemoryExtractOptions } from './memory-extract.js';
|
|
36
38
|
export { InMemorySubAgentRunStore, CachedSubAgentRunStore, type SubAgentRunStore, type SubAgentRunSnapshot, type SubAgentPauseKind, type CachedSubAgentRunStoreOptions, } from './sub-agent-run-store.js';
|
|
39
|
+
export { InMemoryAgentRunStore, CachedAgentRunStore, newAgentRunId, type AgentRunStore, type AgentRunState, type AgentPauseKind, type CachedAgentRunStoreOptions, } from './agent-run-store.js';
|
|
37
40
|
export { AI } from './facade.js';
|
|
38
41
|
export { ImageGenerator } from './image.js';
|
|
39
42
|
export { AudioGenerator } from './audio.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,12 +33,15 @@ export { runOnConfig, runOnChunk, runOnBeforeToolCall, runOnAfterToolCall, runSe
|
|
|
33
33
|
export { Output } from './output.js';
|
|
34
34
|
// Conversation
|
|
35
35
|
export { MemoryConversationStore } from './conversation.js';
|
|
36
|
+
export { validateContinuation, assertValidContinuation, defaultContinuationValidator, ContinuationValidationError, } from './continuation-validation.js';
|
|
36
37
|
// User Memory (#A4)
|
|
37
38
|
export { MemoryUserMemory, resolveRemembersSpec } from './memory.js';
|
|
38
39
|
export { withMemoryInject } from './memory-inject.js';
|
|
39
40
|
export { withMemoryExtract } from './memory-extract.js';
|
|
40
41
|
// Sub-agent run store (asTool streaming + suspend)
|
|
41
42
|
export { InMemorySubAgentRunStore, CachedSubAgentRunStore, } from './sub-agent-run-store.js';
|
|
43
|
+
// Standalone agent run store (top-level stream() client-tool / approval pauses)
|
|
44
|
+
export { InMemoryAgentRunStore, CachedAgentRunStore, newAgentRunId, } from './agent-run-store.js';
|
|
42
45
|
// Facade
|
|
43
46
|
export { AI } from './facade.js';
|
|
44
47
|
// Image Generation
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,cAAc;AACd,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,eAAe,IAAI,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAyErI,WAAW;AACX,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,YAAY;AACZ,OAAO,EAAE,iBAAiB,EAAwB,MAAM,0BAA0B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAA0B,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAyB,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC7H,OAAO,EAAE,cAAc,EAA6C,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,kBAAkB,EAAyB,MAAM,2BAA2B,CAAA;AACrF,OAAO,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAA;AAE5E,QAAQ;AACR,OAAO,EACL,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGrD,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -777,7 +777,38 @@ export interface AgentPromptOptions {
|
|
|
777
777
|
* read a consistent spec.
|
|
778
778
|
*/
|
|
779
779
|
memory?: RemembersOverride;
|
|
780
|
+
/**
|
|
781
|
+
* Continuation-validation hook for the auto-persist / continuation path.
|
|
782
|
+
*
|
|
783
|
+
* When set and the call runs through conversation persistence
|
|
784
|
+
* (`Agent.conversational()`, `forUser()`, or `continue()`), the hook is
|
|
785
|
+
* invoked with the server-persisted history and the caller's incoming
|
|
786
|
+
* messages just before the agent loop runs. Throw to reject the request
|
|
787
|
+
* (forged tool result, rewritten history, cross-user continuation); the
|
|
788
|
+
* rejection propagates out of `prompt()` / the stream. Stateless calls
|
|
789
|
+
* (no persistence) never invoke it.
|
|
790
|
+
*
|
|
791
|
+
* Use {@link ContinuationValidator} directly, or
|
|
792
|
+
* `defaultContinuationValidator()` from `@rudderjs/ai` for the built-in
|
|
793
|
+
* prefix + tool-result-forgery + approval-forgery gate.
|
|
794
|
+
*/
|
|
795
|
+
validate?: ContinuationValidator;
|
|
780
796
|
}
|
|
797
|
+
/** Options forwarded to a {@link ContinuationValidator}. */
|
|
798
|
+
export interface ValidateContinuationOptions {
|
|
799
|
+
/** Tool-call ids the caller claims the user approved this turn. */
|
|
800
|
+
approvedToolCallIds?: readonly string[];
|
|
801
|
+
/** Tool-call ids the caller claims the user rejected this turn. */
|
|
802
|
+
rejectedToolCallIds?: readonly string[];
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Hook shape consumed by {@link AgentPromptOptions.validate}. Called by
|
|
806
|
+
* `runWithPersistence` (and the streaming variant) with the server-persisted
|
|
807
|
+
* history and the caller's incoming messages. Throw to reject the
|
|
808
|
+
* continuation. See `@rudderjs/ai`'s `validateContinuation` /
|
|
809
|
+
* `defaultContinuationValidator` for the reference implementation.
|
|
810
|
+
*/
|
|
811
|
+
export type ContinuationValidator = (persisted: readonly AiMessage[], incoming: readonly AiMessage[], opts: ValidateContinuationOptions) => void | Promise<void>;
|
|
781
812
|
/** An attachment (file or image) to include with a prompt */
|
|
782
813
|
export interface Attachment {
|
|
783
814
|
type: 'image' | 'document';
|