@multiplayer-app/ai-agent-mongo 0.1.0-beta.1

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 (70) hide show
  1. package/README.md +330 -0
  2. package/dist/__tests__/helpers.d.ts +22 -0
  3. package/dist/__tests__/helpers.d.ts.map +1 -0
  4. package/dist/__tests__/helpers.js +75 -0
  5. package/dist/__tests__/helpers.js.map +1 -0
  6. package/dist/__tests__/repositories/MongoAgentChatRepository.test.d.ts +2 -0
  7. package/dist/__tests__/repositories/MongoAgentChatRepository.test.d.ts.map +1 -0
  8. package/dist/__tests__/repositories/MongoAgentChatRepository.test.js +249 -0
  9. package/dist/__tests__/repositories/MongoAgentChatRepository.test.js.map +1 -0
  10. package/dist/__tests__/repositories/MongoAgentMessageRepository.test.d.ts +2 -0
  11. package/dist/__tests__/repositories/MongoAgentMessageRepository.test.d.ts.map +1 -0
  12. package/dist/__tests__/repositories/MongoAgentMessageRepository.test.js +311 -0
  13. package/dist/__tests__/repositories/MongoAgentMessageRepository.test.js.map +1 -0
  14. package/dist/__tests__/schemas/AgentChatSchema.test.d.ts +2 -0
  15. package/dist/__tests__/schemas/AgentChatSchema.test.d.ts.map +1 -0
  16. package/dist/__tests__/schemas/AgentChatSchema.test.js +120 -0
  17. package/dist/__tests__/schemas/AgentChatSchema.test.js.map +1 -0
  18. package/dist/__tests__/schemas/AgentMessageSchema.test.d.ts +2 -0
  19. package/dist/__tests__/schemas/AgentMessageSchema.test.d.ts.map +1 -0
  20. package/dist/__tests__/schemas/AgentMessageSchema.test.js +293 -0
  21. package/dist/__tests__/schemas/AgentMessageSchema.test.js.map +1 -0
  22. package/dist/__tests__/setup.d.ts +2 -0
  23. package/dist/__tests__/setup.d.ts.map +1 -0
  24. package/dist/__tests__/setup.js +25 -0
  25. package/dist/__tests__/setup.js.map +1 -0
  26. package/dist/index.d.ts +9 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +9 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/mongo/config.d.ts +10 -0
  31. package/dist/mongo/config.d.ts.map +1 -0
  32. package/dist/mongo/config.js +10 -0
  33. package/dist/mongo/config.js.map +1 -0
  34. package/dist/mongo/encryption.d.ts +66 -0
  35. package/dist/mongo/encryption.d.ts.map +1 -0
  36. package/dist/mongo/encryption.js +140 -0
  37. package/dist/mongo/encryption.js.map +1 -0
  38. package/dist/mongo/index.d.ts +25 -0
  39. package/dist/mongo/index.d.ts.map +1 -0
  40. package/dist/mongo/index.js +72 -0
  41. package/dist/mongo/index.js.map +1 -0
  42. package/dist/mongo/logger.d.ts +31 -0
  43. package/dist/mongo/logger.d.ts.map +1 -0
  44. package/dist/mongo/logger.js +36 -0
  45. package/dist/mongo/logger.js.map +1 -0
  46. package/dist/repositories/MongoAgentChatRepository.d.ts +37 -0
  47. package/dist/repositories/MongoAgentChatRepository.d.ts.map +1 -0
  48. package/dist/repositories/MongoAgentChatRepository.js +235 -0
  49. package/dist/repositories/MongoAgentChatRepository.js.map +1 -0
  50. package/dist/repositories/MongoAgentMessageRepository.d.ts +24 -0
  51. package/dist/repositories/MongoAgentMessageRepository.d.ts.map +1 -0
  52. package/dist/repositories/MongoAgentMessageRepository.js +140 -0
  53. package/dist/repositories/MongoAgentMessageRepository.js.map +1 -0
  54. package/dist/repositories/index.d.ts +3 -0
  55. package/dist/repositories/index.d.ts.map +1 -0
  56. package/dist/repositories/index.js +3 -0
  57. package/dist/repositories/index.js.map +1 -0
  58. package/dist/schemas/AgentChatSchema.d.ts +29 -0
  59. package/dist/schemas/AgentChatSchema.d.ts.map +1 -0
  60. package/dist/schemas/AgentChatSchema.js +26 -0
  61. package/dist/schemas/AgentChatSchema.js.map +1 -0
  62. package/dist/schemas/AgentMessageSchema.d.ts +30 -0
  63. package/dist/schemas/AgentMessageSchema.d.ts.map +1 -0
  64. package/dist/schemas/AgentMessageSchema.js +54 -0
  65. package/dist/schemas/AgentMessageSchema.js.map +1 -0
  66. package/dist/schemas/index.d.ts +3 -0
  67. package/dist/schemas/index.d.ts.map +1 -0
  68. package/dist/schemas/index.js +3 -0
  69. package/dist/schemas/index.js.map +1 -0
  70. package/package.json +37 -0
@@ -0,0 +1,120 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { AgentChatModel } from '../../schemas/AgentChatSchema';
3
+ describe('AgentChatSchema', () => {
4
+ describe('validation', () => {
5
+ it('should create a valid chat document', async () => {
6
+ const chat = new AgentChatModel({
7
+ title: 'Test Chat',
8
+ contextKey: 'test-context',
9
+ model: 'gpt-4',
10
+ createdAt: new Date().toISOString(),
11
+ updatedAt: new Date().toISOString(),
12
+ });
13
+ const error = chat.validateSync();
14
+ expect(error).toBeUndefined();
15
+ });
16
+ it('should require title field', async () => {
17
+ const chat = new AgentChatModel({
18
+ contextKey: 'test-context',
19
+ createdAt: new Date().toISOString(),
20
+ updatedAt: new Date().toISOString(),
21
+ });
22
+ const error = chat.validateSync();
23
+ expect(error).toBeDefined();
24
+ expect(error === null || error === void 0 ? void 0 : error.errors.title).toBeDefined();
25
+ });
26
+ it('should require contextKey field', async () => {
27
+ const chat = new AgentChatModel({
28
+ title: 'Test Chat',
29
+ createdAt: new Date().toISOString(),
30
+ updatedAt: new Date().toISOString(),
31
+ });
32
+ const error = chat.validateSync();
33
+ expect(error).toBeDefined();
34
+ expect(error === null || error === void 0 ? void 0 : error.errors.contextKey).toBeDefined();
35
+ });
36
+ it('should require createdAt field', async () => {
37
+ const chat = new AgentChatModel({
38
+ title: 'Test Chat',
39
+ contextKey: 'test-context',
40
+ updatedAt: new Date().toISOString(),
41
+ });
42
+ const error = chat.validateSync();
43
+ expect(error).toBeDefined();
44
+ expect(error === null || error === void 0 ? void 0 : error.errors.createdAt).toBeDefined();
45
+ });
46
+ it('should require updatedAt field', async () => {
47
+ const chat = new AgentChatModel({
48
+ title: 'Test Chat',
49
+ contextKey: 'test-context',
50
+ createdAt: new Date().toISOString(),
51
+ });
52
+ const error = chat.validateSync();
53
+ expect(error).toBeDefined();
54
+ expect(error === null || error === void 0 ? void 0 : error.errors.updatedAt).toBeDefined();
55
+ });
56
+ it('should allow optional model field', async () => {
57
+ const chat = new AgentChatModel({
58
+ title: 'Test Chat',
59
+ contextKey: 'test-context',
60
+ createdAt: new Date().toISOString(),
61
+ updatedAt: new Date().toISOString(),
62
+ });
63
+ const error = chat.validateSync();
64
+ expect(error).toBeUndefined();
65
+ });
66
+ it('should allow optional metadata field', async () => {
67
+ const chat = new AgentChatModel({
68
+ title: 'Test Chat',
69
+ contextKey: 'test-context',
70
+ createdAt: new Date().toISOString(),
71
+ updatedAt: new Date().toISOString(),
72
+ metadata: { key: 'value', count: 42 },
73
+ });
74
+ const error = chat.validateSync();
75
+ expect(error).toBeUndefined();
76
+ expect(chat.metadata).toEqual({ key: 'value', count: 42 });
77
+ });
78
+ it('should allow optional userId field', async () => {
79
+ const chat = new AgentChatModel({
80
+ title: 'Test Chat',
81
+ contextKey: 'test-context',
82
+ userId: 'user-123',
83
+ createdAt: new Date().toISOString(),
84
+ updatedAt: new Date().toISOString(),
85
+ });
86
+ const error = chat.validateSync();
87
+ expect(error).toBeUndefined();
88
+ expect(chat.userId).toBe('user-123');
89
+ });
90
+ it('should allow chat without userId (guest chat)', async () => {
91
+ const chat = new AgentChatModel({
92
+ title: 'Test Chat',
93
+ contextKey: 'test-context',
94
+ createdAt: new Date().toISOString(),
95
+ updatedAt: new Date().toISOString(),
96
+ });
97
+ const error = chat.validateSync();
98
+ expect(error).toBeUndefined();
99
+ expect(chat.userId).toBeUndefined();
100
+ });
101
+ });
102
+ describe('indexes', () => {
103
+ it('should have index on contextKey', async () => {
104
+ const indexes = AgentChatModel.schema.indexes();
105
+ const contextKeyIndex = indexes.find((idx) => idx[0] && typeof idx[0] === 'object' && 'contextKey' in idx[0]);
106
+ expect(contextKeyIndex).toBeDefined();
107
+ });
108
+ it('should have index on userId', async () => {
109
+ const indexes = AgentChatModel.schema.indexes();
110
+ const userIdIndex = indexes.find((idx) => idx[0] && typeof idx[0] === 'object' && 'userId' in idx[0]);
111
+ expect(userIdIndex).toBeDefined();
112
+ });
113
+ it('should have compound index on userId and contextKey', async () => {
114
+ const indexes = AgentChatModel.schema.indexes();
115
+ const compoundIndex = indexes.find((idx) => idx[0] && typeof idx[0] === 'object' && 'userId' in idx[0] && 'contextKey' in idx[0]);
116
+ expect(compoundIndex).toBeDefined();
117
+ });
118
+ });
119
+ });
120
+ //# sourceMappingURL=AgentChatSchema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentChatSchema.test.js","sourceRoot":"","sources":["../../../src/__tests__/schemas/AgentChatSchema.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgentMessageSchema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentMessageSchema.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/schemas/AgentMessageSchema.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,293 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { AgentMessageModel } from '../../schemas/AgentMessageSchema';
3
+ import { MessageRole, AgentToolCallStatus, AgentAttachmentType } from '@multiplayer-app/ai-agent-types';
4
+ import { ObjectId } from '../../mongo';
5
+ describe('AgentMessageSchema', () => {
6
+ const testChatId = new ObjectId().toString();
7
+ describe('validation', () => {
8
+ it('should create a valid message document', async () => {
9
+ const message = new AgentMessageModel({
10
+ chat: testChatId,
11
+ role: MessageRole.User,
12
+ content: 'Hello, world!',
13
+ });
14
+ const error = message.validateSync();
15
+ expect(error).toBeUndefined();
16
+ });
17
+ it('should require chat field', async () => {
18
+ const message = new AgentMessageModel({
19
+ role: MessageRole.User,
20
+ content: 'Hello',
21
+ });
22
+ const error = message.validateSync();
23
+ expect(error).toBeDefined();
24
+ expect(error === null || error === void 0 ? void 0 : error.errors.chat).toBeDefined();
25
+ });
26
+ it('should require role field', async () => {
27
+ const message = new AgentMessageModel({
28
+ chat: testChatId,
29
+ content: 'Hello',
30
+ });
31
+ const error = message.validateSync();
32
+ expect(error).toBeDefined();
33
+ expect(error === null || error === void 0 ? void 0 : error.errors.role).toBeDefined();
34
+ });
35
+ it('should require content field', async () => {
36
+ const message = new AgentMessageModel({
37
+ chat: testChatId,
38
+ role: MessageRole.User,
39
+ });
40
+ const error = message.validateSync();
41
+ expect(error).toBeDefined();
42
+ expect(error === null || error === void 0 ? void 0 : error.errors.content).toBeDefined();
43
+ });
44
+ it('should validate role enum values', async () => {
45
+ const validRoles = Object.values(MessageRole);
46
+ for (const role of validRoles) {
47
+ const message = new AgentMessageModel({
48
+ chat: testChatId,
49
+ role: role,
50
+ content: 'Test',
51
+ });
52
+ const error = message.validateSync();
53
+ expect(error).toBeUndefined();
54
+ }
55
+ });
56
+ it('should reject invalid role values', async () => {
57
+ const message = new AgentMessageModel({
58
+ chat: testChatId,
59
+ role: 'invalid-role',
60
+ content: 'Test',
61
+ });
62
+ const error = message.validateSync();
63
+ expect(error).toBeDefined();
64
+ expect(error === null || error === void 0 ? void 0 : error.errors.role).toBeDefined();
65
+ });
66
+ it('should allow optional toolCalls array', async () => {
67
+ var _a;
68
+ const message = new AgentMessageModel({
69
+ chat: testChatId,
70
+ role: MessageRole.Assistant,
71
+ content: 'I will use a tool',
72
+ toolCalls: [
73
+ {
74
+ name: 'test_tool',
75
+ input: { query: 'test' },
76
+ status: AgentToolCallStatus.Pending,
77
+ requiresConfirmation: false,
78
+ },
79
+ ],
80
+ });
81
+ const error = message.validateSync();
82
+ expect(error).toBeUndefined();
83
+ expect(message.toolCalls).toHaveLength(1);
84
+ expect((_a = message.toolCalls) === null || _a === void 0 ? void 0 : _a[0].name).toBe('test_tool');
85
+ });
86
+ it('should validate toolCall status enum', async () => {
87
+ const validStatuses = Object.values(AgentToolCallStatus);
88
+ for (const status of validStatuses) {
89
+ const message = new AgentMessageModel({
90
+ chat: testChatId,
91
+ role: MessageRole.Assistant,
92
+ content: 'Test',
93
+ toolCalls: [
94
+ {
95
+ name: 'test_tool',
96
+ input: {},
97
+ status: status,
98
+ requiresConfirmation: false,
99
+ },
100
+ ],
101
+ });
102
+ const error = message.validateSync();
103
+ expect(error).toBeUndefined();
104
+ }
105
+ });
106
+ it('should allow optional attachments array', async () => {
107
+ var _a;
108
+ const message = new AgentMessageModel({
109
+ chat: testChatId,
110
+ role: MessageRole.User,
111
+ content: 'Check this file',
112
+ attachments: [
113
+ {
114
+ id: 'attachment-1',
115
+ type: AgentAttachmentType.File,
116
+ name: 'test.txt',
117
+ url: 'https://example.com/test.txt',
118
+ mimeType: 'text/plain',
119
+ },
120
+ ],
121
+ });
122
+ const error = message.validateSync();
123
+ expect(error).toBeUndefined();
124
+ expect(message.attachments).toHaveLength(1);
125
+ expect((_a = message.attachments) === null || _a === void 0 ? void 0 : _a[0].type).toBe(AgentAttachmentType.File);
126
+ });
127
+ it('should validate attachment type enum', async () => {
128
+ const validTypes = Object.values(AgentAttachmentType);
129
+ for (const type of validTypes) {
130
+ const message = new AgentMessageModel({
131
+ chat: testChatId,
132
+ role: MessageRole.User,
133
+ content: 'Test',
134
+ attachments: [
135
+ {
136
+ id: 'attachment-1',
137
+ type: type,
138
+ name: 'test',
139
+ },
140
+ ],
141
+ });
142
+ const error = message.validateSync();
143
+ expect(error).toBeUndefined();
144
+ }
145
+ });
146
+ it('should allow optional annotations field', async () => {
147
+ const message = new AgentMessageModel({
148
+ chat: testChatId,
149
+ role: MessageRole.User,
150
+ content: 'Test',
151
+ annotations: { key: 'value', count: 42 },
152
+ });
153
+ const error = message.validateSync();
154
+ expect(error).toBeUndefined();
155
+ expect(message.annotations).toEqual({ key: 'value', count: 42 });
156
+ });
157
+ it('should automatically add timestamps', async () => {
158
+ const message = new AgentMessageModel({
159
+ chat: testChatId,
160
+ role: MessageRole.User,
161
+ content: 'Test',
162
+ });
163
+ const error = message.validateSync();
164
+ expect(error).toBeUndefined();
165
+ // Timestamps are added by mongoose when saving, but schema should allow them
166
+ expect(message.schema.paths.createdAt).toBeDefined();
167
+ expect(message.schema.paths.updatedAt).toBeDefined();
168
+ });
169
+ it('should allow empty toolCalls array', async () => {
170
+ const message = new AgentMessageModel({
171
+ chat: testChatId,
172
+ role: MessageRole.User,
173
+ content: 'Test',
174
+ toolCalls: [],
175
+ });
176
+ const error = message.validateSync();
177
+ expect(error).toBeUndefined();
178
+ expect(message.toolCalls).toEqual([]);
179
+ });
180
+ it('should allow empty attachments array', async () => {
181
+ const message = new AgentMessageModel({
182
+ chat: testChatId,
183
+ role: MessageRole.User,
184
+ content: 'Test',
185
+ attachments: [],
186
+ });
187
+ const error = message.validateSync();
188
+ expect(error).toBeUndefined();
189
+ expect(message.attachments).toEqual([]);
190
+ });
191
+ it('should validate toolCall required fields', async () => {
192
+ const message = new AgentMessageModel({
193
+ chat: testChatId,
194
+ role: MessageRole.Assistant,
195
+ content: 'Test',
196
+ toolCalls: [
197
+ {
198
+ // Missing required fields
199
+ },
200
+ ],
201
+ });
202
+ const error = message.validateSync();
203
+ expect(error).toBeDefined();
204
+ });
205
+ it('should validate attachment required fields', async () => {
206
+ const message = new AgentMessageModel({
207
+ chat: testChatId,
208
+ role: MessageRole.User,
209
+ content: 'Test',
210
+ attachments: [
211
+ {
212
+ // Missing required fields
213
+ },
214
+ ],
215
+ });
216
+ const error = message.validateSync();
217
+ expect(error).toBeDefined();
218
+ });
219
+ });
220
+ describe('indexes', () => {
221
+ it('should have index on chat field', async () => {
222
+ const indexes = AgentMessageModel.schema.indexes();
223
+ const chatIndex = indexes.find((idx) => idx[0] && typeof idx[0] === 'object' && 'chat' in idx[0]);
224
+ expect(chatIndex).toBeDefined();
225
+ });
226
+ });
227
+ describe('toolCall subdocument', () => {
228
+ it('should store toolCall output', async () => {
229
+ var _a;
230
+ const message = new AgentMessageModel({
231
+ chat: testChatId,
232
+ role: MessageRole.Assistant,
233
+ content: 'Test',
234
+ toolCalls: [
235
+ {
236
+ name: 'test_tool',
237
+ input: { query: 'test' },
238
+ status: AgentToolCallStatus.Succeeded,
239
+ output: { result: 'success' },
240
+ requiresConfirmation: false,
241
+ },
242
+ ],
243
+ });
244
+ const error = message.validateSync();
245
+ expect(error).toBeUndefined();
246
+ expect((_a = message.toolCalls) === null || _a === void 0 ? void 0 : _a[0].output).toEqual({ result: 'success' });
247
+ });
248
+ it('should store toolCall error', async () => {
249
+ var _a;
250
+ const message = new AgentMessageModel({
251
+ chat: testChatId,
252
+ role: MessageRole.Assistant,
253
+ content: 'Test',
254
+ toolCalls: [
255
+ {
256
+ name: 'test_tool',
257
+ input: { query: 'test' },
258
+ status: AgentToolCallStatus.Failed,
259
+ error: 'Tool execution failed',
260
+ requiresConfirmation: false,
261
+ },
262
+ ],
263
+ });
264
+ const error = message.validateSync();
265
+ expect(error).toBeUndefined();
266
+ expect((_a = message.toolCalls) === null || _a === void 0 ? void 0 : _a[0].error).toBe('Tool execution failed');
267
+ });
268
+ });
269
+ describe('attachment subdocument', () => {
270
+ it('should store attachment metadata', async () => {
271
+ var _a;
272
+ const message = new AgentMessageModel({
273
+ chat: testChatId,
274
+ role: MessageRole.User,
275
+ content: 'Test',
276
+ attachments: [
277
+ {
278
+ id: 'attachment-1',
279
+ type: AgentAttachmentType.File,
280
+ name: 'test.txt',
281
+ url: 'https://example.com/test.txt',
282
+ mimeType: 'text/plain',
283
+ metadata: { size: 1024, uploaded: true },
284
+ },
285
+ ],
286
+ });
287
+ const error = message.validateSync();
288
+ expect(error).toBeUndefined();
289
+ expect((_a = message.attachments) === null || _a === void 0 ? void 0 : _a[0].metadata).toEqual({ size: 1024, uploaded: true });
290
+ });
291
+ });
292
+ });
293
+ //# sourceMappingURL=AgentMessageSchema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentMessageSchema.test.js","sourceRoot":"","sources":["../../../src/__tests__/schemas/AgentMessageSchema.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { MongoMemoryServer } from 'mongodb-memory-server';
2
+ import mongoose from 'mongoose';
3
+ import { beforeAll, afterAll } from 'vitest';
4
+ let mongoServer;
5
+ beforeAll(async () => {
6
+ // Start in-memory MongoDB instance
7
+ mongoServer = await MongoMemoryServer.create();
8
+ const mongoUri = mongoServer.getUri();
9
+ // Set the MongoDB URI for the tests
10
+ process.env.MONGODB_URI = mongoUri;
11
+ process.env.MONGODB_ENCRYPTION_MASTER_KEY_PROVIDER = 'local';
12
+ // Connect mongoose to the in-memory database
13
+ await mongoose.connect(mongoUri);
14
+ });
15
+ afterAll(async () => {
16
+ // Clean up
17
+ if (mongoose.connection.readyState !== 0) {
18
+ await mongoose.connection.dropDatabase();
19
+ await mongoose.connection.close();
20
+ }
21
+ if (mongoServer) {
22
+ await mongoServer.stop();
23
+ }
24
+ });
25
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7C,IAAI,WAA8B,CAAC;AAEnC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,mCAAmC;IACnC,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;IAEtC,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,GAAG,OAAO,CAAC;IAE7D,6CAA6C;IAC7C,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,WAAW;IACX,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * MongoDB implementations of abstract repositories and Mongoose schemas
3
+ * for Multiplayer AI agent services
4
+ */
5
+ export * from './schemas';
6
+ export * from './repositories';
7
+ export { default as mongo } from './mongo';
8
+ export { setLogger, type MongoLogger } from './mongo/logger';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * MongoDB implementations of abstract repositories and Mongoose schemas
3
+ * for Multiplayer AI agent services
4
+ */
5
+ export * from './schemas';
6
+ export * from './repositories';
7
+ export { default as mongo } from './mongo';
8
+ export { setLogger } from './mongo/logger';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAC,OAAO,IAAI,KAAK,EAAC,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAoB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const MONGODB_URI: string;
2
+ export declare const MONGO_DEBUG: boolean;
3
+ export declare const MONGODB_DB_NAME: string;
4
+ export declare const MONGODB_ENCRYPTION_KEY_VAULT_DB_NAME: string;
5
+ export declare const MONGODB_ENCRYPTION_KEY_VAULT_COLLECTION_NAME: string;
6
+ export declare const MONGODB_ENCRYPTION_DEK_NAME: string;
7
+ export declare const MONGODB_ENCRYPTION_MASTER_KEY_PROVIDER: string;
8
+ export declare const AWS_KMS_KEY_ARN: string | undefined;
9
+ export declare const AWS_REGION: string | undefined;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mongo/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAAkE,CAAA;AAC1F,eAAO,MAAM,WAAW,SAAkD,CAAA;AAE1E,eAAO,MAAM,eAAe,QAAoD,CAAA;AAChF,eAAO,MAAM,oCAAoC,QAAmE,CAAA;AACpH,eAAO,MAAM,4CAA4C,QAA2E,CAAA;AACpI,eAAO,MAAM,2BAA2B,QAAwD,CAAA;AAChG,eAAO,MAAM,sCAAsC,QAAgE,CAAA;AAEnH,eAAO,MAAM,eAAe,oBAA8B,CAAA;AAC1D,eAAO,MAAM,UAAU,oBAAyB,CAAA"}
@@ -0,0 +1,10 @@
1
+ export const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/ai-agent';
2
+ export const MONGO_DEBUG = (process.env.MONGO_DEBUG || 'false') === 'true';
3
+ export const MONGODB_DB_NAME = MONGODB_URI.split('/').slice(-1)[0].split('?')[0];
4
+ export const MONGODB_ENCRYPTION_KEY_VAULT_DB_NAME = process.env.MONGODB_ENCRYPTION_KEY_VAULT_DB_NAME || 'encryption';
5
+ export const MONGODB_ENCRYPTION_KEY_VAULT_COLLECTION_NAME = process.env.MONGODB_ENCRYPTION_KEY_VAULT_COLLECTION_NAME || '__keyVault';
6
+ export const MONGODB_ENCRYPTION_DEK_NAME = process.env.MONGODB_ENCRYPTION_DEK_NAME || 'data-key';
7
+ export const MONGODB_ENCRYPTION_MASTER_KEY_PROVIDER = process.env.MONGODB_ENCRYPTION_MASTER_KEY_PROVIDER || 'local';
8
+ export const AWS_KMS_KEY_ARN = process.env.AWS_KMS_KEY_ARN;
9
+ export const AWS_REGION = process.env.AWS_REGION;
10
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mongo/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,oCAAoC,CAAA;AAC1F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,MAAM,CAAA;AAE1E,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAChF,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,YAAY,CAAA;AACpH,MAAM,CAAC,MAAM,4CAA4C,GAAG,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,YAAY,CAAA;AACpI,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,UAAU,CAAA;AAChG,MAAM,CAAC,MAAM,sCAAsC,GAAG,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,OAAO,CAAA;AAEnH,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA"}
@@ -0,0 +1,66 @@
1
+ export declare const encrypt: (data: any) => Promise<import("bson").Binary>;
2
+ export declare const decrypt: (data: any) => Promise<any>;
3
+ export declare const kmsProviders: any;
4
+ export declare const keyVaultNamespace: string;
5
+ export declare const connect: () => Promise<boolean>;
6
+ export declare const disconnect: () => Promise<void>;
7
+ export declare const getKeyId: () => Promise<any>;
8
+ export declare const getEncryptionSchemaMap: (encryptionKeyId: any) => {
9
+ [x: string]: {
10
+ bsonType: string;
11
+ properties: {
12
+ metadata: {
13
+ bsonType: string;
14
+ properties: {
15
+ accessToken: {
16
+ encrypt: {
17
+ bsonType: string;
18
+ keyId: any[];
19
+ algorithm: string;
20
+ };
21
+ };
22
+ refreshToken: {
23
+ encrypt: {
24
+ bsonType: string;
25
+ keyId: any[];
26
+ algorithm: string;
27
+ };
28
+ };
29
+ apiKey: {
30
+ encrypt: {
31
+ bsonType: string;
32
+ keyId: any[];
33
+ algorithm: string;
34
+ };
35
+ };
36
+ };
37
+ };
38
+ googleWorkspaceToken?: undefined;
39
+ };
40
+ } | {
41
+ bsonType: string;
42
+ properties: {
43
+ googleWorkspaceToken: {
44
+ bsonType: string;
45
+ properties: {
46
+ access_token: {
47
+ encrypt: {
48
+ bsonType: string;
49
+ keyId: any[];
50
+ algorithm: string;
51
+ };
52
+ };
53
+ refresh_token: {
54
+ encrypt: {
55
+ bsonType: string;
56
+ keyId: any[];
57
+ algorithm: string;
58
+ };
59
+ };
60
+ };
61
+ };
62
+ metadata?: undefined;
63
+ };
64
+ };
65
+ };
66
+ //# sourceMappingURL=encryption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/mongo/encryption.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,OAAO,GAAI,SAAI,mCAM3B,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,SAAI,iBAAmC,CAAA;AAE/D,eAAO,MAAM,YAAY,EAAE,GAAQ,CAAA;AAuBnC,eAAO,MAAM,iBAAiB,QAA4F,CAAA;AAM1H,eAAO,MAAM,OAAO,wBAsBnB,CAAA;AAED,eAAO,MAAM,UAAU,qBAItB,CAAA;AAED,eAAO,MAAM,QAAQ,oBA4BpB,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,oBAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DrD,CAAA"}