@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.
Files changed (226) hide show
  1. package/README.md +197 -0
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
  12. package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
  14. package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
  15. package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
  16. package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
  17. package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
  18. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
  19. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
  20. package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
  21. package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
  22. package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
  23. package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
  24. package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
  25. package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
  26. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
  27. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
  28. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
  29. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
  30. package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
  31. package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
  32. package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
  33. package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
  34. package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
  35. package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
  36. package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
  37. package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
  38. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
  39. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
  40. package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
  41. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
  42. package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
  43. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
  44. package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
  45. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
  46. package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
  47. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
  48. package/dist/lib/components/collection/collection-tree.component.js +482 -0
  49. package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
  50. package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
  51. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
  52. package/dist/lib/components/collection/collection-view.component.js +254 -0
  53. package/dist/lib/components/collection/collection-view.component.js.map +1 -0
  54. package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
  55. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
  56. package/dist/lib/components/collection/collections-full-view.component.js +578 -0
  57. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
  58. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
  59. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
  60. package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
  61. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
  62. package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
  63. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
  64. package/dist/lib/components/conversation/conversation-list.component.js +255 -0
  65. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
  66. package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
  67. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
  68. package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
  69. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
  70. package/dist/lib/components/export/export-modal.component.d.ts +37 -0
  71. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
  72. package/dist/lib/components/export/export-modal.component.js +414 -0
  73. package/dist/lib/components/export/export-modal.component.js.map +1 -0
  74. package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
  75. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
  76. package/dist/lib/components/library/library-full-view.component.js +270 -0
  77. package/dist/lib/components/library/library-full-view.component.js.map +1 -0
  78. package/dist/lib/components/members/members-modal.component.d.ts +42 -0
  79. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
  80. package/dist/lib/components/members/members-modal.component.js +352 -0
  81. package/dist/lib/components/members/members-modal.component.js.map +1 -0
  82. package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
  83. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
  84. package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
  85. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
  86. package/dist/lib/components/message/message-input.component.d.ts +137 -0
  87. package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
  88. package/dist/lib/components/message/message-input.component.js +1159 -0
  89. package/dist/lib/components/message/message-input.component.js.map +1 -0
  90. package/dist/lib/components/message/message-item.component.d.ts +140 -0
  91. package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
  92. package/dist/lib/components/message/message-item.component.js +817 -0
  93. package/dist/lib/components/message/message-item.component.js.map +1 -0
  94. package/dist/lib/components/message/message-list.component.d.ts +77 -0
  95. package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
  96. package/dist/lib/components/message/message-list.component.js +316 -0
  97. package/dist/lib/components/message/message-list.component.js.map +1 -0
  98. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
  99. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
  100. package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
  101. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
  102. package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
  103. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
  104. package/dist/lib/components/notification/activity-indicator.component.js +56 -0
  105. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
  106. package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
  107. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
  108. package/dist/lib/components/notification/notification-badge.component.js +160 -0
  109. package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
  110. package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
  111. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
  112. package/dist/lib/components/project/project-form-modal.component.js +357 -0
  113. package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
  114. package/dist/lib/components/project/project-selector.component.d.ts +36 -0
  115. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
  116. package/dist/lib/components/project/project-selector.component.js +317 -0
  117. package/dist/lib/components/project/project-selector.component.js.map +1 -0
  118. package/dist/lib/components/search/search-panel.component.d.ts +120 -0
  119. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
  120. package/dist/lib/components/search/search-panel.component.js +714 -0
  121. package/dist/lib/components/search/search-panel.component.js.map +1 -0
  122. package/dist/lib/components/share/share-modal.component.d.ts +46 -0
  123. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
  124. package/dist/lib/components/share/share-modal.component.js +431 -0
  125. package/dist/lib/components/share/share-modal.component.js.map +1 -0
  126. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
  127. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
  128. package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
  129. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
  130. package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
  131. package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
  132. package/dist/lib/components/task/task-form-modal.component.js +329 -0
  133. package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
  134. package/dist/lib/components/task/task-item.component.d.ts +22 -0
  135. package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
  136. package/dist/lib/components/task/task-item.component.js +234 -0
  137. package/dist/lib/components/task/task-item.component.js.map +1 -0
  138. package/dist/lib/components/task/task-list.component.d.ts +32 -0
  139. package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
  140. package/dist/lib/components/task/task-list.component.js +290 -0
  141. package/dist/lib/components/task/task-list.component.js.map +1 -0
  142. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
  143. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
  144. package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
  145. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
  146. package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
  147. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
  148. package/dist/lib/components/thread/thread-panel.component.js +325 -0
  149. package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
  150. package/dist/lib/components/toast/toast.component.d.ts +26 -0
  151. package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
  152. package/dist/lib/components/toast/toast.component.js +108 -0
  153. package/dist/lib/components/toast/toast.component.js.map +1 -0
  154. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
  155. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
  156. package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
  157. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
  158. package/dist/lib/conversations.module.d.ts +62 -0
  159. package/dist/lib/conversations.module.d.ts.map +1 -0
  160. package/dist/lib/conversations.module.js +248 -0
  161. package/dist/lib/conversations.module.js.map +1 -0
  162. package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
  163. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
  164. package/dist/lib/directives/search-shortcut.directive.js +39 -0
  165. package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
  166. package/dist/lib/models/conversation-state.model.d.ts +72 -0
  167. package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
  168. package/dist/lib/models/conversation-state.model.js +2 -0
  169. package/dist/lib/models/conversation-state.model.js.map +1 -0
  170. package/dist/lib/models/notification.model.d.ts +89 -0
  171. package/dist/lib/models/notification.model.d.ts.map +1 -0
  172. package/dist/lib/models/notification.model.js +11 -0
  173. package/dist/lib/models/notification.model.js.map +1 -0
  174. package/dist/lib/services/active-tasks.service.d.ts +65 -0
  175. package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
  176. package/dist/lib/services/active-tasks.service.js +95 -0
  177. package/dist/lib/services/active-tasks.service.js.map +1 -0
  178. package/dist/lib/services/agent-state.service.d.ts +78 -0
  179. package/dist/lib/services/agent-state.service.d.ts.map +1 -0
  180. package/dist/lib/services/agent-state.service.js +213 -0
  181. package/dist/lib/services/agent-state.service.js.map +1 -0
  182. package/dist/lib/services/artifact-state.service.d.ts +114 -0
  183. package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
  184. package/dist/lib/services/artifact-state.service.js +288 -0
  185. package/dist/lib/services/artifact-state.service.js.map +1 -0
  186. package/dist/lib/services/conversation-agent.service.d.ts +79 -0
  187. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
  188. package/dist/lib/services/conversation-agent.service.js +259 -0
  189. package/dist/lib/services/conversation-agent.service.js.map +1 -0
  190. package/dist/lib/services/conversation-state.service.d.ts +122 -0
  191. package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
  192. package/dist/lib/services/conversation-state.service.js +255 -0
  193. package/dist/lib/services/conversation-state.service.js.map +1 -0
  194. package/dist/lib/services/dialog.service.d.ts +54 -0
  195. package/dist/lib/services/dialog.service.d.ts.map +1 -0
  196. package/dist/lib/services/dialog.service.js +157 -0
  197. package/dist/lib/services/dialog.service.js.map +1 -0
  198. package/dist/lib/services/export.service.d.ts +25 -0
  199. package/dist/lib/services/export.service.d.ts.map +1 -0
  200. package/dist/lib/services/export.service.js +237 -0
  201. package/dist/lib/services/export.service.js.map +1 -0
  202. package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
  203. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
  204. package/dist/lib/services/mention-autocomplete.service.js +160 -0
  205. package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
  206. package/dist/lib/services/mention-parser.service.d.ts +46 -0
  207. package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
  208. package/dist/lib/services/mention-parser.service.js +156 -0
  209. package/dist/lib/services/mention-parser.service.js.map +1 -0
  210. package/dist/lib/services/notification.service.d.ts +108 -0
  211. package/dist/lib/services/notification.service.d.ts.map +1 -0
  212. package/dist/lib/services/notification.service.js +431 -0
  213. package/dist/lib/services/notification.service.js.map +1 -0
  214. package/dist/lib/services/search.service.d.ts +144 -0
  215. package/dist/lib/services/search.service.d.ts.map +1 -0
  216. package/dist/lib/services/search.service.js +370 -0
  217. package/dist/lib/services/search.service.js.map +1 -0
  218. package/dist/lib/services/toast.service.d.ts +46 -0
  219. package/dist/lib/services/toast.service.d.ts.map +1 -0
  220. package/dist/lib/services/toast.service.js +76 -0
  221. package/dist/lib/services/toast.service.js.map +1 -0
  222. package/dist/public-api.d.ts +42 -0
  223. package/dist/public-api.d.ts.map +1 -0
  224. package/dist/public-api.js +49 -0
  225. package/dist/public-api.js.map +1 -0
  226. 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"}