@memberjunction/ng-conversations 2.104.0 → 2.105.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 (106) hide show
  1. package/dist/lib/components/collection/collection-view.component.d.ts +5 -1
  2. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  3. package/dist/lib/components/collection/collection-view.component.js +53 -11
  4. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  5. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +53 -13
  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 +455 -289
  8. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  9. package/dist/lib/components/conversation/conversation-list.component.d.ts +9 -1
  10. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  11. package/dist/lib/components/conversation/conversation-list.component.js +258 -71
  12. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  13. package/dist/lib/components/mention/mention-dropdown.component.d.ts +6 -0
  14. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
  15. package/dist/lib/components/mention/mention-dropdown.component.js +35 -13
  16. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
  17. package/dist/lib/components/message/message-input.component.d.ts +49 -12
  18. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  19. package/dist/lib/components/message/message-input.component.js +579 -221
  20. package/dist/lib/components/message/message-input.component.js.map +1 -1
  21. package/dist/lib/components/message/message-item.component.d.ts +16 -5
  22. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  23. package/dist/lib/components/message/message-item.component.js +136 -64
  24. package/dist/lib/components/message/message-item.component.js.map +1 -1
  25. package/dist/lib/components/message/message-list.component.d.ts +11 -5
  26. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  27. package/dist/lib/components/message/message-list.component.js +48 -9
  28. package/dist/lib/components/message/message-list.component.js.map +1 -1
  29. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  30. package/dist/lib/components/navigation/conversation-navigation.component.js +24 -9
  31. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  32. package/dist/lib/components/task/tasks-full-view.component.d.ts +47 -0
  33. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -0
  34. package/dist/lib/components/task/tasks-full-view.component.js +368 -0
  35. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -0
  36. package/dist/lib/components/tasks/task-widget.component.d.ts +29 -0
  37. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -0
  38. package/dist/lib/components/tasks/task-widget.component.js +385 -0
  39. package/dist/lib/components/tasks/task-widget.component.js.map +1 -0
  40. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +22 -8
  41. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  42. package/dist/lib/components/tasks/tasks-dropdown.component.js +195 -99
  43. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  44. package/dist/lib/components/thread/thread-panel.component.d.ts +3 -1
  45. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  46. package/dist/lib/components/thread/thread-panel.component.js +14 -14
  47. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  48. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +43 -4
  49. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  50. package/dist/lib/components/workspace/conversation-workspace.component.js +288 -46
  51. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  52. package/dist/lib/conversations.module.d.ts +40 -46
  53. package/dist/lib/conversations.module.d.ts.map +1 -1
  54. package/dist/lib/conversations.module.js +28 -42
  55. package/dist/lib/conversations.module.js.map +1 -1
  56. package/dist/lib/models/conversation-state.model.d.ts +29 -1
  57. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  58. package/dist/lib/services/conversation-agent.service.d.ts +6 -5
  59. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  60. package/dist/lib/services/conversation-agent.service.js +18 -19
  61. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  62. package/dist/lib/services/data-cache.service.d.ts +96 -0
  63. package/dist/lib/services/data-cache.service.d.ts.map +1 -0
  64. package/dist/lib/services/data-cache.service.js +203 -0
  65. package/dist/lib/services/data-cache.service.js.map +1 -0
  66. package/dist/public-api.d.ts +3 -6
  67. package/dist/public-api.d.ts.map +1 -1
  68. package/dist/public-api.js +3 -6
  69. package/dist/public-api.js.map +1 -1
  70. package/package.json +12 -10
  71. package/dist/lib/components/artifact/artifact-panel.component.d.ts +0 -22
  72. package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +0 -1
  73. package/dist/lib/components/artifact/artifact-panel.component.js +0 -237
  74. package/dist/lib/components/artifact/artifact-panel.component.js.map +0 -1
  75. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +0 -39
  76. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +0 -1
  77. package/dist/lib/components/artifact/artifact-upload-modal.component.js +0 -384
  78. package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +0 -1
  79. package/dist/lib/components/artifact/artifact-version-history.component.d.ts +0 -28
  80. package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +0 -1
  81. package/dist/lib/components/artifact/artifact-version-history.component.js +0 -280
  82. package/dist/lib/components/artifact/artifact-version-history.component.js.map +0 -1
  83. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -22
  84. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
  85. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -182
  86. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
  87. package/dist/lib/components/artifact/artifact-viewer.component.d.ts +0 -27
  88. package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +0 -1
  89. package/dist/lib/components/artifact/artifact-viewer.component.js +0 -266
  90. package/dist/lib/components/artifact/artifact-viewer.component.js.map +0 -1
  91. package/dist/lib/components/artifact/inline-artifact.component.d.ts +0 -46
  92. package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +0 -1
  93. package/dist/lib/components/artifact/inline-artifact.component.js +0 -447
  94. package/dist/lib/components/artifact/inline-artifact.component.js.map +0 -1
  95. package/dist/lib/components/task/task-form-modal.component.d.ts +0 -42
  96. package/dist/lib/components/task/task-form-modal.component.d.ts.map +0 -1
  97. package/dist/lib/components/task/task-form-modal.component.js +0 -329
  98. package/dist/lib/components/task/task-form-modal.component.js.map +0 -1
  99. package/dist/lib/components/task/task-item.component.d.ts +0 -22
  100. package/dist/lib/components/task/task-item.component.d.ts.map +0 -1
  101. package/dist/lib/components/task/task-item.component.js +0 -234
  102. package/dist/lib/components/task/task-item.component.js.map +0 -1
  103. package/dist/lib/components/task/task-list.component.d.ts +0 -32
  104. package/dist/lib/components/task/task-list.component.d.ts.map +0 -1
  105. package/dist/lib/components/task/task-list.component.js +0 -290
  106. package/dist/lib/components/task/task-list.component.js.map +0 -1
@@ -2,26 +2,27 @@ import { Component, Input, Output, EventEmitter, HostListener } from '@angular/c
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  function MentionDropdownComponent_div_0_div_1_div_1_i_2_Template(rf, ctx) { if (rf & 1) {
5
- i0.ɵɵelement(0, "i");
5
+ i0.ɵɵelement(0, "i", 15);
6
6
  } if (rf & 2) {
7
7
  const suggestion_r2 = i0.ɵɵnextContext().$implicit;
8
- i0.ɵɵclassMapInterpolate1("fa-solid ", suggestion_r2.icon, "");
8
+ const ctx_r2 = i0.ɵɵnextContext(3);
9
+ i0.ɵɵproperty("ngClass", ctx_r2.getIconClasses(suggestion_r2.icon));
9
10
  } }
10
11
  function MentionDropdownComponent_div_0_div_1_div_1_i_3_Template(rf, ctx) { if (rf & 1) {
11
- i0.ɵɵelement(0, "i", 15);
12
+ i0.ɵɵelement(0, "i", 16);
12
13
  } }
13
14
  function MentionDropdownComponent_div_0_div_1_div_1_span_6_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementStart(0, "span", 16);
15
+ i0.ɵɵelementStart(0, "span", 17);
15
16
  i0.ɵɵtext(1, "Agent");
16
17
  i0.ɵɵelementEnd();
17
18
  } }
18
19
  function MentionDropdownComponent_div_0_div_1_div_1_span_7_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "span", 17);
20
+ i0.ɵɵelementStart(0, "span", 18);
20
21
  i0.ɵɵtext(1, "User");
21
22
  i0.ɵɵelementEnd();
22
23
  } }
23
24
  function MentionDropdownComponent_div_0_div_1_div_1_div_9_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementStart(0, "div", 18);
25
+ i0.ɵɵelementStart(0, "div", 19);
25
26
  i0.ɵɵtext(1);
26
27
  i0.ɵɵelementEnd();
27
28
  } if (rf & 2) {
@@ -34,7 +35,7 @@ function MentionDropdownComponent_div_0_div_1_div_1_Template(rf, ctx) { if (rf &
34
35
  i0.ɵɵelementStart(0, "div", 6);
35
36
  i0.ɵɵlistener("click", function MentionDropdownComponent_div_0_div_1_div_1_Template_div_click_0_listener() { const suggestion_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectSuggestion(suggestion_r2)); })("mouseenter", function MentionDropdownComponent_div_0_div_1_div_1_Template_div_mouseenter_0_listener() { const i_r4 = i0.ɵɵrestoreView(_r1).index; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectedIndex = i_r4); });
36
37
  i0.ɵɵelementStart(1, "div", 7);
37
- i0.ɵɵtemplate(2, MentionDropdownComponent_div_0_div_1_div_1_i_2_Template, 1, 3, "i", 8)(3, MentionDropdownComponent_div_0_div_1_div_1_i_3_Template, 1, 0, "i", 9);
38
+ i0.ɵɵtemplate(2, MentionDropdownComponent_div_0_div_1_div_1_i_2_Template, 1, 1, "i", 8)(3, MentionDropdownComponent_div_0_div_1_div_1_i_3_Template, 1, 0, "i", 9);
38
39
  i0.ɵɵelementEnd();
39
40
  i0.ɵɵelementStart(4, "div", 10)(5, "div", 11);
40
41
  i0.ɵɵtemplate(6, MentionDropdownComponent_div_0_div_1_div_1_span_6_Template, 2, 0, "span", 12)(7, MentionDropdownComponent_div_0_div_1_div_1_span_7_Template, 2, 0, "span", 13);
@@ -70,8 +71,8 @@ function MentionDropdownComponent_div_0_div_1_Template(rf, ctx) { if (rf & 1) {
70
71
  i0.ɵɵproperty("ngForOf", ctx_r2.suggestions)("ngForTrackBy", ctx_r2.trackBySuggestion);
71
72
  } }
72
73
  function MentionDropdownComponent_div_0_div_2_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "div", 19);
74
- i0.ɵɵelement(1, "i", 20);
74
+ i0.ɵɵelementStart(0, "div", 20);
75
+ i0.ɵɵelement(1, "i", 21);
75
76
  i0.ɵɵelementStart(2, "p");
76
77
  i0.ɵɵtext(3, "No agents or users available");
77
78
  i0.ɵɵelementEnd()();
@@ -162,18 +163,39 @@ export class MentionDropdownComponent {
162
163
  trackBySuggestion(index, item) {
163
164
  return item.id;
164
165
  }
166
+ /**
167
+ * Get icon classes - supports both Font Awesome and custom CSS classes
168
+ * Font Awesome icons start with 'fa-' (e.g., 'fa-solid fa-robot')
169
+ * Custom icons use their own prefix (e.g., 'mj-icon-skip', 'acme-icon-custom')
170
+ */
171
+ getIconClasses(iconClass) {
172
+ if (!iconClass) {
173
+ return 'fa-solid fa-robot'; // Default fallback
174
+ }
175
+ // If it's a Font Awesome icon (contains 'fa-'), add fa-solid if not present
176
+ if (iconClass.includes('fa-')) {
177
+ // If it already has fa-solid, fa-regular, etc., use as-is
178
+ if (iconClass.match(/\b(fa-solid|fa-regular|fa-light|fa-brands)\b/)) {
179
+ return iconClass;
180
+ }
181
+ // Otherwise add fa-solid prefix
182
+ return `fa-solid ${iconClass}`;
183
+ }
184
+ // For custom icons (mj-icon-*, acme-icon-*, etc.), use as-is
185
+ return iconClass;
186
+ }
165
187
  static ɵfac = function MentionDropdownComponent_Factory(t) { return new (t || MentionDropdownComponent)(); };
166
188
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MentionDropdownComponent, selectors: [["mj-mention-dropdown"]], hostBindings: function MentionDropdownComponent_HostBindings(rf, ctx) { if (rf & 1) {
167
189
  i0.ɵɵlistener("keydown", function MentionDropdownComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); }, false, i0.ɵɵresolveDocument);
168
- } }, inputs: { suggestions: "suggestions", position: "position", visible: "visible", showAbove: "showAbove" }, outputs: { suggestionSelected: "suggestionSelected", closed: "closed" }, decls: 1, vars: 1, consts: [["class", "mention-dropdown", 3, "show-above", "top", "left", 4, "ngIf"], [1, "mention-dropdown"], ["class", "mention-suggestions", 4, "ngIf"], ["class", "mention-empty-state", 4, "ngIf"], [1, "mention-suggestions"], ["class", "mention-suggestion", 3, "selected", "click", "mouseenter", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "mention-suggestion", 3, "click", "mouseenter"], [1, "suggestion-icon"], [3, "class", 4, "ngIf"], ["class", "fa-solid fa-user", 4, "ngIf"], [1, "suggestion-content"], [1, "suggestion-name"], ["class", "suggestion-type-badge", 4, "ngIf"], ["class", "suggestion-type-badge user", 4, "ngIf"], ["class", "suggestion-description", 4, "ngIf"], [1, "fa-solid", "fa-user"], [1, "suggestion-type-badge"], [1, "suggestion-type-badge", "user"], [1, "suggestion-description"], [1, "mention-empty-state"], [1, "fa-solid", "fa-robot"]], template: function MentionDropdownComponent_Template(rf, ctx) { if (rf & 1) {
190
+ } }, inputs: { suggestions: "suggestions", position: "position", visible: "visible", showAbove: "showAbove" }, outputs: { suggestionSelected: "suggestionSelected", closed: "closed" }, decls: 1, vars: 1, consts: [["class", "mention-dropdown", 3, "show-above", "top", "left", 4, "ngIf"], [1, "mention-dropdown"], ["class", "mention-suggestions", 4, "ngIf"], ["class", "mention-empty-state", 4, "ngIf"], [1, "mention-suggestions"], ["class", "mention-suggestion", 3, "selected", "click", "mouseenter", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "mention-suggestion", 3, "click", "mouseenter"], [1, "suggestion-icon"], [3, "ngClass", 4, "ngIf"], ["class", "fa-solid fa-user", 4, "ngIf"], [1, "suggestion-content"], [1, "suggestion-name"], ["class", "suggestion-type-badge", 4, "ngIf"], ["class", "suggestion-type-badge user", 4, "ngIf"], ["class", "suggestion-description", 4, "ngIf"], [3, "ngClass"], [1, "fa-solid", "fa-user"], [1, "suggestion-type-badge"], [1, "suggestion-type-badge", "user"], [1, "suggestion-description"], [1, "mention-empty-state"], [1, "fa-solid", "fa-robot"]], template: function MentionDropdownComponent_Template(rf, ctx) { if (rf & 1) {
169
191
  i0.ɵɵtemplate(0, MentionDropdownComponent_div_0_Template, 3, 8, "div", 0);
170
192
  } if (rf & 2) {
171
193
  i0.ɵɵproperty("ngIf", ctx.visible);
172
- } }, dependencies: [i1.NgForOf, i1.NgIf], styles: [".mention-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n z-index: 10000;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 280px;\n max-width: 400px;\n max-height: 300px;\n overflow-y: auto;\n transform-origin: top left; \n\n}\n\n.mention-dropdown.show-above[_ngcontent-%COMP%] {\n transform: translateY(-100%); \n\n transform-origin: bottom left; \n\n}\n\n.mention-suggestions[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.mention-suggestion[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.mention-suggestion[_ngcontent-%COMP%]:hover, \n.mention-suggestion.selected[_ngcontent-%COMP%] {\n background-color: #f5f5f5;\n}\n\n.suggestion-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n border-radius: 6px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.suggestion-icon[_ngcontent-%COMP%] i.fa-user[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.suggestion-name[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggestion-type-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-radius: 3px;\n}\n\n.suggestion-type-badge.user[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 8px;\n}\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 8px;\n}\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n\n\n.mention-empty-state[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: #9CA3AF;\n}\n\n.mention-empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n}\n\n.mention-empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n font-weight: 500;\n}"] });
194
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf], styles: [".mention-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n z-index: 10000;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 280px;\n max-width: 400px;\n max-height: 300px;\n overflow-y: auto;\n transform-origin: top left; \n\n}\n\n.mention-dropdown.show-above[_ngcontent-%COMP%] {\n transform: translateY(-100%); \n\n transform-origin: bottom left; \n\n}\n\n.mention-suggestions[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.mention-suggestion[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.mention-suggestion[_ngcontent-%COMP%]:hover, \n.mention-suggestion.selected[_ngcontent-%COMP%] {\n background-color: #f5f5f5;\n}\n\n.suggestion-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n border-radius: 6px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.suggestion-icon[_ngcontent-%COMP%] i.fa-user[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.suggestion-name[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggestion-type-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-radius: 3px;\n}\n\n.suggestion-type-badge.user[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 8px;\n}\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 8px;\n}\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 8px;\n}\n\n.mention-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n\n\n.mention-empty-state[_ngcontent-%COMP%] {\n padding: 24px;\n text-align: center;\n color: #9CA3AF;\n}\n\n.mention-empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n}\n\n.mention-empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n font-weight: 500;\n}", "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n[class^=\"mj-icon-\"][_ngcontent-%COMP%], \n[class*=\" mj-icon-\"][_ngcontent-%COMP%] {\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-size: inherit;\n line-height: 1;\n}\n\n\n\n\n\n\n\n\n\n\n\n.mj-icon-skip[_ngcontent-%COMP%] {\n width: 1.4em;\n height: 1.4em;\n display: inline-block;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n \n\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 101.89918457031249 96.83947368421053'%3E%3Cg transform='translate(-0.1288232421875,-0.0)'%3E%3Cpath d='M93.85,41.56c-.84,0-1.62.2-2.37.55-3-4.35-7.49-8.12-13.04-11.04l.04-7.18v-14.44h-10.24v17.6c-1.52-.43-3.07-.8-4.67-1.11V0h-10.24v24.72s-.09,0-.14,0h-4.38s-.1,0-.14,0V7.3h-10.24v18.62c-1.6.32-3.15.69-4.67,1.11v-11.67h-10.24v6.09l.04,9.6c-5.55,2.92-10.04,6.7-13.04,11.04-.75-.35-1.53-.55-2.37-.55-4.5,0-8.14,5.61-8.14,12.51s3.64,12.53,8.14,12.53c.58,0,1.14-.12,1.67-.29,4.1,6.62,11.54,12.06,20.98,15.28l.79.13v7.05c0,2.97,1.45,5.58,3.87,6.99,1.18.69,2.5,1.04,3.85,1.03,1.4,0,2.83-.37,4.15-1.12l7.54-4.29,7.56,4.3c1.31.74,2.73,1.12,4.13,1.12s2.67-.35,3.85-1.04c2.42-1.41,3.86-4.02,3.86-6.98v-7.05l.79-.13c9.44-3.22,16.89-8.66,20.98-15.28.54.17,1.09.29,1.68.29,4.5,0,8.14-5.61,8.14-12.53s-3.63-12.51-8.14-12.51' fill='%23AAAAAA'/%3E%3Cpath d='M86.69,50.87c0-12.22-13.6-19.1-28.94-20.66-4.48-.47-9.19-.54-13.52,0-15.34,1.53-28.93,8.41-28.93,20.66,0,8.55,5.7,15.55,12.68,15.55h7.94c3.05,2.5,6.93,4.1,11.08,4.71,2.65.4,5.44.46,8.01,0,4.15-.6,8.05-2.2,11.1-4.71h7.92c6.97,0,12.68-7,12.68-15.55' fill='white' opacity='0.9'/%3E%3Cpath d='M57.83,55.82c-1.19,2.58-3.8,4.35-6.84,4.35s-5.65-1.77-6.84-4.35h13.68Z' fill='%23AAAAAA'/%3E%3Cpath d='M32.52,41.14c1.74,0,3.18,2.13,3.18,4.76s-1.44,4.74-3.18,4.74-3.16-2.13-3.16-4.74,1.41-4.76,3.16-4.76' fill='%23AAAAAA'/%3E%3Cpath d='M69.46,41.14c1.74,0,3.16,2.13,3.16,4.76s-1.41,4.74-3.16,4.74-3.18-2.13-3.18-4.74,1.41-4.76,3.18-4.76' fill='%23AAAAAA'/%3E%3Cpath d='M63.91,76.15c-.82-.48-1.84-.43-2.8.12l-10.13,5.75-10.11-5.75c-.96-.55-1.98-.59-2.8-.12-.82.47-1.29,1.38-1.29,2.49v10.12c0,1.11.47,2.02,1.28,2.49.38.22.8.33,1.24.33.51,0,1.05-.15,1.57-.44l10.12-5.75,10.11,5.75c.52.29,1.05.44,1.56.44.44,0,.86-.11,1.24-.33.81-.48,1.28-1.38,1.28-2.49v-10.12c0-1.11-.47-2.02-1.28-2.49' fill='white' opacity='0.9'/%3E%3C/g%3E%3C/svg%3E\");\n vertical-align: middle;\n}\n\n\n\n\n\n\n.mj-icon-skip-lightning[_ngcontent-%COMP%]::before {\n content: \"\u26A1\";\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n font-size: 1.1em;\n}\n\n\n\n\n\n\n.mj-icon-skip-brain[_ngcontent-%COMP%]::before {\n content: \"\uD83E\uDDE0\";\n font-size: 1.2em;\n}\n\n\n\n\n\n\n\n\n\n\n.mj-icon-data-analyst[_ngcontent-%COMP%]::before {\n content: \"\uD83D\uDCCA\";\n font-size: 1.1em;\n}\n\n\n\n\n\n.mj-icon-api[_ngcontent-%COMP%]::before {\n content: \"\uD83D\uDD0C\";\n font-size: 1.1em;\n}\n\n\n\n\n\n.mj-icon-processing[_ngcontent-%COMP%]::before {\n content: \"\u2699\uFE0F\";\n display: inline-block;\n animation: _ngcontent-%COMP%_rotate-icon 2s linear infinite;\n}\n\n@keyframes _ngcontent-%COMP%_rotate-icon {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n\n\n\n\n\n.mj-icon-monogram-s[_ngcontent-%COMP%]::before {\n content: \"S\";\n font-weight: 800;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 1.1em;\n color: #667eea;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"] });
173
195
  }
174
196
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MentionDropdownComponent, [{
175
197
  type: Component,
176
- args: [{ selector: 'mj-mention-dropdown', template: "<div\n *ngIf=\"visible\"\n class=\"mention-dropdown\"\n [class.show-above]=\"showAbove\"\n [style.top.px]=\"position.top\"\n [style.left.px]=\"position.left\"\n>\n <!-- Suggestions List -->\n <div class=\"mention-suggestions\" *ngIf=\"suggestions.length > 0\">\n <div\n *ngFor=\"let suggestion of suggestions; let i = index; trackBy: trackBySuggestion\"\n class=\"mention-suggestion\"\n [class.selected]=\"i === selectedIndex\"\n (click)=\"selectSuggestion(suggestion)\"\n (mouseenter)=\"selectedIndex = i\"\n >\n <div class=\"suggestion-icon\">\n <i\n *ngIf=\"suggestion.type === 'agent' && suggestion.icon\"\n class=\"fa-solid {{ suggestion.icon }}\"\n ></i>\n <i\n *ngIf=\"suggestion.type === 'user'\"\n class=\"fa-solid fa-user\"\n ></i>\n </div>\n <div class=\"suggestion-content\">\n <div class=\"suggestion-name\">\n <span class=\"suggestion-type-badge\" *ngIf=\"suggestion.type === 'agent'\">Agent</span>\n <span class=\"suggestion-type-badge user\" *ngIf=\"suggestion.type === 'user'\">User</span>\n {{ suggestion.displayName }}\n </div>\n <div class=\"suggestion-description\" *ngIf=\"suggestion.description\">\n {{ suggestion.description }}\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"mention-empty-state\" *ngIf=\"suggestions.length === 0\">\n <i class=\"fa-solid fa-robot\"></i>\n <p>No agents or users available</p>\n </div>\n</div>\n", styles: [".mention-dropdown {\n position: absolute;\n z-index: 10000;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 280px;\n max-width: 400px;\n max-height: 300px;\n overflow-y: auto;\n transform-origin: top left; /* Default: grows downward from top-left */\n}\n\n.mention-dropdown.show-above {\n transform: translateY(-100%); /* Shift entire dropdown up by its own height */\n transform-origin: bottom left; /* Grows upward from bottom-left */\n}\n\n.mention-suggestions {\n padding: 4px 0;\n}\n\n.mention-suggestion {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.mention-suggestion:hover,\n.mention-suggestion.selected {\n background-color: #f5f5f5;\n}\n\n.suggestion-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n border-radius: 6px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.suggestion-icon i.fa-user {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-content {\n flex: 1;\n min-width: 0;\n}\n\n.suggestion-name {\n font-weight: 500;\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggestion-type-badge {\n display: inline-block;\n padding: 2px 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-radius: 3px;\n}\n\n.suggestion-type-badge.user {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-description {\n font-size: 12px;\n color: #666;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Scrollbar styling */\n.mention-dropdown::-webkit-scrollbar {\n width: 8px;\n}\n\n.mention-dropdown::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 8px;\n}\n\n.mention-dropdown::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 8px;\n}\n\n.mention-dropdown::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n/* Empty State */\n.mention-empty-state {\n padding: 24px;\n text-align: center;\n color: #9CA3AF;\n}\n\n.mention-empty-state i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n}\n\n.mention-empty-state p {\n margin: 0;\n font-size: 13px;\n font-weight: 500;\n}\n"] }]
198
+ args: [{ selector: 'mj-mention-dropdown', template: "<div\n *ngIf=\"visible\"\n class=\"mention-dropdown\"\n [class.show-above]=\"showAbove\"\n [style.top.px]=\"position.top\"\n [style.left.px]=\"position.left\"\n>\n <!-- Suggestions List -->\n <div class=\"mention-suggestions\" *ngIf=\"suggestions.length > 0\">\n <div\n *ngFor=\"let suggestion of suggestions; let i = index; trackBy: trackBySuggestion\"\n class=\"mention-suggestion\"\n [class.selected]=\"i === selectedIndex\"\n (click)=\"selectSuggestion(suggestion)\"\n (mouseenter)=\"selectedIndex = i\"\n >\n <div class=\"suggestion-icon\">\n <i\n *ngIf=\"suggestion.type === 'agent' && suggestion.icon\"\n [ngClass]=\"getIconClasses(suggestion.icon)\"\n ></i>\n <i\n *ngIf=\"suggestion.type === 'user'\"\n class=\"fa-solid fa-user\"\n ></i>\n </div>\n <div class=\"suggestion-content\">\n <div class=\"suggestion-name\">\n <span class=\"suggestion-type-badge\" *ngIf=\"suggestion.type === 'agent'\">Agent</span>\n <span class=\"suggestion-type-badge user\" *ngIf=\"suggestion.type === 'user'\">User</span>\n {{ suggestion.displayName }}\n </div>\n <div class=\"suggestion-description\" *ngIf=\"suggestion.description\">\n {{ suggestion.description }}\n </div>\n </div>\n </div>\n </div>\n\n <!-- Empty State -->\n <div class=\"mention-empty-state\" *ngIf=\"suggestions.length === 0\">\n <i class=\"fa-solid fa-robot\"></i>\n <p>No agents or users available</p>\n </div>\n</div>\n", styles: [".mention-dropdown {\n position: absolute;\n z-index: 10000;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 280px;\n max-width: 400px;\n max-height: 300px;\n overflow-y: auto;\n transform-origin: top left; /* Default: grows downward from top-left */\n}\n\n.mention-dropdown.show-above {\n transform: translateY(-100%); /* Shift entire dropdown up by its own height */\n transform-origin: bottom left; /* Grows upward from bottom-left */\n}\n\n.mention-suggestions {\n padding: 4px 0;\n}\n\n.mention-suggestion {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.mention-suggestion:hover,\n.mention-suggestion.selected {\n background-color: #f5f5f5;\n}\n\n.suggestion-icon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n border-radius: 6px;\n color: white;\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.suggestion-icon i.fa-user {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-content {\n flex: 1;\n min-width: 0;\n}\n\n.suggestion-name {\n font-weight: 500;\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.suggestion-type-badge {\n display: inline-block;\n padding: 2px 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n border-radius: 3px;\n}\n\n.suggestion-type-badge.user {\n background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);\n}\n\n.suggestion-description {\n font-size: 12px;\n color: #666;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Scrollbar styling */\n.mention-dropdown::-webkit-scrollbar {\n width: 8px;\n}\n\n.mention-dropdown::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 8px;\n}\n\n.mention-dropdown::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 8px;\n}\n\n.mention-dropdown::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n/* Empty State */\n.mention-empty-state {\n padding: 24px;\n text-align: center;\n color: #9CA3AF;\n}\n\n.mention-empty-state i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n}\n\n.mention-empty-state p {\n margin: 0;\n font-size: 13px;\n font-weight: 500;\n}\n", "/**\n * Custom Agent Icons for MemberJunction\n *\n * This file contains custom icon definitions for agents that need unique branding\n * beyond Font Awesome icons. Icons can be CSS-based (emoji, Unicode, SVG data URIs)\n * or reference external image files.\n *\n * USAGE IN AGENT METADATA:\n * \"IconClass\": \"mj-icon-skip\" (references .mj-icon-skip class below)\n *\n * EXTENSIBILITY FOR 3RD PARTY DEVELOPERS:\n * Third-party developers have TWO options:\n *\n * 1. CSS CLASS APPROACH (Recommended for developers):\n * - Add your own global CSS with custom icon classes\n * - Reference your class in agent metadata: \"IconClass\": \"your-custom-class\"\n * - Works with any CSS available to the application\n * - Example: If you have a global stylesheet with .acme-icon-analyzer { ... }\n * then use \"IconClass\": \"acme-icon-analyzer\"\n *\n * 2. LOGO URL APPROACH (Recommended for end users):\n * - Use the LogoURL field in agent metadata\n * - Provide a URL or data URI: \"LogoURL\": \"https://example.com/logo.png\"\n * - Supports: HTTP URLs, data URIs (data:image/png;base64,...)\n * - LogoURL takes precedence over IconClass in the UI\n * - Perfect for non-technical users or external/uploaded images\n *\n * BEST PRACTICES:\n * - Use mj-icon-* prefix for MJ core icons\n * - Use your own prefix for 3rd party icons (e.g., acme-icon-*)\n * - Keep icons simple and recognizable at 16-36px sizes\n * - Test in both light and dark themes\n * - Prefer CSS classes over LogoURL for version-controlled icons\n */\n\n/* ============================================\n BASE STYLES FOR CUSTOM ICONS\n ============================================ */\n\n/* Base styling for all custom MJ icons */\n[class^=\"mj-icon-\"],\n[class*=\" mj-icon-\"] {\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-size: inherit;\n line-height: 1;\n}\n\n/* ============================================\n MJ CORE ICONS\n ============================================ */\n\n/**\n * Skip Brain Icon - Analytics/Intelligence Agent\n * Official Skip logo from Skip SaaS branding\n */\n.mj-icon-skip {\n width: 1.4em;\n height: 1.4em;\n display: inline-block;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n /* Official Skip logo SVG */\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 101.89918457031249 96.83947368421053'%3E%3Cg transform='translate(-0.1288232421875,-0.0)'%3E%3Cpath d='M93.85,41.56c-.84,0-1.62.2-2.37.55-3-4.35-7.49-8.12-13.04-11.04l.04-7.18v-14.44h-10.24v17.6c-1.52-.43-3.07-.8-4.67-1.11V0h-10.24v24.72s-.09,0-.14,0h-4.38s-.1,0-.14,0V7.3h-10.24v18.62c-1.6.32-3.15.69-4.67,1.11v-11.67h-10.24v6.09l.04,9.6c-5.55,2.92-10.04,6.7-13.04,11.04-.75-.35-1.53-.55-2.37-.55-4.5,0-8.14,5.61-8.14,12.51s3.64,12.53,8.14,12.53c.58,0,1.14-.12,1.67-.29,4.1,6.62,11.54,12.06,20.98,15.28l.79.13v7.05c0,2.97,1.45,5.58,3.87,6.99,1.18.69,2.5,1.04,3.85,1.03,1.4,0,2.83-.37,4.15-1.12l7.54-4.29,7.56,4.3c1.31.74,2.73,1.12,4.13,1.12s2.67-.35,3.85-1.04c2.42-1.41,3.86-4.02,3.86-6.98v-7.05l.79-.13c9.44-3.22,16.89-8.66,20.98-15.28.54.17,1.09.29,1.68.29,4.5,0,8.14-5.61,8.14-12.53s-3.63-12.51-8.14-12.51' fill='%23AAAAAA'/%3E%3Cpath d='M86.69,50.87c0-12.22-13.6-19.1-28.94-20.66-4.48-.47-9.19-.54-13.52,0-15.34,1.53-28.93,8.41-28.93,20.66,0,8.55,5.7,15.55,12.68,15.55h7.94c3.05,2.5,6.93,4.1,11.08,4.71,2.65.4,5.44.46,8.01,0,4.15-.6,8.05-2.2,11.1-4.71h7.92c6.97,0,12.68-7,12.68-15.55' fill='white' opacity='0.9'/%3E%3Cpath d='M57.83,55.82c-1.19,2.58-3.8,4.35-6.84,4.35s-5.65-1.77-6.84-4.35h13.68Z' fill='%23AAAAAA'/%3E%3Cpath d='M32.52,41.14c1.74,0,3.18,2.13,3.18,4.76s-1.44,4.74-3.18,4.74-3.16-2.13-3.16-4.74,1.41-4.76,3.16-4.76' fill='%23AAAAAA'/%3E%3Cpath d='M69.46,41.14c1.74,0,3.16,2.13,3.16,4.76s-1.41,4.74-3.16,4.74-3.18-2.13-3.18-4.74,1.41-4.76,3.18-4.76' fill='%23AAAAAA'/%3E%3Cpath d='M63.91,76.15c-.82-.48-1.84-.43-2.8.12l-10.13,5.75-10.11-5.75c-.96-.55-1.98-.59-2.8-.12-.82.47-1.29,1.38-1.29,2.49v10.12c0,1.11.47,2.02,1.28,2.49.38.22.8.33,1.24.33.51,0,1.05-.15,1.57-.44l10.12-5.75,10.11,5.75c.52.29,1.05.44,1.56.44.44,0,.86-.11,1.24-.33.81-.48,1.28-1.38,1.28-2.49v-10.12c0-1.11-.47-2.02-1.28-2.49' fill='white' opacity='0.9'/%3E%3C/g%3E%3C/svg%3E\");\n vertical-align: middle;\n}\n\n/**\n * Alternative Skip Icon - Lightning Bolt\n * Simple emoji-based icon for quick setup\n */\n.mj-icon-skip-lightning::before {\n content: \"\u26A1\";\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n font-size: 1.1em;\n}\n\n/**\n * Skip Icon - Brain Emoji\n * Fallback emoji option\n */\n.mj-icon-skip-brain::before {\n content: \"\uD83E\uDDE0\";\n font-size: 1.2em;\n}\n\n/* ============================================\n EXAMPLE CUSTOM ICONS FOR OTHER AGENTS\n ============================================ */\n\n/**\n * Data Analysis Icon - Chart emoji\n */\n.mj-icon-data-analyst::before {\n content: \"\uD83D\uDCCA\";\n font-size: 1.1em;\n}\n\n/**\n * API/Integration Icon - Plug emoji\n */\n.mj-icon-api::before {\n content: \"\uD83D\uDD0C\";\n font-size: 1.1em;\n}\n\n/**\n * Processing/Workflow Icon - Gear emoji with animation\n */\n.mj-icon-processing::before {\n content: \"\u2699\uFE0F\";\n display: inline-block;\n animation: rotate-icon 2s linear infinite;\n}\n\n@keyframes rotate-icon {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/**\n * Text/Letter-based Icon\n * Simple monogram icon\n */\n.mj-icon-monogram-s::before {\n content: \"S\";\n font-weight: 800;\n font-family: system-ui, -apple-system, sans-serif;\n font-size: 1.1em;\n color: #667eea;\n}\n\n/* ============================================\n TEMPLATE FOR NEW ICONS\n ============================================ */\n\n/*\n// EMOJI-BASED ICON (Simplest)\n.mj-icon-my-agent::before {\n content: \"\uD83C\uDFAF\"; // Use any emoji\n font-size: 1.2em;\n}\n\n// UNICODE SYMBOL ICON\n.mj-icon-my-agent::before {\n content: \"\\2022\"; // Unicode character\n font-size: 1.2em;\n color: #667eea;\n}\n\n// TEXT/LETTER ICON\n.mj-icon-my-agent::before {\n content: \"MA\"; // Initials/text\n font-weight: 800;\n font-size: 0.9em;\n color: #667eea;\n}\n\n// SVG DATA URI ICON (Most Control)\n.mj-icon-my-agent {\n width: 1em;\n height: 1em;\n display: inline-block;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n background-image: url('data:image/svg+xml;utf8,<svg>...</svg>');\n vertical-align: middle;\n}\n\n// EXTERNAL IMAGE FILE (For existing assets)\n.mj-icon-my-agent {\n width: 1em;\n height: 1em;\n display: inline-block;\n background-size: contain;\n background-repeat: no-repeat;\n background-position: center;\n background-image: url('/assets/icons/my-agent.svg');\n vertical-align: middle;\n}\n\n// GRADIENT TEXT ICON\n.mj-icon-my-agent::before {\n content: \"\u26A1\";\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n}\n*/\n\n/* ============================================\n 3RD PARTY EXAMPLES\n These would typically be in EXTERNAL CSS files\n ============================================ */\n\n/*\n// Example: Acme Corp custom agent icons\n// This would be in acme-corp-styles.css loaded by the application\n\n.acme-icon-analyzer {\n width: 1em;\n height: 1em;\n display: inline-block;\n background-size: contain;\n background-image: url('https://acme.com/icons/analyzer.svg');\n}\n\n.acme-icon-reporter::before {\n content: \"A\";\n font-weight: 800;\n color: #FF6B35;\n}\n*/\n"] }]
177
199
  }], () => [], { suggestions: [{
178
200
  type: Input
179
201
  }], position: [{
@@ -190,5 +212,5 @@ export class MentionDropdownComponent {
190
212
  type: HostListener,
191
213
  args: ['document:keydown', ['$event']]
192
214
  }] }); })();
193
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MentionDropdownComponent, { className: "MentionDropdownComponent", filePath: "src/lib/components/mention/mention-dropdown.component.ts", lineNumber: 20 }); })();
215
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MentionDropdownComponent, { className: "MentionDropdownComponent", filePath: "src/lib/components/mention/mention-dropdown.component.ts", lineNumber: 23 }); })();
194
216
  //# sourceMappingURL=mention-dropdown.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mention-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/mention/mention-dropdown.component.ts","../../../../src/lib/components/mention/mention-dropdown.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mention-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/mention/mention-dropdown.component.ts","../../../../src/lib/components/mention/mention-dropdown.component.html"],"names":[],"mappings":"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"}
@@ -1,22 +1,25 @@
1
- import { EventEmitter, ElementRef, OnInit } from '@angular/core';
1
+ import { EventEmitter, ElementRef, OnInit, OnDestroy } from '@angular/core';
2
2
  import { UserInfo } from '@memberjunction/core';
3
3
  import { ConversationDetailEntity, AIAgentEntityExtended } from '@memberjunction/core-entities';
4
4
  import { DialogService } from '../../services/dialog.service';
5
5
  import { ToastService } from '../../services/toast.service';
6
6
  import { ConversationAgentService } from '../../services/conversation-agent.service';
7
7
  import { ConversationStateService } from '../../services/conversation-state.service';
8
+ import { DataCacheService } from '../../services/data-cache.service';
8
9
  import { ActiveTasksService } from '../../services/active-tasks.service';
9
10
  import { MentionAutocompleteService, MentionSuggestion } from '../../services/mention-autocomplete.service';
10
11
  import { MentionParserService } from '../../services/mention-parser.service';
11
12
  import * as i0 from "@angular/core";
12
- export declare class MessageInputComponent implements OnInit {
13
+ export declare class MessageInputComponent implements OnInit, OnDestroy {
13
14
  private dialogService;
14
15
  private toastService;
15
16
  private agentService;
16
17
  private conversationState;
18
+ private dataCache;
17
19
  private activeTasks;
18
20
  private mentionAutocomplete;
19
21
  private mentionParser;
22
+ private readonly JSON_ARTIFACT_TYPE_ID;
20
23
  conversationId: string;
21
24
  currentUser: UserInfo;
22
25
  disabled: boolean;
@@ -35,6 +38,7 @@ export declare class MessageInputComponent implements OnInit {
35
38
  artifactCreated: EventEmitter<{
36
39
  artifactId: string;
37
40
  versionId: string;
41
+ versionNumber: number;
38
42
  conversationDetailId: string;
39
43
  name: string;
40
44
  }>;
@@ -57,8 +61,23 @@ export declare class MessageInputComponent implements OnInit {
57
61
  mentionDropdownShowAbove: boolean;
58
62
  private mentionStartIndex;
59
63
  private mentionQuery;
60
- constructor(dialogService: DialogService, toastService: ToastService, agentService: ConversationAgentService, conversationState: ConversationStateService, activeTasks: ActiveTasksService, mentionAutocomplete: MentionAutocompleteService, mentionParser: MentionParserService);
64
+ private pushStatusSubscription?;
65
+ private activeTaskExecutionMessageIds;
66
+ constructor(dialogService: DialogService, toastService: ToastService, agentService: ConversationAgentService, conversationState: ConversationStateService, dataCache: DataCacheService, activeTasks: ActiveTasksService, mentionAutocomplete: MentionAutocompleteService, mentionParser: MentionParserService);
61
67
  ngOnInit(): Promise<void>;
68
+ ngOnDestroy(): void;
69
+ /**
70
+ * Subscribe to PubSub for real-time task orchestration progress updates
71
+ */
72
+ private subscribeToPushStatus;
73
+ /**
74
+ * Handle task progress updates from PubSub
75
+ */
76
+ private handleTaskProgress;
77
+ /**
78
+ * Update task execution messages in real-time based on progress updates
79
+ */
80
+ private updateTaskExecutionMessages;
62
81
  get canSend(): boolean;
63
82
  /**
64
83
  * Handle input events to detect @ mentions
@@ -85,6 +104,14 @@ export declare class MessageInputComponent implements OnInit {
85
104
  */
86
105
  closeMentionDropdown(): void;
87
106
  onSend(): Promise<void>;
107
+ /**
108
+ * Safe save for ConversationDetail - prevents overwrites of completed/errored messages
109
+ * Use this ONLY in progress update paths to prevent race conditions
110
+ * @param detail The conversation detail to save
111
+ * @param context Description of who is saving (for logging)
112
+ * @returns true if saved, false if blocked
113
+ */
114
+ private safeSaveConversationDetail;
88
115
  /**
89
116
  * Create a progress callback for agent execution
90
117
  * This callback updates both the active task and the ConversationDetail message
@@ -92,39 +119,49 @@ export declare class MessageInputComponent implements OnInit {
92
119
  */
93
120
  private createProgressCallback;
94
121
  /**
95
- * Process the message through agents (multi-stage: Conversation Manager -> possible sub-agent)
122
+ * Process the message through agents (multi-stage: Sage -> possible sub-agent)
96
123
  * Only called when there's no @mention and no implicit agent context
97
124
  */
98
125
  private processMessageThroughAgent;
99
126
  /**
100
- * Handle sub-agent invocation based on Conversation Manager's payload
127
+ * Handle task graph execution based on Sage's payload
128
+ * Creates tasks and orchestrates their execution
129
+ */
130
+ private handleTaskGraphExecution;
131
+ protected updateConversationDetail(convoDetail: ConversationDetailEntity, message: string, status: 'In-Progress' | 'Complete' | 'Error'): Promise<void>;
132
+ /**
133
+ * Handle single task execution from task graph using direct agent execution
134
+ * Uses the existing agent execution pattern with PubSub support
135
+ */
136
+ private handleSingleTaskExecution;
137
+ /**
138
+ * Handle sub-agent invocation based on Sage's payload
101
139
  * Reuses the existing conversationManagerMessage to avoid creating multiple records
102
140
  */
103
141
  private handleSubAgentInvocation;
104
142
  /**
105
- * Handle silent observation - when Conversation Manager stays silent,
143
+ * Handle silent observation - when Sage stays silent,
106
144
  * check if we should continue with the last agent for iterative refinement
107
145
  */
108
146
  private handleSilentObservation;
109
- /**
110
- * Handle agent response - create AI message from agent result
111
- */
112
- private handleAgentResponse;
113
147
  /**
114
148
  * Invoke an agent directly when mentioned with @ symbol
115
- * Bypasses Conversation Manager completely - no status messages
149
+ * Bypasses Sage completely - no status messages
116
150
  */
117
151
  private invokeAgentDirectly;
118
152
  /**
119
153
  * Continue with the same agent from previous message (implicit continuation)
120
- * Bypasses Conversation Manager - no status messages
154
+ * Bypasses Sage - no status messages
121
155
  */
122
156
  private continueWithAgent;
123
157
  /**
124
158
  * Creates an artifact from an agent's payload and links it to the conversation detail
159
+ * If previousArtifactInfo is provided, creates a new version of the existing artifact
160
+ * Otherwise, creates a new artifact with version 1
125
161
  * @param payload The agent's payload object
126
162
  * @param message The conversation detail message to link to
127
163
  * @param agentId The ID of the agent that produced the payload
164
+ * @param previousArtifactInfo Optional info about previous artifact to create new version
128
165
  */
129
166
  private createArtifactFromPayload;
130
167
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"message-input.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/message/message-input.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-input.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/message/message-input.component.ts"],"names":[],"mappings":"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"}