@memberjunction/ng-conversations 2.117.0 → 2.119.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.
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +7 -1
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.js +14 -18
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +86 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +1042 -255
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +9 -2
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +242 -163
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +11 -11
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +2 -2
- package/dist/lib/components/mention/mention-editor.component.d.ts +21 -0
- package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.js +299 -2
- package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.d.ts +33 -0
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -0
- package/dist/lib/components/message/actionable-commands.component.js +107 -0
- package/dist/lib/components/message/actionable-commands.component.js.map +1 -0
- package/dist/lib/components/message/agent-response-form.component.d.ts +72 -0
- package/dist/lib/components/message/agent-response-form.component.d.ts.map +1 -0
- package/dist/lib/components/message/agent-response-form.component.js +310 -0
- package/dist/lib/components/message/agent-response-form.component.js.map +1 -0
- package/dist/lib/components/message/form-question.component.d.ts +105 -0
- package/dist/lib/components/message/form-question.component.d.ts.map +1 -0
- package/dist/lib/components/message/form-question.component.js +621 -0
- package/dist/lib/components/message/form-question.component.js.map +1 -0
- package/dist/lib/components/message/message-input-box.component.d.ts +12 -0
- package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input-box.component.js +14 -1
- package/dist/lib/components/message/message-input-box.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +3 -3
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +87 -102
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +39 -6
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +492 -197
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +2 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +5 -1
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +10 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +108 -32
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +23 -6
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +128 -52
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +60 -56
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +17 -1
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/collection-view.model.d.ts +30 -0
- package/dist/lib/models/collection-view.model.d.ts.map +1 -0
- package/dist/lib/models/collection-view.model.js +2 -0
- package/dist/lib/models/collection-view.model.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +1 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.d.ts +1 -0
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +4 -1
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +22 -2
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-streaming.service.d.ts +1 -0
- package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-streaming.service.js +11 -26
- package/dist/lib/services/conversation-streaming.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +12 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +41 -0
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts +6 -1
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +114 -34
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +45 -0
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -0
- package/dist/lib/services/ui-command-handler.service.js +95 -0
- package/dist/lib/services/ui-command-handler.service.js.map +1 -0
- package/package.json +15 -14
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
2
3
|
import { Subject } from 'rxjs';
|
|
3
4
|
import { takeUntil } from 'rxjs/operators';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
@@ -20,25 +21,43 @@ function TasksDropdownComponent_div_4_i_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
20
21
|
function TasksDropdownComponent_div_4_i_4_Template(rf, ctx) { if (rf & 1) {
|
|
21
22
|
i0.ɵɵelement(0, "i", 17);
|
|
22
23
|
} }
|
|
24
|
+
function TasksDropdownComponent_div_4_div_10_div_5_img_4_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
i0.ɵɵelement(0, "img", 30);
|
|
26
|
+
} if (rf & 2) {
|
|
27
|
+
const task_r4 = i0.ɵɵnextContext().$implicit;
|
|
28
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
29
|
+
i0.ɵɵproperty("src", ctx_r0.getAgentLogoUrl(task_r4.agentName), i0.ɵɵsanitizeUrl)("alt", task_r4.agentName);
|
|
30
|
+
} }
|
|
31
|
+
function TasksDropdownComponent_div_4_div_10_div_5_i_5_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelement(0, "i");
|
|
33
|
+
} if (rf & 2) {
|
|
34
|
+
const task_r4 = i0.ɵɵnextContext().$implicit;
|
|
35
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
36
|
+
i0.ɵɵclassMap(ctx_r0.getAgentIconClass(task_r4.agentName));
|
|
37
|
+
} }
|
|
23
38
|
function TasksDropdownComponent_div_4_div_10_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
24
39
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
25
40
|
i0.ɵɵelementStart(0, "div", 22);
|
|
26
41
|
i0.ɵɵlistener("click", function TasksDropdownComponent_div_4_div_10_div_5_Template_div_click_0_listener() { const task_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onTaskClick(task_r4)); });
|
|
27
42
|
i0.ɵɵelement(1, "div", 23);
|
|
28
43
|
i0.ɵɵelementStart(2, "div", 24)(3, "div", 25);
|
|
29
|
-
i0.ɵɵ
|
|
30
|
-
i0.ɵɵtext(
|
|
44
|
+
i0.ɵɵtemplate(4, TasksDropdownComponent_div_4_div_10_div_5_img_4_Template, 1, 2, "img", 26)(5, TasksDropdownComponent_div_4_div_10_div_5_i_5_Template, 1, 2, "i", 27);
|
|
45
|
+
i0.ɵɵtext(6);
|
|
31
46
|
i0.ɵɵelementEnd();
|
|
32
|
-
i0.ɵɵelementStart(
|
|
33
|
-
i0.ɵɵtext(
|
|
47
|
+
i0.ɵɵelementStart(7, "div", 28);
|
|
48
|
+
i0.ɵɵtext(8);
|
|
34
49
|
i0.ɵɵelementEnd();
|
|
35
|
-
i0.ɵɵelementStart(
|
|
36
|
-
i0.ɵɵtext(
|
|
50
|
+
i0.ɵɵelementStart(9, "div", 29);
|
|
51
|
+
i0.ɵɵtext(10);
|
|
37
52
|
i0.ɵɵelementEnd()()();
|
|
38
53
|
} if (rf & 2) {
|
|
39
54
|
const task_r4 = ctx.$implicit;
|
|
40
55
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
41
|
-
i0.ɵɵadvance(
|
|
56
|
+
i0.ɵɵadvance(4);
|
|
57
|
+
i0.ɵɵproperty("ngIf", ctx_r0.getAgentLogoUrl(task_r4.agentName));
|
|
58
|
+
i0.ɵɵadvance();
|
|
59
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.getAgentLogoUrl(task_r4.agentName));
|
|
60
|
+
i0.ɵɵadvance();
|
|
42
61
|
i0.ɵɵtextInterpolate1(" ", task_r4.agentName, " ");
|
|
43
62
|
i0.ɵɵadvance(2);
|
|
44
63
|
i0.ɵɵtextInterpolate(ctx_r0.getTrimmedStatus(task_r4.status));
|
|
@@ -51,7 +70,7 @@ function TasksDropdownComponent_div_4_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
51
70
|
i0.ɵɵelementStart(3, "span");
|
|
52
71
|
i0.ɵɵtext(4);
|
|
53
72
|
i0.ɵɵelementEnd()();
|
|
54
|
-
i0.ɵɵtemplate(5, TasksDropdownComponent_div_4_div_10_div_5_Template,
|
|
73
|
+
i0.ɵɵtemplate(5, TasksDropdownComponent_div_4_div_10_div_5_Template, 11, 5, "div", 21);
|
|
55
74
|
i0.ɵɵelementEnd();
|
|
56
75
|
} if (rf & 2) {
|
|
57
76
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -60,9 +79,23 @@ function TasksDropdownComponent_div_4_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
60
79
|
i0.ɵɵadvance();
|
|
61
80
|
i0.ɵɵproperty("ngForOf", ctx_r0.currentConversationTasks);
|
|
62
81
|
} }
|
|
63
|
-
function
|
|
64
|
-
i0.ɵɵ
|
|
65
|
-
|
|
82
|
+
function TasksDropdownComponent_div_4_div_11_div_5_img_4_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelement(0, "img", 30);
|
|
84
|
+
} if (rf & 2) {
|
|
85
|
+
const task_r6 = i0.ɵɵnextContext().$implicit;
|
|
86
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
87
|
+
i0.ɵɵproperty("src", ctx_r0.getAgentLogoUrl(task_r6.agentName), i0.ɵɵsanitizeUrl)("alt", task_r6.agentName);
|
|
88
|
+
} }
|
|
89
|
+
function TasksDropdownComponent_div_4_div_11_div_5_i_5_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
+
i0.ɵɵelement(0, "i");
|
|
91
|
+
} if (rf & 2) {
|
|
92
|
+
const task_r6 = i0.ɵɵnextContext().$implicit;
|
|
93
|
+
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
94
|
+
i0.ɵɵclassMap(ctx_r0.getAgentIconClass(task_r6.agentName));
|
|
95
|
+
} }
|
|
96
|
+
function TasksDropdownComponent_div_4_div_11_div_5_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
+
i0.ɵɵelementStart(0, "div", 37);
|
|
98
|
+
i0.ɵɵelement(1, "i", 38);
|
|
66
99
|
i0.ɵɵtext(2);
|
|
67
100
|
i0.ɵɵelementEnd();
|
|
68
101
|
} if (rf & 2) {
|
|
@@ -72,26 +105,30 @@ function TasksDropdownComponent_div_4_div_11_div_5_div_8_Template(rf, ctx) { if
|
|
|
72
105
|
} }
|
|
73
106
|
function TasksDropdownComponent_div_4_div_11_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
74
107
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
75
|
-
i0.ɵɵelementStart(0, "div",
|
|
108
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
76
109
|
i0.ɵɵlistener("click", function TasksDropdownComponent_div_4_div_11_div_5_Template_div_click_0_listener() { const task_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.onTaskClick(task_r6)); });
|
|
77
110
|
i0.ɵɵelement(1, "div", 23);
|
|
78
111
|
i0.ɵɵelementStart(2, "div", 24)(3, "div", 25);
|
|
79
|
-
i0.ɵɵ
|
|
80
|
-
i0.ɵɵtext(
|
|
81
|
-
i0.ɵɵelementStart(
|
|
82
|
-
i0.ɵɵelement(
|
|
112
|
+
i0.ɵɵtemplate(4, TasksDropdownComponent_div_4_div_11_div_5_img_4_Template, 1, 2, "img", 26)(5, TasksDropdownComponent_div_4_div_11_div_5_i_5_Template, 1, 2, "i", 27);
|
|
113
|
+
i0.ɵɵtext(6);
|
|
114
|
+
i0.ɵɵelementStart(7, "span", 34);
|
|
115
|
+
i0.ɵɵelement(8, "i", 35);
|
|
83
116
|
i0.ɵɵelementEnd()();
|
|
84
|
-
i0.ɵɵtemplate(
|
|
85
|
-
i0.ɵɵelementStart(
|
|
86
|
-
i0.ɵɵtext(
|
|
117
|
+
i0.ɵɵtemplate(9, TasksDropdownComponent_div_4_div_11_div_5_div_9_Template, 3, 1, "div", 36);
|
|
118
|
+
i0.ɵɵelementStart(10, "div", 28);
|
|
119
|
+
i0.ɵɵtext(11);
|
|
87
120
|
i0.ɵɵelementEnd();
|
|
88
|
-
i0.ɵɵelementStart(
|
|
89
|
-
i0.ɵɵtext(
|
|
121
|
+
i0.ɵɵelementStart(12, "div", 29);
|
|
122
|
+
i0.ɵɵtext(13);
|
|
90
123
|
i0.ɵɵelementEnd()()();
|
|
91
124
|
} if (rf & 2) {
|
|
92
125
|
const task_r6 = ctx.$implicit;
|
|
93
126
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
94
|
-
i0.ɵɵadvance(
|
|
127
|
+
i0.ɵɵadvance(4);
|
|
128
|
+
i0.ɵɵproperty("ngIf", ctx_r0.getAgentLogoUrl(task_r6.agentName));
|
|
129
|
+
i0.ɵɵadvance();
|
|
130
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.getAgentLogoUrl(task_r6.agentName));
|
|
131
|
+
i0.ɵɵadvance();
|
|
95
132
|
i0.ɵɵtextInterpolate1(" ", task_r6.agentName, " ");
|
|
96
133
|
i0.ɵɵadvance(3);
|
|
97
134
|
i0.ɵɵproperty("ngIf", task_r6.conversationName);
|
|
@@ -102,11 +139,11 @@ function TasksDropdownComponent_div_4_div_11_div_5_Template(rf, ctx) { if (rf &
|
|
|
102
139
|
} }
|
|
103
140
|
function TasksDropdownComponent_div_4_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
104
141
|
i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
|
|
105
|
-
i0.ɵɵelement(2, "i",
|
|
142
|
+
i0.ɵɵelement(2, "i", 31);
|
|
106
143
|
i0.ɵɵelementStart(3, "span");
|
|
107
144
|
i0.ɵɵtext(4);
|
|
108
145
|
i0.ɵɵelementEnd()();
|
|
109
|
-
i0.ɵɵtemplate(5, TasksDropdownComponent_div_4_div_11_div_5_Template,
|
|
146
|
+
i0.ɵɵtemplate(5, TasksDropdownComponent_div_4_div_11_div_5_Template, 14, 6, "div", 32);
|
|
110
147
|
i0.ɵɵelementEnd();
|
|
111
148
|
} if (rf & 2) {
|
|
112
149
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -116,8 +153,8 @@ function TasksDropdownComponent_div_4_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
116
153
|
i0.ɵɵproperty("ngForOf", ctx_r0.otherConversationTasks);
|
|
117
154
|
} }
|
|
118
155
|
function TasksDropdownComponent_div_4_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
119
|
-
i0.ɵɵelementStart(0, "div",
|
|
120
|
-
i0.ɵɵelement(1, "i",
|
|
156
|
+
i0.ɵɵelementStart(0, "div", 39);
|
|
157
|
+
i0.ɵɵelement(1, "i", 40);
|
|
121
158
|
i0.ɵɵelementStart(2, "p");
|
|
122
159
|
i0.ɵɵtext(3, "No active tasks");
|
|
123
160
|
i0.ɵɵelementEnd()();
|
|
@@ -223,8 +260,37 @@ export class TasksDropdownComponent {
|
|
|
223
260
|
}
|
|
224
261
|
return status.substring(0, maxLength) + '...';
|
|
225
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Get agent icon class by looking up agent in AIEngineBase cache
|
|
265
|
+
* Similar to message-item component's aiAgentInfo getter
|
|
266
|
+
*/
|
|
267
|
+
getAgentIconClass(agentName) {
|
|
268
|
+
// Look up agent from AIEngineBase cache by name
|
|
269
|
+
if (AIEngineBase.Instance?.Agents) {
|
|
270
|
+
const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);
|
|
271
|
+
if (agent?.IconClass) {
|
|
272
|
+
return agent.IconClass;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Default fallback icon
|
|
276
|
+
return 'fas fa-robot';
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get agent logo URL by looking up agent in AIEngineBase cache
|
|
280
|
+
* Returns null if no logo URL is available
|
|
281
|
+
*/
|
|
282
|
+
getAgentLogoUrl(agentName) {
|
|
283
|
+
// Look up agent from AIEngineBase cache by name
|
|
284
|
+
if (AIEngineBase.Instance?.Agents) {
|
|
285
|
+
const agent = AIEngineBase.Instance.Agents.find(a => a.Name === agentName);
|
|
286
|
+
if (agent?.LogoURL) {
|
|
287
|
+
return agent.LogoURL;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
226
292
|
static ɵfac = function TasksDropdownComponent_Factory(t) { return new (t || TasksDropdownComponent)(i0.ɵɵdirectiveInject(i1.ActiveTasksService), i0.ɵɵdirectiveInject(i2.ConversationStateService)); };
|
|
227
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TasksDropdownComponent, selectors: [["mj-tasks-dropdown"]], inputs: { currentUser: "currentUser" }, outputs: { taskClicked: "taskClicked", navigateToConversation: "navigateToConversation" }, decls: 5, vars: 7, consts: [[1, "tasks-dropdown-container"], [1, "active-tasks-btn", 3, "click", "title"], [1, "fas", "fa-bolt"], ["class", "task-count-badge", 4, "ngIf"], ["class", "active-tasks-dropdown", 4, "ngIf"], [1, "task-count-badge"], [1, "active-tasks-dropdown"], [1, "dropdown-header"], [1, "header-left"], ["class", "fas fa-circle-notch fa-spin", 4, "ngIf"], ["class", "fas fa-tasks", 4, "ngIf"], [1, "close-btn", 3, "click"], [1, "fas", "fa-times"], [1, "dropdown-content"], ["class", "section", 4, "ngIf"], ["class", "no-tasks", 4, "ngIf"], [1, "fas", "fa-circle-notch", "fa-spin"], [1, "fas", "fa-tasks"], [1, "section"], [1, "section-header"], [1, "fas", "fa-comment"], ["class", "active-task-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "active-task-item", 3, "click"], [1, "task-status-indicator", "active"], [1, "task-content"], [1, "task-title"], [
|
|
293
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TasksDropdownComponent, selectors: [["mj-tasks-dropdown"]], inputs: { currentUser: "currentUser" }, outputs: { taskClicked: "taskClicked", navigateToConversation: "navigateToConversation" }, decls: 5, vars: 7, consts: [[1, "tasks-dropdown-container"], [1, "active-tasks-btn", 3, "click", "title"], [1, "fas", "fa-bolt"], ["class", "task-count-badge", 4, "ngIf"], ["class", "active-tasks-dropdown", 4, "ngIf"], [1, "task-count-badge"], [1, "active-tasks-dropdown"], [1, "dropdown-header"], [1, "header-left"], ["class", "fas fa-circle-notch fa-spin", 4, "ngIf"], ["class", "fas fa-tasks", 4, "ngIf"], [1, "close-btn", 3, "click"], [1, "fas", "fa-times"], [1, "dropdown-content"], ["class", "section", 4, "ngIf"], ["class", "no-tasks", 4, "ngIf"], [1, "fas", "fa-circle-notch", "fa-spin"], [1, "fas", "fa-tasks"], [1, "section"], [1, "section-header"], [1, "fas", "fa-comment"], ["class", "active-task-item", 3, "click", 4, "ngFor", "ngForOf"], [1, "active-task-item", 3, "click"], [1, "task-status-indicator", "active"], [1, "task-content"], [1, "task-title"], ["class", "agent-logo", 3, "src", "alt", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "task-status-text"], [1, "task-elapsed"], [1, "agent-logo", 3, "src", "alt"], [1, "fas", "fa-comments"], ["class", "active-task-item clickable", 3, "click", 4, "ngFor", "ngForOf"], [1, "active-task-item", "clickable", 3, "click"], [1, "go-btn"], [1, "fas", "fa-arrow-right"], ["class", "task-conversation", 4, "ngIf"], [1, "task-conversation"], [1, "fas", "fa-message"], [1, "no-tasks"], [1, "fas", "fa-check-circle"]], template: function TasksDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
228
294
|
i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
|
|
229
295
|
i0.ɵɵlistener("click", function TasksDropdownComponent_Template_button_click_1_listener() { return ctx.toggleDropdown(); });
|
|
230
296
|
i0.ɵɵelement(2, "i", 2);
|
|
@@ -240,7 +306,7 @@ export class TasksDropdownComponent {
|
|
|
240
306
|
i0.ɵɵproperty("ngIf", ctx.allTasks.length > 0);
|
|
241
307
|
i0.ɵɵadvance();
|
|
242
308
|
i0.ɵɵproperty("ngIf", ctx.isOpen);
|
|
243
|
-
} }, dependencies: [i3.NgForOf, i3.NgIf], styles: [".tasks-dropdown-container[_ngcontent-%COMP%] {\n position: relative;\n }\n\n .active-tasks-btn[_ngcontent-%COMP%] {\n background: transparent;\n color: #6B7280;\n padding: 8px 12px;\n border-radius: 6px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .active-tasks-btn[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n }\n\n .active-tasks-btn.active[_ngcontent-%COMP%] {\n background: #F9FAFB;\n color: #111827;\n }\n\n .task-count-badge[_ngcontent-%COMP%] {\n background: #EF4444;\n color: white;\n padding: 2px 5px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n line-height: 1;\n box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 420px;\n max-width: 500px;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent, #1e40af);\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 12px;\n border-bottom: 1px solid #F3F4F6;\n }\n\n .section[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n margin-bottom: 8px;\n transition: all 0.2s ease;\n }\n\n .active-task-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n\n .active-task-item.clickable[_ngcontent-%COMP%]:hover {\n background: #EEF2FF;\n border-color: #C7D2FE;\n transform: translateX(2px);\n }\n\n .active-task-item[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator[_ngcontent-%COMP%] {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active[_ngcontent-%COMP%] {\n background: #3B82F6;\n animation: _ngcontent-%COMP%_pulse 2s ease-in-out infinite;\n }\n\n @keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3B82F6;\n font-size: 12px;\n }\n\n .go-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n color: #3B82F6;\n font-size: 10px;\n opacity: 0.7;\n }\n\n .active-task-item.clickable[_ngcontent-%COMP%]:hover .go-btn[_ngcontent-%COMP%] {\n opacity: 1;\n }\n\n .task-conversation[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #9CA3AF;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .task-conversation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6B7280;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #3B82F6;\n font-weight: 600;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n padding: 40px 16px;\n text-align: center;\n color: #9CA3AF;\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n color: #10B981;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n \n\n @media (max-width: 768px) {\n .active-tasks-btn[_ngcontent-%COMP%] {\n padding: 6px 10px;\n font-size: 12px;\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n position: fixed;\n top: auto;\n right: 8px;\n left: 8px;\n bottom: 8px;\n min-width: unset;\n max-width: unset;\n max-height: 60vh;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: calc(60vh - 48px);\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 10px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n font-size: 11px;\n margin-bottom: 10px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n padding: 8px 10px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n }\n\n \n\n @media (max-width: 480px) {\n .active-tasks-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n right: 4px;\n left: 4px;\n bottom: 4px;\n max-height: 70vh;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 8px 10px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: calc(70vh - 44px);\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 8px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-bottom: 8px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n padding: 6px 8px;\n gap: 8px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 9px;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n padding: 30px 12px;\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n }"] });
|
|
309
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf], styles: [".tasks-dropdown-container[_ngcontent-%COMP%] {\n position: relative;\n }\n\n .active-tasks-btn[_ngcontent-%COMP%] {\n background: transparent;\n color: #6B7280;\n padding: 8px 12px;\n border-radius: 6px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .active-tasks-btn[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n }\n\n .active-tasks-btn.active[_ngcontent-%COMP%] {\n background: #F9FAFB;\n color: #111827;\n }\n\n .task-count-badge[_ngcontent-%COMP%] {\n background: #EF4444;\n color: white;\n padding: 2px 5px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n line-height: 1;\n box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 420px;\n max-width: 500px;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent, #1e40af);\n }\n\n .close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 12px;\n border-bottom: 1px solid #F3F4F6;\n }\n\n .section[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n margin-bottom: 8px;\n transition: all 0.2s ease;\n }\n\n .active-task-item.clickable[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n\n .active-task-item.clickable[_ngcontent-%COMP%]:hover {\n background: #EEF2FF;\n border-color: #C7D2FE;\n transform: translateX(2px);\n }\n\n .active-task-item[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator[_ngcontent-%COMP%] {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active[_ngcontent-%COMP%] {\n background: #3B82F6;\n animation: _ngcontent-%COMP%_pulse 2s ease-in-out infinite;\n }\n\n @keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3B82F6;\n font-size: 12px;\n }\n\n .task-title[_ngcontent-%COMP%] .agent-logo[_ngcontent-%COMP%] {\n width: 14px;\n height: 14px;\n object-fit: contain;\n flex-shrink: 0;\n }\n\n .go-btn[_ngcontent-%COMP%] {\n margin-left: auto;\n color: #3B82F6;\n font-size: 10px;\n opacity: 0.7;\n }\n\n .active-task-item.clickable[_ngcontent-%COMP%]:hover .go-btn[_ngcontent-%COMP%] {\n opacity: 1;\n }\n\n .task-conversation[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #9CA3AF;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .task-conversation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6B7280;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #3B82F6;\n font-weight: 600;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n padding: 40px 16px;\n text-align: center;\n color: #9CA3AF;\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n color: #10B981;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n }\n\n \n\n @media (max-width: 768px) {\n .active-tasks-btn[_ngcontent-%COMP%] {\n padding: 6px 10px;\n font-size: 12px;\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n position: fixed;\n top: auto;\n right: 8px;\n left: 8px;\n bottom: 8px;\n min-width: unset;\n max-width: unset;\n max-height: 60vh;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: calc(60vh - 48px);\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 10px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n font-size: 11px;\n margin-bottom: 10px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n padding: 8px 10px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n }\n\n \n\n @media (max-width: 480px) {\n .active-tasks-btn[_ngcontent-%COMP%] {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .active-tasks-dropdown[_ngcontent-%COMP%] {\n right: 4px;\n left: 4px;\n bottom: 4px;\n max-height: 70vh;\n }\n\n .dropdown-header[_ngcontent-%COMP%] {\n padding: 8px 10px;\n }\n\n .header-left[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n\n .dropdown-content[_ngcontent-%COMP%] {\n max-height: calc(70vh - 44px);\n }\n\n .section[_ngcontent-%COMP%] {\n padding: 8px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-bottom: 8px;\n }\n\n .active-task-item[_ngcontent-%COMP%] {\n padding: 6px 8px;\n gap: 8px;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n\n .task-status-text[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .task-elapsed[_ngcontent-%COMP%] {\n font-size: 9px;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n padding: 30px 12px;\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n }\n }"] });
|
|
244
310
|
}
|
|
245
311
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TasksDropdownComponent, [{
|
|
246
312
|
type: Component,
|
|
@@ -281,7 +347,12 @@ export class TasksDropdownComponent {
|
|
|
281
347
|
<div class="task-status-indicator active"></div>
|
|
282
348
|
<div class="task-content">
|
|
283
349
|
<div class="task-title">
|
|
284
|
-
<
|
|
350
|
+
<img *ngIf="getAgentLogoUrl(task.agentName)"
|
|
351
|
+
[src]="getAgentLogoUrl(task.agentName)"
|
|
352
|
+
class="agent-logo"
|
|
353
|
+
[alt]="task.agentName" />
|
|
354
|
+
<i *ngIf="!getAgentLogoUrl(task.agentName)"
|
|
355
|
+
[class]="getAgentIconClass(task.agentName)"></i>
|
|
285
356
|
{{ task.agentName }}
|
|
286
357
|
</div>
|
|
287
358
|
<div class="task-status-text">{{ getTrimmedStatus(task.status) }}</div>
|
|
@@ -302,7 +373,12 @@ export class TasksDropdownComponent {
|
|
|
302
373
|
<div class="task-status-indicator active"></div>
|
|
303
374
|
<div class="task-content">
|
|
304
375
|
<div class="task-title">
|
|
305
|
-
<
|
|
376
|
+
<img *ngIf="getAgentLogoUrl(task.agentName)"
|
|
377
|
+
[src]="getAgentLogoUrl(task.agentName)"
|
|
378
|
+
class="agent-logo"
|
|
379
|
+
[alt]="task.agentName" />
|
|
380
|
+
<i *ngIf="!getAgentLogoUrl(task.agentName)"
|
|
381
|
+
[class]="getAgentIconClass(task.agentName)"></i>
|
|
306
382
|
{{ task.agentName }}
|
|
307
383
|
<span class="go-btn">
|
|
308
384
|
<i class="fas fa-arrow-right"></i>
|
|
@@ -326,7 +402,7 @@ export class TasksDropdownComponent {
|
|
|
326
402
|
</div>
|
|
327
403
|
</div>
|
|
328
404
|
</div>
|
|
329
|
-
`, styles: ["\n .tasks-dropdown-container {\n position: relative;\n }\n\n .active-tasks-btn {\n background: transparent;\n color: #6B7280;\n padding: 8px 12px;\n border-radius: 6px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .active-tasks-btn:hover {\n background: #F9FAFB;\n color: #111827;\n }\n\n .active-tasks-btn.active {\n background: #F9FAFB;\n color: #111827;\n }\n\n .task-count-badge {\n background: #EF4444;\n color: white;\n padding: 2px 5px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n line-height: 1;\n box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n }\n\n .active-tasks-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 420px;\n max-width: 500px;\n }\n\n .dropdown-header {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left i {\n color: var(--accent, #1e40af);\n }\n\n .close-btn {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section {\n padding: 12px;\n border-bottom: 1px solid #F3F4F6;\n }\n\n .section:last-child {\n border-bottom: none;\n }\n\n .section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header i {\n font-size: 11px;\n }\n\n .active-task-item {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n margin-bottom: 8px;\n transition: all 0.2s ease;\n }\n\n .active-task-item.clickable {\n cursor: pointer;\n }\n\n .active-task-item.clickable:hover {\n background: #EEF2FF;\n border-color: #C7D2FE;\n transform: translateX(2px);\n }\n\n .active-task-item:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active {\n background: #3B82F6;\n animation: pulse 2s ease-in-out infinite;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title i {\n color: #3B82F6;\n font-size: 12px;\n }\n\n .go-btn {\n margin-left: auto;\n color: #3B82F6;\n font-size: 10px;\n opacity: 0.7;\n }\n\n .active-task-item.clickable:hover .go-btn {\n opacity: 1;\n }\n\n .task-conversation {\n font-size: 11px;\n color: #9CA3AF;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .task-conversation i {\n font-size: 10px;\n }\n\n .task-status-text {\n font-size: 12px;\n color: #6B7280;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed {\n font-size: 11px;\n color: #3B82F6;\n font-weight: 600;\n }\n\n .no-tasks {\n padding: 40px 16px;\n text-align: center;\n color: #9CA3AF;\n }\n\n .no-tasks i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n color: #10B981;\n }\n\n .no-tasks p {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget:last-child {\n margin-bottom: 0;\n }\n\n /* Mobile adjustments: 481px - 768px */\n @media (max-width: 768px) {\n .active-tasks-btn {\n padding: 6px 10px;\n font-size: 12px;\n }\n\n .active-tasks-dropdown {\n position: fixed;\n top: auto;\n right: 8px;\n left: 8px;\n bottom: 8px;\n min-width: unset;\n max-width: unset;\n max-height: 60vh;\n }\n\n .dropdown-header {\n padding: 10px 12px;\n }\n\n .dropdown-content {\n max-height: calc(60vh - 48px);\n }\n\n .section {\n padding: 10px;\n }\n\n .section-header {\n font-size: 11px;\n margin-bottom: 10px;\n }\n\n .active-task-item {\n padding: 8px 10px;\n }\n\n .task-title {\n font-size: 13px;\n }\n\n .task-status-text {\n font-size: 11px;\n }\n\n .task-elapsed {\n font-size: 10px;\n }\n }\n\n /* Small Phone adjustments: <= 480px */\n @media (max-width: 480px) {\n .active-tasks-btn {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .active-tasks-dropdown {\n right: 4px;\n left: 4px;\n bottom: 4px;\n max-height: 70vh;\n }\n\n .dropdown-header {\n padding: 8px 10px;\n }\n\n .header-left {\n font-size: 13px;\n }\n\n .dropdown-content {\n max-height: calc(70vh - 44px);\n }\n\n .section {\n padding: 8px;\n }\n\n .section-header {\n font-size: 10px;\n margin-bottom: 8px;\n }\n\n .active-task-item {\n padding: 6px 8px;\n gap: 8px;\n }\n\n .task-title {\n font-size: 12px;\n }\n\n .task-status-text {\n font-size: 10px;\n }\n\n .task-elapsed {\n font-size: 9px;\n }\n\n .no-tasks {\n padding: 30px 12px;\n }\n\n .no-tasks i {\n font-size: 28px;\n }\n\n .no-tasks p {\n font-size: 13px;\n }\n }\n "] }]
|
|
405
|
+
`, styles: ["\n .tasks-dropdown-container {\n position: relative;\n }\n\n .active-tasks-btn {\n background: transparent;\n color: #6B7280;\n padding: 8px 12px;\n border-radius: 6px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n transition: all 0.2s;\n }\n\n .active-tasks-btn:hover {\n background: #F9FAFB;\n color: #111827;\n }\n\n .active-tasks-btn.active {\n background: #F9FAFB;\n color: #111827;\n }\n\n .task-count-badge {\n background: #EF4444;\n color: white;\n padding: 2px 5px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n line-height: 1;\n box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n }\n\n .active-tasks-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 1000;\n min-width: 420px;\n max-width: 500px;\n }\n\n .dropdown-header {\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n color: #111827;\n }\n\n .header-left i {\n color: var(--accent, #1e40af);\n }\n\n .close-btn {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n }\n\n .close-btn:hover {\n background: #F3F4F6;\n color: #111827;\n }\n\n .dropdown-content {\n max-height: 500px;\n overflow-y: auto;\n }\n\n .section {\n padding: 12px;\n border-bottom: 1px solid #F3F4F6;\n }\n\n .section:last-child {\n border-bottom: none;\n }\n\n .section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n padding: 0 4px;\n }\n\n .section-header i {\n font-size: 11px;\n }\n\n .active-task-item {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 6px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n margin-bottom: 8px;\n transition: all 0.2s ease;\n }\n\n .active-task-item.clickable {\n cursor: pointer;\n }\n\n .active-task-item.clickable:hover {\n background: #EEF2FF;\n border-color: #C7D2FE;\n transform: translateX(2px);\n }\n\n .active-task-item:last-child {\n margin-bottom: 0;\n }\n\n .task-status-indicator {\n width: 4px;\n border-radius: 2px;\n flex-shrink: 0;\n }\n\n .task-status-indicator.active {\n background: #3B82F6;\n animation: pulse 2s ease-in-out infinite;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n .task-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .task-title {\n font-size: 14px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title i {\n color: #3B82F6;\n font-size: 12px;\n }\n\n .task-title .agent-logo {\n width: 14px;\n height: 14px;\n object-fit: contain;\n flex-shrink: 0;\n }\n\n .go-btn {\n margin-left: auto;\n color: #3B82F6;\n font-size: 10px;\n opacity: 0.7;\n }\n\n .active-task-item.clickable:hover .go-btn {\n opacity: 1;\n }\n\n .task-conversation {\n font-size: 11px;\n color: #9CA3AF;\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .task-conversation i {\n font-size: 10px;\n }\n\n .task-status-text {\n font-size: 12px;\n color: #6B7280;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .task-elapsed {\n font-size: 11px;\n color: #3B82F6;\n font-weight: 600;\n }\n\n .no-tasks {\n padding: 40px 16px;\n text-align: center;\n color: #9CA3AF;\n }\n\n .no-tasks i {\n font-size: 32px;\n margin-bottom: 8px;\n opacity: 0.5;\n color: #10B981;\n }\n\n .no-tasks p {\n margin: 0;\n font-size: 14px;\n }\n\n mj-task-widget {\n display: block;\n margin-bottom: 8px;\n }\n\n mj-task-widget:last-child {\n margin-bottom: 0;\n }\n\n /* Mobile adjustments: 481px - 768px */\n @media (max-width: 768px) {\n .active-tasks-btn {\n padding: 6px 10px;\n font-size: 12px;\n }\n\n .active-tasks-dropdown {\n position: fixed;\n top: auto;\n right: 8px;\n left: 8px;\n bottom: 8px;\n min-width: unset;\n max-width: unset;\n max-height: 60vh;\n }\n\n .dropdown-header {\n padding: 10px 12px;\n }\n\n .dropdown-content {\n max-height: calc(60vh - 48px);\n }\n\n .section {\n padding: 10px;\n }\n\n .section-header {\n font-size: 11px;\n margin-bottom: 10px;\n }\n\n .active-task-item {\n padding: 8px 10px;\n }\n\n .task-title {\n font-size: 13px;\n }\n\n .task-status-text {\n font-size: 11px;\n }\n\n .task-elapsed {\n font-size: 10px;\n }\n }\n\n /* Small Phone adjustments: <= 480px */\n @media (max-width: 480px) {\n .active-tasks-btn {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .active-tasks-dropdown {\n right: 4px;\n left: 4px;\n bottom: 4px;\n max-height: 70vh;\n }\n\n .dropdown-header {\n padding: 8px 10px;\n }\n\n .header-left {\n font-size: 13px;\n }\n\n .dropdown-content {\n max-height: calc(70vh - 44px);\n }\n\n .section {\n padding: 8px;\n }\n\n .section-header {\n font-size: 10px;\n margin-bottom: 8px;\n }\n\n .active-task-item {\n padding: 6px 8px;\n gap: 8px;\n }\n\n .task-title {\n font-size: 12px;\n }\n\n .task-status-text {\n font-size: 10px;\n }\n\n .task-elapsed {\n font-size: 9px;\n }\n\n .no-tasks {\n padding: 30px 12px;\n }\n\n .no-tasks i {\n font-size: 28px;\n }\n\n .no-tasks p {\n font-size: 13px;\n }\n }\n "] }]
|
|
330
406
|
}], () => [{ type: i1.ActiveTasksService }, { type: i2.ConversationStateService }], { currentUser: [{
|
|
331
407
|
type: Input
|
|
332
408
|
}], taskClicked: [{
|
|
@@ -334,5 +410,5 @@ export class TasksDropdownComponent {
|
|
|
334
410
|
}], navigateToConversation: [{
|
|
335
411
|
type: Output
|
|
336
412
|
}] }); })();
|
|
337
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TasksDropdownComponent, { className: "TasksDropdownComponent", filePath: "src/lib/components/tasks/tasks-dropdown.component.ts", lineNumber:
|
|
413
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TasksDropdownComponent, { className: "TasksDropdownComponent", filePath: "src/lib/components/tasks/tasks-dropdown.component.ts", lineNumber: 488 }); })();
|
|
338
414
|
//# sourceMappingURL=tasks-dropdown.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;AAI1F,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;;;;;IAiBnC,+BAA2D;IAAA,YAAqB;IAAA,iBAAO;;;IAA5B,cAAqB;IAArB,4CAAqB;;;IAM5E,wBAAuE;;;IACvE,wBAA0D;;;;
|
|
1
|
+
{"version":3,"file":"tasks-dropdown.component.js","sourceRoot":"","sources":["../../../../src/lib/components/tasks/tasks-dropdown.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,11 @@ import { CollectionStateService } from '../../services/collection-state.service'
|
|
|
8
8
|
import { ArtifactPermissionService } from '../../services/artifact-permission.service';
|
|
9
9
|
import { MentionAutocompleteService } from '../../services/mention-autocomplete.service';
|
|
10
10
|
import { ConversationStreamingService } from '../../services/conversation-streaming.service';
|
|
11
|
+
import { UICommandHandlerService } from '../../services/ui-command-handler.service';
|
|
11
12
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
12
13
|
import { NavigationTab, WorkspaceLayout } from '../../models/conversation-state.model';
|
|
13
14
|
import { SearchResult } from '../../services/search.service';
|
|
15
|
+
import { ActionableCommand, AutomaticCommand } from '@memberjunction/ai-core-plus';
|
|
14
16
|
import * as i0 from "@angular/core";
|
|
15
17
|
/**
|
|
16
18
|
* Top-level workspace component for conversations
|
|
@@ -25,6 +27,7 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
25
27
|
private mentionAutocompleteService;
|
|
26
28
|
private notificationService;
|
|
27
29
|
private streamingService;
|
|
30
|
+
private uiCommandHandler;
|
|
28
31
|
private cdr;
|
|
29
32
|
environmentId: string;
|
|
30
33
|
initialConversationId?: string;
|
|
@@ -41,10 +44,6 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
41
44
|
get activeTaskId(): string | undefined;
|
|
42
45
|
conversationChanged: EventEmitter<ConversationEntity>;
|
|
43
46
|
artifactOpened: EventEmitter<ArtifactEntity>;
|
|
44
|
-
openEntityRecord: EventEmitter<{
|
|
45
|
-
entityName: string;
|
|
46
|
-
compositeKey: CompositeKey;
|
|
47
|
-
}>;
|
|
48
47
|
navigationChanged: EventEmitter<{
|
|
49
48
|
tab: 'conversations' | 'collections' | 'tasks';
|
|
50
49
|
conversationId?: string | undefined;
|
|
@@ -53,6 +52,8 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
53
52
|
taskId?: string | undefined;
|
|
54
53
|
}>;
|
|
55
54
|
newConversationStarted: EventEmitter<void>;
|
|
55
|
+
actionableCommandExecuted: EventEmitter<ActionableCommand>;
|
|
56
|
+
automaticCommandExecuted: EventEmitter<AutomaticCommand>;
|
|
56
57
|
activeTab: NavigationTab;
|
|
57
58
|
isSidebarVisible: boolean;
|
|
58
59
|
isArtifactPanelOpen: boolean;
|
|
@@ -72,6 +73,8 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
72
73
|
private sidebarResizeStartX;
|
|
73
74
|
private sidebarResizeStartWidth;
|
|
74
75
|
artifactPanelWidth: number;
|
|
76
|
+
isArtifactPanelMaximized: boolean;
|
|
77
|
+
private artifactPanelWidthBeforeMaximize;
|
|
75
78
|
private isArtifactPanelResizing;
|
|
76
79
|
private artifactPanelResizeStartX;
|
|
77
80
|
private artifactPanelResizeStartWidth;
|
|
@@ -83,7 +86,7 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
83
86
|
private readonly SIDEBAR_WIDTH_KEY;
|
|
84
87
|
private readonly ARTIFACT_PANEL_WIDTH_KEY;
|
|
85
88
|
tasksFilter: string;
|
|
86
|
-
constructor(conversationState: ConversationStateService, artifactState: ArtifactStateService, collectionState: CollectionStateService, artifactPermissionService: ArtifactPermissionService, mentionAutocompleteService: MentionAutocompleteService, notificationService: MJNotificationService, streamingService: ConversationStreamingService, cdr: ChangeDetectorRef);
|
|
89
|
+
constructor(conversationState: ConversationStateService, artifactState: ArtifactStateService, collectionState: CollectionStateService, artifactPermissionService: ArtifactPermissionService, mentionAutocompleteService: MentionAutocompleteService, notificationService: MJNotificationService, streamingService: ConversationStreamingService, uiCommandHandler: UICommandHandlerService, cdr: ChangeDetectorRef);
|
|
87
90
|
ngOnInit(): Promise<void>;
|
|
88
91
|
/**
|
|
89
92
|
* Builds the SQL filter for tasks in conversations the user has access to
|
|
@@ -125,6 +128,10 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
125
128
|
private saveSidebarWidth;
|
|
126
129
|
private loadArtifactPanelWidth;
|
|
127
130
|
private saveArtifactPanelWidth;
|
|
131
|
+
/**
|
|
132
|
+
* Toggle maximize/restore state for artifact panel
|
|
133
|
+
*/
|
|
134
|
+
toggleMaximizeArtifactPanel(): void;
|
|
128
135
|
onConversationRenamed(event: {
|
|
129
136
|
conversationId: string;
|
|
130
137
|
name: string;
|
|
@@ -172,7 +179,17 @@ export declare class ConversationWorkspaceComponent extends BaseAngularComponent
|
|
|
172
179
|
* Handle successful share - refresh permissions
|
|
173
180
|
*/
|
|
174
181
|
onArtifactShared(): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Handle actionable command execution from child components
|
|
184
|
+
* Bubbles up to host application for handling
|
|
185
|
+
*/
|
|
186
|
+
onActionableCommand(command: ActionableCommand): void;
|
|
187
|
+
/**
|
|
188
|
+
* Handle automatic command execution from child components
|
|
189
|
+
* Bubbles up to host application for handling
|
|
190
|
+
*/
|
|
191
|
+
onAutomaticCommand(command: AutomaticCommand): void;
|
|
175
192
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConversationWorkspaceComponent, never>;
|
|
176
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConversationWorkspaceComponent, "mj-conversation-workspace", never, { "environmentId": { "alias": "environmentId"; "required": false; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "activeContext": { "alias": "activeContext"; "required": false; }; "contextItemId": { "alias": "contextItemId"; "required": false; }; "activeTabInput": { "alias": "activeTabInput"; "required": false; }; "activeConversationInput": { "alias": "activeConversationInput"; "required": false; }; "activeCollectionInput": { "alias": "activeCollectionInput"; "required": false; }; "activeVersionIdInput": { "alias": "activeVersionIdInput"; "required": false; }; "activeTaskInput": { "alias": "activeTaskInput"; "required": false; }; }, { "conversationChanged": "conversationChanged"; "artifactOpened": "artifactOpened"; "
|
|
193
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConversationWorkspaceComponent, "mj-conversation-workspace", never, { "environmentId": { "alias": "environmentId"; "required": false; }; "initialConversationId": { "alias": "initialConversationId"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "activeContext": { "alias": "activeContext"; "required": false; }; "contextItemId": { "alias": "contextItemId"; "required": false; }; "activeTabInput": { "alias": "activeTabInput"; "required": false; }; "activeConversationInput": { "alias": "activeConversationInput"; "required": false; }; "activeCollectionInput": { "alias": "activeCollectionInput"; "required": false; }; "activeVersionIdInput": { "alias": "activeVersionIdInput"; "required": false; }; "activeTaskInput": { "alias": "activeTaskInput"; "required": false; }; }, { "conversationChanged": "conversationChanged"; "artifactOpened": "artifactOpened"; "navigationChanged": "navigationChanged"; "newConversationStarted": "newConversationStarted"; "actionableCommandExecuted": "actionableCommandExecuted"; "automaticCommandExecuted": "automaticCommandExecuted"; }, never, never, false, never>;
|
|
177
194
|
}
|
|
178
195
|
//# sourceMappingURL=conversation-workspace.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-workspace.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/workspace/conversation-workspace.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EACZ,MAAM,EACN,SAAS,EACT,OAAO,EACP,iBAAiB,EAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"conversation-workspace.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/workspace/conversation-workspace.component.ts"],"names":[],"mappings":"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"}
|