@multiplayer-app/ai-agent-mongo 0.1.0-beta.8 → 0.1.0-beta.80

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 (163) hide show
  1. package/dist/cjs/__tests__/helpers.cjs +1 -1
  2. package/dist/cjs/__tests__/helpers.cjs.map +1 -1
  3. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.cjs +385 -0
  4. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.cjs.map +1 -0
  5. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.d.ts +2 -0
  6. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.d.ts.map +1 -0
  7. package/dist/cjs/__tests__/repositories/MongoAgentChatRepository.test.cjs +12 -68
  8. package/dist/cjs/__tests__/repositories/MongoAgentChatRepository.test.cjs.map +1 -1
  9. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.cjs +67 -0
  10. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.cjs.map +1 -0
  11. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.d.ts +2 -0
  12. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.d.ts.map +1 -0
  13. package/dist/cjs/__tests__/repositories/MongoAgentMessageRepository.test.cjs +92 -0
  14. package/dist/cjs/__tests__/repositories/MongoAgentMessageRepository.test.cjs.map +1 -1
  15. package/dist/cjs/__tests__/schemas/AgentChatSchema.test.cjs +20 -14
  16. package/dist/cjs/__tests__/schemas/AgentChatSchema.test.cjs.map +1 -1
  17. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.cjs +62 -0
  18. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.cjs.map +1 -0
  19. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts +2 -0
  20. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts.map +1 -0
  21. package/dist/cjs/__tests__/schemas/AgentMessageSchema.test.cjs +11 -0
  22. package/dist/cjs/__tests__/schemas/AgentMessageSchema.test.cjs.map +1 -1
  23. package/dist/cjs/index.cjs +11 -1
  24. package/dist/cjs/index.cjs.map +1 -1
  25. package/dist/cjs/index.d.ts +5 -0
  26. package/dist/cjs/index.d.ts.map +1 -1
  27. package/dist/cjs/mongo/index.cjs +2 -17
  28. package/dist/cjs/mongo/index.cjs.map +1 -1
  29. package/dist/cjs/mongo/index.d.ts +0 -3
  30. package/dist/cjs/mongo/index.d.ts.map +1 -1
  31. package/dist/cjs/repositories/MongoActivityRepository.cjs +400 -0
  32. package/dist/cjs/repositories/MongoActivityRepository.cjs.map +1 -0
  33. package/dist/cjs/repositories/MongoActivityRepository.d.ts +68 -0
  34. package/dist/cjs/repositories/MongoActivityRepository.d.ts.map +1 -0
  35. package/dist/cjs/repositories/MongoAgentChatRepository.cjs +67 -146
  36. package/dist/cjs/repositories/MongoAgentChatRepository.cjs.map +1 -1
  37. package/dist/cjs/repositories/MongoAgentChatRepository.d.ts +7 -16
  38. package/dist/cjs/repositories/MongoAgentChatRepository.d.ts.map +1 -1
  39. package/dist/cjs/repositories/MongoAgentConfigRepository.cjs +126 -0
  40. package/dist/cjs/repositories/MongoAgentConfigRepository.cjs.map +1 -0
  41. package/dist/cjs/repositories/MongoAgentConfigRepository.d.ts +25 -0
  42. package/dist/cjs/repositories/MongoAgentConfigRepository.d.ts.map +1 -0
  43. package/dist/cjs/repositories/MongoAgentMessageRepository.cjs +70 -14
  44. package/dist/cjs/repositories/MongoAgentMessageRepository.cjs.map +1 -1
  45. package/dist/cjs/repositories/MongoAgentMessageRepository.d.ts +12 -2
  46. package/dist/cjs/repositories/MongoAgentMessageRepository.d.ts.map +1 -1
  47. package/dist/cjs/repositories/MongoTenantAICredentialRepository.cjs +129 -0
  48. package/dist/cjs/repositories/MongoTenantAICredentialRepository.cjs.map +1 -0
  49. package/dist/cjs/repositories/MongoTenantAICredentialRepository.d.ts +25 -0
  50. package/dist/cjs/repositories/MongoTenantAICredentialRepository.d.ts.map +1 -0
  51. package/dist/cjs/repositories/index.cjs +3 -0
  52. package/dist/cjs/repositories/index.cjs.map +1 -1
  53. package/dist/cjs/repositories/index.d.ts +3 -0
  54. package/dist/cjs/repositories/index.d.ts.map +1 -1
  55. package/dist/cjs/schemas/ActivitySchema.cjs +34 -0
  56. package/dist/cjs/schemas/ActivitySchema.cjs.map +1 -0
  57. package/dist/cjs/schemas/ActivitySchema.d.ts +30 -0
  58. package/dist/cjs/schemas/ActivitySchema.d.ts.map +1 -0
  59. package/dist/cjs/schemas/AgentChatSchema.cjs +9 -2
  60. package/dist/cjs/schemas/AgentChatSchema.cjs.map +1 -1
  61. package/dist/cjs/schemas/AgentChatSchema.d.ts.map +1 -1
  62. package/dist/cjs/schemas/AgentConfigPreferenceSchema.cjs +24 -0
  63. package/dist/cjs/schemas/AgentConfigPreferenceSchema.cjs.map +1 -0
  64. package/dist/cjs/schemas/AgentConfigPreferenceSchema.d.ts +24 -0
  65. package/dist/cjs/schemas/AgentConfigPreferenceSchema.d.ts.map +1 -0
  66. package/dist/cjs/schemas/AgentMessageSchema.cjs +21 -4
  67. package/dist/cjs/schemas/AgentMessageSchema.cjs.map +1 -1
  68. package/dist/cjs/schemas/AgentMessageSchema.d.ts.map +1 -1
  69. package/dist/cjs/schemas/TenantAICredentialSchema.cjs +17 -0
  70. package/dist/cjs/schemas/TenantAICredentialSchema.cjs.map +1 -0
  71. package/dist/cjs/schemas/TenantAICredentialSchema.d.ts +20 -0
  72. package/dist/cjs/schemas/TenantAICredentialSchema.d.ts.map +1 -0
  73. package/dist/cjs/schemas/index.cjs +3 -0
  74. package/dist/cjs/schemas/index.cjs.map +1 -1
  75. package/dist/cjs/schemas/index.d.ts +3 -0
  76. package/dist/cjs/schemas/index.d.ts.map +1 -1
  77. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  78. package/dist/esm/__tests__/helpers.js +1 -1
  79. package/dist/esm/__tests__/helpers.js.map +1 -1
  80. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.d.ts +2 -0
  81. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.d.ts.map +1 -0
  82. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.js +383 -0
  83. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.js.map +1 -0
  84. package/dist/esm/__tests__/repositories/MongoAgentChatRepository.test.js +12 -68
  85. package/dist/esm/__tests__/repositories/MongoAgentChatRepository.test.js.map +1 -1
  86. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.d.ts +2 -0
  87. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.d.ts.map +1 -0
  88. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.js +65 -0
  89. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.js.map +1 -0
  90. package/dist/esm/__tests__/repositories/MongoAgentMessageRepository.test.js +92 -0
  91. package/dist/esm/__tests__/repositories/MongoAgentMessageRepository.test.js.map +1 -1
  92. package/dist/esm/__tests__/schemas/AgentChatSchema.test.js +20 -14
  93. package/dist/esm/__tests__/schemas/AgentChatSchema.test.js.map +1 -1
  94. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts +2 -0
  95. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts.map +1 -0
  96. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.js +60 -0
  97. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.js.map +1 -0
  98. package/dist/esm/__tests__/schemas/AgentMessageSchema.test.js +11 -0
  99. package/dist/esm/__tests__/schemas/AgentMessageSchema.test.js.map +1 -1
  100. package/dist/esm/index.d.ts +5 -0
  101. package/dist/esm/index.d.ts.map +1 -1
  102. package/dist/esm/index.js +5 -0
  103. package/dist/esm/index.js.map +1 -1
  104. package/dist/esm/mongo/index.d.ts +0 -3
  105. package/dist/esm/mongo/index.d.ts.map +1 -1
  106. package/dist/esm/mongo/index.js +1 -16
  107. package/dist/esm/mongo/index.js.map +1 -1
  108. package/dist/esm/repositories/MongoActivityRepository.d.ts +68 -0
  109. package/dist/esm/repositories/MongoActivityRepository.d.ts.map +1 -0
  110. package/dist/esm/repositories/MongoActivityRepository.js +395 -0
  111. package/dist/esm/repositories/MongoActivityRepository.js.map +1 -0
  112. package/dist/esm/repositories/MongoAgentChatRepository.d.ts +7 -16
  113. package/dist/esm/repositories/MongoAgentChatRepository.d.ts.map +1 -1
  114. package/dist/esm/repositories/MongoAgentChatRepository.js +68 -147
  115. package/dist/esm/repositories/MongoAgentChatRepository.js.map +1 -1
  116. package/dist/esm/repositories/MongoAgentConfigRepository.d.ts +25 -0
  117. package/dist/esm/repositories/MongoAgentConfigRepository.d.ts.map +1 -0
  118. package/dist/esm/repositories/MongoAgentConfigRepository.js +122 -0
  119. package/dist/esm/repositories/MongoAgentConfigRepository.js.map +1 -0
  120. package/dist/esm/repositories/MongoAgentMessageRepository.d.ts +12 -2
  121. package/dist/esm/repositories/MongoAgentMessageRepository.d.ts.map +1 -1
  122. package/dist/esm/repositories/MongoAgentMessageRepository.js +70 -14
  123. package/dist/esm/repositories/MongoAgentMessageRepository.js.map +1 -1
  124. package/dist/esm/repositories/MongoTenantAICredentialRepository.d.ts +25 -0
  125. package/dist/esm/repositories/MongoTenantAICredentialRepository.d.ts.map +1 -0
  126. package/dist/esm/repositories/MongoTenantAICredentialRepository.js +125 -0
  127. package/dist/esm/repositories/MongoTenantAICredentialRepository.js.map +1 -0
  128. package/dist/esm/repositories/index.d.ts +3 -0
  129. package/dist/esm/repositories/index.d.ts.map +1 -1
  130. package/dist/esm/repositories/index.js +3 -0
  131. package/dist/esm/repositories/index.js.map +1 -1
  132. package/dist/esm/schemas/ActivitySchema.d.ts +30 -0
  133. package/dist/esm/schemas/ActivitySchema.d.ts.map +1 -0
  134. package/dist/esm/schemas/ActivitySchema.js +31 -0
  135. package/dist/esm/schemas/ActivitySchema.js.map +1 -0
  136. package/dist/esm/schemas/AgentChatSchema.d.ts.map +1 -1
  137. package/dist/esm/schemas/AgentChatSchema.js +10 -3
  138. package/dist/esm/schemas/AgentChatSchema.js.map +1 -1
  139. package/dist/esm/schemas/AgentConfigPreferenceSchema.d.ts +24 -0
  140. package/dist/esm/schemas/AgentConfigPreferenceSchema.d.ts.map +1 -0
  141. package/dist/esm/schemas/AgentConfigPreferenceSchema.js +21 -0
  142. package/dist/esm/schemas/AgentConfigPreferenceSchema.js.map +1 -0
  143. package/dist/esm/schemas/AgentMessageSchema.d.ts.map +1 -1
  144. package/dist/esm/schemas/AgentMessageSchema.js +21 -4
  145. package/dist/esm/schemas/AgentMessageSchema.js.map +1 -1
  146. package/dist/esm/schemas/TenantAICredentialSchema.d.ts +20 -0
  147. package/dist/esm/schemas/TenantAICredentialSchema.d.ts.map +1 -0
  148. package/dist/esm/schemas/TenantAICredentialSchema.js +14 -0
  149. package/dist/esm/schemas/TenantAICredentialSchema.js.map +1 -0
  150. package/dist/esm/schemas/index.d.ts +3 -0
  151. package/dist/esm/schemas/index.d.ts.map +1 -1
  152. package/dist/esm/schemas/index.js +3 -0
  153. package/dist/esm/schemas/index.js.map +1 -1
  154. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  155. package/package.json +4 -5
  156. package/dist/cjs/mongo/encryption.cjs +0 -149
  157. package/dist/cjs/mongo/encryption.cjs.map +0 -1
  158. package/dist/cjs/mongo/encryption.d.ts +0 -66
  159. package/dist/cjs/mongo/encryption.d.ts.map +0 -1
  160. package/dist/esm/mongo/encryption.d.ts +0 -66
  161. package/dist/esm/mongo/encryption.d.ts.map +0 -1
  162. package/dist/esm/mongo/encryption.js +0 -140
  163. package/dist/esm/mongo/encryption.js.map +0 -1
@@ -20,12 +20,12 @@ async function clearCollections() {
20
20
  * Create a test AgentChat object
21
21
  */
22
22
  function createTestChat(overrides) {
23
- const now = new Date().toISOString();
24
23
  return {
25
24
  title: 'Test Chat',
26
25
  contextKey: 'test-context',
27
26
  model: 'gpt-4',
28
27
  metadata: {},
28
+ tenants: { userId: 'guest' },
29
29
  ...overrides,
30
30
  };
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/__tests__/helpers.ts"],"names":[],"mappings":";;AAOA,4CAKC;AAKD,wCASC;AAKD,8CAaC;AAKD,wEAkBC;AAKD,4EAgBC;AAvFD,oEAAwG;AACxG,oCAAoC;AAEpC;;GAEG;AACI,KAAK,UAAU,gBAAgB;IACpC,MAAM,WAAW,GAAG,gBAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,SAA8B;IAC3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,MAAc,EACd,SAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,4BAAW,CAAC,IAAI;QACtB,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,8BAA8B,CAC5C,MAAc,EACd,SAAiC;IAEjC,OAAO,iBAAiB,CAAC,MAAM,EAAE;QAC/B,IAAI,EAAE,4BAAW,CAAC,SAAS;QAC3B,OAAO,EAAE,mBAAmB;QAC5B,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,aAAa;gBACjB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACxB,MAAM,EAAE,oCAAmB,CAAC,OAAO;gBACnC,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC,CAC9C,MAAc,EACd,SAAiC;IAEjC,OAAO,iBAAiB,CAAC,MAAM,EAAE;QAC/B,WAAW,EAAE;YACX;gBACE,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,oCAAmB,CAAC,IAAI;gBAC9B,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,8BAA8B;gBACnC,QAAQ,EAAE,YAAY;aACvB;SACF;QACD,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/__tests__/helpers.ts"],"names":[],"mappings":";;AAOA,4CAKC;AAKD,wCASC;AAKD,8CAaC;AAKD,wEAkBC;AAKD,4EAgBC;AAvFD,oEAAwG;AACxG,oCAAoC;AAEpC;;GAEG;AACI,KAAK,UAAU,gBAAgB;IACpC,MAAM,WAAW,GAAG,gBAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,SAA8B;IAC3D,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;QAC5B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,MAAc,EACd,SAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,4BAAW,CAAC,IAAI;QACtB,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,8BAA8B,CAC5C,MAAc,EACd,SAAiC;IAEjC,OAAO,iBAAiB,CAAC,MAAM,EAAE;QAC/B,IAAI,EAAE,4BAAW,CAAC,SAAS;QAC3B,OAAO,EAAE,mBAAmB;QAC5B,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,aAAa;gBACjB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBACxB,MAAM,EAAE,oCAAmB,CAAC,OAAO;gBACnC,oBAAoB,EAAE,KAAK;aAC5B;SACF;QACD,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC,CAC9C,MAAc,EACd,SAAiC;IAEjC,OAAO,iBAAiB,CAAC,MAAM,EAAE;QAC/B,WAAW,EAAE;YACX;gBACE,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,oCAAmB,CAAC,IAAI;gBAC9B,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,8BAA8B;gBACnC,QAAQ,EAAE,YAAY;aACvB;SACF;QACD,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,385 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const ai_agent_types_1 = require("@multiplayer-app/ai-agent-types");
5
+ const MongoActivityRepository_1 = require("../../repositories/MongoActivityRepository.cjs");
6
+ const ActivitySchema_1 = require("../../schemas/ActivitySchema.cjs");
7
+ const helpers_1 = require("../helpers.cjs");
8
+ function createTestActivity(overrides) {
9
+ return {
10
+ ownerId: 'owner-1',
11
+ groupId: 'group-1',
12
+ name: 'Test Activity',
13
+ description: 'test description',
14
+ tenants: { workspace: 'tenant-1' },
15
+ sourceId: 'source-1',
16
+ sourceType: 'User',
17
+ metadata: {},
18
+ ...overrides,
19
+ };
20
+ }
21
+ (0, vitest_1.describe)('MongoActivityRepository', () => {
22
+ let repository;
23
+ (0, vitest_1.beforeEach)(async () => {
24
+ repository = new MongoActivityRepository_1.MongoActivityRepository();
25
+ await (0, helpers_1.clearCollections)();
26
+ });
27
+ (0, vitest_1.describe)('create', () => {
28
+ (0, vitest_1.it)('should create a new activity', async () => {
29
+ const created = await repository.create(createTestActivity({ name: 'New Activity' }));
30
+ (0, vitest_1.expect)(created).toBeDefined();
31
+ (0, vitest_1.expect)(created.id).toBeDefined();
32
+ (0, vitest_1.expect)(created.name).toBe('New Activity');
33
+ (0, vitest_1.expect)(created.ownerId).toBe('owner-1');
34
+ (0, vitest_1.expect)(created.groupId).toBe('group-1');
35
+ (0, vitest_1.expect)(created.tenants).toEqual({ workspace: 'tenant-1' });
36
+ });
37
+ (0, vitest_1.it)('should create activity with explicit id when provided', async () => {
38
+ const explicitId = '507f1f77bcf86cd799439011';
39
+ const created = await repository.create(createTestActivity(), explicitId);
40
+ (0, vitest_1.expect)(created.id).toBe(explicitId);
41
+ });
42
+ });
43
+ (0, vitest_1.describe)('findById', () => {
44
+ (0, vitest_1.it)('should find activity by id', async () => {
45
+ const created = await repository.create(createTestActivity({ name: 'Find Me' }));
46
+ const found = await repository.findById(created.id);
47
+ (0, vitest_1.expect)(found).toBeDefined();
48
+ (0, vitest_1.expect)(found?.id).toBe(created.id);
49
+ (0, vitest_1.expect)(found?.name).toBe('Find Me');
50
+ });
51
+ (0, vitest_1.it)('should return null when activity is not found', async () => {
52
+ const found = await repository.findById('507f1f77bcf86cd799439099');
53
+ (0, vitest_1.expect)(found).toBeNull();
54
+ });
55
+ });
56
+ (0, vitest_1.describe)('find', () => {
57
+ (0, vitest_1.it)('should find activities by filter', async () => {
58
+ await repository.create(createTestActivity({ ownerId: 'owner-a', name: 'A1' }));
59
+ await repository.create(createTestActivity({ ownerId: 'owner-a', name: 'A2' }));
60
+ await repository.create(createTestActivity({ ownerId: 'owner-b', name: 'B1' }));
61
+ const activities = await repository.find({ ownerId: 'owner-a' });
62
+ (0, vitest_1.expect)(activities).toHaveLength(2);
63
+ (0, vitest_1.expect)(activities.every(a => a.ownerId === 'owner-a')).toBe(true);
64
+ });
65
+ (0, vitest_1.it)('should support id in filter', async () => {
66
+ const created = await repository.create(createTestActivity({ name: 'Specific' }));
67
+ const activities = await repository.find({ id: created.id });
68
+ (0, vitest_1.expect)(activities).toHaveLength(1);
69
+ (0, vitest_1.expect)(activities[0].id).toBe(created.id);
70
+ });
71
+ (0, vitest_1.it)('should support sort, limit, and skip options', async () => {
72
+ await repository.create(createTestActivity({ name: 'Charlie', ownerId: 'owner-sort' }));
73
+ await repository.create(createTestActivity({ name: 'Alpha', ownerId: 'owner-sort' }));
74
+ await repository.create(createTestActivity({ name: 'Bravo', ownerId: 'owner-sort' }));
75
+ const activities = await repository.find({ ownerId: 'owner-sort' }, { sort: { field: 'name', order: ai_agent_types_1.SortOrder.Asc }, skip: 1, limit: 1 });
76
+ (0, vitest_1.expect)(activities).toHaveLength(1);
77
+ (0, vitest_1.expect)(activities[0].name).toBe('Bravo');
78
+ });
79
+ });
80
+ (0, vitest_1.describe)('findOne', () => {
81
+ (0, vitest_1.it)('should find one activity matching filter', async () => {
82
+ await repository.create(createTestActivity({ ownerId: 'owner-one', name: 'Only One' }));
83
+ const found = await repository.findOne({ ownerId: 'owner-one' });
84
+ (0, vitest_1.expect)(found).toBeDefined();
85
+ (0, vitest_1.expect)(found?.name).toBe('Only One');
86
+ });
87
+ (0, vitest_1.it)('should return null when no activity matches', async () => {
88
+ const found = await repository.findOne({ ownerId: 'missing-owner' });
89
+ (0, vitest_1.expect)(found).toBeNull();
90
+ });
91
+ });
92
+ (0, vitest_1.describe)('update', () => {
93
+ (0, vitest_1.it)('should update an activity', async () => {
94
+ const created = await repository.create(createTestActivity({ name: 'Before' }));
95
+ const updated = await repository.update(created.id, { name: 'After' });
96
+ (0, vitest_1.expect)(updated).toBeDefined();
97
+ (0, vitest_1.expect)(updated?.name).toBe('After');
98
+ });
99
+ (0, vitest_1.it)('should update metadata usage without overriding metadata', async () => {
100
+ const created = await repository.create(createTestActivity({
101
+ metadata: {
102
+ traceId: 'trace-1',
103
+ usage: {
104
+ inputTokens: 10,
105
+ outputTokens: 5,
106
+ cost: 1.2
107
+ }
108
+ }
109
+ }));
110
+ const updated = await repository.update(created.id, {
111
+ metadata: {
112
+ usage: {
113
+ inputTokens: 100
114
+ }
115
+ }
116
+ });
117
+ (0, vitest_1.expect)(updated).toBeDefined();
118
+ (0, vitest_1.expect)(updated?.metadata?.traceId).toBe('trace-1');
119
+ (0, vitest_1.expect)(updated?.metadata?.usage).toEqual({
120
+ inputTokens: 100,
121
+ outputTokens: 5,
122
+ cost: 1.2
123
+ });
124
+ });
125
+ (0, vitest_1.it)('should return null when updating missing activity', async () => {
126
+ const updated = await repository.update('507f1f77bcf86cd799439088', { name: 'After' });
127
+ (0, vitest_1.expect)(updated).toBeNull();
128
+ });
129
+ });
130
+ (0, vitest_1.describe)('delete and exists', () => {
131
+ (0, vitest_1.it)('should delete activity by id', async () => {
132
+ const created = await repository.create(createTestActivity());
133
+ const deleted = await repository.delete(created.id);
134
+ (0, vitest_1.expect)(deleted).toBe(true);
135
+ (0, vitest_1.expect)(await repository.exists(created.id)).toBe(false);
136
+ });
137
+ (0, vitest_1.it)('should return false when deleting missing activity', async () => {
138
+ const deleted = await repository.delete('507f1f77bcf86cd799439077');
139
+ (0, vitest_1.expect)(deleted).toBe(false);
140
+ });
141
+ });
142
+ (0, vitest_1.describe)('count', () => {
143
+ (0, vitest_1.it)('should count all and filtered activities', async () => {
144
+ await repository.create(createTestActivity({ ownerId: 'owner-count' }));
145
+ await repository.create(createTestActivity({ ownerId: 'owner-count' }));
146
+ await repository.create(createTestActivity({ ownerId: 'other-owner' }));
147
+ (0, vitest_1.expect)(await repository.count()).toBe(3);
148
+ (0, vitest_1.expect)(await repository.count({ ownerId: 'owner-count' })).toBe(2);
149
+ });
150
+ });
151
+ (0, vitest_1.describe)('findByParentId and countByParentId', () => {
152
+ (0, vitest_1.it)('should find and count root activities when parentId is not provided', async () => {
153
+ await repository.create(createTestActivity({ ownerId: 'owner-root', name: 'Root 1' }));
154
+ await repository.create(createTestActivity({ ownerId: 'owner-root', name: 'Root 2' }));
155
+ await repository.create(createTestActivity({ ownerId: 'owner-root', name: 'Child', parentId: 'p-1' }));
156
+ const roots = await repository.findByParentId({ ownerId: 'owner-root' });
157
+ const rootCount = await repository.countByParentId({ ownerId: 'owner-root' });
158
+ (0, vitest_1.expect)(roots).toHaveLength(2);
159
+ (0, vitest_1.expect)(roots.every(a => !a.parentId)).toBe(true);
160
+ (0, vitest_1.expect)(rootCount).toBe(2);
161
+ });
162
+ (0, vitest_1.it)('should filter by parentId and support sort/skip/limit', async () => {
163
+ await repository.create(createTestActivity({ parentId: 'parent-1', ownerId: 'owner-p', name: 'Child C' }));
164
+ await repository.create(createTestActivity({ parentId: 'parent-1', ownerId: 'owner-p', name: 'Child A' }));
165
+ await repository.create(createTestActivity({ parentId: 'parent-1', ownerId: 'owner-p', name: 'Child B' }));
166
+ await repository.create(createTestActivity({ parentId: 'parent-2', ownerId: 'owner-p', name: 'Other Parent Child' }));
167
+ const children = await repository.findByParentId({ ownerId: 'owner-p', parentId: 'parent-1' }, { sort: { field: 'name', order: ai_agent_types_1.SortOrder.Asc }, skip: 1, limit: 1 });
168
+ const count = await repository.countByParentId({ ownerId: 'owner-p', parentId: 'parent-1' });
169
+ (0, vitest_1.expect)(children).toHaveLength(1);
170
+ (0, vitest_1.expect)(children[0].name).toBe('Child B');
171
+ (0, vitest_1.expect)(count).toBe(3);
172
+ });
173
+ (0, vitest_1.it)('should filter by tenants for parent queries', async () => {
174
+ await repository.create(createTestActivity({ parentId: 'tenant-parent', tenants: { workspace: 'tenant-a' }, ownerId: 'owner-t' }));
175
+ await repository.create(createTestActivity({ parentId: 'tenant-parent', tenants: { workspace: 'tenant-b' }, ownerId: 'owner-t' }));
176
+ const filtered = await repository.findByParentId({
177
+ parentId: 'tenant-parent',
178
+ ownerId: 'owner-t',
179
+ tenants: { workspace: 'tenant-a' },
180
+ });
181
+ (0, vitest_1.expect)(filtered).toHaveLength(1);
182
+ (0, vitest_1.expect)(filtered[0].tenants).toEqual({ workspace: 'tenant-a' });
183
+ });
184
+ (0, vitest_1.it)('should filter by sourceType', async () => {
185
+ await repository.create(createTestActivity({ ownerId: 'owner-st', name: 'A', sourceType: 'Chat', parentId: 'p-st' }));
186
+ await repository.create(createTestActivity({ ownerId: 'owner-st', name: 'B', sourceType: 'AgentMessage', parentId: 'p-st' }));
187
+ const chats = await repository.findByParentId({ ownerId: 'owner-st', parentId: 'p-st', sourceType: 'Chat' });
188
+ const count = await repository.countByParentId({ ownerId: 'owner-st', parentId: 'p-st', sourceType: 'Chat' });
189
+ (0, vitest_1.expect)(chats).toHaveLength(1);
190
+ (0, vitest_1.expect)(chats[0].name).toBe('A');
191
+ (0, vitest_1.expect)(chats[0].sourceType).toBe('Chat');
192
+ (0, vitest_1.expect)(count).toBe(1);
193
+ });
194
+ });
195
+ (0, vitest_1.describe)('distinctSourceTypes', () => {
196
+ (0, vitest_1.it)('should return sorted distinct source types for the same scope as parent list', async () => {
197
+ await repository.create(createTestActivity({ ownerId: 'o-d', name: 'R1', sourceType: 'Zebra' }));
198
+ await repository.create(createTestActivity({ ownerId: 'o-d', name: 'R2', sourceType: 'Alpha' }));
199
+ await repository.create(createTestActivity({ ownerId: 'o-d', name: 'R3', sourceType: 'Alpha' }));
200
+ await repository.create(createTestActivity({ ownerId: 'o-other', name: 'Other', sourceType: 'Beta' }));
201
+ const types = await repository.distinctSourceTypes({ ownerId: 'o-d' });
202
+ (0, vitest_1.expect)(types).toEqual(['Alpha', 'Zebra']);
203
+ });
204
+ });
205
+ (0, vitest_1.describe)('deleteByOwnerId and deleteByGroupId', () => {
206
+ (0, vitest_1.it)('should delete all activities by ownerId', async () => {
207
+ await repository.create(createTestActivity({ ownerId: 'owner-delete', groupId: 'group-1' }));
208
+ await repository.create(createTestActivity({ ownerId: 'owner-delete', groupId: 'group-2' }));
209
+ await repository.create(createTestActivity({ ownerId: 'owner-keep', groupId: 'group-1' }));
210
+ const deletedCount = await repository.deleteByOwnerId('owner-delete');
211
+ (0, vitest_1.expect)(deletedCount).toBe(2);
212
+ (0, vitest_1.expect)(await repository.count({ ownerId: 'owner-delete' })).toBe(0);
213
+ (0, vitest_1.expect)(await repository.count({ ownerId: 'owner-keep' })).toBe(1);
214
+ });
215
+ (0, vitest_1.it)('should delete all activities by groupId', async () => {
216
+ await repository.create(createTestActivity({ groupId: 'group-delete', ownerId: 'owner-1' }));
217
+ await repository.create(createTestActivity({ groupId: 'group-delete', ownerId: 'owner-2' }));
218
+ await repository.create(createTestActivity({ groupId: 'group-keep', ownerId: 'owner-3' }));
219
+ const deletedCount = await repository.deleteByGroupId('group-delete');
220
+ (0, vitest_1.expect)(deletedCount).toBe(2);
221
+ (0, vitest_1.expect)(await repository.count({ groupId: 'group-delete' })).toBe(0);
222
+ (0, vitest_1.expect)(await repository.count({ groupId: 'group-keep' })).toBe(1);
223
+ });
224
+ });
225
+ (0, vitest_1.describe)('getActivitySummary', () => {
226
+ (0, vitest_1.it)('should return totals grouped by model by default', async () => {
227
+ await repository.create(createTestActivity({
228
+ ownerId: 'user-1',
229
+ parentId: 'root-1',
230
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 120, cost: 1.2 } },
231
+ }));
232
+ await repository.create(createTestActivity({
233
+ ownerId: 'user-2',
234
+ parentId: 'root-2',
235
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 80, cost: 0.8 } },
236
+ }));
237
+ await repository.create(createTestActivity({
238
+ ownerId: 'user-1',
239
+ parentId: 'root-3',
240
+ metadata: { modelId: 'claude-3-5-sonnet', usage: { totalTokens: 50, cost: 0.5 } },
241
+ }));
242
+ const summary = await repository.getActivitySummary();
243
+ const byModel = Object.fromEntries(summary.map(item => [item.model, item]));
244
+ (0, vitest_1.expect)(summary).toHaveLength(2);
245
+ (0, vitest_1.expect)(byModel['gpt-4o']).toEqual({
246
+ model: 'gpt-4o',
247
+ totalRequests: 2,
248
+ totalTokens: 200,
249
+ totalCost: 2,
250
+ });
251
+ (0, vitest_1.expect)(byModel['claude-3-5-sonnet']).toEqual({
252
+ model: 'claude-3-5-sonnet',
253
+ totalRequests: 1,
254
+ totalTokens: 50,
255
+ totalCost: 0.5,
256
+ });
257
+ });
258
+ (0, vitest_1.it)('should filter by tenant and group by userId', async () => {
259
+ await repository.create(createTestActivity({
260
+ ownerId: 'user-a',
261
+ parentId: 'root-a',
262
+ tenants: { workspace: 'tenant-a' },
263
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 10, cost: 0.1 } },
264
+ }));
265
+ await repository.create(createTestActivity({
266
+ ownerId: 'user-b',
267
+ parentId: 'root-b',
268
+ tenants: { workspace: 'tenant-a' },
269
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 20, cost: 0.2 } },
270
+ }));
271
+ await repository.create(createTestActivity({
272
+ ownerId: 'user-a',
273
+ parentId: 'root-c',
274
+ tenants: { workspace: 'tenant-b' },
275
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 30, cost: 0.3 } },
276
+ }));
277
+ const summary = await repository.getActivitySummary({
278
+ tenant: { workspace: 'tenant-a' },
279
+ groupBy: ['userId'],
280
+ });
281
+ const byUser = Object.fromEntries(summary.map(item => [item.userId, item]));
282
+ (0, vitest_1.expect)(summary).toHaveLength(2);
283
+ (0, vitest_1.expect)(byUser['user-a']).toEqual({
284
+ userId: 'user-a',
285
+ totalRequests: 1,
286
+ totalTokens: 10,
287
+ totalCost: 0.1,
288
+ });
289
+ (0, vitest_1.expect)(byUser['user-b']).toEqual({
290
+ userId: 'user-b',
291
+ totalRequests: 1,
292
+ totalTokens: 20,
293
+ totalCost: 0.2,
294
+ });
295
+ });
296
+ (0, vitest_1.it)('should ignore root activities without parentId', async () => {
297
+ await repository.create(createTestActivity({
298
+ ownerId: 'user-1',
299
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 100, cost: 1 } },
300
+ }));
301
+ await repository.create(createTestActivity({
302
+ ownerId: 'user-1',
303
+ parentId: 'root-1',
304
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 25, cost: 0.25 } },
305
+ }));
306
+ const summary = await repository.getActivitySummary({ groupBy: ['model'] });
307
+ (0, vitest_1.expect)(summary).toHaveLength(1);
308
+ (0, vitest_1.expect)(summary[0]).toEqual({
309
+ model: 'gpt-4o',
310
+ totalRequests: 1,
311
+ totalTokens: 25,
312
+ totalCost: 0.25,
313
+ });
314
+ });
315
+ (0, vitest_1.it)('should support grouping by day using timeBucket', async () => {
316
+ await ActivitySchema_1.ActivityModel.collection.insertMany([
317
+ {
318
+ ownerId: 'user-1',
319
+ groupId: 'group-1',
320
+ name: 'Test Activity',
321
+ description: 'test description',
322
+ parentId: 'root-1',
323
+ tenants: { workspace: 'tenant-1' },
324
+ sourceId: 'source-1',
325
+ sourceType: 'User',
326
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 10, cost: 0.1 } },
327
+ createdAt: new Date('2026-02-01T10:00:00.000Z'),
328
+ updatedAt: new Date('2026-02-01T10:00:00.000Z'),
329
+ },
330
+ {
331
+ ownerId: 'user-1',
332
+ groupId: 'group-1',
333
+ name: 'Test Activity',
334
+ description: 'test description',
335
+ parentId: 'root-2',
336
+ tenants: { workspace: 'tenant-1' },
337
+ sourceId: 'source-2',
338
+ sourceType: 'User',
339
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 15, cost: 0.15 } },
340
+ createdAt: new Date('2026-02-01T18:00:00.000Z'),
341
+ updatedAt: new Date('2026-02-01T18:00:00.000Z'),
342
+ },
343
+ {
344
+ ownerId: 'user-1',
345
+ groupId: 'group-1',
346
+ name: 'Test Activity',
347
+ description: 'test description',
348
+ parentId: 'root-3',
349
+ tenants: { workspace: 'tenant-1' },
350
+ sourceId: 'source-3',
351
+ sourceType: 'User',
352
+ metadata: { modelId: 'gpt-4o', usage: { totalTokens: 20, cost: 0.2 } },
353
+ createdAt: new Date('2026-02-02T09:00:00.000Z'),
354
+ updatedAt: new Date('2026-02-02T09:00:00.000Z'),
355
+ },
356
+ ]);
357
+ const summary = await repository.getActivitySummary({
358
+ period: {
359
+ from: '2026-02-01T00:00:00.000Z',
360
+ to: '2026-02-28T23:59:59.999Z',
361
+ },
362
+ timeBucket: 'day',
363
+ groupBy: ['model'],
364
+ });
365
+ (0, vitest_1.expect)(summary).toHaveLength(2);
366
+ (0, vitest_1.expect)(summary).toEqual([
367
+ {
368
+ model: 'gpt-4o',
369
+ periodStart: '2026-02-01T00:00:00.000Z',
370
+ totalRequests: 2,
371
+ totalTokens: 25,
372
+ totalCost: 0.25,
373
+ },
374
+ {
375
+ model: 'gpt-4o',
376
+ periodStart: '2026-02-02T00:00:00.000Z',
377
+ totalRequests: 1,
378
+ totalTokens: 20,
379
+ totalCost: 0.2,
380
+ },
381
+ ]);
382
+ });
383
+ });
384
+ });
385
+ //# sourceMappingURL=MongoActivityRepository.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoActivityRepository.test.js","sourceRoot":"","sources":["../../../../src/__tests__/repositories/MongoActivityRepository.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MongoActivityRepository.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoActivityRepository.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/repositories/MongoActivityRepository.test.ts"],"names":[],"mappings":""}
@@ -14,27 +14,17 @@ const helpers_1 = require("../helpers.cjs");
14
14
  const chatData = (0, helpers_1.createTestChat)({
15
15
  title: 'New Chat',
16
16
  contextKey: 'test-context',
17
- userId: 'user-123',
17
+ tenants: { userId: 'user-123' },
18
18
  });
19
19
  const chat = await repository.create(chatData);
20
20
  (0, vitest_1.expect)(chat).toBeDefined();
21
21
  (0, vitest_1.expect)(chat.id).toBeDefined();
22
22
  (0, vitest_1.expect)(chat.title).toBe('New Chat');
23
23
  (0, vitest_1.expect)(chat.contextKey).toBe('test-context');
24
- (0, vitest_1.expect)(chat.userId).toBe('user-123');
24
+ (0, vitest_1.expect)(chat.tenants).toEqual({ userId: 'user-123' });
25
25
  (0, vitest_1.expect)(chat.createdAt).toBeDefined();
26
26
  (0, vitest_1.expect)(chat.updatedAt).toBeDefined();
27
27
  });
28
- (0, vitest_1.it)('should create a guest chat (no userId)', async () => {
29
- const chatData = (0, helpers_1.createTestChat)({
30
- title: 'Guest Chat',
31
- contextKey: 'test-context',
32
- });
33
- delete chatData.userId;
34
- const chat = await repository.create(chatData);
35
- (0, vitest_1.expect)(chat).toBeDefined();
36
- (0, vitest_1.expect)(chat.userId).toBeUndefined();
37
- });
38
28
  (0, vitest_1.it)('should include metadata when provided', async () => {
39
29
  const chatData = (0, helpers_1.createTestChat)({
40
30
  metadata: { key: 'value', count: 42 },
@@ -79,11 +69,11 @@ const helpers_1 = require("../helpers.cjs");
79
69
  (0, vitest_1.expect)(chats).toHaveLength(1);
80
70
  (0, vitest_1.expect)(chats[0].id).toBe(created.id);
81
71
  });
82
- (0, vitest_1.it)('should find chats by userId', async () => {
83
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1' }));
84
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1' }));
85
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-2' }));
86
- const chats = await repository.find({ userId: 'user-1' });
72
+ (0, vitest_1.it)('should find chats by tenants', async () => {
73
+ await repository.create((0, helpers_1.createTestChat)({ tenants: { userId: 'user-1' } }));
74
+ await repository.create((0, helpers_1.createTestChat)({ tenants: { userId: 'user-1' } }));
75
+ await repository.create((0, helpers_1.createTestChat)({ tenants: { userId: 'user-2' } }));
76
+ const chats = await repository.find({ tenants: { userId: 'user-1' } });
87
77
  (0, vitest_1.expect)(chats).toHaveLength(2);
88
78
  });
89
79
  });
@@ -160,52 +150,6 @@ const helpers_1 = require("../helpers.cjs");
160
150
  (0, vitest_1.expect)(count).toBe(2);
161
151
  });
162
152
  });
163
- (0, vitest_1.describe)('findByUserId', () => {
164
- (0, vitest_1.it)('should find all chats for a user', async () => {
165
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1' }));
166
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1' }));
167
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-2' }));
168
- const chats = await repository.findByUserId('user-1');
169
- (0, vitest_1.expect)(chats).toHaveLength(2);
170
- (0, vitest_1.expect)(chats.every(c => c.userId === 'user-1')).toBe(true);
171
- });
172
- (0, vitest_1.it)('should return empty array if user has no chats', async () => {
173
- const chats = await repository.findByUserId('non-existent');
174
- (0, vitest_1.expect)(chats).toHaveLength(0);
175
- });
176
- });
177
- (0, vitest_1.describe)('findByContextKey', () => {
178
- (0, vitest_1.it)('should find all chats for a context key', async () => {
179
- await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-1' }));
180
- await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-1' }));
181
- await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-2' }));
182
- const chats = await repository.findByContextKey('ctx-1');
183
- (0, vitest_1.expect)(chats).toHaveLength(2);
184
- (0, vitest_1.expect)(chats.every(c => c.contextKey === 'ctx-1')).toBe(true);
185
- });
186
- });
187
- (0, vitest_1.describe)('findByUserIdAndContextKey', () => {
188
- (0, vitest_1.it)('should find chats matching both userId and contextKey', async () => {
189
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1', contextKey: 'ctx-1' }));
190
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1', contextKey: 'ctx-1' }));
191
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1', contextKey: 'ctx-2' }));
192
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-2', contextKey: 'ctx-1' }));
193
- const chats = await repository.findByUserIdAndContextKey('user-1', 'ctx-1');
194
- (0, vitest_1.expect)(chats).toHaveLength(2);
195
- (0, vitest_1.expect)(chats.every(c => c.userId === 'user-1' && c.contextKey === 'ctx-1')).toBe(true);
196
- });
197
- });
198
- (0, vitest_1.describe)('findGuestChatsByContextKey', () => {
199
- (0, vitest_1.it)('should find guest chats (no userId) for a context key', async () => {
200
- await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-1' })); // guest
201
- await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-1' })); // guest
202
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1', contextKey: 'ctx-1' }));
203
- await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-2' })); // guest
204
- const chats = await repository.findGuestChatsByContextKey('ctx-1');
205
- (0, vitest_1.expect)(chats).toHaveLength(2);
206
- (0, vitest_1.expect)(chats.every(c => !c.userId && c.contextKey === 'ctx-1')).toBe(true);
207
- });
208
- });
209
153
  (0, vitest_1.describe)('updateTitle', () => {
210
154
  (0, vitest_1.it)('should update chat title', async () => {
211
155
  const created = await repository.create((0, helpers_1.createTestChat)({ title: 'Old Title' }));
@@ -223,12 +167,12 @@ const helpers_1 = require("../helpers.cjs");
223
167
  });
224
168
  (0, vitest_1.describe)('deleteByUserId', () => {
225
169
  (0, vitest_1.it)('should delete all chats for a user', async () => {
226
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1' }));
227
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-1' }));
228
- await repository.create((0, helpers_1.createTestChat)({ userId: 'user-2' }));
170
+ await repository.create((0, helpers_1.createTestChat)({ tenants: { userId: 'user-1' } }));
171
+ await repository.create((0, helpers_1.createTestChat)({ tenants: { userId: 'user-1' } }));
172
+ await repository.create((0, helpers_1.createTestChat)({ tenants: { userId: 'user-2' } }));
229
173
  const deletedCount = await repository.deleteByUserId('user-1');
230
174
  (0, vitest_1.expect)(deletedCount).toBe(2);
231
- const remaining = await repository.findByUserId('user-1');
175
+ const remaining = await repository.find({ tenants: { userId: 'user-1' } });
232
176
  (0, vitest_1.expect)(remaining).toHaveLength(0);
233
177
  });
234
178
  (0, vitest_1.it)('should return 0 if user has no chats', async () => {
@@ -243,7 +187,7 @@ const helpers_1 = require("../helpers.cjs");
243
187
  await repository.create((0, helpers_1.createTestChat)({ contextKey: 'ctx-2' }));
244
188
  const deletedCount = await repository.deleteByContextKey('ctx-1');
245
189
  (0, vitest_1.expect)(deletedCount).toBe(2);
246
- const remaining = await repository.findByContextKey('ctx-1');
190
+ const remaining = await repository.find({ contextKey: 'ctx-1' });
247
191
  (0, vitest_1.expect)(remaining).toHaveLength(0);
248
192
  });
249
193
  });