@memberjunction/ng-conversations 2.129.0 → 2.130.0

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 (80) hide show
  1. package/dist/lib/components/attachment/image-viewer.component.d.ts +95 -0
  2. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -0
  3. package/dist/lib/components/attachment/image-viewer.component.js +293 -0
  4. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -0
  5. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +86 -25
  6. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  7. package/dist/lib/components/conversation/conversation-chat-area.component.js +524 -348
  8. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  9. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +12 -3
  10. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  11. package/dist/lib/components/conversation/conversation-empty-state.component.js +68 -55
  12. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  13. package/dist/lib/components/conversation/conversation-list.component.d.ts +2 -0
  14. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  15. package/dist/lib/components/conversation/conversation-list.component.js +157 -145
  16. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  17. package/dist/lib/components/mention/mention-editor.component.d.ts +102 -5
  18. package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
  19. package/dist/lib/components/mention/mention-editor.component.js +349 -21
  20. package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
  21. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  22. package/dist/lib/components/message/conversation-message-rating.component.js +3 -2
  23. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  24. package/dist/lib/components/message/message-input-box.component.d.ts +29 -2
  25. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
  26. package/dist/lib/components/message/message-input-box.component.js +79 -12
  27. package/dist/lib/components/message/message-input-box.component.js.map +1 -1
  28. package/dist/lib/components/message/message-input.component.d.ts +56 -4
  29. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  30. package/dist/lib/components/message/message-input.component.js +227 -60
  31. package/dist/lib/components/message/message-input.component.js.map +1 -1
  32. package/dist/lib/components/message/message-item.component.d.ts +34 -1
  33. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  34. package/dist/lib/components/message/message-item.component.js +181 -93
  35. package/dist/lib/components/message/message-item.component.js.map +1 -1
  36. package/dist/lib/components/message/message-list.component.d.ts +4 -1
  37. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  38. package/dist/lib/components/message/message-list.component.js +12 -1
  39. package/dist/lib/components/message/message-list.component.js.map +1 -1
  40. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +44 -13
  41. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  42. package/dist/lib/components/workspace/conversation-workspace.component.js +82 -108
  43. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  44. package/dist/lib/conversations.module.d.ts +26 -25
  45. package/dist/lib/conversations.module.d.ts.map +1 -1
  46. package/dist/lib/conversations.module.js +7 -3
  47. package/dist/lib/conversations.module.js.map +1 -1
  48. package/dist/lib/services/active-tasks.service.d.ts +23 -0
  49. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  50. package/dist/lib/services/active-tasks.service.js +91 -2
  51. package/dist/lib/services/active-tasks.service.js.map +1 -1
  52. package/dist/lib/services/agent-state.service.d.ts +2 -0
  53. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  54. package/dist/lib/services/agent-state.service.js +20 -3
  55. package/dist/lib/services/agent-state.service.js.map +1 -1
  56. package/dist/lib/services/conversation-agent.service.d.ts +36 -5
  57. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  58. package/dist/lib/services/conversation-agent.service.js +233 -71
  59. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  60. package/dist/lib/services/conversation-attachment.service.d.ts +79 -0
  61. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -0
  62. package/dist/lib/services/conversation-attachment.service.js +327 -0
  63. package/dist/lib/services/conversation-attachment.service.js.map +1 -0
  64. package/dist/lib/services/conversation-data.service.d.ts +15 -1
  65. package/dist/lib/services/conversation-data.service.d.ts.map +1 -1
  66. package/dist/lib/services/conversation-data.service.js +23 -1
  67. package/dist/lib/services/conversation-data.service.js.map +1 -1
  68. package/dist/lib/services/conversation-streaming.service.d.ts +50 -1
  69. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  70. package/dist/lib/services/conversation-streaming.service.js +92 -4
  71. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  72. package/dist/lib/services/mention-parser.service.d.ts +15 -0
  73. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  74. package/dist/lib/services/mention-parser.service.js +30 -0
  75. package/dist/lib/services/mention-parser.service.js.map +1 -1
  76. package/dist/public-api.d.ts +2 -0
  77. package/dist/public-api.d.ts.map +1 -1
  78. package/dist/public-api.js +2 -0
  79. package/dist/public-api.js.map +1 -1
  80. package/package.json +17 -17
@@ -0,0 +1,79 @@
1
+ import { UserInfo } from '@memberjunction/core';
2
+ import { ConversationDetailAttachmentEntity } from '@memberjunction/core-entities';
3
+ import { MessageAttachment } from '../components/message/message-item.component';
4
+ import { PendingAttachment } from '../components/mention/mention-editor.component';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Service for managing conversation attachments.
8
+ * Handles loading, saving, and converting attachments between different formats.
9
+ */
10
+ export declare class ConversationAttachmentService {
11
+ constructor();
12
+ /**
13
+ * Load all attachments for a list of conversation detail IDs.
14
+ * Returns a map of ConversationDetailID -> MessageAttachment[]
15
+ */
16
+ loadAttachmentsForMessages(conversationDetailIds: string[], contextUser?: UserInfo): Promise<Map<string, MessageAttachment[]>>;
17
+ /**
18
+ * Load attachments for a single message
19
+ */
20
+ loadAttachmentsForMessage(conversationDetailId: string, contextUser?: UserInfo): Promise<MessageAttachment[]>;
21
+ /**
22
+ * Save pending attachments to the database.
23
+ * Returns the saved attachment entities.
24
+ *
25
+ * @param conversationDetailId - ID of the conversation detail to attach to
26
+ * @param pendingAttachments - Array of pending attachments from the mention editor
27
+ * @param contextUser - User context for the operation
28
+ */
29
+ saveAttachments(conversationDetailId: string, pendingAttachments: PendingAttachment[], contextUser?: UserInfo): Promise<ConversationDetailAttachmentEntity[]>;
30
+ /**
31
+ * Create attachment reference tokens for message text.
32
+ * These tokens are stored in the Message field to reference attachments.
33
+ */
34
+ createAttachmentReferences(attachments: ConversationDetailAttachmentEntity[]): string;
35
+ /**
36
+ * Convert a database entity to a MessageAttachment for display
37
+ */
38
+ private convertToMessageAttachment;
39
+ /**
40
+ * Get the AttachmentType from a modality ID
41
+ */
42
+ private getAttachmentTypeFromModality;
43
+ /**
44
+ * Get the modality ID for an attachment type
45
+ */
46
+ private getModalityIdForType;
47
+ /**
48
+ * Extract base64 data from a data URL
49
+ */
50
+ private extractBase64FromDataUrl;
51
+ /**
52
+ * Create a thumbnail from an image file.
53
+ * Returns a base64 data URL of the thumbnail.
54
+ */
55
+ createThumbnail(file: File, maxSize?: number): Promise<string | null>;
56
+ /**
57
+ * Get image dimensions from a file
58
+ */
59
+ getImageDimensions(file: File): Promise<{
60
+ width: number;
61
+ height: number;
62
+ } | null>;
63
+ /**
64
+ * Process a file and create a PendingAttachment.
65
+ * This creates the data structure needed for the mention editor component.
66
+ */
67
+ processFile(file: File): Promise<PendingAttachment>;
68
+ /**
69
+ * Convert a file to a data URL
70
+ */
71
+ private fileToDataUrl;
72
+ /**
73
+ * Generate a temporary ID for pending attachments
74
+ */
75
+ private generateTempId;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConversationAttachmentService, never>;
77
+ static ɵprov: i0.ɵɵInjectableDeclaration<ConversationAttachmentService>;
78
+ }
79
+ //# sourceMappingURL=conversation-attachment.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-attachment.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-attachment.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,kCAAkC,EAEnC,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;;AAGnF;;;GAGG;AACH,qBAGa,6BAA6B;;IAGxC;;;OAGG;IACG,0BAA0B,CAC9B,qBAAqB,EAAE,MAAM,EAAE,EAC/B,WAAW,CAAC,EAAE,QAAQ,GACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAqC5C;;OAEG;IACG,yBAAyB,CAC7B,oBAAoB,EAAE,MAAM,EAC5B,WAAW,CAAC,EAAE,QAAQ,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAK/B;;;;;;;OAOG;IACG,eAAe,CACnB,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,iBAAiB,EAAE,EACvC,WAAW,CAAC,EAAE,QAAQ,GACrB,OAAO,CAAC,kCAAkC,EAAE,CAAC;IA+ChD;;;OAGG;IACH,0BAA0B,CAAC,WAAW,EAAE,kCAAkC,EAAE,GAAG,MAAM;IAoBrF;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAiClC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAYrC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAKhC;;;OAGG;IACG,eAAe,CACnB,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,MAAY,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+CzB;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAqBvF;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+BzD;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,cAAc;yCApWX,6BAA6B;6CAA7B,6BAA6B;CAuWzC"}
@@ -0,0 +1,327 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { RunView, Metadata } from '@memberjunction/core';
3
+ import { ConversationUtility } from '@memberjunction/ai-core-plus';
4
+ import { AIEngineBase } from '@memberjunction/ai-engine-base';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Service for managing conversation attachments.
8
+ * Handles loading, saving, and converting attachments between different formats.
9
+ */
10
+ export class ConversationAttachmentService {
11
+ constructor() { }
12
+ /**
13
+ * Load all attachments for a list of conversation detail IDs.
14
+ * Returns a map of ConversationDetailID -> MessageAttachment[]
15
+ */
16
+ async loadAttachmentsForMessages(conversationDetailIds, contextUser) {
17
+ const result = new Map();
18
+ if (!conversationDetailIds || conversationDetailIds.length === 0) {
19
+ return result;
20
+ }
21
+ try {
22
+ const rv = new RunView();
23
+ const idList = conversationDetailIds.map(id => `'${id}'`).join(',');
24
+ const attachmentResult = await rv.RunView({
25
+ EntityName: 'MJ: Conversation Detail Attachments',
26
+ ExtraFilter: `ConversationDetailID IN (${idList})`,
27
+ OrderBy: 'DisplayOrder ASC, __mj_CreatedAt ASC',
28
+ ResultType: 'entity_object'
29
+ }, contextUser);
30
+ if (attachmentResult.Success && attachmentResult.Results) {
31
+ for (const attachment of attachmentResult.Results) {
32
+ const detailId = attachment.ConversationDetailID;
33
+ if (!result.has(detailId)) {
34
+ result.set(detailId, []);
35
+ }
36
+ const messageAttachment = this.convertToMessageAttachment(attachment);
37
+ result.get(detailId).push(messageAttachment);
38
+ }
39
+ }
40
+ }
41
+ catch (error) {
42
+ console.error('Error loading attachments:', error);
43
+ }
44
+ return result;
45
+ }
46
+ /**
47
+ * Load attachments for a single message
48
+ */
49
+ async loadAttachmentsForMessage(conversationDetailId, contextUser) {
50
+ const map = await this.loadAttachmentsForMessages([conversationDetailId], contextUser);
51
+ return map.get(conversationDetailId) || [];
52
+ }
53
+ /**
54
+ * Save pending attachments to the database.
55
+ * Returns the saved attachment entities.
56
+ *
57
+ * @param conversationDetailId - ID of the conversation detail to attach to
58
+ * @param pendingAttachments - Array of pending attachments from the mention editor
59
+ * @param contextUser - User context for the operation
60
+ */
61
+ async saveAttachments(conversationDetailId, pendingAttachments, contextUser) {
62
+ const savedAttachments = [];
63
+ const md = new Metadata();
64
+ for (let i = 0; i < pendingAttachments.length; i++) {
65
+ const pending = pendingAttachments[i];
66
+ try {
67
+ const attachment = await md.GetEntityObject('MJ: Conversation Detail Attachments', contextUser);
68
+ // Determine attachment type from MIME type
69
+ const attachmentType = ConversationUtility.GetAttachmentTypeFromMime(pending.mimeType);
70
+ attachment.ConversationDetailID = conversationDetailId;
71
+ attachment.ModalityID = this.getModalityIdForType(attachmentType);
72
+ attachment.MimeType = pending.mimeType;
73
+ attachment.FileName = pending.fileName;
74
+ attachment.FileSizeBytes = pending.sizeBytes;
75
+ attachment.Width = pending.width ?? null;
76
+ attachment.Height = pending.height ?? null;
77
+ attachment.DurationSeconds = null; // PendingAttachment doesn't have duration
78
+ attachment.DisplayOrder = i;
79
+ attachment.ThumbnailBase64 = pending.thumbnailUrl ?? null;
80
+ // Store inline data - extract base64 from data URL
81
+ if (pending.dataUrl) {
82
+ const base64Data = this.extractBase64FromDataUrl(pending.dataUrl);
83
+ attachment.InlineData = base64Data;
84
+ }
85
+ const saved = await attachment.Save();
86
+ if (saved) {
87
+ savedAttachments.push(attachment);
88
+ }
89
+ else {
90
+ console.error('Failed to save attachment:', attachment.LatestResult);
91
+ }
92
+ }
93
+ catch (error) {
94
+ console.error('Error saving attachment:', error);
95
+ }
96
+ }
97
+ return savedAttachments;
98
+ }
99
+ /**
100
+ * Create attachment reference tokens for message text.
101
+ * These tokens are stored in the Message field to reference attachments.
102
+ */
103
+ createAttachmentReferences(attachments) {
104
+ return attachments
105
+ .map(att => {
106
+ const content = {
107
+ _mode: 'attachment',
108
+ id: att.ID,
109
+ type: this.getAttachmentTypeFromModality(att.ModalityID),
110
+ mimeType: att.MimeType,
111
+ fileName: att.FileName ?? undefined,
112
+ sizeBytes: att.FileSizeBytes,
113
+ width: att.Width ?? undefined,
114
+ height: att.Height ?? undefined,
115
+ durationSeconds: att.DurationSeconds ?? undefined,
116
+ thumbnailBase64: att.ThumbnailBase64 ?? undefined
117
+ };
118
+ return ConversationUtility.CreateAttachmentReference(content);
119
+ })
120
+ .join(' ');
121
+ }
122
+ /**
123
+ * Convert a database entity to a MessageAttachment for display
124
+ */
125
+ convertToMessageAttachment(entity) {
126
+ // Determine content URL
127
+ let contentUrl;
128
+ let thumbnailUrl;
129
+ if (entity.InlineData) {
130
+ // Create data URL from inline data
131
+ contentUrl = `data:${entity.MimeType};base64,${entity.InlineData}`;
132
+ }
133
+ else if (entity.FileID) {
134
+ // TODO: Integrate with MJStorage to get pre-authenticated URL
135
+ contentUrl = undefined; // Will need to be loaded separately
136
+ }
137
+ // Use thumbnail if available
138
+ if (entity.ThumbnailBase64) {
139
+ thumbnailUrl = entity.ThumbnailBase64.startsWith('data:')
140
+ ? entity.ThumbnailBase64
141
+ : `data:image/jpeg;base64,${entity.ThumbnailBase64}`;
142
+ }
143
+ return {
144
+ id: entity.ID,
145
+ type: this.getAttachmentTypeFromModality(entity.ModalityID),
146
+ mimeType: entity.MimeType,
147
+ fileName: entity.FileName,
148
+ sizeBytes: entity.FileSizeBytes,
149
+ width: entity.Width ?? undefined,
150
+ height: entity.Height ?? undefined,
151
+ thumbnailUrl: thumbnailUrl,
152
+ contentUrl: contentUrl
153
+ };
154
+ }
155
+ /**
156
+ * Get the AttachmentType from a modality ID
157
+ */
158
+ getAttachmentTypeFromModality(modalityId) {
159
+ const modality = AIEngineBase.Instance.Modalities.find(m => m.ID === modalityId);
160
+ const name = modality?.Name?.toLowerCase() || '';
161
+ if (name === 'image')
162
+ return 'Image';
163
+ if (name === 'video')
164
+ return 'Video';
165
+ if (name === 'audio')
166
+ return 'Audio';
167
+ return 'Document';
168
+ }
169
+ /**
170
+ * Get the modality ID for an attachment type
171
+ */
172
+ getModalityIdForType(type) {
173
+ // Map AttachmentType to modality name
174
+ // AttachmentType is 'Image' | 'Video' | 'Audio' | 'Document'
175
+ // Modality names are 'Image', 'Audio', 'Video', 'File'
176
+ let modalityName = type.toLowerCase().trim();
177
+ if (modalityName === 'document') {
178
+ modalityName = 'file';
179
+ }
180
+ const modality = AIEngineBase.Instance.Modalities.find(m => m.Name?.trim().toLowerCase() === modalityName);
181
+ if (modality) {
182
+ return modality.ID;
183
+ }
184
+ // Fallback to 'file' modality if specific type not found
185
+ // recursive call, so long as the current modality isn't file as that
186
+ // would cause infinite recursion/stack overflow
187
+ if (modalityName !== 'file') {
188
+ return this.getModalityIdForType('Document');
189
+ }
190
+ else {
191
+ return '';
192
+ }
193
+ }
194
+ /**
195
+ * Extract base64 data from a data URL
196
+ */
197
+ extractBase64FromDataUrl(dataUrl) {
198
+ const matches = dataUrl.match(/^data:[^;]+;base64,(.+)$/);
199
+ return matches ? matches[1] : dataUrl;
200
+ }
201
+ /**
202
+ * Create a thumbnail from an image file.
203
+ * Returns a base64 data URL of the thumbnail.
204
+ */
205
+ async createThumbnail(file, maxSize = 200) {
206
+ return new Promise((resolve) => {
207
+ if (!file.type.startsWith('image/')) {
208
+ resolve(null);
209
+ return;
210
+ }
211
+ const reader = new FileReader();
212
+ reader.onload = (e) => {
213
+ const img = new Image();
214
+ img.onload = () => {
215
+ const canvas = document.createElement('canvas');
216
+ let width = img.width;
217
+ let height = img.height;
218
+ // Scale down to maxSize
219
+ if (width > height) {
220
+ if (width > maxSize) {
221
+ height = Math.round((height * maxSize) / width);
222
+ width = maxSize;
223
+ }
224
+ }
225
+ else {
226
+ if (height > maxSize) {
227
+ width = Math.round((width * maxSize) / height);
228
+ height = maxSize;
229
+ }
230
+ }
231
+ canvas.width = width;
232
+ canvas.height = height;
233
+ const ctx = canvas.getContext('2d');
234
+ if (ctx) {
235
+ ctx.drawImage(img, 0, 0, width, height);
236
+ resolve(canvas.toDataURL('image/jpeg', 0.7));
237
+ }
238
+ else {
239
+ resolve(null);
240
+ }
241
+ };
242
+ img.onerror = () => resolve(null);
243
+ img.src = e.target?.result;
244
+ };
245
+ reader.onerror = () => resolve(null);
246
+ reader.readAsDataURL(file);
247
+ });
248
+ }
249
+ /**
250
+ * Get image dimensions from a file
251
+ */
252
+ async getImageDimensions(file) {
253
+ return new Promise((resolve) => {
254
+ if (!file.type.startsWith('image/')) {
255
+ resolve(null);
256
+ return;
257
+ }
258
+ const reader = new FileReader();
259
+ reader.onload = (e) => {
260
+ const img = new Image();
261
+ img.onload = () => {
262
+ resolve({ width: img.width, height: img.height });
263
+ };
264
+ img.onerror = () => resolve(null);
265
+ img.src = e.target?.result;
266
+ };
267
+ reader.onerror = () => resolve(null);
268
+ reader.readAsDataURL(file);
269
+ });
270
+ }
271
+ /**
272
+ * Process a file and create a PendingAttachment.
273
+ * This creates the data structure needed for the mention editor component.
274
+ */
275
+ async processFile(file) {
276
+ // Read file data URL
277
+ const dataUrl = await this.fileToDataUrl(file);
278
+ const pending = {
279
+ id: this.generateTempId(),
280
+ file: file,
281
+ dataUrl: dataUrl,
282
+ mimeType: file.type,
283
+ fileName: file.name,
284
+ sizeBytes: file.size
285
+ };
286
+ // Get image dimensions and create thumbnail
287
+ const type = ConversationUtility.GetAttachmentTypeFromMime(file.type);
288
+ if (type === 'Image') {
289
+ const dimensions = await this.getImageDimensions(file);
290
+ if (dimensions) {
291
+ pending.width = dimensions.width;
292
+ pending.height = dimensions.height;
293
+ }
294
+ const thumbnail = await this.createThumbnail(file);
295
+ if (thumbnail) {
296
+ pending.thumbnailUrl = thumbnail;
297
+ }
298
+ }
299
+ return pending;
300
+ }
301
+ /**
302
+ * Convert a file to a data URL
303
+ */
304
+ fileToDataUrl(file) {
305
+ return new Promise((resolve, reject) => {
306
+ const reader = new FileReader();
307
+ reader.onload = () => resolve(reader.result);
308
+ reader.onerror = () => reject(reader.error);
309
+ reader.readAsDataURL(file);
310
+ });
311
+ }
312
+ /**
313
+ * Generate a temporary ID for pending attachments
314
+ */
315
+ generateTempId() {
316
+ return `temp-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
317
+ }
318
+ static ɵfac = function ConversationAttachmentService_Factory(t) { return new (t || ConversationAttachmentService)(); };
319
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConversationAttachmentService, factory: ConversationAttachmentService.ɵfac, providedIn: 'root' });
320
+ }
321
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationAttachmentService, [{
322
+ type: Injectable,
323
+ args: [{
324
+ providedIn: 'root'
325
+ }]
326
+ }], () => [], null); })();
327
+ //# sourceMappingURL=conversation-attachment.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-attachment.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-attachment.service.ts"],"names":[],"mappings":"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"}
@@ -58,11 +58,25 @@ export declare class ConversationDataService {
58
58
  */
59
59
  removeConversation(id: string): void;
60
60
  /**
61
- * Loads conversations from the database
61
+ * Loads conversations from the database.
62
+ * Skips if already loaded to prevent redundant DB calls.
62
63
  * @param environmentId The environment ID to filter by
63
64
  * @param currentUser The current user context
64
65
  */
65
66
  loadConversations(environmentId: string, currentUser: UserInfo): Promise<void>;
67
+ /**
68
+ * Force refresh conversations from the database, ignoring cache.
69
+ * Use this when user explicitly requests a refresh.
70
+ * @param environmentId The environment ID to filter by
71
+ * @param currentUser The current user context
72
+ */
73
+ refreshConversations(environmentId: string, currentUser: UserInfo): Promise<void>;
74
+ /**
75
+ * Internal method to fetch conversations from the database.
76
+ * @param environmentId The environment ID to filter by
77
+ * @param currentUser The current user context
78
+ */
79
+ private fetchConversations;
66
80
  /**
67
81
  * Creates a new conversation
68
82
  * @param name The conversation name
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-data.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-data.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AAEnE;;;;;;;GAOG;AACH,qBAGa,uBAAuB;IAE3B,aAAa,EAAE,kBAAkB,EAAE,CAAM;IAGhD,OAAO,CAAC,eAAe,CAAiD;IACxE,SAAgB,cAAc,kDAAuC;IAG9D,WAAW,EAAE,MAAM,CAAM;IAGzB,SAAS,EAAE,OAAO,CAAS;;IAIlC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAI1D;;OAEG;IACH,IAAI,qBAAqB,IAAI,kBAAkB,EAAE,CAShD;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAE9C;IAED;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;;OAGG;IACH,eAAe,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAKvD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IASjF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKpC;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCpF;;;;;;;;OAQG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,QAAQ,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAmB9B;;;;;OAKG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB7E;;;;;OAKG;IACG,2BAA2B,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC;QACT,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5D,CAAC;IA4BF;;;;;;OAMG;IACG,gBAAgB,CACpB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACpC,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC,OAAO,CAAC;IAsBnB;;;;OAIG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE;;;;OAIG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAzRhE,uBAAuB;6CAAvB,uBAAuB;CA4RnC"}
1
+ {"version":3,"file":"conversation-data.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-data.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAqB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;;AAEnE;;;;;;;GAOG;AACH,qBAGa,uBAAuB;IAE3B,aAAa,EAAE,kBAAkB,EAAE,CAAM;IAGhD,OAAO,CAAC,eAAe,CAAiD;IACxE,SAAgB,cAAc,kDAAuC;IAG9D,WAAW,EAAE,MAAM,CAAM;IAGzB,SAAS,EAAE,OAAO,CAAS;;IAIlC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAI1D;;OAEG;IACH,IAAI,qBAAqB,IAAI,kBAAkB,EAAE,CAShD;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,kBAAkB,EAAE,CAE9C;IAED;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;;OAGG;IACH,eAAe,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAKvD;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IASjF;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKpC;;;;;OAKG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpF;;;;;OAKG;IACG,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF;;;;OAIG;YACW,kBAAkB;IAiChC;;;;;;;;OAQG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,QAAQ,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAmB9B;;;;;OAKG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB7E;;;;;OAKG;IACG,2BAA2B,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC;QACT,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5D,CAAC;IA4BF;;;;;;OAMG;IACG,gBAAgB,CACpB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACpC,WAAW,EAAE,QAAQ,GACpB,OAAO,CAAC,OAAO,CAAC;IAsBnB;;;;OAIG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE;;;;OAIG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;yCAjThE,uBAAuB;6CAAvB,uBAAuB;CAoTnC"}
@@ -91,11 +91,33 @@ export class ConversationDataService {
91
91
  this._conversations$.next(this.conversations);
92
92
  }
93
93
  /**
94
- * Loads conversations from the database
94
+ * Loads conversations from the database.
95
+ * Skips if already loaded to prevent redundant DB calls.
95
96
  * @param environmentId The environment ID to filter by
96
97
  * @param currentUser The current user context
97
98
  */
98
99
  async loadConversations(environmentId, currentUser) {
100
+ // Skip if already loaded - prevents redundant DB calls when multiple components initialize
101
+ if (this.conversations.length > 0) {
102
+ return;
103
+ }
104
+ await this.fetchConversations(environmentId, currentUser);
105
+ }
106
+ /**
107
+ * Force refresh conversations from the database, ignoring cache.
108
+ * Use this when user explicitly requests a refresh.
109
+ * @param environmentId The environment ID to filter by
110
+ * @param currentUser The current user context
111
+ */
112
+ async refreshConversations(environmentId, currentUser) {
113
+ await this.fetchConversations(environmentId, currentUser);
114
+ }
115
+ /**
116
+ * Internal method to fetch conversations from the database.
117
+ * @param environmentId The environment ID to filter by
118
+ * @param currentUser The current user context
119
+ */
120
+ async fetchConversations(environmentId, currentUser) {
99
121
  this.isLoading = true;
100
122
  try {
101
123
  const rv = new RunView();
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-data.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-data.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-data.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-data.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,30 @@
1
1
  import { OnDestroy } from '@angular/core';
2
+ import { Subject } from 'rxjs';
2
3
  import { ActiveTasksService } from './active-tasks.service';
3
4
  import { DataCacheService } from './data-cache.service';
4
5
  import * as i0 from "@angular/core";
6
+ /**
7
+ * Metadata structure for message progress updates
8
+ */
9
+ export interface MessageProgressMetadata {
10
+ /** Progress details (from RunAIAgentResolver) */
11
+ progress?: {
12
+ hierarchicalStep?: string;
13
+ percentage?: number;
14
+ message?: string;
15
+ stepCount?: number;
16
+ agentName?: string;
17
+ agentType?: string;
18
+ };
19
+ /** Agent run information (from RunAIAgentResolver) */
20
+ agentRun?: {
21
+ Agent?: string;
22
+ ConversationDetailID?: string;
23
+ ID?: string;
24
+ };
25
+ /** Agent run ID (alternative to agentRun.ID) */
26
+ agentRunId?: string;
27
+ }
5
28
  /**
6
29
  * Message progress update structure
7
30
  */
@@ -10,8 +33,10 @@ export interface MessageProgressUpdate {
10
33
  percentComplete?: number;
11
34
  taskName?: string;
12
35
  conversationDetailId: string;
13
- metadata?: any;
36
+ metadata?: MessageProgressMetadata;
14
37
  stepCount?: number;
38
+ /** Identifies which backend resolver published this update */
39
+ resolver?: 'TaskOrchestrator' | 'RunAIAgentResolver' | string;
15
40
  }
16
41
  /**
17
42
  * Callback type for message progress updates
@@ -33,6 +58,12 @@ export declare class ConversationStreamingService implements OnDestroy {
33
58
  private dataCache;
34
59
  private pushStatusSubscription?;
35
60
  private callbackRegistry;
61
+ private recentCompletions;
62
+ completionEvents$: Subject<{
63
+ conversationDetailId: string;
64
+ agentRunId: string;
65
+ }>;
66
+ private agentRunIdToDetailId;
36
67
  private connectionStatus$;
37
68
  private initialized;
38
69
  private reconnectionTimeout?;
@@ -86,8 +117,26 @@ export declare class ConversationStreamingService implements OnDestroy {
86
117
  /**
87
118
  * Route agent progress updates (from RunAIAgentResolver) to registered callbacks.
88
119
  * Uses conversationDetailID from agentRun data for direct routing.
120
+ * Also handles completion messages to remove tasks from ActiveTasksService.
89
121
  */
90
122
  private routeAgentProgress;
123
+ /**
124
+ * Get a recent completion event for a message (used when component initializes after completion)
125
+ * @param conversationDetailId - The message ID to check
126
+ * @returns Completion info if found, undefined otherwise
127
+ */
128
+ getRecentCompletion(conversationDetailId: string): {
129
+ agentRunId: string;
130
+ } | undefined;
131
+ /**
132
+ * Clear a recent completion after it has been handled
133
+ * @param conversationDetailId - The message ID to clear
134
+ */
135
+ clearRecentCompletion(conversationDetailId: string): void;
136
+ /**
137
+ * Cleanup completions older than 5 minutes to prevent memory leak
138
+ */
139
+ private cleanupOldCompletions;
91
140
  /**
92
141
  * Schedule a reconnection attempt after a delay
93
142
  */
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-streaming.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-streaming.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;;AAIxD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEhG;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,GAAG,cAAc,CAAC;AAEhG;;;;;;GAMG;AACH,qBAGa,4BAA6B,YAAW,SAAS;IAkB1D,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IAjBnB,OAAO,CAAC,sBAAsB,CAAC,CAAe;IAI9C,OAAO,CAAC,gBAAgB,CAAgD;IAGxE,OAAO,CAAC,iBAAiB,CAAkE;IAG3F,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,mBAAmB,CAAC,CAAM;gBAGxB,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,gBAAgB;IAIrC;;;OAGG;IACI,UAAU,IAAI,IAAI;IAkCzB;;OAEG;IACI,oBAAoB;IAI3B;;OAEG;IACI,mBAAmB,IAAI,yBAAyB;IAIvD;;;;;;OAMG;IACI,uBAAuB,CAC5B,oBAAoB,EAAE,MAAM,EAC5B,QAAQ,EAAE,uBAAuB,GAChC,IAAI;IAMP;;;;;;OAMG;IACI,yBAAyB,CAC9B,oBAAoB,EAAE,MAAM,EAC5B,QAAQ,CAAC,EAAE,uBAAuB,GACjC,IAAI;IAsBP;;OAEG;IACI,0BAA0B,IAAI,MAAM;IAQ3C;;OAEG;IACI,sBAAsB,IAAI,MAAM;IAIvC;;OAEG;YACW,sBAAsB;IA2BpC;;;OAGG;YACW,iBAAiB;IA0D/B;;;OAGG;YACW,kBAAkB;IAoDhC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,WAAW,IAAI,IAAI;yCArTR,4BAA4B;6CAA5B,4BAA4B;CAmUxC"}
1
+ {"version":3,"file":"conversation-streaming.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-streaming.service.ts"],"names":[],"mappings":"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"}