@ixo/common 1.1.1 → 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.
Files changed (59) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/ai/nodes/index.d.ts +0 -1
  3. package/dist/ai/nodes/index.d.ts.map +1 -1
  4. package/dist/ai/nodes/index.js +0 -1
  5. package/dist/ai/nodes/index.js.map +1 -1
  6. package/dist/ai/tools/index.d.ts +0 -1
  7. package/dist/ai/tools/index.d.ts.map +1 -1
  8. package/dist/ai/tools/index.js +0 -1
  9. package/dist/ai/tools/index.js.map +1 -1
  10. package/dist/ai/utils/verify-matrix-openId-token.js +2 -2
  11. package/dist/ai/utils/verify-matrix-openId-token.js.map +1 -1
  12. package/dist/services/memory-engine/memory-engine.service.d.ts +10 -6
  13. package/dist/services/memory-engine/memory-engine.service.d.ts.map +1 -1
  14. package/dist/services/memory-engine/memory-engine.service.js +44 -46
  15. package/dist/services/memory-engine/memory-engine.service.js.map +1 -1
  16. package/dist/services/session-manager/dto.d.ts +4 -0
  17. package/dist/services/session-manager/dto.d.ts.map +1 -1
  18. package/dist/services/session-manager/dto.js +24 -0
  19. package/dist/services/session-manager/dto.js.map +1 -1
  20. package/dist/services/session-manager/session-manager.service.d.ts.map +1 -1
  21. package/dist/services/session-manager/session-manager.service.js +7 -2
  22. package/dist/services/session-manager/session-manager.service.js.map +1 -1
  23. package/dist/utils/get-user-subscription.js +2 -2
  24. package/dist/utils/get-user-subscription.js.map +1 -1
  25. package/package.json +5 -6
  26. package/src/ai/nodes/index.ts +0 -1
  27. package/src/ai/tools/index.ts +0 -1
  28. package/src/ai/utils/verify-matrix-openId-token.ts +2 -2
  29. package/src/services/memory-engine/memory-engine.service.ts +70 -56
  30. package/src/services/session-manager/dto.ts +16 -0
  31. package/src/services/session-manager/session-manager.service.ts +9 -2
  32. package/src/utils/get-user-subscription.ts +2 -2
  33. package/tsconfig.tsbuildinfo +1 -1
  34. package/dist/ai/nodes/find-docs/find-docs.prompt.d.ts +0 -3
  35. package/dist/ai/nodes/find-docs/find-docs.prompt.d.ts.map +0 -1
  36. package/dist/ai/nodes/find-docs/find-docs.prompt.js +0 -61
  37. package/dist/ai/nodes/find-docs/find-docs.prompt.js.map +0 -1
  38. package/dist/ai/nodes/find-docs/index.d.ts +0 -3
  39. package/dist/ai/nodes/find-docs/index.d.ts.map +0 -1
  40. package/dist/ai/nodes/find-docs/index.js +0 -3
  41. package/dist/ai/nodes/find-docs/index.js.map +0 -1
  42. package/dist/ai/nodes/find-docs/node.d.ts +0 -17
  43. package/dist/ai/nodes/find-docs/node.d.ts.map +0 -1
  44. package/dist/ai/nodes/find-docs/node.js +0 -46
  45. package/dist/ai/nodes/find-docs/node.js.map +0 -1
  46. package/dist/ai/tools/retriever-tool/index.d.ts +0 -2
  47. package/dist/ai/tools/retriever-tool/index.d.ts.map +0 -1
  48. package/dist/ai/tools/retriever-tool/index.js +0 -2
  49. package/dist/ai/tools/retriever-tool/index.js.map +0 -1
  50. package/dist/ai/tools/retriever-tool/retriever-tool.d.ts +0 -18
  51. package/dist/ai/tools/retriever-tool/retriever-tool.d.ts.map +0 -1
  52. package/dist/ai/tools/retriever-tool/retriever-tool.js +0 -62
  53. package/dist/ai/tools/retriever-tool/retriever-tool.js.map +0 -1
  54. package/src/ai/nodes/find-docs/find-docs.prompt.ts +0 -61
  55. package/src/ai/nodes/find-docs/index.ts +0 -2
  56. package/src/ai/nodes/find-docs/node.ts +0 -83
  57. package/src/ai/tools/retriever-tool/index.ts +0 -1
  58. package/src/ai/tools/retriever-tool/retriever-tool.test.ts +0 -163
  59. 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 { oracleDid, userDid, roomId } = params;
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, userDid, roomId),
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, userDid, roomId),
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, userDid, roomId),
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, userDid, roomId),
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, userDid, roomId),
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, userDid, roomId),
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, userDid, oracleDid, roomId);
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, userDid, oracleDid, roomId);
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, userDid, oracleDid, roomId);
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, userDid, oracleDid, roomId);
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, userDid, oracleDid, roomId);
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, userDid, oracleDid, roomId);
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 (!userDid) {
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 oracle did provided, skipping conversation processing`,
392
+ `[MemoryEngineService] No room id provided, skipping conversation processing`,
374
393
  );
375
394
  return { success: false };
376
395
  }
377
- if (!roomId) {
396
+ if (!oracleToken || !userToken) {
378
397
  Logger.warn(
379
- `[MemoryEngineService] No room id provided, skipping conversation processing`,
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-user-did': userDid,
395
- 'x-oracle-did': oracleDid,
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 (!userDid) {
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 oracle did provided, skipping query "${request.query}"`,
454
+ `[MemoryEngineService] No room id provided, skipping query "${request.query}"`,
442
455
  );
443
456
  return undefined;
444
457
  }
445
- if (!roomId) {
458
+ if (!auth.oracleToken || !auth.userToken) {
446
459
  Logger.warn(
447
- `[MemoryEngineService] No room id provided, skipping query "${request.query}"`,
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-user-did': userDid,
457
- 'x-oracle-did': oracleDid,
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 (this.memoryEngineService) {
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
- console.error(
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
- console.error('Error fetching user subscription:', error);
81
+ Logger.error('Error fetching user subscription:', error);
82
82
  return null;
83
83
  }
84
84
  };