@multiplayer-app/ai-agent-mongo 0.1.0-beta.5 → 0.1.0-beta.51

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 (139) hide show
  1. package/dist/cjs/__tests__/helpers.cjs +1 -0
  2. package/dist/cjs/__tests__/helpers.cjs.map +1 -1
  3. package/dist/cjs/__tests__/helpers.d.ts.map +1 -1
  4. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.cjs +365 -0
  5. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.cjs.map +1 -0
  6. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.d.ts +2 -0
  7. package/dist/cjs/__tests__/repositories/MongoActivityRepository.test.d.ts.map +1 -0
  8. package/dist/cjs/__tests__/repositories/MongoAgentChatRepository.test.cjs +2 -58
  9. package/dist/cjs/__tests__/repositories/MongoAgentChatRepository.test.cjs.map +1 -1
  10. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.cjs +67 -0
  11. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.cjs.map +1 -0
  12. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.d.ts +2 -0
  13. package/dist/cjs/__tests__/repositories/MongoAgentConfigRepository.test.d.ts.map +1 -0
  14. package/dist/cjs/__tests__/repositories/MongoAgentMessageRepository.test.cjs +84 -0
  15. package/dist/cjs/__tests__/repositories/MongoAgentMessageRepository.test.cjs.map +1 -1
  16. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.cjs +62 -0
  17. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.cjs.map +1 -0
  18. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts +2 -0
  19. package/dist/cjs/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts.map +1 -0
  20. package/dist/cjs/index.cjs +7 -1
  21. package/dist/cjs/index.cjs.map +1 -1
  22. package/dist/cjs/index.d.ts +3 -0
  23. package/dist/cjs/index.d.ts.map +1 -1
  24. package/dist/cjs/mongo/index.cjs +2 -17
  25. package/dist/cjs/mongo/index.cjs.map +1 -1
  26. package/dist/cjs/mongo/index.d.ts +0 -3
  27. package/dist/cjs/mongo/index.d.ts.map +1 -1
  28. package/dist/cjs/repositories/MongoActivityRepository.cjs +403 -0
  29. package/dist/cjs/repositories/MongoActivityRepository.cjs.map +1 -0
  30. package/dist/cjs/repositories/MongoActivityRepository.d.ts +64 -0
  31. package/dist/cjs/repositories/MongoActivityRepository.d.ts.map +1 -0
  32. package/dist/cjs/repositories/MongoAgentChatRepository.cjs +22 -131
  33. package/dist/cjs/repositories/MongoAgentChatRepository.cjs.map +1 -1
  34. package/dist/cjs/repositories/MongoAgentChatRepository.d.ts +4 -14
  35. package/dist/cjs/repositories/MongoAgentChatRepository.d.ts.map +1 -1
  36. package/dist/cjs/repositories/MongoAgentConfigRepository.cjs +126 -0
  37. package/dist/cjs/repositories/MongoAgentConfigRepository.cjs.map +1 -0
  38. package/dist/cjs/repositories/MongoAgentConfigRepository.d.ts +25 -0
  39. package/dist/cjs/repositories/MongoAgentConfigRepository.d.ts.map +1 -0
  40. package/dist/cjs/repositories/MongoAgentMessageRepository.cjs +53 -2
  41. package/dist/cjs/repositories/MongoAgentMessageRepository.cjs.map +1 -1
  42. package/dist/cjs/repositories/MongoAgentMessageRepository.d.ts +11 -2
  43. package/dist/cjs/repositories/MongoAgentMessageRepository.d.ts.map +1 -1
  44. package/dist/cjs/repositories/index.cjs +2 -0
  45. package/dist/cjs/repositories/index.cjs.map +1 -1
  46. package/dist/cjs/repositories/index.d.ts +2 -0
  47. package/dist/cjs/repositories/index.d.ts.map +1 -1
  48. package/dist/cjs/schemas/ActivitySchema.cjs +34 -0
  49. package/dist/cjs/schemas/ActivitySchema.cjs.map +1 -0
  50. package/dist/cjs/schemas/ActivitySchema.d.ts +30 -0
  51. package/dist/cjs/schemas/ActivitySchema.d.ts.map +1 -0
  52. package/dist/cjs/schemas/AgentChatSchema.cjs +1 -1
  53. package/dist/cjs/schemas/AgentChatSchema.cjs.map +1 -1
  54. package/dist/cjs/schemas/AgentConfigPreferenceSchema.cjs +24 -0
  55. package/dist/cjs/schemas/AgentConfigPreferenceSchema.cjs.map +1 -0
  56. package/dist/cjs/schemas/AgentConfigPreferenceSchema.d.ts +24 -0
  57. package/dist/cjs/schemas/AgentConfigPreferenceSchema.d.ts.map +1 -0
  58. package/dist/cjs/schemas/AgentMessageSchema.cjs +7 -4
  59. package/dist/cjs/schemas/AgentMessageSchema.cjs.map +1 -1
  60. package/dist/cjs/schemas/AgentMessageSchema.d.ts.map +1 -1
  61. package/dist/cjs/schemas/index.cjs +2 -0
  62. package/dist/cjs/schemas/index.cjs.map +1 -1
  63. package/dist/cjs/schemas/index.d.ts +2 -0
  64. package/dist/cjs/schemas/index.d.ts.map +1 -1
  65. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  66. package/dist/esm/__tests__/helpers.d.ts.map +1 -1
  67. package/dist/esm/__tests__/helpers.js +1 -0
  68. package/dist/esm/__tests__/helpers.js.map +1 -1
  69. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.d.ts +2 -0
  70. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.d.ts.map +1 -0
  71. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.js +363 -0
  72. package/dist/esm/__tests__/repositories/MongoActivityRepository.test.js.map +1 -0
  73. package/dist/esm/__tests__/repositories/MongoAgentChatRepository.test.js +2 -58
  74. package/dist/esm/__tests__/repositories/MongoAgentChatRepository.test.js.map +1 -1
  75. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.d.ts +2 -0
  76. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.d.ts.map +1 -0
  77. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.js +65 -0
  78. package/dist/esm/__tests__/repositories/MongoAgentConfigRepository.test.js.map +1 -0
  79. package/dist/esm/__tests__/repositories/MongoAgentMessageRepository.test.js +84 -0
  80. package/dist/esm/__tests__/repositories/MongoAgentMessageRepository.test.js.map +1 -1
  81. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts +2 -0
  82. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.d.ts.map +1 -0
  83. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.js +60 -0
  84. package/dist/esm/__tests__/schemas/AgentConfigPreferenceSchema.test.js.map +1 -0
  85. package/dist/esm/index.d.ts +3 -0
  86. package/dist/esm/index.d.ts.map +1 -1
  87. package/dist/esm/index.js +3 -0
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/mongo/index.d.ts +0 -3
  90. package/dist/esm/mongo/index.d.ts.map +1 -1
  91. package/dist/esm/mongo/index.js +1 -16
  92. package/dist/esm/mongo/index.js.map +1 -1
  93. package/dist/esm/repositories/MongoActivityRepository.d.ts +64 -0
  94. package/dist/esm/repositories/MongoActivityRepository.d.ts.map +1 -0
  95. package/dist/esm/repositories/MongoActivityRepository.js +398 -0
  96. package/dist/esm/repositories/MongoActivityRepository.js.map +1 -0
  97. package/dist/esm/repositories/MongoAgentChatRepository.d.ts +4 -14
  98. package/dist/esm/repositories/MongoAgentChatRepository.d.ts.map +1 -1
  99. package/dist/esm/repositories/MongoAgentChatRepository.js +22 -131
  100. package/dist/esm/repositories/MongoAgentChatRepository.js.map +1 -1
  101. package/dist/esm/repositories/MongoAgentConfigRepository.d.ts +25 -0
  102. package/dist/esm/repositories/MongoAgentConfigRepository.d.ts.map +1 -0
  103. package/dist/esm/repositories/MongoAgentConfigRepository.js +122 -0
  104. package/dist/esm/repositories/MongoAgentConfigRepository.js.map +1 -0
  105. package/dist/esm/repositories/MongoAgentMessageRepository.d.ts +11 -2
  106. package/dist/esm/repositories/MongoAgentMessageRepository.d.ts.map +1 -1
  107. package/dist/esm/repositories/MongoAgentMessageRepository.js +53 -2
  108. package/dist/esm/repositories/MongoAgentMessageRepository.js.map +1 -1
  109. package/dist/esm/repositories/index.d.ts +2 -0
  110. package/dist/esm/repositories/index.d.ts.map +1 -1
  111. package/dist/esm/repositories/index.js +2 -0
  112. package/dist/esm/repositories/index.js.map +1 -1
  113. package/dist/esm/schemas/ActivitySchema.d.ts +30 -0
  114. package/dist/esm/schemas/ActivitySchema.d.ts.map +1 -0
  115. package/dist/esm/schemas/ActivitySchema.js +31 -0
  116. package/dist/esm/schemas/ActivitySchema.js.map +1 -0
  117. package/dist/esm/schemas/AgentChatSchema.js +1 -1
  118. package/dist/esm/schemas/AgentChatSchema.js.map +1 -1
  119. package/dist/esm/schemas/AgentConfigPreferenceSchema.d.ts +24 -0
  120. package/dist/esm/schemas/AgentConfigPreferenceSchema.d.ts.map +1 -0
  121. package/dist/esm/schemas/AgentConfigPreferenceSchema.js +21 -0
  122. package/dist/esm/schemas/AgentConfigPreferenceSchema.js.map +1 -0
  123. package/dist/esm/schemas/AgentMessageSchema.d.ts.map +1 -1
  124. package/dist/esm/schemas/AgentMessageSchema.js +7 -4
  125. package/dist/esm/schemas/AgentMessageSchema.js.map +1 -1
  126. package/dist/esm/schemas/index.d.ts +2 -0
  127. package/dist/esm/schemas/index.d.ts.map +1 -1
  128. package/dist/esm/schemas/index.js +2 -0
  129. package/dist/esm/schemas/index.js.map +1 -1
  130. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  131. package/package.json +42 -44
  132. package/dist/cjs/mongo/encryption.cjs +0 -149
  133. package/dist/cjs/mongo/encryption.cjs.map +0 -1
  134. package/dist/cjs/mongo/encryption.d.ts +0 -66
  135. package/dist/cjs/mongo/encryption.d.ts.map +0 -1
  136. package/dist/esm/mongo/encryption.d.ts +0 -66
  137. package/dist/esm/mongo/encryption.d.ts.map +0 -1
  138. package/dist/esm/mongo/encryption.js +0 -140
  139. package/dist/esm/mongo/encryption.js.map +0 -1
@@ -0,0 +1,398 @@
1
+ import { SortOrder } from '@multiplayer-app/ai-agent-types';
2
+ import { ObjectId } from 'mongodb';
3
+ import { ActivityModel } from '../schemas/ActivitySchema';
4
+ function flattenObject(obj, parentKey = '', result = {}) {
5
+ for (const key in obj) {
6
+ const newKey = parentKey ? `${parentKey}.${key}` : key;
7
+ if (obj[key] &&
8
+ typeof obj[key] === 'object' &&
9
+ !Array.isArray(obj[key]) &&
10
+ !(obj[key] instanceof Date)) {
11
+ flattenObject(obj[key], newKey, result);
12
+ }
13
+ else {
14
+ result[newKey] = obj[key];
15
+ }
16
+ }
17
+ return result;
18
+ }
19
+ function normalizeTenants(tenants) {
20
+ if (!tenants)
21
+ return {};
22
+ if (tenants instanceof Map) {
23
+ return Object.fromEntries(tenants.entries());
24
+ }
25
+ return tenants;
26
+ }
27
+ /**
28
+ * Helper function to convert Mongoose document to Activity type
29
+ */
30
+ function toActivity(doc) {
31
+ if (!doc)
32
+ return null;
33
+ const activity = doc.toObject ? doc.toObject() : doc;
34
+ return {
35
+ id: doc._id.toString(),
36
+ ownerId: activity.ownerId,
37
+ groupId: activity.groupId,
38
+ name: activity.name,
39
+ description: activity.description,
40
+ parentId: activity.parentId,
41
+ hasChildren: activity.hasChildren,
42
+ tenants: normalizeTenants(activity.tenants),
43
+ sourceId: activity.sourceId || '',
44
+ sourceType: activity.sourceType || 'Unknown',
45
+ metadata: activity.metadata || {}
46
+ };
47
+ }
48
+ /**
49
+ * MongoDB implementation of ActivityRepository
50
+ */
51
+ export class MongoActivityRepository {
52
+ async getActivitySummary(params) {
53
+ const baseMatch = {
54
+ parentId: { $exists: true, $ne: null },
55
+ };
56
+ const fromDate = params?.period?.from ? new Date(params.period.from) : undefined;
57
+ const toDate = params?.period?.to ? new Date(params.period.to) : undefined;
58
+ if (fromDate && !Number.isNaN(fromDate.getTime())) {
59
+ baseMatch.createdAt = { ...(baseMatch.createdAt || {}), $gte: fromDate };
60
+ }
61
+ if (toDate && !Number.isNaN(toDate.getTime())) {
62
+ baseMatch.createdAt = { ...(baseMatch.createdAt || {}), $lte: toDate };
63
+ }
64
+ if (params?.ownerId) {
65
+ baseMatch.ownerId = params.ownerId;
66
+ }
67
+ if (typeof params?.tenant === 'string') {
68
+ baseMatch.$expr = {
69
+ $in: [
70
+ params.tenant,
71
+ {
72
+ $map: {
73
+ input: { $objectToArray: { $ifNull: ['$tenants', {}] } },
74
+ as: 'tenantEntry',
75
+ in: '$$tenantEntry.v',
76
+ },
77
+ },
78
+ ],
79
+ };
80
+ }
81
+ else if (params?.tenant && typeof params.tenant === 'object') {
82
+ for (const [tenantKey, tenantValue] of Object.entries(params.tenant)) {
83
+ baseMatch[`tenants.${tenantKey}`] = tenantValue;
84
+ }
85
+ }
86
+ const effectiveGroupBy = params?.groupBy?.length
87
+ ? Array.from(new Set(params.groupBy))
88
+ : ['model'];
89
+ const includeModel = effectiveGroupBy.includes('model');
90
+ const includeUserId = effectiveGroupBy.includes('userId');
91
+ const includeGroupBy = effectiveGroupBy.filter(groupBy => groupBy !== 'model' && groupBy !== 'userId');
92
+ const includePeriodStart = Boolean(params?.timeBucket);
93
+ const groupId = {};
94
+ if (includeModel)
95
+ groupId.model = '$summaryModel';
96
+ if (includeUserId)
97
+ groupId.userId = '$summaryUserId';
98
+ if (includePeriodStart)
99
+ groupId.periodStart = '$summaryPeriodStart';
100
+ includeGroupBy.forEach(groupBy => {
101
+ groupId[groupBy] = `$${groupBy}`;
102
+ });
103
+ const pipeline = [
104
+ { $match: baseMatch },
105
+ {
106
+ $addFields: {
107
+ summaryModel: { $ifNull: ['$metadata.modelId', 'unknown'] },
108
+ summaryTenant: { $ifNull: ['$tenants', {}] },
109
+ summaryUserId: '$ownerId',
110
+ summaryTotalTokens: { $ifNull: ['$metadata.usage.totalTokens', 0] },
111
+ summaryCost: { $ifNull: ['$metadata.usage.cost', 0] },
112
+ ...(includePeriodStart
113
+ ? {
114
+ summaryPeriodStart: {
115
+ $dateTrunc: {
116
+ date: '$createdAt',
117
+ unit: params?.timeBucket,
118
+ timezone: 'UTC',
119
+ },
120
+ },
121
+ }
122
+ : {}),
123
+ },
124
+ },
125
+ ];
126
+ if (params?.model) {
127
+ pipeline.push({ $match: { summaryModel: params.model } });
128
+ }
129
+ pipeline.push({
130
+ $group: {
131
+ _id: groupId,
132
+ totalRequests: { $sum: 1 },
133
+ totalTokens: { $sum: '$summaryTotalTokens' },
134
+ totalCost: { $sum: '$summaryCost' },
135
+ },
136
+ }, {
137
+ $project: {
138
+ _id: 0,
139
+ ...(includePeriodStart ? { periodStart: '$_id.periodStart' } : {}),
140
+ ...(includeModel ? { model: '$_id.model' } : {}),
141
+ ...(includeUserId ? { userId: '$_id.userId' } : {}),
142
+ ...(includeGroupBy.length > 0 ? Object.fromEntries(includeGroupBy.map(groupBy => [groupBy, `$_id.${groupBy}`])) : {}),
143
+ totalRequests: 1,
144
+ totalTokens: 1,
145
+ totalCost: 1,
146
+ },
147
+ });
148
+ const result = await ActivityModel.aggregate(pipeline).exec();
149
+ return result.map((item) => ({
150
+ ...(includePeriodStart
151
+ ? {
152
+ periodStart: item.periodStart instanceof Date
153
+ ? item.periodStart.toISOString()
154
+ : item.periodStart
155
+ ? new Date(item.periodStart).toISOString()
156
+ : undefined,
157
+ }
158
+ : {}),
159
+ ...(includeModel ? { model: item.model } : {}),
160
+ ...(includeGroupBy.length > 0 ? Object.fromEntries(includeGroupBy.map(groupBy => [groupBy, item[groupBy]])) : {}),
161
+ ...(includeUserId ? { userId: item.userId } : {}),
162
+ totalRequests: item.totalRequests ?? 0,
163
+ totalTokens: item.totalTokens ?? 0,
164
+ totalCost: item.totalCost ?? 0,
165
+ }));
166
+ }
167
+ async findById(id) {
168
+ const doc = await ActivityModel.findById(id).exec();
169
+ return toActivity(doc);
170
+ }
171
+ async find(filter, options) {
172
+ const query = {};
173
+ if (filter) {
174
+ if (filter.id) {
175
+ query._id = filter.id;
176
+ delete filter.id;
177
+ }
178
+ Object.assign(query, filter);
179
+ }
180
+ let queryBuilder = ActivityModel.find(query);
181
+ // Apply sorting
182
+ if (options?.sort) {
183
+ const sortOrder = options.sort.order === SortOrder.Asc ? 1 : -1;
184
+ queryBuilder = queryBuilder.sort({ [options.sort.field]: sortOrder });
185
+ }
186
+ // Apply limit
187
+ if (options?.limit) {
188
+ queryBuilder = queryBuilder.limit(options.limit);
189
+ }
190
+ if (options?.skip) {
191
+ queryBuilder = queryBuilder.skip(options.skip);
192
+ }
193
+ const docs = await queryBuilder.exec();
194
+ if (docs.length === 0) {
195
+ return [];
196
+ }
197
+ const activityIds = docs.map(doc => doc._id.toString());
198
+ const parentIdsWithChildren = await ActivityModel.distinct('parentId', {
199
+ parentId: { $in: activityIds },
200
+ }).exec();
201
+ const parentIdsWithChildrenSet = new Set(parentIdsWithChildren);
202
+ return docs.reduce((activities, doc) => {
203
+ const activity = toActivity(doc);
204
+ if (!activity) {
205
+ return activities;
206
+ }
207
+ activities.push({
208
+ ...activity,
209
+ hasChildren: parentIdsWithChildrenSet.has(activity.id),
210
+ });
211
+ return activities;
212
+ }, []);
213
+ }
214
+ async findOne(filter) {
215
+ const query = {};
216
+ if (filter.id) {
217
+ query._id = filter.id;
218
+ delete filter.id;
219
+ }
220
+ Object.assign(query, filter);
221
+ const doc = await ActivityModel.findOne(query).exec();
222
+ return toActivity(doc);
223
+ }
224
+ async create(entity, id) {
225
+ const doc = new ActivityModel({
226
+ ...entity,
227
+ ...(id ? { _id: id } : {})
228
+ });
229
+ const cost = await this.calculateCost(entity);
230
+ doc.systemCost = doc.metadata?.usage?.cost ?? 0;
231
+ doc.metadata ??= {};
232
+ doc.metadata.usage ??= {};
233
+ doc.metadata.usage.cost = cost;
234
+ const saved = await doc.save();
235
+ const result = toActivity(saved);
236
+ if (!result) {
237
+ throw new Error('Failed to create activity');
238
+ }
239
+ return result;
240
+ }
241
+ async update(id, updates) {
242
+ const doc = await ActivityModel.findByIdAndUpdate(id, { $set: updates }, { new: true, runValidators: true }).exec();
243
+ return toActivity(doc);
244
+ }
245
+ async updateMetadata(id, metadata) {
246
+ const flattenedUpdates = flattenObject(metadata, 'metadata');
247
+ const doc = await ActivityModel.findByIdAndUpdate(id, { $set: flattenedUpdates }, { new: true, runValidators: true }).exec();
248
+ return toActivity(doc);
249
+ }
250
+ async delete(id) {
251
+ const result = await ActivityModel.findByIdAndDelete(id).exec();
252
+ return !!result;
253
+ }
254
+ async exists(id) {
255
+ const count = await ActivityModel.countDocuments({ _id: id }).exec();
256
+ return count > 0;
257
+ }
258
+ async findByParentId(filter, options) {
259
+ const query = {
260
+ parentId: filter?.parentId ? filter?.parentId : { $exists: false },
261
+ ...(filter?.ownerId ? { ownerId: filter?.ownerId } : {}),
262
+ ...(filter?.groupId ? { groupId: filter?.groupId } : {}),
263
+ ...(filter?.tenants && typeof filter.tenants === 'object' && Object.keys(filter.tenants).length > 0
264
+ ? Object.fromEntries(Object.entries(filter.tenants).map(([k, v]) => [`tenants.${k}`, v]))
265
+ : {}),
266
+ };
267
+ const fromDate = filter?.period?.from ? new Date(filter.period.from) : undefined;
268
+ const toDate = filter?.period?.to ? new Date(filter.period.to) : undefined;
269
+ if (fromDate && !Number.isNaN(fromDate.getTime())) {
270
+ query.createdAt = { ...(query.createdAt || {}), $gte: fromDate };
271
+ }
272
+ if (toDate && !Number.isNaN(toDate.getTime())) {
273
+ query.createdAt = { ...(query.createdAt || {}), $lte: toDate };
274
+ }
275
+ let queryBuilder = ActivityModel.find(query);
276
+ if (options?.sort) {
277
+ const sortOrder = options.sort.order === SortOrder.Asc ? 1 : -1;
278
+ queryBuilder = queryBuilder.sort({ [options.sort.field]: sortOrder });
279
+ }
280
+ if (options?.limit) {
281
+ queryBuilder = queryBuilder.limit(options.limit);
282
+ }
283
+ if (options?.skip) {
284
+ queryBuilder = queryBuilder.skip(options.skip);
285
+ }
286
+ const docs = await queryBuilder.exec();
287
+ const activityIds = docs.map(doc => doc._id.toString());
288
+ const parentIdsWithChildren = await ActivityModel.distinct('parentId', {
289
+ parentId: { $in: activityIds },
290
+ }).exec();
291
+ const parentIdsWithChildrenSet = new Set(parentIdsWithChildren);
292
+ return docs.reduce((activities, doc) => {
293
+ const activity = toActivity(doc);
294
+ if (!activity) {
295
+ return activities;
296
+ }
297
+ activities.push({
298
+ ...activity,
299
+ hasChildren: parentIdsWithChildrenSet.has(activity.id),
300
+ });
301
+ return activities;
302
+ }, []);
303
+ }
304
+ async countByParentId(filter) {
305
+ const query = {
306
+ parentId: filter?.parentId ? filter?.parentId : { $exists: false },
307
+ ...(filter?.ownerId ? { ownerId: filter?.ownerId } : {}),
308
+ ...(filter?.groupId ? { groupId: filter?.groupId } : {}),
309
+ ...(filter?.tenants && typeof filter.tenants === 'object' && Object.keys(filter.tenants).length > 0
310
+ ? Object.fromEntries(Object.entries(filter.tenants).map(([k, v]) => [`tenants.${k}`, v]))
311
+ : {}),
312
+ };
313
+ const fromDate = filter?.period?.from ? new Date(filter.period.from) : undefined;
314
+ const toDate = filter?.period?.to ? new Date(filter.period.to) : undefined;
315
+ if (fromDate && !Number.isNaN(fromDate.getTime())) {
316
+ query.createdAt = { ...(query.createdAt || {}), $gte: fromDate };
317
+ }
318
+ if (toDate && !Number.isNaN(toDate.getTime())) {
319
+ query.createdAt = { ...(query.createdAt || {}), $lte: toDate };
320
+ }
321
+ return ActivityModel.countDocuments(query).exec();
322
+ }
323
+ async count(filter) {
324
+ const query = {};
325
+ if (filter) {
326
+ if (filter.id) {
327
+ query._id = filter.id;
328
+ delete filter.id;
329
+ }
330
+ Object.assign(query, filter);
331
+ }
332
+ return ActivityModel.countDocuments(query).exec();
333
+ }
334
+ async deleteByOwnerId(ownerId) {
335
+ const result = await ActivityModel.deleteMany({ ownerId }).exec();
336
+ return result.deletedCount || 0;
337
+ }
338
+ async deleteByGroupId(groupId) {
339
+ const result = await ActivityModel.deleteMany({ groupId }).exec();
340
+ return result.deletedCount || 0;
341
+ }
342
+ async getGroupedMetadataByParentId(parentId) {
343
+ const result = await ActivityModel.aggregate([
344
+ {
345
+ $match: { _id: new ObjectId(parentId) }
346
+ },
347
+ {
348
+ $graphLookup: {
349
+ from: "activities",
350
+ startWith: { $toString: "$_id" },
351
+ connectFromField: "_id",
352
+ connectToField: "parentId",
353
+ as: "descendants"
354
+ }
355
+ },
356
+ {
357
+ $project: {
358
+ _id: 0,
359
+ inputTokens: {
360
+ $sum: "$descendants.metadata.usage.inputTokens"
361
+ },
362
+ outputTokens: {
363
+ $sum: "$descendants.metadata.usage.outputTokens"
364
+ },
365
+ cost: {
366
+ $sum: "$descendants.metadata.usage.cost"
367
+ },
368
+ totalTokens: {
369
+ $sum: "$descendants.metadata.usage.totalTokens"
370
+ },
371
+ reasoningTokens: {
372
+ $sum: "$descendants.metadata.usage.reasoningTokens"
373
+ },
374
+ cachedInputTokens: {
375
+ $sum: "$descendants.metadata.usage.cachedInputTokens"
376
+ },
377
+ childCount: {
378
+ $size: "$descendants"
379
+ }
380
+ }
381
+ }
382
+ ]).exec();
383
+ return {
384
+ inputTokens: result[0]?.inputTokens ?? 0,
385
+ outputTokens: result[0]?.outputTokens ?? 0,
386
+ cost: result[0]?.cost ?? 0,
387
+ childCount: result[0]?.childCount ?? 0,
388
+ totalTokens: result[0]?.totalTokens ?? 0,
389
+ reasoningTokens: result[0]?.reasoningTokens ?? 0,
390
+ cachedInputTokens: result[0]?.cachedInputTokens ?? 0,
391
+ };
392
+ }
393
+ // override method for custom calculation
394
+ async calculateCost(activityData) {
395
+ return activityData.metadata?.usage?.cost ?? 0;
396
+ }
397
+ }
398
+ //# sourceMappingURL=MongoActivityRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoActivityRepository.js","sourceRoot":"","sources":["../../../src/repositories/MongoActivityRepository.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentChat, AgentChatResponse } from '@multiplayer-app/ai-agent-types';
1
+ import type { AgentChat } from '@multiplayer-app/ai-agent-types';
2
2
  import { SortOrder } from '@multiplayer-app/ai-agent-types';
3
3
  import type { AgentChatRepository } from '@multiplayer-app/ai-agent-db';
4
4
  /**
@@ -6,32 +6,22 @@ import type { AgentChatRepository } from '@multiplayer-app/ai-agent-db';
6
6
  */
7
7
  export declare class MongoAgentChatRepository implements AgentChatRepository {
8
8
  findById(id: string): Promise<AgentChat | null>;
9
- find(filter?: Partial<AgentChat>, options?: {
10
- sort?: {
11
- field: string;
12
- order: SortOrder;
13
- };
14
- limit?: number;
15
- }): Promise<AgentChat[]>;
16
9
  findOne(filter: Partial<AgentChat>): Promise<AgentChat | null>;
17
10
  create(entity: Omit<AgentChat, 'id' | 'createdAt' | 'updatedAt'>): Promise<AgentChat>;
18
11
  update(id: string, updates: Partial<Omit<AgentChat, 'id' | 'createdAt'>>): Promise<AgentChat | null>;
19
12
  delete(id: string): Promise<boolean>;
20
13
  exists(id: string): Promise<boolean>;
21
14
  count(filter?: Partial<AgentChat>): Promise<number>;
22
- findByUserId(userId: string): Promise<AgentChat[]>;
23
- findByContextKey(contextKey: string): Promise<AgentChat[]>;
24
- findByUserIdAndContextKey(userId: string, contextKey: string): Promise<AgentChat[]>;
25
- findGuestChatsByContextKey(contextKey: string): Promise<AgentChat[]>;
26
15
  updateTitle(id: string, title: string): Promise<AgentChat | null>;
27
16
  deleteByUserId(userId: string): Promise<number>;
28
17
  deleteByContextKey(contextKey: string): Promise<number>;
29
- findWithMessages(filter?: Partial<AgentChat>, options?: {
18
+ find(filter?: Partial<AgentChat>, options?: {
30
19
  sort?: {
31
20
  field: string;
32
21
  order: SortOrder;
33
22
  };
23
+ skip?: number;
34
24
  limit?: number;
35
- }): Promise<AgentChatResponse[]>;
25
+ }): Promise<AgentChat[]>;
36
26
  }
37
27
  //# sourceMappingURL=MongoAgentChatRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MongoAgentChatRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/MongoAgentChatRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAY,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AA0BxE;;GAEG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK/C,IAAI,CACR,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,SAAS,EAAE,CAAC;IA4BjB,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAa9D,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAgBrF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAUpG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKlD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK1D,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKnF,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAQpE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAUjE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvD,gBAAgB,CACpB,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,iBAAiB,EAAE,CAAC;CA2GhC"}
1
+ {"version":3,"file":"MongoAgentChatRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/MongoAgentChatRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAY,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAyBxE;;GAEG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK/C,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAa9D,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAgBrF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAUpG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAUjE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKvD,IAAI,CACR,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAC3B,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAA;SAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,SAAS,EAAE,CAAC;CA+BxB"}
@@ -1,7 +1,6 @@
1
1
  import { ChatType, SortOrder } from '@multiplayer-app/ai-agent-types';
2
2
  import { AgentChatModel } from '../schemas/AgentChatSchema';
3
3
  import { AgentMessageModel } from '../schemas/AgentMessageSchema';
4
- import { ObjectId } from '../mongo';
5
4
  /**
6
5
  * Helper function to convert Mongoose document to AgentChat type
7
6
  */
@@ -30,28 +29,6 @@ export class MongoAgentChatRepository {
30
29
  const doc = await AgentChatModel.findById(id).exec();
31
30
  return toAgentChat(doc);
32
31
  }
33
- async find(filter, options) {
34
- const query = {};
35
- if (filter) {
36
- if (filter.id) {
37
- query._id = filter.id;
38
- delete filter.id;
39
- }
40
- Object.assign(query, filter);
41
- }
42
- let queryBuilder = AgentChatModel.find(query);
43
- // Apply sorting
44
- if (options?.sort) {
45
- const sortOrder = options.sort.order === SortOrder.Asc ? 1 : -1;
46
- queryBuilder = queryBuilder.sort({ [options.sort.field]: sortOrder });
47
- }
48
- // Apply limit
49
- if (options?.limit) {
50
- queryBuilder = queryBuilder.limit(options.limit);
51
- }
52
- const docs = await queryBuilder.exec();
53
- return docs.map(doc => toAgentChat(doc)).filter(Boolean);
54
- }
55
32
  async findOne(filter) {
56
33
  const query = {};
57
34
  if (filter.id) {
@@ -102,25 +79,6 @@ export class MongoAgentChatRepository {
102
79
  }
103
80
  return AgentChatModel.countDocuments(query).exec();
104
81
  }
105
- async findByUserId(userId) {
106
- const docs = await AgentChatModel.find({ userId }).exec();
107
- return docs.map(doc => toAgentChat(doc)).filter(Boolean);
108
- }
109
- async findByContextKey(contextKey) {
110
- const docs = await AgentChatModel.find({ contextKey }).exec();
111
- return docs.map(doc => toAgentChat(doc)).filter(Boolean);
112
- }
113
- async findByUserIdAndContextKey(userId, contextKey) {
114
- const docs = await AgentChatModel.find({ userId, contextKey }).exec();
115
- return docs.map(doc => toAgentChat(doc)).filter(Boolean);
116
- }
117
- async findGuestChatsByContextKey(contextKey) {
118
- const docs = await AgentChatModel.find({
119
- contextKey,
120
- userId: { $exists: false }
121
- }).exec();
122
- return docs.map(doc => toAgentChat(doc)).filter(Boolean);
123
- }
124
82
  async updateTitle(id, title) {
125
83
  const doc = await AgentChatModel.findByIdAndUpdate(id, { $set: { title, updatedAt: new Date().toISOString() } }, { new: true }).exec();
126
84
  return toAgentChat(doc);
@@ -133,103 +91,36 @@ export class MongoAgentChatRepository {
133
91
  const result = await AgentChatModel.deleteMany({ contextKey }).exec();
134
92
  return result.deletedCount || 0;
135
93
  }
136
- async findWithMessages(filter, options) {
137
- // Build match stage for filtering
138
- const matchStage = {};
94
+ async find(filter, options) {
95
+ const query = {};
139
96
  if (filter) {
140
- if (filter.id) {
141
- matchStage._id = new ObjectId(filter.id);
142
- }
143
- if (filter.userId !== undefined) {
144
- matchStage.userId = filter.userId;
145
- }
146
- if (filter.contextKey !== undefined) {
147
- matchStage.contextKey = filter.contextKey;
148
- }
149
- if (filter.type !== undefined) {
150
- matchStage.type = filter.type;
151
- }
152
- if (filter.status !== undefined) {
153
- matchStage.status = filter.status;
154
- }
155
- if (filter.model !== undefined) {
156
- matchStage.model = filter.model;
157
- }
97
+ if (filter.id)
98
+ query._id = filter.id;
99
+ if (filter.userId !== undefined)
100
+ query.userId = filter.userId;
101
+ if (filter.contextKey !== undefined)
102
+ query.contextKey = filter.contextKey;
103
+ if (filter.type !== undefined)
104
+ query.type = filter.type;
105
+ if (filter.status !== undefined)
106
+ query.status = filter.status;
107
+ if (filter.model !== undefined)
108
+ query.model = filter.model;
158
109
  }
159
- // Build aggregation pipeline
160
- const pipeline = [
161
- { $match: matchStage }
162
- ];
163
- // Add sort stage before lookup (for better performance)
110
+ let qb = AgentChatModel.find(query);
164
111
  if (options?.sort) {
165
112
  const sortField = options.sort.field === 'id' ? '_id' : options.sort.field;
166
113
  const sortOrder = options.sort.order === SortOrder.Asc ? 1 : -1;
167
- pipeline.push({ $sort: { [sortField]: sortOrder } });
114
+ qb = qb.sort({ [sortField]: sortOrder });
115
+ }
116
+ if (options?.skip) {
117
+ qb = qb.skip(options.skip);
168
118
  }
169
- // Add limit before lookup if specified (for better performance)
170
119
  if (options?.limit) {
171
- pipeline.push({ $limit: options.limit });
120
+ qb = qb.limit(options.limit);
172
121
  }
173
- // Lookup messages
174
- pipeline.push({
175
- $lookup: {
176
- from: 'agentmessages',
177
- localField: '_id',
178
- foreignField: 'chat',
179
- as: 'messages'
180
- }
181
- });
182
- // Transform messages
183
- pipeline.push({
184
- $addFields: {
185
- messages: {
186
- $map: {
187
- input: { $sortArray: { input: '$messages', sortBy: { createdAt: 1 } } },
188
- as: 'msg',
189
- in: {
190
- id: { $toString: '$$msg._id' },
191
- chat: { $toString: '$$msg.chat' },
192
- role: '$$msg.role',
193
- content: '$$msg.content',
194
- createdAt: '$$msg.createdAt',
195
- toolCalls: { $ifNull: ['$$msg.toolCalls', []] },
196
- attachments: { $ifNull: ['$$msg.attachments', []] },
197
- annotations: '$$msg.annotations'
198
- }
199
- }
200
- }
201
- }
202
- });
203
- // Project final shape
204
- pipeline.push({
205
- $project: {
206
- id: { $toString: '$_id' },
207
- title: 1,
208
- type: { $ifNull: ['$type', ChatType.Chat] },
209
- status: 1,
210
- contextKey: 1,
211
- model: 1,
212
- createdAt: 1,
213
- updatedAt: 1,
214
- metadata: 1,
215
- userId: 1,
216
- messages: 1
217
- }
218
- });
219
- const results = await AgentChatModel.aggregate(pipeline).exec();
220
- return results.map((result) => ({
221
- id: result.id,
222
- title: result.title,
223
- type: result.type || ChatType.Chat,
224
- status: result.status,
225
- contextKey: result.contextKey,
226
- model: result.model,
227
- createdAt: result.createdAt,
228
- updatedAt: result.updatedAt,
229
- metadata: result.metadata,
230
- userId: result.userId,
231
- messages: result.messages || []
232
- }));
122
+ const docs = await qb.exec();
123
+ return docs.map((doc) => toAgentChat(doc)).filter(Boolean);
233
124
  }
234
125
  }
235
126
  //# sourceMappingURL=MongoAgentChatRepository.js.map