@elizaos/plugin-memory 1.1.0 → 1.1.2
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 +230 -330
- package/dist/actions/remember.d.ts +11 -0
- package/dist/browser/index.browser.js +205 -348
- package/dist/browser/index.browser.js.map +13 -23
- package/dist/cjs/index.node.cjs +936 -2193
- package/dist/cjs/index.node.js.map +13 -23
- package/dist/evaluators/long-term-extraction.d.ts +8 -0
- package/dist/evaluators/summarization.d.ts +25 -6
- package/dist/index.d.ts +32 -152
- package/dist/node/index.node.js +944 -2210
- package/dist/node/index.node.js.map +13 -23
- package/dist/providers/context-summary.d.ts +12 -0
- package/dist/providers/long-term-memory.d.ts +11 -18
- package/dist/schemas/index.d.ts +6 -16
- package/dist/schemas/long-term-memories.d.ts +70 -308
- package/dist/schemas/memory-access-logs.d.ts +154 -0
- package/dist/schemas/session-summaries.d.ts +283 -0
- package/dist/services/memory-service.d.ts +51 -95
- package/dist/types/index.d.ts +53 -298
- package/package.json +2 -84
- package/dist/evaluators/consolidation.d.ts +0 -19
- package/dist/prompts/consolidation.d.ts +0 -35
- package/dist/prompts/summarization.d.ts +0 -25
- package/dist/providers/action-results.d.ts +0 -2
- package/dist/providers/recent-conversation-summary.d.ts +0 -2
- package/dist/repositories/conversation-summary.d.ts +0 -33
- package/dist/repositories/index.d.ts +0 -17
- package/dist/repositories/long-term-memory.d.ts +0 -53
- package/dist/schemas/conversation-summaries.d.ts +0 -494
- package/dist/utils/db-mapping.d.ts +0 -20
- package/dist/utils/decay-scoring.d.ts +0 -41
- package/dist/utils/embedding.d.ts +0 -21
- package/dist/utils/formatting.d.ts +0 -17
- package/dist/utils/index.d.ts +0 -17
- package/dist/utils/search-merging.d.ts +0 -18
- package/dist/utils/token-counter.d.ts +0 -53
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session summaries table
|
|
3
|
+
* Stores condensed summaries of conversation sessions
|
|
4
|
+
*/
|
|
5
|
+
export declare const sessionSummaries: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
6
|
+
name: "session_summaries";
|
|
7
|
+
schema: undefined;
|
|
8
|
+
columns: {
|
|
9
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
10
|
+
name: "id";
|
|
11
|
+
tableName: "session_summaries";
|
|
12
|
+
dataType: "string";
|
|
13
|
+
columnType: "PgVarchar";
|
|
14
|
+
data: string;
|
|
15
|
+
driverParam: string;
|
|
16
|
+
notNull: true;
|
|
17
|
+
hasDefault: false;
|
|
18
|
+
isPrimaryKey: true;
|
|
19
|
+
isAutoincrement: false;
|
|
20
|
+
hasRuntimeDefault: false;
|
|
21
|
+
enumValues: [string, ...string[]];
|
|
22
|
+
baseColumn: never;
|
|
23
|
+
identity: undefined;
|
|
24
|
+
generated: undefined;
|
|
25
|
+
}, {}, {
|
|
26
|
+
length: 36;
|
|
27
|
+
}>;
|
|
28
|
+
agentId: import("drizzle-orm/pg-core").PgColumn<{
|
|
29
|
+
name: "agent_id";
|
|
30
|
+
tableName: "session_summaries";
|
|
31
|
+
dataType: "string";
|
|
32
|
+
columnType: "PgVarchar";
|
|
33
|
+
data: string;
|
|
34
|
+
driverParam: string;
|
|
35
|
+
notNull: true;
|
|
36
|
+
hasDefault: false;
|
|
37
|
+
isPrimaryKey: false;
|
|
38
|
+
isAutoincrement: false;
|
|
39
|
+
hasRuntimeDefault: false;
|
|
40
|
+
enumValues: [string, ...string[]];
|
|
41
|
+
baseColumn: never;
|
|
42
|
+
identity: undefined;
|
|
43
|
+
generated: undefined;
|
|
44
|
+
}, {}, {
|
|
45
|
+
length: 36;
|
|
46
|
+
}>;
|
|
47
|
+
roomId: import("drizzle-orm/pg-core").PgColumn<{
|
|
48
|
+
name: "room_id";
|
|
49
|
+
tableName: "session_summaries";
|
|
50
|
+
dataType: "string";
|
|
51
|
+
columnType: "PgVarchar";
|
|
52
|
+
data: string;
|
|
53
|
+
driverParam: string;
|
|
54
|
+
notNull: true;
|
|
55
|
+
hasDefault: false;
|
|
56
|
+
isPrimaryKey: false;
|
|
57
|
+
isAutoincrement: false;
|
|
58
|
+
hasRuntimeDefault: false;
|
|
59
|
+
enumValues: [string, ...string[]];
|
|
60
|
+
baseColumn: never;
|
|
61
|
+
identity: undefined;
|
|
62
|
+
generated: undefined;
|
|
63
|
+
}, {}, {
|
|
64
|
+
length: 36;
|
|
65
|
+
}>;
|
|
66
|
+
entityId: import("drizzle-orm/pg-core").PgColumn<{
|
|
67
|
+
name: "entity_id";
|
|
68
|
+
tableName: "session_summaries";
|
|
69
|
+
dataType: "string";
|
|
70
|
+
columnType: "PgVarchar";
|
|
71
|
+
data: string;
|
|
72
|
+
driverParam: string;
|
|
73
|
+
notNull: false;
|
|
74
|
+
hasDefault: false;
|
|
75
|
+
isPrimaryKey: false;
|
|
76
|
+
isAutoincrement: false;
|
|
77
|
+
hasRuntimeDefault: false;
|
|
78
|
+
enumValues: [string, ...string[]];
|
|
79
|
+
baseColumn: never;
|
|
80
|
+
identity: undefined;
|
|
81
|
+
generated: undefined;
|
|
82
|
+
}, {}, {
|
|
83
|
+
length: 36;
|
|
84
|
+
}>;
|
|
85
|
+
summary: import("drizzle-orm/pg-core").PgColumn<{
|
|
86
|
+
name: "summary";
|
|
87
|
+
tableName: "session_summaries";
|
|
88
|
+
dataType: "string";
|
|
89
|
+
columnType: "PgText";
|
|
90
|
+
data: string;
|
|
91
|
+
driverParam: string;
|
|
92
|
+
notNull: true;
|
|
93
|
+
hasDefault: false;
|
|
94
|
+
isPrimaryKey: false;
|
|
95
|
+
isAutoincrement: false;
|
|
96
|
+
hasRuntimeDefault: false;
|
|
97
|
+
enumValues: [string, ...string[]];
|
|
98
|
+
baseColumn: never;
|
|
99
|
+
identity: undefined;
|
|
100
|
+
generated: undefined;
|
|
101
|
+
}, {}, {}>;
|
|
102
|
+
messageCount: import("drizzle-orm/pg-core").PgColumn<{
|
|
103
|
+
name: "message_count";
|
|
104
|
+
tableName: "session_summaries";
|
|
105
|
+
dataType: "number";
|
|
106
|
+
columnType: "PgInteger";
|
|
107
|
+
data: number;
|
|
108
|
+
driverParam: string | number;
|
|
109
|
+
notNull: true;
|
|
110
|
+
hasDefault: false;
|
|
111
|
+
isPrimaryKey: false;
|
|
112
|
+
isAutoincrement: false;
|
|
113
|
+
hasRuntimeDefault: false;
|
|
114
|
+
enumValues: undefined;
|
|
115
|
+
baseColumn: never;
|
|
116
|
+
identity: undefined;
|
|
117
|
+
generated: undefined;
|
|
118
|
+
}, {}, {}>;
|
|
119
|
+
lastMessageOffset: import("drizzle-orm/pg-core").PgColumn<{
|
|
120
|
+
name: "last_message_offset";
|
|
121
|
+
tableName: "session_summaries";
|
|
122
|
+
dataType: "number";
|
|
123
|
+
columnType: "PgInteger";
|
|
124
|
+
data: number;
|
|
125
|
+
driverParam: string | number;
|
|
126
|
+
notNull: true;
|
|
127
|
+
hasDefault: true;
|
|
128
|
+
isPrimaryKey: false;
|
|
129
|
+
isAutoincrement: false;
|
|
130
|
+
hasRuntimeDefault: false;
|
|
131
|
+
enumValues: undefined;
|
|
132
|
+
baseColumn: never;
|
|
133
|
+
identity: undefined;
|
|
134
|
+
generated: undefined;
|
|
135
|
+
}, {}, {}>;
|
|
136
|
+
startTime: import("drizzle-orm/pg-core").PgColumn<{
|
|
137
|
+
name: "start_time";
|
|
138
|
+
tableName: "session_summaries";
|
|
139
|
+
dataType: "date";
|
|
140
|
+
columnType: "PgTimestamp";
|
|
141
|
+
data: Date;
|
|
142
|
+
driverParam: string;
|
|
143
|
+
notNull: true;
|
|
144
|
+
hasDefault: false;
|
|
145
|
+
isPrimaryKey: false;
|
|
146
|
+
isAutoincrement: false;
|
|
147
|
+
hasRuntimeDefault: false;
|
|
148
|
+
enumValues: undefined;
|
|
149
|
+
baseColumn: never;
|
|
150
|
+
identity: undefined;
|
|
151
|
+
generated: undefined;
|
|
152
|
+
}, {}, {}>;
|
|
153
|
+
endTime: import("drizzle-orm/pg-core").PgColumn<{
|
|
154
|
+
name: "end_time";
|
|
155
|
+
tableName: "session_summaries";
|
|
156
|
+
dataType: "date";
|
|
157
|
+
columnType: "PgTimestamp";
|
|
158
|
+
data: Date;
|
|
159
|
+
driverParam: string;
|
|
160
|
+
notNull: true;
|
|
161
|
+
hasDefault: false;
|
|
162
|
+
isPrimaryKey: false;
|
|
163
|
+
isAutoincrement: false;
|
|
164
|
+
hasRuntimeDefault: false;
|
|
165
|
+
enumValues: undefined;
|
|
166
|
+
baseColumn: never;
|
|
167
|
+
identity: undefined;
|
|
168
|
+
generated: undefined;
|
|
169
|
+
}, {}, {}>;
|
|
170
|
+
topics: import("drizzle-orm/pg-core").PgColumn<{
|
|
171
|
+
name: "topics";
|
|
172
|
+
tableName: "session_summaries";
|
|
173
|
+
dataType: "json";
|
|
174
|
+
columnType: "PgJsonb";
|
|
175
|
+
data: unknown;
|
|
176
|
+
driverParam: unknown;
|
|
177
|
+
notNull: false;
|
|
178
|
+
hasDefault: false;
|
|
179
|
+
isPrimaryKey: false;
|
|
180
|
+
isAutoincrement: false;
|
|
181
|
+
hasRuntimeDefault: false;
|
|
182
|
+
enumValues: undefined;
|
|
183
|
+
baseColumn: never;
|
|
184
|
+
identity: undefined;
|
|
185
|
+
generated: undefined;
|
|
186
|
+
}, {}, {}>;
|
|
187
|
+
metadata: import("drizzle-orm/pg-core").PgColumn<{
|
|
188
|
+
name: "metadata";
|
|
189
|
+
tableName: "session_summaries";
|
|
190
|
+
dataType: "json";
|
|
191
|
+
columnType: "PgJsonb";
|
|
192
|
+
data: unknown;
|
|
193
|
+
driverParam: unknown;
|
|
194
|
+
notNull: false;
|
|
195
|
+
hasDefault: false;
|
|
196
|
+
isPrimaryKey: false;
|
|
197
|
+
isAutoincrement: false;
|
|
198
|
+
hasRuntimeDefault: false;
|
|
199
|
+
enumValues: undefined;
|
|
200
|
+
baseColumn: never;
|
|
201
|
+
identity: undefined;
|
|
202
|
+
generated: undefined;
|
|
203
|
+
}, {}, {}>;
|
|
204
|
+
embedding: import("drizzle-orm/pg-core").PgColumn<{
|
|
205
|
+
name: "embedding";
|
|
206
|
+
tableName: "session_summaries";
|
|
207
|
+
dataType: "array";
|
|
208
|
+
columnType: "PgArray";
|
|
209
|
+
data: number[];
|
|
210
|
+
driverParam: string | (string | number)[];
|
|
211
|
+
notNull: false;
|
|
212
|
+
hasDefault: false;
|
|
213
|
+
isPrimaryKey: false;
|
|
214
|
+
isAutoincrement: false;
|
|
215
|
+
hasRuntimeDefault: false;
|
|
216
|
+
enumValues: undefined;
|
|
217
|
+
baseColumn: import("drizzle-orm").Column<{
|
|
218
|
+
name: "embedding";
|
|
219
|
+
tableName: "session_summaries";
|
|
220
|
+
dataType: "number";
|
|
221
|
+
columnType: "PgReal";
|
|
222
|
+
data: number;
|
|
223
|
+
driverParam: string | number;
|
|
224
|
+
notNull: false;
|
|
225
|
+
hasDefault: false;
|
|
226
|
+
isPrimaryKey: false;
|
|
227
|
+
isAutoincrement: false;
|
|
228
|
+
hasRuntimeDefault: false;
|
|
229
|
+
enumValues: undefined;
|
|
230
|
+
baseColumn: never;
|
|
231
|
+
identity: undefined;
|
|
232
|
+
generated: undefined;
|
|
233
|
+
}, {}, {}>;
|
|
234
|
+
identity: undefined;
|
|
235
|
+
generated: undefined;
|
|
236
|
+
}, {}, {
|
|
237
|
+
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
238
|
+
name: "embedding";
|
|
239
|
+
dataType: "number";
|
|
240
|
+
columnType: "PgReal";
|
|
241
|
+
data: number;
|
|
242
|
+
driverParam: string | number;
|
|
243
|
+
enumValues: undefined;
|
|
244
|
+
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
245
|
+
size: undefined;
|
|
246
|
+
}>;
|
|
247
|
+
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
248
|
+
name: "created_at";
|
|
249
|
+
tableName: "session_summaries";
|
|
250
|
+
dataType: "date";
|
|
251
|
+
columnType: "PgTimestamp";
|
|
252
|
+
data: Date;
|
|
253
|
+
driverParam: string;
|
|
254
|
+
notNull: true;
|
|
255
|
+
hasDefault: true;
|
|
256
|
+
isPrimaryKey: false;
|
|
257
|
+
isAutoincrement: false;
|
|
258
|
+
hasRuntimeDefault: false;
|
|
259
|
+
enumValues: undefined;
|
|
260
|
+
baseColumn: never;
|
|
261
|
+
identity: undefined;
|
|
262
|
+
generated: undefined;
|
|
263
|
+
}, {}, {}>;
|
|
264
|
+
updatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
265
|
+
name: "updated_at";
|
|
266
|
+
tableName: "session_summaries";
|
|
267
|
+
dataType: "date";
|
|
268
|
+
columnType: "PgTimestamp";
|
|
269
|
+
data: Date;
|
|
270
|
+
driverParam: string;
|
|
271
|
+
notNull: true;
|
|
272
|
+
hasDefault: true;
|
|
273
|
+
isPrimaryKey: false;
|
|
274
|
+
isAutoincrement: false;
|
|
275
|
+
hasRuntimeDefault: false;
|
|
276
|
+
enumValues: undefined;
|
|
277
|
+
baseColumn: never;
|
|
278
|
+
identity: undefined;
|
|
279
|
+
generated: undefined;
|
|
280
|
+
}, {}, {}>;
|
|
281
|
+
};
|
|
282
|
+
dialect: "pg";
|
|
283
|
+
}>;
|
|
@@ -1,146 +1,102 @@
|
|
|
1
1
|
import { type IAgentRuntime, Service, type UUID, type ServiceTypeName } from '@elizaos/core';
|
|
2
|
-
import type
|
|
3
|
-
import { type LongTermMemory, type LongTermMemoryConfig, type LongTermMemorySearchParams, type LongTermMemoryRetrievalResult, type ConversationSummary, MemoryType } from '../types/index';
|
|
2
|
+
import { type LongTermMemory, type SessionSummary, type MemoryConfig, LongTermMemoryCategory } from '../types/index';
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Research: Based on comprehensive analysis in refactor.md
|
|
8
|
-
*
|
|
9
|
-
* This service implements:
|
|
10
|
-
* 1. Three-tier long-term memory taxonomy (Episodic, Semantic, Procedural)
|
|
11
|
-
* 2. Memory consolidation pipeline (transient filtering)
|
|
12
|
-
* 3. Hybrid retrieval (Vector + BM25 + Graph)
|
|
13
|
-
* 4. Exponential decay for long-term memory forgetting
|
|
14
|
-
* 5. Contextual embeddings for superior retrieval
|
|
15
|
-
* 6. Contradiction detection and resolution
|
|
16
|
-
*
|
|
17
|
-
* Architecture Philosophy:
|
|
18
|
-
* - Async consolidation: Don't block the conversation loop
|
|
19
|
-
* - Decay-weighted scoring: Recent and frequently accessed long-term memories score higher
|
|
20
|
-
* - Graph-guided retrieval: Use relations for context
|
|
21
|
-
* - Confidence-based filtering: Only store high-quality extractions
|
|
4
|
+
* Memory Service
|
|
5
|
+
* Manages both short-term (session summaries) and long-term (persistent facts) memory
|
|
22
6
|
*/
|
|
23
7
|
export declare class MemoryService extends Service {
|
|
24
8
|
static serviceType: ServiceTypeName;
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
private
|
|
28
|
-
private isInitialized;
|
|
29
|
-
private longTermMemoryRepo;
|
|
30
|
-
private conversationSummaryRepo;
|
|
9
|
+
private sessionMessageCounts;
|
|
10
|
+
private memoryConfig;
|
|
11
|
+
private lastExtractionCheckpoints;
|
|
31
12
|
capabilityDescription: string;
|
|
32
|
-
/**
|
|
33
|
-
* Default configuration based on research recommendations
|
|
34
|
-
* Research: Section 6 "Implementation Strategy"
|
|
35
|
-
*/
|
|
36
|
-
private static defaultConfig;
|
|
37
13
|
constructor(runtime?: IAgentRuntime);
|
|
38
14
|
static start(runtime: IAgentRuntime): Promise<Service>;
|
|
39
15
|
stop(): Promise<void>;
|
|
40
16
|
initialize(runtime: IAgentRuntime): Promise<void>;
|
|
41
17
|
/**
|
|
42
|
-
*
|
|
18
|
+
* Get the Drizzle database instance
|
|
43
19
|
*/
|
|
44
|
-
private
|
|
20
|
+
private getDb;
|
|
45
21
|
/**
|
|
46
|
-
*
|
|
22
|
+
* Get configuration
|
|
47
23
|
*/
|
|
48
|
-
|
|
24
|
+
getConfig(): MemoryConfig;
|
|
49
25
|
/**
|
|
50
|
-
*
|
|
26
|
+
* Update configuration
|
|
51
27
|
*/
|
|
52
|
-
|
|
28
|
+
updateConfig(updates: Partial<MemoryConfig>): void;
|
|
53
29
|
/**
|
|
54
|
-
*
|
|
30
|
+
* Track message count for a room
|
|
55
31
|
*/
|
|
56
|
-
|
|
32
|
+
incrementMessageCount(roomId: UUID): number;
|
|
57
33
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* Research: Section 3.2.1 "Contextual Embeddings"
|
|
34
|
+
* Reset message count for a room
|
|
61
35
|
*/
|
|
62
|
-
|
|
36
|
+
resetMessageCount(roomId: UUID): void;
|
|
63
37
|
/**
|
|
64
|
-
*
|
|
38
|
+
* Check if summarization is needed for a room
|
|
65
39
|
*/
|
|
66
|
-
|
|
40
|
+
shouldSummarize(roomId: UUID): Promise<boolean>;
|
|
67
41
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* Research: Section 4.3.2 "Resolution Strategies"
|
|
42
|
+
* Generate cache key for tracking extraction checkpoints per entity-room pair
|
|
71
43
|
*/
|
|
72
|
-
|
|
44
|
+
private getExtractionKey;
|
|
73
45
|
/**
|
|
74
|
-
*
|
|
46
|
+
* Get the last extraction checkpoint for an entity in a room
|
|
47
|
+
* Uses the cache table via adapter
|
|
75
48
|
*/
|
|
76
|
-
|
|
49
|
+
getLastExtractionCheckpoint(entityId: UUID, roomId: UUID): Promise<number>;
|
|
77
50
|
/**
|
|
78
|
-
*
|
|
51
|
+
* Set the last extraction checkpoint for an entity in a room
|
|
52
|
+
* Uses the cache table via adapter
|
|
79
53
|
*/
|
|
80
|
-
|
|
54
|
+
setLastExtractionCheckpoint(entityId: UUID, roomId: UUID, messageCount: number): Promise<void>;
|
|
81
55
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* Research: Section 4.3 "Handling Contradictions"
|
|
56
|
+
* Check if long-term extraction should run based on message count and interval
|
|
85
57
|
*/
|
|
86
|
-
|
|
58
|
+
shouldRunExtraction(entityId: UUID, roomId: UUID, currentMessageCount: number): Promise<boolean>;
|
|
87
59
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* Research: Section 4.3.1 "Detection Logic"
|
|
60
|
+
* Store a long-term memory
|
|
91
61
|
*/
|
|
92
|
-
|
|
62
|
+
storeLongTermMemory(memory: Omit<LongTermMemory, 'id' | 'createdAt' | 'updatedAt'>): Promise<LongTermMemory>;
|
|
93
63
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* Research: Section 3 "Retrieval Augmented Generation Strategy"
|
|
64
|
+
* Retrieve long-term memories for an entity
|
|
97
65
|
*/
|
|
98
|
-
|
|
66
|
+
getLongTermMemories(entityId: UUID, category?: LongTermMemoryCategory, limit?: number): Promise<LongTermMemory[]>;
|
|
99
67
|
/**
|
|
100
|
-
*
|
|
68
|
+
* Update a long-term memory
|
|
69
|
+
* Enforces multi-tenancy by verifying agentId and entityId
|
|
101
70
|
*/
|
|
102
|
-
|
|
71
|
+
updateLongTermMemory(id: UUID, entityId: UUID, updates: Partial<Omit<LongTermMemory, 'id' | 'agentId' | 'entityId' | 'createdAt'>>): Promise<void>;
|
|
103
72
|
/**
|
|
104
|
-
*
|
|
73
|
+
* Delete a long-term memory
|
|
74
|
+
* Enforces multi-tenancy by verifying agentId and entityId
|
|
105
75
|
*/
|
|
106
|
-
|
|
76
|
+
deleteLongTermMemory(id: UUID, entityId: UUID): Promise<void>;
|
|
107
77
|
/**
|
|
108
|
-
*
|
|
78
|
+
* Get the current session summary for a room (latest one)
|
|
109
79
|
*/
|
|
110
|
-
|
|
80
|
+
getCurrentSessionSummary(roomId: UUID): Promise<SessionSummary | null>;
|
|
111
81
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* Research: Section 5.1.3 "Tier 3: Just-In-Time Injection"
|
|
82
|
+
* Store a session summary (initial creation)
|
|
115
83
|
*/
|
|
116
|
-
|
|
84
|
+
storeSessionSummary(summary: Omit<SessionSummary, 'id' | 'createdAt' | 'updatedAt'>): Promise<SessionSummary>;
|
|
117
85
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
* Research: Section 5.1.2 "Hierarchical Conversation Summarization"
|
|
86
|
+
* Update an existing session summary
|
|
87
|
+
* Enforces multi-tenancy by verifying agentId
|
|
121
88
|
*/
|
|
122
|
-
|
|
89
|
+
updateSessionSummary(id: UUID, roomId: UUID, updates: Partial<Omit<SessionSummary, 'id' | 'agentId' | 'roomId' | 'createdAt' | 'updatedAt'>>): Promise<void>;
|
|
123
90
|
/**
|
|
124
|
-
* Get summaries
|
|
91
|
+
* Get session summaries for a room
|
|
125
92
|
*/
|
|
126
|
-
|
|
93
|
+
getSessionSummaries(roomId: UUID, limit?: number): Promise<SessionSummary[]>;
|
|
127
94
|
/**
|
|
128
|
-
* Search
|
|
129
|
-
*
|
|
130
|
-
* Research: Section 5.1.2 "Tier 2: The Conversation Summary"
|
|
95
|
+
* Search long-term memories by semantic similarity (if embeddings are available)
|
|
131
96
|
*/
|
|
132
|
-
|
|
133
|
-
entityId: UUID;
|
|
134
|
-
roomId: UUID;
|
|
135
|
-
query: string;
|
|
136
|
-
limit?: number;
|
|
137
|
-
tokenBudget?: number;
|
|
138
|
-
}): Promise<ConversationSummary[]>;
|
|
97
|
+
searchLongTermMemories(entityId: UUID, queryEmbedding: number[], limit?: number, matchThreshold?: number): Promise<LongTermMemory[]>;
|
|
139
98
|
/**
|
|
140
|
-
* Get
|
|
141
|
-
* Used to determine which messages have already been summarized
|
|
142
|
-
*
|
|
143
|
-
* @returns The most recent Level 1 summary, or null if none exist
|
|
99
|
+
* Get all long-term memories formatted for context
|
|
144
100
|
*/
|
|
145
|
-
|
|
101
|
+
getFormattedLongTermMemories(entityId: UUID): Promise<string>;
|
|
146
102
|
}
|