@memberjunction/ng-conversations 6.2.0-edge.0 → 6.2.0-edge.1

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 (343) hide show
  1. package/README.md +35 -2
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
  12. package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
  14. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
  15. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  16. package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
  17. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  18. package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
  19. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  20. package/dist/lib/components/attachment/image-viewer.component.js +181 -47
  21. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  22. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
  23. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  24. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
  25. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  26. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
  27. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  28. package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
  29. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  30. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
  31. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  32. package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
  33. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  34. package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
  35. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  36. package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
  37. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  38. package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
  39. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  40. package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
  41. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  42. package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
  43. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  44. package/dist/lib/components/collection/collection-tree.component.js +220 -70
  45. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  46. package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
  47. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  48. package/dist/lib/components/collection/collection-view.component.js +154 -40
  49. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  50. package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
  51. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  52. package/dist/lib/components/collection/collections-full-view.component.js +951 -367
  53. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  54. package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
  55. package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
  56. package/dist/lib/components/composer/ai-composer.component.js +388 -44
  57. package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
  58. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
  59. package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
  60. package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
  61. package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
  62. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1090 -123
  63. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  64. package/dist/lib/components/conversation/conversation-chat-area.component.js +2399 -706
  65. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  66. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
  67. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  68. package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
  69. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  70. package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
  71. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  72. package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
  73. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  74. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +40 -4
  75. package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
  76. package/dist/lib/components/conversation/pinned-messages-panel.component.js +72 -14
  77. package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
  78. package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
  79. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  80. package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
  81. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  82. package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
  83. package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
  84. package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
  85. package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
  86. package/dist/lib/components/export/export-modal.component.d.ts +84 -10
  87. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  88. package/dist/lib/components/export/export-modal.component.js +173 -49
  89. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  90. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
  91. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
  92. package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
  93. package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
  94. package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
  95. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  96. package/dist/lib/components/library/library-full-view.component.js +119 -35
  97. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  98. package/dist/lib/components/members/members-modal.component.d.ts +76 -10
  99. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  100. package/dist/lib/components/members/members-modal.component.js +164 -50
  101. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  102. package/dist/lib/components/message/actionable-commands.component.d.ts +37 -5
  103. package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
  104. package/dist/lib/components/message/actionable-commands.component.js +82 -16
  105. package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
  106. package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
  107. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  108. package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
  109. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  110. package/dist/lib/components/message/message-input.component.d.ts +549 -74
  111. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  112. package/dist/lib/components/message/message-input.component.js +1250 -421
  113. package/dist/lib/components/message/message-input.component.js.map +1 -1
  114. package/dist/lib/components/message/message-item.component.d.ts +411 -29
  115. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  116. package/dist/lib/components/message/message-item.component.js +896 -222
  117. package/dist/lib/components/message/message-item.component.js.map +1 -1
  118. package/dist/lib/components/message/message-list.component.d.ts +288 -29
  119. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  120. package/dist/lib/components/message/message-list.component.js +561 -123
  121. package/dist/lib/components/message/message-list.component.js.map +1 -1
  122. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
  123. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  124. package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
  125. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  126. package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
  127. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
  128. package/dist/lib/components/notification/activity-indicator.component.js +13 -3
  129. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
  130. package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
  131. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
  132. package/dist/lib/components/notification/notification-badge.component.js +36 -8
  133. package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
  134. package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
  135. package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
  136. package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
  137. package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
  138. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
  139. package/dist/lib/components/project/project-form-modal.component.js +348 -87
  140. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  141. package/dist/lib/components/project/project-selector.component.d.ts +78 -8
  142. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
  143. package/dist/lib/components/project/project-selector.component.js +177 -46
  144. package/dist/lib/components/project/project-selector.component.js.map +1 -1
  145. package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
  146. package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
  147. package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
  148. package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
  149. package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
  150. package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
  151. package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
  152. package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
  153. package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
  154. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
  155. package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
  156. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
  157. package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
  158. package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
  159. package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
  160. package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
  161. package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
  162. package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
  163. package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
  164. package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
  165. package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
  166. package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
  167. package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
  168. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
  169. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
  170. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
  171. package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
  172. package/dist/lib/components/search/search-panel.component.d.ts +133 -22
  173. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  174. package/dist/lib/components/search/search-panel.component.js +312 -83
  175. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  176. package/dist/lib/components/share/share-modal.component.d.ts +69 -9
  177. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  178. package/dist/lib/components/share/share-modal.component.js +139 -31
  179. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  180. package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
  181. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  182. package/dist/lib/components/shared/user-picker.component.js +110 -30
  183. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  184. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
  185. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  186. package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
  187. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  188. package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
  189. package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
  190. package/dist/lib/components/sidebar/routines-section.component.js +25 -5
  191. package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
  192. package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
  193. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
  194. package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
  195. package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
  196. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  197. package/dist/lib/components/task/tasks-full-view.component.js +223 -75
  198. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  199. package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
  200. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
  201. package/dist/lib/components/tasks/task-widget.component.js +100 -16
  202. package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
  203. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
  204. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  205. package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
  206. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  207. package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
  208. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  209. package/dist/lib/components/thread/thread-panel.component.js +146 -36
  210. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  211. package/dist/lib/components/toast/toast.component.d.ts +11 -1
  212. package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
  213. package/dist/lib/components/toast/toast.component.js +25 -5
  214. package/dist/lib/components/toast/toast.component.js.map +1 -1
  215. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
  216. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  217. package/dist/lib/components/workspace/conversation-workspace.component.js +887 -291
  218. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  219. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
  220. package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
  221. package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
  222. package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
  223. package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
  224. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
  225. package/dist/lib/directives/chat-slot.directive.js.map +1 -1
  226. package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
  227. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
  228. package/dist/lib/directives/search-shortcut.directive.js +14 -4
  229. package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
  230. package/dist/lib/events/chat-events.d.ts +34 -7
  231. package/dist/lib/events/chat-events.d.ts.map +1 -1
  232. package/dist/lib/events/chat-events.js +37 -7
  233. package/dist/lib/events/chat-events.js.map +1 -1
  234. package/dist/lib/models/agent-turn.model.d.ts +103 -0
  235. package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
  236. package/dist/lib/models/agent-turn.model.js +12 -0
  237. package/dist/lib/models/agent-turn.model.js.map +1 -0
  238. package/dist/lib/models/collection-view.model.js.map +1 -1
  239. package/dist/lib/models/conversation-state.model.d.ts +8 -0
  240. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  241. package/dist/lib/models/conversation-state.model.js.map +1 -1
  242. package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
  243. package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
  244. package/dist/lib/models/lazy-artifact-info.js +98 -34
  245. package/dist/lib/models/lazy-artifact-info.js.map +1 -1
  246. package/dist/lib/services/active-tasks.service.d.ts +30 -4
  247. package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
  248. package/dist/lib/services/active-tasks.service.js +71 -19
  249. package/dist/lib/services/active-tasks.service.js.map +1 -1
  250. package/dist/lib/services/agent-state.service.d.ts +17 -1
  251. package/dist/lib/services/agent-state.service.d.ts.map +1 -1
  252. package/dist/lib/services/agent-state.service.js +48 -16
  253. package/dist/lib/services/agent-state.service.js.map +1 -1
  254. package/dist/lib/services/artifact-permission.service.d.ts +39 -0
  255. package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
  256. package/dist/lib/services/artifact-permission.service.js +152 -17
  257. package/dist/lib/services/artifact-permission.service.js.map +1 -1
  258. package/dist/lib/services/artifact-state.service.d.ts +58 -5
  259. package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
  260. package/dist/lib/services/artifact-state.service.js +135 -35
  261. package/dist/lib/services/artifact-state.service.js.map +1 -1
  262. package/dist/lib/services/collection-permission.service.d.ts +28 -0
  263. package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
  264. package/dist/lib/services/collection-permission.service.js +88 -32
  265. package/dist/lib/services/collection-permission.service.js.map +1 -1
  266. package/dist/lib/services/collection-state.service.d.ts +11 -1
  267. package/dist/lib/services/collection-state.service.d.ts.map +1 -1
  268. package/dist/lib/services/collection-state.service.js +25 -5
  269. package/dist/lib/services/collection-state.service.js.map +1 -1
  270. package/dist/lib/services/conversation-agent.service.d.ts +26 -4
  271. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  272. package/dist/lib/services/conversation-agent.service.js +57 -18
  273. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  274. package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
  275. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  276. package/dist/lib/services/conversation-attachment.service.js +38 -10
  277. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  278. package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
  279. package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
  280. package/dist/lib/services/conversation-streaming.service.js +50 -10
  281. package/dist/lib/services/conversation-streaming.service.js.map +1 -1
  282. package/dist/lib/services/data-cache.service.d.ts +31 -0
  283. package/dist/lib/services/data-cache.service.d.ts.map +1 -1
  284. package/dist/lib/services/data-cache.service.js +71 -15
  285. package/dist/lib/services/data-cache.service.js.map +1 -1
  286. package/dist/lib/services/dialog.service.d.ts +13 -0
  287. package/dist/lib/services/dialog.service.d.ts.map +1 -1
  288. package/dist/lib/services/dialog.service.js +25 -5
  289. package/dist/lib/services/dialog.service.js.map +1 -1
  290. package/dist/lib/services/export.service.d.ts +2 -0
  291. package/dist/lib/services/export.service.d.ts.map +1 -1
  292. package/dist/lib/services/export.service.js +5 -1
  293. package/dist/lib/services/export.service.js.map +1 -1
  294. package/dist/lib/services/mention-parser.service.d.ts +10 -0
  295. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  296. package/dist/lib/services/mention-parser.service.js +25 -5
  297. package/dist/lib/services/mention-parser.service.js.map +1 -1
  298. package/dist/lib/services/notification.service.d.ts +54 -6
  299. package/dist/lib/services/notification.service.d.ts.map +1 -1
  300. package/dist/lib/services/notification.service.js +123 -27
  301. package/dist/lib/services/notification.service.js.map +1 -1
  302. package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
  303. package/dist/lib/services/realtime-audio-recorder.js +12 -12
  304. package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
  305. package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
  306. package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
  307. package/dist/lib/services/realtime-pcm-wav.js +10 -2
  308. package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
  309. package/dist/lib/services/search.service.d.ts +42 -9
  310. package/dist/lib/services/search.service.d.ts.map +1 -1
  311. package/dist/lib/services/search.service.js +103 -23
  312. package/dist/lib/services/search.service.js.map +1 -1
  313. package/dist/lib/services/toast.service.d.ts +19 -1
  314. package/dist/lib/services/toast.service.d.ts.map +1 -1
  315. package/dist/lib/services/toast.service.js +45 -9
  316. package/dist/lib/services/toast.service.js.map +1 -1
  317. package/dist/lib/services/ui-command-handler.service.d.ts +16 -2
  318. package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
  319. package/dist/lib/services/ui-command-handler.service.js +36 -8
  320. package/dist/lib/services/ui-command-handler.service.js.map +1 -1
  321. package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
  322. package/dist/lib/utils/agent-artifact-summary.js +3 -3
  323. package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
  324. package/dist/lib/utils/agent-turn-routing.d.ts +69 -0
  325. package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
  326. package/dist/lib/utils/agent-turn-routing.js +96 -0
  327. package/dist/lib/utils/agent-turn-routing.js.map +1 -0
  328. package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
  329. package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
  330. package/dist/lib/utils/artifact-panel-action.js +10 -2
  331. package/dist/lib/utils/artifact-panel-action.js.map +1 -1
  332. package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
  333. package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
  334. package/dist/lib/utils/distinct-artifacts.js +5 -1
  335. package/dist/lib/utils/distinct-artifacts.js.map +1 -1
  336. package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
  337. package/dist/lib/utils/plan-mode-preference.js +6 -6
  338. package/dist/lib/utils/plan-mode-preference.js.map +1 -1
  339. package/dist/public-api.d.ts +3 -0
  340. package/dist/public-api.d.ts.map +1 -1
  341. package/dist/public-api.js +3 -0
  342. package/dist/public-api.js.map +1 -1
  343. package/package.json +32 -32
@@ -10,21 +10,47 @@ interface AgentProcess extends AgentWithStatus {
10
10
  export declare class AgentProcessPanelComponent implements OnInit, OnDestroy {
11
11
  private dialogService;
12
12
  private agentStateService;
13
- conversationId?: string;
14
- currentUser: UserInfo;
15
- activeProcesses: AgentProcess[];
16
- isMinimized: boolean;
13
+ ConversationId?: string;
14
+ /** @deprecated Use {@link ConversationId}. */
15
+ set conversationId(value: string | undefined);
16
+ /** @deprecated Use {@link ConversationId}. */
17
+ get conversationId(): string | undefined;
18
+ CurrentUser: UserInfo;
19
+ /** @deprecated Use {@link CurrentUser}. */
20
+ set currentUser(value: UserInfo);
21
+ /** @deprecated Use {@link CurrentUser}. */
22
+ get currentUser(): UserInfo;
23
+ ActiveProcesses: AgentProcess[];
24
+ /** @deprecated Use {@link ActiveProcesses}. */
25
+ get activeProcesses(): AgentProcess[];
26
+ /** @deprecated Use {@link ActiveProcesses}. */
27
+ set activeProcesses(value: AgentProcess[]);
28
+ IsMinimized: boolean;
29
+ /** @deprecated Use {@link IsMinimized}. */
30
+ get isMinimized(): boolean;
31
+ /** @deprecated Use {@link IsMinimized}. */
32
+ set isMinimized(value: boolean);
17
33
  private subscription?;
18
34
  constructor(dialogService: DialogService, agentStateService: AgentStateService);
19
35
  ngOnInit(): void;
20
36
  ngOnDestroy(): void;
37
+ ToggleProcess(process: AgentProcess): void;
38
+ /** @deprecated Use {@link ToggleProcess}. */
21
39
  toggleProcess(process: AgentProcess): void;
40
+ GetStatusText(status: AgentStatus): string;
41
+ /** @deprecated Use {@link GetStatusText}. */
22
42
  getStatusText(status: AgentStatus): string;
43
+ GetElapsedTime(run: MJAIAgentRunEntity): string | null;
44
+ /** @deprecated Use {@link GetElapsedTime}. */
23
45
  getElapsedTime(run: MJAIAgentRunEntity): string | null;
46
+ OnCancelProcess(process: AgentProcess): Promise<void>;
47
+ /** @deprecated Use {@link OnCancelProcess}. */
24
48
  onCancelProcess(process: AgentProcess): Promise<void>;
49
+ OnViewDetails(process: AgentProcess): void;
50
+ /** @deprecated Use {@link OnViewDetails}. */
25
51
  onViewDetails(process: AgentProcess): void;
26
52
  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>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<AgentProcessPanelComponent, "mj-agent-process-panel", never, { "ConversationId": { "alias": "ConversationId"; "required": false; }; "conversationId": { "alias": "conversationId"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, {}, never, never, false, never>;
28
54
  }
29
55
  export {};
30
56
  //# sourceMappingURL=agent-process-panel.component.d.ts.map
@@ -1 +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,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;;AAGrG,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBA+Sa,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,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAoBhD,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3D,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;yCA9F/B,0BAA0B;2CAA1B,0BAA0B;CAkGtC"}
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,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;;AAGrG,UAAU,YAAa,SAAQ,eAAe;IAC5C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBA+Sa,0BAA2B,YAAW,MAAM,EAAE,SAAS;IA8ChE,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IA9ClB,cAAc,CAAC,EAAE,MAAM,CAAC;IAEjC,8CAA8C;IAC9C,IAAa,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEpD;IACD,8CAA8C;IAC9C,IAAI,cAAc,IAAI,MAAM,GAAG,SAAS,CAEvC;IACQ,WAAW,EAAG,QAAQ,CAAC;IAEhC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,QAAQ,EAEvC;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,QAAQ,CAE1B;IAEM,eAAe,EAAE,YAAY,EAAE,CAAM;IAE5C,+CAA+C;IAC/C,IAAW,eAAe,IAAI,YAAY,EAAE,CAE3C;IACD,+CAA+C;IAC/C,IAAW,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,EAE/C;IACM,WAAW,EAAE,OAAO,CAAS;IAEpC,2CAA2C;IAC3C,IAAW,WAAW,IAAI,OAAO,CAEhC;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAK,EAAE,OAAO,EAEpC;IAED,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,6CAA6C;IAC7C,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAI1C,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAW1C,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAI1C,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAoBtD,8CAA8C;IAC9C,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAIhD,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3D,+CAA+C;IACzC,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAK1C,6CAA6C;IAC7C,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;yCA5J/B,0BAA0B;2CAA1B,0BAA0B;CA+JtC"}
@@ -150,10 +150,42 @@ function AgentProcessPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1
150
150
  export class AgentProcessPanelComponent {
151
151
  dialogService;
152
152
  agentStateService;
153
- conversationId;
154
- currentUser;
155
- activeProcesses = [];
156
- isMinimized = false;
153
+ ConversationId;
154
+ /** @deprecated Use {@link ConversationId}. */
155
+ set conversationId(value) {
156
+ this.ConversationId = value;
157
+ }
158
+ /** @deprecated Use {@link ConversationId}. */
159
+ get conversationId() {
160
+ return this.ConversationId;
161
+ }
162
+ CurrentUser;
163
+ /** @deprecated Use {@link CurrentUser}. */
164
+ set currentUser(value) {
165
+ this.CurrentUser = value;
166
+ }
167
+ /** @deprecated Use {@link CurrentUser}. */
168
+ get currentUser() {
169
+ return this.CurrentUser;
170
+ }
171
+ ActiveProcesses = [];
172
+ /** @deprecated Use {@link ActiveProcesses}. */
173
+ get activeProcesses() {
174
+ return this.ActiveProcesses;
175
+ }
176
+ /** @deprecated Use {@link ActiveProcesses}. */
177
+ set activeProcesses(value) {
178
+ this.ActiveProcesses = value;
179
+ }
180
+ IsMinimized = false;
181
+ /** @deprecated Use {@link IsMinimized}. */
182
+ get isMinimized() {
183
+ return this.IsMinimized;
184
+ }
185
+ /** @deprecated Use {@link IsMinimized}. */
186
+ set isMinimized(value) {
187
+ this.IsMinimized = value;
188
+ }
157
189
  subscription;
158
190
  constructor(dialogService, agentStateService) {
159
191
  this.dialogService = dialogService;
@@ -161,14 +193,14 @@ export class AgentProcessPanelComponent {
161
193
  }
162
194
  ngOnInit() {
163
195
  // Start polling for active agents
164
- this.agentStateService.startPolling(this.currentUser, this.conversationId);
196
+ this.agentStateService.startPolling(this.CurrentUser, this.ConversationId);
165
197
  // Subscribe to active agents
166
198
  this.subscription = this.agentStateService
167
- .getActiveAgents(this.conversationId)
199
+ .getActiveAgents(this.ConversationId)
168
200
  .subscribe(agents => {
169
201
  // Preserve expanded state for existing processes
170
- this.activeProcesses = agents.map(agent => {
171
- const existing = this.activeProcesses.find(p => UUIDsEqual(p.run.ID, agent.run.ID));
202
+ this.ActiveProcesses = agents.map(agent => {
203
+ const existing = this.ActiveProcesses.find(p => UUIDsEqual(p.run.ID, agent.run.ID));
172
204
  return {
173
205
  ...agent,
174
206
  expanded: existing ? existing.expanded : false
@@ -180,10 +212,14 @@ export class AgentProcessPanelComponent {
180
212
  this.subscription?.unsubscribe();
181
213
  // Note: We don't stop polling here as other components may be using the service
182
214
  }
183
- toggleProcess(process) {
215
+ ToggleProcess(process) {
184
216
  process.expanded = !process.expanded;
185
217
  }
186
- getStatusText(status) {
218
+ /** @deprecated Use {@link ToggleProcess}. */
219
+ toggleProcess(process) {
220
+ return this.ToggleProcess(process);
221
+ }
222
+ GetStatusText(status) {
187
223
  switch (status) {
188
224
  case 'acknowledging': return 'Acknowledging';
189
225
  case 'working': return 'Working';
@@ -193,7 +229,11 @@ export class AgentProcessPanelComponent {
193
229
  default: return 'Active';
194
230
  }
195
231
  }
196
- getElapsedTime(run) {
232
+ /** @deprecated Use {@link GetStatusText}. */
233
+ getStatusText(status) {
234
+ return this.GetStatusText(status);
235
+ }
236
+ GetElapsedTime(run) {
197
237
  if (!run.StartedAt)
198
238
  return null;
199
239
  const start = new Date(run.StartedAt).getTime();
@@ -212,7 +252,11 @@ export class AgentProcessPanelComponent {
212
252
  return `${seconds}s`;
213
253
  }
214
254
  }
215
- async onCancelProcess(process) {
255
+ /** @deprecated Use {@link GetElapsedTime}. */
256
+ getElapsedTime(run) {
257
+ return this.GetElapsedTime(run);
258
+ }
259
+ async OnCancelProcess(process) {
216
260
  const confirmed = await this.dialogService.confirm({
217
261
  title: 'Cancel Agent',
218
262
  message: `Cancel agent "${process.run.Agent || 'Agent'}"?`,
@@ -232,12 +276,20 @@ export class AgentProcessPanelComponent {
232
276
  await this.dialogService.alert('Error', 'Failed to cancel agent process');
233
277
  }
234
278
  }
235
- onViewDetails(process) {
279
+ /** @deprecated Use {@link OnCancelProcess}. */
280
+ async onCancelProcess(process) {
281
+ return this.OnCancelProcess(process);
282
+ }
283
+ OnViewDetails(process) {
236
284
  // TODO: Navigate to agent run details page or open modal
237
285
  console.log('View agent run details:', process.run.ID);
238
286
  }
287
+ /** @deprecated Use {@link OnViewDetails}. */
288
+ onViewDetails(process) {
289
+ return this.OnViewDetails(process);
290
+ }
239
291
  static ɵfac = function AgentProcessPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentProcessPanelComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.AgentStateService)); };
240
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentProcessPanelComponent, selectors: [["mj-agent-process-panel"]], inputs: { conversationId: "conversationId", currentUser: "currentUser" }, standalone: false, 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) {
292
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentProcessPanelComponent, selectors: [["mj-agent-process-panel"]], inputs: { ConversationId: "ConversationId", conversationId: "conversationId", CurrentUser: "CurrentUser", currentUser: "currentUser" }, standalone: false, 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) {
241
293
  i0.ɵɵconditionalCreate(0, AgentProcessPanelComponent_Conditional_0_Template, 9, 6, "div", 0);
242
294
  } if (rf & 2) {
243
295
  i0.ɵɵconditional(ctx.activeProcesses.length > 0 ? 0 : -1);
@@ -326,7 +378,11 @@ export class AgentProcessPanelComponent {
326
378
  </div>
327
379
  }
328
380
  `, 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 "] }]
329
- }], () => [{ type: i1.DialogService }, { type: i2.AgentStateService }], { conversationId: [{
381
+ }], () => [{ type: i1.DialogService }, { type: i2.AgentStateService }], { ConversationId: [{
382
+ type: Input
383
+ }], conversationId: [{
384
+ type: Input
385
+ }], CurrentUser: [{
330
386
  type: Input
331
387
  }], currentUser: [{
332
388
  type: Input
@@ -1 +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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","sourcesContent":["import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { UserInfo, RunView } from '@memberjunction/core';\nimport { MJAIAgentRunEntity } from '@memberjunction/core-entities';\nimport { Subscription, interval } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { DialogService } from '../../services/dialog.service';\nimport { AgentStateService, AgentStatus, AgentWithStatus } from '../../services/agent-state.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface AgentProcess extends AgentWithStatus {\n expanded: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-agent-process-panel',\n template: `\n @if (activeProcesses.length > 0) {\n <div class=\"agent-panel\" [class.minimized]=\"isMinimized\">\n <div class=\"panel-header\">\n <h3>\n <i class=\"fas fa-robot\"></i>\n Active Agents ({{ activeProcesses.length }})\n </h3>\n <div class=\"header-actions\">\n <button class=\"header-btn\" (click)=\"isMinimized = !isMinimized\" [title]=\"isMinimized ? 'Expand' : 'Minimize'\">\n <i class=\"fas\" [ngClass]=\"isMinimized ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n </div>\n\n @if (!isMinimized) {\n <div class=\"panel-content\">\n @for (process of activeProcesses; track process.run.ID) {\n <div class=\"process-item\">\n <div class=\"process-header\" (click)=\"toggleProcess(process)\">\n <div class=\"process-info\">\n <div class=\"agent-avatar-small\"\n [class.status-acknowledging]=\"process.status === 'acknowledging'\"\n [class.status-working]=\"process.status === 'working'\"\n [class.status-completing]=\"process.status === 'completing'\"\n [class.status-completed]=\"process.status === 'completed'\"\n [class.status-error]=\"process.status === 'error'\">\n <i class=\"fas fa-robot\"></i>\n @if (process.status !== 'completed') {\n <div class=\"pulse-dot\"></div>\n }\n </div>\n <div class=\"agent-details\">\n <span class=\"process-name\">{{ process.run.Agent || 'Agent' }}</span>\n <span class=\"process-status\" [class]=\"'status-' + process.status\">\n {{ getStatusText(process.status) }}\n </span>\n </div>\n @if (process.confidence != null) {\n <div class=\"confidence-indicator\" [title]=\"'Confidence: ' + (process.confidence * 100).toFixed(0) + '%'\">\n <i class=\"fas fa-gauge-high\"></i>\n <span>{{ (process.confidence * 100).toFixed(0) }}%</span>\n </div>\n }\n </div>\n <i class=\"fas\" [ngClass]=\"process.expanded ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n\n @if (process.expanded) {\n <div class=\"process-details\">\n @if (process.run.StartedAt) {\n <div class=\"detail-row\">\n <i class=\"fas fa-clock\"></i>\n <span>Started: {{ process.run.StartedAt | date:'short' }}</span>\n </div>\n }\n @if (getElapsedTime(process.run)) {\n <div class=\"detail-row\">\n <i class=\"fas fa-hourglass-half\"></i>\n <span>Duration: {{ getElapsedTime(process.run) }}</span>\n </div>\n }\n <div class=\"process-actions\">\n @if (process.run.Status === 'Running' || process.run.Status === 'Paused') {\n <button class=\"btn-action btn-cancel\" (click)=\"onCancelProcess(process)\">\n <i class=\"fas fa-stop\"></i> Cancel\n </button>\n }\n <button class=\"btn-action\" (click)=\"onViewDetails(process)\">\n <i class=\"fas fa-external-link-alt\"></i> View Details\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n `,\n 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 `]\n})\nexport class AgentProcessPanelComponent implements OnInit, OnDestroy {\n @Input() conversationId?: string;\n @Input() currentUser!: UserInfo;\n\n public activeProcesses: AgentProcess[] = [];\n public isMinimized: boolean = false;\n\n private subscription?: Subscription;\n\n constructor(\n private dialogService: DialogService,\n private agentStateService: AgentStateService\n ) {}\n\n ngOnInit(): void {\n // Start polling for active agents\n this.agentStateService.startPolling(this.currentUser, this.conversationId);\n\n // Subscribe to active agents\n this.subscription = this.agentStateService\n .getActiveAgents(this.conversationId)\n .subscribe(agents => {\n // Preserve expanded state for existing processes\n this.activeProcesses = agents.map(agent => {\n const existing = this.activeProcesses.find(p => UUIDsEqual(p.run.ID, agent.run.ID));\n return {\n ...agent,\n expanded: existing ? existing.expanded : false\n };\n });\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n // Note: We don't stop polling here as other components may be using the service\n }\n\n toggleProcess(process: AgentProcess): void {\n process.expanded = !process.expanded;\n }\n\n getStatusText(status: AgentStatus): string {\n switch (status) {\n case 'acknowledging': return 'Acknowledging';\n case 'working': return 'Working';\n case 'completing': return 'Completing';\n case 'completed': return 'Completed';\n case 'error': return 'Error';\n default: return 'Active';\n }\n }\n\n getElapsedTime(run: MJAIAgentRunEntity): string | null {\n if (!run.StartedAt) return null;\n\n const start = new Date(run.StartedAt).getTime();\n const end = run.CompletedAt ? new Date(run.CompletedAt).getTime() : Date.now();\n const elapsed = end - start;\n\n const seconds = Math.floor(elapsed / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m`;\n } else if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n } else {\n return `${seconds}s`;\n }\n }\n\n async onCancelProcess(process: AgentProcess): Promise<void> {\n const confirmed = await this.dialogService.confirm({\n title: 'Cancel Agent',\n message: `Cancel agent \"${process.run.Agent || 'Agent'}\"?`,\n okText: 'Cancel Agent',\n cancelText: 'Keep Running'\n });\n\n if (!confirmed) return;\n\n try {\n const success = await this.agentStateService.cancelAgent(process.run.ID);\n if (!success) {\n await this.dialogService.alert('Error', 'Failed to cancel agent process');\n }\n } catch (error) {\n console.error('Failed to cancel agent process:', error);\n await this.dialogService.alert('Error', 'Failed to cancel agent process');\n }\n }\n\n onViewDetails(process: AgentProcess): void {\n // TODO: Navigate to agent run details page or open modal\n console.log('View agent run details:', process.run.ID);\n }\n}"]}
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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","sourcesContent":["import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { UserInfo, RunView } from '@memberjunction/core';\nimport { MJAIAgentRunEntity } from '@memberjunction/core-entities';\nimport { Subscription, interval } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { DialogService } from '../../services/dialog.service';\nimport { AgentStateService, AgentStatus, AgentWithStatus } from '../../services/agent-state.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface AgentProcess extends AgentWithStatus {\n expanded: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-agent-process-panel',\n template: `\n @if (activeProcesses.length > 0) {\n <div class=\"agent-panel\" [class.minimized]=\"isMinimized\">\n <div class=\"panel-header\">\n <h3>\n <i class=\"fas fa-robot\"></i>\n Active Agents ({{ activeProcesses.length }})\n </h3>\n <div class=\"header-actions\">\n <button class=\"header-btn\" (click)=\"isMinimized = !isMinimized\" [title]=\"isMinimized ? 'Expand' : 'Minimize'\">\n <i class=\"fas\" [ngClass]=\"isMinimized ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </button>\n </div>\n </div>\n\n @if (!isMinimized) {\n <div class=\"panel-content\">\n @for (process of activeProcesses; track process.run.ID) {\n <div class=\"process-item\">\n <div class=\"process-header\" (click)=\"toggleProcess(process)\">\n <div class=\"process-info\">\n <div class=\"agent-avatar-small\"\n [class.status-acknowledging]=\"process.status === 'acknowledging'\"\n [class.status-working]=\"process.status === 'working'\"\n [class.status-completing]=\"process.status === 'completing'\"\n [class.status-completed]=\"process.status === 'completed'\"\n [class.status-error]=\"process.status === 'error'\">\n <i class=\"fas fa-robot\"></i>\n @if (process.status !== 'completed') {\n <div class=\"pulse-dot\"></div>\n }\n </div>\n <div class=\"agent-details\">\n <span class=\"process-name\">{{ process.run.Agent || 'Agent' }}</span>\n <span class=\"process-status\" [class]=\"'status-' + process.status\">\n {{ getStatusText(process.status) }}\n </span>\n </div>\n @if (process.confidence != null) {\n <div class=\"confidence-indicator\" [title]=\"'Confidence: ' + (process.confidence * 100).toFixed(0) + '%'\">\n <i class=\"fas fa-gauge-high\"></i>\n <span>{{ (process.confidence * 100).toFixed(0) }}%</span>\n </div>\n }\n </div>\n <i class=\"fas\" [ngClass]=\"process.expanded ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n\n @if (process.expanded) {\n <div class=\"process-details\">\n @if (process.run.StartedAt) {\n <div class=\"detail-row\">\n <i class=\"fas fa-clock\"></i>\n <span>Started: {{ process.run.StartedAt | date:'short' }}</span>\n </div>\n }\n @if (getElapsedTime(process.run)) {\n <div class=\"detail-row\">\n <i class=\"fas fa-hourglass-half\"></i>\n <span>Duration: {{ getElapsedTime(process.run) }}</span>\n </div>\n }\n <div class=\"process-actions\">\n @if (process.run.Status === 'Running' || process.run.Status === 'Paused') {\n <button class=\"btn-action btn-cancel\" (click)=\"onCancelProcess(process)\">\n <i class=\"fas fa-stop\"></i> Cancel\n </button>\n }\n <button class=\"btn-action\" (click)=\"onViewDetails(process)\">\n <i class=\"fas fa-external-link-alt\"></i> View Details\n </button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n `,\n 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 `]\n})\nexport class AgentProcessPanelComponent implements OnInit, OnDestroy {\n @Input() ConversationId?: string;\n\n /** @deprecated Use {@link ConversationId}. */\n @Input() set conversationId(value: string | undefined) {\n this.ConversationId = value;\n }\n /** @deprecated Use {@link ConversationId}. */\n get conversationId(): string | undefined {\n return this.ConversationId;\n }\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n\n public ActiveProcesses: AgentProcess[] = [];\n\n /** @deprecated Use {@link ActiveProcesses}. */\n public get activeProcesses(): AgentProcess[] {\n return this.ActiveProcesses;\n }\n /** @deprecated Use {@link ActiveProcesses}. */\n public set activeProcesses(value: AgentProcess[]) {\n this.ActiveProcesses = value;\n }\n public IsMinimized: boolean = false;\n\n /** @deprecated Use {@link IsMinimized}. */\n public get isMinimized(): boolean {\n return this.IsMinimized;\n }\n /** @deprecated Use {@link IsMinimized}. */\n public set isMinimized(value: boolean) {\n this.IsMinimized = value;\n }\n\n private subscription?: Subscription;\n\n constructor(\n private dialogService: DialogService,\n private agentStateService: AgentStateService\n ) {}\n\n ngOnInit(): void {\n // Start polling for active agents\n this.agentStateService.startPolling(this.CurrentUser, this.ConversationId);\n\n // Subscribe to active agents\n this.subscription = this.agentStateService\n .getActiveAgents(this.ConversationId)\n .subscribe(agents => {\n // Preserve expanded state for existing processes\n this.ActiveProcesses = agents.map(agent => {\n const existing = this.ActiveProcesses.find(p => UUIDsEqual(p.run.ID, agent.run.ID));\n return {\n ...agent,\n expanded: existing ? existing.expanded : false\n };\n });\n });\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n // Note: We don't stop polling here as other components may be using the service\n }\n\n ToggleProcess(process: AgentProcess): void {\n process.expanded = !process.expanded;\n }\n\n /** @deprecated Use {@link ToggleProcess}. */\n toggleProcess(process: AgentProcess): void {\n return this.ToggleProcess(process);\n }\n\n GetStatusText(status: AgentStatus): string {\n switch (status) {\n case 'acknowledging': return 'Acknowledging';\n case 'working': return 'Working';\n case 'completing': return 'Completing';\n case 'completed': return 'Completed';\n case 'error': return 'Error';\n default: return 'Active';\n }\n }\n\n /** @deprecated Use {@link GetStatusText}. */\n getStatusText(status: AgentStatus): string {\n return this.GetStatusText(status);\n }\n\n GetElapsedTime(run: MJAIAgentRunEntity): string | null {\n if (!run.StartedAt) return null;\n\n const start = new Date(run.StartedAt).getTime();\n const end = run.CompletedAt ? new Date(run.CompletedAt).getTime() : Date.now();\n const elapsed = end - start;\n\n const seconds = Math.floor(elapsed / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m`;\n } else if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n } else {\n return `${seconds}s`;\n }\n }\n\n /** @deprecated Use {@link GetElapsedTime}. */\n getElapsedTime(run: MJAIAgentRunEntity): string | null {\n return this.GetElapsedTime(run);\n }\n\n async OnCancelProcess(process: AgentProcess): Promise<void> {\n const confirmed = await this.dialogService.confirm({\n title: 'Cancel Agent',\n message: `Cancel agent \"${process.run.Agent || 'Agent'}\"?`,\n okText: 'Cancel Agent',\n cancelText: 'Keep Running'\n });\n\n if (!confirmed) return;\n\n try {\n const success = await this.agentStateService.cancelAgent(process.run.ID);\n if (!success) {\n await this.dialogService.alert('Error', 'Failed to cancel agent process');\n }\n } catch (error) {\n console.error('Failed to cancel agent process:', error);\n await this.dialogService.alert('Error', 'Failed to cancel agent process');\n }\n }\n\n /** @deprecated Use {@link OnCancelProcess}. */\n async onCancelProcess(process: AgentProcess): Promise<void> {\n return this.OnCancelProcess(process);\n }\n\n OnViewDetails(process: AgentProcess): void {\n // TODO: Navigate to agent run details page or open modal\n console.log('View agent run details:', process.run.ID);\n }\n\n /** @deprecated Use {@link OnViewDetails}. */\n onViewDetails(process: AgentProcess): void {\n return this.OnViewDetails(process);\n }\n}"]}
@@ -13,32 +13,88 @@ export declare class ArtifactShareModalComponent implements OnInit, OnChanges {
13
13
  private permissionService;
14
14
  private cdr;
15
15
  private confirmService;
16
- isOpen: boolean;
17
- artifact: MJArtifactEntity | null;
18
- currentUser: UserInfo;
16
+ IsOpen: boolean;
17
+ /** @deprecated Use {@link IsOpen}. */
18
+ set isOpen(value: boolean);
19
+ /** @deprecated Use {@link IsOpen}. */
20
+ get isOpen(): boolean;
21
+ Artifact: MJArtifactEntity | null;
22
+ /** @deprecated Use {@link Artifact}. */
23
+ set artifact(value: MJArtifactEntity | null);
24
+ /** @deprecated Use {@link Artifact}. */
25
+ get artifact(): MJArtifactEntity | null;
26
+ CurrentUser: UserInfo;
27
+ /** @deprecated Use {@link CurrentUser}. */
28
+ set currentUser(value: UserInfo);
29
+ /** @deprecated Use {@link CurrentUser}. */
30
+ get currentUser(): UserInfo;
31
+ Saved: EventEmitter<void>;
32
+ /**
33
+ * @deprecated Use {@link Saved}.
34
+ *
35
+ * The same emitter under the old binding name, so a template still binding
36
+ * (saved) keeps working. Must stay AFTER Saved: class fields
37
+ * initialise in order, and the other way round this captures undefined.
38
+ */
19
39
  saved: EventEmitter<void>;
20
40
  cancelled: EventEmitter<void>;
21
- permissions: PermissionDisplay[];
22
- selectedUser: UserSearchResult | null;
23
- availablePermissions: string[];
24
- canModifyPermissions: boolean;
25
- newPermissions: ArtifactPermissionSet;
41
+ Permissions: PermissionDisplay[];
42
+ /** @deprecated Use {@link Permissions}. */
43
+ get permissions(): PermissionDisplay[];
44
+ /** @deprecated Use {@link Permissions}. */
45
+ set permissions(value: PermissionDisplay[]);
46
+ SelectedUser: UserSearchResult | null;
47
+ /** @deprecated Use {@link SelectedUser}. */
48
+ get selectedUser(): UserSearchResult | null;
49
+ /** @deprecated Use {@link SelectedUser}. */
50
+ set selectedUser(value: UserSearchResult | null);
51
+ AvailablePermissions: string[];
52
+ /** @deprecated Use {@link AvailablePermissions}. */
53
+ get availablePermissions(): string[];
54
+ /** @deprecated Use {@link AvailablePermissions}. */
55
+ set availablePermissions(value: string[]);
56
+ CanModifyPermissions: boolean;
57
+ /** @deprecated Use {@link CanModifyPermissions}. */
58
+ get canModifyPermissions(): boolean;
59
+ /** @deprecated Use {@link CanModifyPermissions}. */
60
+ set canModifyPermissions(value: boolean);
61
+ NewPermissions: ArtifactPermissionSet;
62
+ /** @deprecated Use {@link NewPermissions}. */
63
+ get newPermissions(): ArtifactPermissionSet;
64
+ /** @deprecated Use {@link NewPermissions}. */
65
+ set newPermissions(value: ArtifactPermissionSet);
26
66
  constructor(permissionService: ArtifactPermissionService, cdr: ChangeDetectorRef, confirmService: MJConfirmService);
27
67
  ngOnInit(): Promise<void>;
28
68
  ngOnChanges(changes: SimpleChanges): Promise<void>;
29
69
  private loadPermissions;
30
70
  private updateAvailablePermissions;
71
+ GetExcludedUserIds(): string[];
72
+ /** @deprecated Use {@link GetExcludedUserIds}. */
31
73
  getExcludedUserIds(): string[];
74
+ OnUserSelected(user: UserSearchResult): void;
75
+ /** @deprecated Use {@link OnUserSelected}. */
32
76
  onUserSelected(user: UserSearchResult): void;
77
+ OnClearSelection(): void;
78
+ /** @deprecated Use {@link OnClearSelection}. */
33
79
  onClearSelection(): void;
80
+ OnAddUser(): Promise<void>;
81
+ /** @deprecated Use {@link OnAddUser}. */
34
82
  onAddUser(): Promise<void>;
83
+ OnEditPermission(permission: PermissionDisplay): void;
84
+ /** @deprecated Use {@link OnEditPermission}. */
35
85
  onEditPermission(permission: PermissionDisplay): void;
86
+ OnCancelEdit(permission: PermissionDisplay): void;
87
+ /** @deprecated Use {@link OnCancelEdit}. */
36
88
  onCancelEdit(permission: PermissionDisplay): void;
89
+ OnSavePermission(permission: PermissionDisplay): Promise<void>;
90
+ /** @deprecated Use {@link OnSavePermission}. */
37
91
  onSavePermission(permission: PermissionDisplay): Promise<void>;
92
+ OnRevokePermission(permission: PermissionDisplay): Promise<void>;
93
+ /** @deprecated Use {@link OnRevokePermission}. */
38
94
  onRevokePermission(permission: PermissionDisplay): Promise<void>;
39
95
  onCancel(): void;
40
96
  static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactShareModalComponent, never>;
41
- static ɵcmp: i0.ɵɵComponentDeclaration<ArtifactShareModalComponent, "mj-artifact-share-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "artifact": { "alias": "artifact"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
97
+ static ɵcmp: i0.ɵɵComponentDeclaration<ArtifactShareModalComponent, "mj-artifact-share-modal", never, { "IsOpen": { "alias": "IsOpen"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "Artifact": { "alias": "Artifact"; "required": false; }; "artifact": { "alias": "artifact"; "required": false; }; "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, { "Saved": "Saved"; "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
42
98
  }
43
99
  export {};
44
100
  //# sourceMappingURL=artifact-share-modal.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-share-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-share-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG5H,OAAO,EAA+D,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEjI,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAClI,OAAO,EAAuB,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;;AAExF,UAAU,iBAAkB,SAAQ,kBAAkB;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,qBAAqB,CAAC;CAC7C;AAED,qBA0La,2BAA4B,YAAW,MAAM,EAAE,SAAS;IAoB7D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,cAAc;IArBjB,MAAM,EAAE,OAAO,CAAS;IACxB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACzC,WAAW,EAAG,QAAQ,CAAC;IAEtB,KAAK,qBAA4B;IACjC,SAAS,qBAA4B;IAE/C,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC7C,oBAAoB,EAAE,MAAM,EAAE,CAAM;IACpC,oBAAoB,EAAE,OAAO,CAAS;IAEtC,cAAc,EAAE,qBAAqB,CAInC;gBAGU,iBAAiB,EAAE,yBAAyB,EAC5C,GAAG,EAAE,iBAAiB,EACtB,cAAc,EAAE,gBAAgB;IAGtC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAOzB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAW1C,eAAe;YAgBf,0BAA0B;IA0CxC,kBAAkB,IAAI,MAAM,EAAE;IAS9B,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAK5C,gBAAgB,IAAI,IAAI;IAUlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDhC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAKrD,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAU3C,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C9D,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,QAAQ,IAAI,IAAI;yCAxPP,2BAA2B;2CAA3B,2BAA2B;CA2PvC"}
1
+ {"version":3,"file":"artifact-share-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-share-modal.component.ts"],"names":[],"mappings":"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"}