@memberjunction/ng-conversations 5.0.0 → 5.2.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 (78) hide show
  1. package/dist/__tests__/mention-parser.test.js +2 -2
  2. package/dist/__tests__/mention-parser.test.js.map +1 -1
  3. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  4. package/dist/lib/components/artifact/artifact-share-modal.component.js +1 -0
  5. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  6. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +3 -2
  7. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  8. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +16 -7
  9. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  10. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +3 -2
  11. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  12. package/dist/lib/components/collection/artifact-create-modal.component.js +6 -3
  13. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  14. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +3 -2
  15. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  16. package/dist/lib/components/collection/collection-artifact-card.component.js +8 -3
  17. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  18. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  19. package/dist/lib/components/collection/collection-share-modal.component.js +2 -0
  20. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  21. package/dist/lib/components/collection/collections-full-view.component.d.ts +19 -3
  22. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  23. package/dist/lib/components/collection/collections-full-view.component.js +580 -233
  24. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  25. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +21 -9
  26. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  27. package/dist/lib/components/conversation/conversation-chat-area.component.js +84 -15
  28. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  29. package/dist/lib/components/conversation/conversation-list.component.d.ts +3 -1
  30. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  31. package/dist/lib/components/conversation/conversation-list.component.js +14 -2
  32. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  33. package/dist/lib/components/message/message-input.component.d.ts +3 -3
  34. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  35. package/dist/lib/components/message/message-input.component.js +2 -2
  36. package/dist/lib/components/message/message-input.component.js.map +1 -1
  37. package/dist/lib/components/message/message-item.component.d.ts +2 -2
  38. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  39. package/dist/lib/components/message/message-item.component.js.map +1 -1
  40. package/dist/lib/components/message/message-list.component.d.ts +2 -2
  41. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  42. package/dist/lib/components/message/message-list.component.js.map +1 -1
  43. package/dist/lib/components/share/share-modal.component.d.ts +3 -2
  44. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  45. package/dist/lib/components/share/share-modal.component.js +9 -3
  46. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  47. package/dist/lib/components/shared/user-picker.component.d.ts +3 -1
  48. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  49. package/dist/lib/components/shared/user-picker.component.js +7 -2
  50. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  51. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +4 -1
  52. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  53. package/dist/lib/components/workspace/conversation-workspace.component.js +10 -4
  54. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  55. package/dist/lib/models/conversation-state.model.d.ts +3 -3
  56. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  57. package/dist/lib/services/conversation-agent.service.d.ts +3 -3
  58. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  59. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  60. package/dist/lib/services/mention-autocomplete.service.d.ts +2 -2
  61. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  62. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  63. package/dist/lib/services/mention-parser.service.d.ts +4 -4
  64. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  65. package/dist/lib/services/mention-parser.service.js.map +1 -1
  66. package/package.json +17 -17
  67. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -48
  68. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
  69. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -457
  70. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
  71. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.d.ts +0 -52
  72. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.d.ts.map +0 -1
  73. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.js +0 -276
  74. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.js.map +0 -1
  75. package/dist/lib/services/conversation-state.service.d.ts +0 -160
  76. package/dist/lib/services/conversation-state.service.d.ts.map +0 -1
  77. package/dist/lib/services/conversation-state.service.js +0 -334
  78. package/dist/lib/services/conversation-state.service.js.map +0 -1
@@ -1,334 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { Metadata, RunView } from '@memberjunction/core';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Simplified state management for conversations
7
- * Uses simple arrays with Angular change detection instead of complex observables
8
- * This prevents synchronization issues when updating conversation properties
9
- */
10
- export class ConversationStateService {
11
- // Simple properties - Angular change detection will handle updates
12
- conversations = [];
13
- _activeConversationId = null;
14
- searchQuery = '';
15
- isLoading = false;
16
- activeThreadId = null;
17
- // Observable for conversation ID changes (for URL tracking)
18
- _activeConversationId$ = new BehaviorSubject(null);
19
- activeConversationId$ = this._activeConversationId$.asObservable();
20
- // Pending message from empty state - persists across component lifecycle
21
- pendingMessageToSend = null;
22
- // New unsaved conversation state - delays DB creation until first message
23
- isNewUnsavedConversation = false;
24
- // Pending artifact navigation - used when jumping from collection to conversation
25
- pendingArtifactId = null;
26
- pendingArtifactVersionNumber = null;
27
- constructor() { }
28
- /**
29
- * Gets the active conversation ID
30
- */
31
- get activeConversationId() {
32
- return this._activeConversationId;
33
- }
34
- /**
35
- * Sets the active conversation ID and emits change event
36
- */
37
- set activeConversationId(value) {
38
- if (this._activeConversationId !== value) {
39
- this._activeConversationId = value;
40
- this._activeConversationId$.next(value);
41
- }
42
- }
43
- /**
44
- * Gets the active conversation object
45
- */
46
- get activeConversation() {
47
- if (!this.activeConversationId)
48
- return null;
49
- return this.conversations.find(c => c.ID === this.activeConversationId) || null;
50
- }
51
- /**
52
- * Gets filtered conversations based on search query
53
- */
54
- get filteredConversations() {
55
- if (!this.searchQuery || this.searchQuery.trim() === '') {
56
- return this.conversations;
57
- }
58
- const lowerQuery = this.searchQuery.toLowerCase();
59
- return this.conversations.filter(c => (c.Name?.toLowerCase().includes(lowerQuery)) ||
60
- (c.Description?.toLowerCase().includes(lowerQuery)));
61
- }
62
- /**
63
- * Gets pinned conversations
64
- */
65
- get pinnedConversations() {
66
- return this.conversations.filter(c => c.IsPinned);
67
- }
68
- /**
69
- * Sets the active conversation
70
- * @param id The conversation ID to activate (or null to clear)
71
- */
72
- setActiveConversation(id) {
73
- console.log('🎯 Setting active conversation:', id);
74
- this.activeConversationId = id;
75
- // Clear unsaved state when switching to an existing conversation
76
- if (id) {
77
- this.isNewUnsavedConversation = false;
78
- }
79
- }
80
- /**
81
- * Initiates a new unsaved conversation (doesn't create DB record yet)
82
- * This shows the welcome screen and delays DB creation until first message
83
- */
84
- startNewConversation() {
85
- console.log('✨ Starting new unsaved conversation');
86
- this.activeConversationId = null;
87
- this.isNewUnsavedConversation = true;
88
- this.pendingMessageToSend = null;
89
- }
90
- /**
91
- * Clears the new unsaved conversation state
92
- * Called when the conversation is actually created or cancelled
93
- */
94
- clearNewConversationState() {
95
- this.isNewUnsavedConversation = false;
96
- }
97
- /**
98
- * Gets the current active conversation ID
99
- */
100
- getActiveConversationId() {
101
- return this.activeConversationId;
102
- }
103
- /**
104
- * Adds a conversation to the list
105
- * @param conversation The conversation to add
106
- */
107
- addConversation(conversation) {
108
- this.conversations = [conversation, ...this.conversations];
109
- }
110
- /**
111
- * Updates a conversation in the list by directly modifying the entity object
112
- * Angular change detection will pick up the changes automatically
113
- * @param id The conversation ID
114
- * @param updates The fields to update
115
- */
116
- updateConversationInPlace(id, updates) {
117
- const conversation = this.conversations.find(c => c.ID === id);
118
- if (conversation) {
119
- Object.assign(conversation, updates);
120
- console.log('📝 Updated conversation in-place:', { id, updates });
121
- }
122
- }
123
- /**
124
- * Removes a conversation from the list
125
- * @param id The conversation ID to remove
126
- */
127
- removeConversation(id) {
128
- this.conversations = this.conversations.filter(c => c.ID !== id);
129
- }
130
- /**
131
- * Sets the search query
132
- * @param query The search query string
133
- */
134
- setSearchQuery(query) {
135
- this.searchQuery = query;
136
- }
137
- /**
138
- * Clears the search query
139
- */
140
- clearSearchQuery() {
141
- this.searchQuery = '';
142
- }
143
- /**
144
- * Loads conversations from the database
145
- * @param environmentId The environment ID to filter by
146
- * @param currentUser The current user context
147
- */
148
- async loadConversations(environmentId, currentUser) {
149
- this.isLoading = true;
150
- try {
151
- const rv = new RunView();
152
- const filter = `EnvironmentID='${environmentId}' AND UserID='${currentUser.ID}' AND (IsArchived IS NULL OR IsArchived=0)`;
153
- const result = await rv.RunView({
154
- EntityName: 'Conversations',
155
- ExtraFilter: filter,
156
- OrderBy: 'IsPinned DESC, __mj_UpdatedAt DESC',
157
- MaxRows: 1000,
158
- ResultType: 'entity_object'
159
- }, currentUser);
160
- if (result.Success) {
161
- this.conversations = result.Results || [];
162
- }
163
- else {
164
- console.error('Failed to load conversations:', result.ErrorMessage);
165
- this.conversations = [];
166
- }
167
- }
168
- catch (error) {
169
- console.error('Error loading conversations:', error);
170
- this.conversations = [];
171
- }
172
- finally {
173
- this.isLoading = false;
174
- }
175
- }
176
- /**
177
- * Creates a new conversation
178
- * @param name The conversation name
179
- * @param environmentId The environment ID
180
- * @param currentUser The current user context
181
- * @param description Optional description
182
- * @param projectId Optional project ID
183
- * @returns The created conversation entity
184
- */
185
- async createConversation(name, environmentId, currentUser, description, projectId) {
186
- const md = new Metadata();
187
- const conversation = await md.GetEntityObject('Conversations', currentUser);
188
- conversation.Name = name;
189
- conversation.EnvironmentID = environmentId;
190
- conversation.UserID = currentUser.ID;
191
- if (description)
192
- conversation.Description = description;
193
- if (projectId)
194
- conversation.ProjectID = projectId;
195
- const saved = await conversation.Save();
196
- if (saved) {
197
- this.addConversation(conversation);
198
- return conversation;
199
- }
200
- else {
201
- throw new Error(conversation.LatestResult?.Message || 'Failed to create conversation');
202
- }
203
- }
204
- /**
205
- * Deletes a conversation
206
- * @param id The conversation ID
207
- * @param currentUser The current user context
208
- * @returns True if successful
209
- */
210
- async deleteConversation(id, currentUser) {
211
- const md = new Metadata();
212
- const conversation = await md.GetEntityObject('Conversations', currentUser);
213
- const loaded = await conversation.Load(id);
214
- if (!loaded) {
215
- throw new Error('Conversation not found');
216
- }
217
- const deleted = await conversation.Delete();
218
- if (deleted) {
219
- this.removeConversation(id);
220
- if (this.getActiveConversationId() === id) {
221
- this.setActiveConversation(null);
222
- }
223
- return true;
224
- }
225
- else {
226
- throw new Error(conversation.LatestResult?.Message || 'Failed to delete conversation');
227
- }
228
- }
229
- /**
230
- * Deletes multiple conversations in a batch operation
231
- * @param ids - Array of conversation IDs to delete
232
- * @param currentUser - Current user info
233
- * @returns Object with successful deletions and failed deletions with error info
234
- */
235
- async deleteMultipleConversations(ids, currentUser) {
236
- const successful = [];
237
- const failed = [];
238
- for (const id of ids) {
239
- try {
240
- const conversation = this.conversations.find(c => c.ID === id);
241
- const name = conversation?.Name || 'Unknown';
242
- const deleted = await this.deleteConversation(id, currentUser);
243
- if (deleted) {
244
- successful.push(id);
245
- }
246
- else {
247
- failed.push({ id, name, error: 'Delete returned false' });
248
- }
249
- }
250
- catch (error) {
251
- const conversation = this.conversations.find(c => c.ID === id);
252
- failed.push({
253
- id,
254
- name: conversation?.Name || 'Unknown',
255
- error: error instanceof Error ? error.message : 'Unknown error'
256
- });
257
- }
258
- }
259
- return { successful, failed };
260
- }
261
- /**
262
- * Updates a conversation - saves to database AND updates in-place in the array
263
- * @param id The conversation ID
264
- * @param updates The fields to update
265
- * @param currentUser The current user context
266
- * @returns True if successful
267
- */
268
- async saveConversation(id, updates, currentUser) {
269
- const md = new Metadata();
270
- const conversation = await md.GetEntityObject('Conversations', currentUser);
271
- const loaded = await conversation.Load(id);
272
- if (!loaded) {
273
- throw new Error('Conversation not found');
274
- }
275
- // Apply updates
276
- Object.assign(conversation, updates);
277
- const saved = await conversation.Save();
278
- if (saved) {
279
- // Update the in-memory conversation directly
280
- this.updateConversationInPlace(id, updates);
281
- return true;
282
- }
283
- else {
284
- throw new Error(conversation.LatestResult?.Message || 'Failed to update conversation');
285
- }
286
- }
287
- /**
288
- * Toggles the pinned status of a conversation
289
- * @param id The conversation ID
290
- * @param currentUser The current user context
291
- */
292
- async togglePin(id, currentUser) {
293
- const conversation = this.conversations.find(c => c.ID === id);
294
- if (conversation) {
295
- await this.saveConversation(id, { IsPinned: !conversation.IsPinned }, currentUser);
296
- }
297
- }
298
- /**
299
- * Archives a conversation
300
- * @param id The conversation ID
301
- * @param currentUser The current user context
302
- */
303
- async archiveConversation(id, currentUser) {
304
- await this.saveConversation(id, { IsArchived: true }, currentUser);
305
- }
306
- /**
307
- * Opens a thread panel for a specific message
308
- * @param messageId The parent message ID
309
- */
310
- openThread(messageId) {
311
- this.activeThreadId = messageId;
312
- }
313
- /**
314
- * Closes the currently open thread panel
315
- */
316
- closeThread() {
317
- this.activeThreadId = null;
318
- }
319
- /**
320
- * Gets the currently active thread ID
321
- */
322
- getActiveThreadId() {
323
- return this.activeThreadId;
324
- }
325
- static ɵfac = function ConversationStateService_Factory(t) { return new (t || ConversationStateService)(); };
326
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConversationStateService, factory: ConversationStateService.ɵfac, providedIn: 'root' });
327
- }
328
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationStateService, [{
329
- type: Injectable,
330
- args: [{
331
- providedIn: 'root'
332
- }]
333
- }], () => [], null); })();
334
- //# sourceMappingURL=conversation-state.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-state.service.js","sourceRoot":"","sources":["../../../src/lib/services/conversation-state.service.ts"],"names":[],"mappings":"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"}