@memberjunction/ng-conversations 2.104.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/README.md +197 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
- package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
- package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
- package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
- package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
- package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
- package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
- package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
- package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
- package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-tree.component.js +482 -0
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
- package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collection-view.component.js +254 -0
- package/dist/lib/components/collection/collection-view.component.js.map +1 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/collection/collections-full-view.component.js +578 -0
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
- package/dist/lib/components/conversation/conversation-list.component.js +255 -0
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
- package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
- package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
- package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
- package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
- package/dist/lib/components/export/export-modal.component.d.ts +37 -0
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
- package/dist/lib/components/export/export-modal.component.js +414 -0
- package/dist/lib/components/export/export-modal.component.js.map +1 -0
- package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/library/library-full-view.component.js +270 -0
- package/dist/lib/components/library/library-full-view.component.js.map +1 -0
- package/dist/lib/components/members/members-modal.component.d.ts +42 -0
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
- package/dist/lib/components/members/members-modal.component.js +352 -0
- package/dist/lib/components/members/members-modal.component.js.map +1 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
- package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
- package/dist/lib/components/message/message-input.component.d.ts +137 -0
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-input.component.js +1159 -0
- package/dist/lib/components/message/message-input.component.js.map +1 -0
- package/dist/lib/components/message/message-item.component.d.ts +140 -0
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-item.component.js +817 -0
- package/dist/lib/components/message/message-item.component.js.map +1 -0
- package/dist/lib/components/message/message-list.component.d.ts +77 -0
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
- package/dist/lib/components/message/message-list.component.js +316 -0
- package/dist/lib/components/message/message-list.component.js.map +1 -0
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
- package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
- package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
- package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
- package/dist/lib/components/notification/activity-indicator.component.js +56 -0
- package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
- package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
- package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
- package/dist/lib/components/notification/notification-badge.component.js +160 -0
- package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
- package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/project/project-form-modal.component.js +357 -0
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
- package/dist/lib/components/project/project-selector.component.d.ts +36 -0
- package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
- package/dist/lib/components/project/project-selector.component.js +317 -0
- package/dist/lib/components/project/project-selector.component.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts +120 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
- package/dist/lib/components/search/search-panel.component.js +714 -0
- package/dist/lib/components/search/search-panel.component.js.map +1 -0
- package/dist/lib/components/share/share-modal.component.d.ts +46 -0
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
- package/dist/lib/components/share/share-modal.component.js +431 -0
- package/dist/lib/components/share/share-modal.component.js.map +1 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
- package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-form-modal.component.js +329 -0
- package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
- package/dist/lib/components/task/task-item.component.d.ts +22 -0
- package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-item.component.js +234 -0
- package/dist/lib/components/task/task-item.component.js.map +1 -0
- package/dist/lib/components/task/task-list.component.d.ts +32 -0
- package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
- package/dist/lib/components/task/task-list.component.js +290 -0
- package/dist/lib/components/task/task-list.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
- package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
- package/dist/lib/components/thread/thread-panel.component.js +325 -0
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
- package/dist/lib/components/toast/toast.component.d.ts +26 -0
- package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
- package/dist/lib/components/toast/toast.component.js +108 -0
- package/dist/lib/components/toast/toast.component.js.map +1 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
- package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
- package/dist/lib/conversations.module.d.ts +62 -0
- package/dist/lib/conversations.module.d.ts.map +1 -0
- package/dist/lib/conversations.module.js +248 -0
- package/dist/lib/conversations.module.js.map +1 -0
- package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
- package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
- package/dist/lib/directives/search-shortcut.directive.js +39 -0
- package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +72 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
- package/dist/lib/models/conversation-state.model.js +2 -0
- package/dist/lib/models/conversation-state.model.js.map +1 -0
- package/dist/lib/models/notification.model.d.ts +89 -0
- package/dist/lib/models/notification.model.d.ts.map +1 -0
- package/dist/lib/models/notification.model.js +11 -0
- package/dist/lib/models/notification.model.js.map +1 -0
- package/dist/lib/services/active-tasks.service.d.ts +65 -0
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
- package/dist/lib/services/active-tasks.service.js +95 -0
- package/dist/lib/services/active-tasks.service.js.map +1 -0
- package/dist/lib/services/agent-state.service.d.ts +78 -0
- package/dist/lib/services/agent-state.service.d.ts.map +1 -0
- package/dist/lib/services/agent-state.service.js +213 -0
- package/dist/lib/services/agent-state.service.js.map +1 -0
- package/dist/lib/services/artifact-state.service.d.ts +114 -0
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
- package/dist/lib/services/artifact-state.service.js +288 -0
- package/dist/lib/services/artifact-state.service.js.map +1 -0
- package/dist/lib/services/conversation-agent.service.d.ts +79 -0
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-agent.service.js +259 -0
- package/dist/lib/services/conversation-agent.service.js.map +1 -0
- package/dist/lib/services/conversation-state.service.d.ts +122 -0
- package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-state.service.js +255 -0
- package/dist/lib/services/conversation-state.service.js.map +1 -0
- package/dist/lib/services/dialog.service.d.ts +54 -0
- package/dist/lib/services/dialog.service.d.ts.map +1 -0
- package/dist/lib/services/dialog.service.js +157 -0
- package/dist/lib/services/dialog.service.js.map +1 -0
- package/dist/lib/services/export.service.d.ts +25 -0
- package/dist/lib/services/export.service.d.ts.map +1 -0
- package/dist/lib/services/export.service.js +237 -0
- package/dist/lib/services/export.service.js.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
- package/dist/lib/services/mention-autocomplete.service.js +160 -0
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
- package/dist/lib/services/mention-parser.service.d.ts +46 -0
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
- package/dist/lib/services/mention-parser.service.js +156 -0
- package/dist/lib/services/mention-parser.service.js.map +1 -0
- package/dist/lib/services/notification.service.d.ts +108 -0
- package/dist/lib/services/notification.service.d.ts.map +1 -0
- package/dist/lib/services/notification.service.js +431 -0
- package/dist/lib/services/notification.service.js.map +1 -0
- package/dist/lib/services/search.service.d.ts +144 -0
- package/dist/lib/services/search.service.d.ts.map +1 -0
- package/dist/lib/services/search.service.js +370 -0
- package/dist/lib/services/search.service.js.map +1 -0
- package/dist/lib/services/toast.service.d.ts +46 -0
- package/dist/lib/services/toast.service.d.ts.map +1 -0
- package/dist/lib/services/toast.service.js +76 -0
- package/dist/lib/services/toast.service.js.map +1 -0
- package/dist/public-api.d.ts +42 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +49 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { OnInit, OnDestroy } from '@angular/core';
|
|
2
|
+
import { UserInfo } from '@memberjunction/core';
|
|
3
|
+
import { AIAgentRunEntity } from '@memberjunction/core-entities';
|
|
4
|
+
import { DialogService } from '../../services/dialog.service';
|
|
5
|
+
import { AgentStateService, AgentStatus, AgentWithStatus } from '../../services/agent-state.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
interface AgentProcess extends AgentWithStatus {
|
|
8
|
+
expanded: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare class AgentProcessPanelComponent implements OnInit, OnDestroy {
|
|
11
|
+
private dialogService;
|
|
12
|
+
private agentStateService;
|
|
13
|
+
conversationId?: string;
|
|
14
|
+
currentUser: UserInfo;
|
|
15
|
+
activeProcesses: AgentProcess[];
|
|
16
|
+
isMinimized: boolean;
|
|
17
|
+
private subscription?;
|
|
18
|
+
constructor(dialogService: DialogService, agentStateService: AgentStateService);
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
ngOnDestroy(): void;
|
|
21
|
+
toggleProcess(process: AgentProcess): void;
|
|
22
|
+
getStatusText(status: AgentStatus): string;
|
|
23
|
+
getElapsedTime(run: AIAgentRunEntity): string | null;
|
|
24
|
+
onCancelProcess(process: AgentProcess): Promise<void>;
|
|
25
|
+
onViewDetails(process: AgentProcess): void;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AgentProcessPanelComponent, never>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AgentProcessPanelComponent, "mj-agent-process-panel", never, { "conversationId": { "alias": "conversationId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, {}, never, never, false, never>;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=agent-process-panel.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-process-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/agent/agent-process-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAW,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;;AAErG,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBA8Sa,0BAA2B,YAAW,MAAM,EAAE,SAAS;IAUhE,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IAVlB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAG,QAAQ,CAAC;IAEzB,eAAe,EAAE,YAAY,EAAE,CAAM;IACrC,WAAW,EAAE,OAAO,CAAS;IAEpC,OAAO,CAAC,YAAY,CAAC,CAAe;gBAG1B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB;IAG9C,QAAQ,IAAI,IAAI;IAmBhB,WAAW,IAAI,IAAI;IAKnB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAI1C,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAW1C,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI;IAoB9C,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3D,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;yCA9F/B,0BAA0B;2CAA1B,0BAA0B;CAkGtC"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/dialog.service";
|
|
4
|
+
import * as i2 from "../../services/agent-state.service";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
const _forTrack0 = ($index, $item) => $item.run.ID;
|
|
7
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
i0.ɵɵelement(0, "div", 12);
|
|
9
|
+
} }
|
|
10
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
i0.ɵɵelementStart(0, "div", 16);
|
|
12
|
+
i0.ɵɵelement(1, "i", 18);
|
|
13
|
+
i0.ɵɵelementStart(2, "span");
|
|
14
|
+
i0.ɵɵtext(3);
|
|
15
|
+
i0.ɵɵelementEnd()();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const process_r4 = i0.ɵɵnextContext().$implicit;
|
|
18
|
+
i0.ɵɵproperty("title", "Confidence: " + (process_r4.confidence * 100).toFixed(0) + "%");
|
|
19
|
+
i0.ɵɵadvance(3);
|
|
20
|
+
i0.ɵɵtextInterpolate1("", (process_r4.confidence * 100).toFixed(0), "%");
|
|
21
|
+
} }
|
|
22
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelementStart(0, "div", 19);
|
|
24
|
+
i0.ɵɵelement(1, "i", 24);
|
|
25
|
+
i0.ɵɵelementStart(2, "span");
|
|
26
|
+
i0.ɵɵtext(3);
|
|
27
|
+
i0.ɵɵpipe(4, "date");
|
|
28
|
+
i0.ɵɵelementEnd()();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const process_r4 = i0.ɵɵnextContext(2).$implicit;
|
|
31
|
+
i0.ɵɵadvance(3);
|
|
32
|
+
i0.ɵɵtextInterpolate1("Started: ", i0.ɵɵpipeBind2(4, 1, process_r4.run.StartedAt, "short"), "");
|
|
33
|
+
} }
|
|
34
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
i0.ɵɵelementStart(0, "div", 19);
|
|
36
|
+
i0.ɵɵelement(1, "i", 25);
|
|
37
|
+
i0.ɵɵelementStart(2, "span");
|
|
38
|
+
i0.ɵɵtext(3);
|
|
39
|
+
i0.ɵɵelementEnd()();
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const process_r4 = i0.ɵɵnextContext(2).$implicit;
|
|
42
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
43
|
+
i0.ɵɵadvance(3);
|
|
44
|
+
i0.ɵɵtextInterpolate1("Duration: ", ctx_r1.getElapsedTime(process_r4.run), "");
|
|
45
|
+
} }
|
|
46
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
48
|
+
i0.ɵɵelementStart(0, "button", 26);
|
|
49
|
+
i0.ɵɵlistener("click", function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const process_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCancelProcess(process_r4)); });
|
|
50
|
+
i0.ɵɵelement(1, "i", 27);
|
|
51
|
+
i0.ɵɵtext(2, " Cancel ");
|
|
52
|
+
i0.ɵɵelementEnd();
|
|
53
|
+
} }
|
|
54
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
56
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
57
|
+
i0.ɵɵtemplate(1, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_1_Template, 5, 4, "div", 19)(2, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_2_Template, 4, 1, "div", 19);
|
|
58
|
+
i0.ɵɵelementStart(3, "div", 20);
|
|
59
|
+
i0.ɵɵtemplate(4, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Conditional_4_Template, 3, 0, "button", 21);
|
|
60
|
+
i0.ɵɵelementStart(5, "button", 22);
|
|
61
|
+
i0.ɵɵlistener("click", function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const process_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onViewDetails(process_r4)); });
|
|
62
|
+
i0.ɵɵelement(6, "i", 23);
|
|
63
|
+
i0.ɵɵtext(7, " View Details ");
|
|
64
|
+
i0.ɵɵelementEnd()()();
|
|
65
|
+
} if (rf & 2) {
|
|
66
|
+
const process_r4 = i0.ɵɵnextContext().$implicit;
|
|
67
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
68
|
+
i0.ɵɵadvance();
|
|
69
|
+
i0.ɵɵconditional(process_r4.run.StartedAt ? 1 : -1);
|
|
70
|
+
i0.ɵɵadvance();
|
|
71
|
+
i0.ɵɵconditional(ctx_r1.getElapsedTime(process_r4.run) ? 2 : -1);
|
|
72
|
+
i0.ɵɵadvance(2);
|
|
73
|
+
i0.ɵɵconditional(process_r4.run.Status === "Running" || process_r4.run.Status === "Paused" ? 4 : -1);
|
|
74
|
+
} }
|
|
75
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
77
|
+
i0.ɵɵelementStart(0, "div", 8)(1, "div", 9);
|
|
78
|
+
i0.ɵɵlistener("click", function AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Template_div_click_1_listener() { const process_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleProcess(process_r4)); });
|
|
79
|
+
i0.ɵɵelementStart(2, "div", 10)(3, "div", 11);
|
|
80
|
+
i0.ɵɵelement(4, "i", 3);
|
|
81
|
+
i0.ɵɵtemplate(5, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_5_Template, 1, 0, "div", 12);
|
|
82
|
+
i0.ɵɵelementEnd();
|
|
83
|
+
i0.ɵɵelementStart(6, "div", 13)(7, "span", 14);
|
|
84
|
+
i0.ɵɵtext(8);
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
i0.ɵɵelementStart(9, "span", 15);
|
|
87
|
+
i0.ɵɵtext(10);
|
|
88
|
+
i0.ɵɵelementEnd()();
|
|
89
|
+
i0.ɵɵtemplate(11, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_11_Template, 4, 2, "div", 16);
|
|
90
|
+
i0.ɵɵelementEnd();
|
|
91
|
+
i0.ɵɵelement(12, "i", 6);
|
|
92
|
+
i0.ɵɵelementEnd();
|
|
93
|
+
i0.ɵɵtemplate(13, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Conditional_13_Template, 8, 3, "div", 17);
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
} if (rf & 2) {
|
|
96
|
+
const process_r4 = ctx.$implicit;
|
|
97
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
98
|
+
i0.ɵɵadvance(3);
|
|
99
|
+
i0.ɵɵclassProp("status-acknowledging", process_r4.status === "acknowledging")("status-working", process_r4.status === "working")("status-completing", process_r4.status === "completing")("status-completed", process_r4.status === "completed")("status-error", process_r4.status === "error");
|
|
100
|
+
i0.ɵɵadvance(2);
|
|
101
|
+
i0.ɵɵconditional(process_r4.status !== "completed" ? 5 : -1);
|
|
102
|
+
i0.ɵɵadvance(3);
|
|
103
|
+
i0.ɵɵtextInterpolate(process_r4.run.Agent || "Agent");
|
|
104
|
+
i0.ɵɵadvance();
|
|
105
|
+
i0.ɵɵclassMap("status-" + process_r4.status);
|
|
106
|
+
i0.ɵɵadvance();
|
|
107
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getStatusText(process_r4.status), " ");
|
|
108
|
+
i0.ɵɵadvance();
|
|
109
|
+
i0.ɵɵconditional(process_r4.confidence != null ? 11 : -1);
|
|
110
|
+
i0.ɵɵadvance();
|
|
111
|
+
i0.ɵɵproperty("ngClass", process_r4.expanded ? "fa-chevron-up" : "fa-chevron-down");
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵconditional(process_r4.expanded ? 13 : -1);
|
|
114
|
+
} }
|
|
115
|
+
function AgentProcessPanelComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
117
|
+
i0.ɵɵrepeaterCreate(1, AgentProcessPanelComponent_Conditional_0_Conditional_8_For_2_Template, 14, 18, "div", 8, _forTrack0);
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
121
|
+
i0.ɵɵadvance();
|
|
122
|
+
i0.ɵɵrepeater(ctx_r1.activeProcesses);
|
|
123
|
+
} }
|
|
124
|
+
function AgentProcessPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h3");
|
|
127
|
+
i0.ɵɵelement(3, "i", 3);
|
|
128
|
+
i0.ɵɵtext(4);
|
|
129
|
+
i0.ɵɵelementEnd();
|
|
130
|
+
i0.ɵɵelementStart(5, "div", 4)(6, "button", 5);
|
|
131
|
+
i0.ɵɵlistener("click", function AgentProcessPanelComponent_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.isMinimized = !ctx_r1.isMinimized); });
|
|
132
|
+
i0.ɵɵelement(7, "i", 6);
|
|
133
|
+
i0.ɵɵelementEnd()()();
|
|
134
|
+
i0.ɵɵtemplate(8, AgentProcessPanelComponent_Conditional_0_Conditional_8_Template, 3, 0, "div", 7);
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
} if (rf & 2) {
|
|
137
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
138
|
+
i0.ɵɵclassProp("minimized", ctx_r1.isMinimized);
|
|
139
|
+
i0.ɵɵadvance(4);
|
|
140
|
+
i0.ɵɵtextInterpolate1(" Active Agents (", ctx_r1.activeProcesses.length, ") ");
|
|
141
|
+
i0.ɵɵadvance(2);
|
|
142
|
+
i0.ɵɵproperty("title", ctx_r1.isMinimized ? "Expand" : "Minimize");
|
|
143
|
+
i0.ɵɵadvance();
|
|
144
|
+
i0.ɵɵproperty("ngClass", ctx_r1.isMinimized ? "fa-chevron-up" : "fa-chevron-down");
|
|
145
|
+
i0.ɵɵadvance();
|
|
146
|
+
i0.ɵɵconditional(!ctx_r1.isMinimized ? 8 : -1);
|
|
147
|
+
} }
|
|
148
|
+
export class AgentProcessPanelComponent {
|
|
149
|
+
dialogService;
|
|
150
|
+
agentStateService;
|
|
151
|
+
conversationId;
|
|
152
|
+
currentUser;
|
|
153
|
+
activeProcesses = [];
|
|
154
|
+
isMinimized = false;
|
|
155
|
+
subscription;
|
|
156
|
+
constructor(dialogService, agentStateService) {
|
|
157
|
+
this.dialogService = dialogService;
|
|
158
|
+
this.agentStateService = agentStateService;
|
|
159
|
+
}
|
|
160
|
+
ngOnInit() {
|
|
161
|
+
// Start polling for active agents
|
|
162
|
+
this.agentStateService.startPolling(this.currentUser, this.conversationId);
|
|
163
|
+
// Subscribe to active agents
|
|
164
|
+
this.subscription = this.agentStateService
|
|
165
|
+
.getActiveAgents(this.conversationId)
|
|
166
|
+
.subscribe(agents => {
|
|
167
|
+
// Preserve expanded state for existing processes
|
|
168
|
+
this.activeProcesses = agents.map(agent => {
|
|
169
|
+
const existing = this.activeProcesses.find(p => p.run.ID === agent.run.ID);
|
|
170
|
+
return {
|
|
171
|
+
...agent,
|
|
172
|
+
expanded: existing ? existing.expanded : false
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
ngOnDestroy() {
|
|
178
|
+
this.subscription?.unsubscribe();
|
|
179
|
+
// Note: We don't stop polling here as other components may be using the service
|
|
180
|
+
}
|
|
181
|
+
toggleProcess(process) {
|
|
182
|
+
process.expanded = !process.expanded;
|
|
183
|
+
}
|
|
184
|
+
getStatusText(status) {
|
|
185
|
+
switch (status) {
|
|
186
|
+
case 'acknowledging': return 'Acknowledging';
|
|
187
|
+
case 'working': return 'Working';
|
|
188
|
+
case 'completing': return 'Completing';
|
|
189
|
+
case 'completed': return 'Completed';
|
|
190
|
+
case 'error': return 'Error';
|
|
191
|
+
default: return 'Active';
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
getElapsedTime(run) {
|
|
195
|
+
if (!run.StartedAt)
|
|
196
|
+
return null;
|
|
197
|
+
const start = new Date(run.StartedAt).getTime();
|
|
198
|
+
const end = run.CompletedAt ? new Date(run.CompletedAt).getTime() : Date.now();
|
|
199
|
+
const elapsed = end - start;
|
|
200
|
+
const seconds = Math.floor(elapsed / 1000);
|
|
201
|
+
const minutes = Math.floor(seconds / 60);
|
|
202
|
+
const hours = Math.floor(minutes / 60);
|
|
203
|
+
if (hours > 0) {
|
|
204
|
+
return `${hours}h ${minutes % 60}m`;
|
|
205
|
+
}
|
|
206
|
+
else if (minutes > 0) {
|
|
207
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return `${seconds}s`;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async onCancelProcess(process) {
|
|
214
|
+
const confirmed = await this.dialogService.confirm({
|
|
215
|
+
title: 'Cancel Agent',
|
|
216
|
+
message: `Cancel agent "${process.run.Agent || 'Agent'}"?`,
|
|
217
|
+
okText: 'Cancel Agent',
|
|
218
|
+
cancelText: 'Keep Running'
|
|
219
|
+
});
|
|
220
|
+
if (!confirmed)
|
|
221
|
+
return;
|
|
222
|
+
try {
|
|
223
|
+
const success = await this.agentStateService.cancelAgent(process.run.ID);
|
|
224
|
+
if (!success) {
|
|
225
|
+
await this.dialogService.alert('Error', 'Failed to cancel agent process');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
console.error('Failed to cancel agent process:', error);
|
|
230
|
+
await this.dialogService.alert('Error', 'Failed to cancel agent process');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
onViewDetails(process) {
|
|
234
|
+
// TODO: Navigate to agent run details page or open modal
|
|
235
|
+
console.log('View agent run details:', process.run.ID);
|
|
236
|
+
}
|
|
237
|
+
static ɵfac = function AgentProcessPanelComponent_Factory(t) { return new (t || AgentProcessPanelComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.AgentStateService)); };
|
|
238
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentProcessPanelComponent, selectors: [["mj-agent-process-panel"]], inputs: { conversationId: "conversationId", currentUser: "currentUser" }, decls: 1, vars: 1, consts: [[1, "agent-panel", 3, "minimized"], [1, "agent-panel"], [1, "panel-header"], [1, "fas", "fa-robot"], [1, "header-actions"], [1, "header-btn", 3, "click", "title"], [1, "fas", 3, "ngClass"], [1, "panel-content"], [1, "process-item"], [1, "process-header", 3, "click"], [1, "process-info"], [1, "agent-avatar-small"], [1, "pulse-dot"], [1, "agent-details"], [1, "process-name"], [1, "process-status"], [1, "confidence-indicator", 3, "title"], [1, "process-details"], [1, "fas", "fa-gauge-high"], [1, "detail-row"], [1, "process-actions"], [1, "btn-action", "btn-cancel"], [1, "btn-action", 3, "click"], [1, "fas", "fa-external-link-alt"], [1, "fas", "fa-clock"], [1, "fas", "fa-hourglass-half"], [1, "btn-action", "btn-cancel", 3, "click"], [1, "fas", "fa-stop"]], template: function AgentProcessPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
+
i0.ɵɵtemplate(0, AgentProcessPanelComponent_Conditional_0_Template, 9, 6, "div", 0);
|
|
240
|
+
} if (rf & 2) {
|
|
241
|
+
i0.ɵɵconditional(ctx.activeProcesses.length > 0 ? 0 : -1);
|
|
242
|
+
} }, dependencies: [i3.NgClass, i3.DatePipe], styles: [".agent-panel[_ngcontent-%COMP%] {\n position: fixed;\n bottom: 24px;\n right: 24px;\n width: 450px;\n max-height: 600px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0,0,0,0.12);\n z-index: 1000;\n transition: all 300ms ease;\n overflow: hidden;\n }\n .agent-panel.minimized[_ngcontent-%COMP%] { width: 280px; max-height: 60px; }\n\n .panel-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: linear-gradient(135deg, #F9FAFB, #F3F4F6);\n border-radius: 12px 12px 0 0;\n }\n .panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 10px;\n color: #111827;\n }\n .header-actions[_ngcontent-%COMP%] { display: flex; gap: 4px; }\n .header-btn[_ngcontent-%COMP%] {\n padding: 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: 6px;\n color: #6B7280;\n transition: all 150ms ease;\n }\n .header-btn[_ngcontent-%COMP%]:hover { background: rgba(0,0,0,0.08); color: #111827; }\n\n .panel-content[_ngcontent-%COMP%] {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .process-item[_ngcontent-%COMP%] {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n }\n .process-item[_ngcontent-%COMP%]:last-child { border-bottom: none; }\n .process-item[_ngcontent-%COMP%]:hover { background: #FAFAFA; }\n\n .process-header[_ngcontent-%COMP%] {\n padding: 14px 20px;\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n }\n\n .process-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n }\n\n .agent-avatar-small[_ngcontent-%COMP%] {\n position: relative;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n color: white;\n flex-shrink: 0;\n }\n\n .agent-avatar-small.status-acknowledging[_ngcontent-%COMP%] { background: linear-gradient(135deg, #3B82F6, #2563EB); }\n .agent-avatar-small.status-working[_ngcontent-%COMP%] { background: linear-gradient(135deg, #F59E0B, #D97706); }\n .agent-avatar-small.status-completing[_ngcontent-%COMP%] { background: linear-gradient(135deg, #10B981, #059669); }\n .agent-avatar-small.status-completed[_ngcontent-%COMP%] { background: linear-gradient(135deg, #6B7280, #4B5563); opacity: 0.6; }\n .agent-avatar-small.status-error[_ngcontent-%COMP%] { background: linear-gradient(135deg, #EF4444, #DC2626); }\n\n .pulse-dot[_ngcontent-%COMP%] {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #10B981;\n animation: _ngcontent-%COMP%_pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes _ngcontent-%COMP%_pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.5; transform: scale(1.5); }\n }\n\n .agent-details[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n min-width: 0;\n }\n\n .process-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .process-status[_ngcontent-%COMP%] {\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-block;\n width: fit-content;\n }\n\n .status-acknowledging[_ngcontent-%COMP%] { background: #DBEAFE; color: #1E40AF; }\n .status-working[_ngcontent-%COMP%] { background: #FEF3C7; color: #B45309; }\n .status-completing[_ngcontent-%COMP%] { background: #D1FAE5; color: #065F46; }\n .status-completed[_ngcontent-%COMP%] { background: #F3F4F6; color: #6B7280; }\n .status-error[_ngcontent-%COMP%] { background: #FEE2E2; color: #991B1B; }\n\n .confidence-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: #F3F4F6;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 600;\n color: #374151;\n flex-shrink: 0;\n }\n\n .process-details[_ngcontent-%COMP%] {\n padding: 0 20px 16px 68px;\n animation: _ngcontent-%COMP%_slideDown 200ms ease;\n }\n\n @keyframes _ngcontent-%COMP%_slideDown {\n from { opacity: 0; transform: translateY(-10px); }\n to { opacity: 1; transform: translateY(0); }\n }\n\n .detail-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n font-size: 13px;\n color: #6B7280;\n }\n .detail-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n color: #9CA3AF;\n text-align: center;\n }\n\n .process-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #F3F4F6;\n }\n\n .btn-action[_ngcontent-%COMP%] {\n padding: 8px 14px;\n background: #3B82F6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 150ms ease;\n }\n .btn-action[_ngcontent-%COMP%]:hover {\n background: #2563EB;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);\n }\n\n .btn-cancel[_ngcontent-%COMP%] {\n background: #EF4444;\n }\n .btn-cancel[_ngcontent-%COMP%]:hover {\n background: #DC2626;\n box-shadow: 0 2px 4px rgba(239, 68, 68, 0.3);\n }"] });
|
|
243
|
+
}
|
|
244
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentProcessPanelComponent, [{
|
|
245
|
+
type: Component,
|
|
246
|
+
args: [{ selector: 'mj-agent-process-panel', template: `
|
|
247
|
+
@if (activeProcesses.length > 0) {
|
|
248
|
+
<div class="agent-panel" [class.minimized]="isMinimized">
|
|
249
|
+
<div class="panel-header">
|
|
250
|
+
<h3>
|
|
251
|
+
<i class="fas fa-robot"></i>
|
|
252
|
+
Active Agents ({{ activeProcesses.length }})
|
|
253
|
+
</h3>
|
|
254
|
+
<div class="header-actions">
|
|
255
|
+
<button class="header-btn" (click)="isMinimized = !isMinimized" [title]="isMinimized ? 'Expand' : 'Minimize'">
|
|
256
|
+
<i class="fas" [ngClass]="isMinimized ? 'fa-chevron-up' : 'fa-chevron-down'"></i>
|
|
257
|
+
</button>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
@if (!isMinimized) {
|
|
262
|
+
<div class="panel-content">
|
|
263
|
+
@for (process of activeProcesses; track process.run.ID) {
|
|
264
|
+
<div class="process-item">
|
|
265
|
+
<div class="process-header" (click)="toggleProcess(process)">
|
|
266
|
+
<div class="process-info">
|
|
267
|
+
<div class="agent-avatar-small"
|
|
268
|
+
[class.status-acknowledging]="process.status === 'acknowledging'"
|
|
269
|
+
[class.status-working]="process.status === 'working'"
|
|
270
|
+
[class.status-completing]="process.status === 'completing'"
|
|
271
|
+
[class.status-completed]="process.status === 'completed'"
|
|
272
|
+
[class.status-error]="process.status === 'error'">
|
|
273
|
+
<i class="fas fa-robot"></i>
|
|
274
|
+
@if (process.status !== 'completed') {
|
|
275
|
+
<div class="pulse-dot"></div>
|
|
276
|
+
}
|
|
277
|
+
</div>
|
|
278
|
+
<div class="agent-details">
|
|
279
|
+
<span class="process-name">{{ process.run.Agent || 'Agent' }}</span>
|
|
280
|
+
<span class="process-status" [class]="'status-' + process.status">
|
|
281
|
+
{{ getStatusText(process.status) }}
|
|
282
|
+
</span>
|
|
283
|
+
</div>
|
|
284
|
+
@if (process.confidence != null) {
|
|
285
|
+
<div class="confidence-indicator" [title]="'Confidence: ' + (process.confidence * 100).toFixed(0) + '%'">
|
|
286
|
+
<i class="fas fa-gauge-high"></i>
|
|
287
|
+
<span>{{ (process.confidence * 100).toFixed(0) }}%</span>
|
|
288
|
+
</div>
|
|
289
|
+
}
|
|
290
|
+
</div>
|
|
291
|
+
<i class="fas" [ngClass]="process.expanded ? 'fa-chevron-up' : 'fa-chevron-down'"></i>
|
|
292
|
+
</div>
|
|
293
|
+
|
|
294
|
+
@if (process.expanded) {
|
|
295
|
+
<div class="process-details">
|
|
296
|
+
@if (process.run.StartedAt) {
|
|
297
|
+
<div class="detail-row">
|
|
298
|
+
<i class="fas fa-clock"></i>
|
|
299
|
+
<span>Started: {{ process.run.StartedAt | date:'short' }}</span>
|
|
300
|
+
</div>
|
|
301
|
+
}
|
|
302
|
+
@if (getElapsedTime(process.run)) {
|
|
303
|
+
<div class="detail-row">
|
|
304
|
+
<i class="fas fa-hourglass-half"></i>
|
|
305
|
+
<span>Duration: {{ getElapsedTime(process.run) }}</span>
|
|
306
|
+
</div>
|
|
307
|
+
}
|
|
308
|
+
<div class="process-actions">
|
|
309
|
+
@if (process.run.Status === 'Running' || process.run.Status === 'Paused') {
|
|
310
|
+
<button class="btn-action btn-cancel" (click)="onCancelProcess(process)">
|
|
311
|
+
<i class="fas fa-stop"></i> Cancel
|
|
312
|
+
</button>
|
|
313
|
+
}
|
|
314
|
+
<button class="btn-action" (click)="onViewDetails(process)">
|
|
315
|
+
<i class="fas fa-external-link-alt"></i> View Details
|
|
316
|
+
</button>
|
|
317
|
+
</div>
|
|
318
|
+
</div>
|
|
319
|
+
}
|
|
320
|
+
</div>
|
|
321
|
+
}
|
|
322
|
+
</div>
|
|
323
|
+
}
|
|
324
|
+
</div>
|
|
325
|
+
}
|
|
326
|
+
`, styles: ["\n .agent-panel {\n position: fixed;\n bottom: 24px;\n right: 24px;\n width: 450px;\n max-height: 600px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0,0,0,0.12);\n z-index: 1000;\n transition: all 300ms ease;\n overflow: hidden;\n }\n .agent-panel.minimized { width: 280px; max-height: 60px; }\n\n .panel-header {\n padding: 16px 20px;\n border-bottom: 1px solid #E5E7EB;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: linear-gradient(135deg, #F9FAFB, #F3F4F6);\n border-radius: 12px 12px 0 0;\n }\n .panel-header h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 10px;\n color: #111827;\n }\n .header-actions { display: flex; gap: 4px; }\n .header-btn {\n padding: 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n border-radius: 6px;\n color: #6B7280;\n transition: all 150ms ease;\n }\n .header-btn:hover { background: rgba(0,0,0,0.08); color: #111827; }\n\n .panel-content {\n max-height: 500px;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .process-item {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n }\n .process-item:last-child { border-bottom: none; }\n .process-item:hover { background: #FAFAFA; }\n\n .process-header {\n padding: 14px 20px;\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n }\n\n .process-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n }\n\n .agent-avatar-small {\n position: relative;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n color: white;\n flex-shrink: 0;\n }\n\n .agent-avatar-small.status-acknowledging { background: linear-gradient(135deg, #3B82F6, #2563EB); }\n .agent-avatar-small.status-working { background: linear-gradient(135deg, #F59E0B, #D97706); }\n .agent-avatar-small.status-completing { background: linear-gradient(135deg, #10B981, #059669); }\n .agent-avatar-small.status-completed { background: linear-gradient(135deg, #6B7280, #4B5563); opacity: 0.6; }\n .agent-avatar-small.status-error { background: linear-gradient(135deg, #EF4444, #DC2626); }\n\n .pulse-dot {\n position: absolute;\n top: -2px;\n right: -2px;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #10B981;\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes pulse {\n 0%, 100% { opacity: 1; transform: scale(1); }\n 50% { opacity: 0.5; transform: scale(1.5); }\n }\n\n .agent-details {\n display: flex;\n flex-direction: column;\n gap: 4px;\n flex: 1;\n min-width: 0;\n }\n\n .process-name {\n font-size: 14px;\n font-weight: 500;\n color: #111827;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .process-status {\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: inline-block;\n width: fit-content;\n }\n\n .status-acknowledging { background: #DBEAFE; color: #1E40AF; }\n .status-working { background: #FEF3C7; color: #B45309; }\n .status-completing { background: #D1FAE5; color: #065F46; }\n .status-completed { background: #F3F4F6; color: #6B7280; }\n .status-error { background: #FEE2E2; color: #991B1B; }\n\n .confidence-indicator {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: #F3F4F6;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 600;\n color: #374151;\n flex-shrink: 0;\n }\n\n .process-details {\n padding: 0 20px 16px 68px;\n animation: slideDown 200ms ease;\n }\n\n @keyframes slideDown {\n from { opacity: 0; transform: translateY(-10px); }\n to { opacity: 1; transform: translateY(0); }\n }\n\n .detail-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n font-size: 13px;\n color: #6B7280;\n }\n .detail-row i {\n width: 16px;\n color: #9CA3AF;\n text-align: center;\n }\n\n .process-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid #F3F4F6;\n }\n\n .btn-action {\n padding: 8px 14px;\n background: #3B82F6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n transition: all 150ms ease;\n }\n .btn-action:hover {\n background: #2563EB;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);\n }\n\n .btn-cancel {\n background: #EF4444;\n }\n .btn-cancel:hover {\n background: #DC2626;\n box-shadow: 0 2px 4px rgba(239, 68, 68, 0.3);\n }\n "] }]
|
|
327
|
+
}], () => [{ type: i1.DialogService }, { type: i2.AgentStateService }], { conversationId: [{
|
|
328
|
+
type: Input
|
|
329
|
+
}], currentUser: [{
|
|
330
|
+
type: Input
|
|
331
|
+
}] }); })();
|
|
332
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentProcessPanelComponent, { className: "AgentProcessPanelComponent", filePath: "src/lib/components/agent/agent-process-panel.component.ts", lineNumber: 315 }); })();
|
|
333
|
+
//# sourceMappingURL=agent-process-panel.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-process-panel.component.js","sourceRoot":"","sources":["../../../../src/lib/components/agent/agent-process-panel.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { UserInfo } from '@memberjunction/core';
|
|
3
|
+
import { ArtifactStateService } from '../../services/artifact-state.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
type ArtifactTab = 'preview' | 'source' | 'history';
|
|
6
|
+
export declare class ArtifactPanelComponent {
|
|
7
|
+
private artifactState;
|
|
8
|
+
currentUser: UserInfo;
|
|
9
|
+
close: EventEmitter<void>;
|
|
10
|
+
activeTab: ArtifactTab;
|
|
11
|
+
activeArtifact: any;
|
|
12
|
+
constructor(artifactState: ArtifactStateService);
|
|
13
|
+
switchTab(tab: ArtifactTab): void;
|
|
14
|
+
shareArtifact(): void;
|
|
15
|
+
copyContent(): void;
|
|
16
|
+
downloadArtifact(): void;
|
|
17
|
+
maximizeArtifact(): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactPanelComponent, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ArtifactPanelComponent, "mj-artifact-panel", never, { "currentUser": { "alias": "currentUser"; "required": false; }; }, { "close": "close"; }, never, never, false, never>;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=artifact-panel.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;;AAE7E,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEpD,qBAkNa,sBAAsB;IAOrB,OAAO,CAAC,aAAa;IANxB,WAAW,EAAG,QAAQ,CAAC;IACtB,KAAK,qBAA4B;IAEpC,SAAS,EAAE,WAAW,CAAa;IACnC,cAAc,EAAE,GAAG,CAAQ;gBAEd,aAAa,EAAE,oBAAoB;IAOvD,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAIjC,aAAa,IAAI,IAAI;IAIrB,WAAW,IAAI,IAAI;IAInB,gBAAgB,IAAI,IAAI;IAIxB,gBAAgB,IAAI,IAAI;yCA9Bb,sBAAsB;2CAAtB,sBAAsB;CAiClC"}
|