@memberjunction/ng-conversations 2.130.0 → 2.131.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.
@@ -9,13 +9,13 @@ import { ActiveTasksService } from '../../services/active-tasks.service';
9
9
  import { MentionAutocompleteService } from '../../services/mention-autocomplete.service';
10
10
  import { ArtifactPermissionService } from '../../services/artifact-permission.service';
11
11
  import { ConversationAttachmentService } from '../../services/conversation-attachment.service';
12
- import { ConversationStreamingService } from '../../services/conversation-streaming.service';
13
12
  import { MessageAttachment } from '../message/message-item.component';
14
13
  import { LazyArtifactInfo } from '../../models/lazy-artifact-info';
15
14
  import { RatingJSON } from '../../models/conversation-complete-query.model';
16
15
  import { PendingAttachment } from '../mention/mention-editor.component';
17
16
  import { DialogService } from '@progress/kendo-angular-dialog';
18
17
  import { Subject } from 'rxjs';
18
+ import { ConversationStreamingService } from '../../services/conversation-streaming.service';
19
19
  import * as i0 from "@angular/core";
20
20
  export declare class ConversationChatAreaComponent implements OnInit, OnDestroy, AfterViewChecked {
21
21
  conversationData: ConversationDataService;
@@ -79,7 +79,7 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
79
79
  messages: ConversationDetailEntity[];
80
80
  showScrollToBottomIcon: boolean;
81
81
  private scrollToBottom;
82
- private loadedPeripheralConversationIds;
82
+ private lastLoadedConversationId;
83
83
  private currentlyLoadingConversationId;
84
84
  isProcessing: boolean;
85
85
  private intentCheckMessage;
@@ -130,6 +130,7 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
130
130
  * Passed to message-input component to reconnect PubSub updates
131
131
  */
132
132
  inProgressMessageIds: string[];
133
+ private destroy$;
133
134
  private messageInputMetadataCache;
134
135
  readonly emptyArtifactsMap: Map<string, LazyArtifactInfo[]>;
135
136
  readonly emptyAgentRunsMap: Map<string, AIAgentRunEntityExtended>;
@@ -139,7 +140,6 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
139
140
  artifactId: string;
140
141
  versionNumber: number;
141
142
  }>;
142
- private destroy$;
143
143
  private isInitialized;
144
144
  private isResizing;
145
145
  private startX;
@@ -240,15 +240,6 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
240
240
  conversationDetailId: string;
241
241
  agentId?: string;
242
242
  }): Promise<void>;
243
- /**
244
- * Handle message completion from PubSub streaming service.
245
- * This is the primary completion handler that replaces timer-based polling.
246
- * Called when the streaming service receives a completion event from the backend.
247
- *
248
- * @param message The message entity that completed
249
- * @param agentRunId The agent run ID from the completion event
250
- */
251
- private handleMessageCompletion;
252
243
  /**
253
244
  * Handle agent run update event from progress updates
254
245
  * This is called on EVERY progress update with the full, live agent run object
@@ -264,6 +255,13 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
264
255
  * Called when completion is detected to discover newly delegated agent messages
265
256
  */
266
257
  private reloadMessagesForActiveConversation;
258
+ /**
259
+ * Handle message completion triggered by PubSub completion event
260
+ * Reloads message, agent run, and artifacts, then updates UI
261
+ * @param message The message that completed
262
+ * @param agentRunId The ID of the agent run that completed
263
+ */
264
+ private handleMessageCompletion;
267
265
  onAgentResponse(event: {
268
266
  message: ConversationDetailEntity;
269
267
  agentResult: any;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-chat-area.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-chat-area.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-chat-area.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-chat-area.component.ts"],"names":[],"mappings":"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"}
@@ -497,7 +497,7 @@ export class ConversationChatAreaComponent {
497
497
  messages = [];
498
498
  showScrollToBottomIcon = false;
499
499
  scrollToBottom = false;
500
- loadedPeripheralConversationIds = new Set(); // Track ALL conversations whose peripheral data was loaded
500
+ lastLoadedConversationId = null; // Track which conversation's peripheral data was loaded
501
501
  currentlyLoadingConversationId = null; // Track which conversation is currently being loaded
502
502
  isProcessing = false;
503
503
  intentCheckMessage = null; // Temporary message shown during intent checking
@@ -559,6 +559,8 @@ export class ConversationChatAreaComponent {
559
559
  * Passed to message-input component to reconnect PubSub updates
560
560
  */
561
561
  inProgressMessageIds = [];
562
+ // Subject for cleanup on destroy
563
+ destroy$ = new Subject();
562
564
  // Cache of message-input metadata for rendering multiple instances
563
565
  // Prevents destruction/recreation when switching conversations for performance
564
566
  messageInputMetadataCache = new Map();
@@ -570,8 +572,6 @@ export class ConversationChatAreaComponent {
570
572
  isLoadingPeripheralData = false;
571
573
  // Subject to trigger artifact viewer refresh when new version is created
572
574
  artifactViewerRefresh$ = new Subject();
573
- // Subject for component destruction cleanup
574
- destroy$ = new Subject();
575
575
  // Track initialization state to prevent loading messages before agents are ready
576
576
  isInitialized = false;
577
577
  // Resize state
@@ -620,18 +620,6 @@ export class ConversationChatAreaComponent {
620
620
  await this.initializeAttachmentSupport();
621
621
  // Load saved artifact pane width
622
622
  this.loadArtifactPaneWidth();
623
- // Subscribe to completion events from streaming service (PubSub-based, replaces polling)
624
- // This handles real-time completion notifications without timer-based polling
625
- this.streamingService.completionEvents$
626
- .pipe(takeUntil(this.destroy$))
627
- .subscribe(async (event) => {
628
- // Only handle if it's for a message in our current conversation
629
- const message = this.messages.find(m => m.ID === event.conversationDetailId);
630
- if (message) {
631
- LogStatusEx({ message: `🎉 Received completion event for message ${event.conversationDetailId}`, verboseOnly: true });
632
- await this.handleMessageCompletion(message, event.agentRunId);
633
- }
634
- });
635
623
  // Mark as initialized so setter can trigger conversation changes
636
624
  this.isInitialized = true;
637
625
  // Initial load if there's already an active conversation
@@ -643,6 +631,16 @@ export class ConversationChatAreaComponent {
643
631
  window.addEventListener('mouseup', this.onResizeEnd.bind(this));
644
632
  window.addEventListener('touchmove', this.onResizeTouchMove.bind(this));
645
633
  window.addEventListener('touchend', this.onResizeTouchEnd.bind(this));
634
+ // Subscribe to completion events from PubSub
635
+ this.streamingService.completionEvents$
636
+ .pipe(takeUntil(this.destroy$))
637
+ .subscribe(async (event) => {
638
+ // Find the message in our current conversation
639
+ const message = this.messages.find(m => m.ID === event.conversationDetailId);
640
+ if (message) {
641
+ await this.handleMessageCompletion(message, event.agentRunId);
642
+ }
643
+ });
646
644
  }
647
645
  /**
648
646
  * Initializes attachment support by checking if the conversation manager agent (Sage)
@@ -723,11 +721,11 @@ export class ConversationChatAreaComponent {
723
721
  }
724
722
  }
725
723
  ngOnDestroy() {
726
- // Complete the destroy$ Subject to clean up subscriptions
727
- this.destroy$.next();
728
- this.destroy$.complete();
729
724
  // Stop polling when component is destroyed
730
725
  this.agentStateService.stopPolling();
726
+ // Complete destroy subject to cleanup subscriptions
727
+ this.destroy$.next();
728
+ this.destroy$.complete();
731
729
  // Remove resize listeners
732
730
  window.removeEventListener('mousemove', this.onResizeMove.bind(this));
733
731
  window.removeEventListener('mouseup', this.onResizeEnd.bind(this));
@@ -868,23 +866,17 @@ export class ConversationChatAreaComponent {
868
866
  .map(m => m.ID)];
869
867
  if (this.inProgressMessageIds.length > 0) {
870
868
  LogStatusEx({ message: `🔌 Detected ${this.inProgressMessageIds.length} in-progress messages for reconnection`, verboseOnly: true });
871
- // Check for missed completions - handle the "navigate away then back" scenario
872
- // The streaming service caches recent completions for components that initialize late
873
- for (const message of messages) {
874
- if (message.Status === 'In-Progress' && message.ID) {
875
- const recentCompletion = this.streamingService.getRecentCompletion(message.ID);
876
- if (recentCompletion) {
877
- LogStatusEx({ message: `🔄 Found missed completion for message ${message.ID}, processing...`, verboseOnly: true });
878
- // Process the completion asynchronously (don't await to avoid blocking)
879
- this.handleMessageCompletion(message, recentCompletion.agentRunId)
880
- .then(() => {
881
- // Clear the cached completion after handling
882
- this.streamingService.clearRecentCompletion(message.ID);
883
- })
884
- .catch(error => {
885
- console.error(`Failed to handle missed completion for message ${message.ID}:`, error);
886
- });
887
- }
869
+ }
870
+ // Check for missed completions (user navigated away, agent completed, user returned)
871
+ // The streaming service stores recent completions so we can handle them
872
+ for (const message of messages) {
873
+ if (message.Status === 'In-Progress' && message.ID) {
874
+ const recentCompletion = this.streamingService.getRecentCompletion(message.ID);
875
+ if (recentCompletion) {
876
+ // This message completed while we were away - handle it
877
+ LogStatusEx({ message: `📥 Found missed completion for message ${message.ID}, handling...`, verboseOnly: true });
878
+ this.handleMessageCompletion(message, recentCompletion.agentRunId);
879
+ this.streamingService.clearRecentCompletion(message.ID);
888
880
  }
889
881
  }
890
882
  }
@@ -926,12 +918,12 @@ export class ConversationChatAreaComponent {
926
918
  async loadPeripheralData(conversationId) {
927
919
  const timestamp = new Date().toISOString();
928
920
  // Skip if we've already processed peripheral data for this conversation
929
- if (this.loadedPeripheralConversationIds.has(conversationId)) {
921
+ if (this.lastLoadedConversationId === conversationId) {
930
922
  LogStatusEx({ message: `[${timestamp}] ⏭️ Skipping peripheral data processing - already processed for conversation ${conversationId}`, verboseOnly: true });
931
923
  return;
932
924
  }
933
925
  // Mark this conversation as processed to prevent duplicate processing
934
- this.loadedPeripheralConversationIds.add(conversationId);
926
+ this.lastLoadedConversationId = conversationId;
935
927
  LogStatusEx({ message: `[${timestamp}] 📊 Processing peripheral data for conversation ${conversationId} from cache`, verboseOnly: true });
936
928
  try {
937
929
  // Get cached data - should always be present by the time we get here
@@ -995,9 +987,10 @@ export class ConversationChatAreaComponent {
995
987
  this.systemArtifactsByDetailId.set(row.ID, systemArtifactList);
996
988
  }
997
989
  }
998
- // Build ratings map - always set (empty array if no ratings)
999
- // This tells the rating component not to query the database
1000
- this.ratingsByDetailId.set(row.ID, parsed.ratings);
990
+ // Build ratings map
991
+ if (parsed.ratings.length > 0) {
992
+ this.ratingsByDetailId.set(row.ID, parsed.ratings);
993
+ }
1001
994
  }
1002
995
  // Load attachments for all messages in this conversation
1003
996
  // Uses the ConversationAttachmentService to batch-load all attachments
@@ -1031,8 +1024,8 @@ export class ConversationChatAreaComponent {
1031
1024
  }
1032
1025
  catch (error) {
1033
1026
  console.error('Failed to process peripheral data:', error);
1034
- // Remove from loaded set on error so we can retry
1035
- this.loadedPeripheralConversationIds.delete(conversationId);
1027
+ // Don't set lastLoadedConversationId on error so we can retry
1028
+ this.lastLoadedConversationId = null;
1036
1029
  }
1037
1030
  }
1038
1031
  /**
@@ -1138,57 +1131,6 @@ export class ConversationChatAreaComponent {
1138
1131
  this.cdr.detectChanges();
1139
1132
  }
1140
1133
  }
1141
- /**
1142
- * Handle message completion from PubSub streaming service.
1143
- * This is the primary completion handler that replaces timer-based polling.
1144
- * Called when the streaming service receives a completion event from the backend.
1145
- *
1146
- * @param message The message entity that completed
1147
- * @param agentRunId The agent run ID from the completion event
1148
- */
1149
- async handleMessageCompletion(message, agentRunId) {
1150
- try {
1151
- LogStatusEx({ message: `🔄 Handling completion for message ${message.ID}`, verboseOnly: true });
1152
- // 1. Reload message from database to get final content
1153
- await message.Load(message.ID);
1154
- // 2. Reload agent run to get final status/timestamps
1155
- const agentRun = this.agentRunsByDetailId.get(message.ID);
1156
- if (agentRun?.ID) {
1157
- await agentRun.Load(agentRun.ID);
1158
- }
1159
- // 3. Reload artifacts for this completed message
1160
- await this.reloadArtifactsForMessage(message.ID);
1161
- // 4. Reload messages to discover newly delegated agent messages
1162
- // When Sage delegates to Marketing Agent, a new message is created
1163
- await this.reloadMessagesForActiveConversation();
1164
- // 5. Update inProgressMessageIds to track any new delegated agents
1165
- this.inProgressMessageIds = [...this.messages
1166
- .filter(m => m.Status === 'In-Progress')
1167
- .map(m => m.ID)];
1168
- // 6. Auto-open artifact panel if message has artifacts and no artifact is currently shown
1169
- if (this.artifactsByDetailId.has(message.ID) && !this.showArtifactPanel) {
1170
- const artifactList = this.artifactsByDetailId.get(message.ID);
1171
- if (artifactList && artifactList.length > 0) {
1172
- // Show the LAST (most recent) artifact
1173
- this.selectedArtifactId = artifactList[artifactList.length - 1].artifactId;
1174
- this.showArtifactPanel = true;
1175
- await this.loadArtifactPermissions(this.selectedArtifactId);
1176
- }
1177
- }
1178
- // 7. Remove task from ActiveTasksService (clears spinner in conversation list)
1179
- const task = this.activeTasks.getByConversationDetailId(message.ID);
1180
- if (task) {
1181
- this.activeTasks.remove(task.id);
1182
- }
1183
- // 8. Trigger re-render with updated data
1184
- this.messages = [...this.messages];
1185
- this.cdr.detectChanges();
1186
- LogStatusEx({ message: `✅ Completion handled for message ${message.ID}`, verboseOnly: true });
1187
- }
1188
- catch (error) {
1189
- console.error(`Failed to handle completion for message ${message.ID}:`, error);
1190
- }
1191
- }
1192
1134
  /**
1193
1135
  * Handle agent run update event from progress updates
1194
1136
  * This is called on EVERY progress update with the full, live agent run object
@@ -1258,6 +1200,56 @@ export class ConversationChatAreaComponent {
1258
1200
  console.error('Failed to reload messages for active conversation:', error);
1259
1201
  }
1260
1202
  }
1203
+ /**
1204
+ * Handle message completion triggered by PubSub completion event
1205
+ * Reloads message, agent run, and artifacts, then updates UI
1206
+ * @param message The message that completed
1207
+ * @param agentRunId The ID of the agent run that completed
1208
+ */
1209
+ async handleMessageCompletion(message, _agentRunId) {
1210
+ try {
1211
+ LogStatusEx({ message: `🎉 Handling completion for message ${message.ID}`, verboseOnly: true });
1212
+ // Reload message from database to get final content and status
1213
+ await message.Load(message.ID);
1214
+ // Reload agent run to get final status, timestamps, and cost
1215
+ const agentRun = this.agentRunsByDetailId.get(message.ID);
1216
+ if (agentRun?.ID) {
1217
+ await agentRun.Load(agentRun.ID);
1218
+ }
1219
+ // Reload artifacts for this completed message
1220
+ await this.reloadArtifactsForMessage(message.ID);
1221
+ // Reload messages to pick up newly delegated agent messages
1222
+ // When Sage delegates to Marketing Agent, a new message is created
1223
+ await this.reloadMessagesForActiveConversation();
1224
+ // Update inProgressMessageIds to include new delegated agents
1225
+ // This triggers callback registration via the setter in message-input
1226
+ this.inProgressMessageIds = [...this.messages
1227
+ .filter(m => m.Status === 'In-Progress')
1228
+ .map(m => m.ID)];
1229
+ // Auto-open artifact panel if this message has artifacts and no artifact is currently shown
1230
+ if (this.artifactsByDetailId.has(message.ID) && !this.showArtifactPanel) {
1231
+ const artifactList = this.artifactsByDetailId.get(message.ID);
1232
+ if (artifactList && artifactList.length > 0) {
1233
+ // Show the LAST (most recent) artifact
1234
+ this.selectedArtifactId = artifactList[artifactList.length - 1].artifactId;
1235
+ this.showArtifactPanel = true;
1236
+ await this.loadArtifactPermissions(this.selectedArtifactId);
1237
+ }
1238
+ }
1239
+ // Remove task from ActiveTasksService (clears spinner in conversation list)
1240
+ const task = this.activeTasks.getByConversationDetailId(message.ID);
1241
+ if (task) {
1242
+ this.activeTasks.remove(task.id);
1243
+ }
1244
+ // Force re-render with updated agent run and artifacts
1245
+ this.messages = [...this.messages];
1246
+ this.cdr.detectChanges();
1247
+ LogStatusEx({ message: `✅ Completion handled for message ${message.ID}`, verboseOnly: true });
1248
+ }
1249
+ catch (error) {
1250
+ console.error(`Error handling message completion for ${message.ID}:`, error);
1251
+ }
1252
+ }
1261
1253
  async onAgentResponse(event) {
1262
1254
  // Add the agent's response message to the conversation
1263
1255
  this.messages = [...this.messages, event.message];
@@ -1295,7 +1287,6 @@ export class ConversationChatAreaComponent {
1295
1287
  */
1296
1288
  invalidateConversationCache(conversationId) {
1297
1289
  this.conversationDataCache.delete(conversationId);
1298
- this.loadedPeripheralConversationIds.delete(conversationId);
1299
1290
  LogStatusEx({ message: `🗑️ Invalidated cache for conversation ${conversationId}`, verboseOnly: true });
1300
1291
  }
1301
1292
  /**