@messenger-box/platform-server 10.0.3-alpha.72 → 10.0.3-alpha.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config/env-config.d.ts +7 -0
- package/lib/config/env-config.js +20 -0
- package/lib/config/env-config.js.map +1 -1
- package/lib/containers/containers.js +6 -1
- package/lib/containers/containers.js.map +1 -1
- package/lib/containers/context-services-from-container.js +4 -2
- package/lib/containers/context-services-from-container.js.map +1 -1
- package/lib/graphql/resolvers/ai-fragment.d.ts +3 -0
- package/lib/graphql/resolvers/ai-fragment.js +276 -0
- package/lib/graphql/resolvers/ai-fragment.js.map +1 -0
- package/lib/graphql/resolvers/channel.js +29 -0
- package/lib/graphql/resolvers/channel.js.map +1 -1
- package/lib/graphql/resolvers/index.js +1 -1
- package/lib/graphql/resolvers/index.js.map +1 -1
- package/lib/graphql/resolvers/post.js +187 -14
- package/lib/graphql/resolvers/post.js.map +1 -1
- package/lib/graphql/schema/ai-fragment.graphql +311 -0
- package/lib/graphql/schema/ai-fragment.graphql.js +1 -0
- package/lib/graphql/schema/ai-fragment.graphql.js.map +1 -0
- package/lib/graphql/schema/channel.graphql +19 -0
- package/lib/graphql/schema/channel.graphql.js +1 -1
- package/lib/graphql/schema/index.js +2 -2
- package/lib/graphql/schema/index.js.map +1 -1
- package/lib/graphql/schema/post.graphql +76 -0
- package/lib/graphql/schema/post.graphql.js +1 -1
- package/lib/graphql/schema/services.graphql +19 -0
- package/lib/index.js.map +1 -1
- package/lib/inngest/factory.d.ts +20 -0
- package/lib/inngest/factory.js +4 -0
- package/lib/inngest/factory.js.map +1 -0
- package/lib/inngest/functions.d.ts +235 -0
- package/lib/inngest/functions.js +1385 -0
- package/lib/inngest/functions.js.map +1 -0
- package/lib/inngest/index.d.ts +3 -0
- package/lib/inngest/prompt.d.ts +6 -0
- package/lib/inngest/prompt.js +871 -0
- package/lib/inngest/prompt.js.map +1 -0
- package/lib/inngest/utils.d.ts +5 -0
- package/lib/inngest/utils.js +32 -0
- package/lib/inngest/utils.js.map +1 -0
- package/lib/module.js +10 -3
- package/lib/module.js.map +1 -1
- package/lib/plugins/ai-fragment-moleculer-service.d.ts +29 -0
- package/lib/plugins/ai-fragment-moleculer-service.js +516 -0
- package/lib/plugins/ai-fragment-moleculer-service.js.map +1 -0
- package/lib/plugins/channel-moleculer-service.js +9 -0
- package/lib/plugins/channel-moleculer-service.js.map +1 -1
- package/lib/plugins/index.d.ts +1 -0
- package/lib/plugins/post-moleculer-service.js +116 -0
- package/lib/plugins/post-moleculer-service.js.map +1 -1
- package/lib/services/ai-fragment-service.d.ts +195 -0
- package/lib/services/ai-fragment-service.js +631 -0
- package/lib/services/ai-fragment-service.js.map +1 -0
- package/lib/services/channel-service.d.ts +4 -2
- package/lib/services/channel-service.js +24 -2
- package/lib/services/channel-service.js.map +1 -1
- package/lib/services/index.d.ts +2 -0
- package/lib/services/post-service.d.ts +9 -2
- package/lib/services/post-service.js +225 -5
- package/lib/services/post-service.js.map +1 -1
- package/lib/services/proxy-services/ai-fragment-microservice.d.ts +23 -0
- package/lib/services/proxy-services/ai-fragment-microservice.js +78 -0
- package/lib/services/proxy-services/ai-fragment-microservice.js.map +1 -0
- package/lib/services/proxy-services/channel-microservice.d.ts +2 -1
- package/lib/services/proxy-services/channel-microservice.js +6 -0
- package/lib/services/proxy-services/channel-microservice.js.map +1 -1
- package/lib/services/proxy-services/index.d.ts +1 -0
- package/lib/services/proxy-services/post-microservice.d.ts +22 -1
- package/lib/services/proxy-services/post-microservice.js +80 -0
- package/lib/services/proxy-services/post-microservice.js.map +1 -1
- package/lib/services/sandbox-error-service.d.ts +23 -0
- package/lib/services/sandbox-error-service.js +422 -0
- package/lib/services/sandbox-error-service.js.map +1 -0
- package/lib/store/models/ai-fragment.d.ts +4 -0
- package/lib/store/models/ai-fragment.js +125 -0
- package/lib/store/models/ai-fragment.js.map +1 -0
- package/lib/store/models/channel.js +5 -0
- package/lib/store/models/channel.js.map +1 -1
- package/lib/store/models/index.d.ts +1 -0
- package/lib/store/repositories/ai-fragment-repository.d.ts +15 -0
- package/lib/store/repositories/ai-fragment-repository.js +69 -0
- package/lib/store/repositories/ai-fragment-repository.js.map +1 -0
- package/lib/store/repositories/channel-repository.js +1 -1
- package/lib/store/repositories/channel-repository.js.map +1 -1
- package/lib/store/repositories/index.d.ts +1 -0
- package/lib/store/repositories/post-repository.js +1 -1
- package/lib/store/repositories/post-repository.js.map +1 -1
- package/lib/store/repositories/post-thread-repository.js +1 -1
- package/lib/store/repositories/post-thread-repository.js.map +1 -1
- package/lib/store/repositories/reaction-repository.js +1 -1
- package/lib/store/repositories/reaction-repository.js.map +1 -1
- package/lib/templates/constants/SERVER_TYPES.ts.template +4 -1
- package/lib/templates/repositories/AiFragmentRepository.ts.template +4 -0
- package/lib/templates/services/AiFragmentService.ts.template +123 -0
- package/lib/templates/services/ChannelService.ts.template +11 -1
- package/lib/templates/services/PostService.ts.template +82 -1
- package/lib/templates/services/SandboxErrorService.ts.template +125 -0
- package/package.json +12 -6
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
import {__decorate,__param,__metadata}from'tslib';import {injectable,inject}from'inversify';import {ServiceBroker}from'moleculer';import {SERVER_TYPES,AiFragmentSyncStatus}from'common/server';import {CommonType}from'@common-stack/core';import'@cdm-logger/core';import {DisposableCollection}from'@adminide-stack/core';/**
|
|
2
|
+
* AI Fragment Service Implementation
|
|
3
|
+
*
|
|
4
|
+
* This service handles comprehensive AI fragment management within the messenger platform,
|
|
5
|
+
* providing operations for creating, managing, and synchronizing AI-generated code fragments
|
|
6
|
+
* with sandbox environments and file version control.
|
|
7
|
+
*
|
|
8
|
+
* Key capabilities:
|
|
9
|
+
* - AI fragment creation and lifecycle management
|
|
10
|
+
* - Sandbox URL management and synchronization
|
|
11
|
+
* - File version control and conflict resolution
|
|
12
|
+
* - Canvas layer support for visual components
|
|
13
|
+
* - Template-based fragment generation
|
|
14
|
+
* - Organization and user-based fragment retrieval
|
|
15
|
+
* - Real-time file synchronization status tracking
|
|
16
|
+
* - Batch operations for fragment management
|
|
17
|
+
* - Cross-platform fragment compatibility
|
|
18
|
+
*
|
|
19
|
+
* The service integrates with the AI fragment repository and provides comprehensive
|
|
20
|
+
* error handling and logging for fragment management workflows.
|
|
21
|
+
*/
|
|
22
|
+
let AiFragmentService = class AiFragmentService {
|
|
23
|
+
aiFragmentRepository;
|
|
24
|
+
broker;
|
|
25
|
+
toDispose = new DisposableCollection();
|
|
26
|
+
logger;
|
|
27
|
+
constructor(aiFragmentRepository, broker, logger) {
|
|
28
|
+
this.aiFragmentRepository = aiFragmentRepository;
|
|
29
|
+
this.broker = broker;
|
|
30
|
+
this.logger = logger?.child({
|
|
31
|
+
className: 'AiFragmentService'
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Disposes of resources used by the service
|
|
36
|
+
*/
|
|
37
|
+
dispose() {
|
|
38
|
+
this.toDispose.dispose();
|
|
39
|
+
}
|
|
40
|
+
// IBaseService implementation methods
|
|
41
|
+
/**
|
|
42
|
+
* Retrieves documents with pagination and total count
|
|
43
|
+
*/
|
|
44
|
+
async getAllWithCount(options) {
|
|
45
|
+
try {
|
|
46
|
+
this.logger.debug('Getting AI fragments with count', {
|
|
47
|
+
options
|
|
48
|
+
});
|
|
49
|
+
return await this.aiFragmentRepository.getAllWithCount(options);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
this.logger.error('Error getting AI fragments with count: %o', error);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Counts documents matching the specified conditions
|
|
57
|
+
*/
|
|
58
|
+
async count(conditions) {
|
|
59
|
+
try {
|
|
60
|
+
this.logger.debug('Counting AI fragments', {
|
|
61
|
+
conditions
|
|
62
|
+
});
|
|
63
|
+
return await this.aiFragmentRepository.count(conditions);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
this.logger.error('Error counting AI fragments: %o', error);
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Retrieves a single document by ID or matching the specified conditions
|
|
71
|
+
*/
|
|
72
|
+
async get(conditions) {
|
|
73
|
+
try {
|
|
74
|
+
this.logger.debug('Getting AI fragment', {
|
|
75
|
+
conditions
|
|
76
|
+
});
|
|
77
|
+
return await this.aiFragmentRepository.get(conditions);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
this.logger.error('Error getting AI fragment: %o', error);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Retrieves a single document by name field
|
|
85
|
+
*/
|
|
86
|
+
async getByName(name) {
|
|
87
|
+
try {
|
|
88
|
+
this.logger.debug('Getting AI fragment by name', {
|
|
89
|
+
name
|
|
90
|
+
});
|
|
91
|
+
return await this.aiFragmentRepository.find({
|
|
92
|
+
title: name
|
|
93
|
+
});
|
|
94
|
+
} catch (error) {
|
|
95
|
+
this.logger.error('Error getting AI fragment by name: %o', error);
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Retrieves documents matching the specified options
|
|
101
|
+
*/
|
|
102
|
+
async getAll(options) {
|
|
103
|
+
try {
|
|
104
|
+
this.logger.debug('Getting all AI fragments', {
|
|
105
|
+
options
|
|
106
|
+
});
|
|
107
|
+
return await this.aiFragmentRepository.getAll(options);
|
|
108
|
+
} catch (error) {
|
|
109
|
+
this.logger.error('Error getting all AI fragments: %o', error);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Retrieves multiple documents by their IDs
|
|
115
|
+
*/
|
|
116
|
+
async getByIds(ids) {
|
|
117
|
+
try {
|
|
118
|
+
this.logger.debug('Getting AI fragments by IDs', {
|
|
119
|
+
ids
|
|
120
|
+
});
|
|
121
|
+
return await this.aiFragmentRepository.getAll({
|
|
122
|
+
criteria: {
|
|
123
|
+
_id: {
|
|
124
|
+
$in: ids
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
} catch (error) {
|
|
129
|
+
this.logger.error('Error getting AI fragments by IDs: %o', error);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Creates a new document
|
|
135
|
+
*/
|
|
136
|
+
async create(data) {
|
|
137
|
+
try {
|
|
138
|
+
this.logger.debug('Creating AI fragment', {
|
|
139
|
+
data
|
|
140
|
+
});
|
|
141
|
+
return await this.aiFragmentRepository.create(data);
|
|
142
|
+
} catch (error) {
|
|
143
|
+
this.logger.error('Error creating AI fragment: %o', error);
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Creates multiple documents in a single operation
|
|
149
|
+
*/
|
|
150
|
+
async bulkCreate(data) {
|
|
151
|
+
try {
|
|
152
|
+
this.logger.debug('Bulk creating AI fragments', {
|
|
153
|
+
count: data.length
|
|
154
|
+
});
|
|
155
|
+
const results = await Promise.all(data.map(item => this.aiFragmentRepository.create(item)));
|
|
156
|
+
return results;
|
|
157
|
+
} catch (error) {
|
|
158
|
+
this.logger.error('Error bulk creating AI fragments: %o', error);
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Updates a document by ID
|
|
164
|
+
*/
|
|
165
|
+
async update(id, data) {
|
|
166
|
+
try {
|
|
167
|
+
this.logger.debug('Updating AI fragment', {
|
|
168
|
+
id,
|
|
169
|
+
data
|
|
170
|
+
});
|
|
171
|
+
return await this.aiFragmentRepository.update({
|
|
172
|
+
_id: id
|
|
173
|
+
}, data);
|
|
174
|
+
} catch (error) {
|
|
175
|
+
this.logger.error('Error updating AI fragment: %o', error);
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Updates multiple documents
|
|
181
|
+
*/
|
|
182
|
+
async bulkUpdate(conditions, data) {
|
|
183
|
+
try {
|
|
184
|
+
this.logger.debug('Bulk updating AI fragments', {
|
|
185
|
+
conditions,
|
|
186
|
+
data
|
|
187
|
+
});
|
|
188
|
+
const result = await this.aiFragmentRepository.bulkUpdate(conditions, data);
|
|
189
|
+
return Array.isArray(result) ? result.length : 0;
|
|
190
|
+
} catch (error) {
|
|
191
|
+
this.logger.error('Error bulk updating AI fragments: %o', error);
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Deletes a document by ID
|
|
197
|
+
*/
|
|
198
|
+
async delete(id) {
|
|
199
|
+
try {
|
|
200
|
+
this.logger.debug('Deleting AI fragment', {
|
|
201
|
+
id
|
|
202
|
+
});
|
|
203
|
+
return await this.aiFragmentRepository.delete({
|
|
204
|
+
_id: id
|
|
205
|
+
});
|
|
206
|
+
} catch (error) {
|
|
207
|
+
this.logger.error('Error deleting AI fragment: %o', error);
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Deletes multiple documents
|
|
213
|
+
*/
|
|
214
|
+
async bulkDelete(conditions) {
|
|
215
|
+
try {
|
|
216
|
+
this.logger.debug('Bulk deleting AI fragments', {
|
|
217
|
+
conditions
|
|
218
|
+
});
|
|
219
|
+
const result = await this.aiFragmentRepository.bulkDelete(conditions);
|
|
220
|
+
return Array.isArray(result) ? result.length : 0;
|
|
221
|
+
} catch (error) {
|
|
222
|
+
this.logger.error('Error bulk deleting AI fragments: %o', error);
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Inserts a new document
|
|
228
|
+
*/
|
|
229
|
+
async insert(data) {
|
|
230
|
+
try {
|
|
231
|
+
this.logger.debug('Inserting AI fragment', {
|
|
232
|
+
data
|
|
233
|
+
});
|
|
234
|
+
return await this.aiFragmentRepository.create(data);
|
|
235
|
+
} catch (error) {
|
|
236
|
+
this.logger.error('Error inserting AI fragment: %o', error);
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// AI Fragment specific methods
|
|
241
|
+
/**
|
|
242
|
+
* Creates a new AI fragment with the specified parameters
|
|
243
|
+
*
|
|
244
|
+
* @description Creates a new AI fragment with all necessary metadata including
|
|
245
|
+
* sandbox URL, files, canvas layers, and template information
|
|
246
|
+
*
|
|
247
|
+
* @param {IAiFragmentCreateInput & { owner: string; orgName: string }} input - The fragment creation data
|
|
248
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel>>} - The created fragment
|
|
249
|
+
*/
|
|
250
|
+
async createFragment(input) {
|
|
251
|
+
try {
|
|
252
|
+
if (!input) {
|
|
253
|
+
throw new Error('Fragment input data is required');
|
|
254
|
+
}
|
|
255
|
+
if (!input.messageId || !input.sandboxUrl || !input.title || !input.owner || !input.orgName) {
|
|
256
|
+
throw new Error('Required fields (messageId, sandboxUrl, title, owner, orgName) are missing');
|
|
257
|
+
}
|
|
258
|
+
this.logger.debug('Creating AI fragment', {
|
|
259
|
+
messageId: input.messageId,
|
|
260
|
+
title: input.title,
|
|
261
|
+
owner: input.owner,
|
|
262
|
+
orgName: input.orgName,
|
|
263
|
+
hasFiles: !!input.files,
|
|
264
|
+
hasCanvasLayers: !!input.canvasLayers,
|
|
265
|
+
template: input.template
|
|
266
|
+
});
|
|
267
|
+
const fragmentData = {
|
|
268
|
+
messageId: input.messageId,
|
|
269
|
+
sandboxUrl: input.sandboxUrl,
|
|
270
|
+
title: input.title,
|
|
271
|
+
files: input.files || {},
|
|
272
|
+
owner: input.owner,
|
|
273
|
+
orgName: input.orgName,
|
|
274
|
+
canvasLayers: input.canvasLayers || null,
|
|
275
|
+
template: input.template || null,
|
|
276
|
+
syncStatus: AiFragmentSyncStatus.Synced,
|
|
277
|
+
fileVersions: {},
|
|
278
|
+
lastSyncAt: new Date()
|
|
279
|
+
};
|
|
280
|
+
const result = await this.aiFragmentRepository.create(fragmentData);
|
|
281
|
+
this.logger.debug('AI fragment created successfully', {
|
|
282
|
+
fragmentId: result.id,
|
|
283
|
+
messageId: input.messageId
|
|
284
|
+
});
|
|
285
|
+
return result;
|
|
286
|
+
} catch (error) {
|
|
287
|
+
this.logger.error('Error creating AI fragment: %o', error);
|
|
288
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while creating AI fragment');
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Retrieves an AI fragment by its message ID
|
|
293
|
+
*
|
|
294
|
+
* @description Finds a fragment using its associated message ID
|
|
295
|
+
*
|
|
296
|
+
* @param {string} messageId - The message ID to search for
|
|
297
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel> | null>} - The found fragment or null
|
|
298
|
+
*/
|
|
299
|
+
async getFragmentByMessageId(messageId) {
|
|
300
|
+
try {
|
|
301
|
+
if (!messageId) {
|
|
302
|
+
throw new Error('Message ID is required');
|
|
303
|
+
}
|
|
304
|
+
this.logger.debug('Getting AI fragment by message ID', {
|
|
305
|
+
messageId
|
|
306
|
+
});
|
|
307
|
+
const result = await this.aiFragmentRepository.find({
|
|
308
|
+
messageId
|
|
309
|
+
});
|
|
310
|
+
if (result) {
|
|
311
|
+
this.logger.debug('AI fragment found by message ID', {
|
|
312
|
+
fragmentId: result.id,
|
|
313
|
+
messageId
|
|
314
|
+
});
|
|
315
|
+
} else {
|
|
316
|
+
this.logger.debug('No AI fragment found for message ID', {
|
|
317
|
+
messageId
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
return result;
|
|
321
|
+
} catch (error) {
|
|
322
|
+
this.logger.error('Error getting AI fragment by message ID: %o', error);
|
|
323
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while getting AI fragment by message ID');
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Retrieves AI fragments for a specific user and organization
|
|
328
|
+
*
|
|
329
|
+
* @description Gets paginated fragments for a user within an organization
|
|
330
|
+
*
|
|
331
|
+
* @param {string} orgName - Organization name
|
|
332
|
+
* @param {string} owner - Owner identifier
|
|
333
|
+
* @param {number} [limit=20] - Maximum number of fragments to return
|
|
334
|
+
* @param {number} [skip=0] - Number of fragments to skip
|
|
335
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel>[]>} - Array of fragments
|
|
336
|
+
*/
|
|
337
|
+
async getFragmentsByUser(orgName, owner, limit = 20, skip = 0) {
|
|
338
|
+
try {
|
|
339
|
+
if (!orgName || !owner) {
|
|
340
|
+
throw new Error('Organization name and owner are required');
|
|
341
|
+
}
|
|
342
|
+
this.logger.debug('Getting AI fragments by user', {
|
|
343
|
+
orgName,
|
|
344
|
+
owner,
|
|
345
|
+
limit,
|
|
346
|
+
skip
|
|
347
|
+
});
|
|
348
|
+
const result = await this.aiFragmentRepository.getAll({
|
|
349
|
+
criteria: {
|
|
350
|
+
orgName,
|
|
351
|
+
owner
|
|
352
|
+
},
|
|
353
|
+
limit,
|
|
354
|
+
skip,
|
|
355
|
+
sort: {
|
|
356
|
+
createdAt: -1
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
this.logger.debug('AI fragments retrieved for user', {
|
|
360
|
+
orgName,
|
|
361
|
+
owner,
|
|
362
|
+
count: result.length,
|
|
363
|
+
limit,
|
|
364
|
+
skip
|
|
365
|
+
});
|
|
366
|
+
return result;
|
|
367
|
+
} catch (error) {
|
|
368
|
+
this.logger.error('Error getting AI fragments by user: %o', error);
|
|
369
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while getting AI fragments by user');
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Updates the files associated with a fragment
|
|
374
|
+
*
|
|
375
|
+
* @description Updates the files data for a fragment identified by message ID
|
|
376
|
+
*
|
|
377
|
+
* @param {string} messageId - The message ID of the fragment to update
|
|
378
|
+
* @param {Record<string, any>} files - The new files data
|
|
379
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel> | null>} - The updated fragment or null
|
|
380
|
+
*/
|
|
381
|
+
async updateFragmentFiles(messageId, files) {
|
|
382
|
+
try {
|
|
383
|
+
if (!messageId || !files) {
|
|
384
|
+
throw new Error('Message ID and files data are required');
|
|
385
|
+
}
|
|
386
|
+
this.logger.debug('Updating AI fragment files', {
|
|
387
|
+
messageId,
|
|
388
|
+
fileCount: Object.keys(files).length
|
|
389
|
+
});
|
|
390
|
+
const result = await this.aiFragmentRepository.update({
|
|
391
|
+
messageId
|
|
392
|
+
}, {
|
|
393
|
+
files
|
|
394
|
+
});
|
|
395
|
+
if (result) {
|
|
396
|
+
this.logger.debug('AI fragment files updated successfully', {
|
|
397
|
+
fragmentId: result.id,
|
|
398
|
+
messageId
|
|
399
|
+
});
|
|
400
|
+
} else {
|
|
401
|
+
this.logger.debug('No AI fragment found to update files', {
|
|
402
|
+
messageId
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
return result;
|
|
406
|
+
} catch (error) {
|
|
407
|
+
this.logger.error('Error updating AI fragment files: %o', error);
|
|
408
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while updating AI fragment files');
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Deletes an AI fragment by its ID
|
|
413
|
+
*
|
|
414
|
+
* @description Removes a fragment from the database
|
|
415
|
+
*
|
|
416
|
+
* @param {string} id - The fragment ID to delete
|
|
417
|
+
* @returns {Promise<boolean>} - Success status
|
|
418
|
+
*/
|
|
419
|
+
async deleteFragment(id) {
|
|
420
|
+
try {
|
|
421
|
+
if (!id) {
|
|
422
|
+
throw new Error('Fragment ID is required');
|
|
423
|
+
}
|
|
424
|
+
this.logger.debug('Deleting AI fragment by ID', {
|
|
425
|
+
id
|
|
426
|
+
});
|
|
427
|
+
const result = await this.aiFragmentRepository.delete({
|
|
428
|
+
_id: id
|
|
429
|
+
});
|
|
430
|
+
this.logger.debug('AI fragment deletion result', {
|
|
431
|
+
id,
|
|
432
|
+
success: result
|
|
433
|
+
});
|
|
434
|
+
return result;
|
|
435
|
+
} catch (error) {
|
|
436
|
+
this.logger.error('Error deleting AI fragment by ID: %o', error);
|
|
437
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while deleting AI fragment');
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Deletes an AI fragment by its message ID
|
|
442
|
+
*
|
|
443
|
+
* @description Removes a fragment using its message ID
|
|
444
|
+
*
|
|
445
|
+
* @param {string} messageId - The message ID of the fragment to delete
|
|
446
|
+
* @returns {Promise<boolean>} - Success status
|
|
447
|
+
*/
|
|
448
|
+
async deleteFragmentByMessageId(messageId) {
|
|
449
|
+
try {
|
|
450
|
+
if (!messageId) {
|
|
451
|
+
throw new Error('Message ID is required');
|
|
452
|
+
}
|
|
453
|
+
this.logger.debug('Deleting AI fragment by message ID', {
|
|
454
|
+
messageId
|
|
455
|
+
});
|
|
456
|
+
const result = await this.aiFragmentRepository.delete({
|
|
457
|
+
messageId
|
|
458
|
+
});
|
|
459
|
+
this.logger.debug('AI fragment deletion by message ID result', {
|
|
460
|
+
messageId,
|
|
461
|
+
success: result
|
|
462
|
+
});
|
|
463
|
+
return result;
|
|
464
|
+
} catch (error) {
|
|
465
|
+
this.logger.error('Error deleting AI fragment by message ID: %o', error);
|
|
466
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while deleting AI fragment by message ID');
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Retrieves an AI fragment by its ID
|
|
471
|
+
*
|
|
472
|
+
* @description Gets a fragment using its database ID
|
|
473
|
+
*
|
|
474
|
+
* @param {string} fragmentId - The fragment ID to retrieve
|
|
475
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel> | null>} - The found fragment or null
|
|
476
|
+
*/
|
|
477
|
+
async getFragmentById(fragmentId) {
|
|
478
|
+
try {
|
|
479
|
+
if (!fragmentId) {
|
|
480
|
+
throw new Error('Fragment ID is required');
|
|
481
|
+
}
|
|
482
|
+
this.logger.debug('Getting AI fragment by ID', {
|
|
483
|
+
fragmentId
|
|
484
|
+
});
|
|
485
|
+
const result = await this.aiFragmentRepository.get(fragmentId);
|
|
486
|
+
if (result) {
|
|
487
|
+
this.logger.debug('AI fragment found by ID', {
|
|
488
|
+
fragmentId
|
|
489
|
+
});
|
|
490
|
+
} else {
|
|
491
|
+
this.logger.debug('No AI fragment found for ID', {
|
|
492
|
+
fragmentId
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
return result;
|
|
496
|
+
} catch (error) {
|
|
497
|
+
this.logger.error('Error getting AI fragment by ID: %o', error);
|
|
498
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while getting AI fragment by ID');
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Updates the sandbox URL for a fragment
|
|
503
|
+
*
|
|
504
|
+
* @description Updates the sandbox URL for a fragment identified by its ID
|
|
505
|
+
*
|
|
506
|
+
* @param {string} fragmentId - The fragment ID to update
|
|
507
|
+
* @param {string} newSandboxUrl - The new sandbox URL
|
|
508
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel> | null>} - The updated fragment or null
|
|
509
|
+
*/
|
|
510
|
+
async updateSandboxUrl(fragmentId, newSandboxUrl) {
|
|
511
|
+
try {
|
|
512
|
+
if (!fragmentId || !newSandboxUrl) {
|
|
513
|
+
throw new Error('Fragment ID and new sandbox URL are required');
|
|
514
|
+
}
|
|
515
|
+
this.logger.debug('Updating AI fragment sandbox URL', {
|
|
516
|
+
fragmentId,
|
|
517
|
+
newSandboxUrl
|
|
518
|
+
});
|
|
519
|
+
const result = await this.aiFragmentRepository.update({
|
|
520
|
+
_id: fragmentId
|
|
521
|
+
}, {
|
|
522
|
+
sandboxUrl: newSandboxUrl
|
|
523
|
+
});
|
|
524
|
+
if (result) {
|
|
525
|
+
this.logger.debug('AI fragment sandbox URL updated successfully', {
|
|
526
|
+
fragmentId,
|
|
527
|
+
newSandboxUrl
|
|
528
|
+
});
|
|
529
|
+
} else {
|
|
530
|
+
this.logger.debug('No AI fragment found to update sandbox URL', {
|
|
531
|
+
fragmentId
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
return result;
|
|
535
|
+
} catch (error) {
|
|
536
|
+
this.logger.error('Error updating AI fragment sandbox URL: %o', error);
|
|
537
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while updating AI fragment sandbox URL');
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Updates file synchronization status and versions
|
|
542
|
+
*
|
|
543
|
+
* @description Updates the sync status and file versions for a fragment
|
|
544
|
+
*
|
|
545
|
+
* @param {string} fragmentId - The fragment ID to update
|
|
546
|
+
* @param {Record<string, number>} fileVersions - File version mapping
|
|
547
|
+
* @param {AiFragmentSyncStatus} syncStatus - Current synchronization status
|
|
548
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel> | null>} - The updated fragment or null
|
|
549
|
+
*/
|
|
550
|
+
async updateFileSync(fragmentId, fileVersions, syncStatus) {
|
|
551
|
+
try {
|
|
552
|
+
if (!fragmentId || !fileVersions || !syncStatus) {
|
|
553
|
+
throw new Error('Fragment ID, file versions, and sync status are required');
|
|
554
|
+
}
|
|
555
|
+
this.logger.debug('Updating AI fragment file sync', {
|
|
556
|
+
fragmentId,
|
|
557
|
+
fileVersionCount: Object.keys(fileVersions).length,
|
|
558
|
+
syncStatus
|
|
559
|
+
});
|
|
560
|
+
const result = await this.aiFragmentRepository.update({
|
|
561
|
+
_id: fragmentId
|
|
562
|
+
}, {
|
|
563
|
+
fileVersions,
|
|
564
|
+
syncStatus,
|
|
565
|
+
lastSyncAt: new Date()
|
|
566
|
+
});
|
|
567
|
+
if (result) {
|
|
568
|
+
this.logger.debug('AI fragment file sync updated successfully', {
|
|
569
|
+
fragmentId,
|
|
570
|
+
syncStatus
|
|
571
|
+
});
|
|
572
|
+
} else {
|
|
573
|
+
this.logger.debug('No AI fragment found to update file sync', {
|
|
574
|
+
fragmentId
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
return result;
|
|
578
|
+
} catch (error) {
|
|
579
|
+
this.logger.error('Error updating AI fragment file sync: %o', error);
|
|
580
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while updating AI fragment file sync');
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Updates both files and synchronization status in a single operation
|
|
585
|
+
*
|
|
586
|
+
* @description Performs a comprehensive update of files and sync status
|
|
587
|
+
*
|
|
588
|
+
* @param {string} messageId - The message ID of the fragment to update
|
|
589
|
+
* @param {Record<string, any>} files - The new files data
|
|
590
|
+
* @param {Record<string, number>} fileVersions - File version mapping
|
|
591
|
+
* @param {AiFragmentSyncStatus} syncStatus - Current synchronization status
|
|
592
|
+
* @returns {Promise<AsDomainType<IAiFragmentModel> | null>} - The updated fragment or null
|
|
593
|
+
*/
|
|
594
|
+
async updateFilesAndSync(messageId, files, fileVersions, syncStatus) {
|
|
595
|
+
try {
|
|
596
|
+
if (!messageId || !files || !fileVersions || !syncStatus) {
|
|
597
|
+
throw new Error('Message ID, files, file versions, and sync status are required');
|
|
598
|
+
}
|
|
599
|
+
this.logger.debug('Updating AI fragment files and sync', {
|
|
600
|
+
messageId,
|
|
601
|
+
fileCount: Object.keys(files).length,
|
|
602
|
+
fileVersionCount: Object.keys(fileVersions).length,
|
|
603
|
+
syncStatus
|
|
604
|
+
});
|
|
605
|
+
const result = await this.aiFragmentRepository.update({
|
|
606
|
+
messageId
|
|
607
|
+
}, {
|
|
608
|
+
files,
|
|
609
|
+
fileVersions,
|
|
610
|
+
syncStatus,
|
|
611
|
+
lastSyncAt: new Date()
|
|
612
|
+
});
|
|
613
|
+
if (result) {
|
|
614
|
+
this.logger.debug('AI fragment files and sync updated successfully', {
|
|
615
|
+
fragmentId: result.id,
|
|
616
|
+
messageId,
|
|
617
|
+
syncStatus
|
|
618
|
+
});
|
|
619
|
+
} else {
|
|
620
|
+
this.logger.debug('No AI fragment found to update files and sync', {
|
|
621
|
+
messageId
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
return result;
|
|
625
|
+
} catch (error) {
|
|
626
|
+
this.logger.error('Error updating AI fragment files and sync: %o', error);
|
|
627
|
+
throw error instanceof Error ? error : new Error('Unknown error occurred while updating AI fragment files and sync');
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
};
|
|
631
|
+
AiFragmentService = __decorate([injectable(), __param(0, inject(SERVER_TYPES.AiFragmentRepository)), __param(1, inject(CommonType.MOLECULER_BROKER)), __param(2, inject('Logger')), __metadata("design:paramtypes", [Object, ServiceBroker, Object])], AiFragmentService);export{AiFragmentService};//# sourceMappingURL=ai-fragment-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-fragment-service.js","sources":["../../src/services/ai-fragment-service.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Disposable, DisposableCollection, Emitter } from '@adminide-stack/core';
|
|
2
|
-
import { IChannelModel, IChannelUnread, IPost, IUserAccount, IChannelRepository, IChannelService, IPostService, ISaveChannelParams, ISaveDirectChannelParams, ISavePublicChannelParams, INotificationProps, ICreateDirectChannelParams, ISaveMembersToChannelParams, AsDomainType, IRedisCacheManager, IUserContext } from 'common/server';
|
|
2
|
+
import { IChannelModel, IChannelUnread, IPost, IUserAccount, IChannelRepository, IChannelService, IPostService, ISaveChannelParams, ISaveDirectChannelParams, ISavePublicChannelParams, INotificationProps, ICreateDirectChannelParams, ISaveMembersToChannelParams, AsDomainType, IRedisCacheManager, IUserContext, IChannelInput } from 'common/server';
|
|
3
3
|
import { BaseService2 } from '@common-stack/store-mongo';
|
|
4
4
|
import { CdmLogger } from '@cdm-logger/core';
|
|
5
5
|
import { ServiceBroker } from 'moleculer';
|
|
@@ -33,6 +33,7 @@ export declare class ChannelService extends BaseService2<IChannelModel> implemen
|
|
|
33
33
|
protected readonly broker?: ServiceBroker;
|
|
34
34
|
protected readonly redisCacheManager?: IRedisCacheManager;
|
|
35
35
|
protected readonly redisClient?: Redis;
|
|
36
|
+
protected readonly inngestClient?: any;
|
|
36
37
|
protected readonly onChannelCreated: Emitter<{
|
|
37
38
|
channel: AsDomainType<IChannelModel>;
|
|
38
39
|
userContext?: IUserContext;
|
|
@@ -68,7 +69,7 @@ export declare class ChannelService extends BaseService2<IChannelModel> implemen
|
|
|
68
69
|
}>;
|
|
69
70
|
protected readonly toDispose: DisposableCollection;
|
|
70
71
|
private logger;
|
|
71
|
-
constructor(repository: IChannelRepository, postService: IPostService, broker?: ServiceBroker, redisCacheManager?: IRedisCacheManager, redisClient?: Redis, logger?: CdmLogger.ILogger);
|
|
72
|
+
constructor(repository: IChannelRepository, postService: IPostService, broker?: ServiceBroker, redisCacheManager?: IRedisCacheManager, redisClient?: Redis, logger?: CdmLogger.ILogger, inngestClient?: any);
|
|
72
73
|
/**
|
|
73
74
|
* Disposes of resources used by the service
|
|
74
75
|
*/
|
|
@@ -185,6 +186,7 @@ export declare class ChannelService extends BaseService2<IChannelModel> implemen
|
|
|
185
186
|
permanentDeleteMembersByChannel(channelId: string): Promise<void | Error>;
|
|
186
187
|
saveMultipleMembers(members: IUserAccount[]): Promise<IUserAccount[] | Error>;
|
|
187
188
|
invalidateChannelByName(teamId: string, name: string): Promise<void>;
|
|
189
|
+
createChannelWithProjectId(projectId: string, channelInput: IChannelInput): Promise<boolean>;
|
|
188
190
|
}
|
|
189
191
|
declare const _default: any;
|
|
190
192
|
export default _default;
|