@memberjunction/ng-conversations 6.2.0-edge.0 → 6.2.0-edge.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -2
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
- package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
- package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
- package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
- package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
- package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.js +181 -47
- package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
- package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
- package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +220 -70
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +154 -40
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +951 -367
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
- package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
- package/dist/lib/components/composer/ai-composer.component.js +388 -44
- package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
- package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1191 -124
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +2816 -785
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
- package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +42 -4
- package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.js +93 -21
- package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
- package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
- package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
- package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
- package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
- package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
- package/dist/lib/components/export/export-modal.component.d.ts +84 -10
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
- package/dist/lib/components/export/export-modal.component.js +173 -49
- package/dist/lib/components/export/export-modal.component.js.map +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
- package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/library/library-full-view.component.js +119 -35
- package/dist/lib/components/library/library-full-view.component.js.map +1 -1
- package/dist/lib/components/members/members-modal.component.d.ts +76 -10
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
- package/dist/lib/components/members/members-modal.component.js +164 -50
- package/dist/lib/components/members/members-modal.component.js.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.d.ts +49 -5
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.js +140 -26
- package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
- package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
- package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +613 -74
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +1390 -422
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +490 -29
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +1088 -244
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +297 -29
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +598 -123
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
- package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
- package/dist/lib/components/notification/activity-indicator.component.js +13 -3
- package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
- package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
- package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
- package/dist/lib/components/notification/notification-badge.component.js +36 -8
- package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +348 -87
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
- package/dist/lib/components/project/project-selector.component.d.ts +78 -8
- package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-selector.component.js +177 -46
- package/dist/lib/components/project/project-selector.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
- package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
- package/dist/lib/components/search/search-panel.component.d.ts +133 -22
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +312 -83
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/share/share-modal.component.d.ts +69 -9
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/share/share-modal.component.js +139 -31
- package/dist/lib/components/share/share-modal.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
- package/dist/lib/components/shared/user-picker.component.js +110 -30
- package/dist/lib/components/shared/user-picker.component.js.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.js +25 -5
- package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
- package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.js +223 -75
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
- package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/task-widget.component.js +100 -16
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +146 -36
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/toast/toast.component.d.ts +11 -1
- package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
- package/dist/lib/components/toast/toast.component.js +25 -5
- package/dist/lib/components/toast/toast.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +891 -292
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
- package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
- package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
- package/dist/lib/directives/chat-slot.directive.js.map +1 -1
- package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
- package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
- package/dist/lib/directives/search-shortcut.directive.js +14 -4
- package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
- package/dist/lib/events/chat-events.d.ts +34 -7
- package/dist/lib/events/chat-events.d.ts.map +1 -1
- package/dist/lib/events/chat-events.js +37 -7
- package/dist/lib/events/chat-events.js.map +1 -1
- package/dist/lib/models/agent-turn.model.d.ts +113 -0
- package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
- package/dist/lib/models/agent-turn.model.js +12 -0
- package/dist/lib/models/agent-turn.model.js.map +1 -0
- package/dist/lib/models/collection-view.model.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +8 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/models/conversation-state.model.js.map +1 -1
- package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
- package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
- package/dist/lib/models/lazy-artifact-info.js +98 -34
- package/dist/lib/models/lazy-artifact-info.js.map +1 -1
- package/dist/lib/services/active-tasks.service.d.ts +30 -4
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.js +71 -19
- package/dist/lib/services/active-tasks.service.js.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts +17 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +48 -16
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-permission.service.d.ts +39 -0
- package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-permission.service.js +152 -17
- package/dist/lib/services/artifact-permission.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts +58 -5
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +135 -35
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts +28 -0
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
- package/dist/lib/services/collection-permission.service.js +88 -32
- package/dist/lib/services/collection-permission.service.js.map +1 -1
- package/dist/lib/services/collection-state.service.d.ts +11 -1
- package/dist/lib/services/collection-state.service.d.ts.map +1 -1
- package/dist/lib/services/collection-state.service.js +25 -5
- package/dist/lib/services/collection-state.service.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +47 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +85 -20
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
- package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-attachment.service.js +38 -10
- package/dist/lib/services/conversation-attachment.service.js.map +1 -1
- package/dist/lib/services/conversation-liveness-dom.service.d.ts +42 -0
- package/dist/lib/services/conversation-liveness-dom.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-liveness-dom.service.js +74 -0
- package/dist/lib/services/conversation-liveness-dom.service.js.map +1 -0
- package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
- package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-streaming.service.js +50 -10
- package/dist/lib/services/conversation-streaming.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +31 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +71 -15
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/dialog.service.d.ts +13 -0
- package/dist/lib/services/dialog.service.d.ts.map +1 -1
- package/dist/lib/services/dialog.service.js +25 -5
- package/dist/lib/services/dialog.service.js.map +1 -1
- package/dist/lib/services/export.service.d.ts +2 -0
- package/dist/lib/services/export.service.d.ts.map +1 -1
- package/dist/lib/services/export.service.js +5 -1
- package/dist/lib/services/export.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts +10 -0
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +25 -5
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/notification.service.d.ts +54 -6
- package/dist/lib/services/notification.service.d.ts.map +1 -1
- package/dist/lib/services/notification.service.js +123 -27
- package/dist/lib/services/notification.service.js.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
- package/dist/lib/services/realtime-audio-recorder.js +12 -12
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
- package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
- package/dist/lib/services/realtime-pcm-wav.js +10 -2
- package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
- package/dist/lib/services/search.service.d.ts +42 -9
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +103 -23
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/lib/services/toast.service.d.ts +19 -1
- package/dist/lib/services/toast.service.d.ts.map +1 -1
- package/dist/lib/services/toast.service.js +45 -9
- package/dist/lib/services/toast.service.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +56 -5
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +113 -16
- package/dist/lib/services/ui-command-handler.service.js.map +1 -1
- package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
- package/dist/lib/utils/agent-artifact-summary.js +3 -3
- package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
- package/dist/lib/utils/agent-turn-routing.d.ts +70 -0
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
- package/dist/lib/utils/agent-turn-routing.js +84 -0
- package/dist/lib/utils/agent-turn-routing.js.map +1 -0
- package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
- package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
- package/dist/lib/utils/artifact-panel-action.js +10 -2
- package/dist/lib/utils/artifact-panel-action.js.map +1 -1
- package/dist/lib/utils/decision-routing.d.ts +68 -0
- package/dist/lib/utils/decision-routing.d.ts.map +1 -0
- package/dist/lib/utils/decision-routing.js +101 -0
- package/dist/lib/utils/decision-routing.js.map +1 -0
- package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
- package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
- package/dist/lib/utils/distinct-artifacts.js +5 -1
- package/dist/lib/utils/distinct-artifacts.js.map +1 -1
- package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
- package/dist/lib/utils/plan-mode-preference.js +6 -6
- package/dist/lib/utils/plan-mode-preference.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +8 -0
- package/dist/public-api.js.map +1 -1
- 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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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;
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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.
|
|
196
|
+
this.agentStateService.startPolling(this.CurrentUser, this.ConversationId);
|
|
165
197
|
// Subscribe to active agents
|
|
166
198
|
this.subscription = this.agentStateService
|
|
167
|
-
.getActiveAgents(this.
|
|
199
|
+
.getActiveAgents(this.ConversationId)
|
|
168
200
|
.subscribe(agents => {
|
|
169
201
|
// Preserve expanded state for existing processes
|
|
170
|
-
this.
|
|
171
|
-
const existing = this.
|
|
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
|
-
|
|
215
|
+
ToggleProcess(process) {
|
|
184
216
|
process.expanded = !process.expanded;
|
|
185
217
|
}
|
|
186
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 }], {
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AAOpE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;;;;;;;IAsC5B,0BAA6B;;;IAU/B,+BAAyG;IACvG,wBAAiC;IACjC,4BAAM;IAAA,YAA4C;IACpD,AADoD,iBAAO,EACrD;;;IAH4B,uFAAsE;IAEhG,eAA4C;IAA5C,wEAA4C;;;IAUpD,+BAAwB;IACtB,wBAA4B;IAC5B,4BAAM;IAAA,YAAmD;;IAC3D,AAD2D,iBAAO,EAC5D;;;IADE,eAAmD;IAAnD,2FAAmD;;;IAI3D,+BAAwB;IACtB,wBAAqC;IACrC,4BAAM;IAAA,YAA2C;IACnD,AADmD,iBAAO,EACpD;;;;IADE,eAA2C;IAA3C,0EAA2C;;;;IAKjD,kCAAyE;IAAnC,kSAAS,kCAAwB,KAAC;IACtE,wBAA2B;IAAC,wBAC9B;IAAA,iBAAS;;;;IAjBf,+BAA6B;IAC3B,8IAA6B;IAM7B,8IAAmC;IAMnC,+BAA6B;IAC3B,iJAA2E;IAK3E,kCAA4D;IAAjC,mRAAS,gCAAsB,KAAC;IACzD,wBAAwC;IAAC,8BAC3C;IAEJ,AADE,AADE,iBAAS,EACL,EACF;;;;IAtBJ,cAKC;IALD,mDAKC;IACD,cAKC;IALD,gEAKC;IAEC,eAIC;IAJD,oGAIC;;;;IAhDP,AADF,8BAA0B,aACqC;IAAjC,6OAAS,gCAAsB,KAAC;IAExD,AADF,+BAA0B,cAM+B;IACrD,uBAA4B;IAC5B,+HAAsC;IAGxC,iBAAM;IAEJ,AADF,+BAA2B,eACE;IAAA,YAAkC;IAAA,iBAAO;IACpE,gCAAkE;IAChE,aACF;IACF,AADE,iBAAO,EACH;IACN,iIAAkC;IAMpC,iBAAM;IACN,wBAAsF;IACxF,iBAAM;IAEN,iIAAwB;IA0B1B,iBAAM;;;;IApDK,eAAiE;IAIjE,AADA,AADA,AADA,AADA,6EAAiE,mDACZ,yDACM,uDACF,+CACR;IAEpD,eAEC;IAFD,4DAEC;IAG0B,eAAkC;IAAlC,qDAAkC;IAChC,cAAoC;IAApC,4CAAoC;IAC/D,cACF;IADE,wEACF;IAEF,cAKC;IALD,yDAKC;IAEY,cAAkE;IAAlE,mFAAkE;IAGnF,cAyBC;IAzBD,+CAyBC;;;IAzDP,8BAA2B;IACzB,2HA0DC;IACH,iBAAM;;;IA3DJ,cA0DC;IA1DD,qCA0DC;;;;IAvEH,AADF,AADF,8BAAyD,aAC7B,SACpB;IACF,uBAA4B;IAC5B,YACF;IAAA,iBAAK;IAEH,AADF,8BAA4B,gBACoF;IAAnF,2OAAoC;IAC7D,uBAAiF;IAGvF,AADE,AADE,iBAAS,EACL,EACF;IAEN,0GAAoB;IA+DtB,iBAAM;;;IA5EmB,+CAA+B;IAIlD,eACF;IADE,8EACF;IAEkE,eAA6C;IAA7C,kEAA6C;IAC5F,cAA6D;IAA7D,kFAA6D;IAKlF,cA8DC;IA9DD,8CA8DC;;AA+NT,MAAM,OAAO,0BAA0B;IA8C3B;IACA;IA9CD,cAAc,CAAU;IAEjC,8CAA8C;IAC9C,IAAa,cAAc,CAAC,KAAyB;QACnD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,8CAA8C;IAC9C,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACQ,WAAW,CAAY;IAEhC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAe;QACtC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,2CAA2C;IAC3C,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,eAAe,GAAmB,EAAE,CAAC;IAE5C,+CAA+C;IAC/C,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IACD,+CAA+C;IAC/C,IAAW,eAAe,CAAC,KAAqB;QAC9C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IACM,WAAW,GAAY,KAAK,CAAC;IAEpC,2CAA2C;IAC3C,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAc;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEO,YAAY,CAAgB;IAEpC,YACU,aAA4B,EAC5B,iBAAoC;QADpC,kBAAa,GAAb,aAAa,CAAe;QAC5B,sBAAiB,GAAjB,iBAAiB,CAAmB;IAC3C,CAAC;IAEJ,QAAQ;QACN,kCAAkC;QAClC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3E,6BAA6B;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB;aACvC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;aACpC,SAAS,CAAC,MAAM,CAAC,EAAE;YAClB,iDAAiD;YACjD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpF,OAAO;oBACL,GAAG,KAAK;oBACR,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;iBAC/C,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW;QACT,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;QACjC,gFAAgF;IAClF,CAAC;IAED,aAAa,CAAC,OAAqB;QACjC,OAAO,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,6CAA6C;IAC7C,aAAa,CAAC,OAAqB;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,MAAmB;QAC/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,eAAe,CAAC,CAAC,OAAO,eAAe,CAAC;YAC7C,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,YAAY,CAAC,CAAC,OAAO,YAAY,CAAC;YACvC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;YACrC,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;YAC7B,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,aAAa,CAAC,MAAmB;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,GAAuB;QACpC,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/E,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAEvC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;QACtC,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,GAAG,CAAC;QACvB,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,cAAc,CAAC,GAAuB;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAqB;QACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,iBAAiB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,IAAI;YAC1D,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,eAAe,CAAC,OAAqB;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,OAAqB;QACjC,yDAAyD;QACzD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,6CAA6C;IAC7C,aAAa,CAAC,OAAqB;QACjC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;oHA9JU,0BAA0B;6DAA1B,0BAA0B;YA3SnC,4FAAkC;;YAAlC,yDA8EC;;;iFA6NQ,0BAA0B;cA/StC,SAAS;6BACI,KAAK,YACP,wBAAwB,YACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFT;;kBA6NA,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kFAdK,0BAA0B","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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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;
|
|
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;IAqG7D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,cAAc;IAtGjB,MAAM,EAAE,OAAO,CAAS;IAEjC,sCAAsC;IACtC,IAAa,MAAM,CAAC,KAAK,EAAE,OAAO,EAEjC;IACD,sCAAsC;IACtC,IAAI,MAAM,IAAI,OAAO,CAEpB;IACQ,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAElD,wCAAwC;IACxC,IAAa,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAEnD;IACD,wCAAwC;IACxC,IAAI,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAEtC;IACQ,WAAW,EAAG,QAAQ,CAAC;IAEhC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,QAAQ,EAEvC;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,QAAQ,CAE1B;IAES,KAAK,qBAA4B;IAE3C;;;;;;OAMG;IACO,KAAK,qBAAc;IACnB,SAAS,qBAA4B;IAE/C,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAEtC,2CAA2C;IAC3C,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAErC;IACD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAEzC;IACD,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE7C,4CAA4C;IAC5C,IAAI,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAE1C;IACD,4CAA4C;IAC5C,IAAI,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAE9C;IACD,oBAAoB,EAAE,MAAM,EAAE,CAAM;IAEpC,oDAAoD;IACpD,IAAI,oBAAoB,IAAI,MAAM,EAAE,CAEnC;IACD,oDAAoD;IACpD,IAAI,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAEvC;IACD,oBAAoB,EAAE,OAAO,CAAS;IAEtC,oDAAoD;IACpD,IAAI,oBAAoB,IAAI,OAAO,CAElC;IACD,oDAAoD;IACpD,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAEtC;IAED,cAAc,EAAE,qBAAqB,CAInC;IAEF,8CAA8C;IAC9C,IAAI,cAAc,IAAI,qBAAqB,CAE1C;IACD,8CAA8C;IAC9C,IAAI,cAAc,CAAC,KAAK,EAAE,qBAAqB,EAE9C;gBAGW,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,kDAAkD;IAClD,kBAAkB,IAAI,MAAM,EAAE;IAI9B,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAK5C,8CAA8C;IAC9C,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAI5C,gBAAgB,IAAI,IAAI;IAUxB,gDAAgD;IAChD,gBAAgB,IAAI,IAAI;IAIlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDhC,yCAAyC;IACnC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAKrD,gDAAgD;IAChD,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIrD,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAUjD,4CAA4C;IAC5C,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAI3C,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CpE,gDAAgD;IAC1C,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,kDAAkD;IAC5C,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,QAAQ,IAAI,IAAI;yCAjXP,2BAA2B;2CAA3B,2BAA2B;CAoXvC"}
|