@ixo/common 1.1.2 → 1.1.3
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/.turbo/turbo-build.log +1 -1
- package/dist/ai/nodes/index.d.ts +0 -1
- package/dist/ai/nodes/index.d.ts.map +1 -1
- package/dist/ai/nodes/index.js +0 -1
- package/dist/ai/nodes/index.js.map +1 -1
- package/dist/ai/tools/index.d.ts +0 -1
- package/dist/ai/tools/index.d.ts.map +1 -1
- package/dist/ai/tools/index.js +0 -1
- package/dist/ai/tools/index.js.map +1 -1
- package/dist/ai/utils/verify-matrix-openId-token.js +2 -2
- package/dist/ai/utils/verify-matrix-openId-token.js.map +1 -1
- package/dist/services/memory-engine/memory-engine.service.d.ts +10 -6
- package/dist/services/memory-engine/memory-engine.service.d.ts.map +1 -1
- package/dist/services/memory-engine/memory-engine.service.js +44 -46
- package/dist/services/memory-engine/memory-engine.service.js.map +1 -1
- package/dist/services/session-manager/dto.d.ts +4 -0
- package/dist/services/session-manager/dto.d.ts.map +1 -1
- package/dist/services/session-manager/dto.js +24 -0
- package/dist/services/session-manager/dto.js.map +1 -1
- package/dist/services/session-manager/session-manager.service.d.ts.map +1 -1
- package/dist/services/session-manager/session-manager.service.js +7 -2
- package/dist/services/session-manager/session-manager.service.js.map +1 -1
- package/dist/utils/get-user-subscription.js +2 -2
- package/dist/utils/get-user-subscription.js.map +1 -1
- package/package.json +3 -4
- package/src/ai/nodes/index.ts +0 -1
- package/src/ai/tools/index.ts +0 -1
- package/src/ai/utils/verify-matrix-openId-token.ts +2 -2
- package/src/services/memory-engine/memory-engine.service.ts +70 -56
- package/src/services/session-manager/dto.ts +16 -0
- package/src/services/session-manager/session-manager.service.ts +9 -2
- package/src/utils/get-user-subscription.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/ai/nodes/find-docs/find-docs.prompt.d.ts +0 -3
- package/dist/ai/nodes/find-docs/find-docs.prompt.d.ts.map +0 -1
- package/dist/ai/nodes/find-docs/find-docs.prompt.js +0 -61
- package/dist/ai/nodes/find-docs/find-docs.prompt.js.map +0 -1
- package/dist/ai/nodes/find-docs/index.d.ts +0 -3
- package/dist/ai/nodes/find-docs/index.d.ts.map +0 -1
- package/dist/ai/nodes/find-docs/index.js +0 -3
- package/dist/ai/nodes/find-docs/index.js.map +0 -1
- package/dist/ai/nodes/find-docs/node.d.ts +0 -17
- package/dist/ai/nodes/find-docs/node.d.ts.map +0 -1
- package/dist/ai/nodes/find-docs/node.js +0 -46
- package/dist/ai/nodes/find-docs/node.js.map +0 -1
- package/dist/ai/tools/retriever-tool/index.d.ts +0 -2
- package/dist/ai/tools/retriever-tool/index.d.ts.map +0 -1
- package/dist/ai/tools/retriever-tool/index.js +0 -2
- package/dist/ai/tools/retriever-tool/index.js.map +0 -1
- package/dist/ai/tools/retriever-tool/retriever-tool.d.ts +0 -18
- package/dist/ai/tools/retriever-tool/retriever-tool.d.ts.map +0 -1
- package/dist/ai/tools/retriever-tool/retriever-tool.js +0 -62
- package/dist/ai/tools/retriever-tool/retriever-tool.js.map +0 -1
- package/src/ai/nodes/find-docs/find-docs.prompt.ts +0 -61
- package/src/ai/nodes/find-docs/index.ts +0 -2
- package/src/ai/nodes/find-docs/node.ts +0 -83
- package/src/ai/tools/retriever-tool/index.ts +0 -1
- package/src/ai/tools/retriever-tool/retriever-tool.test.ts +0 -163
- package/src/ai/tools/retriever-tool/retriever-tool.ts +0 -107
|
@@ -5,13 +5,17 @@ import type {
|
|
|
5
5
|
UserContextData,
|
|
6
6
|
} from './types.js';
|
|
7
7
|
|
|
8
|
+
interface MemoryEngineAuthHeaders {
|
|
9
|
+
oracleToken: string;
|
|
10
|
+
userToken: string;
|
|
11
|
+
oracleHomeServer: string;
|
|
12
|
+
userHomeServer: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
export class MemoryEngineService {
|
|
9
16
|
private readonly QUERY_TIMEOUT_MS = 2500; // 2.5 seconds per query
|
|
10
17
|
|
|
11
|
-
constructor(
|
|
12
|
-
private readonly memoryEngineUrl: string,
|
|
13
|
-
private readonly memoryServiceApiKey: string,
|
|
14
|
-
) {}
|
|
18
|
+
constructor(private readonly memoryEngineUrl: string) {}
|
|
15
19
|
|
|
16
20
|
/**
|
|
17
21
|
* Wraps a promise with a timeout, returning fallback value if timeout is exceeded
|
|
@@ -34,10 +38,20 @@ export class MemoryEngineService {
|
|
|
34
38
|
*/
|
|
35
39
|
async gatherUserContext(params: {
|
|
36
40
|
oracleDid: string;
|
|
37
|
-
userDid: string;
|
|
38
41
|
roomId: string;
|
|
42
|
+
oracleToken: string;
|
|
43
|
+
userToken: string;
|
|
44
|
+
oracleHomeServer: string;
|
|
45
|
+
userHomeServer: string;
|
|
39
46
|
}): Promise<UserContextData> {
|
|
40
|
-
const {
|
|
47
|
+
const {
|
|
48
|
+
oracleDid,
|
|
49
|
+
roomId,
|
|
50
|
+
oracleToken,
|
|
51
|
+
userToken,
|
|
52
|
+
oracleHomeServer,
|
|
53
|
+
userHomeServer,
|
|
54
|
+
} = params;
|
|
41
55
|
|
|
42
56
|
Logger.info(
|
|
43
57
|
`[MemoryEngineService] Gathering user context for oracle: ${oracleDid}, room: ${roomId}`,
|
|
@@ -45,34 +59,41 @@ export class MemoryEngineService {
|
|
|
45
59
|
|
|
46
60
|
try {
|
|
47
61
|
// Execute all 6 queries in parallel with timeouts using Promise.allSettled
|
|
62
|
+
const authHeaders = {
|
|
63
|
+
oracleToken,
|
|
64
|
+
userToken,
|
|
65
|
+
oracleHomeServer,
|
|
66
|
+
userHomeServer,
|
|
67
|
+
};
|
|
68
|
+
|
|
48
69
|
const results = await Promise.allSettled([
|
|
49
70
|
this.withTimeout(
|
|
50
|
-
this.queryIdentity(oracleDid,
|
|
71
|
+
this.queryIdentity(oracleDid, roomId, authHeaders),
|
|
51
72
|
this.QUERY_TIMEOUT_MS,
|
|
52
73
|
undefined,
|
|
53
74
|
),
|
|
54
75
|
this.withTimeout(
|
|
55
|
-
this.queryWork(oracleDid,
|
|
76
|
+
this.queryWork(oracleDid, roomId, authHeaders),
|
|
56
77
|
this.QUERY_TIMEOUT_MS,
|
|
57
78
|
undefined,
|
|
58
79
|
),
|
|
59
80
|
this.withTimeout(
|
|
60
|
-
this.queryGoals(oracleDid,
|
|
81
|
+
this.queryGoals(oracleDid, roomId, authHeaders),
|
|
61
82
|
this.QUERY_TIMEOUT_MS,
|
|
62
83
|
undefined,
|
|
63
84
|
),
|
|
64
85
|
this.withTimeout(
|
|
65
|
-
this.queryInterests(oracleDid,
|
|
86
|
+
this.queryInterests(oracleDid, roomId, authHeaders),
|
|
66
87
|
this.QUERY_TIMEOUT_MS,
|
|
67
88
|
undefined,
|
|
68
89
|
),
|
|
69
90
|
this.withTimeout(
|
|
70
|
-
this.queryRelationships(oracleDid,
|
|
91
|
+
this.queryRelationships(oracleDid, roomId, authHeaders),
|
|
71
92
|
this.QUERY_TIMEOUT_MS,
|
|
72
93
|
undefined,
|
|
73
94
|
),
|
|
74
95
|
this.withTimeout(
|
|
75
|
-
this.queryRecent(oracleDid,
|
|
96
|
+
this.queryRecent(oracleDid, roomId, authHeaders),
|
|
76
97
|
this.QUERY_TIMEOUT_MS,
|
|
77
98
|
undefined,
|
|
78
99
|
),
|
|
@@ -125,8 +146,8 @@ export class MemoryEngineService {
|
|
|
125
146
|
*/
|
|
126
147
|
private async queryIdentity(
|
|
127
148
|
oracleDid: string,
|
|
128
|
-
userDid: string,
|
|
129
149
|
roomId: string,
|
|
150
|
+
auth: MemoryEngineAuthHeaders,
|
|
130
151
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
131
152
|
const request: SearchEnhancedRequest = {
|
|
132
153
|
oracle_dids: [oracleDid],
|
|
@@ -153,7 +174,7 @@ export class MemoryEngineService {
|
|
|
153
174
|
},
|
|
154
175
|
};
|
|
155
176
|
|
|
156
|
-
return this.executeQuery(request,
|
|
177
|
+
return this.executeQuery(request, roomId, auth);
|
|
157
178
|
}
|
|
158
179
|
|
|
159
180
|
/**
|
|
@@ -161,8 +182,8 @@ export class MemoryEngineService {
|
|
|
161
182
|
*/
|
|
162
183
|
private async queryWork(
|
|
163
184
|
oracleDid: string,
|
|
164
|
-
userDid: string,
|
|
165
185
|
roomId: string,
|
|
186
|
+
auth: MemoryEngineAuthHeaders,
|
|
166
187
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
167
188
|
const request: SearchEnhancedRequest = {
|
|
168
189
|
oracle_dids: [oracleDid],
|
|
@@ -196,7 +217,7 @@ export class MemoryEngineService {
|
|
|
196
217
|
},
|
|
197
218
|
};
|
|
198
219
|
|
|
199
|
-
return this.executeQuery(request,
|
|
220
|
+
return this.executeQuery(request, roomId, auth);
|
|
200
221
|
}
|
|
201
222
|
|
|
202
223
|
/**
|
|
@@ -204,8 +225,8 @@ export class MemoryEngineService {
|
|
|
204
225
|
*/
|
|
205
226
|
private async queryGoals(
|
|
206
227
|
oracleDid: string,
|
|
207
|
-
userDid: string,
|
|
208
228
|
roomId: string,
|
|
229
|
+
auth: MemoryEngineAuthHeaders,
|
|
209
230
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
210
231
|
const request: SearchEnhancedRequest = {
|
|
211
232
|
oracle_dids: [oracleDid],
|
|
@@ -231,7 +252,7 @@ export class MemoryEngineService {
|
|
|
231
252
|
},
|
|
232
253
|
};
|
|
233
254
|
|
|
234
|
-
return this.executeQuery(request,
|
|
255
|
+
return this.executeQuery(request, roomId, auth);
|
|
235
256
|
}
|
|
236
257
|
|
|
237
258
|
/**
|
|
@@ -239,8 +260,8 @@ export class MemoryEngineService {
|
|
|
239
260
|
*/
|
|
240
261
|
private async queryInterests(
|
|
241
262
|
oracleDid: string,
|
|
242
|
-
userDid: string,
|
|
243
263
|
roomId: string,
|
|
264
|
+
auth: MemoryEngineAuthHeaders,
|
|
244
265
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
245
266
|
const request: SearchEnhancedRequest = {
|
|
246
267
|
oracle_dids: [oracleDid],
|
|
@@ -273,7 +294,7 @@ export class MemoryEngineService {
|
|
|
273
294
|
},
|
|
274
295
|
};
|
|
275
296
|
|
|
276
|
-
return this.executeQuery(request,
|
|
297
|
+
return this.executeQuery(request, roomId, auth);
|
|
277
298
|
}
|
|
278
299
|
|
|
279
300
|
/**
|
|
@@ -281,8 +302,8 @@ export class MemoryEngineService {
|
|
|
281
302
|
*/
|
|
282
303
|
private async queryRelationships(
|
|
283
304
|
oracleDid: string,
|
|
284
|
-
userDid: string,
|
|
285
305
|
roomId: string,
|
|
306
|
+
auth: MemoryEngineAuthHeaders,
|
|
286
307
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
287
308
|
const request: SearchEnhancedRequest = {
|
|
288
309
|
oracle_dids: [oracleDid],
|
|
@@ -308,7 +329,7 @@ export class MemoryEngineService {
|
|
|
308
329
|
},
|
|
309
330
|
};
|
|
310
331
|
|
|
311
|
-
return this.executeQuery(request,
|
|
332
|
+
return this.executeQuery(request, roomId, auth);
|
|
312
333
|
}
|
|
313
334
|
|
|
314
335
|
/**
|
|
@@ -316,8 +337,8 @@ export class MemoryEngineService {
|
|
|
316
337
|
*/
|
|
317
338
|
private async queryRecent(
|
|
318
339
|
oracleDid: string,
|
|
319
|
-
userDid: string,
|
|
320
340
|
roomId: string,
|
|
341
|
+
auth: MemoryEngineAuthHeaders,
|
|
321
342
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
322
343
|
// Calculate date 90 days ago for recent context
|
|
323
344
|
const ninetyDaysAgo = new Date();
|
|
@@ -339,7 +360,7 @@ export class MemoryEngineService {
|
|
|
339
360
|
},
|
|
340
361
|
};
|
|
341
362
|
|
|
342
|
-
return this.executeQuery(request,
|
|
363
|
+
return this.executeQuery(request, roomId, auth);
|
|
343
364
|
}
|
|
344
365
|
|
|
345
366
|
/**
|
|
@@ -347,9 +368,11 @@ export class MemoryEngineService {
|
|
|
347
368
|
*/
|
|
348
369
|
async processConversationHistory({
|
|
349
370
|
messages,
|
|
350
|
-
userDid,
|
|
351
|
-
oracleDid,
|
|
352
371
|
roomId,
|
|
372
|
+
oracleToken,
|
|
373
|
+
userToken,
|
|
374
|
+
oracleHomeServer,
|
|
375
|
+
userHomeServer,
|
|
353
376
|
}: {
|
|
354
377
|
messages: Array<{
|
|
355
378
|
content: string;
|
|
@@ -358,25 +381,21 @@ export class MemoryEngineService {
|
|
|
358
381
|
name?: string;
|
|
359
382
|
source_description?: string;
|
|
360
383
|
}>;
|
|
361
|
-
userDid: string;
|
|
362
|
-
oracleDid: string;
|
|
363
384
|
roomId: string;
|
|
385
|
+
oracleToken: string;
|
|
386
|
+
userToken: string;
|
|
387
|
+
oracleHomeServer: string;
|
|
388
|
+
userHomeServer: string;
|
|
364
389
|
}): Promise<{ success: boolean }> {
|
|
365
|
-
if (!
|
|
366
|
-
Logger.warn(
|
|
367
|
-
`[MemoryEngineService] No user DID provided, skipping conversation processing`,
|
|
368
|
-
);
|
|
369
|
-
return { success: false };
|
|
370
|
-
}
|
|
371
|
-
if (!oracleDid) {
|
|
390
|
+
if (!roomId) {
|
|
372
391
|
Logger.warn(
|
|
373
|
-
`[MemoryEngineService] No
|
|
392
|
+
`[MemoryEngineService] No room id provided, skipping conversation processing`,
|
|
374
393
|
);
|
|
375
394
|
return { success: false };
|
|
376
395
|
}
|
|
377
|
-
if (!
|
|
396
|
+
if (!oracleToken || !userToken) {
|
|
378
397
|
Logger.warn(
|
|
379
|
-
`[MemoryEngineService]
|
|
398
|
+
`[MemoryEngineService] Missing oracle or user token, skipping conversation processing`,
|
|
380
399
|
);
|
|
381
400
|
return { success: false };
|
|
382
401
|
}
|
|
@@ -391,10 +410,11 @@ export class MemoryEngineService {
|
|
|
391
410
|
const response = await fetch(`${this.memoryEngineUrl}/messages`, {
|
|
392
411
|
method: 'POST',
|
|
393
412
|
headers: {
|
|
394
|
-
'x-
|
|
395
|
-
'x-
|
|
413
|
+
'x-oracle-token': oracleToken,
|
|
414
|
+
'x-user-token': userToken,
|
|
415
|
+
'x-oracle-matrix-homeserver': oracleHomeServer,
|
|
416
|
+
'x-user-matrix-homeserver': userHomeServer,
|
|
396
417
|
'x-room-id': roomId,
|
|
397
|
-
'x-service-api-key': this.memoryServiceApiKey,
|
|
398
418
|
'Content-Type': 'application/json',
|
|
399
419
|
},
|
|
400
420
|
body: JSON.stringify({ messages }),
|
|
@@ -426,25 +446,18 @@ export class MemoryEngineService {
|
|
|
426
446
|
*/
|
|
427
447
|
private async executeQuery(
|
|
428
448
|
request: SearchEnhancedRequest,
|
|
429
|
-
userDid: string,
|
|
430
|
-
oracleDid: string,
|
|
431
449
|
roomId: string,
|
|
450
|
+
auth: MemoryEngineAuthHeaders,
|
|
432
451
|
): Promise<SearchEnhancedResponse | undefined> {
|
|
433
|
-
if (!
|
|
434
|
-
Logger.warn(
|
|
435
|
-
`[MemoryEngineService] No user DID provided, skipping query "${request.query}"`,
|
|
436
|
-
);
|
|
437
|
-
return undefined;
|
|
438
|
-
}
|
|
439
|
-
if (!oracleDid) {
|
|
452
|
+
if (!roomId) {
|
|
440
453
|
Logger.warn(
|
|
441
|
-
`[MemoryEngineService] No
|
|
454
|
+
`[MemoryEngineService] No room id provided, skipping query "${request.query}"`,
|
|
442
455
|
);
|
|
443
456
|
return undefined;
|
|
444
457
|
}
|
|
445
|
-
if (!
|
|
458
|
+
if (!auth.oracleToken || !auth.userToken) {
|
|
446
459
|
Logger.warn(
|
|
447
|
-
`[MemoryEngineService]
|
|
460
|
+
`[MemoryEngineService] Missing oracle or user token, skipping query "${request.query}"`,
|
|
448
461
|
);
|
|
449
462
|
return undefined;
|
|
450
463
|
}
|
|
@@ -453,10 +466,11 @@ export class MemoryEngineService {
|
|
|
453
466
|
const response = await fetch(`${this.memoryEngineUrl}/search-enhanced`, {
|
|
454
467
|
method: 'POST',
|
|
455
468
|
headers: {
|
|
456
|
-
'x-
|
|
457
|
-
'x-
|
|
469
|
+
'x-oracle-token': auth.oracleToken,
|
|
470
|
+
'x-user-token': auth.userToken,
|
|
471
|
+
'x-oracle-matrix-homeserver': auth.oracleHomeServer,
|
|
472
|
+
'x-user-matrix-homeserver': auth.userHomeServer,
|
|
458
473
|
'x-room-id': roomId,
|
|
459
|
-
'x-service-api-key': this.memoryServiceApiKey,
|
|
460
474
|
'Content-Type': 'application/json',
|
|
461
475
|
},
|
|
462
476
|
body: JSON.stringify(request),
|
|
@@ -50,6 +50,22 @@ export class CreateChatSessionDto extends UserAuthDto {
|
|
|
50
50
|
@IsString()
|
|
51
51
|
@IsOptional()
|
|
52
52
|
slackThreadTs?: string;
|
|
53
|
+
|
|
54
|
+
@IsString()
|
|
55
|
+
@IsOptional()
|
|
56
|
+
oracleToken?: string;
|
|
57
|
+
|
|
58
|
+
@IsString()
|
|
59
|
+
@IsOptional()
|
|
60
|
+
userToken?: string;
|
|
61
|
+
|
|
62
|
+
@IsString()
|
|
63
|
+
@IsOptional()
|
|
64
|
+
oracleHomeServer?: string;
|
|
65
|
+
|
|
66
|
+
@IsString()
|
|
67
|
+
@IsOptional()
|
|
68
|
+
userHomeServer?: string;
|
|
53
69
|
}
|
|
54
70
|
|
|
55
71
|
export class DeleteChatSessionDto extends UserAuthDto {
|
|
@@ -367,13 +367,20 @@ ___________________________________________________________
|
|
|
367
367
|
|
|
368
368
|
// Gather user context from Memory Engine
|
|
369
369
|
let userContext: UserContextData | undefined;
|
|
370
|
-
if (
|
|
370
|
+
if (
|
|
371
|
+
this.memoryEngineService &&
|
|
372
|
+
createSessionDto.oracleToken &&
|
|
373
|
+
createSessionDto.userToken
|
|
374
|
+
) {
|
|
371
375
|
try {
|
|
372
376
|
Logger.debug('Gathering user context from Memory Engine');
|
|
373
377
|
userContext = await this.memoryEngineService.gatherUserContext({
|
|
374
378
|
oracleDid: createSessionDto.oracleDid,
|
|
375
|
-
userDid: createSessionDto.did,
|
|
376
379
|
roomId,
|
|
380
|
+
oracleToken: createSessionDto.oracleToken,
|
|
381
|
+
userToken: createSessionDto.userToken,
|
|
382
|
+
oracleHomeServer: createSessionDto.oracleHomeServer ?? '',
|
|
383
|
+
userHomeServer: createSessionDto.userHomeServer ?? '',
|
|
377
384
|
});
|
|
378
385
|
} catch (error) {
|
|
379
386
|
Logger.error('Failed to gather user context:', error);
|
|
@@ -57,7 +57,7 @@ export const getUserSubscription = async ({
|
|
|
57
57
|
);
|
|
58
58
|
|
|
59
59
|
if (!response.ok) {
|
|
60
|
-
|
|
60
|
+
Logger.error(
|
|
61
61
|
`Failed to fetch user subscription: ${response.status} ${response.statusText}`,
|
|
62
62
|
);
|
|
63
63
|
return null;
|
|
@@ -78,7 +78,7 @@ export const getUserSubscription = async ({
|
|
|
78
78
|
adminAddress: subscription.adminAddress,
|
|
79
79
|
};
|
|
80
80
|
} catch (error) {
|
|
81
|
-
|
|
81
|
+
Logger.error('Error fetching user subscription:', error);
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
84
84
|
};
|